@rohal12/twee-ts 1.13.1 → 1.15.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.
@@ -3,7 +3,7 @@
3
3
  // bin/twee-ts.ts
4
4
  import { parseArgs } from "util";
5
5
  import { writeFileSync as writeFileSync3, mkdirSync as mkdirSync2, existsSync as existsSync3 } from "fs";
6
- import { join as join6 } from "path";
6
+ import { join as join7 } from "path";
7
7
 
8
8
  // src/compiler.ts
9
9
  import { writeFileSync as writeFileSync2 } from "fs";
@@ -1342,8 +1342,7 @@ function parseTwee(source, options = {}) {
1342
1342
  return { passages, diagnostics };
1343
1343
  }
1344
1344
 
1345
- // node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/decode-codepoint.js
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 (_a3 = decodeMap.get(codePoint)) !== null && _a3 !== void 0 ? _a3 : codePoint;
1381
+ return decodeMap.get(codePoint) ?? codePoint;
1397
1382
  }
1398
1383
 
1399
- // node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/internal/decode-shared.js
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@7.0.1/node_modules/entities/dist/esm/generated/decode-data-html.js
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@7.0.1/node_modules/entities/dist/esm/generated/decode-data-xml.js
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@7.0.1/node_modules/entities/dist/esm/internal/bin-trie-flags.js
1403
+ // node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/internal/bin-trie-flags.js
1436
1404
  var BinTrieFlags;
1437
- (function(BinTrieFlags3) {
1438
- BinTrieFlags3[BinTrieFlags3["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
1439
- BinTrieFlags3[BinTrieFlags3["FLAG13"] = 8192] = "FLAG13";
1440
- BinTrieFlags3[BinTrieFlags3["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH";
1441
- BinTrieFlags3[BinTrieFlags3["JUMP_TABLE"] = 127] = "JUMP_TABLE";
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@7.0.1/node_modules/entities/dist/esm/decode.js
1412
+ // node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/decode.js
1445
1413
  var CharCodes;
1446
- (function(CharCodes4) {
1447
- CharCodes4[CharCodes4["NUM"] = 35] = "NUM";
1448
- CharCodes4[CharCodes4["SEMI"] = 59] = "SEMI";
1449
- CharCodes4[CharCodes4["EQUALS"] = 61] = "EQUALS";
1450
- CharCodes4[CharCodes4["ZERO"] = 48] = "ZERO";
1451
- CharCodes4[CharCodes4["NINE"] = 57] = "NINE";
1452
- CharCodes4[CharCodes4["LOWER_A"] = 97] = "LOWER_A";
1453
- CharCodes4[CharCodes4["LOWER_F"] = 102] = "LOWER_F";
1454
- CharCodes4[CharCodes4["LOWER_X"] = 120] = "LOWER_X";
1455
- CharCodes4[CharCodes4["LOWER_Z"] = 122] = "LOWER_Z";
1456
- CharCodes4[CharCodes4["UPPER_A"] = 65] = "UPPER_A";
1457
- CharCodes4[CharCodes4["UPPER_F"] = 70] = "UPPER_F";
1458
- CharCodes4[CharCodes4["UPPER_Z"] = 90] = "UPPER_Z";
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(EntityDecoderState3) {
1475
- EntityDecoderState3[EntityDecoderState3["EntityStart"] = 0] = "EntityStart";
1476
- EntityDecoderState3[EntityDecoderState3["NumericStart"] = 1] = "NumericStart";
1477
- EntityDecoderState3[EntityDecoderState3["NumericDecimal"] = 2] = "NumericDecimal";
1478
- EntityDecoderState3[EntityDecoderState3["NumericHex"] = 3] = "NumericHex";
1479
- EntityDecoderState3[EntityDecoderState3["NamedEntity"] = 4] = "NamedEntity";
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(DecodingMode3) {
1483
- DecodingMode3[DecodingMode3["Legacy"] = 0] = "Legacy";
1484
- DecodingMode3[DecodingMode3["Strict"] = 1] = "Strict";
1485
- DecodingMode3[DecodingMode3["Attribute"] = 2] = "Attribute";
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
- /** Resets the instance to make it reusable. */
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
- (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed);
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
- (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.missingSemicolonAfterCharacterReference();
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
- (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed);
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@10.1.0/node_modules/htmlparser2/dist/esm/Tokenizer.js
1782
+ // node_modules/.pnpm/htmlparser2@12.0.0/node_modules/htmlparser2/dist/Tokenizer.js
1810
1783
  var CharCodes2;
1811
- (function(CharCodes4) {
1812
- CharCodes4[CharCodes4["Tab"] = 9] = "Tab";
1813
- CharCodes4[CharCodes4["NewLine"] = 10] = "NewLine";
1814
- CharCodes4[CharCodes4["FormFeed"] = 12] = "FormFeed";
1815
- CharCodes4[CharCodes4["CarriageReturn"] = 13] = "CarriageReturn";
1816
- CharCodes4[CharCodes4["Space"] = 32] = "Space";
1817
- CharCodes4[CharCodes4["ExclamationMark"] = 33] = "ExclamationMark";
1818
- CharCodes4[CharCodes4["Number"] = 35] = "Number";
1819
- CharCodes4[CharCodes4["Amp"] = 38] = "Amp";
1820
- CharCodes4[CharCodes4["SingleQuote"] = 39] = "SingleQuote";
1821
- CharCodes4[CharCodes4["DoubleQuote"] = 34] = "DoubleQuote";
1822
- CharCodes4[CharCodes4["Dash"] = 45] = "Dash";
1823
- CharCodes4[CharCodes4["Slash"] = 47] = "Slash";
1824
- CharCodes4[CharCodes4["Zero"] = 48] = "Zero";
1825
- CharCodes4[CharCodes4["Nine"] = 57] = "Nine";
1826
- CharCodes4[CharCodes4["Semi"] = 59] = "Semi";
1827
- CharCodes4[CharCodes4["Lt"] = 60] = "Lt";
1828
- CharCodes4[CharCodes4["Eq"] = 61] = "Eq";
1829
- CharCodes4[CharCodes4["Gt"] = 62] = "Gt";
1830
- CharCodes4[CharCodes4["Questionmark"] = 63] = "Questionmark";
1831
- CharCodes4[CharCodes4["UpperA"] = 65] = "UpperA";
1832
- CharCodes4[CharCodes4["LowerA"] = 97] = "LowerA";
1833
- CharCodes4[CharCodes4["UpperF"] = 70] = "UpperF";
1834
- CharCodes4[CharCodes4["LowerF"] = 102] = "LowerF";
1835
- CharCodes4[CharCodes4["UpperZ"] = 90] = "UpperZ";
1836
- CharCodes4[CharCodes4["LowerZ"] = 122] = "LowerZ";
1837
- CharCodes4[CharCodes4["LowerX"] = 120] = "LowerX";
1838
- CharCodes4[CharCodes4["OpeningSquareBracket"] = 91] = "OpeningSquareBracket";
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["InSpecialComment"] = 20] = "InSpecialComment";
1862
- State2[State2["InCommentLike"] = 21] = "InCommentLike";
1863
- State2[State2["BeforeSpecialS"] = 22] = "BeforeSpecialS";
1864
- State2[State2["BeforeSpecialT"] = 23] = "BeforeSpecialT";
1865
- State2[State2["SpecialStartSequence"] = 24] = "SpecialStartSequence";
1866
- State2[State2["InSpecialTag"] = 25] = "InSpecialTag";
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
- constructor({ xmlMode = false, decodeEntities = true }, cbs) {
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.currentSequence = void 0;
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
- stateSpecialStartSequence(c) {
1972
- const isEnd = this.sequenceIndex === this.currentSequence.length;
1973
- const isMatch = isEnd ? (
1974
- // If we are at the end of the sequence, make sure the tag name has ended
1975
- isEndOfTagSection(c)
1976
- ) : (
1977
- // Otherwise, do a case-insensitive comparison
1978
- (c | 32) === this.currentSequence[this.sequenceIndex]
1979
- );
1980
- if (!isMatch) {
1981
- this.isSpecial = false;
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
- /** Look for an end tag. For <title> tags, also decode entities. */
1991
- stateInSpecialTag(c) {
1992
- if (this.sequenceIndex === this.currentSequence.length) {
1993
- if (c === CharCodes2.Gt || isWhitespace(c)) {
1994
- const endOfText = this.index - this.currentSequence.length;
1995
- if (this.sectionStart < endOfText) {
1996
- const actualIndex = this.index;
1997
- this.index = endOfText;
1998
- this.cbs.ontext(this.sectionStart, endOfText);
1999
- this.index = actualIndex;
2000
- }
2001
- this.isSpecial = false;
2002
- this.sectionStart = endOfText + 2;
2003
- this.stateInClosingTagName(c);
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 = 0;
2007
- }
2008
- if ((c | 32) === this.currentSequence[this.sequenceIndex]) {
2009
- this.sequenceIndex += 1;
2010
- } else if (this.sequenceIndex === 0) {
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
- } else if (this.fastForwardTo(CharCodes2.Lt)) {
2016
- this.sequenceIndex = 1;
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 = Number(c === CharCodes2.Lt);
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.state = State.InDeclaration;
2033
- this.stateInDeclaration(c);
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 (c === this.currentSequence[this.sequenceIndex]) {
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, 2);
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
- startSpecial(sequence, offset) {
2089
- this.isSpecial = true;
2090
- this.currentSequence = sequence;
2091
- this.sequenceIndex = offset;
2092
- this.state = State.SpecialStartSequence;
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.state = State.InProcessingInstruction;
2100
- this.sectionStart = this.index + 1;
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
- if (this.xmlMode) {
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.state = State.InTagName;
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 (c === CharCodes2.Gt || isWhitespace(c)) {
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
- if (this.isSpecial) {
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.Gt || this.fastForwardTo(CharCodes2.Gt)) {
2258
- this.cbs.onprocessinginstruction(this.sectionStart, this.index);
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 = 2;
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
- /** Handle any trailing data. */
2479
- handleTrailingData() {
2480
- const endIndex = this.buffer.length + this.offset;
2481
- if (this.sectionStart >= endIndex) {
2482
- return;
2635
+ handleTrailingCommentLikeData(endIndex) {
2636
+ if (this.state !== State.InCommentLike) {
2637
+ return false;
2483
2638
  }
2484
- if (this.state === State.InCommentLike) {
2485
- if (this.currentSequence === Sequences.CdataEnd) {
2486
- this.cbs.oncdata(this.sectionStart, endIndex, 0);
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.cbs.oncomment(this.sectionStart, endIndex, 0);
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.cbs.ontext(this.sectionStart, endIndex);
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
- emitCodePoint(cp, consumed) {
2496
- if (this.baseState !== State.Text && this.baseState !== State.InSpecialTag) {
2497
- if (this.sectionStart < this.entityStart) {
2498
- this.cbs.onattribdata(this.sectionStart, this.entityStart);
2499
- }
2500
- this.sectionStart = this.entityStart + consumed;
2501
- this.index = this.sectionStart - 1;
2502
- this.cbs.onattribentity(cp);
2503
- } else {
2504
- if (this.sectionStart < this.entityStart) {
2505
- this.cbs.ontext(this.sectionStart, this.entityStart);
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
- this.sectionStart = this.entityStart + consumed;
2508
- this.index = this.sectionStart - 1;
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;
2509
2732
  this.cbs.ontextentity(cp, this.sectionStart);
2510
2733
  }
2511
2734
  }
2512
2735
  };
2513
2736
 
2514
- // node_modules/.pnpm/htmlparser2@10.1.0/node_modules/htmlparser2/dist/esm/Parser.js
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", pTag],
2536
- ["h2", pTag],
2537
- ["h3", pTag],
2538
- ["h4", pTag],
2539
- ["h5", pTag],
2540
- ["h6", pTag],
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
- "foreignobject",
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.startIndex = 0;
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 = (_a3 = options.lowerCaseTags) !== null && _a3 !== void 0 ? _a3 : this.htmlMode;
2630
- this.lowerCaseAttributeNames = (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode;
2631
- this.recognizeSelfClosing = (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode;
2632
- this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer)(this.options, this);
2633
- this.foreignContext = [!this.htmlMode];
2634
- (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this);
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
- /** @internal */
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
- (_b = (_a3 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a3, data);
2933
+ this.cbs.ontext?.(data);
2643
2934
  this.startIndex = endIndex;
2644
2935
  }
2645
- /** @internal */
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
- (_b = (_a3 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a3, fromCodePoint(cp));
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
- /** @internal */
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
- let name = this.getSlice(start, endIndex);
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
- const element = this.stack.shift();
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 (foreignContextElements.has(name)) {
2683
- this.foreignContext.unshift(true);
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(false);
3016
+ this.foreignContext.unshift(ForeignContext.None);
2686
3017
  }
2687
3018
  }
2688
3019
  }
2689
- (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);
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
- (_b = (_a3 = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a3, this.tagname, this.attribs, isImplied);
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
- /** @internal */
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
- /** @internal */
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
- let name = this.getSlice(start, endIndex);
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 <= pos; index++) {
2726
- const element = this.stack.shift();
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
- (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, "br");
2735
- (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, "br", {}, true);
2736
- (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, "br", false);
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
- /** @internal */
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.foreignContext[0]) {
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
- (_b = (_a3 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a3, name, !isOpenImplied);
2756
- this.stack.shift();
3099
+ this.popElement(!isOpenImplied);
2757
3100
  }
2758
3101
  }
2759
- /** @internal */
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
- /** @internal */
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
- /** @internal */
3120
+ /**
3121
+ * @param cp Current Unicode code point.
3122
+ * @internal
3123
+ */
2770
3124
  onattribentity(cp) {
2771
3125
  this.attribvalue += fromCodePoint(cp);
2772
3126
  }
2773
- /** @internal */
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
- (_b = (_a3 = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a3, this.attribname, this.attribvalue, quote2 === QuoteType.Double ? '"' : quote2 === QuoteType.Single ? "'" : quote2 === QuoteType.NoValue ? void 0 : null);
2778
- if (this.attribs && !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {
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
- /** @internal */
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
- /** @internal */
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
- /** @internal */
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
- (_b = (_a3 = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a3, this.getSlice(start, endIndex - offset));
2816
- (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);
3184
+ this.cbs.oncomment?.(this.getSlice(start, endIndex - offset));
3185
+ this.cbs.oncommentend?.();
2817
3186
  this.startIndex = endIndex + 1;
2818
3187
  }
2819
- /** @internal */
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
- (_b = (_a3 = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a3);
2826
- (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);
2827
- (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);
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
- (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);
2830
- (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);
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
- (_b = (_a3 = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a3);
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
- var _a3, _b, _c, _d;
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
- (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);
3232
+ this.cbs.onparserinit?.(this);
2859
3233
  this.buffers.length = 0;
2860
3234
  this.foreignContext.length = 0;
2861
- this.foreignContext.unshift(!this.htmlMode);
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
- (_b = (_a3 = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a3, new Error(".write() after done!"));
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
- (_b = (_a3 = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a3, new Error(".end() after done!"));
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@2.3.0/node_modules/domelementtype/lib/esm/index.js
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(elem) {
2976
- return elem.type === ElementType.Tag || elem.type === ElementType.Script || elem.type === ElementType.Style;
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@5.0.3/node_modules/domhandler/lib/esm/node.js
3342
+ // node_modules/.pnpm/domhandler@6.0.1/node_modules/domhandler/dist/node.js
2989
3343
  var Node = class {
2990
- constructor() {
2991
- this.parent = null;
2992
- this.prev = null;
2993
- this.next = null;
2994
- this.startIndex = null;
2995
- this.endIndex = null;
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(prev) {
3016
- this.prev = 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
- constructor() {
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
- constructor() {
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
- var _a3;
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
- constructor() {
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
- constructor() {
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
- var _a3, _b;
3161
- return {
3162
- name,
3163
- value: this.attribs[name],
3164
- namespace: (_a3 = this["x-attribsNamespace"]) === null || _a3 === void 0 ? void 0 : _a3[name],
3165
- prefix: (_b = this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name]
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
- children.forEach((child) => child.parent = clone);
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
- children.forEach((child) => child.parent = clone);
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
- children.forEach((child) => child.parent = clone);
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 i = 1; i < children.length; i++) {
3242
- children[i].prev = children[i - 1];
3243
- children[i - 1].next = children[i];
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@5.0.3/node_modules/domhandler/lib/esm/index.js
3249
- var defaultOpts = {
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 = defaultOpts;
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 !== null && callback !== void 0 ? callback : null;
3276
- this.options = options !== null && options !== void 0 ? options : defaultOpts;
3277
- this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;
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 elem = this.tagStack.pop();
3305
- if (this.options.withEndIndices) {
3306
- elem.endIndex = this.parser.endIndex;
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(elem);
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/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-html.js
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, "&Tab;"], [0, "&NewLine;"], [22, "&excl;"], [0, "&quot;"], [0, "&num;"], [0, "&dollar;"], [0, "&percnt;"], [0, "&amp;"], [0, "&apos;"], [0, "&lpar;"], [0, "&rpar;"], [0, "&ast;"], [0, "&plus;"], [0, "&comma;"], [1, "&period;"], [0, "&sol;"], [10, "&colon;"], [0, "&semi;"], [0, { v: "&lt;", n: 8402, o: "&nvlt;" }], [0, { v: "&equals;", n: 8421, o: "&bne;" }], [0, { v: "&gt;", n: 8402, o: "&nvgt;" }], [0, "&quest;"], [0, "&commat;"], [26, "&lbrack;"], [0, "&bsol;"], [0, "&rbrack;"], [0, "&Hat;"], [0, "&lowbar;"], [0, "&DiacriticalGrave;"], [5, { n: 106, o: "&fjlig;" }], [20, "&lbrace;"], [0, "&verbar;"], [0, "&rbrace;"], [34, "&nbsp;"], [0, "&iexcl;"], [0, "&cent;"], [0, "&pound;"], [0, "&curren;"], [0, "&yen;"], [0, "&brvbar;"], [0, "&sect;"], [0, "&die;"], [0, "&copy;"], [0, "&ordf;"], [0, "&laquo;"], [0, "&not;"], [0, "&shy;"], [0, "&circledR;"], [0, "&macr;"], [0, "&deg;"], [0, "&PlusMinus;"], [0, "&sup2;"], [0, "&sup3;"], [0, "&acute;"], [0, "&micro;"], [0, "&para;"], [0, "&centerdot;"], [0, "&cedil;"], [0, "&sup1;"], [0, "&ordm;"], [0, "&raquo;"], [0, "&frac14;"], [0, "&frac12;"], [0, "&frac34;"], [0, "&iquest;"], [0, "&Agrave;"], [0, "&Aacute;"], [0, "&Acirc;"], [0, "&Atilde;"], [0, "&Auml;"], [0, "&angst;"], [0, "&AElig;"], [0, "&Ccedil;"], [0, "&Egrave;"], [0, "&Eacute;"], [0, "&Ecirc;"], [0, "&Euml;"], [0, "&Igrave;"], [0, "&Iacute;"], [0, "&Icirc;"], [0, "&Iuml;"], [0, "&ETH;"], [0, "&Ntilde;"], [0, "&Ograve;"], [0, "&Oacute;"], [0, "&Ocirc;"], [0, "&Otilde;"], [0, "&Ouml;"], [0, "&times;"], [0, "&Oslash;"], [0, "&Ugrave;"], [0, "&Uacute;"], [0, "&Ucirc;"], [0, "&Uuml;"], [0, "&Yacute;"], [0, "&THORN;"], [0, "&szlig;"], [0, "&agrave;"], [0, "&aacute;"], [0, "&acirc;"], [0, "&atilde;"], [0, "&auml;"], [0, "&aring;"], [0, "&aelig;"], [0, "&ccedil;"], [0, "&egrave;"], [0, "&eacute;"], [0, "&ecirc;"], [0, "&euml;"], [0, "&igrave;"], [0, "&iacute;"], [0, "&icirc;"], [0, "&iuml;"], [0, "&eth;"], [0, "&ntilde;"], [0, "&ograve;"], [0, "&oacute;"], [0, "&ocirc;"], [0, "&otilde;"], [0, "&ouml;"], [0, "&div;"], [0, "&oslash;"], [0, "&ugrave;"], [0, "&uacute;"], [0, "&ucirc;"], [0, "&uuml;"], [0, "&yacute;"], [0, "&thorn;"], [0, "&yuml;"], [0, "&Amacr;"], [0, "&amacr;"], [0, "&Abreve;"], [0, "&abreve;"], [0, "&Aogon;"], [0, "&aogon;"], [0, "&Cacute;"], [0, "&cacute;"], [0, "&Ccirc;"], [0, "&ccirc;"], [0, "&Cdot;"], [0, "&cdot;"], [0, "&Ccaron;"], [0, "&ccaron;"], [0, "&Dcaron;"], [0, "&dcaron;"], [0, "&Dstrok;"], [0, "&dstrok;"], [0, "&Emacr;"], [0, "&emacr;"], [2, "&Edot;"], [0, "&edot;"], [0, "&Eogon;"], [0, "&eogon;"], [0, "&Ecaron;"], [0, "&ecaron;"], [0, "&Gcirc;"], [0, "&gcirc;"], [0, "&Gbreve;"], [0, "&gbreve;"], [0, "&Gdot;"], [0, "&gdot;"], [0, "&Gcedil;"], [1, "&Hcirc;"], [0, "&hcirc;"], [0, "&Hstrok;"], [0, "&hstrok;"], [0, "&Itilde;"], [0, "&itilde;"], [0, "&Imacr;"], [0, "&imacr;"], [2, "&Iogon;"], [0, "&iogon;"], [0, "&Idot;"], [0, "&imath;"], [0, "&IJlig;"], [0, "&ijlig;"], [0, "&Jcirc;"], [0, "&jcirc;"], [0, "&Kcedil;"], [0, "&kcedil;"], [0, "&kgreen;"], [0, "&Lacute;"], [0, "&lacute;"], [0, "&Lcedil;"], [0, "&lcedil;"], [0, "&Lcaron;"], [0, "&lcaron;"], [0, "&Lmidot;"], [0, "&lmidot;"], [0, "&Lstrok;"], [0, "&lstrok;"], [0, "&Nacute;"], [0, "&nacute;"], [0, "&Ncedil;"], [0, "&ncedil;"], [0, "&Ncaron;"], [0, "&ncaron;"], [0, "&napos;"], [0, "&ENG;"], [0, "&eng;"], [0, "&Omacr;"], [0, "&omacr;"], [2, "&Odblac;"], [0, "&odblac;"], [0, "&OElig;"], [0, "&oelig;"], [0, "&Racute;"], [0, "&racute;"], [0, "&Rcedil;"], [0, "&rcedil;"], [0, "&Rcaron;"], [0, "&rcaron;"], [0, "&Sacute;"], [0, "&sacute;"], [0, "&Scirc;"], [0, "&scirc;"], [0, "&Scedil;"], [0, "&scedil;"], [0, "&Scaron;"], [0, "&scaron;"], [0, "&Tcedil;"], [0, "&tcedil;"], [0, "&Tcaron;"], [0, "&tcaron;"], [0, "&Tstrok;"], [0, "&tstrok;"], [0, "&Utilde;"], [0, "&utilde;"], [0, "&Umacr;"], [0, "&umacr;"], [0, "&Ubreve;"], [0, "&ubreve;"], [0, "&Uring;"], [0, "&uring;"], [0, "&Udblac;"], [0, "&udblac;"], [0, "&Uogon;"], [0, "&uogon;"], [0, "&Wcirc;"], [0, "&wcirc;"], [0, "&Ycirc;"], [0, "&ycirc;"], [0, "&Yuml;"], [0, "&Zacute;"], [0, "&zacute;"], [0, "&Zdot;"], [0, "&zdot;"], [0, "&Zcaron;"], [0, "&zcaron;"], [19, "&fnof;"], [34, "&imped;"], [63, "&gacute;"], [65, "&jmath;"], [142, "&circ;"], [0, "&caron;"], [16, "&breve;"], [0, "&DiacriticalDot;"], [0, "&ring;"], [0, "&ogon;"], [0, "&DiacriticalTilde;"], [0, "&dblac;"], [51, "&DownBreve;"], [127, "&Alpha;"], [0, "&Beta;"], [0, "&Gamma;"], [0, "&Delta;"], [0, "&Epsilon;"], [0, "&Zeta;"], [0, "&Eta;"], [0, "&Theta;"], [0, "&Iota;"], [0, "&Kappa;"], [0, "&Lambda;"], [0, "&Mu;"], [0, "&Nu;"], [0, "&Xi;"], [0, "&Omicron;"], [0, "&Pi;"], [0, "&Rho;"], [1, "&Sigma;"], [0, "&Tau;"], [0, "&Upsilon;"], [0, "&Phi;"], [0, "&Chi;"], [0, "&Psi;"], [0, "&ohm;"], [7, "&alpha;"], [0, "&beta;"], [0, "&gamma;"], [0, "&delta;"], [0, "&epsi;"], [0, "&zeta;"], [0, "&eta;"], [0, "&theta;"], [0, "&iota;"], [0, "&kappa;"], [0, "&lambda;"], [0, "&mu;"], [0, "&nu;"], [0, "&xi;"], [0, "&omicron;"], [0, "&pi;"], [0, "&rho;"], [0, "&sigmaf;"], [0, "&sigma;"], [0, "&tau;"], [0, "&upsi;"], [0, "&phi;"], [0, "&chi;"], [0, "&psi;"], [0, "&omega;"], [7, "&thetasym;"], [0, "&Upsi;"], [2, "&phiv;"], [0, "&piv;"], [5, "&Gammad;"], [0, "&digamma;"], [18, "&kappav;"], [0, "&rhov;"], [3, "&epsiv;"], [0, "&backepsilon;"], [10, "&IOcy;"], [0, "&DJcy;"], [0, "&GJcy;"], [0, "&Jukcy;"], [0, "&DScy;"], [0, "&Iukcy;"], [0, "&YIcy;"], [0, "&Jsercy;"], [0, "&LJcy;"], [0, "&NJcy;"], [0, "&TSHcy;"], [0, "&KJcy;"], [1, "&Ubrcy;"], [0, "&DZcy;"], [0, "&Acy;"], [0, "&Bcy;"], [0, "&Vcy;"], [0, "&Gcy;"], [0, "&Dcy;"], [0, "&IEcy;"], [0, "&ZHcy;"], [0, "&Zcy;"], [0, "&Icy;"], [0, "&Jcy;"], [0, "&Kcy;"], [0, "&Lcy;"], [0, "&Mcy;"], [0, "&Ncy;"], [0, "&Ocy;"], [0, "&Pcy;"], [0, "&Rcy;"], [0, "&Scy;"], [0, "&Tcy;"], [0, "&Ucy;"], [0, "&Fcy;"], [0, "&KHcy;"], [0, "&TScy;"], [0, "&CHcy;"], [0, "&SHcy;"], [0, "&SHCHcy;"], [0, "&HARDcy;"], [0, "&Ycy;"], [0, "&SOFTcy;"], [0, "&Ecy;"], [0, "&YUcy;"], [0, "&YAcy;"], [0, "&acy;"], [0, "&bcy;"], [0, "&vcy;"], [0, "&gcy;"], [0, "&dcy;"], [0, "&iecy;"], [0, "&zhcy;"], [0, "&zcy;"], [0, "&icy;"], [0, "&jcy;"], [0, "&kcy;"], [0, "&lcy;"], [0, "&mcy;"], [0, "&ncy;"], [0, "&ocy;"], [0, "&pcy;"], [0, "&rcy;"], [0, "&scy;"], [0, "&tcy;"], [0, "&ucy;"], [0, "&fcy;"], [0, "&khcy;"], [0, "&tscy;"], [0, "&chcy;"], [0, "&shcy;"], [0, "&shchcy;"], [0, "&hardcy;"], [0, "&ycy;"], [0, "&softcy;"], [0, "&ecy;"], [0, "&yucy;"], [0, "&yacy;"], [1, "&iocy;"], [0, "&djcy;"], [0, "&gjcy;"], [0, "&jukcy;"], [0, "&dscy;"], [0, "&iukcy;"], [0, "&yicy;"], [0, "&jsercy;"], [0, "&ljcy;"], [0, "&njcy;"], [0, "&tshcy;"], [0, "&kjcy;"], [1, "&ubrcy;"], [0, "&dzcy;"], [7074, "&ensp;"], [0, "&emsp;"], [0, "&emsp13;"], [0, "&emsp14;"], [1, "&numsp;"], [0, "&puncsp;"], [0, "&ThinSpace;"], [0, "&hairsp;"], [0, "&NegativeMediumSpace;"], [0, "&zwnj;"], [0, "&zwj;"], [0, "&lrm;"], [0, "&rlm;"], [0, "&dash;"], [2, "&ndash;"], [0, "&mdash;"], [0, "&horbar;"], [0, "&Verbar;"], [1, "&lsquo;"], [0, "&CloseCurlyQuote;"], [0, "&lsquor;"], [1, "&ldquo;"], [0, "&CloseCurlyDoubleQuote;"], [0, "&bdquo;"], [1, "&dagger;"], [0, "&Dagger;"], [0, "&bull;"], [2, "&nldr;"], [0, "&hellip;"], [9, "&permil;"], [0, "&pertenk;"], [0, "&prime;"], [0, "&Prime;"], [0, "&tprime;"], [0, "&backprime;"], [3, "&lsaquo;"], [0, "&rsaquo;"], [3, "&oline;"], [2, "&caret;"], [1, "&hybull;"], [0, "&frasl;"], [10, "&bsemi;"], [7, "&qprime;"], [7, { v: "&MediumSpace;", n: 8202, o: "&ThickSpace;" }], [0, "&NoBreak;"], [0, "&af;"], [0, "&InvisibleTimes;"], [0, "&ic;"], [72, "&euro;"], [46, "&tdot;"], [0, "&DotDot;"], [37, "&complexes;"], [2, "&incare;"], [4, "&gscr;"], [0, "&hamilt;"], [0, "&Hfr;"], [0, "&Hopf;"], [0, "&planckh;"], [0, "&hbar;"], [0, "&imagline;"], [0, "&Ifr;"], [0, "&lagran;"], [0, "&ell;"], [1, "&naturals;"], [0, "&numero;"], [0, "&copysr;"], [0, "&weierp;"], [0, "&Popf;"], [0, "&Qopf;"], [0, "&realine;"], [0, "&real;"], [0, "&reals;"], [0, "&rx;"], [3, "&trade;"], [1, "&integers;"], [2, "&mho;"], [0, "&zeetrf;"], [0, "&iiota;"], [2, "&bernou;"], [0, "&Cayleys;"], [1, "&escr;"], [0, "&Escr;"], [0, "&Fouriertrf;"], [1, "&Mellintrf;"], [0, "&order;"], [0, "&alefsym;"], [0, "&beth;"], [0, "&gimel;"], [0, "&daleth;"], [12, "&CapitalDifferentialD;"], [0, "&dd;"], [0, "&ee;"], [0, "&ii;"], [10, "&frac13;"], [0, "&frac23;"], [0, "&frac15;"], [0, "&frac25;"], [0, "&frac35;"], [0, "&frac45;"], [0, "&frac16;"], [0, "&frac56;"], [0, "&frac18;"], [0, "&frac38;"], [0, "&frac58;"], [0, "&frac78;"], [49, "&larr;"], [0, "&ShortUpArrow;"], [0, "&rarr;"], [0, "&darr;"], [0, "&harr;"], [0, "&updownarrow;"], [0, "&nwarr;"], [0, "&nearr;"], [0, "&LowerRightArrow;"], [0, "&LowerLeftArrow;"], [0, "&nlarr;"], [0, "&nrarr;"], [1, { v: "&rarrw;", n: 824, o: "&nrarrw;" }], [0, "&Larr;"], [0, "&Uarr;"], [0, "&Rarr;"], [0, "&Darr;"], [0, "&larrtl;"], [0, "&rarrtl;"], [0, "&LeftTeeArrow;"], [0, "&mapstoup;"], [0, "&map;"], [0, "&DownTeeArrow;"], [1, "&hookleftarrow;"], [0, "&hookrightarrow;"], [0, "&larrlp;"], [0, "&looparrowright;"], [0, "&harrw;"], [0, "&nharr;"], [1, "&lsh;"], [0, "&rsh;"], [0, "&ldsh;"], [0, "&rdsh;"], [1, "&crarr;"], [0, "&cularr;"], [0, "&curarr;"], [2, "&circlearrowleft;"], [0, "&circlearrowright;"], [0, "&leftharpoonup;"], [0, "&DownLeftVector;"], [0, "&RightUpVector;"], [0, "&LeftUpVector;"], [0, "&rharu;"], [0, "&DownRightVector;"], [0, "&dharr;"], [0, "&dharl;"], [0, "&RightArrowLeftArrow;"], [0, "&udarr;"], [0, "&LeftArrowRightArrow;"], [0, "&leftleftarrows;"], [0, "&upuparrows;"], [0, "&rightrightarrows;"], [0, "&ddarr;"], [0, "&leftrightharpoons;"], [0, "&Equilibrium;"], [0, "&nlArr;"], [0, "&nhArr;"], [0, "&nrArr;"], [0, "&DoubleLeftArrow;"], [0, "&DoubleUpArrow;"], [0, "&DoubleRightArrow;"], [0, "&dArr;"], [0, "&DoubleLeftRightArrow;"], [0, "&DoubleUpDownArrow;"], [0, "&nwArr;"], [0, "&neArr;"], [0, "&seArr;"], [0, "&swArr;"], [0, "&lAarr;"], [0, "&rAarr;"], [1, "&zigrarr;"], [6, "&larrb;"], [0, "&rarrb;"], [15, "&DownArrowUpArrow;"], [7, "&loarr;"], [0, "&roarr;"], [0, "&hoarr;"], [0, "&forall;"], [0, "&comp;"], [0, { v: "&part;", n: 824, o: "&npart;" }], [0, "&exist;"], [0, "&nexist;"], [0, "&empty;"], [1, "&Del;"], [0, "&Element;"], [0, "&NotElement;"], [1, "&ni;"], [0, "&notni;"], [2, "&prod;"], [0, "&coprod;"], [0, "&sum;"], [0, "&minus;"], [0, "&MinusPlus;"], [0, "&dotplus;"], [1, "&Backslash;"], [0, "&lowast;"], [0, "&compfn;"], [1, "&radic;"], [2, "&prop;"], [0, "&infin;"], [0, "&angrt;"], [0, { v: "&ang;", n: 8402, o: "&nang;" }], [0, "&angmsd;"], [0, "&angsph;"], [0, "&mid;"], [0, "&nmid;"], [0, "&DoubleVerticalBar;"], [0, "&NotDoubleVerticalBar;"], [0, "&and;"], [0, "&or;"], [0, { v: "&cap;", n: 65024, o: "&caps;" }], [0, { v: "&cup;", n: 65024, o: "&cups;" }], [0, "&int;"], [0, "&Int;"], [0, "&iiint;"], [0, "&conint;"], [0, "&Conint;"], [0, "&Cconint;"], [0, "&cwint;"], [0, "&ClockwiseContourIntegral;"], [0, "&awconint;"], [0, "&there4;"], [0, "&becaus;"], [0, "&ratio;"], [0, "&Colon;"], [0, "&dotminus;"], [1, "&mDDot;"], [0, "&homtht;"], [0, { v: "&sim;", n: 8402, o: "&nvsim;" }], [0, { v: "&backsim;", n: 817, o: "&race;" }], [0, { v: "&ac;", n: 819, o: "&acE;" }], [0, "&acd;"], [0, "&VerticalTilde;"], [0, "&NotTilde;"], [0, { v: "&eqsim;", n: 824, o: "&nesim;" }], [0, "&sime;"], [0, "&NotTildeEqual;"], [0, "&cong;"], [0, "&simne;"], [0, "&ncong;"], [0, "&ap;"], [0, "&nap;"], [0, "&ape;"], [0, { v: "&apid;", n: 824, o: "&napid;" }], [0, "&backcong;"], [0, { v: "&asympeq;", n: 8402, o: "&nvap;" }], [0, { v: "&bump;", n: 824, o: "&nbump;" }], [0, { v: "&bumpe;", n: 824, o: "&nbumpe;" }], [0, { v: "&doteq;", n: 824, o: "&nedot;" }], [0, "&doteqdot;"], [0, "&efDot;"], [0, "&erDot;"], [0, "&Assign;"], [0, "&ecolon;"], [0, "&ecir;"], [0, "&circeq;"], [1, "&wedgeq;"], [0, "&veeeq;"], [1, "&triangleq;"], [2, "&equest;"], [0, "&ne;"], [0, { v: "&Congruent;", n: 8421, o: "&bnequiv;" }], [0, "&nequiv;"], [1, { v: "&le;", n: 8402, o: "&nvle;" }], [0, { v: "&ge;", n: 8402, o: "&nvge;" }], [0, { v: "&lE;", n: 824, o: "&nlE;" }], [0, { v: "&gE;", n: 824, o: "&ngE;" }], [0, { v: "&lnE;", n: 65024, o: "&lvertneqq;" }], [0, { v: "&gnE;", n: 65024, o: "&gvertneqq;" }], [0, { v: "&ll;", n: new Map(/* @__PURE__ */ restoreDiff([[824, "&nLtv;"], [7577, "&nLt;"]])) }], [0, { v: "&gg;", n: new Map(/* @__PURE__ */ restoreDiff([[824, "&nGtv;"], [7577, "&nGt;"]])) }], [0, "&between;"], [0, "&NotCupCap;"], [0, "&nless;"], [0, "&ngt;"], [0, "&nle;"], [0, "&nge;"], [0, "&lesssim;"], [0, "&GreaterTilde;"], [0, "&nlsim;"], [0, "&ngsim;"], [0, "&LessGreater;"], [0, "&gl;"], [0, "&NotLessGreater;"], [0, "&NotGreaterLess;"], [0, "&pr;"], [0, "&sc;"], [0, "&prcue;"], [0, "&sccue;"], [0, "&PrecedesTilde;"], [0, { v: "&scsim;", n: 824, o: "&NotSucceedsTilde;" }], [0, "&NotPrecedes;"], [0, "&NotSucceeds;"], [0, { v: "&sub;", n: 8402, o: "&NotSubset;" }], [0, { v: "&sup;", n: 8402, o: "&NotSuperset;" }], [0, "&nsub;"], [0, "&nsup;"], [0, "&sube;"], [0, "&supe;"], [0, "&NotSubsetEqual;"], [0, "&NotSupersetEqual;"], [0, { v: "&subne;", n: 65024, o: "&varsubsetneq;" }], [0, { v: "&supne;", n: 65024, o: "&varsupsetneq;" }], [1, "&cupdot;"], [0, "&UnionPlus;"], [0, { v: "&sqsub;", n: 824, o: "&NotSquareSubset;" }], [0, { v: "&sqsup;", n: 824, o: "&NotSquareSuperset;" }], [0, "&sqsube;"], [0, "&sqsupe;"], [0, { v: "&sqcap;", n: 65024, o: "&sqcaps;" }], [0, { v: "&sqcup;", n: 65024, o: "&sqcups;" }], [0, "&CirclePlus;"], [0, "&CircleMinus;"], [0, "&CircleTimes;"], [0, "&osol;"], [0, "&CircleDot;"], [0, "&circledcirc;"], [0, "&circledast;"], [1, "&circleddash;"], [0, "&boxplus;"], [0, "&boxminus;"], [0, "&boxtimes;"], [0, "&dotsquare;"], [0, "&RightTee;"], [0, "&dashv;"], [0, "&DownTee;"], [0, "&bot;"], [1, "&models;"], [0, "&DoubleRightTee;"], [0, "&Vdash;"], [0, "&Vvdash;"], [0, "&VDash;"], [0, "&nvdash;"], [0, "&nvDash;"], [0, "&nVdash;"], [0, "&nVDash;"], [0, "&prurel;"], [1, "&LeftTriangle;"], [0, "&RightTriangle;"], [0, { v: "&LeftTriangleEqual;", n: 8402, o: "&nvltrie;" }], [0, { v: "&RightTriangleEqual;", n: 8402, o: "&nvrtrie;" }], [0, "&origof;"], [0, "&imof;"], [0, "&multimap;"], [0, "&hercon;"], [0, "&intcal;"], [0, "&veebar;"], [1, "&barvee;"], [0, "&angrtvb;"], [0, "&lrtri;"], [0, "&bigwedge;"], [0, "&bigvee;"], [0, "&bigcap;"], [0, "&bigcup;"], [0, "&diam;"], [0, "&sdot;"], [0, "&sstarf;"], [0, "&divideontimes;"], [0, "&bowtie;"], [0, "&ltimes;"], [0, "&rtimes;"], [0, "&leftthreetimes;"], [0, "&rightthreetimes;"], [0, "&backsimeq;"], [0, "&curlyvee;"], [0, "&curlywedge;"], [0, "&Sub;"], [0, "&Sup;"], [0, "&Cap;"], [0, "&Cup;"], [0, "&fork;"], [0, "&epar;"], [0, "&lessdot;"], [0, "&gtdot;"], [0, { v: "&Ll;", n: 824, o: "&nLl;" }], [0, { v: "&Gg;", n: 824, o: "&nGg;" }], [0, { v: "&leg;", n: 65024, o: "&lesg;" }], [0, { v: "&gel;", n: 65024, o: "&gesl;" }], [2, "&cuepr;"], [0, "&cuesc;"], [0, "&NotPrecedesSlantEqual;"], [0, "&NotSucceedsSlantEqual;"], [0, "&NotSquareSubsetEqual;"], [0, "&NotSquareSupersetEqual;"], [2, "&lnsim;"], [0, "&gnsim;"], [0, "&precnsim;"], [0, "&scnsim;"], [0, "&nltri;"], [0, "&NotRightTriangle;"], [0, "&nltrie;"], [0, "&NotRightTriangleEqual;"], [0, "&vellip;"], [0, "&ctdot;"], [0, "&utdot;"], [0, "&dtdot;"], [0, "&disin;"], [0, "&isinsv;"], [0, "&isins;"], [0, { v: "&isindot;", n: 824, o: "&notindot;" }], [0, "&notinvc;"], [0, "&notinvb;"], [1, { v: "&isinE;", n: 824, o: "&notinE;" }], [0, "&nisd;"], [0, "&xnis;"], [0, "&nis;"], [0, "&notnivc;"], [0, "&notnivb;"], [6, "&barwed;"], [0, "&Barwed;"], [1, "&lceil;"], [0, "&rceil;"], [0, "&LeftFloor;"], [0, "&rfloor;"], [0, "&drcrop;"], [0, "&dlcrop;"], [0, "&urcrop;"], [0, "&ulcrop;"], [0, "&bnot;"], [1, "&profline;"], [0, "&profsurf;"], [1, "&telrec;"], [0, "&target;"], [5, "&ulcorn;"], [0, "&urcorn;"], [0, "&dlcorn;"], [0, "&drcorn;"], [2, "&frown;"], [0, "&smile;"], [9, "&cylcty;"], [0, "&profalar;"], [7, "&topbot;"], [6, "&ovbar;"], [1, "&solbar;"], [60, "&angzarr;"], [51, "&lmoustache;"], [0, "&rmoustache;"], [2, "&OverBracket;"], [0, "&bbrk;"], [0, "&bbrktbrk;"], [37, "&OverParenthesis;"], [0, "&UnderParenthesis;"], [0, "&OverBrace;"], [0, "&UnderBrace;"], [2, "&trpezium;"], [4, "&elinters;"], [59, "&blank;"], [164, "&circledS;"], [55, "&boxh;"], [1, "&boxv;"], [9, "&boxdr;"], [3, "&boxdl;"], [3, "&boxur;"], [3, "&boxul;"], [3, "&boxvr;"], [7, "&boxvl;"], [7, "&boxhd;"], [7, "&boxhu;"], [7, "&boxvh;"], [19, "&boxH;"], [0, "&boxV;"], [0, "&boxdR;"], [0, "&boxDr;"], [0, "&boxDR;"], [0, "&boxdL;"], [0, "&boxDl;"], [0, "&boxDL;"], [0, "&boxuR;"], [0, "&boxUr;"], [0, "&boxUR;"], [0, "&boxuL;"], [0, "&boxUl;"], [0, "&boxUL;"], [0, "&boxvR;"], [0, "&boxVr;"], [0, "&boxVR;"], [0, "&boxvL;"], [0, "&boxVl;"], [0, "&boxVL;"], [0, "&boxHd;"], [0, "&boxhD;"], [0, "&boxHD;"], [0, "&boxHu;"], [0, "&boxhU;"], [0, "&boxHU;"], [0, "&boxvH;"], [0, "&boxVh;"], [0, "&boxVH;"], [19, "&uhblk;"], [3, "&lhblk;"], [3, "&block;"], [8, "&blk14;"], [0, "&blk12;"], [0, "&blk34;"], [13, "&square;"], [8, "&blacksquare;"], [0, "&EmptyVerySmallSquare;"], [1, "&rect;"], [0, "&marker;"], [2, "&fltns;"], [1, "&bigtriangleup;"], [0, "&blacktriangle;"], [0, "&triangle;"], [2, "&blacktriangleright;"], [0, "&rtri;"], [3, "&bigtriangledown;"], [0, "&blacktriangledown;"], [0, "&dtri;"], [2, "&blacktriangleleft;"], [0, "&ltri;"], [6, "&loz;"], [0, "&cir;"], [32, "&tridot;"], [2, "&bigcirc;"], [8, "&ultri;"], [0, "&urtri;"], [0, "&lltri;"], [0, "&EmptySmallSquare;"], [0, "&FilledSmallSquare;"], [8, "&bigstar;"], [0, "&star;"], [7, "&phone;"], [49, "&female;"], [1, "&male;"], [29, "&spades;"], [2, "&clubs;"], [1, "&hearts;"], [0, "&diamondsuit;"], [3, "&sung;"], [2, "&flat;"], [0, "&natural;"], [0, "&sharp;"], [163, "&check;"], [3, "&cross;"], [8, "&malt;"], [21, "&sext;"], [33, "&VerticalSeparator;"], [25, "&lbbrk;"], [0, "&rbbrk;"], [84, "&bsolhsub;"], [0, "&suphsol;"], [28, "&LeftDoubleBracket;"], [0, "&RightDoubleBracket;"], [0, "&lang;"], [0, "&rang;"], [0, "&Lang;"], [0, "&Rang;"], [0, "&loang;"], [0, "&roang;"], [7, "&longleftarrow;"], [0, "&longrightarrow;"], [0, "&longleftrightarrow;"], [0, "&DoubleLongLeftArrow;"], [0, "&DoubleLongRightArrow;"], [0, "&DoubleLongLeftRightArrow;"], [1, "&longmapsto;"], [2, "&dzigrarr;"], [258, "&nvlArr;"], [0, "&nvrArr;"], [0, "&nvHarr;"], [0, "&Map;"], [6, "&lbarr;"], [0, "&bkarow;"], [0, "&lBarr;"], [0, "&dbkarow;"], [0, "&drbkarow;"], [0, "&DDotrahd;"], [0, "&UpArrowBar;"], [0, "&DownArrowBar;"], [2, "&Rarrtl;"], [2, "&latail;"], [0, "&ratail;"], [0, "&lAtail;"], [0, "&rAtail;"], [0, "&larrfs;"], [0, "&rarrfs;"], [0, "&larrbfs;"], [0, "&rarrbfs;"], [2, "&nwarhk;"], [0, "&nearhk;"], [0, "&hksearow;"], [0, "&hkswarow;"], [0, "&nwnear;"], [0, "&nesear;"], [0, "&seswar;"], [0, "&swnwar;"], [8, { v: "&rarrc;", n: 824, o: "&nrarrc;" }], [1, "&cudarrr;"], [0, "&ldca;"], [0, "&rdca;"], [0, "&cudarrl;"], [0, "&larrpl;"], [2, "&curarrm;"], [0, "&cularrp;"], [7, "&rarrpl;"], [2, "&harrcir;"], [0, "&Uarrocir;"], [0, "&lurdshar;"], [0, "&ldrushar;"], [2, "&LeftRightVector;"], [0, "&RightUpDownVector;"], [0, "&DownLeftRightVector;"], [0, "&LeftUpDownVector;"], [0, "&LeftVectorBar;"], [0, "&RightVectorBar;"], [0, "&RightUpVectorBar;"], [0, "&RightDownVectorBar;"], [0, "&DownLeftVectorBar;"], [0, "&DownRightVectorBar;"], [0, "&LeftUpVectorBar;"], [0, "&LeftDownVectorBar;"], [0, "&LeftTeeVector;"], [0, "&RightTeeVector;"], [0, "&RightUpTeeVector;"], [0, "&RightDownTeeVector;"], [0, "&DownLeftTeeVector;"], [0, "&DownRightTeeVector;"], [0, "&LeftUpTeeVector;"], [0, "&LeftDownTeeVector;"], [0, "&lHar;"], [0, "&uHar;"], [0, "&rHar;"], [0, "&dHar;"], [0, "&luruhar;"], [0, "&ldrdhar;"], [0, "&ruluhar;"], [0, "&rdldhar;"], [0, "&lharul;"], [0, "&llhard;"], [0, "&rharul;"], [0, "&lrhard;"], [0, "&udhar;"], [0, "&duhar;"], [0, "&RoundImplies;"], [0, "&erarr;"], [0, "&simrarr;"], [0, "&larrsim;"], [0, "&rarrsim;"], [0, "&rarrap;"], [0, "&ltlarr;"], [1, "&gtrarr;"], [0, "&subrarr;"], [1, "&suplarr;"], [0, "&lfisht;"], [0, "&rfisht;"], [0, "&ufisht;"], [0, "&dfisht;"], [5, "&lopar;"], [0, "&ropar;"], [4, "&lbrke;"], [0, "&rbrke;"], [0, "&lbrkslu;"], [0, "&rbrksld;"], [0, "&lbrksld;"], [0, "&rbrkslu;"], [0, "&langd;"], [0, "&rangd;"], [0, "&lparlt;"], [0, "&rpargt;"], [0, "&gtlPar;"], [0, "&ltrPar;"], [3, "&vzigzag;"], [1, "&vangrt;"], [0, "&angrtvbd;"], [6, "&ange;"], [0, "&range;"], [0, "&dwangle;"], [0, "&uwangle;"], [0, "&angmsdaa;"], [0, "&angmsdab;"], [0, "&angmsdac;"], [0, "&angmsdad;"], [0, "&angmsdae;"], [0, "&angmsdaf;"], [0, "&angmsdag;"], [0, "&angmsdah;"], [0, "&bemptyv;"], [0, "&demptyv;"], [0, "&cemptyv;"], [0, "&raemptyv;"], [0, "&laemptyv;"], [0, "&ohbar;"], [0, "&omid;"], [0, "&opar;"], [1, "&operp;"], [1, "&olcross;"], [0, "&odsold;"], [1, "&olcir;"], [0, "&ofcir;"], [0, "&olt;"], [0, "&ogt;"], [0, "&cirscir;"], [0, "&cirE;"], [0, "&solb;"], [0, "&bsolb;"], [3, "&boxbox;"], [3, "&trisb;"], [0, "&rtriltri;"], [0, { v: "&LeftTriangleBar;", n: 824, o: "&NotLeftTriangleBar;" }], [0, { v: "&RightTriangleBar;", n: 824, o: "&NotRightTriangleBar;" }], [11, "&iinfin;"], [0, "&infintie;"], [0, "&nvinfin;"], [4, "&eparsl;"], [0, "&smeparsl;"], [0, "&eqvparsl;"], [5, "&blacklozenge;"], [8, "&RuleDelayed;"], [1, "&dsol;"], [9, "&bigodot;"], [0, "&bigoplus;"], [0, "&bigotimes;"], [1, "&biguplus;"], [1, "&bigsqcup;"], [5, "&iiiint;"], [0, "&fpartint;"], [2, "&cirfnint;"], [0, "&awint;"], [0, "&rppolint;"], [0, "&scpolint;"], [0, "&npolint;"], [0, "&pointint;"], [0, "&quatint;"], [0, "&intlarhk;"], [10, "&pluscir;"], [0, "&plusacir;"], [0, "&simplus;"], [0, "&plusdu;"], [0, "&plussim;"], [0, "&plustwo;"], [1, "&mcomma;"], [0, "&minusdu;"], [2, "&loplus;"], [0, "&roplus;"], [0, "&Cross;"], [0, "&timesd;"], [0, "&timesbar;"], [1, "&smashp;"], [0, "&lotimes;"], [0, "&rotimes;"], [0, "&otimesas;"], [0, "&Otimes;"], [0, "&odiv;"], [0, "&triplus;"], [0, "&triminus;"], [0, "&tritime;"], [0, "&intprod;"], [2, "&amalg;"], [0, "&capdot;"], [1, "&ncup;"], [0, "&ncap;"], [0, "&capand;"], [0, "&cupor;"], [0, "&cupcap;"], [0, "&capcup;"], [0, "&cupbrcap;"], [0, "&capbrcup;"], [0, "&cupcup;"], [0, "&capcap;"], [0, "&ccups;"], [0, "&ccaps;"], [2, "&ccupssm;"], [2, "&And;"], [0, "&Or;"], [0, "&andand;"], [0, "&oror;"], [0, "&orslope;"], [0, "&andslope;"], [1, "&andv;"], [0, "&orv;"], [0, "&andd;"], [0, "&ord;"], [1, "&wedbar;"], [6, "&sdote;"], [3, "&simdot;"], [2, { v: "&congdot;", n: 824, o: "&ncongdot;" }], [0, "&easter;"], [0, "&apacir;"], [0, { v: "&apE;", n: 824, o: "&napE;" }], [0, "&eplus;"], [0, "&pluse;"], [0, "&Esim;"], [0, "&Colone;"], [0, "&Equal;"], [1, "&ddotseq;"], [0, "&equivDD;"], [0, "&ltcir;"], [0, "&gtcir;"], [0, "&ltquest;"], [0, "&gtquest;"], [0, { v: "&leqslant;", n: 824, o: "&nleqslant;" }], [0, { v: "&geqslant;", n: 824, o: "&ngeqslant;" }], [0, "&lesdot;"], [0, "&gesdot;"], [0, "&lesdoto;"], [0, "&gesdoto;"], [0, "&lesdotor;"], [0, "&gesdotol;"], [0, "&lap;"], [0, "&gap;"], [0, "&lne;"], [0, "&gne;"], [0, "&lnap;"], [0, "&gnap;"], [0, "&lEg;"], [0, "&gEl;"], [0, "&lsime;"], [0, "&gsime;"], [0, "&lsimg;"], [0, "&gsiml;"], [0, "&lgE;"], [0, "&glE;"], [0, "&lesges;"], [0, "&gesles;"], [0, "&els;"], [0, "&egs;"], [0, "&elsdot;"], [0, "&egsdot;"], [0, "&el;"], [0, "&eg;"], [2, "&siml;"], [0, "&simg;"], [0, "&simlE;"], [0, "&simgE;"], [0, { v: "&LessLess;", n: 824, o: "&NotNestedLessLess;" }], [0, { v: "&GreaterGreater;", n: 824, o: "&NotNestedGreaterGreater;" }], [1, "&glj;"], [0, "&gla;"], [0, "&ltcc;"], [0, "&gtcc;"], [0, "&lescc;"], [0, "&gescc;"], [0, "&smt;"], [0, "&lat;"], [0, { v: "&smte;", n: 65024, o: "&smtes;" }], [0, { v: "&late;", n: 65024, o: "&lates;" }], [0, "&bumpE;"], [0, { v: "&PrecedesEqual;", n: 824, o: "&NotPrecedesEqual;" }], [0, { v: "&sce;", n: 824, o: "&NotSucceedsEqual;" }], [2, "&prE;"], [0, "&scE;"], [0, "&precneqq;"], [0, "&scnE;"], [0, "&prap;"], [0, "&scap;"], [0, "&precnapprox;"], [0, "&scnap;"], [0, "&Pr;"], [0, "&Sc;"], [0, "&subdot;"], [0, "&supdot;"], [0, "&subplus;"], [0, "&supplus;"], [0, "&submult;"], [0, "&supmult;"], [0, "&subedot;"], [0, "&supedot;"], [0, { v: "&subE;", n: 824, o: "&nsubE;" }], [0, { v: "&supE;", n: 824, o: "&nsupE;" }], [0, "&subsim;"], [0, "&supsim;"], [2, { v: "&subnE;", n: 65024, o: "&varsubsetneqq;" }], [0, { v: "&supnE;", n: 65024, o: "&varsupsetneqq;" }], [2, "&csub;"], [0, "&csup;"], [0, "&csube;"], [0, "&csupe;"], [0, "&subsup;"], [0, "&supsub;"], [0, "&subsub;"], [0, "&supsup;"], [0, "&suphsub;"], [0, "&supdsub;"], [0, "&forkv;"], [0, "&topfork;"], [0, "&mlcp;"], [8, "&Dashv;"], [1, "&Vdashl;"], [0, "&Barv;"], [0, "&vBar;"], [0, "&vBarv;"], [1, "&Vbar;"], [0, "&Not;"], [0, "&bNot;"], [0, "&rnmid;"], [0, "&cirmid;"], [0, "&midcir;"], [0, "&topcir;"], [0, "&nhpar;"], [0, "&parsim;"], [9, { v: "&parsl;", n: 8421, o: "&nparsl;" }], [44343, { n: new Map(/* @__PURE__ */ restoreDiff([[56476, "&Ascr;"], [1, "&Cscr;"], [0, "&Dscr;"], [2, "&Gscr;"], [2, "&Jscr;"], [0, "&Kscr;"], [2, "&Nscr;"], [0, "&Oscr;"], [0, "&Pscr;"], [0, "&Qscr;"], [1, "&Sscr;"], [0, "&Tscr;"], [0, "&Uscr;"], [0, "&Vscr;"], [0, "&Wscr;"], [0, "&Xscr;"], [0, "&Yscr;"], [0, "&Zscr;"], [0, "&ascr;"], [0, "&bscr;"], [0, "&cscr;"], [0, "&dscr;"], [1, "&fscr;"], [1, "&hscr;"], [0, "&iscr;"], [0, "&jscr;"], [0, "&kscr;"], [0, "&lscr;"], [0, "&mscr;"], [0, "&nscr;"], [1, "&pscr;"], [0, "&qscr;"], [0, "&rscr;"], [0, "&sscr;"], [0, "&tscr;"], [0, "&uscr;"], [0, "&vscr;"], [0, "&wscr;"], [0, "&xscr;"], [0, "&yscr;"], [0, "&zscr;"], [52, "&Afr;"], [0, "&Bfr;"], [1, "&Dfr;"], [0, "&Efr;"], [0, "&Ffr;"], [0, "&Gfr;"], [2, "&Jfr;"], [0, "&Kfr;"], [0, "&Lfr;"], [0, "&Mfr;"], [0, "&Nfr;"], [0, "&Ofr;"], [0, "&Pfr;"], [0, "&Qfr;"], [1, "&Sfr;"], [0, "&Tfr;"], [0, "&Ufr;"], [0, "&Vfr;"], [0, "&Wfr;"], [0, "&Xfr;"], [0, "&Yfr;"], [1, "&afr;"], [0, "&bfr;"], [0, "&cfr;"], [0, "&dfr;"], [0, "&efr;"], [0, "&ffr;"], [0, "&gfr;"], [0, "&hfr;"], [0, "&ifr;"], [0, "&jfr;"], [0, "&kfr;"], [0, "&lfr;"], [0, "&mfr;"], [0, "&nfr;"], [0, "&ofr;"], [0, "&pfr;"], [0, "&qfr;"], [0, "&rfr;"], [0, "&sfr;"], [0, "&tfr;"], [0, "&ufr;"], [0, "&vfr;"], [0, "&wfr;"], [0, "&xfr;"], [0, "&yfr;"], [0, "&zfr;"], [0, "&Aopf;"], [0, "&Bopf;"], [1, "&Dopf;"], [0, "&Eopf;"], [0, "&Fopf;"], [0, "&Gopf;"], [1, "&Iopf;"], [0, "&Jopf;"], [0, "&Kopf;"], [0, "&Lopf;"], [0, "&Mopf;"], [1, "&Oopf;"], [3, "&Sopf;"], [0, "&Topf;"], [0, "&Uopf;"], [0, "&Vopf;"], [0, "&Wopf;"], [0, "&Xopf;"], [0, "&Yopf;"], [1, "&aopf;"], [0, "&bopf;"], [0, "&copf;"], [0, "&dopf;"], [0, "&eopf;"], [0, "&fopf;"], [0, "&gopf;"], [0, "&hopf;"], [0, "&iopf;"], [0, "&jopf;"], [0, "&kopf;"], [0, "&lopf;"], [0, "&mopf;"], [0, "&nopf;"], [0, "&oopf;"], [0, "&popf;"], [0, "&qopf;"], [0, "&ropf;"], [0, "&sopf;"], [0, "&topf;"], [0, "&uopf;"], [0, "&vopf;"], [0, "&wopf;"], [0, "&xopf;"], [0, "&yopf;"], [0, "&zopf;"]])) }], [8906, "&fflig;"], [0, "&filig;"], [0, "&fllig;"], [0, "&ffilig;"], [0, "&ffllig;"]]));
3820
-
3821
- // node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/escape.js
3822
- var xmlCodeMap = /* @__PURE__ */ new Map([
3823
- [34, "&quot;"],
3824
- [38, "&amp;"],
3825
- [39, "&apos;"],
3826
- [60, "&lt;"],
3827
- [62, "&gt;"]
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, "&quot;"],
3854
- [38, "&amp;"],
3855
- [160, "&nbsp;"]
3856
- ]));
3857
- var escapeText = getEscaper(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([
3858
- [38, "&amp;"],
3859
- [60, "&lt;"],
3860
- [62, "&gt;"],
3861
- [160, "&nbsp;"]
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);
@@ -4232,17 +4000,35 @@ function loadInlineSources(story, sources, opts, diagnostics) {
4232
4000
  }
4233
4001
  const content = typeof source.content === "string" ? source.content : source.content.toString("utf-8");
4234
4002
  const ext = normalizedFileExt(source.filename);
4235
- if (ext === "tw" || ext === "twee" || ext === "tw2" || ext === "twee2" || !ext) {
4236
- const twee2 = ext === "tw2" || ext === "twee2" || opts.twee2Compat;
4237
- const result = parseTwee(content, {
4238
- filename: source.filename,
4239
- trim: opts.trim ?? true,
4240
- twee2Compat: twee2
4241
- });
4242
- diagnostics.push(...result.diagnostics);
4243
- for (const p of result.passages) {
4244
- storyAdd(story, p, diagnostics);
4003
+ switch (ext) {
4004
+ case "":
4005
+ case "tw":
4006
+ case "twee":
4007
+ case "tw2":
4008
+ case "twee2": {
4009
+ const twee2 = ext === "tw2" || ext === "twee2" || opts.twee2Compat;
4010
+ const result = parseTwee(content, {
4011
+ filename: source.filename,
4012
+ trim: opts.trim ?? true,
4013
+ twee2Compat: twee2
4014
+ });
4015
+ diagnostics.push(...result.diagnostics);
4016
+ for (const p of result.passages) {
4017
+ storyAdd(story, p, diagnostics);
4018
+ }
4019
+ break;
4245
4020
  }
4021
+ case "css":
4022
+ storyAdd(story, { name: basename(source.filename), tags: ["stylesheet"], text: content }, diagnostics);
4023
+ break;
4024
+ case "js":
4025
+ storyAdd(story, { name: basename(source.filename), tags: ["script"], text: content }, diagnostics);
4026
+ break;
4027
+ default:
4028
+ diagnostics.push({
4029
+ level: "warning",
4030
+ message: `load ${source.filename}: in-memory sources of type .${ext} are not supported; skipped.`
4031
+ });
4246
4032
  }
4247
4033
  }
4248
4034
  }
@@ -4440,7 +4226,27 @@ function loadSourcesCached(story, filenames, opts, diagnostics, processedFiles,
4440
4226
  }
4441
4227
 
4442
4228
  // src/version.ts
4443
- var VERSION = "1.2.0";
4229
+ import { readFileSync as readFileSync2 } from "fs";
4230
+ import { dirname, join as join3 } from "path";
4231
+ import { fileURLToPath } from "url";
4232
+ var PACKAGE_NAME = "@rohal12/twee-ts";
4233
+ function findPackageVersion(startDir) {
4234
+ let dir = startDir;
4235
+ for (; ; ) {
4236
+ try {
4237
+ const pkg = JSON.parse(readFileSync2(join3(dir, "package.json"), "utf-8"));
4238
+ if (pkg.name === PACKAGE_NAME && typeof pkg.version === "string") return pkg.version;
4239
+ } catch {
4240
+ }
4241
+ const parent = dirname(dir);
4242
+ if (parent === dir) return void 0;
4243
+ dir = parent;
4244
+ }
4245
+ }
4246
+ function moduleDir() {
4247
+ return typeof __dirname === "string" ? __dirname : dirname(fileURLToPath(import.meta.url));
4248
+ }
4249
+ var VERSION = findPackageVersion(moduleDir()) ?? "0.0.0";
4444
4250
 
4445
4251
  // src/output-twine2.ts
4446
4252
  var CREATOR_NAME = "Twee-ts";
@@ -4530,8 +4336,8 @@ function getTwine2DataChunk(story, startName, options) {
4530
4336
  }
4531
4337
 
4532
4338
  // src/output-twine1.ts
4533
- import { readFileSync as readFileSync2 } from "fs";
4534
- import { join as join3, dirname } from "path";
4339
+ import { readFileSync as readFileSync3 } from "fs";
4340
+ import { join as join4, dirname as dirname2 } from "path";
4535
4341
  var CREATOR_NAME2 = "twee-ts";
4536
4342
  function toTwine1Archive(story, _startName) {
4537
4343
  const { data, count } = getTwine1PassageChunk(story);
@@ -4539,19 +4345,19 @@ function toTwine1Archive(story, _startName) {
4539
4345
  `;
4540
4346
  }
4541
4347
  function toTwine1HTML(story, format, startName) {
4542
- const formatDir = dirname(format.filename);
4543
- const parentDir = dirname(formatDir);
4348
+ const formatDir = dirname2(format.filename);
4349
+ const parentDir = dirname2(formatDir);
4544
4350
  let template = readFormatSource(format);
4545
4351
  const { data, count } = getTwine1PassageChunk(story);
4546
- template = tryReplaceComponent(template, '"USER_LIB"', join3(formatDir, "userlib.js"), false);
4547
- template = tryReplaceComponent(template, '"ENGINE"', join3(parentDir, "engine.js"), true);
4548
- template = tryReplaceComponent(template, '"SUGARCANE"', join3(formatDir, "code.js"), true);
4549
- template = tryReplaceComponent(template, '"JONAH"', join3(formatDir, "code.js"), true);
4352
+ template = tryReplaceComponent(template, '"USER_LIB"', join4(formatDir, "userlib.js"), false);
4353
+ template = tryReplaceComponent(template, '"ENGINE"', join4(parentDir, "engine.js"), true);
4354
+ template = tryReplaceComponent(template, '"SUGARCANE"', join4(formatDir, "code.js"), true);
4355
+ template = tryReplaceComponent(template, '"JONAH"', join4(formatDir, "code.js"), true);
4550
4356
  if (story.twine1.settings.get("jquery") === "on") {
4551
- template = tryReplaceComponent(template, '"JQUERY"', join3(parentDir, "jquery.js"), true);
4357
+ template = tryReplaceComponent(template, '"JQUERY"', join4(parentDir, "jquery.js"), true);
4552
4358
  }
4553
4359
  if (story.twine1.settings.get("modernizr") === "on") {
4554
- template = tryReplaceComponent(template, '"MODERNIZR"', join3(parentDir, "modernizr.js"), true);
4360
+ template = tryReplaceComponent(template, '"MODERNIZR"', join4(parentDir, "modernizr.js"), true);
4555
4361
  }
4556
4362
  const displayStart = startName === "Start" ? "" : startName;
4557
4363
  template = template.replace('"VERSION"', `Compiled with ${CREATOR_NAME2}, ${VERSION}`);
@@ -4564,7 +4370,7 @@ function toTwine1HTML(story, format, startName) {
4564
4370
  } else {
4565
4371
  let footer;
4566
4372
  try {
4567
- footer = readFileSync2(join3(formatDir, "footer.html"), "utf-8");
4373
+ footer = readFileSync3(join4(formatDir, "footer.html"), "utf-8");
4568
4374
  } catch {
4569
4375
  footer = "</div>\n</body>\n</html>\n";
4570
4376
  }
@@ -4594,7 +4400,7 @@ function getTwine1PassageChunk(story) {
4594
4400
  function tryReplaceComponent(template, placeholder, componentPath, required) {
4595
4401
  if (!template.includes(placeholder)) return template;
4596
4402
  try {
4597
- let content = readFileSync2(componentPath, "utf-8");
4403
+ let content = readFileSync3(componentPath, "utf-8");
4598
4404
  if (content.charCodeAt(0) === 65279) content = content.slice(1);
4599
4405
  return template.replace(placeholder, () => content);
4600
4406
  } catch (e) {
@@ -4691,8 +4497,8 @@ function modifyHead(html, modulePaths, headFile, diagnostics) {
4691
4497
  }
4692
4498
 
4693
4499
  // src/remote-formats.ts
4694
- import { mkdirSync, readFileSync as readFileSync3, writeFileSync, existsSync, readdirSync as readdirSync3, statSync as statSync4, rmSync } from "fs";
4695
- import { join as join4 } from "path";
4500
+ import { mkdirSync, readFileSync as readFileSync4, writeFileSync, existsSync, readdirSync as readdirSync3, statSync as statSync4, rmSync } from "fs";
4501
+ import { join as join5 } from "path";
4696
4502
  import { homedir as homedir2 } from "os";
4697
4503
  var DEFAULT_SFA_INDICES = [
4698
4504
  "https://videlais.github.io/story-formats-archive/official/index.json",
@@ -4700,8 +4506,8 @@ var DEFAULT_SFA_INDICES = [
4700
4506
  ];
4701
4507
  function getCacheDir() {
4702
4508
  const xdg = process.env["XDG_CACHE_HOME"];
4703
- const base = xdg || join4(homedir2(), ".cache");
4704
- return join4(base, "twee-ts", "storyformats");
4509
+ const base = xdg || join5(homedir2(), ".cache");
4510
+ return join5(base, "twee-ts", "storyformats");
4705
4511
  }
4706
4512
  var indexCache = /* @__PURE__ */ new Map();
4707
4513
  function clearIndexCache() {
@@ -4791,9 +4597,9 @@ async function fetchAndCacheFormat(entry, downloadUrl) {
4791
4597
  throw new Error(`Failed to parse format JSON from ${downloadUrl}`);
4792
4598
  }
4793
4599
  const cacheDir = getCacheDir();
4794
- const formatDir = join4(cacheDir, entry.name, entry.version);
4600
+ const formatDir = join5(cacheDir, entry.name, entry.version);
4795
4601
  mkdirSync(formatDir, { recursive: true });
4796
- const formatPath = join4(formatDir, "format.js");
4602
+ const formatPath = join5(formatDir, "format.js");
4797
4603
  writeFileSync(formatPath, text, "utf-8");
4798
4604
  return {
4799
4605
  id,
@@ -4817,9 +4623,9 @@ async function fetchDirectFormat(url) {
4817
4623
  }
4818
4624
  const id = makeFormatId(data.name, data.version);
4819
4625
  const cacheDir = getCacheDir();
4820
- const formatDir = join4(cacheDir, data.name, data.version);
4626
+ const formatDir = join5(cacheDir, data.name, data.version);
4821
4627
  mkdirSync(formatDir, { recursive: true });
4822
- const formatPath = join4(formatDir, "format.js");
4628
+ const formatPath = join5(formatDir, "format.js");
4823
4629
  writeFileSync(formatPath, text, "utf-8");
4824
4630
  return {
4825
4631
  id,
@@ -4867,10 +4673,10 @@ async function resolveRemoteFormat(name, version, indices, urls) {
4867
4673
  return void 0;
4868
4674
  }
4869
4675
  function getCachedFormat(name, version) {
4870
- const formatPath = join4(getCacheDir(), name, version, "format.js");
4676
+ const formatPath = join5(getCacheDir(), name, version, "format.js");
4871
4677
  try {
4872
4678
  if (!existsSync(formatPath)) return void 0;
4873
- const source = readFileSync3(formatPath, "utf-8");
4679
+ const source = readFileSync4(formatPath, "utf-8");
4874
4680
  const id = makeFormatId(name, version);
4875
4681
  const data = parseFormatJSON(source, id);
4876
4682
  if (!data) return void 0;
@@ -4901,7 +4707,7 @@ function discoverCachedFormats() {
4901
4707
  return formats;
4902
4708
  }
4903
4709
  for (const name of names) {
4904
- const nameDir = join4(cacheDir, name);
4710
+ const nameDir = join5(cacheDir, name);
4905
4711
  try {
4906
4712
  if (!statSync4(nameDir).isDirectory()) continue;
4907
4713
  } catch {
@@ -4937,7 +4743,7 @@ function listCachedFormats() {
4937
4743
  return entries;
4938
4744
  }
4939
4745
  for (const name of names) {
4940
- const nameDir = join4(cacheDir, name);
4746
+ const nameDir = join5(cacheDir, name);
4941
4747
  try {
4942
4748
  if (!statSync4(nameDir).isDirectory()) continue;
4943
4749
  } catch {
@@ -4950,7 +4756,7 @@ function listCachedFormats() {
4950
4756
  continue;
4951
4757
  }
4952
4758
  for (const version of versions) {
4953
- const formatPath = join4(nameDir, version, "format.js");
4759
+ const formatPath = join5(nameDir, version, "format.js");
4954
4760
  try {
4955
4761
  const stat = statSync4(formatPath);
4956
4762
  entries.push({
@@ -4974,7 +4780,7 @@ function clearCachedFormats(name) {
4974
4780
  rmSync(cacheDir, { recursive: true, force: true });
4975
4781
  return count2;
4976
4782
  }
4977
- const nameDir = join4(cacheDir, name);
4783
+ const nameDir = join5(cacheDir, name);
4978
4784
  if (!existsSync(nameDir)) return 0;
4979
4785
  let versions;
4980
4786
  try {
@@ -5375,18 +5181,18 @@ function formatLintReport(result) {
5375
5181
  }
5376
5182
 
5377
5183
  // src/config.ts
5378
- import { readFileSync as readFileSync4, existsSync as existsSync2 } from "fs";
5379
- import { join as join5 } from "path";
5184
+ import { readFileSync as readFileSync5, existsSync as existsSync2 } from "fs";
5185
+ import { join as join6 } from "path";
5380
5186
  var CONFIG_FILENAME = "twee-ts.config.json";
5381
5187
  var VALID_OUTPUT_MODES = ["html", "twee3", "twee1", "twine2-archive", "twine1-archive", "json"];
5382
5188
  var VALID_WORD_COUNT_METHODS = ["tweego", "whitespace"];
5383
5189
  function loadConfig(dir) {
5384
5190
  const base = dir ?? process.cwd();
5385
- const configPath = join5(base, CONFIG_FILENAME);
5191
+ const configPath = join6(base, CONFIG_FILENAME);
5386
5192
  if (!existsSync2(configPath)) return null;
5387
5193
  let raw;
5388
5194
  try {
5389
- raw = readFileSync4(configPath, "utf-8");
5195
+ raw = readFileSync5(configPath, "utf-8");
5390
5196
  } catch {
5391
5197
  return null;
5392
5198
  }
@@ -5406,7 +5212,7 @@ function loadConfig(dir) {
5406
5212
  function loadConfigFile(filePath) {
5407
5213
  let raw;
5408
5214
  try {
5409
- raw = readFileSync4(filePath, "utf-8");
5215
+ raw = readFileSync5(filePath, "utf-8");
5410
5216
  } catch (e) {
5411
5217
  throw new Error(`Cannot read config file ${filePath}: ${e instanceof Error ? e.message : String(e)}`);
5412
5218
  }
@@ -5695,7 +5501,7 @@ function runInit() {
5695
5501
  console.log("Initializing new twee-ts project...");
5696
5502
  mkdirSync2("src", { recursive: true });
5697
5503
  writeFileSync3(
5698
- join6("src", "StoryData.tw"),
5504
+ join7("src", "StoryData.tw"),
5699
5505
  `:: StoryData
5700
5506
  {
5701
5507
  "ifid": "${crypto.randomUUID().toUpperCase()}"
@@ -5703,7 +5509,7 @@ function runInit() {
5703
5509
  `
5704
5510
  );
5705
5511
  writeFileSync3(
5706
- join6("src", "Start.tw"),
5512
+ join7("src", "Start.tw"),
5707
5513
  `:: Start
5708
5514
  Welcome to your new Twine story!
5709
5515