postal-mime 1.0.10 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/node.js CHANGED
@@ -1,164 +1 @@
1
- /*
2
- * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
3
- * This devtool is neither made for production nor for readable output files.
4
- * It uses "eval()" calls to create a separate source file in the browser devtools.
5
- * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6
- * or disable the default devtool with "devtool: false".
7
- * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8
- */
9
- exports.postalMime =
10
- /******/ (() => { // webpackBootstrap
11
- /******/ "use strict";
12
- /******/ var __webpack_modules__ = ({
13
-
14
- /***/ "./src/address-parser.js":
15
- /*!*******************************!*\
16
- !*** ./src/address-parser.js ***!
17
- \*******************************/
18
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
19
-
20
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* harmony import */ var _decode_strings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./decode-strings */ \"./src/decode-strings.js\");\n\n\n/**\n * Converts tokens for a single address into an address object\n *\n * @param {Array} tokens Tokens object\n * @return {Object} Address object\n */\nfunction _handleAddress(tokens) {\n let token;\n let isGroup = false;\n let state = 'text';\n let address;\n let addresses = [];\n let data = {\n address: [],\n comment: [],\n group: [],\n text: []\n };\n let i;\n let len;\n\n // Filter out <addresses>, (comments) and regular text\n for (i = 0, len = tokens.length; i < len; i++) {\n token = tokens[i];\n if (token.type === 'operator') {\n switch (token.value) {\n case '<':\n state = 'address';\n break;\n case '(':\n state = 'comment';\n break;\n case ':':\n state = 'group';\n isGroup = true;\n break;\n default:\n state = 'text';\n }\n } else if (token.value) {\n if (state === 'address') {\n // handle use case where unquoted name includes a \"<\"\n // Apple Mail truncates everything between an unexpected < and an address\n // and so will we\n token.value = token.value.replace(/^[^<]*<\\s*/, '');\n }\n data[state].push(token.value);\n }\n }\n\n // If there is no text but a comment, replace the two\n if (!data.text.length && data.comment.length) {\n data.text = data.comment;\n data.comment = [];\n }\n\n if (isGroup) {\n // http://tools.ietf.org/html/rfc2822#appendix-A.1.3\n data.text = data.text.join(' ');\n addresses.push({\n name: (0,_decode_strings__WEBPACK_IMPORTED_MODULE_0__.decodeWords)(data.text || (address && address.name)),\n group: data.group.length ? addressParser(data.group.join(',')) : []\n });\n } else {\n // If no address was found, try to detect one from regular text\n if (!data.address.length && data.text.length) {\n for (i = data.text.length - 1; i >= 0; i--) {\n if (data.text[i].match(/^[^@\\s]+@[^@\\s]+$/)) {\n data.address = data.text.splice(i, 1);\n break;\n }\n }\n\n let _regexHandler = function (address) {\n if (!data.address.length) {\n data.address = [address.trim()];\n return ' ';\n } else {\n return address;\n }\n };\n\n // still no address\n if (!data.address.length) {\n for (i = data.text.length - 1; i >= 0; i--) {\n // fixed the regex to parse email address correctly when email address has more than one @\n data.text[i] = data.text[i].replace(/\\s*\\b[^@\\s]+@[^\\s]+\\b\\s*/, _regexHandler).trim();\n if (data.address.length) {\n break;\n }\n }\n }\n }\n\n // If there's still is no text but a comment exixts, replace the two\n if (!data.text.length && data.comment.length) {\n data.text = data.comment;\n data.comment = [];\n }\n\n // Keep only the first address occurence, push others to regular text\n if (data.address.length > 1) {\n data.text = data.text.concat(data.address.splice(1));\n }\n\n // Join values with spaces\n data.text = data.text.join(' ');\n data.address = data.address.join(' ');\n\n if (!data.address && isGroup) {\n return [];\n } else {\n address = {\n address: data.address || data.text || '',\n name: (0,_decode_strings__WEBPACK_IMPORTED_MODULE_0__.decodeWords)(data.text || data.address || '')\n };\n\n if (address.address === address.name) {\n if ((address.address || '').match(/@/)) {\n address.name = '';\n } else {\n address.address = '';\n }\n }\n\n addresses.push(address);\n }\n }\n\n return addresses;\n}\n\n/**\n * Creates a Tokenizer object for tokenizing address field strings\n *\n * @constructor\n * @param {String} str Address field string\n */\nclass Tokenizer {\n constructor(str) {\n this.str = (str || '').toString();\n this.operatorCurrent = '';\n this.operatorExpecting = '';\n this.node = null;\n this.escaped = false;\n\n this.list = [];\n /**\n * Operator tokens and which tokens are expected to end the sequence\n */\n this.operators = {\n '\"': '\"',\n '(': ')',\n '<': '>',\n ',': '',\n ':': ';',\n // Semicolons are not a legal delimiter per the RFC2822 grammar other\n // than for terminating a group, but they are also not valid for any\n // other use in this context. Given that some mail clients have\n // historically allowed the semicolon as a delimiter equivalent to the\n // comma in their UI, it makes sense to treat them the same as a comma\n // when used outside of a group.\n ';': ''\n };\n }\n\n /**\n * Tokenizes the original input string\n *\n * @return {Array} An array of operator|text tokens\n */\n tokenize() {\n let chr,\n list = [];\n for (let i = 0, len = this.str.length; i < len; i++) {\n chr = this.str.charAt(i);\n this.checkChar(chr);\n }\n\n this.list.forEach(node => {\n node.value = (node.value || '').toString().trim();\n if (node.value) {\n list.push(node);\n }\n });\n\n return list;\n }\n\n /**\n * Checks if a character is an operator or text and acts accordingly\n *\n * @param {String} chr Character from the address field\n */\n checkChar(chr) {\n if (this.escaped) {\n // ignore next condition blocks\n } else if (chr === this.operatorExpecting) {\n this.node = {\n type: 'operator',\n value: chr\n };\n this.list.push(this.node);\n this.node = null;\n this.operatorExpecting = '';\n this.escaped = false;\n return;\n } else if (!this.operatorExpecting && chr in this.operators) {\n this.node = {\n type: 'operator',\n value: chr\n };\n this.list.push(this.node);\n this.node = null;\n this.operatorExpecting = this.operators[chr];\n this.escaped = false;\n return;\n } else if (['\"', \"'\"].includes(this.operatorExpecting) && chr === '\\\\') {\n this.escaped = true;\n return;\n }\n\n if (!this.node) {\n this.node = {\n type: 'text',\n value: ''\n };\n this.list.push(this.node);\n }\n\n if (chr === '\\n') {\n // Convert newlines to spaces. Carriage return is ignored as \\r and \\n usually\n // go together anyway and there already is a WS for \\n. Lone \\r means something is fishy.\n chr = ' ';\n }\n\n if (chr.charCodeAt(0) >= 0x21 || [' ', '\\t'].includes(chr)) {\n // skip command bytes\n this.node.value += chr;\n }\n\n this.escaped = false;\n }\n}\n\n/**\n * Parses structured e-mail addresses from an address field\n *\n * Example:\n *\n * 'Name <address@domain>'\n *\n * will be converted to\n *\n * [{name: 'Name', address: 'address@domain'}]\n *\n * @param {String} str Address field\n * @return {Array} An array of address objects\n */\nfunction addressParser(str, options) {\n options = options || {};\n\n let tokenizer = new Tokenizer(str);\n let tokens = tokenizer.tokenize();\n\n let addresses = [];\n let address = [];\n let parsedAddresses = [];\n\n tokens.forEach(token => {\n if (token.type === 'operator' && (token.value === ',' || token.value === ';')) {\n if (address.length) {\n addresses.push(address);\n }\n address = [];\n } else {\n address.push(token);\n }\n });\n\n if (address.length) {\n addresses.push(address);\n }\n\n addresses.forEach(address => {\n address = _handleAddress(address);\n if (address.length) {\n parsedAddresses = parsedAddresses.concat(address);\n }\n });\n\n if (options.flatten) {\n let addresses = [];\n let walkAddressList = list => {\n list.forEach(address => {\n if (address.group) {\n return walkAddressList(address.group);\n } else {\n addresses.push(address);\n }\n });\n };\n walkAddressList(parsedAddresses);\n return addresses;\n }\n\n return parsedAddresses;\n}\n\n// expose to the world\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (addressParser);\n\n\n//# sourceURL=webpack://postalMime/./src/address-parser.js?");
21
-
22
- /***/ }),
23
-
24
- /***/ "./src/base64-decoder.js":
25
- /*!*******************************!*\
26
- !*** ./src/base64-decoder.js ***!
27
- \*******************************/
28
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
29
-
30
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ Base64Decoder\n/* harmony export */ });\n/* harmony import */ var _decode_strings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./decode-strings */ \"./src/decode-strings.js\");\n\n\nclass Base64Decoder {\n constructor(opts) {\n opts = opts || {};\n\n this.decoder = opts.decoder || new TextDecoder();\n\n this.maxChunkSize = 100 * 1024;\n\n this.chunks = [];\n\n this.remainder = '';\n }\n\n update(buffer) {\n let str = this.decoder.decode(buffer);\n\n if (/[^a-zA-Z0-9+\\/]/.test(str)) {\n str = str.replace(/[^a-zA-Z0-9+\\/]+/g, '');\n }\n\n this.remainder += str;\n\n if (this.remainder.length >= this.maxChunkSize) {\n let allowedBytes = Math.floor(this.remainder.length / 4) * 4;\n let base64Str;\n\n if (allowedBytes === this.remainder.length) {\n base64Str = this.remainder;\n this.remainder = '';\n } else {\n base64Str = this.remainder.substr(0, allowedBytes);\n this.remainder = this.remainder.substr(allowedBytes);\n }\n\n if (base64Str.length) {\n this.chunks.push((0,_decode_strings__WEBPACK_IMPORTED_MODULE_0__.decodeBase64)(base64Str));\n }\n }\n }\n\n finalize() {\n if (this.remainder && !/^=+$/.test(this.remainder)) {\n this.chunks.push((0,_decode_strings__WEBPACK_IMPORTED_MODULE_0__.decodeBase64)(this.remainder));\n }\n\n return (0,_decode_strings__WEBPACK_IMPORTED_MODULE_0__.blobToArrayBuffer)(new Blob(this.chunks, { type: 'application/octet-stream' }));\n }\n}\n\n\n//# sourceURL=webpack://postalMime/./src/base64-decoder.js?");
31
-
32
- /***/ }),
33
-
34
- /***/ "./src/decode-strings.js":
35
- /*!*******************************!*\
36
- !*** ./src/decode-strings.js ***!
37
- \*******************************/
38
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
39
-
40
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"textEncoder\": () => /* binding */ textEncoder,\n/* harmony export */ \"decodeBase64\": () => /* binding */ decodeBase64,\n/* harmony export */ \"getDecoder\": () => /* binding */ getDecoder,\n/* harmony export */ \"blobToArrayBuffer\": () => /* binding */ blobToArrayBuffer,\n/* harmony export */ \"getHex\": () => /* binding */ getHex,\n/* harmony export */ \"decodeWord\": () => /* binding */ decodeWord,\n/* harmony export */ \"decodeWords\": () => /* binding */ decodeWords,\n/* harmony export */ \"decodeURIComponentWithCharset\": () => /* binding */ decodeURIComponentWithCharset,\n/* harmony export */ \"decodeParameterValueContinuations\": () => /* binding */ decodeParameterValueContinuations\n/* harmony export */ });\nconst textEncoder = new TextEncoder();\n\nconst decoders = new Map();\n\nconst base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst base64Lookup = new Uint8Array(256);\nfor (var i = 0; i < base64Chars.length; i++) {\n base64Lookup[base64Chars.charCodeAt(i)] = i;\n}\n\nfunction decodeBase64(base64) {\n let bufferLength = Math.ceil(base64.length / 4) * 3;\n const len = base64.length;\n\n let p = 0;\n\n if (base64.length % 4 === 3) {\n bufferLength--;\n } else if (base64.length % 4 === 2) {\n bufferLength -= 2;\n } else if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arrayBuffer = new ArrayBuffer(bufferLength);\n const bytes = new Uint8Array(arrayBuffer);\n\n for (let i = 0; i < len; i += 4) {\n let encoded1 = base64Lookup[base64.charCodeAt(i)];\n let encoded2 = base64Lookup[base64.charCodeAt(i + 1)];\n let encoded3 = base64Lookup[base64.charCodeAt(i + 2)];\n let encoded4 = base64Lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arrayBuffer;\n}\n\nfunction getDecoder(charset) {\n charset = charset || 'utf8';\n if (decoders.has(charset)) {\n return decoders.get(charset);\n }\n let decoder;\n try {\n decoder = new TextDecoder(charset);\n } catch (err) {\n if (charset === 'utf8') {\n // is this even possible?\n throw err;\n }\n // use default\n return getDecoder();\n }\n\n decoders.set(charset, decoder);\n return decoder;\n}\n\n/**\n * Converts a Blob into an ArrayBuffer\n * @param {Blob} blob Blob to convert\n * @returns {ArrayBuffer} Converted value\n */\nasync function blobToArrayBuffer(blob) {\n if ('arrayBuffer' in blob) {\n return await blob.arrayBuffer();\n }\n\n const fr = new FileReader();\n\n return new Promise((resolve, reject) => {\n fr.onload = function (e) {\n resolve(e.target.result);\n };\n\n fr.onerror = function (e) {\n reject(fr.error);\n };\n\n fr.readAsArrayBuffer(blob);\n });\n}\n\nfunction getHex(c) {\n if ((c >= 0x30 /* 0 */ && c <= 0x39) /* 9 */ || (c >= 0x61 /* a */ && c <= 0x66) /* f */ || (c >= 0x41 /* A */ && c <= 0x46) /* F */) {\n return String.fromCharCode(c);\n }\n return false;\n}\n\n/**\n * Decode a complete mime word encoded string\n *\n * @param {String} str Mime word encoded string\n * @return {String} Decoded unicode string\n */\nfunction decodeWord(charset, encoding, str) {\n // RFC2231 added language tag to the encoding\n // see: https://tools.ietf.org/html/rfc2231#section-5\n // this implementation silently ignores this tag\n let splitPos = charset.indexOf('*');\n if (splitPos >= 0) {\n charset = charset.substr(0, splitPos);\n }\n\n encoding = encoding.toUpperCase();\n\n let byteStr;\n\n if (encoding === 'Q') {\n str = str\n // remove spaces between = and hex char, this might indicate invalidly applied line splitting\n .replace(/=\\s+([0-9a-fA-F])/g, '=$1')\n // convert all underscores to spaces\n .replace(/[_\\s]/g, ' ');\n\n let buf = textEncoder.encode(str);\n let encodedBytes = [];\n for (let i = 0, len = buf.length; i < len; i++) {\n let c = buf[i];\n if (i <= len - 2 && c === 0x3d /* = */) {\n let c1 = getHex(buf[i + 1]);\n let c2 = getHex(buf[i + 2]);\n if (c1 && c2) {\n let c = parseInt(c1 + c2, 16);\n encodedBytes.push(c);\n i += 2;\n continue;\n }\n }\n encodedBytes.push(c);\n }\n byteStr = new ArrayBuffer(encodedBytes.length);\n let dataView = new DataView(byteStr);\n for (let i = 0, len = encodedBytes.length; i < len; i++) {\n dataView.setUint8(i, encodedBytes[i]);\n }\n } else if (encoding === 'B') {\n byteStr = decodeBase64(str.replace(/[^a-zA-Z0-9\\+\\/=]+/g, ''));\n } else {\n // keep as is, convert ArrayBuffer to unicode string, assume utf8\n byteStr = textEncoder.encode(str);\n }\n\n return getDecoder(charset).decode(byteStr);\n}\n\nfunction decodeWords(str) {\n return (\n (str || '')\n .toString()\n // find base64 words that can be joined\n .replace(/(=\\?([^?]+)\\?[Bb]\\?[^?]*\\?=)\\s*(?==\\?([^?]+)\\?[Bb]\\?[^?]*\\?=)/g, (match, left, chLeft, chRight) => {\n // only mark b64 chunks to be joined if charsets match\n if (chLeft === chRight) {\n // set a joiner marker\n return left + '__\\x00JOIN\\x00__';\n }\n return match;\n })\n // find QP words that can be joined\n .replace(/(=\\?([^?]+)\\?[Qq]\\?[^?]*\\?=)\\s*(?==\\?([^?]+)\\?[Qq]\\?[^?]*\\?=)/g, (match, left, chLeft, chRight) => {\n // only mark QP chunks to be joined if charsets match\n if (chLeft === chRight) {\n // set a joiner marker\n return left + '__\\x00JOIN\\x00__';\n }\n return match;\n })\n // join base64 encoded words\n .replace(/(\\?=)?__\\x00JOIN\\x00__(=\\?([^?]+)\\?[QqBb]\\?)?/g, '')\n // remove spaces between mime encoded words\n .replace(/(=\\?[^?]+\\?[QqBb]\\?[^?]*\\?=)\\s+(?==\\?[^?]+\\?[QqBb]\\?[^?]*\\?=)/g, '$1')\n // decode words\n .replace(/=\\?([\\w_\\-*]+)\\?([QqBb])\\?([^?]*)\\?=/g, (m, charset, encoding, text) => decodeWord(charset, encoding, text))\n );\n}\n\nfunction decodeURIComponentWithCharset(encodedStr, charset) {\n charset = charset || 'utf-8';\n\n let encodedBytes = [];\n for (let i = 0; i < encodedStr.length; i++) {\n let c = encodedStr.charAt(i);\n if (c === '%' && /^[a-f0-9]{2}/i.test(encodedStr.substr(i + 1, 2))) {\n // encoded sequence\n let byte = encodedStr.substr(i + 1, 2);\n i += 2;\n encodedBytes.push(parseInt(byte, 16));\n } else if (c.charCodeAt(0) > 126) {\n c = textEncoder.encode(c);\n for (let j = 0; j < c.length; j++) {\n encodedBytes.push(c[j]);\n }\n } else {\n // \"normal\" char\n encodedBytes.push(c.charCodeAt(0));\n }\n }\n\n const byteStr = new ArrayBuffer(encodedBytes.length);\n const dataView = new DataView(byteStr);\n for (let i = 0, len = encodedBytes.length; i < len; i++) {\n dataView.setUint8(i, encodedBytes[i]);\n }\n\n return getDecoder(charset).decode(byteStr);\n}\n\nfunction decodeParameterValueContinuations(header) {\n // handle parameter value continuations\n // https://tools.ietf.org/html/rfc2231#section-3\n\n // preprocess values\n let paramKeys = new Map();\n\n Object.keys(header.params).forEach(key => {\n let match = key.match(/\\*((\\d+)\\*?)?$/);\n if (!match) {\n // nothing to do here, does not seem like a continuation param\n return;\n }\n\n let actualKey = key.substr(0, match.index).toLowerCase();\n let nr = Number(match[2]) || 0;\n\n let paramVal;\n if (!paramKeys.has(actualKey)) {\n paramVal = {\n charset: false,\n values: []\n };\n paramKeys.set(actualKey, paramVal);\n } else {\n paramVal = paramKeys.get(actualKey);\n }\n\n let value = header.params[key];\n if (nr === 0 && match[0].charAt(match[0].length - 1) === '*' && (match = value.match(/^([^']*)'[^']*'(.*)$/))) {\n paramVal.charset = match[1] || 'utf-8';\n value = match[2];\n }\n\n paramVal.values.push({ nr, value });\n\n // remove the old reference\n delete header.params[key];\n });\n\n paramKeys.forEach((paramVal, key) => {\n header.params[key] = decodeURIComponentWithCharset(\n paramVal.values\n .sort((a, b) => a.nr - b.nr)\n .map(a => a.value)\n .join(''),\n paramVal.charset\n );\n });\n}\n\n\n//# sourceURL=webpack://postalMime/./src/decode-strings.js?");
41
-
42
- /***/ }),
43
-
44
- /***/ "./src/html-entities.js":
45
- /*!******************************!*\
46
- !*** ./src/html-entities.js ***!
47
- \******************************/
48
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
49
-
50
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"htmlEntities\": () => /* binding */ htmlEntities,\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n// Entity map from https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references\nconst htmlEntities = {\n '&AElig': '\\u00C6',\n '&AElig;': '\\u00C6',\n '&AMP': '\\u0026',\n '&AMP;': '\\u0026',\n '&Aacute': '\\u00C1',\n '&Aacute;': '\\u00C1',\n '&Abreve;': '\\u0102',\n '&Acirc': '\\u00C2',\n '&Acirc;': '\\u00C2',\n '&Acy;': '\\u0410',\n '&Afr;': '\\uD835\\uDD04',\n '&Agrave': '\\u00C0',\n '&Agrave;': '\\u00C0',\n '&Alpha;': '\\u0391',\n '&Amacr;': '\\u0100',\n '&And;': '\\u2A53',\n '&Aogon;': '\\u0104',\n '&Aopf;': '\\uD835\\uDD38',\n '&ApplyFunction;': '\\u2061',\n '&Aring': '\\u00C5',\n '&Aring;': '\\u00C5',\n '&Ascr;': '\\uD835\\uDC9C',\n '&Assign;': '\\u2254',\n '&Atilde': '\\u00C3',\n '&Atilde;': '\\u00C3',\n '&Auml': '\\u00C4',\n '&Auml;': '\\u00C4',\n '&Backslash;': '\\u2216',\n '&Barv;': '\\u2AE7',\n '&Barwed;': '\\u2306',\n '&Bcy;': '\\u0411',\n '&Because;': '\\u2235',\n '&Bernoullis;': '\\u212C',\n '&Beta;': '\\u0392',\n '&Bfr;': '\\uD835\\uDD05',\n '&Bopf;': '\\uD835\\uDD39',\n '&Breve;': '\\u02D8',\n '&Bscr;': '\\u212C',\n '&Bumpeq;': '\\u224E',\n '&CHcy;': '\\u0427',\n '&COPY': '\\u00A9',\n '&COPY;': '\\u00A9',\n '&Cacute;': '\\u0106',\n '&Cap;': '\\u22D2',\n '&CapitalDifferentialD;': '\\u2145',\n '&Cayleys;': '\\u212D',\n '&Ccaron;': '\\u010C',\n '&Ccedil': '\\u00C7',\n '&Ccedil;': '\\u00C7',\n '&Ccirc;': '\\u0108',\n '&Cconint;': '\\u2230',\n '&Cdot;': '\\u010A',\n '&Cedilla;': '\\u00B8',\n '&CenterDot;': '\\u00B7',\n '&Cfr;': '\\u212D',\n '&Chi;': '\\u03A7',\n '&CircleDot;': '\\u2299',\n '&CircleMinus;': '\\u2296',\n '&CirclePlus;': '\\u2295',\n '&CircleTimes;': '\\u2297',\n '&ClockwiseContourIntegral;': '\\u2232',\n '&CloseCurlyDoubleQuote;': '\\u201D',\n '&CloseCurlyQuote;': '\\u2019',\n '&Colon;': '\\u2237',\n '&Colone;': '\\u2A74',\n '&Congruent;': '\\u2261',\n '&Conint;': '\\u222F',\n '&ContourIntegral;': '\\u222E',\n '&Copf;': '\\u2102',\n '&Coproduct;': '\\u2210',\n '&CounterClockwiseContourIntegral;': '\\u2233',\n '&Cross;': '\\u2A2F',\n '&Cscr;': '\\uD835\\uDC9E',\n '&Cup;': '\\u22D3',\n '&CupCap;': '\\u224D',\n '&DD;': '\\u2145',\n '&DDotrahd;': '\\u2911',\n '&DJcy;': '\\u0402',\n '&DScy;': '\\u0405',\n '&DZcy;': '\\u040F',\n '&Dagger;': '\\u2021',\n '&Darr;': '\\u21A1',\n '&Dashv;': '\\u2AE4',\n '&Dcaron;': '\\u010E',\n '&Dcy;': '\\u0414',\n '&Del;': '\\u2207',\n '&Delta;': '\\u0394',\n '&Dfr;': '\\uD835\\uDD07',\n '&DiacriticalAcute;': '\\u00B4',\n '&DiacriticalDot;': '\\u02D9',\n '&DiacriticalDoubleAcute;': '\\u02DD',\n '&DiacriticalGrave;': '\\u0060',\n '&DiacriticalTilde;': '\\u02DC',\n '&Diamond;': '\\u22C4',\n '&DifferentialD;': '\\u2146',\n '&Dopf;': '\\uD835\\uDD3B',\n '&Dot;': '\\u00A8',\n '&DotDot;': '\\u20DC',\n '&DotEqual;': '\\u2250',\n '&DoubleContourIntegral;': '\\u222F',\n '&DoubleDot;': '\\u00A8',\n '&DoubleDownArrow;': '\\u21D3',\n '&DoubleLeftArrow;': '\\u21D0',\n '&DoubleLeftRightArrow;': '\\u21D4',\n '&DoubleLeftTee;': '\\u2AE4',\n '&DoubleLongLeftArrow;': '\\u27F8',\n '&DoubleLongLeftRightArrow;': '\\u27FA',\n '&DoubleLongRightArrow;': '\\u27F9',\n '&DoubleRightArrow;': '\\u21D2',\n '&DoubleRightTee;': '\\u22A8',\n '&DoubleUpArrow;': '\\u21D1',\n '&DoubleUpDownArrow;': '\\u21D5',\n '&DoubleVerticalBar;': '\\u2225',\n '&DownArrow;': '\\u2193',\n '&DownArrowBar;': '\\u2913',\n '&DownArrowUpArrow;': '\\u21F5',\n '&DownBreve;': '\\u0311',\n '&DownLeftRightVector;': '\\u2950',\n '&DownLeftTeeVector;': '\\u295E',\n '&DownLeftVector;': '\\u21BD',\n '&DownLeftVectorBar;': '\\u2956',\n '&DownRightTeeVector;': '\\u295F',\n '&DownRightVector;': '\\u21C1',\n '&DownRightVectorBar;': '\\u2957',\n '&DownTee;': '\\u22A4',\n '&DownTeeArrow;': '\\u21A7',\n '&Downarrow;': '\\u21D3',\n '&Dscr;': '\\uD835\\uDC9F',\n '&Dstrok;': '\\u0110',\n '&ENG;': '\\u014A',\n '&ETH': '\\u00D0',\n '&ETH;': '\\u00D0',\n '&Eacute': '\\u00C9',\n '&Eacute;': '\\u00C9',\n '&Ecaron;': '\\u011A',\n '&Ecirc': '\\u00CA',\n '&Ecirc;': '\\u00CA',\n '&Ecy;': '\\u042D',\n '&Edot;': '\\u0116',\n '&Efr;': '\\uD835\\uDD08',\n '&Egrave': '\\u00C8',\n '&Egrave;': '\\u00C8',\n '&Element;': '\\u2208',\n '&Emacr;': '\\u0112',\n '&EmptySmallSquare;': '\\u25FB',\n '&EmptyVerySmallSquare;': '\\u25AB',\n '&Eogon;': '\\u0118',\n '&Eopf;': '\\uD835\\uDD3C',\n '&Epsilon;': '\\u0395',\n '&Equal;': '\\u2A75',\n '&EqualTilde;': '\\u2242',\n '&Equilibrium;': '\\u21CC',\n '&Escr;': '\\u2130',\n '&Esim;': '\\u2A73',\n '&Eta;': '\\u0397',\n '&Euml': '\\u00CB',\n '&Euml;': '\\u00CB',\n '&Exists;': '\\u2203',\n '&ExponentialE;': '\\u2147',\n '&Fcy;': '\\u0424',\n '&Ffr;': '\\uD835\\uDD09',\n '&FilledSmallSquare;': '\\u25FC',\n '&FilledVerySmallSquare;': '\\u25AA',\n '&Fopf;': '\\uD835\\uDD3D',\n '&ForAll;': '\\u2200',\n '&Fouriertrf;': '\\u2131',\n '&Fscr;': '\\u2131',\n '&GJcy;': '\\u0403',\n '&GT': '\\u003E',\n '&GT;': '\\u003E',\n '&Gamma;': '\\u0393',\n '&Gammad;': '\\u03DC',\n '&Gbreve;': '\\u011E',\n '&Gcedil;': '\\u0122',\n '&Gcirc;': '\\u011C',\n '&Gcy;': '\\u0413',\n '&Gdot;': '\\u0120',\n '&Gfr;': '\\uD835\\uDD0A',\n '&Gg;': '\\u22D9',\n '&Gopf;': '\\uD835\\uDD3E',\n '&GreaterEqual;': '\\u2265',\n '&GreaterEqualLess;': '\\u22DB',\n '&GreaterFullEqual;': '\\u2267',\n '&GreaterGreater;': '\\u2AA2',\n '&GreaterLess;': '\\u2277',\n '&GreaterSlantEqual;': '\\u2A7E',\n '&GreaterTilde;': '\\u2273',\n '&Gscr;': '\\uD835\\uDCA2',\n '&Gt;': '\\u226B',\n '&HARDcy;': '\\u042A',\n '&Hacek;': '\\u02C7',\n '&Hat;': '\\u005E',\n '&Hcirc;': '\\u0124',\n '&Hfr;': '\\u210C',\n '&HilbertSpace;': '\\u210B',\n '&Hopf;': '\\u210D',\n '&HorizontalLine;': '\\u2500',\n '&Hscr;': '\\u210B',\n '&Hstrok;': '\\u0126',\n '&HumpDownHump;': '\\u224E',\n '&HumpEqual;': '\\u224F',\n '&IEcy;': '\\u0415',\n '&IJlig;': '\\u0132',\n '&IOcy;': '\\u0401',\n '&Iacute': '\\u00CD',\n '&Iacute;': '\\u00CD',\n '&Icirc': '\\u00CE',\n '&Icirc;': '\\u00CE',\n '&Icy;': '\\u0418',\n '&Idot;': '\\u0130',\n '&Ifr;': '\\u2111',\n '&Igrave': '\\u00CC',\n '&Igrave;': '\\u00CC',\n '&Im;': '\\u2111',\n '&Imacr;': '\\u012A',\n '&ImaginaryI;': '\\u2148',\n '&Implies;': '\\u21D2',\n '&Int;': '\\u222C',\n '&Integral;': '\\u222B',\n '&Intersection;': '\\u22C2',\n '&InvisibleComma;': '\\u2063',\n '&InvisibleTimes;': '\\u2062',\n '&Iogon;': '\\u012E',\n '&Iopf;': '\\uD835\\uDD40',\n '&Iota;': '\\u0399',\n '&Iscr;': '\\u2110',\n '&Itilde;': '\\u0128',\n '&Iukcy;': '\\u0406',\n '&Iuml': '\\u00CF',\n '&Iuml;': '\\u00CF',\n '&Jcirc;': '\\u0134',\n '&Jcy;': '\\u0419',\n '&Jfr;': '\\uD835\\uDD0D',\n '&Jopf;': '\\uD835\\uDD41',\n '&Jscr;': '\\uD835\\uDCA5',\n '&Jsercy;': '\\u0408',\n '&Jukcy;': '\\u0404',\n '&KHcy;': '\\u0425',\n '&KJcy;': '\\u040C',\n '&Kappa;': '\\u039A',\n '&Kcedil;': '\\u0136',\n '&Kcy;': '\\u041A',\n '&Kfr;': '\\uD835\\uDD0E',\n '&Kopf;': '\\uD835\\uDD42',\n '&Kscr;': '\\uD835\\uDCA6',\n '&LJcy;': '\\u0409',\n '&LT': '\\u003C',\n '&LT;': '\\u003C',\n '&Lacute;': '\\u0139',\n '&Lambda;': '\\u039B',\n '&Lang;': '\\u27EA',\n '&Laplacetrf;': '\\u2112',\n '&Larr;': '\\u219E',\n '&Lcaron;': '\\u013D',\n '&Lcedil;': '\\u013B',\n '&Lcy;': '\\u041B',\n '&LeftAngleBracket;': '\\u27E8',\n '&LeftArrow;': '\\u2190',\n '&LeftArrowBar;': '\\u21E4',\n '&LeftArrowRightArrow;': '\\u21C6',\n '&LeftCeiling;': '\\u2308',\n '&LeftDoubleBracket;': '\\u27E6',\n '&LeftDownTeeVector;': '\\u2961',\n '&LeftDownVector;': '\\u21C3',\n '&LeftDownVectorBar;': '\\u2959',\n '&LeftFloor;': '\\u230A',\n '&LeftRightArrow;': '\\u2194',\n '&LeftRightVector;': '\\u294E',\n '&LeftTee;': '\\u22A3',\n '&LeftTeeArrow;': '\\u21A4',\n '&LeftTeeVector;': '\\u295A',\n '&LeftTriangle;': '\\u22B2',\n '&LeftTriangleBar;': '\\u29CF',\n '&LeftTriangleEqual;': '\\u22B4',\n '&LeftUpDownVector;': '\\u2951',\n '&LeftUpTeeVector;': '\\u2960',\n '&LeftUpVector;': '\\u21BF',\n '&LeftUpVectorBar;': '\\u2958',\n '&LeftVector;': '\\u21BC',\n '&LeftVectorBar;': '\\u2952',\n '&Leftarrow;': '\\u21D0',\n '&Leftrightarrow;': '\\u21D4',\n '&LessEqualGreater;': '\\u22DA',\n '&LessFullEqual;': '\\u2266',\n '&LessGreater;': '\\u2276',\n '&LessLess;': '\\u2AA1',\n '&LessSlantEqual;': '\\u2A7D',\n '&LessTilde;': '\\u2272',\n '&Lfr;': '\\uD835\\uDD0F',\n '&Ll;': '\\u22D8',\n '&Lleftarrow;': '\\u21DA',\n '&Lmidot;': '\\u013F',\n '&LongLeftArrow;': '\\u27F5',\n '&LongLeftRightArrow;': '\\u27F7',\n '&LongRightArrow;': '\\u27F6',\n '&Longleftarrow;': '\\u27F8',\n '&Longleftrightarrow;': '\\u27FA',\n '&Longrightarrow;': '\\u27F9',\n '&Lopf;': '\\uD835\\uDD43',\n '&LowerLeftArrow;': '\\u2199',\n '&LowerRightArrow;': '\\u2198',\n '&Lscr;': '\\u2112',\n '&Lsh;': '\\u21B0',\n '&Lstrok;': '\\u0141',\n '&Lt;': '\\u226A',\n '&Map;': '\\u2905',\n '&Mcy;': '\\u041C',\n '&MediumSpace;': '\\u205F',\n '&Mellintrf;': '\\u2133',\n '&Mfr;': '\\uD835\\uDD10',\n '&MinusPlus;': '\\u2213',\n '&Mopf;': '\\uD835\\uDD44',\n '&Mscr;': '\\u2133',\n '&Mu;': '\\u039C',\n '&NJcy;': '\\u040A',\n '&Nacute;': '\\u0143',\n '&Ncaron;': '\\u0147',\n '&Ncedil;': '\\u0145',\n '&Ncy;': '\\u041D',\n '&NegativeMediumSpace;': '\\u200B',\n '&NegativeThickSpace;': '\\u200B',\n '&NegativeThinSpace;': '\\u200B',\n '&NegativeVeryThinSpace;': '\\u200B',\n '&NestedGreaterGreater;': '\\u226B',\n '&NestedLessLess;': '\\u226A',\n '&NewLine;': '\\u000A',\n '&Nfr;': '\\uD835\\uDD11',\n '&NoBreak;': '\\u2060',\n '&NonBreakingSpace;': '\\u00A0',\n '&Nopf;': '\\u2115',\n '&Not;': '\\u2AEC',\n '&NotCongruent;': '\\u2262',\n '&NotCupCap;': '\\u226D',\n '&NotDoubleVerticalBar;': '\\u2226',\n '&NotElement;': '\\u2209',\n '&NotEqual;': '\\u2260',\n '&NotEqualTilde;': '\\u2242\\u0338',\n '&NotExists;': '\\u2204',\n '&NotGreater;': '\\u226F',\n '&NotGreaterEqual;': '\\u2271',\n '&NotGreaterFullEqual;': '\\u2267\\u0338',\n '&NotGreaterGreater;': '\\u226B\\u0338',\n '&NotGreaterLess;': '\\u2279',\n '&NotGreaterSlantEqual;': '\\u2A7E\\u0338',\n '&NotGreaterTilde;': '\\u2275',\n '&NotHumpDownHump;': '\\u224E\\u0338',\n '&NotHumpEqual;': '\\u224F\\u0338',\n '&NotLeftTriangle;': '\\u22EA',\n '&NotLeftTriangleBar;': '\\u29CF\\u0338',\n '&NotLeftTriangleEqual;': '\\u22EC',\n '&NotLess;': '\\u226E',\n '&NotLessEqual;': '\\u2270',\n '&NotLessGreater;': '\\u2278',\n '&NotLessLess;': '\\u226A\\u0338',\n '&NotLessSlantEqual;': '\\u2A7D\\u0338',\n '&NotLessTilde;': '\\u2274',\n '&NotNestedGreaterGreater;': '\\u2AA2\\u0338',\n '&NotNestedLessLess;': '\\u2AA1\\u0338',\n '&NotPrecedes;': '\\u2280',\n '&NotPrecedesEqual;': '\\u2AAF\\u0338',\n '&NotPrecedesSlantEqual;': '\\u22E0',\n '&NotReverseElement;': '\\u220C',\n '&NotRightTriangle;': '\\u22EB',\n '&NotRightTriangleBar;': '\\u29D0\\u0338',\n '&NotRightTriangleEqual;': '\\u22ED',\n '&NotSquareSubset;': '\\u228F\\u0338',\n '&NotSquareSubsetEqual;': '\\u22E2',\n '&NotSquareSuperset;': '\\u2290\\u0338',\n '&NotSquareSupersetEqual;': '\\u22E3',\n '&NotSubset;': '\\u2282\\u20D2',\n '&NotSubsetEqual;': '\\u2288',\n '&NotSucceeds;': '\\u2281',\n '&NotSucceedsEqual;': '\\u2AB0\\u0338',\n '&NotSucceedsSlantEqual;': '\\u22E1',\n '&NotSucceedsTilde;': '\\u227F\\u0338',\n '&NotSuperset;': '\\u2283\\u20D2',\n '&NotSupersetEqual;': '\\u2289',\n '&NotTilde;': '\\u2241',\n '&NotTildeEqual;': '\\u2244',\n '&NotTildeFullEqual;': '\\u2247',\n '&NotTildeTilde;': '\\u2249',\n '&NotVerticalBar;': '\\u2224',\n '&Nscr;': '\\uD835\\uDCA9',\n '&Ntilde': '\\u00D1',\n '&Ntilde;': '\\u00D1',\n '&Nu;': '\\u039D',\n '&OElig;': '\\u0152',\n '&Oacute': '\\u00D3',\n '&Oacute;': '\\u00D3',\n '&Ocirc': '\\u00D4',\n '&Ocirc;': '\\u00D4',\n '&Ocy;': '\\u041E',\n '&Odblac;': '\\u0150',\n '&Ofr;': '\\uD835\\uDD12',\n '&Ograve': '\\u00D2',\n '&Ograve;': '\\u00D2',\n '&Omacr;': '\\u014C',\n '&Omega;': '\\u03A9',\n '&Omicron;': '\\u039F',\n '&Oopf;': '\\uD835\\uDD46',\n '&OpenCurlyDoubleQuote;': '\\u201C',\n '&OpenCurlyQuote;': '\\u2018',\n '&Or;': '\\u2A54',\n '&Oscr;': '\\uD835\\uDCAA',\n '&Oslash': '\\u00D8',\n '&Oslash;': '\\u00D8',\n '&Otilde': '\\u00D5',\n '&Otilde;': '\\u00D5',\n '&Otimes;': '\\u2A37',\n '&Ouml': '\\u00D6',\n '&Ouml;': '\\u00D6',\n '&OverBar;': '\\u203E',\n '&OverBrace;': '\\u23DE',\n '&OverBracket;': '\\u23B4',\n '&OverParenthesis;': '\\u23DC',\n '&PartialD;': '\\u2202',\n '&Pcy;': '\\u041F',\n '&Pfr;': '\\uD835\\uDD13',\n '&Phi;': '\\u03A6',\n '&Pi;': '\\u03A0',\n '&PlusMinus;': '\\u00B1',\n '&Poincareplane;': '\\u210C',\n '&Popf;': '\\u2119',\n '&Pr;': '\\u2ABB',\n '&Precedes;': '\\u227A',\n '&PrecedesEqual;': '\\u2AAF',\n '&PrecedesSlantEqual;': '\\u227C',\n '&PrecedesTilde;': '\\u227E',\n '&Prime;': '\\u2033',\n '&Product;': '\\u220F',\n '&Proportion;': '\\u2237',\n '&Proportional;': '\\u221D',\n '&Pscr;': '\\uD835\\uDCAB',\n '&Psi;': '\\u03A8',\n '&QUOT': '\\u0022',\n '&QUOT;': '\\u0022',\n '&Qfr;': '\\uD835\\uDD14',\n '&Qopf;': '\\u211A',\n '&Qscr;': '\\uD835\\uDCAC',\n '&RBarr;': '\\u2910',\n '&REG': '\\u00AE',\n '&REG;': '\\u00AE',\n '&Racute;': '\\u0154',\n '&Rang;': '\\u27EB',\n '&Rarr;': '\\u21A0',\n '&Rarrtl;': '\\u2916',\n '&Rcaron;': '\\u0158',\n '&Rcedil;': '\\u0156',\n '&Rcy;': '\\u0420',\n '&Re;': '\\u211C',\n '&ReverseElement;': '\\u220B',\n '&ReverseEquilibrium;': '\\u21CB',\n '&ReverseUpEquilibrium;': '\\u296F',\n '&Rfr;': '\\u211C',\n '&Rho;': '\\u03A1',\n '&RightAngleBracket;': '\\u27E9',\n '&RightArrow;': '\\u2192',\n '&RightArrowBar;': '\\u21E5',\n '&RightArrowLeftArrow;': '\\u21C4',\n '&RightCeiling;': '\\u2309',\n '&RightDoubleBracket;': '\\u27E7',\n '&RightDownTeeVector;': '\\u295D',\n '&RightDownVector;': '\\u21C2',\n '&RightDownVectorBar;': '\\u2955',\n '&RightFloor;': '\\u230B',\n '&RightTee;': '\\u22A2',\n '&RightTeeArrow;': '\\u21A6',\n '&RightTeeVector;': '\\u295B',\n '&RightTriangle;': '\\u22B3',\n '&RightTriangleBar;': '\\u29D0',\n '&RightTriangleEqual;': '\\u22B5',\n '&RightUpDownVector;': '\\u294F',\n '&RightUpTeeVector;': '\\u295C',\n '&RightUpVector;': '\\u21BE',\n '&RightUpVectorBar;': '\\u2954',\n '&RightVector;': '\\u21C0',\n '&RightVectorBar;': '\\u2953',\n '&Rightarrow;': '\\u21D2',\n '&Ropf;': '\\u211D',\n '&RoundImplies;': '\\u2970',\n '&Rrightarrow;': '\\u21DB',\n '&Rscr;': '\\u211B',\n '&Rsh;': '\\u21B1',\n '&RuleDelayed;': '\\u29F4',\n '&SHCHcy;': '\\u0429',\n '&SHcy;': '\\u0428',\n '&SOFTcy;': '\\u042C',\n '&Sacute;': '\\u015A',\n '&Sc;': '\\u2ABC',\n '&Scaron;': '\\u0160',\n '&Scedil;': '\\u015E',\n '&Scirc;': '\\u015C',\n '&Scy;': '\\u0421',\n '&Sfr;': '\\uD835\\uDD16',\n '&ShortDownArrow;': '\\u2193',\n '&ShortLeftArrow;': '\\u2190',\n '&ShortRightArrow;': '\\u2192',\n '&ShortUpArrow;': '\\u2191',\n '&Sigma;': '\\u03A3',\n '&SmallCircle;': '\\u2218',\n '&Sopf;': '\\uD835\\uDD4A',\n '&Sqrt;': '\\u221A',\n '&Square;': '\\u25A1',\n '&SquareIntersection;': '\\u2293',\n '&SquareSubset;': '\\u228F',\n '&SquareSubsetEqual;': '\\u2291',\n '&SquareSuperset;': '\\u2290',\n '&SquareSupersetEqual;': '\\u2292',\n '&SquareUnion;': '\\u2294',\n '&Sscr;': '\\uD835\\uDCAE',\n '&Star;': '\\u22C6',\n '&Sub;': '\\u22D0',\n '&Subset;': '\\u22D0',\n '&SubsetEqual;': '\\u2286',\n '&Succeeds;': '\\u227B',\n '&SucceedsEqual;': '\\u2AB0',\n '&SucceedsSlantEqual;': '\\u227D',\n '&SucceedsTilde;': '\\u227F',\n '&SuchThat;': '\\u220B',\n '&Sum;': '\\u2211',\n '&Sup;': '\\u22D1',\n '&Superset;': '\\u2283',\n '&SupersetEqual;': '\\u2287',\n '&Supset;': '\\u22D1',\n '&THORN': '\\u00DE',\n '&THORN;': '\\u00DE',\n '&TRADE;': '\\u2122',\n '&TSHcy;': '\\u040B',\n '&TScy;': '\\u0426',\n '&Tab;': '\\u0009',\n '&Tau;': '\\u03A4',\n '&Tcaron;': '\\u0164',\n '&Tcedil;': '\\u0162',\n '&Tcy;': '\\u0422',\n '&Tfr;': '\\uD835\\uDD17',\n '&Therefore;': '\\u2234',\n '&Theta;': '\\u0398',\n '&ThickSpace;': '\\u205F\\u200A',\n '&ThinSpace;': '\\u2009',\n '&Tilde;': '\\u223C',\n '&TildeEqual;': '\\u2243',\n '&TildeFullEqual;': '\\u2245',\n '&TildeTilde;': '\\u2248',\n '&Topf;': '\\uD835\\uDD4B',\n '&TripleDot;': '\\u20DB',\n '&Tscr;': '\\uD835\\uDCAF',\n '&Tstrok;': '\\u0166',\n '&Uacute': '\\u00DA',\n '&Uacute;': '\\u00DA',\n '&Uarr;': '\\u219F',\n '&Uarrocir;': '\\u2949',\n '&Ubrcy;': '\\u040E',\n '&Ubreve;': '\\u016C',\n '&Ucirc': '\\u00DB',\n '&Ucirc;': '\\u00DB',\n '&Ucy;': '\\u0423',\n '&Udblac;': '\\u0170',\n '&Ufr;': '\\uD835\\uDD18',\n '&Ugrave': '\\u00D9',\n '&Ugrave;': '\\u00D9',\n '&Umacr;': '\\u016A',\n '&UnderBar;': '\\u005F',\n '&UnderBrace;': '\\u23DF',\n '&UnderBracket;': '\\u23B5',\n '&UnderParenthesis;': '\\u23DD',\n '&Union;': '\\u22C3',\n '&UnionPlus;': '\\u228E',\n '&Uogon;': '\\u0172',\n '&Uopf;': '\\uD835\\uDD4C',\n '&UpArrow;': '\\u2191',\n '&UpArrowBar;': '\\u2912',\n '&UpArrowDownArrow;': '\\u21C5',\n '&UpDownArrow;': '\\u2195',\n '&UpEquilibrium;': '\\u296E',\n '&UpTee;': '\\u22A5',\n '&UpTeeArrow;': '\\u21A5',\n '&Uparrow;': '\\u21D1',\n '&Updownarrow;': '\\u21D5',\n '&UpperLeftArrow;': '\\u2196',\n '&UpperRightArrow;': '\\u2197',\n '&Upsi;': '\\u03D2',\n '&Upsilon;': '\\u03A5',\n '&Uring;': '\\u016E',\n '&Uscr;': '\\uD835\\uDCB0',\n '&Utilde;': '\\u0168',\n '&Uuml': '\\u00DC',\n '&Uuml;': '\\u00DC',\n '&VDash;': '\\u22AB',\n '&Vbar;': '\\u2AEB',\n '&Vcy;': '\\u0412',\n '&Vdash;': '\\u22A9',\n '&Vdashl;': '\\u2AE6',\n '&Vee;': '\\u22C1',\n '&Verbar;': '\\u2016',\n '&Vert;': '\\u2016',\n '&VerticalBar;': '\\u2223',\n '&VerticalLine;': '\\u007C',\n '&VerticalSeparator;': '\\u2758',\n '&VerticalTilde;': '\\u2240',\n '&VeryThinSpace;': '\\u200A',\n '&Vfr;': '\\uD835\\uDD19',\n '&Vopf;': '\\uD835\\uDD4D',\n '&Vscr;': '\\uD835\\uDCB1',\n '&Vvdash;': '\\u22AA',\n '&Wcirc;': '\\u0174',\n '&Wedge;': '\\u22C0',\n '&Wfr;': '\\uD835\\uDD1A',\n '&Wopf;': '\\uD835\\uDD4E',\n '&Wscr;': '\\uD835\\uDCB2',\n '&Xfr;': '\\uD835\\uDD1B',\n '&Xi;': '\\u039E',\n '&Xopf;': '\\uD835\\uDD4F',\n '&Xscr;': '\\uD835\\uDCB3',\n '&YAcy;': '\\u042F',\n '&YIcy;': '\\u0407',\n '&YUcy;': '\\u042E',\n '&Yacute': '\\u00DD',\n '&Yacute;': '\\u00DD',\n '&Ycirc;': '\\u0176',\n '&Ycy;': '\\u042B',\n '&Yfr;': '\\uD835\\uDD1C',\n '&Yopf;': '\\uD835\\uDD50',\n '&Yscr;': '\\uD835\\uDCB4',\n '&Yuml;': '\\u0178',\n '&ZHcy;': '\\u0416',\n '&Zacute;': '\\u0179',\n '&Zcaron;': '\\u017D',\n '&Zcy;': '\\u0417',\n '&Zdot;': '\\u017B',\n '&ZeroWidthSpace;': '\\u200B',\n '&Zeta;': '\\u0396',\n '&Zfr;': '\\u2128',\n '&Zopf;': '\\u2124',\n '&Zscr;': '\\uD835\\uDCB5',\n '&aacute': '\\u00E1',\n '&aacute;': '\\u00E1',\n '&abreve;': '\\u0103',\n '&ac;': '\\u223E',\n '&acE;': '\\u223E\\u0333',\n '&acd;': '\\u223F',\n '&acirc': '\\u00E2',\n '&acirc;': '\\u00E2',\n '&acute': '\\u00B4',\n '&acute;': '\\u00B4',\n '&acy;': '\\u0430',\n '&aelig': '\\u00E6',\n '&aelig;': '\\u00E6',\n '&af;': '\\u2061',\n '&afr;': '\\uD835\\uDD1E',\n '&agrave': '\\u00E0',\n '&agrave;': '\\u00E0',\n '&alefsym;': '\\u2135',\n '&aleph;': '\\u2135',\n '&alpha;': '\\u03B1',\n '&amacr;': '\\u0101',\n '&amalg;': '\\u2A3F',\n '&amp': '\\u0026',\n '&amp;': '\\u0026',\n '&and;': '\\u2227',\n '&andand;': '\\u2A55',\n '&andd;': '\\u2A5C',\n '&andslope;': '\\u2A58',\n '&andv;': '\\u2A5A',\n '&ang;': '\\u2220',\n '&ange;': '\\u29A4',\n '&angle;': '\\u2220',\n '&angmsd;': '\\u2221',\n '&angmsdaa;': '\\u29A8',\n '&angmsdab;': '\\u29A9',\n '&angmsdac;': '\\u29AA',\n '&angmsdad;': '\\u29AB',\n '&angmsdae;': '\\u29AC',\n '&angmsdaf;': '\\u29AD',\n '&angmsdag;': '\\u29AE',\n '&angmsdah;': '\\u29AF',\n '&angrt;': '\\u221F',\n '&angrtvb;': '\\u22BE',\n '&angrtvbd;': '\\u299D',\n '&angsph;': '\\u2222',\n '&angst;': '\\u00C5',\n '&angzarr;': '\\u237C',\n '&aogon;': '\\u0105',\n '&aopf;': '\\uD835\\uDD52',\n '&ap;': '\\u2248',\n '&apE;': '\\u2A70',\n '&apacir;': '\\u2A6F',\n '&ape;': '\\u224A',\n '&apid;': '\\u224B',\n '&apos;': '\\u0027',\n '&approx;': '\\u2248',\n '&approxeq;': '\\u224A',\n '&aring': '\\u00E5',\n '&aring;': '\\u00E5',\n '&ascr;': '\\uD835\\uDCB6',\n '&ast;': '\\u002A',\n '&asymp;': '\\u2248',\n '&asympeq;': '\\u224D',\n '&atilde': '\\u00E3',\n '&atilde;': '\\u00E3',\n '&auml': '\\u00E4',\n '&auml;': '\\u00E4',\n '&awconint;': '\\u2233',\n '&awint;': '\\u2A11',\n '&bNot;': '\\u2AED',\n '&backcong;': '\\u224C',\n '&backepsilon;': '\\u03F6',\n '&backprime;': '\\u2035',\n '&backsim;': '\\u223D',\n '&backsimeq;': '\\u22CD',\n '&barvee;': '\\u22BD',\n '&barwed;': '\\u2305',\n '&barwedge;': '\\u2305',\n '&bbrk;': '\\u23B5',\n '&bbrktbrk;': '\\u23B6',\n '&bcong;': '\\u224C',\n '&bcy;': '\\u0431',\n '&bdquo;': '\\u201E',\n '&becaus;': '\\u2235',\n '&because;': '\\u2235',\n '&bemptyv;': '\\u29B0',\n '&bepsi;': '\\u03F6',\n '&bernou;': '\\u212C',\n '&beta;': '\\u03B2',\n '&beth;': '\\u2136',\n '&between;': '\\u226C',\n '&bfr;': '\\uD835\\uDD1F',\n '&bigcap;': '\\u22C2',\n '&bigcirc;': '\\u25EF',\n '&bigcup;': '\\u22C3',\n '&bigodot;': '\\u2A00',\n '&bigoplus;': '\\u2A01',\n '&bigotimes;': '\\u2A02',\n '&bigsqcup;': '\\u2A06',\n '&bigstar;': '\\u2605',\n '&bigtriangledown;': '\\u25BD',\n '&bigtriangleup;': '\\u25B3',\n '&biguplus;': '\\u2A04',\n '&bigvee;': '\\u22C1',\n '&bigwedge;': '\\u22C0',\n '&bkarow;': '\\u290D',\n '&blacklozenge;': '\\u29EB',\n '&blacksquare;': '\\u25AA',\n '&blacktriangle;': '\\u25B4',\n '&blacktriangledown;': '\\u25BE',\n '&blacktriangleleft;': '\\u25C2',\n '&blacktriangleright;': '\\u25B8',\n '&blank;': '\\u2423',\n '&blk12;': '\\u2592',\n '&blk14;': '\\u2591',\n '&blk34;': '\\u2593',\n '&block;': '\\u2588',\n '&bne;': '\\u003D\\u20E5',\n '&bnequiv;': '\\u2261\\u20E5',\n '&bnot;': '\\u2310',\n '&bopf;': '\\uD835\\uDD53',\n '&bot;': '\\u22A5',\n '&bottom;': '\\u22A5',\n '&bowtie;': '\\u22C8',\n '&boxDL;': '\\u2557',\n '&boxDR;': '\\u2554',\n '&boxDl;': '\\u2556',\n '&boxDr;': '\\u2553',\n '&boxH;': '\\u2550',\n '&boxHD;': '\\u2566',\n '&boxHU;': '\\u2569',\n '&boxHd;': '\\u2564',\n '&boxHu;': '\\u2567',\n '&boxUL;': '\\u255D',\n '&boxUR;': '\\u255A',\n '&boxUl;': '\\u255C',\n '&boxUr;': '\\u2559',\n '&boxV;': '\\u2551',\n '&boxVH;': '\\u256C',\n '&boxVL;': '\\u2563',\n '&boxVR;': '\\u2560',\n '&boxVh;': '\\u256B',\n '&boxVl;': '\\u2562',\n '&boxVr;': '\\u255F',\n '&boxbox;': '\\u29C9',\n '&boxdL;': '\\u2555',\n '&boxdR;': '\\u2552',\n '&boxdl;': '\\u2510',\n '&boxdr;': '\\u250C',\n '&boxh;': '\\u2500',\n '&boxhD;': '\\u2565',\n '&boxhU;': '\\u2568',\n '&boxhd;': '\\u252C',\n '&boxhu;': '\\u2534',\n '&boxminus;': '\\u229F',\n '&boxplus;': '\\u229E',\n '&boxtimes;': '\\u22A0',\n '&boxuL;': '\\u255B',\n '&boxuR;': '\\u2558',\n '&boxul;': '\\u2518',\n '&boxur;': '\\u2514',\n '&boxv;': '\\u2502',\n '&boxvH;': '\\u256A',\n '&boxvL;': '\\u2561',\n '&boxvR;': '\\u255E',\n '&boxvh;': '\\u253C',\n '&boxvl;': '\\u2524',\n '&boxvr;': '\\u251C',\n '&bprime;': '\\u2035',\n '&breve;': '\\u02D8',\n '&brvbar': '\\u00A6',\n '&brvbar;': '\\u00A6',\n '&bscr;': '\\uD835\\uDCB7',\n '&bsemi;': '\\u204F',\n '&bsim;': '\\u223D',\n '&bsime;': '\\u22CD',\n '&bsol;': '\\u005C',\n '&bsolb;': '\\u29C5',\n '&bsolhsub;': '\\u27C8',\n '&bull;': '\\u2022',\n '&bullet;': '\\u2022',\n '&bump;': '\\u224E',\n '&bumpE;': '\\u2AAE',\n '&bumpe;': '\\u224F',\n '&bumpeq;': '\\u224F',\n '&cacute;': '\\u0107',\n '&cap;': '\\u2229',\n '&capand;': '\\u2A44',\n '&capbrcup;': '\\u2A49',\n '&capcap;': '\\u2A4B',\n '&capcup;': '\\u2A47',\n '&capdot;': '\\u2A40',\n '&caps;': '\\u2229\\uFE00',\n '&caret;': '\\u2041',\n '&caron;': '\\u02C7',\n '&ccaps;': '\\u2A4D',\n '&ccaron;': '\\u010D',\n '&ccedil': '\\u00E7',\n '&ccedil;': '\\u00E7',\n '&ccirc;': '\\u0109',\n '&ccups;': '\\u2A4C',\n '&ccupssm;': '\\u2A50',\n '&cdot;': '\\u010B',\n '&cedil': '\\u00B8',\n '&cedil;': '\\u00B8',\n '&cemptyv;': '\\u29B2',\n '&cent': '\\u00A2',\n '&cent;': '\\u00A2',\n '&centerdot;': '\\u00B7',\n '&cfr;': '\\uD835\\uDD20',\n '&chcy;': '\\u0447',\n '&check;': '\\u2713',\n '&checkmark;': '\\u2713',\n '&chi;': '\\u03C7',\n '&cir;': '\\u25CB',\n '&cirE;': '\\u29C3',\n '&circ;': '\\u02C6',\n '&circeq;': '\\u2257',\n '&circlearrowleft;': '\\u21BA',\n '&circlearrowright;': '\\u21BB',\n '&circledR;': '\\u00AE',\n '&circledS;': '\\u24C8',\n '&circledast;': '\\u229B',\n '&circledcirc;': '\\u229A',\n '&circleddash;': '\\u229D',\n '&cire;': '\\u2257',\n '&cirfnint;': '\\u2A10',\n '&cirmid;': '\\u2AEF',\n '&cirscir;': '\\u29C2',\n '&clubs;': '\\u2663',\n '&clubsuit;': '\\u2663',\n '&colon;': '\\u003A',\n '&colone;': '\\u2254',\n '&coloneq;': '\\u2254',\n '&comma;': '\\u002C',\n '&commat;': '\\u0040',\n '&comp;': '\\u2201',\n '&compfn;': '\\u2218',\n '&complement;': '\\u2201',\n '&complexes;': '\\u2102',\n '&cong;': '\\u2245',\n '&congdot;': '\\u2A6D',\n '&conint;': '\\u222E',\n '&copf;': '\\uD835\\uDD54',\n '&coprod;': '\\u2210',\n '&copy': '\\u00A9',\n '&copy;': '\\u00A9',\n '&copysr;': '\\u2117',\n '&crarr;': '\\u21B5',\n '&cross;': '\\u2717',\n '&cscr;': '\\uD835\\uDCB8',\n '&csub;': '\\u2ACF',\n '&csube;': '\\u2AD1',\n '&csup;': '\\u2AD0',\n '&csupe;': '\\u2AD2',\n '&ctdot;': '\\u22EF',\n '&cudarrl;': '\\u2938',\n '&cudarrr;': '\\u2935',\n '&cuepr;': '\\u22DE',\n '&cuesc;': '\\u22DF',\n '&cularr;': '\\u21B6',\n '&cularrp;': '\\u293D',\n '&cup;': '\\u222A',\n '&cupbrcap;': '\\u2A48',\n '&cupcap;': '\\u2A46',\n '&cupcup;': '\\u2A4A',\n '&cupdot;': '\\u228D',\n '&cupor;': '\\u2A45',\n '&cups;': '\\u222A\\uFE00',\n '&curarr;': '\\u21B7',\n '&curarrm;': '\\u293C',\n '&curlyeqprec;': '\\u22DE',\n '&curlyeqsucc;': '\\u22DF',\n '&curlyvee;': '\\u22CE',\n '&curlywedge;': '\\u22CF',\n '&curren': '\\u00A4',\n '&curren;': '\\u00A4',\n '&curvearrowleft;': '\\u21B6',\n '&curvearrowright;': '\\u21B7',\n '&cuvee;': '\\u22CE',\n '&cuwed;': '\\u22CF',\n '&cwconint;': '\\u2232',\n '&cwint;': '\\u2231',\n '&cylcty;': '\\u232D',\n '&dArr;': '\\u21D3',\n '&dHar;': '\\u2965',\n '&dagger;': '\\u2020',\n '&daleth;': '\\u2138',\n '&darr;': '\\u2193',\n '&dash;': '\\u2010',\n '&dashv;': '\\u22A3',\n '&dbkarow;': '\\u290F',\n '&dblac;': '\\u02DD',\n '&dcaron;': '\\u010F',\n '&dcy;': '\\u0434',\n '&dd;': '\\u2146',\n '&ddagger;': '\\u2021',\n '&ddarr;': '\\u21CA',\n '&ddotseq;': '\\u2A77',\n '&deg': '\\u00B0',\n '&deg;': '\\u00B0',\n '&delta;': '\\u03B4',\n '&demptyv;': '\\u29B1',\n '&dfisht;': '\\u297F',\n '&dfr;': '\\uD835\\uDD21',\n '&dharl;': '\\u21C3',\n '&dharr;': '\\u21C2',\n '&diam;': '\\u22C4',\n '&diamond;': '\\u22C4',\n '&diamondsuit;': '\\u2666',\n '&diams;': '\\u2666',\n '&die;': '\\u00A8',\n '&digamma;': '\\u03DD',\n '&disin;': '\\u22F2',\n '&div;': '\\u00F7',\n '&divide': '\\u00F7',\n '&divide;': '\\u00F7',\n '&divideontimes;': '\\u22C7',\n '&divonx;': '\\u22C7',\n '&djcy;': '\\u0452',\n '&dlcorn;': '\\u231E',\n '&dlcrop;': '\\u230D',\n '&dollar;': '\\u0024',\n '&dopf;': '\\uD835\\uDD55',\n '&dot;': '\\u02D9',\n '&doteq;': '\\u2250',\n '&doteqdot;': '\\u2251',\n '&dotminus;': '\\u2238',\n '&dotplus;': '\\u2214',\n '&dotsquare;': '\\u22A1',\n '&doublebarwedge;': '\\u2306',\n '&downarrow;': '\\u2193',\n '&downdownarrows;': '\\u21CA',\n '&downharpoonleft;': '\\u21C3',\n '&downharpoonright;': '\\u21C2',\n '&drbkarow;': '\\u2910',\n '&drcorn;': '\\u231F',\n '&drcrop;': '\\u230C',\n '&dscr;': '\\uD835\\uDCB9',\n '&dscy;': '\\u0455',\n '&dsol;': '\\u29F6',\n '&dstrok;': '\\u0111',\n '&dtdot;': '\\u22F1',\n '&dtri;': '\\u25BF',\n '&dtrif;': '\\u25BE',\n '&duarr;': '\\u21F5',\n '&duhar;': '\\u296F',\n '&dwangle;': '\\u29A6',\n '&dzcy;': '\\u045F',\n '&dzigrarr;': '\\u27FF',\n '&eDDot;': '\\u2A77',\n '&eDot;': '\\u2251',\n '&eacute': '\\u00E9',\n '&eacute;': '\\u00E9',\n '&easter;': '\\u2A6E',\n '&ecaron;': '\\u011B',\n '&ecir;': '\\u2256',\n '&ecirc': '\\u00EA',\n '&ecirc;': '\\u00EA',\n '&ecolon;': '\\u2255',\n '&ecy;': '\\u044D',\n '&edot;': '\\u0117',\n '&ee;': '\\u2147',\n '&efDot;': '\\u2252',\n '&efr;': '\\uD835\\uDD22',\n '&eg;': '\\u2A9A',\n '&egrave': '\\u00E8',\n '&egrave;': '\\u00E8',\n '&egs;': '\\u2A96',\n '&egsdot;': '\\u2A98',\n '&el;': '\\u2A99',\n '&elinters;': '\\u23E7',\n '&ell;': '\\u2113',\n '&els;': '\\u2A95',\n '&elsdot;': '\\u2A97',\n '&emacr;': '\\u0113',\n '&empty;': '\\u2205',\n '&emptyset;': '\\u2205',\n '&emptyv;': '\\u2205',\n '&emsp13;': '\\u2004',\n '&emsp14;': '\\u2005',\n '&emsp;': '\\u2003',\n '&eng;': '\\u014B',\n '&ensp;': '\\u2002',\n '&eogon;': '\\u0119',\n '&eopf;': '\\uD835\\uDD56',\n '&epar;': '\\u22D5',\n '&eparsl;': '\\u29E3',\n '&eplus;': '\\u2A71',\n '&epsi;': '\\u03B5',\n '&epsilon;': '\\u03B5',\n '&epsiv;': '\\u03F5',\n '&eqcirc;': '\\u2256',\n '&eqcolon;': '\\u2255',\n '&eqsim;': '\\u2242',\n '&eqslantgtr;': '\\u2A96',\n '&eqslantless;': '\\u2A95',\n '&equals;': '\\u003D',\n '&equest;': '\\u225F',\n '&equiv;': '\\u2261',\n '&equivDD;': '\\u2A78',\n '&eqvparsl;': '\\u29E5',\n '&erDot;': '\\u2253',\n '&erarr;': '\\u2971',\n '&escr;': '\\u212F',\n '&esdot;': '\\u2250',\n '&esim;': '\\u2242',\n '&eta;': '\\u03B7',\n '&eth': '\\u00F0',\n '&eth;': '\\u00F0',\n '&euml': '\\u00EB',\n '&euml;': '\\u00EB',\n '&euro;': '\\u20AC',\n '&excl;': '\\u0021',\n '&exist;': '\\u2203',\n '&expectation;': '\\u2130',\n '&exponentiale;': '\\u2147',\n '&fallingdotseq;': '\\u2252',\n '&fcy;': '\\u0444',\n '&female;': '\\u2640',\n '&ffilig;': '\\uFB03',\n '&fflig;': '\\uFB00',\n '&ffllig;': '\\uFB04',\n '&ffr;': '\\uD835\\uDD23',\n '&filig;': '\\uFB01',\n '&fjlig;': '\\u0066\\u006A',\n '&flat;': '\\u266D',\n '&fllig;': '\\uFB02',\n '&fltns;': '\\u25B1',\n '&fnof;': '\\u0192',\n '&fopf;': '\\uD835\\uDD57',\n '&forall;': '\\u2200',\n '&fork;': '\\u22D4',\n '&forkv;': '\\u2AD9',\n '&fpartint;': '\\u2A0D',\n '&frac12': '\\u00BD',\n '&frac12;': '\\u00BD',\n '&frac13;': '\\u2153',\n '&frac14': '\\u00BC',\n '&frac14;': '\\u00BC',\n '&frac15;': '\\u2155',\n '&frac16;': '\\u2159',\n '&frac18;': '\\u215B',\n '&frac23;': '\\u2154',\n '&frac25;': '\\u2156',\n '&frac34': '\\u00BE',\n '&frac34;': '\\u00BE',\n '&frac35;': '\\u2157',\n '&frac38;': '\\u215C',\n '&frac45;': '\\u2158',\n '&frac56;': '\\u215A',\n '&frac58;': '\\u215D',\n '&frac78;': '\\u215E',\n '&frasl;': '\\u2044',\n '&frown;': '\\u2322',\n '&fscr;': '\\uD835\\uDCBB',\n '&gE;': '\\u2267',\n '&gEl;': '\\u2A8C',\n '&gacute;': '\\u01F5',\n '&gamma;': '\\u03B3',\n '&gammad;': '\\u03DD',\n '&gap;': '\\u2A86',\n '&gbreve;': '\\u011F',\n '&gcirc;': '\\u011D',\n '&gcy;': '\\u0433',\n '&gdot;': '\\u0121',\n '&ge;': '\\u2265',\n '&gel;': '\\u22DB',\n '&geq;': '\\u2265',\n '&geqq;': '\\u2267',\n '&geqslant;': '\\u2A7E',\n '&ges;': '\\u2A7E',\n '&gescc;': '\\u2AA9',\n '&gesdot;': '\\u2A80',\n '&gesdoto;': '\\u2A82',\n '&gesdotol;': '\\u2A84',\n '&gesl;': '\\u22DB\\uFE00',\n '&gesles;': '\\u2A94',\n '&gfr;': '\\uD835\\uDD24',\n '&gg;': '\\u226B',\n '&ggg;': '\\u22D9',\n '&gimel;': '\\u2137',\n '&gjcy;': '\\u0453',\n '&gl;': '\\u2277',\n '&glE;': '\\u2A92',\n '&gla;': '\\u2AA5',\n '&glj;': '\\u2AA4',\n '&gnE;': '\\u2269',\n '&gnap;': '\\u2A8A',\n '&gnapprox;': '\\u2A8A',\n '&gne;': '\\u2A88',\n '&gneq;': '\\u2A88',\n '&gneqq;': '\\u2269',\n '&gnsim;': '\\u22E7',\n '&gopf;': '\\uD835\\uDD58',\n '&grave;': '\\u0060',\n '&gscr;': '\\u210A',\n '&gsim;': '\\u2273',\n '&gsime;': '\\u2A8E',\n '&gsiml;': '\\u2A90',\n '&gt': '\\u003E',\n '&gt;': '\\u003E',\n '&gtcc;': '\\u2AA7',\n '&gtcir;': '\\u2A7A',\n '&gtdot;': '\\u22D7',\n '&gtlPar;': '\\u2995',\n '&gtquest;': '\\u2A7C',\n '&gtrapprox;': '\\u2A86',\n '&gtrarr;': '\\u2978',\n '&gtrdot;': '\\u22D7',\n '&gtreqless;': '\\u22DB',\n '&gtreqqless;': '\\u2A8C',\n '&gtrless;': '\\u2277',\n '&gtrsim;': '\\u2273',\n '&gvertneqq;': '\\u2269\\uFE00',\n '&gvnE;': '\\u2269\\uFE00',\n '&hArr;': '\\u21D4',\n '&hairsp;': '\\u200A',\n '&half;': '\\u00BD',\n '&hamilt;': '\\u210B',\n '&hardcy;': '\\u044A',\n '&harr;': '\\u2194',\n '&harrcir;': '\\u2948',\n '&harrw;': '\\u21AD',\n '&hbar;': '\\u210F',\n '&hcirc;': '\\u0125',\n '&hearts;': '\\u2665',\n '&heartsuit;': '\\u2665',\n '&hellip;': '\\u2026',\n '&hercon;': '\\u22B9',\n '&hfr;': '\\uD835\\uDD25',\n '&hksearow;': '\\u2925',\n '&hkswarow;': '\\u2926',\n '&hoarr;': '\\u21FF',\n '&homtht;': '\\u223B',\n '&hookleftarrow;': '\\u21A9',\n '&hookrightarrow;': '\\u21AA',\n '&hopf;': '\\uD835\\uDD59',\n '&horbar;': '\\u2015',\n '&hscr;': '\\uD835\\uDCBD',\n '&hslash;': '\\u210F',\n '&hstrok;': '\\u0127',\n '&hybull;': '\\u2043',\n '&hyphen;': '\\u2010',\n '&iacute': '\\u00ED',\n '&iacute;': '\\u00ED',\n '&ic;': '\\u2063',\n '&icirc': '\\u00EE',\n '&icirc;': '\\u00EE',\n '&icy;': '\\u0438',\n '&iecy;': '\\u0435',\n '&iexcl': '\\u00A1',\n '&iexcl;': '\\u00A1',\n '&iff;': '\\u21D4',\n '&ifr;': '\\uD835\\uDD26',\n '&igrave': '\\u00EC',\n '&igrave;': '\\u00EC',\n '&ii;': '\\u2148',\n '&iiiint;': '\\u2A0C',\n '&iiint;': '\\u222D',\n '&iinfin;': '\\u29DC',\n '&iiota;': '\\u2129',\n '&ijlig;': '\\u0133',\n '&imacr;': '\\u012B',\n '&image;': '\\u2111',\n '&imagline;': '\\u2110',\n '&imagpart;': '\\u2111',\n '&imath;': '\\u0131',\n '&imof;': '\\u22B7',\n '&imped;': '\\u01B5',\n '&in;': '\\u2208',\n '&incare;': '\\u2105',\n '&infin;': '\\u221E',\n '&infintie;': '\\u29DD',\n '&inodot;': '\\u0131',\n '&int;': '\\u222B',\n '&intcal;': '\\u22BA',\n '&integers;': '\\u2124',\n '&intercal;': '\\u22BA',\n '&intlarhk;': '\\u2A17',\n '&intprod;': '\\u2A3C',\n '&iocy;': '\\u0451',\n '&iogon;': '\\u012F',\n '&iopf;': '\\uD835\\uDD5A',\n '&iota;': '\\u03B9',\n '&iprod;': '\\u2A3C',\n '&iquest': '\\u00BF',\n '&iquest;': '\\u00BF',\n '&iscr;': '\\uD835\\uDCBE',\n '&isin;': '\\u2208',\n '&isinE;': '\\u22F9',\n '&isindot;': '\\u22F5',\n '&isins;': '\\u22F4',\n '&isinsv;': '\\u22F3',\n '&isinv;': '\\u2208',\n '&it;': '\\u2062',\n '&itilde;': '\\u0129',\n '&iukcy;': '\\u0456',\n '&iuml': '\\u00EF',\n '&iuml;': '\\u00EF',\n '&jcirc;': '\\u0135',\n '&jcy;': '\\u0439',\n '&jfr;': '\\uD835\\uDD27',\n '&jmath;': '\\u0237',\n '&jopf;': '\\uD835\\uDD5B',\n '&jscr;': '\\uD835\\uDCBF',\n '&jsercy;': '\\u0458',\n '&jukcy;': '\\u0454',\n '&kappa;': '\\u03BA',\n '&kappav;': '\\u03F0',\n '&kcedil;': '\\u0137',\n '&kcy;': '\\u043A',\n '&kfr;': '\\uD835\\uDD28',\n '&kgreen;': '\\u0138',\n '&khcy;': '\\u0445',\n '&kjcy;': '\\u045C',\n '&kopf;': '\\uD835\\uDD5C',\n '&kscr;': '\\uD835\\uDCC0',\n '&lAarr;': '\\u21DA',\n '&lArr;': '\\u21D0',\n '&lAtail;': '\\u291B',\n '&lBarr;': '\\u290E',\n '&lE;': '\\u2266',\n '&lEg;': '\\u2A8B',\n '&lHar;': '\\u2962',\n '&lacute;': '\\u013A',\n '&laemptyv;': '\\u29B4',\n '&lagran;': '\\u2112',\n '&lambda;': '\\u03BB',\n '&lang;': '\\u27E8',\n '&langd;': '\\u2991',\n '&langle;': '\\u27E8',\n '&lap;': '\\u2A85',\n '&laquo': '\\u00AB',\n '&laquo;': '\\u00AB',\n '&larr;': '\\u2190',\n '&larrb;': '\\u21E4',\n '&larrbfs;': '\\u291F',\n '&larrfs;': '\\u291D',\n '&larrhk;': '\\u21A9',\n '&larrlp;': '\\u21AB',\n '&larrpl;': '\\u2939',\n '&larrsim;': '\\u2973',\n '&larrtl;': '\\u21A2',\n '&lat;': '\\u2AAB',\n '&latail;': '\\u2919',\n '&late;': '\\u2AAD',\n '&lates;': '\\u2AAD\\uFE00',\n '&lbarr;': '\\u290C',\n '&lbbrk;': '\\u2772',\n '&lbrace;': '\\u007B',\n '&lbrack;': '\\u005B',\n '&lbrke;': '\\u298B',\n '&lbrksld;': '\\u298F',\n '&lbrkslu;': '\\u298D',\n '&lcaron;': '\\u013E',\n '&lcedil;': '\\u013C',\n '&lceil;': '\\u2308',\n '&lcub;': '\\u007B',\n '&lcy;': '\\u043B',\n '&ldca;': '\\u2936',\n '&ldquo;': '\\u201C',\n '&ldquor;': '\\u201E',\n '&ldrdhar;': '\\u2967',\n '&ldrushar;': '\\u294B',\n '&ldsh;': '\\u21B2',\n '&le;': '\\u2264',\n '&leftarrow;': '\\u2190',\n '&leftarrowtail;': '\\u21A2',\n '&leftharpoondown;': '\\u21BD',\n '&leftharpoonup;': '\\u21BC',\n '&leftleftarrows;': '\\u21C7',\n '&leftrightarrow;': '\\u2194',\n '&leftrightarrows;': '\\u21C6',\n '&leftrightharpoons;': '\\u21CB',\n '&leftrightsquigarrow;': '\\u21AD',\n '&leftthreetimes;': '\\u22CB',\n '&leg;': '\\u22DA',\n '&leq;': '\\u2264',\n '&leqq;': '\\u2266',\n '&leqslant;': '\\u2A7D',\n '&les;': '\\u2A7D',\n '&lescc;': '\\u2AA8',\n '&lesdot;': '\\u2A7F',\n '&lesdoto;': '\\u2A81',\n '&lesdotor;': '\\u2A83',\n '&lesg;': '\\u22DA\\uFE00',\n '&lesges;': '\\u2A93',\n '&lessapprox;': '\\u2A85',\n '&lessdot;': '\\u22D6',\n '&lesseqgtr;': '\\u22DA',\n '&lesseqqgtr;': '\\u2A8B',\n '&lessgtr;': '\\u2276',\n '&lesssim;': '\\u2272',\n '&lfisht;': '\\u297C',\n '&lfloor;': '\\u230A',\n '&lfr;': '\\uD835\\uDD29',\n '&lg;': '\\u2276',\n '&lgE;': '\\u2A91',\n '&lhard;': '\\u21BD',\n '&lharu;': '\\u21BC',\n '&lharul;': '\\u296A',\n '&lhblk;': '\\u2584',\n '&ljcy;': '\\u0459',\n '&ll;': '\\u226A',\n '&llarr;': '\\u21C7',\n '&llcorner;': '\\u231E',\n '&llhard;': '\\u296B',\n '&lltri;': '\\u25FA',\n '&lmidot;': '\\u0140',\n '&lmoust;': '\\u23B0',\n '&lmoustache;': '\\u23B0',\n '&lnE;': '\\u2268',\n '&lnap;': '\\u2A89',\n '&lnapprox;': '\\u2A89',\n '&lne;': '\\u2A87',\n '&lneq;': '\\u2A87',\n '&lneqq;': '\\u2268',\n '&lnsim;': '\\u22E6',\n '&loang;': '\\u27EC',\n '&loarr;': '\\u21FD',\n '&lobrk;': '\\u27E6',\n '&longleftarrow;': '\\u27F5',\n '&longleftrightarrow;': '\\u27F7',\n '&longmapsto;': '\\u27FC',\n '&longrightarrow;': '\\u27F6',\n '&looparrowleft;': '\\u21AB',\n '&looparrowright;': '\\u21AC',\n '&lopar;': '\\u2985',\n '&lopf;': '\\uD835\\uDD5D',\n '&loplus;': '\\u2A2D',\n '&lotimes;': '\\u2A34',\n '&lowast;': '\\u2217',\n '&lowbar;': '\\u005F',\n '&loz;': '\\u25CA',\n '&lozenge;': '\\u25CA',\n '&lozf;': '\\u29EB',\n '&lpar;': '\\u0028',\n '&lparlt;': '\\u2993',\n '&lrarr;': '\\u21C6',\n '&lrcorner;': '\\u231F',\n '&lrhar;': '\\u21CB',\n '&lrhard;': '\\u296D',\n '&lrm;': '\\u200E',\n '&lrtri;': '\\u22BF',\n '&lsaquo;': '\\u2039',\n '&lscr;': '\\uD835\\uDCC1',\n '&lsh;': '\\u21B0',\n '&lsim;': '\\u2272',\n '&lsime;': '\\u2A8D',\n '&lsimg;': '\\u2A8F',\n '&lsqb;': '\\u005B',\n '&lsquo;': '\\u2018',\n '&lsquor;': '\\u201A',\n '&lstrok;': '\\u0142',\n '&lt': '\\u003C',\n '&lt;': '\\u003C',\n '&ltcc;': '\\u2AA6',\n '&ltcir;': '\\u2A79',\n '&ltdot;': '\\u22D6',\n '&lthree;': '\\u22CB',\n '&ltimes;': '\\u22C9',\n '&ltlarr;': '\\u2976',\n '&ltquest;': '\\u2A7B',\n '&ltrPar;': '\\u2996',\n '&ltri;': '\\u25C3',\n '&ltrie;': '\\u22B4',\n '&ltrif;': '\\u25C2',\n '&lurdshar;': '\\u294A',\n '&luruhar;': '\\u2966',\n '&lvertneqq;': '\\u2268\\uFE00',\n '&lvnE;': '\\u2268\\uFE00',\n '&mDDot;': '\\u223A',\n '&macr': '\\u00AF',\n '&macr;': '\\u00AF',\n '&male;': '\\u2642',\n '&malt;': '\\u2720',\n '&maltese;': '\\u2720',\n '&map;': '\\u21A6',\n '&mapsto;': '\\u21A6',\n '&mapstodown;': '\\u21A7',\n '&mapstoleft;': '\\u21A4',\n '&mapstoup;': '\\u21A5',\n '&marker;': '\\u25AE',\n '&mcomma;': '\\u2A29',\n '&mcy;': '\\u043C',\n '&mdash;': '\\u2014',\n '&measuredangle;': '\\u2221',\n '&mfr;': '\\uD835\\uDD2A',\n '&mho;': '\\u2127',\n '&micro': '\\u00B5',\n '&micro;': '\\u00B5',\n '&mid;': '\\u2223',\n '&midast;': '\\u002A',\n '&midcir;': '\\u2AF0',\n '&middot': '\\u00B7',\n '&middot;': '\\u00B7',\n '&minus;': '\\u2212',\n '&minusb;': '\\u229F',\n '&minusd;': '\\u2238',\n '&minusdu;': '\\u2A2A',\n '&mlcp;': '\\u2ADB',\n '&mldr;': '\\u2026',\n '&mnplus;': '\\u2213',\n '&models;': '\\u22A7',\n '&mopf;': '\\uD835\\uDD5E',\n '&mp;': '\\u2213',\n '&mscr;': '\\uD835\\uDCC2',\n '&mstpos;': '\\u223E',\n '&mu;': '\\u03BC',\n '&multimap;': '\\u22B8',\n '&mumap;': '\\u22B8',\n '&nGg;': '\\u22D9\\u0338',\n '&nGt;': '\\u226B\\u20D2',\n '&nGtv;': '\\u226B\\u0338',\n '&nLeftarrow;': '\\u21CD',\n '&nLeftrightarrow;': '\\u21CE',\n '&nLl;': '\\u22D8\\u0338',\n '&nLt;': '\\u226A\\u20D2',\n '&nLtv;': '\\u226A\\u0338',\n '&nRightarrow;': '\\u21CF',\n '&nVDash;': '\\u22AF',\n '&nVdash;': '\\u22AE',\n '&nabla;': '\\u2207',\n '&nacute;': '\\u0144',\n '&nang;': '\\u2220\\u20D2',\n '&nap;': '\\u2249',\n '&napE;': '\\u2A70\\u0338',\n '&napid;': '\\u224B\\u0338',\n '&napos;': '\\u0149',\n '&napprox;': '\\u2249',\n '&natur;': '\\u266E',\n '&natural;': '\\u266E',\n '&naturals;': '\\u2115',\n '&nbsp': '\\u00A0',\n '&nbsp;': '\\u00A0',\n '&nbump;': '\\u224E\\u0338',\n '&nbumpe;': '\\u224F\\u0338',\n '&ncap;': '\\u2A43',\n '&ncaron;': '\\u0148',\n '&ncedil;': '\\u0146',\n '&ncong;': '\\u2247',\n '&ncongdot;': '\\u2A6D\\u0338',\n '&ncup;': '\\u2A42',\n '&ncy;': '\\u043D',\n '&ndash;': '\\u2013',\n '&ne;': '\\u2260',\n '&neArr;': '\\u21D7',\n '&nearhk;': '\\u2924',\n '&nearr;': '\\u2197',\n '&nearrow;': '\\u2197',\n '&nedot;': '\\u2250\\u0338',\n '&nequiv;': '\\u2262',\n '&nesear;': '\\u2928',\n '&nesim;': '\\u2242\\u0338',\n '&nexist;': '\\u2204',\n '&nexists;': '\\u2204',\n '&nfr;': '\\uD835\\uDD2B',\n '&ngE;': '\\u2267\\u0338',\n '&nge;': '\\u2271',\n '&ngeq;': '\\u2271',\n '&ngeqq;': '\\u2267\\u0338',\n '&ngeqslant;': '\\u2A7E\\u0338',\n '&nges;': '\\u2A7E\\u0338',\n '&ngsim;': '\\u2275',\n '&ngt;': '\\u226F',\n '&ngtr;': '\\u226F',\n '&nhArr;': '\\u21CE',\n '&nharr;': '\\u21AE',\n '&nhpar;': '\\u2AF2',\n '&ni;': '\\u220B',\n '&nis;': '\\u22FC',\n '&nisd;': '\\u22FA',\n '&niv;': '\\u220B',\n '&njcy;': '\\u045A',\n '&nlArr;': '\\u21CD',\n '&nlE;': '\\u2266\\u0338',\n '&nlarr;': '\\u219A',\n '&nldr;': '\\u2025',\n '&nle;': '\\u2270',\n '&nleftarrow;': '\\u219A',\n '&nleftrightarrow;': '\\u21AE',\n '&nleq;': '\\u2270',\n '&nleqq;': '\\u2266\\u0338',\n '&nleqslant;': '\\u2A7D\\u0338',\n '&nles;': '\\u2A7D\\u0338',\n '&nless;': '\\u226E',\n '&nlsim;': '\\u2274',\n '&nlt;': '\\u226E',\n '&nltri;': '\\u22EA',\n '&nltrie;': '\\u22EC',\n '&nmid;': '\\u2224',\n '&nopf;': '\\uD835\\uDD5F',\n '&not': '\\u00AC',\n '&not;': '\\u00AC',\n '&notin;': '\\u2209',\n '&notinE;': '\\u22F9\\u0338',\n '&notindot;': '\\u22F5\\u0338',\n '&notinva;': '\\u2209',\n '&notinvb;': '\\u22F7',\n '&notinvc;': '\\u22F6',\n '&notni;': '\\u220C',\n '&notniva;': '\\u220C',\n '&notnivb;': '\\u22FE',\n '&notnivc;': '\\u22FD',\n '&npar;': '\\u2226',\n '&nparallel;': '\\u2226',\n '&nparsl;': '\\u2AFD\\u20E5',\n '&npart;': '\\u2202\\u0338',\n '&npolint;': '\\u2A14',\n '&npr;': '\\u2280',\n '&nprcue;': '\\u22E0',\n '&npre;': '\\u2AAF\\u0338',\n '&nprec;': '\\u2280',\n '&npreceq;': '\\u2AAF\\u0338',\n '&nrArr;': '\\u21CF',\n '&nrarr;': '\\u219B',\n '&nrarrc;': '\\u2933\\u0338',\n '&nrarrw;': '\\u219D\\u0338',\n '&nrightarrow;': '\\u219B',\n '&nrtri;': '\\u22EB',\n '&nrtrie;': '\\u22ED',\n '&nsc;': '\\u2281',\n '&nsccue;': '\\u22E1',\n '&nsce;': '\\u2AB0\\u0338',\n '&nscr;': '\\uD835\\uDCC3',\n '&nshortmid;': '\\u2224',\n '&nshortparallel;': '\\u2226',\n '&nsim;': '\\u2241',\n '&nsime;': '\\u2244',\n '&nsimeq;': '\\u2244',\n '&nsmid;': '\\u2224',\n '&nspar;': '\\u2226',\n '&nsqsube;': '\\u22E2',\n '&nsqsupe;': '\\u22E3',\n '&nsub;': '\\u2284',\n '&nsubE;': '\\u2AC5\\u0338',\n '&nsube;': '\\u2288',\n '&nsubset;': '\\u2282\\u20D2',\n '&nsubseteq;': '\\u2288',\n '&nsubseteqq;': '\\u2AC5\\u0338',\n '&nsucc;': '\\u2281',\n '&nsucceq;': '\\u2AB0\\u0338',\n '&nsup;': '\\u2285',\n '&nsupE;': '\\u2AC6\\u0338',\n '&nsupe;': '\\u2289',\n '&nsupset;': '\\u2283\\u20D2',\n '&nsupseteq;': '\\u2289',\n '&nsupseteqq;': '\\u2AC6\\u0338',\n '&ntgl;': '\\u2279',\n '&ntilde': '\\u00F1',\n '&ntilde;': '\\u00F1',\n '&ntlg;': '\\u2278',\n '&ntriangleleft;': '\\u22EA',\n '&ntrianglelefteq;': '\\u22EC',\n '&ntriangleright;': '\\u22EB',\n '&ntrianglerighteq;': '\\u22ED',\n '&nu;': '\\u03BD',\n '&num;': '\\u0023',\n '&numero;': '\\u2116',\n '&numsp;': '\\u2007',\n '&nvDash;': '\\u22AD',\n '&nvHarr;': '\\u2904',\n '&nvap;': '\\u224D\\u20D2',\n '&nvdash;': '\\u22AC',\n '&nvge;': '\\u2265\\u20D2',\n '&nvgt;': '\\u003E\\u20D2',\n '&nvinfin;': '\\u29DE',\n '&nvlArr;': '\\u2902',\n '&nvle;': '\\u2264\\u20D2',\n '&nvlt;': '\\u003C\\u20D2',\n '&nvltrie;': '\\u22B4\\u20D2',\n '&nvrArr;': '\\u2903',\n '&nvrtrie;': '\\u22B5\\u20D2',\n '&nvsim;': '\\u223C\\u20D2',\n '&nwArr;': '\\u21D6',\n '&nwarhk;': '\\u2923',\n '&nwarr;': '\\u2196',\n '&nwarrow;': '\\u2196',\n '&nwnear;': '\\u2927',\n '&oS;': '\\u24C8',\n '&oacute': '\\u00F3',\n '&oacute;': '\\u00F3',\n '&oast;': '\\u229B',\n '&ocir;': '\\u229A',\n '&ocirc': '\\u00F4',\n '&ocirc;': '\\u00F4',\n '&ocy;': '\\u043E',\n '&odash;': '\\u229D',\n '&odblac;': '\\u0151',\n '&odiv;': '\\u2A38',\n '&odot;': '\\u2299',\n '&odsold;': '\\u29BC',\n '&oelig;': '\\u0153',\n '&ofcir;': '\\u29BF',\n '&ofr;': '\\uD835\\uDD2C',\n '&ogon;': '\\u02DB',\n '&ograve': '\\u00F2',\n '&ograve;': '\\u00F2',\n '&ogt;': '\\u29C1',\n '&ohbar;': '\\u29B5',\n '&ohm;': '\\u03A9',\n '&oint;': '\\u222E',\n '&olarr;': '\\u21BA',\n '&olcir;': '\\u29BE',\n '&olcross;': '\\u29BB',\n '&oline;': '\\u203E',\n '&olt;': '\\u29C0',\n '&omacr;': '\\u014D',\n '&omega;': '\\u03C9',\n '&omicron;': '\\u03BF',\n '&omid;': '\\u29B6',\n '&ominus;': '\\u2296',\n '&oopf;': '\\uD835\\uDD60',\n '&opar;': '\\u29B7',\n '&operp;': '\\u29B9',\n '&oplus;': '\\u2295',\n '&or;': '\\u2228',\n '&orarr;': '\\u21BB',\n '&ord;': '\\u2A5D',\n '&order;': '\\u2134',\n '&orderof;': '\\u2134',\n '&ordf': '\\u00AA',\n '&ordf;': '\\u00AA',\n '&ordm': '\\u00BA',\n '&ordm;': '\\u00BA',\n '&origof;': '\\u22B6',\n '&oror;': '\\u2A56',\n '&orslope;': '\\u2A57',\n '&orv;': '\\u2A5B',\n '&oscr;': '\\u2134',\n '&oslash': '\\u00F8',\n '&oslash;': '\\u00F8',\n '&osol;': '\\u2298',\n '&otilde': '\\u00F5',\n '&otilde;': '\\u00F5',\n '&otimes;': '\\u2297',\n '&otimesas;': '\\u2A36',\n '&ouml': '\\u00F6',\n '&ouml;': '\\u00F6',\n '&ovbar;': '\\u233D',\n '&par;': '\\u2225',\n '&para': '\\u00B6',\n '&para;': '\\u00B6',\n '&parallel;': '\\u2225',\n '&parsim;': '\\u2AF3',\n '&parsl;': '\\u2AFD',\n '&part;': '\\u2202',\n '&pcy;': '\\u043F',\n '&percnt;': '\\u0025',\n '&period;': '\\u002E',\n '&permil;': '\\u2030',\n '&perp;': '\\u22A5',\n '&pertenk;': '\\u2031',\n '&pfr;': '\\uD835\\uDD2D',\n '&phi;': '\\u03C6',\n '&phiv;': '\\u03D5',\n '&phmmat;': '\\u2133',\n '&phone;': '\\u260E',\n '&pi;': '\\u03C0',\n '&pitchfork;': '\\u22D4',\n '&piv;': '\\u03D6',\n '&planck;': '\\u210F',\n '&planckh;': '\\u210E',\n '&plankv;': '\\u210F',\n '&plus;': '\\u002B',\n '&plusacir;': '\\u2A23',\n '&plusb;': '\\u229E',\n '&pluscir;': '\\u2A22',\n '&plusdo;': '\\u2214',\n '&plusdu;': '\\u2A25',\n '&pluse;': '\\u2A72',\n '&plusmn': '\\u00B1',\n '&plusmn;': '\\u00B1',\n '&plussim;': '\\u2A26',\n '&plustwo;': '\\u2A27',\n '&pm;': '\\u00B1',\n '&pointint;': '\\u2A15',\n '&popf;': '\\uD835\\uDD61',\n '&pound': '\\u00A3',\n '&pound;': '\\u00A3',\n '&pr;': '\\u227A',\n '&prE;': '\\u2AB3',\n '&prap;': '\\u2AB7',\n '&prcue;': '\\u227C',\n '&pre;': '\\u2AAF',\n '&prec;': '\\u227A',\n '&precapprox;': '\\u2AB7',\n '&preccurlyeq;': '\\u227C',\n '&preceq;': '\\u2AAF',\n '&precnapprox;': '\\u2AB9',\n '&precneqq;': '\\u2AB5',\n '&precnsim;': '\\u22E8',\n '&precsim;': '\\u227E',\n '&prime;': '\\u2032',\n '&primes;': '\\u2119',\n '&prnE;': '\\u2AB5',\n '&prnap;': '\\u2AB9',\n '&prnsim;': '\\u22E8',\n '&prod;': '\\u220F',\n '&profalar;': '\\u232E',\n '&profline;': '\\u2312',\n '&profsurf;': '\\u2313',\n '&prop;': '\\u221D',\n '&propto;': '\\u221D',\n '&prsim;': '\\u227E',\n '&prurel;': '\\u22B0',\n '&pscr;': '\\uD835\\uDCC5',\n '&psi;': '\\u03C8',\n '&puncsp;': '\\u2008',\n '&qfr;': '\\uD835\\uDD2E',\n '&qint;': '\\u2A0C',\n '&qopf;': '\\uD835\\uDD62',\n '&qprime;': '\\u2057',\n '&qscr;': '\\uD835\\uDCC6',\n '&quaternions;': '\\u210D',\n '&quatint;': '\\u2A16',\n '&quest;': '\\u003F',\n '&questeq;': '\\u225F',\n '&quot': '\\u0022',\n '&quot;': '\\u0022',\n '&rAarr;': '\\u21DB',\n '&rArr;': '\\u21D2',\n '&rAtail;': '\\u291C',\n '&rBarr;': '\\u290F',\n '&rHar;': '\\u2964',\n '&race;': '\\u223D\\u0331',\n '&racute;': '\\u0155',\n '&radic;': '\\u221A',\n '&raemptyv;': '\\u29B3',\n '&rang;': '\\u27E9',\n '&rangd;': '\\u2992',\n '&range;': '\\u29A5',\n '&rangle;': '\\u27E9',\n '&raquo': '\\u00BB',\n '&raquo;': '\\u00BB',\n '&rarr;': '\\u2192',\n '&rarrap;': '\\u2975',\n '&rarrb;': '\\u21E5',\n '&rarrbfs;': '\\u2920',\n '&rarrc;': '\\u2933',\n '&rarrfs;': '\\u291E',\n '&rarrhk;': '\\u21AA',\n '&rarrlp;': '\\u21AC',\n '&rarrpl;': '\\u2945',\n '&rarrsim;': '\\u2974',\n '&rarrtl;': '\\u21A3',\n '&rarrw;': '\\u219D',\n '&ratail;': '\\u291A',\n '&ratio;': '\\u2236',\n '&rationals;': '\\u211A',\n '&rbarr;': '\\u290D',\n '&rbbrk;': '\\u2773',\n '&rbrace;': '\\u007D',\n '&rbrack;': '\\u005D',\n '&rbrke;': '\\u298C',\n '&rbrksld;': '\\u298E',\n '&rbrkslu;': '\\u2990',\n '&rcaron;': '\\u0159',\n '&rcedil;': '\\u0157',\n '&rceil;': '\\u2309',\n '&rcub;': '\\u007D',\n '&rcy;': '\\u0440',\n '&rdca;': '\\u2937',\n '&rdldhar;': '\\u2969',\n '&rdquo;': '\\u201D',\n '&rdquor;': '\\u201D',\n '&rdsh;': '\\u21B3',\n '&real;': '\\u211C',\n '&realine;': '\\u211B',\n '&realpart;': '\\u211C',\n '&reals;': '\\u211D',\n '&rect;': '\\u25AD',\n '&reg': '\\u00AE',\n '&reg;': '\\u00AE',\n '&rfisht;': '\\u297D',\n '&rfloor;': '\\u230B',\n '&rfr;': '\\uD835\\uDD2F',\n '&rhard;': '\\u21C1',\n '&rharu;': '\\u21C0',\n '&rharul;': '\\u296C',\n '&rho;': '\\u03C1',\n '&rhov;': '\\u03F1',\n '&rightarrow;': '\\u2192',\n '&rightarrowtail;': '\\u21A3',\n '&rightharpoondown;': '\\u21C1',\n '&rightharpoonup;': '\\u21C0',\n '&rightleftarrows;': '\\u21C4',\n '&rightleftharpoons;': '\\u21CC',\n '&rightrightarrows;': '\\u21C9',\n '&rightsquigarrow;': '\\u219D',\n '&rightthreetimes;': '\\u22CC',\n '&ring;': '\\u02DA',\n '&risingdotseq;': '\\u2253',\n '&rlarr;': '\\u21C4',\n '&rlhar;': '\\u21CC',\n '&rlm;': '\\u200F',\n '&rmoust;': '\\u23B1',\n '&rmoustache;': '\\u23B1',\n '&rnmid;': '\\u2AEE',\n '&roang;': '\\u27ED',\n '&roarr;': '\\u21FE',\n '&robrk;': '\\u27E7',\n '&ropar;': '\\u2986',\n '&ropf;': '\\uD835\\uDD63',\n '&roplus;': '\\u2A2E',\n '&rotimes;': '\\u2A35',\n '&rpar;': '\\u0029',\n '&rpargt;': '\\u2994',\n '&rppolint;': '\\u2A12',\n '&rrarr;': '\\u21C9',\n '&rsaquo;': '\\u203A',\n '&rscr;': '\\uD835\\uDCC7',\n '&rsh;': '\\u21B1',\n '&rsqb;': '\\u005D',\n '&rsquo;': '\\u2019',\n '&rsquor;': '\\u2019',\n '&rthree;': '\\u22CC',\n '&rtimes;': '\\u22CA',\n '&rtri;': '\\u25B9',\n '&rtrie;': '\\u22B5',\n '&rtrif;': '\\u25B8',\n '&rtriltri;': '\\u29CE',\n '&ruluhar;': '\\u2968',\n '&rx;': '\\u211E',\n '&sacute;': '\\u015B',\n '&sbquo;': '\\u201A',\n '&sc;': '\\u227B',\n '&scE;': '\\u2AB4',\n '&scap;': '\\u2AB8',\n '&scaron;': '\\u0161',\n '&sccue;': '\\u227D',\n '&sce;': '\\u2AB0',\n '&scedil;': '\\u015F',\n '&scirc;': '\\u015D',\n '&scnE;': '\\u2AB6',\n '&scnap;': '\\u2ABA',\n '&scnsim;': '\\u22E9',\n '&scpolint;': '\\u2A13',\n '&scsim;': '\\u227F',\n '&scy;': '\\u0441',\n '&sdot;': '\\u22C5',\n '&sdotb;': '\\u22A1',\n '&sdote;': '\\u2A66',\n '&seArr;': '\\u21D8',\n '&searhk;': '\\u2925',\n '&searr;': '\\u2198',\n '&searrow;': '\\u2198',\n '&sect': '\\u00A7',\n '&sect;': '\\u00A7',\n '&semi;': '\\u003B',\n '&seswar;': '\\u2929',\n '&setminus;': '\\u2216',\n '&setmn;': '\\u2216',\n '&sext;': '\\u2736',\n '&sfr;': '\\uD835\\uDD30',\n '&sfrown;': '\\u2322',\n '&sharp;': '\\u266F',\n '&shchcy;': '\\u0449',\n '&shcy;': '\\u0448',\n '&shortmid;': '\\u2223',\n '&shortparallel;': '\\u2225',\n '&shy': '\\u00AD',\n '&shy;': '\\u00AD',\n '&sigma;': '\\u03C3',\n '&sigmaf;': '\\u03C2',\n '&sigmav;': '\\u03C2',\n '&sim;': '\\u223C',\n '&simdot;': '\\u2A6A',\n '&sime;': '\\u2243',\n '&simeq;': '\\u2243',\n '&simg;': '\\u2A9E',\n '&simgE;': '\\u2AA0',\n '&siml;': '\\u2A9D',\n '&simlE;': '\\u2A9F',\n '&simne;': '\\u2246',\n '&simplus;': '\\u2A24',\n '&simrarr;': '\\u2972',\n '&slarr;': '\\u2190',\n '&smallsetminus;': '\\u2216',\n '&smashp;': '\\u2A33',\n '&smeparsl;': '\\u29E4',\n '&smid;': '\\u2223',\n '&smile;': '\\u2323',\n '&smt;': '\\u2AAA',\n '&smte;': '\\u2AAC',\n '&smtes;': '\\u2AAC\\uFE00',\n '&softcy;': '\\u044C',\n '&sol;': '\\u002F',\n '&solb;': '\\u29C4',\n '&solbar;': '\\u233F',\n '&sopf;': '\\uD835\\uDD64',\n '&spades;': '\\u2660',\n '&spadesuit;': '\\u2660',\n '&spar;': '\\u2225',\n '&sqcap;': '\\u2293',\n '&sqcaps;': '\\u2293\\uFE00',\n '&sqcup;': '\\u2294',\n '&sqcups;': '\\u2294\\uFE00',\n '&sqsub;': '\\u228F',\n '&sqsube;': '\\u2291',\n '&sqsubset;': '\\u228F',\n '&sqsubseteq;': '\\u2291',\n '&sqsup;': '\\u2290',\n '&sqsupe;': '\\u2292',\n '&sqsupset;': '\\u2290',\n '&sqsupseteq;': '\\u2292',\n '&squ;': '\\u25A1',\n '&square;': '\\u25A1',\n '&squarf;': '\\u25AA',\n '&squf;': '\\u25AA',\n '&srarr;': '\\u2192',\n '&sscr;': '\\uD835\\uDCC8',\n '&ssetmn;': '\\u2216',\n '&ssmile;': '\\u2323',\n '&sstarf;': '\\u22C6',\n '&star;': '\\u2606',\n '&starf;': '\\u2605',\n '&straightepsilon;': '\\u03F5',\n '&straightphi;': '\\u03D5',\n '&strns;': '\\u00AF',\n '&sub;': '\\u2282',\n '&subE;': '\\u2AC5',\n '&subdot;': '\\u2ABD',\n '&sube;': '\\u2286',\n '&subedot;': '\\u2AC3',\n '&submult;': '\\u2AC1',\n '&subnE;': '\\u2ACB',\n '&subne;': '\\u228A',\n '&subplus;': '\\u2ABF',\n '&subrarr;': '\\u2979',\n '&subset;': '\\u2282',\n '&subseteq;': '\\u2286',\n '&subseteqq;': '\\u2AC5',\n '&subsetneq;': '\\u228A',\n '&subsetneqq;': '\\u2ACB',\n '&subsim;': '\\u2AC7',\n '&subsub;': '\\u2AD5',\n '&subsup;': '\\u2AD3',\n '&succ;': '\\u227B',\n '&succapprox;': '\\u2AB8',\n '&succcurlyeq;': '\\u227D',\n '&succeq;': '\\u2AB0',\n '&succnapprox;': '\\u2ABA',\n '&succneqq;': '\\u2AB6',\n '&succnsim;': '\\u22E9',\n '&succsim;': '\\u227F',\n '&sum;': '\\u2211',\n '&sung;': '\\u266A',\n '&sup1': '\\u00B9',\n '&sup1;': '\\u00B9',\n '&sup2': '\\u00B2',\n '&sup2;': '\\u00B2',\n '&sup3': '\\u00B3',\n '&sup3;': '\\u00B3',\n '&sup;': '\\u2283',\n '&supE;': '\\u2AC6',\n '&supdot;': '\\u2ABE',\n '&supdsub;': '\\u2AD8',\n '&supe;': '\\u2287',\n '&supedot;': '\\u2AC4',\n '&suphsol;': '\\u27C9',\n '&suphsub;': '\\u2AD7',\n '&suplarr;': '\\u297B',\n '&supmult;': '\\u2AC2',\n '&supnE;': '\\u2ACC',\n '&supne;': '\\u228B',\n '&supplus;': '\\u2AC0',\n '&supset;': '\\u2283',\n '&supseteq;': '\\u2287',\n '&supseteqq;': '\\u2AC6',\n '&supsetneq;': '\\u228B',\n '&supsetneqq;': '\\u2ACC',\n '&supsim;': '\\u2AC8',\n '&supsub;': '\\u2AD4',\n '&supsup;': '\\u2AD6',\n '&swArr;': '\\u21D9',\n '&swarhk;': '\\u2926',\n '&swarr;': '\\u2199',\n '&swarrow;': '\\u2199',\n '&swnwar;': '\\u292A',\n '&szlig': '\\u00DF',\n '&szlig;': '\\u00DF',\n '&target;': '\\u2316',\n '&tau;': '\\u03C4',\n '&tbrk;': '\\u23B4',\n '&tcaron;': '\\u0165',\n '&tcedil;': '\\u0163',\n '&tcy;': '\\u0442',\n '&tdot;': '\\u20DB',\n '&telrec;': '\\u2315',\n '&tfr;': '\\uD835\\uDD31',\n '&there4;': '\\u2234',\n '&therefore;': '\\u2234',\n '&theta;': '\\u03B8',\n '&thetasym;': '\\u03D1',\n '&thetav;': '\\u03D1',\n '&thickapprox;': '\\u2248',\n '&thicksim;': '\\u223C',\n '&thinsp;': '\\u2009',\n '&thkap;': '\\u2248',\n '&thksim;': '\\u223C',\n '&thorn': '\\u00FE',\n '&thorn;': '\\u00FE',\n '&tilde;': '\\u02DC',\n '&times': '\\u00D7',\n '&times;': '\\u00D7',\n '&timesb;': '\\u22A0',\n '&timesbar;': '\\u2A31',\n '&timesd;': '\\u2A30',\n '&tint;': '\\u222D',\n '&toea;': '\\u2928',\n '&top;': '\\u22A4',\n '&topbot;': '\\u2336',\n '&topcir;': '\\u2AF1',\n '&topf;': '\\uD835\\uDD65',\n '&topfork;': '\\u2ADA',\n '&tosa;': '\\u2929',\n '&tprime;': '\\u2034',\n '&trade;': '\\u2122',\n '&triangle;': '\\u25B5',\n '&triangledown;': '\\u25BF',\n '&triangleleft;': '\\u25C3',\n '&trianglelefteq;': '\\u22B4',\n '&triangleq;': '\\u225C',\n '&triangleright;': '\\u25B9',\n '&trianglerighteq;': '\\u22B5',\n '&tridot;': '\\u25EC',\n '&trie;': '\\u225C',\n '&triminus;': '\\u2A3A',\n '&triplus;': '\\u2A39',\n '&trisb;': '\\u29CD',\n '&tritime;': '\\u2A3B',\n '&trpezium;': '\\u23E2',\n '&tscr;': '\\uD835\\uDCC9',\n '&tscy;': '\\u0446',\n '&tshcy;': '\\u045B',\n '&tstrok;': '\\u0167',\n '&twixt;': '\\u226C',\n '&twoheadleftarrow;': '\\u219E',\n '&twoheadrightarrow;': '\\u21A0',\n '&uArr;': '\\u21D1',\n '&uHar;': '\\u2963',\n '&uacute': '\\u00FA',\n '&uacute;': '\\u00FA',\n '&uarr;': '\\u2191',\n '&ubrcy;': '\\u045E',\n '&ubreve;': '\\u016D',\n '&ucirc': '\\u00FB',\n '&ucirc;': '\\u00FB',\n '&ucy;': '\\u0443',\n '&udarr;': '\\u21C5',\n '&udblac;': '\\u0171',\n '&udhar;': '\\u296E',\n '&ufisht;': '\\u297E',\n '&ufr;': '\\uD835\\uDD32',\n '&ugrave': '\\u00F9',\n '&ugrave;': '\\u00F9',\n '&uharl;': '\\u21BF',\n '&uharr;': '\\u21BE',\n '&uhblk;': '\\u2580',\n '&ulcorn;': '\\u231C',\n '&ulcorner;': '\\u231C',\n '&ulcrop;': '\\u230F',\n '&ultri;': '\\u25F8',\n '&umacr;': '\\u016B',\n '&uml': '\\u00A8',\n '&uml;': '\\u00A8',\n '&uogon;': '\\u0173',\n '&uopf;': '\\uD835\\uDD66',\n '&uparrow;': '\\u2191',\n '&updownarrow;': '\\u2195',\n '&upharpoonleft;': '\\u21BF',\n '&upharpoonright;': '\\u21BE',\n '&uplus;': '\\u228E',\n '&upsi;': '\\u03C5',\n '&upsih;': '\\u03D2',\n '&upsilon;': '\\u03C5',\n '&upuparrows;': '\\u21C8',\n '&urcorn;': '\\u231D',\n '&urcorner;': '\\u231D',\n '&urcrop;': '\\u230E',\n '&uring;': '\\u016F',\n '&urtri;': '\\u25F9',\n '&uscr;': '\\uD835\\uDCCA',\n '&utdot;': '\\u22F0',\n '&utilde;': '\\u0169',\n '&utri;': '\\u25B5',\n '&utrif;': '\\u25B4',\n '&uuarr;': '\\u21C8',\n '&uuml': '\\u00FC',\n '&uuml;': '\\u00FC',\n '&uwangle;': '\\u29A7',\n '&vArr;': '\\u21D5',\n '&vBar;': '\\u2AE8',\n '&vBarv;': '\\u2AE9',\n '&vDash;': '\\u22A8',\n '&vangrt;': '\\u299C',\n '&varepsilon;': '\\u03F5',\n '&varkappa;': '\\u03F0',\n '&varnothing;': '\\u2205',\n '&varphi;': '\\u03D5',\n '&varpi;': '\\u03D6',\n '&varpropto;': '\\u221D',\n '&varr;': '\\u2195',\n '&varrho;': '\\u03F1',\n '&varsigma;': '\\u03C2',\n '&varsubsetneq;': '\\u228A\\uFE00',\n '&varsubsetneqq;': '\\u2ACB\\uFE00',\n '&varsupsetneq;': '\\u228B\\uFE00',\n '&varsupsetneqq;': '\\u2ACC\\uFE00',\n '&vartheta;': '\\u03D1',\n '&vartriangleleft;': '\\u22B2',\n '&vartriangleright;': '\\u22B3',\n '&vcy;': '\\u0432',\n '&vdash;': '\\u22A2',\n '&vee;': '\\u2228',\n '&veebar;': '\\u22BB',\n '&veeeq;': '\\u225A',\n '&vellip;': '\\u22EE',\n '&verbar;': '\\u007C',\n '&vert;': '\\u007C',\n '&vfr;': '\\uD835\\uDD33',\n '&vltri;': '\\u22B2',\n '&vnsub;': '\\u2282\\u20D2',\n '&vnsup;': '\\u2283\\u20D2',\n '&vopf;': '\\uD835\\uDD67',\n '&vprop;': '\\u221D',\n '&vrtri;': '\\u22B3',\n '&vscr;': '\\uD835\\uDCCB',\n '&vsubnE;': '\\u2ACB\\uFE00',\n '&vsubne;': '\\u228A\\uFE00',\n '&vsupnE;': '\\u2ACC\\uFE00',\n '&vsupne;': '\\u228B\\uFE00',\n '&vzigzag;': '\\u299A',\n '&wcirc;': '\\u0175',\n '&wedbar;': '\\u2A5F',\n '&wedge;': '\\u2227',\n '&wedgeq;': '\\u2259',\n '&weierp;': '\\u2118',\n '&wfr;': '\\uD835\\uDD34',\n '&wopf;': '\\uD835\\uDD68',\n '&wp;': '\\u2118',\n '&wr;': '\\u2240',\n '&wreath;': '\\u2240',\n '&wscr;': '\\uD835\\uDCCC',\n '&xcap;': '\\u22C2',\n '&xcirc;': '\\u25EF',\n '&xcup;': '\\u22C3',\n '&xdtri;': '\\u25BD',\n '&xfr;': '\\uD835\\uDD35',\n '&xhArr;': '\\u27FA',\n '&xharr;': '\\u27F7',\n '&xi;': '\\u03BE',\n '&xlArr;': '\\u27F8',\n '&xlarr;': '\\u27F5',\n '&xmap;': '\\u27FC',\n '&xnis;': '\\u22FB',\n '&xodot;': '\\u2A00',\n '&xopf;': '\\uD835\\uDD69',\n '&xoplus;': '\\u2A01',\n '&xotime;': '\\u2A02',\n '&xrArr;': '\\u27F9',\n '&xrarr;': '\\u27F6',\n '&xscr;': '\\uD835\\uDCCD',\n '&xsqcup;': '\\u2A06',\n '&xuplus;': '\\u2A04',\n '&xutri;': '\\u25B3',\n '&xvee;': '\\u22C1',\n '&xwedge;': '\\u22C0',\n '&yacute': '\\u00FD',\n '&yacute;': '\\u00FD',\n '&yacy;': '\\u044F',\n '&ycirc;': '\\u0177',\n '&ycy;': '\\u044B',\n '&yen': '\\u00A5',\n '&yen;': '\\u00A5',\n '&yfr;': '\\uD835\\uDD36',\n '&yicy;': '\\u0457',\n '&yopf;': '\\uD835\\uDD6A',\n '&yscr;': '\\uD835\\uDCCE',\n '&yucy;': '\\u044E',\n '&yuml': '\\u00FF',\n '&yuml;': '\\u00FF',\n '&zacute;': '\\u017A',\n '&zcaron;': '\\u017E',\n '&zcy;': '\\u0437',\n '&zdot;': '\\u017C',\n '&zeetrf;': '\\u2128',\n '&zeta;': '\\u03B6',\n '&zfr;': '\\uD835\\uDD37',\n '&zhcy;': '\\u0436',\n '&zigrarr;': '\\u21DD',\n '&zopf;': '\\uD835\\uDD6B',\n '&zscr;': '\\uD835\\uDCCF',\n '&zwj;': '\\u200D',\n '&zwnj;': '\\u200C'\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (htmlEntities);\n\n\n//# sourceURL=webpack://postalMime/./src/html-entities.js?");
51
-
52
- /***/ }),
53
-
54
- /***/ "./src/mime-node.js":
55
- /*!**************************!*\
56
- !*** ./src/mime-node.js ***!
57
- \**************************/
58
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
59
-
60
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ MimeNode\n/* harmony export */ });\n/* harmony import */ var _decode_strings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./decode-strings */ \"./src/decode-strings.js\");\n/* harmony import */ var _pass_through_decoder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pass-through-decoder */ \"./src/pass-through-decoder.js\");\n/* harmony import */ var _base64_decoder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base64-decoder */ \"./src/base64-decoder.js\");\n/* harmony import */ var _qp_decoder__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./qp-decoder */ \"./src/qp-decoder.js\");\n\n\n\n\n\nclass MimeNode {\n constructor(opts) {\n opts = opts || {};\n\n this.postalMime = opts.postalMime;\n\n this.root = !!opts.parentNode;\n this.childNodes = [];\n if (opts.parentNode) {\n opts.parentNode.childNodes.push(this);\n }\n\n this.state = 'header';\n\n this.headerLines = [];\n this.decoders = new Map();\n\n this.contentType = {\n value: 'text/plain'\n };\n\n this.contentTransferEncoding = {\n value: '8bit'\n };\n\n this.contentDisposition = {\n value: ''\n };\n\n this.headers = [];\n\n this.contentDecoder = false;\n }\n\n setupContentDecoder(transferEncoding) {\n if (/base64/i.test(transferEncoding)) {\n this.contentDecoder = new _base64_decoder__WEBPACK_IMPORTED_MODULE_2__.default();\n } else if (/quoted-printable/i.test(transferEncoding)) {\n this.contentDecoder = new _qp_decoder__WEBPACK_IMPORTED_MODULE_3__.default({ decoder: (0,_decode_strings__WEBPACK_IMPORTED_MODULE_0__.getDecoder)(this.contentType.parsed.params.charset) });\n } else {\n this.contentDecoder = new _pass_through_decoder__WEBPACK_IMPORTED_MODULE_1__.default();\n }\n }\n\n async finalize() {\n if (this.state === 'finished') {\n return;\n }\n\n if (this.state === 'header') {\n this.processHeaders();\n }\n\n // remove self from boundary listing\n let boundaries = this.postalMime.boundaries;\n for (let i = boundaries.length - 1; i >= 0; i--) {\n let boundary = boundaries[i];\n if (boundary.node === this) {\n boundaries.splice(i, 1);\n break;\n }\n }\n\n await this.finalizeChildNodes();\n\n this.content = this.contentDecoder ? await this.contentDecoder.finalize() : null;\n\n this.state = 'finished';\n }\n\n async finalizeChildNodes() {\n for (let childNode of this.childNodes) {\n await childNode.finalize();\n }\n }\n\n parseStructuredHeader(str) {\n let response = {\n value: false,\n params: {}\n };\n\n let key = false;\n let value = '';\n let stage = 'value';\n\n let quote = false;\n let escaped = false;\n let chr;\n\n for (let i = 0, len = str.length; i < len; i++) {\n chr = str.charAt(i);\n switch (stage) {\n case 'key':\n if (chr === '=') {\n key = value.trim().toLowerCase();\n stage = 'value';\n value = '';\n break;\n }\n value += chr;\n break;\n case 'value':\n if (escaped) {\n value += chr;\n } else if (chr === '\\\\') {\n escaped = true;\n continue;\n } else if (quote && chr === quote) {\n quote = false;\n } else if (!quote && chr === '\"') {\n quote = chr;\n } else if (!quote && chr === ';') {\n if (key === false) {\n response.value = value.trim();\n } else {\n response.params[key] = value.trim();\n }\n stage = 'key';\n value = '';\n } else {\n value += chr;\n }\n escaped = false;\n break;\n }\n }\n\n // finalize remainder\n value = value.trim();\n if (stage === 'value') {\n if (key === false) {\n // default value\n response.value = value;\n } else {\n // subkey value\n response.params[key] = value;\n }\n } else if (value) {\n // treat as key without value, see emptykey:\n // Header-Key: somevalue; key=value; emptykey\n response.params[value.toLowerCase()] = '';\n }\n\n if (response.value) {\n response.value = response.value.toLowerCase();\n }\n\n // convert Parameter Value Continuations into single strings\n (0,_decode_strings__WEBPACK_IMPORTED_MODULE_0__.decodeParameterValueContinuations)(response);\n\n return response;\n }\n\n decodeFlowedText(str, delSp) {\n return (\n str\n .split(/\\r?\\n/)\n // remove soft linebreaks\n // soft linebreaks are added after space symbols\n .reduce((previousValue, currentValue) => {\n if (/ $/.test(previousValue) && !/(^|\\n)-- $/.test(previousValue)) {\n if (delSp) {\n // delsp adds space to text to be able to fold it\n // these spaces can be removed once the text is unfolded\n return previousValue.slice(0, -1) + currentValue;\n } else {\n return previousValue + currentValue;\n }\n } else {\n return previousValue + '\\n' + currentValue;\n }\n })\n // remove whitespace stuffing\n // http://tools.ietf.org/html/rfc3676#section-4.4\n .replace(/^ /gm, '')\n );\n }\n\n getTextContent() {\n if (!this.content) {\n return '';\n }\n\n let str = (0,_decode_strings__WEBPACK_IMPORTED_MODULE_0__.getDecoder)(this.contentType.parsed.params.charset).decode(this.content);\n\n if (/^flowed$/i.test(this.contentType.parsed.params.format)) {\n str = this.decodeFlowedText(str, /^yes$/i.test(this.contentType.parsed.params.delsp));\n }\n\n return str;\n }\n\n processHeaders() {\n for (let i = this.headerLines.length - 1; i >= 0; i--) {\n let line = this.headerLines[i];\n if (i && /^\\s/.test(line)) {\n this.headerLines[i - 1] += '\\n' + line;\n this.headerLines.splice(i, 1);\n } else {\n // remove folding and extra WS\n line = line.replace(/\\s+/g, ' ');\n let sep = line.indexOf(':');\n let key = sep < 0 ? line.trim() : line.substr(0, sep).trim();\n let value = sep < 0 ? '' : line.substr(sep + 1).trim();\n this.headers.push({ key: key.toLowerCase(), originalKey: key, value });\n\n switch (key.toLowerCase()) {\n case 'content-type':\n this.contentType = { value, parsed: {} };\n break;\n case 'content-transfer-encoding':\n this.contentTransferEncoding = { value, parsed: {} };\n break;\n case 'content-disposition':\n this.contentDisposition = { value, parsed: {} };\n break;\n case 'content-id':\n this.contentId = value;\n break;\n }\n }\n }\n\n this.contentType.parsed = this.parseStructuredHeader(this.contentType.value);\n this.contentType.multipart = /^multipart\\//i.test(this.contentType.parsed.value)\n ? this.contentType.parsed.value.substr(this.contentType.parsed.value.indexOf('/') + 1)\n : false;\n\n if (this.contentType.multipart && this.contentType.parsed.params.boundary) {\n // add self to boundary terminator listing\n this.postalMime.boundaries.push({\n value: _decode_strings__WEBPACK_IMPORTED_MODULE_0__.textEncoder.encode(this.contentType.parsed.params.boundary),\n node: this\n });\n }\n\n this.contentDisposition.parsed = this.parseStructuredHeader(this.contentDisposition.value);\n\n this.contentTransferEncoding.encoding = this.contentTransferEncoding.value\n .toLowerCase()\n .split(/[^\\w-]/)\n .shift();\n\n this.setupContentDecoder(this.contentTransferEncoding.encoding);\n }\n\n feed(line) {\n switch (this.state) {\n case 'header':\n if (!line.length) {\n this.state = 'body';\n return this.processHeaders();\n }\n this.headerLines.push((0,_decode_strings__WEBPACK_IMPORTED_MODULE_0__.getDecoder)().decode(line));\n break;\n case 'body': {\n // add line to body\n this.contentDecoder.update(line);\n }\n }\n }\n}\n\n\n//# sourceURL=webpack://postalMime/./src/mime-node.js?");
61
-
62
- /***/ }),
63
-
64
- /***/ "./src/pass-through-decoder.js":
65
- /*!*************************************!*\
66
- !*** ./src/pass-through-decoder.js ***!
67
- \*************************************/
68
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
69
-
70
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ PassThroughDecoder\n/* harmony export */ });\n/* harmony import */ var _decode_strings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./decode-strings */ \"./src/decode-strings.js\");\n\n\nclass PassThroughDecoder {\n constructor() {\n this.chunks = [];\n }\n\n update(line) {\n this.chunks.push(line);\n this.chunks.push('\\n');\n }\n\n finalize() {\n // convert an array of arraybuffers into a blob and then back into a single arraybuffer\n return (0,_decode_strings__WEBPACK_IMPORTED_MODULE_0__.blobToArrayBuffer)(new Blob(this.chunks, { type: 'application/octet-stream' }));\n }\n}\n\n\n//# sourceURL=webpack://postalMime/./src/pass-through-decoder.js?");
71
-
72
- /***/ }),
73
-
74
- /***/ "./src/postal-mime.js":
75
- /*!****************************!*\
76
- !*** ./src/postal-mime.js ***!
77
- \****************************/
78
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
79
-
80
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ PostalMime\n/* harmony export */ });\n/* harmony import */ var _mime_node__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mime-node */ \"./src/mime-node.js\");\n/* harmony import */ var _text_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./text-format */ \"./src/text-format.js\");\n/* harmony import */ var _address_parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./address-parser */ \"./src/address-parser.js\");\n/* harmony import */ var _decode_strings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./decode-strings */ \"./src/decode-strings.js\");\n\n\n\n\n\nclass PostalMime {\n constructor() {\n this.root = this.currentNode = new _mime_node__WEBPACK_IMPORTED_MODULE_0__.default({\n postalMime: this\n });\n this.boundaries = [];\n\n this.textContent = {};\n this.attachments = [];\n\n this.started = false;\n }\n\n async finalize() {\n // close all pending nodes\n await this.root.finalize();\n }\n\n async processLine(line, isFinal) {\n let boundaries = this.boundaries;\n\n // check if this is a mime boundary\n if (boundaries.length && line.length > 2 && line[0] === 0x2d && line[1] === 0x2d) {\n // could be a boundary marker\n for (let i = boundaries.length - 1; i >= 0; i--) {\n let boundary = boundaries[i];\n\n if (line.length !== boundary.value.length + 2 && line.length !== boundary.value.length + 4) {\n continue;\n }\n\n let isTerminator = line.length === boundary.value.length + 4;\n\n if (isTerminator && (line[line.length - 2] !== 0x2d || line[line.length - 1] !== 0x2d)) {\n continue;\n }\n\n let boudaryMatches = true;\n for (let i = 0; i < boundary.value.length; i++) {\n if (line[i + 2] !== boundary.value[i]) {\n boudaryMatches = false;\n break;\n }\n }\n if (!boudaryMatches) {\n continue;\n }\n\n if (isTerminator) {\n await boundary.node.finalize();\n\n this.currentNode = boundary.node.parentNode || this.root;\n } else {\n // finalize any open child nodes (should be just one though)\n await boundary.node.finalizeChildNodes();\n\n this.currentNode = new _mime_node__WEBPACK_IMPORTED_MODULE_0__.default({\n postalMime: this,\n parentNode: boundary.node\n });\n }\n\n if (isFinal) {\n return this.finalize();\n }\n\n return;\n }\n }\n\n this.currentNode.feed(line);\n\n if (isFinal) {\n return this.finalize();\n }\n }\n\n readLine() {\n let startPos = this.readPos;\n let endPos = this.readPos;\n\n let res = () => {\n return {\n bytes: new Uint8Array(this.buf, startPos, endPos - startPos),\n done: this.readPos >= this.av.length\n };\n };\n\n while (this.readPos < this.av.length) {\n const c = this.av[this.readPos++];\n\n if (c !== 0x0d && c !== 0x0a) {\n endPos = this.readPos;\n }\n\n if (c === 0x0a) {\n return res();\n }\n }\n\n return res();\n }\n\n async processNodeTree() {\n // get text nodes\n\n let textContent = {};\n\n let textTypes = new Set();\n let textMap = (this.textMap = new Map());\n\n let walk = async (node, alternative, related) => {\n alternative = alternative || false;\n related = related || false;\n\n if (!node.contentType.multipart) {\n // regular node\n\n // is it inline message/rfc822\n if (node.contentType.parsed.value === 'message/rfc822' && node.contentDisposition.parsed.value === 'inline' && node.content) {\n const subParser = new PostalMime();\n node.subMessage = await subParser.parse(node.content);\n\n if (!textMap.has(node)) {\n textMap.set(node, {});\n }\n\n let textEntry = textMap.get(node);\n\n if (node.subMessage.text) {\n textEntry.plain = textEntry.plain || [];\n textEntry.plain.push({ type: 'subMessage', value: node.subMessage });\n textTypes.add('plain');\n }\n\n if (node.subMessage.html) {\n textEntry.html = textEntry.html || [];\n textEntry.html.push({ type: 'subMessage', value: node.subMessage });\n textTypes.add('html');\n }\n\n if (subParser.textMap) {\n subParser.textMap.forEach((subTextEntry, subTextNode) => {\n textMap.set(subTextNode, subTextEntry);\n });\n }\n\n for (let attachment of node.subMessage.attachments || []) {\n this.attachments.push(attachment);\n }\n }\n\n // is it text?\n else if (/^text\\//i.test(node.contentType.parsed.value) && node.contentDisposition.parsed.value !== 'attachment') {\n let textType = node.contentType.parsed.value.substr(node.contentType.parsed.value.indexOf('/') + 1);\n\n let selectorNode = alternative || node;\n if (!textMap.has(selectorNode)) {\n textMap.set(selectorNode, {});\n }\n\n let textEntry = textMap.get(selectorNode);\n textEntry[textType] = textEntry[textType] || [];\n textEntry[textType].push({ type: 'text', value: node.getTextContent() });\n textTypes.add(textType);\n }\n\n // is it an attachment\n else if (node.content) {\n let filename = node.contentDisposition.parsed.params.filename || node.contentType.parsed.params.name || null;\n let attachment = {\n filename: (0,_decode_strings__WEBPACK_IMPORTED_MODULE_3__.decodeWords)(filename),\n mimeType: node.contentType.parsed.value,\n disposition: node.contentDisposition.parsed.value || null\n };\n\n if (related && node.contentId) {\n attachment.related = true;\n }\n\n if (node.contentId) {\n attachment.contentId = node.contentId;\n }\n\n attachment.content = node.content;\n\n this.attachments.push(attachment);\n }\n } else if (node.contentType.multipart === 'alternative') {\n alternative = node;\n } else if (node.contentType.multipart === 'related') {\n related = node;\n }\n\n for (let childNode of node.childNodes) {\n await walk(childNode, alternative, related);\n }\n };\n\n await walk(this.root, false, []);\n\n textMap.forEach(mapEntry => {\n textTypes.forEach(textType => {\n if (!textContent[textType]) {\n textContent[textType] = [];\n }\n\n if (mapEntry[textType]) {\n mapEntry[textType].forEach(textEntry => {\n switch (textEntry.type) {\n case 'text':\n textContent[textType].push(textEntry.value);\n break;\n case 'subMessage':\n {\n switch (textType) {\n case 'html':\n textContent[textType].push((0,_text_format__WEBPACK_IMPORTED_MODULE_1__.formatHtmlHeader)(textEntry.value));\n break;\n case 'plain':\n textContent[textType].push((0,_text_format__WEBPACK_IMPORTED_MODULE_1__.formatTextHeader)(textEntry.value));\n break;\n }\n }\n break;\n }\n });\n } else {\n let alternativeType;\n switch (textType) {\n case 'html':\n alternativeType = 'plain';\n break;\n case 'plain':\n alternativeType = 'html';\n break;\n }\n\n (mapEntry[alternativeType] || []).forEach(textEntry => {\n switch (textEntry.type) {\n case 'text':\n switch (textType) {\n case 'html':\n textContent[textType].push((0,_text_format__WEBPACK_IMPORTED_MODULE_1__.textToHtml)(textEntry.value));\n break;\n case 'plain':\n textContent[textType].push((0,_text_format__WEBPACK_IMPORTED_MODULE_1__.htmlToText)(textEntry.value));\n break;\n }\n break;\n\n case 'subMessage':\n {\n switch (textType) {\n case 'html':\n textContent[textType].push((0,_text_format__WEBPACK_IMPORTED_MODULE_1__.formatHtmlHeader)(textEntry.value));\n break;\n case 'plain':\n textContent[textType].push((0,_text_format__WEBPACK_IMPORTED_MODULE_1__.formatTextHeader)(textEntry.value));\n break;\n }\n }\n break;\n }\n });\n }\n });\n });\n\n Object.keys(textContent).forEach(textType => {\n textContent[textType] = textContent[textType].join('\\n');\n });\n\n this.textContent = textContent;\n }\n\n async parse(buf) {\n if (this.started) {\n throw new Error('Can not reuse parser, create a new PostalMime object');\n }\n this.started = true;\n\n // should it thrown on empty value instead?\n buf = buf || ArrayBuffer(0);\n\n if (typeof buf === 'string') {\n // cast string input to ArrayBuffer\n buf = _decode_strings__WEBPACK_IMPORTED_MODULE_3__.textEncoder.encode(buf);\n }\n\n if (buf instanceof Blob || Object.prototype.toString.call(buf) === '[object Blob]') {\n // can't process blob directly, cast to ArrayBuffer\n buf = await (0,_decode_strings__WEBPACK_IMPORTED_MODULE_3__.blobToArrayBuffer)(buf);\n }\n\n if (buf.buffer instanceof ArrayBuffer) {\n // Node.js Buffer object or Uint8Array\n buf = new Uint8Array(buf).buffer;\n }\n\n this.buf = buf;\n this.av = new Uint8Array(buf);\n this.readPos = 0;\n\n while (this.readPos < this.av.length) {\n const line = this.readLine();\n\n await this.processLine(line.bytes, line.done);\n }\n\n await this.processNodeTree();\n\n let message = {\n headers: this.root.headers.map(entry => ({ key: entry.key, value: entry.value })).reverse()\n };\n\n for (let key of ['from', 'sender', 'reply-to']) {\n let addressHeader = this.root.headers.find(line => line.key === key);\n if (addressHeader && addressHeader.value) {\n let addresses = (0,_address_parser__WEBPACK_IMPORTED_MODULE_2__.default)(addressHeader.value);\n if (addresses && addresses.length) {\n message[key.replace(/\\-(.)/g, (o, c) => c.toUpperCase())] = addresses[0];\n }\n }\n }\n\n for (let key of ['delivered-to', 'return-path']) {\n let addressHeader = this.root.headers.find(line => line.key === key);\n if (addressHeader && addressHeader.value) {\n let addresses = (0,_address_parser__WEBPACK_IMPORTED_MODULE_2__.default)(addressHeader.value);\n if (addresses && addresses.length && addresses[0].address) {\n message[key.replace(/\\-(.)/g, (o, c) => c.toUpperCase())] = addresses[0].address;\n }\n }\n }\n\n for (let key of ['to', 'cc', 'bcc']) {\n let addressHeaders = this.root.headers.filter(line => line.key === key);\n let addresses = [];\n\n addressHeaders\n .filter(entry => entry && entry.value)\n .map(entry => (0,_address_parser__WEBPACK_IMPORTED_MODULE_2__.default)(entry.value))\n .forEach(parsed => (addresses = addresses.concat(parsed || [])));\n\n if (addresses && addresses.length) {\n message[key] = addresses;\n }\n }\n\n for (let key of ['subject', 'message-id', 'in-reply-to', 'references']) {\n let header = this.root.headers.find(line => line.key === key);\n if (header && header.value) {\n message[key.replace(/\\-(.)/g, (o, c) => c.toUpperCase())] = (0,_decode_strings__WEBPACK_IMPORTED_MODULE_3__.decodeWords)(header.value);\n }\n }\n\n let dateHeader = this.root.headers.find(line => line.key === 'date');\n if (dateHeader) {\n let date = new Date(dateHeader.value);\n if (!date || date.toString() === 'Invalid Date') {\n date = dateHeader.value;\n } else {\n // enforce ISO format if seems to be a valid date\n date = date.toISOString();\n }\n message.date = date;\n }\n\n if (this.textContent && this.textContent.html) {\n message.html = this.textContent.html;\n }\n\n if (this.textContent && this.textContent.plain) {\n message.text = this.textContent.plain;\n }\n\n message.attachments = this.attachments;\n\n return message;\n }\n}\n\n\n//# sourceURL=webpack://postalMime/./src/postal-mime.js?");
81
-
82
- /***/ }),
83
-
84
- /***/ "./src/qp-decoder.js":
85
- /*!***************************!*\
86
- !*** ./src/qp-decoder.js ***!
87
- \***************************/
88
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
89
-
90
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ QPDecoder\n/* harmony export */ });\n/* harmony import */ var _decode_strings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./decode-strings */ \"./src/decode-strings.js\");\n\n\nclass QPDecoder {\n constructor(opts) {\n opts = opts || {};\n\n this.decoder = opts.decoder || new TextDecoder();\n\n this.maxChunkSize = 100 * 1024;\n\n this.remainder = '';\n\n this.chunks = [];\n }\n\n decodeQPBytes(encodedBytes) {\n let buf = new ArrayBuffer(encodedBytes.length);\n let dataView = new DataView(buf);\n for (let i = 0, len = encodedBytes.length; i < len; i++) {\n dataView.setUint8(i, parseInt(encodedBytes[i], 16));\n }\n return buf;\n }\n\n decodeChunks(str) {\n // unwrap newlines\n str = str.replace(/=\\r?\\n/g, '');\n\n let list = str.split(/(?==)/);\n let encodedBytes = [];\n for (let part of list) {\n if (part.charAt(0) !== '=') {\n if (encodedBytes.length) {\n this.chunks.push(this.decodeQPBytes(encodedBytes));\n encodedBytes = [];\n }\n this.chunks.push(part);\n continue;\n }\n\n if (part.length === 3) {\n encodedBytes.push(part.substr(1));\n continue;\n }\n\n if (part.length > 3) {\n encodedBytes.push(part.substr(1, 2));\n this.chunks.push(this.decodeQPBytes(encodedBytes));\n encodedBytes = [];\n\n part = part.substr(3);\n this.chunks.push(part);\n }\n }\n if (encodedBytes.length) {\n this.chunks.push(this.decodeQPBytes(encodedBytes));\n encodedBytes = [];\n }\n }\n\n update(buffer) {\n // expect full lines, so add line terminator as well\n let str = this.decoder.decode(buffer) + '\\n';\n\n str = this.remainder + str;\n\n if (str.length < this.maxChunkSize) {\n this.remainder = str;\n return;\n }\n\n this.remainder = '';\n\n let partialEnding = str.match(/=[a-fA-F0-9]?$/);\n if (partialEnding) {\n if (partialEnding.index === 0) {\n this.remainder = str;\n return;\n }\n this.remainder = str.substr(partialEnding.index);\n str = str.substr(0, partialEnding.index);\n }\n\n this.decodeChunks(str);\n }\n\n finalize() {\n if (this.remainder.length) {\n this.decodeChunks(this.remainder);\n this.remainder = '';\n }\n\n // convert an array of arraybuffers into a blob and then back into a single arraybuffer\n return (0,_decode_strings__WEBPACK_IMPORTED_MODULE_0__.blobToArrayBuffer)(new Blob(this.chunks, { type: 'application/octet-stream' }));\n }\n}\n\n\n//# sourceURL=webpack://postalMime/./src/qp-decoder.js?");
91
-
92
- /***/ }),
93
-
94
- /***/ "./src/text-format.js":
95
- /*!****************************!*\
96
- !*** ./src/text-format.js ***!
97
- \****************************/
98
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
99
-
100
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"decodeHTMLEntities\": () => /* binding */ decodeHTMLEntities,\n/* harmony export */ \"escapeHtml\": () => /* binding */ escapeHtml,\n/* harmony export */ \"textToHtml\": () => /* binding */ textToHtml,\n/* harmony export */ \"htmlToText\": () => /* binding */ htmlToText,\n/* harmony export */ \"formatTextHeader\": () => /* binding */ formatTextHeader,\n/* harmony export */ \"formatHtmlHeader\": () => /* binding */ formatHtmlHeader\n/* harmony export */ });\n/* harmony import */ var _html_entities_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./html-entities.js */ \"./src/html-entities.js\");\n\n\nfunction decodeHTMLEntities(str) {\n return str.replace(/&(#\\d+|#x[a-f0-9]+|[a-z]+\\d*);?/gi, (match, entity) => {\n if (typeof _html_entities_js__WEBPACK_IMPORTED_MODULE_0__.default[match] === 'string') {\n return _html_entities_js__WEBPACK_IMPORTED_MODULE_0__.default[match];\n }\n\n if (entity.charAt(0) !== '#' || match.charAt(match.length - 1) !== ';') {\n // keep as is, invalid or unknown sequence\n return match;\n }\n\n let codePoint;\n if (entity.charAt(1) === 'x') {\n // hex\n codePoint = parseInt(entity.substr(2), 16);\n } else {\n // dec\n codePoint = parseInt(entity.substr(1), 10);\n }\n\n var output = '';\n\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n // Invalid range, return a replacement character instead\n return '\\uFFFD';\n }\n\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n\n output += String.fromCharCode(codePoint);\n\n return output;\n });\n}\n\nfunction escapeHtml(str) {\n return str.trim().replace(/[<>\"'?&]/g, c => {\n let hex = c.charCodeAt(0).toString(16);\n if (hex.length < 2) {\n hex = '0' + hex;\n }\n return '&#x' + hex.toUpperCase() + ';';\n });\n}\n\nfunction textToHtml(str) {\n let html = escapeHtml(str).replace(/\\n/g, '<br />');\n return '<div>' + html + '</div>';\n}\n\nfunction htmlToText(str) {\n str = str\n // we can't process tags on multiple lines so remove newlines first\n .replace(/\\r?\\n/g, '\\u0001')\n .replace(/<\\!\\-\\-.*?\\-\\->/gi, ' ')\n\n .replace(/<br\\b[^>]*>/gi, '\\n')\n .replace(/<\\/?(p|div|table|tr|td|th)\\b[^>]*>/gi, '\\n\\n')\n .replace(/<script\\b[^>]*>.*?<\\/script\\b[^>]*>/gi, ' ')\n .replace(/^.*<body\\b[^>]*>/i, '')\n .replace(/^.*<\\/head\\b[^>]*>/i, '')\n .replace(/^.*<\\!doctype\\b[^>]*>/i, '')\n .replace(/<\\/body\\b[^>]*>.*$/i, '')\n .replace(/<\\/html\\b[^>]*>.*$/i, '')\n\n .replace(/<a\\b[^>]*href\\s*=\\s*[\"']?([^\\s\"']+)[^>]*>/gi, ' ($1) ')\n\n .replace(/<\\/?(span|em|i|strong|b|u|a)\\b[^>]*>/gi, '')\n\n .replace(/<li\\b[^>]*>[\\n\\u0001\\s]*/gi, '* ')\n\n .replace(/<hr\\b[^>]*>/g, '\\n-------------\\n')\n\n .replace(/<[^>]*>/g, ' ')\n\n // convert linebreak placeholders back to newlines\n .replace(/\\u0001/g, '\\n')\n\n .replace(/[ \\t]+/g, ' ')\n\n .replace(/^\\s+$/gm, '')\n\n .replace(/\\n\\n+/g, '\\n\\n')\n .replace(/^\\n+/, '\\n')\n .replace(/\\n+$/, '\\n');\n\n str = decodeHTMLEntities(str);\n\n return str;\n}\n\nfunction formatTextAddress(address) {\n return [address.name || []].concat(address.name ? `<${address.address}>` : address.address).join(' ');\n}\n\nfunction formatTextAddresses(addresses) {\n let parts = [];\n\n let processAddress = (address, partCounter) => {\n if (partCounter) {\n parts.push(', ');\n }\n\n if (address.group) {\n let groupStart = `${address.name}:`;\n let groupEnd = `;`;\n\n parts.push(groupStart);\n address.group.forEach(processAddress);\n parts.push(groupEnd);\n } else {\n parts.push(formatTextAddress(address));\n }\n };\n\n addresses.forEach(processAddress);\n\n return parts.join(' ');\n}\n\nfunction formatHtmlAddress(address) {\n return `<a href=\"mailto:${escapeHtml(address.address)}\" class=\"postal-email-address\">${escapeHtml(address.name || `<${address.address}>`)}</a>`;\n}\n\nfunction formatHtmlAddresses(addresses) {\n let parts = [];\n\n let processAddress = (address, partCounter) => {\n if (partCounter) {\n parts.push('<span class=\"postal-email-address-separator\">, </span>');\n }\n\n if (address.group) {\n let groupStart = `<span class=\"postal-email-address-group\">${escapeHtml(address.name)}:</span>`;\n let groupEnd = `<span class=\"postal-email-address-group\">;</span>`;\n\n parts.push(groupStart);\n address.group.forEach(processAddress);\n parts.push(groupEnd);\n } else {\n parts.push(formatHtmlAddress(address));\n }\n };\n\n addresses.forEach(processAddress);\n\n return parts.join(' ');\n}\n\nfunction formatTextHeader(message) {\n let rows = [];\n\n if (message.from) {\n rows.push(`From: ${formatTextAddress(message.from)}`);\n }\n\n if (message.subject) {\n rows.push(`Subject: ${message.subject}`);\n }\n\n if (message.date) {\n let dateOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n\n let dateStr = typeof Intl === 'undefined' ? message.date : new Intl.DateTimeFormat('default', dateOptions).format(new Date(message.date));\n\n rows.push(`Date: ${dateStr}`);\n }\n\n if (message.to && message.to.length) {\n rows.push(`To: ${formatTextAddresses(message.to)}`);\n }\n\n if (message.cc && message.cc.length) {\n rows.push(`Cc: ${formatTextAddresses(message.cc)}`);\n }\n\n if (message.bcc && message.bcc.length) {\n rows.push(`Bcc: ${formatTextAddresses(message.bcc)}`);\n }\n\n let template = `\n------------------------------\n${rows.join('\\n')}\n------------------------------\n`;\n\n return template;\n}\n\nfunction formatHtmlHeader(message) {\n let rows = [];\n\n if (message.from) {\n rows.push(`<div class=\"postal-email-header-key\">From</div><div class=\"postal-email-header-value\">${formatHtmlAddress(message.from)}</div>`);\n }\n\n if (message.subject) {\n rows.push(\n `<div class=\"postal-email-header-key\">Subject</div><div class=\"postal-email-header-value postal-email-header-subject\">${escapeHtml(\n message.subject\n )}</div>`\n );\n }\n\n if (message.date) {\n let dateOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n\n let dateStr = typeof Intl === 'undefined' ? message.date : new Intl.DateTimeFormat('default', dateOptions).format(new Date(message.date));\n\n rows.push(\n `<div class=\"postal-email-header-key\">Date</div><div class=\"postal-email-header-value postal-email-header-date\" data-date=\"${escapeHtml(\n message.date\n )}\">${escapeHtml(dateStr)}</div>`\n );\n }\n\n if (message.to && message.to.length) {\n rows.push(`<div class=\"postal-email-header-key\">To</div><div class=\"postal-email-header-value\">${formatHtmlAddresses(message.to)}</div>`);\n }\n\n if (message.cc && message.cc.length) {\n rows.push(`<div class=\"postal-email-header-key\">Cc</div><div class=\"postal-email-header-value\">${formatHtmlAddresses(message.cc)}</div>`);\n }\n\n if (message.bcc && message.bcc.length) {\n rows.push(`<div class=\"postal-email-header-key\">Bcc</div><div class=\"postal-email-header-value\">${formatHtmlAddresses(message.bcc)}</div>`);\n }\n\n let template = `<div class=\"postal-email-header\">${rows.length ? '<div class=\"postal-email-header-row\">' : ''}${rows.join(\n '</div>\\n<div class=\"postal-email-header-row\">'\n )}${rows.length ? '</div>' : ''}</div>`;\n\n return template;\n}\n\n\n//# sourceURL=webpack://postalMime/./src/text-format.js?");
101
-
102
- /***/ })
103
-
104
- /******/ });
105
- /************************************************************************/
106
- /******/ // The module cache
107
- /******/ var __webpack_module_cache__ = {};
108
- /******/
109
- /******/ // The require function
110
- /******/ function __webpack_require__(moduleId) {
111
- /******/ // Check if module is in cache
112
- /******/ if(__webpack_module_cache__[moduleId]) {
113
- /******/ return __webpack_module_cache__[moduleId].exports;
114
- /******/ }
115
- /******/ // Create a new module (and put it into the cache)
116
- /******/ var module = __webpack_module_cache__[moduleId] = {
117
- /******/ // no module.id needed
118
- /******/ // no module.loaded needed
119
- /******/ exports: {}
120
- /******/ };
121
- /******/
122
- /******/ // Execute the module function
123
- /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
124
- /******/
125
- /******/ // Return the exports of the module
126
- /******/ return module.exports;
127
- /******/ }
128
- /******/
129
- /************************************************************************/
130
- /******/ /* webpack/runtime/define property getters */
131
- /******/ (() => {
132
- /******/ // define getter functions for harmony exports
133
- /******/ __webpack_require__.d = (exports, definition) => {
134
- /******/ for(var key in definition) {
135
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
136
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
137
- /******/ }
138
- /******/ }
139
- /******/ };
140
- /******/ })();
141
- /******/
142
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
143
- /******/ (() => {
144
- /******/ __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)
145
- /******/ })();
146
- /******/
147
- /******/ /* webpack/runtime/make namespace object */
148
- /******/ (() => {
149
- /******/ // define __esModule on exports
150
- /******/ __webpack_require__.r = (exports) => {
151
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
152
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
153
- /******/ }
154
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
155
- /******/ };
156
- /******/ })();
157
- /******/
158
- /************************************************************************/
159
- /******/ // module exports must be returned from runtime so entry inlining is disabled
160
- /******/ // startup
161
- /******/ // Load entry module and return exports
162
- /******/ return __webpack_require__("./src/postal-mime.js");
163
- /******/ })()
164
- ;
1
+ (()=>{"use strict";var e={d:(r,t)=>{for(var a in t)e.o(t,a)&&!e.o(r,a)&&Object.defineProperty(r,a,{enumerable:!0,get:t[a]})},o:(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},r={};e.r(r),e.d(r,{default:()=>T});const t=new TextEncoder,a=new Map,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=new Uint8Array(256);for(var i=0;i<s.length;i++)o[s.charCodeAt(i)]=i;function n(e){let r=3*Math.ceil(e.length/4);const t=e.length;let a=0;e.length%4==3?r--:e.length%4==2?r-=2:"="===e[e.length-1]&&(r--,"="===e[e.length-2]&&r--);const s=new ArrayBuffer(r),i=new Uint8Array(s);for(let r=0;r<t;r+=4){let t=o[e.charCodeAt(r)],s=o[e.charCodeAt(r+1)],n=o[e.charCodeAt(r+2)],l=o[e.charCodeAt(r+3)];i[a++]=t<<2|s>>4,i[a++]=(15&s)<<4|n>>2,i[a++]=(3&n)<<6|63&l}return s}function l(e){if(e=e||"utf8",a.has(e))return a.get(e);let r;try{r=new TextDecoder(e)}catch(r){if("utf8"===e)throw r;return l()}return a.set(e,r),r}async function c(e){if("arrayBuffer"in e)return await e.arrayBuffer();const r=new FileReader;return new Promise(((t,a)=>{r.onload=function(e){t(e.target.result)},r.onerror=function(e){a(r.error)},r.readAsArrayBuffer(e)}))}function u(e){return(e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70)&&String.fromCharCode(e)}function p(e){return(e||"").toString().replace(/(=\?([^?]+)\?[Bb]\?[^?]*\?=)\s*(?==\?([^?]+)\?[Bb]\?[^?]*\?=)/g,((e,r,t,a)=>t===a?r+"__\0JOIN\0__":e)).replace(/(=\?([^?]+)\?[Qq]\?[^?]*\?=)\s*(?==\?([^?]+)\?[Qq]\?[^?]*\?=)/g,((e,r,t,a)=>t===a?r+"__\0JOIN\0__":e)).replace(/(\?=)?__\x00JOIN\x00__(=\?([^?]+)\?[QqBb]\?)?/g,"").replace(/(=\?[^?]+\?[QqBb]\?[^?]*\?=)\s+(?==\?[^?]+\?[QqBb]\?[^?]*\?=)/g,"$1").replace(/=\?([\w_\-*]+)\?([QqBb])\?([^?]*)\?=/g,((e,r,a,s)=>function(e,r,a){let s,o=e.indexOf("*");if(o>=0&&(e=e.substr(0,o)),"Q"===(r=r.toUpperCase())){a=a.replace(/=\s+([0-9a-fA-F])/g,"=$1").replace(/[_\s]/g," ");let e=t.encode(a),r=[];for(let t=0,a=e.length;t<a;t++){let s=e[t];if(t<=a-2&&61===s){let a=u(e[t+1]),s=u(e[t+2]);if(a&&s){let e=parseInt(a+s,16);r.push(e),t+=2;continue}}r.push(s)}s=new ArrayBuffer(r.length);let o=new DataView(s);for(let e=0,t=r.length;e<t;e++)o.setUint8(e,r[e])}else s="B"===r?n(a.replace(/[^a-zA-Z0-9\+\/=]+/g,"")):t.encode(a);return l(e).decode(s)}(r,a,s)))}class h{constructor(){this.chunks=[]}update(e){this.chunks.push(e),this.chunks.push("\n")}finalize(){return c(new Blob(this.chunks,{type:"application/octet-stream"}))}}class d{constructor(e){e=e||{},this.decoder=e.decoder||new TextDecoder,this.maxChunkSize=102400,this.chunks=[],this.remainder=""}update(e){let r=this.decoder.decode(e);if(/[^a-zA-Z0-9+\/]/.test(r)&&(r=r.replace(/[^a-zA-Z0-9+\/]+/g,"")),this.remainder+=r,this.remainder.length>=this.maxChunkSize){let e,r=4*Math.floor(this.remainder.length/4);r===this.remainder.length?(e=this.remainder,this.remainder=""):(e=this.remainder.substr(0,r),this.remainder=this.remainder.substr(r)),e.length&&this.chunks.push(n(e))}}finalize(){return this.remainder&&!/^=+$/.test(this.remainder)&&this.chunks.push(n(this.remainder)),c(new Blob(this.chunks,{type:"application/octet-stream"}))}}class g{constructor(e){e=e||{},this.decoder=e.decoder||new TextDecoder,this.maxChunkSize=102400,this.remainder="",this.chunks=[]}decodeQPBytes(e){let r=new ArrayBuffer(e.length),t=new DataView(r);for(let r=0,a=e.length;r<a;r++)t.setUint8(r,parseInt(e[r],16));return r}decodeChunks(e){let r=(e=e.replace(/=\r?\n/g,"")).split(/(?==)/),t=[];for(let e of r)"="===e.charAt(0)?3!==e.length?e.length>3&&(t.push(e.substr(1,2)),this.chunks.push(this.decodeQPBytes(t)),t=[],e=e.substr(3),this.chunks.push(e)):t.push(e.substr(1)):(t.length&&(this.chunks.push(this.decodeQPBytes(t)),t=[]),this.chunks.push(e));t.length&&(this.chunks.push(this.decodeQPBytes(t)),t=[])}update(e){let r=this.decoder.decode(e)+"\n";if(r=this.remainder+r,r.length<this.maxChunkSize)return void(this.remainder=r);this.remainder="";let t=r.match(/=[a-fA-F0-9]?$/);if(t){if(0===t.index)return void(this.remainder=r);this.remainder=r.substr(t.index),r=r.substr(0,t.index)}this.decodeChunks(r)}finalize(){return this.remainder.length&&(this.decodeChunks(this.remainder),this.remainder=""),c(new Blob(this.chunks,{type:"application/octet-stream"}))}}class m{constructor(e){e=e||{},this.postalMime=e.postalMime,this.root=!!e.parentNode,this.childNodes=[],e.parentNode&&e.parentNode.childNodes.push(this),this.state="header",this.headerLines=[],this.decoders=new Map,this.contentType={value:"text/plain",default:!0},this.contentTransferEncoding={value:"8bit"},this.contentDisposition={value:""},this.headers=[],this.contentDecoder=!1}setupContentDecoder(e){/base64/i.test(e)?this.contentDecoder=new d:/quoted-printable/i.test(e)?this.contentDecoder=new g({decoder:l(this.contentType.parsed.params.charset)}):this.contentDecoder=new h}async finalize(){if("finished"===this.state)return;"header"===this.state&&this.processHeaders();let e=this.postalMime.boundaries;for(let r=e.length-1;r>=0;r--)if(e[r].node===this){e.splice(r,1);break}await this.finalizeChildNodes(),this.content=this.contentDecoder?await this.contentDecoder.finalize():null,this.state="finished"}async finalizeChildNodes(){for(let e of this.childNodes)await e.finalize()}parseStructuredHeader(e){let r,a={value:!1,params:{}},s=!1,o="",i="value",n=!1,c=!1;for(let t=0,l=e.length;t<l;t++)switch(r=e.charAt(t),i){case"key":if("="===r){s=o.trim().toLowerCase(),i="value",o="";break}o+=r;break;case"value":if(c)o+=r;else{if("\\"===r){c=!0;continue}n&&r===n?n=!1:n||'"'!==r?n||";"!==r?o+=r:(!1===s?a.value=o.trim():a.params[s]=o.trim(),i="key",o=""):n=r}c=!1}return o=o.trim(),"value"===i?!1===s?a.value=o:a.params[s]=o:o&&(a.params[o.toLowerCase()]=""),a.value&&(a.value=a.value.toLowerCase()),function(e){let r=new Map;Object.keys(e.params).forEach((t=>{let a=t.match(/\*((\d+)\*?)?$/);if(!a)return;let s,o=t.substr(0,a.index).toLowerCase(),i=Number(a[2])||0;r.has(o)?s=r.get(o):(s={charset:!1,values:[]},r.set(o,s));let n=e.params[t];0===i&&"*"===a[0].charAt(a[0].length-1)&&(a=n.match(/^([^']*)'[^']*'(.*)$/))&&(s.charset=a[1]||"utf-8",n=a[2]),s.values.push({nr:i,value:n}),delete e.params[t]})),r.forEach(((r,a)=>{e.params[a]=function(e,r){r=r||"utf-8";let a=[];for(let r=0;r<e.length;r++){let s=e.charAt(r);if("%"===s&&/^[a-f0-9]{2}/i.test(e.substr(r+1,2))){let t=e.substr(r+1,2);r+=2,a.push(parseInt(t,16))}else if(s.charCodeAt(0)>126){s=t.encode(s);for(let e=0;e<s.length;e++)a.push(s[e])}else a.push(s.charCodeAt(0))}const s=new ArrayBuffer(a.length),o=new DataView(s);for(let e=0,r=a.length;e<r;e++)o.setUint8(e,a[e]);return l(r).decode(s)}(r.values.sort(((e,r)=>e.nr-r.nr)).map((e=>e.value)).join(""),r.charset)}))}(a),a}decodeFlowedText(e,r){return e.split(/\r?\n/).reduce(((e,t)=>/ $/.test(e)&&!/(^|\n)-- $/.test(e)?r?e.slice(0,-1)+t:e+t:e+"\n"+t)).replace(/^ /gm,"")}getTextContent(){if(!this.content)return"";let e=l(this.contentType.parsed.params.charset).decode(this.content);return/^flowed$/i.test(this.contentType.parsed.params.format)&&(e=this.decodeFlowedText(e,/^yes$/i.test(this.contentType.parsed.params.delsp))),e}processHeaders(){for(let e=this.headerLines.length-1;e>=0;e--){let r=this.headerLines[e];if(e&&/^\s/.test(r))this.headerLines[e-1]+="\n"+r,this.headerLines.splice(e,1);else{r=r.replace(/\s+/g," ");let e=r.indexOf(":"),t=e<0?r.trim():r.substr(0,e).trim(),a=e<0?"":r.substr(e+1).trim();switch(this.headers.push({key:t.toLowerCase(),originalKey:t,value:a}),t.toLowerCase()){case"content-type":this.contentType.default&&(this.contentType={value:a,parsed:{}});break;case"content-transfer-encoding":this.contentTransferEncoding={value:a,parsed:{}};break;case"content-disposition":this.contentDisposition={value:a,parsed:{}};break;case"content-id":this.contentId=a}}}this.contentType.parsed=this.parseStructuredHeader(this.contentType.value),this.contentType.multipart=!!/^multipart\//i.test(this.contentType.parsed.value)&&this.contentType.parsed.value.substr(this.contentType.parsed.value.indexOf("/")+1),this.contentType.multipart&&this.contentType.parsed.params.boundary&&this.postalMime.boundaries.push({value:t.encode(this.contentType.parsed.params.boundary),node:this}),this.contentDisposition.parsed=this.parseStructuredHeader(this.contentDisposition.value),this.contentTransferEncoding.encoding=this.contentTransferEncoding.value.toLowerCase().split(/[^\w-]/).shift(),this.setupContentDecoder(this.contentTransferEncoding.encoding)}feed(e){switch(this.state){case"header":if(!e.length)return this.state="body",this.processHeaders();this.headerLines.push(l().decode(e));break;case"body":this.contentDecoder.update(e)}}}const f={"&AElig":"Æ","&AElig;":"Æ","&AMP":"&","&AMP;":"&","&Aacute":"Á","&Aacute;":"Á","&Abreve;":"Ă","&Acirc":"Â","&Acirc;":"Â","&Acy;":"А","&Afr;":"𝔄","&Agrave":"À","&Agrave;":"À","&Alpha;":"Α","&Amacr;":"Ā","&And;":"⩓","&Aogon;":"Ą","&Aopf;":"𝔸","&ApplyFunction;":"⁡","&Aring":"Å","&Aring;":"Å","&Ascr;":"𝒜","&Assign;":"≔","&Atilde":"Ã","&Atilde;":"Ã","&Auml":"Ä","&Auml;":"Ä","&Backslash;":"∖","&Barv;":"⫧","&Barwed;":"⌆","&Bcy;":"Б","&Because;":"∵","&Bernoullis;":"ℬ","&Beta;":"Β","&Bfr;":"𝔅","&Bopf;":"𝔹","&Breve;":"˘","&Bscr;":"ℬ","&Bumpeq;":"≎","&CHcy;":"Ч","&COPY":"©","&COPY;":"©","&Cacute;":"Ć","&Cap;":"⋒","&CapitalDifferentialD;":"ⅅ","&Cayleys;":"ℭ","&Ccaron;":"Č","&Ccedil":"Ç","&Ccedil;":"Ç","&Ccirc;":"Ĉ","&Cconint;":"∰","&Cdot;":"Ċ","&Cedilla;":"¸","&CenterDot;":"·","&Cfr;":"ℭ","&Chi;":"Χ","&CircleDot;":"⊙","&CircleMinus;":"⊖","&CirclePlus;":"⊕","&CircleTimes;":"⊗","&ClockwiseContourIntegral;":"∲","&CloseCurlyDoubleQuote;":"”","&CloseCurlyQuote;":"’","&Colon;":"∷","&Colone;":"⩴","&Congruent;":"≡","&Conint;":"∯","&ContourIntegral;":"∮","&Copf;":"ℂ","&Coproduct;":"∐","&CounterClockwiseContourIntegral;":"∳","&Cross;":"⨯","&Cscr;":"𝒞","&Cup;":"⋓","&CupCap;":"≍","&DD;":"ⅅ","&DDotrahd;":"⤑","&DJcy;":"Ђ","&DScy;":"Ѕ","&DZcy;":"Џ","&Dagger;":"‡","&Darr;":"↡","&Dashv;":"⫤","&Dcaron;":"Ď","&Dcy;":"Д","&Del;":"∇","&Delta;":"Δ","&Dfr;":"𝔇","&DiacriticalAcute;":"´","&DiacriticalDot;":"˙","&DiacriticalDoubleAcute;":"˝","&DiacriticalGrave;":"`","&DiacriticalTilde;":"˜","&Diamond;":"⋄","&DifferentialD;":"ⅆ","&Dopf;":"𝔻","&Dot;":"¨","&DotDot;":"⃜","&DotEqual;":"≐","&DoubleContourIntegral;":"∯","&DoubleDot;":"¨","&DoubleDownArrow;":"⇓","&DoubleLeftArrow;":"⇐","&DoubleLeftRightArrow;":"⇔","&DoubleLeftTee;":"⫤","&DoubleLongLeftArrow;":"⟸","&DoubleLongLeftRightArrow;":"⟺","&DoubleLongRightArrow;":"⟹","&DoubleRightArrow;":"⇒","&DoubleRightTee;":"⊨","&DoubleUpArrow;":"⇑","&DoubleUpDownArrow;":"⇕","&DoubleVerticalBar;":"∥","&DownArrow;":"↓","&DownArrowBar;":"⤓","&DownArrowUpArrow;":"⇵","&DownBreve;":"̑","&DownLeftRightVector;":"⥐","&DownLeftTeeVector;":"⥞","&DownLeftVector;":"↽","&DownLeftVectorBar;":"⥖","&DownRightTeeVector;":"⥟","&DownRightVector;":"⇁","&DownRightVectorBar;":"⥗","&DownTee;":"⊤","&DownTeeArrow;":"↧","&Downarrow;":"⇓","&Dscr;":"𝒟","&Dstrok;":"Đ","&ENG;":"Ŋ","&ETH":"Ð","&ETH;":"Ð","&Eacute":"É","&Eacute;":"É","&Ecaron;":"Ě","&Ecirc":"Ê","&Ecirc;":"Ê","&Ecy;":"Э","&Edot;":"Ė","&Efr;":"𝔈","&Egrave":"È","&Egrave;":"È","&Element;":"∈","&Emacr;":"Ē","&EmptySmallSquare;":"◻","&EmptyVerySmallSquare;":"▫","&Eogon;":"Ę","&Eopf;":"𝔼","&Epsilon;":"Ε","&Equal;":"⩵","&EqualTilde;":"≂","&Equilibrium;":"⇌","&Escr;":"ℰ","&Esim;":"⩳","&Eta;":"Η","&Euml":"Ë","&Euml;":"Ë","&Exists;":"∃","&ExponentialE;":"ⅇ","&Fcy;":"Ф","&Ffr;":"𝔉","&FilledSmallSquare;":"◼","&FilledVerySmallSquare;":"▪","&Fopf;":"𝔽","&ForAll;":"∀","&Fouriertrf;":"ℱ","&Fscr;":"ℱ","&GJcy;":"Ѓ","&GT":">","&GT;":">","&Gamma;":"Γ","&Gammad;":"Ϝ","&Gbreve;":"Ğ","&Gcedil;":"Ģ","&Gcirc;":"Ĝ","&Gcy;":"Г","&Gdot;":"Ġ","&Gfr;":"𝔊","&Gg;":"⋙","&Gopf;":"𝔾","&GreaterEqual;":"≥","&GreaterEqualLess;":"⋛","&GreaterFullEqual;":"≧","&GreaterGreater;":"⪢","&GreaterLess;":"≷","&GreaterSlantEqual;":"⩾","&GreaterTilde;":"≳","&Gscr;":"𝒢","&Gt;":"≫","&HARDcy;":"Ъ","&Hacek;":"ˇ","&Hat;":"^","&Hcirc;":"Ĥ","&Hfr;":"ℌ","&HilbertSpace;":"ℋ","&Hopf;":"ℍ","&HorizontalLine;":"─","&Hscr;":"ℋ","&Hstrok;":"Ħ","&HumpDownHump;":"≎","&HumpEqual;":"≏","&IEcy;":"Е","&IJlig;":"IJ","&IOcy;":"Ё","&Iacute":"Í","&Iacute;":"Í","&Icirc":"Î","&Icirc;":"Î","&Icy;":"И","&Idot;":"İ","&Ifr;":"ℑ","&Igrave":"Ì","&Igrave;":"Ì","&Im;":"ℑ","&Imacr;":"Ī","&ImaginaryI;":"ⅈ","&Implies;":"⇒","&Int;":"∬","&Integral;":"∫","&Intersection;":"⋂","&InvisibleComma;":"⁣","&InvisibleTimes;":"⁢","&Iogon;":"Į","&Iopf;":"𝕀","&Iota;":"Ι","&Iscr;":"ℐ","&Itilde;":"Ĩ","&Iukcy;":"І","&Iuml":"Ï","&Iuml;":"Ï","&Jcirc;":"Ĵ","&Jcy;":"Й","&Jfr;":"𝔍","&Jopf;":"𝕁","&Jscr;":"𝒥","&Jsercy;":"Ј","&Jukcy;":"Є","&KHcy;":"Х","&KJcy;":"Ќ","&Kappa;":"Κ","&Kcedil;":"Ķ","&Kcy;":"К","&Kfr;":"𝔎","&Kopf;":"𝕂","&Kscr;":"𝒦","&LJcy;":"Љ","&LT":"<","&LT;":"<","&Lacute;":"Ĺ","&Lambda;":"Λ","&Lang;":"⟪","&Laplacetrf;":"ℒ","&Larr;":"↞","&Lcaron;":"Ľ","&Lcedil;":"Ļ","&Lcy;":"Л","&LeftAngleBracket;":"⟨","&LeftArrow;":"←","&LeftArrowBar;":"⇤","&LeftArrowRightArrow;":"⇆","&LeftCeiling;":"⌈","&LeftDoubleBracket;":"⟦","&LeftDownTeeVector;":"⥡","&LeftDownVector;":"⇃","&LeftDownVectorBar;":"⥙","&LeftFloor;":"⌊","&LeftRightArrow;":"↔","&LeftRightVector;":"⥎","&LeftTee;":"⊣","&LeftTeeArrow;":"↤","&LeftTeeVector;":"⥚","&LeftTriangle;":"⊲","&LeftTriangleBar;":"⧏","&LeftTriangleEqual;":"⊴","&LeftUpDownVector;":"⥑","&LeftUpTeeVector;":"⥠","&LeftUpVector;":"↿","&LeftUpVectorBar;":"⥘","&LeftVector;":"↼","&LeftVectorBar;":"⥒","&Leftarrow;":"⇐","&Leftrightarrow;":"⇔","&LessEqualGreater;":"⋚","&LessFullEqual;":"≦","&LessGreater;":"≶","&LessLess;":"⪡","&LessSlantEqual;":"⩽","&LessTilde;":"≲","&Lfr;":"𝔏","&Ll;":"⋘","&Lleftarrow;":"⇚","&Lmidot;":"Ŀ","&LongLeftArrow;":"⟵","&LongLeftRightArrow;":"⟷","&LongRightArrow;":"⟶","&Longleftarrow;":"⟸","&Longleftrightarrow;":"⟺","&Longrightarrow;":"⟹","&Lopf;":"𝕃","&LowerLeftArrow;":"↙","&LowerRightArrow;":"↘","&Lscr;":"ℒ","&Lsh;":"↰","&Lstrok;":"Ł","&Lt;":"≪","&Map;":"⤅","&Mcy;":"М","&MediumSpace;":" ","&Mellintrf;":"ℳ","&Mfr;":"𝔐","&MinusPlus;":"∓","&Mopf;":"𝕄","&Mscr;":"ℳ","&Mu;":"Μ","&NJcy;":"Њ","&Nacute;":"Ń","&Ncaron;":"Ň","&Ncedil;":"Ņ","&Ncy;":"Н","&NegativeMediumSpace;":"​","&NegativeThickSpace;":"​","&NegativeThinSpace;":"​","&NegativeVeryThinSpace;":"​","&NestedGreaterGreater;":"≫","&NestedLessLess;":"≪","&NewLine;":"\n","&Nfr;":"𝔑","&NoBreak;":"⁠","&NonBreakingSpace;":" ","&Nopf;":"ℕ","&Not;":"⫬","&NotCongruent;":"≢","&NotCupCap;":"≭","&NotDoubleVerticalBar;":"∦","&NotElement;":"∉","&NotEqual;":"≠","&NotEqualTilde;":"≂̸","&NotExists;":"∄","&NotGreater;":"≯","&NotGreaterEqual;":"≱","&NotGreaterFullEqual;":"≧̸","&NotGreaterGreater;":"≫̸","&NotGreaterLess;":"≹","&NotGreaterSlantEqual;":"⩾̸","&NotGreaterTilde;":"≵","&NotHumpDownHump;":"≎̸","&NotHumpEqual;":"≏̸","&NotLeftTriangle;":"⋪","&NotLeftTriangleBar;":"⧏̸","&NotLeftTriangleEqual;":"⋬","&NotLess;":"≮","&NotLessEqual;":"≰","&NotLessGreater;":"≸","&NotLessLess;":"≪̸","&NotLessSlantEqual;":"⩽̸","&NotLessTilde;":"≴","&NotNestedGreaterGreater;":"⪢̸","&NotNestedLessLess;":"⪡̸","&NotPrecedes;":"⊀","&NotPrecedesEqual;":"⪯̸","&NotPrecedesSlantEqual;":"⋠","&NotReverseElement;":"∌","&NotRightTriangle;":"⋫","&NotRightTriangleBar;":"⧐̸","&NotRightTriangleEqual;":"⋭","&NotSquareSubset;":"⊏̸","&NotSquareSubsetEqual;":"⋢","&NotSquareSuperset;":"⊐̸","&NotSquareSupersetEqual;":"⋣","&NotSubset;":"⊂⃒","&NotSubsetEqual;":"⊈","&NotSucceeds;":"⊁","&NotSucceedsEqual;":"⪰̸","&NotSucceedsSlantEqual;":"⋡","&NotSucceedsTilde;":"≿̸","&NotSuperset;":"⊃⃒","&NotSupersetEqual;":"⊉","&NotTilde;":"≁","&NotTildeEqual;":"≄","&NotTildeFullEqual;":"≇","&NotTildeTilde;":"≉","&NotVerticalBar;":"∤","&Nscr;":"𝒩","&Ntilde":"Ñ","&Ntilde;":"Ñ","&Nu;":"Ν","&OElig;":"Œ","&Oacute":"Ó","&Oacute;":"Ó","&Ocirc":"Ô","&Ocirc;":"Ô","&Ocy;":"О","&Odblac;":"Ő","&Ofr;":"𝔒","&Ograve":"Ò","&Ograve;":"Ò","&Omacr;":"Ō","&Omega;":"Ω","&Omicron;":"Ο","&Oopf;":"𝕆","&OpenCurlyDoubleQuote;":"“","&OpenCurlyQuote;":"‘","&Or;":"⩔","&Oscr;":"𝒪","&Oslash":"Ø","&Oslash;":"Ø","&Otilde":"Õ","&Otilde;":"Õ","&Otimes;":"⨷","&Ouml":"Ö","&Ouml;":"Ö","&OverBar;":"‾","&OverBrace;":"⏞","&OverBracket;":"⎴","&OverParenthesis;":"⏜","&PartialD;":"∂","&Pcy;":"П","&Pfr;":"𝔓","&Phi;":"Φ","&Pi;":"Π","&PlusMinus;":"±","&Poincareplane;":"ℌ","&Popf;":"ℙ","&Pr;":"⪻","&Precedes;":"≺","&PrecedesEqual;":"⪯","&PrecedesSlantEqual;":"≼","&PrecedesTilde;":"≾","&Prime;":"″","&Product;":"∏","&Proportion;":"∷","&Proportional;":"∝","&Pscr;":"𝒫","&Psi;":"Ψ","&QUOT":'"',"&QUOT;":'"',"&Qfr;":"𝔔","&Qopf;":"ℚ","&Qscr;":"𝒬","&RBarr;":"⤐","&REG":"®","&REG;":"®","&Racute;":"Ŕ","&Rang;":"⟫","&Rarr;":"↠","&Rarrtl;":"⤖","&Rcaron;":"Ř","&Rcedil;":"Ŗ","&Rcy;":"Р","&Re;":"ℜ","&ReverseElement;":"∋","&ReverseEquilibrium;":"⇋","&ReverseUpEquilibrium;":"⥯","&Rfr;":"ℜ","&Rho;":"Ρ","&RightAngleBracket;":"⟩","&RightArrow;":"→","&RightArrowBar;":"⇥","&RightArrowLeftArrow;":"⇄","&RightCeiling;":"⌉","&RightDoubleBracket;":"⟧","&RightDownTeeVector;":"⥝","&RightDownVector;":"⇂","&RightDownVectorBar;":"⥕","&RightFloor;":"⌋","&RightTee;":"⊢","&RightTeeArrow;":"↦","&RightTeeVector;":"⥛","&RightTriangle;":"⊳","&RightTriangleBar;":"⧐","&RightTriangleEqual;":"⊵","&RightUpDownVector;":"⥏","&RightUpTeeVector;":"⥜","&RightUpVector;":"↾","&RightUpVectorBar;":"⥔","&RightVector;":"⇀","&RightVectorBar;":"⥓","&Rightarrow;":"⇒","&Ropf;":"ℝ","&RoundImplies;":"⥰","&Rrightarrow;":"⇛","&Rscr;":"ℛ","&Rsh;":"↱","&RuleDelayed;":"⧴","&SHCHcy;":"Щ","&SHcy;":"Ш","&SOFTcy;":"Ь","&Sacute;":"Ś","&Sc;":"⪼","&Scaron;":"Š","&Scedil;":"Ş","&Scirc;":"Ŝ","&Scy;":"С","&Sfr;":"𝔖","&ShortDownArrow;":"↓","&ShortLeftArrow;":"←","&ShortRightArrow;":"→","&ShortUpArrow;":"↑","&Sigma;":"Σ","&SmallCircle;":"∘","&Sopf;":"𝕊","&Sqrt;":"√","&Square;":"□","&SquareIntersection;":"⊓","&SquareSubset;":"⊏","&SquareSubsetEqual;":"⊑","&SquareSuperset;":"⊐","&SquareSupersetEqual;":"⊒","&SquareUnion;":"⊔","&Sscr;":"𝒮","&Star;":"⋆","&Sub;":"⋐","&Subset;":"⋐","&SubsetEqual;":"⊆","&Succeeds;":"≻","&SucceedsEqual;":"⪰","&SucceedsSlantEqual;":"≽","&SucceedsTilde;":"≿","&SuchThat;":"∋","&Sum;":"∑","&Sup;":"⋑","&Superset;":"⊃","&SupersetEqual;":"⊇","&Supset;":"⋑","&THORN":"Þ","&THORN;":"Þ","&TRADE;":"™","&TSHcy;":"Ћ","&TScy;":"Ц","&Tab;":"\t","&Tau;":"Τ","&Tcaron;":"Ť","&Tcedil;":"Ţ","&Tcy;":"Т","&Tfr;":"𝔗","&Therefore;":"∴","&Theta;":"Θ","&ThickSpace;":"  ","&ThinSpace;":" ","&Tilde;":"∼","&TildeEqual;":"≃","&TildeFullEqual;":"≅","&TildeTilde;":"≈","&Topf;":"𝕋","&TripleDot;":"⃛","&Tscr;":"𝒯","&Tstrok;":"Ŧ","&Uacute":"Ú","&Uacute;":"Ú","&Uarr;":"↟","&Uarrocir;":"⥉","&Ubrcy;":"Ў","&Ubreve;":"Ŭ","&Ucirc":"Û","&Ucirc;":"Û","&Ucy;":"У","&Udblac;":"Ű","&Ufr;":"𝔘","&Ugrave":"Ù","&Ugrave;":"Ù","&Umacr;":"Ū","&UnderBar;":"_","&UnderBrace;":"⏟","&UnderBracket;":"⎵","&UnderParenthesis;":"⏝","&Union;":"⋃","&UnionPlus;":"⊎","&Uogon;":"Ų","&Uopf;":"𝕌","&UpArrow;":"↑","&UpArrowBar;":"⤒","&UpArrowDownArrow;":"⇅","&UpDownArrow;":"↕","&UpEquilibrium;":"⥮","&UpTee;":"⊥","&UpTeeArrow;":"↥","&Uparrow;":"⇑","&Updownarrow;":"⇕","&UpperLeftArrow;":"↖","&UpperRightArrow;":"↗","&Upsi;":"ϒ","&Upsilon;":"Υ","&Uring;":"Ů","&Uscr;":"𝒰","&Utilde;":"Ũ","&Uuml":"Ü","&Uuml;":"Ü","&VDash;":"⊫","&Vbar;":"⫫","&Vcy;":"В","&Vdash;":"⊩","&Vdashl;":"⫦","&Vee;":"⋁","&Verbar;":"‖","&Vert;":"‖","&VerticalBar;":"∣","&VerticalLine;":"|","&VerticalSeparator;":"❘","&VerticalTilde;":"≀","&VeryThinSpace;":" ","&Vfr;":"𝔙","&Vopf;":"𝕍","&Vscr;":"𝒱","&Vvdash;":"⊪","&Wcirc;":"Ŵ","&Wedge;":"⋀","&Wfr;":"𝔚","&Wopf;":"𝕎","&Wscr;":"𝒲","&Xfr;":"𝔛","&Xi;":"Ξ","&Xopf;":"𝕏","&Xscr;":"𝒳","&YAcy;":"Я","&YIcy;":"Ї","&YUcy;":"Ю","&Yacute":"Ý","&Yacute;":"Ý","&Ycirc;":"Ŷ","&Ycy;":"Ы","&Yfr;":"𝔜","&Yopf;":"𝕐","&Yscr;":"𝒴","&Yuml;":"Ÿ","&ZHcy;":"Ж","&Zacute;":"Ź","&Zcaron;":"Ž","&Zcy;":"З","&Zdot;":"Ż","&ZeroWidthSpace;":"​","&Zeta;":"Ζ","&Zfr;":"ℨ","&Zopf;":"ℤ","&Zscr;":"𝒵","&aacute":"á","&aacute;":"á","&abreve;":"ă","&ac;":"∾","&acE;":"∾̳","&acd;":"∿","&acirc":"â","&acirc;":"â","&acute":"´","&acute;":"´","&acy;":"а","&aelig":"æ","&aelig;":"æ","&af;":"⁡","&afr;":"𝔞","&agrave":"à","&agrave;":"à","&alefsym;":"ℵ","&aleph;":"ℵ","&alpha;":"α","&amacr;":"ā","&amalg;":"⨿","&amp":"&","&amp;":"&","&and;":"∧","&andand;":"⩕","&andd;":"⩜","&andslope;":"⩘","&andv;":"⩚","&ang;":"∠","&ange;":"⦤","&angle;":"∠","&angmsd;":"∡","&angmsdaa;":"⦨","&angmsdab;":"⦩","&angmsdac;":"⦪","&angmsdad;":"⦫","&angmsdae;":"⦬","&angmsdaf;":"⦭","&angmsdag;":"⦮","&angmsdah;":"⦯","&angrt;":"∟","&angrtvb;":"⊾","&angrtvbd;":"⦝","&angsph;":"∢","&angst;":"Å","&angzarr;":"⍼","&aogon;":"ą","&aopf;":"𝕒","&ap;":"≈","&apE;":"⩰","&apacir;":"⩯","&ape;":"≊","&apid;":"≋","&apos;":"'","&approx;":"≈","&approxeq;":"≊","&aring":"å","&aring;":"å","&ascr;":"𝒶","&ast;":"*","&asymp;":"≈","&asympeq;":"≍","&atilde":"ã","&atilde;":"ã","&auml":"ä","&auml;":"ä","&awconint;":"∳","&awint;":"⨑","&bNot;":"⫭","&backcong;":"≌","&backepsilon;":"϶","&backprime;":"‵","&backsim;":"∽","&backsimeq;":"⋍","&barvee;":"⊽","&barwed;":"⌅","&barwedge;":"⌅","&bbrk;":"⎵","&bbrktbrk;":"⎶","&bcong;":"≌","&bcy;":"б","&bdquo;":"„","&becaus;":"∵","&because;":"∵","&bemptyv;":"⦰","&bepsi;":"϶","&bernou;":"ℬ","&beta;":"β","&beth;":"ℶ","&between;":"≬","&bfr;":"𝔟","&bigcap;":"⋂","&bigcirc;":"◯","&bigcup;":"⋃","&bigodot;":"⨀","&bigoplus;":"⨁","&bigotimes;":"⨂","&bigsqcup;":"⨆","&bigstar;":"★","&bigtriangledown;":"▽","&bigtriangleup;":"△","&biguplus;":"⨄","&bigvee;":"⋁","&bigwedge;":"⋀","&bkarow;":"⤍","&blacklozenge;":"⧫","&blacksquare;":"▪","&blacktriangle;":"▴","&blacktriangledown;":"▾","&blacktriangleleft;":"◂","&blacktriangleright;":"▸","&blank;":"␣","&blk12;":"▒","&blk14;":"░","&blk34;":"▓","&block;":"█","&bne;":"=⃥","&bnequiv;":"≡⃥","&bnot;":"⌐","&bopf;":"𝕓","&bot;":"⊥","&bottom;":"⊥","&bowtie;":"⋈","&boxDL;":"╗","&boxDR;":"╔","&boxDl;":"╖","&boxDr;":"╓","&boxH;":"═","&boxHD;":"╦","&boxHU;":"╩","&boxHd;":"╤","&boxHu;":"╧","&boxUL;":"╝","&boxUR;":"╚","&boxUl;":"╜","&boxUr;":"╙","&boxV;":"║","&boxVH;":"╬","&boxVL;":"╣","&boxVR;":"╠","&boxVh;":"╫","&boxVl;":"╢","&boxVr;":"╟","&boxbox;":"⧉","&boxdL;":"╕","&boxdR;":"╒","&boxdl;":"┐","&boxdr;":"┌","&boxh;":"─","&boxhD;":"╥","&boxhU;":"╨","&boxhd;":"┬","&boxhu;":"┴","&boxminus;":"⊟","&boxplus;":"⊞","&boxtimes;":"⊠","&boxuL;":"╛","&boxuR;":"╘","&boxul;":"┘","&boxur;":"└","&boxv;":"│","&boxvH;":"╪","&boxvL;":"╡","&boxvR;":"╞","&boxvh;":"┼","&boxvl;":"┤","&boxvr;":"├","&bprime;":"‵","&breve;":"˘","&brvbar":"¦","&brvbar;":"¦","&bscr;":"𝒷","&bsemi;":"⁏","&bsim;":"∽","&bsime;":"⋍","&bsol;":"\\","&bsolb;":"⧅","&bsolhsub;":"⟈","&bull;":"•","&bullet;":"•","&bump;":"≎","&bumpE;":"⪮","&bumpe;":"≏","&bumpeq;":"≏","&cacute;":"ć","&cap;":"∩","&capand;":"⩄","&capbrcup;":"⩉","&capcap;":"⩋","&capcup;":"⩇","&capdot;":"⩀","&caps;":"∩︀","&caret;":"⁁","&caron;":"ˇ","&ccaps;":"⩍","&ccaron;":"č","&ccedil":"ç","&ccedil;":"ç","&ccirc;":"ĉ","&ccups;":"⩌","&ccupssm;":"⩐","&cdot;":"ċ","&cedil":"¸","&cedil;":"¸","&cemptyv;":"⦲","&cent":"¢","&cent;":"¢","&centerdot;":"·","&cfr;":"𝔠","&chcy;":"ч","&check;":"✓","&checkmark;":"✓","&chi;":"χ","&cir;":"○","&cirE;":"⧃","&circ;":"ˆ","&circeq;":"≗","&circlearrowleft;":"↺","&circlearrowright;":"↻","&circledR;":"®","&circledS;":"Ⓢ","&circledast;":"⊛","&circledcirc;":"⊚","&circleddash;":"⊝","&cire;":"≗","&cirfnint;":"⨐","&cirmid;":"⫯","&cirscir;":"⧂","&clubs;":"♣","&clubsuit;":"♣","&colon;":":","&colone;":"≔","&coloneq;":"≔","&comma;":",","&commat;":"@","&comp;":"∁","&compfn;":"∘","&complement;":"∁","&complexes;":"ℂ","&cong;":"≅","&congdot;":"⩭","&conint;":"∮","&copf;":"𝕔","&coprod;":"∐","&copy":"©","&copy;":"©","&copysr;":"℗","&crarr;":"↵","&cross;":"✗","&cscr;":"𝒸","&csub;":"⫏","&csube;":"⫑","&csup;":"⫐","&csupe;":"⫒","&ctdot;":"⋯","&cudarrl;":"⤸","&cudarrr;":"⤵","&cuepr;":"⋞","&cuesc;":"⋟","&cularr;":"↶","&cularrp;":"⤽","&cup;":"∪","&cupbrcap;":"⩈","&cupcap;":"⩆","&cupcup;":"⩊","&cupdot;":"⊍","&cupor;":"⩅","&cups;":"∪︀","&curarr;":"↷","&curarrm;":"⤼","&curlyeqprec;":"⋞","&curlyeqsucc;":"⋟","&curlyvee;":"⋎","&curlywedge;":"⋏","&curren":"¤","&curren;":"¤","&curvearrowleft;":"↶","&curvearrowright;":"↷","&cuvee;":"⋎","&cuwed;":"⋏","&cwconint;":"∲","&cwint;":"∱","&cylcty;":"⌭","&dArr;":"⇓","&dHar;":"⥥","&dagger;":"†","&daleth;":"ℸ","&darr;":"↓","&dash;":"‐","&dashv;":"⊣","&dbkarow;":"⤏","&dblac;":"˝","&dcaron;":"ď","&dcy;":"д","&dd;":"ⅆ","&ddagger;":"‡","&ddarr;":"⇊","&ddotseq;":"⩷","&deg":"°","&deg;":"°","&delta;":"δ","&demptyv;":"⦱","&dfisht;":"⥿","&dfr;":"𝔡","&dharl;":"⇃","&dharr;":"⇂","&diam;":"⋄","&diamond;":"⋄","&diamondsuit;":"♦","&diams;":"♦","&die;":"¨","&digamma;":"ϝ","&disin;":"⋲","&div;":"÷","&divide":"÷","&divide;":"÷","&divideontimes;":"⋇","&divonx;":"⋇","&djcy;":"ђ","&dlcorn;":"⌞","&dlcrop;":"⌍","&dollar;":"$","&dopf;":"𝕕","&dot;":"˙","&doteq;":"≐","&doteqdot;":"≑","&dotminus;":"∸","&dotplus;":"∔","&dotsquare;":"⊡","&doublebarwedge;":"⌆","&downarrow;":"↓","&downdownarrows;":"⇊","&downharpoonleft;":"⇃","&downharpoonright;":"⇂","&drbkarow;":"⤐","&drcorn;":"⌟","&drcrop;":"⌌","&dscr;":"𝒹","&dscy;":"ѕ","&dsol;":"⧶","&dstrok;":"đ","&dtdot;":"⋱","&dtri;":"▿","&dtrif;":"▾","&duarr;":"⇵","&duhar;":"⥯","&dwangle;":"⦦","&dzcy;":"џ","&dzigrarr;":"⟿","&eDDot;":"⩷","&eDot;":"≑","&eacute":"é","&eacute;":"é","&easter;":"⩮","&ecaron;":"ě","&ecir;":"≖","&ecirc":"ê","&ecirc;":"ê","&ecolon;":"≕","&ecy;":"э","&edot;":"ė","&ee;":"ⅇ","&efDot;":"≒","&efr;":"𝔢","&eg;":"⪚","&egrave":"è","&egrave;":"è","&egs;":"⪖","&egsdot;":"⪘","&el;":"⪙","&elinters;":"⏧","&ell;":"ℓ","&els;":"⪕","&elsdot;":"⪗","&emacr;":"ē","&empty;":"∅","&emptyset;":"∅","&emptyv;":"∅","&emsp13;":" ","&emsp14;":" ","&emsp;":" ","&eng;":"ŋ","&ensp;":" ","&eogon;":"ę","&eopf;":"𝕖","&epar;":"⋕","&eparsl;":"⧣","&eplus;":"⩱","&epsi;":"ε","&epsilon;":"ε","&epsiv;":"ϵ","&eqcirc;":"≖","&eqcolon;":"≕","&eqsim;":"≂","&eqslantgtr;":"⪖","&eqslantless;":"⪕","&equals;":"=","&equest;":"≟","&equiv;":"≡","&equivDD;":"⩸","&eqvparsl;":"⧥","&erDot;":"≓","&erarr;":"⥱","&escr;":"ℯ","&esdot;":"≐","&esim;":"≂","&eta;":"η","&eth":"ð","&eth;":"ð","&euml":"ë","&euml;":"ë","&euro;":"€","&excl;":"!","&exist;":"∃","&expectation;":"ℰ","&exponentiale;":"ⅇ","&fallingdotseq;":"≒","&fcy;":"ф","&female;":"♀","&ffilig;":"ffi","&fflig;":"ff","&ffllig;":"ffl","&ffr;":"𝔣","&filig;":"fi","&fjlig;":"fj","&flat;":"♭","&fllig;":"fl","&fltns;":"▱","&fnof;":"ƒ","&fopf;":"𝕗","&forall;":"∀","&fork;":"⋔","&forkv;":"⫙","&fpartint;":"⨍","&frac12":"½","&frac12;":"½","&frac13;":"⅓","&frac14":"¼","&frac14;":"¼","&frac15;":"⅕","&frac16;":"⅙","&frac18;":"⅛","&frac23;":"⅔","&frac25;":"⅖","&frac34":"¾","&frac34;":"¾","&frac35;":"⅗","&frac38;":"⅜","&frac45;":"⅘","&frac56;":"⅚","&frac58;":"⅝","&frac78;":"⅞","&frasl;":"⁄","&frown;":"⌢","&fscr;":"𝒻","&gE;":"≧","&gEl;":"⪌","&gacute;":"ǵ","&gamma;":"γ","&gammad;":"ϝ","&gap;":"⪆","&gbreve;":"ğ","&gcirc;":"ĝ","&gcy;":"г","&gdot;":"ġ","&ge;":"≥","&gel;":"⋛","&geq;":"≥","&geqq;":"≧","&geqslant;":"⩾","&ges;":"⩾","&gescc;":"⪩","&gesdot;":"⪀","&gesdoto;":"⪂","&gesdotol;":"⪄","&gesl;":"⋛︀","&gesles;":"⪔","&gfr;":"𝔤","&gg;":"≫","&ggg;":"⋙","&gimel;":"ℷ","&gjcy;":"ѓ","&gl;":"≷","&glE;":"⪒","&gla;":"⪥","&glj;":"⪤","&gnE;":"≩","&gnap;":"⪊","&gnapprox;":"⪊","&gne;":"⪈","&gneq;":"⪈","&gneqq;":"≩","&gnsim;":"⋧","&gopf;":"𝕘","&grave;":"`","&gscr;":"ℊ","&gsim;":"≳","&gsime;":"⪎","&gsiml;":"⪐","&gt":">","&gt;":">","&gtcc;":"⪧","&gtcir;":"⩺","&gtdot;":"⋗","&gtlPar;":"⦕","&gtquest;":"⩼","&gtrapprox;":"⪆","&gtrarr;":"⥸","&gtrdot;":"⋗","&gtreqless;":"⋛","&gtreqqless;":"⪌","&gtrless;":"≷","&gtrsim;":"≳","&gvertneqq;":"≩︀","&gvnE;":"≩︀","&hArr;":"⇔","&hairsp;":" ","&half;":"½","&hamilt;":"ℋ","&hardcy;":"ъ","&harr;":"↔","&harrcir;":"⥈","&harrw;":"↭","&hbar;":"ℏ","&hcirc;":"ĥ","&hearts;":"♥","&heartsuit;":"♥","&hellip;":"…","&hercon;":"⊹","&hfr;":"𝔥","&hksearow;":"⤥","&hkswarow;":"⤦","&hoarr;":"⇿","&homtht;":"∻","&hookleftarrow;":"↩","&hookrightarrow;":"↪","&hopf;":"𝕙","&horbar;":"―","&hscr;":"𝒽","&hslash;":"ℏ","&hstrok;":"ħ","&hybull;":"⁃","&hyphen;":"‐","&iacute":"í","&iacute;":"í","&ic;":"⁣","&icirc":"î","&icirc;":"î","&icy;":"и","&iecy;":"е","&iexcl":"¡","&iexcl;":"¡","&iff;":"⇔","&ifr;":"𝔦","&igrave":"ì","&igrave;":"ì","&ii;":"ⅈ","&iiiint;":"⨌","&iiint;":"∭","&iinfin;":"⧜","&iiota;":"℩","&ijlig;":"ij","&imacr;":"ī","&image;":"ℑ","&imagline;":"ℐ","&imagpart;":"ℑ","&imath;":"ı","&imof;":"⊷","&imped;":"Ƶ","&in;":"∈","&incare;":"℅","&infin;":"∞","&infintie;":"⧝","&inodot;":"ı","&int;":"∫","&intcal;":"⊺","&integers;":"ℤ","&intercal;":"⊺","&intlarhk;":"⨗","&intprod;":"⨼","&iocy;":"ё","&iogon;":"į","&iopf;":"𝕚","&iota;":"ι","&iprod;":"⨼","&iquest":"¿","&iquest;":"¿","&iscr;":"𝒾","&isin;":"∈","&isinE;":"⋹","&isindot;":"⋵","&isins;":"⋴","&isinsv;":"⋳","&isinv;":"∈","&it;":"⁢","&itilde;":"ĩ","&iukcy;":"і","&iuml":"ï","&iuml;":"ï","&jcirc;":"ĵ","&jcy;":"й","&jfr;":"𝔧","&jmath;":"ȷ","&jopf;":"𝕛","&jscr;":"𝒿","&jsercy;":"ј","&jukcy;":"є","&kappa;":"κ","&kappav;":"ϰ","&kcedil;":"ķ","&kcy;":"к","&kfr;":"𝔨","&kgreen;":"ĸ","&khcy;":"х","&kjcy;":"ќ","&kopf;":"𝕜","&kscr;":"𝓀","&lAarr;":"⇚","&lArr;":"⇐","&lAtail;":"⤛","&lBarr;":"⤎","&lE;":"≦","&lEg;":"⪋","&lHar;":"⥢","&lacute;":"ĺ","&laemptyv;":"⦴","&lagran;":"ℒ","&lambda;":"λ","&lang;":"⟨","&langd;":"⦑","&langle;":"⟨","&lap;":"⪅","&laquo":"«","&laquo;":"«","&larr;":"←","&larrb;":"⇤","&larrbfs;":"⤟","&larrfs;":"⤝","&larrhk;":"↩","&larrlp;":"↫","&larrpl;":"⤹","&larrsim;":"⥳","&larrtl;":"↢","&lat;":"⪫","&latail;":"⤙","&late;":"⪭","&lates;":"⪭︀","&lbarr;":"⤌","&lbbrk;":"❲","&lbrace;":"{","&lbrack;":"[","&lbrke;":"⦋","&lbrksld;":"⦏","&lbrkslu;":"⦍","&lcaron;":"ľ","&lcedil;":"ļ","&lceil;":"⌈","&lcub;":"{","&lcy;":"л","&ldca;":"⤶","&ldquo;":"“","&ldquor;":"„","&ldrdhar;":"⥧","&ldrushar;":"⥋","&ldsh;":"↲","&le;":"≤","&leftarrow;":"←","&leftarrowtail;":"↢","&leftharpoondown;":"↽","&leftharpoonup;":"↼","&leftleftarrows;":"⇇","&leftrightarrow;":"↔","&leftrightarrows;":"⇆","&leftrightharpoons;":"⇋","&leftrightsquigarrow;":"↭","&leftthreetimes;":"⋋","&leg;":"⋚","&leq;":"≤","&leqq;":"≦","&leqslant;":"⩽","&les;":"⩽","&lescc;":"⪨","&lesdot;":"⩿","&lesdoto;":"⪁","&lesdotor;":"⪃","&lesg;":"⋚︀","&lesges;":"⪓","&lessapprox;":"⪅","&lessdot;":"⋖","&lesseqgtr;":"⋚","&lesseqqgtr;":"⪋","&lessgtr;":"≶","&lesssim;":"≲","&lfisht;":"⥼","&lfloor;":"⌊","&lfr;":"𝔩","&lg;":"≶","&lgE;":"⪑","&lhard;":"↽","&lharu;":"↼","&lharul;":"⥪","&lhblk;":"▄","&ljcy;":"љ","&ll;":"≪","&llarr;":"⇇","&llcorner;":"⌞","&llhard;":"⥫","&lltri;":"◺","&lmidot;":"ŀ","&lmoust;":"⎰","&lmoustache;":"⎰","&lnE;":"≨","&lnap;":"⪉","&lnapprox;":"⪉","&lne;":"⪇","&lneq;":"⪇","&lneqq;":"≨","&lnsim;":"⋦","&loang;":"⟬","&loarr;":"⇽","&lobrk;":"⟦","&longleftarrow;":"⟵","&longleftrightarrow;":"⟷","&longmapsto;":"⟼","&longrightarrow;":"⟶","&looparrowleft;":"↫","&looparrowright;":"↬","&lopar;":"⦅","&lopf;":"𝕝","&loplus;":"⨭","&lotimes;":"⨴","&lowast;":"∗","&lowbar;":"_","&loz;":"◊","&lozenge;":"◊","&lozf;":"⧫","&lpar;":"(","&lparlt;":"⦓","&lrarr;":"⇆","&lrcorner;":"⌟","&lrhar;":"⇋","&lrhard;":"⥭","&lrm;":"‎","&lrtri;":"⊿","&lsaquo;":"‹","&lscr;":"𝓁","&lsh;":"↰","&lsim;":"≲","&lsime;":"⪍","&lsimg;":"⪏","&lsqb;":"[","&lsquo;":"‘","&lsquor;":"‚","&lstrok;":"ł","&lt":"<","&lt;":"<","&ltcc;":"⪦","&ltcir;":"⩹","&ltdot;":"⋖","&lthree;":"⋋","&ltimes;":"⋉","&ltlarr;":"⥶","&ltquest;":"⩻","&ltrPar;":"⦖","&ltri;":"◃","&ltrie;":"⊴","&ltrif;":"◂","&lurdshar;":"⥊","&luruhar;":"⥦","&lvertneqq;":"≨︀","&lvnE;":"≨︀","&mDDot;":"∺","&macr":"¯","&macr;":"¯","&male;":"♂","&malt;":"✠","&maltese;":"✠","&map;":"↦","&mapsto;":"↦","&mapstodown;":"↧","&mapstoleft;":"↤","&mapstoup;":"↥","&marker;":"▮","&mcomma;":"⨩","&mcy;":"м","&mdash;":"—","&measuredangle;":"∡","&mfr;":"𝔪","&mho;":"℧","&micro":"µ","&micro;":"µ","&mid;":"∣","&midast;":"*","&midcir;":"⫰","&middot":"·","&middot;":"·","&minus;":"−","&minusb;":"⊟","&minusd;":"∸","&minusdu;":"⨪","&mlcp;":"⫛","&mldr;":"…","&mnplus;":"∓","&models;":"⊧","&mopf;":"𝕞","&mp;":"∓","&mscr;":"𝓂","&mstpos;":"∾","&mu;":"μ","&multimap;":"⊸","&mumap;":"⊸","&nGg;":"⋙̸","&nGt;":"≫⃒","&nGtv;":"≫̸","&nLeftarrow;":"⇍","&nLeftrightarrow;":"⇎","&nLl;":"⋘̸","&nLt;":"≪⃒","&nLtv;":"≪̸","&nRightarrow;":"⇏","&nVDash;":"⊯","&nVdash;":"⊮","&nabla;":"∇","&nacute;":"ń","&nang;":"∠⃒","&nap;":"≉","&napE;":"⩰̸","&napid;":"≋̸","&napos;":"ʼn","&napprox;":"≉","&natur;":"♮","&natural;":"♮","&naturals;":"ℕ","&nbsp":" ","&nbsp;":" ","&nbump;":"≎̸","&nbumpe;":"≏̸","&ncap;":"⩃","&ncaron;":"ň","&ncedil;":"ņ","&ncong;":"≇","&ncongdot;":"⩭̸","&ncup;":"⩂","&ncy;":"н","&ndash;":"–","&ne;":"≠","&neArr;":"⇗","&nearhk;":"⤤","&nearr;":"↗","&nearrow;":"↗","&nedot;":"≐̸","&nequiv;":"≢","&nesear;":"⤨","&nesim;":"≂̸","&nexist;":"∄","&nexists;":"∄","&nfr;":"𝔫","&ngE;":"≧̸","&nge;":"≱","&ngeq;":"≱","&ngeqq;":"≧̸","&ngeqslant;":"⩾̸","&nges;":"⩾̸","&ngsim;":"≵","&ngt;":"≯","&ngtr;":"≯","&nhArr;":"⇎","&nharr;":"↮","&nhpar;":"⫲","&ni;":"∋","&nis;":"⋼","&nisd;":"⋺","&niv;":"∋","&njcy;":"њ","&nlArr;":"⇍","&nlE;":"≦̸","&nlarr;":"↚","&nldr;":"‥","&nle;":"≰","&nleftarrow;":"↚","&nleftrightarrow;":"↮","&nleq;":"≰","&nleqq;":"≦̸","&nleqslant;":"⩽̸","&nles;":"⩽̸","&nless;":"≮","&nlsim;":"≴","&nlt;":"≮","&nltri;":"⋪","&nltrie;":"⋬","&nmid;":"∤","&nopf;":"𝕟","&not":"¬","&not;":"¬","&notin;":"∉","&notinE;":"⋹̸","&notindot;":"⋵̸","&notinva;":"∉","&notinvb;":"⋷","&notinvc;":"⋶","&notni;":"∌","&notniva;":"∌","&notnivb;":"⋾","&notnivc;":"⋽","&npar;":"∦","&nparallel;":"∦","&nparsl;":"⫽⃥","&npart;":"∂̸","&npolint;":"⨔","&npr;":"⊀","&nprcue;":"⋠","&npre;":"⪯̸","&nprec;":"⊀","&npreceq;":"⪯̸","&nrArr;":"⇏","&nrarr;":"↛","&nrarrc;":"⤳̸","&nrarrw;":"↝̸","&nrightarrow;":"↛","&nrtri;":"⋫","&nrtrie;":"⋭","&nsc;":"⊁","&nsccue;":"⋡","&nsce;":"⪰̸","&nscr;":"𝓃","&nshortmid;":"∤","&nshortparallel;":"∦","&nsim;":"≁","&nsime;":"≄","&nsimeq;":"≄","&nsmid;":"∤","&nspar;":"∦","&nsqsube;":"⋢","&nsqsupe;":"⋣","&nsub;":"⊄","&nsubE;":"⫅̸","&nsube;":"⊈","&nsubset;":"⊂⃒","&nsubseteq;":"⊈","&nsubseteqq;":"⫅̸","&nsucc;":"⊁","&nsucceq;":"⪰̸","&nsup;":"⊅","&nsupE;":"⫆̸","&nsupe;":"⊉","&nsupset;":"⊃⃒","&nsupseteq;":"⊉","&nsupseteqq;":"⫆̸","&ntgl;":"≹","&ntilde":"ñ","&ntilde;":"ñ","&ntlg;":"≸","&ntriangleleft;":"⋪","&ntrianglelefteq;":"⋬","&ntriangleright;":"⋫","&ntrianglerighteq;":"⋭","&nu;":"ν","&num;":"#","&numero;":"№","&numsp;":" ","&nvDash;":"⊭","&nvHarr;":"⤄","&nvap;":"≍⃒","&nvdash;":"⊬","&nvge;":"≥⃒","&nvgt;":">⃒","&nvinfin;":"⧞","&nvlArr;":"⤂","&nvle;":"≤⃒","&nvlt;":"<⃒","&nvltrie;":"⊴⃒","&nvrArr;":"⤃","&nvrtrie;":"⊵⃒","&nvsim;":"∼⃒","&nwArr;":"⇖","&nwarhk;":"⤣","&nwarr;":"↖","&nwarrow;":"↖","&nwnear;":"⤧","&oS;":"Ⓢ","&oacute":"ó","&oacute;":"ó","&oast;":"⊛","&ocir;":"⊚","&ocirc":"ô","&ocirc;":"ô","&ocy;":"о","&odash;":"⊝","&odblac;":"ő","&odiv;":"⨸","&odot;":"⊙","&odsold;":"⦼","&oelig;":"œ","&ofcir;":"⦿","&ofr;":"𝔬","&ogon;":"˛","&ograve":"ò","&ograve;":"ò","&ogt;":"⧁","&ohbar;":"⦵","&ohm;":"Ω","&oint;":"∮","&olarr;":"↺","&olcir;":"⦾","&olcross;":"⦻","&oline;":"‾","&olt;":"⧀","&omacr;":"ō","&omega;":"ω","&omicron;":"ο","&omid;":"⦶","&ominus;":"⊖","&oopf;":"𝕠","&opar;":"⦷","&operp;":"⦹","&oplus;":"⊕","&or;":"∨","&orarr;":"↻","&ord;":"⩝","&order;":"ℴ","&orderof;":"ℴ","&ordf":"ª","&ordf;":"ª","&ordm":"º","&ordm;":"º","&origof;":"⊶","&oror;":"⩖","&orslope;":"⩗","&orv;":"⩛","&oscr;":"ℴ","&oslash":"ø","&oslash;":"ø","&osol;":"⊘","&otilde":"õ","&otilde;":"õ","&otimes;":"⊗","&otimesas;":"⨶","&ouml":"ö","&ouml;":"ö","&ovbar;":"⌽","&par;":"∥","&para":"¶","&para;":"¶","&parallel;":"∥","&parsim;":"⫳","&parsl;":"⫽","&part;":"∂","&pcy;":"п","&percnt;":"%","&period;":".","&permil;":"‰","&perp;":"⊥","&pertenk;":"‱","&pfr;":"𝔭","&phi;":"φ","&phiv;":"ϕ","&phmmat;":"ℳ","&phone;":"☎","&pi;":"π","&pitchfork;":"⋔","&piv;":"ϖ","&planck;":"ℏ","&planckh;":"ℎ","&plankv;":"ℏ","&plus;":"+","&plusacir;":"⨣","&plusb;":"⊞","&pluscir;":"⨢","&plusdo;":"∔","&plusdu;":"⨥","&pluse;":"⩲","&plusmn":"±","&plusmn;":"±","&plussim;":"⨦","&plustwo;":"⨧","&pm;":"±","&pointint;":"⨕","&popf;":"𝕡","&pound":"£","&pound;":"£","&pr;":"≺","&prE;":"⪳","&prap;":"⪷","&prcue;":"≼","&pre;":"⪯","&prec;":"≺","&precapprox;":"⪷","&preccurlyeq;":"≼","&preceq;":"⪯","&precnapprox;":"⪹","&precneqq;":"⪵","&precnsim;":"⋨","&precsim;":"≾","&prime;":"′","&primes;":"ℙ","&prnE;":"⪵","&prnap;":"⪹","&prnsim;":"⋨","&prod;":"∏","&profalar;":"⌮","&profline;":"⌒","&profsurf;":"⌓","&prop;":"∝","&propto;":"∝","&prsim;":"≾","&prurel;":"⊰","&pscr;":"𝓅","&psi;":"ψ","&puncsp;":" ","&qfr;":"𝔮","&qint;":"⨌","&qopf;":"𝕢","&qprime;":"⁗","&qscr;":"𝓆","&quaternions;":"ℍ","&quatint;":"⨖","&quest;":"?","&questeq;":"≟","&quot":'"',"&quot;":'"',"&rAarr;":"⇛","&rArr;":"⇒","&rAtail;":"⤜","&rBarr;":"⤏","&rHar;":"⥤","&race;":"∽̱","&racute;":"ŕ","&radic;":"√","&raemptyv;":"⦳","&rang;":"⟩","&rangd;":"⦒","&range;":"⦥","&rangle;":"⟩","&raquo":"»","&raquo;":"»","&rarr;":"→","&rarrap;":"⥵","&rarrb;":"⇥","&rarrbfs;":"⤠","&rarrc;":"⤳","&rarrfs;":"⤞","&rarrhk;":"↪","&rarrlp;":"↬","&rarrpl;":"⥅","&rarrsim;":"⥴","&rarrtl;":"↣","&rarrw;":"↝","&ratail;":"⤚","&ratio;":"∶","&rationals;":"ℚ","&rbarr;":"⤍","&rbbrk;":"❳","&rbrace;":"}","&rbrack;":"]","&rbrke;":"⦌","&rbrksld;":"⦎","&rbrkslu;":"⦐","&rcaron;":"ř","&rcedil;":"ŗ","&rceil;":"⌉","&rcub;":"}","&rcy;":"р","&rdca;":"⤷","&rdldhar;":"⥩","&rdquo;":"”","&rdquor;":"”","&rdsh;":"↳","&real;":"ℜ","&realine;":"ℛ","&realpart;":"ℜ","&reals;":"ℝ","&rect;":"▭","&reg":"®","&reg;":"®","&rfisht;":"⥽","&rfloor;":"⌋","&rfr;":"𝔯","&rhard;":"⇁","&rharu;":"⇀","&rharul;":"⥬","&rho;":"ρ","&rhov;":"ϱ","&rightarrow;":"→","&rightarrowtail;":"↣","&rightharpoondown;":"⇁","&rightharpoonup;":"⇀","&rightleftarrows;":"⇄","&rightleftharpoons;":"⇌","&rightrightarrows;":"⇉","&rightsquigarrow;":"↝","&rightthreetimes;":"⋌","&ring;":"˚","&risingdotseq;":"≓","&rlarr;":"⇄","&rlhar;":"⇌","&rlm;":"‏","&rmoust;":"⎱","&rmoustache;":"⎱","&rnmid;":"⫮","&roang;":"⟭","&roarr;":"⇾","&robrk;":"⟧","&ropar;":"⦆","&ropf;":"𝕣","&roplus;":"⨮","&rotimes;":"⨵","&rpar;":")","&rpargt;":"⦔","&rppolint;":"⨒","&rrarr;":"⇉","&rsaquo;":"›","&rscr;":"𝓇","&rsh;":"↱","&rsqb;":"]","&rsquo;":"’","&rsquor;":"’","&rthree;":"⋌","&rtimes;":"⋊","&rtri;":"▹","&rtrie;":"⊵","&rtrif;":"▸","&rtriltri;":"⧎","&ruluhar;":"⥨","&rx;":"℞","&sacute;":"ś","&sbquo;":"‚","&sc;":"≻","&scE;":"⪴","&scap;":"⪸","&scaron;":"š","&sccue;":"≽","&sce;":"⪰","&scedil;":"ş","&scirc;":"ŝ","&scnE;":"⪶","&scnap;":"⪺","&scnsim;":"⋩","&scpolint;":"⨓","&scsim;":"≿","&scy;":"с","&sdot;":"⋅","&sdotb;":"⊡","&sdote;":"⩦","&seArr;":"⇘","&searhk;":"⤥","&searr;":"↘","&searrow;":"↘","&sect":"§","&sect;":"§","&semi;":";","&seswar;":"⤩","&setminus;":"∖","&setmn;":"∖","&sext;":"✶","&sfr;":"𝔰","&sfrown;":"⌢","&sharp;":"♯","&shchcy;":"щ","&shcy;":"ш","&shortmid;":"∣","&shortparallel;":"∥","&shy":"­","&shy;":"­","&sigma;":"σ","&sigmaf;":"ς","&sigmav;":"ς","&sim;":"∼","&simdot;":"⩪","&sime;":"≃","&simeq;":"≃","&simg;":"⪞","&simgE;":"⪠","&siml;":"⪝","&simlE;":"⪟","&simne;":"≆","&simplus;":"⨤","&simrarr;":"⥲","&slarr;":"←","&smallsetminus;":"∖","&smashp;":"⨳","&smeparsl;":"⧤","&smid;":"∣","&smile;":"⌣","&smt;":"⪪","&smte;":"⪬","&smtes;":"⪬︀","&softcy;":"ь","&sol;":"/","&solb;":"⧄","&solbar;":"⌿","&sopf;":"𝕤","&spades;":"♠","&spadesuit;":"♠","&spar;":"∥","&sqcap;":"⊓","&sqcaps;":"⊓︀","&sqcup;":"⊔","&sqcups;":"⊔︀","&sqsub;":"⊏","&sqsube;":"⊑","&sqsubset;":"⊏","&sqsubseteq;":"⊑","&sqsup;":"⊐","&sqsupe;":"⊒","&sqsupset;":"⊐","&sqsupseteq;":"⊒","&squ;":"□","&square;":"□","&squarf;":"▪","&squf;":"▪","&srarr;":"→","&sscr;":"𝓈","&ssetmn;":"∖","&ssmile;":"⌣","&sstarf;":"⋆","&star;":"☆","&starf;":"★","&straightepsilon;":"ϵ","&straightphi;":"ϕ","&strns;":"¯","&sub;":"⊂","&subE;":"⫅","&subdot;":"⪽","&sube;":"⊆","&subedot;":"⫃","&submult;":"⫁","&subnE;":"⫋","&subne;":"⊊","&subplus;":"⪿","&subrarr;":"⥹","&subset;":"⊂","&subseteq;":"⊆","&subseteqq;":"⫅","&subsetneq;":"⊊","&subsetneqq;":"⫋","&subsim;":"⫇","&subsub;":"⫕","&subsup;":"⫓","&succ;":"≻","&succapprox;":"⪸","&succcurlyeq;":"≽","&succeq;":"⪰","&succnapprox;":"⪺","&succneqq;":"⪶","&succnsim;":"⋩","&succsim;":"≿","&sum;":"∑","&sung;":"♪","&sup1":"¹","&sup1;":"¹","&sup2":"²","&sup2;":"²","&sup3":"³","&sup3;":"³","&sup;":"⊃","&supE;":"⫆","&supdot;":"⪾","&supdsub;":"⫘","&supe;":"⊇","&supedot;":"⫄","&suphsol;":"⟉","&suphsub;":"⫗","&suplarr;":"⥻","&supmult;":"⫂","&supnE;":"⫌","&supne;":"⊋","&supplus;":"⫀","&supset;":"⊃","&supseteq;":"⊇","&supseteqq;":"⫆","&supsetneq;":"⊋","&supsetneqq;":"⫌","&supsim;":"⫈","&supsub;":"⫔","&supsup;":"⫖","&swArr;":"⇙","&swarhk;":"⤦","&swarr;":"↙","&swarrow;":"↙","&swnwar;":"⤪","&szlig":"ß","&szlig;":"ß","&target;":"⌖","&tau;":"τ","&tbrk;":"⎴","&tcaron;":"ť","&tcedil;":"ţ","&tcy;":"т","&tdot;":"⃛","&telrec;":"⌕","&tfr;":"𝔱","&there4;":"∴","&therefore;":"∴","&theta;":"θ","&thetasym;":"ϑ","&thetav;":"ϑ","&thickapprox;":"≈","&thicksim;":"∼","&thinsp;":" ","&thkap;":"≈","&thksim;":"∼","&thorn":"þ","&thorn;":"þ","&tilde;":"˜","&times":"×","&times;":"×","&timesb;":"⊠","&timesbar;":"⨱","&timesd;":"⨰","&tint;":"∭","&toea;":"⤨","&top;":"⊤","&topbot;":"⌶","&topcir;":"⫱","&topf;":"𝕥","&topfork;":"⫚","&tosa;":"⤩","&tprime;":"‴","&trade;":"™","&triangle;":"▵","&triangledown;":"▿","&triangleleft;":"◃","&trianglelefteq;":"⊴","&triangleq;":"≜","&triangleright;":"▹","&trianglerighteq;":"⊵","&tridot;":"◬","&trie;":"≜","&triminus;":"⨺","&triplus;":"⨹","&trisb;":"⧍","&tritime;":"⨻","&trpezium;":"⏢","&tscr;":"𝓉","&tscy;":"ц","&tshcy;":"ћ","&tstrok;":"ŧ","&twixt;":"≬","&twoheadleftarrow;":"↞","&twoheadrightarrow;":"↠","&uArr;":"⇑","&uHar;":"⥣","&uacute":"ú","&uacute;":"ú","&uarr;":"↑","&ubrcy;":"ў","&ubreve;":"ŭ","&ucirc":"û","&ucirc;":"û","&ucy;":"у","&udarr;":"⇅","&udblac;":"ű","&udhar;":"⥮","&ufisht;":"⥾","&ufr;":"𝔲","&ugrave":"ù","&ugrave;":"ù","&uharl;":"↿","&uharr;":"↾","&uhblk;":"▀","&ulcorn;":"⌜","&ulcorner;":"⌜","&ulcrop;":"⌏","&ultri;":"◸","&umacr;":"ū","&uml":"¨","&uml;":"¨","&uogon;":"ų","&uopf;":"𝕦","&uparrow;":"↑","&updownarrow;":"↕","&upharpoonleft;":"↿","&upharpoonright;":"↾","&uplus;":"⊎","&upsi;":"υ","&upsih;":"ϒ","&upsilon;":"υ","&upuparrows;":"⇈","&urcorn;":"⌝","&urcorner;":"⌝","&urcrop;":"⌎","&uring;":"ů","&urtri;":"◹","&uscr;":"𝓊","&utdot;":"⋰","&utilde;":"ũ","&utri;":"▵","&utrif;":"▴","&uuarr;":"⇈","&uuml":"ü","&uuml;":"ü","&uwangle;":"⦧","&vArr;":"⇕","&vBar;":"⫨","&vBarv;":"⫩","&vDash;":"⊨","&vangrt;":"⦜","&varepsilon;":"ϵ","&varkappa;":"ϰ","&varnothing;":"∅","&varphi;":"ϕ","&varpi;":"ϖ","&varpropto;":"∝","&varr;":"↕","&varrho;":"ϱ","&varsigma;":"ς","&varsubsetneq;":"⊊︀","&varsubsetneqq;":"⫋︀","&varsupsetneq;":"⊋︀","&varsupsetneqq;":"⫌︀","&vartheta;":"ϑ","&vartriangleleft;":"⊲","&vartriangleright;":"⊳","&vcy;":"в","&vdash;":"⊢","&vee;":"∨","&veebar;":"⊻","&veeeq;":"≚","&vellip;":"⋮","&verbar;":"|","&vert;":"|","&vfr;":"𝔳","&vltri;":"⊲","&vnsub;":"⊂⃒","&vnsup;":"⊃⃒","&vopf;":"𝕧","&vprop;":"∝","&vrtri;":"⊳","&vscr;":"𝓋","&vsubnE;":"⫋︀","&vsubne;":"⊊︀","&vsupnE;":"⫌︀","&vsupne;":"⊋︀","&vzigzag;":"⦚","&wcirc;":"ŵ","&wedbar;":"⩟","&wedge;":"∧","&wedgeq;":"≙","&weierp;":"℘","&wfr;":"𝔴","&wopf;":"𝕨","&wp;":"℘","&wr;":"≀","&wreath;":"≀","&wscr;":"𝓌","&xcap;":"⋂","&xcirc;":"◯","&xcup;":"⋃","&xdtri;":"▽","&xfr;":"𝔵","&xhArr;":"⟺","&xharr;":"⟷","&xi;":"ξ","&xlArr;":"⟸","&xlarr;":"⟵","&xmap;":"⟼","&xnis;":"⋻","&xodot;":"⨀","&xopf;":"𝕩","&xoplus;":"⨁","&xotime;":"⨂","&xrArr;":"⟹","&xrarr;":"⟶","&xscr;":"𝓍","&xsqcup;":"⨆","&xuplus;":"⨄","&xutri;":"△","&xvee;":"⋁","&xwedge;":"⋀","&yacute":"ý","&yacute;":"ý","&yacy;":"я","&ycirc;":"ŷ","&ycy;":"ы","&yen":"¥","&yen;":"¥","&yfr;":"𝔶","&yicy;":"ї","&yopf;":"𝕪","&yscr;":"𝓎","&yucy;":"ю","&yuml":"ÿ","&yuml;":"ÿ","&zacute;":"ź","&zcaron;":"ž","&zcy;":"з","&zdot;":"ż","&zeetrf;":"ℨ","&zeta;":"ζ","&zfr;":"𝔷","&zhcy;":"ж","&zigrarr;":"⇝","&zopf;":"𝕫","&zscr;":"𝓏","&zwj;":"‍","&zwnj;":"‌"};function b(e){return e.trim().replace(/[<>"'?&]/g,(e=>{let r=e.charCodeAt(0).toString(16);return r.length<2&&(r="0"+r),"&#x"+r.toUpperCase()+";"}))}function v(e){return[].concat(e.name||[]).concat(e.name?`<${e.address}>`:e.address).join(" ")}function w(e){let r=[],t=(e,a)=>{if(a&&r.push(", "),e.group){let a=`${e.name}:`,s=";";r.push(a),e.group.forEach(t),r.push(s)}else r.push(v(e))};return e.forEach(t),r.join("")}function y(e){return`<a href="mailto:${b(e.address)}" class="postal-email-address">${b(e.name||`<${e.address}>`)}</a>`}function q(e){let r=[],t=(e,a)=>{if(a&&r.push('<span class="postal-email-address-separator">, </span>'),e.group){let a=`<span class="postal-email-address-group">${b(e.name)}:</span>`,s='<span class="postal-email-address-group">;</span>';r.push(a),e.group.forEach(t),r.push(s)}else r.push(y(e))};return e.forEach(t),r.join(" ")}function k(e){let r=[];if(e.from&&r.push({key:"From",val:v(e.from)}),e.subject&&r.push({key:"Subject",val:e.subject}),e.date){let t={year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1},a="undefined"==typeof Intl?e.date:new Intl.DateTimeFormat("default",t).format(new Date(e.date));r.push({key:"Date",val:a})}e.to&&e.to.length&&r.push({key:"To",val:w(e.to)}),e.cc&&e.cc.length&&r.push({key:"Cc",val:w(e.cc)}),e.bcc&&e.bcc.length&&r.push({key:"Bcc",val:w(e.bcc)});let t=r.map((e=>e.key.length)).reduce(((e,r)=>r>e?r:e),0);r=r.flatMap((e=>{let r=t-e.key.length,a=`${e.key}: ${" ".repeat(r)}`,s=`${" ".repeat(e.key.length+1)} ${" ".repeat(r)}`;return function(e,r,t){r=r||76;let a,s,o=0,i=(e=(e||"").toString()).length,n="";for(;o<i;){if(a=e.substr(o,r),a.length<r){n+=a;break}(s=a.match(/^[^\n\r]*(\r?\n|\r)/))?(a=s[0],n+=a,o+=a.length):((s=a.match(/(\s+)[^\s]*$/))&&s[0].length-(s[1]||"").length<a.length?a=a.substr(0,a.length-(s[0].length-(s[1]||"").length)):(s=e.substr(o+a.length).match(/^[^\s]+(\s*)/))&&(a+=s[0].substr(0,s[0].length-0)),n+=a,o+=a.length,o<i&&(n+="\r\n"))}return n}(e.val,80).split(/\r?\n/).map((e=>e.trim())).map(((e,r)=>`${r?s:a}${e}`))})),console.log(r),console.log(r.map((e=>e.length)));let a=r.map((e=>e.length)).reduce(((e,r)=>r>e?r:e),0);console.log(a);let s="-".repeat(a);return`\n${s}\n${r.join("\n")}\n${s}\n`}function x(e){let r=[];if(e.from&&r.push(`<div class="postal-email-header-key">From</div><div class="postal-email-header-value">${y(e.from)}</div>`),e.subject&&r.push(`<div class="postal-email-header-key">Subject</div><div class="postal-email-header-value postal-email-header-subject">${b(e.subject)}</div>`),e.date){let t={year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1},a="undefined"==typeof Intl?e.date:new Intl.DateTimeFormat("default",t).format(new Date(e.date));r.push(`<div class="postal-email-header-key">Date</div><div class="postal-email-header-value postal-email-header-date" data-date="${b(e.date)}">${b(a)}</div>`)}return e.to&&e.to.length&&r.push(`<div class="postal-email-header-key">To</div><div class="postal-email-header-value">${q(e.to)}</div>`),e.cc&&e.cc.length&&r.push(`<div class="postal-email-header-key">Cc</div><div class="postal-email-header-value">${q(e.cc)}</div>`),e.bcc&&e.bcc.length&&r.push(`<div class="postal-email-header-key">Bcc</div><div class="postal-email-header-value">${q(e.bcc)}</div>`),`<div class="postal-email-header">${r.length?'<div class="postal-email-header-row">':""}${r.join('</div>\n<div class="postal-email-header-row">')}${r.length?"</div>":""}</div>`}class E{constructor(e){this.str=(e||"").toString(),this.operatorCurrent="",this.operatorExpecting="",this.node=null,this.escaped=!1,this.list=[],this.operators={'"':'"',"(":")","<":">",",":"",":":";",";":""}}tokenize(){let e,r=[];for(let r=0,t=this.str.length;r<t;r++)e=this.str.charAt(r),this.checkChar(e);return this.list.forEach((e=>{e.value=(e.value||"").toString().trim(),e.value&&r.push(e)})),r}checkChar(e){if(this.escaped);else{if(e===this.operatorExpecting)return this.node={type:"operator",value:e},this.list.push(this.node),this.node=null,this.operatorExpecting="",void(this.escaped=!1);if(!this.operatorExpecting&&e in this.operators)return this.node={type:"operator",value:e},this.list.push(this.node),this.node=null,this.operatorExpecting=this.operators[e],void(this.escaped=!1);if(['"',"'"].includes(this.operatorExpecting)&&"\\"===e)return void(this.escaped=!0)}this.node||(this.node={type:"text",value:""},this.list.push(this.node)),"\n"===e&&(e=" "),(e.charCodeAt(0)>=33||[" ","\t"].includes(e))&&(this.node.value+=e),this.escaped=!1}}const D=function e(r,t){t=t||{};let a=new E(r).tokenize(),s=[],o=[],i=[];if(a.forEach((e=>{"operator"!==e.type||","!==e.value&&";"!==e.value?o.push(e):(o.length&&s.push(o),o=[])})),o.length&&s.push(o),s.forEach((r=>{r=function(r){let t,a,s,o,i=!1,n="text",l=[],c={address:[],comment:[],group:[],text:[]};for(s=0,o=r.length;s<o;s++)if(t=r[s],"operator"===t.type)switch(t.value){case"<":n="address";break;case"(":n="comment";break;case":":n="group",i=!0;break;default:n="text"}else t.value&&("address"===n&&(t.value=t.value.replace(/^[^<]*<\s*/,"")),c[n].push(t.value));if(!c.text.length&&c.comment.length&&(c.text=c.comment,c.comment=[]),i)c.text=c.text.join(" "),l.push({name:p(c.text||a&&a.name),group:c.group.length?e(c.group.join(",")):[]});else{if(!c.address.length&&c.text.length){for(s=c.text.length-1;s>=0;s--)if(c.text[s].match(/^[^@\s]+@[^@\s]+$/)){c.address=c.text.splice(s,1);break}let e=function(e){return c.address.length?e:(c.address=[e.trim()]," ")};if(!c.address.length)for(s=c.text.length-1;s>=0&&(c.text[s]=c.text[s].replace(/\s*\b[^@\s]+@[^\s]+\b\s*/,e).trim(),!c.address.length);s--);}if(!c.text.length&&c.comment.length&&(c.text=c.comment,c.comment=[]),c.address.length>1&&(c.text=c.text.concat(c.address.splice(1))),c.text=c.text.join(" "),c.address=c.address.join(" "),!c.address&&i)return[];a={address:c.address||c.text||"",name:p(c.text||c.address||"")},a.address===a.name&&((a.address||"").match(/@/)?a.name="":a.address=""),l.push(a)}return l}(r),r.length&&(i=i.concat(r))})),t.flatten){let e=[],r=t=>{t.forEach((t=>{if(t.group)return r(t.group);e.push(t)}))};return r(i),e}return i};class T{constructor(){this.root=this.currentNode=new m({postalMime:this}),this.boundaries=[],this.textContent={},this.attachments=[],this.started=!1}async finalize(){await this.root.finalize()}async processLine(e,r){let t=this.boundaries;if(t.length&&e.length>2&&45===e[0]&&45===e[1])for(let a=t.length-1;a>=0;a--){let s=t[a];if(e.length!==s.value.length+2&&e.length!==s.value.length+4)continue;let o=e.length===s.value.length+4;if(o&&(45!==e[e.length-2]||45!==e[e.length-1]))continue;let i=!0;for(let r=0;r<s.value.length;r++)if(e[r+2]!==s.value[r]){i=!1;break}if(i)return o?(await s.node.finalize(),this.currentNode=s.node.parentNode||this.root):(await s.node.finalizeChildNodes(),this.currentNode=new m({postalMime:this,parentNode:s.node})),r?this.finalize():void 0}if(this.currentNode.feed(e),r)return this.finalize()}readLine(){let e=this.readPos,r=this.readPos,t=()=>({bytes:new Uint8Array(this.buf,e,r-e),done:this.readPos>=this.av.length});for(;this.readPos<this.av.length;){const e=this.av[this.readPos++];if(13!==e&&10!==e&&(r=this.readPos),10===e)return t()}return t()}async processNodeTree(){let e={},r=new Set,t=this.textMap=new Map,a=async(e,s,o)=>{if(s=s||!1,o=o||!1,e.contentType.multipart)"alternative"===e.contentType.multipart?s=e:"related"===e.contentType.multipart&&(o=e);else if("message/rfc822"===e.contentType.parsed.value&&"attachment"!==e.contentDisposition.parsed.value){const a=new T;e.subMessage=await a.parse(e.content),t.has(e)||t.set(e,{});let s=t.get(e);!e.subMessage.text&&e.subMessage.html||(s.plain=s.plain||[],s.plain.push({type:"subMessage",value:e.subMessage}),r.add("plain")),e.subMessage.html&&(s.html=s.html||[],s.html.push({type:"subMessage",value:e.subMessage}),r.add("html")),a.textMap&&a.textMap.forEach(((e,r)=>{t.set(r,e)}));for(let r of e.subMessage.attachments||[])this.attachments.push(r)}else if(!/^text\//i.test(e.contentType.parsed.value)&&"message/delivery-status"!==e.contentType.parsed.value||"attachment"===e.contentDisposition.parsed.value){if(e.content){let r={filename:p(e.contentDisposition.parsed.params.filename||e.contentType.parsed.params.name||null),mimeType:e.contentType.parsed.value,disposition:e.contentDisposition.parsed.value||null};o&&e.contentId&&(r.related=!0),e.contentId&&(r.contentId=e.contentId),r.content=e.content,this.attachments.push(r)}}else{let a=e.contentType.parsed.value.substr(e.contentType.parsed.value.indexOf("/")+1);"message/delivery-status"===e.contentType.parsed.value&&(a="plain");let o=s||e;t.has(o)||t.set(o,{});let i=t.get(o);i[a]=i[a]||[],i[a].push({type:"text",value:e.getTextContent()}),r.add(a)}for(let r of e.childNodes)await a(r,s,o)};await a(this.root,!1,[]),t.forEach((t=>{r.forEach((r=>{if(e[r]||(e[r]=[]),t[r])t[r].forEach((t=>{switch(t.type){case"text":e[r].push(t.value);break;case"subMessage":switch(r){case"html":e[r].push(x(t.value));break;case"plain":e[r].push(k(t.value))}}}));else{let a;switch(r){case"html":a="plain";break;case"plain":a="html"}(t[a]||[]).forEach((t=>{switch(t.type){case"text":switch(r){case"html":e[r].push("<div>"+b(t.value).replace(/\n/g,"<br />")+"</div>");break;case"plain":e[r].push(function(e){return e.replace(/&(#\d+|#x[a-f0-9]+|[a-z]+\d*);?/gi,((e,r)=>{if("string"==typeof f[e])return f[e];if("#"!==r.charAt(0)||";"!==e.charAt(e.length-1))return e;let t;t="x"===r.charAt(1)?parseInt(r.substr(2),16):parseInt(r.substr(1),10);var a="";return t>=55296&&t<=57343||t>1114111?"�":(t>65535&&(t-=65536,a+=String.fromCharCode(t>>>10&1023|55296),t=56320|1023&t),a+=String.fromCharCode(t))}))}(t.value.replace(/\r?\n/g,"").replace(/<\!\-\-.*?\-\->/gi," ").replace(/<br\b[^>]*>/gi,"\n").replace(/<\/?(p|div|table|tr|td|th)\b[^>]*>/gi,"\n\n").replace(/<script\b[^>]*>.*?<\/script\b[^>]*>/gi," ").replace(/^.*<body\b[^>]*>/i,"").replace(/^.*<\/head\b[^>]*>/i,"").replace(/^.*<\!doctype\b[^>]*>/i,"").replace(/<\/body\b[^>]*>.*$/i,"").replace(/<\/html\b[^>]*>.*$/i,"").replace(/<a\b[^>]*href\s*=\s*["']?([^\s"']+)[^>]*>/gi," ($1) ").replace(/<\/?(span|em|i|strong|b|u|a)\b[^>]*>/gi,"").replace(/<li\b[^>]*>[\n\u0001\s]*/gi,"* ").replace(/<hr\b[^>]*>/g,"\n-------------\n").replace(/<[^>]*>/g," ").replace(/\u0001/g,"\n").replace(/[ \t]+/g," ").replace(/^\s+$/gm,"").replace(/\n\n+/g,"\n\n").replace(/^\n+/,"\n").replace(/\n+$/,"\n")))}break;case"subMessage":switch(r){case"html":e[r].push(x(t.value));break;case"plain":e[r].push(k(t.value))}}}))}}))})),Object.keys(e).forEach((r=>{e[r]=e[r].join("\n")})),this.textContent=e}async parse(e){if(this.started)throw new Error("Can not reuse parser, create a new PostalMime object");for(this.started=!0,"string"==typeof(e=e||ArrayBuffer(0))&&(e=t.encode(e)),(e instanceof Blob||"[object Blob]"===Object.prototype.toString.call(e))&&(e=await c(e)),e.buffer instanceof ArrayBuffer&&(e=new Uint8Array(e).buffer),this.buf=e,this.av=new Uint8Array(e),this.readPos=0;this.readPos<this.av.length;){const e=this.readLine();await this.processLine(e.bytes,e.done)}await this.processNodeTree();let r={headers:this.root.headers.map((e=>({key:e.key,value:e.value}))).reverse()};for(let e of["from","sender","reply-to"]){let t=this.root.headers.find((r=>r.key===e));if(t&&t.value){let a=D(t.value);a&&a.length&&(r[e.replace(/\-(.)/g,((e,r)=>r.toUpperCase()))]=a[0])}}for(let e of["delivered-to","return-path"]){let t=this.root.headers.find((r=>r.key===e));if(t&&t.value){let a=D(t.value);a&&a.length&&a[0].address&&(r[e.replace(/\-(.)/g,((e,r)=>r.toUpperCase()))]=a[0].address)}}for(let e of["to","cc","bcc"]){let t=this.root.headers.filter((r=>r.key===e)),a=[];t.filter((e=>e&&e.value)).map((e=>D(e.value))).forEach((e=>a=a.concat(e||[]))),a&&a.length&&(r[e]=a)}for(let e of["subject","message-id","in-reply-to","references"]){let t=this.root.headers.find((r=>r.key===e));t&&t.value&&(r[e.replace(/\-(.)/g,((e,r)=>r.toUpperCase()))]=p(t.value))}let a=this.root.headers.find((e=>"date"===e.key));if(a){let e=new Date(a.value);e=e&&"Invalid Date"!==e.toString()?e.toISOString():a.value,r.date=e}return this.textContent&&this.textContent.html&&(r.html=this.textContent.html),this.textContent&&this.textContent.plain&&(r.text=this.textContent.plain),r.attachments=this.attachments,r}}exports.postalMime=r})();