@xterm/addon-ligatures 0.11.0-beta.284 → 0.11.0-beta.286
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.
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../node_modules/opentype.js/dist/opentype.js", "../src/fontLigatures/index.ts", "../../../node_modules/lru-cache/src/diagnostics-channel-node.ts", "../../../node_modules/lru-cache/src/perf.ts", "../../../node_modules/lru-cache/src/index.ts", "../src/fontLigatures/merge.ts", "../src/fontLigatures/walk.ts", "../src/fontLigatures/mergeRange.ts", "../src/fontLigatures/processors/coverage.ts", "../src/fontLigatures/processors/substitution.ts", "../src/fontLigatures/processors/helper.ts", "../src/fontLigatures/processors/6-1.ts", "../src/fontLigatures/processors/classDef.ts", "../src/fontLigatures/processors/6-2.ts", "../src/fontLigatures/processors/6-3.ts", "../src/fontLigatures/processors/8-1.ts", "../src/fontLigatures/flatten.ts", "../src/parse.ts", "../src/font.ts", "../src/index.ts", "../src/LigaturesAddon.ts"],
|
|
4
4
|
"sourcesContent": ["var opentype = (() => {\n var __defProp = Object.defineProperty;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n // src/opentype.mjs\n var opentype_exports = {};\n __export(opentype_exports, {\n BoundingBox: () => bbox_default,\n Font: () => font_default,\n Glyph: () => glyph_default,\n Path: () => path_default,\n _parse: () => parse_default,\n load: () => load,\n loadSync: () => loadSync,\n parse: () => parseBuffer\n });\n\n // src/tiny-inflate@1.0.3.esm.mjs\n var TINF_OK = 0;\n var TINF_DATA_ERROR = -3;\n function Tree() {\n this.table = new Uint16Array(16);\n this.trans = new Uint16Array(288);\n }\n function Data(source, dest) {\n this.source = source;\n this.sourceIndex = 0;\n this.tag = 0;\n this.bitcount = 0;\n this.dest = dest;\n this.destLen = 0;\n this.ltree = new Tree();\n this.dtree = new Tree();\n }\n var sltree = new Tree();\n var sdtree = new Tree();\n var length_bits = new Uint8Array(30);\n var length_base = new Uint16Array(30);\n var dist_bits = new Uint8Array(30);\n var dist_base = new Uint16Array(30);\n var clcidx = new Uint8Array([\n 16,\n 17,\n 18,\n 0,\n 8,\n 7,\n 9,\n 6,\n 10,\n 5,\n 11,\n 4,\n 12,\n 3,\n 13,\n 2,\n 14,\n 1,\n 15\n ]);\n var code_tree = new Tree();\n var lengths = new Uint8Array(288 + 32);\n function tinf_build_bits_base(bits, base, delta, first) {\n var i, sum;\n for (i = 0; i < delta; ++i) bits[i] = 0;\n for (i = 0; i < 30 - delta; ++i) bits[i + delta] = i / delta | 0;\n for (sum = first, i = 0; i < 30; ++i) {\n base[i] = sum;\n sum += 1 << bits[i];\n }\n }\n function tinf_build_fixed_trees(lt, dt) {\n var i;\n for (i = 0; i < 7; ++i) lt.table[i] = 0;\n lt.table[7] = 24;\n lt.table[8] = 152;\n lt.table[9] = 112;\n for (i = 0; i < 24; ++i) lt.trans[i] = 256 + i;\n for (i = 0; i < 144; ++i) lt.trans[24 + i] = i;\n for (i = 0; i < 8; ++i) lt.trans[24 + 144 + i] = 280 + i;\n for (i = 0; i < 112; ++i) lt.trans[24 + 144 + 8 + i] = 144 + i;\n for (i = 0; i < 5; ++i) dt.table[i] = 0;\n dt.table[5] = 32;\n for (i = 0; i < 32; ++i) dt.trans[i] = i;\n }\n var offs = new Uint16Array(16);\n function tinf_build_tree(t, lengths2, off, num) {\n var i, sum;\n for (i = 0; i < 16; ++i) t.table[i] = 0;\n for (i = 0; i < num; ++i) t.table[lengths2[off + i]]++;\n t.table[0] = 0;\n for (sum = 0, i = 0; i < 16; ++i) {\n offs[i] = sum;\n sum += t.table[i];\n }\n for (i = 0; i < num; ++i) {\n if (lengths2[off + i]) t.trans[offs[lengths2[off + i]]++] = i;\n }\n }\n function tinf_getbit(d) {\n if (!d.bitcount--) {\n d.tag = d.source[d.sourceIndex++];\n d.bitcount = 7;\n }\n var bit = d.tag & 1;\n d.tag >>>= 1;\n return bit;\n }\n function tinf_read_bits(d, num, base) {\n if (!num)\n return base;\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n var val = d.tag & 65535 >>> 16 - num;\n d.tag >>>= num;\n d.bitcount -= num;\n return val + base;\n }\n function tinf_decode_symbol(d, t) {\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n var sum = 0, cur = 0, len = 0;\n var tag = d.tag;\n do {\n cur = 2 * cur + (tag & 1);\n tag >>>= 1;\n ++len;\n sum += t.table[len];\n cur -= t.table[len];\n } while (cur >= 0);\n d.tag = tag;\n d.bitcount -= len;\n return t.trans[sum + cur];\n }\n function tinf_decode_trees(d, lt, dt) {\n var hlit, hdist, hclen;\n var i, num, length;\n hlit = tinf_read_bits(d, 5, 257);\n hdist = tinf_read_bits(d, 5, 1);\n hclen = tinf_read_bits(d, 4, 4);\n for (i = 0; i < 19; ++i) lengths[i] = 0;\n for (i = 0; i < hclen; ++i) {\n var clen = tinf_read_bits(d, 3, 0);\n lengths[clcidx[i]] = clen;\n }\n tinf_build_tree(code_tree, lengths, 0, 19);\n for (num = 0; num < hlit + hdist; ) {\n var sym = tinf_decode_symbol(d, code_tree);\n switch (sym) {\n case 16:\n var prev = lengths[num - 1];\n for (length = tinf_read_bits(d, 2, 3); length; --length) {\n lengths[num++] = prev;\n }\n break;\n case 17:\n for (length = tinf_read_bits(d, 3, 3); length; --length) {\n lengths[num++] = 0;\n }\n break;\n case 18:\n for (length = tinf_read_bits(d, 7, 11); length; --length) {\n lengths[num++] = 0;\n }\n break;\n default:\n lengths[num++] = sym;\n break;\n }\n }\n tinf_build_tree(lt, lengths, 0, hlit);\n tinf_build_tree(dt, lengths, hlit, hdist);\n }\n function tinf_inflate_block_data(d, lt, dt) {\n for (; ; ) {\n var sym = tinf_decode_symbol(d, lt);\n if (sym === 256) {\n return TINF_OK;\n }\n if (sym < 256) {\n d.dest[d.destLen++] = sym;\n } else {\n var length, dist, offs2;\n var i;\n sym -= 257;\n length = tinf_read_bits(d, length_bits[sym], length_base[sym]);\n dist = tinf_decode_symbol(d, dt);\n offs2 = d.destLen - tinf_read_bits(d, dist_bits[dist], dist_base[dist]);\n for (i = offs2; i < offs2 + length; ++i) {\n d.dest[d.destLen++] = d.dest[i];\n }\n }\n }\n }\n function tinf_inflate_uncompressed_block(d) {\n var length, invlength;\n var i;\n while (d.bitcount > 8) {\n d.sourceIndex--;\n d.bitcount -= 8;\n }\n length = d.source[d.sourceIndex + 1];\n length = 256 * length + d.source[d.sourceIndex];\n invlength = d.source[d.sourceIndex + 3];\n invlength = 256 * invlength + d.source[d.sourceIndex + 2];\n if (length !== (~invlength & 65535))\n return TINF_DATA_ERROR;\n d.sourceIndex += 4;\n for (i = length; i; --i)\n d.dest[d.destLen++] = d.source[d.sourceIndex++];\n d.bitcount = 0;\n return TINF_OK;\n }\n function tinf_uncompress(source, dest) {\n var d = new Data(source, dest);\n var bfinal, btype, res;\n do {\n bfinal = tinf_getbit(d);\n btype = tinf_read_bits(d, 2, 0);\n switch (btype) {\n case 0:\n res = tinf_inflate_uncompressed_block(d);\n break;\n case 1:\n res = tinf_inflate_block_data(d, sltree, sdtree);\n break;\n case 2:\n tinf_decode_trees(d, d.ltree, d.dtree);\n res = tinf_inflate_block_data(d, d.ltree, d.dtree);\n break;\n default:\n res = TINF_DATA_ERROR;\n }\n if (res !== TINF_OK)\n throw new Error(\"Data error\");\n } while (!bfinal);\n if (d.destLen < d.dest.length) {\n if (typeof d.dest.slice === \"function\")\n return d.dest.slice(0, d.destLen);\n else\n return d.dest.subarray(0, d.destLen);\n }\n return d.dest;\n }\n tinf_build_fixed_trees(sltree, sdtree);\n tinf_build_bits_base(length_bits, length_base, 4, 3);\n tinf_build_bits_base(dist_bits, dist_base, 2, 1);\n length_bits[28] = 0;\n length_base[28] = 258;\n\n // src/bbox.mjs\n function derive(v0, v1, v2, v3, t) {\n return Math.pow(1 - t, 3) * v0 + 3 * Math.pow(1 - t, 2) * t * v1 + 3 * (1 - t) * Math.pow(t, 2) * v2 + Math.pow(t, 3) * v3;\n }\n function BoundingBox() {\n this.x1 = Number.NaN;\n this.y1 = Number.NaN;\n this.x2 = Number.NaN;\n this.y2 = Number.NaN;\n }\n BoundingBox.prototype.isEmpty = function() {\n return isNaN(this.x1) || isNaN(this.y1) || isNaN(this.x2) || isNaN(this.y2);\n };\n BoundingBox.prototype.addPoint = function(x, y) {\n if (typeof x === \"number\") {\n if (isNaN(this.x1) || isNaN(this.x2)) {\n this.x1 = x;\n this.x2 = x;\n }\n if (x < this.x1) {\n this.x1 = x;\n }\n if (x > this.x2) {\n this.x2 = x;\n }\n }\n if (typeof y === \"number\") {\n if (isNaN(this.y1) || isNaN(this.y2)) {\n this.y1 = y;\n this.y2 = y;\n }\n if (y < this.y1) {\n this.y1 = y;\n }\n if (y > this.y2) {\n this.y2 = y;\n }\n }\n };\n BoundingBox.prototype.addX = function(x) {\n this.addPoint(x, null);\n };\n BoundingBox.prototype.addY = function(y) {\n this.addPoint(null, y);\n };\n BoundingBox.prototype.addBezier = function(x0, y0, x1, y1, x2, y2, x, y) {\n const p0 = [x0, y0];\n const p1 = [x1, y1];\n const p2 = [x2, y2];\n const p3 = [x, y];\n this.addPoint(x0, y0);\n this.addPoint(x, y);\n for (let i = 0; i <= 1; i++) {\n const b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n const a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n const c = 3 * p1[i] - 3 * p0[i];\n if (a === 0) {\n if (b === 0) continue;\n const t = -c / b;\n if (0 < t && t < 1) {\n if (i === 0) this.addX(derive(p0[i], p1[i], p2[i], p3[i], t));\n if (i === 1) this.addY(derive(p0[i], p1[i], p2[i], p3[i], t));\n }\n continue;\n }\n const b2ac = Math.pow(b, 2) - 4 * c * a;\n if (b2ac < 0) continue;\n const t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n if (0 < t1 && t1 < 1) {\n if (i === 0) this.addX(derive(p0[i], p1[i], p2[i], p3[i], t1));\n if (i === 1) this.addY(derive(p0[i], p1[i], p2[i], p3[i], t1));\n }\n const t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n if (0 < t2 && t2 < 1) {\n if (i === 0) this.addX(derive(p0[i], p1[i], p2[i], p3[i], t2));\n if (i === 1) this.addY(derive(p0[i], p1[i], p2[i], p3[i], t2));\n }\n }\n };\n BoundingBox.prototype.addQuad = function(x0, y0, x1, y1, x, y) {\n const cp1x = x0 + 2 / 3 * (x1 - x0);\n const cp1y = y0 + 2 / 3 * (y1 - y0);\n const cp2x = cp1x + 1 / 3 * (x - x0);\n const cp2y = cp1y + 1 / 3 * (y - y0);\n this.addBezier(x0, y0, cp1x, cp1y, cp2x, cp2y, x, y);\n };\n var bbox_default = BoundingBox;\n\n // src/path.mjs\n function Path() {\n this.commands = [];\n this.fill = \"black\";\n this.stroke = null;\n this.strokeWidth = 1;\n }\n var decimalRoundingCache = {};\n function roundDecimal(float, places) {\n const integerPart = Math.floor(float);\n const decimalPart = float - integerPart;\n if (!decimalRoundingCache[places]) {\n decimalRoundingCache[places] = {};\n }\n if (decimalRoundingCache[places][decimalPart] !== void 0) {\n const roundedDecimalPart2 = decimalRoundingCache[places][decimalPart];\n return integerPart + roundedDecimalPart2;\n }\n const roundedDecimalPart = +(Math.round(decimalPart + \"e+\" + places) + \"e-\" + places);\n decimalRoundingCache[places][decimalPart] = roundedDecimalPart;\n return integerPart + roundedDecimalPart;\n }\n function optimizeCommands(commands) {\n let subpaths = [[]];\n let startX = 0, startY = 0;\n for (let i = 0; i < commands.length; i += 1) {\n const subpath = subpaths[subpaths.length - 1];\n const cmd = commands[i];\n const firstCommand = subpath[0];\n const secondCommand = subpath[1];\n const previousCommand = subpath[subpath.length - 1];\n const nextCommand = commands[i + 1];\n subpath.push(cmd);\n if (cmd.type === \"M\") {\n startX = cmd.x;\n startY = cmd.y;\n } else if (cmd.type === \"L\" && (!nextCommand || nextCommand.type === \"Z\")) {\n if (!(Math.abs(cmd.x - startX) > 1 || Math.abs(cmd.y - startY) > 1)) {\n subpath.pop();\n }\n } else if (cmd.type === \"L\" && previousCommand && previousCommand.x === cmd.x && previousCommand.y === cmd.y) {\n subpath.pop();\n } else if (cmd.type === \"Z\") {\n if (firstCommand && secondCommand && previousCommand && firstCommand.type === \"M\" && secondCommand.type === \"L\" && previousCommand.type === \"L\" && previousCommand.x === firstCommand.x && previousCommand.y === firstCommand.y) {\n subpath.shift();\n subpath[0].type = \"M\";\n }\n if (i + 1 < commands.length) {\n subpaths.push([]);\n }\n }\n }\n commands = [].concat.apply([], subpaths);\n return commands;\n }\n function createSVGParsingOptions(options) {\n const defaultOptions = {\n decimalPlaces: 2,\n optimize: true,\n flipY: true,\n flipYBase: void 0,\n scale: 1,\n x: 0,\n y: 0\n };\n const newOptions = Object.assign({}, defaultOptions, options);\n return newOptions;\n }\n function createSVGOutputOptions(options) {\n if (parseInt(options) === options) {\n options = { decimalPlaces: options, flipY: false };\n }\n const defaultOptions = {\n decimalPlaces: 2,\n optimize: true,\n flipY: true,\n flipYBase: void 0\n };\n const newOptions = Object.assign({}, defaultOptions, options);\n return newOptions;\n }\n Path.prototype.fromSVG = function(pathData, options = {}) {\n if (typeof SVGPathElement !== \"undefined\" && pathData instanceof SVGPathElement) {\n pathData = pathData.getAttribute(\"d\");\n }\n options = createSVGParsingOptions(options);\n this.commands = [];\n const number = \"0123456789\";\n const supportedCommands = \"MmLlQqCcZzHhVv\";\n const unsupportedCommands = \"SsTtAa\";\n const sign = \"-+\";\n let command = {};\n let buffer = [\"\"];\n let isUnexpected = false;\n function parseBuffer2(buffer2) {\n return buffer2.filter((b) => b.length).map((b) => {\n let float = parseFloat(b);\n if (options.decimalPlaces || options.decimalPlaces === 0) {\n float = roundDecimal(float, options.decimalPlaces);\n }\n return float;\n });\n }\n function makeRelative(buffer2) {\n if (!this.commands.length) {\n return buffer2;\n }\n const lastCommand = this.commands[this.commands.length - 1];\n for (let i = 0; i < buffer2.length; i++) {\n buffer2[i] += lastCommand[i & 1 ? \"y\" : \"x\"];\n }\n return buffer2;\n }\n function applyCommand() {\n if (command.type === void 0) {\n return;\n }\n const commandType = command.type.toUpperCase();\n const relative = commandType !== \"Z\" && command.type.toUpperCase() !== command.type;\n let parsedBuffer = parseBuffer2(buffer);\n buffer = [\"\"];\n if (!parsedBuffer.length && commandType !== \"Z\") {\n return;\n }\n if (relative && commandType !== \"H\" && commandType !== \"V\") {\n parsedBuffer = makeRelative.apply(this, [parsedBuffer]);\n }\n const currentX = this.commands.length ? this.commands[this.commands.length - 1].x || 0 : 0;\n const currentY = this.commands.length ? this.commands[this.commands.length - 1].y || 0 : 0;\n switch (commandType) {\n case \"M\":\n this.moveTo(...parsedBuffer);\n break;\n case \"L\":\n this.lineTo(...parsedBuffer);\n break;\n case \"V\":\n for (let i = 0; i < parsedBuffer.length; i++) {\n let offset = 0;\n if (relative) {\n offset = this.commands.length ? this.commands[this.commands.length - 1].y || 0 : 0;\n }\n this.lineTo(currentX, parsedBuffer[i] + offset);\n }\n break;\n case \"H\":\n for (let i = 0; i < parsedBuffer.length; i++) {\n let offset = 0;\n if (relative) {\n offset = this.commands.length ? this.commands[this.commands.length - 1].x || 0 : 0;\n }\n this.lineTo(parsedBuffer[i] + offset, currentY);\n }\n break;\n case \"C\":\n this.bezierCurveTo(...parsedBuffer);\n break;\n case \"Q\":\n this.quadraticCurveTo(...parsedBuffer);\n break;\n case \"Z\":\n if (this.commands.length < 1 || this.commands[this.commands.length - 1].type !== \"Z\") {\n this.close();\n }\n break;\n }\n if (this.commands.length) {\n for (const prop in this.commands[this.commands.length - 1]) {\n if (this.commands[this.commands.length - 1][prop] === void 0) {\n this.commands[this.commands.length - 1][prop] = 0;\n }\n }\n }\n }\n for (let i = 0; i < pathData.length; i++) {\n const token = pathData.charAt(i);\n const lastBuffer = buffer[buffer.length - 1];\n if (number.indexOf(token) > -1) {\n buffer[buffer.length - 1] += token;\n } else if (sign.indexOf(token) > -1) {\n if (!command.type && !this.commands.length) {\n command.type = \"L\";\n }\n if (token === \"-\") {\n if (!command.type || lastBuffer.indexOf(\"-\") > 0) {\n isUnexpected = true;\n } else if (lastBuffer.length) {\n buffer.push(\"-\");\n } else {\n buffer[buffer.length - 1] = token;\n }\n } else {\n if (!command.type || lastBuffer.length > 0) {\n isUnexpected = true;\n } else {\n continue;\n }\n }\n } else if (supportedCommands.indexOf(token) > -1) {\n if (command.type) {\n applyCommand.apply(this);\n command = { type: token };\n } else {\n command.type = token;\n }\n } else if (unsupportedCommands.indexOf(token) > -1) {\n throw new Error(\"Unsupported path command: \" + token + \". Currently supported commands are \" + supportedCommands.split(\"\").join(\", \") + \".\");\n } else if (\" ,\t\\n\\r\\f\\v\".indexOf(token) > -1) {\n buffer.push(\"\");\n } else if (token === \".\") {\n if (!command.type || lastBuffer.indexOf(token) > -1) {\n isUnexpected = true;\n } else {\n buffer[buffer.length - 1] += token;\n }\n } else {\n isUnexpected = true;\n }\n if (isUnexpected) {\n throw new Error(\"Unexpected character: \" + token + \" at offset \" + i);\n }\n }\n applyCommand.apply(this);\n if (options.optimize) {\n this.commands = optimizeCommands(this.commands);\n }\n const flipY = options.flipY;\n let flipYBase = options.flipYBase;\n if (flipY === true && options.flipYBase === void 0) {\n const boundingBox = this.getBoundingBox();\n flipYBase = boundingBox.y1 + boundingBox.y2;\n }\n for (const i in this.commands) {\n const cmd = this.commands[i];\n for (const prop in cmd) {\n if ([\"x\", \"x1\", \"x2\"].includes(prop)) {\n this.commands[i][prop] = options.x + cmd[prop] * options.scale;\n } else if ([\"y\", \"y1\", \"y2\"].includes(prop)) {\n this.commands[i][prop] = options.y + (flipY ? flipYBase - cmd[prop] : cmd[prop]) * options.scale;\n }\n }\n }\n return this;\n };\n Path.fromSVG = function(path, options) {\n const newPath = new Path();\n return newPath.fromSVG(path, options);\n };\n Path.prototype.moveTo = function(x, y) {\n this.commands.push({\n type: \"M\",\n x,\n y\n });\n };\n Path.prototype.lineTo = function(x, y) {\n this.commands.push({\n type: \"L\",\n x,\n y\n });\n };\n Path.prototype.curveTo = Path.prototype.bezierCurveTo = function(x1, y1, x2, y2, x, y) {\n this.commands.push({\n type: \"C\",\n x1,\n y1,\n x2,\n y2,\n x,\n y\n });\n };\n Path.prototype.quadTo = Path.prototype.quadraticCurveTo = function(x1, y1, x, y) {\n this.commands.push({\n type: \"Q\",\n x1,\n y1,\n x,\n y\n });\n };\n Path.prototype.close = Path.prototype.closePath = function() {\n this.commands.push({\n type: \"Z\"\n });\n };\n Path.prototype.extend = function(pathOrCommands) {\n if (pathOrCommands.commands) {\n pathOrCommands = pathOrCommands.commands;\n } else if (pathOrCommands instanceof bbox_default) {\n const box = pathOrCommands;\n this.moveTo(box.x1, box.y1);\n this.lineTo(box.x2, box.y1);\n this.lineTo(box.x2, box.y2);\n this.lineTo(box.x1, box.y2);\n this.close();\n return;\n }\n Array.prototype.push.apply(this.commands, pathOrCommands);\n };\n Path.prototype.getBoundingBox = function() {\n const box = new bbox_default();\n let startX = 0;\n let startY = 0;\n let prevX = 0;\n let prevY = 0;\n for (let i = 0; i < this.commands.length; i++) {\n const cmd = this.commands[i];\n switch (cmd.type) {\n case \"M\":\n box.addPoint(cmd.x, cmd.y);\n startX = prevX = cmd.x;\n startY = prevY = cmd.y;\n break;\n case \"L\":\n box.addPoint(cmd.x, cmd.y);\n prevX = cmd.x;\n prevY = cmd.y;\n break;\n case \"Q\":\n box.addQuad(prevX, prevY, cmd.x1, cmd.y1, cmd.x, cmd.y);\n prevX = cmd.x;\n prevY = cmd.y;\n break;\n case \"C\":\n box.addBezier(prevX, prevY, cmd.x1, cmd.y1, cmd.x2, cmd.y2, cmd.x, cmd.y);\n prevX = cmd.x;\n prevY = cmd.y;\n break;\n case \"Z\":\n prevX = startX;\n prevY = startY;\n break;\n default:\n throw new Error(\"Unexpected path command \" + cmd.type);\n }\n }\n if (box.isEmpty()) {\n box.addPoint(0, 0);\n }\n return box;\n };\n Path.prototype.draw = function(ctx) {\n const layers = this._layers;\n if (layers && layers.length) {\n for (let l = 0; l < layers.length; l++) {\n this.draw.call(layers[l], ctx);\n }\n return;\n }\n const image = this._image;\n if (image) {\n ctx.drawImage(image.image, image.x, image.y, image.width, image.height);\n return;\n }\n ctx.beginPath();\n for (let i = 0; i < this.commands.length; i += 1) {\n const cmd = this.commands[i];\n if (cmd.type === \"M\") {\n ctx.moveTo(cmd.x, cmd.y);\n } else if (cmd.type === \"L\") {\n ctx.lineTo(cmd.x, cmd.y);\n } else if (cmd.type === \"C\") {\n ctx.bezierCurveTo(cmd.x1, cmd.y1, cmd.x2, cmd.y2, cmd.x, cmd.y);\n } else if (cmd.type === \"Q\") {\n ctx.quadraticCurveTo(cmd.x1, cmd.y1, cmd.x, cmd.y);\n } else if (cmd.type === \"Z\" && this.stroke && this.strokeWidth) {\n ctx.closePath();\n }\n }\n if (this.fill) {\n ctx.fillStyle = this.fill;\n ctx.fill();\n }\n if (this.stroke) {\n ctx.strokeStyle = this.stroke;\n ctx.lineWidth = this.strokeWidth;\n ctx.stroke();\n }\n };\n Path.prototype.toPathData = function(options) {\n options = createSVGOutputOptions(options);\n function floatToString(v) {\n const rounded = roundDecimal(v, options.decimalPlaces);\n if (Math.round(v) === rounded) {\n return \"\" + rounded;\n } else {\n return rounded.toFixed(options.decimalPlaces);\n }\n }\n function packValues() {\n let s = \"\";\n for (let i = 0; i < arguments.length; i += 1) {\n const v = arguments[i];\n if (v >= 0 && i > 0) {\n s += \" \";\n }\n s += floatToString(v);\n }\n return s;\n }\n let commandsCopy = this.commands;\n if (options.optimize) {\n commandsCopy = JSON.parse(JSON.stringify(this.commands));\n commandsCopy = optimizeCommands(commandsCopy);\n }\n const flipY = options.flipY;\n let flipYBase = options.flipYBase;\n if (flipY === true && flipYBase === void 0) {\n const tempPath = new Path();\n tempPath.extend(commandsCopy);\n const boundingBox = tempPath.getBoundingBox();\n flipYBase = boundingBox.y1 + boundingBox.y2;\n }\n let d = \"\";\n for (let i = 0; i < commandsCopy.length; i += 1) {\n const cmd = commandsCopy[i];\n if (cmd.type === \"M\") {\n d += \"M\" + packValues(\n cmd.x,\n flipY ? flipYBase - cmd.y : cmd.y\n );\n } else if (cmd.type === \"L\") {\n d += \"L\" + packValues(\n cmd.x,\n flipY ? flipYBase - cmd.y : cmd.y\n );\n } else if (cmd.type === \"C\") {\n d += \"C\" + packValues(\n cmd.x1,\n flipY ? flipYBase - cmd.y1 : cmd.y1,\n cmd.x2,\n flipY ? flipYBase - cmd.y2 : cmd.y2,\n cmd.x,\n flipY ? flipYBase - cmd.y : cmd.y\n );\n } else if (cmd.type === \"Q\") {\n d += \"Q\" + packValues(\n cmd.x1,\n flipY ? flipYBase - cmd.y1 : cmd.y1,\n cmd.x,\n flipY ? flipYBase - cmd.y : cmd.y\n );\n } else if (cmd.type === \"Z\") {\n d += \"Z\";\n }\n }\n return d;\n };\n Path.prototype.toSVG = function(options, pathData) {\n if (this._layers && this._layers.length) {\n console.warn(\"toSVG() does not support colr font layers yet\");\n }\n if (this._image) {\n console.warn(\"toSVG() does not support SVG glyphs yet\");\n }\n if (!pathData) {\n pathData = this.toPathData(options);\n }\n let svg = '<path d=\"';\n svg += pathData;\n svg += '\"';\n if (this.fill !== void 0 && this.fill !== \"black\") {\n if (this.fill === null) {\n svg += ' fill=\"none\"';\n } else {\n svg += ' fill=\"' + this.fill + '\"';\n }\n }\n if (this.stroke) {\n svg += ' stroke=\"' + this.stroke + '\" stroke-width=\"' + this.strokeWidth + '\"';\n }\n svg += \"/>\";\n return svg;\n };\n Path.prototype.toDOMElement = function(options, pathData) {\n if (this._layers && this._layers.length) {\n console.warn(\"toDOMElement() does not support colr font layers yet\");\n }\n if (!pathData) {\n pathData = this.toPathData(options);\n }\n const newPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n newPath.setAttribute(\"d\", pathData);\n if (this.fill !== void 0 && this.fill !== \"black\") {\n if (this.fill === null) {\n newPath.setAttribute(\"fill\", \"none\");\n } else {\n newPath.setAttribute(\"fill\", this.fill);\n }\n }\n if (this.stroke) {\n newPath.setAttribute(\"stroke\", this.stroke);\n newPath.setAttribute(\"stroke-width\", this.strokeWidth);\n }\n return newPath;\n };\n var path_default = Path;\n\n // src/check.mjs\n function fail(message) {\n throw new Error(message);\n }\n function argument(predicate, message) {\n if (!predicate) {\n fail(message);\n }\n }\n var check_default = { fail, argument, assert: argument };\n\n // src/types.mjs\n var LIMIT16 = 32768;\n var LIMIT32 = 2147483648;\n var MIN_16_16 = -(1 << 15);\n var MAX_16_16 = (1 << 15) - 1 + 1 / (1 << 16);\n var decode = {};\n var encode = {};\n var sizeOf = {};\n function constant(v) {\n return function() {\n return v;\n };\n }\n encode.BYTE = function(v) {\n check_default.argument(v >= 0 && v <= 255, \"Byte value should be between 0 and 255.\");\n return [v];\n };\n sizeOf.BYTE = constant(1);\n encode.CHAR = function(v) {\n return [v.charCodeAt(0)];\n };\n sizeOf.CHAR = constant(1);\n encode.CHARARRAY = function(v) {\n if (v === null || typeof v === \"undefined\") {\n v = \"\";\n console.warn(\"CHARARRAY with undefined or null value encountered and treated as an empty string. This is probably caused by a missing glyph name.\");\n }\n const b = [];\n for (let i = 0; i < v.length; i += 1) {\n b[i] = v.charCodeAt(i);\n }\n return b;\n };\n sizeOf.CHARARRAY = function(v) {\n if (typeof v === \"undefined\") {\n return 0;\n }\n return v.length;\n };\n encode.USHORT = function(v) {\n return [v >> 8 & 255, v & 255];\n };\n sizeOf.USHORT = constant(2);\n encode.SHORT = function(v) {\n if (v >= LIMIT16) {\n v = -(2 * LIMIT16 - v);\n }\n return [v >> 8 & 255, v & 255];\n };\n sizeOf.SHORT = constant(2);\n encode.UINT24 = function(v) {\n return [v >> 16 & 255, v >> 8 & 255, v & 255];\n };\n sizeOf.UINT24 = constant(3);\n encode.ULONG = function(v) {\n return [v >> 24 & 255, v >> 16 & 255, v >> 8 & 255, v & 255];\n };\n sizeOf.ULONG = constant(4);\n encode.LONG = function(v) {\n if (v >= LIMIT32) {\n v = -(2 * LIMIT32 - v);\n }\n return [v >> 24 & 255, v >> 16 & 255, v >> 8 & 255, v & 255];\n };\n sizeOf.LONG = constant(4);\n encode.FLOAT = function(v) {\n if (v > MAX_16_16 || v < MIN_16_16) {\n throw new Error(`Value ${v} is outside the range of representable values in 16.16 format`);\n }\n const fixedValue = Math.round(v * (1 << 16)) << 0;\n return encode.ULONG(fixedValue);\n };\n sizeOf.FLOAT = sizeOf.ULONG;\n encode.FIXED = encode.ULONG;\n sizeOf.FIXED = sizeOf.ULONG;\n encode.FWORD = encode.SHORT;\n sizeOf.FWORD = sizeOf.SHORT;\n encode.UFWORD = encode.USHORT;\n sizeOf.UFWORD = sizeOf.USHORT;\n encode.F2DOT14 = function(v) {\n return encode.USHORT(v * 16384);\n };\n sizeOf.F2DOT14 = sizeOf.USHORT;\n encode.LONGDATETIME = function(v) {\n return [0, 0, 0, 0, v >> 24 & 255, v >> 16 & 255, v >> 8 & 255, v & 255];\n };\n sizeOf.LONGDATETIME = constant(8);\n encode.TAG = function(v) {\n check_default.argument(v.length === 4, \"Tag should be exactly 4 ASCII characters.\");\n return [\n v.charCodeAt(0),\n v.charCodeAt(1),\n v.charCodeAt(2),\n v.charCodeAt(3)\n ];\n };\n sizeOf.TAG = constant(4);\n encode.Card8 = encode.BYTE;\n sizeOf.Card8 = sizeOf.BYTE;\n encode.Card16 = encode.USHORT;\n sizeOf.Card16 = sizeOf.USHORT;\n encode.OffSize = encode.BYTE;\n sizeOf.OffSize = sizeOf.BYTE;\n encode.SID = encode.USHORT;\n sizeOf.SID = sizeOf.USHORT;\n encode.NUMBER = function(v) {\n if (v >= -107 && v <= 107) {\n return [v + 139];\n } else if (v >= 108 && v <= 1131) {\n v = v - 108;\n return [(v >> 8) + 247, v & 255];\n } else if (v >= -1131 && v <= -108) {\n v = -v - 108;\n return [(v >> 8) + 251, v & 255];\n } else if (v >= -32768 && v <= 32767) {\n return encode.NUMBER16(v);\n } else {\n return encode.NUMBER32(v);\n }\n };\n sizeOf.NUMBER = function(v) {\n return encode.NUMBER(v).length;\n };\n encode.NUMBER16 = function(v) {\n return [28, v >> 8 & 255, v & 255];\n };\n sizeOf.NUMBER16 = constant(3);\n encode.NUMBER32 = function(v) {\n return [29, v >> 24 & 255, v >> 16 & 255, v >> 8 & 255, v & 255];\n };\n sizeOf.NUMBER32 = constant(5);\n encode.REAL = function(v) {\n let value = v.toString();\n const m = /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/.exec(value);\n if (m) {\n const epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n value = (Math.round(v * epsilon) / epsilon).toString();\n }\n let nibbles = \"\";\n for (let i = 0, ii = value.length; i < ii; i += 1) {\n const c = value[i];\n if (c === \"e\") {\n nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n } else if (c === \".\") {\n nibbles += \"a\";\n } else if (c === \"-\") {\n nibbles += \"e\";\n } else {\n nibbles += c;\n }\n }\n nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n const out = [30];\n for (let i = 0, ii = nibbles.length; i < ii; i += 2) {\n out.push(parseInt(nibbles.substr(i, 2), 16));\n }\n return out;\n };\n sizeOf.REAL = function(v) {\n return encode.REAL(v).length;\n };\n encode.NAME = encode.CHARARRAY;\n sizeOf.NAME = sizeOf.CHARARRAY;\n encode.STRING = encode.CHARARRAY;\n sizeOf.STRING = sizeOf.CHARARRAY;\n decode.UTF8 = function(data, offset, numBytes) {\n const codePoints = [];\n const numChars = numBytes;\n for (let j = 0; j < numChars; j++, offset += 1) {\n codePoints[j] = data.getUint8(offset);\n }\n return String.fromCharCode.apply(null, codePoints);\n };\n decode.UTF16 = function(data, offset, numBytes) {\n const codePoints = [];\n const numChars = numBytes / 2;\n for (let j = 0; j < numChars; j++, offset += 2) {\n codePoints[j] = data.getUint16(offset);\n }\n return String.fromCharCode.apply(null, codePoints);\n };\n encode.UTF16 = function(v) {\n const b = [];\n for (let i = 0; i < v.length; i += 1) {\n const codepoint = v.charCodeAt(i);\n b[b.length] = codepoint >> 8 & 255;\n b[b.length] = codepoint & 255;\n }\n return b;\n };\n sizeOf.UTF16 = function(v) {\n return v.length * 2;\n };\n var eightBitMacEncodings = {\n \"x-mac-croatian\": (\n // Python: 'mac_croatian'\n \"\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\u2020\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\u0160\\u2122\\xB4\\xA8\\u2260\\u017D\\xD8\\u221E\\xB1\\u2264\\u2265\\u2206\\xB5\\u2202\\u2211\\u220F\\u0161\\u222B\\xAA\\xBA\\u03A9\\u017E\\xF8\\xBF\\xA1\\xAC\\u221A\\u0192\\u2248\\u0106\\xAB\\u010C\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u0110\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\uF8FF\\xA9\\u2044\\u20AC\\u2039\\u203A\\xC6\\xBB\\u2013\\xB7\\u201A\\u201E\\u2030\\xC2\\u0107\\xC1\\u010D\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\u0111\\xD2\\xDA\\xDB\\xD9\\u0131\\u02C6\\u02DC\\xAF\\u03C0\\xCB\\u02DA\\xB8\\xCA\\xE6\\u02C7\"\n ),\n \"x-mac-cyrillic\": (\n // Python: 'mac_cyrillic'\n \"\\u0410\\u0411\\u0412\\u0413\\u0414\\u0415\\u0416\\u0417\\u0418\\u0419\\u041A\\u041B\\u041C\\u041D\\u041E\\u041F\\u0420\\u0421\\u0422\\u0423\\u0424\\u0425\\u0426\\u0427\\u0428\\u0429\\u042A\\u042B\\u042C\\u042D\\u042E\\u042F\\u2020\\xB0\\u0490\\xA3\\xA7\\u2022\\xB6\\u0406\\xAE\\xA9\\u2122\\u0402\\u0452\\u2260\\u0403\\u0453\\u221E\\xB1\\u2264\\u2265\\u0456\\xB5\\u0491\\u0408\\u0404\\u0454\\u0407\\u0457\\u0409\\u0459\\u040A\\u045A\\u0458\\u0405\\xAC\\u221A\\u0192\\u2248\\u2206\\xAB\\xBB\\u2026\\xA0\\u040B\\u045B\\u040C\\u045C\\u0455\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u201E\\u040E\\u045E\\u040F\\u045F\\u2116\\u0401\\u0451\\u044F\\u0430\\u0431\\u0432\\u0433\\u0434\\u0435\\u0436\\u0437\\u0438\\u0439\\u043A\\u043B\\u043C\\u043D\\u043E\\u043F\\u0440\\u0441\\u0442\\u0443\\u0444\\u0445\\u0446\\u0447\\u0448\\u0449\\u044A\\u044B\\u044C\\u044D\\u044E\"\n ),\n \"x-mac-gaelic\": (\n // http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/GAELIC.TXT\n \"\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\u2020\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\xB4\\xA8\\u2260\\xC6\\xD8\\u1E02\\xB1\\u2264\\u2265\\u1E03\\u010A\\u010B\\u1E0A\\u1E0B\\u1E1E\\u1E1F\\u0120\\u0121\\u1E40\\xE6\\xF8\\u1E41\\u1E56\\u1E57\\u027C\\u0192\\u017F\\u1E60\\xAB\\xBB\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\u1E61\\u1E9B\\xFF\\u0178\\u1E6A\\u20AC\\u2039\\u203A\\u0176\\u0177\\u1E6B\\xB7\\u1EF2\\u1EF3\\u204A\\xC2\\xCA\\xC1\\xCB\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\u2663\\xD2\\xDA\\xDB\\xD9\\u0131\\xDD\\xFD\\u0174\\u0175\\u1E84\\u1E85\\u1E80\\u1E81\\u1E82\\u1E83\"\n ),\n \"x-mac-greek\": (\n // Python: 'mac_greek'\n \"\\xC4\\xB9\\xB2\\xC9\\xB3\\xD6\\xDC\\u0385\\xE0\\xE2\\xE4\\u0384\\xA8\\xE7\\xE9\\xE8\\xEA\\xEB\\xA3\\u2122\\xEE\\xEF\\u2022\\xBD\\u2030\\xF4\\xF6\\xA6\\u20AC\\xF9\\xFB\\xFC\\u2020\\u0393\\u0394\\u0398\\u039B\\u039E\\u03A0\\xDF\\xAE\\xA9\\u03A3\\u03AA\\xA7\\u2260\\xB0\\xB7\\u0391\\xB1\\u2264\\u2265\\xA5\\u0392\\u0395\\u0396\\u0397\\u0399\\u039A\\u039C\\u03A6\\u03AB\\u03A8\\u03A9\\u03AC\\u039D\\xAC\\u039F\\u03A1\\u2248\\u03A4\\xAB\\xBB\\u2026\\xA0\\u03A5\\u03A7\\u0386\\u0388\\u0153\\u2013\\u2015\\u201C\\u201D\\u2018\\u2019\\xF7\\u0389\\u038A\\u038C\\u038E\\u03AD\\u03AE\\u03AF\\u03CC\\u038F\\u03CD\\u03B1\\u03B2\\u03C8\\u03B4\\u03B5\\u03C6\\u03B3\\u03B7\\u03B9\\u03BE\\u03BA\\u03BB\\u03BC\\u03BD\\u03BF\\u03C0\\u03CE\\u03C1\\u03C3\\u03C4\\u03B8\\u03C9\\u03C2\\u03C7\\u03C5\\u03B6\\u03CA\\u03CB\\u0390\\u03B0\\xAD\"\n ),\n \"x-mac-icelandic\": (\n // Python: 'mac_iceland'\n \"\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\xDD\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\xB4\\xA8\\u2260\\xC6\\xD8\\u221E\\xB1\\u2264\\u2265\\xA5\\xB5\\u2202\\u2211\\u220F\\u03C0\\u222B\\xAA\\xBA\\u03A9\\xE6\\xF8\\xBF\\xA1\\xAC\\u221A\\u0192\\u2248\\u2206\\xAB\\xBB\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\xFF\\u0178\\u2044\\u20AC\\xD0\\xF0\\xDE\\xFE\\xFD\\xB7\\u201A\\u201E\\u2030\\xC2\\xCA\\xC1\\xCB\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\uF8FF\\xD2\\xDA\\xDB\\xD9\\u0131\\u02C6\\u02DC\\xAF\\u02D8\\u02D9\\u02DA\\xB8\\u02DD\\u02DB\\u02C7\"\n ),\n \"x-mac-inuit\": (\n // http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/INUIT.TXT\n \"\\u1403\\u1404\\u1405\\u1406\\u140A\\u140B\\u1431\\u1432\\u1433\\u1434\\u1438\\u1439\\u1449\\u144E\\u144F\\u1450\\u1451\\u1455\\u1456\\u1466\\u146D\\u146E\\u146F\\u1470\\u1472\\u1473\\u1483\\u148B\\u148C\\u148D\\u148E\\u1490\\u1491\\xB0\\u14A1\\u14A5\\u14A6\\u2022\\xB6\\u14A7\\xAE\\xA9\\u2122\\u14A8\\u14AA\\u14AB\\u14BB\\u14C2\\u14C3\\u14C4\\u14C5\\u14C7\\u14C8\\u14D0\\u14EF\\u14F0\\u14F1\\u14F2\\u14F4\\u14F5\\u1505\\u14D5\\u14D6\\u14D7\\u14D8\\u14DA\\u14DB\\u14EA\\u1528\\u1529\\u152A\\u152B\\u152D\\u2026\\xA0\\u152E\\u153E\\u1555\\u1556\\u1557\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\u1558\\u1559\\u155A\\u155D\\u1546\\u1547\\u1548\\u1549\\u154B\\u154C\\u1550\\u157F\\u1580\\u1581\\u1582\\u1583\\u1584\\u1585\\u158F\\u1590\\u1591\\u1592\\u1593\\u1594\\u1595\\u1671\\u1672\\u1673\\u1674\\u1675\\u1676\\u1596\\u15A0\\u15A1\\u15A2\\u15A3\\u15A4\\u15A5\\u15A6\\u157C\\u0141\\u0142\"\n ),\n \"x-mac-ce\": (\n // Python: 'mac_latin2'\n \"\\xC4\\u0100\\u0101\\xC9\\u0104\\xD6\\xDC\\xE1\\u0105\\u010C\\xE4\\u010D\\u0106\\u0107\\xE9\\u0179\\u017A\\u010E\\xED\\u010F\\u0112\\u0113\\u0116\\xF3\\u0117\\xF4\\xF6\\xF5\\xFA\\u011A\\u011B\\xFC\\u2020\\xB0\\u0118\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\u0119\\xA8\\u2260\\u0123\\u012E\\u012F\\u012A\\u2264\\u2265\\u012B\\u0136\\u2202\\u2211\\u0142\\u013B\\u013C\\u013D\\u013E\\u0139\\u013A\\u0145\\u0146\\u0143\\xAC\\u221A\\u0144\\u0147\\u2206\\xAB\\xBB\\u2026\\xA0\\u0148\\u0150\\xD5\\u0151\\u014C\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\u014D\\u0154\\u0155\\u0158\\u2039\\u203A\\u0159\\u0156\\u0157\\u0160\\u201A\\u201E\\u0161\\u015A\\u015B\\xC1\\u0164\\u0165\\xCD\\u017D\\u017E\\u016A\\xD3\\xD4\\u016B\\u016E\\xDA\\u016F\\u0170\\u0171\\u0172\\u0173\\xDD\\xFD\\u0137\\u017B\\u0141\\u017C\\u0122\\u02C7\"\n ),\n macintosh: (\n // Python: 'mac_roman'\n \"\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\u2020\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\xB4\\xA8\\u2260\\xC6\\xD8\\u221E\\xB1\\u2264\\u2265\\xA5\\xB5\\u2202\\u2211\\u220F\\u03C0\\u222B\\xAA\\xBA\\u03A9\\xE6\\xF8\\xBF\\xA1\\xAC\\u221A\\u0192\\u2248\\u2206\\xAB\\xBB\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\xFF\\u0178\\u2044\\u20AC\\u2039\\u203A\\uFB01\\uFB02\\u2021\\xB7\\u201A\\u201E\\u2030\\xC2\\xCA\\xC1\\xCB\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\uF8FF\\xD2\\xDA\\xDB\\xD9\\u0131\\u02C6\\u02DC\\xAF\\u02D8\\u02D9\\u02DA\\xB8\\u02DD\\u02DB\\u02C7\"\n ),\n \"x-mac-romanian\": (\n // Python: 'mac_romanian'\n \"\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\u2020\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\xB4\\xA8\\u2260\\u0102\\u0218\\u221E\\xB1\\u2264\\u2265\\xA5\\xB5\\u2202\\u2211\\u220F\\u03C0\\u222B\\xAA\\xBA\\u03A9\\u0103\\u0219\\xBF\\xA1\\xAC\\u221A\\u0192\\u2248\\u2206\\xAB\\xBB\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\xFF\\u0178\\u2044\\u20AC\\u2039\\u203A\\u021A\\u021B\\u2021\\xB7\\u201A\\u201E\\u2030\\xC2\\xCA\\xC1\\xCB\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\uF8FF\\xD2\\xDA\\xDB\\xD9\\u0131\\u02C6\\u02DC\\xAF\\u02D8\\u02D9\\u02DA\\xB8\\u02DD\\u02DB\\u02C7\"\n ),\n \"x-mac-turkish\": (\n // Python: 'mac_turkish'\n \"\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\u2020\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\xB4\\xA8\\u2260\\xC6\\xD8\\u221E\\xB1\\u2264\\u2265\\xA5\\xB5\\u2202\\u2211\\u220F\\u03C0\\u222B\\xAA\\xBA\\u03A9\\xE6\\xF8\\xBF\\xA1\\xAC\\u221A\\u0192\\u2248\\u2206\\xAB\\xBB\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\xFF\\u0178\\u011E\\u011F\\u0130\\u0131\\u015E\\u015F\\u2021\\xB7\\u201A\\u201E\\u2030\\xC2\\xCA\\xC1\\xCB\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\uF8FF\\xD2\\xDA\\xDB\\xD9\\uF8A0\\u02C6\\u02DC\\xAF\\u02D8\\u02D9\\u02DA\\xB8\\u02DD\\u02DB\\u02C7\"\n )\n };\n decode.MACSTRING = function(dataView, offset, dataLength, encoding) {\n const table = eightBitMacEncodings[encoding];\n if (table === void 0) {\n return void 0;\n }\n let result = \"\";\n for (let i = 0; i < dataLength; i++) {\n const c = dataView.getUint8(offset + i);\n if (c <= 127) {\n result += String.fromCharCode(c);\n } else {\n result += table[c & 127];\n }\n }\n return result;\n };\n var macEncodingTableCache = typeof WeakMap === \"function\" && /* @__PURE__ */ new WeakMap();\n var macEncodingCacheKeys;\n var getMacEncodingTable = function(encoding) {\n if (!macEncodingCacheKeys) {\n macEncodingCacheKeys = {};\n for (let e in eightBitMacEncodings) {\n macEncodingCacheKeys[e] = new String(e);\n }\n }\n const cacheKey = macEncodingCacheKeys[encoding];\n if (cacheKey === void 0) {\n return void 0;\n }\n if (macEncodingTableCache) {\n const cachedTable = macEncodingTableCache.get(cacheKey);\n if (cachedTable !== void 0) {\n return cachedTable;\n }\n }\n const decodingTable = eightBitMacEncodings[encoding];\n if (decodingTable === void 0) {\n return void 0;\n }\n const encodingTable = {};\n for (let i = 0; i < decodingTable.length; i++) {\n encodingTable[decodingTable.charCodeAt(i)] = i + 128;\n }\n if (macEncodingTableCache) {\n macEncodingTableCache.set(cacheKey, encodingTable);\n }\n return encodingTable;\n };\n encode.MACSTRING = function(str, encoding) {\n const table = getMacEncodingTable(encoding);\n if (table === void 0) {\n return void 0;\n }\n const result = [];\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i);\n if (c >= 128) {\n c = table[c];\n if (c === void 0) {\n return void 0;\n }\n }\n result[i] = c;\n }\n return result;\n };\n sizeOf.MACSTRING = function(str, encoding) {\n const b = encode.MACSTRING(str, encoding);\n if (b !== void 0) {\n return b.length;\n } else {\n return 0;\n }\n };\n function isByteEncodable(value) {\n return value >= -128 && value <= 127;\n }\n function encodeVarDeltaRunAsZeroes(deltas, pos, result) {\n let runLength = 0;\n const numDeltas = deltas.length;\n while (pos < numDeltas && runLength < 64 && deltas[pos] === 0) {\n ++pos;\n ++runLength;\n }\n result.push(128 | runLength - 1);\n return pos;\n }\n function encodeVarDeltaRunAsBytes(deltas, offset, result) {\n let runLength = 0;\n const numDeltas = deltas.length;\n let pos = offset;\n while (pos < numDeltas && runLength < 64) {\n const value = deltas[pos];\n if (!isByteEncodable(value)) {\n break;\n }\n if (value === 0 && pos + 1 < numDeltas && deltas[pos + 1] === 0) {\n break;\n }\n ++pos;\n ++runLength;\n }\n result.push(runLength - 1);\n for (let i = offset; i < pos; ++i) {\n result.push(deltas[i] + 256 & 255);\n }\n return pos;\n }\n function encodeVarDeltaRunAsWords(deltas, offset, result) {\n let runLength = 0;\n const numDeltas = deltas.length;\n let pos = offset;\n while (pos < numDeltas && runLength < 64) {\n const value = deltas[pos];\n if (value === 0) {\n break;\n }\n if (isByteEncodable(value) && pos + 1 < numDeltas && isByteEncodable(deltas[pos + 1])) {\n break;\n }\n ++pos;\n ++runLength;\n }\n result.push(64 | runLength - 1);\n for (let i = offset; i < pos; ++i) {\n const val = deltas[i];\n result.push(val + 65536 >> 8 & 255, val + 256 & 255);\n }\n return pos;\n }\n encode.VARDELTAS = function(deltas) {\n let pos = 0;\n const result = [];\n while (pos < deltas.length) {\n const value = deltas[pos];\n if (value === 0) {\n pos = encodeVarDeltaRunAsZeroes(deltas, pos, result);\n } else if (value >= -128 && value <= 127) {\n pos = encodeVarDeltaRunAsBytes(deltas, pos, result);\n } else {\n pos = encodeVarDeltaRunAsWords(deltas, pos, result);\n }\n }\n return result;\n };\n encode.INDEX = function(l) {\n let offset = 1;\n const offsets = [offset];\n const data = [];\n for (let i = 0; i < l.length; i += 1) {\n const v = encode.OBJECT(l[i]);\n Array.prototype.push.apply(data, v);\n offset += v.length;\n offsets.push(offset);\n }\n if (data.length === 0) {\n return [0, 0];\n }\n const encodedOffsets = [];\n const offSize = 1 + Math.floor(Math.log(offset) / Math.log(2)) / 8 | 0;\n const offsetEncoder = [void 0, encode.BYTE, encode.USHORT, encode.UINT24, encode.ULONG][offSize];\n for (let i = 0; i < offsets.length; i += 1) {\n const encodedOffset = offsetEncoder(offsets[i]);\n Array.prototype.push.apply(encodedOffsets, encodedOffset);\n }\n return Array.prototype.concat(\n encode.Card16(l.length),\n encode.OffSize(offSize),\n encodedOffsets,\n data\n );\n };\n sizeOf.INDEX = function(v) {\n return encode.INDEX(v).length;\n };\n encode.DICT = function(m) {\n let d = [];\n const keys = Object.keys(m);\n const length = keys.length;\n for (let i = 0; i < length; i += 1) {\n const k = parseInt(keys[i], 0);\n const v = m[k];\n const enc1 = encode.OPERAND(v.value, v.type);\n const enc2 = encode.OPERATOR(k);\n for (let j = 0; j < enc1.length; j++) {\n d.push(enc1[j]);\n }\n for (let j = 0; j < enc2.length; j++) {\n d.push(enc2[j]);\n }\n }\n return d;\n };\n sizeOf.DICT = function(m) {\n return encode.DICT(m).length;\n };\n encode.OPERATOR = function(v) {\n if (v < 1200) {\n return [v];\n } else {\n return [12, v - 1200];\n }\n };\n encode.OPERAND = function(v, type) {\n let d = [];\n if (Array.isArray(type)) {\n for (let i = 0; i < type.length; i += 1) {\n check_default.argument(v.length === type.length, \"Not enough arguments given for type\" + type);\n const enc1 = encode.OPERAND(v[i], type[i]);\n for (let j = 0; j < enc1.length; j++) {\n d.push(enc1[j]);\n }\n }\n } else {\n if (type === \"SID\") {\n const enc1 = encode.NUMBER(v);\n for (let j = 0; j < enc1.length; j++) {\n d.push(enc1[j]);\n }\n } else if (type === \"offset\") {\n const enc1 = encode.NUMBER32(v);\n for (let j = 0; j < enc1.length; j++) {\n d.push(enc1[j]);\n }\n } else if (type === \"number\") {\n const enc1 = encode.NUMBER(v);\n for (let j = 0; j < enc1.length; j++) {\n d.push(enc1[j]);\n }\n } else if (type === \"real\") {\n const enc1 = encode.REAL(v);\n for (let j = 0; j < enc1.length; j++) {\n d.push(enc1[j]);\n }\n } else {\n throw new Error(\"Unknown operand type \" + type);\n }\n }\n return d;\n };\n encode.OP = encode.BYTE;\n sizeOf.OP = sizeOf.BYTE;\n var wmm = typeof WeakMap === \"function\" && /* @__PURE__ */ new WeakMap();\n encode.CHARSTRING = function(ops) {\n if (wmm) {\n const cachedValue = wmm.get(ops);\n if (cachedValue !== void 0) {\n return cachedValue;\n }\n }\n let d = [];\n const length = ops.length;\n for (let i = 0; i < length; i += 1) {\n const op = ops[i];\n const enc1 = encode[op.type](op.value);\n for (let j = 0; j < enc1.length; j++) {\n d.push(enc1[j]);\n }\n }\n if (wmm) {\n wmm.set(ops, d);\n }\n return d;\n };\n sizeOf.CHARSTRING = function(ops) {\n return encode.CHARSTRING(ops).length;\n };\n encode.OBJECT = function(v) {\n const encodingFunction = encode[v.type];\n check_default.argument(encodingFunction !== void 0, \"No encoding function for type \" + v.type);\n return encodingFunction(v.value);\n };\n sizeOf.OBJECT = function(v) {\n const sizeOfFunction = sizeOf[v.type];\n check_default.argument(sizeOfFunction !== void 0, \"No sizeOf function for type \" + v.type);\n return sizeOfFunction(v.value);\n };\n encode.TABLE = function(table) {\n let d = [];\n const length = (table.fields || []).length;\n const subtables = [];\n const subtableOffsets = [];\n for (let i = 0; i < length; i += 1) {\n const field = table.fields[i];\n const encodingFunction = encode[field.type];\n check_default.argument(encodingFunction !== void 0, \"No encoding function for field type \" + field.type + \" (\" + field.name + \")\");\n let value = table[field.name];\n if (value === void 0) {\n value = field.value;\n }\n const bytes = encodingFunction(value);\n if (field.type === \"TABLE\") {\n if (value.fields !== null) {\n subtableOffsets.push(d.length);\n subtables.push(bytes);\n }\n d.push(...[0, 0]);\n } else {\n for (let j = 0; j < bytes.length; j++) {\n d.push(bytes[j]);\n }\n }\n }\n for (let i = 0; i < subtables.length; i += 1) {\n const o = subtableOffsets[i];\n const offset = d.length;\n check_default.argument(offset < 65536, \"Table \" + table.tableName + \" too big.\");\n d[o] = offset >> 8;\n d[o + 1] = offset & 255;\n for (let j = 0; j < subtables[i].length; j++) {\n d.push(subtables[i][j]);\n }\n }\n return d;\n };\n sizeOf.TABLE = function(table) {\n let numBytes = 0;\n const length = (table.fields || []).length;\n for (let i = 0; i < length; i += 1) {\n const field = table.fields[i];\n const sizeOfFunction = sizeOf[field.type];\n check_default.argument(sizeOfFunction !== void 0, \"No sizeOf function for field type \" + field.type + \" (\" + field.name + \")\");\n let value = table[field.name];\n if (value === void 0) {\n value = field.value;\n }\n numBytes += sizeOfFunction(value);\n if (field.type === \"TABLE\") {\n numBytes += 2;\n }\n }\n return numBytes;\n };\n encode.RECORD = encode.TABLE;\n sizeOf.RECORD = sizeOf.TABLE;\n encode.LITERAL = function(v) {\n return v;\n };\n sizeOf.LITERAL = function(v) {\n return v.length;\n };\n\n // src/table.mjs\n function Table(tableName, fields, options) {\n if (fields && fields.length) {\n for (let i = 0; i < fields.length; i += 1) {\n const field = fields[i];\n this[field.name] = field.value;\n }\n }\n this.tableName = tableName;\n this.fields = fields;\n if (options) {\n const optionKeys = Object.keys(options);\n for (let i = 0; i < optionKeys.length; i += 1) {\n const k = optionKeys[i];\n const v = options[k];\n if (this[k] !== void 0) {\n this[k] = v;\n }\n }\n }\n }\n Table.prototype.encode = function() {\n return encode.TABLE(this);\n };\n Table.prototype.sizeOf = function() {\n return sizeOf.TABLE(this);\n };\n function ushortList(itemName, list, count) {\n if (count === void 0) {\n count = list.length;\n }\n const fields = new Array(list.length + 1);\n fields[0] = { name: itemName + \"Count\", type: \"USHORT\", value: count };\n for (let i = 0; i < list.length; i++) {\n fields[i + 1] = { name: itemName + i, type: \"USHORT\", value: list[i] };\n }\n return fields;\n }\n function tableList(itemName, records, itemCallback) {\n const count = records.length;\n const fields = new Array(count + 1);\n fields[0] = { name: itemName + \"Count\", type: \"USHORT\", value: count };\n for (let i = 0; i < count; i++) {\n fields[i + 1] = { name: itemName + i, type: \"TABLE\", value: itemCallback(records[i], i) };\n }\n return fields;\n }\n function recordList(itemName, records, itemCallback) {\n const count = records.length;\n let fields = [];\n fields[0] = { name: itemName + \"Count\", type: \"USHORT\", value: count };\n for (let i = 0; i < count; i++) {\n fields = fields.concat(itemCallback(records[i], i));\n }\n return fields;\n }\n function Coverage(coverageTable) {\n if (coverageTable.format === 1) {\n Table.call(\n this,\n \"coverageTable\",\n [{ name: \"coverageFormat\", type: \"USHORT\", value: 1 }].concat(ushortList(\"glyph\", coverageTable.glyphs))\n );\n } else if (coverageTable.format === 2) {\n Table.call(\n this,\n \"coverageTable\",\n [{ name: \"coverageFormat\", type: \"USHORT\", value: 2 }].concat(recordList(\"rangeRecord\", coverageTable.ranges, function(RangeRecord, i) {\n return [\n { name: \"startGlyphID\" + i, type: \"USHORT\", value: RangeRecord.start },\n { name: \"endGlyphID\" + i, type: \"USHORT\", value: RangeRecord.end },\n { name: \"startCoverageIndex\" + i, type: \"USHORT\", value: RangeRecord.index }\n ];\n }))\n );\n } else {\n check_default.assert(false, \"Coverage format must be 1 or 2.\");\n }\n }\n Coverage.prototype = Object.create(Table.prototype);\n Coverage.prototype.constructor = Coverage;\n function ScriptList(scriptListTable) {\n Table.call(\n this,\n \"scriptListTable\",\n recordList(\"scriptRecord\", scriptListTable, function(scriptRecord, i) {\n const script = scriptRecord.script;\n let defaultLangSys = script.defaultLangSys;\n check_default.assert(!!defaultLangSys, \"Unable to write GSUB: script \" + scriptRecord.tag + \" has no default language system.\");\n return [\n { name: \"scriptTag\" + i, type: \"TAG\", value: scriptRecord.tag },\n { name: \"script\" + i, type: \"TABLE\", value: new Table(\"scriptTable\", [\n { name: \"defaultLangSys\", type: \"TABLE\", value: new Table(\"defaultLangSys\", [\n { name: \"lookupOrder\", type: \"USHORT\", value: 0 },\n { name: \"reqFeatureIndex\", type: \"USHORT\", value: defaultLangSys.reqFeatureIndex }\n ].concat(ushortList(\"featureIndex\", defaultLangSys.featureIndexes))) }\n ].concat(recordList(\"langSys\", script.langSysRecords, function(langSysRecord, i2) {\n const langSys = langSysRecord.langSys;\n return [\n { name: \"langSysTag\" + i2, type: \"TAG\", value: langSysRecord.tag },\n { name: \"langSys\" + i2, type: \"TABLE\", value: new Table(\"langSys\", [\n { name: \"lookupOrder\", type: \"USHORT\", value: 0 },\n { name: \"reqFeatureIndex\", type: \"USHORT\", value: langSys.reqFeatureIndex }\n ].concat(ushortList(\"featureIndex\", langSys.featureIndexes))) }\n ];\n }))) }\n ];\n })\n );\n }\n ScriptList.prototype = Object.create(Table.prototype);\n ScriptList.prototype.constructor = ScriptList;\n function FeatureList(featureListTable) {\n Table.call(\n this,\n \"featureListTable\",\n recordList(\"featureRecord\", featureListTable, function(featureRecord, i) {\n const feature = featureRecord.feature;\n return [\n { name: \"featureTag\" + i, type: \"TAG\", value: featureRecord.tag },\n { name: \"feature\" + i, type: \"TABLE\", value: new Table(\"featureTable\", [\n { name: \"featureParams\", type: \"USHORT\", value: feature.featureParams }\n ].concat(ushortList(\"lookupListIndex\", feature.lookupListIndexes))) }\n ];\n })\n );\n }\n FeatureList.prototype = Object.create(Table.prototype);\n FeatureList.prototype.constructor = FeatureList;\n function LookupList(lookupListTable, subtableMakers3) {\n Table.call(this, \"lookupListTable\", tableList(\"lookup\", lookupListTable, function(lookupTable) {\n let subtableCallback = subtableMakers3[lookupTable.lookupType];\n check_default.assert(!!subtableCallback, \"Unable to write GSUB lookup type \" + lookupTable.lookupType + \" tables.\");\n return new Table(\"lookupTable\", [\n { name: \"lookupType\", type: \"USHORT\", value: lookupTable.lookupType },\n { name: \"lookupFlag\", type: \"USHORT\", value: lookupTable.lookupFlag }\n ].concat(tableList(\"subtable\", lookupTable.subtables, subtableCallback)));\n }));\n }\n LookupList.prototype = Object.create(Table.prototype);\n LookupList.prototype.constructor = LookupList;\n function ClassDef(classDefTable) {\n if (classDefTable.format === 1) {\n Table.call(\n this,\n \"classDefTable\",\n [\n { name: \"classFormat\", type: \"USHORT\", value: 1 },\n { name: \"startGlyphID\", type: \"USHORT\", value: classDefTable.startGlyph }\n ].concat(ushortList(\"glyph\", classDefTable.classes))\n );\n } else if (classDefTable.format === 2) {\n Table.call(\n this,\n \"classDefTable\",\n [{ name: \"classFormat\", type: \"USHORT\", value: 2 }].concat(recordList(\"rangeRecord\", classDefTable.ranges, function(RangeRecord, i) {\n return [\n { name: \"startGlyphID\" + i, type: \"USHORT\", value: RangeRecord.start },\n { name: \"endGlyphID\" + i, type: \"USHORT\", value: RangeRecord.end },\n { name: \"class\" + i, type: \"USHORT\", value: RangeRecord.classId }\n ];\n }))\n );\n } else {\n check_default.assert(false, \"Class format must be 1 or 2.\");\n }\n }\n ClassDef.prototype = Object.create(Table.prototype);\n ClassDef.prototype.constructor = ClassDef;\n var table_default = {\n Table,\n Record: Table,\n Coverage,\n ClassDef,\n ScriptList,\n FeatureList,\n LookupList,\n ushortList,\n tableList,\n recordList\n };\n\n // src/parse.mjs\n function getByte(dataView, offset) {\n return dataView.getUint8(offset);\n }\n function getUShort(dataView, offset) {\n return dataView.getUint16(offset, false);\n }\n function getShort(dataView, offset) {\n return dataView.getInt16(offset, false);\n }\n function getUInt24(dataView, offset) {\n return (dataView.getUint16(offset) << 8) + dataView.getUint8(offset + 2);\n }\n function getULong(dataView, offset) {\n return dataView.getUint32(offset, false);\n }\n function getLong(dataView, offset) {\n return dataView.getInt32(offset, false);\n }\n function getFixed(dataView, offset) {\n const decimal = dataView.getInt16(offset, false);\n const fraction = dataView.getUint16(offset + 2, false);\n return decimal + fraction / 65535;\n }\n function getTag(dataView, offset) {\n let tag = \"\";\n for (let i = offset; i < offset + 4; i += 1) {\n tag += String.fromCharCode(dataView.getInt8(i));\n }\n return tag;\n }\n function getOffset(dataView, offset, offSize) {\n let v = 0;\n for (let i = 0; i < offSize; i += 1) {\n v <<= 8;\n v += dataView.getUint8(offset + i);\n }\n return v;\n }\n function getBytes(dataView, startOffset, endOffset) {\n const bytes = [];\n for (let i = startOffset; i < endOffset; i += 1) {\n bytes.push(dataView.getUint8(i));\n }\n return bytes;\n }\n function bytesToString(bytes) {\n let s = \"\";\n for (let i = 0; i < bytes.length; i += 1) {\n s += String.fromCharCode(bytes[i]);\n }\n return s;\n }\n var typeOffsets = {\n byte: 1,\n uShort: 2,\n f2dot14: 2,\n short: 2,\n uInt24: 3,\n uLong: 4,\n fixed: 4,\n longDateTime: 8,\n tag: 4\n };\n var masks = {\n LONG_WORDS: 32768,\n WORD_DELTA_COUNT_MASK: 32767,\n SHARED_POINT_NUMBERS: 32768,\n COUNT_MASK: 4095,\n EMBEDDED_PEAK_TUPLE: 32768,\n INTERMEDIATE_REGION: 16384,\n PRIVATE_POINT_NUMBERS: 8192,\n TUPLE_INDEX_MASK: 4095,\n POINTS_ARE_WORDS: 128,\n POINT_RUN_COUNT_MASK: 127,\n DELTAS_ARE_ZERO: 128,\n DELTAS_ARE_WORDS: 64,\n DELTA_RUN_COUNT_MASK: 63,\n INNER_INDEX_BIT_COUNT_MASK: 15,\n MAP_ENTRY_SIZE_MASK: 48\n };\n function Parser(data, offset) {\n this.data = data;\n this.offset = offset;\n this.relativeOffset = 0;\n }\n Parser.prototype.parseByte = function() {\n const v = this.data.getUint8(this.offset + this.relativeOffset);\n this.relativeOffset += 1;\n return v;\n };\n Parser.prototype.parseChar = function() {\n const v = this.data.getInt8(this.offset + this.relativeOffset);\n this.relativeOffset += 1;\n return v;\n };\n Parser.prototype.parseCard8 = Parser.prototype.parseByte;\n Parser.prototype.parseUShort = function() {\n const v = this.data.getUint16(this.offset + this.relativeOffset);\n this.relativeOffset += 2;\n return v;\n };\n Parser.prototype.parseCard16 = Parser.prototype.parseUShort;\n Parser.prototype.parseSID = Parser.prototype.parseUShort;\n Parser.prototype.parseOffset16 = Parser.prototype.parseUShort;\n Parser.prototype.parseShort = function() {\n const v = this.data.getInt16(this.offset + this.relativeOffset);\n this.relativeOffset += 2;\n return v;\n };\n Parser.prototype.parseF2Dot14 = function() {\n const v = this.data.getInt16(this.offset + this.relativeOffset) / 16384;\n this.relativeOffset += 2;\n return v;\n };\n Parser.prototype.parseUInt24 = function() {\n const v = getUInt24(this.data, this.offset + this.relativeOffset);\n this.relativeOffset += 3;\n return v;\n };\n Parser.prototype.parseULong = function() {\n const v = getULong(this.data, this.offset + this.relativeOffset);\n this.relativeOffset += 4;\n return v;\n };\n Parser.prototype.parseLong = function() {\n const v = getLong(this.data, this.offset + this.relativeOffset);\n this.relativeOffset += 4;\n return v;\n };\n Parser.prototype.parseOffset32 = Parser.prototype.parseULong;\n Parser.prototype.parseFixed = function() {\n const v = getFixed(this.data, this.offset + this.relativeOffset);\n this.relativeOffset += 4;\n return v;\n };\n Parser.prototype.parseString = function(length) {\n const dataView = this.data;\n const offset = this.offset + this.relativeOffset;\n let string = \"\";\n this.relativeOffset += length;\n for (let i = 0; i < length; i++) {\n string += String.fromCharCode(dataView.getUint8(offset + i));\n }\n return string;\n };\n Parser.prototype.parseTag = function() {\n return this.parseString(4);\n };\n Parser.prototype.parseLongDateTime = function() {\n let v = getULong(this.data, this.offset + this.relativeOffset + 4);\n v -= 2082844800;\n this.relativeOffset += 8;\n return v;\n };\n Parser.prototype.parseVersion = function(minorBase) {\n const major = getUShort(this.data, this.offset + this.relativeOffset);\n const minor = getUShort(this.data, this.offset + this.relativeOffset + 2);\n this.relativeOffset += 4;\n if (minorBase === void 0) minorBase = 4096;\n return major + minor / minorBase / 10;\n };\n Parser.prototype.skip = function(type, amount) {\n if (amount === void 0) {\n amount = 1;\n }\n this.relativeOffset += typeOffsets[type] * amount;\n };\n Parser.prototype.parseULongList = function(count) {\n if (count === void 0) {\n count = this.parseULong();\n }\n const offsets = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n offsets[i] = dataView.getUint32(offset);\n offset += 4;\n }\n this.relativeOffset += count * 4;\n return offsets;\n };\n Parser.prototype.parseOffset16List = Parser.prototype.parseUShortList = function(count) {\n if (count === void 0) {\n count = this.parseUShort();\n }\n const offsets = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n offsets[i] = dataView.getUint16(offset);\n offset += 2;\n }\n this.relativeOffset += count * 2;\n return offsets;\n };\n Parser.prototype.parseShortList = function(count) {\n const list = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n list[i] = dataView.getInt16(offset);\n offset += 2;\n }\n this.relativeOffset += count * 2;\n return list;\n };\n Parser.prototype.parseByteList = function(count) {\n const list = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n list[i] = dataView.getUint8(offset++);\n }\n this.relativeOffset += count;\n return list;\n };\n Parser.prototype.parseList = function(count, itemCallback) {\n if (!itemCallback) {\n itemCallback = count;\n count = this.parseUShort();\n }\n const list = new Array(count);\n for (let i = 0; i < count; i++) {\n list[i] = itemCallback.call(this);\n }\n return list;\n };\n Parser.prototype.parseList32 = function(count, itemCallback) {\n if (!itemCallback) {\n itemCallback = count;\n count = this.parseULong();\n }\n const list = new Array(count);\n for (let i = 0; i < count; i++) {\n list[i] = itemCallback.call(this);\n }\n return list;\n };\n Parser.prototype.parseRecordList = function(count, recordDescription) {\n if (!recordDescription) {\n recordDescription = count;\n count = this.parseUShort();\n }\n const records = new Array(count);\n const fields = Object.keys(recordDescription);\n for (let i = 0; i < count; i++) {\n const rec = {};\n for (let j = 0; j < fields.length; j++) {\n const fieldName = fields[j];\n const fieldType = recordDescription[fieldName];\n rec[fieldName] = fieldType.call(this);\n }\n records[i] = rec;\n }\n return records;\n };\n Parser.prototype.parseRecordList32 = function(count, recordDescription) {\n if (!recordDescription) {\n recordDescription = count;\n count = this.parseULong();\n }\n const records = new Array(count);\n const fields = Object.keys(recordDescription);\n for (let i = 0; i < count; i++) {\n const rec = {};\n for (let j = 0; j < fields.length; j++) {\n const fieldName = fields[j];\n const fieldType = recordDescription[fieldName];\n rec[fieldName] = fieldType.call(this);\n }\n records[i] = rec;\n }\n return records;\n };\n Parser.prototype.parseTupleRecords = function(tupleCount, axisCount) {\n let tuples = [];\n for (let i = 0; i < tupleCount; i++) {\n let tuple = [];\n for (let axisIndex = 0; axisIndex < axisCount; axisIndex++) {\n tuple.push(this.parseF2Dot14());\n }\n tuples.push(tuple);\n }\n return tuples;\n };\n Parser.prototype.parseStruct = function(description) {\n if (typeof description === \"function\") {\n return description.call(this);\n } else {\n const fields = Object.keys(description);\n const struct = {};\n for (let j = 0; j < fields.length; j++) {\n const fieldName = fields[j];\n const fieldType = description[fieldName];\n struct[fieldName] = fieldType.call(this);\n }\n return struct;\n }\n };\n Parser.prototype.parseValueRecord = function(valueFormat) {\n if (valueFormat === void 0) {\n valueFormat = this.parseUShort();\n }\n if (valueFormat === 0) {\n return;\n }\n const valueRecord = {};\n if (valueFormat & 1) {\n valueRecord.xPlacement = this.parseShort();\n }\n if (valueFormat & 2) {\n valueRecord.yPlacement = this.parseShort();\n }\n if (valueFormat & 4) {\n valueRecord.xAdvance = this.parseShort();\n }\n if (valueFormat & 8) {\n valueRecord.yAdvance = this.parseShort();\n }\n if (valueFormat & 16) {\n valueRecord.xPlaDevice = void 0;\n this.parseShort();\n }\n if (valueFormat & 32) {\n valueRecord.yPlaDevice = void 0;\n this.parseShort();\n }\n if (valueFormat & 64) {\n valueRecord.xAdvDevice = void 0;\n this.parseShort();\n }\n if (valueFormat & 128) {\n valueRecord.yAdvDevice = void 0;\n this.parseShort();\n }\n return valueRecord;\n };\n Parser.prototype.parseValueRecordList = function() {\n const valueFormat = this.parseUShort();\n const valueCount = this.parseUShort();\n const values = new Array(valueCount);\n for (let i = 0; i < valueCount; i++) {\n values[i] = this.parseValueRecord(valueFormat);\n }\n return values;\n };\n Parser.prototype.parsePointer = function(description) {\n const structOffset = this.parseOffset16();\n if (structOffset > 0) {\n return new Parser(this.data, this.offset + structOffset).parseStruct(description);\n }\n return void 0;\n };\n Parser.prototype.parsePointer32 = function(description) {\n const structOffset = this.parseOffset32();\n if (structOffset > 0) {\n return new Parser(this.data, this.offset + structOffset).parseStruct(description);\n }\n return void 0;\n };\n Parser.prototype.parseListOfLists = function(itemCallback) {\n const offsets = this.parseOffset16List();\n const count = offsets.length;\n const relativeOffset = this.relativeOffset;\n const list = new Array(count);\n for (let i = 0; i < count; i++) {\n const start = offsets[i];\n if (start === 0) {\n list[i] = void 0;\n continue;\n }\n this.relativeOffset = start;\n if (itemCallback) {\n const subOffsets = this.parseOffset16List();\n const subList = new Array(subOffsets.length);\n for (let j = 0; j < subOffsets.length; j++) {\n this.relativeOffset = start + subOffsets[j];\n subList[j] = itemCallback.call(this);\n }\n list[i] = subList;\n } else {\n list[i] = this.parseUShortList();\n }\n }\n this.relativeOffset = relativeOffset;\n return list;\n };\n Parser.prototype.parseCoverage = function() {\n const startOffset = this.offset + this.relativeOffset;\n const format = this.parseUShort();\n const count = this.parseUShort();\n if (format === 1) {\n return {\n format: 1,\n glyphs: this.parseUShortList(count)\n };\n } else if (format === 2) {\n const ranges = new Array(count);\n for (let i = 0; i < count; i++) {\n ranges[i] = {\n start: this.parseUShort(),\n end: this.parseUShort(),\n index: this.parseUShort()\n };\n }\n return {\n format: 2,\n ranges\n };\n }\n throw new Error(\"0x\" + startOffset.toString(16) + \": Coverage format must be 1 or 2.\");\n };\n Parser.prototype.parseClassDef = function() {\n const startOffset = this.offset + this.relativeOffset;\n const format = this.parseUShort();\n if (format === 1) {\n return {\n format: 1,\n startGlyph: this.parseUShort(),\n classes: this.parseUShortList()\n };\n } else if (format === 2) {\n return {\n format: 2,\n ranges: this.parseRecordList({\n start: Parser.uShort,\n end: Parser.uShort,\n classId: Parser.uShort\n })\n };\n }\n console.warn(`0x${startOffset.toString(16)}: This font file uses an invalid ClassDef format of ${format}. It might be corrupted and should be reacquired if it doesn't display as intended.`);\n return {\n format\n };\n };\n Parser.list = function(count, itemCallback) {\n return function() {\n return this.parseList(count, itemCallback);\n };\n };\n Parser.list32 = function(count, itemCallback) {\n return function() {\n return this.parseList32(count, itemCallback);\n };\n };\n Parser.recordList = function(count, recordDescription) {\n return function() {\n return this.parseRecordList(count, recordDescription);\n };\n };\n Parser.recordList32 = function(count, recordDescription) {\n return function() {\n return this.parseRecordList32(count, recordDescription);\n };\n };\n Parser.pointer = function(description) {\n return function() {\n return this.parsePointer(description);\n };\n };\n Parser.pointer32 = function(description) {\n return function() {\n return this.parsePointer32(description);\n };\n };\n Parser.tag = Parser.prototype.parseTag;\n Parser.byte = Parser.prototype.parseByte;\n Parser.uShort = Parser.offset16 = Parser.prototype.parseUShort;\n Parser.uShortList = Parser.prototype.parseUShortList;\n Parser.uInt24 = Parser.prototype.parseUInt24;\n Parser.uLong = Parser.offset32 = Parser.prototype.parseULong;\n Parser.uLongList = Parser.prototype.parseULongList;\n Parser.fixed = Parser.prototype.parseFixed;\n Parser.f2Dot14 = Parser.prototype.parseF2Dot14;\n Parser.struct = Parser.prototype.parseStruct;\n Parser.coverage = Parser.prototype.parseCoverage;\n Parser.classDef = Parser.prototype.parseClassDef;\n var langSysTable = {\n reserved: Parser.uShort,\n reqFeatureIndex: Parser.uShort,\n featureIndexes: Parser.uShortList\n };\n Parser.prototype.parseScriptList = function() {\n return this.parsePointer(Parser.recordList({\n tag: Parser.tag,\n script: Parser.pointer({\n defaultLangSys: Parser.pointer(langSysTable),\n langSysRecords: Parser.recordList({\n tag: Parser.tag,\n langSys: Parser.pointer(langSysTable)\n })\n })\n })) || [];\n };\n Parser.prototype.parseFeatureList = function() {\n return this.parsePointer(Parser.recordList({\n tag: Parser.tag,\n feature: Parser.pointer({\n featureParams: Parser.offset16,\n lookupListIndexes: Parser.uShortList\n })\n })) || [];\n };\n Parser.prototype.parseLookupList = function(lookupTableParsers) {\n return this.parsePointer(Parser.list(Parser.pointer(function() {\n const lookupType = this.parseUShort();\n check_default.argument(1 <= lookupType && lookupType <= 9, \"GPOS/GSUB lookup type \" + lookupType + \" unknown.\");\n const lookupFlag = this.parseUShort();\n const useMarkFilteringSet = lookupFlag & 16;\n return {\n lookupType,\n lookupFlag,\n subtables: this.parseList(Parser.pointer(lookupTableParsers[lookupType])),\n markFilteringSet: useMarkFilteringSet ? this.parseUShort() : void 0\n };\n }))) || [];\n };\n Parser.prototype.parseFeatureVariationsList = function() {\n return this.parsePointer32(function() {\n const majorVersion = this.parseUShort();\n const minorVersion = this.parseUShort();\n check_default.argument(majorVersion === 1 && minorVersion < 1, \"GPOS/GSUB feature variations table unknown.\");\n const featureVariations = this.parseRecordList32({\n conditionSetOffset: Parser.offset32,\n featureTableSubstitutionOffset: Parser.offset32\n });\n return featureVariations;\n }) || [];\n };\n Parser.prototype.parseVariationStore = function() {\n const vsOffset = this.relativeOffset;\n const length = this.parseUShort();\n const variationStore = {\n itemVariationStore: this.parseItemVariationStore()\n };\n this.relativeOffset = vsOffset + length + 2;\n return variationStore;\n };\n Parser.prototype.parseItemVariationStore = function() {\n const itemStoreOffset = this.relativeOffset;\n const iVStore = {\n format: this.parseUShort(),\n variationRegions: [],\n itemVariationSubtables: []\n };\n const variationRegionListOffset = this.parseOffset32();\n const itemVariationDataCount = this.parseUShort();\n const itemVariationDataOffsets = this.parseULongList(itemVariationDataCount);\n this.relativeOffset = itemStoreOffset + variationRegionListOffset;\n iVStore.variationRegions = this.parseVariationRegionList();\n for (let i = 0; i < itemVariationDataCount; i++) {\n const subtableOffset = itemVariationDataOffsets[i];\n this.relativeOffset = itemStoreOffset + subtableOffset;\n iVStore.itemVariationSubtables.push(this.parseItemVariationSubtable());\n }\n return iVStore;\n };\n Parser.prototype.parseVariationRegionList = function() {\n const axisCount = this.parseUShort();\n const regionCount = this.parseUShort();\n return this.parseRecordList(regionCount, {\n regionAxes: Parser.recordList(axisCount, {\n startCoord: Parser.f2Dot14,\n peakCoord: Parser.f2Dot14,\n endCoord: Parser.f2Dot14\n })\n });\n };\n Parser.prototype.parseItemVariationSubtable = function() {\n const itemCount = this.parseUShort();\n const wordDeltaCount = this.parseUShort();\n const regionIndexes = this.parseUShortList();\n const regionIndexCount = regionIndexes.length;\n const subtable = {\n regionIndexes,\n deltaSets: itemCount && regionIndexCount ? this.parseDeltaSets(itemCount, wordDeltaCount, regionIndexCount) : []\n };\n return subtable;\n };\n Parser.prototype.parseDeltaSetIndexMap = function() {\n const format = this.parseByte();\n const entryFormat = this.parseByte();\n const map = [];\n let mapCount = 0;\n switch (format) {\n case 0:\n mapCount = this.parseUShort();\n break;\n case 1:\n mapCount = this.parseULong();\n break;\n default:\n console.error(`unsupported DeltaSetIndexMap format ${format}`);\n }\n if (!mapCount) return {\n format,\n entryFormat\n };\n const bitCount = (entryFormat & masks.INNER_INDEX_BIT_COUNT_MASK) + 1;\n const entrySize = ((entryFormat & masks.MAP_ENTRY_SIZE_MASK) >> 4) + 1;\n for (let n = 0; n < mapCount; n++) {\n let entry;\n if (entrySize === 1) {\n entry = this.parseByte();\n } else if (entrySize === 2) {\n entry = this.parseUShort();\n } else if (entrySize === 3) {\n entry = this.parseUInt24();\n } else if (entrySize === 4) {\n entry = this.parseULong();\n } else {\n throw new Error(`Invalid entry size of ${entrySize}`);\n }\n const outerIndex = entry >> bitCount;\n const innerIndex = entry & (1 << bitCount) - 1;\n map.push({ outerIndex, innerIndex });\n }\n return {\n format,\n entryFormat,\n map\n };\n };\n Parser.prototype.parseDeltaSets = function(itemCount, wordDeltaCount, regionIndexCount) {\n const deltas = Array.from({ length: itemCount }, () => []);\n const longFlag = wordDeltaCount & masks.LONG_WORDS;\n const wordCount = wordDeltaCount & masks.WORD_DELTA_COUNT_MASK;\n if (wordCount > regionIndexCount) {\n throw Error(\"wordCount must be less than or equal to regionIndexCount\");\n }\n const wordParser = (longFlag ? this.parseLong : this.parseShort).bind(this);\n const restParser = (longFlag ? this.parseShort : this.parseChar).bind(this);\n for (let i = 0; i < itemCount; i++) {\n for (let j = 0; j < regionIndexCount; j++) {\n if (j < wordCount) {\n deltas[i].push(wordParser());\n } else {\n deltas[i].push(restParser());\n }\n }\n }\n return deltas;\n };\n Parser.prototype.parseTupleVariationStoreList = function(axisCount, flavor, glyphs) {\n const glyphCount = this.parseUShort();\n const flags = this.parseUShort();\n const offsetSizeIs32Bit = flags & 1;\n const glyphVariationDataArrayOffset = this.parseOffset32();\n const parseOffset = (offsetSizeIs32Bit ? this.parseULong : this.parseUShort).bind(this);\n const glyphVariations = {};\n let currentOffset = parseOffset();\n if (!offsetSizeIs32Bit) currentOffset *= 2;\n let nextOffset;\n for (let i = 0; i < glyphCount; i++) {\n nextOffset = parseOffset();\n if (!offsetSizeIs32Bit) nextOffset *= 2;\n const length = nextOffset - currentOffset;\n glyphVariations[i] = length ? this.parseTupleVariationStore(\n glyphVariationDataArrayOffset + currentOffset,\n axisCount,\n flavor,\n glyphs,\n i\n ) : void 0;\n currentOffset = nextOffset;\n }\n return glyphVariations;\n };\n Parser.prototype.parseTupleVariationStore = function(tableOffset, axisCount, flavor, glyphs, glyphIndex) {\n const relativeOffset = this.relativeOffset;\n this.relativeOffset = tableOffset;\n if (flavor === \"cvar\") {\n this.relativeOffset += 4;\n }\n const tupleVariationCount = this.parseUShort();\n const hasSharedPoints = !!(tupleVariationCount & masks.SHARED_POINT_NUMBERS);\n const count = tupleVariationCount & masks.COUNT_MASK;\n let dataOffset = this.parseOffset16();\n const headers = [];\n let sharedPoints = [];\n for (let h = 0; h < count; h++) {\n const headerData = this.parseTupleVariationHeader(axisCount, flavor);\n headers.push(headerData);\n }\n if (this.relativeOffset !== tableOffset + dataOffset) {\n console.warn(`Unexpected offset after parsing tuple variation headers! Expected ${tableOffset + dataOffset}, actually ${this.relativeOffset}`);\n this.relativeOffset = tableOffset + dataOffset;\n }\n if (hasSharedPoints) {\n sharedPoints = this.parsePackedPointNumbers();\n }\n let serializedDataOffset = this.relativeOffset;\n for (let h = 0; h < count; h++) {\n const header = headers[h];\n header.privatePoints = [];\n this.relativeOffset = serializedDataOffset;\n if (flavor === \"cvar\" && !header.peakTuple) {\n console.warn(\"An embedded peak tuple is required in TupleVariationHeaders for the cvar table.\");\n }\n if (header.flags.privatePointNumbers) {\n header.privatePoints = this.parsePackedPointNumbers();\n }\n delete header.flags;\n const deltasOffset = this.offset;\n const deltasRelativeOffset = this.relativeOffset;\n const defineDeltas = (propertyName) => {\n let _deltas = void 0;\n let _deltasY = void 0;\n const parseDeltas = () => {\n let pointsCount = 0;\n if (flavor === \"gvar\") {\n pointsCount = header.privatePoints.length || sharedPoints.length;\n if (!pointsCount) {\n const glyph = glyphs.get(glyphIndex);\n glyph.path;\n pointsCount = glyph.points.length;\n pointsCount += 4;\n }\n } else if (flavor === \"cvar\") {\n pointsCount = glyphs.length;\n }\n this.offset = deltasOffset;\n this.relativeOffset = deltasRelativeOffset;\n _deltas = this.parsePackedDeltas(pointsCount);\n if (flavor === \"gvar\") {\n _deltasY = this.parsePackedDeltas(pointsCount);\n }\n };\n return {\n configurable: true,\n get: function() {\n if (_deltas === void 0) parseDeltas();\n return propertyName === \"deltasY\" ? _deltasY : _deltas;\n },\n set: function(deltas) {\n if (_deltas === void 0) parseDeltas();\n if (propertyName === \"deltasY\") {\n _deltasY = deltas;\n } else {\n _deltas = deltas;\n }\n }\n };\n };\n Object.defineProperty(header, \"deltas\", defineDeltas.call(this, \"deltas\"));\n if (flavor === \"gvar\") {\n Object.defineProperty(header, \"deltasY\", defineDeltas.call(this, \"deltasY\"));\n }\n serializedDataOffset += header.variationDataSize;\n delete header.variationDataSize;\n }\n this.relativeOffset = relativeOffset;\n const result = {\n headers\n };\n result.sharedPoints = sharedPoints;\n return result;\n };\n Parser.prototype.parseTupleVariationHeader = function(axisCount, flavor) {\n const variationDataSize = this.parseUShort();\n const tupleIndex = this.parseUShort();\n const embeddedPeakTuple = !!(tupleIndex & masks.EMBEDDED_PEAK_TUPLE);\n const intermediateRegion = !!(tupleIndex & masks.INTERMEDIATE_REGION);\n const privatePointNumbers = !!(tupleIndex & masks.PRIVATE_POINT_NUMBERS);\n const sharedTupleRecordsIndex = embeddedPeakTuple ? void 0 : tupleIndex & masks.TUPLE_INDEX_MASK;\n const peakTuple = embeddedPeakTuple ? this.parseTupleRecords(1, axisCount)[0] : void 0;\n const intermediateStartTuple = intermediateRegion ? this.parseTupleRecords(1, axisCount)[0] : void 0;\n const intermediateEndTuple = intermediateRegion ? this.parseTupleRecords(1, axisCount)[0] : void 0;\n const result = {\n variationDataSize,\n peakTuple,\n intermediateStartTuple,\n intermediateEndTuple,\n flags: {\n embeddedPeakTuple,\n intermediateRegion,\n privatePointNumbers\n }\n };\n if (flavor === \"gvar\") {\n result.sharedTupleRecordsIndex = sharedTupleRecordsIndex;\n }\n return result;\n };\n Parser.prototype.parsePackedPointNumbers = function() {\n const countByte1 = this.parseByte();\n const points = [];\n let totalPointCount = countByte1;\n if (countByte1 >= 128) {\n const countByte2 = this.parseByte();\n totalPointCount = (countByte1 & masks.POINT_RUN_COUNT_MASK) << 8 | countByte2;\n }\n let lastPoint = 0;\n while (points.length < totalPointCount) {\n const controlByte = this.parseByte();\n const numbersAre16Bit = !!(controlByte & masks.POINTS_ARE_WORDS);\n let runCount = (controlByte & masks.POINT_RUN_COUNT_MASK) + 1;\n for (let i = 0; i < runCount && points.length < totalPointCount; i++) {\n let pointDelta;\n if (numbersAre16Bit) {\n pointDelta = this.parseUShort();\n } else {\n pointDelta = this.parseByte();\n }\n lastPoint = lastPoint + pointDelta;\n points.push(lastPoint);\n }\n }\n return points;\n };\n Parser.prototype.parsePackedDeltas = function(expectedCount) {\n const deltas = [];\n while (deltas.length < expectedCount) {\n const controlByte = this.parseByte();\n const zeroData = !!(controlByte & masks.DELTAS_ARE_ZERO);\n const deltaWords = !!(controlByte & masks.DELTAS_ARE_WORDS);\n const runCount = (controlByte & masks.DELTA_RUN_COUNT_MASK) + 1;\n for (let i = 0; i < runCount && deltas.length < expectedCount; i++) {\n if (zeroData) {\n deltas.push(0);\n } else if (deltaWords) {\n deltas.push(this.parseShort());\n } else {\n deltas.push(this.parseChar());\n }\n }\n }\n return deltas;\n };\n var parse_default = {\n getByte,\n getCard8: getByte,\n getUShort,\n getCard16: getUShort,\n getShort,\n getUInt24,\n getULong,\n getFixed,\n getTag,\n getOffset,\n getBytes,\n bytesToString,\n Parser\n };\n\n // src/tables/name.mjs\n var nameTableNames = [\n \"copyright\",\n // 0\n \"fontFamily\",\n // 1\n \"fontSubfamily\",\n // 2\n \"uniqueID\",\n // 3\n \"fullName\",\n // 4\n \"version\",\n // 5\n \"postScriptName\",\n // 6\n \"trademark\",\n // 7\n \"manufacturer\",\n // 8\n \"designer\",\n // 9\n \"description\",\n // 10\n \"manufacturerURL\",\n // 11\n \"designerURL\",\n // 12\n \"license\",\n // 13\n \"licenseURL\",\n // 14\n \"reserved\",\n // 15\n \"preferredFamily\",\n // 16\n \"preferredSubfamily\",\n // 17\n \"compatibleFullName\",\n // 18\n \"sampleText\",\n // 19\n \"postScriptFindFontName\",\n // 20\n \"wwsFamily\",\n // 21\n \"wwsSubfamily\"\n // 22\n ];\n var macLanguages = {\n 0: \"en\",\n 1: \"fr\",\n 2: \"de\",\n 3: \"it\",\n 4: \"nl\",\n 5: \"sv\",\n 6: \"es\",\n 7: \"da\",\n 8: \"pt\",\n 9: \"no\",\n 10: \"he\",\n 11: \"ja\",\n 12: \"ar\",\n 13: \"fi\",\n 14: \"el\",\n 15: \"is\",\n 16: \"mt\",\n 17: \"tr\",\n 18: \"hr\",\n 19: \"zh-Hant\",\n 20: \"ur\",\n 21: \"hi\",\n 22: \"th\",\n 23: \"ko\",\n 24: \"lt\",\n 25: \"pl\",\n 26: \"hu\",\n 27: \"es\",\n 28: \"lv\",\n 29: \"se\",\n 30: \"fo\",\n 31: \"fa\",\n 32: \"ru\",\n 33: \"zh\",\n 34: \"nl-BE\",\n 35: \"ga\",\n 36: \"sq\",\n 37: \"ro\",\n 38: \"cz\",\n 39: \"sk\",\n 40: \"si\",\n 41: \"yi\",\n 42: \"sr\",\n 43: \"mk\",\n 44: \"bg\",\n 45: \"uk\",\n 46: \"be\",\n 47: \"uz\",\n 48: \"kk\",\n 49: \"az-Cyrl\",\n 50: \"az-Arab\",\n 51: \"hy\",\n 52: \"ka\",\n 53: \"mo\",\n 54: \"ky\",\n 55: \"tg\",\n 56: \"tk\",\n 57: \"mn-CN\",\n 58: \"mn\",\n 59: \"ps\",\n 60: \"ks\",\n 61: \"ku\",\n 62: \"sd\",\n 63: \"bo\",\n 64: \"ne\",\n 65: \"sa\",\n 66: \"mr\",\n 67: \"bn\",\n 68: \"as\",\n 69: \"gu\",\n 70: \"pa\",\n 71: \"or\",\n 72: \"ml\",\n 73: \"kn\",\n 74: \"ta\",\n 75: \"te\",\n 76: \"si\",\n 77: \"my\",\n 78: \"km\",\n 79: \"lo\",\n 80: \"vi\",\n 81: \"id\",\n 82: \"tl\",\n 83: \"ms\",\n 84: \"ms-Arab\",\n 85: \"am\",\n 86: \"ti\",\n 87: \"om\",\n 88: \"so\",\n 89: \"sw\",\n 90: \"rw\",\n 91: \"rn\",\n 92: \"ny\",\n 93: \"mg\",\n 94: \"eo\",\n 128: \"cy\",\n 129: \"eu\",\n 130: \"ca\",\n 131: \"la\",\n 132: \"qu\",\n 133: \"gn\",\n 134: \"ay\",\n 135: \"tt\",\n 136: \"ug\",\n 137: \"dz\",\n 138: \"jv\",\n 139: \"su\",\n 140: \"gl\",\n 141: \"af\",\n 142: \"br\",\n 143: \"iu\",\n 144: \"gd\",\n 145: \"gv\",\n 146: \"ga\",\n 147: \"to\",\n 148: \"el-polyton\",\n 149: \"kl\",\n 150: \"az\",\n 151: \"nn\"\n };\n var macLanguageToScript = {\n 0: 0,\n // langEnglish \u2192 smRoman\n 1: 0,\n // langFrench \u2192 smRoman\n 2: 0,\n // langGerman \u2192 smRoman\n 3: 0,\n // langItalian \u2192 smRoman\n 4: 0,\n // langDutch \u2192 smRoman\n 5: 0,\n // langSwedish \u2192 smRoman\n 6: 0,\n // langSpanish \u2192 smRoman\n 7: 0,\n // langDanish \u2192 smRoman\n 8: 0,\n // langPortuguese \u2192 smRoman\n 9: 0,\n // langNorwegian \u2192 smRoman\n 10: 5,\n // langHebrew \u2192 smHebrew\n 11: 1,\n // langJapanese \u2192 smJapanese\n 12: 4,\n // langArabic \u2192 smArabic\n 13: 0,\n // langFinnish \u2192 smRoman\n 14: 6,\n // langGreek \u2192 smGreek\n 15: 0,\n // langIcelandic \u2192 smRoman (modified)\n 16: 0,\n // langMaltese \u2192 smRoman\n 17: 0,\n // langTurkish \u2192 smRoman (modified)\n 18: 0,\n // langCroatian \u2192 smRoman (modified)\n 19: 2,\n // langTradChinese \u2192 smTradChinese\n 20: 4,\n // langUrdu \u2192 smArabic\n 21: 9,\n // langHindi \u2192 smDevanagari\n 22: 21,\n // langThai \u2192 smThai\n 23: 3,\n // langKorean \u2192 smKorean\n 24: 29,\n // langLithuanian \u2192 smCentralEuroRoman\n 25: 29,\n // langPolish \u2192 smCentralEuroRoman\n 26: 29,\n // langHungarian \u2192 smCentralEuroRoman\n 27: 29,\n // langEstonian \u2192 smCentralEuroRoman\n 28: 29,\n // langLatvian \u2192 smCentralEuroRoman\n 29: 0,\n // langSami \u2192 smRoman\n 30: 0,\n // langFaroese \u2192 smRoman (modified)\n 31: 4,\n // langFarsi \u2192 smArabic (modified)\n 32: 7,\n // langRussian \u2192 smCyrillic\n 33: 25,\n // langSimpChinese \u2192 smSimpChinese\n 34: 0,\n // langFlemish \u2192 smRoman\n 35: 0,\n // langIrishGaelic \u2192 smRoman (modified)\n 36: 0,\n // langAlbanian \u2192 smRoman\n 37: 0,\n // langRomanian \u2192 smRoman (modified)\n 38: 29,\n // langCzech \u2192 smCentralEuroRoman\n 39: 29,\n // langSlovak \u2192 smCentralEuroRoman\n 40: 0,\n // langSlovenian \u2192 smRoman (modified)\n 41: 5,\n // langYiddish \u2192 smHebrew\n 42: 7,\n // langSerbian \u2192 smCyrillic\n 43: 7,\n // langMacedonian \u2192 smCyrillic\n 44: 7,\n // langBulgarian \u2192 smCyrillic\n 45: 7,\n // langUkrainian \u2192 smCyrillic (modified)\n 46: 7,\n // langByelorussian \u2192 smCyrillic\n 47: 7,\n // langUzbek \u2192 smCyrillic\n 48: 7,\n // langKazakh \u2192 smCyrillic\n 49: 7,\n // langAzerbaijani \u2192 smCyrillic\n 50: 4,\n // langAzerbaijanAr \u2192 smArabic\n 51: 24,\n // langArmenian \u2192 smArmenian\n 52: 23,\n // langGeorgian \u2192 smGeorgian\n 53: 7,\n // langMoldavian \u2192 smCyrillic\n 54: 7,\n // langKirghiz \u2192 smCyrillic\n 55: 7,\n // langTajiki \u2192 smCyrillic\n 56: 7,\n // langTurkmen \u2192 smCyrillic\n 57: 27,\n // langMongolian \u2192 smMongolian\n 58: 7,\n // langMongolianCyr \u2192 smCyrillic\n 59: 4,\n // langPashto \u2192 smArabic\n 60: 4,\n // langKurdish \u2192 smArabic\n 61: 4,\n // langKashmiri \u2192 smArabic\n 62: 4,\n // langSindhi \u2192 smArabic\n 63: 26,\n // langTibetan \u2192 smTibetan\n 64: 9,\n // langNepali \u2192 smDevanagari\n 65: 9,\n // langSanskrit \u2192 smDevanagari\n 66: 9,\n // langMarathi \u2192 smDevanagari\n 67: 13,\n // langBengali \u2192 smBengali\n 68: 13,\n // langAssamese \u2192 smBengali\n 69: 11,\n // langGujarati \u2192 smGujarati\n 70: 10,\n // langPunjabi \u2192 smGurmukhi\n 71: 12,\n // langOriya \u2192 smOriya\n 72: 17,\n // langMalayalam \u2192 smMalayalam\n 73: 16,\n // langKannada \u2192 smKannada\n 74: 14,\n // langTamil \u2192 smTamil\n 75: 15,\n // langTelugu \u2192 smTelugu\n 76: 18,\n // langSinhalese \u2192 smSinhalese\n 77: 19,\n // langBurmese \u2192 smBurmese\n 78: 20,\n // langKhmer \u2192 smKhmer\n 79: 22,\n // langLao \u2192 smLao\n 80: 30,\n // langVietnamese \u2192 smVietnamese\n 81: 0,\n // langIndonesian \u2192 smRoman\n 82: 0,\n // langTagalog \u2192 smRoman\n 83: 0,\n // langMalayRoman \u2192 smRoman\n 84: 4,\n // langMalayArabic \u2192 smArabic\n 85: 28,\n // langAmharic \u2192 smEthiopic\n 86: 28,\n // langTigrinya \u2192 smEthiopic\n 87: 28,\n // langOromo \u2192 smEthiopic\n 88: 0,\n // langSomali \u2192 smRoman\n 89: 0,\n // langSwahili \u2192 smRoman\n 90: 0,\n // langKinyarwanda \u2192 smRoman\n 91: 0,\n // langRundi \u2192 smRoman\n 92: 0,\n // langNyanja \u2192 smRoman\n 93: 0,\n // langMalagasy \u2192 smRoman\n 94: 0,\n // langEsperanto \u2192 smRoman\n 128: 0,\n // langWelsh \u2192 smRoman (modified)\n 129: 0,\n // langBasque \u2192 smRoman\n 130: 0,\n // langCatalan \u2192 smRoman\n 131: 0,\n // langLatin \u2192 smRoman\n 132: 0,\n // langQuechua \u2192 smRoman\n 133: 0,\n // langGuarani \u2192 smRoman\n 134: 0,\n // langAymara \u2192 smRoman\n 135: 7,\n // langTatar \u2192 smCyrillic\n 136: 4,\n // langUighur \u2192 smArabic\n 137: 26,\n // langDzongkha \u2192 smTibetan\n 138: 0,\n // langJavaneseRom \u2192 smRoman\n 139: 0,\n // langSundaneseRom \u2192 smRoman\n 140: 0,\n // langGalician \u2192 smRoman\n 141: 0,\n // langAfrikaans \u2192 smRoman\n 142: 0,\n // langBreton \u2192 smRoman (modified)\n 143: 28,\n // langInuktitut \u2192 smEthiopic (modified)\n 144: 0,\n // langScottishGaelic \u2192 smRoman (modified)\n 145: 0,\n // langManxGaelic \u2192 smRoman (modified)\n 146: 0,\n // langIrishGaelicScript \u2192 smRoman (modified)\n 147: 0,\n // langTongan \u2192 smRoman\n 148: 6,\n // langGreekAncient \u2192 smRoman\n 149: 0,\n // langGreenlandic \u2192 smRoman\n 150: 0,\n // langAzerbaijanRoman \u2192 smRoman\n 151: 0\n // langNynorsk \u2192 smRoman\n };\n var windowsLanguages = {\n 1078: \"af\",\n 1052: \"sq\",\n 1156: \"gsw\",\n 1118: \"am\",\n 5121: \"ar-DZ\",\n 15361: \"ar-BH\",\n 3073: \"ar\",\n 2049: \"ar-IQ\",\n 11265: \"ar-JO\",\n 13313: \"ar-KW\",\n 12289: \"ar-LB\",\n 4097: \"ar-LY\",\n 6145: \"ary\",\n 8193: \"ar-OM\",\n 16385: \"ar-QA\",\n 1025: \"ar-SA\",\n 10241: \"ar-SY\",\n 7169: \"aeb\",\n 14337: \"ar-AE\",\n 9217: \"ar-YE\",\n 1067: \"hy\",\n 1101: \"as\",\n 2092: \"az-Cyrl\",\n 1068: \"az\",\n 1133: \"ba\",\n 1069: \"eu\",\n 1059: \"be\",\n 2117: \"bn\",\n 1093: \"bn-IN\",\n 8218: \"bs-Cyrl\",\n 5146: \"bs\",\n 1150: \"br\",\n 1026: \"bg\",\n 1027: \"ca\",\n 3076: \"zh-HK\",\n 5124: \"zh-MO\",\n 2052: \"zh\",\n 4100: \"zh-SG\",\n 1028: \"zh-TW\",\n 1155: \"co\",\n 1050: \"hr\",\n 4122: \"hr-BA\",\n 1029: \"cs\",\n 1030: \"da\",\n 1164: \"prs\",\n 1125: \"dv\",\n 2067: \"nl-BE\",\n 1043: \"nl\",\n 3081: \"en-AU\",\n 10249: \"en-BZ\",\n 4105: \"en-CA\",\n 9225: \"en-029\",\n 16393: \"en-IN\",\n 6153: \"en-IE\",\n 8201: \"en-JM\",\n 17417: \"en-MY\",\n 5129: \"en-NZ\",\n 13321: \"en-PH\",\n 18441: \"en-SG\",\n 7177: \"en-ZA\",\n 11273: \"en-TT\",\n 2057: \"en-GB\",\n 1033: \"en\",\n 12297: \"en-ZW\",\n 1061: \"et\",\n 1080: \"fo\",\n 1124: \"fil\",\n 1035: \"fi\",\n 2060: \"fr-BE\",\n 3084: \"fr-CA\",\n 1036: \"fr\",\n 5132: \"fr-LU\",\n 6156: \"fr-MC\",\n 4108: \"fr-CH\",\n 1122: \"fy\",\n 1110: \"gl\",\n 1079: \"ka\",\n 3079: \"de-AT\",\n 1031: \"de\",\n 5127: \"de-LI\",\n 4103: \"de-LU\",\n 2055: \"de-CH\",\n 1032: \"el\",\n 1135: \"kl\",\n 1095: \"gu\",\n 1128: \"ha\",\n 1037: \"he\",\n 1081: \"hi\",\n 1038: \"hu\",\n 1039: \"is\",\n 1136: \"ig\",\n 1057: \"id\",\n 1117: \"iu\",\n 2141: \"iu-Latn\",\n 2108: \"ga\",\n 1076: \"xh\",\n 1077: \"zu\",\n 1040: \"it\",\n 2064: \"it-CH\",\n 1041: \"ja\",\n 1099: \"kn\",\n 1087: \"kk\",\n 1107: \"km\",\n 1158: \"quc\",\n 1159: \"rw\",\n 1089: \"sw\",\n 1111: \"kok\",\n 1042: \"ko\",\n 1088: \"ky\",\n 1108: \"lo\",\n 1062: \"lv\",\n 1063: \"lt\",\n 2094: \"dsb\",\n 1134: \"lb\",\n 1071: \"mk\",\n 2110: \"ms-BN\",\n 1086: \"ms\",\n 1100: \"ml\",\n 1082: \"mt\",\n 1153: \"mi\",\n 1146: \"arn\",\n 1102: \"mr\",\n 1148: \"moh\",\n 1104: \"mn\",\n 2128: \"mn-CN\",\n 1121: \"ne\",\n 1044: \"nb\",\n 2068: \"nn\",\n 1154: \"oc\",\n 1096: \"or\",\n 1123: \"ps\",\n 1045: \"pl\",\n 1046: \"pt\",\n 2070: \"pt-PT\",\n 1094: \"pa\",\n 1131: \"qu-BO\",\n 2155: \"qu-EC\",\n 3179: \"qu\",\n 1048: \"ro\",\n 1047: \"rm\",\n 1049: \"ru\",\n 9275: \"smn\",\n 4155: \"smj-NO\",\n 5179: \"smj\",\n 3131: \"se-FI\",\n 1083: \"se\",\n 2107: \"se-SE\",\n 8251: \"sms\",\n 6203: \"sma-NO\",\n 7227: \"sms\",\n 1103: \"sa\",\n 7194: \"sr-Cyrl-BA\",\n 3098: \"sr\",\n 6170: \"sr-Latn-BA\",\n 2074: \"sr-Latn\",\n 1132: \"nso\",\n 1074: \"tn\",\n 1115: \"si\",\n 1051: \"sk\",\n 1060: \"sl\",\n 11274: \"es-AR\",\n 16394: \"es-BO\",\n 13322: \"es-CL\",\n 9226: \"es-CO\",\n 5130: \"es-CR\",\n 7178: \"es-DO\",\n 12298: \"es-EC\",\n 17418: \"es-SV\",\n 4106: \"es-GT\",\n 18442: \"es-HN\",\n 2058: \"es-MX\",\n 19466: \"es-NI\",\n 6154: \"es-PA\",\n 15370: \"es-PY\",\n 10250: \"es-PE\",\n 20490: \"es-PR\",\n // Microsoft has defined two different language codes for\n // \u201CSpanish with modern sorting\u201D and \u201CSpanish with traditional\n // sorting\u201D. This makes sense for collation APIs, and it would be\n // possible to express this in BCP 47 language tags via Unicode\n // extensions (eg., es-u-co-trad is Spanish with traditional\n // sorting). However, for storing names in fonts, the distinction\n // does not make sense, so we give \u201Ces\u201D in both cases.\n 3082: \"es\",\n 1034: \"es\",\n 21514: \"es-US\",\n 14346: \"es-UY\",\n 8202: \"es-VE\",\n 2077: \"sv-FI\",\n 1053: \"sv\",\n 1114: \"syr\",\n 1064: \"tg\",\n 2143: \"tzm\",\n 1097: \"ta\",\n 1092: \"tt\",\n 1098: \"te\",\n 1054: \"th\",\n 1105: \"bo\",\n 1055: \"tr\",\n 1090: \"tk\",\n 1152: \"ug\",\n 1058: \"uk\",\n 1070: \"hsb\",\n 1056: \"ur\",\n 2115: \"uz-Cyrl\",\n 1091: \"uz\",\n 1066: \"vi\",\n 1106: \"cy\",\n 1160: \"wo\",\n 1157: \"sah\",\n 1144: \"ii\",\n 1130: \"yo\"\n };\n function getLanguageCode(platformID, languageID, ltag) {\n switch (platformID) {\n case 0:\n if (languageID === 65535) {\n return \"und\";\n } else if (ltag) {\n return ltag[languageID];\n }\n break;\n case 1:\n return macLanguages[languageID];\n case 3:\n return windowsLanguages[languageID];\n }\n return void 0;\n }\n var utf16 = \"utf-16\";\n var macScriptEncodings = {\n 0: \"macintosh\",\n // smRoman\n 1: \"x-mac-japanese\",\n // smJapanese\n 2: \"x-mac-chinesetrad\",\n // smTradChinese\n 3: \"x-mac-korean\",\n // smKorean\n 6: \"x-mac-greek\",\n // smGreek\n 7: \"x-mac-cyrillic\",\n // smCyrillic\n 9: \"x-mac-devanagai\",\n // smDevanagari\n 10: \"x-mac-gurmukhi\",\n // smGurmukhi\n 11: \"x-mac-gujarati\",\n // smGujarati\n 12: \"x-mac-oriya\",\n // smOriya\n 13: \"x-mac-bengali\",\n // smBengali\n 14: \"x-mac-tamil\",\n // smTamil\n 15: \"x-mac-telugu\",\n // smTelugu\n 16: \"x-mac-kannada\",\n // smKannada\n 17: \"x-mac-malayalam\",\n // smMalayalam\n 18: \"x-mac-sinhalese\",\n // smSinhalese\n 19: \"x-mac-burmese\",\n // smBurmese\n 20: \"x-mac-khmer\",\n // smKhmer\n 21: \"x-mac-thai\",\n // smThai\n 22: \"x-mac-lao\",\n // smLao\n 23: \"x-mac-georgian\",\n // smGeorgian\n 24: \"x-mac-armenian\",\n // smArmenian\n 25: \"x-mac-chinesesimp\",\n // smSimpChinese\n 26: \"x-mac-tibetan\",\n // smTibetan\n 27: \"x-mac-mongolian\",\n // smMongolian\n 28: \"x-mac-ethiopic\",\n // smEthiopic\n 29: \"x-mac-ce\",\n // smCentralEuroRoman\n 30: \"x-mac-vietnamese\",\n // smVietnamese\n 31: \"x-mac-extarabic\"\n // smExtArabic\n };\n var macLanguageEncodings = {\n 15: \"x-mac-icelandic\",\n // langIcelandic\n 17: \"x-mac-turkish\",\n // langTurkish\n 18: \"x-mac-croatian\",\n // langCroatian\n 24: \"x-mac-ce\",\n // langLithuanian\n 25: \"x-mac-ce\",\n // langPolish\n 26: \"x-mac-ce\",\n // langHungarian\n 27: \"x-mac-ce\",\n // langEstonian\n 28: \"x-mac-ce\",\n // langLatvian\n 30: \"x-mac-icelandic\",\n // langFaroese\n 37: \"x-mac-romanian\",\n // langRomanian\n 38: \"x-mac-ce\",\n // langCzech\n 39: \"x-mac-ce\",\n // langSlovak\n 40: \"x-mac-ce\",\n // langSlovenian\n 143: \"x-mac-inuit\",\n // langInuktitut\n 146: \"x-mac-gaelic\"\n // langIrishGaelicScript\n };\n function getEncoding(platformID, encodingID, languageID) {\n switch (platformID) {\n case 0:\n return utf16;\n case 1:\n return macLanguageEncodings[languageID] || macScriptEncodings[encodingID];\n case 3:\n if (encodingID === 1 || encodingID === 10) {\n return utf16;\n }\n break;\n }\n return void 0;\n }\n var platforms = {\n 0: \"unicode\",\n 1: \"macintosh\",\n 2: \"reserved\",\n 3: \"windows\"\n };\n function getPlatform(platformID) {\n return platforms[platformID];\n }\n function parseNameTable(data, start, ltag) {\n const name = {};\n const p = new parse_default.Parser(data, start);\n const format = p.parseUShort();\n const count = p.parseUShort();\n const stringOffset = p.offset + p.parseUShort();\n for (let i = 0; i < count; i++) {\n const platformID = p.parseUShort();\n const encodingID = p.parseUShort();\n const languageID = p.parseUShort();\n const nameID = p.parseUShort();\n const property = nameTableNames[nameID] || nameID;\n const byteLength = p.parseUShort();\n const offset = p.parseUShort();\n const language = getLanguageCode(platformID, languageID, ltag);\n const encoding = getEncoding(platformID, encodingID, languageID);\n const platformName = getPlatform(platformID);\n if (encoding !== void 0 && language !== void 0 && platformName !== void 0) {\n let text;\n if (encoding === utf16) {\n text = decode.UTF16(data, stringOffset + offset, byteLength);\n } else {\n text = decode.MACSTRING(data, stringOffset + offset, byteLength, encoding);\n }\n if (text) {\n let platform = name[platformName];\n if (platform === void 0) {\n platform = name[platformName] = {};\n }\n let translations = platform[property];\n if (translations === void 0) {\n translations = platform[property] = {};\n }\n translations[language] = text;\n }\n }\n }\n if (format === 1) {\n p.parseUShort();\n }\n return name;\n }\n function reverseDict(dict) {\n const result = {};\n for (let key in dict) {\n result[dict[key]] = parseInt(key);\n }\n return result;\n }\n function makeNameRecord(platformID, encodingID, languageID, nameID, length, offset) {\n return new table_default.Record(\"NameRecord\", [\n { name: \"platformID\", type: \"USHORT\", value: platformID },\n { name: \"encodingID\", type: \"USHORT\", value: encodingID },\n { name: \"languageID\", type: \"USHORT\", value: languageID },\n { name: \"nameID\", type: \"USHORT\", value: nameID },\n { name: \"length\", type: \"USHORT\", value: length },\n { name: \"offset\", type: \"USHORT\", value: offset }\n ]);\n }\n function findSubArray(needle, haystack) {\n const needleLength = needle.length;\n const limit = haystack.length - needleLength + 1;\n loop:\n for (let pos = 0; pos < limit; pos++) {\n for (; pos < limit; pos++) {\n for (let k = 0; k < needleLength; k++) {\n if (haystack[pos + k] !== needle[k]) {\n continue loop;\n }\n }\n return pos;\n }\n }\n return -1;\n }\n function addStringToPool(s, pool) {\n let offset = findSubArray(s, pool);\n if (offset < 0) {\n offset = pool.length;\n let i = 0;\n const len = s.length;\n for (; i < len; ++i) {\n pool.push(s[i]);\n }\n }\n return offset;\n }\n function makeNameTable(names, ltag) {\n const platformNameIds = reverseDict(platforms);\n const macLanguageIds = reverseDict(macLanguages);\n const windowsLanguageIds = reverseDict(windowsLanguages);\n const nameRecords = [];\n const stringPool = [];\n for (let platform in names) {\n let nameID;\n const nameIDs = [];\n const namesWithNumericKeys = {};\n const nameTableIds = reverseDict(nameTableNames);\n const platformID = platformNameIds[platform];\n for (let key in names[platform]) {\n let id = nameTableIds[key];\n if (id === void 0) {\n id = key;\n }\n nameID = parseInt(id);\n if (isNaN(nameID)) {\n throw new Error('Name table entry \"' + key + '\" does not exist, see nameTableNames for complete list.');\n }\n namesWithNumericKeys[nameID] = names[platform][key];\n nameIDs.push(nameID);\n }\n for (let i = 0; i < nameIDs.length; i++) {\n nameID = nameIDs[i];\n const translations = namesWithNumericKeys[nameID];\n for (let lang in translations) {\n const text = translations[lang];\n if (platformID === 1 || platformID === 0) {\n let macLanguage = macLanguageIds[lang];\n let macScript = macLanguageToScript[macLanguage];\n const macEncoding = getEncoding(platformID, macScript, macLanguage);\n let macName = encode.MACSTRING(text, macEncoding);\n if (platformID === 0) {\n macLanguage = ltag.indexOf(lang);\n if (macLanguage < 0) {\n macLanguage = ltag.length;\n ltag.push(lang);\n }\n macScript = 4;\n macName = encode.UTF16(text);\n }\n if (macName !== void 0) {\n const macNameOffset = addStringToPool(macName, stringPool);\n nameRecords.push(makeNameRecord(\n platformID,\n macScript,\n macLanguage,\n nameID,\n macName.length,\n macNameOffset\n ));\n }\n }\n if (platformID === 3) {\n const winLanguage = windowsLanguageIds[lang];\n if (winLanguage !== void 0) {\n const winName = encode.UTF16(text);\n const winNameOffset = addStringToPool(winName, stringPool);\n nameRecords.push(makeNameRecord(\n 3,\n 1,\n winLanguage,\n nameID,\n winName.length,\n winNameOffset\n ));\n }\n }\n }\n }\n }\n nameRecords.sort(function(a, b) {\n return a.platformID - b.platformID || a.encodingID - b.encodingID || a.languageID - b.languageID || a.nameID - b.nameID;\n });\n const t = new table_default.Table(\"name\", [\n { name: \"format\", type: \"USHORT\", value: 0 },\n { name: \"count\", type: \"USHORT\", value: nameRecords.length },\n { name: \"stringOffset\", type: \"USHORT\", value: 6 + nameRecords.length * 12 }\n ]);\n for (let r = 0; r < nameRecords.length; r++) {\n t.fields.push({ name: \"record_\" + r, type: \"RECORD\", value: nameRecords[r] });\n }\n t.fields.push({ name: \"strings\", type: \"LITERAL\", value: stringPool });\n return t;\n }\n function getNameByID(names, nameID, allowedStandardIDs = []) {\n if (nameID < 256 && nameID in nameTableNames) {\n if (allowedStandardIDs.length && !allowedStandardIDs.includes(parseInt(nameID))) {\n return void 0;\n }\n nameID = nameTableNames[nameID];\n }\n for (let platform in names) {\n for (let nameKey in names[platform]) {\n if (nameKey === nameID || parseInt(nameKey) === nameID) {\n return names[platform][nameKey];\n }\n }\n }\n return void 0;\n }\n var name_default = { parse: parseNameTable, make: makeNameTable, getNameByID };\n\n // src/tables/cmap.mjs\n function parseCmapTableFormat0(cmap, p, platformID, encodingID) {\n cmap.length = p.parseUShort();\n cmap.language = p.parseUShort() - 1;\n const indexMap = p.parseByteList(cmap.length);\n const glyphIndexMap = Object.assign({}, indexMap);\n const encoding = getEncoding(platformID, encodingID, cmap.language);\n const decodingTable = eightBitMacEncodings[encoding];\n for (let i = 0; i < decodingTable.length; i++) {\n glyphIndexMap[decodingTable.charCodeAt(i)] = indexMap[128 + i];\n }\n cmap.glyphIndexMap = glyphIndexMap;\n }\n function parseCmapTableFormat12or13(cmap, p, format) {\n p.parseUShort();\n cmap.length = p.parseULong();\n cmap.language = p.parseULong();\n let groupCount;\n cmap.groupCount = groupCount = p.parseULong();\n cmap.glyphIndexMap = {};\n for (let i = 0; i < groupCount; i += 1) {\n const startCharCode = p.parseULong();\n const endCharCode = p.parseULong();\n let startGlyphId = p.parseULong();\n for (let c = startCharCode; c <= endCharCode; c += 1) {\n cmap.glyphIndexMap[c] = startGlyphId;\n if (format === 12) {\n startGlyphId++;\n }\n }\n }\n }\n function parseCmapTableFormat4(cmap, p, data, start, offset) {\n cmap.length = p.parseUShort();\n cmap.language = p.parseUShort();\n let segCount;\n cmap.segCount = segCount = p.parseUShort() >> 1;\n p.skip(\"uShort\", 3);\n cmap.glyphIndexMap = {};\n const endCountParser = new parse_default.Parser(data, start + offset + 14);\n const startCountParser = new parse_default.Parser(data, start + offset + 16 + segCount * 2);\n const idDeltaParser = new parse_default.Parser(data, start + offset + 16 + segCount * 4);\n const idRangeOffsetParser = new parse_default.Parser(data, start + offset + 16 + segCount * 6);\n let glyphIndexOffset = start + offset + 16 + segCount * 8;\n for (let i = 0; i < segCount - 1; i += 1) {\n let glyphIndex;\n const endCount = endCountParser.parseUShort();\n const startCount = startCountParser.parseUShort();\n const idDelta = idDeltaParser.parseShort();\n const idRangeOffset = idRangeOffsetParser.parseUShort();\n for (let c = startCount; c <= endCount; c += 1) {\n if (idRangeOffset !== 0) {\n glyphIndexOffset = idRangeOffsetParser.offset + idRangeOffsetParser.relativeOffset - 2;\n glyphIndexOffset += idRangeOffset;\n glyphIndexOffset += (c - startCount) * 2;\n glyphIndex = parse_default.getUShort(data, glyphIndexOffset);\n if (glyphIndex !== 0) {\n glyphIndex = glyphIndex + idDelta & 65535;\n }\n } else {\n glyphIndex = c + idDelta & 65535;\n }\n cmap.glyphIndexMap[c] = glyphIndex;\n }\n }\n }\n function parseCmapTableFormat14(cmap, p) {\n const varSelectorList = {};\n p.skip(\"uLong\");\n const numVarSelectorRecords = p.parseULong();\n for (let i = 0; i < numVarSelectorRecords; i += 1) {\n const varSelector = p.parseUInt24();\n const varSelectorRecord = {\n varSelector\n };\n const defaultUVSOffset = p.parseOffset32();\n const nonDefaultUVSOffset = p.parseOffset32();\n const currentOffset = p.relativeOffset;\n if (defaultUVSOffset) {\n p.relativeOffset = defaultUVSOffset;\n varSelectorRecord.defaultUVS = p.parseStruct({\n ranges: function() {\n return p.parseRecordList32({\n startUnicodeValue: p.parseUInt24,\n additionalCount: p.parseByte\n });\n }\n });\n }\n if (nonDefaultUVSOffset) {\n p.relativeOffset = nonDefaultUVSOffset;\n varSelectorRecord.nonDefaultUVS = p.parseStruct({\n uvsMappings: function() {\n const map = {};\n const list = p.parseRecordList32({\n unicodeValue: p.parseUInt24,\n glyphID: p.parseUShort\n });\n for (let i2 = 0; i2 < list.length; i2 += 1) {\n map[list[i2].unicodeValue] = list[i2];\n }\n return map;\n }\n });\n }\n varSelectorList[varSelector] = varSelectorRecord;\n p.relativeOffset = currentOffset;\n }\n cmap.varSelectorList = varSelectorList;\n }\n function parseCmapTable(data, start) {\n const cmap = {};\n cmap.version = parse_default.getUShort(data, start);\n check_default.argument(cmap.version === 0, \"cmap table version should be 0.\");\n cmap.numTables = parse_default.getUShort(data, start + 2);\n let format14Parser = null;\n let format14offset = -1;\n let offset = -1;\n let platformId = null;\n let encodingId = null;\n const platform0Encodings = [0, 1, 2, 3, 4, 6];\n const platform3Encodings = [0, 1, 10];\n for (let i = cmap.numTables - 1; i >= 0; i -= 1) {\n platformId = parse_default.getUShort(data, start + 4 + i * 8);\n encodingId = parse_default.getUShort(data, start + 4 + i * 8 + 2);\n if (platformId === 3 && platform3Encodings.includes(encodingId) || platformId === 0 && platform0Encodings.includes(encodingId) || platformId === 1 && encodingId === 0) {\n if (offset > 0) continue;\n offset = parse_default.getULong(data, start + 4 + i * 8 + 4);\n if (format14Parser) {\n break;\n }\n } else if (platformId === 0 && encodingId === 5) {\n format14offset = parse_default.getULong(data, start + 4 + i * 8 + 4);\n format14Parser = new parse_default.Parser(data, start + format14offset);\n if (format14Parser.parseUShort() !== 14) {\n format14offset = -1;\n format14Parser = null;\n } else if (offset > 0) {\n break;\n }\n }\n }\n if (offset === -1) {\n throw new Error(\"No valid cmap sub-tables found.\");\n }\n const p = new parse_default.Parser(data, start + offset);\n cmap.format = p.parseUShort();\n if (cmap.format === 0) {\n parseCmapTableFormat0(cmap, p, platformId, encodingId);\n } else if (cmap.format === 12 || cmap.format === 13) {\n parseCmapTableFormat12or13(cmap, p, cmap.format);\n } else if (cmap.format === 4) {\n parseCmapTableFormat4(cmap, p, data, start, offset);\n } else {\n throw new Error(\n \"Only format 0 (platformId 1, encodingId 0), 4, 12 and 14 cmap tables are supported (found format \" + cmap.format + \", platformId \" + platformId + \", encodingId \" + encodingId + \").\"\n );\n }\n if (format14Parser) {\n parseCmapTableFormat14(cmap, format14Parser);\n }\n return cmap;\n }\n function addSegment(t, code, glyphIndex) {\n t.segments.push({\n end: code,\n start: code,\n delta: -(code - glyphIndex),\n offset: 0,\n glyphIndex\n });\n }\n function addTerminatorSegment(t) {\n t.segments.push({\n end: 65535,\n start: 65535,\n delta: 1,\n offset: 0\n });\n }\n function mergeSegments(segments) {\n if (segments.length === 0) return segments;\n const merged = [segments[0]];\n for (let i = 1; i < segments.length; i++) {\n const prev = merged[merged.length - 1];\n const curr = segments[i];\n if (prev.end + 1 === curr.start && prev.delta === curr.delta && curr.end !== 65535) {\n prev.end = curr.end;\n } else {\n merged.push(curr);\n }\n }\n return merged;\n }\n function makeCmapTable(glyphs) {\n let isPlan0Only = true;\n let i;\n for (i = glyphs.length - 1; i > 0; i -= 1) {\n const g = glyphs.get(i);\n if (g.unicode > 65535) {\n isPlan0Only = false;\n break;\n }\n }\n let cmapTable = [\n { name: \"version\", type: \"USHORT\", value: 0 },\n { name: \"numTables\", type: \"USHORT\", value: isPlan0Only ? 1 : 2 },\n // CMAP 4 header\n { name: \"platformID\", type: \"USHORT\", value: 3 },\n { name: \"encodingID\", type: \"USHORT\", value: 1 },\n { name: \"offset\", type: \"ULONG\", value: isPlan0Only ? 12 : 12 + 8 }\n ];\n if (!isPlan0Only)\n cmapTable.push(...[\n // CMAP 12 header\n { name: \"cmap12PlatformID\", type: \"USHORT\", value: 3 },\n // We encode only for PlatformID = 3 (Windows) because it is supported everywhere\n { name: \"cmap12EncodingID\", type: \"USHORT\", value: 10 },\n { name: \"cmap12Offset\", type: \"ULONG\", value: 0 }\n ]);\n cmapTable.push(...[\n // CMAP 4 Subtable\n { name: \"format\", type: \"USHORT\", value: 4 },\n { name: \"cmap4Length\", type: \"USHORT\", value: 0 },\n { name: \"language\", type: \"USHORT\", value: 0 },\n { name: \"segCountX2\", type: \"USHORT\", value: 0 },\n { name: \"searchRange\", type: \"USHORT\", value: 0 },\n { name: \"entrySelector\", type: \"USHORT\", value: 0 },\n { name: \"rangeShift\", type: \"USHORT\", value: 0 }\n ]);\n const t = new table_default.Table(\"cmap\", cmapTable);\n t.segments = [];\n for (i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs.get(i);\n for (let j = 0; j < glyph.unicodes.length; j += 1) {\n addSegment(t, glyph.unicodes[j], i);\n }\n }\n t.segments.sort(function(a, b) {\n return a.start - b.start;\n });\n t.segments = mergeSegments(t.segments);\n addTerminatorSegment(t);\n const segCount = t.segments.length;\n let segCountToRemove = 0;\n let endCounts = [];\n let startCounts = [];\n let idDeltas = [];\n let idRangeOffsets = [];\n let glyphIds = [];\n let cmap12Groups = [];\n for (i = 0; i < segCount; i += 1) {\n const segment = t.segments[i];\n if (segment.end <= 65535 && segment.start <= 65535) {\n endCounts.push({ name: \"end_\" + i, type: \"USHORT\", value: segment.end });\n startCounts.push({ name: \"start_\" + i, type: \"USHORT\", value: segment.start });\n idDeltas.push({ name: \"idDelta_\" + i, type: \"SHORT\", value: segment.delta });\n idRangeOffsets.push({ name: \"idRangeOffset_\" + i, type: \"USHORT\", value: segment.offset });\n if (segment.glyphId !== void 0) {\n glyphIds.push({ name: \"glyph_\" + i, type: \"USHORT\", value: segment.glyphId });\n }\n } else {\n segCountToRemove += 1;\n }\n if (!isPlan0Only && segment.glyphIndex !== void 0) {\n cmap12Groups.push({ name: \"cmap12Start_\" + i, type: \"ULONG\", value: segment.start });\n cmap12Groups.push({ name: \"cmap12End_\" + i, type: \"ULONG\", value: segment.end });\n cmap12Groups.push({ name: \"cmap12Glyph_\" + i, type: \"ULONG\", value: segment.glyphIndex });\n }\n }\n t.segCountX2 = (segCount - segCountToRemove) * 2;\n t.searchRange = Math.pow(2, Math.floor(Math.log(segCount - segCountToRemove) / Math.log(2))) * 2;\n t.entrySelector = Math.log(t.searchRange / 2) / Math.log(2);\n t.rangeShift = t.segCountX2 - t.searchRange;\n for (let i2 = 0; i2 < endCounts.length; i2++) {\n t.fields.push(endCounts[i2]);\n }\n t.fields.push({ name: \"reservedPad\", type: \"USHORT\", value: 0 });\n for (let i2 = 0; i2 < startCounts.length; i2++) {\n t.fields.push(startCounts[i2]);\n }\n for (let i2 = 0; i2 < idDeltas.length; i2++) {\n t.fields.push(idDeltas[i2]);\n }\n for (let i2 = 0; i2 < idRangeOffsets.length; i2++) {\n t.fields.push(idRangeOffsets[i2]);\n }\n for (let i2 = 0; i2 < glyphIds.length; i2++) {\n t.fields.push(glyphIds[i2]);\n }\n t.cmap4Length = 14 + // Subtable header\n endCounts.length * 2 + 2 + // reservedPad\n startCounts.length * 2 + idDeltas.length * 2 + idRangeOffsets.length * 2 + glyphIds.length * 2;\n if (!isPlan0Only) {\n const cmap12Length = 16 + // Subtable header\n cmap12Groups.length * 4;\n t.cmap12Offset = 12 + 2 * 2 + 4 + t.cmap4Length;\n t.fields.push(...[\n { name: \"cmap12Format\", type: \"USHORT\", value: 12 },\n { name: \"cmap12Reserved\", type: \"USHORT\", value: 0 },\n { name: \"cmap12Length\", type: \"ULONG\", value: cmap12Length },\n { name: \"cmap12Language\", type: \"ULONG\", value: 0 },\n { name: \"cmap12nGroups\", type: \"ULONG\", value: cmap12Groups.length / 3 }\n ]);\n for (let i2 = 0; i2 < cmap12Groups.length; i2++) {\n t.fields.push(cmap12Groups[i2]);\n }\n }\n return t;\n }\n var cmap_default = { parse: parseCmapTable, make: makeCmapTable };\n\n // src/encoding.mjs\n var cffStandardStrings = [\n \".notdef\",\n \"space\",\n \"exclam\",\n \"quotedbl\",\n \"numbersign\",\n \"dollar\",\n \"percent\",\n \"ampersand\",\n \"quoteright\",\n \"parenleft\",\n \"parenright\",\n \"asterisk\",\n \"plus\",\n \"comma\",\n \"hyphen\",\n \"period\",\n \"slash\",\n \"zero\",\n \"one\",\n \"two\",\n \"three\",\n \"four\",\n \"five\",\n \"six\",\n \"seven\",\n \"eight\",\n \"nine\",\n \"colon\",\n \"semicolon\",\n \"less\",\n \"equal\",\n \"greater\",\n \"question\",\n \"at\",\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"O\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n \"bracketleft\",\n \"backslash\",\n \"bracketright\",\n \"asciicircum\",\n \"underscore\",\n \"quoteleft\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\",\n \"braceleft\",\n \"bar\",\n \"braceright\",\n \"asciitilde\",\n \"exclamdown\",\n \"cent\",\n \"sterling\",\n \"fraction\",\n \"yen\",\n \"florin\",\n \"section\",\n \"currency\",\n \"quotesingle\",\n \"quotedblleft\",\n \"guillemotleft\",\n \"guilsinglleft\",\n \"guilsinglright\",\n \"fi\",\n \"fl\",\n \"endash\",\n \"dagger\",\n \"daggerdbl\",\n \"periodcentered\",\n \"paragraph\",\n \"bullet\",\n \"quotesinglbase\",\n \"quotedblbase\",\n \"quotedblright\",\n \"guillemotright\",\n \"ellipsis\",\n \"perthousand\",\n \"questiondown\",\n \"grave\",\n \"acute\",\n \"circumflex\",\n \"tilde\",\n \"macron\",\n \"breve\",\n \"dotaccent\",\n \"dieresis\",\n \"ring\",\n \"cedilla\",\n \"hungarumlaut\",\n \"ogonek\",\n \"caron\",\n \"emdash\",\n \"AE\",\n \"ordfeminine\",\n \"Lslash\",\n \"Oslash\",\n \"OE\",\n \"ordmasculine\",\n \"ae\",\n \"dotlessi\",\n \"lslash\",\n \"oslash\",\n \"oe\",\n \"germandbls\",\n \"onesuperior\",\n \"logicalnot\",\n \"mu\",\n \"trademark\",\n \"Eth\",\n \"onehalf\",\n \"plusminus\",\n \"Thorn\",\n \"onequarter\",\n \"divide\",\n \"brokenbar\",\n \"degree\",\n \"thorn\",\n \"threequarters\",\n \"twosuperior\",\n \"registered\",\n \"minus\",\n \"eth\",\n \"multiply\",\n \"threesuperior\",\n \"copyright\",\n \"Aacute\",\n \"Acircumflex\",\n \"Adieresis\",\n \"Agrave\",\n \"Aring\",\n \"Atilde\",\n \"Ccedilla\",\n \"Eacute\",\n \"Ecircumflex\",\n \"Edieresis\",\n \"Egrave\",\n \"Iacute\",\n \"Icircumflex\",\n \"Idieresis\",\n \"Igrave\",\n \"Ntilde\",\n \"Oacute\",\n \"Ocircumflex\",\n \"Odieresis\",\n \"Ograve\",\n \"Otilde\",\n \"Scaron\",\n \"Uacute\",\n \"Ucircumflex\",\n \"Udieresis\",\n \"Ugrave\",\n \"Yacute\",\n \"Ydieresis\",\n \"Zcaron\",\n \"aacute\",\n \"acircumflex\",\n \"adieresis\",\n \"agrave\",\n \"aring\",\n \"atilde\",\n \"ccedilla\",\n \"eacute\",\n \"ecircumflex\",\n \"edieresis\",\n \"egrave\",\n \"iacute\",\n \"icircumflex\",\n \"idieresis\",\n \"igrave\",\n \"ntilde\",\n \"oacute\",\n \"ocircumflex\",\n \"odieresis\",\n \"ograve\",\n \"otilde\",\n \"scaron\",\n \"uacute\",\n \"ucircumflex\",\n \"udieresis\",\n \"ugrave\",\n \"yacute\",\n \"ydieresis\",\n \"zcaron\",\n \"exclamsmall\",\n \"Hungarumlautsmall\",\n \"dollaroldstyle\",\n \"dollarsuperior\",\n \"ampersandsmall\",\n \"Acutesmall\",\n \"parenleftsuperior\",\n \"parenrightsuperior\",\n \"266 ff\",\n \"onedotenleader\",\n \"zerooldstyle\",\n \"oneoldstyle\",\n \"twooldstyle\",\n \"threeoldstyle\",\n \"fouroldstyle\",\n \"fiveoldstyle\",\n \"sixoldstyle\",\n \"sevenoldstyle\",\n \"eightoldstyle\",\n \"nineoldstyle\",\n \"commasuperior\",\n \"threequartersemdash\",\n \"periodsuperior\",\n \"questionsmall\",\n \"asuperior\",\n \"bsuperior\",\n \"centsuperior\",\n \"dsuperior\",\n \"esuperior\",\n \"isuperior\",\n \"lsuperior\",\n \"msuperior\",\n \"nsuperior\",\n \"osuperior\",\n \"rsuperior\",\n \"ssuperior\",\n \"tsuperior\",\n \"ff\",\n \"ffi\",\n \"ffl\",\n \"parenleftinferior\",\n \"parenrightinferior\",\n \"Circumflexsmall\",\n \"hyphensuperior\",\n \"Gravesmall\",\n \"Asmall\",\n \"Bsmall\",\n \"Csmall\",\n \"Dsmall\",\n \"Esmall\",\n \"Fsmall\",\n \"Gsmall\",\n \"Hsmall\",\n \"Ismall\",\n \"Jsmall\",\n \"Ksmall\",\n \"Lsmall\",\n \"Msmall\",\n \"Nsmall\",\n \"Osmall\",\n \"Psmall\",\n \"Qsmall\",\n \"Rsmall\",\n \"Ssmall\",\n \"Tsmall\",\n \"Usmall\",\n \"Vsmall\",\n \"Wsmall\",\n \"Xsmall\",\n \"Ysmall\",\n \"Zsmall\",\n \"colonmonetary\",\n \"onefitted\",\n \"rupiah\",\n \"Tildesmall\",\n \"exclamdownsmall\",\n \"centoldstyle\",\n \"Lslashsmall\",\n \"Scaronsmall\",\n \"Zcaronsmall\",\n \"Dieresissmall\",\n \"Brevesmall\",\n \"Caronsmall\",\n \"Dotaccentsmall\",\n \"Macronsmall\",\n \"figuredash\",\n \"hypheninferior\",\n \"Ogoneksmall\",\n \"Ringsmall\",\n \"Cedillasmall\",\n \"questiondownsmall\",\n \"oneeighth\",\n \"threeeighths\",\n \"fiveeighths\",\n \"seveneighths\",\n \"onethird\",\n \"twothirds\",\n \"zerosuperior\",\n \"foursuperior\",\n \"fivesuperior\",\n \"sixsuperior\",\n \"sevensuperior\",\n \"eightsuperior\",\n \"ninesuperior\",\n \"zeroinferior\",\n \"oneinferior\",\n \"twoinferior\",\n \"threeinferior\",\n \"fourinferior\",\n \"fiveinferior\",\n \"sixinferior\",\n \"seveninferior\",\n \"eightinferior\",\n \"nineinferior\",\n \"centinferior\",\n \"dollarinferior\",\n \"periodinferior\",\n \"commainferior\",\n \"Agravesmall\",\n \"Aacutesmall\",\n \"Acircumflexsmall\",\n \"Atildesmall\",\n \"Adieresissmall\",\n \"Aringsmall\",\n \"AEsmall\",\n \"Ccedillasmall\",\n \"Egravesmall\",\n \"Eacutesmall\",\n \"Ecircumflexsmall\",\n \"Edieresissmall\",\n \"Igravesmall\",\n \"Iacutesmall\",\n \"Icircumflexsmall\",\n \"Idieresissmall\",\n \"Ethsmall\",\n \"Ntildesmall\",\n \"Ogravesmall\",\n \"Oacutesmall\",\n \"Ocircumflexsmall\",\n \"Otildesmall\",\n \"Odieresissmall\",\n \"OEsmall\",\n \"Oslashsmall\",\n \"Ugravesmall\",\n \"Uacutesmall\",\n \"Ucircumflexsmall\",\n \"Udieresissmall\",\n \"Yacutesmall\",\n \"Thornsmall\",\n \"Ydieresissmall\",\n \"001.000\",\n \"001.001\",\n \"001.002\",\n \"001.003\",\n \"Black\",\n \"Bold\",\n \"Book\",\n \"Light\",\n \"Medium\",\n \"Regular\",\n \"Roman\",\n \"Semibold\"\n ];\n var cffISOAdobeStrings = [\n \".notdef\",\n \"space\",\n \"exclam\",\n \"quotedbl\",\n \"numbersign\",\n \"dollar\",\n \"percent\",\n \"ampersand\",\n \"quoteright\",\n \"parenleft\",\n \"parenright\",\n \"asterisk\",\n \"plus\",\n \"comma\",\n \"hyphen\",\n \"period\",\n \"slash\",\n \"zero\",\n \"one\",\n \"two\",\n \"three\",\n \"four\",\n \"five\",\n \"six\",\n \"seven\",\n \"eight\",\n \"nine\",\n \"colon\",\n \"semicolon\",\n \"less\",\n \"equal\",\n \"greater\",\n \"question\",\n \"at\",\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"O\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n \"bracketleft\",\n \"backslash\",\n \"bracketright\",\n \"asciicircum\",\n \"underscore\",\n \"quoteleft\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\",\n \"braceleft\",\n \"bar\",\n \"braceright\",\n \"asciitilde\",\n \"exclamdown\",\n \"cent\",\n \"sterling\",\n \"fraction\",\n \"yen\",\n \"florin\",\n \"section\",\n \"currency\",\n \"quotesingle\",\n \"quotedblleft\",\n \"guillemotleft\",\n \"guilsinglleft\",\n \"guilsinglright\",\n \"fi\",\n \"fl\",\n \"endash\",\n \"dagger\",\n \"daggerdbl\",\n \"periodcentered\",\n \"paragraph\",\n \"bullet\",\n \"quotesinglbase\",\n \"quotedblbase\",\n \"quotedblright\",\n \"guillemotright\",\n \"ellipsis\",\n \"perthousand\",\n \"questiondown\",\n \"grave\",\n \"acute\",\n \"circumflex\",\n \"tilde\",\n \"macron\",\n \"breve\",\n \"dotaccent\",\n \"dieresis\",\n \"ring\",\n \"cedilla\",\n \"hungarumlaut\",\n \"ogonek\",\n \"caron\",\n \"emdash\",\n \"AE\",\n \"ordfeminine\",\n \"Lslash\",\n \"Oslash\",\n \"OE\",\n \"ordmasculine\",\n \"ae\",\n \"dotlessi\",\n \"lslash\",\n \"oslash\",\n \"oe\",\n \"germandbls\",\n \"onesuperior\",\n \"logicalnot\",\n \"mu\",\n \"trademark\",\n \"Eth\",\n \"onehalf\",\n \"plusminus\",\n \"Thorn\",\n \"onequarter\",\n \"divide\",\n \"brokenbar\",\n \"degree\",\n \"thorn\",\n \"threequarters\",\n \"twosuperior\",\n \"registered\",\n \"minus\",\n \"eth\",\n \"multiply\",\n \"threesuperior\",\n \"copyright\",\n \"Aacute\",\n \"Acircumflex\",\n \"Adieresis\",\n \"Agrave\",\n \"Aring\",\n \"Atilde\",\n \"Ccedilla\",\n \"Eacute\",\n \"Ecircumflex\",\n \"Edieresis\",\n \"Egrave\",\n \"Iacute\",\n \"Icircumflex\",\n \"Idieresis\",\n \"Igrave\",\n \"Ntilde\",\n \"Oacute\",\n \"Ocircumflex\",\n \"Odieresis\",\n \"Ograve\",\n \"Otilde\",\n \"Scaron\",\n \"Uacute\",\n \"Ucircumflex\",\n \"Udieresis\",\n \"Ugrave\",\n \"Yacute\",\n \"Ydieresis\",\n \"Zcaron\",\n \"aacute\",\n \"acircumflex\",\n \"adieresis\",\n \"agrave\",\n \"aring\",\n \"atilde\",\n \"ccedilla\",\n \"eacute\",\n \"ecircumflex\",\n \"edieresis\",\n \"egrave\",\n \"iacute\",\n \"icircumflex\",\n \"idieresis\",\n \"igrave\",\n \"ntilde\",\n \"oacute\",\n \"ocircumflex\",\n \"odieresis\",\n \"ograve\",\n \"otilde\",\n \"scaron\",\n \"uacute\",\n \"ucircumflex\",\n \"udieresis\",\n \"ugrave\",\n \"yacute\",\n \"ydieresis\",\n \"zcaron\"\n ];\n var cffIExpertStrings = [\n \".notdef\",\n \"space\",\n \"exclamsmall\",\n \"Hungarumlautsmall\",\n \"dollaroldstyle\",\n \"dollarsuperior\",\n \"ampersandsmall\",\n \"Acutesmall\",\n \"parenleftsuperior\",\n \"parenrightsuperior\",\n \"twodotenleader\",\n \"onedotenleader\",\n \"comma\",\n \"hyphen\",\n \"period\",\n \"fraction\",\n \"zerooldstyle\",\n \"oneoldstyle\",\n \"twooldstyle\",\n \"threeoldstyle\",\n \"fouroldstyle\",\n \"fiveoldstyle\",\n \"sixoldstyle\",\n \"sevenoldstyle\",\n \"eightoldstyle\",\n \"nineoldstyle\",\n \"colon\",\n \"semicolon\",\n \"commasuperior\",\n \"threequartersemdash\",\n \"periodsuperior\",\n \"questionsmall\",\n \"asuperior\",\n \"bsuperior\",\n \"centsuperior\",\n \"dsuperior\",\n \"esuperior\",\n \"isuperior\",\n \"lsuperior\",\n \"msuperior\",\n \"nsuperior\",\n \"osuperior\",\n \"rsuperior\",\n \"ssuperior\",\n \"tsuperior\",\n \"ff\",\n \"fi\",\n \"fl\",\n \"ffi\",\n \"ffl\",\n \"parenleftinferior\",\n \"parenrightinferior\",\n \"Circumflexsmall\",\n \"hyphensuperior\",\n \"Gravesmall\",\n \"Asmall\",\n \"Bsmall\",\n \"Csmall\",\n \"Dsmall\",\n \"Esmall\",\n \"Fsmall\",\n \"Gsmall\",\n \"Hsmall\",\n \"Ismall\",\n \"Jsmall\",\n \"Ksmall\",\n \"Lsmall\",\n \"Msmall\",\n \"Nsmall\",\n \"Osmall\",\n \"Psmall\",\n \"Qsmall\",\n \"Rsmall\",\n \"Ssmall\",\n \"Tsmall\",\n \"Usmall\",\n \"Vsmall\",\n \"Wsmall\",\n \"Xsmall\",\n \"Ysmall\",\n \"Zsmall\",\n \"colonmonetary\",\n \"onefitted\",\n \"rupiah\",\n \"Tildesmall\",\n \"exclamdownsmall\",\n \"centoldstyle\",\n \"Lslashsmall\",\n \"Scaronsmall\",\n \"Zcaronsmall\",\n \"Dieresissmall\",\n \"Brevesmall\",\n \"Caronsmall\",\n \"Dotaccentsmall\",\n \"Macronsmall\",\n \"figuredash\",\n \"hypheninferior\",\n \"Ogoneksmall\",\n \"Ringsmall\",\n \"Cedillasmall\",\n \"onequarter\",\n \"onehalf\",\n \"threequarters\",\n \"questiondownsmall\",\n \"oneeighth\",\n \"threeeighths\",\n \"fiveeighths\",\n \"seveneighths\",\n \"onethird\",\n \"twothirds\",\n \"zerosuperior\",\n \"onesuperior\",\n \"twosuperior\",\n \"threesuperior\",\n \"foursuperior\",\n \"fivesuperior\",\n \"sixsuperior\",\n \"sevensuperior\",\n \"eightsuperior\",\n \"ninesuperior\",\n \"zeroinferior\",\n \"oneinferior\",\n \"twoinferior\",\n \"threeinferior\",\n \"fourinferior\",\n \"fiveinferior\",\n \"sixinferior\",\n \"seveninferior\",\n \"eightinferior\",\n \"nineinferior\",\n \"centinferior\",\n \"dollarinferior\",\n \"periodinferior\",\n \"commainferior\",\n \"Agravesmall\",\n \"Aacutesmall\",\n \"Acircumflexsmall\",\n \"Atildesmall\",\n \"Adieresissmall\",\n \"Aringsmall\",\n \"AEsmall\",\n \"Ccedillasmall\",\n \"Egravesmall\",\n \"Eacutesmall\",\n \"Ecircumflexsmall\",\n \"Edieresissmall\",\n \"Igravesmall\",\n \"Iacutesmall\",\n \"Icircumflexsmall\",\n \"Idieresissmall\",\n \"Ethsmall\",\n \"Ntildesmall\",\n \"Ogravesmall\",\n \"Oacutesmall\",\n \"Ocircumflexsmall\",\n \"Otildesmall\",\n \"Odieresissmall\",\n \"OEsmall\",\n \"Oslashsmall\",\n \"Ugravesmall\",\n \"Uacutesmall\",\n \"Ucircumflexsmall\",\n \"Udieresissmall\",\n \"Yacutesmall\",\n \"Thornsmall\",\n \"Ydieresissmall\"\n ];\n var cffExpertSubsetStrings = [\n \".notdef\",\n \"space\",\n \"dollaroldstyle\",\n \"dollarsuperior\",\n \"parenleftsuperior\",\n \"parenrightsuperior\",\n \"twodotenleader\",\n \"onedotenleader\",\n \"comma\",\n \"hyphen\",\n \"period\",\n \"fraction\",\n \"zerooldstyle\",\n \"oneoldstyle\",\n \"twooldstyle\",\n \"threeoldstyle\",\n \"fouroldstyle\",\n \"fiveoldstyle\",\n \"sixoldstyle\",\n \"sevenoldstyle\",\n \"eightoldstyle\",\n \"nineoldstyle\",\n \"colon\",\n \"semicolon\",\n \"commasuperior\",\n \"threequartersemdash\",\n \"periodsuperior\",\n \"asuperior\",\n \"bsuperior\",\n \"centsuperior\",\n \"dsuperior\",\n \"esuperior\",\n \"isuperior\",\n \"lsuperior\",\n \"msuperior\",\n \"nsuperior\",\n \"osuperior\",\n \"rsuperior\",\n \"ssuperior\",\n \"tsuperior\",\n \"ff\",\n \"fi\",\n \"fl\",\n \"ffi\",\n \"ffl\",\n \"parenleftinferior\",\n \"parenrightinferior\",\n \"hyphensuperior\",\n \"colonmonetary\",\n \"onefitted\",\n \"rupiah\",\n \"centoldstyle\",\n \"figuredash\",\n \"hypheninferior\",\n \"onequarter\",\n \"onehalf\",\n \"threequarters\",\n \"oneeighth\",\n \"threeeighths\",\n \"fiveeighths\",\n \"seveneighths\",\n \"onethird\",\n \"twothirds\",\n \"zerosuperior\",\n \"onesuperior\",\n \"twosuperior\",\n \"threesuperior\",\n \"foursuperior\",\n \"fivesuperior\",\n \"sixsuperior\",\n \"sevensuperior\",\n \"eightsuperior\",\n \"ninesuperior\",\n \"zeroinferior\",\n \"oneinferior\",\n \"twoinferior\",\n \"threeinferior\",\n \"fourinferior\",\n \"fiveinferior\",\n \"sixinferior\",\n \"seveninferior\",\n \"eightinferior\",\n \"nineinferior\",\n \"centinferior\",\n \"dollarinferior\",\n \"periodinferior\",\n \"commainferior\"\n ];\n var cffStandardEncoding = [\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"space\",\n \"exclam\",\n \"quotedbl\",\n \"numbersign\",\n \"dollar\",\n \"percent\",\n \"ampersand\",\n \"quoteright\",\n \"parenleft\",\n \"parenright\",\n \"asterisk\",\n \"plus\",\n \"comma\",\n \"hyphen\",\n \"period\",\n \"slash\",\n \"zero\",\n \"one\",\n \"two\",\n \"three\",\n \"four\",\n \"five\",\n \"six\",\n \"seven\",\n \"eight\",\n \"nine\",\n \"colon\",\n \"semicolon\",\n \"less\",\n \"equal\",\n \"greater\",\n \"question\",\n \"at\",\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"O\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n \"bracketleft\",\n \"backslash\",\n \"bracketright\",\n \"asciicircum\",\n \"underscore\",\n \"quoteleft\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\",\n \"braceleft\",\n \"bar\",\n \"braceright\",\n \"asciitilde\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"exclamdown\",\n \"cent\",\n \"sterling\",\n \"fraction\",\n \"yen\",\n \"florin\",\n \"section\",\n \"currency\",\n \"quotesingle\",\n \"quotedblleft\",\n \"guillemotleft\",\n \"guilsinglleft\",\n \"guilsinglright\",\n \"fi\",\n \"fl\",\n \"\",\n \"endash\",\n \"dagger\",\n \"daggerdbl\",\n \"periodcentered\",\n \"\",\n \"paragraph\",\n \"bullet\",\n \"quotesinglbase\",\n \"quotedblbase\",\n \"quotedblright\",\n \"guillemotright\",\n \"ellipsis\",\n \"perthousand\",\n \"\",\n \"questiondown\",\n \"\",\n \"grave\",\n \"acute\",\n \"circumflex\",\n \"tilde\",\n \"macron\",\n \"breve\",\n \"dotaccent\",\n \"dieresis\",\n \"\",\n \"ring\",\n \"cedilla\",\n \"\",\n \"hungarumlaut\",\n \"ogonek\",\n \"caron\",\n \"emdash\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"AE\",\n \"\",\n \"ordfeminine\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"Lslash\",\n \"Oslash\",\n \"OE\",\n \"ordmasculine\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"ae\",\n \"\",\n \"\",\n \"\",\n \"dotlessi\",\n \"\",\n \"\",\n \"lslash\",\n \"oslash\",\n \"oe\",\n \"germandbls\"\n ];\n var cffExpertEncoding = [\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"space\",\n \"exclamsmall\",\n \"Hungarumlautsmall\",\n \"\",\n \"dollaroldstyle\",\n \"dollarsuperior\",\n \"ampersandsmall\",\n \"Acutesmall\",\n \"parenleftsuperior\",\n \"parenrightsuperior\",\n \"twodotenleader\",\n \"onedotenleader\",\n \"comma\",\n \"hyphen\",\n \"period\",\n \"fraction\",\n \"zerooldstyle\",\n \"oneoldstyle\",\n \"twooldstyle\",\n \"threeoldstyle\",\n \"fouroldstyle\",\n \"fiveoldstyle\",\n \"sixoldstyle\",\n \"sevenoldstyle\",\n \"eightoldstyle\",\n \"nineoldstyle\",\n \"colon\",\n \"semicolon\",\n \"commasuperior\",\n \"threequartersemdash\",\n \"periodsuperior\",\n \"questionsmall\",\n \"\",\n \"asuperior\",\n \"bsuperior\",\n \"centsuperior\",\n \"dsuperior\",\n \"esuperior\",\n \"\",\n \"\",\n \"isuperior\",\n \"\",\n \"\",\n \"lsuperior\",\n \"msuperior\",\n \"nsuperior\",\n \"osuperior\",\n \"\",\n \"\",\n \"rsuperior\",\n \"ssuperior\",\n \"tsuperior\",\n \"\",\n \"ff\",\n \"fi\",\n \"fl\",\n \"ffi\",\n \"ffl\",\n \"parenleftinferior\",\n \"\",\n \"parenrightinferior\",\n \"Circumflexsmall\",\n \"hyphensuperior\",\n \"Gravesmall\",\n \"Asmall\",\n \"Bsmall\",\n \"Csmall\",\n \"Dsmall\",\n \"Esmall\",\n \"Fsmall\",\n \"Gsmall\",\n \"Hsmall\",\n \"Ismall\",\n \"Jsmall\",\n \"Ksmall\",\n \"Lsmall\",\n \"Msmall\",\n \"Nsmall\",\n \"Osmall\",\n \"Psmall\",\n \"Qsmall\",\n \"Rsmall\",\n \"Ssmall\",\n \"Tsmall\",\n \"Usmall\",\n \"Vsmall\",\n \"Wsmall\",\n \"Xsmall\",\n \"Ysmall\",\n \"Zsmall\",\n \"colonmonetary\",\n \"onefitted\",\n \"rupiah\",\n \"Tildesmall\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"exclamdownsmall\",\n \"centoldstyle\",\n \"Lslashsmall\",\n \"\",\n \"\",\n \"Scaronsmall\",\n \"Zcaronsmall\",\n \"Dieresissmall\",\n \"Brevesmall\",\n \"Caronsmall\",\n \"\",\n \"Dotaccentsmall\",\n \"\",\n \"\",\n \"Macronsmall\",\n \"\",\n \"\",\n \"figuredash\",\n \"hypheninferior\",\n \"\",\n \"\",\n \"Ogoneksmall\",\n \"Ringsmall\",\n \"Cedillasmall\",\n \"\",\n \"\",\n \"\",\n \"onequarter\",\n \"onehalf\",\n \"threequarters\",\n \"questiondownsmall\",\n \"oneeighth\",\n \"threeeighths\",\n \"fiveeighths\",\n \"seveneighths\",\n \"onethird\",\n \"twothirds\",\n \"\",\n \"\",\n \"zerosuperior\",\n \"onesuperior\",\n \"twosuperior\",\n \"threesuperior\",\n \"foursuperior\",\n \"fivesuperior\",\n \"sixsuperior\",\n \"sevensuperior\",\n \"eightsuperior\",\n \"ninesuperior\",\n \"zeroinferior\",\n \"oneinferior\",\n \"twoinferior\",\n \"threeinferior\",\n \"fourinferior\",\n \"fiveinferior\",\n \"sixinferior\",\n \"seveninferior\",\n \"eightinferior\",\n \"nineinferior\",\n \"centinferior\",\n \"dollarinferior\",\n \"periodinferior\",\n \"commainferior\",\n \"Agravesmall\",\n \"Aacutesmall\",\n \"Acircumflexsmall\",\n \"Atildesmall\",\n \"Adieresissmall\",\n \"Aringsmall\",\n \"AEsmall\",\n \"Ccedillasmall\",\n \"Egravesmall\",\n \"Eacutesmall\",\n \"Ecircumflexsmall\",\n \"Edieresissmall\",\n \"Igravesmall\",\n \"Iacutesmall\",\n \"Icircumflexsmall\",\n \"Idieresissmall\",\n \"Ethsmall\",\n \"Ntildesmall\",\n \"Ogravesmall\",\n \"Oacutesmall\",\n \"Ocircumflexsmall\",\n \"Otildesmall\",\n \"Odieresissmall\",\n \"OEsmall\",\n \"Oslashsmall\",\n \"Ugravesmall\",\n \"Uacutesmall\",\n \"Ucircumflexsmall\",\n \"Udieresissmall\",\n \"Yacutesmall\",\n \"Thornsmall\",\n \"Ydieresissmall\"\n ];\n var standardNames = [\n \".notdef\",\n \".null\",\n \"nonmarkingreturn\",\n \"space\",\n \"exclam\",\n \"quotedbl\",\n \"numbersign\",\n \"dollar\",\n \"percent\",\n \"ampersand\",\n \"quotesingle\",\n \"parenleft\",\n \"parenright\",\n \"asterisk\",\n \"plus\",\n \"comma\",\n \"hyphen\",\n \"period\",\n \"slash\",\n \"zero\",\n \"one\",\n \"two\",\n \"three\",\n \"four\",\n \"five\",\n \"six\",\n \"seven\",\n \"eight\",\n \"nine\",\n \"colon\",\n \"semicolon\",\n \"less\",\n \"equal\",\n \"greater\",\n \"question\",\n \"at\",\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"O\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n \"bracketleft\",\n \"backslash\",\n \"bracketright\",\n \"asciicircum\",\n \"underscore\",\n \"grave\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\",\n \"braceleft\",\n \"bar\",\n \"braceright\",\n \"asciitilde\",\n \"Adieresis\",\n \"Aring\",\n \"Ccedilla\",\n \"Eacute\",\n \"Ntilde\",\n \"Odieresis\",\n \"Udieresis\",\n \"aacute\",\n \"agrave\",\n \"acircumflex\",\n \"adieresis\",\n \"atilde\",\n \"aring\",\n \"ccedilla\",\n \"eacute\",\n \"egrave\",\n \"ecircumflex\",\n \"edieresis\",\n \"iacute\",\n \"igrave\",\n \"icircumflex\",\n \"idieresis\",\n \"ntilde\",\n \"oacute\",\n \"ograve\",\n \"ocircumflex\",\n \"odieresis\",\n \"otilde\",\n \"uacute\",\n \"ugrave\",\n \"ucircumflex\",\n \"udieresis\",\n \"dagger\",\n \"degree\",\n \"cent\",\n \"sterling\",\n \"section\",\n \"bullet\",\n \"paragraph\",\n \"germandbls\",\n \"registered\",\n \"copyright\",\n \"trademark\",\n \"acute\",\n \"dieresis\",\n \"notequal\",\n \"AE\",\n \"Oslash\",\n \"infinity\",\n \"plusminus\",\n \"lessequal\",\n \"greaterequal\",\n \"yen\",\n \"mu\",\n \"partialdiff\",\n \"summation\",\n \"product\",\n \"pi\",\n \"integral\",\n \"ordfeminine\",\n \"ordmasculine\",\n \"Omega\",\n \"ae\",\n \"oslash\",\n \"questiondown\",\n \"exclamdown\",\n \"logicalnot\",\n \"radical\",\n \"florin\",\n \"approxequal\",\n \"Delta\",\n \"guillemotleft\",\n \"guillemotright\",\n \"ellipsis\",\n \"nonbreakingspace\",\n \"Agrave\",\n \"Atilde\",\n \"Otilde\",\n \"OE\",\n \"oe\",\n \"endash\",\n \"emdash\",\n \"quotedblleft\",\n \"quotedblright\",\n \"quoteleft\",\n \"quoteright\",\n \"divide\",\n \"lozenge\",\n \"ydieresis\",\n \"Ydieresis\",\n \"fraction\",\n \"currency\",\n \"guilsinglleft\",\n \"guilsinglright\",\n \"fi\",\n \"fl\",\n \"daggerdbl\",\n \"periodcentered\",\n \"quotesinglbase\",\n \"quotedblbase\",\n \"perthousand\",\n \"Acircumflex\",\n \"Ecircumflex\",\n \"Aacute\",\n \"Edieresis\",\n \"Egrave\",\n \"Iacute\",\n \"Icircumflex\",\n \"Idieresis\",\n \"Igrave\",\n \"Oacute\",\n \"Ocircumflex\",\n \"apple\",\n \"Ograve\",\n \"Uacute\",\n \"Ucircumflex\",\n \"Ugrave\",\n \"dotlessi\",\n \"circumflex\",\n \"tilde\",\n \"macron\",\n \"breve\",\n \"dotaccent\",\n \"ring\",\n \"cedilla\",\n \"hungarumlaut\",\n \"ogonek\",\n \"caron\",\n \"Lslash\",\n \"lslash\",\n \"Scaron\",\n \"scaron\",\n \"Zcaron\",\n \"zcaron\",\n \"brokenbar\",\n \"Eth\",\n \"eth\",\n \"Yacute\",\n \"yacute\",\n \"Thorn\",\n \"thorn\",\n \"minus\",\n \"multiply\",\n \"onesuperior\",\n \"twosuperior\",\n \"threesuperior\",\n \"onehalf\",\n \"onequarter\",\n \"threequarters\",\n \"franc\",\n \"Gbreve\",\n \"gbreve\",\n \"Idotaccent\",\n \"Scedilla\",\n \"scedilla\",\n \"Cacute\",\n \"cacute\",\n \"Ccaron\",\n \"ccaron\",\n \"dcroat\"\n ];\n function DefaultEncoding(font) {\n this.font = font;\n }\n DefaultEncoding.prototype.charToGlyphIndex = function(c) {\n const code = c.codePointAt(0);\n const glyphs = this.font.glyphs;\n if (glyphs) {\n for (let i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs.get(i);\n for (let j = 0; j < glyph.unicodes.length; j += 1) {\n if (glyph.unicodes[j] === code) {\n return i;\n }\n }\n }\n }\n return null;\n };\n function CmapEncoding(cmap) {\n this.cmap = cmap;\n }\n CmapEncoding.prototype.charToGlyphIndex = function(c) {\n return this.cmap.glyphIndexMap[c.codePointAt(0)] || 0;\n };\n function CffEncoding(encoding, charset) {\n this.encoding = encoding;\n this.charset = charset;\n }\n CffEncoding.prototype.charToGlyphIndex = function(s) {\n const code = s.codePointAt(0);\n const charName = this.encoding[code];\n return this.charset.indexOf(charName);\n };\n function GlyphNames(post) {\n switch (post.version) {\n case 1:\n this.names = standardNames.slice();\n break;\n case 2:\n this.names = new Array(post.numberOfGlyphs);\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n if (post.glyphNameIndex[i] < standardNames.length) {\n this.names[i] = standardNames[post.glyphNameIndex[i]];\n } else {\n this.names[i] = post.names[post.glyphNameIndex[i] - standardNames.length];\n }\n }\n break;\n case 2.5:\n this.names = new Array(post.numberOfGlyphs);\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n this.names[i] = standardNames[i + post.glyphNameIndex[i]];\n }\n break;\n case 3:\n this.names = [];\n break;\n default:\n this.names = [];\n break;\n }\n }\n GlyphNames.prototype.nameToGlyphIndex = function(name) {\n return this.names.indexOf(name);\n };\n GlyphNames.prototype.glyphIndexToName = function(gid) {\n return this.names[gid];\n };\n function addGlyphNamesAll(font) {\n let glyph;\n const glyphIndexMap = font.tables.cmap.glyphIndexMap;\n const charCodes = Object.keys(glyphIndexMap);\n for (let i = 0; i < charCodes.length; i += 1) {\n const c = charCodes[i];\n const glyphIndex = glyphIndexMap[c];\n glyph = font.glyphs.get(glyphIndex);\n glyph.addUnicode(parseInt(c));\n }\n for (let i = 0; i < font.glyphs.length; i += 1) {\n glyph = font.glyphs.get(i);\n if (font.cffEncoding) {\n glyph.name = font.cffEncoding.charset[i];\n } else if (font.glyphNames.names) {\n glyph.name = font.glyphNames.glyphIndexToName(i);\n }\n }\n }\n function addGlyphNamesToUnicodeMap(font) {\n font._IndexToUnicodeMap = {};\n const glyphIndexMap = font.tables.cmap.glyphIndexMap;\n const charCodes = Object.keys(glyphIndexMap);\n for (let i = 0; i < charCodes.length; i += 1) {\n const c = charCodes[i];\n let glyphIndex = glyphIndexMap[c];\n if (font._IndexToUnicodeMap[glyphIndex] === void 0) {\n font._IndexToUnicodeMap[glyphIndex] = {\n unicodes: [parseInt(c)]\n };\n } else {\n font._IndexToUnicodeMap[glyphIndex].unicodes.push(parseInt(c));\n }\n }\n }\n function addGlyphNames(font, opt) {\n if (opt.lowMemory) {\n addGlyphNamesToUnicodeMap(font);\n } else {\n addGlyphNamesAll(font);\n }\n }\n\n // src/draw.mjs\n function line(ctx, x1, y1, x2, y2) {\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n }\n var draw_default = { line };\n\n // src/tables/cpal.mjs\n function parseCpalTable(data, start) {\n const p = new Parser(data, start);\n const version = p.parseShort();\n if (version !== 0) {\n console.warn(\"Only CPALv0 is currently fully supported.\");\n }\n const numPaletteEntries = p.parseShort();\n const numPalettes = p.parseShort();\n const numColorRecords = p.parseShort();\n const colorRecordsArrayOffset = p.parseOffset32();\n const colorRecordIndices = p.parseUShortList(numPalettes);\n p.relativeOffset = colorRecordsArrayOffset;\n const colorRecords = p.parseULongList(numColorRecords);\n p.relativeOffset = colorRecordsArrayOffset;\n return {\n version,\n numPaletteEntries,\n colorRecords,\n colorRecordIndices\n };\n }\n function makeCpalTable({ version = 0, numPaletteEntries = 0, colorRecords = [], colorRecordIndices = [0] }) {\n check_default.argument(version === 0, \"Only CPALv0 are supported.\");\n check_default.argument(colorRecords.length, \"No colorRecords given.\");\n check_default.argument(colorRecordIndices.length, \"No colorRecordIndices given.\");\n if (colorRecordIndices.length > 1) {\n check_default.argument(numPaletteEntries, \"Can't infer numPaletteEntries on multiple colorRecordIndices\");\n }\n return new table_default.Table(\"CPAL\", [\n { name: \"version\", type: \"USHORT\", value: version },\n { name: \"numPaletteEntries\", type: \"USHORT\", value: numPaletteEntries || colorRecords.length },\n { name: \"numPalettes\", type: \"USHORT\", value: colorRecordIndices.length },\n { name: \"numColorRecords\", type: \"USHORT\", value: colorRecords.length },\n { name: \"colorRecordsArrayOffset\", type: \"ULONG\", value: 12 + 2 * colorRecordIndices.length },\n ...colorRecordIndices.map((palette, i) => ({ name: \"colorRecordIndices_\" + i, type: \"USHORT\", value: palette })),\n ...colorRecords.map((color, i) => ({ name: \"colorRecords_\" + i, type: \"ULONG\", value: color }))\n ]);\n }\n function parseCPALColor(bgra) {\n var b = (bgra & 4278190080) >> 24;\n var g = (bgra & 16711680) >> 16;\n var r = (bgra & 65280) >> 8;\n var a = bgra & 255;\n b = b + 256 & 255;\n g = g + 256 & 255;\n r = r + 256 & 255;\n a = (a + 256 & 255) / 255;\n return { b, g, r, a };\n }\n function getPaletteColor(font, index, palette = 0, colorFormat = \"hexa\") {\n if (index == 65535) {\n return \"currentColor\";\n }\n const cpalTable = font && font.tables && font.tables.cpal;\n if (!cpalTable) return \"currentColor\";\n if (palette > cpalTable.colorRecordIndices.length - 1) {\n throw new Error(`Palette index out of range (colorRecordIndices.length: ${cpalTable.colorRecordIndices.length}, index: ${index})`);\n }\n if (index > cpalTable.numPaletteEntries) {\n throw new Error(`Color index out of range (numPaletteEntries: ${cpalTable.numPaletteEntries}, index: ${index})`);\n }\n const lookupIndex = cpalTable.colorRecordIndices[palette] + index;\n if (lookupIndex > cpalTable.colorRecords) {\n throw new Error(`Color index out of range (colorRecords.length: ${cpalTable.colorRecords.length}, lookupIndex: ${lookupIndex})`);\n }\n const color = parseCPALColor(cpalTable.colorRecords[lookupIndex]);\n if (colorFormat === \"bgra\") {\n return color;\n }\n return formatColor(color, colorFormat);\n }\n function toHex(d) {\n return (\"0\" + parseInt(d).toString(16)).slice(-2);\n }\n function rgbToHSL(bgra) {\n const r = bgra.r / 255;\n const g = bgra.g / 255;\n const b = bgra.b / 255;\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n let h, s, l = (max + min) / 2;\n if (max === min) {\n h = s = 0;\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h * 360,\n s: s * 100,\n l: l * 100\n };\n }\n function hslToRGB(hsla) {\n let { h, s, l, a } = hsla;\n h = h % 360;\n s /= 100;\n l /= 100;\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(h / 60 % 2 - 1));\n const m = l - c / 2;\n let r = 0, g = 0, b = 0;\n if (0 <= h && h < 60) {\n r = c;\n g = x;\n b = 0;\n } else if (60 <= h && h < 120) {\n r = x;\n g = c;\n b = 0;\n } else if (120 <= h && h < 180) {\n r = 0;\n g = c;\n b = x;\n } else if (180 <= h && h < 240) {\n r = 0;\n g = x;\n b = c;\n } else if (240 <= h && h < 300) {\n r = x;\n g = 0;\n b = c;\n } else if (300 <= h && h <= 360) {\n r = c;\n g = 0;\n b = x;\n }\n return {\n r: Math.round((r + m) * 255),\n g: Math.round((g + m) * 255),\n b: Math.round((b + m) * 255),\n a\n };\n }\n function bgraToRaw(color) {\n return parseInt(`0x${toHex(color.b)}${toHex(color.g)}${toHex(color.r)}${toHex(color.a * 255)}`, 16);\n }\n function parseColor(color, targetFormat = \"hexa\") {\n const returnRaw = targetFormat == \"raw\" || targetFormat == \"cpal\";\n const isRaw = Number.isInteger(color);\n let validFormat = true;\n if (isRaw && returnRaw || color === \"currentColor\") {\n return color;\n } else if (typeof color === \"object\") {\n if (targetFormat == \"bgra\") {\n return color;\n }\n if (returnRaw) {\n return bgraToRaw(color);\n }\n } else if (!isRaw && /^#([a-f0-9]{3}|[a-f0-9]{4}|[a-f0-9]{6}|[a-f0-9]{8})$/i.test(color.trim())) {\n color = color.trim().substring(1);\n switch (color.length) {\n case 3:\n color = {\n r: parseInt(color[0].repeat(2), 16),\n g: parseInt(color[1].repeat(2), 16),\n b: parseInt(color[2].repeat(2), 16),\n a: 1\n };\n break;\n case 4:\n color = {\n r: parseInt(color[0].repeat(2), 16),\n g: parseInt(color[1].repeat(2), 16),\n b: parseInt(color[2].repeat(2), 16),\n a: parseInt(color[3].repeat(2), 16) / 255\n };\n break;\n case 6:\n color = {\n r: parseInt(color[0] + color[1], 16),\n g: parseInt(color[2] + color[3], 16),\n b: parseInt(color[4] + color[5], 16),\n a: 1\n };\n break;\n case 8:\n color = {\n r: parseInt(color[0] + color[1], 16),\n g: parseInt(color[2] + color[3], 16),\n b: parseInt(color[4] + color[5], 16),\n a: parseInt(color[6] + color[7], 16) / 255\n };\n break;\n }\n if (targetFormat == \"bgra\") {\n return color;\n }\n } else if (typeof document !== \"undefined\" && /^[a-z]+$/i.test(color)) {\n const ctx = document.createElement(\"canvas\").getContext(\"2d\");\n ctx.fillStyle = color;\n const detectedColor = formatColor(ctx.fillStyle, \"hexa\");\n if (detectedColor === \"#000000ff\" && color.toLowerCase() !== \"black\") {\n validFormat = false;\n } else {\n color = detectedColor;\n }\n } else {\n color = color.trim();\n const rgbaRegex = /rgba?\\(\\s*(?:(\\d*\\.\\d+)(%?)|(\\d+)(%?))\\s*(?:,|\\s*)\\s*(?:(\\d*\\.\\d+)(%?)|(\\d+)(%?))\\s*(?:,|\\s*)\\s*(?:(\\d*\\.\\d+)(%?)|(\\d+)(%?))\\s*(?:(?:,|\\s|\\/)\\s*(?:(0*(?:\\.\\d+)?()|0*1(?:\\.0+)?())|(?:\\.\\d+)|(\\d+)(%)|(\\d*\\.\\d+)(%)))?\\s*\\)/;\n if (rgbaRegex.test(color)) {\n const matches = color.match(rgbaRegex).filter((i) => typeof i !== \"undefined\");\n color = {\n r: Math.round(parseFloat(matches[1]) / (matches[2] ? 100 / 255 : 1)),\n g: Math.round(parseFloat(matches[3]) / (matches[4] ? 100 / 255 : 1)),\n b: Math.round(parseFloat(matches[5]) / (matches[6] ? 100 / 255 : 1)),\n a: !matches[7] ? 1 : parseFloat(matches[7]) / (matches[8] ? 100 : 1)\n };\n } else {\n const hslaRegex = /hsla?\\(\\s*(?:(\\d*\\.\\d+|\\d+)(deg|turn|))\\s*(?:,|\\s*)\\s*(?:(\\d*\\.\\d+)%?|(\\d+)%?)\\s*(?:,|\\s*)\\s*(?:(\\d*\\.\\d+)%?|(\\d+)%?)\\s*(?:(?:,|\\s|\\/)\\s*(?:(0*(?:\\.\\d+)?()|0*1(?:\\.0+)?())|(?:\\.\\d+)|(\\d+)(%)|(\\d*\\.\\d+)(%)))?\\s*\\)/;\n if (hslaRegex.test(color)) {\n const matches = color.match(hslaRegex).filter((i) => typeof i !== \"undefined\");\n color = hslToRGB({\n h: parseFloat(matches[1]) * (matches[2] === \"turn\" ? 360 : 1),\n s: parseFloat(matches[3]),\n l: parseFloat(matches[4]),\n a: !matches[5] ? 1 : parseFloat(matches[5]) / (matches[6] ? 100 : 1)\n });\n } else {\n validFormat = false;\n }\n }\n }\n if (!validFormat) {\n throw new Error(`Invalid color format: ${color}`);\n }\n return formatColor(color, targetFormat);\n }\n function formatColor(bgra, format = \"hexa\") {\n if (bgra === \"currentColor\") return bgra;\n if (Number.isInteger(bgra)) {\n if (format == \"raw\" || format == \"cpal\") {\n return bgra;\n }\n bgra = parseCPALColor(bgra);\n } else if (typeof bgra !== \"object\") {\n bgra = parseColor(bgra, \"bgra\");\n }\n let hsl = [\"hsl\", \"hsla\"].includes(format) ? rgbToHSL(bgra) : null;\n switch (format) {\n case \"rgba\":\n return `rgba(${bgra.r}, ${bgra.g}, ${bgra.b}, ${parseFloat(bgra.a.toFixed(3))})`;\n case \"rgb\":\n return `rgb(${bgra.r}, ${bgra.g}, ${bgra.b})`;\n case \"hex\":\n case \"hex6\":\n case \"hex-6\":\n return `#${toHex(bgra.r)}${toHex(bgra.g)}${toHex(bgra.b)}`;\n case \"hexa\":\n case \"hex8\":\n case \"hex-8\":\n return `#${toHex(bgra.r)}${toHex(bgra.g)}${toHex(bgra.b)}${toHex(bgra.a * 255)}`;\n case \"hsl\":\n return `hsl(${hsl.h.toFixed(2)}, ${hsl.s.toFixed(2)}%, ${hsl.l.toFixed(2)}%)`;\n case \"hsla\":\n return `hsla(${hsl.h.toFixed(2)}, ${hsl.s.toFixed(2)}%, ${hsl.l.toFixed(2)}%, ${parseFloat(bgra.a.toFixed(3))})`;\n case \"bgra\":\n return bgra;\n case \"raw\":\n case \"cpal\":\n return bgraToRaw(bgra);\n default:\n throw new Error(\"Unknown color format: \" + format);\n }\n }\n var cpal_default = { parse: parseCpalTable, make: makeCpalTable, getPaletteColor, parseColor, formatColor };\n\n // src/glyph.mjs\n function getPathDefinition(glyph, path) {\n let _path = path || new path_default();\n return {\n configurable: true,\n get: function() {\n if (typeof _path === \"function\") {\n _path = _path();\n }\n return _path;\n },\n set: function(p) {\n _path = p;\n }\n };\n }\n function Glyph(options) {\n this.bindConstructorValues(options);\n }\n Glyph.prototype.bindConstructorValues = function(options) {\n this.index = options.index || 0;\n if (options.name === \".notdef\") {\n options.unicode = void 0;\n } else if (options.name === \".null\") {\n options.unicode = 0;\n }\n if (options.unicode === 0 && options.name !== \".null\") {\n throw new Error('The unicode value \"0\" is reserved for the glyph name \".null\" and cannot be used by any other glyph.');\n }\n this.name = options.name || null;\n this.unicode = options.unicode;\n this.unicodes = options.unicodes || (options.unicode !== void 0 ? [options.unicode] : []);\n if (\"xMin\" in options) {\n this.xMin = options.xMin;\n }\n if (\"yMin\" in options) {\n this.yMin = options.yMin;\n }\n if (\"xMax\" in options) {\n this.xMax = options.xMax;\n }\n if (\"yMax\" in options) {\n this.yMax = options.yMax;\n }\n if (\"advanceWidth\" in options) {\n this.advanceWidth = options.advanceWidth;\n }\n if (\"leftSideBearing\" in options) {\n this.leftSideBearing = options.leftSideBearing;\n }\n if (\"points\" in options) {\n this.points = options.points;\n }\n Object.defineProperty(this, \"path\", getPathDefinition(this, options.path));\n };\n Glyph.prototype.addUnicode = function(unicode) {\n if (this.unicodes.length === 0) {\n this.unicode = unicode;\n }\n this.unicodes.push(unicode);\n };\n Glyph.prototype.getBoundingBox = function() {\n return this.path.getBoundingBox();\n };\n Glyph.prototype.getPath = function(x, y, fontSize, options, font) {\n x = x !== void 0 ? x : 0;\n y = y !== void 0 ? y : 0;\n fontSize = fontSize !== void 0 ? fontSize : 72;\n options = Object.assign({}, font && font.defaultRenderOptions, options);\n let commands;\n let hPoints;\n let xScale = options.xScale;\n let yScale = options.yScale;\n const scale = 1 / (this.path.unitsPerEm || 1e3) * fontSize;\n let useGlyph = this;\n if (font && font.variation) {\n useGlyph = font.variation.getTransform(this, options.variation);\n commands = useGlyph.path.commands;\n }\n if (options.hinting && font && font.hinting) {\n hPoints = useGlyph.path && font.hinting.exec(useGlyph, fontSize, options);\n }\n if (hPoints) {\n commands = font.hinting.getCommands(hPoints);\n x = Math.round(x);\n y = Math.round(y);\n xScale = yScale = 1;\n } else {\n commands = useGlyph.path.commands;\n if (xScale === void 0) xScale = scale;\n if (yScale === void 0) yScale = scale;\n }\n const p = new path_default();\n if (options.drawSVG) {\n const svgImage = this.getSvgImage(font);\n if (svgImage) {\n const layer = new path_default();\n layer._image = {\n image: svgImage.image,\n x: x + svgImage.leftSideBearing * scale,\n y: y - svgImage.baseline * scale,\n width: svgImage.image.width * scale,\n height: svgImage.image.height * scale\n };\n p._layers = [layer];\n return p;\n }\n }\n if (options.drawLayers) {\n const layers = this.getLayers(font);\n if (layers && layers.length) {\n p._layers = [];\n for (let i = 0; i < layers.length; i += 1) {\n const layer = layers[i];\n let color = getPaletteColor(font, layer.paletteIndex, options.usePalette);\n if (color === \"currentColor\") {\n color = options.fill || \"black\";\n } else {\n color = formatColor(color, options.colorFormat || \"rgba\");\n }\n options = Object.assign({}, options, { fill: color });\n p._layers.push(this.getPath.call(layer.glyph, x, y, fontSize, options, font));\n }\n return p;\n }\n }\n p.fill = options.fill || this.path.fill;\n p.stroke = this.path.stroke;\n p.strokeWidth = this.path.strokeWidth * scale;\n for (let i = 0; i < commands.length; i += 1) {\n const cmd = commands[i];\n if (cmd.type === \"M\") {\n p.moveTo(x + cmd.x * xScale, y + -cmd.y * yScale);\n } else if (cmd.type === \"L\") {\n p.lineTo(x + cmd.x * xScale, y + -cmd.y * yScale);\n } else if (cmd.type === \"Q\") {\n p.quadraticCurveTo(\n x + cmd.x1 * xScale,\n y + -cmd.y1 * yScale,\n x + cmd.x * xScale,\n y + -cmd.y * yScale\n );\n } else if (cmd.type === \"C\") {\n p.curveTo(\n x + cmd.x1 * xScale,\n y + -cmd.y1 * yScale,\n x + cmd.x2 * xScale,\n y + -cmd.y2 * yScale,\n x + cmd.x * xScale,\n y + -cmd.y * yScale\n );\n } else if (cmd.type === \"Z\" && p.stroke && p.strokeWidth) {\n p.closePath();\n }\n }\n return p;\n };\n Glyph.prototype.getLayers = function(font) {\n if (!font) {\n throw new Error(\"The font object is required to read the colr/cpal tables in order to get the layers.\");\n }\n return font.layers.get(this.index);\n };\n Glyph.prototype.getSvgImage = function(font) {\n if (!font) {\n throw new Error(\"The font object is required to read the svg table in order to get the image.\");\n }\n return font.svgImages.get(this.index);\n };\n Glyph.prototype.getContours = function(transformedPoints = null) {\n if (this.points === void 0 && !transformedPoints) {\n return [];\n }\n const contours = [];\n let currentContour = [];\n let points = transformedPoints ? transformedPoints : this.points;\n for (let i = 0; i < points.length; i += 1) {\n const pt = points[i];\n currentContour.push(pt);\n if (pt.lastPointOfContour) {\n contours.push(currentContour);\n currentContour = [];\n }\n }\n check_default.argument(currentContour.length === 0, \"There are still points left in the current contour.\");\n return contours;\n };\n Glyph.prototype.getMetrics = function() {\n const commands = this.path.commands;\n const xCoords = [];\n const yCoords = [];\n for (let i = 0; i < commands.length; i += 1) {\n const cmd = commands[i];\n if (cmd.type !== \"Z\") {\n xCoords.push(cmd.x);\n yCoords.push(cmd.y);\n }\n if (cmd.type === \"Q\" || cmd.type === \"C\") {\n xCoords.push(cmd.x1);\n yCoords.push(cmd.y1);\n }\n if (cmd.type === \"C\") {\n xCoords.push(cmd.x2);\n yCoords.push(cmd.y2);\n }\n }\n const metrics = {\n xMin: Math.min.apply(null, xCoords),\n yMin: Math.min.apply(null, yCoords),\n xMax: Math.max.apply(null, xCoords),\n yMax: Math.max.apply(null, yCoords),\n leftSideBearing: this.leftSideBearing\n };\n if (!isFinite(metrics.xMin)) {\n metrics.xMin = 0;\n }\n if (!isFinite(metrics.xMax)) {\n metrics.xMax = this.advanceWidth;\n }\n if (!isFinite(metrics.yMin)) {\n metrics.yMin = 0;\n }\n if (!isFinite(metrics.yMax)) {\n metrics.yMax = 0;\n }\n metrics.rightSideBearing = this.advanceWidth - metrics.leftSideBearing - (metrics.xMax - metrics.xMin);\n return metrics;\n };\n Glyph.prototype.draw = function(ctx, x, y, fontSize, options, font) {\n options = Object.assign({}, font && font.defaultRenderOptions, options);\n const path = this.getPath(x, y, fontSize, options, font);\n path.draw(ctx);\n };\n Glyph.prototype.drawPoints = function(ctx, x, y, fontSize, options, font) {\n options = Object.assign({}, font && font.defaultRenderOptions, options);\n if (options.drawLayers) {\n const layers = this.getLayers(font);\n if (layers && layers.length) {\n for (let l = 0; l < layers.length; l += 1) {\n if (layers[l].glyph.index !== this.index) {\n this.drawPoints.call(layers[l].glyph, ctx, x, y, fontSize);\n }\n }\n return;\n }\n }\n function drawCircles(l, x2, y2, scale2) {\n ctx.beginPath();\n for (let j = 0; j < l.length; j += 1) {\n ctx.moveTo(x2 + l[j].x * scale2, y2 + l[j].y * scale2);\n ctx.arc(x2 + l[j].x * scale2, y2 + l[j].y * scale2, 2, 0, Math.PI * 2, false);\n }\n ctx.fill();\n }\n x = x !== void 0 ? x : 0;\n y = y !== void 0 ? y : 0;\n fontSize = fontSize !== void 0 ? fontSize : 24;\n const scale = 1 / this.path.unitsPerEm * fontSize;\n const blueCircles = [];\n const redCircles = [];\n const path = this.path;\n let commands = path.commands;\n if (font && font.variation) {\n commands = font.variation.getTransform(this, options.variation).path.commands;\n }\n for (let i = 0; i < commands.length; i += 1) {\n const cmd = commands[i];\n if (cmd.x !== void 0) {\n blueCircles.push({ x: cmd.x, y: -cmd.y });\n }\n if (cmd.x1 !== void 0) {\n redCircles.push({ x: cmd.x1, y: -cmd.y1 });\n }\n if (cmd.x2 !== void 0) {\n redCircles.push({ x: cmd.x2, y: -cmd.y2 });\n }\n }\n ctx.fillStyle = \"blue\";\n drawCircles(blueCircles, x, y, scale);\n ctx.fillStyle = \"red\";\n drawCircles(redCircles, x, y, scale);\n };\n Glyph.prototype.drawMetrics = function(ctx, x, y, fontSize) {\n let scale;\n x = x !== void 0 ? x : 0;\n y = y !== void 0 ? y : 0;\n fontSize = fontSize !== void 0 ? fontSize : 24;\n scale = 1 / this.path.unitsPerEm * fontSize;\n ctx.lineWidth = 1;\n ctx.strokeStyle = \"black\";\n draw_default.line(ctx, x, -1e4, x, 1e4);\n draw_default.line(ctx, -1e4, y, 1e4, y);\n const xMin = this.xMin || 0;\n let yMin = this.yMin || 0;\n const xMax = this.xMax || 0;\n let yMax = this.yMax || 0;\n const advanceWidth = this.advanceWidth || 0;\n ctx.strokeStyle = \"blue\";\n draw_default.line(ctx, x + xMin * scale, -1e4, x + xMin * scale, 1e4);\n draw_default.line(ctx, x + xMax * scale, -1e4, x + xMax * scale, 1e4);\n draw_default.line(ctx, -1e4, y + -yMin * scale, 1e4, y + -yMin * scale);\n draw_default.line(ctx, -1e4, y + -yMax * scale, 1e4, y + -yMax * scale);\n ctx.strokeStyle = \"green\";\n draw_default.line(ctx, x + advanceWidth * scale, -1e4, x + advanceWidth * scale, 1e4);\n };\n Glyph.prototype.toPathData = function(options, font) {\n options = Object.assign({}, { variation: font && font.defaultRenderOptions.variation }, options);\n let useGlyph = this;\n if (font && font.variation) {\n useGlyph = font.variation.getTransform(this, options.variation);\n }\n let usePath = useGlyph.points && options.pointsTransform ? options.pointsTransform(useGlyph.points) : useGlyph.path;\n if (options.pathTransform) {\n usePath = options.pathTransform(usePath);\n }\n return usePath.toPathData(options);\n };\n Glyph.prototype.fromSVG = function(pathData, options = {}) {\n return this.path.fromSVG(pathData, options);\n };\n Glyph.prototype.toSVG = function(options, font) {\n const pathData = this.toPathData.apply(this, [options, font]);\n return this.path.toSVG(options, pathData);\n };\n Glyph.prototype.toDOMElement = function(options, font) {\n options = Object.assign({}, { variation: font && font.defaultRenderOptions.variation }, options);\n let usePath = this.path;\n if (font && font.variation) {\n usePath = font.variation.getTransform(this, options.variation).path;\n }\n return usePath.toDOMElement(options);\n };\n var glyph_default = Glyph;\n\n // src/glyphset.mjs\n function defineDependentProperty(glyph, externalName, internalName) {\n Object.defineProperty(glyph, externalName, {\n get: function() {\n typeof glyph[internalName] === \"undefined\" && glyph.path;\n return glyph[internalName];\n },\n set: function(newValue) {\n glyph[internalName] = newValue;\n },\n enumerable: true,\n configurable: true\n });\n }\n function GlyphSet(font, glyphs) {\n this.font = font;\n this.glyphs = {};\n if (Array.isArray(glyphs)) {\n for (let i = 0; i < glyphs.length; i++) {\n const glyph = glyphs[i];\n glyph.path.unitsPerEm = font.unitsPerEm;\n this.glyphs[i] = glyph;\n }\n }\n this.length = glyphs && glyphs.length || 0;\n }\n if (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n GlyphSet.prototype[Symbol.iterator] = function() {\n let n = -1;\n return {\n next: function() {\n n++;\n const done = n >= this.length - 1;\n return { value: this.get(n), done };\n }.bind(this)\n };\n };\n }\n GlyphSet.prototype.get = function(index) {\n if (this.font._push && this.glyphs[index] === void 0) {\n this.font._push(index);\n if (typeof this.glyphs[index] === \"function\") {\n this.glyphs[index] = this.glyphs[index]();\n }\n let glyph = this.glyphs[index];\n let unicodeObj = this.font._IndexToUnicodeMap[index];\n if (unicodeObj) {\n for (let j = 0; j < unicodeObj.unicodes.length; j++)\n glyph.addUnicode(unicodeObj.unicodes[j]);\n }\n if (this.font.cffEncoding) {\n glyph.name = this.font.cffEncoding.charset[index];\n } else if (this.font.glyphNames.names) {\n glyph.name = this.font.glyphNames.glyphIndexToName(index);\n }\n this.glyphs[index].advanceWidth = this.font._hmtxTableData[index].advanceWidth;\n this.glyphs[index].leftSideBearing = this.font._hmtxTableData[index].leftSideBearing;\n } else {\n if (typeof this.glyphs[index] === \"function\") {\n this.glyphs[index] = this.glyphs[index]();\n }\n }\n return this.glyphs[index];\n };\n GlyphSet.prototype.push = function(index, loader) {\n this.glyphs[index] = loader;\n this.length++;\n };\n function glyphLoader(font, index) {\n return new glyph_default({ index, font });\n }\n function ttfGlyphLoader(font, index, parseGlyph2, data, position, buildPath2) {\n return function() {\n const glyph = new glyph_default({ index, font });\n glyph.path = function() {\n parseGlyph2(glyph, data, position);\n const path = buildPath2(font.glyphs, glyph);\n path.unitsPerEm = font.unitsPerEm;\n return path;\n };\n defineDependentProperty(glyph, \"numberOfContours\", \"_numberOfContours\");\n defineDependentProperty(glyph, \"xMin\", \"_xMin\");\n defineDependentProperty(glyph, \"xMax\", \"_xMax\");\n defineDependentProperty(glyph, \"yMin\", \"_yMin\");\n defineDependentProperty(glyph, \"yMax\", \"_yMax\");\n defineDependentProperty(glyph, \"points\", \"_points\");\n return glyph;\n };\n }\n function cffGlyphLoader(font, index, parseCFFCharstring2, charstring, version) {\n return function() {\n const glyph = new glyph_default({ index, font });\n glyph.path = function() {\n const path = parseCFFCharstring2(font, glyph, charstring, version);\n path.unitsPerEm = font.unitsPerEm;\n return path;\n };\n return glyph;\n };\n }\n var glyphset_default = { GlyphSet, glyphLoader, ttfGlyphLoader, cffGlyphLoader };\n\n // src/tables/cff.mjs\n function equals(a, b) {\n if (a === b) {\n return true;\n } else if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i += 1) {\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n }\n var MAX_CALL_DEPTH = 10;\n function calcCFFSubroutineBias(subrs) {\n let bias;\n if (subrs.length < 1240) {\n bias = 107;\n } else if (subrs.length < 33900) {\n bias = 1131;\n } else {\n bias = 32768;\n }\n return bias;\n }\n function parseCFFIndex(data, start, conversionFn, version) {\n const offsets = [];\n const objects = [];\n const count = version > 1 ? parse_default.getULong(data, start) : parse_default.getCard16(data, start);\n const countLength = version > 1 ? 4 : 2;\n let objectOffset;\n let endOffset;\n if (count !== 0) {\n const offsetSize = parse_default.getByte(data, start + countLength);\n objectOffset = start + (count + 1) * offsetSize + countLength;\n let pos = start + countLength + 1;\n for (let i = 0; i < count + 1; i += 1) {\n offsets.push(parse_default.getOffset(data, pos, offsetSize));\n pos += offsetSize;\n }\n endOffset = objectOffset + offsets[count];\n } else {\n endOffset = start + countLength;\n }\n for (let i = 0; i < offsets.length - 1; i += 1) {\n let value = parse_default.getBytes(data, objectOffset + offsets[i], objectOffset + offsets[i + 1]);\n if (conversionFn) {\n value = conversionFn(value, data, start, version);\n }\n objects.push(value);\n }\n return { objects, startOffset: start, endOffset };\n }\n function parseCFFIndexLowMemory(data, start, version) {\n const offsets = [];\n const count = version > 1 ? parse_default.getULong(data, start) : parse_default.getCard16(data, start);\n const countLength = version > 1 ? 4 : 2;\n let objectOffset;\n let endOffset;\n if (count !== 0) {\n const offsetSize = parse_default.getByte(data, start + countLength);\n objectOffset = start + (count + 1) * offsetSize + countLength;\n let pos = start + countLength + 1;\n for (let i = 0; i < count + 1; i += 1) {\n offsets.push(parse_default.getOffset(data, pos, offsetSize));\n pos += offsetSize;\n }\n endOffset = objectOffset + offsets[count];\n } else {\n endOffset = start + countLength;\n }\n return { offsets, startOffset: start, endOffset };\n }\n function getCffIndexObject(i, offsets, data, start, conversionFn, version) {\n const count = version > 1 ? parse_default.getULong(data, start) : parse_default.getCard16(data, start);\n const countLength = version > 1 ? 4 : 2;\n let objectOffset = 0;\n if (count !== 0) {\n const offsetSize = parse_default.getByte(data, start + countLength);\n objectOffset = start + (count + 1) * offsetSize + countLength;\n }\n let value = parse_default.getBytes(data, objectOffset + offsets[i], objectOffset + offsets[i + 1]);\n if (conversionFn) {\n value = conversionFn(value);\n }\n return value;\n }\n function parseFloatOperand(parser) {\n let s = \"\";\n const eof = 15;\n const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n for (; ; ) {\n const b = parser.parseByte();\n const n1 = b >> 4;\n const n2 = b & 15;\n if (n1 === eof) {\n break;\n }\n s += lookup[n1];\n if (n2 === eof) {\n break;\n }\n s += lookup[n2];\n }\n return parseFloat(s);\n }\n function parseOperand(parser, b0) {\n let b1;\n let b2;\n let b3;\n let b4;\n if (b0 === 28) {\n b1 = parser.parseByte();\n b2 = parser.parseByte();\n return b1 << 8 | b2;\n }\n if (b0 === 29) {\n b1 = parser.parseByte();\n b2 = parser.parseByte();\n b3 = parser.parseByte();\n b4 = parser.parseByte();\n return b1 << 24 | b2 << 16 | b3 << 8 | b4;\n }\n if (b0 === 30) {\n return parseFloatOperand(parser);\n }\n if (b0 >= 32 && b0 <= 246) {\n return b0 - 139;\n }\n if (b0 >= 247 && b0 <= 250) {\n b1 = parser.parseByte();\n return (b0 - 247) * 256 + b1 + 108;\n }\n if (b0 >= 251 && b0 <= 254) {\n b1 = parser.parseByte();\n return -(b0 - 251) * 256 - b1 - 108;\n }\n throw new Error(\"Invalid b0 \" + b0);\n }\n function entriesToObject(entries) {\n const o = {};\n for (let i = 0; i < entries.length; i += 1) {\n const key = entries[i][0];\n const values = entries[i][1];\n let value;\n if (values.length === 1) {\n value = values[0];\n } else {\n value = values;\n }\n if (Object.prototype.hasOwnProperty.call(o, key) && !isNaN(o[key])) {\n throw new Error(\"Object \" + o + \" already has key \" + key);\n }\n o[key] = value;\n }\n return o;\n }\n function parseCFFDict(data, start, size, version) {\n start = start !== void 0 ? start : 0;\n const parser = new parse_default.Parser(data, start);\n const entries = [];\n let operands = [];\n size = size !== void 0 ? size : data.byteLength;\n let operandsStart = version < 2 ? 22 : 28;\n while (parser.relativeOffset < size) {\n let op = parser.parseByte();\n if (op < operandsStart) {\n if (op === 12) {\n op = 1200 + parser.parseByte();\n }\n if (version > 1 && op === 23) {\n parseBlend(operands);\n continue;\n }\n entries.push([op, operands]);\n operands = [];\n } else {\n operands.push(parseOperand(parser, op, version));\n }\n }\n return entriesToObject(entries);\n }\n function getCFFString(strings, index) {\n if (index <= 390) {\n index = cffStandardStrings[index];\n } else if (strings) {\n index = strings[index - 391];\n } else {\n index = void 0;\n }\n return index;\n }\n function interpretDict(dict, meta, strings) {\n const newDict = {};\n let value;\n for (let i = 0; i < meta.length; i += 1) {\n const m = meta[i];\n if (Array.isArray(m.type)) {\n const values = [];\n values.length = m.type.length;\n for (let j = 0; j < m.type.length; j++) {\n value = dict[m.op] !== void 0 ? dict[m.op][j] : void 0;\n if (value === void 0) {\n value = m.value !== void 0 && m.value[j] !== void 0 ? m.value[j] : null;\n }\n if (m.type[j] === \"SID\") {\n value = getCFFString(strings, value);\n }\n values[j] = value;\n }\n newDict[m.name] = values;\n } else {\n value = dict[m.op];\n if (value === void 0) {\n value = m.value !== void 0 ? m.value : null;\n }\n if (m.type === \"SID\") {\n value = getCFFString(strings, value);\n }\n newDict[m.name] = value;\n }\n }\n return newDict;\n }\n function parseCFFHeader(data, start) {\n const header = {};\n header.formatMajor = parse_default.getCard8(data, start);\n header.formatMinor = parse_default.getCard8(data, start + 1);\n if (header.formatMajor > 2) {\n throw new Error(`Unsupported CFF table version ${header.formatMajor}.${header.formatMinor}`);\n }\n header.size = parse_default.getCard8(data, start + 2);\n if (header.formatMajor < 2) {\n header.offsetSize = parse_default.getCard8(data, start + 3);\n header.startOffset = start;\n header.endOffset = start + 4;\n } else {\n header.topDictLength = parse_default.getCard16(data, start + 3);\n header.endOffset = start + 8;\n }\n return header;\n }\n var TOP_DICT_META = [\n { name: \"version\", op: 0, type: \"SID\" },\n { name: \"notice\", op: 1, type: \"SID\" },\n { name: \"copyright\", op: 1200, type: \"SID\" },\n { name: \"fullName\", op: 2, type: \"SID\" },\n { name: \"familyName\", op: 3, type: \"SID\" },\n { name: \"weight\", op: 4, type: \"SID\" },\n { name: \"isFixedPitch\", op: 1201, type: \"number\", value: 0 },\n { name: \"italicAngle\", op: 1202, type: \"number\", value: 0 },\n { name: \"underlinePosition\", op: 1203, type: \"number\", value: -100 },\n { name: \"underlineThickness\", op: 1204, type: \"number\", value: 50 },\n { name: \"paintType\", op: 1205, type: \"number\", value: 0 },\n { name: \"charstringType\", op: 1206, type: \"number\", value: 2 },\n {\n name: \"fontMatrix\",\n op: 1207,\n type: [\"real\", \"real\", \"real\", \"real\", \"real\", \"real\"],\n value: [1e-3, 0, 0, 1e-3, 0, 0]\n },\n { name: \"uniqueId\", op: 13, type: \"number\" },\n { name: \"fontBBox\", op: 5, type: [\"number\", \"number\", \"number\", \"number\"], value: [0, 0, 0, 0] },\n { name: \"strokeWidth\", op: 1208, type: \"number\", value: 0 },\n { name: \"xuid\", op: 14, type: [], value: null },\n { name: \"charset\", op: 15, type: \"offset\", value: 0 },\n { name: \"encoding\", op: 16, type: \"offset\", value: 0 },\n { name: \"charStrings\", op: 17, type: \"offset\", value: 0 },\n { name: \"private\", op: 18, type: [\"number\", \"offset\"], value: [0, 0] },\n { name: \"ros\", op: 1230, type: [\"SID\", \"SID\", \"number\"] },\n { name: \"cidFontVersion\", op: 1231, type: \"number\", value: 0 },\n { name: \"cidFontRevision\", op: 1232, type: \"number\", value: 0 },\n { name: \"cidFontType\", op: 1233, type: \"number\", value: 0 },\n { name: \"cidCount\", op: 1234, type: \"number\", value: 8720 },\n { name: \"uidBase\", op: 1235, type: \"number\" },\n { name: \"fdArray\", op: 1236, type: \"offset\" },\n { name: \"fdSelect\", op: 1237, type: \"offset\" },\n { name: \"fontName\", op: 1238, type: \"SID\" }\n ];\n var TOP_DICT_META_CFF2 = [\n {\n name: \"fontMatrix\",\n op: 1207,\n type: [\"real\", \"real\", \"real\", \"real\", \"real\", \"real\"],\n value: [1e-3, 0, 0, 1e-3, 0, 0]\n },\n { name: \"charStrings\", op: 17, type: \"offset\" },\n { name: \"fdArray\", op: 1236, type: \"offset\" },\n { name: \"fdSelect\", op: 1237, type: \"offset\" },\n { name: \"vstore\", op: 24, type: \"offset\" }\n ];\n var PRIVATE_DICT_META = [\n { name: \"subrs\", op: 19, type: \"offset\", value: 0 },\n { name: \"defaultWidthX\", op: 20, type: \"number\", value: 0 },\n { name: \"nominalWidthX\", op: 21, type: \"number\", value: 0 }\n ];\n var PRIVATE_DICT_META_CFF2 = [\n { name: \"blueValues\", op: 6, type: \"delta\" },\n { name: \"otherBlues\", op: 7, type: \"delta\" },\n { name: \"familyBlues\", op: 7, type: \"delta\" },\n { name: \"familyBlues\", op: 8, type: \"delta\" },\n { name: \"familyOtherBlues\", op: 9, type: \"delta\" },\n { name: \"blueScale\", op: 1209, type: \"number\", value: 0.039625 },\n { name: \"blueShift\", op: 1210, type: \"number\", value: 7 },\n { name: \"blueFuzz\", op: 1211, type: \"number\", value: 1 },\n { name: \"stdHW\", op: 10, type: \"number\" },\n { name: \"stdVW\", op: 11, type: \"number\" },\n { name: \"stemSnapH\", op: 1212, type: \"number\" },\n { name: \"stemSnapV\", op: 1213, type: \"number\" },\n { name: \"languageGroup\", op: 1217, type: \"number\", value: 0 },\n { name: \"expansionFactor\", op: 1218, type: \"number\", value: 0.06 },\n { name: \"vsindex\", op: 22, type: \"number\", value: 0 },\n { name: \"subrs\", op: 19, type: \"offset\" }\n ];\n var FONT_DICT_META = [\n { name: \"private\", op: 18, type: [\"number\", \"offset\"], value: [0, 0] }\n ];\n function parseCFFTopDict(data, start, strings, version) {\n const dict = parseCFFDict(data, start, data.byteLength, version);\n return interpretDict(dict, version > 1 ? TOP_DICT_META_CFF2 : TOP_DICT_META, strings);\n }\n function parseCFFPrivateDict(data, start, size, strings, version) {\n const dict = parseCFFDict(data, start, size, version);\n return interpretDict(dict, version > 1 ? PRIVATE_DICT_META_CFF2 : PRIVATE_DICT_META, strings);\n }\n function parseFontDict(data, start, version) {\n const dict = parseCFFDict(data, start, void 0, version);\n return interpretDict(dict, FONT_DICT_META);\n }\n function gatherCFF2FontDicts(data, start, fdArray) {\n const fontDictArray = [];\n for (let i = 0; i < fdArray.length; i++) {\n const fontDictData = new DataView(new Uint8Array(fdArray[i]).buffer);\n const fontDict = parseFontDict(fontDictData, 0, 2);\n const privateSize = fontDict.private[0];\n const privateOffset = fontDict.private[1];\n if (privateSize !== 0 && privateOffset !== 0) {\n const privateDict = parseCFFPrivateDict(data, privateOffset + start, privateSize, [], 2);\n if (privateDict.subrs) {\n const subrOffset = privateOffset + privateDict.subrs;\n const subrIndex = parseCFFIndex(data, subrOffset + start, void 0, 2);\n fontDict._subrs = subrIndex.objects;\n fontDict._subrsBias = calcCFFSubroutineBias(fontDict._subrs);\n }\n fontDict._privateDict = privateDict;\n }\n fontDictArray.push(fontDict);\n }\n return fontDictArray;\n }\n function gatherCFFTopDicts(data, start, cffIndex, strings, version) {\n const topDictArray = [];\n for (let iTopDict = 0; iTopDict < cffIndex.length; iTopDict += 1) {\n const topDictData = new DataView(new Uint8Array(cffIndex[iTopDict]).buffer);\n const topDict = parseCFFTopDict(topDictData, 0, strings, version);\n topDict._subrs = [];\n topDict._subrsBias = 0;\n topDict._defaultWidthX = 0;\n topDict._nominalWidthX = 0;\n const privateSize = version < 2 ? topDict.private[0] : 0;\n const privateOffset = version < 2 ? topDict.private[1] : 0;\n if (privateSize !== 0 && privateOffset !== 0) {\n const privateDict = parseCFFPrivateDict(data, privateOffset + start, privateSize, strings, version);\n topDict._defaultWidthX = privateDict.defaultWidthX;\n topDict._nominalWidthX = privateDict.nominalWidthX;\n if (privateDict.subrs !== 0) {\n const subrOffset = privateOffset + privateDict.subrs;\n const subrIndex = parseCFFIndex(data, subrOffset + start, void 0, version);\n topDict._subrs = subrIndex.objects;\n topDict._subrsBias = calcCFFSubroutineBias(topDict._subrs);\n }\n topDict._privateDict = privateDict;\n }\n topDictArray.push(topDict);\n }\n return topDictArray;\n }\n function parseCFFCharset(data, start, nGlyphs, strings, isCIDFont) {\n let sid;\n let count;\n const parser = new parse_default.Parser(data, start);\n nGlyphs -= 1;\n const charset = [\".notdef\"];\n const format = parser.parseCard8();\n if (format === 0) {\n for (let i = 0; i < nGlyphs; i += 1) {\n sid = parser.parseSID();\n if (isCIDFont) {\n charset.push(sid);\n } else {\n charset.push(getCFFString(strings, sid) || sid);\n }\n }\n } else if (format === 1) {\n while (charset.length <= nGlyphs) {\n sid = parser.parseSID();\n count = parser.parseCard8();\n for (let i = 0; i <= count; i += 1) {\n if (isCIDFont) {\n charset.push(\"cid\" + (\"00000\" + sid).slice(-5));\n } else {\n charset.push(getCFFString(strings, sid) || sid);\n }\n sid += 1;\n }\n }\n } else if (format === 2) {\n while (charset.length <= nGlyphs) {\n sid = parser.parseSID();\n count = parser.parseCard16();\n for (let i = 0; i <= count; i += 1) {\n if (isCIDFont) {\n charset.push(\"cid\" + (\"00000\" + sid).slice(-5));\n } else {\n charset.push(getCFFString(strings, sid) || sid);\n }\n sid += 1;\n }\n }\n } else {\n throw new Error(\"Unknown charset format \" + format);\n }\n return charset;\n }\n function parseCFFEncoding(data, start) {\n let code;\n const encoding = {};\n const parser = new parse_default.Parser(data, start);\n const format = parser.parseCard8();\n if (format === 0) {\n const nCodes = parser.parseCard8();\n for (let i = 0; i < nCodes; i += 1) {\n code = parser.parseCard8();\n encoding[code] = i;\n }\n } else if (format === 1) {\n const nRanges = parser.parseCard8();\n code = 1;\n for (let i = 0; i < nRanges; i += 1) {\n const first = parser.parseCard8();\n const nLeft = parser.parseCard8();\n for (let j = first; j <= first + nLeft; j += 1) {\n encoding[j] = code;\n code += 1;\n }\n }\n } else {\n throw new Error(\"Unknown encoding format \" + format);\n }\n return encoding;\n }\n function parseBlend(operands) {\n let numberOfBlends = operands.pop();\n while (operands.length > numberOfBlends) {\n operands.pop();\n }\n }\n function applyPaintType(font, path) {\n const paintType = font.tables.cff && font.tables.cff.topDict && font.tables.cff.topDict.paintType || 0;\n if (paintType === 2) {\n path.fill = null;\n path.stroke = \"black\";\n path.strokeWidth = font.tables.cff.topDict.strokeWidth || 0;\n }\n return paintType;\n }\n function parseCFFCharstring(font, glyph, code, version, coords) {\n let c1x;\n let c1y;\n let c2x;\n let c2y;\n const p = new path_default();\n const stack = [];\n let nStems = 0;\n let haveWidth = false;\n let open = false;\n let x = 0;\n let y = 0;\n let subrs;\n let subrsBias;\n let defaultWidthX;\n let nominalWidthX;\n let vsindex = 0;\n let vstore = [];\n let blendVector;\n let callDepth = 0;\n const cffTable = font.tables.cff2 || font.tables.cff;\n defaultWidthX = cffTable.topDict._defaultWidthX;\n nominalWidthX = cffTable.topDict._nominalWidthX;\n coords = coords || font.variation && font.variation.get();\n if (!glyph.getBlendPath) {\n glyph.getBlendPath = function(variationCoords) {\n return parseCFFCharstring(font, glyph, code, version, variationCoords);\n };\n }\n if (font.isCIDFont || version > 1) {\n const fdIndex = cffTable.topDict._fdSelect ? cffTable.topDict._fdSelect[glyph.index] : 0;\n const fdDict = cffTable.topDict._fdArray[fdIndex];\n subrs = fdDict._subrs;\n subrsBias = fdDict._subrsBias;\n if (version > 1) {\n vstore = cffTable.topDict._vstore.itemVariationStore;\n vsindex = fdDict._privateDict.vsindex;\n } else {\n defaultWidthX = fdDict._defaultWidthX;\n nominalWidthX = fdDict._nominalWidthX;\n }\n } else {\n subrs = cffTable.topDict._subrs;\n subrsBias = cffTable.topDict._subrsBias;\n }\n const paintType = applyPaintType(font, p);\n let width = defaultWidthX;\n function newContour(x2, y2) {\n if (open && paintType !== 2) {\n p.closePath();\n }\n p.moveTo(x2, y2);\n open = true;\n }\n function parseStems() {\n let hasWidthArg;\n hasWidthArg = (stack.length & 1) !== 0;\n if (hasWidthArg && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n }\n nStems += stack.length >> 1;\n stack.length = 0;\n haveWidth = true;\n }\n function parse(code2) {\n let b1;\n let b2;\n let b3;\n let b4;\n let codeIndex;\n let subrCode;\n let jpx;\n let jpy;\n let c3x;\n let c3y;\n let c4x;\n let c4y;\n let i = 0;\n while (i < code2.length) {\n let v = code2[i];\n i += 1;\n switch (v) {\n case 1:\n parseStems();\n break;\n case 3:\n parseStems();\n break;\n case 4:\n if (stack.length > 1 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n y += stack.pop();\n newContour(x, y);\n break;\n case 5:\n while (stack.length > 0) {\n x += stack.shift();\n y += stack.shift();\n p.lineTo(x, y);\n }\n break;\n case 6:\n while (stack.length > 0) {\n x += stack.shift();\n p.lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n y += stack.shift();\n p.lineTo(x, y);\n }\n break;\n case 7:\n while (stack.length > 0) {\n y += stack.shift();\n p.lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n x += stack.shift();\n p.lineTo(x, y);\n }\n break;\n case 8:\n while (stack.length > 0) {\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n break;\n case 10:\n codeIndex = stack.pop() + subrsBias;\n subrCode = subrs[codeIndex];\n if (subrCode) {\n if (callDepth >= MAX_CALL_DEPTH) {\n console.warn(\"CFF charstring subroutine call depth exceeded, skipping callsubr\");\n break;\n }\n callDepth++;\n parse(subrCode);\n callDepth--;\n }\n break;\n case 11:\n if (version > 1) {\n console.error(\"CFF CharString operator return (11) is not supported in CFF2\");\n break;\n }\n return;\n case 12:\n v = code2[i];\n i += 1;\n switch (v) {\n case 35:\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n jpx = c2x + stack.shift();\n jpy = c2y + stack.shift();\n c3x = jpx + stack.shift();\n c3y = jpy + stack.shift();\n c4x = c3x + stack.shift();\n c4y = c3y + stack.shift();\n x = c4x + stack.shift();\n y = c4y + stack.shift();\n stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n case 34:\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n jpx = c2x + stack.shift();\n jpy = c2y;\n c3x = jpx + stack.shift();\n c3y = c2y;\n c4x = c3x + stack.shift();\n c4y = y;\n x = c4x + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n case 36:\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n jpx = c2x + stack.shift();\n jpy = c2y;\n c3x = jpx + stack.shift();\n c3y = c2y;\n c4x = c3x + stack.shift();\n c4y = c3y + stack.shift();\n x = c4x + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n case 37:\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n jpx = c2x + stack.shift();\n jpy = c2y + stack.shift();\n c3x = jpx + stack.shift();\n c3y = jpy + stack.shift();\n c4x = c3x + stack.shift();\n c4y = c3y + stack.shift();\n if (Math.abs(c4x - x) > Math.abs(c4y - y)) {\n x = c4x + stack.shift();\n } else {\n y = c4y + stack.shift();\n }\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n default:\n console.log(\"Glyph \" + glyph.index + \": unknown operator 1200\" + v);\n stack.length = 0;\n }\n break;\n case 14:\n if (version > 1) {\n console.error(\"CFF CharString operator endchar (14) is not supported in CFF2\");\n break;\n }\n if (stack.length >= 4) {\n const acharName = cffStandardEncoding[stack.pop()];\n const bcharName = cffStandardEncoding[stack.pop()];\n const ady = stack.pop();\n const adx = stack.pop();\n if (acharName && bcharName) {\n glyph.isComposite = true;\n glyph.components = [];\n const acharGlyphIndex = font.cffEncoding.charset.indexOf(acharName);\n const bcharGlyphIndex = font.cffEncoding.charset.indexOf(bcharName);\n glyph.components.push({\n glyphIndex: bcharGlyphIndex,\n dx: 0,\n dy: 0\n });\n glyph.components.push({\n glyphIndex: acharGlyphIndex,\n dx: adx,\n dy: ady\n });\n p.extend(font.glyphs.get(bcharGlyphIndex).path);\n const acharGlyph = font.glyphs.get(acharGlyphIndex);\n const shiftedCommands = JSON.parse(JSON.stringify(acharGlyph.path.commands));\n for (let i2 = 0; i2 < shiftedCommands.length; i2 += 1) {\n const cmd = shiftedCommands[i2];\n if (cmd.type !== \"Z\") {\n cmd.x += adx;\n cmd.y += ady;\n }\n if (cmd.type === \"Q\" || cmd.type === \"C\") {\n cmd.x1 += adx;\n cmd.y1 += ady;\n }\n if (cmd.type === \"C\") {\n cmd.x2 += adx;\n cmd.y2 += ady;\n }\n }\n p.extend(shiftedCommands);\n }\n } else if (stack.length > 0 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n if (open && paintType !== 2) {\n p.closePath();\n open = false;\n }\n break;\n case 15:\n if (version < 2) {\n console.error(\"CFF2 CharString operator vsindex (15) is not supported in CFF\");\n break;\n }\n vsindex = stack.pop();\n break;\n case 16:\n if (version < 2) {\n console.error(\"CFF2 CharString operator blend (16) is not supported in CFF\");\n break;\n }\n if (!blendVector) {\n blendVector = font.variation && coords && font.variation.process.getBlendVector(vstore, vsindex, coords);\n }\n var n = stack.pop();\n var axisCount = blendVector ? blendVector.length : vstore.itemVariationSubtables[vsindex].regionIndexes.length;\n var deltaSetCount = n * axisCount;\n var delta = stack.length - deltaSetCount;\n var deltaSetIndex = delta - n;\n if (blendVector) {\n for (let i2 = 0; i2 < n; i2++) {\n var sum = stack[deltaSetIndex + i2];\n for (let j = 0; j < axisCount; j++) {\n sum += blendVector[j] * stack[delta++];\n }\n stack[deltaSetIndex + i2] = sum;\n }\n }\n while (deltaSetCount--) {\n stack.pop();\n }\n break;\n case 18:\n parseStems();\n break;\n case 19:\n // hintmask\n case 20:\n parseStems();\n i += nStems + 7 >> 3;\n break;\n case 21:\n if (stack.length > 2 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n y += stack.pop();\n x += stack.pop();\n newContour(x, y);\n break;\n case 22:\n if (stack.length > 1 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n x += stack.pop();\n newContour(x, y);\n break;\n case 23:\n parseStems();\n break;\n case 24:\n while (stack.length > 2) {\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n x += stack.shift();\n y += stack.shift();\n p.lineTo(x, y);\n break;\n case 25:\n while (stack.length > 6) {\n x += stack.shift();\n y += stack.shift();\n p.lineTo(x, y);\n }\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n break;\n case 26:\n if (stack.length & 1) {\n x += stack.shift();\n }\n while (stack.length > 0) {\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x;\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n break;\n case 27:\n if (stack.length & 1) {\n y += stack.shift();\n }\n while (stack.length > 0) {\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y;\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n break;\n case 28:\n b1 = code2[i];\n b2 = code2[i + 1];\n stack.push((b1 << 24 | b2 << 16) >> 16);\n i += 2;\n break;\n case 29:\n codeIndex = stack.pop() + font.gsubrsBias;\n subrCode = font.gsubrs[codeIndex];\n if (subrCode) {\n if (callDepth >= MAX_CALL_DEPTH) {\n console.warn(\"CFF charstring subroutine call depth exceeded, skipping callgsubr\");\n break;\n }\n callDepth++;\n parse(subrCode);\n callDepth--;\n }\n break;\n case 30:\n while (stack.length > 0) {\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n if (stack.length === 0) {\n break;\n }\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n y = c2y + stack.shift();\n x = c2x + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n break;\n case 31:\n while (stack.length > 0) {\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n y = c2y + stack.shift();\n x = c2x + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n if (stack.length === 0) {\n break;\n }\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n break;\n default:\n if (v < 32) {\n console.log(\"Glyph \" + glyph.index + \": unknown operator \" + v);\n } else if (v < 247) {\n stack.push(v - 139);\n } else if (v < 251) {\n b1 = code2[i];\n i += 1;\n stack.push((v - 247) * 256 + b1 + 108);\n } else if (v < 255) {\n b1 = code2[i];\n i += 1;\n stack.push(-(v - 251) * 256 - b1 - 108);\n } else {\n b1 = code2[i];\n b2 = code2[i + 1];\n b3 = code2[i + 2];\n b4 = code2[i + 3];\n i += 4;\n stack.push((b1 << 24 | b2 << 16 | b3 << 8 | b4) / 65536);\n }\n }\n }\n }\n parse(code);\n if (font.variation && coords) {\n p.commands = p.commands.map((c) => {\n const keys = Object.keys(c);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key === \"type\") continue;\n c[key] = Math.round(c[key]);\n }\n return c;\n });\n }\n if (haveWidth) {\n glyph.advanceWidth = width;\n }\n return p;\n }\n function parseCFFFDSelect(data, start, nGlyphs, fdArrayCount, version) {\n const fdSelect = [];\n let fdIndex;\n const parser = new parse_default.Parser(data, start);\n const format = parser.parseCard8();\n if (format === 0) {\n for (let iGid = 0; iGid < nGlyphs; iGid++) {\n fdIndex = parser.parseCard8();\n if (fdIndex >= fdArrayCount) {\n throw new Error(\"CFF table CID Font FDSelect has bad FD index value \" + fdIndex + \" (FD count \" + fdArrayCount + \")\");\n }\n fdSelect.push(fdIndex);\n }\n } else if (format === 3 || version > 1 && format === 4) {\n const nRanges = format === 4 ? parser.parseULong() : parser.parseCard16();\n let first = format === 4 ? parser.parseULong() : parser.parseCard16();\n if (first !== 0) {\n throw new Error(`CFF Table CID Font FDSelect format ${format} range has bad initial GID ${first}`);\n }\n let next;\n for (let iRange = 0; iRange < nRanges; iRange++) {\n fdIndex = format === 4 ? parser.parseUShort() : parser.parseCard8();\n next = format === 4 ? parser.parseULong() : parser.parseCard16();\n if (fdIndex >= fdArrayCount) {\n throw new Error(\"CFF table CID Font FDSelect has bad FD index value \" + fdIndex + \" (FD count \" + fdArrayCount + \")\");\n }\n if (next > nGlyphs) {\n throw new Error(`CFF Table CID Font FDSelect format ${version} range has bad GID ${next}`);\n }\n for (; first < next; first++) {\n fdSelect.push(fdIndex);\n }\n first = next;\n }\n if (next !== nGlyphs) {\n throw new Error(\"CFF Table CID Font FDSelect format 3 range has bad final (Sentinal) GID \" + next);\n }\n } else {\n throw new Error(\"CFF Table CID Font FDSelect table has unsupported format \" + format);\n }\n return fdSelect;\n }\n function parseCFFTable(data, start, font, opt) {\n let resultTable;\n const header = parseCFFHeader(data, start);\n if (header.formatMajor === 2) {\n resultTable = font.tables.cff2 = {};\n } else {\n resultTable = font.tables.cff = {};\n }\n const nameIndex = header.formatMajor > 1 ? null : parseCFFIndex(data, header.endOffset, parse_default.bytesToString);\n const topDictIndex = header.formatMajor > 1 ? null : parseCFFIndex(data, nameIndex.endOffset);\n const stringIndex = header.formatMajor > 1 ? null : parseCFFIndex(data, topDictIndex.endOffset, parse_default.bytesToString);\n const globalSubrIndex = parseCFFIndex(data, header.formatMajor > 1 ? start + header.size + header.topDictLength : stringIndex.endOffset, void 0, header.formatMajor);\n font.gsubrs = globalSubrIndex.objects;\n font.gsubrsBias = calcCFFSubroutineBias(font.gsubrs);\n let topDict;\n if (header.formatMajor > 1) {\n const topDictOffset = start + header.size;\n const topDictData = parse_default.getBytes(data, topDictOffset, topDictOffset + header.topDictLength);\n topDict = gatherCFFTopDicts(data, 0, [topDictData], void 0, header.formatMajor)[0];\n } else {\n const topDictArray = gatherCFFTopDicts(data, start, topDictIndex.objects, stringIndex.objects, header.formatMajor);\n if (topDictArray.length !== 1) {\n throw new Error(\"CFF table has too many fonts in 'FontSet' - count of fonts NameIndex.length = \" + topDictArray.length);\n }\n topDict = topDictArray[0];\n }\n resultTable.topDict = topDict;\n if (topDict._privateDict) {\n font.defaultWidthX = topDict._privateDict.defaultWidthX;\n font.nominalWidthX = topDict._privateDict.nominalWidthX;\n }\n if (header.formatMajor < 2 && topDict.ros[0] !== void 0 && topDict.ros[1] !== void 0) {\n font.isCIDFont = true;\n }\n if (header.formatMajor > 1) {\n let fdArrayIndexOffset = topDict.fdArray;\n let fdSelectOffset = topDict.fdSelect;\n if (!fdArrayIndexOffset) {\n throw new Error(\"This is a CFF2 font, but FDArray information is missing\");\n }\n const fdArrayIndex = parseCFFIndex(data, start + fdArrayIndexOffset, null, header.formatMajor);\n const fdArray = gatherCFF2FontDicts(data, start, fdArrayIndex.objects);\n topDict._fdArray = fdArray;\n if (fdSelectOffset) {\n topDict._fdSelect = parseCFFFDSelect(data, start + fdSelectOffset, font.numGlyphs, fdArray.length, header.formatMajor);\n }\n } else if (font.isCIDFont) {\n let fdArrayOffset = topDict.fdArray;\n let fdSelectOffset = topDict.fdSelect;\n if (fdArrayOffset === 0 || fdSelectOffset === 0) {\n throw new Error(\"Font is marked as a CID font, but FDArray and/or FDSelect information is missing\");\n }\n fdArrayOffset += start;\n const fdArrayIndex = parseCFFIndex(data, fdArrayOffset);\n const fdArray = gatherCFFTopDicts(data, start, fdArrayIndex.objects, stringIndex.objects, header.formatMajor);\n topDict._fdArray = fdArray;\n fdSelectOffset += start;\n topDict._fdSelect = parseCFFFDSelect(data, fdSelectOffset, font.numGlyphs, fdArray.length, header.formatMajor);\n }\n if (header.formatMajor < 2) {\n const privateDictOffset = start + topDict.private[1];\n const privateDict = parseCFFPrivateDict(data, privateDictOffset, topDict.private[0], stringIndex.objects, header.formatMajor);\n font.defaultWidthX = privateDict.defaultWidthX;\n font.nominalWidthX = privateDict.nominalWidthX;\n if (privateDict.subrs !== 0) {\n const subrOffset = privateDictOffset + privateDict.subrs;\n const subrIndex = parseCFFIndex(data, subrOffset);\n font.subrs = subrIndex.objects;\n font.subrsBias = calcCFFSubroutineBias(font.subrs);\n } else {\n font.subrs = [];\n font.subrsBias = 0;\n }\n }\n let charStringsIndex;\n if (opt.lowMemory) {\n charStringsIndex = parseCFFIndexLowMemory(data, start + topDict.charStrings, header.formatMajor);\n font.nGlyphs = charStringsIndex.offsets.length - (header.formatMajor > 1 ? 1 : 0);\n } else {\n charStringsIndex = parseCFFIndex(data, start + topDict.charStrings, null, header.formatMajor);\n font.nGlyphs = charStringsIndex.objects.length;\n }\n if (header.formatMajor > 1 && font.tables.maxp && font.nGlyphs !== font.tables.maxp.numGlyphs) {\n console.error(`Glyph count in the CFF2 table (${font.nGlyphs}) must correspond to the glyph count in the maxp table (${font.tables.maxp.numGlyphs})`);\n }\n if (header.formatMajor < 2) {\n let charset = [];\n let encoding = [];\n if (topDict.charset === 0) {\n charset = cffISOAdobeStrings;\n } else if (topDict.charset === 1) {\n charset = cffIExpertStrings;\n } else if (topDict.charset === 2) {\n charset = cffExpertSubsetStrings;\n } else {\n charset = parseCFFCharset(data, start + topDict.charset, font.nGlyphs, stringIndex.objects, font.isCIDFont);\n }\n if (topDict.encoding === 0) {\n encoding = cffStandardEncoding;\n } else if (topDict.encoding === 1) {\n encoding = cffExpertEncoding;\n } else {\n encoding = parseCFFEncoding(data, start + topDict.encoding);\n }\n font.cffEncoding = new CffEncoding(encoding, charset);\n font.encoding = font.encoding || font.cffEncoding;\n }\n font.glyphs = new glyphset_default.GlyphSet(font);\n if (opt.lowMemory) {\n font._push = function(i) {\n const charString = getCffIndexObject(i, charStringsIndex.offsets, data, start + topDict.charStrings, void 0, header.formatMajor);\n font.glyphs.push(i, glyphset_default.cffGlyphLoader(font, i, parseCFFCharstring, charString, header.formatMajor));\n };\n } else {\n for (let i = 0; i < font.nGlyphs; i += 1) {\n const charString = charStringsIndex.objects[i];\n font.glyphs.push(i, glyphset_default.cffGlyphLoader(font, i, parseCFFCharstring, charString, header.formatMajor));\n }\n }\n if (topDict.vstore) {\n const p = new parse_default.Parser(data, start + topDict.vstore);\n topDict._vstore = p.parseVariationStore();\n }\n }\n function encodeString(s, strings) {\n let sid;\n let i = cffStandardStrings.indexOf(s);\n if (i >= 0) {\n sid = i;\n }\n i = strings.indexOf(s);\n if (i >= 0) {\n sid = i + cffStandardStrings.length;\n } else {\n sid = cffStandardStrings.length + strings.length;\n strings.push(s);\n }\n return sid;\n }\n function makeHeader() {\n return new table_default.Record(\"Header\", [\n { name: \"major\", type: \"Card8\", value: 1 },\n { name: \"minor\", type: \"Card8\", value: 0 },\n { name: \"hdrSize\", type: \"Card8\", value: 4 },\n { name: \"major\", type: \"Card8\", value: 1 }\n ]);\n }\n function makeNameIndex(fontNames) {\n const t = new table_default.Record(\"Name INDEX\", [\n { name: \"names\", type: \"INDEX\", value: [] }\n ]);\n t.names = [];\n for (let i = 0; i < fontNames.length; i += 1) {\n t.names.push({ name: \"name_\" + i, type: \"NAME\", value: fontNames[i] });\n }\n return t;\n }\n function makeDict(meta, attrs, strings) {\n const m = {};\n for (let i = 0; i < meta.length; i += 1) {\n const entry = meta[i];\n let value = attrs[entry.name];\n if (value !== void 0 && !equals(value, entry.value)) {\n if (entry.type === \"SID\") {\n value = encodeString(value, strings);\n }\n m[entry.op] = { name: entry.name, type: entry.type, value };\n }\n }\n return m;\n }\n function makeTopDict(attrs, strings, version) {\n const t = new table_default.Record(\"Top DICT\", [\n { name: \"dict\", type: \"DICT\", value: {} }\n ]);\n t.dict = makeDict(version > 1 ? TOP_DICT_META_CFF2 : TOP_DICT_META, attrs, strings);\n return t;\n }\n function makeTopDictIndex(topDict) {\n const t = new table_default.Record(\"Top DICT INDEX\", [\n { name: \"topDicts\", type: \"INDEX\", value: [] }\n ]);\n t.topDicts = [{ name: \"topDict_0\", type: \"TABLE\", value: topDict }];\n return t;\n }\n function makeStringIndex(strings) {\n const t = new table_default.Record(\"String INDEX\", [\n { name: \"strings\", type: \"INDEX\", value: [] }\n ]);\n t.strings = [];\n for (let i = 0; i < strings.length; i += 1) {\n t.strings.push({ name: \"string_\" + i, type: \"STRING\", value: strings[i] });\n }\n return t;\n }\n function makeGlobalSubrIndex() {\n return new table_default.Record(\"Global Subr INDEX\", [\n { name: \"subrs\", type: \"INDEX\", value: [] }\n ]);\n }\n function makeCharsets(glyphNames, strings) {\n const t = new table_default.Record(\"Charsets\", [\n { name: \"format\", type: \"Card8\", value: 0 }\n ]);\n for (let i = 0; i < glyphNames.length; i += 1) {\n const glyphName = glyphNames[i];\n const glyphSID = encodeString(glyphName, strings);\n t.fields.push({ name: \"glyph_\" + i, type: \"SID\", value: glyphSID });\n }\n return t;\n }\n function glyphToOps(glyph, version) {\n const ops = [];\n const path = glyph.path;\n if (version < 2) {\n ops.push({ name: \"width\", type: \"NUMBER\", value: glyph.advanceWidth });\n }\n let x = 0;\n let y = 0;\n for (let i = 0; i < path.commands.length; i += 1) {\n let dx;\n let dy;\n let cmd = path.commands[i];\n if (cmd.type === \"Q\") {\n const _13 = 1 / 3;\n const _23 = 2 / 3;\n cmd = {\n type: \"C\",\n x: cmd.x,\n y: cmd.y,\n x1: Math.round(_13 * x + _23 * cmd.x1),\n y1: Math.round(_13 * y + _23 * cmd.y1),\n x2: Math.round(_13 * cmd.x + _23 * cmd.x1),\n y2: Math.round(_13 * cmd.y + _23 * cmd.y1)\n };\n }\n if (cmd.type === \"M\") {\n dx = Math.round(cmd.x - x);\n dy = Math.round(cmd.y - y);\n ops.push({ name: \"dx\", type: \"NUMBER\", value: dx });\n ops.push({ name: \"dy\", type: \"NUMBER\", value: dy });\n ops.push({ name: \"rmoveto\", type: \"OP\", value: 21 });\n x = Math.round(cmd.x);\n y = Math.round(cmd.y);\n } else if (cmd.type === \"L\") {\n dx = Math.round(cmd.x - x);\n dy = Math.round(cmd.y - y);\n ops.push({ name: \"dx\", type: \"NUMBER\", value: dx });\n ops.push({ name: \"dy\", type: \"NUMBER\", value: dy });\n ops.push({ name: \"rlineto\", type: \"OP\", value: 5 });\n x = Math.round(cmd.x);\n y = Math.round(cmd.y);\n } else if (cmd.type === \"C\") {\n const dx1 = Math.round(cmd.x1 - x);\n const dy1 = Math.round(cmd.y1 - y);\n const dx2 = Math.round(cmd.x2 - cmd.x1);\n const dy2 = Math.round(cmd.y2 - cmd.y1);\n dx = Math.round(cmd.x - cmd.x2);\n dy = Math.round(cmd.y - cmd.y2);\n ops.push({ name: \"dx1\", type: \"NUMBER\", value: dx1 });\n ops.push({ name: \"dy1\", type: \"NUMBER\", value: dy1 });\n ops.push({ name: \"dx2\", type: \"NUMBER\", value: dx2 });\n ops.push({ name: \"dy2\", type: \"NUMBER\", value: dy2 });\n ops.push({ name: \"dx\", type: \"NUMBER\", value: dx });\n ops.push({ name: \"dy\", type: \"NUMBER\", value: dy });\n ops.push({ name: \"rrcurveto\", type: \"OP\", value: 8 });\n x = Math.round(cmd.x);\n y = Math.round(cmd.y);\n }\n }\n if (version < 2) {\n ops.push({ name: \"endchar\", type: \"OP\", value: 14 });\n }\n return ops;\n }\n function makeCharStringsIndex(glyphs, version) {\n const t = new table_default.Record(\"CharStrings INDEX\", [\n { name: \"charStrings\", type: \"INDEX\", value: [] }\n ]);\n for (let i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs.get(i);\n const ops = glyphToOps(glyph, version);\n t.charStrings.push({ name: glyph.name, type: \"CHARSTRING\", value: ops });\n }\n return t;\n }\n function makePrivateDict(attrs, strings, version) {\n const t = new table_default.Record(\"Private DICT\", [\n { name: \"dict\", type: \"DICT\", value: {} }\n ]);\n t.dict = makeDict(version > 1 ? PRIVATE_DICT_META_CFF2 : PRIVATE_DICT_META, attrs, strings);\n return t;\n }\n function makeCFFTable(glyphs, options) {\n const cffVersion = 1;\n const t = new table_default.Table(\"CFF \", [\n { name: \"header\", type: \"RECORD\" },\n { name: \"nameIndex\", type: \"RECORD\" },\n { name: \"topDictIndex\", type: \"RECORD\" },\n { name: \"stringIndex\", type: \"RECORD\" },\n { name: \"globalSubrIndex\", type: \"RECORD\" },\n { name: \"charsets\", type: \"RECORD\" },\n { name: \"charStringsIndex\", type: \"RECORD\" },\n { name: \"privateDict\", type: \"RECORD\" }\n ]);\n const fontScale = 1 / options.unitsPerEm;\n const attrs = {\n version: options.version,\n fullName: options.fullName,\n familyName: options.familyName,\n weight: options.weightName,\n fontBBox: options.fontBBox || [0, 0, 0, 0],\n fontMatrix: [fontScale, 0, 0, fontScale, 0, 0],\n charset: 999,\n encoding: 0,\n charStrings: 999,\n private: [0, 999]\n };\n const topDictOptions = options && options.topDict || {};\n if (cffVersion < 2 && topDictOptions.paintType) {\n attrs.paintType = topDictOptions.paintType;\n attrs.strokeWidth = topDictOptions.strokeWidth || 0;\n }\n const privateAttrs = {};\n const glyphNames = [];\n let glyph;\n for (let i = 1; i < glyphs.length; i += 1) {\n glyph = glyphs.get(i);\n glyphNames.push(glyph.name);\n }\n const strings = [];\n t.header = makeHeader();\n t.nameIndex = makeNameIndex([options.postScriptName]);\n let topDict = makeTopDict(attrs, strings);\n t.topDictIndex = makeTopDictIndex(topDict);\n t.globalSubrIndex = makeGlobalSubrIndex();\n t.charsets = makeCharsets(glyphNames, strings);\n t.charStringsIndex = makeCharStringsIndex(glyphs, cffVersion);\n t.privateDict = makePrivateDict(privateAttrs, strings);\n t.stringIndex = makeStringIndex(strings);\n const startOffset = t.header.sizeOf() + t.nameIndex.sizeOf() + t.topDictIndex.sizeOf() + t.stringIndex.sizeOf() + t.globalSubrIndex.sizeOf();\n attrs.charset = startOffset;\n attrs.encoding = 0;\n attrs.charStrings = attrs.charset + t.charsets.sizeOf();\n attrs.private[1] = attrs.charStrings + t.charStringsIndex.sizeOf();\n topDict = makeTopDict(attrs, strings);\n t.topDictIndex = makeTopDictIndex(topDict);\n return t;\n }\n var cff_default = { parse: parseCFFTable, make: makeCFFTable };\n\n // src/tables/head.mjs\n function parseHeadTable(data, start) {\n const head = {};\n const p = new parse_default.Parser(data, start);\n head.version = p.parseVersion();\n head.fontRevision = Math.round(p.parseFixed() * 1e3) / 1e3;\n head.checkSumAdjustment = p.parseULong();\n head.magicNumber = p.parseULong();\n check_default.argument(head.magicNumber === 1594834165, \"Font header has wrong magic number.\");\n head.flags = p.parseUShort();\n head.unitsPerEm = p.parseUShort();\n head.created = p.parseLongDateTime();\n head.modified = p.parseLongDateTime();\n head.xMin = p.parseShort();\n head.yMin = p.parseShort();\n head.xMax = p.parseShort();\n head.yMax = p.parseShort();\n head.macStyle = p.parseUShort();\n head.lowestRecPPEM = p.parseUShort();\n head.fontDirectionHint = p.parseShort();\n head.indexToLocFormat = p.parseShort();\n head.glyphDataFormat = p.parseShort();\n return head;\n }\n function makeHeadTable(options) {\n const timestamp = Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3) + 2082844800;\n let createdTimestamp = timestamp;\n let macStyle = options.macStyle || 0;\n if (options.createdTimestamp) {\n createdTimestamp = options.createdTimestamp + 2082844800;\n }\n return new table_default.Table(\"head\", [\n { name: \"version\", type: \"FIXED\", value: 65536 },\n { name: \"fontRevision\", type: \"FIXED\", value: 65536 },\n { name: \"checkSumAdjustment\", type: \"ULONG\", value: 0 },\n { name: \"magicNumber\", type: \"ULONG\", value: 1594834165 },\n { name: \"flags\", type: \"USHORT\", value: 0 },\n { name: \"unitsPerEm\", type: \"USHORT\", value: 1e3 },\n { name: \"created\", type: \"LONGDATETIME\", value: createdTimestamp },\n { name: \"modified\", type: \"LONGDATETIME\", value: timestamp },\n { name: \"xMin\", type: \"SHORT\", value: 0 },\n { name: \"yMin\", type: \"SHORT\", value: 0 },\n { name: \"xMax\", type: \"SHORT\", value: 0 },\n { name: \"yMax\", type: \"SHORT\", value: 0 },\n { name: \"macStyle\", type: \"USHORT\", value: macStyle },\n { name: \"lowestRecPPEM\", type: \"USHORT\", value: 0 },\n { name: \"fontDirectionHint\", type: \"SHORT\", value: 2 },\n { name: \"indexToLocFormat\", type: \"SHORT\", value: 0 },\n { name: \"glyphDataFormat\", type: \"SHORT\", value: 0 }\n ], options);\n }\n var head_default = { parse: parseHeadTable, make: makeHeadTable };\n\n // src/tables/hhea.mjs\n function parseHheaTable(data, start) {\n const hhea = {};\n const p = new parse_default.Parser(data, start);\n hhea.version = p.parseVersion();\n hhea.ascender = p.parseShort();\n hhea.descender = p.parseShort();\n hhea.lineGap = p.parseShort();\n hhea.advanceWidthMax = p.parseUShort();\n hhea.minLeftSideBearing = p.parseShort();\n hhea.minRightSideBearing = p.parseShort();\n hhea.xMaxExtent = p.parseShort();\n hhea.caretSlopeRise = p.parseShort();\n hhea.caretSlopeRun = p.parseShort();\n hhea.caretOffset = p.parseShort();\n p.relativeOffset += 8;\n hhea.metricDataFormat = p.parseShort();\n hhea.numberOfHMetrics = p.parseUShort();\n return hhea;\n }\n function makeHheaTable(options) {\n return new table_default.Table(\"hhea\", [\n { name: \"version\", type: \"FIXED\", value: 65536 },\n { name: \"ascender\", type: \"FWORD\", value: 0 },\n { name: \"descender\", type: \"FWORD\", value: 0 },\n { name: \"lineGap\", type: \"FWORD\", value: 0 },\n { name: \"advanceWidthMax\", type: \"UFWORD\", value: 0 },\n { name: \"minLeftSideBearing\", type: \"FWORD\", value: 0 },\n { name: \"minRightSideBearing\", type: \"FWORD\", value: 0 },\n { name: \"xMaxExtent\", type: \"FWORD\", value: 0 },\n { name: \"caretSlopeRise\", type: \"SHORT\", value: 1 },\n { name: \"caretSlopeRun\", type: \"SHORT\", value: 0 },\n { name: \"caretOffset\", type: \"SHORT\", value: 0 },\n { name: \"reserved1\", type: \"SHORT\", value: 0 },\n { name: \"reserved2\", type: \"SHORT\", value: 0 },\n { name: \"reserved3\", type: \"SHORT\", value: 0 },\n { name: \"reserved4\", type: \"SHORT\", value: 0 },\n { name: \"metricDataFormat\", type: \"SHORT\", value: 0 },\n { name: \"numberOfHMetrics\", type: \"USHORT\", value: 0 }\n ], options);\n }\n var hhea_default = { parse: parseHheaTable, make: makeHheaTable };\n\n // src/tables/hmtx.mjs\n function parseHmtxTableAll(data, start, numMetrics, numGlyphs, glyphs) {\n let advanceWidth;\n let leftSideBearing;\n const p = new parse_default.Parser(data, start);\n for (let i = 0; i < numGlyphs; i += 1) {\n if (i < numMetrics) {\n advanceWidth = p.parseUShort();\n leftSideBearing = p.parseShort();\n }\n const glyph = glyphs.get(i);\n glyph.advanceWidth = advanceWidth;\n glyph.leftSideBearing = leftSideBearing;\n }\n }\n function parseHmtxTableOnLowMemory(font, data, start, numMetrics, numGlyphs) {\n font._hmtxTableData = {};\n let advanceWidth;\n let leftSideBearing;\n const p = new parse_default.Parser(data, start);\n for (let i = 0; i < numGlyphs; i += 1) {\n if (i < numMetrics) {\n advanceWidth = p.parseUShort();\n leftSideBearing = p.parseShort();\n }\n font._hmtxTableData[i] = {\n advanceWidth,\n leftSideBearing\n };\n }\n }\n function parseHmtxTable(font, data, start, numMetrics, numGlyphs, glyphs, opt) {\n if (opt.lowMemory)\n parseHmtxTableOnLowMemory(font, data, start, numMetrics, numGlyphs);\n else\n parseHmtxTableAll(data, start, numMetrics, numGlyphs, glyphs);\n }\n function makeHmtxTable(glyphs) {\n const t = new table_default.Table(\"hmtx\", []);\n for (let i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs.get(i);\n const advanceWidth = glyph.advanceWidth || 0;\n const leftSideBearing = glyph.leftSideBearing || 0;\n t.fields.push({ name: \"advanceWidth_\" + i, type: \"USHORT\", value: advanceWidth });\n t.fields.push({ name: \"leftSideBearing_\" + i, type: \"SHORT\", value: leftSideBearing });\n }\n return t;\n }\n var hmtx_default = { parse: parseHmtxTable, make: makeHmtxTable };\n\n // src/tables/ltag.mjs\n function makeLtagTable(tags) {\n const result = new table_default.Table(\"ltag\", [\n { name: \"version\", type: \"ULONG\", value: 1 },\n { name: \"flags\", type: \"ULONG\", value: 0 },\n { name: \"numTags\", type: \"ULONG\", value: tags.length }\n ]);\n let stringPool = \"\";\n const stringPoolOffset = 12 + tags.length * 4;\n for (let i = 0; i < tags.length; ++i) {\n let pos = stringPool.indexOf(tags[i]);\n if (pos < 0) {\n pos = stringPool.length;\n stringPool += tags[i];\n }\n result.fields.push({ name: \"offset \" + i, type: \"USHORT\", value: stringPoolOffset + pos });\n result.fields.push({ name: \"length \" + i, type: \"USHORT\", value: tags[i].length });\n }\n result.fields.push({ name: \"stringPool\", type: \"CHARARRAY\", value: stringPool });\n return result;\n }\n function parseLtagTable(data, start) {\n const p = new parse_default.Parser(data, start);\n const tableVersion = p.parseULong();\n check_default.argument(tableVersion === 1, \"Unsupported ltag table version.\");\n p.skip(\"uLong\", 1);\n const numTags = p.parseULong();\n const tags = [];\n for (let i = 0; i < numTags; i++) {\n let tag = \"\";\n const offset = start + p.parseUShort();\n const length = p.parseUShort();\n for (let j = offset; j < offset + length; ++j) {\n tag += String.fromCharCode(data.getInt8(j));\n }\n tags.push(tag);\n }\n return tags;\n }\n var ltag_default = { make: makeLtagTable, parse: parseLtagTable };\n\n // src/tables/maxp.mjs\n function parseMaxpTable(data, start) {\n const maxp = {};\n const p = new parse_default.Parser(data, start);\n maxp.version = p.parseVersion();\n maxp.numGlyphs = p.parseUShort();\n if (maxp.version === 1) {\n maxp.maxPoints = p.parseUShort();\n maxp.maxContours = p.parseUShort();\n maxp.maxCompositePoints = p.parseUShort();\n maxp.maxCompositeContours = p.parseUShort();\n maxp.maxZones = p.parseUShort();\n maxp.maxTwilightPoints = p.parseUShort();\n maxp.maxStorage = p.parseUShort();\n maxp.maxFunctionDefs = p.parseUShort();\n maxp.maxInstructionDefs = p.parseUShort();\n maxp.maxStackElements = p.parseUShort();\n maxp.maxSizeOfInstructions = p.parseUShort();\n maxp.maxComponentElements = p.parseUShort();\n maxp.maxComponentDepth = p.parseUShort();\n }\n return maxp;\n }\n function makeMaxpTable(numGlyphs) {\n return new table_default.Table(\"maxp\", [\n { name: \"version\", type: \"FIXED\", value: 20480 },\n { name: \"numGlyphs\", type: \"USHORT\", value: numGlyphs }\n ]);\n }\n var maxp_default = { parse: parseMaxpTable, make: makeMaxpTable };\n\n // src/tables/os2.mjs\n var unicodeRanges = [\n { begin: 0, end: 127 },\n // Basic Latin\n { begin: 128, end: 255 },\n // Latin-1 Supplement\n { begin: 256, end: 383 },\n // Latin Extended-A\n { begin: 384, end: 591 },\n // Latin Extended-B\n { begin: 592, end: 687 },\n // IPA Extensions\n { begin: 688, end: 767 },\n // Spacing Modifier Letters\n { begin: 768, end: 879 },\n // Combining Diacritical Marks\n { begin: 880, end: 1023 },\n // Greek and Coptic\n { begin: 11392, end: 11519 },\n // Coptic\n { begin: 1024, end: 1279 },\n // Cyrillic\n { begin: 1328, end: 1423 },\n // Armenian\n { begin: 1424, end: 1535 },\n // Hebrew\n { begin: 42240, end: 42559 },\n // Vai\n { begin: 1536, end: 1791 },\n // Arabic\n { begin: 1984, end: 2047 },\n // NKo\n { begin: 2304, end: 2431 },\n // Devanagari\n { begin: 2432, end: 2559 },\n // Bengali\n { begin: 2560, end: 2687 },\n // Gurmukhi\n { begin: 2688, end: 2815 },\n // Gujarati\n { begin: 2816, end: 2943 },\n // Oriya\n { begin: 2944, end: 3071 },\n // Tamil\n { begin: 3072, end: 3199 },\n // Telugu\n { begin: 3200, end: 3327 },\n // Kannada\n { begin: 3328, end: 3455 },\n // Malayalam\n { begin: 3584, end: 3711 },\n // Thai\n { begin: 3712, end: 3839 },\n // Lao\n { begin: 4256, end: 4351 },\n // Georgian\n { begin: 6912, end: 7039 },\n // Balinese\n { begin: 4352, end: 4607 },\n // Hangul Jamo\n { begin: 7680, end: 7935 },\n // Latin Extended Additional\n { begin: 7936, end: 8191 },\n // Greek Extended\n { begin: 8192, end: 8303 },\n // General Punctuation\n { begin: 8304, end: 8351 },\n // Superscripts And Subscripts\n { begin: 8352, end: 8399 },\n // Currency Symbol\n { begin: 8400, end: 8447 },\n // Combining Diacritical Marks For Symbols\n { begin: 8448, end: 8527 },\n // Letterlike Symbols\n { begin: 8528, end: 8591 },\n // Number Forms\n { begin: 8592, end: 8703 },\n // Arrows\n { begin: 8704, end: 8959 },\n // Mathematical Operators\n { begin: 8960, end: 9215 },\n // Miscellaneous Technical\n { begin: 9216, end: 9279 },\n // Control Pictures\n { begin: 9280, end: 9311 },\n // Optical Character Recognition\n { begin: 9312, end: 9471 },\n // Enclosed Alphanumerics\n { begin: 9472, end: 9599 },\n // Box Drawing\n { begin: 9600, end: 9631 },\n // Block Elements\n { begin: 9632, end: 9727 },\n // Geometric Shapes\n { begin: 9728, end: 9983 },\n // Miscellaneous Symbols\n { begin: 9984, end: 10175 },\n // Dingbats\n { begin: 12288, end: 12351 },\n // CJK Symbols And Punctuation\n { begin: 12352, end: 12447 },\n // Hiragana\n { begin: 12448, end: 12543 },\n // Katakana\n { begin: 12544, end: 12591 },\n // Bopomofo\n { begin: 12592, end: 12687 },\n // Hangul Compatibility Jamo\n { begin: 43072, end: 43135 },\n // Phags-pa\n { begin: 12800, end: 13055 },\n // Enclosed CJK Letters And Months\n { begin: 13056, end: 13311 },\n // CJK Compatibility\n { begin: 44032, end: 55215 },\n // Hangul Syllables\n { begin: 55296, end: 57343 },\n // Non-Plane 0 *\n { begin: 67840, end: 67871 },\n // Phoenicia\n { begin: 19968, end: 40959 },\n // CJK Unified Ideographs\n { begin: 57344, end: 63743 },\n // Private Use Area (plane 0)\n { begin: 12736, end: 12783 },\n // CJK Strokes\n { begin: 64256, end: 64335 },\n // Alphabetic Presentation Forms\n { begin: 64336, end: 65023 },\n // Arabic Presentation Forms-A\n { begin: 65056, end: 65071 },\n // Combining Half Marks\n { begin: 65040, end: 65055 },\n // Vertical Forms\n { begin: 65104, end: 65135 },\n // Small Form Variants\n { begin: 65136, end: 65279 },\n // Arabic Presentation Forms-B\n { begin: 65280, end: 65519 },\n // Halfwidth And Fullwidth Forms\n { begin: 65520, end: 65535 },\n // Specials\n { begin: 3840, end: 4095 },\n // Tibetan\n { begin: 1792, end: 1871 },\n // Syriac\n { begin: 1920, end: 1983 },\n // Thaana\n { begin: 3456, end: 3583 },\n // Sinhala\n { begin: 4096, end: 4255 },\n // Myanmar\n { begin: 4608, end: 4991 },\n // Ethiopic\n { begin: 5024, end: 5119 },\n // Cherokee\n { begin: 5120, end: 5759 },\n // Unified Canadian Aboriginal Syllabics\n { begin: 5760, end: 5791 },\n // Ogham\n { begin: 5792, end: 5887 },\n // Runic\n { begin: 6016, end: 6143 },\n // Khmer\n { begin: 6144, end: 6319 },\n // Mongolian\n { begin: 10240, end: 10495 },\n // Braille Patterns\n { begin: 40960, end: 42127 },\n // Yi Syllables\n { begin: 5888, end: 5919 },\n // Tagalog\n { begin: 66304, end: 66351 },\n // Old Italic\n { begin: 66352, end: 66383 },\n // Gothic\n { begin: 66560, end: 66639 },\n // Deseret\n { begin: 118784, end: 119039 },\n // Byzantine Musical Symbols\n { begin: 119808, end: 120831 },\n // Mathematical Alphanumeric Symbols\n { begin: 1044480, end: 1048573 },\n // Private Use (plane 15)\n { begin: 65024, end: 65039 },\n // Variation Selectors\n { begin: 917504, end: 917631 },\n // Tags\n { begin: 6400, end: 6479 },\n // Limbu\n { begin: 6480, end: 6527 },\n // Tai Le\n { begin: 6528, end: 6623 },\n // New Tai Lue\n { begin: 6656, end: 6687 },\n // Buginese\n { begin: 11264, end: 11359 },\n // Glagolitic\n { begin: 11568, end: 11647 },\n // Tifinagh\n { begin: 19904, end: 19967 },\n // Yijing Hexagram Symbols\n { begin: 43008, end: 43055 },\n // Syloti Nagri\n { begin: 65536, end: 65663 },\n // Linear B Syllabary\n { begin: 65856, end: 65935 },\n // Ancient Greek Numbers\n { begin: 66432, end: 66463 },\n // Ugaritic\n { begin: 66464, end: 66527 },\n // Old Persian\n { begin: 66640, end: 66687 },\n // Shavian\n { begin: 66688, end: 66735 },\n // Osmanya\n { begin: 67584, end: 67647 },\n // Cypriot Syllabary\n { begin: 68096, end: 68191 },\n // Kharoshthi\n { begin: 119552, end: 119647 },\n // Tai Xuan Jing Symbols\n { begin: 73728, end: 74751 },\n // Cuneiform\n { begin: 119648, end: 119679 },\n // Counting Rod Numerals\n { begin: 7040, end: 7103 },\n // Sundanese\n { begin: 7168, end: 7247 },\n // Lepcha\n { begin: 7248, end: 7295 },\n // Ol Chiki\n { begin: 43136, end: 43231 },\n // Saurashtra\n { begin: 43264, end: 43311 },\n // Kayah Li\n { begin: 43312, end: 43359 },\n // Rejang\n { begin: 43520, end: 43615 },\n // Cham\n { begin: 65936, end: 65999 },\n // Ancient Symbols\n { begin: 66e3, end: 66047 },\n // Phaistos Disc\n { begin: 66208, end: 66271 },\n // Carian\n { begin: 127024, end: 127135 }\n // Domino Tiles\n ];\n function getUnicodeRange(unicode) {\n for (let i = 0; i < unicodeRanges.length; i += 1) {\n const range = unicodeRanges[i];\n if (unicode >= range.begin && unicode < range.end) {\n return i;\n }\n }\n return -1;\n }\n function parseOS2Table(data, start) {\n const os2 = {};\n const p = new parse_default.Parser(data, start);\n os2.version = p.parseUShort();\n os2.xAvgCharWidth = p.parseShort();\n os2.usWeightClass = p.parseUShort();\n os2.usWidthClass = p.parseUShort();\n os2.fsType = p.parseUShort();\n os2.ySubscriptXSize = p.parseShort();\n os2.ySubscriptYSize = p.parseShort();\n os2.ySubscriptXOffset = p.parseShort();\n os2.ySubscriptYOffset = p.parseShort();\n os2.ySuperscriptXSize = p.parseShort();\n os2.ySuperscriptYSize = p.parseShort();\n os2.ySuperscriptXOffset = p.parseShort();\n os2.ySuperscriptYOffset = p.parseShort();\n os2.yStrikeoutSize = p.parseShort();\n os2.yStrikeoutPosition = p.parseShort();\n os2.sFamilyClass = p.parseShort();\n os2.panose = [];\n for (let i = 0; i < 10; i++) {\n os2.panose[i] = p.parseByte();\n }\n os2.ulUnicodeRange1 = p.parseULong();\n os2.ulUnicodeRange2 = p.parseULong();\n os2.ulUnicodeRange3 = p.parseULong();\n os2.ulUnicodeRange4 = p.parseULong();\n os2.achVendID = String.fromCharCode(p.parseByte(), p.parseByte(), p.parseByte(), p.parseByte());\n os2.fsSelection = p.parseUShort();\n os2.usFirstCharIndex = p.parseUShort();\n os2.usLastCharIndex = p.parseUShort();\n os2.sTypoAscender = p.parseShort();\n os2.sTypoDescender = p.parseShort();\n os2.sTypoLineGap = p.parseShort();\n os2.usWinAscent = p.parseUShort();\n os2.usWinDescent = p.parseUShort();\n if (os2.version >= 1) {\n os2.ulCodePageRange1 = p.parseULong();\n os2.ulCodePageRange2 = p.parseULong();\n }\n if (os2.version >= 2) {\n os2.sxHeight = p.parseShort();\n os2.sCapHeight = p.parseShort();\n os2.usDefaultChar = p.parseUShort();\n os2.usBreakChar = p.parseUShort();\n os2.usMaxContent = p.parseUShort();\n }\n return os2;\n }\n function makeOS2Table(options) {\n return new table_default.Table(\"OS/2\", [\n { name: \"version\", type: \"USHORT\", value: 3 },\n { name: \"xAvgCharWidth\", type: \"SHORT\", value: 0 },\n { name: \"usWeightClass\", type: \"USHORT\", value: 0 },\n { name: \"usWidthClass\", type: \"USHORT\", value: 0 },\n { name: \"fsType\", type: \"USHORT\", value: 0 },\n { name: \"ySubscriptXSize\", type: \"SHORT\", value: 650 },\n { name: \"ySubscriptYSize\", type: \"SHORT\", value: 699 },\n { name: \"ySubscriptXOffset\", type: \"SHORT\", value: 0 },\n { name: \"ySubscriptYOffset\", type: \"SHORT\", value: 140 },\n { name: \"ySuperscriptXSize\", type: \"SHORT\", value: 650 },\n { name: \"ySuperscriptYSize\", type: \"SHORT\", value: 699 },\n { name: \"ySuperscriptXOffset\", type: \"SHORT\", value: 0 },\n { name: \"ySuperscriptYOffset\", type: \"SHORT\", value: 479 },\n { name: \"yStrikeoutSize\", type: \"SHORT\", value: 49 },\n { name: \"yStrikeoutPosition\", type: \"SHORT\", value: 258 },\n { name: \"sFamilyClass\", type: \"SHORT\", value: 0 },\n { name: \"bFamilyType\", type: \"BYTE\", value: 0 },\n { name: \"bSerifStyle\", type: \"BYTE\", value: 0 },\n { name: \"bWeight\", type: \"BYTE\", value: 0 },\n { name: \"bProportion\", type: \"BYTE\", value: 0 },\n { name: \"bContrast\", type: \"BYTE\", value: 0 },\n { name: \"bStrokeVariation\", type: \"BYTE\", value: 0 },\n { name: \"bArmStyle\", type: \"BYTE\", value: 0 },\n { name: \"bLetterform\", type: \"BYTE\", value: 0 },\n { name: \"bMidline\", type: \"BYTE\", value: 0 },\n { name: \"bXHeight\", type: \"BYTE\", value: 0 },\n { name: \"ulUnicodeRange1\", type: \"ULONG\", value: 0 },\n { name: \"ulUnicodeRange2\", type: \"ULONG\", value: 0 },\n { name: \"ulUnicodeRange3\", type: \"ULONG\", value: 0 },\n { name: \"ulUnicodeRange4\", type: \"ULONG\", value: 0 },\n { name: \"achVendID\", type: \"CHARARRAY\", value: \"XXXX\" },\n { name: \"fsSelection\", type: \"USHORT\", value: 0 },\n { name: \"usFirstCharIndex\", type: \"USHORT\", value: 0 },\n { name: \"usLastCharIndex\", type: \"USHORT\", value: 0 },\n { name: \"sTypoAscender\", type: \"SHORT\", value: 0 },\n { name: \"sTypoDescender\", type: \"SHORT\", value: 0 },\n { name: \"sTypoLineGap\", type: \"SHORT\", value: 0 },\n { name: \"usWinAscent\", type: \"USHORT\", value: 0 },\n { name: \"usWinDescent\", type: \"USHORT\", value: 0 },\n { name: \"ulCodePageRange1\", type: \"ULONG\", value: 0 },\n { name: \"ulCodePageRange2\", type: \"ULONG\", value: 0 },\n { name: \"sxHeight\", type: \"SHORT\", value: 0 },\n { name: \"sCapHeight\", type: \"SHORT\", value: 0 },\n { name: \"usDefaultChar\", type: \"USHORT\", value: 0 },\n { name: \"usBreakChar\", type: \"USHORT\", value: 0 },\n { name: \"usMaxContext\", type: \"USHORT\", value: 0 }\n ], options);\n }\n var os2_default = { parse: parseOS2Table, make: makeOS2Table, unicodeRanges, getUnicodeRange };\n\n // src/tables/post.mjs\n function parsePostTable(data, start) {\n const post = {};\n const p = new parse_default.Parser(data, start);\n post.version = p.parseVersion();\n post.italicAngle = p.parseFixed();\n post.underlinePosition = p.parseShort();\n post.underlineThickness = p.parseShort();\n post.isFixedPitch = p.parseULong();\n post.minMemType42 = p.parseULong();\n post.maxMemType42 = p.parseULong();\n post.minMemType1 = p.parseULong();\n post.maxMemType1 = p.parseULong();\n switch (post.version) {\n case 1:\n post.names = standardNames.slice();\n break;\n case 2:\n post.numberOfGlyphs = p.parseUShort();\n post.glyphNameIndex = new Array(post.numberOfGlyphs);\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n post.glyphNameIndex[i] = p.parseUShort();\n }\n post.names = [];\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n if (post.glyphNameIndex[i] >= standardNames.length) {\n const nameLength = p.parseChar();\n post.names.push(p.parseString(nameLength));\n }\n }\n break;\n case 2.5:\n post.numberOfGlyphs = p.parseUShort();\n post.offset = new Array(post.numberOfGlyphs);\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n post.offset[i] = p.parseChar();\n }\n break;\n }\n return post;\n }\n function makePostTable(font) {\n const {\n italicAngle = Math.round((font.italicAngle || 0) * 65536),\n underlinePosition = 0,\n underlineThickness = 0,\n isFixedPitch = 0,\n minMemType42 = 0,\n maxMemType42 = 0,\n minMemType1 = 0,\n maxMemType1 = 0\n } = font.tables.post || {};\n return new table_default.Table(\"post\", [\n { name: \"version\", type: \"FIXED\", value: 196608 },\n { name: \"italicAngle\", type: \"FIXED\", value: italicAngle },\n { name: \"underlinePosition\", type: \"FWORD\", value: underlinePosition },\n { name: \"underlineThickness\", type: \"FWORD\", value: underlineThickness },\n { name: \"isFixedPitch\", type: \"ULONG\", value: isFixedPitch },\n { name: \"minMemType42\", type: \"ULONG\", value: minMemType42 },\n { name: \"maxMemType42\", type: \"ULONG\", value: maxMemType42 },\n { name: \"minMemType1\", type: \"ULONG\", value: minMemType1 },\n { name: \"maxMemType1\", type: \"ULONG\", value: maxMemType1 }\n ]);\n }\n var post_default = { parse: parsePostTable, make: makePostTable };\n\n // src/tables/gsub.mjs\n var subtableParsers = new Array(9);\n subtableParsers[1] = function parseLookup1() {\n const start = this.offset + this.relativeOffset;\n const substFormat = this.parseUShort();\n if (substFormat === 1) {\n return {\n substFormat: 1,\n coverage: this.parsePointer(Parser.coverage),\n deltaGlyphId: this.parseShort()\n };\n } else if (substFormat === 2) {\n return {\n substFormat: 2,\n coverage: this.parsePointer(Parser.coverage),\n substitute: this.parseOffset16List()\n };\n }\n check_default.assert(false, \"0x\" + start.toString(16) + \": lookup type 1 format must be 1 or 2.\");\n };\n subtableParsers[2] = function parseLookup2() {\n const substFormat = this.parseUShort();\n check_default.argument(substFormat === 1, \"GSUB Multiple Substitution Subtable identifier-format must be 1\");\n return {\n substFormat,\n coverage: this.parsePointer(Parser.coverage),\n sequences: this.parseListOfLists()\n };\n };\n subtableParsers[3] = function parseLookup3() {\n const substFormat = this.parseUShort();\n check_default.argument(substFormat === 1, \"GSUB Alternate Substitution Subtable identifier-format must be 1\");\n return {\n substFormat,\n coverage: this.parsePointer(Parser.coverage),\n alternateSets: this.parseListOfLists()\n };\n };\n subtableParsers[4] = function parseLookup4() {\n const substFormat = this.parseUShort();\n check_default.argument(substFormat === 1, \"GSUB ligature table identifier-format must be 1\");\n return {\n substFormat,\n coverage: this.parsePointer(Parser.coverage),\n ligatureSets: this.parseListOfLists(function() {\n return {\n ligGlyph: this.parseUShort(),\n components: this.parseUShortList(this.parseUShort() - 1)\n };\n })\n };\n };\n var lookupRecordDesc = {\n sequenceIndex: Parser.uShort,\n lookupListIndex: Parser.uShort\n };\n subtableParsers[5] = function parseLookup5() {\n const start = this.offset + this.relativeOffset;\n const substFormat = this.parseUShort();\n if (substFormat === 1) {\n return {\n substFormat,\n coverage: this.parsePointer(Parser.coverage),\n ruleSets: this.parseListOfLists(function() {\n const glyphCount = this.parseUShort();\n const substCount = this.parseUShort();\n return {\n input: this.parseUShortList(glyphCount - 1),\n lookupRecords: this.parseRecordList(substCount, lookupRecordDesc)\n };\n })\n };\n } else if (substFormat === 2) {\n return {\n substFormat,\n coverage: this.parsePointer(Parser.coverage),\n classDef: this.parsePointer(Parser.classDef),\n classSets: this.parseListOfLists(function() {\n const glyphCount = this.parseUShort();\n const substCount = this.parseUShort();\n return {\n classes: this.parseUShortList(glyphCount - 1),\n lookupRecords: this.parseRecordList(substCount, lookupRecordDesc)\n };\n })\n };\n } else if (substFormat === 3) {\n const glyphCount = this.parseUShort();\n const substCount = this.parseUShort();\n return {\n substFormat,\n coverages: this.parseList(glyphCount, Parser.pointer(Parser.coverage)),\n lookupRecords: this.parseRecordList(substCount, lookupRecordDesc)\n };\n }\n check_default.assert(false, \"0x\" + start.toString(16) + \": lookup type 5 format must be 1, 2 or 3.\");\n };\n subtableParsers[6] = function parseLookup6() {\n const start = this.offset + this.relativeOffset;\n const substFormat = this.parseUShort();\n if (substFormat === 1) {\n return {\n substFormat: 1,\n coverage: this.parsePointer(Parser.coverage),\n chainRuleSets: this.parseListOfLists(function() {\n return {\n backtrack: this.parseUShortList(),\n input: this.parseUShortList(this.parseShort() - 1),\n lookahead: this.parseUShortList(),\n lookupRecords: this.parseRecordList(lookupRecordDesc)\n };\n })\n };\n } else if (substFormat === 2) {\n return {\n substFormat: 2,\n coverage: this.parsePointer(Parser.coverage),\n backtrackClassDef: this.parsePointer(Parser.classDef),\n inputClassDef: this.parsePointer(Parser.classDef),\n lookaheadClassDef: this.parsePointer(Parser.classDef),\n chainClassSet: this.parseListOfLists(function() {\n return {\n backtrack: this.parseUShortList(),\n input: this.parseUShortList(this.parseShort() - 1),\n lookahead: this.parseUShortList(),\n lookupRecords: this.parseRecordList(lookupRecordDesc)\n };\n })\n };\n } else if (substFormat === 3) {\n return {\n substFormat: 3,\n backtrackCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n inputCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n lookaheadCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n lookupRecords: this.parseRecordList(lookupRecordDesc)\n };\n }\n check_default.assert(false, \"0x\" + start.toString(16) + \": lookup type 6 format must be 1, 2 or 3.\");\n };\n subtableParsers[7] = function parseLookup7() {\n const substFormat = this.parseUShort();\n check_default.argument(substFormat === 1, \"GSUB Extension Substitution subtable identifier-format must be 1\");\n const extensionLookupType = this.parseUShort();\n const extensionParser = new Parser(this.data, this.offset + this.parseULong());\n return {\n substFormat: 1,\n lookupType: extensionLookupType,\n extension: subtableParsers[extensionLookupType].call(extensionParser)\n };\n };\n subtableParsers[8] = function parseLookup8() {\n const substFormat = this.parseUShort();\n check_default.argument(substFormat === 1, \"GSUB Reverse Chaining Contextual Single Substitution Subtable identifier-format must be 1\");\n return {\n substFormat,\n coverage: this.parsePointer(Parser.coverage),\n backtrackCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n lookaheadCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n substitutes: this.parseUShortList()\n };\n };\n function parseGsubTable(data, start) {\n start = start || 0;\n const p = new Parser(data, start);\n const tableVersion = p.parseVersion(1);\n check_default.argument(tableVersion === 1 || tableVersion === 1.1, \"Unsupported GSUB table version.\");\n if (tableVersion === 1) {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers)\n };\n } else {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers),\n variations: p.parseFeatureVariationsList()\n };\n }\n }\n var subtableMakers = new Array(9);\n subtableMakers[1] = function makeLookup1(subtable) {\n if (subtable.substFormat === 1) {\n return new table_default.Table(\"substitutionTable\", [\n { name: \"substFormat\", type: \"USHORT\", value: 1 },\n { name: \"coverage\", type: \"TABLE\", value: new table_default.Coverage(subtable.coverage) },\n { name: \"deltaGlyphID\", type: \"SHORT\", value: subtable.deltaGlyphId }\n ]);\n } else if (subtable.substFormat === 2) {\n return new table_default.Table(\"substitutionTable\", [\n { name: \"substFormat\", type: \"USHORT\", value: 2 },\n { name: \"coverage\", type: \"TABLE\", value: new table_default.Coverage(subtable.coverage) }\n ].concat(table_default.ushortList(\"substitute\", subtable.substitute)));\n }\n check_default.fail(\"Lookup type 1 substFormat must be 1 or 2.\");\n };\n subtableMakers[2] = function makeLookup2(subtable) {\n check_default.assert(subtable.substFormat === 1, \"Lookup type 2 substFormat must be 1.\");\n return new table_default.Table(\"substitutionTable\", [\n { name: \"substFormat\", type: \"USHORT\", value: 1 },\n { name: \"coverage\", type: \"TABLE\", value: new table_default.Coverage(subtable.coverage) }\n ].concat(table_default.tableList(\"seqSet\", subtable.sequences, function(sequenceSet) {\n return new table_default.Table(\"sequenceSetTable\", table_default.ushortList(\"sequence\", sequenceSet));\n })));\n };\n subtableMakers[3] = function makeLookup3(subtable) {\n check_default.assert(subtable.substFormat === 1, \"Lookup type 3 substFormat must be 1.\");\n return new table_default.Table(\"substitutionTable\", [\n { name: \"substFormat\", type: \"USHORT\", value: 1 },\n { name: \"coverage\", type: \"TABLE\", value: new table_default.Coverage(subtable.coverage) }\n ].concat(table_default.tableList(\"altSet\", subtable.alternateSets, function(alternateSet) {\n return new table_default.Table(\"alternateSetTable\", table_default.ushortList(\"alternate\", alternateSet));\n })));\n };\n subtableMakers[4] = function makeLookup4(subtable) {\n check_default.assert(subtable.substFormat === 1, \"Lookup type 4 substFormat must be 1.\");\n return new table_default.Table(\"substitutionTable\", [\n { name: \"substFormat\", type: \"USHORT\", value: 1 },\n { name: \"coverage\", type: \"TABLE\", value: new table_default.Coverage(subtable.coverage) }\n ].concat(table_default.tableList(\"ligSet\", subtable.ligatureSets, function(ligatureSet) {\n return new table_default.Table(\"ligatureSetTable\", table_default.tableList(\"ligature\", ligatureSet, function(ligature) {\n return new table_default.Table(\n \"ligatureTable\",\n [{ name: \"ligGlyph\", type: \"USHORT\", value: ligature.ligGlyph }].concat(table_default.ushortList(\"component\", ligature.components, ligature.components.length + 1))\n );\n }));\n })));\n };\n subtableMakers[5] = function makeLookup5(subtable) {\n if (subtable.substFormat === 1) {\n return new table_default.Table(\"contextualSubstitutionTable\", [\n { name: \"substFormat\", type: \"USHORT\", value: subtable.substFormat },\n { name: \"coverage\", type: \"TABLE\", value: new table_default.Coverage(subtable.coverage) }\n ].concat(table_default.tableList(\"sequenceRuleSet\", subtable.ruleSets, function(sequenceRuleSet) {\n if (!sequenceRuleSet) {\n return new table_default.Table(\"NULL\", null);\n }\n return new table_default.Table(\"sequenceRuleSetTable\", table_default.tableList(\"sequenceRule\", sequenceRuleSet, function(sequenceRule) {\n let tableData = table_default.ushortList(\"seqLookup\", [], sequenceRule.lookupRecords.length).concat(table_default.ushortList(\"inputSequence\", sequenceRule.input, sequenceRule.input.length + 1));\n [tableData[0], tableData[1]] = [tableData[1], tableData[0]];\n for (let i = 0; i < sequenceRule.lookupRecords.length; i++) {\n const record = sequenceRule.lookupRecords[i];\n tableData = tableData.concat({ name: \"sequenceIndex\" + i, type: \"USHORT\", value: record.sequenceIndex }).concat({ name: \"lookupListIndex\" + i, type: \"USHORT\", value: record.lookupListIndex });\n }\n return new table_default.Table(\"sequenceRuleTable\", tableData);\n }));\n })));\n } else if (subtable.substFormat === 2) {\n return new table_default.Table(\"contextualSubstitutionTable\", [\n { name: \"substFormat\", type: \"USHORT\", value: subtable.substFormat },\n { name: \"coverage\", type: \"TABLE\", value: new table_default.Coverage(subtable.coverage) },\n { name: \"classDef\", type: \"TABLE\", value: new table_default.ClassDef(subtable.classDef) }\n ].concat(table_default.tableList(\"classSeqRuleSet\", subtable.classSets, function(classSeqRuleSet) {\n if (!classSeqRuleSet) {\n return new table_default.Table(\"NULL\", null);\n }\n return new table_default.Table(\"classSeqRuleSetTable\", table_default.tableList(\"classSeqRule\", classSeqRuleSet, function(classSeqRule) {\n let tableData = table_default.ushortList(\"classes\", classSeqRule.classes, classSeqRule.classes.length + 1).concat(table_default.ushortList(\"seqLookupCount\", [], classSeqRule.lookupRecords.length));\n for (let i = 0; i < classSeqRule.lookupRecords.length; i++) {\n const record = classSeqRule.lookupRecords[i];\n tableData = tableData.concat({ name: \"sequenceIndex\" + i, type: \"USHORT\", value: record.sequenceIndex }).concat({ name: \"lookupListIndex\" + i, type: \"USHORT\", value: record.lookupListIndex });\n }\n return new table_default.Table(\"classSeqRuleTable\", tableData);\n }));\n })));\n } else if (subtable.substFormat === 3) {\n let tableData = [\n { name: \"substFormat\", type: \"USHORT\", value: subtable.substFormat }\n ];\n tableData.push({ name: \"inputGlyphCount\", type: \"USHORT\", value: subtable.coverages.length });\n tableData.push({ name: \"substitutionCount\", type: \"USHORT\", value: subtable.lookupRecords.length });\n for (let i = 0; i < subtable.coverages.length; i++) {\n const coverage = subtable.coverages[i];\n tableData.push({ name: \"inputCoverage\" + i, type: \"TABLE\", value: new table_default.Coverage(coverage) });\n }\n for (let i = 0; i < subtable.lookupRecords.length; i++) {\n const record = subtable.lookupRecords[i];\n tableData = tableData.concat({ name: \"sequenceIndex\" + i, type: \"USHORT\", value: record.sequenceIndex }).concat({ name: \"lookupListIndex\" + i, type: \"USHORT\", value: record.lookupListIndex });\n }\n let returnTable = new table_default.Table(\"contextualSubstitutionTable\", tableData);\n return returnTable;\n }\n check_default.assert(false, \"lookup type 5 format must be 1, 2 or 3.\");\n };\n subtableMakers[6] = function makeLookup6(subtable) {\n if (subtable.substFormat === 1) {\n let returnTable = new table_default.Table(\"chainContextTable\", [\n { name: \"substFormat\", type: \"USHORT\", value: subtable.substFormat },\n { name: \"coverage\", type: \"TABLE\", value: new table_default.Coverage(subtable.coverage) }\n ].concat(table_default.tableList(\"chainRuleSet\", subtable.chainRuleSets, function(chainRuleSet) {\n return new table_default.Table(\"chainRuleSetTable\", table_default.tableList(\"chainRule\", chainRuleSet, function(chainRule) {\n let tableData = table_default.ushortList(\"backtrackGlyph\", chainRule.backtrack, chainRule.backtrack.length).concat(table_default.ushortList(\"inputGlyph\", chainRule.input, chainRule.input.length + 1)).concat(table_default.ushortList(\"lookaheadGlyph\", chainRule.lookahead, chainRule.lookahead.length)).concat(table_default.ushortList(\"substitution\", [], chainRule.lookupRecords.length));\n for (let i = 0; i < chainRule.lookupRecords.length; i++) {\n const record = chainRule.lookupRecords[i];\n tableData = tableData.concat({ name: \"sequenceIndex\" + i, type: \"USHORT\", value: record.sequenceIndex }).concat({ name: \"lookupListIndex\" + i, type: \"USHORT\", value: record.lookupListIndex });\n }\n return new table_default.Table(\"chainRuleTable\", tableData);\n }));\n })));\n return returnTable;\n } else if (subtable.substFormat === 2) {\n check_default.assert(false, \"lookup type 6 format 2 is not yet supported.\");\n } else if (subtable.substFormat === 3) {\n let tableData = [\n { name: \"substFormat\", type: \"USHORT\", value: subtable.substFormat }\n ];\n tableData.push({ name: \"backtrackGlyphCount\", type: \"USHORT\", value: subtable.backtrackCoverage.length });\n for (let i = 0; i < subtable.backtrackCoverage.length; i++) {\n const coverage = subtable.backtrackCoverage[i];\n tableData.push({ name: \"backtrackCoverage\" + i, type: \"TABLE\", value: new table_default.Coverage(coverage) });\n }\n tableData.push({ name: \"inputGlyphCount\", type: \"USHORT\", value: subtable.inputCoverage.length });\n for (let i = 0; i < subtable.inputCoverage.length; i++) {\n const coverage = subtable.inputCoverage[i];\n tableData.push({ name: \"inputCoverage\" + i, type: \"TABLE\", value: new table_default.Coverage(coverage) });\n }\n tableData.push({ name: \"lookaheadGlyphCount\", type: \"USHORT\", value: subtable.lookaheadCoverage.length });\n for (let i = 0; i < subtable.lookaheadCoverage.length; i++) {\n const coverage = subtable.lookaheadCoverage[i];\n tableData.push({ name: \"lookaheadCoverage\" + i, type: \"TABLE\", value: new table_default.Coverage(coverage) });\n }\n tableData.push({ name: \"substitutionCount\", type: \"USHORT\", value: subtable.lookupRecords.length });\n for (let i = 0; i < subtable.lookupRecords.length; i++) {\n const record = subtable.lookupRecords[i];\n tableData = tableData.concat({ name: \"sequenceIndex\" + i, type: \"USHORT\", value: record.sequenceIndex }).concat({ name: \"lookupListIndex\" + i, type: \"USHORT\", value: record.lookupListIndex });\n }\n let returnTable = new table_default.Table(\"chainContextTable\", tableData);\n return returnTable;\n }\n check_default.assert(false, \"lookup type 6 format must be 1, 2 or 3.\");\n };\n function makeGsubTable(gsub) {\n return new table_default.Table(\"GSUB\", [\n { name: \"version\", type: \"ULONG\", value: 65536 },\n { name: \"scripts\", type: \"TABLE\", value: new table_default.ScriptList(gsub.scripts) },\n { name: \"features\", type: \"TABLE\", value: new table_default.FeatureList(gsub.features) },\n { name: \"lookups\", type: \"TABLE\", value: new table_default.LookupList(gsub.lookups, subtableMakers) }\n ]);\n }\n var gsub_default = { parse: parseGsubTable, make: makeGsubTable };\n\n // src/tables/meta.mjs\n function parseMetaTable(data, start) {\n const p = new parse_default.Parser(data, start);\n const tableVersion = p.parseULong();\n check_default.argument(tableVersion === 1, \"Unsupported META table version.\");\n p.parseULong();\n p.parseULong();\n const numDataMaps = p.parseULong();\n const tags = {};\n for (let i = 0; i < numDataMaps; i++) {\n const tag = p.parseTag();\n const dataOffset = p.parseULong();\n const dataLength = p.parseULong();\n if (tag === \"appl\" || tag === \"bild\")\n continue;\n const text = decode.UTF8(data, start + dataOffset, dataLength);\n tags[tag] = text;\n }\n return tags;\n }\n function makeMetaTable(tags) {\n const numTags = Object.keys(tags).length;\n let stringPool = \"\";\n const stringPoolOffset = 16 + numTags * 12;\n const result = new table_default.Table(\"meta\", [\n { name: \"version\", type: \"ULONG\", value: 1 },\n { name: \"flags\", type: \"ULONG\", value: 0 },\n { name: \"offset\", type: \"ULONG\", value: stringPoolOffset },\n { name: \"numTags\", type: \"ULONG\", value: numTags }\n ]);\n for (let tag in tags) {\n const pos = stringPool.length;\n stringPool += tags[tag];\n result.fields.push({ name: \"tag \" + tag, type: \"TAG\", value: tag });\n result.fields.push({ name: \"offset \" + tag, type: \"ULONG\", value: stringPoolOffset + pos });\n result.fields.push({ name: \"length \" + tag, type: \"ULONG\", value: tags[tag].length });\n }\n result.fields.push({ name: \"stringPool\", type: \"CHARARRAY\", value: stringPool });\n return result;\n }\n var meta_default = { parse: parseMetaTable, make: makeMetaTable };\n\n // src/tables/colr.mjs\n function parseColrTable(data, start) {\n const p = new Parser(data, start);\n const version = p.parseUShort();\n if (version !== 0) {\n console.warn(\"Only COLRv0 is currently fully supported. A subset of color glyphs might be available in this font if provided in the v0 format.\");\n }\n const numBaseGlyphRecords = p.parseUShort();\n const baseGlyphRecordsOffset = p.parseOffset32();\n const layerRecordsOffset = p.parseOffset32();\n const numLayerRecords = p.parseUShort();\n p.relativeOffset = baseGlyphRecordsOffset;\n const baseGlyphRecords = p.parseRecordList(numBaseGlyphRecords, {\n glyphID: Parser.uShort,\n firstLayerIndex: Parser.uShort,\n numLayers: Parser.uShort\n });\n p.relativeOffset = layerRecordsOffset;\n const layerRecords = p.parseRecordList(numLayerRecords, {\n glyphID: Parser.uShort,\n paletteIndex: Parser.uShort\n });\n return {\n version,\n baseGlyphRecords,\n layerRecords\n };\n }\n function makeColrTable({ version = 0, baseGlyphRecords = [], layerRecords = [] }) {\n check_default.argument(version === 0, \"Only COLRv0 supported.\");\n const baseGlyphRecordsOffset = 14;\n const layerRecordsOffset = baseGlyphRecordsOffset + baseGlyphRecords.length * 6;\n return new table_default.Table(\"COLR\", [\n { name: \"version\", type: \"USHORT\", value: version },\n { name: \"numBaseGlyphRecords\", type: \"USHORT\", value: baseGlyphRecords.length },\n { name: \"baseGlyphRecordsOffset\", type: \"ULONG\", value: baseGlyphRecordsOffset },\n { name: \"layerRecordsOffset\", type: \"ULONG\", value: layerRecordsOffset },\n { name: \"numLayerRecords\", type: \"USHORT\", value: layerRecords.length },\n ...baseGlyphRecords.map((glyph, i) => [\n { name: \"glyphID_\" + i, type: \"USHORT\", value: glyph.glyphID },\n { name: \"firstLayerIndex_\" + i, type: \"USHORT\", value: glyph.firstLayerIndex },\n { name: \"numLayers_\" + i, type: \"USHORT\", value: glyph.numLayers }\n ]).flat(),\n ...layerRecords.map((layer, i) => [\n { name: \"LayerGlyphID_\" + i, type: \"USHORT\", value: layer.glyphID },\n { name: \"paletteIndex_\" + i, type: \"USHORT\", value: layer.paletteIndex }\n ]).flat()\n ]);\n }\n var colr_default = { parse: parseColrTable, make: makeColrTable };\n\n // src/tables/fvar.mjs\n function makeFvarAxis(n, axis) {\n return [\n { name: \"tag_\" + n, type: \"TAG\", value: axis.tag },\n { name: \"minValue_\" + n, type: \"FIXED\", value: axis.minValue << 16 },\n { name: \"defaultValue_\" + n, type: \"FIXED\", value: axis.defaultValue << 16 },\n { name: \"maxValue_\" + n, type: \"FIXED\", value: axis.maxValue << 16 },\n { name: \"flags_\" + n, type: \"USHORT\", value: 0 },\n { name: \"nameID_\" + n, type: \"USHORT\", value: axis.axisNameID }\n ];\n }\n function parseFvarAxis(data, start, names) {\n const axis = {};\n const p = new parse_default.Parser(data, start);\n axis.tag = p.parseTag();\n axis.minValue = p.parseFixed();\n axis.defaultValue = p.parseFixed();\n axis.maxValue = p.parseFixed();\n p.skip(\"uShort\", 1);\n const axisNameID = p.parseUShort();\n axis.axisNameID = axisNameID;\n axis.name = getNameByID(names, axisNameID);\n return axis;\n }\n function makeFvarInstance(n, inst, axes, optionalFields = {}) {\n const fields = [\n { name: \"nameID_\" + n, type: \"USHORT\", value: inst.subfamilyNameID },\n { name: \"flags_\" + n, type: \"USHORT\", value: 0 }\n ];\n for (let i = 0; i < axes.length; ++i) {\n const axisTag = axes[i].tag;\n fields.push({\n name: \"axis_\" + n + \" \" + axisTag,\n type: \"FIXED\",\n value: inst.coordinates[axisTag] << 16\n });\n }\n if (optionalFields && optionalFields.postScriptNameID) {\n fields.push({\n name: \"postScriptNameID_\",\n type: \"USHORT\",\n value: inst.postScriptNameID !== void 0 ? inst.postScriptNameID : 65535\n });\n }\n return fields;\n }\n function parseFvarInstance(data, start, axes, names, instanceSize) {\n const inst = {};\n const p = new parse_default.Parser(data, start);\n const subfamilyNameID = p.parseUShort();\n inst.subfamilyNameID = subfamilyNameID;\n inst.name = getNameByID(names, subfamilyNameID, [2, 17]);\n p.skip(\"uShort\", 1);\n inst.coordinates = {};\n for (let i = 0; i < axes.length; ++i) {\n inst.coordinates[axes[i].tag] = p.parseFixed();\n }\n if (p.relativeOffset === instanceSize) {\n inst.postScriptNameID = void 0;\n inst.postScriptName = void 0;\n return inst;\n }\n const postScriptNameID = p.parseUShort();\n inst.postScriptNameID = postScriptNameID == 65535 ? void 0 : postScriptNameID;\n inst.postScriptName = inst.postScriptNameID !== void 0 ? getNameByID(names, postScriptNameID, [6]) : \"\";\n return inst;\n }\n function makeFvarTable(fvar, names) {\n const result = new table_default.Table(\"fvar\", [\n { name: \"version\", type: \"ULONG\", value: 65536 },\n { name: \"offsetToData\", type: \"USHORT\", value: 0 },\n { name: \"countSizePairs\", type: \"USHORT\", value: 2 },\n { name: \"axisCount\", type: \"USHORT\", value: fvar.axes.length },\n { name: \"axisSize\", type: \"USHORT\", value: 20 },\n { name: \"instanceCount\", type: \"USHORT\", value: fvar.instances.length },\n { name: \"instanceSize\", type: \"USHORT\", value: 4 + fvar.axes.length * 4 }\n ]);\n result.offsetToData = result.sizeOf();\n for (let i = 0; i < fvar.axes.length; i++) {\n result.fields = result.fields.concat(makeFvarAxis(i, fvar.axes[i], names));\n }\n const optionalFields = {};\n for (let j = 0; j < fvar.instances.length; j++) {\n if (fvar.instances[j].postScriptNameID !== void 0) {\n result.instanceSize += 2;\n optionalFields.postScriptNameID = true;\n break;\n }\n }\n for (let j = 0; j < fvar.instances.length; j++) {\n result.fields = result.fields.concat(makeFvarInstance(\n j,\n fvar.instances[j],\n fvar.axes,\n optionalFields\n ));\n }\n return result;\n }\n function parseFvarTable(data, start, names) {\n const p = new parse_default.Parser(data, start);\n const tableVersion = p.parseULong();\n check_default.argument(tableVersion === 65536, \"Unsupported fvar table version.\");\n const offsetToData = p.parseOffset16();\n p.skip(\"uShort\", 1);\n const axisCount = p.parseUShort();\n const axisSize = p.parseUShort();\n const instanceCount = p.parseUShort();\n const instanceSize = p.parseUShort();\n const axes = [];\n for (let i = 0; i < axisCount; i++) {\n axes.push(parseFvarAxis(data, start + offsetToData + i * axisSize, names));\n }\n const instances = [];\n const instanceStart = start + offsetToData + axisCount * axisSize;\n for (let j = 0; j < instanceCount; j++) {\n instances.push(parseFvarInstance(data, instanceStart + j * instanceSize, axes, names, instanceSize));\n }\n return { axes, instances };\n }\n var fvar_default = { make: makeFvarTable, parse: parseFvarTable };\n\n // src/tables/stat.mjs\n var axisRecordStruct = {\n tag: Parser.tag,\n nameID: Parser.uShort,\n ordering: Parser.uShort\n };\n var axisValueParsers = new Array(5);\n axisValueParsers[1] = function axisValueParser1() {\n return {\n axisIndex: this.parseUShort(),\n flags: this.parseUShort(),\n valueNameID: this.parseUShort(),\n value: this.parseFixed()\n };\n };\n axisValueParsers[2] = function axisValueParser2() {\n return {\n axisIndex: this.parseUShort(),\n flags: this.parseUShort(),\n valueNameID: this.parseUShort(),\n nominalValue: this.parseFixed(),\n rangeMinValue: this.parseFixed(),\n rangeMaxValue: this.parseFixed()\n };\n };\n axisValueParsers[3] = function axisValueParser3() {\n return {\n axisIndex: this.parseUShort(),\n flags: this.parseUShort(),\n valueNameID: this.parseUShort(),\n value: this.parseFixed(),\n linkedValue: this.parseFixed()\n };\n };\n axisValueParsers[4] = function axisValueParser4() {\n const axisCount = this.parseUShort();\n return {\n flags: this.parseUShort(),\n valueNameID: this.parseUShort(),\n axisValues: this.parseList(axisCount, function() {\n return {\n axisIndex: this.parseUShort(),\n value: this.parseFixed()\n };\n })\n };\n };\n function parseSTATAxisValue() {\n const valueTableFormat = this.parseUShort();\n const axisValueParser = axisValueParsers[valueTableFormat];\n const formatStub = {\n format: valueTableFormat\n };\n if (axisValueParser === void 0) {\n console.warn(`Unknown axis value table format ${valueTableFormat}`);\n return formatStub;\n }\n return Object.assign(formatStub, this.parseStruct(axisValueParser.bind(this)));\n }\n function parseSTATTable(data, start, fvar) {\n if (!start) {\n start = 0;\n }\n const p = new parse_default.Parser(data, start);\n const tableVersionMajor = p.parseUShort();\n const tableVersionMinor = p.parseUShort();\n if (tableVersionMajor !== 1) {\n console.warn(`Unsupported STAT table version ${tableVersionMajor}.${tableVersionMinor}`);\n }\n const version = [\n tableVersionMajor,\n tableVersionMinor\n ];\n const designAxisSize = p.parseUShort();\n const designAxisCount = p.parseUShort();\n const designAxesOffset = p.parseOffset32();\n const axisValueCount = p.parseUShort();\n const offsetToAxisValueOffsets = p.parseOffset32();\n const elidedFallbackNameID = tableVersionMajor > 1 || tableVersionMinor > 0 ? p.parseUShort() : void 0;\n if (fvar !== void 0) {\n check_default.argument(designAxisCount >= fvar.axes.length, \"STAT axis count must be greater than or equal to fvar axis count\");\n }\n if (axisValueCount > 0) {\n check_default.argument(designAxisCount >= 0, \"STAT axis count must be greater than 0 if STAT axis value count is greater than 0\");\n }\n const axes = [];\n for (let i = 0; i < designAxisCount; i++) {\n p.offset = start + designAxesOffset;\n p.relativeOffset = i * designAxisSize;\n axes.push(p.parseStruct(axisRecordStruct));\n }\n p.offset = start;\n p.relativeOffset = offsetToAxisValueOffsets;\n const valueOffsets = p.parseUShortList(axisValueCount);\n const values = [];\n for (let i = 0; i < axisValueCount; i++) {\n p.offset = start + offsetToAxisValueOffsets;\n p.relativeOffset = valueOffsets[i];\n values.push(parseSTATAxisValue.apply(p));\n }\n return {\n version,\n axes,\n values,\n elidedFallbackNameID\n };\n }\n var axisValueMakers = new Array(5);\n axisValueMakers[1] = function axisValueMaker1(n, table) {\n return [\n { name: `format${n}`, type: \"USHORT\", value: 1 },\n { name: `axisIndex${n}`, type: \"USHORT\", value: table.axisIndex },\n { name: `flags${n}`, type: \"USHORT\", value: table.flags },\n { name: `valueNameID${n}`, type: \"USHORT\", value: table.valueNameID },\n { name: `value${n}`, type: \"FLOAT\", value: table.value }\n ];\n };\n axisValueMakers[2] = function axisValueMaker2(n, table) {\n return [\n { name: `format${n}`, type: \"USHORT\", value: 2 },\n { name: `axisIndex${n}`, type: \"USHORT\", value: table.axisIndex },\n { name: `flags${n}`, type: \"USHORT\", value: table.flags },\n { name: `valueNameID${n}`, type: \"USHORT\", value: table.valueNameID },\n { name: `nominalValue${n}`, type: \"FLOAT\", value: table.nominalValue },\n { name: `rangeMinValue${n}`, type: \"FLOAT\", value: table.rangeMinValue },\n { name: `rangeMaxValue${n}`, type: \"FLOAT\", value: table.rangeMaxValue }\n ];\n };\n axisValueMakers[3] = function axisValueMaker3(n, table) {\n return [\n { name: `format${n}`, type: \"USHORT\", value: 3 },\n { name: `axisIndex${n}`, type: \"USHORT\", value: table.axisIndex },\n { name: `flags${n}`, type: \"USHORT\", value: table.flags },\n { name: `valueNameID${n}`, type: \"USHORT\", value: table.valueNameID },\n { name: `value${n}`, type: \"FLOAT\", value: table.value },\n { name: `linkedValue${n}`, type: \"FLOAT\", value: table.linkedValue }\n ];\n };\n axisValueMakers[4] = function axisValueMaker4(n, table) {\n let returnFields = [\n { name: `format${n}`, type: \"USHORT\", value: 4 },\n { name: `axisCount${n}`, type: \"USHORT\", value: table.axisValues.length },\n { name: `flags${n}`, type: \"USHORT\", value: table.flags },\n { name: `valueNameID${n}`, type: \"USHORT\", value: table.valueNameID }\n ];\n for (let i = 0; i < table.axisValues.length; i++) {\n returnFields = returnFields.concat([\n { name: `format${n}axisIndex${i}`, type: \"USHORT\", value: table.axisValues[i].axisIndex },\n { name: `format${n}value${i}`, type: \"FLOAT\", value: table.axisValues[i].value }\n ]);\n }\n return returnFields;\n };\n function makeSTATAxisRecord(n, axis) {\n return new table_default.Record(\"axisRecord_\" + n, [\n { name: \"axisTag_\" + n, type: \"TAG\", value: axis.tag },\n { name: \"axisNameID_\" + n, type: \"USHORT\", value: axis.nameID },\n { name: \"axisOrdering_\" + n, type: \"USHORT\", value: axis.ordering }\n ]);\n }\n function makeSTATValueTable(n, tableData) {\n const valueTableFormat = tableData.format;\n const axisValueMaker = axisValueMakers[valueTableFormat];\n check_default.argument(axisValueMaker !== void 0, `Unknown axis value table format ${valueTableFormat}`);\n const fields = axisValueMaker(n, tableData);\n return new table_default.Table(\"axisValueTable_\" + n, fields);\n }\n function makeSTATTable(STAT) {\n const result = new table_default.Table(\"STAT\", [\n { name: \"majorVersion\", type: \"USHORT\", value: 1 },\n { name: \"minorVersion\", type: \"USHORT\", value: 2 },\n { name: \"designAxisSize\", type: \"USHORT\", value: 8 },\n { name: \"designAxisCount\", type: \"USHORT\", value: STAT.axes.length },\n { name: \"designAxesOffset\", type: \"ULONG\", value: 0 },\n { name: \"axisValueCount\", type: \"USHORT\", value: STAT.values.length },\n { name: \"offsetToAxisValueOffsets\", type: \"ULONG\", value: 0 },\n { name: \"elidedFallbackNameID\", type: \"USHORT\", value: STAT.elidedFallbackNameID }\n ]);\n result.designAxesOffset = result.offsetToAxisValueOffsets = result.sizeOf();\n for (let i = 0; i < STAT.axes.length; i++) {\n const axisRecord = makeSTATAxisRecord(i, STAT.axes[i]);\n result.offsetToAxisValueOffsets += axisRecord.sizeOf();\n result.fields = result.fields.concat(axisRecord.fields);\n }\n const axisValueOffsets = [];\n let axisValueTables = [];\n let axisValueTableOffset = STAT.values.length * 2;\n for (let j = 0; j < STAT.values.length; j++) {\n const axisValueTable = makeSTATValueTable(j, STAT.values[j]);\n axisValueOffsets.push({\n name: \"offset_\" + j,\n type: \"USHORT\",\n value: axisValueTableOffset\n });\n axisValueTableOffset += axisValueTable.sizeOf();\n axisValueTables = axisValueTables.concat(axisValueTable.fields);\n }\n result.fields = result.fields.concat(axisValueOffsets);\n result.fields = result.fields.concat(axisValueTables);\n return result;\n }\n var stat_default = { make: makeSTATTable, parse: parseSTATTable };\n\n // src/tables/avar.mjs\n function makeAvarAxisValueMap(n, axisValueMap) {\n return new table_default.Record(\"axisValueMap_\" + n, [\n { name: \"fromCoordinate_\" + n, type: \"F2DOT14\", value: axisValueMap.fromCoordinate },\n { name: \"toCoordinate_\" + n, type: \"F2DOT14\", value: axisValueMap.toCoordinate }\n ]);\n }\n function makeAvarSegmentMap(n, axis) {\n const returnTable = new table_default.Record(\"segmentMap_\" + n, [\n { name: \"positionMapCount_\" + n, type: \"USHORT\", value: axis.axisValueMaps.length }\n ]);\n let axisValueMaps = [];\n for (let i = 0; i < axis.axisValueMaps.length; i++) {\n const valueMap = makeAvarAxisValueMap(`${n}_${i}`, axis.axisValueMaps[i]);\n axisValueMaps = axisValueMaps.concat(valueMap.fields);\n }\n returnTable.fields = returnTable.fields.concat(axisValueMaps);\n return returnTable;\n }\n function makeAvarTable(avar, fvar) {\n check_default.argument(avar.axisSegmentMaps.length === fvar.axes.length, \"avar axis count must correspond to fvar axis count\");\n const result = new table_default.Table(\"avar\", [\n { name: \"majorVersion\", type: \"USHORT\", value: 1 },\n { name: \"minorVersion\", type: \"USHORT\", value: 0 },\n { name: \"reserved\", type: \"USHORT\", value: 0 },\n { name: \"axisCount\", type: \"USHORT\", value: avar.axisSegmentMaps.length }\n ]);\n for (let i = 0; i < avar.axisSegmentMaps.length; i++) {\n const axisRecord = makeAvarSegmentMap(i, avar.axisSegmentMaps[i]);\n result.fields = result.fields.concat(axisRecord.fields);\n }\n return result;\n }\n function parseAvarTable(data, start, fvar) {\n if (!start) {\n start = 0;\n }\n const p = new Parser(data, start);\n const tableVersionMajor = p.parseUShort();\n const tableVersionMinor = p.parseUShort();\n if (tableVersionMajor !== 1) {\n console.warn(`Unsupported avar table version ${tableVersionMajor}.${tableVersionMinor}`);\n }\n p.skip(\"uShort\", 1);\n const axisCount = p.parseUShort();\n check_default.argument(axisCount === fvar.axes.length, \"avar axis count must correspond to fvar axis count\");\n const axisSegmentMaps = [];\n for (let i = 0; i < axisCount; i++) {\n const axisValueMaps = [];\n const positionMapCount = p.parseUShort();\n for (let j = 0; j < positionMapCount; j++) {\n const fromCoordinate = p.parseF2Dot14();\n const toCoordinate = p.parseF2Dot14();\n axisValueMaps.push({\n fromCoordinate,\n toCoordinate\n });\n }\n axisSegmentMaps.push({\n axisValueMaps\n });\n }\n return {\n version: [tableVersionMajor, tableVersionMinor],\n axisSegmentMaps\n };\n }\n var avar_default = { make: makeAvarTable, parse: parseAvarTable };\n\n // src/tables/cvar.mjs\n function parseCvarTable(data, start, fvar, cvt) {\n const p = new parse_default.Parser(data, start);\n const cvtVariations = p.parseTupleVariationStore(\n p.relativeOffset,\n fvar.axes.length,\n \"cvar\",\n cvt\n );\n const tableVersionMajor = p.parseUShort();\n const tableVersionMinor = p.parseUShort();\n if (tableVersionMajor !== 1) {\n console.warn(`Unsupported cvar table version ${tableVersionMajor}.${tableVersionMinor}`);\n }\n return {\n version: [tableVersionMajor, tableVersionMinor],\n ...cvtVariations\n };\n }\n function makeCvarTable() {\n console.warn(\"Writing of cvar tables is not yet supported.\");\n }\n var cvar_default = { make: makeCvarTable, parse: parseCvarTable };\n\n // src/tables/gvar.mjs\n function parseGvarTable(data, start, fvar, glyphs) {\n const p = new parse_default.Parser(data, start);\n const tableVersionMajor = p.parseUShort();\n const tableVersionMinor = p.parseUShort();\n if (tableVersionMajor !== 1) {\n console.warn(`Unsupported gvar table version ${tableVersionMajor}.${tableVersionMinor}`);\n }\n const axisCount = p.parseUShort();\n if (axisCount !== fvar.axes.length) {\n console.warn(`axisCount ${axisCount} in gvar table does not match the number of axes ${fvar.axes.length} in the fvar table!`);\n }\n const sharedTupleCount = p.parseUShort();\n const sharedTuples = p.parsePointer32(function() {\n return this.parseTupleRecords(sharedTupleCount, axisCount);\n });\n const glyphVariations = p.parseTupleVariationStoreList(axisCount, \"gvar\", glyphs);\n return {\n version: [tableVersionMajor, tableVersionMinor],\n sharedTuples,\n glyphVariations\n };\n }\n function makeGvarTable() {\n console.warn(\"Writing of gvar tables is not yet supported.\");\n }\n var gvar_default = { make: makeGvarTable, parse: parseGvarTable };\n\n // src/tables/gasp.mjs\n function parseGaspTable(data, start) {\n const gasp = {};\n const p = new parse_default.Parser(data, start);\n gasp.version = p.parseUShort();\n check_default.argument(gasp.version <= 1, \"Unsupported gasp table version.\");\n gasp.numRanges = p.parseUShort();\n gasp.gaspRanges = [];\n for (let i = 0; i < gasp.numRanges; i++) {\n gasp.gaspRanges[i] = {\n rangeMaxPPEM: p.parseUShort(),\n rangeGaspBehavior: p.parseUShort()\n };\n }\n return gasp;\n }\n function makeGaspTable(gasp) {\n const result = new table_default.Table(\"gasp\", [\n { name: \"version\", type: \"USHORT\", value: 1 },\n { name: \"numRanges\", type: \"USHORT\", value: gasp.numRanges }\n ]);\n for (let i in gasp.gaspRanges) {\n result.fields.push({ name: \"rangeMaxPPEM\", type: \"USHORT\", value: gasp.gaspRanges[i].rangeMaxPPEM });\n result.fields.push({ name: \"rangeGaspBehavior\", type: \"USHORT\", value: gasp.gaspRanges[i].rangeGaspBehavior });\n }\n return result;\n }\n var gasp_default = { parse: parseGaspTable, make: makeGaspTable };\n\n // src/tables/svg.mjs\n function parseSvgTable(data, offset) {\n const svgTable = /* @__PURE__ */ new Map();\n const buf = data.buffer;\n const p = new Parser(data, offset);\n const version = p.parseUShort();\n if (version !== 0) return svgTable;\n p.relativeOffset = p.parseOffset32();\n const svgDocumentListOffset = data.byteOffset + offset + p.relativeOffset;\n const numEntries = p.parseUShort();\n const svgDocMap = /* @__PURE__ */ new Map();\n for (let i = 0; i < numEntries; i++) {\n const startGlyphID = p.parseUShort();\n const endGlyphID = p.parseUShort();\n const svgDocOffset = svgDocumentListOffset + p.parseOffset32();\n const svgDocLength = p.parseULong();\n let svgDoc = svgDocMap.get(svgDocOffset);\n if (svgDoc === void 0) {\n svgDoc = new Uint8Array(buf, svgDocOffset, svgDocLength);\n svgDocMap.set(svgDocOffset, svgDoc);\n }\n for (let i2 = startGlyphID; i2 <= endGlyphID; i2++) {\n svgTable.set(i2, svgDoc);\n }\n }\n return svgTable;\n }\n function makeSvgTable(svgTable) {\n const glyphIds = Array.from(svgTable.keys()).sort();\n const documentRecords = [];\n const documentBuffers = [];\n const documentOffsets = /* @__PURE__ */ new Map();\n let nextSvgDocOffset = 0;\n let record = { endGlyphID: null };\n for (let i = 0, l = glyphIds.length; i < l; i++) {\n const glyphId = glyphIds[i];\n const svgDoc = svgTable.get(glyphId);\n let svgDocOffset = documentOffsets.get(svgDoc);\n if (svgDocOffset === void 0) {\n svgDocOffset = nextSvgDocOffset;\n documentBuffers.push(svgDoc);\n documentOffsets.set(svgDoc, svgDocOffset);\n nextSvgDocOffset += svgDoc.byteLength;\n }\n if (glyphId - 1 === record.endGlyphID && svgDocOffset === record.svgDocOffset) {\n record.endGlyphID = glyphId;\n } else {\n record = {\n startGlyphID: glyphId,\n endGlyphID: glyphId,\n svgDocOffset,\n svgDocLength: svgDoc.byteLength\n };\n documentRecords.push(record);\n }\n }\n const numEntries = documentRecords.length;\n const numDocuments = documentBuffers.length;\n const documentsOffset = 2 + numEntries * (2 + 2 + 4 + 4);\n const fields = new Array(3 + 1 + numEntries * 4 + numDocuments);\n let fieldIndex = 0;\n fields[fieldIndex++] = { name: \"version\", type: \"USHORT\", value: 0 };\n fields[fieldIndex++] = { name: \"svgDocumentListOffset\", type: \"ULONG\", value: 2 + 4 + 4 };\n fields[fieldIndex++] = { name: \"reserved\", type: \"ULONG\", value: 0 };\n fields[fieldIndex++] = { name: \"numEntries\", type: \"USHORT\", value: numEntries };\n for (let i = 0; i < numEntries; i++) {\n const namePrefix = \"documentRecord_\" + i;\n const { startGlyphID, endGlyphID, svgDocOffset, svgDocLength } = documentRecords[i];\n fields[fieldIndex++] = { name: namePrefix + \"_startGlyphID\", type: \"USHORT\", value: startGlyphID };\n fields[fieldIndex++] = { name: namePrefix + \"_endGlyphID\", type: \"USHORT\", value: endGlyphID };\n fields[fieldIndex++] = { name: namePrefix + \"_svgDocOffset\", type: \"ULONG\", value: documentsOffset + svgDocOffset };\n fields[fieldIndex++] = { name: namePrefix + \"_svgDocLength\", type: \"ULONG\", value: svgDocLength };\n }\n for (let i = 0; i < numDocuments; i++) {\n fields[fieldIndex++] = { name: \"svgDoc_\" + i, type: \"LITERAL\", value: documentBuffers[i] };\n }\n return new table_default.Table(\"SVG \", fields);\n }\n var svg_default = {\n make: makeSvgTable,\n parse: parseSvgTable\n };\n\n // src/tables/sfnt.mjs\n function log2(v) {\n return Math.log(v) / Math.log(2) | 0;\n }\n function computeCheckSum(bytes) {\n while (bytes.length % 4 !== 0) {\n bytes.push(0);\n }\n let sum = 0;\n for (let i = 0; i < bytes.length; i += 4) {\n sum += (bytes[i] << 24) + (bytes[i + 1] << 16) + (bytes[i + 2] << 8) + bytes[i + 3];\n }\n sum %= Math.pow(2, 32);\n return sum;\n }\n function makeTableRecord(tag, checkSum, offset, length) {\n return new table_default.Record(\"Table Record\", [\n { name: \"tag\", type: \"TAG\", value: tag !== void 0 ? tag : \"\" },\n { name: \"checkSum\", type: \"ULONG\", value: checkSum !== void 0 ? checkSum : 0 },\n { name: \"offset\", type: \"ULONG\", value: offset !== void 0 ? offset : 0 },\n { name: \"length\", type: \"ULONG\", value: length !== void 0 ? length : 0 }\n ]);\n }\n function makeSfntTable(tables) {\n const sfnt = new table_default.Table(\"sfnt\", [\n { name: \"version\", type: \"TAG\", value: \"OTTO\" },\n { name: \"numTables\", type: \"USHORT\", value: 0 },\n { name: \"searchRange\", type: \"USHORT\", value: 0 },\n { name: \"entrySelector\", type: \"USHORT\", value: 0 },\n { name: \"rangeShift\", type: \"USHORT\", value: 0 }\n ]);\n sfnt.tables = tables;\n sfnt.numTables = tables.length;\n const highestPowerOf2 = Math.pow(2, log2(sfnt.numTables));\n sfnt.searchRange = 16 * highestPowerOf2;\n sfnt.entrySelector = log2(highestPowerOf2);\n sfnt.rangeShift = sfnt.numTables * 16 - sfnt.searchRange;\n const recordFields = [];\n const tableFields = [];\n let offset = sfnt.sizeOf() + makeTableRecord().sizeOf() * sfnt.numTables;\n while (offset % 4 !== 0) {\n offset += 1;\n tableFields.push({ name: \"padding\", type: \"BYTE\", value: 0 });\n }\n for (let i = 0; i < tables.length; i += 1) {\n const t = tables[i];\n check_default.argument(t.tableName.length === 4, \"Table name\" + t.tableName + \" is invalid.\");\n const tableLength = t.sizeOf();\n const tableRecord = makeTableRecord(t.tableName, computeCheckSum(t.encode()), offset, tableLength);\n recordFields.push({ name: tableRecord.tag + \" Table Record\", type: \"RECORD\", value: tableRecord });\n tableFields.push({ name: t.tableName + \" table\", type: \"RECORD\", value: t });\n offset += tableLength;\n check_default.argument(!isNaN(offset), \"Something went wrong calculating the offset.\");\n while (offset % 4 !== 0) {\n offset += 1;\n tableFields.push({ name: \"padding\", type: \"BYTE\", value: 0 });\n }\n }\n recordFields.sort(function(r1, r2) {\n if (r1.value.tag > r2.value.tag) {\n return 1;\n } else {\n return -1;\n }\n });\n sfnt.fields = sfnt.fields.concat(recordFields);\n sfnt.fields = sfnt.fields.concat(tableFields);\n return sfnt;\n }\n function metricsForChar(font, chars, notFoundMetrics) {\n for (let i = 0; i < chars.length; i += 1) {\n const glyphIndex = font.charToGlyphIndex(chars[i]);\n if (glyphIndex > 0) {\n const glyph = font.glyphs.get(glyphIndex);\n return glyph.getMetrics();\n }\n }\n return notFoundMetrics;\n }\n function average(vs) {\n let sum = 0;\n for (let i = 0; i < vs.length; i += 1) {\n sum += vs[i];\n }\n return sum / vs.length;\n }\n function fontToSfntTable(font) {\n const xMins = [];\n const yMins = [];\n const xMaxs = [];\n const yMaxs = [];\n const advanceWidths = [];\n const leftSideBearings = [];\n const rightSideBearings = [];\n let firstCharIndex;\n let lastCharIndex = 0;\n let ulUnicodeRange1 = 0;\n let ulUnicodeRange2 = 0;\n let ulUnicodeRange3 = 0;\n let ulUnicodeRange4 = 0;\n for (let i = 0; i < font.glyphs.length; i += 1) {\n const glyph = font.glyphs.get(i);\n const unicode = glyph.unicode | 0;\n if (isNaN(glyph.advanceWidth)) {\n throw new Error(\"Glyph \" + glyph.name + \" (\" + i + \"): advanceWidth is not a number.\");\n }\n if (firstCharIndex > unicode || firstCharIndex === void 0) {\n if (unicode > 0) {\n firstCharIndex = unicode;\n }\n }\n if (lastCharIndex < unicode) {\n lastCharIndex = unicode;\n }\n const position = os2_default.getUnicodeRange(unicode);\n if (position < 32) {\n ulUnicodeRange1 |= 1 << position;\n } else if (position < 64) {\n ulUnicodeRange2 |= 1 << position - 32;\n } else if (position < 96) {\n ulUnicodeRange3 |= 1 << position - 64;\n } else if (position < 123) {\n ulUnicodeRange4 |= 1 << position - 96;\n } else {\n throw new Error(\"Unicode ranges bits > 123 are reserved for internal usage\");\n }\n if (glyph.name === \".notdef\") continue;\n const metrics = glyph.getMetrics();\n xMins.push(metrics.xMin);\n yMins.push(metrics.yMin);\n xMaxs.push(metrics.xMax);\n yMaxs.push(metrics.yMax);\n leftSideBearings.push(metrics.leftSideBearing);\n rightSideBearings.push(metrics.rightSideBearing);\n advanceWidths.push(glyph.advanceWidth);\n }\n const globals = {\n xMin: Math.min.apply(null, xMins),\n yMin: Math.min.apply(null, yMins),\n xMax: Math.max.apply(null, xMaxs),\n yMax: Math.max.apply(null, yMaxs),\n advanceWidthMax: Math.max.apply(null, advanceWidths),\n advanceWidthAvg: average(advanceWidths),\n minLeftSideBearing: Math.min.apply(null, leftSideBearings),\n maxLeftSideBearing: Math.max.apply(null, leftSideBearings),\n minRightSideBearing: Math.min.apply(null, rightSideBearings)\n };\n globals.ascender = font.ascender;\n globals.descender = font.descender;\n let macStyle = 0;\n if (font.weightClass >= 600) {\n macStyle |= font.macStyleValues.BOLD;\n }\n if (font.italicAngle < 0) {\n macStyle |= font.macStyleValues.ITALIC;\n }\n const headTable = head_default.make({\n flags: 3,\n // 00000011 (baseline for font at y=0; left sidebearing point at x=0)\n unitsPerEm: font.unitsPerEm,\n xMin: globals.xMin,\n yMin: globals.yMin,\n xMax: globals.xMax,\n yMax: globals.yMax,\n lowestRecPPEM: 3,\n macStyle,\n createdTimestamp: font.createdTimestamp\n });\n const hheaTable = hhea_default.make({\n ascender: globals.ascender,\n descender: globals.descender,\n advanceWidthMax: globals.advanceWidthMax,\n minLeftSideBearing: globals.minLeftSideBearing,\n minRightSideBearing: globals.minRightSideBearing,\n xMaxExtent: globals.maxLeftSideBearing + (globals.xMax - globals.xMin),\n numberOfHMetrics: font.glyphs.length\n });\n const maxpTable = maxp_default.make(font.glyphs.length);\n const os2Table = os2_default.make(Object.assign({\n xAvgCharWidth: Math.round(globals.advanceWidthAvg),\n usFirstCharIndex: firstCharIndex,\n usLastCharIndex: lastCharIndex,\n ulUnicodeRange1,\n ulUnicodeRange2,\n ulUnicodeRange3,\n ulUnicodeRange4,\n // See http://typophile.com/node/13081 for more info on vertical metrics.\n // We get metrics for typical characters (such as \"x\" for xHeight).\n // We provide some fallback characters if characters are unavailable: their\n // ordering was chosen experimentally.\n sTypoAscender: globals.ascender,\n sTypoDescender: globals.descender,\n sTypoLineGap: 0,\n usWinAscent: globals.yMax,\n usWinDescent: Math.abs(globals.yMin),\n ulCodePageRange1: 1,\n // FIXME: hard-code Latin 1 support for now\n sxHeight: metricsForChar(font, \"xyvw\", { yMax: Math.round(globals.ascender / 2) }).yMax,\n sCapHeight: metricsForChar(font, \"HIKLEFJMNTZBDPRAGOQSUVWXY\", globals).yMax,\n usDefaultChar: font.hasChar(\" \") ? 32 : 0,\n // Use space as the default character, if available.\n usBreakChar: font.hasChar(\" \") ? 32 : 0\n // Use space as the break character, if available.\n }, font.tables.os2));\n const hmtxTable = hmtx_default.make(font.glyphs);\n const cmapTable = cmap_default.make(font.glyphs);\n const englishFamilyName = font.getEnglishName(\"fontFamily\");\n const englishStyleName = font.getEnglishName(\"fontSubfamily\");\n const englishFullName = englishFamilyName + \" \" + englishStyleName;\n let postScriptName = font.getEnglishName(\"postScriptName\");\n if (!postScriptName) {\n postScriptName = englishFamilyName.replace(/\\s/g, \"\") + \"-\" + englishStyleName;\n }\n const names = {};\n for (let n in font.names) {\n names[n] = font.names[n];\n }\n names.unicode = names.unicode || {};\n names.macintosh = names.macintosh || {};\n names.windows = names.windows || {};\n const fontNamesUnicode = font.names.unicode || {};\n const fontNamesMacintosh = font.names.macintosh || {};\n const fontNamesWindows = font.names.windows || {};\n for (const platform in names) {\n names[platform] = names[platform] || {};\n if (!names[platform].uniqueID) {\n const manufacturer = font.getEnglishName(\"manufacturer\") || \"\";\n names[platform].uniqueID = { en: `${manufacturer}: ${englishFullName}` };\n }\n if (!names[platform].postScriptName) {\n names[platform].postScriptName = { en: postScriptName };\n }\n }\n if (!names.unicode.preferredFamily) {\n names.unicode.preferredFamily = fontNamesUnicode.fontFamily || fontNamesMacintosh.fontFamily || fontNamesWindows.fontFamily;\n }\n if (!names.macintosh.preferredFamily) {\n names.macintosh.preferredFamily = fontNamesMacintosh.fontFamily || fontNamesUnicode.fontFamily || fontNamesWindows.fontFamily;\n }\n if (!names.windows.preferredFamily) {\n names.windows.preferredFamily = fontNamesWindows.fontFamily || fontNamesUnicode.fontFamily || fontNamesMacintosh.fontFamily;\n }\n if (!names.unicode.preferredSubfamily) {\n names.unicode.preferredSubfamily = fontNamesUnicode.fontSubfamily || fontNamesMacintosh.fontSubfamily || fontNamesWindows.fontSubfamily;\n }\n if (!names.macintosh.preferredSubfamily) {\n names.macintosh.preferredSubfamily = fontNamesMacintosh.fontSubfamily || fontNamesUnicode.fontSubfamily || fontNamesWindows.fontSubfamily;\n }\n if (!names.windows.preferredSubfamily) {\n names.windows.preferredSubfamily = fontNamesWindows.fontSubfamily || fontNamesUnicode.fontSubfamily || fontNamesMacintosh.fontSubfamily;\n }\n const languageTags = [];\n const nameTable = name_default.make(names, languageTags);\n const ltagTable = languageTags.length > 0 ? ltag_default.make(languageTags) : void 0;\n const postTable = post_default.make(font);\n const cffTable = cff_default.make(font.glyphs, {\n version: font.getEnglishName(\"version\"),\n fullName: englishFullName,\n familyName: englishFamilyName,\n weightName: englishStyleName,\n postScriptName,\n unitsPerEm: font.unitsPerEm,\n fontBBox: [0, globals.yMin, globals.ascender, globals.advanceWidthMax],\n topDict: font.tables.cff && font.tables.cff.topDict || {}\n });\n const metaTable = font.metas && Object.keys(font.metas).length > 0 ? meta_default.make(font.metas) : void 0;\n const tables = [headTable, hheaTable, maxpTable, os2Table, nameTable, cmapTable, postTable, cffTable, hmtxTable];\n if (ltagTable) {\n tables.push(ltagTable);\n }\n const optionalTables = {\n gsub: gsub_default,\n cpal: cpal_default,\n colr: colr_default,\n stat: stat_default,\n avar: avar_default,\n cvar: cvar_default,\n fvar: fvar_default,\n gvar: gvar_default,\n gasp: gasp_default,\n svg: svg_default\n };\n const optionalTableArgs = {\n avar: [font.tables.fvar],\n fvar: [font.names]\n };\n for (let tableName in optionalTables) {\n const table = font.tables[tableName];\n if (table) {\n const tableData = optionalTables[tableName].make.call(font, table, ...optionalTableArgs[tableName] || []);\n if (tableData) {\n tables.push(tableData);\n }\n }\n }\n if (metaTable) {\n tables.push(metaTable);\n }\n const sfntTable = makeSfntTable(tables);\n const bytes = sfntTable.encode();\n const checkSum = computeCheckSum(bytes);\n const tableFields = sfntTable.fields;\n let checkSumAdjusted = false;\n for (let i = 0; i < tableFields.length; i += 1) {\n if (tableFields[i].name === \"head table\") {\n tableFields[i].value.checkSumAdjustment = 2981146554 - checkSum;\n checkSumAdjusted = true;\n break;\n }\n }\n if (!checkSumAdjusted) {\n throw new Error(\"Could not find head table with checkSum to adjust.\");\n }\n return sfntTable;\n }\n var sfnt_default = { make: makeSfntTable, fontToTable: fontToSfntTable, computeCheckSum };\n\n // src/layout.mjs\n function searchTag(arr, tag) {\n let imin = 0;\n let imax = arr.length - 1;\n while (imin <= imax) {\n const imid = imin + imax >>> 1;\n const val = arr[imid].tag;\n if (val === tag) {\n return imid;\n } else if (val < tag) {\n imin = imid + 1;\n } else {\n imax = imid - 1;\n }\n }\n return -imin - 1;\n }\n function binSearch(arr, value) {\n let imin = 0;\n let imax = arr.length - 1;\n while (imin <= imax) {\n const imid = imin + imax >>> 1;\n const val = arr[imid];\n if (val === value) {\n return imid;\n } else if (val < value) {\n imin = imid + 1;\n } else {\n imax = imid - 1;\n }\n }\n return -imin - 1;\n }\n function searchRange(ranges, value) {\n let range;\n let imin = 0;\n let imax = ranges.length - 1;\n while (imin <= imax) {\n const imid = imin + imax >>> 1;\n range = ranges[imid];\n const start = range.start;\n if (start === value) {\n return range;\n } else if (start < value) {\n imin = imid + 1;\n } else {\n imax = imid - 1;\n }\n }\n if (imin > 0) {\n range = ranges[imin - 1];\n if (value > range.end) return 0;\n return range;\n }\n }\n function Layout(font, tableName) {\n this.font = font;\n this.tableName = tableName;\n }\n Layout.prototype = {\n /**\n * Binary search an object by \"tag\" property\n * @instance\n * @function searchTag\n * @memberof opentype.Layout\n * @param {Array} arr\n * @param {string} tag\n * @return {number}\n */\n searchTag,\n /**\n * Binary search in a list of numbers\n * @instance\n * @function binSearch\n * @memberof opentype.Layout\n * @param {Array} arr\n * @param {number} value\n * @return {number}\n */\n binSearch,\n /**\n * Get or create the Layout table (GSUB, GPOS etc).\n * @param {boolean} create - Whether to create a new one.\n * @return {Object} The GSUB or GPOS table.\n */\n getTable: function(create) {\n let layout = this.font.tables[this.tableName];\n if (!layout && create) {\n layout = this.font.tables[this.tableName] = this.createDefaultTable();\n }\n return layout;\n },\n /**\n * Returns all scripts in the substitution table.\n * @instance\n * @return {Array}\n */\n getScriptNames: function() {\n let layout = this.getTable();\n if (!layout) {\n return [];\n }\n return layout.scripts.map(function(script) {\n return script.tag;\n });\n },\n /**\n * Returns the best bet for a script name.\n * Returns 'DFLT' if it exists.\n * If not, returns 'latn' if it exists.\n * If neither exist, returns undefined.\n */\n getDefaultScriptName: function() {\n let layout = this.getTable();\n if (!layout) {\n return;\n }\n let hasLatn = false;\n for (let i = 0; i < layout.scripts.length; i++) {\n const name = layout.scripts[i].tag;\n if (name === \"DFLT\") return name;\n if (name === \"latn\") hasLatn = true;\n }\n if (hasLatn) return \"latn\";\n },\n /**\n * Returns all LangSysRecords in the given script.\n * @instance\n * @param {string} [script='DFLT']\n * @param {boolean} create - forces the creation of this script table if it doesn't exist.\n * @return {Object} An object with tag and script properties.\n */\n getScriptTable: function(script, create) {\n const layout = this.getTable(create);\n if (layout) {\n script = script || \"DFLT\";\n const scripts = layout.scripts;\n const pos = searchTag(layout.scripts, script);\n if (pos >= 0) {\n return scripts[pos].script;\n } else if (create) {\n const scr = {\n tag: script,\n script: {\n defaultLangSys: { reserved: 0, reqFeatureIndex: 65535, featureIndexes: [] },\n langSysRecords: []\n }\n };\n scripts.splice(-1 - pos, 0, scr);\n return scr.script;\n }\n }\n },\n /**\n * Returns a language system table\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {boolean} create - forces the creation of this langSysTable if it doesn't exist.\n * @return {Object}\n */\n getLangSysTable: function(script, language, create) {\n const scriptTable = this.getScriptTable(script, create);\n if (scriptTable) {\n if (!language || language === \"dflt\" || language === \"DFLT\") {\n return scriptTable.defaultLangSys;\n }\n const pos = searchTag(scriptTable.langSysRecords, language);\n if (pos >= 0) {\n return scriptTable.langSysRecords[pos].langSys;\n } else if (create) {\n const langSysRecord = {\n tag: language,\n langSys: { reserved: 0, reqFeatureIndex: 65535, featureIndexes: [] }\n };\n scriptTable.langSysRecords.splice(-1 - pos, 0, langSysRecord);\n return langSysRecord.langSys;\n }\n }\n },\n /**\n * Get a specific feature table.\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {string} feature - One of the codes listed at https://www.microsoft.com/typography/OTSPEC/featurelist.htm\n * @param {boolean} create - forces the creation of the feature table if it doesn't exist.\n * @return {Object}\n */\n getFeatureTable: function(script, language, feature, create) {\n const langSysTable2 = this.getLangSysTable(script, language, create);\n if (langSysTable2) {\n let featureRecord;\n const featIndexes = langSysTable2.featureIndexes;\n const allFeatures = this.font.tables[this.tableName].features;\n for (let i = 0; i < featIndexes.length; i++) {\n featureRecord = allFeatures[featIndexes[i]];\n if (featureRecord.tag === feature) {\n return featureRecord.feature;\n }\n }\n if (create) {\n const index = allFeatures.length;\n check_default.assert(index === 0 || feature >= allFeatures[index - 1].tag, \"Features must be added in alphabetical order.\");\n featureRecord = {\n tag: feature,\n feature: { params: 0, lookupListIndexes: [] }\n };\n allFeatures.push(featureRecord);\n featIndexes.push(index);\n return featureRecord.feature;\n }\n }\n },\n /**\n * Get the lookup tables of a given type for a script/language/feature.\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {string} feature - 4-letter feature code\n * @param {number} lookupType - 1 to 9\n * @param {boolean} create - forces the creation of the lookup table if it doesn't exist, with no subtables.\n * @return {Object[]}\n */\n getLookupTables: function(script, language, feature, lookupType, create) {\n const featureTable = this.getFeatureTable(script, language, feature, create);\n const tables = [];\n if (featureTable) {\n let lookupTable;\n const lookupListIndexes = featureTable.lookupListIndexes;\n const allLookups = this.font.tables[this.tableName].lookups;\n for (let i = 0; i < lookupListIndexes.length; i++) {\n lookupTable = allLookups[lookupListIndexes[i]];\n if (lookupTable.lookupType === lookupType) {\n tables.push(lookupTable);\n }\n }\n if (tables.length === 0 && create) {\n lookupTable = {\n lookupType,\n lookupFlag: 0,\n subtables: [],\n markFilteringSet: void 0\n };\n const index = allLookups.length;\n allLookups.push(lookupTable);\n lookupListIndexes.push(index);\n return [lookupTable];\n }\n }\n return tables;\n },\n /**\n * Find a glyph in a class definition table\n * https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#class-definition-table\n * @param {object} classDefTable - an OpenType Layout class definition table\n * @param {number} glyphIndex - the index of the glyph to find\n * @returns {number} -1 if not found\n */\n getGlyphClass: function(classDefTable, glyphIndex) {\n switch (classDefTable.format) {\n case 1: {\n if (classDefTable.startGlyph <= glyphIndex && glyphIndex < classDefTable.startGlyph + classDefTable.classes.length) {\n return classDefTable.classes[glyphIndex - classDefTable.startGlyph];\n }\n return 0;\n }\n case 2: {\n const range = searchRange(classDefTable.ranges, glyphIndex);\n return range ? range.classId : 0;\n }\n }\n },\n /**\n * Find a glyph in a coverage table\n * https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#coverage-table\n * @param {object} coverageTable - an OpenType Layout coverage table\n * @param {number} glyphIndex - the index of the glyph to find\n * @returns {number} -1 if not found\n */\n getCoverageIndex: function(coverageTable, glyphIndex) {\n switch (coverageTable.format) {\n case 1: {\n const index = binSearch(coverageTable.glyphs, glyphIndex);\n return index >= 0 ? index : -1;\n }\n case 2: {\n const range = searchRange(coverageTable.ranges, glyphIndex);\n return range ? range.index + glyphIndex - range.start : -1;\n }\n }\n },\n /**\n * Returns the list of glyph indexes of a coverage table.\n * Format 1: the list is stored raw\n * Format 2: compact list as range records.\n * @instance\n * @param {Object} coverageTable\n * @return {Array}\n */\n expandCoverage: function(coverageTable) {\n if (coverageTable.format === 1) {\n return coverageTable.glyphs;\n } else {\n const glyphs = [];\n const ranges = coverageTable.ranges;\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n const start = range.start;\n const end = range.end;\n for (let j = start; j <= end; j++) {\n glyphs.push(j);\n }\n }\n return glyphs;\n }\n }\n };\n var layout_default = Layout;\n\n // src/position.mjs\n function Position(font) {\n layout_default.call(this, font, \"gpos\");\n }\n Position.prototype = layout_default.prototype;\n Position.prototype.init = function() {\n const script = this.getDefaultScriptName();\n this.defaultKerningTables = this.getKerningTables(script);\n };\n Position.prototype.getKerningValue = function(kerningLookups, leftIndex, rightIndex) {\n for (let i = 0; i < kerningLookups.length; i++) {\n const subtables = kerningLookups[i].subtables;\n for (let j = 0; j < subtables.length; j++) {\n const subtable = subtables[j];\n const covIndex = this.getCoverageIndex(subtable.coverage, leftIndex);\n if (covIndex < 0) continue;\n switch (subtable.posFormat) {\n case 1: {\n let pairSet = subtable.pairSets[covIndex];\n for (let k = 0; k < pairSet.length; k++) {\n let pair = pairSet[k];\n if (pair.secondGlyph === rightIndex) {\n return pair.value1 && pair.value1.xAdvance || 0;\n }\n }\n break;\n }\n case 2: {\n const class1 = this.getGlyphClass(subtable.classDef1, leftIndex);\n const class2 = this.getGlyphClass(subtable.classDef2, rightIndex);\n const pair = subtable.classRecords[class1][class2];\n return pair.value1 && pair.value1.xAdvance || 0;\n }\n }\n }\n }\n return 0;\n };\n Position.prototype.getKerningTables = function(script, language) {\n if (this.font.tables.gpos) {\n return this.getLookupTables(script, language, \"kern\", 2);\n }\n };\n var position_default = Position;\n\n // src/util.mjs\n function arraysEqual(ar1, ar2) {\n const n = ar1.length;\n if (n !== ar2.length) {\n return false;\n }\n for (let i = 0; i < n; i++) {\n if (ar1[i] !== ar2[i]) {\n return false;\n }\n }\n return true;\n }\n function binarySearch(array, key, value) {\n let low = 0, high = array.length - 1;\n let result = null;\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n const record = array[mid];\n const recordValue = record[key];\n if (recordValue < value) {\n low = mid + 1;\n } else if (recordValue > value) {\n high = mid - 1;\n } else {\n result = record;\n break;\n }\n }\n return result;\n }\n function binarySearchIndex(array, key, value) {\n let low = 0, high = array.length - 1;\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n const element = array[mid];\n if (element[key] < value) {\n low = mid + 1;\n } else if (element[key] > value) {\n high = mid - 1;\n } else {\n return mid;\n }\n }\n return -1;\n }\n function binarySearchInsert(array, key, value) {\n let low = 0, high = array.length;\n const compare = (a, b) => a[key] - b[key];\n while (low < high) {\n const mid = low + high >>> 1;\n if (compare(array[mid], value) < 0) low = mid + 1;\n else high = mid;\n }\n array.splice(low, 0, value);\n return low;\n }\n function isGzip(buf) {\n return buf[0] === 31 && buf[1] === 139 && buf[2] === 8;\n }\n function unGzip(gzip) {\n const data = new DataView(gzip.buffer, gzip.byteOffset, gzip.byteLength);\n let start = 10;\n const end = gzip.byteLength - 8;\n const flg = data.getInt8(3);\n if (flg & 4) {\n start += 2 + data.getUint16(start, true);\n }\n if (flg & 8) {\n while (start < end) if (gzip[start++] === 0) break;\n }\n if (flg & 16) {\n while (start < end) if (gzip[start++] === 0) break;\n }\n if (flg & 2) {\n start += 2;\n }\n if (start >= end) throw new Error(\"Can't find compressed blocks\");\n const isize = data.getUint32(data.byteLength - 4, true);\n return tinf_uncompress(gzip.subarray(start, end), new Uint8Array(isize));\n }\n function copyPoint(p) {\n return {\n x: p.x,\n y: p.y,\n onCurve: p.onCurve,\n lastPointOfContour: p.lastPointOfContour\n };\n }\n function copyComponent(c) {\n return {\n glyphIndex: c.glyphIndex,\n xScale: c.xScale,\n scale01: c.scale01,\n scale10: c.scale10,\n yScale: c.yScale,\n dx: c.dx,\n dy: c.dy\n };\n }\n\n // src/substitution.mjs\n function Substitution(font) {\n layout_default.call(this, font, \"gsub\");\n }\n function getSubstFormat(lookupTable, format, defaultSubtable) {\n const subtables = lookupTable.subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n if (subtable.substFormat === format) {\n return subtable;\n }\n }\n if (defaultSubtable) {\n subtables.push(defaultSubtable);\n return defaultSubtable;\n }\n return void 0;\n }\n Substitution.prototype = layout_default.prototype;\n Substitution.prototype.createDefaultTable = function() {\n return {\n version: 1,\n scripts: [{\n tag: \"DFLT\",\n script: {\n defaultLangSys: { reserved: 0, reqFeatureIndex: 65535, featureIndexes: [] },\n langSysRecords: []\n }\n }],\n features: [],\n lookups: []\n };\n };\n Substitution.prototype.getSingle = function(feature, script, language) {\n const substitutions = [];\n const lookupTables = this.getLookupTables(script, language, feature, 1);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n let j;\n if (subtable.substFormat === 1) {\n const delta = subtable.deltaGlyphId;\n for (j = 0; j < glyphs.length; j++) {\n const glyph = glyphs[j];\n substitutions.push({ sub: glyph, by: glyph + delta });\n }\n } else {\n const substitute = subtable.substitute;\n for (j = 0; j < glyphs.length; j++) {\n substitutions.push({ sub: glyphs[j], by: substitute[j] });\n }\n }\n }\n }\n return substitutions;\n };\n Substitution.prototype.getMultiple = function(feature, script, language) {\n const substitutions = [];\n const lookupTables = this.getLookupTables(script, language, feature, 2);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n let j;\n for (j = 0; j < glyphs.length; j++) {\n const glyph = glyphs[j];\n const replacements = subtable.sequences[j];\n substitutions.push({ sub: glyph, by: replacements });\n }\n }\n }\n return substitutions;\n };\n Substitution.prototype.getAlternates = function(feature, script, language) {\n const alternates = [];\n const lookupTables = this.getLookupTables(script, language, feature, 3);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n const alternateSets = subtable.alternateSets;\n for (let j = 0; j < glyphs.length; j++) {\n alternates.push({ sub: glyphs[j], by: alternateSets[j] });\n }\n }\n }\n return alternates;\n };\n Substitution.prototype.getLigatures = function(feature, script, language) {\n const ligatures = [];\n const lookupTables = this.getLookupTables(script, language, feature, 4);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n const ligatureSets = subtable.ligatureSets;\n for (let j = 0; j < glyphs.length; j++) {\n const startGlyph = glyphs[j];\n const ligSet = ligatureSets[j];\n for (let k = 0; k < ligSet.length; k++) {\n const lig = ligSet[k];\n ligatures.push({\n sub: [startGlyph].concat(lig.components),\n by: lig.ligGlyph\n });\n }\n }\n }\n }\n return ligatures;\n };\n Substitution.prototype.addSingle = function(feature, substitution, script, language) {\n const lookupTable = this.getLookupTables(script, language, feature, 1, true)[0];\n const subtable = getSubstFormat(lookupTable, 2, {\n // lookup type 1 subtable, format 2, coverage format 1\n substFormat: 2,\n coverage: { format: 1, glyphs: [] },\n substitute: []\n });\n check_default.assert(subtable.coverage.format === 1, \"Single: unable to modify coverage table format \" + subtable.coverage.format);\n const coverageGlyph = substitution.sub;\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos < 0) {\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.substitute.splice(pos, 0, 0);\n }\n subtable.substitute[pos] = substitution.by;\n };\n Substitution.prototype.addMultiple = function(feature, substitution, script, language) {\n check_default.assert(substitution.by instanceof Array && substitution.by.length > 1, 'Multiple: \"by\" must be an array of two or more ids');\n const lookupTable = this.getLookupTables(script, language, feature, 2, true)[0];\n const subtable = getSubstFormat(lookupTable, 1, {\n // lookup type 2 subtable, format 1, coverage format 1\n substFormat: 1,\n coverage: { format: 1, glyphs: [] },\n sequences: []\n });\n check_default.assert(subtable.coverage.format === 1, \"Multiple: unable to modify coverage table format \" + subtable.coverage.format);\n const coverageGlyph = substitution.sub;\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos < 0) {\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.sequences.splice(pos, 0, 0);\n }\n subtable.sequences[pos] = substitution.by;\n };\n Substitution.prototype.addAlternate = function(feature, substitution, script, language) {\n const lookupTable = this.getLookupTables(script, language, feature, 3, true)[0];\n const subtable = getSubstFormat(lookupTable, 1, {\n // lookup type 3 subtable, format 1, coverage format 1\n substFormat: 1,\n coverage: { format: 1, glyphs: [] },\n alternateSets: []\n });\n check_default.assert(subtable.coverage.format === 1, \"Alternate: unable to modify coverage table format \" + subtable.coverage.format);\n const coverageGlyph = substitution.sub;\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos < 0) {\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.alternateSets.splice(pos, 0, 0);\n }\n subtable.alternateSets[pos] = substitution.by;\n };\n Substitution.prototype.addLigature = function(feature, ligature, script, language) {\n const lookupTable = this.getLookupTables(script, language, feature, 4, true)[0];\n let subtable = lookupTable.subtables[0];\n if (!subtable) {\n subtable = {\n // lookup type 4 subtable, format 1, coverage format 1\n substFormat: 1,\n coverage: { format: 1, glyphs: [] },\n ligatureSets: []\n };\n lookupTable.subtables[0] = subtable;\n }\n check_default.assert(subtable.coverage.format === 1, \"Ligature: unable to modify coverage table format \" + subtable.coverage.format);\n const coverageGlyph = ligature.sub[0];\n const ligComponents = ligature.sub.slice(1);\n const ligatureTable = {\n ligGlyph: ligature.by,\n components: ligComponents\n };\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos >= 0) {\n const ligatureSet = subtable.ligatureSets[pos];\n for (let i = 0; i < ligatureSet.length; i++) {\n if (arraysEqual(ligatureSet[i].components, ligComponents)) {\n return;\n }\n }\n ligatureSet.push(ligatureTable);\n } else {\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.ligatureSets.splice(pos, 0, [ligatureTable]);\n }\n };\n Substitution.prototype.getFeature = function(feature, script, language) {\n if (/ss\\d\\d/.test(feature)) {\n return this.getSingle(feature, script, language);\n }\n switch (feature) {\n case \"aalt\":\n case \"salt\":\n return this.getSingle(feature, script, language).concat(this.getAlternates(feature, script, language));\n case \"dlig\":\n case \"liga\":\n case \"rlig\":\n return this.getLigatures(feature, script, language);\n case \"ccmp\":\n return this.getMultiple(feature, script, language).concat(this.getLigatures(feature, script, language));\n case \"stch\":\n return this.getMultiple(feature, script, language);\n }\n return void 0;\n };\n Substitution.prototype.add = function(feature, sub, script, language) {\n if (/ss\\d\\d/.test(feature)) {\n return this.addSingle(feature, sub, script, language);\n }\n switch (feature) {\n case \"aalt\":\n case \"salt\":\n if (typeof sub.by === \"number\") {\n return this.addSingle(feature, sub, script, language);\n }\n return this.addAlternate(feature, sub, script, language);\n case \"dlig\":\n case \"liga\":\n case \"rlig\":\n return this.addLigature(feature, sub, script, language);\n case \"ccmp\":\n if (sub.by instanceof Array) {\n return this.addMultiple(feature, sub, script, language);\n }\n return this.addLigature(feature, sub, script, language);\n }\n return void 0;\n };\n var substitution_default = Substitution;\n\n // src/palettes.mjs\n var PaletteManager = class {\n // private properties don't work with reify\n // @TODO: refactor once we migrated to ES6 modules, see https://github.com/opentypejs/opentype.js/pull/579\n // #font = null;\n /**\n * @type {integer} CPAL color used to (pre)fill unset colors in a palette.\n * Format 0xBBGGRRAA\n */\n // defaultValue = 0x000000FF;\n /**\n * \n * @param {opentype.Font} font \n */\n constructor(font) {\n this.defaultValue = 255;\n this.font = font;\n }\n /**\n * Returns the font's cpal table object if present\n * @returns {Object}\n */\n cpal() {\n if (this.font.tables && this.font.tables.cpal) {\n return this.font.tables.cpal;\n }\n return false;\n }\n /**\n * Returns an array of arrays of color values for each palette, optionally in a specified color format\n * @param {string} colorFormat \n * @returns {Array<Array>}\n */\n getAll(colorFormat) {\n const palettes = [];\n const cpal = this.cpal();\n if (!cpal) return palettes;\n for (let i = 0; i < cpal.colorRecordIndices.length; i++) {\n const startIndex = cpal.colorRecordIndices[i];\n const paletteColors = [];\n for (let j = startIndex; j < startIndex + cpal.numPaletteEntries; j++) {\n paletteColors.push(formatColor(cpal.colorRecords[j], colorFormat || \"hexa\"));\n }\n palettes.push(paletteColors);\n }\n return palettes;\n }\n /**\n * Converts a color value string or array of color value strings to CPAL integer color value(s)\n * @param {string|Array<string></string>} color \n * @returns {integer}\n */\n toCPALcolor(color) {\n if (Array.isArray(color)) {\n return color.map((color2) => parseColor(color2, \"raw\"));\n }\n return parseColor(color, \"raw\");\n }\n /**\n * Fills a set of palette colors (from palette index, or a provided array of CPAL color values) with a set of colors, falling back to the default color value, until a given count\n * @param {Array<string>|integer} palette Palette index integer or Array of colors to be filled\n * @param {Array<string|integer>} colors Colors to fill the palette with\n * @param {integer} _colorCount Number of colors to fill the palette with, defaults to the value of the numPaletteEntries field. Used internally by extend() and shouldn't be set manually\n * @returns \n */\n fillPalette(palette, colors = [], _colorCount = this.cpal().numPaletteEntries) {\n palette = Number.isInteger(palette) ? this.get(palette, \"raw\") : palette;\n return Object.assign(Array(_colorCount).fill(this.defaultValue), this.toCPALcolor(palette).concat(this.toCPALcolor(colors)));\n }\n /**\n * Extend existing palettes and numPaletteEntries by a number of color slots\n * @param {integer} num number of additional color slots to add to all palettes\n */\n extend(num) {\n if (this.ensureCPAL(Array(num).fill(this.defaultValue))) {\n return;\n }\n const cpal = this.cpal();\n const newCount = cpal.numPaletteEntries + num;\n const palettes = this.getAll().map((palette) => this.fillPalette(palette, [], newCount));\n cpal.numPaletteEntries = newCount;\n cpal.colorRecords = this.toCPALcolor(palettes.flat());\n this.updateIndices();\n }\n /**\n * Get a specific palette by its zero-based index\n * @param {integer} paletteIndex \n * @param {string} [colorFormat='hexa']\n * @returns {Array}\n */\n get(paletteIndex, colorFormat = \"hexa\") {\n return this.getAll(colorFormat)[paletteIndex] || null;\n }\n /**\n * Get a color from a specific palette by its zero-based index\n * @param {integer} index \n * @param {integer} paletteIndex\n * @param {string} [colorFormat ='hexa']\n * @returns \n */\n getColor(index, paletteIndex = 0, colorFormat = \"hexa\") {\n return getPaletteColor(this.font, index, paletteIndex, colorFormat);\n }\n /**\n * Set one or more colors on a specific palette by its zero-based index\n * @param {integer} index zero-based color index to start filling from\n * @param {string|integer|Array<string|integer>} color color value or array of color values\n * @param {integer} paletteIndex\n * @returns \n */\n setColor(index, colors, paletteIndex = 0) {\n index = parseInt(index);\n paletteIndex = parseInt(paletteIndex);\n let palettes = this.getAll(\"raw\");\n let palette = palettes[paletteIndex];\n if (!palette) {\n throw Error(`paletteIndex ${paletteIndex} out of range`);\n }\n const cpal = this.cpal();\n const colorCount = cpal.numPaletteEntries;\n if (!Array.isArray(colors)) {\n colors = [colors];\n }\n if (colors.length + index > colorCount) {\n this.extend(colors.length + index - colorCount);\n palettes = this.getAll(\"raw\");\n palette = palettes[paletteIndex];\n }\n for (let i = 0; i < colors.length; i++) {\n palette[i + index] = this.toCPALcolor(colors[i]);\n }\n cpal.colorRecords = palettes.flat();\n this.updateIndices();\n }\n /**\n * Add a new palette. \n * @param {Array} colors (optional) colors to add to the palette, differences to existing palettes will be filled with the defaultValue.\n * @returns \n */\n add(colors) {\n if (this.ensureCPAL(colors)) {\n return;\n }\n const cpal = this.cpal();\n const colorCount = cpal.numPaletteEntries;\n if (colors && colors.length) {\n colors = this.toCPALcolor(colors);\n if (colors.length > colorCount) {\n this.extend(colors.length - colorCount);\n } else if (colors.length < colorCount) {\n colors = this.fillPalette(colors);\n }\n cpal.colorRecordIndices.push(cpal.colorRecords.length);\n cpal.colorRecords.push(...colors);\n } else {\n cpal.colorRecordIndices.push(cpal.colorRecords.length);\n cpal.colorRecords.push(...Array(colorCount).fill(this.defaultValue));\n }\n }\n /**\n * deletes a palette by its zero-based index\n * @param {integer} paletteIndex \n */\n delete(paletteIndex) {\n const palettes = this.getAll(\"raw\");\n delete palettes[paletteIndex];\n const cpal = this.cpal();\n cpal.colorRecordIndices.pop();\n cpal.colorRecords = palettes.flat();\n }\n /**\n * Deletes a specific color index in all palettes and updates all layers using that color with the replacement index\n * @param {integer} colorIndex index of the color that should be deleted\n * @param {integer} replacementIndex index (according to the palette before deletion) of the color to replace in layers using the color to be to deleted\n */\n deleteColor(colorIndex, replacementIndex) {\n if (colorIndex === replacementIndex) {\n throw Error(\"replacementIndex cannot be the same as colorIndex\");\n }\n const cpal = this.cpal();\n const palettes = this.getAll(\"raw\");\n const updatedPalettes = [];\n if (replacementIndex > cpal.numPaletteEntries - 1) {\n throw Error(`Replacement index out of range: numPaletteEntries after deletion: ${cpal.numPaletteEntries - 1}, replacementIndex: ${replacementIndex})`);\n }\n for (let i = 0; i < palettes.length; i++) {\n const palette = palettes[i];\n const updatedPalette = palette.filter((color, index) => index !== colorIndex);\n updatedPalettes.push(updatedPalette);\n }\n const colrTable = this.font.tables.colr;\n if (colrTable) {\n const layerRecords = colrTable.layerRecords;\n for (let i = 0; i < layerRecords.length; i++) {\n const currentIndex = layerRecords[i].paletteIndex;\n if (currentIndex > colorIndex) {\n const shiftAmount = 1;\n layerRecords[i].paletteIndex -= shiftAmount;\n } else if (currentIndex === colorIndex) {\n let replacementShift = 0;\n for (let j = 0; j < palettes.length; j++) {\n if (replacementIndex > colorIndex && replacementIndex <= colorIndex + palettes[j].length) {\n replacementShift++;\n break;\n }\n }\n layerRecords[i].paletteIndex = replacementIndex - replacementShift;\n }\n }\n this.font.tables.colr = {\n ...colrTable,\n layerRecords\n };\n }\n const flattenedPalettes = updatedPalettes.flat();\n for (let i = 0; i < palettes.length; i++) {\n cpal.colorRecordIndices[i] -= i;\n }\n cpal.numPaletteEntries = Math.max(0, cpal.numPaletteEntries - 1);\n cpal.colorRecords = this.toCPALcolor(flattenedPalettes);\n }\n /**\n * Makes sure that the CPAL table exists and is populated with default values.\n * @param {Array} colors (optional) colors to populate on creation\n * @returns {Boolean} true if it was created, false if it already existed.\n */\n ensureCPAL(colors) {\n if (!this.cpal()) {\n if (!colors || !colors.length) {\n colors = [this.defaultValue];\n } else {\n colors = this.toCPALcolor(colors);\n }\n this.font.tables.cpal = {\n version: 0,\n numPaletteEntries: colors.length,\n colorRecords: colors,\n colorRecordIndices: [0]\n };\n return true;\n }\n return false;\n }\n /**\n * Mainly used internally. Recalculates the colorRecordIndices array based on the numPaletteEntries and number of palettes\n */\n updateIndices() {\n const cpal = this.cpal();\n const paletteCount = Math.ceil(cpal.colorRecords.length / cpal.numPaletteEntries);\n cpal.colorRecordIndices = [];\n for (let i = 0; i < paletteCount; i++) {\n cpal.colorRecordIndices.push(i * cpal.numPaletteEntries);\n }\n }\n };\n\n // src/layers.mjs\n var LayerManager = class {\n // private properties don't work with reify\n // @TODO: refactor once we migrated to ES6 modules, see https://github.com/opentypejs/opentype.js/pull/579\n // #font = null;\n constructor(font) {\n this.font = font;\n }\n /**\n * Mainly used internally. Ensures that the COLR table exists and is populated with default values\n * @returns the LayerManager's font instance for chaining\n */\n ensureCOLR() {\n if (!this.font.tables.colr) {\n this.font.tables.colr = {\n version: 0,\n baseGlyphRecords: [],\n layerRecords: []\n };\n }\n return this.font;\n }\n /**\n * Gets the layers for a specific glyph\n * @param {integer} glyphIndex\n * @returns {Array<Object>} array of layer objects {glyph, paletteIndex}\n */\n get(glyphIndex) {\n const font = this.font;\n const layers = [];\n const colr = font.tables.colr;\n const cpal = font.tables.cpal;\n if (!colr || !cpal) {\n return layers;\n }\n const baseGlyph = binarySearch(colr.baseGlyphRecords, \"glyphID\", glyphIndex);\n if (!baseGlyph) {\n return layers;\n }\n const firstIndex = baseGlyph.firstLayerIndex;\n const numLayers = baseGlyph.numLayers;\n for (let l = 0; l < numLayers; l++) {\n const layer = colr.layerRecords[firstIndex + l];\n layers.push({\n glyph: font.glyphs.get(layer.glyphID),\n paletteIndex: layer.paletteIndex\n });\n }\n return layers;\n }\n /**\n * Adds one or more layers to a glyph, at the end or at a specific position.\n * @param {integer} glyphIndex glyph index to add the layer(s) to.\n * @param {Array|Object} layers layer object {glyph, paletteIndex}/{glyphID, paletteIndex} or array of layer objects.\n * @param {integer?} position position to insert the layers at (will default to adding at the end).\n */\n add(glyphIndex, layers, position) {\n const currentLayers = this.get(glyphIndex);\n layers = Array.isArray(layers) ? layers : [layers];\n if (position === void 0 || position === Infinity || position > currentLayers.length) {\n position = currentLayers.length;\n } else if (position < 0) {\n position = currentLayers.length + 1 + position % (currentLayers.length + 1);\n if (position >= currentLayers.length + 1) {\n position -= currentLayers.length + 1;\n }\n }\n const newLayers = [];\n for (let i = 0; i < position; i++) {\n const glyphID = Number.isInteger(currentLayers[i].glyph) ? currentLayers[i].glyph : currentLayers[i].glyph.index;\n newLayers.push({\n glyphID,\n paletteIndex: currentLayers[i].paletteIndex\n });\n }\n for (const layer of layers) {\n const glyphID = Number.isInteger(layer.glyph) ? layer.glyph : layer.glyph.index;\n newLayers.push({\n glyphID,\n paletteIndex: layer.paletteIndex\n });\n }\n for (let i = position; i < currentLayers.length; i++) {\n const glyphID = Number.isInteger(currentLayers[i].glyph) ? currentLayers[i].glyph : currentLayers[i].glyph.index;\n newLayers.push({\n glyphID,\n paletteIndex: currentLayers[i].paletteIndex\n });\n }\n this.updateColrTable(glyphIndex, newLayers);\n }\n /**\n * Sets a color glyph layer's paletteIndex property to a new index\n * @param {integer} glyphIndex glyph in the font by zero-based glyph index\n * @param {integer} layerIndex layer in the glyph by zero-based layer index\n * @param {integer} paletteIndex new color to set for the layer by zero-based index in any palette\n */\n setPaletteIndex(glyphIndex, layerIndex, paletteIndex) {\n let layers = this.get(glyphIndex);\n if (layers[layerIndex]) {\n layers = layers.map((layer, index) => ({\n glyphID: layer.glyph.index,\n paletteIndex: index === layerIndex ? paletteIndex : layer.paletteIndex\n }));\n this.updateColrTable(glyphIndex, layers);\n } else {\n console.error(\"Invalid layer index\");\n }\n }\n /**\n * Removes one or more layers from a glyph.\n * @param {integer} glyphIndex glyph index to remove the layer(s) from\n * @param {integer} start index to remove the layer at\n * @param {integer?} end (optional) if provided, removes all layers from start index to (and including) end index\n */\n remove(glyphIndex, start, end = start) {\n let currentLayers = this.get(glyphIndex);\n currentLayers = currentLayers.map((layer) => ({\n glyphID: layer.glyph.index,\n paletteIndex: layer.paletteIndex\n }));\n currentLayers.splice(start, end - start + 1);\n this.updateColrTable(glyphIndex, currentLayers);\n }\n /**\n * Mainly used internally. Mainly used internally. Updates the colr table, adding a baseGlyphRecord if needed,\n * ensuring that it's inserted at the correct position, updating numLayers, and adjusting firstLayerIndex values\n * for all baseGlyphRecords according to any deletions or insertions.\n * @param {integer} glyphIndex \n * @param {Array<Object>} layers array of layer objects {glyphID, paletteIndex}\n */\n updateColrTable(glyphIndex, layers) {\n this.ensureCOLR();\n const font = this.font;\n const colr = font.tables.colr;\n let index = binarySearchIndex(colr.baseGlyphRecords, \"glyphID\", glyphIndex);\n const addBaseGlyph = index === -1;\n if (addBaseGlyph) {\n const newBaseGlyphRecord = { glyphID: glyphIndex, firstLayerIndex: colr.layerRecords.length, numLayers: 0 };\n index = binarySearchInsert(colr.baseGlyphRecords, \"glyphID\", newBaseGlyphRecord);\n }\n const baseGlyphRecord = colr.baseGlyphRecords[index];\n const originalNumLayers = baseGlyphRecord.numLayers;\n const newNumLayers = layers.length;\n const layerDiff = newNumLayers - originalNumLayers;\n if (layerDiff > 0) {\n const newLayers = layers.slice(originalNumLayers).map((layer) => ({\n glyphID: layer.glyphID,\n paletteIndex: layer.paletteIndex\n }));\n colr.layerRecords.splice(baseGlyphRecord.firstLayerIndex + originalNumLayers, 0, ...newLayers);\n } else if (layerDiff < 0) {\n colr.layerRecords.splice(baseGlyphRecord.firstLayerIndex + newNumLayers, -layerDiff);\n }\n for (let i = 0; i < Math.min(originalNumLayers, newNumLayers); i++) {\n colr.layerRecords[baseGlyphRecord.firstLayerIndex + i] = {\n glyphID: layers[i].glyphID,\n paletteIndex: layers[i].paletteIndex\n };\n }\n baseGlyphRecord.numLayers = newNumLayers;\n if (layerDiff !== 0) {\n for (let i = 0; i < colr.baseGlyphRecords.length; i++) {\n const sibling = colr.baseGlyphRecords[i];\n if (i === index || sibling.firstLayerIndex < baseGlyphRecord.firstLayerIndex) continue;\n colr.baseGlyphRecords[i].firstLayerIndex += layerDiff;\n }\n }\n }\n };\n\n // src/svgimages.mjs\n var SVGImageManager = class {\n /**\n * @param {opentype.Font} font\n */\n constructor(font) {\n this.font = font;\n this.cache = /* @__PURE__ */ new WeakMap();\n }\n /**\n * @param {number} glyphIndex\n * @returns {SvgImage | undefined}\n */\n get(glyphIndex) {\n const svgImageCacheEntry = this.getOrCreateSvgImageCacheEntry(glyphIndex);\n return svgImageCacheEntry && svgImageCacheEntry.image;\n }\n /**\n * @param {number} glyphIndex\n * @returns {Promise<SvgImage> | undefined}\n */\n getAsync(glyphIndex) {\n const svgImageCacheEntry = this.getOrCreateSvgImageCacheEntry(glyphIndex);\n return svgImageCacheEntry && svgImageCacheEntry.promise;\n }\n /**\n * @param {number} glyphIndex\n * @returns {SVGImageCacheEntry | undefined}\n */\n getOrCreateSvgImageCacheEntry(glyphIndex) {\n const svg = this.font.tables.svg;\n if (svg === void 0) return;\n const svgBuf = svg.get(glyphIndex);\n if (svgBuf === void 0) return;\n let svgDocCacheEntry = this.cache.get(svgBuf);\n if (svgDocCacheEntry === void 0) {\n svgDocCacheEntry = createSvgDocCacheEntry(svgBuf);\n this.cache.set(svgBuf, svgDocCacheEntry);\n }\n let svgImageCacheEntry = svgDocCacheEntry.images.get(glyphIndex);\n if (svgImageCacheEntry === void 0) {\n svgImageCacheEntry = createSvgImageCacheEntry(this.font, svgDocCacheEntry.template, glyphIndex);\n svgImageCacheEntry.promise.then((svgImage) => {\n svgImageCacheEntry.image = svgImage;\n if (typeof this.font.onGlyphUpdated === \"function\") {\n try {\n this.font.onGlyphUpdated(glyphIndex);\n } catch (error) {\n console.error(\"font.onGlyphUpdated\", glyphIndex, error);\n }\n }\n });\n svgDocCacheEntry.images.set(glyphIndex, svgImageCacheEntry);\n }\n return svgImageCacheEntry;\n }\n };\n function createSvgDocCacheEntry(svgBuf) {\n return {\n template: decodeSvgDocument(svgBuf).then(makeSvgTemplate),\n images: /* @__PURE__ */ new Map()\n };\n }\n function createSvgImageCacheEntry(font, svgTemplatePromise, glyphIndex) {\n return {\n promise: svgTemplatePromise.then((svgTemplate) => {\n let svgText;\n if (typeof svgTemplate === \"string\") {\n svgText = svgTemplate;\n } else {\n svgTemplate[4] = glyphIndex;\n svgText = svgTemplate.join(\"\");\n }\n const svgImage = makeSvgImage(svgText, font.unitsPerEm);\n return svgImage.image.decode().then(() => svgImage);\n }),\n image: void 0\n };\n }\n var decodeSvgDocument = typeof DecompressionStream === \"function\" ? decodeSvgDocumentWithDecompressionStream : decodeSvgDocumentWithTinyInflate;\n function decodeSvgDocumentWithTinyInflate(buf) {\n try {\n return Promise.resolve(new TextDecoder().decode(isGzip(buf) ? unGzip(buf) : buf));\n } catch (error) {\n return Promise.reject(error);\n }\n }\n function decodeSvgDocumentWithDecompressionStream(buf) {\n if (isGzip(buf)) {\n return new Response(new Response(buf).body.pipeThrough(new DecompressionStream(\"gzip\"))).text();\n }\n try {\n return Promise.resolve(new TextDecoder().decode(buf));\n } catch (error) {\n return Promise.reject(error);\n }\n }\n function makeSvgTemplate(text) {\n const documentStart = text.indexOf(\"<svg\");\n const contentStart = text.indexOf(\">\", documentStart + 4) + 1;\n if (/ id=['\"]glyph\\d+['\"]/.test(text.substring(documentStart, contentStart))) {\n return text;\n }\n const contentEnd = text.lastIndexOf(\"</svg>\");\n return [\n text.substring(0, contentStart),\n \"<defs>\",\n text.substring(contentStart, contentEnd),\n '</defs><use href=\"#glyph',\n \"\",\n '\"/>',\n text.substring(contentEnd)\n ];\n }\n function makeSvgImage(text, unitsPerEm) {\n const svgDocument = new DOMParser().parseFromString(text, \"image/svg+xml\");\n const svg = svgDocument.documentElement;\n const viewBoxVal = svg.viewBox.baseVal;\n const widthVal = svg.width.baseVal;\n const heightVal = svg.height.baseVal;\n let xScale = 1;\n let yScale = 1;\n if (viewBoxVal.width > 0 && viewBoxVal.height > 0) {\n if (widthVal.unitType === 1) {\n xScale = widthVal.valueInSpecifiedUnits / viewBoxVal.width;\n yScale = heightVal.unitType === 1 ? heightVal.valueInSpecifiedUnits / viewBoxVal.height : xScale;\n } else if (heightVal.unitType === 1) {\n yScale = heightVal.valueInSpecifiedUnits / viewBoxVal.height;\n xScale = yScale;\n } else if (unitsPerEm) {\n xScale = unitsPerEm / viewBoxVal.width;\n yScale = unitsPerEm / viewBoxVal.height;\n }\n }\n const div = document.createElement(\"div\");\n div.style.position = \"fixed\";\n div.style.visibility = \"hidden\";\n div.appendChild(svg);\n document.body.appendChild(div);\n const bbox = svg.getBBox();\n document.body.removeChild(div);\n const leftSideBearing = (bbox.x - viewBoxVal.x) * xScale;\n const baseline = (viewBoxVal.y - bbox.y) * yScale;\n const width = bbox.width * xScale;\n const height = bbox.height * yScale;\n svg.setAttribute(\"viewBox\", [bbox.x, bbox.y, bbox.width, bbox.height].join(\" \"));\n if (xScale !== 1) svg.setAttribute(\"width\", width);\n if (yScale !== 1) svg.setAttribute(\"height\", height);\n const image = new Image(width, height);\n image.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(svg.outerHTML);\n return { leftSideBearing, baseline, image };\n }\n\n // src/tables/glyf.mjs\n var _resolving = /* @__PURE__ */ new WeakMap();\n function parseGlyphCoordinate(p, flag, previousValue, shortVectorBitMask, sameBitMask) {\n let v;\n if ((flag & shortVectorBitMask) > 0) {\n v = p.parseByte();\n if ((flag & sameBitMask) === 0) {\n v = -v;\n }\n v = previousValue + v;\n } else {\n if ((flag & sameBitMask) > 0) {\n v = previousValue;\n } else {\n v = previousValue + p.parseShort();\n }\n }\n return v;\n }\n function parseGlyph(glyph, data, start) {\n const p = new parse_default.Parser(data, start);\n glyph._numberOfContours = p.parseShort();\n glyph._xMin = p.parseShort();\n glyph._yMin = p.parseShort();\n glyph._xMax = p.parseShort();\n glyph._yMax = p.parseShort();\n let flags;\n let flag;\n if (glyph._numberOfContours > 0) {\n const endPointIndices = glyph.endPointIndices = [];\n for (let i = 0; i < glyph._numberOfContours; i += 1) {\n endPointIndices.push(p.parseUShort());\n }\n glyph.instructionLength = p.parseUShort();\n glyph.instructions = [];\n for (let i = 0; i < glyph.instructionLength; i += 1) {\n glyph.instructions.push(p.parseByte());\n }\n const numberOfCoordinates = endPointIndices[endPointIndices.length - 1] + 1;\n flags = [];\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = p.parseByte();\n flags.push(flag);\n if ((flag & 8) > 0) {\n const repeatCount = p.parseByte();\n for (let j = 0; j < repeatCount; j += 1) {\n flags.push(flag);\n i += 1;\n }\n }\n }\n check_default.argument(flags.length === numberOfCoordinates, \"Bad flags.\");\n if (endPointIndices.length > 0) {\n const points = [];\n let point;\n if (numberOfCoordinates > 0) {\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = flags[i];\n point = {};\n point.onCurve = !!(flag & 1);\n point.lastPointOfContour = endPointIndices.indexOf(i) >= 0;\n points.push(point);\n }\n let px = 0;\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = flags[i];\n point = points[i];\n point.x = parseGlyphCoordinate(p, flag, px, 2, 16);\n px = point.x;\n }\n let py = 0;\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = flags[i];\n point = points[i];\n point.y = parseGlyphCoordinate(p, flag, py, 4, 32);\n py = point.y;\n }\n }\n glyph.points = points;\n } else {\n glyph.points = [];\n }\n } else if (glyph._numberOfContours === 0) {\n glyph.points = [];\n } else {\n glyph.isComposite = true;\n glyph.points = [];\n glyph.components = [];\n let moreComponents = true;\n while (moreComponents) {\n flags = p.parseUShort();\n const component = {\n glyphIndex: p.parseUShort(),\n xScale: 1,\n scale01: 0,\n scale10: 0,\n yScale: 1,\n dx: 0,\n dy: 0\n };\n if ((flags & 1) > 0) {\n if ((flags & 2) > 0) {\n component.dx = p.parseShort();\n component.dy = p.parseShort();\n } else {\n component.matchedPoints = [p.parseUShort(), p.parseUShort()];\n }\n } else {\n if ((flags & 2) > 0) {\n component.dx = p.parseChar();\n component.dy = p.parseChar();\n } else {\n component.matchedPoints = [p.parseByte(), p.parseByte()];\n }\n }\n if ((flags & 8) > 0) {\n component.xScale = component.yScale = p.parseF2Dot14();\n } else if ((flags & 64) > 0) {\n component.xScale = p.parseF2Dot14();\n component.yScale = p.parseF2Dot14();\n } else if ((flags & 128) > 0) {\n component.xScale = p.parseF2Dot14();\n component.scale01 = p.parseF2Dot14();\n component.scale10 = p.parseF2Dot14();\n component.yScale = p.parseF2Dot14();\n }\n glyph.components.push(component);\n moreComponents = !!(flags & 32);\n }\n if (flags & 256) {\n glyph.instructionLength = p.parseUShort();\n glyph.instructions = [];\n for (let i = 0; i < glyph.instructionLength; i += 1) {\n glyph.instructions.push(p.parseByte());\n }\n }\n }\n }\n function transformPoints(points, transform) {\n const newPoints = [];\n for (let i = 0; i < points.length; i += 1) {\n const pt = points[i];\n const newPt = {\n x: transform.xScale * pt.x + transform.scale10 * pt.y + transform.dx,\n y: transform.scale01 * pt.x + transform.yScale * pt.y + transform.dy,\n onCurve: pt.onCurve,\n lastPointOfContour: pt.lastPointOfContour\n };\n newPoints.push(newPt);\n }\n return newPoints;\n }\n function getContours(points) {\n const contours = [];\n let currentContour = [];\n for (let i = 0; i < points.length; i += 1) {\n const pt = points[i];\n currentContour.push(pt);\n if (pt.lastPointOfContour) {\n contours.push(currentContour);\n currentContour = [];\n }\n }\n check_default.argument(currentContour.length === 0, \"There are still points left in the current contour.\");\n return contours;\n }\n function getPath(points) {\n const p = new path_default();\n if (!points) {\n return p;\n }\n const contours = getContours(points);\n for (let contourIndex = 0; contourIndex < contours.length; ++contourIndex) {\n const contour = contours[contourIndex];\n let curr = contour[contour.length - 1];\n let next = contour[0];\n if (curr.onCurve) {\n p.moveTo(curr.x, curr.y);\n } else {\n if (next.onCurve) {\n p.moveTo(next.x, next.y);\n } else {\n const start = { x: (curr.x + next.x) * 0.5, y: (curr.y + next.y) * 0.5 };\n p.moveTo(start.x, start.y);\n }\n }\n for (let i = 0; i < contour.length; ++i) {\n curr = next;\n next = contour[(i + 1) % contour.length];\n if (curr.onCurve) {\n p.lineTo(curr.x, curr.y);\n } else {\n let next2 = next;\n if (!next.onCurve) {\n next2 = { x: (curr.x + next.x) * 0.5, y: (curr.y + next.y) * 0.5 };\n }\n p.quadraticCurveTo(curr.x, curr.y, next2.x, next2.y);\n }\n }\n p.closePath();\n }\n return p;\n }\n function buildPath(glyphs, glyph) {\n if (glyph.isComposite) {\n if (!_resolving.has(glyphs)) {\n _resolving.set(glyphs, /* @__PURE__ */ new Set());\n }\n const resolving = _resolving.get(glyphs);\n resolving.add(glyph.index);\n try {\n for (let j = 0; j < glyph.components.length; j += 1) {\n const component = glyph.components[j];\n if (resolving.has(component.glyphIndex)) {\n continue;\n }\n const componentGlyph = glyphs.get(component.glyphIndex);\n componentGlyph.getPath();\n if (componentGlyph.points) {\n let transformedPoints;\n if (component.matchedPoints === void 0) {\n transformedPoints = transformPoints(componentGlyph.points, component);\n } else {\n if (component.matchedPoints[0] > glyph.points.length - 1 || component.matchedPoints[1] > componentGlyph.points.length - 1) {\n throw Error(\"Matched points out of range in \" + glyph.name);\n }\n const firstPt = glyph.points[component.matchedPoints[0]];\n let secondPt = componentGlyph.points[component.matchedPoints[1]];\n const transform = {\n xScale: component.xScale,\n scale01: component.scale01,\n scale10: component.scale10,\n yScale: component.yScale,\n dx: 0,\n dy: 0\n };\n secondPt = transformPoints([secondPt], transform)[0];\n transform.dx = firstPt.x - secondPt.x;\n transform.dy = firstPt.y - secondPt.y;\n transformedPoints = transformPoints(componentGlyph.points, transform);\n }\n glyph.points = glyph.points.concat(transformedPoints);\n }\n }\n } finally {\n resolving.delete(glyph.index);\n }\n }\n return getPath(glyph.points);\n }\n function parseGlyfTableAll(data, start, loca, font) {\n const glyphs = new glyphset_default.GlyphSet(font);\n for (let i = 0; i < loca.length - 1; i += 1) {\n const offset = loca[i];\n const nextOffset = loca[i + 1];\n if (offset !== nextOffset) {\n glyphs.push(i, glyphset_default.ttfGlyphLoader(font, i, parseGlyph, data, start + offset, buildPath));\n } else {\n glyphs.push(i, glyphset_default.glyphLoader(font, i));\n }\n }\n return glyphs;\n }\n function parseGlyfTableOnLowMemory(data, start, loca, font) {\n const glyphs = new glyphset_default.GlyphSet(font);\n font._push = function(i) {\n const offset = loca[i];\n const nextOffset = loca[i + 1];\n if (offset !== nextOffset) {\n glyphs.push(i, glyphset_default.ttfGlyphLoader(font, i, parseGlyph, data, start + offset, buildPath));\n } else {\n glyphs.push(i, glyphset_default.glyphLoader(font, i));\n }\n };\n return glyphs;\n }\n function parseGlyfTable(data, start, loca, font, opt) {\n if (opt.lowMemory)\n return parseGlyfTableOnLowMemory(data, start, loca, font);\n else\n return parseGlyfTableAll(data, start, loca, font);\n }\n var glyf_default = { getPath, parse: parseGlyfTable };\n\n // src/variationprocessor.mjs\n var VariationProcessor = class {\n constructor(font) {\n this.font = font;\n }\n /**\n * Modifies a coords object to make sure that tags have a length of 4\n * @param {Object} coords - variation coordinates\n */\n normalizeCoordTags(coords) {\n for (const tag in coords) {\n if (tag.length < 4) {\n const padded = tag.padEnd(4, \" \");\n coords[padded] === void 0 && (coords[padded] = coords[tag]);\n delete coords[tag];\n }\n }\n }\n /**\n * Normalizes the coordinates from the axis ranges to a range of -1 to 1.\n * @param {Object} coords - The coordinates object to normalize.\n * @returns {Array<number>} The normalized coordinates as an array\n */\n getNormalizedCoords(coords) {\n if (!coords) {\n coords = this.font.variation.get();\n }\n let normalized = [];\n this.normalizeCoordTags(coords);\n for (let i = 0; i < this.fvar().axes.length; i++) {\n const axis = this.fvar().axes[i];\n let tagValue = coords[axis.tag];\n if (tagValue === void 0) {\n tagValue = axis.defaultValue;\n }\n if (tagValue < axis.defaultValue) {\n normalized.push((tagValue - axis.defaultValue + Number.EPSILON) / (axis.defaultValue - axis.minValue + Number.EPSILON));\n } else {\n normalized.push((tagValue - axis.defaultValue + Number.EPSILON) / (axis.maxValue - axis.defaultValue + Number.EPSILON));\n }\n }\n if (this.avar()) {\n for (let i = 0; i < this.avar().axisSegmentMaps.length; i++) {\n let segment = this.avar().axisSegmentMaps[i];\n for (let j = 0; j < segment.axisValueMaps.length; j++) {\n let pair = segment.axisValueMaps[j];\n if (j >= 1 && normalized[i] < pair.fromCoordinate) {\n let prev = segment.axisValueMaps[j - 1];\n normalized[i] = ((normalized[i] - prev.fromCoordinate) * (pair.toCoordinate - prev.toCoordinate) + Number.EPSILON) / (pair.fromCoordinate - prev.fromCoordinate + Number.EPSILON) + prev.toCoordinate;\n break;\n }\n }\n }\n }\n return normalized;\n }\n /**\n * Interpolates points within a glyph if deltas are not provided for all points.\n * @param {Array<Object>} points - The points to be interpolated.\n * @param {Array<Object>} glyphPoints - Reference points from the glyph.\n * @param {Object} deltaMap - A map indicating which points have deltas.\n */\n interpolatePoints(points, glyphPoints, deltaMap) {\n if (points.length === 0) {\n return;\n }\n let pointIndex = 0;\n while (pointIndex < points.length) {\n let firstPoint = pointIndex;\n let endPoint = pointIndex;\n let point = points[endPoint];\n while (!point.lastPointOfContour) {\n point = points[++endPoint];\n }\n while (pointIndex <= endPoint && !deltaMap[pointIndex]) {\n pointIndex++;\n }\n if (pointIndex > endPoint) {\n continue;\n }\n let firstDelta = pointIndex;\n let curDelta = pointIndex;\n pointIndex++;\n while (pointIndex <= endPoint) {\n if (deltaMap[pointIndex]) {\n this.deltaInterpolate(curDelta + 1, pointIndex - 1, curDelta, pointIndex, glyphPoints, points);\n curDelta = pointIndex;\n }\n pointIndex++;\n }\n if (curDelta === firstDelta) {\n this.deltaShift(firstPoint, endPoint, curDelta, glyphPoints, points);\n } else {\n this.deltaInterpolate(curDelta + 1, endPoint, curDelta, firstDelta, glyphPoints, points);\n if (firstDelta > 0) {\n this.deltaInterpolate(firstPoint, firstDelta - 1, curDelta, firstDelta, glyphPoints, points);\n }\n }\n pointIndex = endPoint + 1;\n }\n }\n /**\n * Interpolates delta values between two points.\n * @param {number} p1 - Start point index for interpolation.\n * @param {number} p2 - End point index for interpolation.\n * @param {number} ref1 - Reference point index for the start delta.\n * @param {number} ref2 - Reference point index for the end delta.\n * @param {Array<Object>} glyphPoints - Reference points from the glyph.\n * @param {Array<Object>} points - The points to be adjusted.\n */\n deltaInterpolate(p1, p2, ref1, ref2, glyphPoints, points) {\n if (p1 > p2) {\n return;\n }\n let iterable = [\"x\", \"y\"];\n for (let i = 0; i < iterable.length; i++) {\n let k = iterable[i];\n if (glyphPoints[ref1][k] > glyphPoints[ref2][k]) {\n var p = ref1;\n ref1 = ref2;\n ref2 = p;\n }\n let in1 = glyphPoints[ref1][k];\n let in2 = glyphPoints[ref2][k];\n let out1 = points[ref1][k];\n let out2 = points[ref2][k];\n if (in1 !== in2 || out1 === out2) {\n let scale = in1 === in2 ? 0 : (out2 - out1) / (in2 - in1);\n for (let p3 = p1; p3 <= p2; p3++) {\n let out = glyphPoints[p3][k];\n if (out <= in1) {\n out += out1 - in1;\n } else if (out >= in2) {\n out += out2 - in2;\n } else {\n out = out1 + (out - in1) * scale;\n }\n points[p3][k] = out;\n }\n }\n }\n }\n /**\n * Applies a delta shift to a range of points based on a reference point.\n * @param {number} p1 - Start point index for shifting.\n * @param {number} p2 - End point index for shifting.\n * @param {number} ref - Reference point index.\n * @param {Array<Object>} glyphPoints - Reference points from the glyph.\n * @param {Array<Object>} points - The points to be shifted.\n */\n deltaShift(p1, p2, ref, glyphPoints, points) {\n let deltaX = points[ref].x - glyphPoints[ref].x;\n let deltaY = points[ref].y - glyphPoints[ref].y;\n if (deltaX === 0 && deltaY === 0) {\n return;\n }\n for (let p = p1; p <= p2; p++) {\n if (p !== ref) {\n points[p].x += deltaX;\n points[p].y += deltaY;\n }\n }\n }\n /**\n * Transforms glyph components based on variation data.\n * @param {Glyph} glyph - The composite glyph to transform.\n * @param {Array<Object>} transformedPoints - Points that are already transformed.\n * @param {Object} coords - Variation coordinates.\n * @param {Array<number>} tuplePoints - Points that are part of the tuple.\n * @param {Object} header - Header information from the variation data.\n * @param {number} factor - The scaling factor for the transformation.\n */\n transformComponents(glyph, transformedPoints, coords, tuplePoints, header, factor) {\n let pointsIndex = 0;\n for (let c = 0; c < glyph.components.length; c++) {\n const component = glyph.components[c];\n const componentGlyph = this.font.glyphs.get(component.glyphIndex);\n const componentTransform = copyComponent(component);\n const deltaIndex = tuplePoints.indexOf(c);\n if (deltaIndex > -1) {\n componentTransform.dx += Math.round(header.deltas[deltaIndex] * factor);\n componentTransform.dy += Math.round(header.deltasY[deltaIndex] * factor);\n }\n const transformedComponentPoints = transformPoints(this.getTransform(componentGlyph, coords).points, componentTransform);\n transformedPoints.splice(pointsIndex, transformedComponentPoints.length, ...transformedComponentPoints);\n pointsIndex += componentGlyph.points.length;\n }\n }\n applyTupleVariationStore(variationData, points, coords, flavor = \"gvar\", args = {}) {\n if (!coords) {\n coords = this.font.variation.get();\n }\n const normalizedCoords = this.getNormalizedCoords(coords);\n const { headers, sharedPoints } = variationData;\n const axisCount = this.fvar().axes.length;\n let transformedPoints;\n if (flavor === \"gvar\") {\n transformedPoints = points.map(copyPoint);\n } else if (flavor === \"cvar\") {\n transformedPoints = [...points];\n }\n for (let h = 0; h < headers.length; h++) {\n const header = headers[h];\n let factor = 1;\n for (let a = 0; a < axisCount; a++) {\n let tupleCoords = [0];\n switch (flavor) {\n case \"gvar\":\n tupleCoords = header.peakTuple ? header.peakTuple : this.gvar().sharedTuples[header.sharedTupleRecordsIndex];\n break;\n case \"cvar\":\n tupleCoords = header.peakTuple;\n break;\n }\n if (tupleCoords[a] === 0) {\n continue;\n }\n if (normalizedCoords[a] === 0) {\n factor = 0;\n break;\n }\n if (!header.intermediateStartTuple) {\n if (normalizedCoords[a] < Math.min(0, tupleCoords[a]) || normalizedCoords[a] > Math.max(0, tupleCoords[a])) {\n factor = 0;\n break;\n }\n factor = (factor * normalizedCoords[a] + Number.EPSILON) / (tupleCoords[a] + Number.EPSILON);\n } else {\n if (normalizedCoords[a] < header.intermediateStartTuple[a] || normalizedCoords[a] > header.intermediateEndTuple[a]) {\n factor = 0;\n break;\n } else if (normalizedCoords[a] < tupleCoords[a]) {\n factor = factor * (normalizedCoords[a] - header.intermediateStartTuple[a] + Number.EPSILON) / (tupleCoords[a] - header.intermediateStartTuple[a] + Number.EPSILON);\n } else {\n factor = factor * (header.intermediateEndTuple[a] - normalizedCoords[a] + Number.EPSILON) / (header.intermediateEndTuple[a] - tupleCoords[a] + Number.EPSILON);\n }\n }\n }\n if (factor === 0) {\n continue;\n }\n const tuplePoints = header.privatePoints.length ? header.privatePoints : sharedPoints;\n if (flavor === \"gvar\" && args.glyph && args.glyph.isComposite) {\n this.transformComponents(args.glyph, transformedPoints, coords, tuplePoints, header, factor);\n } else if (tuplePoints.length === 0) {\n for (let i = 0; i < transformedPoints.length; i++) {\n const point = transformedPoints[i];\n if (flavor === \"gvar\") {\n transformedPoints[i] = {\n x: Math.round(point.x + header.deltas[i] * factor),\n y: Math.round(point.y + header.deltasY[i] * factor),\n onCurve: point.onCurve,\n lastPointOfContour: point.lastPointOfContour\n };\n } else if (flavor === \"cvar\") {\n transformedPoints[i] = Math.round(point + header.deltas[i] * factor);\n }\n }\n } else {\n let interpolatedPoints;\n if (flavor === \"gvar\") {\n interpolatedPoints = transformedPoints.map(copyPoint);\n } else if (flavor === \"cvar\") {\n interpolatedPoints = transformedPoints;\n }\n const deltaMap = Array(points.length).fill(false);\n for (let i = 0; i < tuplePoints.length; i++) {\n let pointIndex = tuplePoints[i];\n if (pointIndex < points.length) {\n let point = interpolatedPoints[pointIndex];\n if (flavor === \"gvar\") {\n deltaMap[pointIndex] = true;\n point.x += header.deltas[i] * factor;\n point.y += header.deltasY[i] * factor;\n } else if (flavor === \"cvar\") {\n transformedPoints[pointIndex] = Math.round(point + header.deltas[i] * factor);\n }\n }\n }\n if (flavor === \"gvar\") {\n this.interpolatePoints(interpolatedPoints, transformedPoints, deltaMap);\n for (let i = 0; i < points.length; i++) {\n let deltaX = interpolatedPoints[i].x - transformedPoints[i].x;\n let deltaY = interpolatedPoints[i].y - transformedPoints[i].y;\n transformedPoints[i].x = Math.round(transformedPoints[i].x + deltaX);\n transformedPoints[i].y = Math.round(transformedPoints[i].y + deltaY);\n }\n }\n }\n }\n return transformedPoints;\n }\n /**\n * Retrieves a transformed copy of a glyph based on the provided variation coordinates, or the glyph itself if no variation was applied\n * @param {opentype.Glyph|number} glyph - Glyph or index of glyph to transform.\n * @param {Object} coords - Variation coords object (will fall back to variation coords in the defaultRenderOptions)\n * @returns {opentype.Glyph} - The transformed glyph.\n */\n getTransform(glyph, coords) {\n if (Number.isInteger(glyph)) {\n glyph = this.font.glyphs.get(glyph);\n }\n const hasBlend = glyph.getBlendPath;\n const hasPoints = !!(glyph.points && glyph.points.length);\n let transformedGlyph = glyph;\n if (hasBlend || hasPoints) {\n if (!coords) {\n coords = this.font.variation.get();\n }\n if (hasPoints) {\n const variationData = this.gvar() && this.gvar().glyphVariations[glyph.index];\n if (variationData) {\n const glyphPoints = glyph.points;\n let transformedPoints = this.applyTupleVariationStore(variationData, glyphPoints, coords, \"gvar\", { glyph });\n transformedGlyph = new glyph_default(Object.assign({}, glyph, { points: transformedPoints, path: getPath(transformedPoints) }));\n }\n } else if (hasBlend) {\n const blendPath = glyph.getBlendPath(coords);\n transformedGlyph = new glyph_default(Object.assign({}, glyph, { path: blendPath }));\n }\n }\n if (this.font.tables.hvar) {\n glyph._advanceWidth = typeof glyph._advanceWidth !== \"undefined\" ? glyph._advanceWidth : glyph.advanceWidth;\n glyph.advanceWidth = transformedGlyph.advanceWidth = Math.round(glyph._advanceWidth + this.getVariableAdjustment(transformedGlyph.index, \"hvar\", \"advanceWidth\", coords));\n glyph._leftSideBearing = typeof glyph._leftSideBearing !== \"undefined\" ? glyph._leftSideBearing : glyph.leftSideBearing;\n glyph.leftSideBearing = transformedGlyph.leftSideBearing = Math.round(glyph._leftSideBearing + this.getVariableAdjustment(transformedGlyph.index, \"hvar\", \"lsb\", coords));\n }\n return transformedGlyph;\n }\n getCvarTransform(coords) {\n const cvt = this.font.tables.cvt;\n const variationData = this.cvar();\n if (!cvt || !cvt.length || !variationData || !variationData.headers.length) return cvt;\n return this.applyTupleVariationStore(variationData, cvt, coords, \"cvar\");\n }\n /**\n * Calculates the variable adjustment for a glyph property from variation data.\n * @param {number} gid - Glyph ID.\n * @param {string} tableName - The name of the variation data table.\n * @param {string} parameter - The property to adjust.\n * @param {Object} coords - Variation coordinates.\n * @returns {number} - The calculated adjustment.\n */\n getVariableAdjustment(gid, tableName, parameter, coords) {\n coords = coords || this.font.variation.get();\n let outerIndex, innerIndex;\n const table = this.font.tables[tableName];\n if (!table) {\n throw Error(`trying to get variation adjustment from non-existent table \"${table}\"`);\n }\n if (!table.itemVariationStore) {\n throw Error(`trying to get variation adjustment from table \"${table}\" which does not have an itemVariationStore`);\n }\n const mapSize = table[parameter] && table[parameter].map.length;\n if (mapSize) {\n let i = gid;\n if (i >= mapSize) {\n i = mapSize - 1;\n }\n ({ outerIndex, innerIndex } = table[parameter].map[i]);\n } else {\n outerIndex = 0;\n innerIndex = gid;\n }\n return this.getDelta(table.itemVariationStore, outerIndex, innerIndex, coords);\n }\n /**\n * Retrieves the delta value from a variation store.\n * @param {Object} itemStore - The item variation store.\n * @param {number} outerIndex - The outer index in the variation subtables.\n * @param {number} innerIndex - The inner index in the delta sets.\n * @param {Object} coords - Variation coordinates.\n * @returns {number} - The delta value.\n */\n getDelta(itemStore, outerIndex, innerIndex, coords) {\n if (outerIndex >= itemStore.itemVariationSubtables.length) {\n return 0;\n }\n let varData = itemStore.itemVariationSubtables[outerIndex];\n if (innerIndex >= varData.deltaSets.length) {\n return 0;\n }\n let deltaSet = varData.deltaSets[innerIndex];\n let blendVector = this.getBlendVector(itemStore, outerIndex, coords);\n let netAdjustment = 0;\n for (let master = 0; master < varData.regionIndexes.length; master++) {\n netAdjustment += deltaSet[master] * blendVector[master];\n }\n return netAdjustment;\n }\n /**\n * Calculates the blend vector for a set of variation coordinates.\n * @param {Object} itemStore - The item variation store.\n * @param {number} itemIndex - Index of the current item in the variation subtables.\n * @param {Object} coords - Variation coordinates.\n * @returns {Array<number>} - The blend vector for the given coordinates.\n */\n getBlendVector(itemStore, itemIndex, coords) {\n if (!coords) {\n coords = this.font.variation.get();\n }\n let varData = itemStore.itemVariationSubtables[itemIndex];\n const normalizedCoords = this.getNormalizedCoords(coords);\n let blendVector = [];\n for (let master = 0; master < varData.regionIndexes.length; master++) {\n let scalar = 1;\n let regionIndex = varData.regionIndexes[master];\n let axes = itemStore.variationRegions[regionIndex].regionAxes;\n for (let j = 0; j < axes.length; j++) {\n let axis = axes[j];\n let axisScalar;\n if (axis.startCoord > axis.peakCoord || axis.peakCoord > axis.endCoord) {\n axisScalar = 1;\n } else if (axis.startCoord < 0 && axis.endCoord > 0 && axis.peakCoord !== 0) {\n axisScalar = 1;\n } else if (axis.peakCoord === 0) {\n axisScalar = 1;\n } else if (normalizedCoords[j] < axis.startCoord || normalizedCoords[j] > axis.endCoord) {\n axisScalar = 0;\n } else {\n if (normalizedCoords[j] === axis.peakCoord) {\n axisScalar = 1;\n } else if (normalizedCoords[j] < axis.peakCoord) {\n axisScalar = (normalizedCoords[j] - axis.startCoord + Number.EPSILON) / (axis.peakCoord - axis.startCoord + Number.EPSILON);\n } else {\n axisScalar = (axis.endCoord - normalizedCoords[j] + Number.EPSILON) / (axis.endCoord - axis.peakCoord + Number.EPSILON);\n }\n }\n scalar *= axisScalar;\n }\n blendVector[master] = scalar;\n }\n return blendVector;\n }\n /**\n * Helper method that returns the font's avar table if present\n * @returns {Object|undefined}\n */\n avar() {\n return this.font.tables.avar;\n }\n /**\n * Helper method that returns the font's cvar table if present\n * @returns {Object|undefined}\n */\n cvar() {\n return this.font.tables.cvar;\n }\n /**\n * Helper method that returns the font's fvar table if present\n * @returns {Object|undefined}\n */\n fvar() {\n return this.font.tables.fvar;\n }\n /**\n * Helper method that returns the font's gvar table if present\n * @returns {Object|undefined}\n */\n gvar() {\n return this.font.tables.gvar;\n }\n /**\n * Helper method that returns the font's hvar table if present\n * @returns {Object|undefined}\n */\n hvar() {\n return this.font.tables.hvar;\n }\n };\n\n // src/variation.mjs\n var VariationManager = class {\n constructor(font) {\n this.font = font;\n this.process = new VariationProcessor(this.font);\n this.activateDefaultVariation();\n this.getTransform = this.process.getTransform.bind(this.process);\n }\n /**\n * Tries to determine the default instance and sets its variation data as the font.defaultRenderOptions.\n * If not defaultInstance can be determined, the default coordinates of all axes are used.\n */\n activateDefaultVariation() {\n const defaultInstance = this.getDefaultInstanceIndex();\n if (defaultInstance > -1) {\n this.set(defaultInstance);\n } else {\n this.set(this.getDefaultCoordinates());\n }\n }\n /**\n * Retrieves the default coordinates for the font's variation axes.\n * @returns {Object} An object mapping axis tags to their default values.\n */\n getDefaultCoordinates() {\n return this.fvar().axes.reduce((acc, axis) => {\n acc[axis.tag] = axis.defaultValue;\n return acc;\n }, {});\n }\n /**\n * Gets the index of the default variation instance or -1 if not able to determine\n * @returns {integer} default index or -1\n */\n getDefaultInstanceIndex() {\n const defaultCoordinates = this.getDefaultCoordinates();\n let defaultInstanceIndex = this.getInstanceIndex(defaultCoordinates);\n if (defaultInstanceIndex < 0) {\n defaultInstanceIndex = this.fvar().instances.findIndex((instance) => instance.name && instance.name.en === \"Regular\");\n }\n return defaultInstanceIndex;\n }\n /**\n * Retrieves the index of the variation instance matching the coordinates object or -1 if not able to determine\n * @param {integer|Object} coordinates An object where keys are axis tags and values are the corresponding variation values.\n * @returns {integer} The index of the matching instance or -1 if no match is found.\n */\n getInstanceIndex(coordinates) {\n return this.fvar().instances.findIndex(\n (instance) => Object.keys(coordinates).every(\n (axis) => instance.coordinates[axis] === coordinates[axis]\n )\n );\n }\n /**\n * Retrieves a variation instance by its zero-based index\n * @param {integer} index - zero-based index of the variation instance\n * @returns {Object} - variation instance or null if the index is invalid.\n */\n getInstance(index) {\n return this.fvar().instances && this.fvar().instances[index];\n }\n /**\n * Set the variation coordinates to use by default for rendering in the font.defaultRenderOptions\n * @param {integer|Object} instanceIdOrObject Either the zero-based index of a variation instance or an object with axis tags as keys and variation values as values\n */\n set(instanceIdOrObject) {\n let variationData;\n if (Number.isInteger(instanceIdOrObject)) {\n const instance = this.getInstance(instanceIdOrObject);\n if (!instance) {\n throw Error(`Invalid instance index ${instanceIdOrObject}`);\n }\n variationData = { ...instance.coordinates };\n } else {\n variationData = instanceIdOrObject;\n this.process.normalizeCoordTags(variationData);\n }\n variationData = Object.assign(\n {},\n this.font.defaultRenderOptions.variation,\n variationData\n );\n this.font.defaultRenderOptions = Object.assign(\n {},\n this.font.defaultRenderOptions,\n { variation: variationData }\n );\n }\n /**\n * Returns the variation coordinates currently set in the font.defaultRenderOptions\n * @returns {Object}\n */\n get() {\n return Object.assign({}, this.font.defaultRenderOptions.variation);\n }\n /**\n * Helper method that returns the font's avar table if present\n * @returns {Object|undefined}\n */\n avar() {\n return this.font.tables.avar;\n }\n /**\n * Helper method that returns the font's cvar table if present\n * @returns {Object|undefined}\n */\n cvar() {\n return this.font.tables.cvar;\n }\n /**\n * Helper method that returns the font's fvar table if present\n * @returns {Object|undefined}\n */\n fvar() {\n return this.font.tables.fvar;\n }\n /**\n * Helper method that returns the font's gvar table if present\n * @returns {Object|undefined}\n */\n gvar() {\n return this.font.tables.gvar;\n }\n /**\n * Helper method that returns the font's hvar table if present\n * @returns {Object|undefined}\n */\n hvar() {\n return this.font.tables.hvar;\n }\n };\n\n // src/hintingtt.mjs\n var MAX_INSTRUCTIONS = 1e6;\n var MAX_CALL_DEPTH2 = 64;\n var MAX_LOOP_COUNT = 1e4;\n var instructionTable;\n var exec;\n var execGlyph;\n var execComponent;\n function Hinting(font) {\n this.font = font;\n this.getCommands = function(hPoints) {\n return glyf_default.getPath(hPoints).commands;\n };\n this._fpgmState = this._prepState = void 0;\n this._errorState = 0;\n }\n function roundOff(v) {\n return v;\n }\n function roundToGrid(v) {\n return Math.sign(v) * Math.round(Math.abs(v));\n }\n function roundToDoubleGrid(v) {\n return Math.sign(v) * Math.round(Math.abs(v * 2)) / 2;\n }\n function roundToHalfGrid(v) {\n return Math.sign(v) * (Math.round(Math.abs(v) + 0.5) - 0.5);\n }\n function roundUpToGrid(v) {\n return Math.sign(v) * Math.ceil(Math.abs(v));\n }\n function roundDownToGrid(v) {\n return Math.sign(v) * Math.floor(Math.abs(v));\n }\n var roundSuper = function(v) {\n const period = this.srPeriod;\n let phase = this.srPhase;\n const threshold = this.srThreshold;\n let sign = 1;\n if (v < 0) {\n v = -v;\n sign = -1;\n }\n v += threshold - phase;\n v = Math.trunc(v / period) * period;\n v += phase;\n if (v < 0) return phase * sign;\n return v * sign;\n };\n var xUnitVector = {\n x: 1,\n y: 0,\n axis: \"x\",\n // Gets the projected distance between two points.\n // o1/o2 ... if true, respective original position is used.\n distance: function(p1, p2, o1, o2) {\n return (o1 ? p1.xo : p1.x) - (o2 ? p2.xo : p2.x);\n },\n // Moves point p so the moved position has the same relative\n // position to the moved positions of rp1 and rp2 than the\n // original positions had.\n //\n // See APPENDIX on INTERPOLATE at the bottom of this file.\n interpolate: function(p, rp1, rp2, pv) {\n let do1;\n let do2;\n let doa1;\n let doa2;\n let dm1;\n let dm2;\n let dt;\n if (!pv || pv === this) {\n do1 = p.xo - rp1.xo;\n do2 = p.xo - rp2.xo;\n dm1 = rp1.x - rp1.xo;\n dm2 = rp2.x - rp2.xo;\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n if (dt === 0) {\n p.x = p.xo + (dm1 + dm2) / 2;\n return;\n }\n p.x = p.xo + (dm1 * doa2 + dm2 * doa1) / dt;\n return;\n }\n do1 = pv.distance(p, rp1, true, true);\n do2 = pv.distance(p, rp2, true, true);\n dm1 = pv.distance(rp1, rp1, false, true);\n dm2 = pv.distance(rp2, rp2, false, true);\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n if (dt === 0) {\n xUnitVector.setRelative(p, p, (dm1 + dm2) / 2, pv, true);\n return;\n }\n xUnitVector.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true);\n },\n // Slope of line normal to this\n normalSlope: Number.NEGATIVE_INFINITY,\n // Sets the point 'p' relative to point 'rp'\n // by the distance 'd'.\n //\n // See APPENDIX on SETRELATIVE at the bottom of this file.\n //\n // p ... point to set\n // rp ... reference point\n // d ... distance on projection vector\n // pv ... projection vector (undefined = this)\n // org ... if true, uses the original position of rp as reference.\n setRelative: function(p, rp, d, pv, org) {\n if (!pv || pv === this) {\n p.x = (org ? rp.xo : rp.x) + d;\n return;\n }\n const rpx = org ? rp.xo : rp.x;\n const rpy = org ? rp.yo : rp.y;\n const rpdx = rpx + d * pv.x;\n const rpdy = rpy + d * pv.y;\n p.x = rpdx + (p.y - rpdy) / pv.normalSlope;\n },\n // Slope of vector line.\n slope: 0,\n // Touches the point p.\n touch: function(p) {\n p.xTouched = true;\n },\n // Tests if a point p is touched.\n touched: function(p) {\n return p.xTouched;\n },\n // Untouches the point p.\n untouch: function(p) {\n p.xTouched = false;\n }\n };\n var yUnitVector = {\n x: 0,\n y: 1,\n axis: \"y\",\n // Gets the projected distance between two points.\n // o1/o2 ... if true, respective original position is used.\n distance: function(p1, p2, o1, o2) {\n return (o1 ? p1.yo : p1.y) - (o2 ? p2.yo : p2.y);\n },\n // Moves point p so the moved position has the same relative\n // position to the moved positions of rp1 and rp2 than the\n // original positions had.\n //\n // See APPENDIX on INTERPOLATE at the bottom of this file.\n interpolate: function(p, rp1, rp2, pv) {\n let do1;\n let do2;\n let doa1;\n let doa2;\n let dm1;\n let dm2;\n let dt;\n if (!pv || pv === this) {\n do1 = p.yo - rp1.yo;\n do2 = p.yo - rp2.yo;\n dm1 = rp1.y - rp1.yo;\n dm2 = rp2.y - rp2.yo;\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n if (dt === 0) {\n p.y = p.yo + (dm1 + dm2) / 2;\n return;\n }\n p.y = p.yo + (dm1 * doa2 + dm2 * doa1) / dt;\n return;\n }\n do1 = pv.distance(p, rp1, true, true);\n do2 = pv.distance(p, rp2, true, true);\n dm1 = pv.distance(rp1, rp1, false, true);\n dm2 = pv.distance(rp2, rp2, false, true);\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n if (dt === 0) {\n yUnitVector.setRelative(p, p, (dm1 + dm2) / 2, pv, true);\n return;\n }\n yUnitVector.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true);\n },\n // Slope of line normal to this.\n normalSlope: 0,\n // Sets the point 'p' relative to point 'rp'\n // by the distance 'd'\n //\n // See APPENDIX on SETRELATIVE at the bottom of this file.\n //\n // p ... point to set\n // rp ... reference point\n // d ... distance on projection vector\n // pv ... projection vector (undefined = this)\n // org ... if true, uses the original position of rp as reference.\n setRelative: function(p, rp, d, pv, org) {\n if (!pv || pv === this) {\n p.y = (org ? rp.yo : rp.y) + d;\n return;\n }\n const rpx = org ? rp.xo : rp.x;\n const rpy = org ? rp.yo : rp.y;\n const rpdx = rpx + d * pv.x;\n const rpdy = rpy + d * pv.y;\n p.y = rpdy + pv.normalSlope * (p.x - rpdx);\n },\n // Slope of vector line.\n slope: Number.POSITIVE_INFINITY,\n // Touches the point p.\n touch: function(p) {\n p.yTouched = true;\n },\n // Tests if a point p is touched.\n touched: function(p) {\n return p.yTouched;\n },\n // Untouches the point p.\n untouch: function(p) {\n p.yTouched = false;\n }\n };\n Object.freeze(xUnitVector);\n Object.freeze(yUnitVector);\n function UnitVector(x, y) {\n this.x = x;\n this.y = y;\n this.axis = void 0;\n this.slope = y / x;\n this.normalSlope = -x / y;\n Object.freeze(this);\n }\n UnitVector.prototype.distance = function(p1, p2, o1, o2) {\n return this.x * xUnitVector.distance(p1, p2, o1, o2) + this.y * yUnitVector.distance(p1, p2, o1, o2);\n };\n UnitVector.prototype.interpolate = function(p, rp1, rp2, pv) {\n let dm1;\n let dm2;\n let do1;\n let do2;\n let doa1;\n let doa2;\n let dt;\n do1 = pv.distance(p, rp1, true, true);\n do2 = pv.distance(p, rp2, true, true);\n dm1 = pv.distance(rp1, rp1, false, true);\n dm2 = pv.distance(rp2, rp2, false, true);\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n if (dt === 0) {\n this.setRelative(p, p, (dm1 + dm2) / 2, pv, true);\n return;\n }\n this.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true);\n };\n UnitVector.prototype.setRelative = function(p, rp, d, pv, org) {\n pv = pv || this;\n const rpx = org ? rp.xo : rp.x;\n const rpy = org ? rp.yo : rp.y;\n const rpdx = rpx + d * pv.x;\n const rpdy = rpy + d * pv.y;\n const pvns = pv.normalSlope;\n const fvs = this.slope;\n const px = p.x;\n const py = p.y;\n p.x = (fvs * px - pvns * rpdx + rpdy - py) / (fvs - pvns);\n p.y = fvs * (p.x - px) + py;\n };\n UnitVector.prototype.touch = function(p) {\n p.xTouched = true;\n p.yTouched = true;\n };\n function getUnitVector(x, y) {\n const d = Math.sqrt(x * x + y * y);\n x /= d;\n y /= d;\n if (x === 1 && y === 0) return xUnitVector;\n else if (x === 0 && y === 1) return yUnitVector;\n else return new UnitVector(x, y);\n }\n function HPoint(x, y, lastPointOfContour, onCurve) {\n this.x = this.xo = Math.round(x * 64) / 64;\n this.y = this.yo = Math.round(y * 64) / 64;\n this.lastPointOfContour = lastPointOfContour;\n this.onCurve = onCurve;\n this.prevPointOnContour = void 0;\n this.nextPointOnContour = void 0;\n this.xTouched = false;\n this.yTouched = false;\n Object.preventExtensions(this);\n }\n HPoint.prototype.nextTouched = function(v) {\n let p = this.nextPointOnContour;\n while (!v.touched(p) && p !== this) p = p.nextPointOnContour;\n return p;\n };\n HPoint.prototype.prevTouched = function(v) {\n let p = this.prevPointOnContour;\n while (!v.touched(p) && p !== this) p = p.prevPointOnContour;\n return p;\n };\n var HPZero = Object.freeze(new HPoint(0, 0));\n var defaultState = {\n cvCutIn: 17 / 16,\n // control value cut in\n deltaBase: 9,\n deltaShift: 0.125,\n loop: 1,\n // loops some instructions\n minDis: 1,\n // minimum distance\n autoFlip: true\n };\n function State(env, prog) {\n this.env = env;\n this.stack = [];\n this.prog = prog;\n switch (env) {\n case \"glyf\":\n this.zp0 = this.zp1 = this.zp2 = 1;\n this.rp0 = this.rp1 = this.rp2 = 0;\n /* fall through */\n case \"prep\":\n this.fv = this.pv = this.dpv = xUnitVector;\n this.round = roundToGrid;\n }\n }\n Hinting.prototype.exec = function(glyph, ppem) {\n if (typeof ppem !== \"number\") {\n throw new Error(\"Point size is not a number!\");\n }\n if (this._errorState > 2) return;\n const font = this.font;\n let prepState = this._prepState;\n if (!prepState || prepState.ppem !== ppem) {\n let fpgmState = this._fpgmState;\n if (!fpgmState) {\n State.prototype = defaultState;\n fpgmState = this._fpgmState = new State(\"fpgm\", font.tables.fpgm);\n fpgmState.funcs = [];\n fpgmState.font = font;\n fpgmState.instructionCount = 0;\n fpgmState.callDepth = 0;\n if (false) {\n console.log(\"---EXEC FPGM---\");\n fpgmState.step = -1;\n }\n try {\n exec(fpgmState);\n } catch (e) {\n console.log(\"Hinting error in FPGM:\" + e);\n this._errorState = 3;\n return;\n }\n }\n State.prototype = fpgmState;\n prepState = this._prepState = new State(\"prep\", font.tables.prep);\n prepState.ppem = ppem;\n prepState.instructionCount = 0;\n prepState.callDepth = 0;\n const oCvt = font.variation && font.variation.process.getCvarTransform() || font.tables.cvt;\n if (oCvt) {\n const cvt = prepState.cvt = new Array(oCvt.length);\n const scale = ppem / font.unitsPerEm;\n for (let c = 0; c < oCvt.length; c++) {\n cvt[c] = oCvt[c] * scale;\n }\n } else {\n prepState.cvt = [];\n }\n if (false) {\n console.log(\"---EXEC PREP---\");\n prepState.step = -1;\n }\n try {\n exec(prepState);\n } catch (e) {\n if (this._errorState < 2) {\n console.log(\"Hinting error in PREP:\" + e);\n }\n this._errorState = 2;\n }\n }\n if (this._errorState > 1) return;\n try {\n return execGlyph(glyph, prepState);\n } catch (e) {\n if (this._errorState < 1) {\n console.log(\"Hinting error:\" + e);\n console.log(\"Note: further hinting errors are silenced\");\n }\n this._errorState = 1;\n return void 0;\n }\n };\n execGlyph = function(glyph, prepState) {\n const xScale = prepState.ppem / prepState.font.unitsPerEm;\n const yScale = xScale;\n let components = glyph.components;\n let contours;\n let gZone;\n let state;\n State.prototype = prepState;\n if (!components) {\n state = new State(\"glyf\", glyph.instructions);\n state.instructionCount = 0;\n state.callDepth = 0;\n if (false) {\n console.log(\"---EXEC GLYPH---\");\n state.step = -1;\n }\n execComponent(glyph, state, xScale, yScale);\n gZone = state.gZone;\n } else {\n const font = prepState.font;\n gZone = [];\n contours = [];\n for (let i = 0; i < components.length; i++) {\n const c = components[i];\n const cg = font.glyphs.get(c.glyphIndex);\n state = new State(\"glyf\", cg.instructions);\n state.instructionCount = 0;\n state.callDepth = 0;\n if (false) {\n console.log(\"---EXEC COMP \" + i + \"---\");\n state.step = -1;\n }\n execComponent(cg, state, xScale, yScale);\n const dx = Math.round(c.dx * xScale);\n const dy = Math.round(c.dy * yScale);\n const gz = state.gZone;\n const cc = state.contours;\n for (let pi = 0; pi < gz.length; pi++) {\n const p = gz[pi];\n p.xTouched = p.yTouched = false;\n p.xo = p.x = p.x + dx;\n p.yo = p.y = p.y + dy;\n }\n const gLen = gZone.length;\n gZone.push.apply(gZone, gz);\n for (let j = 0; j < cc.length; j++) {\n contours.push(cc[j] + gLen);\n }\n }\n if (glyph.instructions && !state.inhibitGridFit) {\n state = new State(\"glyf\", glyph.instructions);\n state.gZone = state.z0 = state.z1 = state.z2 = gZone;\n state.contours = contours;\n gZone.push(\n new HPoint(0, 0),\n new HPoint(Math.round(glyph.advanceWidth * xScale), 0)\n );\n if (false) {\n console.log(\"---EXEC COMPOSITE---\");\n state.step = -1;\n }\n exec(state);\n gZone.length -= 2;\n }\n }\n return gZone;\n };\n execComponent = function(glyph, state, xScale, yScale) {\n const points = glyph.points || [];\n const pLen = points.length;\n const gZone = state.gZone = state.z0 = state.z1 = state.z2 = [];\n const contours = state.contours = [];\n let cp;\n for (let i = 0; i < pLen; i++) {\n cp = points[i];\n gZone[i] = new HPoint(\n cp.x * xScale,\n cp.y * yScale,\n cp.lastPointOfContour,\n cp.onCurve\n );\n }\n let sp;\n let np;\n for (let i = 0; i < pLen; i++) {\n cp = gZone[i];\n if (!sp) {\n sp = cp;\n contours.push(i);\n }\n if (cp.lastPointOfContour) {\n cp.nextPointOnContour = sp;\n sp.prevPointOnContour = cp;\n sp = void 0;\n } else {\n np = gZone[i + 1];\n cp.nextPointOnContour = np;\n np.prevPointOnContour = cp;\n }\n }\n if (state.inhibitGridFit) return;\n if (false) {\n console.log(\"PROCESSING GLYPH\", state.stack);\n for (let i = 0; i < pLen; i++) {\n console.log(i, gZone[i].x, gZone[i].y);\n }\n }\n gZone.push(\n new HPoint(0, 0),\n new HPoint(Math.round(glyph.advanceWidth * xScale), 0)\n );\n exec(state);\n gZone.length -= 2;\n if (false) {\n console.log(\"FINISHED GLYPH\", state.stack);\n for (let i = 0; i < pLen; i++) {\n console.log(i, gZone[i].x, gZone[i].y);\n }\n }\n };\n exec = function(state) {\n let prog = state.prog;\n if (!prog) return;\n const pLen = prog.length;\n let ins;\n for (state.ip = 0; state.ip < pLen; state.ip++) {\n if (++state.instructionCount > MAX_INSTRUCTIONS) {\n throw new Error(\n \"Hinting instructions exceeded maximum of \" + MAX_INSTRUCTIONS\n );\n }\n if (false) state.step++;\n ins = instructionTable[prog[state.ip]];\n if (!ins) {\n throw new Error(\n \"unknown instruction: 0x\" + Number(prog[state.ip]).toString(16)\n );\n }\n ins(state);\n }\n };\n function initTZone(state) {\n const tZone = state.tZone = new Array(state.gZone.length);\n for (let i = 0; i < tZone.length; i++) {\n tZone[i] = new HPoint(0, 0);\n }\n }\n function skip(state, handleElse) {\n const prog = state.prog;\n let ip = state.ip;\n let nesting = 1;\n let ins;\n do {\n ins = prog[++ip];\n if (ins === 88)\n nesting++;\n else if (ins === 89)\n nesting--;\n else if (ins === 64)\n ip += prog[ip + 1] + 1;\n else if (ins === 65)\n ip += 2 * prog[ip + 1] + 1;\n else if (ins >= 176 && ins <= 183)\n ip += ins - 176 + 1;\n else if (ins >= 184 && ins <= 191)\n ip += (ins - 184 + 1) * 2;\n else if (handleElse && nesting === 1 && ins === 27)\n break;\n } while (nesting > 0);\n state.ip = ip;\n }\n function SVTCA(v, state) {\n if (false) console.log(state.step, \"SVTCA[\" + v.axis + \"]\");\n state.fv = state.pv = state.dpv = v;\n }\n function SPVTCA(v, state) {\n if (false) console.log(state.step, \"SPVTCA[\" + v.axis + \"]\");\n state.pv = state.dpv = v;\n }\n function SFVTCA(v, state) {\n if (false) console.log(state.step, \"SFVTCA[\" + v.axis + \"]\");\n state.fv = v;\n }\n function SPVTL(a, state) {\n const stack = state.stack;\n const p2i = stack.pop();\n const p1i = stack.pop();\n const p2 = state.z2[p2i];\n const p1 = state.z1[p1i];\n if (false) console.log(\"SPVTL[\" + a + \"]\", p2i, p1i);\n let dx;\n let dy;\n if (!a) {\n dx = p1.x - p2.x;\n dy = p1.y - p2.y;\n } else {\n dx = p2.y - p1.y;\n dy = p1.x - p2.x;\n }\n state.pv = state.dpv = getUnitVector(dx, dy);\n }\n function SFVTL(a, state) {\n const stack = state.stack;\n const p2i = stack.pop();\n const p1i = stack.pop();\n const p2 = state.z2[p2i];\n const p1 = state.z1[p1i];\n if (false) console.log(\"SFVTL[\" + a + \"]\", p2i, p1i);\n let dx;\n let dy;\n if (!a) {\n dx = p1.x - p2.x;\n dy = p1.y - p2.y;\n } else {\n dx = p2.y - p1.y;\n dy = p1.x - p2.x;\n }\n state.fv = getUnitVector(dx, dy);\n }\n function SPVFS(state) {\n const stack = state.stack;\n const y = stack.pop();\n const x = stack.pop();\n if (false) console.log(state.step, \"SPVFS[]\", y, x);\n state.pv = state.dpv = getUnitVector(x, y);\n }\n function SFVFS(state) {\n const stack = state.stack;\n const y = stack.pop();\n const x = stack.pop();\n if (false) console.log(state.step, \"SPVFS[]\", y, x);\n state.fv = getUnitVector(x, y);\n }\n function GPV(state) {\n const stack = state.stack;\n const pv = state.pv;\n if (false) console.log(state.step, \"GPV[]\");\n stack.push(pv.x * 16384);\n stack.push(pv.y * 16384);\n }\n function GFV(state) {\n const stack = state.stack;\n const fv = state.fv;\n if (false) console.log(state.step, \"GFV[]\");\n stack.push(fv.x * 16384);\n stack.push(fv.y * 16384);\n }\n function SFVTPV(state) {\n state.fv = state.pv;\n if (false) console.log(state.step, \"SFVTPV[]\");\n }\n function ISECT(state) {\n const stack = state.stack;\n const pa0i = stack.pop();\n const pa1i = stack.pop();\n const pb0i = stack.pop();\n const pb1i = stack.pop();\n const pi = stack.pop();\n const z0 = state.z0;\n const z1 = state.z1;\n const pa0 = z0[pa0i];\n const pa1 = z0[pa1i];\n const pb0 = z1[pb0i];\n const pb1 = z1[pb1i];\n const p = state.z2[pi];\n if (false) console.log(\"ISECT[], \", pa0i, pa1i, pb0i, pb1i, pi);\n const x1 = pa0.x;\n const y1 = pa0.y;\n const x2 = pa1.x;\n const y2 = pa1.y;\n const x3 = pb0.x;\n const y3 = pb0.y;\n const x4 = pb1.x;\n const y4 = pb1.y;\n const div = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n const f1 = x1 * y2 - y1 * x2;\n const f2 = x3 * y4 - y3 * x4;\n p.x = (f1 * (x3 - x4) - f2 * (x1 - x2)) / div;\n p.y = (f1 * (y3 - y4) - f2 * (y1 - y2)) / div;\n }\n function SRP0(state) {\n state.rp0 = state.stack.pop();\n if (false) console.log(state.step, \"SRP0[]\", state.rp0);\n }\n function SRP1(state) {\n state.rp1 = state.stack.pop();\n if (false) console.log(state.step, \"SRP1[]\", state.rp1);\n }\n function SRP2(state) {\n state.rp2 = state.stack.pop();\n if (false) console.log(state.step, \"SRP2[]\", state.rp2);\n }\n function SZP0(state) {\n const n = state.stack.pop();\n if (false) console.log(state.step, \"SZP0[]\", n);\n state.zp0 = n;\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z0 = state.tZone;\n break;\n case 1:\n state.z0 = state.gZone;\n break;\n default:\n throw new Error(\"Invalid zone pointer\");\n }\n }\n function SZP1(state) {\n const n = state.stack.pop();\n if (false) console.log(state.step, \"SZP1[]\", n);\n state.zp1 = n;\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z1 = state.tZone;\n break;\n case 1:\n state.z1 = state.gZone;\n break;\n default:\n throw new Error(\"Invalid zone pointer\");\n }\n }\n function SZP2(state) {\n const n = state.stack.pop();\n if (false) console.log(state.step, \"SZP2[]\", n);\n state.zp2 = n;\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z2 = state.tZone;\n break;\n case 1:\n state.z2 = state.gZone;\n break;\n default:\n throw new Error(\"Invalid zone pointer\");\n }\n }\n function SZPS(state) {\n const n = state.stack.pop();\n if (false) console.log(state.step, \"SZPS[]\", n);\n state.zp0 = state.zp1 = state.zp2 = n;\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z0 = state.z1 = state.z2 = state.tZone;\n break;\n case 1:\n state.z0 = state.z1 = state.z2 = state.gZone;\n break;\n default:\n throw new Error(\"Invalid zone pointer\");\n }\n }\n function SLOOP(state) {\n state.loop = state.stack.pop();\n if (state.loop > MAX_LOOP_COUNT) {\n state.loop = MAX_LOOP_COUNT;\n }\n if (false) console.log(state.step, \"SLOOP[]\", state.loop);\n }\n function RTG(state) {\n if (false) console.log(state.step, \"RTG[]\");\n state.round = roundToGrid;\n }\n function RTHG(state) {\n if (false) console.log(state.step, \"RTHG[]\");\n state.round = roundToHalfGrid;\n }\n function SMD(state) {\n const d = state.stack.pop();\n if (false) console.log(state.step, \"SMD[]\", d);\n state.minDis = d / 64;\n }\n function ELSE(state) {\n if (false) console.log(state.step, \"ELSE[]\");\n skip(state, false);\n }\n function JMPR(state) {\n const o = state.stack.pop();\n if (false) console.log(state.step, \"JMPR[]\", o);\n state.ip += o - 1;\n }\n function SCVTCI(state) {\n const n = state.stack.pop();\n if (false) console.log(state.step, \"SCVTCI[]\", n);\n state.cvCutIn = n / 64;\n }\n function DUP(state) {\n const stack = state.stack;\n if (false) console.log(state.step, \"DUP[]\");\n stack.push(stack[stack.length - 1]);\n }\n function POP(state) {\n if (false) console.log(state.step, \"POP[]\");\n state.stack.pop();\n }\n function CLEAR(state) {\n if (false) console.log(state.step, \"CLEAR[]\");\n state.stack.length = 0;\n }\n function SWAP(state) {\n const stack = state.stack;\n const a = stack.pop();\n const b = stack.pop();\n if (false) console.log(state.step, \"SWAP[]\");\n stack.push(a);\n stack.push(b);\n }\n function DEPTH(state) {\n const stack = state.stack;\n if (false) console.log(state.step, \"DEPTH[]\");\n stack.push(stack.length);\n }\n function LOOPCALL(state) {\n const stack = state.stack;\n const fn = stack.pop();\n let c = stack.pop();\n if (c > MAX_LOOP_COUNT) c = MAX_LOOP_COUNT;\n if (false) console.log(state.step, \"LOOPCALL[]\", fn, c);\n if (++state.callDepth > MAX_CALL_DEPTH2) {\n throw new Error(\"Hinting call depth exceeded maximum of \" + MAX_CALL_DEPTH2);\n }\n const cip = state.ip;\n const cprog = state.prog;\n state.prog = state.funcs[fn];\n for (let i = 0; i < c; i++) {\n exec(state);\n if (false) console.log(\n ++state.step,\n i + 1 < c ? \"next loopcall\" : \"done loopcall\",\n i\n );\n }\n state.ip = cip;\n state.prog = cprog;\n state.callDepth--;\n }\n function CALL(state) {\n const fn = state.stack.pop();\n if (false) console.log(state.step, \"CALL[]\", fn);\n if (++state.callDepth > MAX_CALL_DEPTH2) {\n throw new Error(\"Hinting call depth exceeded maximum of \" + MAX_CALL_DEPTH2);\n }\n const cip = state.ip;\n const cprog = state.prog;\n state.prog = state.funcs[fn];\n exec(state);\n state.ip = cip;\n state.prog = cprog;\n state.callDepth--;\n if (false) console.log(++state.step, \"returning from\", fn);\n }\n function CINDEX(state) {\n const stack = state.stack;\n const k = stack.pop();\n if (false) console.log(state.step, \"CINDEX[]\", k);\n stack.push(stack[stack.length - k]);\n }\n function MINDEX(state) {\n const stack = state.stack;\n const k = stack.pop();\n if (false) console.log(state.step, \"MINDEX[]\", k);\n stack.push(stack.splice(stack.length - k, 1)[0]);\n }\n function FDEF(state) {\n if (state.env !== \"fpgm\") throw new Error(\"FDEF not allowed here\");\n const stack = state.stack;\n const prog = state.prog;\n let ip = state.ip;\n const fn = stack.pop();\n const ipBegin = ip;\n if (false) console.log(state.step, \"FDEF[]\", fn);\n while (prog[++ip] !== 45) ;\n state.ip = ip;\n state.funcs[fn] = prog.slice(ipBegin + 1, ip);\n }\n function MDAP(round, state) {\n const pi = state.stack.pop();\n const p = state.z0[pi];\n const fv = state.fv;\n const pv = state.pv;\n if (false) console.log(state.step, \"MDAP[\" + round + \"]\", pi);\n let d = pv.distance(p, HPZero);\n if (round) d = state.round(d);\n fv.setRelative(p, HPZero, d, pv);\n fv.touch(p);\n state.rp0 = state.rp1 = pi;\n }\n function IUP(v, state) {\n const z2 = state.z2;\n const pLen = z2.length - 2;\n let cp;\n let pp;\n let np;\n if (false) console.log(state.step, \"IUP[\" + v.axis + \"]\");\n for (let i = 0; i < pLen; i++) {\n cp = z2[i];\n if (v.touched(cp)) continue;\n pp = cp.prevTouched(v);\n if (pp === cp) continue;\n np = cp.nextTouched(v);\n if (pp === np) {\n v.setRelative(cp, cp, v.distance(pp, pp, false, true), v, true);\n }\n v.interpolate(cp, pp, np, v);\n }\n }\n function SHP(a, state) {\n const stack = state.stack;\n const rpi = a ? state.rp1 : state.rp2;\n const rp = (a ? state.z0 : state.z1)[rpi];\n const fv = state.fv;\n const pv = state.pv;\n let loop = state.loop;\n const z2 = state.z2;\n while (loop--) {\n const pi = stack.pop();\n const p = z2[pi];\n const d = pv.distance(rp, rp, false, true);\n fv.setRelative(p, p, d, pv);\n fv.touch(p);\n if (false) {\n console.log(\n state.step,\n (state.loop > 1 ? \"loop \" + (state.loop - loop) + \": \" : \"\") + \"SHP[\" + (a ? \"rp1\" : \"rp2\") + \"]\",\n pi\n );\n }\n }\n state.loop = 1;\n }\n function SHC(a, state) {\n const stack = state.stack;\n const rpi = a ? state.rp1 : state.rp2;\n const rp = (a ? state.z0 : state.z1)[rpi];\n const fv = state.fv;\n const pv = state.pv;\n const ci = stack.pop();\n const sp = state.z2[state.contours[ci]];\n let p = sp;\n if (false) console.log(state.step, \"SHC[\" + a + \"]\", ci);\n const d = pv.distance(rp, rp, false, true);\n do {\n if (p !== rp) fv.setRelative(p, p, d, pv);\n p = p.nextPointOnContour;\n } while (p !== sp);\n }\n function SHZ(a, state) {\n const stack = state.stack;\n const rpi = a ? state.rp1 : state.rp2;\n const rp = (a ? state.z0 : state.z1)[rpi];\n const fv = state.fv;\n const pv = state.pv;\n const e = stack.pop();\n if (false) console.log(state.step, \"SHZ[\" + a + \"]\", e);\n let z;\n switch (e) {\n case 0:\n z = state.tZone;\n break;\n case 1:\n z = state.gZone;\n break;\n default:\n throw new Error(\"Invalid zone\");\n }\n let p;\n const d = pv.distance(rp, rp, false, true);\n const pLen = z.length - 2;\n for (let i = 0; i < pLen; i++) {\n p = z[i];\n fv.setRelative(p, p, d, pv);\n }\n }\n function SHPIX(state) {\n const stack = state.stack;\n let loop = state.loop;\n const fv = state.fv;\n const d = stack.pop() / 64;\n const z2 = state.z2;\n while (loop--) {\n const pi = stack.pop();\n const p = z2[pi];\n if (false) {\n console.log(\n state.step,\n (state.loop > 1 ? \"loop \" + (state.loop - loop) + \": \" : \"\") + \"SHPIX[]\",\n pi,\n d\n );\n }\n fv.setRelative(p, p, d);\n fv.touch(p);\n }\n state.loop = 1;\n }\n function IP(state) {\n const stack = state.stack;\n const rp1i = state.rp1;\n const rp2i = state.rp2;\n let loop = state.loop;\n const rp1 = state.z0[rp1i];\n const rp2 = state.z1[rp2i];\n const fv = state.fv;\n const pv = state.dpv;\n const z2 = state.z2;\n while (loop--) {\n const pi = stack.pop();\n const p = z2[pi];\n if (false) {\n console.log(\n state.step,\n (state.loop > 1 ? \"loop \" + (state.loop - loop) + \": \" : \"\") + \"IP[]\",\n pi,\n rp1i,\n \"<->\",\n rp2i\n );\n }\n fv.interpolate(p, rp1, rp2, pv);\n fv.touch(p);\n }\n state.loop = 1;\n }\n function MSIRP(a, state) {\n const stack = state.stack;\n const d = stack.pop() / 64;\n const pi = stack.pop();\n const p = state.z1[pi];\n const rp0 = state.z0[state.rp0];\n const fv = state.fv;\n const pv = state.pv;\n fv.setRelative(p, rp0, d, pv);\n fv.touch(p);\n if (false) console.log(state.step, \"MSIRP[\" + a + \"]\", d, pi);\n state.rp1 = state.rp0;\n state.rp2 = pi;\n if (a) state.rp0 = pi;\n }\n function ALIGNRP(state) {\n const stack = state.stack;\n const rp0i = state.rp0;\n const rp0 = state.z0[rp0i];\n let loop = state.loop;\n const fv = state.fv;\n const pv = state.pv;\n const z1 = state.z1;\n while (loop--) {\n const pi = stack.pop();\n const p = z1[pi];\n if (false) {\n console.log(\n state.step,\n (state.loop > 1 ? \"loop \" + (state.loop - loop) + \": \" : \"\") + \"ALIGNRP[]\",\n pi\n );\n }\n fv.setRelative(p, rp0, 0, pv);\n fv.touch(p);\n }\n state.loop = 1;\n }\n function RTDG(state) {\n if (false) console.log(state.step, \"RTDG[]\");\n state.round = roundToDoubleGrid;\n }\n function MIAP(round, state) {\n const stack = state.stack;\n const n = stack.pop();\n const pi = stack.pop();\n const p = state.z0[pi];\n const fv = state.fv;\n const pv = state.pv;\n let cv = state.cvt[n];\n if (false) {\n console.log(\n state.step,\n \"MIAP[\" + round + \"]\",\n n,\n \"(\",\n cv,\n \")\",\n pi\n );\n }\n let d = pv.distance(p, HPZero);\n if (round) {\n if (Math.abs(d - cv) < state.cvCutIn) d = cv;\n d = state.round(d);\n }\n fv.setRelative(p, HPZero, d, pv);\n if (state.zp0 === 0) {\n p.xo = p.x;\n p.yo = p.y;\n }\n fv.touch(p);\n state.rp0 = state.rp1 = pi;\n }\n function NPUSHB(state) {\n const prog = state.prog;\n let ip = state.ip;\n const stack = state.stack;\n const n = prog[++ip];\n if (false) console.log(state.step, \"NPUSHB[]\", n);\n for (let i = 0; i < n; i++) stack.push(prog[++ip]);\n state.ip = ip;\n }\n function NPUSHW(state) {\n let ip = state.ip;\n const prog = state.prog;\n const stack = state.stack;\n const n = prog[++ip];\n if (false) console.log(state.step, \"NPUSHW[]\", n);\n for (let i = 0; i < n; i++) {\n let w = prog[++ip] << 8 | prog[++ip];\n if (w & 32768) w = -((w ^ 65535) + 1);\n stack.push(w);\n }\n state.ip = ip;\n }\n function WS(state) {\n const stack = state.stack;\n let store = state.store;\n if (!store) store = state.store = [];\n const v = stack.pop();\n const l = stack.pop();\n if (false) console.log(state.step, \"WS\", v, l);\n store[l] = v;\n }\n function RS(state) {\n const stack = state.stack;\n const store = state.store;\n const l = stack.pop();\n if (false) console.log(state.step, \"RS\", l);\n const v = store && store[l] || 0;\n stack.push(v);\n }\n function WCVTP(state) {\n const stack = state.stack;\n const v = stack.pop();\n const l = stack.pop();\n if (false) console.log(state.step, \"WCVTP\", v, l);\n state.cvt[l] = v / 64;\n }\n function RCVT(state) {\n const stack = state.stack;\n const cvte = stack.pop();\n if (false) console.log(state.step, \"RCVT\", cvte);\n stack.push(state.cvt[cvte] * 64);\n }\n function GC(a, state) {\n const stack = state.stack;\n const pi = stack.pop();\n const p = state.z2[pi];\n if (false) console.log(state.step, \"GC[\" + a + \"]\", pi);\n stack.push(state.dpv.distance(p, HPZero, a, false) * 64);\n }\n function MD(a, state) {\n const stack = state.stack;\n const pi2 = stack.pop();\n const pi1 = stack.pop();\n const p2 = state.z1[pi2];\n const p1 = state.z0[pi1];\n const d = state.dpv.distance(p1, p2, a, a);\n if (false) console.log(state.step, \"MD[\" + a + \"]\", pi2, pi1, \"->\", d);\n state.stack.push(Math.round(d * 64));\n }\n function MPPEM(state) {\n if (false) console.log(state.step, \"MPPEM[]\");\n state.stack.push(state.ppem);\n }\n function FLIPON(state) {\n if (false) console.log(state.step, \"FLIPON[]\");\n state.autoFlip = true;\n }\n function LT(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"LT[]\", e2, e1);\n stack.push(e1 < e2 ? 1 : 0);\n }\n function LTEQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"LTEQ[]\", e2, e1);\n stack.push(e1 <= e2 ? 1 : 0);\n }\n function GT(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"GT[]\", e2, e1);\n stack.push(e1 > e2 ? 1 : 0);\n }\n function GTEQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"GTEQ[]\", e2, e1);\n stack.push(e1 >= e2 ? 1 : 0);\n }\n function EQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"EQ[]\", e2, e1);\n stack.push(e2 === e1 ? 1 : 0);\n }\n function NEQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"NEQ[]\", e2, e1);\n stack.push(e2 !== e1 ? 1 : 0);\n }\n function ODD(state) {\n const stack = state.stack;\n const n = stack.pop();\n if (false) console.log(state.step, \"ODD[]\", n);\n stack.push(Math.trunc(n) & 1 ? 1 : 0);\n }\n function EVEN(state) {\n const stack = state.stack;\n const n = stack.pop();\n if (false) console.log(state.step, \"EVEN[]\", n);\n stack.push(Math.trunc(n) & 1 ? 0 : 1);\n }\n function IF(state) {\n let test = state.stack.pop();\n let ins;\n if (false) console.log(state.step, \"IF[]\", test);\n if (!test) {\n skip(state, true);\n if (false) console.log(state.step, ins === 27 ? \"ELSE[]\" : \"EIF[]\");\n }\n }\n function EIF(state) {\n if (false) console.log(state.step, \"EIF[]\");\n }\n function AND(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"AND[]\", e2, e1);\n stack.push(e2 && e1 ? 1 : 0);\n }\n function OR(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"OR[]\", e2, e1);\n stack.push(e2 || e1 ? 1 : 0);\n }\n function NOT(state) {\n const stack = state.stack;\n const e = stack.pop();\n if (false) console.log(state.step, \"NOT[]\", e);\n stack.push(e ? 0 : 1);\n }\n function DELTAP123(b, state) {\n const stack = state.stack;\n const n = stack.pop();\n const fv = state.fv;\n const pv = state.pv;\n const ppem = state.ppem;\n const base = state.deltaBase + (b - 1) * 16;\n const ds = state.deltaShift;\n const z0 = state.z0;\n if (false) console.log(state.step, \"DELTAP[\" + b + \"]\", n, stack);\n for (let i = 0; i < n; i++) {\n const pi = stack.pop();\n const arg = stack.pop();\n const appem = base + ((arg & 240) >> 4);\n if (appem !== ppem) continue;\n let mag = (arg & 15) - 8;\n if (mag >= 0) mag++;\n if (false) console.log(state.step, \"DELTAPFIX\", pi, \"by\", mag * ds);\n const p = z0[pi];\n fv.setRelative(p, p, mag * ds, pv);\n }\n }\n function SDB(state) {\n const stack = state.stack;\n const n = stack.pop();\n if (false) console.log(state.step, \"SDB[]\", n);\n state.deltaBase = n;\n }\n function SDS(state) {\n const stack = state.stack;\n const n = stack.pop();\n if (false) console.log(state.step, \"SDS[]\", n);\n state.deltaShift = Math.pow(0.5, n);\n }\n function ADD(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n if (false) console.log(state.step, \"ADD[]\", n2, n1);\n stack.push(n1 + n2);\n }\n function SUB(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n if (false) console.log(state.step, \"SUB[]\", n2, n1);\n stack.push(n1 - n2);\n }\n function DIV(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n if (false) console.log(state.step, \"DIV[]\", n2, n1);\n stack.push(n1 * 64 / n2);\n }\n function MUL(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n if (false) console.log(state.step, \"MUL[]\", n2, n1);\n stack.push(n1 * n2 / 64);\n }\n function ABS(state) {\n const stack = state.stack;\n const n = stack.pop();\n if (false) console.log(state.step, \"ABS[]\", n);\n stack.push(Math.abs(n));\n }\n function NEG(state) {\n const stack = state.stack;\n let n = stack.pop();\n if (false) console.log(state.step, \"NEG[]\", n);\n stack.push(-n);\n }\n function FLOOR(state) {\n const stack = state.stack;\n const n = stack.pop();\n if (false) console.log(state.step, \"FLOOR[]\", n);\n stack.push(Math.floor(n / 64) * 64);\n }\n function CEILING(state) {\n const stack = state.stack;\n const n = stack.pop();\n if (false) console.log(state.step, \"CEILING[]\", n);\n stack.push(Math.ceil(n / 64) * 64);\n }\n function ROUND(dt, state) {\n const stack = state.stack;\n const n = stack.pop();\n if (false) console.log(state.step, \"ROUND[]\");\n stack.push(state.round(n / 64) * 64);\n }\n function WCVTF(state) {\n const stack = state.stack;\n const v = stack.pop();\n const l = stack.pop();\n if (false) console.log(state.step, \"WCVTF[]\", v, l);\n state.cvt[l] = v * state.ppem / state.font.unitsPerEm;\n }\n function DELTAC123(b, state) {\n const stack = state.stack;\n const n = stack.pop();\n const ppem = state.ppem;\n const base = state.deltaBase + (b - 1) * 16;\n const ds = state.deltaShift;\n if (false) console.log(state.step, \"DELTAC[\" + b + \"]\", n, stack);\n for (let i = 0; i < n; i++) {\n const c = stack.pop();\n const arg = stack.pop();\n const appem = base + ((arg & 240) >> 4);\n if (appem !== ppem) continue;\n let mag = (arg & 15) - 8;\n if (mag >= 0) mag++;\n const delta = mag * ds;\n if (false) console.log(state.step, \"DELTACFIX\", c, \"by\", delta);\n state.cvt[c] += delta;\n }\n }\n function SROUND(state) {\n let n = state.stack.pop();\n if (false) console.log(state.step, \"SROUND[]\", n);\n state.round = roundSuper;\n let period;\n switch (n & 192) {\n case 0:\n period = 0.5;\n break;\n case 64:\n period = 1;\n break;\n case 128:\n period = 2;\n break;\n default:\n throw new Error(\"invalid SROUND value\");\n }\n state.srPeriod = period;\n switch (n & 48) {\n case 0:\n state.srPhase = 0;\n break;\n case 16:\n state.srPhase = 0.25 * period;\n break;\n case 32:\n state.srPhase = 0.5 * period;\n break;\n case 48:\n state.srPhase = 0.75 * period;\n break;\n default:\n throw new Error(\"invalid SROUND value\");\n }\n n &= 15;\n if (n === 0) state.srThreshold = 0;\n else state.srThreshold = (n / 8 - 0.5) * period;\n }\n function S45ROUND(state) {\n let n = state.stack.pop();\n if (false) console.log(state.step, \"S45ROUND[]\", n);\n state.round = roundSuper;\n let period;\n switch (n & 192) {\n case 0:\n period = Math.sqrt(2) / 2;\n break;\n case 64:\n period = Math.sqrt(2);\n break;\n case 128:\n period = 2 * Math.sqrt(2);\n break;\n default:\n throw new Error(\"invalid S45ROUND value\");\n }\n state.srPeriod = period;\n switch (n & 48) {\n case 0:\n state.srPhase = 0;\n break;\n case 16:\n state.srPhase = 0.25 * period;\n break;\n case 32:\n state.srPhase = 0.5 * period;\n break;\n case 48:\n state.srPhase = 0.75 * period;\n break;\n default:\n throw new Error(\"invalid S45ROUND value\");\n }\n n &= 15;\n if (n === 0) state.srThreshold = 0;\n else state.srThreshold = (n / 8 - 0.5) * period;\n }\n function ROFF(state) {\n if (false) console.log(state.step, \"ROFF[]\");\n state.round = roundOff;\n }\n function RUTG(state) {\n if (false) console.log(state.step, \"RUTG[]\");\n state.round = roundUpToGrid;\n }\n function RDTG(state) {\n if (false) console.log(state.step, \"RDTG[]\");\n state.round = roundDownToGrid;\n }\n function SCANCTRL(state) {\n const n = state.stack.pop();\n if (false) console.log(state.step, \"SCANCTRL[]\", n);\n }\n function SDPVTL(a, state) {\n const stack = state.stack;\n const p2i = stack.pop();\n const p1i = stack.pop();\n const p2 = state.z2[p2i];\n const p1 = state.z1[p1i];\n if (false) console.log(state.step, \"SDPVTL[\" + a + \"]\", p2i, p1i);\n let dx;\n let dy;\n if (!a) {\n dx = p1.x - p2.x;\n dy = p1.y - p2.y;\n } else {\n dx = p2.y - p1.y;\n dy = p1.x - p2.x;\n }\n state.dpv = getUnitVector(dx, dy);\n }\n function GETINFO(state) {\n const stack = state.stack;\n const sel = stack.pop();\n let r = 0;\n if (false) console.log(state.step, \"GETINFO[]\", sel);\n if (sel & 1) r = 35;\n if (sel & 32) r |= 4096;\n stack.push(r);\n }\n function ROLL(state) {\n const stack = state.stack;\n const a = stack.pop();\n const b = stack.pop();\n const c = stack.pop();\n if (false) console.log(state.step, \"ROLL[]\");\n stack.push(b);\n stack.push(a);\n stack.push(c);\n }\n function MAX(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"MAX[]\", e2, e1);\n stack.push(Math.max(e1, e2));\n }\n function MIN(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"MIN[]\", e2, e1);\n stack.push(Math.min(e1, e2));\n }\n function SCANTYPE(state) {\n const n = state.stack.pop();\n if (false) console.log(state.step, \"SCANTYPE[]\", n);\n }\n function INSTCTRL(state) {\n const s = state.stack.pop();\n let v = state.stack.pop();\n if (false) console.log(state.step, \"INSTCTRL[]\", s, v);\n switch (s) {\n case 1:\n state.inhibitGridFit = !!v;\n return;\n case 2:\n state.ignoreCvt = !!v;\n return;\n default:\n throw new Error(\"invalid INSTCTRL[] selector\");\n }\n }\n function PUSHB(n, state) {\n const stack = state.stack;\n const prog = state.prog;\n let ip = state.ip;\n if (false) console.log(state.step, \"PUSHB[\" + n + \"]\");\n for (let i = 0; i < n; i++) stack.push(prog[++ip]);\n state.ip = ip;\n }\n function PUSHW(n, state) {\n let ip = state.ip;\n const prog = state.prog;\n const stack = state.stack;\n if (false) console.log(state.ip, \"PUSHW[\" + n + \"]\");\n for (let i = 0; i < n; i++) {\n let w = prog[++ip] << 8 | prog[++ip];\n if (w & 32768) w = -((w ^ 65535) + 1);\n stack.push(w);\n }\n state.ip = ip;\n }\n function MDRP_MIRP(indirect, setRp0, keepD, ro, dt, state) {\n const stack = state.stack;\n const cvte = indirect && stack.pop();\n const pi = stack.pop();\n const rp0i = state.rp0;\n const rp = state.z0[rp0i];\n const p = state.z1[pi];\n const md = state.minDis;\n const fv = state.fv;\n const pv = state.dpv;\n let od;\n let d;\n let sign;\n let cv;\n d = od = pv.distance(p, rp, true, true);\n sign = d >= 0 ? 1 : -1;\n d = Math.abs(d);\n if (indirect) {\n cv = state.cvt[cvte];\n if (ro && Math.abs(d - cv) < state.cvCutIn) d = cv;\n }\n if (keepD && d < md) d = md;\n if (ro) d = state.round(d);\n fv.setRelative(p, rp, sign * d, pv);\n fv.touch(p);\n if (false) {\n console.log(\n state.step,\n (indirect ? \"MIRP[\" : \"MDRP[\") + (setRp0 ? \"M\" : \"m\") + (keepD ? \">\" : \"_\") + (ro ? \"R\" : \"_\") + (dt === 0 ? \"Gr\" : dt === 1 ? \"Bl\" : dt === 2 ? \"Wh\" : \"\") + \"]\",\n indirect ? cvte + \"(\" + state.cvt[cvte] + \",\" + cv + \")\" : \"\",\n pi,\n \"(d =\",\n od,\n \"->\",\n sign * d,\n \")\"\n );\n }\n state.rp1 = state.rp0;\n state.rp2 = pi;\n if (setRp0) state.rp0 = pi;\n }\n instructionTable = [\n /* 0x00 */\n SVTCA.bind(void 0, yUnitVector),\n /* 0x01 */\n SVTCA.bind(void 0, xUnitVector),\n /* 0x02 */\n SPVTCA.bind(void 0, yUnitVector),\n /* 0x03 */\n SPVTCA.bind(void 0, xUnitVector),\n /* 0x04 */\n SFVTCA.bind(void 0, yUnitVector),\n /* 0x05 */\n SFVTCA.bind(void 0, xUnitVector),\n /* 0x06 */\n SPVTL.bind(void 0, 0),\n /* 0x07 */\n SPVTL.bind(void 0, 1),\n /* 0x08 */\n SFVTL.bind(void 0, 0),\n /* 0x09 */\n SFVTL.bind(void 0, 1),\n /* 0x0A */\n SPVFS,\n /* 0x0B */\n SFVFS,\n /* 0x0C */\n GPV,\n /* 0x0D */\n GFV,\n /* 0x0E */\n SFVTPV,\n /* 0x0F */\n ISECT,\n /* 0x10 */\n SRP0,\n /* 0x11 */\n SRP1,\n /* 0x12 */\n SRP2,\n /* 0x13 */\n SZP0,\n /* 0x14 */\n SZP1,\n /* 0x15 */\n SZP2,\n /* 0x16 */\n SZPS,\n /* 0x17 */\n SLOOP,\n /* 0x18 */\n RTG,\n /* 0x19 */\n RTHG,\n /* 0x1A */\n SMD,\n /* 0x1B */\n ELSE,\n /* 0x1C */\n JMPR,\n /* 0x1D */\n SCVTCI,\n /* 0x1E */\n void 0,\n // TODO SSWCI\n /* 0x1F */\n void 0,\n // TODO SSW\n /* 0x20 */\n DUP,\n /* 0x21 */\n POP,\n /* 0x22 */\n CLEAR,\n /* 0x23 */\n SWAP,\n /* 0x24 */\n DEPTH,\n /* 0x25 */\n CINDEX,\n /* 0x26 */\n MINDEX,\n /* 0x27 */\n void 0,\n // TODO ALIGNPTS\n /* 0x28 */\n void 0,\n /* 0x29 */\n void 0,\n // TODO UTP\n /* 0x2A */\n LOOPCALL,\n /* 0x2B */\n CALL,\n /* 0x2C */\n FDEF,\n /* 0x2D */\n void 0,\n // ENDF (eaten by FDEF)\n /* 0x2E */\n MDAP.bind(void 0, 0),\n /* 0x2F */\n MDAP.bind(void 0, 1),\n /* 0x30 */\n IUP.bind(void 0, yUnitVector),\n /* 0x31 */\n IUP.bind(void 0, xUnitVector),\n /* 0x32 */\n SHP.bind(void 0, 0),\n /* 0x33 */\n SHP.bind(void 0, 1),\n /* 0x34 */\n SHC.bind(void 0, 0),\n /* 0x35 */\n SHC.bind(void 0, 1),\n /* 0x36 */\n SHZ.bind(void 0, 0),\n /* 0x37 */\n SHZ.bind(void 0, 1),\n /* 0x38 */\n SHPIX,\n /* 0x39 */\n IP,\n /* 0x3A */\n MSIRP.bind(void 0, 0),\n /* 0x3B */\n MSIRP.bind(void 0, 1),\n /* 0x3C */\n ALIGNRP,\n /* 0x3D */\n RTDG,\n /* 0x3E */\n MIAP.bind(void 0, 0),\n /* 0x3F */\n MIAP.bind(void 0, 1),\n /* 0x40 */\n NPUSHB,\n /* 0x41 */\n NPUSHW,\n /* 0x42 */\n WS,\n /* 0x43 */\n RS,\n /* 0x44 */\n WCVTP,\n /* 0x45 */\n RCVT,\n /* 0x46 */\n GC.bind(void 0, 0),\n /* 0x47 */\n GC.bind(void 0, 1),\n /* 0x48 */\n void 0,\n // TODO SCFS\n /* 0x49 */\n MD.bind(void 0, 0),\n /* 0x4A */\n MD.bind(void 0, 1),\n /* 0x4B */\n MPPEM,\n /* 0x4C */\n void 0,\n // TODO MPS\n /* 0x4D */\n FLIPON,\n /* 0x4E */\n void 0,\n // TODO FLIPOFF\n /* 0x4F */\n void 0,\n // TODO DEBUG\n /* 0x50 */\n LT,\n /* 0x51 */\n LTEQ,\n /* 0x52 */\n GT,\n /* 0x53 */\n GTEQ,\n /* 0x54 */\n EQ,\n /* 0x55 */\n NEQ,\n /* 0x56 */\n ODD,\n /* 0x57 */\n EVEN,\n /* 0x58 */\n IF,\n /* 0x59 */\n EIF,\n /* 0x5A */\n AND,\n /* 0x5B */\n OR,\n /* 0x5C */\n NOT,\n /* 0x5D */\n DELTAP123.bind(void 0, 1),\n /* 0x5E */\n SDB,\n /* 0x5F */\n SDS,\n /* 0x60 */\n ADD,\n /* 0x61 */\n SUB,\n /* 0x62 */\n DIV,\n /* 0x63 */\n MUL,\n /* 0x64 */\n ABS,\n /* 0x65 */\n NEG,\n /* 0x66 */\n FLOOR,\n /* 0x67 */\n CEILING,\n /* 0x68 */\n ROUND.bind(void 0, 0),\n /* 0x69 */\n ROUND.bind(void 0, 1),\n /* 0x6A */\n ROUND.bind(void 0, 2),\n /* 0x6B */\n ROUND.bind(void 0, 3),\n /* 0x6C */\n void 0,\n // TODO NROUND[ab]\n /* 0x6D */\n void 0,\n // TODO NROUND[ab]\n /* 0x6E */\n void 0,\n // TODO NROUND[ab]\n /* 0x6F */\n void 0,\n // TODO NROUND[ab]\n /* 0x70 */\n WCVTF,\n /* 0x71 */\n DELTAP123.bind(void 0, 2),\n /* 0x72 */\n DELTAP123.bind(void 0, 3),\n /* 0x73 */\n DELTAC123.bind(void 0, 1),\n /* 0x74 */\n DELTAC123.bind(void 0, 2),\n /* 0x75 */\n DELTAC123.bind(void 0, 3),\n /* 0x76 */\n SROUND,\n /* 0x77 */\n S45ROUND,\n /* 0x78 */\n void 0,\n // TODO JROT[]\n /* 0x79 */\n void 0,\n // TODO JROF[]\n /* 0x7A */\n ROFF,\n /* 0x7B */\n void 0,\n /* 0x7C */\n RUTG,\n /* 0x7D */\n RDTG,\n /* 0x7E */\n POP,\n // actually SANGW, supposed to do only a pop though\n /* 0x7F */\n POP,\n // actually AA, supposed to do only a pop though\n /* 0x80 */\n void 0,\n // TODO FLIPPT\n /* 0x81 */\n void 0,\n // TODO FLIPRGON\n /* 0x82 */\n void 0,\n // TODO FLIPRGOFF\n /* 0x83 */\n void 0,\n /* 0x84 */\n void 0,\n /* 0x85 */\n SCANCTRL,\n /* 0x86 */\n SDPVTL.bind(void 0, 0),\n /* 0x87 */\n SDPVTL.bind(void 0, 1),\n /* 0x88 */\n GETINFO,\n /* 0x89 */\n void 0,\n // TODO IDEF\n /* 0x8A */\n ROLL,\n /* 0x8B */\n MAX,\n /* 0x8C */\n MIN,\n /* 0x8D */\n SCANTYPE,\n /* 0x8E */\n INSTCTRL,\n /* 0x8F */\n void 0,\n /* 0x90 */\n void 0,\n /* 0x91 */\n void 0,\n /* 0x92 */\n void 0,\n /* 0x93 */\n void 0,\n /* 0x94 */\n void 0,\n /* 0x95 */\n void 0,\n /* 0x96 */\n void 0,\n /* 0x97 */\n void 0,\n /* 0x98 */\n void 0,\n /* 0x99 */\n void 0,\n /* 0x9A */\n void 0,\n /* 0x9B */\n void 0,\n /* 0x9C */\n void 0,\n /* 0x9D */\n void 0,\n /* 0x9E */\n void 0,\n /* 0x9F */\n void 0,\n /* 0xA0 */\n void 0,\n /* 0xA1 */\n void 0,\n /* 0xA2 */\n void 0,\n /* 0xA3 */\n void 0,\n /* 0xA4 */\n void 0,\n /* 0xA5 */\n void 0,\n /* 0xA6 */\n void 0,\n /* 0xA7 */\n void 0,\n /* 0xA8 */\n void 0,\n /* 0xA9 */\n void 0,\n /* 0xAA */\n void 0,\n /* 0xAB */\n void 0,\n /* 0xAC */\n void 0,\n /* 0xAD */\n void 0,\n /* 0xAE */\n void 0,\n /* 0xAF */\n void 0,\n /* 0xB0 */\n PUSHB.bind(void 0, 1),\n /* 0xB1 */\n PUSHB.bind(void 0, 2),\n /* 0xB2 */\n PUSHB.bind(void 0, 3),\n /* 0xB3 */\n PUSHB.bind(void 0, 4),\n /* 0xB4 */\n PUSHB.bind(void 0, 5),\n /* 0xB5 */\n PUSHB.bind(void 0, 6),\n /* 0xB6 */\n PUSHB.bind(void 0, 7),\n /* 0xB7 */\n PUSHB.bind(void 0, 8),\n /* 0xB8 */\n PUSHW.bind(void 0, 1),\n /* 0xB9 */\n PUSHW.bind(void 0, 2),\n /* 0xBA */\n PUSHW.bind(void 0, 3),\n /* 0xBB */\n PUSHW.bind(void 0, 4),\n /* 0xBC */\n PUSHW.bind(void 0, 5),\n /* 0xBD */\n PUSHW.bind(void 0, 6),\n /* 0xBE */\n PUSHW.bind(void 0, 7),\n /* 0xBF */\n PUSHW.bind(void 0, 8),\n /* 0xC0 */\n MDRP_MIRP.bind(void 0, 0, 0, 0, 0, 0),\n /* 0xC1 */\n MDRP_MIRP.bind(void 0, 0, 0, 0, 0, 1),\n /* 0xC2 */\n MDRP_MIRP.bind(void 0, 0, 0, 0, 0, 2),\n /* 0xC3 */\n MDRP_MIRP.bind(void 0, 0, 0, 0, 0, 3),\n /* 0xC4 */\n MDRP_MIRP.bind(void 0, 0, 0, 0, 1, 0),\n /* 0xC5 */\n MDRP_MIRP.bind(void 0, 0, 0, 0, 1, 1),\n /* 0xC6 */\n MDRP_MIRP.bind(void 0, 0, 0, 0, 1, 2),\n /* 0xC7 */\n MDRP_MIRP.bind(void 0, 0, 0, 0, 1, 3),\n /* 0xC8 */\n MDRP_MIRP.bind(void 0, 0, 0, 1, 0, 0),\n /* 0xC9 */\n MDRP_MIRP.bind(void 0, 0, 0, 1, 0, 1),\n /* 0xCA */\n MDRP_MIRP.bind(void 0, 0, 0, 1, 0, 2),\n /* 0xCB */\n MDRP_MIRP.bind(void 0, 0, 0, 1, 0, 3),\n /* 0xCC */\n MDRP_MIRP.bind(void 0, 0, 0, 1, 1, 0),\n /* 0xCD */\n MDRP_MIRP.bind(void 0, 0, 0, 1, 1, 1),\n /* 0xCE */\n MDRP_MIRP.bind(void 0, 0, 0, 1, 1, 2),\n /* 0xCF */\n MDRP_MIRP.bind(void 0, 0, 0, 1, 1, 3),\n /* 0xD0 */\n MDRP_MIRP.bind(void 0, 0, 1, 0, 0, 0),\n /* 0xD1 */\n MDRP_MIRP.bind(void 0, 0, 1, 0, 0, 1),\n /* 0xD2 */\n MDRP_MIRP.bind(void 0, 0, 1, 0, 0, 2),\n /* 0xD3 */\n MDRP_MIRP.bind(void 0, 0, 1, 0, 0, 3),\n /* 0xD4 */\n MDRP_MIRP.bind(void 0, 0, 1, 0, 1, 0),\n /* 0xD5 */\n MDRP_MIRP.bind(void 0, 0, 1, 0, 1, 1),\n /* 0xD6 */\n MDRP_MIRP.bind(void 0, 0, 1, 0, 1, 2),\n /* 0xD7 */\n MDRP_MIRP.bind(void 0, 0, 1, 0, 1, 3),\n /* 0xD8 */\n MDRP_MIRP.bind(void 0, 0, 1, 1, 0, 0),\n /* 0xD9 */\n MDRP_MIRP.bind(void 0, 0, 1, 1, 0, 1),\n /* 0xDA */\n MDRP_MIRP.bind(void 0, 0, 1, 1, 0, 2),\n /* 0xDB */\n MDRP_MIRP.bind(void 0, 0, 1, 1, 0, 3),\n /* 0xDC */\n MDRP_MIRP.bind(void 0, 0, 1, 1, 1, 0),\n /* 0xDD */\n MDRP_MIRP.bind(void 0, 0, 1, 1, 1, 1),\n /* 0xDE */\n MDRP_MIRP.bind(void 0, 0, 1, 1, 1, 2),\n /* 0xDF */\n MDRP_MIRP.bind(void 0, 0, 1, 1, 1, 3),\n /* 0xE0 */\n MDRP_MIRP.bind(void 0, 1, 0, 0, 0, 0),\n /* 0xE1 */\n MDRP_MIRP.bind(void 0, 1, 0, 0, 0, 1),\n /* 0xE2 */\n MDRP_MIRP.bind(void 0, 1, 0, 0, 0, 2),\n /* 0xE3 */\n MDRP_MIRP.bind(void 0, 1, 0, 0, 0, 3),\n /* 0xE4 */\n MDRP_MIRP.bind(void 0, 1, 0, 0, 1, 0),\n /* 0xE5 */\n MDRP_MIRP.bind(void 0, 1, 0, 0, 1, 1),\n /* 0xE6 */\n MDRP_MIRP.bind(void 0, 1, 0, 0, 1, 2),\n /* 0xE7 */\n MDRP_MIRP.bind(void 0, 1, 0, 0, 1, 3),\n /* 0xE8 */\n MDRP_MIRP.bind(void 0, 1, 0, 1, 0, 0),\n /* 0xE9 */\n MDRP_MIRP.bind(void 0, 1, 0, 1, 0, 1),\n /* 0xEA */\n MDRP_MIRP.bind(void 0, 1, 0, 1, 0, 2),\n /* 0xEB */\n MDRP_MIRP.bind(void 0, 1, 0, 1, 0, 3),\n /* 0xEC */\n MDRP_MIRP.bind(void 0, 1, 0, 1, 1, 0),\n /* 0xED */\n MDRP_MIRP.bind(void 0, 1, 0, 1, 1, 1),\n /* 0xEE */\n MDRP_MIRP.bind(void 0, 1, 0, 1, 1, 2),\n /* 0xEF */\n MDRP_MIRP.bind(void 0, 1, 0, 1, 1, 3),\n /* 0xF0 */\n MDRP_MIRP.bind(void 0, 1, 1, 0, 0, 0),\n /* 0xF1 */\n MDRP_MIRP.bind(void 0, 1, 1, 0, 0, 1),\n /* 0xF2 */\n MDRP_MIRP.bind(void 0, 1, 1, 0, 0, 2),\n /* 0xF3 */\n MDRP_MIRP.bind(void 0, 1, 1, 0, 0, 3),\n /* 0xF4 */\n MDRP_MIRP.bind(void 0, 1, 1, 0, 1, 0),\n /* 0xF5 */\n MDRP_MIRP.bind(void 0, 1, 1, 0, 1, 1),\n /* 0xF6 */\n MDRP_MIRP.bind(void 0, 1, 1, 0, 1, 2),\n /* 0xF7 */\n MDRP_MIRP.bind(void 0, 1, 1, 0, 1, 3),\n /* 0xF8 */\n MDRP_MIRP.bind(void 0, 1, 1, 1, 0, 0),\n /* 0xF9 */\n MDRP_MIRP.bind(void 0, 1, 1, 1, 0, 1),\n /* 0xFA */\n MDRP_MIRP.bind(void 0, 1, 1, 1, 0, 2),\n /* 0xFB */\n MDRP_MIRP.bind(void 0, 1, 1, 1, 0, 3),\n /* 0xFC */\n MDRP_MIRP.bind(void 0, 1, 1, 1, 1, 0),\n /* 0xFD */\n MDRP_MIRP.bind(void 0, 1, 1, 1, 1, 1),\n /* 0xFE */\n MDRP_MIRP.bind(void 0, 1, 1, 1, 1, 2),\n /* 0xFF */\n MDRP_MIRP.bind(void 0, 1, 1, 1, 1, 3)\n ];\n var hintingtt_default = Hinting;\n\n // src/tokenizer.mjs\n function Token(char) {\n this.char = char;\n this.state = {};\n this.activeState = null;\n }\n function ContextRange(startIndex, endOffset, contextName) {\n this.contextName = contextName;\n this.startIndex = startIndex;\n this.endOffset = endOffset;\n }\n function ContextChecker(contextName, checkStart, checkEnd) {\n this.contextName = contextName;\n this.openRange = null;\n this.ranges = [];\n this.checkStart = checkStart;\n this.checkEnd = checkEnd;\n }\n function ContextParams(context, currentIndex) {\n this.context = context;\n this.index = currentIndex;\n this.length = context.length;\n this.current = context[currentIndex];\n this.backtrack = context.slice(0, currentIndex);\n this.lookahead = context.slice(currentIndex + 1);\n }\n function Event(eventId) {\n this.eventId = eventId;\n this.subscribers = [];\n }\n function initializeCoreEvents(events) {\n const coreEvents = [\n \"start\",\n \"end\",\n \"next\",\n \"newToken\",\n \"contextStart\",\n \"contextEnd\",\n \"insertToken\",\n \"removeToken\",\n \"removeRange\",\n \"replaceToken\",\n \"replaceRange\",\n \"composeRUD\",\n \"updateContextsRanges\"\n ];\n for (let i = 0; i < coreEvents.length; i++) {\n const eventId = coreEvents[i];\n Object.defineProperty(this.events, eventId, {\n value: new Event(eventId)\n });\n }\n if (events) {\n for (let i = 0; i < coreEvents.length; i++) {\n const eventId = coreEvents[i];\n const event = events[eventId];\n if (typeof event === \"function\") {\n this.events[eventId].subscribe(event);\n }\n }\n }\n const requiresContextUpdate = [\n \"insertToken\",\n \"removeToken\",\n \"removeRange\",\n \"replaceToken\",\n \"replaceRange\",\n \"composeRUD\"\n ];\n for (let i = 0; i < requiresContextUpdate.length; i++) {\n const eventId = requiresContextUpdate[i];\n this.events[eventId].subscribe(\n this.updateContextsRanges\n );\n }\n }\n function Tokenizer(events) {\n this.tokens = [];\n this.registeredContexts = {};\n this.contextCheckers = [];\n this.events = {};\n this.registeredModifiers = [];\n initializeCoreEvents.call(this, events);\n }\n Token.prototype.setState = function(key, value) {\n this.state[key] = value;\n this.activeState = { key, value: this.state[key] };\n return this.activeState;\n };\n Token.prototype.getState = function(stateId) {\n return this.state[stateId] || null;\n };\n Tokenizer.prototype.inboundIndex = function(index) {\n return index >= 0 && index < this.tokens.length;\n };\n Tokenizer.prototype.composeRUD = function(RUDs) {\n const silent = true;\n const state = RUDs.map((RUD) => this[RUD[0]].apply(this, RUD.slice(1).concat(silent)));\n const hasFAILObject = (obj) => typeof obj === \"object\" && Object.prototype.hasOwnProperty.call(obj, \"FAIL\");\n if (state.every(hasFAILObject)) {\n return {\n FAIL: \"composeRUD: one or more operations hasn't completed successfully\",\n report: state.filter(hasFAILObject)\n };\n }\n this.dispatch(\"composeRUD\", [state.filter((op) => !hasFAILObject(op))]);\n };\n Tokenizer.prototype.replaceRange = function(startIndex, offset, tokens, silent) {\n offset = offset !== null ? offset : this.tokens.length;\n const isTokenType = tokens.every((token) => token instanceof Token);\n if (!isNaN(startIndex) && this.inboundIndex(startIndex) && isTokenType) {\n const replaced = this.tokens.splice.apply(\n this.tokens,\n [startIndex, offset].concat(tokens)\n );\n if (!silent) this.dispatch(\"replaceToken\", [startIndex, offset, tokens]);\n return [replaced, tokens];\n } else {\n return { FAIL: \"replaceRange: invalid tokens or startIndex.\" };\n }\n };\n Tokenizer.prototype.replaceToken = function(index, token, silent) {\n if (!isNaN(index) && this.inboundIndex(index) && token instanceof Token) {\n const replaced = this.tokens.splice(index, 1, token);\n if (!silent) this.dispatch(\"replaceToken\", [index, token]);\n return [replaced[0], token];\n } else {\n return { FAIL: \"replaceToken: invalid token or index.\" };\n }\n };\n Tokenizer.prototype.removeRange = function(startIndex, offset, silent) {\n offset = !isNaN(offset) ? offset : this.tokens.length;\n const tokens = this.tokens.splice(startIndex, offset);\n if (!silent) this.dispatch(\"removeRange\", [tokens, startIndex, offset]);\n return tokens;\n };\n Tokenizer.prototype.removeToken = function(index, silent) {\n if (!isNaN(index) && this.inboundIndex(index)) {\n const token = this.tokens.splice(index, 1);\n if (!silent) this.dispatch(\"removeToken\", [token, index]);\n return token;\n } else {\n return { FAIL: \"removeToken: invalid token index.\" };\n }\n };\n Tokenizer.prototype.insertToken = function(tokens, index, silent) {\n const tokenType = tokens.every(\n (token) => token instanceof Token\n );\n if (tokenType) {\n this.tokens.splice.apply(\n this.tokens,\n [index, 0].concat(tokens)\n );\n if (!silent) this.dispatch(\"insertToken\", [tokens, index]);\n return tokens;\n } else {\n return { FAIL: \"insertToken: invalid token(s).\" };\n }\n };\n Tokenizer.prototype.registerModifier = function(modifierId, condition, modifier) {\n this.events.newToken.subscribe(function(token, contextParams) {\n const conditionParams = [token, contextParams];\n const canApplyModifier = condition === null || condition.apply(this, conditionParams) === true;\n const modifierParams = [token, contextParams];\n if (canApplyModifier) {\n let newStateValue = modifier.apply(this, modifierParams);\n token.setState(modifierId, newStateValue);\n }\n });\n this.registeredModifiers.push(modifierId);\n };\n Event.prototype.subscribe = function(eventHandler) {\n if (typeof eventHandler === \"function\") {\n return this.subscribers.push(eventHandler) - 1;\n } else {\n return { FAIL: `invalid '${this.eventId}' event handler` };\n }\n };\n Event.prototype.unsubscribe = function(subsId) {\n this.subscribers.splice(subsId, 1);\n };\n ContextParams.prototype.setCurrentIndex = function(index) {\n this.index = index;\n this.current = this.context[index];\n this.backtrack = this.context.slice(0, index);\n this.lookahead = this.context.slice(index + 1);\n };\n ContextParams.prototype.get = function(offset) {\n switch (true) {\n case offset === 0:\n return this.current;\n case (offset < 0 && Math.abs(offset) <= this.backtrack.length):\n return this.backtrack.slice(offset)[0];\n case (offset > 0 && offset <= this.lookahead.length):\n return this.lookahead[offset - 1];\n default:\n return null;\n }\n };\n Tokenizer.prototype.rangeToText = function(range) {\n if (range instanceof ContextRange) {\n return this.getRangeTokens(range).map((token) => token.char).join(\"\");\n }\n };\n Tokenizer.prototype.getText = function() {\n return this.tokens.map((token) => token.char).join(\"\");\n };\n Tokenizer.prototype.getContext = function(contextName) {\n let context = this.registeredContexts[contextName];\n return context ? context : null;\n };\n Tokenizer.prototype.on = function(eventName, eventHandler) {\n const event = this.events[eventName];\n if (event) {\n return event.subscribe(eventHandler);\n } else {\n return null;\n }\n };\n Tokenizer.prototype.dispatch = function(eventName, args) {\n const event = this.events[eventName];\n if (event instanceof Event) {\n for (let i = 0; i < event.subscribers.length; i++) {\n const subscriber = event.subscribers[i];\n subscriber.apply(this, args || []);\n }\n }\n };\n Tokenizer.prototype.registerContextChecker = function(contextName, contextStartCheck, contextEndCheck) {\n if (this.getContext(contextName)) return {\n FAIL: `context name '${contextName}' is already registered.`\n };\n if (typeof contextStartCheck !== \"function\") return {\n FAIL: \"missing context start check.\"\n };\n if (typeof contextEndCheck !== \"function\") return {\n FAIL: \"missing context end check.\"\n };\n const contextCheckers = new ContextChecker(\n contextName,\n contextStartCheck,\n contextEndCheck\n );\n this.registeredContexts[contextName] = contextCheckers;\n this.contextCheckers.push(contextCheckers);\n return contextCheckers;\n };\n Tokenizer.prototype.getRangeTokens = function(range) {\n const endIndex = range.startIndex + range.endOffset;\n return [].concat(\n this.tokens.slice(range.startIndex, endIndex)\n );\n };\n Tokenizer.prototype.getContextRanges = function(contextName) {\n const context = this.getContext(contextName);\n if (context) {\n return context.ranges;\n } else {\n return { FAIL: `context checker '${contextName}' is not registered.` };\n }\n };\n Tokenizer.prototype.resetContextsRanges = function() {\n const registeredContexts = this.registeredContexts;\n for (const contextName in registeredContexts) {\n if (Object.prototype.hasOwnProperty.call(registeredContexts, contextName)) {\n const context = registeredContexts[contextName];\n context.ranges = [];\n }\n }\n };\n Tokenizer.prototype.updateContextsRanges = function() {\n this.resetContextsRanges();\n const chars = this.tokens.map((token) => token.char);\n for (let i = 0; i < chars.length; i++) {\n const contextParams = new ContextParams(chars, i);\n this.runContextCheck(contextParams);\n }\n this.dispatch(\"updateContextsRanges\", [this.registeredContexts]);\n };\n Tokenizer.prototype.setEndOffset = function(offset, contextName) {\n const startIndex = this.getContext(contextName).openRange.startIndex;\n let range = new ContextRange(startIndex, offset, contextName);\n const ranges = this.getContext(contextName).ranges;\n range.rangeId = `${contextName}.${ranges.length}`;\n ranges.push(range);\n this.getContext(contextName).openRange = null;\n return range;\n };\n Tokenizer.prototype.runContextCheck = function(contextParams) {\n const index = contextParams.index;\n for (let i = 0; i < this.contextCheckers.length; i++) {\n const contextChecker = this.contextCheckers[i];\n let contextName = contextChecker.contextName;\n let openRange = this.getContext(contextName).openRange;\n if (!openRange && contextChecker.checkStart(contextParams)) {\n openRange = new ContextRange(index, null, contextName);\n this.getContext(contextName).openRange = openRange;\n this.dispatch(\"contextStart\", [contextName, index]);\n }\n if (!!openRange && contextChecker.checkEnd(contextParams)) {\n const offset = index - openRange.startIndex + 1;\n const range = this.setEndOffset(offset, contextName);\n this.dispatch(\"contextEnd\", [contextName, range]);\n }\n }\n };\n Tokenizer.prototype.tokenize = function(text) {\n this.tokens = [];\n this.resetContextsRanges();\n let chars = Array.from(text);\n this.dispatch(\"start\");\n for (let i = 0; i < chars.length; i++) {\n const char = chars[i];\n const contextParams = new ContextParams(chars, i);\n this.dispatch(\"next\", [contextParams]);\n this.runContextCheck(contextParams);\n let token = new Token(char);\n this.tokens.push(token);\n this.dispatch(\"newToken\", [token, contextParams]);\n }\n this.dispatch(\"end\", [this.tokens]);\n return this.tokens;\n };\n var tokenizer_default = Tokenizer;\n\n // src/char.mjs\n function isArabicChar(c) {\n return /[\\u0600-\\u065F\\u066A-\\u06D2\\u06FA-\\u06FF]/.test(c);\n }\n function isIsolatedArabicChar(char) {\n return /[\\u0630\\u0690\\u0621\\u0631\\u0661\\u0671\\u0622\\u0632\\u0672\\u0692\\u06C2\\u0623\\u0673\\u0693\\u06C3\\u0624\\u0694\\u06C4\\u0625\\u0675\\u0695\\u06C5\\u06E5\\u0676\\u0696\\u06C6\\u0627\\u0677\\u0697\\u06C7\\u0648\\u0688\\u0698\\u06C8\\u0689\\u0699\\u06C9\\u068A\\u06CA\\u066B\\u068B\\u06CB\\u068C\\u068D\\u06CD\\u06FD\\u068E\\u06EE\\u06FE\\u062F\\u068F\\u06CF\\u06EF]/.test(char);\n }\n function isTashkeelArabicChar(char) {\n return /[\\u0600-\\u0605\\u060C-\\u060E\\u0610-\\u061B\\u061E\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED]/.test(char);\n }\n function isThaiChar(c) {\n return /[\\u0E00-\\u0E7F]/.test(c);\n }\n function isLatinChar(c) {\n return /[A-z]/.test(c);\n }\n function isWhiteSpace(c) {\n return /\\s/.test(c);\n }\n\n // src/features/featureQuery.mjs\n function FeatureQuery(font) {\n this.font = font;\n this.features = {};\n }\n function SubstitutionAction(action) {\n this.id = action.id;\n this.tag = action.tag;\n this.substitution = action.substitution;\n }\n function lookupCoverage(glyphIndex, coverage) {\n if (!glyphIndex) return -1;\n switch (coverage.format) {\n case 1:\n return coverage.glyphs.indexOf(glyphIndex);\n case 2: {\n let ranges = coverage.ranges;\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n if (glyphIndex >= range.start && glyphIndex <= range.end) {\n let offset = glyphIndex - range.start;\n return range.index + offset;\n }\n }\n break;\n }\n default:\n return -1;\n }\n return -1;\n }\n function singleSubstitutionFormat1(glyphIndex, subtable) {\n let substituteIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (substituteIndex === -1) return null;\n return glyphIndex + subtable.deltaGlyphId;\n }\n function singleSubstitutionFormat2(glyphIndex, subtable) {\n let substituteIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (substituteIndex === -1) return null;\n return subtable.substitute[substituteIndex];\n }\n function lookupCoverageList(coverageList, contextParams) {\n let lookupList = [];\n for (let i = 0; i < coverageList.length; i++) {\n const coverage = coverageList[i];\n let glyphIndex = contextParams.current;\n glyphIndex = Array.isArray(glyphIndex) ? glyphIndex[0] : glyphIndex;\n const lookupIndex = lookupCoverage(glyphIndex, coverage);\n if (lookupIndex !== -1) {\n lookupList.push(lookupIndex);\n }\n }\n if (lookupList.length !== coverageList.length) return -1;\n return lookupList;\n }\n function chainingSubstitutionFormat3(contextParams, subtable) {\n const lookupsCount = subtable.inputCoverage.length + subtable.lookaheadCoverage.length + subtable.backtrackCoverage.length;\n if (contextParams.context.length < lookupsCount) return [];\n let inputLookups = lookupCoverageList(\n subtable.inputCoverage,\n contextParams\n );\n if (inputLookups === -1) return [];\n const lookaheadOffset = subtable.inputCoverage.length - 1;\n if (contextParams.lookahead.length < subtable.lookaheadCoverage.length) return [];\n let lookaheadContext = contextParams.lookahead.slice(lookaheadOffset);\n while (lookaheadContext.length && isTashkeelArabicChar(lookaheadContext[0].char)) {\n lookaheadContext.shift();\n }\n const lookaheadParams = new ContextParams(lookaheadContext, 0);\n let lookaheadLookups = lookupCoverageList(\n subtable.lookaheadCoverage,\n lookaheadParams\n );\n let backtrackContext = [].concat(contextParams.backtrack);\n backtrackContext.reverse();\n while (backtrackContext.length && isTashkeelArabicChar(backtrackContext[0].char)) {\n backtrackContext.shift();\n }\n if (backtrackContext.length < subtable.backtrackCoverage.length) return [];\n const backtrackParams = new ContextParams(backtrackContext, 0);\n let backtrackLookups = lookupCoverageList(\n subtable.backtrackCoverage,\n backtrackParams\n );\n const contextRulesMatch = inputLookups.length === subtable.inputCoverage.length && lookaheadLookups.length === subtable.lookaheadCoverage.length && backtrackLookups.length === subtable.backtrackCoverage.length;\n let substitutions = [];\n if (contextRulesMatch) {\n for (let i = 0; i < subtable.lookupRecords.length; i++) {\n const lookupRecord = subtable.lookupRecords[i];\n const lookupListIndex = lookupRecord.lookupListIndex;\n const lookupTable = this.getLookupByIndex(lookupListIndex);\n for (let s = 0; s < lookupTable.subtables.length; s++) {\n let subtable2 = lookupTable.subtables[s];\n let lookup;\n let substitutionType = this.getSubstitutionType(lookupTable, subtable2);\n if (substitutionType === \"71\") {\n substitutionType = this.getSubstitutionType(subtable2, subtable2.extension);\n lookup = this.getLookupMethod(subtable2, subtable2.extension);\n subtable2 = subtable2.extension;\n } else {\n lookup = this.getLookupMethod(lookupTable, subtable2);\n }\n if (substitutionType === \"12\") {\n const glyphIndex = contextParams.get(lookupRecord.sequenceIndex);\n const substitution = lookup(glyphIndex);\n if (substitution) substitutions.push(substitution);\n } else if (substitutionType === \"21\") {\n const glyphIndex = contextParams.get(lookupRecord.sequenceIndex);\n const substitution = lookup(glyphIndex);\n if (substitution) substitutions.push(substitution);\n } else {\n throw new Error(`Substitution type ${substitutionType} is not supported in chaining substitution`);\n }\n }\n }\n }\n return substitutions;\n }\n function ligatureSubstitutionFormat1(contextParams, subtable) {\n let glyphIndex = contextParams.current;\n let ligSetIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (ligSetIndex === -1) return null;\n let ligature;\n let ligatureSet = subtable.ligatureSets[ligSetIndex];\n for (let s = 0; s < ligatureSet.length; s++) {\n ligature = ligatureSet[s];\n for (let l = 0; l < ligature.components.length; l++) {\n const lookaheadItem = contextParams.lookahead[l];\n const component = ligature.components[l];\n if (lookaheadItem !== component) break;\n if (l === ligature.components.length - 1) return ligature;\n }\n }\n return null;\n }\n function contextSubstitutionFormat1(contextParams, subtable) {\n let glyphId = contextParams.current;\n let ligSetIndex = lookupCoverage(glyphId, subtable.coverage);\n if (ligSetIndex === -1)\n return null;\n for (const ruleSet of subtable.ruleSets) {\n for (const rule of ruleSet) {\n let matched = true;\n for (let i = 0; i < rule.input.length; i++) {\n if (contextParams.lookahead[i] !== rule.input[i]) {\n matched = false;\n break;\n }\n }\n if (matched) {\n let substitutions = [];\n substitutions.push(glyphId);\n for (let i = 0; i < rule.input.length; i++) {\n substitutions.push(rule.input[i]);\n }\n const parser = (substitutions2, lookupRecord) => {\n const { lookupListIndex, sequenceIndex } = lookupRecord;\n const { subtables } = this.getLookupByIndex(lookupListIndex);\n for (const subtable2 of subtables) {\n let ligSetIndex2 = lookupCoverage(substitutions2[sequenceIndex], subtable2.coverage);\n if (ligSetIndex2 !== -1) {\n substitutions2[sequenceIndex] = subtable2.deltaGlyphId;\n }\n }\n };\n for (let i = 0; i < rule.lookupRecords.length; i++) {\n const lookupRecord = rule.lookupRecords[i];\n parser(substitutions, lookupRecord);\n }\n return substitutions;\n }\n }\n }\n return null;\n }\n function contextSubstitutionFormat3(contextParams, subtable) {\n if (contextParams.context.length < subtable.coverages.length) {\n return [];\n }\n for (let i = 0; i < subtable.coverages.length; i++) {\n let glyphIndex = contextParams.get(i);\n glyphIndex = Array.isArray(glyphIndex) ? glyphIndex[0] : glyphIndex;\n if (lookupCoverage(glyphIndex, subtable.coverages[i]) === -1) {\n return [];\n }\n }\n let substitutions = [];\n for (let i = 0; i < subtable.lookupRecords.length; i++) {\n const lookupRecord = subtable.lookupRecords[i];\n const lookupListIndex = lookupRecord.lookupListIndex;\n const lookupTable = this.getLookupByIndex(lookupListIndex);\n for (let s = 0; s < lookupTable.subtables.length; s++) {\n let subtable2 = lookupTable.subtables[s];\n let lookup;\n let substitutionType = this.getSubstitutionType(lookupTable, subtable2);\n if (substitutionType === \"71\") {\n substitutionType = this.getSubstitutionType(subtable2, subtable2.extension);\n lookup = this.getLookupMethod(subtable2, subtable2.extension);\n subtable2 = subtable2.extension;\n } else {\n lookup = this.getLookupMethod(lookupTable, subtable2);\n }\n if (substitutionType === \"12\") {\n const glyphIndex = contextParams.get(lookupRecord.sequenceIndex);\n const substitution = lookup(glyphIndex);\n if (substitution) substitutions.push(substitution);\n } else if (substitutionType === \"21\") {\n const glyphIndex = contextParams.get(lookupRecord.sequenceIndex);\n const substitution = lookup(glyphIndex);\n if (substitution) substitutions.push(substitution);\n }\n }\n }\n return substitutions;\n }\n function decompositionSubstitutionFormat1(glyphIndex, subtable) {\n let substituteIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (substituteIndex === -1) return null;\n return subtable.sequences[substituteIndex];\n }\n FeatureQuery.prototype.getDefaultScriptFeaturesIndexes = function() {\n const scripts = this.font.tables.gsub.scripts;\n for (let s = 0; s < scripts.length; s++) {\n const script = scripts[s];\n if (script.tag === \"DFLT\") return script.script.defaultLangSys.featureIndexes;\n }\n return [];\n };\n FeatureQuery.prototype.getScriptFeaturesIndexes = function(scriptTag) {\n const tables = this.font.tables;\n if (!tables.gsub) return [];\n if (!scriptTag) return this.getDefaultScriptFeaturesIndexes();\n const scripts = this.font.tables.gsub.scripts;\n for (let i = 0; i < scripts.length; i++) {\n const script = scripts[i];\n if (script.tag === scriptTag && script.script.defaultLangSys) {\n return script.script.defaultLangSys.featureIndexes;\n } else {\n let langSysRecords = script.langSysRecords;\n if (langSysRecords) {\n for (let j = 0; j < langSysRecords.length; j++) {\n const langSysRecord = langSysRecords[j];\n if (langSysRecord.tag === scriptTag) {\n let langSys = langSysRecord.langSys;\n return langSys.featureIndexes;\n }\n }\n }\n }\n }\n return this.getDefaultScriptFeaturesIndexes();\n };\n FeatureQuery.prototype.mapTagsToFeatures = function(features, scriptTag) {\n let tags = {};\n for (let i = 0; i < features.length; i++) {\n const tag = features[i].tag;\n const feature = features[i].feature;\n tags[tag] = feature;\n }\n this.features[scriptTag].tags = tags;\n };\n FeatureQuery.prototype.getScriptFeatures = function(scriptTag) {\n let features = this.features[scriptTag];\n if (Object.prototype.hasOwnProperty.call(this.features, scriptTag)) return features;\n const featuresIndexes = this.getScriptFeaturesIndexes(scriptTag);\n if (!featuresIndexes) return null;\n const gsub = this.font.tables.gsub;\n features = featuresIndexes.map((index) => gsub.features[index]);\n this.features[scriptTag] = features;\n this.mapTagsToFeatures(features, scriptTag);\n return features;\n };\n FeatureQuery.prototype.getSubstitutionType = function(lookupTable, subtable) {\n const lookupType = lookupTable.lookupType.toString();\n const substFormat = subtable.substFormat.toString();\n return lookupType + substFormat;\n };\n FeatureQuery.prototype.getLookupMethod = function(lookupTable, subtable) {\n let substitutionType = this.getSubstitutionType(lookupTable, subtable);\n switch (substitutionType) {\n case \"11\":\n return (glyphIndex) => singleSubstitutionFormat1.apply(\n this,\n [glyphIndex, subtable]\n );\n case \"12\":\n return (glyphIndex) => singleSubstitutionFormat2.apply(\n this,\n [glyphIndex, subtable]\n );\n case \"63\":\n return (contextParams) => chainingSubstitutionFormat3.apply(\n this,\n [contextParams, subtable]\n );\n case \"41\":\n return (contextParams) => ligatureSubstitutionFormat1.apply(\n this,\n [contextParams, subtable]\n );\n case \"21\":\n return (glyphIndex) => decompositionSubstitutionFormat1.apply(\n this,\n [glyphIndex, subtable]\n );\n case \"51\":\n return (contextParams) => contextSubstitutionFormat1.apply(\n this,\n [contextParams, subtable]\n );\n case \"53\":\n return (contextParams) => contextSubstitutionFormat3.apply(\n this,\n [contextParams, subtable]\n );\n default:\n throw new Error(\n `substitutionType : ${substitutionType} lookupType: ${lookupTable.lookupType} - substFormat: ${subtable.substFormat} is not yet supported`\n );\n }\n };\n FeatureQuery.prototype.lookupFeature = function(query) {\n let contextParams = query.contextParams;\n let currentIndex = contextParams.index;\n const feature = this.getFeature({\n tag: query.tag,\n script: query.script\n });\n if (!feature) return new Error(\n `font '${(this.font.names.unicode || this.font.names.windows || this.font.names.macintosh).fullName.en}' doesn't support feature '${query.tag}' for script '${query.script}'.`\n );\n const lookups = this.getFeatureLookups(feature);\n const substitutions = [].concat(contextParams.context);\n for (let l = 0; l < lookups.length; l++) {\n const lookupTable = lookups[l];\n const subtables = this.getLookupSubtables(lookupTable);\n for (let s = 0; s < subtables.length; s++) {\n let subtable = subtables[s];\n let substType = this.getSubstitutionType(lookupTable, subtable);\n let lookup;\n if (substType === \"71\") {\n substType = this.getSubstitutionType(subtable, subtable.extension);\n lookup = this.getLookupMethod(subtable, subtable.extension);\n subtable = subtable.extension;\n } else {\n lookup = this.getLookupMethod(lookupTable, subtable);\n }\n let substitution;\n switch (substType) {\n case \"11\":\n substitution = lookup(contextParams.current);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 11,\n tag: query.tag,\n substitution\n }));\n }\n break;\n case \"12\":\n substitution = lookup(contextParams.current);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 12,\n tag: query.tag,\n substitution\n }));\n }\n break;\n case \"63\":\n substitution = lookup(contextParams);\n if (Array.isArray(substitution) && substitution.length) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 63,\n tag: query.tag,\n substitution\n }));\n }\n break;\n case \"41\":\n substitution = lookup(contextParams);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 41,\n tag: query.tag,\n substitution\n }));\n }\n break;\n case \"21\":\n substitution = lookup(contextParams.current);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 21,\n tag: query.tag,\n substitution\n }));\n }\n break;\n case \"51\":\n case \"53\":\n substitution = lookup(contextParams);\n if (Array.isArray(substitution) && substitution.length) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: parseInt(substType),\n tag: query.tag,\n substitution\n }));\n }\n break;\n }\n contextParams = new ContextParams(substitutions, currentIndex);\n if (Array.isArray(substitution) && !substitution.length) continue;\n substitution = null;\n }\n }\n return substitutions.length ? substitutions : null;\n };\n FeatureQuery.prototype.supports = function(query) {\n if (!query.script) return false;\n this.getScriptFeatures(query.script);\n const supportedScript = Object.prototype.hasOwnProperty.call(this.features, query.script);\n if (!query.tag) return supportedScript;\n const supportedFeature = this.features[query.script].some((feature) => feature.tag === query.tag);\n return supportedScript && supportedFeature;\n };\n FeatureQuery.prototype.getLookupSubtables = function(lookupTable) {\n return lookupTable.subtables || null;\n };\n FeatureQuery.prototype.getLookupByIndex = function(index) {\n const lookups = this.font.tables.gsub.lookups;\n return lookups[index] || null;\n };\n FeatureQuery.prototype.getFeatureLookups = function(feature) {\n return feature.lookupListIndexes.map(this.getLookupByIndex.bind(this));\n };\n FeatureQuery.prototype.getFeature = function getFeature(query) {\n if (!this.font) return { FAIL: \"No font was found\" };\n if (!Object.prototype.hasOwnProperty.call(this.features, query.script)) {\n this.getScriptFeatures(query.script);\n }\n const scriptFeatures = this.features[query.script];\n if (!scriptFeatures) return { FAIL: `No feature for script ${query.script}` };\n if (!scriptFeatures.tags[query.tag]) return null;\n return this.features[query.script].tags[query.tag];\n };\n var featureQuery_default = FeatureQuery;\n\n // src/features/arab/contextCheck/arabicWord.mjs\n function arabicWordStartCheck(contextParams) {\n const char = contextParams.current;\n const prevChar = contextParams.get(-1);\n return (\n // ? arabic first char\n prevChar === null && isArabicChar(char) || // ? arabic char preceded with a non arabic char\n !isArabicChar(prevChar) && isArabicChar(char)\n );\n }\n function arabicWordEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n return (\n // ? last arabic char\n nextChar === null || // ? next char is not arabic\n !isArabicChar(nextChar)\n );\n }\n var arabicWord_default = {\n startCheck: arabicWordStartCheck,\n endCheck: arabicWordEndCheck\n };\n\n // src/features/arab/contextCheck/arabicSentence.mjs\n function arabicSentenceStartCheck(contextParams) {\n const char = contextParams.current;\n const prevChar = contextParams.get(-1);\n return (\n // ? an arabic char preceded with a non arabic char\n (isArabicChar(char) || isTashkeelArabicChar(char)) && !isArabicChar(prevChar)\n );\n }\n function arabicSentenceEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n switch (true) {\n case nextChar === null:\n return true;\n case (!isArabicChar(nextChar) && !isTashkeelArabicChar(nextChar)): {\n const nextIsWhitespace = isWhiteSpace(nextChar);\n if (!nextIsWhitespace) return true;\n if (nextIsWhitespace) {\n let arabicCharAhead = false;\n arabicCharAhead = contextParams.lookahead.some(\n (c) => isArabicChar(c) || isTashkeelArabicChar(c)\n );\n if (!arabicCharAhead) return true;\n }\n break;\n }\n default:\n return false;\n }\n }\n var arabicSentence_default = {\n startCheck: arabicSentenceStartCheck,\n endCheck: arabicSentenceEndCheck\n };\n\n // src/features/applySubstitution.mjs\n function singleSubstitutionFormat12(action, tokens, index) {\n tokens[index].setState(action.tag, action.substitution);\n }\n function singleSubstitutionFormat22(action, tokens, index) {\n tokens[index].setState(action.tag, action.substitution);\n }\n function chainingSubstitutionFormat32(action, tokens, index) {\n for (let i = 0; i < action.substitution.length; i++) {\n const subst = action.substitution[i];\n const token = tokens[index + i];\n if (Array.isArray(subst)) {\n if (subst.length) {\n token.setState(action.tag, subst[0]);\n } else {\n token.setState(\"deleted\", true);\n }\n continue;\n }\n token.setState(action.tag, subst);\n }\n }\n function ligatureSubstitutionFormat12(action, tokens, index) {\n let token = tokens[index];\n token.setState(action.tag, action.substitution.ligGlyph);\n const compsCount = action.substitution.components.length;\n for (let i = 0; i < compsCount; i++) {\n token = tokens[index + i + 1];\n token.setState(\"deleted\", true);\n }\n }\n var SUBSTITUTIONS = {\n 11: singleSubstitutionFormat12,\n 12: singleSubstitutionFormat22,\n 63: chainingSubstitutionFormat32,\n 41: ligatureSubstitutionFormat12,\n 51: chainingSubstitutionFormat32,\n 53: chainingSubstitutionFormat32\n };\n function applySubstitution(action, tokens, index) {\n if (action instanceof SubstitutionAction && SUBSTITUTIONS[action.id]) {\n SUBSTITUTIONS[action.id](action, tokens, index);\n }\n }\n var applySubstitution_default = applySubstitution;\n\n // src/features/arab/arabicPresentationForms.mjs\n function willConnectPrev(charContextParams) {\n let backtrack = [].concat(charContextParams.backtrack);\n for (let i = backtrack.length - 1; i >= 0; i--) {\n const prevChar = backtrack[i];\n const isolated = isIsolatedArabicChar(prevChar);\n const tashkeel = isTashkeelArabicChar(prevChar);\n if (!isolated && !tashkeel) return true;\n if (isolated) return false;\n }\n return false;\n }\n function willConnectNext(charContextParams) {\n if (isIsolatedArabicChar(charContextParams.current)) return false;\n for (let i = 0; i < charContextParams.lookahead.length; i++) {\n const nextChar = charContextParams.lookahead[i];\n const tashkeel = isTashkeelArabicChar(nextChar);\n if (!tashkeel) return true;\n }\n return false;\n }\n function arabicPresentationForms(range) {\n const script = \"arab\";\n const tags = this.featuresTags[script];\n const tokens = this.tokenizer.getRangeTokens(range);\n if (tokens.length === 1) return;\n let contextParams = new ContextParams(\n tokens.map(\n (token) => token.getState(\"glyphIndex\")\n ),\n 0\n );\n const charContextParams = new ContextParams(\n tokens.map(\n (token) => token.char\n ),\n 0\n );\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (isTashkeelArabicChar(token.char)) continue;\n contextParams.setCurrentIndex(i);\n charContextParams.setCurrentIndex(i);\n let CONNECT = 0;\n if (willConnectPrev(charContextParams)) CONNECT |= 1;\n if (willConnectNext(charContextParams)) CONNECT |= 2;\n let tag;\n switch (CONNECT) {\n case 1:\n tag = \"fina\";\n break;\n case 2:\n tag = \"init\";\n break;\n case 3:\n tag = \"medi\";\n break;\n }\n if (tags.indexOf(tag) === -1) continue;\n let substitutions = this.query.lookupFeature({\n tag,\n script,\n contextParams\n });\n if (substitutions instanceof Error) {\n console.info(substitutions.message);\n continue;\n }\n for (let j = 0; j < substitutions.length; j++) {\n const action = substitutions[j];\n if (action instanceof SubstitutionAction) {\n applySubstitution_default(action, tokens, j);\n contextParams.context[j] = action.substitution;\n }\n }\n }\n }\n var arabicPresentationForms_default = arabicPresentationForms;\n\n // src/features/arab/arabicRequiredLigatures.mjs\n function getContextParams(tokens, index) {\n const context = tokens.map((token) => token.activeState.value);\n return new ContextParams(context, index || 0);\n }\n function arabicRequiredLigatures(range) {\n const script = \"arab\";\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams(tokens);\n for (let index = 0; index < contextParams.context.length; index++) {\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag: \"rlig\",\n script,\n contextParams\n });\n if (substitutions.length) {\n for (let i = 0; i < substitutions.length; i++) {\n const action = substitutions[i];\n applySubstitution_default(action, tokens, index);\n }\n contextParams = getContextParams(tokens);\n }\n }\n }\n var arabicRequiredLigatures_default = arabicRequiredLigatures;\n\n // src/features/ccmp/contextCheck/ccmpReplacement.mjs\n function ccmpReplacementStartCheck(contextParams) {\n return contextParams.index === 0 && contextParams.context.length > 1;\n }\n function ccmpReplacementEndCheck(contextParams) {\n return contextParams.index === contextParams.context.length - 1;\n }\n var ccmpReplacement_default = {\n startCheck: ccmpReplacementStartCheck,\n endCheck: ccmpReplacementEndCheck\n };\n\n // src/features/ccmp/ccmpReplacementLigatures.mjs\n function getContextParams2(tokens, index) {\n const context = tokens.map((token) => token.activeState.value);\n return new ContextParams(context, index || 0);\n }\n function ccmpReplacementLigatures(range) {\n const script = \"delf\";\n const tag = \"ccmp\";\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams2(tokens);\n for (let index = 0; index < contextParams.context.length; index++) {\n if (!this.query.getFeature({ tag, script, contextParams })) {\n continue;\n }\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag,\n script,\n contextParams\n });\n if (substitutions.length) {\n for (let i = 0; i < substitutions.length; i++) {\n const action = substitutions[i];\n applySubstitution_default(action, tokens, index);\n }\n contextParams = getContextParams2(tokens);\n }\n }\n }\n var ccmpReplacementLigatures_default = ccmpReplacementLigatures;\n\n // src/features/latn/contextCheck/latinWord.mjs\n function latinWordStartCheck(contextParams) {\n const char = contextParams.current;\n const prevChar = contextParams.get(-1);\n return (\n // ? latin first char\n prevChar === null && isLatinChar(char) || // ? latin char preceded with a non latin char\n !isLatinChar(prevChar) && isLatinChar(char)\n );\n }\n function latinWordEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n return (\n // ? last latin char\n nextChar === null || // ? next char is not latin\n !isLatinChar(nextChar)\n );\n }\n var latinWord_default = {\n startCheck: latinWordStartCheck,\n endCheck: latinWordEndCheck\n };\n\n // src/features/latn/latinLigatures.mjs\n function getContextParams3(tokens, index) {\n const context = tokens.map((token) => token.activeState.value);\n return new ContextParams(context, index || 0);\n }\n function latinLigature(range) {\n const script = \"latn\";\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams3(tokens);\n for (let index = 0; index < contextParams.context.length; index++) {\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag: \"liga\",\n script,\n contextParams\n });\n if (substitutions.length) {\n for (let i = 0; i < substitutions.length; i++) {\n const action = substitutions[i];\n applySubstitution_default(action, tokens, index);\n }\n contextParams = getContextParams3(tokens);\n }\n }\n }\n var latinLigatures_default = latinLigature;\n\n // src/features/thai/contextCheck/thaiWord.mjs\n function thaiWordStartCheck(contextParams) {\n const char = contextParams.current;\n const prevChar = contextParams.get(-1);\n return (\n // ? thai first char\n prevChar === null && isThaiChar(char) || // ? thai char preceded with a non thai char\n !isThaiChar(prevChar) && isThaiChar(char)\n );\n }\n function thaiWordEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n return (\n // ? last thai char\n nextChar === null || // ? next char is not thai\n !isThaiChar(nextChar)\n );\n }\n var thaiWord_default = {\n startCheck: thaiWordStartCheck,\n endCheck: thaiWordEndCheck\n };\n\n // src/features/thai/thaiGlyphComposition.mjs\n function getContextParams4(tokens, index) {\n const context = tokens.map((token) => token.activeState.value);\n return new ContextParams(context, index || 0);\n }\n function thaiGlyphComposition(range) {\n const script = \"thai\";\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams4(tokens, 0);\n for (let index = 0; index < contextParams.context.length; index++) {\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag: \"ccmp\",\n script,\n contextParams\n });\n if (substitutions.length) {\n for (let i = 0; i < substitutions.length; i++) {\n const action = substitutions[i];\n applySubstitution_default(action, tokens, index);\n }\n contextParams = getContextParams4(tokens, index);\n }\n }\n }\n var thaiGlyphComposition_default = thaiGlyphComposition;\n\n // src/features/thai/thaiLigatures.mjs\n function getContextParams5(tokens, index) {\n const context = tokens.map((token) => token.activeState.value);\n return new ContextParams(context, index || 0);\n }\n function thaiLigatures(range) {\n const script = \"thai\";\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams5(tokens, 0);\n for (let index = 0; index < contextParams.context.length; index++) {\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag: \"liga\",\n script,\n contextParams\n });\n if (substitutions.length) {\n for (let i = 0; i < substitutions.length; i++) {\n const action = substitutions[i];\n applySubstitution_default(action, tokens, index);\n }\n contextParams = getContextParams5(tokens, index);\n }\n }\n }\n var thaiLigatures_default = thaiLigatures;\n\n // src/features/thai/thaiRequiredLigatures.mjs\n function getContextParams6(tokens, index) {\n const context = tokens.map((token) => token.activeState.value);\n return new ContextParams(context, index || 0);\n }\n function thaiRequiredLigatures(range) {\n const script = \"thai\";\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams6(tokens, 0);\n for (let index = 0; index < contextParams.context.length; index++) {\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag: \"rlig\",\n script,\n contextParams\n });\n if (substitutions.length) {\n for (let i = 0; i < substitutions.length; i++) {\n const action = substitutions[i];\n applySubstitution_default(action, tokens, index);\n }\n contextParams = getContextParams6(tokens, index);\n }\n }\n }\n var thaiRequiredLigatures_default = thaiRequiredLigatures;\n\n // src/features/unicode/contextCheck/variationSequenceCheck.mjs\n function isVariationSequenceSelector(char) {\n if (char === null) return false;\n const charCode = char.codePointAt(0);\n return (\n // Mongolian Variation Selectors\n charCode >= 6155 && charCode <= 6157 || // Generic Variation Selectors\n charCode >= 65024 && charCode <= 65039 || // Ideographic Variation Sequences\n charCode >= 917760 && charCode <= 917999\n );\n }\n function unicodeVariationSequenceStartCheck(contextParams) {\n const char = contextParams.current;\n const nextChar = contextParams.get(1);\n return nextChar === null && isVariationSequenceSelector(char) || isVariationSequenceSelector(nextChar);\n }\n function unicodeVariationSequenceEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n return nextChar === null || !isVariationSequenceSelector(nextChar);\n }\n var variationSequenceCheck_default = {\n startCheck: unicodeVariationSequenceStartCheck,\n endCheck: unicodeVariationSequenceEndCheck\n };\n\n // src/features/unicode/variationSequences.mjs\n function unicodeVariationSequence(range) {\n const font = this.query.font;\n const tokens = this.tokenizer.getRangeTokens(range);\n tokens[1].setState(\"deleted\", true);\n if (font.tables.cmap && font.tables.cmap.varSelectorList) {\n const baseCodePoint = tokens[0].char.codePointAt(0);\n const vsCodePoint = tokens[1].char.codePointAt(0);\n const selectorLookup = font.tables.cmap.varSelectorList[vsCodePoint];\n if (selectorLookup !== void 0) {\n if (selectorLookup.nonDefaultUVS) {\n const mappings = selectorLookup.nonDefaultUVS.uvsMappings;\n if (mappings[baseCodePoint]) {\n const replacementGlyphId = mappings[baseCodePoint].glyphID;\n if (font.glyphs.glyphs[replacementGlyphId] !== void 0) {\n tokens[0].setState(\"glyphIndex\", replacementGlyphId);\n }\n }\n }\n }\n }\n }\n var variationSequences_default = unicodeVariationSequence;\n\n // src/bidi.mjs\n function Bidi(baseDir) {\n this.baseDir = baseDir || \"ltr\";\n this.tokenizer = new tokenizer_default();\n this.featuresTags = {};\n }\n Bidi.prototype.setText = function(text) {\n this.text = text;\n };\n Bidi.prototype.contextChecks = {\n ccmpReplacementCheck: ccmpReplacement_default,\n latinWordCheck: latinWord_default,\n arabicWordCheck: arabicWord_default,\n arabicSentenceCheck: arabicSentence_default,\n thaiWordCheck: thaiWord_default,\n unicodeVariationSequenceCheck: variationSequenceCheck_default\n };\n function registerContextChecker(checkId) {\n const check = this.contextChecks[`${checkId}Check`];\n return this.tokenizer.registerContextChecker(\n checkId,\n check.startCheck,\n check.endCheck\n );\n }\n function tokenizeText() {\n registerContextChecker.call(this, \"ccmpReplacement\");\n registerContextChecker.call(this, \"latinWord\");\n registerContextChecker.call(this, \"arabicWord\");\n registerContextChecker.call(this, \"arabicSentence\");\n registerContextChecker.call(this, \"thaiWord\");\n registerContextChecker.call(this, \"unicodeVariationSequence\");\n return this.tokenizer.tokenize(this.text);\n }\n function reverseArabicSentences() {\n const ranges = this.tokenizer.getContextRanges(\"arabicSentence\");\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n let rangeTokens = this.tokenizer.getRangeTokens(range);\n this.tokenizer.replaceRange(\n range.startIndex,\n range.endOffset,\n rangeTokens.reverse()\n );\n }\n }\n Bidi.prototype.registerFeatures = function(script, tags) {\n const supportedTags = tags.filter(\n (tag) => this.query.supports({ script, tag })\n );\n if (!Object.prototype.hasOwnProperty.call(this.featuresTags, script)) {\n this.featuresTags[script] = supportedTags;\n } else {\n this.featuresTags[script] = this.featuresTags[script].concat(supportedTags);\n }\n };\n Bidi.prototype.applyFeatures = function(font, features) {\n if (!font) throw new Error(\n \"No valid font was provided to apply features\"\n );\n if (!this.query) this.query = new featureQuery_default(font);\n for (let f = 0; f < features.length; f++) {\n const feature = features[f];\n if (!this.query.supports({ script: feature.script })) continue;\n this.registerFeatures(feature.script, feature.tags);\n }\n };\n Bidi.prototype.registerModifier = function(modifierId, condition, modifier) {\n this.tokenizer.registerModifier(modifierId, condition, modifier);\n };\n function checkGlyphIndexStatus() {\n if (this.tokenizer.registeredModifiers.indexOf(\"glyphIndex\") === -1) {\n throw new Error(\n \"glyphIndex modifier is required to apply arabic presentation features.\"\n );\n }\n }\n function applyArabicPresentationForms() {\n const script = \"arab\";\n if (!Object.prototype.hasOwnProperty.call(this.featuresTags, script)) return;\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges(\"arabicWord\");\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n arabicPresentationForms_default.call(this, range);\n }\n }\n function applyCcmpReplacement() {\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges(\"ccmpReplacement\");\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n ccmpReplacementLigatures_default.call(this, range);\n }\n }\n function applyArabicRequireLigatures() {\n if (!this.hasFeatureEnabled(\"arab\", \"rlig\")) return;\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges(\"arabicWord\");\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n arabicRequiredLigatures_default.call(this, range);\n }\n }\n function applyLatinLigatures() {\n if (!this.hasFeatureEnabled(\"latn\", \"liga\")) return;\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges(\"latinWord\");\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n latinLigatures_default.call(this, range);\n }\n }\n function applyUnicodeVariationSequences() {\n const ranges = this.tokenizer.getContextRanges(\"unicodeVariationSequence\");\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n variationSequences_default.call(this, range);\n }\n }\n function applyThaiFeatures() {\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges(\"thaiWord\");\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n if (this.hasFeatureEnabled(\"thai\", \"liga\")) thaiLigatures_default.call(this, range);\n if (this.hasFeatureEnabled(\"thai\", \"rlig\")) thaiRequiredLigatures_default.call(this, range);\n if (this.hasFeatureEnabled(\"thai\", \"ccmp\")) thaiGlyphComposition_default.call(this, range);\n }\n }\n Bidi.prototype.checkContextReady = function(contextId) {\n return !!this.tokenizer.getContext(contextId);\n };\n Bidi.prototype.applyFeaturesToContexts = function() {\n if (this.checkContextReady(\"ccmpReplacement\")) {\n applyCcmpReplacement.call(this);\n }\n if (this.checkContextReady(\"arabicWord\")) {\n applyArabicPresentationForms.call(this);\n applyArabicRequireLigatures.call(this);\n }\n if (this.checkContextReady(\"latinWord\")) {\n applyLatinLigatures.call(this);\n }\n if (this.checkContextReady(\"arabicSentence\")) {\n reverseArabicSentences.call(this);\n }\n if (this.checkContextReady(\"thaiWord\")) {\n applyThaiFeatures.call(this);\n }\n if (this.checkContextReady(\"unicodeVariationSequence\")) {\n applyUnicodeVariationSequences.call(this);\n }\n };\n Bidi.prototype.hasFeatureEnabled = function(script, tag) {\n return (this.featuresTags[script] || []).indexOf(tag) !== -1;\n };\n Bidi.prototype.processText = function(text) {\n if (!this.text || this.text !== text) {\n this.setText(text);\n tokenizeText.call(this);\n this.applyFeaturesToContexts();\n }\n };\n Bidi.prototype.getBidiText = function(text) {\n this.processText(text);\n return this.tokenizer.getText();\n };\n Bidi.prototype.getTextGlyphs = function(text) {\n this.processText(text);\n let indexes = [];\n for (let i = 0; i < this.tokenizer.tokens.length; i++) {\n const token = this.tokenizer.tokens[i];\n if (token.state.deleted) continue;\n const index = token.activeState.value;\n indexes.push(Array.isArray(index) ? index[0] : index);\n }\n return indexes;\n };\n var bidi_default = Bidi;\n\n // src/font.mjs\n function createDefaultNamesInfo(options) {\n return {\n fontFamily: { en: options.familyName || \" \" },\n fontSubfamily: { en: options.styleName || \" \" },\n fullName: { en: options.fullName || options.familyName + \" \" + options.styleName },\n // postScriptName may not contain any whitespace\n postScriptName: { en: options.postScriptName || (options.familyName + options.styleName).replace(/\\s/g, \"\") },\n designer: { en: options.designer || \" \" },\n designerURL: { en: options.designerURL || \" \" },\n manufacturer: { en: options.manufacturer || \" \" },\n manufacturerURL: { en: options.manufacturerURL || \" \" },\n license: { en: options.license || \" \" },\n licenseURL: { en: options.licenseURL || \" \" },\n version: { en: options.version || \"Version 0.1\" },\n description: { en: options.description || \" \" },\n copyright: { en: options.copyright || \" \" },\n trademark: { en: options.trademark || \" \" }\n };\n }\n function Font(options) {\n options = options || {};\n options.tables = options.tables || {};\n if (!options.empty) {\n if (!options.familyName) throw new Error(\"When creating a new Font object, familyName is required.\");\n if (!options.styleName) throw new Error(\"When creating a new Font object, styleName is required.\");\n if (!options.unitsPerEm) throw new Error(\"When creating a new Font object, unitsPerEm is required.\");\n if (!options.ascender) throw new Error(\"When creating a new Font object, ascender is required.\");\n if (options.descender > 0) throw new Error(\"When creating a new Font object, negative descender value is required.\");\n this.names = {};\n this.names.unicode = createDefaultNamesInfo(options);\n this.names.macintosh = createDefaultNamesInfo(options);\n this.names.windows = createDefaultNamesInfo(options);\n this.unitsPerEm = options.unitsPerEm || 1e3;\n this.ascender = options.ascender;\n this.descender = options.descender;\n this.createdTimestamp = options.createdTimestamp;\n this.italicAngle = options.italicAngle || 0;\n this.weightClass = options.weightClass || 0;\n let selection = 0;\n if (options.fsSelection) {\n selection = options.fsSelection;\n } else {\n if (this.italicAngle < 0) {\n selection |= this.fsSelectionValues.ITALIC;\n } else if (this.italicAngle > 0) {\n selection |= this.fsSelectionValues.OBLIQUE;\n }\n if (this.weightClass >= 600) {\n selection |= this.fsSelectionValues.BOLD;\n }\n if (selection === 0) {\n selection = this.fsSelectionValues.REGULAR;\n }\n }\n if (!options.panose || !Array.isArray(options.panose)) {\n options.panose = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n this.tables = Object.assign(options.tables, {\n os2: Object.assign({\n usWeightClass: options.weightClass || this.usWeightClasses.MEDIUM,\n usWidthClass: options.widthClass || this.usWidthClasses.MEDIUM,\n bFamilyType: options.panose[0] || 0,\n bSerifStyle: options.panose[1] || 0,\n bWeight: options.panose[2] || 0,\n bProportion: options.panose[3] || 0,\n bContrast: options.panose[4] || 0,\n bStrokeVariation: options.panose[5] || 0,\n bArmStyle: options.panose[6] || 0,\n bLetterform: options.panose[7] || 0,\n bMidline: options.panose[8] || 0,\n bXHeight: options.panose[9] || 0,\n fsSelection: selection\n }, options.tables.os2)\n });\n }\n this.supported = true;\n this.glyphs = new glyphset_default.GlyphSet(this, options.glyphs || []);\n this.encoding = new DefaultEncoding(this);\n this.position = new position_default(this);\n this.substitution = new substitution_default(this);\n this.tables = this.tables || {};\n this.tables = new Proxy(this.tables, {\n set: (tables, tableName, tableData) => {\n tables[tableName] = tableData;\n if (tables.fvar && (tables.gvar || tables.cff2) && !this.variation) {\n this.variation = new VariationManager(this);\n }\n return true;\n }\n });\n this.palettes = new PaletteManager(this);\n this.layers = new LayerManager(this);\n this.svgImages = new SVGImageManager(this);\n this._push = null;\n this._hmtxTableData = {};\n Object.defineProperty(this, \"hinting\", {\n get: function() {\n if (this._hinting) return this._hinting;\n if (this.outlinesFormat === \"truetype\") {\n return this._hinting = new hintingtt_default(this);\n }\n return null;\n }\n });\n }\n Font.prototype.hasChar = function(c) {\n return this.encoding.charToGlyphIndex(c) > 0;\n };\n Font.prototype.charToGlyphIndex = function(s) {\n return this.encoding.charToGlyphIndex(s);\n };\n Font.prototype.charToGlyph = function(c) {\n const glyphIndex = this.charToGlyphIndex(c);\n let glyph = this.glyphs.get(glyphIndex);\n if (!glyph) {\n glyph = this.glyphs.get(0);\n }\n return glyph;\n };\n Font.prototype.updateFeatures = function(options) {\n return this.defaultRenderOptions.features.map((feature) => {\n if (feature.script === \"latn\") {\n return {\n script: \"latn\",\n tags: feature.tags.filter((tag) => options[tag])\n };\n } else {\n return feature;\n }\n });\n };\n Font.prototype.stringToGlyphIndexes = function(s, options) {\n const bidi = new bidi_default();\n const charToGlyphIndexMod = (token) => this.charToGlyphIndex(token.char);\n bidi.registerModifier(\"glyphIndex\", null, charToGlyphIndexMod);\n let features = options ? this.updateFeatures(options.features) : this.defaultRenderOptions.features;\n bidi.applyFeatures(this, features);\n return bidi.getTextGlyphs(s);\n };\n Font.prototype.stringToGlyphs = function(s, options) {\n const indexes = this.stringToGlyphIndexes(s, options);\n let length = indexes.length;\n const glyphs = new Array(length);\n const notdef = this.glyphs.get(0);\n for (let i = 0; i < length; i += 1) {\n glyphs[i] = this.glyphs.get(indexes[i]) || notdef;\n }\n return glyphs;\n };\n Font.prototype.nameToGlyphIndex = function(name) {\n return this.glyphNames.nameToGlyphIndex(name);\n };\n Font.prototype.nameToGlyph = function(name) {\n const glyphIndex = this.nameToGlyphIndex(name);\n let glyph = this.glyphs.get(glyphIndex);\n if (!glyph) {\n glyph = this.glyphs.get(0);\n }\n return glyph;\n };\n Font.prototype.glyphIndexToName = function(gid) {\n if (!this.glyphNames.glyphIndexToName) {\n return \"\";\n }\n return this.glyphNames.glyphIndexToName(gid);\n };\n Font.prototype.getKerningValue = function(leftGlyph, rightGlyph) {\n leftGlyph = leftGlyph.index || leftGlyph;\n rightGlyph = rightGlyph.index || rightGlyph;\n const gposKerning = this.position.defaultKerningTables;\n if (gposKerning) {\n return this.position.getKerningValue(gposKerning, leftGlyph, rightGlyph);\n }\n return this.kerningPairs[leftGlyph + \",\" + rightGlyph] || 0;\n };\n Font.prototype.defaultRenderOptions = {\n kerning: true,\n features: [\n /**\n * these 4 features are required to render Arabic text properly\n * and shouldn't be turned off when rendering arabic text.\n */\n { script: \"arab\", tags: [\"init\", \"medi\", \"fina\", \"rlig\"] },\n { script: \"latn\", tags: [\"liga\", \"rlig\"] },\n { script: \"thai\", tags: [\"liga\", \"rlig\", \"ccmp\"] }\n ],\n hinting: false,\n usePalette: 0,\n drawLayers: true,\n drawSVG: true\n };\n Font.prototype.forEachGlyph = function(text, x, y, fontSize, options, callback) {\n x = x !== void 0 ? x : 0;\n y = y !== void 0 ? y : 0;\n fontSize = fontSize !== void 0 ? fontSize : 72;\n options = Object.assign({}, this.defaultRenderOptions, options);\n const fontScale = 1 / this.unitsPerEm * fontSize;\n const glyphs = this.stringToGlyphs(text, options);\n let kerningLookups;\n if (options.kerning) {\n const script = options.script || this.position.getDefaultScriptName();\n kerningLookups = this.position.getKerningTables(script, options.language);\n }\n for (let i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs[i];\n callback.call(this, glyph, x, y, fontSize, options);\n if (glyph.advanceWidth) {\n x += glyph.advanceWidth * fontScale;\n }\n if (options.kerning && i < glyphs.length - 1) {\n const kerningValue = kerningLookups ? this.position.getKerningValue(kerningLookups, glyph.index, glyphs[i + 1].index) : this.getKerningValue(glyph, glyphs[i + 1]);\n x += kerningValue * fontScale;\n }\n if (options.letterSpacing) {\n x += options.letterSpacing * fontSize;\n } else if (options.tracking) {\n x += options.tracking / 1e3 * fontSize;\n }\n }\n return x;\n };\n Font.prototype.getPath = function(text, x, y, fontSize, options) {\n options = Object.assign({}, this.defaultRenderOptions, options);\n const fullPath = new path_default();\n fullPath._layers = [];\n applyPaintType(this, fullPath, fontSize);\n if (fullPath.stroke) {\n const scale = 1 / (fullPath.unitsPerEm || 1e3) * fontSize;\n fullPath.strokeWidth *= scale;\n }\n this.forEachGlyph(text, x, y, fontSize, options, (glyph, gX, gY, gFontSize) => {\n const glyphPath = glyph.getPath(gX, gY, gFontSize, options, this);\n if (options.drawSVG || options.drawLayers) {\n const layers = glyphPath._layers;\n if (layers && layers.length) {\n for (let l = 0; l < layers.length; l++) {\n const layer = layers[l];\n fullPath._layers.push(layer);\n }\n return;\n }\n }\n fullPath.extend(glyphPath);\n });\n return fullPath;\n };\n Font.prototype.getPaths = function(text, x, y, fontSize, options) {\n options = Object.assign({}, this.defaultRenderOptions, options);\n const glyphPaths = [];\n this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) {\n const glyphPath = glyph.getPath(gX, gY, gFontSize, options, this);\n glyphPaths.push(glyphPath);\n });\n return glyphPaths;\n };\n Font.prototype.getAdvanceWidth = function(text, fontSize, options) {\n options = Object.assign({}, this.defaultRenderOptions, options);\n return this.forEachGlyph(text, 0, 0, fontSize, options, function() {\n });\n };\n Font.prototype.draw = function(ctx, text, x, y, fontSize, options) {\n const path = this.getPath(text, x, y, fontSize, options);\n path.draw(ctx);\n };\n Font.prototype.drawPoints = function(ctx, text, x, y, fontSize, options) {\n options = Object.assign({}, this.defaultRenderOptions, options);\n this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) {\n glyph.drawPoints(ctx, gX, gY, gFontSize, options, this);\n });\n };\n Font.prototype.drawMetrics = function(ctx, text, x, y, fontSize, options) {\n options = Object.assign({}, this.defaultRenderOptions, options);\n this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) {\n glyph.drawMetrics(ctx, gX, gY, gFontSize);\n });\n };\n Font.prototype.getEnglishName = function(name) {\n const translations = (this.names.unicode || this.names.macintosh || this.names.windows)[name];\n if (translations) {\n return translations.en;\n }\n };\n Font.prototype.validate = function() {\n const warnings = [];\n const _this = this;\n function assert(predicate, message) {\n if (!predicate) {\n console.warn(`[opentype.js] ${message}`);\n warnings.push(message);\n }\n }\n function assertNamePresent(name) {\n const englishName = _this.getEnglishName(name);\n assert(\n englishName && englishName.trim().length > 0,\n \"No English \" + name + \" specified.\"\n );\n }\n assertNamePresent(\"fontFamily\");\n assertNamePresent(\"weightName\");\n assertNamePresent(\"manufacturer\");\n assertNamePresent(\"copyright\");\n assertNamePresent(\"version\");\n assert(this.unitsPerEm > 0, \"No unitsPerEm specified.\");\n if (this.tables.colr) {\n const baseGlyphs = this.tables.colr.baseGlyphRecords;\n let previousID = -1;\n for (let b = 0; b < baseGlyphs.length; b++) {\n const currentGlyphID = baseGlyphs[b].glyphID;\n assert(previousID < baseGlyphs[b].glyphID, `baseGlyphs must be sorted by GlyphID in ascending order, but glyphID ${currentGlyphID} comes after ${previousID}`);\n if (previousID > baseGlyphs[b].glyphID) {\n break;\n }\n previousID = currentGlyphID;\n }\n }\n return warnings;\n };\n Font.prototype.toTables = function() {\n return sfnt_default.fontToTable(this);\n };\n Font.prototype.toBuffer = function() {\n console.warn(\"Font.toBuffer is deprecated. Use Font.toArrayBuffer instead.\");\n return this.toArrayBuffer();\n };\n Font.prototype.toArrayBuffer = function() {\n const sfntTable = this.toTables();\n const bytes = sfntTable.encode();\n const buffer = new ArrayBuffer(bytes.length);\n const intArray = new Uint8Array(buffer);\n for (let i = 0; i < bytes.length; i++) {\n intArray[i] = bytes[i];\n }\n return buffer;\n };\n Font.prototype.download = function() {\n console.error(\"DEPRECATED: platform-specific actions are to be implemented on user-side\");\n };\n Font.prototype.fsSelectionValues = {\n ITALIC: 1,\n //1\n UNDERSCORE: 2,\n //2\n NEGATIVE: 4,\n //4\n OUTLINED: 8,\n //8\n STRIKEOUT: 16,\n //16\n BOLD: 32,\n //32\n REGULAR: 64,\n //64\n USER_TYPO_METRICS: 128,\n //128\n WWS: 256,\n //256\n OBLIQUE: 512\n //512\n };\n Font.prototype.macStyleValues = {\n BOLD: 1,\n //1\n ITALIC: 2,\n //2\n UNDERLINE: 4,\n //4\n OUTLINED: 8,\n //8\n SHADOW: 16,\n //16\n CONDENSED: 32,\n //32\n EXTENDED: 64\n //64\n };\n Font.prototype.usWidthClasses = {\n ULTRA_CONDENSED: 1,\n EXTRA_CONDENSED: 2,\n CONDENSED: 3,\n SEMI_CONDENSED: 4,\n MEDIUM: 5,\n SEMI_EXPANDED: 6,\n EXPANDED: 7,\n EXTRA_EXPANDED: 8,\n ULTRA_EXPANDED: 9\n };\n Font.prototype.usWeightClasses = {\n THIN: 100,\n EXTRA_LIGHT: 200,\n LIGHT: 300,\n NORMAL: 400,\n MEDIUM: 500,\n SEMI_BOLD: 600,\n BOLD: 700,\n EXTRA_BOLD: 800,\n BLACK: 900\n };\n var font_default = Font;\n\n // src/tables/hvar.mjs\n function parseHvarTable(data, start) {\n const p = new parse_default.Parser(data, start);\n const tableVersionMajor = p.parseUShort();\n const tableVersionMinor = p.parseUShort();\n if (tableVersionMajor !== 1) {\n console.warn(`Unsupported hvar table version ${tableVersionMajor}.${tableVersionMinor}`);\n }\n const version = [\n tableVersionMajor,\n tableVersionMinor\n ];\n const itemVariationStore = p.parsePointer32(function() {\n return this.parseItemVariationStore();\n });\n const advanceWidth = p.parsePointer32(function() {\n return this.parseDeltaSetIndexMap();\n });\n const lsb = p.parsePointer32(function() {\n return this.parseDeltaSetIndexMap();\n });\n const rsb = p.parsePointer32(function() {\n return this.parseDeltaSetIndexMap();\n });\n return {\n version,\n itemVariationStore,\n advanceWidth,\n lsb,\n rsb\n };\n }\n function makeHvarTable() {\n console.warn(\"Writing of hvar tables is not yet supported.\");\n }\n var hvar_default = { make: makeHvarTable, parse: parseHvarTable };\n\n // src/tables/gdef.mjs\n var attachList = function() {\n return {\n coverage: this.parsePointer(Parser.coverage),\n attachPoints: this.parseList(Parser.pointer(Parser.uShortList))\n };\n };\n var caretValue = function() {\n var format = this.parseUShort();\n check_default.argument(\n format === 1 || format === 2 || format === 3,\n \"Unsupported CaretValue table version.\"\n );\n if (format === 1) {\n return { coordinate: this.parseShort() };\n } else if (format === 2) {\n return { pointindex: this.parseShort() };\n } else if (format === 3) {\n return { coordinate: this.parseShort() };\n }\n };\n var ligGlyph = function() {\n return this.parseList(Parser.pointer(caretValue));\n };\n var ligCaretList = function() {\n return {\n coverage: this.parsePointer(Parser.coverage),\n ligGlyphs: this.parseList(Parser.pointer(ligGlyph))\n };\n };\n var markGlyphSets = function() {\n this.parseUShort();\n return this.parseList(Parser.pointer(Parser.coverage));\n };\n function parseGDEFTable(data, start) {\n start = start || 0;\n const p = new Parser(data, start);\n const tableVersion = p.parseVersion(1);\n check_default.argument(\n tableVersion === 1 || tableVersion === 1.2 || tableVersion === 1.3,\n \"Unsupported GDEF table version.\"\n );\n var gdef = {\n version: tableVersion,\n classDef: p.parsePointer(Parser.classDef),\n attachList: p.parsePointer(attachList),\n ligCaretList: p.parsePointer(ligCaretList),\n markAttachClassDef: p.parsePointer(Parser.classDef)\n };\n if (tableVersion >= 1.2) {\n gdef.markGlyphSets = p.parsePointer(markGlyphSets);\n }\n return gdef;\n }\n var gdef_default = { parse: parseGDEFTable };\n\n // src/tables/gpos.mjs\n var subtableParsers2 = new Array(10);\n subtableParsers2[1] = function parseLookup12() {\n const start = this.offset + this.relativeOffset;\n const posformat = this.parseUShort();\n if (posformat === 1) {\n return {\n posFormat: 1,\n coverage: this.parsePointer(Parser.coverage),\n value: this.parseValueRecord()\n };\n } else if (posformat === 2) {\n return {\n posFormat: 2,\n coverage: this.parsePointer(Parser.coverage),\n values: this.parseValueRecordList()\n };\n }\n check_default.assert(false, \"0x\" + start.toString(16) + \": GPOS lookup type 1 format must be 1 or 2.\");\n };\n subtableParsers2[2] = function parseLookup22() {\n const start = this.offset + this.relativeOffset;\n const posFormat = this.parseUShort();\n check_default.assert(posFormat === 1 || posFormat === 2, \"0x\" + start.toString(16) + \": GPOS lookup type 2 format must be 1 or 2.\");\n const coverage = this.parsePointer(Parser.coverage);\n const valueFormat1 = this.parseUShort();\n const valueFormat2 = this.parseUShort();\n if (posFormat === 1) {\n return {\n posFormat,\n coverage,\n valueFormat1,\n valueFormat2,\n pairSets: this.parseList(Parser.pointer(Parser.list(function() {\n return {\n // pairValueRecord\n secondGlyph: this.parseUShort(),\n value1: this.parseValueRecord(valueFormat1),\n value2: this.parseValueRecord(valueFormat2)\n };\n })))\n };\n } else if (posFormat === 2) {\n const classDef1 = this.parsePointer(Parser.classDef);\n const classDef2 = this.parsePointer(Parser.classDef);\n const class1Count = this.parseUShort();\n const class2Count = this.parseUShort();\n return {\n // Class Pair Adjustment\n posFormat,\n coverage,\n valueFormat1,\n valueFormat2,\n classDef1,\n classDef2,\n class1Count,\n class2Count,\n classRecords: this.parseList(class1Count, Parser.list(class2Count, function() {\n return {\n value1: this.parseValueRecord(valueFormat1),\n value2: this.parseValueRecord(valueFormat2)\n };\n }))\n };\n }\n };\n subtableParsers2[3] = function parseLookup32() {\n return { error: \"GPOS Lookup 3 not supported\" };\n };\n subtableParsers2[4] = function parseLookup42() {\n return { error: \"GPOS Lookup 4 not supported\" };\n };\n subtableParsers2[5] = function parseLookup52() {\n return { error: \"GPOS Lookup 5 not supported\" };\n };\n subtableParsers2[6] = function parseLookup62() {\n return { error: \"GPOS Lookup 6 not supported\" };\n };\n subtableParsers2[7] = function parseLookup72() {\n return { error: \"GPOS Lookup 7 not supported\" };\n };\n subtableParsers2[8] = function parseLookup82() {\n return { error: \"GPOS Lookup 8 not supported\" };\n };\n subtableParsers2[9] = function parseLookup9() {\n return { error: \"GPOS Lookup 9 not supported\" };\n };\n function parseGposTable(data, start) {\n start = start || 0;\n const p = new Parser(data, start);\n const tableVersion = p.parseVersion(1);\n check_default.argument(tableVersion === 1 || tableVersion === 1.1, \"Unsupported GPOS table version \" + tableVersion);\n if (tableVersion === 1) {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers2)\n };\n } else {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers2),\n variations: p.parseFeatureVariationsList()\n };\n }\n }\n var subtableMakers2 = new Array(10);\n function makeGposTable(gpos) {\n return new table_default.Table(\"GPOS\", [\n { name: \"version\", type: \"ULONG\", value: 65536 },\n { name: \"scripts\", type: \"TABLE\", value: new table_default.ScriptList(gpos.scripts) },\n { name: \"features\", type: \"TABLE\", value: new table_default.FeatureList(gpos.features) },\n { name: \"lookups\", type: \"TABLE\", value: new table_default.LookupList(gpos.lookups, subtableMakers2) }\n ]);\n }\n var gpos_default = { parse: parseGposTable, make: makeGposTable };\n\n // src/tables/kern.mjs\n function parseWindowsKernTable(p) {\n const pairs = {};\n p.skip(\"uShort\");\n const subtableVersion = p.parseUShort();\n check_default.argument(subtableVersion === 0, \"Unsupported kern sub-table version.\");\n p.skip(\"uShort\", 2);\n const nPairs = p.parseUShort();\n p.skip(\"uShort\", 3);\n for (let i = 0; i < nPairs; i += 1) {\n const leftIndex = p.parseUShort();\n const rightIndex = p.parseUShort();\n const value = p.parseShort();\n pairs[leftIndex + \",\" + rightIndex] = value;\n }\n return pairs;\n }\n function parseMacKernTable(p) {\n const pairs = {};\n p.skip(\"uShort\");\n const nTables = p.parseULong();\n if (nTables > 1) {\n console.warn(\"Only the first kern subtable is supported.\");\n }\n p.skip(\"uLong\");\n const coverage = p.parseUShort();\n const subtableVersion = coverage & 255;\n p.skip(\"uShort\");\n if (subtableVersion === 0) {\n const nPairs = p.parseUShort();\n p.skip(\"uShort\", 3);\n for (let i = 0; i < nPairs; i += 1) {\n const leftIndex = p.parseUShort();\n const rightIndex = p.parseUShort();\n const value = p.parseShort();\n pairs[leftIndex + \",\" + rightIndex] = value;\n }\n }\n return pairs;\n }\n function parseKernTable(data, start) {\n const p = new parse_default.Parser(data, start);\n const tableVersion = p.parseUShort();\n if (tableVersion === 0) {\n return parseWindowsKernTable(p);\n } else if (tableVersion === 1) {\n return parseMacKernTable(p);\n } else {\n throw new Error(\"Unsupported kern table version (\" + tableVersion + \").\");\n }\n }\n var kern_default = { parse: parseKernTable };\n\n // src/tables/loca.mjs\n function parseLocaTable(data, start, numGlyphs, shortVersion) {\n const p = new parse_default.Parser(data, start);\n const parseFn = shortVersion ? p.parseUShort : p.parseULong;\n const glyphOffsets = [];\n for (let i = 0; i < numGlyphs + 1; i += 1) {\n let glyphOffset = parseFn.call(p);\n if (shortVersion) {\n glyphOffset *= 2;\n }\n glyphOffsets.push(glyphOffset);\n }\n return glyphOffsets;\n }\n var loca_default = { parse: parseLocaTable };\n\n // src/opentype.mjs\n function parseOpenTypeTableEntries(data, numTables) {\n const tableEntries = [];\n let p = 12;\n for (let i = 0; i < numTables; i += 1) {\n const tag = parse_default.getTag(data, p);\n const checksum = parse_default.getULong(data, p + 4);\n const offset = parse_default.getULong(data, p + 8);\n const length = parse_default.getULong(data, p + 12);\n tableEntries.push({ tag, checksum, offset, length, compression: false });\n p += 16;\n }\n return tableEntries;\n }\n function parseWOFFTableEntries(data, numTables) {\n const tableEntries = [];\n let p = 44;\n for (let i = 0; i < numTables; i += 1) {\n const tag = parse_default.getTag(data, p);\n const offset = parse_default.getULong(data, p + 4);\n const compLength = parse_default.getULong(data, p + 8);\n const origLength = parse_default.getULong(data, p + 12);\n let compression;\n if (compLength < origLength) {\n compression = \"WOFF\";\n } else {\n compression = false;\n }\n tableEntries.push({\n tag,\n offset,\n compression,\n compressedLength: compLength,\n length: origLength\n });\n p += 20;\n }\n return tableEntries;\n }\n function uncompressTable(data, tableEntry) {\n if (tableEntry.compression === \"WOFF\") {\n const inBuffer = new Uint8Array(data.buffer, tableEntry.offset + 2, tableEntry.compressedLength - 2);\n const outBuffer = new Uint8Array(tableEntry.length);\n tinf_uncompress(inBuffer, outBuffer);\n if (outBuffer.byteLength !== tableEntry.length) {\n throw new Error(\"Decompression error: \" + tableEntry.tag + \" decompressed length doesn't match recorded length\");\n }\n const view = new DataView(outBuffer.buffer, 0);\n return { data: view, offset: 0 };\n } else {\n return { data, offset: tableEntry.offset };\n }\n }\n function parseBuffer(buffer, opt = {}) {\n let indexToLocFormat;\n let ltagTable;\n const font = new font_default({ empty: true });\n if (buffer.constructor !== ArrayBuffer) {\n buffer = new Uint8Array(buffer).buffer;\n }\n const data = new DataView(buffer, 0);\n let numTables;\n let tableEntries = [];\n const signature = parse_default.getTag(data, 0);\n if (signature === String.fromCharCode(0, 1, 0, 0) || signature === \"true\" || signature === \"typ1\") {\n font.outlinesFormat = \"truetype\";\n numTables = parse_default.getUShort(data, 4);\n tableEntries = parseOpenTypeTableEntries(data, numTables);\n } else if (signature === \"OTTO\") {\n font.outlinesFormat = \"cff\";\n numTables = parse_default.getUShort(data, 4);\n tableEntries = parseOpenTypeTableEntries(data, numTables);\n } else if (signature === \"wOFF\") {\n const flavor = parse_default.getTag(data, 4);\n if (flavor === String.fromCharCode(0, 1, 0, 0)) {\n font.outlinesFormat = \"truetype\";\n } else if (flavor === \"OTTO\") {\n font.outlinesFormat = \"cff\";\n } else {\n throw new Error(\"Unsupported OpenType flavor \" + signature);\n }\n numTables = parse_default.getUShort(data, 12);\n tableEntries = parseWOFFTableEntries(data, numTables);\n } else if (signature === \"wOF2\") {\n const issue = \"https://github.com/opentypejs/opentype.js/issues/183#issuecomment-1147228025\";\n throw new Error(\"WOFF2 require an external decompressor library, see examples at: \" + issue);\n } else {\n throw new Error(\"Unsupported OpenType signature \" + signature);\n }\n let cffTableEntry;\n let cff2TableEntry;\n let fvarTableEntry;\n let statTableEntry;\n let gvarTableEntry;\n let cvarTableEntry;\n let avarTableEntry;\n let glyfTableEntry;\n let gdefTableEntry;\n let gposTableEntry;\n let gsubTableEntry;\n let hmtxTableEntry;\n let hvarTableEntry;\n let kernTableEntry;\n let locaTableEntry;\n let nameTableEntry;\n let metaTableEntry;\n let p;\n for (let i = 0; i < numTables; i += 1) {\n const tableEntry = tableEntries[i];\n let table;\n switch (tableEntry.tag) {\n case \"avar\":\n avarTableEntry = tableEntry;\n break;\n case \"cmap\":\n table = uncompressTable(data, tableEntry);\n font.tables.cmap = cmap_default.parse(table.data, table.offset);\n font.encoding = new CmapEncoding(font.tables.cmap);\n break;\n case \"cvt \":\n table = uncompressTable(data, tableEntry);\n p = new parse_default.Parser(table.data, table.offset);\n font.tables.cvt = p.parseShortList(tableEntry.length / 2);\n break;\n case \"fvar\":\n fvarTableEntry = tableEntry;\n break;\n case \"STAT\":\n statTableEntry = tableEntry;\n break;\n case \"gvar\":\n gvarTableEntry = tableEntry;\n break;\n case \"cvar\":\n cvarTableEntry = tableEntry;\n break;\n case \"fpgm\":\n table = uncompressTable(data, tableEntry);\n p = new parse_default.Parser(table.data, table.offset);\n font.tables.fpgm = p.parseByteList(tableEntry.length);\n break;\n case \"head\":\n table = uncompressTable(data, tableEntry);\n font.tables.head = head_default.parse(table.data, table.offset);\n font.unitsPerEm = font.tables.head.unitsPerEm;\n indexToLocFormat = font.tables.head.indexToLocFormat;\n break;\n case \"hhea\":\n table = uncompressTable(data, tableEntry);\n font.tables.hhea = hhea_default.parse(table.data, table.offset);\n font.ascender = font.tables.hhea.ascender;\n font.descender = font.tables.hhea.descender;\n font.numberOfHMetrics = font.tables.hhea.numberOfHMetrics;\n break;\n case \"HVAR\":\n hvarTableEntry = tableEntry;\n break;\n case \"hmtx\":\n hmtxTableEntry = tableEntry;\n break;\n case \"ltag\":\n table = uncompressTable(data, tableEntry);\n ltagTable = ltag_default.parse(table.data, table.offset);\n break;\n case \"COLR\":\n table = uncompressTable(data, tableEntry);\n font.tables.colr = colr_default.parse(table.data, table.offset);\n break;\n case \"CPAL\":\n table = uncompressTable(data, tableEntry);\n font.tables.cpal = cpal_default.parse(table.data, table.offset);\n break;\n case \"maxp\":\n table = uncompressTable(data, tableEntry);\n font.tables.maxp = maxp_default.parse(table.data, table.offset);\n font.numGlyphs = font.tables.maxp.numGlyphs;\n break;\n case \"name\":\n nameTableEntry = tableEntry;\n break;\n case \"OS/2\":\n table = uncompressTable(data, tableEntry);\n font.tables.os2 = os2_default.parse(table.data, table.offset);\n break;\n case \"post\":\n table = uncompressTable(data, tableEntry);\n font.tables.post = post_default.parse(table.data, table.offset);\n font.glyphNames = new GlyphNames(font.tables.post);\n break;\n case \"prep\":\n table = uncompressTable(data, tableEntry);\n p = new parse_default.Parser(table.data, table.offset);\n font.tables.prep = p.parseByteList(tableEntry.length);\n break;\n case \"glyf\":\n glyfTableEntry = tableEntry;\n break;\n case \"loca\":\n locaTableEntry = tableEntry;\n break;\n case \"CFF \":\n cffTableEntry = tableEntry;\n break;\n case \"CFF2\":\n cff2TableEntry = tableEntry;\n break;\n case \"kern\":\n kernTableEntry = tableEntry;\n break;\n case \"GDEF\":\n gdefTableEntry = tableEntry;\n break;\n case \"GPOS\":\n gposTableEntry = tableEntry;\n break;\n case \"GSUB\":\n gsubTableEntry = tableEntry;\n break;\n case \"meta\":\n metaTableEntry = tableEntry;\n break;\n case \"gasp\":\n try {\n table = uncompressTable(data, tableEntry);\n font.tables.gasp = gasp_default.parse(table.data, table.offset);\n } catch (e) {\n console.warn(\"Failed to parse gasp table, skipping.\");\n console.warn(e);\n }\n break;\n case \"SVG \":\n table = uncompressTable(data, tableEntry);\n font.tables.svg = svg_default.parse(table.data, table.offset);\n break;\n default:\n break;\n }\n }\n const nameTable = uncompressTable(data, nameTableEntry);\n font.tables.name = name_default.parse(nameTable.data, nameTable.offset, ltagTable);\n font.names = font.tables.name;\n if (glyfTableEntry && locaTableEntry) {\n const shortVersion = indexToLocFormat === 0;\n const locaTable = uncompressTable(data, locaTableEntry);\n const locaOffsets = loca_default.parse(locaTable.data, locaTable.offset, font.numGlyphs, shortVersion);\n const glyfTable = uncompressTable(data, glyfTableEntry);\n font.glyphs = glyf_default.parse(glyfTable.data, glyfTable.offset, locaOffsets, font, opt);\n } else if (cffTableEntry) {\n const cffTable = uncompressTable(data, cffTableEntry);\n cff_default.parse(cffTable.data, cffTable.offset, font, opt);\n } else if (cff2TableEntry) {\n const cffTable2 = uncompressTable(data, cff2TableEntry);\n cff_default.parse(cffTable2.data, cffTable2.offset, font, opt);\n } else {\n throw new Error(\"Font doesn't contain TrueType, CFF or CFF2 outlines.\");\n }\n const hmtxTable = uncompressTable(data, hmtxTableEntry);\n hmtx_default.parse(font, hmtxTable.data, hmtxTable.offset, font.numberOfHMetrics, font.numGlyphs, font.glyphs, opt);\n addGlyphNames(font, opt);\n if (kernTableEntry) {\n const kernTable = uncompressTable(data, kernTableEntry);\n font.kerningPairs = kern_default.parse(kernTable.data, kernTable.offset);\n } else {\n font.kerningPairs = {};\n }\n if (gdefTableEntry) {\n const gdefTable = uncompressTable(data, gdefTableEntry);\n font.tables.gdef = gdef_default.parse(gdefTable.data, gdefTable.offset);\n }\n if (gposTableEntry) {\n const gposTable = uncompressTable(data, gposTableEntry);\n font.tables.gpos = gpos_default.parse(gposTable.data, gposTable.offset);\n font.position.init();\n }\n if (gsubTableEntry) {\n const gsubTable = uncompressTable(data, gsubTableEntry);\n font.tables.gsub = gsub_default.parse(gsubTable.data, gsubTable.offset);\n }\n if (fvarTableEntry) {\n const fvarTable = uncompressTable(data, fvarTableEntry);\n font.tables.fvar = fvar_default.parse(fvarTable.data, fvarTable.offset, font.names);\n }\n if (statTableEntry) {\n const statTable = uncompressTable(data, statTableEntry);\n font.tables.stat = stat_default.parse(statTable.data, statTable.offset, font.tables.fvar);\n }\n if (gvarTableEntry) {\n if (!fvarTableEntry) {\n console.warn(\"This font provides a gvar table, but no fvar table, which is required for variable fonts.\");\n }\n if (!glyfTableEntry) {\n console.warn(\"This font provides a gvar table, but no glyf table. Glyph variation only works with TrueType outlines.\");\n }\n const gvarTable = uncompressTable(data, gvarTableEntry);\n font.tables.gvar = gvar_default.parse(gvarTable.data, gvarTable.offset, font.tables.fvar, font.glyphs);\n }\n if (cvarTableEntry) {\n if (!fvarTableEntry) {\n console.warn(\"This font provides a cvar table, but no fvar table, which is required for variable fonts.\");\n }\n if (!font.tables.cvt) {\n console.warn(\"This font provides a cvar table, but no cvt table which could be made variable.\");\n }\n if (!glyfTableEntry) {\n console.warn(\"This font provides a gvar table, but no glyf table. Glyph variation only works with TrueType outlines.\");\n }\n const cvarTable = uncompressTable(data, cvarTableEntry);\n font.tables.cvar = cvar_default.parse(cvarTable.data, cvarTable.offset, font.tables.fvar, font.tables.cvt || []);\n }\n if (avarTableEntry) {\n if (!fvarTableEntry) {\n console.warn(\"This font provides an avar table, but no fvar table, which is required for variable fonts.\");\n }\n const avarTable = uncompressTable(data, avarTableEntry);\n font.tables.avar = avar_default.parse(avarTable.data, avarTable.offset, font.tables.fvar);\n }\n if (hvarTableEntry) {\n if (!fvarTableEntry) {\n console.warn(\"This font provides an HVAR table, but no fvar table, which is required for variable fonts.\");\n }\n if (!hmtxTableEntry) {\n console.warn(\"This font provides an HVAR table, but no hmtx table to vary.\");\n }\n const hvarTable = uncompressTable(data, hvarTableEntry);\n font.tables.hvar = hvar_default.parse(hvarTable.data, hvarTable.offset, font.tables.fvar);\n }\n if (metaTableEntry) {\n const metaTable = uncompressTable(data, metaTableEntry);\n font.tables.meta = meta_default.parse(metaTable.data, metaTable.offset);\n font.metas = font.tables.meta;\n }\n font.palettes = new PaletteManager(font);\n return font;\n }\n function load() {\n console.error(\"DEPRECATED! migrate to: opentype.parse(buffer, opt) See: https://github.com/opentypejs/opentype.js/issues/675\");\n }\n function loadSync() {\n console.error('DEPRECATED! migrate to: opentype.parse(require(\"fs\").readFileSync(url), opt)');\n }\n return __toCommonJS(opentype_exports);\n})();\n(function (root, factory) { if (typeof define === 'function' && define.amd)define(factory); else if (typeof module === 'object' && module.exports)module.exports = factory(); else root.opentype = factory(); }(typeof self !== 'undefined' ? self : this, () => ({...opentype,'default':opentype})));\n", "import * as opentype from 'opentype.js';\nimport { LRUCache } from 'lru-cache';\n\nimport { IFont, ILigatureData, IFlattenedLookupTree, ILookupTree, IOptions } from './types';\nimport mergeTrees from './merge';\nimport walkTree from './walk';\nimport mergeRange from './mergeRange';\n\nimport buildTreeGsubType6Format1 from './processors/6-1';\nimport buildTreeGsubType6Format2 from './processors/6-2';\nimport buildTreeGsubType6Format3 from './processors/6-3';\nimport buildTreeGsubType8Format1 from './processors/8-1';\nimport flatten from './flatten';\n\nclass FontImpl implements IFont {\n private _font: opentype.Font;\n private _lookupTrees: { tree: IFlattenedLookupTree, processForward: boolean }[] = [];\n private _glyphLookups: { [glyphId: string]: number[] } = {};\n private _cache?: LRUCache<string, ILigatureData | [number, number][]>;\n\n constructor(font: opentype.Font, options: Required<IOptions>) {\n this._font = font;\n\n if (options.cacheSize > 0) {\n this._cache = new LRUCache({\n maxSize: options.cacheSize,\n sizeCalculation: ((val: ILigatureData | [number, number][], key: string) => key.length) as any\n });\n }\n\n const caltFeatures = this._font.tables.gsub && this._font.tables.gsub.features.filter((f: { tag: string }) => f.tag === 'calt') || [];\n const lookupIndices: number[] = caltFeatures\n .reduce((acc: number[], val: { feature: { lookupListIndexes: number[] } }) => [...acc, ...val.feature.lookupListIndexes], []);\n\n const allLookups = this._font.tables.gsub && this._font.tables.gsub.lookups || [];\n const lookupGroups = allLookups.filter((l: unknown, i: number) => lookupIndices.some(idx => idx === i));\n\n for (const [index, lookup] of lookupGroups.entries()) {\n const trees: ILookupTree[] = [];\n switch (lookup.lookupType) {\n case 6:\n for (const [index, table] of lookup.subtables.entries()) {\n switch (table.substFormat) {\n case 1:\n trees.push(buildTreeGsubType6Format1(table, allLookups, index));\n break;\n case 2:\n trees.push(buildTreeGsubType6Format2(table, allLookups, index));\n break;\n case 3:\n trees.push(buildTreeGsubType6Format3(table, allLookups, index));\n break;\n }\n }\n break;\n case 8:\n for (const [index, table] of lookup.subtables.entries()) {\n trees.push(buildTreeGsubType8Format1(table, index));\n }\n break;\n }\n\n const tree = flatten(mergeTrees(trees));\n\n this._lookupTrees.push({\n tree,\n processForward: lookup.lookupType !== 8\n });\n\n for (const glyphId of Object.keys(tree)) {\n if (!this._glyphLookups[glyphId]) {\n this._glyphLookups[glyphId] = [];\n }\n\n this._glyphLookups[glyphId].push(index);\n }\n }\n }\n\n public findLigatures(text: string): ILigatureData {\n const cached = this._cache && this._cache.get(text);\n if (cached && !Array.isArray(cached)) {\n return cached;\n }\n\n const glyphIds: number[] = [];\n for (const char of text) {\n glyphIds.push(this._font.charToGlyphIndex(char));\n }\n\n // If there are no lookup groups, there's no point looking for\n // replacements. This gives us a minor performance boost for fonts with\n // no ligatures\n if (this._lookupTrees.length === 0) {\n return {\n inputGlyphs: glyphIds,\n outputGlyphs: glyphIds,\n contextRanges: []\n };\n }\n\n const result = this._findInternal(glyphIds.slice());\n const finalResult: ILigatureData = {\n inputGlyphs: glyphIds,\n outputGlyphs: result.sequence,\n contextRanges: result.ranges\n };\n if (this._cache) {\n this._cache.set(text, finalResult);\n }\n\n return finalResult;\n }\n\n public findLigatureRanges(text: string): [number, number][] {\n // Short circuit the process if there are no possible ligatures in the\n // font\n if (this._lookupTrees.length === 0) {\n return [];\n }\n\n const cached = this._cache && this._cache.get(text);\n if (cached) {\n return Array.isArray(cached) ? cached : cached.contextRanges;\n }\n\n const glyphIds: number[] = [];\n for (const char of text) {\n glyphIds.push(this._font.charToGlyphIndex(char));\n }\n\n const result = this._findInternal(glyphIds);\n if (this._cache) {\n this._cache.set(text, result.ranges);\n }\n\n return result.ranges;\n }\n\n private _findInternal(sequence: number[]): { sequence: number[], ranges: [number, number][] } {\n const ranges: [number, number][] = [];\n\n let nextLookup = this._getNextLookup(sequence, 0);\n while (nextLookup.index !== null) {\n const lookup = this._lookupTrees[nextLookup.index];\n if (lookup.processForward) {\n let lastGlyphIndex = nextLookup.last;\n for (let i = nextLookup.first; i < lastGlyphIndex; i++) {\n const result = walkTree(lookup.tree, sequence, i, i);\n if (result) {\n for (let j = 0; j < result.substitutions.length; j++) {\n const sub = result.substitutions[j];\n if (sub !== null) {\n sequence[i + j] = sub;\n }\n }\n\n mergeRange(\n ranges,\n result.contextRange[0] + i,\n result.contextRange[1] + i\n );\n\n // Substitutions can end up extending the search range\n if (i + result.length >= lastGlyphIndex) {\n lastGlyphIndex = i + result.length + 1;\n }\n\n i += result.length - 1;\n }\n }\n } else {\n // We don't need to do the lastGlyphIndex tracking here because\n // reverse processing isn't allowed to replace more than one\n // character at a time.\n for (let i = nextLookup.last - 1; i >= nextLookup.first; i--) {\n const result = walkTree(lookup.tree, sequence, i, i);\n if (result) {\n for (let j = 0; j < result.substitutions.length; j++) {\n const sub = result.substitutions[j];\n if (sub !== null) {\n sequence[i + j] = sub;\n }\n }\n\n mergeRange(\n ranges,\n result.contextRange[0] + i,\n result.contextRange[1] + i\n );\n\n i -= result.length - 1;\n }\n }\n }\n\n nextLookup = this._getNextLookup(sequence, nextLookup.index + 1);\n }\n\n return { sequence, ranges };\n }\n\n /**\n * Returns the lookup and glyph range for the first lookup that might\n * contain a match.\n *\n * @param sequence Input glyph sequence\n * @param start The first input to try\n */\n private _getNextLookup(sequence: number[], start: number): { index: number | null, first: number, last: number } {\n const result: { index: number | null, first: number, last: number } = {\n index: null,\n first: Infinity,\n last: -1\n };\n\n // Loop through each glyph and find the first valid lookup for it\n for (let i = 0; i < sequence.length; i++) {\n const lookups = this._glyphLookups[sequence[i]];\n if (!lookups) {\n continue;\n }\n\n for (let j = 0; j < lookups.length; j++) {\n const lookupIndex = lookups[j];\n if (lookupIndex >= start) {\n // Update the lookup information if it's the one we're\n // storing or earlier than it.\n if (result.index === null || lookupIndex <= result.index) {\n result.index = lookupIndex;\n\n if (result.first > i) {\n result.first = i;\n }\n\n result.last = i + 1;\n }\n\n break;\n }\n }\n }\n\n return result;\n }\n}\n\n/**\n * Load the font from it's binary data. The returned value can be used to find\n * ligatures for the font.\n *\n * @param buffer ArrayBuffer of the font to load\n */\nexport function loadBuffer(buffer: ArrayBuffer, options?: IOptions): IFont {\n const font = opentype.parse(buffer);\n return new FontImpl(font, {\n cacheSize: 0,\n ...options\n });\n}\n\nexport { IFont as Font, ILigatureData as LigatureData, IOptions as Options };\n", "// simple node version that imports from node builtin\n// this is built to both ESM and CommonJS on the 'node' import path\nimport { tracingChannel, channel } from 'node:diagnostics_channel'\nimport type { TracingChannel, Channel } from 'node:diagnostics_channel'\nexport type { TracingChannel, Channel }\nexport const metrics: Channel<unknown> = channel('lru-cache:metrics')\nexport const tracing: TracingChannel<unknown> = tracingChannel('lru-cache')\n", "/**\n * this provides the default Perf object source, either the\n * `performance` global, or the `Date` constructor.\n *\n * it can be passed in via configuration to override it\n * for a single LRU object.\n */\nexport type Perf = { now: () => number }\nexport const defaultPerf: Perf =\n (\n typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ) ?\n /* c8 ignore start - this gets covered, but c8 gets confused */\n performance\n : /* c8 ignore stop */ Date\n", "/**\n * @module LRUCache\n */\n\nimport { metrics, tracing } from './diagnostics-channel.js'\nimport { defaultPerf } from './perf.js'\nimport type { Perf } from './perf.js'\nexport type { Perf } from './perf.js'\n\nconst hasSubscribers = () =>\n metrics.hasSubscribers || tracing.hasSubscribers\n\nconst warned = new Set<string>()\n\n// either a function or a class\n// oxlint-disable-next-line no-explicit-any\ntype ForC = ((...a: any[]) => any) | { new (...a: any[]): any }\n\n/* c8 ignore start */\nconst PROCESS = (\n typeof process === 'object' && !!process ?\n process\n : {}) as { [k: string]: unknown }\n/* c8 ignore stop */\n\nconst emitWarning = (\n msg: string,\n type: string,\n code: string,\n fn: ForC,\n) => {\n if (typeof PROCESS.emitWarning === 'function') {\n PROCESS.emitWarning(msg, type, code, fn)\n } else {\n //oxlint-disable-next-line no-console\n console.error(`[${code}] ${type}: ${msg}`)\n }\n}\nconst shouldWarn = (code: string) => !warned.has(code)\n\nconst TYPE = Symbol('type')\nexport type PosInt = number & { [TYPE]: 'Positive Integer' }\nexport type Index = number & { [TYPE]: 'LRUCache Index' }\n\nconst isPosInt = (n: unknown): n is PosInt =>\n !!n && n === Math.floor(n as number) && n > 0 && isFinite(n)\n\nexport type UintArray = Uint8Array | Uint16Array | Uint32Array\nexport type NumberArray = UintArray | number[]\n\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values. Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\n/* c8 ignore start */\nconst getUintArray = (max: number) =>\n !isPosInt(max) ? null\n : max <= Math.pow(2, 8) ? Uint8Array\n : max <= Math.pow(2, 16) ? Uint16Array\n : max <= Math.pow(2, 32) ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER ? ZeroArray\n : null\n/* c8 ignore stop */\n\nclass ZeroArray extends Array<number> {\n constructor(size: number) {\n super(size)\n this.fill(0)\n }\n}\nexport type { ZeroArray }\nexport type { Stack }\n\nexport type StackLike = Stack | Index[]\nclass Stack {\n /* c8 ignore start - not sure why this is showing up uncovered?? */\n heap: NumberArray\n /* c8 ignore stop */\n length: number\n // private constructor\n static #constructing: boolean = false\n static create(max: number): StackLike {\n const HeapCls = getUintArray(max)\n if (!HeapCls) return []\n Stack.#constructing = true\n const s = new Stack(max, HeapCls)\n Stack.#constructing = false\n return s\n }\n constructor(max: number, HeapCls: { new (n: number): NumberArray }) {\n /* c8 ignore start */\n if (!Stack.#constructing) {\n throw new TypeError('instantiate Stack using Stack.create(n)')\n }\n /* c8 ignore stop */\n this.heap = new HeapCls(max)\n this.length = 0\n }\n push(n: Index) {\n this.heap[this.length++] = n\n }\n pop(): Index {\n return this.heap[--this.length] as Index\n }\n}\n\n/**\n * Promise representing an in-progress {@link LRUCache#fetch} call\n */\nexport type BackgroundFetch<V> = Promise<V | undefined> & {\n __returned: BackgroundFetch<V> | undefined\n __abortController: AbortController\n __staleWhileFetching: V | undefined\n}\n\nexport type DisposeTask<K, V> = [\n value: V,\n key: K,\n reason: LRUCache.DisposeReason,\n]\n\nexport namespace LRUCache {\n /**\n * An integer greater than 0, reflecting the calculated size of items\n */\n export type Size = number\n\n /**\n * Integer greater than 0, representing some number of milliseconds, or the\n * time at which a TTL started counting from.\n */\n export type Milliseconds = number\n\n /**\n * An integer greater than 0, reflecting a number of items\n */\n export type Count = number\n\n /**\n * The reason why an item was removed from the cache, passed\n * to the {@link Disposer} methods.\n *\n * - `evict`: The item was evicted because it is the least recently used,\n * and the cache is full.\n * - `set`: A new value was set, overwriting the old value being disposed.\n * - `delete`: The item was explicitly deleted, either by calling\n * {@link LRUCache#delete}, {@link LRUCache#clear}, or\n * {@link LRUCache#set} with an undefined value.\n * - `expire`: The item was removed due to exceeding its TTL.\n * - `fetch`: A {@link OptionsBase#fetchMethod} operation returned\n * `undefined` or was aborted, causing the item to be deleted.\n */\n export type DisposeReason =\n | 'evict'\n | 'set'\n | 'delete'\n | 'expire'\n | 'fetch'\n /**\n * A method called upon item removal, passed as the\n * {@link OptionsBase.dispose} and/or\n * {@link OptionsBase.disposeAfter} options.\n */\n export type Disposer<K, V> = (\n value: V,\n key: K,\n reason: DisposeReason,\n ) => void\n\n /**\n * The reason why an item was added to the cache, passed\n * to the {@link Inserter} methods.\n *\n * - `add`: the item was not found in the cache, and was added\n * - `update`: the item was in the cache, with the same value provided\n * - `replace`: the item was in the cache, and replaced\n */\n export type InsertReason = 'add' | 'update' | 'replace'\n\n /**\n * A method called upon item insertion, passed as the\n * {@link OptionsBase.insert}\n */\n export type Inserter<K, V> = (\n value: V,\n key: K,\n reason: InsertReason,\n ) => void\n\n /**\n * A function that returns the effective calculated size\n * of an entry in the cache.\n */\n export type SizeCalculator<K, V> = (value: V, key: K) => Size\n\n /**\n * Options provided to the\n * {@link OptionsBase.fetchMethod} function.\n */\n export interface FetcherOptions<K, V, FC = unknown> {\n signal: AbortSignal\n options: FetcherFetchOptions<K, V, FC>\n /**\n * Object provided in the {@link FetchOptions.context} option to\n * {@link LRUCache#fetch}\n */\n context: FC\n }\n\n /**\n * Occasionally, it may be useful to track the internal behavior of the\n * cache, particularly for logging, debugging, or for behavior within the\n * `fetchMethod`. To do this, you can pass a `status` object to the\n * {@link LRUCache#fetch}, {@link LRUCache#get}, {@link LRUCache#set},\n * {@link LRUCache#memo}, and {@link LRUCache#has} methods.\n *\n * The `status` option should be a plain JavaScript object. The following\n * fields will be set on it appropriately, depending on the situation.\n *\n * These objects are also the context objects passed to listeners on the\n * `lru-cache:metrics` diagnostic channel, and the `lru-cache` tracing\n * channels, in platforms that support them.\n */\n export interface Status<K, V, FC = unknown> {\n /**\n * The operation being performed\n */\n op?: 'get' | 'set' | 'memo' | 'fetch' | 'delete' | 'has' | 'peek'\n /**\n * The status of a set() operation.\n *\n * - add: the item was not found in the cache, and was added\n * - update: the item was in the cache, with the same value provided\n * - replace: the item was in the cache, and replaced\n * - miss: the item was not added to the cache for some reason\n */\n set?: 'add' | 'update' | 'replace' | 'miss' | 'deleted'\n\n /**\n * The status of a delete() operation.\n */\n delete?: LRUCache.DisposeReason\n\n /**\n * The result of a peek() operation\n *\n * - hit: the item was found and returned\n * - stale: the item is in the cache, but past its ttl and not returned\n * - miss: item not in the cache\n */\n peek?: 'hit' | 'miss' | 'stale'\n\n /**\n * The status of a memo() operation.\n *\n * - 'hit': the item was found in the cache and returned\n * - 'miss': the `memoMethod` function was called\n */\n memo?: 'hit' | 'miss'\n\n /**\n * The `context` option provided to a memo or fetch operation\n *\n * In practice, of course, this will be the same type as the `FC`\n * fetch context param used to instantiate the LRUCache, but the\n * convolutions of threading that through would get quite complicated,\n * and preclude forcing/forbidding the passing of a `context` param\n * where it is/isn't expected, which is more valuable for error\n * prevention.\n */\n context?: unknown\n\n /**\n * the ttl stored for the item, or undefined if ttls are not used.\n */\n ttl?: Milliseconds\n\n /**\n * the start time for the item, or undefined if ttls are not used.\n */\n start?: Milliseconds\n\n /**\n * The timestamp used for TTL calculation\n */\n now?: Milliseconds\n\n /**\n * the remaining ttl for the item, or undefined if ttls are not used.\n */\n remainingTTL?: Milliseconds\n\n /**\n * The calculated size for the item, if sizes are used.\n */\n entrySize?: Size\n\n /**\n * The total calculated size of the cache, if sizes are used.\n */\n totalCalculatedSize?: Size\n\n /**\n * A flag indicating that the item was not stored, due to exceeding the\n * {@link OptionsBase.maxEntrySize}\n */\n maxEntrySizeExceeded?: true\n\n /**\n * The key that was set or retrieved\n */\n key?: K\n\n /**\n * The value that was set\n */\n value?: V\n\n /**\n * The old value, specified in the case of `set:'replace'`\n */\n oldValue?: V\n\n /**\n * The results of a {@link LRUCache#has} operation\n *\n * - hit: the item was found in the cache\n * - stale: the item was found in the cache, but is stale\n * - miss: the item was not found in the cache\n */\n has?: 'hit' | 'stale' | 'miss'\n\n /**\n * The status of a {@link LRUCache#fetch} operation.\n * Note that this can change as the underlying fetch() moves through\n * various states.\n *\n * - inflight: there is another fetch() for this key which is in process\n * - get: there is no {@link OptionsBase.fetchMethod}, so\n * {@link LRUCache#get} was called.\n * - miss: the item is not in cache, and will be fetched.\n * - hit: the item is in the cache, and was resolved immediately.\n * - stale: the item is in the cache, but stale.\n * - refresh: the item is in the cache, and not stale, but\n * {@link FetchOptions.forceRefresh} was specified.\n */\n fetch?: 'get' | 'inflight' | 'miss' | 'hit' | 'stale' | 'refresh'\n\n /**\n * `forceRefresh` option was used for either a fetch or memo operation\n */\n forceRefresh?: boolean\n\n /**\n * The {@link OptionsBase.fetchMethod} was called\n */\n fetchDispatched?: true\n\n /**\n * The cached value was updated after a successful call to\n * {@link OptionsBase.fetchMethod}\n */\n fetchUpdated?: true\n\n /**\n * The reason for a fetch() rejection. Either the error raised by the\n * {@link OptionsBase.fetchMethod}, or the reason for an\n * AbortSignal.\n */\n fetchError?: Error\n\n /**\n * The fetch received an abort signal\n */\n fetchAborted?: true\n\n /**\n * The abort signal received was ignored, and the fetch was allowed to\n * continue in the background.\n */\n fetchAbortIgnored?: true\n\n /**\n * The fetchMethod promise resolved successfully\n */\n fetchResolved?: true\n\n /**\n * The fetchMethod promise was rejected\n */\n fetchRejected?: true\n\n /**\n * The status of a {@link LRUCache#get} operation.\n *\n * - fetching: The item is currently being fetched. If a previous value\n * is present and allowed, that will be returned.\n * - stale: The item is in the cache, and is stale. If it was returned,\n * then the `returnedStale` flag will be set.\n * - stale-fetching: The value is being fetched in the background, but is\n * currently stale. If the stale value was returned, then the\n * `returnedStale` flag will be set.\n * - hit: the item is in the cache\n * - miss: the item is not in the cache\n */\n get?: 'stale' | 'hit' | 'miss' | 'fetching' | 'stale-fetching'\n\n /**\n * A fetch or get operation returned a stale value.\n */\n returnedStale?: true\n\n /**\n * A tracingChannel trace was started for this operation\n */\n trace?: boolean\n\n /**\n * A reference to the cache instance associated with this operation\n */\n cache?: LRUCache<K & {}, V & {}, FC>\n }\n\n /**\n * options which override the options set in the LRUCache constructor\n * when calling {@link LRUCache#fetch}.\n *\n * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n * {@link OptionsBase.noDeleteOnFetchRejection},\n * {@link OptionsBase.allowStaleOnFetchRejection},\n * {@link FetchOptions.forceRefresh}, and\n * {@link FetcherOptions.context}\n *\n * Any of these may be modified in the {@link OptionsBase.fetchMethod}\n * function, but the {@link GetOptions} fields will of course have no\n * effect, as the {@link LRUCache#get} call already happened by the time\n * the fetchMethod is called.\n */\n export interface FetcherFetchOptions<K, V, FC = unknown> extends Pick<\n OptionsBase<K, V, FC>,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n | 'noDeleteOnFetchRejection'\n | 'allowStaleOnFetchRejection'\n | 'ignoreFetchAbort'\n | 'allowStaleOnFetchAbort'\n > {\n status?: Status<K, V, FC>\n size?: Size\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#fetch} method.\n */\n export interface FetchOptions<K, V, FC> extends FetcherFetchOptions<\n K,\n V,\n FC\n > {\n /**\n * Set to true to force a re-load of the existing data, even if it\n * is not yet stale.\n */\n forceRefresh?: boolean\n /**\n * Context provided to the {@link OptionsBase.fetchMethod} as\n * the {@link FetcherOptions.context} param.\n *\n * If the FC type is specified as unknown (the default),\n * undefined or void, then this is optional. Otherwise, it will\n * be required.\n */\n context?: FC\n signal?: AbortSignal\n status?: Status<K, V, FC>\n }\n /**\n * Options provided to {@link LRUCache#fetch} when the FC type is something\n * other than `unknown`, `undefined`, or `void`\n */\n export interface FetchOptionsWithContext<K, V, FC> extends FetchOptions<\n K,\n V,\n FC\n > {\n context: FC\n }\n /**\n * Options provided to {@link LRUCache#fetch} when the FC type is\n * `undefined` or `void`\n */\n export interface FetchOptionsNoContext<\n K,\n V,\n FC extends undefined | void = undefined,\n > extends FetchOptions<K, V, FC> {\n context?: undefined\n }\n\n export interface MemoOptions<K, V, FC = unknown> extends Pick<\n OptionsBase<K, V, FC>,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n | 'noDeleteOnFetchRejection'\n | 'allowStaleOnFetchRejection'\n | 'ignoreFetchAbort'\n | 'allowStaleOnFetchAbort'\n > {\n /**\n * Set to true to force a re-load of the existing data, even if it\n * is not yet stale.\n */\n forceRefresh?: boolean\n /**\n * Context provided to the {@link OptionsBase.memoMethod} as\n * the {@link MemoizerOptions.context} param.\n *\n * If the FC type is specified as unknown (the default),\n * undefined or void, then this is optional. Otherwise, it will\n * be required.\n */\n context?: FC\n status?: Status<K, V, FC>\n }\n /**\n * Options provided to {@link LRUCache#memo} when the FC type is something\n * other than `unknown`, `undefined`, or `void`\n */\n export interface MemoOptionsWithContext<K, V, FC> extends MemoOptions<\n K,\n V,\n FC\n > {\n context: FC\n }\n /**\n * Options provided to {@link LRUCache#memo} when the FC type is\n * `undefined` or `void`\n */\n export interface MemoOptionsNoContext<\n K,\n V,\n FC extends undefined | void = undefined,\n > extends MemoOptions<K, V, FC> {\n context?: undefined\n }\n\n /**\n * Options provided to the\n * {@link OptionsBase.memoMethod} function.\n */\n export interface MemoizerOptions<K, V, FC = unknown> {\n options: MemoizerMemoOptions<K, V, FC>\n /**\n * Object provided in the {@link MemoOptions.context} option to\n * {@link LRUCache#memo}\n */\n context: FC\n }\n\n /**\n * options which override the options set in the LRUCache constructor\n * when calling {@link LRUCache#memo}.\n *\n * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n * {@link MemoOptions.forceRefresh}, and\n * {@link MemoOptions.context}\n *\n * Any of these may be modified in the {@link OptionsBase.memoMethod}\n * function, but the {@link GetOptions} fields will of course have no\n * effect, as the {@link LRUCache#get} call already happened by the time\n * the memoMethod is called.\n */\n export interface MemoizerMemoOptions<K, V, FC = unknown> extends Pick<\n OptionsBase<K, V, FC>,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n > {\n status?: Status<K, V, FC>\n size?: Size\n start?: Milliseconds\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#has} method.\n */\n export interface HasOptions<K, V, FC> extends Pick<\n OptionsBase<K, V, FC>,\n 'updateAgeOnHas'\n > {\n status?: Status<K, V, FC>\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#get} method.\n */\n export interface GetOptions<K, V, FC> extends Pick<\n OptionsBase<K, V, FC>,\n 'allowStale' | 'updateAgeOnGet' | 'noDeleteOnStaleGet'\n > {\n status?: Status<K, V, FC>\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#peek} method.\n */\n export interface PeekOptions<K, V, FC> extends Pick<\n OptionsBase<K, V, FC>,\n 'allowStale'\n > {\n status?: Status<K, V, FC>\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#set} method.\n */\n export interface SetOptions<K, V, FC> extends Pick<\n OptionsBase<K, V, FC>,\n 'sizeCalculation' | 'ttl' | 'noDisposeOnSet' | 'noUpdateTTL'\n > {\n /**\n * If size tracking is enabled, then setting an explicit size\n * in the {@link LRUCache#set} call will prevent calling the\n * {@link OptionsBase.sizeCalculation} function.\n */\n size?: Size\n /**\n * If TTL tracking is enabled, then setting an explicit start\n * time in the {@link LRUCache#set} call will override the\n * default time from `performance.now()` or `Date.now()`.\n *\n * Note that it must be a valid value for whichever time-tracking\n * method is in use.\n */\n start?: Milliseconds\n status?: Status<K, V, FC>\n }\n\n /**\n * The type signature for the {@link OptionsBase.fetchMethod} option.\n */\n export type Fetcher<K, V, FC = unknown> = (\n key: K,\n staleValue: V | undefined,\n options: FetcherOptions<K, V, FC>,\n ) => Promise<V | undefined | void> | V | undefined | void\n\n /**\n * the type signature for the {@link OptionsBase.memoMethod} option.\n */\n export type Memoizer<K, V, FC = unknown> = (\n key: K,\n staleValue: V | undefined,\n options: MemoizerOptions<K, V, FC>,\n ) => V\n\n /**\n * Options which may be passed to the {@link LRUCache} constructor.\n *\n * Most of these may be overridden in the various options that use\n * them.\n *\n * Despite all being technically optional, the constructor requires that\n * a cache is at minimum limited by one or more of {@link OptionsBase.max},\n * {@link OptionsBase.ttl}, or {@link OptionsBase.maxSize}.\n *\n * If {@link OptionsBase.ttl} is used alone, then it is strongly advised\n * (and in fact required by the type definitions here) that the cache\n * also set {@link OptionsBase.ttlAutopurge}, to prevent potentially\n * unbounded storage.\n *\n * All options are also available on the {@link LRUCache} instance, making\n * it safe to pass an LRUCache instance as the options argumemnt to\n * make another empty cache of the same type.\n *\n * Some options are marked as read-only, because changing them after\n * instantiation is not safe. Changing any of the other options will of\n * course only have an effect on subsequent method calls.\n */\n export interface OptionsBase<K, V, FC> {\n /**\n * The maximum number of items to store in the cache before evicting\n * old entries. This is read-only on the {@link LRUCache} instance,\n * and may not be overridden.\n *\n * If set, then storage space will be pre-allocated at construction\n * time, and the cache will perform significantly faster.\n *\n * Note that significantly fewer items may be stored, if\n * {@link OptionsBase.maxSize} and/or {@link OptionsBase.ttl} are also\n * set.\n *\n * **It is strongly recommended to set a `max` to prevent unbounded growth\n * of the cache.**\n */\n max?: Count\n\n /**\n * Max time in milliseconds for items to live in cache before they are\n * considered stale. Note that stale items are NOT preemptively removed by\n * default, and MAY live in the cache, contributing to its LRU max, long\n * after they have expired, unless {@link OptionsBase.ttlAutopurge} is\n * set.\n *\n * If set to `0` (the default value), then that means \"do not track\n * TTL\", not \"expire immediately\".\n *\n * Also, as this cache is optimized for LRU/MRU operations, some of\n * the staleness/TTL checks will reduce performance, as they will incur\n * overhead by deleting items.\n *\n * This is not primarily a TTL cache, and does not make strong TTL\n * guarantees. There is no pre-emptive pruning of expired items, but you\n * _may_ set a TTL on the cache, and it will treat expired items as missing\n * when they are fetched, and delete them.\n *\n * Optional, but must be a non-negative integer in ms if specified.\n *\n * This may be overridden by passing an options object to `cache.set()`.\n *\n * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n * positive integer if set.\n *\n * Even if ttl tracking is enabled, **it is strongly recommended to set a\n * `max` to prevent unbounded growth of the cache.**\n *\n * If ttl tracking is enabled, and `max` and `maxSize` are not set,\n * and `ttlAutopurge` is not set, then a warning will be emitted\n * cautioning about the potential for unbounded memory consumption.\n * (The TypeScript definitions will also discourage this.)\n */\n ttl?: Milliseconds\n\n /**\n * Minimum amount of time in ms in which to check for staleness.\n * Defaults to 1, which means that the current time is checked\n * at most once per millisecond.\n *\n * Set to 0 to check the current time every time staleness is tested.\n * (This reduces performance, and is theoretically unnecessary.)\n *\n * Setting this to a higher value will improve performance somewhat\n * while using ttl tracking, albeit at the expense of keeping stale\n * items around a bit longer than their TTLs would indicate.\n *\n * @default 1\n */\n ttlResolution?: Milliseconds\n\n /**\n * Preemptively remove stale items from the cache.\n *\n * Note that this may *significantly* degrade performance, especially if\n * the cache is storing a large number of items. It is almost always best\n * to just leave the stale items in the cache, and let them fall out as new\n * items are added.\n *\n * Note that this means that {@link OptionsBase.allowStale} is a bit\n * pointless, as stale items will be deleted almost as soon as they\n * expire.\n *\n * Use with caution!\n */\n ttlAutopurge?: boolean\n\n /**\n * When using time-expiring entries with `ttl`, setting this to `true` will\n * make each item's age reset to 0 whenever it is retrieved from cache with\n * {@link LRUCache#get}, causing it to not expire. (It can still fall out\n * of cache based on recency of use, of course.)\n *\n * Has no effect if {@link OptionsBase.ttl} is not set.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n */\n updateAgeOnGet?: boolean\n\n /**\n * When using time-expiring entries with `ttl`, setting this to `true` will\n * make each item's age reset to 0 whenever its presence in the cache is\n * checked with {@link LRUCache#has}, causing it to not expire. (It can\n * still fall out of cache based on recency of use, of course.)\n *\n * Has no effect if {@link OptionsBase.ttl} is not set.\n */\n updateAgeOnHas?: boolean\n\n /**\n * Allow {@link LRUCache#get} and {@link LRUCache#fetch} calls to return\n * stale data, if available.\n *\n * By default, if you set `ttl`, stale items will only be deleted from the\n * cache when you `get(key)`. That is, it's not preemptively pruning items,\n * unless {@link OptionsBase.ttlAutopurge} is set.\n *\n * If you set `allowStale:true`, it'll return the stale value *as well as*\n * deleting it. If you don't set this, then it'll return `undefined` when\n * you try to get a stale entry.\n *\n * Note that when a stale entry is fetched, _even if it is returned due to\n * `allowStale` being set_, it is removed from the cache immediately. You\n * can suppress this behavior by setting\n * {@link OptionsBase.noDeleteOnStaleGet}, either in the constructor, or in\n * the options provided to {@link LRUCache#get}.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n * The `cache.has()` method will always return `false` for stale items.\n *\n * Only relevant if a ttl is set.\n */\n allowStale?: boolean\n\n /**\n * Function that is called on items when they are dropped from the\n * cache, as `dispose(value, key, reason)`.\n *\n * This can be handy if you want to close file descriptors or do\n * other cleanup tasks when items are no longer stored in the cache.\n *\n * **NOTE**: It is called _before_ the item has been fully removed\n * from the cache, so if you want to put it right back in, you need\n * to wait until the next tick. If you try to add it back in during\n * the `dispose()` function call, it will break things in subtle and\n * weird ways.\n *\n * Unlike several other options, this may _not_ be overridden by\n * passing an option to `set()`, for performance reasons.\n *\n * The `reason` will be one of the following strings, corresponding\n * to the reason for the item's deletion:\n *\n * - `evict` Item was evicted to make space for a new addition\n * - `set` Item was overwritten by a new value\n * - `expire` Item expired its TTL\n * - `fetch` Item was deleted due to a failed or aborted fetch, or a\n * fetchMethod returning `undefined.\n * - `delete` Item was removed by explicit `cache.delete(key)`,\n * `cache.clear()`, or `cache.set(key, undefined)`.\n */\n dispose?: Disposer<K, V>\n\n /**\n * Function that is called when new items are inserted into the cache,\n * as `onInsert(value, key, reason)`.\n *\n * This can be useful if you need to perform actions when an item is\n * added, such as logging or tracking insertions.\n *\n * Unlike some other options, this may _not_ be overridden by passing\n * an option to `set()`, for performance and consistency reasons.\n */\n onInsert?: Inserter<K, V>\n\n /**\n * The same as {@link OptionsBase.dispose}, but called *after* the entry\n * is completely removed and the cache is once again in a clean state.\n *\n * It is safe to add an item right back into the cache at this point.\n * However, note that it is *very* easy to inadvertently create infinite\n * recursion this way.\n */\n disposeAfter?: Disposer<K, V>\n\n /**\n * Set to true to suppress calling the\n * {@link OptionsBase.dispose} function if the entry key is\n * still accessible within the cache.\n *\n * This may be overridden by passing an options object to\n * {@link LRUCache#set}.\n *\n * Only relevant if `dispose` or `disposeAfter` are set.\n */\n noDisposeOnSet?: boolean\n\n /**\n * Boolean flag to tell the cache to not update the TTL when setting a new\n * value for an existing key (ie, when updating a value rather than\n * inserting a new value). Note that the TTL value is _always_ set (if\n * provided) when adding a new entry into the cache.\n *\n * Has no effect if a {@link OptionsBase.ttl} is not set.\n *\n * May be passed as an option to {@link LRUCache#set}.\n */\n noUpdateTTL?: boolean\n\n /**\n * Set to a positive integer to track the sizes of items added to the\n * cache, and automatically evict items in order to stay below this size.\n * Note that this may result in fewer than `max` items being stored.\n *\n * Attempting to add an item to the cache whose calculated size is greater\n * that this amount will be a no-op. The item will not be cached, and no\n * other items will be evicted.\n *\n * Optional, must be a positive integer if provided.\n *\n * Sets `maxEntrySize` to the same value, unless a different value is\n * provided for `maxEntrySize`.\n *\n * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n * positive integer if set.\n *\n * Even if size tracking is enabled, **it is strongly recommended to set a\n * `max` to prevent unbounded growth of the cache.**\n *\n * Note also that size tracking can negatively impact performance,\n * though for most cases, only minimally.\n */\n maxSize?: Size\n\n /**\n * The effective size for background fetch promises.\n *\n * This has no effect unless `maxSize` and `sizeCalculation` are used,\n * and a {@link LRUCache.OptionsBase.fetchMethod} is provided to\n * support {@link LRUCache#fetch}.\n *\n * If a stale value is present in the cache, then the effective size of\n * the background fetch is the size of the stale item it will eventually\n * replace. If not, then this value is used as its effective size.\n *\n * @default 1\n */\n backgroundFetchSize?: number\n\n /**\n * The maximum allowed size for any single item in the cache.\n *\n * If a larger item is passed to {@link LRUCache#set} or returned by a\n * {@link OptionsBase.fetchMethod} or {@link OptionsBase.memoMethod}, then\n * it will not be stored in the cache.\n *\n * Attempting to add an item whose calculated size is greater than\n * this amount will not cache the item or evict any old items, but\n * WILL delete an existing value if one is already present.\n *\n * Optional, must be a positive integer if provided. Defaults to\n * the value of `maxSize` if provided.\n */\n maxEntrySize?: Size\n\n /**\n * A function that returns a number indicating the item's size.\n *\n * Requires {@link OptionsBase.maxSize} to be set.\n *\n * If not provided, and {@link OptionsBase.maxSize} or\n * {@link OptionsBase.maxEntrySize} are set, then all\n * {@link LRUCache#set} calls **must** provide an explicit\n * {@link SetOptions.size} or sizeCalculation param.\n */\n sizeCalculation?: SizeCalculator<K, V>\n\n /**\n * Method that provides the implementation for {@link LRUCache#fetch}\n *\n * ```ts\n * fetchMethod(key, staleValue, { signal, options, context })\n * ```\n *\n * If `fetchMethod` is not provided, then `cache.fetch(key)` is equivalent\n * to `Promise.resolve(cache.get(key))`.\n *\n * If at any time, `signal.aborted` is set to `true`, or if the\n * `signal.onabort` method is called, or if it emits an `'abort'` event\n * which you can listen to with `addEventListener`, then that means that\n * the fetch should be abandoned. This may be passed along to async\n * functions aware of AbortController/AbortSignal behavior.\n *\n * The `fetchMethod` should **only** return `undefined` or a Promise\n * resolving to `undefined` if the AbortController signaled an `abort`\n * event. In all other cases, it should return or resolve to a value\n * suitable for adding to the cache.\n *\n * The `options` object is a union of the options that may be provided to\n * `set()` and `get()`. If they are modified, then that will result in\n * modifying the settings to `cache.set()` when the value is resolved, and\n * in the case of\n * {@link OptionsBase.noDeleteOnFetchRejection} and\n * {@link OptionsBase.allowStaleOnFetchRejection}, the handling of\n * `fetchMethod` failures.\n *\n * For example, a DNS cache may update the TTL based on the value returned\n * from a remote DNS server by changing `options.ttl` in the `fetchMethod`.\n */\n fetchMethod?: Fetcher<K, V, FC>\n\n /**\n * Method that provides the implementation for {@link LRUCache#memo}\n */\n memoMethod?: Memoizer<K, V, FC>\n\n /**\n * Set to true to suppress the deletion of stale data when a\n * {@link OptionsBase.fetchMethod} returns a rejected promise.\n */\n noDeleteOnFetchRejection?: boolean\n\n /**\n * Do not delete stale items when they are retrieved with\n * {@link LRUCache#get}.\n *\n * Note that the `get` return value will still be `undefined`\n * unless {@link OptionsBase.allowStale} is true.\n *\n * When using time-expiring entries with `ttl`, by default stale\n * items will be removed from the cache when the key is accessed\n * with `cache.get()`.\n *\n * Setting this option will cause stale items to remain in the cache, until\n * they are explicitly deleted with `cache.delete(key)`, or retrieved with\n * `noDeleteOnStaleGet` set to `false`.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n *\n * Only relevant if a ttl is used.\n */\n noDeleteOnStaleGet?: boolean\n\n /**\n * Set to true to allow returning stale data when a\n * {@link OptionsBase.fetchMethod} throws an error or returns a rejected\n * promise.\n *\n * This differs from using {@link OptionsBase.allowStale} in that stale\n * data will ONLY be returned in the case that the {@link LRUCache#fetch}\n * fails, not any other times.\n *\n * If a `fetchMethod` fails, and there is no stale value available, the\n * `fetch()` will resolve to `undefined`. Ie, all `fetchMethod` errors are\n * suppressed.\n *\n * Implies `noDeleteOnFetchRejection`.\n *\n * This may be set in calls to `fetch()`, or defaulted on the constructor,\n * or overridden by modifying the options object in the `fetchMethod`.\n */\n allowStaleOnFetchRejection?: boolean\n\n /**\n * Set to true to return a stale value from the cache when the\n * `AbortSignal` passed to the {@link OptionsBase.fetchMethod} dispatches\n * an `'abort'` event, whether user-triggered, or due to internal cache\n * behavior.\n *\n * Unless {@link OptionsBase.ignoreFetchAbort} is also set, the underlying\n * {@link OptionsBase.fetchMethod} will still be considered canceled, and\n * any value it returns will be ignored and not cached.\n *\n * Caveat: since fetches are aborted when a new value is explicitly\n * set in the cache, this can lead to fetch returning a stale value,\n * since that was the fallback value _at the moment the `fetch()` was\n * initiated_, even though the new updated value is now present in\n * the cache.\n *\n * For example:\n *\n * ```ts\n * const cache = new LRUCache<string, any>({\n * ttl: 100,\n * fetchMethod: async (url, oldValue, { signal }) => {\n * const res = await fetch(url, { signal })\n * return await res.json()\n * }\n * })\n * cache.set('https://example.com/', { some: 'data' })\n * // 100ms go by...\n * const result = cache.fetch('https://example.com/')\n * cache.set('https://example.com/', { other: 'thing' })\n * console.log(await result) // { some: 'data' }\n * console.log(cache.get('https://example.com/')) // { other: 'thing' }\n * ```\n */\n allowStaleOnFetchAbort?: boolean\n\n /**\n * Set to true to ignore the `abort` event emitted by the `AbortSignal`\n * object passed to {@link OptionsBase.fetchMethod}, and still cache the\n * resulting resolution value, as long as it is not `undefined`.\n *\n * When used on its own, this means aborted {@link LRUCache#fetch} calls\n * are not immediately resolved or rejected when they are aborted, and\n * instead take the full time to await.\n *\n * When used with {@link OptionsBase.allowStaleOnFetchAbort}, aborted\n * {@link LRUCache#fetch} calls will resolve immediately to their stale\n * cached value or `undefined`, and will continue to process and eventually\n * update the cache when they resolve, as long as the resulting value is\n * not `undefined`, thus supporting a \"return stale on timeout while\n * refreshing\" mechanism by passing `AbortSignal.timeout(n)` as the signal.\n *\n * For example:\n *\n * ```ts\n * const c = new LRUCache({\n * ttl: 100,\n * ignoreFetchAbort: true,\n * allowStaleOnFetchAbort: true,\n * fetchMethod: async (key, oldValue, { signal }) => {\n * // note: do NOT pass the signal to fetch()!\n * // let's say this fetch can take a long time.\n * const res = await fetch(`https://slow-backend-server/${key}`)\n * return await res.json()\n * },\n * })\n *\n * // this will return the stale value after 100ms, while still\n * // updating in the background for next time.\n * const val = await c.fetch('key', { signal: AbortSignal.timeout(100) })\n * ```\n *\n * **Note**: regardless of this setting, an `abort` event _is still\n * emitted on the `AbortSignal` object_, so may result in invalid results\n * when passed to other underlying APIs that use AbortSignals.\n *\n * This may be overridden in the {@link OptionsBase.fetchMethod} or the\n * call to {@link LRUCache#fetch}.\n */\n ignoreFetchAbort?: boolean\n\n /**\n * In some cases, you may want to swap out the performance/Date object\n * used for TTL tracking. This should almost certainly NOT be done in\n * production environments!\n *\n * This value defaults to `global.performance` if it has a `now()` method,\n * or the `global.Date` object otherwise.\n */\n perf?: Perf\n }\n\n export interface OptionsMaxLimit<K, V, FC> extends OptionsBase<\n K,\n V,\n FC\n > {\n max: Count\n }\n export interface OptionsTTLLimit<K, V, FC> extends OptionsBase<\n K,\n V,\n FC\n > {\n ttl: Milliseconds\n ttlAutopurge: boolean\n }\n export interface OptionsSizeLimit<K, V, FC> extends OptionsBase<\n K,\n V,\n FC\n > {\n maxSize: Size\n }\n\n /**\n * The valid safe options for the {@link LRUCache} constructor\n */\n export type Options<K, V, FC> =\n | OptionsMaxLimit<K, V, FC>\n | OptionsSizeLimit<K, V, FC>\n | OptionsTTLLimit<K, V, FC>\n\n /**\n * Entry objects used by {@link LRUCache#load} and {@link LRUCache#dump},\n * and returned by {@link LRUCache#info}.\n */\n export interface Entry<V> {\n value: V\n ttl?: Milliseconds\n size?: Size\n start?: Milliseconds\n }\n}\n\n/**\n * Default export, the thing you're using this module to get.\n *\n * The `K` and `V` types define the key and value types, respectively. The\n * optional `FC` type defines the type of the `context` object passed to\n * `cache.fetch()` and `cache.memo()`.\n *\n * Keys and values **must not** be `null` or `undefined`.\n *\n * All properties from the options object (with the exception of `max`,\n * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are\n * added as normal public members. (The listed options are read-only getters.)\n *\n * Changing any of these will alter the defaults for subsequent method calls.\n */\nexport class LRUCache<K extends {}, V extends {}, FC = unknown> {\n // options that cannot be changed without disaster\n readonly #max: LRUCache.Count\n readonly #maxSize: LRUCache.Size\n readonly #dispose?: LRUCache.Disposer<K, V>\n readonly #onInsert?: LRUCache.Inserter<K, V>\n readonly #disposeAfter?: LRUCache.Disposer<K, V>\n readonly #fetchMethod?: LRUCache.Fetcher<K, V, FC>\n readonly #memoMethod?: LRUCache.Memoizer<K, V, FC>\n readonly #perf: Perf\n\n /**\n * {@link LRUCache.OptionsBase.perf}\n */\n get perf() {\n return this.#perf\n }\n\n /**\n * {@link LRUCache.OptionsBase.ttl}\n */\n ttl: LRUCache.Milliseconds\n\n /**\n * {@link LRUCache.OptionsBase.ttlResolution}\n */\n ttlResolution: LRUCache.Milliseconds\n /**\n * {@link LRUCache.OptionsBase.ttlAutopurge}\n */\n ttlAutopurge: boolean\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnGet}\n */\n updateAgeOnGet: boolean\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnHas}\n */\n updateAgeOnHas: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStale}\n */\n allowStale: boolean\n\n /**\n * {@link LRUCache.OptionsBase.noDisposeOnSet}\n */\n noDisposeOnSet: boolean\n /**\n * {@link LRUCache.OptionsBase.noUpdateTTL}\n */\n noUpdateTTL: boolean\n /**\n * {@link LRUCache.OptionsBase.maxEntrySize}\n */\n maxEntrySize: LRUCache.Size\n /**\n * {@link LRUCache.OptionsBase.sizeCalculation}\n */\n sizeCalculation?: LRUCache.SizeCalculator<K, V>\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n */\n noDeleteOnFetchRejection: boolean\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n */\n noDeleteOnStaleGet: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n */\n allowStaleOnFetchAbort: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n */\n allowStaleOnFetchRejection: boolean\n /**\n * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n */\n ignoreFetchAbort: boolean\n\n /** {@link LRUCache.OptionsBase.backgroundFetchSize} */\n backgroundFetchSize: number\n\n // computed properties\n #size: LRUCache.Count\n #calculatedSize: LRUCache.Size\n #keyMap: Map<K, Index>\n #keyList: (K | undefined)[]\n #valList: (V | BackgroundFetch<V> | undefined)[]\n #next: NumberArray\n #prev: NumberArray\n #head: Index\n #tail: Index\n #free: StackLike\n #disposed?: DisposeTask<K, V>[]\n #sizes?: ZeroArray\n #starts?: ZeroArray\n #ttls?: ZeroArray\n #autopurgeTimers?: (undefined | ReturnType<typeof setTimeout>)[]\n\n #hasDispose: boolean\n #hasFetchMethod: boolean\n #hasDisposeAfter: boolean\n #hasOnInsert: boolean\n\n /**\n * Do not call this method unless you need to inspect the\n * inner workings of the cache. If anything returned by this\n * object is modified in any way, strange breakage may occur.\n *\n * These fields are private for a reason!\n *\n * @internal\n */\n static unsafeExposeInternals<\n K extends {},\n V extends {},\n FC extends unknown = unknown,\n >(c: LRUCache<K, V, FC>) {\n return {\n // properties\n starts: c.#starts,\n ttls: c.#ttls,\n autopurgeTimers: c.#autopurgeTimers,\n sizes: c.#sizes,\n keyMap: c.#keyMap as Map<K, number>,\n keyList: c.#keyList,\n valList: c.#valList,\n next: c.#next,\n prev: c.#prev,\n get head() {\n return c.#head\n },\n get tail() {\n return c.#tail\n },\n free: c.#free,\n // methods\n isBackgroundFetch: (p: unknown) => c.#isBackgroundFetch(p),\n backgroundFetch: (\n k: K,\n index: number | undefined,\n options: LRUCache.FetchOptions<K, V, FC>,\n context: unknown,\n ): BackgroundFetch<V> =>\n c.#backgroundFetch(\n k,\n index as Index | undefined,\n options,\n context as FC,\n ),\n moveToTail: (index: number): void => c.#moveToTail(index as Index),\n indexes: (options?: { allowStale: boolean }) => c.#indexes(options),\n rindexes: (options?: { allowStale: boolean }) =>\n c.#rindexes(options),\n isStale: (index: number | undefined) => c.#isStale(index as Index),\n }\n }\n\n // Protected read-only members\n\n /**\n * {@link LRUCache.OptionsBase.max} (read-only)\n */\n get max(): LRUCache.Count {\n return this.#max\n }\n /**\n * {@link LRUCache.OptionsBase.maxSize} (read-only)\n */\n get maxSize(): LRUCache.Count {\n return this.#maxSize\n }\n /**\n * The total computed size of items in the cache (read-only)\n */\n get calculatedSize(): LRUCache.Size {\n return this.#calculatedSize\n }\n /**\n * The number of items stored in the cache (read-only)\n */\n get size(): LRUCache.Count {\n return this.#size\n }\n /**\n * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n */\n get fetchMethod(): LRUCache.Fetcher<K, V, FC> | undefined {\n return this.#fetchMethod\n }\n get memoMethod(): LRUCache.Memoizer<K, V, FC> | undefined {\n return this.#memoMethod\n }\n /**\n * {@link LRUCache.OptionsBase.dispose} (read-only)\n */\n get dispose() {\n return this.#dispose\n }\n /**\n * {@link LRUCache.OptionsBase.onInsert} (read-only)\n */\n get onInsert() {\n return this.#onInsert\n }\n /**\n * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n */\n get disposeAfter() {\n return this.#disposeAfter\n }\n\n constructor(options: LRUCache.Options<K, V, FC> | LRUCache<K, V, FC>) {\n const {\n max = 0,\n ttl,\n ttlResolution = 1,\n ttlAutopurge,\n updateAgeOnGet,\n updateAgeOnHas,\n allowStale,\n dispose,\n onInsert,\n disposeAfter,\n noDisposeOnSet,\n noUpdateTTL,\n maxSize = 0,\n maxEntrySize = 0,\n sizeCalculation,\n fetchMethod,\n memoMethod,\n noDeleteOnFetchRejection,\n noDeleteOnStaleGet,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n backgroundFetchSize = 1,\n perf,\n } = options\n\n this.backgroundFetchSize = backgroundFetchSize\n\n if (perf !== undefined) {\n if (typeof perf?.now !== 'function') {\n throw new TypeError(\n 'perf option must have a now() method if specified',\n )\n }\n }\n\n this.#perf = perf ?? defaultPerf\n\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer')\n }\n\n const UintArray = max ? getUintArray(max) : Array\n if (!UintArray) {\n throw new Error('invalid max value: ' + max)\n }\n\n this.#max = max\n this.#maxSize = maxSize\n this.maxEntrySize = maxEntrySize || this.#maxSize\n this.sizeCalculation = sizeCalculation\n if (this.sizeCalculation) {\n if (!this.#maxSize && !this.maxEntrySize) {\n throw new TypeError(\n 'cannot set sizeCalculation without setting maxSize or maxEntrySize',\n )\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function')\n }\n }\n\n if (memoMethod !== undefined && typeof memoMethod !== 'function') {\n throw new TypeError('memoMethod must be a function if defined')\n }\n this.#memoMethod = memoMethod\n\n if (fetchMethod !== undefined && typeof fetchMethod !== 'function') {\n throw new TypeError('fetchMethod must be a function if specified')\n }\n this.#fetchMethod = fetchMethod\n this.#hasFetchMethod = !!fetchMethod\n\n this.#keyMap = new Map()\n this.#keyList = Array.from({ length: max }).fill(undefined) as (\n | K\n | undefined\n )[]\n this.#valList = Array.from({ length: max }).fill(undefined) as (\n | V\n | undefined\n )[]\n this.#next = new UintArray(max)\n this.#prev = new UintArray(max)\n this.#head = 0 as Index\n this.#tail = 0 as Index\n this.#free = Stack.create(max)\n this.#size = 0\n this.#calculatedSize = 0\n\n if (typeof dispose === 'function') {\n this.#dispose = dispose\n }\n if (typeof onInsert === 'function') {\n this.#onInsert = onInsert\n }\n if (typeof disposeAfter === 'function') {\n this.#disposeAfter = disposeAfter\n this.#disposed = []\n } else {\n this.#disposeAfter = undefined\n this.#disposed = undefined\n }\n this.#hasDispose = !!this.#dispose\n this.#hasOnInsert = !!this.#onInsert\n this.#hasDisposeAfter = !!this.#disposeAfter\n\n this.noDisposeOnSet = !!noDisposeOnSet\n this.noUpdateTTL = !!noUpdateTTL\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort\n this.ignoreFetchAbort = !!ignoreFetchAbort\n\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.#maxSize !== 0) {\n if (!isPosInt(this.#maxSize)) {\n throw new TypeError(\n 'maxSize must be a positive integer if specified',\n )\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError(\n 'maxEntrySize must be a positive integer if specified',\n )\n }\n this.#initializeSizeTracking()\n }\n\n this.allowStale = !!allowStale\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet\n this.updateAgeOnGet = !!updateAgeOnGet\n this.updateAgeOnHas = !!updateAgeOnHas\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0 ? ttlResolution : 1\n this.ttlAutopurge = !!ttlAutopurge\n this.ttl = ttl || 0\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError('ttl must be a positive integer if specified')\n }\n this.#initializeTTLTracking()\n }\n\n // do not allow completely unbounded caches\n if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n throw new TypeError(\n 'At least one of max, maxSize, or ttl is required',\n )\n }\n if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED'\n if (shouldWarn(code)) {\n warned.add(code)\n const msg =\n 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.'\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache)\n }\n }\n }\n\n /**\n * Return the number of ms left in the item's TTL. If item is not in cache,\n * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.\n */\n getRemainingTTL(key: K) {\n return this.#keyMap.has(key) ? Infinity : 0\n }\n\n #initializeTTLTracking() {\n const ttls = new ZeroArray(this.#max)\n const starts = new ZeroArray(this.#max)\n this.#ttls = ttls\n this.#starts = starts\n const purgeTimers =\n this.ttlAutopurge ?\n Array.from<undefined | ReturnType<typeof setTimeout>>({\n length: this.#max,\n })\n : undefined\n this.#autopurgeTimers = purgeTimers\n\n this.#setItemTTL = (index, ttl, start = this.#perf.now()) => {\n starts[index] = ttl !== 0 ? start : 0\n ttls[index] = ttl\n setPurgetTimer(index, ttl)\n }\n\n this.#updateItemAge = index => {\n starts[index] = ttls[index] !== 0 ? this.#perf.now() : 0\n setPurgetTimer(index, ttls[index])\n }\n\n // clear out the purge timer if we're setting TTL to 0, and\n // previously had a ttl purge timer running, so it doesn't\n // fire unnecessarily. Don't need to do this if we're not doing\n // autopurge.\n const setPurgetTimer =\n !this.ttlAutopurge ?\n () => {}\n : (index: Index, ttl?: number) => {\n if (purgeTimers?.[index]) {\n clearTimeout(purgeTimers[index])\n purgeTimers[index] = undefined\n }\n if (ttl && ttl !== 0 && purgeTimers) {\n const t = setTimeout(() => {\n if (this.#isStale(index)) {\n this.#delete(this.#keyList[index] as K, 'expire')\n }\n }, ttl + 1)\n // unref() not supported on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref()\n }\n /* c8 ignore stop */\n purgeTimers[index] = t\n }\n }\n\n this.#statusTTL = (status, index) => {\n if (ttls[index]) {\n const ttl = ttls[index]\n const start = starts[index]\n /* c8 ignore start */\n if (!ttl || !start) {\n return\n }\n /* c8 ignore stop */\n status.ttl = ttl\n status.start = start\n status.now = cachedNow || getNow()\n const age = status.now - start\n status.remainingTTL = ttl - age\n }\n }\n\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0\n const getNow = () => {\n const n = this.#perf.now()\n if (this.ttlResolution > 0) {\n cachedNow = n\n const t = setTimeout(() => (cachedNow = 0), this.ttlResolution)\n // not available on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref()\n }\n /* c8 ignore stop */\n }\n return n\n }\n\n this.getRemainingTTL = key => {\n const index = this.#keyMap.get(key)\n if (index === undefined) {\n return 0\n }\n const ttl = ttls[index]\n const start = starts[index]\n if (!ttl || !start) {\n return Infinity\n }\n const age = (cachedNow || getNow()) - start\n return ttl - age\n }\n\n this.#isStale = index => {\n const s = starts[index]\n const t = ttls[index]\n return !!t && !!s && (cachedNow || getNow()) - s > t\n }\n }\n\n // conditionally set private methods related to TTL\n #updateItemAge: (index: Index) => void = () => {}\n #statusTTL: (status: LRUCache.Status<K, V, FC>, index: Index) => void =\n () => {}\n #setItemTTL: (\n index: Index,\n ttl: LRUCache.Milliseconds,\n start?: LRUCache.Milliseconds,\n // ignore because we never call this if we're not already in TTL mode\n /* c8 ignore start */\n ) => void = () => {}\n /* c8 ignore stop */\n\n #isStale: (index: Index) => boolean = () => false\n\n #initializeSizeTracking() {\n const sizes = new ZeroArray(this.#max)\n this.#calculatedSize = 0\n this.#sizes = sizes\n this.#removeItemSize = index => {\n this.#calculatedSize -= sizes[index] as number\n sizes[index] = 0\n }\n this.#requireSize = (k, v, size, sizeCalculation) => {\n if (!isPosInt(size)) {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.#isBackgroundFetch(v)) {\n // NB: this cannot occur if v.__staleWhileFetching is set,\n // because in that case, it would take on the size of the\n // existing entry that it temporarily replaces.\n return this.backgroundFetchSize\n }\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function')\n }\n size = sizeCalculation(v, k)\n if (!isPosInt(size)) {\n throw new TypeError(\n 'sizeCalculation return invalid (expect positive integer)',\n )\n }\n } else {\n throw new TypeError(\n 'invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation ' +\n 'or size must be set.',\n )\n }\n }\n return size\n }\n\n this.#addItemSize = (\n index: Index,\n size: LRUCache.Size,\n status?: LRUCache.Status<K, V, FC>,\n ) => {\n sizes[index] = size\n if (this.#maxSize) {\n const maxSize = this.#maxSize - sizes[index]\n while (this.#calculatedSize > maxSize) {\n this.#evict(true)\n }\n }\n this.#calculatedSize += sizes[index]\n if (status) {\n status.entrySize = size\n status.totalCalculatedSize = this.#calculatedSize\n }\n }\n }\n\n #removeItemSize: (index: Index) => void = _i => {}\n\n #addItemSize: (\n index: Index,\n size: LRUCache.Size,\n status?: LRUCache.Status<K, V, FC>,\n ) => void = (_i, _s, _st) => {}\n\n #requireSize: (\n k: K,\n v: V | BackgroundFetch<V>,\n size?: LRUCache.Size,\n sizeCalculation?: LRUCache.SizeCalculator<K, V>,\n status?: LRUCache.Status<K, V, FC>,\n ) => LRUCache.Size = (\n _k: K,\n _v: V | BackgroundFetch<V>,\n size?: LRUCache.Size,\n sizeCalculation?: LRUCache.SizeCalculator<K, V>,\n ) => {\n if (size || sizeCalculation) {\n throw new TypeError(\n 'cannot set size without setting maxSize or maxEntrySize on cache',\n )\n }\n return 0\n };\n\n *#indexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#tail; this.#isValidIndex(i); ) {\n if (allowStale || !this.#isStale(i)) {\n yield i\n }\n if (i === this.#head) {\n break\n } else {\n i = this.#prev[i] as Index\n }\n }\n }\n }\n\n *#rindexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#head; this.#isValidIndex(i); ) {\n if (allowStale || !this.#isStale(i)) {\n yield i\n }\n if (i === this.#tail) {\n break\n } else {\n i = this.#next[i] as Index\n }\n }\n }\n }\n\n #isValidIndex(index: Index) {\n return (\n index !== undefined &&\n this.#keyMap.get(this.#keyList[index] as K) === index\n )\n }\n\n /**\n * Return a generator yielding `[key, value]` pairs,\n * in order from most recently used to least recently used.\n */\n *entries() {\n for (const i of this.#indexes()) {\n if (\n this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield [this.#keyList[i], this.#valList[i]] as [K, V]\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.entries}\n *\n * Return a generator yielding `[key, value]` pairs,\n * in order from least recently used to most recently used.\n */\n *rentries() {\n for (const i of this.#rindexes()) {\n if (\n this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield [this.#keyList[i], this.#valList[i]]\n }\n }\n }\n\n /**\n * Return a generator yielding the keys in the cache,\n * in order from most recently used to least recently used.\n */\n *keys() {\n for (const i of this.#indexes()) {\n const k = this.#keyList[i]\n if (k !== undefined && !this.#isBackgroundFetch(this.#valList[i])) {\n yield k\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.keys}\n *\n * Return a generator yielding the keys in the cache,\n * in order from least recently used to most recently used.\n */\n *rkeys() {\n for (const i of this.#rindexes()) {\n const k = this.#keyList[i]\n if (k !== undefined && !this.#isBackgroundFetch(this.#valList[i])) {\n yield k\n }\n }\n }\n\n /**\n * Return a generator yielding the values in the cache,\n * in order from most recently used to least recently used.\n */\n *values() {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n if (v !== undefined && !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i] as V\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.values}\n *\n * Return a generator yielding the values in the cache,\n * in order from least recently used to most recently used.\n */\n *rvalues() {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i]\n if (v !== undefined && !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i]\n }\n }\n }\n\n /**\n * Iterating over the cache itself yields the same results as\n * {@link LRUCache.entries}\n */\n [Symbol.iterator]() {\n return this.entries()\n }\n\n /**\n * A String value that is used in the creation of the default string\n * description of an object. Called by the built-in method\n * `Object.prototype.toString`.\n */\n [Symbol.toStringTag] = 'LRUCache'\n\n /**\n * Find a value for which the supplied fn method returns a truthy value,\n * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.\n */\n find(\n fn: (v: V, k: K, self: LRUCache<K, V, FC>) => boolean,\n getOptions: LRUCache.GetOptions<K, V, FC> = {},\n ) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n if (value === undefined) continue\n if (fn(value, this.#keyList[i] as K, this)) {\n return this.#get(this.#keyList[i] as K, getOptions)\n }\n }\n }\n\n /**\n * Call the supplied function on each item in the cache, in order from most\n * recently used to least recently used.\n *\n * `fn` is called as `fn(value, key, cache)`.\n *\n * If `thisp` is provided, function will be called in the `this`-context of\n * the provided object, or the cache if no `thisp` object is provided.\n *\n * Does not update age or recenty of use, or iterate over stale values.\n */\n forEach(\n fn: (v: V, k: K, self: LRUCache<K, V, FC>) => unknown,\n thisp: unknown = this,\n ) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n if (value === undefined) continue\n fn.call(thisp, value, this.#keyList[i] as K, this)\n }\n }\n\n /**\n * The same as {@link LRUCache.forEach} but items are iterated over in\n * reverse order. (ie, less recently used items are iterated over first.)\n */\n rforEach(\n fn: (v: V, k: K, self: LRUCache<K, V, FC>) => unknown,\n thisp: unknown = this,\n ) {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i]\n const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n if (value === undefined) continue\n fn.call(thisp, value, this.#keyList[i] as K, this)\n }\n }\n\n /**\n * Delete any stale entries. Returns true if anything was removed,\n * false otherwise.\n */\n purgeStale() {\n let deleted = false\n for (const i of this.#rindexes({ allowStale: true })) {\n if (this.#isStale(i)) {\n this.#delete(this.#keyList[i] as K, 'expire')\n deleted = true\n }\n }\n return deleted\n }\n\n /**\n * Get the extended info about a given entry, to get its value, size, and\n * TTL info simultaneously. Returns `undefined` if the key is not present.\n *\n * Unlike {@link LRUCache#dump}, which is designed to be portable and survive\n * serialization, the `start` value is always the current timestamp, and the\n * `ttl` is a calculated remaining time to live (negative if expired).\n *\n * Always returns stale values, if their info is found in the cache, so be\n * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})\n * if relevant.\n */\n info(key: K): LRUCache.Entry<V> | undefined {\n const i = this.#keyMap.get(key)\n if (i === undefined) return undefined\n const v = this.#valList[i]\n /* c8 ignore start - this isn't tested for the info function,\n * but it's the same logic as found in other places. */\n const value: V | undefined =\n this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n if (value === undefined) return undefined\n /* c8 ignore stop */\n const entry: LRUCache.Entry<V> = { value }\n if (this.#ttls && this.#starts) {\n const ttl = this.#ttls[i]\n const start = this.#starts[i]\n if (ttl && start) {\n const remain = ttl - (this.#perf.now() - start)\n entry.ttl = remain\n entry.start = Date.now()\n }\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i]\n }\n return entry\n }\n\n /**\n * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n * passed to {@link LRUCache#load}.\n *\n * The `start` fields are calculated relative to a portable `Date.now()`\n * timestamp, even if `performance.now()` is available.\n *\n * Stale entries are always included in the `dump`, even if\n * {@link LRUCache.OptionsBase.allowStale} is false.\n *\n * Note: this returns an actual array, not a generator, so it can be more\n * easily passed around.\n */\n dump() {\n const arr: [K, LRUCache.Entry<V>][] = []\n for (const i of this.#indexes({ allowStale: true })) {\n const key = this.#keyList[i]\n const v = this.#valList[i]\n const value: V | undefined =\n this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n if (value === undefined || key === undefined) continue\n const entry: LRUCache.Entry<V> = { value }\n if (this.#ttls && this.#starts) {\n entry.ttl = this.#ttls[i]\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = this.#perf.now() - (this.#starts[i] as number)\n entry.start = Math.floor(Date.now() - age)\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i]\n }\n arr.unshift([key, entry])\n }\n return arr\n }\n\n /**\n * Reset the cache and load in the items in entries in the order listed.\n *\n * The shape of the resulting cache may be different if the same options are\n * not used in both caches.\n *\n * The `start` fields are assumed to be calculated relative to a portable\n * `Date.now()` timestamp, even if `performance.now()` is available.\n */\n load(arr: [K, LRUCache.Entry<V>][]) {\n this.clear()\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset, so that\n // we get the intended remaining TTL, no matter how long it's\n // been on ice.\n //\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start\n entry.start = this.#perf.now() - age\n }\n this.#set(key, entry.value, entry)\n }\n }\n\n /**\n * Add a value to the cache.\n *\n * Note: if `undefined` is specified as a value, this is an alias for\n * {@link LRUCache#delete}\n *\n * Fields on the {@link LRUCache.SetOptions} options param will override\n * their corresponding values in the constructor options for the scope\n * of this single `set()` operation.\n *\n * If `start` is provided, then that will set the effective start\n * time for the TTL calculation. Note that this must be a previous\n * value of `performance.now()` if supported, or a previous value of\n * `Date.now()` if not.\n *\n * Options object may also include `size`, which will prevent\n * calling the `sizeCalculation` function and just use the specified\n * number if it is a positive integer, and `noDisposeOnSet` which\n * will prevent calling a `dispose` function in the case of\n * overwrites.\n *\n * If the `size` (or return value of `sizeCalculation`) for a given\n * entry is greater than `maxEntrySize`, then the item will not be\n * added to the cache.\n *\n * Will update the recency of the entry.\n *\n * If the value is `undefined`, then this is an alias for\n * `cache.delete(key)`. `undefined` is never stored in the cache.\n */\n set(\n k: K,\n v: V | undefined,\n setOptions: LRUCache.SetOptions<K, V, FC> = {},\n ) {\n const { status = metrics.hasSubscribers ? {} : undefined } = setOptions\n setOptions.status = status\n if (status) {\n status.op = 'set'\n status.key = k\n if (v !== undefined) status.value = v\n status.cache = this\n }\n const result = this.#set(k, v, setOptions)\n if (status && metrics.hasSubscribers) {\n metrics.publish(status)\n }\n return result\n }\n\n #set(\n k: K,\n v: V | BackgroundFetch<V> | undefined,\n setOptions: LRUCache.SetOptions<K, V, FC>,\n bf?: BackgroundFetch<V>,\n ) {\n const {\n ttl = this.ttl,\n start,\n noDisposeOnSet = this.noDisposeOnSet,\n sizeCalculation = this.sizeCalculation,\n status,\n } = setOptions\n\n const isBF = this.#isBackgroundFetch(v)\n if (v === undefined) {\n if (status) status.set = 'deleted'\n this.delete(k)\n return this\n }\n let { noUpdateTTL = this.noUpdateTTL } = setOptions\n\n if (status && !isBF) status.value = v\n\n const size = this.#requireSize(\n k,\n v,\n setOptions.size || 0,\n sizeCalculation,\n status,\n )\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n // have to delete, in case something is there already.\n this.#delete(k, 'set')\n if (status) {\n status.set = 'miss'\n status.maxEntrySizeExceeded = true\n }\n return this\n }\n let index = this.#size === 0 ? undefined : this.#keyMap.get(k)\n if (index === undefined) {\n // addition\n index = (\n this.#size === 0 ? this.#tail\n : this.#free.length !== 0 ? this.#free.pop()\n : this.#size === this.#max ? this.#evict(false)\n : this.#size) as Index\n this.#keyList[index] = k\n this.#valList[index] = v\n this.#keyMap.set(k, index)\n this.#next[this.#tail] = index\n this.#prev[index] = this.#tail\n this.#tail = index\n this.#size++\n this.#addItemSize(index, size, status)\n if (status) status.set = 'add'\n noUpdateTTL = false\n if (this.#hasOnInsert && !isBF) {\n this.#onInsert?.(v, k, 'add')\n }\n } else {\n // update\n // might be updating a background fetch!\n this.#moveToTail(index)\n const oldVal = this.#valList[index]!\n if (v !== oldVal) {\n if (!noDisposeOnSet) {\n if (this.#isBackgroundFetch(oldVal)) {\n if (oldVal !== bf) {\n // setting over a background fetch, not merely resolving it.\n oldVal.__abortController.abort(new Error('replaced'))\n }\n const { __staleWhileFetching: s } = oldVal\n if (s !== undefined && s !== v) {\n if (this.#hasDispose) {\n this.#dispose?.(s, k, 'set')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([s, k, 'set'])\n }\n }\n } else {\n if (this.#hasDispose) {\n this.#dispose?.(oldVal, k, 'set')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldVal, k, 'set'])\n }\n }\n }\n this.#removeItemSize(index)\n this.#addItemSize(index, size, status)\n this.#valList[index] = v\n if (!isBF) {\n const oldValue =\n oldVal && this.#isBackgroundFetch(oldVal) ?\n oldVal.__staleWhileFetching\n : oldVal\n const setType =\n oldValue === undefined ? 'add'\n : v !== oldValue ? 'replace'\n : 'update'\n if (status) {\n status.set = setType\n if (oldValue !== undefined) status.oldValue = oldValue\n }\n if (this.#hasOnInsert) {\n this.onInsert?.(v, k, setType)\n }\n }\n } else if (!isBF) {\n if (status) {\n status.set = 'update'\n }\n if (this.#hasOnInsert) {\n this.onInsert?.(v, k, 'update')\n }\n }\n }\n if (ttl !== 0 && !this.#ttls) {\n this.#initializeTTLTracking()\n }\n if (this.#ttls) {\n if (!noUpdateTTL) {\n this.#setItemTTL(index, ttl, start)\n }\n if (status) this.#statusTTL(status, index)\n }\n if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask<K, V> | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n return this\n }\n\n /**\n * Evict the least recently used item, returning its value or\n * `undefined` if cache is empty.\n */\n pop(): V | undefined {\n try {\n while (this.#size) {\n const val = this.#valList[this.#head]\n this.#evict(true)\n if (this.#isBackgroundFetch(val)) {\n if (val.__staleWhileFetching) {\n return val.__staleWhileFetching\n }\n } else if (val !== undefined) {\n return val\n }\n }\n } finally {\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask<K, V> | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n }\n }\n\n #evict(free: boolean) {\n const head = this.#head\n const k = this.#keyList[head]!\n const v = this.#valList[head]!\n const isBF = this.#isBackgroundFetch(v)\n if (isBF) {\n v.__abortController.abort(new Error('evicted'))\n }\n const oldValue = isBF ? v.__staleWhileFetching : v\n if (\n (this.#hasDispose || this.#hasDisposeAfter) &&\n oldValue !== undefined\n ) {\n if (this.#hasDispose) {\n this.#dispose?.(oldValue, k, 'evict')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldValue, k, 'evict'])\n }\n }\n this.#removeItemSize(head)\n if (this.#autopurgeTimers?.[head]) {\n clearTimeout(this.#autopurgeTimers[head])\n this.#autopurgeTimers[head] = undefined\n }\n // if we aren't about to use the index, then null these out\n if (free) {\n this.#keyList[head] = undefined\n this.#valList[head] = undefined\n this.#free.push(head)\n }\n if (this.#size === 1) {\n this.#head = this.#tail = 0 as Index\n this.#free.length = 0\n } else {\n this.#head = this.#next[head] as Index\n }\n this.#keyMap.delete(k)\n this.#size--\n return head\n }\n\n /**\n * Check if a key is in the cache, without updating the recency of use.\n * Will return false if the item is stale, even though it is technically\n * in the cache.\n *\n * Check if a key is in the cache, without updating the recency of\n * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set\n * to `true` in either the options or the constructor.\n *\n * Will return `false` if the item is stale, even though it is technically in\n * the cache. The difference can be determined (if it matters) by using a\n * `status` argument, and inspecting the `has` field.\n *\n * Will not update item age unless\n * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n */\n has(k: K, hasOptions: LRUCache.HasOptions<K, V, FC> = {}) {\n const { status = metrics.hasSubscribers ? {} : undefined } = hasOptions\n hasOptions.status = status\n if (status) {\n status.op = 'has'\n status.key = k\n status.cache = this\n }\n const result = this.#has(k, hasOptions)\n if (metrics.hasSubscribers) metrics.publish(status)\n return result\n }\n #has(k: K, hasOptions: LRUCache.HasOptions<K, V, FC> = {}) {\n const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions\n const index = this.#keyMap.get(k)\n if (index !== undefined) {\n const v = this.#valList[index]\n if (\n this.#isBackgroundFetch(v) &&\n v.__staleWhileFetching === undefined\n ) {\n return false\n }\n if (!this.#isStale(index)) {\n if (updateAgeOnHas) {\n this.#updateItemAge(index)\n }\n if (status) {\n status.has = 'hit'\n this.#statusTTL(status, index)\n }\n return true\n } else if (status) {\n status.has = 'stale'\n this.#statusTTL(status, index)\n }\n } else if (status) {\n status.has = 'miss'\n }\n return false\n }\n\n /**\n * Like {@link LRUCache#get} but doesn't update recency or delete stale\n * items.\n *\n * Returns `undefined` if the item is stale, unless\n * {@link LRUCache.OptionsBase.allowStale} is set.\n */\n peek(k: K, peekOptions: LRUCache.PeekOptions<K, V, FC> = {}) {\n const { status = hasSubscribers() ? {} : undefined } = peekOptions\n if (status) {\n status.op = 'peek'\n status.key = k\n status.cache = this\n }\n peekOptions.status = status\n const result = this.#peek(k, peekOptions)\n if (metrics.hasSubscribers) {\n metrics.publish(status)\n }\n return result\n }\n #peek(k: K, peekOptions: LRUCache.PeekOptions<K, V, FC>) {\n const { status, allowStale = this.allowStale } = peekOptions\n const index = this.#keyMap.get(k)\n if (index === undefined || (!allowStale && this.#isStale(index))) {\n if (status) status.peek = index === undefined ? 'miss' : 'stale'\n return undefined\n }\n const v = this.#valList[index]\n const val = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n if (status) {\n if (val !== undefined) {\n status.peek = 'hit'\n status.value = val\n } else {\n status.peek = 'miss'\n }\n }\n return val\n }\n\n #backgroundFetch(\n k: K,\n index: Index | undefined,\n options: LRUCache.FetchOptions<K, V, FC>,\n context: FC,\n ): BackgroundFetch<V> {\n const v = index === undefined ? undefined : this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n return v\n }\n\n const ac = new AbortController()\n const { signal } = options\n // when/if our AC signals, then stop listening to theirs.\n signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n signal: ac.signal,\n })\n\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n }\n\n const cb = (v: V | undefined, updateCache = false): V | undefined => {\n const { aborted } = ac.signal\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined\n const proceed =\n options.ignoreFetchAbort ||\n !!(options.allowStaleOnFetchAbort && v !== undefined)\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true\n options.status.fetchError = ac.signal.reason\n if (ignoreAbort) options.status.fetchAbortIgnored = true\n } else {\n options.status.fetchResolved = true\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason, proceed)\n }\n // either we didn't abort, and are still here, or we did, and ignored\n const bf = p as BackgroundFetch<V>\n // if nothing else has been written there but we're set to update the\n // cache and ignore the abort, or if it's still pending on this specific\n // background request, then write it to the cache.\n const vl = this.#valList[index as Index]\n if (vl === p || (vl === undefined && ignoreAbort && updateCache)) {\n if (v === undefined) {\n if (bf.__staleWhileFetching !== undefined) {\n this.#valList[index as Index] = bf.__staleWhileFetching\n } else {\n this.#delete(k, 'fetch')\n }\n } else {\n if (options.status) options.status.fetchUpdated = true\n this.#set(k, v, fetchOpts.options, bf)\n }\n }\n return v\n }\n\n const eb = (er: unknown) => {\n if (options.status) {\n options.status.fetchRejected = true\n options.status.fetchError = er as Error\n }\n // do not pass go, do not collect $200\n return fetchFail(er, false)\n }\n\n const fetchFail = (er: unknown, proceed: boolean): V | undefined => {\n const { aborted } = ac.signal\n const allowStaleAborted = aborted && options.allowStaleOnFetchAbort\n const allowStale =\n allowStaleAborted || options.allowStaleOnFetchRejection\n const noDelete = allowStale || options.noDeleteOnFetchRejection\n const bf = p as BackgroundFetch<V>\n if (this.#valList[index as Index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del =\n !noDelete || (!proceed && bf.__staleWhileFetching === undefined)\n if (del) {\n this.#delete(k, 'fetch')\n } else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.#valList[index as Index] = bf.__staleWhileFetching\n }\n }\n if (allowStale) {\n if (options.status && bf.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true\n }\n return bf.__staleWhileFetching\n } else if (bf.__returned === bf) {\n throw er\n }\n }\n\n const pcall = (\n res: (v: V | undefined) => void,\n rej: (e: unknown) => void,\n ) => {\n const fmp = this.#fetchMethod?.(k, v, fetchOpts)\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (!options.ignoreFetchAbort || options.allowStaleOnFetchAbort) {\n res(undefined)\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true)\n }\n }\n })\n if (fmp && fmp instanceof Promise) {\n fmp.then(v => res(v === undefined ? undefined : v), rej)\n } else if (fmp !== undefined) {\n res(fmp)\n }\n }\n\n if (options.status) options.status.fetchDispatched = true\n const p = new Promise(pcall).then(cb, eb)\n const bf: BackgroundFetch<V> = Object.assign(p, {\n __abortController: ac,\n __staleWhileFetching: v,\n __returned: undefined,\n })\n\n if (index === undefined) {\n // internal, don't expose status.\n this.#set(k, bf, { ...fetchOpts.options, status: undefined })\n index = this.#keyMap.get(k)\n } else {\n // do not call #set, because we do not want to adjust its place\n // in the lru queue, as it has not yet been \"used\". Also, we don't\n // need to worry about evicting for size, because a background fetch\n // over a stale value is treated as the same size as its stale value.\n this.#valList[index] = bf\n }\n return bf\n }\n\n #isBackgroundFetch(p: unknown): p is BackgroundFetch<V> {\n if (!this.#hasFetchMethod) return false\n const b = p as BackgroundFetch<V>\n return (\n !!b &&\n b instanceof Promise &&\n b.hasOwnProperty('__staleWhileFetching') &&\n b.__abortController instanceof AbortController\n )\n }\n\n /**\n * Make an asynchronous cached fetch using the\n * {@link LRUCache.OptionsBase.fetchMethod} function.\n *\n * If the value is in the cache and not stale, then the returned\n * Promise resolves to the value.\n *\n * If not in the cache, or beyond its TTL staleness, then\n * `fetchMethod(key, staleValue, { options, signal, context })` is\n * called, and the value returned will be added to the cache once\n * resolved.\n *\n * If called with `allowStale`, and an asynchronous fetch is\n * currently in progress to reload a stale value, then the former\n * stale value will be returned.\n *\n * If called with `forceRefresh`, then the cached item will be\n * re-fetched, even if it is not stale. However, if `allowStale` is also\n * set, then the old value will still be returned. This is useful\n * in cases where you want to force a reload of a cached value. If\n * a background fetch is already in progress, then `forceRefresh`\n * has no effect.\n *\n * If multiple fetches for the same key are issued, then they will all be\n * coalesced into a single call to fetchMethod.\n *\n * Note that this means that handling options such as\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort},\n * {@link LRUCache.FetchOptions.signal},\n * and {@link LRUCache.OptionsBase.allowStaleOnFetchRejection} will be\n * determined by the FIRST fetch() call for a given key.\n *\n * This is a known (fixable) shortcoming which will be addresed on when\n * someone complains about it, as the fix would involve added complexity and\n * may not be worth the costs for this edge case.\n *\n * If {@link LRUCache.OptionsBase.fetchMethod} is not specified, then this is\n * effectively an alias for `Promise.resolve(cache.get(key))`.\n *\n * When the fetch method resolves to a value, if the fetch has not\n * been aborted due to deletion, eviction, or being overwritten,\n * then it is added to the cache using the options provided.\n *\n * If the key is evicted or deleted before the `fetchMethod`\n * resolves, then the AbortSignal passed to the `fetchMethod` will\n * receive an `abort` event, and the promise returned by `fetch()`\n * will reject with the reason for the abort.\n *\n * If a `signal` is passed to the `fetch()` call, then aborting the\n * signal will abort the fetch and cause the `fetch()` promise to\n * reject with the reason provided.\n *\n * **Setting `context`**\n *\n * If an `FC` type is set to a type other than `unknown`, `void`, or\n * `undefined` in the {@link LRUCache} constructor, then all\n * calls to `cache.fetch()` _must_ provide a `context` option. If\n * set to `undefined` or `void`, then calls to fetch _must not_\n * provide a `context` option.\n *\n * The `context` param allows you to provide arbitrary data that\n * might be relevant in the course of fetching the data. It is only\n * relevant for the course of a single `fetch()` operation, and\n * discarded afterwards.\n *\n * **Note: `fetch()` calls are inflight-unique**\n *\n * If you call `fetch()` multiple times with the same key value,\n * then every call after the first will resolve on the same\n * promise<sup>1</sup>,\n * _even if they have different settings that would otherwise change\n * the behavior of the fetch_, such as `noDeleteOnFetchRejection`\n * or `ignoreFetchAbort`.\n *\n * In most cases, this is not a problem (in fact, only fetching\n * something once is what you probably want, if you're caching in\n * the first place). If you are changing the fetch() options\n * dramatically between runs, there's a good chance that you might\n * be trying to fit divergent semantics into a single object, and\n * would be better off with multiple cache instances.\n *\n * **1**: Ie, they're not the \"same Promise\", but they resolve at\n * the same time, because they're both waiting on the same\n * underlying fetchMethod response.\n */\n\n fetch(\n k: K,\n fetchOptions: unknown extends FC ? LRUCache.FetchOptions<K, V, FC>\n : FC extends undefined | void ?\n LRUCache.FetchOptionsNoContext<K, V, FC>\n : LRUCache.FetchOptionsWithContext<K, V, FC>,\n ): Promise<undefined | V>\n\n // this overload not allowed if context is required\n fetch(\n k: unknown extends FC ? K\n : FC extends undefined | void ? K\n : never,\n fetchOptions?: unknown extends FC ? LRUCache.FetchOptions<K, V, FC>\n : FC extends undefined | void ?\n LRUCache.FetchOptionsNoContext<K, V, FC>\n : never,\n ): Promise<undefined | V>\n fetch(\n k: K,\n fetchOptions: LRUCache.FetchOptions<K, V, FC> = {},\n ): Promise<undefined | V> {\n const ths = tracing.hasSubscribers\n const { status = hasSubscribers() ? {} : undefined } = fetchOptions\n fetchOptions.status = status\n if (status && fetchOptions.context) {\n status.context = fetchOptions.context\n }\n const p = this.#fetch(k, fetchOptions)\n if (status && ths) {\n status.trace = true\n tracing.tracePromise(() => p, status).catch(() => {})\n }\n return p\n }\n\n async #fetch(\n k: K,\n fetchOptions: LRUCache.FetchOptions<K, V, FC> = {},\n ): Promise<undefined | V> {\n const {\n // get options\n allowStale = this.allowStale,\n updateAgeOnGet = this.updateAgeOnGet,\n noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n // set options\n ttl = this.ttl,\n noDisposeOnSet = this.noDisposeOnSet,\n size = 0,\n sizeCalculation = this.sizeCalculation,\n noUpdateTTL = this.noUpdateTTL,\n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,\n allowStaleOnFetchRejection = this.allowStaleOnFetchRejection,\n ignoreFetchAbort = this.ignoreFetchAbort,\n allowStaleOnFetchAbort = this.allowStaleOnFetchAbort,\n context,\n forceRefresh = false,\n status,\n signal,\n } = fetchOptions\n if (status) {\n status.op = 'fetch'\n status.key = k\n if (forceRefresh) status.forceRefresh = true\n status.cache = this\n }\n\n if (!this.#hasFetchMethod) {\n if (status) status.fetch = 'get'\n return this.#get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n })\n }\n\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n }\n\n let index = this.#keyMap.get(k)\n if (index === undefined) {\n if (status) status.fetch = 'miss'\n const p = this.#backgroundFetch(k, index, options, context as FC)\n return (p.__returned = p)\n } else {\n // in cache, maybe already fetching\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n const stale = allowStale && v.__staleWhileFetching !== undefined\n if (status) {\n status.fetch = 'inflight'\n if (stale) status.returnedStale = true\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v)\n }\n\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.#isStale(index)\n if (!forceRefresh && !isStale) {\n if (status) status.fetch = 'hit'\n this.#moveToTail(index)\n if (updateAgeOnGet) {\n this.#updateItemAge(index)\n }\n if (status) this.#statusTTL(status, index)\n return v\n }\n\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.#backgroundFetch(k, index, options, context as FC)\n const hasStale = p.__staleWhileFetching !== undefined\n const staleVal = hasStale && allowStale\n if (status) {\n status.fetch = isStale ? 'stale' : 'refresh'\n if (staleVal && isStale) status.returnedStale = true\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p)\n }\n }\n\n /**\n * In some cases, `cache.fetch()` may resolve to `undefined`, either because\n * a {@link LRUCache.OptionsBase#fetchMethod} was not provided (turning\n * `cache.fetch(k)` into just an async wrapper around `cache.get(k)`) or\n * because `ignoreFetchAbort` was specified (either to the constructor or\n * in the {@link LRUCache.FetchOptions}). Also, the\n * {@link LRUCache.OptionsBase.fetchMethod} may return `undefined` or `void`, making\n * the test even more complicated.\n *\n * Because inferring the cases where `undefined` might be returned are so\n * cumbersome, but testing for `undefined` can also be annoying, this method\n * can be used, which will reject if `this.fetch()` resolves to undefined.\n */\n forceFetch(\n k: K,\n fetchOptions: unknown extends FC ? LRUCache.FetchOptions<K, V, FC>\n : FC extends undefined | void ?\n LRUCache.FetchOptionsNoContext<K, V, FC>\n : LRUCache.FetchOptionsWithContext<K, V, FC>,\n ): Promise<V>\n // this overload not allowed if context is required\n forceFetch(\n k: unknown extends FC ? K\n : FC extends undefined | void ? K\n : never,\n fetchOptions?: unknown extends FC ? LRUCache.FetchOptions<K, V, FC>\n : FC extends undefined | void ?\n LRUCache.FetchOptionsNoContext<K, V, FC>\n : never,\n ): Promise<V>\n forceFetch(\n k: K,\n fetchOptions: LRUCache.FetchOptions<K, V, FC> = {},\n ): Promise<V> {\n const ths = tracing.hasSubscribers\n const { status = hasSubscribers() ? {} : undefined } = fetchOptions\n fetchOptions.status = status\n if (status && fetchOptions.context) {\n status.context = fetchOptions.context\n }\n const p = this.#forceFetch(k, fetchOptions)\n if (status && ths) {\n status.trace = true\n tracing.tracePromise(() => p, status).catch(() => {})\n }\n return p\n }\n\n async #forceFetch(\n k: K,\n fetchOptions: LRUCache.FetchOptions<K, V, FC> = {},\n ) {\n const v = await this.#fetch(k, fetchOptions)\n if (v === undefined) throw new Error('fetch() returned undefined')\n return v\n }\n\n /**\n * If the key is found in the cache, then this is equivalent to\n * {@link LRUCache#get}. If not, in the cache, then calculate the value using\n * the {@link LRUCache.OptionsBase.memoMethod}, and add it to the cache.\n *\n * If an `FC` type is set to a type other than `unknown`, `void`, or\n * `undefined` in the LRUCache constructor, then all calls to `cache.memo()`\n * _must_ provide a `context` option. If set to `undefined` or `void`, then\n * calls to memo _must not_ provide a `context` option.\n *\n * The `context` param allows you to provide arbitrary data that might be\n * relevant in the course of fetching the data. It is only relevant for the\n * course of a single `memo()` operation, and discarded afterwards.\n */\n memo(\n k: K,\n memoOptions: unknown extends FC ? LRUCache.MemoOptions<K, V, FC>\n : FC extends undefined | void ? LRUCache.MemoOptionsNoContext<K, V, FC>\n : LRUCache.MemoOptionsWithContext<K, V, FC>,\n ): V\n // this overload not allowed if context is required\n memo(\n k: unknown extends FC ? K\n : FC extends undefined | void ? K\n : never,\n memoOptions?: unknown extends FC ? LRUCache.MemoOptions<K, V, FC>\n : FC extends undefined | void ? LRUCache.MemoOptionsNoContext<K, V, FC>\n : never,\n ): V\n memo(k: K, memoOptions: LRUCache.MemoOptions<K, V, FC> = {}) {\n const { status = metrics.hasSubscribers ? {} : undefined } =\n memoOptions\n memoOptions.status = status\n if (status) {\n status.op = 'memo'\n status.key = k\n if (memoOptions.context) {\n status.context = memoOptions.context\n }\n status.cache = this\n }\n const result = this.#memo(k, memoOptions)\n if (status) status.value = result\n if (metrics.hasSubscribers) metrics.publish(status)\n return result\n }\n #memo(k: K, memoOptions: LRUCache.MemoOptions<K, V, FC> = {}) {\n const memoMethod = this.#memoMethod\n if (!memoMethod) {\n throw new Error('no memoMethod provided to constructor')\n }\n const { context, status, forceRefresh, ...options } = memoOptions\n if (status && forceRefresh) status.forceRefresh = true\n const v = this.#get(k, options)\n const refresh = forceRefresh || v === undefined\n if (status) {\n status.memo = refresh ? 'miss' : 'hit'\n if (!refresh) status.value = v\n }\n if (!refresh) return v\n const vv = memoMethod(k, v, {\n options,\n context,\n } as LRUCache.MemoizerOptions<K, V, FC>)\n if (status) status.value = vv\n this.#set(k, vv, options)\n return vv\n }\n\n /**\n * Return a value from the cache. Will update the recency of the cache\n * entry found.\n *\n * If the key is not found, get() will return `undefined`.\n */\n get(k: K, getOptions: LRUCache.GetOptions<K, V, FC> = {}) {\n const { status = metrics.hasSubscribers ? {} : undefined } = getOptions\n getOptions.status = status\n if (status) {\n status.op = 'get'\n status.key = k\n status.cache = this\n }\n const result = this.#get(k, getOptions)\n if (status) {\n if (result !== undefined) status.value = result\n if (metrics.hasSubscribers) metrics.publish(status)\n }\n return result\n }\n\n #get(k: K, getOptions: LRUCache.GetOptions<K, V, FC> = {}) {\n const {\n allowStale = this.allowStale,\n updateAgeOnGet = this.updateAgeOnGet,\n noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n status,\n } = getOptions\n const index = this.#keyMap.get(k)\n if (index === undefined) {\n if (status) status.get = 'miss'\n return undefined\n }\n const value = this.#valList[index]\n const fetching = this.#isBackgroundFetch(value)\n if (status) this.#statusTTL(status, index)\n if (this.#isStale(index)) {\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.#delete(k, 'expire')\n }\n if (status) status.get = 'stale'\n if (allowStale) {\n if (status) status.returnedStale = true\n return value\n }\n return undefined\n }\n if (status) status.get = 'stale-fetching'\n if (allowStale && value.__staleWhileFetching !== undefined) {\n if (status) status.returnedStale = true\n return value.__staleWhileFetching\n }\n return undefined\n }\n // not stale\n if (status) status.get = fetching ? 'fetching' : 'hit'\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n this.#moveToTail(index)\n if (updateAgeOnGet) {\n this.#updateItemAge(index)\n }\n return fetching ? value.__staleWhileFetching : value\n }\n\n #connect(p: Index, n: Index) {\n this.#prev[n] = p\n this.#next[p] = n\n }\n\n #moveToTail(index: Index): void {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.#tail) {\n if (index === this.#head) {\n this.#head = this.#next[index] as Index\n } else {\n this.#connect(\n this.#prev[index] as Index,\n this.#next[index] as Index,\n )\n }\n this.#connect(this.#tail, index)\n this.#tail = index\n }\n }\n\n /**\n * Deletes a key out of the cache.\n *\n * Returns true if the key was deleted, false otherwise.\n */\n delete(k: K) {\n return this.#delete(k, 'delete')\n }\n\n #delete(k: K, reason: LRUCache.DisposeReason) {\n if (metrics.hasSubscribers) {\n metrics.publish({\n op: 'delete',\n delete: reason,\n key: k,\n cache: this,\n })\n }\n let deleted = false\n if (this.#size !== 0) {\n const index = this.#keyMap.get(k)\n if (index !== undefined) {\n if (this.#autopurgeTimers?.[index]) {\n clearTimeout(this.#autopurgeTimers?.[index])\n this.#autopurgeTimers[index] = undefined\n }\n deleted = true\n if (this.#size === 1) {\n this.#clear(reason)\n } else {\n this.#removeItemSize(index)\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'))\n } else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v as V, k, reason)\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v as V, k, reason])\n }\n }\n this.#keyMap.delete(k)\n this.#keyList[index] = undefined\n this.#valList[index] = undefined\n if (index === this.#tail) {\n this.#tail = this.#prev[index] as Index\n } else if (index === this.#head) {\n this.#head = this.#next[index] as Index\n } else {\n const pi = this.#prev[index] as number\n this.#next[pi] = this.#next[index] as number\n const ni = this.#next[index] as number\n this.#prev[ni] = this.#prev[index] as number\n }\n this.#size--\n this.#free.push(index)\n }\n }\n }\n if (this.#hasDisposeAfter && this.#disposed?.length) {\n const dt = this.#disposed\n let task: DisposeTask<K, V> | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n return deleted\n }\n\n /**\n * Clear the cache entirely, throwing away all values.\n */\n clear() {\n return this.#clear('delete')\n }\n #clear(reason: LRUCache.DisposeReason) {\n for (const index of this.#rindexes({ allowStale: true })) {\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'))\n } else {\n const k = this.#keyList[index]\n if (this.#hasDispose) {\n this.#dispose?.(v as V, k as K, reason)\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v as V, k as K, reason])\n }\n }\n }\n\n this.#keyMap.clear()\n void this.#valList.fill(undefined)\n this.#keyList.fill(undefined)\n if (this.#ttls && this.#starts) {\n this.#ttls.fill(0)\n this.#starts.fill(0)\n for (const t of this.#autopurgeTimers ?? []) {\n if (t !== undefined) clearTimeout(t)\n }\n this.#autopurgeTimers?.fill(undefined)\n }\n if (this.#sizes) {\n this.#sizes.fill(0)\n }\n this.#head = 0 as Index\n this.#tail = 0 as Index\n this.#free.length = 0\n this.#calculatedSize = 0\n this.#size = 0\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask<K, V> | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n }\n}\n", "import { ILookupTree, ILookupTreeEntry } from './types';\n\n/**\n * Merges the provided trees into a single lookup tree. When conflicting lookups\n * are encountered between two trees, the one with the lower index, then the\n * lower subindex is chosen.\n *\n * @param trees Array of trees to merge. Entries in earlier trees are favored\n * over those in later trees when there is a choice.\n */\nexport default function mergeTrees(trees: ILookupTree[]): ILookupTree {\n const result: ILookupTree = {\n individual: {},\n range: []\n };\n\n const mergedEntries = new WeakMap<ILookupTreeEntry, Set<ILookupTreeEntry>>();\n for (const tree of trees) {\n mergeSubtree(result, tree, mergedEntries);\n }\n\n return result;\n}\n\n/**\n * Recursively merges the data for the mergeTree into the mainTree.\n *\n * @param mainTree The tree where the values should be merged\n * @param mergeTree The tree to be merged into the mainTree\n * @param mergedEntries WeakMap to track already merged entry pairs\n */\nfunction mergeSubtree(mainTree: ILookupTree, mergeTree: ILookupTree, mergedEntries: WeakMap<ILookupTreeEntry, Set<ILookupTreeEntry>>): void {\n // Need to fix this recursively (and handle lookups)\n for (const [glyphId, value] of Object.entries(mergeTree.individual)) {\n // The main tree is guaranteed to have no overlaps between the\n // individual and range values, so if we match an invididual, there\n // must not be a range\n if (mainTree.individual[glyphId]) {\n mergeTreeEntry(mainTree.individual[glyphId], value, mergedEntries);\n } else {\n let matched = false;\n for (const [index, { range, entry }] of mainTree.range.entries()) {\n const overlap = getIndividualOverlap(Number(glyphId), range);\n\n // Don't overlap\n if (overlap.both === null) {\n continue;\n }\n\n matched = true;\n\n // If they overlap, we have to split the range and then\n // merge the overlap\n mainTree.individual[glyphId] = value;\n mergeTreeEntry(mainTree.individual[glyphId], cloneEntry(entry), mergedEntries);\n\n // When there's an overlap, we also have to fix up the range\n // that we had already processed\n mainTree.range.splice(index, 1);\n for (const glyph of overlap.second) {\n if (Array.isArray(glyph)) {\n mainTree.range.push({\n range: glyph,\n entry: cloneEntry(entry)\n });\n } else {\n mainTree.individual[glyph] = cloneEntry(entry);\n }\n }\n }\n\n if (!matched) {\n mainTree.individual[glyphId] = value;\n }\n }\n }\n\n for (const { range, entry } of mergeTree.range) {\n // Ranges are more complicated, because they can overlap with\n // multiple things, individual and range alike. We start by\n // eliminating ranges that are already present in another range\n let remainingRanges: (number | [number, number])[] = [range];\n\n for (let index = 0; index < mainTree.range.length; index++) {\n const { range, entry: resultEntry } = mainTree.range[index];\n for (const [remainingIndex, remainingRange] of remainingRanges.entries()) {\n if (Array.isArray(remainingRange)) {\n const overlap = getRangeOverlap(remainingRange, range);\n if (overlap.both === null) {\n continue;\n }\n\n mainTree.range.splice(index, 1);\n index--;\n\n const entryToMerge: ILookupTreeEntry = cloneEntry(resultEntry);\n if (Array.isArray(overlap.both)) {\n mainTree.range.push({\n range: overlap.both,\n entry: entryToMerge\n });\n } else {\n mainTree.individual[overlap.both] = entryToMerge;\n }\n\n mergeTreeEntry(entryToMerge, cloneEntry(entry), mergedEntries);\n\n for (const second of overlap.second) {\n if (Array.isArray(second)) {\n mainTree.range.push({\n range: second,\n entry: cloneEntry(resultEntry)\n });\n } else {\n mainTree.individual[second] = cloneEntry(resultEntry);\n }\n }\n\n remainingRanges = overlap.first;\n } else {\n const overlap = getIndividualOverlap(remainingRange, range);\n if (overlap.both === null) {\n continue;\n }\n\n // If they overlap, we have to split the range and then\n // merge the overlap\n mainTree.individual[remainingRange] = cloneEntry(entry);\n mergeTreeEntry(mainTree.individual[remainingRange], cloneEntry(resultEntry), mergedEntries);\n\n // When there's an overlap, we also have to fix up the range\n // that we had already processed\n mainTree.range.splice(index, 1);\n index--;\n\n for (const glyph of overlap.second) {\n if (Array.isArray(glyph)) {\n mainTree.range.push({\n range: glyph,\n entry: cloneEntry(resultEntry)\n });\n } else {\n mainTree.individual[glyph] = cloneEntry(resultEntry);\n }\n }\n\n remainingRanges.splice(remainingIndex, 1, ...overlap.first);\n break;\n }\n }\n }\n\n // Next, we run the same against any individual glyphs\n for (const glyphId of Object.keys(mainTree.individual)) {\n for (const [remainingIndex, remainingRange] of remainingRanges.entries()) {\n if (Array.isArray(remainingRange)) {\n const overlap = getIndividualOverlap(Number(glyphId), remainingRange);\n if (overlap.both === null) {\n continue;\n }\n\n // If they overlap, we have to merge the overlap\n mergeTreeEntry(mainTree.individual[glyphId], cloneEntry(entry), mergedEntries);\n\n // Update the remaining ranges\n remainingRanges.splice(remainingIndex, 1, ...overlap.second);\n break;\n } else {\n if (Number(glyphId) === remainingRange) {\n mergeTreeEntry(mainTree.individual[glyphId], cloneEntry(entry), mergedEntries);\n break;\n }\n }\n }\n }\n\n // Any remaining ranges should just be added directly\n for (const remainingRange of remainingRanges) {\n if (Array.isArray(remainingRange)) {\n mainTree.range.push({\n range: remainingRange,\n entry: cloneEntry(entry)\n });\n } else {\n mainTree.individual[remainingRange] = cloneEntry(entry);\n }\n }\n }\n}\n\n/**\n * Recursively merges the entry forr the mergeTree into the mainTree\n *\n * @param mainTree The entry where the values should be merged\n * @param mergeTree The entry to merge into the mainTree\n * @param mergedEntries WeakMap to track already merged entry pairs\n */\nfunction mergeTreeEntry(mainTree: ILookupTreeEntry, mergeTree: ILookupTreeEntry, mergedEntries: WeakMap<ILookupTreeEntry, Set<ILookupTreeEntry>>): void {\n // Check if we've already merged this pair\n let mergedSet = mergedEntries.get(mainTree);\n if (mergedSet?.has(mergeTree)) {\n return;\n }\n if (!mergedSet) {\n mergedSet = new Set();\n mergedEntries.set(mainTree, mergedSet);\n }\n mergedSet.add(mergeTree);\n\n if (\n mergeTree.lookup && (\n !mainTree.lookup ||\n mainTree.lookup.index > mergeTree.lookup.index ||\n (mainTree.lookup.index === mergeTree.lookup.index && mainTree.lookup.subIndex > mergeTree.lookup.subIndex)\n )\n ) {\n mainTree.lookup = mergeTree.lookup;\n }\n\n if (mergeTree.forward) {\n if (!mainTree.forward) {\n mainTree.forward = mergeTree.forward;\n } else {\n mergeSubtree(mainTree.forward, mergeTree.forward, mergedEntries);\n }\n }\n\n if (mergeTree.reverse) {\n if (!mainTree.reverse) {\n mainTree.reverse = mergeTree.reverse;\n } else {\n mergeSubtree(mainTree.reverse, mergeTree.reverse, mergedEntries);\n }\n }\n}\n\ninterface IOverlap {\n first: (number | [number, number])[];\n second: (number | [number, number])[];\n both: number | [number, number] | null;\n}\n\n/**\n * Determines the overlap (if any) between two ranges. Returns the distinct\n * ranges for each range and the overlap (if any).\n *\n * @param first First range\n * @param second Second range\n */\nfunction getRangeOverlap(first: [number, number], second: [number, number]): IOverlap {\n const result: IOverlap = {\n first: [],\n second: [],\n both: null\n };\n\n // Both\n if (first[0] < second[1] && second[0] < first[1]) {\n const start = Math.max(first[0], second[0]);\n const end = Math.min(first[1], second[1]);\n result.both = rangeOrIndividual(start, end);\n }\n\n // Before\n if (first[0] < second[0]) {\n const start = first[0];\n const end = Math.min(second[0], first[1]);\n result.first.push(rangeOrIndividual(start, end));\n } else if (second[0] < first[0]) {\n const start = second[0];\n const end = Math.min(second[1], first[0]);\n result.second.push(rangeOrIndividual(start, end));\n }\n\n // After\n if (first[1] > second[1]) {\n const start = Math.max(first[0], second[1]);\n const end = first[1];\n result.first.push(rangeOrIndividual(start, end));\n } else if (second[1] > first[1]) {\n const start = Math.max(first[1], second[0]);\n const end = second[1];\n result.second.push(rangeOrIndividual(start, end));\n }\n\n return result;\n}\n\n/**\n * Determines the overlap (if any) between the individual glyph and the range\n * provided. Returns the glyphs and/or ranges that are unique to each provided\n * and the overlap (if any).\n *\n * @param first Individual glyph\n * @param second Range\n */\nfunction getIndividualOverlap(first: number, second: [number, number]): IOverlap {\n // Disjoint\n if (first < second[0] || first > second[1]) {\n return {\n first: [first],\n second: [second],\n both: null\n };\n }\n\n const result: IOverlap = {\n first: [],\n second: [],\n both: first\n };\n\n if (second[0] < first) {\n result.second.push(rangeOrIndividual(second[0], first));\n }\n\n if (second[1] > first) {\n result.second.push(rangeOrIndividual(first + 1, second[1]));\n }\n\n return result;\n}\n\n/**\n * Returns an individual glyph if the range is of size one or a range if it is\n * larger.\n *\n * @param start Beginning of the range (inclusive)\n * @param end End of the range (exclusive)\n */\nfunction rangeOrIndividual(start: number, end: number): number | [number, number] {\n if (end - start === 1) {\n return start;\n }\n return [start, end];\n\n}\n\n/**\n * Clones an individual lookup tree entry.\n *\n * @param entry Lookup tree entry to clone\n * @param visited Map to track already cloned entries (prevents infinite loops)\n */\nfunction cloneEntry(entry: ILookupTreeEntry, visited: Map<ILookupTreeEntry, ILookupTreeEntry> = new Map()): ILookupTreeEntry {\n if (visited.has(entry)) {\n return visited.get(entry)!;\n }\n\n const result: ILookupTreeEntry = {};\n visited.set(entry, result);\n\n if (entry.forward) {\n result.forward = cloneTree(entry.forward, visited);\n }\n\n if (entry.reverse) {\n result.reverse = cloneTree(entry.reverse, visited);\n }\n\n if (entry.lookup) {\n result.lookup = {\n contextRange: entry.lookup.contextRange.slice() as [number, number],\n index: entry.lookup.index,\n length: entry.lookup.length,\n subIndex: entry.lookup.subIndex,\n substitutions: entry.lookup.substitutions.slice()\n };\n }\n\n return result;\n}\n\n/**\n * Clones a lookup tree.\n *\n * @param tree Lookup tree to clone\n * @param visited Map to track already cloned entries (prevents infinite loops)\n */\nfunction cloneTree(tree: ILookupTree, visited: Map<ILookupTreeEntry, ILookupTreeEntry> = new Map()): ILookupTree {\n const individual: { [glyphId: string]: ILookupTreeEntry } = {};\n for (const [glyphId, entry] of Object.entries(tree.individual)) {\n individual[glyphId] = cloneEntry(entry, visited);\n }\n\n return {\n individual,\n range: tree.range.map(({ range, entry }) => ({\n range: range.slice() as [number, number],\n entry: cloneEntry(entry, visited)\n }))\n };\n}\n", "import { IFlattenedLookupTree, ILookupResult } from './types';\n\nexport default function walkTree(tree: IFlattenedLookupTree, sequence: number[], startIndex: number, index: number): ILookupResult | undefined {\n const glyphId = sequence[index];\n const subtree = tree[glyphId];\n if (!subtree) {\n return undefined;\n }\n\n let lookup = subtree.lookup;\n if (subtree.reverse) {\n const reverseLookup = walkReverse(subtree.reverse, sequence, startIndex);\n\n if (\n (!lookup && reverseLookup) ||\n (\n reverseLookup && lookup && (\n lookup.index > reverseLookup.index ||\n (lookup.index === reverseLookup.index && lookup.subIndex > reverseLookup.subIndex)\n )\n )\n ) {\n lookup = reverseLookup;\n }\n }\n\n if (++index >= sequence.length || !subtree.forward) {\n return lookup;\n }\n\n const forwardLookup = walkTree(subtree.forward, sequence, startIndex, index);\n\n if (\n (!lookup && forwardLookup) ||\n (\n forwardLookup && lookup && (\n lookup.index > forwardLookup.index ||\n (lookup.index === forwardLookup.index && lookup.subIndex > forwardLookup.subIndex)\n )\n )\n ) {\n lookup = forwardLookup;\n }\n\n return lookup;\n}\n\nfunction walkReverse(tree: IFlattenedLookupTree, sequence: number[], index: number): ILookupResult | undefined {\n let subtree = tree[sequence[--index]];\n let lookup: ILookupResult | undefined = subtree && subtree.lookup;\n while (subtree) {\n if (\n (!lookup && subtree.lookup) ||\n (subtree.lookup && lookup && lookup.index > subtree.lookup.index)\n ) {\n lookup = subtree.lookup;\n }\n\n if (--index < 0 || !subtree.reverse) {\n break;\n }\n\n subtree = subtree.reverse[sequence[index]];\n }\n\n return lookup;\n}\n", "/**\n * Merges the range defined by the provided start and end into the list of\n * existing ranges. The merge is done in place on the existing range for\n * performance and is also returned.\n *\n * @param ranges Existing range list\n * @param newRangeStart Start position of the range to merge, inclusive\n * @param newRangeEnd End position of range to merge, exclusive\n */\nexport default function mergeRange(ranges: [number, number][], newRangeStart: number, newRangeEnd: number): [number, number][] {\n let inRange = false;\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n if (!inRange) {\n if (newRangeEnd <= range[0]) {\n // Case 1: New range is before the search range\n ranges.splice(i, 0, [newRangeStart, newRangeEnd]);\n return ranges;\n }\n if (newRangeEnd <= range[1]) {\n // Case 2: New range is either wholly contained within the\n // search range or overlaps with the front of it\n range[0] = Math.min(newRangeStart, range[0]);\n return ranges;\n }\n if (newRangeStart < range[1]) {\n // Case 3: New range either wholly contains the search range\n // or overlaps with the end of it\n range[0] = Math.min(newRangeStart, range[0]);\n inRange = true;\n } else {\n // Case 4: New range starts after the search range\n continue;\n }\n } else {\n if (newRangeEnd <= range[0]) {\n // Case 5: New range extends from previous range but doesn't\n // reach the current one\n ranges[i - 1][1] = newRangeEnd;\n return ranges;\n }\n if (newRangeEnd <= range[1]) {\n // Case 6: New range extends from prvious range into the\n // current range\n ranges[i - 1][1] = Math.max(newRangeEnd, range[1]);\n ranges.splice(i, 1);\n return ranges;\n }\n // Case 7: New range extends from previous range past the\n // end of the current range\n ranges.splice(i, 1);\n i--;\n }\n }\n\n if (inRange) {\n // Case 8: New range extends past the last existing range\n ranges[ranges.length - 1][1] = newRangeEnd;\n } else {\n // Case 9: New range starts after the last existing range\n ranges.push([newRangeStart, newRangeEnd]);\n }\n\n return ranges;\n}\n", "import { CoverageTable } from '../tables';\n\n/**\n * Get the index of the given glyph in the coverage table, or null if it is not\n * present in the table.\n *\n * @param table JSON representation of the coverage table\n * @param glyphId Index of the glyph to look for\n */\nexport default function getCoverageGlyphIndex(table: CoverageTable, glyphId: number): number | null {\n switch (table.format) {\n // https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#coverage-format-1\n case 1:\n const index = table.glyphs.indexOf(glyphId);\n return index !== -1\n ? index\n : null;\n // https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#coverage-format-2\n case 2:\n const range = table.ranges\n .find(range => range.start <= glyphId && range.end >= glyphId);\n return range\n ? range.index\n : null;\n }\n}\n\nexport function listGlyphsByIndex(table: CoverageTable): { glyphId: number | [number, number], index: number }[] {\n switch (table.format) {\n case 1:\n return table.glyphs.map((glyphId, index) => ({ glyphId, index }));\n case 2:\n const results: { glyphId: number | [number, number], index: number }[] = [];\n for (const [index, range] of table.ranges.entries()) {\n if (range.end === range.start) {\n results.push({ glyphId: range.start, index });\n } else {\n results.push({ glyphId: [range.start, range.end + 1], index });\n }\n }\n return results;\n }\n}\n", "import { SubstitutionTable } from '../tables';\n\nimport getCoverageGlyphIndex from './coverage';\n\n/**\n * Get the substitution glyph for the givne glyph, or null if the glyph was not\n * found in the table.\n *\n * @param table JSON representation of the substitution table\n * @param glyphId The index of the glpyh to find substitutions for\n */\nexport function getRangeSubstitutionGlyphs(table: SubstitutionTable, glyphId: [number, number]): Map<[number, number] | number, number | null> {\n const replacementStart: number = glyphId[0];\n const currentReplacement: number | null = getIndividualSubstitutionGlyph(table, replacementStart);\n let search: number = glyphId[0] + 1;\n\n const result = new Map<[number, number] | number, number | null>();\n\n while (search < glyphId[1]) {\n const sub = getIndividualSubstitutionGlyph(table, search);\n if (sub !== currentReplacement) {\n if (search - replacementStart <= 1) {\n result.set(replacementStart, currentReplacement);\n } else {\n result.set([replacementStart, search], currentReplacement);\n }\n }\n\n search++;\n }\n\n if (search - replacementStart <= 1) {\n result.set(replacementStart, currentReplacement);\n } else {\n result.set([replacementStart, search], currentReplacement);\n }\n\n return result;\n}\n\nexport function getIndividualSubstitutionGlyph(table: SubstitutionTable, glyphId: number): number | null {\n const coverageIndex = getCoverageGlyphIndex(table.coverage, glyphId);\n\n // istanbul ignore next - invalid font\n if (coverageIndex === null) {\n return null;\n }\n\n switch (table.substFormat) {\n // https://docs.microsoft.com/en-us/typography/opentype/spec/gsub#11-single-substitution-format-1\n case 1:\n // TODO: determine if there's a rhyme or reason to the 16-bit\n // wraparound and if it can ever be a different number\n return (glyphId + table.deltaGlyphId) % (2 ** 16);\n // https://docs.microsoft.com/en-us/typography/opentype/spec/gsub#12-single-substitution-format-2\n case 2:\n return table.substitute[coverageIndex] ?? null;\n }\n}\n", "import { ILookupTreeEntry, ILookupTree } from '../types';\nimport { ISubstitutionLookupRecord, Lookup } from '../tables';\n\nimport { getIndividualSubstitutionGlyph, getRangeSubstitutionGlyphs } from './substitution';\n\nexport interface IEntryMeta {\n entry: ILookupTreeEntry;\n substitutions: (number | null)[];\n}\n\nexport function processInputPosition(\n glyphs: (number | [number, number])[],\n position: number,\n currentEntries: IEntryMeta[],\n lookupRecords: ISubstitutionLookupRecord[],\n lookups: Lookup[]\n): IEntryMeta[] {\n const nextEntries: IEntryMeta[] = [];\n for (const currentEntry of currentEntries) {\n currentEntry.entry.forward = {\n individual: {},\n range: []\n };\n for (const glyph of glyphs) {\n nextEntries.push(...getInputTree(\n currentEntry.entry.forward,\n lookupRecords,\n lookups,\n position,\n glyph\n ).map(({ entry, substitution }) => ({\n entry,\n substitutions: [...currentEntry.substitutions, substitution]\n })));\n }\n }\n\n return nextEntries;\n}\n\nexport function processLookaheadPosition(\n glyphs: (number | [number, number])[],\n currentEntries: IEntryMeta[]\n): IEntryMeta[] {\n const nextEntries: IEntryMeta[] = [];\n const processedEntries = new Set<ILookupTreeEntry>();\n\n for (const currentEntry of currentEntries) {\n // Skip if we've already processed this entry object\n if (processedEntries.has(currentEntry.entry)) {\n continue;\n }\n processedEntries.add(currentEntry.entry);\n\n currentEntry.entry.forward ??= {\n individual: {},\n range: []\n };\n\n // All glyphs at this position share ONE entry - lookahead just needs to match,\n // all paths lead to the same result\n const sharedEntry: ILookupTreeEntry = {};\n\n for (const glyph of glyphs) {\n if (Array.isArray(glyph)) {\n currentEntry.entry.forward.range.push({\n entry: sharedEntry,\n range: glyph\n });\n } else {\n currentEntry.entry.forward.individual[glyph] = sharedEntry;\n }\n }\n\n nextEntries.push({\n entry: sharedEntry,\n substitutions: currentEntry.substitutions\n });\n }\n\n return nextEntries;\n}\n\nexport function processBacktrackPosition(\n glyphs: (number | [number, number])[],\n currentEntries: IEntryMeta[]\n): IEntryMeta[] {\n const nextEntries: IEntryMeta[] = [];\n const processedEntries = new Set<ILookupTreeEntry>();\n\n for (const currentEntry of currentEntries) {\n // Skip if we've already processed this entry object\n if (processedEntries.has(currentEntry.entry)) {\n continue;\n }\n processedEntries.add(currentEntry.entry);\n\n currentEntry.entry.reverse ??= {\n individual: {},\n range: []\n };\n\n // All glyphs at this position share ONE entry - backtrack just needs to match,\n // all paths lead to the same result\n const sharedEntry: ILookupTreeEntry = {};\n\n for (const glyph of glyphs) {\n if (Array.isArray(glyph)) {\n currentEntry.entry.reverse.range.push({\n entry: sharedEntry,\n range: glyph\n });\n } else {\n currentEntry.entry.reverse.individual[glyph] = sharedEntry;\n }\n }\n\n nextEntries.push({\n entry: sharedEntry,\n substitutions: currentEntry.substitutions\n });\n }\n\n return nextEntries;\n}\n\nexport function getInputTree(tree: ILookupTree, substitutions: ISubstitutionLookupRecord[], lookups: Lookup[], inputIndex: number, glyphId: number | [number, number]): { entry: ILookupTreeEntry, substitution: number | null }[] {\n const result: { entry: ILookupTreeEntry, substitution: number | null }[] = [];\n if (!Array.isArray(glyphId)) {\n tree.individual[glyphId] = {};\n result.push({\n entry: tree.individual[glyphId],\n substitution: getSubstitutionAtPosition(substitutions, lookups, inputIndex, glyphId)\n });\n } else {\n const subs = getSubstitutionAtPositionRange(substitutions, lookups, inputIndex, glyphId);\n for (const [range, substitution] of subs) {\n const entry: ILookupTreeEntry = {};\n if (Array.isArray(range)) {\n tree.range.push({ range, entry });\n } else {\n tree.individual[range] = {};\n }\n result.push({ entry, substitution });\n }\n }\n\n return result;\n}\n\nfunction getSubstitutionAtPositionRange(substitutions: ISubstitutionLookupRecord[], lookups: Lookup[], index: number, range: [number, number]): Map<number | [number, number], number | null> {\n for (const substitution of substitutions.filter(s => s.sequenceIndex === index)) {\n for (const substitutionTable of (lookups[substitution.lookupListIndex] as Lookup.IType1).subtables) {\n const sub = getRangeSubstitutionGlyphs(\n substitutionTable,\n range\n );\n\n if (!Array.from(sub.values()).every(val => val !== null)) {\n return sub;\n }\n }\n }\n\n return new Map([[range, null]]);\n}\n\nfunction getSubstitutionAtPosition(substitutions: ISubstitutionLookupRecord[], lookups: Lookup[], index: number, glyphId: number): number | null {\n for (const substitution of substitutions.filter(s => s.sequenceIndex === index)) {\n for (const substitutionTable of (lookups[substitution.lookupListIndex] as Lookup.IType1).subtables) {\n const sub = getIndividualSubstitutionGlyph(\n substitutionTable,\n glyphId\n );\n\n if (sub !== null) {\n return sub;\n }\n }\n }\n\n return null;\n}\n", "import { ChainingContextualSubstitutionTable, Lookup } from '../tables';\nimport { ILookupTree } from '../types';\n\nimport { listGlyphsByIndex } from './coverage';\nimport { processInputPosition, processLookaheadPosition, processBacktrackPosition, getInputTree, IEntryMeta } from './helper';\n\n/**\n * Build lookup tree for GSUB lookup table 6, format 1.\n * https://docs.microsoft.com/en-us/typography/opentype/spec/gsub#61-chaining-context-substitution-format-1-simple-glyph-contexts\n *\n * @param table JSON representation of the table\n * @param lookups List of lookup tables\n * @param tableIndex Index of this table in the overall lookup\n */\nexport default function buildTree(table: ChainingContextualSubstitutionTable.IFormat1, lookups: Lookup[], tableIndex: number): ILookupTree {\n const result: ILookupTree = {\n individual: {},\n range: []\n };\n\n const firstGlyphs = listGlyphsByIndex(table.coverage);\n\n for (const { glyphId, index } of firstGlyphs) {\n const chainRuleSet = table.chainRuleSets[index];\n\n // If the chain rule set is null there's nothing to do with this table.\n if (!chainRuleSet) {\n continue;\n }\n\n for (const [subIndex, subTable] of chainRuleSet.entries()) {\n let currentEntries: IEntryMeta[] = getInputTree(\n result,\n subTable.lookupRecords,\n lookups,\n 0,\n glyphId\n ).map(({ entry, substitution }) => ({ entry, substitutions: [substitution] }));\n\n // We walk forward, then backward\n for (const [index, glyph] of subTable.input.entries()) {\n currentEntries = processInputPosition(\n [glyph],\n index + 1,\n currentEntries,\n subTable.lookupRecords,\n lookups\n );\n }\n\n for (const glyph of subTable.lookahead) {\n currentEntries = processLookaheadPosition(\n [glyph],\n currentEntries\n );\n }\n\n for (const glyph of subTable.backtrack) {\n currentEntries = processBacktrackPosition(\n [glyph],\n currentEntries\n );\n }\n\n // When we get to the end, insert the lookup information\n for (const { entry, substitutions } of currentEntries) {\n entry.lookup = {\n substitutions,\n length: subTable.input.length + 1,\n index: tableIndex,\n subIndex,\n contextRange: [\n -1 * subTable.backtrack.length,\n 1 + subTable.input.length + subTable.lookahead.length\n ]\n };\n }\n }\n }\n\n return result;\n}\n", "import { ClassDefTable } from '../tables';\n\n/**\n * Get the number of the class to which the glyph belongs, or null if it doesn't\n * belong to any of them.\n *\n * @param table JSON representation of the class def table\n * @param glyphId Index of the glyph to look for\n */\nexport default function getGlyphClass(table: ClassDefTable, glyphId: number | [number, number]): Map<number | [number, number], number | null> {\n switch (table.format) {\n // https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#class-definition-table-format-2\n case 2:\n if (Array.isArray(glyphId)) {\n return getRangeGlyphClass(table, glyphId);\n }\n return new Map([[\n glyphId,\n getIndividualGlyphClass(table, glyphId)\n ]]);\n // https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#class-definition-table-format-1\n default:\n return new Map([[glyphId, null]]);\n }\n}\n\nfunction getRangeGlyphClass(table: ClassDefTable.IFormat2, glyphId: [number, number]): Map<number | [number, number], number | null> {\n const classStart: number = glyphId[0];\n const currentClass: number | null = getIndividualGlyphClass(table, classStart);\n let search: number = glyphId[0] + 1;\n\n const result = new Map<[number, number] | number, number | null>();\n\n while (search < glyphId[1]) {\n const clazz = getIndividualGlyphClass(table, search);\n if (clazz !== currentClass) {\n if (search - classStart <= 1) {\n result.set(classStart, currentClass);\n } else {\n result.set([classStart, search], currentClass);\n }\n }\n search++;\n }\n\n if (search - classStart <= 1) {\n result.set(classStart, currentClass);\n } else {\n result.set([classStart, search], currentClass);\n }\n\n return result;\n}\n\nfunction getIndividualGlyphClass(table: ClassDefTable.IFormat2, glyphId: number): number | null {\n for (const range of table.ranges) {\n if (range.start <= glyphId && range.end >= glyphId) {\n return range.classId;\n }\n }\n\n return null;\n}\n\nexport function listClassGlyphs(table: ClassDefTable, index: number): (number | [number, number])[] {\n switch (table.format) {\n case 2:\n const results: (number | [number, number])[] = [];\n for (const range of table.ranges) {\n if (range.classId !== index) {\n continue;\n }\n\n if (range.end === range.start) {\n results.push(range.start);\n } else {\n results.push([range.start, range.end + 1]);\n }\n }\n return results;\n default:\n return [];\n }\n}\n", "import { ChainingContextualSubstitutionTable, Lookup } from '../tables';\nimport { ILookupTree } from '../types';\nimport mergeTrees from '../merge';\n\nimport { listGlyphsByIndex } from './coverage';\nimport getGlyphClass, { listClassGlyphs } from './classDef';\nimport { processInputPosition, processLookaheadPosition, processBacktrackPosition, getInputTree, IEntryMeta } from './helper';\n\n/**\n * Build lookup tree for GSUB lookup table 6, format 2.\n * https://docs.microsoft.com/en-us/typography/opentype/spec/gsub#62-chaining-context-substitution-format-2-class-based-glyph-contexts\n *\n * @param table JSON representation of the table\n * @param lookups List of lookup tables\n * @param tableIndex Index of this table in the overall lookup\n */\nexport default function buildTree(table: ChainingContextualSubstitutionTable.IFormat2, lookups: Lookup[], tableIndex: number): ILookupTree {\n const results: ILookupTree[] = [];\n\n const firstGlyphs = listGlyphsByIndex(table.coverage);\n\n for (const { glyphId } of firstGlyphs) {\n const firstInputClass = getGlyphClass(table.inputClassDef, glyphId);\n for (const [glyphId, inputClass] of firstInputClass.entries()) {\n // istanbul ignore next - invalid font\n if (inputClass === null) {\n continue;\n }\n\n const classSet = table.chainClassSet[inputClass];\n\n // If the class set is null there's nothing to do with this table.\n if (!classSet) {\n continue;\n }\n\n for (const [subIndex, subTable] of classSet.entries()) {\n const result: ILookupTree = {\n individual: {},\n range: []\n };\n\n let currentEntries: IEntryMeta[] = getInputTree(\n result,\n subTable.lookupRecords,\n lookups,\n 0,\n glyphId\n ).map(({ entry, substitution }) => ({ entry, substitutions: [substitution] }));\n\n for (const [index, classNum] of subTable.input.entries()) {\n currentEntries = processInputPosition(\n listClassGlyphs(table.inputClassDef, classNum),\n index + 1,\n currentEntries,\n subTable.lookupRecords,\n lookups\n );\n }\n\n for (const classNum of subTable.lookahead) {\n currentEntries = processLookaheadPosition(\n listClassGlyphs(table.lookaheadClassDef, classNum),\n currentEntries\n );\n }\n\n for (const classNum of subTable.backtrack) {\n currentEntries = processBacktrackPosition(\n listClassGlyphs(table.backtrackClassDef, classNum),\n currentEntries\n );\n }\n\n // When we get to the end, all of the entries we've accumulated\n // should have a lookup defined\n for (const { entry, substitutions } of currentEntries) {\n entry.lookup = {\n substitutions,\n index: tableIndex,\n subIndex,\n length: subTable.input.length + 1,\n contextRange: [\n -1 * subTable.backtrack.length,\n 1 + subTable.input.length + subTable.lookahead.length\n ]\n };\n }\n\n results.push(result);\n }\n }\n }\n\n return mergeTrees(results);\n}\n", "import { ChainingContextualSubstitutionTable, Lookup } from '../tables';\nimport { ILookupTree } from '../types';\n\nimport { listGlyphsByIndex } from './coverage';\nimport { processInputPosition, processLookaheadPosition, processBacktrackPosition, getInputTree, IEntryMeta } from './helper';\n\n/**\n * Build lookup tree for GSUB lookup table 6, format 3.\n * https://docs.microsoft.com/en-us/typography/opentype/spec/gsub#63-chaining-context-substitution-format-3-coverage-based-glyph-contexts\n *\n * @param table JSON representation of the table\n * @param lookups List of lookup tables\n * @param tableIndex Index of this table in the overall lookup\n */\nexport default function buildTree(table: ChainingContextualSubstitutionTable.IFormat3, lookups: Lookup[], tableIndex: number): ILookupTree {\n const result: ILookupTree = {\n individual: {},\n range: []\n };\n\n const firstGlyphs = listGlyphsByIndex(table.inputCoverage[0]);\n\n for (const { glyphId } of firstGlyphs) {\n let currentEntries: IEntryMeta[] = getInputTree(\n result,\n table.lookupRecords,\n lookups,\n 0,\n glyphId\n ).map(({ entry, substitution }) => ({ entry, substitutions: [substitution] }));\n\n for (const [index, coverage] of table.inputCoverage.slice(1).entries()) {\n currentEntries = processInputPosition(\n listGlyphsByIndex(coverage).map(glyph => glyph.glyphId),\n index + 1,\n currentEntries,\n table.lookupRecords,\n lookups\n );\n }\n\n for (const coverage of table.lookaheadCoverage) {\n currentEntries = processLookaheadPosition(\n listGlyphsByIndex(coverage).map(glyph => glyph.glyphId),\n currentEntries\n );\n }\n\n for (const coverage of table.backtrackCoverage) {\n currentEntries = processBacktrackPosition(\n listGlyphsByIndex(coverage).map(glyph => glyph.glyphId),\n currentEntries\n );\n }\n\n // When we get to the end, all of the entries we've accumulated\n // should have a lookup defined\n for (const { entry, substitutions } of currentEntries) {\n entry.lookup = {\n substitutions,\n index: tableIndex,\n subIndex: 0,\n length: table.inputCoverage.length,\n contextRange: [\n -1 * table.backtrackCoverage.length,\n table.inputCoverage.length + table.lookaheadCoverage.length\n ]\n };\n }\n }\n\n return result;\n}\n", "import { IReverseChainingContextualSingleSubstitutionTable } from '../tables';\nimport { ILookupTree, ILookupTreeEntry } from '../types';\n\nimport { listGlyphsByIndex } from './coverage';\nimport { processLookaheadPosition, processBacktrackPosition, IEntryMeta } from './helper';\n\n/**\n * Build lookup tree for GSUB lookup table 8, format 1.\n * https://docs.microsoft.com/en-us/typography/opentype/spec/gsub#81-reverse-chaining-contextual-single-substitution-format-1-coverage-based-glyph-contexts\n *\n * @param table JSON representation of the table\n * @param tableIndex Index of this table in the overall lookup\n */\nexport default function buildTree(table: IReverseChainingContextualSingleSubstitutionTable, tableIndex: number): ILookupTree {\n const result: ILookupTree = {\n individual: {},\n range: []\n };\n\n const glyphs = listGlyphsByIndex(table.coverage);\n\n for (const { glyphId, index } of glyphs) {\n const initialEntry: ILookupTreeEntry = {};\n if (Array.isArray(glyphId)) {\n result.range.push({\n entry: initialEntry,\n range: glyphId\n });\n } else {\n result.individual[glyphId] = initialEntry;\n }\n\n let currentEntries: IEntryMeta[] = [{\n entry: initialEntry,\n substitutions: [table.substitutes[index]]\n }];\n\n // We walk forward, then backward\n for (const coverage of table.lookaheadCoverage) {\n currentEntries = processLookaheadPosition(\n listGlyphsByIndex(coverage).map(glyph => glyph.glyphId),\n currentEntries\n );\n }\n\n for (const coverage of table.backtrackCoverage) {\n currentEntries = processBacktrackPosition(\n listGlyphsByIndex(coverage).map(glyph => glyph.glyphId),\n currentEntries\n );\n }\n\n // When we get to the end, insert the lookup information\n for (const { entry, substitutions } of currentEntries) {\n entry.lookup = {\n substitutions,\n index: tableIndex,\n subIndex: 0,\n length: 1,\n contextRange: [\n -1 * table.backtrackCoverage.length,\n 1 + table.lookaheadCoverage.length\n ]\n };\n }\n }\n\n return result;\n}\n", "import { ILookupTree, IFlattenedLookupTree, ILookupTreeEntry, IFlattenedLookupTreeEntry } from './types';\n\nexport default function flatten(tree: ILookupTree, visited: Map<ILookupTreeEntry, IFlattenedLookupTreeEntry> = new Map()): IFlattenedLookupTree {\n const result: IFlattenedLookupTree = {};\n for (const [glyphId, entry] of Object.entries(tree.individual)) {\n result[glyphId] = flattenEntry(entry, visited);\n }\n\n for (const { range, entry } of tree.range) {\n const flattened = flattenEntry(entry, visited);\n for (let glyphId = range[0]; glyphId < range[1]; glyphId++) {\n result[glyphId] = flattened;\n }\n }\n\n return result;\n}\n\nfunction flattenEntry(entry: ILookupTreeEntry, visited: Map<ILookupTreeEntry, IFlattenedLookupTreeEntry>): IFlattenedLookupTreeEntry {\n if (visited.has(entry)) {\n return visited.get(entry)!;\n }\n\n const result: IFlattenedLookupTreeEntry = {};\n visited.set(entry, result);\n\n if (entry.forward) {\n result.forward = flatten(entry.forward, visited);\n }\n\n if (entry.reverse) {\n result.reverse = flatten(entry.reverse, visited);\n }\n\n if (entry.lookup) {\n result.lookup = entry.lookup;\n }\n\n return result;\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\ninterface IParseContext {\n input: string;\n offset: number;\n}\n\n/**\n * Parses a CSS font family value, returning the component font families\n * contained within.\n *\n * @param family The CSS font family input string to parse\n */\nexport default function parse(family: string): string[] {\n if (typeof family !== 'string') {\n throw new Error('Font family must be a string');\n }\n\n const context: IParseContext = {\n input: family,\n offset: 0\n };\n\n const families = [];\n let currentFamily = '';\n\n // Work through the input character by character until there are none left.\n // This lexing and parsing in one pass.\n while (context.offset < context.input.length) {\n const char = context.input[context.offset++];\n switch (char) {\n // String\n case '\\'':\n case '\"':\n currentFamily += parseString(context, char);\n break;\n // End of family\n case ',':\n families.push(currentFamily);\n currentFamily = '';\n break;\n default:\n // Identifiers (whitespace between families is swallowed)\n if (!/\\s/.test(char)) {\n context.offset--;\n currentFamily += parseIdentifier(context);\n families.push(currentFamily);\n currentFamily = '';\n }\n }\n }\n\n return families;\n}\n\n/**\n * Parse a CSS string.\n *\n * @param context Parsing input and offset\n * @param quoteChar The quote character for the string (' or \")\n */\nfunction parseString(context: IParseContext, quoteChar: '\\'' | '\"'): string {\n let str = '';\n let escaped = false;\n while (context.offset < context.input.length) {\n const char = context.input[context.offset++];\n if (escaped) {\n if (/[\\dA-Fa-f]/.test(char)) {\n // Unicode escape\n context.offset--;\n str += parseUnicode(context);\n } else if (char !== '\\n') {\n // Newlines are ignored if escaped. Other characters are used as is.\n str += char;\n }\n escaped = false;\n } else {\n switch (char) {\n // Terminated quote\n case quoteChar:\n return str;\n // Begin escape\n case '\\\\':\n escaped = true;\n break;\n // Add character to string\n default:\n str += char;\n }\n }\n }\n\n throw new Error('Unterminated string');\n}\n\n/**\n * Parse a CSS custom identifier.\n *\n * @param context Parsing input and offset\n */\nfunction parseIdentifier(context: IParseContext): string {\n let str = '';\n let escaped = false;\n while (context.offset < context.input.length) {\n const char = context.input[context.offset++];\n if (escaped) {\n if (/[\\dA-Fa-f]/.test(char)) {\n // Unicode escape\n context.offset--;\n str += parseUnicode(context);\n } else {\n // Everything else is used as is\n str += char;\n }\n escaped = false;\n } else {\n switch (char) {\n // Begin escape\n case '\\\\':\n escaped = true;\n break;\n // Terminate identifier\n case ',':\n return str;\n default:\n if (/\\s/.test(char)) {\n // Whitespace is collapsed into a single space within an identifier\n if (!str.endsWith(' ')) {\n str += ' ';\n }\n } else {\n // Add other characters directly\n str += char;\n }\n }\n }\n }\n\n return str;\n}\n\n/**\n * Parse a CSS unicode escape.\n *\n * @param context Parsing input and offset\n */\nfunction parseUnicode(context: IParseContext): string {\n let str = '';\n while (context.offset < context.input.length) {\n const char = context.input[context.offset++];\n if (/\\s/.test(char)) {\n // The first whitespace character after a unicode escape indicates the end\n // of the escape and is swallowed.\n return unicodeToString(str);\n }\n if (str.length >= 6 || !/[\\dA-Fa-f]/.test(char)) {\n // If the next character is not a valid hex digit or we have reached the\n // maximum of 6 digits in the escape, terminate the escape.\n context.offset--;\n return unicodeToString(str);\n }\n\n // Otherwise, just add it to the escape\n str += char;\n }\n\n return unicodeToString(str);\n}\n\n/**\n * Convert a unicode code point from a hex string to a utf8 string.\n *\n * @param codePoint Unicode code point represented as a hex string\n */\nfunction unicodeToString(codePoint: string): string {\n return String.fromCodePoint(parseInt(codePoint, 16));\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { Font, loadBuffer } from './fontLigatures/index';\n\nimport parse from './parse';\n\ninterface IFontMetadata {\n family: string;\n fullName: string;\n postscriptName: string;\n blob: () => Promise<Blob>;\n}\n\ninterface IFontAccessNavigator {\n fonts: {\n query: () => Promise<IFontMetadata[]>;\n };\n permissions: {\n request?: (permission: { name: string }) => Promise<{state: string}>;\n };\n}\n\nlet fontsPromise: Promise<Record<string, IFontMetadata[]>> | undefined = undefined;\n\n/**\n * Loads the font ligature wrapper for the specified font family if it could be\n * resolved, throwing if it is unable to find a suitable match.\n * @param fontFamily The CSS font family definition to resolve\n * @param cacheSize The size of the ligature cache to maintain if the font is resolved\n */\nexport default async function load(fontFamily: string, cacheSize: number): Promise<Font | undefined> {\n if (!fontsPromise) {\n // Web environment that supports font access API\n if (typeof navigator !== 'undefined' && 'fonts' in navigator) {\n try {\n const status = await (navigator as unknown as IFontAccessNavigator).permissions.request?.({\n name: 'local-fonts'\n });\n if (status && status.state !== 'granted') {\n throw new Error('Permission to access local fonts not granted.');\n }\n } catch (err: unknown) {\n // A `TypeError` indicates the 'local-fonts'\n // permission is not yet implemented, so\n // only `throw` if this is _not_ the problem.\n if (err instanceof Error && err.name !== 'TypeError') {\n throw err;\n }\n }\n const fonts: Record<string, IFontMetadata[]> = {};\n try {\n const fontsIterator = await (navigator as unknown as IFontAccessNavigator).fonts.query();\n for (const metadata of fontsIterator) {\n if (!fonts.hasOwnProperty(metadata.family)) {\n fonts[metadata.family] = [];\n }\n fonts[metadata.family].push(metadata);\n }\n fontsPromise = Promise.resolve(fonts);\n } catch (err: unknown) {\n if (err instanceof Error) {\n console.error(err.name, err.message);\n }\n }\n }\n // Latest proposal https://bugs.chromium.org/p/chromium/issues/detail?id=1312603\n else if (typeof window !== 'undefined' && 'queryLocalFonts' in window) {\n const fonts: Record<string, IFontMetadata[]> = {};\n try {\n const fontsIterator = await (window as any).queryLocalFonts();\n for (const metadata of fontsIterator) {\n if (!fonts.hasOwnProperty(metadata.family)) {\n fonts[metadata.family] = [];\n }\n fonts[metadata.family].push(metadata);\n }\n fontsPromise = Promise.resolve(fonts);\n } catch (err: unknown) {\n if (err instanceof Error) {\n console.error(err.name, err.message);\n }\n }\n }\n fontsPromise ??= Promise.resolve({});\n }\n\n const fonts = await fontsPromise;\n for (const family of parse(fontFamily)) {\n // If we reach one of the generic font families, the font resolution\n // will end for the browser and we can't determine the specific font\n // used. Throw.\n if (genericFontFamilies.includes(family)) {\n return undefined;\n }\n\n if (fonts.hasOwnProperty(family) && fonts[family].length > 0) {\n const font = fonts[family][0];\n if ('blob' in font) {\n const bytes = await font.blob();\n const buffer = await bytes.arrayBuffer();\n return loadBuffer(buffer, { cacheSize });\n }\n return undefined;\n }\n }\n\n // If none of the fonts could resolve, throw an error\n return undefined;\n}\n\n// https://drafts.csswg.org/css-fonts-4/#generic-font-families\nconst genericFontFamilies = [\n 'serif',\n 'sans-serif',\n 'cursive',\n 'fantasy',\n 'monospace',\n 'system-ui',\n 'emoji',\n 'math',\n 'fangsong'\n];\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport type { Terminal } from '@xterm/xterm';\nimport { Font } from './fontLigatures/index';\n\nimport load from './font';\n\nconst enum LoadingState {\n UNLOADED,\n LOADING,\n LOADED,\n FAILED\n}\n\n// Caches 100K characters worth of ligatures. In practice this works out to\n// about 650 KB worth of cache, when a moderate number of ligatures are present.\nconst CACHE_SIZE = 100000;\n\n/**\n * Enable ligature support for the provided Terminal instance. To function\n * properly, this must be called after `open()` is called on the terminal. If\n * the font currently in use supports ligatures, the terminal will automatically\n * start to render them.\n * @param term Terminal instance from xterm.js\n */\nexport function enableLigatures(term: Terminal, fallbackLigatures: string[] = []): number {\n let currentFontName: string | undefined = undefined;\n let font: Font | undefined = undefined;\n let loadingState: LoadingState = LoadingState.UNLOADED;\n let loadError: unknown = undefined;\n\n return term.registerCharacterJoiner((text: string): [number, number][] => {\n // If the font hasn't been loaded yet, load it and return an empty result\n const termFont = term.options.fontFamily;\n if (\n termFont &&\n (loadingState === LoadingState.UNLOADED || currentFontName !== termFont)\n ) {\n font = undefined;\n loadingState = LoadingState.LOADING;\n currentFontName = termFont;\n const currentCallFontName = currentFontName;\n\n load(currentCallFontName, CACHE_SIZE)\n .then(f => {\n // Another request may have come in while we were waiting, so make\n // sure our font is still vaild.\n if (currentCallFontName === term.options.fontFamily) {\n loadingState = LoadingState.LOADED;\n font = f;\n\n // Only refresh things if we actually found a font\n if (f) {\n term.refresh(0, term.rows - 1);\n }\n }\n })\n .catch(e => {\n // Another request may have come in while we were waiting, so make\n // sure our font is still vaild.\n if (currentCallFontName === term.options.fontFamily) {\n loadingState = LoadingState.FAILED;\n if (term.options.logLevel === 'debug') {\n console.debug(loadError, new Error('Failure while loading font'));\n }\n font = undefined;\n loadError = e;\n }\n });\n }\n\n if (font && loadingState === LoadingState.LOADED) {\n // We clone the entries to avoid the internal cache of the ligature finder\n // getting messed up.\n return font.findLigatureRanges(text).map<[number, number]>(\n range => [range[0], range[1]]\n );\n }\n\n return getFallbackRanges(text, fallbackLigatures);\n });\n}\n\nfunction getFallbackRanges(text: string, fallbackLigatures: string[]): [number, number][] {\n const ranges: [number, number][] = [];\n for (let i = 0; i < text.length; i++) {\n for (let j = 0; j < fallbackLigatures.length; j++) {\n if (text.startsWith(fallbackLigatures[j], i)) {\n ranges.push([i, i + fallbackLigatures[j].length]);\n i += fallbackLigatures[j].length - 1;\n break;\n }\n }\n }\n return ranges;\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport type { Terminal } from '@xterm/xterm';\nimport type { LigaturesAddon as ILigaturesApi } from '@xterm/addon-ligatures';\nimport { enableLigatures } from '.';\nimport { ILigatureOptions } from './Types';\n\nexport interface ITerminalAddon {\n activate(terminal: Terminal): void;\n dispose(): void;\n}\n\nexport class LigaturesAddon implements ITerminalAddon, ILigaturesApi {\n private readonly _fallbackLigatures: string[];\n private readonly _fontFeatureSettings?: string;\n\n private _terminal: Terminal | undefined;\n private _characterJoinerId: number | undefined;\n\n constructor(options?: Partial<ILigatureOptions>) {\n // Source: calt set from https://github.com/be5invis/Iosevka?tab=readme-ov-file#ligations\n this._fallbackLigatures = (options?.fallbackLigatures ?? [\n '<--', '<---', '<<-', '<-', '->', '->>', '-->', '--->',\n '<==', '<===', '<<=', '<=', '=>', '=>>', '==>', '===>', '>=', '>>=',\n '<->', '<-->', '<--->', '<---->', '<=>', '<==>', '<===>', '<====>', '::', ':::',\n '<~~', '</', '</>', '/>', '~~>', '==', '!=', '/=', '~=', '<>', '===', '!==', '!===',\n '<:', ':=', '*=', '*+', '<*', '<*>', '*>', '<|', '<|>', '|>', '+*', '=*', '=:', ':>',\n '/*', '*/', '+++', '<!--', '<!---'\n ]).sort((a, b) => b.length - a.length);\n this._fontFeatureSettings = options?.fontFeatureSettings;\n }\n\n public activate(terminal: Terminal): void {\n if (!terminal.element) {\n throw new Error('Cannot activate LigaturesAddon before open is called');\n }\n this._terminal = terminal;\n this._characterJoinerId = enableLigatures(terminal, this._fallbackLigatures);\n terminal.element.style.fontFeatureSettings = this._fontFeatureSettings ?? '\"calt\" on';\n }\n\n public dispose(): void {\n if (this._characterJoinerId !== undefined) {\n this._terminal?.deregisterCharacterJoiner(this._characterJoinerId);\n this._characterJoinerId = undefined;\n }\n if (this._terminal?.element) {\n this._terminal.element.style.fontFeatureSettings = '';\n }\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;smCAAA,IAAAA,GAAAC,GAAA,CAAAC,GAAAC,KAAA,KAAIC,IAAY,IAAM,CACpB,IAAIC,EAAY,OAAO,eACnBC,EAAmB,OAAO,yBAC1BC,EAAoB,OAAO,oBAC3BC,EAAe,OAAO,UAAU,eAChCC,EAAW,CAACC,EAAQC,IAAQ,CAC9B,QAASC,KAAQD,EACfN,EAAUK,EAAQE,EAAM,CAAE,IAAKD,EAAIC,CAAI,EAAG,WAAY,EAAK,CAAC,CAChE,EACIC,EAAc,CAACC,EAAIC,EAAMC,EAAQC,IAAS,CAC5C,GAAIF,GAAQ,OAAOA,GAAS,UAAY,OAAOA,GAAS,WACtD,QAASG,KAAOX,EAAkBQ,CAAI,EAChC,CAACP,EAAa,KAAKM,EAAII,CAAG,GAAKA,IAAQF,GACzCX,EAAUS,EAAII,EAAK,CAAE,IAAK,IAAMH,EAAKG,CAAG,EAAG,WAAY,EAAED,EAAOX,EAAiBS,EAAMG,CAAG,IAAMD,EAAK,UAAW,CAAC,EAEvH,OAAOH,CACT,EACIK,EAAgBC,GAAQP,EAAYR,EAAU,CAAC,EAAG,aAAc,CAAE,MAAO,EAAK,CAAC,EAAGe,CAAG,EAGrFC,EAAmB,CAAC,EACxBZ,EAASY,EAAkB,CACzB,YAAa,IAAMC,GACnB,KAAM,IAAMC,GACZ,MAAO,IAAMC,GACb,KAAM,IAAMC,GACZ,OAAQ,IAAMC,EACd,KAAM,IAAMC,GACZ,SAAU,IAAMC,GAChB,MAAO,IAAMC,EACf,CAAC,EAGD,IAAIC,EAAU,EACVC,EAAkB,GACtB,SAASC,GAAO,CACd,KAAK,MAAQ,IAAI,YAAY,EAAE,EAC/B,KAAK,MAAQ,IAAI,YAAY,GAAG,CAClC,CACA,SAASC,EAAKC,EAAQC,EAAM,CAC1B,KAAK,OAASD,EACd,KAAK,YAAc,EACnB,KAAK,IAAM,EACX,KAAK,SAAW,EAChB,KAAK,KAAOC,EACZ,KAAK,QAAU,EACf,KAAK,MAAQ,IAAIH,EACjB,KAAK,MAAQ,IAAIA,CACnB,CACA,IAAII,EAAS,IAAIJ,EACbK,EAAS,IAAIL,EACbM,GAAc,IAAI,WAAW,EAAE,EAC/BC,EAAc,IAAI,YAAY,EAAE,EAChCC,GAAY,IAAI,WAAW,EAAE,EAC7BC,EAAY,IAAI,YAAY,EAAE,EAC9BC,GAAS,IAAI,WAAW,CAC1B,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,GACA,EACA,GACA,EACA,GACA,EACA,EACF,CAAC,EACGC,GAAY,IAAIX,EAChBY,GAAU,IAAI,WAAW,GAAQ,EACrC,SAASC,GAAqBC,EAAMC,EAAMC,EAAOC,EAAO,CACtD,IAAIC,EAAGC,EACP,IAAKD,EAAI,EAAGA,EAAIF,EAAO,EAAEE,EAAGJ,EAAKI,CAAC,EAAI,EACtC,IAAKA,EAAI,EAAGA,EAAI,GAAKF,EAAO,EAAEE,EAAGJ,EAAKI,EAAIF,CAAK,EAAIE,EAAIF,EAAQ,EAC/D,IAAKG,EAAMF,EAAOC,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACjCH,EAAKG,CAAC,EAAIC,EACVA,GAAO,GAAKL,EAAKI,CAAC,CAEtB,CACA,SAASE,GAAuBC,EAAIC,EAAI,CACtC,IAAIJ,EACJ,IAAKA,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAAGG,EAAG,MAAMH,CAAC,EAAI,EAItC,IAHAG,EAAG,MAAM,CAAC,EAAI,GACdA,EAAG,MAAM,CAAC,EAAI,IACdA,EAAG,MAAM,CAAC,EAAI,IACTH,EAAI,EAAGA,EAAI,GAAI,EAAEA,EAAGG,EAAG,MAAMH,CAAC,EAAI,IAAMA,EAC7C,IAAKA,EAAI,EAAGA,EAAI,IAAK,EAAEA,EAAGG,EAAG,MAAM,GAAKH,CAAC,EAAIA,EAC7C,IAAKA,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAAGG,EAAG,MAAM,IAAWH,CAAC,EAAI,IAAMA,EACvD,IAAKA,EAAI,EAAGA,EAAI,IAAK,EAAEA,EAAGG,EAAG,MAAM,IAAeH,CAAC,EAAI,IAAMA,EAC7D,IAAKA,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAAGI,EAAG,MAAMJ,CAAC,EAAI,EAEtC,IADAI,EAAG,MAAM,CAAC,EAAI,GACTJ,EAAI,EAAGA,EAAI,GAAI,EAAEA,EAAGI,EAAG,MAAMJ,CAAC,EAAIA,CACzC,CACA,IAAIK,GAAO,IAAI,YAAY,EAAE,EAC7B,SAASC,GAAgBC,EAAGC,EAAUC,EAAKC,EAAK,CAC9C,IAAIV,EAAGC,EACP,IAAKD,EAAI,EAAGA,EAAI,GAAI,EAAEA,EAAGO,EAAE,MAAMP,CAAC,EAAI,EACtC,IAAKA,EAAI,EAAGA,EAAIU,EAAK,EAAEV,EAAGO,EAAE,MAAMC,EAASC,EAAMT,CAAC,CAAC,IAEnD,IADAO,EAAE,MAAM,CAAC,EAAI,EACRN,EAAM,EAAGD,EAAI,EAAGA,EAAI,GAAI,EAAEA,EAC7BK,GAAKL,CAAC,EAAIC,EACVA,GAAOM,EAAE,MAAMP,CAAC,EAElB,IAAKA,EAAI,EAAGA,EAAIU,EAAK,EAAEV,EACjBQ,EAASC,EAAMT,CAAC,IAAGO,EAAE,MAAMF,GAAKG,EAASC,EAAMT,CAAC,CAAC,GAAG,EAAIA,EAEhE,CACA,SAASW,GAAYC,EAAG,CACjBA,EAAE,aACLA,EAAE,IAAMA,EAAE,OAAOA,EAAE,aAAa,EAChCA,EAAE,SAAW,GAEf,IAAIC,EAAMD,EAAE,IAAM,EAClB,OAAAA,EAAE,OAAS,EACJC,CACT,CACA,SAASC,GAAeF,EAAGF,EAAKb,EAAM,CACpC,GAAI,CAACa,EACH,OAAOb,EACT,KAAOe,EAAE,SAAW,IAClBA,EAAE,KAAOA,EAAE,OAAOA,EAAE,aAAa,GAAKA,EAAE,SACxCA,EAAE,UAAY,EAEhB,IAAIG,EAAMH,EAAE,IAAM,QAAU,GAAKF,EACjC,OAAAE,EAAE,OAASF,EACXE,EAAE,UAAYF,EACPK,EAAMlB,CACf,CACA,SAASmB,GAAmBJ,EAAG,EAAG,CAChC,KAAOA,EAAE,SAAW,IAClBA,EAAE,KAAOA,EAAE,OAAOA,EAAE,aAAa,GAAKA,EAAE,SACxCA,EAAE,UAAY,EAEhB,IAAIX,EAAM,EAAGgB,EAAM,EAAGC,EAAM,EACxBC,EAAMP,EAAE,IACZ,GACEK,EAAM,EAAIA,GAAOE,EAAM,GACvBA,KAAS,EACT,EAAED,EACFjB,GAAO,EAAE,MAAMiB,CAAG,EAClBD,GAAO,EAAE,MAAMC,CAAG,QACXD,GAAO,GAChB,OAAAL,EAAE,IAAMO,EACRP,EAAE,UAAYM,EACP,EAAE,MAAMjB,EAAMgB,CAAG,CAC1B,CACA,SAASG,GAAkBR,EAAGT,EAAIC,EAAI,CACpC,IAAIiB,EAAMC,EAAOC,EACb,EAAGb,EAAKc,EAIZ,IAHAH,EAAOP,GAAeF,EAAG,EAAG,GAAG,EAC/BU,EAAQR,GAAeF,EAAG,EAAG,CAAC,EAC9BW,EAAQT,GAAeF,EAAG,EAAG,CAAC,EACzB,EAAI,EAAG,EAAI,GAAI,EAAE,EAAGlB,GAAQ,CAAC,EAAI,EACtC,IAAK,EAAI,EAAG,EAAI6B,EAAO,EAAE,EAAG,CAC1B,IAAIE,EAAOX,GAAeF,EAAG,EAAG,CAAC,EACjClB,GAAQF,GAAO,CAAC,CAAC,EAAIiC,CACvB,CAEA,IADAnB,GAAgBb,GAAWC,GAAS,EAAG,EAAE,EACpCgB,EAAM,EAAGA,EAAMW,EAAOC,GAAS,CAClC,IAAII,EAAMV,GAAmBJ,EAAGnB,EAAS,EACzC,OAAQiC,EAAK,CACX,IAAK,IACH,IAAIC,EAAOjC,GAAQgB,EAAM,CAAC,EAC1B,IAAKc,EAASV,GAAeF,EAAG,EAAG,CAAC,EAAGY,EAAQ,EAAEA,EAC/C9B,GAAQgB,GAAK,EAAIiB,EAEnB,MACF,IAAK,IACH,IAAKH,EAASV,GAAeF,EAAG,EAAG,CAAC,EAAGY,EAAQ,EAAEA,EAC/C9B,GAAQgB,GAAK,EAAI,EAEnB,MACF,IAAK,IACH,IAAKc,EAASV,GAAeF,EAAG,EAAG,EAAE,EAAGY,EAAQ,EAAEA,EAChD9B,GAAQgB,GAAK,EAAI,EAEnB,MACF,QACEhB,GAAQgB,GAAK,EAAIgB,EACjB,KACJ,CACF,CACApB,GAAgBH,EAAIT,GAAS,EAAG2B,CAAI,EACpCf,GAAgBF,EAAIV,GAAS2B,EAAMC,CAAK,CAC1C,CACA,SAASM,GAAwBhB,EAAGT,EAAIC,EAAI,CAC1C,OAAW,CACT,IAAIsB,EAAMV,GAAmBJ,EAAGT,CAAE,EAClC,GAAIuB,IAAQ,IACV,OAAO9C,EAET,GAAI8C,EAAM,IACRd,EAAE,KAAKA,EAAE,SAAS,EAAIc,MACjB,CACL,IAAIF,EAAQK,EAAMC,EACd9B,EAKJ,IAJA0B,GAAO,IACPF,EAASV,GAAeF,EAAGxB,GAAYsC,CAAG,EAAGrC,EAAYqC,CAAG,CAAC,EAC7DG,EAAOb,GAAmBJ,EAAGR,CAAE,EAC/B0B,EAAQlB,EAAE,QAAUE,GAAeF,EAAGtB,GAAUuC,CAAI,EAAGtC,EAAUsC,CAAI,CAAC,EACjE7B,EAAI8B,EAAO9B,EAAI8B,EAAQN,EAAQ,EAAExB,EACpCY,EAAE,KAAKA,EAAE,SAAS,EAAIA,EAAE,KAAKZ,CAAC,CAElC,CACF,CACF,CACA,SAAS+B,GAAgCnB,EAAG,CAG1C,QAFIY,EAAQQ,EACRhC,EACGY,EAAE,SAAW,GAClBA,EAAE,cACFA,EAAE,UAAY,EAMhB,GAJAY,EAASZ,EAAE,OAAOA,EAAE,YAAc,CAAC,EACnCY,EAAS,IAAMA,EAASZ,EAAE,OAAOA,EAAE,WAAW,EAC9CoB,EAAYpB,EAAE,OAAOA,EAAE,YAAc,CAAC,EACtCoB,EAAY,IAAMA,EAAYpB,EAAE,OAAOA,EAAE,YAAc,CAAC,EACpDY,KAAY,CAACQ,EAAY,OAC3B,OAAOnD,EAET,IADA+B,EAAE,aAAe,EACZZ,EAAIwB,EAAQxB,EAAG,EAAEA,EACpBY,EAAE,KAAKA,EAAE,SAAS,EAAIA,EAAE,OAAOA,EAAE,aAAa,EAChD,OAAAA,EAAE,SAAW,EACNhC,CACT,CACA,SAASqD,GAAgBjD,EAAQC,EAAM,CACrC,IAAI2B,EAAI,IAAI7B,EAAKC,EAAQC,CAAI,EACzBiD,EAAQC,EAAOC,EACnB,EAAG,CAGD,OAFAF,EAASvB,GAAYC,CAAC,EACtBuB,EAAQrB,GAAeF,EAAG,EAAG,CAAC,EACtBuB,EAAO,CACb,IAAK,GACHC,EAAML,GAAgCnB,CAAC,EACvC,MACF,IAAK,GACHwB,EAAMR,GAAwBhB,EAAG1B,EAAQC,CAAM,EAC/C,MACF,IAAK,GACHiC,GAAkBR,EAAGA,EAAE,MAAOA,EAAE,KAAK,EACrCwB,EAAMR,GAAwBhB,EAAGA,EAAE,MAAOA,EAAE,KAAK,EACjD,MACF,QACEwB,EAAMvD,CACV,CACA,GAAIuD,IAAQxD,EACV,MAAM,IAAI,MAAM,YAAY,CAChC,OAAS,CAACsD,GACV,OAAItB,EAAE,QAAUA,EAAE,KAAK,OACjB,OAAOA,EAAE,KAAK,OAAU,WACnBA,EAAE,KAAK,MAAM,EAAGA,EAAE,OAAO,EAEzBA,EAAE,KAAK,SAAS,EAAGA,EAAE,OAAO,EAEhCA,EAAE,IACX,CACAV,GAAuBhB,EAAQC,CAAM,EACrCQ,GAAqBP,GAAaC,EAAa,EAAG,CAAC,EACnDM,GAAqBL,GAAWC,EAAW,EAAG,CAAC,EAC/CH,GAAY,EAAE,EAAI,EAClBC,EAAY,EAAE,EAAI,IAGlB,SAASgD,GAAOC,EAAIC,EAAIC,EAAIC,EAAIlC,EAAG,CACjC,OAAO,KAAK,IAAI,EAAIA,EAAG,CAAC,EAAI+B,EAAK,EAAI,KAAK,IAAI,EAAI/B,EAAG,CAAC,EAAIA,EAAIgC,EAAK,GAAK,EAAIhC,GAAK,KAAK,IAAIA,EAAG,CAAC,EAAIiC,EAAK,KAAK,IAAIjC,EAAG,CAAC,EAAIkC,CAC1H,CACA,SAASC,IAAc,CACrB,KAAK,GAAK,OAAO,IACjB,KAAK,GAAK,OAAO,IACjB,KAAK,GAAK,OAAO,IACjB,KAAK,GAAK,OAAO,GACnB,CACAA,GAAY,UAAU,QAAU,UAAW,CACzC,OAAO,MAAM,KAAK,EAAE,GAAK,MAAM,KAAK,EAAE,GAAK,MAAM,KAAK,EAAE,GAAK,MAAM,KAAK,EAAE,CAC5E,EACAA,GAAY,UAAU,SAAW,SAASC,EAAGC,EAAG,CAC1C,OAAOD,GAAM,YACX,MAAM,KAAK,EAAE,GAAK,MAAM,KAAK,EAAE,KACjC,KAAK,GAAKA,EACV,KAAK,GAAKA,GAERA,EAAI,KAAK,KACX,KAAK,GAAKA,GAERA,EAAI,KAAK,KACX,KAAK,GAAKA,IAGV,OAAOC,GAAM,YACX,MAAM,KAAK,EAAE,GAAK,MAAM,KAAK,EAAE,KACjC,KAAK,GAAKA,EACV,KAAK,GAAKA,GAERA,EAAI,KAAK,KACX,KAAK,GAAKA,GAERA,EAAI,KAAK,KACX,KAAK,GAAKA,GAGhB,EACAF,GAAY,UAAU,KAAO,SAASC,EAAG,CACvC,KAAK,SAASA,EAAG,IAAI,CACvB,EACAD,GAAY,UAAU,KAAO,SAASE,EAAG,CACvC,KAAK,SAAS,KAAMA,CAAC,CACvB,EACAF,GAAY,UAAU,UAAY,SAASG,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIP,EAAGC,EAAG,CACvE,IAAMO,EAAK,CAACN,EAAIC,CAAE,EACZM,EAAK,CAACL,EAAIC,CAAE,EACZK,EAAK,CAACJ,EAAIC,CAAE,EACZI,EAAK,CAACX,EAAGC,CAAC,EAChB,KAAK,SAASC,EAAIC,CAAE,EACpB,KAAK,SAASH,EAAGC,CAAC,EAClB,QAAS5C,EAAI,EAAGA,GAAK,EAAGA,IAAK,CAC3B,IAAMuD,EAAI,EAAIJ,EAAGnD,CAAC,EAAI,GAAKoD,EAAGpD,CAAC,EAAI,EAAIqD,EAAGrD,CAAC,EACrCwD,EAAI,GAAKL,EAAGnD,CAAC,EAAI,EAAIoD,EAAGpD,CAAC,EAAI,EAAIqD,EAAGrD,CAAC,EAAI,EAAIsD,EAAGtD,CAAC,EACjDyD,EAAI,EAAIL,EAAGpD,CAAC,EAAI,EAAImD,EAAGnD,CAAC,EAC9B,GAAIwD,IAAM,EAAG,CACX,GAAID,IAAM,EAAG,SACb,IAAMhD,EAAI,CAACkD,EAAIF,EACX,EAAIhD,GAAKA,EAAI,IACXP,IAAM,GAAG,KAAK,KAAKqC,GAAOc,EAAGnD,CAAC,EAAGoD,EAAGpD,CAAC,EAAGqD,EAAGrD,CAAC,EAAGsD,EAAGtD,CAAC,EAAGO,CAAC,CAAC,EACxDP,IAAM,GAAG,KAAK,KAAKqC,GAAOc,EAAGnD,CAAC,EAAGoD,EAAGpD,CAAC,EAAGqD,EAAGrD,CAAC,EAAGsD,EAAGtD,CAAC,EAAGO,CAAC,CAAC,GAE9D,QACF,CACA,IAAMmD,EAAO,KAAK,IAAIH,EAAG,CAAC,EAAI,EAAIE,EAAID,EACtC,GAAIE,EAAO,EAAG,SACd,IAAMC,GAAM,CAACJ,EAAI,KAAK,KAAKG,CAAI,IAAM,EAAIF,GACrC,EAAIG,GAAMA,EAAK,IACb3D,IAAM,GAAG,KAAK,KAAKqC,GAAOc,EAAGnD,CAAC,EAAGoD,EAAGpD,CAAC,EAAGqD,EAAGrD,CAAC,EAAGsD,EAAGtD,CAAC,EAAG2D,CAAE,CAAC,EACzD3D,IAAM,GAAG,KAAK,KAAKqC,GAAOc,EAAGnD,CAAC,EAAGoD,EAAGpD,CAAC,EAAGqD,EAAGrD,CAAC,EAAGsD,EAAGtD,CAAC,EAAG2D,CAAE,CAAC,GAE/D,IAAMC,GAAM,CAACL,EAAI,KAAK,KAAKG,CAAI,IAAM,EAAIF,GACrC,EAAII,GAAMA,EAAK,IACb5D,IAAM,GAAG,KAAK,KAAKqC,GAAOc,EAAGnD,CAAC,EAAGoD,EAAGpD,CAAC,EAAGqD,EAAGrD,CAAC,EAAGsD,EAAGtD,CAAC,EAAG4D,CAAE,CAAC,EACzD5D,IAAM,GAAG,KAAK,KAAKqC,GAAOc,EAAGnD,CAAC,EAAGoD,EAAGpD,CAAC,EAAGqD,EAAGrD,CAAC,EAAGsD,EAAGtD,CAAC,EAAG4D,CAAE,CAAC,EAEjE,CACF,EACAlB,GAAY,UAAU,QAAU,SAASG,EAAIC,EAAIC,EAAIC,EAAIL,EAAGC,EAAG,CAC7D,IAAMiB,EAAOhB,EAAK,mBAASE,EAAKF,GAC1BiB,EAAOhB,EAAK,EAAI,GAAKE,EAAKF,GAC1BiB,EAAOF,EAAO,EAAI,GAAKlB,EAAIE,GAC3BmB,EAAOF,EAAO,EAAI,GAAKlB,EAAIE,GACjC,KAAK,UAAUD,EAAIC,EAAIe,EAAMC,EAAMC,EAAMC,EAAMrB,EAAGC,CAAC,CACrD,EACA,IAAIxE,GAAesE,GAGnB,SAASuB,IAAO,CACd,KAAK,SAAW,CAAC,EACjB,KAAK,KAAO,QACZ,KAAK,OAAS,KACd,KAAK,YAAc,CACrB,CACA,IAAIC,GAAuB,CAAC,EAC5B,SAASC,GAAaC,EAAOC,EAAQ,CACnC,IAAMC,EAAc,KAAK,MAAMF,CAAK,EAC9BG,EAAcH,EAAQE,EAI5B,GAHKJ,GAAqBG,CAAM,IAC9BH,GAAqBG,CAAM,EAAI,CAAC,GAE9BH,GAAqBG,CAAM,EAAEE,CAAW,IAAM,OAAQ,CACxD,IAAMC,EAAsBN,GAAqBG,CAAM,EAAEE,CAAW,EACpE,OAAOD,EAAcE,CACvB,CACA,IAAMC,EAAqB,EAAE,KAAK,MAAMF,EAAc,KAAOF,CAAM,EAAI,KAAOA,GAC9E,OAAAH,GAAqBG,CAAM,EAAEE,CAAW,EAAIE,EACrCH,EAAcG,CACvB,CACA,SAASC,GAAiBC,EAAU,CAClC,IAAIC,EAAW,CAAC,CAAC,CAAC,EACdC,EAAS,EAAGC,EAAS,EACzB,QAAS9E,EAAI,EAAGA,EAAI2E,EAAS,OAAQ3E,GAAK,EAAG,CAC3C,IAAM+E,EAAUH,EAASA,EAAS,OAAS,CAAC,EACtCI,EAAML,EAAS3E,CAAC,EAChBiF,EAAeF,EAAQ,CAAC,EACxBG,EAAgBH,EAAQ,CAAC,EACzBI,EAAkBJ,EAAQA,EAAQ,OAAS,CAAC,EAC5CK,EAAcT,EAAS3E,EAAI,CAAC,EAClC+E,EAAQ,KAAKC,CAAG,EACZA,EAAI,OAAS,KACfH,EAASG,EAAI,EACbF,EAASE,EAAI,GACJA,EAAI,OAAS,MAAQ,CAACI,GAAeA,EAAY,OAAS,KAC7D,KAAK,IAAIJ,EAAI,EAAIH,CAAM,EAAI,GAAK,KAAK,IAAIG,EAAI,EAAIF,CAAM,EAAI,GAC/DC,EAAQ,IAAI,EAELC,EAAI,OAAS,KAAOG,GAAmBA,EAAgB,IAAMH,EAAI,GAAKG,EAAgB,IAAMH,EAAI,EACzGD,EAAQ,IAAI,EACHC,EAAI,OAAS,MAClBC,GAAgBC,GAAiBC,GAAmBF,EAAa,OAAS,KAAOC,EAAc,OAAS,KAAOC,EAAgB,OAAS,KAAOA,EAAgB,IAAMF,EAAa,GAAKE,EAAgB,IAAMF,EAAa,IAC5NF,EAAQ,MAAM,EACdA,EAAQ,CAAC,EAAE,KAAO,KAEhB/E,EAAI,EAAI2E,EAAS,QACnBC,EAAS,KAAK,CAAC,CAAC,EAGtB,CACA,OAAAD,EAAW,CAAC,EAAE,OAAO,MAAM,CAAC,EAAGC,CAAQ,EAChCD,CACT,CACA,SAASU,GAAwBC,EAAS,CAWxC,OADmB,OAAO,OAAO,CAAC,EATX,CACrB,cAAe,EACf,SAAU,GACV,MAAO,GACP,UAAW,OACX,MAAO,EACP,EAAG,EACH,EAAG,CACL,EACqDA,CAAO,CAE9D,CACA,SAASC,GAAuBD,EAAS,CACvC,OAAI,SAASA,CAAO,IAAMA,IACxBA,EAAU,CAAE,cAAeA,EAAS,MAAO,EAAM,GAQhC,OAAO,OAAO,CAAC,EANX,CACrB,cAAe,EACf,SAAU,GACV,MAAO,GACP,UAAW,MACb,EACqDA,CAAO,CAE9D,CACArB,GAAK,UAAU,QAAU,SAASuB,EAAUF,EAAU,CAAC,EAAG,CACpD,OAAO,eAAmB,KAAeE,aAAoB,iBAC/DA,EAAWA,EAAS,aAAa,GAAG,GAEtCF,EAAUD,GAAwBC,CAAO,EACzC,KAAK,SAAW,CAAC,EACjB,IAAMG,EAAS,aACTC,EAAoB,iBACpBC,EAAsB,SACtBC,EAAO,KACTC,EAAU,CAAC,EACXC,EAAS,CAAC,EAAE,EACZC,EAAe,GACnB,SAASC,EAAaC,EAAS,CAC7B,OAAOA,EAAQ,OAAQ1C,GAAMA,EAAE,MAAM,EAAE,IAAKA,GAAM,CAChD,IAAIa,EAAQ,WAAWb,CAAC,EACxB,OAAI+B,EAAQ,eAAiBA,EAAQ,gBAAkB,KACrDlB,EAAQD,GAAaC,EAAOkB,EAAQ,aAAa,GAE5ClB,CACT,CAAC,CACH,CACA,SAAS8B,EAAaD,EAAS,CAC7B,GAAI,CAAC,KAAK,SAAS,OACjB,OAAOA,EAET,IAAME,EAAc,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EAC1D,QAASnG,EAAI,EAAGA,EAAIiG,EAAQ,OAAQjG,IAClCiG,EAAQjG,CAAC,GAAKmG,EAAYnG,EAAI,EAAI,IAAM,GAAG,EAE7C,OAAOiG,CACT,CACA,SAASG,GAAe,CACtB,GAAIP,EAAQ,OAAS,OACnB,OAEF,IAAMQ,EAAcR,EAAQ,KAAK,YAAY,EACvCS,EAAWD,IAAgB,KAAOR,EAAQ,KAAK,YAAY,IAAMA,EAAQ,KAC3EU,EAAeP,EAAaF,CAAM,EAEtC,GADAA,EAAS,CAAC,EAAE,EACR,CAACS,EAAa,QAAUF,IAAgB,IAC1C,OAEEC,GAAYD,IAAgB,KAAOA,IAAgB,MACrDE,EAAeL,EAAa,MAAM,KAAM,CAACK,CAAY,CAAC,GAExD,IAAMC,EAAW,KAAK,SAAS,QAAS,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EAAE,GAAK,EAC/EC,EAAW,KAAK,SAAS,QAAS,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EAAE,GAAK,EACrF,OAAQJ,EAAa,CACnB,IAAK,IACH,KAAK,OAAO,GAAGE,CAAY,EAC3B,MACF,IAAK,IACH,KAAK,OAAO,GAAGA,CAAY,EAC3B,MACF,IAAK,IACH,QAASvG,EAAI,EAAGA,EAAIuG,EAAa,OAAQvG,IAAK,CAC5C,IAAI0G,EAAS,EACTJ,IACFI,EAAS,KAAK,SAAS,QAAS,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EAAE,GAAK,GAE/E,KAAK,OAAOF,EAAUD,EAAavG,CAAC,EAAI0G,CAAM,CAChD,CACA,MACF,IAAK,IACH,QAAS1G,EAAI,EAAGA,EAAIuG,EAAa,OAAQvG,IAAK,CAC5C,IAAI0G,EAAS,EACTJ,IACFI,EAAS,KAAK,SAAS,QAAS,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EAAE,GAAK,GAE/E,KAAK,OAAOH,EAAavG,CAAC,EAAI0G,EAAQD,CAAQ,CAChD,CACA,MACF,IAAK,IACH,KAAK,cAAc,GAAGF,CAAY,EAClC,MACF,IAAK,IACH,KAAK,iBAAiB,GAAGA,CAAY,EACrC,MACF,IAAK,KACC,KAAK,SAAS,OAAS,GAAK,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EAAE,OAAS,MAC/E,KAAK,MAAM,EAEb,KACJ,CACA,GAAI,KAAK,SAAS,OAChB,QAAWI,KAAQ,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EACnD,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EAAEA,CAAI,IAAM,SACpD,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EAAEA,CAAI,EAAI,EAIxD,CACA,QAAS3G,EAAI,EAAGA,EAAIwF,EAAS,OAAQxF,IAAK,CACxC,IAAM4G,EAAQpB,EAAS,OAAOxF,CAAC,EACzB6G,EAAaf,EAAOA,EAAO,OAAS,CAAC,EAC3C,GAAIL,EAAO,QAAQmB,CAAK,EAAI,GAC1Bd,EAAOA,EAAO,OAAS,CAAC,GAAKc,UACpBhB,EAAK,QAAQgB,CAAK,EAAI,GAI/B,GAHI,CAACf,EAAQ,MAAQ,CAAC,KAAK,SAAS,SAClCA,EAAQ,KAAO,KAEbe,IAAU,IACR,CAACf,EAAQ,MAAQgB,EAAW,QAAQ,GAAG,EAAI,EAC7Cd,EAAe,GACNc,EAAW,OACpBf,EAAO,KAAK,GAAG,EAEfA,EAAOA,EAAO,OAAS,CAAC,EAAIc,UAG1B,CAACf,EAAQ,MAAQgB,EAAW,OAAS,EACvCd,EAAe,OAEf,kBAGKL,EAAkB,QAAQkB,CAAK,EAAI,GACxCf,EAAQ,MACVO,EAAa,MAAM,IAAI,EACvBP,EAAU,CAAE,KAAMe,CAAM,GAExBf,EAAQ,KAAOe,MAEZ,IAAIjB,EAAoB,QAAQiB,CAAK,EAAI,GAC9C,MAAM,IAAI,MAAM,6BAA+BA,EAAQ,sCAAwClB,EAAkB,MAAM,EAAE,EAAE,KAAK,IAAI,EAAI,GAAG,EAClI;AAAA,QAAc,QAAQkB,CAAK,EAAI,GACxCd,EAAO,KAAK,EAAE,EACLc,IAAU,IACf,CAACf,EAAQ,MAAQgB,EAAW,QAAQD,CAAK,EAAI,GAC/Cb,EAAe,GAEfD,EAAOA,EAAO,OAAS,CAAC,GAAKc,EAG/Bb,EAAe,GAEjB,GAAIA,EACF,MAAM,IAAI,MAAM,yBAA2Ba,EAAQ,cAAgB5G,CAAC,CAExE,CACAoG,EAAa,MAAM,IAAI,EACnBd,EAAQ,WACV,KAAK,SAAWZ,GAAiB,KAAK,QAAQ,GAEhD,IAAMoC,EAAQxB,EAAQ,MAClByB,EAAYzB,EAAQ,UACxB,GAAIwB,IAAU,IAAQxB,EAAQ,YAAc,OAAQ,CAClD,IAAM0B,EAAc,KAAK,eAAe,EACxCD,EAAYC,EAAY,GAAKA,EAAY,EAC3C,CACA,QAAWhH,KAAK,KAAK,SAAU,CAC7B,IAAMgF,EAAM,KAAK,SAAShF,CAAC,EAC3B,QAAW2G,KAAQ3B,EACb,CAAC,IAAK,KAAM,IAAI,EAAE,SAAS2B,CAAI,EACjC,KAAK,SAAS3G,CAAC,EAAE2G,CAAI,EAAIrB,EAAQ,EAAIN,EAAI2B,CAAI,EAAIrB,EAAQ,MAChD,CAAC,IAAK,KAAM,IAAI,EAAE,SAASqB,CAAI,IACxC,KAAK,SAAS3G,CAAC,EAAE2G,CAAI,EAAIrB,EAAQ,GAAKwB,EAAQC,EAAY/B,EAAI2B,CAAI,EAAI3B,EAAI2B,CAAI,GAAKrB,EAAQ,MAGjG,CACA,OAAO,IACT,EACArB,GAAK,QAAU,SAASgD,EAAM3B,EAAS,CAErC,OADgB,IAAIrB,GAAK,EACV,QAAQgD,EAAM3B,CAAO,CACtC,EACArB,GAAK,UAAU,OAAS,SAAStB,EAAGC,EAAG,CACrC,KAAK,SAAS,KAAK,CACjB,KAAM,IACN,EAAAD,EACA,EAAAC,CACF,CAAC,CACH,EACAqB,GAAK,UAAU,OAAS,SAAStB,EAAGC,EAAG,CACrC,KAAK,SAAS,KAAK,CACjB,KAAM,IACN,EAAAD,EACA,EAAAC,CACF,CAAC,CACH,EACAqB,GAAK,UAAU,QAAUA,GAAK,UAAU,cAAgB,SAASlB,EAAIC,EAAIC,EAAIC,EAAIP,EAAGC,EAAG,CACrF,KAAK,SAAS,KAAK,CACjB,KAAM,IACN,GAAAG,EACA,GAAAC,EACA,GAAAC,EACA,GAAAC,EACA,EAAAP,EACA,EAAAC,CACF,CAAC,CACH,EACAqB,GAAK,UAAU,OAASA,GAAK,UAAU,iBAAmB,SAASlB,EAAIC,EAAIL,EAAGC,EAAG,CAC/E,KAAK,SAAS,KAAK,CACjB,KAAM,IACN,GAAAG,EACA,GAAAC,EACA,EAAAL,EACA,EAAAC,CACF,CAAC,CACH,EACAqB,GAAK,UAAU,MAAQA,GAAK,UAAU,UAAY,UAAW,CAC3D,KAAK,SAAS,KAAK,CACjB,KAAM,GACR,CAAC,CACH,EACAA,GAAK,UAAU,OAAS,SAASiD,EAAgB,CAC/C,GAAIA,EAAe,SACjBA,EAAiBA,EAAe,iBACvBA,aAA0B9I,GAAc,CACjD,IAAM+I,EAAMD,EACZ,KAAK,OAAOC,EAAI,GAAIA,EAAI,EAAE,EAC1B,KAAK,OAAOA,EAAI,GAAIA,EAAI,EAAE,EAC1B,KAAK,OAAOA,EAAI,GAAIA,EAAI,EAAE,EAC1B,KAAK,OAAOA,EAAI,GAAIA,EAAI,EAAE,EAC1B,KAAK,MAAM,EACX,MACF,CACA,MAAM,UAAU,KAAK,MAAM,KAAK,SAAUD,CAAc,CAC1D,EACAjD,GAAK,UAAU,eAAiB,UAAW,CACzC,IAAMkD,EAAM,IAAI/I,GACZyG,EAAS,EACTC,EAAS,EACTsC,EAAQ,EACRC,EAAQ,EACZ,QAASrH,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,IAAK,CAC7C,IAAMgF,EAAM,KAAK,SAAShF,CAAC,EAC3B,OAAQgF,EAAI,KAAM,CAChB,IAAK,IACHmC,EAAI,SAASnC,EAAI,EAAGA,EAAI,CAAC,EACzBH,EAASuC,EAAQpC,EAAI,EACrBF,EAASuC,EAAQrC,EAAI,EACrB,MACF,IAAK,IACHmC,EAAI,SAASnC,EAAI,EAAGA,EAAI,CAAC,EACzBoC,EAAQpC,EAAI,EACZqC,EAAQrC,EAAI,EACZ,MACF,IAAK,IACHmC,EAAI,QAAQC,EAAOC,EAAOrC,EAAI,GAAIA,EAAI,GAAIA,EAAI,EAAGA,EAAI,CAAC,EACtDoC,EAAQpC,EAAI,EACZqC,EAAQrC,EAAI,EACZ,MACF,IAAK,IACHmC,EAAI,UAAUC,EAAOC,EAAOrC,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,EAAGA,EAAI,CAAC,EACxEoC,EAAQpC,EAAI,EACZqC,EAAQrC,EAAI,EACZ,MACF,IAAK,IACHoC,EAAQvC,EACRwC,EAAQvC,EACR,MACF,QACE,MAAM,IAAI,MAAM,2BAA6BE,EAAI,IAAI,CACzD,CACF,CACA,OAAImC,EAAI,QAAQ,GACdA,EAAI,SAAS,EAAG,CAAC,EAEZA,CACT,EACAlD,GAAK,UAAU,KAAO,SAASqD,EAAK,CAClC,IAAMC,EAAS,KAAK,QACpB,GAAIA,GAAUA,EAAO,OAAQ,CAC3B,QAASC,EAAI,EAAGA,EAAID,EAAO,OAAQC,IACjC,KAAK,KAAK,KAAKD,EAAOC,CAAC,EAAGF,CAAG,EAE/B,MACF,CACA,IAAMG,EAAQ,KAAK,OACnB,GAAIA,EAAO,CACTH,EAAI,UAAUG,EAAM,MAAOA,EAAM,EAAGA,EAAM,EAAGA,EAAM,MAAOA,EAAM,MAAM,EACtE,MACF,CACAH,EAAI,UAAU,EACd,QAAStH,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,GAAK,EAAG,CAChD,IAAMgF,EAAM,KAAK,SAAShF,CAAC,EACvBgF,EAAI,OAAS,IACfsC,EAAI,OAAOtC,EAAI,EAAGA,EAAI,CAAC,EACdA,EAAI,OAAS,IACtBsC,EAAI,OAAOtC,EAAI,EAAGA,EAAI,CAAC,EACdA,EAAI,OAAS,IACtBsC,EAAI,cAActC,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,EAAGA,EAAI,CAAC,EACrDA,EAAI,OAAS,IACtBsC,EAAI,iBAAiBtC,EAAI,GAAIA,EAAI,GAAIA,EAAI,EAAGA,EAAI,CAAC,EACxCA,EAAI,OAAS,KAAO,KAAK,QAAU,KAAK,aACjDsC,EAAI,UAAU,CAElB,CACI,KAAK,OACPA,EAAI,UAAY,KAAK,KACrBA,EAAI,KAAK,GAEP,KAAK,SACPA,EAAI,YAAc,KAAK,OACvBA,EAAI,UAAY,KAAK,YACrBA,EAAI,OAAO,EAEf,EACArD,GAAK,UAAU,WAAa,SAASqB,EAAS,CAC5CA,EAAUC,GAAuBD,CAAO,EACxC,SAASoC,EAAcC,EAAG,CACxB,IAAMC,EAAUzD,GAAawD,EAAGrC,EAAQ,aAAa,EACrD,OAAI,KAAK,MAAMqC,CAAC,IAAMC,EACb,GAAKA,EAELA,EAAQ,QAAQtC,EAAQ,aAAa,CAEhD,CACA,SAASuC,GAAa,CACpB,IAAIC,EAAI,GACR,QAAS9H,EAAI,EAAGA,EAAI,UAAU,OAAQA,GAAK,EAAG,CAC5C,IAAM2H,EAAI,UAAU3H,CAAC,EACjB2H,GAAK,GAAK3H,EAAI,IAChB8H,GAAK,KAEPA,GAAKJ,EAAcC,CAAC,CACtB,CACA,OAAOG,CACT,CACA,IAAIC,EAAe,KAAK,SACpBzC,EAAQ,WACVyC,EAAe,KAAK,MAAM,KAAK,UAAU,KAAK,QAAQ,CAAC,EACvDA,EAAerD,GAAiBqD,CAAY,GAE9C,IAAMjB,EAAQxB,EAAQ,MAClByB,EAAYzB,EAAQ,UACxB,GAAIwB,IAAU,IAAQC,IAAc,OAAQ,CAC1C,IAAMiB,EAAW,IAAI/D,GACrB+D,EAAS,OAAOD,CAAY,EAC5B,IAAMf,EAAcgB,EAAS,eAAe,EAC5CjB,EAAYC,EAAY,GAAKA,EAAY,EAC3C,CACA,IAAIpG,EAAI,GACR,QAASZ,EAAI,EAAGA,EAAI+H,EAAa,OAAQ/H,GAAK,EAAG,CAC/C,IAAMgF,EAAM+C,EAAa/H,CAAC,EACtBgF,EAAI,OAAS,IACfpE,GAAK,IAAMiH,EACT7C,EAAI,EACJ8B,EAAQC,EAAY/B,EAAI,EAAIA,EAAI,CAClC,EACSA,EAAI,OAAS,IACtBpE,GAAK,IAAMiH,EACT7C,EAAI,EACJ8B,EAAQC,EAAY/B,EAAI,EAAIA,EAAI,CAClC,EACSA,EAAI,OAAS,IACtBpE,GAAK,IAAMiH,EACT7C,EAAI,GACJ8B,EAAQC,EAAY/B,EAAI,GAAKA,EAAI,GACjCA,EAAI,GACJ8B,EAAQC,EAAY/B,EAAI,GAAKA,EAAI,GACjCA,EAAI,EACJ8B,EAAQC,EAAY/B,EAAI,EAAIA,EAAI,CAClC,EACSA,EAAI,OAAS,IACtBpE,GAAK,IAAMiH,EACT7C,EAAI,GACJ8B,EAAQC,EAAY/B,EAAI,GAAKA,EAAI,GACjCA,EAAI,EACJ8B,EAAQC,EAAY/B,EAAI,EAAIA,EAAI,CAClC,EACSA,EAAI,OAAS,MACtBpE,GAAK,IAET,CACA,OAAOA,CACT,EACAqD,GAAK,UAAU,MAAQ,SAASqB,EAASE,EAAU,CAC7C,KAAK,SAAW,KAAK,QAAQ,QAC/B,QAAQ,KAAK,+CAA+C,EAE1D,KAAK,QACP,QAAQ,KAAK,yCAAyC,EAEnDA,IACHA,EAAW,KAAK,WAAWF,CAAO,GAEpC,IAAI2C,EAAM,YACV,OAAAA,GAAOzC,EACPyC,GAAO,IACH,KAAK,OAAS,QAAU,KAAK,OAAS,UACpC,KAAK,OAAS,KAChBA,GAAO,eAEPA,GAAO,UAAY,KAAK,KAAO,KAG/B,KAAK,SACPA,GAAO,YAAc,KAAK,OAAS,mBAAqB,KAAK,YAAc,KAE7EA,GAAO,KACAA,CACT,EACAhE,GAAK,UAAU,aAAe,SAASqB,EAASE,EAAU,CACpD,KAAK,SAAW,KAAK,QAAQ,QAC/B,QAAQ,KAAK,sDAAsD,EAEhEA,IACHA,EAAW,KAAK,WAAWF,CAAO,GAEpC,IAAM4C,EAAU,SAAS,gBAAgB,6BAA8B,MAAM,EAC7E,OAAAA,EAAQ,aAAa,IAAK1C,CAAQ,EAC9B,KAAK,OAAS,QAAU,KAAK,OAAS,UACpC,KAAK,OAAS,KAChB0C,EAAQ,aAAa,OAAQ,MAAM,EAEnCA,EAAQ,aAAa,OAAQ,KAAK,IAAI,GAGtC,KAAK,SACPA,EAAQ,aAAa,SAAU,KAAK,MAAM,EAC1CA,EAAQ,aAAa,eAAgB,KAAK,WAAW,GAEhDA,CACT,EACA,IAAI3J,GAAe0F,GAGnB,SAASkE,GAAKC,EAAS,CACrB,MAAM,IAAI,MAAMA,CAAO,CACzB,CACA,SAASC,GAASC,EAAWF,EAAS,CAC/BE,GACHH,GAAKC,CAAO,CAEhB,CACA,IAAIG,EAAgB,CAAE,KAAAJ,GAAM,SAAAE,GAAU,OAAQA,EAAS,EAGnDG,GAAU,MACVC,GAAU,WACVC,GAAY,OACZC,GAAa,MAAe,EAAK,MACjCC,GAAS,CAAC,EACVC,EAAS,CAAC,EACVC,EAAS,CAAC,EACd,SAASC,GAASpB,EAAG,CACnB,OAAO,UAAW,CAChB,OAAOA,CACT,CACF,CACAkB,EAAO,KAAO,SAASlB,EAAG,CACxB,OAAAY,EAAc,SAASZ,GAAK,GAAKA,GAAK,IAAK,yCAAyC,EAC7E,CAACA,CAAC,CACX,EACAmB,EAAO,KAAOC,GAAS,CAAC,EACxBF,EAAO,KAAO,SAASlB,EAAG,CACxB,MAAO,CAACA,EAAE,WAAW,CAAC,CAAC,CACzB,EACAmB,EAAO,KAAOC,GAAS,CAAC,EACxBF,EAAO,UAAY,SAASlB,EAAG,EACzBA,IAAM,MAAQ,OAAOA,EAAM,OAC7BA,EAAI,GACJ,QAAQ,KAAK,qIAAqI,GAEpJ,IAAMpE,EAAI,CAAC,EACX,QAASvD,EAAI,EAAGA,EAAI2H,EAAE,OAAQ3H,GAAK,EACjCuD,EAAEvD,CAAC,EAAI2H,EAAE,WAAW3H,CAAC,EAEvB,OAAOuD,CACT,EACAuF,EAAO,UAAY,SAASnB,EAAG,CAC7B,OAAI,OAAOA,EAAM,IACR,EAEFA,EAAE,MACX,EACAkB,EAAO,OAAS,SAASlB,EAAG,CAC1B,MAAO,CAACA,GAAK,EAAI,IAAKA,EAAI,GAAG,CAC/B,EACAmB,EAAO,OAASC,GAAS,CAAC,EAC1BF,EAAO,MAAQ,SAASlB,EAAG,CACzB,OAAIA,GAAKa,KACPb,EAAI,EAAE,EAAIa,GAAUb,IAEf,CAACA,GAAK,EAAI,IAAKA,EAAI,GAAG,CAC/B,EACAmB,EAAO,MAAQC,GAAS,CAAC,EACzBF,EAAO,OAAS,SAASlB,EAAG,CAC1B,MAAO,CAACA,GAAK,GAAK,IAAKA,GAAK,EAAI,IAAKA,EAAI,GAAG,CAC9C,EACAmB,EAAO,OAASC,GAAS,CAAC,EAC1BF,EAAO,MAAQ,SAASlB,EAAG,CACzB,MAAO,CAACA,GAAK,GAAK,IAAKA,GAAK,GAAK,IAAKA,GAAK,EAAI,IAAKA,EAAI,GAAG,CAC7D,EACAmB,EAAO,MAAQC,GAAS,CAAC,EACzBF,EAAO,KAAO,SAASlB,EAAG,CACxB,OAAIA,GAAKc,KACPd,EAAI,EAAE,EAAIc,GAAUd,IAEf,CAACA,GAAK,GAAK,IAAKA,GAAK,GAAK,IAAKA,GAAK,EAAI,IAAKA,EAAI,GAAG,CAC7D,EACAmB,EAAO,KAAOC,GAAS,CAAC,EACxBF,EAAO,MAAQ,SAASlB,EAAG,CACzB,GAAIA,EAAIgB,IAAahB,EAAIe,GACvB,MAAM,IAAI,MAAM,SAASf,CAAC,+DAA+D,EAE3F,IAAMqB,EAAa,KAAK,MAAMrB,EAAK,KAAQ,GAAK,EAChD,OAAOkB,EAAO,MAAMG,CAAU,CAChC,EACAF,EAAO,MAAQA,EAAO,MACtBD,EAAO,MAAQA,EAAO,MACtBC,EAAO,MAAQA,EAAO,MACtBD,EAAO,MAAQA,EAAO,MACtBC,EAAO,MAAQA,EAAO,MACtBD,EAAO,OAASA,EAAO,OACvBC,EAAO,OAASA,EAAO,OACvBD,EAAO,QAAU,SAASlB,EAAG,CAC3B,OAAOkB,EAAO,OAAOlB,EAAI,KAAK,CAChC,EACAmB,EAAO,QAAUA,EAAO,OACxBD,EAAO,aAAe,SAASlB,EAAG,CAChC,MAAO,CAAC,EAAG,EAAG,EAAG,EAAGA,GAAK,GAAK,IAAKA,GAAK,GAAK,IAAKA,GAAK,EAAI,IAAKA,EAAI,GAAG,CACzE,EACAmB,EAAO,aAAeC,GAAS,CAAC,EAChCF,EAAO,IAAM,SAASlB,EAAG,CACvB,OAAAY,EAAc,SAASZ,EAAE,SAAW,EAAG,2CAA2C,EAC3E,CACLA,EAAE,WAAW,CAAC,EACdA,EAAE,WAAW,CAAC,EACdA,EAAE,WAAW,CAAC,EACdA,EAAE,WAAW,CAAC,CAChB,CACF,EACAmB,EAAO,IAAMC,GAAS,CAAC,EACvBF,EAAO,MAAQA,EAAO,KACtBC,EAAO,MAAQA,EAAO,KACtBD,EAAO,OAASA,EAAO,OACvBC,EAAO,OAASA,EAAO,OACvBD,EAAO,QAAUA,EAAO,KACxBC,EAAO,QAAUA,EAAO,KACxBD,EAAO,IAAMA,EAAO,OACpBC,EAAO,IAAMA,EAAO,OACpBD,EAAO,OAAS,SAASlB,EAAG,CAC1B,OAAIA,GAAK,MAAQA,GAAK,IACb,CAACA,EAAI,GAAG,EACNA,GAAK,KAAOA,GAAK,MAC1BA,EAAIA,EAAI,IACD,EAAEA,GAAK,GAAK,IAAKA,EAAI,GAAG,GACtBA,GAAK,OAASA,GAAK,MAC5BA,EAAI,CAACA,EAAI,IACF,EAAEA,GAAK,GAAK,IAAKA,EAAI,GAAG,GACtBA,GAAK,QAAUA,GAAK,MACtBkB,EAAO,SAASlB,CAAC,EAEjBkB,EAAO,SAASlB,CAAC,CAE5B,EACAmB,EAAO,OAAS,SAASnB,EAAG,CAC1B,OAAOkB,EAAO,OAAOlB,CAAC,EAAE,MAC1B,EACAkB,EAAO,SAAW,SAASlB,EAAG,CAC5B,MAAO,CAAC,GAAIA,GAAK,EAAI,IAAKA,EAAI,GAAG,CACnC,EACAmB,EAAO,SAAWC,GAAS,CAAC,EAC5BF,EAAO,SAAW,SAASlB,EAAG,CAC5B,MAAO,CAAC,GAAIA,GAAK,GAAK,IAAKA,GAAK,GAAK,IAAKA,GAAK,EAAI,IAAKA,EAAI,GAAG,CACjE,EACAmB,EAAO,SAAWC,GAAS,CAAC,EAC5BF,EAAO,KAAO,SAASlB,EAAG,CACxB,IAAIsB,EAAQtB,EAAE,SAAS,EACjBuB,EAAI,gDAAgD,KAAKD,CAAK,EACpE,GAAIC,EAAG,CACL,IAAMC,EAAU,WAAW,OAASD,EAAE,CAAC,EAAI,CAACA,EAAE,CAAC,EAAI,GAAKA,EAAE,CAAC,EAAE,OAAO,EACpED,GAAS,KAAK,MAAMtB,EAAIwB,CAAO,EAAIA,GAAS,SAAS,CACvD,CACA,IAAIC,EAAU,GACd,QAASpJ,EAAI,EAAGqJ,EAAKJ,EAAM,OAAQjJ,EAAIqJ,EAAIrJ,GAAK,EAAG,CACjD,IAAMyD,EAAIwF,EAAMjJ,CAAC,EACbyD,IAAM,IACR2F,GAAWH,EAAM,EAAEjJ,CAAC,IAAM,IAAM,IAAM,IAC7ByD,IAAM,IACf2F,GAAW,IACF3F,IAAM,IACf2F,GAAW,IAEXA,GAAW3F,CAEf,CACA2F,GAAWA,EAAQ,OAAS,EAAI,IAAM,KACtC,IAAME,EAAM,CAAC,EAAE,EACf,QAAStJ,EAAI,EAAGqJ,EAAKD,EAAQ,OAAQpJ,EAAIqJ,EAAIrJ,GAAK,EAChDsJ,EAAI,KAAK,SAASF,EAAQ,OAAOpJ,EAAG,CAAC,EAAG,EAAE,CAAC,EAE7C,OAAOsJ,CACT,EACAR,EAAO,KAAO,SAASnB,EAAG,CACxB,OAAOkB,EAAO,KAAKlB,CAAC,EAAE,MACxB,EACAkB,EAAO,KAAOA,EAAO,UACrBC,EAAO,KAAOA,EAAO,UACrBD,EAAO,OAASA,EAAO,UACvBC,EAAO,OAASA,EAAO,UACvBF,GAAO,KAAO,SAASW,EAAM7C,EAAQ8C,EAAU,CAC7C,IAAMC,EAAa,CAAC,EACdC,EAAWF,EACjB,QAASG,EAAI,EAAGA,EAAID,EAAUC,IAAKjD,GAAU,EAC3C+C,EAAWE,CAAC,EAAIJ,EAAK,SAAS7C,CAAM,EAEtC,OAAO,OAAO,aAAa,MAAM,KAAM+C,CAAU,CACnD,EACAb,GAAO,MAAQ,SAASW,EAAM7C,EAAQ8C,EAAU,CAC9C,IAAMC,EAAa,CAAC,EACdC,EAAWF,EAAW,EAC5B,QAASG,EAAI,EAAGA,EAAID,EAAUC,IAAKjD,GAAU,EAC3C+C,EAAWE,CAAC,EAAIJ,EAAK,UAAU7C,CAAM,EAEvC,OAAO,OAAO,aAAa,MAAM,KAAM+C,CAAU,CACnD,EACAZ,EAAO,MAAQ,SAASlB,EAAG,CACzB,IAAMpE,EAAI,CAAC,EACX,QAASvD,EAAI,EAAGA,EAAI2H,EAAE,OAAQ3H,GAAK,EAAG,CACpC,IAAM4J,EAAYjC,EAAE,WAAW3H,CAAC,EAChCuD,EAAEA,EAAE,MAAM,EAAIqG,GAAa,EAAI,IAC/BrG,EAAEA,EAAE,MAAM,EAAIqG,EAAY,GAC5B,CACA,OAAOrG,CACT,EACAuF,EAAO,MAAQ,SAASnB,EAAG,CACzB,OAAOA,EAAE,OAAS,CACpB,EACA,IAAIkC,GAAuB,CACzB,iBAEE,umBAEF,iBAEE,muBAEF,eAEE,mnBAEF,cAEE,mrBAEF,kBAEE,ulBAEF,cAEE,yvBAEF,WAEE,6rBAEF,UAEE,mmBAEF,iBAEE,2mBAEF,gBAEE,kmBAEJ,EACAjB,GAAO,UAAY,SAASkB,EAAUpD,EAAQqD,EAAYC,EAAU,CAClE,IAAMC,EAAQJ,GAAqBG,CAAQ,EAC3C,GAAIC,IAAU,OACZ,OAEF,IAAIC,EAAS,GACb,QAAS,EAAI,EAAG,EAAIH,EAAY,IAAK,CACnC,IAAMtG,EAAIqG,EAAS,SAASpD,EAAS,CAAC,EAClCjD,GAAK,IACPyG,GAAU,OAAO,aAAazG,CAAC,EAE/ByG,GAAUD,EAAMxG,EAAI,GAAG,CAE3B,CACA,OAAOyG,CACT,EACA,IAAIC,GAAwB,OAAO,SAAY,YAA8B,IAAI,QAC7EC,GACAC,GAAsB,SAASL,EAAU,CAC3C,GAAI,CAACI,GAAsB,CACzBA,GAAuB,CAAC,EACxB,QAASE,KAAKT,GACZO,GAAqBE,CAAC,EAAI,IAAI,OAAOA,CAAC,CAE1C,CACA,IAAMC,EAAWH,GAAqBJ,CAAQ,EAC9C,GAAIO,IAAa,OACf,OAEF,GAAIJ,GAAuB,CACzB,IAAMK,EAAcL,GAAsB,IAAII,CAAQ,EACtD,GAAIC,IAAgB,OAClB,OAAOA,CAEX,CACA,IAAMC,EAAgBZ,GAAqBG,CAAQ,EACnD,GAAIS,IAAkB,OACpB,OAEF,IAAMC,EAAgB,CAAC,EACvB,QAAS1K,EAAI,EAAGA,EAAIyK,EAAc,OAAQzK,IACxC0K,EAAcD,EAAc,WAAWzK,CAAC,CAAC,EAAIA,EAAI,IAEnD,OAAImK,IACFA,GAAsB,IAAII,EAAUG,CAAa,EAE5CA,CACT,EACA7B,EAAO,UAAY,SAAS8B,EAAKX,EAAU,CACzC,IAAMC,EAAQI,GAAoBL,CAAQ,EAC1C,GAAIC,IAAU,OACZ,OAEF,IAAMC,EAAS,CAAC,EAChB,QAASlK,EAAI,EAAGA,EAAI2K,EAAI,OAAQ3K,IAAK,CACnC,IAAIyD,EAAIkH,EAAI,WAAW3K,CAAC,EACxB,GAAIyD,GAAK,MACPA,EAAIwG,EAAMxG,CAAC,EACPA,IAAM,QACR,OAGJyG,EAAOlK,CAAC,EAAIyD,CACd,CACA,OAAOyG,CACT,EACApB,EAAO,UAAY,SAAS6B,EAAKX,EAAU,CACzC,IAAMzG,EAAIsF,EAAO,UAAU8B,EAAKX,CAAQ,EACxC,OAAIzG,IAAM,OACDA,EAAE,OAEF,CAEX,EACA,SAASqH,GAAgB3B,EAAO,CAC9B,OAAOA,GAAS,MAAQA,GAAS,GACnC,CACA,SAAS4B,GAA0BC,EAAQC,EAAKb,EAAQ,CACtD,IAAIc,EAAY,EACVC,EAAYH,EAAO,OACzB,KAAOC,EAAME,GAAaD,EAAY,IAAMF,EAAOC,CAAG,IAAM,GAC1D,EAAEA,EACF,EAAEC,EAEJ,OAAAd,EAAO,KAAK,IAAMc,EAAY,CAAC,EACxBD,CACT,CACA,SAASG,GAAyBJ,EAAQpE,EAAQwD,EAAQ,CACxD,IAAIc,EAAY,EACVC,EAAYH,EAAO,OACrBC,EAAMrE,EACV,KAAOqE,EAAME,GAAaD,EAAY,IAAI,CACxC,IAAM/B,EAAQ6B,EAAOC,CAAG,EAIxB,GAHI,CAACH,GAAgB3B,CAAK,GAGtBA,IAAU,GAAK8B,EAAM,EAAIE,GAAaH,EAAOC,EAAM,CAAC,IAAM,EAC5D,MAEF,EAAEA,EACF,EAAEC,CACJ,CACAd,EAAO,KAAKc,EAAY,CAAC,EACzB,QAAS,EAAItE,EAAQ,EAAIqE,EAAK,EAAE,EAC9Bb,EAAO,KAAKY,EAAO,CAAC,EAAI,IAAM,GAAG,EAEnC,OAAOC,CACT,CACA,SAASI,GAAyBL,EAAQpE,EAAQwD,EAAQ,CACxD,IAAIc,EAAY,EACVC,EAAYH,EAAO,OACrBC,EAAMrE,EACV,KAAOqE,EAAME,GAAaD,EAAY,IAAI,CACxC,IAAM/B,EAAQ6B,EAAOC,CAAG,EAIxB,GAHI9B,IAAU,GAGV2B,GAAgB3B,CAAK,GAAK8B,EAAM,EAAIE,GAAaL,GAAgBE,EAAOC,EAAM,CAAC,CAAC,EAClF,MAEF,EAAEA,EACF,EAAEC,CACJ,CACAd,EAAO,KAAK,GAAKc,EAAY,CAAC,EAC9B,QAAS,EAAItE,EAAQ,EAAIqE,EAAK,EAAE,EAAG,CACjC,IAAMhK,EAAM+J,EAAO,CAAC,EACpBZ,EAAO,KAAKnJ,EAAM,OAAS,EAAI,IAAKA,EAAM,IAAM,GAAG,CACrD,CACA,OAAOgK,CACT,CACAlC,EAAO,UAAY,SAASiC,EAAQ,CAClC,IAAIC,EAAM,EACJb,EAAS,CAAC,EAChB,KAAOa,EAAMD,EAAO,QAAQ,CAC1B,IAAM7B,EAAQ6B,EAAOC,CAAG,EACpB9B,IAAU,EACZ8B,EAAMF,GAA0BC,EAAQC,EAAKb,CAAM,EAC1CjB,GAAS,MAAQA,GAAS,IACnC8B,EAAMG,GAAyBJ,EAAQC,EAAKb,CAAM,EAElDa,EAAMI,GAAyBL,EAAQC,EAAKb,CAAM,CAEtD,CACA,OAAOA,CACT,EACArB,EAAO,MAAQ,SAASrB,EAAG,CACzB,IAAId,EAAS,EACP0E,EAAU,CAAC1E,CAAM,EACjB6C,EAAO,CAAC,EACd,QAASvJ,EAAI,EAAGA,EAAIwH,EAAE,OAAQxH,GAAK,EAAG,CACpC,IAAM2H,EAAIkB,EAAO,OAAOrB,EAAExH,CAAC,CAAC,EAC5B,MAAM,UAAU,KAAK,MAAMuJ,EAAM5B,CAAC,EAClCjB,GAAUiB,EAAE,OACZyD,EAAQ,KAAK1E,CAAM,CACrB,CACA,GAAI6C,EAAK,SAAW,EAClB,MAAO,CAAC,EAAG,CAAC,EAEd,IAAM8B,EAAiB,CAAC,EAClBC,EAAU,EAAI,KAAK,MAAM,KAAK,IAAI5E,CAAM,EAAI,KAAK,IAAI,CAAC,CAAC,EAAI,EAAI,EAC/D6E,EAAgB,CAAC,OAAQ1C,EAAO,KAAMA,EAAO,OAAQA,EAAO,OAAQA,EAAO,KAAK,EAAEyC,CAAO,EAC/F,QAAStL,EAAI,EAAGA,EAAIoL,EAAQ,OAAQpL,GAAK,EAAG,CAC1C,IAAMwL,EAAgBD,EAAcH,EAAQpL,CAAC,CAAC,EAC9C,MAAM,UAAU,KAAK,MAAMqL,EAAgBG,CAAa,CAC1D,CACA,OAAO,MAAM,UAAU,OACrB3C,EAAO,OAAOrB,EAAE,MAAM,EACtBqB,EAAO,QAAQyC,CAAO,EACtBD,EACA9B,CACF,CACF,EACAT,EAAO,MAAQ,SAASnB,EAAG,CACzB,OAAOkB,EAAO,MAAMlB,CAAC,EAAE,MACzB,EACAkB,EAAO,KAAO,SAASK,EAAG,CACxB,IAAItI,EAAI,CAAC,EACH6K,EAAO,OAAO,KAAKvC,CAAC,EACpB1H,EAASiK,EAAK,OACpB,QAASzL,EAAI,EAAGA,EAAIwB,EAAQxB,GAAK,EAAG,CAClC,IAAM0L,EAAI,SAASD,EAAKzL,CAAC,EAAG,CAAC,EACvB2H,EAAIuB,EAAEwC,CAAC,EACPC,EAAO9C,EAAO,QAAQlB,EAAE,MAAOA,EAAE,IAAI,EACrCiE,EAAO/C,EAAO,SAAS6C,CAAC,EAC9B,QAAS/B,EAAI,EAAGA,EAAIgC,EAAK,OAAQhC,IAC/B/I,EAAE,KAAK+K,EAAKhC,CAAC,CAAC,EAEhB,QAASA,EAAI,EAAGA,EAAIiC,EAAK,OAAQjC,IAC/B/I,EAAE,KAAKgL,EAAKjC,CAAC,CAAC,CAElB,CACA,OAAO/I,CACT,EACAkI,EAAO,KAAO,SAASI,EAAG,CACxB,OAAOL,EAAO,KAAKK,CAAC,EAAE,MACxB,EACAL,EAAO,SAAW,SAASlB,EAAG,CAC5B,OAAIA,EAAI,KACC,CAACA,CAAC,EAEF,CAAC,GAAIA,EAAI,IAAI,CAExB,EACAkB,EAAO,QAAU,SAASlB,EAAGkE,EAAM,CACjC,IAAIjL,EAAI,CAAC,EACT,GAAI,MAAM,QAAQiL,CAAI,EACpB,QAAS7L,EAAI,EAAGA,EAAI6L,EAAK,OAAQ7L,GAAK,EAAG,CACvCuI,EAAc,SAASZ,EAAE,SAAWkE,EAAK,OAAQ,sCAAwCA,CAAI,EAC7F,IAAMF,EAAO9C,EAAO,QAAQlB,EAAE3H,CAAC,EAAG6L,EAAK7L,CAAC,CAAC,EACzC,QAAS2J,EAAI,EAAGA,EAAIgC,EAAK,OAAQhC,IAC/B/I,EAAE,KAAK+K,EAAKhC,CAAC,CAAC,CAElB,SAEIkC,IAAS,MAAO,CAClB,IAAMF,EAAO9C,EAAO,OAAOlB,CAAC,EAC5B,QAASgC,EAAI,EAAGA,EAAIgC,EAAK,OAAQhC,IAC/B/I,EAAE,KAAK+K,EAAKhC,CAAC,CAAC,CAElB,SAAWkC,IAAS,SAAU,CAC5B,IAAMF,EAAO9C,EAAO,SAASlB,CAAC,EAC9B,QAASgC,EAAI,EAAGA,EAAIgC,EAAK,OAAQhC,IAC/B/I,EAAE,KAAK+K,EAAKhC,CAAC,CAAC,CAElB,SAAWkC,IAAS,SAAU,CAC5B,IAAMF,EAAO9C,EAAO,OAAOlB,CAAC,EAC5B,QAASgC,EAAI,EAAGA,EAAIgC,EAAK,OAAQhC,IAC/B/I,EAAE,KAAK+K,EAAKhC,CAAC,CAAC,CAElB,SAAWkC,IAAS,OAAQ,CAC1B,IAAMF,EAAO9C,EAAO,KAAKlB,CAAC,EAC1B,QAASgC,EAAI,EAAGA,EAAIgC,EAAK,OAAQhC,IAC/B/I,EAAE,KAAK+K,EAAKhC,CAAC,CAAC,CAElB,KACE,OAAM,IAAI,MAAM,wBAA0BkC,CAAI,EAGlD,OAAOjL,CACT,EACAiI,EAAO,GAAKA,EAAO,KACnBC,EAAO,GAAKA,EAAO,KACnB,IAAIgD,GAAM,OAAO,SAAY,YAA8B,IAAI,QAC/DjD,EAAO,WAAa,SAASkD,EAAK,CAChC,GAAID,GAAK,CACP,IAAME,EAAcF,GAAI,IAAIC,CAAG,EAC/B,GAAIC,IAAgB,OAClB,OAAOA,CAEX,CACA,IAAIpL,EAAI,CAAC,EACHY,EAASuK,EAAI,OACnB,QAAS/L,EAAI,EAAGA,EAAIwB,EAAQxB,GAAK,EAAG,CAClC,IAAMiM,EAAKF,EAAI/L,CAAC,EACV2L,EAAO9C,EAAOoD,EAAG,IAAI,EAAEA,EAAG,KAAK,EACrC,QAAStC,EAAI,EAAGA,EAAIgC,EAAK,OAAQhC,IAC/B/I,EAAE,KAAK+K,EAAKhC,CAAC,CAAC,CAElB,CACA,OAAImC,IACFA,GAAI,IAAIC,EAAKnL,CAAC,EAETA,CACT,EACAkI,EAAO,WAAa,SAASiD,EAAK,CAChC,OAAOlD,EAAO,WAAWkD,CAAG,EAAE,MAChC,EACAlD,EAAO,OAAS,SAASlB,EAAG,CAC1B,IAAMuE,EAAmBrD,EAAOlB,EAAE,IAAI,EACtC,OAAAY,EAAc,SAAS2D,IAAqB,OAAQ,iCAAmCvE,EAAE,IAAI,EACtFuE,EAAiBvE,EAAE,KAAK,CACjC,EACAmB,EAAO,OAAS,SAASnB,EAAG,CAC1B,IAAMwE,EAAiBrD,EAAOnB,EAAE,IAAI,EACpC,OAAAY,EAAc,SAAS4D,IAAmB,OAAQ,+BAAiCxE,EAAE,IAAI,EAClFwE,EAAexE,EAAE,KAAK,CAC/B,EACAkB,EAAO,MAAQ,SAASoB,EAAO,CAC7B,IAAIrJ,EAAI,CAAC,EACHY,GAAUyI,EAAM,QAAU,CAAC,GAAG,OAC9BmC,EAAY,CAAC,EACbC,EAAkB,CAAC,EACzB,QAASrM,EAAI,EAAGA,EAAIwB,EAAQxB,GAAK,EAAG,CAClC,IAAMsM,EAAQrC,EAAM,OAAOjK,CAAC,EACtBkM,EAAmBrD,EAAOyD,EAAM,IAAI,EAC1C/D,EAAc,SAAS2D,IAAqB,OAAQ,uCAAyCI,EAAM,KAAO,KAAOA,EAAM,KAAO,GAAG,EACjI,IAAIrD,EAAQgB,EAAMqC,EAAM,IAAI,EACxBrD,IAAU,SACZA,EAAQqD,EAAM,OAEhB,IAAMC,EAAQL,EAAiBjD,CAAK,EACpC,GAAIqD,EAAM,OAAS,QACbrD,EAAM,SAAW,OACnBoD,EAAgB,KAAKzL,EAAE,MAAM,EAC7BwL,EAAU,KAAKG,CAAK,GAEtB3L,EAAE,KAAS,EAAG,CAAE,MAEhB,SAAS+I,EAAI,EAAGA,EAAI4C,EAAM,OAAQ5C,IAChC/I,EAAE,KAAK2L,EAAM5C,CAAC,CAAC,CAGrB,CACA,QAAS3J,EAAI,EAAGA,EAAIoM,EAAU,OAAQpM,GAAK,EAAG,CAC5C,IAAMwM,EAAIH,EAAgBrM,CAAC,EACrB0G,EAAS9F,EAAE,OACjB2H,EAAc,SAAS7B,EAAS,MAAO,SAAWuD,EAAM,UAAY,WAAW,EAC/ErJ,EAAE4L,CAAC,EAAI9F,GAAU,EACjB9F,EAAE4L,EAAI,CAAC,EAAI9F,EAAS,IACpB,QAASiD,EAAI,EAAGA,EAAIyC,EAAUpM,CAAC,EAAE,OAAQ2J,IACvC/I,EAAE,KAAKwL,EAAUpM,CAAC,EAAE2J,CAAC,CAAC,CAE1B,CACA,OAAO/I,CACT,EACAkI,EAAO,MAAQ,SAASmB,EAAO,CAC7B,IAAIT,EAAW,EACThI,GAAUyI,EAAM,QAAU,CAAC,GAAG,OACpC,QAASjK,EAAI,EAAGA,EAAIwB,EAAQxB,GAAK,EAAG,CAClC,IAAMsM,EAAQrC,EAAM,OAAOjK,CAAC,EACtBmM,EAAiBrD,EAAOwD,EAAM,IAAI,EACxC/D,EAAc,SAAS4D,IAAmB,OAAQ,qCAAuCG,EAAM,KAAO,KAAOA,EAAM,KAAO,GAAG,EAC7H,IAAIrD,EAAQgB,EAAMqC,EAAM,IAAI,EACxBrD,IAAU,SACZA,EAAQqD,EAAM,OAEhB9C,GAAY2C,EAAelD,CAAK,EAC5BqD,EAAM,OAAS,UACjB9C,GAAY,EAEhB,CACA,OAAOA,CACT,EACAX,EAAO,OAASA,EAAO,MACvBC,EAAO,OAASA,EAAO,MACvBD,EAAO,QAAU,SAASlB,EAAG,CAC3B,OAAOA,CACT,EACAmB,EAAO,QAAU,SAASnB,EAAG,CAC3B,OAAOA,EAAE,MACX,EAGA,SAAS8E,GAAMC,EAAWC,EAAQrH,EAAS,CACzC,GAAIqH,GAAUA,EAAO,OACnB,QAAS3M,EAAI,EAAGA,EAAI2M,EAAO,OAAQ3M,GAAK,EAAG,CACzC,IAAMsM,EAAQK,EAAO3M,CAAC,EACtB,KAAKsM,EAAM,IAAI,EAAIA,EAAM,KAC3B,CAIF,GAFA,KAAK,UAAYI,EACjB,KAAK,OAASC,EACVrH,EAAS,CACX,IAAMsH,EAAa,OAAO,KAAKtH,CAAO,EACtC,QAAStF,EAAI,EAAGA,EAAI4M,EAAW,OAAQ5M,GAAK,EAAG,CAC7C,IAAM0L,EAAIkB,EAAW5M,CAAC,EAChB2H,EAAIrC,EAAQoG,CAAC,EACf,KAAKA,CAAC,IAAM,SACd,KAAKA,CAAC,EAAI/D,EAEd,CACF,CACF,CACA8E,GAAM,UAAU,OAAS,UAAW,CAClC,OAAO5D,EAAO,MAAM,IAAI,CAC1B,EACA4D,GAAM,UAAU,OAAS,UAAW,CAClC,OAAO3D,EAAO,MAAM,IAAI,CAC1B,EACA,SAAS+D,GAAWC,EAAUC,EAAMC,EAAO,CACrCA,IAAU,SACZA,EAAQD,EAAK,QAEf,IAAMJ,EAAS,IAAI,MAAMI,EAAK,OAAS,CAAC,EACxCJ,EAAO,CAAC,EAAI,CAAE,KAAMG,EAAW,QAAS,KAAM,SAAU,MAAOE,CAAM,EACrE,QAAShN,EAAI,EAAGA,EAAI+M,EAAK,OAAQ/M,IAC/B2M,EAAO3M,EAAI,CAAC,EAAI,CAAE,KAAM8M,EAAW9M,EAAG,KAAM,SAAU,MAAO+M,EAAK/M,CAAC,CAAE,EAEvE,OAAO2M,CACT,CACA,SAASM,GAAUH,EAAUI,EAASC,EAAc,CAClD,IAAMH,EAAQE,EAAQ,OAChBP,EAAS,IAAI,MAAMK,EAAQ,CAAC,EAClCL,EAAO,CAAC,EAAI,CAAE,KAAMG,EAAW,QAAS,KAAM,SAAU,MAAOE,CAAM,EACrE,QAAShN,EAAI,EAAGA,EAAIgN,EAAOhN,IACzB2M,EAAO3M,EAAI,CAAC,EAAI,CAAE,KAAM8M,EAAW9M,EAAG,KAAM,QAAS,MAAOmN,EAAaD,EAAQlN,CAAC,EAAGA,CAAC,CAAE,EAE1F,OAAO2M,CACT,CACA,SAASS,GAAWN,EAAUI,EAASC,EAAc,CACnD,IAAMH,EAAQE,EAAQ,OAClBP,EAAS,CAAC,EACdA,EAAO,CAAC,EAAI,CAAE,KAAMG,EAAW,QAAS,KAAM,SAAU,MAAOE,CAAM,EACrE,QAAShN,EAAI,EAAGA,EAAIgN,EAAOhN,IACzB2M,EAASA,EAAO,OAAOQ,EAAaD,EAAQlN,CAAC,EAAGA,CAAC,CAAC,EAEpD,OAAO2M,CACT,CACA,SAASU,GAASC,EAAe,CAC3BA,EAAc,SAAW,EAC3Bb,GAAM,KACJ,KACA,gBACA,CAAC,CAAE,KAAM,iBAAkB,KAAM,SAAU,MAAO,CAAE,CAAC,EAAE,OAAOI,GAAW,QAASS,EAAc,MAAM,CAAC,CACzG,EACSA,EAAc,SAAW,EAClCb,GAAM,KACJ,KACA,gBACA,CAAC,CAAE,KAAM,iBAAkB,KAAM,SAAU,MAAO,CAAE,CAAC,EAAE,OAAOW,GAAW,cAAeE,EAAc,OAAQ,SAASC,EAAavN,EAAG,CACrI,MAAO,CACL,CAAE,KAAM,eAAiBA,EAAG,KAAM,SAAU,MAAOuN,EAAY,KAAM,EACrE,CAAE,KAAM,aAAevN,EAAG,KAAM,SAAU,MAAOuN,EAAY,GAAI,EACjE,CAAE,KAAM,qBAAuBvN,EAAG,KAAM,SAAU,MAAOuN,EAAY,KAAM,CAC7E,CACF,CAAC,CAAC,CACJ,EAEAhF,EAAc,OAAO,GAAO,iCAAiC,CAEjE,CACA8E,GAAS,UAAY,OAAO,OAAOZ,GAAM,SAAS,EAClDY,GAAS,UAAU,YAAcA,GACjC,SAASG,GAAWC,EAAiB,CACnChB,GAAM,KACJ,KACA,kBACAW,GAAW,eAAgBK,EAAiB,SAASC,EAAc1N,EAAG,CACpE,IAAM2N,EAASD,EAAa,OACxBE,EAAiBD,EAAO,eAC5B,OAAApF,EAAc,OAAO,CAAC,CAACqF,EAAgB,gCAAkCF,EAAa,IAAM,kCAAkC,EACvH,CACL,CAAE,KAAM,YAAc1N,EAAG,KAAM,MAAO,MAAO0N,EAAa,GAAI,EAC9D,CAAE,KAAM,SAAW1N,EAAG,KAAM,QAAS,MAAO,IAAIyM,GAAM,cAAe,CACnE,CAAE,KAAM,iBAAkB,KAAM,QAAS,MAAO,IAAIA,GAAM,iBAAkB,CAC1E,CAAE,KAAM,cAAe,KAAM,SAAU,MAAO,CAAE,EAChD,CAAE,KAAM,kBAAmB,KAAM,SAAU,MAAOmB,EAAe,eAAgB,CACnF,EAAE,OAAOf,GAAW,eAAgBe,EAAe,cAAc,CAAC,CAAC,CAAE,CACvE,EAAE,OAAOR,GAAW,UAAWO,EAAO,eAAgB,SAASE,EAAeC,EAAI,CAChF,IAAMC,EAAUF,EAAc,QAC9B,MAAO,CACL,CAAE,KAAM,aAAeC,EAAI,KAAM,MAAO,MAAOD,EAAc,GAAI,EACjE,CAAE,KAAM,UAAYC,EAAI,KAAM,QAAS,MAAO,IAAIrB,GAAM,UAAW,CACjE,CAAE,KAAM,cAAe,KAAM,SAAU,MAAO,CAAE,EAChD,CAAE,KAAM,kBAAmB,KAAM,SAAU,MAAOsB,EAAQ,eAAgB,CAC5E,EAAE,OAAOlB,GAAW,eAAgBkB,EAAQ,cAAc,CAAC,CAAC,CAAE,CAChE,CACF,CAAC,CAAC,CAAC,CAAE,CACP,CACF,CAAC,CACH,CACF,CACAP,GAAW,UAAY,OAAO,OAAOf,GAAM,SAAS,EACpDe,GAAW,UAAU,YAAcA,GACnC,SAASQ,GAAYC,EAAkB,CACrCxB,GAAM,KACJ,KACA,mBACAW,GAAW,gBAAiBa,EAAkB,SAASC,EAAelO,EAAG,CACvE,IAAMmO,EAAUD,EAAc,QAC9B,MAAO,CACL,CAAE,KAAM,aAAelO,EAAG,KAAM,MAAO,MAAOkO,EAAc,GAAI,EAChE,CAAE,KAAM,UAAYlO,EAAG,KAAM,QAAS,MAAO,IAAIyM,GAAM,eAAgB,CACrE,CAAE,KAAM,gBAAiB,KAAM,SAAU,MAAO0B,EAAQ,aAAc,CACxE,EAAE,OAAOtB,GAAW,kBAAmBsB,EAAQ,iBAAiB,CAAC,CAAC,CAAE,CACtE,CACF,CAAC,CACH,CACF,CACAH,GAAY,UAAY,OAAO,OAAOvB,GAAM,SAAS,EACrDuB,GAAY,UAAU,YAAcA,GACpC,SAASI,GAAWC,EAAiBC,EAAiB,CACpD7B,GAAM,KAAK,KAAM,kBAAmBQ,GAAU,SAAUoB,EAAiB,SAASE,EAAa,CAC7F,IAAIC,EAAmBF,EAAgBC,EAAY,UAAU,EAC7D,OAAAhG,EAAc,OAAO,CAAC,CAACiG,EAAkB,oCAAsCD,EAAY,WAAa,UAAU,EAC3G,IAAI9B,GAAM,cAAe,CAC9B,CAAE,KAAM,aAAc,KAAM,SAAU,MAAO8B,EAAY,UAAW,EACpE,CAAE,KAAM,aAAc,KAAM,SAAU,MAAOA,EAAY,UAAW,CACtE,EAAE,OAAOtB,GAAU,WAAYsB,EAAY,UAAWC,CAAgB,CAAC,CAAC,CAC1E,CAAC,CAAC,CACJ,CACAJ,GAAW,UAAY,OAAO,OAAO3B,GAAM,SAAS,EACpD2B,GAAW,UAAU,YAAcA,GACnC,SAASK,GAASC,EAAe,CAC3BA,EAAc,SAAW,EAC3BjC,GAAM,KACJ,KACA,gBACA,CACE,CAAE,KAAM,cAAe,KAAM,SAAU,MAAO,CAAE,EAChD,CAAE,KAAM,eAAgB,KAAM,SAAU,MAAOiC,EAAc,UAAW,CAC1E,EAAE,OAAO7B,GAAW,QAAS6B,EAAc,OAAO,CAAC,CACrD,EACSA,EAAc,SAAW,EAClCjC,GAAM,KACJ,KACA,gBACA,CAAC,CAAE,KAAM,cAAe,KAAM,SAAU,MAAO,CAAE,CAAC,EAAE,OAAOW,GAAW,cAAesB,EAAc,OAAQ,SAASnB,EAAavN,EAAG,CAClI,MAAO,CACL,CAAE,KAAM,eAAiBA,EAAG,KAAM,SAAU,MAAOuN,EAAY,KAAM,EACrE,CAAE,KAAM,aAAevN,EAAG,KAAM,SAAU,MAAOuN,EAAY,GAAI,EACjE,CAAE,KAAM,QAAUvN,EAAG,KAAM,SAAU,MAAOuN,EAAY,OAAQ,CAClE,CACF,CAAC,CAAC,CACJ,EAEAhF,EAAc,OAAO,GAAO,8BAA8B,CAE9D,CACAkG,GAAS,UAAY,OAAO,OAAOhC,GAAM,SAAS,EAClDgC,GAAS,UAAU,YAAcA,GACjC,IAAIE,EAAgB,CAClB,MAAAlC,GACA,OAAQA,GACR,SAAAY,GACA,SAAAoB,GACA,WAAAjB,GACA,YAAAQ,GACA,WAAAI,GACA,WAAAvB,GACA,UAAAI,GACA,WAAAG,EACF,EAGA,SAASwB,GAAQ9E,EAAUpD,EAAQ,CACjC,OAAOoD,EAAS,SAASpD,CAAM,CACjC,CACA,SAASmI,GAAU/E,EAAUpD,EAAQ,CACnC,OAAOoD,EAAS,UAAUpD,EAAQ,EAAK,CACzC,CACA,SAASoI,GAAShF,EAAUpD,EAAQ,CAClC,OAAOoD,EAAS,SAASpD,EAAQ,EAAK,CACxC,CACA,SAASqI,GAAUjF,EAAUpD,EAAQ,CACnC,OAAQoD,EAAS,UAAUpD,CAAM,GAAK,GAAKoD,EAAS,SAASpD,EAAS,CAAC,CACzE,CACA,SAASsI,GAASlF,EAAUpD,EAAQ,CAClC,OAAOoD,EAAS,UAAUpD,EAAQ,EAAK,CACzC,CACA,SAASuI,GAAQnF,EAAUpD,EAAQ,CACjC,OAAOoD,EAAS,SAASpD,EAAQ,EAAK,CACxC,CACA,SAASwI,GAASpF,EAAUpD,EAAQ,CAClC,IAAMyI,EAAUrF,EAAS,SAASpD,EAAQ,EAAK,EACzC0I,EAAWtF,EAAS,UAAUpD,EAAS,EAAG,EAAK,EACrD,OAAOyI,EAAUC,EAAW,KAC9B,CACA,SAASC,GAAOvF,EAAUpD,EAAQ,CAChC,IAAIvF,EAAM,GACV,QAASnB,EAAI0G,EAAQ1G,EAAI0G,EAAS,EAAG1G,GAAK,EACxCmB,GAAO,OAAO,aAAa2I,EAAS,QAAQ9J,CAAC,CAAC,EAEhD,OAAOmB,CACT,CACA,SAASmO,GAAUxF,EAAUpD,EAAQ4E,EAAS,CAC5C,IAAI3D,EAAI,EACR,QAAS3H,EAAI,EAAGA,EAAIsL,EAAStL,GAAK,EAChC2H,IAAM,EACNA,GAAKmC,EAAS,SAASpD,EAAS1G,CAAC,EAEnC,OAAO2H,CACT,CACA,SAAS4H,GAASzF,EAAU0F,EAAaC,EAAW,CAClD,IAAMlD,EAAQ,CAAC,EACf,QAASvM,EAAIwP,EAAaxP,EAAIyP,EAAWzP,GAAK,EAC5CuM,EAAM,KAAKzC,EAAS,SAAS9J,CAAC,CAAC,EAEjC,OAAOuM,CACT,CACA,SAASmD,GAAcnD,EAAO,CAC5B,IAAIzE,EAAI,GACR,QAAS9H,EAAI,EAAGA,EAAIuM,EAAM,OAAQvM,GAAK,EACrC8H,GAAK,OAAO,aAAayE,EAAMvM,CAAC,CAAC,EAEnC,OAAO8H,CACT,CACA,IAAI6H,GAAc,CAChB,KAAM,EACN,OAAQ,EACR,QAAS,EACT,MAAO,EACP,OAAQ,EACR,MAAO,EACP,MAAO,EACP,aAAc,EACd,IAAK,CACP,EACIC,GAAQ,CACV,WAAY,MACZ,sBAAuB,MACvB,qBAAsB,MACtB,WAAY,KACZ,oBAAqB,MACrB,oBAAqB,MACrB,sBAAuB,KACvB,iBAAkB,KAClB,iBAAkB,IAClB,qBAAsB,IACtB,gBAAiB,IACjB,iBAAkB,GAClB,qBAAsB,GACtB,2BAA4B,GAC5B,oBAAqB,EACvB,EACA,SAASC,EAAOtG,EAAM7C,EAAQ,CAC5B,KAAK,KAAO6C,EACZ,KAAK,OAAS7C,EACd,KAAK,eAAiB,CACxB,CACAmJ,EAAO,UAAU,UAAY,UAAW,CACtC,IAAMlI,EAAI,KAAK,KAAK,SAAS,KAAK,OAAS,KAAK,cAAc,EAC9D,YAAK,gBAAkB,EAChBA,CACT,EACAkI,EAAO,UAAU,UAAY,UAAW,CACtC,IAAMlI,EAAI,KAAK,KAAK,QAAQ,KAAK,OAAS,KAAK,cAAc,EAC7D,YAAK,gBAAkB,EAChBA,CACT,EACAkI,EAAO,UAAU,WAAaA,EAAO,UAAU,UAC/CA,EAAO,UAAU,YAAc,UAAW,CACxC,IAAMlI,EAAI,KAAK,KAAK,UAAU,KAAK,OAAS,KAAK,cAAc,EAC/D,YAAK,gBAAkB,EAChBA,CACT,EACAkI,EAAO,UAAU,YAAcA,EAAO,UAAU,YAChDA,EAAO,UAAU,SAAWA,EAAO,UAAU,YAC7CA,EAAO,UAAU,cAAgBA,EAAO,UAAU,YAClDA,EAAO,UAAU,WAAa,UAAW,CACvC,IAAMlI,EAAI,KAAK,KAAK,SAAS,KAAK,OAAS,KAAK,cAAc,EAC9D,YAAK,gBAAkB,EAChBA,CACT,EACAkI,EAAO,UAAU,aAAe,UAAW,CACzC,IAAMlI,EAAI,KAAK,KAAK,SAAS,KAAK,OAAS,KAAK,cAAc,EAAI,MAClE,YAAK,gBAAkB,EAChBA,CACT,EACAkI,EAAO,UAAU,YAAc,UAAW,CACxC,IAAMlI,EAAIoH,GAAU,KAAK,KAAM,KAAK,OAAS,KAAK,cAAc,EAChE,YAAK,gBAAkB,EAChBpH,CACT,EACAkI,EAAO,UAAU,WAAa,UAAW,CACvC,IAAMlI,EAAIqH,GAAS,KAAK,KAAM,KAAK,OAAS,KAAK,cAAc,EAC/D,YAAK,gBAAkB,EAChBrH,CACT,EACAkI,EAAO,UAAU,UAAY,UAAW,CACtC,IAAMlI,EAAIsH,GAAQ,KAAK,KAAM,KAAK,OAAS,KAAK,cAAc,EAC9D,YAAK,gBAAkB,EAChBtH,CACT,EACAkI,EAAO,UAAU,cAAgBA,EAAO,UAAU,WAClDA,EAAO,UAAU,WAAa,UAAW,CACvC,IAAMlI,EAAIuH,GAAS,KAAK,KAAM,KAAK,OAAS,KAAK,cAAc,EAC/D,YAAK,gBAAkB,EAChBvH,CACT,EACAkI,EAAO,UAAU,YAAc,SAASrO,EAAQ,CAC9C,IAAMsI,EAAW,KAAK,KAChBpD,EAAS,KAAK,OAAS,KAAK,eAC9BoJ,EAAS,GACb,KAAK,gBAAkBtO,EACvB,QAASxB,EAAI,EAAGA,EAAIwB,EAAQxB,IAC1B8P,GAAU,OAAO,aAAahG,EAAS,SAASpD,EAAS1G,CAAC,CAAC,EAE7D,OAAO8P,CACT,EACAD,EAAO,UAAU,SAAW,UAAW,CACrC,OAAO,KAAK,YAAY,CAAC,CAC3B,EACAA,EAAO,UAAU,kBAAoB,UAAW,CAC9C,IAAIlI,EAAIqH,GAAS,KAAK,KAAM,KAAK,OAAS,KAAK,eAAiB,CAAC,EACjE,OAAArH,GAAK,WACL,KAAK,gBAAkB,EAChBA,CACT,EACAkI,EAAO,UAAU,aAAe,SAASE,EAAW,CAClD,IAAMC,EAAQnB,GAAU,KAAK,KAAM,KAAK,OAAS,KAAK,cAAc,EAC9DoB,EAAQpB,GAAU,KAAK,KAAM,KAAK,OAAS,KAAK,eAAiB,CAAC,EACxE,YAAK,gBAAkB,EACnBkB,IAAc,SAAQA,EAAY,MAC/BC,EAAQC,EAAQF,EAAY,EACrC,EACAF,EAAO,UAAU,KAAO,SAAShE,EAAMqE,EAAQ,CACzCA,IAAW,SACbA,EAAS,GAEX,KAAK,gBAAkBP,GAAY9D,CAAI,EAAIqE,CAC7C,EACAL,EAAO,UAAU,eAAiB,SAAS7C,EAAO,CAC5CA,IAAU,SACZA,EAAQ,KAAK,WAAW,GAE1B,IAAM5B,EAAU,IAAI,MAAM4B,CAAK,EACzBlD,EAAW,KAAK,KAClBpD,EAAS,KAAK,OAAS,KAAK,eAChC,QAAS1G,EAAI,EAAGA,EAAIgN,EAAOhN,IACzBoL,EAAQpL,CAAC,EAAI8J,EAAS,UAAUpD,CAAM,EACtCA,GAAU,EAEZ,YAAK,gBAAkBsG,EAAQ,EACxB5B,CACT,EACAyE,EAAO,UAAU,kBAAoBA,EAAO,UAAU,gBAAkB,SAAS7C,EAAO,CAClFA,IAAU,SACZA,EAAQ,KAAK,YAAY,GAE3B,IAAM5B,EAAU,IAAI,MAAM4B,CAAK,EACzBlD,EAAW,KAAK,KAClBpD,EAAS,KAAK,OAAS,KAAK,eAChC,QAAS1G,EAAI,EAAGA,EAAIgN,EAAOhN,IACzBoL,EAAQpL,CAAC,EAAI8J,EAAS,UAAUpD,CAAM,EACtCA,GAAU,EAEZ,YAAK,gBAAkBsG,EAAQ,EACxB5B,CACT,EACAyE,EAAO,UAAU,eAAiB,SAAS7C,EAAO,CAChD,IAAMD,EAAO,IAAI,MAAMC,CAAK,EACtBlD,EAAW,KAAK,KAClBpD,EAAS,KAAK,OAAS,KAAK,eAChC,QAAS1G,EAAI,EAAGA,EAAIgN,EAAOhN,IACzB+M,EAAK/M,CAAC,EAAI8J,EAAS,SAASpD,CAAM,EAClCA,GAAU,EAEZ,YAAK,gBAAkBsG,EAAQ,EACxBD,CACT,EACA8C,EAAO,UAAU,cAAgB,SAAS7C,EAAO,CAC/C,IAAMD,EAAO,IAAI,MAAMC,CAAK,EACtBlD,EAAW,KAAK,KAClBpD,EAAS,KAAK,OAAS,KAAK,eAChC,QAAS1G,EAAI,EAAGA,EAAIgN,EAAOhN,IACzB+M,EAAK/M,CAAC,EAAI8J,EAAS,SAASpD,GAAQ,EAEtC,YAAK,gBAAkBsG,EAChBD,CACT,EACA8C,EAAO,UAAU,UAAY,SAAS7C,EAAOG,EAAc,CACpDA,IACHA,EAAeH,EACfA,EAAQ,KAAK,YAAY,GAE3B,IAAMD,EAAO,IAAI,MAAMC,CAAK,EAC5B,QAAShN,EAAI,EAAGA,EAAIgN,EAAOhN,IACzB+M,EAAK/M,CAAC,EAAImN,EAAa,KAAK,IAAI,EAElC,OAAOJ,CACT,EACA8C,EAAO,UAAU,YAAc,SAAS7C,EAAOG,EAAc,CACtDA,IACHA,EAAeH,EACfA,EAAQ,KAAK,WAAW,GAE1B,IAAMD,EAAO,IAAI,MAAMC,CAAK,EAC5B,QAAShN,EAAI,EAAGA,EAAIgN,EAAOhN,IACzB+M,EAAK/M,CAAC,EAAImN,EAAa,KAAK,IAAI,EAElC,OAAOJ,CACT,EACA8C,EAAO,UAAU,gBAAkB,SAAS7C,EAAOmD,EAAmB,CAC/DA,IACHA,EAAoBnD,EACpBA,EAAQ,KAAK,YAAY,GAE3B,IAAME,EAAU,IAAI,MAAMF,CAAK,EACzBL,EAAS,OAAO,KAAKwD,CAAiB,EAC5C,QAASnQ,EAAI,EAAGA,EAAIgN,EAAOhN,IAAK,CAC9B,IAAMoQ,EAAM,CAAC,EACb,QAASzG,EAAI,EAAGA,EAAIgD,EAAO,OAAQhD,IAAK,CACtC,IAAM0G,EAAY1D,EAAOhD,CAAC,EACpB2G,EAAYH,EAAkBE,CAAS,EAC7CD,EAAIC,CAAS,EAAIC,EAAU,KAAK,IAAI,CACtC,CACApD,EAAQlN,CAAC,EAAIoQ,CACf,CACA,OAAOlD,CACT,EACA2C,EAAO,UAAU,kBAAoB,SAAS7C,EAAOmD,EAAmB,CACjEA,IACHA,EAAoBnD,EACpBA,EAAQ,KAAK,WAAW,GAE1B,IAAME,EAAU,IAAI,MAAMF,CAAK,EACzBL,EAAS,OAAO,KAAKwD,CAAiB,EAC5C,QAASnQ,EAAI,EAAGA,EAAIgN,EAAOhN,IAAK,CAC9B,IAAMoQ,EAAM,CAAC,EACb,QAASzG,EAAI,EAAGA,EAAIgD,EAAO,OAAQhD,IAAK,CACtC,IAAM0G,EAAY1D,EAAOhD,CAAC,EACpB2G,EAAYH,EAAkBE,CAAS,EAC7CD,EAAIC,CAAS,EAAIC,EAAU,KAAK,IAAI,CACtC,CACApD,EAAQlN,CAAC,EAAIoQ,CACf,CACA,OAAOlD,CACT,EACA2C,EAAO,UAAU,kBAAoB,SAASU,EAAYC,EAAW,CACnE,IAAIC,EAAS,CAAC,EACd,QAASzQ,EAAI,EAAGA,EAAIuQ,EAAYvQ,IAAK,CACnC,IAAI0Q,EAAQ,CAAC,EACb,QAASC,EAAY,EAAGA,EAAYH,EAAWG,IAC7CD,EAAM,KAAK,KAAK,aAAa,CAAC,EAEhCD,EAAO,KAAKC,CAAK,CACnB,CACA,OAAOD,CACT,EACAZ,EAAO,UAAU,YAAc,SAASe,EAAa,CACnD,GAAI,OAAOA,GAAgB,WACzB,OAAOA,EAAY,KAAK,IAAI,EACvB,CACL,IAAMjE,EAAS,OAAO,KAAKiE,CAAW,EAChCC,EAAS,CAAC,EAChB,QAASlH,EAAI,EAAGA,EAAIgD,EAAO,OAAQhD,IAAK,CACtC,IAAM0G,EAAY1D,EAAOhD,CAAC,EACpB2G,EAAYM,EAAYP,CAAS,EACvCQ,EAAOR,CAAS,EAAIC,EAAU,KAAK,IAAI,CACzC,CACA,OAAOO,CACT,CACF,EACAhB,EAAO,UAAU,iBAAmB,SAASiB,EAAa,CAIxD,GAHIA,IAAgB,SAClBA,EAAc,KAAK,YAAY,GAE7BA,IAAgB,EAClB,OAEF,IAAMC,EAAc,CAAC,EACrB,OAAID,EAAc,IAChBC,EAAY,WAAa,KAAK,WAAW,GAEvCD,EAAc,IAChBC,EAAY,WAAa,KAAK,WAAW,GAEvCD,EAAc,IAChBC,EAAY,SAAW,KAAK,WAAW,GAErCD,EAAc,IAChBC,EAAY,SAAW,KAAK,WAAW,GAErCD,EAAc,KAChBC,EAAY,WAAa,OACzB,KAAK,WAAW,GAEdD,EAAc,KAChBC,EAAY,WAAa,OACzB,KAAK,WAAW,GAEdD,EAAc,KAChBC,EAAY,WAAa,OACzB,KAAK,WAAW,GAEdD,EAAc,MAChBC,EAAY,WAAa,OACzB,KAAK,WAAW,GAEXA,CACT,EACAlB,EAAO,UAAU,qBAAuB,UAAW,CACjD,IAAMiB,EAAc,KAAK,YAAY,EAC/BE,EAAa,KAAK,YAAY,EAC9BC,EAAS,IAAI,MAAMD,CAAU,EACnC,QAAShR,EAAI,EAAGA,EAAIgR,EAAYhR,IAC9BiR,EAAOjR,CAAC,EAAI,KAAK,iBAAiB8Q,CAAW,EAE/C,OAAOG,CACT,EACApB,EAAO,UAAU,aAAe,SAASe,EAAa,CACpD,IAAMM,EAAe,KAAK,cAAc,EACxC,GAAIA,EAAe,EACjB,OAAO,IAAIrB,EAAO,KAAK,KAAM,KAAK,OAASqB,CAAY,EAAE,YAAYN,CAAW,CAGpF,EACAf,EAAO,UAAU,eAAiB,SAASe,EAAa,CACtD,IAAMM,EAAe,KAAK,cAAc,EACxC,GAAIA,EAAe,EACjB,OAAO,IAAIrB,EAAO,KAAK,KAAM,KAAK,OAASqB,CAAY,EAAE,YAAYN,CAAW,CAGpF,EACAf,EAAO,UAAU,iBAAmB,SAAS1C,EAAc,CACzD,IAAM/B,EAAU,KAAK,kBAAkB,EACjC4B,EAAQ5B,EAAQ,OAChB+F,EAAiB,KAAK,eACtBpE,EAAO,IAAI,MAAMC,CAAK,EAC5B,QAAShN,EAAI,EAAGA,EAAIgN,EAAOhN,IAAK,CAC9B,IAAMoR,EAAQhG,EAAQpL,CAAC,EACvB,GAAIoR,IAAU,EAAG,CACfrE,EAAK/M,CAAC,EAAI,OACV,QACF,CAEA,GADA,KAAK,eAAiBoR,EAClBjE,EAAc,CAChB,IAAMkE,EAAa,KAAK,kBAAkB,EACpCC,EAAU,IAAI,MAAMD,EAAW,MAAM,EAC3C,QAAS1H,EAAI,EAAGA,EAAI0H,EAAW,OAAQ1H,IACrC,KAAK,eAAiByH,EAAQC,EAAW1H,CAAC,EAC1C2H,EAAQ3H,CAAC,EAAIwD,EAAa,KAAK,IAAI,EAErCJ,EAAK/M,CAAC,EAAIsR,CACZ,MACEvE,EAAK/M,CAAC,EAAI,KAAK,gBAAgB,CAEnC,CACA,YAAK,eAAiBmR,EACfpE,CACT,EACA8C,EAAO,UAAU,cAAgB,UAAW,CAC1C,IAAML,EAAc,KAAK,OAAS,KAAK,eACjC+B,EAAS,KAAK,YAAY,EAC1BvE,EAAQ,KAAK,YAAY,EAC/B,GAAIuE,IAAW,EACb,MAAO,CACL,OAAQ,EACR,OAAQ,KAAK,gBAAgBvE,CAAK,CACpC,EACK,GAAIuE,IAAW,EAAG,CACvB,IAAMC,EAAS,IAAI,MAAMxE,CAAK,EAC9B,QAAShN,EAAI,EAAGA,EAAIgN,EAAOhN,IACzBwR,EAAOxR,CAAC,EAAI,CACV,MAAO,KAAK,YAAY,EACxB,IAAK,KAAK,YAAY,EACtB,MAAO,KAAK,YAAY,CAC1B,EAEF,MAAO,CACL,OAAQ,EACR,OAAAwR,CACF,CACF,CACA,MAAM,IAAI,MAAM,KAAOhC,EAAY,SAAS,EAAE,EAAI,mCAAmC,CACvF,EACAK,EAAO,UAAU,cAAgB,UAAW,CAC1C,IAAML,EAAc,KAAK,OAAS,KAAK,eACjC+B,EAAS,KAAK,YAAY,EAChC,OAAIA,IAAW,EACN,CACL,OAAQ,EACR,WAAY,KAAK,YAAY,EAC7B,QAAS,KAAK,gBAAgB,CAChC,EACSA,IAAW,EACb,CACL,OAAQ,EACR,OAAQ,KAAK,gBAAgB,CAC3B,MAAO1B,EAAO,OACd,IAAKA,EAAO,OACZ,QAASA,EAAO,MAClB,CAAC,CACH,GAEF,QAAQ,KAAK,KAAKL,EAAY,SAAS,EAAE,CAAC,uDAAuD+B,CAAM,qFAAqF,EACrL,CACL,OAAAA,CACF,EACF,EACA1B,EAAO,KAAO,SAAS7C,EAAOG,EAAc,CAC1C,OAAO,UAAW,CAChB,OAAO,KAAK,UAAUH,EAAOG,CAAY,CAC3C,CACF,EACA0C,EAAO,OAAS,SAAS7C,EAAOG,EAAc,CAC5C,OAAO,UAAW,CAChB,OAAO,KAAK,YAAYH,EAAOG,CAAY,CAC7C,CACF,EACA0C,EAAO,WAAa,SAAS7C,EAAOmD,EAAmB,CACrD,OAAO,UAAW,CAChB,OAAO,KAAK,gBAAgBnD,EAAOmD,CAAiB,CACtD,CACF,EACAN,EAAO,aAAe,SAAS7C,EAAOmD,EAAmB,CACvD,OAAO,UAAW,CAChB,OAAO,KAAK,kBAAkBnD,EAAOmD,CAAiB,CACxD,CACF,EACAN,EAAO,QAAU,SAASe,EAAa,CACrC,OAAO,UAAW,CAChB,OAAO,KAAK,aAAaA,CAAW,CACtC,CACF,EACAf,EAAO,UAAY,SAASe,EAAa,CACvC,OAAO,UAAW,CAChB,OAAO,KAAK,eAAeA,CAAW,CACxC,CACF,EACAf,EAAO,IAAMA,EAAO,UAAU,SAC9BA,EAAO,KAAOA,EAAO,UAAU,UAC/BA,EAAO,OAASA,EAAO,SAAWA,EAAO,UAAU,YACnDA,EAAO,WAAaA,EAAO,UAAU,gBACrCA,EAAO,OAASA,EAAO,UAAU,YACjCA,EAAO,MAAQA,EAAO,SAAWA,EAAO,UAAU,WAClDA,EAAO,UAAYA,EAAO,UAAU,eACpCA,EAAO,MAAQA,EAAO,UAAU,WAChCA,EAAO,QAAUA,EAAO,UAAU,aAClCA,EAAO,OAASA,EAAO,UAAU,YACjCA,EAAO,SAAWA,EAAO,UAAU,cACnCA,EAAO,SAAWA,EAAO,UAAU,cACnC,IAAI4B,GAAe,CACjB,SAAU5B,EAAO,OACjB,gBAAiBA,EAAO,OACxB,eAAgBA,EAAO,UACzB,EACAA,EAAO,UAAU,gBAAkB,UAAW,CAC5C,OAAO,KAAK,aAAaA,EAAO,WAAW,CACzC,IAAKA,EAAO,IACZ,OAAQA,EAAO,QAAQ,CACrB,eAAgBA,EAAO,QAAQ4B,EAAY,EAC3C,eAAgB5B,EAAO,WAAW,CAChC,IAAKA,EAAO,IACZ,QAASA,EAAO,QAAQ4B,EAAY,CACtC,CAAC,CACH,CAAC,CACH,CAAC,CAAC,GAAK,CAAC,CACV,EACA5B,EAAO,UAAU,iBAAmB,UAAW,CAC7C,OAAO,KAAK,aAAaA,EAAO,WAAW,CACzC,IAAKA,EAAO,IACZ,QAASA,EAAO,QAAQ,CACtB,cAAeA,EAAO,SACtB,kBAAmBA,EAAO,UAC5B,CAAC,CACH,CAAC,CAAC,GAAK,CAAC,CACV,EACAA,EAAO,UAAU,gBAAkB,SAAS6B,EAAoB,CAC9D,OAAO,KAAK,aAAa7B,EAAO,KAAKA,EAAO,QAAQ,UAAW,CAC7D,IAAM8B,EAAa,KAAK,YAAY,EACpCpJ,EAAc,SAAS,GAAKoJ,GAAcA,GAAc,EAAG,yBAA2BA,EAAa,WAAW,EAC9G,IAAMC,EAAa,KAAK,YAAY,EAC9BC,EAAsBD,EAAa,GACzC,MAAO,CACL,WAAAD,EACA,WAAAC,EACA,UAAW,KAAK,UAAU/B,EAAO,QAAQ6B,EAAmBC,CAAU,CAAC,CAAC,EACxE,iBAAkBE,EAAsB,KAAK,YAAY,EAAI,MAC/D,CACF,CAAC,CAAC,CAAC,GAAK,CAAC,CACX,EACAhC,EAAO,UAAU,2BAA6B,UAAW,CACvD,OAAO,KAAK,eAAe,UAAW,CACpC,IAAMiC,EAAe,KAAK,YAAY,EAChCC,EAAe,KAAK,YAAY,EACtC,OAAAxJ,EAAc,SAASuJ,IAAiB,GAAKC,EAAe,EAAG,6CAA6C,EAClF,KAAK,kBAAkB,CAC/C,mBAAoBlC,EAAO,SAC3B,+BAAgCA,EAAO,QACzC,CAAC,CAEH,CAAC,GAAK,CAAC,CACT,EACAA,EAAO,UAAU,oBAAsB,UAAW,CAChD,IAAMmC,EAAW,KAAK,eAChBxQ,EAAS,KAAK,YAAY,EAC1ByQ,EAAiB,CACrB,mBAAoB,KAAK,wBAAwB,CACnD,EACA,YAAK,eAAiBD,EAAWxQ,EAAS,EACnCyQ,CACT,EACApC,EAAO,UAAU,wBAA0B,UAAW,CACpD,IAAMqC,EAAkB,KAAK,eACvBC,EAAU,CACd,OAAQ,KAAK,YAAY,EACzB,iBAAkB,CAAC,EACnB,uBAAwB,CAAC,CAC3B,EACMC,EAA4B,KAAK,cAAc,EAC/CC,EAAyB,KAAK,YAAY,EAC1CC,EAA2B,KAAK,eAAeD,CAAsB,EAC3E,KAAK,eAAiBH,EAAkBE,EACxCD,EAAQ,iBAAmB,KAAK,yBAAyB,EACzD,QAASnS,EAAI,EAAGA,EAAIqS,EAAwBrS,IAAK,CAC/C,IAAMuS,EAAiBD,EAAyBtS,CAAC,EACjD,KAAK,eAAiBkS,EAAkBK,EACxCJ,EAAQ,uBAAuB,KAAK,KAAK,2BAA2B,CAAC,CACvE,CACA,OAAOA,CACT,EACAtC,EAAO,UAAU,yBAA2B,UAAW,CACrD,IAAMW,EAAY,KAAK,YAAY,EAC7BgC,EAAc,KAAK,YAAY,EACrC,OAAO,KAAK,gBAAgBA,EAAa,CACvC,WAAY3C,EAAO,WAAWW,EAAW,CACvC,WAAYX,EAAO,QACnB,UAAWA,EAAO,QAClB,SAAUA,EAAO,OACnB,CAAC,CACH,CAAC,CACH,EACAA,EAAO,UAAU,2BAA6B,UAAW,CACvD,IAAM4C,EAAY,KAAK,YAAY,EAC7BC,EAAiB,KAAK,YAAY,EAClCC,EAAgB,KAAK,gBAAgB,EACrCC,EAAmBD,EAAc,OAKvC,MAJiB,CACf,cAAAA,EACA,UAAWF,GAAaG,EAAmB,KAAK,eAAeH,EAAWC,EAAgBE,CAAgB,EAAI,CAAC,CACjH,CAEF,EACA/C,EAAO,UAAU,sBAAwB,UAAW,CAClD,IAAM0B,EAAS,KAAK,UAAU,EACxBsB,EAAc,KAAK,UAAU,EAC7BC,EAAM,CAAC,EACTC,EAAW,EACf,OAAQxB,EAAQ,CACd,IAAK,GACHwB,EAAW,KAAK,YAAY,EAC5B,MACF,IAAK,GACHA,EAAW,KAAK,WAAW,EAC3B,MACF,QACE,QAAQ,MAAM,uCAAuCxB,CAAM,EAAE,CACjE,CACA,GAAI,CAACwB,EAAU,MAAO,CACpB,OAAAxB,EACA,YAAAsB,CACF,EACA,IAAMG,GAAYH,EAAcjD,GAAM,4BAA8B,EAC9DqD,IAAcJ,EAAcjD,GAAM,sBAAwB,GAAK,EACrE,QAASsD,EAAI,EAAGA,EAAIH,EAAUG,IAAK,CACjC,IAAIC,EACJ,GAAIF,IAAc,EAChBE,EAAQ,KAAK,UAAU,UACdF,IAAc,EACvBE,EAAQ,KAAK,YAAY,UAChBF,IAAc,EACvBE,EAAQ,KAAK,YAAY,UAChBF,IAAc,EACvBE,EAAQ,KAAK,WAAW,MAExB,OAAM,IAAI,MAAM,yBAAyBF,CAAS,EAAE,EAEtD,IAAMG,EAAaD,GAASH,EACtBK,EAAaF,GAAS,GAAKH,GAAY,EAC7CF,EAAI,KAAK,CAAE,WAAAM,EAAY,WAAAC,CAAW,CAAC,CACrC,CACA,MAAO,CACL,OAAA9B,EACA,YAAAsB,EACA,IAAAC,CACF,CACF,EACAjD,EAAO,UAAU,eAAiB,SAAS4C,EAAWC,EAAgBE,EAAkB,CACtF,IAAM9H,EAAS,MAAM,KAAK,CAAE,OAAQ2H,CAAU,EAAG,IAAM,CAAC,CAAC,EACnDa,EAAWZ,EAAiB9C,GAAM,WAClC2D,EAAYb,EAAiB9C,GAAM,sBACzC,GAAI2D,EAAYX,EACd,MAAM,MAAM,0DAA0D,EAExE,IAAMY,GAAcF,EAAW,KAAK,UAAY,KAAK,YAAY,KAAK,IAAI,EACpEG,GAAcH,EAAW,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC1E,QAAStT,EAAI,EAAGA,EAAIyS,EAAWzS,IAC7B,QAAS2J,EAAI,EAAGA,EAAIiJ,EAAkBjJ,IAChCA,EAAI4J,EACNzI,EAAO9K,CAAC,EAAE,KAAKwT,EAAW,CAAC,EAE3B1I,EAAO9K,CAAC,EAAE,KAAKyT,EAAW,CAAC,EAIjC,OAAO3I,CACT,EACA+E,EAAO,UAAU,6BAA+B,SAASW,EAAWkD,EAAQC,EAAQ,CAClF,IAAMC,EAAa,KAAK,YAAY,EAE9BC,EADQ,KAAK,YAAY,EACG,EAC5BC,EAAgC,KAAK,cAAc,EACnDC,GAAeF,EAAoB,KAAK,WAAa,KAAK,aAAa,KAAK,IAAI,EAChFG,EAAkB,CAAC,EACrBC,EAAgBF,EAAY,EAC3BF,IAAmBI,GAAiB,GACzC,IAAIC,EACJ,QAASlU,EAAI,EAAGA,EAAI4T,EAAY5T,IAAK,CACnCkU,EAAaH,EAAY,EACpBF,IAAmBK,GAAc,GACtC,IAAM1S,EAAS0S,EAAaD,EAC5BD,EAAgBhU,CAAC,EAAIwB,EAAS,KAAK,yBACjCsS,EAAgCG,EAChCzD,EACAkD,EACAC,EACA3T,CACF,EAAI,OACJiU,EAAgBC,CAClB,CACA,OAAOF,CACT,EACAnE,EAAO,UAAU,yBAA2B,SAASsE,EAAa3D,EAAWkD,EAAQC,EAAQS,EAAY,CACvG,IAAMjD,EAAiB,KAAK,eAC5B,KAAK,eAAiBgD,EAClBT,IAAW,SACb,KAAK,gBAAkB,GAEzB,IAAMW,EAAsB,KAAK,YAAY,EACvCC,EAAkB,CAAC,EAAED,EAAsBzE,GAAM,sBACjD5C,EAAQqH,EAAsBzE,GAAM,WACtC2E,EAAa,KAAK,cAAc,EAC9BC,EAAU,CAAC,EACbC,EAAe,CAAC,EACpB,QAASC,EAAI,EAAGA,EAAI1H,EAAO0H,IAAK,CAC9B,IAAMC,EAAa,KAAK,0BAA0BnE,EAAWkD,CAAM,EACnEc,EAAQ,KAAKG,CAAU,CACzB,CACI,KAAK,iBAAmBR,EAAcI,IACxC,QAAQ,KAAK,qEAAqEJ,EAAcI,CAAU,cAAc,KAAK,cAAc,EAAE,EAC7I,KAAK,eAAiBJ,EAAcI,GAElCD,IACFG,EAAe,KAAK,wBAAwB,GAE9C,IAAIG,EAAuB,KAAK,eAChC,QAASF,EAAI,EAAGA,EAAI1H,EAAO0H,IAAK,CAC9B,IAAMG,EAASL,EAAQE,CAAC,EACxBG,EAAO,cAAgB,CAAC,EACxB,KAAK,eAAiBD,EAClBlB,IAAW,QAAU,CAACmB,EAAO,WAC/B,QAAQ,KAAK,iFAAiF,EAE5FA,EAAO,MAAM,sBACfA,EAAO,cAAgB,KAAK,wBAAwB,GAEtD,OAAOA,EAAO,MACd,IAAMC,EAAe,KAAK,OACpBC,EAAuB,KAAK,eAC5BC,EAAgBC,GAAiB,CACrC,IAAIC,EACAC,GACEC,GAAc,IAAM,CACxB,IAAIC,GAAc,EAClB,GAAI3B,IAAW,QAEb,GADA2B,GAAcR,EAAO,cAAc,QAAUJ,EAAa,OACtD,CAACY,GAAa,CAChB,IAAMC,GAAQ3B,EAAO,IAAIS,CAAU,EACnCkB,GAAM,KACND,GAAcC,GAAM,OAAO,OAC3BD,IAAe,CACjB,OACS3B,IAAW,SACpB2B,GAAc1B,EAAO,QAEvB,KAAK,OAASmB,EACd,KAAK,eAAiBC,EACtBG,EAAU,KAAK,kBAAkBG,EAAW,EACxC3B,IAAW,SACbyB,GAAW,KAAK,kBAAkBE,EAAW,EAEjD,EACA,MAAO,CACL,aAAc,GACd,IAAK,UAAW,CACd,OAAIH,IAAY,QAAQE,GAAY,EAC7BH,IAAiB,UAAYE,GAAWD,CACjD,EACA,IAAK,SAASpK,GAAQ,CAChBoK,IAAY,QAAQE,GAAY,EAChCH,IAAiB,UACnBE,GAAWrK,GAEXoK,EAAUpK,EAEd,CACF,CACF,EACA,OAAO,eAAe+J,EAAQ,SAAUG,EAAa,KAAK,KAAM,QAAQ,CAAC,EACrEtB,IAAW,QACb,OAAO,eAAemB,EAAQ,UAAWG,EAAa,KAAK,KAAM,SAAS,CAAC,EAE7EJ,GAAwBC,EAAO,kBAC/B,OAAOA,EAAO,iBAChB,CACA,KAAK,eAAiB1D,EACtB,IAAMjH,EAAS,CACb,QAAAsK,CACF,EACA,OAAAtK,EAAO,aAAeuK,EACfvK,CACT,EACA2F,EAAO,UAAU,0BAA4B,SAASW,EAAWkD,EAAQ,CACvE,IAAM6B,EAAoB,KAAK,YAAY,EACrCC,EAAa,KAAK,YAAY,EAC9BC,EAAoB,CAAC,EAAED,EAAa5F,GAAM,qBAC1C8F,EAAqB,CAAC,EAAEF,EAAa5F,GAAM,qBAC3C+F,EAAsB,CAAC,EAAEH,EAAa5F,GAAM,uBAC5CgG,EAA0BH,EAAoB,OAASD,EAAa5F,GAAM,iBAC1EiG,EAAYJ,EAAoB,KAAK,kBAAkB,EAAGjF,CAAS,EAAE,CAAC,EAAI,OAC1EsF,EAAyBJ,EAAqB,KAAK,kBAAkB,EAAGlF,CAAS,EAAE,CAAC,EAAI,OACxFuF,EAAuBL,EAAqB,KAAK,kBAAkB,EAAGlF,CAAS,EAAE,CAAC,EAAI,OACtFtG,EAAS,CACb,kBAAAqL,EACA,UAAAM,EACA,uBAAAC,EACA,qBAAAC,EACA,MAAO,CACL,kBAAAN,EACA,mBAAAC,EACA,oBAAAC,CACF,CACF,EACA,OAAIjC,IAAW,SACbxJ,EAAO,wBAA0B0L,GAE5B1L,CACT,EACA2F,EAAO,UAAU,wBAA0B,UAAW,CACpD,IAAMmG,EAAa,KAAK,UAAU,EAC5BC,EAAS,CAAC,EACZC,EAAkBF,EACtB,GAAIA,GAAc,IAAK,CACrB,IAAMG,EAAa,KAAK,UAAU,EAClCD,GAAmBF,EAAapG,GAAM,uBAAyB,EAAIuG,CACrE,CACA,IAAIC,EAAY,EAChB,KAAOH,EAAO,OAASC,GAAiB,CACtC,IAAMG,EAAc,KAAK,UAAU,EAC7BC,EAAkB,CAAC,EAAED,EAAczG,GAAM,kBAC3C2G,GAAYF,EAAczG,GAAM,sBAAwB,EAC5D,QAAS5P,EAAI,EAAGA,EAAIuW,GAAYN,EAAO,OAASC,EAAiBlW,IAAK,CACpE,IAAIwW,EACAF,EACFE,EAAa,KAAK,YAAY,EAE9BA,EAAa,KAAK,UAAU,EAE9BJ,EAAYA,EAAYI,EACxBP,EAAO,KAAKG,CAAS,CACvB,CACF,CACA,OAAOH,CACT,EACApG,EAAO,UAAU,kBAAoB,SAAS4G,EAAe,CAC3D,IAAM3L,EAAS,CAAC,EAChB,KAAOA,EAAO,OAAS2L,GAAe,CACpC,IAAMJ,EAAc,KAAK,UAAU,EAC7BK,EAAW,CAAC,EAAEL,EAAczG,GAAM,iBAClC+G,EAAa,CAAC,EAAEN,EAAczG,GAAM,kBACpC2G,GAAYF,EAAczG,GAAM,sBAAwB,EAC9D,QAAS,EAAI,EAAG,EAAI2G,GAAYzL,EAAO,OAAS2L,EAAe,IACzDC,EACF5L,EAAO,KAAK,CAAC,EACJ6L,EACT7L,EAAO,KAAK,KAAK,WAAW,CAAC,EAE7BA,EAAO,KAAK,KAAK,UAAU,CAAC,CAGlC,CACA,OAAOA,CACT,EACA,IAAItM,EAAgB,CAClB,QAAAoQ,GACA,SAAUA,GACV,UAAAC,GACA,UAAWA,GACX,SAAAC,GACA,UAAAC,GACA,SAAAC,GACA,SAAAE,GACA,OAAAG,GACA,UAAAC,GACA,SAAAC,GACA,cAAAG,GACA,OAAAG,CACF,EAGI+G,GAAiB,CACnB,YAEA,aAEA,gBAEA,WAEA,WAEA,UAEA,iBAEA,YAEA,eAEA,WAEA,cAEA,kBAEA,cAEA,UAEA,aAEA,WAEA,kBAEA,qBAEA,qBAEA,aAEA,yBAEA,YAEA,cAEF,EACIC,GAAe,CACjB,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,UACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,QACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,UACJ,GAAI,UACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,QACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,UACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,aACL,IAAK,KACL,IAAK,KACL,IAAK,IACP,EACIC,GAAsB,CACxB,EAAG,EAEH,EAAG,EAEH,EAAG,EAEH,EAAG,EAEH,EAAG,EAEH,EAAG,EAEH,EAAG,EAEH,EAAG,EAEH,EAAG,EAEH,EAAG,EAEH,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,GAEJ,GAAI,EAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,GAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,GAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,GAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,GAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,GAAI,EAEJ,IAAK,EAEL,IAAK,EAEL,IAAK,EAEL,IAAK,EAEL,IAAK,EAEL,IAAK,EAEL,IAAK,EAEL,IAAK,EAEL,IAAK,EAEL,IAAK,GAEL,IAAK,EAEL,IAAK,EAEL,IAAK,EAEL,IAAK,EAEL,IAAK,EAEL,IAAK,GAEL,IAAK,EAEL,IAAK,EAEL,IAAK,EAEL,IAAK,EAEL,IAAK,EAEL,IAAK,EAEL,IAAK,EAEL,IAAK,CAEP,EACIC,GAAmB,CACrB,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,KAAM,QACN,MAAO,QACP,KAAM,KACN,KAAM,QACN,MAAO,QACP,MAAO,QACP,MAAO,QACP,KAAM,QACN,KAAM,MACN,KAAM,QACN,MAAO,QACP,KAAM,QACN,MAAO,QACP,KAAM,MACN,MAAO,QACP,KAAM,QACN,KAAM,KACN,KAAM,KACN,KAAM,UACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,QACN,KAAM,UACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,QACN,KAAM,QACN,KAAM,KACN,KAAM,QACN,KAAM,QACN,KAAM,KACN,KAAM,KACN,KAAM,QACN,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,KAAM,QACN,KAAM,KACN,KAAM,QACN,MAAO,QACP,KAAM,QACN,KAAM,SACN,MAAO,QACP,KAAM,QACN,KAAM,QACN,MAAO,QACP,KAAM,QACN,MAAO,QACP,MAAO,QACP,KAAM,QACN,MAAO,QACP,KAAM,QACN,KAAM,KACN,MAAO,QACP,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,KAAM,QACN,KAAM,QACN,KAAM,KACN,KAAM,QACN,KAAM,QACN,KAAM,QACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,QACN,KAAM,KACN,KAAM,QACN,KAAM,QACN,KAAM,QACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,UACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,QACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,KAAM,KACN,KAAM,QACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,KAAM,QACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,QACN,KAAM,KACN,KAAM,QACN,KAAM,QACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,SACN,KAAM,MACN,KAAM,QACN,KAAM,KACN,KAAM,QACN,KAAM,MACN,KAAM,SACN,KAAM,MACN,KAAM,KACN,KAAM,aACN,KAAM,KACN,KAAM,aACN,KAAM,UACN,KAAM,MACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,QACP,MAAO,QACP,MAAO,QACP,KAAM,QACN,KAAM,QACN,KAAM,QACN,MAAO,QACP,MAAO,QACP,KAAM,QACN,MAAO,QACP,KAAM,QACN,MAAO,QACP,KAAM,QACN,MAAO,QACP,MAAO,QA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F,EAAa,OAAS,EACtBrd,EAAE,aAAe,GAAiBA,EAAE,YACpCA,EAAE,OAAO,KACP,CAAE,KAAM,eAAgB,KAAM,SAAU,MAAO,EAAG,EAClD,CAAE,KAAM,iBAAkB,KAAM,SAAU,MAAO,CAAE,EACnD,CAAE,KAAM,eAAgB,KAAM,QAAS,MAAOud,CAAa,EAC3D,CAAE,KAAM,iBAAkB,KAAM,QAAS,MAAO,CAAE,EAClD,CAAE,KAAM,gBAAiB,KAAM,QAAS,MAAOF,EAAa,OAAS,CAAE,CACxE,EACD,QAAS9P,EAAK,EAAGA,EAAK8P,EAAa,OAAQ9P,IACzCvN,EAAE,OAAO,KAAKqd,EAAa9P,CAAE,CAAC,CAElC,CACA,OAAOvN,CACT,CACA,IAAIwd,GAAe,CAAE,MAAO1B,GAAgB,KAAMc,EAAc,EAG5Da,GAAqB,CACvB,UACA,QACA,SACA,WACA,aACA,SACA,UACA,YACA,aACA,YACA,aACA,WACA,OACA,QACA,SACA,SACA,QACA,OACA,MACA,MACA,QACA,OACA,OACA,MACA,QACA,QACA,OACA,QACA,YACA,OACA,QACA,UACA,WACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,cACA,YACA,eACA,cACA,aACA,YACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,YACA,MACA,aACA,aACA,aACA,OACA,WACA,WACA,MACA,SACA,UACA,WACA,cACA,eACA,gBACA,gBACA,iBACA,KACA,KACA,SACA,SACA,YACA,iBACA,YACA,SACA,iBACA,eACA,gBACA,iBACA,WACA,cACA,eACA,QACA,QACA,aACA,QACA,SACA,QACA,YACA,WACA,OACA,UACA,eACA,SACA,QACA,SACA,KACA,cACA,SACA,SACA,KACA,eACA,KACA,WACA,SACA,SACA,KACA,aACA,cACA,aACA,KACA,YACA,MACA,UACA,YACA,QACA,aACA,SACA,YACA,SACA,QACA,gBACA,cACA,aACA,QACA,MACA,WACA,gBACA,YACA,SACA,cACA,YACA,SACA,QACA,SACA,WACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,YACA,SACA,SACA,cACA,YACA,SACA,QACA,SACA,WACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,YACA,SACA,cACA,oBACA,iBACA,iBACA,iBACA,aACA,oBACA,qBACA,SACA,iBACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,gBACA,sBACA,iBACA,gBACA,YACA,YACA,eACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,KACA,MACA,MACA,oBACA,qBACA,kBACA,iBACA,aACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,gBACA,YACA,SACA,aACA,kBACA,eACA,cACA,cACA,cACA,gBACA,aACA,aACA,iBACA,cACA,aACA,iBACA,cACA,YACA,eACA,oBACA,YACA,eACA,cACA,eACA,WACA,YACA,eACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,iBACA,iBACA,gBACA,cACA,cACA,mBACA,cACA,iBACA,aACA,UACA,gBACA,cACA,cACA,mBACA,iBACA,cACA,cACA,mBACA,iBACA,WACA,cACA,cACA,cACA,mBACA,cACA,iBACA,UACA,cACA,cACA,cACA,mBACA,iBACA,cACA,aACA,iBACA,UACA,UACA,UACA,UACA,QACA,OACA,OACA,QACA,SACA,UACA,QACA,UACF,EACIC,GAAqB,CACvB,UACA,QACA,SACA,WACA,aACA,SACA,UACA,YACA,aACA,YACA,aACA,WACA,OACA,QACA,SACA,SACA,QACA,OACA,MACA,MACA,QACA,OACA,OACA,MACA,QACA,QACA,OACA,QACA,YACA,OACA,QACA,UACA,WACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,cACA,YACA,eACA,cACA,aACA,YACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,YACA,MACA,aACA,aACA,aACA,OACA,WACA,WACA,MACA,SACA,UACA,WACA,cACA,eACA,gBACA,gBACA,iBACA,KACA,KACA,SACA,SACA,YACA,iBACA,YACA,SACA,iBACA,eACA,gBACA,iBACA,WACA,cACA,eACA,QACA,QACA,aACA,QACA,SACA,QACA,YACA,WACA,OACA,UACA,eACA,SACA,QACA,SACA,KACA,cACA,SACA,SACA,KACA,eACA,KACA,WACA,SACA,SACA,KACA,aACA,cACA,aACA,KACA,YACA,MACA,UACA,YACA,QACA,aACA,SACA,YACA,SACA,QACA,gBACA,cACA,aACA,QACA,MACA,WACA,gBACA,YACA,SACA,cACA,YACA,SACA,QACA,SACA,WACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,YACA,SACA,SACA,cACA,YACA,SACA,QACA,SACA,WACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,YACA,QACF,EACIC,GAAoB,CACtB,UACA,QACA,cACA,oBACA,iBACA,iBACA,iBACA,aACA,oBACA,qBACA,iBACA,iBACA,QACA,SACA,SACA,WACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,QACA,YACA,gBACA,sBACA,iBACA,gBACA,YACA,YACA,eACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,KACA,KACA,KACA,MACA,MACA,oBACA,qBACA,kBACA,iBACA,aACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,gBACA,YACA,SACA,aACA,kBACA,eACA,cACA,cACA,cACA,gBACA,aACA,aACA,iBACA,cACA,aACA,iBACA,cACA,YACA,eACA,aACA,UACA,gBACA,oBACA,YACA,eACA,cACA,eACA,WACA,YACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,iBACA,iBACA,gBACA,cACA,cACA,mBACA,cACA,iBACA,aACA,UACA,gBACA,cACA,cACA,mBACA,iBACA,cACA,cACA,mBACA,iBACA,WACA,cACA,cACA,cACA,mBACA,cACA,iBACA,UACA,cACA,cACA,cACA,mBACA,iBACA,cACA,aACA,gBACF,EACIC,GAAyB,CAC3B,UACA,QACA,iBACA,iBACA,oBACA,qBACA,iBACA,iBACA,QACA,SACA,SACA,WACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,QACA,YACA,gBACA,sBACA,iBACA,YACA,YACA,eACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,KACA,KACA,KACA,MACA,MACA,oBACA,qBACA,iBACA,gBACA,YACA,SACA,eACA,aACA,iBACA,aACA,UACA,gBACA,YACA,eACA,cACA,eACA,WACA,YACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,iBACA,iBACA,eACF,EACIC,GAAsB,CACxB,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,QACA,SACA,WACA,aACA,SACA,UACA,YACA,aACA,YACA,aACA,WACA,OACA,QACA,SACA,SACA,QACA,OACA,MACA,MACA,QACA,OACA,OACA,MACA,QACA,QACA,OACA,QACA,YACA,OACA,QACA,UACA,WACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,cACA,YACA,eACA,cACA,aACA,YACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,YACA,MACA,aACA,aACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,aACA,OACA,WACA,WACA,MACA,SACA,UACA,WACA,cACA,eACA,gBACA,gBACA,iBACA,KACA,KACA,GACA,SACA,SACA,YACA,iBACA,GACA,YACA,SACA,iBACA,eACA,gBACA,iBACA,WACA,cACA,GACA,eACA,GACA,QACA,QACA,aACA,QACA,SACA,QACA,YACA,WACA,GACA,OACA,UACA,GACA,eACA,SACA,QACA,SACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,KACA,GACA,cACA,GACA,GACA,GACA,GACA,SACA,SACA,KACA,eACA,GACA,GACA,GACA,GACA,GACA,KACA,GACA,GACA,GACA,WACA,GACA,GACA,SACA,SACA,KACA,YACF,EACIC,GAAoB,CACtB,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,QACA,cACA,oBACA,GACA,iBACA,iBACA,iBACA,aACA,oBACA,qBACA,iBACA,iBACA,QACA,SACA,SACA,WACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,QACA,YACA,gBACA,sBACA,iBACA,gBACA,GACA,YACA,YACA,eACA,YACA,YACA,GACA,GACA,YACA,GACA,GACA,YACA,YACA,YACA,YACA,GACA,GACA,YACA,YACA,YACA,GACA,KACA,KACA,KACA,MACA,MACA,oBACA,GACA,qBACA,kBACA,iBACA,aACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,gBACA,YACA,SACA,aACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,kBACA,eACA,cACA,GACA,GACA,cACA,cACA,gBACA,aACA,aACA,GACA,iBACA,GACA,GACA,cACA,GACA,GACA,aACA,iBACA,GACA,GACA,cACA,YACA,eACA,GACA,GACA,GACA,aACA,UACA,gBACA,oBACA,YACA,eACA,cACA,eACA,WACA,YACA,GACA,GACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,iBACA,iBACA,gBACA,cACA,cACA,mBACA,cACA,iBACA,aACA,UACA,gBACA,cACA,cACA,mBACA,iBACA,cACA,cACA,mBACA,iBACA,WACA,cACA,cACA,cACA,mBACA,cACA,iBACA,UACA,cACA,cACA,cACA,mBACA,iBACA,cACA,aACA,gBACF,EACIC,GAAgB,CAClB,UACA,QACA,mBACA,QACA,SACA,WACA,aACA,SACA,UACA,YACA,cACA,YACA,aACA,WACA,OACA,QACA,SACA,SACA,QACA,OACA,MACA,MACA,QACA,OACA,OACA,MACA,QACA,QACA,OACA,QACA,YACA,OACA,QACA,UACA,WACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,cACA,YACA,eACA,cACA,aACA,QACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,YACA,MACA,aACA,aACA,YACA,QACA,WACA,SACA,SACA,YACA,YACA,SACA,SACA,cACA,YACA,SACA,QACA,WACA,SACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,OACA,WACA,UACA,SACA,YACA,aACA,aACA,YACA,YACA,QACA,WACA,WACA,KACA,SACA,WACA,YACA,YACA,eACA,MACA,KACA,cACA,YACA,UACA,KACA,WACA,cACA,eACA,QACA,KACA,SACA,eACA,aACA,aACA,UACA,SACA,cACA,QACA,gBACA,iBACA,WACA,mBACA,SACA,SACA,SACA,KACA,KACA,SACA,SACA,eACA,gBACA,YACA,aACA,SACA,UACA,YACA,YACA,WACA,WACA,gBACA,iBACA,KACA,KACA,YACA,iBACA,iBACA,eACA,cACA,cACA,cACA,SACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,cACA,QACA,SACA,SACA,cACA,SACA,WACA,aACA,QACA,SACA,QACA,YACA,OACA,UACA,eACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,YACA,MACA,MACA,SACA,SACA,QACA,QACA,QACA,WACA,cACA,cACA,gBACA,UACA,aACA,gBACA,QACA,SACA,SACA,aACA,WACA,WACA,SACA,SACA,SACA,SACA,QACF,EACA,SAASC,GAAgBC,EAAM,CAC7B,KAAK,KAAOA,CACd,CACAD,GAAgB,UAAU,iBAAmB,SAAS9a,EAAG,CACvD,IAAMoZ,EAAOpZ,EAAE,YAAY,CAAC,EACtBkQ,EAAS,KAAK,KAAK,OACzB,GAAIA,EACF,QAAS3T,EAAI,EAAGA,EAAI2T,EAAO,OAAQ3T,GAAK,EAAG,CACzC,IAAMsV,EAAQ3B,EAAO,IAAI3T,CAAC,EAC1B,QAAS2J,EAAI,EAAGA,EAAI2L,EAAM,SAAS,OAAQ3L,GAAK,EAC9C,GAAI2L,EAAM,SAAS3L,CAAC,IAAMkT,EACxB,OAAO7c,CAGb,CAEF,OAAO,IACT,EACA,SAASye,GAAa9D,EAAM,CAC1B,KAAK,KAAOA,CACd,CACA8D,GAAa,UAAU,iBAAmB,SAAShb,EAAG,CACpD,OAAO,KAAK,KAAK,cAAcA,EAAE,YAAY,CAAC,CAAC,GAAK,CACtD,EACA,SAASib,GAAY1U,EAAU2U,EAAS,CACtC,KAAK,SAAW3U,EAChB,KAAK,QAAU2U,CACjB,CACAD,GAAY,UAAU,iBAAmB,SAAS5W,EAAG,CACnD,IAAM+U,EAAO/U,EAAE,YAAY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,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,KAAM,EAE1B,CAAE,MAAO,MAAO,IAAK,KAAM,EAE3B,CAAE,MAAO,MAAO,IAAK,KAAM,EAE3B,CAAE,MAAO,MAAO,IAAK,KAAM,EAE3B,CAAE,MAAO,MAAO,IAAK,KAAM,EAE3B,CAAE,MAAO,MAAO,IAAK,KAAM,EAE3B,CAAE,MAAO,MAAO,IAAK,KAAM,EAE3B,CAAE,MAAO,MAAO,IAAK,KAAM,EAE3B,CAAE,MAAO,MAAO,IAAK,KAAM,E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K,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,O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",
|
|
5
|
+
"mappings": "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CN,MAAO,QACP,KAAM,QACN,MAAO,QACP,MAAO,QACP,KAAM,QACN,MAAO,QACP,KAAM,QACN,KAAM,KACN,MAAO,QACP,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,KAAM,QACN,KAAM,QACN,KAAM,KACN,KAAM,QACN,KAAM,QACN,KAAM,QACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,QACN,KAAM,KACN,KAAM,QACN,KAAM,QACN,KAAM,QACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,UACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,QACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,KAAM,KACN,KAAM,QACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,KAAM,QACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,QACN,KAAM,KACN,KAAM,QACN,KAAM,QACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,SACN,KAAM,MACN,KAAM,QACN,KAAM,KACN,KAAM,QACN,KAAM,MACN,KAAM,SACN,KAAM,MACN,KAAM,KACN,KAAM,aACN,KAAM,KACN,KAAM,aACN,KAAM,UACN,KAAM,MACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,QACP,MAAO,QACP,MAAO,QACP,KAAM,QACN,KAAM,QACN,KAAM,QACN,MAAO,QACP,MAAO,QACP,KAAM,QACN,MAAO,QACP,KAAM,QACN,MAAO,QACP,KAAM,QACN,MAAO,QACP,MAAO,QA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F,EAAa,OAAS,EACtBrd,EAAE,aAAe,GAAiBA,EAAE,YACpCA,EAAE,OAAO,KACP,CAAE,KAAM,eAAgB,KAAM,SAAU,MAAO,EAAG,EAClD,CAAE,KAAM,iBAAkB,KAAM,SAAU,MAAO,CAAE,EACnD,CAAE,KAAM,eAAgB,KAAM,QAAS,MAAOud,CAAa,EAC3D,CAAE,KAAM,iBAAkB,KAAM,QAAS,MAAO,CAAE,EAClD,CAAE,KAAM,gBAAiB,KAAM,QAAS,MAAOF,EAAa,OAAS,CAAE,CACxE,EACD,QAAS9P,EAAK,EAAGA,EAAK8P,EAAa,OAAQ9P,IACzCvN,EAAE,OAAO,KAAKqd,EAAa9P,CAAE,CAAC,CAElC,CACA,OAAOvN,CACT,CACA,IAAIwd,GAAe,CAAE,MAAO1B,GAAgB,KAAMc,EAAc,EAG5Da,GAAqB,CACvB,UACA,QACA,SACA,WACA,aACA,SACA,UACA,YACA,aACA,YACA,aACA,WACA,OACA,QACA,SACA,SACA,QACA,OACA,MACA,MACA,QACA,OACA,OACA,MACA,QACA,QACA,OACA,QACA,YACA,OACA,QACA,UACA,WACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,cACA,YACA,eACA,cACA,aACA,YACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,YACA,MACA,aACA,aACA,aACA,OACA,WACA,WACA,MACA,SACA,UACA,WACA,cACA,eACA,gBACA,gBACA,iBACA,KACA,KACA,SACA,SACA,YACA,iBACA,YACA,SACA,iBACA,eACA,gBACA,iBACA,WACA,cACA,eACA,QACA,QACA,aACA,QACA,SACA,QACA,YACA,WACA,OACA,UACA,eACA,SACA,QACA,SACA,KACA,cACA,SACA,SACA,KACA,eACA,KACA,WACA,SACA,SACA,KACA,aACA,cACA,aACA,KACA,YACA,MACA,UACA,YACA,QACA,aACA,SACA,YACA,SACA,QACA,gBACA,cACA,aACA,QACA,MACA,WACA,gBACA,YACA,SACA,cACA,YACA,SACA,QACA,SACA,WACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,YACA,SACA,SACA,cACA,YACA,SACA,QACA,SACA,WACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,YACA,SACA,cACA,oBACA,iBACA,iBACA,iBACA,aACA,oBACA,qBACA,SACA,iBACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,gBACA,sBACA,iBACA,gBACA,YACA,YACA,eACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,KACA,MACA,MACA,oBACA,qBACA,kBACA,iBACA,aACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,gBACA,YACA,SACA,aACA,kBACA,eACA,cACA,cACA,cACA,gBACA,aACA,aACA,iBACA,cACA,aACA,iBACA,cACA,YACA,eACA,oBACA,YACA,eACA,cACA,eACA,WACA,YACA,eACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,iBACA,iBACA,gBACA,cACA,cACA,mBACA,cACA,iBACA,aACA,UACA,gBACA,cACA,cACA,mBACA,iBACA,cACA,cACA,mBACA,iBACA,WACA,cACA,cACA,cACA,mBACA,cACA,iBACA,UACA,cACA,cACA,cACA,mBACA,iBACA,cACA,aACA,iBACA,UACA,UACA,UACA,UACA,QACA,OACA,OACA,QACA,SACA,UACA,QACA,UACF,EACIC,GAAqB,CACvB,UACA,QACA,SACA,WACA,aACA,SACA,UACA,YACA,aACA,YACA,aACA,WACA,OACA,QACA,SACA,SACA,QACA,OACA,MACA,MACA,QACA,OACA,OACA,MACA,QACA,QACA,OACA,QACA,YACA,OACA,QACA,UACA,WACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,cACA,YACA,eACA,cACA,aACA,YACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,YACA,MACA,aACA,aACA,aACA,OACA,WACA,WACA,MACA,SACA,UACA,WACA,cACA,eACA,gBACA,gBACA,iBACA,KACA,KACA,SACA,SACA,YACA,iBACA,YACA,SACA,iBACA,eACA,gBACA,iBACA,WACA,cACA,eACA,QACA,QACA,aACA,QACA,SACA,QACA,YACA,WACA,OACA,UACA,eACA,SACA,QACA,SACA,KACA,cACA,SACA,SACA,KACA,eACA,KACA,WACA,SACA,SACA,KACA,aACA,cACA,aACA,KACA,YACA,MACA,UACA,YACA,QACA,aACA,SACA,YACA,SACA,QACA,gBACA,cACA,aACA,QACA,MACA,WACA,gBACA,YACA,SACA,cACA,YACA,SACA,QACA,SACA,WACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,YACA,SACA,SACA,cACA,YACA,SACA,QACA,SACA,WACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,YACA,QACF,EACIC,GAAoB,CACtB,UACA,QACA,cACA,oBACA,iBACA,iBACA,iBACA,aACA,oBACA,qBACA,iBACA,iBACA,QACA,SACA,SACA,WACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,QACA,YACA,gBACA,sBACA,iBACA,gBACA,YACA,YACA,eACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,KACA,KACA,KACA,MACA,MACA,oBACA,qBACA,kBACA,iBACA,aACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,gBACA,YACA,SACA,aACA,kBACA,eACA,cACA,cACA,cACA,gBACA,aACA,aACA,iBACA,cACA,aACA,iBACA,cACA,YACA,eACA,aACA,UACA,gBACA,oBACA,YACA,eACA,cACA,eACA,WACA,YACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,iBACA,iBACA,gBACA,cACA,cACA,mBACA,cACA,iBACA,aACA,UACA,gBACA,cACA,cACA,mBACA,iBACA,cACA,cACA,mBACA,iBACA,WACA,cACA,cACA,cACA,mBACA,cACA,iBACA,UACA,cACA,cACA,cACA,mBACA,iBACA,cACA,aACA,gBACF,EACIC,GAAyB,CAC3B,UACA,QACA,iBACA,iBACA,oBACA,qBACA,iBACA,iBACA,QACA,SACA,SACA,WACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,QACA,YACA,gBACA,sBACA,iBACA,YACA,YACA,eACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,KACA,KACA,KACA,MACA,MACA,oBACA,qBACA,iBACA,gBACA,YACA,SACA,eACA,aACA,iBACA,aACA,UACA,gBACA,YACA,eACA,cACA,eACA,WACA,YACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,iBACA,iBACA,eACF,EACIC,GAAsB,CACxB,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,QACA,SACA,WACA,aACA,SACA,UACA,YACA,aACA,YACA,aACA,WACA,OACA,QACA,SACA,SACA,QACA,OACA,MACA,MACA,QACA,OACA,OACA,MACA,QACA,QACA,OACA,QACA,YACA,OACA,QACA,UACA,WACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,cACA,YACA,eACA,cACA,aACA,YACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,YACA,MACA,aACA,aACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,aACA,OACA,WACA,WACA,MACA,SACA,UACA,WACA,cACA,eACA,gBACA,gBACA,iBACA,KACA,KACA,GACA,SACA,SACA,YACA,iBACA,GACA,YACA,SACA,iBACA,eACA,gBACA,iBACA,WACA,cACA,GACA,eACA,GACA,QACA,QACA,aACA,QACA,SACA,QACA,YACA,WACA,GACA,OACA,UACA,GACA,eACA,SACA,QACA,SACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,KACA,GACA,cACA,GACA,GACA,GACA,GACA,SACA,SACA,KACA,eACA,GACA,GACA,GACA,GACA,GACA,KACA,GACA,GACA,GACA,WACA,GACA,GACA,SACA,SACA,KACA,YACF,EACIC,GAAoB,CACtB,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,QACA,cACA,oBACA,GACA,iBACA,iBACA,iBACA,aACA,oBACA,qBACA,iBACA,iBACA,QACA,SACA,SACA,WACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,QACA,YACA,gBACA,sBACA,iBACA,gBACA,GACA,YACA,YACA,eACA,YACA,YACA,GACA,GACA,YACA,GACA,GACA,YACA,YACA,YACA,YACA,GACA,GACA,YACA,YACA,YACA,GACA,KACA,KACA,KACA,MACA,MACA,oBACA,GACA,qBACA,kBACA,iBACA,aACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,gBACA,YACA,SACA,aACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,kBACA,eACA,cACA,GACA,GACA,cACA,cACA,gBACA,aACA,aACA,GACA,iBACA,GACA,GACA,cACA,GACA,GACA,aACA,iBACA,GACA,GACA,cACA,YACA,eACA,GACA,GACA,GACA,aACA,UACA,gBACA,oBACA,YACA,eACA,cACA,eACA,WACA,YACA,GACA,GACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,iBACA,iBACA,gBACA,cACA,cACA,mBACA,cACA,iBACA,aACA,UACA,gBACA,cACA,cACA,mBACA,iBACA,cACA,cACA,mBACA,iBACA,WACA,cACA,cACA,cACA,mBACA,cACA,iBACA,UACA,cACA,cACA,cACA,mBACA,iBACA,cACA,aACA,gBACF,EACIC,GAAgB,CAClB,UACA,QACA,mBACA,QACA,SACA,WACA,aACA,SACA,UACA,YACA,cACA,YACA,aACA,WACA,OACA,QACA,SACA,SACA,QACA,OACA,MACA,MACA,QACA,OACA,OACA,MACA,QACA,QACA,OACA,QACA,YACA,OACA,QACA,UACA,WACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,cACA,YACA,eACA,cACA,aACA,QACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,YACA,MACA,aACA,aACA,YACA,QACA,WACA,SACA,SACA,YACA,YACA,SACA,SACA,cACA,YACA,SACA,QACA,WACA,SACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,OACA,WACA,UACA,SACA,YACA,aACA,aACA,YACA,YACA,QACA,WACA,WACA,KACA,SACA,WACA,YACA,YACA,eACA,MACA,KACA,cACA,YACA,UACA,KACA,WACA,cACA,eACA,QACA,KACA,SACA,eACA,aACA,aACA,UACA,SACA,cACA,QACA,gBACA,iBACA,WACA,mBACA,SACA,SACA,SACA,KACA,KACA,SACA,SACA,eACA,gBACA,YACA,aACA,SACA,UACA,YACA,YACA,WACA,WACA,gBACA,iBACA,KACA,KACA,YACA,iBACA,iBACA,eACA,cACA,cACA,cACA,SACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,cACA,QACA,SACA,SACA,cACA,SACA,WACA,aACA,QACA,SACA,QACA,YACA,OACA,UACA,eACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,YACA,MACA,MACA,SACA,SACA,QACA,QACA,QACA,WACA,cACA,cACA,gBACA,UACA,aACA,gBACA,QACA,SACA,SACA,aACA,WACA,WACA,SACA,SACA,SACA,SACA,QACF,EACA,SAASC,GAAgBC,EAAM,CAC7B,KAAK,KAAOA,CACd,CACAD,GAAgB,UAAU,iBAAmB,SAAS9a,EAAG,CACvD,IAAMoZ,EAAOpZ,EAAE,YAAY,CAAC,EACtBkQ,EAAS,KAAK,KAAK,OACzB,GAAIA,EACF,QAAS3T,EAAI,EAAGA,EAAI2T,EAAO,OAAQ3T,GAAK,EAAG,CACzC,IAAMsV,EAAQ3B,EAAO,IAAI3T,CAAC,EAC1B,QAAS2J,EAAI,EAAGA,EAAI2L,EAAM,SAAS,OAAQ3L,GAAK,EAC9C,GAAI2L,EAAM,SAAS3L,CAAC,IAAMkT,EACxB,OAAO7c,CAGb,CAEF,OAAO,IACT,EACA,SAASye,GAAa9D,EAAM,CAC1B,KAAK,KAAOA,CACd,CACA8D,GAAa,UAAU,iBAAmB,SAAShb,EAAG,CACpD,OAAO,KAAK,KAAK,cAAcA,EAAE,YAAY,CAAC,CAAC,GAAK,CACtD,EACA,SAASib,GAAY1U,EAAU2U,EAAS,CACtC,KAAK,SAAW3U,EAChB,KAAK,QAAU2U,CACjB,CACAD,GAAY,UAAU,iBAAmB,SAAS5W,EAAG,CACnD,IAAM+U,EAAO/U,EAAE,YAAY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,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,IAAK,EAEzB,CAAE,MAAO,KAAM,IAAK,KAAM,EAE1B,CAAE,MAAO,MAAO,IAAK,KAAM,EAE3B,CAAE,MAAO,MAAO,IAAK,KAAM,EAE3B,CAAE,MAAO,MAAO,IAAK,KAAM,EAE3B,CAAE,MAAO,MAAO,IAAK,KAAM,EAE3B,CAAE,MAAO,MAAO,IAAK,KAAM,EAE3B,CAAE,MAAO,MAAO,IAAK,KAAM,EAE3B,CAAE,MAAO,MAAO,IAAK,KAAM,EAE3B,CAAE,MAAO,MAAO,IAAK,KAAM,E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K,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,EAEpCA,EAAU,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,CAAC,CACtC,EACA,IAAIO,GAAoBxN,GAGxB,SAASyN,GAAMC,EAAM,CACnB,KAAK,KAAOA,EACZ,KAAK,MAAQ,CAAC,EACd,KAAK,YAAc,IACrB,CACA,SAASC,GAAatX,EAAY1zB,EAAWirC,EAAa,CACxD,KAAK,YAAcA,EACnB,KAAK,WAAavX,EAClB,KAAK,UAAY1zB,CACnB,CACA,SAASkrC,GAAeD,EAAaE,EAAYC,EAAU,CACzD,KAAK,YAAcH,EACnB,KAAK,UAAY,KACjB,KAAK,OAAS,CAAC,EACf,KAAK,WAAaE,EAClB,KAAK,SAAWC,CAClB,CACA,SAASC,GAAcC,EAAS/W,EAAc,CAC5C,KAAK,QAAU+W,EACf,KAAK,MAAQ/W,EACb,KAAK,OAAS+W,EAAQ,OACtB,KAAK,QAAUA,EAAQ/W,CAAY,EACnC,KAAK,UAAY+W,EAAQ,MAAM,EAAG/W,CAAY,EAC9C,KAAK,UAAY+W,EAAQ,MAAM/W,EAAe,CAAC,CACjD,CACA,SAASgX,GAAMC,EAAS,CACtB,KAAK,QAAUA,EACf,KAAK,YAAc,CAAC,CACtB,CACA,SAASC,GAAqBC,EAAQ,CACpC,IAAMC,EAAa,CACjB,QACA,MACA,OACA,WACA,eACA,aACA,cACA,cACA,cACA,eACA,eACA,aACA,sBACF,EACA,QAASp7C,EAAI,EAAGA,EAAIo7C,EAAW,OAAQp7C,IAAK,CAC1C,IAAMi7C,EAAUG,EAAWp7C,CAAC,EAC5B,OAAO,eAAe,KAAK,OAAQi7C,EAAS,CAC1C,MAAO,IAAID,GAAMC,CAAO,CAC1B,CAAC,CACH,CACA,GAAIE,EACF,QAASn7C,EAAI,EAAGA,EAAIo7C,EAAW,OAAQp7C,IAAK,CAC1C,IAAMi7C,EAAUG,EAAWp7C,CAAC,EACtBq7C,EAAQF,EAAOF,CAAO,EACxB,OAAOI,GAAU,YACnB,KAAK,OAAOJ,CAAO,EAAE,UAAUI,CAAK,CAExC,CAEF,IAAMC,EAAwB,CAC5B,cACA,cACA,cACA,eACA,eACA,YACF,EACA,QAASt7C,EAAI,EAAGA,EAAIs7C,EAAsB,OAAQt7C,IAAK,CACrD,IAAMi7C,EAAUK,EAAsBt7C,CAAC,EACvC,KAAK,OAAOi7C,CAAO,EAAE,UACnB,KAAK,oBACP,CACF,CACF,CACA,SAASM,GAAUJ,EAAQ,CACzB,KAAK,OAAS,CAAC,EACf,KAAK,mBAAqB,CAAC,EAC3B,KAAK,gBAAkB,CAAC,EACxB,KAAK,OAAS,CAAC,EACf,KAAK,oBAAsB,CAAC,EAC5BD,GAAqB,KAAK,KAAMC,CAAM,CACxC,CACAZ,GAAM,UAAU,SAAW,SAASv8C,EAAKiL,EAAO,CAC9C,YAAK,MAAMjL,CAAG,EAAIiL,EAClB,KAAK,YAAc,CAAE,IAAAjL,EAAK,MAAO,KAAK,MAAMA,CAAG,CAAE,EAC1C,KAAK,WACd,EACAu8C,GAAM,UAAU,SAAW,SAASiB,EAAS,CAC3C,OAAO,KAAK,MAAMA,CAAO,GAAK,IAChC,EACAD,GAAU,UAAU,aAAe,SAASj7B,EAAO,CACjD,OAAOA,GAAS,GAAKA,EAAQ,KAAK,OAAO,MAC3C,EACAi7B,GAAU,UAAU,WAAa,SAASE,EAAM,CAE9C,IAAM3L,EAAQ2L,EAAK,IAAKC,GAAQ,KAAKA,EAAI,CAAC,CAAC,EAAE,MAAM,KAAMA,EAAI,MAAM,CAAC,EAAE,OAAO,EAAM,CAAC,CAAC,EAC/EC,EAAiBC,GAAQ,OAAOA,GAAQ,UAAY,OAAO,UAAU,eAAe,KAAKA,EAAK,MAAM,EAC1G,GAAI9L,EAAM,MAAM6L,CAAa,EAC3B,MAAO,CACL,KAAM,mEACN,OAAQ7L,EAAM,OAAO6L,CAAa,CACpC,EAEF,KAAK,SAAS,aAAc,CAAC7L,EAAM,OAAQ7jC,GAAO,CAAC0vC,EAAc1vC,CAAE,CAAC,CAAC,CAAC,CACxE,EACAsvC,GAAU,UAAU,aAAe,SAASpY,EAAYz8B,EAAQm1C,EAAQC,EAAQ,CAC9Ep1C,EAASA,IAAW,KAAOA,EAAS,KAAK,OAAO,OAChD,IAAMq1C,EAAcF,EAAO,MAAOj1C,GAAUA,aAAiB2zC,EAAK,EAClE,GAAI,CAAC,MAAMpX,CAAU,GAAK,KAAK,aAAaA,CAAU,GAAK4Y,EAAa,CACtE,IAAMC,EAAW,KAAK,OAAO,OAAO,MAClC,KAAK,OACL,CAAC7Y,EAAYz8B,CAAM,EAAE,OAAOm1C,CAAM,CACpC,EACA,OAAKC,GAAQ,KAAK,SAAS,eAAgB,CAAC3Y,EAAYz8B,EAAQm1C,CAAM,CAAC,EAChE,CAACG,EAAUH,CAAM,CAC1B,KACE,OAAO,CAAE,KAAM,6CAA8C,CAEjE,EACAN,GAAU,UAAU,aAAe,SAASj7B,EAAO1Z,EAAOk1C,EAAQ,CAChE,GAAI,CAAC,MAAMx7B,CAAK,GAAK,KAAK,aAAaA,CAAK,GAAK1Z,aAAiB2zC,GAAO,CACvE,IAAMyB,EAAW,KAAK,OAAO,OAAO17B,EAAO,EAAG1Z,CAAK,EACnD,OAAKk1C,GAAQ,KAAK,SAAS,eAAgB,CAACx7B,EAAO1Z,CAAK,CAAC,EAClD,CAACo1C,EAAS,CAAC,EAAGp1C,CAAK,CAC5B,KACE,OAAO,CAAE,KAAM,uCAAwC,CAE3D,EACA20C,GAAU,UAAU,YAAc,SAASpY,EAAYz8B,EAAQo1C,EAAQ,CACrEp1C,EAAU,MAAMA,CAAM,EAAa,KAAK,OAAO,OAArBA,EAC1B,IAAMm1C,EAAS,KAAK,OAAO,OAAO1Y,EAAYz8B,CAAM,EACpD,OAAKo1C,GAAQ,KAAK,SAAS,cAAe,CAACD,EAAQ1Y,EAAYz8B,CAAM,CAAC,EAC/Dm1C,CACT,EACAN,GAAU,UAAU,YAAc,SAASj7B,EAAOw7B,EAAQ,CACxD,GAAI,CAAC,MAAMx7B,CAAK,GAAK,KAAK,aAAaA,CAAK,EAAG,CAC7C,IAAM1Z,EAAQ,KAAK,OAAO,OAAO0Z,EAAO,CAAC,EACzC,OAAKw7B,GAAQ,KAAK,SAAS,cAAe,CAACl1C,EAAO0Z,CAAK,CAAC,EACjD1Z,CACT,KACE,OAAO,CAAE,KAAM,mCAAoC,CAEvD,EACA20C,GAAU,UAAU,YAAc,SAASM,EAAQv7B,EAAOw7B,EAAQ,CAIhE,OAHkBD,EAAO,MACtBj1C,GAAUA,aAAiB2zC,EAC9B,GAEE,KAAK,OAAO,OAAO,MACjB,KAAK,OACL,CAACj6B,EAAO,CAAC,EAAE,OAAOu7B,CAAM,CAC1B,EACKC,GAAQ,KAAK,SAAS,cAAe,CAACD,EAAQv7B,CAAK,CAAC,EAClDu7B,GAEA,CAAE,KAAM,gCAAiC,CAEpD,EACAN,GAAU,UAAU,iBAAmB,SAASU,EAAYC,EAAWC,EAAU,CAC/E,KAAK,OAAO,SAAS,UAAU,SAASv1C,EAAOw1C,EAAe,CAC5D,IAAMC,EAAkB,CAACz1C,EAAOw1C,CAAa,EACvCE,EAAmBJ,IAAc,MAAQA,EAAU,MAAM,KAAMG,CAAe,IAAM,GACpFE,EAAiB,CAAC31C,EAAOw1C,CAAa,EAC5C,GAAIE,EAAkB,CACpB,IAAIE,EAAgBL,EAAS,MAAM,KAAMI,CAAc,EACvD31C,EAAM,SAASq1C,EAAYO,CAAa,CAC1C,CACF,CAAC,EACD,KAAK,oBAAoB,KAAKP,CAAU,CAC1C,EACAjB,GAAM,UAAU,UAAY,SAASyB,EAAc,CACjD,OAAI,OAAOA,GAAiB,WACnB,KAAK,YAAY,KAAKA,CAAY,EAAI,EAEtC,CAAE,KAAM,YAAY,KAAK,OAAO,iBAAkB,CAE7D,EACAzB,GAAM,UAAU,YAAc,SAAS0B,EAAQ,CAC7C,KAAK,YAAY,OAAOA,EAAQ,CAAC,CACnC,EACA5B,GAAc,UAAU,gBAAkB,SAASx6B,EAAO,CACxD,KAAK,MAAQA,EACb,KAAK,QAAU,KAAK,QAAQA,CAAK,EACjC,KAAK,UAAY,KAAK,QAAQ,MAAM,EAAGA,CAAK,EAC5C,KAAK,UAAY,KAAK,QAAQ,MAAMA,EAAQ,CAAC,CAC/C,EACAw6B,GAAc,UAAU,IAAM,SAASp0C,EAAQ,CAC7C,OAAQ,GAAM,CACZ,KAAKA,IAAW,EACd,OAAO,KAAK,QACd,KAAMA,EAAS,GAAK,KAAK,IAAIA,CAAM,GAAK,KAAK,UAAU,QACrD,OAAO,KAAK,UAAU,MAAMA,CAAM,EAAE,CAAC,EACvC,KAAMA,EAAS,GAAKA,GAAU,KAAK,UAAU,QAC3C,OAAO,KAAK,UAAUA,EAAS,CAAC,EAClC,QACE,OAAO,IACX,CACF,EACA60C,GAAU,UAAU,YAAc,SAASrqB,EAAO,CAChD,GAAIA,aAAiBupB,GACnB,OAAO,KAAK,eAAevpB,CAAK,EAAE,IAAKtqB,GAAUA,EAAM,IAAI,EAAE,KAAK,EAAE,CAExE,EACA20C,GAAU,UAAU,QAAU,UAAW,CACvC,OAAO,KAAK,OAAO,IAAK30C,GAAUA,EAAM,IAAI,EAAE,KAAK,EAAE,CACvD,EACA20C,GAAU,UAAU,WAAa,SAASb,EAAa,CACrD,IAAIK,EAAU,KAAK,mBAAmBL,CAAW,EACjD,OAAOK,GAAoB,IAC7B,EACAQ,GAAU,UAAU,GAAK,SAASoB,EAAWF,EAAc,CACzD,IAAMpB,EAAQ,KAAK,OAAOsB,CAAS,EACnC,OAAItB,EACKA,EAAM,UAAUoB,CAAY,EAE5B,IAEX,EACAlB,GAAU,UAAU,SAAW,SAASoB,EAAW/R,EAAM,CACvD,IAAMyQ,EAAQ,KAAK,OAAOsB,CAAS,EACnC,GAAItB,aAAiBL,GACnB,QAASh7C,EAAI,EAAGA,EAAIq7C,EAAM,YAAY,OAAQr7C,IACzBq7C,EAAM,YAAYr7C,CAAC,EAC3B,MAAM,KAAM4qC,GAAQ,CAAC,CAAC,CAGvC,EACA2Q,GAAU,UAAU,uBAAyB,SAASb,EAAakC,EAAmBC,EAAiB,CACrG,GAAI,KAAK,WAAWnC,CAAW,EAAG,MAAO,CACvC,KAAM,iBAAiBA,CAAW,0BACpC,EACA,GAAI,OAAOkC,GAAsB,WAAY,MAAO,CAClD,KAAM,8BACR,EACA,GAAI,OAAOC,GAAoB,WAAY,MAAO,CAChD,KAAM,4BACR,EACA,IAAMC,EAAkB,IAAInC,GAC1BD,EACAkC,EACAC,CACF,EACA,YAAK,mBAAmBnC,CAAW,EAAIoC,EACvC,KAAK,gBAAgB,KAAKA,CAAe,EAClCA,CACT,EACAvB,GAAU,UAAU,eAAiB,SAASrqB,EAAO,CACnD,IAAM6rB,EAAW7rB,EAAM,WAAaA,EAAM,UAC1C,MAAO,CAAC,EAAE,OACR,KAAK,OAAO,MAAMA,EAAM,WAAY6rB,CAAQ,CAC9C,CACF,EACAxB,GAAU,UAAU,iBAAmB,SAASb,EAAa,CAC3D,IAAMK,EAAU,KAAK,WAAWL,CAAW,EAC3C,OAAIK,EACKA,EAAQ,OAER,CAAE,KAAM,oBAAoBL,CAAW,sBAAuB,CAEzE,EACAa,GAAU,UAAU,oBAAsB,UAAW,CACnD,IAAMyB,EAAqB,KAAK,mBAChC,QAAWtC,KAAesC,EACxB,GAAI,OAAO,UAAU,eAAe,KAAKA,EAAoBtC,CAAW,EAAG,CACzE,IAAMK,EAAUiC,EAAmBtC,CAAW,EAC9CK,EAAQ,OAAS,CAAC,CACpB,CAEJ,EACAQ,GAAU,UAAU,qBAAuB,UAAW,CACpD,KAAK,oBAAoB,EACzB,IAAM1f,EAAQ,KAAK,OAAO,IAAKj1B,GAAUA,EAAM,IAAI,EACnD,QAAS5G,EAAI,EAAGA,EAAI67B,EAAM,OAAQ77B,IAAK,CACrC,IAAMo8C,EAAgB,IAAItB,GAAcjf,EAAO77B,CAAC,EAChD,KAAK,gBAAgBo8C,CAAa,CACpC,CACA,KAAK,SAAS,uBAAwB,CAAC,KAAK,kBAAkB,CAAC,CACjE,EACAb,GAAU,UAAU,aAAe,SAAS70C,EAAQg0C,EAAa,CAC/D,IAAMvX,EAAa,KAAK,WAAWuX,CAAW,EAAE,UAAU,WACtDxpB,EAAQ,IAAIupB,GAAatX,EAAYz8B,EAAQg0C,CAAW,EACtDlpC,EAAS,KAAK,WAAWkpC,CAAW,EAAE,OAC5C,OAAAxpB,EAAM,QAAU,GAAGwpB,CAAW,IAAIlpC,EAAO,MAAM,GAC/CA,EAAO,KAAK0f,CAAK,EACjB,KAAK,WAAWwpB,CAAW,EAAE,UAAY,KAClCxpB,CACT,EACAqqB,GAAU,UAAU,gBAAkB,SAASa,EAAe,CAC5D,IAAM97B,EAAQ87B,EAAc,MAC5B,QAASp8C,EAAI,EAAGA,EAAI,KAAK,gBAAgB,OAAQA,IAAK,CACpD,IAAMi9C,EAAiB,KAAK,gBAAgBj9C,CAAC,EACzC06C,EAAcuC,EAAe,YAC7BC,EAAY,KAAK,WAAWxC,CAAW,EAAE,UAM7C,GALI,CAACwC,GAAaD,EAAe,WAAWb,CAAa,IACvDc,EAAY,IAAIzC,GAAan6B,EAAO,KAAMo6B,CAAW,EACrD,KAAK,WAAWA,CAAW,EAAE,UAAYwC,EACzC,KAAK,SAAS,eAAgB,CAACxC,EAAap6B,CAAK,CAAC,GAE9C48B,GAAaD,EAAe,SAASb,CAAa,EAAG,CACzD,IAAM11C,EAAS4Z,EAAQ48B,EAAU,WAAa,EACxChsB,EAAQ,KAAK,aAAaxqB,EAAQg0C,CAAW,EACnD,KAAK,SAAS,aAAc,CAACA,EAAaxpB,CAAK,CAAC,CAClD,CACF,CACF,EACAqqB,GAAU,UAAU,SAAW,SAASpjC,EAAM,CAC5C,KAAK,OAAS,CAAC,EACf,KAAK,oBAAoB,EACzB,IAAI0jB,EAAQ,MAAM,KAAK1jB,CAAI,EAC3B,KAAK,SAAS,OAAO,EACrB,QAASnY,EAAI,EAAGA,EAAI67B,EAAM,OAAQ77B,IAAK,CACrC,IAAMw6C,EAAO3e,EAAM77B,CAAC,EACdo8C,EAAgB,IAAItB,GAAcjf,EAAO77B,CAAC,EAChD,KAAK,SAAS,OAAQ,CAACo8C,CAAa,CAAC,EACrC,KAAK,gBAAgBA,CAAa,EAClC,IAAIx1C,EAAQ,IAAI2zC,GAAMC,CAAI,EAC1B,KAAK,OAAO,KAAK5zC,CAAK,EACtB,KAAK,SAAS,WAAY,CAACA,EAAOw1C,CAAa,CAAC,CAClD,CACA,YAAK,SAAS,MAAO,CAAC,KAAK,MAAM,CAAC,EAC3B,KAAK,MACd,EACA,IAAIe,GAAoB5B,GAGxB,SAAS6B,GAAa35C,EAAG,CACvB,MAAO,4CAA4C,KAAKA,CAAC,CAC3D,CACA,SAAS45C,GAAqB7C,EAAM,CAClC,MAAO,mUAAmU,KAAKA,CAAI,CACrV,CACA,SAAS8C,GAAqB9C,EAAM,CAClC,MAAO,wHAAwH,KAAKA,CAAI,CAC1I,CACA,SAAS+C,GAAW95C,EAAG,CACrB,MAAO,kBAAkB,KAAKA,CAAC,CACjC,CACA,SAAS+5C,GAAY/5C,EAAG,CACtB,MAAO,QAAQ,KAAKA,CAAC,CACvB,CACA,SAASg6C,GAAah6C,EAAG,CACvB,MAAO,KAAK,KAAKA,CAAC,CACpB,CAGA,SAASi6C,GAAal/B,EAAM,CAC1B,KAAK,KAAOA,EACZ,KAAK,SAAW,CAAC,CACnB,CACA,SAASm/B,GAAmBC,EAAQ,CAClC,KAAK,GAAKA,EAAO,GACjB,KAAK,IAAMA,EAAO,IAClB,KAAK,aAAeA,EAAO,YAC7B,CACA,SAASC,GAAezpC,EAAYkf,EAAU,CAC5C,GAAI,CAAClf,EAAY,MAAO,GACxB,OAAQkf,EAAS,OAAQ,CACvB,IAAK,GACH,OAAOA,EAAS,OAAO,QAAQlf,CAAU,EAC3C,IAAK,GAAG,CACN,IAAI5C,EAAS8hB,EAAS,OACtB,QAAStzB,EAAI,EAAGA,EAAIwR,EAAO,OAAQxR,IAAK,CACtC,IAAMkxB,EAAQ1f,EAAOxR,CAAC,EACtB,GAAIoU,GAAc8c,EAAM,OAAS9c,GAAc8c,EAAM,IAAK,CACxD,IAAIxqB,EAAS0N,EAAa8c,EAAM,MAChC,OAAOA,EAAM,MAAQxqB,CACvB,CACF,CACA,KACF,CACA,QACE,MAAO,EACX,CACA,MAAO,EACT,CACA,SAASo3C,GAA0B1pC,EAAYue,EAAU,CAEvD,OADsBkrB,GAAezpC,EAAYue,EAAS,QAAQ,IAC1C,GAAW,KAC5Bve,EAAaue,EAAS,YAC/B,CACA,SAASorB,GAA0B3pC,EAAYue,EAAU,CACvD,IAAIqrB,EAAkBH,GAAezpC,EAAYue,EAAS,QAAQ,EAClE,OAAIqrB,IAAoB,GAAW,KAC5BrrB,EAAS,WAAWqrB,CAAe,CAC5C,CACA,SAASC,GAAmBC,EAAc9B,EAAe,CACvD,IAAI+B,EAAa,CAAC,EAClB,QAASn+C,EAAI,EAAGA,EAAIk+C,EAAa,OAAQl+C,IAAK,CAC5C,IAAMszB,EAAW4qB,EAAal+C,CAAC,EAC3BoU,EAAagoC,EAAc,QAC/BhoC,EAAa,MAAM,QAAQA,CAAU,EAAIA,EAAW,CAAC,EAAIA,EACzD,IAAMqM,EAAco9B,GAAezpC,EAAYkf,CAAQ,EACnD7S,IAAgB,IAClB09B,EAAW,KAAK19B,CAAW,CAE/B,CACA,OAAI09B,EAAW,SAAWD,EAAa,OAAe,GAC/CC,CACT,CACA,SAASC,GAA4BhC,EAAezpB,EAAU,CAC5D,IAAM0rB,EAAe1rB,EAAS,cAAc,OAASA,EAAS,kBAAkB,OAASA,EAAS,kBAAkB,OACpH,GAAIypB,EAAc,QAAQ,OAASiC,EAAc,MAAO,CAAC,EACzD,IAAIC,EAAeL,GACjBtrB,EAAS,cACTypB,CACF,EACA,GAAIkC,IAAiB,GAAI,MAAO,CAAC,EACjC,IAAMC,EAAkB5rB,EAAS,cAAc,OAAS,EACxD,GAAIypB,EAAc,UAAU,OAASzpB,EAAS,kBAAkB,OAAQ,MAAO,CAAC,EAChF,IAAI6rB,EAAmBpC,EAAc,UAAU,MAAMmC,CAAe,EACpE,KAAOC,EAAiB,QAAUlB,GAAqBkB,EAAiB,CAAC,EAAE,IAAI,GAC7EA,EAAiB,MAAM,EAEzB,IAAMC,EAAkB,IAAI3D,GAAc0D,EAAkB,CAAC,EACzDE,EAAmBT,GACrBtrB,EAAS,kBACT8rB,CACF,EACIE,EAAmB,CAAC,EAAE,OAAOvC,EAAc,SAAS,EAExD,IADAuC,EAAiB,QAAQ,EAClBA,EAAiB,QAAUrB,GAAqBqB,EAAiB,CAAC,EAAE,IAAI,GAC7EA,EAAiB,MAAM,EAEzB,GAAIA,EAAiB,OAAShsB,EAAS,kBAAkB,OAAQ,MAAO,CAAC,EACzE,IAAMisB,EAAkB,IAAI9D,GAAc6D,EAAkB,CAAC,EACzDE,EAAmBZ,GACrBtrB,EAAS,kBACTisB,CACF,EACME,EAAoBR,EAAa,SAAW3rB,EAAS,cAAc,QAAU+rB,EAAiB,SAAW/rB,EAAS,kBAAkB,QAAUksB,EAAiB,SAAWlsB,EAAS,kBAAkB,OACvMmP,EAAgB,CAAC,EACrB,GAAIgd,EACF,QAAS9+C,EAAI,EAAGA,EAAI2yB,EAAS,cAAc,OAAQ3yB,IAAK,CACtD,IAAM++C,EAAepsB,EAAS,cAAc3yB,CAAC,EACvCg/C,EAAkBD,EAAa,gBAC/BxwC,EAAc,KAAK,iBAAiBywC,CAAe,EACzD,QAASl3C,EAAI,EAAGA,EAAIyG,EAAY,UAAU,OAAQzG,IAAK,CACrD,IAAIm3C,EAAY1wC,EAAY,UAAUzG,CAAC,EACnC4d,EACAw5B,EAAmB,KAAK,oBAAoB3wC,EAAa0wC,CAAS,EAQtE,GAPIC,IAAqB,MACvBA,EAAmB,KAAK,oBAAoBD,EAAWA,EAAU,SAAS,EAC1Ev5B,EAAS,KAAK,gBAAgBu5B,EAAWA,EAAU,SAAS,EAC5DA,EAAYA,EAAU,WAEtBv5B,EAAS,KAAK,gBAAgBnX,EAAa0wC,CAAS,EAElDC,IAAqB,KAAM,CAC7B,IAAM9qC,GAAagoC,EAAc,IAAI2C,EAAa,aAAa,EACzDrc,GAAehd,EAAOtR,EAAU,EAClCsuB,IAAcZ,EAAc,KAAKY,EAAY,CACnD,SAAWwc,IAAqB,KAAM,CACpC,IAAM9qC,GAAagoC,EAAc,IAAI2C,EAAa,aAAa,EACzDrc,GAAehd,EAAOtR,EAAU,EAClCsuB,IAAcZ,EAAc,KAAKY,EAAY,CACnD,KACE,OAAM,IAAI,MAAM,qBAAqBwc,CAAgB,4CAA4C,CAErG,CACF,CAEF,OAAOpd,CACT,CACA,SAASqd,GAA4B/C,EAAezpB,EAAU,CAC5D,IAAIve,EAAagoC,EAAc,QAC3BgD,EAAcvB,GAAezpC,EAAYue,EAAS,QAAQ,EAC9D,GAAIysB,IAAgB,GAAI,OAAO,KAC/B,IAAIrsB,EACAD,EAAcH,EAAS,aAAaysB,CAAW,EACnD,QAASt3C,EAAI,EAAGA,EAAIgrB,EAAY,OAAQhrB,IAAK,CAC3CirB,EAAWD,EAAYhrB,CAAC,EACxB,QAASN,EAAI,EAAGA,EAAIurB,EAAS,WAAW,OAAQvrB,IAAK,CACnD,IAAM63C,EAAgBjD,EAAc,UAAU50C,CAAC,EACzCogC,EAAY7U,EAAS,WAAWvrB,CAAC,EACvC,GAAI63C,IAAkBzX,EAAW,MACjC,GAAIpgC,IAAMurB,EAAS,WAAW,OAAS,EAAG,OAAOA,CACnD,CACF,CACA,OAAO,IACT,CACA,SAASusB,GAA2BlD,EAAezpB,EAAU,CAC3D,IAAI6H,EAAU4hB,EAAc,QAE5B,GADkByB,GAAerjB,EAAS7H,EAAS,QAAQ,IACvC,GAClB,OAAO,KACT,QAAW4sB,KAAW5sB,EAAS,SAC7B,QAAW6sB,KAAQD,EAAS,CAC1B,IAAIE,EAAU,GACd,QAASz/C,EAAI,EAAGA,EAAIw/C,EAAK,MAAM,OAAQx/C,IACrC,GAAIo8C,EAAc,UAAUp8C,CAAC,IAAMw/C,EAAK,MAAMx/C,CAAC,EAAG,CAChDy/C,EAAU,GACV,KACF,CAEF,GAAIA,EAAS,CACX,IAAI3d,EAAgB,CAAC,EACrBA,EAAc,KAAKtH,CAAO,EAC1B,QAASx6B,EAAI,EAAGA,EAAIw/C,EAAK,MAAM,OAAQx/C,IACrC8hC,EAAc,KAAK0d,EAAK,MAAMx/C,CAAC,CAAC,EAElC,IAAMylB,EAAS,CAACi6B,EAAgBX,IAAiB,CAC/C,GAAM,CAAE,gBAAAC,EAAiB,cAAAW,CAAc,EAAIZ,EACrC,CAAE,UAAA3yC,CAAU,EAAI,KAAK,iBAAiB4yC,CAAe,EAC3D,QAAWC,KAAa7yC,EACHyxC,GAAe6B,EAAeC,CAAa,EAAGV,EAAU,QAAQ,IAC9D,KACnBS,EAAeC,CAAa,EAAIV,EAAU,aAGhD,EACA,QAASj/C,EAAI,EAAGA,EAAIw/C,EAAK,cAAc,OAAQx/C,IAAK,CAClD,IAAM++C,EAAeS,EAAK,cAAcx/C,CAAC,EACzCylB,EAAOqc,EAAeid,CAAY,CACpC,CACA,OAAOjd,CACT,CACF,CAEF,OAAO,IACT,CACA,SAAS8d,GAA2BxD,EAAezpB,EAAU,CAC3D,GAAIypB,EAAc,QAAQ,OAASzpB,EAAS,UAAU,OACpD,MAAO,CAAC,EAEV,QAAS3yB,EAAI,EAAGA,EAAI2yB,EAAS,UAAU,OAAQ3yB,IAAK,CAClD,IAAIoU,EAAagoC,EAAc,IAAIp8C,CAAC,EAEpC,GADAoU,EAAa,MAAM,QAAQA,CAAU,EAAIA,EAAW,CAAC,EAAIA,EACrDypC,GAAezpC,EAAYue,EAAS,UAAU3yB,CAAC,CAAC,IAAM,GACxD,MAAO,CAAC,CAEZ,CACA,IAAI8hC,EAAgB,CAAC,EACrB,QAAS9hC,EAAI,EAAGA,EAAI2yB,EAAS,cAAc,OAAQ3yB,IAAK,CACtD,IAAM++C,EAAepsB,EAAS,cAAc3yB,CAAC,EACvCg/C,EAAkBD,EAAa,gBAC/BxwC,EAAc,KAAK,iBAAiBywC,CAAe,EACzD,QAASl3C,EAAI,EAAGA,EAAIyG,EAAY,UAAU,OAAQzG,IAAK,CACrD,IAAIm3C,EAAY1wC,EAAY,UAAUzG,CAAC,EACnC4d,EACAw5B,EAAmB,KAAK,oBAAoB3wC,EAAa0wC,CAAS,EAQtE,GAPIC,IAAqB,MACvBA,EAAmB,KAAK,oBAAoBD,EAAWA,EAAU,SAAS,EAC1Ev5B,EAAS,KAAK,gBAAgBu5B,EAAWA,EAAU,SAAS,EAC5DA,EAAYA,EAAU,WAEtBv5B,EAAS,KAAK,gBAAgBnX,EAAa0wC,CAAS,EAElDC,IAAqB,KAAM,CAC7B,IAAM9qC,EAAagoC,EAAc,IAAI2C,EAAa,aAAa,EACzDrc,EAAehd,EAAOtR,CAAU,EAClCsuB,GAAcZ,EAAc,KAAKY,CAAY,CACnD,SAAWwc,IAAqB,KAAM,CACpC,IAAM9qC,EAAagoC,EAAc,IAAI2C,EAAa,aAAa,EACzDrc,EAAehd,EAAOtR,CAAU,EAClCsuB,GAAcZ,EAAc,KAAKY,CAAY,CACnD,CACF,CACF,CACA,OAAOZ,CACT,CACA,SAAS+d,GAAiCzrC,EAAYue,EAAU,CAC9D,IAAIqrB,EAAkBH,GAAezpC,EAAYue,EAAS,QAAQ,EAClE,OAAIqrB,IAAoB,GAAW,KAC5BrrB,EAAS,UAAUqrB,CAAe,CAC3C,CACAN,GAAa,UAAU,gCAAkC,UAAW,CAClE,IAAMxe,EAAU,KAAK,KAAK,OAAO,KAAK,QACtC,QAASp3B,EAAI,EAAGA,EAAIo3B,EAAQ,OAAQp3B,IAAK,CACvC,IAAM6F,EAASuxB,EAAQp3B,CAAC,EACxB,GAAI6F,EAAO,MAAQ,OAAQ,OAAOA,EAAO,OAAO,eAAe,cACjE,CACA,MAAO,CAAC,CACV,EACA+vC,GAAa,UAAU,yBAA2B,SAASoC,EAAW,CAEpE,GAAI,CADW,KAAK,KAAK,OACb,KAAM,MAAO,CAAC,EAC1B,GAAI,CAACA,EAAW,OAAO,KAAK,gCAAgC,EAC5D,IAAM5gB,EAAU,KAAK,KAAK,OAAO,KAAK,QACtC,QAASl/B,EAAI,EAAGA,EAAIk/B,EAAQ,OAAQl/B,IAAK,CACvC,IAAM2N,EAASuxB,EAAQl/B,CAAC,EACxB,GAAI2N,EAAO,MAAQmyC,GAAanyC,EAAO,OAAO,eAC5C,OAAOA,EAAO,OAAO,eAAe,eAC/B,CACL,IAAIoyC,EAAiBpyC,EAAO,eAC5B,GAAIoyC,EACF,QAASp2C,EAAI,EAAGA,EAAIo2C,EAAe,OAAQp2C,IAAK,CAC9C,IAAMkE,EAAgBkyC,EAAep2C,CAAC,EACtC,GAAIkE,EAAc,MAAQiyC,EAExB,OADcjyC,EAAc,QACb,cAEnB,CAEJ,CACF,CACA,OAAO,KAAK,gCAAgC,CAC9C,EACA6vC,GAAa,UAAU,kBAAoB,SAASsC,EAAUF,EAAW,CACvE,IAAIxvB,EAAO,CAAC,EACZ,QAAStwB,EAAI,EAAGA,EAAIggD,EAAS,OAAQhgD,IAAK,CACxC,IAAMmB,EAAM6+C,EAAShgD,CAAC,EAAE,IAClBmO,EAAU6xC,EAAShgD,CAAC,EAAE,QAC5BswB,EAAKnvB,CAAG,EAAIgN,CACd,CACA,KAAK,SAAS2xC,CAAS,EAAE,KAAOxvB,CAClC,EACAotB,GAAa,UAAU,kBAAoB,SAASoC,EAAW,CAC7D,IAAIE,EAAW,KAAK,SAASF,CAAS,EACtC,GAAI,OAAO,UAAU,eAAe,KAAK,KAAK,SAAUA,CAAS,EAAG,OAAOE,EAC3E,IAAMC,EAAkB,KAAK,yBAAyBH,CAAS,EAC/D,GAAI,CAACG,EAAiB,OAAO,KAC7B,IAAMvsB,EAAO,KAAK,KAAK,OAAO,KAC9B,OAAAssB,EAAWC,EAAgB,IAAK3/B,GAAUoT,EAAK,SAASpT,CAAK,CAAC,EAC9D,KAAK,SAASw/B,CAAS,EAAIE,EAC3B,KAAK,kBAAkBA,EAAUF,CAAS,EACnCE,CACT,EACAtC,GAAa,UAAU,oBAAsB,SAASnvC,EAAaokB,EAAU,CAC3E,IAAMhhB,EAAapD,EAAY,WAAW,SAAS,EAC7C6jB,EAAcO,EAAS,YAAY,SAAS,EAClD,OAAOhhB,EAAaygB,CACtB,EACAsrB,GAAa,UAAU,gBAAkB,SAASnvC,EAAaokB,EAAU,CACvE,IAAIusB,EAAmB,KAAK,oBAAoB3wC,EAAaokB,CAAQ,EACrE,OAAQusB,EAAkB,CACxB,IAAK,KACH,OAAQ9qC,GAAe0pC,GAA0B,MAC/C,KACA,CAAC1pC,EAAYue,CAAQ,CACvB,EACF,IAAK,KACH,OAAQve,GAAe2pC,GAA0B,MAC/C,KACA,CAAC3pC,EAAYue,CAAQ,CACvB,EACF,IAAK,KACH,OAAQypB,GAAkBgC,GAA4B,MACpD,KACA,CAAChC,EAAezpB,CAAQ,CAC1B,EACF,IAAK,KACH,OAAQypB,GAAkB+C,GAA4B,MACpD,KACA,CAAC/C,EAAezpB,CAAQ,CAC1B,EACF,IAAK,KACH,OAAQve,GAAeyrC,GAAiC,MACtD,KACA,CAACzrC,EAAYue,CAAQ,CACvB,EACF,IAAK,KACH,OAAQypB,GAAkBkD,GAA2B,MACnD,KACA,CAAClD,EAAezpB,CAAQ,CAC1B,EACF,IAAK,KACH,OAAQypB,GAAkBwD,GAA2B,MACnD,KACA,CAACxD,EAAezpB,CAAQ,CAC1B,EACF,QACE,MAAM,IAAI,MACR,sBAAsBusB,CAAgB,gBAAgB3wC,EAAY,UAAU,mBAAmBokB,EAAS,WAAW,uBACrH,CACJ,CACF,EACA+qB,GAAa,UAAU,cAAgB,SAASwC,EAAO,CACrD,IAAI9D,EAAgB8D,EAAM,cACtBlc,EAAeoY,EAAc,MAC3BjuC,EAAU,KAAK,WAAW,CAC9B,IAAK+xC,EAAM,IACX,OAAQA,EAAM,MAChB,CAAC,EACD,GAAI,CAAC/xC,EAAS,OAAO,IAAI,MACvB,UAAU,KAAK,KAAK,MAAM,SAAW,KAAK,KAAK,MAAM,SAAW,KAAK,KAAK,MAAM,WAAW,SAAS,EAAE,8BAA8B+xC,EAAM,GAAG,iBAAiBA,EAAM,MAAM,IAC5K,EACA,IAAMC,EAAU,KAAK,kBAAkBhyC,CAAO,EACxC2zB,EAAgB,CAAC,EAAE,OAAOsa,EAAc,OAAO,EACrD,QAAS50C,EAAI,EAAGA,EAAI24C,EAAQ,OAAQ34C,IAAK,CACvC,IAAM+G,EAAc4xC,EAAQ34C,CAAC,EACvB4E,EAAY,KAAK,mBAAmBmC,CAAW,EACrD,QAASzG,EAAI,EAAGA,EAAIsE,EAAU,OAAQtE,IAAK,CACzC,IAAI6qB,EAAWvmB,EAAUtE,CAAC,EACtBs4C,EAAY,KAAK,oBAAoB7xC,EAAaokB,CAAQ,EAC1DjN,EACA06B,IAAc,MAChBA,EAAY,KAAK,oBAAoBztB,EAAUA,EAAS,SAAS,EACjEjN,EAAS,KAAK,gBAAgBiN,EAAUA,EAAS,SAAS,EAC1DA,EAAWA,EAAS,WAEpBjN,EAAS,KAAK,gBAAgBnX,EAAaokB,CAAQ,EAErD,IAAI+P,EACJ,OAAQ0d,EAAW,CACjB,IAAK,KACH1d,EAAehd,EAAO02B,EAAc,OAAO,EACvC1Z,GACFZ,EAAc,OAAOkC,EAAc,EAAG,IAAI2Z,GAAmB,CAC3D,GAAI,GACJ,IAAKuC,EAAM,IACX,aAAAxd,CACF,CAAC,CAAC,EAEJ,MACF,IAAK,KACHA,EAAehd,EAAO02B,EAAc,OAAO,EACvC1Z,GACFZ,EAAc,OAAOkC,EAAc,EAAG,IAAI2Z,GAAmB,CAC3D,GAAI,GACJ,IAAKuC,EAAM,IACX,aAAAxd,CACF,CAAC,CAAC,EAEJ,MACF,IAAK,KACHA,EAAehd,EAAO02B,CAAa,EAC/B,MAAM,QAAQ1Z,CAAY,GAAKA,EAAa,QAC9CZ,EAAc,OAAOkC,EAAc,EAAG,IAAI2Z,GAAmB,CAC3D,GAAI,GACJ,IAAKuC,EAAM,IACX,aAAAxd,CACF,CAAC,CAAC,EAEJ,MACF,IAAK,KACHA,EAAehd,EAAO02B,CAAa,EAC/B1Z,GACFZ,EAAc,OAAOkC,EAAc,EAAG,IAAI2Z,GAAmB,CAC3D,GAAI,GACJ,IAAKuC,EAAM,IACX,aAAAxd,CACF,CAAC,CAAC,EAEJ,MACF,IAAK,KACHA,EAAehd,EAAO02B,EAAc,OAAO,EACvC1Z,GACFZ,EAAc,OAAOkC,EAAc,EAAG,IAAI2Z,GAAmB,CAC3D,GAAI,GACJ,IAAKuC,EAAM,IACX,aAAAxd,CACF,CAAC,CAAC,EAEJ,MACF,IAAK,KACL,IAAK,KACHA,EAAehd,EAAO02B,CAAa,EAC/B,MAAM,QAAQ1Z,CAAY,GAAKA,EAAa,QAC9CZ,EAAc,OAAOkC,EAAc,EAAG,IAAI2Z,GAAmB,CAC3D,GAAI,SAASyC,CAAS,EACtB,IAAKF,EAAM,IACX,aAAAxd,CACF,CAAC,CAAC,EAEJ,KACJ,CACA0Z,EAAgB,IAAItB,GAAchZ,EAAekC,CAAY,EACzD,QAAM,QAAQtB,CAAY,GAAK,CAACA,EAAa,UACjDA,EAAe,KACjB,CACF,CACA,OAAOZ,EAAc,OAASA,EAAgB,IAChD,EACA4b,GAAa,UAAU,SAAW,SAASwC,EAAO,CAChD,GAAI,CAACA,EAAM,OAAQ,MAAO,GAC1B,KAAK,kBAAkBA,EAAM,MAAM,EACnC,IAAMG,EAAkB,OAAO,UAAU,eAAe,KAAK,KAAK,SAAUH,EAAM,MAAM,EACxF,GAAI,CAACA,EAAM,IAAK,OAAOG,EACvB,IAAMC,EAAmB,KAAK,SAASJ,EAAM,MAAM,EAAE,KAAM/xC,GAAYA,EAAQ,MAAQ+xC,EAAM,GAAG,EAChG,OAAOG,GAAmBC,CAC5B,EACA5C,GAAa,UAAU,mBAAqB,SAASnvC,EAAa,CAChE,OAAOA,EAAY,WAAa,IAClC,EACAmvC,GAAa,UAAU,iBAAmB,SAASp9B,EAAO,CAExD,OADgB,KAAK,KAAK,OAAO,KAAK,QACvBA,CAAK,GAAK,IAC3B,EACAo9B,GAAa,UAAU,kBAAoB,SAASvvC,EAAS,CAC3D,OAAOA,EAAQ,kBAAkB,IAAI,KAAK,iBAAiB,KAAK,IAAI,CAAC,CACvE,EACAuvC,GAAa,UAAU,WAAa,SAAoBwC,EAAO,CAC7D,GAAI,CAAC,KAAK,KAAM,MAAO,CAAE,KAAM,mBAAoB,EAC9C,OAAO,UAAU,eAAe,KAAK,KAAK,SAAUA,EAAM,MAAM,GACnE,KAAK,kBAAkBA,EAAM,MAAM,EAErC,IAAMK,EAAiB,KAAK,SAASL,EAAM,MAAM,EACjD,OAAKK,EACAA,EAAe,KAAKL,EAAM,GAAG,EAC3B,KAAK,SAASA,EAAM,MAAM,EAAE,KAAKA,EAAM,GAAG,EADL,KADhB,CAAE,KAAM,yBAAyBA,EAAM,MAAM,EAAG,CAG9E,EACA,IAAIM,GAAuB9C,GAG3B,SAAS+C,GAAqBrE,EAAe,CAC3C,IAAM5B,EAAO4B,EAAc,QACrBsE,EAAWtE,EAAc,IAAI,EAAE,EACrC,OAEEsE,IAAa,MAAQtD,GAAa5C,CAAI,GACtC,CAAC4C,GAAasD,CAAQ,GAAKtD,GAAa5C,CAAI,CAEhD,CACA,SAASmG,GAAmBvE,EAAe,CACzC,IAAMwE,EAAWxE,EAAc,IAAI,CAAC,EACpC,OAEEwE,IAAa,MACb,CAACxD,GAAawD,CAAQ,CAE1B,CACA,IAAIC,GAAqB,CACvB,WAAYJ,GACZ,SAAUE,EACZ,EAGA,SAASG,GAAyB1E,EAAe,CAC/C,IAAM5B,EAAO4B,EAAc,QACrBsE,EAAWtE,EAAc,IAAI,EAAE,EACrC,OAEGgB,GAAa5C,CAAI,GAAK8C,GAAqB9C,CAAI,IAAM,CAAC4C,GAAasD,CAAQ,CAEhF,CACA,SAASK,GAAuB3E,EAAe,CAC7C,IAAMwE,EAAWxE,EAAc,IAAI,CAAC,EACpC,OAAQ,GAAM,CACZ,KAAKwE,IAAa,KAChB,MAAO,GACT,KAAM,CAACxD,GAAawD,CAAQ,GAAK,CAACtD,GAAqBsD,CAAQ,GAAI,CACjE,IAAMI,EAAmBvD,GAAamD,CAAQ,EAC9C,GAAI,CAACI,EAAkB,MAAO,GAC9B,GAAIA,EAAkB,CACpB,IAAIC,EAAkB,GAItB,GAHAA,EAAkB7E,EAAc,UAAU,KACvC34C,GAAM25C,GAAa35C,CAAC,GAAK65C,GAAqB75C,CAAC,CAClD,EACI,CAACw9C,EAAiB,MAAO,EAC/B,CACA,KACF,CACA,QACE,MAAO,EACX,CACF,CACA,IAAIC,GAAyB,CAC3B,WAAYJ,GACZ,SAAUC,EACZ,EAGA,SAASI,GAA2BvD,EAAQ/B,EAAQv7B,EAAO,CACzDu7B,EAAOv7B,CAAK,EAAE,SAASs9B,EAAO,IAAKA,EAAO,YAAY,CACxD,CACA,SAASwD,GAA2BxD,EAAQ/B,EAAQv7B,EAAO,CACzDu7B,EAAOv7B,CAAK,EAAE,SAASs9B,EAAO,IAAKA,EAAO,YAAY,CACxD,CACA,SAASyD,GAA6BzD,EAAQ/B,EAAQv7B,EAAO,CAC3D,QAAStgB,EAAI,EAAGA,EAAI49C,EAAO,aAAa,OAAQ59C,IAAK,CACnD,IAAMshD,EAAQ1D,EAAO,aAAa59C,CAAC,EAC7B4G,EAAQi1C,EAAOv7B,EAAQtgB,CAAC,EAC9B,GAAI,MAAM,QAAQshD,CAAK,EAAG,CACpBA,EAAM,OACR16C,EAAM,SAASg3C,EAAO,IAAK0D,EAAM,CAAC,CAAC,EAEnC16C,EAAM,SAAS,UAAW,EAAI,EAEhC,QACF,CACAA,EAAM,SAASg3C,EAAO,IAAK0D,CAAK,CAClC,CACF,CACA,SAASC,GAA6B3D,EAAQ/B,EAAQv7B,EAAO,CAC3D,IAAI1Z,EAAQi1C,EAAOv7B,CAAK,EACxB1Z,EAAM,SAASg3C,EAAO,IAAKA,EAAO,aAAa,QAAQ,EACvD,IAAM4D,EAAa5D,EAAO,aAAa,WAAW,OAClD,QAAS59C,EAAI,EAAGA,EAAIwhD,EAAYxhD,IAC9B4G,EAAQi1C,EAAOv7B,EAAQtgB,EAAI,CAAC,EAC5B4G,EAAM,SAAS,UAAW,EAAI,CAElC,CACA,IAAI66C,GAAgB,CAClB,GAAIN,GACJ,GAAIC,GACJ,GAAIC,GACJ,GAAIE,GACJ,GAAIF,GACJ,GAAIA,EACN,EACA,SAASK,GAAkB9D,EAAQ/B,EAAQv7B,EAAO,CAC5Cs9B,aAAkBD,IAAsB8D,GAAc7D,EAAO,EAAE,GACjE6D,GAAc7D,EAAO,EAAE,EAAEA,EAAQ/B,EAAQv7B,CAAK,CAElD,CACA,IAAIqhC,GAA4BD,GAGhC,SAASE,GAAgBC,EAAmB,CAC1C,IAAIC,EAAY,CAAC,EAAE,OAAOD,EAAkB,SAAS,EACrD,QAAS7hD,EAAI8hD,EAAU,OAAS,EAAG9hD,GAAK,EAAGA,IAAK,CAC9C,IAAM0gD,EAAWoB,EAAU9hD,CAAC,EACtB+hD,EAAW1E,GAAqBqD,CAAQ,EACxCsB,EAAW1E,GAAqBoD,CAAQ,EAC9C,GAAI,CAACqB,GAAY,CAACC,EAAU,MAAO,GACnC,GAAID,EAAU,MAAO,EACvB,CACA,MAAO,EACT,CACA,SAASE,GAAgBJ,EAAmB,CAC1C,GAAIxE,GAAqBwE,EAAkB,OAAO,EAAG,MAAO,GAC5D,QAAS7hD,EAAI,EAAGA,EAAI6hD,EAAkB,UAAU,OAAQ7hD,IAAK,CAC3D,IAAM4gD,EAAWiB,EAAkB,UAAU7hD,CAAC,EAE9C,GAAI,CADas9C,GAAqBsD,CAAQ,EAC/B,MAAO,EACxB,CACA,MAAO,EACT,CACA,SAASsB,GAAwBhxB,EAAO,CACtC,IAAMvjB,EAAS,OACT2iB,EAAO,KAAK,aAAa3iB,CAAM,EAC/BkuC,EAAS,KAAK,UAAU,eAAe3qB,CAAK,EAClD,GAAI2qB,EAAO,SAAW,EAAG,OACzB,IAAIO,EAAgB,IAAItB,GACtBe,EAAO,IACJj1C,GAAUA,EAAM,SAAS,YAAY,CACxC,EACA,CACF,EACMi7C,EAAoB,IAAI/G,GAC5Be,EAAO,IACJj1C,GAAUA,EAAM,IACnB,EACA,CACF,EACA,QAAS,EAAI,EAAG,EAAIi1C,EAAO,OAAQ,IAAK,CACtC,IAAMj1C,EAAQi1C,EAAO,CAAC,EACtB,GAAIyB,GAAqB12C,EAAM,IAAI,EAAG,SACtCw1C,EAAc,gBAAgB,CAAC,EAC/ByF,EAAkB,gBAAgB,CAAC,EACnC,IAAIM,EAAU,EACVP,GAAgBC,CAAiB,IAAGM,GAAW,GAC/CF,GAAgBJ,CAAiB,IAAGM,GAAW,GACnD,IAAIhhD,EACJ,OAAQghD,EAAS,CACf,IAAK,GACHhhD,EAAM,OACN,MACF,IAAK,GACHA,EAAM,OACN,MACF,IAAK,GACHA,EAAM,OACN,KACJ,CACA,GAAImvB,EAAK,QAAQnvB,CAAG,IAAM,GAAI,SAC9B,IAAI2gC,EAAgB,KAAK,MAAM,cAAc,CAC3C,IAAA3gC,EACA,OAAAwM,EACA,cAAAyuC,CACF,CAAC,EACD,GAAIta,aAAyB,MAAO,CAClC,QAAQ,KAAKA,EAAc,OAAO,EAClC,QACF,CACA,QAASn4B,EAAI,EAAGA,EAAIm4B,EAAc,OAAQn4B,IAAK,CAC7C,IAAMi0C,EAAS9b,EAAcn4B,CAAC,EAC1Bi0C,aAAkBD,KACpBgE,GAA0B/D,EAAQ/B,EAAQlyC,CAAC,EAC3CyyC,EAAc,QAAQzyC,CAAC,EAAIi0C,EAAO,aAEtC,CACF,CACF,CACA,IAAIwE,GAAkCF,GAGtC,SAASG,GAAiBxG,EAAQv7B,EAAO,CACvC,IAAMy6B,EAAUc,EAAO,IAAKj1C,GAAUA,EAAM,YAAY,KAAK,EAC7D,OAAO,IAAIk0C,GAAcC,EAASz6B,GAAS,CAAC,CAC9C,CACA,SAASgiC,GAAwBpxB,EAAO,CACtC,IAAMvjB,EAAS,OACXkuC,EAAS,KAAK,UAAU,eAAe3qB,CAAK,EAC5CkrB,EAAgBiG,GAAiBxG,CAAM,EAC3C,QAASv7B,EAAQ,EAAGA,EAAQ87B,EAAc,QAAQ,OAAQ97B,IAAS,CACjE87B,EAAc,gBAAgB97B,CAAK,EACnC,IAAIwhB,EAAgB,KAAK,MAAM,cAAc,CAC3C,IAAK,OACL,OAAAn0B,EACA,cAAAyuC,CACF,CAAC,EACD,GAAIta,EAAc,OAAQ,CACxB,QAAS,EAAI,EAAG,EAAIA,EAAc,OAAQ,IAAK,CAC7C,IAAM8b,EAAS9b,EAAc,CAAC,EAC9B6f,GAA0B/D,EAAQ/B,EAAQv7B,CAAK,CACjD,CACA87B,EAAgBiG,GAAiBxG,CAAM,CACzC,CACF,CACF,CACA,IAAI0G,GAAkCD,GAGtC,SAASE,GAA0BpG,EAAe,CAChD,OAAOA,EAAc,QAAU,GAAKA,EAAc,QAAQ,OAAS,CACrE,CACA,SAASqG,GAAwBrG,EAAe,CAC9C,OAAOA,EAAc,QAAUA,EAAc,QAAQ,OAAS,CAChE,CACA,IAAIsG,GAA0B,CAC5B,WAAYF,GACZ,SAAUC,EACZ,EAGA,SAASE,GAAkB9G,EAAQv7B,EAAO,CACxC,IAAMy6B,EAAUc,EAAO,IAAKj1C,GAAUA,EAAM,YAAY,KAAK,EAC7D,OAAO,IAAIk0C,GAAcC,EAASz6B,GAAS,CAAC,CAC9C,CACA,SAASsiC,GAAyB1xB,EAAO,CACvC,IAAMvjB,EAAS,OACTxM,EAAM,OACR06C,EAAS,KAAK,UAAU,eAAe3qB,CAAK,EAC5CkrB,EAAgBuG,GAAkB9G,CAAM,EAC5C,QAASv7B,EAAQ,EAAGA,EAAQ87B,EAAc,QAAQ,OAAQ97B,IAAS,CACjE,GAAI,CAAC,KAAK,MAAM,WAAW,CAAE,IAAAnf,EAAK,OAAAwM,EAAQ,cAAAyuC,CAAc,CAAC,EACvD,SAEFA,EAAc,gBAAgB97B,CAAK,EACnC,IAAIwhB,EAAgB,KAAK,MAAM,cAAc,CAC3C,IAAA3gC,EACA,OAAAwM,EACA,cAAAyuC,CACF,CAAC,EACD,GAAIta,EAAc,OAAQ,CACxB,QAAS9hC,EAAI,EAAGA,EAAI8hC,EAAc,OAAQ9hC,IAAK,CAC7C,IAAM49C,EAAS9b,EAAc9hC,CAAC,EAC9B2hD,GAA0B/D,EAAQ/B,EAAQv7B,CAAK,CACjD,CACA87B,EAAgBuG,GAAkB9G,CAAM,CAC1C,CACF,CACF,CACA,IAAIgH,GAAmCD,GAGvC,SAASE,GAAoB1G,EAAe,CAC1C,IAAM5B,EAAO4B,EAAc,QACrBsE,EAAWtE,EAAc,IAAI,EAAE,EACrC,OAEEsE,IAAa,MAAQlD,GAAYhD,CAAI,GACrC,CAACgD,GAAYkD,CAAQ,GAAKlD,GAAYhD,CAAI,CAE9C,CACA,SAASuI,GAAkB3G,EAAe,CACxC,IAAMwE,EAAWxE,EAAc,IAAI,CAAC,EACpC,OAEEwE,IAAa,MACb,CAACpD,GAAYoD,CAAQ,CAEzB,CACA,IAAIoC,GAAoB,CACtB,WAAYF,GACZ,SAAUC,EACZ,EAGA,SAASE,GAAkBpH,EAAQv7B,EAAO,CACxC,IAAMy6B,EAAUc,EAAO,IAAKj1C,GAAUA,EAAM,YAAY,KAAK,EAC7D,OAAO,IAAIk0C,GAAcC,EAASz6B,GAAS,CAAC,CAC9C,CACA,SAAS4iC,GAAchyB,EAAO,CAC5B,IAAMvjB,EAAS,OACXkuC,EAAS,KAAK,UAAU,eAAe3qB,CAAK,EAC5CkrB,EAAgB6G,GAAkBpH,CAAM,EAC5C,QAASv7B,EAAQ,EAAGA,EAAQ87B,EAAc,QAAQ,OAAQ97B,IAAS,CACjE87B,EAAc,gBAAgB97B,CAAK,EACnC,IAAIwhB,EAAgB,KAAK,MAAM,cAAc,CAC3C,IAAK,OACL,OAAAn0B,EACA,cAAAyuC,CACF,CAAC,EACD,GAAIta,EAAc,OAAQ,CACxB,QAAS,EAAI,EAAG,EAAIA,EAAc,OAAQ,IAAK,CAC7C,IAAM8b,EAAS9b,EAAc,CAAC,EAC9B6f,GAA0B/D,EAAQ/B,EAAQv7B,CAAK,CACjD,CACA87B,EAAgB6G,GAAkBpH,CAAM,CAC1C,CACF,CACF,CACA,IAAIsH,GAAyBD,GAG7B,SAASE,GAAmBhH,EAAe,CACzC,IAAM5B,EAAO4B,EAAc,QACrBsE,EAAWtE,EAAc,IAAI,EAAE,EACrC,OAEEsE,IAAa,MAAQnD,GAAW/C,CAAI,GACpC,CAAC+C,GAAWmD,CAAQ,GAAKnD,GAAW/C,CAAI,CAE5C,CACA,SAAS6I,GAAiBjH,EAAe,CACvC,IAAMwE,EAAWxE,EAAc,IAAI,CAAC,EACpC,OAEEwE,IAAa,MACb,CAACrD,GAAWqD,CAAQ,CAExB,CACA,IAAI0C,GAAmB,CACrB,WAAYF,GACZ,SAAUC,EACZ,EAGA,SAASE,GAAkB1H,EAAQv7B,EAAO,CACxC,IAAMy6B,EAAUc,EAAO,IAAKj1C,GAAUA,EAAM,YAAY,KAAK,EAC7D,OAAO,IAAIk0C,GAAcC,EAASz6B,GAAS,CAAC,CAC9C,CACA,SAASkjC,GAAqBtyB,EAAO,CACnC,IAAMvjB,EAAS,OACXkuC,EAAS,KAAK,UAAU,eAAe3qB,CAAK,EAC5CkrB,EAAgBmH,GAAkB1H,EAAQ,CAAC,EAC/C,QAASv7B,EAAQ,EAAGA,EAAQ87B,EAAc,QAAQ,OAAQ97B,IAAS,CACjE87B,EAAc,gBAAgB97B,CAAK,EACnC,IAAIwhB,EAAgB,KAAK,MAAM,cAAc,CAC3C,IAAK,OACL,OAAAn0B,EACA,cAAAyuC,CACF,CAAC,EACD,GAAIta,EAAc,OAAQ,CACxB,QAAS,EAAI,EAAG,EAAIA,EAAc,OAAQ,IAAK,CAC7C,IAAM8b,EAAS9b,EAAc,CAAC,EAC9B6f,GAA0B/D,EAAQ/B,EAAQv7B,CAAK,CACjD,CACA87B,EAAgBmH,GAAkB1H,EAAQv7B,CAAK,CACjD,CACF,CACF,CACA,IAAImjC,GAA+BD,GAGnC,SAASE,GAAkB7H,EAAQv7B,EAAO,CACxC,IAAMy6B,EAAUc,EAAO,IAAKj1C,GAAUA,EAAM,YAAY,KAAK,EAC7D,OAAO,IAAIk0C,GAAcC,EAASz6B,GAAS,CAAC,CAC9C,CACA,SAASqjC,GAAczyB,EAAO,CAC5B,IAAMvjB,EAAS,OACXkuC,EAAS,KAAK,UAAU,eAAe3qB,CAAK,EAC5CkrB,EAAgBsH,GAAkB7H,EAAQ,CAAC,EAC/C,QAASv7B,EAAQ,EAAGA,EAAQ87B,EAAc,QAAQ,OAAQ97B,IAAS,CACjE87B,EAAc,gBAAgB97B,CAAK,EACnC,IAAIwhB,EAAgB,KAAK,MAAM,cAAc,CAC3C,IAAK,OACL,OAAAn0B,EACA,cAAAyuC,CACF,CAAC,EACD,GAAIta,EAAc,OAAQ,CACxB,QAAS,EAAI,EAAG,EAAIA,EAAc,OAAQ,IAAK,CAC7C,IAAM8b,EAAS9b,EAAc,CAAC,EAC9B6f,GAA0B/D,EAAQ/B,EAAQv7B,CAAK,CACjD,CACA87B,EAAgBsH,GAAkB7H,EAAQv7B,CAAK,CACjD,CACF,CACF,CACA,IAAIsjC,GAAwBD,GAG5B,SAASE,GAAkBhI,EAAQv7B,EAAO,CACxC,IAAMy6B,EAAUc,EAAO,IAAKj1C,GAAUA,EAAM,YAAY,KAAK,EAC7D,OAAO,IAAIk0C,GAAcC,EAASz6B,GAAS,CAAC,CAC9C,CACA,SAASwjC,GAAsB5yB,EAAO,CACpC,IAAMvjB,EAAS,OACXkuC,EAAS,KAAK,UAAU,eAAe3qB,CAAK,EAC5CkrB,EAAgByH,GAAkBhI,EAAQ,CAAC,EAC/C,QAASv7B,EAAQ,EAAGA,EAAQ87B,EAAc,QAAQ,OAAQ97B,IAAS,CACjE87B,EAAc,gBAAgB97B,CAAK,EACnC,IAAIwhB,EAAgB,KAAK,MAAM,cAAc,CAC3C,IAAK,OACL,OAAAn0B,EACA,cAAAyuC,CACF,CAAC,EACD,GAAIta,EAAc,OAAQ,CACxB,QAAS,EAAI,EAAG,EAAIA,EAAc,OAAQ,IAAK,CAC7C,IAAM8b,EAAS9b,EAAc,CAAC,EAC9B6f,GAA0B/D,EAAQ/B,EAAQv7B,CAAK,CACjD,CACA87B,EAAgByH,GAAkBhI,EAAQv7B,CAAK,CACjD,CACF,CACF,CACA,IAAIyjC,GAAgCD,GAGpC,SAASE,GAA4BxJ,EAAM,CACzC,GAAIA,IAAS,KAAM,MAAO,GAC1B,IAAMyJ,EAAWzJ,EAAK,YAAY,CAAC,EACnC,OAEEyJ,GAAY,MAAQA,GAAY,MAChCA,GAAY,OAASA,GAAY,OACjCA,GAAY,QAAUA,GAAY,MAEtC,CACA,SAASC,GAAmC9H,EAAe,CACzD,IAAM5B,EAAO4B,EAAc,QACrBwE,EAAWxE,EAAc,IAAI,CAAC,EACpC,OAAOwE,IAAa,MAAQoD,GAA4BxJ,CAAI,GAAKwJ,GAA4BpD,CAAQ,CACvG,CACA,SAASuD,GAAiC/H,EAAe,CACvD,IAAMwE,EAAWxE,EAAc,IAAI,CAAC,EACpC,OAAOwE,IAAa,MAAQ,CAACoD,GAA4BpD,CAAQ,CACnE,CACA,IAAIwD,GAAiC,CACnC,WAAYF,GACZ,SAAUC,EACZ,EAGA,SAASE,GAAyBnzB,EAAO,CACvC,IAAM1S,EAAO,KAAK,MAAM,KAClBq9B,EAAS,KAAK,UAAU,eAAe3qB,CAAK,EAElD,GADA2qB,EAAO,CAAC,EAAE,SAAS,UAAW,EAAI,EAC9Br9B,EAAK,OAAO,MAAQA,EAAK,OAAO,KAAK,gBAAiB,CACxD,IAAM8lC,EAAgBzI,EAAO,CAAC,EAAE,KAAK,YAAY,CAAC,EAC5C0I,EAAc1I,EAAO,CAAC,EAAE,KAAK,YAAY,CAAC,EAC1C2I,EAAiBhmC,EAAK,OAAO,KAAK,gBAAgB+lC,CAAW,EACnE,GAAIC,IAAmB,QACjBA,EAAe,cAAe,CAChC,IAAMC,EAAWD,EAAe,cAAc,YAC9C,GAAIC,EAASH,CAAa,EAAG,CAC3B,IAAMI,EAAqBD,EAASH,CAAa,EAAE,QAC/C9lC,EAAK,OAAO,OAAOkmC,CAAkB,IAAM,QAC7C7I,EAAO,CAAC,EAAE,SAAS,aAAc6I,CAAkB,CAEvD,CACF,CAEJ,CACF,CACA,IAAIC,GAA6BN,GAGjC,SAASO,GAAKC,EAAS,CACrB,KAAK,QAAUA,GAAW,MAC1B,KAAK,UAAY,IAAI1H,GACrB,KAAK,aAAe,CAAC,CACvB,CACAyH,GAAK,UAAU,QAAU,SAASzsC,EAAM,CACtC,KAAK,KAAOA,CACd,EACAysC,GAAK,UAAU,cAAgB,CAC7B,qBAAsBlC,GACtB,eAAgBM,GAChB,gBAAiBnC,GACjB,oBAAqBK,GACrB,cAAeoC,GACf,8BAA+Bc,EACjC,EACA,SAASU,GAAuBC,EAAS,CACvC,IAAMC,EAAQ,KAAK,cAAc,GAAGD,CAAO,OAAO,EAClD,OAAO,KAAK,UAAU,uBACpBA,EACAC,EAAM,WACNA,EAAM,QACR,CACF,CACA,SAASC,IAAe,CACtB,OAAAH,GAAuB,KAAK,KAAM,iBAAiB,EACnDA,GAAuB,KAAK,KAAM,WAAW,EAC7CA,GAAuB,KAAK,KAAM,YAAY,EAC9CA,GAAuB,KAAK,KAAM,gBAAgB,EAClDA,GAAuB,KAAK,KAAM,UAAU,EAC5CA,GAAuB,KAAK,KAAM,0BAA0B,EACrD,KAAK,UAAU,SAAS,KAAK,IAAI,CAC1C,CACA,SAASI,IAAyB,CAChC,IAAM1zC,EAAS,KAAK,UAAU,iBAAiB,gBAAgB,EAC/D,QAASxR,EAAI,EAAGA,EAAIwR,EAAO,OAAQxR,IAAK,CACtC,IAAMkxB,EAAQ1f,EAAOxR,CAAC,EAClBmlD,EAAc,KAAK,UAAU,eAAej0B,CAAK,EACrD,KAAK,UAAU,aACbA,EAAM,WACNA,EAAM,UACNi0B,EAAY,QAAQ,CACtB,CACF,CACF,CACAP,GAAK,UAAU,iBAAmB,SAASj3C,EAAQ2iB,EAAM,CACvD,IAAM80B,EAAgB90B,EAAK,OACxBnvB,GAAQ,KAAK,MAAM,SAAS,CAAE,OAAAwM,EAAQ,IAAAxM,CAAI,CAAC,CAC9C,EACK,OAAO,UAAU,eAAe,KAAK,KAAK,aAAcwM,CAAM,EAGjE,KAAK,aAAaA,CAAM,EAAI,KAAK,aAAaA,CAAM,EAAE,OAAOy3C,CAAa,EAF1E,KAAK,aAAaz3C,CAAM,EAAIy3C,CAIhC,EACAR,GAAK,UAAU,cAAgB,SAASpmC,EAAMwhC,EAAU,CACtD,GAAI,CAACxhC,EAAM,MAAM,IAAI,MACnB,8CACF,EACK,KAAK,QAAO,KAAK,MAAQ,IAAIgiC,GAAqBhiC,CAAI,GAC3D,QAAS6mC,EAAI,EAAGA,EAAIrF,EAAS,OAAQqF,IAAK,CACxC,IAAMl3C,EAAU6xC,EAASqF,CAAC,EACrB,KAAK,MAAM,SAAS,CAAE,OAAQl3C,EAAQ,MAAO,CAAC,GACnD,KAAK,iBAAiBA,EAAQ,OAAQA,EAAQ,IAAI,CACpD,CACF,EACAy2C,GAAK,UAAU,iBAAmB,SAAS3I,EAAYC,EAAWC,EAAU,CAC1E,KAAK,UAAU,iBAAiBF,EAAYC,EAAWC,CAAQ,CACjE,EACA,SAASmJ,IAAwB,CAC/B,GAAI,KAAK,UAAU,oBAAoB,QAAQ,YAAY,IAAM,GAC/D,MAAM,IAAI,MACR,wEACF,CAEJ,CACA,SAASC,IAA+B,CAEtC,GAAI,CAAC,OAAO,UAAU,eAAe,KAAK,KAAK,aADhC,MACoD,EAAG,OACtED,GAAsB,KAAK,IAAI,EAC/B,IAAM9zC,EAAS,KAAK,UAAU,iBAAiB,YAAY,EAC3D,QAASxR,EAAI,EAAGA,EAAIwR,EAAO,OAAQxR,IAAK,CACtC,IAAMkxB,EAAQ1f,EAAOxR,CAAC,EACtBoiD,GAAgC,KAAK,KAAMlxB,CAAK,CAClD,CACF,CACA,SAASs0B,IAAuB,CAC9BF,GAAsB,KAAK,IAAI,EAC/B,IAAM9zC,EAAS,KAAK,UAAU,iBAAiB,iBAAiB,EAChE,QAASxR,EAAI,EAAGA,EAAIwR,EAAO,OAAQxR,IAAK,CACtC,IAAMkxB,EAAQ1f,EAAOxR,CAAC,EACtB6iD,GAAiC,KAAK,KAAM3xB,CAAK,CACnD,CACF,CACA,SAASu0B,IAA8B,CACrC,GAAI,CAAC,KAAK,kBAAkB,OAAQ,MAAM,EAAG,OAC7CH,GAAsB,KAAK,IAAI,EAC/B,IAAM9zC,EAAS,KAAK,UAAU,iBAAiB,YAAY,EAC3D,QAASxR,EAAI,EAAGA,EAAIwR,EAAO,OAAQxR,IAAK,CACtC,IAAMkxB,EAAQ1f,EAAOxR,CAAC,EACtBuiD,GAAgC,KAAK,KAAMrxB,CAAK,CAClD,CACF,CACA,SAASw0B,IAAsB,CAC7B,GAAI,CAAC,KAAK,kBAAkB,OAAQ,MAAM,EAAG,OAC7CJ,GAAsB,KAAK,IAAI,EAC/B,IAAM9zC,EAAS,KAAK,UAAU,iBAAiB,WAAW,EAC1D,QAASxR,EAAI,EAAGA,EAAIwR,EAAO,OAAQxR,IAAK,CACtC,IAAMkxB,EAAQ1f,EAAOxR,CAAC,EACtBmjD,GAAuB,KAAK,KAAMjyB,CAAK,CACzC,CACF,CACA,SAASy0B,IAAiC,CACxC,IAAMn0C,EAAS,KAAK,UAAU,iBAAiB,0BAA0B,EACzE,QAASxR,EAAI,EAAGA,EAAIwR,EAAO,OAAQxR,IAAK,CACtC,IAAMkxB,EAAQ1f,EAAOxR,CAAC,EACtB2kD,GAA2B,KAAK,KAAMzzB,CAAK,CAC7C,CACF,CACA,SAAS00B,IAAoB,CAC3BN,GAAsB,KAAK,IAAI,EAC/B,IAAM9zC,EAAS,KAAK,UAAU,iBAAiB,UAAU,EACzD,QAASxR,EAAI,EAAGA,EAAIwR,EAAO,OAAQxR,IAAK,CACtC,IAAMkxB,EAAQ1f,EAAOxR,CAAC,EAClB,KAAK,kBAAkB,OAAQ,MAAM,GAAG4jD,GAAsB,KAAK,KAAM1yB,CAAK,EAC9E,KAAK,kBAAkB,OAAQ,MAAM,GAAG6yB,GAA8B,KAAK,KAAM7yB,CAAK,EACtF,KAAK,kBAAkB,OAAQ,MAAM,GAAGuyB,GAA6B,KAAK,KAAMvyB,CAAK,CAC3F,CACF,CACA0zB,GAAK,UAAU,kBAAoB,SAASiB,EAAW,CACrD,MAAO,CAAC,CAAC,KAAK,UAAU,WAAWA,CAAS,CAC9C,EACAjB,GAAK,UAAU,wBAA0B,UAAW,CAC9C,KAAK,kBAAkB,iBAAiB,GAC1CY,GAAqB,KAAK,IAAI,EAE5B,KAAK,kBAAkB,YAAY,IACrCD,GAA6B,KAAK,IAAI,EACtCE,GAA4B,KAAK,IAAI,GAEnC,KAAK,kBAAkB,WAAW,GACpCC,GAAoB,KAAK,IAAI,EAE3B,KAAK,kBAAkB,gBAAgB,GACzCR,GAAuB,KAAK,IAAI,EAE9B,KAAK,kBAAkB,UAAU,GACnCU,GAAkB,KAAK,IAAI,EAEzB,KAAK,kBAAkB,0BAA0B,GACnDD,GAA+B,KAAK,IAAI,CAE5C,EACAf,GAAK,UAAU,kBAAoB,SAASj3C,EAAQxM,EAAK,CACvD,OAAQ,KAAK,aAAawM,CAAM,GAAK,CAAC,GAAG,QAAQxM,CAAG,IAAM,EAC5D,EACAyjD,GAAK,UAAU,YAAc,SAASzsC,EAAM,EACtC,CAAC,KAAK,MAAQ,KAAK,OAASA,KAC9B,KAAK,QAAQA,CAAI,EACjB8sC,GAAa,KAAK,IAAI,EACtB,KAAK,wBAAwB,EAEjC,EACAL,GAAK,UAAU,YAAc,SAASzsC,EAAM,CAC1C,YAAK,YAAYA,CAAI,EACd,KAAK,UAAU,QAAQ,CAChC,EACAysC,GAAK,UAAU,cAAgB,SAASzsC,EAAM,CAC5C,KAAK,YAAYA,CAAI,EACrB,IAAI2tC,EAAU,CAAC,EACf,QAAS9lD,EAAI,EAAGA,EAAI,KAAK,UAAU,OAAO,OAAQA,IAAK,CACrD,IAAM4G,EAAQ,KAAK,UAAU,OAAO5G,CAAC,EACrC,GAAI4G,EAAM,MAAM,QAAS,SACzB,IAAM0Z,EAAQ1Z,EAAM,YAAY,MAChCk/C,EAAQ,KAAK,MAAM,QAAQxlC,CAAK,EAAIA,EAAM,CAAC,EAAIA,CAAK,CACtD,CACA,OAAOwlC,CACT,EACA,IAAIC,GAAenB,GAGnB,SAASoB,GAAuB1gD,EAAS,CACvC,MAAO,CACL,WAAY,CAAE,GAAIA,EAAQ,YAAc,GAAI,EAC5C,cAAe,CAAE,GAAIA,EAAQ,WAAa,GAAI,EAC9C,SAAU,CAAE,GAAIA,EAAQ,UAAYA,EAAQ,WAAa,IAAMA,EAAQ,SAAU,EAEjF,eAAgB,CAAE,GAAIA,EAAQ,iBAAmBA,EAAQ,WAAaA,EAAQ,WAAW,QAAQ,MAAO,EAAE,CAAE,EAC5G,SAAU,CAAE,GAAIA,EAAQ,UAAY,GAAI,EACxC,YAAa,CAAE,GAAIA,EAAQ,aAAe,GAAI,EAC9C,aAAc,CAAE,GAAIA,EAAQ,cAAgB,GAAI,EAChD,gBAAiB,CAAE,GAAIA,EAAQ,iBAAmB,GAAI,EACtD,QAAS,CAAE,GAAIA,EAAQ,SAAW,GAAI,EACtC,WAAY,CAAE,GAAIA,EAAQ,YAAc,GAAI,EAC5C,QAAS,CAAE,GAAIA,EAAQ,SAAW,aAAc,EAChD,YAAa,CAAE,GAAIA,EAAQ,aAAe,GAAI,EAC9C,UAAW,CAAE,GAAIA,EAAQ,WAAa,GAAI,EAC1C,UAAW,CAAE,GAAIA,EAAQ,WAAa,GAAI,CAC5C,CACF,CACA,SAAS2gD,GAAK3gD,EAAS,CAGrB,GAFAA,EAAUA,GAAW,CAAC,EACtBA,EAAQ,OAASA,EAAQ,QAAU,CAAC,EAChC,CAACA,EAAQ,MAAO,CAClB,GAAI,CAACA,EAAQ,WAAY,MAAM,IAAI,MAAM,0DAA0D,EACnG,GAAI,CAACA,EAAQ,UAAW,MAAM,IAAI,MAAM,yDAAyD,EACjG,GAAI,CAACA,EAAQ,WAAY,MAAM,IAAI,MAAM,0DAA0D,EACnG,GAAI,CAACA,EAAQ,SAAU,MAAM,IAAI,MAAM,wDAAwD,EAC/F,GAAIA,EAAQ,UAAY,EAAG,MAAM,IAAI,MAAM,wEAAwE,EACnH,KAAK,MAAQ,CAAC,EACd,KAAK,MAAM,QAAU0gD,GAAuB1gD,CAAO,EACnD,KAAK,MAAM,UAAY0gD,GAAuB1gD,CAAO,EACrD,KAAK,MAAM,QAAU0gD,GAAuB1gD,CAAO,EACnD,KAAK,WAAaA,EAAQ,YAAc,IACxC,KAAK,SAAWA,EAAQ,SACxB,KAAK,UAAYA,EAAQ,UACzB,KAAK,iBAAmBA,EAAQ,iBAChC,KAAK,YAAcA,EAAQ,aAAe,EAC1C,KAAK,YAAcA,EAAQ,aAAe,EAC1C,IAAI4gD,EAAY,EACZ5gD,EAAQ,YACV4gD,EAAY5gD,EAAQ,aAEhB,KAAK,YAAc,EACrB4gD,GAAa,KAAK,kBAAkB,OAC3B,KAAK,YAAc,IAC5BA,GAAa,KAAK,kBAAkB,SAElC,KAAK,aAAe,MACtBA,GAAa,KAAK,kBAAkB,MAElCA,IAAc,IAChBA,EAAY,KAAK,kBAAkB,WAGnC,CAAC5gD,EAAQ,QAAU,CAAC,MAAM,QAAQA,EAAQ,MAAM,KAClDA,EAAQ,OAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,GAE7C,KAAK,OAAS,OAAO,OAAOA,EAAQ,OAAQ,CAC1C,IAAK,OAAO,OAAO,CACjB,cAAeA,EAAQ,aAAe,KAAK,gBAAgB,OAC3D,aAAcA,EAAQ,YAAc,KAAK,eAAe,OACxD,YAAaA,EAAQ,OAAO,CAAC,GAAK,EAClC,YAAaA,EAAQ,OAAO,CAAC,GAAK,EAClC,QAASA,EAAQ,OAAO,CAAC,GAAK,EAC9B,YAAaA,EAAQ,OAAO,CAAC,GAAK,EAClC,UAAWA,EAAQ,OAAO,CAAC,GAAK,EAChC,iBAAkBA,EAAQ,OAAO,CAAC,GAAK,EACvC,UAAWA,EAAQ,OAAO,CAAC,GAAK,EAChC,YAAaA,EAAQ,OAAO,CAAC,GAAK,EAClC,SAAUA,EAAQ,OAAO,CAAC,GAAK,EAC/B,SAAUA,EAAQ,OAAO,CAAC,GAAK,EAC/B,YAAa4gD,CACf,EAAG5gD,EAAQ,OAAO,GAAG,CACvB,CAAC,CACH,CACA,KAAK,UAAY,GACjB,KAAK,OAAS,IAAIof,GAAiB,SAAS,KAAMpf,EAAQ,QAAU,CAAC,CAAC,EACtE,KAAK,SAAW,IAAIiZ,GAAgB,IAAI,EACxC,KAAK,SAAW,IAAI+hB,GAAiB,IAAI,EACzC,KAAK,aAAe,IAAIyC,GAAqB,IAAI,EACjD,KAAK,OAAS,KAAK,QAAU,CAAC,EAC9B,KAAK,OAAS,IAAI,MAAM,KAAK,OAAQ,CACnC,IAAK,CAAC5H,EAAQzuB,EAAWwmB,KACvBiI,EAAOzuB,CAAS,EAAIwmB,EAChBiI,EAAO,OAASA,EAAO,MAAQA,EAAO,OAAS,CAAC,KAAK,YACvD,KAAK,UAAY,IAAI4Q,GAAiB,IAAI,GAErC,GAEX,CAAC,EACD,KAAK,SAAW,IAAI/I,GAAe,IAAI,EACvC,KAAK,OAAS,IAAIoB,GAAa,IAAI,EACnC,KAAK,UAAY,IAAIe,GAAgB,IAAI,EACzC,KAAK,MAAQ,KACb,KAAK,eAAiB,CAAC,EACvB,OAAO,eAAe,KAAM,UAAW,CACrC,IAAK,UAAW,CACd,OAAI,KAAK,SAAiB,KAAK,SAC3B,KAAK,iBAAmB,WACnB,KAAK,SAAW,IAAImV,GAAkB,IAAI,EAE5C,IACT,CACF,CAAC,CACH,CACA2L,GAAK,UAAU,QAAU,SAASxiD,EAAG,CACnC,OAAO,KAAK,SAAS,iBAAiBA,CAAC,EAAI,CAC7C,EACAwiD,GAAK,UAAU,iBAAmB,SAASn+C,EAAG,CAC5C,OAAO,KAAK,SAAS,iBAAiBA,CAAC,CACzC,EACAm+C,GAAK,UAAU,YAAc,SAASxiD,EAAG,CACvC,IAAM2Q,EAAa,KAAK,iBAAiB3Q,CAAC,EACtC6R,EAAQ,KAAK,OAAO,IAAIlB,CAAU,EACtC,OAAKkB,IACHA,EAAQ,KAAK,OAAO,IAAI,CAAC,GAEpBA,CACT,EACA2wC,GAAK,UAAU,eAAiB,SAAS3gD,EAAS,CAChD,OAAO,KAAK,qBAAqB,SAAS,IAAK6I,GACzCA,EAAQ,SAAW,OACd,CACL,OAAQ,OACR,KAAMA,EAAQ,KAAK,OAAQhN,GAAQmE,EAAQnE,CAAG,CAAC,CACjD,EAEOgN,CAEV,CACH,EACA83C,GAAK,UAAU,qBAAuB,SAASn+C,EAAGxC,EAAS,CACzD,IAAM6gD,EAAO,IAAIJ,GACXK,EAAuBx/C,GAAU,KAAK,iBAAiBA,EAAM,IAAI,EACvEu/C,EAAK,iBAAiB,aAAc,KAAMC,CAAmB,EAC7D,IAAIpG,EAAW16C,EAAU,KAAK,eAAeA,EAAQ,QAAQ,EAAI,KAAK,qBAAqB,SAC3F,OAAA6gD,EAAK,cAAc,KAAMnG,CAAQ,EAC1BmG,EAAK,cAAcr+C,CAAC,CAC7B,EACAm+C,GAAK,UAAU,eAAiB,SAASn+C,EAAGxC,EAAS,CACnD,IAAMwgD,EAAU,KAAK,qBAAqBh+C,EAAGxC,CAAO,EAChD9D,EAASskD,EAAQ,OACfnyC,EAAS,IAAI,MAAMnS,CAAM,EACzB6kD,EAAS,KAAK,OAAO,IAAI,CAAC,EAChC,QAAS,EAAI,EAAG,EAAI7kD,EAAQ,GAAK,EAC/BmS,EAAO,CAAC,EAAI,KAAK,OAAO,IAAImyC,EAAQ,CAAC,CAAC,GAAKO,EAE7C,OAAO1yC,CACT,EACAsyC,GAAK,UAAU,iBAAmB,SAASvoD,EAAM,CAC/C,OAAO,KAAK,WAAW,iBAAiBA,CAAI,CAC9C,EACAuoD,GAAK,UAAU,YAAc,SAASvoD,EAAM,CAC1C,IAAM0W,EAAa,KAAK,iBAAiB1W,CAAI,EACzC4X,EAAQ,KAAK,OAAO,IAAIlB,CAAU,EACtC,OAAKkB,IACHA,EAAQ,KAAK,OAAO,IAAI,CAAC,GAEpBA,CACT,EACA2wC,GAAK,UAAU,iBAAmB,SAASlnC,EAAK,CAC9C,OAAK,KAAK,WAAW,iBAGd,KAAK,WAAW,iBAAiBA,CAAG,EAFlC,EAGX,EACAknC,GAAK,UAAU,gBAAkB,SAASK,EAAWC,EAAY,CAC/DD,EAAYA,EAAU,OAASA,EAC/BC,EAAaA,EAAW,OAASA,EACjC,IAAMC,EAAc,KAAK,SAAS,qBAClC,OAAIA,EACK,KAAK,SAAS,gBAAgBA,EAAaF,EAAWC,CAAU,EAElE,KAAK,aAAaD,EAAY,IAAMC,CAAU,GAAK,CAC5D,EACAN,GAAK,UAAU,qBAAuB,CACpC,QAAS,GACT,SAAU,CAKR,CAAE,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,OAAQ,MAAM,CAAE,EACzD,CAAE,OAAQ,OAAQ,KAAM,CAAC,OAAQ,MAAM,CAAE,EACzC,CAAE,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,MAAM,CAAE,CACnD,EACA,QAAS,GACT,WAAY,EACZ,WAAY,GACZ,QAAS,EACX,EACAA,GAAK,UAAU,aAAe,SAAS9tC,EAAMxV,EAAGC,EAAGqf,EAAU3c,EAASmhD,EAAU,CAC9E9jD,EAAIA,IAAM,OAASA,EAAI,EACvBC,EAAIA,IAAM,OAASA,EAAI,EACvBqf,EAAWA,IAAa,OAASA,EAAW,GAC5C3c,EAAU,OAAO,OAAO,CAAC,EAAG,KAAK,qBAAsBA,CAAO,EAC9D,IAAMwpB,EAAY,EAAI,KAAK,WAAa7M,EAClCtO,EAAS,KAAK,eAAewE,EAAM7S,CAAO,EAC5Cw6B,EACJ,GAAIx6B,EAAQ,QAAS,CACnB,IAAMqI,EAASrI,EAAQ,QAAU,KAAK,SAAS,qBAAqB,EACpEw6B,EAAiB,KAAK,SAAS,iBAAiBnyB,EAAQrI,EAAQ,QAAQ,CAC1E,CACA,QAAStF,EAAI,EAAGA,EAAI2T,EAAO,OAAQ3T,GAAK,EAAG,CACzC,IAAMsV,EAAQ3B,EAAO3T,CAAC,EAKtB,GAJAymD,EAAS,KAAK,KAAMnxC,EAAO3S,EAAGC,EAAGqf,EAAU3c,CAAO,EAC9CgQ,EAAM,eACR3S,GAAK2S,EAAM,aAAewZ,GAExBxpB,EAAQ,SAAWtF,EAAI2T,EAAO,OAAS,EAAG,CAC5C,IAAM+yC,EAAe5mB,EAAiB,KAAK,SAAS,gBAAgBA,EAAgBxqB,EAAM,MAAO3B,EAAO3T,EAAI,CAAC,EAAE,KAAK,EAAI,KAAK,gBAAgBsV,EAAO3B,EAAO3T,EAAI,CAAC,CAAC,EACjK2C,GAAK+jD,EAAe53B,CACtB,CACIxpB,EAAQ,cACV3C,GAAK2C,EAAQ,cAAgB2c,EACpB3c,EAAQ,WACjB3C,GAAK2C,EAAQ,SAAW,IAAM2c,EAElC,CACA,OAAOtf,CACT,EACAsjD,GAAK,UAAU,QAAU,SAAS9tC,EAAMxV,EAAGC,EAAGqf,EAAU3c,EAAS,CAC/DA,EAAU,OAAO,OAAO,CAAC,EAAG,KAAK,qBAAsBA,CAAO,EAC9D,IAAMqhD,EAAW,IAAIpoD,GAGrB,GAFAooD,EAAS,QAAU,CAAC,EACpB19B,GAAe,KAAM09B,EAAU1kC,CAAQ,EACnC0kC,EAAS,OAAQ,CACnB,IAAMtkC,EAAQ,GAAKskC,EAAS,YAAc,KAAO1kC,EACjD0kC,EAAS,aAAetkC,CAC1B,CACA,YAAK,aAAalK,EAAMxV,EAAGC,EAAGqf,EAAU3c,EAAS,CAACgQ,EAAOsxC,EAAIC,EAAIC,IAAc,CAC7E,IAAMC,EAAYzxC,EAAM,QAAQsxC,EAAIC,EAAIC,EAAWxhD,EAAS,IAAI,EAChE,GAAIA,EAAQ,SAAWA,EAAQ,WAAY,CACzC,IAAMiC,EAASw/C,EAAU,QACzB,GAAIx/C,GAAUA,EAAO,OAAQ,CAC3B,QAASC,EAAI,EAAGA,EAAID,EAAO,OAAQC,IAAK,CACtC,IAAMgb,EAAQjb,EAAOC,CAAC,EACtBm/C,EAAS,QAAQ,KAAKnkC,CAAK,CAC7B,CACA,MACF,CACF,CACAmkC,EAAS,OAAOI,CAAS,CAC3B,CAAC,EACMJ,CACT,EACAV,GAAK,UAAU,SAAW,SAAS9tC,EAAMxV,EAAGC,EAAGqf,EAAU3c,EAAS,CAChEA,EAAU,OAAO,OAAO,CAAC,EAAG,KAAK,qBAAsBA,CAAO,EAC9D,IAAM0hD,EAAa,CAAC,EACpB,YAAK,aAAa7uC,EAAMxV,EAAGC,EAAGqf,EAAU3c,EAAS,SAASgQ,EAAOsxC,EAAIC,EAAIC,EAAW,CAClF,IAAMC,EAAYzxC,EAAM,QAAQsxC,EAAIC,EAAIC,EAAWxhD,EAAS,IAAI,EAChE0hD,EAAW,KAAKD,CAAS,CAC3B,CAAC,EACMC,CACT,EACAf,GAAK,UAAU,gBAAkB,SAAS9tC,EAAM8J,EAAU3c,EAAS,CACjE,OAAAA,EAAU,OAAO,OAAO,CAAC,EAAG,KAAK,qBAAsBA,CAAO,EACvD,KAAK,aAAa6S,EAAM,EAAG,EAAG8J,EAAU3c,EAAS,UAAW,CACnE,CAAC,CACH,EACA2gD,GAAK,UAAU,KAAO,SAAS3+C,EAAK6Q,EAAMxV,EAAGC,EAAGqf,EAAU3c,EAAS,CACpD,KAAK,QAAQ6S,EAAMxV,EAAGC,EAAGqf,EAAU3c,CAAO,EAClD,KAAKgC,CAAG,CACf,EACA2+C,GAAK,UAAU,WAAa,SAAS3+C,EAAK6Q,EAAMxV,EAAGC,EAAGqf,EAAU3c,EAAS,CACvEA,EAAU,OAAO,OAAO,CAAC,EAAG,KAAK,qBAAsBA,CAAO,EAC9D,KAAK,aAAa6S,EAAMxV,EAAGC,EAAGqf,EAAU3c,EAAS,SAASgQ,EAAOsxC,EAAIC,EAAIC,EAAW,CAClFxxC,EAAM,WAAWhO,EAAKs/C,EAAIC,EAAIC,EAAWxhD,EAAS,IAAI,CACxD,CAAC,CACH,EACA2gD,GAAK,UAAU,YAAc,SAAS3+C,EAAK6Q,EAAMxV,EAAGC,EAAGqf,EAAU3c,EAAS,CACxEA,EAAU,OAAO,OAAO,CAAC,EAAG,KAAK,qBAAsBA,CAAO,EAC9D,KAAK,aAAa6S,EAAMxV,EAAGC,EAAGqf,EAAU3c,EAAS,SAASgQ,EAAOsxC,EAAIC,EAAIC,EAAW,CAClFxxC,EAAM,YAAYhO,EAAKs/C,EAAIC,EAAIC,CAAS,CAC1C,CAAC,CACH,EACAb,GAAK,UAAU,eAAiB,SAASvoD,EAAM,CAC7C,IAAM2a,GAAgB,KAAK,MAAM,SAAW,KAAK,MAAM,WAAa,KAAK,MAAM,SAAS3a,CAAI,EAC5F,GAAI2a,EACF,OAAOA,EAAa,EAExB,EACA4tC,GAAK,UAAU,SAAW,UAAW,CACnC,IAAMgB,EAAW,CAAC,EACZC,EAAQ,KACd,SAASC,EAAO7+C,EAAWF,EAAS,CAC7BE,IACH,QAAQ,KAAK,iBAAiBF,CAAO,EAAE,EACvC6+C,EAAS,KAAK7+C,CAAO,EAEzB,CACA,SAASg/C,EAAkB1pD,EAAM,CAC/B,IAAM2pD,EAAcH,EAAM,eAAexpD,CAAI,EAC7CypD,EACEE,GAAeA,EAAY,KAAK,EAAE,OAAS,EAC3C,cAAgB3pD,EAAO,aACzB,CACF,CAOA,GANA0pD,EAAkB,YAAY,EAC9BA,EAAkB,YAAY,EAC9BA,EAAkB,cAAc,EAChCA,EAAkB,WAAW,EAC7BA,EAAkB,SAAS,EAC3BD,EAAO,KAAK,WAAa,EAAG,0BAA0B,EAClD,KAAK,OAAO,KAAM,CACpB,IAAMG,EAAa,KAAK,OAAO,KAAK,iBAChCC,EAAa,GACjB,QAAShkD,EAAI,EAAGA,EAAI+jD,EAAW,OAAQ/jD,IAAK,CAC1C,IAAMikD,EAAiBF,EAAW/jD,CAAC,EAAE,QAErC,GADA4jD,EAAOI,EAAaD,EAAW/jD,CAAC,EAAE,QAAS,wEAAwEikD,CAAc,gBAAgBD,CAAU,EAAE,EACzJA,EAAaD,EAAW/jD,CAAC,EAAE,QAC7B,MAEFgkD,EAAaC,CACf,CACF,CACA,OAAOP,CACT,EACAhB,GAAK,UAAU,SAAW,UAAW,CACnC,OAAO3nB,GAAa,YAAY,IAAI,CACtC,EACA2nB,GAAK,UAAU,SAAW,UAAW,CACnC,eAAQ,KAAK,8DAA8D,EACpE,KAAK,cAAc,CAC5B,EACAA,GAAK,UAAU,cAAgB,UAAW,CAExC,IAAM15C,EADY,KAAK,SAAS,EACR,OAAO,EACzBzG,EAAS,IAAI,YAAYyG,EAAM,MAAM,EACrCk7C,EAAW,IAAI,WAAW3hD,CAAM,EACtC,QAAS9F,EAAI,EAAGA,EAAIuM,EAAM,OAAQvM,IAChCynD,EAASznD,CAAC,EAAIuM,EAAMvM,CAAC,EAEvB,OAAO8F,CACT,EACAmgD,GAAK,UAAU,SAAW,UAAW,CACnC,QAAQ,MAAM,0EAA0E,CAC1F,EACAA,GAAK,UAAU,kBAAoB,CACjC,OAAQ,EAER,WAAY,EAEZ,SAAU,EAEV,SAAU,EAEV,UAAW,GAEX,KAAM,GAEN,QAAS,GAET,kBAAmB,IAEnB,IAAK,IAEL,QAAS,GAEX,EACAA,GAAK,UAAU,eAAiB,CAC9B,KAAM,EAEN,OAAQ,EAER,UAAW,EAEX,SAAU,EAEV,OAAQ,GAER,UAAW,GAEX,SAAU,EAEZ,EACAA,GAAK,UAAU,eAAiB,CAC9B,gBAAiB,EACjB,gBAAiB,EACjB,UAAW,EACX,eAAgB,EAChB,OAAQ,EACR,cAAe,EACf,SAAU,EACV,eAAgB,EAChB,eAAgB,CAClB,EACAA,GAAK,UAAU,gBAAkB,CAC/B,KAAM,IACN,YAAa,IACb,MAAO,IACP,OAAQ,IACR,OAAQ,IACR,UAAW,IACX,KAAM,IACN,WAAY,IACZ,MAAO,GACT,EACA,IAAI5nD,GAAe4nD,GAGnB,SAASyB,GAAen+C,EAAM6H,EAAO,CACnC,IAAMwG,EAAI,IAAIpZ,EAAc,OAAO+K,EAAM6H,CAAK,EACxCklB,EAAoB1e,EAAE,YAAY,EAClC2e,EAAoB3e,EAAE,YAAY,EACpC0e,IAAsB,GACxB,QAAQ,KAAK,kCAAkCA,CAAiB,IAAIC,CAAiB,EAAE,EAEzF,IAAM/W,EAAU,CACd8W,EACAC,CACF,EACMoxB,EAAqB/vC,EAAE,eAAe,UAAW,CACrD,OAAO,KAAK,wBAAwB,CACtC,CAAC,EACK4L,EAAe5L,EAAE,eAAe,UAAW,CAC/C,OAAO,KAAK,sBAAsB,CACpC,CAAC,EACKgwC,EAAMhwC,EAAE,eAAe,UAAW,CACtC,OAAO,KAAK,sBAAsB,CACpC,CAAC,EACKiwC,EAAMjwC,EAAE,eAAe,UAAW,CACtC,OAAO,KAAK,sBAAsB,CACpC,CAAC,EACD,MAAO,CACL,QAAA4H,EACA,mBAAAmoC,EACA,aAAAnkC,EACA,IAAAokC,EACA,IAAAC,CACF,CACF,CACA,SAASC,IAAgB,CACvB,QAAQ,KAAK,8CAA8C,CAC7D,CACA,IAAIC,GAAe,CAAE,KAAMD,GAAe,MAAOJ,EAAe,EAG5DM,GAAa,UAAW,CAC1B,MAAO,CACL,SAAU,KAAK,aAAan4C,EAAO,QAAQ,EAC3C,aAAc,KAAK,UAAUA,EAAO,QAAQA,EAAO,UAAU,CAAC,CAChE,CACF,EACIo4C,GAAa,UAAW,CAC1B,IAAI12C,EAAS,KAAK,YAAY,EAK9B,GAJAhJ,EAAc,SACZgJ,IAAW,GAAKA,IAAW,GAAKA,IAAW,EAC3C,uCACF,EACIA,IAAW,EACb,MAAO,CAAE,WAAY,KAAK,WAAW,CAAE,EAClC,GAAIA,IAAW,EACpB,MAAO,CAAE,WAAY,KAAK,WAAW,CAAE,EAClC,GAAIA,IAAW,EACpB,MAAO,CAAE,WAAY,KAAK,WAAW,CAAE,CAE3C,EACI22C,GAAW,UAAW,CACxB,OAAO,KAAK,UAAUr4C,EAAO,QAAQo4C,EAAU,CAAC,CAClD,EACIE,GAAe,UAAW,CAC5B,MAAO,CACL,SAAU,KAAK,aAAat4C,EAAO,QAAQ,EAC3C,UAAW,KAAK,UAAUA,EAAO,QAAQq4C,EAAQ,CAAC,CACpD,CACF,EACIE,GAAgB,UAAW,CAC7B,YAAK,YAAY,EACV,KAAK,UAAUv4C,EAAO,QAAQA,EAAO,QAAQ,CAAC,CACvD,EACA,SAASw4C,GAAe9+C,EAAM6H,EAAO,CACnCA,EAAQA,GAAS,EACjB,IAAMwG,EAAI,IAAI/H,EAAOtG,EAAM6H,CAAK,EAC1Bqf,EAAe7Y,EAAE,aAAa,CAAC,EACrCrP,EAAc,SACZkoB,IAAiB,GAAKA,IAAiB,KAAOA,IAAiB,IAC/D,iCACF,EACA,IAAI63B,EAAO,CACT,QAAS73B,EACT,SAAU7Y,EAAE,aAAa/H,EAAO,QAAQ,EACxC,WAAY+H,EAAE,aAAaowC,EAAU,EACrC,aAAcpwC,EAAE,aAAauwC,EAAY,EACzC,mBAAoBvwC,EAAE,aAAa/H,EAAO,QAAQ,CACpD,EACA,OAAI4gB,GAAgB,MAClB63B,EAAK,cAAgB1wC,EAAE,aAAawwC,EAAa,GAE5CE,CACT,CACA,IAAIC,GAAe,CAAE,MAAOF,EAAe,EAGvCG,GAAmB,IAAI,MAAM,EAAE,EACnCA,GAAiB,CAAC,EAAI,UAAyB,CAC7C,IAAMp3C,EAAQ,KAAK,OAAS,KAAK,eAC3Bq3C,EAAY,KAAK,YAAY,EACnC,GAAIA,IAAc,EAChB,MAAO,CACL,UAAW,EACX,SAAU,KAAK,aAAa54C,EAAO,QAAQ,EAC3C,MAAO,KAAK,iBAAiB,CAC/B,EACK,GAAI44C,IAAc,EACvB,MAAO,CACL,UAAW,EACX,SAAU,KAAK,aAAa54C,EAAO,QAAQ,EAC3C,OAAQ,KAAK,qBAAqB,CACpC,EAEFtH,EAAc,OAAO,GAAO,KAAO6I,EAAM,SAAS,EAAE,EAAI,6CAA6C,CACvG,EACAo3C,GAAiB,CAAC,EAAI,UAAyB,CAC7C,IAAMp3C,EAAQ,KAAK,OAAS,KAAK,eAC3Bs3C,EAAY,KAAK,YAAY,EACnCngD,EAAc,OAAOmgD,IAAc,GAAKA,IAAc,EAAG,KAAOt3C,EAAM,SAAS,EAAE,EAAI,6CAA6C,EAClI,IAAMkiB,EAAW,KAAK,aAAazjB,EAAO,QAAQ,EAC5C84C,EAAe,KAAK,YAAY,EAChCC,EAAe,KAAK,YAAY,EACtC,GAAIF,IAAc,EAChB,MAAO,CACL,UAAAA,EACA,SAAAp1B,EACA,aAAAq1B,EACA,aAAAC,EACA,SAAU,KAAK,UAAU/4C,EAAO,QAAQA,EAAO,KAAK,UAAW,CAC7D,MAAO,CAEL,YAAa,KAAK,YAAY,EAC9B,OAAQ,KAAK,iBAAiB84C,CAAY,EAC1C,OAAQ,KAAK,iBAAiBC,CAAY,CAC5C,CACF,CAAC,CAAC,CAAC,CACL,EACK,GAAIF,IAAc,EAAG,CAC1B,IAAMG,EAAY,KAAK,aAAah5C,EAAO,QAAQ,EAC7Ci5C,EAAY,KAAK,aAAaj5C,EAAO,QAAQ,EAC7Ck5C,EAAc,KAAK,YAAY,EAC/BC,EAAc,KAAK,YAAY,EACrC,MAAO,CAEL,UAAAN,EACA,SAAAp1B,EACA,aAAAq1B,EACA,aAAAC,EACA,UAAAC,EACA,UAAAC,EACA,YAAAC,EACA,YAAAC,EACA,aAAc,KAAK,UAAUD,EAAal5C,EAAO,KAAKm5C,EAAa,UAAW,CAC5E,MAAO,CACL,OAAQ,KAAK,iBAAiBL,CAAY,EAC1C,OAAQ,KAAK,iBAAiBC,CAAY,CAC5C,CACF,CAAC,CAAC,CACJ,CACF,CACF,EACAJ,GAAiB,CAAC,EAAI,UAAyB,CAC7C,MAAO,CAAE,MAAO,6BAA8B,CAChD,EACAA,GAAiB,CAAC,EAAI,UAAyB,CAC7C,MAAO,CAAE,MAAO,6BAA8B,CAChD,EACAA,GAAiB,CAAC,EAAI,UAAyB,CAC7C,MAAO,CAAE,MAAO,6BAA8B,CAChD,EACAA,GAAiB,CAAC,EAAI,UAAyB,CAC7C,MAAO,CAAE,MAAO,6BAA8B,CAChD,EACAA,GAAiB,CAAC,EAAI,UAAyB,CAC7C,MAAO,CAAE,MAAO,6BAA8B,CAChD,EACAA,GAAiB,CAAC,EAAI,UAAyB,CAC7C,MAAO,CAAE,MAAO,6BAA8B,CAChD,EACAA,GAAiB,CAAC,EAAI,UAAwB,CAC5C,MAAO,CAAE,MAAO,6BAA8B,CAChD,EACA,SAASS,GAAe1/C,EAAM6H,EAAO,CACnCA,EAAQA,GAAS,EACjB,IAAMwG,EAAI,IAAI/H,EAAOtG,EAAM6H,CAAK,EAC1Bqf,EAAe7Y,EAAE,aAAa,CAAC,EAErC,OADArP,EAAc,SAASkoB,IAAiB,GAAKA,IAAiB,IAAK,kCAAoCA,CAAY,EAC/GA,IAAiB,EACZ,CACL,QAASA,EACT,QAAS7Y,EAAE,gBAAgB,EAC3B,SAAUA,EAAE,iBAAiB,EAC7B,QAASA,EAAE,gBAAgB4wC,EAAgB,CAC7C,EAEO,CACL,QAAS/3B,EACT,QAAS7Y,EAAE,gBAAgB,EAC3B,SAAUA,EAAE,iBAAiB,EAC7B,QAASA,EAAE,gBAAgB4wC,EAAgB,EAC3C,WAAY5wC,EAAE,2BAA2B,CAC3C,CAEJ,CACA,IAAIsxC,GAAkB,IAAI,MAAM,EAAE,EAClC,SAASC,GAAcC,EAAM,CAC3B,OAAO,IAAIz6C,EAAc,MAAM,OAAQ,CACrC,CAAE,KAAM,UAAW,KAAM,QAAS,MAAO,KAAM,EAC/C,CAAE,KAAM,UAAW,KAAM,QAAS,MAAO,IAAIA,EAAc,WAAWy6C,EAAK,OAAO,CAAE,EACpF,CAAE,KAAM,WAAY,KAAM,QAAS,MAAO,IAAIz6C,EAAc,YAAYy6C,EAAK,QAAQ,CAAE,EACvF,CAAE,KAAM,UAAW,KAAM,QAAS,MAAO,IAAIz6C,EAAc,WAAWy6C,EAAK,QAASF,EAAe,CAAE,CACvG,CAAC,CACH,CACA,IAAIG,GAAe,CAAE,MAAOJ,GAAgB,KAAME,EAAc,EAGhE,SAASG,GAAsB1xC,EAAG,CAChC,IAAM2xC,EAAQ,CAAC,EACf3xC,EAAE,KAAK,QAAQ,EACf,IAAM4xC,EAAkB5xC,EAAE,YAAY,EACtCrP,EAAc,SAASihD,IAAoB,EAAG,qCAAqC,EACnF5xC,EAAE,KAAK,SAAU,CAAC,EAClB,IAAM6xC,EAAS7xC,EAAE,YAAY,EAC7BA,EAAE,KAAK,SAAU,CAAC,EAClB,QAAS5X,EAAI,EAAGA,EAAIypD,EAAQzpD,GAAK,EAAG,CAClC,IAAM+/B,EAAYnoB,EAAE,YAAY,EAC1BooB,EAAapoB,EAAE,YAAY,EAC3B3O,EAAQ2O,EAAE,WAAW,EAC3B2xC,EAAMxpB,EAAY,IAAMC,CAAU,EAAI/2B,CACxC,CACA,OAAOsgD,CACT,CACA,SAASG,GAAkB9xC,EAAG,CAC5B,IAAM2xC,EAAQ,CAAC,EACf3xC,EAAE,KAAK,QAAQ,EACCA,EAAE,WAAW,EACf,GACZ,QAAQ,KAAK,4CAA4C,EAE3DA,EAAE,KAAK,OAAO,EAEd,IAAM4xC,EADW5xC,EAAE,YAAY,EACI,IAEnC,GADAA,EAAE,KAAK,QAAQ,EACX4xC,IAAoB,EAAG,CACzB,IAAMC,EAAS7xC,EAAE,YAAY,EAC7BA,EAAE,KAAK,SAAU,CAAC,EAClB,QAAS,EAAI,EAAG,EAAI6xC,EAAQ,GAAK,EAAG,CAClC,IAAM1pB,EAAYnoB,EAAE,YAAY,EAC1BooB,EAAapoB,EAAE,YAAY,EAC3B3O,EAAQ2O,EAAE,WAAW,EAC3B2xC,EAAMxpB,EAAY,IAAMC,CAAU,EAAI/2B,CACxC,CACF,CACA,OAAOsgD,CACT,CACA,SAASI,GAAepgD,EAAM6H,EAAO,CACnC,IAAMwG,EAAI,IAAIpZ,EAAc,OAAO+K,EAAM6H,CAAK,EACxCqf,EAAe7Y,EAAE,YAAY,EACnC,GAAI6Y,IAAiB,EACnB,OAAO64B,GAAsB1xC,CAAC,EACzB,GAAI6Y,IAAiB,EAC1B,OAAOi5B,GAAkB9xC,CAAC,EAE1B,MAAM,IAAI,MAAM,mCAAqC6Y,EAAe,IAAI,CAE5E,CACA,IAAIm5B,GAAe,CAAE,MAAOD,EAAe,EAG3C,SAASE,GAAetgD,EAAM6H,EAAO2e,EAAW+5B,EAAc,CAC5D,IAAMlyC,EAAI,IAAIpZ,EAAc,OAAO+K,EAAM6H,CAAK,EACxC24C,EAAUD,EAAelyC,EAAE,YAAcA,EAAE,WAC3CoyC,EAAe,CAAC,EACtB,QAAShqD,EAAI,EAAGA,EAAI+vB,EAAY,EAAG/vB,GAAK,EAAG,CACzC,IAAIiqD,EAAcF,EAAQ,KAAKnyC,CAAC,EAC5BkyC,IACFG,GAAe,GAEjBD,EAAa,KAAKC,CAAW,CAC/B,CACA,OAAOD,CACT,CACA,IAAIE,GAAe,CAAE,MAAOL,EAAe,EAG3C,SAASM,GAA0B5gD,EAAM6gD,EAAW,CAClD,IAAMC,EAAe,CAAC,EAClBzyC,EAAI,GACR,QAAS5X,EAAI,EAAGA,EAAIoqD,EAAWpqD,GAAK,EAAG,CACrC,IAAMmB,EAAM3C,EAAc,OAAO+K,EAAMqO,CAAC,EAClC0yC,EAAW9rD,EAAc,SAAS+K,EAAMqO,EAAI,CAAC,EAC7ClR,EAASlI,EAAc,SAAS+K,EAAMqO,EAAI,CAAC,EAC3CpW,EAAShD,EAAc,SAAS+K,EAAMqO,EAAI,EAAE,EAClDyyC,EAAa,KAAK,CAAE,IAAAlpD,EAAK,SAAAmpD,EAAU,OAAA5jD,EAAQ,OAAAlF,EAAQ,YAAa,EAAM,CAAC,EACvEoW,GAAK,EACP,CACA,OAAOyyC,CACT,CACA,SAASE,GAAsBhhD,EAAM6gD,EAAW,CAC9C,IAAMC,EAAe,CAAC,EAClBzyC,EAAI,GACR,QAAS5X,EAAI,EAAGA,EAAIoqD,EAAWpqD,GAAK,EAAG,CACrC,IAAMmB,EAAM3C,EAAc,OAAO+K,EAAMqO,CAAC,EAClClR,EAASlI,EAAc,SAAS+K,EAAMqO,EAAI,CAAC,EAC3C4yC,EAAahsD,EAAc,SAAS+K,EAAMqO,EAAI,CAAC,EAC/C6yC,EAAajsD,EAAc,SAAS+K,EAAMqO,EAAI,EAAE,EAClD8yC,EACAF,EAAaC,EACfC,EAAc,OAEdA,EAAc,GAEhBL,EAAa,KAAK,CAChB,IAAAlpD,EACA,OAAAuF,EACA,YAAAgkD,EACA,iBAAkBF,EAClB,OAAQC,CACV,CAAC,EACD7yC,GAAK,EACP,CACA,OAAOyyC,CACT,CACA,SAASM,GAAgBphD,EAAMqhD,EAAY,CACzC,GAAIA,EAAW,cAAgB,OAAQ,CACrC,IAAMC,EAAW,IAAI,WAAWthD,EAAK,OAAQqhD,EAAW,OAAS,EAAGA,EAAW,iBAAmB,CAAC,EAC7FE,EAAY,IAAI,WAAWF,EAAW,MAAM,EAElD,GADA3oD,GAAgB4oD,EAAUC,CAAS,EAC/BA,EAAU,aAAeF,EAAW,OACtC,MAAM,IAAI,MAAM,wBAA0BA,EAAW,IAAM,oDAAoD,EAGjH,MAAO,CAAE,KADI,IAAI,SAASE,EAAU,OAAQ,CAAC,EACxB,OAAQ,CAAE,CACjC,KACE,OAAO,CAAE,KAAAvhD,EAAM,OAAQqhD,EAAW,MAAO,CAE7C,CACA,SAASjsD,GAAYmH,EAAQsZ,EAAM,CAAC,EAAG,CACrC,IAAI2rC,EACAhtB,EACEvf,EAAO,IAAIngB,GAAa,CAAE,MAAO,EAAK,CAAC,EACzCyH,EAAO,cAAgB,cACzBA,EAAS,IAAI,WAAWA,CAAM,EAAE,QAElC,IAAMyD,EAAO,IAAI,SAASzD,EAAQ,CAAC,EAC/BskD,EACAC,EAAe,CAAC,EACdW,EAAYxsD,EAAc,OAAO+K,EAAM,CAAC,EAC9C,GAAIyhD,IAAc,WAAmCA,IAAc,QAAUA,IAAc,OACzFxsC,EAAK,eAAiB,WACtB4rC,EAAY5rD,EAAc,UAAU+K,EAAM,CAAC,EAC3C8gD,EAAeF,GAA0B5gD,EAAM6gD,CAAS,UAC/CY,IAAc,OACvBxsC,EAAK,eAAiB,MACtB4rC,EAAY5rD,EAAc,UAAU+K,EAAM,CAAC,EAC3C8gD,EAAeF,GAA0B5gD,EAAM6gD,CAAS,UAC/CY,IAAc,OAAQ,CAC/B,IAAMt3C,EAASlV,EAAc,OAAO+K,EAAM,CAAC,EAC3C,GAAImK,IAAW,UACb8K,EAAK,eAAiB,mBACb9K,IAAW,OACpB8K,EAAK,eAAiB,UAEtB,OAAM,IAAI,MAAM,+BAAiCwsC,CAAS,EAE5DZ,EAAY5rD,EAAc,UAAU+K,EAAM,EAAE,EAC5C8gD,EAAeE,GAAsBhhD,EAAM6gD,CAAS,CACtD,SAAWY,IAAc,OAAQ,CAC/B,IAAMC,EAAQ,+EACd,MAAM,IAAI,MAAM,oEAAsEA,CAAK,CAC7F,KACE,OAAM,IAAI,MAAM,kCAAoCD,CAAS,EAE/D,IAAIE,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GACAC,GACAC,GACAC,GACAC,GACAt0C,EACJ,QAAS5X,EAAI,EAAGA,EAAIoqD,EAAWpqD,GAAK,EAAG,CACrC,IAAM4qD,EAAaP,EAAarqD,CAAC,EAC7BiK,EACJ,OAAQ2gD,EAAW,IAAK,CACtB,IAAK,OACHY,EAAiBZ,EACjB,MACF,IAAK,OACH3gD,EAAQ0gD,GAAgBphD,EAAMqhD,CAAU,EACxCpsC,EAAK,OAAO,KAAOT,GAAa,MAAM9T,EAAM,KAAMA,EAAM,MAAM,EAC9DuU,EAAK,SAAW,IAAIC,GAAaD,EAAK,OAAO,IAAI,EACjD,MACF,IAAK,OACHvU,EAAQ0gD,GAAgBphD,EAAMqhD,CAAU,EACxChzC,EAAI,IAAIpZ,EAAc,OAAOyL,EAAM,KAAMA,EAAM,MAAM,EACrDuU,EAAK,OAAO,IAAM5G,EAAE,eAAegzC,EAAW,OAAS,CAAC,EACxD,MACF,IAAK,OACHQ,EAAiBR,EACjB,MACF,IAAK,OACHS,EAAiBT,EACjB,MACF,IAAK,OACHU,EAAiBV,EACjB,MACF,IAAK,OACHW,EAAiBX,EACjB,MACF,IAAK,OACH3gD,EAAQ0gD,GAAgBphD,EAAMqhD,CAAU,EACxChzC,EAAI,IAAIpZ,EAAc,OAAOyL,EAAM,KAAMA,EAAM,MAAM,EACrDuU,EAAK,OAAO,KAAO5G,EAAE,cAAcgzC,EAAW,MAAM,EACpD,MACF,IAAK,OACH3gD,EAAQ0gD,GAAgBphD,EAAMqhD,CAAU,EACxCpsC,EAAK,OAAO,KAAOgR,GAAa,MAAMvlB,EAAM,KAAMA,EAAM,MAAM,EAC9DuU,EAAK,WAAaA,EAAK,OAAO,KAAK,WACnCusC,EAAmBvsC,EAAK,OAAO,KAAK,iBACpC,MACF,IAAK,OACHvU,EAAQ0gD,GAAgBphD,EAAMqhD,CAAU,EACxCpsC,EAAK,OAAO,KAAOoR,GAAa,MAAM3lB,EAAM,KAAMA,EAAM,MAAM,EAC9DuU,EAAK,SAAWA,EAAK,OAAO,KAAK,SACjCA,EAAK,UAAYA,EAAK,OAAO,KAAK,UAClCA,EAAK,iBAAmBA,EAAK,OAAO,KAAK,iBACzC,MACF,IAAK,OACHstC,GAAiBlB,EACjB,MACF,IAAK,OACHiB,EAAiBjB,EACjB,MACF,IAAK,OACH3gD,EAAQ0gD,GAAgBphD,EAAMqhD,CAAU,EACxC7sB,EAAYpN,GAAa,MAAM1mB,EAAM,KAAMA,EAAM,MAAM,EACvD,MACF,IAAK,OACHA,EAAQ0gD,GAAgBphD,EAAMqhD,CAAU,EACxCpsC,EAAK,OAAO,KAAOgW,GAAa,MAAMvqB,EAAM,KAAMA,EAAM,MAAM,EAC9D,MACF,IAAK,OACHA,EAAQ0gD,GAAgBphD,EAAMqhD,CAAU,EACxCpsC,EAAK,OAAO,KAAOoD,GAAa,MAAM3X,EAAM,KAAMA,EAAM,MAAM,EAC9D,MACF,IAAK,OACHA,EAAQ0gD,GAAgBphD,EAAMqhD,CAAU,EACxCpsC,EAAK,OAAO,KAAOuS,GAAa,MAAM9mB,EAAM,KAAMA,EAAM,MAAM,EAC9DuU,EAAK,UAAYA,EAAK,OAAO,KAAK,UAClC,MACF,IAAK,OACHytC,GAAiBrB,EACjB,MACF,IAAK,OACH3gD,EAAQ0gD,GAAgBphD,EAAMqhD,CAAU,EACxCpsC,EAAK,OAAO,IAAM8S,GAAY,MAAMrnB,EAAM,KAAMA,EAAM,MAAM,EAC5D,MACF,IAAK,OACHA,EAAQ0gD,GAAgBphD,EAAMqhD,CAAU,EACxCpsC,EAAK,OAAO,KAAO0T,GAAa,MAAMjoB,EAAM,KAAMA,EAAM,MAAM,EAC9DuU,EAAK,WAAa,IAAIK,GAAWL,EAAK,OAAO,IAAI,EACjD,MACF,IAAK,OACHvU,EAAQ0gD,GAAgBphD,EAAMqhD,CAAU,EACxChzC,EAAI,IAAIpZ,EAAc,OAAOyL,EAAM,KAAMA,EAAM,MAAM,EACrDuU,EAAK,OAAO,KAAO5G,EAAE,cAAcgzC,EAAW,MAAM,EACpD,MACF,IAAK,OACHa,EAAiBb,EACjB,MACF,IAAK,OACHoB,GAAiBpB,EACjB,MACF,IAAK,OACHM,EAAgBN,EAChB,MACF,IAAK,OACHO,EAAiBP,EACjB,MACF,IAAK,OACHmB,GAAiBnB,EACjB,MACF,IAAK,OACHc,EAAiBd,EACjB,MACF,IAAK,OACHe,EAAiBf,EACjB,MACF,IAAK,OACHgB,EAAiBhB,EACjB,MACF,IAAK,OACHsB,GAAiBtB,EACjB,MACF,IAAK,OACH,GAAI,CACF3gD,EAAQ0gD,GAAgBphD,EAAMqhD,CAAU,EACxCpsC,EAAK,OAAO,KAAO+a,GAAa,MAAMtvB,EAAM,KAAMA,EAAM,MAAM,CAChE,OAASK,GAAG,CACV,QAAQ,KAAK,uCAAuC,EACpD,QAAQ,KAAKA,EAAC,CAChB,CACA,MACF,IAAK,OACHL,EAAQ0gD,GAAgBphD,EAAMqhD,CAAU,EACxCpsC,EAAK,OAAO,IAAMqc,GAAY,MAAM5wB,EAAM,KAAMA,EAAM,MAAM,EAC5D,MACF,QACE,KACJ,CACF,CACA,IAAM6zB,GAAY6sB,GAAgBphD,EAAM0iD,EAAc,EAGtD,GAFAztC,EAAK,OAAO,KAAO/D,GAAa,MAAMqjB,GAAU,KAAMA,GAAU,OAAQC,CAAS,EACjFvf,EAAK,MAAQA,EAAK,OAAO,KACrBitC,GAAkBO,GAAgB,CACpC,IAAMlC,EAAeiB,IAAqB,EACpCoB,EAAYxB,GAAgBphD,EAAMyiD,EAAc,EAChDI,EAAclC,GAAa,MAAMiC,EAAU,KAAMA,EAAU,OAAQ3tC,EAAK,UAAWsrC,CAAY,EAC/FuC,GAAY1B,GAAgBphD,EAAMkiD,CAAc,EACtDjtC,EAAK,OAASuqB,GAAa,MAAMsjB,GAAU,KAAMA,GAAU,OAAQD,EAAa5tC,EAAMY,CAAG,CAC3F,SAAW8rC,EAAe,CACxB,IAAM9gC,EAAWugC,GAAgBphD,EAAM2hD,CAAa,EACpDj8B,GAAY,MAAM7E,EAAS,KAAMA,EAAS,OAAQ5L,EAAMY,CAAG,CAC7D,SAAW+rC,EAAgB,CACzB,IAAMmB,EAAY3B,GAAgBphD,EAAM4hD,CAAc,EACtDl8B,GAAY,MAAMq9B,EAAU,KAAMA,EAAU,OAAQ9tC,EAAMY,CAAG,CAC/D,KACE,OAAM,IAAI,MAAM,sDAAsD,EAExE,IAAMge,GAAYutB,GAAgBphD,EAAMsiD,CAAc,EAGtD,GAFAz7B,GAAa,MAAM5R,EAAM4e,GAAU,KAAMA,GAAU,OAAQ5e,EAAK,iBAAkBA,EAAK,UAAWA,EAAK,OAAQY,CAAG,EAClHD,GAAcX,EAAMY,CAAG,EACnB2sC,GAAgB,CAClB,IAAMQ,EAAY5B,GAAgBphD,EAAMwiD,EAAc,EACtDvtC,EAAK,aAAeorC,GAAa,MAAM2C,EAAU,KAAMA,EAAU,MAAM,CACzE,MACE/tC,EAAK,aAAe,CAAC,EAEvB,GAAIktC,EAAgB,CAClB,IAAMc,EAAY7B,GAAgBphD,EAAMmiD,CAAc,EACtDltC,EAAK,OAAO,KAAO+pC,GAAa,MAAMiE,EAAU,KAAMA,EAAU,MAAM,CACxE,CACA,GAAIb,EAAgB,CAClB,IAAMc,EAAY9B,GAAgBphD,EAAMoiD,CAAc,EACtDntC,EAAK,OAAO,KAAO6qC,GAAa,MAAMoD,EAAU,KAAMA,EAAU,MAAM,EACtEjuC,EAAK,SAAS,KAAK,CACrB,CACA,GAAIotC,EAAgB,CAClB,IAAMc,EAAY/B,GAAgBphD,EAAMqiD,CAAc,EACtDptC,EAAK,OAAO,KAAOmV,GAAa,MAAM+4B,EAAU,KAAMA,EAAU,MAAM,CACxE,CACA,GAAItB,EAAgB,CAClB,IAAMuB,EAAYhC,GAAgBphD,EAAM6hD,CAAc,EACtD5sC,EAAK,OAAO,KAAOsX,GAAa,MAAM62B,EAAU,KAAMA,EAAU,OAAQnuC,EAAK,KAAK,CACpF,CACA,GAAI6sC,EAAgB,CAClB,IAAMuB,EAAYjC,GAAgBphD,EAAM8hD,CAAc,EACtD7sC,EAAK,OAAO,KAAOmZ,GAAa,MAAMi1B,EAAU,KAAMA,EAAU,OAAQpuC,EAAK,OAAO,IAAI,CAC1F,CACA,GAAI8sC,EAAgB,CACbF,GACH,QAAQ,KAAK,2FAA2F,EAErGK,GACH,QAAQ,KAAK,wGAAwG,EAEvH,IAAMoB,EAAYlC,GAAgBphD,EAAM+hD,CAAc,EACtD9sC,EAAK,OAAO,KAAO2a,GAAa,MAAM0zB,EAAU,KAAMA,EAAU,OAAQruC,EAAK,OAAO,KAAMA,EAAK,MAAM,CACvG,CACA,GAAI+sC,EAAgB,CACbH,GACH,QAAQ,KAAK,2FAA2F,EAErG5sC,EAAK,OAAO,KACf,QAAQ,KAAK,iFAAiF,EAE3FitC,GACH,QAAQ,KAAK,wGAAwG,EAEvH,IAAMqB,EAAYnC,GAAgBphD,EAAMgiD,CAAc,EACtD/sC,EAAK,OAAO,KAAOsa,GAAa,MAAMg0B,EAAU,KAAMA,EAAU,OAAQtuC,EAAK,OAAO,KAAMA,EAAK,OAAO,KAAO,CAAC,CAAC,CACjH,CACA,GAAIgtC,EAAgB,CACbJ,GACH,QAAQ,KAAK,4FAA4F,EAE3G,IAAM2B,EAAYpC,GAAgBphD,EAAMiiD,CAAc,EACtDhtC,EAAK,OAAO,KAAOia,GAAa,MAAMs0B,EAAU,KAAMA,EAAU,OAAQvuC,EAAK,OAAO,IAAI,CAC1F,CACA,GAAIstC,GAAgB,CACbV,GACH,QAAQ,KAAK,4FAA4F,EAEtGS,GACH,QAAQ,KAAK,8DAA8D,EAE7E,IAAMmB,EAAYrC,GAAgBphD,EAAMuiD,EAAc,EACtDttC,EAAK,OAAO,KAAOupC,GAAa,MAAMiF,EAAU,KAAMA,EAAU,OAAQxuC,EAAK,OAAO,IAAI,CAC1F,CACA,GAAI0tC,GAAgB,CAClB,IAAMjuB,EAAY0sB,GAAgBphD,EAAM2iD,EAAc,EACtD1tC,EAAK,OAAO,KAAOuV,GAAa,MAAMkK,EAAU,KAAMA,EAAU,MAAM,EACtEzf,EAAK,MAAQA,EAAK,OAAO,IAC3B,CACA,OAAAA,EAAK,SAAW,IAAIwkB,GAAexkB,CAAI,EAChCA,CACT,CACA,SAAS/f,IAAO,CACd,QAAQ,MAAM,+GAA+G,CAC/H,CACA,SAASC,IAAW,CAClB,QAAQ,MAAM,8EAA8E,CAC9F,CACA,OAAOT,EAAaE,CAAgB,CACtC,GAAG,GACF,SAAU8uD,EAAMC,EAAS,CAAM,OAAO,QAAW,YAAc,OAAO,IAAI,OAAOA,CAAO,EAAY,OAAOjwD,IAAW,UAAYA,GAAO,QAAQA,GAAO,QAAUiwD,EAAQ,EAAQD,EAAK,SAAWC,EAAQ,CAAG,GAAE,OAAO,KAAS,IAAc,KAAOlwD,GAAM,KAAO,CAAC,GAAGE,GAAS,QAAUA,EAAQ,EAAE,IC58fnS,IAAAiwD,GAA0B,SCE1B,OAAS,kBAAAC,GAAgB,WAAAC,OAAe,2BAGjC,IAAMC,GAA4BC,GAAQ,mBAAmB,EACvDC,GAAmCC,GAAe,WAAW,ECE7DC,GAET,OAAO,aAAgB,UACvB,aACA,OAAO,YAAY,KAAQ,WAG3B,YACqB,KCPnBC,GAAiB,IACrBL,GAAQ,gBAAkBE,GAAQ,eAE9BI,GAAS,IAAI,IAObC,GACJ,OAAO,SAAY,UAAc,QAC/B,QACA,CAAA,EAGEC,GAAc,CAClBC,EACAC,EACAC,EACAC,IACE,CACE,OAAOL,GAAQ,aAAgB,WACjCA,GAAQ,YAAYE,EAAKC,EAAMC,EAAMC,CAAE,EAGvC,QAAQ,MAAM,IAAID,CAAI,KAAKD,CAAI,KAAKD,CAAG,EAAE,CAE7C,EACMI,GAAcF,GAAiB,CAACL,GAAO,IAAIK,CAAI,EAM/CG,GAAYC,GAChB,CAAC,CAACA,GAAKA,IAAM,KAAK,MAAMA,CAAW,GAAKA,EAAI,GAAK,SAASA,CAAC,EAcvDC,GAAgBC,GACnBH,GAASG,CAAG,EACXA,GAAO,KAAK,IAAI,EAAG,CAAC,EAAI,WACxBA,GAAO,KAAK,IAAI,EAAG,EAAE,EAAI,YACzBA,GAAO,KAAK,IAAI,EAAG,EAAE,EAAI,YACzBA,GAAO,OAAO,iBAAmBC,GACjC,KALe,KAQbA,GAAN,cAAwB,KAAa,CACnC,YAAYC,EAAY,CACtB,MAAMA,CAAI,EACV,KAAK,KAAK,CAAC,CACb,CAAA,EFtEFC,GAAAC,GE4EMC,IAANF,GAAA,KAAW,CAeT,YAAYH,EAAaM,EAAyC,CAblEC,GAAA,aAEAA,GAAA,eAaE,GAAI,CAACC,EAAAA,GAAMC,IACT,MAAM,IAAI,UAAU,yCAAyC,EAG/D,KAAK,KAAO,IAAIH,EAAQN,CAAG,EAC3B,KAAK,OAAS,CAChB,CAhBA,OAAO,OAAOA,EAAW,CACvB,IAAMM,EAAUP,GAAaC,CAAG,EAChC,GAAI,CAACM,EAAS,MAAO,CAAA,EACrBE,EAAAA,GAAMC,GAAgB,IACtB,IAAMC,EAAI,IAAIF,GAAMR,EAAKM,CAAO,EAChC,OAAAE,EAAAA,GAAMC,GAAgB,IACfC,CACT,CAUA,KAAKZ,EAAQ,CACX,KAAK,KAAK,KAAK,QAAQ,EAAIA,CAC7B,CACA,KAAG,CACD,OAAO,KAAK,KAAK,EAAE,KAAK,MAAM,CAChC,CAAA,EAvBOW,GAAAA,YAAPE,EANFR,GAMSM,GAAyB,IANlCN,IF5EAA,GAAAS,GAAAR,GAAAS,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAR,GAAAS,GAAAC,GAAAC,EAAAC,GAAAC,GAAAtB,GAAAuB,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,EAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAlD,GEwrCamD,IAAPnD,GAAA,KAAe,CAsNnB,YAAYoD,EAAwD,CAtNhEtD,EAAA,KAAA0B,GAEK6B,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IAYTlE,GAAA,YAKAA,GAAA,sBAIAA,GAAA,qBAIAA,GAAA,uBAIAA,GAAA,uBAIAA,GAAA,mBAKAA,GAAA,uBAIAA,GAAA,oBAIAA,GAAA,qBAIAA,GAAA,wBAIAA,GAAA,iCAIAA,GAAA,2BAIAA,GAAA,+BAIAA,GAAA,mCAIAA,GAAA,yBAGAA,GAAA,4BAGAmE,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,GACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IAEAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IACAC,EAAAA,KAAAA,IAyYAC,EAAAA,KAAAA,GAAyC,IAAK,CAAE,GAChDC,EAAAA,KAAAA,GACE,IAAK,CAAE,GACTC,EAAAA,KAAAA,GAMY,IAAK,CAAE,GAGnBC,EAAAA,KAAAA,GAAsC,IAAM,IA6D5CC,EAAAA,KAAAA,GAA0C3E,GAAK,CAAE,GAEjD4E,EAAAA,KAAAA,GAIY,CAAC5E,EAAID,EAAI8E,IAAO,CAAE,GAE9BC,EAAAA,KAAAA,GAMqB,CACnBC,EACA7D,EACAtC,EACAoG,IACE,CACF,GAAIpG,GAAQoG,EACV,MAAM,IAAI,UACR,kEAAkE,EAGtE,MAAO,EACT,GA8IA/F,GAAA,KAACJ,GAAsB,YA3gBrB,GAAM,CACJ,IAAAH,EAAM,EACN,IAAAuG,EACA,cAAAC,EAAgB,EAChB,aAAAC,EACA,eAAAC,EACA,eAAAC,EACA,WAAAC,EACA,QAAAC,EACA,SAAAC,EACA,aAAAC,EACA,eAAAC,EACA,YAAAC,EACA,QAAAC,GAAU,EACV,aAAAC,EAAe,EACf,gBAAAb,GACA,YAAAc,EACA,WAAAC,GACA,yBAAAC,GACA,mBAAAC,GACA,2BAAAC,GACA,uBAAAC,GACA,iBAAAC,GACA,oBAAAC,GAAsB,EACtB,KAAAC,EAAI,EACF3D,EAIJ,GAFA,KAAK,oBAAsB0D,GAEvBC,KAAS,QACP,OAAOA,IAAM,KAAQ,WACvB,MAAM,IAAI,UACR,mDAAmD,EAOzD,GAFAC,EAAA,KAAKpD,GAAQmD,IAAQzI,IAEjBa,IAAQ,GAAK,CAACH,GAASG,CAAG,EAC5B,MAAM,IAAI,UAAU,0CAA0C,EAGhE,IAAM8H,GAAY9H,EAAMD,GAAaC,CAAG,EAAI,MAC5C,GAAI,CAAC8H,GACH,MAAM,IAAI,MAAM,sBAAwB9H,CAAG,EAO7C,GAJA6H,EAAA,KAAK3D,GAAOlE,GACZ6H,EAAA,KAAK1D,GAAW+C,IAChB,KAAK,aAAeC,GAAgBY,EAAA,KAAK5D,IACzC,KAAK,gBAAkBmC,GACnB,KAAK,gBAAiB,CACxB,GAAI,CAACyB,EAAA,KAAK5D,KAAY,CAAC,KAAK,aAC1B,MAAM,IAAI,UACR,oEAAoE,EAGxE,GAAI,OAAO,KAAK,iBAAoB,WAClC,MAAM,IAAI,UAAU,qCAAqC,CAE7D,CAEA,GAAIkD,KAAe,QAAa,OAAOA,IAAe,WACpD,MAAM,IAAI,UAAU,0CAA0C,EAIhE,GAFAQ,EAAA,KAAKrD,GAAc6C,IAEfD,IAAgB,QAAa,OAAOA,GAAgB,WACtD,MAAM,IAAI,UAAU,6CAA6C,EA+CnE,GA7CAS,EAAA,KAAKtD,GAAe6C,GACpBS,EAAA,KAAKnC,GAAkB,CAAC,CAAC0B,GAEzBS,EAAA,KAAKjD,GAAU,IAAI,KACnBiD,EAAA,KAAKhD,GAAW,MAAM,KAAK,CAAE,OAAQ7E,CAAG,CAAE,EAAE,KAAK,MAAS,GAI1D6H,EAAA,KAAK/C,EAAW,MAAM,KAAK,CAAE,OAAQ9E,CAAG,CAAE,EAAE,KAAK,MAAS,GAI1D6H,EAAA,KAAK9C,GAAQ,IAAI+C,GAAU9H,CAAG,GAC9B6H,EAAA,KAAK7C,GAAQ,IAAI8C,GAAU9H,CAAG,GAC9B6H,EAAA,KAAK5C,GAAQ,GACb4C,EAAA,KAAK3C,GAAQ,GACb2C,EAAA,KAAK1C,GAAQ9E,GAAM,OAAOL,CAAG,GAC7B6H,EAAA,KAAKnD,GAAQ,GACbmD,EAAA,KAAKlD,GAAkB,GAEnB,OAAOkC,GAAY,YACrBgB,EAAA,KAAKzD,GAAWyC,GAEd,OAAOC,GAAa,YACtBe,EAAA,KAAKxD,GAAYyC,GAEf,OAAOC,GAAiB,YAC1Bc,EAAA,KAAKvD,GAAgByC,GACrBc,EAAA,KAAKzC,GAAY,CAAA,KAEjByC,EAAA,KAAKvD,GAAgB,QACrBuD,EAAA,KAAKzC,GAAY,SAEnByC,EAAA,KAAKpC,GAAc,CAAC,CAACsC,EAAA,KAAK3D,KAC1ByD,EAAA,KAAKjC,GAAe,CAAC,CAACmC,EAAA,KAAK1D,KAC3BwD,EAAA,KAAKlC,GAAmB,CAAC,CAACoC,EAAA,KAAKzD,KAE/B,KAAK,eAAiB,CAAC,CAAC0C,EACxB,KAAK,YAAc,CAAC,CAACC,EACrB,KAAK,yBAA2B,CAAC,CAACK,GAClC,KAAK,2BAA6B,CAAC,CAACE,GACpC,KAAK,uBAAyB,CAAC,CAACC,GAChC,KAAK,iBAAmB,CAAC,CAACC,GAGtB,KAAK,eAAiB,EAAG,CAC3B,GAAIK,EAAA,KAAK5D,MAAa,GAChB,CAACtE,GAASkI,EAAA,KAAK5D,GAAQ,EACzB,MAAM,IAAI,UACR,iDAAiD,EAIvD,GAAI,CAACtE,GAAS,KAAK,YAAY,EAC7B,MAAM,IAAI,UACR,sDAAsD,EAG1DmI,EAAA,KAAKC,EAAAA,IAAL,UACF,CAUA,GARA,KAAK,WAAa,CAAC,CAACrB,EACpB,KAAK,mBAAqB,CAAC,CAACW,GAC5B,KAAK,eAAiB,CAAC,CAACb,EACxB,KAAK,eAAiB,CAAC,CAACC,EACxB,KAAK,cACH9G,GAAS2G,CAAa,GAAKA,IAAkB,EAAIA,EAAgB,EACnE,KAAK,aAAe,CAAC,CAACC,EACtB,KAAK,IAAMF,GAAO,EACd,KAAK,IAAK,CACZ,GAAI,CAAC1G,GAAS,KAAK,GAAG,EACpB,MAAM,IAAI,UAAU,6CAA6C,EAEnEmI,EAAA,KAAKE,EAAAA,IAAL,UACF,CAGA,GAAIH,EAAA,KAAK7D,MAAS,GAAK,KAAK,MAAQ,GAAK6D,EAAA,KAAK5D,MAAa,EACzD,MAAM,IAAI,UACR,kDAAkD,EAGtD,GAAI,CAAC,KAAK,cAAgB,CAAC4D,EAAA,KAAK7D,KAAQ,CAAC6D,EAAA,KAAK5D,IAAU,CACtD,IAAMzE,GAAO,sBACTE,GAAWF,EAAI,IACjBL,GAAO,IAAIK,EAAI,EAIfH,GAFE,gGAEe,wBAAyBG,GAAMyI,EAAQ,EAE5D,CACF,CA5WA,IAAI,MAAI,CACN,OAAOJ,EAAA,KAAKtD,GACd,CAmGA,OAAO,sBAIL2D,EAAqB,CACrB,MAAO,CAEL,OAAQA,EAAAA,EAAE9C,IACV,KAAM8C,EAAAA,EAAE7C,IACR,gBAAiB6C,EAAAA,EAAE5C,IACnB,MAAO4C,EAAAA,EAAE/C,IACT,OAAQ+C,EAAAA,EAAExD,IACV,QAASwD,EAAAA,EAAEvD,IACX,QAASuD,EAAAA,EAAEtD,GACX,KAAMsD,EAAAA,EAAErD,IACR,KAAMqD,EAAAA,EAAEpD,IACR,IAAI,MAAI,CACN,OAAOoD,EAAAA,EAAEnD,GACX,EACA,IAAI,MAAI,CACN,OAAOmD,EAAAA,EAAElD,GACX,EACA,KAAMkD,EAAAA,EAAEjD,IAER,kBAAoBkD,GAAAA,CFn0C1B,IAAAlI,EEm0CyCiI,OAAAA,EAAAA,EAAAA,EAAEE,EAAAA,IAAFF,KAAAA,EAAqBC,IACxD,gBAAiB,CACfE,EACAC,EACAvE,EACAwE,IAAAA,CFx0CR,IAAAtI,EE00CQiI,OAAAA,EAAAA,EAAAA,EAAEM,EAAAA,IAAFN,KAAAA,EACEG,EACAC,EACAvE,EACAwE,IAEJ,WAAaD,GAAAA,CFh1CnB,IAAArI,EEg1C2CiI,OAAAA,EAAAA,EAAAA,EAAEO,EAAAA,IAAFP,KAAAA,EAAcI,IACnD,QAAUvE,GAAAA,CFj1ChB,IAAA9D,EEi1CsDiI,OAAAA,EAAAA,EAAAA,EAAEQ,EAAAA,IAAFR,KAAAA,EAAWnE,IAC3D,SAAWA,GAAAA,CFl1CjB,IAAA9D,EEm1CQiI,OAAAA,EAAAA,EAAAA,EAAES,EAAAA,IAAFT,KAAAA,EAAYnE,IACd,QAAUuE,GAAAA,CFp1ChB,IAAArI,EEo1C8CiI,OAAAA,EAAAA,EAAAA,EAAEpC,IAAFoC,KAAAA,EAAWI,GAAc,CAErE,CAOA,IAAI,KAAG,CACL,OAAOT,EAAA,KAAK7D,GACd,CAIA,IAAI,SAAO,CACT,OAAO6D,EAAA,KAAK5D,GACd,CAIA,IAAI,gBAAc,CAChB,OAAO4D,EAAA,KAAKpD,GACd,CAIA,IAAI,MAAI,CACN,OAAOoD,EAAA,KAAKrD,GACd,CAIA,IAAI,aAAW,CACb,OAAOqD,EAAA,KAAKxD,GACd,CACA,IAAI,YAAU,CACZ,OAAOwD,EAAA,KAAKvD,GACd,CAIA,IAAI,SAAO,CACT,OAAOuD,EAAA,KAAK3D,GACd,CAIA,IAAI,UAAQ,CACV,OAAO2D,EAAA,KAAK1D,GACd,CAIA,IAAI,cAAY,CACd,OAAO0D,EAAA,KAAKzD,GACd,CA4KA,gBAAgBwE,EAAM,CACpB,OAAOf,EAAA,KAAKnD,IAAQ,IAAIkE,CAAG,EAAI,IAAW,CAC5C,CA6PA,CAAC,SAAO,CACN,QAAWC,KAAKf,EAAA,KAAKY,EAAAA,IAAL,WAEZb,EAAA,KAAKjD,GAASiE,CAAC,IAAM,QACrBhB,EAAA,KAAKlD,IAASkE,CAAC,IAAM,QACrB,CAACf,EAAA,KAAKM,EAAAA,IAAL,UAAwBP,EAAA,KAAKjD,GAASiE,CAAC,KAExC,KAAM,CAAChB,EAAA,KAAKlD,IAASkE,CAAC,EAAGhB,EAAA,KAAKjD,GAASiE,CAAC,CAAC,EAG/C,CAQA,CAAC,UAAQ,CACP,QAAWA,KAAKf,EAAA,KAAKa,EAAAA,IAAL,WAEZd,EAAA,KAAKjD,GAASiE,CAAC,IAAM,QACrBhB,EAAA,KAAKlD,IAASkE,CAAC,IAAM,QACrB,CAACf,EAAA,KAAKM,EAAAA,IAAL,UAAwBP,EAAA,KAAKjD,GAASiE,CAAC,KAExC,KAAM,CAAChB,EAAA,KAAKlD,IAASkE,CAAC,EAAGhB,EAAA,KAAKjD,GAASiE,CAAC,CAAC,EAG/C,CAMA,CAAC,MAAI,CACH,QAAWA,KAAKf,EAAA,KAAKY,EAAAA,IAAL,WAAiB,CAC/B,IAAML,EAAIR,EAAA,KAAKlD,IAASkE,CAAC,EACrBR,IAAM,QAAa,CAACP,EAAA,KAAKM,EAAAA,IAAL,UAAwBP,EAAA,KAAKjD,GAASiE,CAAC,KAC7D,MAAMR,EAEV,CACF,CAQA,CAAC,OAAK,CACJ,QAAWQ,KAAKf,EAAA,KAAKa,EAAAA,IAAL,WAAkB,CAChC,IAAMN,EAAIR,EAAA,KAAKlD,IAASkE,CAAC,EACrBR,IAAM,QAAa,CAACP,EAAA,KAAKM,EAAAA,IAAL,UAAwBP,EAAA,KAAKjD,GAASiE,CAAC,KAC7D,MAAMR,EAEV,CACF,CAMA,CAAC,QAAM,CACL,QAAWQ,KAAKf,EAAA,KAAKY,EAAAA,IAAL,WACJb,EAAA,KAAKjD,GAASiE,CAAC,IACf,QAAa,CAACf,EAAA,KAAKM,EAAAA,IAAL,UAAwBP,EAAA,KAAKjD,GAASiE,CAAC,KAC7D,MAAMhB,EAAA,KAAKjD,GAASiE,CAAC,EAG3B,CAQA,CAAC,SAAO,CACN,QAAWA,KAAKf,EAAA,KAAKa,EAAAA,IAAL,WACJd,EAAA,KAAKjD,GAASiE,CAAC,IACf,QAAa,CAACf,EAAA,KAAKM,EAAAA,IAAL,UAAwBP,EAAA,KAAKjD,GAASiE,CAAC,KAC7D,MAAMhB,EAAA,KAAKjD,GAASiE,CAAC,EAG3B,CAMA,EAACnI,GAAA,OAAO,SASPT,GAAA,OAAO,YATPS,GAAe,GAAC,CACf,OAAO,KAAK,QAAO,CACrB,CAaA,KACEjB,EACAqJ,EAA4C,CAAA,EAAE,CAE9C,QAAWD,KAAKf,EAAA,KAAKY,EAAAA,IAAL,WAAiB,CAC/B,IAAMK,EAAIlB,EAAA,KAAKjD,GAASiE,CAAC,EACnBG,EAAQlB,EAAA,KAAKM,EAAAA,IAAL,UAAwBW,GAAKA,EAAE,qBAAuBA,EACpE,GAAIC,IAAU,QACVvJ,EAAGuJ,EAAOnB,EAAA,KAAKlD,IAASkE,CAAC,EAAQ,IAAI,EACvC,OAAOf,EAAA,KAAKmB,EAAAA,IAAL,UAAUpB,EAAA,KAAKlD,IAASkE,CAAC,EAAQC,EAE5C,CACF,CAaA,QACErJ,EACAyJ,EAAiB,KAAI,CAErB,QAAWL,KAAKf,EAAA,KAAKY,EAAAA,IAAL,WAAiB,CAC/B,IAAMK,EAAIlB,EAAA,KAAKjD,GAASiE,CAAC,EACnBG,EAAQlB,EAAA,KAAKM,EAAAA,IAAL,UAAwBW,GAAKA,EAAE,qBAAuBA,EAChEC,IAAU,QACdvJ,EAAG,KAAKyJ,EAAOF,EAAOnB,EAAA,KAAKlD,IAASkE,CAAC,EAAQ,IAAI,CACnD,CACF,CAMA,SACEpJ,EACAyJ,EAAiB,KAAI,CAErB,QAAWL,KAAKf,EAAA,KAAKa,EAAAA,IAAL,WAAkB,CAChC,IAAMI,EAAIlB,EAAA,KAAKjD,GAASiE,CAAC,EACnBG,EAAQlB,EAAA,KAAKM,EAAAA,IAAL,UAAwBW,GAAKA,EAAE,qBAAuBA,EAChEC,IAAU,QACdvJ,EAAG,KAAKyJ,EAAOF,EAAOnB,EAAA,KAAKlD,IAASkE,CAAC,EAAQ,IAAI,CACnD,CACF,CAMA,YAAU,CACR,IAAIM,EAAU,GACd,QAAWN,KAAKf,EAAA,KAAKa,EAAAA,IAAL,UAAe,CAAE,WAAY,EAAI,GAC3Cd,EAAA,KAAK/B,IAAL,UAAc+C,KAChBf,EAAA,KAAKsB,EAAAA,IAAL,UAAavB,EAAA,KAAKlD,IAASkE,CAAC,EAAQ,UACpCM,EAAU,IAGd,OAAOA,CACT,CAcA,KAAKP,EAAM,CACT,IAAMC,EAAIhB,EAAA,KAAKnD,IAAQ,IAAIkE,CAAG,EAC9B,GAAIC,IAAM,OAAW,OACrB,IAAME,EAAIlB,EAAA,KAAKjD,GAASiE,CAAC,EAGnBG,EACJlB,EAAA,KAAKM,EAAAA,IAAL,UAAwBW,GAAKA,EAAE,qBAAuBA,EACxD,GAAIC,IAAU,OAAW,OAEzB,IAAMK,EAA2B,CAAE,MAAAL,CAAK,EACxC,GAAInB,EAAA,KAAKxC,KAASwC,EAAA,KAAKzC,IAAS,CAC9B,IAAMiB,EAAMwB,EAAA,KAAKxC,IAAMwD,CAAC,EAClBS,EAAQzB,EAAA,KAAKzC,IAAQyD,CAAC,EAC5B,GAAIxC,GAAOiD,EAAO,CAChB,IAAMC,EAASlD,GAAOwB,EAAA,KAAKtD,IAAM,IAAG,EAAK+E,GACzCD,EAAM,IAAME,EACZF,EAAM,MAAQ,KAAK,IAAG,CACxB,CACF,CACA,OAAIxB,EAAA,KAAK1C,MACPkE,EAAM,KAAOxB,EAAA,KAAK1C,IAAO0D,CAAC,GAErBQ,CACT,CAeA,MAAI,CACF,IAAMG,EAAgC,CAAA,EACtC,QAAWX,KAAKf,EAAA,KAAKY,EAAAA,IAAL,UAAc,CAAE,WAAY,EAAI,GAAK,CACnD,IAAME,EAAMf,EAAA,KAAKlD,IAASkE,CAAC,EACrBE,EAAIlB,EAAA,KAAKjD,GAASiE,CAAC,EACnBG,EACJlB,EAAA,KAAKM,EAAAA,IAAL,UAAwBW,GAAKA,EAAE,qBAAuBA,EACxD,GAAIC,IAAU,QAAaJ,IAAQ,OAAW,SAC9C,IAAMS,EAA2B,CAAE,MAAAL,CAAK,EACxC,GAAInB,EAAA,KAAKxC,KAASwC,EAAA,KAAKzC,IAAS,CAC9BiE,EAAM,IAAMxB,EAAA,KAAKxC,IAAMwD,CAAC,EAGxB,IAAMY,EAAM5B,EAAA,KAAKtD,IAAM,IAAG,EAAMsD,EAAA,KAAKzC,IAAQyD,CAAC,EAC9CQ,EAAM,MAAQ,KAAK,MAAM,KAAK,IAAG,EAAKI,CAAG,CAC3C,CACI5B,EAAA,KAAK1C,MACPkE,EAAM,KAAOxB,EAAA,KAAK1C,IAAO0D,CAAC,GAE5BW,EAAI,QAAQ,CAACZ,EAAKS,CAAK,CAAC,CAC1B,CACA,OAAOG,CACT,CAWA,KAAKA,EAA6B,CAChC,KAAK,MAAK,EACV,OAAW,CAACZ,EAAKS,CAAK,IAAKG,EAAK,CAC9B,GAAIH,EAAM,MAAO,CAOf,IAAMI,EAAM,KAAK,IAAG,EAAKJ,EAAM,MAC/BA,EAAM,MAAQxB,EAAA,KAAKtD,IAAM,IAAG,EAAKkF,CACnC,CACA3B,EAAA,KAAK4B,EAAAA,IAAL,UAAUd,EAAKS,EAAM,MAAOA,EAC9B,CACF,CAgCA,IACEhB,EACAU,EACAY,EAA4C,CAAA,EAAE,CAE9C,GAAM,CAAE,OAAAC,EAAS/K,GAAQ,eAAiB,CAAA,EAAK,MAAS,EAAK8K,EAC7DA,EAAW,OAASC,EAChBA,IACFA,EAAO,GAAK,MACZA,EAAO,IAAMvB,EACTU,IAAM,SAAWa,EAAO,MAAQb,GACpCa,EAAO,MAAQ,MAEjB,IAAMC,EAAS/B,EAAA,KAAK4B,EAAAA,IAAL,UAAUrB,EAAGU,EAAGY,GAC/B,OAAIC,GAAU/K,GAAQ,gBACpBA,GAAQ,QAAQ+K,CAAM,EAEjBC,CACT,CAmJA,KAAG,CF5wEL,IAAA5J,EE6wEI,GAAI,CACF,KAAO4H,EAAA,KAAKrD,KAAO,CACjB,IAAMsF,EAAMjC,EAAA,KAAKjD,GAASiD,EAAA,KAAK9C,GAAK,EAEpC,GADA+C,EAAA,KAAKiC,EAAAA,IAAL,UAAY,IACRjC,EAAA,KAAKM,EAAAA,IAAL,UAAwB0B,IAC1B,GAAIA,EAAI,qBACN,OAAOA,EAAI,6BAEJA,IAAQ,OACjB,OAAOA,CAEX,CACF,QAAA,CACE,GAAIjC,EAAA,KAAKpC,KAAoBoC,EAAA,KAAK3C,IAAW,CAC3C,IAAM8E,EAAKnC,EAAA,KAAK3C,IACZ+E,EACJ,KAAQA,EAAOD,GAAI,MAAK,IACtB/J,EAAA4H,EAAA,KAAKzD,MAAL,MAAAnE,EAAA,UAAqB,GAAGgK,EAE5B,CACF,CACF,CA4DA,IAAI5B,EAAM6B,EAA4C,CAAA,EAAE,CACtD,GAAM,CAAE,OAAAN,EAAS/K,GAAQ,eAAiB,CAAA,EAAK,MAAS,EAAKqL,EAC7DA,EAAW,OAASN,EAChBA,IACFA,EAAO,GAAK,MACZA,EAAO,IAAMvB,EACbuB,EAAO,MAAQ,MAEjB,IAAMC,EAAS/B,EAAA,KAAKqC,EAAAA,IAAL,UAAU9B,EAAG6B,GAC5B,OAAIrL,GAAQ,gBAAgBA,GAAQ,QAAQ+K,CAAM,EAC3CC,CACT,CAsCA,KAAKxB,EAAM+B,EAA8C,CAAA,EAAE,CACzD,GAAM,CAAE,OAAAR,EAAS1K,GAAc,EAAK,CAAA,EAAK,MAAS,EAAKkL,EACnDR,IACFA,EAAO,GAAK,OACZA,EAAO,IAAMvB,EACbuB,EAAO,MAAQ,MAEjBQ,EAAY,OAASR,EACrB,IAAMC,EAAS/B,EAAA,KAAKuC,EAAAA,IAAL,UAAWhC,EAAG+B,GAC7B,OAAIvL,GAAQ,gBACVA,GAAQ,QAAQ+K,CAAM,EAEjBC,CACT,CA8RA,MACExB,EACAiC,EAAgD,CAAA,EAAE,CAElD,IAAMC,EAAMxL,GAAQ,eACd,CAAE,OAAA6K,EAAS1K,GAAc,EAAK,CAAA,EAAK,MAAS,EAAKoL,EACvDA,EAAa,OAASV,EAClBA,GAAUU,EAAa,UACzBV,EAAO,QAAUU,EAAa,SAEhC,IAAMnC,EAAIL,EAAA,KAAK0C,EAAAA,IAAL,UAAYnC,EAAGiC,GACzB,OAAIV,GAAUW,IACZX,EAAO,MAAQ,GACf7K,GAAQ,aAAa,IAAMoJ,EAAGyB,CAAM,EAAE,MAAM,IAAK,CAAE,CAAC,GAE/CzB,CACT,CAsIA,WACEE,EACAiC,EAAgD,CAAA,EAAE,CAElD,IAAMC,EAAMxL,GAAQ,eACd,CAAE,OAAA6K,EAAS1K,GAAc,EAAK,CAAA,EAAK,MAAS,EAAKoL,EACvDA,EAAa,OAASV,EAClBA,GAAUU,EAAa,UACzBV,EAAO,QAAUU,EAAa,SAEhC,IAAMnC,EAAIL,EAAA,KAAK2C,EAAAA,IAAL,UAAiBpC,EAAGiC,GAC9B,OAAIV,GAAUW,IACZX,EAAO,MAAQ,GACf7K,GAAQ,aAAa,IAAMoJ,EAAGyB,CAAM,EAAE,MAAM,IAAK,CAAE,CAAC,GAE/CzB,CACT,CAwCA,KAAKE,EAAMqC,EAA8C,CAAA,EAAE,CACzD,GAAM,CAAE,OAAAd,EAAS/K,GAAQ,eAAiB,CAAA,EAAK,MAAS,EACtD6L,EACFA,EAAY,OAASd,EACjBA,IACFA,EAAO,GAAK,OACZA,EAAO,IAAMvB,EACTqC,EAAY,UACdd,EAAO,QAAUc,EAAY,SAE/Bd,EAAO,MAAQ,MAEjB,IAAMC,EAAS/B,EAAA,KAAK6C,EAAAA,IAAL,UAAWtC,EAAGqC,GAC7B,OAAId,IAAQA,EAAO,MAAQC,GACvBhL,GAAQ,gBAAgBA,GAAQ,QAAQ+K,CAAM,EAC3CC,CACT,CA8BA,IAAIxB,EAAMS,EAA4C,CAAA,EAAE,CACtD,GAAM,CAAE,OAAAc,EAAS/K,GAAQ,eAAiB,CAAA,EAAK,MAAS,EAAKiK,EAC7DA,EAAW,OAASc,EAChBA,IACFA,EAAO,GAAK,MACZA,EAAO,IAAMvB,EACbuB,EAAO,MAAQ,MAEjB,IAAMC,EAAS/B,EAAA,KAAKmB,EAAAA,IAAL,UAAUZ,EAAGS,GAC5B,OAAIc,IACEC,IAAW,SAAWD,EAAO,MAAQC,GACrChL,GAAQ,gBAAgBA,GAAQ,QAAQ+K,CAAM,GAE7CC,CACT,CAoFA,OAAOxB,EAAI,CACT,OAAOP,EAAA,KAAKsB,EAAAA,IAAL,UAAaf,EAAG,SACzB,CAkEA,OAAK,CACH,OAAOP,EAAA,KAAK8C,EAAAA,IAAL,UAAY,SACrB,CA2CA,EA/8DS5G,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YA4ETC,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YACAC,EAAAA,YACAC,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YAEAC,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YACAC,GAAAA,YAxGIvD,EAAA,YAoYJ6F,GAAAA,UAAsB,CACpB,IAAM6C,EAAO,IAAI9K,GAAU8H,EAAA,KAAK7D,GAAI,EAC9B8G,EAAS,IAAI/K,GAAU8H,EAAA,KAAK7D,GAAI,EACtC2D,EAAA,KAAKtC,GAAQwF,GACblD,EAAA,KAAKvC,GAAU0F,GACf,IAAMC,EACJ,KAAK,aACH,MAAM,KAAgD,CACpD,OAAQlD,EAAA,KAAK7D,GAAAA,CACd,EACD,OACJ2D,EAAA,KAAKrC,GAAmByF,GAExBpD,EAAA,KAAK9B,GAAc,CAACyC,EAAOjC,EAAKiD,EAAQzB,EAAA,KAAKtD,IAAM,IAAG,IAAM,CAC1DuG,EAAOxC,CAAK,EAAIjC,IAAQ,EAAIiD,EAAQ,EACpCuB,EAAKvC,CAAK,EAAIjC,EACd2E,EAAe1C,EAAOjC,CAAG,CAC3B,GAEAsB,EAAA,KAAKhC,GAAiB2C,GAAQ,CAC5BwC,EAAOxC,CAAK,EAAIuC,EAAKvC,CAAK,IAAM,EAAIT,EAAA,KAAKtD,IAAM,IAAG,EAAK,EACvDyG,EAAe1C,EAAOuC,EAAKvC,CAAK,CAAC,CACnC,GAMA,IAAM0C,EACH,KAAK,aAEJ,CAAC1C,EAAcjC,IAAgB,CAK7B,GAJI0E,IAAczC,CAAK,IACrB,aAAayC,EAAYzC,CAAK,CAAC,EAC/ByC,EAAYzC,CAAK,EAAI,QAEnBjC,GAAOA,IAAQ,GAAK0E,EAAa,CACnC,IAAME,EAAI,WAAW,IAAK,CACpBpD,EAAA,KAAK/B,IAAL,UAAcwC,IAChBR,EAAA,KAAKsB,EAAAA,IAAL,UAAavB,EAAA,KAAKlD,IAAS2D,CAAK,EAAQ,SAE5C,EAAGjC,EAAM,CAAC,EAGN4E,EAAE,OACJA,EAAE,MAAK,EAGTF,EAAYzC,CAAK,EAAI2C,CACvB,CACF,EApBA,IAAK,CAAE,EAsBXtD,EAAA,KAAK/B,GAAa,CAACgE,EAAQtB,IAAS,CAClC,GAAIuC,EAAKvC,CAAK,EAAG,CACf,IAAMjC,EAAMwE,EAAKvC,CAAK,EAChBgB,EAAQwB,EAAOxC,CAAK,EAE1B,GAAI,CAACjC,GAAO,CAACiD,EACX,OAGFM,EAAO,IAAMvD,EACbuD,EAAO,MAAQN,EACfM,EAAO,IAAMsB,GAAaC,EAAM,EAChC,IAAM1B,EAAMG,EAAO,IAAMN,EACzBM,EAAO,aAAevD,EAAMoD,CAC9B,CACF,GAIA,IAAIyB,EAAY,EACVC,EAAS,IAAK,CAClB,IAAMvL,EAAIiI,EAAA,KAAKtD,IAAM,IAAG,EACxB,GAAI,KAAK,cAAgB,EAAG,CAC1B2G,EAAYtL,EACZ,IAAMqL,EAAI,WAAW,IAAOC,EAAY,EAAI,KAAK,aAAa,EAG1DD,EAAE,OACJA,EAAE,MAAK,CAGX,CACA,OAAOrL,CACT,EAEA,KAAK,gBAAkBgJ,GAAM,CAC3B,IAAMN,EAAQT,EAAA,KAAKnD,IAAQ,IAAIkE,CAAG,EAClC,GAAIN,IAAU,OACZ,MAAO,GAET,IAAMjC,EAAMwE,EAAKvC,CAAK,EAChBgB,EAAQwB,EAAOxC,CAAK,EAC1B,GAAI,CAACjC,GAAO,CAACiD,EACX,MAAO,KAET,IAAMG,GAAOyB,GAAaC,EAAM,GAAM7B,EACtC,OAAOjD,EAAMoD,CACf,EAEA9B,EAAA,KAAK7B,GAAWwC,GAAQ,CACtB,IAAM9H,EAAIsK,EAAOxC,CAAK,EAChB2C,EAAIJ,EAAKvC,CAAK,EACpB,MAAO,CAAC,CAAC2C,GAAK,CAAC,CAACzK,IAAM0K,GAAaC,EAAM,GAAM3K,EAAIyK,CACrD,EACF,EAGAtF,GAAAA,YACAC,GAAAA,YAEAC,GAAAA,YASAC,GAAAA,YAEAiC,GAAAA,UAAuB,CACrB,IAAMqD,EAAQ,IAAIrL,GAAU8H,EAAA,KAAK7D,GAAI,EACrC2D,EAAA,KAAKlD,GAAkB,GACvBkD,EAAA,KAAKxC,GAASiG,GACdzD,EAAA,KAAK5B,GAAkBuC,GAAQ,CAC7BX,EAAA,KAAKlD,GAALoD,EAAA,KAAKpD,IAAmB2G,EAAM9C,CAAK,GACnC8C,EAAM9C,CAAK,EAAI,CACjB,GACAX,EAAA,KAAKzB,GAAe,CAACmC,EAAGU,EAAG/I,EAAMoG,IAAmB,CAClD,GAAI,CAACzG,GAASK,CAAI,EAAG,CAGnB,GAAI8H,EAAA,KAAKM,EAAAA,IAAL,UAAwBW,GAI1B,OAAO,KAAK,oBAEd,GAAI3C,EAAiB,CACnB,GAAI,OAAOA,GAAoB,WAC7B,MAAM,IAAI,UAAU,oCAAoC,EAG1D,GADApG,EAAOoG,EAAgB2C,EAAGV,CAAC,EACvB,CAAC1I,GAASK,CAAI,EAChB,MAAM,IAAI,UACR,0DAA0D,CAGhE,KACE,OAAM,IAAI,UACR,2HAEwB,CAG9B,CACA,OAAOA,CACT,GAEA2H,EAAA,KAAK3B,GAAe,CAClBsC,EACAtI,EACA4J,IACE,CAEF,GADAwB,EAAM9C,CAAK,EAAItI,EACX6H,EAAA,KAAK5D,IAAU,CACjB,IAAM+C,EAAUa,EAAA,KAAK5D,IAAWmH,EAAM9C,CAAK,EAC3C,KAAOT,EAAA,KAAKpD,IAAkBuC,GAC5Bc,EAAA,KAAKiC,EAAAA,IAAL,UAAY,GAEhB,CACApC,EAAA,KAAKlD,GAALoD,EAAA,KAAKpD,IAAmB2G,EAAM9C,CAAK,GAC/BsB,IACFA,EAAO,UAAY5J,EACnB4J,EAAO,oBAAsB/B,EAAA,KAAKpD,IAEtC,EACF,EAEAsB,GAAAA,YAEAC,GAAAA,YAMAE,GAAAA,YAoBCwC,GAAAA,UAAS,CAAE,WAAAhC,EAAa,KAAK,UAAU,EAAK,CAAA,EAAE,CAC7C,GAAImB,EAAA,KAAKrD,IACP,QAASqE,EAAIhB,EAAA,KAAK7C,IAAO8C,EAAA,KAAKuD,EAAAA,IAAL,UAAmBxC,MACtCnC,GAAc,CAACmB,EAAA,KAAK/B,IAAL,UAAc+C,MAC/B,MAAMA,GAEJA,IAAMhB,EAAA,KAAK9C,MAGb8D,EAAIhB,EAAA,KAAK/C,IAAM+D,CAAC,CAIxB,EAECF,GAAAA,UAAU,CAAE,WAAAjC,EAAa,KAAK,UAAU,EAAK,CAAA,EAAE,CAC9C,GAAImB,EAAA,KAAKrD,IACP,QAASqE,EAAIhB,EAAA,KAAK9C,IAAO+C,EAAA,KAAKuD,EAAAA,IAAL,UAAmBxC,MACtCnC,GAAc,CAACmB,EAAA,KAAK/B,IAAL,UAAc+C,MAC/B,MAAMA,GAEJA,IAAMhB,EAAA,KAAK7C,MAGb6D,EAAIhB,EAAA,KAAKhD,IAAMgE,CAAC,CAIxB,EAEAwC,GAAAA,SAAc/C,EAAY,CACxB,OACEA,IAAU,QACVT,EAAA,KAAKnD,IAAQ,IAAImD,EAAA,KAAKlD,IAAS2D,CAAK,CAAM,IAAMA,CAEpD,EA0UAoB,GAAAA,SACErB,EACAU,EACAY,EACA2B,EAAuB,CF/nE3B,IAAArL,GAAAS,EAAAC,GAAAkB,EEioEI,GAAM,CACJ,IAAAwE,EAAM,KAAK,IACX,MAAAiD,EACA,eAAAxC,EAAiB,KAAK,eACtB,gBAAAV,EAAkB,KAAK,gBACvB,OAAAwD,CAAM,EACJD,EAEE4B,EAAOzD,EAAA,KAAKM,EAAAA,IAAL,UAAwBW,GACrC,GAAIA,IAAM,OACR,OAAIa,IAAQA,EAAO,IAAM,WACzB,KAAK,OAAOvB,CAAC,EACN,KAET,GAAI,CAAE,YAAAtB,EAAc,KAAK,WAAW,EAAK4C,EAErCC,GAAU,CAAC2B,IAAM3B,EAAO,MAAQb,GAEpC,IAAM/I,EAAO6H,EAAA,KAAK3B,IAAL,UACXmC,EACAU,EACAY,EAAW,MAAQ,EACnBvD,EACAwD,GAIF,GAAI,KAAK,cAAgB5J,EAAO,KAAK,aAEnC,OAAA8H,EAAA,KAAKsB,EAAAA,IAAL,UAAaf,EAAG,OACZuB,IACFA,EAAO,IAAM,OACbA,EAAO,qBAAuB,IAEzB,KAET,IAAItB,EAAQT,EAAA,KAAKrD,MAAU,EAAI,OAAYqD,EAAA,KAAKnD,IAAQ,IAAI2D,CAAC,EAC7D,GAAIC,IAAU,OAEZA,EACET,EAAA,KAAKrD,MAAU,EAAIqD,EAAA,KAAK7C,IACtB6C,EAAA,KAAK5C,IAAM,SAAW,EAAI4C,EAAA,KAAK5C,IAAM,IAAG,EACxC4C,EAAA,KAAKrD,MAAUqD,EAAA,KAAK7D,IAAO8D,EAAA,KAAKiC,EAAAA,IAAL,UAAY,IACvClC,EAAA,KAAKrD,IACTqD,EAAA,KAAKlD,IAAS2D,CAAK,EAAID,EACvBR,EAAA,KAAKjD,GAAS0D,CAAK,EAAIS,EACvBlB,EAAA,KAAKnD,IAAQ,IAAI2D,EAAGC,CAAK,EACzBT,EAAA,KAAKhD,IAAMgD,EAAA,KAAK7C,GAAK,EAAIsD,EACzBT,EAAA,KAAK/C,IAAMwD,CAAK,EAAIT,EAAA,KAAK7C,IACzB2C,EAAA,KAAK3C,GAAQsD,GACbkD,GAAA,KAAKhH,IAAL,IACAqD,EAAA,KAAK7B,IAAL,UAAkBsC,EAAOtI,EAAM4J,GAC3BA,IAAQA,EAAO,IAAM,OACzB7C,EAAc,GACVc,EAAA,KAAKnC,KAAgB,CAAC6F,KACxBtL,GAAA4H,EAAA,KAAK1D,MAAL,MAAAlE,GAAA,UAAiB8I,EAAGV,EAAG,YAEpB,CAGLP,EAAA,KAAKW,EAAAA,IAAL,UAAiBH,GACjB,IAAMmD,GAAS5D,EAAA,KAAKjD,GAAS0D,CAAK,EAClC,GAAIS,IAAM0C,GAAQ,CAChB,GAAI,CAAC3E,EACH,GAAIgB,EAAA,KAAKM,EAAAA,IAAL,UAAwBqD,IAAS,CAC/BA,KAAWH,GAEbG,GAAO,kBAAkB,MAAM,IAAI,MAAM,UAAU,CAAC,EAEtD,GAAM,CAAE,qBAAsBjL,EAAC,EAAKiL,GAChCjL,KAAM,QAAaA,KAAMuI,IACvBlB,EAAA,KAAKtC,OACP7E,EAAAmH,EAAA,KAAK3D,MAAL,MAAAxD,EAAA,UAAgBF,GAAG6H,EAAG,QAEpBR,EAAA,KAAKpC,KACPoC,EAAA,KAAK3C,KAAW,KAAK,CAAC1E,GAAG6H,EAAG,KAAK,CAAC,EAGxC,MACMR,EAAA,KAAKtC,OACP5E,GAAAkH,EAAA,KAAK3D,MAAL,MAAAvD,GAAA,UAAgB8K,GAAQpD,EAAG,QAEzBR,EAAA,KAAKpC,KACPoC,EAAA,KAAK3C,KAAW,KAAK,CAACuG,GAAQpD,EAAG,KAAK,CAAC,EAO7C,GAHAR,EAAA,KAAK9B,IAAL,UAAqBuC,GACrBT,EAAA,KAAK7B,IAAL,UAAkBsC,EAAOtI,EAAM4J,GAC/B/B,EAAA,KAAKjD,GAAS0D,CAAK,EAAIS,EACnB,CAACwC,EAAM,CACT,IAAMG,GACJD,IAAU3D,EAAA,KAAKM,EAAAA,IAAL,UAAwBqD,IAChCA,GAAO,qBACPA,GACEE,GACJD,KAAa,OAAY,MACvB3C,IAAM2C,GAAW,UACjB,SACA9B,IACFA,EAAO,IAAM+B,GACTD,KAAa,SAAW9B,EAAO,SAAW8B,KAE5C7D,EAAA,KAAKnC,KACP,KAAK,WAAWqD,EAAGV,EAAGsD,EAAO,CAEjC,CACF,MAAYJ,IACN3B,IACFA,EAAO,IAAM,UAEX/B,EAAA,KAAKnC,KACP,KAAK,WAAWqD,EAAGV,EAAG,QAAQ,EAGpC,CAUA,GATIhC,IAAQ,GAAK,CAACwB,EAAA,KAAKxC,KACrByC,EAAA,KAAKE,EAAAA,IAAL,WAEEH,EAAA,KAAKxC,MACF0B,GACHc,EAAA,KAAKhC,IAAL,UAAiByC,EAAOjC,EAAKiD,GAE3BM,GAAQ/B,EAAA,KAAKjC,IAAL,UAAgBgE,EAAQtB,IAElC,CAACxB,GAAkBe,EAAA,KAAKpC,KAAoBoC,EAAA,KAAK3C,IAAW,CAC9D,IAAM8E,GAAKnC,EAAA,KAAK3C,IACZ+E,GACJ,KAAQA,GAAOD,IAAI,MAAK,IACtBnI,EAAAgG,EAAA,KAAKzD,MAAL,MAAAvC,EAAA,UAAqB,GAAGoI,GAE5B,CACA,OAAO,IACT,EA8BAF,GAAAA,SAAO6B,EAAa,CFpyEtB,IAAA3L,EEqyEI,IAAM4L,EAAOhE,EAAA,KAAK9C,IACZsD,EAAIR,EAAA,KAAKlD,IAASkH,CAAI,EACtB9C,EAAIlB,EAAA,KAAKjD,GAASiH,CAAI,EACtBN,EAAOzD,EAAA,KAAKM,EAAAA,IAAL,UAAwBW,GACjCwC,GACFxC,EAAE,kBAAkB,MAAM,IAAI,MAAM,SAAS,CAAC,EAEhD,IAAM2C,EAAWH,EAAOxC,EAAE,qBAAuBA,EACjD,OACGlB,EAAA,KAAKtC,KAAesC,EAAA,KAAKpC,MAC1BiG,IAAa,SAET7D,EAAA,KAAKtC,OACPtF,EAAA4H,EAAA,KAAK3D,MAAL,MAAAjE,EAAA,UAAgByL,EAAUrD,EAAG,UAE3BR,EAAA,KAAKpC,KACPoC,EAAA,KAAK3C,KAAW,KAAK,CAACwG,EAAUrD,EAAG,OAAO,CAAC,GAG/CR,EAAA,KAAK9B,IAAL,UAAqB8F,GACjBhE,EAAA,KAAKvC,MAAmBuG,CAAI,IAC9B,aAAahE,EAAA,KAAKvC,IAAiBuG,CAAI,CAAC,EACxChE,EAAA,KAAKvC,IAAiBuG,CAAI,EAAI,QAG5BD,IACF/D,EAAA,KAAKlD,IAASkH,CAAI,EAAI,OACtBhE,EAAA,KAAKjD,GAASiH,CAAI,EAAI,OACtBhE,EAAA,KAAK5C,IAAM,KAAK4G,CAAI,GAElBhE,EAAA,KAAKrD,MAAU,GACjBmD,EAAA,KAAK5C,GAAQ4C,EAAA,KAAK3C,GAAQ,IAC1B6C,EAAA,KAAK5C,IAAM,OAAS,GAEpB0C,EAAA,KAAK5C,GAAQ8C,EAAA,KAAKhD,IAAMgH,CAAI,GAE9BhE,EAAA,KAAKnD,IAAQ,OAAO2D,CAAC,EACrBmD,GAAA,KAAKhH,IAAL,IACOqH,CACT,EA8BA1B,GAAAA,SAAK9B,EAAM6B,EAA4C,CAAA,EAAE,CACvD,GAAM,CAAE,eAAAzD,EAAiB,KAAK,eAAgB,OAAAmD,CAAM,EAAKM,EACnD5B,EAAQT,EAAA,KAAKnD,IAAQ,IAAI2D,CAAC,EAChC,GAAIC,IAAU,OAAW,CACvB,IAAMS,EAAIlB,EAAA,KAAKjD,GAAS0D,CAAK,EAC7B,GACER,EAAA,KAAKM,EAAAA,IAAL,UAAwBW,IACxBA,EAAE,uBAAyB,OAE3B,MAAO,GAET,GAAKlB,EAAA,KAAK/B,IAAL,UAAcwC,GASRsB,IACTA,EAAO,IAAM,QACb/B,EAAA,KAAKjC,IAAL,UAAgBgE,EAAQtB,QAVxB,QAAI7B,GACFoB,EAAA,KAAKlC,IAAL,UAAoB2C,GAElBsB,IACFA,EAAO,IAAM,MACb/B,EAAA,KAAKjC,IAAL,UAAgBgE,EAAQtB,IAEnB,EAKX,MAAWsB,IACTA,EAAO,IAAM,QAEf,MAAO,EACT,EAuBAS,GAAAA,SAAMhC,EAAM+B,EAA2C,CACrD,GAAM,CAAE,OAAAR,EAAQ,WAAAlD,EAAa,KAAK,UAAU,EAAK0D,EAC3C9B,EAAQT,EAAA,KAAKnD,IAAQ,IAAI2D,CAAC,EAChC,GAAIC,IAAU,QAAc,CAAC5B,GAAcmB,EAAA,KAAK/B,IAAL,UAAcwC,GAAS,CAC5DsB,IAAQA,EAAO,KAAOtB,IAAU,OAAY,OAAS,SACzD,MACF,CACA,IAAMS,EAAIlB,EAAA,KAAKjD,GAAS0D,CAAK,EACvBwB,EAAMhC,EAAA,KAAKM,EAAAA,IAAL,UAAwBW,GAAKA,EAAE,qBAAuBA,EAClE,OAAIa,IACEE,IAAQ,QACVF,EAAO,KAAO,MACdA,EAAO,MAAQE,GAEfF,EAAO,KAAO,QAGXE,CACT,EAEAtB,GAAAA,SACEH,EACAC,EACAvE,EACAwE,EAAW,CAEX,IAAMQ,EAAIT,IAAU,OAAY,OAAYT,EAAA,KAAKjD,GAAS0D,CAAK,EAC/D,GAAIR,EAAA,KAAKM,EAAAA,IAAL,UAAwBW,GAC1B,OAAOA,EAGT,IAAM+C,EAAK,IAAI,gBACT,CAAE,OAAAC,CAAM,EAAKhI,EAEnBgI,GAAQ,iBAAiB,QAAS,IAAMD,EAAG,MAAMC,EAAO,MAAM,EAAG,CAC/D,OAAQD,EAAG,MAAA,CACZ,EAED,IAAME,EAAY,CAChB,OAAQF,EAAG,OACX,QAAA/H,EACA,QAAAwE,CAAAA,EAGI0D,EAAK,CAAClD,EAAkBmD,GAAc,KAAwB,CAClE,GAAM,CAAE,QAAAC,CAAO,EAAKL,EAAG,OACjBM,GAAcrI,EAAQ,kBAAoBgF,IAAM,OAChDsD,GACJtI,EAAQ,kBACR,CAAC,EAAEA,EAAQ,wBAA0BgF,IAAM,QAU7C,GATIhF,EAAQ,SACNoI,GAAW,CAACD,IACdnI,EAAQ,OAAO,aAAe,GAC9BA,EAAQ,OAAO,WAAa+H,EAAG,OAAO,OAClCM,KAAarI,EAAQ,OAAO,kBAAoB,KAEpDA,EAAQ,OAAO,cAAgB,IAG/BoI,GAAW,CAACC,IAAe,CAACF,GAC9B,OAAOI,EAAUR,EAAG,OAAO,OAAQO,EAAO,EAG5C,IAAMf,GAAKnD,EAILoE,GAAK1E,EAAA,KAAKjD,GAAS0D,CAAc,EACvC,OAAIiE,KAAOpE,GAAMoE,KAAO,QAAaH,IAAeF,MAC9CnD,IAAM,OACJuC,GAAG,uBAAyB,OAC9BzD,EAAA,KAAKjD,GAAS0D,CAAc,EAAIgD,GAAG,qBAEnCxD,EAAA,KAAKsB,EAAAA,IAAL,UAAaf,EAAG,UAGdtE,EAAQ,SAAQA,EAAQ,OAAO,aAAe,IAClD+D,EAAA,KAAK4B,EAAAA,IAAL,UAAUrB,EAAGU,EAAGiD,EAAU,QAASV,MAGhCvC,CACT,EAEMyD,EAAMC,IACN1I,EAAQ,SACVA,EAAQ,OAAO,cAAgB,GAC/BA,EAAQ,OAAO,WAAa0I,GAGvBH,EAAUG,EAAI,EAAK,GAGtBH,EAAY,CAACG,EAAaJ,KAAmC,CACjE,GAAM,CAAE,QAAAF,CAAO,EAAKL,EAAG,OACjBY,GAAoBP,GAAWpI,EAAQ,uBACvC2C,GACJgG,IAAqB3I,EAAQ,2BACzB4I,GAAWjG,IAAc3C,EAAQ,yBACjCuH,GAAKnD,EAgBX,GAfIN,EAAA,KAAKjD,GAAS0D,CAAc,IAAMH,IAIlC,CAACwE,IAAa,CAACN,IAAWf,GAAG,uBAAyB,OAEtDxD,EAAA,KAAKsB,EAAAA,IAAL,UAAaf,EAAG,SACNqE,KAKV7E,EAAA,KAAKjD,GAAS0D,CAAc,EAAIgD,GAAG,uBAGnC5E,GACF,OAAI3C,EAAQ,QAAUuH,GAAG,uBAAyB,SAChDvH,EAAQ,OAAO,cAAgB,IAE1BuH,GAAG,qBACL,GAAIA,GAAG,aAAeA,GAC3B,MAAMmB,CAEV,EAEMG,EAAQ,CACZC,EACAC,KACE,CF5hFR,IAAA7M,GE6hFM,IAAM8M,GAAM9M,GAAA4H,EAAA,KAAKxD,MAAL,YAAApE,GAAA,UAAoBoI,EAAGU,EAAGiD,GAItCF,EAAG,OAAO,iBAAiB,QAAS,IAAK,EACnC,CAAC/H,EAAQ,kBAAoBA,EAAQ,0BACvC8I,EAAI,MAAS,EAET9I,EAAQ,yBACV8I,EAAM9D,IAAKkD,EAAGlD,GAAG,EAAI,GAG3B,CAAC,EACGgE,GAAOA,aAAe,QACxBA,EAAI,KAAKhE,IAAK8D,EAAI9D,KAAM,OAAY,OAAYA,EAAC,EAAG+D,EAAG,EAC9CC,IAAQ,QACjBF,EAAIE,CAAG,CAEX,EAEIhJ,EAAQ,SAAQA,EAAQ,OAAO,gBAAkB,IACrD,IAAMoE,EAAI,IAAI,QAAQyE,CAAK,EAAE,KAAKX,EAAIO,CAAE,EAClClB,GAAyB,OAAO,OAAOnD,EAAG,CAC9C,kBAAmB2D,EACnB,qBAAsB/C,EACtB,WAAY,MAAA,CACb,EAED,OAAIT,IAAU,QAEZR,EAAA,KAAK4B,EAAAA,IAAL,UAAUrB,EAAGiD,GAAI,CAAE,GAAGU,EAAU,QAAS,OAAQ,MAAS,GAC1D1D,EAAQT,EAAA,KAAKnD,IAAQ,IAAI2D,CAAC,GAM1BR,EAAA,KAAKjD,GAAS0D,CAAK,EAAIgD,GAElBA,EACT,EAEAlD,GAAAA,SAAmBD,EAAU,CAC3B,GAAI,CAACN,EAAA,KAAKrC,IAAiB,MAAO,GAClC,IAAMwH,EAAI7E,EACV,MACE,CAAC,CAAC6E,GACFA,aAAa,SACbA,EAAE,eAAe,sBAAsB,GACvCA,EAAE,6BAA6B,eAEnC,EA4HMxC,GAAAA,eACJnC,EACAiC,EAAgD,CAAA,EAAE,CAElD,GAAM,CAEJ,WAAA5D,EAAa,KAAK,WAClB,eAAAF,EAAiB,KAAK,eACtB,mBAAAa,EAAqB,KAAK,mBAE1B,IAAAhB,EAAM,KAAK,IACX,eAAAS,EAAiB,KAAK,eACtB,KAAA9G,EAAO,EACP,gBAAAoG,EAAkB,KAAK,gBACvB,YAAAW,EAAc,KAAK,YAEnB,yBAAAK,EAA2B,KAAK,yBAChC,2BAAAE,EAA6B,KAAK,2BAClC,iBAAAE,EAAmB,KAAK,iBACxB,uBAAAD,GAAyB,KAAK,uBAC9B,QAAAgB,EACA,aAAA0E,GAAe,GACf,OAAArD,EACA,OAAAmC,EAAM,EACJzB,EAQJ,GAPIV,IACFA,EAAO,GAAK,QACZA,EAAO,IAAMvB,EACT4E,KAAcrD,EAAO,aAAe,IACxCA,EAAO,MAAQ,MAGb,CAAC/B,EAAA,KAAKrC,IACR,OAAIoE,IAAQA,EAAO,MAAQ,OACpB9B,EAAA,KAAKmB,EAAAA,IAAL,UAAUZ,EAAG,CAClB,WAAA3B,EACA,eAAAF,EACA,mBAAAa,EACA,OAAAuC,CAAAA,GAIJ,IAAM7F,GAAU,CACd,WAAA2C,EACA,eAAAF,EACA,mBAAAa,EACA,IAAAhB,EACA,eAAAS,EACA,KAAA9G,EACA,gBAAAoG,EACA,YAAAW,EACA,yBAAAK,EACA,2BAAAE,EACA,uBAAAC,GACA,iBAAAC,EACA,OAAAoC,EACA,OAAAmC,EAAAA,EAGEzD,GAAQT,EAAA,KAAKnD,IAAQ,IAAI2D,CAAC,EAC9B,GAAIC,KAAU,OAAW,CACnBsB,IAAQA,EAAO,MAAQ,QAC3B,IAAMzB,GAAIL,EAAA,KAAKU,EAAAA,IAAL,UAAsBH,EAAGC,GAAOvE,GAASwE,GACnD,OAAQJ,GAAE,WAAaA,EACzB,KAAO,CAEL,IAAMY,GAAIlB,EAAA,KAAKjD,GAAS0D,EAAK,EAC7B,GAAIR,EAAA,KAAKM,EAAAA,IAAL,UAAwBW,IAAI,CAC9B,IAAMmE,GAAQxG,GAAcqC,GAAE,uBAAyB,OACvD,OAAIa,IACFA,EAAO,MAAQ,WACXsD,KAAOtD,EAAO,cAAgB,KAE7BsD,GAAQnE,GAAE,qBAAwBA,GAAE,WAAaA,EAC1D,CAIA,IAAMoE,GAAUtF,EAAA,KAAK/B,IAAL,UAAcwC,IAC9B,GAAI,CAAC2E,IAAgB,CAACE,GACpB,OAAIvD,IAAQA,EAAO,MAAQ,OAC3B9B,EAAA,KAAKW,EAAAA,IAAL,UAAiBH,IACb9B,GACFqB,EAAA,KAAKlC,IAAL,UAAoB2C,IAElBsB,GAAQ/B,EAAA,KAAKjC,IAAL,UAAgBgE,EAAQtB,IAC7BS,GAKT,IAAMZ,GAAIL,EAAA,KAAKU,EAAAA,IAAL,UAAsBH,EAAGC,GAAOvE,GAASwE,GAE7C6E,GADWjF,GAAE,uBAAyB,QACfzB,EAC7B,OAAIkD,IACFA,EAAO,MAAQuD,GAAU,QAAU,UAC/BC,IAAYD,KAASvD,EAAO,cAAgB,KAE3CwD,GAAWjF,GAAE,qBAAwBA,GAAE,WAAaA,EAC7D,CACF,EAkDMsC,GAAAA,eACJpC,EACAiC,EAAgD,CAAA,EAAE,CAElD,IAAMvB,EAAI,MAAMjB,EAAA,KAAK0C,EAAAA,IAAL,UAAYnC,EAAGiC,GAC/B,GAAIvB,IAAM,OAAW,MAAM,IAAI,MAAM,4BAA4B,EACjE,OAAOA,CACT,EAgDA4B,GAAAA,SAAMtC,EAAMqC,EAA8C,CAAA,EAAE,CAC1D,IAAMvD,EAAaU,EAAA,KAAKvD,IACxB,GAAI,CAAC6C,EACH,MAAM,IAAI,MAAM,uCAAuC,EAEzD,GAAM,CAAE,QAAAoB,EAAS,OAAAqB,EAAQ,aAAAqD,EAAc,GAAGlJ,CAAO,EAAK2G,EAClDd,GAAUqD,IAAcrD,EAAO,aAAe,IAClD,IAAMb,EAAIjB,EAAA,KAAKmB,EAAAA,IAAL,UAAUZ,EAAGtE,GACjBsJ,EAAUJ,GAAgBlE,IAAM,OAKtC,GAJIa,IACFA,EAAO,KAAOyD,EAAU,OAAS,MAC5BA,IAASzD,EAAO,MAAQb,IAE3B,CAACsE,EAAS,OAAOtE,EACrB,IAAMuE,EAAKnG,EAAWkB,EAAGU,EAAG,CAC1B,QAAAhF,EACA,QAAAwE,CAAAA,CACqC,EACvC,OAAIqB,IAAQA,EAAO,MAAQ0D,GAC3BxF,EAAA,KAAK4B,EAAAA,IAAL,UAAUrB,EAAGiF,EAAIvJ,GACVuJ,CACT,EAwBArE,GAAAA,SAAKZ,EAAMS,EAA4C,CAAA,EAAE,CACvD,GAAM,CACJ,WAAApC,EAAa,KAAK,WAClB,eAAAF,EAAiB,KAAK,eACtB,mBAAAa,EAAqB,KAAK,mBAC1B,OAAAuC,CAAM,EACJd,EACER,EAAQT,EAAA,KAAKnD,IAAQ,IAAI2D,CAAC,EAChC,GAAIC,IAAU,OAAW,CACnBsB,IAAQA,EAAO,IAAM,QACzB,MACF,CACA,IAAMZ,EAAQnB,EAAA,KAAKjD,GAAS0D,CAAK,EAC3BiF,EAAWzF,EAAA,KAAKM,EAAAA,IAAL,UAAwBY,GAEzC,OADIY,GAAQ/B,EAAA,KAAKjC,IAAL,UAAgBgE,EAAQtB,GAChCT,EAAA,KAAK/B,IAAL,UAAcwC,GAEXiF,GAWD3D,IAAQA,EAAO,IAAM,kBACrBlD,GAAcsC,EAAM,uBAAyB,QAC3CY,IAAQA,EAAO,cAAgB,IAC5BZ,EAAM,sBAEf,SAfO3B,GACHS,EAAA,KAAKsB,EAAAA,IAAL,UAAaf,EAAG,UAEduB,IAAQA,EAAO,IAAM,SACrBlD,GACEkD,IAAQA,EAAO,cAAgB,IAC5BZ,GAET,SAUAY,IAAQA,EAAO,IAAM2D,EAAW,WAAa,OAMjDzF,EAAA,KAAKW,EAAAA,IAAL,UAAiBH,GACb9B,GACFqB,EAAA,KAAKlC,IAAL,UAAoB2C,GAEfiF,EAAWvE,EAAM,qBAAuBA,EACjD,EAEAwE,GAAAA,SAASrF,EAAUvI,EAAQ,CACzBiI,EAAA,KAAK/C,IAAMlF,CAAC,EAAIuI,EAChBN,EAAA,KAAKhD,IAAMsD,CAAC,EAAIvI,CAClB,EAEA6I,GAAAA,SAAYH,EAAY,CASlBA,IAAUT,EAAA,KAAK7C,MACbsD,IAAUT,EAAA,KAAK9C,IACjB4C,EAAA,KAAK5C,GAAQ8C,EAAA,KAAKhD,IAAMyD,CAAK,GAE7BR,EAAA,KAAK0F,EAAAA,IAAL,UACE3F,EAAA,KAAK/C,IAAMwD,CAAK,EAChBT,EAAA,KAAKhD,IAAMyD,CAAK,GAGpBR,EAAA,KAAK0F,EAAAA,IAAL,UAAc3F,EAAA,KAAK7C,IAAOsD,GAC1BX,EAAA,KAAK3C,GAAQsD,GAEjB,EAWAc,GAAAA,SAAQf,EAAMoF,EAA8B,CF5hG9C,IAAAxN,EAAAS,EE6hGQ7B,GAAQ,gBACVA,GAAQ,QAAQ,CACd,GAAI,SACJ,OAAQ4O,EACR,IAAKpF,EACL,MAAO,IAAA,CACR,EAEH,IAAIc,EAAU,GACd,GAAItB,EAAA,KAAKrD,MAAU,EAAG,CACpB,IAAM8D,EAAQT,EAAA,KAAKnD,IAAQ,IAAI2D,CAAC,EAChC,GAAIC,IAAU,OAMZ,GALIT,EAAA,KAAKvC,MAAmBgD,CAAK,IAC/B,aAAaT,EAAA,KAAKvC,MAAmBgD,CAAK,CAAC,EAC3CT,EAAA,KAAKvC,IAAiBgD,CAAK,EAAI,QAEjCa,EAAU,GACNtB,EAAA,KAAKrD,MAAU,EACjBsD,EAAA,KAAK8C,EAAAA,IAAL,UAAY6C,OACP,CACL5F,EAAA,KAAK9B,IAAL,UAAqBuC,GACrB,IAAMS,EAAIlB,EAAA,KAAKjD,GAAS0D,CAAK,EAc7B,GAbIR,EAAA,KAAKM,EAAAA,IAAL,UAAwBW,GAC1BA,EAAE,kBAAkB,MAAM,IAAI,MAAM,SAAS,CAAC,GACrClB,EAAA,KAAKtC,KAAesC,EAAA,KAAKpC,OAC9BoC,EAAA,KAAKtC,OACPtF,EAAA4H,EAAA,KAAK3D,MAAL,MAAAjE,EAAA,UAAgB8I,EAAQV,EAAGoF,IAEzB5F,EAAA,KAAKpC,KACPoC,EAAA,KAAK3C,KAAW,KAAK,CAAC6D,EAAQV,EAAGoF,CAAM,CAAC,GAG5C5F,EAAA,KAAKnD,IAAQ,OAAO2D,CAAC,EACrBR,EAAA,KAAKlD,IAAS2D,CAAK,EAAI,OACvBT,EAAA,KAAKjD,GAAS0D,CAAK,EAAI,OACnBA,IAAUT,EAAA,KAAK7C,IACjB2C,EAAA,KAAK3C,GAAQ6C,EAAA,KAAK/C,IAAMwD,CAAK,WACpBA,IAAUT,EAAA,KAAK9C,IACxB4C,EAAA,KAAK5C,GAAQ8C,EAAA,KAAKhD,IAAMyD,CAAK,OACxB,CACL,IAAMoF,EAAK7F,EAAA,KAAK/C,IAAMwD,CAAK,EAC3BT,EAAA,KAAKhD,IAAM6I,CAAE,EAAI7F,EAAA,KAAKhD,IAAMyD,CAAK,EACjC,IAAMqF,EAAK9F,EAAA,KAAKhD,IAAMyD,CAAK,EAC3BT,EAAA,KAAK/C,IAAM6I,CAAE,EAAI9F,EAAA,KAAK/C,IAAMwD,CAAK,CACnC,CACAkD,GAAA,KAAKhH,IAAL,IACAqD,EAAA,KAAK5C,IAAM,KAAKqD,CAAK,CACvB,CAEJ,CACA,GAAIT,EAAA,KAAKpC,KAAoBoC,EAAA,KAAK3C,KAAW,OAAQ,CACnD,IAAM8E,EAAKnC,EAAA,KAAK3C,IACZ+E,EACJ,KAAQA,EAAOD,GAAI,MAAK,IACtBtJ,EAAAmH,EAAA,KAAKzD,MAAL,MAAA1D,EAAA,UAAqB,GAAGuJ,EAE5B,CACA,OAAOd,CACT,EAQAyB,GAAAA,SAAO6C,EAA8B,CF/lGvC,IAAAxN,EAAAS,EEgmGI,QAAW4H,KAASR,EAAA,KAAKa,EAAAA,IAAL,UAAe,CAAE,WAAY,EAAI,GAAK,CACxD,IAAMI,EAAIlB,EAAA,KAAKjD,GAAS0D,CAAK,EAC7B,GAAIR,EAAA,KAAKM,EAAAA,IAAL,UAAwBW,GAC1BA,EAAE,kBAAkB,MAAM,IAAI,MAAM,SAAS,CAAC,MACzC,CACL,IAAMV,EAAIR,EAAA,KAAKlD,IAAS2D,CAAK,EACzBT,EAAA,KAAKtC,OACPtF,EAAA4H,EAAA,KAAK3D,MAAL,MAAAjE,EAAA,UAAgB8I,EAAQV,EAAQoF,IAE9B5F,EAAA,KAAKpC,KACPoC,EAAA,KAAK3C,KAAW,KAAK,CAAC6D,EAAQV,EAAQoF,CAAM,CAAC,CAEjD,CACF,CAKA,GAHA5F,EAAA,KAAKnD,IAAQ,MAAK,EACbmD,EAAA,KAAKjD,GAAS,KAAK,MAAS,EACjCiD,EAAA,KAAKlD,IAAS,KAAK,MAAS,EACxBkD,EAAA,KAAKxC,KAASwC,EAAA,KAAKzC,IAAS,CAC9ByC,EAAA,KAAKxC,IAAM,KAAK,CAAC,EACjBwC,EAAA,KAAKzC,IAAQ,KAAK,CAAC,EACnB,QAAW6F,KAAKpD,EAAA,KAAKvC,KAAoB,CAAA,EACnC2F,IAAM,QAAW,aAAaA,CAAC,EAErCpD,EAAA,KAAKvC,KAAkB,KAAK,MAAS,CACvC,CASA,GARIuC,EAAA,KAAK1C,KACP0C,EAAA,KAAK1C,IAAO,KAAK,CAAC,EAEpBwC,EAAA,KAAK5C,GAAQ,GACb4C,EAAA,KAAK3C,GAAQ,GACb6C,EAAA,KAAK5C,IAAM,OAAS,EACpB0C,EAAA,KAAKlD,GAAkB,GACvBkD,EAAA,KAAKnD,GAAQ,GACTqD,EAAA,KAAKpC,KAAoBoC,EAAA,KAAK3C,IAAW,CAC3C,IAAM8E,EAAKnC,EAAA,KAAK3C,IACZ+E,EACJ,KAAQA,EAAOD,GAAI,MAAK,IACtBtJ,EAAAmH,EAAA,KAAKzD,MAAL,MAAA1D,EAAA,UAAqB,GAAGuJ,EAE5B,CACF,EAj9DItJ,IChrCS,SAARiN,GAA4BC,EAAmC,CACpE,IAAMC,EAAsB,CAC1B,WAAY,CAAC,EACb,MAAO,CAAC,CACV,EAEMC,EAAgB,IAAI,QAC1B,QAAWC,KAAQH,EACjBI,GAAaH,EAAQE,EAAMD,CAAa,EAG1C,OAAOD,CACT,CASA,SAASG,GAAaC,EAAuBC,EAAwBJ,EAAuE,CAE1I,OAAW,CAACK,EAASC,CAAK,IAAK,OAAO,QAAQF,EAAU,UAAU,EAIhE,GAAID,EAAS,WAAWE,CAAO,EAC7BE,GAAeJ,EAAS,WAAWE,CAAO,EAAGC,EAAON,CAAa,MAC5D,CACL,IAAIQ,EAAU,GACd,OAAW,CAACC,EAAO,CAAE,MAAAC,EAAO,MAAAC,CAAM,CAAC,IAAKR,EAAS,MAAM,QAAQ,EAAG,CAChE,IAAMS,EAAUC,GAAqB,OAAOR,CAAO,EAAGK,CAAK,EAG3D,GAAIE,EAAQ,OAAS,KAIrB,CAAAJ,EAAU,GAIVL,EAAS,WAAWE,CAAO,EAAIC,EAC/BC,GAAeJ,EAAS,WAAWE,CAAO,EAAGS,GAAWH,CAAK,EAAGX,CAAa,EAI7EG,EAAS,MAAM,OAAOM,EAAO,CAAC,EAC9B,QAAWM,KAASH,EAAQ,OACtB,MAAM,QAAQG,CAAK,EACrBZ,EAAS,MAAM,KAAK,CAClB,MAAOY,EACP,MAAOD,GAAWH,CAAK,CACzB,CAAC,EAEDR,EAAS,WAAWY,CAAK,EAAID,GAAWH,CAAK,EAGnD,CAEKH,IACHL,EAAS,WAAWE,CAAO,EAAIC,EAEnC,CAGF,OAAW,CAAE,MAAAI,EAAO,MAAAC,CAAM,IAAKP,EAAU,MAAO,CAI9C,IAAIY,EAAiD,CAACN,CAAK,EAE3D,QAASD,EAAQ,EAAGA,EAAQN,EAAS,MAAM,OAAQM,IAAS,CAC1D,GAAM,CAAE,MAAAC,EAAO,MAAOO,CAAY,EAAId,EAAS,MAAMM,CAAK,EAC1D,OAAW,CAACS,EAAgBC,CAAc,IAAKH,EAAgB,QAAQ,EACrE,GAAI,MAAM,QAAQG,CAAc,EAAG,CACjC,IAAMP,EAAUQ,GAAgBD,EAAgBT,CAAK,EACrD,GAAIE,EAAQ,OAAS,KACnB,SAGFT,EAAS,MAAM,OAAOM,EAAO,CAAC,EAC9BA,IAEA,IAAMY,EAAiCP,GAAWG,CAAW,EACzD,MAAM,QAAQL,EAAQ,IAAI,EAC5BT,EAAS,MAAM,KAAK,CAClB,MAAOS,EAAQ,KACf,MAAOS,CACT,CAAC,EAEDlB,EAAS,WAAWS,EAAQ,IAAI,EAAIS,EAGtCd,GAAec,EAAcP,GAAWH,CAAK,EAAGX,CAAa,EAE7D,QAAWsB,KAAUV,EAAQ,OACvB,MAAM,QAAQU,CAAM,EACtBnB,EAAS,MAAM,KAAK,CAClB,MAAOmB,EACP,MAAOR,GAAWG,CAAW,CAC/B,CAAC,EAEDd,EAAS,WAAWmB,CAAM,EAAIR,GAAWG,CAAW,EAIxDD,EAAkBJ,EAAQ,KAC5B,KAAO,CACL,IAAMA,EAAUC,GAAqBM,EAAgBT,CAAK,EAC1D,GAAIE,EAAQ,OAAS,KACnB,SAKFT,EAAS,WAAWgB,CAAc,EAAIL,GAAWH,CAAK,EACtDJ,GAAeJ,EAAS,WAAWgB,CAAc,EAAGL,GAAWG,CAAW,EAAGjB,CAAa,EAI1FG,EAAS,MAAM,OAAOM,EAAO,CAAC,EAC9BA,IAEA,QAAWM,KAASH,EAAQ,OACtB,MAAM,QAAQG,CAAK,EACrBZ,EAAS,MAAM,KAAK,CAClB,MAAOY,EACP,MAAOD,GAAWG,CAAW,CAC/B,CAAC,EAEDd,EAAS,WAAWY,CAAK,EAAID,GAAWG,CAAW,EAIvDD,EAAgB,OAAOE,EAAgB,EAAG,GAAGN,EAAQ,KAAK,EAC1D,KACF,CAEJ,CAGA,QAAWP,KAAW,OAAO,KAAKF,EAAS,UAAU,EACnD,OAAW,CAACe,EAAgBC,CAAc,IAAKH,EAAgB,QAAQ,EACrE,GAAI,MAAM,QAAQG,CAAc,EAAG,CACjC,IAAMP,EAAUC,GAAqB,OAAOR,CAAO,EAAGc,CAAc,EACpE,GAAIP,EAAQ,OAAS,KACnB,SAIFL,GAAeJ,EAAS,WAAWE,CAAO,EAAGS,GAAWH,CAAK,EAAGX,CAAa,EAG7EgB,EAAgB,OAAOE,EAAgB,EAAG,GAAGN,EAAQ,MAAM,EAC3D,KACF,SACM,OAAOP,CAAO,IAAMc,EAAgB,CACtCZ,GAAeJ,EAAS,WAAWE,CAAO,EAAGS,GAAWH,CAAK,EAAGX,CAAa,EAC7E,KACF,CAMN,QAAWmB,KAAkBH,EACvB,MAAM,QAAQG,CAAc,EAC9BhB,EAAS,MAAM,KAAK,CAClB,MAAOgB,EACP,MAAOL,GAAWH,CAAK,CACzB,CAAC,EAEDR,EAAS,WAAWgB,CAAc,EAAIL,GAAWH,CAAK,CAG5D,CACF,CASA,SAASJ,GAAeJ,EAA4BC,EAA6BJ,EAAuE,CAEtJ,IAAIuB,EAAYvB,EAAc,IAAIG,CAAQ,EACtCoB,GAAW,IAAInB,CAAS,IAGvBmB,IACHA,EAAY,IAAI,IAChBvB,EAAc,IAAIG,EAAUoB,CAAS,GAEvCA,EAAU,IAAInB,CAAS,EAGrBA,EAAU,SACR,CAACD,EAAS,QACVA,EAAS,OAAO,MAAQC,EAAU,OAAO,OACxCD,EAAS,OAAO,QAAUC,EAAU,OAAO,OAASD,EAAS,OAAO,SAAWC,EAAU,OAAO,YAGnGD,EAAS,OAASC,EAAU,QAG1BA,EAAU,UACPD,EAAS,QAGZD,GAAaC,EAAS,QAASC,EAAU,QAASJ,CAAa,EAF/DG,EAAS,QAAUC,EAAU,SAM7BA,EAAU,UACPD,EAAS,QAGZD,GAAaC,EAAS,QAASC,EAAU,QAASJ,CAAa,EAF/DG,EAAS,QAAUC,EAAU,SAKnC,CAeA,SAASgB,GAAgBI,EAAyBF,EAAoC,CACpF,IAAMvB,EAAmB,CACvB,MAAO,CAAC,EACR,OAAQ,CAAC,EACT,KAAM,IACR,EAGA,GAAIyB,EAAM,CAAC,EAAIF,EAAO,CAAC,GAAKA,EAAO,CAAC,EAAIE,EAAM,CAAC,EAAG,CAChD,IAAMC,EAAQ,KAAK,IAAID,EAAM,CAAC,EAAGF,EAAO,CAAC,CAAC,EACpCI,EAAM,KAAK,IAAIF,EAAM,CAAC,EAAGF,EAAO,CAAC,CAAC,EACxCvB,EAAO,KAAO4B,GAAkBF,EAAOC,CAAG,CAC5C,CAGA,GAAIF,EAAM,CAAC,EAAIF,EAAO,CAAC,EAAG,CACxB,IAAMG,EAAQD,EAAM,CAAC,EACfE,EAAM,KAAK,IAAIJ,EAAO,CAAC,EAAGE,EAAM,CAAC,CAAC,EACxCzB,EAAO,MAAM,KAAK4B,GAAkBF,EAAOC,CAAG,CAAC,CACjD,SAAWJ,EAAO,CAAC,EAAIE,EAAM,CAAC,EAAG,CAC/B,IAAMC,EAAQH,EAAO,CAAC,EAChBI,EAAM,KAAK,IAAIJ,EAAO,CAAC,EAAGE,EAAM,CAAC,CAAC,EACxCzB,EAAO,OAAO,KAAK4B,GAAkBF,EAAOC,CAAG,CAAC,CAClD,CAGA,GAAIF,EAAM,CAAC,EAAIF,EAAO,CAAC,EAAG,CACxB,IAAMG,EAAQ,KAAK,IAAID,EAAM,CAAC,EAAGF,EAAO,CAAC,CAAC,EACpCI,EAAMF,EAAM,CAAC,EACnBzB,EAAO,MAAM,KAAK4B,GAAkBF,EAAOC,CAAG,CAAC,CACjD,SAAWJ,EAAO,CAAC,EAAIE,EAAM,CAAC,EAAG,CAC/B,IAAMC,EAAQ,KAAK,IAAID,EAAM,CAAC,EAAGF,EAAO,CAAC,CAAC,EACpCI,EAAMJ,EAAO,CAAC,EACpBvB,EAAO,OAAO,KAAK4B,GAAkBF,EAAOC,CAAG,CAAC,CAClD,CAEA,OAAO3B,CACT,CAUA,SAASc,GAAqBW,EAAeF,EAAoC,CAE/E,GAAIE,EAAQF,EAAO,CAAC,GAAKE,EAAQF,EAAO,CAAC,EACvC,MAAO,CACL,MAAO,CAACE,CAAK,EACb,OAAQ,CAACF,CAAM,EACf,KAAM,IACR,EAGF,IAAMvB,EAAmB,CACvB,MAAO,CAAC,EACR,OAAQ,CAAC,EACT,KAAMyB,CACR,EAEA,OAAIF,EAAO,CAAC,EAAIE,GACdzB,EAAO,OAAO,KAAK4B,GAAkBL,EAAO,CAAC,EAAGE,CAAK,CAAC,EAGpDF,EAAO,CAAC,EAAIE,GACdzB,EAAO,OAAO,KAAK4B,GAAkBH,EAAQ,EAAGF,EAAO,CAAC,CAAC,CAAC,EAGrDvB,CACT,CASA,SAAS4B,GAAkBF,EAAeC,EAAwC,CAChF,OAAIA,EAAMD,IAAU,EACXA,EAEF,CAACA,EAAOC,CAAG,CAEpB,CAQA,SAASZ,GAAWH,EAAyBiB,EAAmD,IAAI,IAAyB,CAC3H,GAAIA,EAAQ,IAAIjB,CAAK,EACnB,OAAOiB,EAAQ,IAAIjB,CAAK,EAG1B,IAAMZ,EAA2B,CAAC,EAClC,OAAA6B,EAAQ,IAAIjB,EAAOZ,CAAM,EAErBY,EAAM,UACRZ,EAAO,QAAU8B,GAAUlB,EAAM,QAASiB,CAAO,GAG/CjB,EAAM,UACRZ,EAAO,QAAU8B,GAAUlB,EAAM,QAASiB,CAAO,GAG/CjB,EAAM,SACRZ,EAAO,OAAS,CACd,aAAcY,EAAM,OAAO,aAAa,MAAM,EAC9C,MAAOA,EAAM,OAAO,MACpB,OAAQA,EAAM,OAAO,OACrB,SAAUA,EAAM,OAAO,SACvB,cAAeA,EAAM,OAAO,cAAc,MAAM,CAClD,GAGKZ,CACT,CAQA,SAAS8B,GAAU5B,EAAmB2B,EAAmD,IAAI,IAAoB,CAC/G,IAAME,EAAsD,CAAC,EAC7D,OAAW,CAACzB,EAASM,CAAK,IAAK,OAAO,QAAQV,EAAK,UAAU,EAC3D6B,EAAWzB,CAAO,EAAIS,GAAWH,EAAOiB,CAAO,EAGjD,MAAO,CACL,WAAAE,EACA,MAAO7B,EAAK,MAAM,IAAI,CAAC,CAAE,MAAAS,EAAO,MAAAC,CAAM,KAAO,CAC3C,MAAOD,EAAM,MAAM,EACnB,MAAOI,GAAWH,EAAOiB,CAAO,CAClC,EAAE,CACJ,CACF,CCtYe,SAARG,GAA0BC,EAA4BC,EAAoBC,EAAoBC,EAA0C,CAC7I,IAAMC,EAAUH,EAASE,CAAK,EACxBE,EAAUL,EAAKI,CAAO,EAC5B,GAAI,CAACC,EACH,OAGF,IAAIC,EAASD,EAAQ,OACrB,GAAIA,EAAQ,QAAS,CACnB,IAAME,EAAgBC,GAAYH,EAAQ,QAASJ,EAAUC,CAAU,GAGpE,CAACI,GAAUC,GAEVA,GAAiBD,IACfA,EAAO,MAAQC,EAAc,OAC5BD,EAAO,QAAUC,EAAc,OAASD,EAAO,SAAWC,EAAc,aAI7ED,EAASC,EAEb,CAEA,GAAI,EAAEJ,GAASF,EAAS,QAAU,CAACI,EAAQ,QACzC,OAAOC,EAGT,IAAMG,EAAgBV,GAASM,EAAQ,QAASJ,EAAUC,EAAYC,CAAK,EAE3E,OACG,CAACG,GAAUG,GAEVA,GAAiBH,IACfA,EAAO,MAAQG,EAAc,OAC5BH,EAAO,QAAUG,EAAc,OAASH,EAAO,SAAWG,EAAc,aAI7EH,EAASG,GAGJH,CACT,CAEA,SAASE,GAAYR,EAA4BC,EAAoBE,EAA0C,CAC7G,IAAIE,EAAUL,EAAKC,EAAS,EAAEE,CAAK,CAAC,EAChCG,EAAoCD,GAAWA,EAAQ,OAC3D,KAAOA,KAEF,CAACC,GAAUD,EAAQ,QACnBA,EAAQ,QAAUC,GAAUA,EAAO,MAAQD,EAAQ,OAAO,SAE3DC,EAASD,EAAQ,QAGf,IAAEF,EAAQ,GAAK,CAACE,EAAQ,WAI5BA,EAAUA,EAAQ,QAAQJ,EAASE,CAAK,CAAC,EAG3C,OAAOG,CACT,CCzDe,SAARI,GAA4BC,EAA4BC,EAAuBC,EAAyC,CAC7H,IAAIC,EAAU,GACd,QAASC,EAAI,EAAGA,EAAIJ,EAAO,OAAQI,IAAK,CACtC,IAAMC,EAAQL,EAAOI,CAAC,EACtB,GAAKD,EAqBE,CACL,GAAID,GAAeG,EAAM,CAAC,EAGxB,OAAAL,EAAOI,EAAI,CAAC,EAAE,CAAC,EAAIF,EACZF,EAET,GAAIE,GAAeG,EAAM,CAAC,EAGxB,OAAAL,EAAOI,EAAI,CAAC,EAAE,CAAC,EAAI,KAAK,IAAIF,EAAaG,EAAM,CAAC,CAAC,EACjDL,EAAO,OAAOI,EAAG,CAAC,EACXJ,EAITA,EAAO,OAAOI,EAAG,CAAC,EAClBA,GACF,KAvCc,CACZ,GAAIF,GAAeG,EAAM,CAAC,EAExB,OAAAL,EAAO,OAAOI,EAAG,EAAG,CAACH,EAAeC,CAAW,CAAC,EACzCF,EAET,GAAIE,GAAeG,EAAM,CAAC,EAGxB,OAAAA,EAAM,CAAC,EAAI,KAAK,IAAIJ,EAAeI,EAAM,CAAC,CAAC,EACpCL,EAET,GAAIC,EAAgBI,EAAM,CAAC,EAGzBA,EAAM,CAAC,EAAI,KAAK,IAAIJ,EAAeI,EAAM,CAAC,CAAC,EAC3CF,EAAU,OAGV,SAEJ,CAmBF,CAEA,OAAIA,EAEFH,EAAOA,EAAO,OAAS,CAAC,EAAE,CAAC,EAAIE,EAG/BF,EAAO,KAAK,CAACC,EAAeC,CAAW,CAAC,EAGnCF,CACT,CCvDe,SAARM,GAAuCC,EAAsBC,EAAgC,CAClG,OAAQD,EAAM,OAAQ,CAEpB,IAAK,GACH,IAAME,EAAQF,EAAM,OAAO,QAAQC,CAAO,EAC1C,OAAOC,IAAU,GACbA,EACA,KAEN,IAAK,GACH,IAAMC,EAAQH,EAAM,OACjB,KAAKG,GAASA,EAAM,OAASF,GAAWE,EAAM,KAAOF,CAAO,EAC/D,OAAOE,EACHA,EAAM,MACN,IACR,CACF,CAEO,SAASC,GAAkBJ,EAA+E,CAC/G,OAAQA,EAAM,OAAQ,CACpB,IAAK,GACH,OAAOA,EAAM,OAAO,IAAI,CAACC,EAASC,KAAW,CAAE,QAAAD,EAAS,MAAAC,CAAM,EAAE,EAClE,IAAK,GACH,IAAMG,EAAmE,CAAC,EAC1E,OAAW,CAACH,EAAOC,CAAK,IAAKH,EAAM,OAAO,QAAQ,EAC5CG,EAAM,MAAQA,EAAM,MACtBE,EAAQ,KAAK,CAAE,QAASF,EAAM,MAAO,MAAAD,CAAM,CAAC,EAE5CG,EAAQ,KAAK,CAAE,QAAS,CAACF,EAAM,MAAOA,EAAM,IAAM,CAAC,EAAG,MAAAD,CAAM,CAAC,EAGjE,OAAOG,CACX,CACF,CC/BO,SAASC,GAA2BC,EAA0BC,EAA0E,CAC7I,IAAMC,EAA2BD,EAAQ,CAAC,EACpCE,EAAoCC,GAA+BJ,EAAOE,CAAgB,EAC5FG,EAAiBJ,EAAQ,CAAC,EAAI,EAE5BK,EAAS,IAAI,IAEnB,KAAOD,EAASJ,EAAQ,CAAC,GACXG,GAA+BJ,EAAOK,CAAM,IAC5CF,IACNE,EAASH,GAAoB,EAC/BI,EAAO,IAAIJ,EAAkBC,CAAkB,EAE/CG,EAAO,IAAI,CAACJ,EAAkBG,CAAM,EAAGF,CAAkB,GAI7DE,IAGF,OAAIA,EAASH,GAAoB,EAC/BI,EAAO,IAAIJ,EAAkBC,CAAkB,EAE/CG,EAAO,IAAI,CAACJ,EAAkBG,CAAM,EAAGF,CAAkB,EAGpDG,CACT,CAEO,SAASF,GAA+BJ,EAA0BC,EAAgC,CACvG,IAAMM,EAAgBC,GAAsBR,EAAM,SAAUC,CAAO,EAGnE,GAAIM,IAAkB,KACpB,OAAO,KAGT,OAAQP,EAAM,YAAa,CAEzB,IAAK,GAGH,OAAQC,EAAUD,EAAM,cAAiB,GAAK,GAEhD,IAAK,GACH,OAAOA,EAAM,WAAWO,CAAa,GAAK,IAC9C,CACF,CChDO,SAASE,GACdC,EACAC,EACAC,EACAC,EACAC,EACc,CACd,IAAMC,EAA4B,CAAC,EACnC,QAAWC,KAAgBJ,EAAgB,CACzCI,EAAa,MAAM,QAAU,CAC3B,WAAY,CAAC,EACb,MAAO,CAAC,CACV,EACA,QAAWC,KAASP,EAClBK,EAAY,KAAK,GAAGG,GAClBF,EAAa,MAAM,QACnBH,EACAC,EACAH,EACAM,CACF,EAAE,IAAI,CAAC,CAAE,MAAAE,EAAO,aAAAC,CAAa,KAAO,CAClC,MAAAD,EACA,cAAe,CAAC,GAAGH,EAAa,cAAeI,CAAY,CAC7D,EAAE,CAAC,CAEP,CAEA,OAAOL,CACT,CAEO,SAASM,GACdX,EACAE,EACc,CACd,IAAMG,EAA4B,CAAC,EAC7BO,EAAmB,IAAI,IAE7B,QAAWN,KAAgBJ,EAAgB,CAEzC,GAAIU,EAAiB,IAAIN,EAAa,KAAK,EACzC,SAEFM,EAAiB,IAAIN,EAAa,KAAK,EAEvCA,EAAa,MAAM,UAAY,CAC7B,WAAY,CAAC,EACb,MAAO,CAAC,CACV,EAIA,IAAMO,EAAgC,CAAC,EAEvC,QAAWN,KAASP,EACd,MAAM,QAAQO,CAAK,EACrBD,EAAa,MAAM,QAAQ,MAAM,KAAK,CACpC,MAAOO,EACP,MAAON,CACT,CAAC,EAEDD,EAAa,MAAM,QAAQ,WAAWC,CAAK,EAAIM,EAInDR,EAAY,KAAK,CACf,MAAOQ,EACP,cAAeP,EAAa,aAC9B,CAAC,CACH,CAEA,OAAOD,CACT,CAEO,SAASS,GACdd,EACAE,EACc,CACd,IAAMG,EAA4B,CAAC,EAC7BO,EAAmB,IAAI,IAE7B,QAAWN,KAAgBJ,EAAgB,CAEzC,GAAIU,EAAiB,IAAIN,EAAa,KAAK,EACzC,SAEFM,EAAiB,IAAIN,EAAa,KAAK,EAEvCA,EAAa,MAAM,UAAY,CAC7B,WAAY,CAAC,EACb,MAAO,CAAC,CACV,EAIA,IAAMO,EAAgC,CAAC,EAEvC,QAAWN,KAASP,EACd,MAAM,QAAQO,CAAK,EACrBD,EAAa,MAAM,QAAQ,MAAM,KAAK,CACpC,MAAOO,EACP,MAAON,CACT,CAAC,EAEDD,EAAa,MAAM,QAAQ,WAAWC,CAAK,EAAIM,EAInDR,EAAY,KAAK,CACf,MAAOQ,EACP,cAAeP,EAAa,aAC9B,CAAC,CACH,CAEA,OAAOD,CACT,CAEO,SAASG,GAAaO,EAAmBC,EAA4CZ,EAAmBa,EAAoBC,EAAgG,CACjO,IAAMC,EAAqE,CAAC,EAC5E,GAAI,CAAC,MAAM,QAAQD,CAAO,EACxBH,EAAK,WAAWG,CAAO,EAAI,CAAC,EAC5BC,EAAO,KAAK,CACV,MAAOJ,EAAK,WAAWG,CAAO,EAC9B,aAAcE,GAA0BJ,EAAeZ,EAASa,EAAYC,CAAO,CACrF,CAAC,MACI,CACL,IAAMG,EAAOC,GAA+BN,EAAeZ,EAASa,EAAYC,CAAO,EACvF,OAAW,CAACK,EAAOb,CAAY,IAAKW,EAAM,CACxC,IAAMZ,EAA0B,CAAC,EAC7B,MAAM,QAAQc,CAAK,EACrBR,EAAK,MAAM,KAAK,CAAE,MAAAQ,EAAO,MAAAd,CAAM,CAAC,EAEhCM,EAAK,WAAWQ,CAAK,EAAI,CAAC,EAE5BJ,EAAO,KAAK,CAAE,MAAAV,EAAO,aAAAC,CAAa,CAAC,CACrC,CACF,CAEA,OAAOS,CACT,CAEA,SAASG,GAA+BN,EAA4CZ,EAAmBoB,EAAeD,EAAwE,CAC5L,QAAWb,KAAgBM,EAAc,OAAOS,GAAKA,EAAE,gBAAkBD,CAAK,EAC5E,QAAWE,KAAsBtB,EAAQM,EAAa,eAAe,EAAoB,UAAW,CAClG,IAAMiB,EAAMC,GACVF,EACAH,CACF,EAEA,GAAI,CAAC,MAAM,KAAKI,EAAI,OAAO,CAAC,EAAE,MAAME,GAAOA,IAAQ,IAAI,EACrD,OAAOF,CAEX,CAGF,OAAO,IAAI,IAAI,CAAC,CAACJ,EAAO,IAAI,CAAC,CAAC,CAChC,CAEA,SAASH,GAA0BJ,EAA4CZ,EAAmBoB,EAAeN,EAAgC,CAC/I,QAAWR,KAAgBM,EAAc,OAAOS,GAAKA,EAAE,gBAAkBD,CAAK,EAC5E,QAAWE,KAAsBtB,EAAQM,EAAa,eAAe,EAAoB,UAAW,CAClG,IAAMiB,EAAMG,GACVJ,EACAR,CACF,EAEA,GAAIS,IAAQ,KACV,OAAOA,CAEX,CAGF,OAAO,IACT,CCxKe,SAARI,GAA2BC,EAAqDC,EAAmBC,EAAiC,CACzI,IAAMC,EAAsB,CAC1B,WAAY,CAAC,EACb,MAAO,CAAC,CACV,EAEMC,EAAcC,GAAkBL,EAAM,QAAQ,EAEpD,OAAW,CAAE,QAAAM,EAAS,MAAAC,CAAM,IAAKH,EAAa,CAC5C,IAAMI,EAAeR,EAAM,cAAcO,CAAK,EAG9C,GAAKC,EAIL,OAAW,CAACC,EAAUC,CAAQ,IAAKF,EAAa,QAAQ,EAAG,CACzD,IAAIG,EAA+BC,GACjCT,EACAO,EAAS,cACTT,EACA,EACAK,CACF,EAAE,IAAI,CAAC,CAAE,MAAAO,EAAO,aAAAC,CAAa,KAAO,CAAE,MAAAD,EAAO,cAAe,CAACC,CAAY,CAAE,EAAE,EAG7E,OAAW,CAACP,EAAOQ,CAAK,IAAKL,EAAS,MAAM,QAAQ,EAClDC,EAAiBK,GACf,CAACD,CAAK,EACNR,EAAQ,EACRI,EACAD,EAAS,cACTT,CACF,EAGF,QAAWc,KAASL,EAAS,UAC3BC,EAAiBM,GACf,CAACF,CAAK,EACNJ,CACF,EAGF,QAAWI,KAASL,EAAS,UAC3BC,EAAiBO,GACf,CAACH,CAAK,EACNJ,CACF,EAIF,OAAW,CAAE,MAAAE,EAAO,cAAAM,CAAc,IAAKR,EACrCE,EAAM,OAAS,CACb,cAAAM,EACA,OAAQT,EAAS,MAAM,OAAS,EAChC,MAAOR,EACP,SAAAO,EACA,aAAc,CACZ,GAAKC,EAAS,UAAU,OACxB,EAAIA,EAAS,MAAM,OAASA,EAAS,UAAU,MACjD,CACF,CAEJ,CACF,CAEA,OAAOP,CACT,CCxEe,SAARiB,GAA+BC,EAAsBC,EAAmF,CAC7I,OAAQD,EAAM,SAEP,EACC,MAAM,QAAQC,CAAO,EAChBC,GAAmBF,EAAOC,CAAO,EAEnC,IAAI,IAAI,CAAC,CACdA,EACAE,GAAwBH,EAAOC,CAAO,CACxC,CAAC,CAAC,EAGK,IAAI,IAAI,CAAC,CAACA,EAAS,IAAI,CAAC,CAAC,CAEtC,CAEA,SAASC,GAAmBF,EAA+BC,EAA0E,CACnI,IAAMG,EAAqBH,EAAQ,CAAC,EAC9BI,EAA8BF,GAAwBH,EAAOI,CAAU,EACzEE,EAAiBL,EAAQ,CAAC,EAAI,EAE5BM,EAAS,IAAI,IAEnB,KAAOD,EAASL,EAAQ,CAAC,GACTE,GAAwBH,EAAOM,CAAM,IACrCD,IACRC,EAASF,GAAc,EACzBG,EAAO,IAAIH,EAAYC,CAAY,EAEnCE,EAAO,IAAI,CAACH,EAAYE,CAAM,EAAGD,CAAY,GAGjDC,IAGF,OAAIA,EAASF,GAAc,EACzBG,EAAO,IAAIH,EAAYC,CAAY,EAEnCE,EAAO,IAAI,CAACH,EAAYE,CAAM,EAAGD,CAAY,EAGxCE,CACT,CAEA,SAASJ,GAAwBH,EAA+BC,EAAgC,CAC9F,QAAWO,KAASR,EAAM,OACxB,GAAIQ,EAAM,OAASP,GAAWO,EAAM,KAAOP,EACzC,OAAOO,EAAM,QAIjB,OAAO,IACT,CAEO,SAASC,GAAgBT,EAAsBU,EAA8C,CAClG,OAAQV,EAAM,OAAQ,CACpB,IAAK,GACH,IAAMW,EAAyC,CAAC,EAChD,QAAWH,KAASR,EAAM,OACpBQ,EAAM,UAAYE,IAIlBF,EAAM,MAAQA,EAAM,MACtBG,EAAQ,KAAKH,EAAM,KAAK,EAExBG,EAAQ,KAAK,CAACH,EAAM,MAAOA,EAAM,IAAM,CAAC,CAAC,GAG7C,OAAOG,EACT,QACE,MAAO,CAAC,CACZ,CACF,CCnEe,SAARC,GAA2BC,EAAqDC,EAAmBC,EAAiC,CACzI,IAAMC,EAAyB,CAAC,EAE1BC,EAAcC,GAAkBL,EAAM,QAAQ,EAEpD,OAAW,CAAE,QAAAM,CAAQ,IAAKF,EAAa,CACrC,IAAMG,EAAkBC,GAAcR,EAAM,cAAeM,CAAO,EAClE,OAAW,CAACA,EAASG,CAAU,IAAKF,EAAgB,QAAQ,EAAG,CAE7D,GAAIE,IAAe,KACjB,SAGF,IAAMC,EAAWV,EAAM,cAAcS,CAAU,EAG/C,GAAKC,EAIL,OAAW,CAACC,EAAUC,CAAQ,IAAKF,EAAS,QAAQ,EAAG,CACrD,IAAMG,EAAsB,CAC1B,WAAY,CAAC,EACb,MAAO,CAAC,CACV,EAEIC,EAA+BC,GACjCF,EACAD,EAAS,cACTX,EACA,EACAK,CACF,EAAE,IAAI,CAAC,CAAE,MAAAU,GAAO,aAAAC,CAAa,KAAO,CAAE,MAAAD,GAAO,cAAe,CAACC,CAAY,CAAE,EAAE,EAE7E,OAAW,CAACC,GAAOC,CAAQ,IAAKP,EAAS,MAAM,QAAQ,EACrDE,EAAiBM,GACfC,GAAgBrB,EAAM,cAAemB,CAAQ,EAC7CD,GAAQ,EACRJ,EACAF,EAAS,cACTX,CACF,EAGF,QAAWkB,MAAYP,EAAS,UAC9BE,EAAiBQ,GACfD,GAAgBrB,EAAM,kBAAmBmB,EAAQ,EACjDL,CACF,EAGF,QAAWK,MAAYP,EAAS,UAC9BE,EAAiBS,GACfF,GAAgBrB,EAAM,kBAAmBmB,EAAQ,EACjDL,CACF,EAKF,OAAW,CAAE,MAAAE,GAAO,cAAAQ,CAAc,IAAKV,EACrCE,GAAM,OAAS,CACb,cAAAQ,EACA,MAAOtB,EACP,SAAAS,EACA,OAAQC,EAAS,MAAM,OAAS,EAChC,aAAc,CACZ,GAAKA,EAAS,UAAU,OACxB,EAAIA,EAAS,MAAM,OAASA,EAAS,UAAU,MACjD,CACF,EAGFT,EAAQ,KAAKU,CAAM,CACrB,CACF,CACF,CAEA,OAAOY,GAAWtB,CAAO,CAC3B,CCjFe,SAARuB,GAA2BC,EAAqDC,EAAmBC,EAAiC,CACzI,IAAMC,EAAsB,CAC1B,WAAY,CAAC,EACb,MAAO,CAAC,CACV,EAEMC,EAAcC,GAAkBL,EAAM,cAAc,CAAC,CAAC,EAE5D,OAAW,CAAE,QAAAM,CAAQ,IAAKF,EAAa,CACrC,IAAIG,EAA+BC,GACjCL,EACAH,EAAM,cACNC,EACA,EACAK,CACF,EAAE,IAAI,CAAC,CAAE,MAAAG,EAAO,aAAAC,CAAa,KAAO,CAAE,MAAAD,EAAO,cAAe,CAACC,CAAY,CAAE,EAAE,EAE7E,OAAW,CAACC,EAAOC,CAAQ,IAAKZ,EAAM,cAAc,MAAM,CAAC,EAAE,QAAQ,EACnEO,EAAiBM,GACfR,GAAkBO,CAAQ,EAAE,IAAIE,GAASA,EAAM,OAAO,EACtDH,EAAQ,EACRJ,EACAP,EAAM,cACNC,CACF,EAGF,QAAWW,KAAYZ,EAAM,kBAC3BO,EAAiBQ,GACfV,GAAkBO,CAAQ,EAAE,IAAIE,GAASA,EAAM,OAAO,EACtDP,CACF,EAGF,QAAWK,KAAYZ,EAAM,kBAC3BO,EAAiBS,GACfX,GAAkBO,CAAQ,EAAE,IAAIE,GAASA,EAAM,OAAO,EACtDP,CACF,EAKF,OAAW,CAAE,MAAAE,EAAO,cAAAQ,CAAc,IAAKV,EACrCE,EAAM,OAAS,CACb,cAAAQ,EACA,MAAOf,EACP,SAAU,EACV,OAAQF,EAAM,cAAc,OAC5B,aAAc,CACZ,GAAKA,EAAM,kBAAkB,OAC7BA,EAAM,cAAc,OAASA,EAAM,kBAAkB,MACvD,CACF,CAEJ,CAEA,OAAOG,CACT,CC3De,SAARe,GAA2BC,EAA0DC,EAAiC,CAC3H,IAAMC,EAAsB,CAC1B,WAAY,CAAC,EACb,MAAO,CAAC,CACV,EAEMC,EAASC,GAAkBJ,EAAM,QAAQ,EAE/C,OAAW,CAAE,QAAAK,EAAS,MAAAC,CAAM,IAAKH,EAAQ,CACvC,IAAMI,EAAiC,CAAC,EACpC,MAAM,QAAQF,CAAO,EACvBH,EAAO,MAAM,KAAK,CAChB,MAAOK,EACP,MAAOF,CACT,CAAC,EAEDH,EAAO,WAAWG,CAAO,EAAIE,EAG/B,IAAIC,EAA+B,CAAC,CAClC,MAAOD,EACP,cAAe,CAACP,EAAM,YAAYM,CAAK,CAAC,CAC1C,CAAC,EAGD,QAAWG,KAAYT,EAAM,kBAC3BQ,EAAiBE,GACfN,GAAkBK,CAAQ,EAAE,IAAIE,GAASA,EAAM,OAAO,EACtDH,CACF,EAGF,QAAWC,KAAYT,EAAM,kBAC3BQ,EAAiBI,GACfR,GAAkBK,CAAQ,EAAE,IAAIE,GAASA,EAAM,OAAO,EACtDH,CACF,EAIF,OAAW,CAAE,MAAAK,EAAO,cAAAC,CAAc,IAAKN,EACrCK,EAAM,OAAS,CACb,cAAAC,EACA,MAAOb,EACP,SAAU,EACV,OAAQ,EACR,aAAc,CACZ,GAAKD,EAAM,kBAAkB,OAC7B,EAAIA,EAAM,kBAAkB,MAC9B,CACF,CAEJ,CAEA,OAAOE,CACT,CClEe,SAARa,GAAyBC,EAAmBC,EAA4D,IAAI,IAA6B,CAC9I,IAAMC,EAA+B,CAAC,EACtC,OAAW,CAACC,EAASC,CAAK,IAAK,OAAO,QAAQJ,EAAK,UAAU,EAC3DE,EAAOC,CAAO,EAAIE,GAAaD,EAAOH,CAAO,EAG/C,OAAW,CAAE,MAAAK,EAAO,MAAAF,CAAM,IAAKJ,EAAK,MAAO,CACzC,IAAMO,EAAYF,GAAaD,EAAOH,CAAO,EAC7C,QAASE,EAAUG,EAAM,CAAC,EAAGH,EAAUG,EAAM,CAAC,EAAGH,IAC/CD,EAAOC,CAAO,EAAII,CAEtB,CAEA,OAAOL,CACT,CAEA,SAASG,GAAaD,EAAyBH,EAAsF,CACnI,GAAIA,EAAQ,IAAIG,CAAK,EACnB,OAAOH,EAAQ,IAAIG,CAAK,EAG1B,IAAMF,EAAoC,CAAC,EAC3C,OAAAD,EAAQ,IAAIG,EAAOF,CAAM,EAErBE,EAAM,UACRF,EAAO,QAAUH,GAAQK,EAAM,QAASH,CAAO,GAG7CG,EAAM,UACRF,EAAO,QAAUH,GAAQK,EAAM,QAASH,CAAO,GAG7CG,EAAM,SACRF,EAAO,OAASE,EAAM,QAGjBF,CACT,CfzBA,IAAMM,GAAN,KAAgC,CAM9B,YAAYC,EAAqBC,EAA6B,CAJ9D,KAAQ,aAA0E,CAAC,EACnF,KAAQ,cAAiD,CAAC,EAIxD,KAAK,MAAQD,EAETC,EAAQ,UAAY,IACtB,KAAK,OAAS,IAAIC,GAAS,CACzB,QAASD,EAAQ,UACjB,iBAAkB,CAACE,EAAyCC,IAAgBA,EAAI,OAClF,CAAC,GAIH,IAAMC,GADe,KAAK,MAAM,OAAO,MAAQ,KAAK,MAAM,OAAO,KAAK,SAAS,OAAQC,GAAuBA,EAAE,MAAQ,MAAM,GAAK,CAAC,GAEjI,OAAO,CAACC,EAAeJ,IAAsD,CAAC,GAAGI,EAAK,GAAGJ,EAAI,QAAQ,iBAAiB,EAAG,CAAC,CAAC,EAExHK,EAAa,KAAK,MAAM,OAAO,MAAQ,KAAK,MAAM,OAAO,KAAK,SAAW,CAAC,EAC1EC,EAAeD,EAAW,OAAO,CAACE,EAAYC,IAAcN,EAAc,KAAKO,GAAOA,IAAQD,CAAC,CAAC,EAEtG,OAAW,CAACE,EAAOC,CAAM,IAAKL,EAAa,QAAQ,EAAG,CACpD,IAAMM,EAAuB,CAAC,EAC9B,OAAQD,EAAO,WAAY,CACzB,IAAK,GACH,OAAW,CAACD,EAAOG,CAAK,IAAKF,EAAO,UAAU,QAAQ,EACpD,OAAQE,EAAM,YAAa,CACzB,IAAK,GACHD,EAAM,KAAKE,GAA0BD,EAAOR,EAAYK,CAAK,CAAC,EAC9D,MACF,IAAK,GACHE,EAAM,KAAKE,GAA0BD,EAAOR,EAAYK,CAAK,CAAC,EAC9D,MACF,IAAK,GACHE,EAAM,KAAKE,GAA0BD,EAAOR,EAAYK,CAAK,CAAC,EAC9D,KACJ,CAEF,MACF,IAAK,GACH,OAAW,CAACA,EAAOG,CAAK,IAAKF,EAAO,UAAU,QAAQ,EACpDC,EAAM,KAAKE,GAA0BD,EAAOH,CAAK,CAAC,EAEpD,KACJ,CAEA,IAAMK,EAAOC,GAAQC,GAAWL,CAAK,CAAC,EAEtC,KAAK,aAAa,KAAK,CACrB,KAAAG,EACA,eAAgBJ,EAAO,aAAe,CACxC,CAAC,EAED,QAAWO,KAAW,OAAO,KAAKH,CAAI,EAC/B,KAAK,cAAcG,CAAO,IAC7B,KAAK,cAAcA,CAAO,EAAI,CAAC,GAGjC,KAAK,cAAcA,CAAO,EAAE,KAAKR,CAAK,CAE1C,CACF,CAEO,cAAcS,EAA6B,CAChD,IAAMC,EAAS,KAAK,QAAU,KAAK,OAAO,IAAID,CAAI,EAClD,GAAIC,GAAU,CAAC,MAAM,QAAQA,CAAM,EACjC,OAAOA,EAGT,IAAMC,EAAqB,CAAC,EAC5B,QAAWC,KAAQH,EACjBE,EAAS,KAAK,KAAK,MAAM,iBAAiBC,CAAI,CAAC,EAMjD,GAAI,KAAK,aAAa,SAAW,EAC/B,MAAO,CACL,YAAaD,EACb,aAAcA,EACd,cAAe,CAAC,CAClB,EAGF,IAAME,EAAS,KAAK,cAAcF,EAAS,MAAM,CAAC,EAC5CG,EAA6B,CACjC,YAAaH,EACb,aAAcE,EAAO,SACrB,cAAeA,EAAO,MACxB,EACA,OAAI,KAAK,QACP,KAAK,OAAO,IAAIJ,EAAMK,CAAW,EAG5BA,CACT,CAEO,mBAAmBL,EAAkC,CAG1D,GAAI,KAAK,aAAa,SAAW,EAC/B,MAAO,CAAC,EAGV,IAAMC,EAAS,KAAK,QAAU,KAAK,OAAO,IAAID,CAAI,EAClD,GAAIC,EACF,OAAO,MAAM,QAAQA,CAAM,EAAIA,EAASA,EAAO,cAGjD,IAAMC,EAAqB,CAAC,EAC5B,QAAWC,KAAQH,EACjBE,EAAS,KAAK,KAAK,MAAM,iBAAiBC,CAAI,CAAC,EAGjD,IAAMC,EAAS,KAAK,cAAcF,CAAQ,EAC1C,OAAI,KAAK,QACP,KAAK,OAAO,IAAIF,EAAMI,EAAO,MAAM,EAG9BA,EAAO,MAChB,CAEQ,cAAcE,EAAwE,CAC5F,IAAMC,EAA6B,CAAC,EAEhCC,EAAa,KAAK,eAAeF,EAAU,CAAC,EAChD,KAAOE,EAAW,QAAU,MAAM,CAChC,IAAMhB,EAAS,KAAK,aAAagB,EAAW,KAAK,EACjD,GAAIhB,EAAO,eAAgB,CACzB,IAAIiB,EAAiBD,EAAW,KAChC,QAASnB,EAAImB,EAAW,MAAOnB,EAAIoB,EAAgBpB,IAAK,CACtD,IAAMe,EAASM,GAASlB,EAAO,KAAMc,EAAUjB,EAAGA,CAAC,EACnD,GAAIe,EAAQ,CACV,QAASO,EAAI,EAAGA,EAAIP,EAAO,cAAc,OAAQO,IAAK,CACpD,IAAMC,EAAMR,EAAO,cAAcO,CAAC,EAC9BC,IAAQ,OACVN,EAASjB,EAAIsB,CAAC,EAAIC,EAEtB,CAEAC,GACEN,EACAH,EAAO,aAAa,CAAC,EAAIf,EACzBe,EAAO,aAAa,CAAC,EAAIf,CAC3B,EAGIA,EAAIe,EAAO,QAAUK,IACvBA,EAAiBpB,EAAIe,EAAO,OAAS,GAGvCf,GAAKe,EAAO,OAAS,CACvB,CACF,CACF,KAIE,SAASf,EAAImB,EAAW,KAAO,EAAGnB,GAAKmB,EAAW,MAAOnB,IAAK,CAC5D,IAAMe,EAASM,GAASlB,EAAO,KAAMc,EAAUjB,EAAGA,CAAC,EACnD,GAAIe,EAAQ,CACV,QAASO,EAAI,EAAGA,EAAIP,EAAO,cAAc,OAAQO,IAAK,CACpD,IAAMC,EAAMR,EAAO,cAAcO,CAAC,EAC9BC,IAAQ,OACVN,EAASjB,EAAIsB,CAAC,EAAIC,EAEtB,CAEAC,GACEN,EACAH,EAAO,aAAa,CAAC,EAAIf,EACzBe,EAAO,aAAa,CAAC,EAAIf,CAC3B,EAEAA,GAAKe,EAAO,OAAS,CACvB,CACF,CAGFI,EAAa,KAAK,eAAeF,EAAUE,EAAW,MAAQ,CAAC,CACjE,CAEA,MAAO,CAAE,SAAAF,EAAU,OAAAC,CAAO,CAC5B,CASQ,eAAeD,EAAoBQ,EAAsE,CAC/G,IAAMV,EAAgE,CACpE,MAAO,KACP,MAAO,IACP,KAAM,EACR,EAGA,QAASf,EAAI,EAAGA,EAAIiB,EAAS,OAAQjB,IAAK,CACxC,IAAM0B,EAAU,KAAK,cAAcT,EAASjB,CAAC,CAAC,EAC9C,GAAK0B,EAIL,QAASJ,EAAI,EAAGA,EAAII,EAAQ,OAAQJ,IAAK,CACvC,IAAMK,EAAcD,EAAQJ,CAAC,EAC7B,GAAIK,GAAeF,EAAO,EAGpBV,EAAO,QAAU,MAAQY,GAAeZ,EAAO,SACjDA,EAAO,MAAQY,EAEXZ,EAAO,MAAQf,IACjBe,EAAO,MAAQf,GAGjBe,EAAO,KAAOf,EAAI,GAGpB,KACF,CACF,CACF,CAEA,OAAOe,CACT,CACF,EAQO,SAASa,GAAWC,EAAqBvC,EAA2B,CACzE,IAAMD,EAAgB,SAAMwC,CAAM,EAClC,OAAO,IAAIzC,GAASC,EAAM,CACxB,UAAW,EACX,GAAGC,CACL,CAAC,CACH,CgBnPe,SAARwC,GAAuBC,EAA0B,CACtD,GAAI,OAAOA,GAAW,SACpB,MAAM,IAAI,MAAM,8BAA8B,EAGhD,IAAMC,EAAyB,CAC7B,MAAOD,EACP,OAAQ,CACV,EAEME,EAAW,CAAC,EACdC,EAAgB,GAIpB,KAAOF,EAAQ,OAASA,EAAQ,MAAM,QAAQ,CAC5C,IAAMG,EAAOH,EAAQ,MAAMA,EAAQ,QAAQ,EAC3C,OAAQG,EAAM,CAEZ,IAAK,IACL,IAAK,IACHD,GAAiBE,GAAYJ,EAASG,CAAI,EAC1C,MAEF,IAAK,IACHF,EAAS,KAAKC,CAAa,EAC3BA,EAAgB,GAChB,MACF,QAEO,KAAK,KAAKC,CAAI,IACjBH,EAAQ,SACRE,GAAiBG,GAAgBL,CAAO,EACxCC,EAAS,KAAKC,CAAa,EAC3BA,EAAgB,GAEtB,CACF,CAEA,OAAOD,CACT,CAQA,SAASG,GAAYJ,EAAwBM,EAA+B,CAC1E,IAAIC,EAAM,GACNC,EAAU,GACd,KAAOR,EAAQ,OAASA,EAAQ,MAAM,QAAQ,CAC5C,IAAMG,EAAOH,EAAQ,MAAMA,EAAQ,QAAQ,EAC3C,GAAIQ,EACE,aAAa,KAAKL,CAAI,GAExBH,EAAQ,SACRO,GAAOE,GAAaT,CAAO,GAClBG,IAAS;AAAA,IAElBI,GAAOJ,GAETK,EAAU,OAEV,QAAQL,EAAM,CAEZ,KAAKG,EACH,OAAOC,EAET,IAAK,KACHC,EAAU,GACV,MAEF,QACED,GAAOJ,CACX,CAEJ,CAEA,MAAM,IAAI,MAAM,qBAAqB,CACvC,CAOA,SAASE,GAAgBL,EAAgC,CACvD,IAAIO,EAAM,GACNC,EAAU,GACd,KAAOR,EAAQ,OAASA,EAAQ,MAAM,QAAQ,CAC5C,IAAMG,EAAOH,EAAQ,MAAMA,EAAQ,QAAQ,EAC3C,GAAIQ,EACE,aAAa,KAAKL,CAAI,GAExBH,EAAQ,SACRO,GAAOE,GAAaT,CAAO,GAG3BO,GAAOJ,EAETK,EAAU,OAEV,QAAQL,EAAM,CAEZ,IAAK,KACHK,EAAU,GACV,MAEF,IAAK,IACH,OAAOD,EACT,QACM,KAAK,KAAKJ,CAAI,EAEXI,EAAI,SAAS,GAAG,IACnBA,GAAO,KAITA,GAAOJ,CAEb,CAEJ,CAEA,OAAOI,CACT,CAOA,SAASE,GAAaT,EAAgC,CACpD,IAAIO,EAAM,GACV,KAAOP,EAAQ,OAASA,EAAQ,MAAM,QAAQ,CAC5C,IAAMG,EAAOH,EAAQ,MAAMA,EAAQ,QAAQ,EAC3C,GAAI,KAAK,KAAKG,CAAI,EAGhB,OAAOO,GAAgBH,CAAG,EAE5B,GAAIA,EAAI,QAAU,GAAK,CAAC,aAAa,KAAKJ,CAAI,EAG5C,OAAAH,EAAQ,SACDU,GAAgBH,CAAG,EAI5BA,GAAOJ,CACT,CAEA,OAAOO,GAAgBH,CAAG,CAC5B,CAOA,SAASG,GAAgBC,EAA2B,CAClD,OAAO,OAAO,cAAc,SAASA,EAAW,EAAE,CAAC,CACrD,CC1JA,IAAIC,GAQJ,eAAOC,GAA4BC,EAAoBC,EAA8C,CACnG,GAAI,CAACH,GAAc,CAEjB,GAAI,OAAO,UAAc,KAAe,UAAW,UAAW,CAC5D,GAAI,CACF,IAAMI,EAAS,MAAO,UAA8C,YAAY,UAAU,CACxF,KAAM,aACR,CAAC,EACD,GAAIA,GAAUA,EAAO,QAAU,UAC7B,MAAM,IAAI,MAAM,+CAA+C,CAEnE,OAASC,EAAc,CAIrB,GAAIA,aAAe,OAASA,EAAI,OAAS,YACvC,MAAMA,CAEV,CACA,IAAMC,EAAyC,CAAC,EAChD,GAAI,CACF,IAAMC,EAAgB,MAAO,UAA8C,MAAM,MAAM,EACvF,QAAWC,KAAYD,EAChBD,EAAM,eAAeE,EAAS,MAAM,IACvCF,EAAME,EAAS,MAAM,EAAI,CAAC,GAE5BF,EAAME,EAAS,MAAM,EAAE,KAAKA,CAAQ,EAEtCR,GAAe,QAAQ,QAAQM,CAAK,CACtC,OAASD,EAAc,CACjBA,aAAe,OACjB,QAAQ,MAAMA,EAAI,KAAMA,EAAI,OAAO,CAEvC,CACF,SAES,OAAO,OAAW,KAAe,oBAAqB,OAAQ,CACrE,IAAMC,EAAyC,CAAC,EAChD,GAAI,CACF,IAAMC,EAAgB,MAAO,OAAe,gBAAgB,EAC5D,QAAWC,KAAYD,EAChBD,EAAM,eAAeE,EAAS,MAAM,IACvCF,EAAME,EAAS,MAAM,EAAI,CAAC,GAE5BF,EAAME,EAAS,MAAM,EAAE,KAAKA,CAAQ,EAEtCR,GAAe,QAAQ,QAAQM,CAAK,CACtC,OAASD,EAAc,CACjBA,aAAe,OACjB,QAAQ,MAAMA,EAAI,KAAMA,EAAI,OAAO,CAEvC,CACF,CACAL,KAAiB,QAAQ,QAAQ,CAAC,CAAC,CACrC,CAEA,IAAMM,EAAQ,MAAMN,GACpB,QAAWS,KAAUC,GAAMR,CAAU,EAAG,CAItC,GAAIS,GAAoB,SAASF,CAAM,EACrC,OAGF,GAAIH,EAAM,eAAeG,CAAM,GAAKH,EAAMG,CAAM,EAAE,OAAS,EAAG,CAC5D,IAAMG,EAAON,EAAMG,CAAM,EAAE,CAAC,EAC5B,GAAI,SAAUG,EAAM,CAElB,IAAMC,EAAS,MADD,MAAMD,EAAK,KAAK,GACH,YAAY,EACvC,OAAOE,GAAWD,EAAQ,CAAE,UAAAV,CAAU,CAAC,CACzC,CACA,MACF,CACF,CAIF,CAGA,IAAMQ,GAAsB,CAC1B,QACA,aACA,UACA,UACA,YACA,YACA,QACA,OACA,UACF,ECzGA,IAAMI,GAAa,IASZ,SAASC,GAAgBC,EAAgBC,EAA8B,CAAC,EAAW,CACxF,IAAIC,EACAC,EACAC,EAA6B,EAC7BC,EAEJ,OAAOL,EAAK,wBAAyBM,GAAqC,CAExE,IAAMC,EAAWP,EAAK,QAAQ,WAC9B,GACEO,IACCH,IAAiB,GAAyBF,IAAoBK,GAC/D,CACAJ,EAAO,OACPC,EAAe,EACfF,EAAkBK,EAClB,IAAMC,EAAsBN,EAE5BO,GAAKD,EAAqBV,EAAU,EACjC,KAAKY,GAAK,CAGLF,IAAwBR,EAAK,QAAQ,aACvCI,EAAe,EACfD,EAAOO,EAGHA,GACFV,EAAK,QAAQ,EAAGA,EAAK,KAAO,CAAC,EAGnC,CAAC,EACA,MAAMW,GAAK,CAGNH,IAAwBR,EAAK,QAAQ,aACvCI,EAAe,EACXJ,EAAK,QAAQ,WAAa,SAC5B,QAAQ,MAAMK,EAAW,IAAI,MAAM,4BAA4B,CAAC,EAElEF,EAAO,OACPE,EAAYM,EAEhB,CAAC,CACL,CAEA,OAAIR,GAAQC,IAAiB,EAGpBD,EAAK,mBAAmBG,CAAI,EAAE,IACnCM,GAAS,CAACA,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,CAC9B,EAGKC,GAAkBP,EAAML,CAAiB,CAClD,CAAC,CACH,CAEA,SAASY,GAAkBP,EAAcL,EAAiD,CACxF,IAAMa,EAA6B,CAAC,EACpC,QAASC,EAAI,EAAGA,EAAIT,EAAK,OAAQS,IAC/B,QAASC,EAAI,EAAGA,EAAIf,EAAkB,OAAQe,IAC5C,GAAIV,EAAK,WAAWL,EAAkBe,CAAC,EAAGD,CAAC,EAAG,CAC5CD,EAAO,KAAK,CAACC,EAAGA,EAAId,EAAkBe,CAAC,EAAE,MAAM,CAAC,EAChDD,GAAKd,EAAkBe,CAAC,EAAE,OAAS,EACnC,KACF,CAGJ,OAAOF,CACT,CCnFO,IAAMG,GAAN,KAA8D,CAOnE,YAAYC,EAAqC,CAE/C,KAAK,oBAAsBA,GAAS,mBAAqB,CACvD,MAAO,OAAQ,MAAO,KAAM,KAAM,MAAO,MAAO,OAChD,MAAO,OAAQ,MAAO,KAAM,KAAM,MAAO,MAAO,OAAQ,KAAM,MAC9D,MAAO,OAAQ,QAAS,SAAU,MAAO,OAAQ,QAAS,SAAU,KAAM,MAC1E,MAAO,KAAM,MAAO,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAC7E,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAChF,KAAM,KAAM,MAAO,OAAQ,OAC7B,GAAG,KAAK,CAACC,EAAGC,IAAMA,EAAE,OAASD,EAAE,MAAM,EACrC,KAAK,qBAAuBD,GAAS,mBACvC,CAEO,SAASG,EAA0B,CACxC,GAAI,CAACA,EAAS,QACZ,MAAM,IAAI,MAAM,sDAAsD,EAExE,KAAK,UAAYA,EACjB,KAAK,mBAAqBC,GAAgBD,EAAU,KAAK,kBAAkB,EAC3EA,EAAS,QAAQ,MAAM,oBAAsB,KAAK,sBAAwB,WAC5E,CAEO,SAAgB,CACjB,KAAK,qBAAuB,SAC9B,KAAK,WAAW,0BAA0B,KAAK,kBAAkB,EACjE,KAAK,mBAAqB,QAExB,KAAK,WAAW,UAClB,KAAK,UAAU,QAAQ,MAAM,oBAAsB,GAEvD,CACF",
|
|
6
6
|
"names": ["require_opentype", "__commonJSMin", "exports", "module", "opentype", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__hasOwnProp", "__export", "target", "all", "name", "__copyProps", "to", "from", "except", "desc", "key", "__toCommonJS", "mod", "opentype_exports", "bbox_default", "font_default", "glyph_default", "path_default", "parse_default", "load", "loadSync", "parseBuffer", "TINF_OK", "TINF_DATA_ERROR", "Tree", "Data", "source", "dest", "sltree", "sdtree", "length_bits", "length_base", "dist_bits", "dist_base", "clcidx", "code_tree", "lengths", "tinf_build_bits_base", "bits", "base", "delta", "first", "i", "sum", "tinf_build_fixed_trees", "lt", "dt", "offs", "tinf_build_tree", "t", "lengths2", "off", "num", "tinf_getbit", "d", "bit", "tinf_read_bits", "val", "tinf_decode_symbol", "cur", "len", "tag", "tinf_decode_trees", "hlit", "hdist", "hclen", "length", "clen", "sym", "prev", "tinf_inflate_block_data", "dist", "offs2", "tinf_inflate_uncompressed_block", "invlength", "tinf_uncompress", "bfinal", "btype", "res", "derive", "v0", "v1", "v2", "v3", "BoundingBox", "x", "y", "x0", "y0", "x1", "y1", "x2", "y2", "p0", "p1", "p2", "p3", "b", "a", "c", "b2ac", "t1", "t2", "cp1x", "cp1y", "cp2x", "cp2y", "Path", "decimalRoundingCache", "roundDecimal", "float", "places", "integerPart", "decimalPart", "roundedDecimalPart2", "roundedDecimalPart", "optimizeCommands", "commands", "subpaths", "startX", "startY", "subpath", "cmd", "firstCommand", "secondCommand", "previousCommand", "nextCommand", "createSVGParsingOptions", "options", "createSVGOutputOptions", "pathData", "number", "supportedCommands", "unsupportedCommands", "sign", "command", "buffer", "isUnexpected", "parseBuffer2", "buffer2", "makeRelative", "lastCommand", "applyCommand", "commandType", "relative", "parsedBuffer", "currentX", "currentY", "offset", "prop", "token", "lastBuffer", "flipY", "flipYBase", "boundingBox", "path", "pathOrCommands", "box", "prevX", "prevY", "ctx", "layers", "l", "image", "floatToString", "v", "rounded", "packValues", "s", "commandsCopy", "tempPath", "svg", "newPath", "fail", "message", "argument", "predicate", "check_default", "LIMIT16", "LIMIT32", "MIN_16_16", "MAX_16_16", "decode", "encode", "sizeOf", "constant", "fixedValue", "value", "m", "epsilon", "nibbles", "ii", "out", "data", "numBytes", "codePoints", "numChars", "j", "codepoint", "eightBitMacEncodings", "dataView", "dataLength", "encoding", "table", "result", "macEncodingTableCache", "macEncodingCacheKeys", "getMacEncodingTable", "e", "cacheKey", "cachedTable", "decodingTable", "encodingTable", "str", "isByteEncodable", "encodeVarDeltaRunAsZeroes", "deltas", "pos", "runLength", "numDeltas", "encodeVarDeltaRunAsBytes", "encodeVarDeltaRunAsWords", "offsets", "encodedOffsets", "offSize", "offsetEncoder", "encodedOffset", "keys", "k", "enc1", "enc2", "type", "wmm", "ops", "cachedValue", "op", "encodingFunction", "sizeOfFunction", "subtables", "subtableOffsets", "field", "bytes", "o", "Table", "tableName", "fields", "optionKeys", "ushortList", "itemName", "list", "count", "tableList", "records", "itemCallback", "recordList", "Coverage", "coverageTable", "RangeRecord", "ScriptList", "scriptListTable", "scriptRecord", "script", "defaultLangSys", "langSysRecord", "i2", "langSys", "FeatureList", "featureListTable", "featureRecord", "feature", "LookupList", "lookupListTable", "subtableMakers3", "lookupTable", "subtableCallback", "ClassDef", "classDefTable", "table_default", "getByte", "getUShort", "getShort", "getUInt24", "getULong", "getLong", "getFixed", "decimal", "fraction", "getTag", "getOffset", "getBytes", "startOffset", "endOffset", "bytesToString", "typeOffsets", "masks", "Parser", "string", "minorBase", "major", "minor", "amount", "recordDescription", "rec", "fieldName", "fieldType", "tupleCount", "axisCount", "tuples", "tuple", "axisIndex", "description", "struct", "valueFormat", "valueRecord", "valueCount", "values", "structOffset", "relativeOffset", "start", "subOffsets", "subList", "format", "ranges", "langSysTable", "lookupTableParsers", "lookupType", "lookupFlag", "useMarkFilteringSet", "majorVersion", "minorVersion", "vsOffset", "variationStore", "itemStoreOffset", "iVStore", "variationRegionListOffset", "itemVariationDataCount", "itemVariationDataOffsets", "subtableOffset", "regionCount", "itemCount", "wordDeltaCount", "regionIndexes", "regionIndexCount", "entryFormat", "map", "mapCount", "bitCount", "entrySize", "n", "entry", "outerIndex", "innerIndex", "longFlag", "wordCount", "wordParser", "restParser", "flavor", "glyphs", "glyphCount", "offsetSizeIs32Bit", "glyphVariationDataArrayOffset", "parseOffset", "glyphVariations", "currentOffset", "nextOffset", "tableOffset", "glyphIndex", "tupleVariationCount", "hasSharedPoints", "dataOffset", "headers", "sharedPoints", "h", "headerData", "serializedDataOffset", "header", "deltasOffset", "deltasRelativeOffset", "defineDeltas", "propertyName", "_deltas", "_deltasY", "parseDeltas", "pointsCount", "glyph", "variationDataSize", "tupleIndex", "embeddedPeakTuple", "intermediateRegion", "privatePointNumbers", "sharedTupleRecordsIndex", "peakTuple", "intermediateStartTuple", "intermediateEndTuple", "countByte1", "points", "totalPointCount", "countByte2", "lastPoint", "controlByte", "numbersAre16Bit", "runCount", "pointDelta", "expectedCount", "zeroData", "deltaWords", "nameTableNames", "macLanguages", "macLanguageToScript", "windowsLanguages", "getLanguageCode", "platformID", "languageID", "ltag", "utf16", "macScriptEncodings", "macLanguageEncodings", "getEncoding", "encodingID", "platforms", "getPlatform", "parseNameTable", "p", "stringOffset", "nameID", "property", "byteLength", "language", "platformName", "text", "platform", "translations", "reverseDict", "dict", "makeNameRecord", "findSubArray", "needle", "haystack", "needleLength", "limit", "loop", "addStringToPool", "pool", "makeNameTable", "names", "platformNameIds", "macLanguageIds", "windowsLanguageIds", "nameRecords", "stringPool", "nameIDs", "namesWithNumericKeys", "nameTableIds", "id", "lang", "macLanguage", "macScript", "macEncoding", "macName", "macNameOffset", "winLanguage", "winName", "winNameOffset", "r", "getNameByID", "allowedStandardIDs", "nameKey", "name_default", "parseCmapTableFormat0", "cmap", "indexMap", "glyphIndexMap", "parseCmapTableFormat12or13", "groupCount", "startCharCode", "endCharCode", "startGlyphId", "parseCmapTableFormat4", "segCount", "endCountParser", "startCountParser", "idDeltaParser", "idRangeOffsetParser", "glyphIndexOffset", "endCount", "startCount", "idDelta", "idRangeOffset", "parseCmapTableFormat14", "varSelectorList", "numVarSelectorRecords", "varSelector", "varSelectorRecord", "defaultUVSOffset", "nonDefaultUVSOffset", "parseCmapTable", "format14Parser", "format14offset", "platformId", "encodingId", "platform0Encodings", "platform3Encodings", "addSegment", "code", "addTerminatorSegment", "mergeSegments", "segments", "merged", "curr", "makeCmapTable", "isPlan0Only", "cmapTable", "segCountToRemove", "endCounts", "startCounts", "idDeltas", "idRangeOffsets", "glyphIds", "cmap12Groups", "segment", "cmap12Length", "cmap_default", "cffStandardStrings", "cffISOAdobeStrings", "cffIExpertStrings", "cffExpertSubsetStrings", "cffStandardEncoding", "cffExpertEncoding", "standardNames", "DefaultEncoding", "font", "CmapEncoding", "CffEncoding", "charset", "charName", "GlyphNames", "post", "gid", "addGlyphNamesAll", "charCodes", "addGlyphNamesToUnicodeMap", "addGlyphNames", "opt", "line", "draw_default", "parseCpalTable", "version", "numPaletteEntries", "numPalettes", "numColorRecords", "colorRecordsArrayOffset", "colorRecordIndices", "colorRecords", "makeCpalTable", "palette", "color", "parseCPALColor", "bgra", "g", "getPaletteColor", "index", "colorFormat", "cpalTable", "lookupIndex", "formatColor", "toHex", "rgbToHSL", "max", "min", "hslToRGB", "hsla", "bgraToRaw", "parseColor", "targetFormat", "returnRaw", "isRaw", "validFormat", "detectedColor", "rgbaRegex", "matches", "hslaRegex", "hsl", "cpal_default", "getPathDefinition", "_path", "Glyph", "unicode", "fontSize", "hPoints", "xScale", "yScale", "scale", "useGlyph", "svgImage", "layer", "transformedPoints", "contours", "currentContour", "pt", "xCoords", "yCoords", "metrics", "drawCircles", "scale2", "blueCircles", "redCircles", "xMin", "yMin", "xMax", "yMax", "advanceWidth", "usePath", "defineDependentProperty", "externalName", "internalName", "newValue", "GlyphSet", "done", "unicodeObj", "loader", "glyphLoader", "ttfGlyphLoader", "parseGlyph2", "position", "buildPath2", "cffGlyphLoader", "parseCFFCharstring2", "charstring", "glyphset_default", "equals", "MAX_CALL_DEPTH", "calcCFFSubroutineBias", "subrs", "bias", "parseCFFIndex", "conversionFn", "objects", "countLength", "objectOffset", "offsetSize", "parseCFFIndexLowMemory", "getCffIndexObject", "parseFloatOperand", "parser", "lookup", "n1", "n2", "parseOperand", "b0", "b1", "b2", "b3", "b4", "entriesToObject", "entries", "parseCFFDict", "size", "operands", "operandsStart", "parseBlend", "getCFFString", "strings", "interpretDict", "meta", "newDict", "parseCFFHeader", "TOP_DICT_META", "TOP_DICT_META_CFF2", "PRIVATE_DICT_META", "PRIVATE_DICT_META_CFF2", "FONT_DICT_META", "parseCFFTopDict", "parseCFFPrivateDict", "parseFontDict", "gatherCFF2FontDicts", "fdArray", "fontDictArray", "fontDictData", "fontDict", "privateSize", "privateOffset", "privateDict", "subrOffset", "subrIndex", "gatherCFFTopDicts", "cffIndex", "topDictArray", "iTopDict", "topDictData", "topDict", "parseCFFCharset", "nGlyphs", "isCIDFont", "sid", "parseCFFEncoding", "nCodes", "nRanges", "nLeft", "numberOfBlends", "applyPaintType", "paintType", "parseCFFCharstring", "coords", "c1x", "c1y", "c2x", "c2y", "stack", "nStems", "haveWidth", "open", "subrsBias", "defaultWidthX", "nominalWidthX", "vsindex", "vstore", "blendVector", "callDepth", "cffTable", "variationCoords", "fdIndex", "fdDict", "width", "newContour", "parseStems", "hasWidthArg", "parse", "code2", "codeIndex", "subrCode", "jpx", "jpy", "c3x", "c3y", "c4x", "c4y", "acharName", "bcharName", "ady", "adx", "acharGlyphIndex", "bcharGlyphIndex", "acharGlyph", "shiftedCommands", "deltaSetCount", "deltaSetIndex", "parseCFFFDSelect", "fdArrayCount", "fdSelect", "iGid", "next", "iRange", "parseCFFTable", "resultTable", "nameIndex", "topDictIndex", "stringIndex", "globalSubrIndex", "topDictOffset", "fdArrayIndexOffset", "fdSelectOffset", "fdArrayIndex", "fdArrayOffset", "privateDictOffset", "charStringsIndex", "charString", "encodeString", "makeHeader", "makeNameIndex", "fontNames", "makeDict", "attrs", "makeTopDict", "makeTopDictIndex", "makeStringIndex", "makeGlobalSubrIndex", "makeCharsets", "glyphNames", "glyphName", "glyphSID", "glyphToOps", "dx", "dy", "_13", "_23", "dx1", "dy1", "dx2", "dy2", "makeCharStringsIndex", "makePrivateDict", "makeCFFTable", "fontScale", "topDictOptions", "privateAttrs", "cff_default", "parseHeadTable", "head", "makeHeadTable", "timestamp", "createdTimestamp", "macStyle", "head_default", "parseHheaTable", "hhea", "makeHheaTable", "hhea_default", "parseHmtxTableAll", "numMetrics", "numGlyphs", "leftSideBearing", "parseHmtxTableOnLowMemory", "parseHmtxTable", "makeHmtxTable", "hmtx_default", "makeLtagTable", "tags", "stringPoolOffset", "parseLtagTable", "tableVersion", "numTags", "ltag_default", "parseMaxpTable", "maxp", "makeMaxpTable", "maxp_default", "unicodeRanges", "getUnicodeRange", "range", "parseOS2Table", "os2", "makeOS2Table", "os2_default", "parsePostTable", "nameLength", "makePostTable", "italicAngle", "underlinePosition", "underlineThickness", "isFixedPitch", "minMemType42", "maxMemType42", "minMemType1", "maxMemType1", "post_default", "subtableParsers", "substFormat", "lookupRecordDesc", "substCount", "extensionLookupType", "extensionParser", "parseGsubTable", "subtableMakers", "subtable", "sequenceSet", "alternateSet", "ligatureSet", "ligature", "sequenceRuleSet", "sequenceRule", "tableData", "record", "classSeqRuleSet", "classSeqRule", "coverage", "chainRuleSet", "chainRule", "makeGsubTable", "gsub", "gsub_default", "parseMetaTable", "numDataMaps", "makeMetaTable", "meta_default", "parseColrTable", "numBaseGlyphRecords", "baseGlyphRecordsOffset", "layerRecordsOffset", "numLayerRecords", "baseGlyphRecords", "layerRecords", "makeColrTable", "colr_default", "makeFvarAxis", "axis", "parseFvarAxis", "axisNameID", "makeFvarInstance", "inst", "axes", "optionalFields", "axisTag", "parseFvarInstance", "instanceSize", "subfamilyNameID", "postScriptNameID", "makeFvarTable", "fvar", "parseFvarTable", "offsetToData", "axisSize", "instanceCount", "instances", "instanceStart", "fvar_default", "axisRecordStruct", "axisValueParsers", "parseSTATAxisValue", "valueTableFormat", "axisValueParser", "formatStub", "parseSTATTable", "tableVersionMajor", "tableVersionMinor", "designAxisSize", "designAxisCount", "designAxesOffset", "axisValueCount", "offsetToAxisValueOffsets", "elidedFallbackNameID", "valueOffsets", "axisValueMakers", "returnFields", "makeSTATAxisRecord", "makeSTATValueTable", "axisValueMaker", "makeSTATTable", "STAT", "axisRecord", "axisValueOffsets", "axisValueTables", "axisValueTableOffset", "axisValueTable", "stat_default", "makeAvarAxisValueMap", "axisValueMap", "makeAvarSegmentMap", "returnTable", "axisValueMaps", "valueMap", "makeAvarTable", "avar", "parseAvarTable", "axisSegmentMaps", "positionMapCount", "fromCoordinate", "toCoordinate", "avar_default", "parseCvarTable", "cvt", "cvtVariations", "makeCvarTable", "cvar_default", "parseGvarTable", "sharedTupleCount", "sharedTuples", "makeGvarTable", "gvar_default", "parseGaspTable", "gasp", "makeGaspTable", "gasp_default", "parseSvgTable", "svgTable", "buf", "svgDocumentListOffset", "numEntries", "svgDocMap", "startGlyphID", "endGlyphID", "svgDocOffset", "svgDocLength", "svgDoc", "makeSvgTable", "documentRecords", "documentBuffers", "documentOffsets", "nextSvgDocOffset", "glyphId", "numDocuments", "documentsOffset", "fieldIndex", "namePrefix", "svg_default", "log2", "computeCheckSum", "makeTableRecord", "checkSum", "makeSfntTable", "tables", "sfnt", "highestPowerOf2", "recordFields", "tableFields", "tableLength", "tableRecord", "r1", "r2", "metricsForChar", "chars", "notFoundMetrics", "average", "vs", "fontToSfntTable", "xMins", "yMins", "xMaxs", "yMaxs", "advanceWidths", "leftSideBearings", "rightSideBearings", "firstCharIndex", "lastCharIndex", "ulUnicodeRange1", "ulUnicodeRange2", "ulUnicodeRange3", "ulUnicodeRange4", "globals", "headTable", "hheaTable", "maxpTable", "os2Table", "hmtxTable", "englishFamilyName", "englishStyleName", "englishFullName", "postScriptName", "fontNamesUnicode", "fontNamesMacintosh", "fontNamesWindows", "manufacturer", "languageTags", "nameTable", "ltagTable", "postTable", "metaTable", "optionalTables", "optionalTableArgs", "sfntTable", "checkSumAdjusted", "sfnt_default", "searchTag", "arr", "imin", "imax", "imid", "binSearch", "searchRange", "Layout", "create", "layout", "hasLatn", "scripts", "scr", "scriptTable", "langSysTable2", "featIndexes", "allFeatures", "featureTable", "lookupListIndexes", "allLookups", "end", "layout_default", "Position", "kerningLookups", "leftIndex", "rightIndex", "covIndex", "pairSet", "pair", "class1", "class2", "position_default", "arraysEqual", "ar1", "ar2", "binarySearch", "array", "low", "high", "mid", "recordValue", "binarySearchIndex", "element", "binarySearchInsert", "compare", "isGzip", "unGzip", "gzip", "flg", "isize", "copyPoint", "copyComponent", "Substitution", "getSubstFormat", "defaultSubtable", "substitutions", "lookupTables", "idx", "substitute", "replacements", "alternates", "alternateSets", "ligatures", "ligatureSets", "startGlyph", "ligSet", "lig", "substitution", "coverageGlyph", "ligComponents", "ligatureTable", "sub", "substitution_default", "PaletteManager", "palettes", "cpal", "startIndex", "paletteColors", "color2", "colors", "_colorCount", "newCount", "paletteIndex", "colorCount", "colorIndex", "replacementIndex", "updatedPalettes", "updatedPalette", "colrTable", "currentIndex", "replacementShift", "flattenedPalettes", "paletteCount", "LayerManager", "colr", "baseGlyph", "firstIndex", "numLayers", "currentLayers", "newLayers", "glyphID", "layerIndex", "newBaseGlyphRecord", "baseGlyphRecord", "originalNumLayers", "newNumLayers", "layerDiff", "sibling", "SVGImageManager", "svgImageCacheEntry", "svgBuf", "svgDocCacheEntry", "createSvgDocCacheEntry", "createSvgImageCacheEntry", "error", "decodeSvgDocument", "makeSvgTemplate", "svgTemplatePromise", "svgTemplate", "svgText", "makeSvgImage", "decodeSvgDocumentWithDecompressionStream", "decodeSvgDocumentWithTinyInflate", "documentStart", "contentStart", "contentEnd", "unitsPerEm", "viewBoxVal", "widthVal", "heightVal", "div", "bbox", "baseline", "height", "_resolving", "parseGlyphCoordinate", "flag", "previousValue", "shortVectorBitMask", "sameBitMask", "parseGlyph", "flags", "endPointIndices", "numberOfCoordinates", "repeatCount", "point", "px", "py", "moreComponents", "component", "transformPoints", "transform", "newPoints", "newPt", "getContours", "getPath", "contourIndex", "contour", "next2", "buildPath", "resolving", "componentGlyph", "firstPt", "secondPt", "parseGlyfTableAll", "loca", "parseGlyfTableOnLowMemory", "parseGlyfTable", "glyf_default", "VariationProcessor", "padded", "normalized", "tagValue", "glyphPoints", "deltaMap", "pointIndex", "firstPoint", "endPoint", "firstDelta", "curDelta", "ref1", "ref2", "iterable", "in1", "in2", "out1", "out2", "ref", "deltaX", "deltaY", "tuplePoints", "factor", "pointsIndex", "componentTransform", "deltaIndex", "transformedComponentPoints", "variationData", "args", "normalizedCoords", "tupleCoords", "interpolatedPoints", "hasBlend", "hasPoints", "transformedGlyph", "blendPath", "parameter", "mapSize", "itemStore", "varData", "deltaSet", "netAdjustment", "master", "itemIndex", "scalar", "regionIndex", "axisScalar", "VariationManager", "defaultInstance", "acc", "defaultCoordinates", "defaultInstanceIndex", "instance", "coordinates", "instanceIdOrObject", "MAX_INSTRUCTIONS", "MAX_CALL_DEPTH2", "MAX_LOOP_COUNT", "instructionTable", "exec", "execGlyph", "execComponent", "Hinting", "roundOff", "roundToGrid", "roundToDoubleGrid", "roundToHalfGrid", "roundUpToGrid", "roundDownToGrid", "roundSuper", "period", "phase", "threshold", "xUnitVector", "o1", "o2", "rp1", "rp2", "pv", "do1", "do2", "doa1", "doa2", "dm1", "dm2", "rp", "org", "rpx", "rpy", "rpdx", "rpdy", "yUnitVector", "UnitVector", "pvns", "fvs", "getUnitVector", "HPoint", "lastPointOfContour", "onCurve", "HPZero", "defaultState", "State", "env", "prog", "ppem", "prepState", "fpgmState", "oCvt", "components", "gZone", "state", "cg", "gz", "cc", "pi", "gLen", "pLen", "cp", "sp", "np", "ins", "initTZone", "tZone", "skip", "handleElse", "ip", "nesting", "SVTCA", "SPVTCA", "SFVTCA", "SPVTL", "p2i", "p1i", "SFVTL", "SPVFS", "SFVFS", "GPV", "GFV", "fv", "SFVTPV", "ISECT", "pa0i", "pa1i", "pb0i", "pb1i", "z0", "z1", "pa0", "pa1", "pb0", "pb1", "x3", "y3", "x4", "y4", "f1", "f2", "SRP0", "SRP1", "SRP2", "SZP0", "SZP1", "SZP2", "SZPS", "SLOOP", "RTG", "RTHG", "SMD", "ELSE", "JMPR", "SCVTCI", "DUP", "POP", "CLEAR", "SWAP", "DEPTH", "LOOPCALL", "fn", "cip", "cprog", "CALL", "CINDEX", "MINDEX", "FDEF", "ipBegin", "MDAP", "round", "IUP", "z2", "pp", "SHP", "rpi", "SHC", "ci", "SHZ", "z", "SHPIX", "IP", "rp1i", "rp2i", "MSIRP", "rp0", "ALIGNRP", "rp0i", "RTDG", "MIAP", "cv", "NPUSHB", "NPUSHW", "w", "WS", "store", "RS", "WCVTP", "RCVT", "cvte", "GC", "MD", "pi2", "pi1", "MPPEM", "FLIPON", "LT", "e2", "e1", "LTEQ", "GT", "GTEQ", "EQ", "NEQ", "ODD", "EVEN", "IF", "test", "EIF", "AND", "OR", "NOT", "DELTAP123", "ds", "arg", "mag", "SDB", "SDS", "ADD", "SUB", "DIV", "MUL", "ABS", "NEG", "FLOOR", "CEILING", "ROUND", "WCVTF", "DELTAC123", "SROUND", "S45ROUND", "ROFF", "RUTG", "RDTG", "SCANCTRL", "SDPVTL", "GETINFO", "sel", "ROLL", "MAX", "MIN", "SCANTYPE", "INSTCTRL", "PUSHB", "PUSHW", "MDRP_MIRP", "indirect", "setRp0", "keepD", "ro", "md", "od", "hintingtt_default", "Token", "char", "ContextRange", "contextName", "ContextChecker", "checkStart", "checkEnd", "ContextParams", "context", "Event", "eventId", "initializeCoreEvents", "events", "coreEvents", "event", "requiresContextUpdate", "Tokenizer", "stateId", "RUDs", "RUD", "hasFAILObject", "obj", "tokens", "silent", "isTokenType", "replaced", "modifierId", "condition", "modifier", "contextParams", "conditionParams", "canApplyModifier", "modifierParams", "newStateValue", "eventHandler", "subsId", "eventName", "contextStartCheck", "contextEndCheck", "contextCheckers", "endIndex", "registeredContexts", "contextChecker", "openRange", "tokenizer_default", "isArabicChar", "isIsolatedArabicChar", "isTashkeelArabicChar", "isThaiChar", "isLatinChar", "isWhiteSpace", "FeatureQuery", "SubstitutionAction", "action", "lookupCoverage", "singleSubstitutionFormat1", "singleSubstitutionFormat2", "substituteIndex", "lookupCoverageList", "coverageList", "lookupList", "chainingSubstitutionFormat3", "lookupsCount", "inputLookups", "lookaheadOffset", "lookaheadContext", "lookaheadParams", "lookaheadLookups", "backtrackContext", "backtrackParams", "backtrackLookups", "contextRulesMatch", "lookupRecord", "lookupListIndex", "subtable2", "substitutionType", "ligatureSubstitutionFormat1", "ligSetIndex", "lookaheadItem", "contextSubstitutionFormat1", "ruleSet", "rule", "matched", "substitutions2", "sequenceIndex", "contextSubstitutionFormat3", "decompositionSubstitutionFormat1", "scriptTag", "langSysRecords", "features", "featuresIndexes", "query", "lookups", "substType", "supportedScript", "supportedFeature", "scriptFeatures", "featureQuery_default", "arabicWordStartCheck", "prevChar", "arabicWordEndCheck", "nextChar", "arabicWord_default", "arabicSentenceStartCheck", "arabicSentenceEndCheck", "nextIsWhitespace", "arabicCharAhead", "arabicSentence_default", "singleSubstitutionFormat12", "singleSubstitutionFormat22", "chainingSubstitutionFormat32", "subst", "ligatureSubstitutionFormat12", "compsCount", "SUBSTITUTIONS", "applySubstitution", "applySubstitution_default", "willConnectPrev", "charContextParams", "backtrack", "isolated", "tashkeel", "willConnectNext", "arabicPresentationForms", "CONNECT", "arabicPresentationForms_default", "getContextParams", "arabicRequiredLigatures", "arabicRequiredLigatures_default", "ccmpReplacementStartCheck", "ccmpReplacementEndCheck", "ccmpReplacement_default", "getContextParams2", "ccmpReplacementLigatures", "ccmpReplacementLigatures_default", "latinWordStartCheck", "latinWordEndCheck", "latinWord_default", "getContextParams3", "latinLigature", "latinLigatures_default", "thaiWordStartCheck", "thaiWordEndCheck", "thaiWord_default", "getContextParams4", "thaiGlyphComposition", "thaiGlyphComposition_default", "getContextParams5", "thaiLigatures", "thaiLigatures_default", "getContextParams6", "thaiRequiredLigatures", "thaiRequiredLigatures_default", "isVariationSequenceSelector", "charCode", "unicodeVariationSequenceStartCheck", "unicodeVariationSequenceEndCheck", "variationSequenceCheck_default", "unicodeVariationSequence", "baseCodePoint", "vsCodePoint", "selectorLookup", "mappings", "replacementGlyphId", "variationSequences_default", "Bidi", "baseDir", "registerContextChecker", "checkId", "check", "tokenizeText", "reverseArabicSentences", "rangeTokens", "supportedTags", "f", "checkGlyphIndexStatus", "applyArabicPresentationForms", "applyCcmpReplacement", "applyArabicRequireLigatures", "applyLatinLigatures", "applyUnicodeVariationSequences", "applyThaiFeatures", "contextId", "indexes", "bidi_default", "createDefaultNamesInfo", "Font", "selection", "bidi", "charToGlyphIndexMod", "notdef", "leftGlyph", "rightGlyph", "gposKerning", "callback", "kerningValue", "fullPath", "gX", "gY", "gFontSize", "glyphPath", "glyphPaths", "warnings", "_this", "assert", "assertNamePresent", "englishName", "baseGlyphs", "previousID", "currentGlyphID", "intArray", "parseHvarTable", "itemVariationStore", "lsb", "rsb", "makeHvarTable", "hvar_default", "attachList", "caretValue", "ligGlyph", "ligCaretList", "markGlyphSets", "parseGDEFTable", "gdef", "gdef_default", "subtableParsers2", "posformat", "posFormat", "valueFormat1", "valueFormat2", "classDef1", "classDef2", "class1Count", "class2Count", "parseGposTable", "subtableMakers2", "makeGposTable", "gpos", "gpos_default", "parseWindowsKernTable", "pairs", "subtableVersion", "nPairs", "parseMacKernTable", "parseKernTable", "kern_default", "parseLocaTable", "shortVersion", "parseFn", "glyphOffsets", "glyphOffset", "loca_default", "parseOpenTypeTableEntries", "numTables", "tableEntries", "checksum", "parseWOFFTableEntries", "compLength", "origLength", "compression", "uncompressTable", "tableEntry", "inBuffer", "outBuffer", "indexToLocFormat", "signature", "issue", "cffTableEntry", "cff2TableEntry", "fvarTableEntry", "statTableEntry", "gvarTableEntry", "cvarTableEntry", "avarTableEntry", "glyfTableEntry", "gdefTableEntry", "gposTableEntry", "gsubTableEntry", "hmtxTableEntry", "hvarTableEntry", "kernTableEntry", "locaTableEntry", "nameTableEntry", "metaTableEntry", "locaTable", "locaOffsets", "glyfTable", "cffTable2", "kernTable", "gdefTable", "gposTable", "gsubTable", "fvarTable", "statTable", "gvarTable", "cvarTable", "avarTable", "hvarTable", "root", "factory", "opentype", "tracingChannel", "channel", "metrics", "channel", "tracing", "tracingChannel", "defaultPerf", "hasSubscribers", "warned", "PROCESS", "emitWarning", "msg", "type", "code", "fn", "shouldWarn", "isPosInt", "n", "getUintArray", "max", "ZeroArray", "size", "_a", "_o", "Stack", "HeapCls", "__publicField", "_Stack", "#constructing", "s", "__privateAdd", "_b", "_c", "_S", "_O", "_w", "_M", "_I", "_m", "_n", "_s", "_i", "_t", "_l", "_u", "_h", "_y", "_r", "__", "_F", "_d", "_g", "_T", "_U", "_f", "_x", "_u_instances", "k_fn", "_D", "_v", "_H", "_p", "X_fn", "_R", "_j", "_N", "A_fn", "z_fn", "V_fn", "W_fn", "G_fn", "Y_fn", "J_fn", "P_fn", "e_fn", "B_fn", "K_fn", "Q_fn", "C_fn", "$_fn", "L_fn", "E_fn", "q_fn", "LRUCache", "options", "#max", "#maxSize", "#dispose", "#onInsert", "#disposeAfter", "#fetchMethod", "#memoMethod", "#perf", "#size", "#calculatedSize", "#keyMap", "#keyList", "#valList", "#next", "#prev", "#head", "#tail", "#free", "#disposed", "#sizes", "#starts", "#ttls", "#autopurgeTimers", "#hasDispose", "#hasFetchMethod", "#hasDisposeAfter", "#hasOnInsert", "#updateItemAge", "#statusTTL", "#setItemTTL", "#isStale", "#removeItemSize", "#addItemSize", "_st", "#requireSize", "_k", "sizeCalculation", "ttl", "ttlResolution", "ttlAutopurge", "updateAgeOnGet", "updateAgeOnHas", "allowStale", "dispose", "onInsert", "disposeAfter", "noDisposeOnSet", "noUpdateTTL", "maxSize", "maxEntrySize", "fetchMethod", "memoMethod", "noDeleteOnFetchRejection", "noDeleteOnStaleGet", "allowStaleOnFetchRejection", "allowStaleOnFetchAbort", "ignoreFetchAbort", "backgroundFetchSize", "perf", "__privateSet", "UintArray", "__privateGet", "__privateMethod", "#initializeSizeTracking", "#initializeTTLTracking", "_LRUCache", "c", "p", "#isBackgroundFetch", "k", "index", "context", "#backgroundFetch", "#moveToTail", "#indexes", "#rindexes", "key", "i", "getOptions", "v", "value", "#get", "thisp", "deleted", "#delete", "entry", "start", "remain", "arr", "age", "#set", "setOptions", "status", "result", "val", "#evict", "dt", "task", "hasOptions", "#has", "peekOptions", "#peek", "fetchOptions", "ths", "#fetch", "#forceFetch", "memoOptions", "#memo", "#clear", "ttls", "starts", "purgeTimers", "setPurgetTimer", "t", "cachedNow", "getNow", "sizes", "#isValidIndex", "bf", "isBF", "__privateWrapper", "oldVal", "oldValue", "setType", "free", "head", "ac", "signal", "fetchOpts", "cb", "updateCache", "aborted", "ignoreAbort", "proceed", "fetchFail", "vl", "eb", "er", "allowStaleAborted", "noDelete", "pcall", "res", "rej", "fmp", "b", "forceRefresh", "stale", "isStale", "staleVal", "refresh", "vv", "fetching", "#connect", "reason", "pi", "ni", "mergeTrees", "trees", "result", "mergedEntries", "tree", "mergeSubtree", "mainTree", "mergeTree", "glyphId", "value", "mergeTreeEntry", "matched", "index", "range", "entry", "overlap", "getIndividualOverlap", "cloneEntry", "glyph", "remainingRanges", "resultEntry", "remainingIndex", "remainingRange", "getRangeOverlap", "entryToMerge", "second", "mergedSet", "first", "start", "end", "rangeOrIndividual", "visited", "cloneTree", "individual", "walkTree", "tree", "sequence", "startIndex", "index", "glyphId", "subtree", "lookup", "reverseLookup", "walkReverse", "forwardLookup", "mergeRange", "ranges", "newRangeStart", "newRangeEnd", "inRange", "i", "range", "getCoverageGlyphIndex", "table", "glyphId", "index", "range", "listGlyphsByIndex", "results", "getRangeSubstitutionGlyphs", "table", "glyphId", "replacementStart", "currentReplacement", "getIndividualSubstitutionGlyph", "search", "result", "coverageIndex", "getCoverageGlyphIndex", "processInputPosition", "glyphs", "position", "currentEntries", "lookupRecords", "lookups", "nextEntries", "currentEntry", "glyph", "getInputTree", "entry", "substitution", "processLookaheadPosition", "processedEntries", "sharedEntry", "processBacktrackPosition", "tree", "substitutions", "inputIndex", "glyphId", "result", "getSubstitutionAtPosition", "subs", "getSubstitutionAtPositionRange", "range", "index", "s", "substitutionTable", "sub", "getRangeSubstitutionGlyphs", "val", "getIndividualSubstitutionGlyph", "buildTree", "table", "lookups", "tableIndex", "result", "firstGlyphs", "listGlyphsByIndex", "glyphId", "index", "chainRuleSet", "subIndex", "subTable", "currentEntries", "getInputTree", "entry", "substitution", "glyph", "processInputPosition", "processLookaheadPosition", "processBacktrackPosition", "substitutions", "getGlyphClass", "table", "glyphId", "getRangeGlyphClass", "getIndividualGlyphClass", "classStart", "currentClass", "search", "result", "range", "listClassGlyphs", "index", "results", "buildTree", "table", "lookups", "tableIndex", "results", "firstGlyphs", "listGlyphsByIndex", "glyphId", "firstInputClass", "getGlyphClass", "inputClass", "classSet", "subIndex", "subTable", "result", "currentEntries", "getInputTree", "entry", "substitution", "index", "classNum", "processInputPosition", "listClassGlyphs", "processLookaheadPosition", "processBacktrackPosition", "substitutions", "mergeTrees", "buildTree", "table", "lookups", "tableIndex", "result", "firstGlyphs", "listGlyphsByIndex", "glyphId", "currentEntries", "getInputTree", "entry", "substitution", "index", "coverage", "processInputPosition", "glyph", "processLookaheadPosition", "processBacktrackPosition", "substitutions", "buildTree", "table", "tableIndex", "result", "glyphs", "listGlyphsByIndex", "glyphId", "index", "initialEntry", "currentEntries", "coverage", "processLookaheadPosition", "glyph", "processBacktrackPosition", "entry", "substitutions", "flatten", "tree", "visited", "result", "glyphId", "entry", "flattenEntry", "range", "flattened", "FontImpl", "font", "options", "I", "val", "key", "lookupIndices", "f", "acc", "allLookups", "lookupGroups", "l", "i", "idx", "index", "lookup", "trees", "table", "buildTree", "tree", "flatten", "mergeTrees", "glyphId", "text", "cached", "glyphIds", "char", "result", "finalResult", "sequence", "ranges", "nextLookup", "lastGlyphIndex", "walkTree", "j", "sub", "mergeRange", "start", "lookups", "lookupIndex", "loadBuffer", "buffer", "parse", "family", "context", "families", "currentFamily", "char", "parseString", "parseIdentifier", "quoteChar", "str", "escaped", "parseUnicode", "unicodeToString", "codePoint", "fontsPromise", "load", "fontFamily", "cacheSize", "status", "err", "fonts", "fontsIterator", "metadata", "family", "parse", "genericFontFamilies", "font", "buffer", "loadBuffer", "CACHE_SIZE", "enableLigatures", "term", "fallbackLigatures", "currentFontName", "font", "loadingState", "loadError", "text", "termFont", "currentCallFontName", "load", "f", "e", "range", "getFallbackRanges", "ranges", "i", "j", "LigaturesAddon", "options", "a", "b", "terminal", "enableLigatures"]
|
|
7
7
|
}
|