@rohal12/twee-ts 1.13.1 → 1.14.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.
- package/dist/bin/twee-ts.js +851 -1083
- package/dist/bin/twee-ts.js.map +1 -1
- package/dist/{chunk-EQAUFATA.js → chunk-Z2CNKPVJ.js} +853 -1085
- package/dist/chunk-Z2CNKPVJ.js.map +1 -0
- package/dist/index.cjs +851 -1083
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +851 -1083
- package/dist/index.js.map +1 -1
- package/dist/plugins/rollup.js +1 -1
- package/dist/plugins/vite.js +1 -1
- package/package.json +3 -3
- package/dist/chunk-EQAUFATA.js.map +0 -1
package/dist/bin/twee-ts.js
CHANGED
|
@@ -1342,8 +1342,7 @@ function parseTwee(source, options = {}) {
|
|
|
1342
1342
|
return { passages, diagnostics };
|
|
1343
1343
|
}
|
|
1344
1344
|
|
|
1345
|
-
// node_modules/.pnpm/entities@
|
|
1346
|
-
var _a;
|
|
1345
|
+
// node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/decode-codepoint.js
|
|
1347
1346
|
var decodeMap = /* @__PURE__ */ new Map([
|
|
1348
1347
|
[0, 65533],
|
|
1349
1348
|
// C1 Unicode control character reference replacements
|
|
@@ -1375,47 +1374,16 @@ var decodeMap = /* @__PURE__ */ new Map([
|
|
|
1375
1374
|
[158, 382],
|
|
1376
1375
|
[159, 376]
|
|
1377
1376
|
]);
|
|
1378
|
-
var fromCodePoint = (
|
|
1379
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
|
|
1380
|
-
(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : ((codePoint) => {
|
|
1381
|
-
let output = "";
|
|
1382
|
-
if (codePoint > 65535) {
|
|
1383
|
-
codePoint -= 65536;
|
|
1384
|
-
output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296);
|
|
1385
|
-
codePoint = 56320 | codePoint & 1023;
|
|
1386
|
-
}
|
|
1387
|
-
output += String.fromCharCode(codePoint);
|
|
1388
|
-
return output;
|
|
1389
|
-
})
|
|
1390
|
-
);
|
|
1391
1377
|
function replaceCodePoint(codePoint) {
|
|
1392
|
-
var _a3;
|
|
1393
1378
|
if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {
|
|
1394
1379
|
return 65533;
|
|
1395
1380
|
}
|
|
1396
|
-
return
|
|
1381
|
+
return decodeMap.get(codePoint) ?? codePoint;
|
|
1397
1382
|
}
|
|
1398
1383
|
|
|
1399
|
-
// node_modules/.pnpm/entities@
|
|
1384
|
+
// node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/internal/decode-shared.js
|
|
1400
1385
|
function decodeBase64(input) {
|
|
1401
|
-
const binary = (
|
|
1402
|
-
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
1403
|
-
typeof atob === "function" ? (
|
|
1404
|
-
// Browser (and Node >=16)
|
|
1405
|
-
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
1406
|
-
atob(input)
|
|
1407
|
-
) : (
|
|
1408
|
-
// Older Node versions (<16)
|
|
1409
|
-
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
1410
|
-
typeof Buffer.from === "function" ? (
|
|
1411
|
-
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
1412
|
-
Buffer.from(input, "base64").toString("binary")
|
|
1413
|
-
) : (
|
|
1414
|
-
// eslint-disable-next-line unicorn/no-new-buffer, n/no-deprecated-api
|
|
1415
|
-
new Buffer(input, "base64").toString("binary")
|
|
1416
|
-
)
|
|
1417
|
-
)
|
|
1418
|
-
);
|
|
1386
|
+
const binary = atob(input);
|
|
1419
1387
|
const evenLength = binary.length & ~1;
|
|
1420
1388
|
const out = new Uint16Array(evenLength / 2);
|
|
1421
1389
|
for (let index = 0, outIndex = 0; index < evenLength; index += 2) {
|
|
@@ -1426,36 +1394,36 @@ function decodeBase64(input) {
|
|
|
1426
1394
|
return out;
|
|
1427
1395
|
}
|
|
1428
1396
|
|
|
1429
|
-
// node_modules/.pnpm/entities@
|
|
1397
|
+
// node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/generated/decode-data-html.js
|
|
1430
1398
|
var htmlDecodeTree = /* @__PURE__ */ decodeBase64("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");
|
|
1431
1399
|
|
|
1432
|
-
// node_modules/.pnpm/entities@
|
|
1400
|
+
// node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/generated/decode-data-xml.js
|
|
1433
1401
|
var xmlDecodeTree = /* @__PURE__ */ decodeBase64("AAJhZ2xxBwARABMAFQBtAg0AAAAAAA8AcAAmYG8AcwAnYHQAPmB0ADxg9SFvdCJg");
|
|
1434
1402
|
|
|
1435
|
-
// node_modules/.pnpm/entities@
|
|
1403
|
+
// node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/internal/bin-trie-flags.js
|
|
1436
1404
|
var BinTrieFlags;
|
|
1437
|
-
(function(
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1405
|
+
(function(BinTrieFlags2) {
|
|
1406
|
+
BinTrieFlags2[BinTrieFlags2["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
1407
|
+
BinTrieFlags2[BinTrieFlags2["FLAG13"] = 8192] = "FLAG13";
|
|
1408
|
+
BinTrieFlags2[BinTrieFlags2["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH";
|
|
1409
|
+
BinTrieFlags2[BinTrieFlags2["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
1442
1410
|
})(BinTrieFlags || (BinTrieFlags = {}));
|
|
1443
1411
|
|
|
1444
|
-
// node_modules/.pnpm/entities@
|
|
1412
|
+
// node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/decode.js
|
|
1445
1413
|
var CharCodes;
|
|
1446
|
-
(function(
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1414
|
+
(function(CharCodes3) {
|
|
1415
|
+
CharCodes3[CharCodes3["NUM"] = 35] = "NUM";
|
|
1416
|
+
CharCodes3[CharCodes3["SEMI"] = 59] = "SEMI";
|
|
1417
|
+
CharCodes3[CharCodes3["EQUALS"] = 61] = "EQUALS";
|
|
1418
|
+
CharCodes3[CharCodes3["ZERO"] = 48] = "ZERO";
|
|
1419
|
+
CharCodes3[CharCodes3["NINE"] = 57] = "NINE";
|
|
1420
|
+
CharCodes3[CharCodes3["LOWER_A"] = 97] = "LOWER_A";
|
|
1421
|
+
CharCodes3[CharCodes3["LOWER_F"] = 102] = "LOWER_F";
|
|
1422
|
+
CharCodes3[CharCodes3["LOWER_X"] = 120] = "LOWER_X";
|
|
1423
|
+
CharCodes3[CharCodes3["LOWER_Z"] = 122] = "LOWER_Z";
|
|
1424
|
+
CharCodes3[CharCodes3["UPPER_A"] = 65] = "UPPER_A";
|
|
1425
|
+
CharCodes3[CharCodes3["UPPER_F"] = 70] = "UPPER_F";
|
|
1426
|
+
CharCodes3[CharCodes3["UPPER_Z"] = 90] = "UPPER_Z";
|
|
1459
1427
|
})(CharCodes || (CharCodes = {}));
|
|
1460
1428
|
var TO_LOWER_BIT = 32;
|
|
1461
1429
|
function isNumber(code) {
|
|
@@ -1471,33 +1439,51 @@ function isEntityInAttributeInvalidEnd(code) {
|
|
|
1471
1439
|
return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);
|
|
1472
1440
|
}
|
|
1473
1441
|
var EntityDecoderState;
|
|
1474
|
-
(function(
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1442
|
+
(function(EntityDecoderState2) {
|
|
1443
|
+
EntityDecoderState2[EntityDecoderState2["EntityStart"] = 0] = "EntityStart";
|
|
1444
|
+
EntityDecoderState2[EntityDecoderState2["NumericStart"] = 1] = "NumericStart";
|
|
1445
|
+
EntityDecoderState2[EntityDecoderState2["NumericDecimal"] = 2] = "NumericDecimal";
|
|
1446
|
+
EntityDecoderState2[EntityDecoderState2["NumericHex"] = 3] = "NumericHex";
|
|
1447
|
+
EntityDecoderState2[EntityDecoderState2["NamedEntity"] = 4] = "NamedEntity";
|
|
1480
1448
|
})(EntityDecoderState || (EntityDecoderState = {}));
|
|
1481
1449
|
var DecodingMode;
|
|
1482
|
-
(function(
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1450
|
+
(function(DecodingMode2) {
|
|
1451
|
+
DecodingMode2[DecodingMode2["Legacy"] = 0] = "Legacy";
|
|
1452
|
+
DecodingMode2[DecodingMode2["Strict"] = 1] = "Strict";
|
|
1453
|
+
DecodingMode2[DecodingMode2["Attribute"] = 2] = "Attribute";
|
|
1486
1454
|
})(DecodingMode || (DecodingMode = {}));
|
|
1487
1455
|
var EntityDecoder = class {
|
|
1456
|
+
decodeTree;
|
|
1457
|
+
emitCodePoint;
|
|
1458
|
+
errors;
|
|
1488
1459
|
constructor(decodeTree, emitCodePoint, errors) {
|
|
1489
1460
|
this.decodeTree = decodeTree;
|
|
1490
1461
|
this.emitCodePoint = emitCodePoint;
|
|
1491
1462
|
this.errors = errors;
|
|
1492
|
-
this.state = EntityDecoderState.EntityStart;
|
|
1493
|
-
this.consumed = 1;
|
|
1494
|
-
this.result = 0;
|
|
1495
|
-
this.treeIndex = 0;
|
|
1496
|
-
this.excess = 1;
|
|
1497
|
-
this.decodeMode = DecodingMode.Strict;
|
|
1498
|
-
this.runConsumed = 0;
|
|
1499
1463
|
}
|
|
1500
|
-
/**
|
|
1464
|
+
/** The current state of the decoder. */
|
|
1465
|
+
state = EntityDecoderState.EntityStart;
|
|
1466
|
+
/** Characters that were consumed while parsing an entity. */
|
|
1467
|
+
consumed = 1;
|
|
1468
|
+
/**
|
|
1469
|
+
* The result of the entity.
|
|
1470
|
+
*
|
|
1471
|
+
* Either the result index of a numeric entity, or the codepoint of a
|
|
1472
|
+
* numeric entity.
|
|
1473
|
+
*/
|
|
1474
|
+
result = 0;
|
|
1475
|
+
/** The current index in the decode tree. */
|
|
1476
|
+
treeIndex = 0;
|
|
1477
|
+
/** The number of characters that were consumed in excess. */
|
|
1478
|
+
excess = 1;
|
|
1479
|
+
/** The mode in which the decoder is operating. */
|
|
1480
|
+
decodeMode = DecodingMode.Strict;
|
|
1481
|
+
/** The number of characters that have been consumed in the current run. */
|
|
1482
|
+
runConsumed = 0;
|
|
1483
|
+
/**
|
|
1484
|
+
* Resets the instance to make it reusable.
|
|
1485
|
+
* @param decodeMode Entity decoding mode to use.
|
|
1486
|
+
*/
|
|
1501
1487
|
startEntity(decodeMode) {
|
|
1502
1488
|
this.decodeMode = decodeMode;
|
|
1503
1489
|
this.state = EntityDecoderState.EntityStart;
|
|
@@ -1513,7 +1499,6 @@ var EntityDecoder = class {
|
|
|
1513
1499
|
*
|
|
1514
1500
|
* Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
|
|
1515
1501
|
* entity is incomplete, and resume when the next string is written.
|
|
1516
|
-
*
|
|
1517
1502
|
* @param input The string containing the entity (or a continuation of the entity).
|
|
1518
1503
|
* @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
|
|
1519
1504
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
@@ -1547,7 +1532,6 @@ var EntityDecoder = class {
|
|
|
1547
1532
|
* Switches between the numeric decimal and hexadecimal states.
|
|
1548
1533
|
*
|
|
1549
1534
|
* Equivalent to the `Numeric character reference state` in the HTML spec.
|
|
1550
|
-
*
|
|
1551
1535
|
* @param input The string containing the entity (or a continuation of the entity).
|
|
1552
1536
|
* @param offset The current offset.
|
|
1553
1537
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
@@ -1568,7 +1552,6 @@ var EntityDecoder = class {
|
|
|
1568
1552
|
* Parses a hexadecimal numeric entity.
|
|
1569
1553
|
*
|
|
1570
1554
|
* Equivalent to the `Hexademical character reference state` in the HTML spec.
|
|
1571
|
-
*
|
|
1572
1555
|
* @param input The string containing the entity (or a continuation of the entity).
|
|
1573
1556
|
* @param offset The current offset.
|
|
1574
1557
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
@@ -1591,7 +1574,6 @@ var EntityDecoder = class {
|
|
|
1591
1574
|
* Parses a decimal numeric entity.
|
|
1592
1575
|
*
|
|
1593
1576
|
* Equivalent to the `Decimal character reference state` in the HTML spec.
|
|
1594
|
-
*
|
|
1595
1577
|
* @param input The string containing the entity (or a continuation of the entity).
|
|
1596
1578
|
* @param offset The current offset.
|
|
1597
1579
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
@@ -1614,7 +1596,6 @@ var EntityDecoder = class {
|
|
|
1614
1596
|
*
|
|
1615
1597
|
* Implements the logic from the `Hexademical character reference start
|
|
1616
1598
|
* state` and `Numeric character reference end state` in the HTML spec.
|
|
1617
|
-
*
|
|
1618
1599
|
* @param lastCp The last code point of the entity. Used to see if the
|
|
1619
1600
|
* entity was terminated with a semicolon.
|
|
1620
1601
|
* @param expectedLength The minimum number of characters that should be
|
|
@@ -1623,9 +1604,8 @@ var EntityDecoder = class {
|
|
|
1623
1604
|
* @returns The number of characters that were consumed.
|
|
1624
1605
|
*/
|
|
1625
1606
|
emitNumericEntity(lastCp, expectedLength) {
|
|
1626
|
-
var _a3;
|
|
1627
1607
|
if (this.consumed <= expectedLength) {
|
|
1628
|
-
|
|
1608
|
+
this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed);
|
|
1629
1609
|
return 0;
|
|
1630
1610
|
}
|
|
1631
1611
|
if (lastCp === CharCodes.SEMI) {
|
|
@@ -1646,7 +1626,6 @@ var EntityDecoder = class {
|
|
|
1646
1626
|
* Parses a named entity.
|
|
1647
1627
|
*
|
|
1648
1628
|
* Equivalent to the `Named character reference state` in the HTML spec.
|
|
1649
|
-
*
|
|
1650
1629
|
* @param input The string containing the entity (or a continuation of the entity).
|
|
1651
1630
|
* @param offset The current offset.
|
|
1652
1631
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
@@ -1719,24 +1698,20 @@ var EntityDecoder = class {
|
|
|
1719
1698
|
}
|
|
1720
1699
|
/**
|
|
1721
1700
|
* Emit a named entity that was not terminated with a semicolon.
|
|
1722
|
-
*
|
|
1723
1701
|
* @returns The number of characters consumed.
|
|
1724
1702
|
*/
|
|
1725
1703
|
emitNotTerminatedNamedEntity() {
|
|
1726
|
-
var _a3;
|
|
1727
1704
|
const { result, decodeTree } = this;
|
|
1728
1705
|
const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
1729
1706
|
this.emitNamedEntityData(result, valueLength, this.consumed);
|
|
1730
|
-
|
|
1707
|
+
this.errors?.missingSemicolonAfterCharacterReference();
|
|
1731
1708
|
return this.consumed;
|
|
1732
1709
|
}
|
|
1733
1710
|
/**
|
|
1734
1711
|
* Emit a named entity.
|
|
1735
|
-
*
|
|
1736
1712
|
* @param result The index of the entity in the decode tree.
|
|
1737
1713
|
* @param valueLength The number of bytes in the entity.
|
|
1738
1714
|
* @param consumed The number of characters consumed.
|
|
1739
|
-
*
|
|
1740
1715
|
* @returns The number of characters consumed.
|
|
1741
1716
|
*/
|
|
1742
1717
|
emitNamedEntityData(result, valueLength, consumed) {
|
|
@@ -1751,11 +1726,9 @@ var EntityDecoder = class {
|
|
|
1751
1726
|
* Signal to the parser that the end of the input was reached.
|
|
1752
1727
|
*
|
|
1753
1728
|
* Remaining data will be emitted and relevant errors will be produced.
|
|
1754
|
-
*
|
|
1755
1729
|
* @returns The number of characters consumed.
|
|
1756
1730
|
*/
|
|
1757
1731
|
end() {
|
|
1758
|
-
var _a3;
|
|
1759
1732
|
switch (this.state) {
|
|
1760
1733
|
case EntityDecoderState.NamedEntity: {
|
|
1761
1734
|
return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;
|
|
@@ -1768,7 +1741,7 @@ var EntityDecoder = class {
|
|
|
1768
1741
|
return this.emitNumericEntity(0, 3);
|
|
1769
1742
|
}
|
|
1770
1743
|
case EntityDecoderState.NumericStart: {
|
|
1771
|
-
|
|
1744
|
+
this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed);
|
|
1772
1745
|
return 0;
|
|
1773
1746
|
}
|
|
1774
1747
|
case EntityDecoderState.EntityStart: {
|
|
@@ -1806,36 +1779,36 @@ function determineBranch(decodeTree, current, nodeIndex, char) {
|
|
|
1806
1779
|
return -1;
|
|
1807
1780
|
}
|
|
1808
1781
|
|
|
1809
|
-
// node_modules/.pnpm/htmlparser2@
|
|
1782
|
+
// node_modules/.pnpm/htmlparser2@12.0.0/node_modules/htmlparser2/dist/Tokenizer.js
|
|
1810
1783
|
var CharCodes2;
|
|
1811
|
-
(function(
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1784
|
+
(function(CharCodes3) {
|
|
1785
|
+
CharCodes3[CharCodes3["Tab"] = 9] = "Tab";
|
|
1786
|
+
CharCodes3[CharCodes3["NewLine"] = 10] = "NewLine";
|
|
1787
|
+
CharCodes3[CharCodes3["FormFeed"] = 12] = "FormFeed";
|
|
1788
|
+
CharCodes3[CharCodes3["CarriageReturn"] = 13] = "CarriageReturn";
|
|
1789
|
+
CharCodes3[CharCodes3["Space"] = 32] = "Space";
|
|
1790
|
+
CharCodes3[CharCodes3["ExclamationMark"] = 33] = "ExclamationMark";
|
|
1791
|
+
CharCodes3[CharCodes3["Number"] = 35] = "Number";
|
|
1792
|
+
CharCodes3[CharCodes3["Amp"] = 38] = "Amp";
|
|
1793
|
+
CharCodes3[CharCodes3["SingleQuote"] = 39] = "SingleQuote";
|
|
1794
|
+
CharCodes3[CharCodes3["DoubleQuote"] = 34] = "DoubleQuote";
|
|
1795
|
+
CharCodes3[CharCodes3["Dash"] = 45] = "Dash";
|
|
1796
|
+
CharCodes3[CharCodes3["Slash"] = 47] = "Slash";
|
|
1797
|
+
CharCodes3[CharCodes3["Zero"] = 48] = "Zero";
|
|
1798
|
+
CharCodes3[CharCodes3["Nine"] = 57] = "Nine";
|
|
1799
|
+
CharCodes3[CharCodes3["Semi"] = 59] = "Semi";
|
|
1800
|
+
CharCodes3[CharCodes3["Lt"] = 60] = "Lt";
|
|
1801
|
+
CharCodes3[CharCodes3["Eq"] = 61] = "Eq";
|
|
1802
|
+
CharCodes3[CharCodes3["Gt"] = 62] = "Gt";
|
|
1803
|
+
CharCodes3[CharCodes3["Questionmark"] = 63] = "Questionmark";
|
|
1804
|
+
CharCodes3[CharCodes3["UpperA"] = 65] = "UpperA";
|
|
1805
|
+
CharCodes3[CharCodes3["LowerA"] = 97] = "LowerA";
|
|
1806
|
+
CharCodes3[CharCodes3["UpperF"] = 70] = "UpperF";
|
|
1807
|
+
CharCodes3[CharCodes3["LowerF"] = 102] = "LowerF";
|
|
1808
|
+
CharCodes3[CharCodes3["UpperZ"] = 90] = "UpperZ";
|
|
1809
|
+
CharCodes3[CharCodes3["LowerZ"] = 122] = "LowerZ";
|
|
1810
|
+
CharCodes3[CharCodes3["LowerX"] = 120] = "LowerX";
|
|
1811
|
+
CharCodes3[CharCodes3["OpeningSquareBracket"] = 91] = "OpeningSquareBracket";
|
|
1839
1812
|
})(CharCodes2 || (CharCodes2 = {}));
|
|
1840
1813
|
var State;
|
|
1841
1814
|
(function(State2) {
|
|
@@ -1858,12 +1831,12 @@ var State;
|
|
|
1858
1831
|
State2[State2["InProcessingInstruction"] = 17] = "InProcessingInstruction";
|
|
1859
1832
|
State2[State2["BeforeComment"] = 18] = "BeforeComment";
|
|
1860
1833
|
State2[State2["CDATASequence"] = 19] = "CDATASequence";
|
|
1861
|
-
State2[State2["
|
|
1862
|
-
State2[State2["
|
|
1863
|
-
State2[State2["
|
|
1864
|
-
State2[State2["
|
|
1865
|
-
State2[State2["
|
|
1866
|
-
State2[State2["
|
|
1834
|
+
State2[State2["DeclarationSequence"] = 20] = "DeclarationSequence";
|
|
1835
|
+
State2[State2["InSpecialComment"] = 21] = "InSpecialComment";
|
|
1836
|
+
State2[State2["InCommentLike"] = 22] = "InCommentLike";
|
|
1837
|
+
State2[State2["SpecialStartSequence"] = 23] = "SpecialStartSequence";
|
|
1838
|
+
State2[State2["InSpecialTag"] = 24] = "InSpecialTag";
|
|
1839
|
+
State2[State2["InPlainText"] = 25] = "InPlainText";
|
|
1867
1840
|
State2[State2["InEntity"] = 26] = "InEntity";
|
|
1868
1841
|
})(State || (State = {}));
|
|
1869
1842
|
function isWhitespace(c) {
|
|
@@ -1883,12 +1856,56 @@ var QuoteType;
|
|
|
1883
1856
|
QuoteType2[QuoteType2["Double"] = 3] = "Double";
|
|
1884
1857
|
})(QuoteType || (QuoteType = {}));
|
|
1885
1858
|
var Sequences = {
|
|
1859
|
+
Empty: new Uint8Array(0),
|
|
1886
1860
|
Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]),
|
|
1887
1861
|
// CDATA[
|
|
1888
1862
|
CdataEnd: new Uint8Array([93, 93, 62]),
|
|
1889
1863
|
// ]]>
|
|
1890
|
-
CommentEnd: new Uint8Array([45, 45, 62]),
|
|
1891
|
-
//
|
|
1864
|
+
CommentEnd: new Uint8Array([45, 45, 33, 62]),
|
|
1865
|
+
// `--!>`
|
|
1866
|
+
Doctype: new Uint8Array([100, 111, 99, 116, 121, 112, 101]),
|
|
1867
|
+
// `doctype`
|
|
1868
|
+
IframeEnd: new Uint8Array([60, 47, 105, 102, 114, 97, 109, 101]),
|
|
1869
|
+
// `</iframe`
|
|
1870
|
+
NoembedEnd: new Uint8Array([
|
|
1871
|
+
60,
|
|
1872
|
+
47,
|
|
1873
|
+
110,
|
|
1874
|
+
111,
|
|
1875
|
+
101,
|
|
1876
|
+
109,
|
|
1877
|
+
98,
|
|
1878
|
+
101,
|
|
1879
|
+
100
|
|
1880
|
+
]),
|
|
1881
|
+
// `</noembed`
|
|
1882
|
+
NoframesEnd: new Uint8Array([
|
|
1883
|
+
60,
|
|
1884
|
+
47,
|
|
1885
|
+
110,
|
|
1886
|
+
111,
|
|
1887
|
+
102,
|
|
1888
|
+
114,
|
|
1889
|
+
97,
|
|
1890
|
+
109,
|
|
1891
|
+
101,
|
|
1892
|
+
115
|
|
1893
|
+
]),
|
|
1894
|
+
// `</noframes`
|
|
1895
|
+
Plaintext: new Uint8Array([
|
|
1896
|
+
60,
|
|
1897
|
+
47,
|
|
1898
|
+
112,
|
|
1899
|
+
108,
|
|
1900
|
+
97,
|
|
1901
|
+
105,
|
|
1902
|
+
110,
|
|
1903
|
+
116,
|
|
1904
|
+
101,
|
|
1905
|
+
120,
|
|
1906
|
+
116
|
|
1907
|
+
]),
|
|
1908
|
+
// `</plaintext`
|
|
1892
1909
|
ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]),
|
|
1893
1910
|
// `</script`
|
|
1894
1911
|
StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]),
|
|
@@ -1911,22 +1928,43 @@ var Sequences = {
|
|
|
1911
1928
|
XmpEnd: new Uint8Array([60, 47, 120, 109, 112])
|
|
1912
1929
|
// `</xmp`
|
|
1913
1930
|
};
|
|
1931
|
+
var specialStartSequences = /* @__PURE__ */ new Map([
|
|
1932
|
+
[Sequences.IframeEnd[2], Sequences.IframeEnd],
|
|
1933
|
+
[Sequences.NoembedEnd[2], Sequences.NoembedEnd],
|
|
1934
|
+
[Sequences.Plaintext[2], Sequences.Plaintext],
|
|
1935
|
+
[Sequences.ScriptEnd[2], Sequences.ScriptEnd],
|
|
1936
|
+
[Sequences.TitleEnd[2], Sequences.TitleEnd],
|
|
1937
|
+
[Sequences.XmpEnd[2], Sequences.XmpEnd]
|
|
1938
|
+
]);
|
|
1914
1939
|
var Tokenizer = class {
|
|
1915
|
-
|
|
1940
|
+
cbs;
|
|
1941
|
+
/** The current state the tokenizer is in. */
|
|
1942
|
+
state = State.Text;
|
|
1943
|
+
/** The read buffer. */
|
|
1944
|
+
buffer = "";
|
|
1945
|
+
/** The beginning of the section that is currently being read. */
|
|
1946
|
+
sectionStart = 0;
|
|
1947
|
+
/** The index within the buffer that we are currently looking at. */
|
|
1948
|
+
index = 0;
|
|
1949
|
+
/** The start of the last entity. */
|
|
1950
|
+
entityStart = 0;
|
|
1951
|
+
/** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */
|
|
1952
|
+
baseState = State.Text;
|
|
1953
|
+
/** For special parsing behavior inside of script and style tags. */
|
|
1954
|
+
isSpecial = false;
|
|
1955
|
+
/** Indicates whether the tokenizer has been paused. */
|
|
1956
|
+
running = true;
|
|
1957
|
+
/** The offset of the current buffer. */
|
|
1958
|
+
offset = 0;
|
|
1959
|
+
xmlMode;
|
|
1960
|
+
decodeEntities;
|
|
1961
|
+
recognizeSelfClosing;
|
|
1962
|
+
entityDecoder;
|
|
1963
|
+
constructor({ xmlMode = false, decodeEntities = true, recognizeSelfClosing = xmlMode }, cbs) {
|
|
1916
1964
|
this.cbs = cbs;
|
|
1917
|
-
this.state = State.Text;
|
|
1918
|
-
this.buffer = "";
|
|
1919
|
-
this.sectionStart = 0;
|
|
1920
|
-
this.index = 0;
|
|
1921
|
-
this.entityStart = 0;
|
|
1922
|
-
this.baseState = State.Text;
|
|
1923
|
-
this.isSpecial = false;
|
|
1924
|
-
this.running = true;
|
|
1925
|
-
this.offset = 0;
|
|
1926
|
-
this.currentSequence = void 0;
|
|
1927
|
-
this.sequenceIndex = 0;
|
|
1928
1965
|
this.xmlMode = xmlMode;
|
|
1929
1966
|
this.decodeEntities = decodeEntities;
|
|
1967
|
+
this.recognizeSelfClosing = recognizeSelfClosing;
|
|
1930
1968
|
this.entityDecoder = new EntityDecoder(xmlMode ? xmlDecodeTree : htmlDecodeTree, (cp, consumed) => this.emitCodePoint(cp, consumed));
|
|
1931
1969
|
}
|
|
1932
1970
|
reset() {
|
|
@@ -1935,7 +1973,9 @@ var Tokenizer = class {
|
|
|
1935
1973
|
this.sectionStart = 0;
|
|
1936
1974
|
this.index = 0;
|
|
1937
1975
|
this.baseState = State.Text;
|
|
1938
|
-
this.
|
|
1976
|
+
this.isSpecial = false;
|
|
1977
|
+
this.currentSequence = Sequences.Empty;
|
|
1978
|
+
this.sequenceIndex = 0;
|
|
1939
1979
|
this.running = true;
|
|
1940
1980
|
this.offset = 0;
|
|
1941
1981
|
}
|
|
@@ -1968,56 +2008,63 @@ var Tokenizer = class {
|
|
|
1968
2008
|
this.startEntity();
|
|
1969
2009
|
}
|
|
1970
2010
|
}
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
this.
|
|
1982
|
-
} else if (!isEnd) {
|
|
1983
|
-
this.sequenceIndex++;
|
|
1984
|
-
return;
|
|
2011
|
+
currentSequence = Sequences.Empty;
|
|
2012
|
+
sequenceIndex = 0;
|
|
2013
|
+
enterTagBody() {
|
|
2014
|
+
if (this.currentSequence === Sequences.Plaintext) {
|
|
2015
|
+
this.currentSequence = Sequences.Empty;
|
|
2016
|
+
this.state = State.InPlainText;
|
|
2017
|
+
} else if (this.isSpecial) {
|
|
2018
|
+
this.state = State.InSpecialTag;
|
|
2019
|
+
this.sequenceIndex = 0;
|
|
2020
|
+
} else {
|
|
2021
|
+
this.state = State.Text;
|
|
1985
2022
|
}
|
|
1986
|
-
this.sequenceIndex = 0;
|
|
1987
|
-
this.state = State.InTagName;
|
|
1988
|
-
this.stateInTagName(c);
|
|
1989
2023
|
}
|
|
1990
|
-
/**
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2024
|
+
/**
|
|
2025
|
+
* Match the opening tag name against an HTML text-only tag sequence.
|
|
2026
|
+
*
|
|
2027
|
+
* Some tags share an initial prefix (`script`/`style`, `title`/`textarea`,
|
|
2028
|
+
* `noembed`/`noframes`), so we may switch to an alternate sequence at the
|
|
2029
|
+
* first distinguishing byte. On a successful full match we fall back to
|
|
2030
|
+
* the normal tag-name state; a later `>` will enter raw-text, RCDATA, or
|
|
2031
|
+
* plaintext mode based on `currentSequence` / `isSpecial`.
|
|
2032
|
+
* @param c Current character code point.
|
|
2033
|
+
*/
|
|
2034
|
+
stateSpecialStartSequence(c) {
|
|
2035
|
+
const lower = c | 32;
|
|
2036
|
+
if (this.sequenceIndex < this.currentSequence.length) {
|
|
2037
|
+
if (lower === this.currentSequence[this.sequenceIndex]) {
|
|
2038
|
+
this.sequenceIndex++;
|
|
2004
2039
|
return;
|
|
2005
2040
|
}
|
|
2006
|
-
this.sequenceIndex
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
if (this.currentSequence === Sequences.TitleEnd) {
|
|
2012
|
-
if (this.decodeEntities && c === CharCodes2.Amp) {
|
|
2013
|
-
this.startEntity();
|
|
2041
|
+
if (this.sequenceIndex === 3) {
|
|
2042
|
+
if (this.currentSequence === Sequences.ScriptEnd && lower === Sequences.StyleEnd[3]) {
|
|
2043
|
+
this.currentSequence = Sequences.StyleEnd;
|
|
2044
|
+
this.sequenceIndex = 4;
|
|
2045
|
+
return;
|
|
2014
2046
|
}
|
|
2015
|
-
|
|
2016
|
-
|
|
2047
|
+
if (this.currentSequence === Sequences.TitleEnd && lower === Sequences.TextareaEnd[3]) {
|
|
2048
|
+
this.currentSequence = Sequences.TextareaEnd;
|
|
2049
|
+
this.sequenceIndex = 4;
|
|
2050
|
+
return;
|
|
2051
|
+
}
|
|
2052
|
+
} else if (this.sequenceIndex === 4 && this.currentSequence === Sequences.NoembedEnd && lower === Sequences.NoframesEnd[4]) {
|
|
2053
|
+
this.currentSequence = Sequences.NoframesEnd;
|
|
2054
|
+
this.sequenceIndex = 5;
|
|
2055
|
+
return;
|
|
2017
2056
|
}
|
|
2018
|
-
} else {
|
|
2019
|
-
this.sequenceIndex =
|
|
2057
|
+
} else if (isEndOfTagSection(c)) {
|
|
2058
|
+
this.sequenceIndex = 0;
|
|
2059
|
+
this.state = State.InTagName;
|
|
2060
|
+
this.stateInTagName(c);
|
|
2061
|
+
return;
|
|
2020
2062
|
}
|
|
2063
|
+
this.isSpecial = false;
|
|
2064
|
+
this.currentSequence = Sequences.Empty;
|
|
2065
|
+
this.sequenceIndex = 0;
|
|
2066
|
+
this.state = State.InTagName;
|
|
2067
|
+
this.stateInTagName(c);
|
|
2021
2068
|
}
|
|
2022
2069
|
stateCDATASequence(c) {
|
|
2023
2070
|
if (c === Sequences.Cdata[this.sequenceIndex]) {
|
|
@@ -2029,14 +2076,19 @@ var Tokenizer = class {
|
|
|
2029
2076
|
}
|
|
2030
2077
|
} else {
|
|
2031
2078
|
this.sequenceIndex = 0;
|
|
2032
|
-
this.
|
|
2033
|
-
|
|
2079
|
+
if (this.xmlMode) {
|
|
2080
|
+
this.state = State.InDeclaration;
|
|
2081
|
+
this.stateInDeclaration(c);
|
|
2082
|
+
} else {
|
|
2083
|
+
this.state = State.InSpecialComment;
|
|
2084
|
+
this.stateInSpecialComment(c);
|
|
2085
|
+
}
|
|
2034
2086
|
}
|
|
2035
2087
|
}
|
|
2036
2088
|
/**
|
|
2037
2089
|
* When we wait for one specific character, we can speed things up
|
|
2038
2090
|
* by skipping through the buffer until we find it.
|
|
2039
|
-
*
|
|
2091
|
+
* @param c Current character code point.
|
|
2040
2092
|
* @returns Whether the character was found.
|
|
2041
2093
|
*/
|
|
2042
2094
|
fastForwardTo(c) {
|
|
@@ -2048,6 +2100,16 @@ var Tokenizer = class {
|
|
|
2048
2100
|
this.index = this.buffer.length + this.offset - 1;
|
|
2049
2101
|
return false;
|
|
2050
2102
|
}
|
|
2103
|
+
/**
|
|
2104
|
+
* Emit a comment token and return to the text state.
|
|
2105
|
+
* @param offset Number of characters in the end sequence that have already been matched.
|
|
2106
|
+
*/
|
|
2107
|
+
emitComment(offset) {
|
|
2108
|
+
this.cbs.oncomment(this.sectionStart, this.index, offset);
|
|
2109
|
+
this.sequenceIndex = 0;
|
|
2110
|
+
this.sectionStart = this.index + 1;
|
|
2111
|
+
this.state = State.Text;
|
|
2112
|
+
}
|
|
2051
2113
|
/**
|
|
2052
2114
|
* Comments and CDATA end with `-->` and `]]>`.
|
|
2053
2115
|
*
|
|
@@ -2055,14 +2117,26 @@ var Tokenizer = class {
|
|
|
2055
2117
|
* - Their end sequences have a distinct character they start with.
|
|
2056
2118
|
* - That character is then repeated, so we have to check multiple repeats.
|
|
2057
2119
|
* - All characters but the start character of the sequence can be skipped.
|
|
2120
|
+
* @param c Current character code point.
|
|
2058
2121
|
*/
|
|
2059
2122
|
stateInCommentLike(c) {
|
|
2060
|
-
if (
|
|
2123
|
+
if (!this.xmlMode && this.currentSequence === Sequences.CommentEnd && this.sequenceIndex <= 1 && /*
|
|
2124
|
+
* We're still at the very start of the comment: the only
|
|
2125
|
+
* characters consumed since `<!--` are the dashes that
|
|
2126
|
+
* advanced sequenceIndex (0 for `<!-->`, 1 for `<!--->`).
|
|
2127
|
+
*/
|
|
2128
|
+
this.index === this.sectionStart + this.sequenceIndex && c === CharCodes2.Gt) {
|
|
2129
|
+
this.emitComment(this.sequenceIndex);
|
|
2130
|
+
} else if (this.currentSequence === Sequences.CommentEnd && this.sequenceIndex === 2 && c === CharCodes2.Gt) {
|
|
2131
|
+
this.emitComment(2);
|
|
2132
|
+
} else if (this.currentSequence === Sequences.CommentEnd && this.sequenceIndex === this.currentSequence.length - 1 && c !== CharCodes2.Gt) {
|
|
2133
|
+
this.sequenceIndex = Number(c === CharCodes2.Dash);
|
|
2134
|
+
} else if (c === this.currentSequence[this.sequenceIndex]) {
|
|
2061
2135
|
if (++this.sequenceIndex === this.currentSequence.length) {
|
|
2062
2136
|
if (this.currentSequence === Sequences.CdataEnd) {
|
|
2063
2137
|
this.cbs.oncdata(this.sectionStart, this.index, 2);
|
|
2064
2138
|
} else {
|
|
2065
|
-
this.cbs.oncomment(this.sectionStart, this.index,
|
|
2139
|
+
this.cbs.oncomment(this.sectionStart, this.index, 3);
|
|
2066
2140
|
}
|
|
2067
2141
|
this.sequenceIndex = 0;
|
|
2068
2142
|
this.sectionStart = this.index + 1;
|
|
@@ -2081,34 +2155,72 @@ var Tokenizer = class {
|
|
|
2081
2155
|
*
|
|
2082
2156
|
* XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).
|
|
2083
2157
|
* We allow anything that wouldn't end the tag.
|
|
2158
|
+
* @param c Current character code point.
|
|
2084
2159
|
*/
|
|
2085
2160
|
isTagStartChar(c) {
|
|
2086
2161
|
return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);
|
|
2087
2162
|
}
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2163
|
+
/**
|
|
2164
|
+
* Scan raw-text / RCDATA content for the matching end tag.
|
|
2165
|
+
*
|
|
2166
|
+
* For RCDATA tags (`<title>`, `<textarea>`) entities are decoded inline.
|
|
2167
|
+
* For raw-text tags (`<script>`, `<style>`, etc.) we fast-forward to `<`.
|
|
2168
|
+
* @param c Current character code point.
|
|
2169
|
+
*/
|
|
2170
|
+
stateInSpecialTag(c) {
|
|
2171
|
+
if (this.sequenceIndex === this.currentSequence.length) {
|
|
2172
|
+
if (isEndOfTagSection(c)) {
|
|
2173
|
+
const endOfText = this.index - this.currentSequence.length;
|
|
2174
|
+
if (this.sectionStart < endOfText) {
|
|
2175
|
+
const actualIndex = this.index;
|
|
2176
|
+
this.index = endOfText;
|
|
2177
|
+
this.cbs.ontext(this.sectionStart, endOfText);
|
|
2178
|
+
this.index = actualIndex;
|
|
2179
|
+
}
|
|
2180
|
+
this.isSpecial = false;
|
|
2181
|
+
this.sectionStart = endOfText + 2;
|
|
2182
|
+
this.stateInClosingTagName(c);
|
|
2183
|
+
return;
|
|
2184
|
+
}
|
|
2185
|
+
this.sequenceIndex = 0;
|
|
2186
|
+
}
|
|
2187
|
+
if ((c | 32) === this.currentSequence[this.sequenceIndex]) {
|
|
2188
|
+
this.sequenceIndex += 1;
|
|
2189
|
+
} else if (this.sequenceIndex === 0) {
|
|
2190
|
+
if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd) {
|
|
2191
|
+
if (this.decodeEntities && c === CharCodes2.Amp) {
|
|
2192
|
+
this.startEntity();
|
|
2193
|
+
}
|
|
2194
|
+
} else if (this.fastForwardTo(CharCodes2.Lt)) {
|
|
2195
|
+
this.sequenceIndex = 1;
|
|
2196
|
+
}
|
|
2197
|
+
} else {
|
|
2198
|
+
this.sequenceIndex = Number(c === CharCodes2.Lt);
|
|
2199
|
+
}
|
|
2093
2200
|
}
|
|
2094
2201
|
stateBeforeTagName(c) {
|
|
2095
2202
|
if (c === CharCodes2.ExclamationMark) {
|
|
2096
2203
|
this.state = State.BeforeDeclaration;
|
|
2097
2204
|
this.sectionStart = this.index + 1;
|
|
2098
2205
|
} else if (c === CharCodes2.Questionmark) {
|
|
2099
|
-
this.
|
|
2100
|
-
|
|
2206
|
+
if (this.xmlMode) {
|
|
2207
|
+
this.state = State.InProcessingInstruction;
|
|
2208
|
+
this.sequenceIndex = 0;
|
|
2209
|
+
this.sectionStart = this.index + 1;
|
|
2210
|
+
} else {
|
|
2211
|
+
this.state = State.InSpecialComment;
|
|
2212
|
+
this.sectionStart = this.index;
|
|
2213
|
+
}
|
|
2101
2214
|
} else if (this.isTagStartChar(c)) {
|
|
2102
|
-
const lower = c | 32;
|
|
2103
2215
|
this.sectionStart = this.index;
|
|
2104
|
-
|
|
2216
|
+
const special = this.xmlMode || this.cbs.isInForeignContext?.() ? void 0 : specialStartSequences.get(c | 32);
|
|
2217
|
+
if (special === void 0) {
|
|
2105
2218
|
this.state = State.InTagName;
|
|
2106
|
-
} else if (lower === Sequences.ScriptEnd[2]) {
|
|
2107
|
-
this.state = State.BeforeSpecialS;
|
|
2108
|
-
} else if (lower === Sequences.TitleEnd[2] || lower === Sequences.XmpEnd[2]) {
|
|
2109
|
-
this.state = State.BeforeSpecialT;
|
|
2110
2219
|
} else {
|
|
2111
|
-
this.
|
|
2220
|
+
this.isSpecial = true;
|
|
2221
|
+
this.currentSequence = special;
|
|
2222
|
+
this.sequenceIndex = 3;
|
|
2223
|
+
this.state = State.SpecialStartSequence;
|
|
2112
2224
|
}
|
|
2113
2225
|
} else if (c === CharCodes2.Slash) {
|
|
2114
2226
|
this.state = State.BeforeClosingTagName;
|
|
@@ -2127,15 +2239,23 @@ var Tokenizer = class {
|
|
|
2127
2239
|
}
|
|
2128
2240
|
stateBeforeClosingTagName(c) {
|
|
2129
2241
|
if (isWhitespace(c)) {
|
|
2242
|
+
if (this.xmlMode) {
|
|
2243
|
+
} else {
|
|
2244
|
+
this.state = State.InSpecialComment;
|
|
2245
|
+
this.sectionStart = this.index;
|
|
2246
|
+
}
|
|
2130
2247
|
} else if (c === CharCodes2.Gt) {
|
|
2131
2248
|
this.state = State.Text;
|
|
2249
|
+
if (!this.xmlMode) {
|
|
2250
|
+
this.sectionStart = this.index + 1;
|
|
2251
|
+
}
|
|
2132
2252
|
} else {
|
|
2133
2253
|
this.state = this.isTagStartChar(c) ? State.InClosingTagName : State.InSpecialComment;
|
|
2134
2254
|
this.sectionStart = this.index;
|
|
2135
2255
|
}
|
|
2136
2256
|
}
|
|
2137
2257
|
stateInClosingTagName(c) {
|
|
2138
|
-
if (
|
|
2258
|
+
if (isEndOfTagSection(c)) {
|
|
2139
2259
|
this.cbs.onclosetag(this.sectionStart, this.index);
|
|
2140
2260
|
this.sectionStart = -1;
|
|
2141
2261
|
this.state = State.AfterClosingTagName;
|
|
@@ -2151,12 +2271,7 @@ var Tokenizer = class {
|
|
|
2151
2271
|
stateBeforeAttributeName(c) {
|
|
2152
2272
|
if (c === CharCodes2.Gt) {
|
|
2153
2273
|
this.cbs.onopentagend(this.index);
|
|
2154
|
-
|
|
2155
|
-
this.state = State.InSpecialTag;
|
|
2156
|
-
this.sequenceIndex = 0;
|
|
2157
|
-
} else {
|
|
2158
|
-
this.state = State.Text;
|
|
2159
|
-
}
|
|
2274
|
+
this.enterTagBody();
|
|
2160
2275
|
this.sectionStart = this.index + 1;
|
|
2161
2276
|
} else if (c === CharCodes2.Slash) {
|
|
2162
2277
|
this.state = State.InSelfClosingTag;
|
|
@@ -2165,12 +2280,26 @@ var Tokenizer = class {
|
|
|
2165
2280
|
this.sectionStart = this.index;
|
|
2166
2281
|
}
|
|
2167
2282
|
}
|
|
2283
|
+
/**
|
|
2284
|
+
* Handle `/` before `>` in an opening tag.
|
|
2285
|
+
*
|
|
2286
|
+
* In HTML mode, text-only tags ignore the self-closing flag and still enter
|
|
2287
|
+
* their raw-text/RCDATA/plaintext state unless self-closing tags are being
|
|
2288
|
+
* recognized. In XML mode, or for ordinary tags, the tokenizer returns to
|
|
2289
|
+
* regular text parsing after emitting the self-closing callback.
|
|
2290
|
+
* @param c Current character code point.
|
|
2291
|
+
*/
|
|
2168
2292
|
stateInSelfClosingTag(c) {
|
|
2169
2293
|
if (c === CharCodes2.Gt) {
|
|
2170
2294
|
this.cbs.onselfclosingtag(this.index);
|
|
2171
|
-
this.state = State.Text;
|
|
2172
2295
|
this.sectionStart = this.index + 1;
|
|
2296
|
+
if (!this.recognizeSelfClosing) {
|
|
2297
|
+
this.enterTagBody();
|
|
2298
|
+
return;
|
|
2299
|
+
}
|
|
2300
|
+
this.state = State.Text;
|
|
2173
2301
|
this.isSpecial = false;
|
|
2302
|
+
this.currentSequence = Sequences.Empty;
|
|
2174
2303
|
} else if (!isWhitespace(c)) {
|
|
2175
2304
|
this.state = State.BeforeAttributeName;
|
|
2176
2305
|
this.stateBeforeAttributeName(c);
|
|
@@ -2238,12 +2367,54 @@ var Tokenizer = class {
|
|
|
2238
2367
|
this.startEntity();
|
|
2239
2368
|
}
|
|
2240
2369
|
}
|
|
2370
|
+
/**
|
|
2371
|
+
* Distinguish between CDATA, declarations, HTML comments, and HTML bogus
|
|
2372
|
+
* comments after `<!`.
|
|
2373
|
+
*
|
|
2374
|
+
* In HTML mode, only real comments and doctypes stay on declaration paths;
|
|
2375
|
+
* everything else becomes a bogus comment terminated by the next `>`.
|
|
2376
|
+
* @param c Current character code point.
|
|
2377
|
+
*/
|
|
2241
2378
|
stateBeforeDeclaration(c) {
|
|
2242
2379
|
if (c === CharCodes2.OpeningSquareBracket) {
|
|
2243
2380
|
this.state = State.CDATASequence;
|
|
2244
2381
|
this.sequenceIndex = 0;
|
|
2245
|
-
} else {
|
|
2382
|
+
} else if (this.xmlMode) {
|
|
2246
2383
|
this.state = c === CharCodes2.Dash ? State.BeforeComment : State.InDeclaration;
|
|
2384
|
+
} else if ((c | 32) === Sequences.Doctype[0]) {
|
|
2385
|
+
this.state = State.DeclarationSequence;
|
|
2386
|
+
this.currentSequence = Sequences.Doctype;
|
|
2387
|
+
this.sequenceIndex = 1;
|
|
2388
|
+
} else if (c === CharCodes2.Gt) {
|
|
2389
|
+
this.cbs.oncomment(this.sectionStart, this.index, 0);
|
|
2390
|
+
this.state = State.Text;
|
|
2391
|
+
this.sectionStart = this.index + 1;
|
|
2392
|
+
} else if (c === CharCodes2.Dash) {
|
|
2393
|
+
this.state = State.BeforeComment;
|
|
2394
|
+
} else {
|
|
2395
|
+
this.state = State.InSpecialComment;
|
|
2396
|
+
}
|
|
2397
|
+
}
|
|
2398
|
+
/**
|
|
2399
|
+
* Continue matching `doctype` after `<!d`.
|
|
2400
|
+
*
|
|
2401
|
+
* A full `doctype` match stays on the declaration path; any other name falls
|
|
2402
|
+
* back to an HTML bogus comment, which matches browser behavior for
|
|
2403
|
+
* non-doctype `<!...>` constructs.
|
|
2404
|
+
* @param c Current character code point.
|
|
2405
|
+
*/
|
|
2406
|
+
stateDeclarationSequence(c) {
|
|
2407
|
+
if (this.sequenceIndex === this.currentSequence.length) {
|
|
2408
|
+
this.state = State.InDeclaration;
|
|
2409
|
+
this.stateInDeclaration(c);
|
|
2410
|
+
} else if ((c | 32) === this.currentSequence[this.sequenceIndex]) {
|
|
2411
|
+
this.sequenceIndex += 1;
|
|
2412
|
+
} else if (c === CharCodes2.Gt) {
|
|
2413
|
+
this.cbs.oncomment(this.sectionStart, this.index, 0);
|
|
2414
|
+
this.state = State.Text;
|
|
2415
|
+
this.sectionStart = this.index + 1;
|
|
2416
|
+
} else {
|
|
2417
|
+
this.state = State.InSpecialComment;
|
|
2247
2418
|
}
|
|
2248
2419
|
}
|
|
2249
2420
|
stateInDeclaration(c) {
|
|
@@ -2253,21 +2424,39 @@ var Tokenizer = class {
|
|
|
2253
2424
|
this.sectionStart = this.index + 1;
|
|
2254
2425
|
}
|
|
2255
2426
|
}
|
|
2427
|
+
/**
|
|
2428
|
+
* XML processing instructions (`<?...?>`).
|
|
2429
|
+
*
|
|
2430
|
+
* In HTML mode `<?` is routed to `InSpecialComment` instead, so this
|
|
2431
|
+
* state is only reachable in XML mode.
|
|
2432
|
+
* @param c Current character code point.
|
|
2433
|
+
*/
|
|
2256
2434
|
stateInProcessingInstruction(c) {
|
|
2257
|
-
if (c === CharCodes2.
|
|
2258
|
-
this.
|
|
2435
|
+
if (c === CharCodes2.Questionmark) {
|
|
2436
|
+
this.sequenceIndex = 1;
|
|
2437
|
+
} else if (c === CharCodes2.Gt && this.sequenceIndex === 1) {
|
|
2438
|
+
this.cbs.onprocessinginstruction(this.sectionStart, this.index - 1);
|
|
2439
|
+
this.sequenceIndex = 0;
|
|
2259
2440
|
this.state = State.Text;
|
|
2260
2441
|
this.sectionStart = this.index + 1;
|
|
2442
|
+
} else {
|
|
2443
|
+
this.sequenceIndex = Number(this.fastForwardTo(CharCodes2.Questionmark));
|
|
2261
2444
|
}
|
|
2262
2445
|
}
|
|
2263
2446
|
stateBeforeComment(c) {
|
|
2264
2447
|
if (c === CharCodes2.Dash) {
|
|
2265
2448
|
this.state = State.InCommentLike;
|
|
2266
2449
|
this.currentSequence = Sequences.CommentEnd;
|
|
2267
|
-
this.sequenceIndex =
|
|
2450
|
+
this.sequenceIndex = 0;
|
|
2268
2451
|
this.sectionStart = this.index + 1;
|
|
2269
|
-
} else {
|
|
2452
|
+
} else if (this.xmlMode) {
|
|
2270
2453
|
this.state = State.InDeclaration;
|
|
2454
|
+
} else if (c === CharCodes2.Gt) {
|
|
2455
|
+
this.cbs.oncomment(this.sectionStart, this.index, 0);
|
|
2456
|
+
this.state = State.Text;
|
|
2457
|
+
this.sectionStart = this.index + 1;
|
|
2458
|
+
} else {
|
|
2459
|
+
this.state = State.InSpecialComment;
|
|
2271
2460
|
}
|
|
2272
2461
|
}
|
|
2273
2462
|
stateInSpecialComment(c) {
|
|
@@ -2277,38 +2466,6 @@ var Tokenizer = class {
|
|
|
2277
2466
|
this.sectionStart = this.index + 1;
|
|
2278
2467
|
}
|
|
2279
2468
|
}
|
|
2280
|
-
stateBeforeSpecialS(c) {
|
|
2281
|
-
const lower = c | 32;
|
|
2282
|
-
if (lower === Sequences.ScriptEnd[3]) {
|
|
2283
|
-
this.startSpecial(Sequences.ScriptEnd, 4);
|
|
2284
|
-
} else if (lower === Sequences.StyleEnd[3]) {
|
|
2285
|
-
this.startSpecial(Sequences.StyleEnd, 4);
|
|
2286
|
-
} else {
|
|
2287
|
-
this.state = State.InTagName;
|
|
2288
|
-
this.stateInTagName(c);
|
|
2289
|
-
}
|
|
2290
|
-
}
|
|
2291
|
-
stateBeforeSpecialT(c) {
|
|
2292
|
-
const lower = c | 32;
|
|
2293
|
-
switch (lower) {
|
|
2294
|
-
case Sequences.TitleEnd[3]: {
|
|
2295
|
-
this.startSpecial(Sequences.TitleEnd, 4);
|
|
2296
|
-
break;
|
|
2297
|
-
}
|
|
2298
|
-
case Sequences.TextareaEnd[3]: {
|
|
2299
|
-
this.startSpecial(Sequences.TextareaEnd, 4);
|
|
2300
|
-
break;
|
|
2301
|
-
}
|
|
2302
|
-
case Sequences.XmpEnd[3]: {
|
|
2303
|
-
this.startSpecial(Sequences.XmpEnd, 4);
|
|
2304
|
-
break;
|
|
2305
|
-
}
|
|
2306
|
-
default: {
|
|
2307
|
-
this.state = State.InTagName;
|
|
2308
|
-
this.stateInTagName(c);
|
|
2309
|
-
}
|
|
2310
|
-
}
|
|
2311
|
-
}
|
|
2312
2469
|
startEntity() {
|
|
2313
2470
|
this.baseState = this.state;
|
|
2314
2471
|
this.state = State.InEntity;
|
|
@@ -2337,7 +2494,7 @@ var Tokenizer = class {
|
|
|
2337
2494
|
*/
|
|
2338
2495
|
cleanup() {
|
|
2339
2496
|
if (this.running && this.sectionStart !== this.index) {
|
|
2340
|
-
if (this.state === State.Text || this.state === State.InSpecialTag && this.sequenceIndex === 0) {
|
|
2497
|
+
if (this.state === State.Text || this.state === State.InPlainText || this.state === State.InSpecialTag && this.sequenceIndex === 0) {
|
|
2341
2498
|
this.cbs.ontext(this.sectionStart, this.index);
|
|
2342
2499
|
this.sectionStart = this.index;
|
|
2343
2500
|
} else if (this.state === State.InAttributeValueDq || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueNq) {
|
|
@@ -2362,6 +2519,10 @@ var Tokenizer = class {
|
|
|
2362
2519
|
this.stateText(c);
|
|
2363
2520
|
break;
|
|
2364
2521
|
}
|
|
2522
|
+
case State.InPlainText: {
|
|
2523
|
+
this.index = this.buffer.length + this.offset - 1;
|
|
2524
|
+
break;
|
|
2525
|
+
}
|
|
2365
2526
|
case State.SpecialStartSequence: {
|
|
2366
2527
|
this.stateSpecialStartSequence(c);
|
|
2367
2528
|
break;
|
|
@@ -2374,6 +2535,10 @@ var Tokenizer = class {
|
|
|
2374
2535
|
this.stateCDATASequence(c);
|
|
2375
2536
|
break;
|
|
2376
2537
|
}
|
|
2538
|
+
case State.DeclarationSequence: {
|
|
2539
|
+
this.stateDeclarationSequence(c);
|
|
2540
|
+
break;
|
|
2541
|
+
}
|
|
2377
2542
|
case State.InAttributeValueDq: {
|
|
2378
2543
|
this.stateInAttributeValueDoubleQuotes(c);
|
|
2379
2544
|
break;
|
|
@@ -2426,14 +2591,6 @@ var Tokenizer = class {
|
|
|
2426
2591
|
this.stateAfterClosingTagName(c);
|
|
2427
2592
|
break;
|
|
2428
2593
|
}
|
|
2429
|
-
case State.BeforeSpecialS: {
|
|
2430
|
-
this.stateBeforeSpecialS(c);
|
|
2431
|
-
break;
|
|
2432
|
-
}
|
|
2433
|
-
case State.BeforeSpecialT: {
|
|
2434
|
-
this.stateBeforeSpecialT(c);
|
|
2435
|
-
break;
|
|
2436
|
-
}
|
|
2437
2594
|
case State.InAttributeValueNq: {
|
|
2438
2595
|
this.stateInAttributeValueNoQuotes(c);
|
|
2439
2596
|
break;
|
|
@@ -2475,43 +2632,110 @@ var Tokenizer = class {
|
|
|
2475
2632
|
this.handleTrailingData();
|
|
2476
2633
|
this.cbs.onend();
|
|
2477
2634
|
}
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
if (this.sectionStart >= endIndex) {
|
|
2482
|
-
return;
|
|
2635
|
+
handleTrailingCommentLikeData(endIndex) {
|
|
2636
|
+
if (this.state !== State.InCommentLike) {
|
|
2637
|
+
return false;
|
|
2483
2638
|
}
|
|
2484
|
-
if (this.
|
|
2485
|
-
if (this.
|
|
2486
|
-
|
|
2639
|
+
if (this.currentSequence === Sequences.CdataEnd) {
|
|
2640
|
+
if (this.xmlMode) {
|
|
2641
|
+
if (this.sectionStart < endIndex) {
|
|
2642
|
+
this.cbs.oncdata(this.sectionStart, endIndex, 0);
|
|
2643
|
+
}
|
|
2487
2644
|
} else {
|
|
2488
|
-
this.
|
|
2645
|
+
const cdataStart = this.sectionStart - Sequences.Cdata.length - 1;
|
|
2646
|
+
this.cbs.oncomment(cdataStart, endIndex, 0);
|
|
2489
2647
|
}
|
|
2490
|
-
} else if (this.state === State.InTagName || this.state === State.BeforeAttributeName || this.state === State.BeforeAttributeValue || this.state === State.AfterAttributeName || this.state === State.InAttributeName || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueDq || this.state === State.InAttributeValueNq || this.state === State.InClosingTagName) {
|
|
2491
2648
|
} else {
|
|
2492
|
-
this.
|
|
2649
|
+
const offset = this.xmlMode ? 0 : Math.min(this.sequenceIndex, Sequences.CommentEnd.length - 1);
|
|
2650
|
+
this.cbs.oncomment(this.sectionStart, endIndex, offset);
|
|
2493
2651
|
}
|
|
2652
|
+
return true;
|
|
2494
2653
|
}
|
|
2495
|
-
|
|
2496
|
-
if (this.
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2654
|
+
handleTrailingMarkupDeclaration(endIndex) {
|
|
2655
|
+
if (this.xmlMode) {
|
|
2656
|
+
switch (this.state) {
|
|
2657
|
+
case State.InSpecialComment:
|
|
2658
|
+
case State.BeforeComment:
|
|
2659
|
+
case State.CDATASequence:
|
|
2660
|
+
case State.DeclarationSequence:
|
|
2661
|
+
case State.InDeclaration: {
|
|
2662
|
+
this.cbs.ontext(this.sectionStart, endIndex);
|
|
2663
|
+
return true;
|
|
2664
|
+
}
|
|
2665
|
+
default: {
|
|
2666
|
+
return false;
|
|
2667
|
+
}
|
|
2506
2668
|
}
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2669
|
+
}
|
|
2670
|
+
switch (this.state) {
|
|
2671
|
+
case State.BeforeDeclaration:
|
|
2672
|
+
case State.InSpecialComment:
|
|
2673
|
+
case State.BeforeComment:
|
|
2674
|
+
case State.CDATASequence: {
|
|
2675
|
+
this.cbs.oncomment(this.sectionStart, endIndex, 0);
|
|
2676
|
+
return true;
|
|
2677
|
+
}
|
|
2678
|
+
case State.DeclarationSequence: {
|
|
2679
|
+
if (this.sequenceIndex !== Sequences.Doctype.length) {
|
|
2680
|
+
this.cbs.oncomment(this.sectionStart, endIndex, 0);
|
|
2681
|
+
}
|
|
2682
|
+
return true;
|
|
2683
|
+
}
|
|
2684
|
+
case State.InDeclaration: {
|
|
2685
|
+
return true;
|
|
2686
|
+
}
|
|
2687
|
+
default: {
|
|
2688
|
+
return false;
|
|
2689
|
+
}
|
|
2690
|
+
}
|
|
2691
|
+
}
|
|
2692
|
+
/** Handle any trailing data. */
|
|
2693
|
+
handleTrailingData() {
|
|
2694
|
+
const endIndex = this.buffer.length + this.offset;
|
|
2695
|
+
if (this.handleTrailingCommentLikeData(endIndex) || this.handleTrailingMarkupDeclaration(endIndex)) {
|
|
2696
|
+
return;
|
|
2697
|
+
}
|
|
2698
|
+
if (this.sectionStart >= endIndex) {
|
|
2699
|
+
return;
|
|
2700
|
+
}
|
|
2701
|
+
switch (this.state) {
|
|
2702
|
+
case State.InTagName:
|
|
2703
|
+
case State.BeforeAttributeName:
|
|
2704
|
+
case State.BeforeAttributeValue:
|
|
2705
|
+
case State.AfterAttributeName:
|
|
2706
|
+
case State.InAttributeName:
|
|
2707
|
+
case State.InAttributeValueSq:
|
|
2708
|
+
case State.InAttributeValueDq:
|
|
2709
|
+
case State.InAttributeValueNq:
|
|
2710
|
+
case State.InClosingTagName: {
|
|
2711
|
+
break;
|
|
2712
|
+
}
|
|
2713
|
+
default: {
|
|
2714
|
+
this.cbs.ontext(this.sectionStart, endIndex);
|
|
2715
|
+
}
|
|
2716
|
+
}
|
|
2717
|
+
}
|
|
2718
|
+
emitCodePoint(cp, consumed) {
|
|
2719
|
+
if (this.baseState !== State.Text && this.baseState !== State.InSpecialTag) {
|
|
2720
|
+
if (this.sectionStart < this.entityStart) {
|
|
2721
|
+
this.cbs.onattribdata(this.sectionStart, this.entityStart);
|
|
2722
|
+
}
|
|
2723
|
+
this.sectionStart = this.entityStart + consumed;
|
|
2724
|
+
this.index = this.sectionStart - 1;
|
|
2725
|
+
this.cbs.onattribentity(cp);
|
|
2726
|
+
} else {
|
|
2727
|
+
if (this.sectionStart < this.entityStart) {
|
|
2728
|
+
this.cbs.ontext(this.sectionStart, this.entityStart);
|
|
2729
|
+
}
|
|
2730
|
+
this.sectionStart = this.entityStart + consumed;
|
|
2731
|
+
this.index = this.sectionStart - 1;
|
|
2732
|
+
this.cbs.ontextentity(cp, this.sectionStart);
|
|
2510
2733
|
}
|
|
2511
2734
|
}
|
|
2512
2735
|
};
|
|
2513
2736
|
|
|
2514
|
-
// node_modules/.pnpm/htmlparser2@
|
|
2737
|
+
// node_modules/.pnpm/htmlparser2@12.0.0/node_modules/htmlparser2/dist/Parser.js
|
|
2738
|
+
var { fromCodePoint } = String;
|
|
2515
2739
|
var formTags = /* @__PURE__ */ new Set([
|
|
2516
2740
|
"input",
|
|
2517
2741
|
"option",
|
|
@@ -2522,6 +2746,7 @@ var formTags = /* @__PURE__ */ new Set([
|
|
|
2522
2746
|
"textarea"
|
|
2523
2747
|
]);
|
|
2524
2748
|
var pTag = /* @__PURE__ */ new Set(["p"]);
|
|
2749
|
+
var headingTags = /* @__PURE__ */ new Set(["h1", "h2", "h3", "h4", "h5", "h6", "p"]);
|
|
2525
2750
|
var tableSectionTags = /* @__PURE__ */ new Set(["thead", "tbody"]);
|
|
2526
2751
|
var ddtTags = /* @__PURE__ */ new Set(["dd", "dt"]);
|
|
2527
2752
|
var rtpTags = /* @__PURE__ */ new Set(["rt", "rp"]);
|
|
@@ -2530,14 +2755,15 @@ var openImpliesClose = /* @__PURE__ */ new Map([
|
|
|
2530
2755
|
["th", /* @__PURE__ */ new Set(["th"])],
|
|
2531
2756
|
["td", /* @__PURE__ */ new Set(["thead", "th", "td"])],
|
|
2532
2757
|
["body", /* @__PURE__ */ new Set(["head", "link", "script"])],
|
|
2758
|
+
["a", /* @__PURE__ */ new Set(["a"])],
|
|
2533
2759
|
["li", /* @__PURE__ */ new Set(["li"])],
|
|
2534
2760
|
["p", pTag],
|
|
2535
|
-
["h1",
|
|
2536
|
-
["h2",
|
|
2537
|
-
["h3",
|
|
2538
|
-
["h4",
|
|
2539
|
-
["h5",
|
|
2540
|
-
["h6",
|
|
2761
|
+
["h1", headingTags],
|
|
2762
|
+
["h2", headingTags],
|
|
2763
|
+
["h3", headingTags],
|
|
2764
|
+
["h4", headingTags],
|
|
2765
|
+
["h5", headingTags],
|
|
2766
|
+
["h6", headingTags],
|
|
2541
2767
|
["select", formTags],
|
|
2542
2768
|
["input", formTags],
|
|
2543
2769
|
["output", formTags],
|
|
@@ -2574,6 +2800,7 @@ var openImpliesClose = /* @__PURE__ */ new Map([
|
|
|
2574
2800
|
["tbody", tableSectionTags],
|
|
2575
2801
|
["tfoot", tableSectionTags]
|
|
2576
2802
|
]);
|
|
2803
|
+
var DOCUMENT_TYPE = "doctype";
|
|
2577
2804
|
var voidElements = /* @__PURE__ */ new Set([
|
|
2578
2805
|
"area",
|
|
2579
2806
|
"base",
|
|
@@ -2603,98 +2830,201 @@ var htmlIntegrationElements = /* @__PURE__ */ new Set([
|
|
|
2603
2830
|
"ms",
|
|
2604
2831
|
"mtext",
|
|
2605
2832
|
"annotation-xml",
|
|
2606
|
-
"
|
|
2833
|
+
"foreignObject",
|
|
2607
2834
|
"desc",
|
|
2608
2835
|
"title"
|
|
2609
2836
|
]);
|
|
2837
|
+
var svgTagNameAdjustments = /* @__PURE__ */ new Map([
|
|
2838
|
+
["altglyph", "altGlyph"],
|
|
2839
|
+
["altglyphdef", "altGlyphDef"],
|
|
2840
|
+
["altglyphitem", "altGlyphItem"],
|
|
2841
|
+
["animatecolor", "animateColor"],
|
|
2842
|
+
["animatemotion", "animateMotion"],
|
|
2843
|
+
["animatetransform", "animateTransform"],
|
|
2844
|
+
["clippath", "clipPath"],
|
|
2845
|
+
["feblend", "feBlend"],
|
|
2846
|
+
["fecolormatrix", "feColorMatrix"],
|
|
2847
|
+
["fecomponenttransfer", "feComponentTransfer"],
|
|
2848
|
+
["fecomposite", "feComposite"],
|
|
2849
|
+
["feconvolvematrix", "feConvolveMatrix"],
|
|
2850
|
+
["fediffuselighting", "feDiffuseLighting"],
|
|
2851
|
+
["fedisplacementmap", "feDisplacementMap"],
|
|
2852
|
+
["fedistantlight", "feDistantLight"],
|
|
2853
|
+
["fedropshadow", "feDropShadow"],
|
|
2854
|
+
["feflood", "feFlood"],
|
|
2855
|
+
["fefunca", "feFuncA"],
|
|
2856
|
+
["fefuncb", "feFuncB"],
|
|
2857
|
+
["fefuncg", "feFuncG"],
|
|
2858
|
+
["fefuncr", "feFuncR"],
|
|
2859
|
+
["fegaussianblur", "feGaussianBlur"],
|
|
2860
|
+
["feimage", "feImage"],
|
|
2861
|
+
["femerge", "feMerge"],
|
|
2862
|
+
["femergenode", "feMergeNode"],
|
|
2863
|
+
["femorphology", "feMorphology"],
|
|
2864
|
+
["feoffset", "feOffset"],
|
|
2865
|
+
["fepointlight", "fePointLight"],
|
|
2866
|
+
["fespecularlighting", "feSpecularLighting"],
|
|
2867
|
+
["fespotlight", "feSpotLight"],
|
|
2868
|
+
["fetile", "feTile"],
|
|
2869
|
+
["feturbulence", "feTurbulence"],
|
|
2870
|
+
["foreignobject", "foreignObject"],
|
|
2871
|
+
["glyphref", "glyphRef"],
|
|
2872
|
+
["lineargradient", "linearGradient"],
|
|
2873
|
+
["radialgradient", "radialGradient"],
|
|
2874
|
+
["textpath", "textPath"]
|
|
2875
|
+
]);
|
|
2876
|
+
var ForeignContext;
|
|
2877
|
+
(function(ForeignContext2) {
|
|
2878
|
+
ForeignContext2[ForeignContext2["None"] = 0] = "None";
|
|
2879
|
+
ForeignContext2[ForeignContext2["Svg"] = 1] = "Svg";
|
|
2880
|
+
ForeignContext2[ForeignContext2["MathML"] = 2] = "MathML";
|
|
2881
|
+
})(ForeignContext || (ForeignContext = {}));
|
|
2610
2882
|
var reNameEnd = /\s|\//;
|
|
2611
2883
|
var Parser = class {
|
|
2884
|
+
options;
|
|
2885
|
+
/** The start index of the last event. */
|
|
2886
|
+
startIndex = 0;
|
|
2887
|
+
/** The end index of the last event. */
|
|
2888
|
+
endIndex = 0;
|
|
2889
|
+
/**
|
|
2890
|
+
* Store the start index of the current open tag,
|
|
2891
|
+
* so we can update the start index for attributes.
|
|
2892
|
+
*/
|
|
2893
|
+
openTagStart = 0;
|
|
2894
|
+
tagname = "";
|
|
2895
|
+
attribname = "";
|
|
2896
|
+
attribvalue = "";
|
|
2897
|
+
attribs = null;
|
|
2898
|
+
stack = [];
|
|
2899
|
+
foreignContext;
|
|
2900
|
+
cbs;
|
|
2901
|
+
lowerCaseTagNames;
|
|
2902
|
+
lowerCaseAttributeNames;
|
|
2903
|
+
recognizeSelfClosing;
|
|
2904
|
+
/** We are parsing HTML. Inverse of the `xmlMode` option. */
|
|
2905
|
+
htmlMode;
|
|
2906
|
+
tokenizer;
|
|
2907
|
+
buffers = [];
|
|
2908
|
+
bufferOffset = 0;
|
|
2909
|
+
/** The index of the last written buffer. Used when resuming after a `pause()`. */
|
|
2910
|
+
writeIndex = 0;
|
|
2911
|
+
/** Indicates whether the parser has finished running / `.end` has been called. */
|
|
2912
|
+
ended = false;
|
|
2612
2913
|
constructor(cbs, options = {}) {
|
|
2613
|
-
var _a3, _b, _c, _d, _e, _f;
|
|
2614
2914
|
this.options = options;
|
|
2615
|
-
this.
|
|
2616
|
-
this.endIndex = 0;
|
|
2617
|
-
this.openTagStart = 0;
|
|
2618
|
-
this.tagname = "";
|
|
2619
|
-
this.attribname = "";
|
|
2620
|
-
this.attribvalue = "";
|
|
2621
|
-
this.attribs = null;
|
|
2622
|
-
this.stack = [];
|
|
2623
|
-
this.buffers = [];
|
|
2624
|
-
this.bufferOffset = 0;
|
|
2625
|
-
this.writeIndex = 0;
|
|
2626
|
-
this.ended = false;
|
|
2627
|
-
this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};
|
|
2915
|
+
this.cbs = cbs ?? {};
|
|
2628
2916
|
this.htmlMode = !this.options.xmlMode;
|
|
2629
|
-
this.lowerCaseTagNames =
|
|
2630
|
-
this.lowerCaseAttributeNames =
|
|
2631
|
-
this.recognizeSelfClosing =
|
|
2632
|
-
this.tokenizer = new (
|
|
2633
|
-
this.foreignContext = [
|
|
2634
|
-
|
|
2917
|
+
this.lowerCaseTagNames = options.lowerCaseTags ?? this.htmlMode;
|
|
2918
|
+
this.lowerCaseAttributeNames = options.lowerCaseAttributeNames ?? this.htmlMode;
|
|
2919
|
+
this.recognizeSelfClosing = options.recognizeSelfClosing ?? !this.htmlMode;
|
|
2920
|
+
this.tokenizer = new (options.Tokenizer ?? Tokenizer)(this.options, this);
|
|
2921
|
+
this.foreignContext = [ForeignContext.None];
|
|
2922
|
+
this.cbs.onparserinit?.(this);
|
|
2635
2923
|
}
|
|
2636
2924
|
// Tokenizer event handlers
|
|
2637
|
-
/**
|
|
2925
|
+
/**
|
|
2926
|
+
* @param start Start index for the current parser event.
|
|
2927
|
+
* @param endIndex End index for the current parser event.
|
|
2928
|
+
* @internal
|
|
2929
|
+
*/
|
|
2638
2930
|
ontext(start, endIndex) {
|
|
2639
|
-
var _a3, _b;
|
|
2640
2931
|
const data = this.getSlice(start, endIndex);
|
|
2641
2932
|
this.endIndex = endIndex - 1;
|
|
2642
|
-
|
|
2933
|
+
this.cbs.ontext?.(data);
|
|
2643
2934
|
this.startIndex = endIndex;
|
|
2644
2935
|
}
|
|
2645
|
-
/**
|
|
2936
|
+
/**
|
|
2937
|
+
* @param cp Current Unicode code point.
|
|
2938
|
+
* @param endIndex End index for the current parser event.
|
|
2939
|
+
* @internal
|
|
2940
|
+
*/
|
|
2646
2941
|
ontextentity(cp, endIndex) {
|
|
2647
|
-
var _a3, _b;
|
|
2648
2942
|
this.endIndex = endIndex - 1;
|
|
2649
|
-
|
|
2943
|
+
this.cbs.ontext?.(fromCodePoint(cp));
|
|
2650
2944
|
this.startIndex = endIndex;
|
|
2651
2945
|
}
|
|
2946
|
+
/** @internal */
|
|
2947
|
+
isInForeignContext() {
|
|
2948
|
+
return this.foreignContext[0] !== ForeignContext.None;
|
|
2949
|
+
}
|
|
2652
2950
|
/**
|
|
2653
2951
|
* Checks if the current tag is a void element. Override this if you want
|
|
2654
2952
|
* to specify your own additional void elements.
|
|
2953
|
+
* @param name Name of the pseudo selector.
|
|
2655
2954
|
*/
|
|
2656
2955
|
isVoidElement(name) {
|
|
2657
2956
|
return this.htmlMode && voidElements.has(name);
|
|
2658
2957
|
}
|
|
2659
|
-
/**
|
|
2958
|
+
/**
|
|
2959
|
+
* Read a tag name from the buffer.
|
|
2960
|
+
*
|
|
2961
|
+
* When `lowerCaseTagNames` is enabled (the default in HTML mode), the name
|
|
2962
|
+
* is lowercased and may be adjusted for SVG casing or the `image` → `img`
|
|
2963
|
+
* alias.
|
|
2964
|
+
* @param start Start index of the tag name in the buffer.
|
|
2965
|
+
* @param endIndex End index of the tag name in the buffer.
|
|
2966
|
+
*/
|
|
2967
|
+
readTagName(start, endIndex) {
|
|
2968
|
+
const name = this.lowerCaseTagNames ? this.getSlice(start, endIndex).toLowerCase() : this.getSlice(start, endIndex);
|
|
2969
|
+
if (!(this.lowerCaseTagNames && this.htmlMode)) {
|
|
2970
|
+
return name;
|
|
2971
|
+
}
|
|
2972
|
+
if (this.foreignContext[0] === ForeignContext.Svg) {
|
|
2973
|
+
return svgTagNameAdjustments.get(name) ?? name;
|
|
2974
|
+
}
|
|
2975
|
+
if (this.foreignContext.length > 1) {
|
|
2976
|
+
const adjusted = svgTagNameAdjustments.get(name);
|
|
2977
|
+
if (adjusted !== void 0 && this.stack.includes(adjusted)) {
|
|
2978
|
+
return adjusted;
|
|
2979
|
+
}
|
|
2980
|
+
}
|
|
2981
|
+
if (!this.isInForeignContext()) {
|
|
2982
|
+
return name === "image" ? "img" : name;
|
|
2983
|
+
}
|
|
2984
|
+
return name;
|
|
2985
|
+
}
|
|
2986
|
+
/**
|
|
2987
|
+
* @param start Start index for the current parser event.
|
|
2988
|
+
* @param endIndex End index for the current parser event.
|
|
2989
|
+
* @internal
|
|
2990
|
+
*/
|
|
2660
2991
|
onopentagname(start, endIndex) {
|
|
2661
2992
|
this.endIndex = endIndex;
|
|
2662
|
-
|
|
2663
|
-
if (this.lowerCaseTagNames) {
|
|
2664
|
-
name = name.toLowerCase();
|
|
2665
|
-
}
|
|
2666
|
-
this.emitOpenTag(name);
|
|
2993
|
+
this.emitOpenTag(this.readTagName(start, endIndex));
|
|
2667
2994
|
}
|
|
2668
2995
|
emitOpenTag(name) {
|
|
2669
|
-
var _a3, _b, _c, _d;
|
|
2670
2996
|
this.openTagStart = this.startIndex;
|
|
2671
2997
|
this.tagname = name;
|
|
2998
|
+
if (this.htmlMode && name === "form" && this.stack.includes("form")) {
|
|
2999
|
+
this.tagname = "";
|
|
3000
|
+
return;
|
|
3001
|
+
}
|
|
2672
3002
|
const impliesClose = this.htmlMode && openImpliesClose.get(name);
|
|
2673
3003
|
if (impliesClose) {
|
|
2674
3004
|
while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {
|
|
2675
|
-
|
|
2676
|
-
(_b = (_a3 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a3, element, true);
|
|
3005
|
+
this.popElement(true);
|
|
2677
3006
|
}
|
|
2678
3007
|
}
|
|
2679
3008
|
if (!this.isVoidElement(name)) {
|
|
2680
3009
|
this.stack.unshift(name);
|
|
2681
3010
|
if (this.htmlMode) {
|
|
2682
|
-
if (
|
|
2683
|
-
this.foreignContext.unshift(
|
|
3011
|
+
if (name === "svg") {
|
|
3012
|
+
this.foreignContext.unshift(ForeignContext.Svg);
|
|
3013
|
+
} else if (name === "math") {
|
|
3014
|
+
this.foreignContext.unshift(ForeignContext.MathML);
|
|
2684
3015
|
} else if (htmlIntegrationElements.has(name)) {
|
|
2685
|
-
this.foreignContext.unshift(
|
|
3016
|
+
this.foreignContext.unshift(ForeignContext.None);
|
|
2686
3017
|
}
|
|
2687
3018
|
}
|
|
2688
3019
|
}
|
|
2689
|
-
|
|
3020
|
+
this.cbs.onopentagname?.(name);
|
|
2690
3021
|
if (this.cbs.onopentag)
|
|
2691
3022
|
this.attribs = {};
|
|
2692
3023
|
}
|
|
2693
3024
|
endOpenTag(isImplied) {
|
|
2694
|
-
var _a3, _b;
|
|
2695
3025
|
this.startIndex = this.openTagStart;
|
|
2696
3026
|
if (this.attribs) {
|
|
2697
|
-
|
|
3027
|
+
this.cbs.onopentag?.(this.tagname, this.attribs, isImplied);
|
|
2698
3028
|
this.attribs = null;
|
|
2699
3029
|
}
|
|
2700
3030
|
if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {
|
|
@@ -2702,80 +3032,107 @@ var Parser = class {
|
|
|
2702
3032
|
}
|
|
2703
3033
|
this.tagname = "";
|
|
2704
3034
|
}
|
|
2705
|
-
/**
|
|
3035
|
+
/**
|
|
3036
|
+
* @param endIndex End index for the current parser event.
|
|
3037
|
+
* @internal
|
|
3038
|
+
*/
|
|
2706
3039
|
onopentagend(endIndex) {
|
|
2707
3040
|
this.endIndex = endIndex;
|
|
2708
3041
|
this.endOpenTag(false);
|
|
2709
3042
|
this.startIndex = endIndex + 1;
|
|
2710
3043
|
}
|
|
2711
|
-
/**
|
|
3044
|
+
/**
|
|
3045
|
+
* @param start Start index for the current parser event.
|
|
3046
|
+
* @param endIndex End index for the current parser event.
|
|
3047
|
+
* @internal
|
|
3048
|
+
*/
|
|
2712
3049
|
onclosetag(start, endIndex) {
|
|
2713
|
-
var _a3, _b, _c, _d, _e, _f, _g, _h;
|
|
2714
3050
|
this.endIndex = endIndex;
|
|
2715
|
-
|
|
2716
|
-
if (this.lowerCaseTagNames) {
|
|
2717
|
-
name = name.toLowerCase();
|
|
2718
|
-
}
|
|
2719
|
-
if (this.htmlMode && (foreignContextElements.has(name) || htmlIntegrationElements.has(name))) {
|
|
2720
|
-
this.foreignContext.shift();
|
|
2721
|
-
}
|
|
3051
|
+
const name = this.readTagName(start, endIndex);
|
|
2722
3052
|
if (!this.isVoidElement(name)) {
|
|
2723
3053
|
const pos = this.stack.indexOf(name);
|
|
2724
3054
|
if (pos !== -1) {
|
|
2725
|
-
for (let index = 0; index
|
|
2726
|
-
|
|
2727
|
-
(_b = (_a3 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a3, element, index !== pos);
|
|
3055
|
+
for (let index = 0; index < pos; index++) {
|
|
3056
|
+
this.popElement(true);
|
|
2728
3057
|
}
|
|
3058
|
+
this.popElement(false);
|
|
2729
3059
|
} else if (this.htmlMode && name === "p") {
|
|
2730
3060
|
this.emitOpenTag("p");
|
|
2731
3061
|
this.closeCurrentTag(true);
|
|
2732
3062
|
}
|
|
2733
3063
|
} else if (this.htmlMode && name === "br") {
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
3064
|
+
this.cbs.onopentagname?.("br");
|
|
3065
|
+
this.cbs.onopentag?.("br", {}, true);
|
|
3066
|
+
this.cbs.onclosetag?.("br", false);
|
|
2737
3067
|
}
|
|
2738
3068
|
this.startIndex = endIndex + 1;
|
|
2739
3069
|
}
|
|
2740
|
-
/**
|
|
3070
|
+
/**
|
|
3071
|
+
* @param endIndex End index for the current parser event.
|
|
3072
|
+
* @internal
|
|
3073
|
+
*/
|
|
2741
3074
|
onselfclosingtag(endIndex) {
|
|
2742
3075
|
this.endIndex = endIndex;
|
|
2743
|
-
if (this.recognizeSelfClosing || this.
|
|
3076
|
+
if (this.recognizeSelfClosing || this.isInForeignContext()) {
|
|
2744
3077
|
this.closeCurrentTag(false);
|
|
2745
3078
|
this.startIndex = endIndex + 1;
|
|
2746
3079
|
} else {
|
|
2747
3080
|
this.onopentagend(endIndex);
|
|
2748
3081
|
}
|
|
2749
3082
|
}
|
|
3083
|
+
/**
|
|
3084
|
+
* Pop the top element off the stack, emit a close event, and maintain
|
|
3085
|
+
* the foreign context stack.
|
|
3086
|
+
* @param implied Whether this close is implied (not from an explicit end tag).
|
|
3087
|
+
*/
|
|
3088
|
+
popElement(implied) {
|
|
3089
|
+
const element = this.stack.shift();
|
|
3090
|
+
if (this.htmlMode && (foreignContextElements.has(element) || htmlIntegrationElements.has(element))) {
|
|
3091
|
+
this.foreignContext.shift();
|
|
3092
|
+
}
|
|
3093
|
+
this.cbs.onclosetag?.(element, implied);
|
|
3094
|
+
}
|
|
2750
3095
|
closeCurrentTag(isOpenImplied) {
|
|
2751
|
-
var _a3, _b;
|
|
2752
3096
|
const name = this.tagname;
|
|
2753
3097
|
this.endOpenTag(isOpenImplied);
|
|
2754
3098
|
if (this.stack[0] === name) {
|
|
2755
|
-
|
|
2756
|
-
this.stack.shift();
|
|
3099
|
+
this.popElement(!isOpenImplied);
|
|
2757
3100
|
}
|
|
2758
3101
|
}
|
|
2759
|
-
/**
|
|
3102
|
+
/**
|
|
3103
|
+
* @param start Start index for the current parser event.
|
|
3104
|
+
* @param endIndex End index for the current parser event.
|
|
3105
|
+
* @internal
|
|
3106
|
+
*/
|
|
2760
3107
|
onattribname(start, endIndex) {
|
|
2761
3108
|
this.startIndex = start;
|
|
2762
3109
|
const name = this.getSlice(start, endIndex);
|
|
2763
3110
|
this.attribname = this.lowerCaseAttributeNames ? name.toLowerCase() : name;
|
|
2764
3111
|
}
|
|
2765
|
-
/**
|
|
3112
|
+
/**
|
|
3113
|
+
* @param start Start index for the current parser event.
|
|
3114
|
+
* @param endIndex End index for the current parser event.
|
|
3115
|
+
* @internal
|
|
3116
|
+
*/
|
|
2766
3117
|
onattribdata(start, endIndex) {
|
|
2767
3118
|
this.attribvalue += this.getSlice(start, endIndex);
|
|
2768
3119
|
}
|
|
2769
|
-
/**
|
|
3120
|
+
/**
|
|
3121
|
+
* @param cp Current Unicode code point.
|
|
3122
|
+
* @internal
|
|
3123
|
+
*/
|
|
2770
3124
|
onattribentity(cp) {
|
|
2771
3125
|
this.attribvalue += fromCodePoint(cp);
|
|
2772
3126
|
}
|
|
2773
|
-
/**
|
|
3127
|
+
/**
|
|
3128
|
+
* @param quote Quote type used for the current attribute.
|
|
3129
|
+
* @param endIndex End index for the current parser event.
|
|
3130
|
+
* @internal
|
|
3131
|
+
*/
|
|
2774
3132
|
onattribend(quote2, endIndex) {
|
|
2775
|
-
var _a3, _b;
|
|
2776
3133
|
this.endIndex = endIndex;
|
|
2777
|
-
|
|
2778
|
-
if (this.attribs && !Object.
|
|
3134
|
+
this.cbs.onattribute?.(this.attribname, this.attribvalue, quote2 === QuoteType.Double ? '"' : quote2 === QuoteType.Single ? "'" : quote2 === QuoteType.NoValue ? void 0 : null);
|
|
3135
|
+
if (this.attribs && !Object.hasOwn(this.attribs, this.attribname)) {
|
|
2779
3136
|
this.attribs[this.attribname] = this.attribvalue;
|
|
2780
3137
|
}
|
|
2781
3138
|
this.attribvalue = "";
|
|
@@ -2788,17 +3145,25 @@ var Parser = class {
|
|
|
2788
3145
|
}
|
|
2789
3146
|
return name;
|
|
2790
3147
|
}
|
|
2791
|
-
/**
|
|
3148
|
+
/**
|
|
3149
|
+
* @param start Start index for the current parser event.
|
|
3150
|
+
* @param endIndex End index for the current parser event.
|
|
3151
|
+
* @internal
|
|
3152
|
+
*/
|
|
2792
3153
|
ondeclaration(start, endIndex) {
|
|
2793
3154
|
this.endIndex = endIndex;
|
|
2794
3155
|
const value = this.getSlice(start, endIndex);
|
|
2795
3156
|
if (this.cbs.onprocessinginstruction) {
|
|
2796
|
-
const name = this.getInstructionName(value);
|
|
3157
|
+
const name = this.htmlMode ? this.lowerCaseTagNames ? DOCUMENT_TYPE : value.slice(0, DOCUMENT_TYPE.length) : this.getInstructionName(value);
|
|
2797
3158
|
this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);
|
|
2798
3159
|
}
|
|
2799
3160
|
this.startIndex = endIndex + 1;
|
|
2800
3161
|
}
|
|
2801
|
-
/**
|
|
3162
|
+
/**
|
|
3163
|
+
* @param start Start index for the current parser event.
|
|
3164
|
+
* @param endIndex End index for the current parser event.
|
|
3165
|
+
* @internal
|
|
3166
|
+
*/
|
|
2802
3167
|
onprocessinginstruction(start, endIndex) {
|
|
2803
3168
|
this.endIndex = endIndex;
|
|
2804
3169
|
const value = this.getSlice(start, endIndex);
|
|
@@ -2808,57 +3173,66 @@ var Parser = class {
|
|
|
2808
3173
|
}
|
|
2809
3174
|
this.startIndex = endIndex + 1;
|
|
2810
3175
|
}
|
|
2811
|
-
/**
|
|
3176
|
+
/**
|
|
3177
|
+
* @param start Start index for the current parser event.
|
|
3178
|
+
* @param endIndex End index for the current parser event.
|
|
3179
|
+
* @param offset Offset applied when computing parser indices.
|
|
3180
|
+
* @internal
|
|
3181
|
+
*/
|
|
2812
3182
|
oncomment(start, endIndex, offset) {
|
|
2813
|
-
var _a3, _b, _c, _d;
|
|
2814
3183
|
this.endIndex = endIndex;
|
|
2815
|
-
|
|
2816
|
-
|
|
3184
|
+
this.cbs.oncomment?.(this.getSlice(start, endIndex - offset));
|
|
3185
|
+
this.cbs.oncommentend?.();
|
|
2817
3186
|
this.startIndex = endIndex + 1;
|
|
2818
3187
|
}
|
|
2819
|
-
/**
|
|
3188
|
+
/**
|
|
3189
|
+
* @param start Start index for the current parser event.
|
|
3190
|
+
* @param endIndex End index for the current parser event.
|
|
3191
|
+
* @param offset Offset applied when computing parser indices.
|
|
3192
|
+
* @internal
|
|
3193
|
+
*/
|
|
2820
3194
|
oncdata(start, endIndex, offset) {
|
|
2821
|
-
var _a3, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
2822
3195
|
this.endIndex = endIndex;
|
|
2823
3196
|
const value = this.getSlice(start, endIndex - offset);
|
|
2824
3197
|
if (!this.htmlMode || this.options.recognizeCDATA) {
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
3198
|
+
this.cbs.oncdatastart?.();
|
|
3199
|
+
this.cbs.ontext?.(value);
|
|
3200
|
+
this.cbs.oncdataend?.();
|
|
3201
|
+
} else if (this.isInForeignContext()) {
|
|
3202
|
+
this.cbs.ontext?.(value);
|
|
2828
3203
|
} else {
|
|
2829
|
-
|
|
2830
|
-
|
|
3204
|
+
this.cbs.oncomment?.(`[CDATA[${value}]]`);
|
|
3205
|
+
this.cbs.oncommentend?.();
|
|
2831
3206
|
}
|
|
2832
3207
|
this.startIndex = endIndex + 1;
|
|
2833
3208
|
}
|
|
2834
3209
|
/** @internal */
|
|
2835
3210
|
onend() {
|
|
2836
|
-
var _a3, _b;
|
|
2837
3211
|
if (this.cbs.onclosetag) {
|
|
2838
3212
|
this.endIndex = this.startIndex;
|
|
2839
3213
|
for (let index = 0; index < this.stack.length; index++) {
|
|
2840
3214
|
this.cbs.onclosetag(this.stack[index], true);
|
|
2841
3215
|
}
|
|
2842
3216
|
}
|
|
2843
|
-
|
|
3217
|
+
this.cbs.onend?.();
|
|
2844
3218
|
}
|
|
2845
3219
|
/**
|
|
2846
3220
|
* Resets the parser to a blank state, ready to parse a new HTML document
|
|
2847
3221
|
*/
|
|
2848
3222
|
reset() {
|
|
2849
|
-
|
|
2850
|
-
(_b = (_a3 = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a3);
|
|
3223
|
+
this.cbs.onreset?.();
|
|
2851
3224
|
this.tokenizer.reset();
|
|
2852
3225
|
this.tagname = "";
|
|
2853
3226
|
this.attribname = "";
|
|
3227
|
+
this.attribvalue = "";
|
|
2854
3228
|
this.attribs = null;
|
|
2855
3229
|
this.stack.length = 0;
|
|
2856
3230
|
this.startIndex = 0;
|
|
2857
3231
|
this.endIndex = 0;
|
|
2858
|
-
|
|
3232
|
+
this.cbs.onparserinit?.(this);
|
|
2859
3233
|
this.buffers.length = 0;
|
|
2860
3234
|
this.foreignContext.length = 0;
|
|
2861
|
-
this.foreignContext.unshift(
|
|
3235
|
+
this.foreignContext.unshift(ForeignContext.None);
|
|
2862
3236
|
this.bufferOffset = 0;
|
|
2863
3237
|
this.writeIndex = 0;
|
|
2864
3238
|
this.ended = false;
|
|
@@ -2866,7 +3240,6 @@ var Parser = class {
|
|
|
2866
3240
|
/**
|
|
2867
3241
|
* Resets the parser, then parses a complete document and
|
|
2868
3242
|
* pushes it to the handler.
|
|
2869
|
-
*
|
|
2870
3243
|
* @param data Document to parse.
|
|
2871
3244
|
*/
|
|
2872
3245
|
parseComplete(data) {
|
|
@@ -2874,6 +3247,9 @@ var Parser = class {
|
|
|
2874
3247
|
this.end(data);
|
|
2875
3248
|
}
|
|
2876
3249
|
getSlice(start, end) {
|
|
3250
|
+
if (start === end) {
|
|
3251
|
+
return "";
|
|
3252
|
+
}
|
|
2877
3253
|
while (start - this.bufferOffset >= this.buffers[0].length) {
|
|
2878
3254
|
this.shiftBuffer();
|
|
2879
3255
|
}
|
|
@@ -2891,13 +3267,11 @@ var Parser = class {
|
|
|
2891
3267
|
}
|
|
2892
3268
|
/**
|
|
2893
3269
|
* Parses a chunk of data and calls the corresponding callbacks.
|
|
2894
|
-
*
|
|
2895
3270
|
* @param chunk Chunk to parse.
|
|
2896
3271
|
*/
|
|
2897
3272
|
write(chunk) {
|
|
2898
|
-
var _a3, _b;
|
|
2899
3273
|
if (this.ended) {
|
|
2900
|
-
|
|
3274
|
+
this.cbs.onerror?.(new Error(".write() after done!"));
|
|
2901
3275
|
return;
|
|
2902
3276
|
}
|
|
2903
3277
|
this.buffers.push(chunk);
|
|
@@ -2908,13 +3282,11 @@ var Parser = class {
|
|
|
2908
3282
|
}
|
|
2909
3283
|
/**
|
|
2910
3284
|
* Parses the end of the buffer and clears the stack, calls onend.
|
|
2911
|
-
*
|
|
2912
3285
|
* @param chunk Optional final chunk to parse.
|
|
2913
3286
|
*/
|
|
2914
3287
|
end(chunk) {
|
|
2915
|
-
var _a3, _b;
|
|
2916
3288
|
if (this.ended) {
|
|
2917
|
-
|
|
3289
|
+
this.cbs.onerror?.(new Error(".end() after done!"));
|
|
2918
3290
|
return;
|
|
2919
3291
|
}
|
|
2920
3292
|
if (chunk)
|
|
@@ -2939,27 +3311,9 @@ var Parser = class {
|
|
|
2939
3311
|
if (this.ended)
|
|
2940
3312
|
this.tokenizer.end();
|
|
2941
3313
|
}
|
|
2942
|
-
/**
|
|
2943
|
-
* Alias of `write`, for backwards compatibility.
|
|
2944
|
-
*
|
|
2945
|
-
* @param chunk Chunk to parse.
|
|
2946
|
-
* @deprecated
|
|
2947
|
-
*/
|
|
2948
|
-
parseChunk(chunk) {
|
|
2949
|
-
this.write(chunk);
|
|
2950
|
-
}
|
|
2951
|
-
/**
|
|
2952
|
-
* Alias of `end`, for backwards compatibility.
|
|
2953
|
-
*
|
|
2954
|
-
* @param chunk Optional final chunk to parse.
|
|
2955
|
-
* @deprecated
|
|
2956
|
-
*/
|
|
2957
|
-
done(chunk) {
|
|
2958
|
-
this.end(chunk);
|
|
2959
|
-
}
|
|
2960
3314
|
};
|
|
2961
3315
|
|
|
2962
|
-
// node_modules/.pnpm/domelementtype@
|
|
3316
|
+
// node_modules/.pnpm/domelementtype@3.0.0/node_modules/domelementtype/dist/index.js
|
|
2963
3317
|
var ElementType;
|
|
2964
3318
|
(function(ElementType2) {
|
|
2965
3319
|
ElementType2["Root"] = "root";
|
|
@@ -2972,8 +3326,8 @@ var ElementType;
|
|
|
2972
3326
|
ElementType2["CDATA"] = "cdata";
|
|
2973
3327
|
ElementType2["Doctype"] = "doctype";
|
|
2974
3328
|
})(ElementType || (ElementType = {}));
|
|
2975
|
-
function isTag(
|
|
2976
|
-
return
|
|
3329
|
+
function isTag(element) {
|
|
3330
|
+
return element.type === ElementType.Tag || element.type === ElementType.Script || element.type === ElementType.Style;
|
|
2977
3331
|
}
|
|
2978
3332
|
var Root = ElementType.Root;
|
|
2979
3333
|
var Text = ElementType.Text;
|
|
@@ -2985,15 +3339,18 @@ var Tag = ElementType.Tag;
|
|
|
2985
3339
|
var CDATA = ElementType.CDATA;
|
|
2986
3340
|
var Doctype = ElementType.Doctype;
|
|
2987
3341
|
|
|
2988
|
-
// node_modules/.pnpm/domhandler@
|
|
3342
|
+
// node_modules/.pnpm/domhandler@6.0.1/node_modules/domhandler/dist/node.js
|
|
2989
3343
|
var Node = class {
|
|
2990
|
-
|
|
2991
|
-
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
|
|
3344
|
+
/** Parent of the node */
|
|
3345
|
+
parent = null;
|
|
3346
|
+
/** Previous sibling */
|
|
3347
|
+
prev = null;
|
|
3348
|
+
/** Next sibling */
|
|
3349
|
+
next = null;
|
|
3350
|
+
/** The start index of the node. Requires `withStartIndices` on the handler to be `true. */
|
|
3351
|
+
startIndex = null;
|
|
3352
|
+
/** The end index of the node. Requires `withEndIndices` on the handler to be `true. */
|
|
3353
|
+
endIndex = null;
|
|
2997
3354
|
// Read-write aliases for properties
|
|
2998
3355
|
/**
|
|
2999
3356
|
* Same as {@link parent}.
|
|
@@ -3012,8 +3369,8 @@ var Node = class {
|
|
|
3012
3369
|
get previousSibling() {
|
|
3013
3370
|
return this.prev;
|
|
3014
3371
|
}
|
|
3015
|
-
set previousSibling(
|
|
3016
|
-
this.prev =
|
|
3372
|
+
set previousSibling(previous) {
|
|
3373
|
+
this.prev = previous;
|
|
3017
3374
|
}
|
|
3018
3375
|
/**
|
|
3019
3376
|
* Same as {@link next}.
|
|
@@ -3027,7 +3384,6 @@ var Node = class {
|
|
|
3027
3384
|
}
|
|
3028
3385
|
/**
|
|
3029
3386
|
* Clone this node, and optionally its children.
|
|
3030
|
-
*
|
|
3031
3387
|
* @param recursive Clone child nodes as well.
|
|
3032
3388
|
* @returns A clone of the node.
|
|
3033
3389
|
*/
|
|
@@ -3036,6 +3392,7 @@ var Node = class {
|
|
|
3036
3392
|
}
|
|
3037
3393
|
};
|
|
3038
3394
|
var DataNode = class extends Node {
|
|
3395
|
+
data;
|
|
3039
3396
|
/**
|
|
3040
3397
|
* @param data The content of the data node
|
|
3041
3398
|
*/
|
|
@@ -3055,34 +3412,36 @@ var DataNode = class extends Node {
|
|
|
3055
3412
|
}
|
|
3056
3413
|
};
|
|
3057
3414
|
var Text2 = class extends DataNode {
|
|
3058
|
-
|
|
3059
|
-
super(...arguments);
|
|
3060
|
-
this.type = ElementType.Text;
|
|
3061
|
-
}
|
|
3415
|
+
type = ElementType.Text;
|
|
3062
3416
|
get nodeType() {
|
|
3063
3417
|
return 3;
|
|
3064
3418
|
}
|
|
3065
3419
|
};
|
|
3066
3420
|
var Comment2 = class extends DataNode {
|
|
3067
|
-
|
|
3068
|
-
super(...arguments);
|
|
3069
|
-
this.type = ElementType.Comment;
|
|
3070
|
-
}
|
|
3421
|
+
type = ElementType.Comment;
|
|
3071
3422
|
get nodeType() {
|
|
3072
3423
|
return 8;
|
|
3073
3424
|
}
|
|
3074
3425
|
};
|
|
3075
3426
|
var ProcessingInstruction = class extends DataNode {
|
|
3427
|
+
type = ElementType.Directive;
|
|
3428
|
+
name;
|
|
3076
3429
|
constructor(name, data) {
|
|
3077
3430
|
super(data);
|
|
3078
3431
|
this.name = name;
|
|
3079
|
-
this.type = ElementType.Directive;
|
|
3080
3432
|
}
|
|
3081
3433
|
get nodeType() {
|
|
3082
3434
|
return 1;
|
|
3083
3435
|
}
|
|
3436
|
+
/** If this is a doctype, the document type name (parse5 only). */
|
|
3437
|
+
"x-name";
|
|
3438
|
+
/** If this is a doctype, the document type public identifier (parse5 only). */
|
|
3439
|
+
"x-publicId";
|
|
3440
|
+
/** If this is a doctype, the document type system identifier (parse5 only). */
|
|
3441
|
+
"x-systemId";
|
|
3084
3442
|
};
|
|
3085
3443
|
var NodeWithChildren = class extends Node {
|
|
3444
|
+
children;
|
|
3086
3445
|
/**
|
|
3087
3446
|
* @param children Children of the node. Only certain node types can have children.
|
|
3088
3447
|
*/
|
|
@@ -3093,8 +3452,7 @@ var NodeWithChildren = class extends Node {
|
|
|
3093
3452
|
// Aliases
|
|
3094
3453
|
/** First child of the node. */
|
|
3095
3454
|
get firstChild() {
|
|
3096
|
-
|
|
3097
|
-
return (_a3 = this.children[0]) !== null && _a3 !== void 0 ? _a3 : null;
|
|
3455
|
+
return this.children[0] ?? null;
|
|
3098
3456
|
}
|
|
3099
3457
|
/** Last child of the node. */
|
|
3100
3458
|
get lastChild() {
|
|
@@ -3112,28 +3470,26 @@ var NodeWithChildren = class extends Node {
|
|
|
3112
3470
|
}
|
|
3113
3471
|
};
|
|
3114
3472
|
var CDATA2 = class extends NodeWithChildren {
|
|
3115
|
-
|
|
3116
|
-
super(...arguments);
|
|
3117
|
-
this.type = ElementType.CDATA;
|
|
3118
|
-
}
|
|
3473
|
+
type = ElementType.CDATA;
|
|
3119
3474
|
get nodeType() {
|
|
3120
3475
|
return 4;
|
|
3121
3476
|
}
|
|
3122
3477
|
};
|
|
3123
3478
|
var Document = class extends NodeWithChildren {
|
|
3124
|
-
|
|
3125
|
-
super(...arguments);
|
|
3126
|
-
this.type = ElementType.Root;
|
|
3127
|
-
}
|
|
3479
|
+
type = ElementType.Root;
|
|
3128
3480
|
get nodeType() {
|
|
3129
3481
|
return 9;
|
|
3130
3482
|
}
|
|
3131
3483
|
};
|
|
3132
3484
|
var Element = class extends NodeWithChildren {
|
|
3485
|
+
name;
|
|
3486
|
+
attribs;
|
|
3487
|
+
type;
|
|
3133
3488
|
/**
|
|
3134
3489
|
* @param name Name of the tag, eg. `div`, `span`.
|
|
3135
3490
|
* @param attribs Object mapping attribute names to attribute values.
|
|
3136
3491
|
* @param children Children of the node.
|
|
3492
|
+
* @param type Node type used for the new node instance.
|
|
3137
3493
|
*/
|
|
3138
3494
|
constructor(name, attribs, children = [], type = name === "script" ? ElementType.Script : name === "style" ? ElementType.Style : ElementType.Tag) {
|
|
3139
3495
|
super(children);
|
|
@@ -3156,16 +3512,19 @@ var Element = class extends NodeWithChildren {
|
|
|
3156
3512
|
this.name = name;
|
|
3157
3513
|
}
|
|
3158
3514
|
get attributes() {
|
|
3159
|
-
return Object.keys(this.attribs).map((name) => {
|
|
3160
|
-
|
|
3161
|
-
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
|
|
3515
|
+
return Object.keys(this.attribs).map((name) => ({
|
|
3516
|
+
name,
|
|
3517
|
+
value: this.attribs[name],
|
|
3518
|
+
namespace: this["x-attribsNamespace"]?.[name],
|
|
3519
|
+
prefix: this["x-attribsPrefix"]?.[name]
|
|
3520
|
+
}));
|
|
3521
|
+
}
|
|
3522
|
+
/** Element namespace (parse5 only). */
|
|
3523
|
+
namespace;
|
|
3524
|
+
/** Element attribute namespaces (parse5 only). */
|
|
3525
|
+
"x-attribsNamespace";
|
|
3526
|
+
/** Element attribute namespace-related prefixes (parse5 only). */
|
|
3527
|
+
"x-attribsPrefix";
|
|
3169
3528
|
};
|
|
3170
3529
|
function isTag2(node) {
|
|
3171
3530
|
return isTag(node);
|
|
@@ -3194,7 +3553,9 @@ function cloneNode(node, recursive = false) {
|
|
|
3194
3553
|
} else if (isTag2(node)) {
|
|
3195
3554
|
const children = recursive ? cloneChildren(node.children) : [];
|
|
3196
3555
|
const clone = new Element(node.name, { ...node.attribs }, children);
|
|
3197
|
-
|
|
3556
|
+
for (const child of children) {
|
|
3557
|
+
child.parent = clone;
|
|
3558
|
+
}
|
|
3198
3559
|
if (node.namespace != null) {
|
|
3199
3560
|
clone.namespace = node.namespace;
|
|
3200
3561
|
}
|
|
@@ -3208,12 +3569,16 @@ function cloneNode(node, recursive = false) {
|
|
|
3208
3569
|
} else if (isCDATA(node)) {
|
|
3209
3570
|
const children = recursive ? cloneChildren(node.children) : [];
|
|
3210
3571
|
const clone = new CDATA2(children);
|
|
3211
|
-
|
|
3572
|
+
for (const child of children) {
|
|
3573
|
+
child.parent = clone;
|
|
3574
|
+
}
|
|
3212
3575
|
result = clone;
|
|
3213
3576
|
} else if (isDocument(node)) {
|
|
3214
3577
|
const children = recursive ? cloneChildren(node.children) : [];
|
|
3215
3578
|
const clone = new Document(children);
|
|
3216
|
-
|
|
3579
|
+
for (const child of children) {
|
|
3580
|
+
child.parent = clone;
|
|
3581
|
+
}
|
|
3217
3582
|
if (node["x-mode"]) {
|
|
3218
3583
|
clone["x-mode"] = node["x-mode"];
|
|
3219
3584
|
}
|
|
@@ -3238,43 +3603,55 @@ function cloneNode(node, recursive = false) {
|
|
|
3238
3603
|
}
|
|
3239
3604
|
function cloneChildren(childs) {
|
|
3240
3605
|
const children = childs.map((child) => cloneNode(child, true));
|
|
3241
|
-
for (let
|
|
3242
|
-
children[
|
|
3243
|
-
children[
|
|
3606
|
+
for (let index = 1; index < children.length; index++) {
|
|
3607
|
+
children[index].prev = children[index - 1];
|
|
3608
|
+
children[index - 1].next = children[index];
|
|
3244
3609
|
}
|
|
3245
3610
|
return children;
|
|
3246
3611
|
}
|
|
3247
3612
|
|
|
3248
|
-
// node_modules/.pnpm/domhandler@
|
|
3249
|
-
var
|
|
3613
|
+
// node_modules/.pnpm/domhandler@6.0.1/node_modules/domhandler/dist/index.js
|
|
3614
|
+
var defaultOptions = {
|
|
3250
3615
|
withStartIndices: false,
|
|
3251
3616
|
withEndIndices: false,
|
|
3252
3617
|
xmlMode: false
|
|
3253
3618
|
};
|
|
3254
3619
|
var DomHandler = class {
|
|
3620
|
+
/** The elements of the DOM */
|
|
3621
|
+
dom = [];
|
|
3622
|
+
/** The root element for the DOM */
|
|
3623
|
+
root = new Document(this.dom);
|
|
3624
|
+
/** Called once parsing has completed. */
|
|
3625
|
+
callback;
|
|
3626
|
+
/** Settings for the handler. */
|
|
3627
|
+
options;
|
|
3628
|
+
/** Callback whenever a tag is closed. */
|
|
3629
|
+
elementCB;
|
|
3630
|
+
/** Indicated whether parsing has been completed. */
|
|
3631
|
+
done = false;
|
|
3632
|
+
/** Stack of open tags. */
|
|
3633
|
+
tagStack = [this.root];
|
|
3634
|
+
/** A data node that is still being written to. */
|
|
3635
|
+
lastNode = null;
|
|
3636
|
+
/** Reference to the parser instance. Used for location information. */
|
|
3637
|
+
parser = null;
|
|
3255
3638
|
/**
|
|
3256
3639
|
* @param callback Called once parsing has completed.
|
|
3257
3640
|
* @param options Settings for the handler.
|
|
3258
3641
|
* @param elementCB Callback whenever a tag is closed.
|
|
3259
3642
|
*/
|
|
3260
3643
|
constructor(callback, options, elementCB) {
|
|
3261
|
-
this.dom = [];
|
|
3262
|
-
this.root = new Document(this.dom);
|
|
3263
|
-
this.done = false;
|
|
3264
|
-
this.tagStack = [this.root];
|
|
3265
|
-
this.lastNode = null;
|
|
3266
|
-
this.parser = null;
|
|
3267
3644
|
if (typeof options === "function") {
|
|
3268
3645
|
elementCB = options;
|
|
3269
|
-
options =
|
|
3646
|
+
options = defaultOptions;
|
|
3270
3647
|
}
|
|
3271
3648
|
if (typeof callback === "object") {
|
|
3272
3649
|
options = callback;
|
|
3273
3650
|
callback = void 0;
|
|
3274
3651
|
}
|
|
3275
|
-
this.callback = callback
|
|
3276
|
-
this.options = options
|
|
3277
|
-
this.elementCB = elementCB
|
|
3652
|
+
this.callback = callback ?? null;
|
|
3653
|
+
this.options = options ?? defaultOptions;
|
|
3654
|
+
this.elementCB = elementCB ?? null;
|
|
3278
3655
|
}
|
|
3279
3656
|
onparserinit(parser) {
|
|
3280
3657
|
this.parser = parser;
|
|
@@ -3301,12 +3678,12 @@ var DomHandler = class {
|
|
|
3301
3678
|
}
|
|
3302
3679
|
onclosetag() {
|
|
3303
3680
|
this.lastNode = null;
|
|
3304
|
-
const
|
|
3305
|
-
if (this.options.withEndIndices) {
|
|
3306
|
-
|
|
3681
|
+
const element = this.tagStack.pop();
|
|
3682
|
+
if (this.options.withEndIndices && this.parser) {
|
|
3683
|
+
element.endIndex = this.parser.endIndex;
|
|
3307
3684
|
}
|
|
3308
3685
|
if (this.elementCB)
|
|
3309
|
-
this.elementCB(
|
|
3686
|
+
this.elementCB(element);
|
|
3310
3687
|
}
|
|
3311
3688
|
onopentag(name, attribs) {
|
|
3312
3689
|
const type = this.options.xmlMode ? ElementType.Tag : void 0;
|
|
@@ -3318,7 +3695,7 @@ var DomHandler = class {
|
|
|
3318
3695
|
const { lastNode } = this;
|
|
3319
3696
|
if (lastNode && lastNode.type === ElementType.Text) {
|
|
3320
3697
|
lastNode.data += data;
|
|
3321
|
-
if (this.options.withEndIndices) {
|
|
3698
|
+
if (this.options.withEndIndices && this.parser) {
|
|
3322
3699
|
lastNode.endIndex = this.parser.endIndex;
|
|
3323
3700
|
}
|
|
3324
3701
|
} else {
|
|
@@ -3363,10 +3740,10 @@ var DomHandler = class {
|
|
|
3363
3740
|
addNode(node) {
|
|
3364
3741
|
const parent = this.tagStack[this.tagStack.length - 1];
|
|
3365
3742
|
const previousSibling = parent.children[parent.children.length - 1];
|
|
3366
|
-
if (this.options.withStartIndices) {
|
|
3743
|
+
if (this.options.withStartIndices && this.parser) {
|
|
3367
3744
|
node.startIndex = this.parser.startIndex;
|
|
3368
3745
|
}
|
|
3369
|
-
if (this.options.withEndIndices) {
|
|
3746
|
+
if (this.options.withEndIndices && this.parser) {
|
|
3370
3747
|
node.endIndex = this.parser.endIndex;
|
|
3371
3748
|
}
|
|
3372
3749
|
parent.children.push(node);
|
|
@@ -3379,616 +3756,7 @@ var DomHandler = class {
|
|
|
3379
3756
|
}
|
|
3380
3757
|
};
|
|
3381
3758
|
|
|
3382
|
-
// node_modules/.pnpm/
|
|
3383
|
-
var decode_data_html_default = new Uint16Array(
|
|
3384
|
-
// prettier-ignore
|
|
3385
|
-
'\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map((c) => c.charCodeAt(0))
|
|
3386
|
-
);
|
|
3387
|
-
|
|
3388
|
-
// node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-xml.js
|
|
3389
|
-
var decode_data_xml_default = new Uint16Array(
|
|
3390
|
-
// prettier-ignore
|
|
3391
|
-
"\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map((c) => c.charCodeAt(0))
|
|
3392
|
-
);
|
|
3393
|
-
|
|
3394
|
-
// node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode_codepoint.js
|
|
3395
|
-
var _a2;
|
|
3396
|
-
var decodeMap2 = /* @__PURE__ */ new Map([
|
|
3397
|
-
[0, 65533],
|
|
3398
|
-
// C1 Unicode control character reference replacements
|
|
3399
|
-
[128, 8364],
|
|
3400
|
-
[130, 8218],
|
|
3401
|
-
[131, 402],
|
|
3402
|
-
[132, 8222],
|
|
3403
|
-
[133, 8230],
|
|
3404
|
-
[134, 8224],
|
|
3405
|
-
[135, 8225],
|
|
3406
|
-
[136, 710],
|
|
3407
|
-
[137, 8240],
|
|
3408
|
-
[138, 352],
|
|
3409
|
-
[139, 8249],
|
|
3410
|
-
[140, 338],
|
|
3411
|
-
[142, 381],
|
|
3412
|
-
[145, 8216],
|
|
3413
|
-
[146, 8217],
|
|
3414
|
-
[147, 8220],
|
|
3415
|
-
[148, 8221],
|
|
3416
|
-
[149, 8226],
|
|
3417
|
-
[150, 8211],
|
|
3418
|
-
[151, 8212],
|
|
3419
|
-
[152, 732],
|
|
3420
|
-
[153, 8482],
|
|
3421
|
-
[154, 353],
|
|
3422
|
-
[155, 8250],
|
|
3423
|
-
[156, 339],
|
|
3424
|
-
[158, 382],
|
|
3425
|
-
[159, 376]
|
|
3426
|
-
]);
|
|
3427
|
-
var fromCodePoint2 = (
|
|
3428
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
|
|
3429
|
-
(_a2 = String.fromCodePoint) !== null && _a2 !== void 0 ? _a2 : function(codePoint) {
|
|
3430
|
-
let output = "";
|
|
3431
|
-
if (codePoint > 65535) {
|
|
3432
|
-
codePoint -= 65536;
|
|
3433
|
-
output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296);
|
|
3434
|
-
codePoint = 56320 | codePoint & 1023;
|
|
3435
|
-
}
|
|
3436
|
-
output += String.fromCharCode(codePoint);
|
|
3437
|
-
return output;
|
|
3438
|
-
}
|
|
3439
|
-
);
|
|
3440
|
-
function replaceCodePoint2(codePoint) {
|
|
3441
|
-
var _a3;
|
|
3442
|
-
if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {
|
|
3443
|
-
return 65533;
|
|
3444
|
-
}
|
|
3445
|
-
return (_a3 = decodeMap2.get(codePoint)) !== null && _a3 !== void 0 ? _a3 : codePoint;
|
|
3446
|
-
}
|
|
3447
|
-
|
|
3448
|
-
// node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode.js
|
|
3449
|
-
var CharCodes3;
|
|
3450
|
-
(function(CharCodes4) {
|
|
3451
|
-
CharCodes4[CharCodes4["NUM"] = 35] = "NUM";
|
|
3452
|
-
CharCodes4[CharCodes4["SEMI"] = 59] = "SEMI";
|
|
3453
|
-
CharCodes4[CharCodes4["EQUALS"] = 61] = "EQUALS";
|
|
3454
|
-
CharCodes4[CharCodes4["ZERO"] = 48] = "ZERO";
|
|
3455
|
-
CharCodes4[CharCodes4["NINE"] = 57] = "NINE";
|
|
3456
|
-
CharCodes4[CharCodes4["LOWER_A"] = 97] = "LOWER_A";
|
|
3457
|
-
CharCodes4[CharCodes4["LOWER_F"] = 102] = "LOWER_F";
|
|
3458
|
-
CharCodes4[CharCodes4["LOWER_X"] = 120] = "LOWER_X";
|
|
3459
|
-
CharCodes4[CharCodes4["LOWER_Z"] = 122] = "LOWER_Z";
|
|
3460
|
-
CharCodes4[CharCodes4["UPPER_A"] = 65] = "UPPER_A";
|
|
3461
|
-
CharCodes4[CharCodes4["UPPER_F"] = 70] = "UPPER_F";
|
|
3462
|
-
CharCodes4[CharCodes4["UPPER_Z"] = 90] = "UPPER_Z";
|
|
3463
|
-
})(CharCodes3 || (CharCodes3 = {}));
|
|
3464
|
-
var TO_LOWER_BIT2 = 32;
|
|
3465
|
-
var BinTrieFlags2;
|
|
3466
|
-
(function(BinTrieFlags3) {
|
|
3467
|
-
BinTrieFlags3[BinTrieFlags3["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
3468
|
-
BinTrieFlags3[BinTrieFlags3["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
|
|
3469
|
-
BinTrieFlags3[BinTrieFlags3["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
3470
|
-
})(BinTrieFlags2 || (BinTrieFlags2 = {}));
|
|
3471
|
-
function isNumber2(code) {
|
|
3472
|
-
return code >= CharCodes3.ZERO && code <= CharCodes3.NINE;
|
|
3473
|
-
}
|
|
3474
|
-
function isHexadecimalCharacter2(code) {
|
|
3475
|
-
return code >= CharCodes3.UPPER_A && code <= CharCodes3.UPPER_F || code >= CharCodes3.LOWER_A && code <= CharCodes3.LOWER_F;
|
|
3476
|
-
}
|
|
3477
|
-
function isAsciiAlphaNumeric2(code) {
|
|
3478
|
-
return code >= CharCodes3.UPPER_A && code <= CharCodes3.UPPER_Z || code >= CharCodes3.LOWER_A && code <= CharCodes3.LOWER_Z || isNumber2(code);
|
|
3479
|
-
}
|
|
3480
|
-
function isEntityInAttributeInvalidEnd2(code) {
|
|
3481
|
-
return code === CharCodes3.EQUALS || isAsciiAlphaNumeric2(code);
|
|
3482
|
-
}
|
|
3483
|
-
var EntityDecoderState2;
|
|
3484
|
-
(function(EntityDecoderState3) {
|
|
3485
|
-
EntityDecoderState3[EntityDecoderState3["EntityStart"] = 0] = "EntityStart";
|
|
3486
|
-
EntityDecoderState3[EntityDecoderState3["NumericStart"] = 1] = "NumericStart";
|
|
3487
|
-
EntityDecoderState3[EntityDecoderState3["NumericDecimal"] = 2] = "NumericDecimal";
|
|
3488
|
-
EntityDecoderState3[EntityDecoderState3["NumericHex"] = 3] = "NumericHex";
|
|
3489
|
-
EntityDecoderState3[EntityDecoderState3["NamedEntity"] = 4] = "NamedEntity";
|
|
3490
|
-
})(EntityDecoderState2 || (EntityDecoderState2 = {}));
|
|
3491
|
-
var DecodingMode2;
|
|
3492
|
-
(function(DecodingMode3) {
|
|
3493
|
-
DecodingMode3[DecodingMode3["Legacy"] = 0] = "Legacy";
|
|
3494
|
-
DecodingMode3[DecodingMode3["Strict"] = 1] = "Strict";
|
|
3495
|
-
DecodingMode3[DecodingMode3["Attribute"] = 2] = "Attribute";
|
|
3496
|
-
})(DecodingMode2 || (DecodingMode2 = {}));
|
|
3497
|
-
var EntityDecoder2 = class {
|
|
3498
|
-
constructor(decodeTree, emitCodePoint, errors) {
|
|
3499
|
-
this.decodeTree = decodeTree;
|
|
3500
|
-
this.emitCodePoint = emitCodePoint;
|
|
3501
|
-
this.errors = errors;
|
|
3502
|
-
this.state = EntityDecoderState2.EntityStart;
|
|
3503
|
-
this.consumed = 1;
|
|
3504
|
-
this.result = 0;
|
|
3505
|
-
this.treeIndex = 0;
|
|
3506
|
-
this.excess = 1;
|
|
3507
|
-
this.decodeMode = DecodingMode2.Strict;
|
|
3508
|
-
}
|
|
3509
|
-
/** Resets the instance to make it reusable. */
|
|
3510
|
-
startEntity(decodeMode) {
|
|
3511
|
-
this.decodeMode = decodeMode;
|
|
3512
|
-
this.state = EntityDecoderState2.EntityStart;
|
|
3513
|
-
this.result = 0;
|
|
3514
|
-
this.treeIndex = 0;
|
|
3515
|
-
this.excess = 1;
|
|
3516
|
-
this.consumed = 1;
|
|
3517
|
-
}
|
|
3518
|
-
/**
|
|
3519
|
-
* Write an entity to the decoder. This can be called multiple times with partial entities.
|
|
3520
|
-
* If the entity is incomplete, the decoder will return -1.
|
|
3521
|
-
*
|
|
3522
|
-
* Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
|
|
3523
|
-
* entity is incomplete, and resume when the next string is written.
|
|
3524
|
-
*
|
|
3525
|
-
* @param string The string containing the entity (or a continuation of the entity).
|
|
3526
|
-
* @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
|
|
3527
|
-
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
3528
|
-
*/
|
|
3529
|
-
write(str, offset) {
|
|
3530
|
-
switch (this.state) {
|
|
3531
|
-
case EntityDecoderState2.EntityStart: {
|
|
3532
|
-
if (str.charCodeAt(offset) === CharCodes3.NUM) {
|
|
3533
|
-
this.state = EntityDecoderState2.NumericStart;
|
|
3534
|
-
this.consumed += 1;
|
|
3535
|
-
return this.stateNumericStart(str, offset + 1);
|
|
3536
|
-
}
|
|
3537
|
-
this.state = EntityDecoderState2.NamedEntity;
|
|
3538
|
-
return this.stateNamedEntity(str, offset);
|
|
3539
|
-
}
|
|
3540
|
-
case EntityDecoderState2.NumericStart: {
|
|
3541
|
-
return this.stateNumericStart(str, offset);
|
|
3542
|
-
}
|
|
3543
|
-
case EntityDecoderState2.NumericDecimal: {
|
|
3544
|
-
return this.stateNumericDecimal(str, offset);
|
|
3545
|
-
}
|
|
3546
|
-
case EntityDecoderState2.NumericHex: {
|
|
3547
|
-
return this.stateNumericHex(str, offset);
|
|
3548
|
-
}
|
|
3549
|
-
case EntityDecoderState2.NamedEntity: {
|
|
3550
|
-
return this.stateNamedEntity(str, offset);
|
|
3551
|
-
}
|
|
3552
|
-
}
|
|
3553
|
-
}
|
|
3554
|
-
/**
|
|
3555
|
-
* Switches between the numeric decimal and hexadecimal states.
|
|
3556
|
-
*
|
|
3557
|
-
* Equivalent to the `Numeric character reference state` in the HTML spec.
|
|
3558
|
-
*
|
|
3559
|
-
* @param str The string containing the entity (or a continuation of the entity).
|
|
3560
|
-
* @param offset The current offset.
|
|
3561
|
-
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
3562
|
-
*/
|
|
3563
|
-
stateNumericStart(str, offset) {
|
|
3564
|
-
if (offset >= str.length) {
|
|
3565
|
-
return -1;
|
|
3566
|
-
}
|
|
3567
|
-
if ((str.charCodeAt(offset) | TO_LOWER_BIT2) === CharCodes3.LOWER_X) {
|
|
3568
|
-
this.state = EntityDecoderState2.NumericHex;
|
|
3569
|
-
this.consumed += 1;
|
|
3570
|
-
return this.stateNumericHex(str, offset + 1);
|
|
3571
|
-
}
|
|
3572
|
-
this.state = EntityDecoderState2.NumericDecimal;
|
|
3573
|
-
return this.stateNumericDecimal(str, offset);
|
|
3574
|
-
}
|
|
3575
|
-
addToNumericResult(str, start, end, base) {
|
|
3576
|
-
if (start !== end) {
|
|
3577
|
-
const digitCount = end - start;
|
|
3578
|
-
this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base);
|
|
3579
|
-
this.consumed += digitCount;
|
|
3580
|
-
}
|
|
3581
|
-
}
|
|
3582
|
-
/**
|
|
3583
|
-
* Parses a hexadecimal numeric entity.
|
|
3584
|
-
*
|
|
3585
|
-
* Equivalent to the `Hexademical character reference state` in the HTML spec.
|
|
3586
|
-
*
|
|
3587
|
-
* @param str The string containing the entity (or a continuation of the entity).
|
|
3588
|
-
* @param offset The current offset.
|
|
3589
|
-
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
3590
|
-
*/
|
|
3591
|
-
stateNumericHex(str, offset) {
|
|
3592
|
-
const startIdx = offset;
|
|
3593
|
-
while (offset < str.length) {
|
|
3594
|
-
const char = str.charCodeAt(offset);
|
|
3595
|
-
if (isNumber2(char) || isHexadecimalCharacter2(char)) {
|
|
3596
|
-
offset += 1;
|
|
3597
|
-
} else {
|
|
3598
|
-
this.addToNumericResult(str, startIdx, offset, 16);
|
|
3599
|
-
return this.emitNumericEntity(char, 3);
|
|
3600
|
-
}
|
|
3601
|
-
}
|
|
3602
|
-
this.addToNumericResult(str, startIdx, offset, 16);
|
|
3603
|
-
return -1;
|
|
3604
|
-
}
|
|
3605
|
-
/**
|
|
3606
|
-
* Parses a decimal numeric entity.
|
|
3607
|
-
*
|
|
3608
|
-
* Equivalent to the `Decimal character reference state` in the HTML spec.
|
|
3609
|
-
*
|
|
3610
|
-
* @param str The string containing the entity (or a continuation of the entity).
|
|
3611
|
-
* @param offset The current offset.
|
|
3612
|
-
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
3613
|
-
*/
|
|
3614
|
-
stateNumericDecimal(str, offset) {
|
|
3615
|
-
const startIdx = offset;
|
|
3616
|
-
while (offset < str.length) {
|
|
3617
|
-
const char = str.charCodeAt(offset);
|
|
3618
|
-
if (isNumber2(char)) {
|
|
3619
|
-
offset += 1;
|
|
3620
|
-
} else {
|
|
3621
|
-
this.addToNumericResult(str, startIdx, offset, 10);
|
|
3622
|
-
return this.emitNumericEntity(char, 2);
|
|
3623
|
-
}
|
|
3624
|
-
}
|
|
3625
|
-
this.addToNumericResult(str, startIdx, offset, 10);
|
|
3626
|
-
return -1;
|
|
3627
|
-
}
|
|
3628
|
-
/**
|
|
3629
|
-
* Validate and emit a numeric entity.
|
|
3630
|
-
*
|
|
3631
|
-
* Implements the logic from the `Hexademical character reference start
|
|
3632
|
-
* state` and `Numeric character reference end state` in the HTML spec.
|
|
3633
|
-
*
|
|
3634
|
-
* @param lastCp The last code point of the entity. Used to see if the
|
|
3635
|
-
* entity was terminated with a semicolon.
|
|
3636
|
-
* @param expectedLength The minimum number of characters that should be
|
|
3637
|
-
* consumed. Used to validate that at least one digit
|
|
3638
|
-
* was consumed.
|
|
3639
|
-
* @returns The number of characters that were consumed.
|
|
3640
|
-
*/
|
|
3641
|
-
emitNumericEntity(lastCp, expectedLength) {
|
|
3642
|
-
var _a3;
|
|
3643
|
-
if (this.consumed <= expectedLength) {
|
|
3644
|
-
(_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed);
|
|
3645
|
-
return 0;
|
|
3646
|
-
}
|
|
3647
|
-
if (lastCp === CharCodes3.SEMI) {
|
|
3648
|
-
this.consumed += 1;
|
|
3649
|
-
} else if (this.decodeMode === DecodingMode2.Strict) {
|
|
3650
|
-
return 0;
|
|
3651
|
-
}
|
|
3652
|
-
this.emitCodePoint(replaceCodePoint2(this.result), this.consumed);
|
|
3653
|
-
if (this.errors) {
|
|
3654
|
-
if (lastCp !== CharCodes3.SEMI) {
|
|
3655
|
-
this.errors.missingSemicolonAfterCharacterReference();
|
|
3656
|
-
}
|
|
3657
|
-
this.errors.validateNumericCharacterReference(this.result);
|
|
3658
|
-
}
|
|
3659
|
-
return this.consumed;
|
|
3660
|
-
}
|
|
3661
|
-
/**
|
|
3662
|
-
* Parses a named entity.
|
|
3663
|
-
*
|
|
3664
|
-
* Equivalent to the `Named character reference state` in the HTML spec.
|
|
3665
|
-
*
|
|
3666
|
-
* @param str The string containing the entity (or a continuation of the entity).
|
|
3667
|
-
* @param offset The current offset.
|
|
3668
|
-
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
3669
|
-
*/
|
|
3670
|
-
stateNamedEntity(str, offset) {
|
|
3671
|
-
const { decodeTree } = this;
|
|
3672
|
-
let current = decodeTree[this.treeIndex];
|
|
3673
|
-
let valueLength = (current & BinTrieFlags2.VALUE_LENGTH) >> 14;
|
|
3674
|
-
for (; offset < str.length; offset++, this.excess++) {
|
|
3675
|
-
const char = str.charCodeAt(offset);
|
|
3676
|
-
this.treeIndex = determineBranch2(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
|
|
3677
|
-
if (this.treeIndex < 0) {
|
|
3678
|
-
return this.result === 0 || // If we are parsing an attribute
|
|
3679
|
-
this.decodeMode === DecodingMode2.Attribute && // We shouldn't have consumed any characters after the entity,
|
|
3680
|
-
(valueLength === 0 || // And there should be no invalid characters.
|
|
3681
|
-
isEntityInAttributeInvalidEnd2(char)) ? 0 : this.emitNotTerminatedNamedEntity();
|
|
3682
|
-
}
|
|
3683
|
-
current = decodeTree[this.treeIndex];
|
|
3684
|
-
valueLength = (current & BinTrieFlags2.VALUE_LENGTH) >> 14;
|
|
3685
|
-
if (valueLength !== 0) {
|
|
3686
|
-
if (char === CharCodes3.SEMI) {
|
|
3687
|
-
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
3688
|
-
}
|
|
3689
|
-
if (this.decodeMode !== DecodingMode2.Strict) {
|
|
3690
|
-
this.result = this.treeIndex;
|
|
3691
|
-
this.consumed += this.excess;
|
|
3692
|
-
this.excess = 0;
|
|
3693
|
-
}
|
|
3694
|
-
}
|
|
3695
|
-
}
|
|
3696
|
-
return -1;
|
|
3697
|
-
}
|
|
3698
|
-
/**
|
|
3699
|
-
* Emit a named entity that was not terminated with a semicolon.
|
|
3700
|
-
*
|
|
3701
|
-
* @returns The number of characters consumed.
|
|
3702
|
-
*/
|
|
3703
|
-
emitNotTerminatedNamedEntity() {
|
|
3704
|
-
var _a3;
|
|
3705
|
-
const { result, decodeTree } = this;
|
|
3706
|
-
const valueLength = (decodeTree[result] & BinTrieFlags2.VALUE_LENGTH) >> 14;
|
|
3707
|
-
this.emitNamedEntityData(result, valueLength, this.consumed);
|
|
3708
|
-
(_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.missingSemicolonAfterCharacterReference();
|
|
3709
|
-
return this.consumed;
|
|
3710
|
-
}
|
|
3711
|
-
/**
|
|
3712
|
-
* Emit a named entity.
|
|
3713
|
-
*
|
|
3714
|
-
* @param result The index of the entity in the decode tree.
|
|
3715
|
-
* @param valueLength The number of bytes in the entity.
|
|
3716
|
-
* @param consumed The number of characters consumed.
|
|
3717
|
-
*
|
|
3718
|
-
* @returns The number of characters consumed.
|
|
3719
|
-
*/
|
|
3720
|
-
emitNamedEntityData(result, valueLength, consumed) {
|
|
3721
|
-
const { decodeTree } = this;
|
|
3722
|
-
this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags2.VALUE_LENGTH : decodeTree[result + 1], consumed);
|
|
3723
|
-
if (valueLength === 3) {
|
|
3724
|
-
this.emitCodePoint(decodeTree[result + 2], consumed);
|
|
3725
|
-
}
|
|
3726
|
-
return consumed;
|
|
3727
|
-
}
|
|
3728
|
-
/**
|
|
3729
|
-
* Signal to the parser that the end of the input was reached.
|
|
3730
|
-
*
|
|
3731
|
-
* Remaining data will be emitted and relevant errors will be produced.
|
|
3732
|
-
*
|
|
3733
|
-
* @returns The number of characters consumed.
|
|
3734
|
-
*/
|
|
3735
|
-
end() {
|
|
3736
|
-
var _a3;
|
|
3737
|
-
switch (this.state) {
|
|
3738
|
-
case EntityDecoderState2.NamedEntity: {
|
|
3739
|
-
return this.result !== 0 && (this.decodeMode !== DecodingMode2.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;
|
|
3740
|
-
}
|
|
3741
|
-
// Otherwise, emit a numeric entity if we have one.
|
|
3742
|
-
case EntityDecoderState2.NumericDecimal: {
|
|
3743
|
-
return this.emitNumericEntity(0, 2);
|
|
3744
|
-
}
|
|
3745
|
-
case EntityDecoderState2.NumericHex: {
|
|
3746
|
-
return this.emitNumericEntity(0, 3);
|
|
3747
|
-
}
|
|
3748
|
-
case EntityDecoderState2.NumericStart: {
|
|
3749
|
-
(_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed);
|
|
3750
|
-
return 0;
|
|
3751
|
-
}
|
|
3752
|
-
case EntityDecoderState2.EntityStart: {
|
|
3753
|
-
return 0;
|
|
3754
|
-
}
|
|
3755
|
-
}
|
|
3756
|
-
}
|
|
3757
|
-
};
|
|
3758
|
-
function getDecoder(decodeTree) {
|
|
3759
|
-
let ret = "";
|
|
3760
|
-
const decoder = new EntityDecoder2(decodeTree, (str) => ret += fromCodePoint2(str));
|
|
3761
|
-
return function decodeWithTrie(str, decodeMode) {
|
|
3762
|
-
let lastIndex = 0;
|
|
3763
|
-
let offset = 0;
|
|
3764
|
-
while ((offset = str.indexOf("&", offset)) >= 0) {
|
|
3765
|
-
ret += str.slice(lastIndex, offset);
|
|
3766
|
-
decoder.startEntity(decodeMode);
|
|
3767
|
-
const len = decoder.write(
|
|
3768
|
-
str,
|
|
3769
|
-
// Skip the "&"
|
|
3770
|
-
offset + 1
|
|
3771
|
-
);
|
|
3772
|
-
if (len < 0) {
|
|
3773
|
-
lastIndex = offset + decoder.end();
|
|
3774
|
-
break;
|
|
3775
|
-
}
|
|
3776
|
-
lastIndex = offset + len;
|
|
3777
|
-
offset = len === 0 ? lastIndex + 1 : lastIndex;
|
|
3778
|
-
}
|
|
3779
|
-
const result = ret + str.slice(lastIndex);
|
|
3780
|
-
ret = "";
|
|
3781
|
-
return result;
|
|
3782
|
-
};
|
|
3783
|
-
}
|
|
3784
|
-
function determineBranch2(decodeTree, current, nodeIdx, char) {
|
|
3785
|
-
const branchCount = (current & BinTrieFlags2.BRANCH_LENGTH) >> 7;
|
|
3786
|
-
const jumpOffset = current & BinTrieFlags2.JUMP_TABLE;
|
|
3787
|
-
if (branchCount === 0) {
|
|
3788
|
-
return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
|
|
3789
|
-
}
|
|
3790
|
-
if (jumpOffset) {
|
|
3791
|
-
const value = char - jumpOffset;
|
|
3792
|
-
return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1;
|
|
3793
|
-
}
|
|
3794
|
-
let lo = nodeIdx;
|
|
3795
|
-
let hi = lo + branchCount - 1;
|
|
3796
|
-
while (lo <= hi) {
|
|
3797
|
-
const mid = lo + hi >>> 1;
|
|
3798
|
-
const midVal = decodeTree[mid];
|
|
3799
|
-
if (midVal < char) {
|
|
3800
|
-
lo = mid + 1;
|
|
3801
|
-
} else if (midVal > char) {
|
|
3802
|
-
hi = mid - 1;
|
|
3803
|
-
} else {
|
|
3804
|
-
return decodeTree[mid + branchCount];
|
|
3805
|
-
}
|
|
3806
|
-
}
|
|
3807
|
-
return -1;
|
|
3808
|
-
}
|
|
3809
|
-
var htmlDecoder = getDecoder(decode_data_html_default);
|
|
3810
|
-
var xmlDecoder = getDecoder(decode_data_xml_default);
|
|
3811
|
-
|
|
3812
|
-
// node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/encode-html.js
|
|
3813
|
-
function restoreDiff(arr) {
|
|
3814
|
-
for (let i = 1; i < arr.length; i++) {
|
|
3815
|
-
arr[i][0] += arr[i - 1][0] + 1;
|
|
3816
|
-
}
|
|
3817
|
-
return arr;
|
|
3818
|
-
}
|
|
3819
|
-
var encode_html_default = new Map(/* @__PURE__ */ restoreDiff([[9, "	"], [0, "
"], [22, "!"], [0, """], [0, "#"], [0, "$"], [0, "%"], [0, "&"], [0, "'"], [0, "("], [0, ")"], [0, "*"], [0, "+"], [0, ","], [1, "."], [0, "/"], [10, ":"], [0, ";"], [0, { v: "<", n: 8402, o: "<⃒" }], [0, { v: "=", n: 8421, o: "=⃥" }], [0, { v: ">", n: 8402, o: ">⃒" }], [0, "?"], [0, "@"], [26, "["], [0, "\"], [0, "]"], [0, "^"], [0, "_"], [0, "`"], [5, { n: 106, o: "fj" }], [20, "{"], [0, "|"], [0, "}"], [34, " "], [0, "¡"], [0, "¢"], [0, "£"], [0, "¤"], [0, "¥"], [0, "¦"], [0, "§"], [0, "¨"], [0, "©"], [0, "ª"], [0, "«"], [0, "¬"], [0, "­"], [0, "®"], [0, "¯"], [0, "°"], [0, "±"], [0, "²"], [0, "³"], [0, "´"], [0, "µ"], [0, "¶"], [0, "·"], [0, "¸"], [0, "¹"], [0, "º"], [0, "»"], [0, "¼"], [0, "½"], [0, "¾"], [0, "¿"], [0, "À"], [0, "Á"], [0, "Â"], [0, "Ã"], [0, "Ä"], [0, "Å"], [0, "Æ"], [0, "Ç"], [0, "È"], [0, "É"], [0, "Ê"], [0, "Ë"], [0, "Ì"], [0, "Í"], [0, "Î"], [0, "Ï"], [0, "Ð"], [0, "Ñ"], [0, "Ò"], [0, "Ó"], [0, "Ô"], [0, "Õ"], [0, "Ö"], [0, "×"], [0, "Ø"], [0, "Ù"], [0, "Ú"], [0, "Û"], [0, "Ü"], [0, "Ý"], [0, "Þ"], [0, "ß"], [0, "à"], [0, "á"], [0, "â"], [0, "ã"], [0, "ä"], [0, "å"], [0, "æ"], [0, "ç"], [0, "è"], [0, "é"], [0, "ê"], [0, "ë"], [0, "ì"], [0, "í"], [0, "î"], [0, "ï"], [0, "ð"], [0, "ñ"], [0, "ò"], [0, "ó"], [0, "ô"], [0, "õ"], [0, "ö"], [0, "÷"], [0, "ø"], [0, "ù"], [0, "ú"], [0, "û"], [0, "ü"], [0, "ý"], [0, "þ"], [0, "ÿ"], [0, "Ā"], [0, "ā"], [0, "Ă"], [0, "ă"], [0, "Ą"], [0, "ą"], [0, "Ć"], [0, "ć"], [0, "Ĉ"], [0, "ĉ"], [0, "Ċ"], [0, "ċ"], [0, "Č"], [0, "č"], [0, "Ď"], [0, "ď"], [0, "Đ"], [0, "đ"], [0, "Ē"], [0, "ē"], [2, "Ė"], [0, "ė"], [0, "Ę"], [0, "ę"], [0, "Ě"], [0, "ě"], [0, "Ĝ"], [0, "ĝ"], [0, "Ğ"], [0, "ğ"], [0, "Ġ"], [0, "ġ"], [0, "Ģ"], [1, "Ĥ"], [0, "ĥ"], [0, "Ħ"], [0, "ħ"], [0, "Ĩ"], [0, "ĩ"], [0, "Ī"], [0, "ī"], [2, "Į"], [0, "į"], [0, "İ"], [0, "ı"], [0, "IJ"], [0, "ij"], [0, "Ĵ"], [0, "ĵ"], [0, "Ķ"], [0, "ķ"], [0, "ĸ"], [0, "Ĺ"], [0, "ĺ"], [0, "Ļ"], [0, "ļ"], [0, "Ľ"], [0, "ľ"], [0, "Ŀ"], [0, "ŀ"], [0, "Ł"], [0, "ł"], [0, "Ń"], [0, "ń"], [0, "Ņ"], [0, "ņ"], [0, "Ň"], [0, "ň"], [0, "ʼn"], [0, "Ŋ"], [0, "ŋ"], [0, "Ō"], [0, "ō"], [2, "Ő"], [0, "ő"], [0, "Œ"], [0, "œ"], [0, "Ŕ"], [0, "ŕ"], [0, "Ŗ"], [0, "ŗ"], [0, "Ř"], [0, "ř"], [0, "Ś"], [0, "ś"], [0, "Ŝ"], [0, "ŝ"], [0, "Ş"], [0, "ş"], [0, "Š"], [0, "š"], [0, "Ţ"], [0, "ţ"], [0, "Ť"], [0, "ť"], [0, "Ŧ"], [0, "ŧ"], [0, "Ũ"], [0, "ũ"], [0, "Ū"], [0, "ū"], [0, "Ŭ"], [0, "ŭ"], [0, "Ů"], [0, "ů"], [0, "Ű"], [0, "ű"], [0, "Ų"], [0, "ų"], [0, "Ŵ"], [0, "ŵ"], [0, "Ŷ"], [0, "ŷ"], [0, "Ÿ"], [0, "Ź"], [0, "ź"], [0, "Ż"], [0, "ż"], [0, "Ž"], [0, "ž"], [19, "ƒ"], [34, "Ƶ"], [63, "ǵ"], [65, "ȷ"], [142, "ˆ"], [0, "ˇ"], [16, "˘"], [0, "˙"], [0, "˚"], [0, "˛"], [0, "˜"], [0, "˝"], [51, "̑"], [127, "Α"], [0, "Β"], [0, "Γ"], [0, "Δ"], [0, "Ε"], [0, "Ζ"], [0, "Η"], [0, "Θ"], [0, "Ι"], [0, "Κ"], [0, "Λ"], [0, "Μ"], [0, "Ν"], [0, "Ξ"], [0, "Ο"], [0, "Π"], [0, "Ρ"], [1, "Σ"], [0, "Τ"], [0, "Υ"], [0, "Φ"], [0, "Χ"], [0, "Ψ"], [0, "Ω"], [7, "α"], [0, "β"], [0, "γ"], [0, "δ"], [0, "ε"], [0, "ζ"], [0, "η"], [0, "θ"], [0, "ι"], [0, "κ"], [0, "λ"], [0, "μ"], [0, "ν"], [0, "ξ"], [0, "ο"], [0, "π"], [0, "ρ"], [0, "ς"], [0, "σ"], [0, "τ"], [0, "υ"], [0, "φ"], [0, "χ"], [0, "ψ"], [0, "ω"], [7, "ϑ"], [0, "ϒ"], [2, "ϕ"], [0, "ϖ"], [5, "Ϝ"], [0, "ϝ"], [18, "ϰ"], [0, "ϱ"], [3, "ϵ"], [0, "϶"], [10, "Ё"], [0, "Ђ"], [0, "Ѓ"], [0, "Є"], [0, "Ѕ"], [0, "І"], [0, "Ї"], [0, "Ј"], [0, "Љ"], [0, "Њ"], [0, "Ћ"], [0, "Ќ"], [1, "Ў"], [0, "Џ"], [0, "А"], [0, "Б"], [0, "В"], [0, "Г"], [0, "Д"], [0, "Е"], [0, "Ж"], [0, "З"], [0, "И"], [0, "Й"], [0, "К"], [0, "Л"], [0, "М"], [0, "Н"], [0, "О"], [0, "П"], [0, "Р"], [0, "С"], [0, "Т"], [0, "У"], [0, "Ф"], [0, "Х"], [0, "Ц"], [0, "Ч"], [0, "Ш"], [0, "Щ"], [0, "Ъ"], [0, "Ы"], [0, "Ь"], [0, "Э"], [0, "Ю"], [0, "Я"], [0, "а"], [0, "б"], [0, "в"], [0, "г"], [0, "д"], [0, "е"], [0, "ж"], [0, "з"], [0, "и"], [0, "й"], [0, "к"], [0, "л"], [0, "м"], [0, "н"], [0, "о"], [0, "п"], [0, "р"], [0, "с"], [0, "т"], [0, "у"], [0, "ф"], [0, "х"], [0, "ц"], [0, "ч"], [0, "ш"], [0, "щ"], [0, "ъ"], [0, "ы"], [0, "ь"], [0, "э"], [0, "ю"], [0, "я"], [1, "ё"], [0, "ђ"], [0, "ѓ"], [0, "є"], [0, "ѕ"], [0, "і"], [0, "ї"], [0, "ј"], [0, "љ"], [0, "њ"], [0, "ћ"], [0, "ќ"], [1, "ў"], [0, "џ"], [7074, " "], [0, " "], [0, " "], [0, " "], [1, " "], [0, " "], [0, " "], [0, " "], [0, "​"], [0, "‌"], [0, "‍"], [0, "‎"], [0, "‏"], [0, "‐"], [2, "–"], [0, "—"], [0, "―"], [0, "‖"], [1, "‘"], [0, "’"], [0, "‚"], [1, "“"], [0, "”"], [0, "„"], [1, "†"], [0, "‡"], [0, "•"], [2, "‥"], [0, "…"], [9, "‰"], [0, "‱"], [0, "′"], [0, "″"], [0, "‴"], [0, "‵"], [3, "‹"], [0, "›"], [3, "‾"], [2, "⁁"], [1, "⁃"], [0, "⁄"], [10, "⁏"], [7, "⁗"], [7, { v: " ", n: 8202, o: "  " }], [0, "⁠"], [0, "⁡"], [0, "⁢"], [0, "⁣"], [72, "€"], [46, "⃛"], [0, "⃜"], [37, "ℂ"], [2, "℅"], [4, "ℊ"], [0, "ℋ"], [0, "ℌ"], [0, "ℍ"], [0, "ℎ"], [0, "ℏ"], [0, "ℐ"], [0, "ℑ"], [0, "ℒ"], [0, "ℓ"], [1, "ℕ"], [0, "№"], [0, "℗"], [0, "℘"], [0, "ℙ"], [0, "ℚ"], [0, "ℛ"], [0, "ℜ"], [0, "ℝ"], [0, "℞"], [3, "™"], [1, "ℤ"], [2, "℧"], [0, "ℨ"], [0, "℩"], [2, "ℬ"], [0, "ℭ"], [1, "ℯ"], [0, "ℰ"], [0, "ℱ"], [1, "ℳ"], [0, "ℴ"], [0, "ℵ"], [0, "ℶ"], [0, "ℷ"], [0, "ℸ"], [12, "ⅅ"], [0, "ⅆ"], [0, "ⅇ"], [0, "ⅈ"], [10, "⅓"], [0, "⅔"], [0, "⅕"], [0, "⅖"], [0, "⅗"], [0, "⅘"], [0, "⅙"], [0, "⅚"], [0, "⅛"], [0, "⅜"], [0, "⅝"], [0, "⅞"], [49, "←"], [0, "↑"], [0, "→"], [0, "↓"], [0, "↔"], [0, "↕"], [0, "↖"], [0, "↗"], [0, "↘"], [0, "↙"], [0, "↚"], [0, "↛"], [1, { v: "↝", n: 824, o: "↝̸" }], [0, "↞"], [0, "↟"], [0, "↠"], [0, "↡"], [0, "↢"], [0, "↣"], [0, "↤"], [0, "↥"], [0, "↦"], [0, "↧"], [1, "↩"], [0, "↪"], [0, "↫"], [0, "↬"], [0, "↭"], [0, "↮"], [1, "↰"], [0, "↱"], [0, "↲"], [0, "↳"], [1, "↵"], [0, "↶"], [0, "↷"], [2, "↺"], [0, "↻"], [0, "↼"], [0, "↽"], [0, "↾"], [0, "↿"], [0, "⇀"], [0, "⇁"], [0, "⇂"], [0, "⇃"], [0, "⇄"], [0, "⇅"], [0, "⇆"], [0, "⇇"], [0, "⇈"], [0, "⇉"], [0, "⇊"], [0, "⇋"], [0, "⇌"], [0, "⇍"], [0, "⇎"], [0, "⇏"], [0, "⇐"], [0, "⇑"], [0, "⇒"], [0, "⇓"], [0, "⇔"], [0, "⇕"], [0, "⇖"], [0, "⇗"], [0, "⇘"], [0, "⇙"], [0, "⇚"], [0, "⇛"], [1, "⇝"], [6, "⇤"], [0, "⇥"], [15, "⇵"], [7, "⇽"], [0, "⇾"], [0, "⇿"], [0, "∀"], [0, "∁"], [0, { v: "∂", n: 824, o: "∂̸" }], [0, "∃"], [0, "∄"], [0, "∅"], [1, "∇"], [0, "∈"], [0, "∉"], [1, "∋"], [0, "∌"], [2, "∏"], [0, "∐"], [0, "∑"], [0, "−"], [0, "∓"], [0, "∔"], [1, "∖"], [0, "∗"], [0, "∘"], [1, "√"], [2, "∝"], [0, "∞"], [0, "∟"], [0, { v: "∠", n: 8402, o: "∠⃒" }], [0, "∡"], [0, "∢"], [0, "∣"], [0, "∤"], [0, "∥"], [0, "∦"], [0, "∧"], [0, "∨"], [0, { v: "∩", n: 65024, o: "∩︀" }], [0, { v: "∪", n: 65024, o: "∪︀" }], [0, "∫"], [0, "∬"], [0, "∭"], [0, "∮"], [0, "∯"], [0, "∰"], [0, "∱"], [0, "∲"], [0, "∳"], [0, "∴"], [0, "∵"], [0, "∶"], [0, "∷"], [0, "∸"], [1, "∺"], [0, "∻"], [0, { v: "∼", n: 8402, o: "∼⃒" }], [0, { v: "∽", n: 817, o: "∽̱" }], [0, { v: "∾", n: 819, o: "∾̳" }], [0, "∿"], [0, "≀"], [0, "≁"], [0, { v: "≂", n: 824, o: "≂̸" }], [0, "≃"], [0, "≄"], [0, "≅"], [0, "≆"], [0, "≇"], [0, "≈"], [0, "≉"], [0, "≊"], [0, { v: "≋", n: 824, o: "≋̸" }], [0, "≌"], [0, { v: "≍", n: 8402, o: "≍⃒" }], [0, { v: "≎", n: 824, o: "≎̸" }], [0, { v: "≏", n: 824, o: "≏̸" }], [0, { v: "≐", n: 824, o: "≐̸" }], [0, "≑"], [0, "≒"], [0, "≓"], [0, "≔"], [0, "≕"], [0, "≖"], [0, "≗"], [1, "≙"], [0, "≚"], [1, "≜"], [2, "≟"], [0, "≠"], [0, { v: "≡", n: 8421, o: "≡⃥" }], [0, "≢"], [1, { v: "≤", n: 8402, o: "≤⃒" }], [0, { v: "≥", n: 8402, o: "≥⃒" }], [0, { v: "≦", n: 824, o: "≦̸" }], [0, { v: "≧", n: 824, o: "≧̸" }], [0, { v: "≨", n: 65024, o: "≨︀" }], [0, { v: "≩", n: 65024, o: "≩︀" }], [0, { v: "≪", n: new Map(/* @__PURE__ */ restoreDiff([[824, "≪̸"], [7577, "≪⃒"]])) }], [0, { v: "≫", n: new Map(/* @__PURE__ */ restoreDiff([[824, "≫̸"], [7577, "≫⃒"]])) }], [0, "≬"], [0, "≭"], [0, "≮"], [0, "≯"], [0, "≰"], [0, "≱"], [0, "≲"], [0, "≳"], [0, "≴"], [0, "≵"], [0, "≶"], [0, "≷"], [0, "≸"], [0, "≹"], [0, "≺"], [0, "≻"], [0, "≼"], [0, "≽"], [0, "≾"], [0, { v: "≿", n: 824, o: "≿̸" }], [0, "⊀"], [0, "⊁"], [0, { v: "⊂", n: 8402, o: "⊂⃒" }], [0, { v: "⊃", n: 8402, o: "⊃⃒" }], [0, "⊄"], [0, "⊅"], [0, "⊆"], [0, "⊇"], [0, "⊈"], [0, "⊉"], [0, { v: "⊊", n: 65024, o: "⊊︀" }], [0, { v: "⊋", n: 65024, o: "⊋︀" }], [1, "⊍"], [0, "⊎"], [0, { v: "⊏", n: 824, o: "⊏̸" }], [0, { v: "⊐", n: 824, o: "⊐̸" }], [0, "⊑"], [0, "⊒"], [0, { v: "⊓", n: 65024, o: "⊓︀" }], [0, { v: "⊔", n: 65024, o: "⊔︀" }], [0, "⊕"], [0, "⊖"], [0, "⊗"], [0, "⊘"], [0, "⊙"], [0, "⊚"], [0, "⊛"], [1, "⊝"], [0, "⊞"], [0, "⊟"], [0, "⊠"], [0, "⊡"], [0, "⊢"], [0, "⊣"], [0, "⊤"], [0, "⊥"], [1, "⊧"], [0, "⊨"], [0, "⊩"], [0, "⊪"], [0, "⊫"], [0, "⊬"], [0, "⊭"], [0, "⊮"], [0, "⊯"], [0, "⊰"], [1, "⊲"], [0, "⊳"], [0, { v: "⊴", n: 8402, o: "⊴⃒" }], [0, { v: "⊵", n: 8402, o: "⊵⃒" }], [0, "⊶"], [0, "⊷"], [0, "⊸"], [0, "⊹"], [0, "⊺"], [0, "⊻"], [1, "⊽"], [0, "⊾"], [0, "⊿"], [0, "⋀"], [0, "⋁"], [0, "⋂"], [0, "⋃"], [0, "⋄"], [0, "⋅"], [0, "⋆"], [0, "⋇"], [0, "⋈"], [0, "⋉"], [0, "⋊"], [0, "⋋"], [0, "⋌"], [0, "⋍"], [0, "⋎"], [0, "⋏"], [0, "⋐"], [0, "⋑"], [0, "⋒"], [0, "⋓"], [0, "⋔"], [0, "⋕"], [0, "⋖"], [0, "⋗"], [0, { v: "⋘", n: 824, o: "⋘̸" }], [0, { v: "⋙", n: 824, o: "⋙̸" }], [0, { v: "⋚", n: 65024, o: "⋚︀" }], [0, { v: "⋛", n: 65024, o: "⋛︀" }], [2, "⋞"], [0, "⋟"], [0, "⋠"], [0, "⋡"], [0, "⋢"], [0, "⋣"], [2, "⋦"], [0, "⋧"], [0, "⋨"], [0, "⋩"], [0, "⋪"], [0, "⋫"], [0, "⋬"], [0, "⋭"], [0, "⋮"], [0, "⋯"], [0, "⋰"], [0, "⋱"], [0, "⋲"], [0, "⋳"], [0, "⋴"], [0, { v: "⋵", n: 824, o: "⋵̸" }], [0, "⋶"], [0, "⋷"], [1, { v: "⋹", n: 824, o: "⋹̸" }], [0, "⋺"], [0, "⋻"], [0, "⋼"], [0, "⋽"], [0, "⋾"], [6, "⌅"], [0, "⌆"], [1, "⌈"], [0, "⌉"], [0, "⌊"], [0, "⌋"], [0, "⌌"], [0, "⌍"], [0, "⌎"], [0, "⌏"], [0, "⌐"], [1, "⌒"], [0, "⌓"], [1, "⌕"], [0, "⌖"], [5, "⌜"], [0, "⌝"], [0, "⌞"], [0, "⌟"], [2, "⌢"], [0, "⌣"], [9, "⌭"], [0, "⌮"], [7, "⌶"], [6, "⌽"], [1, "⌿"], [60, "⍼"], [51, "⎰"], [0, "⎱"], [2, "⎴"], [0, "⎵"], [0, "⎶"], [37, "⏜"], [0, "⏝"], [0, "⏞"], [0, "⏟"], [2, "⏢"], [4, "⏧"], [59, "␣"], [164, "Ⓢ"], [55, "─"], [1, "│"], [9, "┌"], [3, "┐"], [3, "└"], [3, "┘"], [3, "├"], [7, "┤"], [7, "┬"], [7, "┴"], [7, "┼"], [19, "═"], [0, "║"], [0, "╒"], [0, "╓"], [0, "╔"], [0, "╕"], [0, "╖"], [0, "╗"], [0, "╘"], [0, "╙"], [0, "╚"], [0, "╛"], [0, "╜"], [0, "╝"], [0, "╞"], [0, "╟"], [0, "╠"], [0, "╡"], [0, "╢"], [0, "╣"], [0, "╤"], [0, "╥"], [0, "╦"], [0, "╧"], [0, "╨"], [0, "╩"], [0, "╪"], [0, "╫"], [0, "╬"], [19, "▀"], [3, "▄"], [3, "█"], [8, "░"], [0, "▒"], [0, "▓"], [13, "□"], [8, "▪"], [0, "▫"], [1, "▭"], [0, "▮"], [2, "▱"], [1, "△"], [0, "▴"], [0, "▵"], [2, "▸"], [0, "▹"], [3, "▽"], [0, "▾"], [0, "▿"], [2, "◂"], [0, "◃"], [6, "◊"], [0, "○"], [32, "◬"], [2, "◯"], [8, "◸"], [0, "◹"], [0, "◺"], [0, "◻"], [0, "◼"], [8, "★"], [0, "☆"], [7, "☎"], [49, "♀"], [1, "♂"], [29, "♠"], [2, "♣"], [1, "♥"], [0, "♦"], [3, "♪"], [2, "♭"], [0, "♮"], [0, "♯"], [163, "✓"], [3, "✗"], [8, "✠"], [21, "✶"], [33, "❘"], [25, "❲"], [0, "❳"], [84, "⟈"], [0, "⟉"], [28, "⟦"], [0, "⟧"], [0, "⟨"], [0, "⟩"], [0, "⟪"], [0, "⟫"], [0, "⟬"], [0, "⟭"], [7, "⟵"], [0, "⟶"], [0, "⟷"], [0, "⟸"], [0, "⟹"], [0, "⟺"], [1, "⟼"], [2, "⟿"], [258, "⤂"], [0, "⤃"], [0, "⤄"], [0, "⤅"], [6, "⤌"], [0, "⤍"], [0, "⤎"], [0, "⤏"], [0, "⤐"], [0, "⤑"], [0, "⤒"], [0, "⤓"], [2, "⤖"], [2, "⤙"], [0, "⤚"], [0, "⤛"], [0, "⤜"], [0, "⤝"], [0, "⤞"], [0, "⤟"], [0, "⤠"], [2, "⤣"], [0, "⤤"], [0, "⤥"], [0, "⤦"], [0, "⤧"], [0, "⤨"], [0, "⤩"], [0, "⤪"], [8, { v: "⤳", n: 824, o: "⤳̸" }], [1, "⤵"], [0, "⤶"], [0, "⤷"], [0, "⤸"], [0, "⤹"], [2, "⤼"], [0, "⤽"], [7, "⥅"], [2, "⥈"], [0, "⥉"], [0, "⥊"], [0, "⥋"], [2, "⥎"], [0, "⥏"], [0, "⥐"], [0, "⥑"], [0, "⥒"], [0, "⥓"], [0, "⥔"], [0, "⥕"], [0, "⥖"], [0, "⥗"], [0, "⥘"], [0, "⥙"], [0, "⥚"], [0, "⥛"], [0, "⥜"], [0, "⥝"], [0, "⥞"], [0, "⥟"], [0, "⥠"], [0, "⥡"], [0, "⥢"], [0, "⥣"], [0, "⥤"], [0, "⥥"], [0, "⥦"], [0, "⥧"], [0, "⥨"], [0, "⥩"], [0, "⥪"], [0, "⥫"], [0, "⥬"], [0, "⥭"], [0, "⥮"], [0, "⥯"], [0, "⥰"], [0, "⥱"], [0, "⥲"], [0, "⥳"], [0, "⥴"], [0, "⥵"], [0, "⥶"], [1, "⥸"], [0, "⥹"], [1, "⥻"], [0, "⥼"], [0, "⥽"], [0, "⥾"], [0, "⥿"], [5, "⦅"], [0, "⦆"], [4, "⦋"], [0, "⦌"], [0, "⦍"], [0, "⦎"], [0, "⦏"], [0, "⦐"], [0, "⦑"], [0, "⦒"], [0, "⦓"], [0, "⦔"], [0, "⦕"], [0, "⦖"], [3, "⦚"], [1, "⦜"], [0, "⦝"], [6, "⦤"], [0, "⦥"], [0, "⦦"], [0, "⦧"], [0, "⦨"], [0, "⦩"], [0, "⦪"], [0, "⦫"], [0, "⦬"], [0, "⦭"], [0, "⦮"], [0, "⦯"], [0, "⦰"], [0, "⦱"], [0, "⦲"], [0, "⦳"], [0, "⦴"], [0, "⦵"], [0, "⦶"], [0, "⦷"], [1, "⦹"], [1, "⦻"], [0, "⦼"], [1, "⦾"], [0, "⦿"], [0, "⧀"], [0, "⧁"], [0, "⧂"], [0, "⧃"], [0, "⧄"], [0, "⧅"], [3, "⧉"], [3, "⧍"], [0, "⧎"], [0, { v: "⧏", n: 824, o: "⧏̸" }], [0, { v: "⧐", n: 824, o: "⧐̸" }], [11, "⧜"], [0, "⧝"], [0, "⧞"], [4, "⧣"], [0, "⧤"], [0, "⧥"], [5, "⧫"], [8, "⧴"], [1, "⧶"], [9, "⨀"], [0, "⨁"], [0, "⨂"], [1, "⨄"], [1, "⨆"], [5, "⨌"], [0, "⨍"], [2, "⨐"], [0, "⨑"], [0, "⨒"], [0, "⨓"], [0, "⨔"], [0, "⨕"], [0, "⨖"], [0, "⨗"], [10, "⨢"], [0, "⨣"], [0, "⨤"], [0, "⨥"], [0, "⨦"], [0, "⨧"], [1, "⨩"], [0, "⨪"], [2, "⨭"], [0, "⨮"], [0, "⨯"], [0, "⨰"], [0, "⨱"], [1, "⨳"], [0, "⨴"], [0, "⨵"], [0, "⨶"], [0, "⨷"], [0, "⨸"], [0, "⨹"], [0, "⨺"], [0, "⨻"], [0, "⨼"], [2, "⨿"], [0, "⩀"], [1, "⩂"], [0, "⩃"], [0, "⩄"], [0, "⩅"], [0, "⩆"], [0, "⩇"], [0, "⩈"], [0, "⩉"], [0, "⩊"], [0, "⩋"], [0, "⩌"], [0, "⩍"], [2, "⩐"], [2, "⩓"], [0, "⩔"], [0, "⩕"], [0, "⩖"], [0, "⩗"], [0, "⩘"], [1, "⩚"], [0, "⩛"], [0, "⩜"], [0, "⩝"], [1, "⩟"], [6, "⩦"], [3, "⩪"], [2, { v: "⩭", n: 824, o: "⩭̸" }], [0, "⩮"], [0, "⩯"], [0, { v: "⩰", n: 824, o: "⩰̸" }], [0, "⩱"], [0, "⩲"], [0, "⩳"], [0, "⩴"], [0, "⩵"], [1, "⩷"], [0, "⩸"], [0, "⩹"], [0, "⩺"], [0, "⩻"], [0, "⩼"], [0, { v: "⩽", n: 824, o: "⩽̸" }], [0, { v: "⩾", n: 824, o: "⩾̸" }], [0, "⩿"], [0, "⪀"], [0, "⪁"], [0, "⪂"], [0, "⪃"], [0, "⪄"], [0, "⪅"], [0, "⪆"], [0, "⪇"], [0, "⪈"], [0, "⪉"], [0, "⪊"], [0, "⪋"], [0, "⪌"], [0, "⪍"], [0, "⪎"], [0, "⪏"], [0, "⪐"], [0, "⪑"], [0, "⪒"], [0, "⪓"], [0, "⪔"], [0, "⪕"], [0, "⪖"], [0, "⪗"], [0, "⪘"], [0, "⪙"], [0, "⪚"], [2, "⪝"], [0, "⪞"], [0, "⪟"], [0, "⪠"], [0, { v: "⪡", n: 824, o: "⪡̸" }], [0, { v: "⪢", n: 824, o: "⪢̸" }], [1, "⪤"], [0, "⪥"], [0, "⪦"], [0, "⪧"], [0, "⪨"], [0, "⪩"], [0, "⪪"], [0, "⪫"], [0, { v: "⪬", n: 65024, o: "⪬︀" }], [0, { v: "⪭", n: 65024, o: "⪭︀" }], [0, "⪮"], [0, { v: "⪯", n: 824, o: "⪯̸" }], [0, { v: "⪰", n: 824, o: "⪰̸" }], [2, "⪳"], [0, "⪴"], [0, "⪵"], [0, "⪶"], [0, "⪷"], [0, "⪸"], [0, "⪹"], [0, "⪺"], [0, "⪻"], [0, "⪼"], [0, "⪽"], [0, "⪾"], [0, "⪿"], [0, "⫀"], [0, "⫁"], [0, "⫂"], [0, "⫃"], [0, "⫄"], [0, { v: "⫅", n: 824, o: "⫅̸" }], [0, { v: "⫆", n: 824, o: "⫆̸" }], [0, "⫇"], [0, "⫈"], [2, { v: "⫋", n: 65024, o: "⫋︀" }], [0, { v: "⫌", n: 65024, o: "⫌︀" }], [2, "⫏"], [0, "⫐"], [0, "⫑"], [0, "⫒"], [0, "⫓"], [0, "⫔"], [0, "⫕"], [0, "⫖"], [0, "⫗"], [0, "⫘"], [0, "⫙"], [0, "⫚"], [0, "⫛"], [8, "⫤"], [1, "⫦"], [0, "⫧"], [0, "⫨"], [0, "⫩"], [1, "⫫"], [0, "⫬"], [0, "⫭"], [0, "⫮"], [0, "⫯"], [0, "⫰"], [0, "⫱"], [0, "⫲"], [0, "⫳"], [9, { v: "⫽", n: 8421, o: "⫽⃥" }], [44343, { n: new Map(/* @__PURE__ */ restoreDiff([[56476, "𝒜"], [1, "𝒞"], [0, "𝒟"], [2, "𝒢"], [2, "𝒥"], [0, "𝒦"], [2, "𝒩"], [0, "𝒪"], [0, "𝒫"], [0, "𝒬"], [1, "𝒮"], [0, "𝒯"], [0, "𝒰"], [0, "𝒱"], [0, "𝒲"], [0, "𝒳"], [0, "𝒴"], [0, "𝒵"], [0, "𝒶"], [0, "𝒷"], [0, "𝒸"], [0, "𝒹"], [1, "𝒻"], [1, "𝒽"], [0, "𝒾"], [0, "𝒿"], [0, "𝓀"], [0, "𝓁"], [0, "𝓂"], [0, "𝓃"], [1, "𝓅"], [0, "𝓆"], [0, "𝓇"], [0, "𝓈"], [0, "𝓉"], [0, "𝓊"], [0, "𝓋"], [0, "𝓌"], [0, "𝓍"], [0, "𝓎"], [0, "𝓏"], [52, "𝔄"], [0, "𝔅"], [1, "𝔇"], [0, "𝔈"], [0, "𝔉"], [0, "𝔊"], [2, "𝔍"], [0, "𝔎"], [0, "𝔏"], [0, "𝔐"], [0, "𝔑"], [0, "𝔒"], [0, "𝔓"], [0, "𝔔"], [1, "𝔖"], [0, "𝔗"], [0, "𝔘"], [0, "𝔙"], [0, "𝔚"], [0, "𝔛"], [0, "𝔜"], [1, "𝔞"], [0, "𝔟"], [0, "𝔠"], [0, "𝔡"], [0, "𝔢"], [0, "𝔣"], [0, "𝔤"], [0, "𝔥"], [0, "𝔦"], [0, "𝔧"], [0, "𝔨"], [0, "𝔩"], [0, "𝔪"], [0, "𝔫"], [0, "𝔬"], [0, "𝔭"], [0, "𝔮"], [0, "𝔯"], [0, "𝔰"], [0, "𝔱"], [0, "𝔲"], [0, "𝔳"], [0, "𝔴"], [0, "𝔵"], [0, "𝔶"], [0, "𝔷"], [0, "𝔸"], [0, "𝔹"], [1, "𝔻"], [0, "𝔼"], [0, "𝔽"], [0, "𝔾"], [1, "𝕀"], [0, "𝕁"], [0, "𝕂"], [0, "𝕃"], [0, "𝕄"], [1, "𝕆"], [3, "𝕊"], [0, "𝕋"], [0, "𝕌"], [0, "𝕍"], [0, "𝕎"], [0, "𝕏"], [0, "𝕐"], [1, "𝕒"], [0, "𝕓"], [0, "𝕔"], [0, "𝕕"], [0, "𝕖"], [0, "𝕗"], [0, "𝕘"], [0, "𝕙"], [0, "𝕚"], [0, "𝕛"], [0, "𝕜"], [0, "𝕝"], [0, "𝕞"], [0, "𝕟"], [0, "𝕠"], [0, "𝕡"], [0, "𝕢"], [0, "𝕣"], [0, "𝕤"], [0, "𝕥"], [0, "𝕦"], [0, "𝕧"], [0, "𝕨"], [0, "𝕩"], [0, "𝕪"], [0, "𝕫"]])) }], [8906, "ff"], [0, "fi"], [0, "fl"], [0, "ffi"], [0, "ffl"]]));
|
|
3820
|
-
|
|
3821
|
-
// node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/escape.js
|
|
3822
|
-
var xmlCodeMap = /* @__PURE__ */ new Map([
|
|
3823
|
-
[34, """],
|
|
3824
|
-
[38, "&"],
|
|
3825
|
-
[39, "'"],
|
|
3826
|
-
[60, "<"],
|
|
3827
|
-
[62, ">"]
|
|
3828
|
-
]);
|
|
3829
|
-
var getCodePoint = (
|
|
3830
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
3831
|
-
String.prototype.codePointAt != null ? (str, index) => str.codePointAt(index) : (
|
|
3832
|
-
// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
|
|
3833
|
-
(c, index) => (c.charCodeAt(index) & 64512) === 55296 ? (c.charCodeAt(index) - 55296) * 1024 + c.charCodeAt(index + 1) - 56320 + 65536 : c.charCodeAt(index)
|
|
3834
|
-
)
|
|
3835
|
-
);
|
|
3836
|
-
function getEscaper(regex, map) {
|
|
3837
|
-
return function escape2(data) {
|
|
3838
|
-
let match;
|
|
3839
|
-
let lastIdx = 0;
|
|
3840
|
-
let result = "";
|
|
3841
|
-
while (match = regex.exec(data)) {
|
|
3842
|
-
if (lastIdx !== match.index) {
|
|
3843
|
-
result += data.substring(lastIdx, match.index);
|
|
3844
|
-
}
|
|
3845
|
-
result += map.get(match[0].charCodeAt(0));
|
|
3846
|
-
lastIdx = match.index + 1;
|
|
3847
|
-
}
|
|
3848
|
-
return result + data.substring(lastIdx);
|
|
3849
|
-
};
|
|
3850
|
-
}
|
|
3851
|
-
var escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap);
|
|
3852
|
-
var escapeAttribute = getEscaper(/["&\u00A0]/g, /* @__PURE__ */ new Map([
|
|
3853
|
-
[34, """],
|
|
3854
|
-
[38, "&"],
|
|
3855
|
-
[160, " "]
|
|
3856
|
-
]));
|
|
3857
|
-
var escapeText = getEscaper(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([
|
|
3858
|
-
[38, "&"],
|
|
3859
|
-
[60, "<"],
|
|
3860
|
-
[62, ">"],
|
|
3861
|
-
[160, " "]
|
|
3862
|
-
]));
|
|
3863
|
-
|
|
3864
|
-
// node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/index.js
|
|
3865
|
-
var EntityLevel;
|
|
3866
|
-
(function(EntityLevel2) {
|
|
3867
|
-
EntityLevel2[EntityLevel2["XML"] = 0] = "XML";
|
|
3868
|
-
EntityLevel2[EntityLevel2["HTML"] = 1] = "HTML";
|
|
3869
|
-
})(EntityLevel || (EntityLevel = {}));
|
|
3870
|
-
var EncodingMode;
|
|
3871
|
-
(function(EncodingMode2) {
|
|
3872
|
-
EncodingMode2[EncodingMode2["UTF8"] = 0] = "UTF8";
|
|
3873
|
-
EncodingMode2[EncodingMode2["ASCII"] = 1] = "ASCII";
|
|
3874
|
-
EncodingMode2[EncodingMode2["Extensive"] = 2] = "Extensive";
|
|
3875
|
-
EncodingMode2[EncodingMode2["Attribute"] = 3] = "Attribute";
|
|
3876
|
-
EncodingMode2[EncodingMode2["Text"] = 4] = "Text";
|
|
3877
|
-
})(EncodingMode || (EncodingMode = {}));
|
|
3878
|
-
|
|
3879
|
-
// node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/foreignNames.js
|
|
3880
|
-
var elementNames = new Map([
|
|
3881
|
-
"altGlyph",
|
|
3882
|
-
"altGlyphDef",
|
|
3883
|
-
"altGlyphItem",
|
|
3884
|
-
"animateColor",
|
|
3885
|
-
"animateMotion",
|
|
3886
|
-
"animateTransform",
|
|
3887
|
-
"clipPath",
|
|
3888
|
-
"feBlend",
|
|
3889
|
-
"feColorMatrix",
|
|
3890
|
-
"feComponentTransfer",
|
|
3891
|
-
"feComposite",
|
|
3892
|
-
"feConvolveMatrix",
|
|
3893
|
-
"feDiffuseLighting",
|
|
3894
|
-
"feDisplacementMap",
|
|
3895
|
-
"feDistantLight",
|
|
3896
|
-
"feDropShadow",
|
|
3897
|
-
"feFlood",
|
|
3898
|
-
"feFuncA",
|
|
3899
|
-
"feFuncB",
|
|
3900
|
-
"feFuncG",
|
|
3901
|
-
"feFuncR",
|
|
3902
|
-
"feGaussianBlur",
|
|
3903
|
-
"feImage",
|
|
3904
|
-
"feMerge",
|
|
3905
|
-
"feMergeNode",
|
|
3906
|
-
"feMorphology",
|
|
3907
|
-
"feOffset",
|
|
3908
|
-
"fePointLight",
|
|
3909
|
-
"feSpecularLighting",
|
|
3910
|
-
"feSpotLight",
|
|
3911
|
-
"feTile",
|
|
3912
|
-
"feTurbulence",
|
|
3913
|
-
"foreignObject",
|
|
3914
|
-
"glyphRef",
|
|
3915
|
-
"linearGradient",
|
|
3916
|
-
"radialGradient",
|
|
3917
|
-
"textPath"
|
|
3918
|
-
].map((val) => [val.toLowerCase(), val]));
|
|
3919
|
-
var attributeNames = new Map([
|
|
3920
|
-
"definitionURL",
|
|
3921
|
-
"attributeName",
|
|
3922
|
-
"attributeType",
|
|
3923
|
-
"baseFrequency",
|
|
3924
|
-
"baseProfile",
|
|
3925
|
-
"calcMode",
|
|
3926
|
-
"clipPathUnits",
|
|
3927
|
-
"diffuseConstant",
|
|
3928
|
-
"edgeMode",
|
|
3929
|
-
"filterUnits",
|
|
3930
|
-
"glyphRef",
|
|
3931
|
-
"gradientTransform",
|
|
3932
|
-
"gradientUnits",
|
|
3933
|
-
"kernelMatrix",
|
|
3934
|
-
"kernelUnitLength",
|
|
3935
|
-
"keyPoints",
|
|
3936
|
-
"keySplines",
|
|
3937
|
-
"keyTimes",
|
|
3938
|
-
"lengthAdjust",
|
|
3939
|
-
"limitingConeAngle",
|
|
3940
|
-
"markerHeight",
|
|
3941
|
-
"markerUnits",
|
|
3942
|
-
"markerWidth",
|
|
3943
|
-
"maskContentUnits",
|
|
3944
|
-
"maskUnits",
|
|
3945
|
-
"numOctaves",
|
|
3946
|
-
"pathLength",
|
|
3947
|
-
"patternContentUnits",
|
|
3948
|
-
"patternTransform",
|
|
3949
|
-
"patternUnits",
|
|
3950
|
-
"pointsAtX",
|
|
3951
|
-
"pointsAtY",
|
|
3952
|
-
"pointsAtZ",
|
|
3953
|
-
"preserveAlpha",
|
|
3954
|
-
"preserveAspectRatio",
|
|
3955
|
-
"primitiveUnits",
|
|
3956
|
-
"refX",
|
|
3957
|
-
"refY",
|
|
3958
|
-
"repeatCount",
|
|
3959
|
-
"repeatDur",
|
|
3960
|
-
"requiredExtensions",
|
|
3961
|
-
"requiredFeatures",
|
|
3962
|
-
"specularConstant",
|
|
3963
|
-
"specularExponent",
|
|
3964
|
-
"spreadMethod",
|
|
3965
|
-
"startOffset",
|
|
3966
|
-
"stdDeviation",
|
|
3967
|
-
"stitchTiles",
|
|
3968
|
-
"surfaceScale",
|
|
3969
|
-
"systemLanguage",
|
|
3970
|
-
"tableValues",
|
|
3971
|
-
"targetX",
|
|
3972
|
-
"targetY",
|
|
3973
|
-
"textLength",
|
|
3974
|
-
"viewBox",
|
|
3975
|
-
"viewTarget",
|
|
3976
|
-
"xChannelSelector",
|
|
3977
|
-
"yChannelSelector",
|
|
3978
|
-
"zoomAndPan"
|
|
3979
|
-
].map((val) => [val.toLowerCase(), val]));
|
|
3980
|
-
|
|
3981
|
-
// node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/helpers.js
|
|
3982
|
-
var DocumentPosition;
|
|
3983
|
-
(function(DocumentPosition2) {
|
|
3984
|
-
DocumentPosition2[DocumentPosition2["DISCONNECTED"] = 1] = "DISCONNECTED";
|
|
3985
|
-
DocumentPosition2[DocumentPosition2["PRECEDING"] = 2] = "PRECEDING";
|
|
3986
|
-
DocumentPosition2[DocumentPosition2["FOLLOWING"] = 4] = "FOLLOWING";
|
|
3987
|
-
DocumentPosition2[DocumentPosition2["CONTAINS"] = 8] = "CONTAINS";
|
|
3988
|
-
DocumentPosition2[DocumentPosition2["CONTAINED_BY"] = 16] = "CONTAINED_BY";
|
|
3989
|
-
})(DocumentPosition || (DocumentPosition = {}));
|
|
3990
|
-
|
|
3991
|
-
// node_modules/.pnpm/htmlparser2@10.1.0/node_modules/htmlparser2/dist/esm/index.js
|
|
3759
|
+
// node_modules/.pnpm/htmlparser2@12.0.0/node_modules/htmlparser2/dist/index.js
|
|
3992
3760
|
function parseDocument(data, options) {
|
|
3993
3761
|
const handler = new DomHandler(void 0, options);
|
|
3994
3762
|
new Parser(handler, options).end(data);
|