@depup/miniflare 4.20260317.0-depup.0

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.
Files changed (91) hide show
  1. package/README.md +31 -0
  2. package/bootstrap.js +11 -0
  3. package/changes.json +10 -0
  4. package/dist/local-explorer-ui/assets/Breadcrumbs-7hjI0sYt.js +1 -0
  5. package/dist/local-explorer-ui/assets/TableSelect-_bi6l6Iv.js +25 -0
  6. package/dist/local-explorer-ui/assets/_className-gSkjniQn.js +1 -0
  7. package/dist/local-explorer-ui/assets/_databaseId-DWcfgBis.js +1 -0
  8. package/dist/local-explorer-ui/assets/_namespaceId-8ViM8VDL.js +1 -0
  9. package/dist/local-explorer-ui/assets/_objectId-X6x-JUph.js +1 -0
  10. package/dist/local-explorer-ui/assets/dropdown-DFeFcKfn-BCd_NRZS.js +1 -0
  11. package/dist/local-explorer-ui/assets/index-BFNDwiew.js +42 -0
  12. package/dist/local-explorer-ui/assets/index-CLSFsgi0.js +1 -0
  13. package/dist/local-explorer-ui/assets/index-KG4JeHCX.js +1 -0
  14. package/dist/local-explorer-ui/assets/index-mgoUmSld.css +1 -0
  15. package/dist/local-explorer-ui/assets/table-BUmvaBj8-v-EIZgOz.js +1 -0
  16. package/dist/local-explorer-ui/favicon.svg +3 -0
  17. package/dist/local-explorer-ui/index.html +14 -0
  18. package/dist/src/index.d.ts +8703 -0
  19. package/dist/src/index.js +83666 -0
  20. package/dist/src/index.js.map +6 -0
  21. package/dist/src/shared/dev-registry.worker.js +69801 -0
  22. package/dist/src/shared/dev-registry.worker.js.map +6 -0
  23. package/dist/src/workers/analytics-engine/analytics-engine.worker.js +15 -0
  24. package/dist/src/workers/analytics-engine/analytics-engine.worker.js.map +6 -0
  25. package/dist/src/workers/assets/assets-kv.worker.js +28 -0
  26. package/dist/src/workers/assets/assets-kv.worker.js.map +6 -0
  27. package/dist/src/workers/assets/assets.worker.js +9014 -0
  28. package/dist/src/workers/assets/assets.worker.js.map +6 -0
  29. package/dist/src/workers/assets/router.worker.js +9625 -0
  30. package/dist/src/workers/assets/router.worker.js.map +6 -0
  31. package/dist/src/workers/assets/rpc-proxy.worker.js +29 -0
  32. package/dist/src/workers/assets/rpc-proxy.worker.js.map +6 -0
  33. package/dist/src/workers/browser-rendering/binding.worker.js +129 -0
  34. package/dist/src/workers/browser-rendering/binding.worker.js.map +6 -0
  35. package/dist/src/workers/cache/cache-entry-noop.worker.js +19 -0
  36. package/dist/src/workers/cache/cache-entry-noop.worker.js.map +6 -0
  37. package/dist/src/workers/cache/cache-entry.worker.js +28 -0
  38. package/dist/src/workers/cache/cache-entry.worker.js.map +6 -0
  39. package/dist/src/workers/cache/cache.worker.js +653 -0
  40. package/dist/src/workers/cache/cache.worker.js.map +6 -0
  41. package/dist/src/workers/core/do-wrapper.worker.js +43 -0
  42. package/dist/src/workers/core/do-wrapper.worker.js.map +6 -0
  43. package/dist/src/workers/core/entry.worker.js +4633 -0
  44. package/dist/src/workers/core/entry.worker.js.map +6 -0
  45. package/dist/src/workers/core/strip-cf-connecting-ip.worker.js +11 -0
  46. package/dist/src/workers/core/strip-cf-connecting-ip.worker.js.map +6 -0
  47. package/dist/src/workers/d1/database.worker.js +219 -0
  48. package/dist/src/workers/d1/database.worker.js.map +6 -0
  49. package/dist/src/workers/dispatch-namespace/dispatch-namespace-proxy.worker.js +2271 -0
  50. package/dist/src/workers/dispatch-namespace/dispatch-namespace-proxy.worker.js.map +6 -0
  51. package/dist/src/workers/dispatch-namespace/dispatch-namespace.worker.js +12 -0
  52. package/dist/src/workers/dispatch-namespace/dispatch-namespace.worker.js.map +6 -0
  53. package/dist/src/workers/email/email.worker.js +23 -0
  54. package/dist/src/workers/email/email.worker.js.map +6 -0
  55. package/dist/src/workers/email/send_email.worker.js +3294 -0
  56. package/dist/src/workers/email/send_email.worker.js.map +6 -0
  57. package/dist/src/workers/hello-world/binding.worker.js +19 -0
  58. package/dist/src/workers/hello-world/binding.worker.js.map +6 -0
  59. package/dist/src/workers/hello-world/object.worker.js +14 -0
  60. package/dist/src/workers/hello-world/object.worker.js.map +6 -0
  61. package/dist/src/workers/images/images.worker.js +155 -0
  62. package/dist/src/workers/images/images.worker.js.map +6 -0
  63. package/dist/src/workers/kv/namespace.worker.js +322 -0
  64. package/dist/src/workers/kv/namespace.worker.js.map +6 -0
  65. package/dist/src/workers/kv/sites.worker.js +146 -0
  66. package/dist/src/workers/kv/sites.worker.js.map +6 -0
  67. package/dist/src/workers/local-explorer/explorer.worker.js +5245 -0
  68. package/dist/src/workers/local-explorer/explorer.worker.js.map +6 -0
  69. package/dist/src/workers/pipelines/pipeline.worker.js +10 -0
  70. package/dist/src/workers/pipelines/pipeline.worker.js.map +6 -0
  71. package/dist/src/workers/queues/broker.worker.js +289 -0
  72. package/dist/src/workers/queues/broker.worker.js.map +6 -0
  73. package/dist/src/workers/r2/bucket.worker.js +1134 -0
  74. package/dist/src/workers/r2/bucket.worker.js.map +6 -0
  75. package/dist/src/workers/ratelimit/ratelimit.worker.js +54 -0
  76. package/dist/src/workers/ratelimit/ratelimit.worker.js.map +6 -0
  77. package/dist/src/workers/secrets-store/secret.worker.js +65 -0
  78. package/dist/src/workers/secrets-store/secret.worker.js.map +6 -0
  79. package/dist/src/workers/shared/index.worker.js +693 -0
  80. package/dist/src/workers/shared/index.worker.js.map +6 -0
  81. package/dist/src/workers/shared/object-entry.worker.js +21 -0
  82. package/dist/src/workers/shared/object-entry.worker.js.map +6 -0
  83. package/dist/src/workers/shared/remote-proxy-client.worker.js +2271 -0
  84. package/dist/src/workers/shared/remote-proxy-client.worker.js.map +6 -0
  85. package/dist/src/workers/shared/zod.worker.js +2954 -0
  86. package/dist/src/workers/shared/zod.worker.js.map +6 -0
  87. package/dist/src/workers/workflows/binding.worker.js +2422 -0
  88. package/dist/src/workers/workflows/binding.worker.js.map +6 -0
  89. package/dist/src/workers/workflows/wrapped-binding.worker.js +71 -0
  90. package/dist/src/workers/workflows/wrapped-binding.worker.js.map +6 -0
  91. package/package.json +139 -0
@@ -0,0 +1,3294 @@
1
+ // src/workers/email/send_email.worker.ts
2
+ import { WorkerEntrypoint } from "cloudflare:workers";
3
+
4
+ // ../../node_modules/.pnpm/kleur@4.1.5/node_modules/kleur/colors.mjs
5
+ var FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY = !0;
6
+ typeof process < "u" && ({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {}, isTTY = process.stdout && process.stdout.isTTY);
7
+ var $ = {
8
+ enabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== "dumb" && (FORCE_COLOR != null && FORCE_COLOR !== "0" || isTTY)
9
+ };
10
+ function init(x, y) {
11
+ let rgx = new RegExp(`\\x1b\\[${y}m`, "g"), open = `\x1B[${x}m`, close = `\x1B[${y}m`;
12
+ return function(txt) {
13
+ return !$.enabled || txt == null ? txt : open + (~("" + txt).indexOf(close) ? txt.replace(rgx, close + open) : txt) + close;
14
+ };
15
+ }
16
+ var reset = init(0, 0), bold = init(1, 22), dim = init(2, 22), italic = init(3, 23), underline = init(4, 24), inverse = init(7, 27), hidden = init(8, 28), strikethrough = init(9, 29), black = init(30, 39), red = init(31, 39), green = init(32, 39), yellow = init(33, 39), blue = init(34, 39), magenta = init(35, 39), cyan = init(36, 39), white = init(37, 39), gray = init(90, 39), grey = init(90, 39), bgBlack = init(40, 49), bgRed = init(41, 49), bgGreen = init(42, 49), bgYellow = init(43, 49), bgBlue = init(44, 49), bgMagenta = init(45, 49), bgCyan = init(46, 49), bgWhite = init(47, 49);
17
+
18
+ // src/workers/email/send_email.worker.ts
19
+ import { LogLevel, SharedHeaders } from "miniflare:shared";
20
+
21
+ // ../../node_modules/.pnpm/postal-mime@2.4.3_patch_hash=ngwql2fj2dlex3jjynq4iizhk4/node_modules/postal-mime/src/decode-strings.js
22
+ var textEncoder = new TextEncoder(), base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", base64Lookup = new Uint8Array(256);
23
+ for (i = 0; i < base64Chars.length; i++)
24
+ base64Lookup[base64Chars.charCodeAt(i)] = i;
25
+ var i;
26
+ function decodeBase64(base64) {
27
+ let bufferLength = Math.ceil(base64.length / 4) * 3, len = base64.length, p = 0;
28
+ base64.length % 4 === 3 ? bufferLength-- : base64.length % 4 === 2 ? bufferLength -= 2 : base64[base64.length - 1] === "=" && (bufferLength--, base64[base64.length - 2] === "=" && bufferLength--);
29
+ let arrayBuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arrayBuffer);
30
+ for (let i = 0; i < len; i += 4) {
31
+ let encoded1 = base64Lookup[base64.charCodeAt(i)], encoded2 = base64Lookup[base64.charCodeAt(i + 1)], encoded3 = base64Lookup[base64.charCodeAt(i + 2)], encoded4 = base64Lookup[base64.charCodeAt(i + 3)];
32
+ bytes[p++] = encoded1 << 2 | encoded2 >> 4, bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2, bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
33
+ }
34
+ return arrayBuffer;
35
+ }
36
+ function getDecoder(charset) {
37
+ return charset = charset || "utf8", new TextDecoder(charset);
38
+ }
39
+ async function blobToArrayBuffer(blob) {
40
+ if ("arrayBuffer" in blob)
41
+ return await blob.arrayBuffer();
42
+ let fr = new FileReader();
43
+ return new Promise((resolve, reject) => {
44
+ fr.onload = function(e) {
45
+ resolve(e.target.result);
46
+ }, fr.onerror = function(e) {
47
+ reject(fr.error);
48
+ }, fr.readAsArrayBuffer(blob);
49
+ });
50
+ }
51
+ function getHex(c) {
52
+ return c >= 48 && c <= 57 || c >= 97 && c <= 102 || c >= 65 && c <= 70 ? String.fromCharCode(c) : !1;
53
+ }
54
+ function decodeWord(charset, encoding, str) {
55
+ let splitPos = charset.indexOf("*");
56
+ splitPos >= 0 && (charset = charset.substr(0, splitPos)), encoding = encoding.toUpperCase();
57
+ let byteStr;
58
+ if (encoding === "Q") {
59
+ str = str.replace(/=\s+([0-9a-fA-F])/g, "=$1").replace(/[_\s]/g, " ");
60
+ let buf = textEncoder.encode(str), encodedBytes = [];
61
+ for (let i = 0, len = buf.length; i < len; i++) {
62
+ let c = buf[i];
63
+ if (i <= len - 2 && c === 61) {
64
+ let c1 = getHex(buf[i + 1]), c2 = getHex(buf[i + 2]);
65
+ if (c1 && c2) {
66
+ let c3 = parseInt(c1 + c2, 16);
67
+ encodedBytes.push(c3), i += 2;
68
+ continue;
69
+ }
70
+ }
71
+ encodedBytes.push(c);
72
+ }
73
+ byteStr = new ArrayBuffer(encodedBytes.length);
74
+ let dataView = new DataView(byteStr);
75
+ for (let i = 0, len = encodedBytes.length; i < len; i++)
76
+ dataView.setUint8(i, encodedBytes[i]);
77
+ } else encoding === "B" ? byteStr = decodeBase64(str.replace(/[^a-zA-Z0-9\+\/=]+/g, "")) : byteStr = textEncoder.encode(str);
78
+ return getDecoder(charset).decode(byteStr);
79
+ }
80
+ function decodeWords(str) {
81
+ let joinString = !0, done = !1;
82
+ for (; !done; ) {
83
+ let result = (str || "").toString().replace(/(=\?([^?]+)\?[Bb]\?([^?]*)\?=)\s*(?==\?([^?]+)\?[Bb]\?[^?]*\?=)/g, (match, left, chLeft, encodedLeftStr, chRight) => joinString && chLeft === chRight && encodedLeftStr.length % 4 === 0 && !/=$/.test(encodedLeftStr) ? left + "__\0JOIN\0__" : match).replace(/(=\?([^?]+)\?[Qq]\?[^?]*\?=)\s*(?==\?([^?]+)\?[Qq]\?[^?]*\?=)/g, (match, left, chLeft, chRight) => joinString && chLeft === chRight ? left + "__\0JOIN\0__" : match).replace(/(\?=)?__\x00JOIN\x00__(=\?([^?]+)\?[QqBb]\?)?/g, "").replace(/(=\?[^?]+\?[QqBb]\?[^?]*\?=)\s+(?==\?[^?]+\?[QqBb]\?[^?]*\?=)/g, "$1").replace(/=\?([\w_\-*]+)\?([QqBb])\?([^?]*)\?=/g, (m, charset, encoding, text) => decodeWord(charset, encoding, text));
84
+ if (joinString && result.indexOf("\uFFFD") >= 0)
85
+ joinString = !1;
86
+ else
87
+ return result;
88
+ }
89
+ }
90
+ function decodeURIComponentWithCharset(encodedStr, charset) {
91
+ charset = charset || "utf-8";
92
+ let encodedBytes = [];
93
+ for (let i = 0; i < encodedStr.length; i++) {
94
+ let c = encodedStr.charAt(i);
95
+ if (c === "%" && /^[a-f0-9]{2}/i.test(encodedStr.substr(i + 1, 2))) {
96
+ let byte = encodedStr.substr(i + 1, 2);
97
+ i += 2, encodedBytes.push(parseInt(byte, 16));
98
+ } else if (c.charCodeAt(0) > 126) {
99
+ c = textEncoder.encode(c);
100
+ for (let j = 0; j < c.length; j++)
101
+ encodedBytes.push(c[j]);
102
+ } else
103
+ encodedBytes.push(c.charCodeAt(0));
104
+ }
105
+ let byteStr = new ArrayBuffer(encodedBytes.length), dataView = new DataView(byteStr);
106
+ for (let i = 0, len = encodedBytes.length; i < len; i++)
107
+ dataView.setUint8(i, encodedBytes[i]);
108
+ return getDecoder(charset).decode(byteStr);
109
+ }
110
+ function decodeParameterValueContinuations(header) {
111
+ let paramKeys = /* @__PURE__ */ new Map();
112
+ Object.keys(header.params).forEach((key) => {
113
+ let match = key.match(/\*((\d+)\*?)?$/);
114
+ if (!match)
115
+ return;
116
+ let actualKey = key.substr(0, match.index).toLowerCase(), nr = Number(match[2]) || 0, paramVal;
117
+ paramKeys.has(actualKey) ? paramVal = paramKeys.get(actualKey) : (paramVal = {
118
+ charset: !1,
119
+ values: []
120
+ }, paramKeys.set(actualKey, paramVal));
121
+ let value = header.params[key];
122
+ nr === 0 && match[0].charAt(match[0].length - 1) === "*" && (match = value.match(/^([^']*)'[^']*'(.*)$/)) && (paramVal.charset = match[1] || "utf-8", value = match[2]), paramVal.values.push({ nr, value }), delete header.params[key];
123
+ }), paramKeys.forEach((paramVal, key) => {
124
+ header.params[key] = decodeURIComponentWithCharset(
125
+ paramVal.values.sort((a, b) => a.nr - b.nr).map((a) => a.value).join(""),
126
+ paramVal.charset
127
+ );
128
+ });
129
+ }
130
+
131
+ // ../../node_modules/.pnpm/postal-mime@2.4.3_patch_hash=ngwql2fj2dlex3jjynq4iizhk4/node_modules/postal-mime/src/pass-through-decoder.js
132
+ var PassThroughDecoder = class {
133
+ constructor() {
134
+ this.chunks = [];
135
+ }
136
+ update(line) {
137
+ this.chunks.push(line), this.chunks.push(`
138
+ `);
139
+ }
140
+ finalize() {
141
+ return blobToArrayBuffer(new Blob(this.chunks, { type: "application/octet-stream" }));
142
+ }
143
+ };
144
+
145
+ // ../../node_modules/.pnpm/postal-mime@2.4.3_patch_hash=ngwql2fj2dlex3jjynq4iizhk4/node_modules/postal-mime/src/base64-decoder.js
146
+ var Base64Decoder = class {
147
+ constructor(opts) {
148
+ opts = opts || {}, this.decoder = opts.decoder || new TextDecoder(), this.maxChunkSize = 100 * 1024, this.chunks = [], this.remainder = "";
149
+ }
150
+ update(buffer) {
151
+ let str = this.decoder.decode(buffer);
152
+ if (/[^a-zA-Z0-9+\/]/.test(str) && (str = str.replace(/[^a-zA-Z0-9+\/]+/g, "")), this.remainder += str, this.remainder.length >= this.maxChunkSize) {
153
+ let allowedBytes = Math.floor(this.remainder.length / 4) * 4, base64Str;
154
+ allowedBytes === this.remainder.length ? (base64Str = this.remainder, this.remainder = "") : (base64Str = this.remainder.substr(0, allowedBytes), this.remainder = this.remainder.substr(allowedBytes)), base64Str.length && this.chunks.push(decodeBase64(base64Str));
155
+ }
156
+ }
157
+ finalize() {
158
+ return this.remainder && !/^=+$/.test(this.remainder) && this.chunks.push(decodeBase64(this.remainder)), blobToArrayBuffer(new Blob(this.chunks, { type: "application/octet-stream" }));
159
+ }
160
+ };
161
+
162
+ // ../../node_modules/.pnpm/postal-mime@2.4.3_patch_hash=ngwql2fj2dlex3jjynq4iizhk4/node_modules/postal-mime/src/qp-decoder.js
163
+ var QPDecoder = class {
164
+ constructor(opts) {
165
+ opts = opts || {}, this.decoder = opts.decoder || new TextDecoder(), this.maxChunkSize = 100 * 1024, this.remainder = "", this.chunks = [];
166
+ }
167
+ decodeQPBytes(encodedBytes) {
168
+ let buf = new ArrayBuffer(encodedBytes.length), dataView = new DataView(buf);
169
+ for (let i = 0, len = encodedBytes.length; i < len; i++)
170
+ dataView.setUint8(i, parseInt(encodedBytes[i], 16));
171
+ return buf;
172
+ }
173
+ decodeChunks(str) {
174
+ str = str.replace(/=\r?\n/g, "");
175
+ let list = str.split(/(?==)/), encodedBytes = [];
176
+ for (let part of list) {
177
+ if (part.charAt(0) !== "=") {
178
+ encodedBytes.length && (this.chunks.push(this.decodeQPBytes(encodedBytes)), encodedBytes = []), this.chunks.push(part);
179
+ continue;
180
+ }
181
+ if (part.length === 3) {
182
+ encodedBytes.push(part.substr(1));
183
+ continue;
184
+ }
185
+ part.length > 3 && (encodedBytes.push(part.substr(1, 2)), this.chunks.push(this.decodeQPBytes(encodedBytes)), encodedBytes = [], part = part.substr(3), this.chunks.push(part));
186
+ }
187
+ encodedBytes.length && (this.chunks.push(this.decodeQPBytes(encodedBytes)), encodedBytes = []);
188
+ }
189
+ update(buffer) {
190
+ let str = this.decoder.decode(buffer) + `
191
+ `;
192
+ if (str = this.remainder + str, str.length < this.maxChunkSize) {
193
+ this.remainder = str;
194
+ return;
195
+ }
196
+ this.remainder = "";
197
+ let partialEnding = str.match(/=[a-fA-F0-9]?$/);
198
+ if (partialEnding) {
199
+ if (partialEnding.index === 0) {
200
+ this.remainder = str;
201
+ return;
202
+ }
203
+ this.remainder = str.substr(partialEnding.index), str = str.substr(0, partialEnding.index);
204
+ }
205
+ this.decodeChunks(str);
206
+ }
207
+ finalize() {
208
+ return this.remainder.length && (this.decodeChunks(this.remainder), this.remainder = ""), blobToArrayBuffer(new Blob(this.chunks, { type: "application/octet-stream" }));
209
+ }
210
+ };
211
+
212
+ // ../../node_modules/.pnpm/postal-mime@2.4.3_patch_hash=ngwql2fj2dlex3jjynq4iizhk4/node_modules/postal-mime/src/mime-node.js
213
+ var MimeNode = class {
214
+ constructor(opts) {
215
+ opts = opts || {}, this.postalMime = opts.postalMime, this.root = !!opts.parentNode, this.childNodes = [], opts.parentNode && opts.parentNode.childNodes.push(this), this.state = "header", this.headerLines = [], this.contentType = {
216
+ value: "text/plain",
217
+ default: !0
218
+ }, this.contentTransferEncoding = {
219
+ value: "8bit"
220
+ }, this.contentDisposition = {
221
+ value: ""
222
+ }, this.headers = [], this.contentDecoder = !1;
223
+ }
224
+ setupContentDecoder(transferEncoding) {
225
+ /base64/i.test(transferEncoding) ? this.contentDecoder = new Base64Decoder() : /quoted-printable/i.test(transferEncoding) ? this.contentDecoder = new QPDecoder({ decoder: getDecoder(this.contentType.parsed.params.charset) }) : this.contentDecoder = new PassThroughDecoder();
226
+ }
227
+ async finalize() {
228
+ if (this.state === "finished")
229
+ return;
230
+ this.state === "header" && this.processHeaders();
231
+ let boundaries = this.postalMime.boundaries;
232
+ for (let i = boundaries.length - 1; i >= 0; i--)
233
+ if (boundaries[i].node === this) {
234
+ boundaries.splice(i, 1);
235
+ break;
236
+ }
237
+ await this.finalizeChildNodes(), this.content = this.contentDecoder ? await this.contentDecoder.finalize() : null, this.state = "finished";
238
+ }
239
+ async finalizeChildNodes() {
240
+ for (let childNode of this.childNodes)
241
+ await childNode.finalize();
242
+ }
243
+ parseStructuredHeader(str) {
244
+ let response = {
245
+ value: !1,
246
+ params: {}
247
+ }, key = !1, value = "", stage = "value", quote = !1, escaped = !1, chr;
248
+ for (let i = 0, len = str.length; i < len; i++)
249
+ switch (chr = str.charAt(i), stage) {
250
+ case "key":
251
+ if (chr === "=") {
252
+ key = value.trim().toLowerCase(), stage = "value", value = "";
253
+ break;
254
+ }
255
+ value += chr;
256
+ break;
257
+ case "value":
258
+ if (escaped)
259
+ value += chr;
260
+ else if (chr === "\\") {
261
+ escaped = !0;
262
+ continue;
263
+ } else quote && chr === quote ? quote = !1 : !quote && chr === '"' ? quote = chr : !quote && chr === ";" ? (key === !1 ? response.value = value.trim() : response.params[key] = value.trim(), stage = "key", value = "") : value += chr;
264
+ escaped = !1;
265
+ break;
266
+ }
267
+ return value = value.trim(), stage === "value" ? key === !1 ? response.value = value : response.params[key] = value : value && (response.params[value.toLowerCase()] = ""), response.value && (response.value = response.value.toLowerCase()), decodeParameterValueContinuations(response), response;
268
+ }
269
+ decodeFlowedText(str, delSp) {
270
+ return str.split(/\r?\n/).reduce((previousValue, currentValue) => / $/.test(previousValue) && !/(^|\n)-- $/.test(previousValue) ? delSp ? previousValue.slice(0, -1) + currentValue : previousValue + currentValue : previousValue + `
271
+ ` + currentValue).replace(/^ /gm, "");
272
+ }
273
+ getTextContent() {
274
+ if (!this.content)
275
+ return "";
276
+ let str = getDecoder(this.contentType.parsed.params.charset).decode(this.content);
277
+ return /^flowed$/i.test(this.contentType.parsed.params.format) && (str = this.decodeFlowedText(str, /^yes$/i.test(this.contentType.parsed.params.delsp))), str;
278
+ }
279
+ processHeaders() {
280
+ for (let i = this.headerLines.length - 1; i >= 0; i--) {
281
+ let line = this.headerLines[i];
282
+ if (i && /^\s/.test(line))
283
+ this.headerLines[i - 1] += `
284
+ ` + line, this.headerLines.splice(i, 1);
285
+ else {
286
+ line = line.replace(/\s+/g, " ");
287
+ let sep = line.indexOf(":"), key = sep < 0 ? line.trim() : line.substr(0, sep).trim(), value = sep < 0 ? "" : line.substr(sep + 1).trim();
288
+ switch (this.headers.push({ key: key.toLowerCase(), originalKey: key, value }), key.toLowerCase()) {
289
+ case "content-type":
290
+ this.contentType.default && (this.contentType = { value, parsed: {} });
291
+ break;
292
+ case "content-transfer-encoding":
293
+ this.contentTransferEncoding = { value, parsed: {} };
294
+ break;
295
+ case "content-disposition":
296
+ this.contentDisposition = { value, parsed: {} };
297
+ break;
298
+ case "content-id":
299
+ this.contentId = value;
300
+ break;
301
+ case "content-description":
302
+ this.contentDescription = value;
303
+ break;
304
+ }
305
+ }
306
+ }
307
+ 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) : !1, this.contentType.multipart && this.contentType.parsed.params.boundary && this.postalMime.boundaries.push({
308
+ value: textEncoder.encode(this.contentType.parsed.params.boundary),
309
+ node: this
310
+ }), this.contentDisposition.parsed = this.parseStructuredHeader(this.contentDisposition.value), this.contentTransferEncoding.encoding = this.contentTransferEncoding.value.toLowerCase().split(/[^\w-]/).shift(), this.setupContentDecoder(this.contentTransferEncoding.encoding);
311
+ }
312
+ feed(line) {
313
+ switch (this.state) {
314
+ case "header":
315
+ if (!line.length)
316
+ return this.state = "body", this.processHeaders();
317
+ this.headerLines.push(getDecoder().decode(line));
318
+ break;
319
+ case "body":
320
+ this.contentDecoder.update(line);
321
+ }
322
+ }
323
+ };
324
+
325
+ // ../../node_modules/.pnpm/postal-mime@2.4.3_patch_hash=ngwql2fj2dlex3jjynq4iizhk4/node_modules/postal-mime/src/html-entities.js
326
+ var htmlEntities = {
327
+ "&AElig": "\xC6",
328
+ "&AElig;": "\xC6",
329
+ "&AMP": "&",
330
+ "&AMP;": "&",
331
+ "&Aacute": "\xC1",
332
+ "&Aacute;": "\xC1",
333
+ "&Abreve;": "\u0102",
334
+ "&Acirc": "\xC2",
335
+ "&Acirc;": "\xC2",
336
+ "&Acy;": "\u0410",
337
+ "&Afr;": "\u{1D504}",
338
+ "&Agrave": "\xC0",
339
+ "&Agrave;": "\xC0",
340
+ "&Alpha;": "\u0391",
341
+ "&Amacr;": "\u0100",
342
+ "&And;": "\u2A53",
343
+ "&Aogon;": "\u0104",
344
+ "&Aopf;": "\u{1D538}",
345
+ "&ApplyFunction;": "\u2061",
346
+ "&Aring": "\xC5",
347
+ "&Aring;": "\xC5",
348
+ "&Ascr;": "\u{1D49C}",
349
+ "&Assign;": "\u2254",
350
+ "&Atilde": "\xC3",
351
+ "&Atilde;": "\xC3",
352
+ "&Auml": "\xC4",
353
+ "&Auml;": "\xC4",
354
+ "&Backslash;": "\u2216",
355
+ "&Barv;": "\u2AE7",
356
+ "&Barwed;": "\u2306",
357
+ "&Bcy;": "\u0411",
358
+ "&Because;": "\u2235",
359
+ "&Bernoullis;": "\u212C",
360
+ "&Beta;": "\u0392",
361
+ "&Bfr;": "\u{1D505}",
362
+ "&Bopf;": "\u{1D539}",
363
+ "&Breve;": "\u02D8",
364
+ "&Bscr;": "\u212C",
365
+ "&Bumpeq;": "\u224E",
366
+ "&CHcy;": "\u0427",
367
+ "&COPY": "\xA9",
368
+ "&COPY;": "\xA9",
369
+ "&Cacute;": "\u0106",
370
+ "&Cap;": "\u22D2",
371
+ "&CapitalDifferentialD;": "\u2145",
372
+ "&Cayleys;": "\u212D",
373
+ "&Ccaron;": "\u010C",
374
+ "&Ccedil": "\xC7",
375
+ "&Ccedil;": "\xC7",
376
+ "&Ccirc;": "\u0108",
377
+ "&Cconint;": "\u2230",
378
+ "&Cdot;": "\u010A",
379
+ "&Cedilla;": "\xB8",
380
+ "&CenterDot;": "\xB7",
381
+ "&Cfr;": "\u212D",
382
+ "&Chi;": "\u03A7",
383
+ "&CircleDot;": "\u2299",
384
+ "&CircleMinus;": "\u2296",
385
+ "&CirclePlus;": "\u2295",
386
+ "&CircleTimes;": "\u2297",
387
+ "&ClockwiseContourIntegral;": "\u2232",
388
+ "&CloseCurlyDoubleQuote;": "\u201D",
389
+ "&CloseCurlyQuote;": "\u2019",
390
+ "&Colon;": "\u2237",
391
+ "&Colone;": "\u2A74",
392
+ "&Congruent;": "\u2261",
393
+ "&Conint;": "\u222F",
394
+ "&ContourIntegral;": "\u222E",
395
+ "&Copf;": "\u2102",
396
+ "&Coproduct;": "\u2210",
397
+ "&CounterClockwiseContourIntegral;": "\u2233",
398
+ "&Cross;": "\u2A2F",
399
+ "&Cscr;": "\u{1D49E}",
400
+ "&Cup;": "\u22D3",
401
+ "&CupCap;": "\u224D",
402
+ "&DD;": "\u2145",
403
+ "&DDotrahd;": "\u2911",
404
+ "&DJcy;": "\u0402",
405
+ "&DScy;": "\u0405",
406
+ "&DZcy;": "\u040F",
407
+ "&Dagger;": "\u2021",
408
+ "&Darr;": "\u21A1",
409
+ "&Dashv;": "\u2AE4",
410
+ "&Dcaron;": "\u010E",
411
+ "&Dcy;": "\u0414",
412
+ "&Del;": "\u2207",
413
+ "&Delta;": "\u0394",
414
+ "&Dfr;": "\u{1D507}",
415
+ "&DiacriticalAcute;": "\xB4",
416
+ "&DiacriticalDot;": "\u02D9",
417
+ "&DiacriticalDoubleAcute;": "\u02DD",
418
+ "&DiacriticalGrave;": "`",
419
+ "&DiacriticalTilde;": "\u02DC",
420
+ "&Diamond;": "\u22C4",
421
+ "&DifferentialD;": "\u2146",
422
+ "&Dopf;": "\u{1D53B}",
423
+ "&Dot;": "\xA8",
424
+ "&DotDot;": "\u20DC",
425
+ "&DotEqual;": "\u2250",
426
+ "&DoubleContourIntegral;": "\u222F",
427
+ "&DoubleDot;": "\xA8",
428
+ "&DoubleDownArrow;": "\u21D3",
429
+ "&DoubleLeftArrow;": "\u21D0",
430
+ "&DoubleLeftRightArrow;": "\u21D4",
431
+ "&DoubleLeftTee;": "\u2AE4",
432
+ "&DoubleLongLeftArrow;": "\u27F8",
433
+ "&DoubleLongLeftRightArrow;": "\u27FA",
434
+ "&DoubleLongRightArrow;": "\u27F9",
435
+ "&DoubleRightArrow;": "\u21D2",
436
+ "&DoubleRightTee;": "\u22A8",
437
+ "&DoubleUpArrow;": "\u21D1",
438
+ "&DoubleUpDownArrow;": "\u21D5",
439
+ "&DoubleVerticalBar;": "\u2225",
440
+ "&DownArrow;": "\u2193",
441
+ "&DownArrowBar;": "\u2913",
442
+ "&DownArrowUpArrow;": "\u21F5",
443
+ "&DownBreve;": "\u0311",
444
+ "&DownLeftRightVector;": "\u2950",
445
+ "&DownLeftTeeVector;": "\u295E",
446
+ "&DownLeftVector;": "\u21BD",
447
+ "&DownLeftVectorBar;": "\u2956",
448
+ "&DownRightTeeVector;": "\u295F",
449
+ "&DownRightVector;": "\u21C1",
450
+ "&DownRightVectorBar;": "\u2957",
451
+ "&DownTee;": "\u22A4",
452
+ "&DownTeeArrow;": "\u21A7",
453
+ "&Downarrow;": "\u21D3",
454
+ "&Dscr;": "\u{1D49F}",
455
+ "&Dstrok;": "\u0110",
456
+ "&ENG;": "\u014A",
457
+ "&ETH": "\xD0",
458
+ "&ETH;": "\xD0",
459
+ "&Eacute": "\xC9",
460
+ "&Eacute;": "\xC9",
461
+ "&Ecaron;": "\u011A",
462
+ "&Ecirc": "\xCA",
463
+ "&Ecirc;": "\xCA",
464
+ "&Ecy;": "\u042D",
465
+ "&Edot;": "\u0116",
466
+ "&Efr;": "\u{1D508}",
467
+ "&Egrave": "\xC8",
468
+ "&Egrave;": "\xC8",
469
+ "&Element;": "\u2208",
470
+ "&Emacr;": "\u0112",
471
+ "&EmptySmallSquare;": "\u25FB",
472
+ "&EmptyVerySmallSquare;": "\u25AB",
473
+ "&Eogon;": "\u0118",
474
+ "&Eopf;": "\u{1D53C}",
475
+ "&Epsilon;": "\u0395",
476
+ "&Equal;": "\u2A75",
477
+ "&EqualTilde;": "\u2242",
478
+ "&Equilibrium;": "\u21CC",
479
+ "&Escr;": "\u2130",
480
+ "&Esim;": "\u2A73",
481
+ "&Eta;": "\u0397",
482
+ "&Euml": "\xCB",
483
+ "&Euml;": "\xCB",
484
+ "&Exists;": "\u2203",
485
+ "&ExponentialE;": "\u2147",
486
+ "&Fcy;": "\u0424",
487
+ "&Ffr;": "\u{1D509}",
488
+ "&FilledSmallSquare;": "\u25FC",
489
+ "&FilledVerySmallSquare;": "\u25AA",
490
+ "&Fopf;": "\u{1D53D}",
491
+ "&ForAll;": "\u2200",
492
+ "&Fouriertrf;": "\u2131",
493
+ "&Fscr;": "\u2131",
494
+ "&GJcy;": "\u0403",
495
+ "&GT": ">",
496
+ "&GT;": ">",
497
+ "&Gamma;": "\u0393",
498
+ "&Gammad;": "\u03DC",
499
+ "&Gbreve;": "\u011E",
500
+ "&Gcedil;": "\u0122",
501
+ "&Gcirc;": "\u011C",
502
+ "&Gcy;": "\u0413",
503
+ "&Gdot;": "\u0120",
504
+ "&Gfr;": "\u{1D50A}",
505
+ "&Gg;": "\u22D9",
506
+ "&Gopf;": "\u{1D53E}",
507
+ "&GreaterEqual;": "\u2265",
508
+ "&GreaterEqualLess;": "\u22DB",
509
+ "&GreaterFullEqual;": "\u2267",
510
+ "&GreaterGreater;": "\u2AA2",
511
+ "&GreaterLess;": "\u2277",
512
+ "&GreaterSlantEqual;": "\u2A7E",
513
+ "&GreaterTilde;": "\u2273",
514
+ "&Gscr;": "\u{1D4A2}",
515
+ "&Gt;": "\u226B",
516
+ "&HARDcy;": "\u042A",
517
+ "&Hacek;": "\u02C7",
518
+ "&Hat;": "^",
519
+ "&Hcirc;": "\u0124",
520
+ "&Hfr;": "\u210C",
521
+ "&HilbertSpace;": "\u210B",
522
+ "&Hopf;": "\u210D",
523
+ "&HorizontalLine;": "\u2500",
524
+ "&Hscr;": "\u210B",
525
+ "&Hstrok;": "\u0126",
526
+ "&HumpDownHump;": "\u224E",
527
+ "&HumpEqual;": "\u224F",
528
+ "&IEcy;": "\u0415",
529
+ "&IJlig;": "\u0132",
530
+ "&IOcy;": "\u0401",
531
+ "&Iacute": "\xCD",
532
+ "&Iacute;": "\xCD",
533
+ "&Icirc": "\xCE",
534
+ "&Icirc;": "\xCE",
535
+ "&Icy;": "\u0418",
536
+ "&Idot;": "\u0130",
537
+ "&Ifr;": "\u2111",
538
+ "&Igrave": "\xCC",
539
+ "&Igrave;": "\xCC",
540
+ "&Im;": "\u2111",
541
+ "&Imacr;": "\u012A",
542
+ "&ImaginaryI;": "\u2148",
543
+ "&Implies;": "\u21D2",
544
+ "&Int;": "\u222C",
545
+ "&Integral;": "\u222B",
546
+ "&Intersection;": "\u22C2",
547
+ "&InvisibleComma;": "\u2063",
548
+ "&InvisibleTimes;": "\u2062",
549
+ "&Iogon;": "\u012E",
550
+ "&Iopf;": "\u{1D540}",
551
+ "&Iota;": "\u0399",
552
+ "&Iscr;": "\u2110",
553
+ "&Itilde;": "\u0128",
554
+ "&Iukcy;": "\u0406",
555
+ "&Iuml": "\xCF",
556
+ "&Iuml;": "\xCF",
557
+ "&Jcirc;": "\u0134",
558
+ "&Jcy;": "\u0419",
559
+ "&Jfr;": "\u{1D50D}",
560
+ "&Jopf;": "\u{1D541}",
561
+ "&Jscr;": "\u{1D4A5}",
562
+ "&Jsercy;": "\u0408",
563
+ "&Jukcy;": "\u0404",
564
+ "&KHcy;": "\u0425",
565
+ "&KJcy;": "\u040C",
566
+ "&Kappa;": "\u039A",
567
+ "&Kcedil;": "\u0136",
568
+ "&Kcy;": "\u041A",
569
+ "&Kfr;": "\u{1D50E}",
570
+ "&Kopf;": "\u{1D542}",
571
+ "&Kscr;": "\u{1D4A6}",
572
+ "&LJcy;": "\u0409",
573
+ "&LT": "<",
574
+ "&LT;": "<",
575
+ "&Lacute;": "\u0139",
576
+ "&Lambda;": "\u039B",
577
+ "&Lang;": "\u27EA",
578
+ "&Laplacetrf;": "\u2112",
579
+ "&Larr;": "\u219E",
580
+ "&Lcaron;": "\u013D",
581
+ "&Lcedil;": "\u013B",
582
+ "&Lcy;": "\u041B",
583
+ "&LeftAngleBracket;": "\u27E8",
584
+ "&LeftArrow;": "\u2190",
585
+ "&LeftArrowBar;": "\u21E4",
586
+ "&LeftArrowRightArrow;": "\u21C6",
587
+ "&LeftCeiling;": "\u2308",
588
+ "&LeftDoubleBracket;": "\u27E6",
589
+ "&LeftDownTeeVector;": "\u2961",
590
+ "&LeftDownVector;": "\u21C3",
591
+ "&LeftDownVectorBar;": "\u2959",
592
+ "&LeftFloor;": "\u230A",
593
+ "&LeftRightArrow;": "\u2194",
594
+ "&LeftRightVector;": "\u294E",
595
+ "&LeftTee;": "\u22A3",
596
+ "&LeftTeeArrow;": "\u21A4",
597
+ "&LeftTeeVector;": "\u295A",
598
+ "&LeftTriangle;": "\u22B2",
599
+ "&LeftTriangleBar;": "\u29CF",
600
+ "&LeftTriangleEqual;": "\u22B4",
601
+ "&LeftUpDownVector;": "\u2951",
602
+ "&LeftUpTeeVector;": "\u2960",
603
+ "&LeftUpVector;": "\u21BF",
604
+ "&LeftUpVectorBar;": "\u2958",
605
+ "&LeftVector;": "\u21BC",
606
+ "&LeftVectorBar;": "\u2952",
607
+ "&Leftarrow;": "\u21D0",
608
+ "&Leftrightarrow;": "\u21D4",
609
+ "&LessEqualGreater;": "\u22DA",
610
+ "&LessFullEqual;": "\u2266",
611
+ "&LessGreater;": "\u2276",
612
+ "&LessLess;": "\u2AA1",
613
+ "&LessSlantEqual;": "\u2A7D",
614
+ "&LessTilde;": "\u2272",
615
+ "&Lfr;": "\u{1D50F}",
616
+ "&Ll;": "\u22D8",
617
+ "&Lleftarrow;": "\u21DA",
618
+ "&Lmidot;": "\u013F",
619
+ "&LongLeftArrow;": "\u27F5",
620
+ "&LongLeftRightArrow;": "\u27F7",
621
+ "&LongRightArrow;": "\u27F6",
622
+ "&Longleftarrow;": "\u27F8",
623
+ "&Longleftrightarrow;": "\u27FA",
624
+ "&Longrightarrow;": "\u27F9",
625
+ "&Lopf;": "\u{1D543}",
626
+ "&LowerLeftArrow;": "\u2199",
627
+ "&LowerRightArrow;": "\u2198",
628
+ "&Lscr;": "\u2112",
629
+ "&Lsh;": "\u21B0",
630
+ "&Lstrok;": "\u0141",
631
+ "&Lt;": "\u226A",
632
+ "&Map;": "\u2905",
633
+ "&Mcy;": "\u041C",
634
+ "&MediumSpace;": "\u205F",
635
+ "&Mellintrf;": "\u2133",
636
+ "&Mfr;": "\u{1D510}",
637
+ "&MinusPlus;": "\u2213",
638
+ "&Mopf;": "\u{1D544}",
639
+ "&Mscr;": "\u2133",
640
+ "&Mu;": "\u039C",
641
+ "&NJcy;": "\u040A",
642
+ "&Nacute;": "\u0143",
643
+ "&Ncaron;": "\u0147",
644
+ "&Ncedil;": "\u0145",
645
+ "&Ncy;": "\u041D",
646
+ "&NegativeMediumSpace;": "\u200B",
647
+ "&NegativeThickSpace;": "\u200B",
648
+ "&NegativeThinSpace;": "\u200B",
649
+ "&NegativeVeryThinSpace;": "\u200B",
650
+ "&NestedGreaterGreater;": "\u226B",
651
+ "&NestedLessLess;": "\u226A",
652
+ "&NewLine;": `
653
+ `,
654
+ "&Nfr;": "\u{1D511}",
655
+ "&NoBreak;": "\u2060",
656
+ "&NonBreakingSpace;": "\xA0",
657
+ "&Nopf;": "\u2115",
658
+ "&Not;": "\u2AEC",
659
+ "&NotCongruent;": "\u2262",
660
+ "&NotCupCap;": "\u226D",
661
+ "&NotDoubleVerticalBar;": "\u2226",
662
+ "&NotElement;": "\u2209",
663
+ "&NotEqual;": "\u2260",
664
+ "&NotEqualTilde;": "\u2242\u0338",
665
+ "&NotExists;": "\u2204",
666
+ "&NotGreater;": "\u226F",
667
+ "&NotGreaterEqual;": "\u2271",
668
+ "&NotGreaterFullEqual;": "\u2267\u0338",
669
+ "&NotGreaterGreater;": "\u226B\u0338",
670
+ "&NotGreaterLess;": "\u2279",
671
+ "&NotGreaterSlantEqual;": "\u2A7E\u0338",
672
+ "&NotGreaterTilde;": "\u2275",
673
+ "&NotHumpDownHump;": "\u224E\u0338",
674
+ "&NotHumpEqual;": "\u224F\u0338",
675
+ "&NotLeftTriangle;": "\u22EA",
676
+ "&NotLeftTriangleBar;": "\u29CF\u0338",
677
+ "&NotLeftTriangleEqual;": "\u22EC",
678
+ "&NotLess;": "\u226E",
679
+ "&NotLessEqual;": "\u2270",
680
+ "&NotLessGreater;": "\u2278",
681
+ "&NotLessLess;": "\u226A\u0338",
682
+ "&NotLessSlantEqual;": "\u2A7D\u0338",
683
+ "&NotLessTilde;": "\u2274",
684
+ "&NotNestedGreaterGreater;": "\u2AA2\u0338",
685
+ "&NotNestedLessLess;": "\u2AA1\u0338",
686
+ "&NotPrecedes;": "\u2280",
687
+ "&NotPrecedesEqual;": "\u2AAF\u0338",
688
+ "&NotPrecedesSlantEqual;": "\u22E0",
689
+ "&NotReverseElement;": "\u220C",
690
+ "&NotRightTriangle;": "\u22EB",
691
+ "&NotRightTriangleBar;": "\u29D0\u0338",
692
+ "&NotRightTriangleEqual;": "\u22ED",
693
+ "&NotSquareSubset;": "\u228F\u0338",
694
+ "&NotSquareSubsetEqual;": "\u22E2",
695
+ "&NotSquareSuperset;": "\u2290\u0338",
696
+ "&NotSquareSupersetEqual;": "\u22E3",
697
+ "&NotSubset;": "\u2282\u20D2",
698
+ "&NotSubsetEqual;": "\u2288",
699
+ "&NotSucceeds;": "\u2281",
700
+ "&NotSucceedsEqual;": "\u2AB0\u0338",
701
+ "&NotSucceedsSlantEqual;": "\u22E1",
702
+ "&NotSucceedsTilde;": "\u227F\u0338",
703
+ "&NotSuperset;": "\u2283\u20D2",
704
+ "&NotSupersetEqual;": "\u2289",
705
+ "&NotTilde;": "\u2241",
706
+ "&NotTildeEqual;": "\u2244",
707
+ "&NotTildeFullEqual;": "\u2247",
708
+ "&NotTildeTilde;": "\u2249",
709
+ "&NotVerticalBar;": "\u2224",
710
+ "&Nscr;": "\u{1D4A9}",
711
+ "&Ntilde": "\xD1",
712
+ "&Ntilde;": "\xD1",
713
+ "&Nu;": "\u039D",
714
+ "&OElig;": "\u0152",
715
+ "&Oacute": "\xD3",
716
+ "&Oacute;": "\xD3",
717
+ "&Ocirc": "\xD4",
718
+ "&Ocirc;": "\xD4",
719
+ "&Ocy;": "\u041E",
720
+ "&Odblac;": "\u0150",
721
+ "&Ofr;": "\u{1D512}",
722
+ "&Ograve": "\xD2",
723
+ "&Ograve;": "\xD2",
724
+ "&Omacr;": "\u014C",
725
+ "&Omega;": "\u03A9",
726
+ "&Omicron;": "\u039F",
727
+ "&Oopf;": "\u{1D546}",
728
+ "&OpenCurlyDoubleQuote;": "\u201C",
729
+ "&OpenCurlyQuote;": "\u2018",
730
+ "&Or;": "\u2A54",
731
+ "&Oscr;": "\u{1D4AA}",
732
+ "&Oslash": "\xD8",
733
+ "&Oslash;": "\xD8",
734
+ "&Otilde": "\xD5",
735
+ "&Otilde;": "\xD5",
736
+ "&Otimes;": "\u2A37",
737
+ "&Ouml": "\xD6",
738
+ "&Ouml;": "\xD6",
739
+ "&OverBar;": "\u203E",
740
+ "&OverBrace;": "\u23DE",
741
+ "&OverBracket;": "\u23B4",
742
+ "&OverParenthesis;": "\u23DC",
743
+ "&PartialD;": "\u2202",
744
+ "&Pcy;": "\u041F",
745
+ "&Pfr;": "\u{1D513}",
746
+ "&Phi;": "\u03A6",
747
+ "&Pi;": "\u03A0",
748
+ "&PlusMinus;": "\xB1",
749
+ "&Poincareplane;": "\u210C",
750
+ "&Popf;": "\u2119",
751
+ "&Pr;": "\u2ABB",
752
+ "&Precedes;": "\u227A",
753
+ "&PrecedesEqual;": "\u2AAF",
754
+ "&PrecedesSlantEqual;": "\u227C",
755
+ "&PrecedesTilde;": "\u227E",
756
+ "&Prime;": "\u2033",
757
+ "&Product;": "\u220F",
758
+ "&Proportion;": "\u2237",
759
+ "&Proportional;": "\u221D",
760
+ "&Pscr;": "\u{1D4AB}",
761
+ "&Psi;": "\u03A8",
762
+ "&QUOT": '"',
763
+ "&QUOT;": '"',
764
+ "&Qfr;": "\u{1D514}",
765
+ "&Qopf;": "\u211A",
766
+ "&Qscr;": "\u{1D4AC}",
767
+ "&RBarr;": "\u2910",
768
+ "&REG": "\xAE",
769
+ "&REG;": "\xAE",
770
+ "&Racute;": "\u0154",
771
+ "&Rang;": "\u27EB",
772
+ "&Rarr;": "\u21A0",
773
+ "&Rarrtl;": "\u2916",
774
+ "&Rcaron;": "\u0158",
775
+ "&Rcedil;": "\u0156",
776
+ "&Rcy;": "\u0420",
777
+ "&Re;": "\u211C",
778
+ "&ReverseElement;": "\u220B",
779
+ "&ReverseEquilibrium;": "\u21CB",
780
+ "&ReverseUpEquilibrium;": "\u296F",
781
+ "&Rfr;": "\u211C",
782
+ "&Rho;": "\u03A1",
783
+ "&RightAngleBracket;": "\u27E9",
784
+ "&RightArrow;": "\u2192",
785
+ "&RightArrowBar;": "\u21E5",
786
+ "&RightArrowLeftArrow;": "\u21C4",
787
+ "&RightCeiling;": "\u2309",
788
+ "&RightDoubleBracket;": "\u27E7",
789
+ "&RightDownTeeVector;": "\u295D",
790
+ "&RightDownVector;": "\u21C2",
791
+ "&RightDownVectorBar;": "\u2955",
792
+ "&RightFloor;": "\u230B",
793
+ "&RightTee;": "\u22A2",
794
+ "&RightTeeArrow;": "\u21A6",
795
+ "&RightTeeVector;": "\u295B",
796
+ "&RightTriangle;": "\u22B3",
797
+ "&RightTriangleBar;": "\u29D0",
798
+ "&RightTriangleEqual;": "\u22B5",
799
+ "&RightUpDownVector;": "\u294F",
800
+ "&RightUpTeeVector;": "\u295C",
801
+ "&RightUpVector;": "\u21BE",
802
+ "&RightUpVectorBar;": "\u2954",
803
+ "&RightVector;": "\u21C0",
804
+ "&RightVectorBar;": "\u2953",
805
+ "&Rightarrow;": "\u21D2",
806
+ "&Ropf;": "\u211D",
807
+ "&RoundImplies;": "\u2970",
808
+ "&Rrightarrow;": "\u21DB",
809
+ "&Rscr;": "\u211B",
810
+ "&Rsh;": "\u21B1",
811
+ "&RuleDelayed;": "\u29F4",
812
+ "&SHCHcy;": "\u0429",
813
+ "&SHcy;": "\u0428",
814
+ "&SOFTcy;": "\u042C",
815
+ "&Sacute;": "\u015A",
816
+ "&Sc;": "\u2ABC",
817
+ "&Scaron;": "\u0160",
818
+ "&Scedil;": "\u015E",
819
+ "&Scirc;": "\u015C",
820
+ "&Scy;": "\u0421",
821
+ "&Sfr;": "\u{1D516}",
822
+ "&ShortDownArrow;": "\u2193",
823
+ "&ShortLeftArrow;": "\u2190",
824
+ "&ShortRightArrow;": "\u2192",
825
+ "&ShortUpArrow;": "\u2191",
826
+ "&Sigma;": "\u03A3",
827
+ "&SmallCircle;": "\u2218",
828
+ "&Sopf;": "\u{1D54A}",
829
+ "&Sqrt;": "\u221A",
830
+ "&Square;": "\u25A1",
831
+ "&SquareIntersection;": "\u2293",
832
+ "&SquareSubset;": "\u228F",
833
+ "&SquareSubsetEqual;": "\u2291",
834
+ "&SquareSuperset;": "\u2290",
835
+ "&SquareSupersetEqual;": "\u2292",
836
+ "&SquareUnion;": "\u2294",
837
+ "&Sscr;": "\u{1D4AE}",
838
+ "&Star;": "\u22C6",
839
+ "&Sub;": "\u22D0",
840
+ "&Subset;": "\u22D0",
841
+ "&SubsetEqual;": "\u2286",
842
+ "&Succeeds;": "\u227B",
843
+ "&SucceedsEqual;": "\u2AB0",
844
+ "&SucceedsSlantEqual;": "\u227D",
845
+ "&SucceedsTilde;": "\u227F",
846
+ "&SuchThat;": "\u220B",
847
+ "&Sum;": "\u2211",
848
+ "&Sup;": "\u22D1",
849
+ "&Superset;": "\u2283",
850
+ "&SupersetEqual;": "\u2287",
851
+ "&Supset;": "\u22D1",
852
+ "&THORN": "\xDE",
853
+ "&THORN;": "\xDE",
854
+ "&TRADE;": "\u2122",
855
+ "&TSHcy;": "\u040B",
856
+ "&TScy;": "\u0426",
857
+ "&Tab;": " ",
858
+ "&Tau;": "\u03A4",
859
+ "&Tcaron;": "\u0164",
860
+ "&Tcedil;": "\u0162",
861
+ "&Tcy;": "\u0422",
862
+ "&Tfr;": "\u{1D517}",
863
+ "&Therefore;": "\u2234",
864
+ "&Theta;": "\u0398",
865
+ "&ThickSpace;": "\u205F\u200A",
866
+ "&ThinSpace;": "\u2009",
867
+ "&Tilde;": "\u223C",
868
+ "&TildeEqual;": "\u2243",
869
+ "&TildeFullEqual;": "\u2245",
870
+ "&TildeTilde;": "\u2248",
871
+ "&Topf;": "\u{1D54B}",
872
+ "&TripleDot;": "\u20DB",
873
+ "&Tscr;": "\u{1D4AF}",
874
+ "&Tstrok;": "\u0166",
875
+ "&Uacute": "\xDA",
876
+ "&Uacute;": "\xDA",
877
+ "&Uarr;": "\u219F",
878
+ "&Uarrocir;": "\u2949",
879
+ "&Ubrcy;": "\u040E",
880
+ "&Ubreve;": "\u016C",
881
+ "&Ucirc": "\xDB",
882
+ "&Ucirc;": "\xDB",
883
+ "&Ucy;": "\u0423",
884
+ "&Udblac;": "\u0170",
885
+ "&Ufr;": "\u{1D518}",
886
+ "&Ugrave": "\xD9",
887
+ "&Ugrave;": "\xD9",
888
+ "&Umacr;": "\u016A",
889
+ "&UnderBar;": "_",
890
+ "&UnderBrace;": "\u23DF",
891
+ "&UnderBracket;": "\u23B5",
892
+ "&UnderParenthesis;": "\u23DD",
893
+ "&Union;": "\u22C3",
894
+ "&UnionPlus;": "\u228E",
895
+ "&Uogon;": "\u0172",
896
+ "&Uopf;": "\u{1D54C}",
897
+ "&UpArrow;": "\u2191",
898
+ "&UpArrowBar;": "\u2912",
899
+ "&UpArrowDownArrow;": "\u21C5",
900
+ "&UpDownArrow;": "\u2195",
901
+ "&UpEquilibrium;": "\u296E",
902
+ "&UpTee;": "\u22A5",
903
+ "&UpTeeArrow;": "\u21A5",
904
+ "&Uparrow;": "\u21D1",
905
+ "&Updownarrow;": "\u21D5",
906
+ "&UpperLeftArrow;": "\u2196",
907
+ "&UpperRightArrow;": "\u2197",
908
+ "&Upsi;": "\u03D2",
909
+ "&Upsilon;": "\u03A5",
910
+ "&Uring;": "\u016E",
911
+ "&Uscr;": "\u{1D4B0}",
912
+ "&Utilde;": "\u0168",
913
+ "&Uuml": "\xDC",
914
+ "&Uuml;": "\xDC",
915
+ "&VDash;": "\u22AB",
916
+ "&Vbar;": "\u2AEB",
917
+ "&Vcy;": "\u0412",
918
+ "&Vdash;": "\u22A9",
919
+ "&Vdashl;": "\u2AE6",
920
+ "&Vee;": "\u22C1",
921
+ "&Verbar;": "\u2016",
922
+ "&Vert;": "\u2016",
923
+ "&VerticalBar;": "\u2223",
924
+ "&VerticalLine;": "|",
925
+ "&VerticalSeparator;": "\u2758",
926
+ "&VerticalTilde;": "\u2240",
927
+ "&VeryThinSpace;": "\u200A",
928
+ "&Vfr;": "\u{1D519}",
929
+ "&Vopf;": "\u{1D54D}",
930
+ "&Vscr;": "\u{1D4B1}",
931
+ "&Vvdash;": "\u22AA",
932
+ "&Wcirc;": "\u0174",
933
+ "&Wedge;": "\u22C0",
934
+ "&Wfr;": "\u{1D51A}",
935
+ "&Wopf;": "\u{1D54E}",
936
+ "&Wscr;": "\u{1D4B2}",
937
+ "&Xfr;": "\u{1D51B}",
938
+ "&Xi;": "\u039E",
939
+ "&Xopf;": "\u{1D54F}",
940
+ "&Xscr;": "\u{1D4B3}",
941
+ "&YAcy;": "\u042F",
942
+ "&YIcy;": "\u0407",
943
+ "&YUcy;": "\u042E",
944
+ "&Yacute": "\xDD",
945
+ "&Yacute;": "\xDD",
946
+ "&Ycirc;": "\u0176",
947
+ "&Ycy;": "\u042B",
948
+ "&Yfr;": "\u{1D51C}",
949
+ "&Yopf;": "\u{1D550}",
950
+ "&Yscr;": "\u{1D4B4}",
951
+ "&Yuml;": "\u0178",
952
+ "&ZHcy;": "\u0416",
953
+ "&Zacute;": "\u0179",
954
+ "&Zcaron;": "\u017D",
955
+ "&Zcy;": "\u0417",
956
+ "&Zdot;": "\u017B",
957
+ "&ZeroWidthSpace;": "\u200B",
958
+ "&Zeta;": "\u0396",
959
+ "&Zfr;": "\u2128",
960
+ "&Zopf;": "\u2124",
961
+ "&Zscr;": "\u{1D4B5}",
962
+ "&aacute": "\xE1",
963
+ "&aacute;": "\xE1",
964
+ "&abreve;": "\u0103",
965
+ "&ac;": "\u223E",
966
+ "&acE;": "\u223E\u0333",
967
+ "&acd;": "\u223F",
968
+ "&acirc": "\xE2",
969
+ "&acirc;": "\xE2",
970
+ "&acute": "\xB4",
971
+ "&acute;": "\xB4",
972
+ "&acy;": "\u0430",
973
+ "&aelig": "\xE6",
974
+ "&aelig;": "\xE6",
975
+ "&af;": "\u2061",
976
+ "&afr;": "\u{1D51E}",
977
+ "&agrave": "\xE0",
978
+ "&agrave;": "\xE0",
979
+ "&alefsym;": "\u2135",
980
+ "&aleph;": "\u2135",
981
+ "&alpha;": "\u03B1",
982
+ "&amacr;": "\u0101",
983
+ "&amalg;": "\u2A3F",
984
+ "&amp": "&",
985
+ "&amp;": "&",
986
+ "&and;": "\u2227",
987
+ "&andand;": "\u2A55",
988
+ "&andd;": "\u2A5C",
989
+ "&andslope;": "\u2A58",
990
+ "&andv;": "\u2A5A",
991
+ "&ang;": "\u2220",
992
+ "&ange;": "\u29A4",
993
+ "&angle;": "\u2220",
994
+ "&angmsd;": "\u2221",
995
+ "&angmsdaa;": "\u29A8",
996
+ "&angmsdab;": "\u29A9",
997
+ "&angmsdac;": "\u29AA",
998
+ "&angmsdad;": "\u29AB",
999
+ "&angmsdae;": "\u29AC",
1000
+ "&angmsdaf;": "\u29AD",
1001
+ "&angmsdag;": "\u29AE",
1002
+ "&angmsdah;": "\u29AF",
1003
+ "&angrt;": "\u221F",
1004
+ "&angrtvb;": "\u22BE",
1005
+ "&angrtvbd;": "\u299D",
1006
+ "&angsph;": "\u2222",
1007
+ "&angst;": "\xC5",
1008
+ "&angzarr;": "\u237C",
1009
+ "&aogon;": "\u0105",
1010
+ "&aopf;": "\u{1D552}",
1011
+ "&ap;": "\u2248",
1012
+ "&apE;": "\u2A70",
1013
+ "&apacir;": "\u2A6F",
1014
+ "&ape;": "\u224A",
1015
+ "&apid;": "\u224B",
1016
+ "&apos;": "'",
1017
+ "&approx;": "\u2248",
1018
+ "&approxeq;": "\u224A",
1019
+ "&aring": "\xE5",
1020
+ "&aring;": "\xE5",
1021
+ "&ascr;": "\u{1D4B6}",
1022
+ "&ast;": "*",
1023
+ "&asymp;": "\u2248",
1024
+ "&asympeq;": "\u224D",
1025
+ "&atilde": "\xE3",
1026
+ "&atilde;": "\xE3",
1027
+ "&auml": "\xE4",
1028
+ "&auml;": "\xE4",
1029
+ "&awconint;": "\u2233",
1030
+ "&awint;": "\u2A11",
1031
+ "&bNot;": "\u2AED",
1032
+ "&backcong;": "\u224C",
1033
+ "&backepsilon;": "\u03F6",
1034
+ "&backprime;": "\u2035",
1035
+ "&backsim;": "\u223D",
1036
+ "&backsimeq;": "\u22CD",
1037
+ "&barvee;": "\u22BD",
1038
+ "&barwed;": "\u2305",
1039
+ "&barwedge;": "\u2305",
1040
+ "&bbrk;": "\u23B5",
1041
+ "&bbrktbrk;": "\u23B6",
1042
+ "&bcong;": "\u224C",
1043
+ "&bcy;": "\u0431",
1044
+ "&bdquo;": "\u201E",
1045
+ "&becaus;": "\u2235",
1046
+ "&because;": "\u2235",
1047
+ "&bemptyv;": "\u29B0",
1048
+ "&bepsi;": "\u03F6",
1049
+ "&bernou;": "\u212C",
1050
+ "&beta;": "\u03B2",
1051
+ "&beth;": "\u2136",
1052
+ "&between;": "\u226C",
1053
+ "&bfr;": "\u{1D51F}",
1054
+ "&bigcap;": "\u22C2",
1055
+ "&bigcirc;": "\u25EF",
1056
+ "&bigcup;": "\u22C3",
1057
+ "&bigodot;": "\u2A00",
1058
+ "&bigoplus;": "\u2A01",
1059
+ "&bigotimes;": "\u2A02",
1060
+ "&bigsqcup;": "\u2A06",
1061
+ "&bigstar;": "\u2605",
1062
+ "&bigtriangledown;": "\u25BD",
1063
+ "&bigtriangleup;": "\u25B3",
1064
+ "&biguplus;": "\u2A04",
1065
+ "&bigvee;": "\u22C1",
1066
+ "&bigwedge;": "\u22C0",
1067
+ "&bkarow;": "\u290D",
1068
+ "&blacklozenge;": "\u29EB",
1069
+ "&blacksquare;": "\u25AA",
1070
+ "&blacktriangle;": "\u25B4",
1071
+ "&blacktriangledown;": "\u25BE",
1072
+ "&blacktriangleleft;": "\u25C2",
1073
+ "&blacktriangleright;": "\u25B8",
1074
+ "&blank;": "\u2423",
1075
+ "&blk12;": "\u2592",
1076
+ "&blk14;": "\u2591",
1077
+ "&blk34;": "\u2593",
1078
+ "&block;": "\u2588",
1079
+ "&bne;": "=\u20E5",
1080
+ "&bnequiv;": "\u2261\u20E5",
1081
+ "&bnot;": "\u2310",
1082
+ "&bopf;": "\u{1D553}",
1083
+ "&bot;": "\u22A5",
1084
+ "&bottom;": "\u22A5",
1085
+ "&bowtie;": "\u22C8",
1086
+ "&boxDL;": "\u2557",
1087
+ "&boxDR;": "\u2554",
1088
+ "&boxDl;": "\u2556",
1089
+ "&boxDr;": "\u2553",
1090
+ "&boxH;": "\u2550",
1091
+ "&boxHD;": "\u2566",
1092
+ "&boxHU;": "\u2569",
1093
+ "&boxHd;": "\u2564",
1094
+ "&boxHu;": "\u2567",
1095
+ "&boxUL;": "\u255D",
1096
+ "&boxUR;": "\u255A",
1097
+ "&boxUl;": "\u255C",
1098
+ "&boxUr;": "\u2559",
1099
+ "&boxV;": "\u2551",
1100
+ "&boxVH;": "\u256C",
1101
+ "&boxVL;": "\u2563",
1102
+ "&boxVR;": "\u2560",
1103
+ "&boxVh;": "\u256B",
1104
+ "&boxVl;": "\u2562",
1105
+ "&boxVr;": "\u255F",
1106
+ "&boxbox;": "\u29C9",
1107
+ "&boxdL;": "\u2555",
1108
+ "&boxdR;": "\u2552",
1109
+ "&boxdl;": "\u2510",
1110
+ "&boxdr;": "\u250C",
1111
+ "&boxh;": "\u2500",
1112
+ "&boxhD;": "\u2565",
1113
+ "&boxhU;": "\u2568",
1114
+ "&boxhd;": "\u252C",
1115
+ "&boxhu;": "\u2534",
1116
+ "&boxminus;": "\u229F",
1117
+ "&boxplus;": "\u229E",
1118
+ "&boxtimes;": "\u22A0",
1119
+ "&boxuL;": "\u255B",
1120
+ "&boxuR;": "\u2558",
1121
+ "&boxul;": "\u2518",
1122
+ "&boxur;": "\u2514",
1123
+ "&boxv;": "\u2502",
1124
+ "&boxvH;": "\u256A",
1125
+ "&boxvL;": "\u2561",
1126
+ "&boxvR;": "\u255E",
1127
+ "&boxvh;": "\u253C",
1128
+ "&boxvl;": "\u2524",
1129
+ "&boxvr;": "\u251C",
1130
+ "&bprime;": "\u2035",
1131
+ "&breve;": "\u02D8",
1132
+ "&brvbar": "\xA6",
1133
+ "&brvbar;": "\xA6",
1134
+ "&bscr;": "\u{1D4B7}",
1135
+ "&bsemi;": "\u204F",
1136
+ "&bsim;": "\u223D",
1137
+ "&bsime;": "\u22CD",
1138
+ "&bsol;": "\\",
1139
+ "&bsolb;": "\u29C5",
1140
+ "&bsolhsub;": "\u27C8",
1141
+ "&bull;": "\u2022",
1142
+ "&bullet;": "\u2022",
1143
+ "&bump;": "\u224E",
1144
+ "&bumpE;": "\u2AAE",
1145
+ "&bumpe;": "\u224F",
1146
+ "&bumpeq;": "\u224F",
1147
+ "&cacute;": "\u0107",
1148
+ "&cap;": "\u2229",
1149
+ "&capand;": "\u2A44",
1150
+ "&capbrcup;": "\u2A49",
1151
+ "&capcap;": "\u2A4B",
1152
+ "&capcup;": "\u2A47",
1153
+ "&capdot;": "\u2A40",
1154
+ "&caps;": "\u2229\uFE00",
1155
+ "&caret;": "\u2041",
1156
+ "&caron;": "\u02C7",
1157
+ "&ccaps;": "\u2A4D",
1158
+ "&ccaron;": "\u010D",
1159
+ "&ccedil": "\xE7",
1160
+ "&ccedil;": "\xE7",
1161
+ "&ccirc;": "\u0109",
1162
+ "&ccups;": "\u2A4C",
1163
+ "&ccupssm;": "\u2A50",
1164
+ "&cdot;": "\u010B",
1165
+ "&cedil": "\xB8",
1166
+ "&cedil;": "\xB8",
1167
+ "&cemptyv;": "\u29B2",
1168
+ "&cent": "\xA2",
1169
+ "&cent;": "\xA2",
1170
+ "&centerdot;": "\xB7",
1171
+ "&cfr;": "\u{1D520}",
1172
+ "&chcy;": "\u0447",
1173
+ "&check;": "\u2713",
1174
+ "&checkmark;": "\u2713",
1175
+ "&chi;": "\u03C7",
1176
+ "&cir;": "\u25CB",
1177
+ "&cirE;": "\u29C3",
1178
+ "&circ;": "\u02C6",
1179
+ "&circeq;": "\u2257",
1180
+ "&circlearrowleft;": "\u21BA",
1181
+ "&circlearrowright;": "\u21BB",
1182
+ "&circledR;": "\xAE",
1183
+ "&circledS;": "\u24C8",
1184
+ "&circledast;": "\u229B",
1185
+ "&circledcirc;": "\u229A",
1186
+ "&circleddash;": "\u229D",
1187
+ "&cire;": "\u2257",
1188
+ "&cirfnint;": "\u2A10",
1189
+ "&cirmid;": "\u2AEF",
1190
+ "&cirscir;": "\u29C2",
1191
+ "&clubs;": "\u2663",
1192
+ "&clubsuit;": "\u2663",
1193
+ "&colon;": ":",
1194
+ "&colone;": "\u2254",
1195
+ "&coloneq;": "\u2254",
1196
+ "&comma;": ",",
1197
+ "&commat;": "@",
1198
+ "&comp;": "\u2201",
1199
+ "&compfn;": "\u2218",
1200
+ "&complement;": "\u2201",
1201
+ "&complexes;": "\u2102",
1202
+ "&cong;": "\u2245",
1203
+ "&congdot;": "\u2A6D",
1204
+ "&conint;": "\u222E",
1205
+ "&copf;": "\u{1D554}",
1206
+ "&coprod;": "\u2210",
1207
+ "&copy": "\xA9",
1208
+ "&copy;": "\xA9",
1209
+ "&copysr;": "\u2117",
1210
+ "&crarr;": "\u21B5",
1211
+ "&cross;": "\u2717",
1212
+ "&cscr;": "\u{1D4B8}",
1213
+ "&csub;": "\u2ACF",
1214
+ "&csube;": "\u2AD1",
1215
+ "&csup;": "\u2AD0",
1216
+ "&csupe;": "\u2AD2",
1217
+ "&ctdot;": "\u22EF",
1218
+ "&cudarrl;": "\u2938",
1219
+ "&cudarrr;": "\u2935",
1220
+ "&cuepr;": "\u22DE",
1221
+ "&cuesc;": "\u22DF",
1222
+ "&cularr;": "\u21B6",
1223
+ "&cularrp;": "\u293D",
1224
+ "&cup;": "\u222A",
1225
+ "&cupbrcap;": "\u2A48",
1226
+ "&cupcap;": "\u2A46",
1227
+ "&cupcup;": "\u2A4A",
1228
+ "&cupdot;": "\u228D",
1229
+ "&cupor;": "\u2A45",
1230
+ "&cups;": "\u222A\uFE00",
1231
+ "&curarr;": "\u21B7",
1232
+ "&curarrm;": "\u293C",
1233
+ "&curlyeqprec;": "\u22DE",
1234
+ "&curlyeqsucc;": "\u22DF",
1235
+ "&curlyvee;": "\u22CE",
1236
+ "&curlywedge;": "\u22CF",
1237
+ "&curren": "\xA4",
1238
+ "&curren;": "\xA4",
1239
+ "&curvearrowleft;": "\u21B6",
1240
+ "&curvearrowright;": "\u21B7",
1241
+ "&cuvee;": "\u22CE",
1242
+ "&cuwed;": "\u22CF",
1243
+ "&cwconint;": "\u2232",
1244
+ "&cwint;": "\u2231",
1245
+ "&cylcty;": "\u232D",
1246
+ "&dArr;": "\u21D3",
1247
+ "&dHar;": "\u2965",
1248
+ "&dagger;": "\u2020",
1249
+ "&daleth;": "\u2138",
1250
+ "&darr;": "\u2193",
1251
+ "&dash;": "\u2010",
1252
+ "&dashv;": "\u22A3",
1253
+ "&dbkarow;": "\u290F",
1254
+ "&dblac;": "\u02DD",
1255
+ "&dcaron;": "\u010F",
1256
+ "&dcy;": "\u0434",
1257
+ "&dd;": "\u2146",
1258
+ "&ddagger;": "\u2021",
1259
+ "&ddarr;": "\u21CA",
1260
+ "&ddotseq;": "\u2A77",
1261
+ "&deg": "\xB0",
1262
+ "&deg;": "\xB0",
1263
+ "&delta;": "\u03B4",
1264
+ "&demptyv;": "\u29B1",
1265
+ "&dfisht;": "\u297F",
1266
+ "&dfr;": "\u{1D521}",
1267
+ "&dharl;": "\u21C3",
1268
+ "&dharr;": "\u21C2",
1269
+ "&diam;": "\u22C4",
1270
+ "&diamond;": "\u22C4",
1271
+ "&diamondsuit;": "\u2666",
1272
+ "&diams;": "\u2666",
1273
+ "&die;": "\xA8",
1274
+ "&digamma;": "\u03DD",
1275
+ "&disin;": "\u22F2",
1276
+ "&div;": "\xF7",
1277
+ "&divide": "\xF7",
1278
+ "&divide;": "\xF7",
1279
+ "&divideontimes;": "\u22C7",
1280
+ "&divonx;": "\u22C7",
1281
+ "&djcy;": "\u0452",
1282
+ "&dlcorn;": "\u231E",
1283
+ "&dlcrop;": "\u230D",
1284
+ "&dollar;": "$",
1285
+ "&dopf;": "\u{1D555}",
1286
+ "&dot;": "\u02D9",
1287
+ "&doteq;": "\u2250",
1288
+ "&doteqdot;": "\u2251",
1289
+ "&dotminus;": "\u2238",
1290
+ "&dotplus;": "\u2214",
1291
+ "&dotsquare;": "\u22A1",
1292
+ "&doublebarwedge;": "\u2306",
1293
+ "&downarrow;": "\u2193",
1294
+ "&downdownarrows;": "\u21CA",
1295
+ "&downharpoonleft;": "\u21C3",
1296
+ "&downharpoonright;": "\u21C2",
1297
+ "&drbkarow;": "\u2910",
1298
+ "&drcorn;": "\u231F",
1299
+ "&drcrop;": "\u230C",
1300
+ "&dscr;": "\u{1D4B9}",
1301
+ "&dscy;": "\u0455",
1302
+ "&dsol;": "\u29F6",
1303
+ "&dstrok;": "\u0111",
1304
+ "&dtdot;": "\u22F1",
1305
+ "&dtri;": "\u25BF",
1306
+ "&dtrif;": "\u25BE",
1307
+ "&duarr;": "\u21F5",
1308
+ "&duhar;": "\u296F",
1309
+ "&dwangle;": "\u29A6",
1310
+ "&dzcy;": "\u045F",
1311
+ "&dzigrarr;": "\u27FF",
1312
+ "&eDDot;": "\u2A77",
1313
+ "&eDot;": "\u2251",
1314
+ "&eacute": "\xE9",
1315
+ "&eacute;": "\xE9",
1316
+ "&easter;": "\u2A6E",
1317
+ "&ecaron;": "\u011B",
1318
+ "&ecir;": "\u2256",
1319
+ "&ecirc": "\xEA",
1320
+ "&ecirc;": "\xEA",
1321
+ "&ecolon;": "\u2255",
1322
+ "&ecy;": "\u044D",
1323
+ "&edot;": "\u0117",
1324
+ "&ee;": "\u2147",
1325
+ "&efDot;": "\u2252",
1326
+ "&efr;": "\u{1D522}",
1327
+ "&eg;": "\u2A9A",
1328
+ "&egrave": "\xE8",
1329
+ "&egrave;": "\xE8",
1330
+ "&egs;": "\u2A96",
1331
+ "&egsdot;": "\u2A98",
1332
+ "&el;": "\u2A99",
1333
+ "&elinters;": "\u23E7",
1334
+ "&ell;": "\u2113",
1335
+ "&els;": "\u2A95",
1336
+ "&elsdot;": "\u2A97",
1337
+ "&emacr;": "\u0113",
1338
+ "&empty;": "\u2205",
1339
+ "&emptyset;": "\u2205",
1340
+ "&emptyv;": "\u2205",
1341
+ "&emsp13;": "\u2004",
1342
+ "&emsp14;": "\u2005",
1343
+ "&emsp;": "\u2003",
1344
+ "&eng;": "\u014B",
1345
+ "&ensp;": "\u2002",
1346
+ "&eogon;": "\u0119",
1347
+ "&eopf;": "\u{1D556}",
1348
+ "&epar;": "\u22D5",
1349
+ "&eparsl;": "\u29E3",
1350
+ "&eplus;": "\u2A71",
1351
+ "&epsi;": "\u03B5",
1352
+ "&epsilon;": "\u03B5",
1353
+ "&epsiv;": "\u03F5",
1354
+ "&eqcirc;": "\u2256",
1355
+ "&eqcolon;": "\u2255",
1356
+ "&eqsim;": "\u2242",
1357
+ "&eqslantgtr;": "\u2A96",
1358
+ "&eqslantless;": "\u2A95",
1359
+ "&equals;": "=",
1360
+ "&equest;": "\u225F",
1361
+ "&equiv;": "\u2261",
1362
+ "&equivDD;": "\u2A78",
1363
+ "&eqvparsl;": "\u29E5",
1364
+ "&erDot;": "\u2253",
1365
+ "&erarr;": "\u2971",
1366
+ "&escr;": "\u212F",
1367
+ "&esdot;": "\u2250",
1368
+ "&esim;": "\u2242",
1369
+ "&eta;": "\u03B7",
1370
+ "&eth": "\xF0",
1371
+ "&eth;": "\xF0",
1372
+ "&euml": "\xEB",
1373
+ "&euml;": "\xEB",
1374
+ "&euro;": "\u20AC",
1375
+ "&excl;": "!",
1376
+ "&exist;": "\u2203",
1377
+ "&expectation;": "\u2130",
1378
+ "&exponentiale;": "\u2147",
1379
+ "&fallingdotseq;": "\u2252",
1380
+ "&fcy;": "\u0444",
1381
+ "&female;": "\u2640",
1382
+ "&ffilig;": "\uFB03",
1383
+ "&fflig;": "\uFB00",
1384
+ "&ffllig;": "\uFB04",
1385
+ "&ffr;": "\u{1D523}",
1386
+ "&filig;": "\uFB01",
1387
+ "&fjlig;": "fj",
1388
+ "&flat;": "\u266D",
1389
+ "&fllig;": "\uFB02",
1390
+ "&fltns;": "\u25B1",
1391
+ "&fnof;": "\u0192",
1392
+ "&fopf;": "\u{1D557}",
1393
+ "&forall;": "\u2200",
1394
+ "&fork;": "\u22D4",
1395
+ "&forkv;": "\u2AD9",
1396
+ "&fpartint;": "\u2A0D",
1397
+ "&frac12": "\xBD",
1398
+ "&frac12;": "\xBD",
1399
+ "&frac13;": "\u2153",
1400
+ "&frac14": "\xBC",
1401
+ "&frac14;": "\xBC",
1402
+ "&frac15;": "\u2155",
1403
+ "&frac16;": "\u2159",
1404
+ "&frac18;": "\u215B",
1405
+ "&frac23;": "\u2154",
1406
+ "&frac25;": "\u2156",
1407
+ "&frac34": "\xBE",
1408
+ "&frac34;": "\xBE",
1409
+ "&frac35;": "\u2157",
1410
+ "&frac38;": "\u215C",
1411
+ "&frac45;": "\u2158",
1412
+ "&frac56;": "\u215A",
1413
+ "&frac58;": "\u215D",
1414
+ "&frac78;": "\u215E",
1415
+ "&frasl;": "\u2044",
1416
+ "&frown;": "\u2322",
1417
+ "&fscr;": "\u{1D4BB}",
1418
+ "&gE;": "\u2267",
1419
+ "&gEl;": "\u2A8C",
1420
+ "&gacute;": "\u01F5",
1421
+ "&gamma;": "\u03B3",
1422
+ "&gammad;": "\u03DD",
1423
+ "&gap;": "\u2A86",
1424
+ "&gbreve;": "\u011F",
1425
+ "&gcirc;": "\u011D",
1426
+ "&gcy;": "\u0433",
1427
+ "&gdot;": "\u0121",
1428
+ "&ge;": "\u2265",
1429
+ "&gel;": "\u22DB",
1430
+ "&geq;": "\u2265",
1431
+ "&geqq;": "\u2267",
1432
+ "&geqslant;": "\u2A7E",
1433
+ "&ges;": "\u2A7E",
1434
+ "&gescc;": "\u2AA9",
1435
+ "&gesdot;": "\u2A80",
1436
+ "&gesdoto;": "\u2A82",
1437
+ "&gesdotol;": "\u2A84",
1438
+ "&gesl;": "\u22DB\uFE00",
1439
+ "&gesles;": "\u2A94",
1440
+ "&gfr;": "\u{1D524}",
1441
+ "&gg;": "\u226B",
1442
+ "&ggg;": "\u22D9",
1443
+ "&gimel;": "\u2137",
1444
+ "&gjcy;": "\u0453",
1445
+ "&gl;": "\u2277",
1446
+ "&glE;": "\u2A92",
1447
+ "&gla;": "\u2AA5",
1448
+ "&glj;": "\u2AA4",
1449
+ "&gnE;": "\u2269",
1450
+ "&gnap;": "\u2A8A",
1451
+ "&gnapprox;": "\u2A8A",
1452
+ "&gne;": "\u2A88",
1453
+ "&gneq;": "\u2A88",
1454
+ "&gneqq;": "\u2269",
1455
+ "&gnsim;": "\u22E7",
1456
+ "&gopf;": "\u{1D558}",
1457
+ "&grave;": "`",
1458
+ "&gscr;": "\u210A",
1459
+ "&gsim;": "\u2273",
1460
+ "&gsime;": "\u2A8E",
1461
+ "&gsiml;": "\u2A90",
1462
+ "&gt": ">",
1463
+ "&gt;": ">",
1464
+ "&gtcc;": "\u2AA7",
1465
+ "&gtcir;": "\u2A7A",
1466
+ "&gtdot;": "\u22D7",
1467
+ "&gtlPar;": "\u2995",
1468
+ "&gtquest;": "\u2A7C",
1469
+ "&gtrapprox;": "\u2A86",
1470
+ "&gtrarr;": "\u2978",
1471
+ "&gtrdot;": "\u22D7",
1472
+ "&gtreqless;": "\u22DB",
1473
+ "&gtreqqless;": "\u2A8C",
1474
+ "&gtrless;": "\u2277",
1475
+ "&gtrsim;": "\u2273",
1476
+ "&gvertneqq;": "\u2269\uFE00",
1477
+ "&gvnE;": "\u2269\uFE00",
1478
+ "&hArr;": "\u21D4",
1479
+ "&hairsp;": "\u200A",
1480
+ "&half;": "\xBD",
1481
+ "&hamilt;": "\u210B",
1482
+ "&hardcy;": "\u044A",
1483
+ "&harr;": "\u2194",
1484
+ "&harrcir;": "\u2948",
1485
+ "&harrw;": "\u21AD",
1486
+ "&hbar;": "\u210F",
1487
+ "&hcirc;": "\u0125",
1488
+ "&hearts;": "\u2665",
1489
+ "&heartsuit;": "\u2665",
1490
+ "&hellip;": "\u2026",
1491
+ "&hercon;": "\u22B9",
1492
+ "&hfr;": "\u{1D525}",
1493
+ "&hksearow;": "\u2925",
1494
+ "&hkswarow;": "\u2926",
1495
+ "&hoarr;": "\u21FF",
1496
+ "&homtht;": "\u223B",
1497
+ "&hookleftarrow;": "\u21A9",
1498
+ "&hookrightarrow;": "\u21AA",
1499
+ "&hopf;": "\u{1D559}",
1500
+ "&horbar;": "\u2015",
1501
+ "&hscr;": "\u{1D4BD}",
1502
+ "&hslash;": "\u210F",
1503
+ "&hstrok;": "\u0127",
1504
+ "&hybull;": "\u2043",
1505
+ "&hyphen;": "\u2010",
1506
+ "&iacute": "\xED",
1507
+ "&iacute;": "\xED",
1508
+ "&ic;": "\u2063",
1509
+ "&icirc": "\xEE",
1510
+ "&icirc;": "\xEE",
1511
+ "&icy;": "\u0438",
1512
+ "&iecy;": "\u0435",
1513
+ "&iexcl": "\xA1",
1514
+ "&iexcl;": "\xA1",
1515
+ "&iff;": "\u21D4",
1516
+ "&ifr;": "\u{1D526}",
1517
+ "&igrave": "\xEC",
1518
+ "&igrave;": "\xEC",
1519
+ "&ii;": "\u2148",
1520
+ "&iiiint;": "\u2A0C",
1521
+ "&iiint;": "\u222D",
1522
+ "&iinfin;": "\u29DC",
1523
+ "&iiota;": "\u2129",
1524
+ "&ijlig;": "\u0133",
1525
+ "&imacr;": "\u012B",
1526
+ "&image;": "\u2111",
1527
+ "&imagline;": "\u2110",
1528
+ "&imagpart;": "\u2111",
1529
+ "&imath;": "\u0131",
1530
+ "&imof;": "\u22B7",
1531
+ "&imped;": "\u01B5",
1532
+ "&in;": "\u2208",
1533
+ "&incare;": "\u2105",
1534
+ "&infin;": "\u221E",
1535
+ "&infintie;": "\u29DD",
1536
+ "&inodot;": "\u0131",
1537
+ "&int;": "\u222B",
1538
+ "&intcal;": "\u22BA",
1539
+ "&integers;": "\u2124",
1540
+ "&intercal;": "\u22BA",
1541
+ "&intlarhk;": "\u2A17",
1542
+ "&intprod;": "\u2A3C",
1543
+ "&iocy;": "\u0451",
1544
+ "&iogon;": "\u012F",
1545
+ "&iopf;": "\u{1D55A}",
1546
+ "&iota;": "\u03B9",
1547
+ "&iprod;": "\u2A3C",
1548
+ "&iquest": "\xBF",
1549
+ "&iquest;": "\xBF",
1550
+ "&iscr;": "\u{1D4BE}",
1551
+ "&isin;": "\u2208",
1552
+ "&isinE;": "\u22F9",
1553
+ "&isindot;": "\u22F5",
1554
+ "&isins;": "\u22F4",
1555
+ "&isinsv;": "\u22F3",
1556
+ "&isinv;": "\u2208",
1557
+ "&it;": "\u2062",
1558
+ "&itilde;": "\u0129",
1559
+ "&iukcy;": "\u0456",
1560
+ "&iuml": "\xEF",
1561
+ "&iuml;": "\xEF",
1562
+ "&jcirc;": "\u0135",
1563
+ "&jcy;": "\u0439",
1564
+ "&jfr;": "\u{1D527}",
1565
+ "&jmath;": "\u0237",
1566
+ "&jopf;": "\u{1D55B}",
1567
+ "&jscr;": "\u{1D4BF}",
1568
+ "&jsercy;": "\u0458",
1569
+ "&jukcy;": "\u0454",
1570
+ "&kappa;": "\u03BA",
1571
+ "&kappav;": "\u03F0",
1572
+ "&kcedil;": "\u0137",
1573
+ "&kcy;": "\u043A",
1574
+ "&kfr;": "\u{1D528}",
1575
+ "&kgreen;": "\u0138",
1576
+ "&khcy;": "\u0445",
1577
+ "&kjcy;": "\u045C",
1578
+ "&kopf;": "\u{1D55C}",
1579
+ "&kscr;": "\u{1D4C0}",
1580
+ "&lAarr;": "\u21DA",
1581
+ "&lArr;": "\u21D0",
1582
+ "&lAtail;": "\u291B",
1583
+ "&lBarr;": "\u290E",
1584
+ "&lE;": "\u2266",
1585
+ "&lEg;": "\u2A8B",
1586
+ "&lHar;": "\u2962",
1587
+ "&lacute;": "\u013A",
1588
+ "&laemptyv;": "\u29B4",
1589
+ "&lagran;": "\u2112",
1590
+ "&lambda;": "\u03BB",
1591
+ "&lang;": "\u27E8",
1592
+ "&langd;": "\u2991",
1593
+ "&langle;": "\u27E8",
1594
+ "&lap;": "\u2A85",
1595
+ "&laquo": "\xAB",
1596
+ "&laquo;": "\xAB",
1597
+ "&larr;": "\u2190",
1598
+ "&larrb;": "\u21E4",
1599
+ "&larrbfs;": "\u291F",
1600
+ "&larrfs;": "\u291D",
1601
+ "&larrhk;": "\u21A9",
1602
+ "&larrlp;": "\u21AB",
1603
+ "&larrpl;": "\u2939",
1604
+ "&larrsim;": "\u2973",
1605
+ "&larrtl;": "\u21A2",
1606
+ "&lat;": "\u2AAB",
1607
+ "&latail;": "\u2919",
1608
+ "&late;": "\u2AAD",
1609
+ "&lates;": "\u2AAD\uFE00",
1610
+ "&lbarr;": "\u290C",
1611
+ "&lbbrk;": "\u2772",
1612
+ "&lbrace;": "{",
1613
+ "&lbrack;": "[",
1614
+ "&lbrke;": "\u298B",
1615
+ "&lbrksld;": "\u298F",
1616
+ "&lbrkslu;": "\u298D",
1617
+ "&lcaron;": "\u013E",
1618
+ "&lcedil;": "\u013C",
1619
+ "&lceil;": "\u2308",
1620
+ "&lcub;": "{",
1621
+ "&lcy;": "\u043B",
1622
+ "&ldca;": "\u2936",
1623
+ "&ldquo;": "\u201C",
1624
+ "&ldquor;": "\u201E",
1625
+ "&ldrdhar;": "\u2967",
1626
+ "&ldrushar;": "\u294B",
1627
+ "&ldsh;": "\u21B2",
1628
+ "&le;": "\u2264",
1629
+ "&leftarrow;": "\u2190",
1630
+ "&leftarrowtail;": "\u21A2",
1631
+ "&leftharpoondown;": "\u21BD",
1632
+ "&leftharpoonup;": "\u21BC",
1633
+ "&leftleftarrows;": "\u21C7",
1634
+ "&leftrightarrow;": "\u2194",
1635
+ "&leftrightarrows;": "\u21C6",
1636
+ "&leftrightharpoons;": "\u21CB",
1637
+ "&leftrightsquigarrow;": "\u21AD",
1638
+ "&leftthreetimes;": "\u22CB",
1639
+ "&leg;": "\u22DA",
1640
+ "&leq;": "\u2264",
1641
+ "&leqq;": "\u2266",
1642
+ "&leqslant;": "\u2A7D",
1643
+ "&les;": "\u2A7D",
1644
+ "&lescc;": "\u2AA8",
1645
+ "&lesdot;": "\u2A7F",
1646
+ "&lesdoto;": "\u2A81",
1647
+ "&lesdotor;": "\u2A83",
1648
+ "&lesg;": "\u22DA\uFE00",
1649
+ "&lesges;": "\u2A93",
1650
+ "&lessapprox;": "\u2A85",
1651
+ "&lessdot;": "\u22D6",
1652
+ "&lesseqgtr;": "\u22DA",
1653
+ "&lesseqqgtr;": "\u2A8B",
1654
+ "&lessgtr;": "\u2276",
1655
+ "&lesssim;": "\u2272",
1656
+ "&lfisht;": "\u297C",
1657
+ "&lfloor;": "\u230A",
1658
+ "&lfr;": "\u{1D529}",
1659
+ "&lg;": "\u2276",
1660
+ "&lgE;": "\u2A91",
1661
+ "&lhard;": "\u21BD",
1662
+ "&lharu;": "\u21BC",
1663
+ "&lharul;": "\u296A",
1664
+ "&lhblk;": "\u2584",
1665
+ "&ljcy;": "\u0459",
1666
+ "&ll;": "\u226A",
1667
+ "&llarr;": "\u21C7",
1668
+ "&llcorner;": "\u231E",
1669
+ "&llhard;": "\u296B",
1670
+ "&lltri;": "\u25FA",
1671
+ "&lmidot;": "\u0140",
1672
+ "&lmoust;": "\u23B0",
1673
+ "&lmoustache;": "\u23B0",
1674
+ "&lnE;": "\u2268",
1675
+ "&lnap;": "\u2A89",
1676
+ "&lnapprox;": "\u2A89",
1677
+ "&lne;": "\u2A87",
1678
+ "&lneq;": "\u2A87",
1679
+ "&lneqq;": "\u2268",
1680
+ "&lnsim;": "\u22E6",
1681
+ "&loang;": "\u27EC",
1682
+ "&loarr;": "\u21FD",
1683
+ "&lobrk;": "\u27E6",
1684
+ "&longleftarrow;": "\u27F5",
1685
+ "&longleftrightarrow;": "\u27F7",
1686
+ "&longmapsto;": "\u27FC",
1687
+ "&longrightarrow;": "\u27F6",
1688
+ "&looparrowleft;": "\u21AB",
1689
+ "&looparrowright;": "\u21AC",
1690
+ "&lopar;": "\u2985",
1691
+ "&lopf;": "\u{1D55D}",
1692
+ "&loplus;": "\u2A2D",
1693
+ "&lotimes;": "\u2A34",
1694
+ "&lowast;": "\u2217",
1695
+ "&lowbar;": "_",
1696
+ "&loz;": "\u25CA",
1697
+ "&lozenge;": "\u25CA",
1698
+ "&lozf;": "\u29EB",
1699
+ "&lpar;": "(",
1700
+ "&lparlt;": "\u2993",
1701
+ "&lrarr;": "\u21C6",
1702
+ "&lrcorner;": "\u231F",
1703
+ "&lrhar;": "\u21CB",
1704
+ "&lrhard;": "\u296D",
1705
+ "&lrm;": "\u200E",
1706
+ "&lrtri;": "\u22BF",
1707
+ "&lsaquo;": "\u2039",
1708
+ "&lscr;": "\u{1D4C1}",
1709
+ "&lsh;": "\u21B0",
1710
+ "&lsim;": "\u2272",
1711
+ "&lsime;": "\u2A8D",
1712
+ "&lsimg;": "\u2A8F",
1713
+ "&lsqb;": "[",
1714
+ "&lsquo;": "\u2018",
1715
+ "&lsquor;": "\u201A",
1716
+ "&lstrok;": "\u0142",
1717
+ "&lt": "<",
1718
+ "&lt;": "<",
1719
+ "&ltcc;": "\u2AA6",
1720
+ "&ltcir;": "\u2A79",
1721
+ "&ltdot;": "\u22D6",
1722
+ "&lthree;": "\u22CB",
1723
+ "&ltimes;": "\u22C9",
1724
+ "&ltlarr;": "\u2976",
1725
+ "&ltquest;": "\u2A7B",
1726
+ "&ltrPar;": "\u2996",
1727
+ "&ltri;": "\u25C3",
1728
+ "&ltrie;": "\u22B4",
1729
+ "&ltrif;": "\u25C2",
1730
+ "&lurdshar;": "\u294A",
1731
+ "&luruhar;": "\u2966",
1732
+ "&lvertneqq;": "\u2268\uFE00",
1733
+ "&lvnE;": "\u2268\uFE00",
1734
+ "&mDDot;": "\u223A",
1735
+ "&macr": "\xAF",
1736
+ "&macr;": "\xAF",
1737
+ "&male;": "\u2642",
1738
+ "&malt;": "\u2720",
1739
+ "&maltese;": "\u2720",
1740
+ "&map;": "\u21A6",
1741
+ "&mapsto;": "\u21A6",
1742
+ "&mapstodown;": "\u21A7",
1743
+ "&mapstoleft;": "\u21A4",
1744
+ "&mapstoup;": "\u21A5",
1745
+ "&marker;": "\u25AE",
1746
+ "&mcomma;": "\u2A29",
1747
+ "&mcy;": "\u043C",
1748
+ "&mdash;": "\u2014",
1749
+ "&measuredangle;": "\u2221",
1750
+ "&mfr;": "\u{1D52A}",
1751
+ "&mho;": "\u2127",
1752
+ "&micro": "\xB5",
1753
+ "&micro;": "\xB5",
1754
+ "&mid;": "\u2223",
1755
+ "&midast;": "*",
1756
+ "&midcir;": "\u2AF0",
1757
+ "&middot": "\xB7",
1758
+ "&middot;": "\xB7",
1759
+ "&minus;": "\u2212",
1760
+ "&minusb;": "\u229F",
1761
+ "&minusd;": "\u2238",
1762
+ "&minusdu;": "\u2A2A",
1763
+ "&mlcp;": "\u2ADB",
1764
+ "&mldr;": "\u2026",
1765
+ "&mnplus;": "\u2213",
1766
+ "&models;": "\u22A7",
1767
+ "&mopf;": "\u{1D55E}",
1768
+ "&mp;": "\u2213",
1769
+ "&mscr;": "\u{1D4C2}",
1770
+ "&mstpos;": "\u223E",
1771
+ "&mu;": "\u03BC",
1772
+ "&multimap;": "\u22B8",
1773
+ "&mumap;": "\u22B8",
1774
+ "&nGg;": "\u22D9\u0338",
1775
+ "&nGt;": "\u226B\u20D2",
1776
+ "&nGtv;": "\u226B\u0338",
1777
+ "&nLeftarrow;": "\u21CD",
1778
+ "&nLeftrightarrow;": "\u21CE",
1779
+ "&nLl;": "\u22D8\u0338",
1780
+ "&nLt;": "\u226A\u20D2",
1781
+ "&nLtv;": "\u226A\u0338",
1782
+ "&nRightarrow;": "\u21CF",
1783
+ "&nVDash;": "\u22AF",
1784
+ "&nVdash;": "\u22AE",
1785
+ "&nabla;": "\u2207",
1786
+ "&nacute;": "\u0144",
1787
+ "&nang;": "\u2220\u20D2",
1788
+ "&nap;": "\u2249",
1789
+ "&napE;": "\u2A70\u0338",
1790
+ "&napid;": "\u224B\u0338",
1791
+ "&napos;": "\u0149",
1792
+ "&napprox;": "\u2249",
1793
+ "&natur;": "\u266E",
1794
+ "&natural;": "\u266E",
1795
+ "&naturals;": "\u2115",
1796
+ "&nbsp": "\xA0",
1797
+ "&nbsp;": "\xA0",
1798
+ "&nbump;": "\u224E\u0338",
1799
+ "&nbumpe;": "\u224F\u0338",
1800
+ "&ncap;": "\u2A43",
1801
+ "&ncaron;": "\u0148",
1802
+ "&ncedil;": "\u0146",
1803
+ "&ncong;": "\u2247",
1804
+ "&ncongdot;": "\u2A6D\u0338",
1805
+ "&ncup;": "\u2A42",
1806
+ "&ncy;": "\u043D",
1807
+ "&ndash;": "\u2013",
1808
+ "&ne;": "\u2260",
1809
+ "&neArr;": "\u21D7",
1810
+ "&nearhk;": "\u2924",
1811
+ "&nearr;": "\u2197",
1812
+ "&nearrow;": "\u2197",
1813
+ "&nedot;": "\u2250\u0338",
1814
+ "&nequiv;": "\u2262",
1815
+ "&nesear;": "\u2928",
1816
+ "&nesim;": "\u2242\u0338",
1817
+ "&nexist;": "\u2204",
1818
+ "&nexists;": "\u2204",
1819
+ "&nfr;": "\u{1D52B}",
1820
+ "&ngE;": "\u2267\u0338",
1821
+ "&nge;": "\u2271",
1822
+ "&ngeq;": "\u2271",
1823
+ "&ngeqq;": "\u2267\u0338",
1824
+ "&ngeqslant;": "\u2A7E\u0338",
1825
+ "&nges;": "\u2A7E\u0338",
1826
+ "&ngsim;": "\u2275",
1827
+ "&ngt;": "\u226F",
1828
+ "&ngtr;": "\u226F",
1829
+ "&nhArr;": "\u21CE",
1830
+ "&nharr;": "\u21AE",
1831
+ "&nhpar;": "\u2AF2",
1832
+ "&ni;": "\u220B",
1833
+ "&nis;": "\u22FC",
1834
+ "&nisd;": "\u22FA",
1835
+ "&niv;": "\u220B",
1836
+ "&njcy;": "\u045A",
1837
+ "&nlArr;": "\u21CD",
1838
+ "&nlE;": "\u2266\u0338",
1839
+ "&nlarr;": "\u219A",
1840
+ "&nldr;": "\u2025",
1841
+ "&nle;": "\u2270",
1842
+ "&nleftarrow;": "\u219A",
1843
+ "&nleftrightarrow;": "\u21AE",
1844
+ "&nleq;": "\u2270",
1845
+ "&nleqq;": "\u2266\u0338",
1846
+ "&nleqslant;": "\u2A7D\u0338",
1847
+ "&nles;": "\u2A7D\u0338",
1848
+ "&nless;": "\u226E",
1849
+ "&nlsim;": "\u2274",
1850
+ "&nlt;": "\u226E",
1851
+ "&nltri;": "\u22EA",
1852
+ "&nltrie;": "\u22EC",
1853
+ "&nmid;": "\u2224",
1854
+ "&nopf;": "\u{1D55F}",
1855
+ "&not": "\xAC",
1856
+ "&not;": "\xAC",
1857
+ "&notin;": "\u2209",
1858
+ "&notinE;": "\u22F9\u0338",
1859
+ "&notindot;": "\u22F5\u0338",
1860
+ "&notinva;": "\u2209",
1861
+ "&notinvb;": "\u22F7",
1862
+ "&notinvc;": "\u22F6",
1863
+ "&notni;": "\u220C",
1864
+ "&notniva;": "\u220C",
1865
+ "&notnivb;": "\u22FE",
1866
+ "&notnivc;": "\u22FD",
1867
+ "&npar;": "\u2226",
1868
+ "&nparallel;": "\u2226",
1869
+ "&nparsl;": "\u2AFD\u20E5",
1870
+ "&npart;": "\u2202\u0338",
1871
+ "&npolint;": "\u2A14",
1872
+ "&npr;": "\u2280",
1873
+ "&nprcue;": "\u22E0",
1874
+ "&npre;": "\u2AAF\u0338",
1875
+ "&nprec;": "\u2280",
1876
+ "&npreceq;": "\u2AAF\u0338",
1877
+ "&nrArr;": "\u21CF",
1878
+ "&nrarr;": "\u219B",
1879
+ "&nrarrc;": "\u2933\u0338",
1880
+ "&nrarrw;": "\u219D\u0338",
1881
+ "&nrightarrow;": "\u219B",
1882
+ "&nrtri;": "\u22EB",
1883
+ "&nrtrie;": "\u22ED",
1884
+ "&nsc;": "\u2281",
1885
+ "&nsccue;": "\u22E1",
1886
+ "&nsce;": "\u2AB0\u0338",
1887
+ "&nscr;": "\u{1D4C3}",
1888
+ "&nshortmid;": "\u2224",
1889
+ "&nshortparallel;": "\u2226",
1890
+ "&nsim;": "\u2241",
1891
+ "&nsime;": "\u2244",
1892
+ "&nsimeq;": "\u2244",
1893
+ "&nsmid;": "\u2224",
1894
+ "&nspar;": "\u2226",
1895
+ "&nsqsube;": "\u22E2",
1896
+ "&nsqsupe;": "\u22E3",
1897
+ "&nsub;": "\u2284",
1898
+ "&nsubE;": "\u2AC5\u0338",
1899
+ "&nsube;": "\u2288",
1900
+ "&nsubset;": "\u2282\u20D2",
1901
+ "&nsubseteq;": "\u2288",
1902
+ "&nsubseteqq;": "\u2AC5\u0338",
1903
+ "&nsucc;": "\u2281",
1904
+ "&nsucceq;": "\u2AB0\u0338",
1905
+ "&nsup;": "\u2285",
1906
+ "&nsupE;": "\u2AC6\u0338",
1907
+ "&nsupe;": "\u2289",
1908
+ "&nsupset;": "\u2283\u20D2",
1909
+ "&nsupseteq;": "\u2289",
1910
+ "&nsupseteqq;": "\u2AC6\u0338",
1911
+ "&ntgl;": "\u2279",
1912
+ "&ntilde": "\xF1",
1913
+ "&ntilde;": "\xF1",
1914
+ "&ntlg;": "\u2278",
1915
+ "&ntriangleleft;": "\u22EA",
1916
+ "&ntrianglelefteq;": "\u22EC",
1917
+ "&ntriangleright;": "\u22EB",
1918
+ "&ntrianglerighteq;": "\u22ED",
1919
+ "&nu;": "\u03BD",
1920
+ "&num;": "#",
1921
+ "&numero;": "\u2116",
1922
+ "&numsp;": "\u2007",
1923
+ "&nvDash;": "\u22AD",
1924
+ "&nvHarr;": "\u2904",
1925
+ "&nvap;": "\u224D\u20D2",
1926
+ "&nvdash;": "\u22AC",
1927
+ "&nvge;": "\u2265\u20D2",
1928
+ "&nvgt;": ">\u20D2",
1929
+ "&nvinfin;": "\u29DE",
1930
+ "&nvlArr;": "\u2902",
1931
+ "&nvle;": "\u2264\u20D2",
1932
+ "&nvlt;": "<\u20D2",
1933
+ "&nvltrie;": "\u22B4\u20D2",
1934
+ "&nvrArr;": "\u2903",
1935
+ "&nvrtrie;": "\u22B5\u20D2",
1936
+ "&nvsim;": "\u223C\u20D2",
1937
+ "&nwArr;": "\u21D6",
1938
+ "&nwarhk;": "\u2923",
1939
+ "&nwarr;": "\u2196",
1940
+ "&nwarrow;": "\u2196",
1941
+ "&nwnear;": "\u2927",
1942
+ "&oS;": "\u24C8",
1943
+ "&oacute": "\xF3",
1944
+ "&oacute;": "\xF3",
1945
+ "&oast;": "\u229B",
1946
+ "&ocir;": "\u229A",
1947
+ "&ocirc": "\xF4",
1948
+ "&ocirc;": "\xF4",
1949
+ "&ocy;": "\u043E",
1950
+ "&odash;": "\u229D",
1951
+ "&odblac;": "\u0151",
1952
+ "&odiv;": "\u2A38",
1953
+ "&odot;": "\u2299",
1954
+ "&odsold;": "\u29BC",
1955
+ "&oelig;": "\u0153",
1956
+ "&ofcir;": "\u29BF",
1957
+ "&ofr;": "\u{1D52C}",
1958
+ "&ogon;": "\u02DB",
1959
+ "&ograve": "\xF2",
1960
+ "&ograve;": "\xF2",
1961
+ "&ogt;": "\u29C1",
1962
+ "&ohbar;": "\u29B5",
1963
+ "&ohm;": "\u03A9",
1964
+ "&oint;": "\u222E",
1965
+ "&olarr;": "\u21BA",
1966
+ "&olcir;": "\u29BE",
1967
+ "&olcross;": "\u29BB",
1968
+ "&oline;": "\u203E",
1969
+ "&olt;": "\u29C0",
1970
+ "&omacr;": "\u014D",
1971
+ "&omega;": "\u03C9",
1972
+ "&omicron;": "\u03BF",
1973
+ "&omid;": "\u29B6",
1974
+ "&ominus;": "\u2296",
1975
+ "&oopf;": "\u{1D560}",
1976
+ "&opar;": "\u29B7",
1977
+ "&operp;": "\u29B9",
1978
+ "&oplus;": "\u2295",
1979
+ "&or;": "\u2228",
1980
+ "&orarr;": "\u21BB",
1981
+ "&ord;": "\u2A5D",
1982
+ "&order;": "\u2134",
1983
+ "&orderof;": "\u2134",
1984
+ "&ordf": "\xAA",
1985
+ "&ordf;": "\xAA",
1986
+ "&ordm": "\xBA",
1987
+ "&ordm;": "\xBA",
1988
+ "&origof;": "\u22B6",
1989
+ "&oror;": "\u2A56",
1990
+ "&orslope;": "\u2A57",
1991
+ "&orv;": "\u2A5B",
1992
+ "&oscr;": "\u2134",
1993
+ "&oslash": "\xF8",
1994
+ "&oslash;": "\xF8",
1995
+ "&osol;": "\u2298",
1996
+ "&otilde": "\xF5",
1997
+ "&otilde;": "\xF5",
1998
+ "&otimes;": "\u2297",
1999
+ "&otimesas;": "\u2A36",
2000
+ "&ouml": "\xF6",
2001
+ "&ouml;": "\xF6",
2002
+ "&ovbar;": "\u233D",
2003
+ "&par;": "\u2225",
2004
+ "&para": "\xB6",
2005
+ "&para;": "\xB6",
2006
+ "&parallel;": "\u2225",
2007
+ "&parsim;": "\u2AF3",
2008
+ "&parsl;": "\u2AFD",
2009
+ "&part;": "\u2202",
2010
+ "&pcy;": "\u043F",
2011
+ "&percnt;": "%",
2012
+ "&period;": ".",
2013
+ "&permil;": "\u2030",
2014
+ "&perp;": "\u22A5",
2015
+ "&pertenk;": "\u2031",
2016
+ "&pfr;": "\u{1D52D}",
2017
+ "&phi;": "\u03C6",
2018
+ "&phiv;": "\u03D5",
2019
+ "&phmmat;": "\u2133",
2020
+ "&phone;": "\u260E",
2021
+ "&pi;": "\u03C0",
2022
+ "&pitchfork;": "\u22D4",
2023
+ "&piv;": "\u03D6",
2024
+ "&planck;": "\u210F",
2025
+ "&planckh;": "\u210E",
2026
+ "&plankv;": "\u210F",
2027
+ "&plus;": "+",
2028
+ "&plusacir;": "\u2A23",
2029
+ "&plusb;": "\u229E",
2030
+ "&pluscir;": "\u2A22",
2031
+ "&plusdo;": "\u2214",
2032
+ "&plusdu;": "\u2A25",
2033
+ "&pluse;": "\u2A72",
2034
+ "&plusmn": "\xB1",
2035
+ "&plusmn;": "\xB1",
2036
+ "&plussim;": "\u2A26",
2037
+ "&plustwo;": "\u2A27",
2038
+ "&pm;": "\xB1",
2039
+ "&pointint;": "\u2A15",
2040
+ "&popf;": "\u{1D561}",
2041
+ "&pound": "\xA3",
2042
+ "&pound;": "\xA3",
2043
+ "&pr;": "\u227A",
2044
+ "&prE;": "\u2AB3",
2045
+ "&prap;": "\u2AB7",
2046
+ "&prcue;": "\u227C",
2047
+ "&pre;": "\u2AAF",
2048
+ "&prec;": "\u227A",
2049
+ "&precapprox;": "\u2AB7",
2050
+ "&preccurlyeq;": "\u227C",
2051
+ "&preceq;": "\u2AAF",
2052
+ "&precnapprox;": "\u2AB9",
2053
+ "&precneqq;": "\u2AB5",
2054
+ "&precnsim;": "\u22E8",
2055
+ "&precsim;": "\u227E",
2056
+ "&prime;": "\u2032",
2057
+ "&primes;": "\u2119",
2058
+ "&prnE;": "\u2AB5",
2059
+ "&prnap;": "\u2AB9",
2060
+ "&prnsim;": "\u22E8",
2061
+ "&prod;": "\u220F",
2062
+ "&profalar;": "\u232E",
2063
+ "&profline;": "\u2312",
2064
+ "&profsurf;": "\u2313",
2065
+ "&prop;": "\u221D",
2066
+ "&propto;": "\u221D",
2067
+ "&prsim;": "\u227E",
2068
+ "&prurel;": "\u22B0",
2069
+ "&pscr;": "\u{1D4C5}",
2070
+ "&psi;": "\u03C8",
2071
+ "&puncsp;": "\u2008",
2072
+ "&qfr;": "\u{1D52E}",
2073
+ "&qint;": "\u2A0C",
2074
+ "&qopf;": "\u{1D562}",
2075
+ "&qprime;": "\u2057",
2076
+ "&qscr;": "\u{1D4C6}",
2077
+ "&quaternions;": "\u210D",
2078
+ "&quatint;": "\u2A16",
2079
+ "&quest;": "?",
2080
+ "&questeq;": "\u225F",
2081
+ "&quot": '"',
2082
+ "&quot;": '"',
2083
+ "&rAarr;": "\u21DB",
2084
+ "&rArr;": "\u21D2",
2085
+ "&rAtail;": "\u291C",
2086
+ "&rBarr;": "\u290F",
2087
+ "&rHar;": "\u2964",
2088
+ "&race;": "\u223D\u0331",
2089
+ "&racute;": "\u0155",
2090
+ "&radic;": "\u221A",
2091
+ "&raemptyv;": "\u29B3",
2092
+ "&rang;": "\u27E9",
2093
+ "&rangd;": "\u2992",
2094
+ "&range;": "\u29A5",
2095
+ "&rangle;": "\u27E9",
2096
+ "&raquo": "\xBB",
2097
+ "&raquo;": "\xBB",
2098
+ "&rarr;": "\u2192",
2099
+ "&rarrap;": "\u2975",
2100
+ "&rarrb;": "\u21E5",
2101
+ "&rarrbfs;": "\u2920",
2102
+ "&rarrc;": "\u2933",
2103
+ "&rarrfs;": "\u291E",
2104
+ "&rarrhk;": "\u21AA",
2105
+ "&rarrlp;": "\u21AC",
2106
+ "&rarrpl;": "\u2945",
2107
+ "&rarrsim;": "\u2974",
2108
+ "&rarrtl;": "\u21A3",
2109
+ "&rarrw;": "\u219D",
2110
+ "&ratail;": "\u291A",
2111
+ "&ratio;": "\u2236",
2112
+ "&rationals;": "\u211A",
2113
+ "&rbarr;": "\u290D",
2114
+ "&rbbrk;": "\u2773",
2115
+ "&rbrace;": "}",
2116
+ "&rbrack;": "]",
2117
+ "&rbrke;": "\u298C",
2118
+ "&rbrksld;": "\u298E",
2119
+ "&rbrkslu;": "\u2990",
2120
+ "&rcaron;": "\u0159",
2121
+ "&rcedil;": "\u0157",
2122
+ "&rceil;": "\u2309",
2123
+ "&rcub;": "}",
2124
+ "&rcy;": "\u0440",
2125
+ "&rdca;": "\u2937",
2126
+ "&rdldhar;": "\u2969",
2127
+ "&rdquo;": "\u201D",
2128
+ "&rdquor;": "\u201D",
2129
+ "&rdsh;": "\u21B3",
2130
+ "&real;": "\u211C",
2131
+ "&realine;": "\u211B",
2132
+ "&realpart;": "\u211C",
2133
+ "&reals;": "\u211D",
2134
+ "&rect;": "\u25AD",
2135
+ "&reg": "\xAE",
2136
+ "&reg;": "\xAE",
2137
+ "&rfisht;": "\u297D",
2138
+ "&rfloor;": "\u230B",
2139
+ "&rfr;": "\u{1D52F}",
2140
+ "&rhard;": "\u21C1",
2141
+ "&rharu;": "\u21C0",
2142
+ "&rharul;": "\u296C",
2143
+ "&rho;": "\u03C1",
2144
+ "&rhov;": "\u03F1",
2145
+ "&rightarrow;": "\u2192",
2146
+ "&rightarrowtail;": "\u21A3",
2147
+ "&rightharpoondown;": "\u21C1",
2148
+ "&rightharpoonup;": "\u21C0",
2149
+ "&rightleftarrows;": "\u21C4",
2150
+ "&rightleftharpoons;": "\u21CC",
2151
+ "&rightrightarrows;": "\u21C9",
2152
+ "&rightsquigarrow;": "\u219D",
2153
+ "&rightthreetimes;": "\u22CC",
2154
+ "&ring;": "\u02DA",
2155
+ "&risingdotseq;": "\u2253",
2156
+ "&rlarr;": "\u21C4",
2157
+ "&rlhar;": "\u21CC",
2158
+ "&rlm;": "\u200F",
2159
+ "&rmoust;": "\u23B1",
2160
+ "&rmoustache;": "\u23B1",
2161
+ "&rnmid;": "\u2AEE",
2162
+ "&roang;": "\u27ED",
2163
+ "&roarr;": "\u21FE",
2164
+ "&robrk;": "\u27E7",
2165
+ "&ropar;": "\u2986",
2166
+ "&ropf;": "\u{1D563}",
2167
+ "&roplus;": "\u2A2E",
2168
+ "&rotimes;": "\u2A35",
2169
+ "&rpar;": ")",
2170
+ "&rpargt;": "\u2994",
2171
+ "&rppolint;": "\u2A12",
2172
+ "&rrarr;": "\u21C9",
2173
+ "&rsaquo;": "\u203A",
2174
+ "&rscr;": "\u{1D4C7}",
2175
+ "&rsh;": "\u21B1",
2176
+ "&rsqb;": "]",
2177
+ "&rsquo;": "\u2019",
2178
+ "&rsquor;": "\u2019",
2179
+ "&rthree;": "\u22CC",
2180
+ "&rtimes;": "\u22CA",
2181
+ "&rtri;": "\u25B9",
2182
+ "&rtrie;": "\u22B5",
2183
+ "&rtrif;": "\u25B8",
2184
+ "&rtriltri;": "\u29CE",
2185
+ "&ruluhar;": "\u2968",
2186
+ "&rx;": "\u211E",
2187
+ "&sacute;": "\u015B",
2188
+ "&sbquo;": "\u201A",
2189
+ "&sc;": "\u227B",
2190
+ "&scE;": "\u2AB4",
2191
+ "&scap;": "\u2AB8",
2192
+ "&scaron;": "\u0161",
2193
+ "&sccue;": "\u227D",
2194
+ "&sce;": "\u2AB0",
2195
+ "&scedil;": "\u015F",
2196
+ "&scirc;": "\u015D",
2197
+ "&scnE;": "\u2AB6",
2198
+ "&scnap;": "\u2ABA",
2199
+ "&scnsim;": "\u22E9",
2200
+ "&scpolint;": "\u2A13",
2201
+ "&scsim;": "\u227F",
2202
+ "&scy;": "\u0441",
2203
+ "&sdot;": "\u22C5",
2204
+ "&sdotb;": "\u22A1",
2205
+ "&sdote;": "\u2A66",
2206
+ "&seArr;": "\u21D8",
2207
+ "&searhk;": "\u2925",
2208
+ "&searr;": "\u2198",
2209
+ "&searrow;": "\u2198",
2210
+ "&sect": "\xA7",
2211
+ "&sect;": "\xA7",
2212
+ "&semi;": ";",
2213
+ "&seswar;": "\u2929",
2214
+ "&setminus;": "\u2216",
2215
+ "&setmn;": "\u2216",
2216
+ "&sext;": "\u2736",
2217
+ "&sfr;": "\u{1D530}",
2218
+ "&sfrown;": "\u2322",
2219
+ "&sharp;": "\u266F",
2220
+ "&shchcy;": "\u0449",
2221
+ "&shcy;": "\u0448",
2222
+ "&shortmid;": "\u2223",
2223
+ "&shortparallel;": "\u2225",
2224
+ "&shy": "\xAD",
2225
+ "&shy;": "\xAD",
2226
+ "&sigma;": "\u03C3",
2227
+ "&sigmaf;": "\u03C2",
2228
+ "&sigmav;": "\u03C2",
2229
+ "&sim;": "\u223C",
2230
+ "&simdot;": "\u2A6A",
2231
+ "&sime;": "\u2243",
2232
+ "&simeq;": "\u2243",
2233
+ "&simg;": "\u2A9E",
2234
+ "&simgE;": "\u2AA0",
2235
+ "&siml;": "\u2A9D",
2236
+ "&simlE;": "\u2A9F",
2237
+ "&simne;": "\u2246",
2238
+ "&simplus;": "\u2A24",
2239
+ "&simrarr;": "\u2972",
2240
+ "&slarr;": "\u2190",
2241
+ "&smallsetminus;": "\u2216",
2242
+ "&smashp;": "\u2A33",
2243
+ "&smeparsl;": "\u29E4",
2244
+ "&smid;": "\u2223",
2245
+ "&smile;": "\u2323",
2246
+ "&smt;": "\u2AAA",
2247
+ "&smte;": "\u2AAC",
2248
+ "&smtes;": "\u2AAC\uFE00",
2249
+ "&softcy;": "\u044C",
2250
+ "&sol;": "/",
2251
+ "&solb;": "\u29C4",
2252
+ "&solbar;": "\u233F",
2253
+ "&sopf;": "\u{1D564}",
2254
+ "&spades;": "\u2660",
2255
+ "&spadesuit;": "\u2660",
2256
+ "&spar;": "\u2225",
2257
+ "&sqcap;": "\u2293",
2258
+ "&sqcaps;": "\u2293\uFE00",
2259
+ "&sqcup;": "\u2294",
2260
+ "&sqcups;": "\u2294\uFE00",
2261
+ "&sqsub;": "\u228F",
2262
+ "&sqsube;": "\u2291",
2263
+ "&sqsubset;": "\u228F",
2264
+ "&sqsubseteq;": "\u2291",
2265
+ "&sqsup;": "\u2290",
2266
+ "&sqsupe;": "\u2292",
2267
+ "&sqsupset;": "\u2290",
2268
+ "&sqsupseteq;": "\u2292",
2269
+ "&squ;": "\u25A1",
2270
+ "&square;": "\u25A1",
2271
+ "&squarf;": "\u25AA",
2272
+ "&squf;": "\u25AA",
2273
+ "&srarr;": "\u2192",
2274
+ "&sscr;": "\u{1D4C8}",
2275
+ "&ssetmn;": "\u2216",
2276
+ "&ssmile;": "\u2323",
2277
+ "&sstarf;": "\u22C6",
2278
+ "&star;": "\u2606",
2279
+ "&starf;": "\u2605",
2280
+ "&straightepsilon;": "\u03F5",
2281
+ "&straightphi;": "\u03D5",
2282
+ "&strns;": "\xAF",
2283
+ "&sub;": "\u2282",
2284
+ "&subE;": "\u2AC5",
2285
+ "&subdot;": "\u2ABD",
2286
+ "&sube;": "\u2286",
2287
+ "&subedot;": "\u2AC3",
2288
+ "&submult;": "\u2AC1",
2289
+ "&subnE;": "\u2ACB",
2290
+ "&subne;": "\u228A",
2291
+ "&subplus;": "\u2ABF",
2292
+ "&subrarr;": "\u2979",
2293
+ "&subset;": "\u2282",
2294
+ "&subseteq;": "\u2286",
2295
+ "&subseteqq;": "\u2AC5",
2296
+ "&subsetneq;": "\u228A",
2297
+ "&subsetneqq;": "\u2ACB",
2298
+ "&subsim;": "\u2AC7",
2299
+ "&subsub;": "\u2AD5",
2300
+ "&subsup;": "\u2AD3",
2301
+ "&succ;": "\u227B",
2302
+ "&succapprox;": "\u2AB8",
2303
+ "&succcurlyeq;": "\u227D",
2304
+ "&succeq;": "\u2AB0",
2305
+ "&succnapprox;": "\u2ABA",
2306
+ "&succneqq;": "\u2AB6",
2307
+ "&succnsim;": "\u22E9",
2308
+ "&succsim;": "\u227F",
2309
+ "&sum;": "\u2211",
2310
+ "&sung;": "\u266A",
2311
+ "&sup1": "\xB9",
2312
+ "&sup1;": "\xB9",
2313
+ "&sup2": "\xB2",
2314
+ "&sup2;": "\xB2",
2315
+ "&sup3": "\xB3",
2316
+ "&sup3;": "\xB3",
2317
+ "&sup;": "\u2283",
2318
+ "&supE;": "\u2AC6",
2319
+ "&supdot;": "\u2ABE",
2320
+ "&supdsub;": "\u2AD8",
2321
+ "&supe;": "\u2287",
2322
+ "&supedot;": "\u2AC4",
2323
+ "&suphsol;": "\u27C9",
2324
+ "&suphsub;": "\u2AD7",
2325
+ "&suplarr;": "\u297B",
2326
+ "&supmult;": "\u2AC2",
2327
+ "&supnE;": "\u2ACC",
2328
+ "&supne;": "\u228B",
2329
+ "&supplus;": "\u2AC0",
2330
+ "&supset;": "\u2283",
2331
+ "&supseteq;": "\u2287",
2332
+ "&supseteqq;": "\u2AC6",
2333
+ "&supsetneq;": "\u228B",
2334
+ "&supsetneqq;": "\u2ACC",
2335
+ "&supsim;": "\u2AC8",
2336
+ "&supsub;": "\u2AD4",
2337
+ "&supsup;": "\u2AD6",
2338
+ "&swArr;": "\u21D9",
2339
+ "&swarhk;": "\u2926",
2340
+ "&swarr;": "\u2199",
2341
+ "&swarrow;": "\u2199",
2342
+ "&swnwar;": "\u292A",
2343
+ "&szlig": "\xDF",
2344
+ "&szlig;": "\xDF",
2345
+ "&target;": "\u2316",
2346
+ "&tau;": "\u03C4",
2347
+ "&tbrk;": "\u23B4",
2348
+ "&tcaron;": "\u0165",
2349
+ "&tcedil;": "\u0163",
2350
+ "&tcy;": "\u0442",
2351
+ "&tdot;": "\u20DB",
2352
+ "&telrec;": "\u2315",
2353
+ "&tfr;": "\u{1D531}",
2354
+ "&there4;": "\u2234",
2355
+ "&therefore;": "\u2234",
2356
+ "&theta;": "\u03B8",
2357
+ "&thetasym;": "\u03D1",
2358
+ "&thetav;": "\u03D1",
2359
+ "&thickapprox;": "\u2248",
2360
+ "&thicksim;": "\u223C",
2361
+ "&thinsp;": "\u2009",
2362
+ "&thkap;": "\u2248",
2363
+ "&thksim;": "\u223C",
2364
+ "&thorn": "\xFE",
2365
+ "&thorn;": "\xFE",
2366
+ "&tilde;": "\u02DC",
2367
+ "&times": "\xD7",
2368
+ "&times;": "\xD7",
2369
+ "&timesb;": "\u22A0",
2370
+ "&timesbar;": "\u2A31",
2371
+ "&timesd;": "\u2A30",
2372
+ "&tint;": "\u222D",
2373
+ "&toea;": "\u2928",
2374
+ "&top;": "\u22A4",
2375
+ "&topbot;": "\u2336",
2376
+ "&topcir;": "\u2AF1",
2377
+ "&topf;": "\u{1D565}",
2378
+ "&topfork;": "\u2ADA",
2379
+ "&tosa;": "\u2929",
2380
+ "&tprime;": "\u2034",
2381
+ "&trade;": "\u2122",
2382
+ "&triangle;": "\u25B5",
2383
+ "&triangledown;": "\u25BF",
2384
+ "&triangleleft;": "\u25C3",
2385
+ "&trianglelefteq;": "\u22B4",
2386
+ "&triangleq;": "\u225C",
2387
+ "&triangleright;": "\u25B9",
2388
+ "&trianglerighteq;": "\u22B5",
2389
+ "&tridot;": "\u25EC",
2390
+ "&trie;": "\u225C",
2391
+ "&triminus;": "\u2A3A",
2392
+ "&triplus;": "\u2A39",
2393
+ "&trisb;": "\u29CD",
2394
+ "&tritime;": "\u2A3B",
2395
+ "&trpezium;": "\u23E2",
2396
+ "&tscr;": "\u{1D4C9}",
2397
+ "&tscy;": "\u0446",
2398
+ "&tshcy;": "\u045B",
2399
+ "&tstrok;": "\u0167",
2400
+ "&twixt;": "\u226C",
2401
+ "&twoheadleftarrow;": "\u219E",
2402
+ "&twoheadrightarrow;": "\u21A0",
2403
+ "&uArr;": "\u21D1",
2404
+ "&uHar;": "\u2963",
2405
+ "&uacute": "\xFA",
2406
+ "&uacute;": "\xFA",
2407
+ "&uarr;": "\u2191",
2408
+ "&ubrcy;": "\u045E",
2409
+ "&ubreve;": "\u016D",
2410
+ "&ucirc": "\xFB",
2411
+ "&ucirc;": "\xFB",
2412
+ "&ucy;": "\u0443",
2413
+ "&udarr;": "\u21C5",
2414
+ "&udblac;": "\u0171",
2415
+ "&udhar;": "\u296E",
2416
+ "&ufisht;": "\u297E",
2417
+ "&ufr;": "\u{1D532}",
2418
+ "&ugrave": "\xF9",
2419
+ "&ugrave;": "\xF9",
2420
+ "&uharl;": "\u21BF",
2421
+ "&uharr;": "\u21BE",
2422
+ "&uhblk;": "\u2580",
2423
+ "&ulcorn;": "\u231C",
2424
+ "&ulcorner;": "\u231C",
2425
+ "&ulcrop;": "\u230F",
2426
+ "&ultri;": "\u25F8",
2427
+ "&umacr;": "\u016B",
2428
+ "&uml": "\xA8",
2429
+ "&uml;": "\xA8",
2430
+ "&uogon;": "\u0173",
2431
+ "&uopf;": "\u{1D566}",
2432
+ "&uparrow;": "\u2191",
2433
+ "&updownarrow;": "\u2195",
2434
+ "&upharpoonleft;": "\u21BF",
2435
+ "&upharpoonright;": "\u21BE",
2436
+ "&uplus;": "\u228E",
2437
+ "&upsi;": "\u03C5",
2438
+ "&upsih;": "\u03D2",
2439
+ "&upsilon;": "\u03C5",
2440
+ "&upuparrows;": "\u21C8",
2441
+ "&urcorn;": "\u231D",
2442
+ "&urcorner;": "\u231D",
2443
+ "&urcrop;": "\u230E",
2444
+ "&uring;": "\u016F",
2445
+ "&urtri;": "\u25F9",
2446
+ "&uscr;": "\u{1D4CA}",
2447
+ "&utdot;": "\u22F0",
2448
+ "&utilde;": "\u0169",
2449
+ "&utri;": "\u25B5",
2450
+ "&utrif;": "\u25B4",
2451
+ "&uuarr;": "\u21C8",
2452
+ "&uuml": "\xFC",
2453
+ "&uuml;": "\xFC",
2454
+ "&uwangle;": "\u29A7",
2455
+ "&vArr;": "\u21D5",
2456
+ "&vBar;": "\u2AE8",
2457
+ "&vBarv;": "\u2AE9",
2458
+ "&vDash;": "\u22A8",
2459
+ "&vangrt;": "\u299C",
2460
+ "&varepsilon;": "\u03F5",
2461
+ "&varkappa;": "\u03F0",
2462
+ "&varnothing;": "\u2205",
2463
+ "&varphi;": "\u03D5",
2464
+ "&varpi;": "\u03D6",
2465
+ "&varpropto;": "\u221D",
2466
+ "&varr;": "\u2195",
2467
+ "&varrho;": "\u03F1",
2468
+ "&varsigma;": "\u03C2",
2469
+ "&varsubsetneq;": "\u228A\uFE00",
2470
+ "&varsubsetneqq;": "\u2ACB\uFE00",
2471
+ "&varsupsetneq;": "\u228B\uFE00",
2472
+ "&varsupsetneqq;": "\u2ACC\uFE00",
2473
+ "&vartheta;": "\u03D1",
2474
+ "&vartriangleleft;": "\u22B2",
2475
+ "&vartriangleright;": "\u22B3",
2476
+ "&vcy;": "\u0432",
2477
+ "&vdash;": "\u22A2",
2478
+ "&vee;": "\u2228",
2479
+ "&veebar;": "\u22BB",
2480
+ "&veeeq;": "\u225A",
2481
+ "&vellip;": "\u22EE",
2482
+ "&verbar;": "|",
2483
+ "&vert;": "|",
2484
+ "&vfr;": "\u{1D533}",
2485
+ "&vltri;": "\u22B2",
2486
+ "&vnsub;": "\u2282\u20D2",
2487
+ "&vnsup;": "\u2283\u20D2",
2488
+ "&vopf;": "\u{1D567}",
2489
+ "&vprop;": "\u221D",
2490
+ "&vrtri;": "\u22B3",
2491
+ "&vscr;": "\u{1D4CB}",
2492
+ "&vsubnE;": "\u2ACB\uFE00",
2493
+ "&vsubne;": "\u228A\uFE00",
2494
+ "&vsupnE;": "\u2ACC\uFE00",
2495
+ "&vsupne;": "\u228B\uFE00",
2496
+ "&vzigzag;": "\u299A",
2497
+ "&wcirc;": "\u0175",
2498
+ "&wedbar;": "\u2A5F",
2499
+ "&wedge;": "\u2227",
2500
+ "&wedgeq;": "\u2259",
2501
+ "&weierp;": "\u2118",
2502
+ "&wfr;": "\u{1D534}",
2503
+ "&wopf;": "\u{1D568}",
2504
+ "&wp;": "\u2118",
2505
+ "&wr;": "\u2240",
2506
+ "&wreath;": "\u2240",
2507
+ "&wscr;": "\u{1D4CC}",
2508
+ "&xcap;": "\u22C2",
2509
+ "&xcirc;": "\u25EF",
2510
+ "&xcup;": "\u22C3",
2511
+ "&xdtri;": "\u25BD",
2512
+ "&xfr;": "\u{1D535}",
2513
+ "&xhArr;": "\u27FA",
2514
+ "&xharr;": "\u27F7",
2515
+ "&xi;": "\u03BE",
2516
+ "&xlArr;": "\u27F8",
2517
+ "&xlarr;": "\u27F5",
2518
+ "&xmap;": "\u27FC",
2519
+ "&xnis;": "\u22FB",
2520
+ "&xodot;": "\u2A00",
2521
+ "&xopf;": "\u{1D569}",
2522
+ "&xoplus;": "\u2A01",
2523
+ "&xotime;": "\u2A02",
2524
+ "&xrArr;": "\u27F9",
2525
+ "&xrarr;": "\u27F6",
2526
+ "&xscr;": "\u{1D4CD}",
2527
+ "&xsqcup;": "\u2A06",
2528
+ "&xuplus;": "\u2A04",
2529
+ "&xutri;": "\u25B3",
2530
+ "&xvee;": "\u22C1",
2531
+ "&xwedge;": "\u22C0",
2532
+ "&yacute": "\xFD",
2533
+ "&yacute;": "\xFD",
2534
+ "&yacy;": "\u044F",
2535
+ "&ycirc;": "\u0177",
2536
+ "&ycy;": "\u044B",
2537
+ "&yen": "\xA5",
2538
+ "&yen;": "\xA5",
2539
+ "&yfr;": "\u{1D536}",
2540
+ "&yicy;": "\u0457",
2541
+ "&yopf;": "\u{1D56A}",
2542
+ "&yscr;": "\u{1D4CE}",
2543
+ "&yucy;": "\u044E",
2544
+ "&yuml": "\xFF",
2545
+ "&yuml;": "\xFF",
2546
+ "&zacute;": "\u017A",
2547
+ "&zcaron;": "\u017E",
2548
+ "&zcy;": "\u0437",
2549
+ "&zdot;": "\u017C",
2550
+ "&zeetrf;": "\u2128",
2551
+ "&zeta;": "\u03B6",
2552
+ "&zfr;": "\u{1D537}",
2553
+ "&zhcy;": "\u0436",
2554
+ "&zigrarr;": "\u21DD",
2555
+ "&zopf;": "\u{1D56B}",
2556
+ "&zscr;": "\u{1D4CF}",
2557
+ "&zwj;": "\u200D",
2558
+ "&zwnj;": "\u200C"
2559
+ }, html_entities_default = htmlEntities;
2560
+
2561
+ // ../../node_modules/.pnpm/postal-mime@2.4.3_patch_hash=ngwql2fj2dlex3jjynq4iizhk4/node_modules/postal-mime/src/text-format.js
2562
+ function decodeHTMLEntities(str) {
2563
+ return str.replace(/&(#\d+|#x[a-f0-9]+|[a-z]+\d*);?/gi, (match, entity) => {
2564
+ if (typeof html_entities_default[match] == "string")
2565
+ return html_entities_default[match];
2566
+ if (entity.charAt(0) !== "#" || match.charAt(match.length - 1) !== ";")
2567
+ return match;
2568
+ let codePoint;
2569
+ entity.charAt(1) === "x" ? codePoint = parseInt(entity.substr(2), 16) : codePoint = parseInt(entity.substr(1), 10);
2570
+ var output = "";
2571
+ return codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111 ? "\uFFFD" : (codePoint > 65535 && (codePoint -= 65536, output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296), codePoint = 56320 | codePoint & 1023), output += String.fromCharCode(codePoint), output);
2572
+ });
2573
+ }
2574
+ function escapeHtml(str) {
2575
+ return str.trim().replace(/[<>"'?&]/g, (c) => {
2576
+ let hex = c.charCodeAt(0).toString(16);
2577
+ return hex.length < 2 && (hex = "0" + hex), "&#x" + hex.toUpperCase() + ";";
2578
+ });
2579
+ }
2580
+ function textToHtml(str) {
2581
+ return "<div>" + escapeHtml(str).replace(/\n/g, "<br />") + "</div>";
2582
+ }
2583
+ function htmlToText(str) {
2584
+ return str = str.replace(/\r?\n/g, "").replace(/<\!\-\-.*?\-\->/gi, " ").replace(/<br\b[^>]*>/gi, `
2585
+ `).replace(/<\/?(p|div|table|tr|td|th)\b[^>]*>/gi, `
2586
+
2587
+ `).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, `
2588
+ -------------
2589
+ `).replace(/<[^>]*>/g, " ").replace(/\u0001/g, `
2590
+ `).replace(/[ \t]+/g, " ").replace(/^\s+$/gm, "").replace(/\n\n+/g, `
2591
+
2592
+ `).replace(/^\n+/, `
2593
+ `).replace(/\n+$/, `
2594
+ `), str = decodeHTMLEntities(str), str;
2595
+ }
2596
+ function formatTextAddress(address) {
2597
+ return [].concat(address.name || []).concat(address.name ? `<${address.address}>` : address.address).join(" ");
2598
+ }
2599
+ function formatTextAddresses(addresses) {
2600
+ let parts = [], processAddress = (address, partCounter) => {
2601
+ if (partCounter && parts.push(", "), address.group) {
2602
+ let groupStart = `${address.name}:`, groupEnd = ";";
2603
+ parts.push(groupStart), address.group.forEach(processAddress), parts.push(groupEnd);
2604
+ } else
2605
+ parts.push(formatTextAddress(address));
2606
+ };
2607
+ return addresses.forEach(processAddress), parts.join("");
2608
+ }
2609
+ function formatHtmlAddress(address) {
2610
+ return `<a href="mailto:${escapeHtml(address.address)}" class="postal-email-address">${escapeHtml(address.name || `<${address.address}>`)}</a>`;
2611
+ }
2612
+ function formatHtmlAddresses(addresses) {
2613
+ let parts = [], processAddress = (address, partCounter) => {
2614
+ if (partCounter && parts.push('<span class="postal-email-address-separator">, </span>'), address.group) {
2615
+ let groupStart = `<span class="postal-email-address-group">${escapeHtml(address.name)}:</span>`, groupEnd = '<span class="postal-email-address-group">;</span>';
2616
+ parts.push(groupStart), address.group.forEach(processAddress), parts.push(groupEnd);
2617
+ } else
2618
+ parts.push(formatHtmlAddress(address));
2619
+ };
2620
+ return addresses.forEach(processAddress), parts.join(" ");
2621
+ }
2622
+ function foldLines(str, lineLength, afterSpace) {
2623
+ str = (str || "").toString(), lineLength = lineLength || 76;
2624
+ let pos = 0, len = str.length, result = "", line, match;
2625
+ for (; pos < len; ) {
2626
+ if (line = str.substr(pos, lineLength), line.length < lineLength) {
2627
+ result += line;
2628
+ break;
2629
+ }
2630
+ if (match = line.match(/^[^\n\r]*(\r?\n|\r)/)) {
2631
+ line = match[0], result += line, pos += line.length;
2632
+ continue;
2633
+ } else (match = line.match(/(\s+)[^\s]*$/)) && match[0].length - (afterSpace ? (match[1] || "").length : 0) < line.length ? line = line.substr(0, line.length - (match[0].length - (afterSpace ? (match[1] || "").length : 0))) : (match = str.substr(pos + line.length).match(/^[^\s]+(\s*)/)) && (line = line + match[0].substr(0, match[0].length - (afterSpace ? 0 : (match[1] || "").length)));
2634
+ result += line, pos += line.length, pos < len && (result += `\r
2635
+ `);
2636
+ }
2637
+ return result;
2638
+ }
2639
+ function formatTextHeader(message) {
2640
+ let rows = [];
2641
+ if (message.from && rows.push({ key: "From", val: formatTextAddress(message.from) }), message.subject && rows.push({ key: "Subject", val: message.subject }), message.date) {
2642
+ let dateOptions = {
2643
+ year: "numeric",
2644
+ month: "numeric",
2645
+ day: "numeric",
2646
+ hour: "numeric",
2647
+ minute: "numeric",
2648
+ second: "numeric",
2649
+ hour12: !1
2650
+ }, dateStr = typeof Intl > "u" ? message.date : new Intl.DateTimeFormat("default", dateOptions).format(new Date(message.date));
2651
+ rows.push({ key: "Date", val: dateStr });
2652
+ }
2653
+ message.to && message.to.length && rows.push({ key: "To", val: formatTextAddresses(message.to) }), message.cc && message.cc.length && rows.push({ key: "Cc", val: formatTextAddresses(message.cc) }), message.bcc && message.bcc.length && rows.push({ key: "Bcc", val: formatTextAddresses(message.bcc) });
2654
+ let maxKeyLength = rows.map((r) => r.key.length).reduce((acc, cur) => cur > acc ? cur : acc, 0);
2655
+ rows = rows.flatMap((row) => {
2656
+ let sepLen = maxKeyLength - row.key.length, prefix = `${row.key}: ${" ".repeat(sepLen)}`, emptyPrefix = `${" ".repeat(row.key.length + 1)} ${" ".repeat(sepLen)}`;
2657
+ return foldLines(row.val, 80, !0).split(/\r?\n/).map((line) => line.trim()).map((line, i) => `${i ? emptyPrefix : prefix}${line}`);
2658
+ });
2659
+ let maxLineLength = rows.map((r) => r.length).reduce((acc, cur) => cur > acc ? cur : acc, 0), lineMarker = "-".repeat(maxLineLength);
2660
+ return `
2661
+ ${lineMarker}
2662
+ ${rows.join(`
2663
+ `)}
2664
+ ${lineMarker}
2665
+ `;
2666
+ }
2667
+ function formatHtmlHeader(message) {
2668
+ let rows = [];
2669
+ if (message.from && rows.push(`<div class="postal-email-header-key">From</div><div class="postal-email-header-value">${formatHtmlAddress(message.from)}</div>`), message.subject && rows.push(
2670
+ `<div class="postal-email-header-key">Subject</div><div class="postal-email-header-value postal-email-header-subject">${escapeHtml(
2671
+ message.subject
2672
+ )}</div>`
2673
+ ), message.date) {
2674
+ let dateOptions = {
2675
+ year: "numeric",
2676
+ month: "numeric",
2677
+ day: "numeric",
2678
+ hour: "numeric",
2679
+ minute: "numeric",
2680
+ second: "numeric",
2681
+ hour12: !1
2682
+ }, dateStr = typeof Intl > "u" ? message.date : new Intl.DateTimeFormat("default", dateOptions).format(new Date(message.date));
2683
+ rows.push(
2684
+ `<div class="postal-email-header-key">Date</div><div class="postal-email-header-value postal-email-header-date" data-date="${escapeHtml(
2685
+ message.date
2686
+ )}">${escapeHtml(dateStr)}</div>`
2687
+ );
2688
+ }
2689
+ return message.to && message.to.length && rows.push(`<div class="postal-email-header-key">To</div><div class="postal-email-header-value">${formatHtmlAddresses(message.to)}</div>`), message.cc && message.cc.length && rows.push(`<div class="postal-email-header-key">Cc</div><div class="postal-email-header-value">${formatHtmlAddresses(message.cc)}</div>`), message.bcc && message.bcc.length && rows.push(`<div class="postal-email-header-key">Bcc</div><div class="postal-email-header-value">${formatHtmlAddresses(message.bcc)}</div>`), `<div class="postal-email-header">${rows.length ? '<div class="postal-email-header-row">' : ""}${rows.join(
2690
+ `</div>
2691
+ <div class="postal-email-header-row">`
2692
+ )}${rows.length ? "</div>" : ""}</div>`;
2693
+ }
2694
+
2695
+ // ../../node_modules/.pnpm/postal-mime@2.4.3_patch_hash=ngwql2fj2dlex3jjynq4iizhk4/node_modules/postal-mime/src/address-parser.js
2696
+ function _handleAddress(tokens) {
2697
+ let token, isGroup = !1, state = "text", address, addresses = [], data = {
2698
+ address: [],
2699
+ comment: [],
2700
+ group: [],
2701
+ text: []
2702
+ }, i, len;
2703
+ for (i = 0, len = tokens.length; i < len; i++)
2704
+ if (token = tokens[i], token.type === "operator")
2705
+ switch (token.value) {
2706
+ case "<":
2707
+ state = "address";
2708
+ break;
2709
+ case "(":
2710
+ state = "comment";
2711
+ break;
2712
+ case ":":
2713
+ state = "group", isGroup = !0;
2714
+ break;
2715
+ default:
2716
+ state = "text";
2717
+ }
2718
+ else token.value && (state === "address" && (token.value = token.value.replace(/^[^<]*<\s*/, "")), data[state].push(token.value));
2719
+ if (!data.text.length && data.comment.length && (data.text = data.comment, data.comment = []), isGroup)
2720
+ data.text = data.text.join(" "), addresses.push({
2721
+ name: decodeWords(data.text || address && address.name),
2722
+ group: data.group.length ? addressParser(data.group.join(",")) : []
2723
+ });
2724
+ else {
2725
+ if (!data.address.length && data.text.length) {
2726
+ for (i = data.text.length - 1; i >= 0; i--)
2727
+ if (data.text[i].match(/^[^@\s]+@[^@\s]+$/)) {
2728
+ data.address = data.text.splice(i, 1);
2729
+ break;
2730
+ }
2731
+ let _regexHandler = function(address2) {
2732
+ return data.address.length ? address2 : (data.address = [address2.trim()], " ");
2733
+ };
2734
+ if (!data.address.length)
2735
+ for (i = data.text.length - 1; i >= 0 && (data.text[i] = data.text[i].replace(/\s*\b[^@\s]+@[^\s]+\b\s*/, _regexHandler).trim(), !data.address.length); i--)
2736
+ ;
2737
+ }
2738
+ if (!data.text.length && data.comment.length && (data.text = data.comment, data.comment = []), data.address.length > 1 && (data.text = data.text.concat(data.address.splice(1))), data.text = data.text.join(" "), data.address = data.address.join(" "), !data.address && /^=\?[^=]+?=$/.test(data.text.trim())) {
2739
+ let parsedSubAddresses = addressParser(decodeWords(data.text));
2740
+ if (parsedSubAddresses && parsedSubAddresses.length)
2741
+ return parsedSubAddresses;
2742
+ }
2743
+ if (!data.address && isGroup)
2744
+ return [];
2745
+ address = {
2746
+ address: data.address || data.text || "",
2747
+ name: decodeWords(data.text || data.address || "")
2748
+ }, address.address === address.name && ((address.address || "").match(/@/) ? address.name = "" : address.address = ""), addresses.push(address);
2749
+ }
2750
+ return addresses;
2751
+ }
2752
+ var Tokenizer = class {
2753
+ constructor(str) {
2754
+ this.str = (str || "").toString(), this.operatorCurrent = "", this.operatorExpecting = "", this.node = null, this.escaped = !1, this.list = [], this.operators = {
2755
+ '"': '"',
2756
+ "(": ")",
2757
+ "<": ">",
2758
+ ",": "",
2759
+ ":": ";",
2760
+ // Semicolons are not a legal delimiter per the RFC2822 grammar other
2761
+ // than for terminating a group, but they are also not valid for any
2762
+ // other use in this context. Given that some mail clients have
2763
+ // historically allowed the semicolon as a delimiter equivalent to the
2764
+ // comma in their UI, it makes sense to treat them the same as a comma
2765
+ // when used outside of a group.
2766
+ ";": ""
2767
+ };
2768
+ }
2769
+ /**
2770
+ * Tokenizes the original input string
2771
+ *
2772
+ * @return {Array} An array of operator|text tokens
2773
+ */
2774
+ tokenize() {
2775
+ let chr, list = [];
2776
+ for (let i = 0, len = this.str.length; i < len; i++)
2777
+ chr = this.str.charAt(i), this.checkChar(chr);
2778
+ return this.list.forEach((node) => {
2779
+ node.value = (node.value || "").toString().trim(), node.value && list.push(node);
2780
+ }), list;
2781
+ }
2782
+ /**
2783
+ * Checks if a character is an operator or text and acts accordingly
2784
+ *
2785
+ * @param {String} chr Character from the address field
2786
+ */
2787
+ checkChar(chr) {
2788
+ if (!this.escaped) {
2789
+ if (chr === this.operatorExpecting) {
2790
+ this.node = {
2791
+ type: "operator",
2792
+ value: chr
2793
+ }, this.list.push(this.node), this.node = null, this.operatorExpecting = "", this.escaped = !1;
2794
+ return;
2795
+ } else if (!this.operatorExpecting && chr in this.operators) {
2796
+ this.node = {
2797
+ type: "operator",
2798
+ value: chr
2799
+ }, this.list.push(this.node), this.node = null, this.operatorExpecting = this.operators[chr], this.escaped = !1;
2800
+ return;
2801
+ } else if (['"', "'"].includes(this.operatorExpecting) && chr === "\\") {
2802
+ this.escaped = !0;
2803
+ return;
2804
+ }
2805
+ }
2806
+ this.node || (this.node = {
2807
+ type: "text",
2808
+ value: ""
2809
+ }, this.list.push(this.node)), chr === `
2810
+ ` && (chr = " "), (chr.charCodeAt(0) >= 33 || [" ", " "].includes(chr)) && (this.node.value += chr), this.escaped = !1;
2811
+ }
2812
+ };
2813
+ function addressParser(str, options) {
2814
+ options = options || {};
2815
+ let tokens = new Tokenizer(str).tokenize(), addresses = [], address = [], parsedAddresses = [];
2816
+ if (tokens.forEach((token) => {
2817
+ token.type === "operator" && (token.value === "," || token.value === ";") ? (address.length && addresses.push(address), address = []) : address.push(token);
2818
+ }), address.length && addresses.push(address), addresses.forEach((address2) => {
2819
+ address2 = _handleAddress(address2), address2.length && (parsedAddresses = parsedAddresses.concat(address2));
2820
+ }), options.flatten) {
2821
+ let addresses2 = [], walkAddressList = (list) => {
2822
+ list.forEach((address2) => {
2823
+ if (address2.group)
2824
+ return walkAddressList(address2.group);
2825
+ addresses2.push(address2);
2826
+ });
2827
+ };
2828
+ return walkAddressList(parsedAddresses), addresses2;
2829
+ }
2830
+ return parsedAddresses;
2831
+ }
2832
+ var address_parser_default = addressParser;
2833
+
2834
+ // ../../node_modules/.pnpm/postal-mime@2.4.3_patch_hash=ngwql2fj2dlex3jjynq4iizhk4/node_modules/postal-mime/src/base64-encoder.js
2835
+ function base64ArrayBuffer(arrayBuffer) {
2836
+ for (var base64 = "", encodings = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", bytes = new Uint8Array(arrayBuffer), byteLength = bytes.byteLength, byteRemainder = byteLength % 3, mainLength = byteLength - byteRemainder, a, b, c, d, chunk, i = 0; i < mainLength; i = i + 3)
2837
+ chunk = bytes[i] << 16 | bytes[i + 1] << 8 | bytes[i + 2], a = (chunk & 16515072) >> 18, b = (chunk & 258048) >> 12, c = (chunk & 4032) >> 6, d = chunk & 63, base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d];
2838
+ return byteRemainder == 1 ? (chunk = bytes[mainLength], a = (chunk & 252) >> 2, b = (chunk & 3) << 4, base64 += encodings[a] + encodings[b] + "==") : byteRemainder == 2 && (chunk = bytes[mainLength] << 8 | bytes[mainLength + 1], a = (chunk & 64512) >> 10, b = (chunk & 1008) >> 4, c = (chunk & 15) << 2, base64 += encodings[a] + encodings[b] + encodings[c] + "="), base64;
2839
+ }
2840
+
2841
+ // ../../node_modules/.pnpm/postal-mime@2.4.3_patch_hash=ngwql2fj2dlex3jjynq4iizhk4/node_modules/postal-mime/src/postal-mime.js
2842
+ var PostalMime = class _PostalMime {
2843
+ static parse(buf, options) {
2844
+ return new _PostalMime(options).parse(buf);
2845
+ }
2846
+ constructor(options) {
2847
+ this.options = options || {}, this.root = this.currentNode = new MimeNode({
2848
+ postalMime: this
2849
+ }), this.boundaries = [], this.textContent = {}, this.attachments = [], this.attachmentEncoding = (this.options.attachmentEncoding || "").toString().replace(/[-_\s]/g, "").trim().toLowerCase() || "arraybuffer", this.started = !1;
2850
+ }
2851
+ async finalize() {
2852
+ await this.root.finalize();
2853
+ }
2854
+ async processLine(line, isFinal) {
2855
+ let boundaries = this.boundaries;
2856
+ if (boundaries.length && line.length > 2 && line[0] === 45 && line[1] === 45)
2857
+ for (let i = boundaries.length - 1; i >= 0; i--) {
2858
+ let boundary = boundaries[i];
2859
+ if (line.length !== boundary.value.length + 2 && line.length !== boundary.value.length + 4)
2860
+ continue;
2861
+ let isTerminator = line.length === boundary.value.length + 4;
2862
+ if (isTerminator && (line[line.length - 2] !== 45 || line[line.length - 1] !== 45))
2863
+ continue;
2864
+ let boudaryMatches = !0;
2865
+ for (let i2 = 0; i2 < boundary.value.length; i2++)
2866
+ if (line[i2 + 2] !== boundary.value[i2]) {
2867
+ boudaryMatches = !1;
2868
+ break;
2869
+ }
2870
+ if (boudaryMatches)
2871
+ return isTerminator ? (await boundary.node.finalize(), this.currentNode = boundary.node.parentNode || this.root) : (await boundary.node.finalizeChildNodes(), this.currentNode = new MimeNode({
2872
+ postalMime: this,
2873
+ parentNode: boundary.node
2874
+ })), isFinal ? this.finalize() : void 0;
2875
+ }
2876
+ if (this.currentNode.feed(line), isFinal)
2877
+ return this.finalize();
2878
+ }
2879
+ readLine() {
2880
+ let startPos = this.readPos, endPos = this.readPos, res = () => ({
2881
+ bytes: new Uint8Array(this.buf, startPos, endPos - startPos),
2882
+ done: this.readPos >= this.av.length
2883
+ });
2884
+ for (; this.readPos < this.av.length; ) {
2885
+ let c = this.av[this.readPos++];
2886
+ if (c !== 13 && c !== 10 && (endPos = this.readPos), c === 10)
2887
+ return res();
2888
+ }
2889
+ return res();
2890
+ }
2891
+ async processNodeTree() {
2892
+ let textContent = {}, textTypes = /* @__PURE__ */ new Set(), textMap = this.textMap = /* @__PURE__ */ new Map(), forceRfc822Attachments = this.forceRfc822Attachments(), walk = async (node, alternative, related) => {
2893
+ if (alternative = alternative || !1, related = related || !1, node.contentType.multipart)
2894
+ node.contentType.multipart === "alternative" ? alternative = node : node.contentType.multipart === "related" && (related = node);
2895
+ else if (this.isInlineMessageRfc822(node) && !forceRfc822Attachments) {
2896
+ let subParser = new _PostalMime();
2897
+ node.subMessage = await subParser.parse(node.content), textMap.has(node) || textMap.set(node, {});
2898
+ let textEntry = textMap.get(node);
2899
+ (node.subMessage.text || !node.subMessage.html) && (textEntry.plain = textEntry.plain || [], textEntry.plain.push({ type: "subMessage", value: node.subMessage }), textTypes.add("plain")), node.subMessage.html && (textEntry.html = textEntry.html || [], textEntry.html.push({ type: "subMessage", value: node.subMessage }), textTypes.add("html")), subParser.textMap && subParser.textMap.forEach((subTextEntry, subTextNode) => {
2900
+ textMap.set(subTextNode, subTextEntry);
2901
+ });
2902
+ for (let attachment of node.subMessage.attachments || [])
2903
+ this.attachments.push(attachment);
2904
+ } else if (this.isInlineTextNode(node)) {
2905
+ let textType = node.contentType.parsed.value.substr(node.contentType.parsed.value.indexOf("/") + 1), selectorNode = alternative || node;
2906
+ textMap.has(selectorNode) || textMap.set(selectorNode, {});
2907
+ let textEntry = textMap.get(selectorNode);
2908
+ textEntry[textType] = textEntry[textType] || [], textEntry[textType].push({ type: "text", value: node.getTextContent() }), textTypes.add(textType);
2909
+ } else if (node.content) {
2910
+ let filename = node.contentDisposition.parsed.params.filename || node.contentType.parsed.params.name || null, attachment = {
2911
+ filename: filename ? decodeWords(filename) : null,
2912
+ mimeType: node.contentType.parsed.value,
2913
+ disposition: node.contentDisposition.parsed.value || null
2914
+ };
2915
+ switch (related && node.contentId && (attachment.related = !0), node.contentDescription && (attachment.description = node.contentDescription), node.contentId && (attachment.contentId = node.contentId), node.contentType.parsed.value) {
2916
+ // Special handling for calendar events
2917
+ case "text/calendar":
2918
+ case "application/ics": {
2919
+ node.contentType.parsed.params.method && (attachment.method = node.contentType.parsed.params.method.toString().toUpperCase().trim());
2920
+ let decodedText = node.getTextContent().replace(/\r?\n/g, `
2921
+ `).replace(/\n*$/, `
2922
+ `);
2923
+ attachment.content = textEncoder.encode(decodedText);
2924
+ break;
2925
+ }
2926
+ // Regular attachments
2927
+ default:
2928
+ attachment.content = node.content;
2929
+ }
2930
+ this.attachments.push(attachment);
2931
+ }
2932
+ for (let childNode of node.childNodes)
2933
+ await walk(childNode, alternative, related);
2934
+ };
2935
+ await walk(this.root, !1, []), textMap.forEach((mapEntry) => {
2936
+ textTypes.forEach((textType) => {
2937
+ if (textContent[textType] || (textContent[textType] = []), mapEntry[textType])
2938
+ mapEntry[textType].forEach((textEntry) => {
2939
+ switch (textEntry.type) {
2940
+ case "text":
2941
+ textContent[textType].push(textEntry.value);
2942
+ break;
2943
+ case "subMessage":
2944
+ switch (textType) {
2945
+ case "html":
2946
+ textContent[textType].push(formatHtmlHeader(textEntry.value));
2947
+ break;
2948
+ case "plain":
2949
+ textContent[textType].push(formatTextHeader(textEntry.value));
2950
+ break;
2951
+ }
2952
+ break;
2953
+ }
2954
+ });
2955
+ else {
2956
+ let alternativeType;
2957
+ switch (textType) {
2958
+ case "html":
2959
+ alternativeType = "plain";
2960
+ break;
2961
+ case "plain":
2962
+ alternativeType = "html";
2963
+ break;
2964
+ }
2965
+ (mapEntry[alternativeType] || []).forEach((textEntry) => {
2966
+ switch (textEntry.type) {
2967
+ case "text":
2968
+ switch (textType) {
2969
+ case "html":
2970
+ textContent[textType].push(textToHtml(textEntry.value));
2971
+ break;
2972
+ case "plain":
2973
+ textContent[textType].push(htmlToText(textEntry.value));
2974
+ break;
2975
+ }
2976
+ break;
2977
+ case "subMessage":
2978
+ switch (textType) {
2979
+ case "html":
2980
+ textContent[textType].push(formatHtmlHeader(textEntry.value));
2981
+ break;
2982
+ case "plain":
2983
+ textContent[textType].push(formatTextHeader(textEntry.value));
2984
+ break;
2985
+ }
2986
+ break;
2987
+ }
2988
+ });
2989
+ }
2990
+ });
2991
+ }), Object.keys(textContent).forEach((textType) => {
2992
+ textContent[textType] = textContent[textType].join(`
2993
+ `);
2994
+ }), this.textContent = textContent;
2995
+ }
2996
+ isInlineTextNode(node) {
2997
+ if (node.contentDisposition.parsed.value === "attachment")
2998
+ return !1;
2999
+ switch (node.contentType.parsed.value) {
3000
+ case "text/html":
3001
+ case "text/plain":
3002
+ return !0;
3003
+ default:
3004
+ return !1;
3005
+ }
3006
+ }
3007
+ isInlineMessageRfc822(node) {
3008
+ return node.contentType.parsed.value !== "message/rfc822" ? !1 : (node.contentDisposition.parsed.value || (this.options.rfc822Attachments ? "attachment" : "inline")) === "inline";
3009
+ }
3010
+ // Check if this is a specially crafted report email where message/rfc822 content should not be inlined
3011
+ forceRfc822Attachments() {
3012
+ if (this.options.forceRfc822Attachments)
3013
+ return !0;
3014
+ let forceRfc822Attachments = !1, walk = (node) => {
3015
+ node.contentType.multipart || ["message/delivery-status", "message/feedback-report"].includes(node.contentType.parsed.value) && (forceRfc822Attachments = !0);
3016
+ for (let childNode of node.childNodes)
3017
+ walk(childNode);
3018
+ };
3019
+ return walk(this.root), forceRfc822Attachments;
3020
+ }
3021
+ async resolveStream(stream) {
3022
+ let chunkLen = 0, chunks = [], reader = stream.getReader();
3023
+ for (; ; ) {
3024
+ let { done, value } = await reader.read();
3025
+ if (done)
3026
+ break;
3027
+ chunks.push(value), chunkLen += value.length;
3028
+ }
3029
+ let result = new Uint8Array(chunkLen), chunkPointer = 0;
3030
+ for (let chunk of chunks)
3031
+ result.set(chunk, chunkPointer), chunkPointer += chunk.length;
3032
+ return result;
3033
+ }
3034
+ async parse(buf) {
3035
+ if (this.started)
3036
+ throw new Error("Can not reuse parser, create a new PostalMime object");
3037
+ for (this.started = !0, buf && typeof buf.getReader == "function" && (buf = await this.resolveStream(buf)), buf = buf || new ArrayBuffer(0), typeof buf == "string" && (buf = textEncoder.encode(buf)), (buf instanceof Blob || Object.prototype.toString.call(buf) === "[object Blob]") && (buf = await blobToArrayBuffer(buf)), buf.buffer instanceof ArrayBuffer && (buf = new Uint8Array(buf).buffer), this.buf = buf, this.av = new Uint8Array(buf), this.readPos = 0; this.readPos < this.av.length; ) {
3038
+ let line = this.readLine();
3039
+ await this.processLine(line.bytes, line.done);
3040
+ }
3041
+ await this.processNodeTree();
3042
+ let message = {
3043
+ headers: this.root.headers.map((entry) => ({ key: entry.key, value: entry.value })).reverse()
3044
+ };
3045
+ for (let key of ["from", "sender"]) {
3046
+ let addressHeader = this.root.headers.find((line) => line.key === key);
3047
+ if (addressHeader && addressHeader.value) {
3048
+ let addresses = address_parser_default(addressHeader.value);
3049
+ addresses && addresses.length && (message[key] = addresses[0]);
3050
+ }
3051
+ }
3052
+ for (let key of ["delivered-to", "return-path"]) {
3053
+ let addressHeader = this.root.headers.find((line) => line.key === key);
3054
+ if (addressHeader && addressHeader.value) {
3055
+ let addresses = address_parser_default(addressHeader.value);
3056
+ if (addresses && addresses.length && addresses[0].address) {
3057
+ let camelKey = key.replace(/\-(.)/g, (o, c) => c.toUpperCase());
3058
+ message[camelKey] = addresses[0].address;
3059
+ }
3060
+ }
3061
+ }
3062
+ for (let key of ["to", "cc", "bcc", "reply-to"]) {
3063
+ let addressHeaders = this.root.headers.filter((line) => line.key === key), addresses = [];
3064
+ if (addressHeaders.filter((entry) => entry && entry.value).map((entry) => address_parser_default(entry.value)).forEach((parsed) => addresses = addresses.concat(parsed || [])), addresses && addresses.length) {
3065
+ let camelKey = key.replace(/\-(.)/g, (o, c) => c.toUpperCase());
3066
+ message[camelKey] = addresses;
3067
+ }
3068
+ }
3069
+ for (let key of ["subject", "message-id", "in-reply-to", "references"]) {
3070
+ let header = this.root.headers.find((line) => line.key === key);
3071
+ if (header && header.value) {
3072
+ let camelKey = key.replace(/\-(.)/g, (o, c) => c.toUpperCase());
3073
+ message[camelKey] = decodeWords(header.value);
3074
+ }
3075
+ }
3076
+ let dateHeader = this.root.headers.find((line) => line.key === "date");
3077
+ if (dateHeader) {
3078
+ let date = new Date(dateHeader.value);
3079
+ !date || date.toString() === "Invalid Date" ? date = dateHeader.value : date = date.toISOString(), message.date = date;
3080
+ }
3081
+ switch (this.textContent?.html && (message.html = this.textContent.html), this.textContent?.plain && (message.text = this.textContent.plain), message.attachments = this.attachments, this.attachmentEncoding) {
3082
+ case "arraybuffer":
3083
+ break;
3084
+ case "base64":
3085
+ for (let attachment of message.attachments || [])
3086
+ attachment?.content && (attachment.content = base64ArrayBuffer(attachment.content), attachment.encoding = "base64");
3087
+ break;
3088
+ case "utf8":
3089
+ let attachmentDecoder = new TextDecoder("utf8");
3090
+ for (let attachment of message.attachments || [])
3091
+ attachment?.content && (attachment.content = attachmentDecoder.decode(attachment.content), attachment.encoding = "utf8");
3092
+ break;
3093
+ default:
3094
+ throw new Error("Unknwon attachment encoding");
3095
+ }
3096
+ return message;
3097
+ }
3098
+ };
3099
+
3100
+ // src/workers/core/constants.ts
3101
+ var CoreBindings = {
3102
+ SERVICE_LOOPBACK: "MINIFLARE_LOOPBACK",
3103
+ SERVICE_USER_ROUTE_PREFIX: "MINIFLARE_USER_ROUTE_",
3104
+ SERVICE_USER_FALLBACK: "MINIFLARE_USER_FALLBACK",
3105
+ TEXT_CUSTOM_SERVICE: "MINIFLARE_CUSTOM_SERVICE",
3106
+ IMAGES_SERVICE: "MINIFLARE_IMAGES_SERVICE",
3107
+ TEXT_UPSTREAM_URL: "MINIFLARE_UPSTREAM_URL",
3108
+ JSON_CF_BLOB: "CF_BLOB",
3109
+ JSON_ROUTES: "MINIFLARE_ROUTES",
3110
+ JSON_LOG_LEVEL: "MINIFLARE_LOG_LEVEL",
3111
+ DATA_LIVE_RELOAD_SCRIPT: "MINIFLARE_LIVE_RELOAD_SCRIPT",
3112
+ DURABLE_OBJECT_NAMESPACE_PROXY: "MINIFLARE_PROXY",
3113
+ DATA_PROXY_SECRET: "MINIFLARE_PROXY_SECRET",
3114
+ DATA_PROXY_SHARED_SECRET: "MINIFLARE_PROXY_SHARED_SECRET",
3115
+ TRIGGER_HANDLERS: "TRIGGER_HANDLERS",
3116
+ LOG_REQUESTS: "LOG_REQUESTS",
3117
+ STRIP_DISABLE_PRETTY_ERROR: "STRIP_DISABLE_PRETTY_ERROR",
3118
+ SERVICE_LOCAL_EXPLORER: "MINIFLARE_LOCAL_EXPLORER",
3119
+ EXPLORER_DISK: "MINIFLARE_EXPLORER_DISK",
3120
+ JSON_LOCAL_EXPLORER_BINDING_MAP: "LOCAL_EXPLORER_BINDING_MAP",
3121
+ JSON_LOCAL_EXPLORER_WORKER_NAMES: "LOCAL_EXPLORER_WORKER_NAMES",
3122
+ SERVICE_CACHE: "MINIFLARE_CACHE"
3123
+ };
3124
+
3125
+ // src/workers/email/constants.ts
3126
+ var RAW_EMAIL = "EmailMessage::raw";
3127
+
3128
+ // src/workers/email/send_email.worker.ts
3129
+ function extractEmailAddress(addr) {
3130
+ return typeof addr == "string" ? addr : addr.email;
3131
+ }
3132
+ function formatEmailAddress(addr) {
3133
+ return typeof addr == "string" ? addr : `"${addr.name}" <${addr.email}>`;
3134
+ }
3135
+ function formatMessageBuilder(builder) {
3136
+ let lines = [];
3137
+ lines.push("From: " + formatEmailAddress(builder.from));
3138
+ let toArray = Array.isArray(builder.to) ? builder.to : [builder.to];
3139
+ if (lines.push("To: " + toArray.map(formatEmailAddress).join(", ")), builder.cc) {
3140
+ let ccArray = Array.isArray(builder.cc) ? builder.cc : [builder.cc];
3141
+ lines.push("Cc: " + ccArray.map(formatEmailAddress).join(", "));
3142
+ }
3143
+ if (builder.bcc) {
3144
+ let bccArray = Array.isArray(builder.bcc) ? builder.bcc : [builder.bcc];
3145
+ lines.push("Bcc: " + bccArray.map(formatEmailAddress).join(", "));
3146
+ }
3147
+ return lines.push("Subject: " + builder.subject), lines.join(`
3148
+ `);
3149
+ }
3150
+ var SendEmailBinding = class extends WorkerEntrypoint {
3151
+ /**
3152
+ * Logs a message via the loopback service
3153
+ */
3154
+ log(message, level = LogLevel.INFO) {
3155
+ this.ctx.waitUntil(
3156
+ this.env[CoreBindings.SERVICE_LOOPBACK].fetch(
3157
+ "http://localhost/core/log",
3158
+ {
3159
+ method: "POST",
3160
+ headers: { [SharedHeaders.LOG_LEVEL]: level.toString() },
3161
+ body: message
3162
+ }
3163
+ )
3164
+ );
3165
+ }
3166
+ /**
3167
+ * Stores content to a temporary file via the loopback service
3168
+ */
3169
+ async storeTempFile(content, extension, prefix) {
3170
+ let body;
3171
+ return typeof content == "string" ? body = content : content instanceof ArrayBuffer ? body = new Uint8Array(content) : body = new Uint8Array(
3172
+ content.buffer,
3173
+ content.byteOffset,
3174
+ content.byteLength
3175
+ ), await (await this.env[CoreBindings.SERVICE_LOOPBACK].fetch(
3176
+ `http://localhost/core/store-temp-file?extension=${extension}&prefix=${prefix}`,
3177
+ {
3178
+ method: "POST",
3179
+ body
3180
+ }
3181
+ )).text();
3182
+ }
3183
+ checkDestinationAllowed(to) {
3184
+ if (this.env.destination_address !== void 0 && to !== this.env.destination_address)
3185
+ throw new Error(`email to ${to} not allowed`);
3186
+ if (this.env.allowed_destination_addresses !== void 0 && !this.env.allowed_destination_addresses.includes(to))
3187
+ throw new Error(`email to ${to} not allowed`);
3188
+ }
3189
+ checkSenderAllowed(from) {
3190
+ if (this.env.allowed_sender_addresses !== void 0 && !this.env.allowed_sender_addresses.includes(from))
3191
+ throw new Error(`email from ${from} not allowed`);
3192
+ }
3193
+ /**
3194
+ * Type guard to check if argument is an EmailMessage (has RAW_EMAIL symbol)
3195
+ */
3196
+ isEmailMessage(arg) {
3197
+ return RAW_EMAIL in arg;
3198
+ }
3199
+ /**
3200
+ * Validates recipients against binding configuration
3201
+ */
3202
+ validateRecipients(recipients) {
3203
+ let recipientArray = Array.isArray(recipients) ? recipients : [recipients];
3204
+ for (let recipient of recipientArray)
3205
+ this.checkDestinationAllowed(recipient);
3206
+ }
3207
+ /**
3208
+ * Validates MessageBuilder against binding configuration
3209
+ */
3210
+ validateMessageBuilder(builder) {
3211
+ let fromEmail = extractEmailAddress(builder.from);
3212
+ this.checkSenderAllowed(fromEmail);
3213
+ let toEmails = (Array.isArray(builder.to) ? builder.to : [builder.to]).map((addr) => extractEmailAddress(addr));
3214
+ this.validateRecipients(toEmails);
3215
+ }
3216
+ async send(emailMessageOrBuilder) {
3217
+ if (this.isEmailMessage(emailMessageOrBuilder)) {
3218
+ let emailMessage = emailMessageOrBuilder;
3219
+ this.checkSenderAllowed(emailMessage.from), this.validateRecipients(emailMessage.to);
3220
+ let rawEmail = emailMessage[RAW_EMAIL], rawEmailBuffer = new Uint8Array(
3221
+ await new Response(rawEmail).arrayBuffer()
3222
+ ), parsedEmail;
3223
+ try {
3224
+ parsedEmail = await PostalMime.parse(rawEmailBuffer);
3225
+ } catch (e) {
3226
+ let error = e;
3227
+ throw new Error(`could not parse email: ${error.message}`);
3228
+ }
3229
+ if (parsedEmail.messageId === void 0)
3230
+ throw new Error("invalid message-id");
3231
+ let emailHeaders;
3232
+ try {
3233
+ emailHeaders = new Headers(
3234
+ parsedEmail.headers.map((header) => [header.key, header.value])
3235
+ );
3236
+ } catch (e) {
3237
+ let error = e;
3238
+ throw new Error(`could not parse email: ${error.message}`);
3239
+ }
3240
+ if (emailMessage.from !== parsedEmail.from.address)
3241
+ throw new Error("From: header does not match mail from");
3242
+ if (emailHeaders.get("received") !== null)
3243
+ throw new Error("invalid headers set");
3244
+ let file = await this.storeTempFile(rawEmailBuffer, "eml", "email");
3245
+ this.log(
3246
+ `${blue("send_email binding called with the following message:")}
3247
+ ${file}`
3248
+ );
3249
+ } else {
3250
+ let builder = emailMessageOrBuilder;
3251
+ this.validateMessageBuilder(builder);
3252
+ let files = [];
3253
+ if (builder.text) {
3254
+ let filePath = await this.storeTempFile(
3255
+ builder.text,
3256
+ "txt",
3257
+ "email-text"
3258
+ );
3259
+ files.push(`Text: ${filePath}`);
3260
+ }
3261
+ if (builder.html) {
3262
+ let filePath = await this.storeTempFile(
3263
+ builder.html,
3264
+ "html",
3265
+ "email-html"
3266
+ );
3267
+ files.push(`HTML: ${filePath}`);
3268
+ }
3269
+ if (builder.attachments)
3270
+ for (let attachment of builder.attachments) {
3271
+ let extMatch = attachment.filename.match(/\.([^.]+)$/), extension = extMatch ? extMatch[1] : "bin", filePath = await this.storeTempFile(
3272
+ attachment.content,
3273
+ extension,
3274
+ "email-attachment"
3275
+ );
3276
+ files.push(
3277
+ `Attachment (${attachment.disposition}): ${attachment.filename} -> ${filePath}`
3278
+ );
3279
+ }
3280
+ let formatted = formatMessageBuilder(builder), fileInfo = files.length > 0 ? `
3281
+
3282
+ ${files.join(`
3283
+ `)}` : "";
3284
+ this.log(
3285
+ `${blue("send_email binding called with MessageBuilder:")}
3286
+ ${formatted}${fileInfo}`
3287
+ );
3288
+ }
3289
+ }
3290
+ };
3291
+ export {
3292
+ SendEmailBinding
3293
+ };
3294
+ //# sourceMappingURL=send_email.worker.js.map