@rohal12/twee-ts 1.13.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1436,8 +1436,7 @@ function parseTwee(source, options = {}) {
1436
1436
  return { passages, diagnostics };
1437
1437
  }
1438
1438
 
1439
- // node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/decode-codepoint.js
1440
- var _a;
1439
+ // node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/decode-codepoint.js
1441
1440
  var decodeMap = /* @__PURE__ */ new Map([
1442
1441
  [0, 65533],
1443
1442
  // C1 Unicode control character reference replacements
@@ -1469,47 +1468,16 @@ var decodeMap = /* @__PURE__ */ new Map([
1469
1468
  [158, 382],
1470
1469
  [159, 376]
1471
1470
  ]);
1472
- var fromCodePoint = (
1473
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
1474
- (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : ((codePoint) => {
1475
- let output = "";
1476
- if (codePoint > 65535) {
1477
- codePoint -= 65536;
1478
- output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296);
1479
- codePoint = 56320 | codePoint & 1023;
1480
- }
1481
- output += String.fromCharCode(codePoint);
1482
- return output;
1483
- })
1484
- );
1485
1471
  function replaceCodePoint(codePoint) {
1486
- var _a3;
1487
1472
  if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {
1488
1473
  return 65533;
1489
1474
  }
1490
- return (_a3 = decodeMap.get(codePoint)) !== null && _a3 !== void 0 ? _a3 : codePoint;
1475
+ return decodeMap.get(codePoint) ?? codePoint;
1491
1476
  }
1492
1477
 
1493
- // node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/internal/decode-shared.js
1478
+ // node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/internal/decode-shared.js
1494
1479
  function decodeBase64(input) {
1495
- const binary = (
1496
- // eslint-disable-next-line n/no-unsupported-features/node-builtins
1497
- typeof atob === "function" ? (
1498
- // Browser (and Node >=16)
1499
- // eslint-disable-next-line n/no-unsupported-features/node-builtins
1500
- atob(input)
1501
- ) : (
1502
- // Older Node versions (<16)
1503
- // eslint-disable-next-line n/no-unsupported-features/node-builtins
1504
- typeof Buffer.from === "function" ? (
1505
- // eslint-disable-next-line n/no-unsupported-features/node-builtins
1506
- Buffer.from(input, "base64").toString("binary")
1507
- ) : (
1508
- // eslint-disable-next-line unicorn/no-new-buffer, n/no-deprecated-api
1509
- new Buffer(input, "base64").toString("binary")
1510
- )
1511
- )
1512
- );
1480
+ const binary = atob(input);
1513
1481
  const evenLength = binary.length & ~1;
1514
1482
  const out = new Uint16Array(evenLength / 2);
1515
1483
  for (let index = 0, outIndex = 0; index < evenLength; index += 2) {
@@ -1520,36 +1488,36 @@ function decodeBase64(input) {
1520
1488
  return out;
1521
1489
  }
1522
1490
 
1523
- // node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/generated/decode-data-html.js
1491
+ // node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/generated/decode-data-html.js
1524
1492
  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");
1525
1493
 
1526
- // node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/generated/decode-data-xml.js
1494
+ // node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/generated/decode-data-xml.js
1527
1495
  var xmlDecodeTree = /* @__PURE__ */ decodeBase64("AAJhZ2xxBwARABMAFQBtAg0AAAAAAA8AcAAmYG8AcwAnYHQAPmB0ADxg9SFvdCJg");
1528
1496
 
1529
- // node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/internal/bin-trie-flags.js
1497
+ // node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/internal/bin-trie-flags.js
1530
1498
  var BinTrieFlags;
1531
- (function(BinTrieFlags3) {
1532
- BinTrieFlags3[BinTrieFlags3["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
1533
- BinTrieFlags3[BinTrieFlags3["FLAG13"] = 8192] = "FLAG13";
1534
- BinTrieFlags3[BinTrieFlags3["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH";
1535
- BinTrieFlags3[BinTrieFlags3["JUMP_TABLE"] = 127] = "JUMP_TABLE";
1499
+ (function(BinTrieFlags2) {
1500
+ BinTrieFlags2[BinTrieFlags2["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
1501
+ BinTrieFlags2[BinTrieFlags2["FLAG13"] = 8192] = "FLAG13";
1502
+ BinTrieFlags2[BinTrieFlags2["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH";
1503
+ BinTrieFlags2[BinTrieFlags2["JUMP_TABLE"] = 127] = "JUMP_TABLE";
1536
1504
  })(BinTrieFlags || (BinTrieFlags = {}));
1537
1505
 
1538
- // node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/decode.js
1506
+ // node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/decode.js
1539
1507
  var CharCodes;
1540
- (function(CharCodes4) {
1541
- CharCodes4[CharCodes4["NUM"] = 35] = "NUM";
1542
- CharCodes4[CharCodes4["SEMI"] = 59] = "SEMI";
1543
- CharCodes4[CharCodes4["EQUALS"] = 61] = "EQUALS";
1544
- CharCodes4[CharCodes4["ZERO"] = 48] = "ZERO";
1545
- CharCodes4[CharCodes4["NINE"] = 57] = "NINE";
1546
- CharCodes4[CharCodes4["LOWER_A"] = 97] = "LOWER_A";
1547
- CharCodes4[CharCodes4["LOWER_F"] = 102] = "LOWER_F";
1548
- CharCodes4[CharCodes4["LOWER_X"] = 120] = "LOWER_X";
1549
- CharCodes4[CharCodes4["LOWER_Z"] = 122] = "LOWER_Z";
1550
- CharCodes4[CharCodes4["UPPER_A"] = 65] = "UPPER_A";
1551
- CharCodes4[CharCodes4["UPPER_F"] = 70] = "UPPER_F";
1552
- CharCodes4[CharCodes4["UPPER_Z"] = 90] = "UPPER_Z";
1508
+ (function(CharCodes3) {
1509
+ CharCodes3[CharCodes3["NUM"] = 35] = "NUM";
1510
+ CharCodes3[CharCodes3["SEMI"] = 59] = "SEMI";
1511
+ CharCodes3[CharCodes3["EQUALS"] = 61] = "EQUALS";
1512
+ CharCodes3[CharCodes3["ZERO"] = 48] = "ZERO";
1513
+ CharCodes3[CharCodes3["NINE"] = 57] = "NINE";
1514
+ CharCodes3[CharCodes3["LOWER_A"] = 97] = "LOWER_A";
1515
+ CharCodes3[CharCodes3["LOWER_F"] = 102] = "LOWER_F";
1516
+ CharCodes3[CharCodes3["LOWER_X"] = 120] = "LOWER_X";
1517
+ CharCodes3[CharCodes3["LOWER_Z"] = 122] = "LOWER_Z";
1518
+ CharCodes3[CharCodes3["UPPER_A"] = 65] = "UPPER_A";
1519
+ CharCodes3[CharCodes3["UPPER_F"] = 70] = "UPPER_F";
1520
+ CharCodes3[CharCodes3["UPPER_Z"] = 90] = "UPPER_Z";
1553
1521
  })(CharCodes || (CharCodes = {}));
1554
1522
  var TO_LOWER_BIT = 32;
1555
1523
  function isNumber(code) {
@@ -1565,33 +1533,51 @@ function isEntityInAttributeInvalidEnd(code) {
1565
1533
  return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);
1566
1534
  }
1567
1535
  var EntityDecoderState;
1568
- (function(EntityDecoderState3) {
1569
- EntityDecoderState3[EntityDecoderState3["EntityStart"] = 0] = "EntityStart";
1570
- EntityDecoderState3[EntityDecoderState3["NumericStart"] = 1] = "NumericStart";
1571
- EntityDecoderState3[EntityDecoderState3["NumericDecimal"] = 2] = "NumericDecimal";
1572
- EntityDecoderState3[EntityDecoderState3["NumericHex"] = 3] = "NumericHex";
1573
- EntityDecoderState3[EntityDecoderState3["NamedEntity"] = 4] = "NamedEntity";
1536
+ (function(EntityDecoderState2) {
1537
+ EntityDecoderState2[EntityDecoderState2["EntityStart"] = 0] = "EntityStart";
1538
+ EntityDecoderState2[EntityDecoderState2["NumericStart"] = 1] = "NumericStart";
1539
+ EntityDecoderState2[EntityDecoderState2["NumericDecimal"] = 2] = "NumericDecimal";
1540
+ EntityDecoderState2[EntityDecoderState2["NumericHex"] = 3] = "NumericHex";
1541
+ EntityDecoderState2[EntityDecoderState2["NamedEntity"] = 4] = "NamedEntity";
1574
1542
  })(EntityDecoderState || (EntityDecoderState = {}));
1575
1543
  var DecodingMode;
1576
- (function(DecodingMode3) {
1577
- DecodingMode3[DecodingMode3["Legacy"] = 0] = "Legacy";
1578
- DecodingMode3[DecodingMode3["Strict"] = 1] = "Strict";
1579
- DecodingMode3[DecodingMode3["Attribute"] = 2] = "Attribute";
1544
+ (function(DecodingMode2) {
1545
+ DecodingMode2[DecodingMode2["Legacy"] = 0] = "Legacy";
1546
+ DecodingMode2[DecodingMode2["Strict"] = 1] = "Strict";
1547
+ DecodingMode2[DecodingMode2["Attribute"] = 2] = "Attribute";
1580
1548
  })(DecodingMode || (DecodingMode = {}));
1581
1549
  var EntityDecoder = class {
1550
+ decodeTree;
1551
+ emitCodePoint;
1552
+ errors;
1582
1553
  constructor(decodeTree, emitCodePoint, errors) {
1583
1554
  this.decodeTree = decodeTree;
1584
1555
  this.emitCodePoint = emitCodePoint;
1585
1556
  this.errors = errors;
1586
- this.state = EntityDecoderState.EntityStart;
1587
- this.consumed = 1;
1588
- this.result = 0;
1589
- this.treeIndex = 0;
1590
- this.excess = 1;
1591
- this.decodeMode = DecodingMode.Strict;
1592
- this.runConsumed = 0;
1593
1557
  }
1594
- /** Resets the instance to make it reusable. */
1558
+ /** The current state of the decoder. */
1559
+ state = EntityDecoderState.EntityStart;
1560
+ /** Characters that were consumed while parsing an entity. */
1561
+ consumed = 1;
1562
+ /**
1563
+ * The result of the entity.
1564
+ *
1565
+ * Either the result index of a numeric entity, or the codepoint of a
1566
+ * numeric entity.
1567
+ */
1568
+ result = 0;
1569
+ /** The current index in the decode tree. */
1570
+ treeIndex = 0;
1571
+ /** The number of characters that were consumed in excess. */
1572
+ excess = 1;
1573
+ /** The mode in which the decoder is operating. */
1574
+ decodeMode = DecodingMode.Strict;
1575
+ /** The number of characters that have been consumed in the current run. */
1576
+ runConsumed = 0;
1577
+ /**
1578
+ * Resets the instance to make it reusable.
1579
+ * @param decodeMode Entity decoding mode to use.
1580
+ */
1595
1581
  startEntity(decodeMode) {
1596
1582
  this.decodeMode = decodeMode;
1597
1583
  this.state = EntityDecoderState.EntityStart;
@@ -1607,7 +1593,6 @@ var EntityDecoder = class {
1607
1593
  *
1608
1594
  * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
1609
1595
  * entity is incomplete, and resume when the next string is written.
1610
- *
1611
1596
  * @param input The string containing the entity (or a continuation of the entity).
1612
1597
  * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
1613
1598
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
@@ -1641,7 +1626,6 @@ var EntityDecoder = class {
1641
1626
  * Switches between the numeric decimal and hexadecimal states.
1642
1627
  *
1643
1628
  * Equivalent to the `Numeric character reference state` in the HTML spec.
1644
- *
1645
1629
  * @param input The string containing the entity (or a continuation of the entity).
1646
1630
  * @param offset The current offset.
1647
1631
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
@@ -1662,7 +1646,6 @@ var EntityDecoder = class {
1662
1646
  * Parses a hexadecimal numeric entity.
1663
1647
  *
1664
1648
  * Equivalent to the `Hexademical character reference state` in the HTML spec.
1665
- *
1666
1649
  * @param input The string containing the entity (or a continuation of the entity).
1667
1650
  * @param offset The current offset.
1668
1651
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
@@ -1685,7 +1668,6 @@ var EntityDecoder = class {
1685
1668
  * Parses a decimal numeric entity.
1686
1669
  *
1687
1670
  * Equivalent to the `Decimal character reference state` in the HTML spec.
1688
- *
1689
1671
  * @param input The string containing the entity (or a continuation of the entity).
1690
1672
  * @param offset The current offset.
1691
1673
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
@@ -1708,7 +1690,6 @@ var EntityDecoder = class {
1708
1690
  *
1709
1691
  * Implements the logic from the `Hexademical character reference start
1710
1692
  * state` and `Numeric character reference end state` in the HTML spec.
1711
- *
1712
1693
  * @param lastCp The last code point of the entity. Used to see if the
1713
1694
  * entity was terminated with a semicolon.
1714
1695
  * @param expectedLength The minimum number of characters that should be
@@ -1717,9 +1698,8 @@ var EntityDecoder = class {
1717
1698
  * @returns The number of characters that were consumed.
1718
1699
  */
1719
1700
  emitNumericEntity(lastCp, expectedLength) {
1720
- var _a3;
1721
1701
  if (this.consumed <= expectedLength) {
1722
- (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed);
1702
+ this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed);
1723
1703
  return 0;
1724
1704
  }
1725
1705
  if (lastCp === CharCodes.SEMI) {
@@ -1740,7 +1720,6 @@ var EntityDecoder = class {
1740
1720
  * Parses a named entity.
1741
1721
  *
1742
1722
  * Equivalent to the `Named character reference state` in the HTML spec.
1743
- *
1744
1723
  * @param input The string containing the entity (or a continuation of the entity).
1745
1724
  * @param offset The current offset.
1746
1725
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
@@ -1813,24 +1792,20 @@ var EntityDecoder = class {
1813
1792
  }
1814
1793
  /**
1815
1794
  * Emit a named entity that was not terminated with a semicolon.
1816
- *
1817
1795
  * @returns The number of characters consumed.
1818
1796
  */
1819
1797
  emitNotTerminatedNamedEntity() {
1820
- var _a3;
1821
1798
  const { result, decodeTree } = this;
1822
1799
  const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;
1823
1800
  this.emitNamedEntityData(result, valueLength, this.consumed);
1824
- (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.missingSemicolonAfterCharacterReference();
1801
+ this.errors?.missingSemicolonAfterCharacterReference();
1825
1802
  return this.consumed;
1826
1803
  }
1827
1804
  /**
1828
1805
  * Emit a named entity.
1829
- *
1830
1806
  * @param result The index of the entity in the decode tree.
1831
1807
  * @param valueLength The number of bytes in the entity.
1832
1808
  * @param consumed The number of characters consumed.
1833
- *
1834
1809
  * @returns The number of characters consumed.
1835
1810
  */
1836
1811
  emitNamedEntityData(result, valueLength, consumed) {
@@ -1845,11 +1820,9 @@ var EntityDecoder = class {
1845
1820
  * Signal to the parser that the end of the input was reached.
1846
1821
  *
1847
1822
  * Remaining data will be emitted and relevant errors will be produced.
1848
- *
1849
1823
  * @returns The number of characters consumed.
1850
1824
  */
1851
1825
  end() {
1852
- var _a3;
1853
1826
  switch (this.state) {
1854
1827
  case EntityDecoderState.NamedEntity: {
1855
1828
  return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;
@@ -1862,7 +1835,7 @@ var EntityDecoder = class {
1862
1835
  return this.emitNumericEntity(0, 3);
1863
1836
  }
1864
1837
  case EntityDecoderState.NumericStart: {
1865
- (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed);
1838
+ this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed);
1866
1839
  return 0;
1867
1840
  }
1868
1841
  case EntityDecoderState.EntityStart: {
@@ -1900,36 +1873,36 @@ function determineBranch(decodeTree, current, nodeIndex, char) {
1900
1873
  return -1;
1901
1874
  }
1902
1875
 
1903
- // node_modules/.pnpm/htmlparser2@10.1.0/node_modules/htmlparser2/dist/esm/Tokenizer.js
1876
+ // node_modules/.pnpm/htmlparser2@12.0.0/node_modules/htmlparser2/dist/Tokenizer.js
1904
1877
  var CharCodes2;
1905
- (function(CharCodes4) {
1906
- CharCodes4[CharCodes4["Tab"] = 9] = "Tab";
1907
- CharCodes4[CharCodes4["NewLine"] = 10] = "NewLine";
1908
- CharCodes4[CharCodes4["FormFeed"] = 12] = "FormFeed";
1909
- CharCodes4[CharCodes4["CarriageReturn"] = 13] = "CarriageReturn";
1910
- CharCodes4[CharCodes4["Space"] = 32] = "Space";
1911
- CharCodes4[CharCodes4["ExclamationMark"] = 33] = "ExclamationMark";
1912
- CharCodes4[CharCodes4["Number"] = 35] = "Number";
1913
- CharCodes4[CharCodes4["Amp"] = 38] = "Amp";
1914
- CharCodes4[CharCodes4["SingleQuote"] = 39] = "SingleQuote";
1915
- CharCodes4[CharCodes4["DoubleQuote"] = 34] = "DoubleQuote";
1916
- CharCodes4[CharCodes4["Dash"] = 45] = "Dash";
1917
- CharCodes4[CharCodes4["Slash"] = 47] = "Slash";
1918
- CharCodes4[CharCodes4["Zero"] = 48] = "Zero";
1919
- CharCodes4[CharCodes4["Nine"] = 57] = "Nine";
1920
- CharCodes4[CharCodes4["Semi"] = 59] = "Semi";
1921
- CharCodes4[CharCodes4["Lt"] = 60] = "Lt";
1922
- CharCodes4[CharCodes4["Eq"] = 61] = "Eq";
1923
- CharCodes4[CharCodes4["Gt"] = 62] = "Gt";
1924
- CharCodes4[CharCodes4["Questionmark"] = 63] = "Questionmark";
1925
- CharCodes4[CharCodes4["UpperA"] = 65] = "UpperA";
1926
- CharCodes4[CharCodes4["LowerA"] = 97] = "LowerA";
1927
- CharCodes4[CharCodes4["UpperF"] = 70] = "UpperF";
1928
- CharCodes4[CharCodes4["LowerF"] = 102] = "LowerF";
1929
- CharCodes4[CharCodes4["UpperZ"] = 90] = "UpperZ";
1930
- CharCodes4[CharCodes4["LowerZ"] = 122] = "LowerZ";
1931
- CharCodes4[CharCodes4["LowerX"] = 120] = "LowerX";
1932
- CharCodes4[CharCodes4["OpeningSquareBracket"] = 91] = "OpeningSquareBracket";
1878
+ (function(CharCodes3) {
1879
+ CharCodes3[CharCodes3["Tab"] = 9] = "Tab";
1880
+ CharCodes3[CharCodes3["NewLine"] = 10] = "NewLine";
1881
+ CharCodes3[CharCodes3["FormFeed"] = 12] = "FormFeed";
1882
+ CharCodes3[CharCodes3["CarriageReturn"] = 13] = "CarriageReturn";
1883
+ CharCodes3[CharCodes3["Space"] = 32] = "Space";
1884
+ CharCodes3[CharCodes3["ExclamationMark"] = 33] = "ExclamationMark";
1885
+ CharCodes3[CharCodes3["Number"] = 35] = "Number";
1886
+ CharCodes3[CharCodes3["Amp"] = 38] = "Amp";
1887
+ CharCodes3[CharCodes3["SingleQuote"] = 39] = "SingleQuote";
1888
+ CharCodes3[CharCodes3["DoubleQuote"] = 34] = "DoubleQuote";
1889
+ CharCodes3[CharCodes3["Dash"] = 45] = "Dash";
1890
+ CharCodes3[CharCodes3["Slash"] = 47] = "Slash";
1891
+ CharCodes3[CharCodes3["Zero"] = 48] = "Zero";
1892
+ CharCodes3[CharCodes3["Nine"] = 57] = "Nine";
1893
+ CharCodes3[CharCodes3["Semi"] = 59] = "Semi";
1894
+ CharCodes3[CharCodes3["Lt"] = 60] = "Lt";
1895
+ CharCodes3[CharCodes3["Eq"] = 61] = "Eq";
1896
+ CharCodes3[CharCodes3["Gt"] = 62] = "Gt";
1897
+ CharCodes3[CharCodes3["Questionmark"] = 63] = "Questionmark";
1898
+ CharCodes3[CharCodes3["UpperA"] = 65] = "UpperA";
1899
+ CharCodes3[CharCodes3["LowerA"] = 97] = "LowerA";
1900
+ CharCodes3[CharCodes3["UpperF"] = 70] = "UpperF";
1901
+ CharCodes3[CharCodes3["LowerF"] = 102] = "LowerF";
1902
+ CharCodes3[CharCodes3["UpperZ"] = 90] = "UpperZ";
1903
+ CharCodes3[CharCodes3["LowerZ"] = 122] = "LowerZ";
1904
+ CharCodes3[CharCodes3["LowerX"] = 120] = "LowerX";
1905
+ CharCodes3[CharCodes3["OpeningSquareBracket"] = 91] = "OpeningSquareBracket";
1933
1906
  })(CharCodes2 || (CharCodes2 = {}));
1934
1907
  var State;
1935
1908
  (function(State2) {
@@ -1952,12 +1925,12 @@ var State;
1952
1925
  State2[State2["InProcessingInstruction"] = 17] = "InProcessingInstruction";
1953
1926
  State2[State2["BeforeComment"] = 18] = "BeforeComment";
1954
1927
  State2[State2["CDATASequence"] = 19] = "CDATASequence";
1955
- State2[State2["InSpecialComment"] = 20] = "InSpecialComment";
1956
- State2[State2["InCommentLike"] = 21] = "InCommentLike";
1957
- State2[State2["BeforeSpecialS"] = 22] = "BeforeSpecialS";
1958
- State2[State2["BeforeSpecialT"] = 23] = "BeforeSpecialT";
1959
- State2[State2["SpecialStartSequence"] = 24] = "SpecialStartSequence";
1960
- State2[State2["InSpecialTag"] = 25] = "InSpecialTag";
1928
+ State2[State2["DeclarationSequence"] = 20] = "DeclarationSequence";
1929
+ State2[State2["InSpecialComment"] = 21] = "InSpecialComment";
1930
+ State2[State2["InCommentLike"] = 22] = "InCommentLike";
1931
+ State2[State2["SpecialStartSequence"] = 23] = "SpecialStartSequence";
1932
+ State2[State2["InSpecialTag"] = 24] = "InSpecialTag";
1933
+ State2[State2["InPlainText"] = 25] = "InPlainText";
1961
1934
  State2[State2["InEntity"] = 26] = "InEntity";
1962
1935
  })(State || (State = {}));
1963
1936
  function isWhitespace(c) {
@@ -1977,12 +1950,56 @@ var QuoteType;
1977
1950
  QuoteType2[QuoteType2["Double"] = 3] = "Double";
1978
1951
  })(QuoteType || (QuoteType = {}));
1979
1952
  var Sequences = {
1953
+ Empty: new Uint8Array(0),
1980
1954
  Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]),
1981
1955
  // CDATA[
1982
1956
  CdataEnd: new Uint8Array([93, 93, 62]),
1983
1957
  // ]]>
1984
- CommentEnd: new Uint8Array([45, 45, 62]),
1985
- // `-->`
1958
+ CommentEnd: new Uint8Array([45, 45, 33, 62]),
1959
+ // `--!>`
1960
+ Doctype: new Uint8Array([100, 111, 99, 116, 121, 112, 101]),
1961
+ // `doctype`
1962
+ IframeEnd: new Uint8Array([60, 47, 105, 102, 114, 97, 109, 101]),
1963
+ // `</iframe`
1964
+ NoembedEnd: new Uint8Array([
1965
+ 60,
1966
+ 47,
1967
+ 110,
1968
+ 111,
1969
+ 101,
1970
+ 109,
1971
+ 98,
1972
+ 101,
1973
+ 100
1974
+ ]),
1975
+ // `</noembed`
1976
+ NoframesEnd: new Uint8Array([
1977
+ 60,
1978
+ 47,
1979
+ 110,
1980
+ 111,
1981
+ 102,
1982
+ 114,
1983
+ 97,
1984
+ 109,
1985
+ 101,
1986
+ 115
1987
+ ]),
1988
+ // `</noframes`
1989
+ Plaintext: new Uint8Array([
1990
+ 60,
1991
+ 47,
1992
+ 112,
1993
+ 108,
1994
+ 97,
1995
+ 105,
1996
+ 110,
1997
+ 116,
1998
+ 101,
1999
+ 120,
2000
+ 116
2001
+ ]),
2002
+ // `</plaintext`
1986
2003
  ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]),
1987
2004
  // `</script`
1988
2005
  StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]),
@@ -2005,22 +2022,43 @@ var Sequences = {
2005
2022
  XmpEnd: new Uint8Array([60, 47, 120, 109, 112])
2006
2023
  // `</xmp`
2007
2024
  };
2025
+ var specialStartSequences = /* @__PURE__ */ new Map([
2026
+ [Sequences.IframeEnd[2], Sequences.IframeEnd],
2027
+ [Sequences.NoembedEnd[2], Sequences.NoembedEnd],
2028
+ [Sequences.Plaintext[2], Sequences.Plaintext],
2029
+ [Sequences.ScriptEnd[2], Sequences.ScriptEnd],
2030
+ [Sequences.TitleEnd[2], Sequences.TitleEnd],
2031
+ [Sequences.XmpEnd[2], Sequences.XmpEnd]
2032
+ ]);
2008
2033
  var Tokenizer = class {
2009
- constructor({ xmlMode = false, decodeEntities = true }, cbs) {
2034
+ cbs;
2035
+ /** The current state the tokenizer is in. */
2036
+ state = State.Text;
2037
+ /** The read buffer. */
2038
+ buffer = "";
2039
+ /** The beginning of the section that is currently being read. */
2040
+ sectionStart = 0;
2041
+ /** The index within the buffer that we are currently looking at. */
2042
+ index = 0;
2043
+ /** The start of the last entity. */
2044
+ entityStart = 0;
2045
+ /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */
2046
+ baseState = State.Text;
2047
+ /** For special parsing behavior inside of script and style tags. */
2048
+ isSpecial = false;
2049
+ /** Indicates whether the tokenizer has been paused. */
2050
+ running = true;
2051
+ /** The offset of the current buffer. */
2052
+ offset = 0;
2053
+ xmlMode;
2054
+ decodeEntities;
2055
+ recognizeSelfClosing;
2056
+ entityDecoder;
2057
+ constructor({ xmlMode = false, decodeEntities = true, recognizeSelfClosing = xmlMode }, cbs) {
2010
2058
  this.cbs = cbs;
2011
- this.state = State.Text;
2012
- this.buffer = "";
2013
- this.sectionStart = 0;
2014
- this.index = 0;
2015
- this.entityStart = 0;
2016
- this.baseState = State.Text;
2017
- this.isSpecial = false;
2018
- this.running = true;
2019
- this.offset = 0;
2020
- this.currentSequence = void 0;
2021
- this.sequenceIndex = 0;
2022
2059
  this.xmlMode = xmlMode;
2023
2060
  this.decodeEntities = decodeEntities;
2061
+ this.recognizeSelfClosing = recognizeSelfClosing;
2024
2062
  this.entityDecoder = new EntityDecoder(xmlMode ? xmlDecodeTree : htmlDecodeTree, (cp, consumed) => this.emitCodePoint(cp, consumed));
2025
2063
  }
2026
2064
  reset() {
@@ -2029,7 +2067,9 @@ var Tokenizer = class {
2029
2067
  this.sectionStart = 0;
2030
2068
  this.index = 0;
2031
2069
  this.baseState = State.Text;
2032
- this.currentSequence = void 0;
2070
+ this.isSpecial = false;
2071
+ this.currentSequence = Sequences.Empty;
2072
+ this.sequenceIndex = 0;
2033
2073
  this.running = true;
2034
2074
  this.offset = 0;
2035
2075
  }
@@ -2062,56 +2102,63 @@ var Tokenizer = class {
2062
2102
  this.startEntity();
2063
2103
  }
2064
2104
  }
2065
- stateSpecialStartSequence(c) {
2066
- const isEnd = this.sequenceIndex === this.currentSequence.length;
2067
- const isMatch = isEnd ? (
2068
- // If we are at the end of the sequence, make sure the tag name has ended
2069
- isEndOfTagSection(c)
2070
- ) : (
2071
- // Otherwise, do a case-insensitive comparison
2072
- (c | 32) === this.currentSequence[this.sequenceIndex]
2073
- );
2074
- if (!isMatch) {
2075
- this.isSpecial = false;
2076
- } else if (!isEnd) {
2077
- this.sequenceIndex++;
2078
- return;
2105
+ currentSequence = Sequences.Empty;
2106
+ sequenceIndex = 0;
2107
+ enterTagBody() {
2108
+ if (this.currentSequence === Sequences.Plaintext) {
2109
+ this.currentSequence = Sequences.Empty;
2110
+ this.state = State.InPlainText;
2111
+ } else if (this.isSpecial) {
2112
+ this.state = State.InSpecialTag;
2113
+ this.sequenceIndex = 0;
2114
+ } else {
2115
+ this.state = State.Text;
2079
2116
  }
2080
- this.sequenceIndex = 0;
2081
- this.state = State.InTagName;
2082
- this.stateInTagName(c);
2083
2117
  }
2084
- /** Look for an end tag. For <title> tags, also decode entities. */
2085
- stateInSpecialTag(c) {
2086
- if (this.sequenceIndex === this.currentSequence.length) {
2087
- if (c === CharCodes2.Gt || isWhitespace(c)) {
2088
- const endOfText = this.index - this.currentSequence.length;
2089
- if (this.sectionStart < endOfText) {
2090
- const actualIndex = this.index;
2091
- this.index = endOfText;
2092
- this.cbs.ontext(this.sectionStart, endOfText);
2093
- this.index = actualIndex;
2094
- }
2095
- this.isSpecial = false;
2096
- this.sectionStart = endOfText + 2;
2097
- this.stateInClosingTagName(c);
2118
+ /**
2119
+ * Match the opening tag name against an HTML text-only tag sequence.
2120
+ *
2121
+ * Some tags share an initial prefix (`script`/`style`, `title`/`textarea`,
2122
+ * `noembed`/`noframes`), so we may switch to an alternate sequence at the
2123
+ * first distinguishing byte. On a successful full match we fall back to
2124
+ * the normal tag-name state; a later `>` will enter raw-text, RCDATA, or
2125
+ * plaintext mode based on `currentSequence` / `isSpecial`.
2126
+ * @param c Current character code point.
2127
+ */
2128
+ stateSpecialStartSequence(c) {
2129
+ const lower = c | 32;
2130
+ if (this.sequenceIndex < this.currentSequence.length) {
2131
+ if (lower === this.currentSequence[this.sequenceIndex]) {
2132
+ this.sequenceIndex++;
2098
2133
  return;
2099
2134
  }
2100
- this.sequenceIndex = 0;
2101
- }
2102
- if ((c | 32) === this.currentSequence[this.sequenceIndex]) {
2103
- this.sequenceIndex += 1;
2104
- } else if (this.sequenceIndex === 0) {
2105
- if (this.currentSequence === Sequences.TitleEnd) {
2106
- if (this.decodeEntities && c === CharCodes2.Amp) {
2107
- this.startEntity();
2135
+ if (this.sequenceIndex === 3) {
2136
+ if (this.currentSequence === Sequences.ScriptEnd && lower === Sequences.StyleEnd[3]) {
2137
+ this.currentSequence = Sequences.StyleEnd;
2138
+ this.sequenceIndex = 4;
2139
+ return;
2108
2140
  }
2109
- } else if (this.fastForwardTo(CharCodes2.Lt)) {
2110
- this.sequenceIndex = 1;
2141
+ if (this.currentSequence === Sequences.TitleEnd && lower === Sequences.TextareaEnd[3]) {
2142
+ this.currentSequence = Sequences.TextareaEnd;
2143
+ this.sequenceIndex = 4;
2144
+ return;
2145
+ }
2146
+ } else if (this.sequenceIndex === 4 && this.currentSequence === Sequences.NoembedEnd && lower === Sequences.NoframesEnd[4]) {
2147
+ this.currentSequence = Sequences.NoframesEnd;
2148
+ this.sequenceIndex = 5;
2149
+ return;
2111
2150
  }
2112
- } else {
2113
- this.sequenceIndex = Number(c === CharCodes2.Lt);
2151
+ } else if (isEndOfTagSection(c)) {
2152
+ this.sequenceIndex = 0;
2153
+ this.state = State.InTagName;
2154
+ this.stateInTagName(c);
2155
+ return;
2114
2156
  }
2157
+ this.isSpecial = false;
2158
+ this.currentSequence = Sequences.Empty;
2159
+ this.sequenceIndex = 0;
2160
+ this.state = State.InTagName;
2161
+ this.stateInTagName(c);
2115
2162
  }
2116
2163
  stateCDATASequence(c) {
2117
2164
  if (c === Sequences.Cdata[this.sequenceIndex]) {
@@ -2123,14 +2170,19 @@ var Tokenizer = class {
2123
2170
  }
2124
2171
  } else {
2125
2172
  this.sequenceIndex = 0;
2126
- this.state = State.InDeclaration;
2127
- this.stateInDeclaration(c);
2173
+ if (this.xmlMode) {
2174
+ this.state = State.InDeclaration;
2175
+ this.stateInDeclaration(c);
2176
+ } else {
2177
+ this.state = State.InSpecialComment;
2178
+ this.stateInSpecialComment(c);
2179
+ }
2128
2180
  }
2129
2181
  }
2130
2182
  /**
2131
2183
  * When we wait for one specific character, we can speed things up
2132
2184
  * by skipping through the buffer until we find it.
2133
- *
2185
+ * @param c Current character code point.
2134
2186
  * @returns Whether the character was found.
2135
2187
  */
2136
2188
  fastForwardTo(c) {
@@ -2142,6 +2194,16 @@ var Tokenizer = class {
2142
2194
  this.index = this.buffer.length + this.offset - 1;
2143
2195
  return false;
2144
2196
  }
2197
+ /**
2198
+ * Emit a comment token and return to the text state.
2199
+ * @param offset Number of characters in the end sequence that have already been matched.
2200
+ */
2201
+ emitComment(offset) {
2202
+ this.cbs.oncomment(this.sectionStart, this.index, offset);
2203
+ this.sequenceIndex = 0;
2204
+ this.sectionStart = this.index + 1;
2205
+ this.state = State.Text;
2206
+ }
2145
2207
  /**
2146
2208
  * Comments and CDATA end with `-->` and `]]>`.
2147
2209
  *
@@ -2149,14 +2211,26 @@ var Tokenizer = class {
2149
2211
  * - Their end sequences have a distinct character they start with.
2150
2212
  * - That character is then repeated, so we have to check multiple repeats.
2151
2213
  * - All characters but the start character of the sequence can be skipped.
2214
+ * @param c Current character code point.
2152
2215
  */
2153
2216
  stateInCommentLike(c) {
2154
- if (c === this.currentSequence[this.sequenceIndex]) {
2217
+ if (!this.xmlMode && this.currentSequence === Sequences.CommentEnd && this.sequenceIndex <= 1 && /*
2218
+ * We're still at the very start of the comment: the only
2219
+ * characters consumed since `<!--` are the dashes that
2220
+ * advanced sequenceIndex (0 for `<!-->`, 1 for `<!--->`).
2221
+ */
2222
+ this.index === this.sectionStart + this.sequenceIndex && c === CharCodes2.Gt) {
2223
+ this.emitComment(this.sequenceIndex);
2224
+ } else if (this.currentSequence === Sequences.CommentEnd && this.sequenceIndex === 2 && c === CharCodes2.Gt) {
2225
+ this.emitComment(2);
2226
+ } else if (this.currentSequence === Sequences.CommentEnd && this.sequenceIndex === this.currentSequence.length - 1 && c !== CharCodes2.Gt) {
2227
+ this.sequenceIndex = Number(c === CharCodes2.Dash);
2228
+ } else if (c === this.currentSequence[this.sequenceIndex]) {
2155
2229
  if (++this.sequenceIndex === this.currentSequence.length) {
2156
2230
  if (this.currentSequence === Sequences.CdataEnd) {
2157
2231
  this.cbs.oncdata(this.sectionStart, this.index, 2);
2158
2232
  } else {
2159
- this.cbs.oncomment(this.sectionStart, this.index, 2);
2233
+ this.cbs.oncomment(this.sectionStart, this.index, 3);
2160
2234
  }
2161
2235
  this.sequenceIndex = 0;
2162
2236
  this.sectionStart = this.index + 1;
@@ -2175,34 +2249,72 @@ var Tokenizer = class {
2175
2249
  *
2176
2250
  * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).
2177
2251
  * We allow anything that wouldn't end the tag.
2252
+ * @param c Current character code point.
2178
2253
  */
2179
2254
  isTagStartChar(c) {
2180
2255
  return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);
2181
2256
  }
2182
- startSpecial(sequence, offset) {
2183
- this.isSpecial = true;
2184
- this.currentSequence = sequence;
2185
- this.sequenceIndex = offset;
2186
- this.state = State.SpecialStartSequence;
2257
+ /**
2258
+ * Scan raw-text / RCDATA content for the matching end tag.
2259
+ *
2260
+ * For RCDATA tags (`<title>`, `<textarea>`) entities are decoded inline.
2261
+ * For raw-text tags (`<script>`, `<style>`, etc.) we fast-forward to `<`.
2262
+ * @param c Current character code point.
2263
+ */
2264
+ stateInSpecialTag(c) {
2265
+ if (this.sequenceIndex === this.currentSequence.length) {
2266
+ if (isEndOfTagSection(c)) {
2267
+ const endOfText = this.index - this.currentSequence.length;
2268
+ if (this.sectionStart < endOfText) {
2269
+ const actualIndex = this.index;
2270
+ this.index = endOfText;
2271
+ this.cbs.ontext(this.sectionStart, endOfText);
2272
+ this.index = actualIndex;
2273
+ }
2274
+ this.isSpecial = false;
2275
+ this.sectionStart = endOfText + 2;
2276
+ this.stateInClosingTagName(c);
2277
+ return;
2278
+ }
2279
+ this.sequenceIndex = 0;
2280
+ }
2281
+ if ((c | 32) === this.currentSequence[this.sequenceIndex]) {
2282
+ this.sequenceIndex += 1;
2283
+ } else if (this.sequenceIndex === 0) {
2284
+ if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd) {
2285
+ if (this.decodeEntities && c === CharCodes2.Amp) {
2286
+ this.startEntity();
2287
+ }
2288
+ } else if (this.fastForwardTo(CharCodes2.Lt)) {
2289
+ this.sequenceIndex = 1;
2290
+ }
2291
+ } else {
2292
+ this.sequenceIndex = Number(c === CharCodes2.Lt);
2293
+ }
2187
2294
  }
2188
2295
  stateBeforeTagName(c) {
2189
2296
  if (c === CharCodes2.ExclamationMark) {
2190
2297
  this.state = State.BeforeDeclaration;
2191
2298
  this.sectionStart = this.index + 1;
2192
2299
  } else if (c === CharCodes2.Questionmark) {
2193
- this.state = State.InProcessingInstruction;
2194
- this.sectionStart = this.index + 1;
2300
+ if (this.xmlMode) {
2301
+ this.state = State.InProcessingInstruction;
2302
+ this.sequenceIndex = 0;
2303
+ this.sectionStart = this.index + 1;
2304
+ } else {
2305
+ this.state = State.InSpecialComment;
2306
+ this.sectionStart = this.index;
2307
+ }
2195
2308
  } else if (this.isTagStartChar(c)) {
2196
- const lower = c | 32;
2197
2309
  this.sectionStart = this.index;
2198
- if (this.xmlMode) {
2310
+ const special = this.xmlMode || this.cbs.isInForeignContext?.() ? void 0 : specialStartSequences.get(c | 32);
2311
+ if (special === void 0) {
2199
2312
  this.state = State.InTagName;
2200
- } else if (lower === Sequences.ScriptEnd[2]) {
2201
- this.state = State.BeforeSpecialS;
2202
- } else if (lower === Sequences.TitleEnd[2] || lower === Sequences.XmpEnd[2]) {
2203
- this.state = State.BeforeSpecialT;
2204
2313
  } else {
2205
- this.state = State.InTagName;
2314
+ this.isSpecial = true;
2315
+ this.currentSequence = special;
2316
+ this.sequenceIndex = 3;
2317
+ this.state = State.SpecialStartSequence;
2206
2318
  }
2207
2319
  } else if (c === CharCodes2.Slash) {
2208
2320
  this.state = State.BeforeClosingTagName;
@@ -2221,15 +2333,23 @@ var Tokenizer = class {
2221
2333
  }
2222
2334
  stateBeforeClosingTagName(c) {
2223
2335
  if (isWhitespace(c)) {
2336
+ if (this.xmlMode) {
2337
+ } else {
2338
+ this.state = State.InSpecialComment;
2339
+ this.sectionStart = this.index;
2340
+ }
2224
2341
  } else if (c === CharCodes2.Gt) {
2225
2342
  this.state = State.Text;
2343
+ if (!this.xmlMode) {
2344
+ this.sectionStart = this.index + 1;
2345
+ }
2226
2346
  } else {
2227
2347
  this.state = this.isTagStartChar(c) ? State.InClosingTagName : State.InSpecialComment;
2228
2348
  this.sectionStart = this.index;
2229
2349
  }
2230
2350
  }
2231
2351
  stateInClosingTagName(c) {
2232
- if (c === CharCodes2.Gt || isWhitespace(c)) {
2352
+ if (isEndOfTagSection(c)) {
2233
2353
  this.cbs.onclosetag(this.sectionStart, this.index);
2234
2354
  this.sectionStart = -1;
2235
2355
  this.state = State.AfterClosingTagName;
@@ -2245,12 +2365,7 @@ var Tokenizer = class {
2245
2365
  stateBeforeAttributeName(c) {
2246
2366
  if (c === CharCodes2.Gt) {
2247
2367
  this.cbs.onopentagend(this.index);
2248
- if (this.isSpecial) {
2249
- this.state = State.InSpecialTag;
2250
- this.sequenceIndex = 0;
2251
- } else {
2252
- this.state = State.Text;
2253
- }
2368
+ this.enterTagBody();
2254
2369
  this.sectionStart = this.index + 1;
2255
2370
  } else if (c === CharCodes2.Slash) {
2256
2371
  this.state = State.InSelfClosingTag;
@@ -2259,12 +2374,26 @@ var Tokenizer = class {
2259
2374
  this.sectionStart = this.index;
2260
2375
  }
2261
2376
  }
2377
+ /**
2378
+ * Handle `/` before `>` in an opening tag.
2379
+ *
2380
+ * In HTML mode, text-only tags ignore the self-closing flag and still enter
2381
+ * their raw-text/RCDATA/plaintext state unless self-closing tags are being
2382
+ * recognized. In XML mode, or for ordinary tags, the tokenizer returns to
2383
+ * regular text parsing after emitting the self-closing callback.
2384
+ * @param c Current character code point.
2385
+ */
2262
2386
  stateInSelfClosingTag(c) {
2263
2387
  if (c === CharCodes2.Gt) {
2264
2388
  this.cbs.onselfclosingtag(this.index);
2265
- this.state = State.Text;
2266
2389
  this.sectionStart = this.index + 1;
2390
+ if (!this.recognizeSelfClosing) {
2391
+ this.enterTagBody();
2392
+ return;
2393
+ }
2394
+ this.state = State.Text;
2267
2395
  this.isSpecial = false;
2396
+ this.currentSequence = Sequences.Empty;
2268
2397
  } else if (!isWhitespace(c)) {
2269
2398
  this.state = State.BeforeAttributeName;
2270
2399
  this.stateBeforeAttributeName(c);
@@ -2332,12 +2461,54 @@ var Tokenizer = class {
2332
2461
  this.startEntity();
2333
2462
  }
2334
2463
  }
2464
+ /**
2465
+ * Distinguish between CDATA, declarations, HTML comments, and HTML bogus
2466
+ * comments after `<!`.
2467
+ *
2468
+ * In HTML mode, only real comments and doctypes stay on declaration paths;
2469
+ * everything else becomes a bogus comment terminated by the next `>`.
2470
+ * @param c Current character code point.
2471
+ */
2335
2472
  stateBeforeDeclaration(c) {
2336
2473
  if (c === CharCodes2.OpeningSquareBracket) {
2337
2474
  this.state = State.CDATASequence;
2338
2475
  this.sequenceIndex = 0;
2339
- } else {
2476
+ } else if (this.xmlMode) {
2340
2477
  this.state = c === CharCodes2.Dash ? State.BeforeComment : State.InDeclaration;
2478
+ } else if ((c | 32) === Sequences.Doctype[0]) {
2479
+ this.state = State.DeclarationSequence;
2480
+ this.currentSequence = Sequences.Doctype;
2481
+ this.sequenceIndex = 1;
2482
+ } else if (c === CharCodes2.Gt) {
2483
+ this.cbs.oncomment(this.sectionStart, this.index, 0);
2484
+ this.state = State.Text;
2485
+ this.sectionStart = this.index + 1;
2486
+ } else if (c === CharCodes2.Dash) {
2487
+ this.state = State.BeforeComment;
2488
+ } else {
2489
+ this.state = State.InSpecialComment;
2490
+ }
2491
+ }
2492
+ /**
2493
+ * Continue matching `doctype` after `<!d`.
2494
+ *
2495
+ * A full `doctype` match stays on the declaration path; any other name falls
2496
+ * back to an HTML bogus comment, which matches browser behavior for
2497
+ * non-doctype `<!...>` constructs.
2498
+ * @param c Current character code point.
2499
+ */
2500
+ stateDeclarationSequence(c) {
2501
+ if (this.sequenceIndex === this.currentSequence.length) {
2502
+ this.state = State.InDeclaration;
2503
+ this.stateInDeclaration(c);
2504
+ } else if ((c | 32) === this.currentSequence[this.sequenceIndex]) {
2505
+ this.sequenceIndex += 1;
2506
+ } else if (c === CharCodes2.Gt) {
2507
+ this.cbs.oncomment(this.sectionStart, this.index, 0);
2508
+ this.state = State.Text;
2509
+ this.sectionStart = this.index + 1;
2510
+ } else {
2511
+ this.state = State.InSpecialComment;
2341
2512
  }
2342
2513
  }
2343
2514
  stateInDeclaration(c) {
@@ -2347,21 +2518,39 @@ var Tokenizer = class {
2347
2518
  this.sectionStart = this.index + 1;
2348
2519
  }
2349
2520
  }
2521
+ /**
2522
+ * XML processing instructions (`<?...?>`).
2523
+ *
2524
+ * In HTML mode `<?` is routed to `InSpecialComment` instead, so this
2525
+ * state is only reachable in XML mode.
2526
+ * @param c Current character code point.
2527
+ */
2350
2528
  stateInProcessingInstruction(c) {
2351
- if (c === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) {
2352
- this.cbs.onprocessinginstruction(this.sectionStart, this.index);
2529
+ if (c === CharCodes2.Questionmark) {
2530
+ this.sequenceIndex = 1;
2531
+ } else if (c === CharCodes2.Gt && this.sequenceIndex === 1) {
2532
+ this.cbs.onprocessinginstruction(this.sectionStart, this.index - 1);
2533
+ this.sequenceIndex = 0;
2353
2534
  this.state = State.Text;
2354
2535
  this.sectionStart = this.index + 1;
2536
+ } else {
2537
+ this.sequenceIndex = Number(this.fastForwardTo(CharCodes2.Questionmark));
2355
2538
  }
2356
2539
  }
2357
2540
  stateBeforeComment(c) {
2358
2541
  if (c === CharCodes2.Dash) {
2359
2542
  this.state = State.InCommentLike;
2360
2543
  this.currentSequence = Sequences.CommentEnd;
2361
- this.sequenceIndex = 2;
2544
+ this.sequenceIndex = 0;
2362
2545
  this.sectionStart = this.index + 1;
2363
- } else {
2546
+ } else if (this.xmlMode) {
2364
2547
  this.state = State.InDeclaration;
2548
+ } else if (c === CharCodes2.Gt) {
2549
+ this.cbs.oncomment(this.sectionStart, this.index, 0);
2550
+ this.state = State.Text;
2551
+ this.sectionStart = this.index + 1;
2552
+ } else {
2553
+ this.state = State.InSpecialComment;
2365
2554
  }
2366
2555
  }
2367
2556
  stateInSpecialComment(c) {
@@ -2371,38 +2560,6 @@ var Tokenizer = class {
2371
2560
  this.sectionStart = this.index + 1;
2372
2561
  }
2373
2562
  }
2374
- stateBeforeSpecialS(c) {
2375
- const lower = c | 32;
2376
- if (lower === Sequences.ScriptEnd[3]) {
2377
- this.startSpecial(Sequences.ScriptEnd, 4);
2378
- } else if (lower === Sequences.StyleEnd[3]) {
2379
- this.startSpecial(Sequences.StyleEnd, 4);
2380
- } else {
2381
- this.state = State.InTagName;
2382
- this.stateInTagName(c);
2383
- }
2384
- }
2385
- stateBeforeSpecialT(c) {
2386
- const lower = c | 32;
2387
- switch (lower) {
2388
- case Sequences.TitleEnd[3]: {
2389
- this.startSpecial(Sequences.TitleEnd, 4);
2390
- break;
2391
- }
2392
- case Sequences.TextareaEnd[3]: {
2393
- this.startSpecial(Sequences.TextareaEnd, 4);
2394
- break;
2395
- }
2396
- case Sequences.XmpEnd[3]: {
2397
- this.startSpecial(Sequences.XmpEnd, 4);
2398
- break;
2399
- }
2400
- default: {
2401
- this.state = State.InTagName;
2402
- this.stateInTagName(c);
2403
- }
2404
- }
2405
- }
2406
2563
  startEntity() {
2407
2564
  this.baseState = this.state;
2408
2565
  this.state = State.InEntity;
@@ -2431,7 +2588,7 @@ var Tokenizer = class {
2431
2588
  */
2432
2589
  cleanup() {
2433
2590
  if (this.running && this.sectionStart !== this.index) {
2434
- if (this.state === State.Text || this.state === State.InSpecialTag && this.sequenceIndex === 0) {
2591
+ if (this.state === State.Text || this.state === State.InPlainText || this.state === State.InSpecialTag && this.sequenceIndex === 0) {
2435
2592
  this.cbs.ontext(this.sectionStart, this.index);
2436
2593
  this.sectionStart = this.index;
2437
2594
  } else if (this.state === State.InAttributeValueDq || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueNq) {
@@ -2456,6 +2613,10 @@ var Tokenizer = class {
2456
2613
  this.stateText(c);
2457
2614
  break;
2458
2615
  }
2616
+ case State.InPlainText: {
2617
+ this.index = this.buffer.length + this.offset - 1;
2618
+ break;
2619
+ }
2459
2620
  case State.SpecialStartSequence: {
2460
2621
  this.stateSpecialStartSequence(c);
2461
2622
  break;
@@ -2468,6 +2629,10 @@ var Tokenizer = class {
2468
2629
  this.stateCDATASequence(c);
2469
2630
  break;
2470
2631
  }
2632
+ case State.DeclarationSequence: {
2633
+ this.stateDeclarationSequence(c);
2634
+ break;
2635
+ }
2471
2636
  case State.InAttributeValueDq: {
2472
2637
  this.stateInAttributeValueDoubleQuotes(c);
2473
2638
  break;
@@ -2520,14 +2685,6 @@ var Tokenizer = class {
2520
2685
  this.stateAfterClosingTagName(c);
2521
2686
  break;
2522
2687
  }
2523
- case State.BeforeSpecialS: {
2524
- this.stateBeforeSpecialS(c);
2525
- break;
2526
- }
2527
- case State.BeforeSpecialT: {
2528
- this.stateBeforeSpecialT(c);
2529
- break;
2530
- }
2531
2688
  case State.InAttributeValueNq: {
2532
2689
  this.stateInAttributeValueNoQuotes(c);
2533
2690
  break;
@@ -2569,43 +2726,110 @@ var Tokenizer = class {
2569
2726
  this.handleTrailingData();
2570
2727
  this.cbs.onend();
2571
2728
  }
2572
- /** Handle any trailing data. */
2573
- handleTrailingData() {
2574
- const endIndex = this.buffer.length + this.offset;
2575
- if (this.sectionStart >= endIndex) {
2576
- return;
2729
+ handleTrailingCommentLikeData(endIndex) {
2730
+ if (this.state !== State.InCommentLike) {
2731
+ return false;
2577
2732
  }
2578
- if (this.state === State.InCommentLike) {
2579
- if (this.currentSequence === Sequences.CdataEnd) {
2580
- this.cbs.oncdata(this.sectionStart, endIndex, 0);
2733
+ if (this.currentSequence === Sequences.CdataEnd) {
2734
+ if (this.xmlMode) {
2735
+ if (this.sectionStart < endIndex) {
2736
+ this.cbs.oncdata(this.sectionStart, endIndex, 0);
2737
+ }
2581
2738
  } else {
2582
- this.cbs.oncomment(this.sectionStart, endIndex, 0);
2739
+ const cdataStart = this.sectionStart - Sequences.Cdata.length - 1;
2740
+ this.cbs.oncomment(cdataStart, endIndex, 0);
2583
2741
  }
2584
- } 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) {
2585
2742
  } else {
2586
- this.cbs.ontext(this.sectionStart, endIndex);
2743
+ const offset = this.xmlMode ? 0 : Math.min(this.sequenceIndex, Sequences.CommentEnd.length - 1);
2744
+ this.cbs.oncomment(this.sectionStart, endIndex, offset);
2587
2745
  }
2746
+ return true;
2588
2747
  }
2589
- emitCodePoint(cp, consumed) {
2590
- if (this.baseState !== State.Text && this.baseState !== State.InSpecialTag) {
2591
- if (this.sectionStart < this.entityStart) {
2592
- this.cbs.onattribdata(this.sectionStart, this.entityStart);
2593
- }
2594
- this.sectionStart = this.entityStart + consumed;
2595
- this.index = this.sectionStart - 1;
2596
- this.cbs.onattribentity(cp);
2597
- } else {
2598
- if (this.sectionStart < this.entityStart) {
2599
- this.cbs.ontext(this.sectionStart, this.entityStart);
2748
+ handleTrailingMarkupDeclaration(endIndex) {
2749
+ if (this.xmlMode) {
2750
+ switch (this.state) {
2751
+ case State.InSpecialComment:
2752
+ case State.BeforeComment:
2753
+ case State.CDATASequence:
2754
+ case State.DeclarationSequence:
2755
+ case State.InDeclaration: {
2756
+ this.cbs.ontext(this.sectionStart, endIndex);
2757
+ return true;
2758
+ }
2759
+ default: {
2760
+ return false;
2761
+ }
2762
+ }
2763
+ }
2764
+ switch (this.state) {
2765
+ case State.BeforeDeclaration:
2766
+ case State.InSpecialComment:
2767
+ case State.BeforeComment:
2768
+ case State.CDATASequence: {
2769
+ this.cbs.oncomment(this.sectionStart, endIndex, 0);
2770
+ return true;
2771
+ }
2772
+ case State.DeclarationSequence: {
2773
+ if (this.sequenceIndex !== Sequences.Doctype.length) {
2774
+ this.cbs.oncomment(this.sectionStart, endIndex, 0);
2775
+ }
2776
+ return true;
2777
+ }
2778
+ case State.InDeclaration: {
2779
+ return true;
2780
+ }
2781
+ default: {
2782
+ return false;
2783
+ }
2784
+ }
2785
+ }
2786
+ /** Handle any trailing data. */
2787
+ handleTrailingData() {
2788
+ const endIndex = this.buffer.length + this.offset;
2789
+ if (this.handleTrailingCommentLikeData(endIndex) || this.handleTrailingMarkupDeclaration(endIndex)) {
2790
+ return;
2791
+ }
2792
+ if (this.sectionStart >= endIndex) {
2793
+ return;
2794
+ }
2795
+ switch (this.state) {
2796
+ case State.InTagName:
2797
+ case State.BeforeAttributeName:
2798
+ case State.BeforeAttributeValue:
2799
+ case State.AfterAttributeName:
2800
+ case State.InAttributeName:
2801
+ case State.InAttributeValueSq:
2802
+ case State.InAttributeValueDq:
2803
+ case State.InAttributeValueNq:
2804
+ case State.InClosingTagName: {
2805
+ break;
2806
+ }
2807
+ default: {
2808
+ this.cbs.ontext(this.sectionStart, endIndex);
2600
2809
  }
2601
- this.sectionStart = this.entityStart + consumed;
2602
- this.index = this.sectionStart - 1;
2603
- this.cbs.ontextentity(cp, this.sectionStart);
2810
+ }
2811
+ }
2812
+ emitCodePoint(cp, consumed) {
2813
+ if (this.baseState !== State.Text && this.baseState !== State.InSpecialTag) {
2814
+ if (this.sectionStart < this.entityStart) {
2815
+ this.cbs.onattribdata(this.sectionStart, this.entityStart);
2816
+ }
2817
+ this.sectionStart = this.entityStart + consumed;
2818
+ this.index = this.sectionStart - 1;
2819
+ this.cbs.onattribentity(cp);
2820
+ } else {
2821
+ if (this.sectionStart < this.entityStart) {
2822
+ this.cbs.ontext(this.sectionStart, this.entityStart);
2823
+ }
2824
+ this.sectionStart = this.entityStart + consumed;
2825
+ this.index = this.sectionStart - 1;
2826
+ this.cbs.ontextentity(cp, this.sectionStart);
2604
2827
  }
2605
2828
  }
2606
2829
  };
2607
2830
 
2608
- // node_modules/.pnpm/htmlparser2@10.1.0/node_modules/htmlparser2/dist/esm/Parser.js
2831
+ // node_modules/.pnpm/htmlparser2@12.0.0/node_modules/htmlparser2/dist/Parser.js
2832
+ var { fromCodePoint } = String;
2609
2833
  var formTags = /* @__PURE__ */ new Set([
2610
2834
  "input",
2611
2835
  "option",
@@ -2616,6 +2840,7 @@ var formTags = /* @__PURE__ */ new Set([
2616
2840
  "textarea"
2617
2841
  ]);
2618
2842
  var pTag = /* @__PURE__ */ new Set(["p"]);
2843
+ var headingTags = /* @__PURE__ */ new Set(["h1", "h2", "h3", "h4", "h5", "h6", "p"]);
2619
2844
  var tableSectionTags = /* @__PURE__ */ new Set(["thead", "tbody"]);
2620
2845
  var ddtTags = /* @__PURE__ */ new Set(["dd", "dt"]);
2621
2846
  var rtpTags = /* @__PURE__ */ new Set(["rt", "rp"]);
@@ -2624,14 +2849,15 @@ var openImpliesClose = /* @__PURE__ */ new Map([
2624
2849
  ["th", /* @__PURE__ */ new Set(["th"])],
2625
2850
  ["td", /* @__PURE__ */ new Set(["thead", "th", "td"])],
2626
2851
  ["body", /* @__PURE__ */ new Set(["head", "link", "script"])],
2852
+ ["a", /* @__PURE__ */ new Set(["a"])],
2627
2853
  ["li", /* @__PURE__ */ new Set(["li"])],
2628
2854
  ["p", pTag],
2629
- ["h1", pTag],
2630
- ["h2", pTag],
2631
- ["h3", pTag],
2632
- ["h4", pTag],
2633
- ["h5", pTag],
2634
- ["h6", pTag],
2855
+ ["h1", headingTags],
2856
+ ["h2", headingTags],
2857
+ ["h3", headingTags],
2858
+ ["h4", headingTags],
2859
+ ["h5", headingTags],
2860
+ ["h6", headingTags],
2635
2861
  ["select", formTags],
2636
2862
  ["input", formTags],
2637
2863
  ["output", formTags],
@@ -2668,6 +2894,7 @@ var openImpliesClose = /* @__PURE__ */ new Map([
2668
2894
  ["tbody", tableSectionTags],
2669
2895
  ["tfoot", tableSectionTags]
2670
2896
  ]);
2897
+ var DOCUMENT_TYPE = "doctype";
2671
2898
  var voidElements = /* @__PURE__ */ new Set([
2672
2899
  "area",
2673
2900
  "base",
@@ -2697,98 +2924,201 @@ var htmlIntegrationElements = /* @__PURE__ */ new Set([
2697
2924
  "ms",
2698
2925
  "mtext",
2699
2926
  "annotation-xml",
2700
- "foreignobject",
2927
+ "foreignObject",
2701
2928
  "desc",
2702
2929
  "title"
2703
2930
  ]);
2931
+ var svgTagNameAdjustments = /* @__PURE__ */ new Map([
2932
+ ["altglyph", "altGlyph"],
2933
+ ["altglyphdef", "altGlyphDef"],
2934
+ ["altglyphitem", "altGlyphItem"],
2935
+ ["animatecolor", "animateColor"],
2936
+ ["animatemotion", "animateMotion"],
2937
+ ["animatetransform", "animateTransform"],
2938
+ ["clippath", "clipPath"],
2939
+ ["feblend", "feBlend"],
2940
+ ["fecolormatrix", "feColorMatrix"],
2941
+ ["fecomponenttransfer", "feComponentTransfer"],
2942
+ ["fecomposite", "feComposite"],
2943
+ ["feconvolvematrix", "feConvolveMatrix"],
2944
+ ["fediffuselighting", "feDiffuseLighting"],
2945
+ ["fedisplacementmap", "feDisplacementMap"],
2946
+ ["fedistantlight", "feDistantLight"],
2947
+ ["fedropshadow", "feDropShadow"],
2948
+ ["feflood", "feFlood"],
2949
+ ["fefunca", "feFuncA"],
2950
+ ["fefuncb", "feFuncB"],
2951
+ ["fefuncg", "feFuncG"],
2952
+ ["fefuncr", "feFuncR"],
2953
+ ["fegaussianblur", "feGaussianBlur"],
2954
+ ["feimage", "feImage"],
2955
+ ["femerge", "feMerge"],
2956
+ ["femergenode", "feMergeNode"],
2957
+ ["femorphology", "feMorphology"],
2958
+ ["feoffset", "feOffset"],
2959
+ ["fepointlight", "fePointLight"],
2960
+ ["fespecularlighting", "feSpecularLighting"],
2961
+ ["fespotlight", "feSpotLight"],
2962
+ ["fetile", "feTile"],
2963
+ ["feturbulence", "feTurbulence"],
2964
+ ["foreignobject", "foreignObject"],
2965
+ ["glyphref", "glyphRef"],
2966
+ ["lineargradient", "linearGradient"],
2967
+ ["radialgradient", "radialGradient"],
2968
+ ["textpath", "textPath"]
2969
+ ]);
2970
+ var ForeignContext;
2971
+ (function(ForeignContext2) {
2972
+ ForeignContext2[ForeignContext2["None"] = 0] = "None";
2973
+ ForeignContext2[ForeignContext2["Svg"] = 1] = "Svg";
2974
+ ForeignContext2[ForeignContext2["MathML"] = 2] = "MathML";
2975
+ })(ForeignContext || (ForeignContext = {}));
2704
2976
  var reNameEnd = /\s|\//;
2705
2977
  var Parser = class {
2978
+ options;
2979
+ /** The start index of the last event. */
2980
+ startIndex = 0;
2981
+ /** The end index of the last event. */
2982
+ endIndex = 0;
2983
+ /**
2984
+ * Store the start index of the current open tag,
2985
+ * so we can update the start index for attributes.
2986
+ */
2987
+ openTagStart = 0;
2988
+ tagname = "";
2989
+ attribname = "";
2990
+ attribvalue = "";
2991
+ attribs = null;
2992
+ stack = [];
2993
+ foreignContext;
2994
+ cbs;
2995
+ lowerCaseTagNames;
2996
+ lowerCaseAttributeNames;
2997
+ recognizeSelfClosing;
2998
+ /** We are parsing HTML. Inverse of the `xmlMode` option. */
2999
+ htmlMode;
3000
+ tokenizer;
3001
+ buffers = [];
3002
+ bufferOffset = 0;
3003
+ /** The index of the last written buffer. Used when resuming after a `pause()`. */
3004
+ writeIndex = 0;
3005
+ /** Indicates whether the parser has finished running / `.end` has been called. */
3006
+ ended = false;
2706
3007
  constructor(cbs, options = {}) {
2707
- var _a3, _b, _c, _d, _e, _f;
2708
3008
  this.options = options;
2709
- this.startIndex = 0;
2710
- this.endIndex = 0;
2711
- this.openTagStart = 0;
2712
- this.tagname = "";
2713
- this.attribname = "";
2714
- this.attribvalue = "";
2715
- this.attribs = null;
2716
- this.stack = [];
2717
- this.buffers = [];
2718
- this.bufferOffset = 0;
2719
- this.writeIndex = 0;
2720
- this.ended = false;
2721
- this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};
3009
+ this.cbs = cbs ?? {};
2722
3010
  this.htmlMode = !this.options.xmlMode;
2723
- this.lowerCaseTagNames = (_a3 = options.lowerCaseTags) !== null && _a3 !== void 0 ? _a3 : this.htmlMode;
2724
- this.lowerCaseAttributeNames = (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode;
2725
- this.recognizeSelfClosing = (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode;
2726
- this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer)(this.options, this);
2727
- this.foreignContext = [!this.htmlMode];
2728
- (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this);
3011
+ this.lowerCaseTagNames = options.lowerCaseTags ?? this.htmlMode;
3012
+ this.lowerCaseAttributeNames = options.lowerCaseAttributeNames ?? this.htmlMode;
3013
+ this.recognizeSelfClosing = options.recognizeSelfClosing ?? !this.htmlMode;
3014
+ this.tokenizer = new (options.Tokenizer ?? Tokenizer)(this.options, this);
3015
+ this.foreignContext = [ForeignContext.None];
3016
+ this.cbs.onparserinit?.(this);
2729
3017
  }
2730
3018
  // Tokenizer event handlers
2731
- /** @internal */
3019
+ /**
3020
+ * @param start Start index for the current parser event.
3021
+ * @param endIndex End index for the current parser event.
3022
+ * @internal
3023
+ */
2732
3024
  ontext(start, endIndex) {
2733
- var _a3, _b;
2734
3025
  const data = this.getSlice(start, endIndex);
2735
3026
  this.endIndex = endIndex - 1;
2736
- (_b = (_a3 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a3, data);
3027
+ this.cbs.ontext?.(data);
2737
3028
  this.startIndex = endIndex;
2738
3029
  }
2739
- /** @internal */
3030
+ /**
3031
+ * @param cp Current Unicode code point.
3032
+ * @param endIndex End index for the current parser event.
3033
+ * @internal
3034
+ */
2740
3035
  ontextentity(cp, endIndex) {
2741
- var _a3, _b;
2742
3036
  this.endIndex = endIndex - 1;
2743
- (_b = (_a3 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a3, fromCodePoint(cp));
3037
+ this.cbs.ontext?.(fromCodePoint(cp));
2744
3038
  this.startIndex = endIndex;
2745
3039
  }
3040
+ /** @internal */
3041
+ isInForeignContext() {
3042
+ return this.foreignContext[0] !== ForeignContext.None;
3043
+ }
2746
3044
  /**
2747
3045
  * Checks if the current tag is a void element. Override this if you want
2748
3046
  * to specify your own additional void elements.
3047
+ * @param name Name of the pseudo selector.
2749
3048
  */
2750
3049
  isVoidElement(name) {
2751
3050
  return this.htmlMode && voidElements.has(name);
2752
3051
  }
2753
- /** @internal */
3052
+ /**
3053
+ * Read a tag name from the buffer.
3054
+ *
3055
+ * When `lowerCaseTagNames` is enabled (the default in HTML mode), the name
3056
+ * is lowercased and may be adjusted for SVG casing or the `image` → `img`
3057
+ * alias.
3058
+ * @param start Start index of the tag name in the buffer.
3059
+ * @param endIndex End index of the tag name in the buffer.
3060
+ */
3061
+ readTagName(start, endIndex) {
3062
+ const name = this.lowerCaseTagNames ? this.getSlice(start, endIndex).toLowerCase() : this.getSlice(start, endIndex);
3063
+ if (!(this.lowerCaseTagNames && this.htmlMode)) {
3064
+ return name;
3065
+ }
3066
+ if (this.foreignContext[0] === ForeignContext.Svg) {
3067
+ return svgTagNameAdjustments.get(name) ?? name;
3068
+ }
3069
+ if (this.foreignContext.length > 1) {
3070
+ const adjusted = svgTagNameAdjustments.get(name);
3071
+ if (adjusted !== void 0 && this.stack.includes(adjusted)) {
3072
+ return adjusted;
3073
+ }
3074
+ }
3075
+ if (!this.isInForeignContext()) {
3076
+ return name === "image" ? "img" : name;
3077
+ }
3078
+ return name;
3079
+ }
3080
+ /**
3081
+ * @param start Start index for the current parser event.
3082
+ * @param endIndex End index for the current parser event.
3083
+ * @internal
3084
+ */
2754
3085
  onopentagname(start, endIndex) {
2755
3086
  this.endIndex = endIndex;
2756
- let name = this.getSlice(start, endIndex);
2757
- if (this.lowerCaseTagNames) {
2758
- name = name.toLowerCase();
2759
- }
2760
- this.emitOpenTag(name);
3087
+ this.emitOpenTag(this.readTagName(start, endIndex));
2761
3088
  }
2762
3089
  emitOpenTag(name) {
2763
- var _a3, _b, _c, _d;
2764
3090
  this.openTagStart = this.startIndex;
2765
3091
  this.tagname = name;
3092
+ if (this.htmlMode && name === "form" && this.stack.includes("form")) {
3093
+ this.tagname = "";
3094
+ return;
3095
+ }
2766
3096
  const impliesClose = this.htmlMode && openImpliesClose.get(name);
2767
3097
  if (impliesClose) {
2768
3098
  while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {
2769
- const element = this.stack.shift();
2770
- (_b = (_a3 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a3, element, true);
3099
+ this.popElement(true);
2771
3100
  }
2772
3101
  }
2773
3102
  if (!this.isVoidElement(name)) {
2774
3103
  this.stack.unshift(name);
2775
3104
  if (this.htmlMode) {
2776
- if (foreignContextElements.has(name)) {
2777
- this.foreignContext.unshift(true);
3105
+ if (name === "svg") {
3106
+ this.foreignContext.unshift(ForeignContext.Svg);
3107
+ } else if (name === "math") {
3108
+ this.foreignContext.unshift(ForeignContext.MathML);
2778
3109
  } else if (htmlIntegrationElements.has(name)) {
2779
- this.foreignContext.unshift(false);
3110
+ this.foreignContext.unshift(ForeignContext.None);
2780
3111
  }
2781
3112
  }
2782
3113
  }
2783
- (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);
3114
+ this.cbs.onopentagname?.(name);
2784
3115
  if (this.cbs.onopentag)
2785
3116
  this.attribs = {};
2786
3117
  }
2787
3118
  endOpenTag(isImplied) {
2788
- var _a3, _b;
2789
3119
  this.startIndex = this.openTagStart;
2790
3120
  if (this.attribs) {
2791
- (_b = (_a3 = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a3, this.tagname, this.attribs, isImplied);
3121
+ this.cbs.onopentag?.(this.tagname, this.attribs, isImplied);
2792
3122
  this.attribs = null;
2793
3123
  }
2794
3124
  if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {
@@ -2796,80 +3126,107 @@ var Parser = class {
2796
3126
  }
2797
3127
  this.tagname = "";
2798
3128
  }
2799
- /** @internal */
3129
+ /**
3130
+ * @param endIndex End index for the current parser event.
3131
+ * @internal
3132
+ */
2800
3133
  onopentagend(endIndex) {
2801
3134
  this.endIndex = endIndex;
2802
3135
  this.endOpenTag(false);
2803
3136
  this.startIndex = endIndex + 1;
2804
3137
  }
2805
- /** @internal */
3138
+ /**
3139
+ * @param start Start index for the current parser event.
3140
+ * @param endIndex End index for the current parser event.
3141
+ * @internal
3142
+ */
2806
3143
  onclosetag(start, endIndex) {
2807
- var _a3, _b, _c, _d, _e, _f, _g, _h;
2808
3144
  this.endIndex = endIndex;
2809
- let name = this.getSlice(start, endIndex);
2810
- if (this.lowerCaseTagNames) {
2811
- name = name.toLowerCase();
2812
- }
2813
- if (this.htmlMode && (foreignContextElements.has(name) || htmlIntegrationElements.has(name))) {
2814
- this.foreignContext.shift();
2815
- }
3145
+ const name = this.readTagName(start, endIndex);
2816
3146
  if (!this.isVoidElement(name)) {
2817
3147
  const pos = this.stack.indexOf(name);
2818
3148
  if (pos !== -1) {
2819
- for (let index = 0; index <= pos; index++) {
2820
- const element = this.stack.shift();
2821
- (_b = (_a3 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a3, element, index !== pos);
3149
+ for (let index = 0; index < pos; index++) {
3150
+ this.popElement(true);
2822
3151
  }
3152
+ this.popElement(false);
2823
3153
  } else if (this.htmlMode && name === "p") {
2824
3154
  this.emitOpenTag("p");
2825
3155
  this.closeCurrentTag(true);
2826
3156
  }
2827
3157
  } else if (this.htmlMode && name === "br") {
2828
- (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, "br");
2829
- (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, "br", {}, true);
2830
- (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, "br", false);
3158
+ this.cbs.onopentagname?.("br");
3159
+ this.cbs.onopentag?.("br", {}, true);
3160
+ this.cbs.onclosetag?.("br", false);
2831
3161
  }
2832
3162
  this.startIndex = endIndex + 1;
2833
3163
  }
2834
- /** @internal */
3164
+ /**
3165
+ * @param endIndex End index for the current parser event.
3166
+ * @internal
3167
+ */
2835
3168
  onselfclosingtag(endIndex) {
2836
3169
  this.endIndex = endIndex;
2837
- if (this.recognizeSelfClosing || this.foreignContext[0]) {
3170
+ if (this.recognizeSelfClosing || this.isInForeignContext()) {
2838
3171
  this.closeCurrentTag(false);
2839
3172
  this.startIndex = endIndex + 1;
2840
3173
  } else {
2841
3174
  this.onopentagend(endIndex);
2842
3175
  }
2843
3176
  }
3177
+ /**
3178
+ * Pop the top element off the stack, emit a close event, and maintain
3179
+ * the foreign context stack.
3180
+ * @param implied Whether this close is implied (not from an explicit end tag).
3181
+ */
3182
+ popElement(implied) {
3183
+ const element = this.stack.shift();
3184
+ if (this.htmlMode && (foreignContextElements.has(element) || htmlIntegrationElements.has(element))) {
3185
+ this.foreignContext.shift();
3186
+ }
3187
+ this.cbs.onclosetag?.(element, implied);
3188
+ }
2844
3189
  closeCurrentTag(isOpenImplied) {
2845
- var _a3, _b;
2846
3190
  const name = this.tagname;
2847
3191
  this.endOpenTag(isOpenImplied);
2848
3192
  if (this.stack[0] === name) {
2849
- (_b = (_a3 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a3, name, !isOpenImplied);
2850
- this.stack.shift();
3193
+ this.popElement(!isOpenImplied);
2851
3194
  }
2852
3195
  }
2853
- /** @internal */
3196
+ /**
3197
+ * @param start Start index for the current parser event.
3198
+ * @param endIndex End index for the current parser event.
3199
+ * @internal
3200
+ */
2854
3201
  onattribname(start, endIndex) {
2855
3202
  this.startIndex = start;
2856
3203
  const name = this.getSlice(start, endIndex);
2857
3204
  this.attribname = this.lowerCaseAttributeNames ? name.toLowerCase() : name;
2858
3205
  }
2859
- /** @internal */
3206
+ /**
3207
+ * @param start Start index for the current parser event.
3208
+ * @param endIndex End index for the current parser event.
3209
+ * @internal
3210
+ */
2860
3211
  onattribdata(start, endIndex) {
2861
3212
  this.attribvalue += this.getSlice(start, endIndex);
2862
3213
  }
2863
- /** @internal */
3214
+ /**
3215
+ * @param cp Current Unicode code point.
3216
+ * @internal
3217
+ */
2864
3218
  onattribentity(cp) {
2865
3219
  this.attribvalue += fromCodePoint(cp);
2866
3220
  }
2867
- /** @internal */
3221
+ /**
3222
+ * @param quote Quote type used for the current attribute.
3223
+ * @param endIndex End index for the current parser event.
3224
+ * @internal
3225
+ */
2868
3226
  onattribend(quote2, endIndex) {
2869
- var _a3, _b;
2870
3227
  this.endIndex = endIndex;
2871
- (_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);
2872
- if (this.attribs && !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {
3228
+ this.cbs.onattribute?.(this.attribname, this.attribvalue, quote2 === QuoteType.Double ? '"' : quote2 === QuoteType.Single ? "'" : quote2 === QuoteType.NoValue ? void 0 : null);
3229
+ if (this.attribs && !Object.hasOwn(this.attribs, this.attribname)) {
2873
3230
  this.attribs[this.attribname] = this.attribvalue;
2874
3231
  }
2875
3232
  this.attribvalue = "";
@@ -2882,17 +3239,25 @@ var Parser = class {
2882
3239
  }
2883
3240
  return name;
2884
3241
  }
2885
- /** @internal */
3242
+ /**
3243
+ * @param start Start index for the current parser event.
3244
+ * @param endIndex End index for the current parser event.
3245
+ * @internal
3246
+ */
2886
3247
  ondeclaration(start, endIndex) {
2887
3248
  this.endIndex = endIndex;
2888
3249
  const value = this.getSlice(start, endIndex);
2889
3250
  if (this.cbs.onprocessinginstruction) {
2890
- const name = this.getInstructionName(value);
3251
+ const name = this.htmlMode ? this.lowerCaseTagNames ? DOCUMENT_TYPE : value.slice(0, DOCUMENT_TYPE.length) : this.getInstructionName(value);
2891
3252
  this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);
2892
3253
  }
2893
3254
  this.startIndex = endIndex + 1;
2894
3255
  }
2895
- /** @internal */
3256
+ /**
3257
+ * @param start Start index for the current parser event.
3258
+ * @param endIndex End index for the current parser event.
3259
+ * @internal
3260
+ */
2896
3261
  onprocessinginstruction(start, endIndex) {
2897
3262
  this.endIndex = endIndex;
2898
3263
  const value = this.getSlice(start, endIndex);
@@ -2902,57 +3267,66 @@ var Parser = class {
2902
3267
  }
2903
3268
  this.startIndex = endIndex + 1;
2904
3269
  }
2905
- /** @internal */
3270
+ /**
3271
+ * @param start Start index for the current parser event.
3272
+ * @param endIndex End index for the current parser event.
3273
+ * @param offset Offset applied when computing parser indices.
3274
+ * @internal
3275
+ */
2906
3276
  oncomment(start, endIndex, offset) {
2907
- var _a3, _b, _c, _d;
2908
3277
  this.endIndex = endIndex;
2909
- (_b = (_a3 = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a3, this.getSlice(start, endIndex - offset));
2910
- (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);
3278
+ this.cbs.oncomment?.(this.getSlice(start, endIndex - offset));
3279
+ this.cbs.oncommentend?.();
2911
3280
  this.startIndex = endIndex + 1;
2912
3281
  }
2913
- /** @internal */
3282
+ /**
3283
+ * @param start Start index for the current parser event.
3284
+ * @param endIndex End index for the current parser event.
3285
+ * @param offset Offset applied when computing parser indices.
3286
+ * @internal
3287
+ */
2914
3288
  oncdata(start, endIndex, offset) {
2915
- var _a3, _b, _c, _d, _e, _f, _g, _h, _j, _k;
2916
3289
  this.endIndex = endIndex;
2917
3290
  const value = this.getSlice(start, endIndex - offset);
2918
3291
  if (!this.htmlMode || this.options.recognizeCDATA) {
2919
- (_b = (_a3 = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a3);
2920
- (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);
2921
- (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);
3292
+ this.cbs.oncdatastart?.();
3293
+ this.cbs.ontext?.(value);
3294
+ this.cbs.oncdataend?.();
3295
+ } else if (this.isInForeignContext()) {
3296
+ this.cbs.ontext?.(value);
2922
3297
  } else {
2923
- (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);
2924
- (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);
3298
+ this.cbs.oncomment?.(`[CDATA[${value}]]`);
3299
+ this.cbs.oncommentend?.();
2925
3300
  }
2926
3301
  this.startIndex = endIndex + 1;
2927
3302
  }
2928
3303
  /** @internal */
2929
3304
  onend() {
2930
- var _a3, _b;
2931
3305
  if (this.cbs.onclosetag) {
2932
3306
  this.endIndex = this.startIndex;
2933
3307
  for (let index = 0; index < this.stack.length; index++) {
2934
3308
  this.cbs.onclosetag(this.stack[index], true);
2935
3309
  }
2936
3310
  }
2937
- (_b = (_a3 = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a3);
3311
+ this.cbs.onend?.();
2938
3312
  }
2939
3313
  /**
2940
3314
  * Resets the parser to a blank state, ready to parse a new HTML document
2941
3315
  */
2942
3316
  reset() {
2943
- var _a3, _b, _c, _d;
2944
- (_b = (_a3 = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a3);
3317
+ this.cbs.onreset?.();
2945
3318
  this.tokenizer.reset();
2946
3319
  this.tagname = "";
2947
3320
  this.attribname = "";
3321
+ this.attribvalue = "";
2948
3322
  this.attribs = null;
2949
3323
  this.stack.length = 0;
2950
3324
  this.startIndex = 0;
2951
3325
  this.endIndex = 0;
2952
- (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);
3326
+ this.cbs.onparserinit?.(this);
2953
3327
  this.buffers.length = 0;
2954
3328
  this.foreignContext.length = 0;
2955
- this.foreignContext.unshift(!this.htmlMode);
3329
+ this.foreignContext.unshift(ForeignContext.None);
2956
3330
  this.bufferOffset = 0;
2957
3331
  this.writeIndex = 0;
2958
3332
  this.ended = false;
@@ -2960,7 +3334,6 @@ var Parser = class {
2960
3334
  /**
2961
3335
  * Resets the parser, then parses a complete document and
2962
3336
  * pushes it to the handler.
2963
- *
2964
3337
  * @param data Document to parse.
2965
3338
  */
2966
3339
  parseComplete(data) {
@@ -2968,6 +3341,9 @@ var Parser = class {
2968
3341
  this.end(data);
2969
3342
  }
2970
3343
  getSlice(start, end) {
3344
+ if (start === end) {
3345
+ return "";
3346
+ }
2971
3347
  while (start - this.bufferOffset >= this.buffers[0].length) {
2972
3348
  this.shiftBuffer();
2973
3349
  }
@@ -2985,13 +3361,11 @@ var Parser = class {
2985
3361
  }
2986
3362
  /**
2987
3363
  * Parses a chunk of data and calls the corresponding callbacks.
2988
- *
2989
3364
  * @param chunk Chunk to parse.
2990
3365
  */
2991
3366
  write(chunk) {
2992
- var _a3, _b;
2993
3367
  if (this.ended) {
2994
- (_b = (_a3 = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a3, new Error(".write() after done!"));
3368
+ this.cbs.onerror?.(new Error(".write() after done!"));
2995
3369
  return;
2996
3370
  }
2997
3371
  this.buffers.push(chunk);
@@ -3002,13 +3376,11 @@ var Parser = class {
3002
3376
  }
3003
3377
  /**
3004
3378
  * Parses the end of the buffer and clears the stack, calls onend.
3005
- *
3006
3379
  * @param chunk Optional final chunk to parse.
3007
3380
  */
3008
3381
  end(chunk) {
3009
- var _a3, _b;
3010
3382
  if (this.ended) {
3011
- (_b = (_a3 = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a3, new Error(".end() after done!"));
3383
+ this.cbs.onerror?.(new Error(".end() after done!"));
3012
3384
  return;
3013
3385
  }
3014
3386
  if (chunk)
@@ -3033,27 +3405,9 @@ var Parser = class {
3033
3405
  if (this.ended)
3034
3406
  this.tokenizer.end();
3035
3407
  }
3036
- /**
3037
- * Alias of `write`, for backwards compatibility.
3038
- *
3039
- * @param chunk Chunk to parse.
3040
- * @deprecated
3041
- */
3042
- parseChunk(chunk) {
3043
- this.write(chunk);
3044
- }
3045
- /**
3046
- * Alias of `end`, for backwards compatibility.
3047
- *
3048
- * @param chunk Optional final chunk to parse.
3049
- * @deprecated
3050
- */
3051
- done(chunk) {
3052
- this.end(chunk);
3053
- }
3054
3408
  };
3055
3409
 
3056
- // node_modules/.pnpm/domelementtype@2.3.0/node_modules/domelementtype/lib/esm/index.js
3410
+ // node_modules/.pnpm/domelementtype@3.0.0/node_modules/domelementtype/dist/index.js
3057
3411
  var ElementType;
3058
3412
  (function(ElementType2) {
3059
3413
  ElementType2["Root"] = "root";
@@ -3066,8 +3420,8 @@ var ElementType;
3066
3420
  ElementType2["CDATA"] = "cdata";
3067
3421
  ElementType2["Doctype"] = "doctype";
3068
3422
  })(ElementType || (ElementType = {}));
3069
- function isTag(elem) {
3070
- return elem.type === ElementType.Tag || elem.type === ElementType.Script || elem.type === ElementType.Style;
3423
+ function isTag(element) {
3424
+ return element.type === ElementType.Tag || element.type === ElementType.Script || element.type === ElementType.Style;
3071
3425
  }
3072
3426
  var Root = ElementType.Root;
3073
3427
  var Text = ElementType.Text;
@@ -3079,15 +3433,18 @@ var Tag = ElementType.Tag;
3079
3433
  var CDATA = ElementType.CDATA;
3080
3434
  var Doctype = ElementType.Doctype;
3081
3435
 
3082
- // node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/node.js
3436
+ // node_modules/.pnpm/domhandler@6.0.1/node_modules/domhandler/dist/node.js
3083
3437
  var Node = class {
3084
- constructor() {
3085
- this.parent = null;
3086
- this.prev = null;
3087
- this.next = null;
3088
- this.startIndex = null;
3089
- this.endIndex = null;
3090
- }
3438
+ /** Parent of the node */
3439
+ parent = null;
3440
+ /** Previous sibling */
3441
+ prev = null;
3442
+ /** Next sibling */
3443
+ next = null;
3444
+ /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */
3445
+ startIndex = null;
3446
+ /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */
3447
+ endIndex = null;
3091
3448
  // Read-write aliases for properties
3092
3449
  /**
3093
3450
  * Same as {@link parent}.
@@ -3106,8 +3463,8 @@ var Node = class {
3106
3463
  get previousSibling() {
3107
3464
  return this.prev;
3108
3465
  }
3109
- set previousSibling(prev) {
3110
- this.prev = prev;
3466
+ set previousSibling(previous) {
3467
+ this.prev = previous;
3111
3468
  }
3112
3469
  /**
3113
3470
  * Same as {@link next}.
@@ -3121,7 +3478,6 @@ var Node = class {
3121
3478
  }
3122
3479
  /**
3123
3480
  * Clone this node, and optionally its children.
3124
- *
3125
3481
  * @param recursive Clone child nodes as well.
3126
3482
  * @returns A clone of the node.
3127
3483
  */
@@ -3130,6 +3486,7 @@ var Node = class {
3130
3486
  }
3131
3487
  };
3132
3488
  var DataNode = class extends Node {
3489
+ data;
3133
3490
  /**
3134
3491
  * @param data The content of the data node
3135
3492
  */
@@ -3149,34 +3506,36 @@ var DataNode = class extends Node {
3149
3506
  }
3150
3507
  };
3151
3508
  var Text2 = class extends DataNode {
3152
- constructor() {
3153
- super(...arguments);
3154
- this.type = ElementType.Text;
3155
- }
3509
+ type = ElementType.Text;
3156
3510
  get nodeType() {
3157
3511
  return 3;
3158
3512
  }
3159
3513
  };
3160
3514
  var Comment2 = class extends DataNode {
3161
- constructor() {
3162
- super(...arguments);
3163
- this.type = ElementType.Comment;
3164
- }
3515
+ type = ElementType.Comment;
3165
3516
  get nodeType() {
3166
3517
  return 8;
3167
3518
  }
3168
3519
  };
3169
3520
  var ProcessingInstruction = class extends DataNode {
3521
+ type = ElementType.Directive;
3522
+ name;
3170
3523
  constructor(name, data) {
3171
3524
  super(data);
3172
3525
  this.name = name;
3173
- this.type = ElementType.Directive;
3174
3526
  }
3175
3527
  get nodeType() {
3176
3528
  return 1;
3177
3529
  }
3530
+ /** If this is a doctype, the document type name (parse5 only). */
3531
+ "x-name";
3532
+ /** If this is a doctype, the document type public identifier (parse5 only). */
3533
+ "x-publicId";
3534
+ /** If this is a doctype, the document type system identifier (parse5 only). */
3535
+ "x-systemId";
3178
3536
  };
3179
3537
  var NodeWithChildren = class extends Node {
3538
+ children;
3180
3539
  /**
3181
3540
  * @param children Children of the node. Only certain node types can have children.
3182
3541
  */
@@ -3187,8 +3546,7 @@ var NodeWithChildren = class extends Node {
3187
3546
  // Aliases
3188
3547
  /** First child of the node. */
3189
3548
  get firstChild() {
3190
- var _a3;
3191
- return (_a3 = this.children[0]) !== null && _a3 !== void 0 ? _a3 : null;
3549
+ return this.children[0] ?? null;
3192
3550
  }
3193
3551
  /** Last child of the node. */
3194
3552
  get lastChild() {
@@ -3206,28 +3564,26 @@ var NodeWithChildren = class extends Node {
3206
3564
  }
3207
3565
  };
3208
3566
  var CDATA2 = class extends NodeWithChildren {
3209
- constructor() {
3210
- super(...arguments);
3211
- this.type = ElementType.CDATA;
3212
- }
3567
+ type = ElementType.CDATA;
3213
3568
  get nodeType() {
3214
3569
  return 4;
3215
3570
  }
3216
3571
  };
3217
3572
  var Document = class extends NodeWithChildren {
3218
- constructor() {
3219
- super(...arguments);
3220
- this.type = ElementType.Root;
3221
- }
3573
+ type = ElementType.Root;
3222
3574
  get nodeType() {
3223
3575
  return 9;
3224
3576
  }
3225
3577
  };
3226
3578
  var Element = class extends NodeWithChildren {
3579
+ name;
3580
+ attribs;
3581
+ type;
3227
3582
  /**
3228
3583
  * @param name Name of the tag, eg. `div`, `span`.
3229
3584
  * @param attribs Object mapping attribute names to attribute values.
3230
3585
  * @param children Children of the node.
3586
+ * @param type Node type used for the new node instance.
3231
3587
  */
3232
3588
  constructor(name, attribs, children = [], type = name === "script" ? ElementType.Script : name === "style" ? ElementType.Style : ElementType.Tag) {
3233
3589
  super(children);
@@ -3250,16 +3606,19 @@ var Element = class extends NodeWithChildren {
3250
3606
  this.name = name;
3251
3607
  }
3252
3608
  get attributes() {
3253
- return Object.keys(this.attribs).map((name) => {
3254
- var _a3, _b;
3255
- return {
3256
- name,
3257
- value: this.attribs[name],
3258
- namespace: (_a3 = this["x-attribsNamespace"]) === null || _a3 === void 0 ? void 0 : _a3[name],
3259
- prefix: (_b = this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name]
3260
- };
3261
- });
3262
- }
3609
+ return Object.keys(this.attribs).map((name) => ({
3610
+ name,
3611
+ value: this.attribs[name],
3612
+ namespace: this["x-attribsNamespace"]?.[name],
3613
+ prefix: this["x-attribsPrefix"]?.[name]
3614
+ }));
3615
+ }
3616
+ /** Element namespace (parse5 only). */
3617
+ namespace;
3618
+ /** Element attribute namespaces (parse5 only). */
3619
+ "x-attribsNamespace";
3620
+ /** Element attribute namespace-related prefixes (parse5 only). */
3621
+ "x-attribsPrefix";
3263
3622
  };
3264
3623
  function isTag2(node) {
3265
3624
  return isTag(node);
@@ -3288,7 +3647,9 @@ function cloneNode(node, recursive = false) {
3288
3647
  } else if (isTag2(node)) {
3289
3648
  const children = recursive ? cloneChildren(node.children) : [];
3290
3649
  const clone = new Element(node.name, { ...node.attribs }, children);
3291
- children.forEach((child) => child.parent = clone);
3650
+ for (const child of children) {
3651
+ child.parent = clone;
3652
+ }
3292
3653
  if (node.namespace != null) {
3293
3654
  clone.namespace = node.namespace;
3294
3655
  }
@@ -3302,12 +3663,16 @@ function cloneNode(node, recursive = false) {
3302
3663
  } else if (isCDATA(node)) {
3303
3664
  const children = recursive ? cloneChildren(node.children) : [];
3304
3665
  const clone = new CDATA2(children);
3305
- children.forEach((child) => child.parent = clone);
3666
+ for (const child of children) {
3667
+ child.parent = clone;
3668
+ }
3306
3669
  result = clone;
3307
3670
  } else if (isDocument(node)) {
3308
3671
  const children = recursive ? cloneChildren(node.children) : [];
3309
3672
  const clone = new Document(children);
3310
- children.forEach((child) => child.parent = clone);
3673
+ for (const child of children) {
3674
+ child.parent = clone;
3675
+ }
3311
3676
  if (node["x-mode"]) {
3312
3677
  clone["x-mode"] = node["x-mode"];
3313
3678
  }
@@ -3332,43 +3697,55 @@ function cloneNode(node, recursive = false) {
3332
3697
  }
3333
3698
  function cloneChildren(childs) {
3334
3699
  const children = childs.map((child) => cloneNode(child, true));
3335
- for (let i = 1; i < children.length; i++) {
3336
- children[i].prev = children[i - 1];
3337
- children[i - 1].next = children[i];
3700
+ for (let index = 1; index < children.length; index++) {
3701
+ children[index].prev = children[index - 1];
3702
+ children[index - 1].next = children[index];
3338
3703
  }
3339
3704
  return children;
3340
3705
  }
3341
3706
 
3342
- // node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/index.js
3343
- var defaultOpts = {
3707
+ // node_modules/.pnpm/domhandler@6.0.1/node_modules/domhandler/dist/index.js
3708
+ var defaultOptions = {
3344
3709
  withStartIndices: false,
3345
3710
  withEndIndices: false,
3346
3711
  xmlMode: false
3347
3712
  };
3348
3713
  var DomHandler = class {
3714
+ /** The elements of the DOM */
3715
+ dom = [];
3716
+ /** The root element for the DOM */
3717
+ root = new Document(this.dom);
3718
+ /** Called once parsing has completed. */
3719
+ callback;
3720
+ /** Settings for the handler. */
3721
+ options;
3722
+ /** Callback whenever a tag is closed. */
3723
+ elementCB;
3724
+ /** Indicated whether parsing has been completed. */
3725
+ done = false;
3726
+ /** Stack of open tags. */
3727
+ tagStack = [this.root];
3728
+ /** A data node that is still being written to. */
3729
+ lastNode = null;
3730
+ /** Reference to the parser instance. Used for location information. */
3731
+ parser = null;
3349
3732
  /**
3350
3733
  * @param callback Called once parsing has completed.
3351
3734
  * @param options Settings for the handler.
3352
3735
  * @param elementCB Callback whenever a tag is closed.
3353
3736
  */
3354
3737
  constructor(callback, options, elementCB) {
3355
- this.dom = [];
3356
- this.root = new Document(this.dom);
3357
- this.done = false;
3358
- this.tagStack = [this.root];
3359
- this.lastNode = null;
3360
- this.parser = null;
3361
3738
  if (typeof options === "function") {
3362
3739
  elementCB = options;
3363
- options = defaultOpts;
3740
+ options = defaultOptions;
3364
3741
  }
3365
3742
  if (typeof callback === "object") {
3366
3743
  options = callback;
3367
3744
  callback = void 0;
3368
3745
  }
3369
- this.callback = callback !== null && callback !== void 0 ? callback : null;
3370
- this.options = options !== null && options !== void 0 ? options : defaultOpts;
3371
- this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;
3746
+ this.callback = callback ?? null;
3747
+ this.options = options ?? defaultOptions;
3748
+ this.elementCB = elementCB ?? null;
3372
3749
  }
3373
3750
  onparserinit(parser) {
3374
3751
  this.parser = parser;
@@ -3395,12 +3772,12 @@ var DomHandler = class {
3395
3772
  }
3396
3773
  onclosetag() {
3397
3774
  this.lastNode = null;
3398
- const elem = this.tagStack.pop();
3399
- if (this.options.withEndIndices) {
3400
- elem.endIndex = this.parser.endIndex;
3775
+ const element = this.tagStack.pop();
3776
+ if (this.options.withEndIndices && this.parser) {
3777
+ element.endIndex = this.parser.endIndex;
3401
3778
  }
3402
3779
  if (this.elementCB)
3403
- this.elementCB(elem);
3780
+ this.elementCB(element);
3404
3781
  }
3405
3782
  onopentag(name, attribs) {
3406
3783
  const type = this.options.xmlMode ? ElementType.Tag : void 0;
@@ -3412,7 +3789,7 @@ var DomHandler = class {
3412
3789
  const { lastNode } = this;
3413
3790
  if (lastNode && lastNode.type === ElementType.Text) {
3414
3791
  lastNode.data += data;
3415
- if (this.options.withEndIndices) {
3792
+ if (this.options.withEndIndices && this.parser) {
3416
3793
  lastNode.endIndex = this.parser.endIndex;
3417
3794
  }
3418
3795
  } else {
@@ -3457,10 +3834,10 @@ var DomHandler = class {
3457
3834
  addNode(node) {
3458
3835
  const parent = this.tagStack[this.tagStack.length - 1];
3459
3836
  const previousSibling = parent.children[parent.children.length - 1];
3460
- if (this.options.withStartIndices) {
3837
+ if (this.options.withStartIndices && this.parser) {
3461
3838
  node.startIndex = this.parser.startIndex;
3462
3839
  }
3463
- if (this.options.withEndIndices) {
3840
+ if (this.options.withEndIndices && this.parser) {
3464
3841
  node.endIndex = this.parser.endIndex;
3465
3842
  }
3466
3843
  parent.children.push(node);
@@ -3473,616 +3850,7 @@ var DomHandler = class {
3473
3850
  }
3474
3851
  };
3475
3852
 
3476
- // node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-html.js
3477
- var decode_data_html_default = new Uint16Array(
3478
- // prettier-ignore
3479
- '\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))
3480
- );
3481
-
3482
- // node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-xml.js
3483
- var decode_data_xml_default = new Uint16Array(
3484
- // prettier-ignore
3485
- "\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map((c) => c.charCodeAt(0))
3486
- );
3487
-
3488
- // node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode_codepoint.js
3489
- var _a2;
3490
- var decodeMap2 = /* @__PURE__ */ new Map([
3491
- [0, 65533],
3492
- // C1 Unicode control character reference replacements
3493
- [128, 8364],
3494
- [130, 8218],
3495
- [131, 402],
3496
- [132, 8222],
3497
- [133, 8230],
3498
- [134, 8224],
3499
- [135, 8225],
3500
- [136, 710],
3501
- [137, 8240],
3502
- [138, 352],
3503
- [139, 8249],
3504
- [140, 338],
3505
- [142, 381],
3506
- [145, 8216],
3507
- [146, 8217],
3508
- [147, 8220],
3509
- [148, 8221],
3510
- [149, 8226],
3511
- [150, 8211],
3512
- [151, 8212],
3513
- [152, 732],
3514
- [153, 8482],
3515
- [154, 353],
3516
- [155, 8250],
3517
- [156, 339],
3518
- [158, 382],
3519
- [159, 376]
3520
- ]);
3521
- var fromCodePoint2 = (
3522
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
3523
- (_a2 = String.fromCodePoint) !== null && _a2 !== void 0 ? _a2 : function(codePoint) {
3524
- let output = "";
3525
- if (codePoint > 65535) {
3526
- codePoint -= 65536;
3527
- output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296);
3528
- codePoint = 56320 | codePoint & 1023;
3529
- }
3530
- output += String.fromCharCode(codePoint);
3531
- return output;
3532
- }
3533
- );
3534
- function replaceCodePoint2(codePoint) {
3535
- var _a3;
3536
- if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {
3537
- return 65533;
3538
- }
3539
- return (_a3 = decodeMap2.get(codePoint)) !== null && _a3 !== void 0 ? _a3 : codePoint;
3540
- }
3541
-
3542
- // node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode.js
3543
- var CharCodes3;
3544
- (function(CharCodes4) {
3545
- CharCodes4[CharCodes4["NUM"] = 35] = "NUM";
3546
- CharCodes4[CharCodes4["SEMI"] = 59] = "SEMI";
3547
- CharCodes4[CharCodes4["EQUALS"] = 61] = "EQUALS";
3548
- CharCodes4[CharCodes4["ZERO"] = 48] = "ZERO";
3549
- CharCodes4[CharCodes4["NINE"] = 57] = "NINE";
3550
- CharCodes4[CharCodes4["LOWER_A"] = 97] = "LOWER_A";
3551
- CharCodes4[CharCodes4["LOWER_F"] = 102] = "LOWER_F";
3552
- CharCodes4[CharCodes4["LOWER_X"] = 120] = "LOWER_X";
3553
- CharCodes4[CharCodes4["LOWER_Z"] = 122] = "LOWER_Z";
3554
- CharCodes4[CharCodes4["UPPER_A"] = 65] = "UPPER_A";
3555
- CharCodes4[CharCodes4["UPPER_F"] = 70] = "UPPER_F";
3556
- CharCodes4[CharCodes4["UPPER_Z"] = 90] = "UPPER_Z";
3557
- })(CharCodes3 || (CharCodes3 = {}));
3558
- var TO_LOWER_BIT2 = 32;
3559
- var BinTrieFlags2;
3560
- (function(BinTrieFlags3) {
3561
- BinTrieFlags3[BinTrieFlags3["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
3562
- BinTrieFlags3[BinTrieFlags3["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
3563
- BinTrieFlags3[BinTrieFlags3["JUMP_TABLE"] = 127] = "JUMP_TABLE";
3564
- })(BinTrieFlags2 || (BinTrieFlags2 = {}));
3565
- function isNumber2(code) {
3566
- return code >= CharCodes3.ZERO && code <= CharCodes3.NINE;
3567
- }
3568
- function isHexadecimalCharacter2(code) {
3569
- return code >= CharCodes3.UPPER_A && code <= CharCodes3.UPPER_F || code >= CharCodes3.LOWER_A && code <= CharCodes3.LOWER_F;
3570
- }
3571
- function isAsciiAlphaNumeric2(code) {
3572
- return code >= CharCodes3.UPPER_A && code <= CharCodes3.UPPER_Z || code >= CharCodes3.LOWER_A && code <= CharCodes3.LOWER_Z || isNumber2(code);
3573
- }
3574
- function isEntityInAttributeInvalidEnd2(code) {
3575
- return code === CharCodes3.EQUALS || isAsciiAlphaNumeric2(code);
3576
- }
3577
- var EntityDecoderState2;
3578
- (function(EntityDecoderState3) {
3579
- EntityDecoderState3[EntityDecoderState3["EntityStart"] = 0] = "EntityStart";
3580
- EntityDecoderState3[EntityDecoderState3["NumericStart"] = 1] = "NumericStart";
3581
- EntityDecoderState3[EntityDecoderState3["NumericDecimal"] = 2] = "NumericDecimal";
3582
- EntityDecoderState3[EntityDecoderState3["NumericHex"] = 3] = "NumericHex";
3583
- EntityDecoderState3[EntityDecoderState3["NamedEntity"] = 4] = "NamedEntity";
3584
- })(EntityDecoderState2 || (EntityDecoderState2 = {}));
3585
- var DecodingMode2;
3586
- (function(DecodingMode3) {
3587
- DecodingMode3[DecodingMode3["Legacy"] = 0] = "Legacy";
3588
- DecodingMode3[DecodingMode3["Strict"] = 1] = "Strict";
3589
- DecodingMode3[DecodingMode3["Attribute"] = 2] = "Attribute";
3590
- })(DecodingMode2 || (DecodingMode2 = {}));
3591
- var EntityDecoder2 = class {
3592
- constructor(decodeTree, emitCodePoint, errors) {
3593
- this.decodeTree = decodeTree;
3594
- this.emitCodePoint = emitCodePoint;
3595
- this.errors = errors;
3596
- this.state = EntityDecoderState2.EntityStart;
3597
- this.consumed = 1;
3598
- this.result = 0;
3599
- this.treeIndex = 0;
3600
- this.excess = 1;
3601
- this.decodeMode = DecodingMode2.Strict;
3602
- }
3603
- /** Resets the instance to make it reusable. */
3604
- startEntity(decodeMode) {
3605
- this.decodeMode = decodeMode;
3606
- this.state = EntityDecoderState2.EntityStart;
3607
- this.result = 0;
3608
- this.treeIndex = 0;
3609
- this.excess = 1;
3610
- this.consumed = 1;
3611
- }
3612
- /**
3613
- * Write an entity to the decoder. This can be called multiple times with partial entities.
3614
- * If the entity is incomplete, the decoder will return -1.
3615
- *
3616
- * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
3617
- * entity is incomplete, and resume when the next string is written.
3618
- *
3619
- * @param string The string containing the entity (or a continuation of the entity).
3620
- * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
3621
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
3622
- */
3623
- write(str, offset) {
3624
- switch (this.state) {
3625
- case EntityDecoderState2.EntityStart: {
3626
- if (str.charCodeAt(offset) === CharCodes3.NUM) {
3627
- this.state = EntityDecoderState2.NumericStart;
3628
- this.consumed += 1;
3629
- return this.stateNumericStart(str, offset + 1);
3630
- }
3631
- this.state = EntityDecoderState2.NamedEntity;
3632
- return this.stateNamedEntity(str, offset);
3633
- }
3634
- case EntityDecoderState2.NumericStart: {
3635
- return this.stateNumericStart(str, offset);
3636
- }
3637
- case EntityDecoderState2.NumericDecimal: {
3638
- return this.stateNumericDecimal(str, offset);
3639
- }
3640
- case EntityDecoderState2.NumericHex: {
3641
- return this.stateNumericHex(str, offset);
3642
- }
3643
- case EntityDecoderState2.NamedEntity: {
3644
- return this.stateNamedEntity(str, offset);
3645
- }
3646
- }
3647
- }
3648
- /**
3649
- * Switches between the numeric decimal and hexadecimal states.
3650
- *
3651
- * Equivalent to the `Numeric character reference state` in the HTML spec.
3652
- *
3653
- * @param str The string containing the entity (or a continuation of the entity).
3654
- * @param offset The current offset.
3655
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
3656
- */
3657
- stateNumericStart(str, offset) {
3658
- if (offset >= str.length) {
3659
- return -1;
3660
- }
3661
- if ((str.charCodeAt(offset) | TO_LOWER_BIT2) === CharCodes3.LOWER_X) {
3662
- this.state = EntityDecoderState2.NumericHex;
3663
- this.consumed += 1;
3664
- return this.stateNumericHex(str, offset + 1);
3665
- }
3666
- this.state = EntityDecoderState2.NumericDecimal;
3667
- return this.stateNumericDecimal(str, offset);
3668
- }
3669
- addToNumericResult(str, start, end, base) {
3670
- if (start !== end) {
3671
- const digitCount = end - start;
3672
- this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base);
3673
- this.consumed += digitCount;
3674
- }
3675
- }
3676
- /**
3677
- * Parses a hexadecimal numeric entity.
3678
- *
3679
- * Equivalent to the `Hexademical character reference state` in the HTML spec.
3680
- *
3681
- * @param str The string containing the entity (or a continuation of the entity).
3682
- * @param offset The current offset.
3683
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
3684
- */
3685
- stateNumericHex(str, offset) {
3686
- const startIdx = offset;
3687
- while (offset < str.length) {
3688
- const char = str.charCodeAt(offset);
3689
- if (isNumber2(char) || isHexadecimalCharacter2(char)) {
3690
- offset += 1;
3691
- } else {
3692
- this.addToNumericResult(str, startIdx, offset, 16);
3693
- return this.emitNumericEntity(char, 3);
3694
- }
3695
- }
3696
- this.addToNumericResult(str, startIdx, offset, 16);
3697
- return -1;
3698
- }
3699
- /**
3700
- * Parses a decimal numeric entity.
3701
- *
3702
- * Equivalent to the `Decimal character reference state` in the HTML spec.
3703
- *
3704
- * @param str The string containing the entity (or a continuation of the entity).
3705
- * @param offset The current offset.
3706
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
3707
- */
3708
- stateNumericDecimal(str, offset) {
3709
- const startIdx = offset;
3710
- while (offset < str.length) {
3711
- const char = str.charCodeAt(offset);
3712
- if (isNumber2(char)) {
3713
- offset += 1;
3714
- } else {
3715
- this.addToNumericResult(str, startIdx, offset, 10);
3716
- return this.emitNumericEntity(char, 2);
3717
- }
3718
- }
3719
- this.addToNumericResult(str, startIdx, offset, 10);
3720
- return -1;
3721
- }
3722
- /**
3723
- * Validate and emit a numeric entity.
3724
- *
3725
- * Implements the logic from the `Hexademical character reference start
3726
- * state` and `Numeric character reference end state` in the HTML spec.
3727
- *
3728
- * @param lastCp The last code point of the entity. Used to see if the
3729
- * entity was terminated with a semicolon.
3730
- * @param expectedLength The minimum number of characters that should be
3731
- * consumed. Used to validate that at least one digit
3732
- * was consumed.
3733
- * @returns The number of characters that were consumed.
3734
- */
3735
- emitNumericEntity(lastCp, expectedLength) {
3736
- var _a3;
3737
- if (this.consumed <= expectedLength) {
3738
- (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed);
3739
- return 0;
3740
- }
3741
- if (lastCp === CharCodes3.SEMI) {
3742
- this.consumed += 1;
3743
- } else if (this.decodeMode === DecodingMode2.Strict) {
3744
- return 0;
3745
- }
3746
- this.emitCodePoint(replaceCodePoint2(this.result), this.consumed);
3747
- if (this.errors) {
3748
- if (lastCp !== CharCodes3.SEMI) {
3749
- this.errors.missingSemicolonAfterCharacterReference();
3750
- }
3751
- this.errors.validateNumericCharacterReference(this.result);
3752
- }
3753
- return this.consumed;
3754
- }
3755
- /**
3756
- * Parses a named entity.
3757
- *
3758
- * Equivalent to the `Named character reference state` in the HTML spec.
3759
- *
3760
- * @param str The string containing the entity (or a continuation of the entity).
3761
- * @param offset The current offset.
3762
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
3763
- */
3764
- stateNamedEntity(str, offset) {
3765
- const { decodeTree } = this;
3766
- let current = decodeTree[this.treeIndex];
3767
- let valueLength = (current & BinTrieFlags2.VALUE_LENGTH) >> 14;
3768
- for (; offset < str.length; offset++, this.excess++) {
3769
- const char = str.charCodeAt(offset);
3770
- this.treeIndex = determineBranch2(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
3771
- if (this.treeIndex < 0) {
3772
- return this.result === 0 || // If we are parsing an attribute
3773
- this.decodeMode === DecodingMode2.Attribute && // We shouldn't have consumed any characters after the entity,
3774
- (valueLength === 0 || // And there should be no invalid characters.
3775
- isEntityInAttributeInvalidEnd2(char)) ? 0 : this.emitNotTerminatedNamedEntity();
3776
- }
3777
- current = decodeTree[this.treeIndex];
3778
- valueLength = (current & BinTrieFlags2.VALUE_LENGTH) >> 14;
3779
- if (valueLength !== 0) {
3780
- if (char === CharCodes3.SEMI) {
3781
- return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
3782
- }
3783
- if (this.decodeMode !== DecodingMode2.Strict) {
3784
- this.result = this.treeIndex;
3785
- this.consumed += this.excess;
3786
- this.excess = 0;
3787
- }
3788
- }
3789
- }
3790
- return -1;
3791
- }
3792
- /**
3793
- * Emit a named entity that was not terminated with a semicolon.
3794
- *
3795
- * @returns The number of characters consumed.
3796
- */
3797
- emitNotTerminatedNamedEntity() {
3798
- var _a3;
3799
- const { result, decodeTree } = this;
3800
- const valueLength = (decodeTree[result] & BinTrieFlags2.VALUE_LENGTH) >> 14;
3801
- this.emitNamedEntityData(result, valueLength, this.consumed);
3802
- (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.missingSemicolonAfterCharacterReference();
3803
- return this.consumed;
3804
- }
3805
- /**
3806
- * Emit a named entity.
3807
- *
3808
- * @param result The index of the entity in the decode tree.
3809
- * @param valueLength The number of bytes in the entity.
3810
- * @param consumed The number of characters consumed.
3811
- *
3812
- * @returns The number of characters consumed.
3813
- */
3814
- emitNamedEntityData(result, valueLength, consumed) {
3815
- const { decodeTree } = this;
3816
- this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags2.VALUE_LENGTH : decodeTree[result + 1], consumed);
3817
- if (valueLength === 3) {
3818
- this.emitCodePoint(decodeTree[result + 2], consumed);
3819
- }
3820
- return consumed;
3821
- }
3822
- /**
3823
- * Signal to the parser that the end of the input was reached.
3824
- *
3825
- * Remaining data will be emitted and relevant errors will be produced.
3826
- *
3827
- * @returns The number of characters consumed.
3828
- */
3829
- end() {
3830
- var _a3;
3831
- switch (this.state) {
3832
- case EntityDecoderState2.NamedEntity: {
3833
- return this.result !== 0 && (this.decodeMode !== DecodingMode2.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;
3834
- }
3835
- // Otherwise, emit a numeric entity if we have one.
3836
- case EntityDecoderState2.NumericDecimal: {
3837
- return this.emitNumericEntity(0, 2);
3838
- }
3839
- case EntityDecoderState2.NumericHex: {
3840
- return this.emitNumericEntity(0, 3);
3841
- }
3842
- case EntityDecoderState2.NumericStart: {
3843
- (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed);
3844
- return 0;
3845
- }
3846
- case EntityDecoderState2.EntityStart: {
3847
- return 0;
3848
- }
3849
- }
3850
- }
3851
- };
3852
- function getDecoder(decodeTree) {
3853
- let ret = "";
3854
- const decoder = new EntityDecoder2(decodeTree, (str) => ret += fromCodePoint2(str));
3855
- return function decodeWithTrie(str, decodeMode) {
3856
- let lastIndex = 0;
3857
- let offset = 0;
3858
- while ((offset = str.indexOf("&", offset)) >= 0) {
3859
- ret += str.slice(lastIndex, offset);
3860
- decoder.startEntity(decodeMode);
3861
- const len = decoder.write(
3862
- str,
3863
- // Skip the "&"
3864
- offset + 1
3865
- );
3866
- if (len < 0) {
3867
- lastIndex = offset + decoder.end();
3868
- break;
3869
- }
3870
- lastIndex = offset + len;
3871
- offset = len === 0 ? lastIndex + 1 : lastIndex;
3872
- }
3873
- const result = ret + str.slice(lastIndex);
3874
- ret = "";
3875
- return result;
3876
- };
3877
- }
3878
- function determineBranch2(decodeTree, current, nodeIdx, char) {
3879
- const branchCount = (current & BinTrieFlags2.BRANCH_LENGTH) >> 7;
3880
- const jumpOffset = current & BinTrieFlags2.JUMP_TABLE;
3881
- if (branchCount === 0) {
3882
- return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
3883
- }
3884
- if (jumpOffset) {
3885
- const value = char - jumpOffset;
3886
- return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1;
3887
- }
3888
- let lo = nodeIdx;
3889
- let hi = lo + branchCount - 1;
3890
- while (lo <= hi) {
3891
- const mid = lo + hi >>> 1;
3892
- const midVal = decodeTree[mid];
3893
- if (midVal < char) {
3894
- lo = mid + 1;
3895
- } else if (midVal > char) {
3896
- hi = mid - 1;
3897
- } else {
3898
- return decodeTree[mid + branchCount];
3899
- }
3900
- }
3901
- return -1;
3902
- }
3903
- var htmlDecoder = getDecoder(decode_data_html_default);
3904
- var xmlDecoder = getDecoder(decode_data_xml_default);
3905
-
3906
- // node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/encode-html.js
3907
- function restoreDiff(arr) {
3908
- for (let i = 1; i < arr.length; i++) {
3909
- arr[i][0] += arr[i - 1][0] + 1;
3910
- }
3911
- return arr;
3912
- }
3913
- 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;"]]));
3914
-
3915
- // node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/escape.js
3916
- var xmlCodeMap = /* @__PURE__ */ new Map([
3917
- [34, "&quot;"],
3918
- [38, "&amp;"],
3919
- [39, "&apos;"],
3920
- [60, "&lt;"],
3921
- [62, "&gt;"]
3922
- ]);
3923
- var getCodePoint = (
3924
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
3925
- String.prototype.codePointAt != null ? (str, index) => str.codePointAt(index) : (
3926
- // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
3927
- (c, index) => (c.charCodeAt(index) & 64512) === 55296 ? (c.charCodeAt(index) - 55296) * 1024 + c.charCodeAt(index + 1) - 56320 + 65536 : c.charCodeAt(index)
3928
- )
3929
- );
3930
- function getEscaper(regex, map) {
3931
- return function escape2(data) {
3932
- let match;
3933
- let lastIdx = 0;
3934
- let result = "";
3935
- while (match = regex.exec(data)) {
3936
- if (lastIdx !== match.index) {
3937
- result += data.substring(lastIdx, match.index);
3938
- }
3939
- result += map.get(match[0].charCodeAt(0));
3940
- lastIdx = match.index + 1;
3941
- }
3942
- return result + data.substring(lastIdx);
3943
- };
3944
- }
3945
- var escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap);
3946
- var escapeAttribute = getEscaper(/["&\u00A0]/g, /* @__PURE__ */ new Map([
3947
- [34, "&quot;"],
3948
- [38, "&amp;"],
3949
- [160, "&nbsp;"]
3950
- ]));
3951
- var escapeText = getEscaper(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([
3952
- [38, "&amp;"],
3953
- [60, "&lt;"],
3954
- [62, "&gt;"],
3955
- [160, "&nbsp;"]
3956
- ]));
3957
-
3958
- // node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/index.js
3959
- var EntityLevel;
3960
- (function(EntityLevel2) {
3961
- EntityLevel2[EntityLevel2["XML"] = 0] = "XML";
3962
- EntityLevel2[EntityLevel2["HTML"] = 1] = "HTML";
3963
- })(EntityLevel || (EntityLevel = {}));
3964
- var EncodingMode;
3965
- (function(EncodingMode2) {
3966
- EncodingMode2[EncodingMode2["UTF8"] = 0] = "UTF8";
3967
- EncodingMode2[EncodingMode2["ASCII"] = 1] = "ASCII";
3968
- EncodingMode2[EncodingMode2["Extensive"] = 2] = "Extensive";
3969
- EncodingMode2[EncodingMode2["Attribute"] = 3] = "Attribute";
3970
- EncodingMode2[EncodingMode2["Text"] = 4] = "Text";
3971
- })(EncodingMode || (EncodingMode = {}));
3972
-
3973
- // node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/foreignNames.js
3974
- var elementNames = new Map([
3975
- "altGlyph",
3976
- "altGlyphDef",
3977
- "altGlyphItem",
3978
- "animateColor",
3979
- "animateMotion",
3980
- "animateTransform",
3981
- "clipPath",
3982
- "feBlend",
3983
- "feColorMatrix",
3984
- "feComponentTransfer",
3985
- "feComposite",
3986
- "feConvolveMatrix",
3987
- "feDiffuseLighting",
3988
- "feDisplacementMap",
3989
- "feDistantLight",
3990
- "feDropShadow",
3991
- "feFlood",
3992
- "feFuncA",
3993
- "feFuncB",
3994
- "feFuncG",
3995
- "feFuncR",
3996
- "feGaussianBlur",
3997
- "feImage",
3998
- "feMerge",
3999
- "feMergeNode",
4000
- "feMorphology",
4001
- "feOffset",
4002
- "fePointLight",
4003
- "feSpecularLighting",
4004
- "feSpotLight",
4005
- "feTile",
4006
- "feTurbulence",
4007
- "foreignObject",
4008
- "glyphRef",
4009
- "linearGradient",
4010
- "radialGradient",
4011
- "textPath"
4012
- ].map((val) => [val.toLowerCase(), val]));
4013
- var attributeNames = new Map([
4014
- "definitionURL",
4015
- "attributeName",
4016
- "attributeType",
4017
- "baseFrequency",
4018
- "baseProfile",
4019
- "calcMode",
4020
- "clipPathUnits",
4021
- "diffuseConstant",
4022
- "edgeMode",
4023
- "filterUnits",
4024
- "glyphRef",
4025
- "gradientTransform",
4026
- "gradientUnits",
4027
- "kernelMatrix",
4028
- "kernelUnitLength",
4029
- "keyPoints",
4030
- "keySplines",
4031
- "keyTimes",
4032
- "lengthAdjust",
4033
- "limitingConeAngle",
4034
- "markerHeight",
4035
- "markerUnits",
4036
- "markerWidth",
4037
- "maskContentUnits",
4038
- "maskUnits",
4039
- "numOctaves",
4040
- "pathLength",
4041
- "patternContentUnits",
4042
- "patternTransform",
4043
- "patternUnits",
4044
- "pointsAtX",
4045
- "pointsAtY",
4046
- "pointsAtZ",
4047
- "preserveAlpha",
4048
- "preserveAspectRatio",
4049
- "primitiveUnits",
4050
- "refX",
4051
- "refY",
4052
- "repeatCount",
4053
- "repeatDur",
4054
- "requiredExtensions",
4055
- "requiredFeatures",
4056
- "specularConstant",
4057
- "specularExponent",
4058
- "spreadMethod",
4059
- "startOffset",
4060
- "stdDeviation",
4061
- "stitchTiles",
4062
- "surfaceScale",
4063
- "systemLanguage",
4064
- "tableValues",
4065
- "targetX",
4066
- "targetY",
4067
- "textLength",
4068
- "viewBox",
4069
- "viewTarget",
4070
- "xChannelSelector",
4071
- "yChannelSelector",
4072
- "zoomAndPan"
4073
- ].map((val) => [val.toLowerCase(), val]));
4074
-
4075
- // node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/helpers.js
4076
- var DocumentPosition;
4077
- (function(DocumentPosition2) {
4078
- DocumentPosition2[DocumentPosition2["DISCONNECTED"] = 1] = "DISCONNECTED";
4079
- DocumentPosition2[DocumentPosition2["PRECEDING"] = 2] = "PRECEDING";
4080
- DocumentPosition2[DocumentPosition2["FOLLOWING"] = 4] = "FOLLOWING";
4081
- DocumentPosition2[DocumentPosition2["CONTAINS"] = 8] = "CONTAINS";
4082
- DocumentPosition2[DocumentPosition2["CONTAINED_BY"] = 16] = "CONTAINED_BY";
4083
- })(DocumentPosition || (DocumentPosition = {}));
4084
-
4085
- // node_modules/.pnpm/htmlparser2@10.1.0/node_modules/htmlparser2/dist/esm/index.js
3853
+ // node_modules/.pnpm/htmlparser2@12.0.0/node_modules/htmlparser2/dist/index.js
4086
3854
  function parseDocument(data, options) {
4087
3855
  const handler = new DomHandler(void 0, options);
4088
3856
  new Parser(handler, options).end(data);
@@ -4544,10 +4312,12 @@ function toTwine2Archive(story, startName, options) {
4544
4312
  function toTwine2HTML(story, format, startName, options) {
4545
4313
  let template = readFormatSource(format);
4546
4314
  if (template.includes("{{STORY_NAME}}")) {
4547
- template = template.replaceAll("{{STORY_NAME}}", htmlEscape(story.name));
4315
+ const name = htmlEscape(story.name);
4316
+ template = template.replaceAll("{{STORY_NAME}}", () => name);
4548
4317
  }
4549
4318
  if (template.includes("{{STORY_DATA}}")) {
4550
- template = template.replace("{{STORY_DATA}}", getTwine2DataChunk(story, startName, options));
4319
+ const data = getTwine2DataChunk(story, startName, options);
4320
+ template = template.replace("{{STORY_DATA}}", () => data);
4551
4321
  }
4552
4322
  return template;
4553
4323
  }
@@ -4648,10 +4418,11 @@ function toTwine1HTML(story, format, startName) {
4648
4418
  const displayStart = startName === "Start" ? "" : startName;
4649
4419
  template = template.replace('"VERSION"', `Compiled with ${CREATOR_NAME2}, ${VERSION}`);
4650
4420
  template = template.replace('"TIME"', `Built on ${(/* @__PURE__ */ new Date()).toUTCString()}`);
4651
- template = template.replace('"START_AT"', `"${jsStringEscape(displayStart)}"`);
4421
+ const startAtValue = `"${jsStringEscape(displayStart)}"`;
4422
+ template = template.replace('"START_AT"', () => startAtValue);
4652
4423
  template = template.replace('"STORY_SIZE"', `"${count}"`);
4653
4424
  if (template.includes('"STORY"')) {
4654
- template = template.replace('"STORY"', data);
4425
+ template = template.replace('"STORY"', () => data);
4655
4426
  } else {
4656
4427
  let footer;
4657
4428
  try {
@@ -4687,7 +4458,7 @@ function tryReplaceComponent(template, placeholder, componentPath, required) {
4687
4458
  try {
4688
4459
  let content = (0, import_node_fs5.readFileSync)(componentPath, "utf-8");
4689
4460
  if (content.charCodeAt(0) === 65279) content = content.slice(1);
4690
- return template.replace(placeholder, content);
4461
+ return template.replace(placeholder, () => content);
4691
4462
  } catch (e) {
4692
4463
  if (required) {
4693
4464
  throw new Error(
@@ -4775,7 +4546,8 @@ function modifyHead(html, modulePaths, headFile, diagnostics) {
4775
4546
  }
4776
4547
  if (parts.length > 0) {
4777
4548
  parts.push("</head>");
4778
- return html.replace("</head>", parts.join("\n"));
4549
+ const replacement = parts.join("\n");
4550
+ return html.replace("</head>", () => replacement);
4779
4551
  }
4780
4552
  return html;
4781
4553
  }