@burdenoff/vibe-agent 1.3.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/dist/app-31chs2a1.js +17180 -0
  2. package/dist/app-31chs2a1.js.map +170 -0
  3. package/dist/chunk-pm1hna8x-473akrq0.js +16826 -0
  4. package/dist/chunk-pm1hna8x-473akrq0.js.map +11 -0
  5. package/dist/cli.js +4686 -1146
  6. package/dist/cli.js.map +51 -1
  7. package/dist/highlights-eq9cgrbb.scm +604 -0
  8. package/dist/highlights-ghv9g403.scm +205 -0
  9. package/dist/highlights-hk7bwhj4.scm +284 -0
  10. package/dist/highlights-r812a2qc.scm +150 -0
  11. package/dist/highlights-x6tmsnaa.scm +115 -0
  12. package/dist/index-5xngv42g.js +2546 -0
  13. package/dist/index-5xngv42g.js.map +26 -0
  14. package/dist/index-6aq4nc58.js +11429 -0
  15. package/dist/index-6aq4nc58.js.map +21 -0
  16. package/dist/index-ac2ebaf8.js +4 -0
  17. package/dist/index-ac2ebaf8.js.map +9 -0
  18. package/dist/index-g8dczzvv.js +33 -0
  19. package/dist/index-g8dczzvv.js.map +9 -0
  20. package/dist/index-gmz54dkc.js +28402 -0
  21. package/dist/index-gmz54dkc.js.map +11 -0
  22. package/dist/index-t06ktmx9.js +216 -0
  23. package/dist/index-t06ktmx9.js.map +11 -0
  24. package/dist/index.js +69 -87
  25. package/dist/index.js.map +10 -1
  26. package/dist/injections-73j83es3.scm +27 -0
  27. package/dist/package-0158fp3w.js +136 -0
  28. package/dist/package-0158fp3w.js.map +9 -0
  29. package/dist/plugin-system-bg1pzjj9.js +453 -0
  30. package/dist/plugin-system-bg1pzjj9.js.map +11 -0
  31. package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
  32. package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
  33. package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
  34. package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
  35. package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
  36. package/package.json +33 -44
  37. package/dist/app.d.ts +0 -15
  38. package/dist/app.d.ts.map +0 -1
  39. package/dist/app.js +0 -600
  40. package/dist/app.js.map +0 -1
  41. package/dist/cli.d.ts +0 -3
  42. package/dist/cli.d.ts.map +0 -1
  43. package/dist/db/schema.d.ts +0 -121
  44. package/dist/db/schema.d.ts.map +0 -1
  45. package/dist/db/schema.js +0 -473
  46. package/dist/db/schema.js.map +0 -1
  47. package/dist/index.d.ts +0 -2
  48. package/dist/index.d.ts.map +0 -1
  49. package/dist/middleware/ModuleAuth.d.ts +0 -61
  50. package/dist/middleware/ModuleAuth.d.ts.map +0 -1
  51. package/dist/middleware/ModuleAuth.js +0 -223
  52. package/dist/middleware/ModuleAuth.js.map +0 -1
  53. package/dist/middleware/auth.d.ts +0 -3
  54. package/dist/middleware/auth.d.ts.map +0 -1
  55. package/dist/middleware/auth.js +0 -11
  56. package/dist/middleware/auth.js.map +0 -1
  57. package/dist/migrations/remove-notes-prompts.d.ts +0 -13
  58. package/dist/migrations/remove-notes-prompts.d.ts.map +0 -1
  59. package/dist/migrations/remove-notes-prompts.js +0 -148
  60. package/dist/migrations/remove-notes-prompts.js.map +0 -1
  61. package/dist/routes/bookmarks.d.ts +0 -3
  62. package/dist/routes/bookmarks.d.ts.map +0 -1
  63. package/dist/routes/bookmarks.js +0 -195
  64. package/dist/routes/bookmarks.js.map +0 -1
  65. package/dist/routes/config.d.ts +0 -3
  66. package/dist/routes/config.d.ts.map +0 -1
  67. package/dist/routes/config.js +0 -106
  68. package/dist/routes/config.js.map +0 -1
  69. package/dist/routes/files.d.ts +0 -3
  70. package/dist/routes/files.d.ts.map +0 -1
  71. package/dist/routes/files.js +0 -313
  72. package/dist/routes/files.js.map +0 -1
  73. package/dist/routes/git.d.ts +0 -3
  74. package/dist/routes/git.d.ts.map +0 -1
  75. package/dist/routes/git.js +0 -427
  76. package/dist/routes/git.js.map +0 -1
  77. package/dist/routes/logs.d.ts +0 -9
  78. package/dist/routes/logs.d.ts.map +0 -1
  79. package/dist/routes/logs.js +0 -107
  80. package/dist/routes/logs.js.map +0 -1
  81. package/dist/routes/moduleRegistry.d.ts +0 -41
  82. package/dist/routes/moduleRegistry.d.ts.map +0 -1
  83. package/dist/routes/moduleRegistry.js +0 -356
  84. package/dist/routes/moduleRegistry.js.map +0 -1
  85. package/dist/routes/notifications.d.ts +0 -3
  86. package/dist/routes/notifications.d.ts.map +0 -1
  87. package/dist/routes/notifications.js +0 -255
  88. package/dist/routes/notifications.js.map +0 -1
  89. package/dist/routes/plugin-state.d.ts +0 -19
  90. package/dist/routes/plugin-state.d.ts.map +0 -1
  91. package/dist/routes/plugin-state.js +0 -139
  92. package/dist/routes/plugin-state.js.map +0 -1
  93. package/dist/routes/plugins.d.ts +0 -3
  94. package/dist/routes/plugins.d.ts.map +0 -1
  95. package/dist/routes/plugins.js +0 -118
  96. package/dist/routes/plugins.js.map +0 -1
  97. package/dist/routes/projects.d.ts +0 -3
  98. package/dist/routes/projects.d.ts.map +0 -1
  99. package/dist/routes/projects.js +0 -456
  100. package/dist/routes/projects.js.map +0 -1
  101. package/dist/routes/tasks.d.ts +0 -3
  102. package/dist/routes/tasks.d.ts.map +0 -1
  103. package/dist/routes/tasks.js +0 -187
  104. package/dist/routes/tasks.js.map +0 -1
  105. package/dist/routes/tmux.d.ts +0 -3
  106. package/dist/routes/tmux.d.ts.map +0 -1
  107. package/dist/routes/tmux.js +0 -1287
  108. package/dist/routes/tmux.js.map +0 -1
  109. package/dist/routes/tunnel.d.ts +0 -25
  110. package/dist/routes/tunnel.d.ts.map +0 -1
  111. package/dist/routes/tunnel.js +0 -498
  112. package/dist/routes/tunnel.js.map +0 -1
  113. package/dist/services/ModulePermissions.d.ts +0 -100
  114. package/dist/services/ModulePermissions.d.ts.map +0 -1
  115. package/dist/services/ModulePermissions.js +0 -322
  116. package/dist/services/ModulePermissions.js.map +0 -1
  117. package/dist/services/ModuleRegistryService.d.ts +0 -152
  118. package/dist/services/ModuleRegistryService.d.ts.map +0 -1
  119. package/dist/services/ModuleRegistryService.js +0 -547
  120. package/dist/services/ModuleRegistryService.js.map +0 -1
  121. package/dist/services/agent.service.d.ts +0 -19
  122. package/dist/services/agent.service.d.ts.map +0 -1
  123. package/dist/services/agent.service.js +0 -91
  124. package/dist/services/agent.service.js.map +0 -1
  125. package/dist/services/bootstrap.d.ts +0 -22
  126. package/dist/services/bootstrap.d.ts.map +0 -1
  127. package/dist/services/bootstrap.js +0 -283
  128. package/dist/services/bootstrap.js.map +0 -1
  129. package/dist/services/completion.d.ts +0 -46
  130. package/dist/services/completion.d.ts.map +0 -1
  131. package/dist/services/completion.js +0 -317
  132. package/dist/services/completion.js.map +0 -1
  133. package/dist/services/gateway-client.d.ts +0 -61
  134. package/dist/services/gateway-client.d.ts.map +0 -1
  135. package/dist/services/gateway-client.js +0 -147
  136. package/dist/services/gateway-client.js.map +0 -1
  137. package/dist/services/logger.d.ts +0 -61
  138. package/dist/services/logger.d.ts.map +0 -1
  139. package/dist/services/logger.js +0 -223
  140. package/dist/services/logger.js.map +0 -1
  141. package/dist/services/plugin-manager.d.ts +0 -105
  142. package/dist/services/plugin-manager.d.ts.map +0 -1
  143. package/dist/services/plugin-manager.js +0 -250
  144. package/dist/services/plugin-manager.js.map +0 -1
  145. package/dist/services/plugin-state-backend.d.ts +0 -22
  146. package/dist/services/plugin-state-backend.d.ts.map +0 -1
  147. package/dist/services/plugin-state-backend.js +0 -103
  148. package/dist/services/plugin-state-backend.js.map +0 -1
  149. package/dist/services/plugin-state-external.d.ts +0 -36
  150. package/dist/services/plugin-state-external.d.ts.map +0 -1
  151. package/dist/services/plugin-state-external.js +0 -144
  152. package/dist/services/plugin-state-external.js.map +0 -1
  153. package/dist/services/plugin-state-router.d.ts +0 -40
  154. package/dist/services/plugin-state-router.d.ts.map +0 -1
  155. package/dist/services/plugin-state-router.js +0 -82
  156. package/dist/services/plugin-state-router.js.map +0 -1
  157. package/dist/services/port-utils.d.ts +0 -11
  158. package/dist/services/port-utils.d.ts.map +0 -1
  159. package/dist/services/port-utils.js +0 -39
  160. package/dist/services/port-utils.js.map +0 -1
  161. package/dist/services/service-manager.d.ts +0 -50
  162. package/dist/services/service-manager.d.ts.map +0 -1
  163. package/dist/services/service-manager.js +0 -389
  164. package/dist/services/service-manager.js.map +0 -1
@@ -0,0 +1,11 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../node_modules/@opentui/core/index-vnvba6q9.js", "../node_modules/@opentui/core/index.js"],
4
+ "sourcesContent": [
5
+ "// @bun\nvar __create = Object.create;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __toESM = (mod, isNodeMode, target) => {\n target = mod != null ? __create(__getProtoOf(mod)) : {};\n const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target;\n for (let key of __getOwnPropNames(mod))\n if (!__hasOwnProp.call(to, key))\n __defProp(to, key, {\n get: () => mod[key],\n enumerable: true\n });\n return to;\n};\nvar __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: (newValue) => all[name] = () => newValue\n });\n};\nvar __require = import.meta.require;\n\n// ../../node_modules/.bun/yoga-layout@3.2.1/node_modules/yoga-layout/dist/src/index.js\nvar exports_src = {};\n__export(exports_src, {\n default: () => src_default,\n Wrap: () => Wrap,\n Unit: () => Unit,\n PositionType: () => PositionType,\n Overflow: () => Overflow,\n NodeType: () => NodeType,\n MeasureMode: () => MeasureMode,\n LogLevel: () => LogLevel,\n Justify: () => Justify,\n Gutter: () => Gutter,\n FlexDirection: () => FlexDirection,\n ExperimentalFeature: () => ExperimentalFeature,\n Errata: () => Errata,\n Edge: () => Edge,\n Display: () => Display,\n Direction: () => Direction,\n Dimension: () => Dimension,\n BoxSizing: () => BoxSizing,\n Align: () => Align\n});\n\n// ../../node_modules/.bun/yoga-layout@3.2.1/node_modules/yoga-layout/dist/binaries/yoga-wasm-base64-esm.js\nvar loadYoga = (() => {\n var _scriptDir = import.meta.url;\n return function(loadYoga2) {\n loadYoga2 = loadYoga2 || {};\n var h;\n h || (h = typeof loadYoga2 !== \"undefined\" ? loadYoga2 : {});\n var aa, ca;\n h.ready = new Promise(function(a, b) {\n aa = a;\n ca = b;\n });\n var da = Object.assign({}, h), q = \"\";\n typeof document != \"undefined\" && document.currentScript && (q = document.currentScript.src);\n _scriptDir && (q = _scriptDir);\n q.indexOf(\"blob:\") !== 0 ? q = q.substr(0, q.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1) : q = \"\";\n var ea = h.print || console.log.bind(console), v = h.printErr || console.warn.bind(console);\n Object.assign(h, da);\n da = null;\n var w;\n h.wasmBinary && (w = h.wasmBinary);\n var noExitRuntime = h.noExitRuntime || true;\n typeof WebAssembly != \"object\" && x(\"no native wasm support detected\");\n var fa, ha = false;\n function z(a, b, c) {\n c = b + c;\n for (var d = \"\";!(b >= c); ) {\n var e = a[b++];\n if (!e)\n break;\n if (e & 128) {\n var f = a[b++] & 63;\n if ((e & 224) == 192)\n d += String.fromCharCode((e & 31) << 6 | f);\n else {\n var g = a[b++] & 63;\n e = (e & 240) == 224 ? (e & 15) << 12 | f << 6 | g : (e & 7) << 18 | f << 12 | g << 6 | a[b++] & 63;\n 65536 > e ? d += String.fromCharCode(e) : (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023));\n }\n } else\n d += String.fromCharCode(e);\n }\n return d;\n }\n var ia, ja, A, C, ka, D, E, la, ma;\n function na() {\n var a = fa.buffer;\n ia = a;\n h.HEAP8 = ja = new Int8Array(a);\n h.HEAP16 = C = new Int16Array(a);\n h.HEAP32 = D = new Int32Array(a);\n h.HEAPU8 = A = new Uint8Array(a);\n h.HEAPU16 = ka = new Uint16Array(a);\n h.HEAPU32 = E = new Uint32Array(a);\n h.HEAPF32 = la = new Float32Array(a);\n h.HEAPF64 = ma = new Float64Array(a);\n }\n var oa, pa = [], qa = [], ra = [];\n function sa() {\n var a = h.preRun.shift();\n pa.unshift(a);\n }\n var F = 0, ta = null, G = null;\n function x(a) {\n if (h.onAbort)\n h.onAbort(a);\n a = \"Aborted(\" + a + \")\";\n v(a);\n ha = true;\n a = new WebAssembly.RuntimeError(a + \". Build with -sASSERTIONS for more info.\");\n ca(a);\n throw a;\n }\n function ua(a) {\n return a.startsWith(\"data:application/octet-stream;base64,\");\n }\n var H;\n H = \"data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVk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\";\n if (!ua(H)) {\n var va = H;\n H = h.locateFile ? h.locateFile(va, q) : q + va;\n }\n function wa() {\n var a = H;\n try {\n if (a == H && w)\n return new Uint8Array(w);\n if (ua(a))\n try {\n var b = xa(a.slice(37)), c = new Uint8Array(b.length);\n for (a = 0;a < b.length; ++a)\n c[a] = b.charCodeAt(a);\n var d = c;\n } catch (f) {\n throw Error(\"Converting base64 string to bytes failed.\");\n }\n else\n d = undefined;\n var e = d;\n if (e)\n return e;\n throw \"both async and sync fetching of the wasm failed\";\n } catch (f) {\n x(f);\n }\n }\n function ya() {\n return w || typeof fetch != \"function\" ? Promise.resolve().then(function() {\n return wa();\n }) : fetch(H, { credentials: \"same-origin\" }).then(function(a) {\n if (!a.ok)\n throw \"failed to load wasm binary file at '\" + H + \"'\";\n return a.arrayBuffer();\n }).catch(function() {\n return wa();\n });\n }\n function za(a) {\n for (;0 < a.length; )\n a.shift()(h);\n }\n function Aa(a) {\n if (a === undefined)\n return \"_unknown\";\n a = a.replace(/[^a-zA-Z0-9_]/g, \"$\");\n var b = a.charCodeAt(0);\n return 48 <= b && 57 >= b ? \"_\" + a : a;\n }\n function Ba(a, b) {\n a = Aa(a);\n return function() {\n return b.apply(this, arguments);\n };\n }\n var J = [{}, { value: undefined }, { value: null }, { value: true }, { value: false }], Ca = [];\n function Da(a) {\n var b = Error, c = Ba(a, function(d) {\n this.name = a;\n this.message = d;\n d = Error(d).stack;\n d !== undefined && (this.stack = this.toString() + `\n` + d.replace(/^Error(:[^\\n]*)?\\n/, \"\"));\n });\n c.prototype = Object.create(b.prototype);\n c.prototype.constructor = c;\n c.prototype.toString = function() {\n return this.message === undefined ? this.name : this.name + \": \" + this.message;\n };\n return c;\n }\n var K = undefined;\n function L(a) {\n throw new K(a);\n }\n var M = (a) => {\n a || L(\"Cannot use deleted val. handle = \" + a);\n return J[a].value;\n }, Ea = (a) => {\n switch (a) {\n case undefined:\n return 1;\n case null:\n return 2;\n case true:\n return 3;\n case false:\n return 4;\n default:\n var b = Ca.length ? Ca.pop() : J.length;\n J[b] = { ga: 1, value: a };\n return b;\n }\n }, Fa = undefined, Ga = undefined;\n function N(a) {\n for (var b = \"\";A[a]; )\n b += Ga[A[a++]];\n return b;\n }\n var O = [];\n function Ha() {\n for (;O.length; ) {\n var a = O.pop();\n a.M.$ = false;\n a[\"delete\"]();\n }\n }\n var P = undefined, Q = {};\n function Ia(a, b) {\n for (b === undefined && L(\"ptr should not be undefined\");a.R; )\n b = a.ba(b), a = a.R;\n return b;\n }\n var R = {};\n function Ja(a) {\n a = Ka(a);\n var b = N(a);\n S(a);\n return b;\n }\n function La(a, b) {\n var c = R[a];\n c === undefined && L(b + \" has unknown type \" + Ja(a));\n return c;\n }\n function Ma() {}\n var Na = false;\n function Oa(a) {\n --a.count.value;\n a.count.value === 0 && (a.T ? a.U.W(a.T) : a.P.N.W(a.O));\n }\n function Pa(a, b, c) {\n if (b === c)\n return a;\n if (c.R === undefined)\n return null;\n a = Pa(a, b, c.R);\n return a === null ? null : c.na(a);\n }\n var Qa = {};\n function Ra(a, b) {\n b = Ia(a, b);\n return Q[b];\n }\n var Sa = undefined;\n function Ta(a) {\n throw new Sa(a);\n }\n function Ua(a, b) {\n b.P && b.O || Ta(\"makeClassHandle requires ptr and ptrType\");\n !!b.U !== !!b.T && Ta(\"Both smartPtrType and smartPtr must be specified\");\n b.count = { value: 1 };\n return T(Object.create(a, { M: { value: b } }));\n }\n function T(a) {\n if (typeof FinalizationRegistry === \"undefined\")\n return T = (b) => b, a;\n Na = new FinalizationRegistry((b) => {\n Oa(b.M);\n });\n T = (b) => {\n var c = b.M;\n c.T && Na.register(b, { M: c }, b);\n return b;\n };\n Ma = (b) => {\n Na.unregister(b);\n };\n return T(a);\n }\n var Va = {};\n function Wa(a) {\n for (;a.length; ) {\n var b = a.pop();\n a.pop()(b);\n }\n }\n function Xa(a) {\n return this.fromWireType(D[a >> 2]);\n }\n var U = {}, Ya = {};\n function V(a, b, c) {\n function d(k) {\n k = c(k);\n k.length !== a.length && Ta(\"Mismatched type converter count\");\n for (var m = 0;m < a.length; ++m)\n W(a[m], k[m]);\n }\n a.forEach(function(k) {\n Ya[k] = b;\n });\n var e = Array(b.length), f = [], g = 0;\n b.forEach((k, m) => {\n R.hasOwnProperty(k) ? e[m] = R[k] : (f.push(k), U.hasOwnProperty(k) || (U[k] = []), U[k].push(() => {\n e[m] = R[k];\n ++g;\n g === f.length && d(e);\n }));\n });\n f.length === 0 && d(e);\n }\n function Za(a) {\n switch (a) {\n case 1:\n return 0;\n case 2:\n return 1;\n case 4:\n return 2;\n case 8:\n return 3;\n default:\n throw new TypeError(\"Unknown type size: \" + a);\n }\n }\n function W(a, b, c = {}) {\n if (!(\"argPackAdvance\" in b))\n throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");\n var d = b.name;\n a || L('type \"' + d + '\" must have a positive integer typeid pointer');\n if (R.hasOwnProperty(a)) {\n if (c.ua)\n return;\n L(\"Cannot register type '\" + d + \"' twice\");\n }\n R[a] = b;\n delete Ya[a];\n U.hasOwnProperty(a) && (b = U[a], delete U[a], b.forEach((e) => e()));\n }\n function $a(a) {\n L(a.M.P.N.name + \" instance already deleted\");\n }\n function X() {}\n function ab(a, b, c) {\n if (a[b].S === undefined) {\n var d = a[b];\n a[b] = function() {\n a[b].S.hasOwnProperty(arguments.length) || L(\"Function '\" + c + \"' called with an invalid number of arguments (\" + arguments.length + \") - expects one of (\" + a[b].S + \")!\");\n return a[b].S[arguments.length].apply(this, arguments);\n };\n a[b].S = [];\n a[b].S[d.Z] = d;\n }\n }\n function bb(a, b) {\n h.hasOwnProperty(a) ? (L(\"Cannot register public name '\" + a + \"' twice\"), ab(h, a, a), h.hasOwnProperty(undefined) && L(\"Cannot register multiple overloads of a function with the same number of arguments (undefined)!\"), h[a].S[undefined] = b) : h[a] = b;\n }\n function cb(a, b, c, d, e, f, g, k) {\n this.name = a;\n this.constructor = b;\n this.X = c;\n this.W = d;\n this.R = e;\n this.pa = f;\n this.ba = g;\n this.na = k;\n this.ja = [];\n }\n function db(a, b, c) {\n for (;b !== c; )\n b.ba || L(\"Expected null or instance of \" + c.name + \", got an instance of \" + b.name), a = b.ba(a), b = b.R;\n return a;\n }\n function eb(a, b) {\n if (b === null)\n return this.ea && L(\"null is not a valid \" + this.name), 0;\n b.M || L('Cannot pass \"' + fb(b) + '\" as a ' + this.name);\n b.M.O || L(\"Cannot pass deleted object as a pointer of type \" + this.name);\n return db(b.M.O, b.M.P.N, this.N);\n }\n function gb(a, b) {\n if (b === null) {\n this.ea && L(\"null is not a valid \" + this.name);\n if (this.da) {\n var c = this.fa();\n a !== null && a.push(this.W, c);\n return c;\n }\n return 0;\n }\n b.M || L('Cannot pass \"' + fb(b) + '\" as a ' + this.name);\n b.M.O || L(\"Cannot pass deleted object as a pointer of type \" + this.name);\n !this.ca && b.M.P.ca && L(\"Cannot convert argument of type \" + (b.M.U ? b.M.U.name : b.M.P.name) + \" to parameter type \" + this.name);\n c = db(b.M.O, b.M.P.N, this.N);\n if (this.da)\n switch (b.M.T === undefined && L(\"Passing raw pointer to smart pointer is illegal\"), this.Ba) {\n case 0:\n b.M.U === this ? c = b.M.T : L(\"Cannot convert argument of type \" + (b.M.U ? b.M.U.name : b.M.P.name) + \" to parameter type \" + this.name);\n break;\n case 1:\n c = b.M.T;\n break;\n case 2:\n if (b.M.U === this)\n c = b.M.T;\n else {\n var d = b.clone();\n c = this.xa(c, Ea(function() {\n d[\"delete\"]();\n }));\n a !== null && a.push(this.W, c);\n }\n break;\n default:\n L(\"Unsupporting sharing policy\");\n }\n return c;\n }\n function hb(a, b) {\n if (b === null)\n return this.ea && L(\"null is not a valid \" + this.name), 0;\n b.M || L('Cannot pass \"' + fb(b) + '\" as a ' + this.name);\n b.M.O || L(\"Cannot pass deleted object as a pointer of type \" + this.name);\n b.M.P.ca && L(\"Cannot convert argument of type \" + b.M.P.name + \" to parameter type \" + this.name);\n return db(b.M.O, b.M.P.N, this.N);\n }\n function Y(a, b, c, d) {\n this.name = a;\n this.N = b;\n this.ea = c;\n this.ca = d;\n this.da = false;\n this.W = this.xa = this.fa = this.ka = this.Ba = this.wa = undefined;\n b.R !== undefined ? this.toWireType = gb : (this.toWireType = d ? eb : hb, this.V = null);\n }\n function ib(a, b) {\n h.hasOwnProperty(a) || Ta(\"Replacing nonexistant public symbol\");\n h[a] = b;\n h[a].Z = undefined;\n }\n function jb(a, b) {\n var c = [];\n return function() {\n c.length = 0;\n Object.assign(c, arguments);\n if (a.includes(\"j\")) {\n var d = h[\"dynCall_\" + a];\n d = c && c.length ? d.apply(null, [b].concat(c)) : d.call(null, b);\n } else\n d = oa.get(b).apply(null, c);\n return d;\n };\n }\n function Z(a, b) {\n a = N(a);\n var c = a.includes(\"j\") ? jb(a, b) : oa.get(b);\n typeof c != \"function\" && L(\"unknown function pointer with signature \" + a + \": \" + b);\n return c;\n }\n var mb = undefined;\n function nb(a, b) {\n function c(f) {\n e[f] || R[f] || (Ya[f] ? Ya[f].forEach(c) : (d.push(f), e[f] = true));\n }\n var d = [], e = {};\n b.forEach(c);\n throw new mb(a + \": \" + d.map(Ja).join([\", \"]));\n }\n function ob(a, b, c, d, e) {\n var f = b.length;\n 2 > f && L(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");\n var g = b[1] !== null && c !== null, k = false;\n for (c = 1;c < b.length; ++c)\n if (b[c] !== null && b[c].V === undefined) {\n k = true;\n break;\n }\n var m = b[0].name !== \"void\", l = f - 2, n = Array(l), p = [], r = [];\n return function() {\n arguments.length !== l && L(\"function \" + a + \" called with \" + arguments.length + \" arguments, expected \" + l + \" args!\");\n r.length = 0;\n p.length = g ? 2 : 1;\n p[0] = e;\n if (g) {\n var u = b[1].toWireType(r, this);\n p[1] = u;\n }\n for (var t = 0;t < l; ++t)\n n[t] = b[t + 2].toWireType(r, arguments[t]), p.push(n[t]);\n t = d.apply(null, p);\n if (k)\n Wa(r);\n else\n for (var y = g ? 1 : 2;y < b.length; y++) {\n var B = y === 1 ? u : n[y - 2];\n b[y].V !== null && b[y].V(B);\n }\n u = m ? b[0].fromWireType(t) : undefined;\n return u;\n };\n }\n function pb(a, b) {\n for (var c = [], d = 0;d < a; d++)\n c.push(E[b + 4 * d >> 2]);\n return c;\n }\n function qb(a) {\n 4 < a && --J[a].ga === 0 && (J[a] = undefined, Ca.push(a));\n }\n function fb(a) {\n if (a === null)\n return \"null\";\n var b = typeof a;\n return b === \"object\" || b === \"array\" || b === \"function\" ? a.toString() : \"\" + a;\n }\n function rb(a, b) {\n switch (b) {\n case 2:\n return function(c) {\n return this.fromWireType(la[c >> 2]);\n };\n case 3:\n return function(c) {\n return this.fromWireType(ma[c >> 3]);\n };\n default:\n throw new TypeError(\"Unknown float type: \" + a);\n }\n }\n function sb(a, b, c) {\n switch (b) {\n case 0:\n return c ? function(d) {\n return ja[d];\n } : function(d) {\n return A[d];\n };\n case 1:\n return c ? function(d) {\n return C[d >> 1];\n } : function(d) {\n return ka[d >> 1];\n };\n case 2:\n return c ? function(d) {\n return D[d >> 2];\n } : function(d) {\n return E[d >> 2];\n };\n default:\n throw new TypeError(\"Unknown integer type: \" + a);\n }\n }\n function tb(a, b) {\n for (var c = \"\", d = 0;!(d >= b / 2); ++d) {\n var e = C[a + 2 * d >> 1];\n if (e == 0)\n break;\n c += String.fromCharCode(e);\n }\n return c;\n }\n function ub(a, b, c) {\n c === undefined && (c = 2147483647);\n if (2 > c)\n return 0;\n c -= 2;\n var d = b;\n c = c < 2 * a.length ? c / 2 : a.length;\n for (var e = 0;e < c; ++e)\n C[b >> 1] = a.charCodeAt(e), b += 2;\n C[b >> 1] = 0;\n return b - d;\n }\n function vb(a) {\n return 2 * a.length;\n }\n function wb(a, b) {\n for (var c = 0, d = \"\";!(c >= b / 4); ) {\n var e = D[a + 4 * c >> 2];\n if (e == 0)\n break;\n ++c;\n 65536 <= e ? (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023)) : d += String.fromCharCode(e);\n }\n return d;\n }\n function xb(a, b, c) {\n c === undefined && (c = 2147483647);\n if (4 > c)\n return 0;\n var d = b;\n c = d + c - 4;\n for (var e = 0;e < a.length; ++e) {\n var f = a.charCodeAt(e);\n if (55296 <= f && 57343 >= f) {\n var g = a.charCodeAt(++e);\n f = 65536 + ((f & 1023) << 10) | g & 1023;\n }\n D[b >> 2] = f;\n b += 4;\n if (b + 4 > c)\n break;\n }\n D[b >> 2] = 0;\n return b - d;\n }\n function yb(a) {\n for (var b = 0, c = 0;c < a.length; ++c) {\n var d = a.charCodeAt(c);\n 55296 <= d && 57343 >= d && ++c;\n b += 4;\n }\n return b;\n }\n var zb = {};\n function Ab(a) {\n var b = zb[a];\n return b === undefined ? N(a) : b;\n }\n var Bb = [];\n function Cb(a) {\n var b = Bb.length;\n Bb.push(a);\n return b;\n }\n function Db(a, b) {\n for (var c = Array(a), d = 0;d < a; ++d)\n c[d] = La(E[b + 4 * d >> 2], \"parameter \" + d);\n return c;\n }\n var Eb = [], Fb = [null, [], []];\n K = h.BindingError = Da(\"BindingError\");\n h.count_emval_handles = function() {\n for (var a = 0, b = 5;b < J.length; ++b)\n J[b] !== undefined && ++a;\n return a;\n };\n h.get_first_emval = function() {\n for (var a = 5;a < J.length; ++a)\n if (J[a] !== undefined)\n return J[a];\n return null;\n };\n Fa = h.PureVirtualError = Da(\"PureVirtualError\");\n for (var Gb = Array(256), Hb = 0;256 > Hb; ++Hb)\n Gb[Hb] = String.fromCharCode(Hb);\n Ga = Gb;\n h.getInheritedInstanceCount = function() {\n return Object.keys(Q).length;\n };\n h.getLiveInheritedInstances = function() {\n var a = [], b;\n for (b in Q)\n Q.hasOwnProperty(b) && a.push(Q[b]);\n return a;\n };\n h.flushPendingDeletes = Ha;\n h.setDelayFunction = function(a) {\n P = a;\n O.length && P && P(Ha);\n };\n Sa = h.InternalError = Da(\"InternalError\");\n X.prototype.isAliasOf = function(a) {\n if (!(this instanceof X && a instanceof X))\n return false;\n var b = this.M.P.N, c = this.M.O, d = a.M.P.N;\n for (a = a.M.O;b.R; )\n c = b.ba(c), b = b.R;\n for (;d.R; )\n a = d.ba(a), d = d.R;\n return b === d && c === a;\n };\n X.prototype.clone = function() {\n this.M.O || $a(this);\n if (this.M.aa)\n return this.M.count.value += 1, this;\n var a = T, b = Object, c = b.create, d = Object.getPrototypeOf(this), e = this.M;\n a = a(c.call(b, d, { M: { value: { count: e.count, $: e.$, aa: e.aa, O: e.O, P: e.P, T: e.T, U: e.U } } }));\n a.M.count.value += 1;\n a.M.$ = false;\n return a;\n };\n X.prototype[\"delete\"] = function() {\n this.M.O || $a(this);\n this.M.$ && !this.M.aa && L(\"Object already scheduled for deletion\");\n Ma(this);\n Oa(this.M);\n this.M.aa || (this.M.T = undefined, this.M.O = undefined);\n };\n X.prototype.isDeleted = function() {\n return !this.M.O;\n };\n X.prototype.deleteLater = function() {\n this.M.O || $a(this);\n this.M.$ && !this.M.aa && L(\"Object already scheduled for deletion\");\n O.push(this);\n O.length === 1 && P && P(Ha);\n this.M.$ = true;\n return this;\n };\n Y.prototype.qa = function(a) {\n this.ka && (a = this.ka(a));\n return a;\n };\n Y.prototype.ha = function(a) {\n this.W && this.W(a);\n };\n Y.prototype.argPackAdvance = 8;\n Y.prototype.readValueFromPointer = Xa;\n Y.prototype.deleteObject = function(a) {\n if (a !== null)\n a[\"delete\"]();\n };\n Y.prototype.fromWireType = function(a) {\n function b() {\n return this.da ? Ua(this.N.X, { P: this.wa, O: c, U: this, T: a }) : Ua(this.N.X, { P: this, O: a });\n }\n var c = this.qa(a);\n if (!c)\n return this.ha(a), null;\n var d = Ra(this.N, c);\n if (d !== undefined) {\n if (d.M.count.value === 0)\n return d.M.O = c, d.M.T = a, d.clone();\n d = d.clone();\n this.ha(a);\n return d;\n }\n d = this.N.pa(c);\n d = Qa[d];\n if (!d)\n return b.call(this);\n d = this.ca ? d.la : d.pointerType;\n var e = Pa(c, this.N, d.N);\n return e === null ? b.call(this) : this.da ? Ua(d.N.X, { P: d, O: e, U: this, T: a }) : Ua(d.N.X, { P: d, O: e });\n };\n mb = h.UnboundTypeError = Da(\"UnboundTypeError\");\n var xa = typeof atob == \"function\" ? atob : function(a) {\n var b = \"\", c = 0;\n a = a.replace(/[^A-Za-z0-9\\+\\/=]/g, \"\");\n do {\n var d = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));\n var e = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));\n var f = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));\n var g = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));\n d = d << 2 | e >> 4;\n e = (e & 15) << 4 | f >> 2;\n var k = (f & 3) << 6 | g;\n b += String.fromCharCode(d);\n f !== 64 && (b += String.fromCharCode(e));\n g !== 64 && (b += String.fromCharCode(k));\n } while (c < a.length);\n return b;\n }, Jb = {\n l: function(a, b, c, d) {\n x(\"Assertion failed: \" + (a ? z(A, a) : \"\") + \", at: \" + [b ? b ? z(A, b) : \"\" : \"unknown filename\", c, d ? d ? z(A, d) : \"\" : \"unknown function\"]);\n },\n q: function(a, b, c) {\n a = N(a);\n b = La(b, \"wrapper\");\n c = M(c);\n var d = [].slice, e = b.N, f = e.X, g = e.R.X, k = e.R.constructor;\n a = Ba(a, function() {\n e.R.ja.forEach(function(l) {\n if (this[l] === g[l])\n throw new Fa(\"Pure virtual function \" + l + \" must be implemented in JavaScript\");\n }.bind(this));\n Object.defineProperty(this, \"__parent\", { value: f });\n this.__construct.apply(this, d.call(arguments));\n });\n f.__construct = function() {\n this === f && L(\"Pass correct 'this' to __construct\");\n var l = k.implement.apply(undefined, [this].concat(d.call(arguments)));\n Ma(l);\n var n = l.M;\n l.notifyOnDestruction();\n n.aa = true;\n Object.defineProperties(this, { M: { value: n } });\n T(this);\n l = n.O;\n l = Ia(e, l);\n Q.hasOwnProperty(l) ? L(\"Tried to register registered instance: \" + l) : Q[l] = this;\n };\n f.__destruct = function() {\n this === f && L(\"Pass correct 'this' to __destruct\");\n Ma(this);\n var l = this.M.O;\n l = Ia(e, l);\n Q.hasOwnProperty(l) ? delete Q[l] : L(\"Tried to unregister unregistered instance: \" + l);\n };\n a.prototype = Object.create(f);\n for (var m in c)\n a.prototype[m] = c[m];\n return Ea(a);\n },\n j: function(a) {\n var b = Va[a];\n delete Va[a];\n var { fa: c, W: d, ia: e } = b, f = e.map((g) => g.ta).concat(e.map((g) => g.za));\n V([a], f, (g) => {\n var k = {};\n e.forEach((m, l) => {\n var n = g[l], p = m.ra, r = m.sa, u = g[l + e.length], t = m.ya, y = m.Aa;\n k[m.oa] = { read: (B) => n.fromWireType(p(r, B)), write: (B, ba) => {\n var I = [];\n t(y, B, u.toWireType(I, ba));\n Wa(I);\n } };\n });\n return [{ name: b.name, fromWireType: function(m) {\n var l = {}, n;\n for (n in k)\n l[n] = k[n].read(m);\n d(m);\n return l;\n }, toWireType: function(m, l) {\n for (var n in k)\n if (!(n in l))\n throw new TypeError('Missing field: \"' + n + '\"');\n var p = c();\n for (n in k)\n k[n].write(p, l[n]);\n m !== null && m.push(d, p);\n return p;\n }, argPackAdvance: 8, readValueFromPointer: Xa, V: d }];\n });\n },\n v: function() {},\n B: function(a, b, c, d, e) {\n var f = Za(c);\n b = N(b);\n W(a, {\n name: b,\n fromWireType: function(g) {\n return !!g;\n },\n toWireType: function(g, k) {\n return k ? d : e;\n },\n argPackAdvance: 8,\n readValueFromPointer: function(g) {\n if (c === 1)\n var k = ja;\n else if (c === 2)\n k = C;\n else if (c === 4)\n k = D;\n else\n throw new TypeError(\"Unknown boolean type size: \" + b);\n return this.fromWireType(k[g >> f]);\n },\n V: null\n });\n },\n f: function(a, b, c, d, e, f, g, k, m, l, n, p, r) {\n n = N(n);\n f = Z(e, f);\n k && (k = Z(g, k));\n l && (l = Z(m, l));\n r = Z(p, r);\n var u = Aa(n);\n bb(u, function() {\n nb(\"Cannot construct \" + n + \" due to unbound types\", [d]);\n });\n V([a, b, c], d ? [d] : [], function(t) {\n t = t[0];\n if (d) {\n var y = t.N;\n var B = y.X;\n } else\n B = X.prototype;\n t = Ba(u, function() {\n if (Object.getPrototypeOf(this) !== ba)\n throw new K(\"Use 'new' to construct \" + n);\n if (I.Y === undefined)\n throw new K(n + \" has no accessible constructor\");\n var kb = I.Y[arguments.length];\n if (kb === undefined)\n throw new K(\"Tried to invoke ctor of \" + n + \" with invalid number of parameters (\" + arguments.length + \") - expected (\" + Object.keys(I.Y).toString() + \") parameters instead!\");\n return kb.apply(this, arguments);\n });\n var ba = Object.create(B, { constructor: { value: t } });\n t.prototype = ba;\n var I = new cb(n, t, ba, r, y, f, k, l);\n y = new Y(n, I, true, false);\n B = new Y(n + \"*\", I, false, false);\n var lb = new Y(n + \" const*\", I, false, true);\n Qa[a] = {\n pointerType: B,\n la: lb\n };\n ib(u, t);\n return [y, B, lb];\n });\n },\n d: function(a, b, c, d, e, f, g) {\n var k = pb(c, d);\n b = N(b);\n f = Z(e, f);\n V([], [a], function(m) {\n function l() {\n nb(\"Cannot call \" + n + \" due to unbound types\", k);\n }\n m = m[0];\n var n = m.name + \".\" + b;\n b.startsWith(\"@@\") && (b = Symbol[b.substring(2)]);\n var p = m.N.constructor;\n p[b] === undefined ? (l.Z = c - 1, p[b] = l) : (ab(p, b, n), p[b].S[c - 1] = l);\n V([], k, function(r) {\n r = ob(n, [r[0], null].concat(r.slice(1)), null, f, g);\n p[b].S === undefined ? (r.Z = c - 1, p[b] = r) : p[b].S[c - 1] = r;\n return [];\n });\n return [];\n });\n },\n p: function(a, b, c, d, e, f) {\n 0 < b || x();\n var g = pb(b, c);\n e = Z(d, e);\n V([], [a], function(k) {\n k = k[0];\n var m = \"constructor \" + k.name;\n k.N.Y === undefined && (k.N.Y = []);\n if (k.N.Y[b - 1] !== undefined)\n throw new K(\"Cannot register multiple constructors with identical number of parameters (\" + (b - 1) + \") for class '\" + k.name + \"'! Overload resolution is currently only performed using the parameter count, not actual type info!\");\n k.N.Y[b - 1] = () => {\n nb(\"Cannot construct \" + k.name + \" due to unbound types\", g);\n };\n V([], g, function(l) {\n l.splice(1, 0, null);\n k.N.Y[b - 1] = ob(m, l, null, e, f);\n return [];\n });\n return [];\n });\n },\n a: function(a, b, c, d, e, f, g, k) {\n var m = pb(c, d);\n b = N(b);\n f = Z(e, f);\n V([], [a], function(l) {\n function n() {\n nb(\"Cannot call \" + p + \" due to unbound types\", m);\n }\n l = l[0];\n var p = l.name + \".\" + b;\n b.startsWith(\"@@\") && (b = Symbol[b.substring(2)]);\n k && l.N.ja.push(b);\n var r = l.N.X, u = r[b];\n u === undefined || u.S === undefined && u.className !== l.name && u.Z === c - 2 ? (n.Z = c - 2, n.className = l.name, r[b] = n) : (ab(r, b, p), r[b].S[c - 2] = n);\n V([], m, function(t) {\n t = ob(p, t, l, f, g);\n r[b].S === undefined ? (t.Z = c - 2, r[b] = t) : r[b].S[c - 2] = t;\n return [];\n });\n return [];\n });\n },\n A: function(a, b) {\n b = N(b);\n W(a, { name: b, fromWireType: function(c) {\n var d = M(c);\n qb(c);\n return d;\n }, toWireType: function(c, d) {\n return Ea(d);\n }, argPackAdvance: 8, readValueFromPointer: Xa, V: null });\n },\n n: function(a, b, c) {\n c = Za(c);\n b = N(b);\n W(a, { name: b, fromWireType: function(d) {\n return d;\n }, toWireType: function(d, e) {\n return e;\n }, argPackAdvance: 8, readValueFromPointer: rb(b, c), V: null });\n },\n e: function(a, b, c, d, e) {\n b = N(b);\n e === -1 && (e = 4294967295);\n e = Za(c);\n var f = (k) => k;\n if (d === 0) {\n var g = 32 - 8 * c;\n f = (k) => k << g >>> g;\n }\n c = b.includes(\"unsigned\") ? function(k, m) {\n return m >>> 0;\n } : function(k, m) {\n return m;\n };\n W(a, { name: b, fromWireType: f, toWireType: c, argPackAdvance: 8, readValueFromPointer: sb(b, e, d !== 0), V: null });\n },\n b: function(a, b, c) {\n function d(f) {\n f >>= 2;\n var g = E;\n return new e(ia, g[f + 1], g[f]);\n }\n var e = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array][b];\n c = N(c);\n W(a, { name: c, fromWireType: d, argPackAdvance: 8, readValueFromPointer: d }, { ua: true });\n },\n o: function(a, b) {\n b = N(b);\n var c = b === \"std::string\";\n W(a, { name: b, fromWireType: function(d) {\n var e = E[d >> 2], f = d + 4;\n if (c)\n for (var g = f, k = 0;k <= e; ++k) {\n var m = f + k;\n if (k == e || A[m] == 0) {\n g = g ? z(A, g, m - g) : \"\";\n if (l === undefined)\n var l = g;\n else\n l += String.fromCharCode(0), l += g;\n g = m + 1;\n }\n }\n else {\n l = Array(e);\n for (k = 0;k < e; ++k)\n l[k] = String.fromCharCode(A[f + k]);\n l = l.join(\"\");\n }\n S(d);\n return l;\n }, toWireType: function(d, e) {\n e instanceof ArrayBuffer && (e = new Uint8Array(e));\n var f, g = typeof e == \"string\";\n g || e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Int8Array || L(\"Cannot pass non-string to std::string\");\n if (c && g) {\n var k = 0;\n for (f = 0;f < e.length; ++f) {\n var m = e.charCodeAt(f);\n 127 >= m ? k++ : 2047 >= m ? k += 2 : 55296 <= m && 57343 >= m ? (k += 4, ++f) : k += 3;\n }\n f = k;\n } else\n f = e.length;\n k = Ib(4 + f + 1);\n m = k + 4;\n E[k >> 2] = f;\n if (c && g) {\n if (g = m, m = f + 1, f = A, 0 < m) {\n m = g + m - 1;\n for (var l = 0;l < e.length; ++l) {\n var n = e.charCodeAt(l);\n if (55296 <= n && 57343 >= n) {\n var p = e.charCodeAt(++l);\n n = 65536 + ((n & 1023) << 10) | p & 1023;\n }\n if (127 >= n) {\n if (g >= m)\n break;\n f[g++] = n;\n } else {\n if (2047 >= n) {\n if (g + 1 >= m)\n break;\n f[g++] = 192 | n >> 6;\n } else {\n if (65535 >= n) {\n if (g + 2 >= m)\n break;\n f[g++] = 224 | n >> 12;\n } else {\n if (g + 3 >= m)\n break;\n f[g++] = 240 | n >> 18;\n f[g++] = 128 | n >> 12 & 63;\n }\n f[g++] = 128 | n >> 6 & 63;\n }\n f[g++] = 128 | n & 63;\n }\n }\n f[g] = 0;\n }\n } else if (g)\n for (g = 0;g < f; ++g)\n l = e.charCodeAt(g), 255 < l && (S(m), L(\"String has UTF-16 code units that do not fit in 8 bits\")), A[m + g] = l;\n else\n for (g = 0;g < f; ++g)\n A[m + g] = e[g];\n d !== null && d.push(S, k);\n return k;\n }, argPackAdvance: 8, readValueFromPointer: Xa, V: function(d) {\n S(d);\n } });\n },\n i: function(a, b, c) {\n c = N(c);\n if (b === 2) {\n var d = tb;\n var e = ub;\n var f = vb;\n var g = () => ka;\n var k = 1;\n } else\n b === 4 && (d = wb, e = xb, f = yb, g = () => E, k = 2);\n W(a, { name: c, fromWireType: function(m) {\n for (var l = E[m >> 2], n = g(), p, r = m + 4, u = 0;u <= l; ++u) {\n var t = m + 4 + u * b;\n if (u == l || n[t >> k] == 0)\n r = d(r, t - r), p === undefined ? p = r : (p += String.fromCharCode(0), p += r), r = t + b;\n }\n S(m);\n return p;\n }, toWireType: function(m, l) {\n typeof l != \"string\" && L(\"Cannot pass non-string to C++ string type \" + c);\n var n = f(l), p = Ib(4 + n + b);\n E[p >> 2] = n >> k;\n e(l, p + 4, n + b);\n m !== null && m.push(S, p);\n return p;\n }, argPackAdvance: 8, readValueFromPointer: Xa, V: function(m) {\n S(m);\n } });\n },\n k: function(a, b, c, d, e, f) {\n Va[a] = { name: N(b), fa: Z(c, d), W: Z(e, f), ia: [] };\n },\n h: function(a, b, c, d, e, f, g, k, m, l) {\n Va[a].ia.push({ oa: N(b), ta: c, ra: Z(d, e), sa: f, za: g, ya: Z(k, m), Aa: l });\n },\n C: function(a, b) {\n b = N(b);\n W(a, {\n va: true,\n name: b,\n argPackAdvance: 0,\n fromWireType: function() {},\n toWireType: function() {}\n });\n },\n s: function(a, b, c, d, e) {\n a = Bb[a];\n b = M(b);\n c = Ab(c);\n var f = [];\n E[d >> 2] = Ea(f);\n return a(b, c, f, e);\n },\n t: function(a, b, c, d) {\n a = Bb[a];\n b = M(b);\n c = Ab(c);\n a(b, c, null, d);\n },\n g: qb,\n m: function(a, b) {\n var c = Db(a, b), d = c[0];\n b = d.name + \"_$\" + c.slice(1).map(function(g) {\n return g.name;\n }).join(\"_\") + \"$\";\n var e = Eb[b];\n if (e !== undefined)\n return e;\n var f = Array(a - 1);\n e = Cb((g, k, m, l) => {\n for (var n = 0, p = 0;p < a - 1; ++p)\n f[p] = c[p + 1].readValueFromPointer(l + n), n += c[p + 1].argPackAdvance;\n g = g[k].apply(g, f);\n for (p = 0;p < a - 1; ++p)\n c[p + 1].ma && c[p + 1].ma(f[p]);\n if (!d.va)\n return d.toWireType(m, g);\n });\n return Eb[b] = e;\n },\n D: function(a) {\n 4 < a && (J[a].ga += 1);\n },\n r: function(a) {\n var b = M(a);\n Wa(b);\n qb(a);\n },\n c: function() {\n x(\"\");\n },\n x: function(a, b, c) {\n A.copyWithin(a, b, b + c);\n },\n w: function(a) {\n var b = A.length;\n a >>>= 0;\n if (2147483648 < a)\n return false;\n for (var c = 1;4 >= c; c *= 2) {\n var d = b * (1 + 0.2 / c);\n d = Math.min(d, a + 100663296);\n var e = Math;\n d = Math.max(a, d);\n e = e.min.call(e, 2147483648, d + (65536 - d % 65536) % 65536);\n a: {\n try {\n fa.grow(e - ia.byteLength + 65535 >>> 16);\n na();\n var f = 1;\n break a;\n } catch (g) {}\n f = undefined;\n }\n if (f)\n return true;\n }\n return false;\n },\n z: function() {\n return 52;\n },\n u: function() {\n return 70;\n },\n y: function(a, b, c, d) {\n for (var e = 0, f = 0;f < c; f++) {\n var g = E[b >> 2], k = E[b + 4 >> 2];\n b += 8;\n for (var m = 0;m < k; m++) {\n var l = A[g + m], n = Fb[a];\n l === 0 || l === 10 ? ((a === 1 ? ea : v)(z(n, 0)), n.length = 0) : n.push(l);\n }\n e += k;\n }\n E[d >> 2] = e;\n return 0;\n }\n };\n (function() {\n function a(e) {\n h.asm = e.exports;\n fa = h.asm.E;\n na();\n oa = h.asm.J;\n qa.unshift(h.asm.F);\n F--;\n h.monitorRunDependencies && h.monitorRunDependencies(F);\n F == 0 && (ta !== null && (clearInterval(ta), ta = null), G && (e = G, G = null, e()));\n }\n function b(e) {\n a(e.instance);\n }\n function c(e) {\n return ya().then(function(f) {\n return WebAssembly.instantiate(f, d);\n }).then(function(f) {\n return f;\n }).then(e, function(f) {\n v(\"failed to asynchronously prepare wasm: \" + f);\n x(f);\n });\n }\n var d = { a: Jb };\n F++;\n h.monitorRunDependencies && h.monitorRunDependencies(F);\n if (h.instantiateWasm)\n try {\n return h.instantiateWasm(d, a);\n } catch (e) {\n v(\"Module.instantiateWasm callback failed with error: \" + e), ca(e);\n }\n (function() {\n return w || typeof WebAssembly.instantiateStreaming != \"function\" || ua(H) || typeof fetch != \"function\" ? c(b) : fetch(H, { credentials: \"same-origin\" }).then(function(e) {\n return WebAssembly.instantiateStreaming(e, d).then(b, function(f) {\n v(\"wasm streaming compile failed: \" + f);\n v(\"falling back to ArrayBuffer instantiation\");\n return c(b);\n });\n });\n })().catch(ca);\n return {};\n })();\n h.___wasm_call_ctors = function() {\n return (h.___wasm_call_ctors = h.asm.F).apply(null, arguments);\n };\n var Ka = h.___getTypeName = function() {\n return (Ka = h.___getTypeName = h.asm.G).apply(null, arguments);\n };\n h.__embind_initialize_bindings = function() {\n return (h.__embind_initialize_bindings = h.asm.H).apply(null, arguments);\n };\n var Ib = h._malloc = function() {\n return (Ib = h._malloc = h.asm.I).apply(null, arguments);\n }, S = h._free = function() {\n return (S = h._free = h.asm.K).apply(null, arguments);\n };\n h.dynCall_jiji = function() {\n return (h.dynCall_jiji = h.asm.L).apply(null, arguments);\n };\n var Kb;\n G = function Lb() {\n Kb || Mb();\n Kb || (G = Lb);\n };\n function Mb() {\n function a() {\n if (!Kb && (Kb = true, h.calledRun = true, !ha)) {\n za(qa);\n aa(h);\n if (h.onRuntimeInitialized)\n h.onRuntimeInitialized();\n if (h.postRun)\n for (typeof h.postRun == \"function\" && (h.postRun = [h.postRun]);h.postRun.length; ) {\n var b = h.postRun.shift();\n ra.unshift(b);\n }\n za(ra);\n }\n }\n if (!(0 < F)) {\n if (h.preRun)\n for (typeof h.preRun == \"function\" && (h.preRun = [h.preRun]);h.preRun.length; )\n sa();\n za(pa);\n 0 < F || (h.setStatus ? (h.setStatus(\"Running...\"), setTimeout(function() {\n setTimeout(function() {\n h.setStatus(\"\");\n }, 1);\n a();\n }, 1)) : a());\n }\n }\n if (h.preInit)\n for (typeof h.preInit == \"function\" && (h.preInit = [h.preInit]);0 < h.preInit.length; )\n h.preInit.pop()();\n Mb();\n return loadYoga2.ready;\n };\n})();\nvar yoga_wasm_base64_esm_default = loadYoga;\n\n// ../../node_modules/.bun/yoga-layout@3.2.1/node_modules/yoga-layout/dist/src/generated/YGEnums.js\nvar Align = /* @__PURE__ */ function(Align2) {\n Align2[Align2[\"Auto\"] = 0] = \"Auto\";\n Align2[Align2[\"FlexStart\"] = 1] = \"FlexStart\";\n Align2[Align2[\"Center\"] = 2] = \"Center\";\n Align2[Align2[\"FlexEnd\"] = 3] = \"FlexEnd\";\n Align2[Align2[\"Stretch\"] = 4] = \"Stretch\";\n Align2[Align2[\"Baseline\"] = 5] = \"Baseline\";\n Align2[Align2[\"SpaceBetween\"] = 6] = \"SpaceBetween\";\n Align2[Align2[\"SpaceAround\"] = 7] = \"SpaceAround\";\n Align2[Align2[\"SpaceEvenly\"] = 8] = \"SpaceEvenly\";\n return Align2;\n}({});\nvar BoxSizing = /* @__PURE__ */ function(BoxSizing2) {\n BoxSizing2[BoxSizing2[\"BorderBox\"] = 0] = \"BorderBox\";\n BoxSizing2[BoxSizing2[\"ContentBox\"] = 1] = \"ContentBox\";\n return BoxSizing2;\n}({});\nvar Dimension = /* @__PURE__ */ function(Dimension2) {\n Dimension2[Dimension2[\"Width\"] = 0] = \"Width\";\n Dimension2[Dimension2[\"Height\"] = 1] = \"Height\";\n return Dimension2;\n}({});\nvar Direction = /* @__PURE__ */ function(Direction2) {\n Direction2[Direction2[\"Inherit\"] = 0] = \"Inherit\";\n Direction2[Direction2[\"LTR\"] = 1] = \"LTR\";\n Direction2[Direction2[\"RTL\"] = 2] = \"RTL\";\n return Direction2;\n}({});\nvar Display = /* @__PURE__ */ function(Display2) {\n Display2[Display2[\"Flex\"] = 0] = \"Flex\";\n Display2[Display2[\"None\"] = 1] = \"None\";\n Display2[Display2[\"Contents\"] = 2] = \"Contents\";\n return Display2;\n}({});\nvar Edge = /* @__PURE__ */ function(Edge2) {\n Edge2[Edge2[\"Left\"] = 0] = \"Left\";\n Edge2[Edge2[\"Top\"] = 1] = \"Top\";\n Edge2[Edge2[\"Right\"] = 2] = \"Right\";\n Edge2[Edge2[\"Bottom\"] = 3] = \"Bottom\";\n Edge2[Edge2[\"Start\"] = 4] = \"Start\";\n Edge2[Edge2[\"End\"] = 5] = \"End\";\n Edge2[Edge2[\"Horizontal\"] = 6] = \"Horizontal\";\n Edge2[Edge2[\"Vertical\"] = 7] = \"Vertical\";\n Edge2[Edge2[\"All\"] = 8] = \"All\";\n return Edge2;\n}({});\nvar Errata = /* @__PURE__ */ function(Errata2) {\n Errata2[Errata2[\"None\"] = 0] = \"None\";\n Errata2[Errata2[\"StretchFlexBasis\"] = 1] = \"StretchFlexBasis\";\n Errata2[Errata2[\"AbsolutePositionWithoutInsetsExcludesPadding\"] = 2] = \"AbsolutePositionWithoutInsetsExcludesPadding\";\n Errata2[Errata2[\"AbsolutePercentAgainstInnerSize\"] = 4] = \"AbsolutePercentAgainstInnerSize\";\n Errata2[Errata2[\"All\"] = 2147483647] = \"All\";\n Errata2[Errata2[\"Classic\"] = 2147483646] = \"Classic\";\n return Errata2;\n}({});\nvar ExperimentalFeature = /* @__PURE__ */ function(ExperimentalFeature2) {\n ExperimentalFeature2[ExperimentalFeature2[\"WebFlexBasis\"] = 0] = \"WebFlexBasis\";\n return ExperimentalFeature2;\n}({});\nvar FlexDirection = /* @__PURE__ */ function(FlexDirection2) {\n FlexDirection2[FlexDirection2[\"Column\"] = 0] = \"Column\";\n FlexDirection2[FlexDirection2[\"ColumnReverse\"] = 1] = \"ColumnReverse\";\n FlexDirection2[FlexDirection2[\"Row\"] = 2] = \"Row\";\n FlexDirection2[FlexDirection2[\"RowReverse\"] = 3] = \"RowReverse\";\n return FlexDirection2;\n}({});\nvar Gutter = /* @__PURE__ */ function(Gutter2) {\n Gutter2[Gutter2[\"Column\"] = 0] = \"Column\";\n Gutter2[Gutter2[\"Row\"] = 1] = \"Row\";\n Gutter2[Gutter2[\"All\"] = 2] = \"All\";\n return Gutter2;\n}({});\nvar Justify = /* @__PURE__ */ function(Justify2) {\n Justify2[Justify2[\"FlexStart\"] = 0] = \"FlexStart\";\n Justify2[Justify2[\"Center\"] = 1] = \"Center\";\n Justify2[Justify2[\"FlexEnd\"] = 2] = \"FlexEnd\";\n Justify2[Justify2[\"SpaceBetween\"] = 3] = \"SpaceBetween\";\n Justify2[Justify2[\"SpaceAround\"] = 4] = \"SpaceAround\";\n Justify2[Justify2[\"SpaceEvenly\"] = 5] = \"SpaceEvenly\";\n return Justify2;\n}({});\nvar LogLevel = /* @__PURE__ */ function(LogLevel2) {\n LogLevel2[LogLevel2[\"Error\"] = 0] = \"Error\";\n LogLevel2[LogLevel2[\"Warn\"] = 1] = \"Warn\";\n LogLevel2[LogLevel2[\"Info\"] = 2] = \"Info\";\n LogLevel2[LogLevel2[\"Debug\"] = 3] = \"Debug\";\n LogLevel2[LogLevel2[\"Verbose\"] = 4] = \"Verbose\";\n LogLevel2[LogLevel2[\"Fatal\"] = 5] = \"Fatal\";\n return LogLevel2;\n}({});\nvar MeasureMode = /* @__PURE__ */ function(MeasureMode2) {\n MeasureMode2[MeasureMode2[\"Undefined\"] = 0] = \"Undefined\";\n MeasureMode2[MeasureMode2[\"Exactly\"] = 1] = \"Exactly\";\n MeasureMode2[MeasureMode2[\"AtMost\"] = 2] = \"AtMost\";\n return MeasureMode2;\n}({});\nvar NodeType = /* @__PURE__ */ function(NodeType2) {\n NodeType2[NodeType2[\"Default\"] = 0] = \"Default\";\n NodeType2[NodeType2[\"Text\"] = 1] = \"Text\";\n return NodeType2;\n}({});\nvar Overflow = /* @__PURE__ */ function(Overflow2) {\n Overflow2[Overflow2[\"Visible\"] = 0] = \"Visible\";\n Overflow2[Overflow2[\"Hidden\"] = 1] = \"Hidden\";\n Overflow2[Overflow2[\"Scroll\"] = 2] = \"Scroll\";\n return Overflow2;\n}({});\nvar PositionType = /* @__PURE__ */ function(PositionType2) {\n PositionType2[PositionType2[\"Static\"] = 0] = \"Static\";\n PositionType2[PositionType2[\"Relative\"] = 1] = \"Relative\";\n PositionType2[PositionType2[\"Absolute\"] = 2] = \"Absolute\";\n return PositionType2;\n}({});\nvar Unit = /* @__PURE__ */ function(Unit2) {\n Unit2[Unit2[\"Undefined\"] = 0] = \"Undefined\";\n Unit2[Unit2[\"Point\"] = 1] = \"Point\";\n Unit2[Unit2[\"Percent\"] = 2] = \"Percent\";\n Unit2[Unit2[\"Auto\"] = 3] = \"Auto\";\n return Unit2;\n}({});\nvar Wrap = /* @__PURE__ */ function(Wrap2) {\n Wrap2[Wrap2[\"NoWrap\"] = 0] = \"NoWrap\";\n Wrap2[Wrap2[\"Wrap\"] = 1] = \"Wrap\";\n Wrap2[Wrap2[\"WrapReverse\"] = 2] = \"WrapReverse\";\n return Wrap2;\n}({});\nvar constants = {\n ALIGN_AUTO: Align.Auto,\n ALIGN_FLEX_START: Align.FlexStart,\n ALIGN_CENTER: Align.Center,\n ALIGN_FLEX_END: Align.FlexEnd,\n ALIGN_STRETCH: Align.Stretch,\n ALIGN_BASELINE: Align.Baseline,\n ALIGN_SPACE_BETWEEN: Align.SpaceBetween,\n ALIGN_SPACE_AROUND: Align.SpaceAround,\n ALIGN_SPACE_EVENLY: Align.SpaceEvenly,\n BOX_SIZING_BORDER_BOX: BoxSizing.BorderBox,\n BOX_SIZING_CONTENT_BOX: BoxSizing.ContentBox,\n DIMENSION_WIDTH: Dimension.Width,\n DIMENSION_HEIGHT: Dimension.Height,\n DIRECTION_INHERIT: Direction.Inherit,\n DIRECTION_LTR: Direction.LTR,\n DIRECTION_RTL: Direction.RTL,\n DISPLAY_FLEX: Display.Flex,\n DISPLAY_NONE: Display.None,\n DISPLAY_CONTENTS: Display.Contents,\n EDGE_LEFT: Edge.Left,\n EDGE_TOP: Edge.Top,\n EDGE_RIGHT: Edge.Right,\n EDGE_BOTTOM: Edge.Bottom,\n EDGE_START: Edge.Start,\n EDGE_END: Edge.End,\n EDGE_HORIZONTAL: Edge.Horizontal,\n EDGE_VERTICAL: Edge.Vertical,\n EDGE_ALL: Edge.All,\n ERRATA_NONE: Errata.None,\n ERRATA_STRETCH_FLEX_BASIS: Errata.StretchFlexBasis,\n ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING: Errata.AbsolutePositionWithoutInsetsExcludesPadding,\n ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE: Errata.AbsolutePercentAgainstInnerSize,\n ERRATA_ALL: Errata.All,\n ERRATA_CLASSIC: Errata.Classic,\n EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS: ExperimentalFeature.WebFlexBasis,\n FLEX_DIRECTION_COLUMN: FlexDirection.Column,\n FLEX_DIRECTION_COLUMN_REVERSE: FlexDirection.ColumnReverse,\n FLEX_DIRECTION_ROW: FlexDirection.Row,\n FLEX_DIRECTION_ROW_REVERSE: FlexDirection.RowReverse,\n GUTTER_COLUMN: Gutter.Column,\n GUTTER_ROW: Gutter.Row,\n GUTTER_ALL: Gutter.All,\n JUSTIFY_FLEX_START: Justify.FlexStart,\n JUSTIFY_CENTER: Justify.Center,\n JUSTIFY_FLEX_END: Justify.FlexEnd,\n JUSTIFY_SPACE_BETWEEN: Justify.SpaceBetween,\n JUSTIFY_SPACE_AROUND: Justify.SpaceAround,\n JUSTIFY_SPACE_EVENLY: Justify.SpaceEvenly,\n LOG_LEVEL_ERROR: LogLevel.Error,\n LOG_LEVEL_WARN: LogLevel.Warn,\n LOG_LEVEL_INFO: LogLevel.Info,\n LOG_LEVEL_DEBUG: LogLevel.Debug,\n LOG_LEVEL_VERBOSE: LogLevel.Verbose,\n LOG_LEVEL_FATAL: LogLevel.Fatal,\n MEASURE_MODE_UNDEFINED: MeasureMode.Undefined,\n MEASURE_MODE_EXACTLY: MeasureMode.Exactly,\n MEASURE_MODE_AT_MOST: MeasureMode.AtMost,\n NODE_TYPE_DEFAULT: NodeType.Default,\n NODE_TYPE_TEXT: NodeType.Text,\n OVERFLOW_VISIBLE: Overflow.Visible,\n OVERFLOW_HIDDEN: Overflow.Hidden,\n OVERFLOW_SCROLL: Overflow.Scroll,\n POSITION_TYPE_STATIC: PositionType.Static,\n POSITION_TYPE_RELATIVE: PositionType.Relative,\n POSITION_TYPE_ABSOLUTE: PositionType.Absolute,\n UNIT_UNDEFINED: Unit.Undefined,\n UNIT_POINT: Unit.Point,\n UNIT_PERCENT: Unit.Percent,\n UNIT_AUTO: Unit.Auto,\n WRAP_NO_WRAP: Wrap.NoWrap,\n WRAP_WRAP: Wrap.Wrap,\n WRAP_WRAP_REVERSE: Wrap.WrapReverse\n};\nvar YGEnums_default = constants;\n\n// ../../node_modules/.bun/yoga-layout@3.2.1/node_modules/yoga-layout/dist/src/wrapAssembly.js\nfunction wrapAssembly(lib) {\n function patch(prototype, name, fn) {\n const original = prototype[name];\n prototype[name] = function() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0;_key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return fn.call(this, original, ...args);\n };\n }\n for (const fnName of [\"setPosition\", \"setMargin\", \"setFlexBasis\", \"setWidth\", \"setHeight\", \"setMinWidth\", \"setMinHeight\", \"setMaxWidth\", \"setMaxHeight\", \"setPadding\", \"setGap\"]) {\n const methods = {\n [Unit.Point]: lib.Node.prototype[fnName],\n [Unit.Percent]: lib.Node.prototype[`${fnName}Percent`],\n [Unit.Auto]: lib.Node.prototype[`${fnName}Auto`]\n };\n patch(lib.Node.prototype, fnName, function(original) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1;_key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n const value = args.pop();\n let unit, asNumber;\n if (value === \"auto\") {\n unit = Unit.Auto;\n asNumber = undefined;\n } else if (typeof value === \"object\") {\n unit = value.unit;\n asNumber = value.valueOf();\n } else {\n unit = typeof value === \"string\" && value.endsWith(\"%\") ? Unit.Percent : Unit.Point;\n asNumber = parseFloat(value);\n if (value !== undefined && !Number.isNaN(value) && Number.isNaN(asNumber)) {\n throw new Error(`Invalid value ${value} for ${fnName}`);\n }\n }\n if (!methods[unit])\n throw new Error(`Failed to execute \"${fnName}\": Unsupported unit '${value}'`);\n if (asNumber !== undefined) {\n return methods[unit].call(this, ...args, asNumber);\n } else {\n return methods[unit].call(this, ...args);\n }\n });\n }\n function wrapMeasureFunction(measureFunction) {\n return lib.MeasureCallback.implement({\n measure: function() {\n const {\n width,\n height\n } = measureFunction(...arguments);\n return {\n width: width ?? NaN,\n height: height ?? NaN\n };\n }\n });\n }\n patch(lib.Node.prototype, \"setMeasureFunc\", function(original, measureFunc) {\n if (measureFunc) {\n return original.call(this, wrapMeasureFunction(measureFunc));\n } else {\n return this.unsetMeasureFunc();\n }\n });\n function wrapDirtiedFunc(dirtiedFunction) {\n return lib.DirtiedCallback.implement({\n dirtied: dirtiedFunction\n });\n }\n patch(lib.Node.prototype, \"setDirtiedFunc\", function(original, dirtiedFunc) {\n original.call(this, wrapDirtiedFunc(dirtiedFunc));\n });\n patch(lib.Config.prototype, \"free\", function() {\n lib.Config.destroy(this);\n });\n patch(lib.Node, \"create\", (_, config) => {\n return config ? lib.Node.createWithConfig(config) : lib.Node.createDefault();\n });\n patch(lib.Node.prototype, \"free\", function() {\n lib.Node.destroy(this);\n });\n patch(lib.Node.prototype, \"freeRecursive\", function() {\n for (let t = 0, T = this.getChildCount();t < T; ++t) {\n this.getChild(0).freeRecursive();\n }\n this.free();\n });\n patch(lib.Node.prototype, \"calculateLayout\", function(original) {\n let width = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;\n let height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NaN;\n let direction = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Direction.LTR;\n return original.call(this, width, height, direction);\n });\n return {\n Config: lib.Config,\n Node: lib.Node,\n ...YGEnums_default\n };\n}\n\n// ../../node_modules/.bun/yoga-layout@3.2.1/node_modules/yoga-layout/dist/src/index.js\nvar Yoga = wrapAssembly(await yoga_wasm_base64_esm_default());\nvar src_default = Yoga;\n\n// src/lib/border.ts\nvar VALID_BORDER_STYLES = [\"single\", \"double\", \"rounded\", \"heavy\"];\nfunction isValidBorderStyle(value) {\n return typeof value === \"string\" && VALID_BORDER_STYLES.includes(value);\n}\nfunction parseBorderStyle(value, fallback = \"single\") {\n if (isValidBorderStyle(value)) {\n return value;\n }\n if (value !== undefined && value !== null) {\n console.warn(`Invalid borderStyle \"${value}\", falling back to \"${fallback}\". Valid values are: ${VALID_BORDER_STYLES.join(\", \")}`);\n }\n return fallback;\n}\nvar BorderChars = {\n single: {\n topLeft: \"\\u250C\",\n topRight: \"\\u2510\",\n bottomLeft: \"\\u2514\",\n bottomRight: \"\\u2518\",\n horizontal: \"\\u2500\",\n vertical: \"\\u2502\",\n topT: \"\\u252C\",\n bottomT: \"\\u2534\",\n leftT: \"\\u251C\",\n rightT: \"\\u2524\",\n cross: \"\\u253C\"\n },\n double: {\n topLeft: \"\\u2554\",\n topRight: \"\\u2557\",\n bottomLeft: \"\\u255A\",\n bottomRight: \"\\u255D\",\n horizontal: \"\\u2550\",\n vertical: \"\\u2551\",\n topT: \"\\u2566\",\n bottomT: \"\\u2569\",\n leftT: \"\\u2560\",\n rightT: \"\\u2563\",\n cross: \"\\u256C\"\n },\n rounded: {\n topLeft: \"\\u256D\",\n topRight: \"\\u256E\",\n bottomLeft: \"\\u2570\",\n bottomRight: \"\\u256F\",\n horizontal: \"\\u2500\",\n vertical: \"\\u2502\",\n topT: \"\\u252C\",\n bottomT: \"\\u2534\",\n leftT: \"\\u251C\",\n rightT: \"\\u2524\",\n cross: \"\\u253C\"\n },\n heavy: {\n topLeft: \"\\u250F\",\n topRight: \"\\u2513\",\n bottomLeft: \"\\u2517\",\n bottomRight: \"\\u251B\",\n horizontal: \"\\u2501\",\n vertical: \"\\u2503\",\n topT: \"\\u2533\",\n bottomT: \"\\u253B\",\n leftT: \"\\u2523\",\n rightT: \"\\u252B\",\n cross: \"\\u254B\"\n }\n};\nfunction getBorderFromSides(sides) {\n const result = [];\n if (sides.top)\n result.push(\"top\");\n if (sides.right)\n result.push(\"right\");\n if (sides.bottom)\n result.push(\"bottom\");\n if (sides.left)\n result.push(\"left\");\n return result.length > 0 ? result : false;\n}\nfunction getBorderSides(border) {\n return border === true ? { top: true, right: true, bottom: true, left: true } : Array.isArray(border) ? {\n top: border.includes(\"top\"),\n right: border.includes(\"right\"),\n bottom: border.includes(\"bottom\"),\n left: border.includes(\"left\")\n } : { top: false, right: false, bottom: false, left: false };\n}\nfunction borderCharsToArray(chars) {\n const array = new Uint32Array(11);\n array[0] = chars.topLeft.codePointAt(0);\n array[1] = chars.topRight.codePointAt(0);\n array[2] = chars.bottomLeft.codePointAt(0);\n array[3] = chars.bottomRight.codePointAt(0);\n array[4] = chars.horizontal.codePointAt(0);\n array[5] = chars.vertical.codePointAt(0);\n array[6] = chars.topT.codePointAt(0);\n array[7] = chars.bottomT.codePointAt(0);\n array[8] = chars.leftT.codePointAt(0);\n array[9] = chars.rightT.codePointAt(0);\n array[10] = chars.cross.codePointAt(0);\n return array;\n}\nvar BorderCharArrays = {\n single: borderCharsToArray(BorderChars.single),\n double: borderCharsToArray(BorderChars.double),\n rounded: borderCharsToArray(BorderChars.rounded),\n heavy: borderCharsToArray(BorderChars.heavy)\n};\n\n// src/lib/parse.keypress.ts\nimport { Buffer as Buffer2 } from \"buffer\";\n\n// src/lib/parse.keypress-kitty.ts\nvar kittyKeyMap = {\n 27: \"escape\",\n 9: \"tab\",\n 13: \"return\",\n 127: \"backspace\",\n 57344: \"escape\",\n 57345: \"return\",\n 57346: \"tab\",\n 57347: \"backspace\",\n 57348: \"insert\",\n 57349: \"delete\",\n 57350: \"left\",\n 57351: \"right\",\n 57352: \"up\",\n 57353: \"down\",\n 57354: \"pageup\",\n 57355: \"pagedown\",\n 57356: \"home\",\n 57357: \"end\",\n 57364: \"f1\",\n 57365: \"f2\",\n 57366: \"f3\",\n 57367: \"f4\",\n 57368: \"f5\",\n 57369: \"f6\",\n 57370: \"f7\",\n 57371: \"f8\",\n 57372: \"f9\",\n 57373: \"f10\",\n 57374: \"f11\",\n 57375: \"f12\",\n 57376: \"f13\",\n 57377: \"f14\",\n 57378: \"f15\",\n 57379: \"f16\",\n 57380: \"f17\",\n 57381: \"f18\",\n 57382: \"f19\",\n 57383: \"f20\",\n 57384: \"f21\",\n 57385: \"f22\",\n 57386: \"f23\",\n 57387: \"f24\",\n 57388: \"f25\",\n 57389: \"f26\",\n 57390: \"f27\",\n 57391: \"f28\",\n 57392: \"f29\",\n 57393: \"f30\",\n 57394: \"f31\",\n 57395: \"f32\",\n 57396: \"f33\",\n 57397: \"f34\",\n 57398: \"f35\",\n 57399: \"kp0\",\n 57400: \"kp1\",\n 57401: \"kp2\",\n 57402: \"kp3\",\n 57403: \"kp4\",\n 57404: \"kp5\",\n 57405: \"kp6\",\n 57406: \"kp7\",\n 57407: \"kp8\",\n 57408: \"kp9\",\n 57409: \"kpdecimal\",\n 57410: \"kpdivide\",\n 57411: \"kpmultiply\",\n 57412: \"kpminus\",\n 57413: \"kpplus\",\n 57414: \"kpenter\",\n 57415: \"kpequal\",\n 57428: \"mediaplay\",\n 57429: \"mediapause\",\n 57430: \"mediaplaypause\",\n 57431: \"mediareverse\",\n 57432: \"mediastop\",\n 57433: \"mediafastforward\",\n 57434: \"mediarewind\",\n 57435: \"medianext\",\n 57436: \"mediaprev\",\n 57437: \"mediarecord\",\n 57438: \"volumedown\",\n 57439: \"volumeup\",\n 57440: \"mute\",\n 57441: \"leftshift\",\n 57442: \"leftctrl\",\n 57443: \"leftalt\",\n 57444: \"leftsuper\",\n 57445: \"lefthyper\",\n 57446: \"leftmeta\",\n 57447: \"rightshift\",\n 57448: \"rightctrl\",\n 57449: \"rightalt\",\n 57450: \"rightsuper\",\n 57451: \"righthyper\",\n 57452: \"rightmeta\",\n 57453: \"iso_level3_shift\",\n 57454: \"iso_level5_shift\"\n};\nfunction fromKittyMods(mod) {\n return {\n shift: !!(mod & 1),\n alt: !!(mod & 2),\n ctrl: !!(mod & 4),\n super: !!(mod & 8),\n hyper: !!(mod & 16),\n meta: !!(mod & 32),\n capsLock: !!(mod & 64),\n numLock: !!(mod & 128)\n };\n}\nvar functionalKeyMap = {\n A: \"up\",\n B: \"down\",\n C: \"right\",\n D: \"left\",\n H: \"home\",\n F: \"end\",\n P: \"f1\",\n Q: \"f2\",\n R: \"f3\",\n S: \"f4\"\n};\nvar tildeKeyMap = {\n \"1\": \"home\",\n \"2\": \"insert\",\n \"3\": \"delete\",\n \"4\": \"end\",\n \"5\": \"pageup\",\n \"6\": \"pagedown\",\n \"7\": \"home\",\n \"8\": \"end\",\n \"11\": \"f1\",\n \"12\": \"f2\",\n \"13\": \"f3\",\n \"14\": \"f4\",\n \"15\": \"f5\",\n \"17\": \"f6\",\n \"18\": \"f7\",\n \"19\": \"f8\",\n \"20\": \"f9\",\n \"21\": \"f10\",\n \"23\": \"f11\",\n \"24\": \"f12\"\n};\nfunction parseKittySpecialKey(sequence) {\n const specialKeyRe = /^\\x1b\\[(\\d+);(\\d+):(\\d+)([A-Z~])$/;\n const match = specialKeyRe.exec(sequence);\n if (!match)\n return null;\n const keyNumOrOne = match[1];\n const modifierStr = match[2];\n const eventTypeStr = match[3];\n const terminator = match[4];\n let keyName;\n if (terminator === \"~\") {\n keyName = tildeKeyMap[keyNumOrOne];\n } else {\n if (keyNumOrOne !== \"1\")\n return null;\n keyName = functionalKeyMap[terminator];\n }\n if (!keyName)\n return null;\n const key = {\n name: keyName,\n ctrl: false,\n meta: false,\n shift: false,\n option: false,\n number: false,\n sequence,\n raw: sequence,\n eventType: \"press\",\n source: \"kitty\",\n super: false,\n hyper: false,\n capsLock: false,\n numLock: false\n };\n if (modifierStr) {\n const modifierMask = parseInt(modifierStr, 10);\n if (!isNaN(modifierMask) && modifierMask > 1) {\n const mods = fromKittyMods(modifierMask - 1);\n key.shift = mods.shift;\n key.ctrl = mods.ctrl;\n key.meta = mods.alt || mods.meta;\n key.option = mods.alt;\n key.super = mods.super;\n key.hyper = mods.hyper;\n key.capsLock = mods.capsLock;\n key.numLock = mods.numLock;\n }\n }\n if (eventTypeStr === \"1\" || !eventTypeStr) {\n key.eventType = \"press\";\n } else if (eventTypeStr === \"2\") {\n key.eventType = \"press\";\n key.repeated = true;\n } else if (eventTypeStr === \"3\") {\n key.eventType = \"release\";\n }\n return key;\n}\nfunction parseKittyKeyboard(sequence) {\n const specialResult = parseKittySpecialKey(sequence);\n if (specialResult)\n return specialResult;\n const kittyRe = /^\\x1b\\[([^\\x1b]+)u$/;\n const match = kittyRe.exec(sequence);\n if (!match)\n return null;\n const params = match[1];\n const fields = params.split(\";\");\n if (fields.length < 1)\n return null;\n const key = {\n name: \"\",\n ctrl: false,\n meta: false,\n shift: false,\n option: false,\n number: false,\n sequence,\n raw: sequence,\n eventType: \"press\",\n source: \"kitty\",\n super: false,\n hyper: false,\n capsLock: false,\n numLock: false\n };\n let text = \"\";\n const field1 = fields[0]?.split(\":\") || [];\n const codepointStr = field1[0];\n if (!codepointStr)\n return null;\n const codepoint = parseInt(codepointStr, 10);\n if (isNaN(codepoint))\n return null;\n let shiftedCodepoint;\n let baseCodepoint;\n if (field1[1]) {\n const shifted = parseInt(field1[1], 10);\n if (!isNaN(shifted) && shifted > 0 && shifted <= 1114111) {\n shiftedCodepoint = shifted;\n }\n }\n if (field1[2]) {\n const base = parseInt(field1[2], 10);\n if (!isNaN(base) && base > 0 && base <= 1114111) {\n baseCodepoint = base;\n }\n }\n const knownKey = kittyKeyMap[codepoint];\n if (knownKey) {\n key.name = knownKey;\n key.code = `[${codepoint}u`;\n } else {\n if (codepoint > 0 && codepoint <= 1114111) {\n const char = String.fromCodePoint(codepoint);\n key.name = char;\n if (baseCodepoint) {\n key.baseCode = baseCodepoint;\n }\n } else {\n return null;\n }\n }\n if (fields[1]) {\n const field2 = fields[1].split(\":\");\n const modifierStr = field2[0];\n const eventTypeStr = field2[1];\n if (modifierStr) {\n const modifierMask = parseInt(modifierStr, 10);\n if (!isNaN(modifierMask) && modifierMask > 1) {\n const mods = fromKittyMods(modifierMask - 1);\n key.shift = mods.shift;\n key.ctrl = mods.ctrl;\n key.meta = mods.alt || mods.meta;\n key.option = mods.alt;\n key.super = mods.super;\n key.hyper = mods.hyper;\n key.capsLock = mods.capsLock;\n key.numLock = mods.numLock;\n }\n }\n if (eventTypeStr === \"1\" || !eventTypeStr) {\n key.eventType = \"press\";\n } else if (eventTypeStr === \"2\") {\n key.eventType = \"press\";\n key.repeated = true;\n } else if (eventTypeStr === \"3\") {\n key.eventType = \"release\";\n } else {\n key.eventType = \"press\";\n }\n }\n if (fields[2]) {\n const codepoints = fields[2].split(\":\");\n for (const cpStr of codepoints) {\n const cp = parseInt(cpStr, 10);\n if (!isNaN(cp) && cp > 0 && cp <= 1114111) {\n text += String.fromCodePoint(cp);\n }\n }\n }\n if (text === \"\") {\n const isPrintable = key.name.length > 0 && !kittyKeyMap[codepoint];\n if (isPrintable) {\n if (key.shift && shiftedCodepoint) {\n text = String.fromCodePoint(shiftedCodepoint);\n } else if (key.shift && key.name.length === 1) {\n text = key.name.toLocaleUpperCase();\n } else {\n text = key.name;\n }\n }\n }\n if (key.name === \" \" && key.shift && !key.ctrl && !key.meta) {\n text = \" \";\n }\n if (text) {\n key.sequence = text;\n }\n return key;\n}\n\n// src/lib/parse.keypress.ts\nvar metaKeyCodeRe = /^(?:\\x1b)([a-zA-Z0-9])$/;\nvar fnKeyRe = /^(?:\\x1b+)(O|N|\\[|\\[\\[)(?:(\\d+)(?:;(\\d+))?([~^$])|(?:1;)?(\\d+)?([a-zA-Z]))/;\nvar keyName = {\n OP: \"f1\",\n OQ: \"f2\",\n OR: \"f3\",\n OS: \"f4\",\n \"[11~\": \"f1\",\n \"[12~\": \"f2\",\n \"[13~\": \"f3\",\n \"[14~\": \"f4\",\n \"[[A\": \"f1\",\n \"[[B\": \"f2\",\n \"[[C\": \"f3\",\n \"[[D\": \"f4\",\n \"[[E\": \"f5\",\n \"[15~\": \"f5\",\n \"[17~\": \"f6\",\n \"[18~\": \"f7\",\n \"[19~\": \"f8\",\n \"[20~\": \"f9\",\n \"[21~\": \"f10\",\n \"[23~\": \"f11\",\n \"[24~\": \"f12\",\n \"[A\": \"up\",\n \"[B\": \"down\",\n \"[C\": \"right\",\n \"[D\": \"left\",\n \"[E\": \"clear\",\n \"[F\": \"end\",\n \"[H\": \"home\",\n OA: \"up\",\n OB: \"down\",\n OC: \"right\",\n OD: \"left\",\n OE: \"clear\",\n OF: \"end\",\n OH: \"home\",\n \"[1~\": \"home\",\n \"[2~\": \"insert\",\n \"[3~\": \"delete\",\n \"[4~\": \"end\",\n \"[5~\": \"pageup\",\n \"[6~\": \"pagedown\",\n \"[[5~\": \"pageup\",\n \"[[6~\": \"pagedown\",\n \"[7~\": \"home\",\n \"[8~\": \"end\",\n \"[a\": \"up\",\n \"[b\": \"down\",\n \"[c\": \"right\",\n \"[d\": \"left\",\n \"[e\": \"clear\",\n f: \"right\",\n b: \"left\",\n p: \"up\",\n n: \"down\",\n \"[2$\": \"insert\",\n \"[3$\": \"delete\",\n \"[5$\": \"pageup\",\n \"[6$\": \"pagedown\",\n \"[7$\": \"home\",\n \"[8$\": \"end\",\n Oa: \"up\",\n Ob: \"down\",\n Oc: \"right\",\n Od: \"left\",\n Oe: \"clear\",\n \"[2^\": \"insert\",\n \"[3^\": \"delete\",\n \"[5^\": \"pageup\",\n \"[6^\": \"pagedown\",\n \"[7^\": \"home\",\n \"[8^\": \"end\",\n \"[Z\": \"tab\"\n};\nvar nonAlphanumericKeys = [...Object.values(keyName), \"backspace\"];\nvar isShiftKey = (code) => {\n return [\"[a\", \"[b\", \"[c\", \"[d\", \"[e\", \"[2$\", \"[3$\", \"[5$\", \"[6$\", \"[7$\", \"[8$\", \"[Z\"].includes(code);\n};\nvar isCtrlKey = (code) => {\n return [\"Oa\", \"Ob\", \"Oc\", \"Od\", \"Oe\", \"[2^\", \"[3^\", \"[5^\", \"[6^\", \"[7^\", \"[8^\"].includes(code);\n};\nvar modifyOtherKeysRe = /^\\x1b\\[27;(\\d+);(\\d+)~$/;\nvar parseKeypress = (s = \"\", options = {}) => {\n let parts;\n if (Buffer2.isBuffer(s)) {\n if (s[0] > 127 && s[1] === undefined) {\n s[0] -= 128;\n s = \"\\x1B\" + String(s);\n } else {\n s = String(s);\n }\n } else if (s !== undefined && typeof s !== \"string\") {\n s = String(s);\n } else if (!s) {\n s = \"\";\n }\n if (/^\\x1b\\[<\\d+;\\d+;\\d+[Mm]$/.test(s)) {\n return null;\n }\n if (s.startsWith(\"\\x1B[M\") && s.length >= 6) {\n return null;\n }\n if (/^\\x1b\\[\\d+;\\d+;\\d+t$/.test(s)) {\n return null;\n }\n if (/^\\x1b\\[\\d+;\\d+R$/.test(s)) {\n return null;\n }\n if (/^\\x1b\\[\\?[\\d;]+c$/.test(s)) {\n return null;\n }\n if (/^\\x1b\\[\\?[\\d;]+\\$y$/.test(s)) {\n return null;\n }\n if (s === \"\\x1B[I\" || s === \"\\x1B[O\") {\n return null;\n }\n if (/^\\x1b\\][\\d;].*(\\x1b\\\\|\\x07)$/.test(s)) {\n return null;\n }\n if (s === \"\\x1B[200~\" || s === \"\\x1B[201~\") {\n return null;\n }\n const key = {\n name: \"\",\n ctrl: false,\n meta: false,\n shift: false,\n option: false,\n number: false,\n sequence: s,\n raw: s,\n eventType: \"press\",\n source: \"raw\"\n };\n key.sequence = key.sequence || s || key.name;\n if (options.useKittyKeyboard) {\n const kittyResult = parseKittyKeyboard(s);\n if (kittyResult) {\n return kittyResult;\n }\n }\n const modifyOtherKeysMatch = modifyOtherKeysRe.exec(s);\n if (modifyOtherKeysMatch) {\n const modifier = parseInt(modifyOtherKeysMatch[1], 10) - 1;\n const charCode = parseInt(modifyOtherKeysMatch[2], 10);\n key.ctrl = !!(modifier & 4);\n key.meta = !!(modifier & 2);\n key.shift = !!(modifier & 1);\n key.option = !!(modifier & 2);\n key.super = !!(modifier & 8);\n key.hyper = !!(modifier & 16);\n if (charCode === 13) {\n key.name = \"return\";\n } else if (charCode === 27) {\n key.name = \"escape\";\n } else if (charCode === 9) {\n key.name = \"tab\";\n } else if (charCode === 32) {\n key.name = \"space\";\n } else if (charCode === 127 || charCode === 8) {\n key.name = \"backspace\";\n } else {\n const char = String.fromCharCode(charCode);\n key.name = char;\n key.sequence = char;\n if (charCode >= 48 && charCode <= 57) {\n key.number = true;\n }\n }\n return key;\n }\n if (s === \"\\r\" || s === \"\\x1B\\r\") {\n key.name = \"return\";\n key.meta = s.length === 2;\n } else if (s === `\n` || s === `\\x1B\n`) {\n key.name = \"linefeed\";\n key.meta = s.length === 2;\n } else if (s === \"\\t\") {\n key.name = \"tab\";\n } else if (s === \"\\b\" || s === \"\\x1B\\b\" || s === \"\\x7F\" || s === \"\\x1B\\x7F\") {\n key.name = \"backspace\";\n key.meta = s.charAt(0) === \"\\x1B\";\n } else if (s === \"\\x1B\" || s === \"\\x1B\\x1B\") {\n key.name = \"escape\";\n key.meta = s.length === 2;\n } else if (s === \" \" || s === \"\\x1B \") {\n key.name = \"space\";\n key.meta = s.length === 2;\n } else if (s === \"\\x00\") {\n key.name = \"space\";\n key.ctrl = true;\n } else if (s.length === 1 && s <= \"\\x1A\") {\n key.name = String.fromCharCode(s.charCodeAt(0) + 97 - 1);\n key.ctrl = true;\n } else if (s.length === 1 && s >= \"0\" && s <= \"9\") {\n key.name = s;\n key.number = true;\n } else if (s.length === 1 && s >= \"a\" && s <= \"z\") {\n key.name = s;\n } else if (s.length === 1 && s >= \"A\" && s <= \"Z\") {\n key.name = s.toLowerCase();\n key.shift = true;\n } else if (s.length === 1) {\n key.name = s;\n } else if (parts = metaKeyCodeRe.exec(s)) {\n key.meta = true;\n const char = parts[1];\n const isUpperCase = /^[A-Z]$/.test(char);\n if (char === \"F\") {\n key.name = \"right\";\n } else if (char === \"B\") {\n key.name = \"left\";\n } else if (isUpperCase) {\n key.shift = true;\n key.name = char;\n } else {\n key.name = char;\n }\n } else if (s.length === 2 && s[0] === \"\\x1B\" && s[1] <= \"\\x1A\") {\n key.meta = true;\n key.ctrl = true;\n key.name = String.fromCharCode(s.charCodeAt(1) + 97 - 1);\n } else if (parts = fnKeyRe.exec(s)) {\n const segs = [...s];\n if (segs[0] === \"\\x1B\" && segs[1] === \"\\x1B\") {\n key.option = true;\n key.meta = true;\n }\n const code = [parts[1], parts[2], parts[4], parts[6]].filter(Boolean).join(\"\");\n const modifier = parseInt(parts[3] || parts[5] || \"1\", 10) - 1;\n key.ctrl = !!(modifier & 4);\n key.meta = !!(modifier & 2);\n key.shift = !!(modifier & 1);\n key.option = !!(modifier & 2);\n key.super = !!(modifier & 8);\n key.hyper = !!(modifier & 16);\n key.code = code;\n const keyNameResult = keyName[code];\n if (keyNameResult) {\n key.name = keyNameResult;\n key.shift = isShiftKey(code) || key.shift;\n key.ctrl = isCtrlKey(code) || key.ctrl;\n } else {\n key.name = \"\";\n key.code = undefined;\n }\n } else if (s === \"\\x1B[3~\") {\n key.name = \"delete\";\n key.meta = false;\n key.code = \"[3~\";\n }\n return key;\n};\n\n// src/lib/KeyHandler.ts\nimport { EventEmitter } from \"events\";\nclass KeyEvent {\n name;\n ctrl;\n meta;\n shift;\n option;\n sequence;\n number;\n raw;\n eventType;\n source;\n code;\n super;\n hyper;\n capsLock;\n numLock;\n baseCode;\n repeated;\n _defaultPrevented = false;\n _propagationStopped = false;\n constructor(key) {\n this.name = key.name;\n this.ctrl = key.ctrl;\n this.meta = key.meta;\n this.shift = key.shift;\n this.option = key.option;\n this.sequence = key.sequence;\n this.number = key.number;\n this.raw = key.raw;\n this.eventType = key.eventType;\n this.source = key.source;\n this.code = key.code;\n this.super = key.super;\n this.hyper = key.hyper;\n this.capsLock = key.capsLock;\n this.numLock = key.numLock;\n this.baseCode = key.baseCode;\n this.repeated = key.repeated;\n }\n get defaultPrevented() {\n return this._defaultPrevented;\n }\n get propagationStopped() {\n return this._propagationStopped;\n }\n preventDefault() {\n this._defaultPrevented = true;\n }\n stopPropagation() {\n this._propagationStopped = true;\n }\n}\n\nclass PasteEvent {\n text;\n _defaultPrevented = false;\n _propagationStopped = false;\n constructor(text) {\n this.text = text;\n }\n get defaultPrevented() {\n return this._defaultPrevented;\n }\n get propagationStopped() {\n return this._propagationStopped;\n }\n preventDefault() {\n this._defaultPrevented = true;\n }\n stopPropagation() {\n this._propagationStopped = true;\n }\n}\n\nclass KeyHandler extends EventEmitter {\n useKittyKeyboard;\n constructor(useKittyKeyboard = false) {\n super();\n this.useKittyKeyboard = useKittyKeyboard;\n }\n processInput(data) {\n const parsedKey = parseKeypress(data, { useKittyKeyboard: this.useKittyKeyboard });\n if (!parsedKey) {\n return false;\n }\n try {\n switch (parsedKey.eventType) {\n case \"press\":\n this.emit(\"keypress\", new KeyEvent(parsedKey));\n break;\n case \"release\":\n this.emit(\"keyrelease\", new KeyEvent(parsedKey));\n break;\n default:\n this.emit(\"keypress\", new KeyEvent(parsedKey));\n break;\n }\n } catch (error) {\n console.error(`[KeyHandler] Error processing input:`, error);\n return true;\n }\n return true;\n }\n processPaste(data) {\n try {\n const cleanedData = Bun.stripANSI(data);\n this.emit(\"paste\", new PasteEvent(cleanedData));\n } catch (error) {\n console.error(`[KeyHandler] Error processing paste:`, error);\n }\n }\n}\n\nclass InternalKeyHandler extends KeyHandler {\n renderableHandlers = new Map;\n constructor(useKittyKeyboard = false) {\n super(useKittyKeyboard);\n }\n emit(event, ...args) {\n return this.emitWithPriority(event, ...args);\n }\n emitWithPriority(event, ...args) {\n let hasGlobalListeners = false;\n const globalListeners = this.listeners(event);\n if (globalListeners.length > 0) {\n hasGlobalListeners = true;\n for (const listener of globalListeners) {\n try {\n listener(...args);\n } catch (error) {\n console.error(`[KeyHandler] Error in global ${event} handler:`, error);\n }\n if (event === \"keypress\" || event === \"keyrelease\" || event === \"paste\") {\n const keyEvent = args[0];\n if (keyEvent.propagationStopped) {\n return hasGlobalListeners;\n }\n }\n }\n }\n const renderableSet = this.renderableHandlers.get(event);\n const renderableHandlers = renderableSet && renderableSet.size > 0 ? [...renderableSet] : [];\n let hasRenderableListeners = false;\n if (renderableSet && renderableSet.size > 0) {\n hasRenderableListeners = true;\n if (event === \"keypress\" || event === \"keyrelease\" || event === \"paste\") {\n const keyEvent = args[0];\n if (keyEvent.defaultPrevented)\n return hasGlobalListeners || hasRenderableListeners;\n if (keyEvent.propagationStopped)\n return hasGlobalListeners || hasRenderableListeners;\n }\n for (const handler of renderableHandlers) {\n try {\n handler(...args);\n } catch (error) {\n console.error(`[KeyHandler] Error in renderable ${event} handler:`, error);\n }\n if (event === \"keypress\" || event === \"keyrelease\" || event === \"paste\") {\n const keyEvent = args[0];\n if (keyEvent.propagationStopped) {\n return hasGlobalListeners || hasRenderableListeners;\n }\n }\n }\n }\n return hasGlobalListeners || hasRenderableListeners;\n }\n onInternal(event, handler) {\n if (!this.renderableHandlers.has(event)) {\n this.renderableHandlers.set(event, new Set);\n }\n this.renderableHandlers.get(event).add(handler);\n }\n offInternal(event, handler) {\n const handlers = this.renderableHandlers.get(event);\n if (handlers) {\n handlers.delete(handler);\n }\n }\n}\n\n// src/lib/RGBA.ts\nclass RGBA {\n buffer;\n constructor(buffer) {\n this.buffer = buffer;\n }\n static fromArray(array) {\n return new RGBA(array);\n }\n static fromValues(r, g, b, a = 1) {\n return new RGBA(new Float32Array([r, g, b, a]));\n }\n static fromInts(r, g, b, a = 255) {\n return new RGBA(new Float32Array([r / 255, g / 255, b / 255, a / 255]));\n }\n static fromHex(hex) {\n return hexToRgb(hex);\n }\n toInts() {\n return [Math.round(this.r * 255), Math.round(this.g * 255), Math.round(this.b * 255), Math.round(this.a * 255)];\n }\n get r() {\n return this.buffer[0];\n }\n set r(value) {\n this.buffer[0] = value;\n }\n get g() {\n return this.buffer[1];\n }\n set g(value) {\n this.buffer[1] = value;\n }\n get b() {\n return this.buffer[2];\n }\n set b(value) {\n this.buffer[2] = value;\n }\n get a() {\n return this.buffer[3];\n }\n set a(value) {\n this.buffer[3] = value;\n }\n map(fn) {\n return [fn(this.r), fn(this.g), fn(this.b), fn(this.a)];\n }\n toString() {\n return `rgba(${this.r.toFixed(2)}, ${this.g.toFixed(2)}, ${this.b.toFixed(2)}, ${this.a.toFixed(2)})`;\n }\n equals(other) {\n if (!other)\n return false;\n return this.r === other.r && this.g === other.g && this.b === other.b && this.a === other.a;\n }\n}\nfunction hexToRgb(hex) {\n hex = hex.replace(/^#/, \"\");\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n } else if (hex.length === 4) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];\n }\n if (!/^[0-9A-Fa-f]{6}$/.test(hex) && !/^[0-9A-Fa-f]{8}$/.test(hex)) {\n console.warn(`Invalid hex color: ${hex}, defaulting to magenta`);\n return RGBA.fromValues(1, 0, 1, 1);\n }\n const r = parseInt(hex.substring(0, 2), 16) / 255;\n const g = parseInt(hex.substring(2, 4), 16) / 255;\n const b = parseInt(hex.substring(4, 6), 16) / 255;\n const a = hex.length === 8 ? parseInt(hex.substring(6, 8), 16) / 255 : 1;\n return RGBA.fromValues(r, g, b, a);\n}\nfunction rgbToHex(rgb) {\n const components = rgb.a === 1 ? [rgb.r, rgb.g, rgb.b] : [rgb.r, rgb.g, rgb.b, rgb.a];\n return \"#\" + components.map((x) => {\n const hex = Math.floor(Math.max(0, Math.min(1, x) * 255)).toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n }).join(\"\");\n}\nfunction hsvToRgb(h, s, v) {\n let r = 0, g = 0, b = 0;\n const i = Math.floor(h / 60) % 6;\n const f = h / 60 - Math.floor(h / 60);\n const p = v * (1 - s);\n const q = v * (1 - f * s);\n const t = v * (1 - (1 - f) * s);\n switch (i) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n }\n return RGBA.fromValues(r, g, b, 1);\n}\nvar CSS_COLOR_NAMES = {\n black: \"#000000\",\n white: \"#FFFFFF\",\n red: \"#FF0000\",\n green: \"#008000\",\n blue: \"#0000FF\",\n yellow: \"#FFFF00\",\n cyan: \"#00FFFF\",\n magenta: \"#FF00FF\",\n silver: \"#C0C0C0\",\n gray: \"#808080\",\n grey: \"#808080\",\n maroon: \"#800000\",\n olive: \"#808000\",\n lime: \"#00FF00\",\n aqua: \"#00FFFF\",\n teal: \"#008080\",\n navy: \"#000080\",\n fuchsia: \"#FF00FF\",\n purple: \"#800080\",\n orange: \"#FFA500\",\n brightblack: \"#666666\",\n brightred: \"#FF6666\",\n brightgreen: \"#66FF66\",\n brightblue: \"#6666FF\",\n brightyellow: \"#FFFF66\",\n brightcyan: \"#66FFFF\",\n brightmagenta: \"#FF66FF\",\n brightwhite: \"#FFFFFF\"\n};\nfunction parseColor(color) {\n if (typeof color === \"string\") {\n const lowerColor = color.toLowerCase();\n if (lowerColor === \"transparent\") {\n return RGBA.fromValues(0, 0, 0, 0);\n }\n if (CSS_COLOR_NAMES[lowerColor]) {\n return hexToRgb(CSS_COLOR_NAMES[lowerColor]);\n }\n return hexToRgb(color);\n }\n return color;\n}\n// src/lib/fonts/block.json\nvar block_default = {\n name: \"block\",\n version: \"0.2.0\",\n homepage: \"https://github.com/dominikwilkowski/cfonts\",\n colors: 2,\n lines: 6,\n buffer: [\"\", \"\", \"\", \"\", \"\", \"\"],\n letterspace: [\" \", \" \", \" \", \" \", \" \", \" \"],\n letterspace_size: 1,\n chars: {\n A: [\n \" <c1>\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2> \",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A\\u2550\\u255D \\u255A\\u2550\\u255D</c2>\"\n ],\n B: [\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D </c2>\"\n ],\n C: [\n \" <c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550\\u2550\\u2550\\u255D</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551 </c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2> \\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D</c2>\"\n ],\n D: [\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D </c2>\"\n ],\n E: [\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550\\u2550\\u2550\\u255D</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550\\u255D </c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D</c2>\"\n ],\n F: [\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550\\u2550\\u2550\\u255D</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550\\u255D </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551 </c2>\",\n \"<c2>\\u255A\\u2550\\u255D </c2>\"\n ],\n G: [\n \" <c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550\\u2550\\u2550\\u255D </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2> \\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D </c2>\"\n ],\n H: [\n \"<c1>\\u2588\\u2588</c1><c2>\\u2557</c2><c1> \\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A\\u2550\\u255D \\u255A\\u2550\\u255D</c2>\"\n ],\n I: [\n \"<c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A\\u2550\\u255D</c2>\"\n ],\n J: [\n \"<c1> \\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588 \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2> \\u255A\\u2550\\u2550\\u2550\\u2550\\u255D </c2>\"\n ],\n K: [\n \"<c1>\\u2588\\u2588</c1><c2>\\u2557</c2><c1> \\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A\\u2550\\u255D \\u255A\\u2550\\u255D</c2>\"\n ],\n L: [\n \"<c1>\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551 </c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D</c2>\"\n ],\n M: [\n \"<c1>\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2><c1> \\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2><c1> \\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554</c2><c1>\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551\\u255A</c2><c1>\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551 \\u255A\\u2550\\u255D</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A\\u2550\\u255D \\u255A\\u2550\\u255D</c2>\"\n ],\n N: [\n \"<c1>\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2><c1> \\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551\\u255A</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551 \\u255A</c2><c1>\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A\\u2550\\u255D \\u255A\\u2550\\u2550\\u2550\\u255D</c2>\"\n ],\n O: [\n \" <c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2> \\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D </c2>\"\n ],\n P: [\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550\\u2550\\u255D </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551 </c2>\",\n \"<c2>\\u255A\\u2550\\u255D </c2>\"\n ],\n Q: [\n \" <c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1>\\u2584\\u2584 \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2> \\u255A\\u2550\\u2550</c2><c1>\\u2580\\u2580</c1><c2>\\u2550\\u255D </c2>\"\n ],\n R: [\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A\\u2550\\u255D \\u255A\\u2550\\u255D</c2>\"\n ],\n S: [\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550\\u2550\\u2550\\u255D</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D</c2>\"\n ],\n T: [\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550\\u255D</c2>\",\n \"<c1> \\u2588\\u2588</c1><c2>\\u2551 </c2>\",\n \"<c1> \\u2588\\u2588</c1><c2>\\u2551 </c2>\",\n \"<c1> \\u2588\\u2588</c1><c2>\\u2551 </c2>\",\n \"<c2> \\u255A\\u2550\\u255D </c2>\"\n ],\n U: [\n \"<c1>\\u2588\\u2588</c1><c2>\\u2557</c2><c1> \\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2> \\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D </c2>\"\n ],\n V: [\n \"<c1>\\u2588\\u2588</c1><c2>\\u2557</c2><c1> \\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2><c1> \\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2> \\u255A</c2><c1>\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D </c2>\",\n \"<c2> \\u255A\\u2550\\u2550\\u2550\\u255D </c2>\"\n ],\n W: [\n \"<c1>\\u2588\\u2588</c1><c2>\\u2557 </c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551 </c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588</c1><c2>\\u2557</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1>\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588\\u2588</c1><c2>\\u2554</c2><c1>\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2> \\u255A\\u2550\\u2550\\u255D\\u255A\\u2550\\u2550\\u255D </c2>\"\n ],\n X: [\n \"<c1>\\u2588\\u2588</c1><c2>\\u2557</c2><c1> \\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2><c1>\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2> \\u255A</c2><c1>\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D </c2>\",\n \" <c1>\\u2588\\u2588</c1><c2>\\u2554</c2><c1>\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2><c1> \\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A\\u2550\\u255D \\u255A\\u2550\\u255D</c2>\"\n ],\n Y: [\n \"<c1>\\u2588\\u2588</c1><c2>\\u2557</c2><c1> \\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2><c1> \\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2> \\u255A</c2><c1>\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D </c2>\",\n \"<c2> \\u255A</c2><c1>\\u2588\\u2588</c1><c2>\\u2554\\u255D </c2>\",\n \"<c1> \\u2588\\u2588</c1><c2>\\u2551 </c2>\",\n \"<c2> \\u255A\\u2550\\u255D </c2>\"\n ],\n Z: [\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A\\u2550\\u2550</c2><c1>\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c1> \\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D </c2>\",\n \" <c1>\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D </c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D</c2>\"\n ],\n \"0\": [\n \" <c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550</c2><c1>\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1>\\u2588\\u2588</c1><c2>\\u2554</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2> \\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D </c2>\"\n ],\n \"1\": [\n \" <c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \" <c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \" <c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2> \\u255A\\u2550\\u255D</c2>\"\n ],\n \"2\": [\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \" <c1>\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550\\u2550\\u255D </c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D</c2>\"\n ],\n \"3\": [\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \" <c1>\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2> \\u255A\\u2550\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D </c2>\"\n ],\n \"4\": [\n \"<c1>\\u2588\\u2588</c1><c2>\\u2557</c2><c1> \\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1> \\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2> \\u255A\\u2550\\u255D</c2>\"\n ],\n \"5\": [\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550\\u2550\\u2550\\u255D</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D</c2>\"\n ],\n \"6\": [\n \" <c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550\\u2550\\u2550\\u255D </c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2> \\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D </c2>\"\n ],\n \"7\": [\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1> \\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c1> \\u2588\\u2588</c1><c2>\\u2554\\u255D </c2>\",\n \"<c1> \\u2588\\u2588</c1><c2>\\u2551 </c2>\",\n \"<c2> \\u255A\\u2550\\u255D </c2>\"\n ],\n \"8\": [\n \" <c1>\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2> \\u255A\\u2550\\u2550\\u2550\\u2550\\u255D </c2>\"\n ],\n \"9\": [\n \" <c1>\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2> \\u255A\\u2550\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \" <c1>\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2> \\u255A\\u2550\\u2550\\u2550\\u2550\\u255D </c2>\"\n ],\n \"!\": [\n \"<c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A\\u2550\\u255D</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A\\u2550\\u255D</c2>\"\n ],\n \"?\": [\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1> \\u2584\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c1> \\u2580\\u2580</c1><c2>\\u2550\\u2550\\u255D </c2>\",\n \"<c1> \\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c2> \\u255A\\u2550\\u255D </c2>\"\n ],\n \".\": [\" \", \" \", \" \", \" \", \"<c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\", \"<c2>\\u255A\\u2550\\u255D</c2>\"],\n \"+\": [\n \" \",\n \"<c1> \\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2> \\u255A</c2><c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u255D</c2>\",\n \"<c2> \\u255A\\u2550\\u255D </c2>\",\n \" \"\n ],\n \"-\": [\" \", \" \", \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\", \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550\\u255D</c2>\", \" \", \" \"],\n _: [\" \", \" \", \" \", \" \", \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\", \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D</c2>\"],\n \"=\": [\n \" \",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D</c2>\",\n \" \"\n ],\n \"@\": [\n \" <c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588</c1><c2>\\u2551</c2><c1>\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2> \\u255A\\u255D\\u255A\\u2550\\u2550\\u2550\\u255D </c2>\"\n ],\n \"#\": [\n \" <c1>\\u2588\\u2588</c1><c2>\\u2557</c2><c1> \\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2> \\u255A\\u2550\\u255D \\u255A\\u2550\\u255D </c2>\"\n ],\n $: [\n \"<c1>\\u2584\\u2584\\u2588\\u2588\\u2588\\u2584\\u2584</c1><c2>\\xB7</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u2550\\u2550\\u2550\\u255D</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c2>\\u255A\\u2550</c2><c1>\\u2580\\u2580\\u2580</c1><c2>\\u2550\\u2550\\u255D</c2>\"\n ],\n \"%\": [\n \"<c1>\\u2588\\u2588</c1><c2>\\u2557</c2><c1> \\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A\\u2550\\u255D</c2><c1>\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c1> \\u2588\\u2588</c1><c2>\\u2554\\u255D </c2>\",\n \" <c1>\\u2588\\u2588</c1><c2>\\u2554\\u255D </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2>\\u255A\\u2550\\u255D \\u255A\\u2550\\u255D</c2>\"\n ],\n \"&\": [\n \"<c1> \\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c1> \\u2588\\u2588</c1><c2>\\u2551 </c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550</c2><c1>\\u2588\\u2588</c1><c2>\\u2554\\u2550\\u255D</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2551 </c2>\",\n \"<c2>\\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D </c2>\"\n ],\n \"(\": [\n \" <c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551 \",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2551 \",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c2> \\u255A\\u2550\\u255D</c2>\"\n ],\n \")\": [\n \"<c1>\\u2588\\u2588</c1><c2>\\u2557 </c2>\",\n \"<c2>\\u255A</c2><c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \" <c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \" <c1>\\u2588\\u2588</c1><c2>\\u2551</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c2>\\u255A\\u2550\\u255D </c2>\"\n ],\n \"/\": [\n \"<c1> \\u2588\\u2588</c1><c2>\\u2557</c2>\",\n \"<c1> \\u2588\\u2588</c1><c2>\\u2554\\u255D</c2>\",\n \"<c1> \\u2588\\u2588</c1><c2>\\u2554\\u255D </c2>\",\n \" <c1>\\u2588\\u2588</c1><c2>\\u2554\\u255D </c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2554\\u255D </c2>\",\n \"<c2>\\u255A\\u2550\\u255D </c2>\"\n ],\n \":\": [\" \", \"<c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\", \"<c2>\\u255A\\u2550\\u255D</c2>\", \"<c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\", \"<c2>\\u255A\\u2550\\u255D</c2>\", \" \"],\n \";\": [\" \", \" \", \"<c1>\\u2588\\u2588</c1><c2>\\u2557</c2>\", \"<c2>\\u255A\\u2550\\u255D</c2>\", \"<c1>\\u2584\\u2588</c1><c2>\\u2557</c2>\", \"<c1>\\u2580</c1><c2>\\u2550\\u255D</c2>\"],\n \",\": [\" \", \" \", \" \", \" \", \"<c1>\\u2584\\u2588</c1><c2>\\u2557</c2>\", \"<c1>\\u2580</c1><c2>\\u2550\\u255D</c2>\"],\n \"'\": [\"<c1>\\u2588</c1><c2>\\u2557</c2> \", \"<c2>\\u255A\\u255D</c2> \", \" \", \" \", \" \", \" \"],\n '\"': [\"<c1>\\u2588</c1><c2>\\u2557</c2><c1>\\u2588</c1><c2>\\u2557</c2> \", \"<c2>\\u255A\\u255D\\u255A\\u255D</c2> \", \" \", \" \", \" \", \" \"],\n \" \": [\" \", \" \", \" \", \" \", \" \", \" \"]\n }\n};\n// src/lib/fonts/shade.json\nvar shade_default = {\n name: \"shade\",\n version: \"0.2.0\",\n homepage: \"https://github.com/dominikwilkowski/cfonts\",\n colors: 2,\n lines: 8,\n buffer: [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"],\n letterspace: [\n \"<c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2>\"\n ],\n letterspace_size: 1,\n chars: {\n A: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588 \\u2588</c1>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \"<c1>\\u2588 \\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \" <c2>\\u2591\\u2591</c2> \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n B: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588 \\u2588</c1>\",\n \"<c1>\\u2588\\u2588\\u2588</c1> \",\n \"<c1>\\u2588 \\u2588</c1>\",\n \"<c1>\\u2588\\u2588\\u2588</c1> \",\n \" <c2>\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n C: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \"<c1>\\u2588</c1> \",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \" \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n D: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588 \\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588\\u2588\\u2588</c1> \",\n \" <c2>\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n E: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \"<c1>\\u2588</c1> \",\n \"<c1>\\u2588\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588</c1> <c2>\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \" \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n F: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \"<c1>\\u2588</c1> \",\n \"<c1>\\u2588\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588</c1> <c2>\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591\\u2591</c2>\",\n \" <c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n G: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588\\u2588\\u2588</c1>\",\n \"<c1>\\u2588</c1> \",\n \"<c1>\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591</c2> <c1>\\u2588</c1>\",\n \"<c1>\\u2588\\u2588\\u2588</c1> \",\n \" <c2>\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n H: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \"<c1>\\u2588 \\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \" <c2>\\u2591\\u2591</c2> \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n I: [\n \"<c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588</c1>\",\n \" <c1>\\u2588</c1> \",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588</c1>\",\n \" \",\n \"<c2>\\u2591\\u2591\\u2591</c2>\"\n ],\n J: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \" <c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \" <c2>\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n K: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588\\u2588\\u2588</c1> \",\n \"<c1>\\u2588 \\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \" <c2>\\u2591\\u2591</c2> \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n L: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \" \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n M: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \"<c1>\\u2588 \\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \" <c2>\\u2591\\u2591</c2> \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n N: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588 \\u2588\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591</c2> <c1>\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \" <c2>\\u2591\\u2591</c2> \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n O: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588 \\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \" <c1>\\u2588\\u2588</c1> \",\n \"<c2>\\u2591 \\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n P: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588 \\u2588</c1>\",\n \"<c1>\\u2588\\u2588\\u2588</c1> \",\n \"<c1>\\u2588</c1> <c2>\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591\\u2591</c2>\",\n \" <c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n Q: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588 \\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \" <c1>\\u2588\\u2588\\u2588</c1>\",\n \"<c2>\\u2591</c2> \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n R: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588 \\u2588</c1>\",\n \"<c1>\\u2588\\u2588\\u2588</c1> \",\n \"<c1>\\u2588 \\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \" <c2>\\u2591\\u2591</c2> \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n S: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588\\u2588\\u2588</c1>\",\n \"<c1>\\u2588</c1> \",\n \" <c1>\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2> <c1>\\u2588</c1>\",\n \"<c1>\\u2588\\u2588\\u2588</c1> \",\n \" <c2>\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n T: [\n \"<c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588</c1>\",\n \" <c1>\\u2588</c1> \",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591 \\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591</c2>\"\n ],\n U: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \" <c1>\\u2588\\u2588</c1> \",\n \"<c2>\\u2591 \\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n V: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \" <c1>\\u2588</c1><c2>\\u2591</c2><c1>\\u2588</c1> \",\n \"<c2>\\u2591</c2> <c1>\\u2588</c1> <c2>\\u2591</c2>\",\n \"<c2>\\u2591\\u2591 \\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n W: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \"<c1>\\u2588 \\u2588</c1>\",\n \" <c2>\\u2591\\u2591</c2> \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n X: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \" <c1>\\u2588\\u2588</c1> \",\n \"<c1>\\u2588 \\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \" <c2>\\u2591\\u2591</c2> \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n Y: [\n \"<c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588\\u2588\\u2588</c1>\",\n \" <c1>\\u2588</c1> \",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591 \\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591</c2>\"\n ],\n Z: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \" <c1>\\u2588</c1> \",\n \"<c2>\\u2591</c2><c1>\\u2588</c1> <c2>\\u2591</c2>\",\n \"<c1>\\u2588</c1> <c2>\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \" \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \"0\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588 \\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591</c2><c1>\\u258C\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591</c2> <c1>\\u2588</c1>\",\n \" <c1>\\u2588\\u2588</c1> \",\n \"<c2>\\u2591 \\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \"1\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588</c1><c2>\\u2591\\u2591</c2>\",\n \" <c1>\\u2588</c1><c2>\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \" <c2>\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \"2\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2590\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \" <c1>\\u2588</c1>\",\n \"<c2>\\u2591\\u2591</c2><c1>\\u2588</c1> \",\n \"<c2>\\u2591</c2><c1>\\u2588</c1> <c2>\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \" \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \"3\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \" <c1>\\u2588</c1>\",\n \"<c2>\\u2591\\u2591</c2><c1>\\u2588\\u2588</c1>\",\n \"<c2>\\u2591\\u2591</c2> <c1>\\u2588</c1>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \" \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \"4\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \" <c1>\\u2588</c1>\",\n \"<c2>\\u2591\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c2>\\u2591\\u2591\\u2591</c2> \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \"5\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \"<c1>\\u2588</c1> \",\n \"<c1>\\u2588\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \" <c1>\\u2588</c1>\",\n \"<c1>\\u2588\\u2588\\u2588</c1> \",\n \" <c2>\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \"6\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588\\u2588\\u2588</c1>\",\n \"<c1>\\u2588</c1> \",\n \"<c1>\\u2588\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588 \\u2588</c1>\",\n \" <c1>\\u2588\\u2588</c1> \",\n \"<c2>\\u2591 \\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \"7\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \" <c1>\\u2588</c1>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \" <c1>\\u2588</c1> \",\n \"<c1>\\u2588</c1> <c2>\\u2591\\u2591</c2>\",\n \" <c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \"8\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588 \\u2588</c1>\",\n \" <c1>\\u2588\\u2588</c1> \",\n \"<c1>\\u2588 \\u2588</c1>\",\n \" <c1>\\u2588\\u2588</c1> \",\n \"<c2>\\u2591 \\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \"9\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588 \\u2588</c1>\",\n \" <c1>\\u2588\\u2588\\u2588</c1>\",\n \"<c2>\\u2591</c2> <c1>\\u2588</c1>\",\n \"<c2>\\u2591\\u2591</c2><c1>\\u2588</c1> \",\n \"<c2>\\u2591\\u2591 \\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \"!\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591 \\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591 \\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \"?\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2590\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \" <c1>\\u2588</c1>\",\n \"<c2>\\u2591\\u2591</c2><c1>\\u2588</c1> \",\n \"<c2>\\u2591\\u2591 \\u2591</c2>\",\n \"<c2>\\u2591\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591\\u2591 \\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \".\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591\\u2591 \\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \"+\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588\\u2588\\u2588</c1>\",\n \"<c2>\\u2591</c2> <c1>\\u2588</c1> \",\n \"<c2>\\u2591\\u2591 \\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \"-\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \" \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n _: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \" \"\n ],\n \"=\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \" \",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \" \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \"@\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588 \\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591</c2><c1>\\u258C\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591</c2><c1>\\u2588</c1> \",\n \" <c1>\\u2588\\u2588\\u2588</c1>\",\n \" \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \"#\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u258C\\u2590</c1><c2>\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \" <c1>\\u258C\\u2590</c1> \",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1>\",\n \" <c1>\\u258C\\u2590</c1> \",\n \"<c2>\\u2591 \\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n $: [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591</c2><c1>\\u258C</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588\\u2588\\u2588</c1>\",\n \"<c1>\\u2588 \\u2588</c1> \",\n \" <c1>\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591\\u2591</c2><c1>\\u258C\\u2588</c1>\",\n \"<c1>\\u2588\\u2588\\u2588</c1> \",\n \" <c2>\\u2591</c2>\"\n ],\n \"%\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588</c1><c2>\\u2591</c2><c1>\\u2588</c1> \",\n \" <c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1> <c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2><c1>\\u2588</c1>\",\n \"<c1>\\u2588</c1> <c2>\\u2591</c2> \",\n \" <c2>\\u2591\\u2591\\u2591</c2>\"\n ],\n \"&\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c1>\\u2588\\u2588\\u2588\\u2588\\u2588</c1>\",\n \"<c1>\\u2588 \\u2588</c1> \",\n \"<c1>\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2> </c2> \",\n \"<c2>\\u2591\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \"(\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1> <c2>\\u2591</c2>\",\n \"<c1>\\u2588</c1> <c2>\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1><c2>\\u2591\\u2591\\u2591</c2>\",\n \" <c1>\\u2588</c1><c2>\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2> <c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591\\u2591 \\u2591</c2>\"\n ],\n \")\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2> <c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591\\u2591</c2> <c1>\\u2588</c1>\",\n \"<c2>\\u2591\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c2>\\u2591\\u2591</c2><c1>\\u2588</c1> \",\n \"<c2>\\u2591</c2><c1>\\u2588</c1> <c2>\\u2591</c2>\",\n \"<c2>\\u2591 \\u2591\\u2591</c2>\"\n ],\n \"/\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591</c2><c1>\\u2588</c1>\",\n \"<c2>\\u2591\\u2591</c2><c1>\\u2588</c1> \",\n \"<c2>\\u2591\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1> <c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591\\u2591</c2>\",\n \"<c1>\\u2588</c1> <c2>\\u2591\\u2591</c2>\",\n \" <c2>\\u2591\\u2591\\u2591</c2>\"\n ],\n \":\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591\\u2591</c2>\",\n \"<c2>\\u2591 \\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591\\u2591</c2>\",\n \"<c2>\\u2591 \\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \";\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591\\u2591</c2>\",\n \"<c2>\\u2591 \\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591\\u2591</c2>\"\n ],\n \",\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1> <c2>\\u2591</c2>\"\n ],\n \"'\": [\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591\\u2591</c2>\",\n \"<c2>\\u2591 \\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n '\"': [\n \"<c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591\\u2591</c2>\",\n \"<c2>\\u2591 \\u2591 \\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2>\"\n ],\n \" \": [\n \"<c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591</c2>\",\n \"<c2>\\u2591\\u2591\\u2591</c2>\"\n ]\n }\n};\n// src/lib/fonts/slick.json\nvar slick_default = {\n name: \"slick\",\n version: \"0.1.0\",\n homepage: \"https://github.com/dominikwilkowski/cfonts\",\n colors: 2,\n lines: 6,\n buffer: [\"\", \"\", \"\", \"\", \"\", \"\"],\n letterspace: [\"<c2>\\u2571</c2>\", \"<c2>\\u2571</c2>\", \"<c2>\\u2571</c2>\", \"<c2>\\u2571</c2>\", \"<c2>\\u2571</c2>\", \"<c2>\\u2571</c2>\"],\n letterspace_size: 1,\n chars: {\n A: [\n \"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\",\n \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571</c2><c1>\\u2503\\u2503</c1>\",\n \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503</c1>\",\n \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\",\n \"<c1>\\u2570\\u256F</c1><c2>\\u2571</c2><c1>\\u2570\\u256F</c1>\"\n ],\n B: [\n \"<c1>\\u256D\\u2501\\u2501\\u256E</c1><c2>\\u2571</c2>\",\n \"<c1>\\u2503\\u256D\\u256E\\u2503</c1><c2>\\u2571</c2>\",\n \"<c1>\\u2503\\u2570\\u256F\\u2570\\u256E</c1>\",\n \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\",\n \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503</c1>\",\n \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"\n ],\n C: [\n \"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\",\n \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571</c2><c1>\\u2570\\u256F</c1>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571</c2><c1>\\u256D\\u256E</c1>\",\n \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503</c1>\",\n \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"\n ],\n D: [\n \"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\",\n \"<c1>\\u2570\\u256E\\u256D\\u256E\\u2503</c1>\",\n \"<c2>\\u2571</c2><c1>\\u2503\\u2503\\u2503\\u2503</c1>\",\n \"<c2>\\u2571</c2><c1>\\u2503\\u2503\\u2503\\u2503</c1>\",\n \"<c1>\\u256D\\u256F\\u2570\\u256F\\u2503</c1>\",\n \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"\n ],\n E: [\"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2503\\u256D\\u2501\\u2501\\u256F</c1>\", \"<c1>\\u2503\\u2570\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2503\\u256D\\u2501\\u2501\\u256F</c1>\", \"<c1>\\u2503\\u2570\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"],\n F: [\n \"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\",\n \"<c1>\\u2503\\u256D\\u2501\\u2501\\u256F</c1>\",\n \"<c1>\\u2503\\u2570\\u2501\\u2501\\u256E</c1>\",\n \"<c1>\\u2503\\u256D\\u2501\\u2501\\u256F</c1>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571\\u2571\\u2571</c2>\",\n \"<c1>\\u2570\\u256F</c1><c2>\\u2571\\u2571\\u2571</c2>\"\n ],\n G: [\n \"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\",\n \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571</c2><c1>\\u2570\\u256F</c1>\",\n \"<c1>\\u2503\\u2503\\u256D\\u2501\\u256E</c1>\",\n \"<c1>\\u2503\\u2570\\u253B\\u2501\\u2503</c1>\",\n \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"\n ],\n H: [\n \"<c1>\\u256D\\u256E</c1><c2>\\u2571</c2><c1>\\u256D\\u256E</c1>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571</c2><c1>\\u2503\\u2503</c1>\",\n \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503</c1>\",\n \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571</c2><c1>\\u2503\\u2503</c1>\",\n \"<c1>\\u2570\\u256F</c1><c2>\\u2571</c2><c1>\\u2570\\u256F</c1>\"\n ],\n I: [\n \"<c1>\\u256D\\u2501\\u2501\\u256E</c1>\",\n \"<c1>\\u2570\\u252B\\u2523\\u256F</c1>\",\n \"<c2>\\u2571</c2><c1>\\u2503\\u2503</c1><c2>\\u2571</c2>\",\n \"<c2>\\u2571</c2><c1>\\u2503\\u2503</c1><c2>\\u2571</c2>\",\n \"<c1>\\u256D\\u252B\\u2523\\u256E</c1>\",\n \"<c1>\\u2570\\u2501\\u2501\\u256F</c1>\"\n ],\n J: [\n \"<c2>\\u2571\\u2571</c2><c1>\\u256D\\u256E</c1>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u2503\\u2503</c1>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u2503\\u2503</c1>\",\n \"<c1>\\u256D\\u256E\\u2503\\u2503</c1>\",\n \"<c1>\\u2503\\u2570\\u256F\\u2503</c1>\",\n \"<c1>\\u2570\\u2501\\u2501\\u256F</c1>\"\n ],\n K: [\n \"<c1>\\u256D\\u256E\\u256D\\u2501\\u256E</c1>\",\n \"<c1>\\u2503\\u2503\\u2503\\u256D\\u256F</c1>\",\n \"<c1>\\u2503\\u2570\\u256F\\u256F</c1><c2>\\u2571</c2>\",\n \"<c1>\\u2503\\u256D\\u256E\\u2503</c1><c2>\\u2571</c2>\",\n \"<c1>\\u2503\\u2503\\u2503\\u2570\\u256E</c1>\",\n \"<c1>\\u2570\\u256F\\u2570\\u2501\\u256F</c1>\"\n ],\n L: [\n \"<c1>\\u256D\\u256E</c1><c2>\\u2571\\u2571\\u2571</c2>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571\\u2571\\u2571</c2>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571\\u2571\\u2571</c2>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571</c2><c1>\\u256D\\u256E</c1>\",\n \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503</c1>\",\n \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"\n ],\n M: [\n \"<c1>\\u256D\\u2501\\u256E\\u256D\\u2501\\u256E</c1>\",\n \"<c1>\\u2503\\u2503\\u2570\\u256F\\u2503\\u2503</c1>\",\n \"<c1>\\u2503\\u256D\\u256E\\u256D\\u256E\\u2503</c1>\",\n \"<c1>\\u2503\\u2503\\u2503\\u2503\\u2503\\u2503</c1>\",\n \"<c1>\\u2503\\u2503\\u2503\\u2503\\u2503\\u2503</c1>\",\n \"<c1>\\u2570\\u256F\\u2570\\u256F\\u2570\\u256F</c1>\"\n ],\n N: [\n \"<c1>\\u256D\\u2501\\u256E</c1><c2>\\u2571</c2><c1>\\u256D\\u256E</c1>\",\n \"<c1>\\u2503\\u2503\\u2570\\u256E\\u2503\\u2503</c1>\",\n \"<c1>\\u2503\\u256D\\u256E\\u2570\\u256F\\u2503</c1>\",\n \"<c1>\\u2503\\u2503\\u2570\\u256E\\u2503\\u2503</c1>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571</c2><c1>\\u2503\\u2503\\u2503</c1>\",\n \"<c1>\\u2570\\u256F</c1><c2>\\u2571</c2><c1>\\u2570\\u2501\\u256F</c1>\"\n ],\n O: [\n \"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\",\n \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571</c2><c1>\\u2503\\u2503</c1>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571</c2><c1>\\u2503\\u2503</c1>\",\n \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503</c1>\",\n \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"\n ],\n P: [\n \"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\",\n \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\",\n \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503</c1>\",\n \"<c1>\\u2503\\u256D\\u2501\\u2501\\u256F</c1>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571\\u2571\\u2571</c2>\",\n \"<c1>\\u2570\\u256F</c1><c2>\\u2571\\u2571\\u2571</c2>\"\n ],\n Q: [\n \"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1><c2>\\u2571</c2>\",\n \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1><c2>\\u2571</c2>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571</c2><c1>\\u2503\\u2503</c1><c2>\\u2571</c2>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571</c2><c1>\\u2503\\u2503</c1><c2>\\u2571</c2>\",\n \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503\\u256E</c1>\",\n \"<c1>\\u2570\\u2501\\u2501\\u2501\\u2501\\u256F</c1>\"\n ],\n R: [\"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\", \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503</c1>\", \"<c1>\\u2503\\u256D\\u256E\\u256D\\u256F</c1>\", \"<c1>\\u2503\\u2503\\u2503\\u2570\\u256E</c1>\", \"<c1>\\u2570\\u256F\\u2570\\u2501\\u256F</c1>\"],\n S: [\"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\", \"<c1>\\u2503\\u2570\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2570\\u2501\\u2501\\u256E\\u2503</c1>\", \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503</c1>\", \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"],\n T: [\n \"<c1>\\u256D\\u2501\\u2501\\u2501\\u2501\\u256E</c1>\",\n \"<c1>\\u2503\\u256D\\u256E\\u256D\\u256E\\u2503</c1>\",\n \"<c1>\\u2570\\u256F\\u2503\\u2503\\u2570\\u256F</c1>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u2503\\u2503</c1><c2>\\u2571\\u2571</c2>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u2503\\u2503</c1><c2>\\u2571\\u2571</c2>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u2570\\u256F</c1><c2>\\u2571\\u2571</c2>\"\n ],\n U: [\n \"<c1>\\u256D\\u256E</c1><c2>\\u2571</c2><c1>\\u256D\\u256E</c1>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571</c2><c1>\\u2503\\u2503</c1>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571</c2><c1>\\u2503\\u2503</c1>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571</c2><c1>\\u2503\\u2503</c1>\",\n \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503</c1>\",\n \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"\n ],\n V: [\n \"<c1>\\u256D\\u256E</c1><c2>\\u2571\\u2571</c2><c1>\\u256D\\u256E</c1>\",\n \"<c1>\\u2503\\u2570\\u256E\\u256D\\u256F\\u2503</c1>\",\n \"<c1>\\u2570\\u256E\\u2503\\u2503\\u256D\\u256F</c1>\",\n \"<c2>\\u2571</c2><c1>\\u2503\\u2570\\u256F\\u2503</c1><c2>\\u2571</c2>\",\n \"<c2>\\u2571</c2><c1>\\u2570\\u256E\\u256D\\u256F</c1><c2>\\u2571</c2>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u2570\\u256F</c1><c2>\\u2571\\u2571</c2>\"\n ],\n W: [\n \"<c1>\\u256D\\u256E\\u256D\\u256E\\u256D\\u256E</c1>\",\n \"<c1>\\u2503\\u2503\\u2503\\u2503\\u2503\\u2503</c1>\",\n \"<c1>\\u2503\\u2503\\u2503\\u2503\\u2503\\u2503</c1>\",\n \"<c1>\\u2503\\u2570\\u256F\\u2570\\u256F\\u2503</c1>\",\n \"<c1>\\u2570\\u256E\\u256D\\u256E\\u256D\\u256F</c1>\",\n \"<c2>\\u2571</c2><c1>\\u2570\\u256F\\u2570\\u256F</c1><c2>\\u2571</c2>\"\n ],\n X: [\n \"<c1>\\u256D\\u2501\\u256E\\u256D\\u2501\\u256E</c1>\",\n \"<c1>\\u2570\\u256E\\u2570\\u256F\\u256D\\u256F</c1>\",\n \"<c2>\\u2571</c2><c1>\\u2570\\u256E\\u256D\\u256F</c1><c2>\\u2571</c2>\",\n \"<c2>\\u2571</c2><c1>\\u256D\\u256F\\u2570\\u256E</c1><c2>\\u2571</c2>\",\n \"<c1>\\u256D\\u256F\\u256D\\u256E\\u2570\\u256E</c1>\",\n \"<c1>\\u2570\\u2501\\u256F\\u2570\\u2501\\u256F</c1>\"\n ],\n Y: [\n \"<c1>\\u256D\\u256E</c1><c2>\\u2571\\u2571</c2><c1>\\u256D\\u256E</c1>\",\n \"<c1>\\u2503\\u2570\\u256E\\u256D\\u256F\\u2503</c1>\",\n \"<c1>\\u2570\\u256E\\u2570\\u256F\\u256D\\u256F</c1>\",\n \"<c2>\\u2571</c2><c1>\\u2570\\u256E\\u256D\\u256F</c1><c2>\\u2571</c2>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u2503\\u2503</c1><c2>\\u2571\\u2571</c2>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u2570\\u256F</c1><c2>\\u2571\\u2571</c2>\"\n ],\n Z: [\n \"<c1>\\u256D\\u2501\\u2501\\u2501\\u2501\\u256E</c1>\",\n \"<c1>\\u2570\\u2501\\u2501\\u256E\\u2501\\u2503</c1>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u256D\\u256F\\u256D\\u256F</c1>\",\n \"<c2>\\u2571</c2><c1>\\u256D\\u256F\\u256D\\u256F</c1><c2>\\u2571</c2>\",\n \"<c1>\\u256D\\u256F\\u2501\\u2570\\u2501\\u256E</c1>\",\n \"<c1>\\u2570\\u2501\\u2501\\u2501\\u2501\\u256F</c1>\"\n ],\n \"0\": [\"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\", \"<c1>\\u2503\\u2503\\u2503\\u2503\\u2503</c1>\", \"<c1>\\u2503\\u2503\\u2503\\u2503\\u2503</c1>\", \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503</c1>\", \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"],\n \"1\": [\n \"<c2>\\u2571</c2><c1>\\u256D\\u256E</c1><c2>\\u2571</c2>\",\n \"<c1>\\u256D\\u256F\\u2503</c1><c2>\\u2571</c2>\",\n \"<c1>\\u2570\\u256E\\u2503</c1><c2>\\u2571</c2>\",\n \"<c2>\\u2571</c2><c1>\\u2503\\u2503</c1><c2>\\u2571</c2>\",\n \"<c1>\\u256D\\u256F\\u2570\\u256E</c1>\",\n \"<c1>\\u2570\\u2501\\u2501\\u256F</c1>\"\n ],\n \"2\": [\"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\", \"<c1>\\u2570\\u256F\\u256D\\u256F\\u2503</c1>\", \"<c1>\\u256D\\u2501\\u256F\\u256D\\u256F</c1>\", \"<c1>\\u2503\\u2570\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"],\n \"3\": [\"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\", \"<c1>\\u2570\\u256F\\u256D\\u256F\\u2503</c1>\", \"<c1>\\u256D\\u256E\\u2570\\u256E\\u2503</c1>\", \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503</c1>\", \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"],\n \"4\": [\n \"<c1>\\u256D\\u256E</c1><c2>\\u2571</c2><c1>\\u256D\\u256E</c1>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u2571</c2><c1>\\u2503\\u2503</c1>\",\n \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503</c1>\",\n \"<c1>\\u2570\\u2501\\u2501\\u256E\\u2503</c1>\",\n \"<c2>\\u2571\\u2571\\u2571</c2><c1>\\u2503\\u2503</c1>\",\n \"<c2>\\u2571\\u2571\\u2571</c2><c1>\\u2570\\u256F</c1>\"\n ],\n \"5\": [\"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2503\\u256D\\u2501\\u2501\\u256F</c1>\", \"<c1>\\u2503\\u2570\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2570\\u2501\\u2501\\u256E\\u2503</c1>\", \"<c1>\\u256D\\u2501\\u2501\\u256F\\u2503</c1>\", \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"],\n \"6\": [\"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2503\\u256D\\u2501\\u2501\\u256F</c1>\", \"<c1>\\u2503\\u2570\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\", \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503</c1>\", \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"],\n \"7\": [\n \"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\",\n \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\",\n \"<c1>\\u2570\\u256F\\u256D\\u256F\\u2503</c1>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u2503\\u256D\\u256F</c1>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u2503\\u2503</c1><c2>\\u2571</c2>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u2570\\u256F</c1><c2>\\u2571</c2>\"\n ],\n \"8\": [\"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\", \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503</c1>\", \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\", \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503</c1>\", \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"],\n \"9\": [\"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\", \"<c1>\\u2503\\u2570\\u2501\\u256F\\u2503</c1>\", \"<c1>\\u2570\\u2501\\u2501\\u256E\\u2503</c1>\", \"<c1>\\u256D\\u2501\\u2501\\u256F\\u2503</c1>\", \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"],\n \"!\": [\"<c1>\\u256D\\u256E</c1>\", \"<c1>\\u2503\\u2503</c1>\", \"<c1>\\u2503\\u2503</c1>\", \"<c1>\\u2570\\u256F</c1>\", \"<c1>\\u256D\\u256E</c1>\", \"<c1>\\u2570\\u256F</c1>\"],\n \"?\": [\n \"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\",\n \"<c1>\\u2503\\u256D\\u2501\\u256E\\u2503</c1>\",\n \"<c1>\\u2570\\u256F\\u256D\\u256F\\u2503</c1>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u2503\\u256D\\u256F</c1>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u256D\\u256E</c1><c2>\\u2571</c2>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u2570\\u256F</c1><c2>\\u2571</c2>\"\n ],\n \".\": [\"<c2>\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571</c2>\", \"<c1>\\u256D\\u256E</c1>\", \"<c1>\\u2570\\u256F</c1>\"],\n \"+\": [\n \"<c2>\\u2571\\u2571\\u2571\\u2571</c2>\",\n \"<c2>\\u2571\\u2571\\u2571\\u2571</c2>\",\n \"<c2>\\u2571</c2><c1>\\u256D\\u256E</c1><c2>\\u2571</c2>\",\n \"<c1>\\u256D\\u256F\\u2570\\u256E</c1>\",\n \"<c1>\\u2570\\u256E\\u256D\\u256F</c1>\",\n \"<c2>\\u2571</c2><c1>\\u2570\\u256F</c1><c2>\\u2571</c2>\"\n ],\n \"-\": [\"<c2>\\u2571\\u2571\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571\\u2571\\u2571</c2>\", \"<c1>\\u256D\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2570\\u2501\\u2501\\u256F</c1>\", \"<c2>\\u2571\\u2571\\u2571\\u2571</c2>\"],\n _: [\"<c2>\\u2571\\u2571\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571\\u2571\\u2571</c2>\", \"<c1>\\u256D\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2570\\u2501\\u2501\\u256F</c1>\"],\n \"=\": [\"<c2>\\u2571\\u2571\\u2571\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571\\u2571\\u2571\\u2571</c2>\", \"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\", \"<c1>\\u256D\\u2501\\u2501\\u2501\\u256E</c1>\", \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"],\n \"@\": [\n \"<c1>\\u256D\\u2501\\u2501\\u2501\\u2501\\u256E</c1><c2>\\u2571</c2>\",\n \"<c1>\\u2503\\u256D\\u2501\\u2501\\u256E\\u2503</c1><c2>\\u2571</c2>\",\n \"<c1>\\u2503\\u2503\\u256D\\u2501\\u2503\\u2503</c1><c2>\\u2571</c2>\",\n \"<c1>\\u2503\\u2503\\u2570\\u256F\\u2503\\u2503</c1><c2>\\u2571</c2>\",\n \"<c1>\\u2503\\u2570\\u2501\\u2501\\u256F\\u2501\\u256E</c1>\",\n \"<c1>\\u2570\\u2501\\u2501\\u2501\\u2501\\u2501\\u256F</c1>\"\n ],\n \"#\": [\n \"<c2>\\u2571</c2><c1>\\u256D\\u2501\\u2501\\u256E</c1><c2>\\u2571</c2>\",\n \"<c1>\\u256D\\u256F\\u256D\\u256E\\u2570\\u256E</c1>\",\n \"<c1>\\u2570\\u256E\\u2503\\u2503\\u256D\\u256F</c1>\",\n \"<c1>\\u256D\\u256F\\u2503\\u2503\\u2570\\u256E</c1>\",\n \"<c1>\\u2570\\u256E\\u2570\\u256F\\u256D\\u256F</c1>\",\n \"<c2>\\u2571</c2><c1>\\u2570\\u2501\\u2501\\u256F</c1><c2>\\u2571</c2>\"\n ],\n $: [\n \"<c2>\\u2571\\u2571</c2><c1>\\u256D\\u256E</c1><c2>\\u2571</c2>\",\n \"<c1>\\u256D\\u2501\\u256F\\u2570\\u256E</c1>\",\n \"<c1>\\u2503\\u2570\\u2501\\u2501\\u256E</c1>\",\n \"<c1>\\u2570\\u2501\\u2501\\u256E\\u2503</c1>\",\n \"<c1>\\u2570\\u256E\\u256D\\u2501\\u256F</c1>\",\n \"<c2>\\u2571</c2><c1>\\u2570\\u256F</c1><c2>\\u2571\\u2571</c2>\"\n ],\n \"%\": [\n \"<c1>\\u256D\\u256E</c1><c2>\\u2571\\u2571</c2><c1>\\u256D\\u2501\\u256E</c1>\",\n \"<c1>\\u2570\\u256F</c1><c2>\\u2571</c2><c1>\\u256D\\u256F\\u256D\\u256F</c1>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u256D\\u256F\\u256D\\u256F</c1><c2>\\u2571</c2>\",\n \"<c2>\\u2571</c2><c1>\\u256D\\u256F\\u256D\\u256F</c1><c2>\\u2571\\u2571</c2>\",\n \"<c1>\\u256D\\u256F\\u256D\\u256F</c1><c2>\\u2571</c2><c1>\\u256D\\u256E</c1>\",\n \"<c1>\\u2570\\u2501\\u256F</c1><c2>\\u2571\\u2571</c2><c1>\\u2570\\u256F</c1>\"\n ],\n \"&\": [\n \"<c2>\\u2571</c2><c1>\\u256D\\u2501\\u2501\\u256E</c1>\",\n \"<c2>\\u2571</c2><c1>\\u2503\\u256D\\u2501\\u256F</c1>\",\n \"<c1>\\u256D\\u256F\\u2570\\u256E</c1><c2>\\u2571</c2>\",\n \"<c1>\\u2503\\u256D\\u256E\\u2503</c1><c2>\\u2571</c2>\",\n \"<c1>\\u2503\\u2570\\u256F\\u2503\\u256E</c1>\",\n \"<c1>\\u2570\\u2501\\u2501\\u2501\\u256F</c1>\"\n ],\n \"(\": [\n \"<c2>\\u2571\\u2571</c2><c1>\\u256D\\u2501\\u256E</c1>\",\n \"<c2>\\u2571</c2><c1>\\u256D\\u256F\\u256D\\u256F</c1>\",\n \"<c1>\\u256D\\u256F\\u256D\\u256F</c1><c2>\\u2571</c2>\",\n \"<c1>\\u2570\\u256E\\u2570\\u256E</c1><c2>\\u2571</c2>\",\n \"<c2>\\u2571</c2><c1>\\u2570\\u256E\\u2570\\u256E</c1>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u2570\\u2501\\u256F</c1>\"\n ],\n \")\": [\n \"<c1>\\u256D\\u2501\\u256E</c1><c2>\\u2571\\u2571</c2>\",\n \"<c1>\\u2570\\u256E\\u2570\\u256E</c1><c2>\\u2571</c2>\",\n \"<c2>\\u2571</c2><c1>\\u2570\\u256E\\u2570\\u256E</c1>\",\n \"<c2>\\u2571</c2><c1>\\u256D\\u256F\\u256D\\u256F</c1>\",\n \"<c1>\\u256D\\u256F\\u256D\\u256F</c1><c2>\\u2571</c2>\",\n \"<c1>\\u2570\\u2501\\u256F</c1><c2>\\u2571\\u2571</c2>\"\n ],\n \"/\": [\n \"<c2>\\u2571\\u2571\\u2571\\u2571</c2><c1>\\u256D\\u2501\\u256E</c1>\",\n \"<c2>\\u2571\\u2571\\u2571</c2><c1>\\u256D\\u256F\\u256D\\u256F</c1>\",\n \"<c2>\\u2571\\u2571</c2><c1>\\u256D\\u256F\\u256D\\u256F</c1><c2>\\u2571</c2>\",\n \"<c2>\\u2571</c2><c1>\\u256D\\u256F\\u256D\\u256F</c1><c2>\\u2571\\u2571</c2>\",\n \"<c1>\\u256D\\u256F\\u256D\\u256F</c1><c2>\\u2571\\u2571\\u2571</c2>\",\n \"<c1>\\u2570\\u2501\\u256F</c1><c2>\\u2571\\u2571\\u2571\\u2571</c2>\"\n ],\n \":\": [\"<c2>\\u2571\\u2571</c2>\", \"<c1>\\u256D\\u256E</c1>\", \"<c1>\\u2570\\u256F</c1>\", \"<c1>\\u256D\\u256E</c1>\", \"<c1>\\u2570\\u256F</c1>\", \"<c2>\\u2571\\u2571</c2>\"],\n \";\": [\"<c1>\\u256D\\u256E</c1>\", \"<c1>\\u2503\\u2503</c1>\", \"<c1>\\u2570\\u256F</c1>\", \"<c1>\\u256D\\u256E</c1>\", \"<c1>\\u2570\\u252B</c1>\", \"<c2>\\u2571</c2><c1>\\u256F</c1>\"],\n \",\": [\"<c2>\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571</c2>\", \"<c1>\\u256D\\u256E</c1>\", \"<c1>\\u2570\\u252B</c1>\", \"<c2>\\u2571</c2><c1>\\u256F</c1>\"],\n \"'\": [\"<c1>\\u256D\\u256E</c1>\", \"<c1>\\u2570\\u256F</c1>\", \"<c2>\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571</c2>\"],\n '\"': [\"<c1>\\u256D\\u256E\\u256D\\u256E</c1>\", \"<c1>\\u2570\\u256F\\u2570\\u256F</c1>\", \"<c2>\\u2571\\u2571\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571\\u2571\\u2571</c2>\"],\n \" \": [\"<c2>\\u2571\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571\\u2571</c2>\", \"<c2>\\u2571\\u2571\\u2571</c2>\"]\n }\n};\n// src/lib/fonts/tiny.json\nvar tiny_default = {\n name: \"tiny\",\n version: \"0.2.0\",\n homepage: \"https://github.com/dominikwilkowski/cfonts\",\n colors: 1,\n lines: 2,\n buffer: [\"\", \"\"],\n letterspace: [\" \", \" \"],\n letterspace_size: 1,\n chars: {\n A: [\"\\u2584\\u2580\\u2588\", \"\\u2588\\u2580\\u2588\"],\n B: [\"\\u2588\\u2584\\u2584\", \"\\u2588\\u2584\\u2588\"],\n C: [\"\\u2588\\u2580\\u2580\", \"\\u2588\\u2584\\u2584\"],\n D: [\"\\u2588\\u2580\\u2584\", \"\\u2588\\u2584\\u2580\"],\n E: [\"\\u2588\\u2580\\u2580\", \"\\u2588\\u2588\\u2584\"],\n F: [\"\\u2588\\u2580\\u2580\", \"\\u2588\\u2580 \"],\n G: [\"\\u2588\\u2580\\u2580\", \"\\u2588\\u2584\\u2588\"],\n H: [\"\\u2588 \\u2588\", \"\\u2588\\u2580\\u2588\"],\n I: [\"\\u2588\", \"\\u2588\"],\n J: [\" \\u2588\", \"\\u2588\\u2584\\u2588\"],\n K: [\"\\u2588\\u2584\\u2580\", \"\\u2588 \\u2588\"],\n L: [\"\\u2588 \", \"\\u2588\\u2584\\u2584\"],\n M: [\"\\u2588\\u2580\\u2584\\u2580\\u2588\", \"\\u2588 \\u2580 \\u2588\"],\n N: [\"\\u2588\\u2584 \\u2588\", \"\\u2588 \\u2580\\u2588\"],\n O: [\"\\u2588\\u2580\\u2588\", \"\\u2588\\u2584\\u2588\"],\n P: [\"\\u2588\\u2580\\u2588\", \"\\u2588\\u2580\\u2580\"],\n Q: [\"\\u2588\\u2580\\u2588\", \"\\u2580\\u2580\\u2588\"],\n R: [\"\\u2588\\u2580\\u2588\", \"\\u2588\\u2580\\u2584\"],\n S: [\"\\u2588\\u2580\\u2580\", \"\\u2584\\u2584\\u2588\"],\n T: [\"\\u2580\\u2588\\u2580\", \" \\u2588 \"],\n U: [\"\\u2588 \\u2588\", \"\\u2588\\u2584\\u2588\"],\n V: [\"\\u2588 \\u2588\", \"\\u2580\\u2584\\u2580\"],\n W: [\"\\u2588 \\u2588 \\u2588\", \"\\u2580\\u2584\\u2580\\u2584\\u2580\"],\n X: [\"\\u2580\\u2584\\u2580\", \"\\u2588 \\u2588\"],\n Y: [\"\\u2588\\u2584\\u2588\", \" \\u2588 \"],\n Z: [\"\\u2580\\u2588\", \"\\u2588\\u2584\"],\n \"0\": [\"\\u259E\\u2588\\u259A\", \"\\u259A\\u2588\\u259E\"],\n \"1\": [\"\\u2584\\u2588\", \" \\u2588\"],\n \"2\": [\"\\u2580\\u2588\", \"\\u2588\\u2584\"],\n \"3\": [\"\\u2580\\u2580\\u2588\", \"\\u2584\\u2588\\u2588\"],\n \"4\": [\"\\u2588 \\u2588\", \"\\u2580\\u2580\\u2588\"],\n \"5\": [\"\\u2588\\u2580\", \"\\u2584\\u2588\"],\n \"6\": [\"\\u2588\\u2584\\u2584\", \"\\u2588\\u2584\\u2588\"],\n \"7\": [\"\\u2580\\u2580\\u2588\", \" \\u2588\"],\n \"8\": [\"\\u2588\\u2588\\u2588\", \"\\u2588\\u2584\\u2588\"],\n \"9\": [\"\\u2588\\u2580\\u2588\", \"\\u2580\\u2580\\u2588\"],\n \"!\": [\"\\u2588\", \"\\u2584\"],\n \"?\": [\"\\u2580\\u2588\", \" \\u2584\"],\n \".\": [\" \", \"\\u2584\"],\n \"+\": [\"\\u2584\\u2588\\u2584\", \" \\u2580 \"],\n \"-\": [\"\\u2584\\u2584\", \" \"],\n _: [\" \", \"\\u2584\\u2584\"],\n \"=\": [\"\\u2580\\u2580\", \"\\u2580\\u2580\"],\n \"@\": [\"\\u259B\\u2588\\u259C\", \"\\u2599\\u259F\\u2583\"],\n \"#\": [\"\\u259F\\u2584\\u2599\", \"\\u259C\\u2580\\u259B\"],\n $: [\"\\u2596\\u2588\\u2597\", \"\\u2598\\u2588\\u259D\"],\n \"%\": [\"\\u2580 \\u2584\\u2580\", \"\\u2584\\u2580 \\u2584\"],\n \"&\": [\"\\u2584\\u2584\\u2588\", \"\\u2588\\u2584\\u2588\"],\n \"(\": [\"\\u2584\\u2580\", \"\\u2580\\u2584\"],\n \")\": [\"\\u2580\\u2584\", \"\\u2584\\u2580\"],\n \"/\": [\" \\u2584\\u2580\", \"\\u2584\\u2580 \"],\n \":\": [\"\\u2580\", \"\\u2584\"],\n \";\": [\" \", \"\\u2584\\u2580\"],\n \",\": [\" \", \"\\u2588\"],\n \"'\": [\"\\u2580\", \" \"],\n '\"': [\"\\u259B \\u259C\", \" \"],\n \" \": [\" \", \" \"]\n }\n};\n// src/lib/fonts/huge.json\nvar huge_default = {\n name: \"huge\",\n version: \"0.2.0\",\n homepage: \"https://github.com/dominikwilkowski/cfonts\",\n colors: 2,\n lines: 11,\n buffer: [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"],\n letterspace: [\" \", \" \", \" \", \" \", \" \", \" \", \" \", \" \", \" \", \" \", \" \"],\n letterspace_size: 1,\n chars: {\n A: [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580 \\u2580</c1> \"\n ],\n B: [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n C: [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n D: [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n E: [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n F: [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580</c1> \"\n ],\n G: [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n H: [\n \" <c1>\\u2584 \\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580 \\u2580</c1> \"\n ],\n I: [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n J: [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n K: [\n \" <c1>\\u2584 \\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580 \\u2580</c1> \"\n ],\n L: [\n \" <c1>\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n M: [\n \" <c1>\\u2584\\u2584 \\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2580 \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580 \\u2580</c1> \"\n ],\n N: [\n \" <c1>\\u2584\\u2584 \\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580 \\u2580\\u2580</c1> \"\n ],\n O: [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n P: [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580</c1> \"\n ],\n Q: [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580</c1> \"\n ],\n R: [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580 \\u2580</c1> \"\n ],\n S: [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n T: [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580</c1> \"\n ],\n U: [\n \" <c1>\\u2584 \\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n V: [\n \" <c1>\\u2584 \\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580</c1> \"\n ],\n W: [\n \" <c1>\\u2584 \\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2584 \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580 \\u2580\\u2580</c1> \"\n ],\n X: [\n \" <c1>\\u2584 \\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580 \\u2580</c1> \"\n ],\n Y: [\n \" <c1>\\u2584 \\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580</c1> \"\n ],\n Z: [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n \"0\": [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n \"1\": [\n \" <c1>\\u2584\\u2584\\u2584\\u2584</c1> \",\n \" <c1>\\u2584\\u2588</c1><c2>\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580\\u2580 \\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n \"2\": [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n \"3\": [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n \"4\": [\n \" <c1>\\u2584 \\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580</c1> \"\n ],\n \"5\": [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n \"6\": [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n \"7\": [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580</c1> \"\n ],\n \"8\": [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n \"9\": [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n \"!\": [\n \" <c1>\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580</c1> \",\n \" <c1>\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580</c1> \"\n ],\n \"?\": [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \" <c1>\\u2584\\u2588</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u2588\\u2584</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580 \\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2584\\u2588</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u2588</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C\\u2580\\u2580\\u2580\\u2580</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580\\u2580</c1> \",\n \" <c1>\\u2584\\u2584</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580\\u2580</c1> \"\n ],\n \".\": [\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" <c1>\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580</c1> \"\n ],\n \"+\": [\n \" \",\n \" \",\n \" <c1>\\u2584\\u2584</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2584\\u2584\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u2588\\u2580\\u2580</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580\\u2580</c1> \",\n \" \",\n \" \"\n ],\n \"-\": [\n \" \",\n \" \",\n \" \",\n \" \",\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \",\n \" \",\n \" \",\n \" \",\n \" \"\n ],\n _: [\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \",\n \" \"\n ],\n \"=\": [\n \" \",\n \" \",\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \",\n \" \",\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \",\n \" \",\n \" \"\n ],\n \"@\": [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2584\\u2584\\u2584\\u2584 \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2588</c1><c2>\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u2588 \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2591</c2><c1>\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2588</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C\\u2584\\u2584\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n \"#\": [\n \" <c1>\\u2584 \\u2584</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2580</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2580</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580 \\u2580</c1> \"\n ],\n $: [\n \" <c1>\\u2584</c1> \",\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580</c1> \",\n \" <c1>\\u2580</c1> \"\n ],\n \"%\": [\n \" <c1>\\u2584</c1> \",\n \" <c1>\\u2584 \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580 \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2584</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2580</c1> \",\n \" <c1>\\u2580</c1> \"\n ],\n \"&\": [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591</c2><c1>\\u258C \\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C \\u2590</c1><c2>\\u2591</c2><c1>\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580\\u2580 \\u2580</c1> \"\n ],\n \"(\": [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u2588\\u2580\\u2580\\u2580</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u2588\\u2584\\u2584\\u2584</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n \")\": [\n \" <c1>\\u2584\\u2584\\u2584\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580\\u2580\\u2580\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2584\\u2584\\u2584\\u2588</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591\\u2591\\u2591\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580\\u2580\\u2580\\u2580\\u2580</c1> \"\n ],\n \"/\": [\n \" <c1>\\u2584</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u258C</c1> \",\n \" <c1>\\u2580</c1> \"\n ],\n \":\": [\n \" \",\n \" \",\n \" <c1>\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580</c1> \",\n \" \",\n \" <c1>\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580</c1> \",\n \" \",\n \" \"\n ],\n \";\": [\n \" \",\n \" \",\n \" <c1>\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u2580</c1> \",\n \" \",\n \" <c1>\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u258C</c1> \",\n \" <c1>\\u2580</c1> \",\n \" \"\n ],\n \",\": [\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" <c1>\\u2584\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591\\u2591</c2><c1>\\u258C</c1>\",\n \" <c1>\\u2580\\u258C</c1> \",\n \" <c1>\\u2580</c1> \"\n ],\n \"'\": [\n \" <c1>\\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2590</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2590</c1>\",\n \" <c1>\\u2580</c1> \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \"\n ],\n '\"': [\n \" <c1>\\u2584 \\u2584</c1> \",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2590\\u2590</c1><c2>\\u2591</c2><c1>\\u2590</c1>\",\n \"<c1>\\u2590</c1><c2>\\u2591</c2><c1>\\u2590\\u2590</c1><c2>\\u2591</c2><c1>\\u2590</c1>\",\n \" <c1>\\u2580 \\u2580</c1> \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \"\n ],\n \" \": [\" \", \" \", \" \", \" \", \" \", \" \", \" \", \" \", \" \", \" \", \" \"]\n }\n};\n// src/lib/fonts/grid.json\nvar grid_default = {\n name: \"grid\",\n version: \"0.1.0\",\n homepage: \"https://github.com/dominikwilkowski/cfonts\",\n colors: 2,\n lines: 6,\n buffer: [\"\", \"\", \"\", \"\", \"\", \"\"],\n letterspace: [\"<c2>\\u254B</c2>\", \"<c2>\\u254B</c2>\", \"<c2>\\u254B</c2>\", \"<c2>\\u254B</c2>\", \"<c2>\\u254B</c2>\", \"<c2>\\u254B</c2>\"],\n letterspace_size: 1,\n chars: {\n A: [\"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2503\\u250F\\u2513\\u2503</c1>\", \"<c1>\\u2503\\u250F\\u2513\\u2503</c1>\", \"<c1>\\u2517\\u251B\\u2517\\u251B</c1>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"],\n B: [\n \"<c1>\\u250F\\u2513</c1><c2>\\u254B\\u254B</c2>\",\n \"<c1>\\u2503\\u2517\\u2501\\u2513</c1>\",\n \"<c1>\\u2503\\u250F\\u2513\\u2503</c1>\",\n \"<c1>\\u2503\\u2517\\u251B\\u2503</c1>\",\n \"<c1>\\u2517\\u2501\\u2501\\u251B</c1>\",\n \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"\n ],\n C: [\"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2503\\u250F\\u2501\\u251B</c1>\", \"<c1>\\u2503\\u2517\\u2501\\u2513</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u251B</c1>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"],\n D: [\n \"<c2>\\u254B\\u254B</c2><c1>\\u250F\\u2513</c1>\",\n \"<c1>\\u250F\\u2501\\u251B\\u2503</c1>\",\n \"<c1>\\u2503\\u250F\\u2513\\u2503</c1>\",\n \"<c1>\\u2503\\u2517\\u251B\\u2503</c1>\",\n \"<c1>\\u2517\\u2501\\u2501\\u251B</c1>\",\n \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"\n ],\n E: [\"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2503\\u2503\\u2501\\u252B</c1>\", \"<c1>\\u2503\\u2503\\u2501\\u252B</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u251B</c1>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"],\n F: [\n \"<c2>\\u254B</c2><c1>\\u250F\\u2501\\u2513</c1>\",\n \"<c1>\\u250F\\u251B\\u2517\\u2513</c1>\",\n \"<c1>\\u2517\\u2513\\u250F\\u251B</c1>\",\n \"<c2>\\u254B</c2><c1>\\u2503\\u2503</c1><c2>\\u254B</c2>\",\n \"<c2>\\u254B</c2><c1>\\u2517\\u251B</c1><c2>\\u254B</c2>\",\n \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"\n ],\n G: [\"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2503\\u250F\\u2513\\u2503</c1>\", \"<c1>\\u2503\\u2517\\u251B\\u2503</c1>\", \"<c1>\\u2517\\u2501\\u2513\\u2503</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u251B</c1>\"],\n H: [\n \"<c1>\\u250F\\u2513</c1><c2>\\u254B\\u254B</c2>\",\n \"<c1>\\u2503\\u2517\\u2501\\u2513</c1>\",\n \"<c1>\\u2503\\u250F\\u2513\\u2503</c1>\",\n \"<c1>\\u2503\\u2503\\u2503\\u2503</c1>\",\n \"<c1>\\u2517\\u251B\\u2517\\u251B</c1>\",\n \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"\n ],\n I: [\"<c1>\\u250F\\u2513</c1>\", \"<c1>\\u2517\\u251B</c1>\", \"<c1>\\u250F\\u2513</c1>\", \"<c1>\\u2503\\u2503</c1>\", \"<c1>\\u2517\\u251B</c1>\", \"<c2>\\u254B\\u254B</c2>\"],\n J: [\n \"<c2>\\u254B</c2><c1>\\u250F\\u2513</c1>\",\n \"<c2>\\u254B</c2><c1>\\u2517\\u251B</c1>\",\n \"<c2>\\u254B</c2><c1>\\u250F\\u2513</c1>\",\n \"<c2>\\u254B</c2><c1>\\u2503\\u2503</c1>\",\n \"<c1>\\u250F\\u251B\\u2503</c1>\",\n \"<c1>\\u2517\\u2501\\u251B</c1>\"\n ],\n K: [\n \"<c1>\\u250F\\u2513</c1><c2>\\u254B\\u254B</c2>\",\n \"<c1>\\u2503\\u2503\\u250F\\u2513</c1>\",\n \"<c1>\\u2503\\u2517\\u251B\\u251B</c1>\",\n \"<c1>\\u2503\\u250F\\u2513\\u2513</c1>\",\n \"<c1>\\u2517\\u251B\\u2517\\u251B</c1>\",\n \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"\n ],\n L: [\n \"<c1>\\u250F\\u2513</c1><c2>\\u254B</c2>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u254B</c2>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u254B</c2>\",\n \"<c1>\\u2503\\u2517\\u2513</c1>\",\n \"<c1>\\u2517\\u2501\\u251B</c1>\",\n \"<c2>\\u254B\\u254B\\u254B</c2>\"\n ],\n M: [\"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2513\\u250F\\u2513</c1>\", \"<c1>\\u2503\\u2517\\u251B\\u2503</c1>\", \"<c1>\\u2503\\u2503\\u2503\\u2503</c1>\", \"<c1>\\u2517\\u253B\\u253B\\u251B</c1>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"],\n N: [\n \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\",\n \"<c1>\\u250F\\u2501\\u2513</c1><c2>\\u254B</c2>\",\n \"<c1>\\u2503\\u250F\\u2513\\u2513</c1>\",\n \"<c1>\\u2503\\u2503\\u2503\\u2503</c1>\",\n \"<c1>\\u2517\\u251B\\u2517\\u251B</c1>\",\n \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"\n ],\n O: [\"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2503\\u250F\\u2513\\u2503</c1>\", \"<c1>\\u2503\\u2517\\u251B\\u2503</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u251B</c1>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"],\n P: [\n \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\",\n \"<c1>\\u250F\\u2501\\u2501\\u2513</c1>\",\n \"<c1>\\u2503\\u250F\\u2513\\u2503</c1>\",\n \"<c1>\\u2503\\u2517\\u251B\\u2503</c1>\",\n \"<c1>\\u2503\\u250F\\u2501\\u251B</c1>\",\n \"<c1>\\u2517\\u251B</c1><c2>\\u254B\\u254B</c2>\"\n ],\n Q: [\n \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\",\n \"<c1>\\u250F\\u2501\\u2501\\u2513</c1>\",\n \"<c1>\\u2503\\u250F\\u2513\\u2503</c1>\",\n \"<c1>\\u2503\\u2517\\u251B\\u2503</c1>\",\n \"<c1>\\u2517\\u2501\\u2513\\u2503</c1>\",\n \"<c2>\\u254B\\u254B</c2><c1>\\u2517\\u251B</c1>\"\n ],\n R: [\n \"<c2>\\u254B\\u254B\\u254B</c2>\",\n \"<c1>\\u250F\\u2501\\u2513</c1>\",\n \"<c1>\\u2503\\u250F\\u251B</c1>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u254B</c2>\",\n \"<c1>\\u2517\\u251B</c1><c2>\\u254B</c2>\",\n \"<c2>\\u254B\\u254B\\u254B</c2>\"\n ],\n S: [\"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2503\\u2501\\u2501\\u252B</c1>\", \"<c1>\\u2523\\u2501\\u2501\\u2503</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u251B</c1>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"],\n T: [\n \"<c2>\\u254B</c2><c1>\\u250F\\u2513</c1><c2>\\u254B</c2>\",\n \"<c1>\\u250F\\u251B\\u2517\\u2513</c1>\",\n \"<c1>\\u2517\\u2513\\u250F\\u251B</c1>\",\n \"<c2>\\u254B</c2><c1>\\u2503\\u2517\\u2513</c1>\",\n \"<c2>\\u254B</c2><c1>\\u2517\\u2501\\u251B</c1>\",\n \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"\n ],\n U: [\"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2513\\u250F\\u2513</c1>\", \"<c1>\\u2503\\u2503\\u2503\\u2503</c1>\", \"<c1>\\u2503\\u2517\\u251B\\u2503</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u251B</c1>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"],\n V: [\n \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\",\n \"<c1>\\u250F\\u2513\\u250F\\u2513</c1>\",\n \"<c1>\\u2503\\u2517\\u251B\\u2503</c1>\",\n \"<c1>\\u2517\\u2513\\u250F\\u251B</c1>\",\n \"<c2>\\u254B</c2><c1>\\u2517\\u251B</c1><c2>\\u254B</c2>\",\n \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"\n ],\n W: [\n \"<c2>\\u254B\\u254B\\u254B\\u254B\\u254B\\u254B</c2>\",\n \"<c1>\\u250F\\u2513\\u250F\\u2513\\u250F\\u2513</c1>\",\n \"<c1>\\u2503\\u2517\\u251B\\u2517\\u251B\\u2503</c1>\",\n \"<c1>\\u2517\\u2513\\u250F\\u2513\\u250F\\u251B</c1>\",\n \"<c2>\\u254B</c2><c1>\\u2517\\u251B\\u2517\\u251B</c1><c2>\\u254B</c2>\",\n \"<c2>\\u254B\\u254B\\u254B\\u254B\\u254B\\u254B</c2>\"\n ],\n X: [\"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2513\\u250F\\u2513</c1>\", \"<c1>\\u2517\\u254B\\u254B\\u251B</c1>\", \"<c1>\\u250F\\u254B\\u254B\\u2513</c1>\", \"<c1>\\u2517\\u251B\\u2517\\u251B</c1>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"],\n Y: [\n \"<c2>\\u254B\\u254B\\u254B\\u254B\\u254B</c2>\",\n \"<c1>\\u250F\\u2513</c1><c2>\\u254B</c2><c1>\\u250F\\u2513</c1>\",\n \"<c1>\\u2503\\u2517\\u2501\\u251B\\u2503</c1>\",\n \"<c1>\\u2517\\u2501\\u2513\\u250F\\u251B</c1>\",\n \"<c1>\\u2517\\u2501\\u2501\\u251B</c1><c2>\\u254B</c2>\",\n \"<c2>\\u254B\\u254B\\u254B\\u254B\\u254B</c2>\"\n ],\n Z: [\"<c2>\\u254B\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2501\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2523\\u2501\\u2501\\u2503\\u2503</c1>\", \"<c1>\\u2503\\u2503\\u2501\\u2501\\u252B</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u2501\\u251B</c1>\", \"<c2>\\u254B\\u254B\\u254B\\u254B\\u254B</c2>\"],\n \"0\": [\"<c1>\\u250F\\u2501\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2503\\u250F\\u2501\\u2513\\u2503</c1>\", \"<c1>\\u2503\\u2503\\u2503\\u2503\\u2503</c1>\", \"<c1>\\u2503\\u2503\\u2503\\u2503\\u2503</c1>\", \"<c1>\\u2503\\u2517\\u2501\\u251B\\u2503</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u2501\\u251B</c1>\"],\n \"1\": [\n \"<c2>\\u254B</c2><c1>\\u250F\\u2513</c1><c2>\\u254B</c2>\",\n \"<c1>\\u250F\\u251B\\u2503</c1><c2>\\u254B</c2>\",\n \"<c1>\\u2517\\u2513\\u2503</c1><c2>\\u254B</c2>\",\n \"<c2>\\u254B</c2><c1>\\u2503\\u2503</c1><c2>\\u254B</c2>\",\n \"<c1>\\u250F\\u251B\\u2517\\u2513</c1>\",\n \"<c1>\\u2517\\u2501\\u2501\\u251B</c1>\"\n ],\n \"2\": [\"<c1>\\u250F\\u2501\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2503\\u250F\\u2501\\u2513\\u2503</c1>\", \"<c1>\\u2517\\u251B\\u250F\\u251B\\u2503</c1>\", \"<c1>\\u250F\\u2501\\u251B\\u250F\\u251B</c1>\", \"<c1>\\u2503\\u2517\\u2501\\u253B\\u2513</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u2501\\u251B</c1>\"],\n \"3\": [\"<c1>\\u250F\\u2501\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2503\\u250F\\u2501\\u2513\\u2503</c1>\", \"<c1>\\u2517\\u251B\\u250F\\u251B\\u2503</c1>\", \"<c1>\\u250F\\u2513\\u2517\\u2513\\u2503</c1>\", \"<c1>\\u2503\\u2517\\u2501\\u251B\\u2503</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u2501\\u251B</c1>\"],\n \"4\": [\n \"<c1>\\u250F\\u2513</c1><c2>\\u254B</c2><c1>\\u250F\\u2513</c1>\",\n \"<c1>\\u2503\\u2503</c1><c2>\\u254B</c2><c1>\\u2503\\u2503</c1>\",\n \"<c1>\\u2503\\u2517\\u2501\\u251B\\u2503</c1>\",\n \"<c1>\\u2517\\u2501\\u2501\\u2513\\u2503</c1>\",\n \"<c2>\\u254B\\u254B\\u254B</c2><c1>\\u2503\\u2503</c1>\",\n \"<c2>\\u254B\\u254B\\u254B</c2><c1>\\u2517\\u251B</c1>\"\n ],\n \"5\": [\"<c1>\\u250F\\u2501\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2503\\u250F\\u2501\\u2501\\u251B</c1>\", \"<c1>\\u2503\\u2517\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u2513\\u2503</c1>\", \"<c1>\\u250F\\u2501\\u2501\\u251B\\u2503</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u2501\\u251B</c1>\"],\n \"6\": [\"<c1>\\u250F\\u2501\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2503\\u250F\\u2501\\u2501\\u251B</c1>\", \"<c1>\\u2503\\u2517\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2503\\u250F\\u2501\\u2513\\u2503</c1>\", \"<c1>\\u2503\\u2517\\u2501\\u251B\\u2503</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u2501\\u251B</c1>\"],\n \"7\": [\n \"<c1>\\u250F\\u2501\\u2501\\u2501\\u2513</c1>\",\n \"<c1>\\u2503\\u250F\\u2501\\u2513\\u2503</c1>\",\n \"<c1>\\u2517\\u251B\\u250F\\u251B\\u2503</c1>\",\n \"<c2>\\u254B\\u254B</c2><c1>\\u2503\\u250F\\u251B</c1>\",\n \"<c2>\\u254B\\u254B</c2><c1>\\u2503\\u2503</c1><c2>\\u254B</c2>\",\n \"<c2>\\u254B\\u254B</c2><c1>\\u2517\\u251B</c1><c2>\\u254B</c2>\"\n ],\n \"8\": [\"<c1>\\u250F\\u2501\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2503\\u250F\\u2501\\u2513\\u2503</c1>\", \"<c1>\\u2503\\u2517\\u2501\\u251B\\u2503</c1>\", \"<c1>\\u2503\\u250F\\u2501\\u2513\\u2503</c1>\", \"<c1>\\u2503\\u2517\\u2501\\u251B\\u2503</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u2501\\u251B</c1>\"],\n \"9\": [\"<c1>\\u250F\\u2501\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2503\\u250F\\u2501\\u2513\\u2503</c1>\", \"<c1>\\u2503\\u2517\\u2501\\u251B\\u2503</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u2513\\u2503</c1>\", \"<c1>\\u250F\\u2501\\u2501\\u251B\\u2503</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u2501\\u251B</c1>\"],\n \"!\": [\"<c1>\\u250F\\u2513</c1>\", \"<c1>\\u2503\\u2503</c1>\", \"<c1>\\u2503\\u2503</c1>\", \"<c1>\\u2517\\u251B</c1>\", \"<c1>\\u250F\\u2513</c1>\", \"<c1>\\u2517\\u251B</c1>\"],\n \"?\": [\n \"<c1>\\u250F\\u2501\\u2501\\u2501\\u2513</c1>\",\n \"<c1>\\u2503\\u250F\\u2501\\u2513\\u2503</c1>\",\n \"<c1>\\u2517\\u251B\\u250F\\u251B\\u2503</c1>\",\n \"<c2>\\u254B\\u254B</c2><c1>\\u2503\\u250F\\u251B</c1>\",\n \"<c2>\\u254B\\u254B</c2><c1>\\u250F\\u2513</c1><c2>\\u254B</c2>\",\n \"<c2>\\u254B\\u254B</c2><c1>\\u2517\\u251B</c1><c2>\\u254B</c2>\"\n ],\n \".\": [\"<c2>\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2513</c1>\", \"<c1>\\u2517\\u251B</c1>\"],\n \"+\": [\n \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\",\n \"<c2>\\u254B</c2><c1>\\u250F\\u2513</c1><c2>\\u254B</c2>\",\n \"<c1>\\u250F\\u251B\\u2517\\u2513</c1>\",\n \"<c1>\\u2517\\u2513\\u250F\\u251B</c1>\",\n \"<c2>\\u254B</c2><c1>\\u2517\\u251B</c1><c2>\\u254B</c2>\",\n \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"\n ],\n \"-\": [\"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u251B</c1>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"],\n _: [\"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u251B</c1>\"],\n \"=\": [\"<c2>\\u254B\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2501\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u2501\\u251B</c1>\", \"<c1>\\u250F\\u2501\\u2501\\u2501\\u2513</c1>\", \"<c1>\\u2517\\u2501\\u2501\\u2501\\u251B</c1>\", \"<c2>\\u254B\\u254B\\u254B\\u254B\\u254B</c2>\"],\n \"@\": [\n \"<c1>\\u250F\\u2501\\u2501\\u2501\\u2501\\u2513</c1><c2>\\u254B</c2>\",\n \"<c1>\\u2503\\u250F\\u2501\\u2501\\u2513\\u2503</c1><c2>\\u254B</c2>\",\n \"<c1>\\u2503\\u2503\\u250F\\u2501\\u2503\\u2503</c1><c2>\\u254B</c2>\",\n \"<c1>\\u2503\\u2503\\u2517\\u251B\\u2503\\u2503</c1><c2>\\u254B</c2>\",\n \"<c1>\\u2503\\u2517\\u2501\\u2501\\u251B\\u2517\\u2513</c1>\",\n \"<c1>\\u2517\\u2501\\u2501\\u2501\\u2501\\u2501\\u251B</c1>\"\n ],\n \"#\": [\n \"<c2>\\u254B</c2><c1>\\u250F\\u2501\\u2501\\u2501\\u2513</c1><c2>\\u254B</c2>\",\n \"<c1>\\u250F\\u251B\\u250F\\u2501\\u2513\\u2517\\u2513</c1>\",\n \"<c1>\\u2517\\u2513\\u2503\\u2503\\u2503\\u250F\\u251B</c1>\",\n \"<c1>\\u250F\\u251B\\u2503\\u2503\\u2503\\u2517\\u2513</c1>\",\n \"<c1>\\u2517\\u2513\\u2517\\u2501\\u251B\\u250F\\u251B</c1>\",\n \"<c2>\\u254B</c2><c1>\\u2517\\u2501\\u2501\\u2501\\u251B</c1><c2>\\u254B</c2>\"\n ],\n $: [\n \"<c2>\\u254B</c2><c1>\\u250F\\u2513</c1><c2>\\u254B</c2>\",\n \"<c1>\\u250F\\u251B\\u2517\\u2513</c1>\",\n \"<c1>\\u2503\\u2501\\u2501\\u252B</c1>\",\n \"<c1>\\u2523\\u2501\\u2501\\u2503</c1>\",\n \"<c1>\\u2517\\u2513\\u250F\\u251B</c1>\",\n \"<c2>\\u254B</c2><c1>\\u2517\\u251B</c1><c2>\\u254B</c2>\"\n ],\n \"%\": [\n \"<c1>\\u250F\\u2513</c1><c2>\\u254B\\u254B</c2><c1>\\u250F\\u2501\\u2513</c1>\",\n \"<c1>\\u2517\\u251B</c1><c2>\\u254B</c2><c1>\\u250F\\u251B\\u250F\\u251B</c1>\",\n \"<c2>\\u254B\\u254B</c2><c1>\\u250F\\u251B\\u250F\\u251B</c1><c2>\\u254B</c2>\",\n \"<c2>\\u254B</c2><c1>\\u250F\\u251B\\u250F\\u251B</c1><c2>\\u254B\\u254B</c2>\",\n \"<c1>\\u250F\\u251B\\u250F\\u251B</c1><c2>\\u254B</c2><c1>\\u250F\\u2513</c1>\",\n \"<c1>\\u2517\\u2501\\u251B</c1><c2>\\u254B\\u254B</c2><c1>\\u2517\\u251B</c1>\"\n ],\n \"&\": [\n \"<c2>\\u254B\\u254B</c2><c1>\\u250F\\u2513</c1><c2>\\u254B</c2>\",\n \"<c2>\\u254B\\u254B</c2><c1>\\u2503\\u2503</c1><c2>\\u254B</c2>\",\n \"<c1>\\u250F\\u2501\\u251B\\u2517\\u2513</c1>\",\n \"<c1>\\u2503\\u250F\\u2513\\u250F\\u251B</c1>\",\n \"<c1>\\u2503\\u2517\\u251B\\u2503</c1><c2>\\u254B</c2>\",\n \"<c1>\\u2517\\u2501\\u2501\\u251B</c1><c2>\\u254B</c2>\"\n ],\n \"(\": [\n \"<c2>\\u254B\\u254B</c2><c1>\\u250F\\u2501\\u2513</c1>\",\n \"<c2>\\u254B</c2><c1>\\u250F\\u251B\\u250F\\u251B</c1>\",\n \"<c1>\\u250F\\u251B\\u250F\\u251B</c1><c2>\\u254B</c2>\",\n \"<c1>\\u2517\\u2513\\u2517\\u2513</c1><c2>\\u254B</c2>\",\n \"<c2>\\u254B</c2><c1>\\u2517\\u2513\\u2517\\u2513</c1>\",\n \"<c2>\\u254B\\u254B</c2><c1>\\u2517\\u2501\\u251B</c1>\"\n ],\n \")\": [\n \"<c1>\\u250F\\u2501\\u2513</c1><c2>\\u254B\\u254B</c2>\",\n \"<c1>\\u2517\\u2513\\u2517\\u2513</c1><c2>\\u254B</c2>\",\n \"<c2>\\u254B</c2><c1>\\u2517\\u2513\\u2517\\u2513</c1>\",\n \"<c2>\\u254B</c2><c1>\\u250F\\u251B\\u250F\\u251B</c1>\",\n \"<c1>\\u250F\\u251B\\u250F\\u251B</c1><c2>\\u254B</c2>\",\n \"<c1>\\u2517\\u2501\\u251B</c1><c2>\\u254B\\u254B</c2>\"\n ],\n \"/\": [\n \"<c2>\\u254B\\u254B\\u254B\\u254B</c2><c1>\\u250F\\u2501\\u2513</c1>\",\n \"<c2>\\u254B\\u254B\\u254B</c2><c1>\\u250F\\u251B\\u250F\\u251B</c1>\",\n \"<c2>\\u254B\\u254B</c2><c1>\\u250F\\u251B\\u250F\\u251B</c1><c2>\\u254B</c2>\",\n \"<c2>\\u254B</c2><c1>\\u250F\\u251B\\u250F\\u251B</c1><c2>\\u254B\\u254B</c2>\",\n \"<c1>\\u250F\\u251B\\u250F\\u251B</c1><c2>\\u254B\\u254B\\u254B</c2>\",\n \"<c1>\\u2517\\u2501\\u251B</c1><c2>\\u254B\\u254B\\u254B\\u254B</c2>\"\n ],\n \":\": [\"<c2>\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2513</c1>\", \"<c1>\\u2517\\u251B</c1>\", \"<c1>\\u250F\\u2513</c1>\", \"<c1>\\u2517\\u251B</c1>\", \"<c2>\\u254B\\u254B</c2>\"],\n \";\": [\"<c2>\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2513</c1>\", \"<c1>\\u2517\\u251B</c1>\", \"<c2>\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2513</c1>\", \"<c1>\\u2517\\u252B</c1>\"],\n \",\": [\"<c2>\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B</c2>\", \"<c1>\\u250F\\u2513</c1>\", \"<c1>\\u2517\\u252B</c1>\"],\n \"'\": [\"<c1>\\u250F\\u2513</c1>\", \"<c1>\\u2517\\u251B</c1>\", \"<c2>\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B</c2>\"],\n '\"': [\"<c1>\\u250F\\u2513\\u250F\\u2513</c1>\", \"<c1>\\u2517\\u251B\\u2517\\u251B</c1>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B\\u254B\\u254B</c2>\"],\n \" \": [\"<c2>\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B</c2>\", \"<c2>\\u254B\\u254B</c2>\"]\n }\n};\n// src/lib/fonts/pallet.json\nvar pallet_default = {\n name: \"pallet\",\n version: \"0.1.0\",\n homepage: \"https://github.com/dominikwilkowski/cfonts\",\n colors: 2,\n lines: 6,\n buffer: [\"\", \"\", \"\", \"\", \"\", \"\"],\n letterspace: [\"<c2>\\u2500</c2>\", \"<c2>\\u2500</c2>\", \"<c2>\\u2500</c2>\", \"<c2>\\u2500</c2>\", \"<c2>\\u2500</c2>\", \"<c2>\\u2500</c2>\"],\n letterspace_size: 1,\n chars: {\n A: [\n \"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\",\n \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500</c2><c1>\\u2551\\u2551</c1>\",\n \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\",\n \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\",\n \"<c1>\\u255A\\u255D</c1><c2>\\u2500</c2><c1>\\u255A\\u255D</c1>\"\n ],\n B: [\n \"<c1>\\u2554\\u2550\\u2550\\u2557</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2551\\u2554\\u2557\\u2551</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2551\\u255A\\u255D\\u255A\\u2557</c1>\",\n \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\",\n \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\",\n \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\"\n ],\n C: [\n \"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\",\n \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500</c2><c1>\\u255A\\u255D</c1>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500</c2><c1>\\u2554\\u2557</c1>\",\n \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\",\n \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\"\n ],\n D: [\n \"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\",\n \"<c1>\\u255A\\u2557\\u2554\\u2557\\u2551</c1>\",\n \"<c2>\\u2500</c2><c1>\\u2551\\u2551\\u2551\\u2551</c1>\",\n \"<c2>\\u2500</c2><c1>\\u2551\\u2551\\u2551\\u2551</c1>\",\n \"<c1>\\u2554\\u255D\\u255A\\u255D\\u2551</c1>\",\n \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\"\n ],\n E: [\"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u2551\\u2554\\u2550\\u2550\\u255D</c1>\", \"<c1>\\u2551\\u255A\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u2551\\u2554\\u2550\\u2550\\u255D</c1>\", \"<c1>\\u2551\\u255A\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\"],\n F: [\n \"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\",\n \"<c1>\\u2551\\u2554\\u2550\\u2550\\u255D</c1>\",\n \"<c1>\\u2551\\u255A\\u2550\\u2550\\u2557</c1>\",\n \"<c1>\\u2551\\u2554\\u2550\\u2550\\u255D</c1>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500\\u2500\\u2500</c2>\",\n \"<c1>\\u255A\\u255D</c1><c2>\\u2500\\u2500\\u2500</c2>\"\n ],\n G: [\n \"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\",\n \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500</c2><c1>\\u255A\\u255D</c1>\",\n \"<c1>\\u2551\\u2551\\u2554\\u2550\\u2557</c1>\",\n \"<c1>\\u2551\\u255A\\u2569\\u2550\\u2551</c1>\",\n \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\"\n ],\n H: [\n \"<c1>\\u2554\\u2557</c1><c2>\\u2500</c2><c1>\\u2554\\u2557</c1>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500</c2><c1>\\u2551\\u2551</c1>\",\n \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\",\n \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500</c2><c1>\\u2551\\u2551</c1>\",\n \"<c1>\\u255A\\u255D</c1><c2>\\u2500</c2><c1>\\u255A\\u255D</c1>\"\n ],\n I: [\n \"<c1>\\u2554\\u2550\\u2550\\u2557</c1>\",\n \"<c1>\\u255A\\u2563\\u2560\\u255D</c1>\",\n \"<c2>\\u2500</c2><c1>\\u2551\\u2551</c1><c2>\\u2500</c2>\",\n \"<c2>\\u2500</c2><c1>\\u2551\\u2551</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2554\\u2563\\u2560\\u2557</c1>\",\n \"<c1>\\u255A\\u2550\\u2550\\u255D</c1>\"\n ],\n J: [\n \"<c2>\\u2500\\u2500</c2><c1>\\u2554\\u2557</c1>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u2551\\u2551</c1>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u2551\\u2551</c1>\",\n \"<c1>\\u2554\\u2557\\u2551\\u2551</c1>\",\n \"<c1>\\u2551\\u255A\\u255D\\u2551</c1>\",\n \"<c1>\\u255A\\u2550\\u2550\\u255D</c1>\"\n ],\n K: [\n \"<c1>\\u2554\\u2557\\u2554\\u2550\\u2557</c1>\",\n \"<c1>\\u2551\\u2551\\u2551\\u2554\\u255D</c1>\",\n \"<c1>\\u2551\\u255A\\u255D\\u255D</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2551\\u2554\\u2557\\u2551</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2551\\u2551\\u2551\\u255A\\u2557</c1>\",\n \"<c1>\\u255A\\u255D\\u255A\\u2550\\u255D</c1>\"\n ],\n L: [\n \"<c1>\\u2554\\u2557</c1><c2>\\u2500\\u2500\\u2500</c2>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500\\u2500\\u2500</c2>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500\\u2500\\u2500</c2>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500</c2><c1>\\u2554\\u2557</c1>\",\n \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\",\n \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\"\n ],\n M: [\n \"<c1>\\u2554\\u2550\\u2557\\u2554\\u2550\\u2557</c1>\",\n \"<c1>\\u2551\\u2551\\u255A\\u255D\\u2551\\u2551</c1>\",\n \"<c1>\\u2551\\u2554\\u2557\\u2554\\u2557\\u2551</c1>\",\n \"<c1>\\u2551\\u2551\\u2551\\u2551\\u2551\\u2551</c1>\",\n \"<c1>\\u2551\\u2551\\u2551\\u2551\\u2551\\u2551</c1>\",\n \"<c1>\\u255A\\u255D\\u255A\\u255D\\u255A\\u255D</c1>\"\n ],\n N: [\n \"<c1>\\u2554\\u2550\\u2557</c1><c2>\\u2500</c2><c1>\\u2554\\u2557</c1>\",\n \"<c1>\\u2551\\u2551\\u255A\\u2557\\u2551\\u2551</c1>\",\n \"<c1>\\u2551\\u2554\\u2557\\u255A\\u255D\\u2551</c1>\",\n \"<c1>\\u2551\\u2551\\u255A\\u2557\\u2551\\u2551</c1>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500</c2><c1>\\u2551\\u2551\\u2551</c1>\",\n \"<c1>\\u255A\\u255D</c1><c2>\\u2500</c2><c1>\\u255A\\u2550\\u255D</c1>\"\n ],\n O: [\n \"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\",\n \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500</c2><c1>\\u2551\\u2551</c1>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500</c2><c1>\\u2551\\u2551</c1>\",\n \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\",\n \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\"\n ],\n P: [\n \"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\",\n \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\",\n \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\",\n \"<c1>\\u2551\\u2554\\u2550\\u2550\\u255D</c1>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500\\u2500\\u2500</c2>\",\n \"<c1>\\u255A\\u255D</c1><c2>\\u2500\\u2500\\u2500</c2>\"\n ],\n Q: [\n \"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500</c2><c1>\\u2551\\u2551</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500</c2><c1>\\u2551\\u2551</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2560\\u2557</c1>\",\n \"<c1>\\u255A\\u2550\\u2550\\u2550\\u2550\\u255D</c1>\"\n ],\n R: [\"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\", \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\", \"<c1>\\u2551\\u2554\\u2557\\u2554\\u255D</c1>\", \"<c1>\\u2551\\u2551\\u2551\\u255A\\u2557</c1>\", \"<c1>\\u255A\\u255D\\u255A\\u2550\\u255D</c1>\"],\n S: [\"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\", \"<c1>\\u2551\\u255A\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u255A\\u2550\\u2550\\u2557\\u2551</c1>\", \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\", \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\"],\n T: [\n \"<c1>\\u2554\\u2550\\u2550\\u2550\\u2550\\u2557</c1>\",\n \"<c1>\\u2551\\u2554\\u2557\\u2554\\u2557\\u2551</c1>\",\n \"<c1>\\u255A\\u255D\\u2551\\u2551\\u255A\\u255D</c1>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u2551\\u2551</c1><c2>\\u2500\\u2500</c2>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u2551\\u2551</c1><c2>\\u2500\\u2500</c2>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u255A\\u255D</c1><c2>\\u2500\\u2500</c2>\"\n ],\n U: [\n \"<c1>\\u2554\\u2557</c1><c2>\\u2500</c2><c1>\\u2554\\u2557</c1>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500</c2><c1>\\u2551\\u2551</c1>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500</c2><c1>\\u2551\\u2551</c1>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500</c2><c1>\\u2551\\u2551</c1>\",\n \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\",\n \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\"\n ],\n V: [\n \"<c1>\\u2554\\u2557</c1><c2>\\u2500\\u2500</c2><c1>\\u2554\\u2557</c1>\",\n \"<c1>\\u2551\\u255A\\u2557\\u2554\\u255D\\u2551</c1>\",\n \"<c1>\\u255A\\u2557\\u2551\\u2551\\u2554\\u255D</c1>\",\n \"<c2>\\u2500</c2><c1>\\u2551\\u255A\\u255D\\u2551</c1><c2>\\u2500</c2>\",\n \"<c2>\\u2500</c2><c1>\\u255A\\u2557\\u2554\\u255D</c1><c2>\\u2500</c2>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u255A\\u255D</c1><c2>\\u2500\\u2500</c2>\"\n ],\n W: [\n \"<c1>\\u2554\\u2557\\u2554\\u2557\\u2554\\u2557</c1>\",\n \"<c1>\\u2551\\u2551\\u2551\\u2551\\u2551\\u2551</c1>\",\n \"<c1>\\u2551\\u2551\\u2551\\u2551\\u2551\\u2551</c1>\",\n \"<c1>\\u2551\\u255A\\u255D\\u255A\\u255D\\u2551</c1>\",\n \"<c1>\\u255A\\u2557\\u2554\\u2557\\u2554\\u255D</c1>\",\n \"<c2>\\u2500</c2><c1>\\u255A\\u255D\\u255A\\u255D</c1><c2>\\u2500</c2>\"\n ],\n X: [\n \"<c1>\\u2554\\u2550\\u2557\\u2554\\u2550\\u2557</c1>\",\n \"<c1>\\u255A\\u2557\\u255A\\u255D\\u2554\\u255D</c1>\",\n \"<c2>\\u2500</c2><c1>\\u255A\\u2557\\u2554\\u255D</c1><c2>\\u2500</c2>\",\n \"<c2>\\u2500</c2><c1>\\u2554\\u255D\\u255A\\u2557</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2554\\u255D\\u2554\\u2557\\u255A\\u2557</c1>\",\n \"<c1>\\u255A\\u2550\\u255D\\u255A\\u2550\\u255D</c1>\"\n ],\n Y: [\n \"<c1>\\u2554\\u2557</c1><c2>\\u2500\\u2500</c2><c1>\\u2554\\u2557</c1>\",\n \"<c1>\\u2551\\u255A\\u2557\\u2554\\u255D\\u2551</c1>\",\n \"<c1>\\u255A\\u2557\\u255A\\u255D\\u2554\\u255D</c1>\",\n \"<c2>\\u2500</c2><c1>\\u255A\\u2557\\u2554\\u255D</c1><c2>\\u2500</c2>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u2551\\u2551</c1><c2>\\u2500\\u2500</c2>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u255A\\u255D</c1><c2>\\u2500\\u2500</c2>\"\n ],\n Z: [\n \"<c1>\\u2554\\u2550\\u2550\\u2550\\u2550\\u2557</c1>\",\n \"<c1>\\u255A\\u2550\\u2550\\u2557\\u2550\\u2551</c1>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u2554\\u255D\\u2554\\u255D</c1>\",\n \"<c2>\\u2500</c2><c1>\\u2554\\u255D\\u2554\\u255D</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2554\\u255D\\u2550\\u255A\\u2550\\u2557</c1>\",\n \"<c1>\\u255A\\u2550\\u2550\\u2550\\u2550\\u255D</c1>\"\n ],\n \"0\": [\"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\", \"<c1>\\u2551\\u2551\\u2551\\u2551\\u2551</c1>\", \"<c1>\\u2551\\u2551\\u2551\\u2551\\u2551</c1>\", \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\", \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\"],\n \"1\": [\n \"<c2>\\u2500</c2><c1>\\u2554\\u2557</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2554\\u255D\\u2551</c1><c2>\\u2500</c2>\",\n \"<c1>\\u255A\\u2557\\u2551</c1><c2>\\u2500</c2>\",\n \"<c2>\\u2500</c2><c1>\\u2551\\u2551</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2554\\u255D\\u255A\\u2557</c1>\",\n \"<c1>\\u255A\\u2550\\u2550\\u255D</c1>\"\n ],\n \"2\": [\"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\", \"<c1>\\u255A\\u255D\\u2554\\u255D\\u2551</c1>\", \"<c1>\\u2554\\u2550\\u255D\\u2554\\u255D</c1>\", \"<c1>\\u2551\\u2551\\u255A\\u2550\\u2557</c1>\", \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\"],\n \"3\": [\"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\", \"<c1>\\u255A\\u255D\\u2554\\u255D\\u2551</c1>\", \"<c1>\\u2554\\u2557\\u255A\\u2557\\u2551</c1>\", \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\", \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\"],\n \"4\": [\n \"<c1>\\u2554\\u2557</c1><c2>\\u2500</c2><c1>\\u2554\\u2557</c1>\",\n \"<c1>\\u2551\\u2551</c1><c2>\\u2500</c2><c1>\\u2551\\u2551</c1>\",\n \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\",\n \"<c1>\\u255A\\u2550\\u2550\\u2557\\u2551</c1>\",\n \"<c2>\\u2500\\u2500\\u2500</c2><c1>\\u2551\\u2551</c1>\",\n \"<c2>\\u2500\\u2500\\u2500</c2><c1>\\u255A\\u255D</c1>\"\n ],\n \"5\": [\"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u2551\\u2554\\u2550\\u2550\\u255D</c1>\", \"<c1>\\u2551\\u255A\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u255A\\u2550\\u2550\\u2557\\u2551</c1>\", \"<c1>\\u2554\\u2550\\u2550\\u255D\\u2551</c1>\", \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\"],\n \"6\": [\"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u2551\\u2554\\u2550\\u2550\\u255D</c1>\", \"<c1>\\u2551\\u255A\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\", \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\", \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\"],\n \"7\": [\n \"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\",\n \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\",\n \"<c1>\\u255A\\u255D\\u2554\\u255D\\u2551</c1>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u2551\\u2554\\u255D</c1>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u2551\\u2551</c1><c2>\\u2500</c2>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u255A\\u255D</c1><c2>\\u2500</c2>\"\n ],\n \"8\": [\"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\", \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\", \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\", \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\", \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\"],\n \"9\": [\"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\", \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\", \"<c1>\\u255A\\u2550\\u2550\\u2557\\u2551</c1>\", \"<c1>\\u2554\\u2550\\u2550\\u255D\\u2551</c1>\", \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\"],\n \"!\": [\"<c1>\\u2554\\u2557</c1>\", \"<c1>\\u2551\\u2551</c1>\", \"<c1>\\u2551\\u2551</c1>\", \"<c1>\\u255A\\u255D</c1>\", \"<c1>\\u2554\\u2557</c1>\", \"<c1>\\u255A\\u255D</c1>\"],\n \"?\": [\n \"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\",\n \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\",\n \"<c1>\\u255A\\u255D\\u2554\\u255D\\u2551</c1>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u2551\\u2554\\u255D</c1>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u2554\\u2557</c1><c2>\\u2500</c2>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u255A\\u255D</c1><c2>\\u2500</c2>\"\n ],\n \".\": [\"<c2>\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500</c2>\", \"<c1>\\u2554\\u2557</c1>\", \"<c1>\\u255A\\u255D</c1>\"],\n \"+\": [\n \"<c2>\\u2500\\u2500\\u2500\\u2500</c2>\",\n \"<c2>\\u2500\\u2500\\u2500\\u2500</c2>\",\n \"<c2>\\u2500</c2><c1>\\u2554\\u2557</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2554\\u255D\\u255A\\u2557</c1>\",\n \"<c1>\\u255A\\u2557\\u2554\\u255D</c1>\",\n \"<c2>\\u2500</c2><c1>\\u255A\\u255D</c1><c2>\\u2500</c2>\"\n ],\n \"-\": [\"<c2>\\u2500\\u2500\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500\\u2500\\u2500</c2>\", \"<c1>\\u2554\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u255A\\u2550\\u2550\\u255D</c1>\", \"<c2>\\u2500\\u2500\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500\\u2500\\u2500</c2>\"],\n _: [\"<c2>\\u2500\\u2500\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500\\u2500\\u2500</c2>\", \"<c1>\\u2554\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u255A\\u2550\\u2550\\u255D</c1>\"],\n \"=\": [\"<c2>\\u2500\\u2500\\u2500\\u2500\\u2500</c2>\", \"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\", \"<c1>\\u2554\\u2550\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u255A\\u2550\\u2550\\u2550\\u255D</c1>\", \"<c2>\\u2500\\u2500\\u2500\\u2500\\u2500</c2>\"],\n \"@\": [\n \"<c1>\\u2554\\u2550\\u2550\\u2550\\u2550\\u2557</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2551\\u2554\\u2550\\u2550\\u2557\\u2551</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2551\\u2551\\u2554\\u2550\\u2551\\u2551</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2551\\u2551\\u255A\\u255D\\u2551\\u2551</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2551\\u255A\\u2550\\u2550\\u255D\\u2560\\u2557</c1>\",\n \"<c1>\\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D</c1>\"\n ],\n \"#\": [\n \"<c2>\\u2500</c2><c1>\\u2554\\u2569\\u2569\\u2569\\u2557</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2554\\u255D\\u2554\\u2550\\u2557\\u255A\\u2557</c1>\",\n \"<c1>\\u255A\\u2557\\u2560\\u2550\\u2563\\u2554\\u255D</c1>\",\n \"<c1>\\u2554\\u255D\\u2560\\u2550\\u2563\\u255A\\u2557</c1>\",\n \"<c1>\\u255A\\u2557\\u255A\\u2550\\u255D\\u2554\\u255D</c1>\",\n \"<c2>\\u2500</c2><c1>\\u255A\\u2566\\u2566\\u2566\\u255D</c1><c2>\\u2500</c2>\"\n ],\n $: [\"<c1>\\u2554\\u255D\\u2569\\u255A\\u2557</c1>\", \"<c1>\\u2551\\u2554\\u2550\\u2557\\u2551</c1>\", \"<c1>\\u2551\\u255A\\u2550\\u2550\\u2557</c1>\", \"<c1>\\u255A\\u2550\\u2550\\u2557\\u2551</c1>\", \"<c1>\\u2551\\u255A\\u2550\\u255D\\u2551</c1>\", \"<c1>\\u255A\\u2557\\u2566\\u2554\\u255D</c1>\"],\n \"%\": [\n \"<c1>\\u2554\\u2557</c1><c2>\\u2500\\u2500</c2><c1>\\u2554\\u2550\\u2557</c1>\",\n \"<c1>\\u255A\\u255D</c1><c2>\\u2500</c2><c1>\\u2554\\u255D\\u2554\\u255D</c1>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u2554\\u255D\\u2554\\u255D</c1><c2>\\u2500</c2>\",\n \"<c2>\\u2500</c2><c1>\\u2554\\u255D\\u2554\\u255D</c1><c2>\\u2500\\u2500</c2>\",\n \"<c1>\\u2554\\u255D\\u2554\\u255D</c1><c2>\\u2500</c2><c1>\\u2554\\u2557</c1>\",\n \"<c1>\\u255A\\u2550\\u255D</c1><c2>\\u2500\\u2500</c2><c1>\\u255A\\u255D</c1>\"\n ],\n \"&\": [\n \"<c2>\\u2500\\u2500</c2><c1>\\u2554\\u2557</c1><c2>\\u2500</c2>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u2551\\u2551</c1><c2>\\u2500</c2>\",\n \"<c1>\\u2554\\u2550\\u255D\\u255A\\u2557</c1>\",\n \"<c1>\\u2551\\u2554\\u2557\\u2554\\u255D</c1>\",\n \"<c1>\\u2551\\u255A\\u255D\\u2551</c1><c2>\\u2500</c2>\",\n \"<c1>\\u255A\\u2550\\u2550\\u255D</c1><c2>\\u2500</c2>\"\n ],\n \"(\": [\n \"<c2>\\u2500\\u2500</c2><c1>\\u2554\\u2550\\u2557</c1>\",\n \"<c2>\\u2500</c2><c1>\\u2554\\u255D\\u2554\\u255D</c1>\",\n \"<c1>\\u2554\\u255D\\u2554\\u255D</c1><c2>\\u2500</c2>\",\n \"<c1>\\u255A\\u2557\\u255A\\u2557</c1><c2>\\u2500</c2>\",\n \"<c2>\\u2500</c2><c1>\\u255A\\u2557\\u255A\\u2557</c1>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u255A\\u2550\\u255D</c1>\"\n ],\n \")\": [\n \"<c1>\\u2554\\u2550\\u2557</c1><c2>\\u2500\\u2500</c2>\",\n \"<c1>\\u255A\\u2557\\u255A\\u2557</c1><c2>\\u2500</c2>\",\n \"<c2>\\u2500</c2><c1>\\u255A\\u2557\\u255A\\u2557</c1>\",\n \"<c2>\\u2500</c2><c1>\\u2554\\u255D\\u2554\\u255D</c1>\",\n \"<c1>\\u2554\\u255D\\u2554\\u255D</c1><c2>\\u2500</c2>\",\n \"<c1>\\u255A\\u2550\\u255D</c1><c2>\\u2500\\u2500</c2>\"\n ],\n \"/\": [\n \"<c2>\\u2500\\u2500\\u2500\\u2500</c2><c1>\\u2554\\u2550\\u2557</c1>\",\n \"<c2>\\u2500\\u2500\\u2500</c2><c1>\\u2554\\u255D\\u2554\\u255D</c1>\",\n \"<c2>\\u2500\\u2500</c2><c1>\\u2554\\u255D\\u2554\\u255D</c1><c2>\\u2500</c2>\",\n \"<c2>\\u2500</c2><c1>\\u2554\\u255D\\u2554\\u255D</c1><c2>\\u2500\\u2500</c2>\",\n \"<c1>\\u2554\\u255D\\u2554\\u255D</c1><c2>\\u2500\\u2500\\u2500</c2>\",\n \"<c1>\\u255A\\u2550\\u255D</c1><c2>\\u2500\\u2500\\u2500\\u2500</c2>\"\n ],\n \":\": [\"<c2>\\u2500\\u2500</c2>\", \"<c1>\\u2554\\u2557</c1>\", \"<c1>\\u255A\\u255D</c1>\", \"<c1>\\u2554\\u2557</c1>\", \"<c1>\\u255A\\u255D</c1>\", \"<c2>\\u2500\\u2500</c2>\"],\n \";\": [\"<c2>\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500</c2>\", \"<c1>\\u2554\\u2557</c1>\", \"<c1>\\u255A\\u2563</c1>\", \"<c2>\\u2500</c2><c1>\\u255D</c1>\"],\n \",\": [\"<c1>\\u2554\\u2557</c1>\", \"<c1>\\u2551\\u2551</c1>\", \"<c1>\\u255A\\u255D</c1>\", \"<c1>\\u2554\\u2557</c1>\", \"<c1>\\u255A\\u2563</c1>\", \"<c2>\\u2500</c2><c1>\\u255D</c1>\"],\n \"'\": [\"<c1>\\u2554\\u2557</c1>\", \"<c1>\\u2551\\u2551</c1>\", \"<c1>\\u255A\\u255D</c1>\", \"<c2>\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500</c2>\"],\n '\"': [\"<c1>\\u2554\\u2557\\u2554\\u2557</c1>\", \"<c1>\\u2551\\u2551\\u2551\\u2551</c1>\", \"<c1>\\u255A\\u255D\\u255A\\u255D</c1>\", \"<c2>\\u2500\\u2500\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500\\u2500\\u2500</c2>\"],\n \" \": [\"<c2>\\u2500\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500\\u2500</c2>\", \"<c2>\\u2500\\u2500\\u2500</c2>\"]\n }\n};\n\n// src/lib/ascii.font.ts\nvar fonts = {\n tiny: tiny_default,\n block: block_default,\n shade: shade_default,\n slick: slick_default,\n huge: huge_default,\n grid: grid_default,\n pallet: pallet_default\n};\nvar parsedFonts = {};\nfunction parseColorTags(text) {\n const segments = [];\n let currentIndex = 0;\n const colorTagRegex = /<c(\\d+)>(.*?)<\\/c\\d+>/g;\n let lastIndex = 0;\n let match;\n while ((match = colorTagRegex.exec(text)) !== null) {\n if (match.index > lastIndex) {\n const plainText = text.slice(lastIndex, match.index);\n if (plainText) {\n segments.push({ text: plainText, colorIndex: 0 });\n }\n }\n const colorIndex = parseInt(match[1]) - 1;\n const taggedText = match[2];\n segments.push({ text: taggedText, colorIndex: Math.max(0, colorIndex) });\n lastIndex = match.index + match[0].length;\n }\n if (lastIndex < text.length) {\n const remainingText = text.slice(lastIndex);\n if (remainingText) {\n segments.push({ text: remainingText, colorIndex: 0 });\n }\n }\n return segments;\n}\nfunction getParsedFont(fontKey) {\n if (!parsedFonts[fontKey]) {\n const fontDef = fonts[fontKey];\n const parsedChars = {};\n for (const [char, lines] of Object.entries(fontDef.chars)) {\n parsedChars[char] = lines.map((line) => parseColorTags(line));\n }\n parsedFonts[fontKey] = {\n ...fontDef,\n colors: fontDef.colors || 1,\n chars: parsedChars\n };\n }\n return parsedFonts[fontKey];\n}\nfunction measureText({ text, font = \"tiny\" }) {\n const fontDef = getParsedFont(font);\n if (!fontDef) {\n console.warn(`Font '${font}' not found`);\n return { width: 0, height: 0 };\n }\n let currentX = 0;\n for (let i = 0;i < text.length; i++) {\n const char = text[i].toUpperCase();\n const charDef = fontDef.chars[char];\n if (!charDef) {\n const spaceChar = fontDef.chars[\" \"];\n if (spaceChar && spaceChar[0]) {\n let spaceWidth = 0;\n for (const segment of spaceChar[0]) {\n spaceWidth += segment.text.length;\n }\n currentX += spaceWidth;\n } else {\n currentX += 1;\n }\n continue;\n }\n let charWidth = 0;\n if (charDef[0]) {\n for (const segment of charDef[0]) {\n charWidth += segment.text.length;\n }\n }\n currentX += charWidth;\n if (i < text.length - 1) {\n currentX += fontDef.letterspace_size;\n }\n }\n return {\n width: currentX,\n height: fontDef.lines\n };\n}\nfunction getCharacterPositions(text, font = \"tiny\") {\n const fontDef = getParsedFont(font);\n if (!fontDef) {\n return [0];\n }\n const positions = [0];\n let currentX = 0;\n for (let i = 0;i < text.length; i++) {\n const char = text[i].toUpperCase();\n const charDef = fontDef.chars[char];\n let charWidth = 0;\n if (!charDef) {\n const spaceChar = fontDef.chars[\" \"];\n if (spaceChar && spaceChar[0]) {\n for (const segment of spaceChar[0]) {\n charWidth += segment.text.length;\n }\n } else {\n charWidth = 1;\n }\n } else if (charDef[0]) {\n for (const segment of charDef[0]) {\n charWidth += segment.text.length;\n }\n }\n currentX += charWidth;\n if (i < text.length - 1) {\n currentX += fontDef.letterspace_size;\n }\n positions.push(currentX);\n }\n return positions;\n}\nfunction coordinateToCharacterIndex(x, text, font = \"tiny\") {\n const positions = getCharacterPositions(text, font);\n if (x < 0) {\n return 0;\n }\n for (let i = 0;i < positions.length - 1; i++) {\n const currentPos = positions[i];\n const nextPos = positions[i + 1];\n if (x >= currentPos && x < nextPos) {\n const charMidpoint = currentPos + (nextPos - currentPos) / 2;\n return x < charMidpoint ? i : i + 1;\n }\n }\n if (positions.length > 0 && x >= positions[positions.length - 1]) {\n return text.length;\n }\n return 0;\n}\nfunction renderFontToFrameBuffer(buffer, {\n text,\n x = 0,\n y = 0,\n color = [RGBA.fromInts(255, 255, 255, 255)],\n backgroundColor = RGBA.fromInts(0, 0, 0, 255),\n font = \"tiny\"\n}) {\n const width = buffer.width;\n const height = buffer.height;\n const fontDef = getParsedFont(font);\n if (!fontDef) {\n console.warn(`Font '${font}' not found`);\n return { width: 0, height: 0 };\n }\n const colors = Array.isArray(color) ? color : [color];\n if (y < 0 || y + fontDef.lines > height) {\n return { width: 0, height: fontDef.lines };\n }\n let currentX = x;\n const startX = x;\n for (let i = 0;i < text.length; i++) {\n const char = text[i].toUpperCase();\n const charDef = fontDef.chars[char];\n if (!charDef) {\n const spaceChar = fontDef.chars[\" \"];\n if (spaceChar && spaceChar[0]) {\n let spaceWidth = 0;\n for (const segment of spaceChar[0]) {\n spaceWidth += segment.text.length;\n }\n currentX += spaceWidth;\n } else {\n currentX += 1;\n }\n continue;\n }\n let charWidth = 0;\n if (charDef[0]) {\n for (const segment of charDef[0]) {\n charWidth += segment.text.length;\n }\n }\n if (currentX >= width)\n break;\n if (currentX + charWidth < 0) {\n currentX += charWidth + fontDef.letterspace_size;\n continue;\n }\n for (let lineIdx = 0;lineIdx < fontDef.lines && lineIdx < charDef.length; lineIdx++) {\n const segments = charDef[lineIdx];\n const renderY = y + lineIdx;\n if (renderY >= 0 && renderY < height) {\n let segmentX = currentX;\n for (const segment of segments) {\n const segmentColor = colors[segment.colorIndex] || colors[0];\n for (let charIdx = 0;charIdx < segment.text.length; charIdx++) {\n const renderX = segmentX + charIdx;\n if (renderX >= 0 && renderX < width) {\n const fontChar = segment.text[charIdx];\n if (fontChar !== \" \") {\n buffer.setCellWithAlphaBlending(renderX, renderY, fontChar, parseColor(segmentColor), parseColor(backgroundColor));\n }\n }\n }\n segmentX += segment.text.length;\n }\n }\n }\n currentX += charWidth;\n if (i < text.length - 1) {\n currentX += fontDef.letterspace_size;\n }\n }\n return {\n width: currentX - startX,\n height: fontDef.lines\n };\n}\n\n// src/types.ts\nvar TextAttributes = {\n NONE: 0,\n BOLD: 1 << 0,\n DIM: 1 << 1,\n ITALIC: 1 << 2,\n UNDERLINE: 1 << 3,\n BLINK: 1 << 4,\n INVERSE: 1 << 5,\n HIDDEN: 1 << 6,\n STRIKETHROUGH: 1 << 7\n};\nvar ATTRIBUTE_BASE_BITS = 8;\nvar ATTRIBUTE_BASE_MASK = 255;\nfunction getBaseAttributes(attr) {\n return attr & ATTRIBUTE_BASE_MASK;\n}\nvar DebugOverlayCorner;\n((DebugOverlayCorner2) => {\n DebugOverlayCorner2[DebugOverlayCorner2[\"topLeft\"] = 0] = \"topLeft\";\n DebugOverlayCorner2[DebugOverlayCorner2[\"topRight\"] = 1] = \"topRight\";\n DebugOverlayCorner2[DebugOverlayCorner2[\"bottomLeft\"] = 2] = \"bottomLeft\";\n DebugOverlayCorner2[DebugOverlayCorner2[\"bottomRight\"] = 3] = \"bottomRight\";\n})(DebugOverlayCorner ||= {});\n\n// src/utils.ts\nfunction createTextAttributes({\n bold = false,\n italic = false,\n underline = false,\n dim = false,\n blink = false,\n inverse = false,\n hidden = false,\n strikethrough = false\n} = {}) {\n let attributes = TextAttributes.NONE;\n if (bold)\n attributes |= TextAttributes.BOLD;\n if (italic)\n attributes |= TextAttributes.ITALIC;\n if (underline)\n attributes |= TextAttributes.UNDERLINE;\n if (dim)\n attributes |= TextAttributes.DIM;\n if (blink)\n attributes |= TextAttributes.BLINK;\n if (inverse)\n attributes |= TextAttributes.INVERSE;\n if (hidden)\n attributes |= TextAttributes.HIDDEN;\n if (strikethrough)\n attributes |= TextAttributes.STRIKETHROUGH;\n return attributes;\n}\nvar ATTRIBUTE_BASE_MASK2 = 255;\nvar LINK_ID_SHIFT = 8;\nvar LINK_ID_PAYLOAD_MASK = 16777215;\nfunction attributesWithLink(baseAttributes, linkId) {\n const base = baseAttributes & ATTRIBUTE_BASE_MASK2;\n const linkBits = (linkId & LINK_ID_PAYLOAD_MASK) << LINK_ID_SHIFT;\n return base | linkBits;\n}\nfunction getLinkId(attributes) {\n return attributes >>> LINK_ID_SHIFT & LINK_ID_PAYLOAD_MASK;\n}\nfunction visualizeRenderableTree(renderable, maxDepth = 10) {\n function buildTreeLines(node, prefix = \"\", parentPrefix = \"\", isLastChild = true, depth = 0) {\n if (depth >= maxDepth) {\n return [`${prefix}${node.id} ... (max depth reached)`];\n }\n const lines = [];\n const children = node.getChildren();\n lines.push(`${prefix}${node.id}`);\n if (children.length > 0) {\n const lastChildIndex = children.length - 1;\n children.forEach((child, index) => {\n const childIsLast = index === lastChildIndex;\n const connector = childIsLast ? \"\\u2514\\u2500\\u2500 \" : \"\\u251C\\u2500\\u2500 \";\n const childPrefix = parentPrefix + (isLastChild ? \" \" : \"\\u2502 \");\n const childLines = buildTreeLines(child, childPrefix + connector, childPrefix, childIsLast, depth + 1);\n lines.push(...childLines);\n });\n }\n return lines;\n }\n const treeLines = buildTreeLines(renderable);\n console.log(`Renderable Tree:\n` + treeLines.join(`\n`));\n}\n\n// src/lib/styled-text.ts\nvar BrandedStyledText = Symbol.for(\"@opentui/core/StyledText\");\nfunction isStyledText(obj) {\n return obj && obj[BrandedStyledText];\n}\n\nclass StyledText {\n [BrandedStyledText] = true;\n chunks;\n constructor(chunks) {\n this.chunks = chunks;\n }\n}\nfunction stringToStyledText(content) {\n const chunk = {\n __isChunk: true,\n text: content\n };\n return new StyledText([chunk]);\n}\nfunction applyStyle(input, style) {\n if (typeof input === \"object\" && \"__isChunk\" in input) {\n const existingChunk = input;\n const fg = style.fg ? parseColor(style.fg) : existingChunk.fg;\n const bg = style.bg ? parseColor(style.bg) : existingChunk.bg;\n const newAttrs = createTextAttributes(style);\n const mergedAttrs = existingChunk.attributes ? existingChunk.attributes | newAttrs : newAttrs;\n return {\n __isChunk: true,\n text: existingChunk.text,\n fg,\n bg,\n attributes: mergedAttrs,\n link: existingChunk.link\n };\n } else {\n const plainTextStr = String(input);\n const fg = style.fg ? parseColor(style.fg) : undefined;\n const bg = style.bg ? parseColor(style.bg) : undefined;\n const attributes = createTextAttributes(style);\n return {\n __isChunk: true,\n text: plainTextStr,\n fg,\n bg,\n attributes\n };\n }\n}\nvar black = (input) => applyStyle(input, { fg: \"black\" });\nvar red = (input) => applyStyle(input, { fg: \"red\" });\nvar green = (input) => applyStyle(input, { fg: \"green\" });\nvar yellow = (input) => applyStyle(input, { fg: \"yellow\" });\nvar blue = (input) => applyStyle(input, { fg: \"blue\" });\nvar magenta = (input) => applyStyle(input, { fg: \"magenta\" });\nvar cyan = (input) => applyStyle(input, { fg: \"cyan\" });\nvar white = (input) => applyStyle(input, { fg: \"white\" });\nvar brightBlack = (input) => applyStyle(input, { fg: \"brightBlack\" });\nvar brightRed = (input) => applyStyle(input, { fg: \"brightRed\" });\nvar brightGreen = (input) => applyStyle(input, { fg: \"brightGreen\" });\nvar brightYellow = (input) => applyStyle(input, { fg: \"brightYellow\" });\nvar brightBlue = (input) => applyStyle(input, { fg: \"brightBlue\" });\nvar brightMagenta = (input) => applyStyle(input, { fg: \"brightMagenta\" });\nvar brightCyan = (input) => applyStyle(input, { fg: \"brightCyan\" });\nvar brightWhite = (input) => applyStyle(input, { fg: \"brightWhite\" });\nvar bgBlack = (input) => applyStyle(input, { bg: \"black\" });\nvar bgRed = (input) => applyStyle(input, { bg: \"red\" });\nvar bgGreen = (input) => applyStyle(input, { bg: \"green\" });\nvar bgYellow = (input) => applyStyle(input, { bg: \"yellow\" });\nvar bgBlue = (input) => applyStyle(input, { bg: \"blue\" });\nvar bgMagenta = (input) => applyStyle(input, { bg: \"magenta\" });\nvar bgCyan = (input) => applyStyle(input, { bg: \"cyan\" });\nvar bgWhite = (input) => applyStyle(input, { bg: \"white\" });\nvar bold = (input) => applyStyle(input, { bold: true });\nvar italic = (input) => applyStyle(input, { italic: true });\nvar underline = (input) => applyStyle(input, { underline: true });\nvar strikethrough = (input) => applyStyle(input, { strikethrough: true });\nvar dim = (input) => applyStyle(input, { dim: true });\nvar reverse = (input) => applyStyle(input, { reverse: true });\nvar blink = (input) => applyStyle(input, { blink: true });\nvar fg = (color) => (input) => applyStyle(input, { fg: color });\nvar bg = (color) => (input) => applyStyle(input, { bg: color });\nvar link = (url) => (input) => {\n const chunk = typeof input === \"object\" && \"__isChunk\" in input ? input : {\n __isChunk: true,\n text: String(input)\n };\n return {\n ...chunk,\n link: { url }\n };\n};\nfunction t(strings, ...values) {\n const chunks = [];\n for (let i = 0;i < strings.length; i++) {\n const raw = strings[i];\n if (raw) {\n chunks.push({\n __isChunk: true,\n text: raw,\n attributes: 0\n });\n }\n const val = values[i];\n if (typeof val === \"object\" && \"__isChunk\" in val) {\n chunks.push(val);\n } else if (val !== undefined) {\n const plainTextStr = String(val);\n chunks.push({\n __isChunk: true,\n text: plainTextStr,\n attributes: 0\n });\n }\n }\n return new StyledText(chunks);\n}\n\n// src/lib/hast-styled-text.ts\nfunction hastToTextChunks(node, syntaxStyle, parentStyles = []) {\n const chunks = [];\n if (node.type === \"text\") {\n const stylesToMerge = parentStyles.length > 0 ? parentStyles : [\"default\"];\n const mergedStyle = syntaxStyle.mergeStyles(...stylesToMerge);\n chunks.push({\n __isChunk: true,\n text: node.value,\n fg: mergedStyle.fg,\n bg: mergedStyle.bg,\n attributes: mergedStyle.attributes\n });\n } else if (node.type === \"element\") {\n let currentStyles = [...parentStyles];\n if (node.properties?.className) {\n const classes = node.properties.className.split(\" \");\n for (const cls of classes) {\n currentStyles.push(cls);\n }\n }\n for (const child of node.children) {\n chunks.push(...hastToTextChunks(child, syntaxStyle, currentStyles));\n }\n }\n return chunks;\n}\nfunction hastToStyledText(hast, syntaxStyle) {\n const chunks = hastToTextChunks(hast, syntaxStyle);\n return new StyledText(chunks);\n}\n\n// src/lib/scroll-acceleration.ts\nclass LinearScrollAccel {\n tick(_now) {\n return 1;\n }\n reset() {}\n}\n\nclass MacOSScrollAccel {\n opts;\n lastTickTime = 0;\n velocityHistory = [];\n historySize = 3;\n streakTimeout = 150;\n minTickInterval = 6;\n constructor(opts = {}) {\n this.opts = opts;\n }\n tick(now = Date.now()) {\n const A = this.opts.A ?? 0.8;\n const tau = this.opts.tau ?? 3;\n const maxMultiplier = this.opts.maxMultiplier ?? 6;\n const dt = this.lastTickTime ? now - this.lastTickTime : Infinity;\n if (dt === Infinity || dt > this.streakTimeout) {\n this.lastTickTime = now;\n this.velocityHistory = [];\n return 1;\n }\n if (dt < this.minTickInterval) {\n return 1;\n }\n this.lastTickTime = now;\n this.velocityHistory.push(dt);\n if (this.velocityHistory.length > this.historySize) {\n this.velocityHistory.shift();\n }\n const avgInterval = this.velocityHistory.reduce((a, b) => a + b, 0) / this.velocityHistory.length;\n const referenceInterval = 100;\n const velocity = referenceInterval / avgInterval;\n const x = velocity / tau;\n const multiplier = 1 + A * (Math.exp(x) - 1);\n return Math.min(multiplier, maxMultiplier);\n }\n reset() {\n this.lastTickTime = 0;\n this.velocityHistory = [];\n }\n}\n\n// src/lib/stdin-buffer.ts\nimport { EventEmitter as EventEmitter2 } from \"events\";\nvar ESC = \"\\x1B\";\nvar BRACKETED_PASTE_START = \"\\x1B[200~\";\nvar BRACKETED_PASTE_END = \"\\x1B[201~\";\nfunction isCompleteSequence(data) {\n if (!data.startsWith(ESC)) {\n return \"not-escape\";\n }\n if (data.length === 1) {\n return \"incomplete\";\n }\n const afterEsc = data.slice(1);\n if (afterEsc.startsWith(ESC)) {\n return isCompleteSequence(afterEsc);\n }\n if (afterEsc.startsWith(\"[\")) {\n if (afterEsc.startsWith(\"[M\")) {\n return data.length >= 6 ? \"complete\" : \"incomplete\";\n }\n return isCompleteCsiSequence(data);\n }\n if (afterEsc.startsWith(\"]\")) {\n return isCompleteOscSequence(data);\n }\n if (afterEsc.startsWith(\"P\")) {\n return isCompleteDcsSequence(data);\n }\n if (afterEsc.startsWith(\"_\")) {\n return isCompleteApcSequence(data);\n }\n if (afterEsc.startsWith(\"O\")) {\n return afterEsc.length >= 2 ? \"complete\" : \"incomplete\";\n }\n if (afterEsc.length === 1) {\n return \"complete\";\n }\n return \"complete\";\n}\nfunction isCompleteCsiSequence(data) {\n if (!data.startsWith(ESC + \"[\")) {\n return \"complete\";\n }\n if (data.length < 3) {\n return \"incomplete\";\n }\n const payload = data.slice(2);\n const lastChar = payload[payload.length - 1];\n const lastCharCode = lastChar.charCodeAt(0);\n if (lastCharCode >= 64 && lastCharCode <= 126) {\n if (payload.startsWith(\"<\")) {\n const mouseMatch = /^<\\d+;\\d+;\\d+[Mm]$/.test(payload);\n if (mouseMatch) {\n return \"complete\";\n }\n if (lastChar === \"M\" || lastChar === \"m\") {\n const parts = payload.slice(1, -1).split(\";\");\n if (parts.length === 3 && parts.every((p) => /^\\d+$/.test(p))) {\n return \"complete\";\n }\n }\n return \"incomplete\";\n }\n return \"complete\";\n }\n return \"incomplete\";\n}\nfunction isCompleteOscSequence(data) {\n if (!data.startsWith(ESC + \"]\")) {\n return \"complete\";\n }\n if (data.endsWith(ESC + \"\\\\\") || data.endsWith(\"\\x07\")) {\n return \"complete\";\n }\n return \"incomplete\";\n}\nfunction isCompleteDcsSequence(data) {\n if (!data.startsWith(ESC + \"P\")) {\n return \"complete\";\n }\n if (data.endsWith(ESC + \"\\\\\")) {\n return \"complete\";\n }\n return \"incomplete\";\n}\nfunction isCompleteApcSequence(data) {\n if (!data.startsWith(ESC + \"_\")) {\n return \"complete\";\n }\n if (data.endsWith(ESC + \"\\\\\")) {\n return \"complete\";\n }\n return \"incomplete\";\n}\nfunction isNestedEscapeSequenceStart(char) {\n return char === \"[\" || char === \"]\" || char === \"O\" || char === \"N\" || char === \"P\" || char === \"_\";\n}\nfunction extractCompleteSequences(buffer) {\n const sequences = [];\n let pos = 0;\n while (pos < buffer.length) {\n const remaining = buffer.slice(pos);\n if (remaining.startsWith(ESC)) {\n let seqEnd = 1;\n while (seqEnd <= remaining.length) {\n const candidate = remaining.slice(0, seqEnd);\n const status = isCompleteSequence(candidate);\n if (status === \"complete\") {\n sequences.push(candidate);\n pos += seqEnd;\n break;\n } else if (status === \"incomplete\") {\n if (candidate === ESC + ESC) {\n const nextChar = remaining[seqEnd];\n if (seqEnd < remaining.length && !isNestedEscapeSequenceStart(nextChar)) {\n sequences.push(candidate);\n pos += seqEnd;\n break;\n }\n }\n seqEnd++;\n } else {\n sequences.push(candidate);\n pos += seqEnd;\n break;\n }\n }\n if (seqEnd > remaining.length) {\n return { sequences, remainder: remaining };\n }\n } else {\n const code = remaining.charCodeAt(0);\n if (code >= 55296 && code <= 56319) {\n if (remaining.length === 1) {\n return { sequences, remainder: remaining };\n }\n const next = remaining.charCodeAt(1);\n if (next >= 56320 && next <= 57343) {\n sequences.push(remaining.slice(0, 2));\n pos += 2;\n } else {\n sequences.push(remaining[0]);\n pos++;\n }\n } else {\n sequences.push(remaining[0]);\n pos++;\n }\n }\n }\n return { sequences, remainder: \"\" };\n}\n\nclass StdinBuffer extends EventEmitter2 {\n buffer = \"\";\n timeout = null;\n timeoutMs;\n pasteMode = false;\n pasteBuffer = \"\";\n constructor(options = {}) {\n super();\n this.timeoutMs = options.timeout ?? 10;\n }\n process(data) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n let str;\n if (Buffer.isBuffer(data)) {\n if (data.length === 1 && data[0] > 127) {\n const byte = data[0] - 128;\n str = \"\\x1B\" + String.fromCharCode(byte);\n } else {\n str = data.toString();\n }\n } else {\n str = data;\n }\n if (str.length === 0 && this.buffer.length === 0) {\n this.emit(\"data\", \"\");\n return;\n }\n this.buffer += str;\n if (this.pasteMode) {\n this.pasteBuffer += this.buffer;\n this.buffer = \"\";\n const endIndex = this.pasteBuffer.indexOf(BRACKETED_PASTE_END);\n if (endIndex !== -1) {\n const pastedContent = this.pasteBuffer.slice(0, endIndex);\n const remaining = this.pasteBuffer.slice(endIndex + BRACKETED_PASTE_END.length);\n this.pasteMode = false;\n this.pasteBuffer = \"\";\n this.emit(\"paste\", pastedContent);\n if (remaining.length > 0) {\n this.process(remaining);\n }\n }\n return;\n }\n const startIndex = this.buffer.indexOf(BRACKETED_PASTE_START);\n if (startIndex !== -1) {\n if (startIndex > 0) {\n const beforePaste = this.buffer.slice(0, startIndex);\n const result2 = extractCompleteSequences(beforePaste);\n for (const sequence of result2.sequences) {\n this.emit(\"data\", sequence);\n }\n }\n this.buffer = this.buffer.slice(startIndex + BRACKETED_PASTE_START.length);\n this.pasteMode = true;\n this.pasteBuffer = this.buffer;\n this.buffer = \"\";\n const endIndex = this.pasteBuffer.indexOf(BRACKETED_PASTE_END);\n if (endIndex !== -1) {\n const pastedContent = this.pasteBuffer.slice(0, endIndex);\n const remaining = this.pasteBuffer.slice(endIndex + BRACKETED_PASTE_END.length);\n this.pasteMode = false;\n this.pasteBuffer = \"\";\n this.emit(\"paste\", pastedContent);\n if (remaining.length > 0) {\n this.process(remaining);\n }\n }\n return;\n }\n const result = extractCompleteSequences(this.buffer);\n this.buffer = result.remainder;\n for (const sequence of result.sequences) {\n this.emit(\"data\", sequence);\n }\n if (this.buffer.length > 0) {\n this.timeout = setTimeout(() => {\n const flushed = this.flush();\n for (const sequence of flushed) {\n this.emit(\"data\", sequence);\n }\n }, this.timeoutMs);\n }\n }\n flush() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n if (this.buffer.length === 0) {\n return [];\n }\n const sequences = [this.buffer];\n this.buffer = \"\";\n return sequences;\n }\n clear() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.buffer = \"\";\n this.pasteMode = false;\n this.pasteBuffer = \"\";\n }\n getBuffer() {\n return this.buffer;\n }\n destroy() {\n this.clear();\n }\n}\n\n// src/lib/yoga.options.ts\nfunction parseAlign(value) {\n if (value == null) {\n return Align.Auto;\n }\n switch (value.toLowerCase()) {\n case \"auto\":\n return Align.Auto;\n case \"flex-start\":\n return Align.FlexStart;\n case \"center\":\n return Align.Center;\n case \"flex-end\":\n return Align.FlexEnd;\n case \"stretch\":\n return Align.Stretch;\n case \"baseline\":\n return Align.Baseline;\n case \"space-between\":\n return Align.SpaceBetween;\n case \"space-around\":\n return Align.SpaceAround;\n case \"space-evenly\":\n return Align.SpaceEvenly;\n default:\n return Align.Auto;\n }\n}\nfunction parseAlignItems(value) {\n if (value == null) {\n return Align.Stretch;\n }\n switch (value.toLowerCase()) {\n case \"auto\":\n return Align.Auto;\n case \"flex-start\":\n return Align.FlexStart;\n case \"center\":\n return Align.Center;\n case \"flex-end\":\n return Align.FlexEnd;\n case \"stretch\":\n return Align.Stretch;\n case \"baseline\":\n return Align.Baseline;\n case \"space-between\":\n return Align.SpaceBetween;\n case \"space-around\":\n return Align.SpaceAround;\n case \"space-evenly\":\n return Align.SpaceEvenly;\n default:\n return Align.Stretch;\n }\n}\nfunction parseBoxSizing(value) {\n if (value == null) {\n return BoxSizing.BorderBox;\n }\n switch (value.toLowerCase()) {\n case \"border-box\":\n return BoxSizing.BorderBox;\n case \"content-box\":\n return BoxSizing.ContentBox;\n default:\n return BoxSizing.BorderBox;\n }\n}\nfunction parseDimension(value) {\n if (value == null) {\n return Dimension.Width;\n }\n switch (value.toLowerCase()) {\n case \"width\":\n return Dimension.Width;\n case \"height\":\n return Dimension.Height;\n default:\n return Dimension.Width;\n }\n}\nfunction parseDirection(value) {\n if (value == null) {\n return Direction.LTR;\n }\n switch (value.toLowerCase()) {\n case \"inherit\":\n return Direction.Inherit;\n case \"ltr\":\n return Direction.LTR;\n case \"rtl\":\n return Direction.RTL;\n default:\n return Direction.LTR;\n }\n}\nfunction parseDisplay(value) {\n if (value == null) {\n return Display.Flex;\n }\n switch (value.toLowerCase()) {\n case \"flex\":\n return Display.Flex;\n case \"none\":\n return Display.None;\n case \"contents\":\n return Display.Contents;\n default:\n return Display.Flex;\n }\n}\nfunction parseEdge(value) {\n if (value == null) {\n return Edge.All;\n }\n switch (value.toLowerCase()) {\n case \"left\":\n return Edge.Left;\n case \"top\":\n return Edge.Top;\n case \"right\":\n return Edge.Right;\n case \"bottom\":\n return Edge.Bottom;\n case \"start\":\n return Edge.Start;\n case \"end\":\n return Edge.End;\n case \"horizontal\":\n return Edge.Horizontal;\n case \"vertical\":\n return Edge.Vertical;\n case \"all\":\n return Edge.All;\n default:\n return Edge.All;\n }\n}\nfunction parseFlexDirection(value) {\n if (value == null) {\n return FlexDirection.Column;\n }\n switch (value.toLowerCase()) {\n case \"column\":\n return FlexDirection.Column;\n case \"column-reverse\":\n return FlexDirection.ColumnReverse;\n case \"row\":\n return FlexDirection.Row;\n case \"row-reverse\":\n return FlexDirection.RowReverse;\n default:\n return FlexDirection.Column;\n }\n}\nfunction parseGutter(value) {\n if (value == null) {\n return Gutter.All;\n }\n switch (value.toLowerCase()) {\n case \"column\":\n return Gutter.Column;\n case \"row\":\n return Gutter.Row;\n case \"all\":\n return Gutter.All;\n default:\n return Gutter.All;\n }\n}\nfunction parseJustify(value) {\n if (value == null) {\n return Justify.FlexStart;\n }\n switch (value.toLowerCase()) {\n case \"flex-start\":\n return Justify.FlexStart;\n case \"center\":\n return Justify.Center;\n case \"flex-end\":\n return Justify.FlexEnd;\n case \"space-between\":\n return Justify.SpaceBetween;\n case \"space-around\":\n return Justify.SpaceAround;\n case \"space-evenly\":\n return Justify.SpaceEvenly;\n default:\n return Justify.FlexStart;\n }\n}\nfunction parseLogLevel(value) {\n if (value == null) {\n return LogLevel.Info;\n }\n switch (value.toLowerCase()) {\n case \"error\":\n return LogLevel.Error;\n case \"warn\":\n return LogLevel.Warn;\n case \"info\":\n return LogLevel.Info;\n case \"debug\":\n return LogLevel.Debug;\n case \"verbose\":\n return LogLevel.Verbose;\n case \"fatal\":\n return LogLevel.Fatal;\n default:\n return LogLevel.Info;\n }\n}\nfunction parseMeasureMode(value) {\n if (value == null) {\n return MeasureMode.Undefined;\n }\n switch (value.toLowerCase()) {\n case \"undefined\":\n return MeasureMode.Undefined;\n case \"exactly\":\n return MeasureMode.Exactly;\n case \"at-most\":\n return MeasureMode.AtMost;\n default:\n return MeasureMode.Undefined;\n }\n}\nfunction parseOverflow(value) {\n if (value == null) {\n return Overflow.Visible;\n }\n switch (value.toLowerCase()) {\n case \"visible\":\n return Overflow.Visible;\n case \"hidden\":\n return Overflow.Hidden;\n case \"scroll\":\n return Overflow.Scroll;\n default:\n return Overflow.Visible;\n }\n}\nfunction parsePositionType(value) {\n if (value == null) {\n return PositionType.Relative;\n }\n switch (value.toLowerCase()) {\n case \"static\":\n return PositionType.Static;\n case \"relative\":\n return PositionType.Relative;\n case \"absolute\":\n return PositionType.Absolute;\n default:\n return PositionType.Static;\n }\n}\nfunction parseUnit(value) {\n if (value == null) {\n return Unit.Point;\n }\n switch (value.toLowerCase()) {\n case \"undefined\":\n return Unit.Undefined;\n case \"point\":\n return Unit.Point;\n case \"percent\":\n return Unit.Percent;\n case \"auto\":\n return Unit.Auto;\n default:\n return Unit.Point;\n }\n}\nfunction parseWrap(value) {\n if (value == null) {\n return Wrap.NoWrap;\n }\n switch (value.toLowerCase()) {\n case \"no-wrap\":\n return Wrap.NoWrap;\n case \"wrap\":\n return Wrap.Wrap;\n case \"wrap-reverse\":\n return Wrap.WrapReverse;\n default:\n return Wrap.NoWrap;\n }\n}\n\n// src/lib/parse.mouse.ts\nclass MouseParser {\n mouseButtonsPressed = new Set;\n static SCROLL_DIRECTIONS = {\n 0: \"up\",\n 1: \"down\",\n 2: \"left\",\n 3: \"right\"\n };\n reset() {\n this.mouseButtonsPressed.clear();\n }\n decodeInput(data) {\n return data.toString();\n }\n parseMouseEvent(data) {\n const str = this.decodeInput(data);\n const parsed = this.parseMouseSequenceAt(str, 0);\n return parsed?.event ?? null;\n }\n parseAllMouseEvents(data) {\n const str = this.decodeInput(data);\n const events = [];\n let offset = 0;\n while (offset < str.length) {\n const parsed = this.parseMouseSequenceAt(str, offset);\n if (!parsed) {\n break;\n }\n events.push(parsed.event);\n offset += parsed.consumed;\n }\n return events;\n }\n parseMouseSequenceAt(str, offset) {\n if (!str.startsWith(\"\\x1B[\", offset))\n return null;\n const introducer = str[offset + 2];\n if (introducer === \"<\") {\n return this.parseSgrSequence(str, offset);\n }\n if (introducer === \"M\") {\n return this.parseBasicSequence(str, offset);\n }\n return null;\n }\n parseSgrSequence(str, offset) {\n let index = offset + 3;\n const values = [0, 0, 0];\n let part = 0;\n let hasDigit = false;\n while (index < str.length) {\n const char = str[index];\n const charCode = str.charCodeAt(index);\n if (charCode >= 48 && charCode <= 57) {\n hasDigit = true;\n values[part] = values[part] * 10 + (charCode - 48);\n index++;\n continue;\n }\n switch (char) {\n case \";\": {\n if (!hasDigit || part >= 2)\n return null;\n part++;\n hasDigit = false;\n index++;\n break;\n }\n case \"M\":\n case \"m\": {\n if (!hasDigit || part !== 2)\n return null;\n return {\n event: this.decodeSgrEvent(values[0], values[1], values[2], char),\n consumed: index - offset + 1\n };\n }\n default:\n return null;\n }\n }\n return null;\n }\n parseBasicSequence(str, offset) {\n if (offset + 6 > str.length)\n return null;\n const buttonByte = str.charCodeAt(offset + 3) - 32;\n const x = str.charCodeAt(offset + 4) - 33;\n const y = str.charCodeAt(offset + 5) - 33;\n return {\n event: this.decodeBasicEvent(buttonByte, x, y),\n consumed: 6\n };\n }\n decodeSgrEvent(rawButtonCode, wireX, wireY, pressRelease) {\n const button = rawButtonCode & 3;\n const isScroll = (rawButtonCode & 64) !== 0;\n const scrollDirection = !isScroll ? undefined : MouseParser.SCROLL_DIRECTIONS[button];\n const isMotion = (rawButtonCode & 32) !== 0;\n const modifiers = {\n shift: (rawButtonCode & 4) !== 0,\n alt: (rawButtonCode & 8) !== 0,\n ctrl: (rawButtonCode & 16) !== 0\n };\n let type;\n let scrollInfo;\n if (isScroll && pressRelease === \"M\") {\n type = \"scroll\";\n scrollInfo = {\n direction: scrollDirection,\n delta: 1\n };\n } else if (isMotion) {\n const isDragging = this.mouseButtonsPressed.size > 0;\n if (button === 3) {\n type = \"move\";\n } else if (isDragging) {\n type = \"drag\";\n } else {\n type = \"move\";\n }\n } else {\n type = pressRelease === \"M\" ? \"down\" : \"up\";\n if (type === \"down\" && button !== 3) {\n this.mouseButtonsPressed.add(button);\n } else if (type === \"up\") {\n this.mouseButtonsPressed.clear();\n }\n }\n return {\n type,\n button: button === 3 ? 0 : button,\n x: wireX - 1,\n y: wireY - 1,\n modifiers,\n scroll: scrollInfo\n };\n }\n decodeBasicEvent(buttonByte, x, y) {\n const button = buttonByte & 3;\n const isScroll = (buttonByte & 64) !== 0;\n const isMotion = (buttonByte & 32) !== 0;\n const scrollDirection = !isScroll ? undefined : MouseParser.SCROLL_DIRECTIONS[button];\n const modifiers = {\n shift: (buttonByte & 4) !== 0,\n alt: (buttonByte & 8) !== 0,\n ctrl: (buttonByte & 16) !== 0\n };\n let type;\n let actualButton;\n let scrollInfo;\n if (isScroll) {\n type = \"scroll\";\n actualButton = 0;\n scrollInfo = {\n direction: scrollDirection,\n delta: 1\n };\n } else if (isMotion) {\n type = \"move\";\n actualButton = button === 3 ? -1 : button;\n } else {\n type = button === 3 ? \"up\" : \"down\";\n actualButton = button === 3 ? 0 : button;\n }\n return {\n type,\n button: actualButton,\n x,\n y,\n modifiers,\n scroll: scrollInfo\n };\n }\n}\n\n// src/lib/selection.ts\nclass SelectionAnchor {\n renderable;\n relativeX;\n relativeY;\n constructor(renderable, absoluteX, absoluteY) {\n this.renderable = renderable;\n this.relativeX = absoluteX - this.renderable.x;\n this.relativeY = absoluteY - this.renderable.y;\n }\n get x() {\n return this.renderable.x + this.relativeX;\n }\n get y() {\n return this.renderable.y + this.relativeY;\n }\n}\n\nclass Selection {\n _anchor;\n _focus;\n _selectedRenderables = [];\n _touchedRenderables = [];\n _isActive = true;\n _isDragging = true;\n _isStart = false;\n constructor(anchorRenderable, anchor, focus) {\n this._anchor = new SelectionAnchor(anchorRenderable, anchor.x, anchor.y);\n this._focus = { ...focus };\n }\n get isStart() {\n return this._isStart;\n }\n set isStart(value) {\n this._isStart = value;\n }\n get anchor() {\n return { x: this._anchor.x, y: this._anchor.y };\n }\n get focus() {\n return { ...this._focus };\n }\n set focus(value) {\n this._focus = { ...value };\n }\n get isActive() {\n return this._isActive;\n }\n set isActive(value) {\n this._isActive = value;\n }\n get isDragging() {\n return this._isDragging;\n }\n set isDragging(value) {\n this._isDragging = value;\n }\n get bounds() {\n const minX = Math.min(this._anchor.x, this._focus.x);\n const maxX = Math.max(this._anchor.x, this._focus.x);\n const minY = Math.min(this._anchor.y, this._focus.y);\n const maxY = Math.max(this._anchor.y, this._focus.y);\n const width = maxX - minX + 1;\n const height = maxY - minY + 1;\n return {\n x: minX,\n y: minY,\n width,\n height\n };\n }\n updateSelectedRenderables(selectedRenderables) {\n this._selectedRenderables = selectedRenderables;\n }\n get selectedRenderables() {\n return this._selectedRenderables;\n }\n updateTouchedRenderables(touchedRenderables) {\n this._touchedRenderables = touchedRenderables;\n }\n get touchedRenderables() {\n return this._touchedRenderables;\n }\n getSelectedText() {\n const selectedTexts = this._selectedRenderables.sort((a, b) => {\n const aY = a.y;\n const bY = b.y;\n if (aY !== bY) {\n return aY - bY;\n }\n return a.x - b.x;\n }).filter((renderable) => !renderable.isDestroyed).map((renderable) => renderable.getSelectedText()).filter((text) => text);\n return selectedTexts.join(`\n`);\n }\n}\nfunction convertGlobalToLocalSelection(globalSelection, localX, localY) {\n if (!globalSelection?.isActive) {\n return null;\n }\n return {\n anchorX: globalSelection.anchor.x - localX,\n anchorY: globalSelection.anchor.y - localY,\n focusX: globalSelection.focus.x - localX,\n focusY: globalSelection.focus.y - localY,\n isActive: true\n };\n}\n\nclass ASCIIFontSelectionHelper {\n getText;\n getFont;\n localSelection = null;\n constructor(getText, getFont) {\n this.getText = getText;\n this.getFont = getFont;\n }\n hasSelection() {\n return this.localSelection !== null;\n }\n getSelection() {\n return this.localSelection;\n }\n shouldStartSelection(localX, localY, width, height) {\n if (localX < 0 || localX >= width || localY < 0 || localY >= height) {\n return false;\n }\n const text = this.getText();\n const font = this.getFont();\n const charIndex = coordinateToCharacterIndex(localX, text, font);\n return charIndex >= 0 && charIndex <= text.length;\n }\n onLocalSelectionChanged(localSelection, width, height) {\n const previousSelection = this.localSelection;\n if (!localSelection?.isActive) {\n this.localSelection = null;\n return previousSelection !== null;\n }\n const text = this.getText();\n const font = this.getFont();\n const selStart = { x: localSelection.anchorX, y: localSelection.anchorY };\n const selEnd = { x: localSelection.focusX, y: localSelection.focusY };\n if (height - 1 < selStart.y || 0 > selEnd.y) {\n this.localSelection = null;\n return previousSelection !== null;\n }\n let startCharIndex = 0;\n let endCharIndex = text.length;\n if (selStart.y > height - 1) {\n this.localSelection = null;\n return previousSelection !== null;\n } else if (selStart.y >= 0 && selStart.y <= height - 1) {\n if (selStart.x > 0) {\n startCharIndex = coordinateToCharacterIndex(selStart.x, text, font);\n }\n }\n if (selEnd.y < 0) {\n this.localSelection = null;\n return previousSelection !== null;\n } else if (selEnd.y >= 0 && selEnd.y <= height - 1) {\n if (selEnd.x >= 0) {\n endCharIndex = coordinateToCharacterIndex(selEnd.x, text, font);\n } else {\n endCharIndex = 0;\n }\n }\n if (startCharIndex < endCharIndex && startCharIndex >= 0 && endCharIndex <= text.length) {\n this.localSelection = { start: startCharIndex, end: endCharIndex };\n } else {\n this.localSelection = null;\n }\n return previousSelection?.start !== this.localSelection?.start || previousSelection?.end !== this.localSelection?.end;\n }\n}\n\n// src/lib/singleton.ts\nvar singletonCacheSymbol = Symbol.for(\"@opentui/core/singleton\");\nfunction singleton(key, factory) {\n const bag = globalThis[singletonCacheSymbol] ??= {};\n if (!(key in bag)) {\n bag[key] = factory();\n }\n return bag[key];\n}\nfunction destroySingleton(key) {\n const bag = globalThis[singletonCacheSymbol];\n if (bag && key in bag) {\n delete bag[key];\n }\n}\nfunction hasSingleton(key) {\n const bag = globalThis[singletonCacheSymbol];\n return bag && key in bag;\n}\n\n// src/lib/env.ts\nvar envRegistry = singleton(\"env-registry\", () => ({}));\nfunction registerEnvVar(config) {\n const existing = envRegistry[config.name];\n if (existing) {\n if (existing.description !== config.description || existing.type !== config.type || existing.default !== config.default) {\n throw new Error(`Environment variable \"${config.name}\" is already registered with different configuration. ` + `Existing: ${JSON.stringify(existing)}, New: ${JSON.stringify(config)}`);\n }\n return;\n }\n envRegistry[config.name] = config;\n}\nfunction normalizeBoolean(value) {\n const lowerValue = value.toLowerCase();\n return [\"true\", \"1\", \"on\", \"yes\"].includes(lowerValue);\n}\nfunction parseEnvValue(config) {\n const envValue = process.env[config.name];\n if (envValue === undefined && config.default !== undefined) {\n return config.default;\n }\n if (envValue === undefined) {\n throw new Error(`Required environment variable ${config.name} is not set. ${config.description}`);\n }\n switch (config.type) {\n case \"boolean\":\n return typeof envValue === \"boolean\" ? envValue : normalizeBoolean(envValue);\n case \"number\":\n const numValue = Number(envValue);\n if (isNaN(numValue)) {\n throw new Error(`Environment variable ${config.name} must be a valid number, got: ${envValue}`);\n }\n return numValue;\n case \"string\":\n default:\n return envValue;\n }\n}\n\nclass EnvStore {\n parsedValues = new Map;\n get(key) {\n if (this.parsedValues.has(key)) {\n return this.parsedValues.get(key);\n }\n if (!(key in envRegistry)) {\n throw new Error(`Environment variable ${key} is not registered.`);\n }\n try {\n const value = parseEnvValue(envRegistry[key]);\n this.parsedValues.set(key, value);\n return value;\n } catch (error) {\n throw new Error(`Failed to parse env var ${key}: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n has(key) {\n return key in envRegistry;\n }\n clearCache() {\n this.parsedValues.clear();\n }\n}\nvar envStore = singleton(\"env-store\", () => new EnvStore);\nfunction clearEnvCache() {\n envStore.clearCache();\n}\nfunction generateEnvMarkdown() {\n const configs = Object.values(envRegistry);\n if (configs.length === 0) {\n return `# Environment Variables\n\nNo environment variables registered.\n`;\n }\n let markdown = `# Environment Variables\n\n`;\n for (const config of configs) {\n markdown += `## ${config.name}\n\n`;\n markdown += `${config.description}\n\n`;\n markdown += `**Type:** \\`${config.type || \"string\"}\\` \n`;\n if (config.default !== undefined) {\n const defaultValue = typeof config.default === \"string\" ? `\"${config.default}\"` : String(config.default);\n markdown += `**Default:** \\`${defaultValue}\\`\n`;\n } else {\n markdown += `**Default:** *Required*\n`;\n }\n markdown += `\n`;\n }\n return markdown;\n}\nfunction generateEnvColored() {\n const configs = Object.values(envRegistry);\n if (configs.length === 0) {\n return `\\x1B[1;36mEnvironment Variables\\x1B[0m\n\nNo environment variables registered.\n`;\n }\n let output = `\\x1B[1;36mEnvironment Variables\\x1B[0m\n\n`;\n for (const config of configs) {\n output += `\\x1B[1;33m${config.name}\\x1B[0m\n`;\n output += `${config.description}\n`;\n output += `\\x1B[32mType:\\x1B[0m \\x1B[36m${config.type || \"string\"}\\x1B[0m\n`;\n if (config.default !== undefined) {\n const defaultValue = typeof config.default === \"string\" ? `\"${config.default}\"` : String(config.default);\n output += `\\x1B[32mDefault:\\x1B[0m \\x1B[35m${defaultValue}\\x1B[0m\n`;\n } else {\n output += `\\x1B[32mDefault:\\x1B[0m \\x1B[31mRequired\\x1B[0m\n`;\n }\n output += `\n`;\n }\n return output;\n}\nvar env = new Proxy({}, {\n get(target, prop) {\n if (typeof prop !== \"string\") {\n return;\n }\n return envStore.get(prop);\n },\n has(target, prop) {\n return envStore.has(prop);\n },\n ownKeys() {\n return Object.keys(envRegistry);\n },\n getOwnPropertyDescriptor(target, prop) {\n if (envStore.has(prop)) {\n return {\n enumerable: true,\n configurable: true,\n get: () => envStore.get(prop)\n };\n }\n return;\n }\n});\n\n// src/lib/tree-sitter-styled-text.ts\nregisterEnvVar({ name: \"OTUI_TS_STYLE_WARN\", default: false, description: \"Enable warnings for missing syntax styles\" });\nfunction getSpecificity(group) {\n return group.split(\".\").length;\n}\nfunction shouldSuppressInInjection(group, meta) {\n if (meta?.isInjection) {\n return false;\n }\n return group === \"markup.raw.block\";\n}\nfunction treeSitterToTextChunks(content, highlights, syntaxStyle, options) {\n const chunks = [];\n const defaultStyle = syntaxStyle.getStyle(\"default\");\n const concealEnabled = options?.enabled ?? true;\n const injectionContainerRanges = [];\n const boundaries = [];\n for (let i = 0;i < highlights.length; i++) {\n const [start, end, , meta] = highlights[i];\n if (start === end)\n continue;\n if (meta?.containsInjection) {\n injectionContainerRanges.push({ start, end });\n }\n boundaries.push({ offset: start, type: \"start\", highlightIndex: i });\n boundaries.push({ offset: end, type: \"end\", highlightIndex: i });\n }\n boundaries.sort((a, b) => {\n if (a.offset !== b.offset)\n return a.offset - b.offset;\n if (a.type === \"end\" && b.type === \"start\")\n return -1;\n if (a.type === \"start\" && b.type === \"end\")\n return 1;\n return 0;\n });\n const activeHighlights = new Set;\n let currentOffset = 0;\n for (let i = 0;i < boundaries.length; i++) {\n const boundary = boundaries[i];\n if (currentOffset < boundary.offset && activeHighlights.size > 0) {\n const segmentText = content.slice(currentOffset, boundary.offset);\n const activeGroups = [];\n for (const idx of activeHighlights) {\n const [, , group, meta] = highlights[idx];\n activeGroups.push({ group, meta, index: idx });\n }\n const concealHighlight = concealEnabled ? activeGroups.find((h) => h.meta?.conceal !== undefined || h.group === \"conceal\" || h.group.startsWith(\"conceal.\")) : undefined;\n if (concealHighlight) {\n let replacementText = \"\";\n if (concealHighlight.meta?.conceal !== undefined) {\n replacementText = concealHighlight.meta.conceal;\n } else if (concealHighlight.group === \"conceal.with.space\") {\n replacementText = \" \";\n }\n if (replacementText) {\n chunks.push({\n __isChunk: true,\n text: replacementText,\n fg: defaultStyle?.fg,\n bg: defaultStyle?.bg,\n attributes: defaultStyle ? createTextAttributes({\n bold: defaultStyle.bold,\n italic: defaultStyle.italic,\n underline: defaultStyle.underline,\n dim: defaultStyle.dim\n }) : 0\n });\n }\n } else {\n const insideInjectionContainer = injectionContainerRanges.some((range) => currentOffset >= range.start && currentOffset < range.end);\n const validGroups = activeGroups.filter((h) => {\n if (insideInjectionContainer && shouldSuppressInInjection(h.group, h.meta)) {\n return false;\n }\n return true;\n });\n const sortedGroups = validGroups.sort((a, b) => {\n const aSpec = getSpecificity(a.group);\n const bSpec = getSpecificity(b.group);\n if (aSpec !== bSpec)\n return aSpec - bSpec;\n return a.index - b.index;\n });\n const mergedStyle = {};\n for (const { group } of sortedGroups) {\n let styleForGroup = syntaxStyle.getStyle(group);\n if (!styleForGroup && group.includes(\".\")) {\n const baseName = group.split(\".\")[0];\n styleForGroup = syntaxStyle.getStyle(baseName);\n }\n if (styleForGroup) {\n if (styleForGroup.fg !== undefined)\n mergedStyle.fg = styleForGroup.fg;\n if (styleForGroup.bg !== undefined)\n mergedStyle.bg = styleForGroup.bg;\n if (styleForGroup.bold !== undefined)\n mergedStyle.bold = styleForGroup.bold;\n if (styleForGroup.italic !== undefined)\n mergedStyle.italic = styleForGroup.italic;\n if (styleForGroup.underline !== undefined)\n mergedStyle.underline = styleForGroup.underline;\n if (styleForGroup.dim !== undefined)\n mergedStyle.dim = styleForGroup.dim;\n } else {\n if (group.includes(\".\")) {\n const baseName = group.split(\".\")[0];\n if (env.OTUI_TS_STYLE_WARN) {\n console.warn(`Syntax style not found for group \"${group}\" or base scope \"${baseName}\", using default style`);\n }\n } else {\n if (env.OTUI_TS_STYLE_WARN) {\n console.warn(`Syntax style not found for group \"${group}\", using default style`);\n }\n }\n }\n }\n const finalStyle = Object.keys(mergedStyle).length > 0 ? mergedStyle : defaultStyle;\n chunks.push({\n __isChunk: true,\n text: segmentText,\n fg: finalStyle?.fg,\n bg: finalStyle?.bg,\n attributes: finalStyle ? createTextAttributes({\n bold: finalStyle.bold,\n italic: finalStyle.italic,\n underline: finalStyle.underline,\n dim: finalStyle.dim\n }) : 0\n });\n }\n } else if (currentOffset < boundary.offset) {\n const text = content.slice(currentOffset, boundary.offset);\n chunks.push({\n __isChunk: true,\n text,\n fg: defaultStyle?.fg,\n bg: defaultStyle?.bg,\n attributes: defaultStyle ? createTextAttributes({\n bold: defaultStyle.bold,\n italic: defaultStyle.italic,\n underline: defaultStyle.underline,\n dim: defaultStyle.dim\n }) : 0\n });\n }\n if (boundary.type === \"start\") {\n activeHighlights.add(boundary.highlightIndex);\n } else {\n activeHighlights.delete(boundary.highlightIndex);\n if (concealEnabled) {\n const [, , group, meta] = highlights[boundary.highlightIndex];\n if (meta?.concealLines !== undefined) {\n if (boundary.offset < content.length && content[boundary.offset] === `\n`) {\n currentOffset = boundary.offset + 1;\n continue;\n }\n }\n if (meta?.conceal !== undefined) {\n if (meta.conceal === \" \") {\n if (boundary.offset < content.length && content[boundary.offset] === \" \") {\n currentOffset = boundary.offset + 1;\n continue;\n }\n } else if (meta.conceal === \"\" && group === \"conceal\" && !meta.isInjection) {\n if (boundary.offset < content.length && content[boundary.offset] === \" \") {\n currentOffset = boundary.offset + 1;\n continue;\n }\n }\n }\n }\n }\n currentOffset = boundary.offset;\n }\n if (currentOffset < content.length) {\n const text = content.slice(currentOffset);\n chunks.push({\n __isChunk: true,\n text,\n fg: defaultStyle?.fg,\n bg: defaultStyle?.bg,\n attributes: defaultStyle ? createTextAttributes({\n bold: defaultStyle.bold,\n italic: defaultStyle.italic,\n underline: defaultStyle.underline,\n dim: defaultStyle.dim\n }) : 0\n });\n }\n return chunks;\n}\nasync function treeSitterToStyledText(content, filetype, syntaxStyle, client, options) {\n const result = await client.highlightOnce(content, filetype);\n if (result.highlights && result.highlights.length > 0) {\n const chunks = treeSitterToTextChunks(content, result.highlights, syntaxStyle, options?.conceal);\n return new StyledText(chunks);\n } else {\n const defaultStyle = syntaxStyle.mergeStyles(\"default\");\n const chunks = [\n {\n __isChunk: true,\n text: content,\n fg: defaultStyle.fg,\n bg: defaultStyle.bg,\n attributes: defaultStyle.attributes\n }\n ];\n return new StyledText(chunks);\n }\n}\n\n// src/lib/tree-sitter/client.ts\nimport { EventEmitter as EventEmitter3 } from \"events\";\n\n// src/lib/debounce.ts\nvar TIMERS_MAP = new Map;\n\nclass DebounceController {\n scopeId;\n constructor(scopeId) {\n this.scopeId = scopeId;\n if (!TIMERS_MAP.has(this.scopeId)) {\n TIMERS_MAP.set(this.scopeId, new Map);\n }\n }\n debounce(id, ms, fn) {\n const scopeMap = TIMERS_MAP.get(this.scopeId);\n return new Promise((resolve, reject) => {\n if (scopeMap.has(id)) {\n clearTimeout(scopeMap.get(id));\n }\n const timerId = setTimeout(() => {\n try {\n resolve(fn());\n } catch (error) {\n reject(error);\n }\n scopeMap.delete(id);\n }, ms);\n scopeMap.set(id, timerId);\n });\n }\n clearDebounce(id) {\n const scopeMap = TIMERS_MAP.get(this.scopeId);\n if (scopeMap && scopeMap.has(id)) {\n clearTimeout(scopeMap.get(id));\n scopeMap.delete(id);\n }\n }\n clear() {\n const scopeMap = TIMERS_MAP.get(this.scopeId);\n if (scopeMap) {\n scopeMap.forEach((timerId) => clearTimeout(timerId));\n scopeMap.clear();\n }\n }\n}\nfunction createDebounce(scopeId) {\n return new DebounceController(scopeId);\n}\nfunction clearDebounceScope(scopeId) {\n const scopeMap = TIMERS_MAP.get(scopeId);\n if (scopeMap) {\n scopeMap.forEach((timerId) => clearTimeout(timerId));\n scopeMap.clear();\n }\n}\n\n// src/lib/queue.ts\nclass ProcessQueue {\n processor;\n queue = [];\n processing = false;\n autoProcess = true;\n constructor(processor, autoProcess = true) {\n this.processor = processor;\n this.autoProcess = autoProcess;\n }\n enqueue(item) {\n this.queue.push(item);\n if (!this.processing && this.autoProcess) {\n this.processQueue();\n }\n }\n processQueue() {\n if (this.queue.length === 0) {\n return;\n }\n this.processing = true;\n queueMicrotask(async () => {\n if (this.queue.length === 0) {\n this.processing = false;\n return;\n }\n const item = this.queue.shift();\n try {\n await this.processor(item);\n } catch (error) {\n console.error(\"Error processing queue item:\", error);\n }\n if (this.queue.length > 0) {\n this.processQueue();\n } else {\n this.processing = false;\n }\n });\n }\n clear() {\n this.queue = [];\n }\n isProcessing() {\n return this.processing;\n }\n size() {\n return this.queue.length;\n }\n}\n\n// src/lib/tree-sitter/default-parsers.ts\nimport { resolve, dirname } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport javascript_highlights from \"./assets/javascript/highlights.scm\" with { type: \"file\" };\nimport javascript_language from \"./assets/javascript/tree-sitter-javascript.wasm\" with { type: \"file\" };\nimport typescript_highlights from \"./assets/typescript/highlights.scm\" with { type: \"file\" };\nimport typescript_language from \"./assets/typescript/tree-sitter-typescript.wasm\" with { type: \"file\" };\nimport markdown_highlights from \"./assets/markdown/highlights.scm\" with { type: \"file\" };\nimport markdown_language from \"./assets/markdown/tree-sitter-markdown.wasm\" with { type: \"file\" };\nimport markdown_injections from \"./assets/markdown/injections.scm\" with { type: \"file\" };\nimport markdown_inline_highlights from \"./assets/markdown_inline/highlights.scm\" with { type: \"file\" };\nimport markdown_inline_language from \"./assets/markdown_inline/tree-sitter-markdown_inline.wasm\" with { type: \"file\" };\nimport zig_highlights from \"./assets/zig/highlights.scm\" with { type: \"file\" };\nimport zig_language from \"./assets/zig/tree-sitter-zig.wasm\" with { type: \"file\" };\nvar _cachedParsers;\nfunction getParsers() {\n if (!_cachedParsers) {\n _cachedParsers = [\n {\n filetype: \"javascript\",\n queries: {\n highlights: [resolve(dirname(fileURLToPath(import.meta.url)), javascript_highlights)]\n },\n wasm: resolve(dirname(fileURLToPath(import.meta.url)), javascript_language)\n },\n {\n filetype: \"typescript\",\n queries: {\n highlights: [resolve(dirname(fileURLToPath(import.meta.url)), typescript_highlights)]\n },\n wasm: resolve(dirname(fileURLToPath(import.meta.url)), typescript_language)\n },\n {\n filetype: \"markdown\",\n queries: {\n highlights: [resolve(dirname(fileURLToPath(import.meta.url)), markdown_highlights)],\n injections: [resolve(dirname(fileURLToPath(import.meta.url)), markdown_injections)]\n },\n wasm: resolve(dirname(fileURLToPath(import.meta.url)), markdown_language),\n injectionMapping: {\n nodeTypes: {\n inline: \"markdown_inline\",\n pipe_table_cell: \"markdown_inline\"\n },\n infoStringMap: {\n javascript: \"javascript\",\n js: \"javascript\",\n typescript: \"typescript\",\n ts: \"typescript\",\n markdown: \"markdown\",\n md: \"markdown\"\n }\n }\n },\n {\n filetype: \"markdown_inline\",\n queries: {\n highlights: [resolve(dirname(fileURLToPath(import.meta.url)), markdown_inline_highlights)]\n },\n wasm: resolve(dirname(fileURLToPath(import.meta.url)), markdown_inline_language)\n },\n {\n filetype: \"zig\",\n queries: {\n highlights: [resolve(dirname(fileURLToPath(import.meta.url)), zig_highlights)]\n },\n wasm: resolve(dirname(fileURLToPath(import.meta.url)), zig_language)\n }\n ];\n }\n return _cachedParsers;\n}\n\n// src/lib/tree-sitter/client.ts\nimport { resolve as resolve2, isAbsolute, parse } from \"path\";\nimport { existsSync } from \"fs\";\n\n// src/lib/bunfs.ts\nimport { basename, join } from \"path\";\nfunction isBunfsPath(path) {\n return path.includes(\"$bunfs\") || /^B:[\\\\/]~BUN/i.test(path);\n}\nfunction getBunfsRootPath() {\n return process.platform === \"win32\" ? \"B:\\\\~BUN\\\\root\" : \"/$bunfs/root\";\n}\nfunction normalizeBunfsPath(fileName) {\n return join(getBunfsRootPath(), basename(fileName));\n}\n\n// src/lib/tree-sitter/client.ts\nregisterEnvVar({\n name: \"OTUI_TREE_SITTER_WORKER_PATH\",\n description: \"Path to the TreeSitter worker\",\n type: \"string\",\n default: \"\"\n});\nvar DEFAULT_PARSERS = getParsers();\nfunction addDefaultParsers(parsers) {\n for (const parser of parsers) {\n const existingIndex = DEFAULT_PARSERS.findIndex((p) => p.filetype === parser.filetype);\n if (existingIndex >= 0) {\n DEFAULT_PARSERS[existingIndex] = parser;\n } else {\n DEFAULT_PARSERS.push(parser);\n }\n }\n}\nvar isUrl = (path) => path.startsWith(\"http://\") || path.startsWith(\"https://\");\n\nclass TreeSitterClient extends EventEmitter3 {\n initialized = false;\n worker;\n buffers = new Map;\n initializePromise;\n initializeResolvers;\n messageCallbacks = new Map;\n messageIdCounter = 0;\n editQueues = new Map;\n debouncer;\n options;\n constructor(options) {\n super();\n this.options = options;\n this.debouncer = createDebounce(\"tree-sitter-client\");\n this.startWorker();\n }\n emitError(error, bufferId) {\n if (this.listenerCount(\"error\") > 0) {\n this.emit(\"error\", error, bufferId);\n }\n }\n emitWarning(warning, bufferId) {\n if (this.listenerCount(\"warning\") > 0) {\n this.emit(\"warning\", warning, bufferId);\n }\n }\n startWorker() {\n if (this.worker) {\n return;\n }\n let worker_path;\n if (env.OTUI_TREE_SITTER_WORKER_PATH) {\n worker_path = env.OTUI_TREE_SITTER_WORKER_PATH;\n } else if (typeof OTUI_TREE_SITTER_WORKER_PATH !== \"undefined\") {\n worker_path = OTUI_TREE_SITTER_WORKER_PATH;\n } else if (this.options.workerPath) {\n worker_path = this.options.workerPath;\n } else {\n worker_path = new URL(\"./parser.worker.js\", import.meta.url).href;\n if (!existsSync(resolve2(import.meta.dirname, \"parser.worker.js\"))) {\n worker_path = new URL(\"./parser.worker.ts\", import.meta.url).href;\n }\n }\n this.worker = new Worker(worker_path);\n this.worker.onmessage = this.handleWorkerMessage.bind(this);\n this.worker.onerror = (error) => {\n console.error(\"TreeSitter worker error:\", error.message);\n if (this.initializeResolvers) {\n clearTimeout(this.initializeResolvers.timeoutId);\n this.initializeResolvers.reject(new Error(`Worker error: ${error.message}`));\n this.initializeResolvers = undefined;\n }\n this.emitError(`Worker error: ${error.message}`);\n };\n }\n stopWorker() {\n if (!this.worker) {\n return;\n }\n this.worker.terminate();\n this.worker = undefined;\n }\n handleReset() {\n this.buffers.clear();\n this.stopWorker();\n this.startWorker();\n this.initializePromise = undefined;\n this.initializeResolvers = undefined;\n return this.initialize();\n }\n async initialize() {\n if (this.initializePromise) {\n return this.initializePromise;\n }\n this.initializePromise = new Promise((resolve3, reject) => {\n const timeoutMs = this.options.initTimeout ?? 1e4;\n const timeoutId = setTimeout(() => {\n const error = new Error(\"Worker initialization timed out\");\n console.error(\"TreeSitter client:\", error.message);\n this.initializeResolvers = undefined;\n reject(error);\n }, timeoutMs);\n this.initializeResolvers = { resolve: resolve3, reject, timeoutId };\n this.worker?.postMessage({\n type: \"INIT\",\n dataPath: this.options.dataPath\n });\n });\n await this.initializePromise;\n await this.registerDefaultParsers();\n return this.initializePromise;\n }\n async registerDefaultParsers() {\n for (const parser of DEFAULT_PARSERS) {\n this.addFiletypeParser(parser);\n }\n }\n resolvePath(path) {\n if (isUrl(path)) {\n return path;\n }\n if (isBunfsPath(path)) {\n return normalizeBunfsPath(parse(path).base);\n }\n if (!isAbsolute(path)) {\n return resolve2(path);\n }\n return path;\n }\n addFiletypeParser(filetypeParser) {\n const resolvedParser = {\n ...filetypeParser,\n wasm: this.resolvePath(filetypeParser.wasm),\n queries: {\n highlights: filetypeParser.queries.highlights.map((path) => this.resolvePath(path)),\n injections: filetypeParser.queries.injections?.map((path) => this.resolvePath(path))\n }\n };\n this.worker?.postMessage({ type: \"ADD_FILETYPE_PARSER\", filetypeParser: resolvedParser });\n }\n async getPerformance() {\n const messageId = `performance_${this.messageIdCounter++}`;\n return new Promise((resolve3) => {\n this.messageCallbacks.set(messageId, resolve3);\n this.worker?.postMessage({ type: \"GET_PERFORMANCE\", messageId });\n });\n }\n async highlightOnce(content, filetype) {\n if (!this.initialized) {\n try {\n await this.initialize();\n } catch (error) {\n return { error: \"Could not highlight because of initialization error\" };\n }\n }\n const messageId = `oneshot_${this.messageIdCounter++}`;\n return new Promise((resolve3) => {\n this.messageCallbacks.set(messageId, resolve3);\n this.worker?.postMessage({\n type: \"ONESHOT_HIGHLIGHT\",\n content,\n filetype,\n messageId\n });\n });\n }\n handleWorkerMessage(event) {\n const { type, bufferId, error, highlights, warning, messageId, hasParser, performance: performance2, version } = event.data;\n if (type === \"HIGHLIGHT_RESPONSE\") {\n const buffer = this.buffers.get(bufferId);\n if (!buffer || !buffer.hasParser)\n return;\n if (buffer.version !== version) {\n this.resetBuffer(bufferId, buffer.version, buffer.content);\n return;\n }\n this.emit(\"highlights:response\", bufferId, version, highlights);\n }\n if (type === \"INIT_RESPONSE\") {\n if (this.initializeResolvers) {\n clearTimeout(this.initializeResolvers.timeoutId);\n if (error) {\n console.error(\"TreeSitter client initialization failed:\", error);\n this.initializeResolvers.reject(new Error(error));\n } else {\n this.initialized = true;\n this.initializeResolvers.resolve();\n }\n this.initializeResolvers = undefined;\n return;\n }\n }\n if (type === \"PARSER_INIT_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId);\n if (callback) {\n this.messageCallbacks.delete(messageId);\n callback({ hasParser, warning, error });\n }\n return;\n }\n if (type === \"PRELOAD_PARSER_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId);\n if (callback) {\n this.messageCallbacks.delete(messageId);\n callback({ hasParser });\n }\n return;\n }\n if (type === \"BUFFER_DISPOSED\") {\n const callback = this.messageCallbacks.get(`dispose_${bufferId}`);\n if (callback) {\n this.messageCallbacks.delete(`dispose_${bufferId}`);\n callback(true);\n }\n this.emit(\"buffer:disposed\", bufferId);\n return;\n }\n if (type === \"PERFORMANCE_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId);\n if (callback) {\n this.messageCallbacks.delete(messageId);\n callback(performance2);\n }\n return;\n }\n if (type === \"ONESHOT_HIGHLIGHT_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId);\n if (callback) {\n this.messageCallbacks.delete(messageId);\n callback({ highlights, warning, error });\n }\n return;\n }\n if (type === \"UPDATE_DATA_PATH_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId);\n if (callback) {\n this.messageCallbacks.delete(messageId);\n callback({ error });\n }\n return;\n }\n if (type === \"CLEAR_CACHE_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId);\n if (callback) {\n this.messageCallbacks.delete(messageId);\n callback({ error });\n }\n return;\n }\n if (warning) {\n this.emitWarning(warning, bufferId);\n return;\n }\n if (error) {\n this.emitError(error, bufferId);\n return;\n }\n if (type === \"WORKER_LOG\") {\n const { logType, data } = event.data;\n const message = data.join(\" \");\n this.emit(\"worker:log\", logType, message);\n if (logType === \"log\") {\n console.log(\"TSWorker:\", ...data);\n } else if (logType === \"error\") {\n console.error(\"TSWorker:\", ...data);\n } else if (logType === \"warn\") {\n console.warn(\"TSWorker:\", ...data);\n }\n return;\n }\n }\n async preloadParser(filetype) {\n const messageId = `has_parser_${this.messageIdCounter++}`;\n const response = await new Promise((resolve3) => {\n this.messageCallbacks.set(messageId, resolve3);\n this.worker?.postMessage({\n type: \"PRELOAD_PARSER\",\n filetype,\n messageId\n });\n });\n return response.hasParser;\n }\n async createBuffer(id, content, filetype, version = 1, autoInitialize = true) {\n if (!this.initialized) {\n if (!autoInitialize) {\n this.emitError(\"Could not create buffer because client is not initialized\");\n return false;\n }\n try {\n await this.initialize();\n } catch (error) {\n this.emitError(\"Could not create buffer because of initialization error\");\n return false;\n }\n }\n if (this.buffers.has(id)) {\n throw new Error(`Buffer with id ${id} already exists`);\n }\n this.buffers.set(id, { id, content, filetype, version, hasParser: false });\n const messageId = `init_${this.messageIdCounter++}`;\n const response = await new Promise((resolve3) => {\n this.messageCallbacks.set(messageId, resolve3);\n this.worker?.postMessage({\n type: \"INITIALIZE_PARSER\",\n bufferId: id,\n version,\n content,\n filetype,\n messageId\n });\n });\n if (!response.hasParser) {\n this.emit(\"buffer:initialized\", id, false);\n if (filetype !== \"plaintext\") {\n this.emitWarning(response.warning || response.error || \"Buffer has no parser\", id);\n }\n return false;\n }\n const bufferState = { id, content, filetype, version, hasParser: true };\n this.buffers.set(id, bufferState);\n this.emit(\"buffer:initialized\", id, true);\n return true;\n }\n async updateBuffer(id, edits, newContent, version) {\n if (!this.initialized) {\n return;\n }\n const buffer = this.buffers.get(id);\n if (!buffer || !buffer.hasParser) {\n return;\n }\n this.buffers.set(id, { ...buffer, content: newContent, version });\n if (!this.editQueues.has(id)) {\n this.editQueues.set(id, new ProcessQueue((item) => this.processEdit(id, item.edits, item.newContent, item.version, item.isReset)));\n }\n const bufferQueue = this.editQueues.get(id);\n bufferQueue.enqueue({ edits, newContent, version });\n }\n async processEdit(bufferId, edits, newContent, version, isReset = false) {\n this.worker?.postMessage({\n type: isReset ? \"RESET_BUFFER\" : \"HANDLE_EDITS\",\n bufferId,\n version,\n content: newContent,\n edits\n });\n }\n async removeBuffer(bufferId) {\n if (!this.initialized) {\n return;\n }\n this.buffers.delete(bufferId);\n if (this.editQueues.has(bufferId)) {\n this.editQueues.get(bufferId)?.clear();\n this.editQueues.delete(bufferId);\n }\n if (this.worker) {\n await new Promise((resolve3) => {\n const messageId = `dispose_${bufferId}`;\n this.messageCallbacks.set(messageId, resolve3);\n try {\n this.worker.postMessage({\n type: \"DISPOSE_BUFFER\",\n bufferId\n });\n } catch (error) {\n console.error(\"Error disposing buffer\", error);\n resolve3(false);\n }\n setTimeout(() => {\n if (this.messageCallbacks.has(messageId)) {\n this.messageCallbacks.delete(messageId);\n console.warn({ bufferId }, \"Timed out waiting for buffer to be disposed\");\n resolve3(false);\n }\n }, 3000);\n });\n }\n this.debouncer.clearDebounce(`reset-${bufferId}`);\n }\n async destroy() {\n if (this.initializeResolvers) {\n clearTimeout(this.initializeResolvers.timeoutId);\n this.initializeResolvers.reject(new Error(\"Client destroyed during initialization\"));\n this.initializeResolvers = undefined;\n }\n for (const [messageId, callback] of this.messageCallbacks.entries()) {\n if (typeof callback === \"function\") {\n try {\n callback({ error: \"Client destroyed\" });\n } catch (e) {}\n }\n }\n this.messageCallbacks.clear();\n clearDebounceScope(\"tree-sitter-client\");\n this.debouncer.clear();\n this.editQueues.clear();\n this.buffers.clear();\n this.stopWorker();\n this.initialized = false;\n this.initializePromise = undefined;\n }\n async resetBuffer(bufferId, version, content) {\n if (!this.initialized) {\n return;\n }\n const buffer = this.buffers.get(bufferId);\n if (!buffer || !buffer.hasParser) {\n this.emitError(\"Cannot reset buffer with no parser\", bufferId);\n return;\n }\n this.buffers.set(bufferId, { ...buffer, content, version });\n this.debouncer.debounce(`reset-${bufferId}`, 10, () => this.processEdit(bufferId, [], content, version, true));\n }\n getBuffer(bufferId) {\n return this.buffers.get(bufferId);\n }\n getAllBuffers() {\n return Array.from(this.buffers.values());\n }\n isInitialized() {\n return this.initialized;\n }\n async setDataPath(dataPath) {\n if (this.options.dataPath === dataPath) {\n return;\n }\n this.options.dataPath = dataPath;\n if (this.initialized && this.worker) {\n const messageId = `update_datapath_${this.messageIdCounter++}`;\n return new Promise((resolve3, reject) => {\n this.messageCallbacks.set(messageId, (response) => {\n if (response.error) {\n reject(new Error(response.error));\n } else {\n resolve3();\n }\n });\n this.worker.postMessage({\n type: \"UPDATE_DATA_PATH\",\n dataPath,\n messageId\n });\n });\n }\n }\n async clearCache() {\n if (!this.initialized || !this.worker) {\n throw new Error(\"Cannot clear cache: client is not initialized\");\n }\n const messageId = `clear_cache_${this.messageIdCounter++}`;\n return new Promise((resolve3, reject) => {\n this.messageCallbacks.set(messageId, (response) => {\n if (response.error) {\n reject(new Error(response.error));\n } else {\n resolve3();\n }\n });\n this.worker.postMessage({\n type: \"CLEAR_CACHE\",\n messageId\n });\n });\n }\n}\n\n// src/lib/data-paths.ts\nimport os from \"os\";\nimport path from \"path\";\nimport { EventEmitter as EventEmitter4 } from \"events\";\n\n// src/lib/validate-dir-name.ts\nfunction isValidDirectoryName(name) {\n if (!name || typeof name !== \"string\") {\n return false;\n }\n if (name.trim().length === 0) {\n return false;\n }\n const reservedNames = [\n \"CON\",\n \"PRN\",\n \"AUX\",\n \"NUL\",\n \"COM1\",\n \"COM2\",\n \"COM3\",\n \"COM4\",\n \"COM5\",\n \"COM6\",\n \"COM7\",\n \"COM8\",\n \"COM9\",\n \"LPT1\",\n \"LPT2\",\n \"LPT3\",\n \"LPT4\",\n \"LPT5\",\n \"LPT6\",\n \"LPT7\",\n \"LPT8\",\n \"LPT9\"\n ];\n if (reservedNames.includes(name.toUpperCase())) {\n return false;\n }\n const invalidChars = /[<>:\"|?*\\/\\\\\\x00-\\x1f]/;\n if (invalidChars.test(name)) {\n return false;\n }\n if (name.endsWith(\".\") || name.endsWith(\" \")) {\n return false;\n }\n if (name === \".\" || name === \"..\") {\n return false;\n }\n return true;\n}\n\n// src/lib/data-paths.ts\nregisterEnvVar({\n name: \"XDG_CONFIG_HOME\",\n description: \"Base directory for user-specific configuration files\",\n type: \"string\",\n default: \"\"\n});\nregisterEnvVar({\n name: \"XDG_DATA_HOME\",\n description: \"Base directory for user-specific data files\",\n type: \"string\",\n default: \"\"\n});\n\nclass DataPathsManager extends EventEmitter4 {\n _appName;\n _globalConfigPath;\n _globalConfigFile;\n _localConfigFile;\n _globalDataPath;\n constructor() {\n super();\n this._appName = \"opentui\";\n }\n get appName() {\n return this._appName;\n }\n set appName(value) {\n if (!isValidDirectoryName(value)) {\n throw new Error(`Invalid app name \"${value}\": must be a valid directory name`);\n }\n if (this._appName !== value) {\n this._appName = value;\n this._globalConfigPath = undefined;\n this._globalConfigFile = undefined;\n this._localConfigFile = undefined;\n this._globalDataPath = undefined;\n this.emit(\"paths:changed\", this.toObject());\n }\n }\n get globalConfigPath() {\n if (this._globalConfigPath === undefined) {\n const homeDir = os.homedir();\n const xdgConfigHome = env.XDG_CONFIG_HOME;\n const baseConfigDir = xdgConfigHome || path.join(homeDir, \".config\");\n this._globalConfigPath = path.join(baseConfigDir, this._appName);\n }\n return this._globalConfigPath;\n }\n get globalConfigFile() {\n if (this._globalConfigFile === undefined) {\n this._globalConfigFile = path.join(this.globalConfigPath, \"init.ts\");\n }\n return this._globalConfigFile;\n }\n get localConfigFile() {\n if (this._localConfigFile === undefined) {\n this._localConfigFile = path.join(process.cwd(), `.${this._appName}.ts`);\n }\n return this._localConfigFile;\n }\n get globalDataPath() {\n if (this._globalDataPath === undefined) {\n const homeDir = os.homedir();\n const xdgDataHome = env.XDG_DATA_HOME;\n const baseDataDir = xdgDataHome || path.join(homeDir, \".local/share\");\n this._globalDataPath = path.join(baseDataDir, this._appName);\n }\n return this._globalDataPath;\n }\n toObject() {\n return {\n globalConfigPath: this.globalConfigPath,\n globalConfigFile: this.globalConfigFile,\n localConfigFile: this.localConfigFile,\n globalDataPath: this.globalDataPath\n };\n }\n}\nfunction getDataPaths() {\n return singleton(\"data-paths-opentui\", () => new DataPathsManager);\n}\n\n// src/lib/tree-sitter/resolve-ft.ts\nfunction extToFiletype(extension) {\n const extensionToFiletype = new Map([\n [\"js\", \"javascript\"],\n [\"jsx\", \"javascriptreact\"],\n [\"ts\", \"typescript\"],\n [\"tsx\", \"typescriptreact\"],\n [\"md\", \"markdown\"],\n [\"json\", \"json\"],\n [\"py\", \"python\"],\n [\"rb\", \"ruby\"],\n [\"go\", \"go\"],\n [\"rs\", \"rust\"],\n [\"c\", \"c\"],\n [\"cpp\", \"cpp\"],\n [\"c++\", \"cpp\"],\n [\"cs\", \"csharp\"],\n [\"java\", \"java\"],\n [\"kt\", \"kotlin\"],\n [\"swift\", \"swift\"],\n [\"php\", \"php\"],\n [\"sql\", \"sql\"],\n [\"pl\", \"perl\"],\n [\"lua\", \"lua\"],\n [\"erl\", \"erlang\"],\n [\"exs\", \"elixir\"],\n [\"ex\", \"elixir\"],\n [\"elm\", \"elm\"],\n [\"fsharp\", \"fsharp\"],\n [\"fs\", \"fsharp\"],\n [\"fsx\", \"fsharp\"],\n [\"fsscript\", \"fsharp\"],\n [\"fsi\", \"fsharp\"],\n [\"h\", \"c\"],\n [\"hpp\", \"cpp\"],\n [\"html\", \"html\"],\n [\"css\", \"css\"],\n [\"scss\", \"scss\"],\n [\"less\", \"less\"],\n [\"sh\", \"shell\"],\n [\"bash\", \"shell\"],\n [\"zsh\", \"shell\"],\n [\"vim\", \"vim\"],\n [\"yaml\", \"yaml\"],\n [\"yml\", \"yaml\"],\n [\"toml\", \"toml\"],\n [\"xml\", \"xml\"],\n [\"zig\", \"zig\"]\n ]);\n return extensionToFiletype.get(extension);\n}\nfunction pathToFiletype(path2) {\n if (typeof path2 !== \"string\")\n return;\n const lastDot = path2.lastIndexOf(\".\");\n if (lastDot === -1 || lastDot === path2.length - 1) {\n return;\n }\n const extension = path2.substring(lastDot + 1);\n return extToFiletype(extension);\n}\n\n// src/lib/tree-sitter/assets/update.ts\nimport { readFile, writeFile as writeFile2, mkdir as mkdir2 } from \"fs/promises\";\nimport * as path3 from \"path\";\n\n// src/lib/tree-sitter/download-utils.ts\nimport { mkdir, writeFile } from \"fs/promises\";\nimport * as path2 from \"path\";\n\nclass DownloadUtils {\n static hashUrl(url) {\n let hash = 0;\n for (let i = 0;i < url.length; i++) {\n const char = url.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n return Math.abs(hash).toString(16);\n }\n static async downloadOrLoad(source, cacheDir, cacheSubdir, fileExtension, useHashForCache = true, filetype) {\n const isUrl2 = source.startsWith(\"http://\") || source.startsWith(\"https://\");\n if (isUrl2) {\n let cacheFileName;\n if (useHashForCache) {\n const hash = this.hashUrl(source);\n cacheFileName = filetype ? `${filetype}-${hash}${fileExtension}` : `${hash}${fileExtension}`;\n } else {\n cacheFileName = path2.basename(source);\n }\n const cacheFile = path2.join(cacheDir, cacheSubdir, cacheFileName);\n await mkdir(path2.dirname(cacheFile), { recursive: true });\n try {\n const cachedContent = await Bun.file(cacheFile).arrayBuffer();\n if (cachedContent.byteLength > 0) {\n console.log(`Loaded from cache: ${cacheFile} (${source})`);\n return { content: cachedContent, filePath: cacheFile };\n }\n } catch (error) {}\n try {\n console.log(`Downloading from URL: ${source}`);\n const response = await fetch(source);\n if (!response.ok) {\n return { error: `Failed to fetch from ${source}: ${response.statusText}` };\n }\n const content = await response.arrayBuffer();\n try {\n await writeFile(cacheFile, Buffer.from(content));\n console.log(`Cached: ${source}`);\n } catch (cacheError) {\n console.warn(`Failed to cache: ${cacheError}`);\n }\n return { content, filePath: cacheFile };\n } catch (error) {\n return { error: `Error downloading from ${source}: ${error}` };\n }\n } else {\n try {\n console.log(`Loading from local path: ${source}`);\n const content = await Bun.file(source).arrayBuffer();\n return { content, filePath: source };\n } catch (error) {\n return { error: `Error loading from local path ${source}: ${error}` };\n }\n }\n }\n static async downloadToPath(source, targetPath) {\n const isUrl2 = source.startsWith(\"http://\") || source.startsWith(\"https://\");\n await mkdir(path2.dirname(targetPath), { recursive: true });\n if (isUrl2) {\n try {\n console.log(`Downloading from URL: ${source}`);\n const response = await fetch(source);\n if (!response.ok) {\n return { error: `Failed to fetch from ${source}: ${response.statusText}` };\n }\n const content = await response.arrayBuffer();\n await writeFile(targetPath, Buffer.from(content));\n console.log(`Downloaded: ${source} -> ${targetPath}`);\n return { content, filePath: targetPath };\n } catch (error) {\n return { error: `Error downloading from ${source}: ${error}` };\n }\n } else {\n try {\n console.log(`Copying from local path: ${source}`);\n const content = await Bun.file(source).arrayBuffer();\n await writeFile(targetPath, Buffer.from(content));\n return { content, filePath: targetPath };\n } catch (error) {\n return { error: `Error copying from local path ${source}: ${error}` };\n }\n }\n }\n static async fetchHighlightQueries(sources, cacheDir, filetype) {\n const queryPromises = sources.map((source) => this.fetchHighlightQuery(source, cacheDir, filetype));\n const queryResults = await Promise.all(queryPromises);\n const validQueries = queryResults.filter((query) => query.trim().length > 0);\n return validQueries.join(`\n`);\n }\n static async fetchHighlightQuery(source, cacheDir, filetype) {\n const result = await this.downloadOrLoad(source, cacheDir, \"queries\", \".scm\", true, filetype);\n if (result.error) {\n console.error(`Error fetching highlight query from ${source}:`, result.error);\n return \"\";\n }\n if (result.content) {\n return new TextDecoder().decode(result.content);\n }\n return \"\";\n }\n}\n\n// src/lib/tree-sitter/assets/update.ts\nimport { readdir } from \"fs/promises\";\nvar __dirname = \"/Users/runner/work/opentui/opentui/packages/core/src/lib/tree-sitter/assets\";\nfunction getDefaultOptions() {\n return {\n configPath: path3.resolve(__dirname, \"../parsers-config\"),\n assetsDir: path3.resolve(__dirname),\n outputPath: path3.resolve(__dirname, \"../default-parsers.ts\")\n };\n}\nasync function loadConfig(configPath) {\n let ext = path3.extname(configPath);\n let resolvedConfigPath = configPath;\n if (ext === \"\") {\n const files = await readdir(path3.dirname(configPath));\n const file = files.find((file2) => file2.startsWith(path3.basename(configPath)) && (file2.endsWith(\".json\") || file2.endsWith(\".ts\") || file2.endsWith(\".js\")));\n if (!file) {\n throw new Error(`No config file found for ${configPath}`);\n }\n resolvedConfigPath = path3.join(path3.dirname(configPath), file);\n ext = path3.extname(resolvedConfigPath);\n }\n if (ext === \".json\") {\n const configContent = await readFile(resolvedConfigPath, \"utf-8\");\n return JSON.parse(configContent);\n } else if (ext === \".ts\" || ext === \".js\") {\n const { default: configContent } = await import(resolvedConfigPath);\n return configContent;\n }\n throw new Error(`Unsupported config file extension: ${ext}`);\n}\nasync function downloadLanguage(filetype, languageUrl, assetsDir, outputPath) {\n const languageDir = path3.join(assetsDir, filetype);\n const languageFilename = path3.basename(languageUrl);\n const languagePath = path3.join(languageDir, languageFilename);\n const result = await DownloadUtils.downloadToPath(languageUrl, languagePath);\n if (result.error) {\n throw new Error(`Failed to download language for ${filetype}: ${result.error}`);\n }\n return \"./\" + path3.relative(path3.dirname(outputPath), languagePath);\n}\nasync function downloadAndCombineQueries(filetype, queryUrls, assetsDir, outputPath, queryType, configPath) {\n const queriesDir = path3.join(assetsDir, filetype);\n const queryPath = path3.join(queriesDir, `${queryType}.scm`);\n const queryContents = [];\n for (let i = 0;i < queryUrls.length; i++) {\n const queryUrl = queryUrls[i];\n if (queryUrl.startsWith(\"./\")) {\n console.log(` Using local query ${i + 1}/${queryUrls.length}: ${queryUrl}`);\n try {\n const localPath = path3.resolve(path3.dirname(configPath), queryUrl);\n const content = await readFile(localPath, \"utf-8\");\n if (content.trim()) {\n queryContents.push(content);\n console.log(` \\u2713 Loaded ${content.split(`\n`).length} lines from local file`);\n }\n } catch (error) {\n console.warn(`Failed to read local query from ${queryUrl}: ${error}`);\n continue;\n }\n } else {\n console.log(` Downloading query ${i + 1}/${queryUrls.length}: ${queryUrl}`);\n try {\n const response = await fetch(queryUrl);\n if (!response.ok) {\n console.warn(`Failed to download query from ${queryUrl}: ${response.statusText}`);\n continue;\n }\n const content = await response.text();\n if (content.trim()) {\n queryContents.push(`; Query from: ${queryUrl}\n${content}`);\n console.log(` \\u2713 Downloaded ${content.split(`\n`).length} lines`);\n }\n } catch (error) {\n console.warn(`Failed to download query from ${queryUrl}: ${error}`);\n continue;\n }\n }\n }\n const combinedContent = queryContents.join(`\n\n`);\n await writeFile2(queryPath, combinedContent, \"utf-8\");\n console.log(` Combined ${queryContents.length} queries into ${queryPath}`);\n return \"./\" + path3.relative(path3.dirname(outputPath), queryPath);\n}\nasync function generateDefaultParsersFile(parsers, outputPath) {\n const imports = parsers.map((parser) => {\n const safeFiletype = parser.filetype.replace(/[^a-zA-Z0-9]/g, \"_\");\n const lines = [\n `import ${safeFiletype}_highlights from \"${parser.highlightsPath}\" with { type: \"file\" }`,\n `import ${safeFiletype}_language from \"${parser.languagePath}\" with { type: \"file\" }`\n ];\n if (parser.injectionsPath) {\n lines.push(`import ${safeFiletype}_injections from \"${parser.injectionsPath}\" with { type: \"file\" }`);\n }\n return lines.join(`\n`);\n }).join(`\n`);\n const parserDefinitions = parsers.map((parser) => {\n const safeFiletype = parser.filetype.replace(/[^a-zA-Z0-9]/g, \"_\");\n const queriesLines = [\n ` highlights: [resolve(dirname(fileURLToPath(import.meta.url)), ${safeFiletype}_highlights)],`\n ];\n if (parser.injectionsPath) {\n queriesLines.push(` injections: [resolve(dirname(fileURLToPath(import.meta.url)), ${safeFiletype}_injections)],`);\n }\n const injectionMappingLine = parser.injectionMapping ? ` injectionMapping: ${JSON.stringify(parser.injectionMapping, null, 10)},` : \"\";\n return ` {\n filetype: \"${parser.filetype}\",\n queries: {\n${queriesLines.join(`\n`)}\n },\n wasm: resolve(dirname(fileURLToPath(import.meta.url)), ${safeFiletype}_language),${injectionMappingLine ? `\n` + injectionMappingLine : \"\"}\n }`;\n }).join(`,\n`);\n const fileContent = `// This file is generated by assets/update.ts - DO NOT EDIT MANUALLY\n// Run 'bun assets/update.ts' to regenerate this file\n// Last generated: ${new Date().toISOString()}\n\nimport type { FiletypeParserOptions } from \"./types\"\nimport { resolve, dirname } from \"path\"\nimport { fileURLToPath } from \"url\"\n\n${imports}\n\n// Cached parsers to avoid re-resolving paths on every call\nlet _cachedParsers: FiletypeParserOptions[] | undefined\n\nexport function getParsers(): FiletypeParserOptions[] {\n if (!_cachedParsers) {\n _cachedParsers = [\n${parserDefinitions},\n ]\n }\n return _cachedParsers\n}\n`;\n await mkdir2(path3.dirname(outputPath), { recursive: true });\n await writeFile2(outputPath, fileContent, \"utf-8\");\n console.log(`Generated ${path3.basename(outputPath)} with ${parsers.length} parsers`);\n}\nasync function main(options) {\n const opts = { ...getDefaultOptions(), ...options };\n try {\n console.log(\"Loading parsers configuration...\");\n console.log(` Config: ${opts.configPath}`);\n console.log(` Assets Dir: ${opts.assetsDir}`);\n console.log(` Output: ${opts.outputPath}`);\n const config = await loadConfig(opts.configPath);\n console.log(`Found ${config.parsers.length} parsers to process`);\n const generatedParsers = [];\n for (const parser of config.parsers) {\n console.log(`Processing ${parser.filetype}...`);\n console.log(` Downloading language...`);\n const languagePath = await downloadLanguage(parser.filetype, parser.wasm, opts.assetsDir, opts.outputPath);\n console.log(` Downloading ${parser.queries.highlights.length} highlight queries...`);\n const highlightsPath = await downloadAndCombineQueries(parser.filetype, parser.queries.highlights, opts.assetsDir, opts.outputPath, \"highlights\", opts.configPath);\n let injectionsPath;\n if (parser.queries.injections && parser.queries.injections.length > 0) {\n console.log(` Downloading ${parser.queries.injections.length} injection queries...`);\n injectionsPath = await downloadAndCombineQueries(parser.filetype, parser.queries.injections, opts.assetsDir, opts.outputPath, \"injections\", opts.configPath);\n }\n generatedParsers.push({\n filetype: parser.filetype,\n languagePath,\n highlightsPath,\n injectionsPath,\n injectionMapping: parser.injectionMapping\n });\n console.log(` \\u2713 Completed ${parser.filetype}`);\n }\n console.log(\"Generating output file...\");\n await generateDefaultParsersFile(generatedParsers, opts.outputPath);\n console.log(\"\\u2705 Update completed successfully!\");\n } catch (error) {\n console.error(\"\\u274C Update failed:\", error);\n process.exit(1);\n }\n}\nif (false) {}\n\n// src/lib/tree-sitter/index.ts\nfunction getTreeSitterClient() {\n const dataPathsManager = getDataPaths();\n const defaultOptions = {\n dataPath: dataPathsManager.globalDataPath\n };\n return singleton(\"tree-sitter-client\", () => {\n const client2 = new TreeSitterClient(defaultOptions);\n dataPathsManager.on(\"paths:changed\", (paths) => {\n client2.setDataPath(paths.globalDataPath);\n });\n return client2;\n });\n}\n\n// src/lib/extmarks-history.ts\nclass ExtmarksHistory {\n undoStack = [];\n redoStack = [];\n saveSnapshot(extmarks, nextId) {\n const snapshot = {\n extmarks: new Map(Array.from(extmarks.entries()).map(([id, extmark]) => [id, { ...extmark }])),\n nextId\n };\n this.undoStack.push(snapshot);\n this.redoStack = [];\n }\n undo() {\n if (this.undoStack.length === 0)\n return null;\n return this.undoStack.pop();\n }\n redo() {\n if (this.redoStack.length === 0)\n return null;\n return this.redoStack.pop();\n }\n pushRedo(snapshot) {\n this.redoStack.push(snapshot);\n }\n pushUndo(snapshot) {\n this.undoStack.push(snapshot);\n }\n clear() {\n this.undoStack = [];\n this.redoStack = [];\n }\n canUndo() {\n return this.undoStack.length > 0;\n }\n canRedo() {\n return this.redoStack.length > 0;\n }\n}\n\n// src/lib/extmarks.ts\nclass ExtmarksController {\n editBuffer;\n editorView;\n extmarks = new Map;\n extmarksByTypeId = new Map;\n metadata = new Map;\n nextId = 1;\n destroyed = false;\n history = new ExtmarksHistory;\n typeNameToId = new Map;\n typeIdToName = new Map;\n nextTypeId = 1;\n originalMoveCursorLeft;\n originalMoveCursorRight;\n originalSetCursorByOffset;\n originalMoveUpVisual;\n originalMoveDownVisual;\n originalDeleteCharBackward;\n originalDeleteChar;\n originalInsertText;\n originalInsertChar;\n originalDeleteRange;\n originalSetText;\n originalReplaceText;\n originalClear;\n originalNewLine;\n originalDeleteLine;\n originalEditorViewDeleteSelectedText;\n originalUndo;\n originalRedo;\n constructor(editBuffer, editorView) {\n this.editBuffer = editBuffer;\n this.editorView = editorView;\n this.originalMoveCursorLeft = editBuffer.moveCursorLeft.bind(editBuffer);\n this.originalMoveCursorRight = editBuffer.moveCursorRight.bind(editBuffer);\n this.originalSetCursorByOffset = editBuffer.setCursorByOffset.bind(editBuffer);\n this.originalMoveUpVisual = editorView.moveUpVisual.bind(editorView);\n this.originalMoveDownVisual = editorView.moveDownVisual.bind(editorView);\n this.originalDeleteCharBackward = editBuffer.deleteCharBackward.bind(editBuffer);\n this.originalDeleteChar = editBuffer.deleteChar.bind(editBuffer);\n this.originalInsertText = editBuffer.insertText.bind(editBuffer);\n this.originalInsertChar = editBuffer.insertChar.bind(editBuffer);\n this.originalDeleteRange = editBuffer.deleteRange.bind(editBuffer);\n this.originalSetText = editBuffer.setText.bind(editBuffer);\n this.originalReplaceText = editBuffer.replaceText.bind(editBuffer);\n this.originalClear = editBuffer.clear.bind(editBuffer);\n this.originalNewLine = editBuffer.newLine.bind(editBuffer);\n this.originalDeleteLine = editBuffer.deleteLine.bind(editBuffer);\n this.originalEditorViewDeleteSelectedText = editorView.deleteSelectedText.bind(editorView);\n this.originalUndo = editBuffer.undo.bind(editBuffer);\n this.originalRedo = editBuffer.redo.bind(editBuffer);\n this.wrapCursorMovement();\n this.wrapDeletion();\n this.wrapInsertion();\n this.wrapEditorViewDeleteSelectedText();\n this.wrapUndoRedo();\n this.setupContentChangeListener();\n }\n wrapCursorMovement() {\n this.editBuffer.moveCursorLeft = () => {\n if (this.destroyed) {\n this.originalMoveCursorLeft();\n return;\n }\n const currentOffset = this.editorView.getVisualCursor().offset;\n const hasSelection = this.editorView.hasSelection();\n if (hasSelection) {\n this.originalMoveCursorLeft();\n return;\n }\n const targetOffset = currentOffset - 1;\n if (targetOffset < 0) {\n this.originalMoveCursorLeft();\n return;\n }\n const virtualExtmark = this.findVirtualExtmarkContaining(targetOffset);\n if (virtualExtmark && currentOffset >= virtualExtmark.end) {\n this.editBuffer.setCursorByOffset(virtualExtmark.start - 1);\n return;\n }\n this.originalMoveCursorLeft();\n };\n this.editBuffer.moveCursorRight = () => {\n if (this.destroyed) {\n this.originalMoveCursorRight();\n return;\n }\n const currentOffset = this.editorView.getVisualCursor().offset;\n const hasSelection = this.editorView.hasSelection();\n if (hasSelection) {\n this.originalMoveCursorRight();\n return;\n }\n const targetOffset = currentOffset + 1;\n const textLength = this.editBuffer.getText().length;\n if (targetOffset > textLength) {\n this.originalMoveCursorRight();\n return;\n }\n const virtualExtmark = this.findVirtualExtmarkContaining(targetOffset);\n if (virtualExtmark && currentOffset <= virtualExtmark.start) {\n this.editBuffer.setCursorByOffset(virtualExtmark.end);\n return;\n }\n this.originalMoveCursorRight();\n };\n this.editorView.moveUpVisual = () => {\n if (this.destroyed) {\n this.originalMoveUpVisual();\n return;\n }\n const hasSelection = this.editorView.hasSelection();\n if (hasSelection) {\n this.originalMoveUpVisual();\n return;\n }\n const currentOffset = this.editorView.getVisualCursor().offset;\n this.originalMoveUpVisual();\n const newOffset = this.editorView.getVisualCursor().offset;\n const virtualExtmark = this.findVirtualExtmarkContaining(newOffset);\n if (virtualExtmark) {\n const distanceToStart = newOffset - virtualExtmark.start;\n const distanceToEnd = virtualExtmark.end - newOffset;\n if (distanceToStart < distanceToEnd) {\n this.editorView.setCursorByOffset(virtualExtmark.start - 1);\n } else {\n this.editorView.setCursorByOffset(virtualExtmark.end);\n }\n }\n };\n this.editorView.moveDownVisual = () => {\n if (this.destroyed) {\n this.originalMoveDownVisual();\n return;\n }\n const hasSelection = this.editorView.hasSelection();\n if (hasSelection) {\n this.originalMoveDownVisual();\n return;\n }\n const currentOffset = this.editorView.getVisualCursor().offset;\n this.originalMoveDownVisual();\n const newOffset = this.editorView.getVisualCursor().offset;\n const virtualExtmark = this.findVirtualExtmarkContaining(newOffset);\n if (virtualExtmark) {\n const distanceToStart = newOffset - virtualExtmark.start;\n const distanceToEnd = virtualExtmark.end - newOffset;\n if (distanceToStart < distanceToEnd) {\n const adjustedOffset = virtualExtmark.start - 1;\n const targetOffset = adjustedOffset <= currentOffset ? virtualExtmark.end : adjustedOffset;\n this.editorView.setCursorByOffset(targetOffset);\n } else {\n this.editorView.setCursorByOffset(virtualExtmark.end);\n }\n }\n };\n this.editBuffer.setCursorByOffset = (offset) => {\n if (this.destroyed) {\n this.originalSetCursorByOffset(offset);\n return;\n }\n const currentOffset = this.editorView.getVisualCursor().offset;\n const hasSelection = this.editorView.hasSelection();\n if (hasSelection) {\n this.originalSetCursorByOffset(offset);\n return;\n }\n const movingForward = offset > currentOffset;\n if (movingForward) {\n const virtualExtmark = this.findVirtualExtmarkContaining(offset);\n if (virtualExtmark && currentOffset <= virtualExtmark.start) {\n this.originalSetCursorByOffset(virtualExtmark.end);\n return;\n }\n } else {\n for (const extmark of this.extmarks.values()) {\n if (extmark.virtual && currentOffset >= extmark.end && offset < extmark.end && offset >= extmark.start) {\n this.originalSetCursorByOffset(extmark.start - 1);\n return;\n }\n }\n }\n this.originalSetCursorByOffset(offset);\n };\n }\n wrapDeletion() {\n this.editBuffer.deleteCharBackward = () => {\n if (this.destroyed) {\n this.originalDeleteCharBackward();\n return;\n }\n this.saveSnapshot();\n const currentOffset = this.editorView.getVisualCursor().offset;\n const hadSelection = this.editorView.hasSelection();\n if (currentOffset === 0) {\n this.originalDeleteCharBackward();\n return;\n }\n if (hadSelection) {\n this.originalDeleteCharBackward();\n return;\n }\n const targetOffset = currentOffset - 1;\n const virtualExtmark = this.findVirtualExtmarkContaining(targetOffset);\n if (virtualExtmark && currentOffset === virtualExtmark.end) {\n const startCursor = this.offsetToPosition(virtualExtmark.start);\n const endCursor = this.offsetToPosition(virtualExtmark.end);\n const deleteOffset = virtualExtmark.start;\n const deleteLength = virtualExtmark.end - virtualExtmark.start;\n this.deleteExtmarkById(virtualExtmark.id);\n this.originalDeleteRange(startCursor.row, startCursor.col, endCursor.row, endCursor.col);\n this.adjustExtmarksAfterDeletion(deleteOffset, deleteLength);\n this.updateHighlights();\n return;\n }\n this.originalDeleteCharBackward();\n this.adjustExtmarksAfterDeletion(targetOffset, 1);\n };\n this.editBuffer.deleteChar = () => {\n if (this.destroyed) {\n this.originalDeleteChar();\n return;\n }\n this.saveSnapshot();\n const currentOffset = this.editorView.getVisualCursor().offset;\n const textLength = this.editBuffer.getText().length;\n const hadSelection = this.editorView.hasSelection();\n if (currentOffset >= textLength) {\n this.originalDeleteChar();\n return;\n }\n if (hadSelection) {\n this.originalDeleteChar();\n return;\n }\n const targetOffset = currentOffset;\n const virtualExtmark = this.findVirtualExtmarkContaining(targetOffset);\n if (virtualExtmark && currentOffset === virtualExtmark.start) {\n const startCursor = this.offsetToPosition(virtualExtmark.start);\n const endCursor = this.offsetToPosition(virtualExtmark.end);\n const deleteOffset = virtualExtmark.start;\n const deleteLength = virtualExtmark.end - virtualExtmark.start;\n this.deleteExtmarkById(virtualExtmark.id);\n this.originalDeleteRange(startCursor.row, startCursor.col, endCursor.row, endCursor.col);\n this.adjustExtmarksAfterDeletion(deleteOffset, deleteLength);\n this.updateHighlights();\n return;\n }\n this.originalDeleteChar();\n this.adjustExtmarksAfterDeletion(targetOffset, 1);\n };\n this.editBuffer.deleteRange = (startLine, startCol, endLine, endCol) => {\n if (this.destroyed) {\n this.originalDeleteRange(startLine, startCol, endLine, endCol);\n return;\n }\n this.saveSnapshot();\n const startOffset = this.positionToOffset(startLine, startCol);\n const endOffset = this.positionToOffset(endLine, endCol);\n const length = endOffset - startOffset;\n this.originalDeleteRange(startLine, startCol, endLine, endCol);\n this.adjustExtmarksAfterDeletion(startOffset, length);\n };\n this.editBuffer.deleteLine = () => {\n if (this.destroyed) {\n this.originalDeleteLine();\n return;\n }\n this.saveSnapshot();\n const text = this.editBuffer.getText();\n const currentOffset = this.editorView.getVisualCursor().offset;\n let lineStart = 0;\n for (let i = currentOffset - 1;i >= 0; i--) {\n if (text[i] === `\n`) {\n lineStart = i + 1;\n break;\n }\n }\n let lineEnd = text.length;\n for (let i = currentOffset;i < text.length; i++) {\n if (text[i] === `\n`) {\n lineEnd = i + 1;\n break;\n }\n }\n const deleteLength = lineEnd - lineStart;\n this.originalDeleteLine();\n this.adjustExtmarksAfterDeletion(lineStart, deleteLength);\n };\n }\n wrapInsertion() {\n this.editBuffer.insertText = (text) => {\n if (this.destroyed) {\n this.originalInsertText(text);\n return;\n }\n this.saveSnapshot();\n const currentOffset = this.editorView.getVisualCursor().offset;\n this.originalInsertText(text);\n this.adjustExtmarksAfterInsertion(currentOffset, text.length);\n };\n this.editBuffer.insertChar = (char) => {\n if (this.destroyed) {\n this.originalInsertChar(char);\n return;\n }\n this.saveSnapshot();\n const currentOffset = this.editorView.getVisualCursor().offset;\n this.originalInsertChar(char);\n this.adjustExtmarksAfterInsertion(currentOffset, 1);\n };\n this.editBuffer.setText = (text) => {\n if (this.destroyed) {\n this.originalSetText(text);\n return;\n }\n this.clear();\n this.originalSetText(text);\n };\n this.editBuffer.replaceText = (text) => {\n if (this.destroyed) {\n this.originalReplaceText(text);\n return;\n }\n this.saveSnapshot();\n this.clear();\n this.originalReplaceText(text);\n };\n this.editBuffer.clear = () => {\n if (this.destroyed) {\n this.originalClear();\n return;\n }\n this.saveSnapshot();\n this.clear();\n this.originalClear();\n };\n this.editBuffer.newLine = () => {\n if (this.destroyed) {\n this.originalNewLine();\n return;\n }\n this.saveSnapshot();\n const currentOffset = this.editorView.getVisualCursor().offset;\n this.originalNewLine();\n this.adjustExtmarksAfterInsertion(currentOffset, 1);\n };\n }\n wrapEditorViewDeleteSelectedText() {\n this.editorView.deleteSelectedText = () => {\n if (this.destroyed) {\n this.originalEditorViewDeleteSelectedText();\n return;\n }\n this.saveSnapshot();\n const selection = this.editorView.getSelection();\n if (!selection) {\n this.originalEditorViewDeleteSelectedText();\n return;\n }\n const deleteOffset = Math.min(selection.start, selection.end);\n const deleteLength = Math.abs(selection.end - selection.start);\n this.originalEditorViewDeleteSelectedText();\n if (deleteLength > 0) {\n this.adjustExtmarksAfterDeletion(deleteOffset, deleteLength);\n }\n };\n }\n setupContentChangeListener() {\n this.editBuffer.on(\"content-changed\", () => {\n if (this.destroyed)\n return;\n this.updateHighlights();\n });\n }\n deleteExtmarkById(id) {\n const extmark = this.extmarks.get(id);\n if (extmark) {\n this.extmarks.delete(id);\n this.extmarksByTypeId.get(extmark.typeId)?.delete(id);\n this.metadata.delete(id);\n }\n }\n findVirtualExtmarkContaining(offset) {\n for (const extmark of this.extmarks.values()) {\n if (extmark.virtual && offset >= extmark.start && offset < extmark.end) {\n return extmark;\n }\n }\n return null;\n }\n adjustExtmarksAfterInsertion(insertOffset, length) {\n for (const extmark of this.extmarks.values()) {\n if (extmark.start >= insertOffset) {\n extmark.start += length;\n extmark.end += length;\n } else if (extmark.end > insertOffset) {\n extmark.end += length;\n }\n }\n this.updateHighlights();\n }\n adjustExtmarksAfterDeletion(deleteOffset, length) {\n const toDelete = [];\n for (const extmark of this.extmarks.values()) {\n if (extmark.end <= deleteOffset) {\n continue;\n }\n if (extmark.start >= deleteOffset + length) {\n extmark.start -= length;\n extmark.end -= length;\n } else if (extmark.start >= deleteOffset && extmark.end <= deleteOffset + length) {\n toDelete.push(extmark.id);\n } else if (extmark.start < deleteOffset && extmark.end > deleteOffset + length) {\n extmark.end -= length;\n } else if (extmark.start < deleteOffset && extmark.end > deleteOffset) {\n extmark.end -= Math.min(extmark.end, deleteOffset + length) - deleteOffset;\n } else if (extmark.start < deleteOffset + length && extmark.end > deleteOffset + length) {\n const overlap = deleteOffset + length - extmark.start;\n extmark.start = deleteOffset;\n extmark.end -= length;\n }\n }\n for (const id of toDelete) {\n this.deleteExtmarkById(id);\n }\n this.updateHighlights();\n }\n offsetToPosition(offset) {\n const result = this.editBuffer.offsetToPosition(offset);\n if (!result) {\n return { row: 0, col: 0 };\n }\n return result;\n }\n positionToOffset(row, col) {\n return this.editBuffer.positionToOffset(row, col);\n }\n updateHighlights() {\n this.editBuffer.clearAllHighlights();\n for (const extmark of this.extmarks.values()) {\n if (extmark.styleId !== undefined) {\n const startWithoutNewlines = this.offsetExcludingNewlines(extmark.start);\n const endWithoutNewlines = this.offsetExcludingNewlines(extmark.end);\n this.editBuffer.addHighlightByCharRange({\n start: startWithoutNewlines,\n end: endWithoutNewlines,\n styleId: extmark.styleId,\n priority: extmark.priority ?? 0,\n hlRef: extmark.id\n });\n }\n }\n }\n offsetExcludingNewlines(offset) {\n const text = this.editBuffer.getText();\n let displayWidthSoFar = 0;\n let newlineCount = 0;\n let i = 0;\n while (i < text.length && displayWidthSoFar < offset) {\n if (text[i] === `\n`) {\n displayWidthSoFar++;\n newlineCount++;\n i++;\n } else {\n let j = i;\n while (j < text.length && text[j] !== `\n`) {\n j++;\n }\n const chunk = text.substring(i, j);\n const chunkWidth = Bun.stringWidth(chunk);\n if (displayWidthSoFar + chunkWidth < offset) {\n displayWidthSoFar += chunkWidth;\n i = j;\n } else {\n for (let k = i;k < j && displayWidthSoFar < offset; k++) {\n const charWidth = Bun.stringWidth(text[k]);\n displayWidthSoFar += charWidth;\n }\n break;\n }\n }\n }\n return offset - newlineCount;\n }\n create(options) {\n if (this.destroyed) {\n throw new Error(\"ExtmarksController is destroyed\");\n }\n const id = this.nextId++;\n const typeId = options.typeId ?? 0;\n const extmark = {\n id,\n start: options.start,\n end: options.end,\n virtual: options.virtual ?? false,\n styleId: options.styleId,\n priority: options.priority,\n data: options.data,\n typeId\n };\n this.extmarks.set(id, extmark);\n if (!this.extmarksByTypeId.has(typeId)) {\n this.extmarksByTypeId.set(typeId, new Set);\n }\n this.extmarksByTypeId.get(typeId).add(id);\n if (options.metadata !== undefined) {\n this.metadata.set(id, options.metadata);\n }\n this.updateHighlights();\n return id;\n }\n delete(id) {\n if (this.destroyed) {\n throw new Error(\"ExtmarksController is destroyed\");\n }\n const extmark = this.extmarks.get(id);\n if (!extmark)\n return false;\n this.deleteExtmarkById(id);\n this.updateHighlights();\n return true;\n }\n get(id) {\n if (this.destroyed)\n return null;\n return this.extmarks.get(id) ?? null;\n }\n getAll() {\n if (this.destroyed)\n return [];\n return Array.from(this.extmarks.values());\n }\n getVirtual() {\n if (this.destroyed)\n return [];\n return Array.from(this.extmarks.values()).filter((e) => e.virtual);\n }\n getAtOffset(offset) {\n if (this.destroyed)\n return [];\n return Array.from(this.extmarks.values()).filter((e) => offset >= e.start && offset < e.end);\n }\n getAllForTypeId(typeId) {\n if (this.destroyed)\n return [];\n const ids = this.extmarksByTypeId.get(typeId);\n if (!ids)\n return [];\n return Array.from(ids).map((id) => this.extmarks.get(id)).filter((e) => e !== undefined);\n }\n clear() {\n if (this.destroyed)\n return;\n this.extmarks.clear();\n this.extmarksByTypeId.clear();\n this.metadata.clear();\n this.updateHighlights();\n }\n saveSnapshot() {\n this.history.saveSnapshot(this.extmarks, this.nextId);\n }\n restoreSnapshot(snapshot) {\n this.extmarks = new Map(Array.from(snapshot.extmarks.entries()).map(([id, extmark]) => [id, { ...extmark }]));\n this.nextId = snapshot.nextId;\n this.updateHighlights();\n }\n wrapUndoRedo() {\n this.editBuffer.undo = () => {\n if (this.destroyed) {\n return this.originalUndo();\n }\n if (!this.history.canUndo()) {\n return this.originalUndo();\n }\n const currentSnapshot = {\n extmarks: new Map(Array.from(this.extmarks.entries()).map(([id, extmark]) => [id, { ...extmark }])),\n nextId: this.nextId\n };\n this.history.pushRedo(currentSnapshot);\n const snapshot = this.history.undo();\n this.restoreSnapshot(snapshot);\n return this.originalUndo();\n };\n this.editBuffer.redo = () => {\n if (this.destroyed) {\n return this.originalRedo();\n }\n if (!this.history.canRedo()) {\n return this.originalRedo();\n }\n const currentSnapshot = {\n extmarks: new Map(Array.from(this.extmarks.entries()).map(([id, extmark]) => [id, { ...extmark }])),\n nextId: this.nextId\n };\n this.history.pushUndo(currentSnapshot);\n const snapshot = this.history.redo();\n this.restoreSnapshot(snapshot);\n return this.originalRedo();\n };\n }\n registerType(typeName) {\n if (this.destroyed) {\n throw new Error(\"ExtmarksController is destroyed\");\n }\n const existing = this.typeNameToId.get(typeName);\n if (existing !== undefined) {\n return existing;\n }\n const typeId = this.nextTypeId++;\n this.typeNameToId.set(typeName, typeId);\n this.typeIdToName.set(typeId, typeName);\n return typeId;\n }\n getTypeId(typeName) {\n if (this.destroyed)\n return null;\n return this.typeNameToId.get(typeName) ?? null;\n }\n getTypeName(typeId) {\n if (this.destroyed)\n return null;\n return this.typeIdToName.get(typeId) ?? null;\n }\n getMetadataFor(extmarkId) {\n if (this.destroyed)\n return;\n return this.metadata.get(extmarkId);\n }\n destroy() {\n if (this.destroyed)\n return;\n this.editBuffer.moveCursorLeft = this.originalMoveCursorLeft;\n this.editBuffer.moveCursorRight = this.originalMoveCursorRight;\n this.editBuffer.setCursorByOffset = this.originalSetCursorByOffset;\n this.editorView.moveUpVisual = this.originalMoveUpVisual;\n this.editorView.moveDownVisual = this.originalMoveDownVisual;\n this.editBuffer.deleteCharBackward = this.originalDeleteCharBackward;\n this.editBuffer.deleteChar = this.originalDeleteChar;\n this.editBuffer.insertText = this.originalInsertText;\n this.editBuffer.insertChar = this.originalInsertChar;\n this.editBuffer.deleteRange = this.originalDeleteRange;\n this.editBuffer.setText = this.originalSetText;\n this.editBuffer.replaceText = this.originalReplaceText;\n this.editBuffer.clear = this.originalClear;\n this.editBuffer.newLine = this.originalNewLine;\n this.editBuffer.deleteLine = this.originalDeleteLine;\n this.editorView.deleteSelectedText = this.originalEditorViewDeleteSelectedText;\n this.editBuffer.undo = this.originalUndo;\n this.editBuffer.redo = this.originalRedo;\n this.extmarks.clear();\n this.extmarksByTypeId.clear();\n this.metadata.clear();\n this.typeNameToId.clear();\n this.typeIdToName.clear();\n this.history.clear();\n this.destroyed = true;\n }\n}\nfunction createExtmarksController(editBuffer, editorView) {\n return new ExtmarksController(editBuffer, editorView);\n}\n\n// src/lib/terminal-palette.ts\nvar OSC4_RESPONSE = /\\x1b]4;(\\d+);(?:(?:rgb:)([0-9a-fA-F]+)\\/([0-9a-fA-F]+)\\/([0-9a-fA-F]+)|#([0-9a-fA-F]{6}))(?:\\x07|\\x1b\\\\)/g;\nvar OSC_SPECIAL_RESPONSE = /\\x1b](\\d+);(?:(?:rgb:)([0-9a-fA-F]+)\\/([0-9a-fA-F]+)\\/([0-9a-fA-F]+)|#([0-9a-fA-F]{6}))(?:\\x07|\\x1b\\\\)/g;\nfunction scaleComponent(comp) {\n const val = parseInt(comp, 16);\n const maxIn = (1 << 4 * comp.length) - 1;\n return Math.round(val / maxIn * 255).toString(16).padStart(2, \"0\");\n}\nfunction toHex(r, g, b, hex6) {\n if (hex6)\n return `#${hex6.toLowerCase()}`;\n if (r && g && b)\n return `#${scaleComponent(r)}${scaleComponent(g)}${scaleComponent(b)}`;\n return \"#000000\";\n}\nfunction wrapForTmux(osc) {\n const escaped = osc.replace(/\\x1b/g, \"\\x1B\\x1B\");\n return `\\x1BPtmux;${escaped}\\x1B\\\\`;\n}\n\nclass TerminalPalette {\n stdin;\n stdout;\n writeFn;\n activeListeners = [];\n activeTimers = [];\n inLegacyTmux;\n constructor(stdin, stdout, writeFn, isLegacyTmux) {\n this.stdin = stdin;\n this.stdout = stdout;\n this.writeFn = writeFn || ((data) => stdout.write(data));\n this.inLegacyTmux = isLegacyTmux ?? false;\n }\n writeOsc(osc) {\n const data = this.inLegacyTmux ? wrapForTmux(osc) : osc;\n return this.writeFn(data);\n }\n cleanup() {\n for (const { event, handler } of this.activeListeners) {\n this.stdin.removeListener(event, handler);\n }\n this.activeListeners = [];\n for (const timer of this.activeTimers) {\n clearTimeout(timer);\n }\n this.activeTimers = [];\n }\n async detectOSCSupport(timeoutMs = 300) {\n const out = this.stdout;\n const inp = this.stdin;\n if (!out.isTTY || !inp.isTTY)\n return false;\n return new Promise((resolve4) => {\n let buffer = \"\";\n const onData = (chunk) => {\n buffer += chunk.toString();\n OSC4_RESPONSE.lastIndex = 0;\n if (OSC4_RESPONSE.test(buffer)) {\n cleanup();\n resolve4(true);\n }\n };\n const onTimeout = () => {\n cleanup();\n resolve4(false);\n };\n const cleanup = () => {\n clearTimeout(timer);\n inp.removeListener(\"data\", onData);\n const listenerIdx = this.activeListeners.findIndex((l) => l.handler === onData);\n if (listenerIdx !== -1)\n this.activeListeners.splice(listenerIdx, 1);\n const timerIdx = this.activeTimers.indexOf(timer);\n if (timerIdx !== -1)\n this.activeTimers.splice(timerIdx, 1);\n };\n const timer = setTimeout(onTimeout, timeoutMs);\n this.activeTimers.push(timer);\n inp.on(\"data\", onData);\n this.activeListeners.push({ event: \"data\", handler: onData });\n this.writeOsc(\"\\x1B]4;0;?\\x07\");\n });\n }\n async queryPalette(indices, timeoutMs = 1200) {\n const out = this.stdout;\n const inp = this.stdin;\n const results = new Map;\n indices.forEach((i) => results.set(i, null));\n if (!out.isTTY || !inp.isTTY) {\n return results;\n }\n return new Promise((resolve4) => {\n let buffer = \"\";\n let lastResponseTime = Date.now();\n let idleTimer = null;\n const onData = (chunk) => {\n buffer += chunk.toString();\n lastResponseTime = Date.now();\n let m;\n OSC4_RESPONSE.lastIndex = 0;\n while (m = OSC4_RESPONSE.exec(buffer)) {\n const idx = parseInt(m[1], 10);\n if (results.has(idx))\n results.set(idx, toHex(m[2], m[3], m[4], m[5]));\n }\n if (buffer.length > 8192)\n buffer = buffer.slice(-4096);\n const done = [...results.values()].filter((v) => v !== null).length;\n if (done === results.size) {\n cleanup();\n resolve4(results);\n return;\n }\n if (idleTimer)\n clearTimeout(idleTimer);\n idleTimer = setTimeout(() => {\n cleanup();\n resolve4(results);\n }, 150);\n if (idleTimer)\n this.activeTimers.push(idleTimer);\n };\n const onTimeout = () => {\n cleanup();\n resolve4(results);\n };\n const cleanup = () => {\n clearTimeout(timer);\n if (idleTimer)\n clearTimeout(idleTimer);\n inp.removeListener(\"data\", onData);\n const listenerIdx = this.activeListeners.findIndex((l) => l.handler === onData);\n if (listenerIdx !== -1)\n this.activeListeners.splice(listenerIdx, 1);\n const timerIdx = this.activeTimers.indexOf(timer);\n if (timerIdx !== -1)\n this.activeTimers.splice(timerIdx, 1);\n if (idleTimer) {\n const idleTimerIdx = this.activeTimers.indexOf(idleTimer);\n if (idleTimerIdx !== -1)\n this.activeTimers.splice(idleTimerIdx, 1);\n }\n };\n const timer = setTimeout(onTimeout, timeoutMs);\n this.activeTimers.push(timer);\n inp.on(\"data\", onData);\n this.activeListeners.push({ event: \"data\", handler: onData });\n this.writeOsc(indices.map((i) => `\\x1B]4;${i};?\\x07`).join(\"\"));\n });\n }\n async querySpecialColors(timeoutMs = 1200) {\n const out = this.stdout;\n const inp = this.stdin;\n const results = {\n 10: null,\n 11: null,\n 12: null,\n 13: null,\n 14: null,\n 15: null,\n 16: null,\n 17: null,\n 19: null\n };\n if (!out.isTTY || !inp.isTTY) {\n return results;\n }\n return new Promise((resolve4) => {\n let buffer = \"\";\n let idleTimer = null;\n const onData = (chunk) => {\n buffer += chunk.toString();\n let m;\n OSC_SPECIAL_RESPONSE.lastIndex = 0;\n while (m = OSC_SPECIAL_RESPONSE.exec(buffer)) {\n const idx = parseInt(m[1], 10);\n if (idx in results) {\n results[idx] = toHex(m[2], m[3], m[4], m[5]);\n }\n }\n if (buffer.length > 8192)\n buffer = buffer.slice(-4096);\n const done = Object.values(results).filter((v) => v !== null).length;\n if (done === Object.keys(results).length) {\n cleanup();\n resolve4(results);\n return;\n }\n if (idleTimer)\n clearTimeout(idleTimer);\n idleTimer = setTimeout(() => {\n cleanup();\n resolve4(results);\n }, 150);\n if (idleTimer)\n this.activeTimers.push(idleTimer);\n };\n const onTimeout = () => {\n cleanup();\n resolve4(results);\n };\n const cleanup = () => {\n clearTimeout(timer);\n if (idleTimer)\n clearTimeout(idleTimer);\n inp.removeListener(\"data\", onData);\n const listenerIdx = this.activeListeners.findIndex((l) => l.handler === onData);\n if (listenerIdx !== -1)\n this.activeListeners.splice(listenerIdx, 1);\n const timerIdx = this.activeTimers.indexOf(timer);\n if (timerIdx !== -1)\n this.activeTimers.splice(timerIdx, 1);\n if (idleTimer) {\n const idleTimerIdx = this.activeTimers.indexOf(idleTimer);\n if (idleTimerIdx !== -1)\n this.activeTimers.splice(idleTimerIdx, 1);\n }\n };\n const timer = setTimeout(onTimeout, timeoutMs);\n this.activeTimers.push(timer);\n inp.on(\"data\", onData);\n this.activeListeners.push({ event: \"data\", handler: onData });\n this.writeOsc([\n \"\\x1B]10;?\\x07\",\n \"\\x1B]11;?\\x07\",\n \"\\x1B]12;?\\x07\",\n \"\\x1B]13;?\\x07\",\n \"\\x1B]14;?\\x07\",\n \"\\x1B]15;?\\x07\",\n \"\\x1B]16;?\\x07\",\n \"\\x1B]17;?\\x07\",\n \"\\x1B]19;?\\x07\"\n ].join(\"\"));\n });\n }\n async detect(options) {\n const { timeout = 5000, size = 16 } = options || {};\n const supported = await this.detectOSCSupport();\n if (!supported) {\n return {\n palette: Array(size).fill(null),\n defaultForeground: null,\n defaultBackground: null,\n cursorColor: null,\n mouseForeground: null,\n mouseBackground: null,\n tekForeground: null,\n tekBackground: null,\n highlightBackground: null,\n highlightForeground: null\n };\n }\n const indicesToQuery = [...Array(size).keys()];\n const [paletteResults, specialColors] = await Promise.all([\n this.queryPalette(indicesToQuery, timeout),\n this.querySpecialColors(timeout)\n ]);\n return {\n palette: [...Array(size).keys()].map((i) => paletteResults.get(i) ?? null),\n defaultForeground: specialColors[10],\n defaultBackground: specialColors[11],\n cursorColor: specialColors[12],\n mouseForeground: specialColors[13],\n mouseBackground: specialColors[14],\n tekForeground: specialColors[15],\n tekBackground: specialColors[16],\n highlightBackground: specialColors[17],\n highlightForeground: specialColors[19]\n };\n }\n}\nfunction createTerminalPalette(stdin, stdout, writeFn, isLegacyTmux) {\n return new TerminalPalette(stdin, stdout, writeFn, isLegacyTmux);\n}\n// src/zig.ts\nimport { dlopen, toArrayBuffer as toArrayBuffer4, JSCallback, ptr as ptr4 } from \"bun:ffi\";\nimport { existsSync as existsSync2 } from \"fs\";\nimport { EventEmitter as EventEmitter5 } from \"events\";\n\n// src/buffer.ts\nimport { toArrayBuffer, ptr } from \"bun:ffi\";\nfunction packDrawOptions(border2, shouldFill, titleAlignment) {\n let packed = 0;\n if (border2 === true) {\n packed |= 15;\n } else if (Array.isArray(border2)) {\n if (border2.includes(\"top\"))\n packed |= 8;\n if (border2.includes(\"right\"))\n packed |= 4;\n if (border2.includes(\"bottom\"))\n packed |= 2;\n if (border2.includes(\"left\"))\n packed |= 1;\n }\n if (shouldFill) {\n packed |= 1 << 4;\n }\n const alignmentMap = {\n left: 0,\n center: 1,\n right: 2\n };\n const alignment = alignmentMap[titleAlignment];\n packed |= alignment << 5;\n return packed;\n}\n\nclass OptimizedBuffer {\n static fbIdCounter = 0;\n id;\n lib;\n bufferPtr;\n _width;\n _height;\n _widthMethod;\n respectAlpha = false;\n _rawBuffers = null;\n _destroyed = false;\n get ptr() {\n return this.bufferPtr;\n }\n guard() {\n if (this._destroyed)\n throw new Error(`Buffer ${this.id} is destroyed`);\n }\n get buffers() {\n this.guard();\n if (this._rawBuffers === null) {\n const size = this._width * this._height;\n const charPtr = this.lib.bufferGetCharPtr(this.bufferPtr);\n const fgPtr = this.lib.bufferGetFgPtr(this.bufferPtr);\n const bgPtr = this.lib.bufferGetBgPtr(this.bufferPtr);\n const attributesPtr = this.lib.bufferGetAttributesPtr(this.bufferPtr);\n this._rawBuffers = {\n char: new Uint32Array(toArrayBuffer(charPtr, 0, size * 4)),\n fg: new Float32Array(toArrayBuffer(fgPtr, 0, size * 4 * 4)),\n bg: new Float32Array(toArrayBuffer(bgPtr, 0, size * 4 * 4)),\n attributes: new Uint32Array(toArrayBuffer(attributesPtr, 0, size * 4))\n };\n }\n return this._rawBuffers;\n }\n constructor(lib, ptr2, width, height, options) {\n this.id = options.id || `fb_${OptimizedBuffer.fbIdCounter++}`;\n this.lib = lib;\n this.respectAlpha = options.respectAlpha || false;\n this._width = width;\n this._height = height;\n this._widthMethod = options.widthMethod || \"unicode\";\n this.bufferPtr = ptr2;\n }\n static create(width, height, widthMethod, options = {}) {\n const lib = resolveRenderLib();\n const respectAlpha = options.respectAlpha || false;\n const id = options.id && options.id.trim() !== \"\" ? options.id : \"unnamed buffer\";\n const buffer = lib.createOptimizedBuffer(width, height, widthMethod, respectAlpha, id);\n return buffer;\n }\n get widthMethod() {\n return this._widthMethod;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n setRespectAlpha(respectAlpha) {\n this.guard();\n this.lib.bufferSetRespectAlpha(this.bufferPtr, respectAlpha);\n this.respectAlpha = respectAlpha;\n }\n getNativeId() {\n this.guard();\n return this.lib.bufferGetId(this.bufferPtr);\n }\n getRealCharBytes(addLineBreaks = false) {\n this.guard();\n const realSize = this.lib.bufferGetRealCharSize(this.bufferPtr);\n const outputBuffer = new Uint8Array(realSize);\n const bytesWritten = this.lib.bufferWriteResolvedChars(this.bufferPtr, outputBuffer, addLineBreaks);\n return outputBuffer.slice(0, bytesWritten);\n }\n getSpanLines() {\n this.guard();\n const { char, fg: fg2, bg: bg2, attributes } = this.buffers;\n const lines = [];\n const CHAR_FLAG_CONTINUATION = 3221225472 | 0;\n const CHAR_FLAG_MASK = 3221225472 | 0;\n const realTextBytes = this.getRealCharBytes(true);\n const realTextLines = new TextDecoder().decode(realTextBytes).split(`\n`);\n for (let y = 0;y < this._height; y++) {\n const spans = [];\n let currentSpan = null;\n const lineChars = [...realTextLines[y] || \"\"];\n let charIdx = 0;\n for (let x = 0;x < this._width; x++) {\n const i = y * this._width + x;\n const cp = char[i];\n const cellFg = RGBA.fromValues(fg2[i * 4], fg2[i * 4 + 1], fg2[i * 4 + 2], fg2[i * 4 + 3]);\n const cellBg = RGBA.fromValues(bg2[i * 4], bg2[i * 4 + 1], bg2[i * 4 + 2], bg2[i * 4 + 3]);\n const cellAttrs = attributes[i] & 255;\n const isContinuation = (cp & CHAR_FLAG_MASK) === CHAR_FLAG_CONTINUATION;\n const cellChar = isContinuation ? \"\" : lineChars[charIdx++] ?? \" \";\n if (currentSpan && currentSpan.fg.equals(cellFg) && currentSpan.bg.equals(cellBg) && currentSpan.attributes === cellAttrs) {\n currentSpan.text += cellChar;\n currentSpan.width += 1;\n } else {\n if (currentSpan) {\n spans.push(currentSpan);\n }\n currentSpan = {\n text: cellChar,\n fg: cellFg,\n bg: cellBg,\n attributes: cellAttrs,\n width: 1\n };\n }\n }\n if (currentSpan) {\n spans.push(currentSpan);\n }\n lines.push({ spans });\n }\n return lines;\n }\n clear(bg2 = RGBA.fromValues(0, 0, 0, 1)) {\n this.guard();\n this.lib.bufferClear(this.bufferPtr, bg2);\n }\n setCell(x, y, char, fg2, bg2, attributes = 0) {\n this.guard();\n this.lib.bufferSetCell(this.bufferPtr, x, y, char, fg2, bg2, attributes);\n }\n setCellWithAlphaBlending(x, y, char, fg2, bg2, attributes = 0) {\n this.guard();\n this.lib.bufferSetCellWithAlphaBlending(this.bufferPtr, x, y, char, fg2, bg2, attributes);\n }\n drawText(text, x, y, fg2, bg2, attributes = 0, selection2) {\n this.guard();\n if (!selection2) {\n this.lib.bufferDrawText(this.bufferPtr, text, x, y, fg2, bg2, attributes);\n return;\n }\n const { start, end } = selection2;\n let selectionBg;\n let selectionFg;\n if (selection2.bgColor) {\n selectionBg = selection2.bgColor;\n selectionFg = selection2.fgColor || fg2;\n } else {\n const defaultBg = bg2 || RGBA.fromValues(0, 0, 0, 0);\n selectionFg = defaultBg.a > 0 ? defaultBg : RGBA.fromValues(0, 0, 0, 1);\n selectionBg = fg2;\n }\n if (start > 0) {\n const beforeText = text.slice(0, start);\n this.lib.bufferDrawText(this.bufferPtr, beforeText, x, y, fg2, bg2, attributes);\n }\n if (end > start) {\n const selectedText = text.slice(start, end);\n this.lib.bufferDrawText(this.bufferPtr, selectedText, x + start, y, selectionFg, selectionBg, attributes);\n }\n if (end < text.length) {\n const afterText = text.slice(end);\n this.lib.bufferDrawText(this.bufferPtr, afterText, x + end, y, fg2, bg2, attributes);\n }\n }\n fillRect(x, y, width, height, bg2) {\n this.lib.bufferFillRect(this.bufferPtr, x, y, width, height, bg2);\n }\n drawFrameBuffer(destX, destY, frameBuffer, sourceX, sourceY, sourceWidth, sourceHeight) {\n this.guard();\n this.lib.drawFrameBuffer(this.bufferPtr, destX, destY, frameBuffer.ptr, sourceX, sourceY, sourceWidth, sourceHeight);\n }\n destroy() {\n if (this._destroyed)\n return;\n this._destroyed = true;\n this.lib.destroyOptimizedBuffer(this.bufferPtr);\n }\n drawTextBuffer(textBufferView, x, y) {\n this.guard();\n this.lib.bufferDrawTextBufferView(this.bufferPtr, textBufferView.ptr, x, y);\n }\n drawEditorView(editorView, x, y) {\n this.guard();\n this.lib.bufferDrawEditorView(this.bufferPtr, editorView.ptr, x, y);\n }\n drawSuperSampleBuffer(x, y, pixelDataPtr, pixelDataLength, format, alignedBytesPerRow) {\n this.guard();\n this.lib.bufferDrawSuperSampleBuffer(this.bufferPtr, x, y, pixelDataPtr, pixelDataLength, format, alignedBytesPerRow);\n }\n drawPackedBuffer(dataPtr, dataLen, posX, posY, terminalWidthCells, terminalHeightCells) {\n this.guard();\n this.lib.bufferDrawPackedBuffer(this.bufferPtr, dataPtr, dataLen, posX, posY, terminalWidthCells, terminalHeightCells);\n }\n drawGrayscaleBuffer(posX, posY, intensities, srcWidth, srcHeight, fg2 = null, bg2 = null) {\n this.guard();\n this.lib.bufferDrawGrayscaleBuffer(this.bufferPtr, posX, posY, ptr(intensities), srcWidth, srcHeight, fg2, bg2);\n }\n drawGrayscaleBufferSupersampled(posX, posY, intensities, srcWidth, srcHeight, fg2 = null, bg2 = null) {\n this.guard();\n this.lib.bufferDrawGrayscaleBufferSupersampled(this.bufferPtr, posX, posY, ptr(intensities), srcWidth, srcHeight, fg2, bg2);\n }\n resize(width, height) {\n this.guard();\n if (this._width === width && this._height === height)\n return;\n this._width = width;\n this._height = height;\n this._rawBuffers = null;\n this.lib.bufferResize(this.bufferPtr, width, height);\n }\n drawBox(options) {\n this.guard();\n const style = parseBorderStyle(options.borderStyle, \"single\");\n const borderChars = options.customBorderChars ?? BorderCharArrays[style];\n const packedOptions = packDrawOptions(options.border, options.shouldFill ?? false, options.titleAlignment || \"left\");\n this.lib.bufferDrawBox(this.bufferPtr, options.x, options.y, options.width, options.height, borderChars, packedOptions, options.borderColor, options.backgroundColor, options.title ?? null);\n }\n pushScissorRect(x, y, width, height) {\n this.guard();\n this.lib.bufferPushScissorRect(this.bufferPtr, x, y, width, height);\n }\n popScissorRect() {\n this.guard();\n this.lib.bufferPopScissorRect(this.bufferPtr);\n }\n clearScissorRects() {\n this.guard();\n this.lib.bufferClearScissorRects(this.bufferPtr);\n }\n pushOpacity(opacity) {\n this.guard();\n this.lib.bufferPushOpacity(this.bufferPtr, Math.max(0, Math.min(1, opacity)));\n }\n popOpacity() {\n this.guard();\n this.lib.bufferPopOpacity(this.bufferPtr);\n }\n getCurrentOpacity() {\n this.guard();\n return this.lib.bufferGetCurrentOpacity(this.bufferPtr);\n }\n clearOpacity() {\n this.guard();\n this.lib.bufferClearOpacity(this.bufferPtr);\n }\n encodeUnicode(text) {\n this.guard();\n return this.lib.encodeUnicode(text, this._widthMethod);\n }\n freeUnicode(encoded) {\n this.guard();\n this.lib.freeUnicode(encoded);\n }\n drawChar(char, x, y, fg2, bg2, attributes = 0) {\n this.guard();\n this.lib.bufferDrawChar(this.bufferPtr, char, x, y, fg2, bg2, attributes);\n }\n}\n\n// ../../node_modules/.bun/bun-ffi-structs@0.1.2+1fb4c65d43e298b9/node_modules/bun-ffi-structs/index.js\nimport { ptr as ptr2, toArrayBuffer as toArrayBuffer2 } from \"bun:ffi\";\nfunction fatalError(...args) {\n const message = args.join(\" \");\n console.error(\"FATAL ERROR:\", message);\n throw new Error(message);\n}\nvar pointerSize = process.arch === \"x64\" || process.arch === \"arm64\" ? 8 : 4;\nvar typeSizes = {\n u8: 1,\n bool_u8: 1,\n bool_u32: 4,\n u16: 2,\n i16: 2,\n u32: 4,\n u64: 8,\n f32: 4,\n f64: 8,\n pointer: pointerSize,\n i32: 4\n};\nvar primitiveKeys = Object.keys(typeSizes);\nfunction isPrimitiveType(type) {\n return typeof type === \"string\" && primitiveKeys.includes(type);\n}\nvar typeAlignments = { ...typeSizes };\nvar typeGetters = {\n u8: (view, offset) => view.getUint8(offset),\n bool_u8: (view, offset) => Boolean(view.getUint8(offset)),\n bool_u32: (view, offset) => Boolean(view.getUint32(offset, true)),\n u16: (view, offset) => view.getUint16(offset, true),\n i16: (view, offset) => view.getInt16(offset, true),\n u32: (view, offset) => view.getUint32(offset, true),\n u64: (view, offset) => view.getBigUint64(offset, true),\n f32: (view, offset) => view.getFloat32(offset, true),\n f64: (view, offset) => view.getFloat64(offset, true),\n i32: (view, offset) => view.getInt32(offset, true),\n pointer: (view, offset) => pointerSize === 8 ? view.getBigUint64(offset, true) : BigInt(view.getUint32(offset, true))\n};\nfunction isObjectPointerDef(type) {\n return typeof type === \"object\" && type !== null && type.__type === \"objectPointer\";\n}\nfunction alignOffset(offset, align) {\n return offset + (align - 1) & ~(align - 1);\n}\nfunction enumTypeError(value) {\n throw new TypeError(`Invalid enum value: ${value}`);\n}\nfunction defineEnum(mapping, base = \"u32\") {\n const reverse2 = Object.fromEntries(Object.entries(mapping).map(([k, v]) => [v, k]));\n return {\n __type: \"enum\",\n type: base,\n to(value) {\n return typeof value === \"number\" ? value : mapping[value] ?? enumTypeError(String(value));\n },\n from(value) {\n return reverse2[value] ?? enumTypeError(String(value));\n },\n enum: mapping\n };\n}\nfunction isEnum(type) {\n return typeof type === \"object\" && type.__type === \"enum\";\n}\nfunction isStruct(type) {\n return typeof type === \"object\" && type.__type === \"struct\";\n}\nfunction primitivePackers(type) {\n let pack;\n let unpack;\n switch (type) {\n case \"u8\":\n pack = (view, off, val) => view.setUint8(off, val);\n unpack = (view, off) => view.getUint8(off);\n break;\n case \"bool_u8\":\n pack = (view, off, val) => view.setUint8(off, val ? 1 : 0);\n unpack = (view, off) => Boolean(view.getUint8(off));\n break;\n case \"bool_u32\":\n pack = (view, off, val) => view.setUint32(off, val ? 1 : 0, true);\n unpack = (view, off) => Boolean(view.getUint32(off, true));\n break;\n case \"u16\":\n pack = (view, off, val) => view.setUint16(off, val, true);\n unpack = (view, off) => view.getUint16(off, true);\n break;\n case \"i16\":\n pack = (view, off, val) => view.setInt16(off, val, true);\n unpack = (view, off) => view.getInt16(off, true);\n break;\n case \"u32\":\n pack = (view, off, val) => view.setUint32(off, val, true);\n unpack = (view, off) => view.getUint32(off, true);\n break;\n case \"i32\":\n pack = (view, off, val) => view.setInt32(off, val, true);\n unpack = (view, off) => view.getInt32(off, true);\n break;\n case \"u64\":\n pack = (view, off, val) => view.setBigUint64(off, BigInt(val), true);\n unpack = (view, off) => view.getBigUint64(off, true);\n break;\n case \"f32\":\n pack = (view, off, val) => view.setFloat32(off, val, true);\n unpack = (view, off) => view.getFloat32(off, true);\n break;\n case \"f64\":\n pack = (view, off, val) => view.setFloat64(off, val, true);\n unpack = (view, off) => view.getFloat64(off, true);\n break;\n case \"pointer\":\n pack = (view, off, val) => {\n pointerSize === 8 ? view.setBigUint64(off, val ? BigInt(val) : 0n, true) : view.setUint32(off, val ? Number(val) : 0, true);\n };\n unpack = (view, off) => {\n const bint = pointerSize === 8 ? view.getBigUint64(off, true) : BigInt(view.getUint32(off, true));\n return Number(bint);\n };\n break;\n default:\n fatalError(`Unsupported primitive type: ${type}`);\n }\n return { pack, unpack };\n}\nvar { pack: pointerPacker, unpack: pointerUnpacker } = primitivePackers(\"pointer\");\nfunction packObjectArray(val) {\n const buffer = new ArrayBuffer(val.length * pointerSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < val.length; i++) {\n const instance = val[i];\n const ptrValue = instance?.ptr ?? null;\n pointerPacker(bufferView, i * pointerSize, ptrValue);\n }\n return bufferView;\n}\nvar encoder = new TextEncoder;\nvar decoder = new TextDecoder;\nfunction defineStruct(fields, structDefOptions) {\n let offset = 0;\n let maxAlign = 1;\n const layout = [];\n const lengthOfFields = {};\n const lengthOfRequested = [];\n const arrayFieldsMetadata = {};\n for (const [name, typeOrStruct, options = {}] of fields) {\n if (options.condition && !options.condition()) {\n continue;\n }\n let size = 0, align = 0;\n let pack;\n let unpack;\n let needsLengthOf = false;\n let lengthOfDef = null;\n if (isPrimitiveType(typeOrStruct)) {\n size = typeSizes[typeOrStruct];\n align = typeAlignments[typeOrStruct];\n ({ pack, unpack } = primitivePackers(typeOrStruct));\n } else if (typeof typeOrStruct === \"string\" && typeOrStruct === \"cstring\") {\n size = pointerSize;\n align = pointerSize;\n pack = (view, off, val) => {\n const bufPtr = val ? ptr2(encoder.encode(val + \"\\x00\")) : null;\n pointerPacker(view, off, bufPtr);\n };\n unpack = (view, off) => {\n const ptrVal = pointerUnpacker(view, off);\n return ptrVal;\n };\n } else if (typeof typeOrStruct === \"string\" && typeOrStruct === \"char*\") {\n size = pointerSize;\n align = pointerSize;\n pack = (view, off, val) => {\n const bufPtr = val ? ptr2(encoder.encode(val)) : null;\n pointerPacker(view, off, bufPtr);\n };\n unpack = (view, off) => {\n const ptrVal = pointerUnpacker(view, off);\n return ptrVal;\n };\n needsLengthOf = true;\n } else if (isEnum(typeOrStruct)) {\n const base = typeOrStruct.type;\n size = typeSizes[base];\n align = typeAlignments[base];\n const { pack: packEnum } = primitivePackers(base);\n pack = (view, off, val) => {\n const num = typeOrStruct.to(val);\n packEnum(view, off, num);\n };\n unpack = (view, off) => {\n const raw = typeGetters[base](view, off);\n return typeOrStruct.from(raw);\n };\n } else if (isStruct(typeOrStruct)) {\n if (options.asPointer === true) {\n size = pointerSize;\n align = pointerSize;\n pack = (view, off, val, obj, options2) => {\n if (!val) {\n pointerPacker(view, off, null);\n return;\n }\n const nestedBuf = typeOrStruct.pack(val, options2);\n pointerPacker(view, off, ptr2(nestedBuf));\n };\n unpack = (view, off) => {\n throw new Error(\"Not implemented yet\");\n };\n } else {\n size = typeOrStruct.size;\n align = typeOrStruct.align;\n pack = (view, off, val, obj, options2) => {\n const nestedBuf = typeOrStruct.pack(val, options2);\n const nestedView = new Uint8Array(nestedBuf);\n const dView = new Uint8Array(view.buffer);\n dView.set(nestedView, off);\n };\n unpack = (view, off) => {\n const slice = view.buffer.slice(off, off + size);\n return typeOrStruct.unpack(slice);\n };\n }\n } else if (isObjectPointerDef(typeOrStruct)) {\n size = pointerSize;\n align = pointerSize;\n pack = (view, off, value) => {\n const ptrValue = value?.ptr ?? null;\n if (ptrValue === undefined) {\n console.warn(`Field '${name}' expected object with '.ptr' property, but got undefined pointer value from:`, value);\n pointerPacker(view, off, null);\n } else {\n pointerPacker(view, off, ptrValue);\n }\n };\n unpack = (view, off) => {\n return pointerUnpacker(view, off);\n };\n } else if (Array.isArray(typeOrStruct) && typeOrStruct.length === 1 && typeOrStruct[0] !== undefined) {\n const [def] = typeOrStruct;\n size = pointerSize;\n align = pointerSize;\n let arrayElementSize;\n if (isEnum(def)) {\n arrayElementSize = typeSizes[def.type];\n pack = (view, off, val, obj) => {\n if (!val || val.length === 0) {\n pointerPacker(view, off, null);\n return;\n }\n const buffer = new ArrayBuffer(val.length * arrayElementSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < val.length; i++) {\n const num = def.to(val[i]);\n bufferView.setUint32(i * arrayElementSize, num, true);\n }\n pointerPacker(view, off, ptr2(buffer));\n };\n unpack = null;\n needsLengthOf = true;\n lengthOfDef = def;\n } else if (isStruct(def)) {\n arrayElementSize = def.size;\n pack = (view, off, val, obj, options2) => {\n if (!val || val.length === 0) {\n pointerPacker(view, off, null);\n return;\n }\n const buffer = new ArrayBuffer(val.length * arrayElementSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < val.length; i++) {\n def.packInto(val[i], bufferView, i * arrayElementSize, options2);\n }\n pointerPacker(view, off, ptr2(buffer));\n };\n unpack = (view, off) => {\n throw new Error(\"Not implemented yet\");\n };\n } else if (isPrimitiveType(def)) {\n arrayElementSize = typeSizes[def];\n const { pack: primitivePack } = primitivePackers(def);\n pack = (view, off, val) => {\n if (!val || val.length === 0) {\n pointerPacker(view, off, null);\n return;\n }\n const buffer = new ArrayBuffer(val.length * arrayElementSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < val.length; i++) {\n primitivePack(bufferView, i * arrayElementSize, val[i]);\n }\n pointerPacker(view, off, ptr2(buffer));\n };\n unpack = null;\n needsLengthOf = true;\n lengthOfDef = def;\n } else if (isObjectPointerDef(def)) {\n arrayElementSize = pointerSize;\n pack = (view, off, val) => {\n if (!val || val.length === 0) {\n pointerPacker(view, off, null);\n return;\n }\n const packedView = packObjectArray(val);\n pointerPacker(view, off, ptr2(packedView.buffer));\n };\n unpack = () => {\n throw new Error(\"not implemented yet\");\n };\n } else {\n throw new Error(`Unsupported array element type for ${name}: ${JSON.stringify(def)}`);\n }\n const lengthOfField = Object.values(lengthOfFields).find((f) => f.lengthOf === name);\n if (lengthOfField && isPrimitiveType(lengthOfField.type)) {\n const { pack: lengthPack } = primitivePackers(lengthOfField.type);\n arrayFieldsMetadata[name] = {\n elementSize: arrayElementSize,\n arrayOffset: offset,\n lengthOffset: lengthOfField.offset,\n lengthPack\n };\n }\n } else {\n throw new Error(`Unsupported field type for ${name}: ${JSON.stringify(typeOrStruct)}`);\n }\n offset = alignOffset(offset, align);\n if (options.unpackTransform) {\n const originalUnpack = unpack;\n unpack = (view, off) => options.unpackTransform(originalUnpack(view, off));\n }\n if (options.packTransform) {\n const originalPack = pack;\n pack = (view, off, val, obj, packOptions) => originalPack(view, off, options.packTransform(val), obj, packOptions);\n }\n if (options.optional) {\n const originalPack = pack;\n if (isStruct(typeOrStruct) && !options.asPointer) {\n pack = (view, off, val, obj, packOptions) => {\n if (val || options.mapOptionalInline) {\n originalPack(view, off, val, obj, packOptions);\n }\n };\n } else {\n pack = (view, off, val, obj, packOptions) => originalPack(view, off, val ?? 0, obj, packOptions);\n }\n }\n if (options.lengthOf) {\n const originalPack = pack;\n pack = (view, off, val, obj, packOptions) => {\n const targetValue = obj[options.lengthOf];\n let length = 0;\n if (targetValue) {\n if (typeof targetValue === \"string\") {\n length = Buffer.byteLength(targetValue);\n } else {\n length = targetValue.length;\n }\n }\n return originalPack(view, off, length, obj, packOptions);\n };\n }\n let validateFunctions;\n if (options.validate) {\n validateFunctions = Array.isArray(options.validate) ? options.validate : [options.validate];\n }\n const layoutField = {\n name,\n offset,\n size,\n align,\n validate: validateFunctions,\n optional: !!options.optional || !!options.lengthOf || options.default !== undefined,\n default: options.default,\n pack,\n unpack,\n type: typeOrStruct,\n lengthOf: options.lengthOf\n };\n layout.push(layoutField);\n if (options.lengthOf) {\n lengthOfFields[options.lengthOf] = layoutField;\n }\n if (needsLengthOf) {\n const def = typeof typeOrStruct === \"string\" && typeOrStruct === \"char*\" ? \"char*\" : lengthOfDef;\n if (!def)\n fatalError(`Internal error: needsLengthOf=true but def is null for ${name}`);\n lengthOfRequested.push({ requester: layoutField, def });\n }\n offset += size;\n maxAlign = Math.max(maxAlign, align);\n }\n for (const { requester, def } of lengthOfRequested) {\n const lengthOfField = lengthOfFields[requester.name];\n if (!lengthOfField) {\n if (def === \"char*\") {\n continue;\n }\n throw new Error(`lengthOf field not found for array field ${requester.name}`);\n }\n if (def === \"char*\") {\n requester.unpack = (view, off) => {\n const ptrAddress = pointerUnpacker(view, off);\n const length = lengthOfField.unpack(view, lengthOfField.offset);\n if (ptrAddress === 0) {\n return null;\n }\n const byteLength = typeof length === \"bigint\" ? Number(length) : length;\n if (byteLength === 0) {\n return \"\";\n }\n const buffer = toArrayBuffer2(ptrAddress, 0, byteLength);\n return decoder.decode(buffer);\n };\n } else if (isPrimitiveType(def)) {\n const elemSize = typeSizes[def];\n const { unpack: primitiveUnpack } = primitivePackers(def);\n requester.unpack = (view, off) => {\n const result = [];\n const length = lengthOfField.unpack(view, lengthOfField.offset);\n const ptrAddress = pointerUnpacker(view, off);\n if (ptrAddress === 0n && length > 0) {\n throw new Error(`Array field ${requester.name} has null pointer but length ${length}.`);\n }\n if (ptrAddress === 0n || length === 0) {\n return [];\n }\n const buffer = toArrayBuffer2(ptrAddress, 0, length * elemSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < length; i++) {\n result.push(primitiveUnpack(bufferView, i * elemSize));\n }\n return result;\n };\n } else {\n const elemSize = def.type === \"u32\" ? 4 : 8;\n requester.unpack = (view, off) => {\n const result = [];\n const length = lengthOfField.unpack(view, lengthOfField.offset);\n const ptrAddress = pointerUnpacker(view, off);\n if (ptrAddress === 0n && length > 0) {\n throw new Error(`Array field ${requester.name} has null pointer but length ${length}.`);\n }\n if (ptrAddress === 0n || length === 0) {\n return [];\n }\n const buffer = toArrayBuffer2(ptrAddress, 0, length * elemSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < length; i++) {\n result.push(def.from(bufferView.getUint32(i * elemSize, true)));\n }\n return result;\n };\n }\n }\n const totalSize = alignOffset(offset, maxAlign);\n const description = layout.map((f) => ({\n name: f.name,\n offset: f.offset,\n size: f.size,\n align: f.align,\n optional: f.optional,\n type: f.type,\n lengthOf: f.lengthOf\n }));\n const layoutByName = new Map(description.map((f) => [f.name, f]));\n const arrayFields = new Map(Object.entries(arrayFieldsMetadata));\n return {\n __type: \"struct\",\n size: totalSize,\n align: maxAlign,\n hasMapValue: !!structDefOptions?.mapValue,\n layoutByName,\n arrayFields,\n pack(obj, options) {\n const buf = new ArrayBuffer(totalSize);\n const view = new DataView(buf);\n let mappedObj = obj;\n if (structDefOptions?.mapValue) {\n mappedObj = structDefOptions.mapValue(obj);\n }\n for (const field of layout) {\n const value = mappedObj[field.name] ?? field.default;\n if (!field.optional && value === undefined) {\n fatalError(`Packing non-optional field '${field.name}' but value is undefined (and no default provided)`);\n }\n if (field.validate) {\n for (const validateFn of field.validate) {\n validateFn(value, field.name, {\n hints: options?.validationHints,\n input: mappedObj\n });\n }\n }\n field.pack(view, field.offset, value, mappedObj, options);\n }\n return view.buffer;\n },\n packInto(obj, view, offset2, options) {\n let mappedObj = obj;\n if (structDefOptions?.mapValue) {\n mappedObj = structDefOptions.mapValue(obj);\n }\n for (const field of layout) {\n const value = mappedObj[field.name] ?? field.default;\n if (!field.optional && value === undefined) {\n console.warn(`packInto missing value for non-optional field '${field.name}' at offset ${offset2 + field.offset}. Writing default or zero.`);\n }\n if (field.validate) {\n for (const validateFn of field.validate) {\n validateFn(value, field.name, {\n hints: options?.validationHints,\n input: mappedObj\n });\n }\n }\n field.pack(view, offset2 + field.offset, value, mappedObj, options);\n }\n },\n unpack(buf) {\n if (buf.byteLength < totalSize) {\n fatalError(`Buffer size (${buf.byteLength}) is smaller than struct size (${totalSize}) for unpacking.`);\n }\n const view = new DataView(buf);\n const result = structDefOptions?.default ? { ...structDefOptions.default } : {};\n for (const field of layout) {\n if (!field.unpack) {\n continue;\n }\n try {\n result[field.name] = field.unpack(view, field.offset);\n } catch (e) {\n console.error(`Error unpacking field '${field.name}' at offset ${field.offset}:`, e);\n throw e;\n }\n }\n if (structDefOptions?.reduceValue) {\n return structDefOptions.reduceValue(result);\n }\n return result;\n },\n packList(objects, options) {\n if (objects.length === 0) {\n return new ArrayBuffer(0);\n }\n const buffer = new ArrayBuffer(totalSize * objects.length);\n const view = new DataView(buffer);\n for (let i = 0;i < objects.length; i++) {\n let mappedObj = objects[i];\n if (structDefOptions?.mapValue) {\n mappedObj = structDefOptions.mapValue(objects[i]);\n }\n for (const field of layout) {\n const value = mappedObj[field.name] ?? field.default;\n if (!field.optional && value === undefined) {\n fatalError(`Packing non-optional field '${field.name}' at index ${i} but value is undefined (and no default provided)`);\n }\n if (field.validate) {\n for (const validateFn of field.validate) {\n validateFn(value, field.name, {\n hints: options?.validationHints,\n input: mappedObj\n });\n }\n }\n field.pack(view, i * totalSize + field.offset, value, mappedObj, options);\n }\n }\n return buffer;\n },\n unpackList(buf, count) {\n if (count === 0) {\n return [];\n }\n const expectedSize = totalSize * count;\n if (buf.byteLength < expectedSize) {\n fatalError(`Buffer size (${buf.byteLength}) is smaller than expected size (${expectedSize}) for unpacking ${count} structs.`);\n }\n const view = new DataView(buf);\n const results = [];\n for (let i = 0;i < count; i++) {\n const offset2 = i * totalSize;\n const result = structDefOptions?.default ? { ...structDefOptions.default } : {};\n for (const field of layout) {\n if (!field.unpack) {\n continue;\n }\n try {\n result[field.name] = field.unpack(view, offset2 + field.offset);\n } catch (e) {\n console.error(`Error unpacking field '${field.name}' at index ${i}, offset ${offset2 + field.offset}:`, e);\n throw e;\n }\n }\n if (structDefOptions?.reduceValue) {\n results.push(structDefOptions.reduceValue(result));\n } else {\n results.push(result);\n }\n }\n return results;\n },\n describe() {\n return description;\n }\n };\n}\n\n// src/zig-structs.ts\nimport { ptr as ptr3, toArrayBuffer as toArrayBuffer3 } from \"bun:ffi\";\nvar rgbaPackTransform = (rgba) => rgba ? ptr3(rgba.buffer) : null;\nvar rgbaUnpackTransform = (ptr4) => ptr4 ? RGBA.fromArray(new Float32Array(toArrayBuffer3(ptr4))) : undefined;\nvar StyledChunkStruct = defineStruct([\n [\"text\", \"char*\"],\n [\"text_len\", \"u64\", { lengthOf: \"text\" }],\n [\n \"fg\",\n \"pointer\",\n {\n optional: true,\n packTransform: rgbaPackTransform,\n unpackTransform: rgbaUnpackTransform\n }\n ],\n [\n \"bg\",\n \"pointer\",\n {\n optional: true,\n packTransform: rgbaPackTransform,\n unpackTransform: rgbaUnpackTransform\n }\n ],\n [\"attributes\", \"u32\", { optional: true }]\n]);\nvar HighlightStruct = defineStruct([\n [\"start\", \"u32\"],\n [\"end\", \"u32\"],\n [\"styleId\", \"u32\"],\n [\"priority\", \"u8\", { default: 0 }],\n [\"hlRef\", \"u16\", { default: 0 }]\n]);\nvar LogicalCursorStruct = defineStruct([\n [\"row\", \"u32\"],\n [\"col\", \"u32\"],\n [\"offset\", \"u32\"]\n]);\nvar VisualCursorStruct = defineStruct([\n [\"visualRow\", \"u32\"],\n [\"visualCol\", \"u32\"],\n [\"logicalRow\", \"u32\"],\n [\"logicalCol\", \"u32\"],\n [\"offset\", \"u32\"]\n]);\nvar UnicodeMethodEnum = defineEnum({ wcwidth: 0, unicode: 1 }, \"u8\");\nvar TerminalCapabilitiesStruct = defineStruct([\n [\"kitty_keyboard\", \"bool_u8\"],\n [\"kitty_graphics\", \"bool_u8\"],\n [\"rgb\", \"bool_u8\"],\n [\"unicode\", UnicodeMethodEnum],\n [\"sgr_pixels\", \"bool_u8\"],\n [\"color_scheme_updates\", \"bool_u8\"],\n [\"explicit_width\", \"bool_u8\"],\n [\"scaled_text\", \"bool_u8\"],\n [\"sixel\", \"bool_u8\"],\n [\"focus_tracking\", \"bool_u8\"],\n [\"sync\", \"bool_u8\"],\n [\"bracketed_paste\", \"bool_u8\"],\n [\"hyperlinks\", \"bool_u8\"],\n [\"osc52\", \"bool_u8\"],\n [\"explicit_cursor_positioning\", \"bool_u8\"],\n [\"term_name\", \"char*\"],\n [\"term_name_len\", \"u64\", { lengthOf: \"term_name\" }],\n [\"term_version\", \"char*\"],\n [\"term_version_len\", \"u64\", { lengthOf: \"term_version\" }],\n [\"term_from_xtversion\", \"bool_u8\"]\n]);\nvar EncodedCharStruct = defineStruct([\n [\"width\", \"u8\"],\n [\"char\", \"u32\"]\n]);\nvar LineInfoStruct = defineStruct([\n [\"starts\", [\"u32\"]],\n [\"startsLen\", \"u32\", { lengthOf: \"starts\" }],\n [\"widths\", [\"u32\"]],\n [\"widthsLen\", \"u32\", { lengthOf: \"widths\" }],\n [\"sources\", [\"u32\"]],\n [\"sourcesLen\", \"u32\", { lengthOf: \"sources\" }],\n [\"wraps\", [\"u32\"]],\n [\"wrapsLen\", \"u32\", { lengthOf: \"wraps\" }],\n [\"maxWidth\", \"u32\"]\n]);\nvar MeasureResultStruct = defineStruct([\n [\"lineCount\", \"u32\"],\n [\"maxWidth\", \"u32\"]\n]);\nvar CursorStateStruct = defineStruct([\n [\"x\", \"u32\"],\n [\"y\", \"u32\"],\n [\"visible\", \"bool_u8\"],\n [\"style\", \"u8\"],\n [\"blinking\", \"bool_u8\"],\n [\"r\", \"f32\"],\n [\"g\", \"f32\"],\n [\"b\", \"f32\"],\n [\"a\", \"f32\"]\n]);\nvar CursorStyleOptionsStruct = defineStruct([\n [\"style\", \"u8\", { default: 255 }],\n [\"blinking\", \"u8\", { default: 255 }],\n [\n \"color\",\n \"pointer\",\n {\n optional: true,\n packTransform: rgbaPackTransform,\n unpackTransform: rgbaUnpackTransform\n }\n ],\n [\"cursor\", \"u8\", { default: 255 }]\n]);\nvar GrowthPolicyEnum = defineEnum({ grow: 0, block: 1 }, \"u8\");\nvar NativeSpanFeedOptionsStruct = defineStruct([\n [\"chunkSize\", \"u32\", { default: 64 * 1024 }],\n [\"initialChunks\", \"u32\", { default: 2 }],\n [\"maxBytes\", \"u64\", { default: 0n }],\n [\"growthPolicy\", GrowthPolicyEnum, { default: \"grow\" }],\n [\"autoCommitOnFull\", \"bool_u8\", { default: true }],\n [\"spanQueueCapacity\", \"u32\", { default: 0 }]\n]);\nvar NativeSpanFeedStatsStruct = defineStruct([\n [\"bytesWritten\", \"u64\"],\n [\"spansCommitted\", \"u64\"],\n [\"chunks\", \"u32\"],\n [\"pendingSpans\", \"u32\"]\n]);\nvar SpanInfoStruct = defineStruct([\n [\"chunkPtr\", \"pointer\"],\n [\"offset\", \"u32\"],\n [\"len\", \"u32\"],\n [\"chunkIndex\", \"u32\"],\n [\"reserved\", \"u32\", { default: 0 }]\n], {\n reduceValue: (value) => ({\n chunkPtr: value.chunkPtr,\n offset: value.offset,\n len: value.len,\n chunkIndex: value.chunkIndex\n })\n});\nvar ReserveInfoStruct = defineStruct([\n [\"ptr\", \"pointer\"],\n [\"len\", \"u32\"],\n [\"reserved\", \"u32\", { default: 0 }]\n], {\n reduceValue: (value) => ({\n ptr: value.ptr,\n len: value.len\n })\n});\n\n// src/zig.ts\nvar module = await import(`@opentui/core-${process.platform}-${process.arch}/index.ts`);\nvar targetLibPath = module.default;\nif (isBunfsPath(targetLibPath)) {\n targetLibPath = targetLibPath.replace(\"../\", \"\");\n}\nif (!existsSync2(targetLibPath)) {\n throw new Error(`opentui is not supported on the current platform: ${process.platform}-${process.arch}`);\n}\nregisterEnvVar({\n name: \"OTUI_DEBUG_FFI\",\n description: \"Enable debug logging for the FFI bindings.\",\n type: \"boolean\",\n default: false\n});\nregisterEnvVar({\n name: \"OTUI_TRACE_FFI\",\n description: \"Enable tracing for the FFI bindings.\",\n type: \"boolean\",\n default: false\n});\nregisterEnvVar({\n name: \"OPENTUI_FORCE_WCWIDTH\",\n description: \"Use wcwidth for character width calculations\",\n type: \"boolean\",\n default: false\n});\nregisterEnvVar({\n name: \"OPENTUI_FORCE_UNICODE\",\n description: \"Force Mode 2026 Unicode support in terminal capabilities\",\n type: \"boolean\",\n default: false\n});\nregisterEnvVar({\n name: \"OPENTUI_NO_GRAPHICS\",\n description: \"Disable Kitty graphics protocol detection\",\n type: \"boolean\",\n default: false\n});\nregisterEnvVar({\n name: \"OPENTUI_FORCE_NOZWJ\",\n description: \"Use no_zwj width method (Unicode without ZWJ joining)\",\n type: \"boolean\",\n default: false\n});\nvar CURSOR_STYLE_TO_ID = { block: 0, line: 1, underline: 2 };\nvar CURSOR_ID_TO_STYLE = [\"block\", \"line\", \"underline\"];\nvar MOUSE_STYLE_TO_ID = { default: 0, pointer: 1, text: 2, crosshair: 3, move: 4, \"not-allowed\": 5 };\nvar globalTraceSymbols = null;\nvar globalFFILogWriter = null;\nvar exitHandlerRegistered = false;\nfunction toPointer(value) {\n if (typeof value === \"bigint\") {\n if (value > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new Error(\"Pointer exceeds safe integer range\");\n }\n return Number(value);\n }\n return value;\n}\nfunction toNumber(value) {\n return typeof value === \"bigint\" ? Number(value) : value;\n}\nfunction getOpenTUILib(libPath) {\n const resolvedLibPath = libPath || targetLibPath;\n const rawSymbols = dlopen(resolvedLibPath, {\n setLogCallback: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n setEventCallback: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n createRenderer: {\n args: [\"u32\", \"u32\", \"bool\", \"bool\"],\n returns: \"ptr\"\n },\n destroyRenderer: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n setUseThread: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\"\n },\n setBackgroundColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n setRenderOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\"\n },\n updateStats: {\n args: [\"ptr\", \"f64\", \"u32\", \"f64\"],\n returns: \"void\"\n },\n updateMemoryStats: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\"\n },\n render: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\"\n },\n getNextBuffer: {\n args: [\"ptr\"],\n returns: \"ptr\"\n },\n getCurrentBuffer: {\n args: [\"ptr\"],\n returns: \"ptr\"\n },\n queryPixelResolution: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n createOptimizedBuffer: {\n args: [\"u32\", \"u32\", \"bool\", \"u8\", \"ptr\", \"usize\"],\n returns: \"ptr\"\n },\n destroyOptimizedBuffer: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n drawFrameBuffer: {\n args: [\"ptr\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\"\n },\n getBufferWidth: {\n args: [\"ptr\"],\n returns: \"u32\"\n },\n getBufferHeight: {\n args: [\"ptr\"],\n returns: \"u32\"\n },\n bufferClear: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n bufferGetCharPtr: {\n args: [\"ptr\"],\n returns: \"ptr\"\n },\n bufferGetFgPtr: {\n args: [\"ptr\"],\n returns: \"ptr\"\n },\n bufferGetBgPtr: {\n args: [\"ptr\"],\n returns: \"ptr\"\n },\n bufferGetAttributesPtr: {\n args: [\"ptr\"],\n returns: \"ptr\"\n },\n bufferGetRespectAlpha: {\n args: [\"ptr\"],\n returns: \"bool\"\n },\n bufferSetRespectAlpha: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\"\n },\n bufferGetId: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\"\n },\n bufferGetRealCharSize: {\n args: [\"ptr\"],\n returns: \"u32\"\n },\n bufferWriteResolvedChars: {\n args: [\"ptr\", \"ptr\", \"usize\", \"bool\"],\n returns: \"u32\"\n },\n bufferDrawText: {\n args: [\"ptr\", \"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\"\n },\n bufferSetCellWithAlphaBlending: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\"\n },\n bufferSetCell: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\"\n },\n bufferFillRect: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\"],\n returns: \"void\"\n },\n bufferResize: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\"\n },\n linkAlloc: {\n args: [\"ptr\", \"u32\"],\n returns: \"u32\"\n },\n linkGetUrl: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\"\n },\n attributesWithLink: {\n args: [\"u32\", \"u32\"],\n returns: \"u32\"\n },\n attributesGetLinkId: {\n args: [\"u32\"],\n returns: \"u32\"\n },\n resizeRenderer: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\"\n },\n setCursorPosition: {\n args: [\"ptr\", \"i32\", \"i32\", \"bool\"],\n returns: \"void\"\n },\n setCursorColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n getCursorState: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n setCursorStyleOptions: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n setDebugOverlay: {\n args: [\"ptr\", \"bool\", \"u8\"],\n returns: \"void\"\n },\n clearTerminal: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n setTerminalTitle: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\"\n },\n copyToClipboardOSC52: {\n args: [\"ptr\", \"u8\", \"ptr\", \"usize\"],\n returns: \"bool\"\n },\n clearClipboardOSC52: {\n args: [\"ptr\", \"u8\"],\n returns: \"bool\"\n },\n bufferDrawSuperSampleBuffer: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\", \"u8\", \"u32\"],\n returns: \"void\"\n },\n bufferDrawPackedBuffer: {\n args: [\"ptr\", \"ptr\", \"usize\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\"\n },\n bufferDrawGrayscaleBuffer: {\n args: [\"ptr\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\"\n },\n bufferDrawGrayscaleBufferSupersampled: {\n args: [\"ptr\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\"\n },\n bufferDrawBox: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"ptr\", \"u32\", \"ptr\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\"\n },\n bufferPushScissorRect: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\"],\n returns: \"void\"\n },\n bufferPopScissorRect: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n bufferClearScissorRects: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n bufferPushOpacity: {\n args: [\"ptr\", \"f32\"],\n returns: \"void\"\n },\n bufferPopOpacity: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n bufferGetCurrentOpacity: {\n args: [\"ptr\"],\n returns: \"f32\"\n },\n bufferClearOpacity: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n addToHitGrid: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\"\n },\n clearCurrentHitGrid: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n hitGridPushScissorRect: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\"],\n returns: \"void\"\n },\n hitGridPopScissorRect: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n hitGridClearScissorRects: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n addToCurrentHitGridClipped: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\"\n },\n checkHit: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"u32\"\n },\n getHitGridDirty: {\n args: [\"ptr\"],\n returns: \"bool\"\n },\n dumpHitGrid: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n dumpBuffers: {\n args: [\"ptr\", \"i64\"],\n returns: \"void\"\n },\n dumpStdoutBuffer: {\n args: [\"ptr\", \"i64\"],\n returns: \"void\"\n },\n restoreTerminalModes: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n enableMouse: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\"\n },\n disableMouse: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n enableKittyKeyboard: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\"\n },\n disableKittyKeyboard: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n setKittyKeyboardFlags: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\"\n },\n getKittyKeyboardFlags: {\n args: [\"ptr\"],\n returns: \"u8\"\n },\n setupTerminal: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\"\n },\n suspendRenderer: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n resumeRenderer: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n writeOut: {\n args: [\"ptr\", \"ptr\", \"u64\"],\n returns: \"void\"\n },\n createTextBuffer: {\n args: [\"u8\"],\n returns: \"ptr\"\n },\n destroyTextBuffer: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n textBufferGetLength: {\n args: [\"ptr\"],\n returns: \"u32\"\n },\n textBufferGetByteSize: {\n args: [\"ptr\"],\n returns: \"u32\"\n },\n textBufferReset: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n textBufferClear: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n textBufferSetDefaultFg: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n textBufferSetDefaultBg: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n textBufferSetDefaultAttributes: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n textBufferResetDefaults: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n textBufferGetTabWidth: {\n args: [\"ptr\"],\n returns: \"u8\"\n },\n textBufferSetTabWidth: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\"\n },\n textBufferRegisterMemBuffer: {\n args: [\"ptr\", \"ptr\", \"usize\", \"bool\"],\n returns: \"u16\"\n },\n textBufferReplaceMemBuffer: {\n args: [\"ptr\", \"u8\", \"ptr\", \"usize\", \"bool\"],\n returns: \"bool\"\n },\n textBufferClearMemRegistry: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n textBufferSetTextFromMem: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\"\n },\n textBufferAppend: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\"\n },\n textBufferAppendFromMemId: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\"\n },\n textBufferLoadFile: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"bool\"\n },\n textBufferSetStyledText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\"\n },\n textBufferGetLineCount: {\n args: [\"ptr\"],\n returns: \"u32\"\n },\n textBufferGetPlainText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\"\n },\n textBufferAddHighlightByCharRange: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n textBufferAddHighlight: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"void\"\n },\n textBufferRemoveHighlightsByRef: {\n args: [\"ptr\", \"u16\"],\n returns: \"void\"\n },\n textBufferClearLineHighlights: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\"\n },\n textBufferClearAllHighlights: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n textBufferSetSyntaxStyle: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n textBufferGetLineHighlightsPtr: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"ptr\"\n },\n textBufferFreeLineHighlights: {\n args: [\"ptr\", \"usize\"],\n returns: \"void\"\n },\n textBufferGetHighlightCount: {\n args: [\"ptr\"],\n returns: \"u32\"\n },\n textBufferGetTextRange: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\"\n },\n textBufferGetTextRangeByCoords: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\"\n },\n createTextBufferView: {\n args: [\"ptr\"],\n returns: \"ptr\"\n },\n destroyTextBufferView: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n textBufferViewSetSelection: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\"\n },\n textBufferViewResetSelection: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n textBufferViewGetSelectionInfo: {\n args: [\"ptr\"],\n returns: \"u64\"\n },\n textBufferViewSetLocalSelection: {\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\n returns: \"bool\"\n },\n textBufferViewUpdateSelection: {\n args: [\"ptr\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\"\n },\n textBufferViewUpdateLocalSelection: {\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\n returns: \"bool\"\n },\n textBufferViewResetLocalSelection: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n textBufferViewSetWrapWidth: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\"\n },\n textBufferViewSetWrapMode: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\"\n },\n textBufferViewSetViewportSize: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\"\n },\n textBufferViewSetViewport: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\"\n },\n textBufferViewGetVirtualLineCount: {\n args: [\"ptr\"],\n returns: \"u32\"\n },\n textBufferViewGetLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n textBufferViewGetLogicalLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n textBufferViewGetSelectedText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\"\n },\n textBufferViewGetPlainText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\"\n },\n textBufferViewSetTabIndicator: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\"\n },\n textBufferViewSetTabIndicatorColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n textBufferViewSetTruncate: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\"\n },\n textBufferViewMeasureForDimensions: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\"],\n returns: \"bool\"\n },\n bufferDrawTextBufferView: {\n args: [\"ptr\", \"ptr\", \"i32\", \"i32\"],\n returns: \"void\"\n },\n bufferDrawEditorView: {\n args: [\"ptr\", \"ptr\", \"i32\", \"i32\"],\n returns: \"void\"\n },\n createEditorView: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"ptr\"\n },\n destroyEditorView: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editorViewSetViewportSize: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\"\n },\n editorViewSetViewport: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"bool\"],\n returns: \"void\"\n },\n editorViewGetViewport: {\n args: [\"ptr\", \"ptr\", \"ptr\", \"ptr\", \"ptr\"],\n returns: \"void\"\n },\n editorViewSetScrollMargin: {\n args: [\"ptr\", \"f32\"],\n returns: \"void\"\n },\n editorViewSetWrapMode: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\"\n },\n editorViewGetVirtualLineCount: {\n args: [\"ptr\"],\n returns: \"u32\"\n },\n editorViewGetTotalVirtualLineCount: {\n args: [\"ptr\"],\n returns: \"u32\"\n },\n editorViewGetTextBufferView: {\n args: [\"ptr\"],\n returns: \"ptr\"\n },\n editorViewGetLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n editorViewGetLogicalLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n createEditBuffer: {\n args: [\"u8\"],\n returns: \"ptr\"\n },\n destroyEditBuffer: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editBufferSetText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\"\n },\n editBufferSetTextFromMem: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\"\n },\n editBufferReplaceText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\"\n },\n editBufferReplaceTextFromMem: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\"\n },\n editBufferGetText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\"\n },\n editBufferInsertChar: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\"\n },\n editBufferInsertText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\"\n },\n editBufferDeleteChar: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editBufferDeleteCharBackward: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editBufferDeleteRange: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\"\n },\n editBufferNewLine: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editBufferDeleteLine: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editBufferMoveCursorLeft: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editBufferMoveCursorRight: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editBufferMoveCursorUp: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editBufferMoveCursorDown: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editBufferGotoLine: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\"\n },\n editBufferSetCursor: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\"\n },\n editBufferSetCursorToLineCol: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\"\n },\n editBufferSetCursorByOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\"\n },\n editBufferGetCursorPosition: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n editBufferGetId: {\n args: [\"ptr\"],\n returns: \"u16\"\n },\n editBufferGetTextBuffer: {\n args: [\"ptr\"],\n returns: \"ptr\"\n },\n editBufferDebugLogRope: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editBufferUndo: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\"\n },\n editBufferRedo: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\"\n },\n editBufferCanUndo: {\n args: [\"ptr\"],\n returns: \"bool\"\n },\n editBufferCanRedo: {\n args: [\"ptr\"],\n returns: \"bool\"\n },\n editBufferClearHistory: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editBufferClear: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editBufferGetNextWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n editBufferGetPrevWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n editBufferGetEOL: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n editBufferOffsetToPosition: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"bool\"\n },\n editBufferPositionToOffset: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"u32\"\n },\n editBufferGetLineStartOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"u32\"\n },\n editBufferGetTextRange: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\"\n },\n editBufferGetTextRangeByCoords: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\"\n },\n editorViewSetSelection: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\"\n },\n editorViewResetSelection: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editorViewGetSelection: {\n args: [\"ptr\"],\n returns: \"u64\"\n },\n editorViewSetLocalSelection: {\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\", \"bool\", \"bool\"],\n returns: \"bool\"\n },\n editorViewUpdateSelection: {\n args: [\"ptr\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\"\n },\n editorViewUpdateLocalSelection: {\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\", \"bool\", \"bool\"],\n returns: \"bool\"\n },\n editorViewResetLocalSelection: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editorViewGetSelectedTextBytes: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\"\n },\n editorViewGetCursor: {\n args: [\"ptr\", \"ptr\", \"ptr\"],\n returns: \"void\"\n },\n editorViewGetText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\"\n },\n editorViewGetVisualCursor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n editorViewMoveUpVisual: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editorViewMoveDownVisual: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editorViewDeleteSelectedText: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n editorViewSetCursorByOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\"\n },\n editorViewGetNextWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n editorViewGetPrevWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n editorViewGetEOL: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n editorViewGetVisualSOL: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n editorViewGetVisualEOL: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n editorViewSetPlaceholderStyledText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\"\n },\n editorViewSetTabIndicator: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\"\n },\n editorViewSetTabIndicatorColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n getArenaAllocatedBytes: {\n args: [],\n returns: \"usize\"\n },\n createSyntaxStyle: {\n args: [],\n returns: \"ptr\"\n },\n destroySyntaxStyle: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n syntaxStyleRegister: {\n args: [\"ptr\", \"ptr\", \"usize\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"u32\"\n },\n syntaxStyleResolveByName: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"u32\"\n },\n syntaxStyleGetStyleCount: {\n args: [\"ptr\"],\n returns: \"usize\"\n },\n getTerminalCapabilities: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n },\n processCapabilityResponse: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\"\n },\n encodeUnicode: {\n args: [\"ptr\", \"usize\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"bool\"\n },\n freeUnicode: {\n args: [\"ptr\", \"usize\"],\n returns: \"void\"\n },\n bufferDrawChar: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\"\n },\n createNativeSpanFeed: {\n args: [\"ptr\"],\n returns: \"ptr\"\n },\n attachNativeSpanFeed: {\n args: [\"ptr\"],\n returns: \"i32\"\n },\n destroyNativeSpanFeed: {\n args: [\"ptr\"],\n returns: \"void\"\n },\n streamWrite: {\n args: [\"ptr\", \"ptr\", \"u64\"],\n returns: \"i32\"\n },\n streamCommit: {\n args: [\"ptr\"],\n returns: \"i32\"\n },\n streamDrainSpans: {\n args: [\"ptr\", \"ptr\", \"u32\"],\n returns: \"u32\"\n },\n streamClose: {\n args: [\"ptr\"],\n returns: \"i32\"\n },\n streamReserve: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"i32\"\n },\n streamCommitReserved: {\n args: [\"ptr\", \"u32\"],\n returns: \"i32\"\n },\n streamSetOptions: {\n args: [\"ptr\", \"ptr\"],\n returns: \"i32\"\n },\n streamGetStats: {\n args: [\"ptr\", \"ptr\"],\n returns: \"i32\"\n },\n streamSetCallback: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\"\n }\n });\n if (env.OTUI_DEBUG_FFI || env.OTUI_TRACE_FFI) {\n return {\n symbols: convertToDebugSymbols(rawSymbols.symbols)\n };\n }\n return rawSymbols;\n}\nfunction convertToDebugSymbols(symbols) {\n if (!globalTraceSymbols) {\n globalTraceSymbols = {};\n }\n if (env.OTUI_DEBUG_FFI && !globalFFILogWriter) {\n const now = new Date;\n const timestamp = now.toISOString().replace(/[:.]/g, \"-\").replace(/T/, \"_\").split(\"Z\")[0];\n const logFilePath = `ffi_otui_debug_${timestamp}.log`;\n globalFFILogWriter = Bun.file(logFilePath).writer();\n }\n const debugSymbols = {};\n let hasTracing = false;\n Object.entries(symbols).forEach(([key, value]) => {\n debugSymbols[key] = value;\n });\n if (env.OTUI_DEBUG_FFI && globalFFILogWriter) {\n const writer = globalFFILogWriter;\n const writeSync = (msg) => {\n const buffer = new TextEncoder().encode(msg + `\n`);\n writer.write(buffer);\n writer.flush();\n };\n Object.entries(symbols).forEach(([key, value]) => {\n if (typeof value === \"function\") {\n debugSymbols[key] = (...args) => {\n writeSync(`${key}(${args.map((arg) => String(arg)).join(\", \")})`);\n const result = value(...args);\n writeSync(`${key} returned: ${String(result)}`);\n return result;\n };\n }\n });\n }\n if (env.OTUI_TRACE_FFI) {\n hasTracing = true;\n Object.entries(symbols).forEach(([key, value]) => {\n if (typeof value === \"function\") {\n if (!globalTraceSymbols[key]) {\n globalTraceSymbols[key] = [];\n }\n const originalFunc = debugSymbols[key];\n debugSymbols[key] = (...args) => {\n const start = performance.now();\n const result = originalFunc(...args);\n const end = performance.now();\n globalTraceSymbols[key].push(end - start);\n return result;\n };\n }\n });\n }\n if ((env.OTUI_DEBUG_FFI || env.OTUI_TRACE_FFI) && !exitHandlerRegistered) {\n exitHandlerRegistered = true;\n process.on(\"exit\", () => {\n try {\n if (globalFFILogWriter) {\n globalFFILogWriter.end();\n }\n } catch (e) {}\n if (globalTraceSymbols) {\n const allStats = [];\n for (const [key, timings] of Object.entries(globalTraceSymbols)) {\n if (!Array.isArray(timings) || timings.length === 0) {\n continue;\n }\n const sortedTimings = [...timings].sort((a, b) => a - b);\n const count = sortedTimings.length;\n const total = sortedTimings.reduce((acc, t2) => acc + t2, 0);\n const average = total / count;\n const min = sortedTimings[0];\n const max = sortedTimings[count - 1];\n const medianIndex = Math.floor(count / 2);\n const p90Index = Math.floor(count * 0.9);\n const p99Index = Math.floor(count * 0.99);\n const median = sortedTimings[medianIndex];\n const p90 = sortedTimings[Math.min(p90Index, count - 1)];\n const p99 = sortedTimings[Math.min(p99Index, count - 1)];\n allStats.push({\n name: key,\n count,\n total,\n average,\n min,\n max,\n median,\n p90,\n p99\n });\n }\n allStats.sort((a, b) => b.total - a.total);\n const lines = [];\n lines.push(`\n--- OpenTUI FFI Call Performance ---`);\n lines.push(\"Sorted by total time spent (descending)\");\n lines.push(\"-------------------------------------------------------------------------------------------------------------------------\");\n if (allStats.length === 0) {\n lines.push(\"No trace data collected or all symbols had zero calls.\");\n } else {\n const nameHeader = \"Symbol\";\n const callsHeader = \"Calls\";\n const totalHeader = \"Total (ms)\";\n const avgHeader = \"Avg (ms)\";\n const minHeader = \"Min (ms)\";\n const maxHeader = \"Max (ms)\";\n const medHeader = \"Med (ms)\";\n const p90Header = \"P90 (ms)\";\n const p99Header = \"P99 (ms)\";\n const nameWidth = Math.max(nameHeader.length, ...allStats.map((s) => s.name.length));\n const countWidth = Math.max(callsHeader.length, ...allStats.map((s) => String(s.count).length));\n const totalWidth = Math.max(totalHeader.length, ...allStats.map((s) => s.total.toFixed(2).length));\n const avgWidth = Math.max(avgHeader.length, ...allStats.map((s) => s.average.toFixed(2).length));\n const minWidth = Math.max(minHeader.length, ...allStats.map((s) => s.min.toFixed(2).length));\n const maxWidth = Math.max(maxHeader.length, ...allStats.map((s) => s.max.toFixed(2).length));\n const medianWidth = Math.max(medHeader.length, ...allStats.map((s) => s.median.toFixed(2).length));\n const p90Width = Math.max(p90Header.length, ...allStats.map((s) => s.p90.toFixed(2).length));\n const p99Width = Math.max(p99Header.length, ...allStats.map((s) => s.p99.toFixed(2).length));\n lines.push(`${nameHeader.padEnd(nameWidth)} | ${callsHeader.padStart(countWidth)} | ${totalHeader.padStart(totalWidth)} | ${avgHeader.padStart(avgWidth)} | ${minHeader.padStart(minWidth)} | ${maxHeader.padStart(maxWidth)} | ${medHeader.padStart(medianWidth)} | ${p90Header.padStart(p90Width)} | ${p99Header.padStart(p99Width)}`);\n lines.push(`${\"-\".repeat(nameWidth)}-+-${\"-\".repeat(countWidth)}-+-${\"-\".repeat(totalWidth)}-+-${\"-\".repeat(avgWidth)}-+-${\"-\".repeat(minWidth)}-+-${\"-\".repeat(maxWidth)}-+-${\"-\".repeat(medianWidth)}-+-${\"-\".repeat(p90Width)}-+-${\"-\".repeat(p99Width)}`);\n allStats.forEach((stat) => {\n lines.push(`${stat.name.padEnd(nameWidth)} | ${String(stat.count).padStart(countWidth)} | ${stat.total.toFixed(2).padStart(totalWidth)} | ${stat.average.toFixed(2).padStart(avgWidth)} | ${stat.min.toFixed(2).padStart(minWidth)} | ${stat.max.toFixed(2).padStart(maxWidth)} | ${stat.median.toFixed(2).padStart(medianWidth)} | ${stat.p90.toFixed(2).padStart(p90Width)} | ${stat.p99.toFixed(2).padStart(p99Width)}`);\n });\n }\n lines.push(\"-------------------------------------------------------------------------------------------------------------------------\");\n const output = lines.join(`\n`);\n console.log(output);\n try {\n const now = new Date;\n const timestamp = now.toISOString().replace(/[:.]/g, \"-\").replace(/T/, \"_\").split(\"Z\")[0];\n const traceFilePath = `ffi_otui_trace_${timestamp}.log`;\n Bun.write(traceFilePath, output);\n } catch (e) {\n console.error(\"Failed to write FFI trace file:\", e);\n }\n }\n });\n }\n return debugSymbols;\n}\nvar LogLevel2;\n((LogLevel3) => {\n LogLevel3[LogLevel3[\"Error\"] = 0] = \"Error\";\n LogLevel3[LogLevel3[\"Warn\"] = 1] = \"Warn\";\n LogLevel3[LogLevel3[\"Info\"] = 2] = \"Info\";\n LogLevel3[LogLevel3[\"Debug\"] = 3] = \"Debug\";\n})(LogLevel2 ||= {});\n\nclass FFIRenderLib {\n opentui;\n encoder = new TextEncoder;\n decoder = new TextDecoder;\n logCallbackWrapper;\n eventCallbackWrapper;\n _nativeEvents = new EventEmitter5;\n _anyEventHandlers = [];\n nativeSpanFeedCallbackWrapper = null;\n nativeSpanFeedHandlers = new Map;\n constructor(libPath) {\n this.opentui = getOpenTUILib(libPath);\n this.setupLogging();\n this.setupEventBus();\n }\n setupLogging() {\n if (this.logCallbackWrapper) {\n return;\n }\n const logCallback = new JSCallback((level, msgPtr, msgLenBigInt) => {\n try {\n const msgLen = typeof msgLenBigInt === \"bigint\" ? Number(msgLenBigInt) : msgLenBigInt;\n if (msgLen === 0 || !msgPtr) {\n return;\n }\n const msgBuffer = toArrayBuffer4(msgPtr, 0, msgLen);\n const msgBytes = new Uint8Array(msgBuffer);\n const message = this.decoder.decode(msgBytes);\n switch (level) {\n case 0 /* Error */:\n console.error(message);\n break;\n case 1 /* Warn */:\n console.warn(message);\n break;\n case 2 /* Info */:\n console.info(message);\n break;\n case 3 /* Debug */:\n console.debug(message);\n break;\n default:\n console.log(message);\n }\n } catch (error) {\n console.error(\"Error in Zig log callback:\", error);\n }\n }, {\n args: [\"u8\", \"ptr\", \"usize\"],\n returns: \"void\"\n });\n this.logCallbackWrapper = logCallback;\n if (!logCallback.ptr) {\n throw new Error(\"Failed to create log callback\");\n }\n this.setLogCallback(logCallback.ptr);\n }\n setLogCallback(callbackPtr) {\n this.opentui.symbols.setLogCallback(callbackPtr);\n }\n setupEventBus() {\n if (this.eventCallbackWrapper) {\n return;\n }\n const eventCallback = new JSCallback((namePtr, nameLenBigInt, dataPtr, dataLenBigInt) => {\n try {\n const nameLen = typeof nameLenBigInt === \"bigint\" ? Number(nameLenBigInt) : nameLenBigInt;\n const dataLen = typeof dataLenBigInt === \"bigint\" ? Number(dataLenBigInt) : dataLenBigInt;\n if (nameLen === 0 || !namePtr) {\n return;\n }\n const nameBuffer = toArrayBuffer4(namePtr, 0, nameLen);\n const nameBytes = new Uint8Array(nameBuffer);\n const eventName = this.decoder.decode(nameBytes);\n let eventData;\n if (dataLen > 0 && dataPtr) {\n eventData = toArrayBuffer4(dataPtr, 0, dataLen).slice();\n } else {\n eventData = new ArrayBuffer(0);\n }\n queueMicrotask(() => {\n this._nativeEvents.emit(eventName, eventData);\n for (const handler of this._anyEventHandlers) {\n handler(eventName, eventData);\n }\n });\n } catch (error) {\n console.error(\"Error in native event callback:\", error);\n }\n }, {\n args: [\"ptr\", \"usize\", \"ptr\", \"usize\"],\n returns: \"void\"\n });\n this.eventCallbackWrapper = eventCallback;\n if (!eventCallback.ptr) {\n throw new Error(\"Failed to create event callback\");\n }\n this.setEventCallback(eventCallback.ptr);\n }\n ensureNativeSpanFeedCallback() {\n if (this.nativeSpanFeedCallbackWrapper) {\n return this.nativeSpanFeedCallbackWrapper;\n }\n const callback = new JSCallback((streamPtr, eventId, arg0, arg1) => {\n const handler = this.nativeSpanFeedHandlers.get(toPointer(streamPtr));\n if (handler) {\n handler(eventId, arg0, arg1);\n }\n }, {\n args: [\"ptr\", \"u32\", \"ptr\", \"u64\"],\n returns: \"void\"\n });\n this.nativeSpanFeedCallbackWrapper = callback;\n if (!callback.ptr) {\n throw new Error(\"Failed to create native span feed callback\");\n }\n return callback;\n }\n setEventCallback(callbackPtr) {\n this.opentui.symbols.setEventCallback(callbackPtr);\n }\n createRenderer(width, height, options = {}) {\n const testing = options.testing ?? false;\n const remote = options.remote ?? false;\n return this.opentui.symbols.createRenderer(width, height, testing, remote);\n }\n destroyRenderer(renderer) {\n this.opentui.symbols.destroyRenderer(renderer);\n }\n setUseThread(renderer, useThread) {\n this.opentui.symbols.setUseThread(renderer, useThread);\n }\n setBackgroundColor(renderer, color) {\n this.opentui.symbols.setBackgroundColor(renderer, color.buffer);\n }\n setRenderOffset(renderer, offset) {\n this.opentui.symbols.setRenderOffset(renderer, offset);\n }\n updateStats(renderer, time, fps, frameCallbackTime) {\n this.opentui.symbols.updateStats(renderer, time, fps, frameCallbackTime);\n }\n updateMemoryStats(renderer, heapUsed, heapTotal, arrayBuffers) {\n this.opentui.symbols.updateMemoryStats(renderer, heapUsed, heapTotal, arrayBuffers);\n }\n getNextBuffer(renderer) {\n const bufferPtr = this.opentui.symbols.getNextBuffer(renderer);\n if (!bufferPtr) {\n throw new Error(\"Failed to get next buffer\");\n }\n const width = this.opentui.symbols.getBufferWidth(bufferPtr);\n const height = this.opentui.symbols.getBufferHeight(bufferPtr);\n return new OptimizedBuffer(this, bufferPtr, width, height, { id: \"next buffer\", widthMethod: \"unicode\" });\n }\n getCurrentBuffer(renderer) {\n const bufferPtr = this.opentui.symbols.getCurrentBuffer(renderer);\n if (!bufferPtr) {\n throw new Error(\"Failed to get current buffer\");\n }\n const width = this.opentui.symbols.getBufferWidth(bufferPtr);\n const height = this.opentui.symbols.getBufferHeight(bufferPtr);\n return new OptimizedBuffer(this, bufferPtr, width, height, { id: \"current buffer\", widthMethod: \"unicode\" });\n }\n bufferGetCharPtr(buffer) {\n const ptr5 = this.opentui.symbols.bufferGetCharPtr(buffer);\n if (!ptr5) {\n throw new Error(\"Failed to get char pointer\");\n }\n return ptr5;\n }\n bufferGetFgPtr(buffer) {\n const ptr5 = this.opentui.symbols.bufferGetFgPtr(buffer);\n if (!ptr5) {\n throw new Error(\"Failed to get fg pointer\");\n }\n return ptr5;\n }\n bufferGetBgPtr(buffer) {\n const ptr5 = this.opentui.symbols.bufferGetBgPtr(buffer);\n if (!ptr5) {\n throw new Error(\"Failed to get bg pointer\");\n }\n return ptr5;\n }\n bufferGetAttributesPtr(buffer) {\n const ptr5 = this.opentui.symbols.bufferGetAttributesPtr(buffer);\n if (!ptr5) {\n throw new Error(\"Failed to get attributes pointer\");\n }\n return ptr5;\n }\n bufferGetRespectAlpha(buffer) {\n return this.opentui.symbols.bufferGetRespectAlpha(buffer);\n }\n bufferSetRespectAlpha(buffer, respectAlpha) {\n this.opentui.symbols.bufferSetRespectAlpha(buffer, respectAlpha);\n }\n bufferGetId(buffer) {\n const maxLen = 256;\n const outBuffer = new Uint8Array(maxLen);\n const actualLen = this.opentui.symbols.bufferGetId(buffer, outBuffer, maxLen);\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen;\n return this.decoder.decode(outBuffer.slice(0, len));\n }\n bufferGetRealCharSize(buffer) {\n return this.opentui.symbols.bufferGetRealCharSize(buffer);\n }\n bufferWriteResolvedChars(buffer, outputBuffer, addLineBreaks) {\n const bytesWritten = this.opentui.symbols.bufferWriteResolvedChars(buffer, outputBuffer, outputBuffer.length, addLineBreaks);\n return typeof bytesWritten === \"bigint\" ? Number(bytesWritten) : bytesWritten;\n }\n getBufferWidth(buffer) {\n return this.opentui.symbols.getBufferWidth(buffer);\n }\n getBufferHeight(buffer) {\n return this.opentui.symbols.getBufferHeight(buffer);\n }\n bufferClear(buffer, color) {\n this.opentui.symbols.bufferClear(buffer, color.buffer);\n }\n bufferDrawText(buffer, text, x, y, color, bgColor, attributes) {\n const textBytes = this.encoder.encode(text);\n const textLength = textBytes.byteLength;\n const bg2 = bgColor ? bgColor.buffer : null;\n const fg2 = color.buffer;\n this.opentui.symbols.bufferDrawText(buffer, textBytes, textLength, x, y, fg2, bg2, attributes ?? 0);\n }\n bufferSetCellWithAlphaBlending(buffer, x, y, char, color, bgColor, attributes) {\n const charPtr = char.codePointAt(0) ?? \" \".codePointAt(0);\n const bg2 = bgColor.buffer;\n const fg2 = color.buffer;\n this.opentui.symbols.bufferSetCellWithAlphaBlending(buffer, x, y, charPtr, fg2, bg2, attributes ?? 0);\n }\n bufferSetCell(buffer, x, y, char, color, bgColor, attributes) {\n const charPtr = char.codePointAt(0) ?? \" \".codePointAt(0);\n const bg2 = bgColor.buffer;\n const fg2 = color.buffer;\n this.opentui.symbols.bufferSetCell(buffer, x, y, charPtr, fg2, bg2, attributes ?? 0);\n }\n bufferFillRect(buffer, x, y, width, height, color) {\n const bg2 = color.buffer;\n this.opentui.symbols.bufferFillRect(buffer, x, y, width, height, bg2);\n }\n bufferDrawSuperSampleBuffer(buffer, x, y, pixelDataPtr, pixelDataLength, format, alignedBytesPerRow) {\n const formatId = format === \"bgra8unorm\" ? 0 : 1;\n this.opentui.symbols.bufferDrawSuperSampleBuffer(buffer, x, y, pixelDataPtr, pixelDataLength, formatId, alignedBytesPerRow);\n }\n bufferDrawPackedBuffer(buffer, dataPtr, dataLen, posX, posY, terminalWidthCells, terminalHeightCells) {\n this.opentui.symbols.bufferDrawPackedBuffer(buffer, dataPtr, dataLen, posX, posY, terminalWidthCells, terminalHeightCells);\n }\n bufferDrawGrayscaleBuffer(buffer, posX, posY, intensitiesPtr, srcWidth, srcHeight, fg2, bg2) {\n this.opentui.symbols.bufferDrawGrayscaleBuffer(buffer, posX, posY, intensitiesPtr, srcWidth, srcHeight, fg2?.buffer ?? null, bg2?.buffer ?? null);\n }\n bufferDrawGrayscaleBufferSupersampled(buffer, posX, posY, intensitiesPtr, srcWidth, srcHeight, fg2, bg2) {\n this.opentui.symbols.bufferDrawGrayscaleBufferSupersampled(buffer, posX, posY, intensitiesPtr, srcWidth, srcHeight, fg2?.buffer ?? null, bg2?.buffer ?? null);\n }\n bufferDrawBox(buffer, x, y, width, height, borderChars, packedOptions, borderColor, backgroundColor, title) {\n const titleBytes = title ? this.encoder.encode(title) : null;\n const titleLen = title ? titleBytes.length : 0;\n const titlePtr = title ? titleBytes : null;\n this.opentui.symbols.bufferDrawBox(buffer, x, y, width, height, borderChars, packedOptions, borderColor.buffer, backgroundColor.buffer, titlePtr, titleLen);\n }\n bufferResize(buffer, width, height) {\n this.opentui.symbols.bufferResize(buffer, width, height);\n }\n linkAlloc(url) {\n const urlBytes = this.encoder.encode(url);\n return this.opentui.symbols.linkAlloc(urlBytes, urlBytes.length);\n }\n linkGetUrl(linkId, maxLen = 512) {\n const outBuffer = new Uint8Array(maxLen);\n const actualLen = this.opentui.symbols.linkGetUrl(linkId, outBuffer, maxLen);\n return this.decoder.decode(outBuffer.slice(0, actualLen));\n }\n attributesWithLink(baseAttributes, linkId) {\n return this.opentui.symbols.attributesWithLink(baseAttributes, linkId);\n }\n attributesGetLinkId(attributes) {\n return this.opentui.symbols.attributesGetLinkId(attributes);\n }\n resizeRenderer(renderer, width, height) {\n this.opentui.symbols.resizeRenderer(renderer, width, height);\n }\n setCursorPosition(renderer, x, y, visible) {\n this.opentui.symbols.setCursorPosition(renderer, x, y, visible);\n }\n setCursorColor(renderer, color) {\n this.opentui.symbols.setCursorColor(renderer, color.buffer);\n }\n getCursorState(renderer) {\n const cursorBuffer = new ArrayBuffer(CursorStateStruct.size);\n this.opentui.symbols.getCursorState(renderer, ptr4(cursorBuffer));\n const struct = CursorStateStruct.unpack(cursorBuffer);\n return {\n x: struct.x,\n y: struct.y,\n visible: struct.visible,\n style: CURSOR_ID_TO_STYLE[struct.style] ?? \"block\",\n blinking: struct.blinking,\n color: RGBA.fromValues(struct.r, struct.g, struct.b, struct.a)\n };\n }\n setCursorStyleOptions(renderer, options) {\n const style = options.style != null ? CURSOR_STYLE_TO_ID[options.style] : 255;\n const blinking = options.blinking != null ? options.blinking ? 1 : 0 : 255;\n const cursor = options.cursor != null ? MOUSE_STYLE_TO_ID[options.cursor] : 255;\n const buffer = CursorStyleOptionsStruct.pack({ style, blinking, color: options.color, cursor });\n this.opentui.symbols.setCursorStyleOptions(renderer, ptr4(buffer));\n }\n render(renderer, force) {\n this.opentui.symbols.render(renderer, force);\n }\n createOptimizedBuffer(width, height, widthMethod, respectAlpha = false, id) {\n if (Number.isNaN(width) || Number.isNaN(height)) {\n console.error(new Error(`Invalid dimensions for OptimizedBuffer: ${width}x${height}`).stack);\n }\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1;\n const idToUse = id || \"unnamed buffer\";\n const idBytes = this.encoder.encode(idToUse);\n const bufferPtr = this.opentui.symbols.createOptimizedBuffer(width, height, respectAlpha, widthMethodCode, idBytes, idBytes.length);\n if (!bufferPtr) {\n throw new Error(`Failed to create optimized buffer: ${width}x${height}`);\n }\n return new OptimizedBuffer(this, bufferPtr, width, height, { respectAlpha, id, widthMethod });\n }\n destroyOptimizedBuffer(bufferPtr) {\n this.opentui.symbols.destroyOptimizedBuffer(bufferPtr);\n }\n drawFrameBuffer(targetBufferPtr, destX, destY, bufferPtr, sourceX, sourceY, sourceWidth, sourceHeight) {\n const srcX = sourceX ?? 0;\n const srcY = sourceY ?? 0;\n const srcWidth = sourceWidth ?? 0;\n const srcHeight = sourceHeight ?? 0;\n this.opentui.symbols.drawFrameBuffer(targetBufferPtr, destX, destY, bufferPtr, srcX, srcY, srcWidth, srcHeight);\n }\n setDebugOverlay(renderer, enabled, corner) {\n this.opentui.symbols.setDebugOverlay(renderer, enabled, corner);\n }\n clearTerminal(renderer) {\n this.opentui.symbols.clearTerminal(renderer);\n }\n setTerminalTitle(renderer, title) {\n const titleBytes = this.encoder.encode(title);\n this.opentui.symbols.setTerminalTitle(renderer, titleBytes, titleBytes.length);\n }\n copyToClipboardOSC52(renderer, target, payload) {\n return this.opentui.symbols.copyToClipboardOSC52(renderer, target, payload, payload.length);\n }\n clearClipboardOSC52(renderer, target) {\n return this.opentui.symbols.clearClipboardOSC52(renderer, target);\n }\n addToHitGrid(renderer, x, y, width, height, id) {\n this.opentui.symbols.addToHitGrid(renderer, x, y, width, height, id);\n }\n clearCurrentHitGrid(renderer) {\n this.opentui.symbols.clearCurrentHitGrid(renderer);\n }\n hitGridPushScissorRect(renderer, x, y, width, height) {\n this.opentui.symbols.hitGridPushScissorRect(renderer, x, y, width, height);\n }\n hitGridPopScissorRect(renderer) {\n this.opentui.symbols.hitGridPopScissorRect(renderer);\n }\n hitGridClearScissorRects(renderer) {\n this.opentui.symbols.hitGridClearScissorRects(renderer);\n }\n addToCurrentHitGridClipped(renderer, x, y, width, height, id) {\n this.opentui.symbols.addToCurrentHitGridClipped(renderer, x, y, width, height, id);\n }\n checkHit(renderer, x, y) {\n return this.opentui.symbols.checkHit(renderer, x, y);\n }\n getHitGridDirty(renderer) {\n return this.opentui.symbols.getHitGridDirty(renderer);\n }\n dumpHitGrid(renderer) {\n this.opentui.symbols.dumpHitGrid(renderer);\n }\n dumpBuffers(renderer, timestamp) {\n const ts = timestamp ?? Date.now();\n this.opentui.symbols.dumpBuffers(renderer, ts);\n }\n dumpStdoutBuffer(renderer, timestamp) {\n const ts = timestamp ?? Date.now();\n this.opentui.symbols.dumpStdoutBuffer(renderer, ts);\n }\n restoreTerminalModes(renderer) {\n this.opentui.symbols.restoreTerminalModes(renderer);\n }\n enableMouse(renderer, enableMovement) {\n this.opentui.symbols.enableMouse(renderer, enableMovement);\n }\n disableMouse(renderer) {\n this.opentui.symbols.disableMouse(renderer);\n }\n enableKittyKeyboard(renderer, flags) {\n this.opentui.symbols.enableKittyKeyboard(renderer, flags);\n }\n disableKittyKeyboard(renderer) {\n this.opentui.symbols.disableKittyKeyboard(renderer);\n }\n setKittyKeyboardFlags(renderer, flags) {\n this.opentui.symbols.setKittyKeyboardFlags(renderer, flags);\n }\n getKittyKeyboardFlags(renderer) {\n return this.opentui.symbols.getKittyKeyboardFlags(renderer);\n }\n setupTerminal(renderer, useAlternateScreen) {\n this.opentui.symbols.setupTerminal(renderer, useAlternateScreen);\n }\n suspendRenderer(renderer) {\n this.opentui.symbols.suspendRenderer(renderer);\n }\n resumeRenderer(renderer) {\n this.opentui.symbols.resumeRenderer(renderer);\n }\n queryPixelResolution(renderer) {\n this.opentui.symbols.queryPixelResolution(renderer);\n }\n writeOut(renderer, data) {\n const bytes = typeof data === \"string\" ? new TextEncoder().encode(data) : data;\n if (bytes.length === 0)\n return;\n this.opentui.symbols.writeOut(renderer, ptr4(bytes), bytes.length);\n }\n createTextBuffer(widthMethod) {\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1;\n const bufferPtr = this.opentui.symbols.createTextBuffer(widthMethodCode);\n if (!bufferPtr) {\n throw new Error(`Failed to create TextBuffer`);\n }\n return new TextBuffer(this, bufferPtr);\n }\n destroyTextBuffer(buffer) {\n this.opentui.symbols.destroyTextBuffer(buffer);\n }\n textBufferGetLength(buffer) {\n return this.opentui.symbols.textBufferGetLength(buffer);\n }\n textBufferGetByteSize(buffer) {\n return this.opentui.symbols.textBufferGetByteSize(buffer);\n }\n textBufferReset(buffer) {\n this.opentui.symbols.textBufferReset(buffer);\n }\n textBufferClear(buffer) {\n this.opentui.symbols.textBufferClear(buffer);\n }\n textBufferSetDefaultFg(buffer, fg2) {\n const fgPtr = fg2 ? fg2.buffer : null;\n this.opentui.symbols.textBufferSetDefaultFg(buffer, fgPtr);\n }\n textBufferSetDefaultBg(buffer, bg2) {\n const bgPtr = bg2 ? bg2.buffer : null;\n this.opentui.symbols.textBufferSetDefaultBg(buffer, bgPtr);\n }\n textBufferSetDefaultAttributes(buffer, attributes) {\n const attrValue = attributes === null ? null : new Uint8Array([attributes]);\n this.opentui.symbols.textBufferSetDefaultAttributes(buffer, attrValue);\n }\n textBufferResetDefaults(buffer) {\n this.opentui.symbols.textBufferResetDefaults(buffer);\n }\n textBufferGetTabWidth(buffer) {\n return this.opentui.symbols.textBufferGetTabWidth(buffer);\n }\n textBufferSetTabWidth(buffer, width) {\n this.opentui.symbols.textBufferSetTabWidth(buffer, width);\n }\n textBufferRegisterMemBuffer(buffer, bytes, owned = false) {\n const result = this.opentui.symbols.textBufferRegisterMemBuffer(buffer, bytes, bytes.length, owned);\n if (result === 65535) {\n throw new Error(\"Failed to register memory buffer\");\n }\n return result;\n }\n textBufferReplaceMemBuffer(buffer, memId, bytes, owned = false) {\n return this.opentui.symbols.textBufferReplaceMemBuffer(buffer, memId, bytes, bytes.length, owned);\n }\n textBufferClearMemRegistry(buffer) {\n this.opentui.symbols.textBufferClearMemRegistry(buffer);\n }\n textBufferSetTextFromMem(buffer, memId) {\n this.opentui.symbols.textBufferSetTextFromMem(buffer, memId);\n }\n textBufferAppend(buffer, bytes) {\n this.opentui.symbols.textBufferAppend(buffer, bytes, bytes.length);\n }\n textBufferAppendFromMemId(buffer, memId) {\n this.opentui.symbols.textBufferAppendFromMemId(buffer, memId);\n }\n textBufferLoadFile(buffer, path4) {\n const pathBytes = this.encoder.encode(path4);\n return this.opentui.symbols.textBufferLoadFile(buffer, pathBytes, pathBytes.length);\n }\n textBufferSetStyledText(buffer, chunks) {\n const nonEmptyChunks = chunks.filter((c) => c.text.length > 0);\n if (nonEmptyChunks.length === 0) {\n this.textBufferClear(buffer);\n return;\n }\n const processedChunks = nonEmptyChunks.map((chunk) => {\n if (chunk.link) {\n const linkId = this.linkAlloc(chunk.link.url);\n return {\n ...chunk,\n attributes: attributesWithLink(chunk.attributes ?? 0, linkId)\n };\n }\n return chunk;\n });\n const chunksBuffer = StyledChunkStruct.packList(processedChunks);\n this.opentui.symbols.textBufferSetStyledText(buffer, ptr4(chunksBuffer), processedChunks.length);\n }\n textBufferGetLineCount(buffer) {\n return this.opentui.symbols.textBufferGetLineCount(buffer);\n }\n textBufferGetPlainText(buffer, outPtr, maxLen) {\n const result = this.opentui.symbols.textBufferGetPlainText(buffer, outPtr, maxLen);\n return typeof result === \"bigint\" ? Number(result) : result;\n }\n getPlainTextBytes(buffer, maxLength) {\n const outBuffer = new Uint8Array(maxLength);\n const actualLen = this.textBufferGetPlainText(buffer, ptr4(outBuffer), maxLength);\n if (actualLen === 0) {\n return null;\n }\n return outBuffer.slice(0, actualLen);\n }\n textBufferGetTextRange(buffer, startOffset, endOffset, maxLength) {\n const outBuffer = new Uint8Array(maxLength);\n const actualLen = this.opentui.symbols.textBufferGetTextRange(buffer, startOffset, endOffset, ptr4(outBuffer), maxLength);\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen;\n if (len === 0) {\n return null;\n }\n return outBuffer.slice(0, len);\n }\n textBufferGetTextRangeByCoords(buffer, startRow, startCol, endRow, endCol, maxLength) {\n const outBuffer = new Uint8Array(maxLength);\n const actualLen = this.opentui.symbols.textBufferGetTextRangeByCoords(buffer, startRow, startCol, endRow, endCol, ptr4(outBuffer), maxLength);\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen;\n if (len === 0) {\n return null;\n }\n return outBuffer.slice(0, len);\n }\n createTextBufferView(textBuffer) {\n const viewPtr = this.opentui.symbols.createTextBufferView(textBuffer);\n if (!viewPtr) {\n throw new Error(\"Failed to create TextBufferView\");\n }\n return viewPtr;\n }\n destroyTextBufferView(view) {\n this.opentui.symbols.destroyTextBufferView(view);\n }\n textBufferViewSetSelection(view, start, end, bgColor, fgColor) {\n const bg2 = bgColor ? bgColor.buffer : null;\n const fg2 = fgColor ? fgColor.buffer : null;\n this.opentui.symbols.textBufferViewSetSelection(view, start, end, bg2, fg2);\n }\n textBufferViewResetSelection(view) {\n this.opentui.symbols.textBufferViewResetSelection(view);\n }\n textBufferViewGetSelection(view) {\n const packedInfo = this.textBufferViewGetSelectionInfo(view);\n if (packedInfo === 0xffff_ffff_ffff_ffffn) {\n return null;\n }\n const start = Number(packedInfo >> 32n);\n const end = Number(packedInfo & 0xffff_ffffn);\n return { start, end };\n }\n textBufferViewGetSelectionInfo(view) {\n return this.opentui.symbols.textBufferViewGetSelectionInfo(view);\n }\n textBufferViewSetLocalSelection(view, anchorX, anchorY, focusX, focusY, bgColor, fgColor) {\n const bg2 = bgColor ? bgColor.buffer : null;\n const fg2 = fgColor ? fgColor.buffer : null;\n return this.opentui.symbols.textBufferViewSetLocalSelection(view, anchorX, anchorY, focusX, focusY, bg2, fg2);\n }\n textBufferViewUpdateSelection(view, end, bgColor, fgColor) {\n const bg2 = bgColor ? bgColor.buffer : null;\n const fg2 = fgColor ? fgColor.buffer : null;\n this.opentui.symbols.textBufferViewUpdateSelection(view, end, bg2, fg2);\n }\n textBufferViewUpdateLocalSelection(view, anchorX, anchorY, focusX, focusY, bgColor, fgColor) {\n const bg2 = bgColor ? bgColor.buffer : null;\n const fg2 = fgColor ? fgColor.buffer : null;\n return this.opentui.symbols.textBufferViewUpdateLocalSelection(view, anchorX, anchorY, focusX, focusY, bg2, fg2);\n }\n textBufferViewResetLocalSelection(view) {\n this.opentui.symbols.textBufferViewResetLocalSelection(view);\n }\n textBufferViewSetWrapWidth(view, width) {\n this.opentui.symbols.textBufferViewSetWrapWidth(view, width);\n }\n textBufferViewSetWrapMode(view, mode) {\n const modeValue = mode === \"none\" ? 0 : mode === \"char\" ? 1 : 2;\n this.opentui.symbols.textBufferViewSetWrapMode(view, modeValue);\n }\n textBufferViewSetViewportSize(view, width, height) {\n this.opentui.symbols.textBufferViewSetViewportSize(view, width, height);\n }\n textBufferViewSetViewport(view, x, y, width, height) {\n this.opentui.symbols.textBufferViewSetViewport(view, x, y, width, height);\n }\n textBufferViewGetLineInfo(view) {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size);\n this.textBufferViewGetLineInfoDirect(view, ptr4(outBuffer));\n const struct = LineInfoStruct.unpack(outBuffer);\n return {\n maxLineWidth: struct.maxWidth,\n lineStarts: struct.starts,\n lineWidths: struct.widths,\n lineSources: struct.sources,\n lineWraps: struct.wraps\n };\n }\n textBufferViewGetLogicalLineInfo(view) {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size);\n this.textBufferViewGetLogicalLineInfoDirect(view, ptr4(outBuffer));\n const struct = LineInfoStruct.unpack(outBuffer);\n return {\n maxLineWidth: struct.maxWidth,\n lineStarts: struct.starts,\n lineWidths: struct.widths,\n lineSources: struct.sources,\n lineWraps: struct.wraps\n };\n }\n textBufferViewGetVirtualLineCount(view) {\n return this.opentui.symbols.textBufferViewGetVirtualLineCount(view);\n }\n textBufferViewGetLineInfoDirect(view, outPtr) {\n this.opentui.symbols.textBufferViewGetLineInfoDirect(view, outPtr);\n }\n textBufferViewGetLogicalLineInfoDirect(view, outPtr) {\n this.opentui.symbols.textBufferViewGetLogicalLineInfoDirect(view, outPtr);\n }\n textBufferViewGetSelectedText(view, outPtr, maxLen) {\n const result = this.opentui.symbols.textBufferViewGetSelectedText(view, outPtr, maxLen);\n return typeof result === \"bigint\" ? Number(result) : result;\n }\n textBufferViewGetPlainText(view, outPtr, maxLen) {\n const result = this.opentui.symbols.textBufferViewGetPlainText(view, outPtr, maxLen);\n return typeof result === \"bigint\" ? Number(result) : result;\n }\n textBufferViewGetSelectedTextBytes(view, maxLength) {\n const outBuffer = new Uint8Array(maxLength);\n const actualLen = this.textBufferViewGetSelectedText(view, ptr4(outBuffer), maxLength);\n if (actualLen === 0) {\n return null;\n }\n return outBuffer.slice(0, actualLen);\n }\n textBufferViewGetPlainTextBytes(view, maxLength) {\n const outBuffer = new Uint8Array(maxLength);\n const actualLen = this.textBufferViewGetPlainText(view, ptr4(outBuffer), maxLength);\n if (actualLen === 0) {\n return null;\n }\n return outBuffer.slice(0, actualLen);\n }\n textBufferViewSetTabIndicator(view, indicator) {\n this.opentui.symbols.textBufferViewSetTabIndicator(view, indicator);\n }\n textBufferViewSetTabIndicatorColor(view, color) {\n this.opentui.symbols.textBufferViewSetTabIndicatorColor(view, color.buffer);\n }\n textBufferViewSetTruncate(view, truncate) {\n this.opentui.symbols.textBufferViewSetTruncate(view, truncate);\n }\n textBufferViewMeasureForDimensions(view, width, height) {\n const resultBuffer = new ArrayBuffer(MeasureResultStruct.size);\n const resultPtr = ptr4(new Uint8Array(resultBuffer));\n const success = this.opentui.symbols.textBufferViewMeasureForDimensions(view, width, height, resultPtr);\n if (!success) {\n return null;\n }\n const result = MeasureResultStruct.unpack(resultBuffer);\n return result;\n }\n textBufferAddHighlightByCharRange(buffer, highlight) {\n const packedHighlight = HighlightStruct.pack(highlight);\n this.opentui.symbols.textBufferAddHighlightByCharRange(buffer, ptr4(packedHighlight));\n }\n textBufferAddHighlight(buffer, lineIdx, highlight) {\n const packedHighlight = HighlightStruct.pack(highlight);\n this.opentui.symbols.textBufferAddHighlight(buffer, lineIdx, ptr4(packedHighlight));\n }\n textBufferRemoveHighlightsByRef(buffer, hlRef) {\n this.opentui.symbols.textBufferRemoveHighlightsByRef(buffer, hlRef);\n }\n textBufferClearLineHighlights(buffer, lineIdx) {\n this.opentui.symbols.textBufferClearLineHighlights(buffer, lineIdx);\n }\n textBufferClearAllHighlights(buffer) {\n this.opentui.symbols.textBufferClearAllHighlights(buffer);\n }\n textBufferSetSyntaxStyle(buffer, style) {\n this.opentui.symbols.textBufferSetSyntaxStyle(buffer, style);\n }\n textBufferGetLineHighlights(buffer, lineIdx) {\n const outCountBuf = new BigUint64Array(1);\n const nativePtr = this.opentui.symbols.textBufferGetLineHighlightsPtr(buffer, lineIdx, ptr4(outCountBuf));\n if (!nativePtr)\n return [];\n const count = Number(outCountBuf[0]);\n const byteLen = count * HighlightStruct.size;\n const raw = toArrayBuffer4(nativePtr, 0, byteLen);\n const results = HighlightStruct.unpackList(raw, count);\n this.opentui.symbols.textBufferFreeLineHighlights(nativePtr, count);\n return results;\n }\n textBufferGetHighlightCount(buffer) {\n return this.opentui.symbols.textBufferGetHighlightCount(buffer);\n }\n getArenaAllocatedBytes() {\n const result = this.opentui.symbols.getArenaAllocatedBytes();\n return typeof result === \"bigint\" ? Number(result) : result;\n }\n bufferDrawTextBufferView(buffer, view, x, y) {\n this.opentui.symbols.bufferDrawTextBufferView(buffer, view, x, y);\n }\n bufferDrawEditorView(buffer, view, x, y) {\n this.opentui.symbols.bufferDrawEditorView(buffer, view, x, y);\n }\n createEditorView(editBufferPtr, viewportWidth, viewportHeight) {\n const viewPtr = this.opentui.symbols.createEditorView(editBufferPtr, viewportWidth, viewportHeight);\n if (!viewPtr) {\n throw new Error(\"Failed to create EditorView\");\n }\n return viewPtr;\n }\n destroyEditorView(view) {\n this.opentui.symbols.destroyEditorView(view);\n }\n editorViewSetViewportSize(view, width, height) {\n this.opentui.symbols.editorViewSetViewportSize(view, width, height);\n }\n editorViewSetViewport(view, x, y, width, height, moveCursor) {\n this.opentui.symbols.editorViewSetViewport(view, x, y, width, height, moveCursor);\n }\n editorViewGetViewport(view) {\n const x = new Uint32Array(1);\n const y = new Uint32Array(1);\n const width = new Uint32Array(1);\n const height = new Uint32Array(1);\n this.opentui.symbols.editorViewGetViewport(view, ptr4(x), ptr4(y), ptr4(width), ptr4(height));\n return {\n offsetX: x[0],\n offsetY: y[0],\n width: width[0],\n height: height[0]\n };\n }\n editorViewSetScrollMargin(view, margin) {\n this.opentui.symbols.editorViewSetScrollMargin(view, margin);\n }\n editorViewSetWrapMode(view, mode) {\n const modeValue = mode === \"none\" ? 0 : mode === \"char\" ? 1 : 2;\n this.opentui.symbols.editorViewSetWrapMode(view, modeValue);\n }\n editorViewGetVirtualLineCount(view) {\n return this.opentui.symbols.editorViewGetVirtualLineCount(view);\n }\n editorViewGetTotalVirtualLineCount(view) {\n return this.opentui.symbols.editorViewGetTotalVirtualLineCount(view);\n }\n editorViewGetTextBufferView(view) {\n const result = this.opentui.symbols.editorViewGetTextBufferView(view);\n if (!result) {\n throw new Error(\"Failed to get TextBufferView from EditorView\");\n }\n return result;\n }\n editorViewGetLineInfo(view) {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size);\n this.opentui.symbols.editorViewGetLineInfoDirect(view, ptr4(outBuffer));\n const struct = LineInfoStruct.unpack(outBuffer);\n return {\n maxLineWidth: struct.maxWidth,\n lineStarts: struct.starts,\n lineWidths: struct.widths,\n lineSources: struct.sources,\n lineWraps: struct.wraps\n };\n }\n editorViewGetLogicalLineInfo(view) {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size);\n this.opentui.symbols.editorViewGetLogicalLineInfoDirect(view, ptr4(outBuffer));\n const struct = LineInfoStruct.unpack(outBuffer);\n return {\n maxLineWidth: struct.maxWidth,\n lineStarts: struct.starts,\n lineWidths: struct.widths,\n lineSources: struct.sources,\n lineWraps: struct.wraps\n };\n }\n createEditBuffer(widthMethod) {\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1;\n const bufferPtr = this.opentui.symbols.createEditBuffer(widthMethodCode);\n if (!bufferPtr) {\n throw new Error(\"Failed to create EditBuffer\");\n }\n return bufferPtr;\n }\n destroyEditBuffer(buffer) {\n this.opentui.symbols.destroyEditBuffer(buffer);\n }\n editBufferSetText(buffer, textBytes) {\n this.opentui.symbols.editBufferSetText(buffer, textBytes, textBytes.length);\n }\n editBufferSetTextFromMem(buffer, memId) {\n this.opentui.symbols.editBufferSetTextFromMem(buffer, memId);\n }\n editBufferReplaceText(buffer, textBytes) {\n this.opentui.symbols.editBufferReplaceText(buffer, textBytes, textBytes.length);\n }\n editBufferReplaceTextFromMem(buffer, memId) {\n this.opentui.symbols.editBufferReplaceTextFromMem(buffer, memId);\n }\n editBufferGetText(buffer, maxLength) {\n const outBuffer = new Uint8Array(maxLength);\n const actualLen = this.opentui.symbols.editBufferGetText(buffer, ptr4(outBuffer), maxLength);\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen;\n if (len === 0)\n return null;\n return outBuffer.slice(0, len);\n }\n editBufferInsertChar(buffer, char) {\n const charBytes = this.encoder.encode(char);\n this.opentui.symbols.editBufferInsertChar(buffer, charBytes, charBytes.length);\n }\n editBufferInsertText(buffer, text) {\n const textBytes = this.encoder.encode(text);\n this.opentui.symbols.editBufferInsertText(buffer, textBytes, textBytes.length);\n }\n editBufferDeleteChar(buffer) {\n this.opentui.symbols.editBufferDeleteChar(buffer);\n }\n editBufferDeleteCharBackward(buffer) {\n this.opentui.symbols.editBufferDeleteCharBackward(buffer);\n }\n editBufferDeleteRange(buffer, startLine, startCol, endLine, endCol) {\n this.opentui.symbols.editBufferDeleteRange(buffer, startLine, startCol, endLine, endCol);\n }\n editBufferNewLine(buffer) {\n this.opentui.symbols.editBufferNewLine(buffer);\n }\n editBufferDeleteLine(buffer) {\n this.opentui.symbols.editBufferDeleteLine(buffer);\n }\n editBufferMoveCursorLeft(buffer) {\n this.opentui.symbols.editBufferMoveCursorLeft(buffer);\n }\n editBufferMoveCursorRight(buffer) {\n this.opentui.symbols.editBufferMoveCursorRight(buffer);\n }\n editBufferMoveCursorUp(buffer) {\n this.opentui.symbols.editBufferMoveCursorUp(buffer);\n }\n editBufferMoveCursorDown(buffer) {\n this.opentui.symbols.editBufferMoveCursorDown(buffer);\n }\n editBufferGotoLine(buffer, line) {\n this.opentui.symbols.editBufferGotoLine(buffer, line);\n }\n editBufferSetCursor(buffer, line, byteOffset) {\n this.opentui.symbols.editBufferSetCursor(buffer, line, byteOffset);\n }\n editBufferSetCursorToLineCol(buffer, line, col) {\n this.opentui.symbols.editBufferSetCursorToLineCol(buffer, line, col);\n }\n editBufferSetCursorByOffset(buffer, offset) {\n this.opentui.symbols.editBufferSetCursorByOffset(buffer, offset);\n }\n editBufferGetCursorPosition(buffer) {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size);\n this.opentui.symbols.editBufferGetCursorPosition(buffer, ptr4(cursorBuffer));\n return LogicalCursorStruct.unpack(cursorBuffer);\n }\n editBufferGetId(buffer) {\n return this.opentui.symbols.editBufferGetId(buffer);\n }\n editBufferGetTextBuffer(buffer) {\n const result = this.opentui.symbols.editBufferGetTextBuffer(buffer);\n if (!result) {\n throw new Error(\"Failed to get TextBuffer from EditBuffer\");\n }\n return result;\n }\n editBufferDebugLogRope(buffer) {\n this.opentui.symbols.editBufferDebugLogRope(buffer);\n }\n editBufferUndo(buffer, maxLength) {\n const outBuffer = new Uint8Array(maxLength);\n const actualLen = this.opentui.symbols.editBufferUndo(buffer, ptr4(outBuffer), maxLength);\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen;\n if (len === 0)\n return null;\n return outBuffer.slice(0, len);\n }\n editBufferRedo(buffer, maxLength) {\n const outBuffer = new Uint8Array(maxLength);\n const actualLen = this.opentui.symbols.editBufferRedo(buffer, ptr4(outBuffer), maxLength);\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen;\n if (len === 0)\n return null;\n return outBuffer.slice(0, len);\n }\n editBufferCanUndo(buffer) {\n return this.opentui.symbols.editBufferCanUndo(buffer);\n }\n editBufferCanRedo(buffer) {\n return this.opentui.symbols.editBufferCanRedo(buffer);\n }\n editBufferClearHistory(buffer) {\n this.opentui.symbols.editBufferClearHistory(buffer);\n }\n editBufferClear(buffer) {\n this.opentui.symbols.editBufferClear(buffer);\n }\n editBufferGetNextWordBoundary(buffer) {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size);\n this.opentui.symbols.editBufferGetNextWordBoundary(buffer, ptr4(cursorBuffer));\n return LogicalCursorStruct.unpack(cursorBuffer);\n }\n editBufferGetPrevWordBoundary(buffer) {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size);\n this.opentui.symbols.editBufferGetPrevWordBoundary(buffer, ptr4(cursorBuffer));\n return LogicalCursorStruct.unpack(cursorBuffer);\n }\n editBufferGetEOL(buffer) {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size);\n this.opentui.symbols.editBufferGetEOL(buffer, ptr4(cursorBuffer));\n return LogicalCursorStruct.unpack(cursorBuffer);\n }\n editBufferOffsetToPosition(buffer, offset) {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size);\n const success = this.opentui.symbols.editBufferOffsetToPosition(buffer, offset, ptr4(cursorBuffer));\n if (!success)\n return null;\n return LogicalCursorStruct.unpack(cursorBuffer);\n }\n editBufferPositionToOffset(buffer, row, col) {\n return this.opentui.symbols.editBufferPositionToOffset(buffer, row, col);\n }\n editBufferGetLineStartOffset(buffer, row) {\n return this.opentui.symbols.editBufferGetLineStartOffset(buffer, row);\n }\n editBufferGetTextRange(buffer, startOffset, endOffset, maxLength) {\n const outBuffer = new Uint8Array(maxLength);\n const actualLen = this.opentui.symbols.editBufferGetTextRange(buffer, startOffset, endOffset, ptr4(outBuffer), maxLength);\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen;\n if (len === 0)\n return null;\n return outBuffer.slice(0, len);\n }\n editBufferGetTextRangeByCoords(buffer, startRow, startCol, endRow, endCol, maxLength) {\n const outBuffer = new Uint8Array(maxLength);\n const actualLen = this.opentui.symbols.editBufferGetTextRangeByCoords(buffer, startRow, startCol, endRow, endCol, ptr4(outBuffer), maxLength);\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen;\n if (len === 0)\n return null;\n return outBuffer.slice(0, len);\n }\n editorViewSetSelection(view, start, end, bgColor, fgColor) {\n const bg2 = bgColor ? bgColor.buffer : null;\n const fg2 = fgColor ? fgColor.buffer : null;\n this.opentui.symbols.editorViewSetSelection(view, start, end, bg2, fg2);\n }\n editorViewResetSelection(view) {\n this.opentui.symbols.editorViewResetSelection(view);\n }\n editorViewGetSelection(view) {\n const packedInfo = this.opentui.symbols.editorViewGetSelection(view);\n if (packedInfo === 0xffff_ffff_ffff_ffffn) {\n return null;\n }\n const start = Number(packedInfo >> 32n);\n const end = Number(packedInfo & 0xffff_ffffn);\n return { start, end };\n }\n editorViewSetLocalSelection(view, anchorX, anchorY, focusX, focusY, bgColor, fgColor, updateCursor, followCursor) {\n const bg2 = bgColor ? bgColor.buffer : null;\n const fg2 = fgColor ? fgColor.buffer : null;\n return this.opentui.symbols.editorViewSetLocalSelection(view, anchorX, anchorY, focusX, focusY, bg2, fg2, updateCursor, followCursor);\n }\n editorViewUpdateSelection(view, end, bgColor, fgColor) {\n const bg2 = bgColor ? bgColor.buffer : null;\n const fg2 = fgColor ? fgColor.buffer : null;\n this.opentui.symbols.editorViewUpdateSelection(view, end, bg2, fg2);\n }\n editorViewUpdateLocalSelection(view, anchorX, anchorY, focusX, focusY, bgColor, fgColor, updateCursor, followCursor) {\n const bg2 = bgColor ? bgColor.buffer : null;\n const fg2 = fgColor ? fgColor.buffer : null;\n return this.opentui.symbols.editorViewUpdateLocalSelection(view, anchorX, anchorY, focusX, focusY, bg2, fg2, updateCursor, followCursor);\n }\n editorViewResetLocalSelection(view) {\n this.opentui.symbols.editorViewResetLocalSelection(view);\n }\n editorViewGetSelectedTextBytes(view, maxLength) {\n const outBuffer = new Uint8Array(maxLength);\n const actualLen = this.opentui.symbols.editorViewGetSelectedTextBytes(view, ptr4(outBuffer), maxLength);\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen;\n if (len === 0)\n return null;\n return outBuffer.slice(0, len);\n }\n editorViewGetCursor(view) {\n const row = new Uint32Array(1);\n const col = new Uint32Array(1);\n this.opentui.symbols.editorViewGetCursor(view, ptr4(row), ptr4(col));\n return { row: row[0], col: col[0] };\n }\n editorViewGetText(view, maxLength) {\n const outBuffer = new Uint8Array(maxLength);\n const actualLen = this.opentui.symbols.editorViewGetText(view, ptr4(outBuffer), maxLength);\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen;\n if (len === 0)\n return null;\n return outBuffer.slice(0, len);\n }\n editorViewGetVisualCursor(view) {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size);\n this.opentui.symbols.editorViewGetVisualCursor(view, ptr4(cursorBuffer));\n return VisualCursorStruct.unpack(cursorBuffer);\n }\n editorViewMoveUpVisual(view) {\n this.opentui.symbols.editorViewMoveUpVisual(view);\n }\n editorViewMoveDownVisual(view) {\n this.opentui.symbols.editorViewMoveDownVisual(view);\n }\n editorViewDeleteSelectedText(view) {\n this.opentui.symbols.editorViewDeleteSelectedText(view);\n }\n editorViewSetCursorByOffset(view, offset) {\n this.opentui.symbols.editorViewSetCursorByOffset(view, offset);\n }\n editorViewGetNextWordBoundary(view) {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size);\n this.opentui.symbols.editorViewGetNextWordBoundary(view, ptr4(cursorBuffer));\n return VisualCursorStruct.unpack(cursorBuffer);\n }\n editorViewGetPrevWordBoundary(view) {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size);\n this.opentui.symbols.editorViewGetPrevWordBoundary(view, ptr4(cursorBuffer));\n return VisualCursorStruct.unpack(cursorBuffer);\n }\n editorViewGetEOL(view) {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size);\n this.opentui.symbols.editorViewGetEOL(view, ptr4(cursorBuffer));\n return VisualCursorStruct.unpack(cursorBuffer);\n }\n editorViewGetVisualSOL(view) {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size);\n this.opentui.symbols.editorViewGetVisualSOL(view, ptr4(cursorBuffer));\n return VisualCursorStruct.unpack(cursorBuffer);\n }\n editorViewGetVisualEOL(view) {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size);\n this.opentui.symbols.editorViewGetVisualEOL(view, ptr4(cursorBuffer));\n return VisualCursorStruct.unpack(cursorBuffer);\n }\n bufferPushScissorRect(buffer, x, y, width, height) {\n this.opentui.symbols.bufferPushScissorRect(buffer, x, y, width, height);\n }\n bufferPopScissorRect(buffer) {\n this.opentui.symbols.bufferPopScissorRect(buffer);\n }\n bufferClearScissorRects(buffer) {\n this.opentui.symbols.bufferClearScissorRects(buffer);\n }\n bufferPushOpacity(buffer, opacity) {\n this.opentui.symbols.bufferPushOpacity(buffer, opacity);\n }\n bufferPopOpacity(buffer) {\n this.opentui.symbols.bufferPopOpacity(buffer);\n }\n bufferGetCurrentOpacity(buffer) {\n return this.opentui.symbols.bufferGetCurrentOpacity(buffer);\n }\n bufferClearOpacity(buffer) {\n this.opentui.symbols.bufferClearOpacity(buffer);\n }\n getTerminalCapabilities(renderer) {\n const capsBuffer = new ArrayBuffer(TerminalCapabilitiesStruct.size);\n this.opentui.symbols.getTerminalCapabilities(renderer, ptr4(capsBuffer));\n const caps = TerminalCapabilitiesStruct.unpack(capsBuffer);\n return {\n kitty_keyboard: caps.kitty_keyboard,\n kitty_graphics: caps.kitty_graphics,\n rgb: caps.rgb,\n unicode: caps.unicode,\n sgr_pixels: caps.sgr_pixels,\n color_scheme_updates: caps.color_scheme_updates,\n explicit_width: caps.explicit_width,\n scaled_text: caps.scaled_text,\n sixel: caps.sixel,\n focus_tracking: caps.focus_tracking,\n sync: caps.sync,\n bracketed_paste: caps.bracketed_paste,\n hyperlinks: caps.hyperlinks,\n osc52: caps.osc52,\n explicit_cursor_positioning: caps.explicit_cursor_positioning,\n terminal: {\n name: caps.term_name ?? \"\",\n version: caps.term_version ?? \"\",\n from_xtversion: caps.term_from_xtversion\n }\n };\n }\n processCapabilityResponse(renderer, response) {\n const responseBytes = this.encoder.encode(response);\n this.opentui.symbols.processCapabilityResponse(renderer, responseBytes, responseBytes.length);\n }\n encodeUnicode(text, widthMethod) {\n const textBytes = this.encoder.encode(text);\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1;\n const outPtrBuffer = new ArrayBuffer(8);\n const outLenBuffer = new ArrayBuffer(8);\n const success = this.opentui.symbols.encodeUnicode(textBytes, textBytes.length, ptr4(outPtrBuffer), ptr4(outLenBuffer), widthMethodCode);\n if (!success) {\n return null;\n }\n const outPtrView = new BigUint64Array(outPtrBuffer);\n const outLenView = new BigUint64Array(outLenBuffer);\n const resultPtr = Number(outPtrView[0]);\n const resultLen = Number(outLenView[0]);\n if (resultLen === 0) {\n return { ptr: resultPtr, data: [] };\n }\n const byteLen = resultLen * EncodedCharStruct.size;\n const raw = toArrayBuffer4(resultPtr, 0, byteLen);\n const data = EncodedCharStruct.unpackList(raw, resultLen);\n return { ptr: resultPtr, data };\n }\n freeUnicode(encoded) {\n this.opentui.symbols.freeUnicode(encoded.ptr, encoded.data.length);\n }\n bufferDrawChar(buffer, char, x, y, fg2, bg2, attributes = 0) {\n this.opentui.symbols.bufferDrawChar(buffer, char, x, y, fg2.buffer, bg2.buffer, attributes);\n }\n registerNativeSpanFeedStream(stream, handler) {\n const callback = this.ensureNativeSpanFeedCallback();\n this.nativeSpanFeedHandlers.set(toPointer(stream), handler);\n this.opentui.symbols.streamSetCallback(stream, callback.ptr);\n }\n unregisterNativeSpanFeedStream(stream) {\n this.opentui.symbols.streamSetCallback(stream, null);\n this.nativeSpanFeedHandlers.delete(toPointer(stream));\n }\n createNativeSpanFeed(options) {\n const optionsBuffer = options == null ? null : NativeSpanFeedOptionsStruct.pack(options);\n const streamPtr = this.opentui.symbols.createNativeSpanFeed(optionsBuffer ? ptr4(optionsBuffer) : null);\n if (!streamPtr) {\n throw new Error(\"Failed to create stream\");\n }\n return toPointer(streamPtr);\n }\n attachNativeSpanFeed(stream) {\n return this.opentui.symbols.attachNativeSpanFeed(stream);\n }\n destroyNativeSpanFeed(stream) {\n this.opentui.symbols.destroyNativeSpanFeed(stream);\n this.nativeSpanFeedHandlers.delete(toPointer(stream));\n }\n streamWrite(stream, data) {\n const bytes = typeof data === \"string\" ? this.encoder.encode(data) : data;\n return this.opentui.symbols.streamWrite(stream, ptr4(bytes), bytes.length);\n }\n streamCommit(stream) {\n return this.opentui.symbols.streamCommit(stream);\n }\n streamDrainSpans(stream, outBuffer, maxSpans) {\n const count = this.opentui.symbols.streamDrainSpans(stream, ptr4(outBuffer), maxSpans);\n return toNumber(count);\n }\n streamClose(stream) {\n return this.opentui.symbols.streamClose(stream);\n }\n streamSetOptions(stream, options) {\n const optionsBuffer = NativeSpanFeedOptionsStruct.pack(options);\n return this.opentui.symbols.streamSetOptions(stream, ptr4(optionsBuffer));\n }\n streamGetStats(stream) {\n const statsBuffer = new ArrayBuffer(NativeSpanFeedStatsStruct.size);\n const status = this.opentui.symbols.streamGetStats(stream, ptr4(statsBuffer));\n if (status !== 0) {\n return null;\n }\n const stats = NativeSpanFeedStatsStruct.unpack(statsBuffer);\n return {\n bytesWritten: typeof stats.bytesWritten === \"bigint\" ? stats.bytesWritten : BigInt(stats.bytesWritten),\n spansCommitted: typeof stats.spansCommitted === \"bigint\" ? stats.spansCommitted : BigInt(stats.spansCommitted),\n chunks: stats.chunks,\n pendingSpans: stats.pendingSpans\n };\n }\n streamReserve(stream, minLen) {\n const reserveBuffer = new ArrayBuffer(ReserveInfoStruct.size);\n const status = this.opentui.symbols.streamReserve(stream, minLen, ptr4(reserveBuffer));\n if (status !== 0) {\n return { status, info: null };\n }\n return { status, info: ReserveInfoStruct.unpack(reserveBuffer) };\n }\n streamCommitReserved(stream, length) {\n return this.opentui.symbols.streamCommitReserved(stream, length);\n }\n createSyntaxStyle() {\n const stylePtr = this.opentui.symbols.createSyntaxStyle();\n if (!stylePtr) {\n throw new Error(\"Failed to create SyntaxStyle\");\n }\n return stylePtr;\n }\n destroySyntaxStyle(style) {\n this.opentui.symbols.destroySyntaxStyle(style);\n }\n syntaxStyleRegister(style, name, fg2, bg2, attributes) {\n const nameBytes = this.encoder.encode(name);\n const fgPtr = fg2 ? fg2.buffer : null;\n const bgPtr = bg2 ? bg2.buffer : null;\n return this.opentui.symbols.syntaxStyleRegister(style, nameBytes, nameBytes.length, fgPtr, bgPtr, attributes);\n }\n syntaxStyleResolveByName(style, name) {\n const nameBytes = this.encoder.encode(name);\n const id = this.opentui.symbols.syntaxStyleResolveByName(style, nameBytes, nameBytes.length);\n return id === 0 ? null : id;\n }\n syntaxStyleGetStyleCount(style) {\n const result = this.opentui.symbols.syntaxStyleGetStyleCount(style);\n return typeof result === \"bigint\" ? Number(result) : result;\n }\n editorViewSetPlaceholderStyledText(view, chunks) {\n const nonEmptyChunks = chunks.filter((c) => c.text.length > 0);\n if (nonEmptyChunks.length === 0) {\n this.opentui.symbols.editorViewSetPlaceholderStyledText(view, null, 0);\n return;\n }\n const chunksBuffer = StyledChunkStruct.packList(nonEmptyChunks);\n this.opentui.symbols.editorViewSetPlaceholderStyledText(view, ptr4(chunksBuffer), nonEmptyChunks.length);\n }\n editorViewSetTabIndicator(view, indicator) {\n this.opentui.symbols.editorViewSetTabIndicator(view, indicator);\n }\n editorViewSetTabIndicatorColor(view, color) {\n this.opentui.symbols.editorViewSetTabIndicatorColor(view, color.buffer);\n }\n onNativeEvent(name, handler) {\n this._nativeEvents.on(name, handler);\n }\n onceNativeEvent(name, handler) {\n this._nativeEvents.once(name, handler);\n }\n offNativeEvent(name, handler) {\n this._nativeEvents.off(name, handler);\n }\n onAnyNativeEvent(handler) {\n this._anyEventHandlers.push(handler);\n }\n}\nvar opentuiLibPath;\nvar opentuiLib;\nfunction setRenderLibPath(libPath) {\n if (opentuiLibPath !== libPath) {\n opentuiLibPath = libPath;\n opentuiLib = undefined;\n }\n}\nfunction resolveRenderLib() {\n if (!opentuiLib) {\n try {\n opentuiLib = new FFIRenderLib(opentuiLibPath);\n } catch (error) {\n throw new Error(`Failed to initialize OpenTUI render library: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n }\n }\n return opentuiLib;\n}\ntry {\n opentuiLib = new FFIRenderLib(opentuiLibPath);\n} catch (error) {}\n\n// src/text-buffer.ts\nclass TextBuffer {\n lib;\n bufferPtr;\n _length = 0;\n _byteSize = 0;\n _lineInfo;\n _destroyed = false;\n _syntaxStyle;\n _textBytes;\n _memId;\n _appendedChunks = [];\n constructor(lib, ptr5) {\n this.lib = lib;\n this.bufferPtr = ptr5;\n }\n static create(widthMethod) {\n const lib = resolveRenderLib();\n return lib.createTextBuffer(widthMethod);\n }\n guard() {\n if (this._destroyed)\n throw new Error(\"TextBuffer is destroyed\");\n }\n setText(text) {\n this.guard();\n this._textBytes = this.lib.encoder.encode(text);\n if (this._memId === undefined) {\n this._memId = this.lib.textBufferRegisterMemBuffer(this.bufferPtr, this._textBytes, false);\n } else {\n this.lib.textBufferReplaceMemBuffer(this.bufferPtr, this._memId, this._textBytes, false);\n }\n this.lib.textBufferSetTextFromMem(this.bufferPtr, this._memId);\n this._length = this.lib.textBufferGetLength(this.bufferPtr);\n this._byteSize = this.lib.textBufferGetByteSize(this.bufferPtr);\n this._lineInfo = undefined;\n this._appendedChunks = [];\n }\n append(text) {\n this.guard();\n const textBytes = this.lib.encoder.encode(text);\n this._appendedChunks.push(textBytes);\n this.lib.textBufferAppend(this.bufferPtr, textBytes);\n this._length = this.lib.textBufferGetLength(this.bufferPtr);\n this._byteSize = this.lib.textBufferGetByteSize(this.bufferPtr);\n this._lineInfo = undefined;\n }\n loadFile(path4) {\n this.guard();\n const success = this.lib.textBufferLoadFile(this.bufferPtr, path4);\n if (!success) {\n throw new Error(`Failed to load file: ${path4}`);\n }\n this._length = this.lib.textBufferGetLength(this.bufferPtr);\n this._byteSize = this.lib.textBufferGetByteSize(this.bufferPtr);\n this._lineInfo = undefined;\n this._textBytes = undefined;\n }\n setStyledText(text) {\n this.guard();\n const chunks = text.chunks.map((chunk) => ({\n text: chunk.text,\n fg: chunk.fg || null,\n bg: chunk.bg || null,\n attributes: chunk.attributes ?? 0,\n link: chunk.link\n }));\n this.lib.textBufferSetStyledText(this.bufferPtr, chunks);\n this._length = this.lib.textBufferGetLength(this.bufferPtr);\n this._byteSize = this.lib.textBufferGetByteSize(this.bufferPtr);\n this._lineInfo = undefined;\n }\n setDefaultFg(fg2) {\n this.guard();\n this.lib.textBufferSetDefaultFg(this.bufferPtr, fg2);\n }\n setDefaultBg(bg2) {\n this.guard();\n this.lib.textBufferSetDefaultBg(this.bufferPtr, bg2);\n }\n setDefaultAttributes(attributes) {\n this.guard();\n this.lib.textBufferSetDefaultAttributes(this.bufferPtr, attributes);\n }\n resetDefaults() {\n this.guard();\n this.lib.textBufferResetDefaults(this.bufferPtr);\n }\n getLineCount() {\n this.guard();\n return this.lib.textBufferGetLineCount(this.bufferPtr);\n }\n get length() {\n this.guard();\n return this._length;\n }\n get byteSize() {\n this.guard();\n return this._byteSize;\n }\n get ptr() {\n this.guard();\n return this.bufferPtr;\n }\n getPlainText() {\n this.guard();\n if (this._byteSize === 0)\n return \"\";\n const plainBytes = this.lib.getPlainTextBytes(this.bufferPtr, this._byteSize);\n if (!plainBytes)\n return \"\";\n return this.lib.decoder.decode(plainBytes);\n }\n getTextRange(startOffset, endOffset) {\n this.guard();\n if (startOffset >= endOffset)\n return \"\";\n if (this._byteSize === 0)\n return \"\";\n const rangeBytes = this.lib.textBufferGetTextRange(this.bufferPtr, startOffset, endOffset, this._byteSize);\n if (!rangeBytes)\n return \"\";\n return this.lib.decoder.decode(rangeBytes);\n }\n addHighlightByCharRange(highlight) {\n this.guard();\n this.lib.textBufferAddHighlightByCharRange(this.bufferPtr, highlight);\n }\n addHighlight(lineIdx, highlight) {\n this.guard();\n this.lib.textBufferAddHighlight(this.bufferPtr, lineIdx, highlight);\n }\n removeHighlightsByRef(hlRef) {\n this.guard();\n this.lib.textBufferRemoveHighlightsByRef(this.bufferPtr, hlRef);\n }\n clearLineHighlights(lineIdx) {\n this.guard();\n this.lib.textBufferClearLineHighlights(this.bufferPtr, lineIdx);\n }\n clearAllHighlights() {\n this.guard();\n this.lib.textBufferClearAllHighlights(this.bufferPtr);\n }\n getLineHighlights(lineIdx) {\n this.guard();\n return this.lib.textBufferGetLineHighlights(this.bufferPtr, lineIdx);\n }\n getHighlightCount() {\n this.guard();\n return this.lib.textBufferGetHighlightCount(this.bufferPtr);\n }\n setSyntaxStyle(style) {\n this.guard();\n this._syntaxStyle = style ?? undefined;\n this.lib.textBufferSetSyntaxStyle(this.bufferPtr, style?.ptr ?? null);\n }\n getSyntaxStyle() {\n this.guard();\n return this._syntaxStyle ?? null;\n }\n setTabWidth(width) {\n this.guard();\n this.lib.textBufferSetTabWidth(this.bufferPtr, width);\n }\n getTabWidth() {\n this.guard();\n return this.lib.textBufferGetTabWidth(this.bufferPtr);\n }\n clear() {\n this.guard();\n this.lib.textBufferClear(this.bufferPtr);\n this._length = 0;\n this._byteSize = 0;\n this._lineInfo = undefined;\n this._textBytes = undefined;\n this._appendedChunks = [];\n }\n reset() {\n this.guard();\n this.lib.textBufferReset(this.bufferPtr);\n this._length = 0;\n this._byteSize = 0;\n this._lineInfo = undefined;\n this._textBytes = undefined;\n this._memId = undefined;\n this._appendedChunks = [];\n }\n destroy() {\n if (this._destroyed)\n return;\n this._destroyed = true;\n this.lib.destroyTextBuffer(this.bufferPtr);\n }\n}\n\n// src/Renderable.ts\nimport { EventEmitter as EventEmitter6 } from \"events\";\n\n// src/lib/renderable.validations.ts\nfunction validateOptions(id, options) {\n if (typeof options.width === \"number\") {\n if (options.width < 0) {\n throw new TypeError(`Invalid width for Renderable ${id}: ${options.width}`);\n }\n }\n if (typeof options.height === \"number\") {\n if (options.height < 0) {\n throw new TypeError(`Invalid height for Renderable ${id}: ${options.height}`);\n }\n }\n}\nfunction isValidPercentage(value) {\n if (typeof value === \"string\" && value.endsWith(\"%\")) {\n const numPart = value.slice(0, -1);\n const num = parseFloat(numPart);\n return !Number.isNaN(num);\n }\n return false;\n}\nfunction isMarginType(value) {\n if (typeof value === \"number\" && !Number.isNaN(value)) {\n return true;\n }\n if (value === \"auto\") {\n return true;\n }\n return isValidPercentage(value);\n}\nfunction isPaddingType(value) {\n if (typeof value === \"number\" && !Number.isNaN(value)) {\n return true;\n }\n return isValidPercentage(value);\n}\nfunction isPositionType(value) {\n if (typeof value === \"number\" && !Number.isNaN(value)) {\n return true;\n }\n if (value === \"auto\") {\n return true;\n }\n return isValidPercentage(value);\n}\nfunction isPositionTypeType(value) {\n return value === \"relative\" || value === \"absolute\";\n}\nfunction isOverflowType(value) {\n return value === \"visible\" || value === \"hidden\" || value === \"scroll\";\n}\nfunction isDimensionType(value) {\n return isPositionType(value);\n}\nfunction isFlexBasisType(value) {\n if (value === undefined || value === \"auto\") {\n return true;\n }\n if (typeof value === \"number\" && !Number.isNaN(value)) {\n return true;\n }\n return false;\n}\nfunction isSizeType(value) {\n if (value === undefined) {\n return true;\n }\n if (typeof value === \"number\" && !Number.isNaN(value)) {\n return true;\n }\n return isValidPercentage(value);\n}\n\n// src/Renderable.ts\nvar BrandedRenderable = Symbol.for(\"@opentui/core/Renderable\");\nvar LayoutEvents;\n((LayoutEvents2) => {\n LayoutEvents2[\"LAYOUT_CHANGED\"] = \"layout-changed\";\n LayoutEvents2[\"ADDED\"] = \"added\";\n LayoutEvents2[\"REMOVED\"] = \"removed\";\n LayoutEvents2[\"RESIZED\"] = \"resized\";\n})(LayoutEvents ||= {});\nvar RenderableEvents;\n((RenderableEvents2) => {\n RenderableEvents2[\"FOCUSED\"] = \"focused\";\n RenderableEvents2[\"BLURRED\"] = \"blurred\";\n})(RenderableEvents ||= {});\nfunction isRenderable(obj) {\n return !!obj?.[BrandedRenderable];\n}\n\nclass BaseRenderable extends EventEmitter6 {\n [BrandedRenderable] = true;\n static renderableNumber = 1;\n _id;\n num;\n _dirty = false;\n parent = null;\n _visible = true;\n constructor(options) {\n super();\n this.num = BaseRenderable.renderableNumber++;\n this._id = options.id ?? `renderable-${this.num}`;\n }\n get id() {\n return this._id;\n }\n set id(value) {\n this._id = value;\n }\n get isDirty() {\n return this._dirty;\n }\n markClean() {\n this._dirty = false;\n }\n markDirty() {\n this._dirty = true;\n }\n destroy() {}\n destroyRecursively() {}\n get visible() {\n return this._visible;\n }\n set visible(value) {\n this._visible = value;\n }\n}\nvar yogaConfig = src_default.Config.create();\nyogaConfig.setUseWebDefaults(false);\nyogaConfig.setPointScaleFactor(1);\n\nclass Renderable extends BaseRenderable {\n static renderablesByNumber = new Map;\n _isDestroyed = false;\n _ctx;\n _translateX = 0;\n _translateY = 0;\n _x = 0;\n _y = 0;\n _width;\n _height;\n _widthValue = 0;\n _heightValue = 0;\n _zIndex;\n selectable = false;\n buffered;\n frameBuffer = null;\n _focusable = false;\n _focused = false;\n keypressHandler = null;\n pasteHandler = null;\n _live = false;\n _liveCount = 0;\n _sizeChangeListener = undefined;\n _mouseListener = null;\n _mouseListeners = {};\n _pasteListener = undefined;\n _keyListeners = {};\n yogaNode;\n _positionType = \"relative\";\n _overflow = \"visible\";\n _position = {};\n _opacity = 1;\n _flexShrink = 1;\n renderableMapById = new Map;\n _childrenInLayoutOrder = [];\n _childrenInZIndexOrder = [];\n needsZIndexSort = false;\n parent = null;\n childrenPrimarySortDirty = true;\n childrenSortedByPrimaryAxis = [];\n _shouldUpdateBefore = new Set;\n onLifecyclePass = null;\n renderBefore;\n renderAfter;\n constructor(ctx, options) {\n super(options);\n this._ctx = ctx;\n Renderable.renderablesByNumber.set(this.num, this);\n validateOptions(this.id, options);\n this.renderBefore = options.renderBefore;\n this.renderAfter = options.renderAfter;\n this._width = options.width ?? \"auto\";\n this._height = options.height ?? \"auto\";\n if (typeof this._width === \"number\") {\n this._widthValue = this._width;\n }\n if (typeof this._height === \"number\") {\n this._heightValue = this._height;\n }\n this._zIndex = options.zIndex ?? 0;\n this._visible = options.visible !== false;\n this.buffered = options.buffered ?? false;\n this._live = options.live ?? false;\n this._liveCount = this._live && this._visible ? 1 : 0;\n this._opacity = options.opacity !== undefined ? Math.max(0, Math.min(1, options.opacity)) : 1;\n this.yogaNode = src_default.Node.create(yogaConfig);\n this.yogaNode.setDisplay(this._visible ? Display.Flex : Display.None);\n this.setupYogaProperties(options);\n this.applyEventOptions(options);\n if (this.buffered) {\n this.createFrameBuffer();\n }\n }\n get id() {\n return this._id;\n }\n set id(value) {\n if (this.parent) {\n this.parent.renderableMapById.delete(this.id);\n this.parent.renderableMapById.set(value, this);\n }\n super.id = value;\n }\n get focusable() {\n return this._focusable;\n }\n set focusable(value) {\n this._focusable = value;\n }\n get ctx() {\n return this._ctx;\n }\n get visible() {\n return this._visible;\n }\n get primaryAxis() {\n const dir = this.yogaNode.getFlexDirection();\n return dir === 2 || dir === 3 ? \"row\" : \"column\";\n }\n set visible(value) {\n if (this._visible === value)\n return;\n const wasVisible = this._visible;\n this._visible = value;\n this.yogaNode.setDisplay(value ? Display.Flex : Display.None);\n if (this._live) {\n if (!wasVisible && value) {\n this.propagateLiveCount(1);\n } else if (wasVisible && !value) {\n this.propagateLiveCount(-1);\n }\n }\n if (this._focused) {\n this.blur();\n }\n this.requestRender();\n }\n get opacity() {\n return this._opacity;\n }\n set opacity(value) {\n const clamped = Math.max(0, Math.min(1, value));\n if (this._opacity !== clamped) {\n this._opacity = clamped;\n this.requestRender();\n }\n }\n hasSelection() {\n return false;\n }\n onSelectionChanged(selection2) {\n return false;\n }\n getSelectedText() {\n return \"\";\n }\n shouldStartSelection(x, y) {\n return false;\n }\n focus() {\n if (this._isDestroyed || this._focused || !this._focusable)\n return;\n this._ctx.focusRenderable(this);\n this._focused = true;\n this.requestRender();\n this.keypressHandler = (key) => {\n if (this._isDestroyed)\n return;\n this._keyListeners[\"down\"]?.(key);\n if (this._isDestroyed)\n return;\n if (!key.defaultPrevented && this.handleKeyPress) {\n this.handleKeyPress(key);\n }\n };\n this.pasteHandler = (event) => {\n if (this._isDestroyed)\n return;\n this._pasteListener?.call(this, event);\n if (this._isDestroyed)\n return;\n if (!event.defaultPrevented && this.handlePaste) {\n this.handlePaste(event);\n }\n };\n this.ctx._internalKeyInput.onInternal(\"keypress\", this.keypressHandler);\n this.ctx._internalKeyInput.onInternal(\"paste\", this.pasteHandler);\n this.emit(\"focused\" /* FOCUSED */);\n }\n blur() {\n if (!this._focused || !this._focusable)\n return;\n this._focused = false;\n this.requestRender();\n if (this.keypressHandler) {\n this.ctx._internalKeyInput.offInternal(\"keypress\", this.keypressHandler);\n this.keypressHandler = null;\n }\n if (this.pasteHandler) {\n this.ctx._internalKeyInput.offInternal(\"paste\", this.pasteHandler);\n this.pasteHandler = null;\n }\n this.emit(\"blurred\" /* BLURRED */);\n }\n get focused() {\n return this._focused;\n }\n get live() {\n return this._live;\n }\n get liveCount() {\n return this._liveCount;\n }\n set live(value) {\n if (this._live === value)\n return;\n this._live = value;\n if (this._visible) {\n const delta = value ? 1 : -1;\n this.propagateLiveCount(delta);\n }\n }\n propagateLiveCount(delta) {\n this._liveCount += delta;\n this.parent?.propagateLiveCount(delta);\n }\n findDescendantById(id) {\n for (const child of this._childrenInLayoutOrder) {\n if (child.id === id)\n return child;\n if (isRenderable(child)) {\n const found = child.findDescendantById(id);\n if (found)\n return found;\n }\n }\n return;\n }\n requestRender() {\n this.markDirty();\n this._ctx.requestRender();\n }\n get translateX() {\n return this._translateX;\n }\n set translateX(value) {\n if (this._translateX === value)\n return;\n this._translateX = value;\n if (this.parent)\n this.parent.childrenPrimarySortDirty = true;\n this.requestRender();\n }\n get translateY() {\n return this._translateY;\n }\n set translateY(value) {\n if (this._translateY === value)\n return;\n this._translateY = value;\n if (this.parent)\n this.parent.childrenPrimarySortDirty = true;\n this.requestRender();\n }\n get x() {\n if (this.parent) {\n return this.parent.x + this._x + this._translateX;\n }\n return this._x + this._translateX;\n }\n set x(value) {\n this.left = value;\n }\n get top() {\n return this._position.top;\n }\n set top(value) {\n if (isPositionType(value) || value === undefined) {\n this.setPosition({ top: value });\n }\n }\n get right() {\n return this._position.right;\n }\n set right(value) {\n if (isPositionType(value) || value === undefined) {\n this.setPosition({ right: value });\n }\n }\n get bottom() {\n return this._position.bottom;\n }\n set bottom(value) {\n if (isPositionType(value) || value === undefined) {\n this.setPosition({ bottom: value });\n }\n }\n get left() {\n return this._position.left;\n }\n set left(value) {\n if (isPositionType(value) || value === undefined) {\n this.setPosition({ left: value });\n }\n }\n get y() {\n if (this.parent) {\n return this.parent.y + this._y + this._translateY;\n }\n return this._y + this._translateY;\n }\n set y(value) {\n this.top = value;\n }\n get width() {\n return this._widthValue;\n }\n set width(value) {\n if (isDimensionType(value)) {\n this._width = value;\n this.yogaNode.setWidth(value);\n if (typeof value === \"number\" && this._flexShrink === 1) {\n this._flexShrink = 0;\n this.yogaNode.setFlexShrink(0);\n }\n this.requestRender();\n }\n }\n get height() {\n return this._heightValue;\n }\n set height(value) {\n if (isDimensionType(value)) {\n this._height = value;\n this.yogaNode.setHeight(value);\n if (typeof value === \"number\" && this._flexShrink === 1) {\n this._flexShrink = 0;\n this.yogaNode.setFlexShrink(0);\n }\n this.requestRender();\n }\n }\n get zIndex() {\n return this._zIndex;\n }\n set zIndex(value) {\n if (this._zIndex !== value) {\n this._zIndex = value;\n this.parent?.requestZIndexSort();\n this.requestRender();\n }\n }\n requestZIndexSort() {\n this.needsZIndexSort = true;\n }\n ensureZIndexSorted() {\n if (this.needsZIndexSort) {\n this._childrenInZIndexOrder.sort((a, b) => a.zIndex > b.zIndex ? 1 : a.zIndex < b.zIndex ? -1 : 0);\n this.needsZIndexSort = false;\n }\n }\n getChildrenSortedByPrimaryAxis() {\n if (!this.childrenPrimarySortDirty && this.childrenSortedByPrimaryAxis.length === this._childrenInLayoutOrder.length) {\n return this.childrenSortedByPrimaryAxis;\n }\n const dir = this.yogaNode.getFlexDirection();\n const axis = dir === 2 || dir === 3 ? \"x\" : \"y\";\n const sorted = [...this._childrenInLayoutOrder];\n sorted.sort((a, b) => {\n const va = axis === \"y\" ? a.y : a.x;\n const vb = axis === \"y\" ? b.y : b.x;\n return va - vb;\n });\n this.childrenSortedByPrimaryAxis = sorted;\n this.childrenPrimarySortDirty = false;\n return this.childrenSortedByPrimaryAxis;\n }\n setupYogaProperties(options) {\n const node = this.yogaNode;\n if (isFlexBasisType(options.flexBasis)) {\n node.setFlexBasis(options.flexBasis);\n }\n if (isSizeType(options.minWidth)) {\n node.setMinWidth(options.minWidth);\n }\n if (isSizeType(options.minHeight)) {\n node.setMinHeight(options.minHeight);\n }\n if (options.flexGrow !== undefined) {\n node.setFlexGrow(options.flexGrow);\n } else {\n node.setFlexGrow(0);\n }\n if (options.flexShrink !== undefined) {\n this._flexShrink = options.flexShrink;\n node.setFlexShrink(options.flexShrink);\n } else {\n const hasExplicitWidth = typeof options.width === \"number\";\n const hasExplicitHeight = typeof options.height === \"number\";\n this._flexShrink = hasExplicitWidth || hasExplicitHeight ? 0 : 1;\n node.setFlexShrink(this._flexShrink);\n }\n node.setFlexDirection(parseFlexDirection(options.flexDirection));\n node.setFlexWrap(parseWrap(options.flexWrap));\n node.setAlignItems(parseAlignItems(options.alignItems));\n node.setJustifyContent(parseJustify(options.justifyContent));\n node.setAlignSelf(parseAlign(options.alignSelf));\n if (isDimensionType(options.width)) {\n this._width = options.width;\n this.yogaNode.setWidth(options.width);\n }\n if (isDimensionType(options.height)) {\n this._height = options.height;\n this.yogaNode.setHeight(options.height);\n }\n this._positionType = options.position === \"absolute\" ? \"absolute\" : \"relative\";\n if (this._positionType !== \"relative\") {\n node.setPositionType(parsePositionType(this._positionType));\n }\n this._overflow = options.overflow === \"hidden\" ? \"hidden\" : options.overflow === \"scroll\" ? \"scroll\" : \"visible\";\n if (this._overflow !== \"visible\") {\n node.setOverflow(parseOverflow(this._overflow));\n }\n const hasPositionProps = options.top !== undefined || options.right !== undefined || options.bottom !== undefined || options.left !== undefined;\n if (hasPositionProps) {\n this._position = {\n top: options.top,\n right: options.right,\n bottom: options.bottom,\n left: options.left\n };\n this.updateYogaPosition(this._position);\n }\n if (isSizeType(options.maxWidth)) {\n node.setMaxWidth(options.maxWidth);\n }\n if (isSizeType(options.maxHeight)) {\n node.setMaxHeight(options.maxHeight);\n }\n this.setupMarginAndPadding(options);\n }\n setupMarginAndPadding(options) {\n const node = this.yogaNode;\n if (isMarginType(options.margin)) {\n node.setMargin(Edge.All, options.margin);\n }\n if (isMarginType(options.marginX)) {\n node.setMargin(Edge.Horizontal, options.marginX);\n }\n if (isMarginType(options.marginY)) {\n node.setMargin(Edge.Vertical, options.marginY);\n }\n if (isMarginType(options.marginTop)) {\n node.setMargin(Edge.Top, options.marginTop);\n }\n if (isMarginType(options.marginRight)) {\n node.setMargin(Edge.Right, options.marginRight);\n }\n if (isMarginType(options.marginBottom)) {\n node.setMargin(Edge.Bottom, options.marginBottom);\n }\n if (isMarginType(options.marginLeft)) {\n node.setMargin(Edge.Left, options.marginLeft);\n }\n if (isPaddingType(options.padding)) {\n node.setPadding(Edge.All, options.padding);\n }\n if (isPaddingType(options.paddingX)) {\n node.setPadding(Edge.Horizontal, options.paddingX);\n }\n if (isPaddingType(options.paddingY)) {\n node.setPadding(Edge.Vertical, options.paddingY);\n }\n if (isPaddingType(options.paddingTop)) {\n node.setPadding(Edge.Top, options.paddingTop);\n }\n if (isPaddingType(options.paddingRight)) {\n node.setPadding(Edge.Right, options.paddingRight);\n }\n if (isPaddingType(options.paddingBottom)) {\n node.setPadding(Edge.Bottom, options.paddingBottom);\n }\n if (isPaddingType(options.paddingLeft)) {\n node.setPadding(Edge.Left, options.paddingLeft);\n }\n }\n set position(positionType) {\n if (!isPositionTypeType(positionType) || this._positionType === positionType)\n return;\n this._positionType = positionType;\n this.yogaNode.setPositionType(parsePositionType(positionType));\n this.requestRender();\n }\n get overflow() {\n return this._overflow;\n }\n set overflow(overflow) {\n if (!isOverflowType(overflow) || this._overflow === overflow)\n return;\n this._overflow = overflow;\n this.yogaNode.setOverflow(parseOverflow(overflow));\n this.requestRender();\n }\n setPosition(position) {\n this._position = { ...this._position, ...position };\n this.updateYogaPosition(position);\n }\n updateYogaPosition(position) {\n const node = this.yogaNode;\n const { top, right, bottom, left } = position;\n if (isPositionType(top)) {\n if (top === \"auto\") {\n node.setPositionAuto(Edge.Top);\n } else {\n node.setPosition(Edge.Top, top);\n }\n }\n if (isPositionType(right)) {\n if (right === \"auto\") {\n node.setPositionAuto(Edge.Right);\n } else {\n node.setPosition(Edge.Right, right);\n }\n }\n if (isPositionType(bottom)) {\n if (bottom === \"auto\") {\n node.setPositionAuto(Edge.Bottom);\n } else {\n node.setPosition(Edge.Bottom, bottom);\n }\n }\n if (isPositionType(left)) {\n if (left === \"auto\") {\n node.setPositionAuto(Edge.Left);\n } else {\n node.setPosition(Edge.Left, left);\n }\n }\n this.requestRender();\n }\n set flexGrow(grow) {\n if (grow == null) {\n this.yogaNode.setFlexGrow(0);\n } else {\n this.yogaNode.setFlexGrow(grow);\n }\n this.requestRender();\n }\n set flexShrink(shrink) {\n const value = shrink == null ? 1 : shrink;\n this._flexShrink = value;\n this.yogaNode.setFlexShrink(value);\n this.requestRender();\n }\n set flexDirection(direction) {\n this.yogaNode.setFlexDirection(parseFlexDirection(direction));\n this.requestRender();\n }\n set flexWrap(wrap) {\n this.yogaNode.setFlexWrap(parseWrap(wrap));\n this.requestRender();\n }\n set alignItems(alignItems) {\n this.yogaNode.setAlignItems(parseAlignItems(alignItems));\n this.requestRender();\n }\n set justifyContent(justifyContent) {\n this.yogaNode.setJustifyContent(parseJustify(justifyContent));\n this.requestRender();\n }\n set alignSelf(alignSelf) {\n this.yogaNode.setAlignSelf(parseAlign(alignSelf));\n this.requestRender();\n }\n set flexBasis(basis) {\n if (isFlexBasisType(basis)) {\n this.yogaNode.setFlexBasis(basis);\n this.requestRender();\n }\n }\n set minWidth(minWidth) {\n if (isSizeType(minWidth)) {\n this.yogaNode.setMinWidth(minWidth);\n this.requestRender();\n }\n }\n set maxWidth(maxWidth) {\n if (isSizeType(maxWidth)) {\n this.yogaNode.setMaxWidth(maxWidth);\n this.requestRender();\n }\n }\n set minHeight(minHeight) {\n if (isSizeType(minHeight)) {\n this.yogaNode.setMinHeight(minHeight);\n this.requestRender();\n }\n }\n set maxHeight(maxHeight) {\n if (isSizeType(maxHeight)) {\n this.yogaNode.setMaxHeight(maxHeight);\n this.requestRender();\n }\n }\n set margin(margin) {\n if (isMarginType(margin)) {\n this.yogaNode.setMargin(Edge.All, margin);\n this.requestRender();\n }\n }\n set marginX(marginX) {\n if (isMarginType(marginX)) {\n this.yogaNode.setMargin(Edge.Horizontal, marginX);\n this.requestRender();\n }\n }\n set marginY(marginY) {\n if (isMarginType(marginY)) {\n this.yogaNode.setMargin(Edge.Vertical, marginY);\n this.requestRender();\n }\n }\n set marginTop(margin) {\n if (isMarginType(margin)) {\n this.yogaNode.setMargin(Edge.Top, margin);\n this.requestRender();\n }\n }\n set marginRight(margin) {\n if (isMarginType(margin)) {\n this.yogaNode.setMargin(Edge.Right, margin);\n this.requestRender();\n }\n }\n set marginBottom(margin) {\n if (isMarginType(margin)) {\n this.yogaNode.setMargin(Edge.Bottom, margin);\n this.requestRender();\n }\n }\n set marginLeft(margin) {\n if (isMarginType(margin)) {\n this.yogaNode.setMargin(Edge.Left, margin);\n this.requestRender();\n }\n }\n set padding(padding) {\n if (isPaddingType(padding)) {\n this.yogaNode.setPadding(Edge.All, padding);\n this.requestRender();\n }\n }\n set paddingX(paddingX) {\n if (isPaddingType(paddingX)) {\n this.yogaNode.setPadding(Edge.Horizontal, paddingX);\n this.requestRender();\n }\n }\n set paddingY(paddingY) {\n if (isPaddingType(paddingY)) {\n this.yogaNode.setPadding(Edge.Vertical, paddingY);\n this.requestRender();\n }\n }\n set paddingTop(padding) {\n if (isPaddingType(padding)) {\n this.yogaNode.setPadding(Edge.Top, padding);\n this.requestRender();\n }\n }\n set paddingRight(padding) {\n if (isPaddingType(padding)) {\n this.yogaNode.setPadding(Edge.Right, padding);\n this.requestRender();\n }\n }\n set paddingBottom(padding) {\n if (isPaddingType(padding)) {\n this.yogaNode.setPadding(Edge.Bottom, padding);\n this.requestRender();\n }\n }\n set paddingLeft(padding) {\n if (isPaddingType(padding)) {\n this.yogaNode.setPadding(Edge.Left, padding);\n this.requestRender();\n }\n }\n getLayoutNode() {\n return this.yogaNode;\n }\n updateFromLayout() {\n const layout = this.yogaNode.getComputedLayout();\n const oldX = this._x;\n const oldY = this._y;\n const oldWidth = this._widthValue;\n const oldHeight = this._heightValue;\n this._x = layout.left;\n this._y = layout.top;\n const newWidth = Math.max(layout.width, 1);\n const newHeight = Math.max(layout.height, 1);\n const sizeChanged = oldWidth !== newWidth || oldHeight !== newHeight;\n this._widthValue = newWidth;\n this._heightValue = newHeight;\n if (sizeChanged) {\n this.onLayoutResize(newWidth, newHeight);\n }\n const positionChanged = oldX !== this._x || oldY !== this._y;\n if (positionChanged) {\n if (this.parent)\n this.parent.childrenPrimarySortDirty = true;\n }\n }\n onLayoutResize(width, height) {\n if (this._visible) {\n this.handleFrameBufferResize(width, height);\n this.onResize(width, height);\n this.requestRender();\n }\n }\n handleFrameBufferResize(width, height) {\n if (!this.buffered)\n return;\n if (width <= 0 || height <= 0) {\n return;\n }\n if (this.frameBuffer) {\n this.frameBuffer.resize(width, height);\n } else {\n this.createFrameBuffer();\n }\n }\n createFrameBuffer() {\n const w = this.width;\n const h = this.height;\n if (w <= 0 || h <= 0) {\n return;\n }\n try {\n const widthMethod = this._ctx.widthMethod;\n this.frameBuffer = OptimizedBuffer.create(w, h, widthMethod, { respectAlpha: true, id: `framebuffer-${this.id}` });\n } catch (error) {\n console.error(`Failed to create frame buffer for ${this.id}:`, error);\n this.frameBuffer = null;\n }\n }\n onResize(width, height) {\n this.onSizeChange?.();\n this.emit(\"resize\");\n }\n replaceParent(obj) {\n if (obj.parent) {\n obj.parent.remove(obj.id);\n }\n obj.parent = this;\n }\n add(obj, index) {\n if (!obj) {\n return -1;\n }\n const renderable = maybeMakeRenderable(this._ctx, obj);\n if (!renderable) {\n return -1;\n }\n if (renderable.isDestroyed) {\n if (true) {\n console.warn(`Renderable with id ${renderable.id} was already destroyed, skipping add`);\n }\n return -1;\n }\n const anchorRenderable = index !== undefined ? this._childrenInLayoutOrder[index] : undefined;\n if (anchorRenderable) {\n return this.insertBefore(renderable, anchorRenderable);\n }\n if (renderable.parent === this) {\n this.yogaNode.removeChild(renderable.getLayoutNode());\n this._childrenInLayoutOrder.splice(this._childrenInLayoutOrder.indexOf(renderable), 1);\n } else {\n this.replaceParent(renderable);\n this.needsZIndexSort = true;\n this.renderableMapById.set(renderable.id, renderable);\n this._childrenInZIndexOrder.push(renderable);\n if (typeof renderable.onLifecyclePass === \"function\") {\n this._ctx.registerLifecyclePass(renderable);\n }\n if (renderable._liveCount > 0) {\n this.propagateLiveCount(renderable._liveCount);\n }\n }\n const childLayoutNode = renderable.getLayoutNode();\n const insertedIndex = this._childrenInLayoutOrder.length;\n this._childrenInLayoutOrder.push(renderable);\n this.yogaNode.insertChild(childLayoutNode, insertedIndex);\n this.childrenPrimarySortDirty = true;\n this._shouldUpdateBefore.add(renderable);\n this.requestRender();\n return insertedIndex;\n }\n insertBefore(obj, anchor) {\n if (!anchor) {\n return this.add(obj);\n }\n if (!obj) {\n return -1;\n }\n const renderable = maybeMakeRenderable(this._ctx, obj);\n if (!renderable) {\n return -1;\n }\n if (renderable.isDestroyed) {\n if (true) {\n console.warn(`Renderable with id ${renderable.id} was already destroyed, skipping insertBefore`);\n }\n return -1;\n }\n if (!isRenderable(anchor)) {\n throw new Error(\"Anchor must be a Renderable\");\n }\n if (anchor.isDestroyed) {\n if (true) {\n console.warn(`Anchor with id ${anchor.id} was already destroyed, skipping insertBefore`);\n }\n return -1;\n }\n if (!this.renderableMapById.has(anchor.id)) {\n if (true) {\n console.warn(`Anchor with id ${anchor.id} does not exist within the parent ${this.id}, skipping insertBefore`);\n }\n return -1;\n }\n if (renderable === anchor || renderable.id === anchor.id) {\n if (true) {\n console.warn(`Anchor is the same as the node ${renderable.id} being inserted, skipping insertBefore`);\n }\n return -1;\n }\n if (renderable.parent === this) {\n this.yogaNode.removeChild(renderable.getLayoutNode());\n this._childrenInLayoutOrder.splice(this._childrenInLayoutOrder.indexOf(renderable), 1);\n } else {\n this.replaceParent(renderable);\n this.needsZIndexSort = true;\n this.renderableMapById.set(renderable.id, renderable);\n this._childrenInZIndexOrder.push(renderable);\n if (typeof renderable.onLifecyclePass === \"function\") {\n this._ctx.registerLifecyclePass(renderable);\n }\n if (renderable._liveCount > 0) {\n this.propagateLiveCount(renderable._liveCount);\n }\n }\n this.childrenPrimarySortDirty = true;\n const anchorIndex = this._childrenInLayoutOrder.indexOf(anchor);\n const insertedIndex = Math.max(0, Math.min(anchorIndex, this._childrenInLayoutOrder.length));\n this._childrenInLayoutOrder.splice(insertedIndex, 0, renderable);\n this.yogaNode.insertChild(renderable.getLayoutNode(), insertedIndex);\n this._shouldUpdateBefore.add(renderable);\n this.requestRender();\n return insertedIndex;\n }\n getRenderable(id) {\n return this.renderableMapById.get(id);\n }\n remove(id) {\n if (!id) {\n return;\n }\n if (this.renderableMapById.has(id)) {\n const obj = this.renderableMapById.get(id);\n if (obj) {\n if (obj._liveCount > 0) {\n this.propagateLiveCount(-obj._liveCount);\n }\n const childLayoutNode = obj.getLayoutNode();\n this.yogaNode.removeChild(childLayoutNode);\n this.requestRender();\n obj.onRemove();\n obj.parent = null;\n this._ctx.unregisterLifecyclePass(obj);\n this.renderableMapById.delete(id);\n const index = this._childrenInLayoutOrder.findIndex((obj2) => obj2.id === id);\n if (index !== -1) {\n this._childrenInLayoutOrder.splice(index, 1);\n }\n const zIndexIndex = this._childrenInZIndexOrder.findIndex((obj2) => obj2.id === id);\n if (zIndexIndex !== -1) {\n this._childrenInZIndexOrder.splice(zIndexIndex, 1);\n }\n this.childrenPrimarySortDirty = true;\n }\n }\n }\n onRemove() {}\n getChildren() {\n return [...this._childrenInLayoutOrder];\n }\n getChildrenCount() {\n return this._childrenInLayoutOrder.length;\n }\n updateLayout(deltaTime, renderList = []) {\n if (!this.visible)\n return;\n this.onUpdate(deltaTime);\n if (this._isDestroyed)\n return;\n this.updateFromLayout();\n if (this._shouldUpdateBefore.size > 0) {\n for (const child of this._shouldUpdateBefore) {\n if (!child.isDestroyed) {\n child.updateFromLayout();\n }\n }\n this._shouldUpdateBefore.clear();\n }\n if (this._isDestroyed)\n return;\n const shouldPushOpacity = this._opacity < 1;\n if (shouldPushOpacity) {\n renderList.push({ action: \"pushOpacity\", opacity: this._opacity });\n }\n renderList.push({ action: \"render\", renderable: this });\n this.ensureZIndexSorted();\n const shouldPushScissor = this._overflow !== \"visible\" && this.width > 0 && this.height > 0;\n if (shouldPushScissor) {\n const scissorRect = this.getScissorRect();\n renderList.push({\n action: \"pushScissorRect\",\n x: scissorRect.x,\n y: scissorRect.y,\n width: scissorRect.width,\n height: scissorRect.height,\n screenX: this.x,\n screenY: this.y\n });\n }\n const visibleChildren = this._getVisibleChildren();\n for (const child of this._childrenInZIndexOrder) {\n if (!visibleChildren.includes(child.num)) {\n child.updateFromLayout();\n continue;\n }\n child.updateLayout(deltaTime, renderList);\n }\n if (shouldPushScissor) {\n renderList.push({ action: \"popScissorRect\" });\n }\n if (shouldPushOpacity) {\n renderList.push({ action: \"popOpacity\" });\n }\n }\n render(buffer, deltaTime) {\n let renderBuffer = buffer;\n if (this.buffered && this.frameBuffer) {\n renderBuffer = this.frameBuffer;\n }\n if (this.renderBefore) {\n this.renderBefore.call(this, renderBuffer, deltaTime);\n }\n this.renderSelf(renderBuffer, deltaTime);\n if (this.renderAfter) {\n this.renderAfter.call(this, renderBuffer, deltaTime);\n }\n this.markClean();\n this._ctx.addToHitGrid(this.x, this.y, this.width, this.height, this.num);\n if (this.buffered && this.frameBuffer) {\n buffer.drawFrameBuffer(this.x, this.y, this.frameBuffer);\n }\n }\n _getVisibleChildren() {\n return this._childrenInZIndexOrder.map((child) => child.num);\n }\n onUpdate(deltaTime) {}\n getScissorRect() {\n return {\n x: this.buffered ? 0 : this.x,\n y: this.buffered ? 0 : this.y,\n width: this.width,\n height: this.height\n };\n }\n renderSelf(buffer, deltaTime) {}\n get isDestroyed() {\n return this._isDestroyed;\n }\n destroy() {\n if (this._isDestroyed) {\n return;\n }\n this._isDestroyed = true;\n if (this.parent) {\n this.parent.remove(this.id);\n }\n if (this.frameBuffer) {\n this.frameBuffer.destroy();\n this.frameBuffer = null;\n }\n for (const child of this._childrenInLayoutOrder) {\n this.remove(child.id);\n }\n this._childrenInLayoutOrder = [];\n this.renderableMapById.clear();\n Renderable.renderablesByNumber.delete(this.num);\n this.blur();\n this.removeAllListeners();\n this.destroySelf();\n try {\n this.yogaNode.free();\n } catch (e) {}\n }\n destroyRecursively() {\n const children = [...this._childrenInLayoutOrder];\n for (const child of children) {\n child.destroyRecursively();\n }\n this.destroy();\n }\n destroySelf() {}\n processMouseEvent(event) {\n this._mouseListener?.call(this, event);\n this._mouseListeners[event.type]?.call(this, event);\n this.onMouseEvent(event);\n if (this.parent && !event.propagationStopped) {\n this.parent.processMouseEvent(event);\n }\n }\n onMouseEvent(event) {}\n set onMouse(handler) {\n if (handler)\n this._mouseListener = handler;\n else\n this._mouseListener = null;\n }\n set onMouseDown(handler) {\n if (handler)\n this._mouseListeners[\"down\"] = handler;\n else\n delete this._mouseListeners[\"down\"];\n }\n set onMouseUp(handler) {\n if (handler)\n this._mouseListeners[\"up\"] = handler;\n else\n delete this._mouseListeners[\"up\"];\n }\n set onMouseMove(handler) {\n if (handler)\n this._mouseListeners[\"move\"] = handler;\n else\n delete this._mouseListeners[\"move\"];\n }\n set onMouseDrag(handler) {\n if (handler)\n this._mouseListeners[\"drag\"] = handler;\n else\n delete this._mouseListeners[\"drag\"];\n }\n set onMouseDragEnd(handler) {\n if (handler)\n this._mouseListeners[\"drag-end\"] = handler;\n else\n delete this._mouseListeners[\"drag-end\"];\n }\n set onMouseDrop(handler) {\n if (handler)\n this._mouseListeners[\"drop\"] = handler;\n else\n delete this._mouseListeners[\"drop\"];\n }\n set onMouseOver(handler) {\n if (handler)\n this._mouseListeners[\"over\"] = handler;\n else\n delete this._mouseListeners[\"over\"];\n }\n set onMouseOut(handler) {\n if (handler)\n this._mouseListeners[\"out\"] = handler;\n else\n delete this._mouseListeners[\"out\"];\n }\n set onMouseScroll(handler) {\n if (handler)\n this._mouseListeners[\"scroll\"] = handler;\n else\n delete this._mouseListeners[\"scroll\"];\n }\n set onPaste(handler) {\n this._pasteListener = handler;\n }\n get onPaste() {\n return this._pasteListener;\n }\n set onKeyDown(handler) {\n if (handler)\n this._keyListeners[\"down\"] = handler;\n else\n delete this._keyListeners[\"down\"];\n }\n get onKeyDown() {\n return this._keyListeners[\"down\"];\n }\n set onSizeChange(handler) {\n this._sizeChangeListener = handler;\n }\n get onSizeChange() {\n return this._sizeChangeListener;\n }\n applyEventOptions(options) {\n this.onMouse = options.onMouse;\n this.onMouseDown = options.onMouseDown;\n this.onMouseUp = options.onMouseUp;\n this.onMouseMove = options.onMouseMove;\n this.onMouseDrag = options.onMouseDrag;\n this.onMouseDragEnd = options.onMouseDragEnd;\n this.onMouseDrop = options.onMouseDrop;\n this.onMouseOver = options.onMouseOver;\n this.onMouseOut = options.onMouseOut;\n this.onMouseScroll = options.onMouseScroll;\n this.onPaste = options.onPaste;\n this.onKeyDown = options.onKeyDown;\n this.onSizeChange = options.onSizeChange;\n }\n}\n\nclass RootRenderable extends Renderable {\n renderList = [];\n constructor(ctx) {\n super(ctx, { id: \"__root__\", zIndex: 0, visible: true, width: ctx.width, height: ctx.height, enableLayout: true });\n if (this.yogaNode) {\n this.yogaNode.free();\n }\n this.yogaNode = src_default.Node.create(yogaConfig);\n this.yogaNode.setWidth(ctx.width);\n this.yogaNode.setHeight(ctx.height);\n this.yogaNode.setFlexDirection(FlexDirection.Column);\n this.calculateLayout();\n }\n render(buffer, deltaTime) {\n if (!this.visible)\n return;\n for (const renderable of this._ctx.getLifecyclePasses()) {\n renderable.onLifecyclePass?.call(renderable);\n }\n if (this.yogaNode.isDirty()) {\n this.calculateLayout();\n }\n this.renderList.length = 0;\n this.updateLayout(deltaTime, this.renderList);\n this._ctx.clearHitGridScissorRects();\n for (let i = 1;i < this.renderList.length; i++) {\n const command = this.renderList[i];\n switch (command.action) {\n case \"render\":\n if (!command.renderable.isDestroyed) {\n command.renderable.render(buffer, deltaTime);\n }\n break;\n case \"pushScissorRect\":\n buffer.pushScissorRect(command.x, command.y, command.width, command.height);\n this._ctx.pushHitGridScissorRect(command.screenX, command.screenY, command.width, command.height);\n break;\n case \"popScissorRect\":\n buffer.popScissorRect();\n this._ctx.popHitGridScissorRect();\n break;\n case \"pushOpacity\":\n buffer.pushOpacity(command.opacity);\n break;\n case \"popOpacity\":\n buffer.popOpacity();\n break;\n }\n }\n }\n propagateLiveCount(delta) {\n const oldCount = this._liveCount;\n this._liveCount += delta;\n if (oldCount === 0 && this._liveCount > 0) {\n this._ctx.requestLive();\n } else if (oldCount > 0 && this._liveCount === 0) {\n this._ctx.dropLive();\n }\n }\n calculateLayout() {\n this.yogaNode.calculateLayout(this.width, this.height, Direction.LTR);\n this.emit(\"layout-changed\" /* LAYOUT_CHANGED */);\n }\n resize(width, height) {\n this.width = width;\n this.height = height;\n this.emit(\"resized\" /* RESIZED */, { width, height });\n }\n}\n\n// src/renderables/composition/vnode.ts\nimport util from \"util\";\nvar BrandedVNode = Symbol.for(\"@opentui/core/VNode\");\nfunction isRenderableConstructor(value) {\n return typeof value === \"function\" && value.prototype && Renderable.prototype.isPrototypeOf(value.prototype);\n}\nfunction flattenChildren(children) {\n const result = [];\n for (const child of children) {\n if (Array.isArray(child)) {\n result.push(...flattenChildren(child));\n } else if (child !== null && child !== undefined && child !== false) {\n result.push(child);\n }\n }\n return result;\n}\nfunction h(type, props, ...children) {\n if (typeof type !== \"function\") {\n throw new TypeError(\"h() received an invalid vnode type\");\n }\n const vnode = {\n [BrandedVNode]: true,\n type,\n props,\n children: flattenChildren(children),\n __pendingCalls: []\n };\n if (isRenderableConstructor(type)) {\n return new Proxy(vnode, {\n get(target, prop, receiver) {\n if (prop in target) {\n return Reflect.get(target, prop, receiver);\n }\n if (typeof prop === \"string\") {\n const prototype = type.prototype;\n const hasMethod = prototype && (typeof prototype[prop] === \"function\" || Object.getOwnPropertyDescriptor(prototype, prop) || Object.getOwnPropertyDescriptor(Object.getPrototypeOf(prototype), prop));\n if (hasMethod) {\n return (...args) => {\n target.__pendingCalls = target.__pendingCalls || [];\n target.__pendingCalls.push({ method: prop, args });\n return target;\n };\n }\n }\n return Reflect.get(target, prop, receiver);\n },\n set(target, prop, value, receiver) {\n if (typeof prop === \"string\" && isRenderableConstructor(type)) {\n const prototype = type.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(prototype, prop) || Object.getOwnPropertyDescriptor(Object.getPrototypeOf(prototype), prop);\n if (descriptor && descriptor.set) {\n target.__pendingCalls = target.__pendingCalls || [];\n target.__pendingCalls.push({ method: prop, args: [value], isProperty: true });\n return true;\n }\n }\n return Reflect.set(target, prop, value, receiver);\n }\n });\n }\n return vnode;\n}\nfunction isVNode(node) {\n return node && node[BrandedVNode];\n}\nfunction maybeMakeRenderable(ctx, node) {\n if (isRenderable(node))\n return node;\n if (isVNode(node))\n return instantiate(ctx, node);\n if (true) {\n console.warn(\"maybeMakeRenderable received an invalid node\", util.inspect(node, { depth: 2 }));\n }\n return null;\n}\nfunction wrapWithDelegates(instance, delegateMap) {\n if (!delegateMap || Object.keys(delegateMap).length === 0)\n return instance;\n const descendantCache = new Map;\n const getDescendant = (id) => {\n if (descendantCache.has(id)) {\n const cached = descendantCache.get(id);\n if (cached !== undefined) {\n return cached;\n }\n }\n const descendant = instance.findDescendantById(id);\n if (descendant) {\n descendantCache.set(id, descendant);\n }\n return descendant;\n };\n const proxy = new Proxy(instance, {\n get(target, prop, receiver) {\n if (typeof prop === \"string\" && delegateMap[prop]) {\n const host = getDescendant(delegateMap[prop]);\n if (host) {\n const value = host[prop];\n if (typeof value === \"function\") {\n return value.bind(host);\n }\n return value;\n }\n }\n return Reflect.get(target, prop, receiver);\n },\n set(target, prop, value, receiver) {\n if (typeof prop === \"string\" && delegateMap[prop]) {\n const host = getDescendant(delegateMap[prop]);\n if (host) {\n return Reflect.set(host, prop, value);\n }\n }\n return Reflect.set(target, prop, value, receiver);\n }\n });\n return proxy;\n}\nfunction instantiate(ctx, node) {\n if (isRenderable(node))\n return node;\n if (!node || typeof node !== \"object\") {\n throw new TypeError(\"mount() received an invalid vnode\");\n }\n const vnode = node;\n const { type, props } = vnode;\n const children = flattenChildren(vnode.children || []);\n const delegateMap = vnode.__delegateMap;\n if (isRenderableConstructor(type)) {\n const instance = new type(ctx, props || {});\n for (const child of children) {\n if (isRenderable(child)) {\n instance.add(child);\n } else {\n const mounted = instantiate(ctx, child);\n instance.add(mounted);\n }\n }\n const delegatedInstance = wrapWithDelegates(instance, delegateMap);\n const pendingCalls = vnode.__pendingCalls;\n if (pendingCalls) {\n for (const call of pendingCalls) {\n if (call.isProperty) {\n delegatedInstance[call.method] = call.args[0];\n } else {\n delegatedInstance[call.method].apply(delegatedInstance, call.args);\n }\n }\n }\n return delegatedInstance;\n }\n const resolved = type(props || {}, children);\n const inst = instantiate(ctx, resolved);\n return wrapWithDelegates(inst, delegateMap);\n}\nfunction delegate(mapping, vnode) {\n if (isRenderable(vnode)) {\n return wrapWithDelegates(vnode, mapping);\n }\n if (!vnode || typeof vnode !== \"object\")\n return vnode;\n vnode.__delegateMap = { ...vnode.__delegateMap || {}, ...mapping };\n return vnode;\n}\n\n// src/console.ts\nimport { EventEmitter as EventEmitter8 } from \"events\";\nimport { Console } from \"console\";\nimport fs from \"fs\";\nimport path4 from \"path\";\nimport util2 from \"util\";\n\n// src/lib/output.capture.ts\nimport { Writable } from \"stream\";\nimport { EventEmitter as EventEmitter7 } from \"events\";\n\nclass Capture extends EventEmitter7 {\n output = [];\n constructor() {\n super();\n }\n get size() {\n return this.output.length;\n }\n write(stream, data) {\n this.output.push({ stream, output: data });\n this.emit(\"write\", stream, data);\n }\n claimOutput() {\n const output = this.output.map((o) => o.output).join(\"\");\n this.clear();\n return output;\n }\n clear() {\n this.output = [];\n }\n}\n\nclass CapturedWritableStream extends Writable {\n stream;\n capture;\n isTTY = true;\n columns = process.stdout.columns || 80;\n rows = process.stdout.rows || 24;\n constructor(stream, capture) {\n super();\n this.stream = stream;\n this.capture = capture;\n }\n _write(chunk, encoding, callback) {\n const data = chunk.toString();\n this.capture.write(this.stream, data);\n callback();\n }\n getColorDepth() {\n return process.stdout.getColorDepth?.() || 8;\n }\n}\n\n// src/lib/keymapping.ts\nvar defaultKeyAliases = {\n enter: \"return\",\n esc: \"escape\"\n};\nfunction mergeKeyAliases(defaults, custom) {\n return { ...defaults, ...custom };\n}\nfunction mergeKeyBindings(defaults, custom) {\n const map = new Map;\n for (const binding of defaults) {\n const key = getKeyBindingKey(binding);\n map.set(key, binding);\n }\n for (const binding of custom) {\n const key = getKeyBindingKey(binding);\n map.set(key, binding);\n }\n return Array.from(map.values());\n}\nfunction getKeyBindingKey(binding) {\n return `${binding.name}:${binding.ctrl ? 1 : 0}:${binding.shift ? 1 : 0}:${binding.meta ? 1 : 0}:${binding.super ? 1 : 0}`;\n}\nfunction buildKeyBindingsMap(bindings, aliasMap) {\n const map = new Map;\n const aliases = aliasMap || {};\n for (const binding of bindings) {\n const key = getKeyBindingKey(binding);\n map.set(key, binding.action);\n }\n for (const binding of bindings) {\n const normalizedName = aliases[binding.name] || binding.name;\n if (normalizedName !== binding.name) {\n const aliasedKey = getKeyBindingKey({ ...binding, name: normalizedName });\n map.set(aliasedKey, binding.action);\n }\n }\n return map;\n}\nfunction keyBindingToString(binding) {\n const parts = [];\n if (binding.ctrl)\n parts.push(\"ctrl\");\n if (binding.shift)\n parts.push(\"shift\");\n if (binding.meta)\n parts.push(\"meta\");\n if (binding.super)\n parts.push(\"super\");\n parts.push(binding.name);\n return parts.join(\"+\");\n}\n\n// src/console.ts\nfunction getCallerInfo() {\n const err = new Error;\n const stackLines = err.stack?.split(`\n`).slice(5) || [];\n if (!stackLines.length)\n return null;\n const callerLine = stackLines[0].trim();\n const regex = /at\\s+(?:([\\w$.<>]+)\\s+\\()?((?:\\/|[A-Za-z]:\\\\)[^:]+):(\\d+):(\\d+)\\)?/;\n const match = callerLine.match(regex);\n if (!match)\n return null;\n const functionName = match[1] || \"<anonymous>\";\n const fullPath = match[2];\n const fileName = fullPath.split(/[\\\\/]/).pop() || \"<unknown>\";\n const lineNumber = parseInt(match[3], 10) || 0;\n const columnNumber = parseInt(match[4], 10) || 0;\n return { functionName, fullPath, fileName, lineNumber, columnNumber };\n}\nvar capture = singleton(\"ConsoleCapture\", () => new Capture);\nregisterEnvVar({\n name: \"OTUI_USE_CONSOLE\",\n description: \"Whether to use the console. Will not capture console output if set to false.\",\n type: \"boolean\",\n default: true\n});\nregisterEnvVar({\n name: \"SHOW_CONSOLE\",\n description: \"Show the console at startup if set to true.\",\n type: \"boolean\",\n default: false\n});\n\nclass TerminalConsoleCache extends EventEmitter8 {\n _cachedLogs = [];\n MAX_CACHE_SIZE = 1000;\n _collectCallerInfo = false;\n _cachingEnabled = true;\n _originalConsole = null;\n get cachedLogs() {\n return this._cachedLogs;\n }\n constructor() {\n super();\n }\n activate() {\n if (!this._originalConsole) {\n this._originalConsole = global.console;\n }\n this.setupConsoleCapture();\n this.overrideConsoleMethods();\n }\n setupConsoleCapture() {\n if (!env.OTUI_USE_CONSOLE)\n return;\n const mockStdout = new CapturedWritableStream(\"stdout\", capture);\n const mockStderr = new CapturedWritableStream(\"stderr\", capture);\n global.console = new Console({\n stdout: mockStdout,\n stderr: mockStderr,\n colorMode: true,\n inspectOptions: {\n compact: false,\n breakLength: 80,\n depth: 2\n }\n });\n }\n overrideConsoleMethods() {\n console.log = (...args) => {\n this.appendToConsole(\"LOG\" /* LOG */, ...args);\n };\n console.info = (...args) => {\n this.appendToConsole(\"INFO\" /* INFO */, ...args);\n };\n console.warn = (...args) => {\n this.appendToConsole(\"WARN\" /* WARN */, ...args);\n };\n console.error = (...args) => {\n this.appendToConsole(\"ERROR\" /* ERROR */, ...args);\n };\n console.debug = (...args) => {\n this.appendToConsole(\"DEBUG\" /* DEBUG */, ...args);\n };\n }\n setCollectCallerInfo(enabled) {\n this._collectCallerInfo = enabled;\n }\n clearConsole() {\n this._cachedLogs = [];\n }\n setCachingEnabled(enabled) {\n this._cachingEnabled = enabled;\n }\n deactivate() {\n this.restoreOriginalConsole();\n }\n restoreOriginalConsole() {\n if (this._originalConsole) {\n global.console = this._originalConsole;\n }\n this.setupConsoleCapture();\n }\n addLogEntry(level, ...args) {\n const callerInfo = this._collectCallerInfo ? getCallerInfo() : null;\n const logEntry = [new Date, level, args, callerInfo];\n if (this._cachingEnabled) {\n if (this._cachedLogs.length >= this.MAX_CACHE_SIZE) {\n this._cachedLogs.shift();\n }\n this._cachedLogs.push(logEntry);\n }\n return logEntry;\n }\n appendToConsole(level, ...args) {\n if (this._cachedLogs.length >= this.MAX_CACHE_SIZE) {\n this._cachedLogs.shift();\n }\n const entry = this.addLogEntry(level, ...args);\n this.emit(\"entry\", entry);\n }\n destroy() {\n this.deactivate();\n }\n}\nvar terminalConsoleCache = singleton(\"TerminalConsoleCache\", () => {\n const terminalConsoleCache2 = new TerminalConsoleCache;\n process.on(\"exit\", () => {\n terminalConsoleCache2.destroy();\n });\n return terminalConsoleCache2;\n});\nvar ConsolePosition;\n((ConsolePosition2) => {\n ConsolePosition2[\"TOP\"] = \"top\";\n ConsolePosition2[\"BOTTOM\"] = \"bottom\";\n ConsolePosition2[\"LEFT\"] = \"left\";\n ConsolePosition2[\"RIGHT\"] = \"right\";\n})(ConsolePosition ||= {});\nvar defaultConsoleKeybindings = [\n { name: \"up\", action: \"scroll-up\" },\n { name: \"down\", action: \"scroll-down\" },\n { name: \"up\", shift: true, action: \"scroll-to-top\" },\n { name: \"down\", shift: true, action: \"scroll-to-bottom\" },\n { name: \"p\", ctrl: true, action: \"position-previous\" },\n { name: \"o\", ctrl: true, action: \"position-next\" },\n { name: \"+\", action: \"size-increase\" },\n { name: \"=\", shift: true, action: \"size-increase\" },\n { name: \"-\", action: \"size-decrease\" },\n { name: \"s\", ctrl: true, action: \"save-logs\" },\n { name: \"c\", ctrl: true, shift: true, action: \"copy-selection\" }\n];\nvar DEFAULT_CONSOLE_OPTIONS = {\n position: \"bottom\" /* BOTTOM */,\n sizePercent: 30,\n zIndex: Infinity,\n colorInfo: \"#00FFFF\",\n colorWarn: \"#FFFF00\",\n colorError: \"#FF0000\",\n colorDebug: \"#808080\",\n colorDefault: \"#FFFFFF\",\n backgroundColor: RGBA.fromValues(0.1, 0.1, 0.1, 0.7),\n startInDebugMode: false,\n title: \"Console\",\n titleBarColor: RGBA.fromValues(0.05, 0.05, 0.05, 0.7),\n titleBarTextColor: \"#FFFFFF\",\n cursorColor: \"#00A0FF\",\n maxStoredLogs: 2000,\n maxDisplayLines: 3000,\n onCopySelection: undefined,\n keyBindings: undefined,\n keyAliasMap: undefined,\n selectionColor: RGBA.fromValues(0.3, 0.5, 0.8, 0.5),\n copyButtonColor: \"#00A0FF\"\n};\nvar INDENT_WIDTH = 2;\n\nclass TerminalConsole extends EventEmitter8 {\n isVisible = false;\n isFocused = false;\n renderer;\n keyHandler;\n options;\n _debugModeEnabled = false;\n frameBuffer = null;\n consoleX = 0;\n consoleY = 0;\n consoleWidth = 0;\n consoleHeight = 0;\n scrollTopIndex = 0;\n isScrolledToBottom = true;\n currentLineIndex = 0;\n _displayLines = [];\n _allLogEntries = [];\n _needsFrameBufferUpdate = false;\n _entryListener;\n _selectionStart = null;\n _selectionEnd = null;\n _isDragging = false;\n _copyButtonBounds = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n _autoScrollInterval = null;\n _keyBindingsMap;\n _keyAliasMap;\n _keyBindings;\n _mergedKeyBindings;\n _actionHandlers;\n markNeedsRerender() {\n this._needsFrameBufferUpdate = true;\n this.renderer.requestRender();\n }\n getCopyButtonLabel() {\n const copyBindings = this._mergedKeyBindings.filter((b) => b.action === \"copy-selection\");\n const copyBinding = copyBindings[copyBindings.length - 1];\n if (copyBinding) {\n const shortcut = keyBindingToString(copyBinding);\n return `[Copy (${shortcut})]`;\n }\n return \"[Copy]\";\n }\n _rgbaInfo;\n _rgbaWarn;\n _rgbaError;\n _rgbaDebug;\n _rgbaDefault;\n backgroundColor;\n _rgbaTitleBar;\n _rgbaTitleBarText;\n _title;\n _rgbaCursor;\n _rgbaSelection;\n _rgbaCopyButton;\n _positions = [\n \"top\" /* TOP */,\n \"right\" /* RIGHT */,\n \"bottom\" /* BOTTOM */,\n \"left\" /* LEFT */\n ];\n constructor(renderer, options = {}) {\n super();\n this.renderer = renderer;\n this.options = { ...DEFAULT_CONSOLE_OPTIONS, ...options };\n this.keyHandler = this.handleKeyPress.bind(this);\n this._debugModeEnabled = this.options.startInDebugMode;\n terminalConsoleCache.setCollectCallerInfo(this._debugModeEnabled);\n this._rgbaInfo = parseColor(this.options.colorInfo);\n this._rgbaWarn = parseColor(this.options.colorWarn);\n this._rgbaError = parseColor(this.options.colorError);\n this._rgbaDebug = parseColor(this.options.colorDebug);\n this._rgbaDefault = parseColor(this.options.colorDefault);\n this.backgroundColor = parseColor(this.options.backgroundColor);\n this._rgbaTitleBar = parseColor(this.options.titleBarColor);\n this._rgbaTitleBarText = parseColor(this.options.titleBarTextColor || this.options.colorDefault);\n this._title = this.options.title;\n this._rgbaCursor = parseColor(this.options.cursorColor);\n this._rgbaSelection = parseColor(this.options.selectionColor);\n this._rgbaCopyButton = parseColor(this.options.copyButtonColor);\n this._keyAliasMap = mergeKeyAliases(defaultKeyAliases, options.keyAliasMap || {});\n this._keyBindings = options.keyBindings || [];\n this._mergedKeyBindings = mergeKeyBindings(defaultConsoleKeybindings, this._keyBindings);\n this._keyBindingsMap = buildKeyBindingsMap(this._mergedKeyBindings, this._keyAliasMap);\n this._actionHandlers = this.buildActionHandlers();\n this._updateConsoleDimensions();\n this._scrollToBottom(true);\n this._entryListener = (logEntry) => {\n this._handleNewLog(logEntry);\n };\n terminalConsoleCache.on(\"entry\", this._entryListener);\n if (env.SHOW_CONSOLE) {\n this.show();\n }\n }\n buildActionHandlers() {\n return new Map([\n [\"scroll-up\", () => this.scrollUp()],\n [\"scroll-down\", () => this.scrollDown()],\n [\"scroll-to-top\", () => this.scrollToTop()],\n [\"scroll-to-bottom\", () => this.scrollToBottomAction()],\n [\"position-previous\", () => this.positionPrevious()],\n [\"position-next\", () => this.positionNext()],\n [\"size-increase\", () => this.sizeIncrease()],\n [\"size-decrease\", () => this.sizeDecrease()],\n [\"save-logs\", () => this.saveLogsAction()],\n [\"copy-selection\", () => this.triggerCopyAction()]\n ]);\n }\n activate() {\n terminalConsoleCache.activate();\n }\n deactivate() {\n terminalConsoleCache.deactivate();\n }\n _handleNewLog(logEntry) {\n if (!this.isVisible)\n return;\n this._allLogEntries.push(logEntry);\n if (this._allLogEntries.length > this.options.maxStoredLogs) {\n this._allLogEntries.splice(0, this._allLogEntries.length - this.options.maxStoredLogs);\n }\n const newDisplayLines = this._processLogEntry(logEntry);\n this._displayLines.push(...newDisplayLines);\n if (this._displayLines.length > this.options.maxDisplayLines) {\n this._displayLines.splice(0, this._displayLines.length - this.options.maxDisplayLines);\n const linesRemoved = this._displayLines.length - this.options.maxDisplayLines;\n this.scrollTopIndex = Math.max(0, this.scrollTopIndex - linesRemoved);\n }\n if (this.isScrolledToBottom) {\n this._scrollToBottom();\n }\n this.markNeedsRerender();\n }\n _updateConsoleDimensions(termWidth, termHeight) {\n const width = termWidth ?? this.renderer.width;\n const height = termHeight ?? this.renderer.height;\n const sizePercent = this.options.sizePercent / 100;\n switch (this.options.position) {\n case \"top\" /* TOP */:\n this.consoleX = 0;\n this.consoleY = 0;\n this.consoleWidth = width;\n this.consoleHeight = Math.max(1, Math.floor(height * sizePercent));\n break;\n case \"bottom\" /* BOTTOM */:\n this.consoleHeight = Math.max(1, Math.floor(height * sizePercent));\n this.consoleWidth = width;\n this.consoleX = 0;\n this.consoleY = height - this.consoleHeight;\n break;\n case \"left\" /* LEFT */:\n this.consoleWidth = Math.max(1, Math.floor(width * sizePercent));\n this.consoleHeight = height;\n this.consoleX = 0;\n this.consoleY = 0;\n break;\n case \"right\" /* RIGHT */:\n this.consoleWidth = Math.max(1, Math.floor(width * sizePercent));\n this.consoleHeight = height;\n this.consoleY = 0;\n this.consoleX = width - this.consoleWidth;\n break;\n }\n this.currentLineIndex = Math.max(0, Math.min(this.currentLineIndex, this.consoleHeight - 1));\n }\n handleKeyPress(event) {\n if (event.name === \"escape\") {\n this.blur();\n return;\n }\n const bindingKey = getKeyBindingKey({\n name: event.name,\n ctrl: event.ctrl,\n shift: event.shift,\n meta: event.meta,\n super: event.super,\n action: \"scroll-up\"\n });\n const action = this._keyBindingsMap.get(bindingKey);\n if (action) {\n const handler = this._actionHandlers.get(action);\n if (handler) {\n handler();\n return;\n }\n }\n }\n scrollUp() {\n const logAreaHeight = Math.max(1, this.consoleHeight - 1);\n if (this.currentLineIndex > 0) {\n this.currentLineIndex--;\n this.markNeedsRerender();\n } else if (this.scrollTopIndex > 0) {\n this.scrollTopIndex--;\n this.isScrolledToBottom = false;\n this.markNeedsRerender();\n }\n return true;\n }\n scrollDown() {\n const displayLineCount = this._displayLines.length;\n const logAreaHeight = Math.max(1, this.consoleHeight - 1);\n const maxScrollTop = Math.max(0, displayLineCount - logAreaHeight);\n const canCursorMoveDown = this.currentLineIndex < logAreaHeight - 1 && this.scrollTopIndex + this.currentLineIndex < displayLineCount - 1;\n if (canCursorMoveDown) {\n this.currentLineIndex++;\n this.markNeedsRerender();\n } else if (this.scrollTopIndex < maxScrollTop) {\n this.scrollTopIndex++;\n this.isScrolledToBottom = this.scrollTopIndex === maxScrollTop;\n this.markNeedsRerender();\n }\n return true;\n }\n scrollToTop() {\n if (this.scrollTopIndex > 0 || this.currentLineIndex > 0) {\n this.scrollTopIndex = 0;\n this.currentLineIndex = 0;\n this.isScrolledToBottom = this._displayLines.length <= Math.max(1, this.consoleHeight - 1);\n this.markNeedsRerender();\n }\n return true;\n }\n scrollToBottomAction() {\n const logAreaHeightForScroll = Math.max(1, this.consoleHeight - 1);\n const maxScrollPossible = Math.max(0, this._displayLines.length - logAreaHeightForScroll);\n if (this.scrollTopIndex < maxScrollPossible || !this.isScrolledToBottom) {\n this._scrollToBottom(true);\n this.markNeedsRerender();\n }\n return true;\n }\n positionPrevious() {\n const currentPositionIndex = this._positions.indexOf(this.options.position);\n const prevIndex = (currentPositionIndex - 1 + this._positions.length) % this._positions.length;\n this.options.position = this._positions[prevIndex];\n this.resize(this.renderer.width, this.renderer.height);\n return true;\n }\n positionNext() {\n const currentPositionIndex = this._positions.indexOf(this.options.position);\n const nextIndex = (currentPositionIndex + 1) % this._positions.length;\n this.options.position = this._positions[nextIndex];\n this.resize(this.renderer.width, this.renderer.height);\n return true;\n }\n sizeIncrease() {\n this.options.sizePercent = Math.min(100, this.options.sizePercent + 5);\n this.resize(this.renderer.width, this.renderer.height);\n return true;\n }\n sizeDecrease() {\n this.options.sizePercent = Math.max(10, this.options.sizePercent - 5);\n this.resize(this.renderer.width, this.renderer.height);\n return true;\n }\n saveLogsAction() {\n this.saveLogsToFile();\n return true;\n }\n triggerCopyAction() {\n this.triggerCopy();\n return true;\n }\n attachStdin() {\n if (this.isFocused)\n return;\n this.renderer.keyInput.on(\"keypress\", this.keyHandler);\n this.isFocused = true;\n }\n detachStdin() {\n if (!this.isFocused)\n return;\n this.renderer.keyInput.off(\"keypress\", this.keyHandler);\n this.isFocused = false;\n }\n formatTimestamp(date) {\n return new Intl.DateTimeFormat(\"en-US\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n hour12: false\n }).format(date);\n }\n formatArguments(args) {\n return args.map((arg) => {\n if (arg instanceof Error) {\n const errorProps = arg;\n return `Error: ${errorProps.message}\n` + (errorProps.stack ? `${errorProps.stack}\n` : \"\");\n }\n if (typeof arg === \"object\" && arg !== null) {\n try {\n return util2.inspect(arg, { depth: 2 });\n } catch (e) {\n return String(arg);\n }\n }\n try {\n return util2.inspect(arg, { depth: 2 });\n } catch (e) {\n return String(arg);\n }\n }).join(\" \");\n }\n resize(width, height) {\n this._updateConsoleDimensions(width, height);\n if (this.frameBuffer) {\n this.frameBuffer.resize(this.consoleWidth, this.consoleHeight);\n const displayLineCount = this._displayLines.length;\n const logAreaHeight = Math.max(1, this.consoleHeight - 1);\n const maxScrollTop = Math.max(0, displayLineCount - logAreaHeight);\n this.scrollTopIndex = Math.min(this.scrollTopIndex, maxScrollTop);\n this.isScrolledToBottom = this.scrollTopIndex === maxScrollTop;\n const visibleLineCount = Math.min(logAreaHeight, displayLineCount - this.scrollTopIndex);\n this.currentLineIndex = Math.max(0, Math.min(this.currentLineIndex, visibleLineCount - 1));\n if (this.isVisible) {\n this.markNeedsRerender();\n }\n }\n }\n clear() {\n terminalConsoleCache.clearConsole();\n this._allLogEntries = [];\n this._displayLines = [];\n this.markNeedsRerender();\n }\n toggle() {\n if (this.isVisible) {\n if (this.isFocused) {\n this.hide();\n } else {\n this.focus();\n }\n } else {\n this.show();\n }\n if (!this.renderer.isRunning) {\n this.renderer.requestRender();\n }\n }\n focus() {\n this.attachStdin();\n this._scrollToBottom(true);\n this.markNeedsRerender();\n }\n blur() {\n this.detachStdin();\n this.markNeedsRerender();\n }\n show() {\n if (!this.isVisible) {\n this.isVisible = true;\n this._processCachedLogs();\n terminalConsoleCache.setCachingEnabled(false);\n if (!this.frameBuffer) {\n this.frameBuffer = OptimizedBuffer.create(this.consoleWidth, this.consoleHeight, this.renderer.widthMethod, {\n respectAlpha: this.backgroundColor.a < 1,\n id: \"console framebuffer\"\n });\n }\n const logCount = terminalConsoleCache.cachedLogs.length;\n const visibleLogLines = Math.min(this.consoleHeight, logCount);\n this.currentLineIndex = Math.max(0, visibleLogLines - 1);\n this.scrollTopIndex = 0;\n this._scrollToBottom(true);\n this.focus();\n this.markNeedsRerender();\n }\n }\n hide() {\n if (this.isVisible) {\n this.isVisible = false;\n this.blur();\n terminalConsoleCache.setCachingEnabled(true);\n }\n }\n destroy() {\n this.stopAutoScroll();\n this.hide();\n this.deactivate();\n terminalConsoleCache.off(\"entry\", this._entryListener);\n }\n getCachedLogs() {\n return terminalConsoleCache.cachedLogs.map((logEntry) => logEntry[0].toISOString() + \" \" + logEntry.slice(1).join(\" \")).join(`\n`);\n }\n updateFrameBuffer() {\n if (!this.frameBuffer)\n return;\n this.frameBuffer.clear(this.backgroundColor);\n const displayLines = this._displayLines;\n const displayLineCount = displayLines.length;\n const logAreaHeight = Math.max(1, this.consoleHeight - 1);\n this.frameBuffer.fillRect(0, 0, this.consoleWidth, 1, this._rgbaTitleBar);\n const dynamicTitle = `${this._title}${this.isFocused ? \" (Focused)\" : \"\"}`;\n const titleX = Math.max(0, Math.floor((this.consoleWidth - dynamicTitle.length) / 2));\n this.frameBuffer.drawText(dynamicTitle, titleX, 0, this._rgbaTitleBarText, this._rgbaTitleBar);\n const copyLabel = this.getCopyButtonLabel();\n const copyButtonX = this.consoleWidth - copyLabel.length - 1;\n if (copyButtonX >= 0) {\n const copyButtonEnabled = this.hasSelection();\n const disabledColor = RGBA.fromInts(100, 100, 100, 255);\n const copyColor = copyButtonEnabled ? this._rgbaCopyButton : disabledColor;\n this.frameBuffer.drawText(copyLabel, copyButtonX, 0, copyColor, this._rgbaTitleBar);\n this._copyButtonBounds = { x: copyButtonX, y: 0, width: copyLabel.length, height: 1 };\n } else {\n this._copyButtonBounds = { x: -1, y: -1, width: 0, height: 0 };\n }\n const startIndex = this.scrollTopIndex;\n const endIndex = Math.min(startIndex + logAreaHeight, displayLineCount);\n const visibleDisplayLines = displayLines.slice(startIndex, endIndex);\n let lineY = 1;\n for (let i = 0;i < visibleDisplayLines.length; i++) {\n if (lineY >= this.consoleHeight)\n break;\n const displayLine = visibleDisplayLines[i];\n const absoluteLineIndex = startIndex + i;\n let levelColor = this._rgbaDefault;\n switch (displayLine.level) {\n case \"INFO\" /* INFO */:\n levelColor = this._rgbaInfo;\n break;\n case \"WARN\" /* WARN */:\n levelColor = this._rgbaWarn;\n break;\n case \"ERROR\" /* ERROR */:\n levelColor = this._rgbaError;\n break;\n case \"DEBUG\" /* DEBUG */:\n levelColor = this._rgbaDebug;\n break;\n }\n const linePrefix = displayLine.indent ? \" \".repeat(INDENT_WIDTH) : \"\";\n const textToDraw = displayLine.text;\n const textAvailableWidth = this.consoleWidth - 1 - (displayLine.indent ? INDENT_WIDTH : 0);\n const showCursor = this.isFocused && lineY - 1 === this.currentLineIndex;\n if (showCursor) {\n this.frameBuffer.drawText(\">\", 0, lineY, this._rgbaCursor, this.backgroundColor);\n } else {\n this.frameBuffer.drawText(\" \", 0, lineY, this._rgbaDefault, this.backgroundColor);\n }\n const fullText = `${linePrefix}${textToDraw.substring(0, textAvailableWidth)}`;\n const selectionRange = this.getLineSelectionRange(absoluteLineIndex);\n if (selectionRange) {\n const adjustedStart = Math.max(0, selectionRange.start);\n const adjustedEnd = Math.min(fullText.length, selectionRange.end);\n if (adjustedStart > 0) {\n this.frameBuffer.drawText(fullText.substring(0, adjustedStart), 1, lineY, levelColor);\n }\n if (adjustedStart < adjustedEnd) {\n this.frameBuffer.fillRect(1 + adjustedStart, lineY, adjustedEnd - adjustedStart, 1, this._rgbaSelection);\n this.frameBuffer.drawText(fullText.substring(adjustedStart, adjustedEnd), 1 + adjustedStart, lineY, levelColor, this._rgbaSelection);\n }\n if (adjustedEnd < fullText.length) {\n this.frameBuffer.drawText(fullText.substring(adjustedEnd), 1 + adjustedEnd, lineY, levelColor);\n }\n } else {\n this.frameBuffer.drawText(fullText, 1, lineY, levelColor);\n }\n lineY++;\n }\n }\n renderToBuffer(buffer) {\n if (!this.isVisible || !this.frameBuffer)\n return;\n if (this._needsFrameBufferUpdate) {\n this.updateFrameBuffer();\n this._needsFrameBufferUpdate = false;\n }\n buffer.drawFrameBuffer(this.consoleX, this.consoleY, this.frameBuffer);\n }\n setDebugMode(enabled) {\n this._debugModeEnabled = enabled;\n terminalConsoleCache.setCollectCallerInfo(enabled);\n if (this.isVisible) {\n this.markNeedsRerender();\n }\n }\n toggleDebugMode() {\n this.setDebugMode(!this._debugModeEnabled);\n }\n set keyBindings(bindings) {\n this._keyBindings = bindings;\n this._mergedKeyBindings = mergeKeyBindings(defaultConsoleKeybindings, bindings);\n this._keyBindingsMap = buildKeyBindingsMap(this._mergedKeyBindings, this._keyAliasMap);\n this.markNeedsRerender();\n }\n set keyAliasMap(aliases) {\n this._keyAliasMap = mergeKeyAliases(defaultKeyAliases, aliases);\n this._mergedKeyBindings = mergeKeyBindings(defaultConsoleKeybindings, this._keyBindings);\n this._keyBindingsMap = buildKeyBindingsMap(this._mergedKeyBindings, this._keyAliasMap);\n this.markNeedsRerender();\n }\n set onCopySelection(callback) {\n this.options.onCopySelection = callback;\n }\n get onCopySelection() {\n return this.options.onCopySelection;\n }\n _scrollToBottom(forceCursorToLastLine = false) {\n const displayLineCount = this._displayLines.length;\n const logAreaHeight = Math.max(1, this.consoleHeight - 1);\n const maxScrollTop = Math.max(0, displayLineCount - logAreaHeight);\n this.scrollTopIndex = maxScrollTop;\n this.isScrolledToBottom = true;\n const visibleLineCount = Math.min(logAreaHeight, displayLineCount - this.scrollTopIndex);\n if (forceCursorToLastLine || this.currentLineIndex >= visibleLineCount) {\n this.currentLineIndex = Math.max(0, visibleLineCount - 1);\n }\n }\n _processLogEntry(logEntry) {\n const [date, level, args, callerInfo] = logEntry;\n const displayLines = [];\n const timestamp = this.formatTimestamp(date);\n const callerSource = callerInfo ? `${callerInfo.fileName}:${callerInfo.lineNumber}` : \"unknown\";\n const prefix = `[${timestamp}] [${level}]` + (this._debugModeEnabled ? ` [${callerSource}]` : \"\") + \" \";\n const formattedArgs = this.formatArguments(args);\n const initialLines = formattedArgs.split(`\n`);\n for (let i = 0;i < initialLines.length; i++) {\n const lineText = initialLines[i];\n const isFirstLineOfEntry = i === 0;\n const availableWidth = this.consoleWidth - 1 - (isFirstLineOfEntry ? 0 : INDENT_WIDTH);\n const linePrefix = isFirstLineOfEntry ? prefix : \" \".repeat(INDENT_WIDTH);\n const textToWrap = isFirstLineOfEntry ? linePrefix + lineText : lineText;\n let currentPos = 0;\n while (currentPos < textToWrap.length || isFirstLineOfEntry && currentPos === 0 && textToWrap.length === 0) {\n const segment = textToWrap.substring(currentPos, currentPos + availableWidth);\n const isFirstSegmentOfLine = currentPos === 0;\n displayLines.push({\n text: isFirstSegmentOfLine && !isFirstLineOfEntry ? linePrefix + segment : segment,\n level,\n indent: !isFirstLineOfEntry || !isFirstSegmentOfLine\n });\n currentPos += availableWidth;\n if (isFirstLineOfEntry && currentPos === 0 && textToWrap.length === 0)\n break;\n }\n }\n return displayLines;\n }\n _processCachedLogs() {\n const logsToProcess = [...terminalConsoleCache.cachedLogs];\n terminalConsoleCache.clearConsole();\n this._allLogEntries.push(...logsToProcess);\n if (this._allLogEntries.length > this.options.maxStoredLogs) {\n this._allLogEntries.splice(0, this._allLogEntries.length - this.options.maxStoredLogs);\n }\n for (const logEntry of logsToProcess) {\n const processed = this._processLogEntry(logEntry);\n this._displayLines.push(...processed);\n }\n if (this._displayLines.length > this.options.maxDisplayLines) {\n this._displayLines.splice(0, this._displayLines.length - this.options.maxDisplayLines);\n }\n }\n hasSelection() {\n if (this._selectionStart === null || this._selectionEnd === null)\n return false;\n return this._selectionStart.line !== this._selectionEnd.line || this._selectionStart.col !== this._selectionEnd.col;\n }\n normalizeSelection() {\n if (!this._selectionStart || !this._selectionEnd)\n return null;\n const start = this._selectionStart;\n const end = this._selectionEnd;\n const startBeforeEnd = start.line < end.line || start.line === end.line && start.col <= end.col;\n if (startBeforeEnd) {\n return {\n startLine: start.line,\n startCol: start.col,\n endLine: end.line,\n endCol: end.col\n };\n } else {\n return {\n startLine: end.line,\n startCol: end.col,\n endLine: start.line,\n endCol: start.col\n };\n }\n }\n getSelectedText() {\n const selection2 = this.normalizeSelection();\n if (!selection2)\n return \"\";\n const lines = [];\n for (let i = selection2.startLine;i <= selection2.endLine; i++) {\n if (i < 0 || i >= this._displayLines.length)\n continue;\n const line = this._displayLines[i];\n const linePrefix = line.indent ? \" \".repeat(INDENT_WIDTH) : \"\";\n const textAvailableWidth = this.consoleWidth - 1 - (line.indent ? INDENT_WIDTH : 0);\n const fullText = linePrefix + line.text.substring(0, textAvailableWidth);\n let text = fullText;\n if (i === selection2.startLine && i === selection2.endLine) {\n text = fullText.substring(selection2.startCol, selection2.endCol);\n } else if (i === selection2.startLine) {\n text = fullText.substring(selection2.startCol);\n } else if (i === selection2.endLine) {\n text = fullText.substring(0, selection2.endCol);\n }\n lines.push(text);\n }\n return lines.join(`\n`);\n }\n clearSelection() {\n this._selectionStart = null;\n this._selectionEnd = null;\n this._isDragging = false;\n this.stopAutoScroll();\n }\n stopAutoScroll() {\n if (this._autoScrollInterval !== null) {\n clearInterval(this._autoScrollInterval);\n this._autoScrollInterval = null;\n }\n }\n startAutoScroll(direction) {\n this.stopAutoScroll();\n this._autoScrollInterval = setInterval(() => {\n if (direction === \"up\") {\n if (this.scrollTopIndex > 0) {\n this.scrollTopIndex--;\n this.isScrolledToBottom = false;\n if (this._selectionEnd) {\n this._selectionEnd = {\n line: this.scrollTopIndex,\n col: this._selectionEnd.col\n };\n }\n this.markNeedsRerender();\n } else {\n this.stopAutoScroll();\n }\n } else {\n const displayLineCount = this._displayLines.length;\n const logAreaHeight = Math.max(1, this.consoleHeight - 1);\n const maxScrollTop = Math.max(0, displayLineCount - logAreaHeight);\n if (this.scrollTopIndex < maxScrollTop) {\n this.scrollTopIndex++;\n this.isScrolledToBottom = this.scrollTopIndex === maxScrollTop;\n if (this._selectionEnd) {\n const maxLine = this.scrollTopIndex + logAreaHeight - 1;\n this._selectionEnd = {\n line: Math.min(maxLine, displayLineCount - 1),\n col: this._selectionEnd.col\n };\n }\n this.markNeedsRerender();\n } else {\n this.stopAutoScroll();\n }\n }\n }, 50);\n }\n triggerCopy() {\n if (!this.hasSelection())\n return;\n const text = this.getSelectedText();\n if (text && this.options.onCopySelection) {\n try {\n this.options.onCopySelection(text);\n } catch {}\n this.clearSelection();\n this.markNeedsRerender();\n }\n }\n getLineSelectionRange(lineIndex) {\n const selection2 = this.normalizeSelection();\n if (!selection2)\n return null;\n if (lineIndex < selection2.startLine || lineIndex > selection2.endLine) {\n return null;\n }\n const line = this._displayLines[lineIndex];\n if (!line)\n return null;\n const linePrefix = line.indent ? \" \".repeat(INDENT_WIDTH) : \"\";\n const textAvailableWidth = this.consoleWidth - 1 - (line.indent ? INDENT_WIDTH : 0);\n const fullTextLength = linePrefix.length + Math.min(line.text.length, textAvailableWidth);\n let start = 0;\n let end = fullTextLength;\n if (lineIndex === selection2.startLine) {\n start = Math.max(0, selection2.startCol);\n }\n if (lineIndex === selection2.endLine) {\n end = Math.min(fullTextLength, selection2.endCol);\n }\n if (start >= end)\n return null;\n return { start, end };\n }\n handleMouse(event) {\n if (!this.isVisible)\n return false;\n const localX = event.x - this.consoleX;\n const localY = event.y - this.consoleY;\n if (localX < 0 || localX >= this.consoleWidth || localY < 0 || localY >= this.consoleHeight) {\n return false;\n }\n if (event.type === \"scroll\" && event.scroll) {\n if (event.scroll.direction === \"up\") {\n this.scrollUp();\n } else if (event.scroll.direction === \"down\") {\n this.scrollDown();\n }\n return true;\n }\n if (localY === 0) {\n if (event.type === \"down\" && event.button === 0 && localX >= this._copyButtonBounds.x && localX < this._copyButtonBounds.x + this._copyButtonBounds.width) {\n this.triggerCopy();\n return true;\n }\n return true;\n }\n const lineIndex = this.scrollTopIndex + (localY - 1);\n const colIndex = Math.max(0, localX - 1);\n if (event.type === \"down\" && event.button === 0) {\n this.clearSelection();\n this._selectionStart = { line: lineIndex, col: colIndex };\n this._selectionEnd = { line: lineIndex, col: colIndex };\n this._isDragging = true;\n this.markNeedsRerender();\n return true;\n }\n if (event.type === \"drag\" && this._isDragging) {\n this._selectionEnd = { line: lineIndex, col: colIndex };\n const logAreaHeight = Math.max(1, this.consoleHeight - 1);\n const relativeY = localY - 1;\n if (relativeY <= 0) {\n this.startAutoScroll(\"up\");\n } else if (relativeY >= logAreaHeight - 1) {\n this.startAutoScroll(\"down\");\n } else {\n this.stopAutoScroll();\n }\n this.markNeedsRerender();\n return true;\n }\n if (event.type === \"up\") {\n if (this._isDragging) {\n this._selectionEnd = { line: lineIndex, col: colIndex };\n this._isDragging = false;\n this.stopAutoScroll();\n this.markNeedsRerender();\n }\n return true;\n }\n return true;\n }\n get visible() {\n return this.isVisible;\n }\n get bounds() {\n return {\n x: this.consoleX,\n y: this.consoleY,\n width: this.consoleWidth,\n height: this.consoleHeight\n };\n }\n saveLogsToFile() {\n try {\n const timestamp = Date.now();\n const filename = `_console_${timestamp}.log`;\n const filepath = path4.join(process.cwd(), filename);\n const allLogEntries = [...this._allLogEntries, ...terminalConsoleCache.cachedLogs];\n const logLines = [];\n for (const [date, level, args, callerInfo] of allLogEntries) {\n const timestampStr = this.formatTimestamp(date);\n const callerSource = callerInfo ? `${callerInfo.fileName}:${callerInfo.lineNumber}` : \"unknown\";\n const prefix = `[${timestampStr}] [${level}]` + (this._debugModeEnabled ? ` [${callerSource}]` : \"\") + \" \";\n const formattedArgs = this.formatArguments(args);\n logLines.push(prefix + formattedArgs);\n }\n const content = logLines.join(`\n`);\n fs.writeFileSync(filepath, content, \"utf8\");\n console.info(`Console logs saved to: ${filename}`);\n } catch (error) {\n console.error(`Failed to save console logs:`, error);\n }\n }\n}\n\n// src/ansi.ts\nvar ANSI = {\n switchToAlternateScreen: \"\\x1B[?1049h\",\n switchToMainScreen: \"\\x1B[?1049l\",\n reset: \"\\x1B[0m\",\n scrollDown: (lines) => `\\x1B[${lines}T`,\n scrollUp: (lines) => `\\x1B[${lines}S`,\n moveCursor: (row, col) => `\\x1B[${row};${col}H`,\n moveCursorAndClear: (row, col) => `\\x1B[${row};${col}H\\x1B[J`,\n setRgbBackground: (r, g, b) => `\\x1B[48;2;${r};${g};${b}m`,\n resetBackground: \"\\x1B[49m\",\n bracketedPasteStart: \"\\x1B[200~\",\n bracketedPasteEnd: \"\\x1B[201~\"\n};\n\n// src/lib/clipboard.ts\nfunction encodeOsc52Payload(text, encoder2 = new TextEncoder) {\n const base64 = Buffer.from(text).toString(\"base64\");\n return encoder2.encode(base64);\n}\n\nclass Clipboard {\n lib;\n rendererPtr;\n constructor(lib, rendererPtr) {\n this.lib = lib;\n this.rendererPtr = rendererPtr;\n }\n copyToClipboardOSC52(text, target = 0 /* Clipboard */) {\n if (!this.isOsc52Supported()) {\n return false;\n }\n const payload = encodeOsc52Payload(text, this.lib.encoder);\n return this.lib.copyToClipboardOSC52(this.rendererPtr, target, payload);\n }\n clearClipboardOSC52(target = 0 /* Clipboard */) {\n if (!this.isOsc52Supported()) {\n return false;\n }\n return this.lib.clearClipboardOSC52(this.rendererPtr, target);\n }\n isOsc52Supported() {\n const caps = this.lib.getTerminalCapabilities(this.rendererPtr);\n return Boolean(caps?.osc52);\n }\n}\n\n// src/renderer.ts\nimport { EventEmitter as EventEmitter9 } from \"events\";\n\n// src/lib/objects-in-viewport.ts\nfunction getObjectsInViewport(viewport, objects, direction = \"column\", padding = 10, minTriggerSize = 16) {\n if (viewport.width <= 0 || viewport.height <= 0) {\n return [];\n }\n if (objects.length === 0) {\n return [];\n }\n if (objects.length < minTriggerSize) {\n return objects;\n }\n const viewportTop = viewport.y - padding;\n const viewportBottom = viewport.y + viewport.height + padding;\n const viewportLeft = viewport.x - padding;\n const viewportRight = viewport.x + viewport.width + padding;\n const isRow = direction === \"row\";\n const children = objects;\n const totalChildren = children.length;\n if (totalChildren === 0)\n return [];\n const vpStart = isRow ? viewportLeft : viewportTop;\n const vpEnd = isRow ? viewportRight : viewportBottom;\n let lo = 0;\n let hi = totalChildren - 1;\n let candidate = -1;\n while (lo <= hi) {\n const mid = lo + hi >> 1;\n const c = children[mid];\n const start = isRow ? c.x : c.y;\n const end = isRow ? c.x + c.width : c.y + c.height;\n if (end < vpStart) {\n lo = mid + 1;\n } else if (start > vpEnd) {\n hi = mid - 1;\n } else {\n candidate = mid;\n break;\n }\n }\n const visibleChildren = [];\n if (candidate === -1) {\n candidate = lo > 0 ? lo - 1 : 0;\n }\n const maxLookBehind = 50;\n let left = candidate;\n let gapCount = 0;\n while (left - 1 >= 0) {\n const prev = children[left - 1];\n const prevEnd = isRow ? prev.x + prev.width : prev.y + prev.height;\n if (prevEnd <= vpStart) {\n gapCount++;\n if (gapCount >= maxLookBehind) {\n break;\n }\n } else {\n gapCount = 0;\n }\n left--;\n }\n let right = candidate + 1;\n while (right < totalChildren) {\n const next = children[right];\n if ((isRow ? next.x : next.y) >= vpEnd)\n break;\n right++;\n }\n for (let i = left;i < right; i++) {\n const child = children[i];\n const start = isRow ? child.x : child.y;\n const end = isRow ? child.x + child.width : child.y + child.height;\n if (end <= vpStart)\n continue;\n if (start >= vpEnd)\n break;\n if (isRow) {\n const childBottom = child.y + child.height;\n if (childBottom < viewportTop)\n continue;\n const childTop = child.y;\n if (childTop > viewportBottom)\n continue;\n } else {\n const childRight = child.x + child.width;\n if (childRight < viewportLeft)\n continue;\n const childLeft = child.x;\n if (childLeft > viewportRight)\n continue;\n }\n visibleChildren.push(child);\n }\n if (visibleChildren.length > 1) {\n visibleChildren.sort((a, b) => a.zIndex > b.zIndex ? 1 : a.zIndex < b.zIndex ? -1 : 0);\n }\n return visibleChildren;\n}\n\n// src/lib/terminal-capability-detection.ts\nfunction isCapabilityResponse(sequence) {\n if (/\\x1b\\[\\?\\d+(?:;\\d+)*\\$y/.test(sequence)) {\n return true;\n }\n if (/\\x1b\\[1;(?!1R)\\d+R/.test(sequence)) {\n return true;\n }\n if (/\\x1bP>\\|[\\s\\S]*?\\x1b\\\\/.test(sequence)) {\n return true;\n }\n if (/\\x1b_G[\\s\\S]*?\\x1b\\\\/.test(sequence)) {\n return true;\n }\n if (/\\x1b\\[\\?\\d+(?:;\\d+)?u/.test(sequence)) {\n return true;\n }\n if (/\\x1b\\[\\?[0-9;]*c/.test(sequence)) {\n return true;\n }\n return false;\n}\nfunction isPixelResolutionResponse(sequence) {\n return /\\x1b\\[4;\\d+;\\d+t/.test(sequence);\n}\nfunction parsePixelResolution(sequence) {\n const match = sequence.match(/\\x1b\\[4;(\\d+);(\\d+)t/);\n if (match) {\n return {\n width: parseInt(match[2]),\n height: parseInt(match[1])\n };\n }\n return null;\n}\n\n// src/renderer.ts\nregisterEnvVar({\n name: \"OTUI_DUMP_CAPTURES\",\n description: \"Dump captured output when the renderer exits.\",\n type: \"boolean\",\n default: false\n});\nregisterEnvVar({\n name: \"OTUI_NO_NATIVE_RENDER\",\n description: \"Disable native rendering. This will not actually output ansi and is useful for debugging.\",\n type: \"boolean\",\n default: false\n});\nregisterEnvVar({\n name: \"OTUI_USE_ALTERNATE_SCREEN\",\n description: \"Whether to use the console. Will not capture console output if set to false.\",\n type: \"boolean\",\n default: true\n});\nregisterEnvVar({\n name: \"OTUI_OVERRIDE_STDOUT\",\n description: \"Override the stdout stream. This is useful for debugging.\",\n type: \"boolean\",\n default: true\n});\nregisterEnvVar({\n name: \"OTUI_DEBUG\",\n description: \"Enable debug mode to capture all raw input for debugging purposes.\",\n type: \"boolean\",\n default: false\n});\nregisterEnvVar({\n name: \"OTUI_SHOW_STATS\",\n description: \"Show the debug overlay at startup.\",\n type: \"boolean\",\n default: false\n});\nvar KITTY_FLAG_DISAMBIGUATE = 1;\nvar KITTY_FLAG_EVENT_TYPES = 2;\nvar KITTY_FLAG_ALTERNATE_KEYS = 4;\nvar KITTY_FLAG_ALL_KEYS_AS_ESCAPES = 8;\nvar KITTY_FLAG_REPORT_TEXT = 16;\nfunction buildKittyKeyboardFlags(config) {\n if (!config) {\n return 0;\n }\n let flags = 0;\n if (config.disambiguate !== false) {\n flags |= KITTY_FLAG_DISAMBIGUATE;\n }\n if (config.alternateKeys !== false) {\n flags |= KITTY_FLAG_ALTERNATE_KEYS;\n }\n if (config.events === true) {\n flags |= KITTY_FLAG_EVENT_TYPES;\n }\n if (config.allKeysAsEscapes === true) {\n flags |= KITTY_FLAG_ALL_KEYS_AS_ESCAPES;\n }\n if (config.reportText === true) {\n flags |= KITTY_FLAG_REPORT_TEXT;\n }\n return flags;\n}\n\nclass MouseEvent {\n type;\n button;\n x;\n y;\n source;\n modifiers;\n scroll;\n target;\n isDragging;\n _propagationStopped = false;\n _defaultPrevented = false;\n get propagationStopped() {\n return this._propagationStopped;\n }\n get defaultPrevented() {\n return this._defaultPrevented;\n }\n constructor(target, attributes) {\n this.target = target;\n this.type = attributes.type;\n this.button = attributes.button;\n this.x = attributes.x;\n this.y = attributes.y;\n this.modifiers = attributes.modifiers;\n this.scroll = attributes.scroll;\n this.source = attributes.source;\n this.isDragging = attributes.isDragging;\n }\n stopPropagation() {\n this._propagationStopped = true;\n }\n preventDefault() {\n this._defaultPrevented = true;\n }\n}\nvar MouseButton;\n((MouseButton2) => {\n MouseButton2[MouseButton2[\"LEFT\"] = 0] = \"LEFT\";\n MouseButton2[MouseButton2[\"MIDDLE\"] = 1] = \"MIDDLE\";\n MouseButton2[MouseButton2[\"RIGHT\"] = 2] = \"RIGHT\";\n MouseButton2[MouseButton2[\"WHEEL_UP\"] = 4] = \"WHEEL_UP\";\n MouseButton2[MouseButton2[\"WHEEL_DOWN\"] = 5] = \"WHEEL_DOWN\";\n})(MouseButton ||= {});\nvar rendererTracker = singleton(\"RendererTracker\", () => {\n const renderers = new Set;\n return {\n addRenderer: (renderer) => {\n renderers.add(renderer);\n },\n removeRenderer: (renderer) => {\n renderers.delete(renderer);\n if (renderers.size === 0) {\n process.stdin.pause();\n if (hasSingleton(\"tree-sitter-client\")) {\n getTreeSitterClient().destroy();\n destroySingleton(\"tree-sitter-client\");\n }\n }\n }\n };\n});\nasync function createCliRenderer(config = {}) {\n if (process.argv.includes(\"--delay-start\")) {\n await new Promise((resolve4) => setTimeout(resolve4, 5000));\n }\n const stdin = config.stdin || process.stdin;\n const stdout = config.stdout || process.stdout;\n const width = stdout.columns || 80;\n const height = stdout.rows || 24;\n const renderHeight = config.experimental_splitHeight && config.experimental_splitHeight > 0 ? config.experimental_splitHeight : height;\n const ziglib = resolveRenderLib();\n const rendererPtr = ziglib.createRenderer(width, renderHeight, { remote: config.remote ?? false });\n if (!rendererPtr) {\n throw new Error(\"Failed to create renderer\");\n }\n if (config.useThread === undefined) {\n config.useThread = true;\n }\n if (process.platform === \"linux\") {\n config.useThread = false;\n }\n ziglib.setUseThread(rendererPtr, config.useThread);\n const kittyConfig = config.useKittyKeyboard ?? {};\n const kittyFlags = buildKittyKeyboardFlags(kittyConfig);\n ziglib.setKittyKeyboardFlags(rendererPtr, kittyFlags);\n const renderer = new CliRenderer(ziglib, rendererPtr, stdin, stdout, width, height, config);\n await renderer.setupTerminal();\n return renderer;\n}\nvar CliRenderEvents;\n((CliRenderEvents2) => {\n CliRenderEvents2[\"DEBUG_OVERLAY_TOGGLE\"] = \"debugOverlay:toggle\";\n CliRenderEvents2[\"DESTROY\"] = \"destroy\";\n})(CliRenderEvents ||= {});\nvar RendererControlState;\n((RendererControlState2) => {\n RendererControlState2[\"IDLE\"] = \"idle\";\n RendererControlState2[\"AUTO_STARTED\"] = \"auto_started\";\n RendererControlState2[\"EXPLICIT_STARTED\"] = \"explicit_started\";\n RendererControlState2[\"EXPLICIT_PAUSED\"] = \"explicit_paused\";\n RendererControlState2[\"EXPLICIT_SUSPENDED\"] = \"explicit_suspended\";\n RendererControlState2[\"EXPLICIT_STOPPED\"] = \"explicit_stopped\";\n})(RendererControlState ||= {});\n\nclass CliRenderer extends EventEmitter9 {\n static animationFrameId = 0;\n lib;\n rendererPtr;\n stdin;\n stdout;\n exitOnCtrlC;\n exitSignals;\n _exitListenersAdded = false;\n _isDestroyed = false;\n _destroyPending = false;\n _destroyFinalized = false;\n nextRenderBuffer;\n currentRenderBuffer;\n _isRunning = false;\n targetFps = 30;\n maxFps = 60;\n automaticMemorySnapshot = false;\n memorySnapshotInterval;\n memorySnapshotTimer = null;\n lastMemorySnapshot = {\n heapUsed: 0,\n heapTotal: 0,\n arrayBuffers: 0\n };\n root;\n width;\n height;\n _useThread = false;\n gatherStats = false;\n frameTimes = [];\n maxStatSamples = 300;\n postProcessFns = [];\n backgroundColor = RGBA.fromInts(0, 0, 0, 0);\n waitingForPixelResolution = false;\n rendering = false;\n renderingNative = false;\n renderTimeout = null;\n lastTime = 0;\n frameCount = 0;\n lastFpsTime = 0;\n currentFps = 0;\n targetFrameTime = 1000 / this.targetFps;\n minTargetFrameTime = 1000 / this.maxFps;\n immediateRerenderRequested = false;\n updateScheduled = false;\n liveRequestCounter = 0;\n _controlState = \"idle\" /* IDLE */;\n frameCallbacks = [];\n renderStats = {\n frameCount: 0,\n fps: 0,\n renderTime: 0,\n frameCallbackTime: 0\n };\n debugOverlay = {\n enabled: env.OTUI_SHOW_STATS,\n corner: 3 /* bottomRight */\n };\n _console;\n _resolution = null;\n _keyHandler;\n _stdinBuffer;\n animationRequest = new Map;\n resizeTimeoutId = null;\n capabilityTimeoutId = null;\n resizeDebounceDelay = 100;\n enableMouseMovement = false;\n _useMouse = true;\n autoFocus = true;\n _useAlternateScreen = env.OTUI_USE_ALTERNATE_SCREEN;\n _suspendedMouseEnabled = false;\n _previousControlState = \"idle\" /* IDLE */;\n capturedRenderable;\n lastOverRenderableNum = 0;\n lastOverRenderable;\n currentSelection = null;\n selectionContainers = [];\n clipboard;\n _splitHeight = 0;\n renderOffset = 0;\n _terminalWidth = 0;\n _terminalHeight = 0;\n _terminalIsSetup = false;\n realStdoutWrite;\n captureCallback = () => {\n if (this._splitHeight > 0) {\n this.requestRender();\n }\n };\n _useConsole = true;\n mouseParser = new MouseParser;\n sigwinchHandler = (() => {\n const width = this.stdout.columns || 80;\n const height = this.stdout.rows || 24;\n this.handleResize(width, height);\n }).bind(this);\n _capabilities = null;\n _latestPointer = { x: 0, y: 0 };\n _hasPointer = false;\n _lastPointerModifiers = { shift: false, alt: false, ctrl: false };\n _currentMousePointerStyle = undefined;\n _currentFocusedRenderable = null;\n lifecyclePasses = new Set;\n _openConsoleOnError = true;\n _paletteDetector = null;\n _cachedPalette = null;\n _paletteDetectionPromise = null;\n _onDestroy;\n _themeMode = null;\n inputHandlers = [];\n prependedInputHandlers = [];\n idleResolvers = [];\n _debugInputs = [];\n _debugModeEnabled = env.OTUI_DEBUG;\n handleError = ((error) => {\n console.error(error);\n if (this._openConsoleOnError) {\n this.console.show();\n }\n }).bind(this);\n dumpOutputCache(optionalMessage = \"\") {\n const cachedLogs = this.console.getCachedLogs();\n const capturedOutput = capture.claimOutput();\n if (capturedOutput.length > 0 || cachedLogs.length > 0) {\n this.realStdoutWrite.call(this.stdout, optionalMessage);\n }\n if (cachedLogs.length > 0) {\n this.realStdoutWrite.call(this.stdout, `Console cache:\n`);\n this.realStdoutWrite.call(this.stdout, cachedLogs);\n }\n if (capturedOutput.length > 0) {\n this.realStdoutWrite.call(this.stdout, `\nCaptured output:\n`);\n this.realStdoutWrite.call(this.stdout, capturedOutput + `\n`);\n }\n this.realStdoutWrite.call(this.stdout, ANSI.reset);\n }\n exitHandler = (() => {\n this.destroy();\n if (env.OTUI_DUMP_CAPTURES) {\n Bun.sleep(100).then(() => {\n this.dumpOutputCache(`=== CAPTURED OUTPUT ===\n`);\n });\n }\n }).bind(this);\n warningHandler = ((warning) => {\n console.warn(JSON.stringify(warning.message, null, 2));\n }).bind(this);\n get controlState() {\n return this._controlState;\n }\n constructor(lib, rendererPtr, stdin, stdout, width, height, config = {}) {\n super();\n rendererTracker.addRenderer(this);\n this.stdin = stdin;\n this.stdout = stdout;\n this.realStdoutWrite = stdout.write;\n this.lib = lib;\n this._terminalWidth = stdout.columns ?? width;\n this._terminalHeight = stdout.rows ?? height;\n this.width = width;\n this.height = height;\n this._useThread = config.useThread === undefined ? false : config.useThread;\n this._splitHeight = config.experimental_splitHeight || 0;\n if (this._splitHeight > 0) {\n capture.on(\"write\", this.captureCallback);\n this.renderOffset = height - this._splitHeight;\n this.height = this._splitHeight;\n lib.setRenderOffset(rendererPtr, this.renderOffset);\n }\n this.rendererPtr = rendererPtr;\n this.exitOnCtrlC = config.exitOnCtrlC === undefined ? true : config.exitOnCtrlC;\n this.exitSignals = config.exitSignals || [\n \"SIGINT\",\n \"SIGTERM\",\n \"SIGQUIT\",\n \"SIGABRT\",\n \"SIGHUP\",\n \"SIGBREAK\",\n \"SIGPIPE\",\n \"SIGBUS\",\n \"SIGFPE\"\n ];\n this.clipboard = new Clipboard(this.lib, this.rendererPtr);\n this.resizeDebounceDelay = config.debounceDelay || 100;\n this.targetFps = config.targetFps || 30;\n this.maxFps = config.maxFps || 60;\n this.targetFrameTime = 1000 / this.targetFps;\n this.minTargetFrameTime = 1000 / this.maxFps;\n this.memorySnapshotInterval = config.memorySnapshotInterval ?? 0;\n this.gatherStats = config.gatherStats || false;\n this.maxStatSamples = config.maxStatSamples || 300;\n this.enableMouseMovement = config.enableMouseMovement ?? true;\n this._useMouse = config.useMouse ?? true;\n this.autoFocus = config.autoFocus ?? true;\n this._useAlternateScreen = config.useAlternateScreen ?? env.OTUI_USE_ALTERNATE_SCREEN;\n this.nextRenderBuffer = this.lib.getNextBuffer(this.rendererPtr);\n this.currentRenderBuffer = this.lib.getCurrentBuffer(this.rendererPtr);\n this.postProcessFns = config.postProcessFns || [];\n this.prependedInputHandlers = config.prependInputHandlers || [];\n this.root = new RootRenderable(this);\n if (this.memorySnapshotInterval > 0) {\n this.startMemorySnapshotTimer();\n }\n if (env.OTUI_OVERRIDE_STDOUT) {\n this.stdout.write = this.interceptStdoutWrite.bind(this);\n }\n process.on(\"SIGWINCH\", this.sigwinchHandler);\n process.on(\"warning\", this.warningHandler);\n process.on(\"uncaughtException\", this.handleError);\n process.on(\"unhandledRejection\", this.handleError);\n process.on(\"beforeExit\", this.exitHandler);\n const kittyConfig = config.useKittyKeyboard ?? {};\n const useKittyForParsing = kittyConfig !== null;\n this._keyHandler = new InternalKeyHandler(useKittyForParsing);\n this._keyHandler.on(\"keypress\", (event) => {\n if (this.exitOnCtrlC && event.name === \"c\" && event.ctrl) {\n process.nextTick(() => {\n this.destroy();\n });\n return;\n }\n });\n this.addExitListeners();\n this._stdinBuffer = new StdinBuffer({ timeout: 5 });\n this._console = new TerminalConsole(this, config.consoleOptions);\n this.useConsole = config.useConsole ?? true;\n this._openConsoleOnError = config.openConsoleOnError ?? true;\n this._onDestroy = config.onDestroy;\n global.requestAnimationFrame = (callback) => {\n const id = CliRenderer.animationFrameId++;\n this.animationRequest.set(id, callback);\n this.requestLive();\n return id;\n };\n global.cancelAnimationFrame = (handle) => {\n this.animationRequest.delete(handle);\n };\n const window = global.window;\n if (!window) {\n global.window = {};\n }\n global.window.requestAnimationFrame = requestAnimationFrame;\n if (env.OTUI_NO_NATIVE_RENDER) {\n this.renderNative = () => {\n if (this._splitHeight > 0) {\n this.flushStdoutCache(this._splitHeight);\n }\n };\n }\n this.setupInput();\n }\n addExitListeners() {\n if (this._exitListenersAdded || this.exitSignals.length === 0)\n return;\n this.exitSignals.forEach((signal) => {\n process.addListener(signal, this.exitHandler);\n });\n this._exitListenersAdded = true;\n }\n removeExitListeners() {\n if (!this._exitListenersAdded || this.exitSignals.length === 0)\n return;\n this.exitSignals.forEach((signal) => {\n process.removeListener(signal, this.exitHandler);\n });\n this._exitListenersAdded = false;\n }\n get isDestroyed() {\n return this._isDestroyed;\n }\n registerLifecyclePass(renderable) {\n this.lifecyclePasses.add(renderable);\n }\n unregisterLifecyclePass(renderable) {\n this.lifecyclePasses.delete(renderable);\n }\n getLifecyclePasses() {\n return this.lifecyclePasses;\n }\n get currentFocusedRenderable() {\n return this._currentFocusedRenderable;\n }\n focusRenderable(renderable) {\n if (this._currentFocusedRenderable === renderable)\n return;\n if (this._currentFocusedRenderable) {\n this._currentFocusedRenderable.blur();\n }\n this._currentFocusedRenderable = renderable;\n }\n setCapturedRenderable(renderable) {\n if (this.capturedRenderable === renderable) {\n return;\n }\n this.capturedRenderable = renderable;\n }\n addToHitGrid(x, y, width, height, id) {\n if (id !== this.capturedRenderable?.num) {\n this.lib.addToHitGrid(this.rendererPtr, x, y, width, height, id);\n }\n }\n pushHitGridScissorRect(x, y, width, height) {\n this.lib.hitGridPushScissorRect(this.rendererPtr, x, y, width, height);\n }\n popHitGridScissorRect() {\n this.lib.hitGridPopScissorRect(this.rendererPtr);\n }\n clearHitGridScissorRects() {\n this.lib.hitGridClearScissorRects(this.rendererPtr);\n }\n get widthMethod() {\n const caps = this.capabilities;\n return caps?.unicode === \"wcwidth\" ? \"wcwidth\" : \"unicode\";\n }\n writeOut(chunk, encoding, callback) {\n if (this.rendererPtr && this._useThread) {\n const data = typeof chunk === \"string\" ? chunk : chunk?.toString() ?? \"\";\n this.lib.writeOut(this.rendererPtr, data);\n if (typeof callback === \"function\") {\n process.nextTick(callback);\n }\n return true;\n }\n return this.realStdoutWrite.call(this.stdout, chunk, encoding, callback);\n }\n requestRender() {\n if (this._controlState === \"explicit_suspended\" /* EXPLICIT_SUSPENDED */) {\n return;\n }\n if (this._isRunning) {\n return;\n }\n if (this.rendering) {\n this.immediateRerenderRequested = true;\n return;\n }\n if (!this.updateScheduled && !this.renderTimeout) {\n this.updateScheduled = true;\n const now = Date.now();\n const elapsed = now - this.lastTime;\n const delay = Math.max(this.minTargetFrameTime - elapsed, 0);\n if (delay === 0) {\n process.nextTick(() => this.activateFrame());\n return;\n }\n setTimeout(() => this.activateFrame(), delay);\n }\n }\n async activateFrame() {\n await this.loop();\n this.updateScheduled = false;\n this.resolveIdleIfNeeded();\n }\n get useConsole() {\n return this._useConsole;\n }\n set useConsole(value) {\n this._useConsole = value;\n if (value) {\n this.console.activate();\n } else {\n this.console.deactivate();\n }\n }\n get isRunning() {\n return this._isRunning;\n }\n isIdleNow() {\n return !this._isRunning && !this.rendering && !this.renderTimeout && !this.updateScheduled && !this.immediateRerenderRequested;\n }\n resolveIdleIfNeeded() {\n if (!this.isIdleNow())\n return;\n const resolvers = this.idleResolvers.splice(0);\n for (const resolve4 of resolvers) {\n resolve4();\n }\n }\n idle() {\n if (this._isDestroyed)\n return Promise.resolve();\n if (this.isIdleNow())\n return Promise.resolve();\n return new Promise((resolve4) => {\n this.idleResolvers.push(resolve4);\n });\n }\n get resolution() {\n return this._resolution;\n }\n get console() {\n return this._console;\n }\n get keyInput() {\n return this._keyHandler;\n }\n get _internalKeyInput() {\n return this._keyHandler;\n }\n get terminalWidth() {\n return this._terminalWidth;\n }\n get terminalHeight() {\n return this._terminalHeight;\n }\n get useThread() {\n return this._useThread;\n }\n get useMouse() {\n return this._useMouse;\n }\n set useMouse(useMouse) {\n if (this._useMouse === useMouse)\n return;\n this._useMouse = useMouse;\n if (useMouse) {\n this.enableMouse();\n } else {\n this.disableMouse();\n }\n }\n get experimental_splitHeight() {\n return this._splitHeight;\n }\n get liveRequestCount() {\n return this.liveRequestCounter;\n }\n get currentControlState() {\n return this._controlState;\n }\n get capabilities() {\n return this._capabilities;\n }\n get themeMode() {\n return this._themeMode;\n }\n getDebugInputs() {\n return [...this._debugInputs];\n }\n get useKittyKeyboard() {\n return this.lib.getKittyKeyboardFlags(this.rendererPtr) > 0;\n }\n set useKittyKeyboard(use) {\n const flags = use ? KITTY_FLAG_DISAMBIGUATE | KITTY_FLAG_ALTERNATE_KEYS : 0;\n this.lib.setKittyKeyboardFlags(this.rendererPtr, flags);\n }\n set experimental_splitHeight(splitHeight) {\n if (splitHeight < 0)\n splitHeight = 0;\n const prevSplitHeight = this._splitHeight;\n if (splitHeight > 0) {\n this._splitHeight = splitHeight;\n this.renderOffset = this._terminalHeight - this._splitHeight;\n this.height = this._splitHeight;\n if (prevSplitHeight === 0) {\n this.useConsole = false;\n capture.on(\"write\", this.captureCallback);\n const freedLines = this._terminalHeight - this._splitHeight;\n const scrollDown = ANSI.scrollDown(freedLines);\n this.writeOut(scrollDown);\n } else if (prevSplitHeight > this._splitHeight) {\n const freedLines = prevSplitHeight - this._splitHeight;\n const scrollDown = ANSI.scrollDown(freedLines);\n this.writeOut(scrollDown);\n } else if (prevSplitHeight < this._splitHeight) {\n const additionalLines = this._splitHeight - prevSplitHeight;\n const scrollUp = ANSI.scrollUp(additionalLines);\n this.writeOut(scrollUp);\n }\n } else {\n if (prevSplitHeight > 0) {\n this.flushStdoutCache(this._terminalHeight, true);\n capture.off(\"write\", this.captureCallback);\n this.useConsole = true;\n }\n this._splitHeight = 0;\n this.renderOffset = 0;\n this.height = this._terminalHeight;\n }\n this.width = this._terminalWidth;\n this.lib.setRenderOffset(this.rendererPtr, this.renderOffset);\n this.lib.resizeRenderer(this.rendererPtr, this.width, this.height);\n this.nextRenderBuffer = this.lib.getNextBuffer(this.rendererPtr);\n this._console.resize(this.width, this.height);\n this.root.resize(this.width, this.height);\n this.emit(\"resize\", this.width, this.height);\n this.requestRender();\n }\n interceptStdoutWrite = (chunk, encoding, callback) => {\n const text = chunk.toString();\n capture.write(\"stdout\", text);\n if (this._splitHeight > 0) {\n this.requestRender();\n }\n if (typeof callback === \"function\") {\n process.nextTick(callback);\n }\n return true;\n };\n disableStdoutInterception() {\n this.stdout.write = this.realStdoutWrite;\n }\n flushStdoutCache(space, force = false) {\n if (capture.size === 0 && !force)\n return false;\n const output = capture.claimOutput();\n const rendererStartLine = this._terminalHeight - this._splitHeight;\n const flush = ANSI.moveCursorAndClear(rendererStartLine, 1);\n const outputLine = this._terminalHeight - this._splitHeight;\n const move = ANSI.moveCursor(outputLine, 1);\n let clear = \"\";\n if (space > 0) {\n const backgroundColor = this.backgroundColor.toInts();\n const newlines = \" \".repeat(this.width) + `\n`.repeat(space);\n if (backgroundColor[3] === 0) {\n clear = newlines;\n } else {\n clear = ANSI.setRgbBackground(backgroundColor[0], backgroundColor[1], backgroundColor[2]) + newlines + ANSI.resetBackground;\n }\n }\n this.writeOut(flush + move + output + clear);\n return true;\n }\n enableMouse() {\n this._useMouse = true;\n this.lib.enableMouse(this.rendererPtr, this.enableMouseMovement);\n }\n disableMouse() {\n this._useMouse = false;\n this.setCapturedRenderable(undefined);\n this.mouseParser.reset();\n this.lib.disableMouse(this.rendererPtr);\n }\n enableKittyKeyboard(flags = 3) {\n this.lib.enableKittyKeyboard(this.rendererPtr, flags);\n }\n disableKittyKeyboard() {\n this.lib.disableKittyKeyboard(this.rendererPtr);\n }\n set useThread(useThread) {\n this._useThread = useThread;\n this.lib.setUseThread(this.rendererPtr, useThread);\n }\n async setupTerminal() {\n if (this._terminalIsSetup)\n return;\n this._terminalIsSetup = true;\n this.lib.setupTerminal(this.rendererPtr, this._useAlternateScreen);\n this._capabilities = this.lib.getTerminalCapabilities(this.rendererPtr);\n if (this.debugOverlay.enabled) {\n this.lib.setDebugOverlay(this.rendererPtr, true, this.debugOverlay.corner);\n if (!this.memorySnapshotInterval) {\n this.memorySnapshotInterval = 3000;\n this.startMemorySnapshotTimer();\n this.automaticMemorySnapshot = true;\n }\n }\n this.capabilityTimeoutId = setTimeout(() => {\n this.capabilityTimeoutId = null;\n this.removeInputHandler(this.capabilityHandler);\n }, 5000);\n if (this._useMouse) {\n this.enableMouse();\n }\n this.queryPixelResolution();\n }\n stdinListener = ((data) => {\n if (this._useMouse && this.handleMouseData(data)) {\n return;\n }\n this._stdinBuffer.process(data);\n }).bind(this);\n addInputHandler(handler) {\n this.inputHandlers.push(handler);\n }\n prependInputHandler(handler) {\n this.inputHandlers.unshift(handler);\n }\n removeInputHandler(handler) {\n this.inputHandlers = this.inputHandlers.filter((h2) => h2 !== handler);\n }\n capabilityHandler = ((sequence) => {\n if (isCapabilityResponse(sequence)) {\n this.lib.processCapabilityResponse(this.rendererPtr, sequence);\n this._capabilities = this.lib.getTerminalCapabilities(this.rendererPtr);\n this.emit(\"capabilities\", this._capabilities);\n return true;\n }\n return false;\n }).bind(this);\n focusHandler = ((sequence) => {\n if (sequence === \"\\x1B[I\") {\n this.lib.restoreTerminalModes(this.rendererPtr);\n this.emit(\"focus\");\n return true;\n }\n if (sequence === \"\\x1B[O\") {\n this.emit(\"blur\");\n return true;\n }\n return false;\n }).bind(this);\n themeModeHandler = ((sequence) => {\n if (sequence === \"\\x1B[?997;1n\") {\n if (this._themeMode !== \"dark\") {\n this._themeMode = \"dark\";\n this.emit(\"theme_mode\", \"dark\");\n }\n return true;\n }\n if (sequence === \"\\x1B[?997;2n\") {\n if (this._themeMode !== \"light\") {\n this._themeMode = \"light\";\n this.emit(\"theme_mode\", \"light\");\n }\n return true;\n }\n return false;\n }).bind(this);\n setupInput() {\n for (const handler of this.prependedInputHandlers) {\n this.addInputHandler(handler);\n }\n this.addInputHandler((sequence) => {\n if (isPixelResolutionResponse(sequence) && this.waitingForPixelResolution) {\n const resolution = parsePixelResolution(sequence);\n if (resolution) {\n this._resolution = resolution;\n this.waitingForPixelResolution = false;\n }\n return true;\n }\n return false;\n });\n this.addInputHandler(this.capabilityHandler);\n this.addInputHandler(this.focusHandler);\n this.addInputHandler(this.themeModeHandler);\n this.addInputHandler((sequence) => {\n return this._keyHandler.processInput(sequence);\n });\n if (this.stdin.setRawMode) {\n this.stdin.setRawMode(true);\n }\n this.stdin.resume();\n this.stdin.setEncoding(\"utf8\");\n this.stdin.on(\"data\", this.stdinListener);\n this._stdinBuffer.on(\"data\", (sequence) => {\n if (this._debugModeEnabled) {\n this._debugInputs.push({\n timestamp: new Date().toISOString(),\n sequence\n });\n }\n for (const handler of this.inputHandlers) {\n if (handler(sequence)) {\n return;\n }\n }\n });\n this._stdinBuffer.on(\"paste\", (data) => {\n this._keyHandler.processPaste(data);\n });\n }\n dispatchMouseEvent(target, attributes) {\n const event = new MouseEvent(target, attributes);\n target.processMouseEvent(event);\n if (this.autoFocus && event.type === \"down\" && event.button === 0 /* LEFT */ && !event.defaultPrevented) {\n let current = target;\n while (current) {\n if (current.focusable) {\n current.focus();\n break;\n }\n current = current.parent;\n }\n }\n return event;\n }\n handleMouseData(data) {\n const mouseEvents = this.mouseParser.parseAllMouseEvents(data);\n if (mouseEvents.length === 0)\n return false;\n let anyHandled = false;\n for (const mouseEvent of mouseEvents) {\n if (this.processSingleMouseEvent(mouseEvent)) {\n anyHandled = true;\n }\n }\n return anyHandled;\n }\n processSingleMouseEvent(mouseEvent) {\n if (this._splitHeight > 0) {\n if (mouseEvent.y < this.renderOffset) {\n return false;\n }\n mouseEvent.y -= this.renderOffset;\n }\n this._latestPointer.x = mouseEvent.x;\n this._latestPointer.y = mouseEvent.y;\n this._hasPointer = true;\n this._lastPointerModifiers = mouseEvent.modifiers;\n if (this._console.visible) {\n const consoleBounds = this._console.bounds;\n if (mouseEvent.x >= consoleBounds.x && mouseEvent.x < consoleBounds.x + consoleBounds.width && mouseEvent.y >= consoleBounds.y && mouseEvent.y < consoleBounds.y + consoleBounds.height) {\n const event2 = new MouseEvent(null, mouseEvent);\n const handled = this._console.handleMouse(event2);\n if (handled)\n return true;\n }\n }\n if (mouseEvent.type === \"scroll\") {\n const maybeRenderableId2 = this.hitTest(mouseEvent.x, mouseEvent.y);\n const maybeRenderable2 = Renderable.renderablesByNumber.get(maybeRenderableId2);\n const fallbackTarget = this._currentFocusedRenderable && !this._currentFocusedRenderable.isDestroyed && this._currentFocusedRenderable.focused ? this._currentFocusedRenderable : null;\n const scrollTarget = maybeRenderable2 ?? fallbackTarget;\n if (scrollTarget) {\n const event2 = new MouseEvent(scrollTarget, mouseEvent);\n scrollTarget.processMouseEvent(event2);\n }\n return true;\n }\n const maybeRenderableId = this.hitTest(mouseEvent.x, mouseEvent.y);\n const sameElement = maybeRenderableId === this.lastOverRenderableNum;\n this.lastOverRenderableNum = maybeRenderableId;\n const maybeRenderable = Renderable.renderablesByNumber.get(maybeRenderableId);\n if (mouseEvent.type === \"down\" && mouseEvent.button === 0 /* LEFT */ && !this.currentSelection?.isDragging && !mouseEvent.modifiers.ctrl) {\n if (maybeRenderable && maybeRenderable.selectable && !maybeRenderable.isDestroyed && maybeRenderable.shouldStartSelection(mouseEvent.x, mouseEvent.y)) {\n this.startSelection(maybeRenderable, mouseEvent.x, mouseEvent.y);\n this.dispatchMouseEvent(maybeRenderable, mouseEvent);\n return true;\n }\n }\n if (mouseEvent.type === \"drag\" && this.currentSelection?.isDragging) {\n this.updateSelection(maybeRenderable, mouseEvent.x, mouseEvent.y);\n if (maybeRenderable) {\n const event2 = new MouseEvent(maybeRenderable, { ...mouseEvent, isDragging: true });\n maybeRenderable.processMouseEvent(event2);\n }\n return true;\n }\n if (mouseEvent.type === \"up\" && this.currentSelection?.isDragging) {\n if (maybeRenderable) {\n const event2 = new MouseEvent(maybeRenderable, { ...mouseEvent, isDragging: true });\n maybeRenderable.processMouseEvent(event2);\n }\n this.finishSelection();\n return true;\n }\n if (mouseEvent.type === \"down\" && mouseEvent.button === 0 /* LEFT */ && this.currentSelection) {\n if (mouseEvent.modifiers.ctrl) {\n this.currentSelection.isDragging = true;\n this.updateSelection(maybeRenderable, mouseEvent.x, mouseEvent.y);\n return true;\n }\n }\n if (!sameElement && (mouseEvent.type === \"drag\" || mouseEvent.type === \"move\")) {\n if (this.lastOverRenderable && this.lastOverRenderable !== this.capturedRenderable) {\n const event2 = new MouseEvent(this.lastOverRenderable, { ...mouseEvent, type: \"out\" });\n this.lastOverRenderable.processMouseEvent(event2);\n }\n this.lastOverRenderable = maybeRenderable;\n if (maybeRenderable) {\n const event2 = new MouseEvent(maybeRenderable, {\n ...mouseEvent,\n type: \"over\",\n source: this.capturedRenderable\n });\n maybeRenderable.processMouseEvent(event2);\n }\n }\n if (this.capturedRenderable && mouseEvent.type !== \"up\") {\n const event2 = new MouseEvent(this.capturedRenderable, mouseEvent);\n this.capturedRenderable.processMouseEvent(event2);\n return true;\n }\n if (this.capturedRenderable && mouseEvent.type === \"up\") {\n const event2 = new MouseEvent(this.capturedRenderable, { ...mouseEvent, type: \"drag-end\" });\n this.capturedRenderable.processMouseEvent(event2);\n this.capturedRenderable.processMouseEvent(new MouseEvent(this.capturedRenderable, mouseEvent));\n if (maybeRenderable) {\n const event3 = new MouseEvent(maybeRenderable, {\n ...mouseEvent,\n type: \"drop\",\n source: this.capturedRenderable\n });\n maybeRenderable.processMouseEvent(event3);\n }\n this.lastOverRenderable = this.capturedRenderable;\n this.lastOverRenderableNum = this.capturedRenderable.num;\n this.setCapturedRenderable(undefined);\n this.requestRender();\n }\n let event;\n if (maybeRenderable) {\n if (mouseEvent.type === \"drag\" && mouseEvent.button === 0 /* LEFT */) {\n this.setCapturedRenderable(maybeRenderable);\n } else {\n this.setCapturedRenderable(undefined);\n }\n event = this.dispatchMouseEvent(maybeRenderable, mouseEvent);\n } else {\n this.setCapturedRenderable(undefined);\n this.lastOverRenderable = undefined;\n }\n if (!event?.defaultPrevented && mouseEvent.type === \"down\" && this.currentSelection) {\n this.clearSelection();\n }\n return true;\n }\n recheckHoverState() {\n if (this._isDestroyed || !this._hasPointer)\n return;\n if (this.capturedRenderable)\n return;\n const hitId = this.hitTest(this._latestPointer.x, this._latestPointer.y);\n const hitRenderable = Renderable.renderablesByNumber.get(hitId);\n const lastOver = this.lastOverRenderable;\n if (lastOver?.num === hitId) {\n this.lastOverRenderableNum = hitId;\n return;\n }\n const baseEvent = {\n type: \"move\",\n button: 0,\n x: this._latestPointer.x,\n y: this._latestPointer.y,\n modifiers: this._lastPointerModifiers\n };\n if (lastOver) {\n const event = new MouseEvent(lastOver, { ...baseEvent, type: \"out\" });\n lastOver.processMouseEvent(event);\n }\n this.lastOverRenderable = hitRenderable;\n this.lastOverRenderableNum = hitId;\n if (hitRenderable) {\n const event = new MouseEvent(hitRenderable, {\n ...baseEvent,\n type: \"over\"\n });\n hitRenderable.processMouseEvent(event);\n }\n }\n setMousePointer(style) {\n this._currentMousePointerStyle = style;\n this.lib.setCursorStyleOptions(this.rendererPtr, { cursor: style });\n }\n hitTest(x, y) {\n return this.lib.checkHit(this.rendererPtr, x, y);\n }\n takeMemorySnapshot() {\n if (this._isDestroyed)\n return;\n const memoryUsage = process.memoryUsage();\n this.lastMemorySnapshot = {\n heapUsed: memoryUsage.heapUsed,\n heapTotal: memoryUsage.heapTotal,\n arrayBuffers: memoryUsage.arrayBuffers\n };\n this.lib.updateMemoryStats(this.rendererPtr, this.lastMemorySnapshot.heapUsed, this.lastMemorySnapshot.heapTotal, this.lastMemorySnapshot.arrayBuffers);\n this.emit(\"memory:snapshot\", this.lastMemorySnapshot);\n }\n startMemorySnapshotTimer() {\n this.stopMemorySnapshotTimer();\n this.memorySnapshotTimer = setInterval(() => {\n this.takeMemorySnapshot();\n }, this.memorySnapshotInterval);\n }\n stopMemorySnapshotTimer() {\n if (this.memorySnapshotTimer) {\n clearInterval(this.memorySnapshotTimer);\n this.memorySnapshotTimer = null;\n }\n }\n setMemorySnapshotInterval(interval) {\n this.memorySnapshotInterval = interval;\n if (this._isRunning && interval > 0) {\n this.startMemorySnapshotTimer();\n } else if (interval <= 0 && this.memorySnapshotTimer) {\n clearInterval(this.memorySnapshotTimer);\n this.memorySnapshotTimer = null;\n }\n }\n handleResize(width, height) {\n if (this._isDestroyed)\n return;\n if (this._splitHeight > 0) {\n this.processResize(width, height);\n return;\n }\n if (this.resizeTimeoutId !== null) {\n clearTimeout(this.resizeTimeoutId);\n this.resizeTimeoutId = null;\n }\n this.resizeTimeoutId = setTimeout(() => {\n this.resizeTimeoutId = null;\n this.processResize(width, height);\n }, this.resizeDebounceDelay);\n }\n queryPixelResolution() {\n this.waitingForPixelResolution = true;\n this.lib.queryPixelResolution(this.rendererPtr);\n }\n processResize(width, height) {\n if (width === this._terminalWidth && height === this._terminalHeight)\n return;\n const prevWidth = this._terminalWidth;\n this._terminalWidth = width;\n this._terminalHeight = height;\n this.queryPixelResolution();\n this.setCapturedRenderable(undefined);\n this.mouseParser.reset();\n if (this._splitHeight > 0) {\n if (width < prevWidth) {\n const start = this._terminalHeight - this._splitHeight * 2;\n const flush = ANSI.moveCursorAndClear(start, 1);\n this.writeOut(flush);\n }\n this.renderOffset = height - this._splitHeight;\n this.width = width;\n this.height = this._splitHeight;\n this.currentRenderBuffer.clear(this.backgroundColor);\n this.lib.setRenderOffset(this.rendererPtr, this.renderOffset);\n } else {\n this.width = width;\n this.height = height;\n }\n this.lib.resizeRenderer(this.rendererPtr, this.width, this.height);\n this.nextRenderBuffer = this.lib.getNextBuffer(this.rendererPtr);\n this.currentRenderBuffer = this.lib.getCurrentBuffer(this.rendererPtr);\n this._console.resize(this.width, this.height);\n this.root.resize(this.width, this.height);\n this.emit(\"resize\", this.width, this.height);\n this.requestRender();\n }\n setBackgroundColor(color) {\n const parsedColor = parseColor(color);\n this.lib.setBackgroundColor(this.rendererPtr, parsedColor);\n this.backgroundColor = parsedColor;\n this.nextRenderBuffer.clear(parsedColor);\n this.requestRender();\n }\n toggleDebugOverlay() {\n const willBeEnabled = !this.debugOverlay.enabled;\n if (willBeEnabled && !this.memorySnapshotInterval) {\n this.memorySnapshotInterval = 3000;\n this.startMemorySnapshotTimer();\n this.automaticMemorySnapshot = true;\n } else if (!willBeEnabled && this.automaticMemorySnapshot) {\n this.stopMemorySnapshotTimer();\n this.memorySnapshotInterval = 0;\n this.automaticMemorySnapshot = false;\n }\n this.debugOverlay.enabled = !this.debugOverlay.enabled;\n this.lib.setDebugOverlay(this.rendererPtr, this.debugOverlay.enabled, this.debugOverlay.corner);\n this.emit(\"debugOverlay:toggle\" /* DEBUG_OVERLAY_TOGGLE */, this.debugOverlay.enabled);\n this.requestRender();\n }\n configureDebugOverlay(options) {\n this.debugOverlay.enabled = options.enabled ?? this.debugOverlay.enabled;\n this.debugOverlay.corner = options.corner ?? this.debugOverlay.corner;\n this.lib.setDebugOverlay(this.rendererPtr, this.debugOverlay.enabled, this.debugOverlay.corner);\n this.requestRender();\n }\n setTerminalTitle(title) {\n this.lib.setTerminalTitle(this.rendererPtr, title);\n }\n copyToClipboardOSC52(text, target) {\n return this.clipboard.copyToClipboardOSC52(text, target);\n }\n clearClipboardOSC52(target) {\n return this.clipboard.clearClipboardOSC52(target);\n }\n isOsc52Supported() {\n return this._capabilities?.osc52 ?? this.clipboard.isOsc52Supported();\n }\n dumpHitGrid() {\n this.lib.dumpHitGrid(this.rendererPtr);\n }\n dumpBuffers(timestamp) {\n this.lib.dumpBuffers(this.rendererPtr, timestamp);\n }\n dumpStdoutBuffer(timestamp) {\n this.lib.dumpStdoutBuffer(this.rendererPtr, timestamp);\n }\n static setCursorPosition(renderer, x, y, visible = true) {\n const lib = resolveRenderLib();\n lib.setCursorPosition(renderer.rendererPtr, x, y, visible);\n }\n static setCursorStyle(renderer, options) {\n const lib = resolveRenderLib();\n lib.setCursorStyleOptions(renderer.rendererPtr, options);\n if (options.cursor !== undefined) {\n renderer._currentMousePointerStyle = options.cursor;\n }\n }\n static setCursorColor(renderer, color) {\n const lib = resolveRenderLib();\n lib.setCursorColor(renderer.rendererPtr, color);\n }\n setCursorPosition(x, y, visible = true) {\n this.lib.setCursorPosition(this.rendererPtr, x, y, visible);\n }\n setCursorStyle(options) {\n this.lib.setCursorStyleOptions(this.rendererPtr, options);\n if (options.cursor !== undefined) {\n this._currentMousePointerStyle = options.cursor;\n }\n }\n setCursorColor(color) {\n this.lib.setCursorColor(this.rendererPtr, color);\n }\n getCursorState() {\n return this.lib.getCursorState(this.rendererPtr);\n }\n addPostProcessFn(processFn) {\n this.postProcessFns.push(processFn);\n }\n removePostProcessFn(processFn) {\n this.postProcessFns = this.postProcessFns.filter((fn) => fn !== processFn);\n }\n clearPostProcessFns() {\n this.postProcessFns = [];\n }\n setFrameCallback(callback) {\n this.frameCallbacks.push(callback);\n }\n removeFrameCallback(callback) {\n this.frameCallbacks = this.frameCallbacks.filter((cb) => cb !== callback);\n }\n clearFrameCallbacks() {\n this.frameCallbacks = [];\n }\n requestLive() {\n this.liveRequestCounter++;\n if (this._controlState === \"idle\" /* IDLE */ && this.liveRequestCounter > 0) {\n this._controlState = \"auto_started\" /* AUTO_STARTED */;\n this.internalStart();\n }\n }\n dropLive() {\n this.liveRequestCounter = Math.max(0, this.liveRequestCounter - 1);\n if (this._controlState === \"auto_started\" /* AUTO_STARTED */ && this.liveRequestCounter === 0) {\n this._controlState = \"idle\" /* IDLE */;\n this.internalPause();\n }\n }\n start() {\n this._controlState = \"explicit_started\" /* EXPLICIT_STARTED */;\n this.internalStart();\n }\n auto() {\n this._controlState = this._isRunning ? \"auto_started\" /* AUTO_STARTED */ : \"idle\" /* IDLE */;\n }\n internalStart() {\n if (!this._isRunning && !this._isDestroyed) {\n this._isRunning = true;\n if (this.memorySnapshotInterval > 0) {\n this.startMemorySnapshotTimer();\n }\n this.startRenderLoop();\n }\n }\n pause() {\n this._controlState = \"explicit_paused\" /* EXPLICIT_PAUSED */;\n this.internalPause();\n }\n suspend() {\n this._previousControlState = this._controlState;\n this._controlState = \"explicit_suspended\" /* EXPLICIT_SUSPENDED */;\n this.internalPause();\n this._suspendedMouseEnabled = this._useMouse;\n this.disableMouse();\n this.removeExitListeners();\n this._stdinBuffer.clear();\n this.stdin.removeListener(\"data\", this.stdinListener);\n this.lib.suspendRenderer(this.rendererPtr);\n if (this.stdin.setRawMode) {\n this.stdin.setRawMode(false);\n }\n this.stdin.pause();\n }\n resume() {\n if (this.stdin.setRawMode) {\n this.stdin.setRawMode(true);\n }\n this.stdin.resume();\n this.addExitListeners();\n setImmediate(() => {\n while (this.stdin.read() !== null) {}\n this.stdin.on(\"data\", this.stdinListener);\n });\n this.lib.resumeRenderer(this.rendererPtr);\n if (this._suspendedMouseEnabled) {\n this.enableMouse();\n }\n this.currentRenderBuffer.clear(this.backgroundColor);\n this._controlState = this._previousControlState;\n if (this._previousControlState === \"auto_started\" /* AUTO_STARTED */ || this._previousControlState === \"explicit_started\" /* EXPLICIT_STARTED */) {\n this.internalStart();\n } else {\n this.requestRender();\n }\n }\n internalPause() {\n this._isRunning = false;\n }\n stop() {\n this._controlState = \"explicit_stopped\" /* EXPLICIT_STOPPED */;\n this.internalStop();\n }\n internalStop() {\n if (this.isRunning && !this._isDestroyed) {\n this._isRunning = false;\n if (this.memorySnapshotTimer) {\n clearInterval(this.memorySnapshotTimer);\n this.memorySnapshotTimer = null;\n }\n if (this.renderTimeout) {\n clearTimeout(this.renderTimeout);\n this.renderTimeout = null;\n }\n if (!this.rendering) {\n this.resolveIdleIfNeeded();\n }\n }\n }\n destroy() {\n if (this._isDestroyed)\n return;\n this._isDestroyed = true;\n this._destroyPending = true;\n if (this.rendering) {\n return;\n }\n this.finalizeDestroy();\n }\n finalizeDestroy() {\n if (this._destroyFinalized)\n return;\n this._destroyFinalized = true;\n this._destroyPending = false;\n process.removeListener(\"SIGWINCH\", this.sigwinchHandler);\n process.removeListener(\"uncaughtException\", this.handleError);\n process.removeListener(\"unhandledRejection\", this.handleError);\n process.removeListener(\"warning\", this.warningHandler);\n process.removeListener(\"beforeExit\", this.exitHandler);\n capture.removeListener(\"write\", this.captureCallback);\n this.removeExitListeners();\n if (this.resizeTimeoutId !== null) {\n clearTimeout(this.resizeTimeoutId);\n this.resizeTimeoutId = null;\n }\n if (this.capabilityTimeoutId !== null) {\n clearTimeout(this.capabilityTimeoutId);\n this.capabilityTimeoutId = null;\n }\n if (this.memorySnapshotTimer) {\n clearInterval(this.memorySnapshotTimer);\n }\n if (this._paletteDetector) {\n this._paletteDetector.cleanup();\n this._paletteDetector = null;\n }\n this._paletteDetectionPromise = null;\n this._cachedPalette = null;\n this.emit(\"destroy\" /* DESTROY */);\n if (this.renderTimeout) {\n clearTimeout(this.renderTimeout);\n this.renderTimeout = null;\n }\n this._isRunning = false;\n this.waitingForPixelResolution = false;\n this.setCapturedRenderable(undefined);\n try {\n this.root.destroyRecursively();\n } catch (e) {\n console.error(\"Error destroying root renderable:\", e instanceof Error ? e.stack : String(e));\n }\n this._stdinBuffer.destroy();\n this._console.destroy();\n this.disableStdoutInterception();\n if (this._splitHeight > 0) {\n this.flushStdoutCache(this._splitHeight, true);\n }\n if (this.stdin.setRawMode) {\n this.stdin.setRawMode(false);\n }\n this.stdin.removeListener(\"data\", this.stdinListener);\n this.lib.destroyRenderer(this.rendererPtr);\n rendererTracker.removeRenderer(this);\n if (this._onDestroy) {\n try {\n this._onDestroy();\n } catch (e) {\n console.error(\"Error in onDestroy callback:\", e instanceof Error ? e.stack : String(e));\n }\n }\n this.resolveIdleIfNeeded();\n }\n startRenderLoop() {\n if (!this._isRunning)\n return;\n this.lastTime = Date.now();\n this.frameCount = 0;\n this.lastFpsTime = this.lastTime;\n this.currentFps = 0;\n this.loop();\n }\n async loop() {\n if (this.rendering || this._isDestroyed)\n return;\n this.renderTimeout = null;\n this.rendering = true;\n if (this.renderTimeout) {\n clearTimeout(this.renderTimeout);\n this.renderTimeout = null;\n }\n try {\n const now = Date.now();\n const elapsed = now - this.lastTime;\n const deltaTime = elapsed;\n this.lastTime = now;\n this.frameCount++;\n if (now - this.lastFpsTime >= 1000) {\n this.currentFps = this.frameCount;\n this.frameCount = 0;\n this.lastFpsTime = now;\n }\n this.renderStats.frameCount++;\n this.renderStats.fps = this.currentFps;\n const overallStart = performance.now();\n const frameRequests = Array.from(this.animationRequest.values());\n this.animationRequest.clear();\n const animationRequestStart = performance.now();\n for (const callback of frameRequests) {\n callback(deltaTime);\n this.dropLive();\n }\n const animationRequestEnd = performance.now();\n const animationRequestTime = animationRequestEnd - animationRequestStart;\n const start = performance.now();\n for (const frameCallback of this.frameCallbacks) {\n try {\n await frameCallback(deltaTime);\n } catch (error) {\n console.error(\"Error in frame callback:\", error);\n }\n }\n const end = performance.now();\n this.renderStats.frameCallbackTime = end - start;\n this.root.render(this.nextRenderBuffer, deltaTime);\n for (const postProcessFn of this.postProcessFns) {\n postProcessFn(this.nextRenderBuffer, deltaTime);\n }\n this._console.renderToBuffer(this.nextRenderBuffer);\n if (!this._isDestroyed) {\n this.renderNative();\n if (this._useMouse && this.lib.getHitGridDirty(this.rendererPtr)) {\n this.recheckHoverState();\n }\n const overallFrameTime = performance.now() - overallStart;\n this.lib.updateStats(this.rendererPtr, overallFrameTime, this.renderStats.fps, this.renderStats.frameCallbackTime);\n if (this.gatherStats) {\n this.collectStatSample(overallFrameTime);\n }\n if (this._isRunning || this.immediateRerenderRequested) {\n const targetFrameTime = this.immediateRerenderRequested ? this.minTargetFrameTime : this.targetFrameTime;\n const delay = Math.max(1, targetFrameTime - Math.floor(overallFrameTime));\n this.immediateRerenderRequested = false;\n this.renderTimeout = setTimeout(() => {\n this.renderTimeout = null;\n this.loop();\n }, delay);\n } else {\n clearTimeout(this.renderTimeout);\n this.renderTimeout = null;\n }\n }\n } finally {\n this.rendering = false;\n if (this._destroyPending) {\n this.finalizeDestroy();\n }\n this.resolveIdleIfNeeded();\n }\n }\n intermediateRender() {\n this.immediateRerenderRequested = true;\n this.loop();\n }\n renderNative() {\n if (this.renderingNative) {\n console.error(\"Rendering called concurrently\");\n throw new Error(\"Rendering called concurrently\");\n }\n let force = false;\n if (this._splitHeight > 0) {\n force = this.flushStdoutCache(this._splitHeight);\n }\n this.renderingNative = true;\n this.lib.render(this.rendererPtr, force);\n this.renderingNative = false;\n }\n collectStatSample(frameTime) {\n this.frameTimes.push(frameTime);\n if (this.frameTimes.length > this.maxStatSamples) {\n this.frameTimes.shift();\n }\n }\n getStats() {\n const frameTimes = [...this.frameTimes];\n const sum = frameTimes.reduce((acc, time) => acc + time, 0);\n const avg = frameTimes.length ? sum / frameTimes.length : 0;\n const min = frameTimes.length ? Math.min(...frameTimes) : 0;\n const max = frameTimes.length ? Math.max(...frameTimes) : 0;\n return {\n fps: this.renderStats.fps,\n frameCount: this.renderStats.frameCount,\n frameTimes,\n averageFrameTime: avg,\n minFrameTime: min,\n maxFrameTime: max\n };\n }\n resetStats() {\n this.frameTimes = [];\n this.renderStats.frameCount = 0;\n }\n setGatherStats(enabled) {\n this.gatherStats = enabled;\n if (!enabled) {\n this.frameTimes = [];\n }\n }\n getSelection() {\n return this.currentSelection;\n }\n get hasSelection() {\n return !!this.currentSelection;\n }\n getSelectionContainer() {\n return this.selectionContainers.length > 0 ? this.selectionContainers[this.selectionContainers.length - 1] : null;\n }\n clearSelection() {\n if (this.currentSelection) {\n for (const renderable of this.currentSelection.touchedRenderables) {\n if (renderable.selectable && !renderable.isDestroyed) {\n renderable.onSelectionChanged(null);\n }\n }\n this.currentSelection = null;\n }\n this.selectionContainers = [];\n }\n startSelection(renderable, x, y) {\n if (!renderable.selectable)\n return;\n this.clearSelection();\n this.selectionContainers.push(renderable.parent || this.root);\n this.currentSelection = new Selection(renderable, { x, y }, { x, y });\n this.currentSelection.isStart = true;\n this.notifySelectablesOfSelectionChange();\n }\n updateSelection(currentRenderable, x, y, options) {\n if (this.currentSelection) {\n this.currentSelection.isStart = false;\n this.currentSelection.focus = { x, y };\n if (options?.finishDragging) {\n this.currentSelection.isDragging = false;\n }\n if (this.selectionContainers.length > 0) {\n const currentContainer = this.selectionContainers[this.selectionContainers.length - 1];\n if (!currentRenderable || !this.isWithinContainer(currentRenderable, currentContainer)) {\n const parentContainer = currentContainer.parent || this.root;\n this.selectionContainers.push(parentContainer);\n } else if (currentRenderable && this.selectionContainers.length > 1) {\n let containerIndex = this.selectionContainers.indexOf(currentRenderable);\n if (containerIndex === -1) {\n const immediateParent = currentRenderable.parent || this.root;\n containerIndex = this.selectionContainers.indexOf(immediateParent);\n }\n if (containerIndex !== -1 && containerIndex < this.selectionContainers.length - 1) {\n this.selectionContainers = this.selectionContainers.slice(0, containerIndex + 1);\n }\n }\n }\n this.notifySelectablesOfSelectionChange();\n }\n }\n requestSelectionUpdate() {\n if (this.currentSelection?.isDragging) {\n const pointer = this._latestPointer;\n const maybeRenderableId = this.hitTest(pointer.x, pointer.y);\n const maybeRenderable = Renderable.renderablesByNumber.get(maybeRenderableId);\n this.updateSelection(maybeRenderable, pointer.x, pointer.y);\n }\n }\n isWithinContainer(renderable, container) {\n let current = renderable;\n while (current) {\n if (current === container)\n return true;\n current = current.parent;\n }\n return false;\n }\n finishSelection() {\n if (this.currentSelection) {\n this.currentSelection.isDragging = false;\n this.emit(\"selection\", this.currentSelection);\n this.notifySelectablesOfSelectionChange();\n }\n }\n notifySelectablesOfSelectionChange() {\n const selectedRenderables = [];\n const touchedRenderables = [];\n const currentContainer = this.selectionContainers.length > 0 ? this.selectionContainers[this.selectionContainers.length - 1] : this.root;\n if (this.currentSelection) {\n this.walkSelectableRenderables(currentContainer, this.currentSelection.bounds, selectedRenderables, touchedRenderables);\n for (const renderable of this.currentSelection.touchedRenderables) {\n if (!touchedRenderables.includes(renderable) && !renderable.isDestroyed) {\n renderable.onSelectionChanged(null);\n }\n }\n this.currentSelection.updateSelectedRenderables(selectedRenderables);\n this.currentSelection.updateTouchedRenderables(touchedRenderables);\n }\n }\n walkSelectableRenderables(container, selectionBounds, selectedRenderables, touchedRenderables) {\n const children = getObjectsInViewport(selectionBounds, container.getChildrenSortedByPrimaryAxis(), container.primaryAxis, 0, 0);\n for (const child of children) {\n if (child.selectable) {\n const hasSelection = child.onSelectionChanged(this.currentSelection);\n if (hasSelection) {\n selectedRenderables.push(child);\n }\n touchedRenderables.push(child);\n }\n if (child.getChildrenCount() > 0) {\n this.walkSelectableRenderables(child, selectionBounds, selectedRenderables, touchedRenderables);\n }\n }\n }\n get paletteDetectionStatus() {\n if (this._cachedPalette)\n return \"cached\";\n if (this._paletteDetectionPromise)\n return \"detecting\";\n return \"idle\";\n }\n clearPaletteCache() {\n this._cachedPalette = null;\n }\n async getPalette(options) {\n if (this._controlState === \"explicit_suspended\" /* EXPLICIT_SUSPENDED */) {\n throw new Error(\"Cannot detect palette while renderer is suspended\");\n }\n const requestedSize = options?.size ?? 16;\n if (this._cachedPalette && this._cachedPalette.palette.length !== requestedSize) {\n this._cachedPalette = null;\n }\n if (this._cachedPalette) {\n return this._cachedPalette;\n }\n if (this._paletteDetectionPromise) {\n return this._paletteDetectionPromise;\n }\n if (!this._paletteDetector) {\n const isLegacyTmux = this.capabilities?.terminal?.name?.toLowerCase()?.includes(\"tmux\") && this.capabilities?.terminal?.version?.localeCompare(\"3.6\") < 0;\n this._paletteDetector = createTerminalPalette(this.stdin, this.stdout, this.writeOut.bind(this), isLegacyTmux);\n }\n this._paletteDetectionPromise = this._paletteDetector.detect(options).then((result) => {\n this._cachedPalette = result;\n this._paletteDetectionPromise = null;\n return result;\n });\n return this._paletteDetectionPromise;\n }\n}\n\nexport { __toESM, __commonJS, __export, __require, Edge, Gutter, MeasureMode, exports_src, isValidBorderStyle, parseBorderStyle, BorderChars, getBorderFromSides, getBorderSides, borderCharsToArray, BorderCharArrays, nonAlphanumericKeys, parseKeypress, KeyEvent, PasteEvent, KeyHandler, InternalKeyHandler, RGBA, hexToRgb, rgbToHex, hsvToRgb, parseColor, fonts, measureText, getCharacterPositions, coordinateToCharacterIndex, renderFontToFrameBuffer, TextAttributes, ATTRIBUTE_BASE_BITS, ATTRIBUTE_BASE_MASK, getBaseAttributes, DebugOverlayCorner, createTextAttributes, attributesWithLink, getLinkId, visualizeRenderableTree, isStyledText, StyledText, stringToStyledText, black, red, green, yellow, blue, magenta, cyan, white, brightBlack, brightRed, brightGreen, brightYellow, brightBlue, brightMagenta, brightCyan, brightWhite, bgBlack, bgRed, bgGreen, bgYellow, bgBlue, bgMagenta, bgCyan, bgWhite, bold, italic, underline, strikethrough, dim, reverse, blink, fg, bg, link, t, hastToStyledText, LinearScrollAccel, MacOSScrollAccel, StdinBuffer, parseAlign, parseAlignItems, parseBoxSizing, parseDimension, parseDirection, parseDisplay, parseEdge, parseFlexDirection, parseGutter, parseJustify, parseLogLevel, parseMeasureMode, parseOverflow, parsePositionType, parseUnit, parseWrap, MouseParser, Selection, convertGlobalToLocalSelection, ASCIIFontSelectionHelper, envRegistry, registerEnvVar, clearEnvCache, generateEnvMarkdown, generateEnvColored, env, treeSitterToTextChunks, treeSitterToStyledText, addDefaultParsers, TreeSitterClient, DataPathsManager, getDataPaths, extToFiletype, pathToFiletype, main, getTreeSitterClient, ExtmarksController, createExtmarksController, TerminalPalette, createTerminalPalette, TextBuffer, SpanInfoStruct, LogLevel2 as LogLevel, setRenderLibPath, resolveRenderLib, OptimizedBuffer, h, isVNode, maybeMakeRenderable, wrapWithDelegates, instantiate, delegate, isValidPercentage, LayoutEvents, RenderableEvents, isRenderable, BaseRenderable, Renderable, RootRenderable, ANSI, defaultKeyAliases, mergeKeyAliases, mergeKeyBindings, getKeyBindingKey, buildKeyBindingsMap, capture, ConsolePosition, TerminalConsole, getObjectsInViewport, buildKittyKeyboardFlags, MouseEvent, MouseButton, createCliRenderer, CliRenderEvents, RendererControlState, CliRenderer };\n\n//# debugId=130B8D293012A10764756E2164756E21\n//# sourceMappingURL=index-vnvba6q9.js.map\n",
6
+ "// @bun\nimport {\n ASCIIFontSelectionHelper,\n ATTRIBUTE_BASE_BITS,\n ATTRIBUTE_BASE_MASK,\n BaseRenderable,\n BorderCharArrays,\n BorderChars,\n CliRenderEvents,\n CliRenderer,\n ConsolePosition,\n DataPathsManager,\n DebugOverlayCorner,\n Edge,\n ExtmarksController,\n Gutter,\n InternalKeyHandler,\n KeyEvent,\n KeyHandler,\n LayoutEvents,\n LinearScrollAccel,\n LogLevel,\n MacOSScrollAccel,\n MeasureMode,\n MouseButton,\n MouseEvent,\n MouseParser,\n OptimizedBuffer,\n PasteEvent,\n RGBA,\n Renderable,\n RenderableEvents,\n RendererControlState,\n RootRenderable,\n Selection,\n SpanInfoStruct,\n StdinBuffer,\n StyledText,\n TerminalConsole,\n TerminalPalette,\n TextAttributes,\n TextBuffer,\n TreeSitterClient,\n addDefaultParsers,\n attributesWithLink,\n bg,\n bgBlack,\n bgBlue,\n bgCyan,\n bgGreen,\n bgMagenta,\n bgRed,\n bgWhite,\n bgYellow,\n black,\n blink,\n blue,\n bold,\n borderCharsToArray,\n brightBlack,\n brightBlue,\n brightCyan,\n brightGreen,\n brightMagenta,\n brightRed,\n brightWhite,\n brightYellow,\n buildKeyBindingsMap,\n buildKittyKeyboardFlags,\n capture,\n clearEnvCache,\n convertGlobalToLocalSelection,\n coordinateToCharacterIndex,\n createCliRenderer,\n createExtmarksController,\n createTerminalPalette,\n createTextAttributes,\n cyan,\n defaultKeyAliases,\n delegate,\n dim,\n env,\n envRegistry,\n exports_src,\n extToFiletype,\n fg,\n fonts,\n generateEnvColored,\n generateEnvMarkdown,\n getBaseAttributes,\n getBorderFromSides,\n getBorderSides,\n getCharacterPositions,\n getDataPaths,\n getKeyBindingKey,\n getLinkId,\n getObjectsInViewport,\n getTreeSitterClient,\n green,\n h,\n hastToStyledText,\n hexToRgb,\n hsvToRgb,\n instantiate,\n isRenderable,\n isStyledText,\n isVNode,\n isValidBorderStyle,\n isValidPercentage,\n italic,\n link,\n magenta,\n main,\n maybeMakeRenderable,\n measureText,\n mergeKeyAliases,\n mergeKeyBindings,\n nonAlphanumericKeys,\n parseAlign,\n parseAlignItems,\n parseBorderStyle,\n parseBoxSizing,\n parseColor,\n parseDimension,\n parseDirection,\n parseDisplay,\n parseEdge,\n parseFlexDirection,\n parseGutter,\n parseJustify,\n parseKeypress,\n parseLogLevel,\n parseMeasureMode,\n parseOverflow,\n parsePositionType,\n parseUnit,\n parseWrap,\n pathToFiletype,\n red,\n registerEnvVar,\n renderFontToFrameBuffer,\n resolveRenderLib,\n reverse,\n rgbToHex,\n setRenderLibPath,\n strikethrough,\n stringToStyledText,\n t,\n treeSitterToStyledText,\n treeSitterToTextChunks,\n underline,\n visualizeRenderableTree,\n white,\n wrapWithDelegates,\n yellow\n} from \"./index-vnvba6q9.js\";\n// src/text-buffer-view.ts\nclass TextBufferView {\n lib;\n viewPtr;\n textBuffer;\n _destroyed = false;\n constructor(lib, ptr, textBuffer) {\n this.lib = lib;\n this.viewPtr = ptr;\n this.textBuffer = textBuffer;\n }\n static create(textBuffer) {\n const lib = resolveRenderLib();\n const viewPtr = lib.createTextBufferView(textBuffer.ptr);\n return new TextBufferView(lib, viewPtr, textBuffer);\n }\n guard() {\n if (this._destroyed)\n throw new Error(\"TextBufferView is destroyed\");\n }\n get ptr() {\n this.guard();\n return this.viewPtr;\n }\n setSelection(start, end, bgColor, fgColor) {\n this.guard();\n this.lib.textBufferViewSetSelection(this.viewPtr, start, end, bgColor || null, fgColor || null);\n }\n updateSelection(end, bgColor, fgColor) {\n this.guard();\n this.lib.textBufferViewUpdateSelection(this.viewPtr, end, bgColor || null, fgColor || null);\n }\n resetSelection() {\n this.guard();\n this.lib.textBufferViewResetSelection(this.viewPtr);\n }\n getSelection() {\n this.guard();\n return this.lib.textBufferViewGetSelection(this.viewPtr);\n }\n hasSelection() {\n this.guard();\n return this.getSelection() !== null;\n }\n setLocalSelection(anchorX, anchorY, focusX, focusY, bgColor, fgColor) {\n this.guard();\n return this.lib.textBufferViewSetLocalSelection(this.viewPtr, anchorX, anchorY, focusX, focusY, bgColor || null, fgColor || null);\n }\n updateLocalSelection(anchorX, anchorY, focusX, focusY, bgColor, fgColor) {\n this.guard();\n return this.lib.textBufferViewUpdateLocalSelection(this.viewPtr, anchorX, anchorY, focusX, focusY, bgColor || null, fgColor || null);\n }\n resetLocalSelection() {\n this.guard();\n this.lib.textBufferViewResetLocalSelection(this.viewPtr);\n }\n setWrapWidth(width) {\n this.guard();\n this.lib.textBufferViewSetWrapWidth(this.viewPtr, width ?? 0);\n }\n setWrapMode(mode) {\n this.guard();\n this.lib.textBufferViewSetWrapMode(this.viewPtr, mode);\n }\n setViewportSize(width, height) {\n this.guard();\n this.lib.textBufferViewSetViewportSize(this.viewPtr, width, height);\n }\n setViewport(x, y, width, height) {\n this.guard();\n this.lib.textBufferViewSetViewport(this.viewPtr, x, y, width, height);\n }\n get lineInfo() {\n this.guard();\n return this.lib.textBufferViewGetLineInfo(this.viewPtr);\n }\n get logicalLineInfo() {\n this.guard();\n return this.lib.textBufferViewGetLogicalLineInfo(this.viewPtr);\n }\n getSelectedText() {\n this.guard();\n const byteSize = this.textBuffer.byteSize;\n if (byteSize === 0)\n return \"\";\n const selectedBytes = this.lib.textBufferViewGetSelectedTextBytes(this.viewPtr, byteSize);\n if (!selectedBytes)\n return \"\";\n return this.lib.decoder.decode(selectedBytes);\n }\n getPlainText() {\n this.guard();\n const byteSize = this.textBuffer.byteSize;\n if (byteSize === 0)\n return \"\";\n const plainBytes = this.lib.textBufferViewGetPlainTextBytes(this.viewPtr, byteSize);\n if (!plainBytes)\n return \"\";\n return this.lib.decoder.decode(plainBytes);\n }\n setTabIndicator(indicator) {\n this.guard();\n const codePoint = typeof indicator === \"string\" ? indicator.codePointAt(0) ?? 0 : indicator;\n this.lib.textBufferViewSetTabIndicator(this.viewPtr, codePoint);\n }\n setTabIndicatorColor(color) {\n this.guard();\n this.lib.textBufferViewSetTabIndicatorColor(this.viewPtr, color);\n }\n setTruncate(truncate) {\n this.guard();\n this.lib.textBufferViewSetTruncate(this.viewPtr, truncate);\n }\n measureForDimensions(width, height) {\n this.guard();\n return this.lib.textBufferViewMeasureForDimensions(this.viewPtr, width, height);\n }\n getVirtualLineCount() {\n this.guard();\n return this.lib.textBufferViewGetVirtualLineCount(this.viewPtr);\n }\n destroy() {\n if (this._destroyed)\n return;\n this._destroyed = true;\n this.lib.destroyTextBufferView(this.viewPtr);\n }\n}\n// src/edit-buffer.ts\nimport { EventEmitter } from \"events\";\n\nclass EditBuffer extends EventEmitter {\n static registry = new Map;\n static nativeEventsSubscribed = false;\n lib;\n bufferPtr;\n textBufferPtr;\n id;\n _destroyed = false;\n _textBytes = [];\n _singleTextBytes = null;\n _singleTextMemId = null;\n _syntaxStyle;\n constructor(lib, ptr) {\n super();\n this.lib = lib;\n this.bufferPtr = ptr;\n this.textBufferPtr = lib.editBufferGetTextBuffer(ptr);\n this.id = lib.editBufferGetId(ptr);\n EditBuffer.registry.set(this.id, this);\n EditBuffer.subscribeToNativeEvents(lib);\n }\n static create(widthMethod) {\n const lib = resolveRenderLib();\n const ptr = lib.createEditBuffer(widthMethod);\n return new EditBuffer(lib, ptr);\n }\n static subscribeToNativeEvents(lib) {\n if (EditBuffer.nativeEventsSubscribed)\n return;\n EditBuffer.nativeEventsSubscribed = true;\n lib.onAnyNativeEvent((name, data) => {\n const buffer = new Uint16Array(data);\n if (name.startsWith(\"eb_\") && buffer.length >= 1) {\n const id = buffer[0];\n const instance = EditBuffer.registry.get(id);\n if (instance) {\n const eventName = name.slice(3);\n const eventData = data.slice(2);\n instance.emit(eventName, eventData);\n }\n }\n });\n }\n guard() {\n if (this._destroyed)\n throw new Error(\"EditBuffer is destroyed\");\n }\n get ptr() {\n this.guard();\n return this.bufferPtr;\n }\n setText(text) {\n this.guard();\n const textBytes = this.lib.encoder.encode(text);\n if (this._singleTextMemId !== null) {\n this.lib.textBufferReplaceMemBuffer(this.textBufferPtr, this._singleTextMemId, textBytes, false);\n } else {\n this._singleTextMemId = this.lib.textBufferRegisterMemBuffer(this.textBufferPtr, textBytes, false);\n }\n this._singleTextBytes = textBytes;\n this.lib.editBufferSetTextFromMem(this.bufferPtr, this._singleTextMemId);\n }\n setTextOwned(text) {\n this.guard();\n const textBytes = this.lib.encoder.encode(text);\n this.lib.editBufferSetText(this.bufferPtr, textBytes);\n }\n replaceText(text) {\n this.guard();\n const textBytes = this.lib.encoder.encode(text);\n this._textBytes.push(textBytes);\n const memId = this.lib.textBufferRegisterMemBuffer(this.textBufferPtr, textBytes, false);\n this.lib.editBufferReplaceTextFromMem(this.bufferPtr, memId);\n }\n replaceTextOwned(text) {\n this.guard();\n const textBytes = this.lib.encoder.encode(text);\n this.lib.editBufferReplaceText(this.bufferPtr, textBytes);\n }\n getLineCount() {\n this.guard();\n return this.lib.textBufferGetLineCount(this.textBufferPtr);\n }\n getText() {\n this.guard();\n const maxSize = 1024 * 1024;\n const textBytes = this.lib.editBufferGetText(this.bufferPtr, maxSize);\n if (!textBytes)\n return \"\";\n return this.lib.decoder.decode(textBytes);\n }\n insertChar(char) {\n this.guard();\n this.lib.editBufferInsertChar(this.bufferPtr, char);\n }\n insertText(text) {\n this.guard();\n this.lib.editBufferInsertText(this.bufferPtr, text);\n }\n deleteChar() {\n this.guard();\n this.lib.editBufferDeleteChar(this.bufferPtr);\n }\n deleteCharBackward() {\n this.guard();\n this.lib.editBufferDeleteCharBackward(this.bufferPtr);\n }\n deleteRange(startLine, startCol, endLine, endCol) {\n this.guard();\n this.lib.editBufferDeleteRange(this.bufferPtr, startLine, startCol, endLine, endCol);\n }\n newLine() {\n this.guard();\n this.lib.editBufferNewLine(this.bufferPtr);\n }\n deleteLine() {\n this.guard();\n this.lib.editBufferDeleteLine(this.bufferPtr);\n }\n moveCursorLeft() {\n this.guard();\n this.lib.editBufferMoveCursorLeft(this.bufferPtr);\n }\n moveCursorRight() {\n this.guard();\n this.lib.editBufferMoveCursorRight(this.bufferPtr);\n }\n moveCursorUp() {\n this.guard();\n this.lib.editBufferMoveCursorUp(this.bufferPtr);\n }\n moveCursorDown() {\n this.guard();\n this.lib.editBufferMoveCursorDown(this.bufferPtr);\n }\n gotoLine(line) {\n this.guard();\n this.lib.editBufferGotoLine(this.bufferPtr, line);\n }\n setCursor(line, col) {\n this.guard();\n this.lib.editBufferSetCursor(this.bufferPtr, line, col);\n }\n setCursorToLineCol(line, col) {\n this.guard();\n this.lib.editBufferSetCursorToLineCol(this.bufferPtr, line, col);\n }\n setCursorByOffset(offset) {\n this.guard();\n this.lib.editBufferSetCursorByOffset(this.bufferPtr, offset);\n }\n getCursorPosition() {\n this.guard();\n return this.lib.editBufferGetCursorPosition(this.bufferPtr);\n }\n getNextWordBoundary() {\n this.guard();\n const boundary = this.lib.editBufferGetNextWordBoundary(this.bufferPtr);\n return {\n row: boundary.row,\n col: boundary.col,\n offset: boundary.offset\n };\n }\n getPrevWordBoundary() {\n this.guard();\n const boundary = this.lib.editBufferGetPrevWordBoundary(this.bufferPtr);\n return {\n row: boundary.row,\n col: boundary.col,\n offset: boundary.offset\n };\n }\n getEOL() {\n this.guard();\n const boundary = this.lib.editBufferGetEOL(this.bufferPtr);\n return {\n row: boundary.row,\n col: boundary.col,\n offset: boundary.offset\n };\n }\n offsetToPosition(offset) {\n this.guard();\n const result = this.lib.editBufferOffsetToPosition(this.bufferPtr, offset);\n if (!result)\n return null;\n return { row: result.row, col: result.col };\n }\n positionToOffset(row, col) {\n this.guard();\n return this.lib.editBufferPositionToOffset(this.bufferPtr, row, col);\n }\n getLineStartOffset(row) {\n this.guard();\n return this.lib.editBufferGetLineStartOffset(this.bufferPtr, row);\n }\n getTextRange(startOffset, endOffset) {\n this.guard();\n if (startOffset >= endOffset)\n return \"\";\n const maxSize = 1024 * 1024;\n const textBytes = this.lib.editBufferGetTextRange(this.bufferPtr, startOffset, endOffset, maxSize);\n if (!textBytes)\n return \"\";\n return this.lib.decoder.decode(textBytes);\n }\n getTextRangeByCoords(startRow, startCol, endRow, endCol) {\n this.guard();\n const maxSize = 1024 * 1024;\n const textBytes = this.lib.editBufferGetTextRangeByCoords(this.bufferPtr, startRow, startCol, endRow, endCol, maxSize);\n if (!textBytes)\n return \"\";\n return this.lib.decoder.decode(textBytes);\n }\n debugLogRope() {\n this.guard();\n this.lib.editBufferDebugLogRope(this.bufferPtr);\n }\n undo() {\n this.guard();\n const maxSize = 256;\n const metaBytes = this.lib.editBufferUndo(this.bufferPtr, maxSize);\n if (!metaBytes)\n return null;\n return this.lib.decoder.decode(metaBytes);\n }\n redo() {\n this.guard();\n const maxSize = 256;\n const metaBytes = this.lib.editBufferRedo(this.bufferPtr, maxSize);\n if (!metaBytes)\n return null;\n return this.lib.decoder.decode(metaBytes);\n }\n canUndo() {\n this.guard();\n return this.lib.editBufferCanUndo(this.bufferPtr);\n }\n canRedo() {\n this.guard();\n return this.lib.editBufferCanRedo(this.bufferPtr);\n }\n clearHistory() {\n this.guard();\n this.lib.editBufferClearHistory(this.bufferPtr);\n }\n setDefaultFg(fg2) {\n this.guard();\n this.lib.textBufferSetDefaultFg(this.textBufferPtr, fg2);\n }\n setDefaultBg(bg2) {\n this.guard();\n this.lib.textBufferSetDefaultBg(this.textBufferPtr, bg2);\n }\n setDefaultAttributes(attributes) {\n this.guard();\n this.lib.textBufferSetDefaultAttributes(this.textBufferPtr, attributes);\n }\n resetDefaults() {\n this.guard();\n this.lib.textBufferResetDefaults(this.textBufferPtr);\n }\n setSyntaxStyle(style) {\n this.guard();\n this._syntaxStyle = style ?? undefined;\n this.lib.textBufferSetSyntaxStyle(this.textBufferPtr, style?.ptr ?? null);\n }\n getSyntaxStyle() {\n this.guard();\n return this._syntaxStyle ?? null;\n }\n addHighlight(lineIdx, highlight) {\n this.guard();\n this.lib.textBufferAddHighlight(this.textBufferPtr, lineIdx, highlight);\n }\n addHighlightByCharRange(highlight) {\n this.guard();\n this.lib.textBufferAddHighlightByCharRange(this.textBufferPtr, highlight);\n }\n removeHighlightsByRef(hlRef) {\n this.guard();\n this.lib.textBufferRemoveHighlightsByRef(this.textBufferPtr, hlRef);\n }\n clearLineHighlights(lineIdx) {\n this.guard();\n this.lib.textBufferClearLineHighlights(this.textBufferPtr, lineIdx);\n }\n clearAllHighlights() {\n this.guard();\n this.lib.textBufferClearAllHighlights(this.textBufferPtr);\n }\n getLineHighlights(lineIdx) {\n this.guard();\n return this.lib.textBufferGetLineHighlights(this.textBufferPtr, lineIdx);\n }\n clear() {\n this.guard();\n this.lib.editBufferClear(this.bufferPtr);\n }\n destroy() {\n if (this._destroyed)\n return;\n this._destroyed = true;\n EditBuffer.registry.delete(this.id);\n this.lib.destroyEditBuffer(this.bufferPtr);\n }\n}\n// src/editor-view.ts\nclass EditorView {\n lib;\n viewPtr;\n editBuffer;\n _destroyed = false;\n _extmarksController;\n _textBufferViewPtr;\n constructor(lib, ptr, editBuffer) {\n this.lib = lib;\n this.viewPtr = ptr;\n this.editBuffer = editBuffer;\n }\n static create(editBuffer, viewportWidth, viewportHeight) {\n const lib = resolveRenderLib();\n const viewPtr = lib.createEditorView(editBuffer.ptr, viewportWidth, viewportHeight);\n return new EditorView(lib, viewPtr, editBuffer);\n }\n guard() {\n if (this._destroyed)\n throw new Error(\"EditorView is destroyed\");\n }\n get ptr() {\n this.guard();\n return this.viewPtr;\n }\n setViewportSize(width, height) {\n this.guard();\n this.lib.editorViewSetViewportSize(this.viewPtr, width, height);\n }\n setViewport(x, y, width, height, moveCursor = true) {\n this.guard();\n this.lib.editorViewSetViewport(this.viewPtr, x, y, width, height, moveCursor);\n }\n getViewport() {\n this.guard();\n return this.lib.editorViewGetViewport(this.viewPtr);\n }\n setScrollMargin(margin) {\n this.guard();\n this.lib.editorViewSetScrollMargin(this.viewPtr, margin);\n }\n setWrapMode(mode) {\n this.guard();\n this.lib.editorViewSetWrapMode(this.viewPtr, mode);\n }\n getVirtualLineCount() {\n this.guard();\n return this.lib.editorViewGetVirtualLineCount(this.viewPtr);\n }\n getTotalVirtualLineCount() {\n this.guard();\n return this.lib.editorViewGetTotalVirtualLineCount(this.viewPtr);\n }\n setSelection(start, end, bgColor, fgColor) {\n this.guard();\n this.lib.editorViewSetSelection(this.viewPtr, start, end, bgColor || null, fgColor || null);\n }\n updateSelection(end, bgColor, fgColor) {\n this.guard();\n this.lib.editorViewUpdateSelection(this.viewPtr, end, bgColor || null, fgColor || null);\n }\n resetSelection() {\n this.guard();\n this.lib.editorViewResetSelection(this.viewPtr);\n }\n getSelection() {\n this.guard();\n return this.lib.editorViewGetSelection(this.viewPtr);\n }\n hasSelection() {\n this.guard();\n return this.getSelection() !== null;\n }\n setLocalSelection(anchorX, anchorY, focusX, focusY, bgColor, fgColor, updateCursor, followCursor) {\n this.guard();\n return this.lib.editorViewSetLocalSelection(this.viewPtr, anchorX, anchorY, focusX, focusY, bgColor || null, fgColor || null, updateCursor ?? false, followCursor ?? false);\n }\n updateLocalSelection(anchorX, anchorY, focusX, focusY, bgColor, fgColor, updateCursor, followCursor) {\n this.guard();\n return this.lib.editorViewUpdateLocalSelection(this.viewPtr, anchorX, anchorY, focusX, focusY, bgColor || null, fgColor || null, updateCursor ?? false, followCursor ?? false);\n }\n resetLocalSelection() {\n this.guard();\n this.lib.editorViewResetLocalSelection(this.viewPtr);\n }\n getSelectedText() {\n this.guard();\n const maxLength = 1024 * 1024;\n const selectedBytes = this.lib.editorViewGetSelectedTextBytes(this.viewPtr, maxLength);\n if (!selectedBytes)\n return \"\";\n return this.lib.decoder.decode(selectedBytes);\n }\n getCursor() {\n this.guard();\n return this.lib.editorViewGetCursor(this.viewPtr);\n }\n getText() {\n this.guard();\n const maxLength = 1024 * 1024;\n const textBytes = this.lib.editorViewGetText(this.viewPtr, maxLength);\n if (!textBytes)\n return \"\";\n return this.lib.decoder.decode(textBytes);\n }\n getVisualCursor() {\n this.guard();\n return this.lib.editorViewGetVisualCursor(this.viewPtr);\n }\n moveUpVisual() {\n this.guard();\n this.lib.editorViewMoveUpVisual(this.viewPtr);\n }\n moveDownVisual() {\n this.guard();\n this.lib.editorViewMoveDownVisual(this.viewPtr);\n }\n deleteSelectedText() {\n this.guard();\n this.lib.editorViewDeleteSelectedText(this.viewPtr);\n }\n setCursorByOffset(offset) {\n this.guard();\n this.lib.editorViewSetCursorByOffset(this.viewPtr, offset);\n }\n getNextWordBoundary() {\n this.guard();\n return this.lib.editorViewGetNextWordBoundary(this.viewPtr);\n }\n getPrevWordBoundary() {\n this.guard();\n return this.lib.editorViewGetPrevWordBoundary(this.viewPtr);\n }\n getEOL() {\n this.guard();\n return this.lib.editorViewGetEOL(this.viewPtr);\n }\n getVisualSOL() {\n this.guard();\n return this.lib.editorViewGetVisualSOL(this.viewPtr);\n }\n getVisualEOL() {\n this.guard();\n return this.lib.editorViewGetVisualEOL(this.viewPtr);\n }\n getLineInfo() {\n this.guard();\n return this.lib.editorViewGetLineInfo(this.viewPtr);\n }\n getLogicalLineInfo() {\n this.guard();\n return this.lib.editorViewGetLogicalLineInfo(this.viewPtr);\n }\n get extmarks() {\n if (!this._extmarksController) {\n this._extmarksController = createExtmarksController(this.editBuffer, this);\n }\n return this._extmarksController;\n }\n setPlaceholderStyledText(chunks) {\n this.guard();\n this.lib.editorViewSetPlaceholderStyledText(this.viewPtr, chunks);\n }\n setTabIndicator(indicator) {\n this.guard();\n const codePoint = typeof indicator === \"string\" ? indicator.codePointAt(0) ?? 0 : indicator;\n this.lib.editorViewSetTabIndicator(this.viewPtr, codePoint);\n }\n setTabIndicatorColor(color) {\n this.guard();\n this.lib.editorViewSetTabIndicatorColor(this.viewPtr, color);\n }\n measureForDimensions(width, height) {\n this.guard();\n if (!this._textBufferViewPtr) {\n this._textBufferViewPtr = this.lib.editorViewGetTextBufferView(this.viewPtr);\n }\n return this.lib.textBufferViewMeasureForDimensions(this._textBufferViewPtr, width, height);\n }\n destroy() {\n if (this._destroyed)\n return;\n if (this._extmarksController) {\n this._extmarksController.destroy();\n this._extmarksController = undefined;\n }\n this._destroyed = true;\n this.lib.destroyEditorView(this.viewPtr);\n }\n}\n// src/syntax-style.ts\nfunction convertThemeToStyles(theme) {\n const flatStyles = {};\n for (const tokenStyle of theme) {\n const styleDefinition = {};\n if (tokenStyle.style.foreground) {\n styleDefinition.fg = parseColor(tokenStyle.style.foreground);\n }\n if (tokenStyle.style.background) {\n styleDefinition.bg = parseColor(tokenStyle.style.background);\n }\n if (tokenStyle.style.bold !== undefined) {\n styleDefinition.bold = tokenStyle.style.bold;\n }\n if (tokenStyle.style.italic !== undefined) {\n styleDefinition.italic = tokenStyle.style.italic;\n }\n if (tokenStyle.style.underline !== undefined) {\n styleDefinition.underline = tokenStyle.style.underline;\n }\n if (tokenStyle.style.dim !== undefined) {\n styleDefinition.dim = tokenStyle.style.dim;\n }\n for (const scope of tokenStyle.scope) {\n flatStyles[scope] = styleDefinition;\n }\n }\n return flatStyles;\n}\n\nclass SyntaxStyle {\n lib;\n stylePtr;\n _destroyed = false;\n nameCache = new Map;\n styleDefs = new Map;\n mergedCache = new Map;\n constructor(lib, ptr) {\n this.lib = lib;\n this.stylePtr = ptr;\n }\n static create() {\n const lib = resolveRenderLib();\n const ptr = lib.createSyntaxStyle();\n return new SyntaxStyle(lib, ptr);\n }\n static fromTheme(theme) {\n const style = SyntaxStyle.create();\n const flatStyles = convertThemeToStyles(theme);\n for (const [name, styleDef] of Object.entries(flatStyles)) {\n style.registerStyle(name, styleDef);\n }\n return style;\n }\n static fromStyles(styles) {\n const style = SyntaxStyle.create();\n for (const [name, styleDef] of Object.entries(styles)) {\n style.registerStyle(name, styleDef);\n }\n return style;\n }\n guard() {\n if (this._destroyed)\n throw new Error(\"NativeSyntaxStyle is destroyed\");\n }\n registerStyle(name, style) {\n this.guard();\n const attributes = createTextAttributes({\n bold: style.bold,\n italic: style.italic,\n underline: style.underline,\n dim: style.dim\n });\n const id = this.lib.syntaxStyleRegister(this.stylePtr, name, style.fg || null, style.bg || null, attributes);\n this.nameCache.set(name, id);\n this.styleDefs.set(name, style);\n return id;\n }\n resolveStyleId(name) {\n this.guard();\n const cached = this.nameCache.get(name);\n if (cached !== undefined)\n return cached;\n const id = this.lib.syntaxStyleResolveByName(this.stylePtr, name);\n if (id !== null) {\n this.nameCache.set(name, id);\n }\n return id;\n }\n getStyleId(name) {\n this.guard();\n const id = this.resolveStyleId(name);\n if (id !== null)\n return id;\n if (name.includes(\".\")) {\n const baseName = name.split(\".\")[0];\n return this.resolveStyleId(baseName);\n }\n return null;\n }\n get ptr() {\n this.guard();\n return this.stylePtr;\n }\n getStyleCount() {\n this.guard();\n return this.lib.syntaxStyleGetStyleCount(this.stylePtr);\n }\n clearNameCache() {\n this.nameCache.clear();\n }\n getStyle(name) {\n this.guard();\n if (Object.prototype.hasOwnProperty.call(this.styleDefs, name)) {\n return;\n }\n const style = this.styleDefs.get(name);\n if (style)\n return style;\n if (name.includes(\".\")) {\n const baseName = name.split(\".\")[0];\n if (Object.prototype.hasOwnProperty.call(this.styleDefs, baseName)) {\n return;\n }\n return this.styleDefs.get(baseName);\n }\n return;\n }\n mergeStyles(...styleNames) {\n this.guard();\n const cacheKey = styleNames.join(\":\");\n const cached = this.mergedCache.get(cacheKey);\n if (cached)\n return cached;\n const styleDefinition = {};\n for (const name of styleNames) {\n const style = this.getStyle(name);\n if (!style)\n continue;\n if (style.fg)\n styleDefinition.fg = style.fg;\n if (style.bg)\n styleDefinition.bg = style.bg;\n if (style.bold !== undefined)\n styleDefinition.bold = style.bold;\n if (style.italic !== undefined)\n styleDefinition.italic = style.italic;\n if (style.underline !== undefined)\n styleDefinition.underline = style.underline;\n if (style.dim !== undefined)\n styleDefinition.dim = style.dim;\n }\n const attributes = createTextAttributes({\n bold: styleDefinition.bold,\n italic: styleDefinition.italic,\n underline: styleDefinition.underline,\n dim: styleDefinition.dim\n });\n const merged = {\n fg: styleDefinition.fg,\n bg: styleDefinition.bg,\n attributes\n };\n this.mergedCache.set(cacheKey, merged);\n return merged;\n }\n clearCache() {\n this.guard();\n this.mergedCache.clear();\n }\n getCacheSize() {\n this.guard();\n return this.mergedCache.size;\n }\n getAllStyles() {\n this.guard();\n return new Map(this.styleDefs);\n }\n getRegisteredNames() {\n this.guard();\n return Array.from(this.styleDefs.keys());\n }\n destroy() {\n if (this._destroyed)\n return;\n this._destroyed = true;\n this.nameCache.clear();\n this.styleDefs.clear();\n this.mergedCache.clear();\n this.lib.destroySyntaxStyle(this.stylePtr);\n }\n}\n// src/post/filters.ts\nfunction applyScanlines(buffer, strength = 0.8, step = 2) {\n const width = buffer.width;\n const height = buffer.height;\n const bg2 = buffer.buffers.bg;\n for (let y = 0;y < height; y += step) {\n for (let x = 0;x < width; x++) {\n const colorIndex = (y * width + x) * 4;\n bg2[colorIndex] *= strength;\n bg2[colorIndex + 1] *= strength;\n bg2[colorIndex + 2] *= strength;\n }\n }\n}\nfunction applyGrayscale(buffer) {\n const size = buffer.width * buffer.height;\n const fg2 = buffer.buffers.fg;\n const bg2 = buffer.buffers.bg;\n for (let i = 0;i < size; i++) {\n const colorIndex = i * 4;\n const fgR = fg2[colorIndex];\n const fgG = fg2[colorIndex + 1];\n const fgB = fg2[colorIndex + 2];\n const fgLum = 0.299 * fgR + 0.587 * fgG + 0.114 * fgB;\n fg2[colorIndex] = fgLum;\n fg2[colorIndex + 1] = fgLum;\n fg2[colorIndex + 2] = fgLum;\n const bgR = bg2[colorIndex];\n const bgG = bg2[colorIndex + 1];\n const bgB = bg2[colorIndex + 2];\n const bgLum = 0.299 * bgR + 0.587 * bgG + 0.114 * bgB;\n bg2[colorIndex] = bgLum;\n bg2[colorIndex + 1] = bgLum;\n bg2[colorIndex + 2] = bgLum;\n }\n}\nfunction applySepia(buffer) {\n const size = buffer.width * buffer.height;\n const fg2 = buffer.buffers.fg;\n const bg2 = buffer.buffers.bg;\n for (let i = 0;i < size; i++) {\n const colorIndex = i * 4;\n let fgR = fg2[colorIndex];\n let fgG = fg2[colorIndex + 1];\n let fgB = fg2[colorIndex + 2];\n let newFgR = Math.min(1, fgR * 0.393 + fgG * 0.769 + fgB * 0.189);\n let newFgG = Math.min(1, fgR * 0.349 + fgG * 0.686 + fgB * 0.168);\n let newFgB = Math.min(1, fgR * 0.272 + fgG * 0.534 + fgB * 0.131);\n fg2[colorIndex] = newFgR;\n fg2[colorIndex + 1] = newFgG;\n fg2[colorIndex + 2] = newFgB;\n let bgR = bg2[colorIndex];\n let bgG = bg2[colorIndex + 1];\n let bgB = bg2[colorIndex + 2];\n let newBgR = Math.min(1, bgR * 0.393 + bgG * 0.769 + bgB * 0.189);\n let newBgG = Math.min(1, bgR * 0.349 + bgG * 0.686 + bgB * 0.168);\n let newBgB = Math.min(1, bgR * 0.272 + bgG * 0.534 + bgB * 0.131);\n bg2[colorIndex] = newBgR;\n bg2[colorIndex + 1] = newBgG;\n bg2[colorIndex + 2] = newBgB;\n }\n}\nfunction applyInvert(buffer) {\n const size = buffer.width * buffer.height;\n const fg2 = buffer.buffers.fg;\n const bg2 = buffer.buffers.bg;\n for (let i = 0;i < size; i++) {\n const colorIndex = i * 4;\n fg2[colorIndex] = 1 - fg2[colorIndex];\n fg2[colorIndex + 1] = 1 - fg2[colorIndex + 1];\n fg2[colorIndex + 2] = 1 - fg2[colorIndex + 2];\n bg2[colorIndex] = 1 - bg2[colorIndex];\n bg2[colorIndex + 1] = 1 - bg2[colorIndex + 1];\n bg2[colorIndex + 2] = 1 - bg2[colorIndex + 2];\n }\n}\nfunction applyNoise(buffer, strength = 0.1) {\n const size = buffer.width * buffer.height;\n const fg2 = buffer.buffers.fg;\n const bg2 = buffer.buffers.bg;\n for (let i = 0;i < size; i++) {\n const colorIndex = i * 4;\n const noise = (Math.random() - 0.5) * strength;\n fg2[colorIndex] = Math.max(0, Math.min(1, fg2[colorIndex] + noise));\n fg2[colorIndex + 1] = Math.max(0, Math.min(1, fg2[colorIndex + 1] + noise));\n fg2[colorIndex + 2] = Math.max(0, Math.min(1, fg2[colorIndex + 2] + noise));\n bg2[colorIndex] = Math.max(0, Math.min(1, bg2[colorIndex] + noise));\n bg2[colorIndex + 1] = Math.max(0, Math.min(1, bg2[colorIndex + 1] + noise));\n bg2[colorIndex + 2] = Math.max(0, Math.min(1, bg2[colorIndex + 2] + noise));\n }\n}\nfunction applyChromaticAberration(buffer, strength = 1) {\n const width = buffer.width;\n const height = buffer.height;\n const srcFg = Float32Array.from(buffer.buffers.fg);\n const destFg = buffer.buffers.fg;\n const centerX = width / 2;\n const centerY = height / 2;\n for (let y = 0;y < height; y++) {\n for (let x = 0;x < width; x++) {\n const dx = x - centerX;\n const dy = y - centerY;\n const offset = Math.round(Math.sqrt(dx * dx + dy * dy) / Math.max(centerX, centerY) * strength);\n const rX = Math.max(0, Math.min(width - 1, x - offset));\n const bX = Math.max(0, Math.min(width - 1, x + offset));\n const rIndex = (y * width + rX) * 4;\n const gIndex = (y * width + x) * 4;\n const bIndex = (y * width + bX) * 4;\n const destIndex = (y * width + x) * 4;\n destFg[destIndex] = srcFg[rIndex];\n destFg[destIndex + 1] = srcFg[gIndex + 1];\n destFg[destIndex + 2] = srcFg[bIndex + 2];\n }\n }\n}\nfunction applyAsciiArt(buffer, ramp = \" .:-=+*#%@\") {\n const width = buffer.width;\n const height = buffer.height;\n const chars = buffer.buffers.char;\n const bg2 = buffer.buffers.bg;\n const rampLength = ramp.length;\n for (let y = 0;y < height; y++) {\n for (let x = 0;x < width; x++) {\n const index = y * width + x;\n const colorIndex = index * 4;\n const bgR = bg2[colorIndex];\n const bgG = bg2[colorIndex + 1];\n const bgB = bg2[colorIndex + 2];\n const lum = 0.299 * bgR + 0.587 * bgG + 0.114 * bgB;\n const rampIndex = Math.min(rampLength - 1, Math.floor(lum * rampLength));\n chars[index] = ramp[rampIndex].charCodeAt(0);\n }\n }\n}\n\nclass DistortionEffect {\n glitchChancePerSecond = 0.5;\n maxGlitchLines = 3;\n minGlitchDuration = 0.05;\n maxGlitchDuration = 0.2;\n maxShiftAmount = 10;\n shiftFlipRatio = 0.6;\n colorGlitchChance = 0.2;\n lastGlitchTime = 0;\n glitchDuration = 0;\n activeGlitches = [];\n constructor(options) {\n if (options) {\n Object.assign(this, options);\n }\n }\n apply(buffer, deltaTime) {\n const width = buffer.width;\n const height = buffer.height;\n const buf = buffer.buffers;\n this.lastGlitchTime += deltaTime;\n if (this.activeGlitches.length > 0 && this.lastGlitchTime >= this.glitchDuration) {\n this.activeGlitches = [];\n this.glitchDuration = 0;\n }\n if (this.activeGlitches.length === 0 && Math.random() < this.glitchChancePerSecond * deltaTime) {\n this.lastGlitchTime = 0;\n this.glitchDuration = this.minGlitchDuration + Math.random() * (this.maxGlitchDuration - this.minGlitchDuration);\n const numGlitches = 1 + Math.floor(Math.random() * this.maxGlitchLines);\n for (let i = 0;i < numGlitches; i++) {\n const y = Math.floor(Math.random() * height);\n let type;\n let amount = 0;\n const typeRoll = Math.random();\n if (typeRoll < this.colorGlitchChance) {\n type = \"color\";\n } else {\n const shiftRoll = (typeRoll - this.colorGlitchChance) / (1 - this.colorGlitchChance);\n if (shiftRoll < this.shiftFlipRatio) {\n type = \"shift\";\n amount = Math.floor((Math.random() - 0.5) * 2 * this.maxShiftAmount);\n } else {\n type = \"flip\";\n }\n }\n if (!this.activeGlitches.some((g) => g.y === y)) {\n this.activeGlitches.push({ y, type, amount });\n }\n }\n }\n if (this.activeGlitches.length > 0) {\n let tempChar = null;\n let tempFg = null;\n let tempBg = null;\n let tempAttr = null;\n for (const glitch of this.activeGlitches) {\n const y = glitch.y;\n if (y < 0 || y >= height)\n continue;\n const baseIndex = y * width;\n if (glitch.type === \"shift\" || glitch.type === \"flip\") {\n if (!tempChar) {\n tempChar = new Uint32Array(width);\n tempFg = new Float32Array(width * 4);\n tempBg = new Float32Array(width * 4);\n tempAttr = new Uint8Array(width);\n }\n try {\n tempChar.set(buf.char.subarray(baseIndex, baseIndex + width));\n tempFg.set(buf.fg.subarray(baseIndex * 4, (baseIndex + width) * 4));\n tempBg.set(buf.bg.subarray(baseIndex * 4, (baseIndex + width) * 4));\n tempAttr.set(buf.attributes.subarray(baseIndex, baseIndex + width));\n } catch (e) {\n console.error(`Error copying row ${y} for distortion:`, e);\n continue;\n }\n if (glitch.type === \"shift\") {\n const shift = glitch.amount;\n for (let x = 0;x < width; x++) {\n const srcX = (x - shift + width) % width;\n const destIndex = baseIndex + x;\n const srcTempIndex = srcX;\n buf.char[destIndex] = tempChar[srcTempIndex];\n buf.attributes[destIndex] = tempAttr[srcTempIndex];\n const destColorIndex = destIndex * 4;\n const srcTempColorIndex = srcTempIndex * 4;\n buf.fg.set(tempFg.subarray(srcTempColorIndex, srcTempColorIndex + 4), destColorIndex);\n buf.bg.set(tempBg.subarray(srcTempColorIndex, srcTempColorIndex + 4), destColorIndex);\n }\n } else {\n for (let x = 0;x < width; x++) {\n const srcX = width - 1 - x;\n const destIndex = baseIndex + x;\n const srcTempIndex = srcX;\n buf.char[destIndex] = tempChar[srcTempIndex];\n buf.attributes[destIndex] = tempAttr[srcTempIndex];\n const destColorIndex = destIndex * 4;\n const srcTempColorIndex = srcTempIndex * 4;\n buf.fg.set(tempFg.subarray(srcTempColorIndex, srcTempColorIndex + 4), destColorIndex);\n buf.bg.set(tempBg.subarray(srcTempColorIndex, srcTempColorIndex + 4), destColorIndex);\n }\n }\n } else if (glitch.type === \"color\") {\n const glitchStart = Math.floor(Math.random() * width);\n const maxPossibleLength = width - glitchStart;\n let glitchLength = Math.floor(Math.random() * maxPossibleLength) + 1;\n if (Math.random() < 0.2) {\n glitchLength = Math.floor(Math.random() * (width / 4)) + 1;\n }\n glitchLength = Math.min(glitchLength, maxPossibleLength);\n for (let x = glitchStart;x < glitchStart + glitchLength; x++) {\n if (x >= width)\n break;\n const destIndex = baseIndex + x;\n const destColorIndex = destIndex * 4;\n let rFg, gFg, bFg, rBg, gBg, bBg;\n const colorMode = Math.random();\n if (colorMode < 0.33) {\n rFg = Math.random();\n gFg = Math.random();\n bFg = Math.random();\n rBg = Math.random();\n gBg = Math.random();\n bBg = Math.random();\n } else if (colorMode < 0.66) {\n const emphasis = Math.random();\n if (emphasis < 0.25) {\n rFg = Math.random();\n gFg = 0;\n bFg = 0;\n } else if (emphasis < 0.5) {\n rFg = 0;\n gFg = Math.random();\n bFg = 0;\n } else if (emphasis < 0.75) {\n rFg = 0;\n gFg = 0;\n bFg = Math.random();\n } else {\n const glitchColorRoll = Math.random();\n if (glitchColorRoll < 0.33) {\n rFg = 1;\n gFg = 0;\n bFg = 1;\n } else if (glitchColorRoll < 0.66) {\n rFg = 0;\n gFg = 1;\n bFg = 1;\n } else {\n rFg = 1;\n gFg = 1;\n bFg = 0;\n }\n }\n if (Math.random() < 0.5) {\n rBg = 1 - rFg;\n gBg = 1 - gFg;\n bBg = 1 - bFg;\n } else {\n rBg = rFg * (Math.random() * 0.5 + 0.2);\n gBg = gFg * (Math.random() * 0.5 + 0.2);\n bBg = bFg * (Math.random() * 0.5 + 0.2);\n }\n } else {\n rFg = Math.random() > 0.5 ? 1 : 0;\n gFg = Math.random() > 0.5 ? 1 : 0;\n bFg = Math.random() > 0.5 ? 1 : 0;\n rBg = 1 - rFg;\n gBg = 1 - gFg;\n bBg = 1 - bFg;\n }\n buf.fg[destColorIndex] = rFg;\n buf.fg[destColorIndex + 1] = gFg;\n buf.fg[destColorIndex + 2] = bFg;\n buf.bg[destColorIndex] = rBg;\n buf.bg[destColorIndex + 1] = gBg;\n buf.bg[destColorIndex + 2] = bBg;\n }\n }\n }\n }\n }\n}\n\nclass VignetteEffect {\n _strength;\n precomputedBaseAttenuation = null;\n cachedWidth = -1;\n cachedHeight = -1;\n constructor(strength = 0.5) {\n this._strength = strength;\n }\n set strength(newStrength) {\n this._strength = Math.max(0, newStrength);\n }\n get strength() {\n return this._strength;\n }\n _computeFactors(width, height) {\n this.precomputedBaseAttenuation = new Float32Array(width * height);\n const centerX = width / 2;\n const centerY = height / 2;\n const maxDistSq = centerX * centerX + centerY * centerY;\n const safeMaxDistSq = maxDistSq === 0 ? 1 : maxDistSq;\n for (let y = 0;y < height; y++) {\n const dy = y - centerY;\n const dySq = dy * dy;\n for (let x = 0;x < width; x++) {\n const dx = x - centerX;\n const distSq = dx * dx + dySq;\n const baseAttenuation = Math.min(1, distSq / safeMaxDistSq);\n const index = y * width + x;\n this.precomputedBaseAttenuation[index] = baseAttenuation;\n }\n }\n this.cachedWidth = width;\n this.cachedHeight = height;\n }\n apply(buffer) {\n const width = buffer.width;\n const height = buffer.height;\n const buf = buffer.buffers;\n const size = width * height;\n if (width !== this.cachedWidth || height !== this.cachedHeight || !this.precomputedBaseAttenuation) {\n this._computeFactors(width, height);\n }\n for (let i = 0;i < size; i++) {\n const factor = Math.max(0, 1 - this.precomputedBaseAttenuation[i] * this._strength);\n const colorIndex = i * 4;\n buf.fg[colorIndex] *= factor;\n buf.fg[colorIndex + 1] *= factor;\n buf.fg[colorIndex + 2] *= factor;\n buf.bg[colorIndex] *= factor;\n buf.bg[colorIndex + 1] *= factor;\n buf.bg[colorIndex + 2] *= factor;\n }\n }\n}\n\nclass BrightnessEffect {\n _brightness;\n constructor(brightness = 1) {\n this._brightness = Math.max(0, brightness);\n }\n set brightness(newBrightness) {\n this._brightness = Math.max(0, newBrightness);\n }\n get brightness() {\n return this._brightness;\n }\n apply(buffer) {\n const size = buffer.width * buffer.height;\n const fg2 = buffer.buffers.fg;\n const bg2 = buffer.buffers.bg;\n const factor = this._brightness;\n if (factor === 1) {\n return;\n }\n for (let i = 0;i < size; i++) {\n const colorIndex = i * 4;\n fg2[colorIndex] = Math.min(1, fg2[colorIndex] * factor);\n fg2[colorIndex + 1] = Math.min(1, fg2[colorIndex + 1] * factor);\n fg2[colorIndex + 2] = Math.min(1, fg2[colorIndex + 2] * factor);\n bg2[colorIndex] = Math.min(1, bg2[colorIndex] * factor);\n bg2[colorIndex + 1] = Math.min(1, bg2[colorIndex + 1] * factor);\n bg2[colorIndex + 2] = Math.min(1, bg2[colorIndex + 2] * factor);\n }\n }\n}\n\nclass BlurEffect {\n _radius;\n constructor(radius = 1) {\n this._radius = Math.max(0, Math.round(radius));\n }\n set radius(newRadius) {\n this._radius = Math.max(0, Math.round(newRadius));\n }\n get radius() {\n return this._radius;\n }\n apply(buffer) {\n const radius = this._radius;\n if (radius <= 0)\n return;\n const width = buffer.width;\n const height = buffer.height;\n const buf = buffer.buffers;\n const srcFg = buf.fg;\n const srcBg = buf.bg;\n const destFg = buf.fg;\n const destBg = buf.bg;\n const chars = buf.char;\n const size = width * height;\n const numChannels = 4;\n const tempBufferFg = new Float32Array(size * numChannels);\n const tempBufferBg = new Float32Array(size * numChannels);\n const windowSize = radius * 2 + 1;\n for (let y = 0;y < height; y++) {\n let sumR = 0, sumG = 0, sumB = 0, sumA = 0;\n const baseRowIndex = y * width;\n for (let x = -radius;x <= radius; x++) {\n const sampleX = Math.max(0, Math.min(width - 1, x));\n const srcIndex = (baseRowIndex + sampleX) * numChannels;\n sumR += srcFg[srcIndex];\n sumG += srcFg[srcIndex + 1];\n sumB += srcFg[srcIndex + 2];\n sumA += srcFg[srcIndex + 3];\n }\n for (let x = 0;x < width; x++) {\n const destIndex = (baseRowIndex + x) * numChannels;\n tempBufferFg[destIndex] = sumR / windowSize;\n tempBufferFg[destIndex + 1] = sumG / windowSize;\n tempBufferFg[destIndex + 2] = sumB / windowSize;\n tempBufferFg[destIndex + 3] = sumA / windowSize;\n const leavingX = Math.max(0, Math.min(width - 1, x - radius));\n const leavingIndex = (baseRowIndex + leavingX) * numChannels;\n sumR -= srcFg[leavingIndex];\n sumG -= srcFg[leavingIndex + 1];\n sumB -= srcFg[leavingIndex + 2];\n sumA -= srcFg[leavingIndex + 3];\n const enteringX = Math.max(0, Math.min(width - 1, x + radius + 1));\n const enteringIndex = (baseRowIndex + enteringX) * numChannels;\n sumR += srcFg[enteringIndex];\n sumG += srcFg[enteringIndex + 1];\n sumB += srcFg[enteringIndex + 2];\n sumA += srcFg[enteringIndex + 3];\n }\n }\n for (let y = 0;y < height; y++) {\n let sumR = 0, sumG = 0, sumB = 0, sumA = 0;\n const baseRowIndex = y * width;\n for (let x = -radius;x <= radius; x++) {\n const sampleX = Math.max(0, Math.min(width - 1, x));\n const srcIndex = (baseRowIndex + sampleX) * numChannels;\n sumR += srcBg[srcIndex];\n sumG += srcBg[srcIndex + 1];\n sumB += srcBg[srcIndex + 2];\n sumA += srcBg[srcIndex + 3];\n }\n for (let x = 0;x < width; x++) {\n const destIndex = (baseRowIndex + x) * numChannels;\n tempBufferBg[destIndex] = sumR / windowSize;\n tempBufferBg[destIndex + 1] = sumG / windowSize;\n tempBufferBg[destIndex + 2] = sumB / windowSize;\n tempBufferBg[destIndex + 3] = sumA / windowSize;\n const leavingX = Math.max(0, Math.min(width - 1, x - radius));\n const leavingIndex = (baseRowIndex + leavingX) * numChannels;\n sumR -= srcBg[leavingIndex];\n sumG -= srcBg[leavingIndex + 1];\n sumB -= srcBg[leavingIndex + 2];\n sumA -= srcBg[leavingIndex + 3];\n const enteringX = Math.max(0, Math.min(width - 1, x + radius + 1));\n const enteringIndex = (baseRowIndex + enteringX) * numChannels;\n sumR += srcBg[enteringIndex];\n sumG += srcBg[enteringIndex + 1];\n sumB += srcBg[enteringIndex + 2];\n sumA += srcBg[enteringIndex + 3];\n }\n }\n for (let x = 0;x < width; x++) {\n let sumR = 0, sumG = 0, sumB = 0, sumA = 0;\n for (let y = -radius;y <= radius; y++) {\n const sampleY = Math.max(0, Math.min(height - 1, y));\n const srcIndex = (sampleY * width + x) * numChannels;\n sumR += tempBufferFg[srcIndex];\n sumG += tempBufferFg[srcIndex + 1];\n sumB += tempBufferFg[srcIndex + 2];\n sumA += tempBufferFg[srcIndex + 3];\n }\n for (let y = 0;y < height; y++) {\n const destIndex = (y * width + x) * numChannels;\n destFg[destIndex] = sumR / windowSize;\n destFg[destIndex + 1] = sumG / windowSize;\n destFg[destIndex + 2] = sumB / windowSize;\n destFg[destIndex + 3] = sumA / windowSize;\n const leavingY = Math.max(0, Math.min(height - 1, y - radius));\n const leavingIndex = (leavingY * width + x) * numChannels;\n sumR -= tempBufferFg[leavingIndex];\n sumG -= tempBufferFg[leavingIndex + 1];\n sumB -= tempBufferFg[leavingIndex + 2];\n sumA -= tempBufferFg[leavingIndex + 3];\n const enteringY = Math.max(0, Math.min(height - 1, y + radius + 1));\n const enteringIndex = (enteringY * width + x) * numChannels;\n sumR += tempBufferFg[enteringIndex];\n sumG += tempBufferFg[enteringIndex + 1];\n sumB += tempBufferFg[enteringIndex + 2];\n sumA += tempBufferFg[enteringIndex + 3];\n }\n }\n for (let x = 0;x < width; x++) {\n let sumR = 0, sumG = 0, sumB = 0, sumA = 0;\n for (let y = -radius;y <= radius; y++) {\n const sampleY = Math.max(0, Math.min(height - 1, y));\n const srcIndex = (sampleY * width + x) * numChannels;\n sumR += tempBufferBg[srcIndex];\n sumG += tempBufferBg[srcIndex + 1];\n sumB += tempBufferBg[srcIndex + 2];\n sumA += tempBufferBg[srcIndex + 3];\n }\n for (let y = 0;y < height; y++) {\n const destIndex = (y * width + x) * numChannels;\n destBg[destIndex] = sumR / windowSize;\n destBg[destIndex + 1] = sumG / windowSize;\n destBg[destIndex + 2] = sumB / windowSize;\n destBg[destIndex + 3] = sumA / windowSize;\n const leavingY = Math.max(0, Math.min(height - 1, y - radius));\n const leavingIndex = (leavingY * width + x) * numChannels;\n sumR -= tempBufferBg[leavingIndex];\n sumG -= tempBufferBg[leavingIndex + 1];\n sumB -= tempBufferBg[leavingIndex + 2];\n sumA -= tempBufferBg[leavingIndex + 3];\n const enteringY = Math.max(0, Math.min(height - 1, y + radius + 1));\n const enteringIndex = (enteringY * width + x) * numChannels;\n sumR += tempBufferBg[enteringIndex];\n sumG += tempBufferBg[enteringIndex + 1];\n sumB += tempBufferBg[enteringIndex + 2];\n sumA += tempBufferBg[enteringIndex + 3];\n }\n }\n const charRamp = [\" \", \"\\u2591\", \"\\u2592\", \"\\u2593\", \" \"];\n const rampLength = charRamp.length;\n for (let i = 0;i < size; i++) {\n const alphaIndex = i * numChannels + 3;\n const fgAlpha = destFg[alphaIndex];\n const clampedAlpha = Math.max(0, Math.min(1, fgAlpha));\n const rampIndex = Math.min(rampLength - 1, Math.floor(clampedAlpha * rampLength));\n chars[i] = charRamp[rampIndex].charCodeAt(0);\n }\n }\n}\n\nclass BloomEffect {\n _threshold;\n _strength;\n _radius;\n constructor(threshold = 0.8, strength = 0.2, radius = 2) {\n this._threshold = Math.max(0, Math.min(1, threshold));\n this._strength = Math.max(0, strength);\n this._radius = Math.max(0, Math.round(radius));\n }\n set threshold(newThreshold) {\n this._threshold = Math.max(0, Math.min(1, newThreshold));\n }\n get threshold() {\n return this._threshold;\n }\n set strength(newStrength) {\n this._strength = Math.max(0, newStrength);\n }\n get strength() {\n return this._strength;\n }\n set radius(newRadius) {\n this._radius = Math.max(0, Math.round(newRadius));\n }\n get radius() {\n return this._radius;\n }\n apply(buffer) {\n const threshold = this._threshold;\n const strength = this._strength;\n const radius = this._radius;\n if (strength <= 0 || radius <= 0)\n return;\n const width = buffer.width;\n const height = buffer.height;\n const srcFg = Float32Array.from(buffer.buffers.fg);\n const srcBg = Float32Array.from(buffer.buffers.bg);\n const destFg = buffer.buffers.fg;\n const destBg = buffer.buffers.bg;\n const brightPixels = [];\n for (let y = 0;y < height; y++) {\n for (let x = 0;x < width; x++) {\n const index = (y * width + x) * 4;\n const fgLum = 0.299 * srcFg[index] + 0.587 * srcFg[index + 1] + 0.114 * srcFg[index + 2];\n const bgLum = 0.299 * srcBg[index] + 0.587 * srcBg[index + 1] + 0.114 * srcBg[index + 2];\n const lum = Math.max(fgLum, bgLum);\n if (lum > threshold) {\n const intensity = (lum - threshold) / (1 - threshold + 0.000001);\n brightPixels.push({ x, y, intensity: Math.max(0, intensity) });\n }\n }\n }\n if (brightPixels.length === 0)\n return;\n destFg.set(srcFg);\n destBg.set(srcBg);\n for (const bright of brightPixels) {\n for (let ky = -radius;ky <= radius; ky++) {\n for (let kx = -radius;kx <= radius; kx++) {\n if (kx === 0 && ky === 0)\n continue;\n const sampleX = bright.x + kx;\n const sampleY = bright.y + ky;\n if (sampleX >= 0 && sampleX < width && sampleY >= 0 && sampleY < height) {\n const distSq = kx * kx + ky * ky;\n const radiusSq = radius * radius;\n if (distSq <= radiusSq) {\n const falloff = 1 - distSq / radiusSq;\n const bloomAmount = bright.intensity * strength * falloff;\n const destIndex = (sampleY * width + sampleX) * 4;\n destFg[destIndex] = Math.min(1, destFg[destIndex] + bloomAmount);\n destFg[destIndex + 1] = Math.min(1, destFg[destIndex + 1] + bloomAmount);\n destFg[destIndex + 2] = Math.min(1, destFg[destIndex + 2] + bloomAmount);\n destBg[destIndex] = Math.min(1, destBg[destIndex] + bloomAmount);\n destBg[destIndex + 1] = Math.min(1, destBg[destIndex + 1] + bloomAmount);\n destBg[destIndex + 2] = Math.min(1, destBg[destIndex + 2] + bloomAmount);\n }\n }\n }\n }\n }\n }\n}\n// src/animation/Timeline.ts\nvar easingFunctions = {\n linear: (t2) => t2,\n inQuad: (t2) => t2 * t2,\n outQuad: (t2) => t2 * (2 - t2),\n inOutQuad: (t2) => t2 < 0.5 ? 2 * t2 * t2 : -1 + (4 - 2 * t2) * t2,\n inExpo: (t2) => t2 === 0 ? 0 : Math.pow(2, 10 * (t2 - 1)),\n outExpo: (t2) => t2 === 1 ? 1 : 1 - Math.pow(2, -10 * t2),\n inOutSine: (t2) => -(Math.cos(Math.PI * t2) - 1) / 2,\n outBounce: (t2) => {\n const n1 = 7.5625;\n const d1 = 2.75;\n if (t2 < 1 / d1) {\n return n1 * t2 * t2;\n } else if (t2 < 2 / d1) {\n return n1 * (t2 -= 1.5 / d1) * t2 + 0.75;\n } else if (t2 < 2.5 / d1) {\n return n1 * (t2 -= 2.25 / d1) * t2 + 0.9375;\n } else {\n return n1 * (t2 -= 2.625 / d1) * t2 + 0.984375;\n }\n },\n outElastic: (t2) => {\n const c4 = 2 * Math.PI / 3;\n return t2 === 0 ? 0 : t2 === 1 ? 1 : Math.pow(2, -10 * t2) * Math.sin((t2 * 10 - 0.75) * c4) + 1;\n },\n inBounce: (t2) => 1 - easingFunctions.outBounce(1 - t2),\n inCirc: (t2) => 1 - Math.sqrt(1 - t2 * t2),\n outCirc: (t2) => Math.sqrt(1 - Math.pow(t2 - 1, 2)),\n inOutCirc: (t2) => {\n if ((t2 *= 2) < 1)\n return -0.5 * (Math.sqrt(1 - t2 * t2) - 1);\n return 0.5 * (Math.sqrt(1 - (t2 -= 2) * t2) + 1);\n },\n inBack: (t2, s = 1.70158) => t2 * t2 * ((s + 1) * t2 - s),\n outBack: (t2, s = 1.70158) => --t2 * t2 * ((s + 1) * t2 + s) + 1,\n inOutBack: (t2, s = 1.70158) => {\n s *= 1.525;\n if ((t2 *= 2) < 1)\n return 0.5 * (t2 * t2 * ((s + 1) * t2 - s));\n return 0.5 * ((t2 -= 2) * t2 * ((s + 1) * t2 + s) + 2);\n }\n};\nfunction captureInitialValues(item) {\n if (!item.properties)\n return;\n if (!item.initialValues || item.initialValues.length === 0) {\n const initialValues = [];\n for (let i = 0;i < item.target.length; i++) {\n const target = item.target[i];\n const targetInitialValues = {};\n for (const key of Object.keys(item.properties)) {\n if (typeof target[key] === \"number\") {\n targetInitialValues[key] = target[key];\n }\n }\n initialValues.push(targetInitialValues);\n }\n item.initialValues = initialValues;\n }\n}\nfunction applyAnimationAtProgress(item, progress, reversed, timelineTime, deltaTime = 0) {\n if (!item.properties || !item.initialValues)\n return;\n const easingFn = easingFunctions[item.ease || \"linear\"] || easingFunctions.linear;\n const easedProgress = easingFn(Math.max(0, Math.min(1, progress)));\n const finalProgress = reversed ? 1 - easedProgress : easedProgress;\n for (let i = 0;i < item.target.length; i++) {\n const target = item.target[i];\n const targetInitialValues = item.initialValues[i];\n if (!targetInitialValues)\n continue;\n for (const [key, endValue] of Object.entries(item.properties)) {\n const startValue = targetInitialValues[key];\n const newValue = startValue + (endValue - startValue) * finalProgress;\n target[key] = newValue;\n }\n }\n if (item.onUpdate) {\n const animation = {\n targets: item.target,\n progress: easedProgress,\n currentTime: timelineTime,\n deltaTime\n };\n item.onUpdate(animation);\n }\n}\nfunction evaluateAnimation(item, timelineTime, deltaTime = 0) {\n if (timelineTime < item.startTime) {\n return;\n }\n const animationTime = timelineTime - item.startTime;\n const duration = item.duration || 0;\n if (timelineTime >= item.startTime && !item.started) {\n captureInitialValues(item);\n if (item.onStart) {\n item.onStart();\n }\n item.started = true;\n }\n if (duration === 0) {\n if (!item.completed) {\n applyAnimationAtProgress(item, 1, false, timelineTime, deltaTime);\n if (item.onComplete) {\n item.onComplete();\n }\n item.completed = true;\n }\n return;\n }\n const maxLoops = !item.loop || item.loop === 1 ? 1 : typeof item.loop === \"number\" ? item.loop : Infinity;\n const loopDelay = item.loopDelay || 0;\n const cycleTime = duration + loopDelay;\n let currentCycle = Math.floor(animationTime / cycleTime);\n let timeInCycle = animationTime % cycleTime;\n if (item.onLoop && item.currentLoop !== undefined && currentCycle > item.currentLoop && currentCycle < maxLoops) {\n item.onLoop();\n }\n item.currentLoop = currentCycle;\n if (item.onComplete && !item.completed && currentCycle === maxLoops - 1 && timeInCycle >= duration) {\n const finalLoopReversed = (item.alternate || false) && currentCycle % 2 === 1;\n applyAnimationAtProgress(item, 1, finalLoopReversed, timelineTime, deltaTime);\n item.onComplete();\n item.completed = true;\n return;\n }\n if (currentCycle >= maxLoops) {\n if (!item.completed) {\n const finalReversed = (item.alternate || false) && (maxLoops - 1) % 2 === 1;\n applyAnimationAtProgress(item, 1, finalReversed, timelineTime, deltaTime);\n if (item.onComplete) {\n item.onComplete();\n }\n item.completed = true;\n }\n return;\n }\n if (timeInCycle === 0 && animationTime > 0 && currentCycle < maxLoops) {\n currentCycle = currentCycle - 1;\n timeInCycle = cycleTime;\n }\n if (timeInCycle >= duration) {\n const isReversed2 = (item.alternate || false) && currentCycle % 2 === 1;\n applyAnimationAtProgress(item, 1, isReversed2, timelineTime, deltaTime);\n return;\n }\n const progress = timeInCycle / duration;\n const isReversed = (item.alternate || false) && currentCycle % 2 === 1;\n applyAnimationAtProgress(item, progress, isReversed, timelineTime, deltaTime);\n}\nfunction evaluateCallback(item, timelineTime) {\n if (!item.executed && timelineTime >= item.startTime && item.callback) {\n item.callback();\n item.executed = true;\n }\n}\nfunction evaluateTimelineSync(item, timelineTime, deltaTime = 0) {\n if (!item.timeline)\n return;\n if (timelineTime < item.startTime) {\n return;\n }\n if (!item.timelineStarted) {\n item.timelineStarted = true;\n item.timeline.play();\n const overshoot = timelineTime - item.startTime;\n item.timeline.update(overshoot);\n return;\n }\n item.timeline.update(deltaTime);\n}\nfunction evaluateItem(item, timelineTime, deltaTime = 0) {\n if (item.type === \"animation\") {\n evaluateAnimation(item, timelineTime, deltaTime);\n } else if (item.type === \"callback\") {\n evaluateCallback(item, timelineTime);\n }\n}\n\nclass Timeline {\n items = [];\n subTimelines = [];\n currentTime = 0;\n isPlaying = false;\n isComplete = false;\n duration;\n loop;\n synced = false;\n autoplay;\n onComplete;\n onPause;\n stateChangeListeners = [];\n constructor(options = {}) {\n this.duration = options.duration || 1000;\n this.loop = options.loop === true;\n this.autoplay = options.autoplay !== false;\n this.onComplete = options.onComplete;\n this.onPause = options.onPause;\n }\n addStateChangeListener(listener) {\n this.stateChangeListeners.push(listener);\n }\n removeStateChangeListener(listener) {\n this.stateChangeListeners = this.stateChangeListeners.filter((l) => l !== listener);\n }\n notifyStateChange() {\n for (const listener of this.stateChangeListeners) {\n listener(this);\n }\n }\n add(target, properties, startTime = 0) {\n const resolvedStartTime = typeof startTime === \"string\" ? 0 : startTime;\n const animationProperties = {};\n for (const key in properties) {\n if (![\"duration\", \"ease\", \"onUpdate\", \"onComplete\", \"onStart\", \"onLoop\", \"loop\", \"loopDelay\", \"alternate\"].includes(key)) {\n if (typeof properties[key] === \"number\") {\n animationProperties[key] = properties[key];\n }\n }\n }\n this.items.push({\n type: \"animation\",\n startTime: resolvedStartTime,\n target: Array.isArray(target) ? target : [target],\n properties: animationProperties,\n initialValues: [],\n duration: properties.duration !== undefined ? properties.duration : 1000,\n ease: properties.ease || \"linear\",\n loop: properties.loop,\n loopDelay: properties.loopDelay || 0,\n alternate: properties.alternate || false,\n onUpdate: properties.onUpdate,\n onComplete: properties.onComplete,\n onStart: properties.onStart,\n onLoop: properties.onLoop,\n completed: false,\n started: false,\n currentLoop: 0,\n once: properties.once ?? false\n });\n return this;\n }\n once(target, properties) {\n this.add(target, {\n ...properties,\n once: true\n }, this.currentTime);\n return this;\n }\n call(callback, startTime = 0) {\n const resolvedStartTime = typeof startTime === \"string\" ? 0 : startTime;\n this.items.push({\n type: \"callback\",\n startTime: resolvedStartTime,\n callback,\n executed: false\n });\n return this;\n }\n sync(timeline, startTime = 0) {\n if (timeline.synced) {\n throw new Error(\"Timeline already synced\");\n }\n this.subTimelines.push({\n type: \"timeline\",\n startTime,\n timeline\n });\n timeline.synced = true;\n return this;\n }\n play() {\n if (this.isComplete) {\n return this.restart();\n }\n this.subTimelines.forEach((subTimeline) => {\n if (subTimeline.timelineStarted) {\n subTimeline.timeline.play();\n }\n });\n this.isPlaying = true;\n this.notifyStateChange();\n return this;\n }\n pause() {\n this.subTimelines.forEach((subTimeline) => {\n subTimeline.timeline.pause();\n });\n this.isPlaying = false;\n if (this.onPause) {\n this.onPause();\n }\n this.notifyStateChange();\n return this;\n }\n resetItems() {\n this.items.forEach((item) => {\n if (item.type === \"callback\") {\n item.executed = false;\n } else if (item.type === \"animation\") {\n item.completed = false;\n item.started = false;\n item.currentLoop = 0;\n }\n });\n this.subTimelines.forEach((subTimeline) => {\n subTimeline.timelineStarted = false;\n if (subTimeline.timeline) {\n subTimeline.timeline.restart();\n subTimeline.timeline.pause();\n }\n });\n }\n restart() {\n this.isComplete = false;\n this.currentTime = 0;\n this.isPlaying = true;\n this.resetItems();\n this.notifyStateChange();\n return this;\n }\n update(deltaTime) {\n for (const subTimeline of this.subTimelines) {\n evaluateTimelineSync(subTimeline, this.currentTime + deltaTime, deltaTime);\n }\n if (!this.isPlaying)\n return;\n this.currentTime += deltaTime;\n for (const item of this.items) {\n evaluateItem(item, this.currentTime, deltaTime);\n }\n for (let i = this.items.length - 1;i >= 0; i--) {\n const item = this.items[i];\n if (item.type === \"animation\" && item.once && item.completed) {\n this.items.splice(i, 1);\n }\n }\n if (this.loop && this.currentTime >= this.duration) {\n const overshoot = this.currentTime % this.duration;\n this.resetItems();\n this.currentTime = 0;\n if (overshoot > 0) {\n this.update(overshoot);\n }\n } else if (!this.loop && this.currentTime >= this.duration) {\n this.currentTime = this.duration;\n this.isPlaying = false;\n this.isComplete = true;\n if (this.onComplete) {\n this.onComplete();\n }\n this.notifyStateChange();\n }\n }\n}\n\nclass TimelineEngine {\n timelines = new Set;\n renderer = null;\n frameCallback = null;\n isLive = false;\n defaults = {\n frameRate: 60\n };\n attach(renderer) {\n if (this.renderer) {\n this.detach();\n }\n this.renderer = renderer;\n this.frameCallback = async (deltaTime) => {\n this.update(deltaTime);\n };\n renderer.setFrameCallback(this.frameCallback);\n }\n detach() {\n if (this.renderer && this.frameCallback) {\n this.renderer.removeFrameCallback(this.frameCallback);\n if (this.isLive) {\n this.renderer.dropLive();\n this.isLive = false;\n }\n }\n this.renderer = null;\n this.frameCallback = null;\n }\n updateLiveState() {\n if (!this.renderer)\n return;\n const hasRunningTimelines = Array.from(this.timelines).some((timeline) => !timeline.synced && timeline.isPlaying && !timeline.isComplete);\n if (hasRunningTimelines && !this.isLive) {\n this.renderer.requestLive();\n this.isLive = true;\n } else if (!hasRunningTimelines && this.isLive) {\n this.renderer.dropLive();\n this.isLive = false;\n }\n }\n onTimelineStateChange = (timeline) => {\n this.updateLiveState();\n };\n register(timeline) {\n if (!this.timelines.has(timeline)) {\n this.timelines.add(timeline);\n timeline.addStateChangeListener(this.onTimelineStateChange);\n this.updateLiveState();\n }\n }\n unregister(timeline) {\n if (this.timelines.has(timeline)) {\n this.timelines.delete(timeline);\n timeline.removeStateChangeListener(this.onTimelineStateChange);\n this.updateLiveState();\n }\n }\n clear() {\n for (const timeline of this.timelines) {\n timeline.removeStateChangeListener(this.onTimelineStateChange);\n }\n this.timelines.clear();\n this.updateLiveState();\n }\n update(deltaTime) {\n for (const timeline of this.timelines) {\n if (!timeline.synced) {\n timeline.update(deltaTime);\n }\n }\n }\n}\nvar engine = new TimelineEngine;\nfunction createTimeline(options = {}) {\n const timeline = new Timeline(options);\n if (options.autoplay !== false) {\n timeline.play();\n }\n engine.register(timeline);\n return timeline;\n}\n// src/NativeSpanFeed.ts\nimport { toArrayBuffer } from \"bun:ffi\";\nfunction toPointer(value) {\n if (typeof value === \"bigint\") {\n if (value > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new Error(\"Pointer exceeds safe integer range\");\n }\n return Number(value);\n }\n return value;\n}\nfunction toNumber(value) {\n return typeof value === \"bigint\" ? Number(value) : value;\n}\n\nclass NativeSpanFeed {\n static create(options) {\n const lib = resolveRenderLib();\n const streamPtr = lib.createNativeSpanFeed(options);\n const stream = new NativeSpanFeed(streamPtr);\n lib.registerNativeSpanFeedStream(streamPtr, stream.eventHandler);\n const status = lib.attachNativeSpanFeed(streamPtr);\n if (status !== 0) {\n lib.unregisterNativeSpanFeedStream(streamPtr);\n lib.destroyNativeSpanFeed(streamPtr);\n throw new Error(`Failed to attach stream: ${status}`);\n }\n return stream;\n }\n static attach(streamPtr, _options) {\n const lib = resolveRenderLib();\n const ptr = toPointer(streamPtr);\n const stream = new NativeSpanFeed(ptr);\n lib.registerNativeSpanFeedStream(ptr, stream.eventHandler);\n const status = lib.attachNativeSpanFeed(ptr);\n if (status !== 0) {\n lib.unregisterNativeSpanFeedStream(ptr);\n throw new Error(`Failed to attach stream: ${status}`);\n }\n return stream;\n }\n streamPtr;\n lib = resolveRenderLib();\n eventHandler;\n chunkMap = new Map;\n chunkSizes = new Map;\n dataHandlers = new Set;\n errorHandlers = new Set;\n drainBuffer = null;\n stateBuffer = null;\n closed = false;\n destroyed = false;\n draining = false;\n pendingDataAvailable = false;\n pendingClose = false;\n closing = false;\n pendingAsyncHandlers = 0;\n inCallback = false;\n closeQueued = false;\n constructor(streamPtr) {\n this.streamPtr = streamPtr;\n this.eventHandler = (eventId, arg0, arg1) => {\n this.handleEvent(eventId, arg0, arg1);\n };\n this.ensureDrainBuffer();\n }\n ensureDrainBuffer() {\n if (this.drainBuffer)\n return;\n const capacity = 256;\n this.drainBuffer = new Uint8Array(capacity * SpanInfoStruct.size);\n }\n onData(handler) {\n this.dataHandlers.add(handler);\n if (this.pendingDataAvailable) {\n this.pendingDataAvailable = false;\n this.drainAll();\n }\n return () => this.dataHandlers.delete(handler);\n }\n onError(handler) {\n this.errorHandlers.add(handler);\n return () => this.errorHandlers.delete(handler);\n }\n close() {\n if (this.destroyed)\n return;\n if (this.inCallback || this.draining || this.pendingAsyncHandlers > 0) {\n this.pendingClose = true;\n if (!this.closeQueued) {\n this.closeQueued = true;\n queueMicrotask(() => {\n this.closeQueued = false;\n this.processPendingClose();\n });\n }\n return;\n }\n this.performClose();\n }\n processPendingClose() {\n if (!this.pendingClose || this.destroyed)\n return;\n if (this.inCallback || this.draining || this.pendingAsyncHandlers > 0)\n return;\n this.pendingClose = false;\n this.performClose();\n }\n performClose() {\n if (this.closing)\n return;\n this.closing = true;\n if (!this.closed) {\n const status = this.lib.streamClose(this.streamPtr);\n if (status !== 0) {\n this.closing = false;\n return;\n }\n this.closed = true;\n }\n this.finalizeDestroy();\n }\n finalizeDestroy() {\n if (this.destroyed)\n return;\n this.lib.unregisterNativeSpanFeedStream(this.streamPtr);\n this.lib.destroyNativeSpanFeed(this.streamPtr);\n this.destroyed = true;\n this.chunkMap.clear();\n this.chunkSizes.clear();\n this.stateBuffer = null;\n this.drainBuffer = null;\n this.dataHandlers.clear();\n this.errorHandlers.clear();\n this.pendingDataAvailable = false;\n }\n handleEvent(eventId, arg0, arg1) {\n this.inCallback = true;\n try {\n switch (eventId) {\n case 8 /* StateBuffer */: {\n const len = toNumber(arg1);\n if (len > 0 && arg0) {\n const buffer = toArrayBuffer(arg0, 0, len);\n this.stateBuffer = new Uint8Array(buffer);\n }\n break;\n }\n case 7 /* DataAvailable */: {\n if (this.closing)\n break;\n if (this.dataHandlers.size === 0) {\n this.pendingDataAvailable = true;\n break;\n }\n this.drainAll();\n break;\n }\n case 2 /* ChunkAdded */: {\n const chunkLen = toNumber(arg1);\n if (chunkLen > 0 && arg0) {\n if (!this.chunkMap.has(arg0)) {\n const buffer = toArrayBuffer(arg0, 0, chunkLen);\n this.chunkMap.set(arg0, buffer);\n }\n this.chunkSizes.set(arg0, chunkLen);\n }\n break;\n }\n case 6 /* Error */: {\n const code = arg0;\n for (const handler of this.errorHandlers)\n handler(code);\n break;\n }\n case 5 /* Closed */: {\n this.closed = true;\n break;\n }\n default:\n break;\n }\n } finally {\n this.inCallback = false;\n }\n }\n decrementRefcount(chunkIndex) {\n if (this.stateBuffer && chunkIndex < this.stateBuffer.length) {\n const prev = this.stateBuffer[chunkIndex];\n this.stateBuffer[chunkIndex] = prev > 0 ? prev - 1 : 0;\n }\n }\n drainOnce() {\n if (!this.drainBuffer || this.draining || this.pendingClose)\n return 0;\n const capacity = Math.floor(this.drainBuffer.byteLength / SpanInfoStruct.size);\n if (capacity === 0)\n return 0;\n const count = this.lib.streamDrainSpans(this.streamPtr, this.drainBuffer, capacity);\n if (count === 0)\n return 0;\n this.draining = true;\n const spans = SpanInfoStruct.unpackList(this.drainBuffer.buffer, count);\n let firstError = null;\n try {\n for (const span of spans) {\n if (span.len === 0)\n continue;\n let buffer = this.chunkMap.get(span.chunkPtr);\n if (!buffer) {\n const size = this.chunkSizes.get(span.chunkPtr);\n if (!size)\n continue;\n buffer = toArrayBuffer(span.chunkPtr, 0, size);\n this.chunkMap.set(span.chunkPtr, buffer);\n }\n if (span.offset + span.len > buffer.byteLength)\n continue;\n const slice = new Uint8Array(buffer, span.offset, span.len);\n let asyncResults = null;\n for (const handler of this.dataHandlers) {\n try {\n const result = handler(slice);\n if (result && typeof result.then === \"function\") {\n asyncResults ??= [];\n asyncResults.push(result);\n }\n } catch (e) {\n firstError ??= e;\n }\n }\n const shouldStopAfterThisSpan = this.pendingClose;\n if (asyncResults) {\n const chunkIndex = span.chunkIndex;\n this.pendingAsyncHandlers += 1;\n Promise.allSettled(asyncResults).then(() => {\n this.decrementRefcount(chunkIndex);\n this.pendingAsyncHandlers -= 1;\n this.processPendingClose();\n });\n } else {\n this.decrementRefcount(span.chunkIndex);\n }\n if (shouldStopAfterThisSpan)\n break;\n }\n } finally {\n this.draining = false;\n }\n if (firstError)\n throw firstError;\n return count;\n }\n drainAll() {\n let count = this.drainOnce();\n while (count > 0) {\n count = this.drainOnce();\n }\n }\n}\n// src/renderables/FrameBuffer.ts\nclass FrameBufferRenderable extends Renderable {\n frameBuffer;\n respectAlpha;\n constructor(ctx, options) {\n super(ctx, options);\n this.respectAlpha = options.respectAlpha || false;\n this.frameBuffer = OptimizedBuffer.create(options.width, options.height, this._ctx.widthMethod, {\n respectAlpha: this.respectAlpha,\n id: options.id || `framebufferrenderable-${this.id}`\n });\n }\n onResize(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(`Invalid resize dimensions for FrameBufferRenderable ${this.id}: ${width}x${height}`);\n }\n this.frameBuffer.resize(width, height);\n super.onResize(width, height);\n this.requestRender();\n }\n renderSelf(buffer) {\n if (!this.visible || this.isDestroyed)\n return;\n buffer.drawFrameBuffer(this.x, this.y, this.frameBuffer);\n }\n destroySelf() {\n this.frameBuffer?.destroy();\n super.destroySelf();\n }\n}\n\n// src/renderables/ASCIIFont.ts\nclass ASCIIFontRenderable extends FrameBufferRenderable {\n selectable = true;\n static _defaultOptions = {\n text: \"\",\n font: \"tiny\",\n color: \"#FFFFFF\",\n backgroundColor: \"transparent\",\n selectionBg: undefined,\n selectionFg: undefined,\n selectable: true\n };\n _text;\n _font;\n _color;\n _backgroundColor;\n _selectionBg;\n _selectionFg;\n lastLocalSelection = null;\n selectionHelper;\n constructor(ctx, options) {\n const defaultOptions = ASCIIFontRenderable._defaultOptions;\n const font = options.font || defaultOptions.font;\n const text = options.text || defaultOptions.text;\n const measurements = measureText({ text, font });\n super(ctx, {\n flexShrink: 0,\n ...options,\n width: measurements.width || 1,\n height: measurements.height || 1,\n respectAlpha: true\n });\n this._text = text;\n this._font = font;\n this._color = options.color || defaultOptions.color;\n this._backgroundColor = options.backgroundColor || defaultOptions.backgroundColor;\n this._selectionBg = options.selectionBg ? parseColor(options.selectionBg) : undefined;\n this._selectionFg = options.selectionFg ? parseColor(options.selectionFg) : undefined;\n this.selectable = options.selectable ?? true;\n this.selectionHelper = new ASCIIFontSelectionHelper(() => this._text, () => this._font);\n this.renderFontToBuffer();\n }\n get text() {\n return this._text;\n }\n set text(value) {\n this._text = value;\n this.updateDimensions();\n if (this.lastLocalSelection) {\n this.selectionHelper.onLocalSelectionChanged(this.lastLocalSelection, this.width, this.height);\n }\n this.renderFontToBuffer();\n this.requestRender();\n }\n get font() {\n return this._font;\n }\n set font(value) {\n this._font = value;\n this.updateDimensions();\n if (this.lastLocalSelection) {\n this.selectionHelper.onLocalSelectionChanged(this.lastLocalSelection, this.width, this.height);\n }\n this.renderFontToBuffer();\n this.requestRender();\n }\n get color() {\n return this._color;\n }\n set color(value) {\n this._color = value;\n this.renderFontToBuffer();\n this.requestRender();\n }\n get backgroundColor() {\n return this._backgroundColor;\n }\n set backgroundColor(value) {\n this._backgroundColor = value;\n this.renderFontToBuffer();\n this.requestRender();\n }\n updateDimensions() {\n const measurements = measureText({ text: this._text, font: this._font });\n this.width = measurements.width;\n this.height = measurements.height;\n }\n shouldStartSelection(x, y) {\n const localX = x - this.x;\n const localY = y - this.y;\n return this.selectionHelper.shouldStartSelection(localX, localY, this.width, this.height);\n }\n onSelectionChanged(selection) {\n const localSelection = convertGlobalToLocalSelection(selection, this.x, this.y);\n this.lastLocalSelection = localSelection;\n const changed = this.selectionHelper.onLocalSelectionChanged(localSelection, this.width, this.height);\n if (changed) {\n this.renderFontToBuffer();\n this.requestRender();\n }\n return changed;\n }\n getSelectedText() {\n const selection = this.selectionHelper.getSelection();\n if (!selection)\n return \"\";\n return this._text.slice(selection.start, selection.end);\n }\n hasSelection() {\n return this.selectionHelper.hasSelection();\n }\n onResize(width, height) {\n super.onResize(width, height);\n this.renderFontToBuffer();\n }\n renderFontToBuffer() {\n if (this.isDestroyed)\n return;\n this.frameBuffer.clear(parseColor(this._backgroundColor));\n renderFontToFrameBuffer(this.frameBuffer, {\n text: this._text,\n x: 0,\n y: 0,\n color: this.color,\n backgroundColor: this._backgroundColor,\n font: this._font\n });\n const selection = this.selectionHelper.getSelection();\n if (selection && (this._selectionBg || this._selectionFg)) {\n this.renderSelectionHighlight(selection);\n }\n }\n renderSelectionHighlight(selection) {\n if (!this._selectionBg && !this._selectionFg)\n return;\n const selectedText = this._text.slice(selection.start, selection.end);\n if (!selectedText)\n return;\n const positions = getCharacterPositions(this._text, this._font);\n const startX = positions[selection.start] || 0;\n const endX = selection.end < positions.length ? positions[selection.end] : measureText({ text: this._text, font: this._font }).width;\n if (this._selectionBg) {\n this.frameBuffer.fillRect(startX, 0, endX - startX, this.height, parseColor(this._selectionBg));\n }\n if (this._selectionFg || this._selectionBg) {\n renderFontToFrameBuffer(this.frameBuffer, {\n text: selectedText,\n x: startX,\n y: 0,\n color: this._selectionFg ? this._selectionFg : this._color,\n backgroundColor: this._selectionBg ? this._selectionBg : this._backgroundColor,\n font: this._font\n });\n }\n }\n}\n// src/renderables/Box.ts\nfunction isGapType(value) {\n if (value === undefined) {\n return true;\n }\n if (typeof value === \"number\" && !Number.isNaN(value)) {\n return true;\n }\n return isValidPercentage(value);\n}\n\nclass BoxRenderable extends Renderable {\n _backgroundColor;\n _border;\n _borderStyle;\n _borderColor;\n _focusedBorderColor;\n _customBorderCharsObj;\n _customBorderChars;\n borderSides;\n shouldFill;\n _title;\n _titleAlignment;\n _defaultOptions = {\n backgroundColor: \"transparent\",\n borderStyle: \"single\",\n border: false,\n borderColor: \"#FFFFFF\",\n shouldFill: true,\n titleAlignment: \"left\",\n focusedBorderColor: \"#00AAFF\"\n };\n constructor(ctx, options) {\n super(ctx, options);\n if (options.focusable === true) {\n this._focusable = true;\n }\n this._backgroundColor = parseColor(options.backgroundColor || this._defaultOptions.backgroundColor);\n this._border = options.border ?? this._defaultOptions.border;\n if (!options.border && (options.borderStyle || options.borderColor || options.focusedBorderColor || options.customBorderChars)) {\n this._border = true;\n }\n this._borderStyle = parseBorderStyle(options.borderStyle, this._defaultOptions.borderStyle);\n this._borderColor = parseColor(options.borderColor || this._defaultOptions.borderColor);\n this._focusedBorderColor = parseColor(options.focusedBorderColor || this._defaultOptions.focusedBorderColor);\n this._customBorderCharsObj = options.customBorderChars;\n this._customBorderChars = this._customBorderCharsObj ? borderCharsToArray(this._customBorderCharsObj) : undefined;\n this.borderSides = getBorderSides(this._border);\n this.shouldFill = options.shouldFill ?? this._defaultOptions.shouldFill;\n this._title = options.title;\n this._titleAlignment = options.titleAlignment || this._defaultOptions.titleAlignment;\n this.applyYogaBorders();\n const hasInitialGapProps = options.gap !== undefined || options.rowGap !== undefined || options.columnGap !== undefined;\n if (hasInitialGapProps) {\n this.applyYogaGap(options);\n }\n }\n initializeBorder() {\n if (this._border === false) {\n this._border = true;\n this.borderSides = getBorderSides(this._border);\n this.applyYogaBorders();\n }\n }\n get customBorderChars() {\n return this._customBorderCharsObj;\n }\n set customBorderChars(value) {\n this._customBorderCharsObj = value;\n this._customBorderChars = value ? borderCharsToArray(value) : undefined;\n this.requestRender();\n }\n get backgroundColor() {\n return this._backgroundColor;\n }\n set backgroundColor(value) {\n const newColor = parseColor(value ?? this._defaultOptions.backgroundColor);\n if (this._backgroundColor !== newColor) {\n this._backgroundColor = newColor;\n this.requestRender();\n }\n }\n get border() {\n return this._border;\n }\n set border(value) {\n if (this._border !== value) {\n this._border = value;\n this.borderSides = getBorderSides(value);\n this.applyYogaBorders();\n this.requestRender();\n }\n }\n get borderStyle() {\n return this._borderStyle;\n }\n set borderStyle(value) {\n const _value = parseBorderStyle(value, this._defaultOptions.borderStyle);\n if (this._borderStyle !== _value || !this._border) {\n this._borderStyle = _value;\n this._customBorderChars = undefined;\n this.initializeBorder();\n this.requestRender();\n }\n }\n get borderColor() {\n return this._borderColor;\n }\n set borderColor(value) {\n const newColor = parseColor(value ?? this._defaultOptions.borderColor);\n if (this._borderColor !== newColor) {\n this._borderColor = newColor;\n this.initializeBorder();\n this.requestRender();\n }\n }\n get focusedBorderColor() {\n return this._focusedBorderColor;\n }\n set focusedBorderColor(value) {\n const newColor = parseColor(value ?? this._defaultOptions.focusedBorderColor);\n if (this._focusedBorderColor !== newColor) {\n this._focusedBorderColor = newColor;\n this.initializeBorder();\n if (this._focused) {\n this.requestRender();\n }\n }\n }\n get title() {\n return this._title;\n }\n set title(value) {\n if (this._title !== value) {\n this._title = value;\n this.requestRender();\n }\n }\n get titleAlignment() {\n return this._titleAlignment;\n }\n set titleAlignment(value) {\n if (this._titleAlignment !== value) {\n this._titleAlignment = value;\n this.requestRender();\n }\n }\n renderSelf(buffer) {\n const currentBorderColor = this._focused ? this._focusedBorderColor : this._borderColor;\n buffer.drawBox({\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height,\n borderStyle: this._borderStyle,\n customBorderChars: this._customBorderChars,\n border: this._border,\n borderColor: currentBorderColor,\n backgroundColor: this._backgroundColor,\n shouldFill: this.shouldFill,\n title: this._title,\n titleAlignment: this._titleAlignment\n });\n }\n getScissorRect() {\n const baseRect = super.getScissorRect();\n if (!this.borderSides.top && !this.borderSides.right && !this.borderSides.bottom && !this.borderSides.left) {\n return baseRect;\n }\n const leftInset = this.borderSides.left ? 1 : 0;\n const rightInset = this.borderSides.right ? 1 : 0;\n const topInset = this.borderSides.top ? 1 : 0;\n const bottomInset = this.borderSides.bottom ? 1 : 0;\n return {\n x: baseRect.x + leftInset,\n y: baseRect.y + topInset,\n width: Math.max(0, baseRect.width - leftInset - rightInset),\n height: Math.max(0, baseRect.height - topInset - bottomInset)\n };\n }\n applyYogaBorders() {\n const node = this.yogaNode;\n node.setBorder(Edge.Left, this.borderSides.left ? 1 : 0);\n node.setBorder(Edge.Right, this.borderSides.right ? 1 : 0);\n node.setBorder(Edge.Top, this.borderSides.top ? 1 : 0);\n node.setBorder(Edge.Bottom, this.borderSides.bottom ? 1 : 0);\n this.requestRender();\n }\n applyYogaGap(options) {\n const node = this.yogaNode;\n if (isGapType(options.gap)) {\n node.setGap(Gutter.All, options.gap);\n }\n if (isGapType(options.rowGap)) {\n node.setGap(Gutter.Row, options.rowGap);\n }\n if (isGapType(options.columnGap)) {\n node.setGap(Gutter.Column, options.columnGap);\n }\n }\n set gap(gap) {\n if (isGapType(gap)) {\n this.yogaNode.setGap(Gutter.All, gap);\n this.requestRender();\n }\n }\n set rowGap(rowGap) {\n if (isGapType(rowGap)) {\n this.yogaNode.setGap(Gutter.Row, rowGap);\n this.requestRender();\n }\n }\n set columnGap(columnGap) {\n if (isGapType(columnGap)) {\n this.yogaNode.setGap(Gutter.Column, columnGap);\n this.requestRender();\n }\n }\n}\n// src/renderables/TextBufferRenderable.ts\nclass TextBufferRenderable extends Renderable {\n selectable = true;\n _defaultFg;\n _defaultBg;\n _defaultAttributes;\n _selectionBg;\n _selectionFg;\n _wrapMode = \"word\";\n lastLocalSelection = null;\n _tabIndicator;\n _tabIndicatorColor;\n _scrollX = 0;\n _scrollY = 0;\n _truncate = false;\n textBuffer;\n textBufferView;\n _defaultOptions = {\n fg: RGBA.fromValues(1, 1, 1, 1),\n bg: RGBA.fromValues(0, 0, 0, 0),\n selectionBg: undefined,\n selectionFg: undefined,\n selectable: true,\n attributes: 0,\n wrapMode: \"word\",\n tabIndicator: undefined,\n tabIndicatorColor: undefined,\n truncate: false\n };\n constructor(ctx, options) {\n super(ctx, options);\n this._defaultFg = parseColor(options.fg ?? this._defaultOptions.fg);\n this._defaultBg = parseColor(options.bg ?? this._defaultOptions.bg);\n this._defaultAttributes = options.attributes ?? this._defaultOptions.attributes;\n this._selectionBg = options.selectionBg ? parseColor(options.selectionBg) : this._defaultOptions.selectionBg;\n this._selectionFg = options.selectionFg ? parseColor(options.selectionFg) : this._defaultOptions.selectionFg;\n this.selectable = options.selectable ?? this._defaultOptions.selectable;\n this._wrapMode = options.wrapMode ?? this._defaultOptions.wrapMode;\n this._tabIndicator = options.tabIndicator ?? this._defaultOptions.tabIndicator;\n this._tabIndicatorColor = options.tabIndicatorColor ? parseColor(options.tabIndicatorColor) : this._defaultOptions.tabIndicatorColor;\n this._truncate = options.truncate ?? this._defaultOptions.truncate;\n this.textBuffer = TextBuffer.create(this._ctx.widthMethod);\n this.textBufferView = TextBufferView.create(this.textBuffer);\n const style = SyntaxStyle.create();\n this.textBuffer.setSyntaxStyle(style);\n this.textBufferView.setWrapMode(this._wrapMode);\n this.setupMeasureFunc();\n this.textBuffer.setDefaultFg(this._defaultFg);\n this.textBuffer.setDefaultBg(this._defaultBg);\n this.textBuffer.setDefaultAttributes(this._defaultAttributes);\n if (this._tabIndicator !== undefined) {\n this.textBufferView.setTabIndicator(this._tabIndicator);\n }\n if (this._tabIndicatorColor !== undefined) {\n this.textBufferView.setTabIndicatorColor(this._tabIndicatorColor);\n }\n if (this._wrapMode !== \"none\" && this.width > 0) {\n this.textBufferView.setWrapWidth(this.width);\n }\n if (this.width > 0 && this.height > 0) {\n this.textBufferView.setViewport(this._scrollX, this._scrollY, this.width, this.height);\n }\n this.textBufferView.setTruncate(this._truncate);\n this.updateTextInfo();\n }\n onMouseEvent(event) {\n if (event.type === \"scroll\") {\n this.handleScroll(event);\n }\n }\n handleScroll(event) {\n if (!event.scroll)\n return;\n const { direction, delta } = event.scroll;\n if (direction === \"up\") {\n this.scrollY -= delta;\n } else if (direction === \"down\") {\n this.scrollY += delta;\n }\n if (this._wrapMode === \"none\") {\n if (direction === \"left\") {\n this.scrollX -= delta;\n } else if (direction === \"right\") {\n this.scrollX += delta;\n }\n }\n }\n get lineInfo() {\n return this.textBufferView.logicalLineInfo;\n }\n get lineCount() {\n return this.textBuffer.getLineCount();\n }\n get virtualLineCount() {\n return this.textBufferView.getVirtualLineCount();\n }\n get scrollY() {\n return this._scrollY;\n }\n set scrollY(value) {\n const maxScrollY = Math.max(0, this.scrollHeight - this.height);\n const clamped = Math.max(0, Math.min(value, maxScrollY));\n if (this._scrollY !== clamped) {\n this._scrollY = clamped;\n this.updateViewportOffset();\n this.requestRender();\n }\n }\n get scrollX() {\n return this._scrollX;\n }\n set scrollX(value) {\n const maxScrollX = Math.max(0, this.scrollWidth - this.width);\n const clamped = Math.max(0, Math.min(value, maxScrollX));\n if (this._scrollX !== clamped) {\n this._scrollX = clamped;\n this.updateViewportOffset();\n this.requestRender();\n }\n }\n get scrollWidth() {\n return this.lineInfo.maxLineWidth;\n }\n get scrollHeight() {\n return this.lineInfo.lineStarts.length;\n }\n get maxScrollY() {\n return Math.max(0, this.scrollHeight - this.height);\n }\n get maxScrollX() {\n return Math.max(0, this.scrollWidth - this.width);\n }\n updateViewportOffset() {\n if (this.width > 0 && this.height > 0) {\n this.textBufferView.setViewport(this._scrollX, this._scrollY, this.width, this.height);\n }\n }\n get plainText() {\n return this.textBuffer.getPlainText();\n }\n get textLength() {\n return this.textBuffer.length;\n }\n get fg() {\n return this._defaultFg;\n }\n set fg(value) {\n const newColor = parseColor(value ?? this._defaultOptions.fg);\n if (this._defaultFg !== newColor) {\n this._defaultFg = newColor;\n this.textBuffer.setDefaultFg(this._defaultFg);\n this.onFgChanged(newColor);\n this.requestRender();\n }\n }\n get selectionBg() {\n return this._selectionBg;\n }\n set selectionBg(value) {\n const newColor = value ? parseColor(value) : this._defaultOptions.selectionBg;\n if (this._selectionBg !== newColor) {\n this._selectionBg = newColor;\n if (this.lastLocalSelection) {\n this.updateLocalSelection(this.lastLocalSelection);\n }\n this.requestRender();\n }\n }\n get selectionFg() {\n return this._selectionFg;\n }\n set selectionFg(value) {\n const newColor = value ? parseColor(value) : this._defaultOptions.selectionFg;\n if (this._selectionFg !== newColor) {\n this._selectionFg = newColor;\n if (this.lastLocalSelection) {\n this.updateLocalSelection(this.lastLocalSelection);\n }\n this.requestRender();\n }\n }\n get bg() {\n return this._defaultBg;\n }\n set bg(value) {\n const newColor = parseColor(value ?? this._defaultOptions.bg);\n if (this._defaultBg !== newColor) {\n this._defaultBg = newColor;\n this.textBuffer.setDefaultBg(this._defaultBg);\n this.onBgChanged(newColor);\n this.requestRender();\n }\n }\n get attributes() {\n return this._defaultAttributes;\n }\n set attributes(value) {\n if (this._defaultAttributes !== value) {\n this._defaultAttributes = value;\n this.textBuffer.setDefaultAttributes(this._defaultAttributes);\n this.onAttributesChanged(value);\n this.requestRender();\n }\n }\n get wrapMode() {\n return this._wrapMode;\n }\n set wrapMode(value) {\n if (this._wrapMode !== value) {\n this._wrapMode = value;\n this.textBufferView.setWrapMode(this._wrapMode);\n if (value !== \"none\" && this.width > 0) {\n this.textBufferView.setWrapWidth(this.width);\n }\n this.yogaNode.markDirty();\n this.requestRender();\n }\n }\n get tabIndicator() {\n return this._tabIndicator;\n }\n set tabIndicator(value) {\n if (this._tabIndicator !== value) {\n this._tabIndicator = value;\n if (value !== undefined) {\n this.textBufferView.setTabIndicator(value);\n }\n this.requestRender();\n }\n }\n get tabIndicatorColor() {\n return this._tabIndicatorColor;\n }\n set tabIndicatorColor(value) {\n const newColor = value ? parseColor(value) : undefined;\n if (this._tabIndicatorColor !== newColor) {\n this._tabIndicatorColor = newColor;\n if (newColor !== undefined) {\n this.textBufferView.setTabIndicatorColor(newColor);\n }\n this.requestRender();\n }\n }\n get truncate() {\n return this._truncate;\n }\n set truncate(value) {\n if (this._truncate !== value) {\n this._truncate = value;\n this.textBufferView.setTruncate(value);\n this.requestRender();\n }\n }\n onResize(width, height) {\n this.textBufferView.setViewport(this._scrollX, this._scrollY, width, height);\n this.yogaNode.markDirty();\n this.requestRender();\n this.emit(\"line-info-change\");\n }\n refreshLocalSelection() {\n if (this.lastLocalSelection) {\n return this.updateLocalSelection(this.lastLocalSelection);\n }\n return false;\n }\n updateLocalSelection(localSelection) {\n if (!localSelection?.isActive) {\n this.textBufferView.resetLocalSelection();\n return true;\n }\n return this.textBufferView.setLocalSelection(localSelection.anchorX, localSelection.anchorY, localSelection.focusX, localSelection.focusY, this._selectionBg, this._selectionFg);\n }\n updateTextInfo() {\n if (this.lastLocalSelection) {\n this.updateLocalSelection(this.lastLocalSelection);\n }\n this.yogaNode.markDirty();\n this.requestRender();\n this.emit(\"line-info-change\");\n }\n setupMeasureFunc() {\n const measureFunc = (width, widthMode, height, heightMode) => {\n let effectiveWidth;\n if (widthMode === MeasureMode.Undefined || isNaN(width)) {\n effectiveWidth = 0;\n } else {\n effectiveWidth = width;\n }\n const effectiveHeight = isNaN(height) ? 1 : height;\n const measureResult = this.textBufferView.measureForDimensions(Math.floor(effectiveWidth), Math.floor(effectiveHeight));\n const measuredWidth = measureResult ? Math.max(1, measureResult.maxWidth) : 1;\n const measuredHeight = measureResult ? Math.max(1, measureResult.lineCount) : 1;\n if (widthMode === MeasureMode.AtMost && this._positionType !== \"absolute\") {\n return {\n width: Math.min(effectiveWidth, measuredWidth),\n height: Math.min(effectiveHeight, measuredHeight)\n };\n }\n return {\n width: measuredWidth,\n height: measuredHeight\n };\n };\n this.yogaNode.setMeasureFunc(measureFunc);\n }\n shouldStartSelection(x, y) {\n if (!this.selectable)\n return false;\n const localX = x - this.x;\n const localY = y - this.y;\n return localX >= 0 && localX < this.width && localY >= 0 && localY < this.height;\n }\n onSelectionChanged(selection) {\n const localSelection = convertGlobalToLocalSelection(selection, this.x, this.y);\n this.lastLocalSelection = localSelection;\n let changed;\n if (!localSelection?.isActive) {\n this.textBufferView.resetLocalSelection();\n changed = true;\n } else if (selection?.isStart) {\n changed = this.textBufferView.setLocalSelection(localSelection.anchorX, localSelection.anchorY, localSelection.focusX, localSelection.focusY, this._selectionBg, this._selectionFg);\n } else {\n changed = this.textBufferView.updateLocalSelection(localSelection.anchorX, localSelection.anchorY, localSelection.focusX, localSelection.focusY, this._selectionBg, this._selectionFg);\n }\n if (changed) {\n this.requestRender();\n }\n return this.hasSelection();\n }\n getSelectedText() {\n return this.textBufferView.getSelectedText();\n }\n hasSelection() {\n return this.textBufferView.hasSelection();\n }\n getSelection() {\n return this.textBufferView.getSelection();\n }\n render(buffer, deltaTime) {\n if (!this.visible)\n return;\n this.markClean();\n this._ctx.addToHitGrid(this.x, this.y, this.width, this.height, this.num);\n this.renderSelf(buffer);\n if (this.buffered && this.frameBuffer) {\n buffer.drawFrameBuffer(this.x, this.y, this.frameBuffer);\n }\n }\n renderSelf(buffer) {\n if (this.textBuffer.ptr) {\n buffer.drawTextBuffer(this.textBufferView, this.x, this.y);\n }\n }\n destroy() {\n this.textBufferView.destroy();\n this.textBuffer.destroy();\n super.destroy();\n }\n onFgChanged(newColor) {}\n onBgChanged(newColor) {}\n onAttributesChanged(newAttributes) {}\n}\n\n// src/renderables/Code.ts\nclass CodeRenderable extends TextBufferRenderable {\n _content;\n _filetype;\n _syntaxStyle;\n _isHighlighting = false;\n _treeSitterClient;\n _highlightsDirty = false;\n _highlightSnapshotId = 0;\n _conceal;\n _drawUnstyledText;\n _shouldRenderTextBuffer = true;\n _streaming;\n _hadInitialContent = false;\n _lastHighlights = [];\n _onHighlight;\n _contentDefaultOptions = {\n content: \"\",\n conceal: true,\n drawUnstyledText: true,\n streaming: false\n };\n constructor(ctx, options) {\n super(ctx, options);\n this._content = options.content ?? this._contentDefaultOptions.content;\n this._filetype = options.filetype;\n this._syntaxStyle = options.syntaxStyle;\n this._treeSitterClient = options.treeSitterClient ?? getTreeSitterClient();\n this._conceal = options.conceal ?? this._contentDefaultOptions.conceal;\n this._drawUnstyledText = options.drawUnstyledText ?? this._contentDefaultOptions.drawUnstyledText;\n this._streaming = options.streaming ?? this._contentDefaultOptions.streaming;\n this._onHighlight = options.onHighlight;\n if (this._content.length > 0) {\n this.textBuffer.setText(this._content);\n this.updateTextInfo();\n this._shouldRenderTextBuffer = this._drawUnstyledText || !this._filetype;\n }\n this._highlightsDirty = this._content.length > 0;\n }\n get content() {\n return this._content;\n }\n set content(value) {\n if (this._content !== value) {\n this._content = value;\n this._highlightsDirty = true;\n this._highlightSnapshotId++;\n if (this._streaming && !this._drawUnstyledText && this._filetype) {\n return;\n }\n this.textBuffer.setText(value);\n this.updateTextInfo();\n }\n }\n get filetype() {\n return this._filetype;\n }\n set filetype(value) {\n if (this._filetype !== value) {\n this._filetype = value;\n this._highlightsDirty = true;\n }\n }\n get syntaxStyle() {\n return this._syntaxStyle;\n }\n set syntaxStyle(value) {\n if (this._syntaxStyle !== value) {\n this._syntaxStyle = value;\n this._highlightsDirty = true;\n }\n }\n get conceal() {\n return this._conceal;\n }\n set conceal(value) {\n if (this._conceal !== value) {\n this._conceal = value;\n this._highlightsDirty = true;\n }\n }\n get drawUnstyledText() {\n return this._drawUnstyledText;\n }\n set drawUnstyledText(value) {\n if (this._drawUnstyledText !== value) {\n this._drawUnstyledText = value;\n this._highlightsDirty = true;\n }\n }\n get streaming() {\n return this._streaming;\n }\n set streaming(value) {\n if (this._streaming !== value) {\n this._streaming = value;\n this._hadInitialContent = false;\n this._lastHighlights = [];\n this._highlightsDirty = true;\n }\n }\n get treeSitterClient() {\n return this._treeSitterClient;\n }\n set treeSitterClient(value) {\n if (this._treeSitterClient !== value) {\n this._treeSitterClient = value;\n this._highlightsDirty = true;\n }\n }\n get onHighlight() {\n return this._onHighlight;\n }\n set onHighlight(value) {\n if (this._onHighlight !== value) {\n this._onHighlight = value;\n this._highlightsDirty = true;\n }\n }\n get isHighlighting() {\n return this._isHighlighting;\n }\n ensureVisibleTextBeforeHighlight() {\n if (this.isDestroyed)\n return;\n const content = this._content;\n if (!this._filetype) {\n this._shouldRenderTextBuffer = true;\n return;\n }\n const isInitialContent = this._streaming && !this._hadInitialContent;\n const shouldDrawUnstyledNow = this._streaming ? isInitialContent && this._drawUnstyledText : this._drawUnstyledText;\n if (this._streaming && !isInitialContent) {\n this._shouldRenderTextBuffer = true;\n } else if (shouldDrawUnstyledNow) {\n this.textBuffer.setText(content);\n this._shouldRenderTextBuffer = true;\n } else {\n this._shouldRenderTextBuffer = false;\n }\n }\n async startHighlight() {\n const content = this._content;\n const filetype = this._filetype;\n const snapshotId = ++this._highlightSnapshotId;\n if (!filetype)\n return;\n const isInitialContent = this._streaming && !this._hadInitialContent;\n if (isInitialContent) {\n this._hadInitialContent = true;\n }\n this._isHighlighting = true;\n try {\n const result = await this._treeSitterClient.highlightOnce(content, filetype);\n if (snapshotId !== this._highlightSnapshotId) {\n return;\n }\n if (this.isDestroyed)\n return;\n let highlights = result.highlights ?? [];\n if (this._onHighlight && highlights.length >= 0) {\n const context = {\n content,\n filetype,\n syntaxStyle: this._syntaxStyle\n };\n const modified = await this._onHighlight(highlights, context);\n if (modified !== undefined) {\n highlights = modified;\n }\n }\n if (snapshotId !== this._highlightSnapshotId) {\n return;\n }\n if (this.isDestroyed)\n return;\n if (highlights.length > 0) {\n if (this._streaming) {\n this._lastHighlights = highlights;\n }\n const chunks = treeSitterToTextChunks(content, highlights, this._syntaxStyle, {\n enabled: this._conceal\n });\n const styledText = new StyledText(chunks);\n this.textBuffer.setStyledText(styledText);\n } else {\n this.textBuffer.setText(content);\n }\n this._shouldRenderTextBuffer = true;\n this._isHighlighting = false;\n this._highlightsDirty = false;\n this.updateTextInfo();\n this.requestRender();\n } catch (error) {\n if (snapshotId !== this._highlightSnapshotId) {\n return;\n }\n console.warn(\"Code highlighting failed, falling back to plain text:\", error);\n if (this.isDestroyed)\n return;\n this.textBuffer.setText(content);\n this._shouldRenderTextBuffer = true;\n this._isHighlighting = false;\n this._highlightsDirty = false;\n this.updateTextInfo();\n this.requestRender();\n }\n }\n getLineHighlights(lineIdx) {\n return this.textBuffer.getLineHighlights(lineIdx);\n }\n renderSelf(buffer) {\n if (this._highlightsDirty) {\n if (this.isDestroyed)\n return;\n if (this._content.length === 0) {\n this._shouldRenderTextBuffer = false;\n this._highlightsDirty = false;\n } else if (!this._filetype) {\n this._shouldRenderTextBuffer = true;\n this._highlightsDirty = false;\n } else {\n this.ensureVisibleTextBeforeHighlight();\n this._highlightsDirty = false;\n this.startHighlight();\n }\n }\n if (!this._shouldRenderTextBuffer)\n return;\n super.renderSelf(buffer);\n }\n}\n// src/renderables/TextNode.ts\nvar BrandedTextNodeRenderable = Symbol.for(\"@opentui/core/TextNodeRenderable\");\nfunction isTextNodeRenderable(obj) {\n return !!obj?.[BrandedTextNodeRenderable];\n}\nfunction styledTextToTextNodes(styledText) {\n return styledText.chunks.map((chunk) => {\n const node = new TextNodeRenderable({\n fg: chunk.fg,\n bg: chunk.bg,\n attributes: chunk.attributes,\n link: chunk.link\n });\n node.add(chunk.text);\n return node;\n });\n}\n\nclass TextNodeRenderable extends BaseRenderable {\n [BrandedTextNodeRenderable] = true;\n _fg;\n _bg;\n _attributes;\n _link;\n _children = [];\n parent = null;\n constructor(options) {\n super(options);\n this._fg = options.fg ? parseColor(options.fg) : undefined;\n this._bg = options.bg ? parseColor(options.bg) : undefined;\n this._attributes = options.attributes ?? 0;\n this._link = options.link;\n }\n get children() {\n return this._children;\n }\n set children(children) {\n this._children = children;\n this.requestRender();\n }\n requestRender() {\n this.markDirty();\n this.parent?.requestRender();\n }\n add(obj, index) {\n if (typeof obj === \"string\") {\n if (index !== undefined) {\n this._children.splice(index, 0, obj);\n this.requestRender();\n return index;\n }\n const insertIndex = this._children.length;\n this._children.push(obj);\n this.requestRender();\n return insertIndex;\n }\n if (isTextNodeRenderable(obj)) {\n if (index !== undefined) {\n this._children.splice(index, 0, obj);\n obj.parent = this;\n this.requestRender();\n return index;\n }\n const insertIndex = this._children.length;\n this._children.push(obj);\n obj.parent = this;\n this.requestRender();\n return insertIndex;\n }\n if (isStyledText(obj)) {\n const textNodes = styledTextToTextNodes(obj);\n if (index !== undefined) {\n this._children.splice(index, 0, ...textNodes);\n textNodes.forEach((node) => node.parent = this);\n this.requestRender();\n return index;\n }\n const insertIndex = this._children.length;\n this._children.push(...textNodes);\n textNodes.forEach((node) => node.parent = this);\n this.requestRender();\n return insertIndex;\n }\n throw new Error(\"TextNodeRenderable only accepts strings, TextNodeRenderable instances, or StyledText instances\");\n }\n replace(obj, index) {\n this._children[index] = obj;\n if (typeof obj !== \"string\") {\n obj.parent = this;\n }\n this.requestRender();\n }\n insertBefore(child, anchorNode) {\n if (!anchorNode || !isTextNodeRenderable(anchorNode)) {\n throw new Error(\"Anchor must be a TextNodeRenderable\");\n }\n const anchorIndex = this._children.indexOf(anchorNode);\n if (anchorIndex === -1) {\n throw new Error(\"Anchor node not found in children\");\n }\n if (typeof child === \"string\") {\n this._children.splice(anchorIndex, 0, child);\n } else if (isTextNodeRenderable(child)) {\n this._children.splice(anchorIndex, 0, child);\n child.parent = this;\n } else if (child instanceof StyledText) {\n const textNodes = styledTextToTextNodes(child);\n this._children.splice(anchorIndex, 0, ...textNodes);\n textNodes.forEach((node) => node.parent = this);\n } else {\n throw new Error(\"Child must be a string, TextNodeRenderable, or StyledText instance\");\n }\n this.requestRender();\n return this;\n }\n remove(id) {\n const childIndex = this.getRenderableIndex(id);\n if (childIndex === -1) {\n throw new Error(\"Child not found in children\");\n }\n const child = this._children[childIndex];\n this._children.splice(childIndex, 1);\n child.parent = null;\n this.requestRender();\n return this;\n }\n clear() {\n this._children = [];\n this.requestRender();\n }\n mergeStyles(parentStyle) {\n return {\n fg: this._fg ?? parentStyle.fg,\n bg: this._bg ?? parentStyle.bg,\n attributes: this._attributes | parentStyle.attributes,\n link: this._link ?? parentStyle.link\n };\n }\n gatherWithInheritedStyle(parentStyle = {\n fg: undefined,\n bg: undefined,\n attributes: 0\n }) {\n const currentStyle = this.mergeStyles(parentStyle);\n const chunks = [];\n for (const child of this._children) {\n if (typeof child === \"string\") {\n chunks.push({\n __isChunk: true,\n text: child,\n fg: currentStyle.fg,\n bg: currentStyle.bg,\n attributes: currentStyle.attributes,\n link: currentStyle.link\n });\n } else {\n const childChunks = child.gatherWithInheritedStyle(currentStyle);\n chunks.push(...childChunks);\n }\n }\n this.markClean();\n return chunks;\n }\n static fromString(text, options = {}) {\n const node = new TextNodeRenderable(options);\n node.add(text);\n return node;\n }\n static fromNodes(nodes, options = {}) {\n const node = new TextNodeRenderable(options);\n for (const childNode of nodes) {\n node.add(childNode);\n }\n return node;\n }\n toChunks(parentStyle = {\n fg: undefined,\n bg: undefined,\n attributes: 0\n }) {\n return this.gatherWithInheritedStyle(parentStyle);\n }\n getChildren() {\n return this._children.filter((child) => typeof child !== \"string\");\n }\n getChildrenCount() {\n return this._children.length;\n }\n getRenderable(id) {\n return this._children.find((child) => typeof child !== \"string\" && child.id === id);\n }\n getRenderableIndex(id) {\n return this._children.findIndex((child) => isTextNodeRenderable(child) && child.id === id);\n }\n get fg() {\n return this._fg;\n }\n set fg(fg2) {\n if (!fg2) {\n this._fg = undefined;\n this.requestRender();\n return;\n }\n this._fg = parseColor(fg2);\n this.requestRender();\n }\n set bg(bg2) {\n if (!bg2) {\n this._bg = undefined;\n this.requestRender();\n return;\n }\n this._bg = parseColor(bg2);\n this.requestRender();\n }\n get bg() {\n return this._bg;\n }\n set attributes(attributes) {\n this._attributes = attributes;\n this.requestRender();\n }\n get attributes() {\n return this._attributes;\n }\n set link(link2) {\n this._link = link2;\n this.requestRender();\n }\n get link() {\n return this._link;\n }\n findDescendantById(id) {\n return;\n }\n}\n\nclass RootTextNodeRenderable extends TextNodeRenderable {\n ctx;\n textParent;\n constructor(ctx, options, textParent) {\n super(options);\n this.ctx = ctx;\n this.textParent = textParent;\n }\n requestRender() {\n this.markDirty();\n this.ctx.requestRender();\n }\n}\n\n// src/renderables/composition/constructs.ts\nfunction Generic(props, ...children) {\n return h(VRenderable, props || {}, ...children);\n}\nfunction Box(props, ...children) {\n return h(BoxRenderable, props || {}, ...children);\n}\nfunction Text(props, ...children) {\n return h(TextRenderable, props || {}, ...children);\n}\nfunction ASCIIFont(props, ...children) {\n return h(ASCIIFontRenderable, props || {}, ...children);\n}\nfunction Input(props, ...children) {\n return h(InputRenderable, props || {}, ...children);\n}\nfunction Select(props, ...children) {\n return h(SelectRenderable, props || {}, ...children);\n}\nfunction TabSelect(props, ...children) {\n return h(TabSelectRenderable, props || {}, ...children);\n}\nfunction FrameBuffer(props, ...children) {\n return h(FrameBufferRenderable, props, ...children);\n}\nfunction Code(props, ...children) {\n return h(CodeRenderable, props, ...children);\n}\nfunction ScrollBox(props, ...children) {\n return h(ScrollBoxRenderable, props || {}, ...children);\n}\nfunction StyledText2(props, ...children) {\n const styledProps = props;\n const textNodeOptions = {\n ...styledProps,\n attributes: styledProps?.attributes ?? 0\n };\n const textNode = new TextNodeRenderable(textNodeOptions);\n for (const child of children) {\n textNode.add(child);\n }\n return textNode;\n}\nvar vstyles = {\n bold: (...children) => StyledText2({ attributes: TextAttributes.BOLD }, ...children),\n italic: (...children) => StyledText2({ attributes: TextAttributes.ITALIC }, ...children),\n underline: (...children) => StyledText2({ attributes: TextAttributes.UNDERLINE }, ...children),\n dim: (...children) => StyledText2({ attributes: TextAttributes.DIM }, ...children),\n blink: (...children) => StyledText2({ attributes: TextAttributes.BLINK }, ...children),\n inverse: (...children) => StyledText2({ attributes: TextAttributes.INVERSE }, ...children),\n hidden: (...children) => StyledText2({ attributes: TextAttributes.HIDDEN }, ...children),\n strikethrough: (...children) => StyledText2({ attributes: TextAttributes.STRIKETHROUGH }, ...children),\n boldItalic: (...children) => StyledText2({ attributes: TextAttributes.BOLD | TextAttributes.ITALIC }, ...children),\n boldUnderline: (...children) => StyledText2({ attributes: TextAttributes.BOLD | TextAttributes.UNDERLINE }, ...children),\n italicUnderline: (...children) => StyledText2({ attributes: TextAttributes.ITALIC | TextAttributes.UNDERLINE }, ...children),\n boldItalicUnderline: (...children) => StyledText2({ attributes: TextAttributes.BOLD | TextAttributes.ITALIC | TextAttributes.UNDERLINE }, ...children),\n color: (color, ...children) => StyledText2({ fg: color }, ...children),\n bgColor: (bgColor, ...children) => StyledText2({ bg: bgColor }, ...children),\n fg: (color, ...children) => StyledText2({ fg: color }, ...children),\n bg: (bgColor, ...children) => StyledText2({ bg: bgColor }, ...children),\n styled: (attributes = 0, ...children) => StyledText2({ attributes }, ...children)\n};\n// src/renderables/composition/VRenderable.ts\nclass VRenderable extends Renderable {\n options;\n constructor(ctx, options) {\n super(ctx, options);\n this.options = options;\n }\n renderSelf(buffer, deltaTime) {\n if (this.options.render) {\n this.options.render.call(this.options, buffer, deltaTime, this);\n }\n }\n}\n// src/renderables/LineNumberRenderable.ts\nclass GutterRenderable extends Renderable {\n target;\n _fg;\n _bg;\n _minWidth;\n _paddingRight;\n _lineColorsGutter;\n _lineColorsContent;\n _lineSigns;\n _lineNumberOffset;\n _hideLineNumbers;\n _lineNumbers;\n _maxBeforeWidth = 0;\n _maxAfterWidth = 0;\n _lastKnownLineCount = 0;\n _lastKnownScrollY = 0;\n constructor(ctx, target, options) {\n super(ctx, {\n id: options.id,\n width: \"auto\",\n height: \"auto\",\n flexGrow: 0,\n flexShrink: 0,\n buffered: options.buffered\n });\n this.target = target;\n this._fg = options.fg;\n this._bg = options.bg;\n this._minWidth = options.minWidth;\n this._paddingRight = options.paddingRight;\n this._lineColorsGutter = options.lineColorsGutter;\n this._lineColorsContent = options.lineColorsContent;\n this._lineSigns = options.lineSigns;\n this._lineNumberOffset = options.lineNumberOffset;\n this._hideLineNumbers = options.hideLineNumbers;\n this._lineNumbers = options.lineNumbers ?? new Map;\n this._lastKnownLineCount = this.target.virtualLineCount;\n this._lastKnownScrollY = this.target.scrollY;\n this.calculateSignWidths();\n this.setupMeasureFunc();\n this.onLifecyclePass = () => {\n const currentLineCount = this.target.virtualLineCount;\n if (currentLineCount !== this._lastKnownLineCount) {\n this._lastKnownLineCount = currentLineCount;\n this.yogaNode.markDirty();\n this.requestRender();\n }\n };\n }\n setupMeasureFunc() {\n const measureFunc = (width, widthMode, height, heightMode) => {\n const gutterWidth = this.calculateWidth();\n const gutterHeight = this.target.virtualLineCount;\n return {\n width: gutterWidth,\n height: gutterHeight\n };\n };\n this.yogaNode.setMeasureFunc(measureFunc);\n }\n remeasure() {\n this.yogaNode.markDirty();\n }\n setLineNumberOffset(offset) {\n if (this._lineNumberOffset !== offset) {\n this._lineNumberOffset = offset;\n this.yogaNode.markDirty();\n this.requestRender();\n }\n }\n setHideLineNumbers(hideLineNumbers) {\n this._hideLineNumbers = hideLineNumbers;\n this.yogaNode.markDirty();\n this.requestRender();\n }\n setLineNumbers(lineNumbers) {\n this._lineNumbers = lineNumbers;\n this.yogaNode.markDirty();\n this.requestRender();\n }\n calculateSignWidths() {\n this._maxBeforeWidth = 0;\n this._maxAfterWidth = 0;\n for (const sign of this._lineSigns.values()) {\n if (sign.before) {\n const width = Bun.stringWidth(sign.before);\n this._maxBeforeWidth = Math.max(this._maxBeforeWidth, width);\n }\n if (sign.after) {\n const width = Bun.stringWidth(sign.after);\n this._maxAfterWidth = Math.max(this._maxAfterWidth, width);\n }\n }\n }\n calculateWidth() {\n const totalLines = this.target.virtualLineCount;\n let maxLineNumber = totalLines + this._lineNumberOffset;\n if (this._lineNumbers.size > 0) {\n for (const customLineNum of this._lineNumbers.values()) {\n maxLineNumber = Math.max(maxLineNumber, customLineNum);\n }\n }\n const digits = maxLineNumber > 0 ? Math.floor(Math.log10(maxLineNumber)) + 1 : 1;\n const baseWidth = Math.max(this._minWidth, digits + this._paddingRight + 1);\n return baseWidth + this._maxBeforeWidth + this._maxAfterWidth;\n }\n setLineColors(lineColorsGutter, lineColorsContent) {\n this._lineColorsGutter = lineColorsGutter;\n this._lineColorsContent = lineColorsContent;\n this.requestRender();\n }\n getLineColors() {\n return {\n gutter: this._lineColorsGutter,\n content: this._lineColorsContent\n };\n }\n setLineSigns(lineSigns) {\n const oldMaxBefore = this._maxBeforeWidth;\n const oldMaxAfter = this._maxAfterWidth;\n this._lineSigns = lineSigns;\n this.calculateSignWidths();\n if (this._maxBeforeWidth !== oldMaxBefore || this._maxAfterWidth !== oldMaxAfter) {\n this.yogaNode.markDirty();\n }\n this.requestRender();\n }\n getLineSigns() {\n return this._lineSigns;\n }\n renderSelf(buffer) {\n const currentScrollY = this.target.scrollY;\n const scrollChanged = currentScrollY !== this._lastKnownScrollY;\n if (this.buffered && !this.isDirty && !scrollChanged) {\n return;\n }\n this._lastKnownScrollY = currentScrollY;\n this.refreshFrameBuffer(buffer);\n }\n refreshFrameBuffer(buffer) {\n const startX = this.buffered ? 0 : this.x;\n const startY = this.buffered ? 0 : this.y;\n if (this.buffered) {\n buffer.clear(this._bg);\n } else if (this._bg.a > 0) {\n buffer.fillRect(startX, startY, this.width, this.height, this._bg);\n }\n const lineInfo = this.target.lineInfo;\n if (!lineInfo || !lineInfo.lineSources)\n return;\n const sources = lineInfo.lineSources;\n let lastSource = -1;\n const startLine = this.target.scrollY;\n if (startLine >= sources.length)\n return;\n lastSource = startLine > 0 ? sources[startLine - 1] : -1;\n for (let i = 0;i < this.height; i++) {\n const visualLineIndex = startLine + i;\n if (visualLineIndex >= sources.length)\n break;\n const logicalLine = sources[visualLineIndex];\n const lineBg = this._lineColorsGutter.get(logicalLine) ?? this._bg;\n if (lineBg !== this._bg) {\n buffer.fillRect(startX, startY + i, this.width, 1, lineBg);\n }\n if (logicalLine === lastSource) {} else {\n let currentX = startX;\n const sign = this._lineSigns.get(logicalLine);\n if (sign?.before) {\n const beforeWidth = Bun.stringWidth(sign.before);\n const padding = this._maxBeforeWidth - beforeWidth;\n currentX += padding;\n const beforeColor = sign.beforeColor ? parseColor(sign.beforeColor) : this._fg;\n buffer.drawText(sign.before, currentX, startY + i, beforeColor, lineBg);\n currentX += beforeWidth;\n } else if (this._maxBeforeWidth > 0) {\n currentX += this._maxBeforeWidth;\n }\n if (!this._hideLineNumbers.has(logicalLine)) {\n const customLineNum = this._lineNumbers.get(logicalLine);\n const lineNum = customLineNum !== undefined ? customLineNum : logicalLine + 1 + this._lineNumberOffset;\n const lineNumStr = lineNum.toString();\n const lineNumWidth = lineNumStr.length;\n const availableSpace = this.width - this._maxBeforeWidth - this._maxAfterWidth - this._paddingRight;\n const lineNumX = startX + this._maxBeforeWidth + 1 + availableSpace - lineNumWidth - 1;\n if (lineNumX >= startX + this._maxBeforeWidth + 1) {\n buffer.drawText(lineNumStr, lineNumX, startY + i, this._fg, lineBg);\n }\n }\n if (sign?.after) {\n const afterX = startX + this.width - this._paddingRight - this._maxAfterWidth;\n const afterColor = sign.afterColor ? parseColor(sign.afterColor) : this._fg;\n buffer.drawText(sign.after, afterX, startY + i, afterColor, lineBg);\n }\n }\n lastSource = logicalLine;\n }\n }\n}\nfunction darkenColor(color) {\n return RGBA.fromValues(color.r * 0.8, color.g * 0.8, color.b * 0.8, color.a);\n}\n\nclass LineNumberRenderable extends Renderable {\n gutter = null;\n target = null;\n _lineColorsGutter;\n _lineColorsContent;\n _lineSigns;\n _fg;\n _bg;\n _minWidth;\n _paddingRight;\n _lineNumberOffset;\n _hideLineNumbers;\n _lineNumbers;\n _isDestroying = false;\n handleLineInfoChange = () => {\n this.gutter?.remeasure();\n this.requestRender();\n };\n parseLineColor(line, color) {\n if (typeof color === \"object\" && \"gutter\" in color) {\n const config = color;\n if (config.gutter) {\n this._lineColorsGutter.set(line, parseColor(config.gutter));\n }\n if (config.content) {\n this._lineColorsContent.set(line, parseColor(config.content));\n } else if (config.gutter) {\n this._lineColorsContent.set(line, darkenColor(parseColor(config.gutter)));\n }\n } else {\n const parsedColor = parseColor(color);\n this._lineColorsGutter.set(line, parsedColor);\n this._lineColorsContent.set(line, darkenColor(parsedColor));\n }\n }\n constructor(ctx, options) {\n super(ctx, {\n ...options,\n flexDirection: \"row\",\n height: \"auto\"\n });\n this._fg = parseColor(options.fg ?? \"#888888\");\n this._bg = parseColor(options.bg ?? \"transparent\");\n this._minWidth = options.minWidth ?? 3;\n this._paddingRight = options.paddingRight ?? 1;\n this._lineNumberOffset = options.lineNumberOffset ?? 0;\n this._hideLineNumbers = options.hideLineNumbers ?? new Set;\n this._lineNumbers = options.lineNumbers ?? new Map;\n this._lineColorsGutter = new Map;\n this._lineColorsContent = new Map;\n if (options.lineColors) {\n for (const [line, color] of options.lineColors) {\n this.parseLineColor(line, color);\n }\n }\n this._lineSigns = new Map;\n if (options.lineSigns) {\n for (const [line, sign] of options.lineSigns) {\n this._lineSigns.set(line, sign);\n }\n }\n if (options.target) {\n this.setTarget(options.target);\n }\n }\n setTarget(target) {\n if (this.target === target)\n return;\n if (this.target) {\n this.target.off(\"line-info-change\", this.handleLineInfoChange);\n super.remove(this.target.id);\n }\n if (this.gutter) {\n super.remove(this.gutter.id);\n this.gutter = null;\n }\n this.target = target;\n this.target.on(\"line-info-change\", this.handleLineInfoChange);\n this.gutter = new GutterRenderable(this.ctx, this.target, {\n fg: this._fg,\n bg: this._bg,\n minWidth: this._minWidth,\n paddingRight: this._paddingRight,\n lineColorsGutter: this._lineColorsGutter,\n lineColorsContent: this._lineColorsContent,\n lineSigns: this._lineSigns,\n lineNumberOffset: this._lineNumberOffset,\n hideLineNumbers: this._hideLineNumbers,\n lineNumbers: this._lineNumbers,\n id: this.id ? `${this.id}-gutter` : undefined,\n buffered: true\n });\n super.add(this.gutter);\n super.add(this.target);\n }\n add(child) {\n if (!this.target && \"lineInfo\" in child && \"lineCount\" in child && \"virtualLineCount\" in child && \"scrollY\" in child) {\n this.setTarget(child);\n return this.getChildrenCount() - 1;\n }\n return -1;\n }\n remove(id) {\n if (this._isDestroying) {\n super.remove(id);\n return;\n }\n if (this.gutter && id === this.gutter.id) {\n throw new Error(\"LineNumberRenderable: Cannot remove gutter directly.\");\n }\n if (this.target && id === this.target.id) {\n throw new Error(\"LineNumberRenderable: Cannot remove target directly. Use clearTarget() instead.\");\n }\n super.remove(id);\n }\n destroyRecursively() {\n this._isDestroying = true;\n if (this.target) {\n this.target.off(\"line-info-change\", this.handleLineInfoChange);\n }\n super.destroyRecursively();\n this.gutter = null;\n this.target = null;\n }\n clearTarget() {\n if (this.target) {\n this.target.off(\"line-info-change\", this.handleLineInfoChange);\n super.remove(this.target.id);\n this.target = null;\n }\n if (this.gutter) {\n super.remove(this.gutter.id);\n this.gutter = null;\n }\n }\n renderSelf(buffer) {\n if (!this.target || !this.gutter)\n return;\n const lineInfo = this.target.lineInfo;\n if (!lineInfo || !lineInfo.lineSources)\n return;\n const sources = lineInfo.lineSources;\n const startLine = this.target.scrollY;\n if (startLine >= sources.length)\n return;\n const gutterWidth = this.gutter.visible ? this.gutter.width : 0;\n const contentWidth = this.width - gutterWidth;\n for (let i = 0;i < this.height; i++) {\n const visualLineIndex = startLine + i;\n if (visualLineIndex >= sources.length)\n break;\n const logicalLine = sources[visualLineIndex];\n const lineBg = this._lineColorsContent.get(logicalLine);\n if (lineBg) {\n buffer.fillRect(this.x + gutterWidth, this.y + i, contentWidth, 1, lineBg);\n }\n }\n }\n set showLineNumbers(value) {\n if (this.gutter) {\n this.gutter.visible = value;\n }\n }\n get showLineNumbers() {\n return this.gutter?.visible ?? false;\n }\n setLineColor(line, color) {\n this.parseLineColor(line, color);\n if (this.gutter) {\n this.gutter.setLineColors(this._lineColorsGutter, this._lineColorsContent);\n }\n }\n clearLineColor(line) {\n this._lineColorsGutter.delete(line);\n this._lineColorsContent.delete(line);\n if (this.gutter) {\n this.gutter.setLineColors(this._lineColorsGutter, this._lineColorsContent);\n }\n }\n clearAllLineColors() {\n this._lineColorsGutter.clear();\n this._lineColorsContent.clear();\n if (this.gutter) {\n this.gutter.setLineColors(this._lineColorsGutter, this._lineColorsContent);\n }\n }\n setLineColors(lineColors) {\n this._lineColorsGutter.clear();\n this._lineColorsContent.clear();\n for (const [line, color] of lineColors) {\n this.parseLineColor(line, color);\n }\n if (this.gutter) {\n this.gutter.setLineColors(this._lineColorsGutter, this._lineColorsContent);\n }\n }\n getLineColors() {\n return {\n gutter: this._lineColorsGutter,\n content: this._lineColorsContent\n };\n }\n setLineSign(line, sign) {\n this._lineSigns.set(line, sign);\n if (this.gutter) {\n this.gutter.setLineSigns(this._lineSigns);\n }\n }\n clearLineSign(line) {\n this._lineSigns.delete(line);\n if (this.gutter) {\n this.gutter.setLineSigns(this._lineSigns);\n }\n }\n clearAllLineSigns() {\n this._lineSigns.clear();\n if (this.gutter) {\n this.gutter.setLineSigns(this._lineSigns);\n }\n }\n setLineSigns(lineSigns) {\n this._lineSigns.clear();\n for (const [line, sign] of lineSigns) {\n this._lineSigns.set(line, sign);\n }\n if (this.gutter) {\n this.gutter.setLineSigns(this._lineSigns);\n }\n }\n getLineSigns() {\n return this._lineSigns;\n }\n set lineNumberOffset(value) {\n if (this._lineNumberOffset !== value) {\n this._lineNumberOffset = value;\n if (this.gutter) {\n this.gutter.setLineNumberOffset(value);\n }\n }\n }\n get lineNumberOffset() {\n return this._lineNumberOffset;\n }\n setHideLineNumbers(hideLineNumbers) {\n this._hideLineNumbers = hideLineNumbers;\n if (this.gutter) {\n this.gutter.setHideLineNumbers(hideLineNumbers);\n }\n }\n getHideLineNumbers() {\n return this._hideLineNumbers;\n }\n setLineNumbers(lineNumbers) {\n this._lineNumbers = lineNumbers;\n if (this.gutter) {\n this.gutter.setLineNumbers(lineNumbers);\n }\n }\n getLineNumbers() {\n return this._lineNumbers;\n }\n highlightLines(startLine, endLine, color) {\n for (let i = startLine;i <= endLine; i++) {\n this.parseLineColor(i, color);\n }\n if (this.gutter) {\n this.gutter.setLineColors(this._lineColorsGutter, this._lineColorsContent);\n }\n }\n clearHighlightLines(startLine, endLine) {\n for (let i = startLine;i <= endLine; i++) {\n this._lineColorsGutter.delete(i);\n this._lineColorsContent.delete(i);\n }\n if (this.gutter) {\n this.gutter.setLineColors(this._lineColorsGutter, this._lineColorsContent);\n }\n }\n}\n\n// ../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/base.js\nclass Diff {\n diff(oldStr, newStr, options = {}) {\n let callback;\n if (typeof options === \"function\") {\n callback = options;\n options = {};\n } else if (\"callback\" in options) {\n callback = options.callback;\n }\n const oldString = this.castInput(oldStr, options);\n const newString = this.castInput(newStr, options);\n const oldTokens = this.removeEmpty(this.tokenize(oldString, options));\n const newTokens = this.removeEmpty(this.tokenize(newString, options));\n return this.diffWithOptionsObj(oldTokens, newTokens, options, callback);\n }\n diffWithOptionsObj(oldTokens, newTokens, options, callback) {\n var _a;\n const done = (value) => {\n value = this.postProcess(value, options);\n if (callback) {\n setTimeout(function() {\n callback(value);\n }, 0);\n return;\n } else {\n return value;\n }\n };\n const newLen = newTokens.length, oldLen = oldTokens.length;\n let editLength = 1;\n let maxEditLength = newLen + oldLen;\n if (options.maxEditLength != null) {\n maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n }\n const maxExecutionTime = (_a = options.timeout) !== null && _a !== undefined ? _a : Infinity;\n const abortAfterTimestamp = Date.now() + maxExecutionTime;\n const bestPath = [{ oldPos: -1, lastComponent: undefined }];\n let newPos = this.extractCommon(bestPath[0], newTokens, oldTokens, 0, options);\n if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n return done(this.buildValues(bestPath[0].lastComponent, newTokens, oldTokens));\n }\n let minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity;\n const execEditLength = () => {\n for (let diagonalPath = Math.max(minDiagonalToConsider, -editLength);diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {\n let basePath;\n const removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1];\n if (removePath) {\n bestPath[diagonalPath - 1] = undefined;\n }\n let canAdd = false;\n if (addPath) {\n const addPathNewPos = addPath.oldPos - diagonalPath;\n canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;\n }\n const canRemove = removePath && removePath.oldPos + 1 < oldLen;\n if (!canAdd && !canRemove) {\n bestPath[diagonalPath] = undefined;\n continue;\n }\n if (!canRemove || canAdd && removePath.oldPos < addPath.oldPos) {\n basePath = this.addToPath(addPath, true, false, 0, options);\n } else {\n basePath = this.addToPath(removePath, false, true, 1, options);\n }\n newPos = this.extractCommon(basePath, newTokens, oldTokens, diagonalPath, options);\n if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n return done(this.buildValues(basePath.lastComponent, newTokens, oldTokens)) || true;\n } else {\n bestPath[diagonalPath] = basePath;\n if (basePath.oldPos + 1 >= oldLen) {\n maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);\n }\n if (newPos + 1 >= newLen) {\n minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);\n }\n }\n }\n editLength++;\n };\n if (callback) {\n (function exec() {\n setTimeout(function() {\n if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {\n return callback(undefined);\n }\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n })();\n } else {\n while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {\n const ret = execEditLength();\n if (ret) {\n return ret;\n }\n }\n }\n }\n addToPath(path, added, removed, oldPosInc, options) {\n const last = path.lastComponent;\n if (last && !options.oneChangePerToken && last.added === added && last.removed === removed) {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: { count: last.count + 1, added, removed, previousComponent: last.previousComponent }\n };\n } else {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: { count: 1, added, removed, previousComponent: last }\n };\n }\n }\n extractCommon(basePath, newTokens, oldTokens, diagonalPath, options) {\n const newLen = newTokens.length, oldLen = oldTokens.length;\n let oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0;\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldTokens[oldPos + 1], newTokens[newPos + 1], options)) {\n newPos++;\n oldPos++;\n commonCount++;\n if (options.oneChangePerToken) {\n basePath.lastComponent = { count: 1, previousComponent: basePath.lastComponent, added: false, removed: false };\n }\n }\n if (commonCount && !options.oneChangePerToken) {\n basePath.lastComponent = { count: commonCount, previousComponent: basePath.lastComponent, added: false, removed: false };\n }\n basePath.oldPos = oldPos;\n return newPos;\n }\n equals(left, right, options) {\n if (options.comparator) {\n return options.comparator(left, right);\n } else {\n return left === right || !!options.ignoreCase && left.toLowerCase() === right.toLowerCase();\n }\n }\n removeEmpty(array) {\n const ret = [];\n for (let i = 0;i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n return ret;\n }\n castInput(value, options) {\n return value;\n }\n tokenize(value, options) {\n return Array.from(value);\n }\n join(chars) {\n return chars.join(\"\");\n }\n postProcess(changeObjects, options) {\n return changeObjects;\n }\n get useLongestToken() {\n return false;\n }\n buildValues(lastComponent, newTokens, oldTokens) {\n const components = [];\n let nextComponent;\n while (lastComponent) {\n components.push(lastComponent);\n nextComponent = lastComponent.previousComponent;\n delete lastComponent.previousComponent;\n lastComponent = nextComponent;\n }\n components.reverse();\n const componentLen = components.length;\n let componentPos = 0, newPos = 0, oldPos = 0;\n for (;componentPos < componentLen; componentPos++) {\n const component = components[componentPos];\n if (!component.removed) {\n if (!component.added && this.useLongestToken) {\n let value = newTokens.slice(newPos, newPos + component.count);\n value = value.map(function(value2, i) {\n const oldValue = oldTokens[oldPos + i];\n return oldValue.length > value2.length ? oldValue : value2;\n });\n component.value = this.join(value);\n } else {\n component.value = this.join(newTokens.slice(newPos, newPos + component.count));\n }\n newPos += component.count;\n if (!component.added) {\n oldPos += component.count;\n }\n } else {\n component.value = this.join(oldTokens.slice(oldPos, oldPos + component.count));\n oldPos += component.count;\n }\n }\n return components;\n }\n}\n\n// ../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/character.js\nclass CharacterDiff extends Diff {\n}\nvar characterDiff = new CharacterDiff;\n\n// ../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/util/string.js\nfunction longestCommonPrefix(str1, str2) {\n let i;\n for (i = 0;i < str1.length && i < str2.length; i++) {\n if (str1[i] != str2[i]) {\n return str1.slice(0, i);\n }\n }\n return str1.slice(0, i);\n}\nfunction longestCommonSuffix(str1, str2) {\n let i;\n if (!str1 || !str2 || str1[str1.length - 1] != str2[str2.length - 1]) {\n return \"\";\n }\n for (i = 0;i < str1.length && i < str2.length; i++) {\n if (str1[str1.length - (i + 1)] != str2[str2.length - (i + 1)]) {\n return str1.slice(-i);\n }\n }\n return str1.slice(-i);\n}\nfunction replacePrefix(string, oldPrefix, newPrefix) {\n if (string.slice(0, oldPrefix.length) != oldPrefix) {\n throw Error(`string ${JSON.stringify(string)} doesn't start with prefix ${JSON.stringify(oldPrefix)}; this is a bug`);\n }\n return newPrefix + string.slice(oldPrefix.length);\n}\nfunction replaceSuffix(string, oldSuffix, newSuffix) {\n if (!oldSuffix) {\n return string + newSuffix;\n }\n if (string.slice(-oldSuffix.length) != oldSuffix) {\n throw Error(`string ${JSON.stringify(string)} doesn't end with suffix ${JSON.stringify(oldSuffix)}; this is a bug`);\n }\n return string.slice(0, -oldSuffix.length) + newSuffix;\n}\nfunction removePrefix(string, oldPrefix) {\n return replacePrefix(string, oldPrefix, \"\");\n}\nfunction removeSuffix(string, oldSuffix) {\n return replaceSuffix(string, oldSuffix, \"\");\n}\nfunction maximumOverlap(string1, string2) {\n return string2.slice(0, overlapCount(string1, string2));\n}\nfunction overlapCount(a, b) {\n let startA = 0;\n if (a.length > b.length) {\n startA = a.length - b.length;\n }\n let endB = b.length;\n if (a.length < b.length) {\n endB = a.length;\n }\n const map = Array(endB);\n let k = 0;\n map[0] = 0;\n for (let j = 1;j < endB; j++) {\n if (b[j] == b[k]) {\n map[j] = map[k];\n } else {\n map[j] = k;\n }\n while (k > 0 && b[j] != b[k]) {\n k = map[k];\n }\n if (b[j] == b[k]) {\n k++;\n }\n }\n k = 0;\n for (let i = startA;i < a.length; i++) {\n while (k > 0 && a[i] != b[k]) {\n k = map[k];\n }\n if (a[i] == b[k]) {\n k++;\n }\n }\n return k;\n}\nfunction trailingWs(string) {\n let i;\n for (i = string.length - 1;i >= 0; i--) {\n if (!string[i].match(/\\s/)) {\n break;\n }\n }\n return string.substring(i + 1);\n}\nfunction leadingWs(string) {\n const match = string.match(/^\\s*/);\n return match ? match[0] : \"\";\n}\n\n// ../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/word.js\nvar extendedWordChars = \"a-zA-Z0-9_\\\\u{C0}-\\\\u{FF}\\\\u{D8}-\\\\u{F6}\\\\u{F8}-\\\\u{2C6}\\\\u{2C8}-\\\\u{2D7}\\\\u{2DE}-\\\\u{2FF}\\\\u{1E00}-\\\\u{1EFF}\";\nvar tokenizeIncludingWhitespace = new RegExp(`[${extendedWordChars}]+|\\\\s+|[^${extendedWordChars}]`, \"ug\");\n\nclass WordDiff extends Diff {\n equals(left, right, options) {\n if (options.ignoreCase) {\n left = left.toLowerCase();\n right = right.toLowerCase();\n }\n return left.trim() === right.trim();\n }\n tokenize(value, options = {}) {\n let parts;\n if (options.intlSegmenter) {\n const segmenter = options.intlSegmenter;\n if (segmenter.resolvedOptions().granularity != \"word\") {\n throw new Error('The segmenter passed must have a granularity of \"word\"');\n }\n parts = Array.from(segmenter.segment(value), (segment) => segment.segment);\n } else {\n parts = value.match(tokenizeIncludingWhitespace) || [];\n }\n const tokens = [];\n let prevPart = null;\n parts.forEach((part) => {\n if (/\\s/.test(part)) {\n if (prevPart == null) {\n tokens.push(part);\n } else {\n tokens.push(tokens.pop() + part);\n }\n } else if (prevPart != null && /\\s/.test(prevPart)) {\n if (tokens[tokens.length - 1] == prevPart) {\n tokens.push(tokens.pop() + part);\n } else {\n tokens.push(prevPart + part);\n }\n } else {\n tokens.push(part);\n }\n prevPart = part;\n });\n return tokens;\n }\n join(tokens) {\n return tokens.map((token, i) => {\n if (i == 0) {\n return token;\n } else {\n return token.replace(/^\\s+/, \"\");\n }\n }).join(\"\");\n }\n postProcess(changes, options) {\n if (!changes || options.oneChangePerToken) {\n return changes;\n }\n let lastKeep = null;\n let insertion = null;\n let deletion = null;\n changes.forEach((change) => {\n if (change.added) {\n insertion = change;\n } else if (change.removed) {\n deletion = change;\n } else {\n if (insertion || deletion) {\n dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, change);\n }\n lastKeep = change;\n insertion = null;\n deletion = null;\n }\n });\n if (insertion || deletion) {\n dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, null);\n }\n return changes;\n }\n}\nvar wordDiff = new WordDiff;\nfunction dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep) {\n if (deletion && insertion) {\n const oldWsPrefix = leadingWs(deletion.value);\n const oldWsSuffix = trailingWs(deletion.value);\n const newWsPrefix = leadingWs(insertion.value);\n const newWsSuffix = trailingWs(insertion.value);\n if (startKeep) {\n const commonWsPrefix = longestCommonPrefix(oldWsPrefix, newWsPrefix);\n startKeep.value = replaceSuffix(startKeep.value, newWsPrefix, commonWsPrefix);\n deletion.value = removePrefix(deletion.value, commonWsPrefix);\n insertion.value = removePrefix(insertion.value, commonWsPrefix);\n }\n if (endKeep) {\n const commonWsSuffix = longestCommonSuffix(oldWsSuffix, newWsSuffix);\n endKeep.value = replacePrefix(endKeep.value, newWsSuffix, commonWsSuffix);\n deletion.value = removeSuffix(deletion.value, commonWsSuffix);\n insertion.value = removeSuffix(insertion.value, commonWsSuffix);\n }\n } else if (insertion) {\n if (startKeep) {\n const ws = leadingWs(insertion.value);\n insertion.value = insertion.value.substring(ws.length);\n }\n if (endKeep) {\n const ws = leadingWs(endKeep.value);\n endKeep.value = endKeep.value.substring(ws.length);\n }\n } else if (startKeep && endKeep) {\n const newWsFull = leadingWs(endKeep.value), delWsStart = leadingWs(deletion.value), delWsEnd = trailingWs(deletion.value);\n const newWsStart = longestCommonPrefix(newWsFull, delWsStart);\n deletion.value = removePrefix(deletion.value, newWsStart);\n const newWsEnd = longestCommonSuffix(removePrefix(newWsFull, newWsStart), delWsEnd);\n deletion.value = removeSuffix(deletion.value, newWsEnd);\n endKeep.value = replacePrefix(endKeep.value, newWsFull, newWsEnd);\n startKeep.value = replaceSuffix(startKeep.value, newWsFull, newWsFull.slice(0, newWsFull.length - newWsEnd.length));\n } else if (endKeep) {\n const endKeepWsPrefix = leadingWs(endKeep.value);\n const deletionWsSuffix = trailingWs(deletion.value);\n const overlap = maximumOverlap(deletionWsSuffix, endKeepWsPrefix);\n deletion.value = removeSuffix(deletion.value, overlap);\n } else if (startKeep) {\n const startKeepWsSuffix = trailingWs(startKeep.value);\n const deletionWsPrefix = leadingWs(deletion.value);\n const overlap = maximumOverlap(startKeepWsSuffix, deletionWsPrefix);\n deletion.value = removePrefix(deletion.value, overlap);\n }\n}\n\nclass WordsWithSpaceDiff extends Diff {\n tokenize(value) {\n const regex = new RegExp(`(\\\\r?\\\\n)|[${extendedWordChars}]+|[^\\\\S\\\\n\\\\r]+|[^${extendedWordChars}]`, \"ug\");\n return value.match(regex) || [];\n }\n}\nvar wordsWithSpaceDiff = new WordsWithSpaceDiff;\n\n// ../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/line.js\nclass LineDiff extends Diff {\n constructor() {\n super(...arguments);\n this.tokenize = tokenize;\n }\n equals(left, right, options) {\n if (options.ignoreWhitespace) {\n if (!options.newlineIsToken || !left.includes(`\n`)) {\n left = left.trim();\n }\n if (!options.newlineIsToken || !right.includes(`\n`)) {\n right = right.trim();\n }\n } else if (options.ignoreNewlineAtEof && !options.newlineIsToken) {\n if (left.endsWith(`\n`)) {\n left = left.slice(0, -1);\n }\n if (right.endsWith(`\n`)) {\n right = right.slice(0, -1);\n }\n }\n return super.equals(left, right, options);\n }\n}\nvar lineDiff = new LineDiff;\nfunction tokenize(value, options) {\n if (options.stripTrailingCr) {\n value = value.replace(/\\r\\n/g, `\n`);\n }\n const retLines = [], linesAndNewlines = value.split(/(\\n|\\r\\n)/);\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n linesAndNewlines.pop();\n }\n for (let i = 0;i < linesAndNewlines.length; i++) {\n const line = linesAndNewlines[i];\n if (i % 2 && !options.newlineIsToken) {\n retLines[retLines.length - 1] += line;\n } else {\n retLines.push(line);\n }\n }\n return retLines;\n}\n\n// ../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/sentence.js\nfunction isSentenceEndPunct(char) {\n return char == \".\" || char == \"!\" || char == \"?\";\n}\n\nclass SentenceDiff extends Diff {\n tokenize(value) {\n var _a;\n const result = [];\n let tokenStartI = 0;\n for (let i = 0;i < value.length; i++) {\n if (i == value.length - 1) {\n result.push(value.slice(tokenStartI));\n break;\n }\n if (isSentenceEndPunct(value[i]) && value[i + 1].match(/\\s/)) {\n result.push(value.slice(tokenStartI, i + 1));\n i = tokenStartI = i + 1;\n while ((_a = value[i + 1]) === null || _a === undefined ? undefined : _a.match(/\\s/)) {\n i++;\n }\n result.push(value.slice(tokenStartI, i + 1));\n tokenStartI = i + 1;\n }\n }\n return result;\n }\n}\nvar sentenceDiff = new SentenceDiff;\n\n// ../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/css.js\nclass CssDiff extends Diff {\n tokenize(value) {\n return value.split(/([{}:;,]|\\s+)/);\n }\n}\nvar cssDiff = new CssDiff;\n\n// ../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/json.js\nclass JsonDiff extends Diff {\n constructor() {\n super(...arguments);\n this.tokenize = tokenize;\n }\n get useLongestToken() {\n return true;\n }\n castInput(value, options) {\n const { undefinedReplacement, stringifyReplacer = (k, v) => typeof v === \"undefined\" ? undefinedReplacement : v } = options;\n return typeof value === \"string\" ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), null, \" \");\n }\n equals(left, right, options) {\n return super.equals(left.replace(/,([\\r\\n])/g, \"$1\"), right.replace(/,([\\r\\n])/g, \"$1\"), options);\n }\n}\nvar jsonDiff = new JsonDiff;\nfunction canonicalize(obj, stack, replacementStack, replacer, key) {\n stack = stack || [];\n replacementStack = replacementStack || [];\n if (replacer) {\n obj = replacer(key === undefined ? \"\" : key, obj);\n }\n let i;\n for (i = 0;i < stack.length; i += 1) {\n if (stack[i] === obj) {\n return replacementStack[i];\n }\n }\n let canonicalizedObj;\n if (Object.prototype.toString.call(obj) === \"[object Array]\") {\n stack.push(obj);\n canonicalizedObj = new Array(obj.length);\n replacementStack.push(canonicalizedObj);\n for (i = 0;i < obj.length; i += 1) {\n canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, String(i));\n }\n stack.pop();\n replacementStack.pop();\n return canonicalizedObj;\n }\n if (obj && obj.toJSON) {\n obj = obj.toJSON();\n }\n if (typeof obj === \"object\" && obj !== null) {\n stack.push(obj);\n canonicalizedObj = {};\n replacementStack.push(canonicalizedObj);\n const sortedKeys = [];\n let key2;\n for (key2 in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key2)) {\n sortedKeys.push(key2);\n }\n }\n sortedKeys.sort();\n for (i = 0;i < sortedKeys.length; i += 1) {\n key2 = sortedKeys[i];\n canonicalizedObj[key2] = canonicalize(obj[key2], stack, replacementStack, replacer, key2);\n }\n stack.pop();\n replacementStack.pop();\n } else {\n canonicalizedObj = obj;\n }\n return canonicalizedObj;\n}\n\n// ../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/diff/array.js\nclass ArrayDiff extends Diff {\n tokenize(value) {\n return value.slice();\n }\n join(value) {\n return value;\n }\n removeEmpty(value) {\n return value;\n }\n}\nvar arrayDiff = new ArrayDiff;\n\n// ../../node_modules/.bun/diff@8.0.2/node_modules/diff/libesm/patch/parse.js\nfunction parsePatch(uniDiff) {\n const diffstr = uniDiff.split(/\\n/), list = [];\n let i = 0;\n function parseIndex() {\n const index = {};\n list.push(index);\n while (i < diffstr.length) {\n const line = diffstr[i];\n if (/^(---|\\+\\+\\+|@@)\\s/.test(line)) {\n break;\n }\n const header = /^(?:Index:|diff(?: -r \\w+)+)\\s+(.+?)\\s*$/.exec(line);\n if (header) {\n index.index = header[1];\n }\n i++;\n }\n parseFileHeader(index);\n parseFileHeader(index);\n index.hunks = [];\n while (i < diffstr.length) {\n const line = diffstr[i];\n if (/^(Index:\\s|diff\\s|---\\s|\\+\\+\\+\\s|===================================================================)/.test(line)) {\n break;\n } else if (/^@@/.test(line)) {\n index.hunks.push(parseHunk());\n } else if (line) {\n throw new Error(\"Unknown line \" + (i + 1) + \" \" + JSON.stringify(line));\n } else {\n i++;\n }\n }\n }\n function parseFileHeader(index) {\n const fileHeader = /^(---|\\+\\+\\+)\\s+(.*)\\r?$/.exec(diffstr[i]);\n if (fileHeader) {\n const data = fileHeader[2].split(\"\\t\", 2), header = (data[1] || \"\").trim();\n let fileName = data[0].replace(/\\\\\\\\/g, \"\\\\\");\n if (/^\".*\"$/.test(fileName)) {\n fileName = fileName.substr(1, fileName.length - 2);\n }\n if (fileHeader[1] === \"---\") {\n index.oldFileName = fileName;\n index.oldHeader = header;\n } else {\n index.newFileName = fileName;\n index.newHeader = header;\n }\n i++;\n }\n }\n function parseHunk() {\n var _a;\n const chunkHeaderIndex = i, chunkHeaderLine = diffstr[i++], chunkHeader = chunkHeaderLine.split(/@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@/);\n const hunk = {\n oldStart: +chunkHeader[1],\n oldLines: typeof chunkHeader[2] === \"undefined\" ? 1 : +chunkHeader[2],\n newStart: +chunkHeader[3],\n newLines: typeof chunkHeader[4] === \"undefined\" ? 1 : +chunkHeader[4],\n lines: []\n };\n if (hunk.oldLines === 0) {\n hunk.oldStart += 1;\n }\n if (hunk.newLines === 0) {\n hunk.newStart += 1;\n }\n let addCount = 0, removeCount = 0;\n for (;i < diffstr.length && (removeCount < hunk.oldLines || addCount < hunk.newLines || ((_a = diffstr[i]) === null || _a === undefined ? undefined : _a.startsWith(\"\\\\\"))); i++) {\n const operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? \" \" : diffstr[i][0];\n if (operation === \"+\" || operation === \"-\" || operation === \" \" || operation === \"\\\\\") {\n hunk.lines.push(diffstr[i]);\n if (operation === \"+\") {\n addCount++;\n } else if (operation === \"-\") {\n removeCount++;\n } else if (operation === \" \") {\n addCount++;\n removeCount++;\n }\n } else {\n throw new Error(`Hunk at line ${chunkHeaderIndex + 1} contained invalid line ${diffstr[i]}`);\n }\n }\n if (!addCount && hunk.newLines === 1) {\n hunk.newLines = 0;\n }\n if (!removeCount && hunk.oldLines === 1) {\n hunk.oldLines = 0;\n }\n if (addCount !== hunk.newLines) {\n throw new Error(\"Added line count did not match for hunk at line \" + (chunkHeaderIndex + 1));\n }\n if (removeCount !== hunk.oldLines) {\n throw new Error(\"Removed line count did not match for hunk at line \" + (chunkHeaderIndex + 1));\n }\n return hunk;\n }\n while (i < diffstr.length) {\n parseIndex();\n }\n return list;\n}\n\n// src/renderables/Text.ts\nclass TextRenderable extends TextBufferRenderable {\n _text;\n _hasManualStyledText = false;\n rootTextNode;\n _contentDefaultOptions = {\n content: \"\"\n };\n constructor(ctx, options) {\n super(ctx, options);\n const content = options.content ?? this._contentDefaultOptions.content;\n const styledText = typeof content === \"string\" ? stringToStyledText(content) : content;\n this._text = styledText;\n this._hasManualStyledText = options.content !== undefined && content !== \"\";\n this.rootTextNode = new RootTextNodeRenderable(ctx, {\n id: `${this.id}-root`,\n fg: this._defaultFg,\n bg: this._defaultBg,\n attributes: this._defaultAttributes\n }, this);\n this.updateTextBuffer(styledText);\n }\n updateTextBuffer(styledText) {\n this.textBuffer.setStyledText(styledText);\n this.clearChunks(styledText);\n }\n clearChunks(styledText) {}\n get content() {\n return this._text;\n }\n get chunks() {\n return this._text.chunks;\n }\n get textNode() {\n return this.rootTextNode;\n }\n set content(value) {\n this._hasManualStyledText = true;\n const styledText = typeof value === \"string\" ? stringToStyledText(value) : value;\n if (this._text !== styledText) {\n this._text = styledText;\n this.updateTextBuffer(styledText);\n this.updateTextInfo();\n }\n }\n updateTextFromNodes() {\n if (this.rootTextNode.isDirty && !this._hasManualStyledText) {\n const chunks = this.rootTextNode.gatherWithInheritedStyle({\n fg: this._defaultFg,\n bg: this._defaultBg,\n attributes: this._defaultAttributes,\n link: undefined\n });\n this.textBuffer.setStyledText(new StyledText(chunks));\n this.refreshLocalSelection();\n this.yogaNode.markDirty();\n }\n }\n add(obj, index) {\n return this.rootTextNode.add(obj, index);\n }\n remove(id) {\n this.rootTextNode.remove(id);\n }\n insertBefore(obj, anchor) {\n this.rootTextNode.insertBefore(obj, anchor);\n return this.rootTextNode.children.indexOf(obj);\n }\n getTextChildren() {\n return this.rootTextNode.getChildren();\n }\n clear() {\n this.rootTextNode.clear();\n const emptyStyledText = stringToStyledText(\"\");\n this._text = emptyStyledText;\n this.updateTextBuffer(emptyStyledText);\n this.updateTextInfo();\n this.requestRender();\n }\n onLifecyclePass = () => {\n this.updateTextFromNodes();\n };\n onFgChanged(newColor) {\n this.rootTextNode.fg = newColor;\n }\n onBgChanged(newColor) {\n this.rootTextNode.bg = newColor;\n }\n onAttributesChanged(newAttributes) {\n this.rootTextNode.attributes = newAttributes;\n }\n destroy() {\n this.rootTextNode.children.length = 0;\n super.destroy();\n }\n}\n\n// src/renderables/Diff.ts\nclass DiffRenderable extends Renderable {\n _diff;\n _view;\n _parsedDiff = null;\n _parseError = null;\n _fg;\n _filetype;\n _syntaxStyle;\n _wrapMode;\n _conceal;\n _selectionBg;\n _selectionFg;\n _treeSitterClient;\n _showLineNumbers;\n _lineNumberFg;\n _lineNumberBg;\n _addedBg;\n _removedBg;\n _contextBg;\n _addedContentBg;\n _removedContentBg;\n _contextContentBg;\n _addedSignColor;\n _removedSignColor;\n _addedLineNumberBg;\n _removedLineNumberBg;\n leftSide = null;\n rightSide = null;\n leftSideAdded = false;\n rightSideAdded = false;\n leftCodeRenderable = null;\n rightCodeRenderable = null;\n pendingRebuild = false;\n _lastWidth = 0;\n errorTextRenderable = null;\n errorCodeRenderable = null;\n _waitingForHighlight = false;\n _lineInfoChangeHandler = null;\n constructor(ctx, options) {\n super(ctx, {\n ...options,\n flexDirection: options.view === \"split\" ? \"row\" : \"column\"\n });\n this._diff = options.diff ?? \"\";\n this._view = options.view ?? \"unified\";\n this._fg = options.fg ? parseColor(options.fg) : undefined;\n this._filetype = options.filetype;\n this._syntaxStyle = options.syntaxStyle;\n this._wrapMode = options.wrapMode;\n this._conceal = options.conceal ?? false;\n this._selectionBg = options.selectionBg ? parseColor(options.selectionBg) : undefined;\n this._selectionFg = options.selectionFg ? parseColor(options.selectionFg) : undefined;\n this._treeSitterClient = options.treeSitterClient;\n this._showLineNumbers = options.showLineNumbers ?? true;\n this._lineNumberFg = parseColor(options.lineNumberFg ?? \"#888888\");\n this._lineNumberBg = parseColor(options.lineNumberBg ?? \"transparent\");\n this._addedBg = parseColor(options.addedBg ?? \"#1a4d1a\");\n this._removedBg = parseColor(options.removedBg ?? \"#4d1a1a\");\n this._contextBg = parseColor(options.contextBg ?? \"transparent\");\n this._addedContentBg = options.addedContentBg ? parseColor(options.addedContentBg) : null;\n this._removedContentBg = options.removedContentBg ? parseColor(options.removedContentBg) : null;\n this._contextContentBg = options.contextContentBg ? parseColor(options.contextContentBg) : null;\n this._addedSignColor = parseColor(options.addedSignColor ?? \"#22c55e\");\n this._removedSignColor = parseColor(options.removedSignColor ?? \"#ef4444\");\n this._addedLineNumberBg = parseColor(options.addedLineNumberBg ?? \"transparent\");\n this._removedLineNumberBg = parseColor(options.removedLineNumberBg ?? \"transparent\");\n if (this._diff) {\n this.parseDiff();\n this.buildView();\n }\n }\n parseDiff() {\n if (!this._diff) {\n this._parsedDiff = null;\n this._parseError = null;\n return;\n }\n try {\n const patches = parsePatch(this._diff);\n if (patches.length === 0) {\n this._parsedDiff = null;\n this._parseError = null;\n return;\n }\n this._parsedDiff = patches[0];\n this._parseError = null;\n } catch (error) {\n this._parsedDiff = null;\n this._parseError = error instanceof Error ? error : new Error(String(error));\n }\n }\n buildView() {\n if (this._parseError) {\n this.buildErrorView();\n return;\n }\n if (!this._parsedDiff || this._parsedDiff.hunks.length === 0) {\n return;\n }\n if (this._view === \"unified\") {\n this.buildUnifiedView();\n } else {\n this.buildSplitView();\n }\n }\n onResize(width, height) {\n super.onResize(width, height);\n if (this._view === \"split\" && this._wrapMode !== \"none\" && this._wrapMode !== undefined) {\n if (this._lastWidth !== width) {\n this._lastWidth = width;\n this.requestRebuild();\n }\n }\n }\n requestRebuild() {\n if (this.pendingRebuild) {\n return;\n }\n this.pendingRebuild = true;\n queueMicrotask(() => {\n if (!this.isDestroyed && this.pendingRebuild) {\n this.pendingRebuild = false;\n this.buildView();\n this.requestRender();\n }\n });\n }\n rebuildView() {\n if (this._view === \"split\") {\n this.requestRebuild();\n } else {\n this.buildView();\n }\n }\n handleLineInfoChange = () => {\n if (!this._waitingForHighlight)\n return;\n if (!this.leftCodeRenderable || !this.rightCodeRenderable)\n return;\n const leftIsHighlighting = this.leftCodeRenderable.isHighlighting;\n const rightIsHighlighting = this.rightCodeRenderable.isHighlighting;\n if (!leftIsHighlighting && !rightIsHighlighting) {\n this._waitingForHighlight = false;\n this.requestRebuild();\n }\n };\n attachLineInfoListeners() {\n if (this._lineInfoChangeHandler)\n return;\n if (!this.leftCodeRenderable || !this.rightCodeRenderable)\n return;\n this._lineInfoChangeHandler = this.handleLineInfoChange;\n this.leftCodeRenderable.on(\"line-info-change\", this._lineInfoChangeHandler);\n this.rightCodeRenderable.on(\"line-info-change\", this._lineInfoChangeHandler);\n }\n detachLineInfoListeners() {\n if (!this._lineInfoChangeHandler)\n return;\n if (this.leftCodeRenderable) {\n this.leftCodeRenderable.off(\"line-info-change\", this._lineInfoChangeHandler);\n }\n if (this.rightCodeRenderable) {\n this.rightCodeRenderable.off(\"line-info-change\", this._lineInfoChangeHandler);\n }\n this._lineInfoChangeHandler = null;\n }\n destroyRecursively() {\n this.detachLineInfoListeners();\n this.pendingRebuild = false;\n this.leftSideAdded = false;\n this.rightSideAdded = false;\n super.destroyRecursively();\n }\n buildErrorView() {\n this.flexDirection = \"column\";\n if (this.leftSide && this.leftSideAdded) {\n super.remove(this.leftSide.id);\n this.leftSideAdded = false;\n }\n if (this.rightSide && this.rightSideAdded) {\n super.remove(this.rightSide.id);\n this.rightSideAdded = false;\n }\n const errorMessage = `Error parsing diff: ${this._parseError?.message || \"Unknown error\"}\n`;\n if (!this.errorTextRenderable) {\n this.errorTextRenderable = new TextRenderable(this.ctx, {\n id: this.id ? `${this.id}-error-text` : undefined,\n content: errorMessage,\n fg: \"#ef4444\",\n width: \"100%\",\n flexShrink: 0\n });\n super.add(this.errorTextRenderable);\n } else {\n this.errorTextRenderable.content = errorMessage;\n const errorTextIndex = this.getChildren().indexOf(this.errorTextRenderable);\n if (errorTextIndex === -1) {\n super.add(this.errorTextRenderable);\n }\n }\n if (!this.errorCodeRenderable) {\n this.errorCodeRenderable = new CodeRenderable(this.ctx, {\n id: this.id ? `${this.id}-error-code` : undefined,\n content: this._diff,\n filetype: \"diff\",\n syntaxStyle: this._syntaxStyle ?? SyntaxStyle.create(),\n wrapMode: this._wrapMode,\n conceal: this._conceal,\n width: \"100%\",\n flexGrow: 1,\n flexShrink: 1,\n ...this._treeSitterClient !== undefined && { treeSitterClient: this._treeSitterClient }\n });\n super.add(this.errorCodeRenderable);\n } else {\n this.errorCodeRenderable.content = this._diff;\n this.errorCodeRenderable.wrapMode = this._wrapMode ?? \"none\";\n if (this._syntaxStyle) {\n this.errorCodeRenderable.syntaxStyle = this._syntaxStyle;\n }\n const errorCodeIndex = this.getChildren().indexOf(this.errorCodeRenderable);\n if (errorCodeIndex === -1) {\n super.add(this.errorCodeRenderable);\n }\n }\n }\n createOrUpdateCodeRenderable(side, content, wrapMode, drawUnstyledText) {\n const existingRenderable = side === \"left\" ? this.leftCodeRenderable : this.rightCodeRenderable;\n if (!existingRenderable) {\n const codeOptions = {\n id: this.id ? `${this.id}-${side}-code` : undefined,\n content,\n filetype: this._filetype,\n wrapMode,\n conceal: this._conceal,\n syntaxStyle: this._syntaxStyle ?? SyntaxStyle.create(),\n width: \"100%\",\n height: \"100%\",\n ...this._fg !== undefined && { fg: this._fg },\n ...drawUnstyledText !== undefined && { drawUnstyledText },\n ...this._selectionBg !== undefined && { selectionBg: this._selectionBg },\n ...this._selectionFg !== undefined && { selectionFg: this._selectionFg },\n ...this._treeSitterClient !== undefined && { treeSitterClient: this._treeSitterClient }\n };\n const newRenderable = new CodeRenderable(this.ctx, codeOptions);\n if (side === \"left\") {\n this.leftCodeRenderable = newRenderable;\n } else {\n this.rightCodeRenderable = newRenderable;\n }\n return newRenderable;\n } else {\n existingRenderable.content = content;\n existingRenderable.wrapMode = wrapMode ?? \"none\";\n existingRenderable.conceal = this._conceal;\n if (drawUnstyledText !== undefined) {\n existingRenderable.drawUnstyledText = drawUnstyledText;\n }\n if (this._filetype !== undefined) {\n existingRenderable.filetype = this._filetype;\n }\n if (this._syntaxStyle !== undefined) {\n existingRenderable.syntaxStyle = this._syntaxStyle;\n }\n if (this._selectionBg !== undefined) {\n existingRenderable.selectionBg = this._selectionBg;\n }\n if (this._selectionFg !== undefined) {\n existingRenderable.selectionFg = this._selectionFg;\n }\n if (this._fg !== undefined) {\n existingRenderable.fg = this._fg;\n }\n return existingRenderable;\n }\n }\n createOrUpdateSide(side, target, lineColors, lineSigns, lineNumbers, hideLineNumbers, width) {\n const sideRef = side === \"left\" ? this.leftSide : this.rightSide;\n const addedFlag = side === \"left\" ? this.leftSideAdded : this.rightSideAdded;\n if (!sideRef) {\n const newSide = new LineNumberRenderable(this.ctx, {\n id: this.id ? `${this.id}-${side}` : undefined,\n target,\n fg: this._lineNumberFg,\n bg: this._lineNumberBg,\n lineColors,\n lineSigns,\n lineNumbers,\n lineNumberOffset: 0,\n hideLineNumbers,\n width,\n height: \"100%\"\n });\n newSide.showLineNumbers = this._showLineNumbers;\n super.add(newSide);\n if (side === \"left\") {\n this.leftSide = newSide;\n this.leftSideAdded = true;\n } else {\n this.rightSide = newSide;\n this.rightSideAdded = true;\n }\n } else {\n sideRef.width = width;\n sideRef.setLineColors(lineColors);\n sideRef.setLineSigns(lineSigns);\n sideRef.setLineNumbers(lineNumbers);\n sideRef.setHideLineNumbers(hideLineNumbers);\n if (!addedFlag) {\n super.add(sideRef);\n if (side === \"left\") {\n this.leftSideAdded = true;\n } else {\n this.rightSideAdded = true;\n }\n }\n }\n }\n buildUnifiedView() {\n if (!this._parsedDiff)\n return;\n this.flexDirection = \"column\";\n if (this.errorTextRenderable) {\n const errorTextIndex = this.getChildren().indexOf(this.errorTextRenderable);\n if (errorTextIndex !== -1) {\n super.remove(this.errorTextRenderable.id);\n }\n }\n if (this.errorCodeRenderable) {\n const errorCodeIndex = this.getChildren().indexOf(this.errorCodeRenderable);\n if (errorCodeIndex !== -1) {\n super.remove(this.errorCodeRenderable.id);\n }\n }\n const contentLines = [];\n const lineColors = new Map;\n const lineSigns = new Map;\n const lineNumbers = new Map;\n let lineIndex = 0;\n for (const hunk of this._parsedDiff.hunks) {\n let oldLineNum = hunk.oldStart;\n let newLineNum = hunk.newStart;\n for (const line of hunk.lines) {\n const firstChar = line[0];\n const content2 = line.slice(1);\n if (firstChar === \"+\") {\n contentLines.push(content2);\n const config = {\n gutter: this._addedLineNumberBg\n };\n if (this._addedContentBg) {\n config.content = this._addedContentBg;\n } else {\n config.content = this._addedBg;\n }\n lineColors.set(lineIndex, config);\n lineSigns.set(lineIndex, {\n after: \" +\",\n afterColor: this._addedSignColor\n });\n lineNumbers.set(lineIndex, newLineNum);\n newLineNum++;\n lineIndex++;\n } else if (firstChar === \"-\") {\n contentLines.push(content2);\n const config = {\n gutter: this._removedLineNumberBg\n };\n if (this._removedContentBg) {\n config.content = this._removedContentBg;\n } else {\n config.content = this._removedBg;\n }\n lineColors.set(lineIndex, config);\n lineSigns.set(lineIndex, {\n after: \" -\",\n afterColor: this._removedSignColor\n });\n lineNumbers.set(lineIndex, oldLineNum);\n oldLineNum++;\n lineIndex++;\n } else if (firstChar === \" \") {\n contentLines.push(content2);\n const config = {\n gutter: this._lineNumberBg\n };\n if (this._contextContentBg) {\n config.content = this._contextContentBg;\n } else {\n config.content = this._contextBg;\n }\n lineColors.set(lineIndex, config);\n lineNumbers.set(lineIndex, newLineNum);\n oldLineNum++;\n newLineNum++;\n lineIndex++;\n }\n }\n }\n const content = contentLines.join(`\n`);\n const codeRenderable = this.createOrUpdateCodeRenderable(\"left\", content, this._wrapMode);\n this.createOrUpdateSide(\"left\", codeRenderable, lineColors, lineSigns, lineNumbers, new Set, \"100%\");\n if (this.rightSide && this.rightSideAdded) {\n super.remove(this.rightSide.id);\n this.rightSideAdded = false;\n }\n }\n buildSplitView() {\n if (!this._parsedDiff)\n return;\n this.flexDirection = \"row\";\n if (this.errorTextRenderable) {\n const errorTextIndex = this.getChildren().indexOf(this.errorTextRenderable);\n if (errorTextIndex !== -1) {\n super.remove(this.errorTextRenderable.id);\n }\n }\n if (this.errorCodeRenderable) {\n const errorCodeIndex = this.getChildren().indexOf(this.errorCodeRenderable);\n if (errorCodeIndex !== -1) {\n super.remove(this.errorCodeRenderable.id);\n }\n }\n const leftLogicalLines = [];\n const rightLogicalLines = [];\n for (const hunk of this._parsedDiff.hunks) {\n let oldLineNum = hunk.oldStart;\n let newLineNum = hunk.newStart;\n let i = 0;\n while (i < hunk.lines.length) {\n const line = hunk.lines[i];\n const firstChar = line[0];\n if (firstChar === \" \") {\n const content = line.slice(1);\n leftLogicalLines.push({\n content,\n lineNum: oldLineNum,\n color: this._contextBg,\n type: \"context\"\n });\n rightLogicalLines.push({\n content,\n lineNum: newLineNum,\n color: this._contextBg,\n type: \"context\"\n });\n oldLineNum++;\n newLineNum++;\n i++;\n } else if (firstChar === \"\\\\\") {\n i++;\n } else {\n const removes = [];\n const adds = [];\n while (i < hunk.lines.length) {\n const currentLine = hunk.lines[i];\n const currentChar = currentLine[0];\n if (currentChar === \" \" || currentChar === \"\\\\\") {\n break;\n }\n const content = currentLine.slice(1);\n if (currentChar === \"-\") {\n removes.push({ content, lineNum: oldLineNum });\n oldLineNum++;\n } else if (currentChar === \"+\") {\n adds.push({ content, lineNum: newLineNum });\n newLineNum++;\n }\n i++;\n }\n const maxLength = Math.max(removes.length, adds.length);\n for (let j = 0;j < maxLength; j++) {\n if (j < removes.length) {\n leftLogicalLines.push({\n content: removes[j].content,\n lineNum: removes[j].lineNum,\n color: this._removedBg,\n sign: {\n after: \" -\",\n afterColor: this._removedSignColor\n },\n type: \"remove\"\n });\n } else {\n leftLogicalLines.push({\n content: \"\",\n hideLineNumber: true,\n type: \"empty\"\n });\n }\n if (j < adds.length) {\n rightLogicalLines.push({\n content: adds[j].content,\n lineNum: adds[j].lineNum,\n color: this._addedBg,\n sign: {\n after: \" +\",\n afterColor: this._addedSignColor\n },\n type: \"add\"\n });\n } else {\n rightLogicalLines.push({\n content: \"\",\n hideLineNumber: true,\n type: \"empty\"\n });\n }\n }\n }\n }\n }\n const canDoWrapAlignment = this.width > 0 && (this._wrapMode === \"word\" || this._wrapMode === \"char\");\n const preLeftContent = leftLogicalLines.map((l) => l.content).join(`\n`);\n const preRightContent = rightLogicalLines.map((l) => l.content).join(`\n`);\n const needsConsistentConcealing = (this._wrapMode === \"word\" || this._wrapMode === \"char\") && this._conceal && this._filetype;\n const drawUnstyledText = !needsConsistentConcealing;\n const leftCodeRenderable = this.createOrUpdateCodeRenderable(\"left\", preLeftContent, this._wrapMode, drawUnstyledText);\n const rightCodeRenderable = this.createOrUpdateCodeRenderable(\"right\", preRightContent, this._wrapMode, drawUnstyledText);\n let finalLeftLines;\n let finalRightLines;\n const leftIsHighlighting = leftCodeRenderable.isHighlighting;\n const rightIsHighlighting = rightCodeRenderable.isHighlighting;\n const highlightingInProgress = needsConsistentConcealing && (leftIsHighlighting || rightIsHighlighting);\n if (highlightingInProgress) {\n this._waitingForHighlight = true;\n this.attachLineInfoListeners();\n }\n const shouldDoAlignment = canDoWrapAlignment && !highlightingInProgress;\n if (shouldDoAlignment) {\n const leftLineInfo = leftCodeRenderable.lineInfo;\n const rightLineInfo = rightCodeRenderable.lineInfo;\n const leftSources = leftLineInfo.lineSources || [];\n const rightSources = rightLineInfo.lineSources || [];\n const leftVisualCounts = new Map;\n const rightVisualCounts = new Map;\n for (const logicalLine of leftSources) {\n leftVisualCounts.set(logicalLine, (leftVisualCounts.get(logicalLine) || 0) + 1);\n }\n for (const logicalLine of rightSources) {\n rightVisualCounts.set(logicalLine, (rightVisualCounts.get(logicalLine) || 0) + 1);\n }\n finalLeftLines = [];\n finalRightLines = [];\n let leftVisualPos = 0;\n let rightVisualPos = 0;\n for (let i = 0;i < leftLogicalLines.length; i++) {\n const leftLine = leftLogicalLines[i];\n const rightLine = rightLogicalLines[i];\n const leftVisualCount = leftVisualCounts.get(i) || 1;\n const rightVisualCount = rightVisualCounts.get(i) || 1;\n if (leftVisualPos < rightVisualPos) {\n const pad = rightVisualPos - leftVisualPos;\n for (let p = 0;p < pad; p++) {\n finalLeftLines.push({ content: \"\", hideLineNumber: true, type: \"empty\" });\n }\n leftVisualPos += pad;\n } else if (rightVisualPos < leftVisualPos) {\n const pad = leftVisualPos - rightVisualPos;\n for (let p = 0;p < pad; p++) {\n finalRightLines.push({ content: \"\", hideLineNumber: true, type: \"empty\" });\n }\n rightVisualPos += pad;\n }\n finalLeftLines.push(leftLine);\n finalRightLines.push(rightLine);\n leftVisualPos += leftVisualCount;\n rightVisualPos += rightVisualCount;\n }\n if (leftVisualPos < rightVisualPos) {\n const pad = rightVisualPos - leftVisualPos;\n for (let p = 0;p < pad; p++) {\n finalLeftLines.push({ content: \"\", hideLineNumber: true, type: \"empty\" });\n }\n } else if (rightVisualPos < leftVisualPos) {\n const pad = leftVisualPos - rightVisualPos;\n for (let p = 0;p < pad; p++) {\n finalRightLines.push({ content: \"\", hideLineNumber: true, type: \"empty\" });\n }\n }\n } else {\n finalLeftLines = leftLogicalLines;\n finalRightLines = rightLogicalLines;\n }\n const leftLineColors = new Map;\n const rightLineColors = new Map;\n const leftLineSigns = new Map;\n const rightLineSigns = new Map;\n const leftHideLineNumbers = new Set;\n const rightHideLineNumbers = new Set;\n const leftLineNumbers = new Map;\n const rightLineNumbers = new Map;\n finalLeftLines.forEach((line, index) => {\n if (line.lineNum !== undefined) {\n leftLineNumbers.set(index, line.lineNum);\n }\n if (line.hideLineNumber) {\n leftHideLineNumbers.add(index);\n }\n if (line.type === \"remove\") {\n const config = {\n gutter: this._removedLineNumberBg\n };\n if (this._removedContentBg) {\n config.content = this._removedContentBg;\n } else {\n config.content = this._removedBg;\n }\n leftLineColors.set(index, config);\n } else if (line.type === \"context\") {\n const config = {\n gutter: this._lineNumberBg\n };\n if (this._contextContentBg) {\n config.content = this._contextContentBg;\n } else {\n config.content = this._contextBg;\n }\n leftLineColors.set(index, config);\n }\n if (line.sign) {\n leftLineSigns.set(index, line.sign);\n }\n });\n finalRightLines.forEach((line, index) => {\n if (line.lineNum !== undefined) {\n rightLineNumbers.set(index, line.lineNum);\n }\n if (line.hideLineNumber) {\n rightHideLineNumbers.add(index);\n }\n if (line.type === \"add\") {\n const config = {\n gutter: this._addedLineNumberBg\n };\n if (this._addedContentBg) {\n config.content = this._addedContentBg;\n } else {\n config.content = this._addedBg;\n }\n rightLineColors.set(index, config);\n } else if (line.type === \"context\") {\n const config = {\n gutter: this._lineNumberBg\n };\n if (this._contextContentBg) {\n config.content = this._contextContentBg;\n } else {\n config.content = this._contextBg;\n }\n rightLineColors.set(index, config);\n }\n if (line.sign) {\n rightLineSigns.set(index, line.sign);\n }\n });\n const leftContentFinal = finalLeftLines.map((l) => l.content).join(`\n`);\n const rightContentFinal = finalRightLines.map((l) => l.content).join(`\n`);\n leftCodeRenderable.content = leftContentFinal;\n rightCodeRenderable.content = rightContentFinal;\n this.createOrUpdateSide(\"left\", leftCodeRenderable, leftLineColors, leftLineSigns, leftLineNumbers, leftHideLineNumbers, \"50%\");\n this.createOrUpdateSide(\"right\", rightCodeRenderable, rightLineColors, rightLineSigns, rightLineNumbers, rightHideLineNumbers, \"50%\");\n }\n get diff() {\n return this._diff;\n }\n set diff(value) {\n if (this._diff !== value) {\n this._diff = value;\n this._waitingForHighlight = false;\n this.parseDiff();\n this.rebuildView();\n }\n }\n get view() {\n return this._view;\n }\n set view(value) {\n if (this._view !== value) {\n this._view = value;\n this.flexDirection = value === \"split\" ? \"row\" : \"column\";\n this.buildView();\n }\n }\n get filetype() {\n return this._filetype;\n }\n set filetype(value) {\n if (this._filetype !== value) {\n this._filetype = value;\n this.rebuildView();\n }\n }\n get syntaxStyle() {\n return this._syntaxStyle;\n }\n set syntaxStyle(value) {\n if (this._syntaxStyle !== value) {\n this._syntaxStyle = value;\n this.rebuildView();\n }\n }\n get wrapMode() {\n return this._wrapMode;\n }\n set wrapMode(value) {\n if (this._wrapMode !== value) {\n this._wrapMode = value;\n if (this._view === \"unified\" && this.leftCodeRenderable) {\n this.leftCodeRenderable.wrapMode = value ?? \"none\";\n } else if (this._view === \"split\") {\n this.requestRebuild();\n }\n }\n }\n get showLineNumbers() {\n return this._showLineNumbers;\n }\n set showLineNumbers(value) {\n if (this._showLineNumbers !== value) {\n this._showLineNumbers = value;\n if (this.leftSide) {\n this.leftSide.showLineNumbers = value;\n }\n if (this.rightSide) {\n this.rightSide.showLineNumbers = value;\n }\n }\n }\n get addedBg() {\n return this._addedBg;\n }\n set addedBg(value) {\n const parsed = parseColor(value);\n if (this._addedBg !== parsed) {\n this._addedBg = parsed;\n this.rebuildView();\n }\n }\n get removedBg() {\n return this._removedBg;\n }\n set removedBg(value) {\n const parsed = parseColor(value);\n if (this._removedBg !== parsed) {\n this._removedBg = parsed;\n this.rebuildView();\n }\n }\n get contextBg() {\n return this._contextBg;\n }\n set contextBg(value) {\n const parsed = parseColor(value);\n if (this._contextBg !== parsed) {\n this._contextBg = parsed;\n this.rebuildView();\n }\n }\n get addedSignColor() {\n return this._addedSignColor;\n }\n set addedSignColor(value) {\n const parsed = parseColor(value);\n if (this._addedSignColor !== parsed) {\n this._addedSignColor = parsed;\n this.rebuildView();\n }\n }\n get removedSignColor() {\n return this._removedSignColor;\n }\n set removedSignColor(value) {\n const parsed = parseColor(value);\n if (this._removedSignColor !== parsed) {\n this._removedSignColor = parsed;\n this.rebuildView();\n }\n }\n get addedLineNumberBg() {\n return this._addedLineNumberBg;\n }\n set addedLineNumberBg(value) {\n const parsed = parseColor(value);\n if (this._addedLineNumberBg !== parsed) {\n this._addedLineNumberBg = parsed;\n this.rebuildView();\n }\n }\n get removedLineNumberBg() {\n return this._removedLineNumberBg;\n }\n set removedLineNumberBg(value) {\n const parsed = parseColor(value);\n if (this._removedLineNumberBg !== parsed) {\n this._removedLineNumberBg = parsed;\n this.rebuildView();\n }\n }\n get lineNumberFg() {\n return this._lineNumberFg;\n }\n set lineNumberFg(value) {\n const parsed = parseColor(value);\n if (this._lineNumberFg !== parsed) {\n this._lineNumberFg = parsed;\n this.rebuildView();\n }\n }\n get lineNumberBg() {\n return this._lineNumberBg;\n }\n set lineNumberBg(value) {\n const parsed = parseColor(value);\n if (this._lineNumberBg !== parsed) {\n this._lineNumberBg = parsed;\n this.rebuildView();\n }\n }\n get addedContentBg() {\n return this._addedContentBg;\n }\n set addedContentBg(value) {\n const parsed = value ? parseColor(value) : null;\n if (this._addedContentBg !== parsed) {\n this._addedContentBg = parsed;\n this.rebuildView();\n }\n }\n get removedContentBg() {\n return this._removedContentBg;\n }\n set removedContentBg(value) {\n const parsed = value ? parseColor(value) : null;\n if (this._removedContentBg !== parsed) {\n this._removedContentBg = parsed;\n this.rebuildView();\n }\n }\n get contextContentBg() {\n return this._contextContentBg;\n }\n set contextContentBg(value) {\n const parsed = value ? parseColor(value) : null;\n if (this._contextContentBg !== parsed) {\n this._contextContentBg = parsed;\n this.rebuildView();\n }\n }\n get selectionBg() {\n return this._selectionBg;\n }\n set selectionBg(value) {\n const parsed = value ? parseColor(value) : undefined;\n if (this._selectionBg !== parsed) {\n this._selectionBg = parsed;\n if (this.leftCodeRenderable) {\n this.leftCodeRenderable.selectionBg = parsed;\n }\n if (this.rightCodeRenderable) {\n this.rightCodeRenderable.selectionBg = parsed;\n }\n }\n }\n get selectionFg() {\n return this._selectionFg;\n }\n set selectionFg(value) {\n const parsed = value ? parseColor(value) : undefined;\n if (this._selectionFg !== parsed) {\n this._selectionFg = parsed;\n if (this.leftCodeRenderable) {\n this.leftCodeRenderable.selectionFg = parsed;\n }\n if (this.rightCodeRenderable) {\n this.rightCodeRenderable.selectionFg = parsed;\n }\n }\n }\n get conceal() {\n return this._conceal;\n }\n set conceal(value) {\n if (this._conceal !== value) {\n this._conceal = value;\n this.rebuildView();\n }\n }\n get fg() {\n return this._fg;\n }\n set fg(value) {\n const parsed = value ? parseColor(value) : undefined;\n if (this._fg !== parsed) {\n this._fg = parsed;\n if (this.leftCodeRenderable) {\n this.leftCodeRenderable.fg = parsed;\n }\n if (this.rightCodeRenderable) {\n this.rightCodeRenderable.fg = parsed;\n }\n }\n }\n setLineColor(line, color) {\n this.leftSide?.setLineColor(line, color);\n this.rightSide?.setLineColor(line, color);\n }\n clearLineColor(line) {\n this.leftSide?.clearLineColor(line);\n this.rightSide?.clearLineColor(line);\n }\n setLineColors(lineColors) {\n this.leftSide?.setLineColors(lineColors);\n this.rightSide?.setLineColors(lineColors);\n }\n clearAllLineColors() {\n this.leftSide?.clearAllLineColors();\n this.rightSide?.clearAllLineColors();\n }\n highlightLines(startLine, endLine, color) {\n this.leftSide?.highlightLines(startLine, endLine, color);\n this.rightSide?.highlightLines(startLine, endLine, color);\n }\n clearHighlightLines(startLine, endLine) {\n this.leftSide?.clearHighlightLines(startLine, endLine);\n this.rightSide?.clearHighlightLines(startLine, endLine);\n }\n}\n// src/renderables/EditBufferRenderable.ts\nclass EditBufferRenderable extends Renderable {\n _focusable = true;\n selectable = true;\n _textColor;\n _backgroundColor;\n _defaultAttributes;\n _selectionBg;\n _selectionFg;\n _wrapMode = \"word\";\n _scrollMargin = 0.2;\n _showCursor = true;\n _cursorColor;\n _cursorStyle;\n lastLocalSelection = null;\n _tabIndicator;\n _tabIndicatorColor;\n _cursorChangeListener = undefined;\n _contentChangeListener = undefined;\n _autoScrollVelocity = 0;\n _autoScrollAccumulator = 0;\n _scrollSpeed = 16;\n _keyboardSelectionActive = false;\n editBuffer;\n editorView;\n _defaultOptions = {\n textColor: RGBA.fromValues(1, 1, 1, 1),\n backgroundColor: \"transparent\",\n selectionBg: undefined,\n selectionFg: undefined,\n selectable: true,\n attributes: 0,\n wrapMode: \"word\",\n scrollMargin: 0.2,\n scrollSpeed: 16,\n showCursor: true,\n cursorColor: RGBA.fromValues(1, 1, 1, 1),\n cursorStyle: {\n style: \"block\",\n blinking: true\n },\n tabIndicator: undefined,\n tabIndicatorColor: undefined\n };\n constructor(ctx, options) {\n super(ctx, options);\n this._textColor = parseColor(options.textColor ?? this._defaultOptions.textColor);\n this._backgroundColor = parseColor(options.backgroundColor ?? this._defaultOptions.backgroundColor);\n this._defaultAttributes = options.attributes ?? this._defaultOptions.attributes;\n this._selectionBg = options.selectionBg ? parseColor(options.selectionBg) : this._defaultOptions.selectionBg;\n this._selectionFg = options.selectionFg ? parseColor(options.selectionFg) : this._defaultOptions.selectionFg;\n this.selectable = options.selectable ?? this._defaultOptions.selectable;\n this._wrapMode = options.wrapMode ?? this._defaultOptions.wrapMode;\n this._scrollMargin = options.scrollMargin ?? this._defaultOptions.scrollMargin;\n this._scrollSpeed = options.scrollSpeed ?? this._defaultOptions.scrollSpeed;\n this._showCursor = options.showCursor ?? this._defaultOptions.showCursor;\n this._cursorColor = parseColor(options.cursorColor ?? this._defaultOptions.cursorColor);\n this._cursorStyle = options.cursorStyle ?? this._defaultOptions.cursorStyle;\n this._tabIndicator = options.tabIndicator ?? this._defaultOptions.tabIndicator;\n this._tabIndicatorColor = options.tabIndicatorColor ? parseColor(options.tabIndicatorColor) : this._defaultOptions.tabIndicatorColor;\n this.editBuffer = EditBuffer.create(this._ctx.widthMethod);\n this.editorView = EditorView.create(this.editBuffer, this.width || 80, this.height || 24);\n this.editorView.setWrapMode(this._wrapMode);\n this.editorView.setScrollMargin(this._scrollMargin);\n this.editBuffer.setDefaultFg(this._textColor);\n this.editBuffer.setDefaultBg(this._backgroundColor);\n this.editBuffer.setDefaultAttributes(this._defaultAttributes);\n if (options.syntaxStyle) {\n this.editBuffer.setSyntaxStyle(options.syntaxStyle);\n }\n if (this._tabIndicator !== undefined) {\n this.editorView.setTabIndicator(this._tabIndicator);\n }\n if (this._tabIndicatorColor !== undefined) {\n this.editorView.setTabIndicatorColor(this._tabIndicatorColor);\n }\n this.setupMeasureFunc();\n this.setupEventListeners(options);\n }\n get lineInfo() {\n return this.editorView.getLogicalLineInfo();\n }\n setupEventListeners(options) {\n this._cursorChangeListener = options.onCursorChange;\n this._contentChangeListener = options.onContentChange;\n this.editBuffer.on(\"cursor-changed\", () => {\n if (this._cursorChangeListener) {\n const cursor = this.editBuffer.getCursorPosition();\n this._cursorChangeListener({\n line: cursor.row,\n visualColumn: cursor.col\n });\n }\n });\n this.editBuffer.on(\"content-changed\", () => {\n this.yogaNode.markDirty();\n this.requestRender();\n this.emit(\"line-info-change\");\n if (this._contentChangeListener) {\n this._contentChangeListener({});\n }\n });\n }\n get lineCount() {\n return this.editBuffer.getLineCount();\n }\n get virtualLineCount() {\n return this.editorView.getVirtualLineCount();\n }\n get scrollY() {\n return this.editorView.getViewport().offsetY;\n }\n get plainText() {\n return this.editBuffer.getText();\n }\n get logicalCursor() {\n return this.editBuffer.getCursorPosition();\n }\n get visualCursor() {\n return this.editorView.getVisualCursor();\n }\n get cursorOffset() {\n return this.editorView.getVisualCursor().offset;\n }\n set cursorOffset(offset) {\n this.editorView.setCursorByOffset(offset);\n this.requestRender();\n }\n get textColor() {\n return this._textColor;\n }\n set textColor(value) {\n const newColor = parseColor(value ?? this._defaultOptions.textColor);\n if (this._textColor !== newColor) {\n this._textColor = newColor;\n this.editBuffer.setDefaultFg(newColor);\n this.requestRender();\n }\n }\n get selectionBg() {\n return this._selectionBg;\n }\n set selectionBg(value) {\n const newColor = value ? parseColor(value) : this._defaultOptions.selectionBg;\n if (this._selectionBg !== newColor) {\n this._selectionBg = newColor;\n if (this.lastLocalSelection) {\n this.updateLocalSelection(this.lastLocalSelection);\n }\n this.requestRender();\n }\n }\n get selectionFg() {\n return this._selectionFg;\n }\n set selectionFg(value) {\n const newColor = value ? parseColor(value) : this._defaultOptions.selectionFg;\n if (this._selectionFg !== newColor) {\n this._selectionFg = newColor;\n if (this.lastLocalSelection) {\n this.updateLocalSelection(this.lastLocalSelection);\n }\n this.requestRender();\n }\n }\n get backgroundColor() {\n return this._backgroundColor;\n }\n set backgroundColor(value) {\n const newColor = parseColor(value ?? this._defaultOptions.backgroundColor);\n if (this._backgroundColor !== newColor) {\n this._backgroundColor = newColor;\n this.editBuffer.setDefaultBg(newColor);\n this.requestRender();\n }\n }\n get attributes() {\n return this._defaultAttributes;\n }\n set attributes(value) {\n if (this._defaultAttributes !== value) {\n this._defaultAttributes = value;\n this.editBuffer.setDefaultAttributes(value);\n this.requestRender();\n }\n }\n get wrapMode() {\n return this._wrapMode;\n }\n set wrapMode(value) {\n if (this._wrapMode !== value) {\n this._wrapMode = value;\n this.editorView.setWrapMode(value);\n this.yogaNode.markDirty();\n this.requestRender();\n }\n }\n get showCursor() {\n return this._showCursor;\n }\n set showCursor(value) {\n if (this._showCursor !== value) {\n this._showCursor = value;\n if (!value && this._focused) {\n this._ctx.setCursorPosition(0, 0, false);\n }\n this.requestRender();\n }\n }\n get cursorColor() {\n return this._cursorColor;\n }\n set cursorColor(value) {\n const newColor = parseColor(value);\n if (this._cursorColor !== newColor) {\n this._cursorColor = newColor;\n if (this._focused) {\n this.requestRender();\n }\n }\n }\n get cursorStyle() {\n return this._cursorStyle;\n }\n set cursorStyle(style) {\n const newStyle = style;\n if (this.cursorStyle.style !== newStyle.style || this.cursorStyle.blinking !== newStyle.blinking) {\n this._cursorStyle = newStyle;\n if (this._focused) {\n this.requestRender();\n }\n }\n }\n get tabIndicator() {\n return this._tabIndicator;\n }\n set tabIndicator(value) {\n if (this._tabIndicator !== value) {\n this._tabIndicator = value;\n if (value !== undefined) {\n this.editorView.setTabIndicator(value);\n }\n this.requestRender();\n }\n }\n get tabIndicatorColor() {\n return this._tabIndicatorColor;\n }\n set tabIndicatorColor(value) {\n const newColor = value ? parseColor(value) : undefined;\n if (this._tabIndicatorColor !== newColor) {\n this._tabIndicatorColor = newColor;\n if (newColor !== undefined) {\n this.editorView.setTabIndicatorColor(newColor);\n }\n this.requestRender();\n }\n }\n get scrollSpeed() {\n return this._scrollSpeed;\n }\n set scrollSpeed(value) {\n this._scrollSpeed = Math.max(0, value);\n }\n onMouseEvent(event) {\n if (event.type === \"scroll\") {\n this.handleScroll(event);\n }\n }\n handleScroll(event) {\n if (!event.scroll)\n return;\n const { direction, delta } = event.scroll;\n const viewport = this.editorView.getViewport();\n if (direction === \"up\") {\n const newOffsetY = Math.max(0, viewport.offsetY - delta);\n this.editorView.setViewport(viewport.offsetX, newOffsetY, viewport.width, viewport.height, true);\n this.requestRender();\n } else if (direction === \"down\") {\n const totalVirtualLines = this.editorView.getTotalVirtualLineCount();\n const maxOffsetY = Math.max(0, totalVirtualLines - viewport.height);\n const newOffsetY = Math.min(viewport.offsetY + delta, maxOffsetY);\n this.editorView.setViewport(viewport.offsetX, newOffsetY, viewport.width, viewport.height, true);\n this.requestRender();\n }\n if (this._wrapMode === \"none\") {\n if (direction === \"left\") {\n const newOffsetX = Math.max(0, viewport.offsetX - delta);\n this.editorView.setViewport(newOffsetX, viewport.offsetY, viewport.width, viewport.height, true);\n this.requestRender();\n } else if (direction === \"right\") {\n const newOffsetX = viewport.offsetX + delta;\n this.editorView.setViewport(newOffsetX, viewport.offsetY, viewport.width, viewport.height, true);\n this.requestRender();\n }\n }\n }\n onResize(width, height) {\n this.editorView.setViewportSize(width, height);\n }\n refreshLocalSelection() {\n if (this.lastLocalSelection) {\n return this.updateLocalSelection(this.lastLocalSelection);\n }\n return false;\n }\n updateLocalSelection(localSelection) {\n if (!localSelection?.isActive) {\n this.editorView.resetLocalSelection();\n return true;\n }\n return this.editorView.setLocalSelection(localSelection.anchorX, localSelection.anchorY, localSelection.focusX, localSelection.focusY, this._selectionBg, this._selectionFg, false);\n }\n shouldStartSelection(x, y) {\n if (!this.selectable)\n return false;\n const localX = x - this.x;\n const localY = y - this.y;\n return localX >= 0 && localX < this.width && localY >= 0 && localY < this.height;\n }\n onSelectionChanged(selection) {\n const localSelection = convertGlobalToLocalSelection(selection, this.x, this.y);\n this.lastLocalSelection = localSelection;\n const updateCursor = true;\n const followCursor = this._keyboardSelectionActive;\n let changed;\n if (!localSelection?.isActive) {\n this._keyboardSelectionActive = false;\n this.editorView.resetLocalSelection();\n changed = true;\n } else if (selection?.isStart) {\n changed = this.editorView.setLocalSelection(localSelection.anchorX, localSelection.anchorY, localSelection.focusX, localSelection.focusY, this._selectionBg, this._selectionFg, updateCursor, followCursor);\n } else {\n changed = this.editorView.updateLocalSelection(localSelection.anchorX, localSelection.anchorY, localSelection.focusX, localSelection.focusY, this._selectionBg, this._selectionFg, updateCursor, followCursor);\n }\n if (changed && localSelection?.isActive && selection?.isDragging) {\n const viewport = this.editorView.getViewport();\n const focusY = localSelection.focusY;\n const scrollMargin = Math.max(1, Math.floor(viewport.height * this._scrollMargin));\n if (focusY < scrollMargin) {\n this._autoScrollVelocity = -this._scrollSpeed;\n } else if (focusY >= viewport.height - scrollMargin) {\n this._autoScrollVelocity = this._scrollSpeed;\n } else {\n this._autoScrollVelocity = 0;\n }\n } else {\n this._keyboardSelectionActive = false;\n this._autoScrollVelocity = 0;\n this._autoScrollAccumulator = 0;\n }\n if (changed) {\n this.requestRender();\n }\n return this.hasSelection();\n }\n onUpdate(deltaTime) {\n super.onUpdate(deltaTime);\n if (this._autoScrollVelocity !== 0 && this.hasSelection()) {\n const deltaSeconds = deltaTime / 1000;\n this._autoScrollAccumulator += this._autoScrollVelocity * deltaSeconds;\n const linesToScroll = Math.floor(Math.abs(this._autoScrollAccumulator));\n if (linesToScroll > 0) {\n const direction = this._autoScrollVelocity > 0 ? 1 : -1;\n const viewport = this.editorView.getViewport();\n const totalVirtualLines = this.editorView.getTotalVirtualLineCount();\n const maxOffsetY = Math.max(0, totalVirtualLines - viewport.height);\n const newOffsetY = Math.max(0, Math.min(viewport.offsetY + direction * linesToScroll, maxOffsetY));\n if (newOffsetY !== viewport.offsetY) {\n this.editorView.setViewport(viewport.offsetX, newOffsetY, viewport.width, viewport.height, false);\n this._ctx.requestSelectionUpdate();\n }\n this._autoScrollAccumulator -= direction * linesToScroll;\n }\n }\n }\n getSelectedText() {\n return this.editorView.getSelectedText();\n }\n hasSelection() {\n return this.editorView.hasSelection();\n }\n getSelection() {\n return this.editorView.getSelection();\n }\n setupMeasureFunc() {\n const measureFunc = (width, widthMode, height, heightMode) => {\n let effectiveWidth;\n if (widthMode === MeasureMode.Undefined || isNaN(width)) {\n effectiveWidth = 0;\n } else {\n effectiveWidth = width;\n }\n const effectiveHeight = isNaN(height) ? 1 : height;\n const measureResult = this.editorView.measureForDimensions(Math.floor(effectiveWidth), Math.floor(effectiveHeight));\n const measuredWidth = measureResult ? Math.max(1, measureResult.maxWidth) : 1;\n const measuredHeight = measureResult ? Math.max(1, measureResult.lineCount) : 1;\n if (widthMode === MeasureMode.AtMost && this._positionType !== \"absolute\") {\n return {\n width: Math.min(effectiveWidth, measuredWidth),\n height: Math.min(effectiveHeight, measuredHeight)\n };\n }\n return {\n width: measuredWidth,\n height: measuredHeight\n };\n };\n this.yogaNode.setMeasureFunc(measureFunc);\n }\n render(buffer, deltaTime) {\n if (!this.visible)\n return;\n if (this.isDestroyed)\n return;\n this.markClean();\n this._ctx.addToHitGrid(this.x, this.y, this.width, this.height, this.num);\n this.renderSelf(buffer);\n this.renderCursor(buffer);\n }\n renderSelf(buffer) {\n buffer.drawEditorView(this.editorView, this.x, this.y);\n }\n renderCursor(buffer) {\n if (!this._showCursor || !this._focused)\n return;\n const visualCursor = this.editorView.getVisualCursor();\n const cursorX = this.x + visualCursor.visualCol + 1;\n const cursorY = this.y + visualCursor.visualRow + 1;\n this._ctx.setCursorPosition(cursorX, cursorY, true);\n this._ctx.setCursorStyle({ ...this._cursorStyle, color: this._cursorColor });\n }\n focus() {\n super.focus();\n this._ctx.setCursorStyle({ ...this._cursorStyle, color: this._cursorColor });\n this.requestRender();\n }\n blur() {\n super.blur();\n this._ctx.setCursorPosition(0, 0, false);\n this.requestRender();\n }\n onRemove() {\n if (this._focused) {\n this._ctx.setCursorPosition(0, 0, false);\n }\n }\n destroy() {\n if (this.isDestroyed)\n return;\n if (this._focused) {\n this._ctx.setCursorPosition(0, 0, false);\n this.blur();\n }\n this.editorView.destroy();\n this.editBuffer.destroy();\n super.destroy();\n }\n set onCursorChange(handler) {\n this._cursorChangeListener = handler;\n }\n get onCursorChange() {\n return this._cursorChangeListener;\n }\n set onContentChange(handler) {\n this._contentChangeListener = handler;\n }\n get onContentChange() {\n return this._contentChangeListener;\n }\n get syntaxStyle() {\n return this.editBuffer.getSyntaxStyle();\n }\n set syntaxStyle(style) {\n this.editBuffer.setSyntaxStyle(style);\n this.requestRender();\n }\n addHighlight(lineIdx, highlight) {\n this.editBuffer.addHighlight(lineIdx, highlight);\n this.requestRender();\n }\n addHighlightByCharRange(highlight) {\n this.editBuffer.addHighlightByCharRange(highlight);\n this.requestRender();\n }\n removeHighlightsByRef(hlRef) {\n this.editBuffer.removeHighlightsByRef(hlRef);\n this.requestRender();\n }\n clearLineHighlights(lineIdx) {\n this.editBuffer.clearLineHighlights(lineIdx);\n this.requestRender();\n }\n clearAllHighlights() {\n this.editBuffer.clearAllHighlights();\n this.requestRender();\n }\n getLineHighlights(lineIdx) {\n return this.editBuffer.getLineHighlights(lineIdx);\n }\n setText(text) {\n this.editBuffer.setText(text);\n this.yogaNode.markDirty();\n this.requestRender();\n }\n replaceText(text) {\n this.editBuffer.replaceText(text);\n this.yogaNode.markDirty();\n this.requestRender();\n }\n clear() {\n this.editBuffer.clear();\n this.editBuffer.clearAllHighlights();\n this.yogaNode.markDirty();\n this.requestRender();\n }\n deleteRange(startLine, startCol, endLine, endCol) {\n this.editBuffer.deleteRange(startLine, startCol, endLine, endCol);\n this.yogaNode.markDirty();\n this.requestRender();\n }\n insertText(text) {\n this.editBuffer.insertText(text);\n this.yogaNode.markDirty();\n this.requestRender();\n }\n getTextRange(startOffset, endOffset) {\n return this.editBuffer.getTextRange(startOffset, endOffset);\n }\n getTextRangeByCoords(startRow, startCol, endRow, endCol) {\n return this.editBuffer.getTextRangeByCoords(startRow, startCol, endRow, endCol);\n }\n updateSelectionForMovement(shiftPressed, isBeforeMovement) {\n if (!this.selectable)\n return;\n if (!shiftPressed) {\n this._keyboardSelectionActive = false;\n this._ctx.clearSelection();\n return;\n }\n this._keyboardSelectionActive = true;\n const visualCursor = this.editorView.getVisualCursor();\n const cursorX = this.x + visualCursor.visualCol;\n const cursorY = this.y + visualCursor.visualRow;\n if (isBeforeMovement) {\n if (!this._ctx.hasSelection) {\n this._ctx.startSelection(this, cursorX, cursorY);\n }\n return;\n }\n this._ctx.updateSelection(this, cursorX, cursorY, { finishDragging: true });\n }\n}\n\n// src/renderables/Textarea.ts\nvar defaultTextareaKeybindings = [\n { name: \"left\", action: \"move-left\" },\n { name: \"right\", action: \"move-right\" },\n { name: \"up\", action: \"move-up\" },\n { name: \"down\", action: \"move-down\" },\n { name: \"left\", shift: true, action: \"select-left\" },\n { name: \"right\", shift: true, action: \"select-right\" },\n { name: \"up\", shift: true, action: \"select-up\" },\n { name: \"down\", shift: true, action: \"select-down\" },\n { name: \"home\", action: \"buffer-home\" },\n { name: \"end\", action: \"buffer-end\" },\n { name: \"home\", shift: true, action: \"select-buffer-home\" },\n { name: \"end\", shift: true, action: \"select-buffer-end\" },\n { name: \"a\", ctrl: true, action: \"line-home\" },\n { name: \"e\", ctrl: true, action: \"line-end\" },\n { name: \"a\", ctrl: true, shift: true, action: \"select-line-home\" },\n { name: \"e\", ctrl: true, shift: true, action: \"select-line-end\" },\n { name: \"a\", meta: true, action: \"visual-line-home\" },\n { name: \"e\", meta: true, action: \"visual-line-end\" },\n { name: \"a\", meta: true, shift: true, action: \"select-visual-line-home\" },\n { name: \"e\", meta: true, shift: true, action: \"select-visual-line-end\" },\n { name: \"f\", ctrl: true, action: \"move-right\" },\n { name: \"b\", ctrl: true, action: \"move-left\" },\n { name: \"w\", ctrl: true, action: \"delete-word-backward\" },\n { name: \"backspace\", ctrl: true, action: \"delete-word-backward\" },\n { name: \"d\", meta: true, action: \"delete-word-forward\" },\n { name: \"delete\", meta: true, action: \"delete-word-forward\" },\n { name: \"delete\", ctrl: true, action: \"delete-word-forward\" },\n { name: \"d\", ctrl: true, shift: true, action: \"delete-line\" },\n { name: \"k\", ctrl: true, action: \"delete-to-line-end\" },\n { name: \"u\", ctrl: true, action: \"delete-to-line-start\" },\n { name: \"backspace\", action: \"backspace\" },\n { name: \"backspace\", shift: true, action: \"backspace\" },\n { name: \"d\", ctrl: true, action: \"delete\" },\n { name: \"delete\", action: \"delete\" },\n { name: \"delete\", shift: true, action: \"delete\" },\n { name: \"return\", action: \"newline\" },\n { name: \"linefeed\", action: \"newline\" },\n { name: \"return\", meta: true, action: \"submit\" },\n { name: \"-\", ctrl: true, action: \"undo\" },\n { name: \".\", ctrl: true, action: \"redo\" },\n { name: \"z\", super: true, action: \"undo\" },\n { name: \"z\", super: true, shift: true, action: \"redo\" },\n { name: \"f\", meta: true, action: \"word-forward\" },\n { name: \"b\", meta: true, action: \"word-backward\" },\n { name: \"right\", meta: true, action: \"word-forward\" },\n { name: \"left\", meta: true, action: \"word-backward\" },\n { name: \"right\", ctrl: true, action: \"word-forward\" },\n { name: \"left\", ctrl: true, action: \"word-backward\" },\n { name: \"f\", meta: true, shift: true, action: \"select-word-forward\" },\n { name: \"b\", meta: true, shift: true, action: \"select-word-backward\" },\n { name: \"right\", meta: true, shift: true, action: \"select-word-forward\" },\n { name: \"left\", meta: true, shift: true, action: \"select-word-backward\" },\n { name: \"backspace\", meta: true, action: \"delete-word-backward\" },\n { name: \"left\", super: true, action: \"visual-line-home\" },\n { name: \"right\", super: true, action: \"visual-line-end\" },\n { name: \"up\", super: true, action: \"buffer-home\" },\n { name: \"down\", super: true, action: \"buffer-end\" },\n { name: \"left\", super: true, shift: true, action: \"select-visual-line-home\" },\n { name: \"right\", super: true, shift: true, action: \"select-visual-line-end\" },\n { name: \"up\", super: true, shift: true, action: \"select-buffer-home\" },\n { name: \"down\", super: true, shift: true, action: \"select-buffer-end\" },\n { name: \"a\", super: true, action: \"select-all\" }\n];\n\nclass TextareaRenderable extends EditBufferRenderable {\n _placeholder;\n _placeholderColor;\n _unfocusedBackgroundColor;\n _unfocusedTextColor;\n _focusedBackgroundColor;\n _focusedTextColor;\n _keyBindingsMap;\n _keyAliasMap;\n _keyBindings;\n _actionHandlers;\n _initialValueSet = false;\n _submitListener = undefined;\n static defaults = {\n backgroundColor: \"transparent\",\n textColor: \"#FFFFFF\",\n focusedBackgroundColor: \"transparent\",\n focusedTextColor: \"#FFFFFF\",\n placeholder: null,\n placeholderColor: \"#666666\"\n };\n constructor(ctx, options) {\n const defaults = TextareaRenderable.defaults;\n const baseOptions = {\n ...options,\n backgroundColor: options.backgroundColor || defaults.backgroundColor,\n textColor: options.textColor || defaults.textColor\n };\n super(ctx, baseOptions);\n this._unfocusedBackgroundColor = parseColor(options.backgroundColor || defaults.backgroundColor);\n this._unfocusedTextColor = parseColor(options.textColor || defaults.textColor);\n this._focusedBackgroundColor = parseColor(options.focusedBackgroundColor || options.backgroundColor || defaults.focusedBackgroundColor);\n this._focusedTextColor = parseColor(options.focusedTextColor || options.textColor || defaults.focusedTextColor);\n this._placeholder = options.placeholder ?? defaults.placeholder;\n this._placeholderColor = parseColor(options.placeholderColor ?? defaults.placeholderColor);\n this._keyAliasMap = mergeKeyAliases(defaultKeyAliases, options.keyAliasMap || {});\n this._keyBindings = options.keyBindings || [];\n const mergedBindings = mergeKeyBindings(defaultTextareaKeybindings, this._keyBindings);\n this._keyBindingsMap = buildKeyBindingsMap(mergedBindings, this._keyAliasMap);\n this._actionHandlers = this.buildActionHandlers();\n this._submitListener = options.onSubmit;\n if (options.initialValue) {\n this.setText(options.initialValue);\n this._initialValueSet = true;\n }\n this.updateColors();\n this.applyPlaceholder(this._placeholder);\n }\n applyPlaceholder(placeholder) {\n if (placeholder === null) {\n this.editorView.setPlaceholderStyledText([]);\n return;\n }\n if (typeof placeholder === \"string\") {\n const colorStyle = fg(this._placeholderColor);\n const chunks = [colorStyle(placeholder)];\n this.editorView.setPlaceholderStyledText(chunks);\n } else {\n this.editorView.setPlaceholderStyledText(placeholder.chunks);\n }\n }\n buildActionHandlers() {\n return new Map([\n [\"move-left\", () => this.moveCursorLeft()],\n [\"move-right\", () => this.moveCursorRight()],\n [\"move-up\", () => this.moveCursorUp()],\n [\"move-down\", () => this.moveCursorDown()],\n [\"select-left\", () => this.moveCursorLeft({ select: true })],\n [\"select-right\", () => this.moveCursorRight({ select: true })],\n [\"select-up\", () => this.moveCursorUp({ select: true })],\n [\"select-down\", () => this.moveCursorDown({ select: true })],\n [\"line-home\", () => this.gotoLineHome()],\n [\"line-end\", () => this.gotoLineEnd()],\n [\"select-line-home\", () => this.gotoLineHome({ select: true })],\n [\"select-line-end\", () => this.gotoLineEnd({ select: true })],\n [\"visual-line-home\", () => this.gotoVisualLineHome()],\n [\"visual-line-end\", () => this.gotoVisualLineEnd()],\n [\"select-visual-line-home\", () => this.gotoVisualLineHome({ select: true })],\n [\"select-visual-line-end\", () => this.gotoVisualLineEnd({ select: true })],\n [\"select-buffer-home\", () => this.gotoBufferHome({ select: true })],\n [\"select-buffer-end\", () => this.gotoBufferEnd({ select: true })],\n [\"buffer-home\", () => this.gotoBufferHome()],\n [\"buffer-end\", () => this.gotoBufferEnd()],\n [\"delete-line\", () => this.deleteLine()],\n [\"delete-to-line-end\", () => this.deleteToLineEnd()],\n [\"delete-to-line-start\", () => this.deleteToLineStart()],\n [\"backspace\", () => this.deleteCharBackward()],\n [\"delete\", () => this.deleteChar()],\n [\"newline\", () => this.newLine()],\n [\"undo\", () => this.undo()],\n [\"redo\", () => this.redo()],\n [\"word-forward\", () => this.moveWordForward()],\n [\"word-backward\", () => this.moveWordBackward()],\n [\"select-word-forward\", () => this.moveWordForward({ select: true })],\n [\"select-word-backward\", () => this.moveWordBackward({ select: true })],\n [\"delete-word-forward\", () => this.deleteWordForward()],\n [\"delete-word-backward\", () => this.deleteWordBackward()],\n [\"select-all\", () => this.selectAll()],\n [\"submit\", () => this.submit()]\n ]);\n }\n handlePaste(event) {\n this.insertText(event.text);\n }\n handleKeyPress(key) {\n const bindingKey = getKeyBindingKey({\n name: key.name,\n ctrl: key.ctrl,\n shift: key.shift,\n meta: key.meta,\n super: key.super,\n action: \"move-left\"\n });\n const action = this._keyBindingsMap.get(bindingKey);\n if (action) {\n const handler = this._actionHandlers.get(action);\n if (handler) {\n return handler();\n }\n }\n if (!key.ctrl && !key.meta && !key.super && !key.hyper) {\n if (key.name === \"space\") {\n this.insertText(\" \");\n return true;\n }\n if (key.sequence) {\n const firstCharCode = key.sequence.charCodeAt(0);\n if (firstCharCode < 32) {\n return false;\n }\n if (firstCharCode === 127) {\n return false;\n }\n this.insertText(key.sequence);\n return true;\n }\n }\n return false;\n }\n updateColors() {\n const effectiveBg = this._focused ? this._focusedBackgroundColor : this._unfocusedBackgroundColor;\n const effectiveFg = this._focused ? this._focusedTextColor : this._unfocusedTextColor;\n super.backgroundColor = effectiveBg;\n super.textColor = effectiveFg;\n }\n insertChar(char) {\n if (this.hasSelection()) {\n this.deleteSelectedText();\n }\n this.editBuffer.insertChar(char);\n this.requestRender();\n }\n insertText(text) {\n if (this.hasSelection()) {\n this.deleteSelectedText();\n }\n this.editBuffer.insertText(text);\n this.requestRender();\n }\n deleteChar() {\n if (this.hasSelection()) {\n this.deleteSelectedText();\n return true;\n }\n this._ctx.clearSelection();\n this.editBuffer.deleteChar();\n this.requestRender();\n return true;\n }\n deleteCharBackward() {\n if (this.hasSelection()) {\n this.deleteSelectedText();\n return true;\n }\n this._ctx.clearSelection();\n this.editBuffer.deleteCharBackward();\n this.requestRender();\n return true;\n }\n deleteSelectedText() {\n this.editorView.deleteSelectedText();\n this._ctx.clearSelection();\n this.requestRender();\n }\n newLine() {\n this._ctx.clearSelection();\n this.editBuffer.newLine();\n this.requestRender();\n return true;\n }\n deleteLine() {\n this._ctx.clearSelection();\n this.editBuffer.deleteLine();\n this.requestRender();\n return true;\n }\n moveCursorLeft(options) {\n const select = options?.select ?? false;\n if (!select && this.hasSelection()) {\n const selection = this.getSelection();\n this.editBuffer.setCursorByOffset(selection.start);\n this._ctx.clearSelection();\n this.requestRender();\n return true;\n }\n this.updateSelectionForMovement(select, true);\n this.editBuffer.moveCursorLeft();\n this.updateSelectionForMovement(select, false);\n this.requestRender();\n return true;\n }\n moveCursorRight(options) {\n const select = options?.select ?? false;\n if (!select && this.hasSelection()) {\n const selection = this.getSelection();\n const targetOffset = this.cursorOffset === selection.start ? selection.end - 1 : selection.end;\n this.editBuffer.setCursorByOffset(targetOffset);\n this._ctx.clearSelection();\n this.requestRender();\n return true;\n }\n this.updateSelectionForMovement(select, true);\n this.editBuffer.moveCursorRight();\n this.updateSelectionForMovement(select, false);\n this.requestRender();\n return true;\n }\n moveCursorUp(options) {\n const select = options?.select ?? false;\n this.updateSelectionForMovement(select, true);\n this.editorView.moveUpVisual();\n this.updateSelectionForMovement(select, false);\n this.requestRender();\n return true;\n }\n moveCursorDown(options) {\n const select = options?.select ?? false;\n this.updateSelectionForMovement(select, true);\n this.editorView.moveDownVisual();\n this.updateSelectionForMovement(select, false);\n this.requestRender();\n return true;\n }\n gotoLine(line) {\n this.editBuffer.gotoLine(line);\n this.requestRender();\n }\n gotoLineHome(options) {\n const select = options?.select ?? false;\n this.updateSelectionForMovement(select, true);\n const cursor = this.editorView.getCursor();\n if (cursor.col === 0 && cursor.row > 0) {\n this.editBuffer.setCursor(cursor.row - 1, 0);\n const prevLineEol = this.editBuffer.getEOL();\n this.editBuffer.setCursor(prevLineEol.row, prevLineEol.col);\n } else {\n this.editBuffer.setCursor(cursor.row, 0);\n }\n this.updateSelectionForMovement(select, false);\n this.requestRender();\n return true;\n }\n gotoLineEnd(options) {\n const select = options?.select ?? false;\n this.updateSelectionForMovement(select, true);\n const cursor = this.editorView.getCursor();\n const eol = this.editBuffer.getEOL();\n const lineCount = this.editBuffer.getLineCount();\n if (cursor.col === eol.col && cursor.row < lineCount - 1) {\n this.editBuffer.setCursor(cursor.row + 1, 0);\n } else {\n this.editBuffer.setCursor(eol.row, eol.col);\n }\n this.updateSelectionForMovement(select, false);\n this.requestRender();\n return true;\n }\n gotoVisualLineHome(options) {\n const select = options?.select ?? false;\n this.updateSelectionForMovement(select, true);\n const sol = this.editorView.getVisualSOL();\n this.editBuffer.setCursor(sol.logicalRow, sol.logicalCol);\n this.updateSelectionForMovement(select, false);\n this.requestRender();\n return true;\n }\n gotoVisualLineEnd(options) {\n const select = options?.select ?? false;\n this.updateSelectionForMovement(select, true);\n const eol = this.editorView.getVisualEOL();\n this.editBuffer.setCursor(eol.logicalRow, eol.logicalCol);\n this.updateSelectionForMovement(select, false);\n this.requestRender();\n return true;\n }\n gotoBufferHome(options) {\n const select = options?.select ?? false;\n this.updateSelectionForMovement(select, true);\n this.editBuffer.setCursor(0, 0);\n this.updateSelectionForMovement(select, false);\n this.requestRender();\n return true;\n }\n gotoBufferEnd(options) {\n const select = options?.select ?? false;\n this.updateSelectionForMovement(select, true);\n this.editBuffer.gotoLine(999999);\n this.updateSelectionForMovement(select, false);\n this.requestRender();\n return true;\n }\n selectAll() {\n this.updateSelectionForMovement(false, true);\n this.editBuffer.setCursor(0, 0);\n return this.gotoBufferEnd({ select: true });\n }\n deleteToLineEnd() {\n const cursor = this.editorView.getCursor();\n const eol = this.editBuffer.getEOL();\n if (eol.col > cursor.col) {\n this.editBuffer.deleteRange(cursor.row, cursor.col, eol.row, eol.col);\n }\n this.requestRender();\n return true;\n }\n deleteToLineStart() {\n const cursor = this.editorView.getCursor();\n if (cursor.col > 0) {\n this.editBuffer.deleteRange(cursor.row, 0, cursor.row, cursor.col);\n }\n this.requestRender();\n return true;\n }\n undo() {\n this._ctx.clearSelection();\n this.editBuffer.undo();\n this.requestRender();\n return true;\n }\n redo() {\n this._ctx.clearSelection();\n this.editBuffer.redo();\n this.requestRender();\n return true;\n }\n moveWordForward(options) {\n const select = options?.select ?? false;\n this.updateSelectionForMovement(select, true);\n const nextWord = this.editBuffer.getNextWordBoundary();\n this.editBuffer.setCursorByOffset(nextWord.offset);\n this.updateSelectionForMovement(select, false);\n this.requestRender();\n return true;\n }\n moveWordBackward(options) {\n const select = options?.select ?? false;\n this.updateSelectionForMovement(select, true);\n const prevWord = this.editBuffer.getPrevWordBoundary();\n this.editBuffer.setCursorByOffset(prevWord.offset);\n this.updateSelectionForMovement(select, false);\n this.requestRender();\n return true;\n }\n deleteWordForward() {\n if (this.hasSelection()) {\n this.deleteSelectedText();\n return true;\n }\n const currentCursor = this.editBuffer.getCursorPosition();\n const nextWord = this.editBuffer.getNextWordBoundary();\n if (nextWord.offset > currentCursor.offset) {\n this.editBuffer.deleteRange(currentCursor.row, currentCursor.col, nextWord.row, nextWord.col);\n }\n this._ctx.clearSelection();\n this.requestRender();\n return true;\n }\n deleteWordBackward() {\n if (this.hasSelection()) {\n this.deleteSelectedText();\n return true;\n }\n const currentCursor = this.editBuffer.getCursorPosition();\n const prevWord = this.editBuffer.getPrevWordBoundary();\n if (prevWord.offset < currentCursor.offset) {\n this.editBuffer.deleteRange(prevWord.row, prevWord.col, currentCursor.row, currentCursor.col);\n }\n this._ctx.clearSelection();\n this.requestRender();\n return true;\n }\n focus() {\n super.focus();\n this.updateColors();\n }\n blur() {\n super.blur();\n if (!this.isDestroyed) {\n this.updateColors();\n }\n }\n get placeholder() {\n return this._placeholder;\n }\n set placeholder(value) {\n if (this._placeholder !== value) {\n this._placeholder = value;\n this.applyPlaceholder(value);\n this.requestRender();\n }\n }\n get placeholderColor() {\n return this._placeholderColor;\n }\n set placeholderColor(value) {\n const newColor = parseColor(value ?? TextareaRenderable.defaults.placeholderColor);\n if (this._placeholderColor !== newColor) {\n this._placeholderColor = newColor;\n this.applyPlaceholder(this._placeholder);\n this.requestRender();\n }\n }\n get backgroundColor() {\n return this._unfocusedBackgroundColor;\n }\n set backgroundColor(value) {\n const newColor = parseColor(value ?? TextareaRenderable.defaults.backgroundColor);\n if (this._unfocusedBackgroundColor !== newColor) {\n this._unfocusedBackgroundColor = newColor;\n this.updateColors();\n }\n }\n get textColor() {\n return this._unfocusedTextColor;\n }\n set textColor(value) {\n const newColor = parseColor(value ?? TextareaRenderable.defaults.textColor);\n if (this._unfocusedTextColor !== newColor) {\n this._unfocusedTextColor = newColor;\n this.updateColors();\n }\n }\n set focusedBackgroundColor(value) {\n const newColor = parseColor(value ?? TextareaRenderable.defaults.focusedBackgroundColor);\n if (this._focusedBackgroundColor !== newColor) {\n this._focusedBackgroundColor = newColor;\n this.updateColors();\n }\n }\n set focusedTextColor(value) {\n const newColor = parseColor(value ?? TextareaRenderable.defaults.focusedTextColor);\n if (this._focusedTextColor !== newColor) {\n this._focusedTextColor = newColor;\n this.updateColors();\n }\n }\n set initialValue(value) {\n if (!this._initialValueSet) {\n this.setText(value);\n this._initialValueSet = true;\n }\n }\n submit() {\n if (this._submitListener) {\n this._submitListener({});\n }\n return true;\n }\n set onSubmit(handler) {\n this._submitListener = handler;\n }\n get onSubmit() {\n return this._submitListener;\n }\n set keyBindings(bindings) {\n this._keyBindings = bindings;\n const mergedBindings = mergeKeyBindings(defaultTextareaKeybindings, bindings);\n this._keyBindingsMap = buildKeyBindingsMap(mergedBindings, this._keyAliasMap);\n }\n set keyAliasMap(aliases) {\n this._keyAliasMap = mergeKeyAliases(defaultKeyAliases, aliases);\n const mergedBindings = mergeKeyBindings(defaultTextareaKeybindings, this._keyBindings);\n this._keyBindingsMap = buildKeyBindingsMap(mergedBindings, this._keyAliasMap);\n }\n get extmarks() {\n return this.editorView.extmarks;\n }\n}\n\n// src/renderables/Input.ts\nvar InputRenderableEvents;\n((InputRenderableEvents2) => {\n InputRenderableEvents2[\"INPUT\"] = \"input\";\n InputRenderableEvents2[\"CHANGE\"] = \"change\";\n InputRenderableEvents2[\"ENTER\"] = \"enter\";\n})(InputRenderableEvents ||= {});\n\nclass InputRenderable extends TextareaRenderable {\n _maxLength;\n _lastCommittedValue = \"\";\n static defaultOptions = {\n placeholder: \"\",\n maxLength: 1000,\n value: \"\"\n };\n constructor(ctx, options) {\n const defaults = InputRenderable.defaultOptions;\n const maxLength = options.maxLength ?? defaults.maxLength;\n const rawValue = options.value ?? defaults.value;\n const initialValue = rawValue.replace(/[\\n\\r]/g, \"\").substring(0, maxLength);\n super(ctx, {\n ...options,\n placeholder: options.placeholder ?? defaults.placeholder,\n initialValue,\n height: 1,\n wrapMode: \"none\",\n keyBindings: [\n { name: \"return\", action: \"submit\" },\n { name: \"linefeed\", action: \"submit\" },\n ...options.keyBindings || []\n ]\n });\n this._maxLength = maxLength;\n this._lastCommittedValue = this.plainText;\n if (initialValue) {\n this.cursorOffset = initialValue.length;\n }\n }\n newLine() {\n return false;\n }\n handlePaste(event) {\n const sanitized = event.text.replace(/[\\n\\r]/g, \"\");\n if (sanitized) {\n this.insertText(sanitized);\n }\n }\n insertText(text) {\n const sanitized = text.replace(/[\\n\\r]/g, \"\");\n if (!sanitized)\n return;\n const currentLength = this.plainText.length;\n const remaining = this._maxLength - currentLength;\n if (remaining <= 0)\n return;\n const toInsert = sanitized.substring(0, remaining);\n super.insertText(toInsert);\n this.emit(\"input\" /* INPUT */, this.plainText);\n }\n get value() {\n return this.plainText;\n }\n set value(value) {\n const newValue = value.substring(0, this._maxLength).replace(/[\\n\\r]/g, \"\");\n const currentValue = this.plainText;\n if (currentValue !== newValue) {\n this.setText(newValue);\n this.cursorOffset = newValue.length;\n this.emit(\"input\" /* INPUT */, newValue);\n }\n }\n focus() {\n super.focus();\n this._lastCommittedValue = this.plainText;\n }\n blur() {\n if (!this.isDestroyed) {\n const currentValue = this.plainText;\n if (currentValue !== this._lastCommittedValue) {\n this._lastCommittedValue = currentValue;\n this.emit(\"change\" /* CHANGE */, currentValue);\n }\n }\n super.blur();\n }\n submit() {\n const currentValue = this.plainText;\n if (currentValue !== this._lastCommittedValue) {\n this._lastCommittedValue = currentValue;\n this.emit(\"change\" /* CHANGE */, currentValue);\n }\n this.emit(\"enter\" /* ENTER */, currentValue);\n return true;\n }\n deleteCharBackward() {\n const result = super.deleteCharBackward();\n this.emit(\"input\" /* INPUT */, this.plainText);\n return result;\n }\n deleteChar() {\n const result = super.deleteChar();\n this.emit(\"input\" /* INPUT */, this.plainText);\n return result;\n }\n deleteLine() {\n const result = super.deleteLine();\n this.emit(\"input\" /* INPUT */, this.plainText);\n return result;\n }\n deleteWordBackward() {\n const result = super.deleteWordBackward();\n this.emit(\"input\" /* INPUT */, this.plainText);\n return result;\n }\n deleteWordForward() {\n const result = super.deleteWordForward();\n this.emit(\"input\" /* INPUT */, this.plainText);\n return result;\n }\n deleteToLineStart() {\n const result = super.deleteToLineStart();\n this.emit(\"input\" /* INPUT */, this.plainText);\n return result;\n }\n deleteToLineEnd() {\n const result = super.deleteToLineEnd();\n this.emit(\"input\" /* INPUT */, this.plainText);\n return result;\n }\n undo() {\n const result = super.undo();\n this.emit(\"input\" /* INPUT */, this.plainText);\n return result;\n }\n redo() {\n const result = super.redo();\n this.emit(\"input\" /* INPUT */, this.plainText);\n return result;\n }\n deleteCharacter(direction) {\n if (direction === \"backward\") {\n this.deleteCharBackward();\n } else {\n this.deleteChar();\n }\n }\n set maxLength(maxLength) {\n this._maxLength = maxLength;\n const currentValue = this.plainText;\n if (currentValue.length > maxLength) {\n this.setText(currentValue.substring(0, maxLength));\n }\n }\n get maxLength() {\n return this._maxLength;\n }\n set placeholder(placeholder) {\n super.placeholder = placeholder;\n }\n get placeholder() {\n const p = super.placeholder;\n return typeof p === \"string\" ? p : \"\";\n }\n set initialValue(value) {}\n}\n// ../../node_modules/.bun/marked@17.0.1/node_modules/marked/lib/marked.esm.js\nfunction L() {\n return { async: false, breaks: false, extensions: null, gfm: true, hooks: null, pedantic: false, renderer: null, silent: false, tokenizer: null, walkTokens: null };\n}\nvar T = L();\nfunction Z(u) {\n T = u;\n}\nvar C = { exec: () => null };\nfunction k(u, e = \"\") {\n let t2 = typeof u == \"string\" ? u : u.source, n = { replace: (r, i) => {\n let s = typeof i == \"string\" ? i : i.source;\n return s = s.replace(m.caret, \"$1\"), t2 = t2.replace(r, s), n;\n }, getRegex: () => new RegExp(t2, e) };\n return n;\n}\nvar me = (() => {\n try {\n return !!new RegExp(\"(?<=1)(?<!1)\");\n } catch {\n return false;\n }\n})();\nvar m = { codeRemoveIndent: /^(?: {1,4}| {0,3}\\t)/gm, outputLinkReplace: /\\\\([\\[\\]])/g, indentCodeCompensation: /^(\\s+)(?:```)/, beginningSpace: /^\\s+/, endingHash: /#$/, startingSpaceChar: /^ /, endingSpaceChar: / $/, nonSpaceChar: /[^ ]/, newLineCharGlobal: /\\n/g, tabCharGlobal: /\\t/g, multipleSpaceGlobal: /\\s+/g, blankLine: /^[ \\t]*$/, doubleBlankLine: /\\n[ \\t]*\\n[ \\t]*$/, blockquoteStart: /^ {0,3}>/, blockquoteSetextReplace: /\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, blockquoteSetextReplace2: /^ {0,3}>[ \\t]?/gm, listReplaceTabs: /^\\t+/, listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g, listIsTask: /^\\[[ xX]\\] +\\S/, listReplaceTask: /^\\[[ xX]\\] +/, listTaskCheckbox: /\\[[ xX]\\]/, anyLine: /\\n.*\\n/, hrefBrackets: /^<(.*)>$/, tableDelimiter: /[:|]/, tableAlignChars: /^\\||\\| *$/g, tableRowBlankLine: /\\n[ \\t]*$/, tableAlignRight: /^ *-+: *$/, tableAlignCenter: /^ *:-+: *$/, tableAlignLeft: /^ *:-+ *$/, startATag: /^<a /i, endATag: /^<\\/a>/i, startPreScriptTag: /^<(pre|code|kbd|script)(\\s|>)/i, endPreScriptTag: /^<\\/(pre|code|kbd|script)(\\s|>)/i, startAngleBracket: /^</, endAngleBracket: />$/, pedanticHrefTitle: /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/, unicodeAlphaNumeric: /[\\p{L}\\p{N}]/u, escapeTest: /[&<>\"']/, escapeReplace: /[&<>\"']/g, escapeTestNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/, escapeReplaceNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g, unescapeTest: /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig, caret: /(^|[^\\[])\\^/g, percentDecode: /%25/g, findPipe: /\\|/g, splitPipe: / \\|/, slashPipe: /\\\\\\|/g, carriageReturn: /\\r\\n|\\r/g, spaceLine: /^ +$/gm, notSpaceStart: /^\\S*/, endingNewline: /\\n$/, listItemRegex: (u) => new RegExp(`^( {0,3}${u})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`), nextBulletRegex: (u) => new RegExp(`^ {0,${Math.min(3, u - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`), hrRegex: (u) => new RegExp(`^ {0,${Math.min(3, u - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`), fencesBeginRegex: (u) => new RegExp(`^ {0,${Math.min(3, u - 1)}}(?:\\`\\`\\`|~~~)`), headingBeginRegex: (u) => new RegExp(`^ {0,${Math.min(3, u - 1)}}#`), htmlBeginRegex: (u) => new RegExp(`^ {0,${Math.min(3, u - 1)}}<(?:[a-z].*>|!--)`, \"i\") };\nvar xe = /^(?:[ \\t]*(?:\\n|$))+/;\nvar be = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nvar Re = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nvar I = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nvar Te = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nvar N = /(?:[*+-]|\\d{1,9}[.)])/;\nvar re = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/;\nvar se = k(re).replace(/bull/g, N).replace(/blockCode/g, /(?: {4}| {0,3}\\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g, \"\").getRegex();\nvar Oe = k(re).replace(/bull/g, N).replace(/blockCode/g, /(?: {4}| {0,3}\\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\\n>]+>\\n/).replace(/table/g, / {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex();\nvar Q = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nvar we = /^[^\\n]+/;\nvar F = /(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/;\nvar ye = k(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\", F).replace(\"title\", /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex();\nvar Pe = k(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g, N).getRegex();\nvar v = \"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\";\nvar j = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nvar Se = k(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$))\", \"i\").replace(\"comment\", j).replace(\"tag\", v).replace(\"attribute\", / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\nvar ie = k(Q).replace(\"hr\", I).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\", \"\").replace(\"|table\", \"\").replace(\"blockquote\", \" {0,3}>\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", v).getRegex();\nvar $e = k(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\", ie).getRegex();\nvar U = { blockquote: $e, code: be, def: ye, fences: Re, heading: Te, hr: I, html: Se, lheading: se, list: Pe, newline: xe, paragraph: ie, table: C, text: we };\nvar te = k(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\", I).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\", \" {0,3}>\").replace(\"code\", \"(?: {4}| {0,3}\\t)[^\\\\n]\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", v).getRegex();\nvar _e = { ...U, lheading: Oe, table: te, paragraph: k(Q).replace(\"hr\", I).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\", \"\").replace(\"table\", te).replace(\"blockquote\", \" {0,3}>\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", v).getRegex() };\nvar Le = { ...U, html: k(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\", j).replace(/tag/g, \"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(), def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/, heading: /^(#{1,6})(.*)(?:\\n+|$)/, fences: C, lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/, paragraph: k(Q).replace(\"hr\", I).replace(\"heading\", ` *#{1,6} *[^\n]`).replace(\"lheading\", se).replace(\"|table\", \"\").replace(\"blockquote\", \" {0,3}>\").replace(\"|fences\", \"\").replace(\"|list\", \"\").replace(\"|html\", \"\").replace(\"|tag\", \"\").getRegex() };\nvar Me = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nvar ze = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nvar oe = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nvar Ae = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\nvar D = /[\\p{P}\\p{S}]/u;\nvar K = /[\\s\\p{P}\\p{S}]/u;\nvar ae = /[^\\s\\p{P}\\p{S}]/u;\nvar Ce = k(/^((?![*_])punctSpace)/, \"u\").replace(/punctSpace/g, K).getRegex();\nvar le = /(?!~)[\\p{P}\\p{S}]/u;\nvar Ie = /(?!~)[\\s\\p{P}\\p{S}]/u;\nvar Ee = /(?:[^\\s\\p{P}\\p{S}]|~)/u;\nvar Be = k(/link|precode-code|html/, \"g\").replace(\"link\", /\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/).replace(\"precode-\", me ? \"(?<!`)()\" : \"(^^|[^`])\").replace(\"code\", /(?<b>`+)[^`]+\\k<b>(?!`)/).replace(\"html\", /<(?! )[^<>]*?>/).getRegex();\nvar ue = /^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/;\nvar qe = k(ue, \"u\").replace(/punct/g, D).getRegex();\nvar ve = k(ue, \"u\").replace(/punct/g, le).getRegex();\nvar pe = \"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\";\nvar De = k(pe, \"gu\").replace(/notPunctSpace/g, ae).replace(/punctSpace/g, K).replace(/punct/g, D).getRegex();\nvar He = k(pe, \"gu\").replace(/notPunctSpace/g, Ee).replace(/punctSpace/g, Ie).replace(/punct/g, le).getRegex();\nvar Ze = k(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\", \"gu\").replace(/notPunctSpace/g, ae).replace(/punctSpace/g, K).replace(/punct/g, D).getRegex();\nvar Ge = k(/\\\\(punct)/, \"gu\").replace(/punct/g, D).getRegex();\nvar Ne = k(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex();\nvar Qe = k(j).replace(\"(?:-->|$)\", \"-->\").getRegex();\nvar Fe = k(\"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\").replace(\"comment\", Qe).replace(\"attribute\", /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex();\nvar q = /(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+[^`]*?`+(?!`)|[^\\[\\]\\\\`])*?/;\nvar je = k(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/).replace(\"label\", q).replace(\"href\", /<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\", /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex();\nvar ce = k(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\", q).replace(\"ref\", F).getRegex();\nvar he = k(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\", F).getRegex();\nvar Ue = k(\"reflink|nolink(?!\\\\()\", \"g\").replace(\"reflink\", ce).replace(\"nolink\", he).getRegex();\nvar ne = /[hH][tT][tT][pP][sS]?|[fF][tT][pP]/;\nvar W = { _backpedal: C, anyPunctuation: Ge, autolink: Ne, blockSkip: Be, br: oe, code: ze, del: C, emStrongLDelim: qe, emStrongRDelimAst: De, emStrongRDelimUnd: Ze, escape: Me, link: je, nolink: he, punctuation: Ce, reflink: ce, reflinkSearch: Ue, tag: Fe, text: Ae, url: C };\nvar Ke = { ...W, link: k(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\", q).getRegex(), reflink: k(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\", q).getRegex() };\nvar G = { ...W, emStrongRDelimAst: He, emStrongLDelim: ve, url: k(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace(\"protocol\", ne).replace(\"email\", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(), _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/, del: /^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/, text: k(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/).replace(\"protocol\", ne).getRegex() };\nvar We = { ...G, br: k(oe).replace(\"{2,}\", \"*\").getRegex(), text: k(G.text).replace(\"\\\\b_\", \"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g, \"*\").getRegex() };\nvar E = { normal: U, gfm: _e, pedantic: Le };\nvar M = { normal: W, gfm: G, breaks: We, pedantic: Ke };\nvar Xe = { \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" };\nvar ke = (u) => Xe[u];\nfunction w(u, e) {\n if (e) {\n if (m.escapeTest.test(u))\n return u.replace(m.escapeReplace, ke);\n } else if (m.escapeTestNoEncode.test(u))\n return u.replace(m.escapeReplaceNoEncode, ke);\n return u;\n}\nfunction X(u) {\n try {\n u = encodeURI(u).replace(m.percentDecode, \"%\");\n } catch {\n return null;\n }\n return u;\n}\nfunction J(u, e) {\n let t2 = u.replace(m.findPipe, (i, s, a) => {\n let o = false, l = s;\n for (;--l >= 0 && a[l] === \"\\\\\"; )\n o = !o;\n return o ? \"|\" : \" |\";\n }), n = t2.split(m.splitPipe), r = 0;\n if (n[0].trim() || n.shift(), n.length > 0 && !n.at(-1)?.trim() && n.pop(), e)\n if (n.length > e)\n n.splice(e);\n else\n for (;n.length < e; )\n n.push(\"\");\n for (;r < n.length; r++)\n n[r] = n[r].trim().replace(m.slashPipe, \"|\");\n return n;\n}\nfunction z(u, e, t2) {\n let n = u.length;\n if (n === 0)\n return \"\";\n let r = 0;\n for (;r < n; ) {\n let i = u.charAt(n - r - 1);\n if (i === e && !t2)\n r++;\n else if (i !== e && t2)\n r++;\n else\n break;\n }\n return u.slice(0, n - r);\n}\nfunction de(u, e) {\n if (u.indexOf(e[1]) === -1)\n return -1;\n let t2 = 0;\n for (let n = 0;n < u.length; n++)\n if (u[n] === \"\\\\\")\n n++;\n else if (u[n] === e[0])\n t2++;\n else if (u[n] === e[1] && (t2--, t2 < 0))\n return n;\n return t2 > 0 ? -2 : -1;\n}\nfunction ge(u, e, t2, n, r) {\n let i = e.href, s = e.title || null, a = u[1].replace(r.other.outputLinkReplace, \"$1\");\n n.state.inLink = true;\n let o = { type: u[0].charAt(0) === \"!\" ? \"image\" : \"link\", raw: t2, href: i, title: s, text: a, tokens: n.inlineTokens(a) };\n return n.state.inLink = false, o;\n}\nfunction Je(u, e, t2) {\n let n = u.match(t2.other.indentCodeCompensation);\n if (n === null)\n return e;\n let r = n[1];\n return e.split(`\n`).map((i) => {\n let s = i.match(t2.other.beginningSpace);\n if (s === null)\n return i;\n let [a] = s;\n return a.length >= r.length ? i.slice(r.length) : i;\n }).join(`\n`);\n}\nvar y = class {\n options;\n rules;\n lexer;\n constructor(e) {\n this.options = e || T;\n }\n space(e) {\n let t2 = this.rules.block.newline.exec(e);\n if (t2 && t2[0].length > 0)\n return { type: \"space\", raw: t2[0] };\n }\n code(e) {\n let t2 = this.rules.block.code.exec(e);\n if (t2) {\n let n = t2[0].replace(this.rules.other.codeRemoveIndent, \"\");\n return { type: \"code\", raw: t2[0], codeBlockStyle: \"indented\", text: this.options.pedantic ? n : z(n, `\n`) };\n }\n }\n fences(e) {\n let t2 = this.rules.block.fences.exec(e);\n if (t2) {\n let n = t2[0], r = Je(n, t2[3] || \"\", this.rules);\n return { type: \"code\", raw: n, lang: t2[2] ? t2[2].trim().replace(this.rules.inline.anyPunctuation, \"$1\") : t2[2], text: r };\n }\n }\n heading(e) {\n let t2 = this.rules.block.heading.exec(e);\n if (t2) {\n let n = t2[2].trim();\n if (this.rules.other.endingHash.test(n)) {\n let r = z(n, \"#\");\n (this.options.pedantic || !r || this.rules.other.endingSpaceChar.test(r)) && (n = r.trim());\n }\n return { type: \"heading\", raw: t2[0], depth: t2[1].length, text: n, tokens: this.lexer.inline(n) };\n }\n }\n hr(e) {\n let t2 = this.rules.block.hr.exec(e);\n if (t2)\n return { type: \"hr\", raw: z(t2[0], `\n`) };\n }\n blockquote(e) {\n let t2 = this.rules.block.blockquote.exec(e);\n if (t2) {\n let n = z(t2[0], `\n`).split(`\n`), r = \"\", i = \"\", s = [];\n for (;n.length > 0; ) {\n let a = false, o = [], l;\n for (l = 0;l < n.length; l++)\n if (this.rules.other.blockquoteStart.test(n[l]))\n o.push(n[l]), a = true;\n else if (!a)\n o.push(n[l]);\n else\n break;\n n = n.slice(l);\n let p = o.join(`\n`), c = p.replace(this.rules.other.blockquoteSetextReplace, `\n $1`).replace(this.rules.other.blockquoteSetextReplace2, \"\");\n r = r ? `${r}\n${p}` : p, i = i ? `${i}\n${c}` : c;\n let g = this.lexer.state.top;\n if (this.lexer.state.top = true, this.lexer.blockTokens(c, s, true), this.lexer.state.top = g, n.length === 0)\n break;\n let h2 = s.at(-1);\n if (h2?.type === \"code\")\n break;\n if (h2?.type === \"blockquote\") {\n let R = h2, f = R.raw + `\n` + n.join(`\n`), O = this.blockquote(f);\n s[s.length - 1] = O, r = r.substring(0, r.length - R.raw.length) + O.raw, i = i.substring(0, i.length - R.text.length) + O.text;\n break;\n } else if (h2?.type === \"list\") {\n let R = h2, f = R.raw + `\n` + n.join(`\n`), O = this.list(f);\n s[s.length - 1] = O, r = r.substring(0, r.length - h2.raw.length) + O.raw, i = i.substring(0, i.length - R.raw.length) + O.raw, n = f.substring(s.at(-1).raw.length).split(`\n`);\n continue;\n }\n }\n return { type: \"blockquote\", raw: r, tokens: s, text: i };\n }\n }\n list(e) {\n let t2 = this.rules.block.list.exec(e);\n if (t2) {\n let n = t2[1].trim(), r = n.length > 1, i = { type: \"list\", raw: \"\", ordered: r, start: r ? +n.slice(0, -1) : \"\", loose: false, items: [] };\n n = r ? `\\\\d{1,9}\\\\${n.slice(-1)}` : `\\\\${n}`, this.options.pedantic && (n = r ? n : \"[*+-]\");\n let s = this.rules.other.listItemRegex(n), a = false;\n for (;e; ) {\n let l = false, p = \"\", c = \"\";\n if (!(t2 = s.exec(e)) || this.rules.block.hr.test(e))\n break;\n p = t2[0], e = e.substring(p.length);\n let g = t2[2].split(`\n`, 1)[0].replace(this.rules.other.listReplaceTabs, (O) => \" \".repeat(3 * O.length)), h2 = e.split(`\n`, 1)[0], R = !g.trim(), f = 0;\n if (this.options.pedantic ? (f = 2, c = g.trimStart()) : R ? f = t2[1].length + 1 : (f = t2[2].search(this.rules.other.nonSpaceChar), f = f > 4 ? 1 : f, c = g.slice(f), f += t2[1].length), R && this.rules.other.blankLine.test(h2) && (p += h2 + `\n`, e = e.substring(h2.length + 1), l = true), !l) {\n let O = this.rules.other.nextBulletRegex(f), V = this.rules.other.hrRegex(f), Y = this.rules.other.fencesBeginRegex(f), ee = this.rules.other.headingBeginRegex(f), fe = this.rules.other.htmlBeginRegex(f);\n for (;e; ) {\n let H = e.split(`\n`, 1)[0], A;\n if (h2 = H, this.options.pedantic ? (h2 = h2.replace(this.rules.other.listReplaceNesting, \" \"), A = h2) : A = h2.replace(this.rules.other.tabCharGlobal, \" \"), Y.test(h2) || ee.test(h2) || fe.test(h2) || O.test(h2) || V.test(h2))\n break;\n if (A.search(this.rules.other.nonSpaceChar) >= f || !h2.trim())\n c += `\n` + A.slice(f);\n else {\n if (R || g.replace(this.rules.other.tabCharGlobal, \" \").search(this.rules.other.nonSpaceChar) >= 4 || Y.test(g) || ee.test(g) || V.test(g))\n break;\n c += `\n` + h2;\n }\n !R && !h2.trim() && (R = true), p += H + `\n`, e = e.substring(H.length + 1), g = A.slice(f);\n }\n }\n i.loose || (a ? i.loose = true : this.rules.other.doubleBlankLine.test(p) && (a = true)), i.items.push({ type: \"list_item\", raw: p, task: !!this.options.gfm && this.rules.other.listIsTask.test(c), loose: false, text: c, tokens: [] }), i.raw += p;\n }\n let o = i.items.at(-1);\n if (o)\n o.raw = o.raw.trimEnd(), o.text = o.text.trimEnd();\n else\n return;\n i.raw = i.raw.trimEnd();\n for (let l of i.items) {\n if (this.lexer.state.top = false, l.tokens = this.lexer.blockTokens(l.text, []), l.task) {\n if (l.text = l.text.replace(this.rules.other.listReplaceTask, \"\"), l.tokens[0]?.type === \"text\" || l.tokens[0]?.type === \"paragraph\") {\n l.tokens[0].raw = l.tokens[0].raw.replace(this.rules.other.listReplaceTask, \"\"), l.tokens[0].text = l.tokens[0].text.replace(this.rules.other.listReplaceTask, \"\");\n for (let c = this.lexer.inlineQueue.length - 1;c >= 0; c--)\n if (this.rules.other.listIsTask.test(this.lexer.inlineQueue[c].src)) {\n this.lexer.inlineQueue[c].src = this.lexer.inlineQueue[c].src.replace(this.rules.other.listReplaceTask, \"\");\n break;\n }\n }\n let p = this.rules.other.listTaskCheckbox.exec(l.raw);\n if (p) {\n let c = { type: \"checkbox\", raw: p[0] + \" \", checked: p[0] !== \"[ ]\" };\n l.checked = c.checked, i.loose ? l.tokens[0] && [\"paragraph\", \"text\"].includes(l.tokens[0].type) && \"tokens\" in l.tokens[0] && l.tokens[0].tokens ? (l.tokens[0].raw = c.raw + l.tokens[0].raw, l.tokens[0].text = c.raw + l.tokens[0].text, l.tokens[0].tokens.unshift(c)) : l.tokens.unshift({ type: \"paragraph\", raw: c.raw, text: c.raw, tokens: [c] }) : l.tokens.unshift(c);\n }\n }\n if (!i.loose) {\n let p = l.tokens.filter((g) => g.type === \"space\"), c = p.length > 0 && p.some((g) => this.rules.other.anyLine.test(g.raw));\n i.loose = c;\n }\n }\n if (i.loose)\n for (let l of i.items) {\n l.loose = true;\n for (let p of l.tokens)\n p.type === \"text\" && (p.type = \"paragraph\");\n }\n return i;\n }\n }\n html(e) {\n let t2 = this.rules.block.html.exec(e);\n if (t2)\n return { type: \"html\", block: true, raw: t2[0], pre: t2[1] === \"pre\" || t2[1] === \"script\" || t2[1] === \"style\", text: t2[0] };\n }\n def(e) {\n let t2 = this.rules.block.def.exec(e);\n if (t2) {\n let n = t2[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, \" \"), r = t2[2] ? t2[2].replace(this.rules.other.hrefBrackets, \"$1\").replace(this.rules.inline.anyPunctuation, \"$1\") : \"\", i = t2[3] ? t2[3].substring(1, t2[3].length - 1).replace(this.rules.inline.anyPunctuation, \"$1\") : t2[3];\n return { type: \"def\", tag: n, raw: t2[0], href: r, title: i };\n }\n }\n table(e) {\n let t2 = this.rules.block.table.exec(e);\n if (!t2 || !this.rules.other.tableDelimiter.test(t2[2]))\n return;\n let n = J(t2[1]), r = t2[2].replace(this.rules.other.tableAlignChars, \"\").split(\"|\"), i = t2[3]?.trim() ? t2[3].replace(this.rules.other.tableRowBlankLine, \"\").split(`\n`) : [], s = { type: \"table\", raw: t2[0], header: [], align: [], rows: [] };\n if (n.length === r.length) {\n for (let a of r)\n this.rules.other.tableAlignRight.test(a) ? s.align.push(\"right\") : this.rules.other.tableAlignCenter.test(a) ? s.align.push(\"center\") : this.rules.other.tableAlignLeft.test(a) ? s.align.push(\"left\") : s.align.push(null);\n for (let a = 0;a < n.length; a++)\n s.header.push({ text: n[a], tokens: this.lexer.inline(n[a]), header: true, align: s.align[a] });\n for (let a of i)\n s.rows.push(J(a, s.header.length).map((o, l) => ({ text: o, tokens: this.lexer.inline(o), header: false, align: s.align[l] })));\n return s;\n }\n }\n lheading(e) {\n let t2 = this.rules.block.lheading.exec(e);\n if (t2)\n return { type: \"heading\", raw: t2[0], depth: t2[2].charAt(0) === \"=\" ? 1 : 2, text: t2[1], tokens: this.lexer.inline(t2[1]) };\n }\n paragraph(e) {\n let t2 = this.rules.block.paragraph.exec(e);\n if (t2) {\n let n = t2[1].charAt(t2[1].length - 1) === `\n` ? t2[1].slice(0, -1) : t2[1];\n return { type: \"paragraph\", raw: t2[0], text: n, tokens: this.lexer.inline(n) };\n }\n }\n text(e) {\n let t2 = this.rules.block.text.exec(e);\n if (t2)\n return { type: \"text\", raw: t2[0], text: t2[0], tokens: this.lexer.inline(t2[0]) };\n }\n escape(e) {\n let t2 = this.rules.inline.escape.exec(e);\n if (t2)\n return { type: \"escape\", raw: t2[0], text: t2[1] };\n }\n tag(e) {\n let t2 = this.rules.inline.tag.exec(e);\n if (t2)\n return !this.lexer.state.inLink && this.rules.other.startATag.test(t2[0]) ? this.lexer.state.inLink = true : this.lexer.state.inLink && this.rules.other.endATag.test(t2[0]) && (this.lexer.state.inLink = false), !this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(t2[0]) ? this.lexer.state.inRawBlock = true : this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(t2[0]) && (this.lexer.state.inRawBlock = false), { type: \"html\", raw: t2[0], inLink: this.lexer.state.inLink, inRawBlock: this.lexer.state.inRawBlock, block: false, text: t2[0] };\n }\n link(e) {\n let t2 = this.rules.inline.link.exec(e);\n if (t2) {\n let n = t2[2].trim();\n if (!this.options.pedantic && this.rules.other.startAngleBracket.test(n)) {\n if (!this.rules.other.endAngleBracket.test(n))\n return;\n let s = z(n.slice(0, -1), \"\\\\\");\n if ((n.length - s.length) % 2 === 0)\n return;\n } else {\n let s = de(t2[2], \"()\");\n if (s === -2)\n return;\n if (s > -1) {\n let o = (t2[0].indexOf(\"!\") === 0 ? 5 : 4) + t2[1].length + s;\n t2[2] = t2[2].substring(0, s), t2[0] = t2[0].substring(0, o).trim(), t2[3] = \"\";\n }\n }\n let r = t2[2], i = \"\";\n if (this.options.pedantic) {\n let s = this.rules.other.pedanticHrefTitle.exec(r);\n s && (r = s[1], i = s[3]);\n } else\n i = t2[3] ? t2[3].slice(1, -1) : \"\";\n return r = r.trim(), this.rules.other.startAngleBracket.test(r) && (this.options.pedantic && !this.rules.other.endAngleBracket.test(n) ? r = r.slice(1) : r = r.slice(1, -1)), ge(t2, { href: r && r.replace(this.rules.inline.anyPunctuation, \"$1\"), title: i && i.replace(this.rules.inline.anyPunctuation, \"$1\") }, t2[0], this.lexer, this.rules);\n }\n }\n reflink(e, t2) {\n let n;\n if ((n = this.rules.inline.reflink.exec(e)) || (n = this.rules.inline.nolink.exec(e))) {\n let r = (n[2] || n[1]).replace(this.rules.other.multipleSpaceGlobal, \" \"), i = t2[r.toLowerCase()];\n if (!i) {\n let s = n[0].charAt(0);\n return { type: \"text\", raw: s, text: s };\n }\n return ge(n, i, n[0], this.lexer, this.rules);\n }\n }\n emStrong(e, t2, n = \"\") {\n let r = this.rules.inline.emStrongLDelim.exec(e);\n if (!r || r[3] && n.match(this.rules.other.unicodeAlphaNumeric))\n return;\n if (!(r[1] || r[2] || \"\") || !n || this.rules.inline.punctuation.exec(n)) {\n let s = [...r[0]].length - 1, a, o, l = s, p = 0, c = r[0][0] === \"*\" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n for (c.lastIndex = 0, t2 = t2.slice(-1 * e.length + s);(r = c.exec(t2)) != null; ) {\n if (a = r[1] || r[2] || r[3] || r[4] || r[5] || r[6], !a)\n continue;\n if (o = [...a].length, r[3] || r[4]) {\n l += o;\n continue;\n } else if ((r[5] || r[6]) && s % 3 && !((s + o) % 3)) {\n p += o;\n continue;\n }\n if (l -= o, l > 0)\n continue;\n o = Math.min(o, o + l + p);\n let g = [...r[0]][0].length, h2 = e.slice(0, s + r.index + g + o);\n if (Math.min(s, o) % 2) {\n let f = h2.slice(1, -1);\n return { type: \"em\", raw: h2, text: f, tokens: this.lexer.inlineTokens(f) };\n }\n let R = h2.slice(2, -2);\n return { type: \"strong\", raw: h2, text: R, tokens: this.lexer.inlineTokens(R) };\n }\n }\n }\n codespan(e) {\n let t2 = this.rules.inline.code.exec(e);\n if (t2) {\n let n = t2[2].replace(this.rules.other.newLineCharGlobal, \" \"), r = this.rules.other.nonSpaceChar.test(n), i = this.rules.other.startingSpaceChar.test(n) && this.rules.other.endingSpaceChar.test(n);\n return r && i && (n = n.substring(1, n.length - 1)), { type: \"codespan\", raw: t2[0], text: n };\n }\n }\n br(e) {\n let t2 = this.rules.inline.br.exec(e);\n if (t2)\n return { type: \"br\", raw: t2[0] };\n }\n del(e) {\n let t2 = this.rules.inline.del.exec(e);\n if (t2)\n return { type: \"del\", raw: t2[0], text: t2[2], tokens: this.lexer.inlineTokens(t2[2]) };\n }\n autolink(e) {\n let t2 = this.rules.inline.autolink.exec(e);\n if (t2) {\n let n, r;\n return t2[2] === \"@\" ? (n = t2[1], r = \"mailto:\" + n) : (n = t2[1], r = n), { type: \"link\", raw: t2[0], text: n, href: r, tokens: [{ type: \"text\", raw: n, text: n }] };\n }\n }\n url(e) {\n let t2;\n if (t2 = this.rules.inline.url.exec(e)) {\n let n, r;\n if (t2[2] === \"@\")\n n = t2[0], r = \"mailto:\" + n;\n else {\n let i;\n do\n i = t2[0], t2[0] = this.rules.inline._backpedal.exec(t2[0])?.[0] ?? \"\";\n while (i !== t2[0]);\n n = t2[0], t2[1] === \"www.\" ? r = \"http://\" + t2[0] : r = t2[0];\n }\n return { type: \"link\", raw: t2[0], text: n, href: r, tokens: [{ type: \"text\", raw: n, text: n }] };\n }\n }\n inlineText(e) {\n let t2 = this.rules.inline.text.exec(e);\n if (t2) {\n let n = this.lexer.state.inRawBlock;\n return { type: \"text\", raw: t2[0], text: t2[0], escaped: n };\n }\n }\n};\nvar x = class u {\n tokens;\n options;\n state;\n inlineQueue;\n tokenizer;\n constructor(e) {\n this.tokens = [], this.tokens.links = Object.create(null), this.options = e || T, this.options.tokenizer = this.options.tokenizer || new y, this.tokenizer = this.options.tokenizer, this.tokenizer.options = this.options, this.tokenizer.lexer = this, this.inlineQueue = [], this.state = { inLink: false, inRawBlock: false, top: true };\n let t2 = { other: m, block: E.normal, inline: M.normal };\n this.options.pedantic ? (t2.block = E.pedantic, t2.inline = M.pedantic) : this.options.gfm && (t2.block = E.gfm, this.options.breaks ? t2.inline = M.breaks : t2.inline = M.gfm), this.tokenizer.rules = t2;\n }\n static get rules() {\n return { block: E, inline: M };\n }\n static lex(e, t2) {\n return new u(t2).lex(e);\n }\n static lexInline(e, t2) {\n return new u(t2).inlineTokens(e);\n }\n lex(e) {\n e = e.replace(m.carriageReturn, `\n`), this.blockTokens(e, this.tokens);\n for (let t2 = 0;t2 < this.inlineQueue.length; t2++) {\n let n = this.inlineQueue[t2];\n this.inlineTokens(n.src, n.tokens);\n }\n return this.inlineQueue = [], this.tokens;\n }\n blockTokens(e, t2 = [], n = false) {\n for (this.options.pedantic && (e = e.replace(m.tabCharGlobal, \" \").replace(m.spaceLine, \"\"));e; ) {\n let r;\n if (this.options.extensions?.block?.some((s) => (r = s.call({ lexer: this }, e, t2)) ? (e = e.substring(r.raw.length), t2.push(r), true) : false))\n continue;\n if (r = this.tokenizer.space(e)) {\n e = e.substring(r.raw.length);\n let s = t2.at(-1);\n r.raw.length === 1 && s !== undefined ? s.raw += `\n` : t2.push(r);\n continue;\n }\n if (r = this.tokenizer.code(e)) {\n e = e.substring(r.raw.length);\n let s = t2.at(-1);\n s?.type === \"paragraph\" || s?.type === \"text\" ? (s.raw += (s.raw.endsWith(`\n`) ? \"\" : `\n`) + r.raw, s.text += `\n` + r.text, this.inlineQueue.at(-1).src = s.text) : t2.push(r);\n continue;\n }\n if (r = this.tokenizer.fences(e)) {\n e = e.substring(r.raw.length), t2.push(r);\n continue;\n }\n if (r = this.tokenizer.heading(e)) {\n e = e.substring(r.raw.length), t2.push(r);\n continue;\n }\n if (r = this.tokenizer.hr(e)) {\n e = e.substring(r.raw.length), t2.push(r);\n continue;\n }\n if (r = this.tokenizer.blockquote(e)) {\n e = e.substring(r.raw.length), t2.push(r);\n continue;\n }\n if (r = this.tokenizer.list(e)) {\n e = e.substring(r.raw.length), t2.push(r);\n continue;\n }\n if (r = this.tokenizer.html(e)) {\n e = e.substring(r.raw.length), t2.push(r);\n continue;\n }\n if (r = this.tokenizer.def(e)) {\n e = e.substring(r.raw.length);\n let s = t2.at(-1);\n s?.type === \"paragraph\" || s?.type === \"text\" ? (s.raw += (s.raw.endsWith(`\n`) ? \"\" : `\n`) + r.raw, s.text += `\n` + r.raw, this.inlineQueue.at(-1).src = s.text) : this.tokens.links[r.tag] || (this.tokens.links[r.tag] = { href: r.href, title: r.title }, t2.push(r));\n continue;\n }\n if (r = this.tokenizer.table(e)) {\n e = e.substring(r.raw.length), t2.push(r);\n continue;\n }\n if (r = this.tokenizer.lheading(e)) {\n e = e.substring(r.raw.length), t2.push(r);\n continue;\n }\n let i = e;\n if (this.options.extensions?.startBlock) {\n let s = 1 / 0, a = e.slice(1), o;\n this.options.extensions.startBlock.forEach((l) => {\n o = l.call({ lexer: this }, a), typeof o == \"number\" && o >= 0 && (s = Math.min(s, o));\n }), s < 1 / 0 && s >= 0 && (i = e.substring(0, s + 1));\n }\n if (this.state.top && (r = this.tokenizer.paragraph(i))) {\n let s = t2.at(-1);\n n && s?.type === \"paragraph\" ? (s.raw += (s.raw.endsWith(`\n`) ? \"\" : `\n`) + r.raw, s.text += `\n` + r.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src = s.text) : t2.push(r), n = i.length !== e.length, e = e.substring(r.raw.length);\n continue;\n }\n if (r = this.tokenizer.text(e)) {\n e = e.substring(r.raw.length);\n let s = t2.at(-1);\n s?.type === \"text\" ? (s.raw += (s.raw.endsWith(`\n`) ? \"\" : `\n`) + r.raw, s.text += `\n` + r.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src = s.text) : t2.push(r);\n continue;\n }\n if (e) {\n let s = \"Infinite loop on byte: \" + e.charCodeAt(0);\n if (this.options.silent) {\n console.error(s);\n break;\n } else\n throw new Error(s);\n }\n }\n return this.state.top = true, t2;\n }\n inline(e, t2 = []) {\n return this.inlineQueue.push({ src: e, tokens: t2 }), t2;\n }\n inlineTokens(e, t2 = []) {\n let n = e, r = null;\n if (this.tokens.links) {\n let o = Object.keys(this.tokens.links);\n if (o.length > 0)\n for (;(r = this.tokenizer.rules.inline.reflinkSearch.exec(n)) != null; )\n o.includes(r[0].slice(r[0].lastIndexOf(\"[\") + 1, -1)) && (n = n.slice(0, r.index) + \"[\" + \"a\".repeat(r[0].length - 2) + \"]\" + n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex));\n }\n for (;(r = this.tokenizer.rules.inline.anyPunctuation.exec(n)) != null; )\n n = n.slice(0, r.index) + \"++\" + n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n let i;\n for (;(r = this.tokenizer.rules.inline.blockSkip.exec(n)) != null; )\n i = r[2] ? r[2].length : 0, n = n.slice(0, r.index + i) + \"[\" + \"a\".repeat(r[0].length - i - 2) + \"]\" + n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n n = this.options.hooks?.emStrongMask?.call({ lexer: this }, n) ?? n;\n let s = false, a = \"\";\n for (;e; ) {\n s || (a = \"\"), s = false;\n let o;\n if (this.options.extensions?.inline?.some((p) => (o = p.call({ lexer: this }, e, t2)) ? (e = e.substring(o.raw.length), t2.push(o), true) : false))\n continue;\n if (o = this.tokenizer.escape(e)) {\n e = e.substring(o.raw.length), t2.push(o);\n continue;\n }\n if (o = this.tokenizer.tag(e)) {\n e = e.substring(o.raw.length), t2.push(o);\n continue;\n }\n if (o = this.tokenizer.link(e)) {\n e = e.substring(o.raw.length), t2.push(o);\n continue;\n }\n if (o = this.tokenizer.reflink(e, this.tokens.links)) {\n e = e.substring(o.raw.length);\n let p = t2.at(-1);\n o.type === \"text\" && p?.type === \"text\" ? (p.raw += o.raw, p.text += o.text) : t2.push(o);\n continue;\n }\n if (o = this.tokenizer.emStrong(e, n, a)) {\n e = e.substring(o.raw.length), t2.push(o);\n continue;\n }\n if (o = this.tokenizer.codespan(e)) {\n e = e.substring(o.raw.length), t2.push(o);\n continue;\n }\n if (o = this.tokenizer.br(e)) {\n e = e.substring(o.raw.length), t2.push(o);\n continue;\n }\n if (o = this.tokenizer.del(e)) {\n e = e.substring(o.raw.length), t2.push(o);\n continue;\n }\n if (o = this.tokenizer.autolink(e)) {\n e = e.substring(o.raw.length), t2.push(o);\n continue;\n }\n if (!this.state.inLink && (o = this.tokenizer.url(e))) {\n e = e.substring(o.raw.length), t2.push(o);\n continue;\n }\n let l = e;\n if (this.options.extensions?.startInline) {\n let p = 1 / 0, c = e.slice(1), g;\n this.options.extensions.startInline.forEach((h2) => {\n g = h2.call({ lexer: this }, c), typeof g == \"number\" && g >= 0 && (p = Math.min(p, g));\n }), p < 1 / 0 && p >= 0 && (l = e.substring(0, p + 1));\n }\n if (o = this.tokenizer.inlineText(l)) {\n e = e.substring(o.raw.length), o.raw.slice(-1) !== \"_\" && (a = o.raw.slice(-1)), s = true;\n let p = t2.at(-1);\n p?.type === \"text\" ? (p.raw += o.raw, p.text += o.text) : t2.push(o);\n continue;\n }\n if (e) {\n let p = \"Infinite loop on byte: \" + e.charCodeAt(0);\n if (this.options.silent) {\n console.error(p);\n break;\n } else\n throw new Error(p);\n }\n }\n return t2;\n }\n};\nvar P = class {\n options;\n parser;\n constructor(e) {\n this.options = e || T;\n }\n space(e) {\n return \"\";\n }\n code({ text: e, lang: t2, escaped: n }) {\n let r = (t2 || \"\").match(m.notSpaceStart)?.[0], i = e.replace(m.endingNewline, \"\") + `\n`;\n return r ? '<pre><code class=\"language-' + w(r) + '\">' + (n ? i : w(i, true)) + `</code></pre>\n` : \"<pre><code>\" + (n ? i : w(i, true)) + `</code></pre>\n`;\n }\n blockquote({ tokens: e }) {\n return `<blockquote>\n${this.parser.parse(e)}</blockquote>\n`;\n }\n html({ text: e }) {\n return e;\n }\n def(e) {\n return \"\";\n }\n heading({ tokens: e, depth: t2 }) {\n return `<h${t2}>${this.parser.parseInline(e)}</h${t2}>\n`;\n }\n hr(e) {\n return `<hr>\n`;\n }\n list(e) {\n let { ordered: t2, start: n } = e, r = \"\";\n for (let a = 0;a < e.items.length; a++) {\n let o = e.items[a];\n r += this.listitem(o);\n }\n let i = t2 ? \"ol\" : \"ul\", s = t2 && n !== 1 ? ' start=\"' + n + '\"' : \"\";\n return \"<\" + i + s + `>\n` + r + \"</\" + i + `>\n`;\n }\n listitem(e) {\n return `<li>${this.parser.parse(e.tokens)}</li>\n`;\n }\n checkbox({ checked: e }) {\n return \"<input \" + (e ? 'checked=\"\" ' : \"\") + 'disabled=\"\" type=\"checkbox\"> ';\n }\n paragraph({ tokens: e }) {\n return `<p>${this.parser.parseInline(e)}</p>\n`;\n }\n table(e) {\n let t2 = \"\", n = \"\";\n for (let i = 0;i < e.header.length; i++)\n n += this.tablecell(e.header[i]);\n t2 += this.tablerow({ text: n });\n let r = \"\";\n for (let i = 0;i < e.rows.length; i++) {\n let s = e.rows[i];\n n = \"\";\n for (let a = 0;a < s.length; a++)\n n += this.tablecell(s[a]);\n r += this.tablerow({ text: n });\n }\n return r && (r = `<tbody>${r}</tbody>`), `<table>\n<thead>\n` + t2 + `</thead>\n` + r + `</table>\n`;\n }\n tablerow({ text: e }) {\n return `<tr>\n${e}</tr>\n`;\n }\n tablecell(e) {\n let t2 = this.parser.parseInline(e.tokens), n = e.header ? \"th\" : \"td\";\n return (e.align ? `<${n} align=\"${e.align}\">` : `<${n}>`) + t2 + `</${n}>\n`;\n }\n strong({ tokens: e }) {\n return `<strong>${this.parser.parseInline(e)}</strong>`;\n }\n em({ tokens: e }) {\n return `<em>${this.parser.parseInline(e)}</em>`;\n }\n codespan({ text: e }) {\n return `<code>${w(e, true)}</code>`;\n }\n br(e) {\n return \"<br>\";\n }\n del({ tokens: e }) {\n return `<del>${this.parser.parseInline(e)}</del>`;\n }\n link({ href: e, title: t2, tokens: n }) {\n let r = this.parser.parseInline(n), i = X(e);\n if (i === null)\n return r;\n e = i;\n let s = '<a href=\"' + e + '\"';\n return t2 && (s += ' title=\"' + w(t2) + '\"'), s += \">\" + r + \"</a>\", s;\n }\n image({ href: e, title: t2, text: n, tokens: r }) {\n r && (n = this.parser.parseInline(r, this.parser.textRenderer));\n let i = X(e);\n if (i === null)\n return w(n);\n e = i;\n let s = `<img src=\"${e}\" alt=\"${n}\"`;\n return t2 && (s += ` title=\"${w(t2)}\"`), s += \">\", s;\n }\n text(e) {\n return \"tokens\" in e && e.tokens ? this.parser.parseInline(e.tokens) : (\"escaped\" in e) && e.escaped ? e.text : w(e.text);\n }\n};\nvar $ = class {\n strong({ text: e }) {\n return e;\n }\n em({ text: e }) {\n return e;\n }\n codespan({ text: e }) {\n return e;\n }\n del({ text: e }) {\n return e;\n }\n html({ text: e }) {\n return e;\n }\n text({ text: e }) {\n return e;\n }\n link({ text: e }) {\n return \"\" + e;\n }\n image({ text: e }) {\n return \"\" + e;\n }\n br() {\n return \"\";\n }\n checkbox({ raw: e }) {\n return e;\n }\n};\nvar b = class u2 {\n options;\n renderer;\n textRenderer;\n constructor(e) {\n this.options = e || T, this.options.renderer = this.options.renderer || new P, this.renderer = this.options.renderer, this.renderer.options = this.options, this.renderer.parser = this, this.textRenderer = new $;\n }\n static parse(e, t2) {\n return new u2(t2).parse(e);\n }\n static parseInline(e, t2) {\n return new u2(t2).parseInline(e);\n }\n parse(e) {\n let t2 = \"\";\n for (let n = 0;n < e.length; n++) {\n let r = e[n];\n if (this.options.extensions?.renderers?.[r.type]) {\n let s = r, a = this.options.extensions.renderers[s.type].call({ parser: this }, s);\n if (a !== false || ![\"space\", \"hr\", \"heading\", \"code\", \"table\", \"blockquote\", \"list\", \"html\", \"def\", \"paragraph\", \"text\"].includes(s.type)) {\n t2 += a || \"\";\n continue;\n }\n }\n let i = r;\n switch (i.type) {\n case \"space\": {\n t2 += this.renderer.space(i);\n break;\n }\n case \"hr\": {\n t2 += this.renderer.hr(i);\n break;\n }\n case \"heading\": {\n t2 += this.renderer.heading(i);\n break;\n }\n case \"code\": {\n t2 += this.renderer.code(i);\n break;\n }\n case \"table\": {\n t2 += this.renderer.table(i);\n break;\n }\n case \"blockquote\": {\n t2 += this.renderer.blockquote(i);\n break;\n }\n case \"list\": {\n t2 += this.renderer.list(i);\n break;\n }\n case \"checkbox\": {\n t2 += this.renderer.checkbox(i);\n break;\n }\n case \"html\": {\n t2 += this.renderer.html(i);\n break;\n }\n case \"def\": {\n t2 += this.renderer.def(i);\n break;\n }\n case \"paragraph\": {\n t2 += this.renderer.paragraph(i);\n break;\n }\n case \"text\": {\n t2 += this.renderer.text(i);\n break;\n }\n default: {\n let s = 'Token with \"' + i.type + '\" type was not found.';\n if (this.options.silent)\n return console.error(s), \"\";\n throw new Error(s);\n }\n }\n }\n return t2;\n }\n parseInline(e, t2 = this.renderer) {\n let n = \"\";\n for (let r = 0;r < e.length; r++) {\n let i = e[r];\n if (this.options.extensions?.renderers?.[i.type]) {\n let a = this.options.extensions.renderers[i.type].call({ parser: this }, i);\n if (a !== false || ![\"escape\", \"html\", \"link\", \"image\", \"strong\", \"em\", \"codespan\", \"br\", \"del\", \"text\"].includes(i.type)) {\n n += a || \"\";\n continue;\n }\n }\n let s = i;\n switch (s.type) {\n case \"escape\": {\n n += t2.text(s);\n break;\n }\n case \"html\": {\n n += t2.html(s);\n break;\n }\n case \"link\": {\n n += t2.link(s);\n break;\n }\n case \"image\": {\n n += t2.image(s);\n break;\n }\n case \"checkbox\": {\n n += t2.checkbox(s);\n break;\n }\n case \"strong\": {\n n += t2.strong(s);\n break;\n }\n case \"em\": {\n n += t2.em(s);\n break;\n }\n case \"codespan\": {\n n += t2.codespan(s);\n break;\n }\n case \"br\": {\n n += t2.br(s);\n break;\n }\n case \"del\": {\n n += t2.del(s);\n break;\n }\n case \"text\": {\n n += t2.text(s);\n break;\n }\n default: {\n let a = 'Token with \"' + s.type + '\" type was not found.';\n if (this.options.silent)\n return console.error(a), \"\";\n throw new Error(a);\n }\n }\n }\n return n;\n }\n};\nvar S = class {\n options;\n block;\n constructor(e) {\n this.options = e || T;\n }\n static passThroughHooks = new Set([\"preprocess\", \"postprocess\", \"processAllTokens\", \"emStrongMask\"]);\n static passThroughHooksRespectAsync = new Set([\"preprocess\", \"postprocess\", \"processAllTokens\"]);\n preprocess(e) {\n return e;\n }\n postprocess(e) {\n return e;\n }\n processAllTokens(e) {\n return e;\n }\n emStrongMask(e) {\n return e;\n }\n provideLexer() {\n return this.block ? x.lex : x.lexInline;\n }\n provideParser() {\n return this.block ? b.parse : b.parseInline;\n }\n};\nvar B = class {\n defaults = L();\n options = this.setOptions;\n parse = this.parseMarkdown(true);\n parseInline = this.parseMarkdown(false);\n Parser = b;\n Renderer = P;\n TextRenderer = $;\n Lexer = x;\n Tokenizer = y;\n Hooks = S;\n constructor(...e) {\n this.use(...e);\n }\n walkTokens(e, t2) {\n let n = [];\n for (let r of e)\n switch (n = n.concat(t2.call(this, r)), r.type) {\n case \"table\": {\n let i = r;\n for (let s of i.header)\n n = n.concat(this.walkTokens(s.tokens, t2));\n for (let s of i.rows)\n for (let a of s)\n n = n.concat(this.walkTokens(a.tokens, t2));\n break;\n }\n case \"list\": {\n let i = r;\n n = n.concat(this.walkTokens(i.items, t2));\n break;\n }\n default: {\n let i = r;\n this.defaults.extensions?.childTokens?.[i.type] ? this.defaults.extensions.childTokens[i.type].forEach((s) => {\n let a = i[s].flat(1 / 0);\n n = n.concat(this.walkTokens(a, t2));\n }) : i.tokens && (n = n.concat(this.walkTokens(i.tokens, t2)));\n }\n }\n return n;\n }\n use(...e) {\n let t2 = this.defaults.extensions || { renderers: {}, childTokens: {} };\n return e.forEach((n) => {\n let r = { ...n };\n if (r.async = this.defaults.async || r.async || false, n.extensions && (n.extensions.forEach((i) => {\n if (!i.name)\n throw new Error(\"extension name required\");\n if (\"renderer\" in i) {\n let s = t2.renderers[i.name];\n s ? t2.renderers[i.name] = function(...a) {\n let o = i.renderer.apply(this, a);\n return o === false && (o = s.apply(this, a)), o;\n } : t2.renderers[i.name] = i.renderer;\n }\n if (\"tokenizer\" in i) {\n if (!i.level || i.level !== \"block\" && i.level !== \"inline\")\n throw new Error(\"extension level must be 'block' or 'inline'\");\n let s = t2[i.level];\n s ? s.unshift(i.tokenizer) : t2[i.level] = [i.tokenizer], i.start && (i.level === \"block\" ? t2.startBlock ? t2.startBlock.push(i.start) : t2.startBlock = [i.start] : i.level === \"inline\" && (t2.startInline ? t2.startInline.push(i.start) : t2.startInline = [i.start]));\n }\n \"childTokens\" in i && i.childTokens && (t2.childTokens[i.name] = i.childTokens);\n }), r.extensions = t2), n.renderer) {\n let i = this.defaults.renderer || new P(this.defaults);\n for (let s in n.renderer) {\n if (!(s in i))\n throw new Error(`renderer '${s}' does not exist`);\n if ([\"options\", \"parser\"].includes(s))\n continue;\n let a = s, o = n.renderer[a], l = i[a];\n i[a] = (...p) => {\n let c = o.apply(i, p);\n return c === false && (c = l.apply(i, p)), c || \"\";\n };\n }\n r.renderer = i;\n }\n if (n.tokenizer) {\n let i = this.defaults.tokenizer || new y(this.defaults);\n for (let s in n.tokenizer) {\n if (!(s in i))\n throw new Error(`tokenizer '${s}' does not exist`);\n if ([\"options\", \"rules\", \"lexer\"].includes(s))\n continue;\n let a = s, o = n.tokenizer[a], l = i[a];\n i[a] = (...p) => {\n let c = o.apply(i, p);\n return c === false && (c = l.apply(i, p)), c;\n };\n }\n r.tokenizer = i;\n }\n if (n.hooks) {\n let i = this.defaults.hooks || new S;\n for (let s in n.hooks) {\n if (!(s in i))\n throw new Error(`hook '${s}' does not exist`);\n if ([\"options\", \"block\"].includes(s))\n continue;\n let a = s, o = n.hooks[a], l = i[a];\n S.passThroughHooks.has(s) ? i[a] = (p) => {\n if (this.defaults.async && S.passThroughHooksRespectAsync.has(s))\n return (async () => {\n let g = await o.call(i, p);\n return l.call(i, g);\n })();\n let c = o.call(i, p);\n return l.call(i, c);\n } : i[a] = (...p) => {\n if (this.defaults.async)\n return (async () => {\n let g = await o.apply(i, p);\n return g === false && (g = await l.apply(i, p)), g;\n })();\n let c = o.apply(i, p);\n return c === false && (c = l.apply(i, p)), c;\n };\n }\n r.hooks = i;\n }\n if (n.walkTokens) {\n let i = this.defaults.walkTokens, s = n.walkTokens;\n r.walkTokens = function(a) {\n let o = [];\n return o.push(s.call(this, a)), i && (o = o.concat(i.call(this, a))), o;\n };\n }\n this.defaults = { ...this.defaults, ...r };\n }), this;\n }\n setOptions(e) {\n return this.defaults = { ...this.defaults, ...e }, this;\n }\n lexer(e, t2) {\n return x.lex(e, t2 ?? this.defaults);\n }\n parser(e, t2) {\n return b.parse(e, t2 ?? this.defaults);\n }\n parseMarkdown(e) {\n return (n, r) => {\n let i = { ...r }, s = { ...this.defaults, ...i }, a = this.onError(!!s.silent, !!s.async);\n if (this.defaults.async === true && i.async === false)\n return a(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));\n if (typeof n > \"u\" || n === null)\n return a(new Error(\"marked(): input parameter is undefined or null\"));\n if (typeof n != \"string\")\n return a(new Error(\"marked(): input parameter is of type \" + Object.prototype.toString.call(n) + \", string expected\"));\n if (s.hooks && (s.hooks.options = s, s.hooks.block = e), s.async)\n return (async () => {\n let o = s.hooks ? await s.hooks.preprocess(n) : n, p = await (s.hooks ? await s.hooks.provideLexer() : e ? x.lex : x.lexInline)(o, s), c = s.hooks ? await s.hooks.processAllTokens(p) : p;\n s.walkTokens && await Promise.all(this.walkTokens(c, s.walkTokens));\n let h2 = await (s.hooks ? await s.hooks.provideParser() : e ? b.parse : b.parseInline)(c, s);\n return s.hooks ? await s.hooks.postprocess(h2) : h2;\n })().catch(a);\n try {\n s.hooks && (n = s.hooks.preprocess(n));\n let l = (s.hooks ? s.hooks.provideLexer() : e ? x.lex : x.lexInline)(n, s);\n s.hooks && (l = s.hooks.processAllTokens(l)), s.walkTokens && this.walkTokens(l, s.walkTokens);\n let c = (s.hooks ? s.hooks.provideParser() : e ? b.parse : b.parseInline)(l, s);\n return s.hooks && (c = s.hooks.postprocess(c)), c;\n } catch (o) {\n return a(o);\n }\n };\n }\n onError(e, t2) {\n return (n) => {\n if (n.message += `\nPlease report this to https://github.com/markedjs/marked.`, e) {\n let r = \"<p>An error occurred:</p><pre>\" + w(n.message + \"\", true) + \"</pre>\";\n return t2 ? Promise.resolve(r) : r;\n }\n if (t2)\n return Promise.reject(n);\n throw n;\n };\n }\n};\nvar _ = new B;\nfunction d(u3, e) {\n return _.parse(u3, e);\n}\nd.options = d.setOptions = function(u3) {\n return _.setOptions(u3), d.defaults = _.defaults, Z(d.defaults), d;\n};\nd.getDefaults = L;\nd.defaults = T;\nd.use = function(...u3) {\n return _.use(...u3), d.defaults = _.defaults, Z(d.defaults), d;\n};\nd.walkTokens = function(u3, e) {\n return _.walkTokens(u3, e);\n};\nd.parseInline = _.parseInline;\nd.Parser = b;\nd.parser = b.parse;\nd.Renderer = P;\nd.TextRenderer = $;\nd.Lexer = x;\nd.lexer = x.lex;\nd.Tokenizer = y;\nd.Hooks = S;\nd.parse = d;\nvar Dt = d.options;\nvar Ht = d.setOptions;\nvar Zt = d.use;\nvar Gt = d.walkTokens;\nvar Nt = d.parseInline;\nvar Ft = b.parse;\nvar jt = x.lex;\n\n// src/renderables/markdown-parser.ts\nfunction parseMarkdownIncremental(newContent, prevState, trailingUnstable = 2) {\n if (!prevState || prevState.tokens.length === 0) {\n try {\n const tokens = x.lex(newContent, { gfm: true });\n return { content: newContent, tokens };\n } catch {\n return { content: newContent, tokens: [] };\n }\n }\n let offset = 0;\n let reuseCount = 0;\n for (const token of prevState.tokens) {\n const tokenEnd = offset + token.raw.length;\n if (tokenEnd <= newContent.length && newContent.slice(offset, tokenEnd) === token.raw) {\n reuseCount++;\n offset = tokenEnd;\n } else {\n break;\n }\n }\n reuseCount = Math.max(0, reuseCount - trailingUnstable);\n offset = 0;\n for (let i = 0;i < reuseCount; i++) {\n offset += prevState.tokens[i].raw.length;\n }\n const stableTokens = prevState.tokens.slice(0, reuseCount);\n const remainingContent = newContent.slice(offset);\n if (!remainingContent) {\n return { content: newContent, tokens: stableTokens };\n }\n try {\n const newTokens = x.lex(remainingContent, { gfm: true });\n return { content: newContent, tokens: [...stableTokens, ...newTokens] };\n } catch {\n return { content: newContent, tokens: stableTokens };\n }\n}\n\n// src/renderables/Markdown.ts\nclass MarkdownRenderable extends Renderable {\n _content = \"\";\n _syntaxStyle;\n _conceal;\n _treeSitterClient;\n _renderNode;\n _parseState = null;\n _streaming = false;\n _blockStates = [];\n _styleDirty = false;\n _contentDefaultOptions = {\n content: \"\",\n conceal: true,\n streaming: false\n };\n constructor(ctx, options) {\n super(ctx, {\n ...options,\n flexDirection: \"column\",\n flexShrink: options.flexShrink ?? 0\n });\n this._syntaxStyle = options.syntaxStyle;\n this._conceal = options.conceal ?? this._contentDefaultOptions.conceal;\n this._content = options.content ?? this._contentDefaultOptions.content;\n this._treeSitterClient = options.treeSitterClient;\n this._renderNode = options.renderNode;\n this._streaming = options.streaming ?? this._contentDefaultOptions.streaming;\n this.updateBlocks();\n }\n get content() {\n return this._content;\n }\n set content(value) {\n if (this._content !== value) {\n this._content = value;\n this.updateBlocks();\n this.requestRender();\n }\n }\n get syntaxStyle() {\n return this._syntaxStyle;\n }\n set syntaxStyle(value) {\n if (this._syntaxStyle !== value) {\n this._syntaxStyle = value;\n this._styleDirty = true;\n }\n }\n get conceal() {\n return this._conceal;\n }\n set conceal(value) {\n if (this._conceal !== value) {\n this._conceal = value;\n this._styleDirty = true;\n }\n }\n get streaming() {\n return this._streaming;\n }\n set streaming(value) {\n if (this._streaming !== value) {\n this._streaming = value;\n this.clearCache();\n }\n }\n getStyle(group) {\n if (!this._syntaxStyle)\n return;\n let style = this._syntaxStyle.getStyle(group);\n if (!style && group.includes(\".\")) {\n const baseName = group.split(\".\")[0];\n style = this._syntaxStyle.getStyle(baseName);\n }\n return style;\n }\n createChunk(text, group, link2) {\n const style = this.getStyle(group) || this.getStyle(\"default\");\n return {\n __isChunk: true,\n text,\n fg: style?.fg,\n bg: style?.bg,\n attributes: style ? createTextAttributes({\n bold: style.bold,\n italic: style.italic,\n underline: style.underline,\n dim: style.dim\n }) : 0,\n link: link2\n };\n }\n createDefaultChunk(text) {\n return this.createChunk(text, \"default\");\n }\n renderInlineContent(tokens, chunks) {\n for (const token of tokens) {\n this.renderInlineToken(token, chunks);\n }\n }\n renderInlineToken(token, chunks) {\n switch (token.type) {\n case \"text\":\n chunks.push(this.createDefaultChunk(token.text));\n break;\n case \"escape\":\n chunks.push(this.createDefaultChunk(token.text));\n break;\n case \"codespan\":\n if (this._conceal) {\n chunks.push(this.createChunk(token.text, \"markup.raw\"));\n } else {\n chunks.push(this.createChunk(\"`\", \"markup.raw\"));\n chunks.push(this.createChunk(token.text, \"markup.raw\"));\n chunks.push(this.createChunk(\"`\", \"markup.raw\"));\n }\n break;\n case \"strong\":\n if (!this._conceal) {\n chunks.push(this.createChunk(\"**\", \"markup.strong\"));\n }\n for (const child of token.tokens) {\n this.renderInlineTokenWithStyle(child, chunks, \"markup.strong\");\n }\n if (!this._conceal) {\n chunks.push(this.createChunk(\"**\", \"markup.strong\"));\n }\n break;\n case \"em\":\n if (!this._conceal) {\n chunks.push(this.createChunk(\"*\", \"markup.italic\"));\n }\n for (const child of token.tokens) {\n this.renderInlineTokenWithStyle(child, chunks, \"markup.italic\");\n }\n if (!this._conceal) {\n chunks.push(this.createChunk(\"*\", \"markup.italic\"));\n }\n break;\n case \"del\":\n if (!this._conceal) {\n chunks.push(this.createChunk(\"~~\", \"markup.strikethrough\"));\n }\n for (const child of token.tokens) {\n this.renderInlineTokenWithStyle(child, chunks, \"markup.strikethrough\");\n }\n if (!this._conceal) {\n chunks.push(this.createChunk(\"~~\", \"markup.strikethrough\"));\n }\n break;\n case \"link\": {\n const linkHref = { url: token.href };\n if (this._conceal) {\n for (const child of token.tokens) {\n this.renderInlineTokenWithStyle(child, chunks, \"markup.link.label\", linkHref);\n }\n chunks.push(this.createChunk(\" (\", \"markup.link\", linkHref));\n chunks.push(this.createChunk(token.href, \"markup.link.url\", linkHref));\n chunks.push(this.createChunk(\")\", \"markup.link\", linkHref));\n } else {\n chunks.push(this.createChunk(\"[\", \"markup.link\", linkHref));\n for (const child of token.tokens) {\n this.renderInlineTokenWithStyle(child, chunks, \"markup.link.label\", linkHref);\n }\n chunks.push(this.createChunk(\"](\", \"markup.link\", linkHref));\n chunks.push(this.createChunk(token.href, \"markup.link.url\", linkHref));\n chunks.push(this.createChunk(\")\", \"markup.link\", linkHref));\n }\n break;\n }\n case \"image\": {\n const imageHref = { url: token.href };\n if (this._conceal) {\n chunks.push(this.createChunk(token.text || \"image\", \"markup.link.label\", imageHref));\n } else {\n chunks.push(this.createChunk(\"![\", \"markup.link\", imageHref));\n chunks.push(this.createChunk(token.text || \"\", \"markup.link.label\", imageHref));\n chunks.push(this.createChunk(\"](\", \"markup.link\", imageHref));\n chunks.push(this.createChunk(token.href, \"markup.link.url\", imageHref));\n chunks.push(this.createChunk(\")\", \"markup.link\", imageHref));\n }\n break;\n }\n case \"br\":\n chunks.push(this.createDefaultChunk(`\n`));\n break;\n default:\n if (\"tokens\" in token && Array.isArray(token.tokens)) {\n this.renderInlineContent(token.tokens, chunks);\n } else if (\"text\" in token && typeof token.text === \"string\") {\n chunks.push(this.createDefaultChunk(token.text));\n }\n break;\n }\n }\n renderInlineTokenWithStyle(token, chunks, styleGroup, link2) {\n switch (token.type) {\n case \"text\":\n chunks.push(this.createChunk(token.text, styleGroup, link2));\n break;\n case \"escape\":\n chunks.push(this.createChunk(token.text, styleGroup, link2));\n break;\n case \"codespan\":\n if (this._conceal) {\n chunks.push(this.createChunk(token.text, \"markup.raw\", link2));\n } else {\n chunks.push(this.createChunk(\"`\", \"markup.raw\", link2));\n chunks.push(this.createChunk(token.text, \"markup.raw\", link2));\n chunks.push(this.createChunk(\"`\", \"markup.raw\", link2));\n }\n break;\n default:\n this.renderInlineToken(token, chunks);\n break;\n }\n }\n renderHeadingChunks(token) {\n const chunks = [];\n const group = `markup.heading.${token.depth}`;\n const marker = \"#\".repeat(token.depth) + \" \";\n if (!this._conceal) {\n chunks.push(this.createChunk(marker, group));\n }\n for (const child of token.tokens) {\n this.renderInlineTokenWithStyle(child, chunks, group);\n }\n return chunks;\n }\n renderParagraphChunks(token) {\n const chunks = [];\n this.renderInlineContent(token.tokens, chunks);\n return chunks;\n }\n renderBlockquoteChunks(token) {\n const chunks = [];\n for (const child of token.tokens) {\n chunks.push(this.createChunk(\"> \", \"punctuation.special\"));\n const childChunks = this.renderTokenToChunks(child);\n chunks.push(...childChunks);\n chunks.push(this.createDefaultChunk(`\n`));\n }\n return chunks;\n }\n renderListChunks(token) {\n const chunks = [];\n let index = typeof token.start === \"number\" ? token.start : 1;\n for (const item of token.items) {\n if (token.ordered) {\n chunks.push(this.createChunk(`${index}. `, \"markup.list\"));\n index++;\n } else {\n chunks.push(this.createChunk(\"- \", \"markup.list\"));\n }\n for (let i = 0;i < item.tokens.length; i++) {\n const child = item.tokens[i];\n if (child.type === \"text\" && i === 0 && \"tokens\" in child && child.tokens) {\n this.renderInlineContent(child.tokens, chunks);\n chunks.push(this.createDefaultChunk(`\n`));\n } else if (child.type === \"paragraph\" && i === 0) {\n this.renderInlineContent(child.tokens, chunks);\n chunks.push(this.createDefaultChunk(`\n`));\n } else {\n const childChunks = this.renderTokenToChunks(child);\n chunks.push(...childChunks);\n chunks.push(this.createDefaultChunk(`\n`));\n }\n }\n }\n return chunks;\n }\n renderThematicBreakChunks() {\n return [this.createChunk(\"---\", \"punctuation.special\")];\n }\n renderTokenToChunks(token) {\n switch (token.type) {\n case \"heading\":\n return this.renderHeadingChunks(token);\n case \"paragraph\":\n return this.renderParagraphChunks(token);\n case \"blockquote\":\n return this.renderBlockquoteChunks(token);\n case \"list\":\n return this.renderListChunks(token);\n case \"hr\":\n return this.renderThematicBreakChunks();\n case \"space\":\n return [];\n default:\n if (\"raw\" in token && token.raw) {\n return [this.createDefaultChunk(token.raw)];\n }\n return [];\n }\n }\n createTextRenderable(chunks, id, marginBottom = 0) {\n return new TextRenderable(this.ctx, {\n id,\n content: new StyledText(chunks),\n width: \"100%\",\n marginBottom\n });\n }\n createCodeRenderable(token, id, marginBottom = 0) {\n return new CodeRenderable(this.ctx, {\n id,\n content: token.text,\n filetype: token.lang || undefined,\n syntaxStyle: this._syntaxStyle,\n conceal: this._conceal,\n treeSitterClient: this._treeSitterClient,\n width: \"100%\",\n marginBottom\n });\n }\n updateTableRenderable(tableBox, table, marginBottom) {\n tableBox.marginBottom = marginBottom;\n const borderColor = this.getStyle(\"conceal\")?.fg ?? \"#888888\";\n const headingStyle = this.getStyle(\"markup.heading\") || this.getStyle(\"default\");\n const rowsToRender = this._streaming && table.rows.length > 0 ? table.rows.slice(0, -1) : table.rows;\n const colCount = table.header.length;\n const columns = tableBox._childrenInLayoutOrder;\n for (let col = 0;col < colCount; col++) {\n const columnBox = columns[col];\n if (!columnBox)\n continue;\n if (columnBox instanceof BoxRenderable) {\n columnBox.borderColor = borderColor;\n }\n const columnChildren = columnBox._childrenInLayoutOrder;\n const headerBox = columnChildren[0];\n if (headerBox instanceof BoxRenderable) {\n headerBox.borderColor = borderColor;\n const headerChildren = headerBox._childrenInLayoutOrder;\n const headerText = headerChildren[0];\n if (headerText instanceof TextRenderable) {\n const headerCell = table.header[col];\n const headerChunks = [];\n this.renderInlineContent(headerCell.tokens, headerChunks);\n const styledHeaderChunks = headerChunks.map((chunk) => ({\n ...chunk,\n fg: headingStyle?.fg ?? chunk.fg,\n bg: headingStyle?.bg ?? chunk.bg,\n attributes: headingStyle ? createTextAttributes({\n bold: headingStyle.bold,\n italic: headingStyle.italic,\n underline: headingStyle.underline,\n dim: headingStyle.dim\n }) : chunk.attributes\n }));\n headerText.content = new StyledText(styledHeaderChunks);\n }\n }\n for (let row = 0;row < rowsToRender.length; row++) {\n const childIndex = row + 1;\n const cellContainer = columnChildren[childIndex];\n let cellText;\n if (cellContainer instanceof BoxRenderable) {\n cellContainer.borderColor = borderColor;\n const cellChildren = cellContainer._childrenInLayoutOrder;\n cellText = cellChildren[0];\n } else if (cellContainer instanceof TextRenderable) {\n cellText = cellContainer;\n }\n if (cellText) {\n const cell = rowsToRender[row][col];\n const cellChunks = [];\n if (cell) {\n this.renderInlineContent(cell.tokens, cellChunks);\n }\n cellText.content = new StyledText(cellChunks.length > 0 ? cellChunks : [this.createDefaultChunk(\" \")]);\n }\n }\n }\n }\n createTableRenderable(table, id, marginBottom = 0) {\n const colCount = table.header.length;\n const rowsToRender = this._streaming && table.rows.length > 0 ? table.rows.slice(0, -1) : table.rows;\n if (colCount === 0 || rowsToRender.length === 0) {\n return this.createTextRenderable([this.createDefaultChunk(table.raw)], id, marginBottom);\n }\n const tableBox = new BoxRenderable(this.ctx, {\n id,\n flexDirection: \"row\",\n marginBottom\n });\n const borderColor = this.getStyle(\"conceal\")?.fg ?? \"#888888\";\n for (let col = 0;col < colCount; col++) {\n const isFirstCol = col === 0;\n const isLastCol = col === colCount - 1;\n const columnBox = new BoxRenderable(this.ctx, {\n id: `${id}-col-${col}`,\n flexDirection: \"column\",\n border: isLastCol ? true : [\"top\", \"bottom\", \"left\"],\n borderColor,\n customBorderChars: isFirstCol ? undefined : {\n topLeft: \"\\u252C\",\n topRight: \"\\u2510\",\n bottomLeft: \"\\u2534\",\n bottomRight: \"\\u2518\",\n horizontal: \"\\u2500\",\n vertical: \"\\u2502\",\n topT: \"\\u252C\",\n bottomT: \"\\u2534\",\n leftT: \"\\u251C\",\n rightT: \"\\u2524\",\n cross: \"\\u253C\"\n }\n });\n const headerCell = table.header[col];\n const headerChunks = [];\n this.renderInlineContent(headerCell.tokens, headerChunks);\n const headingStyle = this.getStyle(\"markup.heading\") || this.getStyle(\"default\");\n const styledHeaderChunks = headerChunks.map((chunk) => ({\n ...chunk,\n fg: headingStyle?.fg ?? chunk.fg,\n bg: headingStyle?.bg ?? chunk.bg,\n attributes: headingStyle ? createTextAttributes({\n bold: headingStyle.bold,\n italic: headingStyle.italic,\n underline: headingStyle.underline,\n dim: headingStyle.dim\n }) : chunk.attributes\n }));\n const headerBox = new BoxRenderable(this.ctx, {\n id: `${id}-col-${col}-header-box`,\n border: [\"bottom\"],\n borderColor\n });\n headerBox.add(new TextRenderable(this.ctx, {\n id: `${id}-col-${col}-header`,\n content: new StyledText(styledHeaderChunks),\n height: 1,\n overflow: \"hidden\",\n paddingLeft: 1,\n paddingRight: 1\n }));\n columnBox.add(headerBox);\n for (let row = 0;row < rowsToRender.length; row++) {\n const cell = rowsToRender[row][col];\n const cellChunks = [];\n if (cell) {\n this.renderInlineContent(cell.tokens, cellChunks);\n }\n const isLastRow = row === rowsToRender.length - 1;\n const cellText = new TextRenderable(this.ctx, {\n id: `${id}-col-${col}-row-${row}`,\n content: new StyledText(cellChunks.length > 0 ? cellChunks : [this.createDefaultChunk(\" \")]),\n height: 1,\n overflow: \"hidden\",\n paddingLeft: 1,\n paddingRight: 1\n });\n if (isLastRow) {\n columnBox.add(cellText);\n } else {\n const cellBox = new BoxRenderable(this.ctx, {\n id: `${id}-col-${col}-row-${row}-box`,\n border: [\"bottom\"],\n borderColor\n });\n cellBox.add(cellText);\n columnBox.add(cellBox);\n }\n }\n tableBox.add(columnBox);\n }\n return tableBox;\n }\n createDefaultRenderable(token, index, hasNextToken = false) {\n const id = `${this.id}-block-${index}`;\n const marginBottom = hasNextToken ? 1 : 0;\n if (token.type === \"code\") {\n return this.createCodeRenderable(token, id, marginBottom);\n }\n if (token.type === \"table\") {\n return this.createTableRenderable(token, id, marginBottom);\n }\n if (token.type === \"space\") {\n return null;\n }\n const chunks = this.renderTokenToChunks(token);\n if (chunks.length === 0) {\n return null;\n }\n return this.createTextRenderable(chunks, id, marginBottom);\n }\n updateBlockRenderable(state, token, index, hasNextToken) {\n const marginBottom = hasNextToken ? 1 : 0;\n if (token.type === \"code\") {\n const codeRenderable = state.renderable;\n const codeToken = token;\n codeRenderable.content = codeToken.text;\n if (codeToken.lang) {\n codeRenderable.filetype = codeToken.lang;\n }\n codeRenderable.marginBottom = marginBottom;\n return;\n }\n if (token.type === \"table\") {\n const prevTable = state.token;\n const newTable = token;\n if (this._streaming) {\n const prevCompleteRows = Math.max(0, prevTable.rows.length - 1);\n const newCompleteRows = Math.max(0, newTable.rows.length - 1);\n const prevIsRawFallback = prevTable.header.length === 0 || prevCompleteRows === 0;\n const newIsRawFallback = newTable.header.length === 0 || newCompleteRows === 0;\n if (prevCompleteRows === newCompleteRows && prevTable.header.length === newTable.header.length) {\n if (prevIsRawFallback && newIsRawFallback && prevTable.raw !== newTable.raw) {\n const textRenderable2 = state.renderable;\n textRenderable2.content = new StyledText([this.createDefaultChunk(newTable.raw)]);\n textRenderable2.marginBottom = marginBottom;\n }\n return;\n }\n }\n this.remove(state.renderable.id);\n const newRenderable = this.createTableRenderable(newTable, `${this.id}-block-${index}`, marginBottom);\n this.add(newRenderable);\n state.renderable = newRenderable;\n return;\n }\n const textRenderable = state.renderable;\n const chunks = this.renderTokenToChunks(token);\n textRenderable.content = new StyledText(chunks);\n textRenderable.marginBottom = marginBottom;\n }\n updateBlocks() {\n if (!this._content) {\n for (const state of this._blockStates) {\n this.remove(state.renderable.id);\n }\n this._blockStates = [];\n this._parseState = null;\n return;\n }\n const trailingUnstable = this._streaming ? 2 : 0;\n this._parseState = parseMarkdownIncremental(this._content, this._parseState, trailingUnstable);\n const tokens = this._parseState.tokens;\n if (tokens.length === 0 && this._content.length > 0) {\n for (const state of this._blockStates) {\n this.remove(state.renderable.id);\n }\n const text = this.createTextRenderable([this.createDefaultChunk(this._content)], `${this.id}-fallback`);\n this.add(text);\n this._blockStates = [\n {\n token: { type: \"text\", raw: this._content, text: this._content },\n tokenRaw: this._content,\n renderable: text\n }\n ];\n return;\n }\n const blockTokens = [];\n for (let i = 0;i < tokens.length; i++) {\n if (tokens[i].type !== \"space\") {\n blockTokens.push({ token: tokens[i], originalIndex: i });\n }\n }\n const lastBlockIndex = blockTokens.length - 1;\n let blockIndex = 0;\n for (let i = 0;i < blockTokens.length; i++) {\n const { token } = blockTokens[i];\n const hasNextToken = i < lastBlockIndex;\n const existing = this._blockStates[blockIndex];\n if (existing && existing.token === token) {\n blockIndex++;\n continue;\n }\n if (existing && existing.tokenRaw === token.raw && existing.token.type === token.type) {\n existing.token = token;\n blockIndex++;\n continue;\n }\n if (existing && existing.token.type === token.type) {\n this.updateBlockRenderable(existing, token, blockIndex, hasNextToken);\n existing.token = token;\n existing.tokenRaw = token.raw;\n blockIndex++;\n continue;\n }\n if (existing) {\n this.remove(existing.renderable.id);\n }\n let renderable;\n if (this._renderNode) {\n const context = {\n syntaxStyle: this._syntaxStyle,\n conceal: this._conceal,\n treeSitterClient: this._treeSitterClient,\n defaultRender: () => this.createDefaultRenderable(token, blockIndex, hasNextToken)\n };\n const custom = this._renderNode(token, context);\n if (custom) {\n renderable = custom;\n }\n }\n if (!renderable) {\n renderable = this.createDefaultRenderable(token, blockIndex, hasNextToken) ?? undefined;\n }\n if (renderable) {\n this.add(renderable);\n this._blockStates[blockIndex] = {\n token,\n tokenRaw: token.raw,\n renderable\n };\n }\n blockIndex++;\n }\n while (this._blockStates.length > blockIndex) {\n const removed = this._blockStates.pop();\n this.remove(removed.renderable.id);\n }\n }\n clearBlockStates() {\n for (const state of this._blockStates) {\n this.remove(state.renderable.id);\n }\n this._blockStates = [];\n }\n rerenderBlocks() {\n for (let i = 0;i < this._blockStates.length; i++) {\n const state = this._blockStates[i];\n const hasNextToken = i < this._blockStates.length - 1;\n if (state.token.type === \"code\") {\n const codeRenderable = state.renderable;\n codeRenderable.syntaxStyle = this._syntaxStyle;\n codeRenderable.conceal = this._conceal;\n } else if (state.token.type === \"table\") {\n const marginBottom = hasNextToken ? 1 : 0;\n this.updateTableRenderable(state.renderable, state.token, marginBottom);\n } else {\n const textRenderable = state.renderable;\n const chunks = this.renderTokenToChunks(state.token);\n if (chunks.length > 0) {\n textRenderable.content = new StyledText(chunks);\n }\n }\n }\n }\n clearCache() {\n this._parseState = null;\n this.clearBlockStates();\n this.updateBlocks();\n this.requestRender();\n }\n renderSelf(buffer, deltaTime) {\n if (this._styleDirty) {\n this._styleDirty = false;\n this.rerenderBlocks();\n }\n super.renderSelf(buffer, deltaTime);\n }\n}\n// src/renderables/Slider.ts\nvar defaultThumbBackgroundColor = RGBA.fromHex(\"#9a9ea3\");\nvar defaultTrackBackgroundColor = RGBA.fromHex(\"#252527\");\n\nclass SliderRenderable extends Renderable {\n orientation;\n _value;\n _min;\n _max;\n _viewPortSize;\n _backgroundColor;\n _foregroundColor;\n _onChange;\n constructor(ctx, options) {\n super(ctx, { flexShrink: 0, ...options });\n this.orientation = options.orientation;\n this._min = options.min ?? 0;\n this._max = options.max ?? 100;\n this._value = options.value ?? this._min;\n this._viewPortSize = options.viewPortSize ?? Math.max(1, (this._max - this._min) * 0.1);\n this._onChange = options.onChange;\n this._backgroundColor = options.backgroundColor ? parseColor(options.backgroundColor) : defaultTrackBackgroundColor;\n this._foregroundColor = options.foregroundColor ? parseColor(options.foregroundColor) : defaultThumbBackgroundColor;\n this.setupMouseHandling();\n }\n get value() {\n return this._value;\n }\n set value(newValue) {\n const clamped = Math.max(this._min, Math.min(this._max, newValue));\n if (clamped !== this._value) {\n this._value = clamped;\n this._onChange?.(clamped);\n this.emit(\"change\", { value: clamped });\n this.requestRender();\n }\n }\n get min() {\n return this._min;\n }\n set min(newMin) {\n if (newMin !== this._min) {\n this._min = newMin;\n if (this._value < newMin) {\n this.value = newMin;\n }\n this.requestRender();\n }\n }\n get max() {\n return this._max;\n }\n set max(newMax) {\n if (newMax !== this._max) {\n this._max = newMax;\n if (this._value > newMax) {\n this.value = newMax;\n }\n this.requestRender();\n }\n }\n set viewPortSize(size) {\n const clampedSize = Math.max(0.01, Math.min(size, this._max - this._min));\n if (clampedSize !== this._viewPortSize) {\n this._viewPortSize = clampedSize;\n this.requestRender();\n }\n }\n get viewPortSize() {\n return this._viewPortSize;\n }\n get backgroundColor() {\n return this._backgroundColor;\n }\n set backgroundColor(value) {\n this._backgroundColor = parseColor(value);\n this.requestRender();\n }\n get foregroundColor() {\n return this._foregroundColor;\n }\n set foregroundColor(value) {\n this._foregroundColor = parseColor(value);\n this.requestRender();\n }\n calculateDragOffsetVirtual(event) {\n const trackStart = this.orientation === \"vertical\" ? this.y : this.x;\n const mousePos = (this.orientation === \"vertical\" ? event.y : event.x) - trackStart;\n const virtualMousePos = Math.max(0, Math.min((this.orientation === \"vertical\" ? this.height : this.width) * 2, mousePos * 2));\n const virtualThumbStart = this.getVirtualThumbStart();\n const virtualThumbSize = this.getVirtualThumbSize();\n return Math.max(0, Math.min(virtualThumbSize, virtualMousePos - virtualThumbStart));\n }\n setupMouseHandling() {\n let isDragging = false;\n let dragOffsetVirtual = 0;\n this.onMouseDown = (event) => {\n event.stopPropagation();\n event.preventDefault();\n const thumb = this.getThumbRect();\n const inThumb = event.x >= thumb.x && event.x < thumb.x + thumb.width && event.y >= thumb.y && event.y < thumb.y + thumb.height;\n if (inThumb) {\n isDragging = true;\n dragOffsetVirtual = this.calculateDragOffsetVirtual(event);\n } else {\n this.updateValueFromMouseDirect(event);\n isDragging = true;\n dragOffsetVirtual = this.calculateDragOffsetVirtual(event);\n }\n };\n this.onMouseDrag = (event) => {\n if (!isDragging)\n return;\n event.stopPropagation();\n this.updateValueFromMouseWithOffset(event, dragOffsetVirtual);\n };\n this.onMouseUp = (event) => {\n if (isDragging) {\n this.updateValueFromMouseWithOffset(event, dragOffsetVirtual);\n }\n isDragging = false;\n };\n }\n updateValueFromMouseDirect(event) {\n const trackStart = this.orientation === \"vertical\" ? this.y : this.x;\n const trackSize = this.orientation === \"vertical\" ? this.height : this.width;\n const mousePos = this.orientation === \"vertical\" ? event.y : event.x;\n const relativeMousePos = mousePos - trackStart;\n const clampedMousePos = Math.max(0, Math.min(trackSize, relativeMousePos));\n const ratio = trackSize === 0 ? 0 : clampedMousePos / trackSize;\n const range = this._max - this._min;\n const newValue = this._min + ratio * range;\n this.value = newValue;\n }\n updateValueFromMouseWithOffset(event, offsetVirtual) {\n const trackStart = this.orientation === \"vertical\" ? this.y : this.x;\n const trackSize = this.orientation === \"vertical\" ? this.height : this.width;\n const mousePos = this.orientation === \"vertical\" ? event.y : event.x;\n const virtualTrackSize = trackSize * 2;\n const relativeMousePos = mousePos - trackStart;\n const clampedMousePos = Math.max(0, Math.min(trackSize, relativeMousePos));\n const virtualMousePos = clampedMousePos * 2;\n const virtualThumbSize = this.getVirtualThumbSize();\n const maxThumbStart = Math.max(0, virtualTrackSize - virtualThumbSize);\n let desiredThumbStart = virtualMousePos - offsetVirtual;\n desiredThumbStart = Math.max(0, Math.min(maxThumbStart, desiredThumbStart));\n const ratio = maxThumbStart === 0 ? 0 : desiredThumbStart / maxThumbStart;\n const range = this._max - this._min;\n const newValue = this._min + ratio * range;\n this.value = newValue;\n }\n getThumbRect() {\n const virtualThumbSize = this.getVirtualThumbSize();\n const virtualThumbStart = this.getVirtualThumbStart();\n const realThumbStart = Math.floor(virtualThumbStart / 2);\n const realThumbSize = Math.ceil((virtualThumbStart + virtualThumbSize) / 2) - realThumbStart;\n if (this.orientation === \"vertical\") {\n return {\n x: this.x,\n y: this.y + realThumbStart,\n width: this.width,\n height: Math.max(1, realThumbSize)\n };\n } else {\n return {\n x: this.x + realThumbStart,\n y: this.y,\n width: Math.max(1, realThumbSize),\n height: this.height\n };\n }\n }\n renderSelf(buffer) {\n if (this.orientation === \"horizontal\") {\n this.renderHorizontal(buffer);\n } else {\n this.renderVertical(buffer);\n }\n }\n renderHorizontal(buffer) {\n const virtualThumbSize = this.getVirtualThumbSize();\n const virtualThumbStart = this.getVirtualThumbStart();\n const virtualThumbEnd = virtualThumbStart + virtualThumbSize;\n buffer.fillRect(this.x, this.y, this.width, this.height, this._backgroundColor);\n const realStartCell = Math.floor(virtualThumbStart / 2);\n const realEndCell = Math.ceil(virtualThumbEnd / 2) - 1;\n const startX = Math.max(0, realStartCell);\n const endX = Math.min(this.width - 1, realEndCell);\n for (let realX = startX;realX <= endX; realX++) {\n const virtualCellStart = realX * 2;\n const virtualCellEnd = virtualCellStart + 2;\n const thumbStartInCell = Math.max(virtualThumbStart, virtualCellStart);\n const thumbEndInCell = Math.min(virtualThumbEnd, virtualCellEnd);\n const coverage = thumbEndInCell - thumbStartInCell;\n let char = \" \";\n if (coverage >= 2) {\n char = \"\\u2588\";\n } else {\n const isLeftHalf = thumbStartInCell === virtualCellStart;\n if (isLeftHalf) {\n char = \"\\u258C\";\n } else {\n char = \"\\u2590\";\n }\n }\n for (let y2 = 0;y2 < this.height; y2++) {\n buffer.setCellWithAlphaBlending(this.x + realX, this.y + y2, char, this._foregroundColor, this._backgroundColor);\n }\n }\n }\n renderVertical(buffer) {\n const virtualThumbSize = this.getVirtualThumbSize();\n const virtualThumbStart = this.getVirtualThumbStart();\n const virtualThumbEnd = virtualThumbStart + virtualThumbSize;\n buffer.fillRect(this.x, this.y, this.width, this.height, this._backgroundColor);\n const realStartCell = Math.floor(virtualThumbStart / 2);\n const realEndCell = Math.ceil(virtualThumbEnd / 2) - 1;\n const startY = Math.max(0, realStartCell);\n const endY = Math.min(this.height - 1, realEndCell);\n for (let realY = startY;realY <= endY; realY++) {\n const virtualCellStart = realY * 2;\n const virtualCellEnd = virtualCellStart + 2;\n const thumbStartInCell = Math.max(virtualThumbStart, virtualCellStart);\n const thumbEndInCell = Math.min(virtualThumbEnd, virtualCellEnd);\n const coverage = thumbEndInCell - thumbStartInCell;\n let char = \" \";\n if (coverage >= 2) {\n char = \"\\u2588\";\n } else if (coverage > 0) {\n const virtualPositionInCell = thumbStartInCell - virtualCellStart;\n if (virtualPositionInCell === 0) {\n char = \"\\u2580\";\n } else {\n char = \"\\u2584\";\n }\n }\n for (let x2 = 0;x2 < this.width; x2++) {\n buffer.setCellWithAlphaBlending(this.x + x2, this.y + realY, char, this._foregroundColor, this._backgroundColor);\n }\n }\n }\n getVirtualThumbSize() {\n const virtualTrackSize = this.orientation === \"vertical\" ? this.height * 2 : this.width * 2;\n const range = this._max - this._min;\n if (range === 0)\n return virtualTrackSize;\n const viewportSize = Math.max(1, this._viewPortSize);\n const contentSize = range + viewportSize;\n if (contentSize <= viewportSize)\n return virtualTrackSize;\n const thumbRatio = viewportSize / contentSize;\n const calculatedSize = Math.floor(virtualTrackSize * thumbRatio);\n return Math.max(1, Math.min(calculatedSize, virtualTrackSize));\n }\n getVirtualThumbStart() {\n const virtualTrackSize = this.orientation === \"vertical\" ? this.height * 2 : this.width * 2;\n const range = this._max - this._min;\n if (range === 0)\n return 0;\n const valueRatio = (this._value - this._min) / range;\n const virtualThumbSize = this.getVirtualThumbSize();\n return Math.round(valueRatio * (virtualTrackSize - virtualThumbSize));\n }\n}\n\n// src/renderables/ScrollBar.ts\nclass ScrollBarRenderable extends Renderable {\n slider;\n startArrow;\n endArrow;\n orientation;\n _focusable = true;\n _scrollSize = 0;\n _scrollPosition = 0;\n _viewportSize = 0;\n _showArrows = false;\n _manualVisibility = false;\n _onChange;\n scrollStep = null;\n get visible() {\n return super.visible;\n }\n set visible(value) {\n this._manualVisibility = true;\n super.visible = value;\n }\n resetVisibilityControl() {\n this._manualVisibility = false;\n this.recalculateVisibility();\n }\n get scrollSize() {\n return this._scrollSize;\n }\n get scrollPosition() {\n return this._scrollPosition;\n }\n get viewportSize() {\n return this._viewportSize;\n }\n set scrollSize(value) {\n if (value === this.scrollSize)\n return;\n this._scrollSize = value;\n this.recalculateVisibility();\n this.updateSliderFromScrollState();\n this.scrollPosition = this.scrollPosition;\n }\n set scrollPosition(value) {\n const newPosition = Math.round(Math.min(Math.max(0, value), this.scrollSize - this.viewportSize));\n if (newPosition !== this._scrollPosition) {\n this._scrollPosition = newPosition;\n this.updateSliderFromScrollState();\n }\n }\n set viewportSize(value) {\n if (value === this.viewportSize)\n return;\n this._viewportSize = value;\n this.slider.viewPortSize = Math.max(1, this._viewportSize);\n this.recalculateVisibility();\n this.updateSliderFromScrollState();\n this.scrollPosition = this.scrollPosition;\n }\n get showArrows() {\n return this._showArrows;\n }\n set showArrows(value) {\n if (value === this._showArrows)\n return;\n this._showArrows = value;\n this.startArrow.visible = value;\n this.endArrow.visible = value;\n }\n constructor(ctx, { trackOptions, arrowOptions, orientation, showArrows = false, ...options }) {\n super(ctx, {\n flexDirection: orientation === \"vertical\" ? \"column\" : \"row\",\n alignSelf: \"stretch\",\n alignItems: \"stretch\",\n ...options\n });\n this._onChange = options.onChange;\n this.orientation = orientation;\n this._showArrows = showArrows;\n const scrollRange = Math.max(0, this._scrollSize - this._viewportSize);\n const defaultStepSize = Math.max(1, this._viewportSize);\n const stepSize = trackOptions?.viewPortSize ?? defaultStepSize;\n this.slider = new SliderRenderable(ctx, {\n orientation,\n min: 0,\n max: scrollRange,\n value: this._scrollPosition,\n viewPortSize: stepSize,\n onChange: (value) => {\n this._scrollPosition = Math.round(value);\n this._onChange?.(this._scrollPosition);\n this.emit(\"change\", { position: this._scrollPosition });\n },\n ...orientation === \"vertical\" ? {\n width: Math.max(1, Math.min(2, this.width)),\n height: \"100%\",\n marginLeft: \"auto\"\n } : {\n width: \"100%\",\n height: 1,\n marginTop: \"auto\"\n },\n flexGrow: 1,\n flexShrink: 1,\n ...trackOptions\n });\n this.updateSliderFromScrollState();\n const arrowOpts = arrowOptions ? {\n foregroundColor: arrowOptions.backgroundColor,\n backgroundColor: arrowOptions.backgroundColor,\n attributes: arrowOptions.attributes,\n ...arrowOptions\n } : {};\n this.startArrow = new ArrowRenderable(ctx, {\n alignSelf: \"center\",\n visible: this.showArrows,\n direction: this.orientation === \"vertical\" ? \"up\" : \"left\",\n height: this.orientation === \"vertical\" ? 1 : 1,\n ...arrowOpts\n });\n this.endArrow = new ArrowRenderable(ctx, {\n alignSelf: \"center\",\n visible: this.showArrows,\n direction: this.orientation === \"vertical\" ? \"down\" : \"right\",\n height: this.orientation === \"vertical\" ? 1 : 1,\n ...arrowOpts\n });\n this.add(this.startArrow);\n this.add(this.slider);\n this.add(this.endArrow);\n let startArrowMouseTimeout = undefined;\n let endArrowMouseTimeout = undefined;\n this.startArrow.onMouseDown = (event) => {\n event.stopPropagation();\n event.preventDefault();\n this.scrollBy(-0.5, \"viewport\");\n startArrowMouseTimeout = setTimeout(() => {\n this.scrollBy(-0.5, \"viewport\");\n startArrowMouseTimeout = setInterval(() => {\n this.scrollBy(-0.2, \"viewport\");\n }, 200);\n }, 500);\n };\n this.startArrow.onMouseUp = (event) => {\n event.stopPropagation();\n clearInterval(startArrowMouseTimeout);\n };\n this.endArrow.onMouseDown = (event) => {\n event.stopPropagation();\n event.preventDefault();\n this.scrollBy(0.5, \"viewport\");\n endArrowMouseTimeout = setTimeout(() => {\n this.scrollBy(0.5, \"viewport\");\n endArrowMouseTimeout = setInterval(() => {\n this.scrollBy(0.2, \"viewport\");\n }, 200);\n }, 500);\n };\n this.endArrow.onMouseUp = (event) => {\n event.stopPropagation();\n clearInterval(endArrowMouseTimeout);\n };\n }\n set arrowOptions(options) {\n Object.assign(this.startArrow, options);\n Object.assign(this.endArrow, options);\n this.requestRender();\n }\n set trackOptions(options) {\n Object.assign(this.slider, options);\n this.requestRender();\n }\n updateSliderFromScrollState() {\n const scrollRange = Math.max(0, this._scrollSize - this._viewportSize);\n this.slider.min = 0;\n this.slider.max = scrollRange;\n this.slider.value = Math.min(this._scrollPosition, scrollRange);\n }\n scrollBy(delta, unit = \"absolute\") {\n const multiplier = unit === \"viewport\" ? this.viewportSize : unit === \"content\" ? this.scrollSize : unit === \"step\" ? this.scrollStep ?? 1 : 1;\n const resolvedDelta = multiplier * delta;\n this.scrollPosition += resolvedDelta;\n }\n recalculateVisibility() {\n if (!this._manualVisibility) {\n const sizeRatio = this.scrollSize <= this.viewportSize ? 1 : this.viewportSize / this.scrollSize;\n super.visible = sizeRatio < 1;\n }\n }\n handleKeyPress(key) {\n switch (key.name) {\n case \"left\":\n case \"h\":\n if (this.orientation !== \"horizontal\")\n return false;\n this.scrollBy(-1 / 5, \"viewport\");\n return true;\n case \"right\":\n case \"l\":\n if (this.orientation !== \"horizontal\")\n return false;\n this.scrollBy(1 / 5, \"viewport\");\n return true;\n case \"up\":\n case \"k\":\n if (this.orientation !== \"vertical\")\n return false;\n this.scrollBy(-1 / 5, \"viewport\");\n return true;\n case \"down\":\n case \"j\":\n if (this.orientation !== \"vertical\")\n return false;\n this.scrollBy(1 / 5, \"viewport\");\n return true;\n case \"pageup\":\n this.scrollBy(-1 / 2, \"viewport\");\n return true;\n case \"pagedown\":\n this.scrollBy(1 / 2, \"viewport\");\n return true;\n case \"home\":\n this.scrollBy(-1, \"content\");\n return true;\n case \"end\":\n this.scrollBy(1, \"content\");\n return true;\n }\n return false;\n }\n}\n\nclass ArrowRenderable extends Renderable {\n _direction;\n _foregroundColor;\n _backgroundColor;\n _attributes;\n _arrowChars;\n constructor(ctx, options) {\n super(ctx, options);\n this._direction = options.direction;\n this._foregroundColor = options.foregroundColor ? parseColor(options.foregroundColor) : RGBA.fromValues(1, 1, 1, 1);\n this._backgroundColor = options.backgroundColor ? parseColor(options.backgroundColor) : RGBA.fromValues(0, 0, 0, 0);\n this._attributes = options.attributes ?? 0;\n this._arrowChars = {\n up: \"\\u25B2\",\n down: \"\\u25BC\",\n left: \"\\u25C0\",\n right: \"\\u25B6\",\n ...options.arrowChars\n };\n if (!options.width) {\n this.width = Bun.stringWidth(this.getArrowChar());\n }\n }\n get direction() {\n return this._direction;\n }\n set direction(value) {\n if (this._direction !== value) {\n this._direction = value;\n this.requestRender();\n }\n }\n get foregroundColor() {\n return this._foregroundColor;\n }\n set foregroundColor(value) {\n if (this._foregroundColor !== value) {\n this._foregroundColor = parseColor(value);\n this.requestRender();\n }\n }\n get backgroundColor() {\n return this._backgroundColor;\n }\n set backgroundColor(value) {\n if (this._backgroundColor !== value) {\n this._backgroundColor = parseColor(value);\n this.requestRender();\n }\n }\n get attributes() {\n return this._attributes;\n }\n set attributes(value) {\n if (this._attributes !== value) {\n this._attributes = value;\n this.requestRender();\n }\n }\n set arrowChars(value) {\n this._arrowChars = {\n ...this._arrowChars,\n ...value\n };\n this.requestRender();\n }\n renderSelf(buffer) {\n const char = this.getArrowChar();\n buffer.drawText(char, this.x, this.y, this._foregroundColor, this._backgroundColor, this._attributes);\n }\n getArrowChar() {\n switch (this._direction) {\n case \"up\":\n return this._arrowChars.up;\n case \"down\":\n return this._arrowChars.down;\n case \"left\":\n return this._arrowChars.left;\n case \"right\":\n return this._arrowChars.right;\n default:\n return \"?\";\n }\n }\n}\n// src/renderables/ScrollBox.ts\nclass ContentRenderable extends BoxRenderable {\n viewport;\n _viewportCulling;\n constructor(ctx, viewport, viewportCulling, options) {\n super(ctx, options);\n this.viewport = viewport;\n this._viewportCulling = viewportCulling;\n }\n get viewportCulling() {\n return this._viewportCulling;\n }\n set viewportCulling(value) {\n this._viewportCulling = value;\n }\n _getVisibleChildren() {\n if (this._viewportCulling) {\n return getObjectsInViewport(this.viewport, this.getChildrenSortedByPrimaryAxis(), this.primaryAxis, 0).map((child) => child.num);\n }\n return this.getChildrenSortedByPrimaryAxis().map((child) => child.num);\n }\n}\n\nclass ScrollBoxRenderable extends BoxRenderable {\n static idCounter = 0;\n internalId = 0;\n wrapper;\n viewport;\n content;\n horizontalScrollBar;\n verticalScrollBar;\n _focusable = true;\n selectionListener;\n autoScrollMouseX = 0;\n autoScrollMouseY = 0;\n autoScrollThresholdVertical = 3;\n autoScrollThresholdHorizontal = 3;\n autoScrollSpeedSlow = 6;\n autoScrollSpeedMedium = 36;\n autoScrollSpeedFast = 72;\n isAutoScrolling = false;\n cachedAutoScrollSpeed = 3;\n autoScrollAccumulatorX = 0;\n autoScrollAccumulatorY = 0;\n scrollAccumulatorX = 0;\n scrollAccumulatorY = 0;\n _stickyScroll;\n _stickyScrollTop = false;\n _stickyScrollBottom = false;\n _stickyScrollLeft = false;\n _stickyScrollRight = false;\n _stickyStart;\n _hasManualScroll = false;\n _isApplyingStickyScroll = false;\n scrollAccel;\n get stickyScroll() {\n return this._stickyScroll;\n }\n set stickyScroll(value) {\n this._stickyScroll = value;\n this.updateStickyState();\n }\n get stickyStart() {\n return this._stickyStart;\n }\n set stickyStart(value) {\n this._stickyStart = value;\n this.updateStickyState();\n }\n get scrollTop() {\n return this.verticalScrollBar.scrollPosition;\n }\n set scrollTop(value) {\n this.verticalScrollBar.scrollPosition = value;\n if (!this._isApplyingStickyScroll) {\n const maxScrollTop = Math.max(0, this.scrollHeight - this.viewport.height);\n if (!this.isAtStickyPosition() && maxScrollTop > 1) {\n this._hasManualScroll = true;\n }\n }\n this.updateStickyState();\n }\n get scrollLeft() {\n return this.horizontalScrollBar.scrollPosition;\n }\n set scrollLeft(value) {\n this.horizontalScrollBar.scrollPosition = value;\n if (!this._isApplyingStickyScroll) {\n const maxScrollLeft = Math.max(0, this.scrollWidth - this.viewport.width);\n if (!this.isAtStickyPosition() && maxScrollLeft > 1) {\n this._hasManualScroll = true;\n }\n }\n this.updateStickyState();\n }\n get scrollWidth() {\n return this.horizontalScrollBar.scrollSize;\n }\n get scrollHeight() {\n return this.verticalScrollBar.scrollSize;\n }\n updateStickyState() {\n if (!this._stickyScroll)\n return;\n const maxScrollTop = Math.max(0, this.scrollHeight - this.viewport.height);\n const maxScrollLeft = Math.max(0, this.scrollWidth - this.viewport.width);\n if (this.scrollTop <= 0) {\n this._stickyScrollTop = true;\n this._stickyScrollBottom = false;\n if (this._stickyStart === \"top\" || this._stickyStart === \"bottom\" && maxScrollTop === 0) {\n this._hasManualScroll = false;\n }\n } else if (this.scrollTop >= maxScrollTop) {\n this._stickyScrollTop = false;\n this._stickyScrollBottom = true;\n if (this._stickyStart === \"bottom\") {\n this._hasManualScroll = false;\n }\n } else {\n this._stickyScrollTop = false;\n this._stickyScrollBottom = false;\n }\n if (this.scrollLeft <= 0) {\n this._stickyScrollLeft = true;\n this._stickyScrollRight = false;\n if (this._stickyStart === \"left\" || this._stickyStart === \"right\" && maxScrollLeft === 0) {\n this._hasManualScroll = false;\n }\n } else if (this.scrollLeft >= maxScrollLeft) {\n this._stickyScrollLeft = false;\n this._stickyScrollRight = true;\n if (this._stickyStart === \"right\") {\n this._hasManualScroll = false;\n }\n } else {\n this._stickyScrollLeft = false;\n this._stickyScrollRight = false;\n }\n }\n applyStickyStart(stickyStart) {\n this._isApplyingStickyScroll = true;\n switch (stickyStart) {\n case \"top\":\n this._stickyScrollTop = true;\n this._stickyScrollBottom = false;\n this.verticalScrollBar.scrollPosition = 0;\n break;\n case \"bottom\":\n this._stickyScrollTop = false;\n this._stickyScrollBottom = true;\n this.verticalScrollBar.scrollPosition = Math.max(0, this.scrollHeight - this.viewport.height);\n break;\n case \"left\":\n this._stickyScrollLeft = true;\n this._stickyScrollRight = false;\n this.horizontalScrollBar.scrollPosition = 0;\n break;\n case \"right\":\n this._stickyScrollLeft = false;\n this._stickyScrollRight = true;\n this.horizontalScrollBar.scrollPosition = Math.max(0, this.scrollWidth - this.viewport.width);\n break;\n }\n this._isApplyingStickyScroll = false;\n }\n constructor(ctx, {\n wrapperOptions,\n viewportOptions,\n contentOptions,\n rootOptions,\n scrollbarOptions,\n verticalScrollbarOptions,\n horizontalScrollbarOptions,\n stickyScroll = false,\n stickyStart,\n scrollX = false,\n scrollY = true,\n scrollAcceleration,\n viewportCulling = true,\n ...options\n }) {\n super(ctx, {\n flexDirection: \"row\",\n alignItems: \"stretch\",\n ...options,\n ...rootOptions\n });\n this.internalId = ScrollBoxRenderable.idCounter++;\n this._stickyScroll = stickyScroll;\n this._stickyStart = stickyStart;\n this.scrollAccel = scrollAcceleration ?? new LinearScrollAccel;\n this.wrapper = new BoxRenderable(ctx, {\n flexDirection: \"column\",\n flexGrow: 1,\n ...wrapperOptions,\n id: `scroll-box-wrapper-${this.internalId}`\n });\n super.add(this.wrapper);\n this.viewport = new BoxRenderable(ctx, {\n flexDirection: \"column\",\n flexGrow: 1,\n overflow: \"hidden\",\n onSizeChange: () => {\n this.recalculateBarProps();\n },\n ...viewportOptions,\n id: `scroll-box-viewport-${this.internalId}`\n });\n this.wrapper.add(this.viewport);\n this.content = new ContentRenderable(ctx, this.viewport, viewportCulling, {\n alignSelf: \"flex-start\",\n flexShrink: 0,\n ...scrollX ? { minWidth: \"100%\" } : { minWidth: \"100%\", maxWidth: \"100%\" },\n ...scrollY ? { minHeight: \"100%\" } : { minHeight: \"100%\", maxHeight: \"100%\" },\n onSizeChange: () => {\n this.recalculateBarProps();\n },\n ...contentOptions,\n id: `scroll-box-content-${this.internalId}`\n });\n this.viewport.add(this.content);\n this.verticalScrollBar = new ScrollBarRenderable(ctx, {\n ...scrollbarOptions,\n ...verticalScrollbarOptions,\n arrowOptions: {\n ...scrollbarOptions?.arrowOptions,\n ...verticalScrollbarOptions?.arrowOptions\n },\n id: `scroll-box-vertical-scrollbar-${this.internalId}`,\n orientation: \"vertical\",\n onChange: (position) => {\n this.content.translateY = -position;\n if (!this._isApplyingStickyScroll) {\n const maxScrollTop = Math.max(0, this.scrollHeight - this.viewport.height);\n if (!this.isAtStickyPosition() && maxScrollTop > 1) {\n this._hasManualScroll = true;\n }\n }\n this.updateStickyState();\n }\n });\n super.add(this.verticalScrollBar);\n this.horizontalScrollBar = new ScrollBarRenderable(ctx, {\n ...scrollbarOptions,\n ...horizontalScrollbarOptions,\n arrowOptions: {\n ...scrollbarOptions?.arrowOptions,\n ...horizontalScrollbarOptions?.arrowOptions\n },\n id: `scroll-box-horizontal-scrollbar-${this.internalId}`,\n orientation: \"horizontal\",\n onChange: (position) => {\n this.content.translateX = -position;\n if (!this._isApplyingStickyScroll) {\n const maxScrollLeft = Math.max(0, this.scrollWidth - this.viewport.width);\n if (!this.isAtStickyPosition() && maxScrollLeft > 1) {\n this._hasManualScroll = true;\n }\n }\n this.updateStickyState();\n }\n });\n this.wrapper.add(this.horizontalScrollBar);\n this.recalculateBarProps();\n if (stickyStart && stickyScroll) {\n this.applyStickyStart(stickyStart);\n }\n this.selectionListener = () => {\n const selection = this._ctx.getSelection();\n if (!selection || !selection.isDragging) {\n this.stopAutoScroll();\n }\n };\n this._ctx.on(\"selection\", this.selectionListener);\n }\n onUpdate(deltaTime) {\n this.handleAutoScroll(deltaTime);\n }\n scrollBy(delta, unit = \"absolute\") {\n if (typeof delta === \"number\") {\n this.verticalScrollBar.scrollBy(delta, unit);\n } else {\n this.verticalScrollBar.scrollBy(delta.y, unit);\n this.horizontalScrollBar.scrollBy(delta.x, unit);\n }\n }\n scrollTo(position) {\n if (typeof position === \"number\") {\n this.scrollTop = position;\n } else {\n this.scrollTop = position.y;\n this.scrollLeft = position.x;\n }\n }\n isAtStickyPosition() {\n if (!this._stickyScroll || !this._stickyStart) {\n return false;\n }\n const maxScrollTop = Math.max(0, this.scrollHeight - this.viewport.height);\n const maxScrollLeft = Math.max(0, this.scrollWidth - this.viewport.width);\n switch (this._stickyStart) {\n case \"top\":\n return this.scrollTop === 0;\n case \"bottom\":\n return this.scrollTop >= maxScrollTop;\n case \"left\":\n return this.scrollLeft === 0;\n case \"right\":\n return this.scrollLeft >= maxScrollLeft;\n default:\n return false;\n }\n }\n add(obj, index) {\n return this.content.add(obj, index);\n }\n insertBefore(obj, anchor) {\n return this.content.insertBefore(obj, anchor);\n }\n remove(id) {\n this.content.remove(id);\n }\n getChildren() {\n return this.content.getChildren();\n }\n onMouseEvent(event) {\n if (event.type === \"scroll\") {\n let dir = event.scroll?.direction;\n if (event.modifiers.shift)\n dir = dir === \"up\" ? \"left\" : dir === \"down\" ? \"right\" : dir === \"right\" ? \"down\" : \"up\";\n const baseDelta = event.scroll?.delta ?? 0;\n const now = Date.now();\n const multiplier = this.scrollAccel.tick(now);\n const scrollAmount = baseDelta * multiplier;\n if (dir === \"up\") {\n this.scrollAccumulatorY -= scrollAmount;\n const integerScroll = Math.trunc(this.scrollAccumulatorY);\n if (integerScroll !== 0) {\n this.scrollTop += integerScroll;\n this.scrollAccumulatorY -= integerScroll;\n }\n } else if (dir === \"down\") {\n this.scrollAccumulatorY += scrollAmount;\n const integerScroll = Math.trunc(this.scrollAccumulatorY);\n if (integerScroll !== 0) {\n this.scrollTop += integerScroll;\n this.scrollAccumulatorY -= integerScroll;\n }\n } else if (dir === \"left\") {\n this.scrollAccumulatorX -= scrollAmount;\n const integerScroll = Math.trunc(this.scrollAccumulatorX);\n if (integerScroll !== 0) {\n this.scrollLeft += integerScroll;\n this.scrollAccumulatorX -= integerScroll;\n }\n } else if (dir === \"right\") {\n this.scrollAccumulatorX += scrollAmount;\n const integerScroll = Math.trunc(this.scrollAccumulatorX);\n if (integerScroll !== 0) {\n this.scrollLeft += integerScroll;\n this.scrollAccumulatorX -= integerScroll;\n }\n }\n const maxScrollTop = Math.max(0, this.scrollHeight - this.viewport.height);\n const maxScrollLeft = Math.max(0, this.scrollWidth - this.viewport.width);\n if (maxScrollTop > 1 || maxScrollLeft > 1) {\n this._hasManualScroll = true;\n }\n }\n if (event.type === \"drag\" && event.isDragging) {\n this.updateAutoScroll(event.x, event.y);\n } else if (event.type === \"up\") {\n this.stopAutoScroll();\n }\n }\n handleKeyPress(key) {\n if (this.verticalScrollBar.handleKeyPress(key)) {\n this._hasManualScroll = true;\n this.scrollAccel.reset();\n this.resetScrollAccumulators();\n return true;\n }\n if (this.horizontalScrollBar.handleKeyPress(key)) {\n this._hasManualScroll = true;\n this.scrollAccel.reset();\n this.resetScrollAccumulators();\n return true;\n }\n return false;\n }\n resetScrollAccumulators() {\n this.scrollAccumulatorX = 0;\n this.scrollAccumulatorY = 0;\n }\n startAutoScroll(mouseX, mouseY) {\n this.stopAutoScroll();\n this.autoScrollMouseX = mouseX;\n this.autoScrollMouseY = mouseY;\n this.cachedAutoScrollSpeed = this.getAutoScrollSpeed(mouseX, mouseY);\n this.isAutoScrolling = true;\n if (!this.live) {\n this.live = true;\n }\n }\n updateAutoScroll(mouseX, mouseY) {\n this.autoScrollMouseX = mouseX;\n this.autoScrollMouseY = mouseY;\n this.cachedAutoScrollSpeed = this.getAutoScrollSpeed(mouseX, mouseY);\n const scrollX = this.getAutoScrollDirectionX(mouseX);\n const scrollY = this.getAutoScrollDirectionY(mouseY);\n if (scrollX === 0 && scrollY === 0) {\n this.stopAutoScroll();\n } else if (!this.isAutoScrolling) {\n this.startAutoScroll(mouseX, mouseY);\n }\n }\n stopAutoScroll() {\n const wasAutoScrolling = this.isAutoScrolling;\n this.isAutoScrolling = false;\n this.autoScrollAccumulatorX = 0;\n this.autoScrollAccumulatorY = 0;\n if (wasAutoScrolling && !this.hasOtherLiveReasons()) {\n this.live = false;\n }\n }\n hasOtherLiveReasons() {\n return false;\n }\n handleAutoScroll(deltaTime) {\n if (!this.isAutoScrolling)\n return;\n const scrollX = this.getAutoScrollDirectionX(this.autoScrollMouseX);\n const scrollY = this.getAutoScrollDirectionY(this.autoScrollMouseY);\n const scrollAmount = this.cachedAutoScrollSpeed * (deltaTime / 1000);\n let scrolled = false;\n if (scrollX !== 0) {\n this.autoScrollAccumulatorX += scrollX * scrollAmount;\n const integerScrollX = Math.trunc(this.autoScrollAccumulatorX);\n if (integerScrollX !== 0) {\n this.scrollLeft += integerScrollX;\n this.autoScrollAccumulatorX -= integerScrollX;\n scrolled = true;\n }\n }\n if (scrollY !== 0) {\n this.autoScrollAccumulatorY += scrollY * scrollAmount;\n const integerScrollY = Math.trunc(this.autoScrollAccumulatorY);\n if (integerScrollY !== 0) {\n this.scrollTop += integerScrollY;\n this.autoScrollAccumulatorY -= integerScrollY;\n scrolled = true;\n }\n }\n if (scrolled) {\n this._ctx.requestSelectionUpdate();\n }\n if (scrollX === 0 && scrollY === 0) {\n this.stopAutoScroll();\n }\n }\n getAutoScrollDirectionX(mouseX) {\n const relativeX = mouseX - this.x;\n const distToLeft = relativeX;\n const distToRight = this.width - relativeX;\n if (distToLeft <= this.autoScrollThresholdHorizontal) {\n return this.scrollLeft > 0 ? -1 : 0;\n } else if (distToRight <= this.autoScrollThresholdHorizontal) {\n const maxScrollLeft = this.scrollWidth - this.viewport.width;\n return this.scrollLeft < maxScrollLeft ? 1 : 0;\n }\n return 0;\n }\n getAutoScrollDirectionY(mouseY) {\n const relativeY = mouseY - this.y;\n const distToTop = relativeY;\n const distToBottom = this.height - relativeY;\n if (distToTop <= this.autoScrollThresholdVertical) {\n return this.scrollTop > 0 ? -1 : 0;\n } else if (distToBottom <= this.autoScrollThresholdVertical) {\n const maxScrollTop = this.scrollHeight - this.viewport.height;\n return this.scrollTop < maxScrollTop ? 1 : 0;\n }\n return 0;\n }\n getAutoScrollSpeed(mouseX, mouseY) {\n const relativeX = mouseX - this.x;\n const relativeY = mouseY - this.y;\n const distToLeft = relativeX;\n const distToRight = this.width - relativeX;\n const distToTop = relativeY;\n const distToBottom = this.height - relativeY;\n const minDistance = Math.min(distToLeft, distToRight, distToTop, distToBottom);\n if (minDistance <= 1) {\n return this.autoScrollSpeedFast;\n } else if (minDistance <= 2) {\n return this.autoScrollSpeedMedium;\n } else {\n return this.autoScrollSpeedSlow;\n }\n }\n recalculateBarProps() {\n const wasApplyingStickyScroll = this._isApplyingStickyScroll;\n this._isApplyingStickyScroll = true;\n this.verticalScrollBar.scrollSize = this.content.height;\n this.verticalScrollBar.viewportSize = this.viewport.height;\n this.horizontalScrollBar.scrollSize = this.content.width;\n this.horizontalScrollBar.viewportSize = this.viewport.width;\n if (this._stickyScroll) {\n const newMaxScrollTop = Math.max(0, this.scrollHeight - this.viewport.height);\n const newMaxScrollLeft = Math.max(0, this.scrollWidth - this.viewport.width);\n if (this._stickyStart && !this._hasManualScroll) {\n this.applyStickyStart(this._stickyStart);\n } else {\n if (this._stickyScrollTop) {\n this.scrollTop = 0;\n } else if (this._stickyScrollBottom && newMaxScrollTop > 0) {\n this.scrollTop = newMaxScrollTop;\n }\n if (this._stickyScrollLeft) {\n this.scrollLeft = 0;\n } else if (this._stickyScrollRight && newMaxScrollLeft > 0) {\n this.scrollLeft = newMaxScrollLeft;\n }\n }\n }\n this._isApplyingStickyScroll = wasApplyingStickyScroll;\n process.nextTick(() => {\n this.requestRender();\n });\n }\n set rootOptions(options) {\n Object.assign(this, options);\n this.requestRender();\n }\n set wrapperOptions(options) {\n Object.assign(this.wrapper, options);\n this.requestRender();\n }\n set viewportOptions(options) {\n Object.assign(this.viewport, options);\n this.requestRender();\n }\n set contentOptions(options) {\n Object.assign(this.content, options);\n this.requestRender();\n }\n set scrollbarOptions(options) {\n Object.assign(this.verticalScrollBar, options);\n Object.assign(this.horizontalScrollBar, options);\n this.requestRender();\n }\n set verticalScrollbarOptions(options) {\n Object.assign(this.verticalScrollBar, options);\n this.requestRender();\n }\n set horizontalScrollbarOptions(options) {\n Object.assign(this.horizontalScrollBar, options);\n this.requestRender();\n }\n get scrollAcceleration() {\n return this.scrollAccel;\n }\n set scrollAcceleration(value) {\n this.scrollAccel = value;\n }\n get viewportCulling() {\n return this.content.viewportCulling;\n }\n set viewportCulling(value) {\n this.content.viewportCulling = value;\n this.requestRender();\n }\n destroySelf() {\n if (this.selectionListener) {\n this._ctx.off(\"selection\", this.selectionListener);\n this.selectionListener = undefined;\n }\n super.destroySelf();\n }\n}\n// src/renderables/Select.ts\nvar defaultSelectKeybindings = [\n { name: \"up\", action: \"move-up\" },\n { name: \"k\", action: \"move-up\" },\n { name: \"down\", action: \"move-down\" },\n { name: \"j\", action: \"move-down\" },\n { name: \"up\", shift: true, action: \"move-up-fast\" },\n { name: \"down\", shift: true, action: \"move-down-fast\" },\n { name: \"return\", action: \"select-current\" },\n { name: \"linefeed\", action: \"select-current\" }\n];\nvar SelectRenderableEvents;\n((SelectRenderableEvents2) => {\n SelectRenderableEvents2[\"SELECTION_CHANGED\"] = \"selectionChanged\";\n SelectRenderableEvents2[\"ITEM_SELECTED\"] = \"itemSelected\";\n})(SelectRenderableEvents ||= {});\n\nclass SelectRenderable extends Renderable {\n _focusable = true;\n _options = [];\n _selectedIndex = 0;\n scrollOffset = 0;\n maxVisibleItems;\n _backgroundColor;\n _textColor;\n _focusedBackgroundColor;\n _focusedTextColor;\n _selectedBackgroundColor;\n _selectedTextColor;\n _descriptionColor;\n _selectedDescriptionColor;\n _showScrollIndicator;\n _wrapSelection;\n _showDescription;\n _font;\n _itemSpacing;\n linesPerItem;\n fontHeight;\n _fastScrollStep;\n _keyBindingsMap;\n _keyAliasMap;\n _keyBindings;\n _defaultOptions = {\n backgroundColor: \"transparent\",\n textColor: \"#FFFFFF\",\n focusedBackgroundColor: \"#1a1a1a\",\n focusedTextColor: \"#FFFFFF\",\n selectedBackgroundColor: \"#334455\",\n selectedTextColor: \"#FFFF00\",\n selectedIndex: 0,\n descriptionColor: \"#888888\",\n selectedDescriptionColor: \"#CCCCCC\",\n showScrollIndicator: false,\n wrapSelection: false,\n showDescription: true,\n itemSpacing: 0,\n fastScrollStep: 5\n };\n constructor(ctx, options) {\n super(ctx, { ...options, buffered: true });\n this._options = options.options || [];\n const requestedIndex = options.selectedIndex ?? this._defaultOptions.selectedIndex;\n this._selectedIndex = this._options.length > 0 ? Math.min(requestedIndex, this._options.length - 1) : 0;\n this._backgroundColor = parseColor(options.backgroundColor || this._defaultOptions.backgroundColor);\n this._textColor = parseColor(options.textColor || this._defaultOptions.textColor);\n this._focusedBackgroundColor = parseColor(options.focusedBackgroundColor || this._defaultOptions.focusedBackgroundColor);\n this._focusedTextColor = parseColor(options.focusedTextColor || this._defaultOptions.focusedTextColor);\n this._showScrollIndicator = options.showScrollIndicator ?? this._defaultOptions.showScrollIndicator;\n this._wrapSelection = options.wrapSelection ?? this._defaultOptions.wrapSelection;\n this._showDescription = options.showDescription ?? this._defaultOptions.showDescription;\n this._font = options.font;\n this._itemSpacing = options.itemSpacing || this._defaultOptions.itemSpacing;\n this.fontHeight = this._font ? measureText({ text: \"A\", font: this._font }).height : 1;\n this.linesPerItem = this._showDescription ? this._font ? this.fontHeight + 1 : 2 : this._font ? this.fontHeight : 1;\n this.linesPerItem += this._itemSpacing;\n this.maxVisibleItems = Math.max(1, Math.floor(this.height / this.linesPerItem));\n this._selectedBackgroundColor = parseColor(options.selectedBackgroundColor || this._defaultOptions.selectedBackgroundColor);\n this._selectedTextColor = parseColor(options.selectedTextColor || this._defaultOptions.selectedTextColor);\n this._descriptionColor = parseColor(options.descriptionColor || this._defaultOptions.descriptionColor);\n this._selectedDescriptionColor = parseColor(options.selectedDescriptionColor || this._defaultOptions.selectedDescriptionColor);\n this._fastScrollStep = options.fastScrollStep || this._defaultOptions.fastScrollStep;\n this._keyAliasMap = mergeKeyAliases(defaultKeyAliases, options.keyAliasMap || {});\n this._keyBindings = options.keyBindings || [];\n const mergedBindings = mergeKeyBindings(defaultSelectKeybindings, this._keyBindings);\n this._keyBindingsMap = buildKeyBindingsMap(mergedBindings, this._keyAliasMap);\n this.requestRender();\n }\n renderSelf(buffer, deltaTime) {\n if (!this.visible || !this.frameBuffer)\n return;\n if (this.isDirty) {\n this.refreshFrameBuffer();\n }\n }\n refreshFrameBuffer() {\n if (!this.frameBuffer || this._options.length === 0)\n return;\n const bgColor = this._focused ? this._focusedBackgroundColor : this._backgroundColor;\n this.frameBuffer.clear(bgColor);\n const contentX = 0;\n const contentY = 0;\n const contentWidth = this.width;\n const contentHeight = this.height;\n const visibleOptions = this._options.slice(this.scrollOffset, this.scrollOffset + this.maxVisibleItems);\n for (let i = 0;i < visibleOptions.length; i++) {\n const actualIndex = this.scrollOffset + i;\n const option = visibleOptions[i];\n const isSelected = actualIndex === this._selectedIndex;\n const itemY = contentY + i * this.linesPerItem;\n if (itemY + this.linesPerItem - 1 >= contentY + contentHeight)\n break;\n if (isSelected) {\n const contentHeight2 = this.linesPerItem - this._itemSpacing;\n this.frameBuffer.fillRect(contentX, itemY, contentWidth, contentHeight2, this._selectedBackgroundColor);\n }\n const nameContent = `${isSelected ? \"\\u25B6 \" : \" \"}${option.name}`;\n const baseTextColor = this._focused ? this._focusedTextColor : this._textColor;\n const nameColor = isSelected ? this._selectedTextColor : baseTextColor;\n let descX = contentX + 3;\n if (this._font) {\n const indicator = isSelected ? \"\\u25B6 \" : \" \";\n this.frameBuffer.drawText(indicator, contentX + 1, itemY, nameColor);\n const indicatorWidth = 2;\n renderFontToFrameBuffer(this.frameBuffer, {\n text: option.name,\n x: contentX + 1 + indicatorWidth,\n y: itemY,\n color: nameColor,\n backgroundColor: isSelected ? this._selectedBackgroundColor : bgColor,\n font: this._font\n });\n descX = contentX + 1 + indicatorWidth;\n } else {\n this.frameBuffer.drawText(nameContent, contentX + 1, itemY, nameColor);\n }\n if (this._showDescription && itemY + this.fontHeight < contentY + contentHeight) {\n const descColor = isSelected ? this._selectedDescriptionColor : this._descriptionColor;\n this.frameBuffer.drawText(option.description, descX, itemY + this.fontHeight, descColor);\n }\n }\n if (this._showScrollIndicator && this._options.length > this.maxVisibleItems) {\n this.renderScrollIndicatorToFrameBuffer(contentX, contentY, contentWidth, contentHeight);\n }\n }\n renderScrollIndicatorToFrameBuffer(contentX, contentY, contentWidth, contentHeight) {\n if (!this.frameBuffer)\n return;\n const scrollPercent = this._selectedIndex / Math.max(1, this._options.length - 1);\n const indicatorHeight = Math.max(1, contentHeight - 2);\n const indicatorY = contentY + 1 + Math.floor(scrollPercent * indicatorHeight);\n const indicatorX = contentX + contentWidth - 1;\n this.frameBuffer.drawText(\"\\u2588\", indicatorX, indicatorY, parseColor(\"#666666\"));\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this._options = options;\n this._selectedIndex = Math.min(this._selectedIndex, Math.max(0, options.length - 1));\n this.updateScrollOffset();\n this.requestRender();\n }\n getSelectedOption() {\n return this._options[this._selectedIndex] || null;\n }\n getSelectedIndex() {\n return this._selectedIndex;\n }\n moveUp(steps = 1) {\n const newIndex = this._selectedIndex - steps;\n if (newIndex >= 0) {\n this._selectedIndex = newIndex;\n } else if (this._wrapSelection && this._options.length > 0) {\n this._selectedIndex = this._options.length - 1;\n } else {\n this._selectedIndex = 0;\n }\n this.updateScrollOffset();\n this.requestRender();\n this.emit(\"selectionChanged\" /* SELECTION_CHANGED */, this._selectedIndex, this.getSelectedOption());\n }\n moveDown(steps = 1) {\n const newIndex = this._selectedIndex + steps;\n if (newIndex < this._options.length) {\n this._selectedIndex = newIndex;\n } else if (this._wrapSelection && this._options.length > 0) {\n this._selectedIndex = 0;\n } else {\n this._selectedIndex = this._options.length - 1;\n }\n this.updateScrollOffset();\n this.requestRender();\n this.emit(\"selectionChanged\" /* SELECTION_CHANGED */, this._selectedIndex, this.getSelectedOption());\n }\n selectCurrent() {\n const selected = this.getSelectedOption();\n if (selected) {\n this.emit(\"itemSelected\" /* ITEM_SELECTED */, this._selectedIndex, selected);\n }\n }\n setSelectedIndex(index) {\n if (index >= 0 && index < this._options.length) {\n this._selectedIndex = index;\n this.updateScrollOffset();\n this.requestRender();\n this.emit(\"selectionChanged\" /* SELECTION_CHANGED */, this._selectedIndex, this.getSelectedOption());\n }\n }\n updateScrollOffset() {\n if (!this._options)\n return;\n const halfVisible = Math.floor(this.maxVisibleItems / 2);\n const newScrollOffset = Math.max(0, Math.min(this._selectedIndex - halfVisible, this._options.length - this.maxVisibleItems));\n if (newScrollOffset !== this.scrollOffset) {\n this.scrollOffset = newScrollOffset;\n this.requestRender();\n }\n }\n onResize(width, height) {\n this.maxVisibleItems = Math.max(1, Math.floor(height / this.linesPerItem));\n this.updateScrollOffset();\n this.requestRender();\n }\n handleKeyPress(key) {\n const bindingKey = getKeyBindingKey({\n name: key.name,\n ctrl: key.ctrl,\n shift: key.shift,\n meta: key.meta,\n super: key.super,\n action: \"move-up\"\n });\n const action = this._keyBindingsMap.get(bindingKey);\n if (action) {\n switch (action) {\n case \"move-up\":\n this.moveUp(1);\n return true;\n case \"move-down\":\n this.moveDown(1);\n return true;\n case \"move-up-fast\":\n this.moveUp(this._fastScrollStep);\n return true;\n case \"move-down-fast\":\n this.moveDown(this._fastScrollStep);\n return true;\n case \"select-current\":\n this.selectCurrent();\n return true;\n }\n }\n return false;\n }\n get showScrollIndicator() {\n return this._showScrollIndicator;\n }\n set showScrollIndicator(show) {\n this._showScrollIndicator = show;\n this.requestRender();\n }\n get showDescription() {\n return this._showDescription;\n }\n set showDescription(show) {\n if (this._showDescription !== show) {\n this._showDescription = show;\n this.linesPerItem = this._showDescription ? this._font ? this.fontHeight + 1 : 2 : this._font ? this.fontHeight : 1;\n this.linesPerItem += this._itemSpacing;\n this.maxVisibleItems = Math.max(1, Math.floor(this.height / this.linesPerItem));\n this.updateScrollOffset();\n this.requestRender();\n }\n }\n get wrapSelection() {\n return this._wrapSelection;\n }\n set wrapSelection(wrap) {\n this._wrapSelection = wrap;\n }\n set backgroundColor(value) {\n const newColor = parseColor(value ?? this._defaultOptions.backgroundColor);\n if (this._backgroundColor !== newColor) {\n this._backgroundColor = newColor;\n this.requestRender();\n }\n }\n set textColor(value) {\n const newColor = parseColor(value ?? this._defaultOptions.textColor);\n if (this._textColor !== newColor) {\n this._textColor = newColor;\n this.requestRender();\n }\n }\n set focusedBackgroundColor(value) {\n const newColor = parseColor(value ?? this._defaultOptions.focusedBackgroundColor);\n if (this._focusedBackgroundColor !== newColor) {\n this._focusedBackgroundColor = newColor;\n this.requestRender();\n }\n }\n set focusedTextColor(value) {\n const newColor = parseColor(value ?? this._defaultOptions.focusedTextColor);\n if (this._focusedTextColor !== newColor) {\n this._focusedTextColor = newColor;\n this.requestRender();\n }\n }\n set selectedBackgroundColor(value) {\n const newColor = parseColor(value ?? this._defaultOptions.selectedBackgroundColor);\n if (this._selectedBackgroundColor !== newColor) {\n this._selectedBackgroundColor = newColor;\n this.requestRender();\n }\n }\n set selectedTextColor(value) {\n const newColor = parseColor(value ?? this._defaultOptions.selectedTextColor);\n if (this._selectedTextColor !== newColor) {\n this._selectedTextColor = newColor;\n this.requestRender();\n }\n }\n set descriptionColor(value) {\n const newColor = parseColor(value ?? this._defaultOptions.descriptionColor);\n if (this._descriptionColor !== newColor) {\n this._descriptionColor = newColor;\n this.requestRender();\n }\n }\n set selectedDescriptionColor(value) {\n const newColor = parseColor(value ?? this._defaultOptions.selectedDescriptionColor);\n if (this._selectedDescriptionColor !== newColor) {\n this._selectedDescriptionColor = newColor;\n this.requestRender();\n }\n }\n set font(font) {\n this._font = font;\n this.fontHeight = measureText({ text: \"A\", font: this._font }).height;\n this.linesPerItem = this._showDescription ? this._font ? this.fontHeight + 1 : 2 : this._font ? this.fontHeight : 1;\n this.linesPerItem += this._itemSpacing;\n this.maxVisibleItems = Math.max(1, Math.floor(this.height / this.linesPerItem));\n this.updateScrollOffset();\n this.requestRender();\n }\n set itemSpacing(spacing) {\n this._itemSpacing = spacing;\n this.linesPerItem = this._showDescription ? this._font ? this.fontHeight + 1 : 2 : this._font ? this.fontHeight : 1;\n this.linesPerItem += this._itemSpacing;\n this.maxVisibleItems = Math.max(1, Math.floor(this.height / this.linesPerItem));\n this.updateScrollOffset();\n this.requestRender();\n }\n set fastScrollStep(step) {\n this._fastScrollStep = step;\n }\n set keyBindings(bindings) {\n this._keyBindings = bindings;\n const mergedBindings = mergeKeyBindings(defaultSelectKeybindings, bindings);\n this._keyBindingsMap = buildKeyBindingsMap(mergedBindings, this._keyAliasMap);\n }\n set keyAliasMap(aliases) {\n this._keyAliasMap = mergeKeyAliases(defaultKeyAliases, aliases);\n const mergedBindings = mergeKeyBindings(defaultSelectKeybindings, this._keyBindings);\n this._keyBindingsMap = buildKeyBindingsMap(mergedBindings, this._keyAliasMap);\n }\n set selectedIndex(value) {\n const newIndex = value ?? this._defaultOptions.selectedIndex;\n const clampedIndex = this._options.length > 0 ? Math.min(Math.max(0, newIndex), this._options.length - 1) : 0;\n if (this._selectedIndex !== clampedIndex) {\n this._selectedIndex = clampedIndex;\n this.updateScrollOffset();\n this.requestRender();\n }\n }\n}\n// src/renderables/TabSelect.ts\nvar defaultTabSelectKeybindings = [\n { name: \"left\", action: \"move-left\" },\n { name: \"[\", action: \"move-left\" },\n { name: \"right\", action: \"move-right\" },\n { name: \"]\", action: \"move-right\" },\n { name: \"return\", action: \"select-current\" },\n { name: \"linefeed\", action: \"select-current\" }\n];\nvar TabSelectRenderableEvents;\n((TabSelectRenderableEvents2) => {\n TabSelectRenderableEvents2[\"SELECTION_CHANGED\"] = \"selectionChanged\";\n TabSelectRenderableEvents2[\"ITEM_SELECTED\"] = \"itemSelected\";\n})(TabSelectRenderableEvents ||= {});\nfunction calculateDynamicHeight(showUnderline, showDescription) {\n let height = 1;\n if (showUnderline) {\n height += 1;\n }\n if (showDescription) {\n height += 1;\n }\n return height;\n}\n\nclass TabSelectRenderable extends Renderable {\n _focusable = true;\n _options = [];\n selectedIndex = 0;\n scrollOffset = 0;\n _tabWidth;\n maxVisibleTabs;\n _backgroundColor;\n _textColor;\n _focusedBackgroundColor;\n _focusedTextColor;\n _selectedBackgroundColor;\n _selectedTextColor;\n _selectedDescriptionColor;\n _showScrollArrows;\n _showDescription;\n _showUnderline;\n _wrapSelection;\n _keyBindingsMap;\n _keyAliasMap;\n _keyBindings;\n constructor(ctx, options) {\n const calculatedHeight = calculateDynamicHeight(options.showUnderline ?? true, options.showDescription ?? true);\n super(ctx, { ...options, height: calculatedHeight, buffered: true });\n this._backgroundColor = parseColor(options.backgroundColor || \"transparent\");\n this._textColor = parseColor(options.textColor || \"#FFFFFF\");\n this._focusedBackgroundColor = parseColor(options.focusedBackgroundColor || options.backgroundColor || \"#1a1a1a\");\n this._focusedTextColor = parseColor(options.focusedTextColor || options.textColor || \"#FFFFFF\");\n this._options = options.options || [];\n this._tabWidth = options.tabWidth || 20;\n this._showDescription = options.showDescription ?? true;\n this._showUnderline = options.showUnderline ?? true;\n this._showScrollArrows = options.showScrollArrows ?? true;\n this._wrapSelection = options.wrapSelection ?? false;\n this.maxVisibleTabs = Math.max(1, Math.floor(this.width / this._tabWidth));\n this._selectedBackgroundColor = parseColor(options.selectedBackgroundColor || \"#334455\");\n this._selectedTextColor = parseColor(options.selectedTextColor || \"#FFFF00\");\n this._selectedDescriptionColor = parseColor(options.selectedDescriptionColor || \"#CCCCCC\");\n this._keyAliasMap = mergeKeyAliases(defaultKeyAliases, options.keyAliasMap || {});\n this._keyBindings = options.keyBindings || [];\n const mergedBindings = mergeKeyBindings(defaultTabSelectKeybindings, this._keyBindings);\n this._keyBindingsMap = buildKeyBindingsMap(mergedBindings, this._keyAliasMap);\n }\n calculateDynamicHeight() {\n return calculateDynamicHeight(this._showUnderline, this._showDescription);\n }\n renderSelf(buffer, deltaTime) {\n if (!this.visible || !this.frameBuffer)\n return;\n if (this.isDirty) {\n this.refreshFrameBuffer();\n }\n }\n refreshFrameBuffer() {\n if (!this.frameBuffer)\n return;\n const bgColor = this._focused ? this._focusedBackgroundColor : this._backgroundColor;\n this.frameBuffer.clear(bgColor);\n if (this._options.length === 0)\n return;\n const contentX = 0;\n const contentY = 0;\n const contentWidth = this.width;\n const contentHeight = this.height;\n const visibleOptions = this._options.slice(this.scrollOffset, this.scrollOffset + this.maxVisibleTabs);\n for (let i = 0;i < visibleOptions.length; i++) {\n const actualIndex = this.scrollOffset + i;\n const option = visibleOptions[i];\n const isSelected = actualIndex === this.selectedIndex;\n const tabX = contentX + i * this._tabWidth;\n if (tabX >= contentX + contentWidth)\n break;\n const actualTabWidth = Math.min(this._tabWidth, contentWidth - i * this._tabWidth);\n if (isSelected) {\n this.frameBuffer.fillRect(tabX, contentY, actualTabWidth, 1, this._selectedBackgroundColor);\n }\n const baseTextColor = this._focused ? this._focusedTextColor : this._textColor;\n const nameColor = isSelected ? this._selectedTextColor : baseTextColor;\n const nameContent = this.truncateText(option.name, actualTabWidth - 2);\n this.frameBuffer.drawText(nameContent, tabX + 1, contentY, nameColor);\n if (isSelected && this._showUnderline && contentHeight >= 2) {\n const underlineY = contentY + 1;\n const underlineBg = isSelected ? this._selectedBackgroundColor : bgColor;\n this.frameBuffer.drawText(\"\\u25AC\".repeat(actualTabWidth), tabX, underlineY, nameColor, underlineBg);\n }\n }\n if (this._showDescription && contentHeight >= (this._showUnderline ? 3 : 2)) {\n const selectedOption = this.getSelectedOption();\n if (selectedOption) {\n const descriptionY = contentY + (this._showUnderline ? 2 : 1);\n const descColor = this._selectedDescriptionColor;\n const descContent = this.truncateText(selectedOption.description, contentWidth - 2);\n this.frameBuffer.drawText(descContent, contentX + 1, descriptionY, descColor);\n }\n }\n if (this._showScrollArrows && this._options.length > this.maxVisibleTabs) {\n this.renderScrollArrowsToFrameBuffer(contentX, contentY, contentWidth, contentHeight);\n }\n }\n truncateText(text, maxWidth) {\n if (text.length <= maxWidth)\n return text;\n return text.substring(0, Math.max(0, maxWidth - 1)) + \"\\u2026\";\n }\n renderScrollArrowsToFrameBuffer(contentX, contentY, contentWidth, contentHeight) {\n if (!this.frameBuffer)\n return;\n const hasMoreLeft = this.scrollOffset > 0;\n const hasMoreRight = this.scrollOffset + this.maxVisibleTabs < this._options.length;\n if (hasMoreLeft) {\n this.frameBuffer.drawText(\"\\u2039\", contentX, contentY, parseColor(\"#AAAAAA\"));\n }\n if (hasMoreRight) {\n this.frameBuffer.drawText(\"\\u203A\", contentX + contentWidth - 1, contentY, parseColor(\"#AAAAAA\"));\n }\n }\n setOptions(options) {\n this._options = options;\n this.selectedIndex = Math.min(this.selectedIndex, Math.max(0, options.length - 1));\n this.updateScrollOffset();\n this.requestRender();\n }\n getSelectedOption() {\n return this._options[this.selectedIndex] || null;\n }\n getSelectedIndex() {\n return this.selectedIndex;\n }\n moveLeft() {\n if (this.selectedIndex > 0) {\n this.selectedIndex--;\n } else if (this._wrapSelection && this._options.length > 0) {\n this.selectedIndex = this._options.length - 1;\n } else {\n return;\n }\n this.updateScrollOffset();\n this.requestRender();\n this.emit(\"selectionChanged\" /* SELECTION_CHANGED */, this.selectedIndex, this.getSelectedOption());\n }\n moveRight() {\n if (this.selectedIndex < this._options.length - 1) {\n this.selectedIndex++;\n } else if (this._wrapSelection && this._options.length > 0) {\n this.selectedIndex = 0;\n } else {\n return;\n }\n this.updateScrollOffset();\n this.requestRender();\n this.emit(\"selectionChanged\" /* SELECTION_CHANGED */, this.selectedIndex, this.getSelectedOption());\n }\n selectCurrent() {\n const selected = this.getSelectedOption();\n if (selected) {\n this.emit(\"itemSelected\" /* ITEM_SELECTED */, this.selectedIndex, selected);\n }\n }\n setSelectedIndex(index) {\n if (index >= 0 && index < this._options.length) {\n this.selectedIndex = index;\n this.updateScrollOffset();\n this.requestRender();\n this.emit(\"selectionChanged\" /* SELECTION_CHANGED */, this.selectedIndex, this.getSelectedOption());\n }\n }\n updateScrollOffset() {\n const halfVisible = Math.floor(this.maxVisibleTabs / 2);\n const newScrollOffset = Math.max(0, Math.min(this.selectedIndex - halfVisible, this._options.length - this.maxVisibleTabs));\n if (newScrollOffset !== this.scrollOffset) {\n this.scrollOffset = newScrollOffset;\n this.requestRender();\n }\n }\n onResize(width, height) {\n this.maxVisibleTabs = Math.max(1, Math.floor(width / this._tabWidth));\n this.updateScrollOffset();\n this.requestRender();\n }\n setTabWidth(tabWidth) {\n if (this._tabWidth === tabWidth)\n return;\n this._tabWidth = tabWidth;\n this.maxVisibleTabs = Math.max(1, Math.floor(this.width / this._tabWidth));\n this.updateScrollOffset();\n this.requestRender();\n }\n getTabWidth() {\n return this._tabWidth;\n }\n handleKeyPress(key) {\n const bindingKey = getKeyBindingKey({\n name: key.name,\n ctrl: key.ctrl,\n shift: key.shift,\n meta: key.meta,\n super: key.super,\n action: \"move-left\"\n });\n const action = this._keyBindingsMap.get(bindingKey);\n if (action) {\n switch (action) {\n case \"move-left\":\n this.moveLeft();\n return true;\n case \"move-right\":\n this.moveRight();\n return true;\n case \"select-current\":\n this.selectCurrent();\n return true;\n }\n }\n return false;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this._options = options;\n this.selectedIndex = Math.min(this.selectedIndex, Math.max(0, options.length - 1));\n this.updateScrollOffset();\n this.requestRender();\n }\n set backgroundColor(color) {\n this._backgroundColor = parseColor(color);\n this.requestRender();\n }\n set textColor(color) {\n this._textColor = parseColor(color);\n this.requestRender();\n }\n set focusedBackgroundColor(color) {\n this._focusedBackgroundColor = parseColor(color);\n this.requestRender();\n }\n set focusedTextColor(color) {\n this._focusedTextColor = parseColor(color);\n this.requestRender();\n }\n set selectedBackgroundColor(color) {\n this._selectedBackgroundColor = parseColor(color);\n this.requestRender();\n }\n set selectedTextColor(color) {\n this._selectedTextColor = parseColor(color);\n this.requestRender();\n }\n set selectedDescriptionColor(color) {\n this._selectedDescriptionColor = parseColor(color);\n this.requestRender();\n }\n get showDescription() {\n return this._showDescription;\n }\n set showDescription(show) {\n if (this._showDescription !== show) {\n this._showDescription = show;\n const newHeight = this.calculateDynamicHeight();\n this.height = newHeight;\n this.requestRender();\n }\n }\n get showUnderline() {\n return this._showUnderline;\n }\n set showUnderline(show) {\n if (this._showUnderline !== show) {\n this._showUnderline = show;\n const newHeight = this.calculateDynamicHeight();\n this.height = newHeight;\n this.requestRender();\n }\n }\n get showScrollArrows() {\n return this._showScrollArrows;\n }\n set showScrollArrows(show) {\n if (this._showScrollArrows !== show) {\n this._showScrollArrows = show;\n this.requestRender();\n }\n }\n get wrapSelection() {\n return this._wrapSelection;\n }\n set wrapSelection(wrap) {\n this._wrapSelection = wrap;\n }\n get tabWidth() {\n return this._tabWidth;\n }\n set tabWidth(tabWidth) {\n if (this._tabWidth === tabWidth)\n return;\n this._tabWidth = tabWidth;\n this.maxVisibleTabs = Math.max(1, Math.floor(this.width / this._tabWidth));\n this.updateScrollOffset();\n this.requestRender();\n }\n set keyBindings(bindings) {\n this._keyBindings = bindings;\n const mergedBindings = mergeKeyBindings(defaultTabSelectKeybindings, bindings);\n this._keyBindingsMap = buildKeyBindingsMap(mergedBindings, this._keyAliasMap);\n }\n set keyAliasMap(aliases) {\n this._keyAliasMap = mergeKeyAliases(defaultKeyAliases, aliases);\n const mergedBindings = mergeKeyBindings(defaultTabSelectKeybindings, this._keyBindings);\n this._keyBindingsMap = buildKeyBindingsMap(mergedBindings, this._keyAliasMap);\n }\n}\nexport {\n yellow,\n wrapWithDelegates,\n white,\n vstyles,\n visualizeRenderableTree,\n main as updateAssets,\n underline,\n treeSitterToTextChunks,\n treeSitterToStyledText,\n t,\n stringToStyledText,\n strikethrough,\n setRenderLibPath,\n rgbToHex,\n reverse,\n resolveRenderLib,\n renderFontToFrameBuffer,\n registerEnvVar,\n red,\n pathToFiletype,\n parseWrap,\n parseUnit,\n parsePositionType,\n parseOverflow,\n parseMeasureMode,\n parseLogLevel,\n parseKeypress,\n parseJustify,\n parseGutter,\n parseFlexDirection,\n parseEdge,\n parseDisplay,\n parseDirection,\n parseDimension,\n parseColor,\n parseBoxSizing,\n parseBorderStyle,\n parseAlignItems,\n parseAlign,\n nonAlphanumericKeys,\n measureText,\n maybeMakeRenderable,\n magenta,\n link,\n italic,\n isValidBorderStyle,\n isVNode,\n isTextNodeRenderable,\n isStyledText,\n isRenderable,\n instantiate,\n hsvToRgb,\n hexToRgb,\n hastToStyledText,\n h,\n green,\n getTreeSitterClient,\n getLinkId,\n getDataPaths,\n getCharacterPositions,\n getBorderSides,\n getBorderFromSides,\n getBaseAttributes,\n generateEnvMarkdown,\n generateEnvColored,\n fonts,\n fg,\n extToFiletype,\n envRegistry,\n env,\n engine,\n dim,\n delegate,\n cyan,\n createTimeline,\n createTextAttributes,\n createTerminalPalette,\n createExtmarksController,\n createCliRenderer,\n coordinateToCharacterIndex,\n convertThemeToStyles,\n convertGlobalToLocalSelection,\n clearEnvCache,\n capture,\n buildKittyKeyboardFlags,\n brightYellow,\n brightWhite,\n brightRed,\n brightMagenta,\n brightGreen,\n brightCyan,\n brightBlue,\n brightBlack,\n borderCharsToArray,\n bold,\n blue,\n blink,\n black,\n bgYellow,\n bgWhite,\n bgRed,\n bgMagenta,\n bgGreen,\n bgCyan,\n bgBlue,\n bgBlack,\n bg,\n attributesWithLink,\n applySepia,\n applyScanlines,\n applyNoise,\n applyInvert,\n applyGrayscale,\n applyChromaticAberration,\n applyAsciiArt,\n addDefaultParsers,\n exports_src as Yoga,\n VignetteEffect,\n VRenderable,\n TreeSitterClient,\n Timeline,\n TextareaRenderable,\n TextRenderable,\n TextNodeRenderable,\n TextBufferView,\n TextBufferRenderable,\n TextBuffer,\n TextAttributes,\n Text,\n TerminalPalette,\n TerminalConsole,\n TabSelectRenderableEvents,\n TabSelectRenderable,\n TabSelect,\n SyntaxStyle,\n StyledText,\n StdinBuffer,\n SliderRenderable,\n Selection,\n SelectRenderableEvents,\n SelectRenderable,\n Select,\n ScrollBoxRenderable,\n ScrollBox,\n ScrollBarRenderable,\n RootTextNodeRenderable,\n RootRenderable,\n RendererControlState,\n RenderableEvents,\n Renderable,\n RGBA,\n PasteEvent,\n OptimizedBuffer,\n NativeSpanFeed,\n MouseParser,\n MouseEvent,\n MouseButton,\n MarkdownRenderable,\n MacOSScrollAccel,\n LogLevel,\n LinearScrollAccel,\n LineNumberRenderable,\n LayoutEvents,\n KeyHandler,\n KeyEvent,\n InternalKeyHandler,\n InputRenderableEvents,\n InputRenderable,\n Input,\n Generic,\n FrameBufferRenderable,\n FrameBuffer,\n ExtmarksController,\n EditorView,\n EditBuffer,\n DistortionEffect,\n DiffRenderable,\n DebugOverlayCorner,\n DataPathsManager,\n ConsolePosition,\n CodeRenderable,\n Code,\n CliRenderer,\n CliRenderEvents,\n BrightnessEffect,\n BoxRenderable,\n Box,\n BorderChars,\n BorderCharArrays,\n BlurEffect,\n BloomEffect,\n BaseRenderable,\n ArrowRenderable,\n ATTRIBUTE_BASE_MASK,\n ATTRIBUTE_BASE_BITS,\n ASCIIFontSelectionHelper,\n ASCIIFontRenderable,\n ASCIIFont\n};\n\n//# debugId=3CB381A14248B1EF64756E2164756E21\n//# sourceMappingURL=index.js.map\n"
7
+ ],
8
+ "mappings": "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,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA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G;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAA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A;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,MAAM;AAAA,EAC9F;AACF;AAEA,IAAI,eAAe;AAAA,EACjB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAAA,EAC/B,aAAa,CAAC,mBAAmB,mBAAmB,mBAAmB,mBAAmB,mBAAmB,iBAAiB;AAAA,EAC9H,kBAAkB;AAAA,EAClB,OAAO;AAAA,IACL,GAAG,CAAC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,mCAAmC;AAAA,IAChO,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG,CAAC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,mCAAmC;AAAA,IAChO,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG,CAAC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,mCAAmC;AAAA,IAChO,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG,CAAC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,mCAAmC;AAAA,IAChO,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG,CAAC,yBAAyB,yBAAyB,yBAAyB,yBAAyB,yBAAyB,uBAAuB;AAAA,IACxJ,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG,CAAC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,mCAAmC;AAAA,IAChO,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG,CAAC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,mCAAmC;AAAA,IAChO,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG,CAAC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,mCAAmC;AAAA,IAChO,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG,CAAC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,mCAAmC;AAAA,IAChO,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG,CAAC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,mCAAmC;AAAA,IAChO,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACpQ,KAAK,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACtQ,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACtQ,KAAK,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACtQ,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACtQ,KAAK,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACtQ,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACtQ,KAAK,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACtQ,KAAK,CAAC,yBAAyB,yBAAyB,yBAAyB,yBAAyB,yBAAyB,uBAAuB;AAAA,IAC1J,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,CAAC,yBAAyB,yBAAyB,yBAAyB,yBAAyB,yBAAyB,uBAAuB;AAAA,IAC1J,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,CAAC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,mCAAmC;AAAA,IAClO,GAAG,CAAC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,mCAAmC;AAAA,IAChO,KAAK,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACtQ,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,CAAC,yBAAyB,yBAAyB,yBAAyB,yBAAyB,yBAAyB,uBAAuB;AAAA,IAC1J,KAAK,CAAC,yBAAyB,yBAAyB,yBAAyB,yBAAyB,yBAAyB,uBAAuB;AAAA,IAC1J,KAAK,CAAC,yBAAyB,yBAAyB,yBAAyB,yBAAyB,yBAAyB,uBAAuB;AAAA,IAC1J,KAAK,CAAC,yBAAyB,yBAAyB,yBAAyB,yBAAyB,yBAAyB,uBAAuB;AAAA,IAC1J,KAAK,CAAC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,mCAAmC;AAAA,IAClO,KAAK,CAAC,yBAAyB,yBAAyB,yBAAyB,yBAAyB,yBAAyB,uBAAuB;AAAA,EAC5J;AACF;AAEA,IAAI,iBAAiB;AAAA,EACnB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAAA,EAC/B,aAAa,CAAC,mBAAmB,mBAAmB,mBAAmB,mBAAmB,mBAAmB,iBAAiB;AAAA,EAC9H,kBAAkB;AAAA,EAClB,OAAO;AAAA,IACL,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACpQ,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACpQ,GAAG,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACpQ,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACtQ,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACtQ,KAAK,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACtQ,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACtQ,KAAK,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACtQ,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACtQ,KAAK,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACtQ,KAAK,CAAC,yBAAyB,yBAAyB,yBAAyB,yBAAyB,yBAAyB,uBAAuB;AAAA,IAC1J,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,CAAC,yBAAyB,yBAAyB,yBAAyB,yBAAyB,yBAAyB,uBAAuB;AAAA,IAC1J,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,CAAC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,mCAAmC;AAAA,IAClO,GAAG,CAAC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,mCAAmC;AAAA,IAChO,KAAK,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACtQ,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG,CAAC,2CAA2C,2CAA2C,2CAA2C,2CAA2C,2CAA2C,yCAAyC;AAAA,IACpQ,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,CAAC,yBAAyB,yBAAyB,yBAAyB,yBAAyB,yBAAyB,uBAAuB;AAAA,IAC1J,KAAK,CAAC,yBAAyB,yBAAyB,yBAAyB,yBAAyB,yBAAyB,gCAAgC;AAAA,IACnK,KAAK,CAAC,yBAAyB,yBAAyB,yBAAyB,yBAAyB,yBAAyB,gCAAgC;AAAA,IACnK,KAAK,CAAC,yBAAyB,yBAAyB,yBAAyB,yBAAyB,yBAAyB,uBAAuB;AAAA,IAC1J,KAAK,CAAC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,qCAAqC,mCAAmC;AAAA,IAClO,KAAK,CAAC,+BAA+B,+BAA+B,+BAA+B,+BAA+B,+BAA+B,6BAA6B;AAAA,EAChM;AACF;AAGA,IAAI,QAAQ;AAAA,EACV,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AACV;AACA,IAAI,cAAc,CAAC;AACnB,SAAS,cAAc,CAAC,MAAM;AAAA,EAC5B,MAAM,WAAW,CAAC;AAAA,EAClB,IAAI,eAAe;AAAA,EACnB,MAAM,gBAAgB;AAAA,EACtB,IAAI,YAAY;AAAA,EAChB,IAAI;AAAA,EACJ,QAAQ,QAAQ,cAAc,KAAK,IAAI,OAAO,MAAM;AAAA,IAClD,IAAI,MAAM,QAAQ,WAAW;AAAA,MAC3B,MAAM,YAAY,KAAK,MAAM,WAAW,MAAM,KAAK;AAAA,MACnD,IAAI,WAAW;AAAA,QACb,SAAS,KAAK,EAAE,MAAM,WAAW,YAAY,EAAE,CAAC;AAAA,MAClD;AAAA,IACF;AAAA,IACA,MAAM,aAAa,SAAS,MAAM,EAAE,IAAI;AAAA,IACxC,MAAM,aAAa,MAAM;AAAA,IACzB,SAAS,KAAK,EAAE,MAAM,YAAY,YAAY,KAAK,IAAI,GAAG,UAAU,EAAE,CAAC;AAAA,IACvE,YAAY,MAAM,QAAQ,MAAM,GAAG;AAAA,EACrC;AAAA,EACA,IAAI,YAAY,KAAK,QAAQ;AAAA,IAC3B,MAAM,gBAAgB,KAAK,MAAM,SAAS;AAAA,IAC1C,IAAI,eAAe;AAAA,MACjB,SAAS,KAAK,EAAE,MAAM,eAAe,YAAY,EAAE,CAAC;AAAA,IACtD;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAET,SAAS,aAAa,CAAC,SAAS;AAAA,EAC9B,IAAI,CAAC,YAAY,UAAU;AAAA,IACzB,MAAM,UAAU,MAAM;AAAA,IACtB,MAAM,cAAc,CAAC;AAAA,IACrB,YAAY,MAAM,UAAU,OAAO,QAAQ,QAAQ,KAAK,GAAG;AAAA,MACzD,YAAY,QAAQ,MAAM,IAAI,CAAC,SAAS,eAAe,IAAI,CAAC;AAAA,IAC9D;AAAA,IACA,YAAY,WAAW;AAAA,SAClB;AAAA,MACH,QAAQ,QAAQ,UAAU;AAAA,MAC1B,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,OAAO,YAAY;AAAA;AAErB,SAAS,WAAW,GAAG,MAAM,OAAO,UAAU;AAAA,EAC5C,MAAM,UAAU,cAAc,IAAI;AAAA,EAClC,IAAI,CAAC,SAAS;AAAA,IACZ,QAAQ,KAAK,SAAS,iBAAiB;AAAA,IACvC,OAAO,EAAE,OAAO,GAAG,QAAQ,EAAE;AAAA,EAC/B;AAAA,EACA,IAAI,WAAW;AAAA,EACf,SAAS,IAAI,EAAE,IAAI,KAAK,QAAQ,KAAK;AAAA,IACnC,MAAM,OAAO,KAAK,GAAG,YAAY;AAAA,IACjC,MAAM,UAAU,QAAQ,MAAM;AAAA,IAC9B,IAAI,CAAC,SAAS;AAAA,MACZ,MAAM,YAAY,QAAQ,MAAM;AAAA,MAChC,IAAI,aAAa,UAAU,IAAI;AAAA,QAC7B,IAAI,aAAa;AAAA,QACjB,WAAW,WAAW,UAAU,IAAI;AAAA,UAClC,cAAc,QAAQ,KAAK;AAAA,QAC7B;AAAA,QACA,YAAY;AAAA,MACd,EAAO;AAAA,QACL,YAAY;AAAA;AAAA,MAEd;AAAA,IACF;AAAA,IACA,IAAI,YAAY;AAAA,IAChB,IAAI,QAAQ,IAAI;AAAA,MACd,WAAW,WAAW,QAAQ,IAAI;AAAA,QAChC,aAAa,QAAQ,KAAK;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,YAAY;AAAA,IACZ,IAAI,IAAI,KAAK,SAAS,GAAG;AAAA,MACvB,YAAY,QAAQ;AAAA,IACtB;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,OAAO;AAAA,IACP,QAAQ,QAAQ;AAAA,EAClB;AAAA;AAEF,SAAS,qBAAqB,CAAC,MAAM,OAAO,QAAQ;AAAA,EAClD,MAAM,UAAU,cAAc,IAAI;AAAA,EAClC,IAAI,CAAC,SAAS;AAAA,IACZ,OAAO,CAAC,CAAC;AAAA,EACX;AAAA,EACA,MAAM,YAAY,CAAC,CAAC;AAAA,EACpB,IAAI,WAAW;AAAA,EACf,SAAS,IAAI,EAAE,IAAI,KAAK,QAAQ,KAAK;AAAA,IACnC,MAAM,OAAO,KAAK,GAAG,YAAY;AAAA,IACjC,MAAM,UAAU,QAAQ,MAAM;AAAA,IAC9B,IAAI,YAAY;AAAA,IAChB,IAAI,CAAC,SAAS;AAAA,MACZ,MAAM,YAAY,QAAQ,MAAM;AAAA,MAChC,IAAI,aAAa,UAAU,IAAI;AAAA,QAC7B,WAAW,WAAW,UAAU,IAAI;AAAA,UAClC,aAAa,QAAQ,KAAK;AAAA,QAC5B;AAAA,MACF,EAAO;AAAA,QACL,YAAY;AAAA;AAAA,IAEhB,EAAO,SAAI,QAAQ,IAAI;AAAA,MACrB,WAAW,WAAW,QAAQ,IAAI;AAAA,QAChC,aAAa,QAAQ,KAAK;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,YAAY;AAAA,IACZ,IAAI,IAAI,KAAK,SAAS,GAAG;AAAA,MACvB,YAAY,QAAQ;AAAA,IACtB;AAAA,IACA,UAAU,KAAK,QAAQ;AAAA,EACzB;AAAA,EACA,OAAO;AAAA;AAET,SAAS,0BAA0B,CAAC,GAAG,MAAM,OAAO,QAAQ;AAAA,EAC1D,MAAM,YAAY,sBAAsB,MAAM,IAAI;AAAA,EAClD,IAAI,IAAI,GAAG;AAAA,IACT,OAAO;AAAA,EACT;AAAA,EACA,SAAS,IAAI,EAAE,IAAI,UAAU,SAAS,GAAG,KAAK;AAAA,IAC5C,MAAM,aAAa,UAAU;AAAA,IAC7B,MAAM,UAAU,UAAU,IAAI;AAAA,IAC9B,IAAI,KAAK,cAAc,IAAI,SAAS;AAAA,MAClC,MAAM,eAAe,cAAc,UAAU,cAAc;AAAA,MAC3D,OAAO,IAAI,eAAe,IAAI,IAAI;AAAA,IACpC;AAAA,EACF;AAAA,EACA,IAAI,UAAU,SAAS,KAAK,KAAK,UAAU,UAAU,SAAS,IAAI;AAAA,IAChE,OAAO,KAAK;AAAA,EACd;AAAA,EACA,OAAO;AAAA;AAET,SAAS,uBAAuB,CAAC;AAAA,EAC/B;AAAA,EACA,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,QAAQ,CAAC,KAAK,SAAS,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,EAC1C,kBAAkB,KAAK,SAAS,GAAG,GAAG,GAAG,GAAG;AAAA,EAC5C,OAAO;AAAA,GACN;AAAA,EACD,MAAM,QAAQ,OAAO;AAAA,EACrB,MAAM,SAAS,OAAO;AAAA,EACtB,MAAM,UAAU,cAAc,IAAI;AAAA,EAClC,IAAI,CAAC,SAAS;AAAA,IACZ,QAAQ,KAAK,SAAS,iBAAiB;AAAA,IACvC,OAAO,EAAE,OAAO,GAAG,QAAQ,EAAE;AAAA,EAC/B;AAAA,EACA,MAAM,SAAS,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,EACpD,IAAI,IAAI,KAAK,IAAI,QAAQ,QAAQ,QAAQ;AAAA,IACvC,OAAO,EAAE,OAAO,GAAG,QAAQ,QAAQ,MAAM;AAAA,EAC3C;AAAA,EACA,IAAI,WAAW;AAAA,EACf,MAAM,SAAS;AAAA,EACf,SAAS,IAAI,EAAE,IAAI,KAAK,QAAQ,KAAK;AAAA,IACnC,MAAM,OAAO,KAAK,GAAG,YAAY;AAAA,IACjC,MAAM,UAAU,QAAQ,MAAM;AAAA,IAC9B,IAAI,CAAC,SAAS;AAAA,MACZ,MAAM,YAAY,QAAQ,MAAM;AAAA,MAChC,IAAI,aAAa,UAAU,IAAI;AAAA,QAC7B,IAAI,aAAa;AAAA,QACjB,WAAW,WAAW,UAAU,IAAI;AAAA,UAClC,cAAc,QAAQ,KAAK;AAAA,QAC7B;AAAA,QACA,YAAY;AAAA,MACd,EAAO;AAAA,QACL,YAAY;AAAA;AAAA,MAEd;AAAA,IACF;AAAA,IACA,IAAI,YAAY;AAAA,IAChB,IAAI,QAAQ,IAAI;AAAA,MACd,WAAW,WAAW,QAAQ,IAAI;AAAA,QAChC,aAAa,QAAQ,KAAK;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,IAAI,YAAY;AAAA,MACd;AAAA,IACF,IAAI,WAAW,YAAY,GAAG;AAAA,MAC5B,YAAY,YAAY,QAAQ;AAAA,MAChC;AAAA,IACF;AAAA,IACA,SAAS,UAAU,EAAE,UAAU,QAAQ,SAAS,UAAU,QAAQ,QAAQ,WAAW;AAAA,MACnF,MAAM,WAAW,QAAQ;AAAA,MACzB,MAAM,UAAU,IAAI;AAAA,MACpB,IAAI,WAAW,KAAK,UAAU,QAAQ;AAAA,QACpC,IAAI,WAAW;AAAA,QACf,WAAW,WAAW,UAAU;AAAA,UAC9B,MAAM,eAAe,OAAO,QAAQ,eAAe,OAAO;AAAA,UAC1D,SAAS,UAAU,EAAE,UAAU,QAAQ,KAAK,QAAQ,WAAW;AAAA,YAC7D,MAAM,UAAU,WAAW;AAAA,YAC3B,IAAI,WAAW,KAAK,UAAU,OAAO;AAAA,cACnC,MAAM,WAAW,QAAQ,KAAK;AAAA,cAC9B,IAAI,aAAa,KAAK;AAAA,gBACpB,OAAO,yBAAyB,SAAS,SAAS,UAAU,WAAW,YAAY,GAAG,WAAW,eAAe,CAAC;AAAA,cACnH;AAAA,YACF;AAAA,UACF;AAAA,UACA,YAAY,QAAQ,KAAK;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,IACA,YAAY;AAAA,IACZ,IAAI,IAAI,KAAK,SAAS,GAAG;AAAA,MACvB,YAAY,QAAQ;AAAA,IACtB;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,OAAO,WAAW;AAAA,IAClB,QAAQ,QAAQ;AAAA,EAClB;AAAA;AAIF,IAAI,iBAAiB;AAAA,EACnB,MAAM;AAAA,EACN,MAAM,KAAK;AAAA,EACX,KAAK,KAAK;AAAA,EACV,QAAQ,KAAK;AAAA,EACb,WAAW,KAAK;AAAA,EAChB,OAAO,KAAK;AAAA,EACZ,SAAS,KAAK;AAAA,EACd,QAAQ,KAAK;AAAA,EACb,eAAe,KAAK;AACtB;AACA,IAAI,sBAAsB;AAC1B,IAAI,sBAAsB;AAC1B,SAAS,iBAAiB,CAAC,MAAM;AAAA,EAC/B,OAAO,OAAO;AAAA;AAEhB,IAAI;AAAA,CACH,CAAC,wBAAwB;AAAA,EACxB,oBAAoB,oBAAoB,aAAa,KAAK;AAAA,EAC1D,oBAAoB,oBAAoB,cAAc,KAAK;AAAA,EAC3D,oBAAoB,oBAAoB,gBAAgB,KAAK;AAAA,EAC7D,oBAAoB,oBAAoB,iBAAiB,KAAK;AAAA,GAC7D,uBAAuB,CAAC,CAAC;AAG5B,SAAS,oBAAoB;AAAA,EAC3B,OAAO;AAAA,EACP,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,SAAS;AAAA,EACT,gBAAgB;AAAA,IACd,CAAC,GAAG;AAAA,EACN,IAAI,aAAa,eAAe;AAAA,EAChC,IAAI;AAAA,IACF,cAAc,eAAe;AAAA,EAC/B,IAAI;AAAA,IACF,cAAc,eAAe;AAAA,EAC/B,IAAI;AAAA,IACF,cAAc,eAAe;AAAA,EAC/B,IAAI;AAAA,IACF,cAAc,eAAe;AAAA,EAC/B,IAAI;AAAA,IACF,cAAc,eAAe;AAAA,EAC/B,IAAI;AAAA,IACF,cAAc,eAAe;AAAA,EAC/B,IAAI;AAAA,IACF,cAAc,eAAe;AAAA,EAC/B,IAAI;AAAA,IACF,cAAc,eAAe;AAAA,EAC/B,OAAO;AAAA;AAET,IAAI,uBAAuB;AAC3B,IAAI,gBAAgB;AACpB,IAAI,uBAAuB;AAC3B,SAAS,kBAAkB,CAAC,gBAAgB,QAAQ;AAAA,EAClD,MAAM,OAAO,iBAAiB;AAAA,EAC9B,MAAM,YAAY,SAAS,yBAAyB;AAAA,EACpD,OAAO,OAAO;AAAA;AAEhB,SAAS,SAAS,CAAC,YAAY;AAAA,EAC7B,OAAO,eAAe,gBAAgB;AAAA;AAExC,SAAS,uBAAuB,CAAC,YAAY,WAAW,IAAI;AAAA,EAC1D,SAAS,cAAc,CAAC,MAAM,SAAS,IAAI,eAAe,IAAI,cAAc,MAAM,QAAQ,GAAG;AAAA,IAC3F,IAAI,SAAS,UAAU;AAAA,MACrB,OAAO,CAAC,GAAG,SAAS,KAAK,4BAA4B;AAAA,IACvD;AAAA,IACA,MAAM,QAAQ,CAAC;AAAA,IACf,MAAM,WAAW,KAAK,YAAY;AAAA,IAClC,MAAM,KAAK,GAAG,SAAS,KAAK,IAAI;AAAA,IAChC,IAAI,SAAS,SAAS,GAAG;AAAA,MACvB,MAAM,iBAAiB,SAAS,SAAS;AAAA,MACzC,SAAS,QAAQ,CAAC,OAAO,UAAU;AAAA,QACjC,MAAM,cAAc,UAAU;AAAA,QAC9B,MAAM,YAAY,cAAc,wBAAwB;AAAA,QACxD,MAAM,cAAc,gBAAgB,cAAc,SAAS;AAAA,QAC3D,MAAM,aAAa,eAAe,OAAO,cAAc,WAAW,aAAa,aAAa,QAAQ,CAAC;AAAA,QACrG,MAAM,KAAK,GAAG,UAAU;AAAA,OACzB;AAAA,IACH;AAAA,IACA,OAAO;AAAA;AAAA,EAET,MAAM,YAAY,eAAe,UAAU;AAAA,EAC3C,QAAQ,IAAI;AAAA,IACV,UAAU,KAAK;AAAA,CAClB,CAAC;AAAA;AAIF,IAAI,oBAAoB,OAAO,IAAI,0BAA0B;AAC7D,SAAS,YAAY,CAAC,KAAK;AAAA,EACzB,OAAO,OAAO,IAAI;AAAA;AAAA;AAGpB,MAAM,WAAW;AAAA,GACd,qBAAqB;AAAA,EACtB;AAAA,EACA,WAAW,CAAC,QAAQ;AAAA,IAClB,KAAK,SAAS;AAAA;AAElB;AACA,SAAS,kBAAkB,CAAC,SAAS;AAAA,EACnC,MAAM,QAAQ;AAAA,IACZ,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC;AAAA;AAE/B,SAAS,UAAU,CAAC,OAAO,OAAO;AAAA,EAChC,IAAI,OAAO,UAAU,YAAY,eAAe,OAAO;AAAA,IACrD,MAAM,gBAAgB;AAAA,IACtB,MAAM,KAAK,MAAM,KAAK,WAAW,MAAM,EAAE,IAAI,cAAc;AAAA,IAC3D,MAAM,KAAK,MAAM,KAAK,WAAW,MAAM,EAAE,IAAI,cAAc;AAAA,IAC3D,MAAM,WAAW,qBAAqB,KAAK;AAAA,IAC3C,MAAM,cAAc,cAAc,aAAa,cAAc,aAAa,WAAW;AAAA,IACrF,OAAO;AAAA,MACL,WAAW;AAAA,MACX,MAAM,cAAc;AAAA,MACpB;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,MAAM,cAAc;AAAA,IACtB;AAAA,EACF,EAAO;AAAA,IACL,MAAM,eAAe,OAAO,KAAK;AAAA,IACjC,MAAM,KAAK,MAAM,KAAK,WAAW,MAAM,EAAE,IAAI;AAAA,IAC7C,MAAM,KAAK,MAAM,KAAK,WAAW,MAAM,EAAE,IAAI;AAAA,IAC7C,MAAM,aAAa,qBAAqB,KAAK;AAAA,IAC7C,OAAO;AAAA,MACL,WAAW;AAAA,MACX,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA;AAAA;AAGJ,IAAI,QAAQ,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,QAAQ,CAAC;AACxD,IAAI,MAAM,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,MAAM,CAAC;AACpD,IAAI,QAAQ,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,QAAQ,CAAC;AACxD,IAAI,SAAS,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,SAAS,CAAC;AAC1D,IAAI,OAAO,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,OAAO,CAAC;AACtD,IAAI,UAAU,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,UAAU,CAAC;AAC5D,IAAI,OAAO,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,OAAO,CAAC;AACtD,IAAI,QAAQ,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,QAAQ,CAAC;AACxD,IAAI,cAAc,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,cAAc,CAAC;AACpE,IAAI,YAAY,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,YAAY,CAAC;AAChE,IAAI,cAAc,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,cAAc,CAAC;AACpE,IAAI,eAAe,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,eAAe,CAAC;AACtE,IAAI,aAAa,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,aAAa,CAAC;AAClE,IAAI,gBAAgB,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,gBAAgB,CAAC;AACxE,IAAI,aAAa,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,aAAa,CAAC;AAClE,IAAI,cAAc,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,cAAc,CAAC;AACpE,IAAI,UAAU,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,QAAQ,CAAC;AAC1D,IAAI,QAAQ,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,MAAM,CAAC;AACtD,IAAI,UAAU,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,QAAQ,CAAC;AAC1D,IAAI,WAAW,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,SAAS,CAAC;AAC5D,IAAI,SAAS,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,OAAO,CAAC;AACxD,IAAI,YAAY,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,UAAU,CAAC;AAC9D,IAAI,SAAS,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,OAAO,CAAC;AACxD,IAAI,UAAU,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,QAAQ,CAAC;AAC1D,IAAI,OAAO,CAAC,UAAU,WAAW,OAAO,EAAE,MAAM,KAAK,CAAC;AACtD,IAAI,SAAS,CAAC,UAAU,WAAW,OAAO,EAAE,QAAQ,KAAK,CAAC;AAC1D,IAAI,YAAY,CAAC,UAAU,WAAW,OAAO,EAAE,WAAW,KAAK,CAAC;AAChE,IAAI,gBAAgB,CAAC,UAAU,WAAW,OAAO,EAAE,eAAe,KAAK,CAAC;AACxE,IAAI,MAAM,CAAC,UAAU,WAAW,OAAO,EAAE,KAAK,KAAK,CAAC;AACpD,IAAI,UAAU,CAAC,UAAU,WAAW,OAAO,EAAE,SAAS,KAAK,CAAC;AAC5D,IAAI,QAAQ,CAAC,UAAU,WAAW,OAAO,EAAE,OAAO,KAAK,CAAC;AACxD,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,MAAM,CAAC;AAC9D,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,WAAW,OAAO,EAAE,IAAI,MAAM,CAAC;AAC9D,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU;AAAA,EAC7B,MAAM,QAAQ,OAAO,UAAU,YAAY,eAAe,QAAQ,QAAQ;AAAA,IACxE,WAAW;AAAA,IACX,MAAM,OAAO,KAAK;AAAA,EACpB;AAAA,EACA,OAAO;AAAA,OACF;AAAA,IACH,MAAM,EAAE,IAAI;AAAA,EACd;AAAA;AAEF,SAAS,CAAC,CAAC,YAAY,QAAQ;AAAA,EAC7B,MAAM,SAAS,CAAC;AAAA,EAChB,SAAS,IAAI,EAAE,IAAI,QAAQ,QAAQ,KAAK;AAAA,IACtC,MAAM,MAAM,QAAQ;AAAA,IACpB,IAAI,KAAK;AAAA,MACP,OAAO,KAAK;AAAA,QACV,WAAW;AAAA,QACX,MAAM;AAAA,QACN,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,IACA,MAAM,MAAM,OAAO;AAAA,IACnB,IAAI,OAAO,QAAQ,YAAY,eAAe,KAAK;AAAA,MACjD,OAAO,KAAK,GAAG;AAAA,IACjB,EAAO,SAAI,QAAQ,WAAW;AAAA,MAC5B,MAAM,eAAe,OAAO,GAAG;AAAA,MAC/B,OAAO,KAAK;AAAA,QACV,WAAW;AAAA,QACX,MAAM;AAAA,QACN,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO,IAAI,WAAW,MAAM;AAAA;AAI9B,SAAS,gBAAgB,CAAC,MAAM,aAAa,eAAe,CAAC,GAAG;AAAA,EAC9D,MAAM,SAAS,CAAC;AAAA,EAChB,IAAI,KAAK,SAAS,QAAQ;AAAA,IACxB,MAAM,gBAAgB,aAAa,SAAS,IAAI,eAAe,CAAC,SAAS;AAAA,IACzE,MAAM,cAAc,YAAY,YAAY,GAAG,aAAa;AAAA,IAC5D,OAAO,KAAK;AAAA,MACV,WAAW;AAAA,MACX,MAAM,KAAK;AAAA,MACX,IAAI,YAAY;AAAA,MAChB,IAAI,YAAY;AAAA,MAChB,YAAY,YAAY;AAAA,IAC1B,CAAC;AAAA,EACH,EAAO,SAAI,KAAK,SAAS,WAAW;AAAA,IAClC,IAAI,gBAAgB,CAAC,GAAG,YAAY;AAAA,IACpC,IAAI,KAAK,YAAY,WAAW;AAAA,MAC9B,MAAM,UAAU,KAAK,WAAW,UAAU,MAAM,GAAG;AAAA,MACnD,WAAW,OAAO,SAAS;AAAA,QACzB,cAAc,KAAK,GAAG;AAAA,MACxB;AAAA,IACF;AAAA,IACA,WAAW,SAAS,KAAK,UAAU;AAAA,MACjC,OAAO,KAAK,GAAG,iBAAiB,OAAO,aAAa,aAAa,CAAC;AAAA,IACpE;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAET,SAAS,gBAAgB,CAAC,MAAM,aAAa;AAAA,EAC3C,MAAM,SAAS,iBAAiB,MAAM,WAAW;AAAA,EACjD,OAAO,IAAI,WAAW,MAAM;AAAA;AAAA;AAI9B,MAAM,kBAAkB;AAAA,EACtB,IAAI,CAAC,MAAM;AAAA,IACT,OAAO;AAAA;AAAA,EAET,KAAK,GAAG;AACV;AAAA;AAEA,MAAM,iBAAiB;AAAA,EACrB;AAAA,EACA,eAAe;AAAA,EACf,kBAAkB,CAAC;AAAA,EACnB,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,WAAW,CAAC,OAAO,CAAC,GAAG;AAAA,IACrB,KAAK,OAAO;AAAA;AAAA,EAEd,IAAI,CAAC,MAAM,KAAK,IAAI,GAAG;AAAA,IACrB,MAAM,IAAI,KAAK,KAAK,KAAK;AAAA,IACzB,MAAM,MAAM,KAAK,KAAK,OAAO;AAAA,IAC7B,MAAM,gBAAgB,KAAK,KAAK,iBAAiB;AAAA,IACjD,MAAM,KAAK,KAAK,eAAe,MAAM,KAAK,eAAe;AAAA,IACzD,IAAI,OAAO,YAAY,KAAK,KAAK,eAAe;AAAA,MAC9C,KAAK,eAAe;AAAA,MACpB,KAAK,kBAAkB,CAAC;AAAA,MACxB,OAAO;AAAA,IACT;AAAA,IACA,IAAI,KAAK,KAAK,iBAAiB;AAAA,MAC7B,OAAO;AAAA,IACT;AAAA,IACA,KAAK,eAAe;AAAA,IACpB,KAAK,gBAAgB,KAAK,EAAE;AAAA,IAC5B,IAAI,KAAK,gBAAgB,SAAS,KAAK,aAAa;AAAA,MAClD,KAAK,gBAAgB,MAAM;AAAA,IAC7B;AAAA,IACA,MAAM,cAAc,KAAK,gBAAgB,OAAO,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB;AAAA,IAC3F,MAAM,oBAAoB;AAAA,IAC1B,MAAM,WAAW,oBAAoB;AAAA,IACrC,MAAM,IAAI,WAAW;AAAA,IACrB,MAAM,aAAa,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI;AAAA,IAC1C,OAAO,KAAK,IAAI,YAAY,aAAa;AAAA;AAAA,EAE3C,KAAK,GAAG;AAAA,IACN,KAAK,eAAe;AAAA,IACpB,KAAK,kBAAkB,CAAC;AAAA;AAE5B;AAIA,IAAI,MAAM;AACV,IAAI,wBAAwB;AAC5B,IAAI,sBAAsB;AAC1B,SAAS,kBAAkB,CAAC,MAAM;AAAA,EAChC,IAAI,CAAC,KAAK,WAAW,GAAG,GAAG;AAAA,IACzB,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,WAAW,GAAG;AAAA,IACrB,OAAO;AAAA,EACT;AAAA,EACA,MAAM,WAAW,KAAK,MAAM,CAAC;AAAA,EAC7B,IAAI,SAAS,WAAW,GAAG,GAAG;AAAA,IAC5B,OAAO,mBAAmB,QAAQ;AAAA,EACpC;AAAA,EACA,IAAI,SAAS,WAAW,GAAG,GAAG;AAAA,IAC5B,IAAI,SAAS,WAAW,IAAI,GAAG;AAAA,MAC7B,OAAO,KAAK,UAAU,IAAI,aAAa;AAAA,IACzC;AAAA,IACA,OAAO,sBAAsB,IAAI;AAAA,EACnC;AAAA,EACA,IAAI,SAAS,WAAW,GAAG,GAAG;AAAA,IAC5B,OAAO,sBAAsB,IAAI;AAAA,EACnC;AAAA,EACA,IAAI,SAAS,WAAW,GAAG,GAAG;AAAA,IAC5B,OAAO,sBAAsB,IAAI;AAAA,EACnC;AAAA,EACA,IAAI,SAAS,WAAW,GAAG,GAAG;AAAA,IAC5B,OAAO,sBAAsB,IAAI;AAAA,EACnC;AAAA,EACA,IAAI,SAAS,WAAW,GAAG,GAAG;AAAA,IAC5B,OAAO,SAAS,UAAU,IAAI,aAAa;AAAA,EAC7C;AAAA,EACA,IAAI,SAAS,WAAW,GAAG;AAAA,IACzB,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAET,SAAS,qBAAqB,CAAC,MAAM;AAAA,EACnC,IAAI,CAAC,KAAK,WAAW,MAAM,GAAG,GAAG;AAAA,IAC/B,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,SAAS,GAAG;AAAA,IACnB,OAAO;AAAA,EACT;AAAA,EACA,MAAM,UAAU,KAAK,MAAM,CAAC;AAAA,EAC5B,MAAM,WAAW,QAAQ,QAAQ,SAAS;AAAA,EAC1C,MAAM,eAAe,SAAS,WAAW,CAAC;AAAA,EAC1C,IAAI,gBAAgB,MAAM,gBAAgB,KAAK;AAAA,IAC7C,IAAI,QAAQ,WAAW,GAAG,GAAG;AAAA,MAC3B,MAAM,aAAa,qBAAqB,KAAK,OAAO;AAAA,MACpD,IAAI,YAAY;AAAA,QACd,OAAO;AAAA,MACT;AAAA,MACA,IAAI,aAAa,OAAO,aAAa,KAAK;AAAA,QACxC,MAAM,QAAQ,QAAQ,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG;AAAA,QAC5C,IAAI,MAAM,WAAW,KAAK,MAAM,MAAM,CAAC,MAAM,QAAQ,KAAK,CAAC,CAAC,GAAG;AAAA,UAC7D,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAET,SAAS,qBAAqB,CAAC,MAAM;AAAA,EACnC,IAAI,CAAC,KAAK,WAAW,MAAM,GAAG,GAAG;AAAA,IAC/B,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,SAAS,MAAM,IAAI,KAAK,KAAK,SAAS,MAAM,GAAG;AAAA,IACtD,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAET,SAAS,qBAAqB,CAAC,MAAM;AAAA,EACnC,IAAI,CAAC,KAAK,WAAW,MAAM,GAAG,GAAG;AAAA,IAC/B,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,SAAS,MAAM,IAAI,GAAG;AAAA,IAC7B,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAET,SAAS,qBAAqB,CAAC,MAAM;AAAA,EACnC,IAAI,CAAC,KAAK,WAAW,MAAM,GAAG,GAAG;AAAA,IAC/B,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,SAAS,MAAM,IAAI,GAAG;AAAA,IAC7B,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAET,SAAS,2BAA2B,CAAC,MAAM;AAAA,EACzC,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS;AAAA;AAElG,SAAS,wBAAwB,CAAC,QAAQ;AAAA,EACxC,MAAM,YAAY,CAAC;AAAA,EACnB,IAAI,MAAM;AAAA,EACV,OAAO,MAAM,OAAO,QAAQ;AAAA,IAC1B,MAAM,YAAY,OAAO,MAAM,GAAG;AAAA,IAClC,IAAI,UAAU,WAAW,GAAG,GAAG;AAAA,MAC7B,IAAI,SAAS;AAAA,MACb,OAAO,UAAU,UAAU,QAAQ;AAAA,QACjC,MAAM,YAAY,UAAU,MAAM,GAAG,MAAM;AAAA,QAC3C,MAAM,SAAS,mBAAmB,SAAS;AAAA,QAC3C,IAAI,WAAW,YAAY;AAAA,UACzB,UAAU,KAAK,SAAS;AAAA,UACxB,OAAO;AAAA,UACP;AAAA,QACF,EAAO,SAAI,WAAW,cAAc;AAAA,UAClC,IAAI,cAAc,MAAM,KAAK;AAAA,YAC3B,MAAM,WAAW,UAAU;AAAA,YAC3B,IAAI,SAAS,UAAU,UAAU,CAAC,4BAA4B,QAAQ,GAAG;AAAA,cACvE,UAAU,KAAK,SAAS;AAAA,cACxB,OAAO;AAAA,cACP;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,QACF,EAAO;AAAA,UACL,UAAU,KAAK,SAAS;AAAA,UACxB,OAAO;AAAA,UACP;AAAA;AAAA,MAEJ;AAAA,MACA,IAAI,SAAS,UAAU,QAAQ;AAAA,QAC7B,OAAO,EAAE,WAAW,WAAW,UAAU;AAAA,MAC3C;AAAA,IACF,EAAO;AAAA,MACL,MAAM,OAAO,UAAU,WAAW,CAAC;AAAA,MACnC,IAAI,QAAQ,SAAS,QAAQ,OAAO;AAAA,QAClC,IAAI,UAAU,WAAW,GAAG;AAAA,UAC1B,OAAO,EAAE,WAAW,WAAW,UAAU;AAAA,QAC3C;AAAA,QACA,MAAM,OAAO,UAAU,WAAW,CAAC;AAAA,QACnC,IAAI,QAAQ,SAAS,QAAQ,OAAO;AAAA,UAClC,UAAU,KAAK,UAAU,MAAM,GAAG,CAAC,CAAC;AAAA,UACpC,OAAO;AAAA,QACT,EAAO;AAAA,UACL,UAAU,KAAK,UAAU,EAAE;AAAA,UAC3B;AAAA;AAAA,MAEJ,EAAO;AAAA,QACL,UAAU,KAAK,UAAU,EAAE;AAAA,QAC3B;AAAA;AAAA;AAAA,EAGN;AAAA,EACA,OAAO,EAAE,WAAW,WAAW,GAAG;AAAA;AAAA;AAGpC,MAAM,oBAAoB,cAAc;AAAA,EACtC,SAAS;AAAA,EACT,UAAU;AAAA,EACV;AAAA,EACA,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,WAAW,CAAC,UAAU,CAAC,GAAG;AAAA,IACxB,MAAM;AAAA,IACN,KAAK,YAAY,QAAQ,WAAW;AAAA;AAAA,EAEtC,OAAO,CAAC,MAAM;AAAA,IACZ,IAAI,KAAK,SAAS;AAAA,MAChB,aAAa,KAAK,OAAO;AAAA,MACzB,KAAK,UAAU;AAAA,IACjB;AAAA,IACA,IAAI;AAAA,IACJ,IAAI,OAAO,SAAS,IAAI,GAAG;AAAA,MACzB,IAAI,KAAK,WAAW,KAAK,KAAK,KAAK,KAAK;AAAA,QACtC,MAAM,OAAO,KAAK,KAAK;AAAA,QACvB,MAAM,SAAS,OAAO,aAAa,IAAI;AAAA,MACzC,EAAO;AAAA,QACL,MAAM,KAAK,SAAS;AAAA;AAAA,IAExB,EAAO;AAAA,MACL,MAAM;AAAA;AAAA,IAER,IAAI,IAAI,WAAW,KAAK,KAAK,OAAO,WAAW,GAAG;AAAA,MAChD,KAAK,KAAK,QAAQ,EAAE;AAAA,MACpB;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AAAA,IACf,IAAI,KAAK,WAAW;AAAA,MAClB,KAAK,eAAe,KAAK;AAAA,MACzB,KAAK,SAAS;AAAA,MACd,MAAM,WAAW,KAAK,YAAY,QAAQ,mBAAmB;AAAA,MAC7D,IAAI,aAAa,IAAI;AAAA,QACnB,MAAM,gBAAgB,KAAK,YAAY,MAAM,GAAG,QAAQ;AAAA,QACxD,MAAM,YAAY,KAAK,YAAY,MAAM,WAAW,oBAAoB,MAAM;AAAA,QAC9E,KAAK,YAAY;AAAA,QACjB,KAAK,cAAc;AAAA,QACnB,KAAK,KAAK,SAAS,aAAa;AAAA,QAChC,IAAI,UAAU,SAAS,GAAG;AAAA,UACxB,KAAK,QAAQ,SAAS;AAAA,QACxB;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM,aAAa,KAAK,OAAO,QAAQ,qBAAqB;AAAA,IAC5D,IAAI,eAAe,IAAI;AAAA,MACrB,IAAI,aAAa,GAAG;AAAA,QAClB,MAAM,cAAc,KAAK,OAAO,MAAM,GAAG,UAAU;AAAA,QACnD,MAAM,UAAU,yBAAyB,WAAW;AAAA,QACpD,WAAW,YAAY,QAAQ,WAAW;AAAA,UACxC,KAAK,KAAK,QAAQ,QAAQ;AAAA,QAC5B;AAAA,MACF;AAAA,MACA,KAAK,SAAS,KAAK,OAAO,MAAM,aAAa,sBAAsB,MAAM;AAAA,MACzE,KAAK,YAAY;AAAA,MACjB,KAAK,cAAc,KAAK;AAAA,MACxB,KAAK,SAAS;AAAA,MACd,MAAM,WAAW,KAAK,YAAY,QAAQ,mBAAmB;AAAA,MAC7D,IAAI,aAAa,IAAI;AAAA,QACnB,MAAM,gBAAgB,KAAK,YAAY,MAAM,GAAG,QAAQ;AAAA,QACxD,MAAM,YAAY,KAAK,YAAY,MAAM,WAAW,oBAAoB,MAAM;AAAA,QAC9E,KAAK,YAAY;AAAA,QACjB,KAAK,cAAc;AAAA,QACnB,KAAK,KAAK,SAAS,aAAa;AAAA,QAChC,IAAI,UAAU,SAAS,GAAG;AAAA,UACxB,KAAK,QAAQ,SAAS;AAAA,QACxB;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM,SAAS,yBAAyB,KAAK,MAAM;AAAA,IACnD,KAAK,SAAS,OAAO;AAAA,IACrB,WAAW,YAAY,OAAO,WAAW;AAAA,MACvC,KAAK,KAAK,QAAQ,QAAQ;AAAA,IAC5B;AAAA,IACA,IAAI,KAAK,OAAO,SAAS,GAAG;AAAA,MAC1B,KAAK,UAAU,WAAW,MAAM;AAAA,QAC9B,MAAM,UAAU,KAAK,MAAM;AAAA,QAC3B,WAAW,YAAY,SAAS;AAAA,UAC9B,KAAK,KAAK,QAAQ,QAAQ;AAAA,QAC5B;AAAA,SACC,KAAK,SAAS;AAAA,IACnB;AAAA;AAAA,EAEF,KAAK,GAAG;AAAA,IACN,IAAI,KAAK,SAAS;AAAA,MAChB,aAAa,KAAK,OAAO;AAAA,MACzB,KAAK,UAAU;AAAA,IACjB;AAAA,IACA,IAAI,KAAK,OAAO,WAAW,GAAG;AAAA,MAC5B,OAAO,CAAC;AAAA,IACV;AAAA,IACA,MAAM,YAAY,CAAC,KAAK,MAAM;AAAA,IAC9B,KAAK,SAAS;AAAA,IACd,OAAO;AAAA;AAAA,EAET,KAAK,GAAG;AAAA,IACN,IAAI,KAAK,SAAS;AAAA,MAChB,aAAa,KAAK,OAAO;AAAA,MACzB,KAAK,UAAU;AAAA,IACjB;AAAA,IACA,KAAK,SAAS;AAAA,IACd,KAAK,YAAY;AAAA,IACjB,KAAK,cAAc;AAAA;AAAA,EAErB,SAAS,GAAG;AAAA,IACV,OAAO,KAAK;AAAA;AAAA,EAEd,OAAO,GAAG;AAAA,IACR,KAAK,MAAM;AAAA;AAEf;AAGA,SAAS,UAAU,CAAC,OAAO;AAAA,EACzB,IAAI,SAAS,MAAM;AAAA,IACjB,OAAO,MAAM;AAAA,EACf;AAAA,EACA,QAAQ,MAAM,YAAY;AAAA,SACnB;AAAA,MACH,OAAO,MAAM;AAAA,SACV;AAAA,MACH,OAAO,MAAM;AAAA,SACV;AAAA,MACH,OAAO,MAAM;AAAA,SACV;AAAA,MACH,OAAO,MAAM;AAAA,SACV;AAAA,MACH,OAAO,MAAM;AAAA,SACV;AAAA,MACH,OAAO,MAAM;AAAA,SACV;AAAA,MACH,OAAO,MAAM;AAAA,SACV;AAAA,MACH,OAAO,MAAM;AAAA,SACV;AAAA,MACH,OAAO,MAAM;AAAA;AAAA,MAEb,OAAO,MAAM;AAAA;AAAA;AAGnB,SAAS,eAAe,CAAC,OAAO;AAAA,EAC9B,IAAI,SAAS,MAAM;AAAA,IACjB,OAAO,MAAM;AAAA,EACf;AAAA,EACA,QAAQ,MAAM,YAAY;AAAA,SACnB;AAAA,MACH,OAAO,MAAM;AAAA,SACV;AAAA,MACH,OAAO,MAAM;AAAA,SACV;AAAA,MACH,OAAO,MAAM;AAAA,SACV;AAAA,MACH,OAAO,MAAM;AAAA,SACV;AAAA,MACH,OAAO,MAAM;AAAA,SACV;AAAA,MACH,OAAO,MAAM;AAAA,SACV;AAAA,MACH,OAAO,MAAM;AAAA,SACV;AAAA,MACH,OAAO,MAAM;AAAA,SACV;AAAA,MACH,OAAO,MAAM;AAAA;AAAA,MAEb,OAAO,MAAM;AAAA;AAAA;AAGnB,SAAS,cAAc,CAAC,OAAO;AAAA,EAC7B,IAAI,SAAS,MAAM;AAAA,IACjB,OAAO,UAAU;AAAA,EACnB;AAAA,EACA,QAAQ,MAAM,YAAY;AAAA,SACnB;AAAA,MACH,OAAO,UAAU;AAAA,SACd;AAAA,MACH,OAAO,UAAU;AAAA;AAAA,MAEjB,OAAO,UAAU;AAAA;AAAA;AAGvB,SAAS,cAAc,CAAC,OAAO;AAAA,EAC7B,IAAI,SAAS,MAAM;AAAA,IACjB,OAAO,UAAU;AAAA,EACnB;AAAA,EACA,QAAQ,MAAM,YAAY;AAAA,SACnB;AAAA,MACH,OAAO,UAAU;AAAA,SACd;AAAA,MACH,OAAO,UAAU;AAAA;AAAA,MAEjB,OAAO,UAAU;AAAA;AAAA;AAGvB,SAAS,cAAc,CAAC,OAAO;AAAA,EAC7B,IAAI,SAAS,MAAM;AAAA,IACjB,OAAO,UAAU;AAAA,EACnB;AAAA,EACA,QAAQ,MAAM,YAAY;AAAA,SACnB;AAAA,MACH,OAAO,UAAU;AAAA,SACd;AAAA,MACH,OAAO,UAAU;AAAA,SACd;AAAA,MACH,OAAO,UAAU;AAAA;AAAA,MAEjB,OAAO,UAAU;AAAA;AAAA;AAGvB,SAAS,YAAY,CAAC,OAAO;AAAA,EAC3B,IAAI,SAAS,MAAM;AAAA,IACjB,OAAO,QAAQ;AAAA,EACjB;AAAA,EACA,QAAQ,MAAM,YAAY;AAAA,SACnB;AAAA,MACH,OAAO,QAAQ;AAAA,SACZ;AAAA,MACH,OAAO,QAAQ;AAAA,SACZ;AAAA,MACH,OAAO,QAAQ;AAAA;AAAA,MAEf,OAAO,QAAQ;AAAA;AAAA;AAGrB,SAAS,SAAS,CAAC,OAAO;AAAA,EACxB,IAAI,SAAS,MAAM;AAAA,IACjB,OAAO,KAAK;AAAA,EACd;AAAA,EACA,QAAQ,MAAM,YAAY;AAAA,SACnB;AAAA,MACH,OAAO,KAAK;AAAA,SACT;AAAA,MACH,OAAO,KAAK;AAAA,SACT;AAAA,MACH,OAAO,KAAK;AAAA,SACT;AAAA,MACH,OAAO,KAAK;AAAA,SACT;AAAA,MACH,OAAO,KAAK;AAAA,SACT;AAAA,MACH,OAAO,KAAK;AAAA,SACT;AAAA,MACH,OAAO,KAAK;AAAA,SACT;AAAA,MACH,OAAO,KAAK;AAAA,SACT;AAAA,MACH,OAAO,KAAK;AAAA;AAAA,MAEZ,OAAO,KAAK;AAAA;AAAA;AAGlB,SAAS,kBAAkB,CAAC,OAAO;AAAA,EACjC,IAAI,SAAS,MAAM;AAAA,IACjB,OAAO,cAAc;AAAA,EACvB;AAAA,EACA,QAAQ,MAAM,YAAY;AAAA,SACnB;AAAA,MACH,OAAO,cAAc;AAAA,SAClB;AAAA,MACH,OAAO,cAAc;AAAA,SAClB;AAAA,MACH,OAAO,cAAc;AAAA,SAClB;AAAA,MACH,OAAO,cAAc;AAAA;AAAA,MAErB,OAAO,cAAc;AAAA;AAAA;AAG3B,SAAS,WAAW,CAAC,OAAO;AAAA,EAC1B,IAAI,SAAS,MAAM;AAAA,IACjB,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,QAAQ,MAAM,YAAY;AAAA,SACnB;AAAA,MACH,OAAO,OAAO;AAAA,SACX;AAAA,MACH,OAAO,OAAO;AAAA,SACX;AAAA,MACH,OAAO,OAAO;AAAA;AAAA,MAEd,OAAO,OAAO;AAAA;AAAA;AAGpB,SAAS,YAAY,CAAC,OAAO;AAAA,EAC3B,IAAI,SAAS,MAAM;AAAA,IACjB,OAAO,QAAQ;AAAA,EACjB;AAAA,EACA,QAAQ,MAAM,YAAY;AAAA,SACnB;AAAA,MACH,OAAO,QAAQ;AAAA,SACZ;AAAA,MACH,OAAO,QAAQ;AAAA,SACZ;AAAA,MACH,OAAO,QAAQ;AAAA,SACZ;AAAA,MACH,OAAO,QAAQ;AAAA,SACZ;AAAA,MACH,OAAO,QAAQ;AAAA,SACZ;AAAA,MACH,OAAO,QAAQ;AAAA;AAAA,MAEf,OAAO,QAAQ;AAAA;AAAA;AAGrB,SAAS,aAAa,CAAC,OAAO;AAAA,EAC5B,IAAI,SAAS,MAAM;AAAA,IACjB,OAAO,SAAS;AAAA,EAClB;AAAA,EACA,QAAQ,MAAM,YAAY;AAAA,SACnB;AAAA,MACH,OAAO,SAAS;AAAA,SACb;AAAA,MACH,OAAO,SAAS;AAAA,SACb;AAAA,MACH,OAAO,SAAS;AAAA,SACb;AAAA,MACH,OAAO,SAAS;AAAA,SACb;AAAA,MACH,OAAO,SAAS;AAAA,SACb;AAAA,MACH,OAAO,SAAS;AAAA;AAAA,MAEhB,OAAO,SAAS;AAAA;AAAA;AAGtB,SAAS,gBAAgB,CAAC,OAAO;AAAA,EAC/B,IAAI,SAAS,MAAM;AAAA,IACjB,OAAO,YAAY;AAAA,EACrB;AAAA,EACA,QAAQ,MAAM,YAAY;AAAA,SACnB;AAAA,MACH,OAAO,YAAY;AAAA,SAChB;AAAA,MACH,OAAO,YAAY;AAAA,SAChB;AAAA,MACH,OAAO,YAAY;AAAA;AAAA,MAEnB,OAAO,YAAY;AAAA;AAAA;AAGzB,SAAS,aAAa,CAAC,OAAO;AAAA,EAC5B,IAAI,SAAS,MAAM;AAAA,IACjB,OAAO,SAAS;AAAA,EAClB;AAAA,EACA,QAAQ,MAAM,YAAY;AAAA,SACnB;AAAA,MACH,OAAO,SAAS;AAAA,SACb;AAAA,MACH,OAAO,SAAS;AAAA,SACb;AAAA,MACH,OAAO,SAAS;AAAA;AAAA,MAEhB,OAAO,SAAS;AAAA;AAAA;AAGtB,SAAS,iBAAiB,CAAC,OAAO;AAAA,EAChC,IAAI,SAAS,MAAM;AAAA,IACjB,OAAO,aAAa;AAAA,EACtB;AAAA,EACA,QAAQ,MAAM,YAAY;AAAA,SACnB;AAAA,MACH,OAAO,aAAa;AAAA,SACjB;AAAA,MACH,OAAO,aAAa;AAAA,SACjB;AAAA,MACH,OAAO,aAAa;AAAA;AAAA,MAEpB,OAAO,aAAa;AAAA;AAAA;AAG1B,SAAS,SAAS,CAAC,OAAO;AAAA,EACxB,IAAI,SAAS,MAAM;AAAA,IACjB,OAAO,KAAK;AAAA,EACd;AAAA,EACA,QAAQ,MAAM,YAAY;AAAA,SACnB;AAAA,MACH,OAAO,KAAK;AAAA,SACT;AAAA,MACH,OAAO,KAAK;AAAA,SACT;AAAA,MACH,OAAO,KAAK;AAAA,SACT;AAAA,MACH,OAAO,KAAK;AAAA;AAAA,MAEZ,OAAO,KAAK;AAAA;AAAA;AAGlB,SAAS,SAAS,CAAC,OAAO;AAAA,EACxB,IAAI,SAAS,MAAM;AAAA,IACjB,OAAO,KAAK;AAAA,EACd;AAAA,EACA,QAAQ,MAAM,YAAY;AAAA,SACnB;AAAA,MACH,OAAO,KAAK;AAAA,SACT;AAAA,MACH,OAAO,KAAK;AAAA,SACT;AAAA,MACH,OAAO,KAAK;AAAA;AAAA,MAEZ,OAAO,KAAK;AAAA;AAAA;AAAA;AAKlB,MAAM,YAAY;AAAA,EAChB,sBAAsB,IAAI;AAAA,SACnB,oBAAoB;AAAA,IACzB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,KAAK,GAAG;AAAA,IACN,KAAK,oBAAoB,MAAM;AAAA;AAAA,EAEjC,WAAW,CAAC,MAAM;AAAA,IAChB,OAAO,KAAK,SAAS;AAAA;AAAA,EAEvB,eAAe,CAAC,MAAM;AAAA,IACpB,MAAM,MAAM,KAAK,YAAY,IAAI;AAAA,IACjC,MAAM,SAAS,KAAK,qBAAqB,KAAK,CAAC;AAAA,IAC/C,OAAO,QAAQ,SAAS;AAAA;AAAA,EAE1B,mBAAmB,CAAC,MAAM;AAAA,IACxB,MAAM,MAAM,KAAK,YAAY,IAAI;AAAA,IACjC,MAAM,SAAS,CAAC;AAAA,IAChB,IAAI,SAAS;AAAA,IACb,OAAO,SAAS,IAAI,QAAQ;AAAA,MAC1B,MAAM,SAAS,KAAK,qBAAqB,KAAK,MAAM;AAAA,MACpD,IAAI,CAAC,QAAQ;AAAA,QACX;AAAA,MACF;AAAA,MACA,OAAO,KAAK,OAAO,KAAK;AAAA,MACxB,UAAU,OAAO;AAAA,IACnB;AAAA,IACA,OAAO;AAAA;AAAA,EAET,oBAAoB,CAAC,KAAK,QAAQ;AAAA,IAChC,IAAI,CAAC,IAAI,WAAW,SAAS,MAAM;AAAA,MACjC,OAAO;AAAA,IACT,MAAM,aAAa,IAAI,SAAS;AAAA,IAChC,IAAI,eAAe,KAAK;AAAA,MACtB,OAAO,KAAK,iBAAiB,KAAK,MAAM;AAAA,IAC1C;AAAA,IACA,IAAI,eAAe,KAAK;AAAA,MACtB,OAAO,KAAK,mBAAmB,KAAK,MAAM;AAAA,IAC5C;AAAA,IACA,OAAO;AAAA;AAAA,EAET,gBAAgB,CAAC,KAAK,QAAQ;AAAA,IAC5B,IAAI,QAAQ,SAAS;AAAA,IACrB,MAAM,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,IACvB,IAAI,OAAO;AAAA,IACX,IAAI,WAAW;AAAA,IACf,OAAO,QAAQ,IAAI,QAAQ;AAAA,MACzB,MAAM,OAAO,IAAI;AAAA,MACjB,MAAM,WAAW,IAAI,WAAW,KAAK;AAAA,MACrC,IAAI,YAAY,MAAM,YAAY,IAAI;AAAA,QACpC,WAAW;AAAA,QACX,OAAO,QAAQ,OAAO,QAAQ,MAAM,WAAW;AAAA,QAC/C;AAAA,QACA;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,aACD,KAAK;AAAA,UACR,IAAI,CAAC,YAAY,QAAQ;AAAA,YACvB,OAAO;AAAA,UACT;AAAA,UACA,WAAW;AAAA,UACX;AAAA,UACA;AAAA,QACF;AAAA,aACK;AAAA,aACA,KAAK;AAAA,UACR,IAAI,CAAC,YAAY,SAAS;AAAA,YACxB,OAAO;AAAA,UACT,OAAO;AAAA,YACL,OAAO,KAAK,eAAe,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,IAAI;AAAA,YAChE,UAAU,QAAQ,SAAS;AAAA,UAC7B;AAAA,QACF;AAAA;AAAA,UAEE,OAAO;AAAA;AAAA,IAEb;AAAA,IACA,OAAO;AAAA;AAAA,EAET,kBAAkB,CAAC,KAAK,QAAQ;AAAA,IAC9B,IAAI,SAAS,IAAI,IAAI;AAAA,MACnB,OAAO;AAAA,IACT,MAAM,aAAa,IAAI,WAAW,SAAS,CAAC,IAAI;AAAA,IAChD,MAAM,IAAI,IAAI,WAAW,SAAS,CAAC,IAAI;AAAA,IACvC,MAAM,IAAI,IAAI,WAAW,SAAS,CAAC,IAAI;AAAA,IACvC,OAAO;AAAA,MACL,OAAO,KAAK,iBAAiB,YAAY,GAAG,CAAC;AAAA,MAC7C,UAAU;AAAA,IACZ;AAAA;AAAA,EAEF,cAAc,CAAC,eAAe,OAAO,OAAO,cAAc;AAAA,IACxD,MAAM,SAAS,gBAAgB;AAAA,IAC/B,MAAM,YAAY,gBAAgB,QAAQ;AAAA,IAC1C,MAAM,kBAAkB,CAAC,WAAW,YAAY,YAAY,kBAAkB;AAAA,IAC9E,MAAM,YAAY,gBAAgB,QAAQ;AAAA,IAC1C,MAAM,YAAY;AAAA,MAChB,QAAQ,gBAAgB,OAAO;AAAA,MAC/B,MAAM,gBAAgB,OAAO;AAAA,MAC7B,OAAO,gBAAgB,QAAQ;AAAA,IACjC;AAAA,IACA,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI,YAAY,iBAAiB,KAAK;AAAA,MACpC,OAAO;AAAA,MACP,aAAa;AAAA,QACX,WAAW;AAAA,QACX,OAAO;AAAA,MACT;AAAA,IACF,EAAO,SAAI,UAAU;AAAA,MACnB,MAAM,aAAa,KAAK,oBAAoB,OAAO;AAAA,MACnD,IAAI,WAAW,GAAG;AAAA,QAChB,OAAO;AAAA,MACT,EAAO,SAAI,YAAY;AAAA,QACrB,OAAO;AAAA,MACT,EAAO;AAAA,QACL,OAAO;AAAA;AAAA,IAEX,EAAO;AAAA,MACL,OAAO,iBAAiB,MAAM,SAAS;AAAA,MACvC,IAAI,SAAS,UAAU,WAAW,GAAG;AAAA,QACnC,KAAK,oBAAoB,IAAI,MAAM;AAAA,MACrC,EAAO,SAAI,SAAS,MAAM;AAAA,QACxB,KAAK,oBAAoB,MAAM;AAAA,MACjC;AAAA;AAAA,IAEF,OAAO;AAAA,MACL;AAAA,MACA,QAAQ,WAAW,IAAI,IAAI;AAAA,MAC3B,GAAG,QAAQ;AAAA,MACX,GAAG,QAAQ;AAAA,MACX;AAAA,MACA,QAAQ;AAAA,IACV;AAAA;AAAA,EAEF,gBAAgB,CAAC,YAAY,GAAG,GAAG;AAAA,IACjC,MAAM,SAAS,aAAa;AAAA,IAC5B,MAAM,YAAY,aAAa,QAAQ;AAAA,IACvC,MAAM,YAAY,aAAa,QAAQ;AAAA,IACvC,MAAM,kBAAkB,CAAC,WAAW,YAAY,YAAY,kBAAkB;AAAA,IAC9E,MAAM,YAAY;AAAA,MAChB,QAAQ,aAAa,OAAO;AAAA,MAC5B,MAAM,aAAa,OAAO;AAAA,MAC1B,OAAO,aAAa,QAAQ;AAAA,IAC9B;AAAA,IACA,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI,UAAU;AAAA,MACZ,OAAO;AAAA,MACP,eAAe;AAAA,MACf,aAAa;AAAA,QACX,WAAW;AAAA,QACX,OAAO;AAAA,MACT;AAAA,IACF,EAAO,SAAI,UAAU;AAAA,MACnB,OAAO;AAAA,MACP,eAAe,WAAW,IAAI,KAAK;AAAA,IACrC,EAAO;AAAA,MACL,OAAO,WAAW,IAAI,OAAO;AAAA,MAC7B,eAAe,WAAW,IAAI,IAAI;AAAA;AAAA,IAEpC,OAAO;AAAA,MACL;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,IACV;AAAA;AAEJ;AAAA;AAGA,MAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,CAAC,YAAY,WAAW,WAAW;AAAA,IAC5C,KAAK,aAAa;AAAA,IAClB,KAAK,YAAY,YAAY,KAAK,WAAW;AAAA,IAC7C,KAAK,YAAY,YAAY,KAAK,WAAW;AAAA;AAAA,MAE3C,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,WAAW,IAAI,KAAK;AAAA;AAAA,MAE9B,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,WAAW,IAAI,KAAK;AAAA;AAEpC;AAAA;AAEA,MAAM,UAAU;AAAA,EACd;AAAA,EACA;AAAA,EACA,uBAAuB,CAAC;AAAA,EACxB,sBAAsB,CAAC;AAAA,EACvB,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,WAAW;AAAA,EACX,WAAW,CAAC,kBAAkB,QAAQ,OAAO;AAAA,IAC3C,KAAK,UAAU,IAAI,gBAAgB,kBAAkB,OAAO,GAAG,OAAO,CAAC;AAAA,IACvE,KAAK,SAAS,KAAK,MAAM;AAAA;AAAA,MAEvB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,OAAO,CAAC,OAAO;AAAA,IACjB,KAAK,WAAW;AAAA;AAAA,MAEd,MAAM,GAAG;AAAA,IACX,OAAO,EAAE,GAAG,KAAK,QAAQ,GAAG,GAAG,KAAK,QAAQ,EAAE;AAAA;AAAA,MAE5C,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,KAAK,OAAO;AAAA;AAAA,MAEtB,KAAK,CAAC,OAAO;AAAA,IACf,KAAK,SAAS,KAAK,MAAM;AAAA;AAAA,MAEvB,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,QAAQ,CAAC,OAAO;AAAA,IAClB,KAAK,YAAY;AAAA;AAAA,MAEf,UAAU,GAAG;AAAA,IACf,OAAO,KAAK;AAAA;AAAA,MAEV,UAAU,CAAC,OAAO;AAAA,IACpB,KAAK,cAAc;AAAA;AAAA,MAEjB,MAAM,GAAG;AAAA,IACX,MAAM,OAAO,KAAK,IAAI,KAAK,QAAQ,GAAG,KAAK,OAAO,CAAC;AAAA,IACnD,MAAM,OAAO,KAAK,IAAI,KAAK,QAAQ,GAAG,KAAK,OAAO,CAAC;AAAA,IACnD,MAAM,OAAO,KAAK,IAAI,KAAK,QAAQ,GAAG,KAAK,OAAO,CAAC;AAAA,IACnD,MAAM,OAAO,KAAK,IAAI,KAAK,QAAQ,GAAG,KAAK,OAAO,CAAC;AAAA,IACnD,MAAM,QAAQ,OAAO,OAAO;AAAA,IAC5B,MAAM,SAAS,OAAO,OAAO;AAAA,IAC7B,OAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,MACH;AAAA,MACA;AAAA,IACF;AAAA;AAAA,EAEF,yBAAyB,CAAC,qBAAqB;AAAA,IAC7C,KAAK,uBAAuB;AAAA;AAAA,MAE1B,mBAAmB,GAAG;AAAA,IACxB,OAAO,KAAK;AAAA;AAAA,EAEd,wBAAwB,CAAC,oBAAoB;AAAA,IAC3C,KAAK,sBAAsB;AAAA;AAAA,MAEzB,kBAAkB,GAAG;AAAA,IACvB,OAAO,KAAK;AAAA;AAAA,EAEd,eAAe,GAAG;AAAA,IAChB,MAAM,gBAAgB,KAAK,qBAAqB,KAAK,CAAC,GAAG,MAAM;AAAA,MAC7D,MAAM,KAAK,EAAE;AAAA,MACb,MAAM,KAAK,EAAE;AAAA,MACb,IAAI,OAAO,IAAI;AAAA,QACb,OAAO,KAAK;AAAA,MACd;AAAA,MACA,OAAO,EAAE,IAAI,EAAE;AAAA,KAChB,EAAE,OAAO,CAAC,eAAe,CAAC,WAAW,WAAW,EAAE,IAAI,CAAC,eAAe,WAAW,gBAAgB,CAAC,EAAE,OAAO,CAAC,SAAS,IAAI;AAAA,IAC1H,OAAO,cAAc,KAAK;AAAA,CAC7B;AAAA;AAED;AACA,SAAS,6BAA6B,CAAC,iBAAiB,QAAQ,QAAQ;AAAA,EACtE,IAAI,CAAC,iBAAiB,UAAU;AAAA,IAC9B,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA,IACL,SAAS,gBAAgB,OAAO,IAAI;AAAA,IACpC,SAAS,gBAAgB,OAAO,IAAI;AAAA,IACpC,QAAQ,gBAAgB,MAAM,IAAI;AAAA,IAClC,QAAQ,gBAAgB,MAAM,IAAI;AAAA,IAClC,UAAU;AAAA,EACZ;AAAA;AAAA;AAGF,MAAM,yBAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,WAAW,CAAC,SAAS,SAAS;AAAA,IAC5B,KAAK,UAAU;AAAA,IACf,KAAK,UAAU;AAAA;AAAA,EAEjB,YAAY,GAAG;AAAA,IACb,OAAO,KAAK,mBAAmB;AAAA;AAAA,EAEjC,YAAY,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,EAEd,oBAAoB,CAAC,QAAQ,QAAQ,OAAO,QAAQ;AAAA,IAClD,IAAI,SAAS,KAAK,UAAU,SAAS,SAAS,KAAK,UAAU,QAAQ;AAAA,MACnE,OAAO;AAAA,IACT;AAAA,IACA,MAAM,OAAO,KAAK,QAAQ;AAAA,IAC1B,MAAM,OAAO,KAAK,QAAQ;AAAA,IAC1B,MAAM,YAAY,2BAA2B,QAAQ,MAAM,IAAI;AAAA,IAC/D,OAAO,aAAa,KAAK,aAAa,KAAK;AAAA;AAAA,EAE7C,uBAAuB,CAAC,gBAAgB,OAAO,QAAQ;AAAA,IACrD,MAAM,oBAAoB,KAAK;AAAA,IAC/B,IAAI,CAAC,gBAAgB,UAAU;AAAA,MAC7B,KAAK,iBAAiB;AAAA,MACtB,OAAO,sBAAsB;AAAA,IAC/B;AAAA,IACA,MAAM,OAAO,KAAK,QAAQ;AAAA,IAC1B,MAAM,OAAO,KAAK,QAAQ;AAAA,IAC1B,MAAM,WAAW,EAAE,GAAG,eAAe,SAAS,GAAG,eAAe,QAAQ;AAAA,IACxE,MAAM,SAAS,EAAE,GAAG,eAAe,QAAQ,GAAG,eAAe,OAAO;AAAA,IACpE,IAAI,SAAS,IAAI,SAAS,KAAK,IAAI,OAAO,GAAG;AAAA,MAC3C,KAAK,iBAAiB;AAAA,MACtB,OAAO,sBAAsB;AAAA,IAC/B;AAAA,IACA,IAAI,iBAAiB;AAAA,IACrB,IAAI,eAAe,KAAK;AAAA,IACxB,IAAI,SAAS,IAAI,SAAS,GAAG;AAAA,MAC3B,KAAK,iBAAiB;AAAA,MACtB,OAAO,sBAAsB;AAAA,IAC/B,EAAO,SAAI,SAAS,KAAK,KAAK,SAAS,KAAK,SAAS,GAAG;AAAA,MACtD,IAAI,SAAS,IAAI,GAAG;AAAA,QAClB,iBAAiB,2BAA2B,SAAS,GAAG,MAAM,IAAI;AAAA,MACpE;AAAA,IACF;AAAA,IACA,IAAI,OAAO,IAAI,GAAG;AAAA,MAChB,KAAK,iBAAiB;AAAA,MACtB,OAAO,sBAAsB;AAAA,IAC/B,EAAO,SAAI,OAAO,KAAK,KAAK,OAAO,KAAK,SAAS,GAAG;AAAA,MAClD,IAAI,OAAO,KAAK,GAAG;AAAA,QACjB,eAAe,2BAA2B,OAAO,GAAG,MAAM,IAAI;AAAA,MAChE,EAAO;AAAA,QACL,eAAe;AAAA;AAAA,IAEnB;AAAA,IACA,IAAI,iBAAiB,gBAAgB,kBAAkB,KAAK,gBAAgB,KAAK,QAAQ;AAAA,MACvF,KAAK,iBAAiB,EAAE,OAAO,gBAAgB,KAAK,aAAa;AAAA,IACnE,EAAO;AAAA,MACL,KAAK,iBAAiB;AAAA;AAAA,IAExB,OAAO,mBAAmB,UAAU,KAAK,gBAAgB,SAAS,mBAAmB,QAAQ,KAAK,gBAAgB;AAAA;AAEtH;AAGA,IAAI,uBAAuB,OAAO,IAAI,yBAAyB;AAC/D,SAAS,SAAS,CAAC,KAAK,SAAS;AAAA,EAC/B,MAAM,MAAM,WAAW,0BAA0B,CAAC;AAAA,EAClD,IAAI,EAAE,OAAO,MAAM;AAAA,IACjB,IAAI,OAAO,QAAQ;AAAA,EACrB;AAAA,EACA,OAAO,IAAI;AAAA;AAEb,SAAS,gBAAgB,CAAC,KAAK;AAAA,EAC7B,MAAM,MAAM,WAAW;AAAA,EACvB,IAAI,OAAO,OAAO,KAAK;AAAA,IACrB,OAAO,IAAI;AAAA,EACb;AAAA;AAEF,SAAS,YAAY,CAAC,KAAK;AAAA,EACzB,MAAM,MAAM,WAAW;AAAA,EACvB,OAAO,OAAO,OAAO;AAAA;AAIvB,IAAI,cAAc,UAAU,gBAAgB,OAAO,CAAC,EAAE;AACtD,SAAS,cAAc,CAAC,QAAQ;AAAA,EAC9B,MAAM,WAAW,YAAY,OAAO;AAAA,EACpC,IAAI,UAAU;AAAA,IACZ,IAAI,SAAS,gBAAgB,OAAO,eAAe,SAAS,SAAS,OAAO,QAAQ,SAAS,YAAY,OAAO,SAAS;AAAA,MACvH,MAAM,IAAI,MAAM,yBAAyB,OAAO,+DAA+D,aAAa,KAAK,UAAU,QAAQ,WAAW,KAAK,UAAU,MAAM,GAAG;AAAA,IACxL;AAAA,IACA;AAAA,EACF;AAAA,EACA,YAAY,OAAO,QAAQ;AAAA;AAE7B,SAAS,gBAAgB,CAAC,OAAO;AAAA,EAC/B,MAAM,aAAa,MAAM,YAAY;AAAA,EACrC,OAAO,CAAC,QAAQ,KAAK,MAAM,KAAK,EAAE,SAAS,UAAU;AAAA;AAEvD,SAAS,aAAa,CAAC,QAAQ;AAAA,EAC7B,MAAM,WAAW,QAAQ,IAAI,OAAO;AAAA,EACpC,IAAI,aAAa,aAAa,OAAO,YAAY,WAAW;AAAA,IAC1D,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,IAAI,aAAa,WAAW;AAAA,IAC1B,MAAM,IAAI,MAAM,iCAAiC,OAAO,oBAAoB,OAAO,aAAa;AAAA,EAClG;AAAA,EACA,QAAQ,OAAO;AAAA,SACR;AAAA,MACH,OAAO,OAAO,aAAa,YAAY,WAAW,iBAAiB,QAAQ;AAAA,SACxE;AAAA,MACH,MAAM,WAAW,OAAO,QAAQ;AAAA,MAChC,IAAI,MAAM,QAAQ,GAAG;AAAA,QACnB,MAAM,IAAI,MAAM,wBAAwB,OAAO,qCAAqC,UAAU;AAAA,MAChG;AAAA,MACA,OAAO;AAAA,SACJ;AAAA;AAAA,MAEH,OAAO;AAAA;AAAA;AAAA;AAIb,MAAM,SAAS;AAAA,EACb,eAAe,IAAI;AAAA,EACnB,GAAG,CAAC,KAAK;AAAA,IACP,IAAI,KAAK,aAAa,IAAI,GAAG,GAAG;AAAA,MAC9B,OAAO,KAAK,aAAa,IAAI,GAAG;AAAA,IAClC;AAAA,IACA,IAAI,EAAE,OAAO,cAAc;AAAA,MACzB,MAAM,IAAI,MAAM,wBAAwB,wBAAwB;AAAA,IAClE;AAAA,IACA,IAAI;AAAA,MACF,MAAM,QAAQ,cAAc,YAAY,IAAI;AAAA,MAC5C,KAAK,aAAa,IAAI,KAAK,KAAK;AAAA,MAChC,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,MAAM,IAAI,MAAM,2BAA2B,QAAQ,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAAG;AAAA;AAAA;AAAA,EAG/G,GAAG,CAAC,KAAK;AAAA,IACP,OAAO,OAAO;AAAA;AAAA,EAEhB,UAAU,GAAG;AAAA,IACX,KAAK,aAAa,MAAM;AAAA;AAE5B;AACA,IAAI,WAAW,UAAU,aAAa,MAAM,IAAI,QAAQ;AACxD,SAAS,aAAa,GAAG;AAAA,EACvB,SAAS,WAAW;AAAA;AAEtB,SAAS,mBAAmB,GAAG;AAAA,EAC7B,MAAM,UAAU,OAAO,OAAO,WAAW;AAAA,EACzC,IAAI,QAAQ,WAAW,GAAG;AAAA,IACxB,OAAO;AAAA;AAAA;AAAA;AAAA,EAIT;AAAA,EACA,IAAI,WAAW;AAAA;AAAA;AAAA,EAGf,WAAW,UAAU,SAAS;AAAA,IAC5B,YAAY,MAAM,OAAO;AAAA;AAAA;AAAA,IAGzB,YAAY,GAAG,OAAO;AAAA;AAAA;AAAA,IAGtB,YAAY,eAAe,OAAO,QAAQ;AAAA;AAAA,IAE1C,IAAI,OAAO,YAAY,WAAW;AAAA,MAChC,MAAM,eAAe,OAAO,OAAO,YAAY,WAAW,IAAI,OAAO,aAAa,OAAO,OAAO,OAAO;AAAA,MACvG,YAAY,kBAAkB;AAAA;AAAA,IAEhC,EAAO;AAAA,MACL,YAAY;AAAA;AAAA;AAAA,IAGd,YAAY;AAAA;AAAA,EAEd;AAAA,EACA,OAAO;AAAA;AAET,SAAS,kBAAkB,GAAG;AAAA,EAC5B,MAAM,UAAU,OAAO,OAAO,WAAW;AAAA,EACzC,IAAI,QAAQ,WAAW,GAAG;AAAA,IACxB,OAAO;AAAA;AAAA;AAAA;AAAA,EAIT;AAAA,EACA,IAAI,SAAS;AAAA;AAAA;AAAA,EAGb,WAAW,UAAU,SAAS;AAAA,IAC5B,UAAU,aAAa,OAAO;AAAA;AAAA,IAE9B,UAAU,GAAG,OAAO;AAAA;AAAA,IAEpB,UAAU,gCAAgC,OAAO,QAAQ;AAAA;AAAA,IAEzD,IAAI,OAAO,YAAY,WAAW;AAAA,MAChC,MAAM,eAAe,OAAO,OAAO,YAAY,WAAW,IAAI,OAAO,aAAa,OAAO,OAAO,OAAO;AAAA,MACvG,UAAU,mCAAmC;AAAA;AAAA,IAE/C,EAAO;AAAA,MACL,UAAU;AAAA;AAAA;AAAA,IAGZ,UAAU;AAAA;AAAA,EAEZ;AAAA,EACA,OAAO;AAAA;AAET,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG;AAAA,EACtB,GAAG,CAAC,QAAQ,MAAM;AAAA,IAChB,IAAI,OAAO,SAAS,UAAU;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,OAAO,SAAS,IAAI,IAAI;AAAA;AAAA,EAE1B,GAAG,CAAC,QAAQ,MAAM;AAAA,IAChB,OAAO,SAAS,IAAI,IAAI;AAAA;AAAA,EAE1B,OAAO,GAAG;AAAA,IACR,OAAO,OAAO,KAAK,WAAW;AAAA;AAAA,EAEhC,wBAAwB,CAAC,QAAQ,MAAM;AAAA,IACrC,IAAI,SAAS,IAAI,IAAI,GAAG;AAAA,MACtB,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,KAAK,MAAM,SAAS,IAAI,IAAI;AAAA,MAC9B;AAAA,IACF;AAAA,IACA;AAAA;AAEJ,CAAC;AAGD,eAAe,EAAE,MAAM,sBAAsB,SAAS,OAAO,aAAa,4CAA4C,CAAC;AACvH,SAAS,cAAc,CAAC,OAAO;AAAA,EAC7B,OAAO,MAAM,MAAM,GAAG,EAAE;AAAA;AAE1B,SAAS,yBAAyB,CAAC,OAAO,MAAM;AAAA,EAC9C,IAAI,MAAM,aAAa;AAAA,IACrB,OAAO;AAAA,EACT;AAAA,EACA,OAAO,UAAU;AAAA;AAEnB,SAAS,sBAAsB,CAAC,SAAS,YAAY,aAAa,SAAS;AAAA,EACzE,MAAM,SAAS,CAAC;AAAA,EAChB,MAAM,eAAe,YAAY,SAAS,SAAS;AAAA,EACnD,MAAM,iBAAiB,SAAS,WAAW;AAAA,EAC3C,MAAM,2BAA2B,CAAC;AAAA,EAClC,MAAM,aAAa,CAAC;AAAA,EACpB,SAAS,IAAI,EAAE,IAAI,WAAW,QAAQ,KAAK;AAAA,IACzC,OAAO,OAAO,OAAO,QAAQ,WAAW;AAAA,IACxC,IAAI,UAAU;AAAA,MACZ;AAAA,IACF,IAAI,MAAM,mBAAmB;AAAA,MAC3B,yBAAyB,KAAK,EAAE,OAAO,IAAI,CAAC;AAAA,IAC9C;AAAA,IACA,WAAW,KAAK,EAAE,QAAQ,OAAO,MAAM,SAAS,gBAAgB,EAAE,CAAC;AAAA,IACnE,WAAW,KAAK,EAAE,QAAQ,KAAK,MAAM,OAAO,gBAAgB,EAAE,CAAC;AAAA,EACjE;AAAA,EACA,WAAW,KAAK,CAAC,GAAG,MAAM;AAAA,IACxB,IAAI,EAAE,WAAW,EAAE;AAAA,MACjB,OAAO,EAAE,SAAS,EAAE;AAAA,IACtB,IAAI,EAAE,SAAS,SAAS,EAAE,SAAS;AAAA,MACjC,OAAO;AAAA,IACT,IAAI,EAAE,SAAS,WAAW,EAAE,SAAS;AAAA,MACnC,OAAO;AAAA,IACT,OAAO;AAAA,GACR;AAAA,EACD,MAAM,mBAAmB,IAAI;AAAA,EAC7B,IAAI,gBAAgB;AAAA,EACpB,SAAS,IAAI,EAAE,IAAI,WAAW,QAAQ,KAAK;AAAA,IACzC,MAAM,WAAW,WAAW;AAAA,IAC5B,IAAI,gBAAgB,SAAS,UAAU,iBAAiB,OAAO,GAAG;AAAA,MAChE,MAAM,cAAc,QAAQ,MAAM,eAAe,SAAS,MAAM;AAAA,MAChE,MAAM,eAAe,CAAC;AAAA,MACtB,WAAW,OAAO,kBAAkB;AAAA,QAClC,WAAW,OAAO,QAAQ,WAAW;AAAA,QACrC,aAAa,KAAK,EAAE,OAAO,MAAM,OAAO,IAAI,CAAC;AAAA,MAC/C;AAAA,MACA,MAAM,mBAAmB,iBAAiB,aAAa,KAAK,CAAC,MAAM,EAAE,MAAM,YAAY,aAAa,EAAE,UAAU,aAAa,EAAE,MAAM,WAAW,UAAU,CAAC,IAAI;AAAA,MAC/J,IAAI,kBAAkB;AAAA,QACpB,IAAI,kBAAkB;AAAA,QACtB,IAAI,iBAAiB,MAAM,YAAY,WAAW;AAAA,UAChD,kBAAkB,iBAAiB,KAAK;AAAA,QAC1C,EAAO,SAAI,iBAAiB,UAAU,sBAAsB;AAAA,UAC1D,kBAAkB;AAAA,QACpB;AAAA,QACA,IAAI,iBAAiB;AAAA,UACnB,OAAO,KAAK;AAAA,YACV,WAAW;AAAA,YACX,MAAM;AAAA,YACN,IAAI,cAAc;AAAA,YAClB,IAAI,cAAc;AAAA,YAClB,YAAY,eAAe,qBAAqB;AAAA,cAC9C,MAAM,aAAa;AAAA,cACnB,QAAQ,aAAa;AAAA,cACrB,WAAW,aAAa;AAAA,cACxB,KAAK,aAAa;AAAA,YACpB,CAAC,IAAI;AAAA,UACP,CAAC;AAAA,QACH;AAAA,MACF,EAAO;AAAA,QACL,MAAM,2BAA2B,yBAAyB,KAAK,CAAC,UAAU,iBAAiB,MAAM,SAAS,gBAAgB,MAAM,GAAG;AAAA,QACnI,MAAM,cAAc,aAAa,OAAO,CAAC,MAAM;AAAA,UAC7C,IAAI,4BAA4B,0BAA0B,EAAE,OAAO,EAAE,IAAI,GAAG;AAAA,YAC1E,OAAO;AAAA,UACT;AAAA,UACA,OAAO;AAAA,SACR;AAAA,QACD,MAAM,eAAe,YAAY,KAAK,CAAC,GAAG,MAAM;AAAA,UAC9C,MAAM,QAAQ,eAAe,EAAE,KAAK;AAAA,UACpC,MAAM,QAAQ,eAAe,EAAE,KAAK;AAAA,UACpC,IAAI,UAAU;AAAA,YACZ,OAAO,QAAQ;AAAA,UACjB,OAAO,EAAE,QAAQ,EAAE;AAAA,SACpB;AAAA,QACD,MAAM,cAAc,CAAC;AAAA,QACrB,aAAa,WAAW,cAAc;AAAA,UACpC,IAAI,gBAAgB,YAAY,SAAS,KAAK;AAAA,UAC9C,IAAI,CAAC,iBAAiB,MAAM,SAAS,GAAG,GAAG;AAAA,YACzC,MAAM,WAAW,MAAM,MAAM,GAAG,EAAE;AAAA,YAClC,gBAAgB,YAAY,SAAS,QAAQ;AAAA,UAC/C;AAAA,UACA,IAAI,eAAe;AAAA,YACjB,IAAI,cAAc,OAAO;AAAA,cACvB,YAAY,KAAK,cAAc;AAAA,YACjC,IAAI,cAAc,OAAO;AAAA,cACvB,YAAY,KAAK,cAAc;AAAA,YACjC,IAAI,cAAc,SAAS;AAAA,cACzB,YAAY,OAAO,cAAc;AAAA,YACnC,IAAI,cAAc,WAAW;AAAA,cAC3B,YAAY,SAAS,cAAc;AAAA,YACrC,IAAI,cAAc,cAAc;AAAA,cAC9B,YAAY,YAAY,cAAc;AAAA,YACxC,IAAI,cAAc,QAAQ;AAAA,cACxB,YAAY,MAAM,cAAc;AAAA,UACpC,EAAO;AAAA,YACL,IAAI,MAAM,SAAS,GAAG,GAAG;AAAA,cACvB,MAAM,WAAW,MAAM,MAAM,GAAG,EAAE;AAAA,cAClC,IAAI,IAAI,oBAAoB;AAAA,gBAC1B,QAAQ,KAAK,qCAAqC,yBAAyB,gCAAgC;AAAA,cAC7G;AAAA,YACF,EAAO;AAAA,cACL,IAAI,IAAI,oBAAoB;AAAA,gBAC1B,QAAQ,KAAK,qCAAqC,6BAA6B;AAAA,cACjF;AAAA;AAAA;AAAA,QAGN;AAAA,QACA,MAAM,aAAa,OAAO,KAAK,WAAW,EAAE,SAAS,IAAI,cAAc;AAAA,QACvE,OAAO,KAAK;AAAA,UACV,WAAW;AAAA,UACX,MAAM;AAAA,UACN,IAAI,YAAY;AAAA,UAChB,IAAI,YAAY;AAAA,UAChB,YAAY,aAAa,qBAAqB;AAAA,YAC5C,MAAM,WAAW;AAAA,YACjB,QAAQ,WAAW;AAAA,YACnB,WAAW,WAAW;AAAA,YACtB,KAAK,WAAW;AAAA,UAClB,CAAC,IAAI;AAAA,QACP,CAAC;AAAA;AAAA,IAEL,EAAO,SAAI,gBAAgB,SAAS,QAAQ;AAAA,MAC1C,MAAM,OAAO,QAAQ,MAAM,eAAe,SAAS,MAAM;AAAA,MACzD,OAAO,KAAK;AAAA,QACV,WAAW;AAAA,QACX;AAAA,QACA,IAAI,cAAc;AAAA,QAClB,IAAI,cAAc;AAAA,QAClB,YAAY,eAAe,qBAAqB;AAAA,UAC9C,MAAM,aAAa;AAAA,UACnB,QAAQ,aAAa;AAAA,UACrB,WAAW,aAAa;AAAA,UACxB,KAAK,aAAa;AAAA,QACpB,CAAC,IAAI;AAAA,MACP,CAAC;AAAA,IACH;AAAA,IACA,IAAI,SAAS,SAAS,SAAS;AAAA,MAC7B,iBAAiB,IAAI,SAAS,cAAc;AAAA,IAC9C,EAAO;AAAA,MACL,iBAAiB,OAAO,SAAS,cAAc;AAAA,MAC/C,IAAI,gBAAgB;AAAA,QAClB,WAAW,OAAO,QAAQ,WAAW,SAAS;AAAA,QAC9C,IAAI,MAAM,iBAAiB,WAAW;AAAA,UACpC,IAAI,SAAS,SAAS,QAAQ,UAAU,QAAQ,SAAS,YAAY;AAAA,GAC5E;AAAA,YACS,gBAAgB,SAAS,SAAS;AAAA,YAClC;AAAA,UACF;AAAA,QACF;AAAA,QACA,IAAI,MAAM,YAAY,WAAW;AAAA,UAC/B,IAAI,KAAK,YAAY,KAAK;AAAA,YACxB,IAAI,SAAS,SAAS,QAAQ,UAAU,QAAQ,SAAS,YAAY,KAAK;AAAA,cACxE,gBAAgB,SAAS,SAAS;AAAA,cAClC;AAAA,YACF;AAAA,UACF,EAAO,SAAI,KAAK,YAAY,MAAM,UAAU,aAAa,CAAC,KAAK,aAAa;AAAA,YAC1E,IAAI,SAAS,SAAS,QAAQ,UAAU,QAAQ,SAAS,YAAY,KAAK;AAAA,cACxE,gBAAgB,SAAS,SAAS;AAAA,cAClC;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA;AAAA,IAEF,gBAAgB,SAAS;AAAA,EAC3B;AAAA,EACA,IAAI,gBAAgB,QAAQ,QAAQ;AAAA,IAClC,MAAM,OAAO,QAAQ,MAAM,aAAa;AAAA,IACxC,OAAO,KAAK;AAAA,MACV,WAAW;AAAA,MACX;AAAA,MACA,IAAI,cAAc;AAAA,MAClB,IAAI,cAAc;AAAA,MAClB,YAAY,eAAe,qBAAqB;AAAA,QAC9C,MAAM,aAAa;AAAA,QACnB,QAAQ,aAAa;AAAA,QACrB,WAAW,aAAa;AAAA,QACxB,KAAK,aAAa;AAAA,MACpB,CAAC,IAAI;AAAA,IACP,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAET,eAAe,sBAAsB,CAAC,SAAS,UAAU,aAAa,QAAQ,SAAS;AAAA,EACrF,MAAM,SAAS,MAAM,OAAO,cAAc,SAAS,QAAQ;AAAA,EAC3D,IAAI,OAAO,cAAc,OAAO,WAAW,SAAS,GAAG;AAAA,IACrD,MAAM,SAAS,uBAAuB,SAAS,OAAO,YAAY,aAAa,SAAS,OAAO;AAAA,IAC/F,OAAO,IAAI,WAAW,MAAM;AAAA,EAC9B,EAAO;AAAA,IACL,MAAM,eAAe,YAAY,YAAY,SAAS;AAAA,IACtD,MAAM,SAAS;AAAA,MACb;AAAA,QACE,WAAW;AAAA,QACX,MAAM;AAAA,QACN,IAAI,aAAa;AAAA,QACjB,IAAI,aAAa;AAAA,QACjB,YAAY,aAAa;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,OAAO,IAAI,WAAW,MAAM;AAAA;AAAA;AAQhC,IAAI,aAAa,IAAI;AAAA;AAErB,MAAM,mBAAmB;AAAA,EACvB;AAAA,EACA,WAAW,CAAC,SAAS;AAAA,IACnB,KAAK,UAAU;AAAA,IACf,IAAI,CAAC,WAAW,IAAI,KAAK,OAAO,GAAG;AAAA,MACjC,WAAW,IAAI,KAAK,SAAS,IAAI,GAAG;AAAA,IACtC;AAAA;AAAA,EAEF,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IACnB,MAAM,WAAW,WAAW,IAAI,KAAK,OAAO;AAAA,IAC5C,OAAO,IAAI,QAAQ,CAAC,UAAS,WAAW;AAAA,MACtC,IAAI,SAAS,IAAI,EAAE,GAAG;AAAA,QACpB,aAAa,SAAS,IAAI,EAAE,CAAC;AAAA,MAC/B;AAAA,MACA,MAAM,UAAU,WAAW,MAAM;AAAA,QAC/B,IAAI;AAAA,UACF,SAAQ,GAAG,CAAC;AAAA,UACZ,OAAO,OAAO;AAAA,UACd,OAAO,KAAK;AAAA;AAAA,QAEd,SAAS,OAAO,EAAE;AAAA,SACjB,EAAE;AAAA,MACL,SAAS,IAAI,IAAI,OAAO;AAAA,KACzB;AAAA;AAAA,EAEH,aAAa,CAAC,IAAI;AAAA,IAChB,MAAM,WAAW,WAAW,IAAI,KAAK,OAAO;AAAA,IAC5C,IAAI,YAAY,SAAS,IAAI,EAAE,GAAG;AAAA,MAChC,aAAa,SAAS,IAAI,EAAE,CAAC;AAAA,MAC7B,SAAS,OAAO,EAAE;AAAA,IACpB;AAAA;AAAA,EAEF,KAAK,GAAG;AAAA,IACN,MAAM,WAAW,WAAW,IAAI,KAAK,OAAO;AAAA,IAC5C,IAAI,UAAU;AAAA,MACZ,SAAS,QAAQ,CAAC,YAAY,aAAa,OAAO,CAAC;AAAA,MACnD,SAAS,MAAM;AAAA,IACjB;AAAA;AAEJ;AACA,SAAS,cAAc,CAAC,SAAS;AAAA,EAC/B,OAAO,IAAI,mBAAmB,OAAO;AAAA;AAEvC,SAAS,kBAAkB,CAAC,SAAS;AAAA,EACnC,MAAM,WAAW,WAAW,IAAI,OAAO;AAAA,EACvC,IAAI,UAAU;AAAA,IACZ,SAAS,QAAQ,CAAC,YAAY,aAAa,OAAO,CAAC;AAAA,IACnD,SAAS,MAAM;AAAA,EACjB;AAAA;AAAA;AAIF,MAAM,aAAa;AAAA,EACjB;AAAA,EACA,QAAQ,CAAC;AAAA,EACT,aAAa;AAAA,EACb,cAAc;AAAA,EACd,WAAW,CAAC,WAAW,cAAc,MAAM;AAAA,IACzC,KAAK,YAAY;AAAA,IACjB,KAAK,cAAc;AAAA;AAAA,EAErB,OAAO,CAAC,MAAM;AAAA,IACZ,KAAK,MAAM,KAAK,IAAI;AAAA,IACpB,IAAI,CAAC,KAAK,cAAc,KAAK,aAAa;AAAA,MACxC,KAAK,aAAa;AAAA,IACpB;AAAA;AAAA,EAEF,YAAY,GAAG;AAAA,IACb,IAAI,KAAK,MAAM,WAAW,GAAG;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAAA,IAClB,eAAe,YAAY;AAAA,MACzB,IAAI,KAAK,MAAM,WAAW,GAAG;AAAA,QAC3B,KAAK,aAAa;AAAA,QAClB;AAAA,MACF;AAAA,MACA,MAAM,OAAO,KAAK,MAAM,MAAM;AAAA,MAC9B,IAAI;AAAA,QACF,MAAM,KAAK,UAAU,IAAI;AAAA,QACzB,OAAO,OAAO;AAAA,QACd,QAAQ,MAAM,gCAAgC,KAAK;AAAA;AAAA,MAErD,IAAI,KAAK,MAAM,SAAS,GAAG;AAAA,QACzB,KAAK,aAAa;AAAA,MACpB,EAAO;AAAA,QACL,KAAK,aAAa;AAAA;AAAA,KAErB;AAAA;AAAA,EAEH,KAAK,GAAG;AAAA,IACN,KAAK,QAAQ,CAAC;AAAA;AAAA,EAEhB,YAAY,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,EAEd,IAAI,GAAG;AAAA,IACL,OAAO,KAAK,MAAM;AAAA;AAEtB;AAgBA,IAAI;AACJ,SAAS,UAAU,GAAG;AAAA,EACpB,IAAI,CAAC,gBAAgB;AAAA,IACnB,iBAAiB;AAAA,MACf;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,UACP,YAAY,CAAC,QAAQ,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,kBAAqB,CAAC;AAAA,QACtF;AAAA,QACA,MAAM,QAAQ,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,8BAAmB;AAAA,MAC5E;AAAA,MACA;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,UACP,YAAY,CAAC,QAAQ,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,mBAAqB,CAAC;AAAA,QACtF;AAAA,QACA,MAAM,QAAQ,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,8BAAmB;AAAA,MAC5E;AAAA,MACA;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,UACP,YAAY,CAAC,QAAQ,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,mBAAmB,CAAC;AAAA,UAClF,YAAY,CAAC,QAAQ,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,kBAAmB,CAAC;AAAA,QACpF;AAAA,QACA,MAAM,QAAQ,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,4BAAiB;AAAA,QACxE,kBAAkB;AAAA,UAChB,WAAW;AAAA,YACT,QAAQ;AAAA,YACR,iBAAiB;AAAA,UACnB;AAAA,UACA,eAAe;AAAA,YACb,YAAY;AAAA,YACZ,IAAI;AAAA,YACJ,YAAY;AAAA,YACZ,IAAI;AAAA,YACJ,UAAU;AAAA,YACV,IAAI;AAAA,UACN;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,UACP,YAAY,CAAC,QAAQ,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,mBAA0B,CAAC;AAAA,QAC3F;AAAA,QACA,MAAM,QAAQ,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,mCAAwB;AAAA,MACjF;AAAA,MACA;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,UACP,YAAY,CAAC,QAAQ,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,mBAAc,CAAC;AAAA,QAC/E;AAAA,QACA,MAAM,QAAQ,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,uBAAY;AAAA,MACrE;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAST,SAAS,WAAW,CAAC,OAAM;AAAA,EACzB,OAAO,MAAK,SAAS,QAAQ,KAAK,gBAAgB,KAAK,KAAI;AAAA;AAE7D,SAAS,gBAAgB,GAAG;AAAA,EAC1B,OAAO,QAAQ,aAAa,UAAU,mBAAmB;AAAA;AAE3D,SAAS,kBAAkB,CAAC,UAAU;AAAA,EACpC,OAAO,KAAK,iBAAiB,GAAG,SAAS,QAAQ,CAAC;AAAA;AAIpD,eAAe;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AACD,IAAI,kBAAkB,WAAW;AACjC,SAAS,iBAAiB,CAAC,SAAS;AAAA,EAClC,WAAW,UAAU,SAAS;AAAA,IAC5B,MAAM,gBAAgB,gBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,OAAO,QAAQ;AAAA,IACrF,IAAI,iBAAiB,GAAG;AAAA,MACtB,gBAAgB,iBAAiB;AAAA,IACnC,EAAO;AAAA,MACL,gBAAgB,KAAK,MAAM;AAAA;AAAA,EAE/B;AAAA;AAEF,IAAI,QAAQ,CAAC,UAAS,MAAK,WAAW,SAAS,KAAK,MAAK,WAAW,UAAU;AAAA;AAE9E,MAAM,yBAAyB,cAAc;AAAA,EAC3C,cAAc;AAAA,EACd;AAAA,EACA,UAAU,IAAI;AAAA,EACd;AAAA,EACA;AAAA,EACA,mBAAmB,IAAI;AAAA,EACvB,mBAAmB;AAAA,EACnB,aAAa,IAAI;AAAA,EACjB;AAAA,EACA;AAAA,EACA,WAAW,CAAC,SAAS;AAAA,IACnB,MAAM;AAAA,IACN,KAAK,UAAU;AAAA,IACf,KAAK,YAAY,eAAe,oBAAoB;AAAA,IACpD,KAAK,YAAY;AAAA;AAAA,EAEnB,SAAS,CAAC,OAAO,UAAU;AAAA,IACzB,IAAI,KAAK,cAAc,OAAO,IAAI,GAAG;AAAA,MACnC,KAAK,KAAK,SAAS,OAAO,QAAQ;AAAA,IACpC;AAAA;AAAA,EAEF,WAAW,CAAC,SAAS,UAAU;AAAA,IAC7B,IAAI,KAAK,cAAc,SAAS,IAAI,GAAG;AAAA,MACrC,KAAK,KAAK,WAAW,SAAS,QAAQ;AAAA,IACxC;AAAA;AAAA,EAEF,WAAW,GAAG;AAAA,IACZ,IAAI,KAAK,QAAQ;AAAA,MACf;AAAA,IACF;AAAA,IACA,IAAI;AAAA,IACJ,IAAI,IAAI,8BAA8B;AAAA,MACpC,cAAc,IAAI;AAAA,IACpB,EAAO,SAAI,OAAO,iCAAiC,aAAa;AAAA,MAC9D,cAAc;AAAA,IAChB,EAAO,SAAI,KAAK,QAAQ,YAAY;AAAA,MAClC,cAAc,KAAK,QAAQ;AAAA,IAC7B,EAAO;AAAA,MACL,cAAc,IAAI,IAAI,sBAAsB,YAAY,GAAG,EAAE;AAAA,MAC7D,IAAI,CAAC,WAAW,SAAS,YAAY,SAAS,kBAAkB,CAAC,GAAG;AAAA,QAClE,cAAc,IAAI,IAAI,sBAAsB,YAAY,GAAG,EAAE;AAAA,MAC/D;AAAA;AAAA,IAEF,KAAK,SAAS,IAAI,OAAO,WAAW;AAAA,IACpC,KAAK,OAAO,YAAY,KAAK,oBAAoB,KAAK,IAAI;AAAA,IAC1D,KAAK,OAAO,UAAU,CAAC,UAAU;AAAA,MAC/B,QAAQ,MAAM,4BAA4B,MAAM,OAAO;AAAA,MACvD,IAAI,KAAK,qBAAqB;AAAA,QAC5B,aAAa,KAAK,oBAAoB,SAAS;AAAA,QAC/C,KAAK,oBAAoB,OAAO,IAAI,MAAM,iBAAiB,MAAM,SAAS,CAAC;AAAA,QAC3E,KAAK,sBAAsB;AAAA,MAC7B;AAAA,MACA,KAAK,UAAU,iBAAiB,MAAM,SAAS;AAAA;AAAA;AAAA,EAGnD,UAAU,GAAG;AAAA,IACX,IAAI,CAAC,KAAK,QAAQ;AAAA,MAChB;AAAA,IACF;AAAA,IACA,KAAK,OAAO,UAAU;AAAA,IACtB,KAAK,SAAS;AAAA;AAAA,EAEhB,WAAW,GAAG;AAAA,IACZ,KAAK,QAAQ,MAAM;AAAA,IACnB,KAAK,WAAW;AAAA,IAChB,KAAK,YAAY;AAAA,IACjB,KAAK,oBAAoB;AAAA,IACzB,KAAK,sBAAsB;AAAA,IAC3B,OAAO,KAAK,WAAW;AAAA;AAAA,OAEnB,WAAU,GAAG;AAAA,IACjB,IAAI,KAAK,mBAAmB;AAAA,MAC1B,OAAO,KAAK;AAAA,IACd;AAAA,IACA,KAAK,oBAAoB,IAAI,QAAQ,CAAC,WAAU,WAAW;AAAA,MACzD,MAAM,YAAY,KAAK,QAAQ,eAAe;AAAA,MAC9C,MAAM,YAAY,WAAW,MAAM;AAAA,QACjC,MAAM,QAAQ,IAAI,MAAM,iCAAiC;AAAA,QACzD,QAAQ,MAAM,sBAAsB,MAAM,OAAO;AAAA,QACjD,KAAK,sBAAsB;AAAA,QAC3B,OAAO,KAAK;AAAA,SACX,SAAS;AAAA,MACZ,KAAK,sBAAsB,EAAE,SAAS,WAAU,QAAQ,UAAU;AAAA,MAClE,KAAK,QAAQ,YAAY;AAAA,QACvB,MAAM;AAAA,QACN,UAAU,KAAK,QAAQ;AAAA,MACzB,CAAC;AAAA,KACF;AAAA,IACD,MAAM,KAAK;AAAA,IACX,MAAM,KAAK,uBAAuB;AAAA,IAClC,OAAO,KAAK;AAAA;AAAA,OAER,uBAAsB,GAAG;AAAA,IAC7B,WAAW,UAAU,iBAAiB;AAAA,MACpC,KAAK,kBAAkB,MAAM;AAAA,IAC/B;AAAA;AAAA,EAEF,WAAW,CAAC,OAAM;AAAA,IAChB,IAAI,MAAM,KAAI,GAAG;AAAA,MACf,OAAO;AAAA,IACT;AAAA,IACA,IAAI,YAAY,KAAI,GAAG;AAAA,MACrB,OAAO,mBAAmB,MAAM,KAAI,EAAE,IAAI;AAAA,IAC5C;AAAA,IACA,IAAI,CAAC,WAAW,KAAI,GAAG;AAAA,MACrB,OAAO,SAAS,KAAI;AAAA,IACtB;AAAA,IACA,OAAO;AAAA;AAAA,EAET,iBAAiB,CAAC,gBAAgB;AAAA,IAChC,MAAM,iBAAiB;AAAA,SAClB;AAAA,MACH,MAAM,KAAK,YAAY,eAAe,IAAI;AAAA,MAC1C,SAAS;AAAA,QACP,YAAY,eAAe,QAAQ,WAAW,IAAI,CAAC,UAAS,KAAK,YAAY,KAAI,CAAC;AAAA,QAClF,YAAY,eAAe,QAAQ,YAAY,IAAI,CAAC,UAAS,KAAK,YAAY,KAAI,CAAC;AAAA,MACrF;AAAA,IACF;AAAA,IACA,KAAK,QAAQ,YAAY,EAAE,MAAM,uBAAuB,gBAAgB,eAAe,CAAC;AAAA;AAAA,OAEpF,eAAc,GAAG;AAAA,IACrB,MAAM,YAAY,eAAe,KAAK;AAAA,IACtC,OAAO,IAAI,QAAQ,CAAC,cAAa;AAAA,MAC/B,KAAK,iBAAiB,IAAI,WAAW,SAAQ;AAAA,MAC7C,KAAK,QAAQ,YAAY,EAAE,MAAM,mBAAmB,UAAU,CAAC;AAAA,KAChE;AAAA;AAAA,OAEG,cAAa,CAAC,SAAS,UAAU;AAAA,IACrC,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,IAAI;AAAA,QACF,MAAM,KAAK,WAAW;AAAA,QACtB,OAAO,OAAO;AAAA,QACd,OAAO,EAAE,OAAO,sDAAsD;AAAA;AAAA,IAE1E;AAAA,IACA,MAAM,YAAY,WAAW,KAAK;AAAA,IAClC,OAAO,IAAI,QAAQ,CAAC,cAAa;AAAA,MAC/B,KAAK,iBAAiB,IAAI,WAAW,SAAQ;AAAA,MAC7C,KAAK,QAAQ,YAAY;AAAA,QACvB,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,KACF;AAAA;AAAA,EAEH,mBAAmB,CAAC,OAAO;AAAA,IACzB,QAAQ,MAAM,UAAU,OAAO,YAAY,SAAS,WAAW,WAAW,aAAa,cAAc,YAAY,MAAM;AAAA,IACvH,IAAI,SAAS,sBAAsB;AAAA,MACjC,MAAM,SAAS,KAAK,QAAQ,IAAI,QAAQ;AAAA,MACxC,IAAI,CAAC,UAAU,CAAC,OAAO;AAAA,QACrB;AAAA,MACF,IAAI,OAAO,YAAY,SAAS;AAAA,QAC9B,KAAK,YAAY,UAAU,OAAO,SAAS,OAAO,OAAO;AAAA,QACzD;AAAA,MACF;AAAA,MACA,KAAK,KAAK,uBAAuB,UAAU,SAAS,UAAU;AAAA,IAChE;AAAA,IACA,IAAI,SAAS,iBAAiB;AAAA,MAC5B,IAAI,KAAK,qBAAqB;AAAA,QAC5B,aAAa,KAAK,oBAAoB,SAAS;AAAA,QAC/C,IAAI,OAAO;AAAA,UACT,QAAQ,MAAM,4CAA4C,KAAK;AAAA,UAC/D,KAAK,oBAAoB,OAAO,IAAI,MAAM,KAAK,CAAC;AAAA,QAClD,EAAO;AAAA,UACL,KAAK,cAAc;AAAA,UACnB,KAAK,oBAAoB,QAAQ;AAAA;AAAA,QAEnC,KAAK,sBAAsB;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,IACA,IAAI,SAAS,wBAAwB;AAAA,MACnC,MAAM,WAAW,KAAK,iBAAiB,IAAI,SAAS;AAAA,MACpD,IAAI,UAAU;AAAA,QACZ,KAAK,iBAAiB,OAAO,SAAS;AAAA,QACtC,SAAS,EAAE,WAAW,SAAS,MAAM,CAAC;AAAA,MACxC;AAAA,MACA;AAAA,IACF;AAAA,IACA,IAAI,SAAS,2BAA2B;AAAA,MACtC,MAAM,WAAW,KAAK,iBAAiB,IAAI,SAAS;AAAA,MACpD,IAAI,UAAU;AAAA,QACZ,KAAK,iBAAiB,OAAO,SAAS;AAAA,QACtC,SAAS,EAAE,UAAU,CAAC;AAAA,MACxB;AAAA,MACA;AAAA,IACF;AAAA,IACA,IAAI,SAAS,mBAAmB;AAAA,MAC9B,MAAM,WAAW,KAAK,iBAAiB,IAAI,WAAW,UAAU;AAAA,MAChE,IAAI,UAAU;AAAA,QACZ,KAAK,iBAAiB,OAAO,WAAW,UAAU;AAAA,QAClD,SAAS,IAAI;AAAA,MACf;AAAA,MACA,KAAK,KAAK,mBAAmB,QAAQ;AAAA,MACrC;AAAA,IACF;AAAA,IACA,IAAI,SAAS,wBAAwB;AAAA,MACnC,MAAM,WAAW,KAAK,iBAAiB,IAAI,SAAS;AAAA,MACpD,IAAI,UAAU;AAAA,QACZ,KAAK,iBAAiB,OAAO,SAAS;AAAA,QACtC,SAAS,YAAY;AAAA,MACvB;AAAA,MACA;AAAA,IACF;AAAA,IACA,IAAI,SAAS,8BAA8B;AAAA,MACzC,MAAM,WAAW,KAAK,iBAAiB,IAAI,SAAS;AAAA,MACpD,IAAI,UAAU;AAAA,QACZ,KAAK,iBAAiB,OAAO,SAAS;AAAA,QACtC,SAAS,EAAE,YAAY,SAAS,MAAM,CAAC;AAAA,MACzC;AAAA,MACA;AAAA,IACF;AAAA,IACA,IAAI,SAAS,6BAA6B;AAAA,MACxC,MAAM,WAAW,KAAK,iBAAiB,IAAI,SAAS;AAAA,MACpD,IAAI,UAAU;AAAA,QACZ,KAAK,iBAAiB,OAAO,SAAS;AAAA,QACtC,SAAS,EAAE,MAAM,CAAC;AAAA,MACpB;AAAA,MACA;AAAA,IACF;AAAA,IACA,IAAI,SAAS,wBAAwB;AAAA,MACnC,MAAM,WAAW,KAAK,iBAAiB,IAAI,SAAS;AAAA,MACpD,IAAI,UAAU;AAAA,QACZ,KAAK,iBAAiB,OAAO,SAAS;AAAA,QACtC,SAAS,EAAE,MAAM,CAAC;AAAA,MACpB;AAAA,MACA;AAAA,IACF;AAAA,IACA,IAAI,SAAS;AAAA,MACX,KAAK,YAAY,SAAS,QAAQ;AAAA,MAClC;AAAA,IACF;AAAA,IACA,IAAI,OAAO;AAAA,MACT,KAAK,UAAU,OAAO,QAAQ;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,IAAI,SAAS,cAAc;AAAA,MACzB,QAAQ,SAAS,SAAS,MAAM;AAAA,MAChC,MAAM,UAAU,KAAK,KAAK,GAAG;AAAA,MAC7B,KAAK,KAAK,cAAc,SAAS,OAAO;AAAA,MACxC,IAAI,YAAY,OAAO;AAAA,QACrB,QAAQ,IAAI,aAAa,GAAG,IAAI;AAAA,MAClC,EAAO,SAAI,YAAY,SAAS;AAAA,QAC9B,QAAQ,MAAM,aAAa,GAAG,IAAI;AAAA,MACpC,EAAO,SAAI,YAAY,QAAQ;AAAA,QAC7B,QAAQ,KAAK,aAAa,GAAG,IAAI;AAAA,MACnC;AAAA,MACA;AAAA,IACF;AAAA;AAAA,OAEI,cAAa,CAAC,UAAU;AAAA,IAC5B,MAAM,YAAY,cAAc,KAAK;AAAA,IACrC,MAAM,WAAW,MAAM,IAAI,QAAQ,CAAC,cAAa;AAAA,MAC/C,KAAK,iBAAiB,IAAI,WAAW,SAAQ;AAAA,MAC7C,KAAK,QAAQ,YAAY;AAAA,QACvB,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACF,CAAC;AAAA,KACF;AAAA,IACD,OAAO,SAAS;AAAA;AAAA,OAEZ,aAAY,CAAC,IAAI,SAAS,UAAU,UAAU,GAAG,iBAAiB,MAAM;AAAA,IAC5E,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,IAAI,CAAC,gBAAgB;AAAA,QACnB,KAAK,UAAU,2DAA2D;AAAA,QAC1E,OAAO;AAAA,MACT;AAAA,MACA,IAAI;AAAA,QACF,MAAM,KAAK,WAAW;AAAA,QACtB,OAAO,OAAO;AAAA,QACd,KAAK,UAAU,yDAAyD;AAAA,QACxE,OAAO;AAAA;AAAA,IAEX;AAAA,IACA,IAAI,KAAK,QAAQ,IAAI,EAAE,GAAG;AAAA,MACxB,MAAM,IAAI,MAAM,kBAAkB,mBAAmB;AAAA,IACvD;AAAA,IACA,KAAK,QAAQ,IAAI,IAAI,EAAE,IAAI,SAAS,UAAU,SAAS,WAAW,MAAM,CAAC;AAAA,IACzE,MAAM,YAAY,QAAQ,KAAK;AAAA,IAC/B,MAAM,WAAW,MAAM,IAAI,QAAQ,CAAC,cAAa;AAAA,MAC/C,KAAK,iBAAiB,IAAI,WAAW,SAAQ;AAAA,MAC7C,KAAK,QAAQ,YAAY;AAAA,QACvB,MAAM;AAAA,QACN,UAAU;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,KACF;AAAA,IACD,IAAI,CAAC,SAAS,WAAW;AAAA,MACvB,KAAK,KAAK,sBAAsB,IAAI,KAAK;AAAA,MACzC,IAAI,aAAa,aAAa;AAAA,QAC5B,KAAK,YAAY,SAAS,WAAW,SAAS,SAAS,wBAAwB,EAAE;AAAA,MACnF;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,MAAM,cAAc,EAAE,IAAI,SAAS,UAAU,SAAS,WAAW,KAAK;AAAA,IACtE,KAAK,QAAQ,IAAI,IAAI,WAAW;AAAA,IAChC,KAAK,KAAK,sBAAsB,IAAI,IAAI;AAAA,IACxC,OAAO;AAAA;AAAA,OAEH,aAAY,CAAC,IAAI,OAAO,YAAY,SAAS;AAAA,IACjD,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB;AAAA,IACF;AAAA,IACA,MAAM,SAAS,KAAK,QAAQ,IAAI,EAAE;AAAA,IAClC,IAAI,CAAC,UAAU,CAAC,OAAO,WAAW;AAAA,MAChC;AAAA,IACF;AAAA,IACA,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,SAAS,YAAY,QAAQ,CAAC;AAAA,IAChE,IAAI,CAAC,KAAK,WAAW,IAAI,EAAE,GAAG;AAAA,MAC5B,KAAK,WAAW,IAAI,IAAI,IAAI,aAAa,CAAC,SAAS,KAAK,YAAY,IAAI,KAAK,OAAO,KAAK,YAAY,KAAK,SAAS,KAAK,OAAO,CAAC,CAAC;AAAA,IACnI;AAAA,IACA,MAAM,cAAc,KAAK,WAAW,IAAI,EAAE;AAAA,IAC1C,YAAY,QAAQ,EAAE,OAAO,YAAY,QAAQ,CAAC;AAAA;AAAA,OAE9C,YAAW,CAAC,UAAU,OAAO,YAAY,SAAS,UAAU,OAAO;AAAA,IACvE,KAAK,QAAQ,YAAY;AAAA,MACvB,MAAM,UAAU,iBAAiB;AAAA,MACjC;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT;AAAA,IACF,CAAC;AAAA;AAAA,OAEG,aAAY,CAAC,UAAU;AAAA,IAC3B,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB;AAAA,IACF;AAAA,IACA,KAAK,QAAQ,OAAO,QAAQ;AAAA,IAC5B,IAAI,KAAK,WAAW,IAAI,QAAQ,GAAG;AAAA,MACjC,KAAK,WAAW,IAAI,QAAQ,GAAG,MAAM;AAAA,MACrC,KAAK,WAAW,OAAO,QAAQ;AAAA,IACjC;AAAA,IACA,IAAI,KAAK,QAAQ;AAAA,MACf,MAAM,IAAI,QAAQ,CAAC,cAAa;AAAA,QAC9B,MAAM,YAAY,WAAW;AAAA,QAC7B,KAAK,iBAAiB,IAAI,WAAW,SAAQ;AAAA,QAC7C,IAAI;AAAA,UACF,KAAK,OAAO,YAAY;AAAA,YACtB,MAAM;AAAA,YACN;AAAA,UACF,CAAC;AAAA,UACD,OAAO,OAAO;AAAA,UACd,QAAQ,MAAM,0BAA0B,KAAK;AAAA,UAC7C,UAAS,KAAK;AAAA;AAAA,QAEhB,WAAW,MAAM;AAAA,UACf,IAAI,KAAK,iBAAiB,IAAI,SAAS,GAAG;AAAA,YACxC,KAAK,iBAAiB,OAAO,SAAS;AAAA,YACtC,QAAQ,KAAK,EAAE,SAAS,GAAG,6CAA6C;AAAA,YACxE,UAAS,KAAK;AAAA,UAChB;AAAA,WACC,IAAI;AAAA,OACR;AAAA,IACH;AAAA,IACA,KAAK,UAAU,cAAc,SAAS,UAAU;AAAA;AAAA,OAE5C,QAAO,GAAG;AAAA,IACd,IAAI,KAAK,qBAAqB;AAAA,MAC5B,aAAa,KAAK,oBAAoB,SAAS;AAAA,MAC/C,KAAK,oBAAoB,OAAO,IAAI,MAAM,wCAAwC,CAAC;AAAA,MACnF,KAAK,sBAAsB;AAAA,IAC7B;AAAA,IACA,YAAY,WAAW,aAAa,KAAK,iBAAiB,QAAQ,GAAG;AAAA,MACnE,IAAI,OAAO,aAAa,YAAY;AAAA,QAClC,IAAI;AAAA,UACF,SAAS,EAAE,OAAO,mBAAmB,CAAC;AAAA,UACtC,OAAO,GAAG;AAAA,MACd;AAAA,IACF;AAAA,IACA,KAAK,iBAAiB,MAAM;AAAA,IAC5B,mBAAmB,oBAAoB;AAAA,IACvC,KAAK,UAAU,MAAM;AAAA,IACrB,KAAK,WAAW,MAAM;AAAA,IACtB,KAAK,QAAQ,MAAM;AAAA,IACnB,KAAK,WAAW;AAAA,IAChB,KAAK,cAAc;AAAA,IACnB,KAAK,oBAAoB;AAAA;AAAA,OAErB,YAAW,CAAC,UAAU,SAAS,SAAS;AAAA,IAC5C,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB;AAAA,IACF;AAAA,IACA,MAAM,SAAS,KAAK,QAAQ,IAAI,QAAQ;AAAA,IACxC,IAAI,CAAC,UAAU,CAAC,OAAO,WAAW;AAAA,MAChC,KAAK,UAAU,sCAAsC,QAAQ;AAAA,MAC7D;AAAA,IACF;AAAA,IACA,KAAK,QAAQ,IAAI,UAAU,KAAK,QAAQ,SAAS,QAAQ,CAAC;AAAA,IAC1D,KAAK,UAAU,SAAS,SAAS,YAAY,IAAI,MAAM,KAAK,YAAY,UAAU,CAAC,GAAG,SAAS,SAAS,IAAI,CAAC;AAAA;AAAA,EAE/G,SAAS,CAAC,UAAU;AAAA,IAClB,OAAO,KAAK,QAAQ,IAAI,QAAQ;AAAA;AAAA,EAElC,aAAa,GAAG;AAAA,IACd,OAAO,MAAM,KAAK,KAAK,QAAQ,OAAO,CAAC;AAAA;AAAA,EAEzC,aAAa,GAAG;AAAA,IACd,OAAO,KAAK;AAAA;AAAA,OAER,YAAW,CAAC,UAAU;AAAA,IAC1B,IAAI,KAAK,QAAQ,aAAa,UAAU;AAAA,MACtC;AAAA,IACF;AAAA,IACA,KAAK,QAAQ,WAAW;AAAA,IACxB,IAAI,KAAK,eAAe,KAAK,QAAQ;AAAA,MACnC,MAAM,YAAY,mBAAmB,KAAK;AAAA,MAC1C,OAAO,IAAI,QAAQ,CAAC,WAAU,WAAW;AAAA,QACvC,KAAK,iBAAiB,IAAI,WAAW,CAAC,aAAa;AAAA,UACjD,IAAI,SAAS,OAAO;AAAA,YAClB,OAAO,IAAI,MAAM,SAAS,KAAK,CAAC;AAAA,UAClC,EAAO;AAAA,YACL,UAAS;AAAA;AAAA,SAEZ;AAAA,QACD,KAAK,OAAO,YAAY;AAAA,UACtB,MAAM;AAAA,UACN;AAAA,UACA;AAAA,QACF,CAAC;AAAA,OACF;AAAA,IACH;AAAA;AAAA,OAEI,WAAU,GAAG;AAAA,IACjB,IAAI,CAAC,KAAK,eAAe,CAAC,KAAK,QAAQ;AAAA,MACrC,MAAM,IAAI,MAAM,+CAA+C;AAAA,IACjE;AAAA,IACA,MAAM,YAAY,eAAe,KAAK;AAAA,IACtC,OAAO,IAAI,QAAQ,CAAC,WAAU,WAAW;AAAA,MACvC,KAAK,iBAAiB,IAAI,WAAW,CAAC,aAAa;AAAA,QACjD,IAAI,SAAS,OAAO;AAAA,UAClB,OAAO,IAAI,MAAM,SAAS,KAAK,CAAC;AAAA,QAClC,EAAO;AAAA,UACL,UAAS;AAAA;AAAA,OAEZ;AAAA,MACD,KAAK,OAAO,YAAY;AAAA,QACtB,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AAAA,KACF;AAAA;AAEL;AAQA,SAAS,oBAAoB,CAAC,MAAM;AAAA,EAClC,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACrC,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,KAAK,EAAE,WAAW,GAAG;AAAA,IAC5B,OAAO;AAAA,EACT;AAAA,EACA,MAAM,gBAAgB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,IAAI,cAAc,SAAS,KAAK,YAAY,CAAC,GAAG;AAAA,IAC9C,OAAO;AAAA,EACT;AAAA,EACA,MAAM,eAAe;AAAA,EACrB,IAAI,aAAa,KAAK,IAAI,GAAG;AAAA,IAC3B,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,SAAS,GAAG,KAAK,KAAK,SAAS,GAAG,GAAG;AAAA,IAC5C,OAAO;AAAA,EACT;AAAA,EACA,IAAI,SAAS,OAAO,SAAS,MAAM;AAAA,IACjC,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAIT,eAAe;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AACD,eAAe;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AAAA;AAED,MAAM,yBAAyB,cAAc;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,GAAG;AAAA,IACZ,MAAM;AAAA,IACN,KAAK,WAAW;AAAA;AAAA,MAEd,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,OAAO,CAAC,OAAO;AAAA,IACjB,IAAI,CAAC,qBAAqB,KAAK,GAAG;AAAA,MAChC,MAAM,IAAI,MAAM,qBAAqB,wCAAwC;AAAA,IAC/E;AAAA,IACA,IAAI,KAAK,aAAa,OAAO;AAAA,MAC3B,KAAK,WAAW;AAAA,MAChB,KAAK,oBAAoB;AAAA,MACzB,KAAK,oBAAoB;AAAA,MACzB,KAAK,mBAAmB;AAAA,MACxB,KAAK,kBAAkB;AAAA,MACvB,KAAK,KAAK,iBAAiB,KAAK,SAAS,CAAC;AAAA,IAC5C;AAAA;AAAA,MAEE,gBAAgB,GAAG;AAAA,IACrB,IAAI,KAAK,sBAAsB,WAAW;AAAA,MACxC,MAAM,UAAU,GAAG,QAAQ;AAAA,MAC3B,MAAM,gBAAgB,IAAI;AAAA,MAC1B,MAAM,gBAAgB,iBAAiB,KAAK,KAAK,SAAS,SAAS;AAAA,MACnE,KAAK,oBAAoB,KAAK,KAAK,eAAe,KAAK,QAAQ;AAAA,IACjE;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,MAEV,gBAAgB,GAAG;AAAA,IACrB,IAAI,KAAK,sBAAsB,WAAW;AAAA,MACxC,KAAK,oBAAoB,KAAK,KAAK,KAAK,kBAAkB,SAAS;AAAA,IACrE;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,MAEV,eAAe,GAAG;AAAA,IACpB,IAAI,KAAK,qBAAqB,WAAW;AAAA,MACvC,KAAK,mBAAmB,KAAK,KAAK,QAAQ,IAAI,GAAG,IAAI,KAAK,aAAa;AAAA,IACzE;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,MAEV,cAAc,GAAG;AAAA,IACnB,IAAI,KAAK,oBAAoB,WAAW;AAAA,MACtC,MAAM,UAAU,GAAG,QAAQ;AAAA,MAC3B,MAAM,cAAc,IAAI;AAAA,MACxB,MAAM,cAAc,eAAe,KAAK,KAAK,SAAS,cAAc;AAAA,MACpE,KAAK,kBAAkB,KAAK,KAAK,aAAa,KAAK,QAAQ;AAAA,IAC7D;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,EAEd,QAAQ,GAAG;AAAA,IACT,OAAO;AAAA,MACL,kBAAkB,KAAK;AAAA,MACvB,kBAAkB,KAAK;AAAA,MACvB,iBAAiB,KAAK;AAAA,MACtB,gBAAgB,KAAK;AAAA,IACvB;AAAA;AAEJ;AACA,SAAS,YAAY,GAAG;AAAA,EACtB,OAAO,UAAU,sBAAsB,MAAM,IAAI,gBAAgB;AAAA;AAInE,SAAS,aAAa,CAAC,WAAW;AAAA,EAChC,MAAM,sBAAsB,IAAI,IAAI;AAAA,IAClC,CAAC,MAAM,YAAY;AAAA,IACnB,CAAC,OAAO,iBAAiB;AAAA,IACzB,CAAC,MAAM,YAAY;AAAA,IACnB,CAAC,OAAO,iBAAiB;AAAA,IACzB,CAAC,MAAM,UAAU;AAAA,IACjB,CAAC,QAAQ,MAAM;AAAA,IACf,CAAC,MAAM,QAAQ;AAAA,IACf,CAAC,MAAM,MAAM;AAAA,IACb,CAAC,MAAM,IAAI;AAAA,IACX,CAAC,MAAM,MAAM;AAAA,IACb,CAAC,KAAK,GAAG;AAAA,IACT,CAAC,OAAO,KAAK;AAAA,IACb,CAAC,OAAO,KAAK;AAAA,IACb,CAAC,MAAM,QAAQ;AAAA,IACf,CAAC,QAAQ,MAAM;AAAA,IACf,CAAC,MAAM,QAAQ;AAAA,IACf,CAAC,SAAS,OAAO;AAAA,IACjB,CAAC,OAAO,KAAK;AAAA,IACb,CAAC,OAAO,KAAK;AAAA,IACb,CAAC,MAAM,MAAM;AAAA,IACb,CAAC,OAAO,KAAK;AAAA,IACb,CAAC,OAAO,QAAQ;AAAA,IAChB,CAAC,OAAO,QAAQ;AAAA,IAChB,CAAC,MAAM,QAAQ;AAAA,IACf,CAAC,OAAO,KAAK;AAAA,IACb,CAAC,UAAU,QAAQ;AAAA,IACnB,CAAC,MAAM,QAAQ;AAAA,IACf,CAAC,OAAO,QAAQ;AAAA,IAChB,CAAC,YAAY,QAAQ;AAAA,IACrB,CAAC,OAAO,QAAQ;AAAA,IAChB,CAAC,KAAK,GAAG;AAAA,IACT,CAAC,OAAO,KAAK;AAAA,IACb,CAAC,QAAQ,MAAM;AAAA,IACf,CAAC,OAAO,KAAK;AAAA,IACb,CAAC,QAAQ,MAAM;AAAA,IACf,CAAC,QAAQ,MAAM;AAAA,IACf,CAAC,MAAM,OAAO;AAAA,IACd,CAAC,QAAQ,OAAO;AAAA,IAChB,CAAC,OAAO,OAAO;AAAA,IACf,CAAC,OAAO,KAAK;AAAA,IACb,CAAC,QAAQ,MAAM;AAAA,IACf,CAAC,OAAO,MAAM;AAAA,IACd,CAAC,QAAQ,MAAM;AAAA,IACf,CAAC,OAAO,KAAK;AAAA,IACb,CAAC,OAAO,KAAK;AAAA,EACf,CAAC;AAAA,EACD,OAAO,oBAAoB,IAAI,SAAS;AAAA;AAE1C,SAAS,cAAc,CAAC,QAAO;AAAA,EAC7B,IAAI,OAAO,WAAU;AAAA,IACnB;AAAA,EACF,MAAM,UAAU,OAAM,YAAY,GAAG;AAAA,EACrC,IAAI,YAAY,MAAM,YAAY,OAAM,SAAS,GAAG;AAAA,IAClD;AAAA,EACF;AAAA,EACA,MAAM,YAAY,OAAM,UAAU,UAAU,CAAC;AAAA,EAC7C,OAAO,cAAc,SAAS;AAAA;AAAA;AAWhC,MAAM,cAAc;AAAA,SACX,OAAO,CAAC,KAAK;AAAA,IAClB,IAAI,OAAO;AAAA,IACX,SAAS,IAAI,EAAE,IAAI,IAAI,QAAQ,KAAK;AAAA,MAClC,MAAM,OAAO,IAAI,WAAW,CAAC;AAAA,MAC7B,QAAQ,QAAQ,KAAK,OAAO;AAAA,MAC5B,OAAO,OAAO;AAAA,IAChB;AAAA,IACA,OAAO,KAAK,IAAI,IAAI,EAAE,SAAS,EAAE;AAAA;AAAA,cAEtB,eAAc,CAAC,QAAQ,UAAU,aAAa,eAAe,kBAAkB,MAAM,UAAU;AAAA,IAC1G,MAAM,SAAS,OAAO,WAAW,SAAS,KAAK,OAAO,WAAW,UAAU;AAAA,IAC3E,IAAI,QAAQ;AAAA,MACV,IAAI;AAAA,MACJ,IAAI,iBAAiB;AAAA,QACnB,MAAM,OAAO,KAAK,QAAQ,MAAM;AAAA,QAChC,gBAAgB,WAAW,GAAG,YAAY,OAAO,kBAAkB,GAAG,OAAO;AAAA,MAC/E,EAAO;AAAA,QACL,gBAAsB,eAAS,MAAM;AAAA;AAAA,MAEvC,MAAM,YAAkB,WAAK,UAAU,aAAa,aAAa;AAAA,MACjE,MAAM,MAAY,cAAQ,SAAS,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,MACzD,IAAI;AAAA,QACF,MAAM,gBAAgB,MAAM,IAAI,KAAK,SAAS,EAAE,YAAY;AAAA,QAC5D,IAAI,cAAc,aAAa,GAAG;AAAA,UAChC,QAAQ,IAAI,sBAAsB,cAAc,SAAS;AAAA,UACzD,OAAO,EAAE,SAAS,eAAe,UAAU,UAAU;AAAA,QACvD;AAAA,QACA,OAAO,OAAO;AAAA,MAChB,IAAI;AAAA,QACF,QAAQ,IAAI,yBAAyB,QAAQ;AAAA,QAC7C,MAAM,WAAW,MAAM,MAAM,MAAM;AAAA,QACnC,IAAI,CAAC,SAAS,IAAI;AAAA,UAChB,OAAO,EAAE,OAAO,wBAAwB,WAAW,SAAS,aAAa;AAAA,QAC3E;AAAA,QACA,MAAM,UAAU,MAAM,SAAS,YAAY;AAAA,QAC3C,IAAI;AAAA,UACF,MAAM,UAAU,WAAW,OAAO,KAAK,OAAO,CAAC;AAAA,UAC/C,QAAQ,IAAI,WAAW,QAAQ;AAAA,UAC/B,OAAO,YAAY;AAAA,UACnB,QAAQ,KAAK,oBAAoB,YAAY;AAAA;AAAA,QAE/C,OAAO,EAAE,SAAS,UAAU,UAAU;AAAA,QACtC,OAAO,OAAO;AAAA,QACd,OAAO,EAAE,OAAO,0BAA0B,WAAW,QAAQ;AAAA;AAAA,IAEjE,EAAO;AAAA,MACL,IAAI;AAAA,QACF,QAAQ,IAAI,4BAA4B,QAAQ;AAAA,QAChD,MAAM,UAAU,MAAM,IAAI,KAAK,MAAM,EAAE,YAAY;AAAA,QACnD,OAAO,EAAE,SAAS,UAAU,OAAO;AAAA,QACnC,OAAO,OAAO;AAAA,QACd,OAAO,EAAE,OAAO,iCAAiC,WAAW,QAAQ;AAAA;AAAA;AAAA;AAAA,cAI7D,eAAc,CAAC,QAAQ,YAAY;AAAA,IAC9C,MAAM,SAAS,OAAO,WAAW,SAAS,KAAK,OAAO,WAAW,UAAU;AAAA,IAC3E,MAAM,MAAY,cAAQ,UAAU,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,IAC1D,IAAI,QAAQ;AAAA,MACV,IAAI;AAAA,QACF,QAAQ,IAAI,yBAAyB,QAAQ;AAAA,QAC7C,MAAM,WAAW,MAAM,MAAM,MAAM;AAAA,QACnC,IAAI,CAAC,SAAS,IAAI;AAAA,UAChB,OAAO,EAAE,OAAO,wBAAwB,WAAW,SAAS,aAAa;AAAA,QAC3E;AAAA,QACA,MAAM,UAAU,MAAM,SAAS,YAAY;AAAA,QAC3C,MAAM,UAAU,YAAY,OAAO,KAAK,OAAO,CAAC;AAAA,QAChD,QAAQ,IAAI,eAAe,aAAa,YAAY;AAAA,QACpD,OAAO,EAAE,SAAS,UAAU,WAAW;AAAA,QACvC,OAAO,OAAO;AAAA,QACd,OAAO,EAAE,OAAO,0BAA0B,WAAW,QAAQ;AAAA;AAAA,IAEjE,EAAO;AAAA,MACL,IAAI;AAAA,QACF,QAAQ,IAAI,4BAA4B,QAAQ;AAAA,QAChD,MAAM,UAAU,MAAM,IAAI,KAAK,MAAM,EAAE,YAAY;AAAA,QACnD,MAAM,UAAU,YAAY,OAAO,KAAK,OAAO,CAAC;AAAA,QAChD,OAAO,EAAE,SAAS,UAAU,WAAW;AAAA,QACvC,OAAO,OAAO;AAAA,QACd,OAAO,EAAE,OAAO,iCAAiC,WAAW,QAAQ;AAAA;AAAA;AAAA;AAAA,cAI7D,sBAAqB,CAAC,SAAS,UAAU,UAAU;AAAA,IAC9D,MAAM,gBAAgB,QAAQ,IAAI,CAAC,WAAW,KAAK,oBAAoB,QAAQ,UAAU,QAAQ,CAAC;AAAA,IAClG,MAAM,eAAe,MAAM,QAAQ,IAAI,aAAa;AAAA,IACpD,MAAM,eAAe,aAAa,OAAO,CAAC,UAAU,MAAM,KAAK,EAAE,SAAS,CAAC;AAAA,IAC3E,OAAO,aAAa,KAAK;AAAA,CAC5B;AAAA;AAAA,cAEc,oBAAmB,CAAC,QAAQ,UAAU,UAAU;AAAA,IAC3D,MAAM,SAAS,MAAM,KAAK,eAAe,QAAQ,UAAU,WAAW,QAAQ,MAAM,QAAQ;AAAA,IAC5F,IAAI,OAAO,OAAO;AAAA,MAChB,QAAQ,MAAM,uCAAuC,WAAW,OAAO,KAAK;AAAA,MAC5E,OAAO;AAAA,IACT;AAAA,IACA,IAAI,OAAO,SAAS;AAAA,MAClB,OAAO,IAAI,YAAY,EAAE,OAAO,OAAO,OAAO;AAAA,IAChD;AAAA,IACA,OAAO;AAAA;AAEX;AAIA,IAAI,aAAY;AAChB,SAAS,iBAAiB,GAAG;AAAA,EAC3B,OAAO;AAAA,IACL,YAAkB,cAAQ,YAAW,mBAAmB;AAAA,IACxD,WAAiB,cAAQ,UAAS;AAAA,IAClC,YAAkB,cAAQ,YAAW,uBAAuB;AAAA,EAC9D;AAAA;AAEF,eAAe,UAAU,CAAC,YAAY;AAAA,EACpC,IAAI,MAAY,cAAQ,UAAU;AAAA,EAClC,IAAI,qBAAqB;AAAA,EACzB,IAAI,QAAQ,IAAI;AAAA,IACd,MAAM,QAAQ,MAAM,QAAc,cAAQ,UAAU,CAAC;AAAA,IACrD,MAAM,OAAO,MAAM,KAAK,CAAC,UAAU,MAAM,WAAiB,eAAS,UAAU,CAAC,MAAM,MAAM,SAAS,OAAO,KAAK,MAAM,SAAS,KAAK,KAAK,MAAM,SAAS,KAAK,EAAE;AAAA,IAC9J,IAAI,CAAC,MAAM;AAAA,MACT,MAAM,IAAI,MAAM,4BAA4B,YAAY;AAAA,IAC1D;AAAA,IACA,qBAA2B,WAAW,cAAQ,UAAU,GAAG,IAAI;AAAA,IAC/D,MAAY,cAAQ,kBAAkB;AAAA,EACxC;AAAA,EACA,IAAI,QAAQ,SAAS;AAAA,IACnB,MAAM,gBAAgB,MAAM,SAAS,oBAAoB,OAAO;AAAA,IAChE,OAAO,KAAK,MAAM,aAAa;AAAA,EACjC,EAAO,SAAI,QAAQ,SAAS,QAAQ,OAAO;AAAA,IACzC,QAAQ,SAAS,kBAAkB,MAAa;AAAA,IAChD,OAAO;AAAA,EACT;AAAA,EACA,MAAM,IAAI,MAAM,sCAAsC,KAAK;AAAA;AAE7D,eAAe,gBAAgB,CAAC,UAAU,aAAa,WAAW,YAAY;AAAA,EAC5E,MAAM,cAAoB,WAAK,WAAW,QAAQ;AAAA,EAClD,MAAM,mBAAyB,eAAS,WAAW;AAAA,EACnD,MAAM,eAAqB,WAAK,aAAa,gBAAgB;AAAA,EAC7D,MAAM,SAAS,MAAM,cAAc,eAAe,aAAa,YAAY;AAAA,EAC3E,IAAI,OAAO,OAAO;AAAA,IAChB,MAAM,IAAI,MAAM,mCAAmC,aAAa,OAAO,OAAO;AAAA,EAChF;AAAA,EACA,OAAO,OAAa,eAAe,cAAQ,UAAU,GAAG,YAAY;AAAA;AAEtE,eAAe,yBAAyB,CAAC,UAAU,WAAW,WAAW,YAAY,WAAW,YAAY;AAAA,EAC1G,MAAM,aAAmB,WAAK,WAAW,QAAQ;AAAA,EACjD,MAAM,YAAkB,WAAK,YAAY,GAAG,eAAe;AAAA,EAC3D,MAAM,gBAAgB,CAAC;AAAA,EACvB,SAAS,IAAI,EAAE,IAAI,UAAU,QAAQ,KAAK;AAAA,IACxC,MAAM,WAAW,UAAU;AAAA,IAC3B,IAAI,SAAS,WAAW,IAAI,GAAG;AAAA,MAC7B,QAAQ,IAAI,yBAAyB,IAAI,KAAK,UAAU,WAAW,UAAU;AAAA,MAC7E,IAAI;AAAA,QACF,MAAM,YAAkB,cAAc,cAAQ,UAAU,GAAG,QAAQ;AAAA,QACnE,MAAM,UAAU,MAAM,SAAS,WAAW,OAAO;AAAA,QACjD,IAAI,QAAQ,KAAK,GAAG;AAAA,UAClB,cAAc,KAAK,OAAO;AAAA,UAC1B,QAAQ,IAAI,qBAAqB,QAAQ,MAAM;AAAA,CACxD,EAAE,8BAA8B;AAAA,QACzB;AAAA,QACA,OAAO,OAAO;AAAA,QACd,QAAQ,KAAK,mCAAmC,aAAa,OAAO;AAAA,QACpE;AAAA;AAAA,IAEJ,EAAO;AAAA,MACL,QAAQ,IAAI,yBAAyB,IAAI,KAAK,UAAU,WAAW,UAAU;AAAA,MAC7E,IAAI;AAAA,QACF,MAAM,WAAW,MAAM,MAAM,QAAQ;AAAA,QACrC,IAAI,CAAC,SAAS,IAAI;AAAA,UAChB,QAAQ,KAAK,iCAAiC,aAAa,SAAS,YAAY;AAAA,UAChF;AAAA,QACF;AAAA,QACA,MAAM,UAAU,MAAM,SAAS,KAAK;AAAA,QACpC,IAAI,QAAQ,KAAK,GAAG;AAAA,UAClB,cAAc,KAAK,iBAAiB;AAAA,EAC5C,SAAS;AAAA,UACD,QAAQ,IAAI,yBAAyB,QAAQ,MAAM;AAAA,CAC5D,EAAE,cAAc;AAAA,QACT;AAAA,QACA,OAAO,OAAO;AAAA,QACd,QAAQ,KAAK,iCAAiC,aAAa,OAAO;AAAA,QAClE;AAAA;AAAA;AAAA,EAGN;AAAA,EACA,MAAM,kBAAkB,cAAc,KAAK;AAAA;AAAA,CAE5C;AAAA,EACC,MAAM,WAAW,WAAW,iBAAiB,OAAO;AAAA,EACpD,QAAQ,IAAI,cAAc,cAAc,uBAAuB,WAAW;AAAA,EAC1E,OAAO,OAAa,eAAe,cAAQ,UAAU,GAAG,SAAS;AAAA;AAEnE,eAAe,0BAA0B,CAAC,SAAS,YAAY;AAAA,EAC7D,MAAM,UAAU,QAAQ,IAAI,CAAC,WAAW;AAAA,IACtC,MAAM,eAAe,OAAO,SAAS,QAAQ,iBAAiB,GAAG;AAAA,IACjE,MAAM,QAAQ;AAAA,MACZ,UAAU,iCAAiC,OAAO;AAAA,MAClD,UAAU,+BAA+B,OAAO;AAAA,IAClD;AAAA,IACA,IAAI,OAAO,gBAAgB;AAAA,MACzB,MAAM,KAAK,UAAU,iCAAiC,OAAO,uCAAuC;AAAA,IACtG;AAAA,IACA,OAAO,MAAM,KAAK;AAAA,CACrB;AAAA,GACE,EAAE,KAAK;AAAA,CACT;AAAA,EACC,MAAM,oBAAoB,QAAQ,IAAI,CAAC,WAAW;AAAA,IAChD,MAAM,eAAe,OAAO,SAAS,QAAQ,iBAAiB,GAAG;AAAA,IACjE,MAAM,eAAe;AAAA,MACnB,2EAA2E;AAAA,IAC7E;AAAA,IACA,IAAI,OAAO,gBAAgB;AAAA,MACzB,aAAa,KAAK,2EAA2E,4BAA4B;AAAA,IAC3H;AAAA,IACA,MAAM,uBAAuB,OAAO,mBAAmB,6BAA6B,KAAK,UAAU,OAAO,kBAAkB,MAAM,EAAE,OAAO;AAAA,IAC3I,OAAO;AAAA,qBACU,OAAO;AAAA;AAAA,EAE1B,aAAa,KAAK;AAAA,CACnB;AAAA;AAAA,iEAEgE,0BAA0B,uBAAuB;AAAA,IAC9G,uBAAuB;AAAA;AAAA,GAExB,EAAE,KAAK;AAAA,CACT;AAAA,EACC,MAAM,cAAc;AAAA;AAAA,qBAED,IAAI,KAAK,EAAE,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,OAAa,cAAQ,UAAU,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAC3D,MAAM,WAAW,YAAY,aAAa,OAAO;AAAA,EACjD,QAAQ,IAAI,aAAmB,eAAS,UAAU,UAAU,QAAQ,gBAAgB;AAAA;AAEtF,eAAe,IAAI,CAAC,SAAS;AAAA,EAC3B,MAAM,OAAO,KAAK,kBAAkB,MAAM,QAAQ;AAAA,EAClD,IAAI;AAAA,IACF,QAAQ,IAAI,kCAAkC;AAAA,IAC9C,QAAQ,IAAI,aAAa,KAAK,YAAY;AAAA,IAC1C,QAAQ,IAAI,iBAAiB,KAAK,WAAW;AAAA,IAC7C,QAAQ,IAAI,aAAa,KAAK,YAAY;AAAA,IAC1C,MAAM,SAAS,MAAM,WAAW,KAAK,UAAU;AAAA,IAC/C,QAAQ,IAAI,SAAS,OAAO,QAAQ,2BAA2B;AAAA,IAC/D,MAAM,mBAAmB,CAAC;AAAA,IAC1B,WAAW,UAAU,OAAO,SAAS;AAAA,MACnC,QAAQ,IAAI,cAAc,OAAO,aAAa;AAAA,MAC9C,QAAQ,IAAI,2BAA2B;AAAA,MACvC,MAAM,eAAe,MAAM,iBAAiB,OAAO,UAAU,OAAO,MAAM,KAAK,WAAW,KAAK,UAAU;AAAA,MACzG,QAAQ,IAAI,iBAAiB,OAAO,QAAQ,WAAW,6BAA6B;AAAA,MACpF,MAAM,iBAAiB,MAAM,0BAA0B,OAAO,UAAU,OAAO,QAAQ,YAAY,KAAK,WAAW,KAAK,YAAY,cAAc,KAAK,UAAU;AAAA,MACjK,IAAI;AAAA,MACJ,IAAI,OAAO,QAAQ,cAAc,OAAO,QAAQ,WAAW,SAAS,GAAG;AAAA,QACrE,QAAQ,IAAI,iBAAiB,OAAO,QAAQ,WAAW,6BAA6B;AAAA,QACpF,iBAAiB,MAAM,0BAA0B,OAAO,UAAU,OAAO,QAAQ,YAAY,KAAK,WAAW,KAAK,YAAY,cAAc,KAAK,UAAU;AAAA,MAC7J;AAAA,MACA,iBAAiB,KAAK;AAAA,QACpB,UAAU,OAAO;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA,kBAAkB,OAAO;AAAA,MAC3B,CAAC;AAAA,MACD,QAAQ,IAAI,sBAAsB,OAAO,UAAU;AAAA,IACrD;AAAA,IACA,QAAQ,IAAI,2BAA2B;AAAA,IACvC,MAAM,2BAA2B,kBAAkB,KAAK,UAAU;AAAA,IAClE,QAAQ,IAAI,uCAAuC;AAAA,IACnD,OAAO,OAAO;AAAA,IACd,QAAQ,MAAM,yBAAyB,KAAK;AAAA,IAC5C,QAAQ,KAAK,CAAC;AAAA;AAAA;AAGlB,IAAI,OAAO,CAAC;AAGZ,SAAS,mBAAmB,GAAG;AAAA,EAC7B,MAAM,mBAAmB,aAAa;AAAA,EACtC,MAAM,iBAAiB;AAAA,IACrB,UAAU,iBAAiB;AAAA,EAC7B;AAAA,EACA,OAAO,UAAU,sBAAsB,MAAM;AAAA,IAC3C,MAAM,UAAU,IAAI,iBAAiB,cAAc;AAAA,IACnD,iBAAiB,GAAG,iBAAiB,CAAC,UAAU;AAAA,MAC9C,QAAQ,YAAY,MAAM,cAAc;AAAA,KACzC;AAAA,IACD,OAAO;AAAA,GACR;AAAA;AAAA;AAIH,MAAM,gBAAgB;AAAA,EACpB,YAAY,CAAC;AAAA,EACb,YAAY,CAAC;AAAA,EACb,YAAY,CAAC,UAAU,QAAQ;AAAA,IAC7B,MAAM,WAAW;AAAA,MACf,UAAU,IAAI,IAAI,MAAM,KAAK,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC;AAAA,MAC7F;AAAA,IACF;AAAA,IACA,KAAK,UAAU,KAAK,QAAQ;AAAA,IAC5B,KAAK,YAAY,CAAC;AAAA;AAAA,EAEpB,IAAI,GAAG;AAAA,IACL,IAAI,KAAK,UAAU,WAAW;AAAA,MAC5B,OAAO;AAAA,IACT,OAAO,KAAK,UAAU,IAAI;AAAA;AAAA,EAE5B,IAAI,GAAG;AAAA,IACL,IAAI,KAAK,UAAU,WAAW;AAAA,MAC5B,OAAO;AAAA,IACT,OAAO,KAAK,UAAU,IAAI;AAAA;AAAA,EAE5B,QAAQ,CAAC,UAAU;AAAA,IACjB,KAAK,UAAU,KAAK,QAAQ;AAAA;AAAA,EAE9B,QAAQ,CAAC,UAAU;AAAA,IACjB,KAAK,UAAU,KAAK,QAAQ;AAAA;AAAA,EAE9B,KAAK,GAAG;AAAA,IACN,KAAK,YAAY,CAAC;AAAA,IAClB,KAAK,YAAY,CAAC;AAAA;AAAA,EAEpB,OAAO,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,SAAS;AAAA;AAAA,EAEjC,OAAO,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,SAAS;AAAA;AAEnC;AAAA;AAGA,MAAM,mBAAmB;AAAA,EACvB;AAAA,EACA;AAAA,EACA,WAAW,IAAI;AAAA,EACf,mBAAmB,IAAI;AAAA,EACvB,WAAW,IAAI;AAAA,EACf,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU,IAAI;AAAA,EACd,eAAe,IAAI;AAAA,EACnB,eAAe,IAAI;AAAA,EACnB,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,CAAC,YAAY,YAAY;AAAA,IAClC,KAAK,aAAa;AAAA,IAClB,KAAK,aAAa;AAAA,IAClB,KAAK,yBAAyB,WAAW,eAAe,KAAK,UAAU;AAAA,IACvE,KAAK,0BAA0B,WAAW,gBAAgB,KAAK,UAAU;AAAA,IACzE,KAAK,4BAA4B,WAAW,kBAAkB,KAAK,UAAU;AAAA,IAC7E,KAAK,uBAAuB,WAAW,aAAa,KAAK,UAAU;AAAA,IACnE,KAAK,yBAAyB,WAAW,eAAe,KAAK,UAAU;AAAA,IACvE,KAAK,6BAA6B,WAAW,mBAAmB,KAAK,UAAU;AAAA,IAC/E,KAAK,qBAAqB,WAAW,WAAW,KAAK,UAAU;AAAA,IAC/D,KAAK,qBAAqB,WAAW,WAAW,KAAK,UAAU;AAAA,IAC/D,KAAK,qBAAqB,WAAW,WAAW,KAAK,UAAU;AAAA,IAC/D,KAAK,sBAAsB,WAAW,YAAY,KAAK,UAAU;AAAA,IACjE,KAAK,kBAAkB,WAAW,QAAQ,KAAK,UAAU;AAAA,IACzD,KAAK,sBAAsB,WAAW,YAAY,KAAK,UAAU;AAAA,IACjE,KAAK,gBAAgB,WAAW,MAAM,KAAK,UAAU;AAAA,IACrD,KAAK,kBAAkB,WAAW,QAAQ,KAAK,UAAU;AAAA,IACzD,KAAK,qBAAqB,WAAW,WAAW,KAAK,UAAU;AAAA,IAC/D,KAAK,uCAAuC,WAAW,mBAAmB,KAAK,UAAU;AAAA,IACzF,KAAK,eAAe,WAAW,KAAK,KAAK,UAAU;AAAA,IACnD,KAAK,eAAe,WAAW,KAAK,KAAK,UAAU;AAAA,IACnD,KAAK,mBAAmB;AAAA,IACxB,KAAK,aAAa;AAAA,IAClB,KAAK,cAAc;AAAA,IACnB,KAAK,iCAAiC;AAAA,IACtC,KAAK,aAAa;AAAA,IAClB,KAAK,2BAA2B;AAAA;AAAA,EAElC,kBAAkB,GAAG;AAAA,IACnB,KAAK,WAAW,iBAAiB,MAAM;AAAA,MACrC,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,uBAAuB;AAAA,QAC5B;AAAA,MACF;AAAA,MACA,MAAM,gBAAgB,KAAK,WAAW,gBAAgB,EAAE;AAAA,MACxD,MAAM,eAAe,KAAK,WAAW,aAAa;AAAA,MAClD,IAAI,cAAc;AAAA,QAChB,KAAK,uBAAuB;AAAA,QAC5B;AAAA,MACF;AAAA,MACA,MAAM,eAAe,gBAAgB;AAAA,MACrC,IAAI,eAAe,GAAG;AAAA,QACpB,KAAK,uBAAuB;AAAA,QAC5B;AAAA,MACF;AAAA,MACA,MAAM,iBAAiB,KAAK,6BAA6B,YAAY;AAAA,MACrE,IAAI,kBAAkB,iBAAiB,eAAe,KAAK;AAAA,QACzD,KAAK,WAAW,kBAAkB,eAAe,QAAQ,CAAC;AAAA,QAC1D;AAAA,MACF;AAAA,MACA,KAAK,uBAAuB;AAAA;AAAA,IAE9B,KAAK,WAAW,kBAAkB,MAAM;AAAA,MACtC,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,wBAAwB;AAAA,QAC7B;AAAA,MACF;AAAA,MACA,MAAM,gBAAgB,KAAK,WAAW,gBAAgB,EAAE;AAAA,MACxD,MAAM,eAAe,KAAK,WAAW,aAAa;AAAA,MAClD,IAAI,cAAc;AAAA,QAChB,KAAK,wBAAwB;AAAA,QAC7B;AAAA,MACF;AAAA,MACA,MAAM,eAAe,gBAAgB;AAAA,MACrC,MAAM,aAAa,KAAK,WAAW,QAAQ,EAAE;AAAA,MAC7C,IAAI,eAAe,YAAY;AAAA,QAC7B,KAAK,wBAAwB;AAAA,QAC7B;AAAA,MACF;AAAA,MACA,MAAM,iBAAiB,KAAK,6BAA6B,YAAY;AAAA,MACrE,IAAI,kBAAkB,iBAAiB,eAAe,OAAO;AAAA,QAC3D,KAAK,WAAW,kBAAkB,eAAe,GAAG;AAAA,QACpD;AAAA,MACF;AAAA,MACA,KAAK,wBAAwB;AAAA;AAAA,IAE/B,KAAK,WAAW,eAAe,MAAM;AAAA,MACnC,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,qBAAqB;AAAA,QAC1B;AAAA,MACF;AAAA,MACA,MAAM,eAAe,KAAK,WAAW,aAAa;AAAA,MAClD,IAAI,cAAc;AAAA,QAChB,KAAK,qBAAqB;AAAA,QAC1B;AAAA,MACF;AAAA,MACA,MAAM,gBAAgB,KAAK,WAAW,gBAAgB,EAAE;AAAA,MACxD,KAAK,qBAAqB;AAAA,MAC1B,MAAM,YAAY,KAAK,WAAW,gBAAgB,EAAE;AAAA,MACpD,MAAM,iBAAiB,KAAK,6BAA6B,SAAS;AAAA,MAClE,IAAI,gBAAgB;AAAA,QAClB,MAAM,kBAAkB,YAAY,eAAe;AAAA,QACnD,MAAM,gBAAgB,eAAe,MAAM;AAAA,QAC3C,IAAI,kBAAkB,eAAe;AAAA,UACnC,KAAK,WAAW,kBAAkB,eAAe,QAAQ,CAAC;AAAA,QAC5D,EAAO;AAAA,UACL,KAAK,WAAW,kBAAkB,eAAe,GAAG;AAAA;AAAA,MAExD;AAAA;AAAA,IAEF,KAAK,WAAW,iBAAiB,MAAM;AAAA,MACrC,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,uBAAuB;AAAA,QAC5B;AAAA,MACF;AAAA,MACA,MAAM,eAAe,KAAK,WAAW,aAAa;AAAA,MAClD,IAAI,cAAc;AAAA,QAChB,KAAK,uBAAuB;AAAA,QAC5B;AAAA,MACF;AAAA,MACA,MAAM,gBAAgB,KAAK,WAAW,gBAAgB,EAAE;AAAA,MACxD,KAAK,uBAAuB;AAAA,MAC5B,MAAM,YAAY,KAAK,WAAW,gBAAgB,EAAE;AAAA,MACpD,MAAM,iBAAiB,KAAK,6BAA6B,SAAS;AAAA,MAClE,IAAI,gBAAgB;AAAA,QAClB,MAAM,kBAAkB,YAAY,eAAe;AAAA,QACnD,MAAM,gBAAgB,eAAe,MAAM;AAAA,QAC3C,IAAI,kBAAkB,eAAe;AAAA,UACnC,MAAM,iBAAiB,eAAe,QAAQ;AAAA,UAC9C,MAAM,eAAe,kBAAkB,gBAAgB,eAAe,MAAM;AAAA,UAC5E,KAAK,WAAW,kBAAkB,YAAY;AAAA,QAChD,EAAO;AAAA,UACL,KAAK,WAAW,kBAAkB,eAAe,GAAG;AAAA;AAAA,MAExD;AAAA;AAAA,IAEF,KAAK,WAAW,oBAAoB,CAAC,WAAW;AAAA,MAC9C,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,0BAA0B,MAAM;AAAA,QACrC;AAAA,MACF;AAAA,MACA,MAAM,gBAAgB,KAAK,WAAW,gBAAgB,EAAE;AAAA,MACxD,MAAM,eAAe,KAAK,WAAW,aAAa;AAAA,MAClD,IAAI,cAAc;AAAA,QAChB,KAAK,0BAA0B,MAAM;AAAA,QACrC;AAAA,MACF;AAAA,MACA,MAAM,gBAAgB,SAAS;AAAA,MAC/B,IAAI,eAAe;AAAA,QACjB,MAAM,iBAAiB,KAAK,6BAA6B,MAAM;AAAA,QAC/D,IAAI,kBAAkB,iBAAiB,eAAe,OAAO;AAAA,UAC3D,KAAK,0BAA0B,eAAe,GAAG;AAAA,UACjD;AAAA,QACF;AAAA,MACF,EAAO;AAAA,QACL,WAAW,WAAW,KAAK,SAAS,OAAO,GAAG;AAAA,UAC5C,IAAI,QAAQ,WAAW,iBAAiB,QAAQ,OAAO,SAAS,QAAQ,OAAO,UAAU,QAAQ,OAAO;AAAA,YACtG,KAAK,0BAA0B,QAAQ,QAAQ,CAAC;AAAA,YAChD;AAAA,UACF;AAAA,QACF;AAAA;AAAA,MAEF,KAAK,0BAA0B,MAAM;AAAA;AAAA;AAAA,EAGzC,YAAY,GAAG;AAAA,IACb,KAAK,WAAW,qBAAqB,MAAM;AAAA,MACzC,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,2BAA2B;AAAA,QAChC;AAAA,MACF;AAAA,MACA,KAAK,aAAa;AAAA,MAClB,MAAM,gBAAgB,KAAK,WAAW,gBAAgB,EAAE;AAAA,MACxD,MAAM,eAAe,KAAK,WAAW,aAAa;AAAA,MAClD,IAAI,kBAAkB,GAAG;AAAA,QACvB,KAAK,2BAA2B;AAAA,QAChC;AAAA,MACF;AAAA,MACA,IAAI,cAAc;AAAA,QAChB,KAAK,2BAA2B;AAAA,QAChC;AAAA,MACF;AAAA,MACA,MAAM,eAAe,gBAAgB;AAAA,MACrC,MAAM,iBAAiB,KAAK,6BAA6B,YAAY;AAAA,MACrE,IAAI,kBAAkB,kBAAkB,eAAe,KAAK;AAAA,QAC1D,MAAM,cAAc,KAAK,iBAAiB,eAAe,KAAK;AAAA,QAC9D,MAAM,YAAY,KAAK,iBAAiB,eAAe,GAAG;AAAA,QAC1D,MAAM,eAAe,eAAe;AAAA,QACpC,MAAM,eAAe,eAAe,MAAM,eAAe;AAAA,QACzD,KAAK,kBAAkB,eAAe,EAAE;AAAA,QACxC,KAAK,oBAAoB,YAAY,KAAK,YAAY,KAAK,UAAU,KAAK,UAAU,GAAG;AAAA,QACvF,KAAK,4BAA4B,cAAc,YAAY;AAAA,QAC3D,KAAK,iBAAiB;AAAA,QACtB;AAAA,MACF;AAAA,MACA,KAAK,2BAA2B;AAAA,MAChC,KAAK,4BAA4B,cAAc,CAAC;AAAA;AAAA,IAElD,KAAK,WAAW,aAAa,MAAM;AAAA,MACjC,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,mBAAmB;AAAA,QACxB;AAAA,MACF;AAAA,MACA,KAAK,aAAa;AAAA,MAClB,MAAM,gBAAgB,KAAK,WAAW,gBAAgB,EAAE;AAAA,MACxD,MAAM,aAAa,KAAK,WAAW,QAAQ,EAAE;AAAA,MAC7C,MAAM,eAAe,KAAK,WAAW,aAAa;AAAA,MAClD,IAAI,iBAAiB,YAAY;AAAA,QAC/B,KAAK,mBAAmB;AAAA,QACxB;AAAA,MACF;AAAA,MACA,IAAI,cAAc;AAAA,QAChB,KAAK,mBAAmB;AAAA,QACxB;AAAA,MACF;AAAA,MACA,MAAM,eAAe;AAAA,MACrB,MAAM,iBAAiB,KAAK,6BAA6B,YAAY;AAAA,MACrE,IAAI,kBAAkB,kBAAkB,eAAe,OAAO;AAAA,QAC5D,MAAM,cAAc,KAAK,iBAAiB,eAAe,KAAK;AAAA,QAC9D,MAAM,YAAY,KAAK,iBAAiB,eAAe,GAAG;AAAA,QAC1D,MAAM,eAAe,eAAe;AAAA,QACpC,MAAM,eAAe,eAAe,MAAM,eAAe;AAAA,QACzD,KAAK,kBAAkB,eAAe,EAAE;AAAA,QACxC,KAAK,oBAAoB,YAAY,KAAK,YAAY,KAAK,UAAU,KAAK,UAAU,GAAG;AAAA,QACvF,KAAK,4BAA4B,cAAc,YAAY;AAAA,QAC3D,KAAK,iBAAiB;AAAA,QACtB;AAAA,MACF;AAAA,MACA,KAAK,mBAAmB;AAAA,MACxB,KAAK,4BAA4B,cAAc,CAAC;AAAA;AAAA,IAElD,KAAK,WAAW,cAAc,CAAC,WAAW,UAAU,SAAS,WAAW;AAAA,MACtE,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,oBAAoB,WAAW,UAAU,SAAS,MAAM;AAAA,QAC7D;AAAA,MACF;AAAA,MACA,KAAK,aAAa;AAAA,MAClB,MAAM,cAAc,KAAK,iBAAiB,WAAW,QAAQ;AAAA,MAC7D,MAAM,YAAY,KAAK,iBAAiB,SAAS,MAAM;AAAA,MACvD,MAAM,SAAS,YAAY;AAAA,MAC3B,KAAK,oBAAoB,WAAW,UAAU,SAAS,MAAM;AAAA,MAC7D,KAAK,4BAA4B,aAAa,MAAM;AAAA;AAAA,IAEtD,KAAK,WAAW,aAAa,MAAM;AAAA,MACjC,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,mBAAmB;AAAA,QACxB;AAAA,MACF;AAAA,MACA,KAAK,aAAa;AAAA,MAClB,MAAM,OAAO,KAAK,WAAW,QAAQ;AAAA,MACrC,MAAM,gBAAgB,KAAK,WAAW,gBAAgB,EAAE;AAAA,MACxD,IAAI,YAAY;AAAA,MAChB,SAAS,IAAI,gBAAgB,EAAE,KAAK,GAAG,KAAK;AAAA,QAC1C,IAAI,KAAK,OAAO;AAAA,GACrB;AAAA,UACO,YAAY,IAAI;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,MACA,IAAI,UAAU,KAAK;AAAA,MACnB,SAAS,IAAI,cAAc,IAAI,KAAK,QAAQ,KAAK;AAAA,QAC/C,IAAI,KAAK,OAAO;AAAA,GACrB;AAAA,UACO,UAAU,IAAI;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAM,eAAe,UAAU;AAAA,MAC/B,KAAK,mBAAmB;AAAA,MACxB,KAAK,4BAA4B,WAAW,YAAY;AAAA;AAAA;AAAA,EAG5D,aAAa,GAAG;AAAA,IACd,KAAK,WAAW,aAAa,CAAC,SAAS;AAAA,MACrC,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,mBAAmB,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,MACA,KAAK,aAAa;AAAA,MAClB,MAAM,gBAAgB,KAAK,WAAW,gBAAgB,EAAE;AAAA,MACxD,KAAK,mBAAmB,IAAI;AAAA,MAC5B,KAAK,6BAA6B,eAAe,KAAK,MAAM;AAAA;AAAA,IAE9D,KAAK,WAAW,aAAa,CAAC,SAAS;AAAA,MACrC,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,mBAAmB,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,MACA,KAAK,aAAa;AAAA,MAClB,MAAM,gBAAgB,KAAK,WAAW,gBAAgB,EAAE;AAAA,MACxD,KAAK,mBAAmB,IAAI;AAAA,MAC5B,KAAK,6BAA6B,eAAe,CAAC;AAAA;AAAA,IAEpD,KAAK,WAAW,UAAU,CAAC,SAAS;AAAA,MAClC,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,gBAAgB,IAAI;AAAA,QACzB;AAAA,MACF;AAAA,MACA,KAAK,MAAM;AAAA,MACX,KAAK,gBAAgB,IAAI;AAAA;AAAA,IAE3B,KAAK,WAAW,cAAc,CAAC,SAAS;AAAA,MACtC,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,oBAAoB,IAAI;AAAA,QAC7B;AAAA,MACF;AAAA,MACA,KAAK,aAAa;AAAA,MAClB,KAAK,MAAM;AAAA,MACX,KAAK,oBAAoB,IAAI;AAAA;AAAA,IAE/B,KAAK,WAAW,QAAQ,MAAM;AAAA,MAC5B,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,cAAc;AAAA,QACnB;AAAA,MACF;AAAA,MACA,KAAK,aAAa;AAAA,MAClB,KAAK,MAAM;AAAA,MACX,KAAK,cAAc;AAAA;AAAA,IAErB,KAAK,WAAW,UAAU,MAAM;AAAA,MAC9B,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,gBAAgB;AAAA,QACrB;AAAA,MACF;AAAA,MACA,KAAK,aAAa;AAAA,MAClB,MAAM,gBAAgB,KAAK,WAAW,gBAAgB,EAAE;AAAA,MACxD,KAAK,gBAAgB;AAAA,MACrB,KAAK,6BAA6B,eAAe,CAAC;AAAA;AAAA;AAAA,EAGtD,gCAAgC,GAAG;AAAA,IACjC,KAAK,WAAW,qBAAqB,MAAM;AAAA,MACzC,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,qCAAqC;AAAA,QAC1C;AAAA,MACF;AAAA,MACA,KAAK,aAAa;AAAA,MAClB,MAAM,YAAY,KAAK,WAAW,aAAa;AAAA,MAC/C,IAAI,CAAC,WAAW;AAAA,QACd,KAAK,qCAAqC;AAAA,QAC1C;AAAA,MACF;AAAA,MACA,MAAM,eAAe,KAAK,IAAI,UAAU,OAAO,UAAU,GAAG;AAAA,MAC5D,MAAM,eAAe,KAAK,IAAI,UAAU,MAAM,UAAU,KAAK;AAAA,MAC7D,KAAK,qCAAqC;AAAA,MAC1C,IAAI,eAAe,GAAG;AAAA,QACpB,KAAK,4BAA4B,cAAc,YAAY;AAAA,MAC7D;AAAA;AAAA;AAAA,EAGJ,0BAA0B,GAAG;AAAA,IAC3B,KAAK,WAAW,GAAG,mBAAmB,MAAM;AAAA,MAC1C,IAAI,KAAK;AAAA,QACP;AAAA,MACF,KAAK,iBAAiB;AAAA,KACvB;AAAA;AAAA,EAEH,iBAAiB,CAAC,IAAI;AAAA,IACpB,MAAM,UAAU,KAAK,SAAS,IAAI,EAAE;AAAA,IACpC,IAAI,SAAS;AAAA,MACX,KAAK,SAAS,OAAO,EAAE;AAAA,MACvB,KAAK,iBAAiB,IAAI,QAAQ,MAAM,GAAG,OAAO,EAAE;AAAA,MACpD,KAAK,SAAS,OAAO,EAAE;AAAA,IACzB;AAAA;AAAA,EAEF,4BAA4B,CAAC,QAAQ;AAAA,IACnC,WAAW,WAAW,KAAK,SAAS,OAAO,GAAG;AAAA,MAC5C,IAAI,QAAQ,WAAW,UAAU,QAAQ,SAAS,SAAS,QAAQ,KAAK;AAAA,QACtE,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAET,4BAA4B,CAAC,cAAc,QAAQ;AAAA,IACjD,WAAW,WAAW,KAAK,SAAS,OAAO,GAAG;AAAA,MAC5C,IAAI,QAAQ,SAAS,cAAc;AAAA,QACjC,QAAQ,SAAS;AAAA,QACjB,QAAQ,OAAO;AAAA,MACjB,EAAO,SAAI,QAAQ,MAAM,cAAc;AAAA,QACrC,QAAQ,OAAO;AAAA,MACjB;AAAA,IACF;AAAA,IACA,KAAK,iBAAiB;AAAA;AAAA,EAExB,2BAA2B,CAAC,cAAc,QAAQ;AAAA,IAChD,MAAM,WAAW,CAAC;AAAA,IAClB,WAAW,WAAW,KAAK,SAAS,OAAO,GAAG;AAAA,MAC5C,IAAI,QAAQ,OAAO,cAAc;AAAA,QAC/B;AAAA,MACF;AAAA,MACA,IAAI,QAAQ,SAAS,eAAe,QAAQ;AAAA,QAC1C,QAAQ,SAAS;AAAA,QACjB,QAAQ,OAAO;AAAA,MACjB,EAAO,SAAI,QAAQ,SAAS,gBAAgB,QAAQ,OAAO,eAAe,QAAQ;AAAA,QAChF,SAAS,KAAK,QAAQ,EAAE;AAAA,MAC1B,EAAO,SAAI,QAAQ,QAAQ,gBAAgB,QAAQ,MAAM,eAAe,QAAQ;AAAA,QAC9E,QAAQ,OAAO;AAAA,MACjB,EAAO,SAAI,QAAQ,QAAQ,gBAAgB,QAAQ,MAAM,cAAc;AAAA,QACrE,QAAQ,OAAO,KAAK,IAAI,QAAQ,KAAK,eAAe,MAAM,IAAI;AAAA,MAChE,EAAO,SAAI,QAAQ,QAAQ,eAAe,UAAU,QAAQ,MAAM,eAAe,QAAQ;AAAA,QACvF,MAAM,UAAU,eAAe,SAAS,QAAQ;AAAA,QAChD,QAAQ,QAAQ;AAAA,QAChB,QAAQ,OAAO;AAAA,MACjB;AAAA,IACF;AAAA,IACA,WAAW,MAAM,UAAU;AAAA,MACzB,KAAK,kBAAkB,EAAE;AAAA,IAC3B;AAAA,IACA,KAAK,iBAAiB;AAAA;AAAA,EAExB,gBAAgB,CAAC,QAAQ;AAAA,IACvB,MAAM,SAAS,KAAK,WAAW,iBAAiB,MAAM;AAAA,IACtD,IAAI,CAAC,QAAQ;AAAA,MACX,OAAO,EAAE,KAAK,GAAG,KAAK,EAAE;AAAA,IAC1B;AAAA,IACA,OAAO;AAAA;AAAA,EAET,gBAAgB,CAAC,KAAK,KAAK;AAAA,IACzB,OAAO,KAAK,WAAW,iBAAiB,KAAK,GAAG;AAAA;AAAA,EAElD,gBAAgB,GAAG;AAAA,IACjB,KAAK,WAAW,mBAAmB;AAAA,IACnC,WAAW,WAAW,KAAK,SAAS,OAAO,GAAG;AAAA,MAC5C,IAAI,QAAQ,YAAY,WAAW;AAAA,QACjC,MAAM,uBAAuB,KAAK,wBAAwB,QAAQ,KAAK;AAAA,QACvE,MAAM,qBAAqB,KAAK,wBAAwB,QAAQ,GAAG;AAAA,QACnE,KAAK,WAAW,wBAAwB;AAAA,UACtC,OAAO;AAAA,UACP,KAAK;AAAA,UACL,SAAS,QAAQ;AAAA,UACjB,UAAU,QAAQ,YAAY;AAAA,UAC9B,OAAO,QAAQ;AAAA,QACjB,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA,EAEF,uBAAuB,CAAC,QAAQ;AAAA,IAC9B,MAAM,OAAO,KAAK,WAAW,QAAQ;AAAA,IACrC,IAAI,oBAAoB;AAAA,IACxB,IAAI,eAAe;AAAA,IACnB,IAAI,IAAI;AAAA,IACR,OAAO,IAAI,KAAK,UAAU,oBAAoB,QAAQ;AAAA,MACpD,IAAI,KAAK,OAAO;AAAA,GACnB;AAAA,QACK;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAO;AAAA,QACL,IAAI,IAAI;AAAA,QACR,OAAO,IAAI,KAAK,UAAU,KAAK,OAAO;AAAA,GAC3C;AAAA,UACO;AAAA,QACF;AAAA,QACA,MAAM,QAAQ,KAAK,UAAU,GAAG,CAAC;AAAA,QACjC,MAAM,aAAa,IAAI,YAAY,KAAK;AAAA,QACxC,IAAI,oBAAoB,aAAa,QAAQ;AAAA,UAC3C,qBAAqB;AAAA,UACrB,IAAI;AAAA,QACN,EAAO;AAAA,UACL,SAAS,IAAI,EAAE,IAAI,KAAK,oBAAoB,QAAQ,KAAK;AAAA,YACvD,MAAM,YAAY,IAAI,YAAY,KAAK,EAAE;AAAA,YACzC,qBAAqB;AAAA,UACvB;AAAA,UACA;AAAA;AAAA;AAAA,IAGN;AAAA,IACA,OAAO,SAAS;AAAA;AAAA,EAElB,MAAM,CAAC,SAAS;AAAA,IACd,IAAI,KAAK,WAAW;AAAA,MAClB,MAAM,IAAI,MAAM,iCAAiC;AAAA,IACnD;AAAA,IACA,MAAM,KAAK,KAAK;AAAA,IAChB,MAAM,SAAS,QAAQ,UAAU;AAAA,IACjC,MAAM,UAAU;AAAA,MACd;AAAA,MACA,OAAO,QAAQ;AAAA,MACf,KAAK,QAAQ;AAAA,MACb,SAAS,QAAQ,WAAW;AAAA,MAC5B,SAAS,QAAQ;AAAA,MACjB,UAAU,QAAQ;AAAA,MAClB,MAAM,QAAQ;AAAA,MACd;AAAA,IACF;AAAA,IACA,KAAK,SAAS,IAAI,IAAI,OAAO;AAAA,IAC7B,IAAI,CAAC,KAAK,iBAAiB,IAAI,MAAM,GAAG;AAAA,MACtC,KAAK,iBAAiB,IAAI,QAAQ,IAAI,GAAG;AAAA,IAC3C;AAAA,IACA,KAAK,iBAAiB,IAAI,MAAM,EAAE,IAAI,EAAE;AAAA,IACxC,IAAI,QAAQ,aAAa,WAAW;AAAA,MAClC,KAAK,SAAS,IAAI,IAAI,QAAQ,QAAQ;AAAA,IACxC;AAAA,IACA,KAAK,iBAAiB;AAAA,IACtB,OAAO;AAAA;AAAA,EAET,MAAM,CAAC,IAAI;AAAA,IACT,IAAI,KAAK,WAAW;AAAA,MAClB,MAAM,IAAI,MAAM,iCAAiC;AAAA,IACnD;AAAA,IACA,MAAM,UAAU,KAAK,SAAS,IAAI,EAAE;AAAA,IACpC,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,KAAK,kBAAkB,EAAE;AAAA,IACzB,KAAK,iBAAiB;AAAA,IACtB,OAAO;AAAA;AAAA,EAET,GAAG,CAAC,IAAI;AAAA,IACN,IAAI,KAAK;AAAA,MACP,OAAO;AAAA,IACT,OAAO,KAAK,SAAS,IAAI,EAAE,KAAK;AAAA;AAAA,EAElC,MAAM,GAAG;AAAA,IACP,IAAI,KAAK;AAAA,MACP,OAAO,CAAC;AAAA,IACV,OAAO,MAAM,KAAK,KAAK,SAAS,OAAO,CAAC;AAAA;AAAA,EAE1C,UAAU,GAAG;AAAA,IACX,IAAI,KAAK;AAAA,MACP,OAAO,CAAC;AAAA,IACV,OAAO,MAAM,KAAK,KAAK,SAAS,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO;AAAA;AAAA,EAEnE,WAAW,CAAC,QAAQ;AAAA,IAClB,IAAI,KAAK;AAAA,MACP,OAAO,CAAC;AAAA,IACV,OAAO,MAAM,KAAK,KAAK,SAAS,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG;AAAA;AAAA,EAE7F,eAAe,CAAC,QAAQ;AAAA,IACtB,IAAI,KAAK;AAAA,MACP,OAAO,CAAC;AAAA,IACV,MAAM,MAAM,KAAK,iBAAiB,IAAI,MAAM;AAAA,IAC5C,IAAI,CAAC;AAAA,MACH,OAAO,CAAC;AAAA,IACV,OAAO,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,MAAM,SAAS;AAAA;AAAA,EAEzF,KAAK,GAAG;AAAA,IACN,IAAI,KAAK;AAAA,MACP;AAAA,IACF,KAAK,SAAS,MAAM;AAAA,IACpB,KAAK,iBAAiB,MAAM;AAAA,IAC5B,KAAK,SAAS,MAAM;AAAA,IACpB,KAAK,iBAAiB;AAAA;AAAA,EAExB,YAAY,GAAG;AAAA,IACb,KAAK,QAAQ,aAAa,KAAK,UAAU,KAAK,MAAM;AAAA;AAAA,EAEtD,eAAe,CAAC,UAAU;AAAA,IACxB,KAAK,WAAW,IAAI,IAAI,MAAM,KAAK,SAAS,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC;AAAA,IAC5G,KAAK,SAAS,SAAS;AAAA,IACvB,KAAK,iBAAiB;AAAA;AAAA,EAExB,YAAY,GAAG;AAAA,IACb,KAAK,WAAW,OAAO,MAAM;AAAA,MAC3B,IAAI,KAAK,WAAW;AAAA,QAClB,OAAO,KAAK,aAAa;AAAA,MAC3B;AAAA,MACA,IAAI,CAAC,KAAK,QAAQ,QAAQ,GAAG;AAAA,QAC3B,OAAO,KAAK,aAAa;AAAA,MAC3B;AAAA,MACA,MAAM,kBAAkB;AAAA,QACtB,UAAU,IAAI,IAAI,MAAM,KAAK,KAAK,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC;AAAA,QAClG,QAAQ,KAAK;AAAA,MACf;AAAA,MACA,KAAK,QAAQ,SAAS,eAAe;AAAA,MACrC,MAAM,WAAW,KAAK,QAAQ,KAAK;AAAA,MACnC,KAAK,gBAAgB,QAAQ;AAAA,MAC7B,OAAO,KAAK,aAAa;AAAA;AAAA,IAE3B,KAAK,WAAW,OAAO,MAAM;AAAA,MAC3B,IAAI,KAAK,WAAW;AAAA,QAClB,OAAO,KAAK,aAAa;AAAA,MAC3B;AAAA,MACA,IAAI,CAAC,KAAK,QAAQ,QAAQ,GAAG;AAAA,QAC3B,OAAO,KAAK,aAAa;AAAA,MAC3B;AAAA,MACA,MAAM,kBAAkB;AAAA,QACtB,UAAU,IAAI,IAAI,MAAM,KAAK,KAAK,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC;AAAA,QAClG,QAAQ,KAAK;AAAA,MACf;AAAA,MACA,KAAK,QAAQ,SAAS,eAAe;AAAA,MACrC,MAAM,WAAW,KAAK,QAAQ,KAAK;AAAA,MACnC,KAAK,gBAAgB,QAAQ;AAAA,MAC7B,OAAO,KAAK,aAAa;AAAA;AAAA;AAAA,EAG7B,YAAY,CAAC,UAAU;AAAA,IACrB,IAAI,KAAK,WAAW;AAAA,MAClB,MAAM,IAAI,MAAM,iCAAiC;AAAA,IACnD;AAAA,IACA,MAAM,WAAW,KAAK,aAAa,IAAI,QAAQ;AAAA,IAC/C,IAAI,aAAa,WAAW;AAAA,MAC1B,OAAO;AAAA,IACT;AAAA,IACA,MAAM,SAAS,KAAK;AAAA,IACpB,KAAK,aAAa,IAAI,UAAU,MAAM;AAAA,IACtC,KAAK,aAAa,IAAI,QAAQ,QAAQ;AAAA,IACtC,OAAO;AAAA;AAAA,EAET,SAAS,CAAC,UAAU;AAAA,IAClB,IAAI,KAAK;AAAA,MACP,OAAO;AAAA,IACT,OAAO,KAAK,aAAa,IAAI,QAAQ,KAAK;AAAA;AAAA,EAE5C,WAAW,CAAC,QAAQ;AAAA,IAClB,IAAI,KAAK;AAAA,MACP,OAAO;AAAA,IACT,OAAO,KAAK,aAAa,IAAI,MAAM,KAAK;AAAA;AAAA,EAE1C,cAAc,CAAC,WAAW;AAAA,IACxB,IAAI,KAAK;AAAA,MACP;AAAA,IACF,OAAO,KAAK,SAAS,IAAI,SAAS;AAAA;AAAA,EAEpC,OAAO,GAAG;AAAA,IACR,IAAI,KAAK;AAAA,MACP;AAAA,IACF,KAAK,WAAW,iBAAiB,KAAK;AAAA,IACtC,KAAK,WAAW,kBAAkB,KAAK;AAAA,IACvC,KAAK,WAAW,oBAAoB,KAAK;AAAA,IACzC,KAAK,WAAW,eAAe,KAAK;AAAA,IACpC,KAAK,WAAW,iBAAiB,KAAK;AAAA,IACtC,KAAK,WAAW,qBAAqB,KAAK;AAAA,IAC1C,KAAK,WAAW,aAAa,KAAK;AAAA,IAClC,KAAK,WAAW,aAAa,KAAK;AAAA,IAClC,KAAK,WAAW,aAAa,KAAK;AAAA,IAClC,KAAK,WAAW,cAAc,KAAK;AAAA,IACnC,KAAK,WAAW,UAAU,KAAK;AAAA,IAC/B,KAAK,WAAW,cAAc,KAAK;AAAA,IACnC,KAAK,WAAW,QAAQ,KAAK;AAAA,IAC7B,KAAK,WAAW,UAAU,KAAK;AAAA,IAC/B,KAAK,WAAW,aAAa,KAAK;AAAA,IAClC,KAAK,WAAW,qBAAqB,KAAK;AAAA,IAC1C,KAAK,WAAW,OAAO,KAAK;AAAA,IAC5B,KAAK,WAAW,OAAO,KAAK;AAAA,IAC5B,KAAK,SAAS,MAAM;AAAA,IACpB,KAAK,iBAAiB,MAAM;AAAA,IAC5B,KAAK,SAAS,MAAM;AAAA,IACpB,KAAK,aAAa,MAAM;AAAA,IACxB,KAAK,aAAa,MAAM;AAAA,IACxB,KAAK,QAAQ,MAAM;AAAA,IACnB,KAAK,YAAY;AAAA;AAErB;AACA,SAAS,wBAAwB,CAAC,YAAY,YAAY;AAAA,EACxD,OAAO,IAAI,mBAAmB,YAAY,UAAU;AAAA;AAItD,IAAI,gBAAgB;AACpB,IAAI,uBAAuB;AAC3B,SAAS,cAAc,CAAC,MAAM;AAAA,EAC5B,MAAM,MAAM,SAAS,MAAM,EAAE;AAAA,EAC7B,MAAM,SAAS,KAAK,IAAI,KAAK,UAAU;AAAA,EACvC,OAAO,KAAK,MAAM,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAAA;AAEnE,SAAS,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM;AAAA,EAC5B,IAAI;AAAA,IACF,OAAO,IAAI,KAAK,YAAY;AAAA,EAC9B,IAAI,KAAK,KAAK;AAAA,IACZ,OAAO,IAAI,eAAe,CAAC,IAAI,eAAe,CAAC,IAAI,eAAe,CAAC;AAAA,EACrE,OAAO;AAAA;AAET,SAAS,WAAW,CAAC,KAAK;AAAA,EACxB,MAAM,UAAU,IAAI,QAAQ,SAAS,UAAU;AAAA,EAC/C,OAAO,aAAa;AAAA;AAAA;AAGtB,MAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB,CAAC;AAAA,EACnB,eAAe,CAAC;AAAA,EAChB;AAAA,EACA,WAAW,CAAC,OAAO,QAAQ,SAAS,cAAc;AAAA,IAChD,KAAK,QAAQ;AAAA,IACb,KAAK,SAAS;AAAA,IACd,KAAK,UAAU,YAAY,CAAC,SAAS,OAAO,MAAM,IAAI;AAAA,IACtD,KAAK,eAAe,gBAAgB;AAAA;AAAA,EAEtC,QAAQ,CAAC,KAAK;AAAA,IACZ,MAAM,OAAO,KAAK,eAAe,YAAY,GAAG,IAAI;AAAA,IACpD,OAAO,KAAK,QAAQ,IAAI;AAAA;AAAA,EAE1B,OAAO,GAAG;AAAA,IACR,aAAa,OAAO,aAAa,KAAK,iBAAiB;AAAA,MACrD,KAAK,MAAM,eAAe,OAAO,OAAO;AAAA,IAC1C;AAAA,IACA,KAAK,kBAAkB,CAAC;AAAA,IACxB,WAAW,SAAS,KAAK,cAAc;AAAA,MACrC,aAAa,KAAK;AAAA,IACpB;AAAA,IACA,KAAK,eAAe,CAAC;AAAA;AAAA,OAEjB,iBAAgB,CAAC,YAAY,KAAK;AAAA,IACtC,MAAM,MAAM,KAAK;AAAA,IACjB,MAAM,MAAM,KAAK;AAAA,IACjB,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI;AAAA,MACrB,OAAO;AAAA,IACT,OAAO,IAAI,QAAQ,CAAC,aAAa;AAAA,MAC/B,IAAI,SAAS;AAAA,MACb,MAAM,SAAS,CAAC,UAAU;AAAA,QACxB,UAAU,MAAM,SAAS;AAAA,QACzB,cAAc,YAAY;AAAA,QAC1B,IAAI,cAAc,KAAK,MAAM,GAAG;AAAA,UAC9B,QAAQ;AAAA,UACR,SAAS,IAAI;AAAA,QACf;AAAA;AAAA,MAEF,MAAM,YAAY,MAAM;AAAA,QACtB,QAAQ;AAAA,QACR,SAAS,KAAK;AAAA;AAAA,MAEhB,MAAM,UAAU,MAAM;AAAA,QACpB,aAAa,KAAK;AAAA,QAClB,IAAI,eAAe,QAAQ,MAAM;AAAA,QACjC,MAAM,cAAc,KAAK,gBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,MAAM;AAAA,QAC9E,IAAI,gBAAgB;AAAA,UAClB,KAAK,gBAAgB,OAAO,aAAa,CAAC;AAAA,QAC5C,MAAM,WAAW,KAAK,aAAa,QAAQ,KAAK;AAAA,QAChD,IAAI,aAAa;AAAA,UACf,KAAK,aAAa,OAAO,UAAU,CAAC;AAAA;AAAA,MAExC,MAAM,QAAQ,WAAW,WAAW,SAAS;AAAA,MAC7C,KAAK,aAAa,KAAK,KAAK;AAAA,MAC5B,IAAI,GAAG,QAAQ,MAAM;AAAA,MACrB,KAAK,gBAAgB,KAAK,EAAE,OAAO,QAAQ,SAAS,OAAO,CAAC;AAAA,MAC5D,KAAK,SAAS,gBAAgB;AAAA,KAC/B;AAAA;AAAA,OAEG,aAAY,CAAC,SAAS,YAAY,MAAM;AAAA,IAC5C,MAAM,MAAM,KAAK;AAAA,IACjB,MAAM,MAAM,KAAK;AAAA,IACjB,MAAM,UAAU,IAAI;AAAA,IACpB,QAAQ,QAAQ,CAAC,MAAM,QAAQ,IAAI,GAAG,IAAI,CAAC;AAAA,IAC3C,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,OAAO;AAAA,MAC5B,OAAO;AAAA,IACT;AAAA,IACA,OAAO,IAAI,QAAQ,CAAC,aAAa;AAAA,MAC/B,IAAI,SAAS;AAAA,MACb,IAAI,mBAAmB,KAAK,IAAI;AAAA,MAChC,IAAI,YAAY;AAAA,MAChB,MAAM,SAAS,CAAC,UAAU;AAAA,QACxB,UAAU,MAAM,SAAS;AAAA,QACzB,mBAAmB,KAAK,IAAI;AAAA,QAC5B,IAAI;AAAA,QACJ,cAAc,YAAY;AAAA,QAC1B,OAAO,IAAI,cAAc,KAAK,MAAM,GAAG;AAAA,UACrC,MAAM,MAAM,SAAS,EAAE,IAAI,EAAE;AAAA,UAC7B,IAAI,QAAQ,IAAI,GAAG;AAAA,YACjB,QAAQ,IAAI,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;AAAA,QAClD;AAAA,QACA,IAAI,OAAO,SAAS;AAAA,UAClB,SAAS,OAAO,MAAM,KAAK;AAAA,QAC7B,MAAM,OAAO,CAAC,GAAG,QAAQ,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,MAAM,IAAI,EAAE;AAAA,QAC7D,IAAI,SAAS,QAAQ,MAAM;AAAA,UACzB,QAAQ;AAAA,UACR,SAAS,OAAO;AAAA,UAChB;AAAA,QACF;AAAA,QACA,IAAI;AAAA,UACF,aAAa,SAAS;AAAA,QACxB,YAAY,WAAW,MAAM;AAAA,UAC3B,QAAQ;AAAA,UACR,SAAS,OAAO;AAAA,WACf,GAAG;AAAA,QACN,IAAI;AAAA,UACF,KAAK,aAAa,KAAK,SAAS;AAAA;AAAA,MAEpC,MAAM,YAAY,MAAM;AAAA,QACtB,QAAQ;AAAA,QACR,SAAS,OAAO;AAAA;AAAA,MAElB,MAAM,UAAU,MAAM;AAAA,QACpB,aAAa,KAAK;AAAA,QAClB,IAAI;AAAA,UACF,aAAa,SAAS;AAAA,QACxB,IAAI,eAAe,QAAQ,MAAM;AAAA,QACjC,MAAM,cAAc,KAAK,gBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,MAAM;AAAA,QAC9E,IAAI,gBAAgB;AAAA,UAClB,KAAK,gBAAgB,OAAO,aAAa,CAAC;AAAA,QAC5C,MAAM,WAAW,KAAK,aAAa,QAAQ,KAAK;AAAA,QAChD,IAAI,aAAa;AAAA,UACf,KAAK,aAAa,OAAO,UAAU,CAAC;AAAA,QACtC,IAAI,WAAW;AAAA,UACb,MAAM,eAAe,KAAK,aAAa,QAAQ,SAAS;AAAA,UACxD,IAAI,iBAAiB;AAAA,YACnB,KAAK,aAAa,OAAO,cAAc,CAAC;AAAA,QAC5C;AAAA;AAAA,MAEF,MAAM,QAAQ,WAAW,WAAW,SAAS;AAAA,MAC7C,KAAK,aAAa,KAAK,KAAK;AAAA,MAC5B,IAAI,GAAG,QAAQ,MAAM;AAAA,MACrB,KAAK,gBAAgB,KAAK,EAAE,OAAO,QAAQ,SAAS,OAAO,CAAC;AAAA,MAC5D,KAAK,SAAS,QAAQ,IAAI,CAAC,MAAM,UAAU,SAAS,EAAE,KAAK,EAAE,CAAC;AAAA,KAC/D;AAAA;AAAA,OAEG,mBAAkB,CAAC,YAAY,MAAM;AAAA,IACzC,MAAM,MAAM,KAAK;AAAA,IACjB,MAAM,MAAM,KAAK;AAAA,IACjB,MAAM,UAAU;AAAA,MACd,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,IACA,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,OAAO;AAAA,MAC5B,OAAO;AAAA,IACT;AAAA,IACA,OAAO,IAAI,QAAQ,CAAC,aAAa;AAAA,MAC/B,IAAI,SAAS;AAAA,MACb,IAAI,YAAY;AAAA,MAChB,MAAM,SAAS,CAAC,UAAU;AAAA,QACxB,UAAU,MAAM,SAAS;AAAA,QACzB,IAAI;AAAA,QACJ,qBAAqB,YAAY;AAAA,QACjC,OAAO,IAAI,qBAAqB,KAAK,MAAM,GAAG;AAAA,UAC5C,MAAM,MAAM,SAAS,EAAE,IAAI,EAAE;AAAA,UAC7B,IAAI,OAAO,SAAS;AAAA,YAClB,QAAQ,OAAO,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;AAAA,UAC7C;AAAA,QACF;AAAA,QACA,IAAI,OAAO,SAAS;AAAA,UAClB,SAAS,OAAO,MAAM,KAAK;AAAA,QAC7B,MAAM,OAAO,OAAO,OAAO,OAAO,EAAE,OAAO,CAAC,MAAM,MAAM,IAAI,EAAE;AAAA,QAC9D,IAAI,SAAS,OAAO,KAAK,OAAO,EAAE,QAAQ;AAAA,UACxC,QAAQ;AAAA,UACR,SAAS,OAAO;AAAA,UAChB;AAAA,QACF;AAAA,QACA,IAAI;AAAA,UACF,aAAa,SAAS;AAAA,QACxB,YAAY,WAAW,MAAM;AAAA,UAC3B,QAAQ;AAAA,UACR,SAAS,OAAO;AAAA,WACf,GAAG;AAAA,QACN,IAAI;AAAA,UACF,KAAK,aAAa,KAAK,SAAS;AAAA;AAAA,MAEpC,MAAM,YAAY,MAAM;AAAA,QACtB,QAAQ;AAAA,QACR,SAAS,OAAO;AAAA;AAAA,MAElB,MAAM,UAAU,MAAM;AAAA,QACpB,aAAa,KAAK;AAAA,QAClB,IAAI;AAAA,UACF,aAAa,SAAS;AAAA,QACxB,IAAI,eAAe,QAAQ,MAAM;AAAA,QACjC,MAAM,cAAc,KAAK,gBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,MAAM;AAAA,QAC9E,IAAI,gBAAgB;AAAA,UAClB,KAAK,gBAAgB,OAAO,aAAa,CAAC;AAAA,QAC5C,MAAM,WAAW,KAAK,aAAa,QAAQ,KAAK;AAAA,QAChD,IAAI,aAAa;AAAA,UACf,KAAK,aAAa,OAAO,UAAU,CAAC;AAAA,QACtC,IAAI,WAAW;AAAA,UACb,MAAM,eAAe,KAAK,aAAa,QAAQ,SAAS;AAAA,UACxD,IAAI,iBAAiB;AAAA,YACnB,KAAK,aAAa,OAAO,cAAc,CAAC;AAAA,QAC5C;AAAA;AAAA,MAEF,MAAM,QAAQ,WAAW,WAAW,SAAS;AAAA,MAC7C,KAAK,aAAa,KAAK,KAAK;AAAA,MAC5B,IAAI,GAAG,QAAQ,MAAM;AAAA,MACrB,KAAK,gBAAgB,KAAK,EAAE,OAAO,QAAQ,SAAS,OAAO,CAAC;AAAA,MAC5D,KAAK,SAAS;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,EAAE,CAAC;AAAA,KACX;AAAA;AAAA,OAEG,OAAM,CAAC,SAAS;AAAA,IACpB,QAAQ,UAAU,MAAM,OAAO,OAAO,WAAW,CAAC;AAAA,IAClD,MAAM,YAAY,MAAM,KAAK,iBAAiB;AAAA,IAC9C,IAAI,CAAC,WAAW;AAAA,MACd,OAAO;AAAA,QACL,SAAS,MAAM,IAAI,EAAE,KAAK,IAAI;AAAA,QAC9B,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,aAAa;AAAA,QACb,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,QACjB,eAAe;AAAA,QACf,eAAe;AAAA,QACf,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,MAAM,iBAAiB,CAAC,GAAG,MAAM,IAAI,EAAE,KAAK,CAAC;AAAA,IAC7C,OAAO,gBAAgB,iBAAiB,MAAM,QAAQ,IAAI;AAAA,MACxD,KAAK,aAAa,gBAAgB,OAAO;AAAA,MACzC,KAAK,mBAAmB,OAAO;AAAA,IACjC,CAAC;AAAA,IACD,OAAO;AAAA,MACL,SAAS,CAAC,GAAG,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,eAAe,IAAI,CAAC,KAAK,IAAI;AAAA,MACzE,mBAAmB,cAAc;AAAA,MACjC,mBAAmB,cAAc;AAAA,MACjC,aAAa,cAAc;AAAA,MAC3B,iBAAiB,cAAc;AAAA,MAC/B,iBAAiB,cAAc;AAAA,MAC/B,eAAe,cAAc;AAAA,MAC7B,eAAe,cAAc;AAAA,MAC7B,qBAAqB,cAAc;AAAA,MACnC,qBAAqB,cAAc;AAAA,IACrC;AAAA;AAEJ;AACA,SAAS,qBAAqB,CAAC,OAAO,QAAQ,SAAS,cAAc;AAAA,EACnE,OAAO,IAAI,gBAAgB,OAAO,QAAQ,SAAS,YAAY;AAAA;AASjE,SAAS,eAAe,CAAC,SAAS,YAAY,gBAAgB;AAAA,EAC5D,IAAI,SAAS;AAAA,EACb,IAAI,YAAY,MAAM;AAAA,IACpB,UAAU;AAAA,EACZ,EAAO,SAAI,MAAM,QAAQ,OAAO,GAAG;AAAA,IACjC,IAAI,QAAQ,SAAS,KAAK;AAAA,MACxB,UAAU;AAAA,IACZ,IAAI,QAAQ,SAAS,OAAO;AAAA,MAC1B,UAAU;AAAA,IACZ,IAAI,QAAQ,SAAS,QAAQ;AAAA,MAC3B,UAAU;AAAA,IACZ,IAAI,QAAQ,SAAS,MAAM;AAAA,MACzB,UAAU;AAAA,EACd;AAAA,EACA,IAAI,YAAY;AAAA,IACd,UAAU;AAAA,EACZ;AAAA,EACA,MAAM,eAAe;AAAA,IACnB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAAA,EACA,MAAM,YAAY,aAAa;AAAA,EAC/B,UAAU,aAAa;AAAA,EACvB,OAAO;AAAA;AAAA;AAGT,MAAM,gBAAgB;AAAA,SACb,cAAc;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,cAAc;AAAA,EACd,aAAa;AAAA,MACT,GAAG,GAAG;AAAA,IACR,OAAO,KAAK;AAAA;AAAA,EAEd,KAAK,GAAG;AAAA,IACN,IAAI,KAAK;AAAA,MACP,MAAM,IAAI,MAAM,UAAU,KAAK,iBAAiB;AAAA;AAAA,MAEhD,OAAO,GAAG;AAAA,IACZ,KAAK,MAAM;AAAA,IACX,IAAI,KAAK,gBAAgB,MAAM;AAAA,MAC7B,MAAM,OAAO,KAAK,SAAS,KAAK;AAAA,MAChC,MAAM,UAAU,KAAK,IAAI,iBAAiB,KAAK,SAAS;AAAA,MACxD,MAAM,QAAQ,KAAK,IAAI,eAAe,KAAK,SAAS;AAAA,MACpD,MAAM,QAAQ,KAAK,IAAI,eAAe,KAAK,SAAS;AAAA,MACpD,MAAM,gBAAgB,KAAK,IAAI,uBAAuB,KAAK,SAAS;AAAA,MACpE,KAAK,cAAc;AAAA,QACjB,MAAM,IAAI,YAAY,cAAc,SAAS,GAAG,OAAO,CAAC,CAAC;AAAA,QACzD,IAAI,IAAI,aAAa,cAAc,OAAO,GAAG,OAAO,IAAI,CAAC,CAAC;AAAA,QAC1D,IAAI,IAAI,aAAa,cAAc,OAAO,GAAG,OAAO,IAAI,CAAC,CAAC;AAAA,QAC1D,YAAY,IAAI,YAAY,cAAc,eAAe,GAAG,OAAO,CAAC,CAAC;AAAA,MACvE;AAAA,IACF;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,EAEd,WAAW,CAAC,KAAK,OAAM,OAAO,QAAQ,SAAS;AAAA,IAC7C,KAAK,KAAK,QAAQ,MAAM,MAAM,gBAAgB;AAAA,IAC9C,KAAK,MAAM;AAAA,IACX,KAAK,eAAe,QAAQ,gBAAgB;AAAA,IAC5C,KAAK,SAAS;AAAA,IACd,KAAK,UAAU;AAAA,IACf,KAAK,eAAe,QAAQ,eAAe;AAAA,IAC3C,KAAK,YAAY;AAAA;AAAA,SAEZ,MAAM,CAAC,OAAO,QAAQ,aAAa,UAAU,CAAC,GAAG;AAAA,IACtD,MAAM,MAAM,iBAAiB;AAAA,IAC7B,MAAM,eAAe,QAAQ,gBAAgB;AAAA,IAC7C,MAAM,KAAK,QAAQ,MAAM,QAAQ,GAAG,KAAK,MAAM,KAAK,QAAQ,KAAK;AAAA,IACjE,MAAM,SAAS,IAAI,sBAAsB,OAAO,QAAQ,aAAa,cAAc,EAAE;AAAA,IACrF,OAAO;AAAA;AAAA,MAEL,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,KAAK,GAAG;AAAA,IACV,OAAO,KAAK;AAAA;AAAA,MAEV,MAAM,GAAG;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,EAEd,eAAe,CAAC,cAAc;AAAA,IAC5B,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,sBAAsB,KAAK,WAAW,YAAY;AAAA,IAC3D,KAAK,eAAe;AAAA;AAAA,EAEtB,WAAW,GAAG;AAAA,IACZ,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,YAAY,KAAK,SAAS;AAAA;AAAA,EAE5C,gBAAgB,CAAC,gBAAgB,OAAO;AAAA,IACtC,KAAK,MAAM;AAAA,IACX,MAAM,WAAW,KAAK,IAAI,sBAAsB,KAAK,SAAS;AAAA,IAC9D,MAAM,eAAe,IAAI,WAAW,QAAQ;AAAA,IAC5C,MAAM,eAAe,KAAK,IAAI,yBAAyB,KAAK,WAAW,cAAc,aAAa;AAAA,IAClG,OAAO,aAAa,MAAM,GAAG,YAAY;AAAA;AAAA,EAE3C,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,QAAQ,MAAM,IAAI,KAAK,IAAI,KAAK,eAAe,KAAK;AAAA,IACpD,MAAM,QAAQ,CAAC;AAAA,IACf,MAAM,yBAAyB;AAAA,IAC/B,MAAM,iBAAiB;AAAA,IACvB,MAAM,gBAAgB,KAAK,iBAAiB,IAAI;AAAA,IAChD,MAAM,gBAAgB,IAAI,YAAY,EAAE,OAAO,aAAa,EAAE,MAAM;AAAA,CACvE;AAAA,IACG,SAAS,IAAI,EAAE,IAAI,KAAK,SAAS,KAAK;AAAA,MACpC,MAAM,QAAQ,CAAC;AAAA,MACf,IAAI,cAAc;AAAA,MAClB,MAAM,YAAY,CAAC,GAAG,cAAc,MAAM,EAAE;AAAA,MAC5C,IAAI,UAAU;AAAA,MACd,SAAS,IAAI,EAAE,IAAI,KAAK,QAAQ,KAAK;AAAA,QACnC,MAAM,IAAI,IAAI,KAAK,SAAS;AAAA,QAC5B,MAAM,KAAK,KAAK;AAAA,QAChB,MAAM,SAAS,KAAK,WAAW,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAAA,QACzF,MAAM,SAAS,KAAK,WAAW,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAAA,QACzF,MAAM,YAAY,WAAW,KAAK;AAAA,QAClC,MAAM,kBAAkB,KAAK,oBAAoB;AAAA,QACjD,MAAM,WAAW,iBAAiB,KAAK,UAAU,cAAc;AAAA,QAC/D,IAAI,eAAe,YAAY,GAAG,OAAO,MAAM,KAAK,YAAY,GAAG,OAAO,MAAM,KAAK,YAAY,eAAe,WAAW;AAAA,UACzH,YAAY,QAAQ;AAAA,UACpB,YAAY,SAAS;AAAA,QACvB,EAAO;AAAA,UACL,IAAI,aAAa;AAAA,YACf,MAAM,KAAK,WAAW;AAAA,UACxB;AAAA,UACA,cAAc;AAAA,YACZ,MAAM;AAAA,YACN,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,YAAY;AAAA,YACZ,OAAO;AAAA,UACT;AAAA;AAAA,MAEJ;AAAA,MACA,IAAI,aAAa;AAAA,QACf,MAAM,KAAK,WAAW;AAAA,MACxB;AAAA,MACA,MAAM,KAAK,EAAE,MAAM,CAAC;AAAA,IACtB;AAAA,IACA,OAAO;AAAA;AAAA,EAET,KAAK,CAAC,MAAM,KAAK,WAAW,GAAG,GAAG,GAAG,CAAC,GAAG;AAAA,IACvC,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,YAAY,KAAK,WAAW,GAAG;AAAA;AAAA,EAE1C,OAAO,CAAC,GAAG,GAAG,MAAM,KAAK,KAAK,aAAa,GAAG;AAAA,IAC5C,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,cAAc,KAAK,WAAW,GAAG,GAAG,MAAM,KAAK,KAAK,UAAU;AAAA;AAAA,EAEzE,wBAAwB,CAAC,GAAG,GAAG,MAAM,KAAK,KAAK,aAAa,GAAG;AAAA,IAC7D,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,+BAA+B,KAAK,WAAW,GAAG,GAAG,MAAM,KAAK,KAAK,UAAU;AAAA;AAAA,EAE1F,QAAQ,CAAC,MAAM,GAAG,GAAG,KAAK,KAAK,aAAa,GAAG,YAAY;AAAA,IACzD,KAAK,MAAM;AAAA,IACX,IAAI,CAAC,YAAY;AAAA,MACf,KAAK,IAAI,eAAe,KAAK,WAAW,MAAM,GAAG,GAAG,KAAK,KAAK,UAAU;AAAA,MACxE;AAAA,IACF;AAAA,IACA,QAAQ,OAAO,QAAQ;AAAA,IACvB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI,WAAW,SAAS;AAAA,MACtB,cAAc,WAAW;AAAA,MACzB,cAAc,WAAW,WAAW;AAAA,IACtC,EAAO;AAAA,MACL,MAAM,YAAY,OAAO,KAAK,WAAW,GAAG,GAAG,GAAG,CAAC;AAAA,MACnD,cAAc,UAAU,IAAI,IAAI,YAAY,KAAK,WAAW,GAAG,GAAG,GAAG,CAAC;AAAA,MACtE,cAAc;AAAA;AAAA,IAEhB,IAAI,QAAQ,GAAG;AAAA,MACb,MAAM,aAAa,KAAK,MAAM,GAAG,KAAK;AAAA,MACtC,KAAK,IAAI,eAAe,KAAK,WAAW,YAAY,GAAG,GAAG,KAAK,KAAK,UAAU;AAAA,IAChF;AAAA,IACA,IAAI,MAAM,OAAO;AAAA,MACf,MAAM,eAAe,KAAK,MAAM,OAAO,GAAG;AAAA,MAC1C,KAAK,IAAI,eAAe,KAAK,WAAW,cAAc,IAAI,OAAO,GAAG,aAAa,aAAa,UAAU;AAAA,IAC1G;AAAA,IACA,IAAI,MAAM,KAAK,QAAQ;AAAA,MACrB,MAAM,YAAY,KAAK,MAAM,GAAG;AAAA,MAChC,KAAK,IAAI,eAAe,KAAK,WAAW,WAAW,IAAI,KAAK,GAAG,KAAK,KAAK,UAAU;AAAA,IACrF;AAAA;AAAA,EAEF,QAAQ,CAAC,GAAG,GAAG,OAAO,QAAQ,KAAK;AAAA,IACjC,KAAK,IAAI,eAAe,KAAK,WAAW,GAAG,GAAG,OAAO,QAAQ,GAAG;AAAA;AAAA,EAElE,eAAe,CAAC,OAAO,OAAO,aAAa,SAAS,SAAS,aAAa,cAAc;AAAA,IACtF,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,gBAAgB,KAAK,WAAW,OAAO,OAAO,YAAY,KAAK,SAAS,SAAS,aAAa,YAAY;AAAA;AAAA,EAErH,OAAO,GAAG;AAAA,IACR,IAAI,KAAK;AAAA,MACP;AAAA,IACF,KAAK,aAAa;AAAA,IAClB,KAAK,IAAI,uBAAuB,KAAK,SAAS;AAAA;AAAA,EAEhD,cAAc,CAAC,gBAAgB,GAAG,GAAG;AAAA,IACnC,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,yBAAyB,KAAK,WAAW,eAAe,KAAK,GAAG,CAAC;AAAA;AAAA,EAE5E,cAAc,CAAC,YAAY,GAAG,GAAG;AAAA,IAC/B,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,qBAAqB,KAAK,WAAW,WAAW,KAAK,GAAG,CAAC;AAAA;AAAA,EAEpE,qBAAqB,CAAC,GAAG,GAAG,cAAc,iBAAiB,QAAQ,oBAAoB;AAAA,IACrF,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,4BAA4B,KAAK,WAAW,GAAG,GAAG,cAAc,iBAAiB,QAAQ,kBAAkB;AAAA;AAAA,EAEtH,gBAAgB,CAAC,SAAS,SAAS,MAAM,MAAM,oBAAoB,qBAAqB;AAAA,IACtF,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,uBAAuB,KAAK,WAAW,SAAS,SAAS,MAAM,MAAM,oBAAoB,mBAAmB;AAAA;AAAA,EAEvH,mBAAmB,CAAC,MAAM,MAAM,aAAa,UAAU,WAAW,MAAM,MAAM,MAAM,MAAM;AAAA,IACxF,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,0BAA0B,KAAK,WAAW,MAAM,MAAM,IAAI,WAAW,GAAG,UAAU,WAAW,KAAK,GAAG;AAAA;AAAA,EAEhH,+BAA+B,CAAC,MAAM,MAAM,aAAa,UAAU,WAAW,MAAM,MAAM,MAAM,MAAM;AAAA,IACpG,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,sCAAsC,KAAK,WAAW,MAAM,MAAM,IAAI,WAAW,GAAG,UAAU,WAAW,KAAK,GAAG;AAAA;AAAA,EAE5H,MAAM,CAAC,OAAO,QAAQ;AAAA,IACpB,KAAK,MAAM;AAAA,IACX,IAAI,KAAK,WAAW,SAAS,KAAK,YAAY;AAAA,MAC5C;AAAA,IACF,KAAK,SAAS;AAAA,IACd,KAAK,UAAU;AAAA,IACf,KAAK,cAAc;AAAA,IACnB,KAAK,IAAI,aAAa,KAAK,WAAW,OAAO,MAAM;AAAA;AAAA,EAErD,OAAO,CAAC,SAAS;AAAA,IACf,KAAK,MAAM;AAAA,IACX,MAAM,QAAQ,iBAAiB,QAAQ,aAAa,QAAQ;AAAA,IAC5D,MAAM,cAAc,QAAQ,qBAAqB,iBAAiB;AAAA,IAClE,MAAM,gBAAgB,gBAAgB,QAAQ,QAAQ,QAAQ,cAAc,OAAO,QAAQ,kBAAkB,MAAM;AAAA,IACnH,KAAK,IAAI,cAAc,KAAK,WAAW,QAAQ,GAAG,QAAQ,GAAG,QAAQ,OAAO,QAAQ,QAAQ,aAAa,eAAe,QAAQ,aAAa,QAAQ,iBAAiB,QAAQ,SAAS,IAAI;AAAA;AAAA,EAE7L,eAAe,CAAC,GAAG,GAAG,OAAO,QAAQ;AAAA,IACnC,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,sBAAsB,KAAK,WAAW,GAAG,GAAG,OAAO,MAAM;AAAA;AAAA,EAEpE,cAAc,GAAG;AAAA,IACf,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,qBAAqB,KAAK,SAAS;AAAA;AAAA,EAE9C,iBAAiB,GAAG;AAAA,IAClB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,wBAAwB,KAAK,SAAS;AAAA;AAAA,EAEjD,WAAW,CAAC,SAAS;AAAA,IACnB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,kBAAkB,KAAK,WAAW,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,CAAC;AAAA;AAAA,EAE9E,UAAU,GAAG;AAAA,IACX,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,iBAAiB,KAAK,SAAS;AAAA;AAAA,EAE1C,iBAAiB,GAAG;AAAA,IAClB,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,wBAAwB,KAAK,SAAS;AAAA;AAAA,EAExD,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,mBAAmB,KAAK,SAAS;AAAA;AAAA,EAE5C,aAAa,CAAC,MAAM;AAAA,IAClB,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,cAAc,MAAM,KAAK,YAAY;AAAA;AAAA,EAEvD,WAAW,CAAC,SAAS;AAAA,IACnB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,YAAY,OAAO;AAAA;AAAA,EAE9B,QAAQ,CAAC,MAAM,GAAG,GAAG,KAAK,KAAK,aAAa,GAAG;AAAA,IAC7C,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,eAAe,KAAK,WAAW,MAAM,GAAG,GAAG,KAAK,KAAK,UAAU;AAAA;AAE5E;AAIA,SAAS,UAAU,IAAI,MAAM;AAAA,EAC3B,MAAM,UAAU,KAAK,KAAK,GAAG;AAAA,EAC7B,QAAQ,MAAM,gBAAgB,OAAO;AAAA,EACrC,MAAM,IAAI,MAAM,OAAO;AAAA;AAEzB,IAAI,cAAc,QAAQ,SAAS,SAAS,QAAQ,SAAS,UAAU,IAAI;AAC3E,IAAI,YAAY;AAAA,EACd,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,SAAS;AAAA,EACT,KAAK;AACP;AACA,IAAI,gBAAgB,OAAO,KAAK,SAAS;AACzC,SAAS,eAAe,CAAC,MAAM;AAAA,EAC7B,OAAO,OAAO,SAAS,YAAY,cAAc,SAAS,IAAI;AAAA;AAEhE,IAAI,iBAAiB,KAAK,UAAU;AACpC,IAAI,cAAc;AAAA,EAChB,IAAI,CAAC,MAAM,WAAW,KAAK,SAAS,MAAM;AAAA,EAC1C,SAAS,CAAC,MAAM,WAAW,QAAQ,KAAK,SAAS,MAAM,CAAC;AAAA,EACxD,UAAU,CAAC,MAAM,WAAW,QAAQ,KAAK,UAAU,QAAQ,IAAI,CAAC;AAAA,EAChE,KAAK,CAAC,MAAM,WAAW,KAAK,UAAU,QAAQ,IAAI;AAAA,EAClD,KAAK,CAAC,MAAM,WAAW,KAAK,SAAS,QAAQ,IAAI;AAAA,EACjD,KAAK,CAAC,MAAM,WAAW,KAAK,UAAU,QAAQ,IAAI;AAAA,EAClD,KAAK,CAAC,MAAM,WAAW,KAAK,aAAa,QAAQ,IAAI;AAAA,EACrD,KAAK,CAAC,MAAM,WAAW,KAAK,WAAW,QAAQ,IAAI;AAAA,EACnD,KAAK,CAAC,MAAM,WAAW,KAAK,WAAW,QAAQ,IAAI;AAAA,EACnD,KAAK,CAAC,MAAM,WAAW,KAAK,SAAS,QAAQ,IAAI;AAAA,EACjD,SAAS,CAAC,MAAM,WAAW,gBAAgB,IAAI,KAAK,aAAa,QAAQ,IAAI,IAAI,OAAO,KAAK,UAAU,QAAQ,IAAI,CAAC;AACtH;AACA,SAAS,kBAAkB,CAAC,MAAM;AAAA,EAChC,OAAO,OAAO,SAAS,YAAY,SAAS,QAAQ,KAAK,WAAW;AAAA;AAEtE,SAAS,WAAW,CAAC,QAAQ,OAAO;AAAA,EAClC,OAAO,UAAU,QAAQ,KAAK,EAAE,QAAQ;AAAA;AAE1C,SAAS,aAAa,CAAC,OAAO;AAAA,EAC5B,MAAM,IAAI,UAAU,uBAAuB,OAAO;AAAA;AAEpD,SAAS,UAAU,CAAC,SAAS,OAAO,OAAO;AAAA,EACzC,MAAM,WAAW,OAAO,YAAY,OAAO,QAAQ,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,EACnF,OAAO;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,EAAE,CAAC,OAAO;AAAA,MACR,OAAO,OAAO,UAAU,WAAW,QAAQ,QAAQ,UAAU,cAAc,OAAO,KAAK,CAAC;AAAA;AAAA,IAE1F,IAAI,CAAC,OAAO;AAAA,MACV,OAAO,SAAS,UAAU,cAAc,OAAO,KAAK,CAAC;AAAA;AAAA,IAEvD,MAAM;AAAA,EACR;AAAA;AAEF,SAAS,MAAM,CAAC,MAAM;AAAA,EACpB,OAAO,OAAO,SAAS,YAAY,KAAK,WAAW;AAAA;AAErD,SAAS,QAAQ,CAAC,MAAM;AAAA,EACtB,OAAO,OAAO,SAAS,YAAY,KAAK,WAAW;AAAA;AAErD,SAAS,gBAAgB,CAAC,MAAM;AAAA,EAC9B,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,QAAQ;AAAA,SACD;AAAA,MACH,OAAO,CAAC,MAAM,KAAK,QAAQ,KAAK,SAAS,KAAK,GAAG;AAAA,MACjD,SAAS,CAAC,MAAM,QAAQ,KAAK,SAAS,GAAG;AAAA,MACzC;AAAA,SACG;AAAA,MACH,OAAO,CAAC,MAAM,KAAK,QAAQ,KAAK,SAAS,KAAK,MAAM,IAAI,CAAC;AAAA,MACzD,SAAS,CAAC,MAAM,QAAQ,QAAQ,KAAK,SAAS,GAAG,CAAC;AAAA,MAClD;AAAA,SACG;AAAA,MACH,OAAO,CAAC,MAAM,KAAK,QAAQ,KAAK,UAAU,KAAK,MAAM,IAAI,GAAG,IAAI;AAAA,MAChE,SAAS,CAAC,MAAM,QAAQ,QAAQ,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,MACzD;AAAA,SACG;AAAA,MACH,OAAO,CAAC,MAAM,KAAK,QAAQ,KAAK,UAAU,KAAK,KAAK,IAAI;AAAA,MACxD,SAAS,CAAC,MAAM,QAAQ,KAAK,UAAU,KAAK,IAAI;AAAA,MAChD;AAAA,SACG;AAAA,MACH,OAAO,CAAC,MAAM,KAAK,QAAQ,KAAK,SAAS,KAAK,KAAK,IAAI;AAAA,MACvD,SAAS,CAAC,MAAM,QAAQ,KAAK,SAAS,KAAK,IAAI;AAAA,MAC/C;AAAA,SACG;AAAA,MACH,OAAO,CAAC,MAAM,KAAK,QAAQ,KAAK,UAAU,KAAK,KAAK,IAAI;AAAA,MACxD,SAAS,CAAC,MAAM,QAAQ,KAAK,UAAU,KAAK,IAAI;AAAA,MAChD;AAAA,SACG;AAAA,MACH,OAAO,CAAC,MAAM,KAAK,QAAQ,KAAK,SAAS,KAAK,KAAK,IAAI;AAAA,MACvD,SAAS,CAAC,MAAM,QAAQ,KAAK,SAAS,KAAK,IAAI;AAAA,MAC/C;AAAA,SACG;AAAA,MACH,OAAO,CAAC,MAAM,KAAK,QAAQ,KAAK,aAAa,KAAK,OAAO,GAAG,GAAG,IAAI;AAAA,MACnE,SAAS,CAAC,MAAM,QAAQ,KAAK,aAAa,KAAK,IAAI;AAAA,MACnD;AAAA,SACG;AAAA,MACH,OAAO,CAAC,MAAM,KAAK,QAAQ,KAAK,WAAW,KAAK,KAAK,IAAI;AAAA,MACzD,SAAS,CAAC,MAAM,QAAQ,KAAK,WAAW,KAAK,IAAI;AAAA,MACjD;AAAA,SACG;AAAA,MACH,OAAO,CAAC,MAAM,KAAK,QAAQ,KAAK,WAAW,KAAK,KAAK,IAAI;AAAA,MACzD,SAAS,CAAC,MAAM,QAAQ,KAAK,WAAW,KAAK,IAAI;AAAA,MACjD;AAAA,SACG;AAAA,MACH,OAAO,CAAC,MAAM,KAAK,QAAQ;AAAA,QACzB,gBAAgB,IAAI,KAAK,aAAa,KAAK,MAAM,OAAO,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,UAAU,KAAK,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI;AAAA;AAAA,MAE5H,SAAS,CAAC,MAAM,QAAQ;AAAA,QACtB,MAAM,OAAO,gBAAgB,IAAI,KAAK,aAAa,KAAK,IAAI,IAAI,OAAO,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,QAChG,OAAO,OAAO,IAAI;AAAA;AAAA,MAEpB;AAAA;AAAA,MAEA,WAAW,+BAA+B,MAAM;AAAA;AAAA,EAEpD,OAAO,EAAE,MAAM,OAAO;AAAA;AAExB,MAAM,MAAM,eAAe,QAAQ,oBAAoB,iBAAiB,SAAS;AACjF,SAAS,eAAe,CAAC,KAAK;AAAA,EAC5B,MAAM,SAAS,IAAI,YAAY,IAAI,SAAS,WAAW;AAAA,EACvD,MAAM,aAAa,IAAI,SAAS,MAAM;AAAA,EACtC,SAAS,IAAI,EAAE,IAAI,IAAI,QAAQ,KAAK;AAAA,IAClC,MAAM,WAAW,IAAI;AAAA,IACrB,MAAM,WAAW,UAAU,OAAO;AAAA,IAClC,cAAc,YAAY,IAAI,aAAa,QAAQ;AAAA,EACrD;AAAA,EACA,OAAO;AAAA;AAET,IAAI,UAAU,IAAI;AAClB,IAAI,UAAU,IAAI;AAClB,SAAS,YAAY,CAAC,QAAQ,kBAAkB;AAAA,EAC9C,IAAI,SAAS;AAAA,EACb,IAAI,WAAW;AAAA,EACf,MAAM,SAAS,CAAC;AAAA,EAChB,MAAM,iBAAiB,CAAC;AAAA,EACxB,MAAM,oBAAoB,CAAC;AAAA,EAC3B,MAAM,sBAAsB,CAAC;AAAA,EAC7B,YAAY,MAAM,cAAc,UAAU,CAAC,MAAM,QAAQ;AAAA,IACvD,IAAI,QAAQ,aAAa,CAAC,QAAQ,UAAU,GAAG;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,IAAI,OAAO,GAAG,QAAQ;AAAA,IACtB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI,gBAAgB;AAAA,IACpB,IAAI,cAAc;AAAA,IAClB,IAAI,gBAAgB,YAAY,GAAG;AAAA,MACjC,OAAO,UAAU;AAAA,MACjB,QAAQ,eAAe;AAAA,OACtB,EAAE,MAAM,OAAO,IAAI,iBAAiB,YAAY;AAAA,IACnD,EAAO,SAAI,OAAO,iBAAiB,YAAY,iBAAiB,WAAW;AAAA,MACzE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO,CAAC,MAAM,KAAK,QAAQ;AAAA,QACzB,MAAM,SAAS,MAAM,KAAK,QAAQ,OAAO,MAAM,MAAM,CAAC,IAAI;AAAA,QAC1D,cAAc,MAAM,KAAK,MAAM;AAAA;AAAA,MAEjC,SAAS,CAAC,MAAM,QAAQ;AAAA,QACtB,MAAM,SAAS,gBAAgB,MAAM,GAAG;AAAA,QACxC,OAAO;AAAA;AAAA,IAEX,EAAO,SAAI,OAAO,iBAAiB,YAAY,iBAAiB,SAAS;AAAA,MACvE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO,CAAC,MAAM,KAAK,QAAQ;AAAA,QACzB,MAAM,SAAS,MAAM,KAAK,QAAQ,OAAO,GAAG,CAAC,IAAI;AAAA,QACjD,cAAc,MAAM,KAAK,MAAM;AAAA;AAAA,MAEjC,SAAS,CAAC,MAAM,QAAQ;AAAA,QACtB,MAAM,SAAS,gBAAgB,MAAM,GAAG;AAAA,QACxC,OAAO;AAAA;AAAA,MAET,gBAAgB;AAAA,IAClB,EAAO,SAAI,OAAO,YAAY,GAAG;AAAA,MAC/B,MAAM,OAAO,aAAa;AAAA,MAC1B,OAAO,UAAU;AAAA,MACjB,QAAQ,eAAe;AAAA,MACvB,QAAQ,MAAM,aAAa,iBAAiB,IAAI;AAAA,MAChD,OAAO,CAAC,MAAM,KAAK,QAAQ;AAAA,QACzB,MAAM,MAAM,aAAa,GAAG,GAAG;AAAA,QAC/B,SAAS,MAAM,KAAK,GAAG;AAAA;AAAA,MAEzB,SAAS,CAAC,MAAM,QAAQ;AAAA,QACtB,MAAM,MAAM,YAAY,MAAM,MAAM,GAAG;AAAA,QACvC,OAAO,aAAa,KAAK,GAAG;AAAA;AAAA,IAEhC,EAAO,SAAI,SAAS,YAAY,GAAG;AAAA,MACjC,IAAI,QAAQ,cAAc,MAAM;AAAA,QAC9B,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO,CAAC,MAAM,KAAK,KAAK,KAAK,aAAa;AAAA,UACxC,IAAI,CAAC,KAAK;AAAA,YACR,cAAc,MAAM,KAAK,IAAI;AAAA,YAC7B;AAAA,UACF;AAAA,UACA,MAAM,YAAY,aAAa,KAAK,KAAK,QAAQ;AAAA,UACjD,cAAc,MAAM,KAAK,KAAK,SAAS,CAAC;AAAA;AAAA,QAE1C,SAAS,CAAC,MAAM,QAAQ;AAAA,UACtB,MAAM,IAAI,MAAM,qBAAqB;AAAA;AAAA,MAEzC,EAAO;AAAA,QACL,OAAO,aAAa;AAAA,QACpB,QAAQ,aAAa;AAAA,QACrB,OAAO,CAAC,MAAM,KAAK,KAAK,KAAK,aAAa;AAAA,UACxC,MAAM,YAAY,aAAa,KAAK,KAAK,QAAQ;AAAA,UACjD,MAAM,aAAa,IAAI,WAAW,SAAS;AAAA,UAC3C,MAAM,QAAQ,IAAI,WAAW,KAAK,MAAM;AAAA,UACxC,MAAM,IAAI,YAAY,GAAG;AAAA;AAAA,QAE3B,SAAS,CAAC,MAAM,QAAQ;AAAA,UACtB,MAAM,QAAQ,KAAK,OAAO,MAAM,KAAK,MAAM,IAAI;AAAA,UAC/C,OAAO,aAAa,OAAO,KAAK;AAAA;AAAA;AAAA,IAGtC,EAAO,SAAI,mBAAmB,YAAY,GAAG;AAAA,MAC3C,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO,CAAC,MAAM,KAAK,UAAU;AAAA,QAC3B,MAAM,WAAW,OAAO,OAAO;AAAA,QAC/B,IAAI,aAAa,WAAW;AAAA,UAC1B,QAAQ,KAAK,UAAU,qFAAqF,KAAK;AAAA,UACjH,cAAc,MAAM,KAAK,IAAI;AAAA,QAC/B,EAAO;AAAA,UACL,cAAc,MAAM,KAAK,QAAQ;AAAA;AAAA;AAAA,MAGrC,SAAS,CAAC,MAAM,QAAQ;AAAA,QACtB,OAAO,gBAAgB,MAAM,GAAG;AAAA;AAAA,IAEpC,EAAO,SAAI,MAAM,QAAQ,YAAY,KAAK,aAAa,WAAW,KAAK,aAAa,OAAO,WAAW;AAAA,MACpG,OAAO,OAAO;AAAA,MACd,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,IAAI;AAAA,MACJ,IAAI,OAAO,GAAG,GAAG;AAAA,QACf,mBAAmB,UAAU,IAAI;AAAA,QACjC,OAAO,CAAC,MAAM,KAAK,KAAK,QAAQ;AAAA,UAC9B,IAAI,CAAC,OAAO,IAAI,WAAW,GAAG;AAAA,YAC5B,cAAc,MAAM,KAAK,IAAI;AAAA,YAC7B;AAAA,UACF;AAAA,UACA,MAAM,SAAS,IAAI,YAAY,IAAI,SAAS,gBAAgB;AAAA,UAC5D,MAAM,aAAa,IAAI,SAAS,MAAM;AAAA,UACtC,SAAS,IAAI,EAAE,IAAI,IAAI,QAAQ,KAAK;AAAA,YAClC,MAAM,MAAM,IAAI,GAAG,IAAI,EAAE;AAAA,YACzB,WAAW,UAAU,IAAI,kBAAkB,KAAK,IAAI;AAAA,UACtD;AAAA,UACA,cAAc,MAAM,KAAK,KAAK,MAAM,CAAC;AAAA;AAAA,QAEvC,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,cAAc;AAAA,MAChB,EAAO,SAAI,SAAS,GAAG,GAAG;AAAA,QACxB,mBAAmB,IAAI;AAAA,QACvB,OAAO,CAAC,MAAM,KAAK,KAAK,KAAK,aAAa;AAAA,UACxC,IAAI,CAAC,OAAO,IAAI,WAAW,GAAG;AAAA,YAC5B,cAAc,MAAM,KAAK,IAAI;AAAA,YAC7B;AAAA,UACF;AAAA,UACA,MAAM,SAAS,IAAI,YAAY,IAAI,SAAS,gBAAgB;AAAA,UAC5D,MAAM,aAAa,IAAI,SAAS,MAAM;AAAA,UACtC,SAAS,IAAI,EAAE,IAAI,IAAI,QAAQ,KAAK;AAAA,YAClC,IAAI,SAAS,IAAI,IAAI,YAAY,IAAI,kBAAkB,QAAQ;AAAA,UACjE;AAAA,UACA,cAAc,MAAM,KAAK,KAAK,MAAM,CAAC;AAAA;AAAA,QAEvC,SAAS,CAAC,MAAM,QAAQ;AAAA,UACtB,MAAM,IAAI,MAAM,qBAAqB;AAAA;AAAA,MAEzC,EAAO,SAAI,gBAAgB,GAAG,GAAG;AAAA,QAC/B,mBAAmB,UAAU;AAAA,QAC7B,QAAQ,MAAM,kBAAkB,iBAAiB,GAAG;AAAA,QACpD,OAAO,CAAC,MAAM,KAAK,QAAQ;AAAA,UACzB,IAAI,CAAC,OAAO,IAAI,WAAW,GAAG;AAAA,YAC5B,cAAc,MAAM,KAAK,IAAI;AAAA,YAC7B;AAAA,UACF;AAAA,UACA,MAAM,SAAS,IAAI,YAAY,IAAI,SAAS,gBAAgB;AAAA,UAC5D,MAAM,aAAa,IAAI,SAAS,MAAM;AAAA,UACtC,SAAS,IAAI,EAAE,IAAI,IAAI,QAAQ,KAAK;AAAA,YAClC,cAAc,YAAY,IAAI,kBAAkB,IAAI,EAAE;AAAA,UACxD;AAAA,UACA,cAAc,MAAM,KAAK,KAAK,MAAM,CAAC;AAAA;AAAA,QAEvC,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,cAAc;AAAA,MAChB,EAAO,SAAI,mBAAmB,GAAG,GAAG;AAAA,QAClC,mBAAmB;AAAA,QACnB,OAAO,CAAC,MAAM,KAAK,QAAQ;AAAA,UACzB,IAAI,CAAC,OAAO,IAAI,WAAW,GAAG;AAAA,YAC5B,cAAc,MAAM,KAAK,IAAI;AAAA,YAC7B;AAAA,UACF;AAAA,UACA,MAAM,aAAa,gBAAgB,GAAG;AAAA,UACtC,cAAc,MAAM,KAAK,KAAK,WAAW,MAAM,CAAC;AAAA;AAAA,QAElD,SAAS,MAAM;AAAA,UACb,MAAM,IAAI,MAAM,qBAAqB;AAAA;AAAA,MAEzC,EAAO;AAAA,QACL,MAAM,IAAI,MAAM,sCAAsC,SAAS,KAAK,UAAU,GAAG,GAAG;AAAA;AAAA,MAEtF,MAAM,gBAAgB,OAAO,OAAO,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,aAAa,IAAI;AAAA,MACnF,IAAI,iBAAiB,gBAAgB,cAAc,IAAI,GAAG;AAAA,QACxD,QAAQ,MAAM,eAAe,iBAAiB,cAAc,IAAI;AAAA,QAChE,oBAAoB,QAAQ;AAAA,UAC1B,aAAa;AAAA,UACb,aAAa;AAAA,UACb,cAAc,cAAc;AAAA,UAC5B;AAAA,QACF;AAAA,MACF;AAAA,IACF,EAAO;AAAA,MACL,MAAM,IAAI,MAAM,8BAA8B,SAAS,KAAK,UAAU,YAAY,GAAG;AAAA;AAAA,IAEvF,SAAS,YAAY,QAAQ,KAAK;AAAA,IAClC,IAAI,QAAQ,iBAAiB;AAAA,MAC3B,MAAM,iBAAiB;AAAA,MACvB,SAAS,CAAC,MAAM,QAAQ,QAAQ,gBAAgB,eAAe,MAAM,GAAG,CAAC;AAAA,IAC3E;AAAA,IACA,IAAI,QAAQ,eAAe;AAAA,MACzB,MAAM,eAAe;AAAA,MACrB,OAAO,CAAC,MAAM,KAAK,KAAK,KAAK,gBAAgB,aAAa,MAAM,KAAK,QAAQ,cAAc,GAAG,GAAG,KAAK,WAAW;AAAA,IACnH;AAAA,IACA,IAAI,QAAQ,UAAU;AAAA,MACpB,MAAM,eAAe;AAAA,MACrB,IAAI,SAAS,YAAY,KAAK,CAAC,QAAQ,WAAW;AAAA,QAChD,OAAO,CAAC,MAAM,KAAK,KAAK,KAAK,gBAAgB;AAAA,UAC3C,IAAI,OAAO,QAAQ,mBAAmB;AAAA,YACpC,aAAa,MAAM,KAAK,KAAK,KAAK,WAAW;AAAA,UAC/C;AAAA;AAAA,MAEJ,EAAO;AAAA,QACL,OAAO,CAAC,MAAM,KAAK,KAAK,KAAK,gBAAgB,aAAa,MAAM,KAAK,OAAO,GAAG,KAAK,WAAW;AAAA;AAAA,IAEnG;AAAA,IACA,IAAI,QAAQ,UAAU;AAAA,MACpB,MAAM,eAAe;AAAA,MACrB,OAAO,CAAC,MAAM,KAAK,KAAK,KAAK,gBAAgB;AAAA,QAC3C,MAAM,cAAc,IAAI,QAAQ;AAAA,QAChC,IAAI,SAAS;AAAA,QACb,IAAI,aAAa;AAAA,UACf,IAAI,OAAO,gBAAgB,UAAU;AAAA,YACnC,SAAS,OAAO,WAAW,WAAW;AAAA,UACxC,EAAO;AAAA,YACL,SAAS,YAAY;AAAA;AAAA,QAEzB;AAAA,QACA,OAAO,aAAa,MAAM,KAAK,QAAQ,KAAK,WAAW;AAAA;AAAA,IAE3D;AAAA,IACA,IAAI;AAAA,IACJ,IAAI,QAAQ,UAAU;AAAA,MACpB,oBAAoB,MAAM,QAAQ,QAAQ,QAAQ,IAAI,QAAQ,WAAW,CAAC,QAAQ,QAAQ;AAAA,IAC5F;AAAA,IACA,MAAM,cAAc;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV,UAAU,CAAC,CAAC,QAAQ,YAAY,CAAC,CAAC,QAAQ,YAAY,QAAQ,YAAY;AAAA,MAC1E,SAAS,QAAQ;AAAA,MACjB;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN,UAAU,QAAQ;AAAA,IACpB;AAAA,IACA,OAAO,KAAK,WAAW;AAAA,IACvB,IAAI,QAAQ,UAAU;AAAA,MACpB,eAAe,QAAQ,YAAY;AAAA,IACrC;AAAA,IACA,IAAI,eAAe;AAAA,MACjB,MAAM,MAAM,OAAO,iBAAiB,YAAY,iBAAiB,UAAU,UAAU;AAAA,MACrF,IAAI,CAAC;AAAA,QACH,WAAW,0DAA0D,MAAM;AAAA,MAC7E,kBAAkB,KAAK,EAAE,WAAW,aAAa,IAAI,CAAC;AAAA,IACxD;AAAA,IACA,UAAU;AAAA,IACV,WAAW,KAAK,IAAI,UAAU,KAAK;AAAA,EACrC;AAAA,EACA,aAAa,WAAW,SAAS,mBAAmB;AAAA,IAClD,MAAM,gBAAgB,eAAe,UAAU;AAAA,IAC/C,IAAI,CAAC,eAAe;AAAA,MAClB,IAAI,QAAQ,SAAS;AAAA,QACnB;AAAA,MACF;AAAA,MACA,MAAM,IAAI,MAAM,4CAA4C,UAAU,MAAM;AAAA,IAC9E;AAAA,IACA,IAAI,QAAQ,SAAS;AAAA,MACnB,UAAU,SAAS,CAAC,MAAM,QAAQ;AAAA,QAChC,MAAM,aAAa,gBAAgB,MAAM,GAAG;AAAA,QAC5C,MAAM,SAAS,cAAc,OAAO,MAAM,cAAc,MAAM;AAAA,QAC9D,IAAI,eAAe,GAAG;AAAA,UACpB,OAAO;AAAA,QACT;AAAA,QACA,MAAM,aAAa,OAAO,WAAW,WAAW,OAAO,MAAM,IAAI;AAAA,QACjE,IAAI,eAAe,GAAG;AAAA,UACpB,OAAO;AAAA,QACT;AAAA,QACA,MAAM,SAAS,eAAe,YAAY,GAAG,UAAU;AAAA,QACvD,OAAO,QAAQ,OAAO,MAAM;AAAA;AAAA,IAEhC,EAAO,SAAI,gBAAgB,GAAG,GAAG;AAAA,MAC/B,MAAM,WAAW,UAAU;AAAA,MAC3B,QAAQ,QAAQ,oBAAoB,iBAAiB,GAAG;AAAA,MACxD,UAAU,SAAS,CAAC,MAAM,QAAQ;AAAA,QAChC,MAAM,SAAS,CAAC;AAAA,QAChB,MAAM,SAAS,cAAc,OAAO,MAAM,cAAc,MAAM;AAAA,QAC9D,MAAM,aAAa,gBAAgB,MAAM,GAAG;AAAA,QAC5C,IAAI,eAAe,MAAM,SAAS,GAAG;AAAA,UACnC,MAAM,IAAI,MAAM,eAAe,UAAU,oCAAoC,SAAS;AAAA,QACxF;AAAA,QACA,IAAI,eAAe,MAAM,WAAW,GAAG;AAAA,UACrC,OAAO,CAAC;AAAA,QACV;AAAA,QACA,MAAM,SAAS,eAAe,YAAY,GAAG,SAAS,QAAQ;AAAA,QAC9D,MAAM,aAAa,IAAI,SAAS,MAAM;AAAA,QACtC,SAAS,IAAI,EAAE,IAAI,QAAQ,KAAK;AAAA,UAC9B,OAAO,KAAK,gBAAgB,YAAY,IAAI,QAAQ,CAAC;AAAA,QACvD;AAAA,QACA,OAAO;AAAA;AAAA,IAEX,EAAO;AAAA,MACL,MAAM,WAAW,IAAI,SAAS,QAAQ,IAAI;AAAA,MAC1C,UAAU,SAAS,CAAC,MAAM,QAAQ;AAAA,QAChC,MAAM,SAAS,CAAC;AAAA,QAChB,MAAM,SAAS,cAAc,OAAO,MAAM,cAAc,MAAM;AAAA,QAC9D,MAAM,aAAa,gBAAgB,MAAM,GAAG;AAAA,QAC5C,IAAI,eAAe,MAAM,SAAS,GAAG;AAAA,UACnC,MAAM,IAAI,MAAM,eAAe,UAAU,oCAAoC,SAAS;AAAA,QACxF;AAAA,QACA,IAAI,eAAe,MAAM,WAAW,GAAG;AAAA,UACrC,OAAO,CAAC;AAAA,QACV;AAAA,QACA,MAAM,SAAS,eAAe,YAAY,GAAG,SAAS,QAAQ;AAAA,QAC9D,MAAM,aAAa,IAAI,SAAS,MAAM;AAAA,QACtC,SAAS,IAAI,EAAE,IAAI,QAAQ,KAAK;AAAA,UAC9B,OAAO,KAAK,IAAI,KAAK,WAAW,UAAU,IAAI,UAAU,IAAI,CAAC,CAAC;AAAA,QAChE;AAAA,QACA,OAAO;AAAA;AAAA;AAAA,EAGb;AAAA,EACA,MAAM,YAAY,YAAY,QAAQ,QAAQ;AAAA,EAC9C,MAAM,cAAc,OAAO,IAAI,CAAC,OAAO;AAAA,IACrC,MAAM,EAAE;AAAA,IACR,QAAQ,EAAE;AAAA,IACV,MAAM,EAAE;AAAA,IACR,OAAO,EAAE;AAAA,IACT,UAAU,EAAE;AAAA,IACZ,MAAM,EAAE;AAAA,IACR,UAAU,EAAE;AAAA,EACd,EAAE;AAAA,EACF,MAAM,eAAe,IAAI,IAAI,YAAY,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAAA,EAChE,MAAM,cAAc,IAAI,IAAI,OAAO,QAAQ,mBAAmB,CAAC;AAAA,EAC/D,OAAO;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,IACP,aAAa,CAAC,CAAC,kBAAkB;AAAA,IACjC;AAAA,IACA;AAAA,IACA,IAAI,CAAC,KAAK,SAAS;AAAA,MACjB,MAAM,MAAM,IAAI,YAAY,SAAS;AAAA,MACrC,MAAM,OAAO,IAAI,SAAS,GAAG;AAAA,MAC7B,IAAI,YAAY;AAAA,MAChB,IAAI,kBAAkB,UAAU;AAAA,QAC9B,YAAY,iBAAiB,SAAS,GAAG;AAAA,MAC3C;AAAA,MACA,WAAW,SAAS,QAAQ;AAAA,QAC1B,MAAM,QAAQ,UAAU,MAAM,SAAS,MAAM;AAAA,QAC7C,IAAI,CAAC,MAAM,YAAY,UAAU,WAAW;AAAA,UAC1C,WAAW,+BAA+B,MAAM,wDAAwD;AAAA,QAC1G;AAAA,QACA,IAAI,MAAM,UAAU;AAAA,UAClB,WAAW,cAAc,MAAM,UAAU;AAAA,YACvC,WAAW,OAAO,MAAM,MAAM;AAAA,cAC5B,OAAO,SAAS;AAAA,cAChB,OAAO;AAAA,YACT,CAAC;AAAA,UACH;AAAA,QACF;AAAA,QACA,MAAM,KAAK,MAAM,MAAM,QAAQ,OAAO,WAAW,OAAO;AAAA,MAC1D;AAAA,MACA,OAAO,KAAK;AAAA;AAAA,IAEd,QAAQ,CAAC,KAAK,MAAM,SAAS,SAAS;AAAA,MACpC,IAAI,YAAY;AAAA,MAChB,IAAI,kBAAkB,UAAU;AAAA,QAC9B,YAAY,iBAAiB,SAAS,GAAG;AAAA,MAC3C;AAAA,MACA,WAAW,SAAS,QAAQ;AAAA,QAC1B,MAAM,QAAQ,UAAU,MAAM,SAAS,MAAM;AAAA,QAC7C,IAAI,CAAC,MAAM,YAAY,UAAU,WAAW;AAAA,UAC1C,QAAQ,KAAK,kDAAkD,MAAM,mBAAmB,UAAU,MAAM,kCAAkC;AAAA,QAC5I;AAAA,QACA,IAAI,MAAM,UAAU;AAAA,UAClB,WAAW,cAAc,MAAM,UAAU;AAAA,YACvC,WAAW,OAAO,MAAM,MAAM;AAAA,cAC5B,OAAO,SAAS;AAAA,cAChB,OAAO;AAAA,YACT,CAAC;AAAA,UACH;AAAA,QACF;AAAA,QACA,MAAM,KAAK,MAAM,UAAU,MAAM,QAAQ,OAAO,WAAW,OAAO;AAAA,MACpE;AAAA;AAAA,IAEF,MAAM,CAAC,KAAK;AAAA,MACV,IAAI,IAAI,aAAa,WAAW;AAAA,QAC9B,WAAW,gBAAgB,IAAI,4CAA4C,2BAA2B;AAAA,MACxG;AAAA,MACA,MAAM,OAAO,IAAI,SAAS,GAAG;AAAA,MAC7B,MAAM,SAAS,kBAAkB,UAAU,KAAK,iBAAiB,QAAQ,IAAI,CAAC;AAAA,MAC9E,WAAW,SAAS,QAAQ;AAAA,QAC1B,IAAI,CAAC,MAAM,QAAQ;AAAA,UACjB;AAAA,QACF;AAAA,QACA,IAAI;AAAA,UACF,OAAO,MAAM,QAAQ,MAAM,OAAO,MAAM,MAAM,MAAM;AAAA,UACpD,OAAO,GAAG;AAAA,UACV,QAAQ,MAAM,0BAA0B,MAAM,mBAAmB,MAAM,WAAW,CAAC;AAAA,UACnF,MAAM;AAAA;AAAA,MAEV;AAAA,MACA,IAAI,kBAAkB,aAAa;AAAA,QACjC,OAAO,iBAAiB,YAAY,MAAM;AAAA,MAC5C;AAAA,MACA,OAAO;AAAA;AAAA,IAET,QAAQ,CAAC,SAAS,SAAS;AAAA,MACzB,IAAI,QAAQ,WAAW,GAAG;AAAA,QACxB,OAAO,IAAI,YAAY,CAAC;AAAA,MAC1B;AAAA,MACA,MAAM,SAAS,IAAI,YAAY,YAAY,QAAQ,MAAM;AAAA,MACzD,MAAM,OAAO,IAAI,SAAS,MAAM;AAAA,MAChC,SAAS,IAAI,EAAE,IAAI,QAAQ,QAAQ,KAAK;AAAA,QACtC,IAAI,YAAY,QAAQ;AAAA,QACxB,IAAI,kBAAkB,UAAU;AAAA,UAC9B,YAAY,iBAAiB,SAAS,QAAQ,EAAE;AAAA,QAClD;AAAA,QACA,WAAW,SAAS,QAAQ;AAAA,UAC1B,MAAM,QAAQ,UAAU,MAAM,SAAS,MAAM;AAAA,UAC7C,IAAI,CAAC,MAAM,YAAY,UAAU,WAAW;AAAA,YAC1C,WAAW,+BAA+B,MAAM,kBAAkB,oDAAoD;AAAA,UACxH;AAAA,UACA,IAAI,MAAM,UAAU;AAAA,YAClB,WAAW,cAAc,MAAM,UAAU;AAAA,cACvC,WAAW,OAAO,MAAM,MAAM;AAAA,gBAC5B,OAAO,SAAS;AAAA,gBAChB,OAAO;AAAA,cACT,CAAC;AAAA,YACH;AAAA,UACF;AAAA,UACA,MAAM,KAAK,MAAM,IAAI,YAAY,MAAM,QAAQ,OAAO,WAAW,OAAO;AAAA,QAC1E;AAAA,MACF;AAAA,MACA,OAAO;AAAA;AAAA,IAET,UAAU,CAAC,KAAK,OAAO;AAAA,MACrB,IAAI,UAAU,GAAG;AAAA,QACf,OAAO,CAAC;AAAA,MACV;AAAA,MACA,MAAM,eAAe,YAAY;AAAA,MACjC,IAAI,IAAI,aAAa,cAAc;AAAA,QACjC,WAAW,gBAAgB,IAAI,8CAA8C,+BAA+B,gBAAgB;AAAA,MAC9H;AAAA,MACA,MAAM,OAAO,IAAI,SAAS,GAAG;AAAA,MAC7B,MAAM,UAAU,CAAC;AAAA,MACjB,SAAS,IAAI,EAAE,IAAI,OAAO,KAAK;AAAA,QAC7B,MAAM,UAAU,IAAI;AAAA,QACpB,MAAM,SAAS,kBAAkB,UAAU,KAAK,iBAAiB,QAAQ,IAAI,CAAC;AAAA,QAC9E,WAAW,SAAS,QAAQ;AAAA,UAC1B,IAAI,CAAC,MAAM,QAAQ;AAAA,YACjB;AAAA,UACF;AAAA,UACA,IAAI;AAAA,YACF,OAAO,MAAM,QAAQ,MAAM,OAAO,MAAM,UAAU,MAAM,MAAM;AAAA,YAC9D,OAAO,GAAG;AAAA,YACV,QAAQ,MAAM,0BAA0B,MAAM,kBAAkB,aAAa,UAAU,MAAM,WAAW,CAAC;AAAA,YACzG,MAAM;AAAA;AAAA,QAEV;AAAA,QACA,IAAI,kBAAkB,aAAa;AAAA,UACjC,QAAQ,KAAK,iBAAiB,YAAY,MAAM,CAAC;AAAA,QACnD,EAAO;AAAA,UACL,QAAQ,KAAK,MAAM;AAAA;AAAA,MAEvB;AAAA,MACA,OAAO;AAAA;AAAA,IAET,QAAQ,GAAG;AAAA,MACT,OAAO;AAAA;AAAA,EAEX;AAAA;AAKF,IAAI,oBAAoB,CAAC,SAAS,OAAO,KAAK,KAAK,MAAM,IAAI;AAC7D,IAAI,sBAAsB,CAAC,UAAS,QAAO,KAAK,UAAU,IAAI,aAAa,eAAe,KAAI,CAAC,CAAC,IAAI;AACpG,IAAI,oBAAoB,aAAa;AAAA,EACnC,CAAC,QAAQ,OAAO;AAAA,EAChB,CAAC,YAAY,OAAO,EAAE,UAAU,OAAO,CAAC;AAAA,EACxC;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU;AAAA,MACV,eAAe;AAAA,MACf,iBAAiB;AAAA,IACnB;AAAA,EACF;AAAA,EACA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU;AAAA,MACV,eAAe;AAAA,MACf,iBAAiB;AAAA,IACnB;AAAA,EACF;AAAA,EACA,CAAC,cAAc,OAAO,EAAE,UAAU,KAAK,CAAC;AAC1C,CAAC;AACD,IAAI,kBAAkB,aAAa;AAAA,EACjC,CAAC,SAAS,KAAK;AAAA,EACf,CAAC,OAAO,KAAK;AAAA,EACb,CAAC,WAAW,KAAK;AAAA,EACjB,CAAC,YAAY,MAAM,EAAE,SAAS,EAAE,CAAC;AAAA,EACjC,CAAC,SAAS,OAAO,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC;AACD,IAAI,sBAAsB,aAAa;AAAA,EACrC,CAAC,OAAO,KAAK;AAAA,EACb,CAAC,OAAO,KAAK;AAAA,EACb,CAAC,UAAU,KAAK;AAClB,CAAC;AACD,IAAI,qBAAqB,aAAa;AAAA,EACpC,CAAC,aAAa,KAAK;AAAA,EACnB,CAAC,aAAa,KAAK;AAAA,EACnB,CAAC,cAAc,KAAK;AAAA,EACpB,CAAC,cAAc,KAAK;AAAA,EACpB,CAAC,UAAU,KAAK;AAClB,CAAC;AACD,IAAI,oBAAoB,WAAW,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,IAAI;AACnE,IAAI,6BAA6B,aAAa;AAAA,EAC5C,CAAC,kBAAkB,SAAS;AAAA,EAC5B,CAAC,kBAAkB,SAAS;AAAA,EAC5B,CAAC,OAAO,SAAS;AAAA,EACjB,CAAC,WAAW,iBAAiB;AAAA,EAC7B,CAAC,cAAc,SAAS;AAAA,EACxB,CAAC,wBAAwB,SAAS;AAAA,EAClC,CAAC,kBAAkB,SAAS;AAAA,EAC5B,CAAC,eAAe,SAAS;AAAA,EACzB,CAAC,SAAS,SAAS;AAAA,EACnB,CAAC,kBAAkB,SAAS;AAAA,EAC5B,CAAC,QAAQ,SAAS;AAAA,EAClB,CAAC,mBAAmB,SAAS;AAAA,EAC7B,CAAC,cAAc,SAAS;AAAA,EACxB,CAAC,SAAS,SAAS;AAAA,EACnB,CAAC,+BAA+B,SAAS;AAAA,EACzC,CAAC,aAAa,OAAO;AAAA,EACrB,CAAC,iBAAiB,OAAO,EAAE,UAAU,YAAY,CAAC;AAAA,EAClD,CAAC,gBAAgB,OAAO;AAAA,EACxB,CAAC,oBAAoB,OAAO,EAAE,UAAU,eAAe,CAAC;AAAA,EACxD,CAAC,uBAAuB,SAAS;AACnC,CAAC;AACD,IAAI,oBAAoB,aAAa;AAAA,EACnC,CAAC,SAAS,IAAI;AAAA,EACd,CAAC,QAAQ,KAAK;AAChB,CAAC;AACD,IAAI,iBAAiB,aAAa;AAAA,EAChC,CAAC,UAAU,CAAC,KAAK,CAAC;AAAA,EAClB,CAAC,aAAa,OAAO,EAAE,UAAU,SAAS,CAAC;AAAA,EAC3C,CAAC,UAAU,CAAC,KAAK,CAAC;AAAA,EAClB,CAAC,aAAa,OAAO,EAAE,UAAU,SAAS,CAAC;AAAA,EAC3C,CAAC,WAAW,CAAC,KAAK,CAAC;AAAA,EACnB,CAAC,cAAc,OAAO,EAAE,UAAU,UAAU,CAAC;AAAA,EAC7C,CAAC,SAAS,CAAC,KAAK,CAAC;AAAA,EACjB,CAAC,YAAY,OAAO,EAAE,UAAU,QAAQ,CAAC;AAAA,EACzC,CAAC,YAAY,KAAK;AACpB,CAAC;AACD,IAAI,sBAAsB,aAAa;AAAA,EACrC,CAAC,aAAa,KAAK;AAAA,EACnB,CAAC,YAAY,KAAK;AACpB,CAAC;AACD,IAAI,oBAAoB,aAAa;AAAA,EACnC,CAAC,KAAK,KAAK;AAAA,EACX,CAAC,KAAK,KAAK;AAAA,EACX,CAAC,WAAW,SAAS;AAAA,EACrB,CAAC,SAAS,IAAI;AAAA,EACd,CAAC,YAAY,SAAS;AAAA,EACtB,CAAC,KAAK,KAAK;AAAA,EACX,CAAC,KAAK,KAAK;AAAA,EACX,CAAC,KAAK,KAAK;AAAA,EACX,CAAC,KAAK,KAAK;AACb,CAAC;AACD,IAAI,2BAA2B,aAAa;AAAA,EAC1C,CAAC,SAAS,MAAM,EAAE,SAAS,IAAI,CAAC;AAAA,EAChC,CAAC,YAAY,MAAM,EAAE,SAAS,IAAI,CAAC;AAAA,EACnC;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU;AAAA,MACV,eAAe;AAAA,MACf,iBAAiB;AAAA,IACnB;AAAA,EACF;AAAA,EACA,CAAC,UAAU,MAAM,EAAE,SAAS,IAAI,CAAC;AACnC,CAAC;AACD,IAAI,mBAAmB,WAAW,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,IAAI;AAC7D,IAAI,8BAA8B,aAAa;AAAA,EAC7C,CAAC,aAAa,OAAO,EAAE,SAAS,MAAU,CAAC;AAAA,EAC3C,CAAC,iBAAiB,OAAO,EAAE,SAAS,EAAE,CAAC;AAAA,EACvC,CAAC,YAAY,OAAO,EAAE,SAAS,GAAG,CAAC;AAAA,EACnC,CAAC,gBAAgB,kBAAkB,EAAE,SAAS,OAAO,CAAC;AAAA,EACtD,CAAC,oBAAoB,WAAW,EAAE,SAAS,KAAK,CAAC;AAAA,EACjD,CAAC,qBAAqB,OAAO,EAAE,SAAS,EAAE,CAAC;AAC7C,CAAC;AACD,IAAI,4BAA4B,aAAa;AAAA,EAC3C,CAAC,gBAAgB,KAAK;AAAA,EACtB,CAAC,kBAAkB,KAAK;AAAA,EACxB,CAAC,UAAU,KAAK;AAAA,EAChB,CAAC,gBAAgB,KAAK;AACxB,CAAC;AACD,IAAI,iBAAiB,aAAa;AAAA,EAChC,CAAC,YAAY,SAAS;AAAA,EACtB,CAAC,UAAU,KAAK;AAAA,EAChB,CAAC,OAAO,KAAK;AAAA,EACb,CAAC,cAAc,KAAK;AAAA,EACpB,CAAC,YAAY,OAAO,EAAE,SAAS,EAAE,CAAC;AACpC,GAAG;AAAA,EACD,aAAa,CAAC,WAAW;AAAA,IACvB,UAAU,MAAM;AAAA,IAChB,QAAQ,MAAM;AAAA,IACd,KAAK,MAAM;AAAA,IACX,YAAY,MAAM;AAAA,EACpB;AACF,CAAC;AACD,IAAI,oBAAoB,aAAa;AAAA,EACnC,CAAC,OAAO,SAAS;AAAA,EACjB,CAAC,OAAO,KAAK;AAAA,EACb,CAAC,YAAY,OAAO,EAAE,SAAS,EAAE,CAAC;AACpC,GAAG;AAAA,EACD,aAAa,CAAC,WAAW;AAAA,IACvB,KAAK,MAAM;AAAA,IACX,KAAK,MAAM;AAAA,EACb;AACF,CAAC;AAGD,IAAI,SAAS,MAAa,wBAAiB,QAAQ,YAAY,QAAQ;AACvE,IAAI,gBAAgB,OAAO;AAC3B,IAAI,YAAY,aAAa,GAAG;AAAA,EAC9B,gBAAgB,cAAc,QAAQ,OAAO,EAAE;AACjD;AACA,IAAI,CAAC,YAAY,aAAa,GAAG;AAAA,EAC/B,MAAM,IAAI,MAAM,qDAAqD,QAAQ,YAAY,QAAQ,MAAM;AACzG;AACA,eAAe;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AACD,eAAe;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AACD,eAAe;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AACD,eAAe;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AACD,eAAe;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AACD,eAAe;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AACD,IAAI,qBAAqB,EAAE,OAAO,GAAG,MAAM,GAAG,WAAW,EAAE;AAC3D,IAAI,qBAAqB,CAAC,SAAS,QAAQ,WAAW;AACtD,IAAI,oBAAoB,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,eAAe,EAAE;AACnG,IAAI,qBAAqB;AACzB,IAAI,qBAAqB;AACzB,IAAI,wBAAwB;AAC5B,SAAS,SAAS,CAAC,OAAO;AAAA,EACxB,IAAI,OAAO,UAAU,UAAU;AAAA,IAC7B,IAAI,QAAQ,OAAO,OAAO,gBAAgB,GAAG;AAAA,MAC3C,MAAM,IAAI,MAAM,oCAAoC;AAAA,IACtD;AAAA,IACA,OAAO,OAAO,KAAK;AAAA,EACrB;AAAA,EACA,OAAO;AAAA;AAET,SAAS,QAAQ,CAAC,OAAO;AAAA,EACvB,OAAO,OAAO,UAAU,WAAW,OAAO,KAAK,IAAI;AAAA;AAErD,SAAS,aAAa,CAAC,SAAS;AAAA,EAC9B,MAAM,kBAAkB,WAAW;AAAA,EACnC,MAAM,aAAa,OAAO,iBAAiB;AAAA,IACzC,gBAAgB;AAAA,MACd,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,OAAO,OAAO,QAAQ,MAAM;AAAA,MACnC,SAAS;AAAA,IACX;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,cAAc;AAAA,MACZ,MAAM,CAAC,OAAO,MAAM;AAAA,MACpB,SAAS;AAAA,IACX;AAAA,IACA,oBAAoB;AAAA,MAClB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,aAAa;AAAA,MACX,MAAM,CAAC,OAAO,OAAO,OAAO,KAAK;AAAA,MACjC,SAAS;AAAA,IACX;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM,CAAC,OAAO,OAAO,OAAO,KAAK;AAAA,MACjC,SAAS;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACN,MAAM,CAAC,OAAO,MAAM;AAAA,MACpB,SAAS;AAAA,IACX;AAAA,IACA,eAAe;AAAA,MACb,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,OAAO,OAAO,QAAQ,MAAM,OAAO,OAAO;AAAA,MACjD,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MAC7D,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,aAAa;AAAA,MACX,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,OAAO,MAAM;AAAA,MACpB,SAAS;AAAA,IACX;AAAA,IACA,aAAa;AAAA,MACX,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,0BAA0B;AAAA,MACxB,MAAM,CAAC,OAAO,OAAO,SAAS,MAAM;AAAA,MACpC,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MAC7D,SAAS;AAAA,IACX;AAAA,IACA,gCAAgC;AAAA,MAC9B,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MACtD,SAAS;AAAA,IACX;AAAA,IACA,eAAe;AAAA,MACb,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MACtD,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MAC/C,SAAS;AAAA,IACX;AAAA,IACA,cAAc;AAAA,MACZ,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,WAAW;AAAA,MACT,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,YAAY;AAAA,MACV,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,oBAAoB;AAAA,MAClB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,qBAAqB;AAAA,MACnB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM,CAAC,OAAO,OAAO,OAAO,MAAM;AAAA,MAClC,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM,CAAC,OAAO,QAAQ,IAAI;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,eAAe;AAAA,MACb,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM,CAAC,OAAO,MAAM,OAAO,OAAO;AAAA,MAClC,SAAS;AAAA,IACX;AAAA,IACA,qBAAqB;AAAA,MACnB,MAAM,CAAC,OAAO,IAAI;AAAA,MAClB,SAAS;AAAA,IACX;AAAA,IACA,6BAA6B;AAAA,MAC3B,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,SAAS,MAAM,KAAK;AAAA,MACvD,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,OAAO,OAAO,SAAS,OAAO,OAAO,OAAO,KAAK;AAAA,MACxD,SAAS;AAAA,IACX;AAAA,IACA,2BAA2B;AAAA,MACzB,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MAC7D,SAAS;AAAA,IACX;AAAA,IACA,uCAAuC;AAAA,MACrC,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MAC7D,SAAS;AAAA,IACX;AAAA,IACA,eAAe;AAAA,MACb,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MAClF,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MACxC,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,yBAAyB;AAAA,MACvB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,yBAAyB;AAAA,MACvB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,oBAAoB;AAAA,MAClB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,cAAc;AAAA,MACZ,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MAC/C,SAAS;AAAA,IACX;AAAA,IACA,qBAAqB;AAAA,MACnB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MACxC,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,0BAA0B;AAAA,MACxB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,4BAA4B;AAAA,MAC1B,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MAC/C,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,aAAa;AAAA,MACX,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,aAAa;AAAA,MACX,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,aAAa;AAAA,MACX,MAAM,CAAC,OAAO,MAAM;AAAA,MACpB,SAAS;AAAA,IACX;AAAA,IACA,cAAc;AAAA,MACZ,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,qBAAqB;AAAA,MACnB,MAAM,CAAC,OAAO,IAAI;AAAA,MAClB,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,OAAO,IAAI;AAAA,MAClB,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,eAAe;AAAA,MACb,MAAM,CAAC,OAAO,MAAM;AAAA,MACpB,SAAS;AAAA,IACX;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM,CAAC,IAAI;AAAA,MACX,SAAS;AAAA,IACX;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,qBAAqB;AAAA,MACnB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,gCAAgC;AAAA,MAC9B,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,yBAAyB;AAAA,MACvB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,OAAO,IAAI;AAAA,MAClB,SAAS;AAAA,IACX;AAAA,IACA,6BAA6B;AAAA,MAC3B,MAAM,CAAC,OAAO,OAAO,SAAS,MAAM;AAAA,MACpC,SAAS;AAAA,IACX;AAAA,IACA,4BAA4B;AAAA,MAC1B,MAAM,CAAC,OAAO,MAAM,OAAO,SAAS,MAAM;AAAA,MAC1C,SAAS;AAAA,IACX;AAAA,IACA,4BAA4B;AAAA,MAC1B,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,0BAA0B;AAAA,MACxB,MAAM,CAAC,OAAO,IAAI;AAAA,MAClB,SAAS;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,2BAA2B;AAAA,MACzB,MAAM,CAAC,OAAO,IAAI;AAAA,MAClB,SAAS;AAAA,IACX;AAAA,IACA,oBAAoB;AAAA,MAClB,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,yBAAyB;AAAA,MACvB,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,mCAAmC;AAAA,MACjC,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,iCAAiC;AAAA,MAC/B,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,+BAA+B;AAAA,MAC7B,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,8BAA8B;AAAA,MAC5B,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,0BAA0B;AAAA,MACxB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,gCAAgC;AAAA,MAC9B,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,8BAA8B;AAAA,MAC5B,MAAM,CAAC,OAAO,OAAO;AAAA,MACrB,SAAS;AAAA,IACX;AAAA,IACA,6BAA6B;AAAA,MAC3B,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO;AAAA,MAC1C,SAAS;AAAA,IACX;AAAA,IACA,gCAAgC;AAAA,MAC9B,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO;AAAA,MACxD,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,4BAA4B;AAAA,MAC1B,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MACxC,SAAS;AAAA,IACX;AAAA,IACA,8BAA8B;AAAA,MAC5B,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,gCAAgC;AAAA,MAC9B,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,iCAAiC;AAAA,MAC/B,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MACtD,SAAS;AAAA,IACX;AAAA,IACA,+BAA+B;AAAA,MAC7B,MAAM,CAAC,OAAO,OAAO,OAAO,KAAK;AAAA,MACjC,SAAS;AAAA,IACX;AAAA,IACA,oCAAoC;AAAA,MAClC,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MACtD,SAAS;AAAA,IACX;AAAA,IACA,mCAAmC;AAAA,MACjC,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,4BAA4B;AAAA,MAC1B,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,2BAA2B;AAAA,MACzB,MAAM,CAAC,OAAO,IAAI;AAAA,MAClB,SAAS;AAAA,IACX;AAAA,IACA,+BAA+B;AAAA,MAC7B,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,2BAA2B;AAAA,MACzB,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MACxC,SAAS;AAAA,IACX;AAAA,IACA,mCAAmC;AAAA,MACjC,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,iCAAiC;AAAA,MAC/B,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,wCAAwC;AAAA,MACtC,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,+BAA+B;AAAA,MAC7B,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,4BAA4B;AAAA,MAC1B,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,+BAA+B;AAAA,MAC7B,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,oCAAoC;AAAA,MAClC,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,2BAA2B;AAAA,MACzB,MAAM,CAAC,OAAO,MAAM;AAAA,MACpB,SAAS;AAAA,IACX;AAAA,IACA,oCAAoC;AAAA,MAClC,MAAM,CAAC,OAAO,OAAO,OAAO,KAAK;AAAA,MACjC,SAAS;AAAA,IACX;AAAA,IACA,0BAA0B;AAAA,MACxB,MAAM,CAAC,OAAO,OAAO,OAAO,KAAK;AAAA,MACjC,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM,CAAC,OAAO,OAAO,OAAO,KAAK;AAAA,MACjC,SAAS;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,2BAA2B;AAAA,MACzB,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM;AAAA,MAChD,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MACxC,SAAS;AAAA,IACX;AAAA,IACA,2BAA2B;AAAA,MACzB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,OAAO,IAAI;AAAA,MAClB,SAAS;AAAA,IACX;AAAA,IACA,+BAA+B;AAAA,MAC7B,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,oCAAoC;AAAA,MAClC,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,6BAA6B;AAAA,MAC3B,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,6BAA6B;AAAA,MAC3B,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,oCAAoC;AAAA,MAClC,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM,CAAC,IAAI;AAAA,MACX,SAAS;AAAA,IACX;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,0BAA0B;AAAA,MACxB,MAAM,CAAC,OAAO,IAAI;AAAA,MAClB,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,8BAA8B;AAAA,MAC5B,MAAM,CAAC,OAAO,IAAI;AAAA,MAClB,SAAS;AAAA,IACX;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,8BAA8B;AAAA,MAC5B,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MACxC,SAAS;AAAA,IACX;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,0BAA0B;AAAA,MACxB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,2BAA2B;AAAA,MACzB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,0BAA0B;AAAA,MACxB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,oBAAoB;AAAA,MAClB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,qBAAqB;AAAA,MACnB,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,8BAA8B;AAAA,MAC5B,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,6BAA6B;AAAA,MAC3B,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,6BAA6B;AAAA,MAC3B,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,yBAAyB;AAAA,MACvB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,+BAA+B;AAAA,MAC7B,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,+BAA+B;AAAA,MAC7B,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,4BAA4B;AAAA,MAC1B,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,4BAA4B;AAAA,MAC1B,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,8BAA8B;AAAA,MAC5B,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO;AAAA,MAC1C,SAAS;AAAA,IACX;AAAA,IACA,gCAAgC;AAAA,MAC9B,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO;AAAA,MACxD,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MACxC,SAAS;AAAA,IACX;AAAA,IACA,0BAA0B;AAAA,MACxB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,6BAA6B;AAAA,MAC3B,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,MAAM;AAAA,MACtE,SAAS;AAAA,IACX;AAAA,IACA,2BAA2B;AAAA,MACzB,MAAM,CAAC,OAAO,OAAO,OAAO,KAAK;AAAA,MACjC,SAAS;AAAA,IACX;AAAA,IACA,gCAAgC;AAAA,MAC9B,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,MAAM;AAAA,MACtE,SAAS;AAAA,IACX;AAAA,IACA,+BAA+B;AAAA,MAC7B,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,gCAAgC;AAAA,MAC9B,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,qBAAqB;AAAA,MACnB,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,2BAA2B;AAAA,MACzB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,0BAA0B;AAAA,MACxB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,8BAA8B;AAAA,MAC5B,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,6BAA6B;AAAA,MAC3B,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,+BAA+B;AAAA,MAC7B,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,+BAA+B;AAAA,MAC7B,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,oCAAoC;AAAA,MAClC,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,2BAA2B;AAAA,MACzB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,gCAAgC;AAAA,MAC9B,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM,CAAC;AAAA,MACP,SAAS;AAAA,IACX;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM,CAAC;AAAA,MACP,SAAS;AAAA,IACX;AAAA,IACA,oBAAoB;AAAA,MAClB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,qBAAqB;AAAA,MACnB,MAAM,CAAC,OAAO,OAAO,SAAS,OAAO,OAAO,IAAI;AAAA,MAChD,SAAS;AAAA,IACX;AAAA,IACA,0BAA0B;AAAA,MACxB,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,0BAA0B;AAAA,MACxB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,yBAAyB;AAAA,MACvB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,2BAA2B;AAAA,MACzB,MAAM,CAAC,OAAO,OAAO,OAAO;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,eAAe;AAAA,MACb,MAAM,CAAC,OAAO,SAAS,OAAO,OAAO,IAAI;AAAA,MACzC,SAAS;AAAA,IACX;AAAA,IACA,aAAa;AAAA,MACX,MAAM,CAAC,OAAO,OAAO;AAAA,MACrB,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MACtD,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,aAAa;AAAA,MACX,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,cAAc;AAAA,MACZ,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,aAAa;AAAA,MACX,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,eAAe;AAAA,MACb,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM,CAAC,OAAO,KAAK;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,EACF,CAAC;AAAA,EACD,IAAI,IAAI,kBAAkB,IAAI,gBAAgB;AAAA,IAC5C,OAAO;AAAA,MACL,SAAS,sBAAsB,WAAW,OAAO;AAAA,IACnD;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAET,SAAS,qBAAqB,CAAC,SAAS;AAAA,EACtC,IAAI,CAAC,oBAAoB;AAAA,IACvB,qBAAqB,CAAC;AAAA,EACxB;AAAA,EACA,IAAI,IAAI,kBAAkB,CAAC,oBAAoB;AAAA,IAC7C,MAAM,MAAM,IAAI;AAAA,IAChB,MAAM,YAAY,IAAI,YAAY,EAAE,QAAQ,SAAS,GAAG,EAAE,QAAQ,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE;AAAA,IACvF,MAAM,cAAc,kBAAkB;AAAA,IACtC,qBAAqB,IAAI,KAAK,WAAW,EAAE,OAAO;AAAA,EACpD;AAAA,EACA,MAAM,eAAe,CAAC;AAAA,EACtB,IAAI,aAAa;AAAA,EACjB,OAAO,QAAQ,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW;AAAA,IAChD,aAAa,OAAO;AAAA,GACrB;AAAA,EACD,IAAI,IAAI,kBAAkB,oBAAoB;AAAA,IAC5C,MAAM,SAAS;AAAA,IACf,MAAM,YAAY,CAAC,QAAQ;AAAA,MACzB,MAAM,SAAS,IAAI,YAAY,EAAE,OAAO,MAAM;AAAA,CACnD;AAAA,MACK,OAAO,MAAM,MAAM;AAAA,MACnB,OAAO,MAAM;AAAA;AAAA,IAEf,OAAO,QAAQ,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW;AAAA,MAChD,IAAI,OAAO,UAAU,YAAY;AAAA,QAC/B,aAAa,OAAO,IAAI,SAAS;AAAA,UAC/B,UAAU,GAAG,OAAO,KAAK,IAAI,CAAC,QAAQ,OAAO,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI;AAAA,UAChE,MAAM,SAAS,MAAM,GAAG,IAAI;AAAA,UAC5B,UAAU,GAAG,iBAAiB,OAAO,MAAM,GAAG;AAAA,UAC9C,OAAO;AAAA;AAAA,MAEX;AAAA,KACD;AAAA,EACH;AAAA,EACA,IAAI,IAAI,gBAAgB;AAAA,IACtB,aAAa;AAAA,IACb,OAAO,QAAQ,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW;AAAA,MAChD,IAAI,OAAO,UAAU,YAAY;AAAA,QAC/B,IAAI,CAAC,mBAAmB,MAAM;AAAA,UAC5B,mBAAmB,OAAO,CAAC;AAAA,QAC7B;AAAA,QACA,MAAM,eAAe,aAAa;AAAA,QAClC,aAAa,OAAO,IAAI,SAAS;AAAA,UAC/B,MAAM,QAAQ,YAAY,IAAI;AAAA,UAC9B,MAAM,SAAS,aAAa,GAAG,IAAI;AAAA,UACnC,MAAM,MAAM,YAAY,IAAI;AAAA,UAC5B,mBAAmB,KAAK,KAAK,MAAM,KAAK;AAAA,UACxC,OAAO;AAAA;AAAA,MAEX;AAAA,KACD;AAAA,EACH;AAAA,EACA,KAAK,IAAI,kBAAkB,IAAI,mBAAmB,CAAC,uBAAuB;AAAA,IACxE,wBAAwB;AAAA,IACxB,QAAQ,GAAG,QAAQ,MAAM;AAAA,MACvB,IAAI;AAAA,QACF,IAAI,oBAAoB;AAAA,UACtB,mBAAmB,IAAI;AAAA,QACzB;AAAA,QACA,OAAO,GAAG;AAAA,MACZ,IAAI,oBAAoB;AAAA,QACtB,MAAM,WAAW,CAAC;AAAA,QAClB,YAAY,KAAK,YAAY,OAAO,QAAQ,kBAAkB,GAAG;AAAA,UAC/D,IAAI,CAAC,MAAM,QAAQ,OAAO,KAAK,QAAQ,WAAW,GAAG;AAAA,YACnD;AAAA,UACF;AAAA,UACA,MAAM,gBAAgB,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,UACvD,MAAM,QAAQ,cAAc;AAAA,UAC5B,MAAM,QAAQ,cAAc,OAAO,CAAC,KAAK,OAAO,MAAM,IAAI,CAAC;AAAA,UAC3D,MAAM,UAAU,QAAQ;AAAA,UACxB,MAAM,MAAM,cAAc;AAAA,UAC1B,MAAM,MAAM,cAAc,QAAQ;AAAA,UAClC,MAAM,cAAc,KAAK,MAAM,QAAQ,CAAC;AAAA,UACxC,MAAM,WAAW,KAAK,MAAM,QAAQ,GAAG;AAAA,UACvC,MAAM,WAAW,KAAK,MAAM,QAAQ,IAAI;AAAA,UACxC,MAAM,SAAS,cAAc;AAAA,UAC7B,MAAM,MAAM,cAAc,KAAK,IAAI,UAAU,QAAQ,CAAC;AAAA,UACtD,MAAM,MAAM,cAAc,KAAK,IAAI,UAAU,QAAQ,CAAC;AAAA,UACtD,SAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA,SAAS,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAAA,QACzC,MAAM,QAAQ,CAAC;AAAA,QACf,MAAM,KAAK;AAAA,qCACkB;AAAA,QAC7B,MAAM,KAAK,yCAAyC;AAAA,QACpD,MAAM,KAAK,2HAA2H;AAAA,QACtI,IAAI,SAAS,WAAW,GAAG;AAAA,UACzB,MAAM,KAAK,wDAAwD;AAAA,QACrE,EAAO;AAAA,UACL,MAAM,aAAa;AAAA,UACnB,MAAM,cAAc;AAAA,UACpB,MAAM,cAAc;AAAA,UACpB,MAAM,YAAY;AAAA,UAClB,MAAM,YAAY;AAAA,UAClB,MAAM,YAAY;AAAA,UAClB,MAAM,YAAY;AAAA,UAClB,MAAM,YAAY;AAAA,UAClB,MAAM,YAAY;AAAA,UAClB,MAAM,YAAY,KAAK,IAAI,WAAW,QAAQ,GAAG,SAAS,IAAI,CAAC,MAAM,EAAE,KAAK,MAAM,CAAC;AAAA,UACnF,MAAM,aAAa,KAAK,IAAI,YAAY,QAAQ,GAAG,SAAS,IAAI,CAAC,MAAM,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC;AAAA,UAC9F,MAAM,aAAa,KAAK,IAAI,YAAY,QAAQ,GAAG,SAAS,IAAI,CAAC,MAAM,EAAE,MAAM,QAAQ,CAAC,EAAE,MAAM,CAAC;AAAA,UACjG,MAAM,WAAW,KAAK,IAAI,UAAU,QAAQ,GAAG,SAAS,IAAI,CAAC,MAAM,EAAE,QAAQ,QAAQ,CAAC,EAAE,MAAM,CAAC;AAAA,UAC/F,MAAM,WAAW,KAAK,IAAI,UAAU,QAAQ,GAAG,SAAS,IAAI,CAAC,MAAM,EAAE,IAAI,QAAQ,CAAC,EAAE,MAAM,CAAC;AAAA,UAC3F,MAAM,WAAW,KAAK,IAAI,UAAU,QAAQ,GAAG,SAAS,IAAI,CAAC,MAAM,EAAE,IAAI,QAAQ,CAAC,EAAE,MAAM,CAAC;AAAA,UAC3F,MAAM,cAAc,KAAK,IAAI,UAAU,QAAQ,GAAG,SAAS,IAAI,CAAC,MAAM,EAAE,OAAO,QAAQ,CAAC,EAAE,MAAM,CAAC;AAAA,UACjG,MAAM,WAAW,KAAK,IAAI,UAAU,QAAQ,GAAG,SAAS,IAAI,CAAC,MAAM,EAAE,IAAI,QAAQ,CAAC,EAAE,MAAM,CAAC;AAAA,UAC3F,MAAM,WAAW,KAAK,IAAI,UAAU,QAAQ,GAAG,SAAS,IAAI,CAAC,MAAM,EAAE,IAAI,QAAQ,CAAC,EAAE,MAAM,CAAC;AAAA,UAC3F,MAAM,KAAK,GAAG,WAAW,OAAO,SAAS,OAAO,YAAY,SAAS,UAAU,OAAO,YAAY,SAAS,UAAU,OAAO,UAAU,SAAS,QAAQ,OAAO,UAAU,SAAS,QAAQ,OAAO,UAAU,SAAS,QAAQ,OAAO,UAAU,SAAS,WAAW,OAAO,UAAU,SAAS,QAAQ,OAAO,UAAU,SAAS,QAAQ,GAAG;AAAA,UACvU,MAAM,KAAK,GAAG,IAAI,OAAO,SAAS,OAAO,IAAI,OAAO,UAAU,OAAO,IAAI,OAAO,UAAU,OAAO,IAAI,OAAO,QAAQ,OAAO,IAAI,OAAO,QAAQ,OAAO,IAAI,OAAO,QAAQ,OAAO,IAAI,OAAO,WAAW,OAAO,IAAI,OAAO,QAAQ,OAAO,IAAI,OAAO,QAAQ,GAAG;AAAA,UAC5P,SAAS,QAAQ,CAAC,SAAS;AAAA,YACzB,MAAM,KAAK,GAAG,KAAK,KAAK,OAAO,SAAS,OAAO,OAAO,KAAK,KAAK,EAAE,SAAS,UAAU,OAAO,KAAK,MAAM,QAAQ,CAAC,EAAE,SAAS,UAAU,OAAO,KAAK,QAAQ,QAAQ,CAAC,EAAE,SAAS,QAAQ,OAAO,KAAK,IAAI,QAAQ,CAAC,EAAE,SAAS,QAAQ,OAAO,KAAK,IAAI,QAAQ,CAAC,EAAE,SAAS,QAAQ,OAAO,KAAK,OAAO,QAAQ,CAAC,EAAE,SAAS,WAAW,OAAO,KAAK,IAAI,QAAQ,CAAC,EAAE,SAAS,QAAQ,OAAO,KAAK,IAAI,QAAQ,CAAC,EAAE,SAAS,QAAQ,GAAG;AAAA,WAC3Z;AAAA;AAAA,QAEH,MAAM,KAAK,2HAA2H;AAAA,QACtI,MAAM,SAAS,MAAM,KAAK;AAAA,CACjC;AAAA,QACO,QAAQ,IAAI,MAAM;AAAA,QAClB,IAAI;AAAA,UACF,MAAM,MAAM,IAAI;AAAA,UAChB,MAAM,YAAY,IAAI,YAAY,EAAE,QAAQ,SAAS,GAAG,EAAE,QAAQ,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE;AAAA,UACvF,MAAM,gBAAgB,kBAAkB;AAAA,UACxC,IAAI,MAAM,eAAe,MAAM;AAAA,UAC/B,OAAO,GAAG;AAAA,UACV,QAAQ,MAAM,mCAAmC,CAAC;AAAA;AAAA,MAEtD;AAAA,KACD;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAET,IAAI;AAAA,CACH,CAAC,cAAc;AAAA,EACd,UAAU,UAAU,WAAW,KAAK;AAAA,EACpC,UAAU,UAAU,UAAU,KAAK;AAAA,EACnC,UAAU,UAAU,UAAU,KAAK;AAAA,EACnC,UAAU,UAAU,WAAW,KAAK;AAAA,GACnC,cAAc,CAAC,CAAC;AAAA;AAEnB,MAAM,aAAa;AAAA,EACjB;AAAA,EACA,UAAU,IAAI;AAAA,EACd,UAAU,IAAI;AAAA,EACd;AAAA,EACA;AAAA,EACA,gBAAgB,IAAI;AAAA,EACpB,oBAAoB,CAAC;AAAA,EACrB,gCAAgC;AAAA,EAChC,yBAAyB,IAAI;AAAA,EAC7B,WAAW,CAAC,SAAS;AAAA,IACnB,KAAK,UAAU,cAAc,OAAO;AAAA,IACpC,KAAK,aAAa;AAAA,IAClB,KAAK,cAAc;AAAA;AAAA,EAErB,YAAY,GAAG;AAAA,IACb,IAAI,KAAK,oBAAoB;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,MAAM,cAAc,IAAI,WAAW,CAAC,OAAO,QAAQ,iBAAiB;AAAA,MAClE,IAAI;AAAA,QACF,MAAM,SAAS,OAAO,iBAAiB,WAAW,OAAO,YAAY,IAAI;AAAA,QACzE,IAAI,WAAW,KAAK,CAAC,QAAQ;AAAA,UAC3B;AAAA,QACF;AAAA,QACA,MAAM,YAAY,eAAe,QAAQ,GAAG,MAAM;AAAA,QAClD,MAAM,WAAW,IAAI,WAAW,SAAS;AAAA,QACzC,MAAM,UAAU,KAAK,QAAQ,OAAO,QAAQ;AAAA,QAC5C,QAAQ;AAAA,eACD;AAAA,YACH,QAAQ,MAAM,OAAO;AAAA,YACrB;AAAA,eACG;AAAA,YACH,QAAQ,KAAK,OAAO;AAAA,YACpB;AAAA,eACG;AAAA,YACH,QAAQ,KAAK,OAAO;AAAA,YACpB;AAAA,eACG;AAAA,YACH,QAAQ,MAAM,OAAO;AAAA,YACrB;AAAA;AAAA,YAEA,QAAQ,IAAI,OAAO;AAAA;AAAA,QAEvB,OAAO,OAAO;AAAA,QACd,QAAQ,MAAM,8BAA8B,KAAK;AAAA;AAAA,OAElD;AAAA,MACD,MAAM,CAAC,MAAM,OAAO,OAAO;AAAA,MAC3B,SAAS;AAAA,IACX,CAAC;AAAA,IACD,KAAK,qBAAqB;AAAA,IAC1B,IAAI,CAAC,YAAY,KAAK;AAAA,MACpB,MAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AAAA,IACA,KAAK,eAAe,YAAY,GAAG;AAAA;AAAA,EAErC,cAAc,CAAC,aAAa;AAAA,IAC1B,KAAK,QAAQ,QAAQ,eAAe,WAAW;AAAA;AAAA,EAEjD,aAAa,GAAG;AAAA,IACd,IAAI,KAAK,sBAAsB;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,MAAM,gBAAgB,IAAI,WAAW,CAAC,SAAS,eAAe,SAAS,kBAAkB;AAAA,MACvF,IAAI;AAAA,QACF,MAAM,UAAU,OAAO,kBAAkB,WAAW,OAAO,aAAa,IAAI;AAAA,QAC5E,MAAM,UAAU,OAAO,kBAAkB,WAAW,OAAO,aAAa,IAAI;AAAA,QAC5E,IAAI,YAAY,KAAK,CAAC,SAAS;AAAA,UAC7B;AAAA,QACF;AAAA,QACA,MAAM,aAAa,eAAe,SAAS,GAAG,OAAO;AAAA,QACrD,MAAM,YAAY,IAAI,WAAW,UAAU;AAAA,QAC3C,MAAM,YAAY,KAAK,QAAQ,OAAO,SAAS;AAAA,QAC/C,IAAI;AAAA,QACJ,IAAI,UAAU,KAAK,SAAS;AAAA,UAC1B,YAAY,eAAe,SAAS,GAAG,OAAO,EAAE,MAAM;AAAA,QACxD,EAAO;AAAA,UACL,YAAY,IAAI,YAAY,CAAC;AAAA;AAAA,QAE/B,eAAe,MAAM;AAAA,UACnB,KAAK,cAAc,KAAK,WAAW,SAAS;AAAA,UAC5C,WAAW,WAAW,KAAK,mBAAmB;AAAA,YAC5C,QAAQ,WAAW,SAAS;AAAA,UAC9B;AAAA,SACD;AAAA,QACD,OAAO,OAAO;AAAA,QACd,QAAQ,MAAM,mCAAmC,KAAK;AAAA;AAAA,OAEvD;AAAA,MACD,MAAM,CAAC,OAAO,SAAS,OAAO,OAAO;AAAA,MACrC,SAAS;AAAA,IACX,CAAC;AAAA,IACD,KAAK,uBAAuB;AAAA,IAC5B,IAAI,CAAC,cAAc,KAAK;AAAA,MACtB,MAAM,IAAI,MAAM,iCAAiC;AAAA,IACnD;AAAA,IACA,KAAK,iBAAiB,cAAc,GAAG;AAAA;AAAA,EAEzC,4BAA4B,GAAG;AAAA,IAC7B,IAAI,KAAK,+BAA+B;AAAA,MACtC,OAAO,KAAK;AAAA,IACd;AAAA,IACA,MAAM,WAAW,IAAI,WAAW,CAAC,WAAW,SAAS,MAAM,SAAS;AAAA,MAClE,MAAM,UAAU,KAAK,uBAAuB,IAAI,UAAU,SAAS,CAAC;AAAA,MACpE,IAAI,SAAS;AAAA,QACX,QAAQ,SAAS,MAAM,IAAI;AAAA,MAC7B;AAAA,OACC;AAAA,MACD,MAAM,CAAC,OAAO,OAAO,OAAO,KAAK;AAAA,MACjC,SAAS;AAAA,IACX,CAAC;AAAA,IACD,KAAK,gCAAgC;AAAA,IACrC,IAAI,CAAC,SAAS,KAAK;AAAA,MACjB,MAAM,IAAI,MAAM,4CAA4C;AAAA,IAC9D;AAAA,IACA,OAAO;AAAA;AAAA,EAET,gBAAgB,CAAC,aAAa;AAAA,IAC5B,KAAK,QAAQ,QAAQ,iBAAiB,WAAW;AAAA;AAAA,EAEnD,cAAc,CAAC,OAAO,QAAQ,UAAU,CAAC,GAAG;AAAA,IAC1C,MAAM,UAAU,QAAQ,WAAW;AAAA,IACnC,MAAM,SAAS,QAAQ,UAAU;AAAA,IACjC,OAAO,KAAK,QAAQ,QAAQ,eAAe,OAAO,QAAQ,SAAS,MAAM;AAAA;AAAA,EAE3E,eAAe,CAAC,UAAU;AAAA,IACxB,KAAK,QAAQ,QAAQ,gBAAgB,QAAQ;AAAA;AAAA,EAE/C,YAAY,CAAC,UAAU,WAAW;AAAA,IAChC,KAAK,QAAQ,QAAQ,aAAa,UAAU,SAAS;AAAA;AAAA,EAEvD,kBAAkB,CAAC,UAAU,OAAO;AAAA,IAClC,KAAK,QAAQ,QAAQ,mBAAmB,UAAU,MAAM,MAAM;AAAA;AAAA,EAEhE,eAAe,CAAC,UAAU,QAAQ;AAAA,IAChC,KAAK,QAAQ,QAAQ,gBAAgB,UAAU,MAAM;AAAA;AAAA,EAEvD,WAAW,CAAC,UAAU,MAAM,KAAK,mBAAmB;AAAA,IAClD,KAAK,QAAQ,QAAQ,YAAY,UAAU,MAAM,KAAK,iBAAiB;AAAA;AAAA,EAEzE,iBAAiB,CAAC,UAAU,UAAU,WAAW,cAAc;AAAA,IAC7D,KAAK,QAAQ,QAAQ,kBAAkB,UAAU,UAAU,WAAW,YAAY;AAAA;AAAA,EAEpF,aAAa,CAAC,UAAU;AAAA,IACtB,MAAM,YAAY,KAAK,QAAQ,QAAQ,cAAc,QAAQ;AAAA,IAC7D,IAAI,CAAC,WAAW;AAAA,MACd,MAAM,IAAI,MAAM,2BAA2B;AAAA,IAC7C;AAAA,IACA,MAAM,QAAQ,KAAK,QAAQ,QAAQ,eAAe,SAAS;AAAA,IAC3D,MAAM,SAAS,KAAK,QAAQ,QAAQ,gBAAgB,SAAS;AAAA,IAC7D,OAAO,IAAI,gBAAgB,MAAM,WAAW,OAAO,QAAQ,EAAE,IAAI,eAAe,aAAa,UAAU,CAAC;AAAA;AAAA,EAE1G,gBAAgB,CAAC,UAAU;AAAA,IACzB,MAAM,YAAY,KAAK,QAAQ,QAAQ,iBAAiB,QAAQ;AAAA,IAChE,IAAI,CAAC,WAAW;AAAA,MACd,MAAM,IAAI,MAAM,8BAA8B;AAAA,IAChD;AAAA,IACA,MAAM,QAAQ,KAAK,QAAQ,QAAQ,eAAe,SAAS;AAAA,IAC3D,MAAM,SAAS,KAAK,QAAQ,QAAQ,gBAAgB,SAAS;AAAA,IAC7D,OAAO,IAAI,gBAAgB,MAAM,WAAW,OAAO,QAAQ,EAAE,IAAI,kBAAkB,aAAa,UAAU,CAAC;AAAA;AAAA,EAE7G,gBAAgB,CAAC,QAAQ;AAAA,IACvB,MAAM,OAAO,KAAK,QAAQ,QAAQ,iBAAiB,MAAM;AAAA,IACzD,IAAI,CAAC,MAAM;AAAA,MACT,MAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AAAA,IACA,OAAO;AAAA;AAAA,EAET,cAAc,CAAC,QAAQ;AAAA,IACrB,MAAM,OAAO,KAAK,QAAQ,QAAQ,eAAe,MAAM;AAAA,IACvD,IAAI,CAAC,MAAM;AAAA,MACT,MAAM,IAAI,MAAM,0BAA0B;AAAA,IAC5C;AAAA,IACA,OAAO;AAAA;AAAA,EAET,cAAc,CAAC,QAAQ;AAAA,IACrB,MAAM,OAAO,KAAK,QAAQ,QAAQ,eAAe,MAAM;AAAA,IACvD,IAAI,CAAC,MAAM;AAAA,MACT,MAAM,IAAI,MAAM,0BAA0B;AAAA,IAC5C;AAAA,IACA,OAAO;AAAA;AAAA,EAET,sBAAsB,CAAC,QAAQ;AAAA,IAC7B,MAAM,OAAO,KAAK,QAAQ,QAAQ,uBAAuB,MAAM;AAAA,IAC/D,IAAI,CAAC,MAAM;AAAA,MACT,MAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAAA,IACA,OAAO;AAAA;AAAA,EAET,qBAAqB,CAAC,QAAQ;AAAA,IAC5B,OAAO,KAAK,QAAQ,QAAQ,sBAAsB,MAAM;AAAA;AAAA,EAE1D,qBAAqB,CAAC,QAAQ,cAAc;AAAA,IAC1C,KAAK,QAAQ,QAAQ,sBAAsB,QAAQ,YAAY;AAAA;AAAA,EAEjE,WAAW,CAAC,QAAQ;AAAA,IAClB,MAAM,SAAS;AAAA,IACf,MAAM,YAAY,IAAI,WAAW,MAAM;AAAA,IACvC,MAAM,YAAY,KAAK,QAAQ,QAAQ,YAAY,QAAQ,WAAW,MAAM;AAAA,IAC5E,MAAM,MAAM,OAAO,cAAc,WAAW,OAAO,SAAS,IAAI;AAAA,IAChE,OAAO,KAAK,QAAQ,OAAO,UAAU,MAAM,GAAG,GAAG,CAAC;AAAA;AAAA,EAEpD,qBAAqB,CAAC,QAAQ;AAAA,IAC5B,OAAO,KAAK,QAAQ,QAAQ,sBAAsB,MAAM;AAAA;AAAA,EAE1D,wBAAwB,CAAC,QAAQ,cAAc,eAAe;AAAA,IAC5D,MAAM,eAAe,KAAK,QAAQ,QAAQ,yBAAyB,QAAQ,cAAc,aAAa,QAAQ,aAAa;AAAA,IAC3H,OAAO,OAAO,iBAAiB,WAAW,OAAO,YAAY,IAAI;AAAA;AAAA,EAEnE,cAAc,CAAC,QAAQ;AAAA,IACrB,OAAO,KAAK,QAAQ,QAAQ,eAAe,MAAM;AAAA;AAAA,EAEnD,eAAe,CAAC,QAAQ;AAAA,IACtB,OAAO,KAAK,QAAQ,QAAQ,gBAAgB,MAAM;AAAA;AAAA,EAEpD,WAAW,CAAC,QAAQ,OAAO;AAAA,IACzB,KAAK,QAAQ,QAAQ,YAAY,QAAQ,MAAM,MAAM;AAAA;AAAA,EAEvD,cAAc,CAAC,QAAQ,MAAM,GAAG,GAAG,OAAO,SAAS,YAAY;AAAA,IAC7D,MAAM,YAAY,KAAK,QAAQ,OAAO,IAAI;AAAA,IAC1C,MAAM,aAAa,UAAU;AAAA,IAC7B,MAAM,MAAM,UAAU,QAAQ,SAAS;AAAA,IACvC,MAAM,MAAM,MAAM;AAAA,IAClB,KAAK,QAAQ,QAAQ,eAAe,QAAQ,WAAW,YAAY,GAAG,GAAG,KAAK,KAAK,cAAc,CAAC;AAAA;AAAA,EAEpG,8BAA8B,CAAC,QAAQ,GAAG,GAAG,MAAM,OAAO,SAAS,YAAY;AAAA,IAC7E,MAAM,UAAU,KAAK,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC;AAAA,IACxD,MAAM,MAAM,QAAQ;AAAA,IACpB,MAAM,MAAM,MAAM;AAAA,IAClB,KAAK,QAAQ,QAAQ,+BAA+B,QAAQ,GAAG,GAAG,SAAS,KAAK,KAAK,cAAc,CAAC;AAAA;AAAA,EAEtG,aAAa,CAAC,QAAQ,GAAG,GAAG,MAAM,OAAO,SAAS,YAAY;AAAA,IAC5D,MAAM,UAAU,KAAK,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC;AAAA,IACxD,MAAM,MAAM,QAAQ;AAAA,IACpB,MAAM,MAAM,MAAM;AAAA,IAClB,KAAK,QAAQ,QAAQ,cAAc,QAAQ,GAAG,GAAG,SAAS,KAAK,KAAK,cAAc,CAAC;AAAA;AAAA,EAErF,cAAc,CAAC,QAAQ,GAAG,GAAG,OAAO,QAAQ,OAAO;AAAA,IACjD,MAAM,MAAM,MAAM;AAAA,IAClB,KAAK,QAAQ,QAAQ,eAAe,QAAQ,GAAG,GAAG,OAAO,QAAQ,GAAG;AAAA;AAAA,EAEtE,2BAA2B,CAAC,QAAQ,GAAG,GAAG,cAAc,iBAAiB,QAAQ,oBAAoB;AAAA,IACnG,MAAM,WAAW,WAAW,eAAe,IAAI;AAAA,IAC/C,KAAK,QAAQ,QAAQ,4BAA4B,QAAQ,GAAG,GAAG,cAAc,iBAAiB,UAAU,kBAAkB;AAAA;AAAA,EAE5H,sBAAsB,CAAC,QAAQ,SAAS,SAAS,MAAM,MAAM,oBAAoB,qBAAqB;AAAA,IACpG,KAAK,QAAQ,QAAQ,uBAAuB,QAAQ,SAAS,SAAS,MAAM,MAAM,oBAAoB,mBAAmB;AAAA;AAAA,EAE3H,yBAAyB,CAAC,QAAQ,MAAM,MAAM,gBAAgB,UAAU,WAAW,KAAK,KAAK;AAAA,IAC3F,KAAK,QAAQ,QAAQ,0BAA0B,QAAQ,MAAM,MAAM,gBAAgB,UAAU,WAAW,KAAK,UAAU,MAAM,KAAK,UAAU,IAAI;AAAA;AAAA,EAElJ,qCAAqC,CAAC,QAAQ,MAAM,MAAM,gBAAgB,UAAU,WAAW,KAAK,KAAK;AAAA,IACvG,KAAK,QAAQ,QAAQ,sCAAsC,QAAQ,MAAM,MAAM,gBAAgB,UAAU,WAAW,KAAK,UAAU,MAAM,KAAK,UAAU,IAAI;AAAA;AAAA,EAE9J,aAAa,CAAC,QAAQ,GAAG,GAAG,OAAO,QAAQ,aAAa,eAAe,aAAa,iBAAiB,OAAO;AAAA,IAC1G,MAAM,aAAa,QAAQ,KAAK,QAAQ,OAAO,KAAK,IAAI;AAAA,IACxD,MAAM,WAAW,QAAQ,WAAW,SAAS;AAAA,IAC7C,MAAM,WAAW,QAAQ,aAAa;AAAA,IACtC,KAAK,QAAQ,QAAQ,cAAc,QAAQ,GAAG,GAAG,OAAO,QAAQ,aAAa,eAAe,YAAY,QAAQ,gBAAgB,QAAQ,UAAU,QAAQ;AAAA;AAAA,EAE5J,YAAY,CAAC,QAAQ,OAAO,QAAQ;AAAA,IAClC,KAAK,QAAQ,QAAQ,aAAa,QAAQ,OAAO,MAAM;AAAA;AAAA,EAEzD,SAAS,CAAC,KAAK;AAAA,IACb,MAAM,WAAW,KAAK,QAAQ,OAAO,GAAG;AAAA,IACxC,OAAO,KAAK,QAAQ,QAAQ,UAAU,UAAU,SAAS,MAAM;AAAA;AAAA,EAEjE,UAAU,CAAC,QAAQ,SAAS,KAAK;AAAA,IAC/B,MAAM,YAAY,IAAI,WAAW,MAAM;AAAA,IACvC,MAAM,YAAY,KAAK,QAAQ,QAAQ,WAAW,QAAQ,WAAW,MAAM;AAAA,IAC3E,OAAO,KAAK,QAAQ,OAAO,UAAU,MAAM,GAAG,SAAS,CAAC;AAAA;AAAA,EAE1D,kBAAkB,CAAC,gBAAgB,QAAQ;AAAA,IACzC,OAAO,KAAK,QAAQ,QAAQ,mBAAmB,gBAAgB,MAAM;AAAA;AAAA,EAEvE,mBAAmB,CAAC,YAAY;AAAA,IAC9B,OAAO,KAAK,QAAQ,QAAQ,oBAAoB,UAAU;AAAA;AAAA,EAE5D,cAAc,CAAC,UAAU,OAAO,QAAQ;AAAA,IACtC,KAAK,QAAQ,QAAQ,eAAe,UAAU,OAAO,MAAM;AAAA;AAAA,EAE7D,iBAAiB,CAAC,UAAU,GAAG,GAAG,SAAS;AAAA,IACzC,KAAK,QAAQ,QAAQ,kBAAkB,UAAU,GAAG,GAAG,OAAO;AAAA;AAAA,EAEhE,cAAc,CAAC,UAAU,OAAO;AAAA,IAC9B,KAAK,QAAQ,QAAQ,eAAe,UAAU,MAAM,MAAM;AAAA;AAAA,EAE5D,cAAc,CAAC,UAAU;AAAA,IACvB,MAAM,eAAe,IAAI,YAAY,kBAAkB,IAAI;AAAA,IAC3D,KAAK,QAAQ,QAAQ,eAAe,UAAU,KAAK,YAAY,CAAC;AAAA,IAChE,MAAM,SAAS,kBAAkB,OAAO,YAAY;AAAA,IACpD,OAAO;AAAA,MACL,GAAG,OAAO;AAAA,MACV,GAAG,OAAO;AAAA,MACV,SAAS,OAAO;AAAA,MAChB,OAAO,mBAAmB,OAAO,UAAU;AAAA,MAC3C,UAAU,OAAO;AAAA,MACjB,OAAO,KAAK,WAAW,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAAA,IAC/D;AAAA;AAAA,EAEF,qBAAqB,CAAC,UAAU,SAAS;AAAA,IACvC,MAAM,QAAQ,QAAQ,SAAS,OAAO,mBAAmB,QAAQ,SAAS;AAAA,IAC1E,MAAM,WAAW,QAAQ,YAAY,OAAO,QAAQ,WAAW,IAAI,IAAI;AAAA,IACvE,MAAM,SAAS,QAAQ,UAAU,OAAO,kBAAkB,QAAQ,UAAU;AAAA,IAC5E,MAAM,SAAS,yBAAyB,KAAK,EAAE,OAAO,UAAU,OAAO,QAAQ,OAAO,OAAO,CAAC;AAAA,IAC9F,KAAK,QAAQ,QAAQ,sBAAsB,UAAU,KAAK,MAAM,CAAC;AAAA;AAAA,EAEnE,MAAM,CAAC,UAAU,OAAO;AAAA,IACtB,KAAK,QAAQ,QAAQ,OAAO,UAAU,KAAK;AAAA;AAAA,EAE7C,qBAAqB,CAAC,OAAO,QAAQ,aAAa,eAAe,OAAO,IAAI;AAAA,IAC1E,IAAI,OAAO,MAAM,KAAK,KAAK,OAAO,MAAM,MAAM,GAAG;AAAA,MAC/C,QAAQ,MAAM,IAAI,MAAM,2CAA2C,SAAS,QAAQ,EAAE,KAAK;AAAA,IAC7F;AAAA,IACA,MAAM,kBAAkB,gBAAgB,YAAY,IAAI;AAAA,IACxD,MAAM,UAAU,MAAM;AAAA,IACtB,MAAM,UAAU,KAAK,QAAQ,OAAO,OAAO;AAAA,IAC3C,MAAM,YAAY,KAAK,QAAQ,QAAQ,sBAAsB,OAAO,QAAQ,cAAc,iBAAiB,SAAS,QAAQ,MAAM;AAAA,IAClI,IAAI,CAAC,WAAW;AAAA,MACd,MAAM,IAAI,MAAM,sCAAsC,SAAS,QAAQ;AAAA,IACzE;AAAA,IACA,OAAO,IAAI,gBAAgB,MAAM,WAAW,OAAO,QAAQ,EAAE,cAAc,IAAI,YAAY,CAAC;AAAA;AAAA,EAE9F,sBAAsB,CAAC,WAAW;AAAA,IAChC,KAAK,QAAQ,QAAQ,uBAAuB,SAAS;AAAA;AAAA,EAEvD,eAAe,CAAC,iBAAiB,OAAO,OAAO,WAAW,SAAS,SAAS,aAAa,cAAc;AAAA,IACrG,MAAM,OAAO,WAAW;AAAA,IACxB,MAAM,OAAO,WAAW;AAAA,IACxB,MAAM,WAAW,eAAe;AAAA,IAChC,MAAM,YAAY,gBAAgB;AAAA,IAClC,KAAK,QAAQ,QAAQ,gBAAgB,iBAAiB,OAAO,OAAO,WAAW,MAAM,MAAM,UAAU,SAAS;AAAA;AAAA,EAEhH,eAAe,CAAC,UAAU,SAAS,QAAQ;AAAA,IACzC,KAAK,QAAQ,QAAQ,gBAAgB,UAAU,SAAS,MAAM;AAAA;AAAA,EAEhE,aAAa,CAAC,UAAU;AAAA,IACtB,KAAK,QAAQ,QAAQ,cAAc,QAAQ;AAAA;AAAA,EAE7C,gBAAgB,CAAC,UAAU,OAAO;AAAA,IAChC,MAAM,aAAa,KAAK,QAAQ,OAAO,KAAK;AAAA,IAC5C,KAAK,QAAQ,QAAQ,iBAAiB,UAAU,YAAY,WAAW,MAAM;AAAA;AAAA,EAE/E,oBAAoB,CAAC,UAAU,QAAQ,SAAS;AAAA,IAC9C,OAAO,KAAK,QAAQ,QAAQ,qBAAqB,UAAU,QAAQ,SAAS,QAAQ,MAAM;AAAA;AAAA,EAE5F,mBAAmB,CAAC,UAAU,QAAQ;AAAA,IACpC,OAAO,KAAK,QAAQ,QAAQ,oBAAoB,UAAU,MAAM;AAAA;AAAA,EAElE,YAAY,CAAC,UAAU,GAAG,GAAG,OAAO,QAAQ,IAAI;AAAA,IAC9C,KAAK,QAAQ,QAAQ,aAAa,UAAU,GAAG,GAAG,OAAO,QAAQ,EAAE;AAAA;AAAA,EAErE,mBAAmB,CAAC,UAAU;AAAA,IAC5B,KAAK,QAAQ,QAAQ,oBAAoB,QAAQ;AAAA;AAAA,EAEnD,sBAAsB,CAAC,UAAU,GAAG,GAAG,OAAO,QAAQ;AAAA,IACpD,KAAK,QAAQ,QAAQ,uBAAuB,UAAU,GAAG,GAAG,OAAO,MAAM;AAAA;AAAA,EAE3E,qBAAqB,CAAC,UAAU;AAAA,IAC9B,KAAK,QAAQ,QAAQ,sBAAsB,QAAQ;AAAA;AAAA,EAErD,wBAAwB,CAAC,UAAU;AAAA,IACjC,KAAK,QAAQ,QAAQ,yBAAyB,QAAQ;AAAA;AAAA,EAExD,0BAA0B,CAAC,UAAU,GAAG,GAAG,OAAO,QAAQ,IAAI;AAAA,IAC5D,KAAK,QAAQ,QAAQ,2BAA2B,UAAU,GAAG,GAAG,OAAO,QAAQ,EAAE;AAAA;AAAA,EAEnF,QAAQ,CAAC,UAAU,GAAG,GAAG;AAAA,IACvB,OAAO,KAAK,QAAQ,QAAQ,SAAS,UAAU,GAAG,CAAC;AAAA;AAAA,EAErD,eAAe,CAAC,UAAU;AAAA,IACxB,OAAO,KAAK,QAAQ,QAAQ,gBAAgB,QAAQ;AAAA;AAAA,EAEtD,WAAW,CAAC,UAAU;AAAA,IACpB,KAAK,QAAQ,QAAQ,YAAY,QAAQ;AAAA;AAAA,EAE3C,WAAW,CAAC,UAAU,WAAW;AAAA,IAC/B,MAAM,KAAK,aAAa,KAAK,IAAI;AAAA,IACjC,KAAK,QAAQ,QAAQ,YAAY,UAAU,EAAE;AAAA;AAAA,EAE/C,gBAAgB,CAAC,UAAU,WAAW;AAAA,IACpC,MAAM,KAAK,aAAa,KAAK,IAAI;AAAA,IACjC,KAAK,QAAQ,QAAQ,iBAAiB,UAAU,EAAE;AAAA;AAAA,EAEpD,oBAAoB,CAAC,UAAU;AAAA,IAC7B,KAAK,QAAQ,QAAQ,qBAAqB,QAAQ;AAAA;AAAA,EAEpD,WAAW,CAAC,UAAU,gBAAgB;AAAA,IACpC,KAAK,QAAQ,QAAQ,YAAY,UAAU,cAAc;AAAA;AAAA,EAE3D,YAAY,CAAC,UAAU;AAAA,IACrB,KAAK,QAAQ,QAAQ,aAAa,QAAQ;AAAA;AAAA,EAE5C,mBAAmB,CAAC,UAAU,OAAO;AAAA,IACnC,KAAK,QAAQ,QAAQ,oBAAoB,UAAU,KAAK;AAAA;AAAA,EAE1D,oBAAoB,CAAC,UAAU;AAAA,IAC7B,KAAK,QAAQ,QAAQ,qBAAqB,QAAQ;AAAA;AAAA,EAEpD,qBAAqB,CAAC,UAAU,OAAO;AAAA,IACrC,KAAK,QAAQ,QAAQ,sBAAsB,UAAU,KAAK;AAAA;AAAA,EAE5D,qBAAqB,CAAC,UAAU;AAAA,IAC9B,OAAO,KAAK,QAAQ,QAAQ,sBAAsB,QAAQ;AAAA;AAAA,EAE5D,aAAa,CAAC,UAAU,oBAAoB;AAAA,IAC1C,KAAK,QAAQ,QAAQ,cAAc,UAAU,kBAAkB;AAAA;AAAA,EAEjE,eAAe,CAAC,UAAU;AAAA,IACxB,KAAK,QAAQ,QAAQ,gBAAgB,QAAQ;AAAA;AAAA,EAE/C,cAAc,CAAC,UAAU;AAAA,IACvB,KAAK,QAAQ,QAAQ,eAAe,QAAQ;AAAA;AAAA,EAE9C,oBAAoB,CAAC,UAAU;AAAA,IAC7B,KAAK,QAAQ,QAAQ,qBAAqB,QAAQ;AAAA;AAAA,EAEpD,QAAQ,CAAC,UAAU,MAAM;AAAA,IACvB,MAAM,QAAQ,OAAO,SAAS,WAAW,IAAI,YAAY,EAAE,OAAO,IAAI,IAAI;AAAA,IAC1E,IAAI,MAAM,WAAW;AAAA,MACnB;AAAA,IACF,KAAK,QAAQ,QAAQ,SAAS,UAAU,KAAK,KAAK,GAAG,MAAM,MAAM;AAAA;AAAA,EAEnE,gBAAgB,CAAC,aAAa;AAAA,IAC5B,MAAM,kBAAkB,gBAAgB,YAAY,IAAI;AAAA,IACxD,MAAM,YAAY,KAAK,QAAQ,QAAQ,iBAAiB,eAAe;AAAA,IACvE,IAAI,CAAC,WAAW;AAAA,MACd,MAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AAAA,IACA,OAAO,IAAI,WAAW,MAAM,SAAS;AAAA;AAAA,EAEvC,iBAAiB,CAAC,QAAQ;AAAA,IACxB,KAAK,QAAQ,QAAQ,kBAAkB,MAAM;AAAA;AAAA,EAE/C,mBAAmB,CAAC,QAAQ;AAAA,IAC1B,OAAO,KAAK,QAAQ,QAAQ,oBAAoB,MAAM;AAAA;AAAA,EAExD,qBAAqB,CAAC,QAAQ;AAAA,IAC5B,OAAO,KAAK,QAAQ,QAAQ,sBAAsB,MAAM;AAAA;AAAA,EAE1D,eAAe,CAAC,QAAQ;AAAA,IACtB,KAAK,QAAQ,QAAQ,gBAAgB,MAAM;AAAA;AAAA,EAE7C,eAAe,CAAC,QAAQ;AAAA,IACtB,KAAK,QAAQ,QAAQ,gBAAgB,MAAM;AAAA;AAAA,EAE7C,sBAAsB,CAAC,QAAQ,KAAK;AAAA,IAClC,MAAM,QAAQ,MAAM,IAAI,SAAS;AAAA,IACjC,KAAK,QAAQ,QAAQ,uBAAuB,QAAQ,KAAK;AAAA;AAAA,EAE3D,sBAAsB,CAAC,QAAQ,KAAK;AAAA,IAClC,MAAM,QAAQ,MAAM,IAAI,SAAS;AAAA,IACjC,KAAK,QAAQ,QAAQ,uBAAuB,QAAQ,KAAK;AAAA;AAAA,EAE3D,8BAA8B,CAAC,QAAQ,YAAY;AAAA,IACjD,MAAM,YAAY,eAAe,OAAO,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC;AAAA,IAC1E,KAAK,QAAQ,QAAQ,+BAA+B,QAAQ,SAAS;AAAA;AAAA,EAEvE,uBAAuB,CAAC,QAAQ;AAAA,IAC9B,KAAK,QAAQ,QAAQ,wBAAwB,MAAM;AAAA;AAAA,EAErD,qBAAqB,CAAC,QAAQ;AAAA,IAC5B,OAAO,KAAK,QAAQ,QAAQ,sBAAsB,MAAM;AAAA;AAAA,EAE1D,qBAAqB,CAAC,QAAQ,OAAO;AAAA,IACnC,KAAK,QAAQ,QAAQ,sBAAsB,QAAQ,KAAK;AAAA;AAAA,EAE1D,2BAA2B,CAAC,QAAQ,OAAO,QAAQ,OAAO;AAAA,IACxD,MAAM,SAAS,KAAK,QAAQ,QAAQ,4BAA4B,QAAQ,OAAO,MAAM,QAAQ,KAAK;AAAA,IAClG,IAAI,WAAW,OAAO;AAAA,MACpB,MAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAAA,IACA,OAAO;AAAA;AAAA,EAET,0BAA0B,CAAC,QAAQ,OAAO,OAAO,QAAQ,OAAO;AAAA,IAC9D,OAAO,KAAK,QAAQ,QAAQ,2BAA2B,QAAQ,OAAO,OAAO,MAAM,QAAQ,KAAK;AAAA;AAAA,EAElG,0BAA0B,CAAC,QAAQ;AAAA,IACjC,KAAK,QAAQ,QAAQ,2BAA2B,MAAM;AAAA;AAAA,EAExD,wBAAwB,CAAC,QAAQ,OAAO;AAAA,IACtC,KAAK,QAAQ,QAAQ,yBAAyB,QAAQ,KAAK;AAAA;AAAA,EAE7D,gBAAgB,CAAC,QAAQ,OAAO;AAAA,IAC9B,KAAK,QAAQ,QAAQ,iBAAiB,QAAQ,OAAO,MAAM,MAAM;AAAA;AAAA,EAEnE,yBAAyB,CAAC,QAAQ,OAAO;AAAA,IACvC,KAAK,QAAQ,QAAQ,0BAA0B,QAAQ,KAAK;AAAA;AAAA,EAE9D,kBAAkB,CAAC,QAAQ,QAAO;AAAA,IAChC,MAAM,YAAY,KAAK,QAAQ,OAAO,MAAK;AAAA,IAC3C,OAAO,KAAK,QAAQ,QAAQ,mBAAmB,QAAQ,WAAW,UAAU,MAAM;AAAA;AAAA,EAEpF,uBAAuB,CAAC,QAAQ,QAAQ;AAAA,IACtC,MAAM,iBAAiB,OAAO,OAAO,CAAC,MAAM,EAAE,KAAK,SAAS,CAAC;AAAA,IAC7D,IAAI,eAAe,WAAW,GAAG;AAAA,MAC/B,KAAK,gBAAgB,MAAM;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,MAAM,kBAAkB,eAAe,IAAI,CAAC,UAAU;AAAA,MACpD,IAAI,MAAM,MAAM;AAAA,QACd,MAAM,SAAS,KAAK,UAAU,MAAM,KAAK,GAAG;AAAA,QAC5C,OAAO;AAAA,aACF;AAAA,UACH,YAAY,mBAAmB,MAAM,cAAc,GAAG,MAAM;AAAA,QAC9D;AAAA,MACF;AAAA,MACA,OAAO;AAAA,KACR;AAAA,IACD,MAAM,eAAe,kBAAkB,SAAS,eAAe;AAAA,IAC/D,KAAK,QAAQ,QAAQ,wBAAwB,QAAQ,KAAK,YAAY,GAAG,gBAAgB,MAAM;AAAA;AAAA,EAEjG,sBAAsB,CAAC,QAAQ;AAAA,IAC7B,OAAO,KAAK,QAAQ,QAAQ,uBAAuB,MAAM;AAAA;AAAA,EAE3D,sBAAsB,CAAC,QAAQ,QAAQ,QAAQ;AAAA,IAC7C,MAAM,SAAS,KAAK,QAAQ,QAAQ,uBAAuB,QAAQ,QAAQ,MAAM;AAAA,IACjF,OAAO,OAAO,WAAW,WAAW,OAAO,MAAM,IAAI;AAAA;AAAA,EAEvD,iBAAiB,CAAC,QAAQ,WAAW;AAAA,IACnC,MAAM,YAAY,IAAI,WAAW,SAAS;AAAA,IAC1C,MAAM,YAAY,KAAK,uBAAuB,QAAQ,KAAK,SAAS,GAAG,SAAS;AAAA,IAChF,IAAI,cAAc,GAAG;AAAA,MACnB,OAAO;AAAA,IACT;AAAA,IACA,OAAO,UAAU,MAAM,GAAG,SAAS;AAAA;AAAA,EAErC,sBAAsB,CAAC,QAAQ,aAAa,WAAW,WAAW;AAAA,IAChE,MAAM,YAAY,IAAI,WAAW,SAAS;AAAA,IAC1C,MAAM,YAAY,KAAK,QAAQ,QAAQ,uBAAuB,QAAQ,aAAa,WAAW,KAAK,SAAS,GAAG,SAAS;AAAA,IACxH,MAAM,MAAM,OAAO,cAAc,WAAW,OAAO,SAAS,IAAI;AAAA,IAChE,IAAI,QAAQ,GAAG;AAAA,MACb,OAAO;AAAA,IACT;AAAA,IACA,OAAO,UAAU,MAAM,GAAG,GAAG;AAAA;AAAA,EAE/B,8BAA8B,CAAC,QAAQ,UAAU,UAAU,QAAQ,QAAQ,WAAW;AAAA,IACpF,MAAM,YAAY,IAAI,WAAW,SAAS;AAAA,IAC1C,MAAM,YAAY,KAAK,QAAQ,QAAQ,+BAA+B,QAAQ,UAAU,UAAU,QAAQ,QAAQ,KAAK,SAAS,GAAG,SAAS;AAAA,IAC5I,MAAM,MAAM,OAAO,cAAc,WAAW,OAAO,SAAS,IAAI;AAAA,IAChE,IAAI,QAAQ,GAAG;AAAA,MACb,OAAO;AAAA,IACT;AAAA,IACA,OAAO,UAAU,MAAM,GAAG,GAAG;AAAA;AAAA,EAE/B,oBAAoB,CAAC,YAAY;AAAA,IAC/B,MAAM,UAAU,KAAK,QAAQ,QAAQ,qBAAqB,UAAU;AAAA,IACpE,IAAI,CAAC,SAAS;AAAA,MACZ,MAAM,IAAI,MAAM,iCAAiC;AAAA,IACnD;AAAA,IACA,OAAO;AAAA;AAAA,EAET,qBAAqB,CAAC,MAAM;AAAA,IAC1B,KAAK,QAAQ,QAAQ,sBAAsB,IAAI;AAAA;AAAA,EAEjD,0BAA0B,CAAC,MAAM,OAAO,KAAK,SAAS,SAAS;AAAA,IAC7D,MAAM,MAAM,UAAU,QAAQ,SAAS;AAAA,IACvC,MAAM,MAAM,UAAU,QAAQ,SAAS;AAAA,IACvC,KAAK,QAAQ,QAAQ,2BAA2B,MAAM,OAAO,KAAK,KAAK,GAAG;AAAA;AAAA,EAE5E,4BAA4B,CAAC,MAAM;AAAA,IACjC,KAAK,QAAQ,QAAQ,6BAA6B,IAAI;AAAA;AAAA,EAExD,0BAA0B,CAAC,MAAM;AAAA,IAC/B,MAAM,aAAa,KAAK,+BAA+B,IAAI;AAAA,IAC3D,IAAI,eAAe,wBAAwB;AAAA,MACzC,OAAO;AAAA,IACT;AAAA,IACA,MAAM,QAAQ,OAAO,cAAc,GAAG;AAAA,IACtC,MAAM,MAAM,OAAO,aAAa,YAAY;AAAA,IAC5C,OAAO,EAAE,OAAO,IAAI;AAAA;AAAA,EAEtB,8BAA8B,CAAC,MAAM;AAAA,IACnC,OAAO,KAAK,QAAQ,QAAQ,+BAA+B,IAAI;AAAA;AAAA,EAEjE,+BAA+B,CAAC,MAAM,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS;AAAA,IACxF,MAAM,MAAM,UAAU,QAAQ,SAAS;AAAA,IACvC,MAAM,MAAM,UAAU,QAAQ,SAAS;AAAA,IACvC,OAAO,KAAK,QAAQ,QAAQ,gCAAgC,MAAM,SAAS,SAAS,QAAQ,QAAQ,KAAK,GAAG;AAAA;AAAA,EAE9G,6BAA6B,CAAC,MAAM,KAAK,SAAS,SAAS;AAAA,IACzD,MAAM,MAAM,UAAU,QAAQ,SAAS;AAAA,IACvC,MAAM,MAAM,UAAU,QAAQ,SAAS;AAAA,IACvC,KAAK,QAAQ,QAAQ,8BAA8B,MAAM,KAAK,KAAK,GAAG;AAAA;AAAA,EAExE,kCAAkC,CAAC,MAAM,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS;AAAA,IAC3F,MAAM,MAAM,UAAU,QAAQ,SAAS;AAAA,IACvC,MAAM,MAAM,UAAU,QAAQ,SAAS;AAAA,IACvC,OAAO,KAAK,QAAQ,QAAQ,mCAAmC,MAAM,SAAS,SAAS,QAAQ,QAAQ,KAAK,GAAG;AAAA;AAAA,EAEjH,iCAAiC,CAAC,MAAM;AAAA,IACtC,KAAK,QAAQ,QAAQ,kCAAkC,IAAI;AAAA;AAAA,EAE7D,0BAA0B,CAAC,MAAM,OAAO;AAAA,IACtC,KAAK,QAAQ,QAAQ,2BAA2B,MAAM,KAAK;AAAA;AAAA,EAE7D,yBAAyB,CAAC,MAAM,MAAM;AAAA,IACpC,MAAM,YAAY,SAAS,SAAS,IAAI,SAAS,SAAS,IAAI;AAAA,IAC9D,KAAK,QAAQ,QAAQ,0BAA0B,MAAM,SAAS;AAAA;AAAA,EAEhE,6BAA6B,CAAC,MAAM,OAAO,QAAQ;AAAA,IACjD,KAAK,QAAQ,QAAQ,8BAA8B,MAAM,OAAO,MAAM;AAAA;AAAA,EAExE,yBAAyB,CAAC,MAAM,GAAG,GAAG,OAAO,QAAQ;AAAA,IACnD,KAAK,QAAQ,QAAQ,0BAA0B,MAAM,GAAG,GAAG,OAAO,MAAM;AAAA;AAAA,EAE1E,yBAAyB,CAAC,MAAM;AAAA,IAC9B,MAAM,YAAY,IAAI,YAAY,eAAe,IAAI;AAAA,IACrD,KAAK,gCAAgC,MAAM,KAAK,SAAS,CAAC;AAAA,IAC1D,MAAM,SAAS,eAAe,OAAO,SAAS;AAAA,IAC9C,OAAO;AAAA,MACL,cAAc,OAAO;AAAA,MACrB,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,aAAa,OAAO;AAAA,MACpB,WAAW,OAAO;AAAA,IACpB;AAAA;AAAA,EAEF,gCAAgC,CAAC,MAAM;AAAA,IACrC,MAAM,YAAY,IAAI,YAAY,eAAe,IAAI;AAAA,IACrD,KAAK,uCAAuC,MAAM,KAAK,SAAS,CAAC;AAAA,IACjE,MAAM,SAAS,eAAe,OAAO,SAAS;AAAA,IAC9C,OAAO;AAAA,MACL,cAAc,OAAO;AAAA,MACrB,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,aAAa,OAAO;AAAA,MACpB,WAAW,OAAO;AAAA,IACpB;AAAA;AAAA,EAEF,iCAAiC,CAAC,MAAM;AAAA,IACtC,OAAO,KAAK,QAAQ,QAAQ,kCAAkC,IAAI;AAAA;AAAA,EAEpE,+BAA+B,CAAC,MAAM,QAAQ;AAAA,IAC5C,KAAK,QAAQ,QAAQ,gCAAgC,MAAM,MAAM;AAAA;AAAA,EAEnE,sCAAsC,CAAC,MAAM,QAAQ;AAAA,IACnD,KAAK,QAAQ,QAAQ,uCAAuC,MAAM,MAAM;AAAA;AAAA,EAE1E,6BAA6B,CAAC,MAAM,QAAQ,QAAQ;AAAA,IAClD,MAAM,SAAS,KAAK,QAAQ,QAAQ,8BAA8B,MAAM,QAAQ,MAAM;AAAA,IACtF,OAAO,OAAO,WAAW,WAAW,OAAO,MAAM,IAAI;AAAA;AAAA,EAEvD,0BAA0B,CAAC,MAAM,QAAQ,QAAQ;AAAA,IAC/C,MAAM,SAAS,KAAK,QAAQ,QAAQ,2BAA2B,MAAM,QAAQ,MAAM;AAAA,IACnF,OAAO,OAAO,WAAW,WAAW,OAAO,MAAM,IAAI;AAAA;AAAA,EAEvD,kCAAkC,CAAC,MAAM,WAAW;AAAA,IAClD,MAAM,YAAY,IAAI,WAAW,SAAS;AAAA,IAC1C,MAAM,YAAY,KAAK,8BAA8B,MAAM,KAAK,SAAS,GAAG,SAAS;AAAA,IACrF,IAAI,cAAc,GAAG;AAAA,MACnB,OAAO;AAAA,IACT;AAAA,IACA,OAAO,UAAU,MAAM,GAAG,SAAS;AAAA;AAAA,EAErC,+BAA+B,CAAC,MAAM,WAAW;AAAA,IAC/C,MAAM,YAAY,IAAI,WAAW,SAAS;AAAA,IAC1C,MAAM,YAAY,KAAK,2BAA2B,MAAM,KAAK,SAAS,GAAG,SAAS;AAAA,IAClF,IAAI,cAAc,GAAG;AAAA,MACnB,OAAO;AAAA,IACT;AAAA,IACA,OAAO,UAAU,MAAM,GAAG,SAAS;AAAA;AAAA,EAErC,6BAA6B,CAAC,MAAM,WAAW;AAAA,IAC7C,KAAK,QAAQ,QAAQ,8BAA8B,MAAM,SAAS;AAAA;AAAA,EAEpE,kCAAkC,CAAC,MAAM,OAAO;AAAA,IAC9C,KAAK,QAAQ,QAAQ,mCAAmC,MAAM,MAAM,MAAM;AAAA;AAAA,EAE5E,yBAAyB,CAAC,MAAM,UAAU;AAAA,IACxC,KAAK,QAAQ,QAAQ,0BAA0B,MAAM,QAAQ;AAAA;AAAA,EAE/D,kCAAkC,CAAC,MAAM,OAAO,QAAQ;AAAA,IACtD,MAAM,eAAe,IAAI,YAAY,oBAAoB,IAAI;AAAA,IAC7D,MAAM,YAAY,KAAK,IAAI,WAAW,YAAY,CAAC;AAAA,IACnD,MAAM,UAAU,KAAK,QAAQ,QAAQ,mCAAmC,MAAM,OAAO,QAAQ,SAAS;AAAA,IACtG,IAAI,CAAC,SAAS;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,IACA,MAAM,SAAS,oBAAoB,OAAO,YAAY;AAAA,IACtD,OAAO;AAAA;AAAA,EAET,iCAAiC,CAAC,QAAQ,WAAW;AAAA,IACnD,MAAM,kBAAkB,gBAAgB,KAAK,SAAS;AAAA,IACtD,KAAK,QAAQ,QAAQ,kCAAkC,QAAQ,KAAK,eAAe,CAAC;AAAA;AAAA,EAEtF,sBAAsB,CAAC,QAAQ,SAAS,WAAW;AAAA,IACjD,MAAM,kBAAkB,gBAAgB,KAAK,SAAS;AAAA,IACtD,KAAK,QAAQ,QAAQ,uBAAuB,QAAQ,SAAS,KAAK,eAAe,CAAC;AAAA;AAAA,EAEpF,+BAA+B,CAAC,QAAQ,OAAO;AAAA,IAC7C,KAAK,QAAQ,QAAQ,gCAAgC,QAAQ,KAAK;AAAA;AAAA,EAEpE,6BAA6B,CAAC,QAAQ,SAAS;AAAA,IAC7C,KAAK,QAAQ,QAAQ,8BAA8B,QAAQ,OAAO;AAAA;AAAA,EAEpE,4BAA4B,CAAC,QAAQ;AAAA,IACnC,KAAK,QAAQ,QAAQ,6BAA6B,MAAM;AAAA;AAAA,EAE1D,wBAAwB,CAAC,QAAQ,OAAO;AAAA,IACtC,KAAK,QAAQ,QAAQ,yBAAyB,QAAQ,KAAK;AAAA;AAAA,EAE7D,2BAA2B,CAAC,QAAQ,SAAS;AAAA,IAC3C,MAAM,cAAc,IAAI,eAAe,CAAC;AAAA,IACxC,MAAM,YAAY,KAAK,QAAQ,QAAQ,+BAA+B,QAAQ,SAAS,KAAK,WAAW,CAAC;AAAA,IACxG,IAAI,CAAC;AAAA,MACH,OAAO,CAAC;AAAA,IACV,MAAM,QAAQ,OAAO,YAAY,EAAE;AAAA,IACnC,MAAM,UAAU,QAAQ,gBAAgB;AAAA,IACxC,MAAM,MAAM,eAAe,WAAW,GAAG,OAAO;AAAA,IAChD,MAAM,UAAU,gBAAgB,WAAW,KAAK,KAAK;AAAA,IACrD,KAAK,QAAQ,QAAQ,6BAA6B,WAAW,KAAK;AAAA,IAClE,OAAO;AAAA;AAAA,EAET,2BAA2B,CAAC,QAAQ;AAAA,IAClC,OAAO,KAAK,QAAQ,QAAQ,4BAA4B,MAAM;AAAA;AAAA,EAEhE,sBAAsB,GAAG;AAAA,IACvB,MAAM,SAAS,KAAK,QAAQ,QAAQ,uBAAuB;AAAA,IAC3D,OAAO,OAAO,WAAW,WAAW,OAAO,MAAM,IAAI;AAAA;AAAA,EAEvD,wBAAwB,CAAC,QAAQ,MAAM,GAAG,GAAG;AAAA,IAC3C,KAAK,QAAQ,QAAQ,yBAAyB,QAAQ,MAAM,GAAG,CAAC;AAAA;AAAA,EAElE,oBAAoB,CAAC,QAAQ,MAAM,GAAG,GAAG;AAAA,IACvC,KAAK,QAAQ,QAAQ,qBAAqB,QAAQ,MAAM,GAAG,CAAC;AAAA;AAAA,EAE9D,gBAAgB,CAAC,eAAe,eAAe,gBAAgB;AAAA,IAC7D,MAAM,UAAU,KAAK,QAAQ,QAAQ,iBAAiB,eAAe,eAAe,cAAc;AAAA,IAClG,IAAI,CAAC,SAAS;AAAA,MACZ,MAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AAAA,IACA,OAAO;AAAA;AAAA,EAET,iBAAiB,CAAC,MAAM;AAAA,IACtB,KAAK,QAAQ,QAAQ,kBAAkB,IAAI;AAAA;AAAA,EAE7C,yBAAyB,CAAC,MAAM,OAAO,QAAQ;AAAA,IAC7C,KAAK,QAAQ,QAAQ,0BAA0B,MAAM,OAAO,MAAM;AAAA;AAAA,EAEpE,qBAAqB,CAAC,MAAM,GAAG,GAAG,OAAO,QAAQ,YAAY;AAAA,IAC3D,KAAK,QAAQ,QAAQ,sBAAsB,MAAM,GAAG,GAAG,OAAO,QAAQ,UAAU;AAAA;AAAA,EAElF,qBAAqB,CAAC,MAAM;AAAA,IAC1B,MAAM,IAAI,IAAI,YAAY,CAAC;AAAA,IAC3B,MAAM,IAAI,IAAI,YAAY,CAAC;AAAA,IAC3B,MAAM,QAAQ,IAAI,YAAY,CAAC;AAAA,IAC/B,MAAM,SAAS,IAAI,YAAY,CAAC;AAAA,IAChC,KAAK,QAAQ,QAAQ,sBAAsB,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,MAAM,CAAC;AAAA,IAC5F,OAAO;AAAA,MACL,SAAS,EAAE;AAAA,MACX,SAAS,EAAE;AAAA,MACX,OAAO,MAAM;AAAA,MACb,QAAQ,OAAO;AAAA,IACjB;AAAA;AAAA,EAEF,yBAAyB,CAAC,MAAM,QAAQ;AAAA,IACtC,KAAK,QAAQ,QAAQ,0BAA0B,MAAM,MAAM;AAAA;AAAA,EAE7D,qBAAqB,CAAC,MAAM,MAAM;AAAA,IAChC,MAAM,YAAY,SAAS,SAAS,IAAI,SAAS,SAAS,IAAI;AAAA,IAC9D,KAAK,QAAQ,QAAQ,sBAAsB,MAAM,SAAS;AAAA;AAAA,EAE5D,6BAA6B,CAAC,MAAM;AAAA,IAClC,OAAO,KAAK,QAAQ,QAAQ,8BAA8B,IAAI;AAAA;AAAA,EAEhE,kCAAkC,CAAC,MAAM;AAAA,IACvC,OAAO,KAAK,QAAQ,QAAQ,mCAAmC,IAAI;AAAA;AAAA,EAErE,2BAA2B,CAAC,MAAM;AAAA,IAChC,MAAM,SAAS,KAAK,QAAQ,QAAQ,4BAA4B,IAAI;AAAA,IACpE,IAAI,CAAC,QAAQ;AAAA,MACX,MAAM,IAAI,MAAM,8CAA8C;AAAA,IAChE;AAAA,IACA,OAAO;AAAA;AAAA,EAET,qBAAqB,CAAC,MAAM;AAAA,IAC1B,MAAM,YAAY,IAAI,YAAY,eAAe,IAAI;AAAA,IACrD,KAAK,QAAQ,QAAQ,4BAA4B,MAAM,KAAK,SAAS,CAAC;AAAA,IACtE,MAAM,SAAS,eAAe,OAAO,SAAS;AAAA,IAC9C,OAAO;AAAA,MACL,cAAc,OAAO;AAAA,MACrB,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,aAAa,OAAO;AAAA,MACpB,WAAW,OAAO;AAAA,IACpB;AAAA;AAAA,EAEF,4BAA4B,CAAC,MAAM;AAAA,IACjC,MAAM,YAAY,IAAI,YAAY,eAAe,IAAI;AAAA,IACrD,KAAK,QAAQ,QAAQ,mCAAmC,MAAM,KAAK,SAAS,CAAC;AAAA,IAC7E,MAAM,SAAS,eAAe,OAAO,SAAS;AAAA,IAC9C,OAAO;AAAA,MACL,cAAc,OAAO;AAAA,MACrB,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,aAAa,OAAO;AAAA,MACpB,WAAW,OAAO;AAAA,IACpB;AAAA;AAAA,EAEF,gBAAgB,CAAC,aAAa;AAAA,IAC5B,MAAM,kBAAkB,gBAAgB,YAAY,IAAI;AAAA,IACxD,MAAM,YAAY,KAAK,QAAQ,QAAQ,iBAAiB,eAAe;AAAA,IACvE,IAAI,CAAC,WAAW;AAAA,MACd,MAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AAAA,IACA,OAAO;AAAA;AAAA,EAET,iBAAiB,CAAC,QAAQ;AAAA,IACxB,KAAK,QAAQ,QAAQ,kBAAkB,MAAM;AAAA;AAAA,EAE/C,iBAAiB,CAAC,QAAQ,WAAW;AAAA,IACnC,KAAK,QAAQ,QAAQ,kBAAkB,QAAQ,WAAW,UAAU,MAAM;AAAA;AAAA,EAE5E,wBAAwB,CAAC,QAAQ,OAAO;AAAA,IACtC,KAAK,QAAQ,QAAQ,yBAAyB,QAAQ,KAAK;AAAA;AAAA,EAE7D,qBAAqB,CAAC,QAAQ,WAAW;AAAA,IACvC,KAAK,QAAQ,QAAQ,sBAAsB,QAAQ,WAAW,UAAU,MAAM;AAAA;AAAA,EAEhF,4BAA4B,CAAC,QAAQ,OAAO;AAAA,IAC1C,KAAK,QAAQ,QAAQ,6BAA6B,QAAQ,KAAK;AAAA;AAAA,EAEjE,iBAAiB,CAAC,QAAQ,WAAW;AAAA,IACnC,MAAM,YAAY,IAAI,WAAW,SAAS;AAAA,IAC1C,MAAM,YAAY,KAAK,QAAQ,QAAQ,kBAAkB,QAAQ,KAAK,SAAS,GAAG,SAAS;AAAA,IAC3F,MAAM,MAAM,OAAO,cAAc,WAAW,OAAO,SAAS,IAAI;AAAA,IAChE,IAAI,QAAQ;AAAA,MACV,OAAO;AAAA,IACT,OAAO,UAAU,MAAM,GAAG,GAAG;AAAA;AAAA,EAE/B,oBAAoB,CAAC,QAAQ,MAAM;AAAA,IACjC,MAAM,YAAY,KAAK,QAAQ,OAAO,IAAI;AAAA,IAC1C,KAAK,QAAQ,QAAQ,qBAAqB,QAAQ,WAAW,UAAU,MAAM;AAAA;AAAA,EAE/E,oBAAoB,CAAC,QAAQ,MAAM;AAAA,IACjC,MAAM,YAAY,KAAK,QAAQ,OAAO,IAAI;AAAA,IAC1C,KAAK,QAAQ,QAAQ,qBAAqB,QAAQ,WAAW,UAAU,MAAM;AAAA;AAAA,EAE/E,oBAAoB,CAAC,QAAQ;AAAA,IAC3B,KAAK,QAAQ,QAAQ,qBAAqB,MAAM;AAAA;AAAA,EAElD,4BAA4B,CAAC,QAAQ;AAAA,IACnC,KAAK,QAAQ,QAAQ,6BAA6B,MAAM;AAAA;AAAA,EAE1D,qBAAqB,CAAC,QAAQ,WAAW,UAAU,SAAS,QAAQ;AAAA,IAClE,KAAK,QAAQ,QAAQ,sBAAsB,QAAQ,WAAW,UAAU,SAAS,MAAM;AAAA;AAAA,EAEzF,iBAAiB,CAAC,QAAQ;AAAA,IACxB,KAAK,QAAQ,QAAQ,kBAAkB,MAAM;AAAA;AAAA,EAE/C,oBAAoB,CAAC,QAAQ;AAAA,IAC3B,KAAK,QAAQ,QAAQ,qBAAqB,MAAM;AAAA;AAAA,EAElD,wBAAwB,CAAC,QAAQ;AAAA,IAC/B,KAAK,QAAQ,QAAQ,yBAAyB,MAAM;AAAA;AAAA,EAEtD,yBAAyB,CAAC,QAAQ;AAAA,IAChC,KAAK,QAAQ,QAAQ,0BAA0B,MAAM;AAAA;AAAA,EAEvD,sBAAsB,CAAC,QAAQ;AAAA,IAC7B,KAAK,QAAQ,QAAQ,uBAAuB,MAAM;AAAA;AAAA,EAEpD,wBAAwB,CAAC,QAAQ;AAAA,IAC/B,KAAK,QAAQ,QAAQ,yBAAyB,MAAM;AAAA;AAAA,EAEtD,kBAAkB,CAAC,QAAQ,MAAM;AAAA,IAC/B,KAAK,QAAQ,QAAQ,mBAAmB,QAAQ,IAAI;AAAA;AAAA,EAEtD,mBAAmB,CAAC,QAAQ,MAAM,YAAY;AAAA,IAC5C,KAAK,QAAQ,QAAQ,oBAAoB,QAAQ,MAAM,UAAU;AAAA;AAAA,EAEnE,4BAA4B,CAAC,QAAQ,MAAM,KAAK;AAAA,IAC9C,KAAK,QAAQ,QAAQ,6BAA6B,QAAQ,MAAM,GAAG;AAAA;AAAA,EAErE,2BAA2B,CAAC,QAAQ,QAAQ;AAAA,IAC1C,KAAK,QAAQ,QAAQ,4BAA4B,QAAQ,MAAM;AAAA;AAAA,EAEjE,2BAA2B,CAAC,QAAQ;AAAA,IAClC,MAAM,eAAe,IAAI,YAAY,oBAAoB,IAAI;AAAA,IAC7D,KAAK,QAAQ,QAAQ,4BAA4B,QAAQ,KAAK,YAAY,CAAC;AAAA,IAC3E,OAAO,oBAAoB,OAAO,YAAY;AAAA;AAAA,EAEhD,eAAe,CAAC,QAAQ;AAAA,IACtB,OAAO,KAAK,QAAQ,QAAQ,gBAAgB,MAAM;AAAA;AAAA,EAEpD,uBAAuB,CAAC,QAAQ;AAAA,IAC9B,MAAM,SAAS,KAAK,QAAQ,QAAQ,wBAAwB,MAAM;AAAA,IAClE,IAAI,CAAC,QAAQ;AAAA,MACX,MAAM,IAAI,MAAM,0CAA0C;AAAA,IAC5D;AAAA,IACA,OAAO;AAAA;AAAA,EAET,sBAAsB,CAAC,QAAQ;AAAA,IAC7B,KAAK,QAAQ,QAAQ,uBAAuB,MAAM;AAAA;AAAA,EAEpD,cAAc,CAAC,QAAQ,WAAW;AAAA,IAChC,MAAM,YAAY,IAAI,WAAW,SAAS;AAAA,IAC1C,MAAM,YAAY,KAAK,QAAQ,QAAQ,eAAe,QAAQ,KAAK,SAAS,GAAG,SAAS;AAAA,IACxF,MAAM,MAAM,OAAO,cAAc,WAAW,OAAO,SAAS,IAAI;AAAA,IAChE,IAAI,QAAQ;AAAA,MACV,OAAO;AAAA,IACT,OAAO,UAAU,MAAM,GAAG,GAAG;AAAA;AAAA,EAE/B,cAAc,CAAC,QAAQ,WAAW;AAAA,IAChC,MAAM,YAAY,IAAI,WAAW,SAAS;AAAA,IAC1C,MAAM,YAAY,KAAK,QAAQ,QAAQ,eAAe,QAAQ,KAAK,SAAS,GAAG,SAAS;AAAA,IACxF,MAAM,MAAM,OAAO,cAAc,WAAW,OAAO,SAAS,IAAI;AAAA,IAChE,IAAI,QAAQ;AAAA,MACV,OAAO;AAAA,IACT,OAAO,UAAU,MAAM,GAAG,GAAG;AAAA;AAAA,EAE/B,iBAAiB,CAAC,QAAQ;AAAA,IACxB,OAAO,KAAK,QAAQ,QAAQ,kBAAkB,MAAM;AAAA;AAAA,EAEtD,iBAAiB,CAAC,QAAQ;AAAA,IACxB,OAAO,KAAK,QAAQ,QAAQ,kBAAkB,MAAM;AAAA;AAAA,EAEtD,sBAAsB,CAAC,QAAQ;AAAA,IAC7B,KAAK,QAAQ,QAAQ,uBAAuB,MAAM;AAAA;AAAA,EAEpD,eAAe,CAAC,QAAQ;AAAA,IACtB,KAAK,QAAQ,QAAQ,gBAAgB,MAAM;AAAA;AAAA,EAE7C,6BAA6B,CAAC,QAAQ;AAAA,IACpC,MAAM,eAAe,IAAI,YAAY,oBAAoB,IAAI;AAAA,IAC7D,KAAK,QAAQ,QAAQ,8BAA8B,QAAQ,KAAK,YAAY,CAAC;AAAA,IAC7E,OAAO,oBAAoB,OAAO,YAAY;AAAA;AAAA,EAEhD,6BAA6B,CAAC,QAAQ;AAAA,IACpC,MAAM,eAAe,IAAI,YAAY,oBAAoB,IAAI;AAAA,IAC7D,KAAK,QAAQ,QAAQ,8BAA8B,QAAQ,KAAK,YAAY,CAAC;AAAA,IAC7E,OAAO,oBAAoB,OAAO,YAAY;AAAA;AAAA,EAEhD,gBAAgB,CAAC,QAAQ;AAAA,IACvB,MAAM,eAAe,IAAI,YAAY,oBAAoB,IAAI;AAAA,IAC7D,KAAK,QAAQ,QAAQ,iBAAiB,QAAQ,KAAK,YAAY,CAAC;AAAA,IAChE,OAAO,oBAAoB,OAAO,YAAY;AAAA;AAAA,EAEhD,0BAA0B,CAAC,QAAQ,QAAQ;AAAA,IACzC,MAAM,eAAe,IAAI,YAAY,oBAAoB,IAAI;AAAA,IAC7D,MAAM,UAAU,KAAK,QAAQ,QAAQ,2BAA2B,QAAQ,QAAQ,KAAK,YAAY,CAAC;AAAA,IAClG,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,OAAO,oBAAoB,OAAO,YAAY;AAAA;AAAA,EAEhD,0BAA0B,CAAC,QAAQ,KAAK,KAAK;AAAA,IAC3C,OAAO,KAAK,QAAQ,QAAQ,2BAA2B,QAAQ,KAAK,GAAG;AAAA;AAAA,EAEzE,4BAA4B,CAAC,QAAQ,KAAK;AAAA,IACxC,OAAO,KAAK,QAAQ,QAAQ,6BAA6B,QAAQ,GAAG;AAAA;AAAA,EAEtE,sBAAsB,CAAC,QAAQ,aAAa,WAAW,WAAW;AAAA,IAChE,MAAM,YAAY,IAAI,WAAW,SAAS;AAAA,IAC1C,MAAM,YAAY,KAAK,QAAQ,QAAQ,uBAAuB,QAAQ,aAAa,WAAW,KAAK,SAAS,GAAG,SAAS;AAAA,IACxH,MAAM,MAAM,OAAO,cAAc,WAAW,OAAO,SAAS,IAAI;AAAA,IAChE,IAAI,QAAQ;AAAA,MACV,OAAO;AAAA,IACT,OAAO,UAAU,MAAM,GAAG,GAAG;AAAA;AAAA,EAE/B,8BAA8B,CAAC,QAAQ,UAAU,UAAU,QAAQ,QAAQ,WAAW;AAAA,IACpF,MAAM,YAAY,IAAI,WAAW,SAAS;AAAA,IAC1C,MAAM,YAAY,KAAK,QAAQ,QAAQ,+BAA+B,QAAQ,UAAU,UAAU,QAAQ,QAAQ,KAAK,SAAS,GAAG,SAAS;AAAA,IAC5I,MAAM,MAAM,OAAO,cAAc,WAAW,OAAO,SAAS,IAAI;AAAA,IAChE,IAAI,QAAQ;AAAA,MACV,OAAO;AAAA,IACT,OAAO,UAAU,MAAM,GAAG,GAAG;AAAA;AAAA,EAE/B,sBAAsB,CAAC,MAAM,OAAO,KAAK,SAAS,SAAS;AAAA,IACzD,MAAM,MAAM,UAAU,QAAQ,SAAS;AAAA,IACvC,MAAM,MAAM,UAAU,QAAQ,SAAS;AAAA,IACvC,KAAK,QAAQ,QAAQ,uBAAuB,MAAM,OAAO,KAAK,KAAK,GAAG;AAAA;AAAA,EAExE,wBAAwB,CAAC,MAAM;AAAA,IAC7B,KAAK,QAAQ,QAAQ,yBAAyB,IAAI;AAAA;AAAA,EAEpD,sBAAsB,CAAC,MAAM;AAAA,IAC3B,MAAM,aAAa,KAAK,QAAQ,QAAQ,uBAAuB,IAAI;AAAA,IACnE,IAAI,eAAe,wBAAwB;AAAA,MACzC,OAAO;AAAA,IACT;AAAA,IACA,MAAM,QAAQ,OAAO,cAAc,GAAG;AAAA,IACtC,MAAM,MAAM,OAAO,aAAa,YAAY;AAAA,IAC5C,OAAO,EAAE,OAAO,IAAI;AAAA;AAAA,EAEtB,2BAA2B,CAAC,MAAM,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,cAAc,cAAc;AAAA,IAChH,MAAM,MAAM,UAAU,QAAQ,SAAS;AAAA,IACvC,MAAM,MAAM,UAAU,QAAQ,SAAS;AAAA,IACvC,OAAO,KAAK,QAAQ,QAAQ,4BAA4B,MAAM,SAAS,SAAS,QAAQ,QAAQ,KAAK,KAAK,cAAc,YAAY;AAAA;AAAA,EAEtI,yBAAyB,CAAC,MAAM,KAAK,SAAS,SAAS;AAAA,IACrD,MAAM,MAAM,UAAU,QAAQ,SAAS;AAAA,IACvC,MAAM,MAAM,UAAU,QAAQ,SAAS;AAAA,IACvC,KAAK,QAAQ,QAAQ,0BAA0B,MAAM,KAAK,KAAK,GAAG;AAAA;AAAA,EAEpE,8BAA8B,CAAC,MAAM,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,cAAc,cAAc;AAAA,IACnH,MAAM,MAAM,UAAU,QAAQ,SAAS;AAAA,IACvC,MAAM,MAAM,UAAU,QAAQ,SAAS;AAAA,IACvC,OAAO,KAAK,QAAQ,QAAQ,+BAA+B,MAAM,SAAS,SAAS,QAAQ,QAAQ,KAAK,KAAK,cAAc,YAAY;AAAA;AAAA,EAEzI,6BAA6B,CAAC,MAAM;AAAA,IAClC,KAAK,QAAQ,QAAQ,8BAA8B,IAAI;AAAA;AAAA,EAEzD,8BAA8B,CAAC,MAAM,WAAW;AAAA,IAC9C,MAAM,YAAY,IAAI,WAAW,SAAS;AAAA,IAC1C,MAAM,YAAY,KAAK,QAAQ,QAAQ,+BAA+B,MAAM,KAAK,SAAS,GAAG,SAAS;AAAA,IACtG,MAAM,MAAM,OAAO,cAAc,WAAW,OAAO,SAAS,IAAI;AAAA,IAChE,IAAI,QAAQ;AAAA,MACV,OAAO;AAAA,IACT,OAAO,UAAU,MAAM,GAAG,GAAG;AAAA;AAAA,EAE/B,mBAAmB,CAAC,MAAM;AAAA,IACxB,MAAM,MAAM,IAAI,YAAY,CAAC;AAAA,IAC7B,MAAM,MAAM,IAAI,YAAY,CAAC;AAAA,IAC7B,KAAK,QAAQ,QAAQ,oBAAoB,MAAM,KAAK,GAAG,GAAG,KAAK,GAAG,CAAC;AAAA,IACnE,OAAO,EAAE,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG;AAAA;AAAA,EAEpC,iBAAiB,CAAC,MAAM,WAAW;AAAA,IACjC,MAAM,YAAY,IAAI,WAAW,SAAS;AAAA,IAC1C,MAAM,YAAY,KAAK,QAAQ,QAAQ,kBAAkB,MAAM,KAAK,SAAS,GAAG,SAAS;AAAA,IACzF,MAAM,MAAM,OAAO,cAAc,WAAW,OAAO,SAAS,IAAI;AAAA,IAChE,IAAI,QAAQ;AAAA,MACV,OAAO;AAAA,IACT,OAAO,UAAU,MAAM,GAAG,GAAG;AAAA;AAAA,EAE/B,yBAAyB,CAAC,MAAM;AAAA,IAC9B,MAAM,eAAe,IAAI,YAAY,mBAAmB,IAAI;AAAA,IAC5D,KAAK,QAAQ,QAAQ,0BAA0B,MAAM,KAAK,YAAY,CAAC;AAAA,IACvE,OAAO,mBAAmB,OAAO,YAAY;AAAA;AAAA,EAE/C,sBAAsB,CAAC,MAAM;AAAA,IAC3B,KAAK,QAAQ,QAAQ,uBAAuB,IAAI;AAAA;AAAA,EAElD,wBAAwB,CAAC,MAAM;AAAA,IAC7B,KAAK,QAAQ,QAAQ,yBAAyB,IAAI;AAAA;AAAA,EAEpD,4BAA4B,CAAC,MAAM;AAAA,IACjC,KAAK,QAAQ,QAAQ,6BAA6B,IAAI;AAAA;AAAA,EAExD,2BAA2B,CAAC,MAAM,QAAQ;AAAA,IACxC,KAAK,QAAQ,QAAQ,4BAA4B,MAAM,MAAM;AAAA;AAAA,EAE/D,6BAA6B,CAAC,MAAM;AAAA,IAClC,MAAM,eAAe,IAAI,YAAY,mBAAmB,IAAI;AAAA,IAC5D,KAAK,QAAQ,QAAQ,8BAA8B,MAAM,KAAK,YAAY,CAAC;AAAA,IAC3E,OAAO,mBAAmB,OAAO,YAAY;AAAA;AAAA,EAE/C,6BAA6B,CAAC,MAAM;AAAA,IAClC,MAAM,eAAe,IAAI,YAAY,mBAAmB,IAAI;AAAA,IAC5D,KAAK,QAAQ,QAAQ,8BAA8B,MAAM,KAAK,YAAY,CAAC;AAAA,IAC3E,OAAO,mBAAmB,OAAO,YAAY;AAAA;AAAA,EAE/C,gBAAgB,CAAC,MAAM;AAAA,IACrB,MAAM,eAAe,IAAI,YAAY,mBAAmB,IAAI;AAAA,IAC5D,KAAK,QAAQ,QAAQ,iBAAiB,MAAM,KAAK,YAAY,CAAC;AAAA,IAC9D,OAAO,mBAAmB,OAAO,YAAY;AAAA;AAAA,EAE/C,sBAAsB,CAAC,MAAM;AAAA,IAC3B,MAAM,eAAe,IAAI,YAAY,mBAAmB,IAAI;AAAA,IAC5D,KAAK,QAAQ,QAAQ,uBAAuB,MAAM,KAAK,YAAY,CAAC;AAAA,IACpE,OAAO,mBAAmB,OAAO,YAAY;AAAA;AAAA,EAE/C,sBAAsB,CAAC,MAAM;AAAA,IAC3B,MAAM,eAAe,IAAI,YAAY,mBAAmB,IAAI;AAAA,IAC5D,KAAK,QAAQ,QAAQ,uBAAuB,MAAM,KAAK,YAAY,CAAC;AAAA,IACpE,OAAO,mBAAmB,OAAO,YAAY;AAAA;AAAA,EAE/C,qBAAqB,CAAC,QAAQ,GAAG,GAAG,OAAO,QAAQ;AAAA,IACjD,KAAK,QAAQ,QAAQ,sBAAsB,QAAQ,GAAG,GAAG,OAAO,MAAM;AAAA;AAAA,EAExE,oBAAoB,CAAC,QAAQ;AAAA,IAC3B,KAAK,QAAQ,QAAQ,qBAAqB,MAAM;AAAA;AAAA,EAElD,uBAAuB,CAAC,QAAQ;AAAA,IAC9B,KAAK,QAAQ,QAAQ,wBAAwB,MAAM;AAAA;AAAA,EAErD,iBAAiB,CAAC,QAAQ,SAAS;AAAA,IACjC,KAAK,QAAQ,QAAQ,kBAAkB,QAAQ,OAAO;AAAA;AAAA,EAExD,gBAAgB,CAAC,QAAQ;AAAA,IACvB,KAAK,QAAQ,QAAQ,iBAAiB,MAAM;AAAA;AAAA,EAE9C,uBAAuB,CAAC,QAAQ;AAAA,IAC9B,OAAO,KAAK,QAAQ,QAAQ,wBAAwB,MAAM;AAAA;AAAA,EAE5D,kBAAkB,CAAC,QAAQ;AAAA,IACzB,KAAK,QAAQ,QAAQ,mBAAmB,MAAM;AAAA;AAAA,EAEhD,uBAAuB,CAAC,UAAU;AAAA,IAChC,MAAM,aAAa,IAAI,YAAY,2BAA2B,IAAI;AAAA,IAClE,KAAK,QAAQ,QAAQ,wBAAwB,UAAU,KAAK,UAAU,CAAC;AAAA,IACvE,MAAM,OAAO,2BAA2B,OAAO,UAAU;AAAA,IACzD,OAAO;AAAA,MACL,gBAAgB,KAAK;AAAA,MACrB,gBAAgB,KAAK;AAAA,MACrB,KAAK,KAAK;AAAA,MACV,SAAS,KAAK;AAAA,MACd,YAAY,KAAK;AAAA,MACjB,sBAAsB,KAAK;AAAA,MAC3B,gBAAgB,KAAK;AAAA,MACrB,aAAa,KAAK;AAAA,MAClB,OAAO,KAAK;AAAA,MACZ,gBAAgB,KAAK;AAAA,MACrB,MAAM,KAAK;AAAA,MACX,iBAAiB,KAAK;AAAA,MACtB,YAAY,KAAK;AAAA,MACjB,OAAO,KAAK;AAAA,MACZ,6BAA6B,KAAK;AAAA,MAClC,UAAU;AAAA,QACR,MAAM,KAAK,aAAa;AAAA,QACxB,SAAS,KAAK,gBAAgB;AAAA,QAC9B,gBAAgB,KAAK;AAAA,MACvB;AAAA,IACF;AAAA;AAAA,EAEF,yBAAyB,CAAC,UAAU,UAAU;AAAA,IAC5C,MAAM,gBAAgB,KAAK,QAAQ,OAAO,QAAQ;AAAA,IAClD,KAAK,QAAQ,QAAQ,0BAA0B,UAAU,eAAe,cAAc,MAAM;AAAA;AAAA,EAE9F,aAAa,CAAC,MAAM,aAAa;AAAA,IAC/B,MAAM,YAAY,KAAK,QAAQ,OAAO,IAAI;AAAA,IAC1C,MAAM,kBAAkB,gBAAgB,YAAY,IAAI;AAAA,IACxD,MAAM,eAAe,IAAI,YAAY,CAAC;AAAA,IACtC,MAAM,eAAe,IAAI,YAAY,CAAC;AAAA,IACtC,MAAM,UAAU,KAAK,QAAQ,QAAQ,cAAc,WAAW,UAAU,QAAQ,KAAK,YAAY,GAAG,KAAK,YAAY,GAAG,eAAe;AAAA,IACvI,IAAI,CAAC,SAAS;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,IACA,MAAM,aAAa,IAAI,eAAe,YAAY;AAAA,IAClD,MAAM,aAAa,IAAI,eAAe,YAAY;AAAA,IAClD,MAAM,YAAY,OAAO,WAAW,EAAE;AAAA,IACtC,MAAM,YAAY,OAAO,WAAW,EAAE;AAAA,IACtC,IAAI,cAAc,GAAG;AAAA,MACnB,OAAO,EAAE,KAAK,WAAW,MAAM,CAAC,EAAE;AAAA,IACpC;AAAA,IACA,MAAM,UAAU,YAAY,kBAAkB;AAAA,IAC9C,MAAM,MAAM,eAAe,WAAW,GAAG,OAAO;AAAA,IAChD,MAAM,OAAO,kBAAkB,WAAW,KAAK,SAAS;AAAA,IACxD,OAAO,EAAE,KAAK,WAAW,KAAK;AAAA;AAAA,EAEhC,WAAW,CAAC,SAAS;AAAA,IACnB,KAAK,QAAQ,QAAQ,YAAY,QAAQ,KAAK,QAAQ,KAAK,MAAM;AAAA;AAAA,EAEnE,cAAc,CAAC,QAAQ,MAAM,GAAG,GAAG,KAAK,KAAK,aAAa,GAAG;AAAA,IAC3D,KAAK,QAAQ,QAAQ,eAAe,QAAQ,MAAM,GAAG,GAAG,IAAI,QAAQ,IAAI,QAAQ,UAAU;AAAA;AAAA,EAE5F,4BAA4B,CAAC,QAAQ,SAAS;AAAA,IAC5C,MAAM,WAAW,KAAK,6BAA6B;AAAA,IACnD,KAAK,uBAAuB,IAAI,UAAU,MAAM,GAAG,OAAO;AAAA,IAC1D,KAAK,QAAQ,QAAQ,kBAAkB,QAAQ,SAAS,GAAG;AAAA;AAAA,EAE7D,8BAA8B,CAAC,QAAQ;AAAA,IACrC,KAAK,QAAQ,QAAQ,kBAAkB,QAAQ,IAAI;AAAA,IACnD,KAAK,uBAAuB,OAAO,UAAU,MAAM,CAAC;AAAA;AAAA,EAEtD,oBAAoB,CAAC,SAAS;AAAA,IAC5B,MAAM,gBAAgB,WAAW,OAAO,OAAO,4BAA4B,KAAK,OAAO;AAAA,IACvF,MAAM,YAAY,KAAK,QAAQ,QAAQ,qBAAqB,gBAAgB,KAAK,aAAa,IAAI,IAAI;AAAA,IACtG,IAAI,CAAC,WAAW;AAAA,MACd,MAAM,IAAI,MAAM,yBAAyB;AAAA,IAC3C;AAAA,IACA,OAAO,UAAU,SAAS;AAAA;AAAA,EAE5B,oBAAoB,CAAC,QAAQ;AAAA,IAC3B,OAAO,KAAK,QAAQ,QAAQ,qBAAqB,MAAM;AAAA;AAAA,EAEzD,qBAAqB,CAAC,QAAQ;AAAA,IAC5B,KAAK,QAAQ,QAAQ,sBAAsB,MAAM;AAAA,IACjD,KAAK,uBAAuB,OAAO,UAAU,MAAM,CAAC;AAAA;AAAA,EAEtD,WAAW,CAAC,QAAQ,MAAM;AAAA,IACxB,MAAM,QAAQ,OAAO,SAAS,WAAW,KAAK,QAAQ,OAAO,IAAI,IAAI;AAAA,IACrE,OAAO,KAAK,QAAQ,QAAQ,YAAY,QAAQ,KAAK,KAAK,GAAG,MAAM,MAAM;AAAA;AAAA,EAE3E,YAAY,CAAC,QAAQ;AAAA,IACnB,OAAO,KAAK,QAAQ,QAAQ,aAAa,MAAM;AAAA;AAAA,EAEjD,gBAAgB,CAAC,QAAQ,WAAW,UAAU;AAAA,IAC5C,MAAM,QAAQ,KAAK,QAAQ,QAAQ,iBAAiB,QAAQ,KAAK,SAAS,GAAG,QAAQ;AAAA,IACrF,OAAO,SAAS,KAAK;AAAA;AAAA,EAEvB,WAAW,CAAC,QAAQ;AAAA,IAClB,OAAO,KAAK,QAAQ,QAAQ,YAAY,MAAM;AAAA;AAAA,EAEhD,gBAAgB,CAAC,QAAQ,SAAS;AAAA,IAChC,MAAM,gBAAgB,4BAA4B,KAAK,OAAO;AAAA,IAC9D,OAAO,KAAK,QAAQ,QAAQ,iBAAiB,QAAQ,KAAK,aAAa,CAAC;AAAA;AAAA,EAE1E,cAAc,CAAC,QAAQ;AAAA,IACrB,MAAM,cAAc,IAAI,YAAY,0BAA0B,IAAI;AAAA,IAClE,MAAM,SAAS,KAAK,QAAQ,QAAQ,eAAe,QAAQ,KAAK,WAAW,CAAC;AAAA,IAC5E,IAAI,WAAW,GAAG;AAAA,MAChB,OAAO;AAAA,IACT;AAAA,IACA,MAAM,QAAQ,0BAA0B,OAAO,WAAW;AAAA,IAC1D,OAAO;AAAA,MACL,cAAc,OAAO,MAAM,iBAAiB,WAAW,MAAM,eAAe,OAAO,MAAM,YAAY;AAAA,MACrG,gBAAgB,OAAO,MAAM,mBAAmB,WAAW,MAAM,iBAAiB,OAAO,MAAM,cAAc;AAAA,MAC7G,QAAQ,MAAM;AAAA,MACd,cAAc,MAAM;AAAA,IACtB;AAAA;AAAA,EAEF,aAAa,CAAC,QAAQ,QAAQ;AAAA,IAC5B,MAAM,gBAAgB,IAAI,YAAY,kBAAkB,IAAI;AAAA,IAC5D,MAAM,SAAS,KAAK,QAAQ,QAAQ,cAAc,QAAQ,QAAQ,KAAK,aAAa,CAAC;AAAA,IACrF,IAAI,WAAW,GAAG;AAAA,MAChB,OAAO,EAAE,QAAQ,MAAM,KAAK;AAAA,IAC9B;AAAA,IACA,OAAO,EAAE,QAAQ,MAAM,kBAAkB,OAAO,aAAa,EAAE;AAAA;AAAA,EAEjE,oBAAoB,CAAC,QAAQ,QAAQ;AAAA,IACnC,OAAO,KAAK,QAAQ,QAAQ,qBAAqB,QAAQ,MAAM;AAAA;AAAA,EAEjE,iBAAiB,GAAG;AAAA,IAClB,MAAM,WAAW,KAAK,QAAQ,QAAQ,kBAAkB;AAAA,IACxD,IAAI,CAAC,UAAU;AAAA,MACb,MAAM,IAAI,MAAM,8BAA8B;AAAA,IAChD;AAAA,IACA,OAAO;AAAA;AAAA,EAET,kBAAkB,CAAC,OAAO;AAAA,IACxB,KAAK,QAAQ,QAAQ,mBAAmB,KAAK;AAAA;AAAA,EAE/C,mBAAmB,CAAC,OAAO,MAAM,KAAK,KAAK,YAAY;AAAA,IACrD,MAAM,YAAY,KAAK,QAAQ,OAAO,IAAI;AAAA,IAC1C,MAAM,QAAQ,MAAM,IAAI,SAAS;AAAA,IACjC,MAAM,QAAQ,MAAM,IAAI,SAAS;AAAA,IACjC,OAAO,KAAK,QAAQ,QAAQ,oBAAoB,OAAO,WAAW,UAAU,QAAQ,OAAO,OAAO,UAAU;AAAA;AAAA,EAE9G,wBAAwB,CAAC,OAAO,MAAM;AAAA,IACpC,MAAM,YAAY,KAAK,QAAQ,OAAO,IAAI;AAAA,IAC1C,MAAM,KAAK,KAAK,QAAQ,QAAQ,yBAAyB,OAAO,WAAW,UAAU,MAAM;AAAA,IAC3F,OAAO,OAAO,IAAI,OAAO;AAAA;AAAA,EAE3B,wBAAwB,CAAC,OAAO;AAAA,IAC9B,MAAM,SAAS,KAAK,QAAQ,QAAQ,yBAAyB,KAAK;AAAA,IAClE,OAAO,OAAO,WAAW,WAAW,OAAO,MAAM,IAAI;AAAA;AAAA,EAEvD,kCAAkC,CAAC,MAAM,QAAQ;AAAA,IAC/C,MAAM,iBAAiB,OAAO,OAAO,CAAC,MAAM,EAAE,KAAK,SAAS,CAAC;AAAA,IAC7D,IAAI,eAAe,WAAW,GAAG;AAAA,MAC/B,KAAK,QAAQ,QAAQ,mCAAmC,MAAM,MAAM,CAAC;AAAA,MACrE;AAAA,IACF;AAAA,IACA,MAAM,eAAe,kBAAkB,SAAS,cAAc;AAAA,IAC9D,KAAK,QAAQ,QAAQ,mCAAmC,MAAM,KAAK,YAAY,GAAG,eAAe,MAAM;AAAA;AAAA,EAEzG,yBAAyB,CAAC,MAAM,WAAW;AAAA,IACzC,KAAK,QAAQ,QAAQ,0BAA0B,MAAM,SAAS;AAAA;AAAA,EAEhE,8BAA8B,CAAC,MAAM,OAAO;AAAA,IAC1C,KAAK,QAAQ,QAAQ,+BAA+B,MAAM,MAAM,MAAM;AAAA;AAAA,EAExE,aAAa,CAAC,MAAM,SAAS;AAAA,IAC3B,KAAK,cAAc,GAAG,MAAM,OAAO;AAAA;AAAA,EAErC,eAAe,CAAC,MAAM,SAAS;AAAA,IAC7B,KAAK,cAAc,KAAK,MAAM,OAAO;AAAA;AAAA,EAEvC,cAAc,CAAC,MAAM,SAAS;AAAA,IAC5B,KAAK,cAAc,IAAI,MAAM,OAAO;AAAA;AAAA,EAEtC,gBAAgB,CAAC,SAAS;AAAA,IACxB,KAAK,kBAAkB,KAAK,OAAO;AAAA;AAEvC;AACA,IAAI;AACJ,IAAI;AACJ,SAAS,gBAAgB,CAAC,SAAS;AAAA,EACjC,IAAI,mBAAmB,SAAS;AAAA,IAC9B,iBAAiB;AAAA,IACjB,aAAa;AAAA,EACf;AAAA;AAEF,SAAS,gBAAgB,GAAG;AAAA,EAC1B,IAAI,CAAC,YAAY;AAAA,IACf,IAAI;AAAA,MACF,aAAa,IAAI,aAAa,cAAc;AAAA,MAC5C,OAAO,OAAO;AAAA,MACd,MAAM,IAAI,MAAM,gDAAgD,iBAAiB,QAAQ,MAAM,UAAU,iBAAiB;AAAA;AAAA,EAE9H;AAAA,EACA,OAAO;AAAA;AAET,IAAI;AAAA,EACF,aAAa,IAAI,aAAa,cAAc;AAAA,EAC5C,OAAO,OAAO;AAAA;AAGhB,MAAM,WAAW;AAAA,EACf;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,YAAY;AAAA,EACZ;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB,CAAC;AAAA,EACnB,WAAW,CAAC,KAAK,MAAM;AAAA,IACrB,KAAK,MAAM;AAAA,IACX,KAAK,YAAY;AAAA;AAAA,SAEZ,MAAM,CAAC,aAAa;AAAA,IACzB,MAAM,MAAM,iBAAiB;AAAA,IAC7B,OAAO,IAAI,iBAAiB,WAAW;AAAA;AAAA,EAEzC,KAAK,GAAG;AAAA,IACN,IAAI,KAAK;AAAA,MACP,MAAM,IAAI,MAAM,yBAAyB;AAAA;AAAA,EAE7C,OAAO,CAAC,MAAM;AAAA,IACZ,KAAK,MAAM;AAAA,IACX,KAAK,aAAa,KAAK,IAAI,QAAQ,OAAO,IAAI;AAAA,IAC9C,IAAI,KAAK,WAAW,WAAW;AAAA,MAC7B,KAAK,SAAS,KAAK,IAAI,4BAA4B,KAAK,WAAW,KAAK,YAAY,KAAK;AAAA,IAC3F,EAAO;AAAA,MACL,KAAK,IAAI,2BAA2B,KAAK,WAAW,KAAK,QAAQ,KAAK,YAAY,KAAK;AAAA;AAAA,IAEzF,KAAK,IAAI,yBAAyB,KAAK,WAAW,KAAK,MAAM;AAAA,IAC7D,KAAK,UAAU,KAAK,IAAI,oBAAoB,KAAK,SAAS;AAAA,IAC1D,KAAK,YAAY,KAAK,IAAI,sBAAsB,KAAK,SAAS;AAAA,IAC9D,KAAK,YAAY;AAAA,IACjB,KAAK,kBAAkB,CAAC;AAAA;AAAA,EAE1B,MAAM,CAAC,MAAM;AAAA,IACX,KAAK,MAAM;AAAA,IACX,MAAM,YAAY,KAAK,IAAI,QAAQ,OAAO,IAAI;AAAA,IAC9C,KAAK,gBAAgB,KAAK,SAAS;AAAA,IACnC,KAAK,IAAI,iBAAiB,KAAK,WAAW,SAAS;AAAA,IACnD,KAAK,UAAU,KAAK,IAAI,oBAAoB,KAAK,SAAS;AAAA,IAC1D,KAAK,YAAY,KAAK,IAAI,sBAAsB,KAAK,SAAS;AAAA,IAC9D,KAAK,YAAY;AAAA;AAAA,EAEnB,QAAQ,CAAC,QAAO;AAAA,IACd,KAAK,MAAM;AAAA,IACX,MAAM,UAAU,KAAK,IAAI,mBAAmB,KAAK,WAAW,MAAK;AAAA,IACjE,IAAI,CAAC,SAAS;AAAA,MACZ,MAAM,IAAI,MAAM,wBAAwB,QAAO;AAAA,IACjD;AAAA,IACA,KAAK,UAAU,KAAK,IAAI,oBAAoB,KAAK,SAAS;AAAA,IAC1D,KAAK,YAAY,KAAK,IAAI,sBAAsB,KAAK,SAAS;AAAA,IAC9D,KAAK,YAAY;AAAA,IACjB,KAAK,aAAa;AAAA;AAAA,EAEpB,aAAa,CAAC,MAAM;AAAA,IAClB,KAAK,MAAM;AAAA,IACX,MAAM,SAAS,KAAK,OAAO,IAAI,CAAC,WAAW;AAAA,MACzC,MAAM,MAAM;AAAA,MACZ,IAAI,MAAM,MAAM;AAAA,MAChB,IAAI,MAAM,MAAM;AAAA,MAChB,YAAY,MAAM,cAAc;AAAA,MAChC,MAAM,MAAM;AAAA,IACd,EAAE;AAAA,IACF,KAAK,IAAI,wBAAwB,KAAK,WAAW,MAAM;AAAA,IACvD,KAAK,UAAU,KAAK,IAAI,oBAAoB,KAAK,SAAS;AAAA,IAC1D,KAAK,YAAY,KAAK,IAAI,sBAAsB,KAAK,SAAS;AAAA,IAC9D,KAAK,YAAY;AAAA;AAAA,EAEnB,YAAY,CAAC,KAAK;AAAA,IAChB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,uBAAuB,KAAK,WAAW,GAAG;AAAA;AAAA,EAErD,YAAY,CAAC,KAAK;AAAA,IAChB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,uBAAuB,KAAK,WAAW,GAAG;AAAA;AAAA,EAErD,oBAAoB,CAAC,YAAY;AAAA,IAC/B,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,+BAA+B,KAAK,WAAW,UAAU;AAAA;AAAA,EAEpE,aAAa,GAAG;AAAA,IACd,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,wBAAwB,KAAK,SAAS;AAAA;AAAA,EAEjD,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,uBAAuB,KAAK,SAAS;AAAA;AAAA,MAEnD,MAAM,GAAG;AAAA,IACX,KAAK,MAAM;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,MAEV,QAAQ,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,MAEV,GAAG,GAAG;AAAA,IACR,KAAK,MAAM;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,EAEd,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,IAAI,KAAK,cAAc;AAAA,MACrB,OAAO;AAAA,IACT,MAAM,aAAa,KAAK,IAAI,kBAAkB,KAAK,WAAW,KAAK,SAAS;AAAA,IAC5E,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,OAAO,KAAK,IAAI,QAAQ,OAAO,UAAU;AAAA;AAAA,EAE3C,YAAY,CAAC,aAAa,WAAW;AAAA,IACnC,KAAK,MAAM;AAAA,IACX,IAAI,eAAe;AAAA,MACjB,OAAO;AAAA,IACT,IAAI,KAAK,cAAc;AAAA,MACrB,OAAO;AAAA,IACT,MAAM,aAAa,KAAK,IAAI,uBAAuB,KAAK,WAAW,aAAa,WAAW,KAAK,SAAS;AAAA,IACzG,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,OAAO,KAAK,IAAI,QAAQ,OAAO,UAAU;AAAA;AAAA,EAE3C,uBAAuB,CAAC,WAAW;AAAA,IACjC,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,kCAAkC,KAAK,WAAW,SAAS;AAAA;AAAA,EAEtE,YAAY,CAAC,SAAS,WAAW;AAAA,IAC/B,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,uBAAuB,KAAK,WAAW,SAAS,SAAS;AAAA;AAAA,EAEpE,qBAAqB,CAAC,OAAO;AAAA,IAC3B,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,gCAAgC,KAAK,WAAW,KAAK;AAAA;AAAA,EAEhE,mBAAmB,CAAC,SAAS;AAAA,IAC3B,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,8BAA8B,KAAK,WAAW,OAAO;AAAA;AAAA,EAEhE,kBAAkB,GAAG;AAAA,IACnB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,6BAA6B,KAAK,SAAS;AAAA;AAAA,EAEtD,iBAAiB,CAAC,SAAS;AAAA,IACzB,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,4BAA4B,KAAK,WAAW,OAAO;AAAA;AAAA,EAErE,iBAAiB,GAAG;AAAA,IAClB,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,4BAA4B,KAAK,SAAS;AAAA;AAAA,EAE5D,cAAc,CAAC,OAAO;AAAA,IACpB,KAAK,MAAM;AAAA,IACX,KAAK,eAAe,SAAS;AAAA,IAC7B,KAAK,IAAI,yBAAyB,KAAK,WAAW,OAAO,OAAO,IAAI;AAAA;AAAA,EAEtE,cAAc,GAAG;AAAA,IACf,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,gBAAgB;AAAA;AAAA,EAE9B,WAAW,CAAC,OAAO;AAAA,IACjB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,sBAAsB,KAAK,WAAW,KAAK;AAAA;AAAA,EAEtD,WAAW,GAAG;AAAA,IACZ,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,sBAAsB,KAAK,SAAS;AAAA;AAAA,EAEtD,KAAK,GAAG;AAAA,IACN,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,gBAAgB,KAAK,SAAS;AAAA,IACvC,KAAK,UAAU;AAAA,IACf,KAAK,YAAY;AAAA,IACjB,KAAK,YAAY;AAAA,IACjB,KAAK,aAAa;AAAA,IAClB,KAAK,kBAAkB,CAAC;AAAA;AAAA,EAE1B,KAAK,GAAG;AAAA,IACN,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,gBAAgB,KAAK,SAAS;AAAA,IACvC,KAAK,UAAU;AAAA,IACf,KAAK,YAAY;AAAA,IACjB,KAAK,YAAY;AAAA,IACjB,KAAK,aAAa;AAAA,IAClB,KAAK,SAAS;AAAA,IACd,KAAK,kBAAkB,CAAC;AAAA;AAAA,EAE1B,OAAO,GAAG;AAAA,IACR,IAAI,KAAK;AAAA,MACP;AAAA,IACF,KAAK,aAAa;AAAA,IAClB,KAAK,IAAI,kBAAkB,KAAK,SAAS;AAAA;AAE7C;AAMA,SAAS,eAAe,CAAC,IAAI,SAAS;AAAA,EACpC,IAAI,OAAO,QAAQ,UAAU,UAAU;AAAA,IACrC,IAAI,QAAQ,QAAQ,GAAG;AAAA,MACrB,MAAM,IAAI,UAAU,gCAAgC,OAAO,QAAQ,OAAO;AAAA,IAC5E;AAAA,EACF;AAAA,EACA,IAAI,OAAO,QAAQ,WAAW,UAAU;AAAA,IACtC,IAAI,QAAQ,SAAS,GAAG;AAAA,MACtB,MAAM,IAAI,UAAU,iCAAiC,OAAO,QAAQ,QAAQ;AAAA,IAC9E;AAAA,EACF;AAAA;AAEF,SAAS,iBAAiB,CAAC,OAAO;AAAA,EAChC,IAAI,OAAO,UAAU,YAAY,MAAM,SAAS,GAAG,GAAG;AAAA,IACpD,MAAM,UAAU,MAAM,MAAM,GAAG,EAAE;AAAA,IACjC,MAAM,MAAM,WAAW,OAAO;AAAA,IAC9B,OAAO,CAAC,OAAO,MAAM,GAAG;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA;AAET,SAAS,YAAY,CAAC,OAAO;AAAA,EAC3B,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,MAAM,KAAK,GAAG;AAAA,IACrD,OAAO;AAAA,EACT;AAAA,EACA,IAAI,UAAU,QAAQ;AAAA,IACpB,OAAO;AAAA,EACT;AAAA,EACA,OAAO,kBAAkB,KAAK;AAAA;AAEhC,SAAS,aAAa,CAAC,OAAO;AAAA,EAC5B,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,MAAM,KAAK,GAAG;AAAA,IACrD,OAAO;AAAA,EACT;AAAA,EACA,OAAO,kBAAkB,KAAK;AAAA;AAEhC,SAAS,cAAc,CAAC,OAAO;AAAA,EAC7B,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,MAAM,KAAK,GAAG;AAAA,IACrD,OAAO;AAAA,EACT;AAAA,EACA,IAAI,UAAU,QAAQ;AAAA,IACpB,OAAO;AAAA,EACT;AAAA,EACA,OAAO,kBAAkB,KAAK;AAAA;AAEhC,SAAS,kBAAkB,CAAC,OAAO;AAAA,EACjC,OAAO,UAAU,cAAc,UAAU;AAAA;AAE3C,SAAS,cAAc,CAAC,OAAO;AAAA,EAC7B,OAAO,UAAU,aAAa,UAAU,YAAY,UAAU;AAAA;AAEhE,SAAS,eAAe,CAAC,OAAO;AAAA,EAC9B,OAAO,eAAe,KAAK;AAAA;AAE7B,SAAS,eAAe,CAAC,OAAO;AAAA,EAC9B,IAAI,UAAU,aAAa,UAAU,QAAQ;AAAA,IAC3C,OAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,MAAM,KAAK,GAAG;AAAA,IACrD,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAET,SAAS,UAAU,CAAC,OAAO;AAAA,EACzB,IAAI,UAAU,WAAW;AAAA,IACvB,OAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,MAAM,KAAK,GAAG;AAAA,IACrD,OAAO;AAAA,EACT;AAAA,EACA,OAAO,kBAAkB,KAAK;AAAA;AAIhC,IAAI,oBAAoB,OAAO,IAAI,0BAA0B;AAC7D,IAAI;AAAA,CACH,CAAC,kBAAkB;AAAA,EAClB,cAAc,oBAAoB;AAAA,EAClC,cAAc,WAAW;AAAA,EACzB,cAAc,aAAa;AAAA,EAC3B,cAAc,aAAa;AAAA,GAC1B,iBAAiB,CAAC,CAAC;AACtB,IAAI;AAAA,CACH,CAAC,sBAAsB;AAAA,EACtB,kBAAkB,aAAa;AAAA,EAC/B,kBAAkB,aAAa;AAAA,GAC9B,qBAAqB,CAAC,CAAC;AAC1B,SAAS,YAAY,CAAC,KAAK;AAAA,EACzB,OAAO,CAAC,CAAC,MAAM;AAAA;AAAA;AAGjB,MAAM,uBAAuB,cAAc;AAAA,GACxC,qBAAqB;AAAA,SACf,mBAAmB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW,CAAC,SAAS;AAAA,IACnB,MAAM;AAAA,IACN,KAAK,MAAM,eAAe;AAAA,IAC1B,KAAK,MAAM,QAAQ,MAAM,cAAc,KAAK;AAAA;AAAA,MAE1C,EAAE,GAAG;AAAA,IACP,OAAO,KAAK;AAAA;AAAA,MAEV,EAAE,CAAC,OAAO;AAAA,IACZ,KAAK,MAAM;AAAA;AAAA,MAET,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,EAEd,SAAS,GAAG;AAAA,IACV,KAAK,SAAS;AAAA;AAAA,EAEhB,SAAS,GAAG;AAAA,IACV,KAAK,SAAS;AAAA;AAAA,EAEhB,OAAO,GAAG;AAAA,EACV,kBAAkB,GAAG;AAAA,MACjB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,OAAO,CAAC,OAAO;AAAA,IACjB,KAAK,WAAW;AAAA;AAEpB;AACA,IAAI,aAAa,YAAY,OAAO,OAAO;AAC3C,WAAW,kBAAkB,KAAK;AAClC,WAAW,oBAAoB,CAAC;AAAA;AAEhC,MAAM,mBAAmB,eAAe;AAAA,SAC/B,sBAAsB,IAAI;AAAA,EACjC,eAAe;AAAA,EACf;AAAA,EACA,cAAc;AAAA,EACd,cAAc;AAAA,EACd,KAAK;AAAA,EACL,KAAK;AAAA,EACL;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,eAAe;AAAA,EACf;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA,cAAc;AAAA,EACd,aAAa;AAAA,EACb,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,sBAAsB;AAAA,EACtB,iBAAiB;AAAA,EACjB,kBAAkB,CAAC;AAAA,EACnB,iBAAiB;AAAA,EACjB,gBAAgB,CAAC;AAAA,EACjB;AAAA,EACA,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,YAAY,CAAC;AAAA,EACb,WAAW;AAAA,EACX,cAAc;AAAA,EACd,oBAAoB,IAAI;AAAA,EACxB,yBAAyB,CAAC;AAAA,EAC1B,yBAAyB,CAAC;AAAA,EAC1B,kBAAkB;AAAA,EAClB,SAAS;AAAA,EACT,2BAA2B;AAAA,EAC3B,8BAA8B,CAAC;AAAA,EAC/B,sBAAsB,IAAI;AAAA,EAC1B,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,EACA,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA,IACZ,WAAW,oBAAoB,IAAI,KAAK,KAAK,IAAI;AAAA,IACjD,gBAAgB,KAAK,IAAI,OAAO;AAAA,IAChC,KAAK,eAAe,QAAQ;AAAA,IAC5B,KAAK,cAAc,QAAQ;AAAA,IAC3B,KAAK,SAAS,QAAQ,SAAS;AAAA,IAC/B,KAAK,UAAU,QAAQ,UAAU;AAAA,IACjC,IAAI,OAAO,KAAK,WAAW,UAAU;AAAA,MACnC,KAAK,cAAc,KAAK;AAAA,IAC1B;AAAA,IACA,IAAI,OAAO,KAAK,YAAY,UAAU;AAAA,MACpC,KAAK,eAAe,KAAK;AAAA,IAC3B;AAAA,IACA,KAAK,UAAU,QAAQ,UAAU;AAAA,IACjC,KAAK,WAAW,QAAQ,YAAY;AAAA,IACpC,KAAK,WAAW,QAAQ,YAAY;AAAA,IACpC,KAAK,QAAQ,QAAQ,QAAQ;AAAA,IAC7B,KAAK,aAAa,KAAK,SAAS,KAAK,WAAW,IAAI;AAAA,IACpD,KAAK,WAAW,QAAQ,YAAY,YAAY,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,QAAQ,OAAO,CAAC,IAAI;AAAA,IAC5F,KAAK,WAAW,YAAY,KAAK,OAAO,UAAU;AAAA,IAClD,KAAK,SAAS,WAAW,KAAK,WAAW,QAAQ,OAAO,QAAQ,IAAI;AAAA,IACpE,KAAK,oBAAoB,OAAO;AAAA,IAChC,KAAK,kBAAkB,OAAO;AAAA,IAC9B,IAAI,KAAK,UAAU;AAAA,MACjB,KAAK,kBAAkB;AAAA,IACzB;AAAA;AAAA,MAEE,EAAE,GAAG;AAAA,IACP,OAAO,KAAK;AAAA;AAAA,MAEV,EAAE,CAAC,OAAO;AAAA,IACZ,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,kBAAkB,OAAO,KAAK,EAAE;AAAA,MAC5C,KAAK,OAAO,kBAAkB,IAAI,OAAO,IAAI;AAAA,IAC/C;AAAA,IACA,MAAM,KAAK;AAAA;AAAA,MAET,SAAS,GAAG;AAAA,IACd,OAAO,KAAK;AAAA;AAAA,MAEV,SAAS,CAAC,OAAO;AAAA,IACnB,KAAK,aAAa;AAAA;AAAA,MAEhB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK;AAAA;AAAA,MAEV,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,GAAG;AAAA,IAChB,MAAM,MAAM,KAAK,SAAS,iBAAiB;AAAA,IAC3C,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ;AAAA;AAAA,MAEtC,OAAO,CAAC,OAAO;AAAA,IACjB,IAAI,KAAK,aAAa;AAAA,MACpB;AAAA,IACF,MAAM,aAAa,KAAK;AAAA,IACxB,KAAK,WAAW;AAAA,IAChB,KAAK,SAAS,WAAW,QAAQ,QAAQ,OAAO,QAAQ,IAAI;AAAA,IAC5D,IAAI,KAAK,OAAO;AAAA,MACd,IAAI,CAAC,cAAc,OAAO;AAAA,QACxB,KAAK,mBAAmB,CAAC;AAAA,MAC3B,EAAO,SAAI,cAAc,CAAC,OAAO;AAAA,QAC/B,KAAK,mBAAmB,EAAE;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,IAAI,KAAK,UAAU;AAAA,MACjB,KAAK,KAAK;AAAA,IACZ;AAAA,IACA,KAAK,cAAc;AAAA;AAAA,MAEjB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,OAAO,CAAC,OAAO;AAAA,IACjB,MAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,CAAC;AAAA,IAC9C,IAAI,KAAK,aAAa,SAAS;AAAA,MAC7B,KAAK,WAAW;AAAA,MAChB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,EAEF,YAAY,GAAG;AAAA,IACb,OAAO;AAAA;AAAA,EAET,kBAAkB,CAAC,YAAY;AAAA,IAC7B,OAAO;AAAA;AAAA,EAET,eAAe,GAAG;AAAA,IAChB,OAAO;AAAA;AAAA,EAET,oBAAoB,CAAC,GAAG,GAAG;AAAA,IACzB,OAAO;AAAA;AAAA,EAET,KAAK,GAAG;AAAA,IACN,IAAI,KAAK,gBAAgB,KAAK,YAAY,CAAC,KAAK;AAAA,MAC9C;AAAA,IACF,KAAK,KAAK,gBAAgB,IAAI;AAAA,IAC9B,KAAK,WAAW;AAAA,IAChB,KAAK,cAAc;AAAA,IACnB,KAAK,kBAAkB,CAAC,QAAQ;AAAA,MAC9B,IAAI,KAAK;AAAA,QACP;AAAA,MACF,KAAK,cAAc,UAAU,GAAG;AAAA,MAChC,IAAI,KAAK;AAAA,QACP;AAAA,MACF,IAAI,CAAC,IAAI,oBAAoB,KAAK,gBAAgB;AAAA,QAChD,KAAK,eAAe,GAAG;AAAA,MACzB;AAAA;AAAA,IAEF,KAAK,eAAe,CAAC,UAAU;AAAA,MAC7B,IAAI,KAAK;AAAA,QACP;AAAA,MACF,KAAK,gBAAgB,KAAK,MAAM,KAAK;AAAA,MACrC,IAAI,KAAK;AAAA,QACP;AAAA,MACF,IAAI,CAAC,MAAM,oBAAoB,KAAK,aAAa;AAAA,QAC/C,KAAK,YAAY,KAAK;AAAA,MACxB;AAAA;AAAA,IAEF,KAAK,IAAI,kBAAkB,WAAW,YAAY,KAAK,eAAe;AAAA,IACtE,KAAK,IAAI,kBAAkB,WAAW,SAAS,KAAK,YAAY;AAAA,IAChE,KAAK,KAAK,SAAuB;AAAA;AAAA,EAEnC,IAAI,GAAG;AAAA,IACL,IAAI,CAAC,KAAK,YAAY,CAAC,KAAK;AAAA,MAC1B;AAAA,IACF,KAAK,WAAW;AAAA,IAChB,KAAK,cAAc;AAAA,IACnB,IAAI,KAAK,iBAAiB;AAAA,MACxB,KAAK,IAAI,kBAAkB,YAAY,YAAY,KAAK,eAAe;AAAA,MACvE,KAAK,kBAAkB;AAAA,IACzB;AAAA,IACA,IAAI,KAAK,cAAc;AAAA,MACrB,KAAK,IAAI,kBAAkB,YAAY,SAAS,KAAK,YAAY;AAAA,MACjE,KAAK,eAAe;AAAA,IACtB;AAAA,IACA,KAAK,KAAK,SAAuB;AAAA;AAAA,MAE/B,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,IAAI,GAAG;AAAA,IACT,OAAO,KAAK;AAAA;AAAA,MAEV,SAAS,GAAG;AAAA,IACd,OAAO,KAAK;AAAA;AAAA,MAEV,IAAI,CAAC,OAAO;AAAA,IACd,IAAI,KAAK,UAAU;AAAA,MACjB;AAAA,IACF,KAAK,QAAQ;AAAA,IACb,IAAI,KAAK,UAAU;AAAA,MACjB,MAAM,QAAQ,QAAQ,IAAI;AAAA,MAC1B,KAAK,mBAAmB,KAAK;AAAA,IAC/B;AAAA;AAAA,EAEF,kBAAkB,CAAC,OAAO;AAAA,IACxB,KAAK,cAAc;AAAA,IACnB,KAAK,QAAQ,mBAAmB,KAAK;AAAA;AAAA,EAEvC,kBAAkB,CAAC,IAAI;AAAA,IACrB,WAAW,SAAS,KAAK,wBAAwB;AAAA,MAC/C,IAAI,MAAM,OAAO;AAAA,QACf,OAAO;AAAA,MACT,IAAI,aAAa,KAAK,GAAG;AAAA,QACvB,MAAM,QAAQ,MAAM,mBAAmB,EAAE;AAAA,QACzC,IAAI;AAAA,UACF,OAAO;AAAA,MACX;AAAA,IACF;AAAA,IACA;AAAA;AAAA,EAEF,aAAa,GAAG;AAAA,IACd,KAAK,UAAU;AAAA,IACf,KAAK,KAAK,cAAc;AAAA;AAAA,MAEtB,UAAU,GAAG;AAAA,IACf,OAAO,KAAK;AAAA;AAAA,MAEV,UAAU,CAAC,OAAO;AAAA,IACpB,IAAI,KAAK,gBAAgB;AAAA,MACvB;AAAA,IACF,KAAK,cAAc;AAAA,IACnB,IAAI,KAAK;AAAA,MACP,KAAK,OAAO,2BAA2B;AAAA,IACzC,KAAK,cAAc;AAAA;AAAA,MAEjB,UAAU,GAAG;AAAA,IACf,OAAO,KAAK;AAAA;AAAA,MAEV,UAAU,CAAC,OAAO;AAAA,IACpB,IAAI,KAAK,gBAAgB;AAAA,MACvB;AAAA,IACF,KAAK,cAAc;AAAA,IACnB,IAAI,KAAK;AAAA,MACP,KAAK,OAAO,2BAA2B;AAAA,IACzC,KAAK,cAAc;AAAA;AAAA,MAEjB,CAAC,GAAG;AAAA,IACN,IAAI,KAAK,QAAQ;AAAA,MACf,OAAO,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK;AAAA,IACxC;AAAA,IACA,OAAO,KAAK,KAAK,KAAK;AAAA;AAAA,MAEpB,CAAC,CAAC,OAAO;AAAA,IACX,KAAK,OAAO;AAAA;AAAA,MAEV,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU;AAAA;AAAA,MAEpB,GAAG,CAAC,OAAO;AAAA,IACb,IAAI,eAAe,KAAK,KAAK,UAAU,WAAW;AAAA,MAChD,KAAK,YAAY,EAAE,KAAK,MAAM,CAAC;AAAA,IACjC;AAAA;AAAA,MAEE,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU;AAAA;AAAA,MAEpB,KAAK,CAAC,OAAO;AAAA,IACf,IAAI,eAAe,KAAK,KAAK,UAAU,WAAW;AAAA,MAChD,KAAK,YAAY,EAAE,OAAO,MAAM,CAAC;AAAA,IACnC;AAAA;AAAA,MAEE,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU;AAAA;AAAA,MAEpB,MAAM,CAAC,OAAO;AAAA,IAChB,IAAI,eAAe,KAAK,KAAK,UAAU,WAAW;AAAA,MAChD,KAAK,YAAY,EAAE,QAAQ,MAAM,CAAC;AAAA,IACpC;AAAA;AAAA,MAEE,IAAI,GAAG;AAAA,IACT,OAAO,KAAK,UAAU;AAAA;AAAA,MAEpB,IAAI,CAAC,OAAO;AAAA,IACd,IAAI,eAAe,KAAK,KAAK,UAAU,WAAW;AAAA,MAChD,KAAK,YAAY,EAAE,MAAM,MAAM,CAAC;AAAA,IAClC;AAAA;AAAA,MAEE,CAAC,GAAG;AAAA,IACN,IAAI,KAAK,QAAQ;AAAA,MACf,OAAO,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK;AAAA,IACxC;AAAA,IACA,OAAO,KAAK,KAAK,KAAK;AAAA;AAAA,MAEpB,CAAC,CAAC,OAAO;AAAA,IACX,KAAK,MAAM;AAAA;AAAA,MAET,KAAK,GAAG;AAAA,IACV,OAAO,KAAK;AAAA;AAAA,MAEV,KAAK,CAAC,OAAO;AAAA,IACf,IAAI,gBAAgB,KAAK,GAAG;AAAA,MAC1B,KAAK,SAAS;AAAA,MACd,KAAK,SAAS,SAAS,KAAK;AAAA,MAC5B,IAAI,OAAO,UAAU,YAAY,KAAK,gBAAgB,GAAG;AAAA,QACvD,KAAK,cAAc;AAAA,QACnB,KAAK,SAAS,cAAc,CAAC;AAAA,MAC/B;AAAA,MACA,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,MAAM,GAAG;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,MAEV,MAAM,CAAC,OAAO;AAAA,IAChB,IAAI,gBAAgB,KAAK,GAAG;AAAA,MAC1B,KAAK,UAAU;AAAA,MACf,KAAK,SAAS,UAAU,KAAK;AAAA,MAC7B,IAAI,OAAO,UAAU,YAAY,KAAK,gBAAgB,GAAG;AAAA,QACvD,KAAK,cAAc;AAAA,QACnB,KAAK,SAAS,cAAc,CAAC;AAAA,MAC/B;AAAA,MACA,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,MAAM,GAAG;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,MAEV,MAAM,CAAC,OAAO;AAAA,IAChB,IAAI,KAAK,YAAY,OAAO;AAAA,MAC1B,KAAK,UAAU;AAAA,MACf,KAAK,QAAQ,kBAAkB;AAAA,MAC/B,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,EAEF,iBAAiB,GAAG;AAAA,IAClB,KAAK,kBAAkB;AAAA;AAAA,EAEzB,kBAAkB,GAAG;AAAA,IACnB,IAAI,KAAK,iBAAiB;AAAA,MACxB,KAAK,uBAAuB,KAAK,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE,SAAS,EAAE,SAAS,KAAK,CAAC;AAAA,MACjG,KAAK,kBAAkB;AAAA,IACzB;AAAA;AAAA,EAEF,8BAA8B,GAAG;AAAA,IAC/B,IAAI,CAAC,KAAK,4BAA4B,KAAK,4BAA4B,WAAW,KAAK,uBAAuB,QAAQ;AAAA,MACpH,OAAO,KAAK;AAAA,IACd;AAAA,IACA,MAAM,MAAM,KAAK,SAAS,iBAAiB;AAAA,IAC3C,MAAM,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM;AAAA,IAC5C,MAAM,SAAS,CAAC,GAAG,KAAK,sBAAsB;AAAA,IAC9C,OAAO,KAAK,CAAC,GAAG,MAAM;AAAA,MACpB,MAAM,KAAK,SAAS,MAAM,EAAE,IAAI,EAAE;AAAA,MAClC,MAAM,KAAK,SAAS,MAAM,EAAE,IAAI,EAAE;AAAA,MAClC,OAAO,KAAK;AAAA,KACb;AAAA,IACD,KAAK,8BAA8B;AAAA,IACnC,KAAK,2BAA2B;AAAA,IAChC,OAAO,KAAK;AAAA;AAAA,EAEd,mBAAmB,CAAC,SAAS;AAAA,IAC3B,MAAM,OAAO,KAAK;AAAA,IAClB,IAAI,gBAAgB,QAAQ,SAAS,GAAG;AAAA,MACtC,KAAK,aAAa,QAAQ,SAAS;AAAA,IACrC;AAAA,IACA,IAAI,WAAW,QAAQ,QAAQ,GAAG;AAAA,MAChC,KAAK,YAAY,QAAQ,QAAQ;AAAA,IACnC;AAAA,IACA,IAAI,WAAW,QAAQ,SAAS,GAAG;AAAA,MACjC,KAAK,aAAa,QAAQ,SAAS;AAAA,IACrC;AAAA,IACA,IAAI,QAAQ,aAAa,WAAW;AAAA,MAClC,KAAK,YAAY,QAAQ,QAAQ;AAAA,IACnC,EAAO;AAAA,MACL,KAAK,YAAY,CAAC;AAAA;AAAA,IAEpB,IAAI,QAAQ,eAAe,WAAW;AAAA,MACpC,KAAK,cAAc,QAAQ;AAAA,MAC3B,KAAK,cAAc,QAAQ,UAAU;AAAA,IACvC,EAAO;AAAA,MACL,MAAM,mBAAmB,OAAO,QAAQ,UAAU;AAAA,MAClD,MAAM,oBAAoB,OAAO,QAAQ,WAAW;AAAA,MACpD,KAAK,cAAc,oBAAoB,oBAAoB,IAAI;AAAA,MAC/D,KAAK,cAAc,KAAK,WAAW;AAAA;AAAA,IAErC,KAAK,iBAAiB,mBAAmB,QAAQ,aAAa,CAAC;AAAA,IAC/D,KAAK,YAAY,UAAU,QAAQ,QAAQ,CAAC;AAAA,IAC5C,KAAK,cAAc,gBAAgB,QAAQ,UAAU,CAAC;AAAA,IACtD,KAAK,kBAAkB,aAAa,QAAQ,cAAc,CAAC;AAAA,IAC3D,KAAK,aAAa,WAAW,QAAQ,SAAS,CAAC;AAAA,IAC/C,IAAI,gBAAgB,QAAQ,KAAK,GAAG;AAAA,MAClC,KAAK,SAAS,QAAQ;AAAA,MACtB,KAAK,SAAS,SAAS,QAAQ,KAAK;AAAA,IACtC;AAAA,IACA,IAAI,gBAAgB,QAAQ,MAAM,GAAG;AAAA,MACnC,KAAK,UAAU,QAAQ;AAAA,MACvB,KAAK,SAAS,UAAU,QAAQ,MAAM;AAAA,IACxC;AAAA,IACA,KAAK,gBAAgB,QAAQ,aAAa,aAAa,aAAa;AAAA,IACpE,IAAI,KAAK,kBAAkB,YAAY;AAAA,MACrC,KAAK,gBAAgB,kBAAkB,KAAK,aAAa,CAAC;AAAA,IAC5D;AAAA,IACA,KAAK,YAAY,QAAQ,aAAa,WAAW,WAAW,QAAQ,aAAa,WAAW,WAAW;AAAA,IACvG,IAAI,KAAK,cAAc,WAAW;AAAA,MAChC,KAAK,YAAY,cAAc,KAAK,SAAS,CAAC;AAAA,IAChD;AAAA,IACA,MAAM,mBAAmB,QAAQ,QAAQ,aAAa,QAAQ,UAAU,aAAa,QAAQ,WAAW,aAAa,QAAQ,SAAS;AAAA,IACtI,IAAI,kBAAkB;AAAA,MACpB,KAAK,YAAY;AAAA,QACf,KAAK,QAAQ;AAAA,QACb,OAAO,QAAQ;AAAA,QACf,QAAQ,QAAQ;AAAA,QAChB,MAAM,QAAQ;AAAA,MAChB;AAAA,MACA,KAAK,mBAAmB,KAAK,SAAS;AAAA,IACxC;AAAA,IACA,IAAI,WAAW,QAAQ,QAAQ,GAAG;AAAA,MAChC,KAAK,YAAY,QAAQ,QAAQ;AAAA,IACnC;AAAA,IACA,IAAI,WAAW,QAAQ,SAAS,GAAG;AAAA,MACjC,KAAK,aAAa,QAAQ,SAAS;AAAA,IACrC;AAAA,IACA,KAAK,sBAAsB,OAAO;AAAA;AAAA,EAEpC,qBAAqB,CAAC,SAAS;AAAA,IAC7B,MAAM,OAAO,KAAK;AAAA,IAClB,IAAI,aAAa,QAAQ,MAAM,GAAG;AAAA,MAChC,KAAK,UAAU,KAAK,KAAK,QAAQ,MAAM;AAAA,IACzC;AAAA,IACA,IAAI,aAAa,QAAQ,OAAO,GAAG;AAAA,MACjC,KAAK,UAAU,KAAK,YAAY,QAAQ,OAAO;AAAA,IACjD;AAAA,IACA,IAAI,aAAa,QAAQ,OAAO,GAAG;AAAA,MACjC,KAAK,UAAU,KAAK,UAAU,QAAQ,OAAO;AAAA,IAC/C;AAAA,IACA,IAAI,aAAa,QAAQ,SAAS,GAAG;AAAA,MACnC,KAAK,UAAU,KAAK,KAAK,QAAQ,SAAS;AAAA,IAC5C;AAAA,IACA,IAAI,aAAa,QAAQ,WAAW,GAAG;AAAA,MACrC,KAAK,UAAU,KAAK,OAAO,QAAQ,WAAW;AAAA,IAChD;AAAA,IACA,IAAI,aAAa,QAAQ,YAAY,GAAG;AAAA,MACtC,KAAK,UAAU,KAAK,QAAQ,QAAQ,YAAY;AAAA,IAClD;AAAA,IACA,IAAI,aAAa,QAAQ,UAAU,GAAG;AAAA,MACpC,KAAK,UAAU,KAAK,MAAM,QAAQ,UAAU;AAAA,IAC9C;AAAA,IACA,IAAI,cAAc,QAAQ,OAAO,GAAG;AAAA,MAClC,KAAK,WAAW,KAAK,KAAK,QAAQ,OAAO;AAAA,IAC3C;AAAA,IACA,IAAI,cAAc,QAAQ,QAAQ,GAAG;AAAA,MACnC,KAAK,WAAW,KAAK,YAAY,QAAQ,QAAQ;AAAA,IACnD;AAAA,IACA,IAAI,cAAc,QAAQ,QAAQ,GAAG;AAAA,MACnC,KAAK,WAAW,KAAK,UAAU,QAAQ,QAAQ;AAAA,IACjD;AAAA,IACA,IAAI,cAAc,QAAQ,UAAU,GAAG;AAAA,MACrC,KAAK,WAAW,KAAK,KAAK,QAAQ,UAAU;AAAA,IAC9C;AAAA,IACA,IAAI,cAAc,QAAQ,YAAY,GAAG;AAAA,MACvC,KAAK,WAAW,KAAK,OAAO,QAAQ,YAAY;AAAA,IAClD;AAAA,IACA,IAAI,cAAc,QAAQ,aAAa,GAAG;AAAA,MACxC,KAAK,WAAW,KAAK,QAAQ,QAAQ,aAAa;AAAA,IACpD;AAAA,IACA,IAAI,cAAc,QAAQ,WAAW,GAAG;AAAA,MACtC,KAAK,WAAW,KAAK,MAAM,QAAQ,WAAW;AAAA,IAChD;AAAA;AAAA,MAEE,QAAQ,CAAC,cAAc;AAAA,IACzB,IAAI,CAAC,mBAAmB,YAAY,KAAK,KAAK,kBAAkB;AAAA,MAC9D;AAAA,IACF,KAAK,gBAAgB;AAAA,IACrB,KAAK,SAAS,gBAAgB,kBAAkB,YAAY,CAAC;AAAA,IAC7D,KAAK,cAAc;AAAA;AAAA,MAEjB,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,QAAQ,CAAC,UAAU;AAAA,IACrB,IAAI,CAAC,eAAe,QAAQ,KAAK,KAAK,cAAc;AAAA,MAClD;AAAA,IACF,KAAK,YAAY;AAAA,IACjB,KAAK,SAAS,YAAY,cAAc,QAAQ,CAAC;AAAA,IACjD,KAAK,cAAc;AAAA;AAAA,EAErB,WAAW,CAAC,UAAU;AAAA,IACpB,KAAK,YAAY,KAAK,KAAK,cAAc,SAAS;AAAA,IAClD,KAAK,mBAAmB,QAAQ;AAAA;AAAA,EAElC,kBAAkB,CAAC,UAAU;AAAA,IAC3B,MAAM,OAAO,KAAK;AAAA,IAClB,QAAQ,KAAK,OAAO,QAAQ,SAAS;AAAA,IACrC,IAAI,eAAe,GAAG,GAAG;AAAA,MACvB,IAAI,QAAQ,QAAQ;AAAA,QAClB,KAAK,gBAAgB,KAAK,GAAG;AAAA,MAC/B,EAAO;AAAA,QACL,KAAK,YAAY,KAAK,KAAK,GAAG;AAAA;AAAA,IAElC;AAAA,IACA,IAAI,eAAe,KAAK,GAAG;AAAA,MACzB,IAAI,UAAU,QAAQ;AAAA,QACpB,KAAK,gBAAgB,KAAK,KAAK;AAAA,MACjC,EAAO;AAAA,QACL,KAAK,YAAY,KAAK,OAAO,KAAK;AAAA;AAAA,IAEtC;AAAA,IACA,IAAI,eAAe,MAAM,GAAG;AAAA,MAC1B,IAAI,WAAW,QAAQ;AAAA,QACrB,KAAK,gBAAgB,KAAK,MAAM;AAAA,MAClC,EAAO;AAAA,QACL,KAAK,YAAY,KAAK,QAAQ,MAAM;AAAA;AAAA,IAExC;AAAA,IACA,IAAI,eAAe,IAAI,GAAG;AAAA,MACxB,IAAI,SAAS,QAAQ;AAAA,QACnB,KAAK,gBAAgB,KAAK,IAAI;AAAA,MAChC,EAAO;AAAA,QACL,KAAK,YAAY,KAAK,MAAM,IAAI;AAAA;AAAA,IAEpC;AAAA,IACA,KAAK,cAAc;AAAA;AAAA,MAEjB,QAAQ,CAAC,MAAM;AAAA,IACjB,IAAI,QAAQ,MAAM;AAAA,MAChB,KAAK,SAAS,YAAY,CAAC;AAAA,IAC7B,EAAO;AAAA,MACL,KAAK,SAAS,YAAY,IAAI;AAAA;AAAA,IAEhC,KAAK,cAAc;AAAA;AAAA,MAEjB,UAAU,CAAC,QAAQ;AAAA,IACrB,MAAM,QAAQ,UAAU,OAAO,IAAI;AAAA,IACnC,KAAK,cAAc;AAAA,IACnB,KAAK,SAAS,cAAc,KAAK;AAAA,IACjC,KAAK,cAAc;AAAA;AAAA,MAEjB,aAAa,CAAC,WAAW;AAAA,IAC3B,KAAK,SAAS,iBAAiB,mBAAmB,SAAS,CAAC;AAAA,IAC5D,KAAK,cAAc;AAAA;AAAA,MAEjB,QAAQ,CAAC,MAAM;AAAA,IACjB,KAAK,SAAS,YAAY,UAAU,IAAI,CAAC;AAAA,IACzC,KAAK,cAAc;AAAA;AAAA,MAEjB,UAAU,CAAC,YAAY;AAAA,IACzB,KAAK,SAAS,cAAc,gBAAgB,UAAU,CAAC;AAAA,IACvD,KAAK,cAAc;AAAA;AAAA,MAEjB,cAAc,CAAC,gBAAgB;AAAA,IACjC,KAAK,SAAS,kBAAkB,aAAa,cAAc,CAAC;AAAA,IAC5D,KAAK,cAAc;AAAA;AAAA,MAEjB,SAAS,CAAC,WAAW;AAAA,IACvB,KAAK,SAAS,aAAa,WAAW,SAAS,CAAC;AAAA,IAChD,KAAK,cAAc;AAAA;AAAA,MAEjB,SAAS,CAAC,OAAO;AAAA,IACnB,IAAI,gBAAgB,KAAK,GAAG;AAAA,MAC1B,KAAK,SAAS,aAAa,KAAK;AAAA,MAChC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,QAAQ,CAAC,UAAU;AAAA,IACrB,IAAI,WAAW,QAAQ,GAAG;AAAA,MACxB,KAAK,SAAS,YAAY,QAAQ;AAAA,MAClC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,QAAQ,CAAC,UAAU;AAAA,IACrB,IAAI,WAAW,QAAQ,GAAG;AAAA,MACxB,KAAK,SAAS,YAAY,QAAQ;AAAA,MAClC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,SAAS,CAAC,WAAW;AAAA,IACvB,IAAI,WAAW,SAAS,GAAG;AAAA,MACzB,KAAK,SAAS,aAAa,SAAS;AAAA,MACpC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,SAAS,CAAC,WAAW;AAAA,IACvB,IAAI,WAAW,SAAS,GAAG;AAAA,MACzB,KAAK,SAAS,aAAa,SAAS;AAAA,MACpC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,MAAM,CAAC,QAAQ;AAAA,IACjB,IAAI,aAAa,MAAM,GAAG;AAAA,MACxB,KAAK,SAAS,UAAU,KAAK,KAAK,MAAM;AAAA,MACxC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,OAAO,CAAC,SAAS;AAAA,IACnB,IAAI,aAAa,OAAO,GAAG;AAAA,MACzB,KAAK,SAAS,UAAU,KAAK,YAAY,OAAO;AAAA,MAChD,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,OAAO,CAAC,SAAS;AAAA,IACnB,IAAI,aAAa,OAAO,GAAG;AAAA,MACzB,KAAK,SAAS,UAAU,KAAK,UAAU,OAAO;AAAA,MAC9C,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,SAAS,CAAC,QAAQ;AAAA,IACpB,IAAI,aAAa,MAAM,GAAG;AAAA,MACxB,KAAK,SAAS,UAAU,KAAK,KAAK,MAAM;AAAA,MACxC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,WAAW,CAAC,QAAQ;AAAA,IACtB,IAAI,aAAa,MAAM,GAAG;AAAA,MACxB,KAAK,SAAS,UAAU,KAAK,OAAO,MAAM;AAAA,MAC1C,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,YAAY,CAAC,QAAQ;AAAA,IACvB,IAAI,aAAa,MAAM,GAAG;AAAA,MACxB,KAAK,SAAS,UAAU,KAAK,QAAQ,MAAM;AAAA,MAC3C,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,UAAU,CAAC,QAAQ;AAAA,IACrB,IAAI,aAAa,MAAM,GAAG;AAAA,MACxB,KAAK,SAAS,UAAU,KAAK,MAAM,MAAM;AAAA,MACzC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,OAAO,CAAC,SAAS;AAAA,IACnB,IAAI,cAAc,OAAO,GAAG;AAAA,MAC1B,KAAK,SAAS,WAAW,KAAK,KAAK,OAAO;AAAA,MAC1C,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,QAAQ,CAAC,UAAU;AAAA,IACrB,IAAI,cAAc,QAAQ,GAAG;AAAA,MAC3B,KAAK,SAAS,WAAW,KAAK,YAAY,QAAQ;AAAA,MAClD,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,QAAQ,CAAC,UAAU;AAAA,IACrB,IAAI,cAAc,QAAQ,GAAG;AAAA,MAC3B,KAAK,SAAS,WAAW,KAAK,UAAU,QAAQ;AAAA,MAChD,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,UAAU,CAAC,SAAS;AAAA,IACtB,IAAI,cAAc,OAAO,GAAG;AAAA,MAC1B,KAAK,SAAS,WAAW,KAAK,KAAK,OAAO;AAAA,MAC1C,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,YAAY,CAAC,SAAS;AAAA,IACxB,IAAI,cAAc,OAAO,GAAG;AAAA,MAC1B,KAAK,SAAS,WAAW,KAAK,OAAO,OAAO;AAAA,MAC5C,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,aAAa,CAAC,SAAS;AAAA,IACzB,IAAI,cAAc,OAAO,GAAG;AAAA,MAC1B,KAAK,SAAS,WAAW,KAAK,QAAQ,OAAO;AAAA,MAC7C,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,WAAW,CAAC,SAAS;AAAA,IACvB,IAAI,cAAc,OAAO,GAAG;AAAA,MAC1B,KAAK,SAAS,WAAW,KAAK,MAAM,OAAO;AAAA,MAC3C,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,EAEF,aAAa,GAAG;AAAA,IACd,OAAO,KAAK;AAAA;AAAA,EAEd,gBAAgB,GAAG;AAAA,IACjB,MAAM,SAAS,KAAK,SAAS,kBAAkB;AAAA,IAC/C,MAAM,OAAO,KAAK;AAAA,IAClB,MAAM,OAAO,KAAK;AAAA,IAClB,MAAM,WAAW,KAAK;AAAA,IACtB,MAAM,YAAY,KAAK;AAAA,IACvB,KAAK,KAAK,OAAO;AAAA,IACjB,KAAK,KAAK,OAAO;AAAA,IACjB,MAAM,WAAW,KAAK,IAAI,OAAO,OAAO,CAAC;AAAA,IACzC,MAAM,YAAY,KAAK,IAAI,OAAO,QAAQ,CAAC;AAAA,IAC3C,MAAM,cAAc,aAAa,YAAY,cAAc;AAAA,IAC3D,KAAK,cAAc;AAAA,IACnB,KAAK,eAAe;AAAA,IACpB,IAAI,aAAa;AAAA,MACf,KAAK,eAAe,UAAU,SAAS;AAAA,IACzC;AAAA,IACA,MAAM,kBAAkB,SAAS,KAAK,MAAM,SAAS,KAAK;AAAA,IAC1D,IAAI,iBAAiB;AAAA,MACnB,IAAI,KAAK;AAAA,QACP,KAAK,OAAO,2BAA2B;AAAA,IAC3C;AAAA;AAAA,EAEF,cAAc,CAAC,OAAO,QAAQ;AAAA,IAC5B,IAAI,KAAK,UAAU;AAAA,MACjB,KAAK,wBAAwB,OAAO,MAAM;AAAA,MAC1C,KAAK,SAAS,OAAO,MAAM;AAAA,MAC3B,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,EAEF,uBAAuB,CAAC,OAAO,QAAQ;AAAA,IACrC,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,IAAI,SAAS,KAAK,UAAU,GAAG;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,IAAI,KAAK,aAAa;AAAA,MACpB,KAAK,YAAY,OAAO,OAAO,MAAM;AAAA,IACvC,EAAO;AAAA,MACL,KAAK,kBAAkB;AAAA;AAAA;AAAA,EAG3B,iBAAiB,GAAG;AAAA,IAClB,MAAM,IAAI,KAAK;AAAA,IACf,MAAM,IAAI,KAAK;AAAA,IACf,IAAI,KAAK,KAAK,KAAK,GAAG;AAAA,MACpB;AAAA,IACF;AAAA,IACA,IAAI;AAAA,MACF,MAAM,cAAc,KAAK,KAAK;AAAA,MAC9B,KAAK,cAAc,gBAAgB,OAAO,GAAG,GAAG,aAAa,EAAE,cAAc,MAAM,IAAI,eAAe,KAAK,KAAK,CAAC;AAAA,MACjH,OAAO,OAAO;AAAA,MACd,QAAQ,MAAM,qCAAqC,KAAK,OAAO,KAAK;AAAA,MACpE,KAAK,cAAc;AAAA;AAAA;AAAA,EAGvB,QAAQ,CAAC,OAAO,QAAQ;AAAA,IACtB,KAAK,eAAe;AAAA,IACpB,KAAK,KAAK,QAAQ;AAAA;AAAA,EAEpB,aAAa,CAAC,KAAK;AAAA,IACjB,IAAI,IAAI,QAAQ;AAAA,MACd,IAAI,OAAO,OAAO,IAAI,EAAE;AAAA,IAC1B;AAAA,IACA,IAAI,SAAS;AAAA;AAAA,EAEf,GAAG,CAAC,KAAK,OAAO;AAAA,IACd,IAAI,CAAC,KAAK;AAAA,MACR,OAAO;AAAA,IACT;AAAA,IACA,MAAM,aAAa,oBAAoB,KAAK,MAAM,GAAG;AAAA,IACrD,IAAI,CAAC,YAAY;AAAA,MACf,OAAO;AAAA,IACT;AAAA,IACA,IAAI,WAAW,aAAa;AAAA,MAC1B,IAAI,MAAM;AAAA,QACR,QAAQ,KAAK,sBAAsB,WAAW,wCAAwC;AAAA,MACxF;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,MAAM,mBAAmB,UAAU,YAAY,KAAK,uBAAuB,SAAS;AAAA,IACpF,IAAI,kBAAkB;AAAA,MACpB,OAAO,KAAK,aAAa,YAAY,gBAAgB;AAAA,IACvD;AAAA,IACA,IAAI,WAAW,WAAW,MAAM;AAAA,MAC9B,KAAK,SAAS,YAAY,WAAW,cAAc,CAAC;AAAA,MACpD,KAAK,uBAAuB,OAAO,KAAK,uBAAuB,QAAQ,UAAU,GAAG,CAAC;AAAA,IACvF,EAAO;AAAA,MACL,KAAK,cAAc,UAAU;AAAA,MAC7B,KAAK,kBAAkB;AAAA,MACvB,KAAK,kBAAkB,IAAI,WAAW,IAAI,UAAU;AAAA,MACpD,KAAK,uBAAuB,KAAK,UAAU;AAAA,MAC3C,IAAI,OAAO,WAAW,oBAAoB,YAAY;AAAA,QACpD,KAAK,KAAK,sBAAsB,UAAU;AAAA,MAC5C;AAAA,MACA,IAAI,WAAW,aAAa,GAAG;AAAA,QAC7B,KAAK,mBAAmB,WAAW,UAAU;AAAA,MAC/C;AAAA;AAAA,IAEF,MAAM,kBAAkB,WAAW,cAAc;AAAA,IACjD,MAAM,gBAAgB,KAAK,uBAAuB;AAAA,IAClD,KAAK,uBAAuB,KAAK,UAAU;AAAA,IAC3C,KAAK,SAAS,YAAY,iBAAiB,aAAa;AAAA,IACxD,KAAK,2BAA2B;AAAA,IAChC,KAAK,oBAAoB,IAAI,UAAU;AAAA,IACvC,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,YAAY,CAAC,KAAK,QAAQ;AAAA,IACxB,IAAI,CAAC,QAAQ;AAAA,MACX,OAAO,KAAK,IAAI,GAAG;AAAA,IACrB;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACR,OAAO;AAAA,IACT;AAAA,IACA,MAAM,aAAa,oBAAoB,KAAK,MAAM,GAAG;AAAA,IACrD,IAAI,CAAC,YAAY;AAAA,MACf,OAAO;AAAA,IACT;AAAA,IACA,IAAI,WAAW,aAAa;AAAA,MAC1B,IAAI,MAAM;AAAA,QACR,QAAQ,KAAK,sBAAsB,WAAW,iDAAiD;AAAA,MACjG;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,IAAI,CAAC,aAAa,MAAM,GAAG;AAAA,MACzB,MAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AAAA,IACA,IAAI,OAAO,aAAa;AAAA,MACtB,IAAI,MAAM;AAAA,QACR,QAAQ,KAAK,kBAAkB,OAAO,iDAAiD;AAAA,MACzF;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,IAAI,CAAC,KAAK,kBAAkB,IAAI,OAAO,EAAE,GAAG;AAAA,MAC1C,IAAI,MAAM;AAAA,QACR,QAAQ,KAAK,kBAAkB,OAAO,uCAAuC,KAAK,2BAA2B;AAAA,MAC/G;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,IAAI,eAAe,UAAU,WAAW,OAAO,OAAO,IAAI;AAAA,MACxD,IAAI,MAAM;AAAA,QACR,QAAQ,KAAK,kCAAkC,WAAW,0CAA0C;AAAA,MACtG;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,IAAI,WAAW,WAAW,MAAM;AAAA,MAC9B,KAAK,SAAS,YAAY,WAAW,cAAc,CAAC;AAAA,MACpD,KAAK,uBAAuB,OAAO,KAAK,uBAAuB,QAAQ,UAAU,GAAG,CAAC;AAAA,IACvF,EAAO;AAAA,MACL,KAAK,cAAc,UAAU;AAAA,MAC7B,KAAK,kBAAkB;AAAA,MACvB,KAAK,kBAAkB,IAAI,WAAW,IAAI,UAAU;AAAA,MACpD,KAAK,uBAAuB,KAAK,UAAU;AAAA,MAC3C,IAAI,OAAO,WAAW,oBAAoB,YAAY;AAAA,QACpD,KAAK,KAAK,sBAAsB,UAAU;AAAA,MAC5C;AAAA,MACA,IAAI,WAAW,aAAa,GAAG;AAAA,QAC7B,KAAK,mBAAmB,WAAW,UAAU;AAAA,MAC/C;AAAA;AAAA,IAEF,KAAK,2BAA2B;AAAA,IAChC,MAAM,cAAc,KAAK,uBAAuB,QAAQ,MAAM;AAAA,IAC9D,MAAM,gBAAgB,KAAK,IAAI,GAAG,KAAK,IAAI,aAAa,KAAK,uBAAuB,MAAM,CAAC;AAAA,IAC3F,KAAK,uBAAuB,OAAO,eAAe,GAAG,UAAU;AAAA,IAC/D,KAAK,SAAS,YAAY,WAAW,cAAc,GAAG,aAAa;AAAA,IACnE,KAAK,oBAAoB,IAAI,UAAU;AAAA,IACvC,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,aAAa,CAAC,IAAI;AAAA,IAChB,OAAO,KAAK,kBAAkB,IAAI,EAAE;AAAA;AAAA,EAEtC,MAAM,CAAC,IAAI;AAAA,IACT,IAAI,CAAC,IAAI;AAAA,MACP;AAAA,IACF;AAAA,IACA,IAAI,KAAK,kBAAkB,IAAI,EAAE,GAAG;AAAA,MAClC,MAAM,MAAM,KAAK,kBAAkB,IAAI,EAAE;AAAA,MACzC,IAAI,KAAK;AAAA,QACP,IAAI,IAAI,aAAa,GAAG;AAAA,UACtB,KAAK,mBAAmB,CAAC,IAAI,UAAU;AAAA,QACzC;AAAA,QACA,MAAM,kBAAkB,IAAI,cAAc;AAAA,QAC1C,KAAK,SAAS,YAAY,eAAe;AAAA,QACzC,KAAK,cAAc;AAAA,QACnB,IAAI,SAAS;AAAA,QACb,IAAI,SAAS;AAAA,QACb,KAAK,KAAK,wBAAwB,GAAG;AAAA,QACrC,KAAK,kBAAkB,OAAO,EAAE;AAAA,QAChC,MAAM,QAAQ,KAAK,uBAAuB,UAAU,CAAC,SAAS,KAAK,OAAO,EAAE;AAAA,QAC5E,IAAI,UAAU,IAAI;AAAA,UAChB,KAAK,uBAAuB,OAAO,OAAO,CAAC;AAAA,QAC7C;AAAA,QACA,MAAM,cAAc,KAAK,uBAAuB,UAAU,CAAC,SAAS,KAAK,OAAO,EAAE;AAAA,QAClF,IAAI,gBAAgB,IAAI;AAAA,UACtB,KAAK,uBAAuB,OAAO,aAAa,CAAC;AAAA,QACnD;AAAA,QACA,KAAK,2BAA2B;AAAA,MAClC;AAAA,IACF;AAAA;AAAA,EAEF,QAAQ,GAAG;AAAA,EACX,WAAW,GAAG;AAAA,IACZ,OAAO,CAAC,GAAG,KAAK,sBAAsB;AAAA;AAAA,EAExC,gBAAgB,GAAG;AAAA,IACjB,OAAO,KAAK,uBAAuB;AAAA;AAAA,EAErC,YAAY,CAAC,WAAW,aAAa,CAAC,GAAG;AAAA,IACvC,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,KAAK,SAAS,SAAS;AAAA,IACvB,IAAI,KAAK;AAAA,MACP;AAAA,IACF,KAAK,iBAAiB;AAAA,IACtB,IAAI,KAAK,oBAAoB,OAAO,GAAG;AAAA,MACrC,WAAW,SAAS,KAAK,qBAAqB;AAAA,QAC5C,IAAI,CAAC,MAAM,aAAa;AAAA,UACtB,MAAM,iBAAiB;AAAA,QACzB;AAAA,MACF;AAAA,MACA,KAAK,oBAAoB,MAAM;AAAA,IACjC;AAAA,IACA,IAAI,KAAK;AAAA,MACP;AAAA,IACF,MAAM,oBAAoB,KAAK,WAAW;AAAA,IAC1C,IAAI,mBAAmB;AAAA,MACrB,WAAW,KAAK,EAAE,QAAQ,eAAe,SAAS,KAAK,SAAS,CAAC;AAAA,IACnE;AAAA,IACA,WAAW,KAAK,EAAE,QAAQ,UAAU,YAAY,KAAK,CAAC;AAAA,IACtD,KAAK,mBAAmB;AAAA,IACxB,MAAM,oBAAoB,KAAK,cAAc,aAAa,KAAK,QAAQ,KAAK,KAAK,SAAS;AAAA,IAC1F,IAAI,mBAAmB;AAAA,MACrB,MAAM,cAAc,KAAK,eAAe;AAAA,MACxC,WAAW,KAAK;AAAA,QACd,QAAQ;AAAA,QACR,GAAG,YAAY;AAAA,QACf,GAAG,YAAY;AAAA,QACf,OAAO,YAAY;AAAA,QACnB,QAAQ,YAAY;AAAA,QACpB,SAAS,KAAK;AAAA,QACd,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,IACA,MAAM,kBAAkB,KAAK,oBAAoB;AAAA,IACjD,WAAW,SAAS,KAAK,wBAAwB;AAAA,MAC/C,IAAI,CAAC,gBAAgB,SAAS,MAAM,GAAG,GAAG;AAAA,QACxC,MAAM,iBAAiB;AAAA,QACvB;AAAA,MACF;AAAA,MACA,MAAM,aAAa,WAAW,UAAU;AAAA,IAC1C;AAAA,IACA,IAAI,mBAAmB;AAAA,MACrB,WAAW,KAAK,EAAE,QAAQ,iBAAiB,CAAC;AAAA,IAC9C;AAAA,IACA,IAAI,mBAAmB;AAAA,MACrB,WAAW,KAAK,EAAE,QAAQ,aAAa,CAAC;AAAA,IAC1C;AAAA;AAAA,EAEF,MAAM,CAAC,QAAQ,WAAW;AAAA,IACxB,IAAI,eAAe;AAAA,IACnB,IAAI,KAAK,YAAY,KAAK,aAAa;AAAA,MACrC,eAAe,KAAK;AAAA,IACtB;AAAA,IACA,IAAI,KAAK,cAAc;AAAA,MACrB,KAAK,aAAa,KAAK,MAAM,cAAc,SAAS;AAAA,IACtD;AAAA,IACA,KAAK,WAAW,cAAc,SAAS;AAAA,IACvC,IAAI,KAAK,aAAa;AAAA,MACpB,KAAK,YAAY,KAAK,MAAM,cAAc,SAAS;AAAA,IACrD;AAAA,IACA,KAAK,UAAU;AAAA,IACf,KAAK,KAAK,aAAa,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK,QAAQ,KAAK,GAAG;AAAA,IACxE,IAAI,KAAK,YAAY,KAAK,aAAa;AAAA,MACrC,OAAO,gBAAgB,KAAK,GAAG,KAAK,GAAG,KAAK,WAAW;AAAA,IACzD;AAAA;AAAA,EAEF,mBAAmB,GAAG;AAAA,IACpB,OAAO,KAAK,uBAAuB,IAAI,CAAC,UAAU,MAAM,GAAG;AAAA;AAAA,EAE7D,QAAQ,CAAC,WAAW;AAAA,EACpB,cAAc,GAAG;AAAA,IACf,OAAO;AAAA,MACL,GAAG,KAAK,WAAW,IAAI,KAAK;AAAA,MAC5B,GAAG,KAAK,WAAW,IAAI,KAAK;AAAA,MAC5B,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,IACf;AAAA;AAAA,EAEF,UAAU,CAAC,QAAQ,WAAW;AAAA,MAC1B,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,EAEd,OAAO,GAAG;AAAA,IACR,IAAI,KAAK,cAAc;AAAA,MACrB;AAAA,IACF;AAAA,IACA,KAAK,eAAe;AAAA,IACpB,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,OAAO,KAAK,EAAE;AAAA,IAC5B;AAAA,IACA,IAAI,KAAK,aAAa;AAAA,MACpB,KAAK,YAAY,QAAQ;AAAA,MACzB,KAAK,cAAc;AAAA,IACrB;AAAA,IACA,WAAW,SAAS,KAAK,wBAAwB;AAAA,MAC/C,KAAK,OAAO,MAAM,EAAE;AAAA,IACtB;AAAA,IACA,KAAK,yBAAyB,CAAC;AAAA,IAC/B,KAAK,kBAAkB,MAAM;AAAA,IAC7B,WAAW,oBAAoB,OAAO,KAAK,GAAG;AAAA,IAC9C,KAAK,KAAK;AAAA,IACV,KAAK,mBAAmB;AAAA,IACxB,KAAK,YAAY;AAAA,IACjB,IAAI;AAAA,MACF,KAAK,SAAS,KAAK;AAAA,MACnB,OAAO,GAAG;AAAA;AAAA,EAEd,kBAAkB,GAAG;AAAA,IACnB,MAAM,WAAW,CAAC,GAAG,KAAK,sBAAsB;AAAA,IAChD,WAAW,SAAS,UAAU;AAAA,MAC5B,MAAM,mBAAmB;AAAA,IAC3B;AAAA,IACA,KAAK,QAAQ;AAAA;AAAA,EAEf,WAAW,GAAG;AAAA,EACd,iBAAiB,CAAC,OAAO;AAAA,IACvB,KAAK,gBAAgB,KAAK,MAAM,KAAK;AAAA,IACrC,KAAK,gBAAgB,MAAM,OAAO,KAAK,MAAM,KAAK;AAAA,IAClD,KAAK,aAAa,KAAK;AAAA,IACvB,IAAI,KAAK,UAAU,CAAC,MAAM,oBAAoB;AAAA,MAC5C,KAAK,OAAO,kBAAkB,KAAK;AAAA,IACrC;AAAA;AAAA,EAEF,YAAY,CAAC,OAAO;AAAA,MAChB,OAAO,CAAC,SAAS;AAAA,IACnB,IAAI;AAAA,MACF,KAAK,iBAAiB;AAAA,IAEtB;AAAA,WAAK,iBAAiB;AAAA;AAAA,MAEtB,WAAW,CAAC,SAAS;AAAA,IACvB,IAAI;AAAA,MACF,KAAK,gBAAgB,UAAU;AAAA,IAE/B;AAAA,aAAO,KAAK,gBAAgB;AAAA;AAAA,MAE5B,SAAS,CAAC,SAAS;AAAA,IACrB,IAAI;AAAA,MACF,KAAK,gBAAgB,QAAQ;AAAA,IAE7B;AAAA,aAAO,KAAK,gBAAgB;AAAA;AAAA,MAE5B,WAAW,CAAC,SAAS;AAAA,IACvB,IAAI;AAAA,MACF,KAAK,gBAAgB,UAAU;AAAA,IAE/B;AAAA,aAAO,KAAK,gBAAgB;AAAA;AAAA,MAE5B,WAAW,CAAC,SAAS;AAAA,IACvB,IAAI;AAAA,MACF,KAAK,gBAAgB,UAAU;AAAA,IAE/B;AAAA,aAAO,KAAK,gBAAgB;AAAA;AAAA,MAE5B,cAAc,CAAC,SAAS;AAAA,IAC1B,IAAI;AAAA,MACF,KAAK,gBAAgB,cAAc;AAAA,IAEnC;AAAA,aAAO,KAAK,gBAAgB;AAAA;AAAA,MAE5B,WAAW,CAAC,SAAS;AAAA,IACvB,IAAI;AAAA,MACF,KAAK,gBAAgB,UAAU;AAAA,IAE/B;AAAA,aAAO,KAAK,gBAAgB;AAAA;AAAA,MAE5B,WAAW,CAAC,SAAS;AAAA,IACvB,IAAI;AAAA,MACF,KAAK,gBAAgB,UAAU;AAAA,IAE/B;AAAA,aAAO,KAAK,gBAAgB;AAAA;AAAA,MAE5B,UAAU,CAAC,SAAS;AAAA,IACtB,IAAI;AAAA,MACF,KAAK,gBAAgB,SAAS;AAAA,IAE9B;AAAA,aAAO,KAAK,gBAAgB;AAAA;AAAA,MAE5B,aAAa,CAAC,SAAS;AAAA,IACzB,IAAI;AAAA,MACF,KAAK,gBAAgB,YAAY;AAAA,IAEjC;AAAA,aAAO,KAAK,gBAAgB;AAAA;AAAA,MAE5B,OAAO,CAAC,SAAS;AAAA,IACnB,KAAK,iBAAiB;AAAA;AAAA,MAEpB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,SAAS,CAAC,SAAS;AAAA,IACrB,IAAI;AAAA,MACF,KAAK,cAAc,UAAU;AAAA,IAE7B;AAAA,aAAO,KAAK,cAAc;AAAA;AAAA,MAE1B,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,cAAc;AAAA;AAAA,MAExB,YAAY,CAAC,SAAS;AAAA,IACxB,KAAK,sBAAsB;AAAA;AAAA,MAEzB,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,EAEd,iBAAiB,CAAC,SAAS;AAAA,IACzB,KAAK,UAAU,QAAQ;AAAA,IACvB,KAAK,cAAc,QAAQ;AAAA,IAC3B,KAAK,YAAY,QAAQ;AAAA,IACzB,KAAK,cAAc,QAAQ;AAAA,IAC3B,KAAK,cAAc,QAAQ;AAAA,IAC3B,KAAK,iBAAiB,QAAQ;AAAA,IAC9B,KAAK,cAAc,QAAQ;AAAA,IAC3B,KAAK,cAAc,QAAQ;AAAA,IAC3B,KAAK,aAAa,QAAQ;AAAA,IAC1B,KAAK,gBAAgB,QAAQ;AAAA,IAC7B,KAAK,UAAU,QAAQ;AAAA,IACvB,KAAK,YAAY,QAAQ;AAAA,IACzB,KAAK,eAAe,QAAQ;AAAA;AAEhC;AAAA;AAEA,MAAM,uBAAuB,WAAW;AAAA,EACtC,aAAa,CAAC;AAAA,EACd,WAAW,CAAC,KAAK;AAAA,IACf,MAAM,KAAK,EAAE,IAAI,YAAY,QAAQ,GAAG,SAAS,MAAM,OAAO,IAAI,OAAO,QAAQ,IAAI,QAAQ,cAAc,KAAK,CAAC;AAAA,IACjH,IAAI,KAAK,UAAU;AAAA,MACjB,KAAK,SAAS,KAAK;AAAA,IACrB;AAAA,IACA,KAAK,WAAW,YAAY,KAAK,OAAO,UAAU;AAAA,IAClD,KAAK,SAAS,SAAS,IAAI,KAAK;AAAA,IAChC,KAAK,SAAS,UAAU,IAAI,MAAM;AAAA,IAClC,KAAK,SAAS,iBAAiB,cAAc,MAAM;AAAA,IACnD,KAAK,gBAAgB;AAAA;AAAA,EAEvB,MAAM,CAAC,QAAQ,WAAW;AAAA,IACxB,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,WAAW,cAAc,KAAK,KAAK,mBAAmB,GAAG;AAAA,MACvD,WAAW,iBAAiB,KAAK,UAAU;AAAA,IAC7C;AAAA,IACA,IAAI,KAAK,SAAS,QAAQ,GAAG;AAAA,MAC3B,KAAK,gBAAgB;AAAA,IACvB;AAAA,IACA,KAAK,WAAW,SAAS;AAAA,IACzB,KAAK,aAAa,WAAW,KAAK,UAAU;AAAA,IAC5C,KAAK,KAAK,yBAAyB;AAAA,IACnC,SAAS,IAAI,EAAE,IAAI,KAAK,WAAW,QAAQ,KAAK;AAAA,MAC9C,MAAM,UAAU,KAAK,WAAW;AAAA,MAChC,QAAQ,QAAQ;AAAA,aACT;AAAA,UACH,IAAI,CAAC,QAAQ,WAAW,aAAa;AAAA,YACnC,QAAQ,WAAW,OAAO,QAAQ,SAAS;AAAA,UAC7C;AAAA,UACA;AAAA,aACG;AAAA,UACH,OAAO,gBAAgB,QAAQ,GAAG,QAAQ,GAAG,QAAQ,OAAO,QAAQ,MAAM;AAAA,UAC1E,KAAK,KAAK,uBAAuB,QAAQ,SAAS,QAAQ,SAAS,QAAQ,OAAO,QAAQ,MAAM;AAAA,UAChG;AAAA,aACG;AAAA,UACH,OAAO,eAAe;AAAA,UACtB,KAAK,KAAK,sBAAsB;AAAA,UAChC;AAAA,aACG;AAAA,UACH,OAAO,YAAY,QAAQ,OAAO;AAAA,UAClC;AAAA,aACG;AAAA,UACH,OAAO,WAAW;AAAA,UAClB;AAAA;AAAA,IAEN;AAAA;AAAA,EAEF,kBAAkB,CAAC,OAAO;AAAA,IACxB,MAAM,WAAW,KAAK;AAAA,IACtB,KAAK,cAAc;AAAA,IACnB,IAAI,aAAa,KAAK,KAAK,aAAa,GAAG;AAAA,MACzC,KAAK,KAAK,YAAY;AAAA,IACxB,EAAO,SAAI,WAAW,KAAK,KAAK,eAAe,GAAG;AAAA,MAChD,KAAK,KAAK,SAAS;AAAA,IACrB;AAAA;AAAA,EAEF,eAAe,GAAG;AAAA,IAChB,KAAK,SAAS,gBAAgB,KAAK,OAAO,KAAK,QAAQ,UAAU,GAAG;AAAA,IACpE,KAAK,KAAK,gBAAqC;AAAA;AAAA,EAEjD,MAAM,CAAC,OAAO,QAAQ;AAAA,IACpB,KAAK,QAAQ;AAAA,IACb,KAAK,SAAS;AAAA,IACd,KAAK,KAAK,WAAyB,EAAE,OAAO,OAAO,CAAC;AAAA;AAExD;AAIA,IAAI,eAAe,OAAO,IAAI,qBAAqB;AACnD,SAAS,uBAAuB,CAAC,OAAO;AAAA,EACtC,OAAO,OAAO,UAAU,cAAc,MAAM,aAAa,WAAW,UAAU,cAAc,MAAM,SAAS;AAAA;AAE7G,SAAS,eAAe,CAAC,UAAU;AAAA,EACjC,MAAM,SAAS,CAAC;AAAA,EAChB,WAAW,SAAS,UAAU;AAAA,IAC5B,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MACxB,OAAO,KAAK,GAAG,gBAAgB,KAAK,CAAC;AAAA,IACvC,EAAO,SAAI,UAAU,QAAQ,UAAU,aAAa,UAAU,OAAO;AAAA,MACnE,OAAO,KAAK,KAAK;AAAA,IACnB;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAET,SAAS,CAAC,CAAC,MAAM,UAAU,UAAU;AAAA,EACnC,IAAI,OAAO,SAAS,YAAY;AAAA,IAC9B,MAAM,IAAI,UAAU,oCAAoC;AAAA,EAC1D;AAAA,EACA,MAAM,QAAQ;AAAA,KACX,eAAe;AAAA,IAChB;AAAA,IACA;AAAA,IACA,UAAU,gBAAgB,QAAQ;AAAA,IAClC,gBAAgB,CAAC;AAAA,EACnB;AAAA,EACA,IAAI,wBAAwB,IAAI,GAAG;AAAA,IACjC,OAAO,IAAI,MAAM,OAAO;AAAA,MACtB,GAAG,CAAC,QAAQ,MAAM,UAAU;AAAA,QAC1B,IAAI,QAAQ,QAAQ;AAAA,UAClB,OAAO,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAAA,QAC3C;AAAA,QACA,IAAI,OAAO,SAAS,UAAU;AAAA,UAC5B,MAAM,YAAY,KAAK;AAAA,UACvB,MAAM,YAAY,cAAc,OAAO,UAAU,UAAU,cAAc,OAAO,yBAAyB,WAAW,IAAI,KAAK,OAAO,yBAAyB,OAAO,eAAe,SAAS,GAAG,IAAI;AAAA,UACnM,IAAI,WAAW;AAAA,YACb,OAAO,IAAI,SAAS;AAAA,cAClB,OAAO,iBAAiB,OAAO,kBAAkB,CAAC;AAAA,cAClD,OAAO,eAAe,KAAK,EAAE,QAAQ,MAAM,KAAK,CAAC;AAAA,cACjD,OAAO;AAAA;AAAA,UAEX;AAAA,QACF;AAAA,QACA,OAAO,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAAA;AAAA,MAE3C,GAAG,CAAC,QAAQ,MAAM,OAAO,UAAU;AAAA,QACjC,IAAI,OAAO,SAAS,YAAY,wBAAwB,IAAI,GAAG;AAAA,UAC7D,MAAM,YAAY,KAAK;AAAA,UACvB,MAAM,aAAa,OAAO,yBAAyB,WAAW,IAAI,KAAK,OAAO,yBAAyB,OAAO,eAAe,SAAS,GAAG,IAAI;AAAA,UAC7I,IAAI,cAAc,WAAW,KAAK;AAAA,YAChC,OAAO,iBAAiB,OAAO,kBAAkB,CAAC;AAAA,YAClD,OAAO,eAAe,KAAK,EAAE,QAAQ,MAAM,MAAM,CAAC,KAAK,GAAG,YAAY,KAAK,CAAC;AAAA,YAC5E,OAAO;AAAA,UACT;AAAA,QACF;AAAA,QACA,OAAO,QAAQ,IAAI,QAAQ,MAAM,OAAO,QAAQ;AAAA;AAAA,IAEpD,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAET,SAAS,OAAO,CAAC,MAAM;AAAA,EACrB,OAAO,QAAQ,KAAK;AAAA;AAEtB,SAAS,mBAAmB,CAAC,KAAK,MAAM;AAAA,EACtC,IAAI,aAAa,IAAI;AAAA,IACnB,OAAO;AAAA,EACT,IAAI,QAAQ,IAAI;AAAA,IACd,OAAO,YAAY,KAAK,IAAI;AAAA,EAC9B,IAAI,MAAM;AAAA,IACR,QAAQ,KAAK,gDAAgD,KAAK,QAAQ,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAAA,EAC/F;AAAA,EACA,OAAO;AAAA;AAET,SAAS,iBAAiB,CAAC,UAAU,aAAa;AAAA,EAChD,IAAI,CAAC,eAAe,OAAO,KAAK,WAAW,EAAE,WAAW;AAAA,IACtD,OAAO;AAAA,EACT,MAAM,kBAAkB,IAAI;AAAA,EAC5B,MAAM,gBAAgB,CAAC,OAAO;AAAA,IAC5B,IAAI,gBAAgB,IAAI,EAAE,GAAG;AAAA,MAC3B,MAAM,SAAS,gBAAgB,IAAI,EAAE;AAAA,MACrC,IAAI,WAAW,WAAW;AAAA,QACxB,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,MAAM,aAAa,SAAS,mBAAmB,EAAE;AAAA,IACjD,IAAI,YAAY;AAAA,MACd,gBAAgB,IAAI,IAAI,UAAU;AAAA,IACpC;AAAA,IACA,OAAO;AAAA;AAAA,EAET,MAAM,QAAQ,IAAI,MAAM,UAAU;AAAA,IAChC,GAAG,CAAC,QAAQ,MAAM,UAAU;AAAA,MAC1B,IAAI,OAAO,SAAS,YAAY,YAAY,OAAO;AAAA,QACjD,MAAM,OAAO,cAAc,YAAY,KAAK;AAAA,QAC5C,IAAI,MAAM;AAAA,UACR,MAAM,QAAQ,KAAK;AAAA,UACnB,IAAI,OAAO,UAAU,YAAY;AAAA,YAC/B,OAAO,MAAM,KAAK,IAAI;AAAA,UACxB;AAAA,UACA,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,OAAO,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAAA;AAAA,IAE3C,GAAG,CAAC,QAAQ,MAAM,OAAO,UAAU;AAAA,MACjC,IAAI,OAAO,SAAS,YAAY,YAAY,OAAO;AAAA,QACjD,MAAM,OAAO,cAAc,YAAY,KAAK;AAAA,QAC5C,IAAI,MAAM;AAAA,UACR,OAAO,QAAQ,IAAI,MAAM,MAAM,KAAK;AAAA,QACtC;AAAA,MACF;AAAA,MACA,OAAO,QAAQ,IAAI,QAAQ,MAAM,OAAO,QAAQ;AAAA;AAAA,EAEpD,CAAC;AAAA,EACD,OAAO;AAAA;AAET,SAAS,WAAW,CAAC,KAAK,MAAM;AAAA,EAC9B,IAAI,aAAa,IAAI;AAAA,IACnB,OAAO;AAAA,EACT,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACrC,MAAM,IAAI,UAAU,mCAAmC;AAAA,EACzD;AAAA,EACA,MAAM,QAAQ;AAAA,EACd,QAAQ,MAAM,UAAU;AAAA,EACxB,MAAM,WAAW,gBAAgB,MAAM,YAAY,CAAC,CAAC;AAAA,EACrD,MAAM,cAAc,MAAM;AAAA,EAC1B,IAAI,wBAAwB,IAAI,GAAG;AAAA,IACjC,MAAM,WAAW,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC;AAAA,IAC1C,WAAW,SAAS,UAAU;AAAA,MAC5B,IAAI,aAAa,KAAK,GAAG;AAAA,QACvB,SAAS,IAAI,KAAK;AAAA,MACpB,EAAO;AAAA,QACL,MAAM,UAAU,YAAY,KAAK,KAAK;AAAA,QACtC,SAAS,IAAI,OAAO;AAAA;AAAA,IAExB;AAAA,IACA,MAAM,oBAAoB,kBAAkB,UAAU,WAAW;AAAA,IACjE,MAAM,eAAe,MAAM;AAAA,IAC3B,IAAI,cAAc;AAAA,MAChB,WAAW,QAAQ,cAAc;AAAA,QAC/B,IAAI,KAAK,YAAY;AAAA,UACnB,kBAAkB,KAAK,UAAU,KAAK,KAAK;AAAA,QAC7C,EAAO;AAAA,UACL,kBAAkB,KAAK,QAAQ,MAAM,mBAAmB,KAAK,IAAI;AAAA;AAAA,MAErE;AAAA,IACF;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,MAAM,WAAW,KAAK,SAAS,CAAC,GAAG,QAAQ;AAAA,EAC3C,MAAM,OAAO,YAAY,KAAK,QAAQ;AAAA,EACtC,OAAO,kBAAkB,MAAM,WAAW;AAAA;AAE5C,SAAS,QAAQ,CAAC,SAAS,OAAO;AAAA,EAChC,IAAI,aAAa,KAAK,GAAG;AAAA,IACvB,OAAO,kBAAkB,OAAO,OAAO;AAAA,EACzC;AAAA,EACA,IAAI,CAAC,SAAS,OAAO,UAAU;AAAA,IAC7B,OAAO;AAAA,EACT,MAAM,gBAAgB,KAAK,MAAM,iBAAiB,CAAC,MAAM,QAAQ;AAAA,EACjE,OAAO;AAAA;AAAA;AAcT,MAAM,gBAAgB,cAAc;AAAA,EAClC,SAAS,CAAC;AAAA,EACV,WAAW,GAAG;AAAA,IACZ,MAAM;AAAA;AAAA,MAEJ,IAAI,GAAG;AAAA,IACT,OAAO,KAAK,OAAO;AAAA;AAAA,EAErB,KAAK,CAAC,QAAQ,MAAM;AAAA,IAClB,KAAK,OAAO,KAAK,EAAE,QAAQ,QAAQ,KAAK,CAAC;AAAA,IACzC,KAAK,KAAK,SAAS,QAAQ,IAAI;AAAA;AAAA,EAEjC,WAAW,GAAG;AAAA,IACZ,MAAM,SAAS,KAAK,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;AAAA,IACvD,KAAK,MAAM;AAAA,IACX,OAAO;AAAA;AAAA,EAET,KAAK,GAAG;AAAA,IACN,KAAK,SAAS,CAAC;AAAA;AAEnB;AAAA;AAEA,MAAM,+BAA+B,SAAS;AAAA,EAC5C;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,UAAU,QAAQ,OAAO,WAAW;AAAA,EACpC,OAAO,QAAQ,OAAO,QAAQ;AAAA,EAC9B,WAAW,CAAC,QAAQ,SAAS;AAAA,IAC3B,MAAM;AAAA,IACN,KAAK,SAAS;AAAA,IACd,KAAK,UAAU;AAAA;AAAA,EAEjB,MAAM,CAAC,OAAO,UAAU,UAAU;AAAA,IAChC,MAAM,OAAO,MAAM,SAAS;AAAA,IAC5B,KAAK,QAAQ,MAAM,KAAK,QAAQ,IAAI;AAAA,IACpC,SAAS;AAAA;AAAA,EAEX,aAAa,GAAG;AAAA,IACd,OAAO,QAAQ,OAAO,gBAAgB,KAAK;AAAA;AAE/C;AAGA,IAAI,oBAAoB;AAAA,EACtB,OAAO;AAAA,EACP,KAAK;AACP;AACA,SAAS,eAAe,CAAC,UAAU,QAAQ;AAAA,EACzC,OAAO,KAAK,aAAa,OAAO;AAAA;AAElC,SAAS,gBAAgB,CAAC,UAAU,QAAQ;AAAA,EAC1C,MAAM,MAAM,IAAI;AAAA,EAChB,WAAW,WAAW,UAAU;AAAA,IAC9B,MAAM,MAAM,iBAAiB,OAAO;AAAA,IACpC,IAAI,IAAI,KAAK,OAAO;AAAA,EACtB;AAAA,EACA,WAAW,WAAW,QAAQ;AAAA,IAC5B,MAAM,MAAM,iBAAiB,OAAO;AAAA,IACpC,IAAI,IAAI,KAAK,OAAO;AAAA,EACtB;AAAA,EACA,OAAO,MAAM,KAAK,IAAI,OAAO,CAAC;AAAA;AAEhC,SAAS,gBAAgB,CAAC,SAAS;AAAA,EACjC,OAAO,GAAG,QAAQ,QAAQ,QAAQ,OAAO,IAAI,KAAK,QAAQ,QAAQ,IAAI,KAAK,QAAQ,OAAO,IAAI,KAAK,QAAQ,QAAQ,IAAI;AAAA;AAEzH,SAAS,mBAAmB,CAAC,UAAU,UAAU;AAAA,EAC/C,MAAM,MAAM,IAAI;AAAA,EAChB,MAAM,UAAU,YAAY,CAAC;AAAA,EAC7B,WAAW,WAAW,UAAU;AAAA,IAC9B,MAAM,MAAM,iBAAiB,OAAO;AAAA,IACpC,IAAI,IAAI,KAAK,QAAQ,MAAM;AAAA,EAC7B;AAAA,EACA,WAAW,WAAW,UAAU;AAAA,IAC9B,MAAM,iBAAiB,QAAQ,QAAQ,SAAS,QAAQ;AAAA,IACxD,IAAI,mBAAmB,QAAQ,MAAM;AAAA,MACnC,MAAM,aAAa,iBAAiB,KAAK,SAAS,MAAM,eAAe,CAAC;AAAA,MACxE,IAAI,IAAI,YAAY,QAAQ,MAAM;AAAA,IACpC;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAET,SAAS,kBAAkB,CAAC,SAAS;AAAA,EACnC,MAAM,QAAQ,CAAC;AAAA,EACf,IAAI,QAAQ;AAAA,IACV,MAAM,KAAK,MAAM;AAAA,EACnB,IAAI,QAAQ;AAAA,IACV,MAAM,KAAK,OAAO;AAAA,EACpB,IAAI,QAAQ;AAAA,IACV,MAAM,KAAK,MAAM;AAAA,EACnB,IAAI,QAAQ;AAAA,IACV,MAAM,KAAK,OAAO;AAAA,EACpB,MAAM,KAAK,QAAQ,IAAI;AAAA,EACvB,OAAO,MAAM,KAAK,GAAG;AAAA;AAIvB,SAAS,aAAa,GAAG;AAAA,EACvB,MAAM,MAAM,IAAI;AAAA,EAChB,MAAM,aAAa,IAAI,OAAO,MAAM;AAAA,CACrC,EAAE,MAAM,CAAC,KAAK,CAAC;AAAA,EACd,IAAI,CAAC,WAAW;AAAA,IACd,OAAO;AAAA,EACT,MAAM,aAAa,WAAW,GAAG,KAAK;AAAA,EACtC,MAAM,QAAQ;AAAA,EACd,MAAM,QAAQ,WAAW,MAAM,KAAK;AAAA,EACpC,IAAI,CAAC;AAAA,IACH,OAAO;AAAA,EACT,MAAM,eAAe,MAAM,MAAM;AAAA,EACjC,MAAM,WAAW,MAAM;AAAA,EACvB,MAAM,WAAW,SAAS,MAAM,OAAO,EAAE,IAAI,KAAK;AAAA,EAClD,MAAM,aAAa,SAAS,MAAM,IAAI,EAAE,KAAK;AAAA,EAC7C,MAAM,eAAe,SAAS,MAAM,IAAI,EAAE,KAAK;AAAA,EAC/C,OAAO,EAAE,cAAc,UAAU,UAAU,YAAY,aAAa;AAAA;AAEtE,IAAI,UAAU,UAAU,kBAAkB,MAAM,IAAI,OAAO;AAC3D,eAAe;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AACD,eAAe;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AAAA;AAED,MAAM,6BAA6B,cAAc;AAAA,EAC/C,cAAc,CAAC;AAAA,EACf,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,MACf,UAAU,GAAG;AAAA,IACf,OAAO,KAAK;AAAA;AAAA,EAEd,WAAW,GAAG;AAAA,IACZ,MAAM;AAAA;AAAA,EAER,QAAQ,GAAG;AAAA,IACT,IAAI,CAAC,KAAK,kBAAkB;AAAA,MAC1B,KAAK,mBAAmB,OAAO;AAAA,IACjC;AAAA,IACA,KAAK,oBAAoB;AAAA,IACzB,KAAK,uBAAuB;AAAA;AAAA,EAE9B,mBAAmB,GAAG;AAAA,IACpB,IAAI,CAAC,IAAI;AAAA,MACP;AAAA,IACF,MAAM,aAAa,IAAI,uBAAuB,UAAU,OAAO;AAAA,IAC/D,MAAM,aAAa,IAAI,uBAAuB,UAAU,OAAO;AAAA,IAC/D,OAAO,UAAU,IAAI,QAAQ;AAAA,MAC3B,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,gBAAgB;AAAA,QACd,SAAS;AAAA,QACT,aAAa;AAAA,QACb,OAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA;AAAA,EAEH,sBAAsB,GAAG;AAAA,IACvB,QAAQ,MAAM,IAAI,SAAS;AAAA,MACzB,KAAK,gBAAgB,OAAiB,GAAG,IAAI;AAAA;AAAA,IAE/C,QAAQ,OAAO,IAAI,SAAS;AAAA,MAC1B,KAAK,gBAAgB,QAAmB,GAAG,IAAI;AAAA;AAAA,IAEjD,QAAQ,OAAO,IAAI,SAAS;AAAA,MAC1B,KAAK,gBAAgB,QAAmB,GAAG,IAAI;AAAA;AAAA,IAEjD,QAAQ,QAAQ,IAAI,SAAS;AAAA,MAC3B,KAAK,gBAAgB,SAAqB,GAAG,IAAI;AAAA;AAAA,IAEnD,QAAQ,QAAQ,IAAI,SAAS;AAAA,MAC3B,KAAK,gBAAgB,SAAqB,GAAG,IAAI;AAAA;AAAA;AAAA,EAGrD,oBAAoB,CAAC,SAAS;AAAA,IAC5B,KAAK,qBAAqB;AAAA;AAAA,EAE5B,YAAY,GAAG;AAAA,IACb,KAAK,cAAc,CAAC;AAAA;AAAA,EAEtB,iBAAiB,CAAC,SAAS;AAAA,IACzB,KAAK,kBAAkB;AAAA;AAAA,EAEzB,UAAU,GAAG;AAAA,IACX,KAAK,uBAAuB;AAAA;AAAA,EAE9B,sBAAsB,GAAG;AAAA,IACvB,IAAI,KAAK,kBAAkB;AAAA,MACzB,OAAO,UAAU,KAAK;AAAA,IACxB;AAAA,IACA,KAAK,oBAAoB;AAAA;AAAA,EAE3B,WAAW,CAAC,UAAU,MAAM;AAAA,IAC1B,MAAM,aAAa,KAAK,qBAAqB,cAAc,IAAI;AAAA,IAC/D,MAAM,WAAW,CAAC,IAAI,MAAM,OAAO,MAAM,UAAU;AAAA,IACnD,IAAI,KAAK,iBAAiB;AAAA,MACxB,IAAI,KAAK,YAAY,UAAU,KAAK,gBAAgB;AAAA,QAClD,KAAK,YAAY,MAAM;AAAA,MACzB;AAAA,MACA,KAAK,YAAY,KAAK,QAAQ;AAAA,IAChC;AAAA,IACA,OAAO;AAAA;AAAA,EAET,eAAe,CAAC,UAAU,MAAM;AAAA,IAC9B,IAAI,KAAK,YAAY,UAAU,KAAK,gBAAgB;AAAA,MAClD,KAAK,YAAY,MAAM;AAAA,IACzB;AAAA,IACA,MAAM,QAAQ,KAAK,YAAY,OAAO,GAAG,IAAI;AAAA,IAC7C,KAAK,KAAK,SAAS,KAAK;AAAA;AAAA,EAE1B,OAAO,GAAG;AAAA,IACR,KAAK,WAAW;AAAA;AAEpB;AACA,IAAI,uBAAuB,UAAU,wBAAwB,MAAM;AAAA,EACjE,MAAM,wBAAwB,IAAI;AAAA,EAClC,QAAQ,GAAG,QAAQ,MAAM;AAAA,IACvB,sBAAsB,QAAQ;AAAA,GAC/B;AAAA,EACD,OAAO;AAAA,CACR;AACD,IAAI;AAAA,CACH,CAAC,qBAAqB;AAAA,EACrB,iBAAiB,SAAS;AAAA,EAC1B,iBAAiB,YAAY;AAAA,EAC7B,iBAAiB,UAAU;AAAA,EAC3B,iBAAiB,WAAW;AAAA,GAC3B,oBAAoB,CAAC,CAAC;AACzB,IAAI,4BAA4B;AAAA,EAC9B,EAAE,MAAM,MAAM,QAAQ,YAAY;AAAA,EAClC,EAAE,MAAM,QAAQ,QAAQ,cAAc;AAAA,EACtC,EAAE,MAAM,MAAM,OAAO,MAAM,QAAQ,gBAAgB;AAAA,EACnD,EAAE,MAAM,QAAQ,OAAO,MAAM,QAAQ,mBAAmB;AAAA,EACxD,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,oBAAoB;AAAA,EACrD,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,gBAAgB;AAAA,EACjD,EAAE,MAAM,KAAK,QAAQ,gBAAgB;AAAA,EACrC,EAAE,MAAM,KAAK,OAAO,MAAM,QAAQ,gBAAgB;AAAA,EAClD,EAAE,MAAM,KAAK,QAAQ,gBAAgB;AAAA,EACrC,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,YAAY;AAAA,EAC7C,EAAE,MAAM,KAAK,MAAM,MAAM,OAAO,MAAM,QAAQ,iBAAiB;AACjE;AACA,IAAI,0BAA0B;AAAA,EAC5B,UAAU;AAAA,EACV,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,iBAAiB,KAAK,WAAW,KAAK,KAAK,KAAK,GAAG;AAAA,EACnD,kBAAkB;AAAA,EAClB,OAAO;AAAA,EACP,eAAe,KAAK,WAAW,MAAM,MAAM,MAAM,GAAG;AAAA,EACpD,mBAAmB;AAAA,EACnB,aAAa;AAAA,EACb,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,gBAAgB,KAAK,WAAW,KAAK,KAAK,KAAK,GAAG;AAAA,EAClD,iBAAiB;AACnB;AACA,IAAI,eAAe;AAAA;AAEnB,MAAM,wBAAwB,cAAc;AAAA,EAC1C,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,oBAAoB;AAAA,EACpB,cAAc;AAAA,EACd,WAAW;AAAA,EACX,WAAW;AAAA,EACX,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,mBAAmB;AAAA,EACnB,gBAAgB,CAAC;AAAA,EACjB,iBAAiB,CAAC;AAAA,EAClB,0BAA0B;AAAA,EAC1B;AAAA,EACA,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,oBAAoB;AAAA,IAClB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AAAA,EACA,sBAAsB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB,GAAG;AAAA,IAClB,KAAK,0BAA0B;AAAA,IAC/B,KAAK,SAAS,cAAc;AAAA;AAAA,EAE9B,kBAAkB,GAAG;AAAA,IACnB,MAAM,eAAe,KAAK,mBAAmB,OAAO,CAAC,MAAM,EAAE,WAAW,gBAAgB;AAAA,IACxF,MAAM,cAAc,aAAa,aAAa,SAAS;AAAA,IACvD,IAAI,aAAa;AAAA,MACf,MAAM,WAAW,mBAAmB,WAAW;AAAA,MAC/C,OAAO,UAAU;AAAA,IACnB;AAAA,IACA,OAAO;AAAA;AAAA,EAET;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,WAAW,CAAC,UAAU,UAAU,CAAC,GAAG;AAAA,IAClC,MAAM;AAAA,IACN,KAAK,WAAW;AAAA,IAChB,KAAK,UAAU,KAAK,4BAA4B,QAAQ;AAAA,IACxD,KAAK,aAAa,KAAK,eAAe,KAAK,IAAI;AAAA,IAC/C,KAAK,oBAAoB,KAAK,QAAQ;AAAA,IACtC,qBAAqB,qBAAqB,KAAK,iBAAiB;AAAA,IAChE,KAAK,YAAY,WAAW,KAAK,QAAQ,SAAS;AAAA,IAClD,KAAK,YAAY,WAAW,KAAK,QAAQ,SAAS;AAAA,IAClD,KAAK,aAAa,WAAW,KAAK,QAAQ,UAAU;AAAA,IACpD,KAAK,aAAa,WAAW,KAAK,QAAQ,UAAU;AAAA,IACpD,KAAK,eAAe,WAAW,KAAK,QAAQ,YAAY;AAAA,IACxD,KAAK,kBAAkB,WAAW,KAAK,QAAQ,eAAe;AAAA,IAC9D,KAAK,gBAAgB,WAAW,KAAK,QAAQ,aAAa;AAAA,IAC1D,KAAK,oBAAoB,WAAW,KAAK,QAAQ,qBAAqB,KAAK,QAAQ,YAAY;AAAA,IAC/F,KAAK,SAAS,KAAK,QAAQ;AAAA,IAC3B,KAAK,cAAc,WAAW,KAAK,QAAQ,WAAW;AAAA,IACtD,KAAK,iBAAiB,WAAW,KAAK,QAAQ,cAAc;AAAA,IAC5D,KAAK,kBAAkB,WAAW,KAAK,QAAQ,eAAe;AAAA,IAC9D,KAAK,eAAe,gBAAgB,mBAAmB,QAAQ,eAAe,CAAC,CAAC;AAAA,IAChF,KAAK,eAAe,QAAQ,eAAe,CAAC;AAAA,IAC5C,KAAK,qBAAqB,iBAAiB,2BAA2B,KAAK,YAAY;AAAA,IACvF,KAAK,kBAAkB,oBAAoB,KAAK,oBAAoB,KAAK,YAAY;AAAA,IACrF,KAAK,kBAAkB,KAAK,oBAAoB;AAAA,IAChD,KAAK,yBAAyB;AAAA,IAC9B,KAAK,gBAAgB,IAAI;AAAA,IACzB,KAAK,iBAAiB,CAAC,aAAa;AAAA,MAClC,KAAK,cAAc,QAAQ;AAAA;AAAA,IAE7B,qBAAqB,GAAG,SAAS,KAAK,cAAc;AAAA,IACpD,IAAI,IAAI,cAAc;AAAA,MACpB,KAAK,KAAK;AAAA,IACZ;AAAA;AAAA,EAEF,mBAAmB,GAAG;AAAA,IACpB,OAAO,IAAI,IAAI;AAAA,MACb,CAAC,aAAa,MAAM,KAAK,SAAS,CAAC;AAAA,MACnC,CAAC,eAAe,MAAM,KAAK,WAAW,CAAC;AAAA,MACvC,CAAC,iBAAiB,MAAM,KAAK,YAAY,CAAC;AAAA,MAC1C,CAAC,oBAAoB,MAAM,KAAK,qBAAqB,CAAC;AAAA,MACtD,CAAC,qBAAqB,MAAM,KAAK,iBAAiB,CAAC;AAAA,MACnD,CAAC,iBAAiB,MAAM,KAAK,aAAa,CAAC;AAAA,MAC3C,CAAC,iBAAiB,MAAM,KAAK,aAAa,CAAC;AAAA,MAC3C,CAAC,iBAAiB,MAAM,KAAK,aAAa,CAAC;AAAA,MAC3C,CAAC,aAAa,MAAM,KAAK,eAAe,CAAC;AAAA,MACzC,CAAC,kBAAkB,MAAM,KAAK,kBAAkB,CAAC;AAAA,IACnD,CAAC;AAAA;AAAA,EAEH,QAAQ,GAAG;AAAA,IACT,qBAAqB,SAAS;AAAA;AAAA,EAEhC,UAAU,GAAG;AAAA,IACX,qBAAqB,WAAW;AAAA;AAAA,EAElC,aAAa,CAAC,UAAU;AAAA,IACtB,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,KAAK,eAAe,KAAK,QAAQ;AAAA,IACjC,IAAI,KAAK,eAAe,SAAS,KAAK,QAAQ,eAAe;AAAA,MAC3D,KAAK,eAAe,OAAO,GAAG,KAAK,eAAe,SAAS,KAAK,QAAQ,aAAa;AAAA,IACvF;AAAA,IACA,MAAM,kBAAkB,KAAK,iBAAiB,QAAQ;AAAA,IACtD,KAAK,cAAc,KAAK,GAAG,eAAe;AAAA,IAC1C,IAAI,KAAK,cAAc,SAAS,KAAK,QAAQ,iBAAiB;AAAA,MAC5D,KAAK,cAAc,OAAO,GAAG,KAAK,cAAc,SAAS,KAAK,QAAQ,eAAe;AAAA,MACrF,MAAM,eAAe,KAAK,cAAc,SAAS,KAAK,QAAQ;AAAA,MAC9D,KAAK,iBAAiB,KAAK,IAAI,GAAG,KAAK,iBAAiB,YAAY;AAAA,IACtE;AAAA,IACA,IAAI,KAAK,oBAAoB;AAAA,MAC3B,KAAK,gBAAgB;AAAA,IACvB;AAAA,IACA,KAAK,kBAAkB;AAAA;AAAA,EAEzB,wBAAwB,CAAC,WAAW,YAAY;AAAA,IAC9C,MAAM,QAAQ,aAAa,KAAK,SAAS;AAAA,IACzC,MAAM,SAAS,cAAc,KAAK,SAAS;AAAA,IAC3C,MAAM,cAAc,KAAK,QAAQ,cAAc;AAAA,IAC/C,QAAQ,KAAK,QAAQ;AAAA,WACd;AAAA,QACH,KAAK,WAAW;AAAA,QAChB,KAAK,WAAW;AAAA,QAChB,KAAK,eAAe;AAAA,QACpB,KAAK,gBAAgB,KAAK,IAAI,GAAG,KAAK,MAAM,SAAS,WAAW,CAAC;AAAA,QACjE;AAAA,WACG;AAAA,QACH,KAAK,gBAAgB,KAAK,IAAI,GAAG,KAAK,MAAM,SAAS,WAAW,CAAC;AAAA,QACjE,KAAK,eAAe;AAAA,QACpB,KAAK,WAAW;AAAA,QAChB,KAAK,WAAW,SAAS,KAAK;AAAA,QAC9B;AAAA,WACG;AAAA,QACH,KAAK,eAAe,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,WAAW,CAAC;AAAA,QAC/D,KAAK,gBAAgB;AAAA,QACrB,KAAK,WAAW;AAAA,QAChB,KAAK,WAAW;AAAA,QAChB;AAAA,WACG;AAAA,QACH,KAAK,eAAe,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,WAAW,CAAC;AAAA,QAC/D,KAAK,gBAAgB;AAAA,QACrB,KAAK,WAAW;AAAA,QAChB,KAAK,WAAW,QAAQ,KAAK;AAAA,QAC7B;AAAA;AAAA,IAEJ,KAAK,mBAAmB,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,kBAAkB,KAAK,gBAAgB,CAAC,CAAC;AAAA;AAAA,EAE7F,cAAc,CAAC,OAAO;AAAA,IACpB,IAAI,MAAM,SAAS,UAAU;AAAA,MAC3B,KAAK,KAAK;AAAA,MACV;AAAA,IACF;AAAA,IACA,MAAM,aAAa,iBAAiB;AAAA,MAClC,MAAM,MAAM;AAAA,MACZ,MAAM,MAAM;AAAA,MACZ,OAAO,MAAM;AAAA,MACb,MAAM,MAAM;AAAA,MACZ,OAAO,MAAM;AAAA,MACb,QAAQ;AAAA,IACV,CAAC;AAAA,IACD,MAAM,SAAS,KAAK,gBAAgB,IAAI,UAAU;AAAA,IAClD,IAAI,QAAQ;AAAA,MACV,MAAM,UAAU,KAAK,gBAAgB,IAAI,MAAM;AAAA,MAC/C,IAAI,SAAS;AAAA,QACX,QAAQ;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EAEF,QAAQ,GAAG;AAAA,IACT,MAAM,gBAAgB,KAAK,IAAI,GAAG,KAAK,gBAAgB,CAAC;AAAA,IACxD,IAAI,KAAK,mBAAmB,GAAG;AAAA,MAC7B,KAAK;AAAA,MACL,KAAK,kBAAkB;AAAA,IACzB,EAAO,SAAI,KAAK,iBAAiB,GAAG;AAAA,MAClC,KAAK;AAAA,MACL,KAAK,qBAAqB;AAAA,MAC1B,KAAK,kBAAkB;AAAA,IACzB;AAAA,IACA,OAAO;AAAA;AAAA,EAET,UAAU,GAAG;AAAA,IACX,MAAM,mBAAmB,KAAK,cAAc;AAAA,IAC5C,MAAM,gBAAgB,KAAK,IAAI,GAAG,KAAK,gBAAgB,CAAC;AAAA,IACxD,MAAM,eAAe,KAAK,IAAI,GAAG,mBAAmB,aAAa;AAAA,IACjE,MAAM,oBAAoB,KAAK,mBAAmB,gBAAgB,KAAK,KAAK,iBAAiB,KAAK,mBAAmB,mBAAmB;AAAA,IACxI,IAAI,mBAAmB;AAAA,MACrB,KAAK;AAAA,MACL,KAAK,kBAAkB;AAAA,IACzB,EAAO,SAAI,KAAK,iBAAiB,cAAc;AAAA,MAC7C,KAAK;AAAA,MACL,KAAK,qBAAqB,KAAK,mBAAmB;AAAA,MAClD,KAAK,kBAAkB;AAAA,IACzB;AAAA,IACA,OAAO;AAAA;AAAA,EAET,WAAW,GAAG;AAAA,IACZ,IAAI,KAAK,iBAAiB,KAAK,KAAK,mBAAmB,GAAG;AAAA,MACxD,KAAK,iBAAiB;AAAA,MACtB,KAAK,mBAAmB;AAAA,MACxB,KAAK,qBAAqB,KAAK,cAAc,UAAU,KAAK,IAAI,GAAG,KAAK,gBAAgB,CAAC;AAAA,MACzF,KAAK,kBAAkB;AAAA,IACzB;AAAA,IACA,OAAO;AAAA;AAAA,EAET,oBAAoB,GAAG;AAAA,IACrB,MAAM,yBAAyB,KAAK,IAAI,GAAG,KAAK,gBAAgB,CAAC;AAAA,IACjE,MAAM,oBAAoB,KAAK,IAAI,GAAG,KAAK,cAAc,SAAS,sBAAsB;AAAA,IACxF,IAAI,KAAK,iBAAiB,qBAAqB,CAAC,KAAK,oBAAoB;AAAA,MACvE,KAAK,gBAAgB,IAAI;AAAA,MACzB,KAAK,kBAAkB;AAAA,IACzB;AAAA,IACA,OAAO;AAAA;AAAA,EAET,gBAAgB,GAAG;AAAA,IACjB,MAAM,uBAAuB,KAAK,WAAW,QAAQ,KAAK,QAAQ,QAAQ;AAAA,IAC1E,MAAM,aAAa,uBAAuB,IAAI,KAAK,WAAW,UAAU,KAAK,WAAW;AAAA,IACxF,KAAK,QAAQ,WAAW,KAAK,WAAW;AAAA,IACxC,KAAK,OAAO,KAAK,SAAS,OAAO,KAAK,SAAS,MAAM;AAAA,IACrD,OAAO;AAAA;AAAA,EAET,YAAY,GAAG;AAAA,IACb,MAAM,uBAAuB,KAAK,WAAW,QAAQ,KAAK,QAAQ,QAAQ;AAAA,IAC1E,MAAM,aAAa,uBAAuB,KAAK,KAAK,WAAW;AAAA,IAC/D,KAAK,QAAQ,WAAW,KAAK,WAAW;AAAA,IACxC,KAAK,OAAO,KAAK,SAAS,OAAO,KAAK,SAAS,MAAM;AAAA,IACrD,OAAO;AAAA;AAAA,EAET,YAAY,GAAG;AAAA,IACb,KAAK,QAAQ,cAAc,KAAK,IAAI,KAAK,KAAK,QAAQ,cAAc,CAAC;AAAA,IACrE,KAAK,OAAO,KAAK,SAAS,OAAO,KAAK,SAAS,MAAM;AAAA,IACrD,OAAO;AAAA;AAAA,EAET,YAAY,GAAG;AAAA,IACb,KAAK,QAAQ,cAAc,KAAK,IAAI,IAAI,KAAK,QAAQ,cAAc,CAAC;AAAA,IACpE,KAAK,OAAO,KAAK,SAAS,OAAO,KAAK,SAAS,MAAM;AAAA,IACrD,OAAO;AAAA;AAAA,EAET,cAAc,GAAG;AAAA,IACf,KAAK,eAAe;AAAA,IACpB,OAAO;AAAA;AAAA,EAET,iBAAiB,GAAG;AAAA,IAClB,KAAK,YAAY;AAAA,IACjB,OAAO;AAAA;AAAA,EAET,WAAW,GAAG;AAAA,IACZ,IAAI,KAAK;AAAA,MACP;AAAA,IACF,KAAK,SAAS,SAAS,GAAG,YAAY,KAAK,UAAU;AAAA,IACrD,KAAK,YAAY;AAAA;AAAA,EAEnB,WAAW,GAAG;AAAA,IACZ,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,KAAK,SAAS,SAAS,IAAI,YAAY,KAAK,UAAU;AAAA,IACtD,KAAK,YAAY;AAAA;AAAA,EAEnB,eAAe,CAAC,MAAM;AAAA,IACpB,OAAO,IAAI,KAAK,eAAe,SAAS;AAAA,MACtC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV,CAAC,EAAE,OAAO,IAAI;AAAA;AAAA,EAEhB,eAAe,CAAC,MAAM;AAAA,IACpB,OAAO,KAAK,IAAI,CAAC,QAAQ;AAAA,MACvB,IAAI,eAAe,OAAO;AAAA,QACxB,MAAM,aAAa;AAAA,QACnB,OAAO,UAAU,WAAW;AAAA,KAC/B,WAAW,QAAQ,GAAG,WAAW;AAAA,IAClC;AAAA,MACE;AAAA,MACA,IAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;AAAA,QAC3C,IAAI;AAAA,UACF,OAAO,MAAM,QAAQ,KAAK,EAAE,OAAO,EAAE,CAAC;AAAA,UACtC,OAAO,GAAG;AAAA,UACV,OAAO,OAAO,GAAG;AAAA;AAAA,MAErB;AAAA,MACA,IAAI;AAAA,QACF,OAAO,MAAM,QAAQ,KAAK,EAAE,OAAO,EAAE,CAAC;AAAA,QACtC,OAAO,GAAG;AAAA,QACV,OAAO,OAAO,GAAG;AAAA;AAAA,KAEpB,EAAE,KAAK,GAAG;AAAA;AAAA,EAEb,MAAM,CAAC,OAAO,QAAQ;AAAA,IACpB,KAAK,yBAAyB,OAAO,MAAM;AAAA,IAC3C,IAAI,KAAK,aAAa;AAAA,MACpB,KAAK,YAAY,OAAO,KAAK,cAAc,KAAK,aAAa;AAAA,MAC7D,MAAM,mBAAmB,KAAK,cAAc;AAAA,MAC5C,MAAM,gBAAgB,KAAK,IAAI,GAAG,KAAK,gBAAgB,CAAC;AAAA,MACxD,MAAM,eAAe,KAAK,IAAI,GAAG,mBAAmB,aAAa;AAAA,MACjE,KAAK,iBAAiB,KAAK,IAAI,KAAK,gBAAgB,YAAY;AAAA,MAChE,KAAK,qBAAqB,KAAK,mBAAmB;AAAA,MAClD,MAAM,mBAAmB,KAAK,IAAI,eAAe,mBAAmB,KAAK,cAAc;AAAA,MACvF,KAAK,mBAAmB,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,kBAAkB,mBAAmB,CAAC,CAAC;AAAA,MACzF,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,kBAAkB;AAAA,MACzB;AAAA,IACF;AAAA;AAAA,EAEF,KAAK,GAAG;AAAA,IACN,qBAAqB,aAAa;AAAA,IAClC,KAAK,iBAAiB,CAAC;AAAA,IACvB,KAAK,gBAAgB,CAAC;AAAA,IACtB,KAAK,kBAAkB;AAAA;AAAA,EAEzB,MAAM,GAAG;AAAA,IACP,IAAI,KAAK,WAAW;AAAA,MAClB,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,KAAK;AAAA,MACZ,EAAO;AAAA,QACL,KAAK,MAAM;AAAA;AAAA,IAEf,EAAO;AAAA,MACL,KAAK,KAAK;AAAA;AAAA,IAEZ,IAAI,CAAC,KAAK,SAAS,WAAW;AAAA,MAC5B,KAAK,SAAS,cAAc;AAAA,IAC9B;AAAA;AAAA,EAEF,KAAK,GAAG;AAAA,IACN,KAAK,YAAY;AAAA,IACjB,KAAK,gBAAgB,IAAI;AAAA,IACzB,KAAK,kBAAkB;AAAA;AAAA,EAEzB,IAAI,GAAG;AAAA,IACL,KAAK,YAAY;AAAA,IACjB,KAAK,kBAAkB;AAAA;AAAA,EAEzB,IAAI,GAAG;AAAA,IACL,IAAI,CAAC,KAAK,WAAW;AAAA,MACnB,KAAK,YAAY;AAAA,MACjB,KAAK,mBAAmB;AAAA,MACxB,qBAAqB,kBAAkB,KAAK;AAAA,MAC5C,IAAI,CAAC,KAAK,aAAa;AAAA,QACrB,KAAK,cAAc,gBAAgB,OAAO,KAAK,cAAc,KAAK,eAAe,KAAK,SAAS,aAAa;AAAA,UAC1G,cAAc,KAAK,gBAAgB,IAAI;AAAA,UACvC,IAAI;AAAA,QACN,CAAC;AAAA,MACH;AAAA,MACA,MAAM,WAAW,qBAAqB,WAAW;AAAA,MACjD,MAAM,kBAAkB,KAAK,IAAI,KAAK,eAAe,QAAQ;AAAA,MAC7D,KAAK,mBAAmB,KAAK,IAAI,GAAG,kBAAkB,CAAC;AAAA,MACvD,KAAK,iBAAiB;AAAA,MACtB,KAAK,gBAAgB,IAAI;AAAA,MACzB,KAAK,MAAM;AAAA,MACX,KAAK,kBAAkB;AAAA,IACzB;AAAA;AAAA,EAEF,IAAI,GAAG;AAAA,IACL,IAAI,KAAK,WAAW;AAAA,MAClB,KAAK,YAAY;AAAA,MACjB,KAAK,KAAK;AAAA,MACV,qBAAqB,kBAAkB,IAAI;AAAA,IAC7C;AAAA;AAAA,EAEF,OAAO,GAAG;AAAA,IACR,KAAK,eAAe;AAAA,IACpB,KAAK,KAAK;AAAA,IACV,KAAK,WAAW;AAAA,IAChB,qBAAqB,IAAI,SAAS,KAAK,cAAc;AAAA;AAAA,EAEvD,aAAa,GAAG;AAAA,IACd,OAAO,qBAAqB,WAAW,IAAI,CAAC,aAAa,SAAS,GAAG,YAAY,IAAI,MAAM,SAAS,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK;AAAA,CAChI;AAAA;AAAA,EAEC,iBAAiB,GAAG;AAAA,IAClB,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,KAAK,YAAY,MAAM,KAAK,eAAe;AAAA,IAC3C,MAAM,eAAe,KAAK;AAAA,IAC1B,MAAM,mBAAmB,aAAa;AAAA,IACtC,MAAM,gBAAgB,KAAK,IAAI,GAAG,KAAK,gBAAgB,CAAC;AAAA,IACxD,KAAK,YAAY,SAAS,GAAG,GAAG,KAAK,cAAc,GAAG,KAAK,aAAa;AAAA,IACxE,MAAM,eAAe,GAAG,KAAK,SAAS,KAAK,YAAY,eAAe;AAAA,IACtE,MAAM,SAAS,KAAK,IAAI,GAAG,KAAK,OAAO,KAAK,eAAe,aAAa,UAAU,CAAC,CAAC;AAAA,IACpF,KAAK,YAAY,SAAS,cAAc,QAAQ,GAAG,KAAK,mBAAmB,KAAK,aAAa;AAAA,IAC7F,MAAM,YAAY,KAAK,mBAAmB;AAAA,IAC1C,MAAM,cAAc,KAAK,eAAe,UAAU,SAAS;AAAA,IAC3D,IAAI,eAAe,GAAG;AAAA,MACpB,MAAM,oBAAoB,KAAK,aAAa;AAAA,MAC5C,MAAM,gBAAgB,KAAK,SAAS,KAAK,KAAK,KAAK,GAAG;AAAA,MACtD,MAAM,YAAY,oBAAoB,KAAK,kBAAkB;AAAA,MAC7D,KAAK,YAAY,SAAS,WAAW,aAAa,GAAG,WAAW,KAAK,aAAa;AAAA,MAClF,KAAK,oBAAoB,EAAE,GAAG,aAAa,GAAG,GAAG,OAAO,UAAU,QAAQ,QAAQ,EAAE;AAAA,IACtF,EAAO;AAAA,MACL,KAAK,oBAAoB,EAAE,GAAG,IAAI,GAAG,IAAI,OAAO,GAAG,QAAQ,EAAE;AAAA;AAAA,IAE/D,MAAM,aAAa,KAAK;AAAA,IACxB,MAAM,WAAW,KAAK,IAAI,aAAa,eAAe,gBAAgB;AAAA,IACtE,MAAM,sBAAsB,aAAa,MAAM,YAAY,QAAQ;AAAA,IACnE,IAAI,QAAQ;AAAA,IACZ,SAAS,IAAI,EAAE,IAAI,oBAAoB,QAAQ,KAAK;AAAA,MAClD,IAAI,SAAS,KAAK;AAAA,QAChB;AAAA,MACF,MAAM,cAAc,oBAAoB;AAAA,MACxC,MAAM,oBAAoB,aAAa;AAAA,MACvC,IAAI,aAAa,KAAK;AAAA,MACtB,QAAQ,YAAY;AAAA,aACb;AAAA,UACH,aAAa,KAAK;AAAA,UAClB;AAAA,aACG;AAAA,UACH,aAAa,KAAK;AAAA,UAClB;AAAA,aACG;AAAA,UACH,aAAa,KAAK;AAAA,UAClB;AAAA,aACG;AAAA,UACH,aAAa,KAAK;AAAA,UAClB;AAAA;AAAA,MAEJ,MAAM,aAAa,YAAY,SAAS,IAAI,OAAO,YAAY,IAAI;AAAA,MACnE,MAAM,aAAa,YAAY;AAAA,MAC/B,MAAM,qBAAqB,KAAK,eAAe,KAAK,YAAY,SAAS,eAAe;AAAA,MACxF,MAAM,aAAa,KAAK,aAAa,QAAQ,MAAM,KAAK;AAAA,MACxD,IAAI,YAAY;AAAA,QACd,KAAK,YAAY,SAAS,KAAK,GAAG,OAAO,KAAK,aAAa,KAAK,eAAe;AAAA,MACjF,EAAO;AAAA,QACL,KAAK,YAAY,SAAS,KAAK,GAAG,OAAO,KAAK,cAAc,KAAK,eAAe;AAAA;AAAA,MAElF,MAAM,WAAW,GAAG,aAAa,WAAW,UAAU,GAAG,kBAAkB;AAAA,MAC3E,MAAM,iBAAiB,KAAK,sBAAsB,iBAAiB;AAAA,MACnE,IAAI,gBAAgB;AAAA,QAClB,MAAM,gBAAgB,KAAK,IAAI,GAAG,eAAe,KAAK;AAAA,QACtD,MAAM,cAAc,KAAK,IAAI,SAAS,QAAQ,eAAe,GAAG;AAAA,QAChE,IAAI,gBAAgB,GAAG;AAAA,UACrB,KAAK,YAAY,SAAS,SAAS,UAAU,GAAG,aAAa,GAAG,GAAG,OAAO,UAAU;AAAA,QACtF;AAAA,QACA,IAAI,gBAAgB,aAAa;AAAA,UAC/B,KAAK,YAAY,SAAS,IAAI,eAAe,OAAO,cAAc,eAAe,GAAG,KAAK,cAAc;AAAA,UACvG,KAAK,YAAY,SAAS,SAAS,UAAU,eAAe,WAAW,GAAG,IAAI,eAAe,OAAO,YAAY,KAAK,cAAc;AAAA,QACrI;AAAA,QACA,IAAI,cAAc,SAAS,QAAQ;AAAA,UACjC,KAAK,YAAY,SAAS,SAAS,UAAU,WAAW,GAAG,IAAI,aAAa,OAAO,UAAU;AAAA,QAC/F;AAAA,MACF,EAAO;AAAA,QACL,KAAK,YAAY,SAAS,UAAU,GAAG,OAAO,UAAU;AAAA;AAAA,MAE1D;AAAA,IACF;AAAA;AAAA,EAEF,cAAc,CAAC,QAAQ;AAAA,IACrB,IAAI,CAAC,KAAK,aAAa,CAAC,KAAK;AAAA,MAC3B;AAAA,IACF,IAAI,KAAK,yBAAyB;AAAA,MAChC,KAAK,kBAAkB;AAAA,MACvB,KAAK,0BAA0B;AAAA,IACjC;AAAA,IACA,OAAO,gBAAgB,KAAK,UAAU,KAAK,UAAU,KAAK,WAAW;AAAA;AAAA,EAEvE,YAAY,CAAC,SAAS;AAAA,IACpB,KAAK,oBAAoB;AAAA,IACzB,qBAAqB,qBAAqB,OAAO;AAAA,IACjD,IAAI,KAAK,WAAW;AAAA,MAClB,KAAK,kBAAkB;AAAA,IACzB;AAAA;AAAA,EAEF,eAAe,GAAG;AAAA,IAChB,KAAK,aAAa,CAAC,KAAK,iBAAiB;AAAA;AAAA,MAEvC,WAAW,CAAC,UAAU;AAAA,IACxB,KAAK,eAAe;AAAA,IACpB,KAAK,qBAAqB,iBAAiB,2BAA2B,QAAQ;AAAA,IAC9E,KAAK,kBAAkB,oBAAoB,KAAK,oBAAoB,KAAK,YAAY;AAAA,IACrF,KAAK,kBAAkB;AAAA;AAAA,MAErB,WAAW,CAAC,SAAS;AAAA,IACvB,KAAK,eAAe,gBAAgB,mBAAmB,OAAO;AAAA,IAC9D,KAAK,qBAAqB,iBAAiB,2BAA2B,KAAK,YAAY;AAAA,IACvF,KAAK,kBAAkB,oBAAoB,KAAK,oBAAoB,KAAK,YAAY;AAAA,IACrF,KAAK,kBAAkB;AAAA;AAAA,MAErB,eAAe,CAAC,UAAU;AAAA,IAC5B,KAAK,QAAQ,kBAAkB;AAAA;AAAA,MAE7B,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK,QAAQ;AAAA;AAAA,EAEtB,eAAe,CAAC,wBAAwB,OAAO;AAAA,IAC7C,MAAM,mBAAmB,KAAK,cAAc;AAAA,IAC5C,MAAM,gBAAgB,KAAK,IAAI,GAAG,KAAK,gBAAgB,CAAC;AAAA,IACxD,MAAM,eAAe,KAAK,IAAI,GAAG,mBAAmB,aAAa;AAAA,IACjE,KAAK,iBAAiB;AAAA,IACtB,KAAK,qBAAqB;AAAA,IAC1B,MAAM,mBAAmB,KAAK,IAAI,eAAe,mBAAmB,KAAK,cAAc;AAAA,IACvF,IAAI,yBAAyB,KAAK,oBAAoB,kBAAkB;AAAA,MACtE,KAAK,mBAAmB,KAAK,IAAI,GAAG,mBAAmB,CAAC;AAAA,IAC1D;AAAA;AAAA,EAEF,gBAAgB,CAAC,UAAU;AAAA,IACzB,OAAO,MAAM,OAAO,MAAM,cAAc;AAAA,IACxC,MAAM,eAAe,CAAC;AAAA,IACtB,MAAM,YAAY,KAAK,gBAAgB,IAAI;AAAA,IAC3C,MAAM,eAAe,aAAa,GAAG,WAAW,YAAY,WAAW,eAAe;AAAA,IACtF,MAAM,SAAS,IAAI,eAAe,YAAY,KAAK,oBAAoB,KAAK,kBAAkB,MAAM;AAAA,IACpG,MAAM,gBAAgB,KAAK,gBAAgB,IAAI;AAAA,IAC/C,MAAM,eAAe,cAAc,MAAM;AAAA,CAC5C;AAAA,IACG,SAAS,IAAI,EAAE,IAAI,aAAa,QAAQ,KAAK;AAAA,MAC3C,MAAM,WAAW,aAAa;AAAA,MAC9B,MAAM,qBAAqB,MAAM;AAAA,MACjC,MAAM,iBAAiB,KAAK,eAAe,KAAK,qBAAqB,IAAI;AAAA,MACzE,MAAM,aAAa,qBAAqB,SAAS,IAAI,OAAO,YAAY;AAAA,MACxE,MAAM,aAAa,qBAAqB,aAAa,WAAW;AAAA,MAChE,IAAI,aAAa;AAAA,MACjB,OAAO,aAAa,WAAW,UAAU,sBAAsB,eAAe,KAAK,WAAW,WAAW,GAAG;AAAA,QAC1G,MAAM,UAAU,WAAW,UAAU,YAAY,aAAa,cAAc;AAAA,QAC5E,MAAM,uBAAuB,eAAe;AAAA,QAC5C,aAAa,KAAK;AAAA,UAChB,MAAM,wBAAwB,CAAC,qBAAqB,aAAa,UAAU;AAAA,UAC3E;AAAA,UACA,QAAQ,CAAC,sBAAsB,CAAC;AAAA,QAClC,CAAC;AAAA,QACD,cAAc;AAAA,QACd,IAAI,sBAAsB,eAAe,KAAK,WAAW,WAAW;AAAA,UAClE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAET,kBAAkB,GAAG;AAAA,IACnB,MAAM,gBAAgB,CAAC,GAAG,qBAAqB,UAAU;AAAA,IACzD,qBAAqB,aAAa;AAAA,IAClC,KAAK,eAAe,KAAK,GAAG,aAAa;AAAA,IACzC,IAAI,KAAK,eAAe,SAAS,KAAK,QAAQ,eAAe;AAAA,MAC3D,KAAK,eAAe,OAAO,GAAG,KAAK,eAAe,SAAS,KAAK,QAAQ,aAAa;AAAA,IACvF;AAAA,IACA,WAAW,YAAY,eAAe;AAAA,MACpC,MAAM,YAAY,KAAK,iBAAiB,QAAQ;AAAA,MAChD,KAAK,cAAc,KAAK,GAAG,SAAS;AAAA,IACtC;AAAA,IACA,IAAI,KAAK,cAAc,SAAS,KAAK,QAAQ,iBAAiB;AAAA,MAC5D,KAAK,cAAc,OAAO,GAAG,KAAK,cAAc,SAAS,KAAK,QAAQ,eAAe;AAAA,IACvF;AAAA;AAAA,EAEF,YAAY,GAAG;AAAA,IACb,IAAI,KAAK,oBAAoB,QAAQ,KAAK,kBAAkB;AAAA,MAC1D,OAAO;AAAA,IACT,OAAO,KAAK,gBAAgB,SAAS,KAAK,cAAc,QAAQ,KAAK,gBAAgB,QAAQ,KAAK,cAAc;AAAA;AAAA,EAElH,kBAAkB,GAAG;AAAA,IACnB,IAAI,CAAC,KAAK,mBAAmB,CAAC,KAAK;AAAA,MACjC,OAAO;AAAA,IACT,MAAM,QAAQ,KAAK;AAAA,IACnB,MAAM,MAAM,KAAK;AAAA,IACjB,MAAM,iBAAiB,MAAM,OAAO,IAAI,QAAQ,MAAM,SAAS,IAAI,QAAQ,MAAM,OAAO,IAAI;AAAA,IAC5F,IAAI,gBAAgB;AAAA,MAClB,OAAO;AAAA,QACL,WAAW,MAAM;AAAA,QACjB,UAAU,MAAM;AAAA,QAChB,SAAS,IAAI;AAAA,QACb,QAAQ,IAAI;AAAA,MACd;AAAA,IACF,EAAO;AAAA,MACL,OAAO;AAAA,QACL,WAAW,IAAI;AAAA,QACf,UAAU,IAAI;AAAA,QACd,SAAS,MAAM;AAAA,QACf,QAAQ,MAAM;AAAA,MAChB;AAAA;AAAA;AAAA,EAGJ,eAAe,GAAG;AAAA,IAChB,MAAM,aAAa,KAAK,mBAAmB;AAAA,IAC3C,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,MAAM,QAAQ,CAAC;AAAA,IACf,SAAS,IAAI,WAAW,UAAU,KAAK,WAAW,SAAS,KAAK;AAAA,MAC9D,IAAI,IAAI,KAAK,KAAK,KAAK,cAAc;AAAA,QACnC;AAAA,MACF,MAAM,OAAO,KAAK,cAAc;AAAA,MAChC,MAAM,aAAa,KAAK,SAAS,IAAI,OAAO,YAAY,IAAI;AAAA,MAC5D,MAAM,qBAAqB,KAAK,eAAe,KAAK,KAAK,SAAS,eAAe;AAAA,MACjF,MAAM,WAAW,aAAa,KAAK,KAAK,UAAU,GAAG,kBAAkB;AAAA,MACvE,IAAI,OAAO;AAAA,MACX,IAAI,MAAM,WAAW,aAAa,MAAM,WAAW,SAAS;AAAA,QAC1D,OAAO,SAAS,UAAU,WAAW,UAAU,WAAW,MAAM;AAAA,MAClE,EAAO,SAAI,MAAM,WAAW,WAAW;AAAA,QACrC,OAAO,SAAS,UAAU,WAAW,QAAQ;AAAA,MAC/C,EAAO,SAAI,MAAM,WAAW,SAAS;AAAA,QACnC,OAAO,SAAS,UAAU,GAAG,WAAW,MAAM;AAAA,MAChD;AAAA,MACA,MAAM,KAAK,IAAI;AAAA,IACjB;AAAA,IACA,OAAO,MAAM,KAAK;AAAA,CACrB;AAAA;AAAA,EAEC,cAAc,GAAG;AAAA,IACf,KAAK,kBAAkB;AAAA,IACvB,KAAK,gBAAgB;AAAA,IACrB,KAAK,cAAc;AAAA,IACnB,KAAK,eAAe;AAAA;AAAA,EAEtB,cAAc,GAAG;AAAA,IACf,IAAI,KAAK,wBAAwB,MAAM;AAAA,MACrC,cAAc,KAAK,mBAAmB;AAAA,MACtC,KAAK,sBAAsB;AAAA,IAC7B;AAAA;AAAA,EAEF,eAAe,CAAC,WAAW;AAAA,IACzB,KAAK,eAAe;AAAA,IACpB,KAAK,sBAAsB,YAAY,MAAM;AAAA,MAC3C,IAAI,cAAc,MAAM;AAAA,QACtB,IAAI,KAAK,iBAAiB,GAAG;AAAA,UAC3B,KAAK;AAAA,UACL,KAAK,qBAAqB;AAAA,UAC1B,IAAI,KAAK,eAAe;AAAA,YACtB,KAAK,gBAAgB;AAAA,cACnB,MAAM,KAAK;AAAA,cACX,KAAK,KAAK,cAAc;AAAA,YAC1B;AAAA,UACF;AAAA,UACA,KAAK,kBAAkB;AAAA,QACzB,EAAO;AAAA,UACL,KAAK,eAAe;AAAA;AAAA,MAExB,EAAO;AAAA,QACL,MAAM,mBAAmB,KAAK,cAAc;AAAA,QAC5C,MAAM,gBAAgB,KAAK,IAAI,GAAG,KAAK,gBAAgB,CAAC;AAAA,QACxD,MAAM,eAAe,KAAK,IAAI,GAAG,mBAAmB,aAAa;AAAA,QACjE,IAAI,KAAK,iBAAiB,cAAc;AAAA,UACtC,KAAK;AAAA,UACL,KAAK,qBAAqB,KAAK,mBAAmB;AAAA,UAClD,IAAI,KAAK,eAAe;AAAA,YACtB,MAAM,UAAU,KAAK,iBAAiB,gBAAgB;AAAA,YACtD,KAAK,gBAAgB;AAAA,cACnB,MAAM,KAAK,IAAI,SAAS,mBAAmB,CAAC;AAAA,cAC5C,KAAK,KAAK,cAAc;AAAA,YAC1B;AAAA,UACF;AAAA,UACA,KAAK,kBAAkB;AAAA,QACzB,EAAO;AAAA,UACL,KAAK,eAAe;AAAA;AAAA;AAAA,OAGvB,EAAE;AAAA;AAAA,EAEP,WAAW,GAAG;AAAA,IACZ,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB;AAAA,IACF,MAAM,OAAO,KAAK,gBAAgB;AAAA,IAClC,IAAI,QAAQ,KAAK,QAAQ,iBAAiB;AAAA,MACxC,IAAI;AAAA,QACF,KAAK,QAAQ,gBAAgB,IAAI;AAAA,QACjC,MAAM;AAAA,MACR,KAAK,eAAe;AAAA,MACpB,KAAK,kBAAkB;AAAA,IACzB;AAAA;AAAA,EAEF,qBAAqB,CAAC,WAAW;AAAA,IAC/B,MAAM,aAAa,KAAK,mBAAmB;AAAA,IAC3C,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,IAAI,YAAY,WAAW,aAAa,YAAY,WAAW,SAAS;AAAA,MACtE,OAAO;AAAA,IACT;AAAA,IACA,MAAM,OAAO,KAAK,cAAc;AAAA,IAChC,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,MAAM,aAAa,KAAK,SAAS,IAAI,OAAO,YAAY,IAAI;AAAA,IAC5D,MAAM,qBAAqB,KAAK,eAAe,KAAK,KAAK,SAAS,eAAe;AAAA,IACjF,MAAM,iBAAiB,WAAW,SAAS,KAAK,IAAI,KAAK,KAAK,QAAQ,kBAAkB;AAAA,IACxF,IAAI,QAAQ;AAAA,IACZ,IAAI,MAAM;AAAA,IACV,IAAI,cAAc,WAAW,WAAW;AAAA,MACtC,QAAQ,KAAK,IAAI,GAAG,WAAW,QAAQ;AAAA,IACzC;AAAA,IACA,IAAI,cAAc,WAAW,SAAS;AAAA,MACpC,MAAM,KAAK,IAAI,gBAAgB,WAAW,MAAM;AAAA,IAClD;AAAA,IACA,IAAI,SAAS;AAAA,MACX,OAAO;AAAA,IACT,OAAO,EAAE,OAAO,IAAI;AAAA;AAAA,EAEtB,WAAW,CAAC,OAAO;AAAA,IACjB,IAAI,CAAC,KAAK;AAAA,MACR,OAAO;AAAA,IACT,MAAM,SAAS,MAAM,IAAI,KAAK;AAAA,IAC9B,MAAM,SAAS,MAAM,IAAI,KAAK;AAAA,IAC9B,IAAI,SAAS,KAAK,UAAU,KAAK,gBAAgB,SAAS,KAAK,UAAU,KAAK,eAAe;AAAA,MAC3F,OAAO;AAAA,IACT;AAAA,IACA,IAAI,MAAM,SAAS,YAAY,MAAM,QAAQ;AAAA,MAC3C,IAAI,MAAM,OAAO,cAAc,MAAM;AAAA,QACnC,KAAK,SAAS;AAAA,MAChB,EAAO,SAAI,MAAM,OAAO,cAAc,QAAQ;AAAA,QAC5C,KAAK,WAAW;AAAA,MAClB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,IAAI,WAAW,GAAG;AAAA,MAChB,IAAI,MAAM,SAAS,UAAU,MAAM,WAAW,KAAK,UAAU,KAAK,kBAAkB,KAAK,SAAS,KAAK,kBAAkB,IAAI,KAAK,kBAAkB,OAAO;AAAA,QACzJ,KAAK,YAAY;AAAA,QACjB,OAAO;AAAA,MACT;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,MAAM,YAAY,KAAK,kBAAkB,SAAS;AAAA,IAClD,MAAM,WAAW,KAAK,IAAI,GAAG,SAAS,CAAC;AAAA,IACvC,IAAI,MAAM,SAAS,UAAU,MAAM,WAAW,GAAG;AAAA,MAC/C,KAAK,eAAe;AAAA,MACpB,KAAK,kBAAkB,EAAE,MAAM,WAAW,KAAK,SAAS;AAAA,MACxD,KAAK,gBAAgB,EAAE,MAAM,WAAW,KAAK,SAAS;AAAA,MACtD,KAAK,cAAc;AAAA,MACnB,KAAK,kBAAkB;AAAA,MACvB,OAAO;AAAA,IACT;AAAA,IACA,IAAI,MAAM,SAAS,UAAU,KAAK,aAAa;AAAA,MAC7C,KAAK,gBAAgB,EAAE,MAAM,WAAW,KAAK,SAAS;AAAA,MACtD,MAAM,gBAAgB,KAAK,IAAI,GAAG,KAAK,gBAAgB,CAAC;AAAA,MACxD,MAAM,YAAY,SAAS;AAAA,MAC3B,IAAI,aAAa,GAAG;AAAA,QAClB,KAAK,gBAAgB,IAAI;AAAA,MAC3B,EAAO,SAAI,aAAa,gBAAgB,GAAG;AAAA,QACzC,KAAK,gBAAgB,MAAM;AAAA,MAC7B,EAAO;AAAA,QACL,KAAK,eAAe;AAAA;AAAA,MAEtB,KAAK,kBAAkB;AAAA,MACvB,OAAO;AAAA,IACT;AAAA,IACA,IAAI,MAAM,SAAS,MAAM;AAAA,MACvB,IAAI,KAAK,aAAa;AAAA,QACpB,KAAK,gBAAgB,EAAE,MAAM,WAAW,KAAK,SAAS;AAAA,QACtD,KAAK,cAAc;AAAA,QACnB,KAAK,eAAe;AAAA,QACpB,KAAK,kBAAkB;AAAA,MACzB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA;AAAA,MAEL,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,MAAM,GAAG;AAAA,IACX,OAAO;AAAA,MACL,GAAG,KAAK;AAAA,MACR,GAAG,KAAK;AAAA,MACR,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,IACf;AAAA;AAAA,EAEF,cAAc,GAAG;AAAA,IACf,IAAI;AAAA,MACF,MAAM,YAAY,KAAK,IAAI;AAAA,MAC3B,MAAM,WAAW,YAAY;AAAA,MAC7B,MAAM,WAAW,MAAM,KAAK,QAAQ,IAAI,GAAG,QAAQ;AAAA,MACnD,MAAM,gBAAgB,CAAC,GAAG,KAAK,gBAAgB,GAAG,qBAAqB,UAAU;AAAA,MACjF,MAAM,WAAW,CAAC;AAAA,MAClB,YAAY,MAAM,OAAO,MAAM,eAAe,eAAe;AAAA,QAC3D,MAAM,eAAe,KAAK,gBAAgB,IAAI;AAAA,QAC9C,MAAM,eAAe,aAAa,GAAG,WAAW,YAAY,WAAW,eAAe;AAAA,QACtF,MAAM,SAAS,IAAI,kBAAkB,YAAY,KAAK,oBAAoB,KAAK,kBAAkB,MAAM;AAAA,QACvG,MAAM,gBAAgB,KAAK,gBAAgB,IAAI;AAAA,QAC/C,SAAS,KAAK,SAAS,aAAa;AAAA,MACtC;AAAA,MACA,MAAM,UAAU,SAAS,KAAK;AAAA,CACnC;AAAA,MACK,GAAG,cAAc,UAAU,SAAS,MAAM;AAAA,MAC1C,QAAQ,KAAK,0BAA0B,UAAU;AAAA,MACjD,OAAO,OAAO;AAAA,MACd,QAAQ,MAAM,gCAAgC,KAAK;AAAA;AAAA;AAGzD;AAGA,IAAI,OAAO;AAAA,EACT,yBAAyB;AAAA,EACzB,oBAAoB;AAAA,EACpB,OAAO;AAAA,EACP,YAAY,CAAC,UAAU,QAAQ;AAAA,EAC/B,UAAU,CAAC,UAAU,QAAQ;AAAA,EAC7B,YAAY,CAAC,KAAK,QAAQ,QAAQ,OAAO;AAAA,EACzC,oBAAoB,CAAC,KAAK,QAAQ,QAAQ,OAAO;AAAA,EACjD,kBAAkB,CAAC,GAAG,GAAG,MAAM,aAAa,KAAK,KAAK;AAAA,EACtD,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,mBAAmB;AACrB;AAGA,SAAS,kBAAkB,CAAC,MAAM,WAAW,IAAI,aAAa;AAAA,EAC5D,MAAM,SAAS,OAAO,KAAK,IAAI,EAAE,SAAS,QAAQ;AAAA,EAClD,OAAO,SAAS,OAAO,MAAM;AAAA;AAAA;AAG/B,MAAM,UAAU;AAAA,EACd;AAAA,EACA;AAAA,EACA,WAAW,CAAC,KAAK,aAAa;AAAA,IAC5B,KAAK,MAAM;AAAA,IACX,KAAK,cAAc;AAAA;AAAA,EAErB,oBAAoB,CAAC,MAAM,SAAS,GAAmB;AAAA,IACrD,IAAI,CAAC,KAAK,iBAAiB,GAAG;AAAA,MAC5B,OAAO;AAAA,IACT;AAAA,IACA,MAAM,UAAU,mBAAmB,MAAM,KAAK,IAAI,OAAO;AAAA,IACzD,OAAO,KAAK,IAAI,qBAAqB,KAAK,aAAa,QAAQ,OAAO;AAAA;AAAA,EAExE,mBAAmB,CAAC,SAAS,GAAmB;AAAA,IAC9C,IAAI,CAAC,KAAK,iBAAiB,GAAG;AAAA,MAC5B,OAAO;AAAA,IACT;AAAA,IACA,OAAO,KAAK,IAAI,oBAAoB,KAAK,aAAa,MAAM;AAAA;AAAA,EAE9D,gBAAgB,GAAG;AAAA,IACjB,MAAM,OAAO,KAAK,IAAI,wBAAwB,KAAK,WAAW;AAAA,IAC9D,OAAO,QAAQ,MAAM,KAAK;AAAA;AAE9B;AAMA,SAAS,oBAAoB,CAAC,UAAU,SAAS,YAAY,UAAU,UAAU,IAAI,iBAAiB,IAAI;AAAA,EACxG,IAAI,SAAS,SAAS,KAAK,SAAS,UAAU,GAAG;AAAA,IAC/C,OAAO,CAAC;AAAA,EACV;AAAA,EACA,IAAI,QAAQ,WAAW,GAAG;AAAA,IACxB,OAAO,CAAC;AAAA,EACV;AAAA,EACA,IAAI,QAAQ,SAAS,gBAAgB;AAAA,IACnC,OAAO;AAAA,EACT;AAAA,EACA,MAAM,cAAc,SAAS,IAAI;AAAA,EACjC,MAAM,iBAAiB,SAAS,IAAI,SAAS,SAAS;AAAA,EACtD,MAAM,eAAe,SAAS,IAAI;AAAA,EAClC,MAAM,gBAAgB,SAAS,IAAI,SAAS,QAAQ;AAAA,EACpD,MAAM,QAAQ,cAAc;AAAA,EAC5B,MAAM,WAAW;AAAA,EACjB,MAAM,gBAAgB,SAAS;AAAA,EAC/B,IAAI,kBAAkB;AAAA,IACpB,OAAO,CAAC;AAAA,EACV,MAAM,UAAU,QAAQ,eAAe;AAAA,EACvC,MAAM,QAAQ,QAAQ,gBAAgB;AAAA,EACtC,IAAI,KAAK;AAAA,EACT,IAAI,KAAK,gBAAgB;AAAA,EACzB,IAAI,YAAY;AAAA,EAChB,OAAO,MAAM,IAAI;AAAA,IACf,MAAM,MAAM,KAAK,MAAM;AAAA,IACvB,MAAM,IAAI,SAAS;AAAA,IACnB,MAAM,QAAQ,QAAQ,EAAE,IAAI,EAAE;AAAA,IAC9B,MAAM,MAAM,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;AAAA,IAC5C,IAAI,MAAM,SAAS;AAAA,MACjB,KAAK,MAAM;AAAA,IACb,EAAO,SAAI,QAAQ,OAAO;AAAA,MACxB,KAAK,MAAM;AAAA,IACb,EAAO;AAAA,MACL,YAAY;AAAA,MACZ;AAAA;AAAA,EAEJ;AAAA,EACA,MAAM,kBAAkB,CAAC;AAAA,EACzB,IAAI,cAAc,IAAI;AAAA,IACpB,YAAY,KAAK,IAAI,KAAK,IAAI;AAAA,EAChC;AAAA,EACA,MAAM,gBAAgB;AAAA,EACtB,IAAI,OAAO;AAAA,EACX,IAAI,WAAW;AAAA,EACf,OAAO,OAAO,KAAK,GAAG;AAAA,IACpB,MAAM,OAAO,SAAS,OAAO;AAAA,IAC7B,MAAM,UAAU,QAAQ,KAAK,IAAI,KAAK,QAAQ,KAAK,IAAI,KAAK;AAAA,IAC5D,IAAI,WAAW,SAAS;AAAA,MACtB;AAAA,MACA,IAAI,YAAY,eAAe;AAAA,QAC7B;AAAA,MACF;AAAA,IACF,EAAO;AAAA,MACL,WAAW;AAAA;AAAA,IAEb;AAAA,EACF;AAAA,EACA,IAAI,QAAQ,YAAY;AAAA,EACxB,OAAO,QAAQ,eAAe;AAAA,IAC5B,MAAM,OAAO,SAAS;AAAA,IACtB,KAAK,QAAQ,KAAK,IAAI,KAAK,MAAM;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK;AAAA,IAChC,MAAM,QAAQ,SAAS;AAAA,IACvB,MAAM,QAAQ,QAAQ,MAAM,IAAI,MAAM;AAAA,IACtC,MAAM,MAAM,QAAQ,MAAM,IAAI,MAAM,QAAQ,MAAM,IAAI,MAAM;AAAA,IAC5D,IAAI,OAAO;AAAA,MACT;AAAA,IACF,IAAI,SAAS;AAAA,MACX;AAAA,IACF,IAAI,OAAO;AAAA,MACT,MAAM,cAAc,MAAM,IAAI,MAAM;AAAA,MACpC,IAAI,cAAc;AAAA,QAChB;AAAA,MACF,MAAM,WAAW,MAAM;AAAA,MACvB,IAAI,WAAW;AAAA,QACb;AAAA,IACJ,EAAO;AAAA,MACL,MAAM,aAAa,MAAM,IAAI,MAAM;AAAA,MACnC,IAAI,aAAa;AAAA,QACf;AAAA,MACF,MAAM,YAAY,MAAM;AAAA,MACxB,IAAI,YAAY;AAAA,QACd;AAAA;AAAA,IAEJ,gBAAgB,KAAK,KAAK;AAAA,EAC5B;AAAA,EACA,IAAI,gBAAgB,SAAS,GAAG;AAAA,IAC9B,gBAAgB,KAAK,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE,SAAS,EAAE,SAAS,KAAK,CAAC;AAAA,EACvF;AAAA,EACA,OAAO;AAAA;AAIT,SAAS,oBAAoB,CAAC,UAAU;AAAA,EACtC,IAAI,0BAA0B,KAAK,QAAQ,GAAG;AAAA,IAC5C,OAAO;AAAA,EACT;AAAA,EACA,IAAI,qBAAqB,KAAK,QAAQ,GAAG;AAAA,IACvC,OAAO;AAAA,EACT;AAAA,EACA,IAAI,yBAAyB,KAAK,QAAQ,GAAG;AAAA,IAC3C,OAAO;AAAA,EACT;AAAA,EACA,IAAI,uBAAuB,KAAK,QAAQ,GAAG;AAAA,IACzC,OAAO;AAAA,EACT;AAAA,EACA,IAAI,wBAAwB,KAAK,QAAQ,GAAG;AAAA,IAC1C,OAAO;AAAA,EACT;AAAA,EACA,IAAI,mBAAmB,KAAK,QAAQ,GAAG;AAAA,IACrC,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAET,SAAS,yBAAyB,CAAC,UAAU;AAAA,EAC3C,OAAO,mBAAmB,KAAK,QAAQ;AAAA;AAEzC,SAAS,oBAAoB,CAAC,UAAU;AAAA,EACtC,MAAM,QAAQ,SAAS,MAAM,sBAAsB;AAAA,EACnD,IAAI,OAAO;AAAA,IACT,OAAO;AAAA,MACL,OAAO,SAAS,MAAM,EAAE;AAAA,MACxB,QAAQ,SAAS,MAAM,EAAE;AAAA,IAC3B;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAIT,eAAe;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AACD,eAAe;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AACD,eAAe;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AACD,eAAe;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AACD,eAAe;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AACD,eAAe;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AACD,IAAI,0BAA0B;AAC9B,IAAI,yBAAyB;AAC7B,IAAI,4BAA4B;AAChC,IAAI,iCAAiC;AACrC,IAAI,yBAAyB;AAC7B,SAAS,uBAAuB,CAAC,QAAQ;AAAA,EACvC,IAAI,CAAC,QAAQ;AAAA,IACX,OAAO;AAAA,EACT;AAAA,EACA,IAAI,QAAQ;AAAA,EACZ,IAAI,OAAO,iBAAiB,OAAO;AAAA,IACjC,SAAS;AAAA,EACX;AAAA,EACA,IAAI,OAAO,kBAAkB,OAAO;AAAA,IAClC,SAAS;AAAA,EACX;AAAA,EACA,IAAI,OAAO,WAAW,MAAM;AAAA,IAC1B,SAAS;AAAA,EACX;AAAA,EACA,IAAI,OAAO,qBAAqB,MAAM;AAAA,IACpC,SAAS;AAAA,EACX;AAAA,EACA,IAAI,OAAO,eAAe,MAAM;AAAA,IAC9B,SAAS;AAAA,EACX;AAAA,EACA,OAAO;AAAA;AAAA;AAGT,MAAM,WAAW;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,MAChB,kBAAkB,GAAG;AAAA,IACvB,OAAO,KAAK;AAAA;AAAA,MAEV,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK;AAAA;AAAA,EAEd,WAAW,CAAC,QAAQ,YAAY;AAAA,IAC9B,KAAK,SAAS;AAAA,IACd,KAAK,OAAO,WAAW;AAAA,IACvB,KAAK,SAAS,WAAW;AAAA,IACzB,KAAK,IAAI,WAAW;AAAA,IACpB,KAAK,IAAI,WAAW;AAAA,IACpB,KAAK,YAAY,WAAW;AAAA,IAC5B,KAAK,SAAS,WAAW;AAAA,IACzB,KAAK,SAAS,WAAW;AAAA,IACzB,KAAK,aAAa,WAAW;AAAA;AAAA,EAE/B,eAAe,GAAG;AAAA,IAChB,KAAK,sBAAsB;AAAA;AAAA,EAE7B,cAAc,GAAG;AAAA,IACf,KAAK,oBAAoB;AAAA;AAE7B;AACA,IAAI;AAAA,CACH,CAAC,iBAAiB;AAAA,EACjB,aAAa,aAAa,UAAU,KAAK;AAAA,EACzC,aAAa,aAAa,YAAY,KAAK;AAAA,EAC3C,aAAa,aAAa,WAAW,KAAK;AAAA,EAC1C,aAAa,aAAa,cAAc,KAAK;AAAA,EAC7C,aAAa,aAAa,gBAAgB,KAAK;AAAA,GAC9C,gBAAgB,CAAC,CAAC;AACrB,IAAI,kBAAkB,UAAU,mBAAmB,MAAM;AAAA,EACvD,MAAM,YAAY,IAAI;AAAA,EACtB,OAAO;AAAA,IACL,aAAa,CAAC,aAAa;AAAA,MACzB,UAAU,IAAI,QAAQ;AAAA;AAAA,IAExB,gBAAgB,CAAC,aAAa;AAAA,MAC5B,UAAU,OAAO,QAAQ;AAAA,MACzB,IAAI,UAAU,SAAS,GAAG;AAAA,QACxB,QAAQ,MAAM,MAAM;AAAA,QACpB,IAAI,aAAa,oBAAoB,GAAG;AAAA,UACtC,oBAAoB,EAAE,QAAQ;AAAA,UAC9B,iBAAiB,oBAAoB;AAAA,QACvC;AAAA,MACF;AAAA;AAAA,EAEJ;AAAA,CACD;AACD,eAAe,iBAAiB,CAAC,SAAS,CAAC,GAAG;AAAA,EAC5C,IAAI,QAAQ,KAAK,SAAS,eAAe,GAAG;AAAA,IAC1C,MAAM,IAAI,QAAQ,CAAC,aAAa,WAAW,UAAU,IAAI,CAAC;AAAA,EAC5D;AAAA,EACA,MAAM,QAAQ,OAAO,SAAS,QAAQ;AAAA,EACtC,MAAM,SAAS,OAAO,UAAU,QAAQ;AAAA,EACxC,MAAM,QAAQ,OAAO,WAAW;AAAA,EAChC,MAAM,SAAS,OAAO,QAAQ;AAAA,EAC9B,MAAM,eAAe,OAAO,4BAA4B,OAAO,2BAA2B,IAAI,OAAO,2BAA2B;AAAA,EAChI,MAAM,SAAS,iBAAiB;AAAA,EAChC,MAAM,cAAc,OAAO,eAAe,OAAO,cAAc,EAAE,QAAQ,OAAO,UAAU,MAAM,CAAC;AAAA,EACjG,IAAI,CAAC,aAAa;AAAA,IAChB,MAAM,IAAI,MAAM,2BAA2B;AAAA,EAC7C;AAAA,EACA,IAAI,OAAO,cAAc,WAAW;AAAA,IAClC,OAAO,YAAY;AAAA,EACrB;AAAA,EACA,IAAI,QAAQ,aAAa,SAAS;AAAA,IAChC,OAAO,YAAY;AAAA,EACrB;AAAA,EACA,OAAO,aAAa,aAAa,OAAO,SAAS;AAAA,EACjD,MAAM,cAAc,OAAO,oBAAoB,CAAC;AAAA,EAChD,MAAM,aAAa,wBAAwB,WAAW;AAAA,EACtD,OAAO,sBAAsB,aAAa,UAAU;AAAA,EACpD,MAAM,WAAW,IAAI,YAAY,QAAQ,aAAa,OAAO,QAAQ,OAAO,QAAQ,MAAM;AAAA,EAC1F,MAAM,SAAS,cAAc;AAAA,EAC7B,OAAO;AAAA;AAET,IAAI;AAAA,CACH,CAAC,qBAAqB;AAAA,EACrB,iBAAiB,0BAA0B;AAAA,EAC3C,iBAAiB,aAAa;AAAA,GAC7B,oBAAoB,CAAC,CAAC;AACzB,IAAI;AAAA,CACH,CAAC,0BAA0B;AAAA,EAC1B,sBAAsB,UAAU;AAAA,EAChC,sBAAsB,kBAAkB;AAAA,EACxC,sBAAsB,sBAAsB;AAAA,EAC5C,sBAAsB,qBAAqB;AAAA,EAC3C,sBAAsB,wBAAwB;AAAA,EAC9C,sBAAsB,sBAAsB;AAAA,GAC3C,yBAAyB,CAAC,CAAC;AAAA;AAE9B,MAAM,oBAAoB,cAAc;AAAA,SAC/B,mBAAmB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,sBAAsB;AAAA,EACtB,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,0BAA0B;AAAA,EAC1B;AAAA,EACA,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,WAAW;AAAA,IACX,cAAc;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,cAAc;AAAA,EACd,aAAa,CAAC;AAAA,EACd,iBAAiB;AAAA,EACjB,iBAAiB,CAAC;AAAA,EAClB,kBAAkB,KAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AAAA,EAC1C,4BAA4B;AAAA,EAC5B,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,aAAa;AAAA,EACb,cAAc;AAAA,EACd,aAAa;AAAA,EACb,kBAAkB,OAAO,KAAK;AAAA,EAC9B,qBAAqB,OAAO,KAAK;AAAA,EACjC,6BAA6B;AAAA,EAC7B,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,gBAAgB;AAAA,EAChB,iBAAiB,CAAC;AAAA,EAClB,cAAc;AAAA,IACZ,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,YAAY;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA,eAAe;AAAA,IACb,SAAS,IAAI;AAAA,IACb,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,mBAAmB,IAAI;AAAA,EACvB,kBAAkB;AAAA,EAClB,sBAAsB;AAAA,EACtB,sBAAsB;AAAA,EACtB,sBAAsB;AAAA,EACtB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,sBAAsB,IAAI;AAAA,EAC1B,yBAAyB;AAAA,EACzB,wBAAwB;AAAA,EACxB;AAAA,EACA,wBAAwB;AAAA,EACxB;AAAA,EACA,mBAAmB;AAAA,EACnB,sBAAsB,CAAC;AAAA,EACvB;AAAA,EACA,eAAe;AAAA,EACf,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB;AAAA,EACA,kBAAkB,MAAM;AAAA,IACtB,IAAI,KAAK,eAAe,GAAG;AAAA,MACzB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,EAEF,cAAc;AAAA,EACd,cAAc,IAAI;AAAA,EAClB,mBAAmB,MAAM;AAAA,IACvB,MAAM,QAAQ,KAAK,OAAO,WAAW;AAAA,IACrC,MAAM,SAAS,KAAK,OAAO,QAAQ;AAAA,IACnC,KAAK,aAAa,OAAO,MAAM;AAAA,KAC9B,KAAK,IAAI;AAAA,EACZ,gBAAgB;AAAA,EAChB,iBAAiB,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EAC9B,cAAc;AAAA,EACd,wBAAwB,EAAE,OAAO,OAAO,KAAK,OAAO,MAAM,MAAM;AAAA,EAChE,4BAA4B;AAAA,EAC5B,4BAA4B;AAAA,EAC5B,kBAAkB,IAAI;AAAA,EACtB,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,2BAA2B;AAAA,EAC3B;AAAA,EACA,aAAa;AAAA,EACb,gBAAgB,CAAC;AAAA,EACjB,yBAAyB,CAAC;AAAA,EAC1B,gBAAgB,CAAC;AAAA,EACjB,eAAe,CAAC;AAAA,EAChB,oBAAoB,IAAI;AAAA,EACxB,eAAe,CAAC,UAAU;AAAA,IACxB,QAAQ,MAAM,KAAK;AAAA,IACnB,IAAI,KAAK,qBAAqB;AAAA,MAC5B,KAAK,QAAQ,KAAK;AAAA,IACpB;AAAA,KACC,KAAK,IAAI;AAAA,EACZ,eAAe,CAAC,kBAAkB,IAAI;AAAA,IACpC,MAAM,aAAa,KAAK,QAAQ,cAAc;AAAA,IAC9C,MAAM,iBAAiB,QAAQ,YAAY;AAAA,IAC3C,IAAI,eAAe,SAAS,KAAK,WAAW,SAAS,GAAG;AAAA,MACtD,KAAK,gBAAgB,KAAK,KAAK,QAAQ,eAAe;AAAA,IACxD;AAAA,IACA,IAAI,WAAW,SAAS,GAAG;AAAA,MACzB,KAAK,gBAAgB,KAAK,KAAK,QAAQ;AAAA,CAC5C;AAAA,MACK,KAAK,gBAAgB,KAAK,KAAK,QAAQ,UAAU;AAAA,IACnD;AAAA,IACA,IAAI,eAAe,SAAS,GAAG;AAAA,MAC7B,KAAK,gBAAgB,KAAK,KAAK,QAAQ;AAAA;AAAA,CAE5C;AAAA,MACK,KAAK,gBAAgB,KAAK,KAAK,QAAQ,iBAAiB;AAAA,CAC7D;AAAA,IACG;AAAA,IACA,KAAK,gBAAgB,KAAK,KAAK,QAAQ,KAAK,KAAK;AAAA;AAAA,EAEnD,eAAe,MAAM;AAAA,IACnB,KAAK,QAAQ;AAAA,IACb,IAAI,IAAI,oBAAoB;AAAA,MAC1B,IAAI,MAAM,GAAG,EAAE,KAAK,MAAM;AAAA,QACxB,KAAK,gBAAgB;AAAA,CAC5B;AAAA,OACM;AAAA,IACH;AAAA,KACC,KAAK,IAAI;AAAA,EACZ,kBAAkB,CAAC,YAAY;AAAA,IAC7B,QAAQ,KAAK,KAAK,UAAU,QAAQ,SAAS,MAAM,CAAC,CAAC;AAAA,KACpD,KAAK,IAAI;AAAA,MACR,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,EAEd,WAAW,CAAC,KAAK,aAAa,OAAO,QAAQ,OAAO,QAAQ,SAAS,CAAC,GAAG;AAAA,IACvE,MAAM;AAAA,IACN,gBAAgB,YAAY,IAAI;AAAA,IAChC,KAAK,QAAQ;AAAA,IACb,KAAK,SAAS;AAAA,IACd,KAAK,kBAAkB,OAAO;AAAA,IAC9B,KAAK,MAAM;AAAA,IACX,KAAK,iBAAiB,OAAO,WAAW;AAAA,IACxC,KAAK,kBAAkB,OAAO,QAAQ;AAAA,IACtC,KAAK,QAAQ;AAAA,IACb,KAAK,SAAS;AAAA,IACd,KAAK,aAAa,OAAO,cAAc,YAAY,QAAQ,OAAO;AAAA,IAClE,KAAK,eAAe,OAAO,4BAA4B;AAAA,IACvD,IAAI,KAAK,eAAe,GAAG;AAAA,MACzB,QAAQ,GAAG,SAAS,KAAK,eAAe;AAAA,MACxC,KAAK,eAAe,SAAS,KAAK;AAAA,MAClC,KAAK,SAAS,KAAK;AAAA,MACnB,IAAI,gBAAgB,aAAa,KAAK,YAAY;AAAA,IACpD;AAAA,IACA,KAAK,cAAc;AAAA,IACnB,KAAK,cAAc,OAAO,gBAAgB,YAAY,OAAO,OAAO;AAAA,IACpE,KAAK,cAAc,OAAO,eAAe;AAAA,MACvC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,YAAY,IAAI,UAAU,KAAK,KAAK,KAAK,WAAW;AAAA,IACzD,KAAK,sBAAsB,OAAO,iBAAiB;AAAA,IACnD,KAAK,YAAY,OAAO,aAAa;AAAA,IACrC,KAAK,SAAS,OAAO,UAAU;AAAA,IAC/B,KAAK,kBAAkB,OAAO,KAAK;AAAA,IACnC,KAAK,qBAAqB,OAAO,KAAK;AAAA,IACtC,KAAK,yBAAyB,OAAO,0BAA0B;AAAA,IAC/D,KAAK,cAAc,OAAO,eAAe;AAAA,IACzC,KAAK,iBAAiB,OAAO,kBAAkB;AAAA,IAC/C,KAAK,sBAAsB,OAAO,uBAAuB;AAAA,IACzD,KAAK,YAAY,OAAO,YAAY;AAAA,IACpC,KAAK,YAAY,OAAO,aAAa;AAAA,IACrC,KAAK,sBAAsB,OAAO,sBAAsB,IAAI;AAAA,IAC5D,KAAK,mBAAmB,KAAK,IAAI,cAAc,KAAK,WAAW;AAAA,IAC/D,KAAK,sBAAsB,KAAK,IAAI,iBAAiB,KAAK,WAAW;AAAA,IACrE,KAAK,iBAAiB,OAAO,kBAAkB,CAAC;AAAA,IAChD,KAAK,yBAAyB,OAAO,wBAAwB,CAAC;AAAA,IAC9D,KAAK,OAAO,IAAI,eAAe,IAAI;AAAA,IACnC,IAAI,KAAK,yBAAyB,GAAG;AAAA,MACnC,KAAK,yBAAyB;AAAA,IAChC;AAAA,IACA,IAAI,IAAI,sBAAsB;AAAA,MAC5B,KAAK,OAAO,QAAQ,KAAK,qBAAqB,KAAK,IAAI;AAAA,IACzD;AAAA,IACA,QAAQ,GAAG,YAAY,KAAK,eAAe;AAAA,IAC3C,QAAQ,GAAG,WAAW,KAAK,cAAc;AAAA,IACzC,QAAQ,GAAG,qBAAqB,KAAK,WAAW;AAAA,IAChD,QAAQ,GAAG,sBAAsB,KAAK,WAAW;AAAA,IACjD,QAAQ,GAAG,cAAc,KAAK,WAAW;AAAA,IACzC,MAAM,cAAc,OAAO,oBAAoB,CAAC;AAAA,IAChD,MAAM,qBAAqB,gBAAgB;AAAA,IAC3C,KAAK,cAAc,IAAI,mBAAmB,kBAAkB;AAAA,IAC5D,KAAK,YAAY,GAAG,YAAY,CAAC,UAAU;AAAA,MACzC,IAAI,KAAK,eAAe,MAAM,SAAS,OAAO,MAAM,MAAM;AAAA,QACxD,QAAQ,SAAS,MAAM;AAAA,UACrB,KAAK,QAAQ;AAAA,SACd;AAAA,QACD;AAAA,MACF;AAAA,KACD;AAAA,IACD,KAAK,iBAAiB;AAAA,IACtB,KAAK,eAAe,IAAI,YAAY,EAAE,SAAS,EAAE,CAAC;AAAA,IAClD,KAAK,WAAW,IAAI,gBAAgB,MAAM,OAAO,cAAc;AAAA,IAC/D,KAAK,aAAa,OAAO,cAAc;AAAA,IACvC,KAAK,sBAAsB,OAAO,sBAAsB;AAAA,IACxD,KAAK,aAAa,OAAO;AAAA,IACzB,OAAO,wBAAwB,CAAC,aAAa;AAAA,MAC3C,MAAM,KAAK,YAAY;AAAA,MACvB,KAAK,iBAAiB,IAAI,IAAI,QAAQ;AAAA,MACtC,KAAK,YAAY;AAAA,MACjB,OAAO;AAAA;AAAA,IAET,OAAO,uBAAuB,CAAC,WAAW;AAAA,MACxC,KAAK,iBAAiB,OAAO,MAAM;AAAA;AAAA,IAErC,MAAM,SAAS,OAAO;AAAA,IACtB,IAAI,CAAC,QAAQ;AAAA,MACX,OAAO,SAAS,CAAC;AAAA,IACnB;AAAA,IACA,OAAO,OAAO,wBAAwB;AAAA,IACtC,IAAI,IAAI,uBAAuB;AAAA,MAC7B,KAAK,eAAe,MAAM;AAAA,QACxB,IAAI,KAAK,eAAe,GAAG;AAAA,UACzB,KAAK,iBAAiB,KAAK,YAAY;AAAA,QACzC;AAAA;AAAA,IAEJ;AAAA,IACA,KAAK,WAAW;AAAA;AAAA,EAElB,gBAAgB,GAAG;AAAA,IACjB,IAAI,KAAK,uBAAuB,KAAK,YAAY,WAAW;AAAA,MAC1D;AAAA,IACF,KAAK,YAAY,QAAQ,CAAC,WAAW;AAAA,MACnC,QAAQ,YAAY,QAAQ,KAAK,WAAW;AAAA,KAC7C;AAAA,IACD,KAAK,sBAAsB;AAAA;AAAA,EAE7B,mBAAmB,GAAG;AAAA,IACpB,IAAI,CAAC,KAAK,uBAAuB,KAAK,YAAY,WAAW;AAAA,MAC3D;AAAA,IACF,KAAK,YAAY,QAAQ,CAAC,WAAW;AAAA,MACnC,QAAQ,eAAe,QAAQ,KAAK,WAAW;AAAA,KAChD;AAAA,IACD,KAAK,sBAAsB;AAAA;AAAA,MAEzB,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,EAEd,qBAAqB,CAAC,YAAY;AAAA,IAChC,KAAK,gBAAgB,IAAI,UAAU;AAAA;AAAA,EAErC,uBAAuB,CAAC,YAAY;AAAA,IAClC,KAAK,gBAAgB,OAAO,UAAU;AAAA;AAAA,EAExC,kBAAkB,GAAG;AAAA,IACnB,OAAO,KAAK;AAAA;AAAA,MAEV,wBAAwB,GAAG;AAAA,IAC7B,OAAO,KAAK;AAAA;AAAA,EAEd,eAAe,CAAC,YAAY;AAAA,IAC1B,IAAI,KAAK,8BAA8B;AAAA,MACrC;AAAA,IACF,IAAI,KAAK,2BAA2B;AAAA,MAClC,KAAK,0BAA0B,KAAK;AAAA,IACtC;AAAA,IACA,KAAK,4BAA4B;AAAA;AAAA,EAEnC,qBAAqB,CAAC,YAAY;AAAA,IAChC,IAAI,KAAK,uBAAuB,YAAY;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,KAAK,qBAAqB;AAAA;AAAA,EAE5B,YAAY,CAAC,GAAG,GAAG,OAAO,QAAQ,IAAI;AAAA,IACpC,IAAI,OAAO,KAAK,oBAAoB,KAAK;AAAA,MACvC,KAAK,IAAI,aAAa,KAAK,aAAa,GAAG,GAAG,OAAO,QAAQ,EAAE;AAAA,IACjE;AAAA;AAAA,EAEF,sBAAsB,CAAC,GAAG,GAAG,OAAO,QAAQ;AAAA,IAC1C,KAAK,IAAI,uBAAuB,KAAK,aAAa,GAAG,GAAG,OAAO,MAAM;AAAA;AAAA,EAEvE,qBAAqB,GAAG;AAAA,IACtB,KAAK,IAAI,sBAAsB,KAAK,WAAW;AAAA;AAAA,EAEjD,wBAAwB,GAAG;AAAA,IACzB,KAAK,IAAI,yBAAyB,KAAK,WAAW;AAAA;AAAA,MAEhD,WAAW,GAAG;AAAA,IAChB,MAAM,OAAO,KAAK;AAAA,IAClB,OAAO,MAAM,YAAY,YAAY,YAAY;AAAA;AAAA,EAEnD,QAAQ,CAAC,OAAO,UAAU,UAAU;AAAA,IAClC,IAAI,KAAK,eAAe,KAAK,YAAY;AAAA,MACvC,MAAM,OAAO,OAAO,UAAU,WAAW,QAAQ,OAAO,SAAS,KAAK;AAAA,MACtE,KAAK,IAAI,SAAS,KAAK,aAAa,IAAI;AAAA,MACxC,IAAI,OAAO,aAAa,YAAY;AAAA,QAClC,QAAQ,SAAS,QAAQ;AAAA,MAC3B;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,OAAO,KAAK,gBAAgB,KAAK,KAAK,QAAQ,OAAO,UAAU,QAAQ;AAAA;AAAA,EAEzE,aAAa,GAAG;AAAA,IACd,IAAI,KAAK,kBAAkB,sBAA+C;AAAA,MACxE;AAAA,IACF;AAAA,IACA,IAAI,KAAK,YAAY;AAAA,MACnB;AAAA,IACF;AAAA,IACA,IAAI,KAAK,WAAW;AAAA,MAClB,KAAK,6BAA6B;AAAA,MAClC;AAAA,IACF;AAAA,IACA,IAAI,CAAC,KAAK,mBAAmB,CAAC,KAAK,eAAe;AAAA,MAChD,KAAK,kBAAkB;AAAA,MACvB,MAAM,MAAM,KAAK,IAAI;AAAA,MACrB,MAAM,UAAU,MAAM,KAAK;AAAA,MAC3B,MAAM,QAAQ,KAAK,IAAI,KAAK,qBAAqB,SAAS,CAAC;AAAA,MAC3D,IAAI,UAAU,GAAG;AAAA,QACf,QAAQ,SAAS,MAAM,KAAK,cAAc,CAAC;AAAA,QAC3C;AAAA,MACF;AAAA,MACA,WAAW,MAAM,KAAK,cAAc,GAAG,KAAK;AAAA,IAC9C;AAAA;AAAA,OAEI,cAAa,GAAG;AAAA,IACpB,MAAM,KAAK,KAAK;AAAA,IAChB,KAAK,kBAAkB;AAAA,IACvB,KAAK,oBAAoB;AAAA;AAAA,MAEvB,UAAU,GAAG;AAAA,IACf,OAAO,KAAK;AAAA;AAAA,MAEV,UAAU,CAAC,OAAO;AAAA,IACpB,KAAK,cAAc;AAAA,IACnB,IAAI,OAAO;AAAA,MACT,KAAK,QAAQ,SAAS;AAAA,IACxB,EAAO;AAAA,MACL,KAAK,QAAQ,WAAW;AAAA;AAAA;AAAA,MAGxB,SAAS,GAAG;AAAA,IACd,OAAO,KAAK;AAAA;AAAA,EAEd,SAAS,GAAG;AAAA,IACV,OAAO,CAAC,KAAK,cAAc,CAAC,KAAK,aAAa,CAAC,KAAK,iBAAiB,CAAC,KAAK,mBAAmB,CAAC,KAAK;AAAA;AAAA,EAEtG,mBAAmB,GAAG;AAAA,IACpB,IAAI,CAAC,KAAK,UAAU;AAAA,MAClB;AAAA,IACF,MAAM,YAAY,KAAK,cAAc,OAAO,CAAC;AAAA,IAC7C,WAAW,YAAY,WAAW;AAAA,MAChC,SAAS;AAAA,IACX;AAAA;AAAA,EAEF,IAAI,GAAG;AAAA,IACL,IAAI,KAAK;AAAA,MACP,OAAO,QAAQ,QAAQ;AAAA,IACzB,IAAI,KAAK,UAAU;AAAA,MACjB,OAAO,QAAQ,QAAQ;AAAA,IACzB,OAAO,IAAI,QAAQ,CAAC,aAAa;AAAA,MAC/B,KAAK,cAAc,KAAK,QAAQ;AAAA,KACjC;AAAA;AAAA,MAEC,UAAU,GAAG;AAAA,IACf,OAAO,KAAK;AAAA;AAAA,MAEV,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,iBAAiB,GAAG;AAAA,IACtB,OAAO,KAAK;AAAA;AAAA,MAEV,aAAa,GAAG;AAAA,IAClB,OAAO,KAAK;AAAA;AAAA,MAEV,cAAc,GAAG;AAAA,IACnB,OAAO,KAAK;AAAA;AAAA,MAEV,SAAS,GAAG;AAAA,IACd,OAAO,KAAK;AAAA;AAAA,MAEV,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,QAAQ,CAAC,UAAU;AAAA,IACrB,IAAI,KAAK,cAAc;AAAA,MACrB;AAAA,IACF,KAAK,YAAY;AAAA,IACjB,IAAI,UAAU;AAAA,MACZ,KAAK,YAAY;AAAA,IACnB,EAAO;AAAA,MACL,KAAK,aAAa;AAAA;AAAA;AAAA,MAGlB,wBAAwB,GAAG;AAAA,IAC7B,OAAO,KAAK;AAAA;AAAA,MAEV,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK;AAAA;AAAA,MAEV,mBAAmB,GAAG;AAAA,IACxB,OAAO,KAAK;AAAA;AAAA,MAEV,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,MAEV,SAAS,GAAG;AAAA,IACd,OAAO,KAAK;AAAA;AAAA,EAEd,cAAc,GAAG;AAAA,IACf,OAAO,CAAC,GAAG,KAAK,YAAY;AAAA;AAAA,MAE1B,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK,IAAI,sBAAsB,KAAK,WAAW,IAAI;AAAA;AAAA,MAExD,gBAAgB,CAAC,KAAK;AAAA,IACxB,MAAM,QAAQ,MAAM,0BAA0B,4BAA4B;AAAA,IAC1E,KAAK,IAAI,sBAAsB,KAAK,aAAa,KAAK;AAAA;AAAA,MAEpD,wBAAwB,CAAC,aAAa;AAAA,IACxC,IAAI,cAAc;AAAA,MAChB,cAAc;AAAA,IAChB,MAAM,kBAAkB,KAAK;AAAA,IAC7B,IAAI,cAAc,GAAG;AAAA,MACnB,KAAK,eAAe;AAAA,MACpB,KAAK,eAAe,KAAK,kBAAkB,KAAK;AAAA,MAChD,KAAK,SAAS,KAAK;AAAA,MACnB,IAAI,oBAAoB,GAAG;AAAA,QACzB,KAAK,aAAa;AAAA,QAClB,QAAQ,GAAG,SAAS,KAAK,eAAe;AAAA,QACxC,MAAM,aAAa,KAAK,kBAAkB,KAAK;AAAA,QAC/C,MAAM,aAAa,KAAK,WAAW,UAAU;AAAA,QAC7C,KAAK,SAAS,UAAU;AAAA,MAC1B,EAAO,SAAI,kBAAkB,KAAK,cAAc;AAAA,QAC9C,MAAM,aAAa,kBAAkB,KAAK;AAAA,QAC1C,MAAM,aAAa,KAAK,WAAW,UAAU;AAAA,QAC7C,KAAK,SAAS,UAAU;AAAA,MAC1B,EAAO,SAAI,kBAAkB,KAAK,cAAc;AAAA,QAC9C,MAAM,kBAAkB,KAAK,eAAe;AAAA,QAC5C,MAAM,WAAW,KAAK,SAAS,eAAe;AAAA,QAC9C,KAAK,SAAS,QAAQ;AAAA,MACxB;AAAA,IACF,EAAO;AAAA,MACL,IAAI,kBAAkB,GAAG;AAAA,QACvB,KAAK,iBAAiB,KAAK,iBAAiB,IAAI;AAAA,QAChD,QAAQ,IAAI,SAAS,KAAK,eAAe;AAAA,QACzC,KAAK,aAAa;AAAA,MACpB;AAAA,MACA,KAAK,eAAe;AAAA,MACpB,KAAK,eAAe;AAAA,MACpB,KAAK,SAAS,KAAK;AAAA;AAAA,IAErB,KAAK,QAAQ,KAAK;AAAA,IAClB,KAAK,IAAI,gBAAgB,KAAK,aAAa,KAAK,YAAY;AAAA,IAC5D,KAAK,IAAI,eAAe,KAAK,aAAa,KAAK,OAAO,KAAK,MAAM;AAAA,IACjE,KAAK,mBAAmB,KAAK,IAAI,cAAc,KAAK,WAAW;AAAA,IAC/D,KAAK,SAAS,OAAO,KAAK,OAAO,KAAK,MAAM;AAAA,IAC5C,KAAK,KAAK,OAAO,KAAK,OAAO,KAAK,MAAM;AAAA,IACxC,KAAK,KAAK,UAAU,KAAK,OAAO,KAAK,MAAM;AAAA,IAC3C,KAAK,cAAc;AAAA;AAAA,EAErB,uBAAuB,CAAC,OAAO,UAAU,aAAa;AAAA,IACpD,MAAM,OAAO,MAAM,SAAS;AAAA,IAC5B,QAAQ,MAAM,UAAU,IAAI;AAAA,IAC5B,IAAI,KAAK,eAAe,GAAG;AAAA,MACzB,KAAK,cAAc;AAAA,IACrB;AAAA,IACA,IAAI,OAAO,aAAa,YAAY;AAAA,MAClC,QAAQ,SAAS,QAAQ;AAAA,IAC3B;AAAA,IACA,OAAO;AAAA;AAAA,EAET,yBAAyB,GAAG;AAAA,IAC1B,KAAK,OAAO,QAAQ,KAAK;AAAA;AAAA,EAE3B,gBAAgB,CAAC,OAAO,QAAQ,OAAO;AAAA,IACrC,IAAI,QAAQ,SAAS,KAAK,CAAC;AAAA,MACzB,OAAO;AAAA,IACT,MAAM,SAAS,QAAQ,YAAY;AAAA,IACnC,MAAM,oBAAoB,KAAK,kBAAkB,KAAK;AAAA,IACtD,MAAM,QAAQ,KAAK,mBAAmB,mBAAmB,CAAC;AAAA,IAC1D,MAAM,aAAa,KAAK,kBAAkB,KAAK;AAAA,IAC/C,MAAM,OAAO,KAAK,WAAW,YAAY,CAAC;AAAA,IAC1C,IAAI,QAAQ;AAAA,IACZ,IAAI,QAAQ,GAAG;AAAA,MACb,MAAM,kBAAkB,KAAK,gBAAgB,OAAO;AAAA,MACpD,MAAM,WAAW,IAAI,OAAO,KAAK,KAAK,IAAI;AAAA,EAC9C,OAAO,KAAK;AAAA,MACR,IAAI,gBAAgB,OAAO,GAAG;AAAA,QAC5B,QAAQ;AAAA,MACV,EAAO;AAAA,QACL,QAAQ,KAAK,iBAAiB,gBAAgB,IAAI,gBAAgB,IAAI,gBAAgB,EAAE,IAAI,WAAW,KAAK;AAAA;AAAA,IAEhH;AAAA,IACA,KAAK,SAAS,QAAQ,OAAO,SAAS,KAAK;AAAA,IAC3C,OAAO;AAAA;AAAA,EAET,WAAW,GAAG;AAAA,IACZ,KAAK,YAAY;AAAA,IACjB,KAAK,IAAI,YAAY,KAAK,aAAa,KAAK,mBAAmB;AAAA;AAAA,EAEjE,YAAY,GAAG;AAAA,IACb,KAAK,YAAY;AAAA,IACjB,KAAK,sBAAsB,SAAS;AAAA,IACpC,KAAK,YAAY,MAAM;AAAA,IACvB,KAAK,IAAI,aAAa,KAAK,WAAW;AAAA;AAAA,EAExC,mBAAmB,CAAC,QAAQ,GAAG;AAAA,IAC7B,KAAK,IAAI,oBAAoB,KAAK,aAAa,KAAK;AAAA;AAAA,EAEtD,oBAAoB,GAAG;AAAA,IACrB,KAAK,IAAI,qBAAqB,KAAK,WAAW;AAAA;AAAA,MAE5C,SAAS,CAAC,WAAW;AAAA,IACvB,KAAK,aAAa;AAAA,IAClB,KAAK,IAAI,aAAa,KAAK,aAAa,SAAS;AAAA;AAAA,OAE7C,cAAa,GAAG;AAAA,IACpB,IAAI,KAAK;AAAA,MACP;AAAA,IACF,KAAK,mBAAmB;AAAA,IACxB,KAAK,IAAI,cAAc,KAAK,aAAa,KAAK,mBAAmB;AAAA,IACjE,KAAK,gBAAgB,KAAK,IAAI,wBAAwB,KAAK,WAAW;AAAA,IACtE,IAAI,KAAK,aAAa,SAAS;AAAA,MAC7B,KAAK,IAAI,gBAAgB,KAAK,aAAa,MAAM,KAAK,aAAa,MAAM;AAAA,MACzE,IAAI,CAAC,KAAK,wBAAwB;AAAA,QAChC,KAAK,yBAAyB;AAAA,QAC9B,KAAK,yBAAyB;AAAA,QAC9B,KAAK,0BAA0B;AAAA,MACjC;AAAA,IACF;AAAA,IACA,KAAK,sBAAsB,WAAW,MAAM;AAAA,MAC1C,KAAK,sBAAsB;AAAA,MAC3B,KAAK,mBAAmB,KAAK,iBAAiB;AAAA,OAC7C,IAAI;AAAA,IACP,IAAI,KAAK,WAAW;AAAA,MAClB,KAAK,YAAY;AAAA,IACnB;AAAA,IACA,KAAK,qBAAqB;AAAA;AAAA,EAE5B,iBAAiB,CAAC,SAAS;AAAA,IACzB,IAAI,KAAK,aAAa,KAAK,gBAAgB,IAAI,GAAG;AAAA,MAChD;AAAA,IACF;AAAA,IACA,KAAK,aAAa,QAAQ,IAAI;AAAA,KAC7B,KAAK,IAAI;AAAA,EACZ,eAAe,CAAC,SAAS;AAAA,IACvB,KAAK,cAAc,KAAK,OAAO;AAAA;AAAA,EAEjC,mBAAmB,CAAC,SAAS;AAAA,IAC3B,KAAK,cAAc,QAAQ,OAAO;AAAA;AAAA,EAEpC,kBAAkB,CAAC,SAAS;AAAA,IAC1B,KAAK,gBAAgB,KAAK,cAAc,OAAO,CAAC,OAAO,OAAO,OAAO;AAAA;AAAA,EAEvE,qBAAqB,CAAC,aAAa;AAAA,IACjC,IAAI,qBAAqB,QAAQ,GAAG;AAAA,MAClC,KAAK,IAAI,0BAA0B,KAAK,aAAa,QAAQ;AAAA,MAC7D,KAAK,gBAAgB,KAAK,IAAI,wBAAwB,KAAK,WAAW;AAAA,MACtE,KAAK,KAAK,gBAAgB,KAAK,aAAa;AAAA,MAC5C,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,KACN,KAAK,IAAI;AAAA,EACZ,gBAAgB,CAAC,aAAa;AAAA,IAC5B,IAAI,aAAa,UAAU;AAAA,MACzB,KAAK,IAAI,qBAAqB,KAAK,WAAW;AAAA,MAC9C,KAAK,KAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,IACA,IAAI,aAAa,UAAU;AAAA,MACzB,KAAK,KAAK,MAAM;AAAA,MAChB,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,KACN,KAAK,IAAI;AAAA,EACZ,oBAAoB,CAAC,aAAa;AAAA,IAChC,IAAI,aAAa,gBAAgB;AAAA,MAC/B,IAAI,KAAK,eAAe,QAAQ;AAAA,QAC9B,KAAK,aAAa;AAAA,QAClB,KAAK,KAAK,cAAc,MAAM;AAAA,MAChC;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,IAAI,aAAa,gBAAgB;AAAA,MAC/B,IAAI,KAAK,eAAe,SAAS;AAAA,QAC/B,KAAK,aAAa;AAAA,QAClB,KAAK,KAAK,cAAc,OAAO;AAAA,MACjC;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,KACN,KAAK,IAAI;AAAA,EACZ,UAAU,GAAG;AAAA,IACX,WAAW,WAAW,KAAK,wBAAwB;AAAA,MACjD,KAAK,gBAAgB,OAAO;AAAA,IAC9B;AAAA,IACA,KAAK,gBAAgB,CAAC,aAAa;AAAA,MACjC,IAAI,0BAA0B,QAAQ,KAAK,KAAK,2BAA2B;AAAA,QACzE,MAAM,aAAa,qBAAqB,QAAQ;AAAA,QAChD,IAAI,YAAY;AAAA,UACd,KAAK,cAAc;AAAA,UACnB,KAAK,4BAA4B;AAAA,QACnC;AAAA,QACA,OAAO;AAAA,MACT;AAAA,MACA,OAAO;AAAA,KACR;AAAA,IACD,KAAK,gBAAgB,KAAK,iBAAiB;AAAA,IAC3C,KAAK,gBAAgB,KAAK,YAAY;AAAA,IACtC,KAAK,gBAAgB,KAAK,gBAAgB;AAAA,IAC1C,KAAK,gBAAgB,CAAC,aAAa;AAAA,MACjC,OAAO,KAAK,YAAY,aAAa,QAAQ;AAAA,KAC9C;AAAA,IACD,IAAI,KAAK,MAAM,YAAY;AAAA,MACzB,KAAK,MAAM,WAAW,IAAI;AAAA,IAC5B;AAAA,IACA,KAAK,MAAM,OAAO;AAAA,IAClB,KAAK,MAAM,YAAY,MAAM;AAAA,IAC7B,KAAK,MAAM,GAAG,QAAQ,KAAK,aAAa;AAAA,IACxC,KAAK,aAAa,GAAG,QAAQ,CAAC,aAAa;AAAA,MACzC,IAAI,KAAK,mBAAmB;AAAA,QAC1B,KAAK,aAAa,KAAK;AAAA,UACrB,WAAW,IAAI,KAAK,EAAE,YAAY;AAAA,UAClC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,WAAW,WAAW,KAAK,eAAe;AAAA,QACxC,IAAI,QAAQ,QAAQ,GAAG;AAAA,UACrB;AAAA,QACF;AAAA,MACF;AAAA,KACD;AAAA,IACD,KAAK,aAAa,GAAG,SAAS,CAAC,SAAS;AAAA,MACtC,KAAK,YAAY,aAAa,IAAI;AAAA,KACnC;AAAA;AAAA,EAEH,kBAAkB,CAAC,QAAQ,YAAY;AAAA,IACrC,MAAM,QAAQ,IAAI,WAAW,QAAQ,UAAU;AAAA,IAC/C,OAAO,kBAAkB,KAAK;AAAA,IAC9B,IAAI,KAAK,aAAa,MAAM,SAAS,UAAU,MAAM,WAAW,KAAgB,CAAC,MAAM,kBAAkB;AAAA,MACvG,IAAI,UAAU;AAAA,MACd,OAAO,SAAS;AAAA,QACd,IAAI,QAAQ,WAAW;AAAA,UACrB,QAAQ,MAAM;AAAA,UACd;AAAA,QACF;AAAA,QACA,UAAU,QAAQ;AAAA,MACpB;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAET,eAAe,CAAC,MAAM;AAAA,IACpB,MAAM,cAAc,KAAK,YAAY,oBAAoB,IAAI;AAAA,IAC7D,IAAI,YAAY,WAAW;AAAA,MACzB,OAAO;AAAA,IACT,IAAI,aAAa;AAAA,IACjB,WAAW,cAAc,aAAa;AAAA,MACpC,IAAI,KAAK,wBAAwB,UAAU,GAAG;AAAA,QAC5C,aAAa;AAAA,MACf;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAET,uBAAuB,CAAC,YAAY;AAAA,IAClC,IAAI,KAAK,eAAe,GAAG;AAAA,MACzB,IAAI,WAAW,IAAI,KAAK,cAAc;AAAA,QACpC,OAAO;AAAA,MACT;AAAA,MACA,WAAW,KAAK,KAAK;AAAA,IACvB;AAAA,IACA,KAAK,eAAe,IAAI,WAAW;AAAA,IACnC,KAAK,eAAe,IAAI,WAAW;AAAA,IACnC,KAAK,cAAc;AAAA,IACnB,KAAK,wBAAwB,WAAW;AAAA,IACxC,IAAI,KAAK,SAAS,SAAS;AAAA,MACzB,MAAM,gBAAgB,KAAK,SAAS;AAAA,MACpC,IAAI,WAAW,KAAK,cAAc,KAAK,WAAW,IAAI,cAAc,IAAI,cAAc,SAAS,WAAW,KAAK,cAAc,KAAK,WAAW,IAAI,cAAc,IAAI,cAAc,QAAQ;AAAA,QACvL,MAAM,SAAS,IAAI,WAAW,MAAM,UAAU;AAAA,QAC9C,MAAM,UAAU,KAAK,SAAS,YAAY,MAAM;AAAA,QAChD,IAAI;AAAA,UACF,OAAO;AAAA,MACX;AAAA,IACF;AAAA,IACA,IAAI,WAAW,SAAS,UAAU;AAAA,MAChC,MAAM,qBAAqB,KAAK,QAAQ,WAAW,GAAG,WAAW,CAAC;AAAA,MAClE,MAAM,mBAAmB,WAAW,oBAAoB,IAAI,kBAAkB;AAAA,MAC9E,MAAM,iBAAiB,KAAK,6BAA6B,CAAC,KAAK,0BAA0B,eAAe,KAAK,0BAA0B,UAAU,KAAK,4BAA4B;AAAA,MAClL,MAAM,eAAe,oBAAoB;AAAA,MACzC,IAAI,cAAc;AAAA,QAChB,MAAM,SAAS,IAAI,WAAW,cAAc,UAAU;AAAA,QACtD,aAAa,kBAAkB,MAAM;AAAA,MACvC;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,MAAM,oBAAoB,KAAK,QAAQ,WAAW,GAAG,WAAW,CAAC;AAAA,IACjE,MAAM,cAAc,sBAAsB,KAAK;AAAA,IAC/C,KAAK,wBAAwB;AAAA,IAC7B,MAAM,kBAAkB,WAAW,oBAAoB,IAAI,iBAAiB;AAAA,IAC5E,IAAI,WAAW,SAAS,UAAU,WAAW,WAAW,KAAgB,CAAC,KAAK,kBAAkB,cAAc,CAAC,WAAW,UAAU,MAAM;AAAA,MACxI,IAAI,mBAAmB,gBAAgB,cAAc,CAAC,gBAAgB,eAAe,gBAAgB,qBAAqB,WAAW,GAAG,WAAW,CAAC,GAAG;AAAA,QACrJ,KAAK,eAAe,iBAAiB,WAAW,GAAG,WAAW,CAAC;AAAA,QAC/D,KAAK,mBAAmB,iBAAiB,UAAU;AAAA,QACnD,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,IAAI,WAAW,SAAS,UAAU,KAAK,kBAAkB,YAAY;AAAA,MACnE,KAAK,gBAAgB,iBAAiB,WAAW,GAAG,WAAW,CAAC;AAAA,MAChE,IAAI,iBAAiB;AAAA,QACnB,MAAM,SAAS,IAAI,WAAW,iBAAiB,KAAK,YAAY,YAAY,KAAK,CAAC;AAAA,QAClF,gBAAgB,kBAAkB,MAAM;AAAA,MAC1C;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,IAAI,WAAW,SAAS,QAAQ,KAAK,kBAAkB,YAAY;AAAA,MACjE,IAAI,iBAAiB;AAAA,QACnB,MAAM,SAAS,IAAI,WAAW,iBAAiB,KAAK,YAAY,YAAY,KAAK,CAAC;AAAA,QAClF,gBAAgB,kBAAkB,MAAM;AAAA,MAC1C;AAAA,MACA,KAAK,gBAAgB;AAAA,MACrB,OAAO;AAAA,IACT;AAAA,IACA,IAAI,WAAW,SAAS,UAAU,WAAW,WAAW,KAAgB,KAAK,kBAAkB;AAAA,MAC7F,IAAI,WAAW,UAAU,MAAM;AAAA,QAC7B,KAAK,iBAAiB,aAAa;AAAA,QACnC,KAAK,gBAAgB,iBAAiB,WAAW,GAAG,WAAW,CAAC;AAAA,QAChE,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,IAAI,CAAC,gBAAgB,WAAW,SAAS,UAAU,WAAW,SAAS,SAAS;AAAA,MAC9E,IAAI,KAAK,sBAAsB,KAAK,uBAAuB,KAAK,oBAAoB;AAAA,QAClF,MAAM,SAAS,IAAI,WAAW,KAAK,oBAAoB,KAAK,YAAY,MAAM,MAAM,CAAC;AAAA,QACrF,KAAK,mBAAmB,kBAAkB,MAAM;AAAA,MAClD;AAAA,MACA,KAAK,qBAAqB;AAAA,MAC1B,IAAI,iBAAiB;AAAA,QACnB,MAAM,SAAS,IAAI,WAAW,iBAAiB;AAAA,aAC1C;AAAA,UACH,MAAM;AAAA,UACN,QAAQ,KAAK;AAAA,QACf,CAAC;AAAA,QACD,gBAAgB,kBAAkB,MAAM;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,IAAI,KAAK,sBAAsB,WAAW,SAAS,MAAM;AAAA,MACvD,MAAM,SAAS,IAAI,WAAW,KAAK,oBAAoB,UAAU;AAAA,MACjE,KAAK,mBAAmB,kBAAkB,MAAM;AAAA,MAChD,OAAO;AAAA,IACT;AAAA,IACA,IAAI,KAAK,sBAAsB,WAAW,SAAS,MAAM;AAAA,MACvD,MAAM,SAAS,IAAI,WAAW,KAAK,oBAAoB,KAAK,YAAY,MAAM,WAAW,CAAC;AAAA,MAC1F,KAAK,mBAAmB,kBAAkB,MAAM;AAAA,MAChD,KAAK,mBAAmB,kBAAkB,IAAI,WAAW,KAAK,oBAAoB,UAAU,CAAC;AAAA,MAC7F,IAAI,iBAAiB;AAAA,QACnB,MAAM,SAAS,IAAI,WAAW,iBAAiB;AAAA,aAC1C;AAAA,UACH,MAAM;AAAA,UACN,QAAQ,KAAK;AAAA,QACf,CAAC;AAAA,QACD,gBAAgB,kBAAkB,MAAM;AAAA,MAC1C;AAAA,MACA,KAAK,qBAAqB,KAAK;AAAA,MAC/B,KAAK,wBAAwB,KAAK,mBAAmB;AAAA,MACrD,KAAK,sBAAsB,SAAS;AAAA,MACpC,KAAK,cAAc;AAAA,IACrB;AAAA,IACA,IAAI;AAAA,IACJ,IAAI,iBAAiB;AAAA,MACnB,IAAI,WAAW,SAAS,UAAU,WAAW,WAAW,GAAc;AAAA,QACpE,KAAK,sBAAsB,eAAe;AAAA,MAC5C,EAAO;AAAA,QACL,KAAK,sBAAsB,SAAS;AAAA;AAAA,MAEtC,QAAQ,KAAK,mBAAmB,iBAAiB,UAAU;AAAA,IAC7D,EAAO;AAAA,MACL,KAAK,sBAAsB,SAAS;AAAA,MACpC,KAAK,qBAAqB;AAAA;AAAA,IAE5B,IAAI,CAAC,OAAO,oBAAoB,WAAW,SAAS,UAAU,KAAK,kBAAkB;AAAA,MACnF,KAAK,eAAe;AAAA,IACtB;AAAA,IACA,OAAO;AAAA;AAAA,EAET,iBAAiB,GAAG;AAAA,IAClB,IAAI,KAAK,gBAAgB,CAAC,KAAK;AAAA,MAC7B;AAAA,IACF,IAAI,KAAK;AAAA,MACP;AAAA,IACF,MAAM,QAAQ,KAAK,QAAQ,KAAK,eAAe,GAAG,KAAK,eAAe,CAAC;AAAA,IACvE,MAAM,gBAAgB,WAAW,oBAAoB,IAAI,KAAK;AAAA,IAC9D,MAAM,WAAW,KAAK;AAAA,IACtB,IAAI,UAAU,QAAQ,OAAO;AAAA,MAC3B,KAAK,wBAAwB;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,MAAM,YAAY;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,GAAG,KAAK,eAAe;AAAA,MACvB,GAAG,KAAK,eAAe;AAAA,MACvB,WAAW,KAAK;AAAA,IAClB;AAAA,IACA,IAAI,UAAU;AAAA,MACZ,MAAM,QAAQ,IAAI,WAAW,UAAU,KAAK,WAAW,MAAM,MAAM,CAAC;AAAA,MACpE,SAAS,kBAAkB,KAAK;AAAA,IAClC;AAAA,IACA,KAAK,qBAAqB;AAAA,IAC1B,KAAK,wBAAwB;AAAA,IAC7B,IAAI,eAAe;AAAA,MACjB,MAAM,QAAQ,IAAI,WAAW,eAAe;AAAA,WACvC;AAAA,QACH,MAAM;AAAA,MACR,CAAC;AAAA,MACD,cAAc,kBAAkB,KAAK;AAAA,IACvC;AAAA;AAAA,EAEF,eAAe,CAAC,OAAO;AAAA,IACrB,KAAK,4BAA4B;AAAA,IACjC,KAAK,IAAI,sBAAsB,KAAK,aAAa,EAAE,QAAQ,MAAM,CAAC;AAAA;AAAA,EAEpE,OAAO,CAAC,GAAG,GAAG;AAAA,IACZ,OAAO,KAAK,IAAI,SAAS,KAAK,aAAa,GAAG,CAAC;AAAA;AAAA,EAEjD,kBAAkB,GAAG;AAAA,IACnB,IAAI,KAAK;AAAA,MACP;AAAA,IACF,MAAM,cAAc,QAAQ,YAAY;AAAA,IACxC,KAAK,qBAAqB;AAAA,MACxB,UAAU,YAAY;AAAA,MACtB,WAAW,YAAY;AAAA,MACvB,cAAc,YAAY;AAAA,IAC5B;AAAA,IACA,KAAK,IAAI,kBAAkB,KAAK,aAAa,KAAK,mBAAmB,UAAU,KAAK,mBAAmB,WAAW,KAAK,mBAAmB,YAAY;AAAA,IACtJ,KAAK,KAAK,mBAAmB,KAAK,kBAAkB;AAAA;AAAA,EAEtD,wBAAwB,GAAG;AAAA,IACzB,KAAK,wBAAwB;AAAA,IAC7B,KAAK,sBAAsB,YAAY,MAAM;AAAA,MAC3C,KAAK,mBAAmB;AAAA,OACvB,KAAK,sBAAsB;AAAA;AAAA,EAEhC,uBAAuB,GAAG;AAAA,IACxB,IAAI,KAAK,qBAAqB;AAAA,MAC5B,cAAc,KAAK,mBAAmB;AAAA,MACtC,KAAK,sBAAsB;AAAA,IAC7B;AAAA;AAAA,EAEF,yBAAyB,CAAC,UAAU;AAAA,IAClC,KAAK,yBAAyB;AAAA,IAC9B,IAAI,KAAK,cAAc,WAAW,GAAG;AAAA,MACnC,KAAK,yBAAyB;AAAA,IAChC,EAAO,SAAI,YAAY,KAAK,KAAK,qBAAqB;AAAA,MACpD,cAAc,KAAK,mBAAmB;AAAA,MACtC,KAAK,sBAAsB;AAAA,IAC7B;AAAA;AAAA,EAEF,YAAY,CAAC,OAAO,QAAQ;AAAA,IAC1B,IAAI,KAAK;AAAA,MACP;AAAA,IACF,IAAI,KAAK,eAAe,GAAG;AAAA,MACzB,KAAK,cAAc,OAAO,MAAM;AAAA,MAChC;AAAA,IACF;AAAA,IACA,IAAI,KAAK,oBAAoB,MAAM;AAAA,MACjC,aAAa,KAAK,eAAe;AAAA,MACjC,KAAK,kBAAkB;AAAA,IACzB;AAAA,IACA,KAAK,kBAAkB,WAAW,MAAM;AAAA,MACtC,KAAK,kBAAkB;AAAA,MACvB,KAAK,cAAc,OAAO,MAAM;AAAA,OAC/B,KAAK,mBAAmB;AAAA;AAAA,EAE7B,oBAAoB,GAAG;AAAA,IACrB,KAAK,4BAA4B;AAAA,IACjC,KAAK,IAAI,qBAAqB,KAAK,WAAW;AAAA;AAAA,EAEhD,aAAa,CAAC,OAAO,QAAQ;AAAA,IAC3B,IAAI,UAAU,KAAK,kBAAkB,WAAW,KAAK;AAAA,MACnD;AAAA,IACF,MAAM,YAAY,KAAK;AAAA,IACvB,KAAK,iBAAiB;AAAA,IACtB,KAAK,kBAAkB;AAAA,IACvB,KAAK,qBAAqB;AAAA,IAC1B,KAAK,sBAAsB,SAAS;AAAA,IACpC,KAAK,YAAY,MAAM;AAAA,IACvB,IAAI,KAAK,eAAe,GAAG;AAAA,MACzB,IAAI,QAAQ,WAAW;AAAA,QACrB,MAAM,QAAQ,KAAK,kBAAkB,KAAK,eAAe;AAAA,QACzD,MAAM,QAAQ,KAAK,mBAAmB,OAAO,CAAC;AAAA,QAC9C,KAAK,SAAS,KAAK;AAAA,MACrB;AAAA,MACA,KAAK,eAAe,SAAS,KAAK;AAAA,MAClC,KAAK,QAAQ;AAAA,MACb,KAAK,SAAS,KAAK;AAAA,MACnB,KAAK,oBAAoB,MAAM,KAAK,eAAe;AAAA,MACnD,KAAK,IAAI,gBAAgB,KAAK,aAAa,KAAK,YAAY;AAAA,IAC9D,EAAO;AAAA,MACL,KAAK,QAAQ;AAAA,MACb,KAAK,SAAS;AAAA;AAAA,IAEhB,KAAK,IAAI,eAAe,KAAK,aAAa,KAAK,OAAO,KAAK,MAAM;AAAA,IACjE,KAAK,mBAAmB,KAAK,IAAI,cAAc,KAAK,WAAW;AAAA,IAC/D,KAAK,sBAAsB,KAAK,IAAI,iBAAiB,KAAK,WAAW;AAAA,IACrE,KAAK,SAAS,OAAO,KAAK,OAAO,KAAK,MAAM;AAAA,IAC5C,KAAK,KAAK,OAAO,KAAK,OAAO,KAAK,MAAM;AAAA,IACxC,KAAK,KAAK,UAAU,KAAK,OAAO,KAAK,MAAM;AAAA,IAC3C,KAAK,cAAc;AAAA;AAAA,EAErB,kBAAkB,CAAC,OAAO;AAAA,IACxB,MAAM,cAAc,WAAW,KAAK;AAAA,IACpC,KAAK,IAAI,mBAAmB,KAAK,aAAa,WAAW;AAAA,IACzD,KAAK,kBAAkB;AAAA,IACvB,KAAK,iBAAiB,MAAM,WAAW;AAAA,IACvC,KAAK,cAAc;AAAA;AAAA,EAErB,kBAAkB,GAAG;AAAA,IACnB,MAAM,gBAAgB,CAAC,KAAK,aAAa;AAAA,IACzC,IAAI,iBAAiB,CAAC,KAAK,wBAAwB;AAAA,MACjD,KAAK,yBAAyB;AAAA,MAC9B,KAAK,yBAAyB;AAAA,MAC9B,KAAK,0BAA0B;AAAA,IACjC,EAAO,SAAI,CAAC,iBAAiB,KAAK,yBAAyB;AAAA,MACzD,KAAK,wBAAwB;AAAA,MAC7B,KAAK,yBAAyB;AAAA,MAC9B,KAAK,0BAA0B;AAAA,IACjC;AAAA,IACA,KAAK,aAAa,UAAU,CAAC,KAAK,aAAa;AAAA,IAC/C,KAAK,IAAI,gBAAgB,KAAK,aAAa,KAAK,aAAa,SAAS,KAAK,aAAa,MAAM;AAAA,IAC9F,KAAK,KAAK,uBAAkD,KAAK,aAAa,OAAO;AAAA,IACrF,KAAK,cAAc;AAAA;AAAA,EAErB,qBAAqB,CAAC,SAAS;AAAA,IAC7B,KAAK,aAAa,UAAU,QAAQ,WAAW,KAAK,aAAa;AAAA,IACjE,KAAK,aAAa,SAAS,QAAQ,UAAU,KAAK,aAAa;AAAA,IAC/D,KAAK,IAAI,gBAAgB,KAAK,aAAa,KAAK,aAAa,SAAS,KAAK,aAAa,MAAM;AAAA,IAC9F,KAAK,cAAc;AAAA;AAAA,EAErB,gBAAgB,CAAC,OAAO;AAAA,IACtB,KAAK,IAAI,iBAAiB,KAAK,aAAa,KAAK;AAAA;AAAA,EAEnD,oBAAoB,CAAC,MAAM,QAAQ;AAAA,IACjC,OAAO,KAAK,UAAU,qBAAqB,MAAM,MAAM;AAAA;AAAA,EAEzD,mBAAmB,CAAC,QAAQ;AAAA,IAC1B,OAAO,KAAK,UAAU,oBAAoB,MAAM;AAAA;AAAA,EAElD,gBAAgB,GAAG;AAAA,IACjB,OAAO,KAAK,eAAe,SAAS,KAAK,UAAU,iBAAiB;AAAA;AAAA,EAEtE,WAAW,GAAG;AAAA,IACZ,KAAK,IAAI,YAAY,KAAK,WAAW;AAAA;AAAA,EAEvC,WAAW,CAAC,WAAW;AAAA,IACrB,KAAK,IAAI,YAAY,KAAK,aAAa,SAAS;AAAA;AAAA,EAElD,gBAAgB,CAAC,WAAW;AAAA,IAC1B,KAAK,IAAI,iBAAiB,KAAK,aAAa,SAAS;AAAA;AAAA,SAEhD,iBAAiB,CAAC,UAAU,GAAG,GAAG,UAAU,MAAM;AAAA,IACvD,MAAM,MAAM,iBAAiB;AAAA,IAC7B,IAAI,kBAAkB,SAAS,aAAa,GAAG,GAAG,OAAO;AAAA;AAAA,SAEpD,cAAc,CAAC,UAAU,SAAS;AAAA,IACvC,MAAM,MAAM,iBAAiB;AAAA,IAC7B,IAAI,sBAAsB,SAAS,aAAa,OAAO;AAAA,IACvD,IAAI,QAAQ,WAAW,WAAW;AAAA,MAChC,SAAS,4BAA4B,QAAQ;AAAA,IAC/C;AAAA;AAAA,SAEK,cAAc,CAAC,UAAU,OAAO;AAAA,IACrC,MAAM,MAAM,iBAAiB;AAAA,IAC7B,IAAI,eAAe,SAAS,aAAa,KAAK;AAAA;AAAA,EAEhD,iBAAiB,CAAC,GAAG,GAAG,UAAU,MAAM;AAAA,IACtC,KAAK,IAAI,kBAAkB,KAAK,aAAa,GAAG,GAAG,OAAO;AAAA;AAAA,EAE5D,cAAc,CAAC,SAAS;AAAA,IACtB,KAAK,IAAI,sBAAsB,KAAK,aAAa,OAAO;AAAA,IACxD,IAAI,QAAQ,WAAW,WAAW;AAAA,MAChC,KAAK,4BAA4B,QAAQ;AAAA,IAC3C;AAAA;AAAA,EAEF,cAAc,CAAC,OAAO;AAAA,IACpB,KAAK,IAAI,eAAe,KAAK,aAAa,KAAK;AAAA;AAAA,EAEjD,cAAc,GAAG;AAAA,IACf,OAAO,KAAK,IAAI,eAAe,KAAK,WAAW;AAAA;AAAA,EAEjD,gBAAgB,CAAC,WAAW;AAAA,IAC1B,KAAK,eAAe,KAAK,SAAS;AAAA;AAAA,EAEpC,mBAAmB,CAAC,WAAW;AAAA,IAC7B,KAAK,iBAAiB,KAAK,eAAe,OAAO,CAAC,OAAO,OAAO,SAAS;AAAA;AAAA,EAE3E,mBAAmB,GAAG;AAAA,IACpB,KAAK,iBAAiB,CAAC;AAAA;AAAA,EAEzB,gBAAgB,CAAC,UAAU;AAAA,IACzB,KAAK,eAAe,KAAK,QAAQ;AAAA;AAAA,EAEnC,mBAAmB,CAAC,UAAU;AAAA,IAC5B,KAAK,iBAAiB,KAAK,eAAe,OAAO,CAAC,OAAO,OAAO,QAAQ;AAAA;AAAA,EAE1E,mBAAmB,GAAG;AAAA,IACpB,KAAK,iBAAiB,CAAC;AAAA;AAAA,EAEzB,WAAW,GAAG;AAAA,IACZ,KAAK;AAAA,IACL,IAAI,KAAK,kBAAkB,UAAqB,KAAK,qBAAqB,GAAG;AAAA,MAC3E,KAAK,gBAAgB;AAAA,MACrB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,EAEF,QAAQ,GAAG;AAAA,IACT,KAAK,qBAAqB,KAAK,IAAI,GAAG,KAAK,qBAAqB,CAAC;AAAA,IACjE,IAAI,KAAK,kBAAkB,kBAAqC,KAAK,uBAAuB,GAAG;AAAA,MAC7F,KAAK,gBAAgB;AAAA,MACrB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,EAEF,KAAK,GAAG;AAAA,IACN,KAAK,gBAAgB;AAAA,IACrB,KAAK,cAAc;AAAA;AAAA,EAErB,IAAI,GAAG;AAAA,IACL,KAAK,gBAAgB,KAAK,aAAa,iBAAoC;AAAA;AAAA,EAE7E,aAAa,GAAG;AAAA,IACd,IAAI,CAAC,KAAK,cAAc,CAAC,KAAK,cAAc;AAAA,MAC1C,KAAK,aAAa;AAAA,MAClB,IAAI,KAAK,yBAAyB,GAAG;AAAA,QACnC,KAAK,yBAAyB;AAAA,MAChC;AAAA,MACA,KAAK,gBAAgB;AAAA,IACvB;AAAA;AAAA,EAEF,KAAK,GAAG;AAAA,IACN,KAAK,gBAAgB;AAAA,IACrB,KAAK,cAAc;AAAA;AAAA,EAErB,OAAO,GAAG;AAAA,IACR,KAAK,wBAAwB,KAAK;AAAA,IAClC,KAAK,gBAAgB;AAAA,IACrB,KAAK,cAAc;AAAA,IACnB,KAAK,yBAAyB,KAAK;AAAA,IACnC,KAAK,aAAa;AAAA,IAClB,KAAK,oBAAoB;AAAA,IACzB,KAAK,aAAa,MAAM;AAAA,IACxB,KAAK,MAAM,eAAe,QAAQ,KAAK,aAAa;AAAA,IACpD,KAAK,IAAI,gBAAgB,KAAK,WAAW;AAAA,IACzC,IAAI,KAAK,MAAM,YAAY;AAAA,MACzB,KAAK,MAAM,WAAW,KAAK;AAAA,IAC7B;AAAA,IACA,KAAK,MAAM,MAAM;AAAA;AAAA,EAEnB,MAAM,GAAG;AAAA,IACP,IAAI,KAAK,MAAM,YAAY;AAAA,MACzB,KAAK,MAAM,WAAW,IAAI;AAAA,IAC5B;AAAA,IACA,KAAK,MAAM,OAAO;AAAA,IAClB,KAAK,iBAAiB;AAAA,IACtB,aAAa,MAAM;AAAA,MACjB,OAAO,KAAK,MAAM,KAAK,MAAM,MAAM,CAAC;AAAA,MACpC,KAAK,MAAM,GAAG,QAAQ,KAAK,aAAa;AAAA,KACzC;AAAA,IACD,KAAK,IAAI,eAAe,KAAK,WAAW;AAAA,IACxC,IAAI,KAAK,wBAAwB;AAAA,MAC/B,KAAK,YAAY;AAAA,IACnB;AAAA,IACA,KAAK,oBAAoB,MAAM,KAAK,eAAe;AAAA,IACnD,KAAK,gBAAgB,KAAK;AAAA,IAC1B,IAAI,KAAK,0BAA0B,kBAAqC,KAAK,0BAA0B,oBAA2C;AAAA,MAChJ,KAAK,cAAc;AAAA,IACrB,EAAO;AAAA,MACL,KAAK,cAAc;AAAA;AAAA;AAAA,EAGvB,aAAa,GAAG;AAAA,IACd,KAAK,aAAa;AAAA;AAAA,EAEpB,IAAI,GAAG;AAAA,IACL,KAAK,gBAAgB;AAAA,IACrB,KAAK,aAAa;AAAA;AAAA,EAEpB,YAAY,GAAG;AAAA,IACb,IAAI,KAAK,aAAa,CAAC,KAAK,cAAc;AAAA,MACxC,KAAK,aAAa;AAAA,MAClB,IAAI,KAAK,qBAAqB;AAAA,QAC5B,cAAc,KAAK,mBAAmB;AAAA,QACtC,KAAK,sBAAsB;AAAA,MAC7B;AAAA,MACA,IAAI,KAAK,eAAe;AAAA,QACtB,aAAa,KAAK,aAAa;AAAA,QAC/B,KAAK,gBAAgB;AAAA,MACvB;AAAA,MACA,IAAI,CAAC,KAAK,WAAW;AAAA,QACnB,KAAK,oBAAoB;AAAA,MAC3B;AAAA,IACF;AAAA;AAAA,EAEF,OAAO,GAAG;AAAA,IACR,IAAI,KAAK;AAAA,MACP;AAAA,IACF,KAAK,eAAe;AAAA,IACpB,KAAK,kBAAkB;AAAA,IACvB,IAAI,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAAA,IACA,KAAK,gBAAgB;AAAA;AAAA,EAEvB,eAAe,GAAG;AAAA,IAChB,IAAI,KAAK;AAAA,MACP;AAAA,IACF,KAAK,oBAAoB;AAAA,IACzB,KAAK,kBAAkB;AAAA,IACvB,QAAQ,eAAe,YAAY,KAAK,eAAe;AAAA,IACvD,QAAQ,eAAe,qBAAqB,KAAK,WAAW;AAAA,IAC5D,QAAQ,eAAe,sBAAsB,KAAK,WAAW;AAAA,IAC7D,QAAQ,eAAe,WAAW,KAAK,cAAc;AAAA,IACrD,QAAQ,eAAe,cAAc,KAAK,WAAW;AAAA,IACrD,QAAQ,eAAe,SAAS,KAAK,eAAe;AAAA,IACpD,KAAK,oBAAoB;AAAA,IACzB,IAAI,KAAK,oBAAoB,MAAM;AAAA,MACjC,aAAa,KAAK,eAAe;AAAA,MACjC,KAAK,kBAAkB;AAAA,IACzB;AAAA,IACA,IAAI,KAAK,wBAAwB,MAAM;AAAA,MACrC,aAAa,KAAK,mBAAmB;AAAA,MACrC,KAAK,sBAAsB;AAAA,IAC7B;AAAA,IACA,IAAI,KAAK,qBAAqB;AAAA,MAC5B,cAAc,KAAK,mBAAmB;AAAA,IACxC;AAAA,IACA,IAAI,KAAK,kBAAkB;AAAA,MACzB,KAAK,iBAAiB,QAAQ;AAAA,MAC9B,KAAK,mBAAmB;AAAA,IAC1B;AAAA,IACA,KAAK,2BAA2B;AAAA,IAChC,KAAK,iBAAiB;AAAA,IACtB,KAAK,KAAK,SAAuB;AAAA,IACjC,IAAI,KAAK,eAAe;AAAA,MACtB,aAAa,KAAK,aAAa;AAAA,MAC/B,KAAK,gBAAgB;AAAA,IACvB;AAAA,IACA,KAAK,aAAa;AAAA,IAClB,KAAK,4BAA4B;AAAA,IACjC,KAAK,sBAAsB,SAAS;AAAA,IACpC,IAAI;AAAA,MACF,KAAK,KAAK,mBAAmB;AAAA,MAC7B,OAAO,GAAG;AAAA,MACV,QAAQ,MAAM,qCAAqC,aAAa,QAAQ,EAAE,QAAQ,OAAO,CAAC,CAAC;AAAA;AAAA,IAE7F,KAAK,aAAa,QAAQ;AAAA,IAC1B,KAAK,SAAS,QAAQ;AAAA,IACtB,KAAK,0BAA0B;AAAA,IAC/B,IAAI,KAAK,eAAe,GAAG;AAAA,MACzB,KAAK,iBAAiB,KAAK,cAAc,IAAI;AAAA,IAC/C;AAAA,IACA,IAAI,KAAK,MAAM,YAAY;AAAA,MACzB,KAAK,MAAM,WAAW,KAAK;AAAA,IAC7B;AAAA,IACA,KAAK,MAAM,eAAe,QAAQ,KAAK,aAAa;AAAA,IACpD,KAAK,IAAI,gBAAgB,KAAK,WAAW;AAAA,IACzC,gBAAgB,eAAe,IAAI;AAAA,IACnC,IAAI,KAAK,YAAY;AAAA,MACnB,IAAI;AAAA,QACF,KAAK,WAAW;AAAA,QAChB,OAAO,GAAG;AAAA,QACV,QAAQ,MAAM,gCAAgC,aAAa,QAAQ,EAAE,QAAQ,OAAO,CAAC,CAAC;AAAA;AAAA,IAE1F;AAAA,IACA,KAAK,oBAAoB;AAAA;AAAA,EAE3B,eAAe,GAAG;AAAA,IAChB,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,KAAK,WAAW,KAAK,IAAI;AAAA,IACzB,KAAK,aAAa;AAAA,IAClB,KAAK,cAAc,KAAK;AAAA,IACxB,KAAK,aAAa;AAAA,IAClB,KAAK,KAAK;AAAA;AAAA,OAEN,KAAI,GAAG;AAAA,IACX,IAAI,KAAK,aAAa,KAAK;AAAA,MACzB;AAAA,IACF,KAAK,gBAAgB;AAAA,IACrB,KAAK,YAAY;AAAA,IACjB,IAAI,KAAK,eAAe;AAAA,MACtB,aAAa,KAAK,aAAa;AAAA,MAC/B,KAAK,gBAAgB;AAAA,IACvB;AAAA,IACA,IAAI;AAAA,MACF,MAAM,MAAM,KAAK,IAAI;AAAA,MACrB,MAAM,UAAU,MAAM,KAAK;AAAA,MAC3B,MAAM,YAAY;AAAA,MAClB,KAAK,WAAW;AAAA,MAChB,KAAK;AAAA,MACL,IAAI,MAAM,KAAK,eAAe,MAAM;AAAA,QAClC,KAAK,aAAa,KAAK;AAAA,QACvB,KAAK,aAAa;AAAA,QAClB,KAAK,cAAc;AAAA,MACrB;AAAA,MACA,KAAK,YAAY;AAAA,MACjB,KAAK,YAAY,MAAM,KAAK;AAAA,MAC5B,MAAM,eAAe,YAAY,IAAI;AAAA,MACrC,MAAM,gBAAgB,MAAM,KAAK,KAAK,iBAAiB,OAAO,CAAC;AAAA,MAC/D,KAAK,iBAAiB,MAAM;AAAA,MAC5B,MAAM,wBAAwB,YAAY,IAAI;AAAA,MAC9C,WAAW,YAAY,eAAe;AAAA,QACpC,SAAS,SAAS;AAAA,QAClB,KAAK,SAAS;AAAA,MAChB;AAAA,MACA,MAAM,sBAAsB,YAAY,IAAI;AAAA,MAC5C,MAAM,uBAAuB,sBAAsB;AAAA,MACnD,MAAM,QAAQ,YAAY,IAAI;AAAA,MAC9B,WAAW,iBAAiB,KAAK,gBAAgB;AAAA,QAC/C,IAAI;AAAA,UACF,MAAM,cAAc,SAAS;AAAA,UAC7B,OAAO,OAAO;AAAA,UACd,QAAQ,MAAM,4BAA4B,KAAK;AAAA;AAAA,MAEnD;AAAA,MACA,MAAM,MAAM,YAAY,IAAI;AAAA,MAC5B,KAAK,YAAY,oBAAoB,MAAM;AAAA,MAC3C,KAAK,KAAK,OAAO,KAAK,kBAAkB,SAAS;AAAA,MACjD,WAAW,iBAAiB,KAAK,gBAAgB;AAAA,QAC/C,cAAc,KAAK,kBAAkB,SAAS;AAAA,MAChD;AAAA,MACA,KAAK,SAAS,eAAe,KAAK,gBAAgB;AAAA,MAClD,IAAI,CAAC,KAAK,cAAc;AAAA,QACtB,KAAK,aAAa;AAAA,QAClB,IAAI,KAAK,aAAa,KAAK,IAAI,gBAAgB,KAAK,WAAW,GAAG;AAAA,UAChE,KAAK,kBAAkB;AAAA,QACzB;AAAA,QACA,MAAM,mBAAmB,YAAY,IAAI,IAAI;AAAA,QAC7C,KAAK,IAAI,YAAY,KAAK,aAAa,kBAAkB,KAAK,YAAY,KAAK,KAAK,YAAY,iBAAiB;AAAA,QACjH,IAAI,KAAK,aAAa;AAAA,UACpB,KAAK,kBAAkB,gBAAgB;AAAA,QACzC;AAAA,QACA,IAAI,KAAK,cAAc,KAAK,4BAA4B;AAAA,UACtD,MAAM,kBAAkB,KAAK,6BAA6B,KAAK,qBAAqB,KAAK;AAAA,UACzF,MAAM,QAAQ,KAAK,IAAI,GAAG,kBAAkB,KAAK,MAAM,gBAAgB,CAAC;AAAA,UACxE,KAAK,6BAA6B;AAAA,UAClC,KAAK,gBAAgB,WAAW,MAAM;AAAA,YACpC,KAAK,gBAAgB;AAAA,YACrB,KAAK,KAAK;AAAA,aACT,KAAK;AAAA,QACV,EAAO;AAAA,UACL,aAAa,KAAK,aAAa;AAAA,UAC/B,KAAK,gBAAgB;AAAA;AAAA,MAEzB;AAAA,cACA;AAAA,MACA,KAAK,YAAY;AAAA,MACjB,IAAI,KAAK,iBAAiB;AAAA,QACxB,KAAK,gBAAgB;AAAA,MACvB;AAAA,MACA,KAAK,oBAAoB;AAAA;AAAA;AAAA,EAG7B,kBAAkB,GAAG;AAAA,IACnB,KAAK,6BAA6B;AAAA,IAClC,KAAK,KAAK;AAAA;AAAA,EAEZ,YAAY,GAAG;AAAA,IACb,IAAI,KAAK,iBAAiB;AAAA,MACxB,QAAQ,MAAM,+BAA+B;AAAA,MAC7C,MAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AAAA,IACA,IAAI,QAAQ;AAAA,IACZ,IAAI,KAAK,eAAe,GAAG;AAAA,MACzB,QAAQ,KAAK,iBAAiB,KAAK,YAAY;AAAA,IACjD;AAAA,IACA,KAAK,kBAAkB;AAAA,IACvB,KAAK,IAAI,OAAO,KAAK,aAAa,KAAK;AAAA,IACvC,KAAK,kBAAkB;AAAA;AAAA,EAEzB,iBAAiB,CAAC,WAAW;AAAA,IAC3B,KAAK,WAAW,KAAK,SAAS;AAAA,IAC9B,IAAI,KAAK,WAAW,SAAS,KAAK,gBAAgB;AAAA,MAChD,KAAK,WAAW,MAAM;AAAA,IACxB;AAAA;AAAA,EAEF,QAAQ,GAAG;AAAA,IACT,MAAM,aAAa,CAAC,GAAG,KAAK,UAAU;AAAA,IACtC,MAAM,MAAM,WAAW,OAAO,CAAC,KAAK,SAAS,MAAM,MAAM,CAAC;AAAA,IAC1D,MAAM,MAAM,WAAW,SAAS,MAAM,WAAW,SAAS;AAAA,IAC1D,MAAM,MAAM,WAAW,SAAS,KAAK,IAAI,GAAG,UAAU,IAAI;AAAA,IAC1D,MAAM,MAAM,WAAW,SAAS,KAAK,IAAI,GAAG,UAAU,IAAI;AAAA,IAC1D,OAAO;AAAA,MACL,KAAK,KAAK,YAAY;AAAA,MACtB,YAAY,KAAK,YAAY;AAAA,MAC7B;AAAA,MACA,kBAAkB;AAAA,MAClB,cAAc;AAAA,MACd,cAAc;AAAA,IAChB;AAAA;AAAA,EAEF,UAAU,GAAG;AAAA,IACX,KAAK,aAAa,CAAC;AAAA,IACnB,KAAK,YAAY,aAAa;AAAA;AAAA,EAEhC,cAAc,CAAC,SAAS;AAAA,IACtB,KAAK,cAAc;AAAA,IACnB,IAAI,CAAC,SAAS;AAAA,MACZ,KAAK,aAAa,CAAC;AAAA,IACrB;AAAA;AAAA,EAEF,YAAY,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,YAAY,GAAG;AAAA,IACjB,OAAO,CAAC,CAAC,KAAK;AAAA;AAAA,EAEhB,qBAAqB,GAAG;AAAA,IACtB,OAAO,KAAK,oBAAoB,SAAS,IAAI,KAAK,oBAAoB,KAAK,oBAAoB,SAAS,KAAK;AAAA;AAAA,EAE/G,cAAc,GAAG;AAAA,IACf,IAAI,KAAK,kBAAkB;AAAA,MACzB,WAAW,cAAc,KAAK,iBAAiB,oBAAoB;AAAA,QACjE,IAAI,WAAW,cAAc,CAAC,WAAW,aAAa;AAAA,UACpD,WAAW,mBAAmB,IAAI;AAAA,QACpC;AAAA,MACF;AAAA,MACA,KAAK,mBAAmB;AAAA,IAC1B;AAAA,IACA,KAAK,sBAAsB,CAAC;AAAA;AAAA,EAE9B,cAAc,CAAC,YAAY,GAAG,GAAG;AAAA,IAC/B,IAAI,CAAC,WAAW;AAAA,MACd;AAAA,IACF,KAAK,eAAe;AAAA,IACpB,KAAK,oBAAoB,KAAK,WAAW,UAAU,KAAK,IAAI;AAAA,IAC5D,KAAK,mBAAmB,IAAI,UAAU,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAAA,IACpE,KAAK,iBAAiB,UAAU;AAAA,IAChC,KAAK,mCAAmC;AAAA;AAAA,EAE1C,eAAe,CAAC,mBAAmB,GAAG,GAAG,SAAS;AAAA,IAChD,IAAI,KAAK,kBAAkB;AAAA,MACzB,KAAK,iBAAiB,UAAU;AAAA,MAChC,KAAK,iBAAiB,QAAQ,EAAE,GAAG,EAAE;AAAA,MACrC,IAAI,SAAS,gBAAgB;AAAA,QAC3B,KAAK,iBAAiB,aAAa;AAAA,MACrC;AAAA,MACA,IAAI,KAAK,oBAAoB,SAAS,GAAG;AAAA,QACvC,MAAM,mBAAmB,KAAK,oBAAoB,KAAK,oBAAoB,SAAS;AAAA,QACpF,IAAI,CAAC,qBAAqB,CAAC,KAAK,kBAAkB,mBAAmB,gBAAgB,GAAG;AAAA,UACtF,MAAM,kBAAkB,iBAAiB,UAAU,KAAK;AAAA,UACxD,KAAK,oBAAoB,KAAK,eAAe;AAAA,QAC/C,EAAO,SAAI,qBAAqB,KAAK,oBAAoB,SAAS,GAAG;AAAA,UACnE,IAAI,iBAAiB,KAAK,oBAAoB,QAAQ,iBAAiB;AAAA,UACvE,IAAI,mBAAmB,IAAI;AAAA,YACzB,MAAM,kBAAkB,kBAAkB,UAAU,KAAK;AAAA,YACzD,iBAAiB,KAAK,oBAAoB,QAAQ,eAAe;AAAA,UACnE;AAAA,UACA,IAAI,mBAAmB,MAAM,iBAAiB,KAAK,oBAAoB,SAAS,GAAG;AAAA,YACjF,KAAK,sBAAsB,KAAK,oBAAoB,MAAM,GAAG,iBAAiB,CAAC;AAAA,UACjF;AAAA,QACF;AAAA,MACF;AAAA,MACA,KAAK,mCAAmC;AAAA,IAC1C;AAAA;AAAA,EAEF,sBAAsB,GAAG;AAAA,IACvB,IAAI,KAAK,kBAAkB,YAAY;AAAA,MACrC,MAAM,UAAU,KAAK;AAAA,MACrB,MAAM,oBAAoB,KAAK,QAAQ,QAAQ,GAAG,QAAQ,CAAC;AAAA,MAC3D,MAAM,kBAAkB,WAAW,oBAAoB,IAAI,iBAAiB;AAAA,MAC5E,KAAK,gBAAgB,iBAAiB,QAAQ,GAAG,QAAQ,CAAC;AAAA,IAC5D;AAAA;AAAA,EAEF,iBAAiB,CAAC,YAAY,WAAW;AAAA,IACvC,IAAI,UAAU;AAAA,IACd,OAAO,SAAS;AAAA,MACd,IAAI,YAAY;AAAA,QACd,OAAO;AAAA,MACT,UAAU,QAAQ;AAAA,IACpB;AAAA,IACA,OAAO;AAAA;AAAA,EAET,eAAe,GAAG;AAAA,IAChB,IAAI,KAAK,kBAAkB;AAAA,MACzB,KAAK,iBAAiB,aAAa;AAAA,MACnC,KAAK,KAAK,aAAa,KAAK,gBAAgB;AAAA,MAC5C,KAAK,mCAAmC;AAAA,IAC1C;AAAA;AAAA,EAEF,kCAAkC,GAAG;AAAA,IACnC,MAAM,sBAAsB,CAAC;AAAA,IAC7B,MAAM,qBAAqB,CAAC;AAAA,IAC5B,MAAM,mBAAmB,KAAK,oBAAoB,SAAS,IAAI,KAAK,oBAAoB,KAAK,oBAAoB,SAAS,KAAK,KAAK;AAAA,IACpI,IAAI,KAAK,kBAAkB;AAAA,MACzB,KAAK,0BAA0B,kBAAkB,KAAK,iBAAiB,QAAQ,qBAAqB,kBAAkB;AAAA,MACtH,WAAW,cAAc,KAAK,iBAAiB,oBAAoB;AAAA,QACjE,IAAI,CAAC,mBAAmB,SAAS,UAAU,KAAK,CAAC,WAAW,aAAa;AAAA,UACvE,WAAW,mBAAmB,IAAI;AAAA,QACpC;AAAA,MACF;AAAA,MACA,KAAK,iBAAiB,0BAA0B,mBAAmB;AAAA,MACnE,KAAK,iBAAiB,yBAAyB,kBAAkB;AAAA,IACnE;AAAA;AAAA,EAEF,yBAAyB,CAAC,WAAW,iBAAiB,qBAAqB,oBAAoB;AAAA,IAC7F,MAAM,WAAW,qBAAqB,iBAAiB,UAAU,+BAA+B,GAAG,UAAU,aAAa,GAAG,CAAC;AAAA,IAC9H,WAAW,SAAS,UAAU;AAAA,MAC5B,IAAI,MAAM,YAAY;AAAA,QACpB,MAAM,eAAe,MAAM,mBAAmB,KAAK,gBAAgB;AAAA,QACnE,IAAI,cAAc;AAAA,UAChB,oBAAoB,KAAK,KAAK;AAAA,QAChC;AAAA,QACA,mBAAmB,KAAK,KAAK;AAAA,MAC/B;AAAA,MACA,IAAI,MAAM,iBAAiB,IAAI,GAAG;AAAA,QAChC,KAAK,0BAA0B,OAAO,iBAAiB,qBAAqB,kBAAkB;AAAA,MAChG;AAAA,IACF;AAAA;AAAA,MAEE,sBAAsB,GAAG;AAAA,IAC3B,IAAI,KAAK;AAAA,MACP,OAAO;AAAA,IACT,IAAI,KAAK;AAAA,MACP,OAAO;AAAA,IACT,OAAO;AAAA;AAAA,EAET,iBAAiB,GAAG;AAAA,IAClB,KAAK,iBAAiB;AAAA;AAAA,OAElB,WAAU,CAAC,SAAS;AAAA,IACxB,IAAI,KAAK,kBAAkB,sBAA+C;AAAA,MACxE,MAAM,IAAI,MAAM,mDAAmD;AAAA,IACrE;AAAA,IACA,MAAM,gBAAgB,SAAS,QAAQ;AAAA,IACvC,IAAI,KAAK,kBAAkB,KAAK,eAAe,QAAQ,WAAW,eAAe;AAAA,MAC/E,KAAK,iBAAiB;AAAA,IACxB;AAAA,IACA,IAAI,KAAK,gBAAgB;AAAA,MACvB,OAAO,KAAK;AAAA,IACd;AAAA,IACA,IAAI,KAAK,0BAA0B;AAAA,MACjC,OAAO,KAAK;AAAA,IACd;AAAA,IACA,IAAI,CAAC,KAAK,kBAAkB;AAAA,MAC1B,MAAM,eAAe,KAAK,cAAc,UAAU,MAAM,YAAY,GAAG,SAAS,MAAM,KAAK,KAAK,cAAc,UAAU,SAAS,cAAc,KAAK,IAAI;AAAA,MACxJ,KAAK,mBAAmB,sBAAsB,KAAK,OAAO,KAAK,QAAQ,KAAK,SAAS,KAAK,IAAI,GAAG,YAAY;AAAA,IAC/G;AAAA,IACA,KAAK,2BAA2B,KAAK,iBAAiB,OAAO,OAAO,EAAE,KAAK,CAAC,WAAW;AAAA,MACrF,KAAK,iBAAiB;AAAA,MACtB,KAAK,2BAA2B;AAAA,MAChC,OAAO;AAAA,KACR;AAAA,IACD,OAAO,KAAK;AAAA;AAEhB;;;ACj0hBA,yBAAS;AAuvDT,0BAAS;AAAA;AAv3DT,MAAM,eAAe;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,WAAW,CAAC,KAAK,MAAK,YAAY;AAAA,IAChC,KAAK,MAAM;AAAA,IACX,KAAK,UAAU;AAAA,IACf,KAAK,aAAa;AAAA;AAAA,SAEb,MAAM,CAAC,YAAY;AAAA,IACxB,MAAM,MAAM,iBAAiB;AAAA,IAC7B,MAAM,UAAU,IAAI,qBAAqB,WAAW,GAAG;AAAA,IACvD,OAAO,IAAI,eAAe,KAAK,SAAS,UAAU;AAAA;AAAA,EAEpD,KAAK,GAAG;AAAA,IACN,IAAI,KAAK;AAAA,MACP,MAAM,IAAI,MAAM,6BAA6B;AAAA;AAAA,MAE7C,GAAG,GAAG;AAAA,IACR,KAAK,MAAM;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,EAEd,YAAY,CAAC,OAAO,KAAK,SAAS,SAAS;AAAA,IACzC,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,2BAA2B,KAAK,SAAS,OAAO,KAAK,WAAW,MAAM,WAAW,IAAI;AAAA;AAAA,EAEhG,eAAe,CAAC,KAAK,SAAS,SAAS;AAAA,IACrC,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,8BAA8B,KAAK,SAAS,KAAK,WAAW,MAAM,WAAW,IAAI;AAAA;AAAA,EAE5F,cAAc,GAAG;AAAA,IACf,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,6BAA6B,KAAK,OAAO;AAAA;AAAA,EAEpD,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,2BAA2B,KAAK,OAAO;AAAA;AAAA,EAEzD,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,aAAa,MAAM;AAAA;AAAA,EAEjC,iBAAiB,CAAC,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS;AAAA,IACpE,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,gCAAgC,KAAK,SAAS,SAAS,SAAS,QAAQ,QAAQ,WAAW,MAAM,WAAW,IAAI;AAAA;AAAA,EAElI,oBAAoB,CAAC,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS;AAAA,IACvE,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,mCAAmC,KAAK,SAAS,SAAS,SAAS,QAAQ,QAAQ,WAAW,MAAM,WAAW,IAAI;AAAA;AAAA,EAErI,mBAAmB,GAAG;AAAA,IACpB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,kCAAkC,KAAK,OAAO;AAAA;AAAA,EAEzD,YAAY,CAAC,OAAO;AAAA,IAClB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,2BAA2B,KAAK,SAAS,SAAS,CAAC;AAAA;AAAA,EAE9D,WAAW,CAAC,MAAM;AAAA,IAChB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,0BAA0B,KAAK,SAAS,IAAI;AAAA;AAAA,EAEvD,eAAe,CAAC,OAAO,QAAQ;AAAA,IAC7B,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,8BAA8B,KAAK,SAAS,OAAO,MAAM;AAAA;AAAA,EAEpE,WAAW,CAAC,GAAG,GAAG,OAAO,QAAQ;AAAA,IAC/B,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,0BAA0B,KAAK,SAAS,GAAG,GAAG,OAAO,MAAM;AAAA;AAAA,MAElE,QAAQ,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,0BAA0B,KAAK,OAAO;AAAA;AAAA,MAEpD,eAAe,GAAG;AAAA,IACpB,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,iCAAiC,KAAK,OAAO;AAAA;AAAA,EAE/D,eAAe,GAAG;AAAA,IAChB,KAAK,MAAM;AAAA,IACX,MAAM,WAAW,KAAK,WAAW;AAAA,IACjC,IAAI,aAAa;AAAA,MACf,OAAO;AAAA,IACT,MAAM,gBAAgB,KAAK,IAAI,mCAAmC,KAAK,SAAS,QAAQ;AAAA,IACxF,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,OAAO,KAAK,IAAI,QAAQ,OAAO,aAAa;AAAA;AAAA,EAE9C,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,MAAM,WAAW,KAAK,WAAW;AAAA,IACjC,IAAI,aAAa;AAAA,MACf,OAAO;AAAA,IACT,MAAM,aAAa,KAAK,IAAI,gCAAgC,KAAK,SAAS,QAAQ;AAAA,IAClF,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,OAAO,KAAK,IAAI,QAAQ,OAAO,UAAU;AAAA;AAAA,EAE3C,eAAe,CAAC,WAAW;AAAA,IACzB,KAAK,MAAM;AAAA,IACX,MAAM,YAAY,OAAO,cAAc,WAAW,UAAU,YAAY,CAAC,KAAK,IAAI;AAAA,IAClF,KAAK,IAAI,8BAA8B,KAAK,SAAS,SAAS;AAAA;AAAA,EAEhE,oBAAoB,CAAC,OAAO;AAAA,IAC1B,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,mCAAmC,KAAK,SAAS,KAAK;AAAA;AAAA,EAEjE,WAAW,CAAC,UAAU;AAAA,IACpB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,0BAA0B,KAAK,SAAS,QAAQ;AAAA;AAAA,EAE3D,oBAAoB,CAAC,OAAO,QAAQ;AAAA,IAClC,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,mCAAmC,KAAK,SAAS,OAAO,MAAM;AAAA;AAAA,EAEhF,mBAAmB,GAAG;AAAA,IACpB,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,kCAAkC,KAAK,OAAO;AAAA;AAAA,EAEhE,OAAO,GAAG;AAAA,IACR,IAAI,KAAK;AAAA,MACP;AAAA,IACF,KAAK,aAAa;AAAA,IAClB,KAAK,IAAI,sBAAsB,KAAK,OAAO;AAAA;AAE/C;AAAA;AAIA,MAAM,mBAAmB,eAAa;AAAA,SAC7B,WAAW,IAAI;AAAA,SACf,yBAAyB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,aAAa,CAAC;AAAA,EACd,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB;AAAA,EACA,WAAW,CAAC,KAAK,MAAK;AAAA,IACpB,MAAM;AAAA,IACN,KAAK,MAAM;AAAA,IACX,KAAK,YAAY;AAAA,IACjB,KAAK,gBAAgB,IAAI,wBAAwB,IAAG;AAAA,IACpD,KAAK,KAAK,IAAI,gBAAgB,IAAG;AAAA,IACjC,WAAW,SAAS,IAAI,KAAK,IAAI,IAAI;AAAA,IACrC,WAAW,wBAAwB,GAAG;AAAA;AAAA,SAEjC,MAAM,CAAC,aAAa;AAAA,IACzB,MAAM,MAAM,iBAAiB;AAAA,IAC7B,MAAM,OAAM,IAAI,iBAAiB,WAAW;AAAA,IAC5C,OAAO,IAAI,WAAW,KAAK,IAAG;AAAA;AAAA,SAEzB,uBAAuB,CAAC,KAAK;AAAA,IAClC,IAAI,WAAW;AAAA,MACb;AAAA,IACF,WAAW,yBAAyB;AAAA,IACpC,IAAI,iBAAiB,CAAC,MAAM,SAAS;AAAA,MACnC,MAAM,SAAS,IAAI,YAAY,IAAI;AAAA,MACnC,IAAI,KAAK,WAAW,KAAK,KAAK,OAAO,UAAU,GAAG;AAAA,QAChD,MAAM,KAAK,OAAO;AAAA,QAClB,MAAM,WAAW,WAAW,SAAS,IAAI,EAAE;AAAA,QAC3C,IAAI,UAAU;AAAA,UACZ,MAAM,YAAY,KAAK,MAAM,CAAC;AAAA,UAC9B,MAAM,YAAY,KAAK,MAAM,CAAC;AAAA,UAC9B,SAAS,KAAK,WAAW,SAAS;AAAA,QACpC;AAAA,MACF;AAAA,KACD;AAAA;AAAA,EAEH,KAAK,GAAG;AAAA,IACN,IAAI,KAAK;AAAA,MACP,MAAM,IAAI,MAAM,yBAAyB;AAAA;AAAA,MAEzC,GAAG,GAAG;AAAA,IACR,KAAK,MAAM;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,EAEd,OAAO,CAAC,MAAM;AAAA,IACZ,KAAK,MAAM;AAAA,IACX,MAAM,YAAY,KAAK,IAAI,QAAQ,OAAO,IAAI;AAAA,IAC9C,IAAI,KAAK,qBAAqB,MAAM;AAAA,MAClC,KAAK,IAAI,2BAA2B,KAAK,eAAe,KAAK,kBAAkB,WAAW,KAAK;AAAA,IACjG,EAAO;AAAA,MACL,KAAK,mBAAmB,KAAK,IAAI,4BAA4B,KAAK,eAAe,WAAW,KAAK;AAAA;AAAA,IAEnG,KAAK,mBAAmB;AAAA,IACxB,KAAK,IAAI,yBAAyB,KAAK,WAAW,KAAK,gBAAgB;AAAA;AAAA,EAEzE,YAAY,CAAC,MAAM;AAAA,IACjB,KAAK,MAAM;AAAA,IACX,MAAM,YAAY,KAAK,IAAI,QAAQ,OAAO,IAAI;AAAA,IAC9C,KAAK,IAAI,kBAAkB,KAAK,WAAW,SAAS;AAAA;AAAA,EAEtD,WAAW,CAAC,MAAM;AAAA,IAChB,KAAK,MAAM;AAAA,IACX,MAAM,YAAY,KAAK,IAAI,QAAQ,OAAO,IAAI;AAAA,IAC9C,KAAK,WAAW,KAAK,SAAS;AAAA,IAC9B,MAAM,QAAQ,KAAK,IAAI,4BAA4B,KAAK,eAAe,WAAW,KAAK;AAAA,IACvF,KAAK,IAAI,6BAA6B,KAAK,WAAW,KAAK;AAAA;AAAA,EAE7D,gBAAgB,CAAC,MAAM;AAAA,IACrB,KAAK,MAAM;AAAA,IACX,MAAM,YAAY,KAAK,IAAI,QAAQ,OAAO,IAAI;AAAA,IAC9C,KAAK,IAAI,sBAAsB,KAAK,WAAW,SAAS;AAAA;AAAA,EAE1D,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,uBAAuB,KAAK,aAAa;AAAA;AAAA,EAE3D,OAAO,GAAG;AAAA,IACR,KAAK,MAAM;AAAA,IACX,MAAM,UAAU,OAAO;AAAA,IACvB,MAAM,YAAY,KAAK,IAAI,kBAAkB,KAAK,WAAW,OAAO;AAAA,IACpE,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,OAAO,KAAK,IAAI,QAAQ,OAAO,SAAS;AAAA;AAAA,EAE1C,UAAU,CAAC,MAAM;AAAA,IACf,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,qBAAqB,KAAK,WAAW,IAAI;AAAA;AAAA,EAEpD,UAAU,CAAC,MAAM;AAAA,IACf,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,qBAAqB,KAAK,WAAW,IAAI;AAAA;AAAA,EAEpD,UAAU,GAAG;AAAA,IACX,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,qBAAqB,KAAK,SAAS;AAAA;AAAA,EAE9C,kBAAkB,GAAG;AAAA,IACnB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,6BAA6B,KAAK,SAAS;AAAA;AAAA,EAEtD,WAAW,CAAC,WAAW,UAAU,SAAS,QAAQ;AAAA,IAChD,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,sBAAsB,KAAK,WAAW,WAAW,UAAU,SAAS,MAAM;AAAA;AAAA,EAErF,OAAO,GAAG;AAAA,IACR,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,kBAAkB,KAAK,SAAS;AAAA;AAAA,EAE3C,UAAU,GAAG;AAAA,IACX,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,qBAAqB,KAAK,SAAS;AAAA;AAAA,EAE9C,cAAc,GAAG;AAAA,IACf,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,yBAAyB,KAAK,SAAS;AAAA;AAAA,EAElD,eAAe,GAAG;AAAA,IAChB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,0BAA0B,KAAK,SAAS;AAAA;AAAA,EAEnD,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,uBAAuB,KAAK,SAAS;AAAA;AAAA,EAEhD,cAAc,GAAG;AAAA,IACf,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,yBAAyB,KAAK,SAAS;AAAA;AAAA,EAElD,QAAQ,CAAC,MAAM;AAAA,IACb,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,mBAAmB,KAAK,WAAW,IAAI;AAAA;AAAA,EAElD,SAAS,CAAC,MAAM,KAAK;AAAA,IACnB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,oBAAoB,KAAK,WAAW,MAAM,GAAG;AAAA;AAAA,EAExD,kBAAkB,CAAC,MAAM,KAAK;AAAA,IAC5B,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,6BAA6B,KAAK,WAAW,MAAM,GAAG;AAAA;AAAA,EAEjE,iBAAiB,CAAC,QAAQ;AAAA,IACxB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,4BAA4B,KAAK,WAAW,MAAM;AAAA;AAAA,EAE7D,iBAAiB,GAAG;AAAA,IAClB,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,4BAA4B,KAAK,SAAS;AAAA;AAAA,EAE5D,mBAAmB,GAAG;AAAA,IACpB,KAAK,MAAM;AAAA,IACX,MAAM,WAAW,KAAK,IAAI,8BAA8B,KAAK,SAAS;AAAA,IACtE,OAAO;AAAA,MACL,KAAK,SAAS;AAAA,MACd,KAAK,SAAS;AAAA,MACd,QAAQ,SAAS;AAAA,IACnB;AAAA;AAAA,EAEF,mBAAmB,GAAG;AAAA,IACpB,KAAK,MAAM;AAAA,IACX,MAAM,WAAW,KAAK,IAAI,8BAA8B,KAAK,SAAS;AAAA,IACtE,OAAO;AAAA,MACL,KAAK,SAAS;AAAA,MACd,KAAK,SAAS;AAAA,MACd,QAAQ,SAAS;AAAA,IACnB;AAAA;AAAA,EAEF,MAAM,GAAG;AAAA,IACP,KAAK,MAAM;AAAA,IACX,MAAM,WAAW,KAAK,IAAI,iBAAiB,KAAK,SAAS;AAAA,IACzD,OAAO;AAAA,MACL,KAAK,SAAS;AAAA,MACd,KAAK,SAAS;AAAA,MACd,QAAQ,SAAS;AAAA,IACnB;AAAA;AAAA,EAEF,gBAAgB,CAAC,QAAQ;AAAA,IACvB,KAAK,MAAM;AAAA,IACX,MAAM,SAAS,KAAK,IAAI,2BAA2B,KAAK,WAAW,MAAM;AAAA,IACzE,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,OAAO,EAAE,KAAK,OAAO,KAAK,KAAK,OAAO,IAAI;AAAA;AAAA,EAE5C,gBAAgB,CAAC,KAAK,KAAK;AAAA,IACzB,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,2BAA2B,KAAK,WAAW,KAAK,GAAG;AAAA;AAAA,EAErE,kBAAkB,CAAC,KAAK;AAAA,IACtB,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,6BAA6B,KAAK,WAAW,GAAG;AAAA;AAAA,EAElE,YAAY,CAAC,aAAa,WAAW;AAAA,IACnC,KAAK,MAAM;AAAA,IACX,IAAI,eAAe;AAAA,MACjB,OAAO;AAAA,IACT,MAAM,UAAU,OAAO;AAAA,IACvB,MAAM,YAAY,KAAK,IAAI,uBAAuB,KAAK,WAAW,aAAa,WAAW,OAAO;AAAA,IACjG,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,OAAO,KAAK,IAAI,QAAQ,OAAO,SAAS;AAAA;AAAA,EAE1C,oBAAoB,CAAC,UAAU,UAAU,QAAQ,QAAQ;AAAA,IACvD,KAAK,MAAM;AAAA,IACX,MAAM,UAAU,OAAO;AAAA,IACvB,MAAM,YAAY,KAAK,IAAI,+BAA+B,KAAK,WAAW,UAAU,UAAU,QAAQ,QAAQ,OAAO;AAAA,IACrH,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,OAAO,KAAK,IAAI,QAAQ,OAAO,SAAS;AAAA;AAAA,EAE1C,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,uBAAuB,KAAK,SAAS;AAAA;AAAA,EAEhD,IAAI,GAAG;AAAA,IACL,KAAK,MAAM;AAAA,IACX,MAAM,UAAU;AAAA,IAChB,MAAM,YAAY,KAAK,IAAI,eAAe,KAAK,WAAW,OAAO;AAAA,IACjE,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,OAAO,KAAK,IAAI,QAAQ,OAAO,SAAS;AAAA;AAAA,EAE1C,IAAI,GAAG;AAAA,IACL,KAAK,MAAM;AAAA,IACX,MAAM,UAAU;AAAA,IAChB,MAAM,YAAY,KAAK,IAAI,eAAe,KAAK,WAAW,OAAO;AAAA,IACjE,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,OAAO,KAAK,IAAI,QAAQ,OAAO,SAAS;AAAA;AAAA,EAE1C,OAAO,GAAG;AAAA,IACR,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,kBAAkB,KAAK,SAAS;AAAA;AAAA,EAElD,OAAO,GAAG;AAAA,IACR,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,kBAAkB,KAAK,SAAS;AAAA;AAAA,EAElD,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,uBAAuB,KAAK,SAAS;AAAA;AAAA,EAEhD,YAAY,CAAC,KAAK;AAAA,IAChB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,uBAAuB,KAAK,eAAe,GAAG;AAAA;AAAA,EAEzD,YAAY,CAAC,KAAK;AAAA,IAChB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,uBAAuB,KAAK,eAAe,GAAG;AAAA;AAAA,EAEzD,oBAAoB,CAAC,YAAY;AAAA,IAC/B,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,+BAA+B,KAAK,eAAe,UAAU;AAAA;AAAA,EAExE,aAAa,GAAG;AAAA,IACd,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,wBAAwB,KAAK,aAAa;AAAA;AAAA,EAErD,cAAc,CAAC,OAAO;AAAA,IACpB,KAAK,MAAM;AAAA,IACX,KAAK,eAAe,SAAS;AAAA,IAC7B,KAAK,IAAI,yBAAyB,KAAK,eAAe,OAAO,OAAO,IAAI;AAAA;AAAA,EAE1E,cAAc,GAAG;AAAA,IACf,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,gBAAgB;AAAA;AAAA,EAE9B,YAAY,CAAC,SAAS,WAAW;AAAA,IAC/B,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,uBAAuB,KAAK,eAAe,SAAS,SAAS;AAAA;AAAA,EAExE,uBAAuB,CAAC,WAAW;AAAA,IACjC,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,kCAAkC,KAAK,eAAe,SAAS;AAAA;AAAA,EAE1E,qBAAqB,CAAC,OAAO;AAAA,IAC3B,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,gCAAgC,KAAK,eAAe,KAAK;AAAA;AAAA,EAEpE,mBAAmB,CAAC,SAAS;AAAA,IAC3B,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,8BAA8B,KAAK,eAAe,OAAO;AAAA;AAAA,EAEpE,kBAAkB,GAAG;AAAA,IACnB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,6BAA6B,KAAK,aAAa;AAAA;AAAA,EAE1D,iBAAiB,CAAC,SAAS;AAAA,IACzB,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,4BAA4B,KAAK,eAAe,OAAO;AAAA;AAAA,EAEzE,KAAK,GAAG;AAAA,IACN,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,gBAAgB,KAAK,SAAS;AAAA;AAAA,EAEzC,OAAO,GAAG;AAAA,IACR,IAAI,KAAK;AAAA,MACP;AAAA,IACF,KAAK,aAAa;AAAA,IAClB,WAAW,SAAS,OAAO,KAAK,EAAE;AAAA,IAClC,KAAK,IAAI,kBAAkB,KAAK,SAAS;AAAA;AAE7C;AAAA;AAEA,MAAM,WAAW;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA,WAAW,CAAC,KAAK,MAAK,YAAY;AAAA,IAChC,KAAK,MAAM;AAAA,IACX,KAAK,UAAU;AAAA,IACf,KAAK,aAAa;AAAA;AAAA,SAEb,MAAM,CAAC,YAAY,eAAe,gBAAgB;AAAA,IACvD,MAAM,MAAM,iBAAiB;AAAA,IAC7B,MAAM,UAAU,IAAI,iBAAiB,WAAW,KAAK,eAAe,cAAc;AAAA,IAClF,OAAO,IAAI,WAAW,KAAK,SAAS,UAAU;AAAA;AAAA,EAEhD,KAAK,GAAG;AAAA,IACN,IAAI,KAAK;AAAA,MACP,MAAM,IAAI,MAAM,yBAAyB;AAAA;AAAA,MAEzC,GAAG,GAAG;AAAA,IACR,KAAK,MAAM;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,EAEd,eAAe,CAAC,OAAO,QAAQ;AAAA,IAC7B,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,0BAA0B,KAAK,SAAS,OAAO,MAAM;AAAA;AAAA,EAEhE,WAAW,CAAC,GAAG,GAAG,OAAO,QAAQ,aAAa,MAAM;AAAA,IAClD,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,sBAAsB,KAAK,SAAS,GAAG,GAAG,OAAO,QAAQ,UAAU;AAAA;AAAA,EAE9E,WAAW,GAAG;AAAA,IACZ,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,sBAAsB,KAAK,OAAO;AAAA;AAAA,EAEpD,eAAe,CAAC,QAAQ;AAAA,IACtB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,0BAA0B,KAAK,SAAS,MAAM;AAAA;AAAA,EAEzD,WAAW,CAAC,MAAM;AAAA,IAChB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,sBAAsB,KAAK,SAAS,IAAI;AAAA;AAAA,EAEnD,mBAAmB,GAAG;AAAA,IACpB,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,8BAA8B,KAAK,OAAO;AAAA;AAAA,EAE5D,wBAAwB,GAAG;AAAA,IACzB,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,mCAAmC,KAAK,OAAO;AAAA;AAAA,EAEjE,YAAY,CAAC,OAAO,KAAK,SAAS,SAAS;AAAA,IACzC,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,uBAAuB,KAAK,SAAS,OAAO,KAAK,WAAW,MAAM,WAAW,IAAI;AAAA;AAAA,EAE5F,eAAe,CAAC,KAAK,SAAS,SAAS;AAAA,IACrC,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,0BAA0B,KAAK,SAAS,KAAK,WAAW,MAAM,WAAW,IAAI;AAAA;AAAA,EAExF,cAAc,GAAG;AAAA,IACf,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,yBAAyB,KAAK,OAAO;AAAA;AAAA,EAEhD,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,uBAAuB,KAAK,OAAO;AAAA;AAAA,EAErD,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,aAAa,MAAM;AAAA;AAAA,EAEjC,iBAAiB,CAAC,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,cAAc,cAAc;AAAA,IAChG,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,4BAA4B,KAAK,SAAS,SAAS,SAAS,QAAQ,QAAQ,WAAW,MAAM,WAAW,MAAM,gBAAgB,OAAO,gBAAgB,KAAK;AAAA;AAAA,EAE5K,oBAAoB,CAAC,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,cAAc,cAAc;AAAA,IACnG,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,+BAA+B,KAAK,SAAS,SAAS,SAAS,QAAQ,QAAQ,WAAW,MAAM,WAAW,MAAM,gBAAgB,OAAO,gBAAgB,KAAK;AAAA;AAAA,EAE/K,mBAAmB,GAAG;AAAA,IACpB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,8BAA8B,KAAK,OAAO;AAAA;AAAA,EAErD,eAAe,GAAG;AAAA,IAChB,KAAK,MAAM;AAAA,IACX,MAAM,YAAY,OAAO;AAAA,IACzB,MAAM,gBAAgB,KAAK,IAAI,+BAA+B,KAAK,SAAS,SAAS;AAAA,IACrF,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,OAAO,KAAK,IAAI,QAAQ,OAAO,aAAa;AAAA;AAAA,EAE9C,SAAS,GAAG;AAAA,IACV,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,oBAAoB,KAAK,OAAO;AAAA;AAAA,EAElD,OAAO,GAAG;AAAA,IACR,KAAK,MAAM;AAAA,IACX,MAAM,YAAY,OAAO;AAAA,IACzB,MAAM,YAAY,KAAK,IAAI,kBAAkB,KAAK,SAAS,SAAS;AAAA,IACpE,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,OAAO,KAAK,IAAI,QAAQ,OAAO,SAAS;AAAA;AAAA,EAE1C,eAAe,GAAG;AAAA,IAChB,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,0BAA0B,KAAK,OAAO;AAAA;AAAA,EAExD,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,uBAAuB,KAAK,OAAO;AAAA;AAAA,EAE9C,cAAc,GAAG;AAAA,IACf,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,yBAAyB,KAAK,OAAO;AAAA;AAAA,EAEhD,kBAAkB,GAAG;AAAA,IACnB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,6BAA6B,KAAK,OAAO;AAAA;AAAA,EAEpD,iBAAiB,CAAC,QAAQ;AAAA,IACxB,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,4BAA4B,KAAK,SAAS,MAAM;AAAA;AAAA,EAE3D,mBAAmB,GAAG;AAAA,IACpB,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,8BAA8B,KAAK,OAAO;AAAA;AAAA,EAE5D,mBAAmB,GAAG;AAAA,IACpB,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,8BAA8B,KAAK,OAAO;AAAA;AAAA,EAE5D,MAAM,GAAG;AAAA,IACP,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,iBAAiB,KAAK,OAAO;AAAA;AAAA,EAE/C,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,uBAAuB,KAAK,OAAO;AAAA;AAAA,EAErD,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,uBAAuB,KAAK,OAAO;AAAA;AAAA,EAErD,WAAW,GAAG;AAAA,IACZ,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,sBAAsB,KAAK,OAAO;AAAA;AAAA,EAEpD,kBAAkB,GAAG;AAAA,IACnB,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,6BAA6B,KAAK,OAAO;AAAA;AAAA,MAEvD,QAAQ,GAAG;AAAA,IACb,IAAI,CAAC,KAAK,qBAAqB;AAAA,MAC7B,KAAK,sBAAsB,yBAAyB,KAAK,YAAY,IAAI;AAAA,IAC3E;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,EAEd,wBAAwB,CAAC,QAAQ;AAAA,IAC/B,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,mCAAmC,KAAK,SAAS,MAAM;AAAA;AAAA,EAElE,eAAe,CAAC,WAAW;AAAA,IACzB,KAAK,MAAM;AAAA,IACX,MAAM,YAAY,OAAO,cAAc,WAAW,UAAU,YAAY,CAAC,KAAK,IAAI;AAAA,IAClF,KAAK,IAAI,0BAA0B,KAAK,SAAS,SAAS;AAAA;AAAA,EAE5D,oBAAoB,CAAC,OAAO;AAAA,IAC1B,KAAK,MAAM;AAAA,IACX,KAAK,IAAI,+BAA+B,KAAK,SAAS,KAAK;AAAA;AAAA,EAE7D,oBAAoB,CAAC,OAAO,QAAQ;AAAA,IAClC,KAAK,MAAM;AAAA,IACX,IAAI,CAAC,KAAK,oBAAoB;AAAA,MAC5B,KAAK,qBAAqB,KAAK,IAAI,4BAA4B,KAAK,OAAO;AAAA,IAC7E;AAAA,IACA,OAAO,KAAK,IAAI,mCAAmC,KAAK,oBAAoB,OAAO,MAAM;AAAA;AAAA,EAE3F,OAAO,GAAG;AAAA,IACR,IAAI,KAAK;AAAA,MACP;AAAA,IACF,IAAI,KAAK,qBAAqB;AAAA,MAC5B,KAAK,oBAAoB,QAAQ;AAAA,MACjC,KAAK,sBAAsB;AAAA,IAC7B;AAAA,IACA,KAAK,aAAa;AAAA,IAClB,KAAK,IAAI,kBAAkB,KAAK,OAAO;AAAA;AAE3C;AAEA,SAAS,oBAAoB,CAAC,OAAO;AAAA,EACnC,MAAM,aAAa,CAAC;AAAA,EACpB,WAAW,cAAc,OAAO;AAAA,IAC9B,MAAM,kBAAkB,CAAC;AAAA,IACzB,IAAI,WAAW,MAAM,YAAY;AAAA,MAC/B,gBAAgB,KAAK,WAAW,WAAW,MAAM,UAAU;AAAA,IAC7D;AAAA,IACA,IAAI,WAAW,MAAM,YAAY;AAAA,MAC/B,gBAAgB,KAAK,WAAW,WAAW,MAAM,UAAU;AAAA,IAC7D;AAAA,IACA,IAAI,WAAW,MAAM,SAAS,WAAW;AAAA,MACvC,gBAAgB,OAAO,WAAW,MAAM;AAAA,IAC1C;AAAA,IACA,IAAI,WAAW,MAAM,WAAW,WAAW;AAAA,MACzC,gBAAgB,SAAS,WAAW,MAAM;AAAA,IAC5C;AAAA,IACA,IAAI,WAAW,MAAM,cAAc,WAAW;AAAA,MAC5C,gBAAgB,YAAY,WAAW,MAAM;AAAA,IAC/C;AAAA,IACA,IAAI,WAAW,MAAM,QAAQ,WAAW;AAAA,MACtC,gBAAgB,MAAM,WAAW,MAAM;AAAA,IACzC;AAAA,IACA,WAAW,SAAS,WAAW,OAAO;AAAA,MACpC,WAAW,SAAS;AAAA,IACtB;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAAA;AAGT,MAAM,YAAY;AAAA,EAChB;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,YAAY,IAAI;AAAA,EAChB,YAAY,IAAI;AAAA,EAChB,cAAc,IAAI;AAAA,EAClB,WAAW,CAAC,KAAK,MAAK;AAAA,IACpB,KAAK,MAAM;AAAA,IACX,KAAK,WAAW;AAAA;AAAA,SAEX,MAAM,GAAG;AAAA,IACd,MAAM,MAAM,iBAAiB;AAAA,IAC7B,MAAM,OAAM,IAAI,kBAAkB;AAAA,IAClC,OAAO,IAAI,YAAY,KAAK,IAAG;AAAA;AAAA,SAE1B,SAAS,CAAC,OAAO;AAAA,IACtB,MAAM,QAAQ,YAAY,OAAO;AAAA,IACjC,MAAM,aAAa,qBAAqB,KAAK;AAAA,IAC7C,YAAY,MAAM,aAAa,OAAO,QAAQ,UAAU,GAAG;AAAA,MACzD,MAAM,cAAc,MAAM,QAAQ;AAAA,IACpC;AAAA,IACA,OAAO;AAAA;AAAA,SAEF,UAAU,CAAC,QAAQ;AAAA,IACxB,MAAM,QAAQ,YAAY,OAAO;AAAA,IACjC,YAAY,MAAM,aAAa,OAAO,QAAQ,MAAM,GAAG;AAAA,MACrD,MAAM,cAAc,MAAM,QAAQ;AAAA,IACpC;AAAA,IACA,OAAO;AAAA;AAAA,EAET,KAAK,GAAG;AAAA,IACN,IAAI,KAAK;AAAA,MACP,MAAM,IAAI,MAAM,gCAAgC;AAAA;AAAA,EAEpD,aAAa,CAAC,MAAM,OAAO;AAAA,IACzB,KAAK,MAAM;AAAA,IACX,MAAM,aAAa,qBAAqB;AAAA,MACtC,MAAM,MAAM;AAAA,MACZ,QAAQ,MAAM;AAAA,MACd,WAAW,MAAM;AAAA,MACjB,KAAK,MAAM;AAAA,IACb,CAAC;AAAA,IACD,MAAM,KAAK,KAAK,IAAI,oBAAoB,KAAK,UAAU,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,UAAU;AAAA,IAC3G,KAAK,UAAU,IAAI,MAAM,EAAE;AAAA,IAC3B,KAAK,UAAU,IAAI,MAAM,KAAK;AAAA,IAC9B,OAAO;AAAA;AAAA,EAET,cAAc,CAAC,MAAM;AAAA,IACnB,KAAK,MAAM;AAAA,IACX,MAAM,SAAS,KAAK,UAAU,IAAI,IAAI;AAAA,IACtC,IAAI,WAAW;AAAA,MACb,OAAO;AAAA,IACT,MAAM,KAAK,KAAK,IAAI,yBAAyB,KAAK,UAAU,IAAI;AAAA,IAChE,IAAI,OAAO,MAAM;AAAA,MACf,KAAK,UAAU,IAAI,MAAM,EAAE;AAAA,IAC7B;AAAA,IACA,OAAO;AAAA;AAAA,EAET,UAAU,CAAC,MAAM;AAAA,IACf,KAAK,MAAM;AAAA,IACX,MAAM,KAAK,KAAK,eAAe,IAAI;AAAA,IACnC,IAAI,OAAO;AAAA,MACT,OAAO;AAAA,IACT,IAAI,KAAK,SAAS,GAAG,GAAG;AAAA,MACtB,MAAM,WAAW,KAAK,MAAM,GAAG,EAAE;AAAA,MACjC,OAAO,KAAK,eAAe,QAAQ;AAAA,IACrC;AAAA,IACA,OAAO;AAAA;AAAA,MAEL,GAAG,GAAG;AAAA,IACR,KAAK,MAAM;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,EAEd,aAAa,GAAG;AAAA,IACd,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,IAAI,yBAAyB,KAAK,QAAQ;AAAA;AAAA,EAExD,cAAc,GAAG;AAAA,IACf,KAAK,UAAU,MAAM;AAAA;AAAA,EAEvB,QAAQ,CAAC,MAAM;AAAA,IACb,KAAK,MAAM;AAAA,IACX,IAAI,OAAO,UAAU,eAAe,KAAK,KAAK,WAAW,IAAI,GAAG;AAAA,MAC9D;AAAA,IACF;AAAA,IACA,MAAM,QAAQ,KAAK,UAAU,IAAI,IAAI;AAAA,IACrC,IAAI;AAAA,MACF,OAAO;AAAA,IACT,IAAI,KAAK,SAAS,GAAG,GAAG;AAAA,MACtB,MAAM,WAAW,KAAK,MAAM,GAAG,EAAE;AAAA,MACjC,IAAI,OAAO,UAAU,eAAe,KAAK,KAAK,WAAW,QAAQ,GAAG;AAAA,QAClE;AAAA,MACF;AAAA,MACA,OAAO,KAAK,UAAU,IAAI,QAAQ;AAAA,IACpC;AAAA,IACA;AAAA;AAAA,EAEF,WAAW,IAAI,YAAY;AAAA,IACzB,KAAK,MAAM;AAAA,IACX,MAAM,WAAW,WAAW,KAAK,GAAG;AAAA,IACpC,MAAM,SAAS,KAAK,YAAY,IAAI,QAAQ;AAAA,IAC5C,IAAI;AAAA,MACF,OAAO;AAAA,IACT,MAAM,kBAAkB,CAAC;AAAA,IACzB,WAAW,QAAQ,YAAY;AAAA,MAC7B,MAAM,QAAQ,KAAK,SAAS,IAAI;AAAA,MAChC,IAAI,CAAC;AAAA,QACH;AAAA,MACF,IAAI,MAAM;AAAA,QACR,gBAAgB,KAAK,MAAM;AAAA,MAC7B,IAAI,MAAM;AAAA,QACR,gBAAgB,KAAK,MAAM;AAAA,MAC7B,IAAI,MAAM,SAAS;AAAA,QACjB,gBAAgB,OAAO,MAAM;AAAA,MAC/B,IAAI,MAAM,WAAW;AAAA,QACnB,gBAAgB,SAAS,MAAM;AAAA,MACjC,IAAI,MAAM,cAAc;AAAA,QACtB,gBAAgB,YAAY,MAAM;AAAA,MACpC,IAAI,MAAM,QAAQ;AAAA,QAChB,gBAAgB,MAAM,MAAM;AAAA,IAChC;AAAA,IACA,MAAM,aAAa,qBAAqB;AAAA,MACtC,MAAM,gBAAgB;AAAA,MACtB,QAAQ,gBAAgB;AAAA,MACxB,WAAW,gBAAgB;AAAA,MAC3B,KAAK,gBAAgB;AAAA,IACvB,CAAC;AAAA,IACD,MAAM,SAAS;AAAA,MACb,IAAI,gBAAgB;AAAA,MACpB,IAAI,gBAAgB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,KAAK,YAAY,IAAI,UAAU,MAAM;AAAA,IACrC,OAAO;AAAA;AAAA,EAET,UAAU,GAAG;AAAA,IACX,KAAK,MAAM;AAAA,IACX,KAAK,YAAY,MAAM;AAAA;AAAA,EAEzB,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,OAAO,KAAK,YAAY;AAAA;AAAA,EAE1B,YAAY,GAAG;AAAA,IACb,KAAK,MAAM;AAAA,IACX,OAAO,IAAI,IAAI,KAAK,SAAS;AAAA;AAAA,EAE/B,kBAAkB,GAAG;AAAA,IACnB,KAAK,MAAM;AAAA,IACX,OAAO,MAAM,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA;AAAA,EAEzC,OAAO,GAAG;AAAA,IACR,IAAI,KAAK;AAAA,MACP;AAAA,IACF,KAAK,aAAa;AAAA,IAClB,KAAK,UAAU,MAAM;AAAA,IACrB,KAAK,UAAU,MAAM;AAAA,IACrB,KAAK,YAAY,MAAM;AAAA,IACvB,KAAK,IAAI,mBAAmB,KAAK,QAAQ;AAAA;AAE7C;AAEA,SAAS,cAAc,CAAC,QAAQ,WAAW,KAAK,OAAO,GAAG;AAAA,EACxD,MAAM,QAAQ,OAAO;AAAA,EACrB,MAAM,SAAS,OAAO;AAAA,EACtB,MAAM,MAAM,OAAO,QAAQ;AAAA,EAC3B,SAAS,IAAI,EAAE,IAAI,QAAQ,KAAK,MAAM;AAAA,IACpC,SAAS,IAAI,EAAE,IAAI,OAAO,KAAK;AAAA,MAC7B,MAAM,cAAc,IAAI,QAAQ,KAAK;AAAA,MACrC,IAAI,eAAe;AAAA,MACnB,IAAI,aAAa,MAAM;AAAA,MACvB,IAAI,aAAa,MAAM;AAAA,IACzB;AAAA,EACF;AAAA;AAEF,SAAS,cAAc,CAAC,QAAQ;AAAA,EAC9B,MAAM,OAAO,OAAO,QAAQ,OAAO;AAAA,EACnC,MAAM,MAAM,OAAO,QAAQ;AAAA,EAC3B,MAAM,MAAM,OAAO,QAAQ;AAAA,EAC3B,SAAS,IAAI,EAAE,IAAI,MAAM,KAAK;AAAA,IAC5B,MAAM,aAAa,IAAI;AAAA,IACvB,MAAM,MAAM,IAAI;AAAA,IAChB,MAAM,MAAM,IAAI,aAAa;AAAA,IAC7B,MAAM,MAAM,IAAI,aAAa;AAAA,IAC7B,MAAM,QAAQ,QAAQ,MAAM,QAAQ,MAAM,QAAQ;AAAA,IAClD,IAAI,cAAc;AAAA,IAClB,IAAI,aAAa,KAAK;AAAA,IACtB,IAAI,aAAa,KAAK;AAAA,IACtB,MAAM,MAAM,IAAI;AAAA,IAChB,MAAM,MAAM,IAAI,aAAa;AAAA,IAC7B,MAAM,MAAM,IAAI,aAAa;AAAA,IAC7B,MAAM,QAAQ,QAAQ,MAAM,QAAQ,MAAM,QAAQ;AAAA,IAClD,IAAI,cAAc;AAAA,IAClB,IAAI,aAAa,KAAK;AAAA,IACtB,IAAI,aAAa,KAAK;AAAA,EACxB;AAAA;AAEF,SAAS,UAAU,CAAC,QAAQ;AAAA,EAC1B,MAAM,OAAO,OAAO,QAAQ,OAAO;AAAA,EACnC,MAAM,MAAM,OAAO,QAAQ;AAAA,EAC3B,MAAM,MAAM,OAAO,QAAQ;AAAA,EAC3B,SAAS,IAAI,EAAE,IAAI,MAAM,KAAK;AAAA,IAC5B,MAAM,aAAa,IAAI;AAAA,IACvB,IAAI,MAAM,IAAI;AAAA,IACd,IAAI,MAAM,IAAI,aAAa;AAAA,IAC3B,IAAI,MAAM,IAAI,aAAa;AAAA,IAC3B,IAAI,SAAS,KAAK,IAAI,GAAG,MAAM,QAAQ,MAAM,QAAQ,MAAM,KAAK;AAAA,IAChE,IAAI,SAAS,KAAK,IAAI,GAAG,MAAM,QAAQ,MAAM,QAAQ,MAAM,KAAK;AAAA,IAChE,IAAI,SAAS,KAAK,IAAI,GAAG,MAAM,QAAQ,MAAM,QAAQ,MAAM,KAAK;AAAA,IAChE,IAAI,cAAc;AAAA,IAClB,IAAI,aAAa,KAAK;AAAA,IACtB,IAAI,aAAa,KAAK;AAAA,IACtB,IAAI,MAAM,IAAI;AAAA,IACd,IAAI,MAAM,IAAI,aAAa;AAAA,IAC3B,IAAI,MAAM,IAAI,aAAa;AAAA,IAC3B,IAAI,SAAS,KAAK,IAAI,GAAG,MAAM,QAAQ,MAAM,QAAQ,MAAM,KAAK;AAAA,IAChE,IAAI,SAAS,KAAK,IAAI,GAAG,MAAM,QAAQ,MAAM,QAAQ,MAAM,KAAK;AAAA,IAChE,IAAI,SAAS,KAAK,IAAI,GAAG,MAAM,QAAQ,MAAM,QAAQ,MAAM,KAAK;AAAA,IAChE,IAAI,cAAc;AAAA,IAClB,IAAI,aAAa,KAAK;AAAA,IACtB,IAAI,aAAa,KAAK;AAAA,EACxB;AAAA;AAEF,SAAS,WAAW,CAAC,QAAQ;AAAA,EAC3B,MAAM,OAAO,OAAO,QAAQ,OAAO;AAAA,EACnC,MAAM,MAAM,OAAO,QAAQ;AAAA,EAC3B,MAAM,MAAM,OAAO,QAAQ;AAAA,EAC3B,SAAS,IAAI,EAAE,IAAI,MAAM,KAAK;AAAA,IAC5B,MAAM,aAAa,IAAI;AAAA,IACvB,IAAI,cAAc,IAAI,IAAI;AAAA,IAC1B,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa;AAAA,IAC3C,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa;AAAA,IAC3C,IAAI,cAAc,IAAI,IAAI;AAAA,IAC1B,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa;AAAA,IAC3C,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa;AAAA,EAC7C;AAAA;AAEF,SAAS,UAAU,CAAC,QAAQ,WAAW,KAAK;AAAA,EAC1C,MAAM,OAAO,OAAO,QAAQ,OAAO;AAAA,EACnC,MAAM,MAAM,OAAO,QAAQ;AAAA,EAC3B,MAAM,MAAM,OAAO,QAAQ;AAAA,EAC3B,SAAS,IAAI,EAAE,IAAI,MAAM,KAAK;AAAA,IAC5B,MAAM,aAAa,IAAI;AAAA,IACvB,MAAM,SAAS,KAAK,OAAO,IAAI,OAAO;AAAA,IACtC,IAAI,cAAc,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,IAAI,cAAc,KAAK,CAAC;AAAA,IAClE,IAAI,aAAa,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,IAAI,aAAa,KAAK,KAAK,CAAC;AAAA,IAC1E,IAAI,aAAa,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,IAAI,aAAa,KAAK,KAAK,CAAC;AAAA,IAC1E,IAAI,cAAc,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,IAAI,cAAc,KAAK,CAAC;AAAA,IAClE,IAAI,aAAa,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,IAAI,aAAa,KAAK,KAAK,CAAC;AAAA,IAC1E,IAAI,aAAa,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,IAAI,aAAa,KAAK,KAAK,CAAC;AAAA,EAC5E;AAAA;AAEF,SAAS,wBAAwB,CAAC,QAAQ,WAAW,GAAG;AAAA,EACtD,MAAM,QAAQ,OAAO;AAAA,EACrB,MAAM,SAAS,OAAO;AAAA,EACtB,MAAM,QAAQ,aAAa,KAAK,OAAO,QAAQ,EAAE;AAAA,EACjD,MAAM,SAAS,OAAO,QAAQ;AAAA,EAC9B,MAAM,UAAU,QAAQ;AAAA,EACxB,MAAM,UAAU,SAAS;AAAA,EACzB,SAAS,IAAI,EAAE,IAAI,QAAQ,KAAK;AAAA,IAC9B,SAAS,IAAI,EAAE,IAAI,OAAO,KAAK;AAAA,MAC7B,MAAM,KAAK,IAAI;AAAA,MACf,MAAM,KAAK,IAAI;AAAA,MACf,MAAM,SAAS,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,SAAS,OAAO,IAAI,QAAQ;AAAA,MAC9F,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,QAAQ,GAAG,IAAI,MAAM,CAAC;AAAA,MACtD,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,QAAQ,GAAG,IAAI,MAAM,CAAC;AAAA,MACtD,MAAM,UAAU,IAAI,QAAQ,MAAM;AAAA,MAClC,MAAM,UAAU,IAAI,QAAQ,KAAK;AAAA,MACjC,MAAM,UAAU,IAAI,QAAQ,MAAM;AAAA,MAClC,MAAM,aAAa,IAAI,QAAQ,KAAK;AAAA,MACpC,OAAO,aAAa,MAAM;AAAA,MAC1B,OAAO,YAAY,KAAK,MAAM,SAAS;AAAA,MACvC,OAAO,YAAY,KAAK,MAAM,SAAS;AAAA,IACzC;AAAA,EACF;AAAA;AAEF,SAAS,aAAa,CAAC,QAAQ,OAAO,cAAc;AAAA,EAClD,MAAM,QAAQ,OAAO;AAAA,EACrB,MAAM,SAAS,OAAO;AAAA,EACtB,MAAM,QAAQ,OAAO,QAAQ;AAAA,EAC7B,MAAM,MAAM,OAAO,QAAQ;AAAA,EAC3B,MAAM,aAAa,KAAK;AAAA,EACxB,SAAS,IAAI,EAAE,IAAI,QAAQ,KAAK;AAAA,IAC9B,SAAS,IAAI,EAAE,IAAI,OAAO,KAAK;AAAA,MAC7B,MAAM,QAAQ,IAAI,QAAQ;AAAA,MAC1B,MAAM,aAAa,QAAQ;AAAA,MAC3B,MAAM,MAAM,IAAI;AAAA,MAChB,MAAM,MAAM,IAAI,aAAa;AAAA,MAC7B,MAAM,MAAM,IAAI,aAAa;AAAA,MAC7B,MAAM,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ;AAAA,MAChD,MAAM,YAAY,KAAK,IAAI,aAAa,GAAG,KAAK,MAAM,MAAM,UAAU,CAAC;AAAA,MACvE,MAAM,SAAS,KAAK,WAAW,WAAW,CAAC;AAAA,IAC7C;AAAA,EACF;AAAA;AAAA;AAGF,MAAM,iBAAiB;AAAA,EACrB,wBAAwB;AAAA,EACxB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,iBAAiB,CAAC;AAAA,EAClB,WAAW,CAAC,SAAS;AAAA,IACnB,IAAI,SAAS;AAAA,MACX,OAAO,OAAO,MAAM,OAAO;AAAA,IAC7B;AAAA;AAAA,EAEF,KAAK,CAAC,QAAQ,WAAW;AAAA,IACvB,MAAM,QAAQ,OAAO;AAAA,IACrB,MAAM,SAAS,OAAO;AAAA,IACtB,MAAM,MAAM,OAAO;AAAA,IACnB,KAAK,kBAAkB;AAAA,IACvB,IAAI,KAAK,eAAe,SAAS,KAAK,KAAK,kBAAkB,KAAK,gBAAgB;AAAA,MAChF,KAAK,iBAAiB,CAAC;AAAA,MACvB,KAAK,iBAAiB;AAAA,IACxB;AAAA,IACA,IAAI,KAAK,eAAe,WAAW,KAAK,KAAK,OAAO,IAAI,KAAK,wBAAwB,WAAW;AAAA,MAC9F,KAAK,iBAAiB;AAAA,MACtB,KAAK,iBAAiB,KAAK,oBAAoB,KAAK,OAAO,KAAK,KAAK,oBAAoB,KAAK;AAAA,MAC9F,MAAM,cAAc,IAAI,KAAK,MAAM,KAAK,OAAO,IAAI,KAAK,cAAc;AAAA,MACtE,SAAS,IAAI,EAAE,IAAI,aAAa,KAAK;AAAA,QACnC,MAAM,IAAI,KAAK,MAAM,KAAK,OAAO,IAAI,MAAM;AAAA,QAC3C,IAAI;AAAA,QACJ,IAAI,SAAS;AAAA,QACb,MAAM,WAAW,KAAK,OAAO;AAAA,QAC7B,IAAI,WAAW,KAAK,mBAAmB;AAAA,UACrC,OAAO;AAAA,QACT,EAAO;AAAA,UACL,MAAM,aAAa,WAAW,KAAK,sBAAsB,IAAI,KAAK;AAAA,UAClE,IAAI,YAAY,KAAK,gBAAgB;AAAA,YACnC,OAAO;AAAA,YACP,SAAS,KAAK,OAAO,KAAK,OAAO,IAAI,OAAO,IAAI,KAAK,cAAc;AAAA,UACrE,EAAO;AAAA,YACL,OAAO;AAAA;AAAA;AAAA,QAGX,IAAI,CAAC,KAAK,eAAe,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;AAAA,UAC/C,KAAK,eAAe,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC;AAAA,QAC9C;AAAA,MACF;AAAA,IACF;AAAA,IACA,IAAI,KAAK,eAAe,SAAS,GAAG;AAAA,MAClC,IAAI,WAAW;AAAA,MACf,IAAI,SAAS;AAAA,MACb,IAAI,SAAS;AAAA,MACb,IAAI,WAAW;AAAA,MACf,WAAW,UAAU,KAAK,gBAAgB;AAAA,QACxC,MAAM,IAAI,OAAO;AAAA,QACjB,IAAI,IAAI,KAAK,KAAK;AAAA,UAChB;AAAA,QACF,MAAM,YAAY,IAAI;AAAA,QACtB,IAAI,OAAO,SAAS,WAAW,OAAO,SAAS,QAAQ;AAAA,UACrD,IAAI,CAAC,UAAU;AAAA,YACb,WAAW,IAAI,YAAY,KAAK;AAAA,YAChC,SAAS,IAAI,aAAa,QAAQ,CAAC;AAAA,YACnC,SAAS,IAAI,aAAa,QAAQ,CAAC;AAAA,YACnC,WAAW,IAAI,WAAW,KAAK;AAAA,UACjC;AAAA,UACA,IAAI;AAAA,YACF,SAAS,IAAI,IAAI,KAAK,SAAS,WAAW,YAAY,KAAK,CAAC;AAAA,YAC5D,OAAO,IAAI,IAAI,GAAG,SAAS,YAAY,IAAI,YAAY,SAAS,CAAC,CAAC;AAAA,YAClE,OAAO,IAAI,IAAI,GAAG,SAAS,YAAY,IAAI,YAAY,SAAS,CAAC,CAAC;AAAA,YAClE,SAAS,IAAI,IAAI,WAAW,SAAS,WAAW,YAAY,KAAK,CAAC;AAAA,YAClE,OAAO,GAAG;AAAA,YACV,QAAQ,MAAM,qBAAqB,qBAAqB,CAAC;AAAA,YACzD;AAAA;AAAA,UAEF,IAAI,OAAO,SAAS,SAAS;AAAA,YAC3B,MAAM,QAAQ,OAAO;AAAA,YACrB,SAAS,IAAI,EAAE,IAAI,OAAO,KAAK;AAAA,cAC7B,MAAM,QAAQ,IAAI,QAAQ,SAAS;AAAA,cACnC,MAAM,YAAY,YAAY;AAAA,cAC9B,MAAM,eAAe;AAAA,cACrB,IAAI,KAAK,aAAa,SAAS;AAAA,cAC/B,IAAI,WAAW,aAAa,SAAS;AAAA,cACrC,MAAM,iBAAiB,YAAY;AAAA,cACnC,MAAM,oBAAoB,eAAe;AAAA,cACzC,IAAI,GAAG,IAAI,OAAO,SAAS,mBAAmB,oBAAoB,CAAC,GAAG,cAAc;AAAA,cACpF,IAAI,GAAG,IAAI,OAAO,SAAS,mBAAmB,oBAAoB,CAAC,GAAG,cAAc;AAAA,YACtF;AAAA,UACF,EAAO;AAAA,YACL,SAAS,IAAI,EAAE,IAAI,OAAO,KAAK;AAAA,cAC7B,MAAM,OAAO,QAAQ,IAAI;AAAA,cACzB,MAAM,YAAY,YAAY;AAAA,cAC9B,MAAM,eAAe;AAAA,cACrB,IAAI,KAAK,aAAa,SAAS;AAAA,cAC/B,IAAI,WAAW,aAAa,SAAS;AAAA,cACrC,MAAM,iBAAiB,YAAY;AAAA,cACnC,MAAM,oBAAoB,eAAe;AAAA,cACzC,IAAI,GAAG,IAAI,OAAO,SAAS,mBAAmB,oBAAoB,CAAC,GAAG,cAAc;AAAA,cACpF,IAAI,GAAG,IAAI,OAAO,SAAS,mBAAmB,oBAAoB,CAAC,GAAG,cAAc;AAAA,YACtF;AAAA;AAAA,QAEJ,EAAO,SAAI,OAAO,SAAS,SAAS;AAAA,UAClC,MAAM,cAAc,KAAK,MAAM,KAAK,OAAO,IAAI,KAAK;AAAA,UACpD,MAAM,oBAAoB,QAAQ;AAAA,UAClC,IAAI,eAAe,KAAK,MAAM,KAAK,OAAO,IAAI,iBAAiB,IAAI;AAAA,UACnE,IAAI,KAAK,OAAO,IAAI,KAAK;AAAA,YACvB,eAAe,KAAK,MAAM,KAAK,OAAO,KAAK,QAAQ,EAAE,IAAI;AAAA,UAC3D;AAAA,UACA,eAAe,KAAK,IAAI,cAAc,iBAAiB;AAAA,UACvD,SAAS,IAAI,YAAY,IAAI,cAAc,cAAc,KAAK;AAAA,YAC5D,IAAI,KAAK;AAAA,cACP;AAAA,YACF,MAAM,YAAY,YAAY;AAAA,YAC9B,MAAM,iBAAiB,YAAY;AAAA,YACnC,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK;AAAA,YAC7B,MAAM,YAAY,KAAK,OAAO;AAAA,YAC9B,IAAI,YAAY,MAAM;AAAA,cACpB,MAAM,KAAK,OAAO;AAAA,cAClB,MAAM,KAAK,OAAO;AAAA,cAClB,MAAM,KAAK,OAAO;AAAA,cAClB,MAAM,KAAK,OAAO;AAAA,cAClB,MAAM,KAAK,OAAO;AAAA,cAClB,MAAM,KAAK,OAAO;AAAA,YACpB,EAAO,SAAI,YAAY,MAAM;AAAA,cAC3B,MAAM,WAAW,KAAK,OAAO;AAAA,cAC7B,IAAI,WAAW,MAAM;AAAA,gBACnB,MAAM,KAAK,OAAO;AAAA,gBAClB,MAAM;AAAA,gBACN,MAAM;AAAA,cACR,EAAO,SAAI,WAAW,KAAK;AAAA,gBACzB,MAAM;AAAA,gBACN,MAAM,KAAK,OAAO;AAAA,gBAClB,MAAM;AAAA,cACR,EAAO,SAAI,WAAW,MAAM;AAAA,gBAC1B,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,MAAM,KAAK,OAAO;AAAA,cACpB,EAAO;AAAA,gBACL,MAAM,kBAAkB,KAAK,OAAO;AAAA,gBACpC,IAAI,kBAAkB,MAAM;AAAA,kBAC1B,MAAM;AAAA,kBACN,MAAM;AAAA,kBACN,MAAM;AAAA,gBACR,EAAO,SAAI,kBAAkB,MAAM;AAAA,kBACjC,MAAM;AAAA,kBACN,MAAM;AAAA,kBACN,MAAM;AAAA,gBACR,EAAO;AAAA,kBACL,MAAM;AAAA,kBACN,MAAM;AAAA,kBACN,MAAM;AAAA;AAAA;AAAA,cAGV,IAAI,KAAK,OAAO,IAAI,KAAK;AAAA,gBACvB,MAAM,IAAI;AAAA,gBACV,MAAM,IAAI;AAAA,gBACV,MAAM,IAAI;AAAA,cACZ,EAAO;AAAA,gBACL,MAAM,OAAO,KAAK,OAAO,IAAI,MAAM;AAAA,gBACnC,MAAM,OAAO,KAAK,OAAO,IAAI,MAAM;AAAA,gBACnC,MAAM,OAAO,KAAK,OAAO,IAAI,MAAM;AAAA;AAAA,YAEvC,EAAO;AAAA,cACL,MAAM,KAAK,OAAO,IAAI,MAAM,IAAI;AAAA,cAChC,MAAM,KAAK,OAAO,IAAI,MAAM,IAAI;AAAA,cAChC,MAAM,KAAK,OAAO,IAAI,MAAM,IAAI;AAAA,cAChC,MAAM,IAAI;AAAA,cACV,MAAM,IAAI;AAAA,cACV,MAAM,IAAI;AAAA;AAAA,YAEZ,IAAI,GAAG,kBAAkB;AAAA,YACzB,IAAI,GAAG,iBAAiB,KAAK;AAAA,YAC7B,IAAI,GAAG,iBAAiB,KAAK;AAAA,YAC7B,IAAI,GAAG,kBAAkB;AAAA,YACzB,IAAI,GAAG,iBAAiB,KAAK;AAAA,YAC7B,IAAI,GAAG,iBAAiB,KAAK;AAAA,UAC/B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAEJ;AAAA;AAEA,MAAM,eAAe;AAAA,EACnB;AAAA,EACA,6BAA6B;AAAA,EAC7B,cAAc;AAAA,EACd,eAAe;AAAA,EACf,WAAW,CAAC,WAAW,KAAK;AAAA,IAC1B,KAAK,YAAY;AAAA;AAAA,MAEf,QAAQ,CAAC,aAAa;AAAA,IACxB,KAAK,YAAY,KAAK,IAAI,GAAG,WAAW;AAAA;AAAA,MAEtC,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,EAEd,eAAe,CAAC,OAAO,QAAQ;AAAA,IAC7B,KAAK,6BAA6B,IAAI,aAAa,QAAQ,MAAM;AAAA,IACjE,MAAM,UAAU,QAAQ;AAAA,IACxB,MAAM,UAAU,SAAS;AAAA,IACzB,MAAM,YAAY,UAAU,UAAU,UAAU;AAAA,IAChD,MAAM,gBAAgB,cAAc,IAAI,IAAI;AAAA,IAC5C,SAAS,IAAI,EAAE,IAAI,QAAQ,KAAK;AAAA,MAC9B,MAAM,KAAK,IAAI;AAAA,MACf,MAAM,OAAO,KAAK;AAAA,MAClB,SAAS,IAAI,EAAE,IAAI,OAAO,KAAK;AAAA,QAC7B,MAAM,KAAK,IAAI;AAAA,QACf,MAAM,SAAS,KAAK,KAAK;AAAA,QACzB,MAAM,kBAAkB,KAAK,IAAI,GAAG,SAAS,aAAa;AAAA,QAC1D,MAAM,QAAQ,IAAI,QAAQ;AAAA,QAC1B,KAAK,2BAA2B,SAAS;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,KAAK,cAAc;AAAA,IACnB,KAAK,eAAe;AAAA;AAAA,EAEtB,KAAK,CAAC,QAAQ;AAAA,IACZ,MAAM,QAAQ,OAAO;AAAA,IACrB,MAAM,SAAS,OAAO;AAAA,IACtB,MAAM,MAAM,OAAO;AAAA,IACnB,MAAM,OAAO,QAAQ;AAAA,IACrB,IAAI,UAAU,KAAK,eAAe,WAAW,KAAK,gBAAgB,CAAC,KAAK,4BAA4B;AAAA,MAClG,KAAK,gBAAgB,OAAO,MAAM;AAAA,IACpC;AAAA,IACA,SAAS,IAAI,EAAE,IAAI,MAAM,KAAK;AAAA,MAC5B,MAAM,SAAS,KAAK,IAAI,GAAG,IAAI,KAAK,2BAA2B,KAAK,KAAK,SAAS;AAAA,MAClF,MAAM,aAAa,IAAI;AAAA,MACvB,IAAI,GAAG,eAAe;AAAA,MACtB,IAAI,GAAG,aAAa,MAAM;AAAA,MAC1B,IAAI,GAAG,aAAa,MAAM;AAAA,MAC1B,IAAI,GAAG,eAAe;AAAA,MACtB,IAAI,GAAG,aAAa,MAAM;AAAA,MAC1B,IAAI,GAAG,aAAa,MAAM;AAAA,IAC5B;AAAA;AAEJ;AAAA;AAEA,MAAM,iBAAiB;AAAA,EACrB;AAAA,EACA,WAAW,CAAC,aAAa,GAAG;AAAA,IAC1B,KAAK,cAAc,KAAK,IAAI,GAAG,UAAU;AAAA;AAAA,MAEvC,UAAU,CAAC,eAAe;AAAA,IAC5B,KAAK,cAAc,KAAK,IAAI,GAAG,aAAa;AAAA;AAAA,MAE1C,UAAU,GAAG;AAAA,IACf,OAAO,KAAK;AAAA;AAAA,EAEd,KAAK,CAAC,QAAQ;AAAA,IACZ,MAAM,OAAO,OAAO,QAAQ,OAAO;AAAA,IACnC,MAAM,MAAM,OAAO,QAAQ;AAAA,IAC3B,MAAM,MAAM,OAAO,QAAQ;AAAA,IAC3B,MAAM,SAAS,KAAK;AAAA,IACpB,IAAI,WAAW,GAAG;AAAA,MAChB;AAAA,IACF;AAAA,IACA,SAAS,IAAI,EAAE,IAAI,MAAM,KAAK;AAAA,MAC5B,MAAM,aAAa,IAAI;AAAA,MACvB,IAAI,cAAc,KAAK,IAAI,GAAG,IAAI,cAAc,MAAM;AAAA,MACtD,IAAI,aAAa,KAAK,KAAK,IAAI,GAAG,IAAI,aAAa,KAAK,MAAM;AAAA,MAC9D,IAAI,aAAa,KAAK,KAAK,IAAI,GAAG,IAAI,aAAa,KAAK,MAAM;AAAA,MAC9D,IAAI,cAAc,KAAK,IAAI,GAAG,IAAI,cAAc,MAAM;AAAA,MACtD,IAAI,aAAa,KAAK,KAAK,IAAI,GAAG,IAAI,aAAa,KAAK,MAAM;AAAA,MAC9D,IAAI,aAAa,KAAK,KAAK,IAAI,GAAG,IAAI,aAAa,KAAK,MAAM;AAAA,IAChE;AAAA;AAEJ;AAAA;AAEA,MAAM,WAAW;AAAA,EACf;AAAA,EACA,WAAW,CAAC,SAAS,GAAG;AAAA,IACtB,KAAK,UAAU,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,CAAC;AAAA;AAAA,MAE3C,MAAM,CAAC,WAAW;AAAA,IACpB,KAAK,UAAU,KAAK,IAAI,GAAG,KAAK,MAAM,SAAS,CAAC;AAAA;AAAA,MAE9C,MAAM,GAAG;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,EAEd,KAAK,CAAC,QAAQ;AAAA,IACZ,MAAM,SAAS,KAAK;AAAA,IACpB,IAAI,UAAU;AAAA,MACZ;AAAA,IACF,MAAM,QAAQ,OAAO;AAAA,IACrB,MAAM,SAAS,OAAO;AAAA,IACtB,MAAM,MAAM,OAAO;AAAA,IACnB,MAAM,QAAQ,IAAI;AAAA,IAClB,MAAM,QAAQ,IAAI;AAAA,IAClB,MAAM,SAAS,IAAI;AAAA,IACnB,MAAM,SAAS,IAAI;AAAA,IACnB,MAAM,QAAQ,IAAI;AAAA,IAClB,MAAM,OAAO,QAAQ;AAAA,IACrB,MAAM,cAAc;AAAA,IACpB,MAAM,eAAe,IAAI,aAAa,OAAO,WAAW;AAAA,IACxD,MAAM,eAAe,IAAI,aAAa,OAAO,WAAW;AAAA,IACxD,MAAM,aAAa,SAAS,IAAI;AAAA,IAChC,SAAS,IAAI,EAAE,IAAI,QAAQ,KAAK;AAAA,MAC9B,IAAI,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO;AAAA,MACzC,MAAM,eAAe,IAAI;AAAA,MACzB,SAAS,IAAI,CAAC,OAAO,KAAK,QAAQ,KAAK;AAAA,QACrC,MAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,QAAQ,GAAG,CAAC,CAAC;AAAA,QAClD,MAAM,YAAY,eAAe,WAAW;AAAA,QAC5C,QAAQ,MAAM;AAAA,QACd,QAAQ,MAAM,WAAW;AAAA,QACzB,QAAQ,MAAM,WAAW;AAAA,QACzB,QAAQ,MAAM,WAAW;AAAA,MAC3B;AAAA,MACA,SAAS,IAAI,EAAE,IAAI,OAAO,KAAK;AAAA,QAC7B,MAAM,aAAa,eAAe,KAAK;AAAA,QACvC,aAAa,aAAa,OAAO;AAAA,QACjC,aAAa,YAAY,KAAK,OAAO;AAAA,QACrC,aAAa,YAAY,KAAK,OAAO;AAAA,QACrC,aAAa,YAAY,KAAK,OAAO;AAAA,QACrC,MAAM,WAAW,KAAK,IAAI,GAAG,KAAK,IAAI,QAAQ,GAAG,IAAI,MAAM,CAAC;AAAA,QAC5D,MAAM,gBAAgB,eAAe,YAAY;AAAA,QACjD,QAAQ,MAAM;AAAA,QACd,QAAQ,MAAM,eAAe;AAAA,QAC7B,QAAQ,MAAM,eAAe;AAAA,QAC7B,QAAQ,MAAM,eAAe;AAAA,QAC7B,MAAM,YAAY,KAAK,IAAI,GAAG,KAAK,IAAI,QAAQ,GAAG,IAAI,SAAS,CAAC,CAAC;AAAA,QACjE,MAAM,iBAAiB,eAAe,aAAa;AAAA,QACnD,QAAQ,MAAM;AAAA,QACd,QAAQ,MAAM,gBAAgB;AAAA,QAC9B,QAAQ,MAAM,gBAAgB;AAAA,QAC9B,QAAQ,MAAM,gBAAgB;AAAA,MAChC;AAAA,IACF;AAAA,IACA,SAAS,IAAI,EAAE,IAAI,QAAQ,KAAK;AAAA,MAC9B,IAAI,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO;AAAA,MACzC,MAAM,eAAe,IAAI;AAAA,MACzB,SAAS,IAAI,CAAC,OAAO,KAAK,QAAQ,KAAK;AAAA,QACrC,MAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,QAAQ,GAAG,CAAC,CAAC;AAAA,QAClD,MAAM,YAAY,eAAe,WAAW;AAAA,QAC5C,QAAQ,MAAM;AAAA,QACd,QAAQ,MAAM,WAAW;AAAA,QACzB,QAAQ,MAAM,WAAW;AAAA,QACzB,QAAQ,MAAM,WAAW;AAAA,MAC3B;AAAA,MACA,SAAS,IAAI,EAAE,IAAI,OAAO,KAAK;AAAA,QAC7B,MAAM,aAAa,eAAe,KAAK;AAAA,QACvC,aAAa,aAAa,OAAO;AAAA,QACjC,aAAa,YAAY,KAAK,OAAO;AAAA,QACrC,aAAa,YAAY,KAAK,OAAO;AAAA,QACrC,aAAa,YAAY,KAAK,OAAO;AAAA,QACrC,MAAM,WAAW,KAAK,IAAI,GAAG,KAAK,IAAI,QAAQ,GAAG,IAAI,MAAM,CAAC;AAAA,QAC5D,MAAM,gBAAgB,eAAe,YAAY;AAAA,QACjD,QAAQ,MAAM;AAAA,QACd,QAAQ,MAAM,eAAe;AAAA,QAC7B,QAAQ,MAAM,eAAe;AAAA,QAC7B,QAAQ,MAAM,eAAe;AAAA,QAC7B,MAAM,YAAY,KAAK,IAAI,GAAG,KAAK,IAAI,QAAQ,GAAG,IAAI,SAAS,CAAC,CAAC;AAAA,QACjE,MAAM,iBAAiB,eAAe,aAAa;AAAA,QACnD,QAAQ,MAAM;AAAA,QACd,QAAQ,MAAM,gBAAgB;AAAA,QAC9B,QAAQ,MAAM,gBAAgB;AAAA,QAC9B,QAAQ,MAAM,gBAAgB;AAAA,MAChC;AAAA,IACF;AAAA,IACA,SAAS,IAAI,EAAE,IAAI,OAAO,KAAK;AAAA,MAC7B,IAAI,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO;AAAA,MACzC,SAAS,IAAI,CAAC,OAAO,KAAK,QAAQ,KAAK;AAAA,QACrC,MAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,SAAS,GAAG,CAAC,CAAC;AAAA,QACnD,MAAM,YAAY,UAAU,QAAQ,KAAK;AAAA,QACzC,QAAQ,aAAa;AAAA,QACrB,QAAQ,aAAa,WAAW;AAAA,QAChC,QAAQ,aAAa,WAAW;AAAA,QAChC,QAAQ,aAAa,WAAW;AAAA,MAClC;AAAA,MACA,SAAS,IAAI,EAAE,IAAI,QAAQ,KAAK;AAAA,QAC9B,MAAM,aAAa,IAAI,QAAQ,KAAK;AAAA,QACpC,OAAO,aAAa,OAAO;AAAA,QAC3B,OAAO,YAAY,KAAK,OAAO;AAAA,QAC/B,OAAO,YAAY,KAAK,OAAO;AAAA,QAC/B,OAAO,YAAY,KAAK,OAAO;AAAA,QAC/B,MAAM,WAAW,KAAK,IAAI,GAAG,KAAK,IAAI,SAAS,GAAG,IAAI,MAAM,CAAC;AAAA,QAC7D,MAAM,gBAAgB,WAAW,QAAQ,KAAK;AAAA,QAC9C,QAAQ,aAAa;AAAA,QACrB,QAAQ,aAAa,eAAe;AAAA,QACpC,QAAQ,aAAa,eAAe;AAAA,QACpC,QAAQ,aAAa,eAAe;AAAA,QACpC,MAAM,YAAY,KAAK,IAAI,GAAG,KAAK,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,CAAC;AAAA,QAClE,MAAM,iBAAiB,YAAY,QAAQ,KAAK;AAAA,QAChD,QAAQ,aAAa;AAAA,QACrB,QAAQ,aAAa,gBAAgB;AAAA,QACrC,QAAQ,aAAa,gBAAgB;AAAA,QACrC,QAAQ,aAAa,gBAAgB;AAAA,MACvC;AAAA,IACF;AAAA,IACA,SAAS,IAAI,EAAE,IAAI,OAAO,KAAK;AAAA,MAC7B,IAAI,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO;AAAA,MACzC,SAAS,IAAI,CAAC,OAAO,KAAK,QAAQ,KAAK;AAAA,QACrC,MAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,SAAS,GAAG,CAAC,CAAC;AAAA,QACnD,MAAM,YAAY,UAAU,QAAQ,KAAK;AAAA,QACzC,QAAQ,aAAa;AAAA,QACrB,QAAQ,aAAa,WAAW;AAAA,QAChC,QAAQ,aAAa,WAAW;AAAA,QAChC,QAAQ,aAAa,WAAW;AAAA,MAClC;AAAA,MACA,SAAS,IAAI,EAAE,IAAI,QAAQ,KAAK;AAAA,QAC9B,MAAM,aAAa,IAAI,QAAQ,KAAK;AAAA,QACpC,OAAO,aAAa,OAAO;AAAA,QAC3B,OAAO,YAAY,KAAK,OAAO;AAAA,QAC/B,OAAO,YAAY,KAAK,OAAO;AAAA,QAC/B,OAAO,YAAY,KAAK,OAAO;AAAA,QAC/B,MAAM,WAAW,KAAK,IAAI,GAAG,KAAK,IAAI,SAAS,GAAG,IAAI,MAAM,CAAC;AAAA,QAC7D,MAAM,gBAAgB,WAAW,QAAQ,KAAK;AAAA,QAC9C,QAAQ,aAAa;AAAA,QACrB,QAAQ,aAAa,eAAe;AAAA,QACpC,QAAQ,aAAa,eAAe;AAAA,QACpC,QAAQ,aAAa,eAAe;AAAA,QACpC,MAAM,YAAY,KAAK,IAAI,GAAG,KAAK,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,CAAC;AAAA,QAClE,MAAM,iBAAiB,YAAY,QAAQ,KAAK;AAAA,QAChD,QAAQ,aAAa;AAAA,QACrB,QAAQ,aAAa,gBAAgB;AAAA,QACrC,QAAQ,aAAa,gBAAgB;AAAA,QACrC,QAAQ,aAAa,gBAAgB;AAAA,MACvC;AAAA,IACF;AAAA,IACA,MAAM,WAAW,CAAC,KAAK,UAAU,UAAU,UAAU,GAAG;AAAA,IACxD,MAAM,aAAa,SAAS;AAAA,IAC5B,SAAS,IAAI,EAAE,IAAI,MAAM,KAAK;AAAA,MAC5B,MAAM,aAAa,IAAI,cAAc;AAAA,MACrC,MAAM,UAAU,OAAO;AAAA,MACvB,MAAM,eAAe,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC;AAAA,MACrD,MAAM,YAAY,KAAK,IAAI,aAAa,GAAG,KAAK,MAAM,eAAe,UAAU,CAAC;AAAA,MAChF,MAAM,KAAK,SAAS,WAAW,WAAW,CAAC;AAAA,IAC7C;AAAA;AAEJ;AAAA;AAEA,MAAM,YAAY;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,CAAC,YAAY,KAAK,WAAW,KAAK,SAAS,GAAG;AAAA,IACvD,KAAK,aAAa,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,SAAS,CAAC;AAAA,IACpD,KAAK,YAAY,KAAK,IAAI,GAAG,QAAQ;AAAA,IACrC,KAAK,UAAU,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,CAAC;AAAA;AAAA,MAE3C,SAAS,CAAC,cAAc;AAAA,IAC1B,KAAK,aAAa,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,YAAY,CAAC;AAAA;AAAA,MAErD,SAAS,GAAG;AAAA,IACd,OAAO,KAAK;AAAA;AAAA,MAEV,QAAQ,CAAC,aAAa;AAAA,IACxB,KAAK,YAAY,KAAK,IAAI,GAAG,WAAW;AAAA;AAAA,MAEtC,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,MAAM,CAAC,WAAW;AAAA,IACpB,KAAK,UAAU,KAAK,IAAI,GAAG,KAAK,MAAM,SAAS,CAAC;AAAA;AAAA,MAE9C,MAAM,GAAG;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,EAEd,KAAK,CAAC,QAAQ;AAAA,IACZ,MAAM,YAAY,KAAK;AAAA,IACvB,MAAM,WAAW,KAAK;AAAA,IACtB,MAAM,SAAS,KAAK;AAAA,IACpB,IAAI,YAAY,KAAK,UAAU;AAAA,MAC7B;AAAA,IACF,MAAM,QAAQ,OAAO;AAAA,IACrB,MAAM,SAAS,OAAO;AAAA,IACtB,MAAM,QAAQ,aAAa,KAAK,OAAO,QAAQ,EAAE;AAAA,IACjD,MAAM,QAAQ,aAAa,KAAK,OAAO,QAAQ,EAAE;AAAA,IACjD,MAAM,SAAS,OAAO,QAAQ;AAAA,IAC9B,MAAM,SAAS,OAAO,QAAQ;AAAA,IAC9B,MAAM,eAAe,CAAC;AAAA,IACtB,SAAS,IAAI,EAAE,IAAI,QAAQ,KAAK;AAAA,MAC9B,SAAS,IAAI,EAAE,IAAI,OAAO,KAAK;AAAA,QAC7B,MAAM,SAAS,IAAI,QAAQ,KAAK;AAAA,QAChC,MAAM,QAAQ,QAAQ,MAAM,SAAS,QAAQ,MAAM,QAAQ,KAAK,QAAQ,MAAM,QAAQ;AAAA,QACtF,MAAM,QAAQ,QAAQ,MAAM,SAAS,QAAQ,MAAM,QAAQ,KAAK,QAAQ,MAAM,QAAQ;AAAA,QACtF,MAAM,MAAM,KAAK,IAAI,OAAO,KAAK;AAAA,QACjC,IAAI,MAAM,WAAW;AAAA,UACnB,MAAM,aAAa,MAAM,cAAc,IAAI,YAAY;AAAA,UACvD,aAAa,KAAK,EAAE,GAAG,GAAG,WAAW,KAAK,IAAI,GAAG,SAAS,EAAE,CAAC;AAAA,QAC/D;AAAA,MACF;AAAA,IACF;AAAA,IACA,IAAI,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF,OAAO,IAAI,KAAK;AAAA,IAChB,OAAO,IAAI,KAAK;AAAA,IAChB,WAAW,UAAU,cAAc;AAAA,MACjC,SAAS,KAAK,CAAC,OAAO,MAAM,QAAQ,MAAM;AAAA,QACxC,SAAS,KAAK,CAAC,OAAO,MAAM,QAAQ,MAAM;AAAA,UACxC,IAAI,OAAO,KAAK,OAAO;AAAA,YACrB;AAAA,UACF,MAAM,UAAU,OAAO,IAAI;AAAA,UAC3B,MAAM,UAAU,OAAO,IAAI;AAAA,UAC3B,IAAI,WAAW,KAAK,UAAU,SAAS,WAAW,KAAK,UAAU,QAAQ;AAAA,YACvE,MAAM,SAAS,KAAK,KAAK,KAAK;AAAA,YAC9B,MAAM,WAAW,SAAS;AAAA,YAC1B,IAAI,UAAU,UAAU;AAAA,cACtB,MAAM,UAAU,IAAI,SAAS;AAAA,cAC7B,MAAM,cAAc,OAAO,YAAY,WAAW;AAAA,cAClD,MAAM,aAAa,UAAU,QAAQ,WAAW;AAAA,cAChD,OAAO,aAAa,KAAK,IAAI,GAAG,OAAO,aAAa,WAAW;AAAA,cAC/D,OAAO,YAAY,KAAK,KAAK,IAAI,GAAG,OAAO,YAAY,KAAK,WAAW;AAAA,cACvE,OAAO,YAAY,KAAK,KAAK,IAAI,GAAG,OAAO,YAAY,KAAK,WAAW;AAAA,cACvE,OAAO,aAAa,KAAK,IAAI,GAAG,OAAO,aAAa,WAAW;AAAA,cAC/D,OAAO,YAAY,KAAK,KAAK,IAAI,GAAG,OAAO,YAAY,KAAK,WAAW;AAAA,cACvE,OAAO,YAAY,KAAK,KAAK,IAAI,GAAG,OAAO,YAAY,KAAK,WAAW;AAAA,YACzE;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAEJ;AAEA,IAAI,kBAAkB;AAAA,EACpB,QAAQ,CAAC,OAAO;AAAA,EAChB,QAAQ,CAAC,OAAO,KAAK;AAAA,EACrB,SAAS,CAAC,OAAO,MAAM,IAAI;AAAA,EAC3B,WAAW,CAAC,OAAO,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI,MAAM;AAAA,EAChE,QAAQ,CAAC,OAAO,OAAO,IAAI,IAAI,KAAK,IAAI,GAAG,MAAM,KAAK,EAAE;AAAA,EACxD,SAAS,CAAC,OAAO,OAAO,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG,MAAM,EAAE;AAAA,EACxD,WAAW,CAAC,OAAO,EAAE,KAAK,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK;AAAA,EACnD,WAAW,CAAC,OAAO;AAAA,IACjB,MAAM,KAAK;AAAA,IACX,MAAM,KAAK;AAAA,IACX,IAAI,KAAK,IAAI,IAAI;AAAA,MACf,OAAO,KAAK,KAAK;AAAA,IACnB,EAAO,SAAI,KAAK,IAAI,IAAI;AAAA,MACtB,OAAO,MAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IACtC,EAAO,SAAI,KAAK,MAAM,IAAI;AAAA,MACxB,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,IACvC,EAAO;AAAA,MACL,OAAO,MAAM,MAAM,QAAQ,MAAM,KAAK;AAAA;AAAA;AAAA,EAG1C,YAAY,CAAC,OAAO;AAAA,IAClB,MAAM,KAAK,IAAI,KAAK,KAAK;AAAA,IACzB,OAAO,OAAO,IAAI,IAAI,OAAO,IAAI,IAAI,KAAK,IAAI,GAAG,MAAM,EAAE,IAAI,KAAK,KAAK,KAAK,KAAK,QAAQ,EAAE,IAAI;AAAA;AAAA,EAEjG,UAAU,CAAC,OAAO,IAAI,gBAAgB,UAAU,IAAI,EAAE;AAAA,EACtD,QAAQ,CAAC,OAAO,IAAI,KAAK,KAAK,IAAI,KAAK,EAAE;AAAA,EACzC,SAAS,CAAC,OAAO,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC;AAAA,EAClD,WAAW,CAAC,OAAO;AAAA,IACjB,KAAK,MAAM,KAAK;AAAA,MACd,OAAO,QAAQ,KAAK,KAAK,IAAI,KAAK,EAAE,IAAI;AAAA,IAC1C,OAAO,OAAO,KAAK,KAAK,KAAK,MAAM,KAAK,EAAE,IAAI;AAAA;AAAA,EAEhD,QAAQ,CAAC,IAAI,IAAI,YAAY,KAAK,OAAO,IAAI,KAAK,KAAK;AAAA,EACvD,SAAS,CAAC,IAAI,IAAI,YAAY,EAAE,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK;AAAA,EAC/D,WAAW,CAAC,IAAI,IAAI,YAAY;AAAA,IAC9B,KAAK;AAAA,IACL,KAAK,MAAM,KAAK;AAAA,MACd,OAAO,OAAO,KAAK,OAAO,IAAI,KAAK,KAAK;AAAA,IAC1C,OAAO,QAAQ,MAAM,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK;AAAA;AAExD;AACA,SAAS,oBAAoB,CAAC,MAAM;AAAA,EAClC,IAAI,CAAC,KAAK;AAAA,IACR;AAAA,EACF,IAAI,CAAC,KAAK,iBAAiB,KAAK,cAAc,WAAW,GAAG;AAAA,IAC1D,MAAM,gBAAgB,CAAC;AAAA,IACvB,SAAS,IAAI,EAAE,IAAI,KAAK,OAAO,QAAQ,KAAK;AAAA,MAC1C,MAAM,SAAS,KAAK,OAAO;AAAA,MAC3B,MAAM,sBAAsB,CAAC;AAAA,MAC7B,WAAW,OAAO,OAAO,KAAK,KAAK,UAAU,GAAG;AAAA,QAC9C,IAAI,OAAO,OAAO,SAAS,UAAU;AAAA,UACnC,oBAAoB,OAAO,OAAO;AAAA,QACpC;AAAA,MACF;AAAA,MACA,cAAc,KAAK,mBAAmB;AAAA,IACxC;AAAA,IACA,KAAK,gBAAgB;AAAA,EACvB;AAAA;AAEF,SAAS,wBAAwB,CAAC,MAAM,UAAU,UAAU,cAAc,YAAY,GAAG;AAAA,EACvF,IAAI,CAAC,KAAK,cAAc,CAAC,KAAK;AAAA,IAC5B;AAAA,EACF,MAAM,WAAW,gBAAgB,KAAK,QAAQ,aAAa,gBAAgB;AAAA,EAC3E,MAAM,gBAAgB,SAAS,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,QAAQ,CAAC,CAAC;AAAA,EACjE,MAAM,gBAAgB,WAAW,IAAI,gBAAgB;AAAA,EACrD,SAAS,IAAI,EAAE,IAAI,KAAK,OAAO,QAAQ,KAAK;AAAA,IAC1C,MAAM,SAAS,KAAK,OAAO;AAAA,IAC3B,MAAM,sBAAsB,KAAK,cAAc;AAAA,IAC/C,IAAI,CAAC;AAAA,MACH;AAAA,IACF,YAAY,KAAK,aAAa,OAAO,QAAQ,KAAK,UAAU,GAAG;AAAA,MAC7D,MAAM,aAAa,oBAAoB;AAAA,MACvC,MAAM,WAAW,cAAc,WAAW,cAAc;AAAA,MACxD,OAAO,OAAO;AAAA,IAChB;AAAA,EACF;AAAA,EACA,IAAI,KAAK,UAAU;AAAA,IACjB,MAAM,YAAY;AAAA,MAChB,SAAS,KAAK;AAAA,MACd,UAAU;AAAA,MACV,aAAa;AAAA,MACb;AAAA,IACF;AAAA,IACA,KAAK,SAAS,SAAS;AAAA,EACzB;AAAA;AAEF,SAAS,iBAAiB,CAAC,MAAM,cAAc,YAAY,GAAG;AAAA,EAC5D,IAAI,eAAe,KAAK,WAAW;AAAA,IACjC;AAAA,EACF;AAAA,EACA,MAAM,gBAAgB,eAAe,KAAK;AAAA,EAC1C,MAAM,WAAW,KAAK,YAAY;AAAA,EAClC,IAAI,gBAAgB,KAAK,aAAa,CAAC,KAAK,SAAS;AAAA,IACnD,qBAAqB,IAAI;AAAA,IACzB,IAAI,KAAK,SAAS;AAAA,MAChB,KAAK,QAAQ;AAAA,IACf;AAAA,IACA,KAAK,UAAU;AAAA,EACjB;AAAA,EACA,IAAI,aAAa,GAAG;AAAA,IAClB,IAAI,CAAC,KAAK,WAAW;AAAA,MACnB,yBAAyB,MAAM,GAAG,OAAO,cAAc,SAAS;AAAA,MAChE,IAAI,KAAK,YAAY;AAAA,QACnB,KAAK,WAAW;AAAA,MAClB;AAAA,MACA,KAAK,YAAY;AAAA,IACnB;AAAA,IACA;AAAA,EACF;AAAA,EACA,MAAM,WAAW,CAAC,KAAK,QAAQ,KAAK,SAAS,IAAI,IAAI,OAAO,KAAK,SAAS,WAAW,KAAK,OAAO;AAAA,EACjG,MAAM,YAAY,KAAK,aAAa;AAAA,EACpC,MAAM,YAAY,WAAW;AAAA,EAC7B,IAAI,eAAe,KAAK,MAAM,gBAAgB,SAAS;AAAA,EACvD,IAAI,cAAc,gBAAgB;AAAA,EAClC,IAAI,KAAK,UAAU,KAAK,gBAAgB,aAAa,eAAe,KAAK,eAAe,eAAe,UAAU;AAAA,IAC/G,KAAK,OAAO;AAAA,EACd;AAAA,EACA,KAAK,cAAc;AAAA,EACnB,IAAI,KAAK,cAAc,CAAC,KAAK,aAAa,iBAAiB,WAAW,KAAK,eAAe,UAAU;AAAA,IAClG,MAAM,qBAAqB,KAAK,aAAa,UAAU,eAAe,MAAM;AAAA,IAC5E,yBAAyB,MAAM,GAAG,mBAAmB,cAAc,SAAS;AAAA,IAC5E,KAAK,WAAW;AAAA,IAChB,KAAK,YAAY;AAAA,IACjB;AAAA,EACF;AAAA,EACA,IAAI,gBAAgB,UAAU;AAAA,IAC5B,IAAI,CAAC,KAAK,WAAW;AAAA,MACnB,MAAM,iBAAiB,KAAK,aAAa,WAAW,WAAW,KAAK,MAAM;AAAA,MAC1E,yBAAyB,MAAM,GAAG,eAAe,cAAc,SAAS;AAAA,MACxE,IAAI,KAAK,YAAY;AAAA,QACnB,KAAK,WAAW;AAAA,MAClB;AAAA,MACA,KAAK,YAAY;AAAA,IACnB;AAAA,IACA;AAAA,EACF;AAAA,EACA,IAAI,gBAAgB,KAAK,gBAAgB,KAAK,eAAe,UAAU;AAAA,IACrE,eAAe,eAAe;AAAA,IAC9B,cAAc;AAAA,EAChB;AAAA,EACA,IAAI,eAAe,UAAU;AAAA,IAC3B,MAAM,eAAe,KAAK,aAAa,UAAU,eAAe,MAAM;AAAA,IACtE,yBAAyB,MAAM,GAAG,aAAa,cAAc,SAAS;AAAA,IACtE;AAAA,EACF;AAAA,EACA,MAAM,WAAW,cAAc;AAAA,EAC/B,MAAM,cAAc,KAAK,aAAa,UAAU,eAAe,MAAM;AAAA,EACrE,yBAAyB,MAAM,UAAU,YAAY,cAAc,SAAS;AAAA;AAE9E,SAAS,gBAAgB,CAAC,MAAM,cAAc;AAAA,EAC5C,IAAI,CAAC,KAAK,YAAY,gBAAgB,KAAK,aAAa,KAAK,UAAU;AAAA,IACrE,KAAK,SAAS;AAAA,IACd,KAAK,WAAW;AAAA,EAClB;AAAA;AAEF,SAAS,oBAAoB,CAAC,MAAM,cAAc,YAAY,GAAG;AAAA,EAC/D,IAAI,CAAC,KAAK;AAAA,IACR;AAAA,EACF,IAAI,eAAe,KAAK,WAAW;AAAA,IACjC;AAAA,EACF;AAAA,EACA,IAAI,CAAC,KAAK,iBAAiB;AAAA,IACzB,KAAK,kBAAkB;AAAA,IACvB,KAAK,SAAS,KAAK;AAAA,IACnB,MAAM,YAAY,eAAe,KAAK;AAAA,IACtC,KAAK,SAAS,OAAO,SAAS;AAAA,IAC9B;AAAA,EACF;AAAA,EACA,KAAK,SAAS,OAAO,SAAS;AAAA;AAEhC,SAAS,YAAY,CAAC,MAAM,cAAc,YAAY,GAAG;AAAA,EACvD,IAAI,KAAK,SAAS,aAAa;AAAA,IAC7B,kBAAkB,MAAM,cAAc,SAAS;AAAA,EACjD,EAAO,SAAI,KAAK,SAAS,YAAY;AAAA,IACnC,iBAAiB,MAAM,YAAY;AAAA,EACrC;AAAA;AAAA;AAGF,MAAM,SAAS;AAAA,EACb,QAAQ,CAAC;AAAA,EACT,eAAe,CAAC;AAAA,EAChB,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA,uBAAuB,CAAC;AAAA,EACxB,WAAW,CAAC,UAAU,CAAC,GAAG;AAAA,IACxB,KAAK,WAAW,QAAQ,YAAY;AAAA,IACpC,KAAK,OAAO,QAAQ,SAAS;AAAA,IAC7B,KAAK,WAAW,QAAQ,aAAa;AAAA,IACrC,KAAK,aAAa,QAAQ;AAAA,IAC1B,KAAK,UAAU,QAAQ;AAAA;AAAA,EAEzB,sBAAsB,CAAC,UAAU;AAAA,IAC/B,KAAK,qBAAqB,KAAK,QAAQ;AAAA;AAAA,EAEzC,yBAAyB,CAAC,UAAU;AAAA,IAClC,KAAK,uBAAuB,KAAK,qBAAqB,OAAO,CAAC,MAAM,MAAM,QAAQ;AAAA;AAAA,EAEpF,iBAAiB,GAAG;AAAA,IAClB,WAAW,YAAY,KAAK,sBAAsB;AAAA,MAChD,SAAS,IAAI;AAAA,IACf;AAAA;AAAA,EAEF,GAAG,CAAC,QAAQ,YAAY,YAAY,GAAG;AAAA,IACrC,MAAM,oBAAoB,OAAO,cAAc,WAAW,IAAI;AAAA,IAC9D,MAAM,sBAAsB,CAAC;AAAA,IAC7B,WAAW,OAAO,YAAY;AAAA,MAC5B,IAAI,CAAC,CAAC,YAAY,QAAQ,YAAY,cAAc,WAAW,UAAU,QAAQ,aAAa,WAAW,EAAE,SAAS,GAAG,GAAG;AAAA,QACxH,IAAI,OAAO,WAAW,SAAS,UAAU;AAAA,UACvC,oBAAoB,OAAO,WAAW;AAAA,QACxC;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,MAAM,KAAK;AAAA,MACd,MAAM;AAAA,MACN,WAAW;AAAA,MACX,QAAQ,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC,MAAM;AAAA,MAChD,YAAY;AAAA,MACZ,eAAe,CAAC;AAAA,MAChB,UAAU,WAAW,aAAa,YAAY,WAAW,WAAW;AAAA,MACpE,MAAM,WAAW,QAAQ;AAAA,MACzB,MAAM,WAAW;AAAA,MACjB,WAAW,WAAW,aAAa;AAAA,MACnC,WAAW,WAAW,aAAa;AAAA,MACnC,UAAU,WAAW;AAAA,MACrB,YAAY,WAAW;AAAA,MACvB,SAAS,WAAW;AAAA,MACpB,QAAQ,WAAW;AAAA,MACnB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,aAAa;AAAA,MACb,MAAM,WAAW,QAAQ;AAAA,IAC3B,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,EAET,IAAI,CAAC,QAAQ,YAAY;AAAA,IACvB,KAAK,IAAI,QAAQ;AAAA,SACZ;AAAA,MACH,MAAM;AAAA,IACR,GAAG,KAAK,WAAW;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,IAAI,CAAC,UAAU,YAAY,GAAG;AAAA,IAC5B,MAAM,oBAAoB,OAAO,cAAc,WAAW,IAAI;AAAA,IAC9D,KAAK,MAAM,KAAK;AAAA,MACd,MAAM;AAAA,MACN,WAAW;AAAA,MACX;AAAA,MACA,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,EAET,IAAI,CAAC,UAAU,YAAY,GAAG;AAAA,IAC5B,IAAI,SAAS,QAAQ;AAAA,MACnB,MAAM,IAAI,MAAM,yBAAyB;AAAA,IAC3C;AAAA,IACA,KAAK,aAAa,KAAK;AAAA,MACrB,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACD,SAAS,SAAS;AAAA,IAClB,OAAO;AAAA;AAAA,EAET,IAAI,GAAG;AAAA,IACL,IAAI,KAAK,YAAY;AAAA,MACnB,OAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IACA,KAAK,aAAa,QAAQ,CAAC,gBAAgB;AAAA,MACzC,IAAI,YAAY,iBAAiB;AAAA,QAC/B,YAAY,SAAS,KAAK;AAAA,MAC5B;AAAA,KACD;AAAA,IACD,KAAK,YAAY;AAAA,IACjB,KAAK,kBAAkB;AAAA,IACvB,OAAO;AAAA;AAAA,EAET,KAAK,GAAG;AAAA,IACN,KAAK,aAAa,QAAQ,CAAC,gBAAgB;AAAA,MACzC,YAAY,SAAS,MAAM;AAAA,KAC5B;AAAA,IACD,KAAK,YAAY;AAAA,IACjB,IAAI,KAAK,SAAS;AAAA,MAChB,KAAK,QAAQ;AAAA,IACf;AAAA,IACA,KAAK,kBAAkB;AAAA,IACvB,OAAO;AAAA;AAAA,EAET,UAAU,GAAG;AAAA,IACX,KAAK,MAAM,QAAQ,CAAC,SAAS;AAAA,MAC3B,IAAI,KAAK,SAAS,YAAY;AAAA,QAC5B,KAAK,WAAW;AAAA,MAClB,EAAO,SAAI,KAAK,SAAS,aAAa;AAAA,QACpC,KAAK,YAAY;AAAA,QACjB,KAAK,UAAU;AAAA,QACf,KAAK,cAAc;AAAA,MACrB;AAAA,KACD;AAAA,IACD,KAAK,aAAa,QAAQ,CAAC,gBAAgB;AAAA,MACzC,YAAY,kBAAkB;AAAA,MAC9B,IAAI,YAAY,UAAU;AAAA,QACxB,YAAY,SAAS,QAAQ;AAAA,QAC7B,YAAY,SAAS,MAAM;AAAA,MAC7B;AAAA,KACD;AAAA;AAAA,EAEH,OAAO,GAAG;AAAA,IACR,KAAK,aAAa;AAAA,IAClB,KAAK,cAAc;AAAA,IACnB,KAAK,YAAY;AAAA,IACjB,KAAK,WAAW;AAAA,IAChB,KAAK,kBAAkB;AAAA,IACvB,OAAO;AAAA;AAAA,EAET,MAAM,CAAC,WAAW;AAAA,IAChB,WAAW,eAAe,KAAK,cAAc;AAAA,MAC3C,qBAAqB,aAAa,KAAK,cAAc,WAAW,SAAS;AAAA,IAC3E;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,KAAK,eAAe;AAAA,IACpB,WAAW,QAAQ,KAAK,OAAO;AAAA,MAC7B,aAAa,MAAM,KAAK,aAAa,SAAS;AAAA,IAChD;AAAA,IACA,SAAS,IAAI,KAAK,MAAM,SAAS,EAAE,KAAK,GAAG,KAAK;AAAA,MAC9C,MAAM,OAAO,KAAK,MAAM;AAAA,MACxB,IAAI,KAAK,SAAS,eAAe,KAAK,QAAQ,KAAK,WAAW;AAAA,QAC5D,KAAK,MAAM,OAAO,GAAG,CAAC;AAAA,MACxB;AAAA,IACF;AAAA,IACA,IAAI,KAAK,QAAQ,KAAK,eAAe,KAAK,UAAU;AAAA,MAClD,MAAM,YAAY,KAAK,cAAc,KAAK;AAAA,MAC1C,KAAK,WAAW;AAAA,MAChB,KAAK,cAAc;AAAA,MACnB,IAAI,YAAY,GAAG;AAAA,QACjB,KAAK,OAAO,SAAS;AAAA,MACvB;AAAA,IACF,EAAO,SAAI,CAAC,KAAK,QAAQ,KAAK,eAAe,KAAK,UAAU;AAAA,MAC1D,KAAK,cAAc,KAAK;AAAA,MACxB,KAAK,YAAY;AAAA,MACjB,KAAK,aAAa;AAAA,MAClB,IAAI,KAAK,YAAY;AAAA,QACnB,KAAK,WAAW;AAAA,MAClB;AAAA,MACA,KAAK,kBAAkB;AAAA,IACzB;AAAA;AAEJ;AAAA;AAEA,MAAM,eAAe;AAAA,EACnB,YAAY,IAAI;AAAA,EAChB,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,WAAW;AAAA,IACT,WAAW;AAAA,EACb;AAAA,EACA,MAAM,CAAC,UAAU;AAAA,IACf,IAAI,KAAK,UAAU;AAAA,MACjB,KAAK,OAAO;AAAA,IACd;AAAA,IACA,KAAK,WAAW;AAAA,IAChB,KAAK,gBAAgB,OAAO,cAAc;AAAA,MACxC,KAAK,OAAO,SAAS;AAAA;AAAA,IAEvB,SAAS,iBAAiB,KAAK,aAAa;AAAA;AAAA,EAE9C,MAAM,GAAG;AAAA,IACP,IAAI,KAAK,YAAY,KAAK,eAAe;AAAA,MACvC,KAAK,SAAS,oBAAoB,KAAK,aAAa;AAAA,MACpD,IAAI,KAAK,QAAQ;AAAA,QACf,KAAK,SAAS,SAAS;AAAA,QACvB,KAAK,SAAS;AAAA,MAChB;AAAA,IACF;AAAA,IACA,KAAK,WAAW;AAAA,IAChB,KAAK,gBAAgB;AAAA;AAAA,EAEvB,eAAe,GAAG;AAAA,IAChB,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,MAAM,sBAAsB,MAAM,KAAK,KAAK,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,SAAS,UAAU,SAAS,aAAa,CAAC,SAAS,UAAU;AAAA,IACxI,IAAI,uBAAuB,CAAC,KAAK,QAAQ;AAAA,MACvC,KAAK,SAAS,YAAY;AAAA,MAC1B,KAAK,SAAS;AAAA,IAChB,EAAO,SAAI,CAAC,uBAAuB,KAAK,QAAQ;AAAA,MAC9C,KAAK,SAAS,SAAS;AAAA,MACvB,KAAK,SAAS;AAAA,IAChB;AAAA;AAAA,EAEF,wBAAwB,CAAC,aAAa;AAAA,IACpC,KAAK,gBAAgB;AAAA;AAAA,EAEvB,QAAQ,CAAC,UAAU;AAAA,IACjB,IAAI,CAAC,KAAK,UAAU,IAAI,QAAQ,GAAG;AAAA,MACjC,KAAK,UAAU,IAAI,QAAQ;AAAA,MAC3B,SAAS,uBAAuB,KAAK,qBAAqB;AAAA,MAC1D,KAAK,gBAAgB;AAAA,IACvB;AAAA;AAAA,EAEF,UAAU,CAAC,UAAU;AAAA,IACnB,IAAI,KAAK,UAAU,IAAI,QAAQ,GAAG;AAAA,MAChC,KAAK,UAAU,OAAO,QAAQ;AAAA,MAC9B,SAAS,0BAA0B,KAAK,qBAAqB;AAAA,MAC7D,KAAK,gBAAgB;AAAA,IACvB;AAAA;AAAA,EAEF,KAAK,GAAG;AAAA,IACN,WAAW,YAAY,KAAK,WAAW;AAAA,MACrC,SAAS,0BAA0B,KAAK,qBAAqB;AAAA,IAC/D;AAAA,IACA,KAAK,UAAU,MAAM;AAAA,IACrB,KAAK,gBAAgB;AAAA;AAAA,EAEvB,MAAM,CAAC,WAAW;AAAA,IAChB,WAAW,YAAY,KAAK,WAAW;AAAA,MACrC,IAAI,CAAC,SAAS,QAAQ;AAAA,QACpB,SAAS,OAAO,SAAS;AAAA,MAC3B;AAAA,IACF;AAAA;AAEJ;AACA,IAAI,SAAS,IAAI;AACjB,SAAS,cAAc,CAAC,UAAU,CAAC,GAAG;AAAA,EACpC,MAAM,WAAW,IAAI,SAAS,OAAO;AAAA,EACrC,IAAI,QAAQ,aAAa,OAAO;AAAA,IAC9B,SAAS,KAAK;AAAA,EAChB;AAAA,EACA,OAAO,SAAS,QAAQ;AAAA,EACxB,OAAO;AAAA;AAIT,SAAS,UAAS,CAAC,OAAO;AAAA,EACxB,IAAI,OAAO,UAAU,UAAU;AAAA,IAC7B,IAAI,QAAQ,OAAO,OAAO,gBAAgB,GAAG;AAAA,MAC3C,MAAM,IAAI,MAAM,oCAAoC;AAAA,IACtD;AAAA,IACA,OAAO,OAAO,KAAK;AAAA,EACrB;AAAA,EACA,OAAO;AAAA;AAET,SAAS,SAAQ,CAAC,OAAO;AAAA,EACvB,OAAO,OAAO,UAAU,WAAW,OAAO,KAAK,IAAI;AAAA;AAAA;AAGrD,MAAM,eAAe;AAAA,SACZ,MAAM,CAAC,SAAS;AAAA,IACrB,MAAM,MAAM,iBAAiB;AAAA,IAC7B,MAAM,YAAY,IAAI,qBAAqB,OAAO;AAAA,IAClD,MAAM,SAAS,IAAI,eAAe,SAAS;AAAA,IAC3C,IAAI,6BAA6B,WAAW,OAAO,YAAY;AAAA,IAC/D,MAAM,SAAS,IAAI,qBAAqB,SAAS;AAAA,IACjD,IAAI,WAAW,GAAG;AAAA,MAChB,IAAI,+BAA+B,SAAS;AAAA,MAC5C,IAAI,sBAAsB,SAAS;AAAA,MACnC,MAAM,IAAI,MAAM,4BAA4B,QAAQ;AAAA,IACtD;AAAA,IACA,OAAO;AAAA;AAAA,SAEF,MAAM,CAAC,WAAW,UAAU;AAAA,IACjC,MAAM,MAAM,iBAAiB;AAAA,IAC7B,MAAM,OAAM,WAAU,SAAS;AAAA,IAC/B,MAAM,SAAS,IAAI,eAAe,IAAG;AAAA,IACrC,IAAI,6BAA6B,MAAK,OAAO,YAAY;AAAA,IACzD,MAAM,SAAS,IAAI,qBAAqB,IAAG;AAAA,IAC3C,IAAI,WAAW,GAAG;AAAA,MAChB,IAAI,+BAA+B,IAAG;AAAA,MACtC,MAAM,IAAI,MAAM,4BAA4B,QAAQ;AAAA,IACtD;AAAA,IACA,OAAO;AAAA;AAAA,EAET;AAAA,EACA,MAAM,iBAAiB;AAAA,EACvB;AAAA,EACA,WAAW,IAAI;AAAA,EACf,aAAa,IAAI;AAAA,EACjB,eAAe,IAAI;AAAA,EACnB,gBAAgB,IAAI;AAAA,EACpB,cAAc;AAAA,EACd,cAAc;AAAA,EACd,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,uBAAuB;AAAA,EACvB,eAAe;AAAA,EACf,UAAU;AAAA,EACV,uBAAuB;AAAA,EACvB,aAAa;AAAA,EACb,cAAc;AAAA,EACd,WAAW,CAAC,WAAW;AAAA,IACrB,KAAK,YAAY;AAAA,IACjB,KAAK,eAAe,CAAC,SAAS,MAAM,SAAS;AAAA,MAC3C,KAAK,YAAY,SAAS,MAAM,IAAI;AAAA;AAAA,IAEtC,KAAK,kBAAkB;AAAA;AAAA,EAEzB,iBAAiB,GAAG;AAAA,IAClB,IAAI,KAAK;AAAA,MACP;AAAA,IACF,MAAM,WAAW;AAAA,IACjB,KAAK,cAAc,IAAI,WAAW,WAAW,eAAe,IAAI;AAAA;AAAA,EAElE,MAAM,CAAC,SAAS;AAAA,IACd,KAAK,aAAa,IAAI,OAAO;AAAA,IAC7B,IAAI,KAAK,sBAAsB;AAAA,MAC7B,KAAK,uBAAuB;AAAA,MAC5B,KAAK,SAAS;AAAA,IAChB;AAAA,IACA,OAAO,MAAM,KAAK,aAAa,OAAO,OAAO;AAAA;AAAA,EAE/C,OAAO,CAAC,SAAS;AAAA,IACf,KAAK,cAAc,IAAI,OAAO;AAAA,IAC9B,OAAO,MAAM,KAAK,cAAc,OAAO,OAAO;AAAA;AAAA,EAEhD,KAAK,GAAG;AAAA,IACN,IAAI,KAAK;AAAA,MACP;AAAA,IACF,IAAI,KAAK,cAAc,KAAK,YAAY,KAAK,uBAAuB,GAAG;AAAA,MACrE,KAAK,eAAe;AAAA,MACpB,IAAI,CAAC,KAAK,aAAa;AAAA,QACrB,KAAK,cAAc;AAAA,QACnB,eAAe,MAAM;AAAA,UACnB,KAAK,cAAc;AAAA,UACnB,KAAK,oBAAoB;AAAA,SAC1B;AAAA,MACH;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAAA;AAAA,EAEpB,mBAAmB,GAAG;AAAA,IACpB,IAAI,CAAC,KAAK,gBAAgB,KAAK;AAAA,MAC7B;AAAA,IACF,IAAI,KAAK,cAAc,KAAK,YAAY,KAAK,uBAAuB;AAAA,MAClE;AAAA,IACF,KAAK,eAAe;AAAA,IACpB,KAAK,aAAa;AAAA;AAAA,EAEpB,YAAY,GAAG;AAAA,IACb,IAAI,KAAK;AAAA,MACP;AAAA,IACF,KAAK,UAAU;AAAA,IACf,IAAI,CAAC,KAAK,QAAQ;AAAA,MAChB,MAAM,SAAS,KAAK,IAAI,YAAY,KAAK,SAAS;AAAA,MAClD,IAAI,WAAW,GAAG;AAAA,QAChB,KAAK,UAAU;AAAA,QACf;AAAA,MACF;AAAA,MACA,KAAK,SAAS;AAAA,IAChB;AAAA,IACA,KAAK,gBAAgB;AAAA;AAAA,EAEvB,eAAe,GAAG;AAAA,IAChB,IAAI,KAAK;AAAA,MACP;AAAA,IACF,KAAK,IAAI,+BAA+B,KAAK,SAAS;AAAA,IACtD,KAAK,IAAI,sBAAsB,KAAK,SAAS;AAAA,IAC7C,KAAK,YAAY;AAAA,IACjB,KAAK,SAAS,MAAM;AAAA,IACpB,KAAK,WAAW,MAAM;AAAA,IACtB,KAAK,cAAc;AAAA,IACnB,KAAK,cAAc;AAAA,IACnB,KAAK,aAAa,MAAM;AAAA,IACxB,KAAK,cAAc,MAAM;AAAA,IACzB,KAAK,uBAAuB;AAAA;AAAA,EAE9B,WAAW,CAAC,SAAS,MAAM,MAAM;AAAA,IAC/B,KAAK,aAAa;AAAA,IAClB,IAAI;AAAA,MACF,QAAQ;AAAA,aACD,GAAqB;AAAA,UACxB,MAAM,MAAM,UAAS,IAAI;AAAA,UACzB,IAAI,MAAM,KAAK,MAAM;AAAA,YACnB,MAAM,SAAS,eAAc,MAAM,GAAG,GAAG;AAAA,YACzC,KAAK,cAAc,IAAI,WAAW,MAAM;AAAA,UAC1C;AAAA,UACA;AAAA,QACF;AAAA,aACK,GAAuB;AAAA,UAC1B,IAAI,KAAK;AAAA,YACP;AAAA,UACF,IAAI,KAAK,aAAa,SAAS,GAAG;AAAA,YAChC,KAAK,uBAAuB;AAAA,YAC5B;AAAA,UACF;AAAA,UACA,KAAK,SAAS;AAAA,UACd;AAAA,QACF;AAAA,aACK,GAAoB;AAAA,UACvB,MAAM,WAAW,UAAS,IAAI;AAAA,UAC9B,IAAI,WAAW,KAAK,MAAM;AAAA,YACxB,IAAI,CAAC,KAAK,SAAS,IAAI,IAAI,GAAG;AAAA,cAC5B,MAAM,SAAS,eAAc,MAAM,GAAG,QAAQ;AAAA,cAC9C,KAAK,SAAS,IAAI,MAAM,MAAM;AAAA,YAChC;AAAA,YACA,KAAK,WAAW,IAAI,MAAM,QAAQ;AAAA,UACpC;AAAA,UACA;AAAA,QACF;AAAA,aACK,GAAe;AAAA,UAClB,MAAM,OAAO;AAAA,UACb,WAAW,WAAW,KAAK;AAAA,YACzB,QAAQ,IAAI;AAAA,UACd;AAAA,QACF;AAAA,aACK,GAAgB;AAAA,UACnB,KAAK,SAAS;AAAA,UACd;AAAA,QACF;AAAA;AAAA,UAEE;AAAA;AAAA,cAEJ;AAAA,MACA,KAAK,aAAa;AAAA;AAAA;AAAA,EAGtB,iBAAiB,CAAC,YAAY;AAAA,IAC5B,IAAI,KAAK,eAAe,aAAa,KAAK,YAAY,QAAQ;AAAA,MAC5D,MAAM,OAAO,KAAK,YAAY;AAAA,MAC9B,KAAK,YAAY,cAAc,OAAO,IAAI,OAAO,IAAI;AAAA,IACvD;AAAA;AAAA,EAEF,SAAS,GAAG;AAAA,IACV,IAAI,CAAC,KAAK,eAAe,KAAK,YAAY,KAAK;AAAA,MAC7C,OAAO;AAAA,IACT,MAAM,WAAW,KAAK,MAAM,KAAK,YAAY,aAAa,eAAe,IAAI;AAAA,IAC7E,IAAI,aAAa;AAAA,MACf,OAAO;AAAA,IACT,MAAM,QAAQ,KAAK,IAAI,iBAAiB,KAAK,WAAW,KAAK,aAAa,QAAQ;AAAA,IAClF,IAAI,UAAU;AAAA,MACZ,OAAO;AAAA,IACT,KAAK,WAAW;AAAA,IAChB,MAAM,QAAQ,eAAe,WAAW,KAAK,YAAY,QAAQ,KAAK;AAAA,IACtE,IAAI,aAAa;AAAA,IACjB,IAAI;AAAA,MACF,WAAW,QAAQ,OAAO;AAAA,QACxB,IAAI,KAAK,QAAQ;AAAA,UACf;AAAA,QACF,IAAI,SAAS,KAAK,SAAS,IAAI,KAAK,QAAQ;AAAA,QAC5C,IAAI,CAAC,QAAQ;AAAA,UACX,MAAM,OAAO,KAAK,WAAW,IAAI,KAAK,QAAQ;AAAA,UAC9C,IAAI,CAAC;AAAA,YACH;AAAA,UACF,SAAS,eAAc,KAAK,UAAU,GAAG,IAAI;AAAA,UAC7C,KAAK,SAAS,IAAI,KAAK,UAAU,MAAM;AAAA,QACzC;AAAA,QACA,IAAI,KAAK,SAAS,KAAK,MAAM,OAAO;AAAA,UAClC;AAAA,QACF,MAAM,QAAQ,IAAI,WAAW,QAAQ,KAAK,QAAQ,KAAK,GAAG;AAAA,QAC1D,IAAI,eAAe;AAAA,QACnB,WAAW,WAAW,KAAK,cAAc;AAAA,UACvC,IAAI;AAAA,YACF,MAAM,SAAS,QAAQ,KAAK;AAAA,YAC5B,IAAI,UAAU,OAAO,OAAO,SAAS,YAAY;AAAA,cAC/C,iBAAiB,CAAC;AAAA,cAClB,aAAa,KAAK,MAAM;AAAA,YAC1B;AAAA,YACA,OAAO,GAAG;AAAA,YACV,eAAe;AAAA;AAAA,QAEnB;AAAA,QACA,MAAM,0BAA0B,KAAK;AAAA,QACrC,IAAI,cAAc;AAAA,UAChB,MAAM,aAAa,KAAK;AAAA,UACxB,KAAK,wBAAwB;AAAA,UAC7B,QAAQ,WAAW,YAAY,EAAE,KAAK,MAAM;AAAA,YAC1C,KAAK,kBAAkB,UAAU;AAAA,YACjC,KAAK,wBAAwB;AAAA,YAC7B,KAAK,oBAAoB;AAAA,WAC1B;AAAA,QACH,EAAO;AAAA,UACL,KAAK,kBAAkB,KAAK,UAAU;AAAA;AAAA,QAExC,IAAI;AAAA,UACF;AAAA,MACJ;AAAA,cACA;AAAA,MACA,KAAK,WAAW;AAAA;AAAA,IAElB,IAAI;AAAA,MACF,MAAM;AAAA,IACR,OAAO;AAAA;AAAA,EAET,QAAQ,GAAG;AAAA,IACT,IAAI,QAAQ,KAAK,UAAU;AAAA,IAC3B,OAAO,QAAQ,GAAG;AAAA,MAChB,QAAQ,KAAK,UAAU;AAAA,IACzB;AAAA;AAEJ;AAAA;AAEA,MAAM,8BAA8B,WAAW;AAAA,EAC7C;AAAA,EACA;AAAA,EACA,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,KAAK,OAAO;AAAA,IAClB,KAAK,eAAe,QAAQ,gBAAgB;AAAA,IAC5C,KAAK,cAAc,gBAAgB,OAAO,QAAQ,OAAO,QAAQ,QAAQ,KAAK,KAAK,aAAa;AAAA,MAC9F,cAAc,KAAK;AAAA,MACnB,IAAI,QAAQ,MAAM,yBAAyB,KAAK;AAAA,IAClD,CAAC;AAAA;AAAA,EAEH,QAAQ,CAAC,OAAO,QAAQ;AAAA,IACtB,IAAI,SAAS,KAAK,UAAU,GAAG;AAAA,MAC7B,MAAM,IAAI,MAAM,uDAAuD,KAAK,OAAO,SAAS,QAAQ;AAAA,IACtG;AAAA,IACA,KAAK,YAAY,OAAO,OAAO,MAAM;AAAA,IACrC,MAAM,SAAS,OAAO,MAAM;AAAA,IAC5B,KAAK,cAAc;AAAA;AAAA,EAErB,UAAU,CAAC,QAAQ;AAAA,IACjB,IAAI,CAAC,KAAK,WAAW,KAAK;AAAA,MACxB;AAAA,IACF,OAAO,gBAAgB,KAAK,GAAG,KAAK,GAAG,KAAK,WAAW;AAAA;AAAA,EAEzD,WAAW,GAAG;AAAA,IACZ,KAAK,aAAa,QAAQ;AAAA,IAC1B,MAAM,YAAY;AAAA;AAEtB;AAAA;AAGA,MAAM,4BAA4B,sBAAsB;AAAA,EACtD,aAAa;AAAA,SACN,kBAAkB;AAAA,IACvB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,qBAAqB;AAAA,EACrB;AAAA,EACA,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,iBAAiB,oBAAoB;AAAA,IAC3C,MAAM,OAAO,QAAQ,QAAQ,eAAe;AAAA,IAC5C,MAAM,OAAO,QAAQ,QAAQ,eAAe;AAAA,IAC5C,MAAM,eAAe,YAAY,EAAE,MAAM,KAAK,CAAC;AAAA,IAC/C,MAAM,KAAK;AAAA,MACT,YAAY;AAAA,SACT;AAAA,MACH,OAAO,aAAa,SAAS;AAAA,MAC7B,QAAQ,aAAa,UAAU;AAAA,MAC/B,cAAc;AAAA,IAChB,CAAC;AAAA,IACD,KAAK,QAAQ;AAAA,IACb,KAAK,QAAQ;AAAA,IACb,KAAK,SAAS,QAAQ,SAAS,eAAe;AAAA,IAC9C,KAAK,mBAAmB,QAAQ,mBAAmB,eAAe;AAAA,IAClE,KAAK,eAAe,QAAQ,cAAc,WAAW,QAAQ,WAAW,IAAI;AAAA,IAC5E,KAAK,eAAe,QAAQ,cAAc,WAAW,QAAQ,WAAW,IAAI;AAAA,IAC5E,KAAK,aAAa,QAAQ,cAAc;AAAA,IACxC,KAAK,kBAAkB,IAAI,yBAAyB,MAAM,KAAK,OAAO,MAAM,KAAK,KAAK;AAAA,IACtF,KAAK,mBAAmB;AAAA;AAAA,MAEtB,IAAI,GAAG;AAAA,IACT,OAAO,KAAK;AAAA;AAAA,MAEV,IAAI,CAAC,OAAO;AAAA,IACd,KAAK,QAAQ;AAAA,IACb,KAAK,iBAAiB;AAAA,IACtB,IAAI,KAAK,oBAAoB;AAAA,MAC3B,KAAK,gBAAgB,wBAAwB,KAAK,oBAAoB,KAAK,OAAO,KAAK,MAAM;AAAA,IAC/F;AAAA,IACA,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,MAEjB,IAAI,GAAG;AAAA,IACT,OAAO,KAAK;AAAA;AAAA,MAEV,IAAI,CAAC,OAAO;AAAA,IACd,KAAK,QAAQ;AAAA,IACb,KAAK,iBAAiB;AAAA,IACtB,IAAI,KAAK,oBAAoB;AAAA,MAC3B,KAAK,gBAAgB,wBAAwB,KAAK,oBAAoB,KAAK,OAAO,KAAK,MAAM;AAAA,IAC/F;AAAA,IACA,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,MAEjB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK;AAAA;AAAA,MAEV,KAAK,CAAC,OAAO;AAAA,IACf,KAAK,SAAS;AAAA,IACd,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,MAEjB,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,MAEV,eAAe,CAAC,OAAO;AAAA,IACzB,KAAK,mBAAmB;AAAA,IACxB,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,EAErB,gBAAgB,GAAG;AAAA,IACjB,MAAM,eAAe,YAAY,EAAE,MAAM,KAAK,OAAO,MAAM,KAAK,MAAM,CAAC;AAAA,IACvE,KAAK,QAAQ,aAAa;AAAA,IAC1B,KAAK,SAAS,aAAa;AAAA;AAAA,EAE7B,oBAAoB,CAAC,GAAG,GAAG;AAAA,IACzB,MAAM,SAAS,IAAI,KAAK;AAAA,IACxB,MAAM,SAAS,IAAI,KAAK;AAAA,IACxB,OAAO,KAAK,gBAAgB,qBAAqB,QAAQ,QAAQ,KAAK,OAAO,KAAK,MAAM;AAAA;AAAA,EAE1F,kBAAkB,CAAC,WAAW;AAAA,IAC5B,MAAM,iBAAiB,8BAA8B,WAAW,KAAK,GAAG,KAAK,CAAC;AAAA,IAC9E,KAAK,qBAAqB;AAAA,IAC1B,MAAM,UAAU,KAAK,gBAAgB,wBAAwB,gBAAgB,KAAK,OAAO,KAAK,MAAM;AAAA,IACpG,IAAI,SAAS;AAAA,MACX,KAAK,mBAAmB;AAAA,MACxB,KAAK,cAAc;AAAA,IACrB;AAAA,IACA,OAAO;AAAA;AAAA,EAET,eAAe,GAAG;AAAA,IAChB,MAAM,YAAY,KAAK,gBAAgB,aAAa;AAAA,IACpD,IAAI,CAAC;AAAA,MACH,OAAO;AAAA,IACT,OAAO,KAAK,MAAM,MAAM,UAAU,OAAO,UAAU,GAAG;AAAA;AAAA,EAExD,YAAY,GAAG;AAAA,IACb,OAAO,KAAK,gBAAgB,aAAa;AAAA;AAAA,EAE3C,QAAQ,CAAC,OAAO,QAAQ;AAAA,IACtB,MAAM,SAAS,OAAO,MAAM;AAAA,IAC5B,KAAK,mBAAmB;AAAA;AAAA,EAE1B,kBAAkB,GAAG;AAAA,IACnB,IAAI,KAAK;AAAA,MACP;AAAA,IACF,KAAK,YAAY,MAAM,WAAW,KAAK,gBAAgB,CAAC;AAAA,IACxD,wBAAwB,KAAK,aAAa;AAAA,MACxC,MAAM,KAAK;AAAA,MACX,GAAG;AAAA,MACH,GAAG;AAAA,MACH,OAAO,KAAK;AAAA,MACZ,iBAAiB,KAAK;AAAA,MACtB,MAAM,KAAK;AAAA,IACb,CAAC;AAAA,IACD,MAAM,YAAY,KAAK,gBAAgB,aAAa;AAAA,IACpD,IAAI,cAAc,KAAK,gBAAgB,KAAK,eAAe;AAAA,MACzD,KAAK,yBAAyB,SAAS;AAAA,IACzC;AAAA;AAAA,EAEF,wBAAwB,CAAC,WAAW;AAAA,IAClC,IAAI,CAAC,KAAK,gBAAgB,CAAC,KAAK;AAAA,MAC9B;AAAA,IACF,MAAM,eAAe,KAAK,MAAM,MAAM,UAAU,OAAO,UAAU,GAAG;AAAA,IACpE,IAAI,CAAC;AAAA,MACH;AAAA,IACF,MAAM,YAAY,sBAAsB,KAAK,OAAO,KAAK,KAAK;AAAA,IAC9D,MAAM,SAAS,UAAU,UAAU,UAAU;AAAA,IAC7C,MAAM,OAAO,UAAU,MAAM,UAAU,SAAS,UAAU,UAAU,OAAO,YAAY,EAAE,MAAM,KAAK,OAAO,MAAM,KAAK,MAAM,CAAC,EAAE;AAAA,IAC/H,IAAI,KAAK,cAAc;AAAA,MACrB,KAAK,YAAY,SAAS,QAAQ,GAAG,OAAO,QAAQ,KAAK,QAAQ,WAAW,KAAK,YAAY,CAAC;AAAA,IAChG;AAAA,IACA,IAAI,KAAK,gBAAgB,KAAK,cAAc;AAAA,MAC1C,wBAAwB,KAAK,aAAa;AAAA,QACxC,MAAM;AAAA,QACN,GAAG;AAAA,QACH,GAAG;AAAA,QACH,OAAO,KAAK,eAAe,KAAK,eAAe,KAAK;AAAA,QACpD,iBAAiB,KAAK,eAAe,KAAK,eAAe,KAAK;AAAA,QAC9D,MAAM,KAAK;AAAA,MACb,CAAC;AAAA,IACH;AAAA;AAEJ;AAEA,SAAS,SAAS,CAAC,OAAO;AAAA,EACxB,IAAI,UAAU,WAAW;AAAA,IACvB,OAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,MAAM,KAAK,GAAG;AAAA,IACrD,OAAO;AAAA,EACT;AAAA,EACA,OAAO,kBAAkB,KAAK;AAAA;AAAA;AAGhC,MAAM,sBAAsB,WAAW;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,IAChB,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,oBAAoB;AAAA,EACtB;AAAA,EACA,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,KAAK,OAAO;AAAA,IAClB,IAAI,QAAQ,cAAc,MAAM;AAAA,MAC9B,KAAK,aAAa;AAAA,IACpB;AAAA,IACA,KAAK,mBAAmB,WAAW,QAAQ,mBAAmB,KAAK,gBAAgB,eAAe;AAAA,IAClG,KAAK,UAAU,QAAQ,UAAU,KAAK,gBAAgB;AAAA,IACtD,IAAI,CAAC,QAAQ,WAAW,QAAQ,eAAe,QAAQ,eAAe,QAAQ,sBAAsB,QAAQ,oBAAoB;AAAA,MAC9H,KAAK,UAAU;AAAA,IACjB;AAAA,IACA,KAAK,eAAe,iBAAiB,QAAQ,aAAa,KAAK,gBAAgB,WAAW;AAAA,IAC1F,KAAK,eAAe,WAAW,QAAQ,eAAe,KAAK,gBAAgB,WAAW;AAAA,IACtF,KAAK,sBAAsB,WAAW,QAAQ,sBAAsB,KAAK,gBAAgB,kBAAkB;AAAA,IAC3G,KAAK,wBAAwB,QAAQ;AAAA,IACrC,KAAK,qBAAqB,KAAK,wBAAwB,mBAAmB,KAAK,qBAAqB,IAAI;AAAA,IACxG,KAAK,cAAc,eAAe,KAAK,OAAO;AAAA,IAC9C,KAAK,aAAa,QAAQ,cAAc,KAAK,gBAAgB;AAAA,IAC7D,KAAK,SAAS,QAAQ;AAAA,IACtB,KAAK,kBAAkB,QAAQ,kBAAkB,KAAK,gBAAgB;AAAA,IACtE,KAAK,iBAAiB;AAAA,IACtB,MAAM,qBAAqB,QAAQ,QAAQ,aAAa,QAAQ,WAAW,aAAa,QAAQ,cAAc;AAAA,IAC9G,IAAI,oBAAoB;AAAA,MACtB,KAAK,aAAa,OAAO;AAAA,IAC3B;AAAA;AAAA,EAEF,gBAAgB,GAAG;AAAA,IACjB,IAAI,KAAK,YAAY,OAAO;AAAA,MAC1B,KAAK,UAAU;AAAA,MACf,KAAK,cAAc,eAAe,KAAK,OAAO;AAAA,MAC9C,KAAK,iBAAiB;AAAA,IACxB;AAAA;AAAA,MAEE,iBAAiB,GAAG;AAAA,IACtB,OAAO,KAAK;AAAA;AAAA,MAEV,iBAAiB,CAAC,OAAO;AAAA,IAC3B,KAAK,wBAAwB;AAAA,IAC7B,KAAK,qBAAqB,QAAQ,mBAAmB,KAAK,IAAI;AAAA,IAC9D,KAAK,cAAc;AAAA;AAAA,MAEjB,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,MAEV,eAAe,CAAC,OAAO;AAAA,IACzB,MAAM,WAAW,WAAW,SAAS,KAAK,gBAAgB,eAAe;AAAA,IACzE,IAAI,KAAK,qBAAqB,UAAU;AAAA,MACtC,KAAK,mBAAmB;AAAA,MACxB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,MAAM,GAAG;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,MAEV,MAAM,CAAC,OAAO;AAAA,IAChB,IAAI,KAAK,YAAY,OAAO;AAAA,MAC1B,KAAK,UAAU;AAAA,MACf,KAAK,cAAc,eAAe,KAAK;AAAA,MACvC,KAAK,iBAAiB;AAAA,MACtB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,OAAO;AAAA,IACrB,MAAM,SAAS,iBAAiB,OAAO,KAAK,gBAAgB,WAAW;AAAA,IACvE,IAAI,KAAK,iBAAiB,UAAU,CAAC,KAAK,SAAS;AAAA,MACjD,KAAK,eAAe;AAAA,MACpB,KAAK,qBAAqB;AAAA,MAC1B,KAAK,iBAAiB;AAAA,MACtB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,OAAO;AAAA,IACrB,MAAM,WAAW,WAAW,SAAS,KAAK,gBAAgB,WAAW;AAAA,IACrE,IAAI,KAAK,iBAAiB,UAAU;AAAA,MAClC,KAAK,eAAe;AAAA,MACpB,KAAK,iBAAiB;AAAA,MACtB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,kBAAkB,GAAG;AAAA,IACvB,OAAO,KAAK;AAAA;AAAA,MAEV,kBAAkB,CAAC,OAAO;AAAA,IAC5B,MAAM,WAAW,WAAW,SAAS,KAAK,gBAAgB,kBAAkB;AAAA,IAC5E,IAAI,KAAK,wBAAwB,UAAU;AAAA,MACzC,KAAK,sBAAsB;AAAA,MAC3B,KAAK,iBAAiB;AAAA,MACtB,IAAI,KAAK,UAAU;AAAA,QACjB,KAAK,cAAc;AAAA,MACrB;AAAA,IACF;AAAA;AAAA,MAEE,KAAK,GAAG;AAAA,IACV,OAAO,KAAK;AAAA;AAAA,MAEV,KAAK,CAAC,OAAO;AAAA,IACf,IAAI,KAAK,WAAW,OAAO;AAAA,MACzB,KAAK,SAAS;AAAA,MACd,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,cAAc,GAAG;AAAA,IACnB,OAAO,KAAK;AAAA;AAAA,MAEV,cAAc,CAAC,OAAO;AAAA,IACxB,IAAI,KAAK,oBAAoB,OAAO;AAAA,MAClC,KAAK,kBAAkB;AAAA,MACvB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,EAEF,UAAU,CAAC,QAAQ;AAAA,IACjB,MAAM,qBAAqB,KAAK,WAAW,KAAK,sBAAsB,KAAK;AAAA,IAC3E,OAAO,QAAQ;AAAA,MACb,GAAG,KAAK;AAAA,MACR,GAAG,KAAK;AAAA,MACR,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb,aAAa,KAAK;AAAA,MAClB,mBAAmB,KAAK;AAAA,MACxB,QAAQ,KAAK;AAAA,MACb,aAAa;AAAA,MACb,iBAAiB,KAAK;AAAA,MACtB,YAAY,KAAK;AAAA,MACjB,OAAO,KAAK;AAAA,MACZ,gBAAgB,KAAK;AAAA,IACvB,CAAC;AAAA;AAAA,EAEH,cAAc,GAAG;AAAA,IACf,MAAM,WAAW,MAAM,eAAe;AAAA,IACtC,IAAI,CAAC,KAAK,YAAY,OAAO,CAAC,KAAK,YAAY,SAAS,CAAC,KAAK,YAAY,UAAU,CAAC,KAAK,YAAY,MAAM;AAAA,MAC1G,OAAO;AAAA,IACT;AAAA,IACA,MAAM,YAAY,KAAK,YAAY,OAAO,IAAI;AAAA,IAC9C,MAAM,aAAa,KAAK,YAAY,QAAQ,IAAI;AAAA,IAChD,MAAM,WAAW,KAAK,YAAY,MAAM,IAAI;AAAA,IAC5C,MAAM,cAAc,KAAK,YAAY,SAAS,IAAI;AAAA,IAClD,OAAO;AAAA,MACL,GAAG,SAAS,IAAI;AAAA,MAChB,GAAG,SAAS,IAAI;AAAA,MAChB,OAAO,KAAK,IAAI,GAAG,SAAS,QAAQ,YAAY,UAAU;AAAA,MAC1D,QAAQ,KAAK,IAAI,GAAG,SAAS,SAAS,WAAW,WAAW;AAAA,IAC9D;AAAA;AAAA,EAEF,gBAAgB,GAAG;AAAA,IACjB,MAAM,OAAO,KAAK;AAAA,IAClB,KAAK,UAAU,KAAK,MAAM,KAAK,YAAY,OAAO,IAAI,CAAC;AAAA,IACvD,KAAK,UAAU,KAAK,OAAO,KAAK,YAAY,QAAQ,IAAI,CAAC;AAAA,IACzD,KAAK,UAAU,KAAK,KAAK,KAAK,YAAY,MAAM,IAAI,CAAC;AAAA,IACrD,KAAK,UAAU,KAAK,QAAQ,KAAK,YAAY,SAAS,IAAI,CAAC;AAAA,IAC3D,KAAK,cAAc;AAAA;AAAA,EAErB,YAAY,CAAC,SAAS;AAAA,IACpB,MAAM,OAAO,KAAK;AAAA,IAClB,IAAI,UAAU,QAAQ,GAAG,GAAG;AAAA,MAC1B,KAAK,OAAO,OAAO,KAAK,QAAQ,GAAG;AAAA,IACrC;AAAA,IACA,IAAI,UAAU,QAAQ,MAAM,GAAG;AAAA,MAC7B,KAAK,OAAO,OAAO,KAAK,QAAQ,MAAM;AAAA,IACxC;AAAA,IACA,IAAI,UAAU,QAAQ,SAAS,GAAG;AAAA,MAChC,KAAK,OAAO,OAAO,QAAQ,QAAQ,SAAS;AAAA,IAC9C;AAAA;AAAA,MAEE,GAAG,CAAC,KAAK;AAAA,IACX,IAAI,UAAU,GAAG,GAAG;AAAA,MAClB,KAAK,SAAS,OAAO,OAAO,KAAK,GAAG;AAAA,MACpC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,MAAM,CAAC,QAAQ;AAAA,IACjB,IAAI,UAAU,MAAM,GAAG;AAAA,MACrB,KAAK,SAAS,OAAO,OAAO,KAAK,MAAM;AAAA,MACvC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,SAAS,CAAC,WAAW;AAAA,IACvB,IAAI,UAAU,SAAS,GAAG;AAAA,MACxB,KAAK,SAAS,OAAO,OAAO,QAAQ,SAAS;AAAA,MAC7C,KAAK,cAAc;AAAA,IACrB;AAAA;AAEJ;AAAA;AAEA,MAAM,6BAA6B,WAAW;AAAA,EAC5C,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,qBAAqB;AAAA,EACrB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,IAChB,IAAI,KAAK,WAAW,GAAG,GAAG,GAAG,CAAC;AAAA,IAC9B,IAAI,KAAK,WAAW,GAAG,GAAG,GAAG,CAAC;AAAA,IAC9B,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,UAAU;AAAA,EACZ;AAAA,EACA,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,KAAK,OAAO;AAAA,IAClB,KAAK,aAAa,WAAW,QAAQ,MAAM,KAAK,gBAAgB,EAAE;AAAA,IAClE,KAAK,aAAa,WAAW,QAAQ,MAAM,KAAK,gBAAgB,EAAE;AAAA,IAClE,KAAK,qBAAqB,QAAQ,cAAc,KAAK,gBAAgB;AAAA,IACrE,KAAK,eAAe,QAAQ,cAAc,WAAW,QAAQ,WAAW,IAAI,KAAK,gBAAgB;AAAA,IACjG,KAAK,eAAe,QAAQ,cAAc,WAAW,QAAQ,WAAW,IAAI,KAAK,gBAAgB;AAAA,IACjG,KAAK,aAAa,QAAQ,cAAc,KAAK,gBAAgB;AAAA,IAC7D,KAAK,YAAY,QAAQ,YAAY,KAAK,gBAAgB;AAAA,IAC1D,KAAK,gBAAgB,QAAQ,gBAAgB,KAAK,gBAAgB;AAAA,IAClE,KAAK,qBAAqB,QAAQ,oBAAoB,WAAW,QAAQ,iBAAiB,IAAI,KAAK,gBAAgB;AAAA,IACnH,KAAK,YAAY,QAAQ,YAAY,KAAK,gBAAgB;AAAA,IAC1D,KAAK,aAAa,WAAW,OAAO,KAAK,KAAK,WAAW;AAAA,IACzD,KAAK,iBAAiB,eAAe,OAAO,KAAK,UAAU;AAAA,IAC3D,MAAM,QAAQ,YAAY,OAAO;AAAA,IACjC,KAAK,WAAW,eAAe,KAAK;AAAA,IACpC,KAAK,eAAe,YAAY,KAAK,SAAS;AAAA,IAC9C,KAAK,iBAAiB;AAAA,IACtB,KAAK,WAAW,aAAa,KAAK,UAAU;AAAA,IAC5C,KAAK,WAAW,aAAa,KAAK,UAAU;AAAA,IAC5C,KAAK,WAAW,qBAAqB,KAAK,kBAAkB;AAAA,IAC5D,IAAI,KAAK,kBAAkB,WAAW;AAAA,MACpC,KAAK,eAAe,gBAAgB,KAAK,aAAa;AAAA,IACxD;AAAA,IACA,IAAI,KAAK,uBAAuB,WAAW;AAAA,MACzC,KAAK,eAAe,qBAAqB,KAAK,kBAAkB;AAAA,IAClE;AAAA,IACA,IAAI,KAAK,cAAc,UAAU,KAAK,QAAQ,GAAG;AAAA,MAC/C,KAAK,eAAe,aAAa,KAAK,KAAK;AAAA,IAC7C;AAAA,IACA,IAAI,KAAK,QAAQ,KAAK,KAAK,SAAS,GAAG;AAAA,MACrC,KAAK,eAAe,YAAY,KAAK,UAAU,KAAK,UAAU,KAAK,OAAO,KAAK,MAAM;AAAA,IACvF;AAAA,IACA,KAAK,eAAe,YAAY,KAAK,SAAS;AAAA,IAC9C,KAAK,eAAe;AAAA;AAAA,EAEtB,YAAY,CAAC,OAAO;AAAA,IAClB,IAAI,MAAM,SAAS,UAAU;AAAA,MAC3B,KAAK,aAAa,KAAK;AAAA,IACzB;AAAA;AAAA,EAEF,YAAY,CAAC,OAAO;AAAA,IAClB,IAAI,CAAC,MAAM;AAAA,MACT;AAAA,IACF,QAAQ,WAAW,UAAU,MAAM;AAAA,IACnC,IAAI,cAAc,MAAM;AAAA,MACtB,KAAK,WAAW;AAAA,IAClB,EAAO,SAAI,cAAc,QAAQ;AAAA,MAC/B,KAAK,WAAW;AAAA,IAClB;AAAA,IACA,IAAI,KAAK,cAAc,QAAQ;AAAA,MAC7B,IAAI,cAAc,QAAQ;AAAA,QACxB,KAAK,WAAW;AAAA,MAClB,EAAO,SAAI,cAAc,SAAS;AAAA,QAChC,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAAA;AAAA,MAEE,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK,eAAe;AAAA;AAAA,MAEzB,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,WAAW,aAAa;AAAA;AAAA,MAElC,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK,eAAe,oBAAoB;AAAA;AAAA,MAE7C,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,OAAO,CAAC,OAAO;AAAA,IACjB,MAAM,aAAa,KAAK,IAAI,GAAG,KAAK,eAAe,KAAK,MAAM;AAAA,IAC9D,MAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,UAAU,CAAC;AAAA,IACvD,IAAI,KAAK,aAAa,SAAS;AAAA,MAC7B,KAAK,WAAW;AAAA,MAChB,KAAK,qBAAqB;AAAA,MAC1B,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,OAAO,CAAC,OAAO;AAAA,IACjB,MAAM,aAAa,KAAK,IAAI,GAAG,KAAK,cAAc,KAAK,KAAK;AAAA,IAC5D,MAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,UAAU,CAAC;AAAA,IACvD,IAAI,KAAK,aAAa,SAAS;AAAA,MAC7B,KAAK,WAAW;AAAA,MAChB,KAAK,qBAAqB;AAAA,MAC1B,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK,SAAS;AAAA;AAAA,MAEnB,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK,SAAS,WAAW;AAAA;AAAA,MAE9B,UAAU,GAAG;AAAA,IACf,OAAO,KAAK,IAAI,GAAG,KAAK,eAAe,KAAK,MAAM;AAAA;AAAA,MAEhD,UAAU,GAAG;AAAA,IACf,OAAO,KAAK,IAAI,GAAG,KAAK,cAAc,KAAK,KAAK;AAAA;AAAA,EAElD,oBAAoB,GAAG;AAAA,IACrB,IAAI,KAAK,QAAQ,KAAK,KAAK,SAAS,GAAG;AAAA,MACrC,KAAK,eAAe,YAAY,KAAK,UAAU,KAAK,UAAU,KAAK,OAAO,KAAK,MAAM;AAAA,IACvF;AAAA;AAAA,MAEE,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,WAAW,aAAa;AAAA;AAAA,MAElC,UAAU,GAAG;AAAA,IACf,OAAO,KAAK,WAAW;AAAA;AAAA,MAErB,EAAE,GAAG;AAAA,IACP,OAAO,KAAK;AAAA;AAAA,MAEV,EAAE,CAAC,OAAO;AAAA,IACZ,MAAM,WAAW,WAAW,SAAS,KAAK,gBAAgB,EAAE;AAAA,IAC5D,IAAI,KAAK,eAAe,UAAU;AAAA,MAChC,KAAK,aAAa;AAAA,MAClB,KAAK,WAAW,aAAa,KAAK,UAAU;AAAA,MAC5C,KAAK,YAAY,QAAQ;AAAA,MACzB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,OAAO;AAAA,IACrB,MAAM,WAAW,QAAQ,WAAW,KAAK,IAAI,KAAK,gBAAgB;AAAA,IAClE,IAAI,KAAK,iBAAiB,UAAU;AAAA,MAClC,KAAK,eAAe;AAAA,MACpB,IAAI,KAAK,oBAAoB;AAAA,QAC3B,KAAK,qBAAqB,KAAK,kBAAkB;AAAA,MACnD;AAAA,MACA,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,OAAO;AAAA,IACrB,MAAM,WAAW,QAAQ,WAAW,KAAK,IAAI,KAAK,gBAAgB;AAAA,IAClE,IAAI,KAAK,iBAAiB,UAAU;AAAA,MAClC,KAAK,eAAe;AAAA,MACpB,IAAI,KAAK,oBAAoB;AAAA,QAC3B,KAAK,qBAAqB,KAAK,kBAAkB;AAAA,MACnD;AAAA,MACA,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,EAAE,GAAG;AAAA,IACP,OAAO,KAAK;AAAA;AAAA,MAEV,EAAE,CAAC,OAAO;AAAA,IACZ,MAAM,WAAW,WAAW,SAAS,KAAK,gBAAgB,EAAE;AAAA,IAC5D,IAAI,KAAK,eAAe,UAAU;AAAA,MAChC,KAAK,aAAa;AAAA,MAClB,KAAK,WAAW,aAAa,KAAK,UAAU;AAAA,MAC5C,KAAK,YAAY,QAAQ;AAAA,MACzB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,UAAU,GAAG;AAAA,IACf,OAAO,KAAK;AAAA;AAAA,MAEV,UAAU,CAAC,OAAO;AAAA,IACpB,IAAI,KAAK,uBAAuB,OAAO;AAAA,MACrC,KAAK,qBAAqB;AAAA,MAC1B,KAAK,WAAW,qBAAqB,KAAK,kBAAkB;AAAA,MAC5D,KAAK,oBAAoB,KAAK;AAAA,MAC9B,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,QAAQ,CAAC,OAAO;AAAA,IAClB,IAAI,KAAK,cAAc,OAAO;AAAA,MAC5B,KAAK,YAAY;AAAA,MACjB,KAAK,eAAe,YAAY,KAAK,SAAS;AAAA,MAC9C,IAAI,UAAU,UAAU,KAAK,QAAQ,GAAG;AAAA,QACtC,KAAK,eAAe,aAAa,KAAK,KAAK;AAAA,MAC7C;AAAA,MACA,KAAK,SAAS,UAAU;AAAA,MACxB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,MAEV,YAAY,CAAC,OAAO;AAAA,IACtB,IAAI,KAAK,kBAAkB,OAAO;AAAA,MAChC,KAAK,gBAAgB;AAAA,MACrB,IAAI,UAAU,WAAW;AAAA,QACvB,KAAK,eAAe,gBAAgB,KAAK;AAAA,MAC3C;AAAA,MACA,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,iBAAiB,GAAG;AAAA,IACtB,OAAO,KAAK;AAAA;AAAA,MAEV,iBAAiB,CAAC,OAAO;AAAA,IAC3B,MAAM,WAAW,QAAQ,WAAW,KAAK,IAAI;AAAA,IAC7C,IAAI,KAAK,uBAAuB,UAAU;AAAA,MACxC,KAAK,qBAAqB;AAAA,MAC1B,IAAI,aAAa,WAAW;AAAA,QAC1B,KAAK,eAAe,qBAAqB,QAAQ;AAAA,MACnD;AAAA,MACA,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,QAAQ,CAAC,OAAO;AAAA,IAClB,IAAI,KAAK,cAAc,OAAO;AAAA,MAC5B,KAAK,YAAY;AAAA,MACjB,KAAK,eAAe,YAAY,KAAK;AAAA,MACrC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,EAEF,QAAQ,CAAC,OAAO,QAAQ;AAAA,IACtB,KAAK,eAAe,YAAY,KAAK,UAAU,KAAK,UAAU,OAAO,MAAM;AAAA,IAC3E,KAAK,SAAS,UAAU;AAAA,IACxB,KAAK,cAAc;AAAA,IACnB,KAAK,KAAK,kBAAkB;AAAA;AAAA,EAE9B,qBAAqB,GAAG;AAAA,IACtB,IAAI,KAAK,oBAAoB;AAAA,MAC3B,OAAO,KAAK,qBAAqB,KAAK,kBAAkB;AAAA,IAC1D;AAAA,IACA,OAAO;AAAA;AAAA,EAET,oBAAoB,CAAC,gBAAgB;AAAA,IACnC,IAAI,CAAC,gBAAgB,UAAU;AAAA,MAC7B,KAAK,eAAe,oBAAoB;AAAA,MACxC,OAAO;AAAA,IACT;AAAA,IACA,OAAO,KAAK,eAAe,kBAAkB,eAAe,SAAS,eAAe,SAAS,eAAe,QAAQ,eAAe,QAAQ,KAAK,cAAc,KAAK,YAAY;AAAA;AAAA,EAEjL,cAAc,GAAG;AAAA,IACf,IAAI,KAAK,oBAAoB;AAAA,MAC3B,KAAK,qBAAqB,KAAK,kBAAkB;AAAA,IACnD;AAAA,IACA,KAAK,SAAS,UAAU;AAAA,IACxB,KAAK,cAAc;AAAA,IACnB,KAAK,KAAK,kBAAkB;AAAA;AAAA,EAE9B,gBAAgB,GAAG;AAAA,IACjB,MAAM,cAAc,CAAC,OAAO,WAAW,QAAQ,eAAe;AAAA,MAC5D,IAAI;AAAA,MACJ,IAAI,cAAc,YAAY,aAAa,MAAM,KAAK,GAAG;AAAA,QACvD,iBAAiB;AAAA,MACnB,EAAO;AAAA,QACL,iBAAiB;AAAA;AAAA,MAEnB,MAAM,kBAAkB,MAAM,MAAM,IAAI,IAAI;AAAA,MAC5C,MAAM,gBAAgB,KAAK,eAAe,qBAAqB,KAAK,MAAM,cAAc,GAAG,KAAK,MAAM,eAAe,CAAC;AAAA,MACtH,MAAM,gBAAgB,gBAAgB,KAAK,IAAI,GAAG,cAAc,QAAQ,IAAI;AAAA,MAC5E,MAAM,iBAAiB,gBAAgB,KAAK,IAAI,GAAG,cAAc,SAAS,IAAI;AAAA,MAC9E,IAAI,cAAc,YAAY,UAAU,KAAK,kBAAkB,YAAY;AAAA,QACzE,OAAO;AAAA,UACL,OAAO,KAAK,IAAI,gBAAgB,aAAa;AAAA,UAC7C,QAAQ,KAAK,IAAI,iBAAiB,cAAc;AAAA,QAClD;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,MACV;AAAA;AAAA,IAEF,KAAK,SAAS,eAAe,WAAW;AAAA;AAAA,EAE1C,oBAAoB,CAAC,GAAG,GAAG;AAAA,IACzB,IAAI,CAAC,KAAK;AAAA,MACR,OAAO;AAAA,IACT,MAAM,SAAS,IAAI,KAAK;AAAA,IACxB,MAAM,SAAS,IAAI,KAAK;AAAA,IACxB,OAAO,UAAU,KAAK,SAAS,KAAK,SAAS,UAAU,KAAK,SAAS,KAAK;AAAA;AAAA,EAE5E,kBAAkB,CAAC,WAAW;AAAA,IAC5B,MAAM,iBAAiB,8BAA8B,WAAW,KAAK,GAAG,KAAK,CAAC;AAAA,IAC9E,KAAK,qBAAqB;AAAA,IAC1B,IAAI;AAAA,IACJ,IAAI,CAAC,gBAAgB,UAAU;AAAA,MAC7B,KAAK,eAAe,oBAAoB;AAAA,MACxC,UAAU;AAAA,IACZ,EAAO,SAAI,WAAW,SAAS;AAAA,MAC7B,UAAU,KAAK,eAAe,kBAAkB,eAAe,SAAS,eAAe,SAAS,eAAe,QAAQ,eAAe,QAAQ,KAAK,cAAc,KAAK,YAAY;AAAA,IACpL,EAAO;AAAA,MACL,UAAU,KAAK,eAAe,qBAAqB,eAAe,SAAS,eAAe,SAAS,eAAe,QAAQ,eAAe,QAAQ,KAAK,cAAc,KAAK,YAAY;AAAA;AAAA,IAEvL,IAAI,SAAS;AAAA,MACX,KAAK,cAAc;AAAA,IACrB;AAAA,IACA,OAAO,KAAK,aAAa;AAAA;AAAA,EAE3B,eAAe,GAAG;AAAA,IAChB,OAAO,KAAK,eAAe,gBAAgB;AAAA;AAAA,EAE7C,YAAY,GAAG;AAAA,IACb,OAAO,KAAK,eAAe,aAAa;AAAA;AAAA,EAE1C,YAAY,GAAG;AAAA,IACb,OAAO,KAAK,eAAe,aAAa;AAAA;AAAA,EAE1C,MAAM,CAAC,QAAQ,WAAW;AAAA,IACxB,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,KAAK,UAAU;AAAA,IACf,KAAK,KAAK,aAAa,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK,QAAQ,KAAK,GAAG;AAAA,IACxE,KAAK,WAAW,MAAM;AAAA,IACtB,IAAI,KAAK,YAAY,KAAK,aAAa;AAAA,MACrC,OAAO,gBAAgB,KAAK,GAAG,KAAK,GAAG,KAAK,WAAW;AAAA,IACzD;AAAA;AAAA,EAEF,UAAU,CAAC,QAAQ;AAAA,IACjB,IAAI,KAAK,WAAW,KAAK;AAAA,MACvB,OAAO,eAAe,KAAK,gBAAgB,KAAK,GAAG,KAAK,CAAC;AAAA,IAC3D;AAAA;AAAA,EAEF,OAAO,GAAG;AAAA,IACR,KAAK,eAAe,QAAQ;AAAA,IAC5B,KAAK,WAAW,QAAQ;AAAA,IACxB,MAAM,QAAQ;AAAA;AAAA,EAEhB,WAAW,CAAC,UAAU;AAAA,EACtB,WAAW,CAAC,UAAU;AAAA,EACtB,mBAAmB,CAAC,eAAe;AACrC;AAAA;AAGA,MAAM,uBAAuB,qBAAqB;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB;AAAA,EACA,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB;AAAA,EACA;AAAA,EACA,0BAA0B;AAAA,EAC1B;AAAA,EACA,qBAAqB;AAAA,EACrB,kBAAkB,CAAC;AAAA,EACnB;AAAA,EACA,yBAAyB;AAAA,IACvB,SAAS;AAAA,IACT,SAAS;AAAA,IACT,kBAAkB;AAAA,IAClB,WAAW;AAAA,EACb;AAAA,EACA,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,KAAK,OAAO;AAAA,IAClB,KAAK,WAAW,QAAQ,WAAW,KAAK,uBAAuB;AAAA,IAC/D,KAAK,YAAY,QAAQ;AAAA,IACzB,KAAK,eAAe,QAAQ;AAAA,IAC5B,KAAK,oBAAoB,QAAQ,oBAAoB,oBAAoB;AAAA,IACzE,KAAK,WAAW,QAAQ,WAAW,KAAK,uBAAuB;AAAA,IAC/D,KAAK,oBAAoB,QAAQ,oBAAoB,KAAK,uBAAuB;AAAA,IACjF,KAAK,aAAa,QAAQ,aAAa,KAAK,uBAAuB;AAAA,IACnE,KAAK,eAAe,QAAQ;AAAA,IAC5B,IAAI,KAAK,SAAS,SAAS,GAAG;AAAA,MAC5B,KAAK,WAAW,QAAQ,KAAK,QAAQ;AAAA,MACrC,KAAK,eAAe;AAAA,MACpB,KAAK,0BAA0B,KAAK,qBAAqB,CAAC,KAAK;AAAA,IACjE;AAAA,IACA,KAAK,mBAAmB,KAAK,SAAS,SAAS;AAAA;AAAA,MAE7C,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,OAAO,CAAC,OAAO;AAAA,IACjB,IAAI,KAAK,aAAa,OAAO;AAAA,MAC3B,KAAK,WAAW;AAAA,MAChB,KAAK,mBAAmB;AAAA,MACxB,KAAK;AAAA,MACL,IAAI,KAAK,cAAc,CAAC,KAAK,qBAAqB,KAAK,WAAW;AAAA,QAChE;AAAA,MACF;AAAA,MACA,KAAK,WAAW,QAAQ,KAAK;AAAA,MAC7B,KAAK,eAAe;AAAA,IACtB;AAAA;AAAA,MAEE,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,QAAQ,CAAC,OAAO;AAAA,IAClB,IAAI,KAAK,cAAc,OAAO;AAAA,MAC5B,KAAK,YAAY;AAAA,MACjB,KAAK,mBAAmB;AAAA,IAC1B;AAAA;AAAA,MAEE,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,OAAO;AAAA,IACrB,IAAI,KAAK,iBAAiB,OAAO;AAAA,MAC/B,KAAK,eAAe;AAAA,MACpB,KAAK,mBAAmB;AAAA,IAC1B;AAAA;AAAA,MAEE,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,OAAO,CAAC,OAAO;AAAA,IACjB,IAAI,KAAK,aAAa,OAAO;AAAA,MAC3B,KAAK,WAAW;AAAA,MAChB,KAAK,mBAAmB;AAAA,IAC1B;AAAA;AAAA,MAEE,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK;AAAA;AAAA,MAEV,gBAAgB,CAAC,OAAO;AAAA,IAC1B,IAAI,KAAK,sBAAsB,OAAO;AAAA,MACpC,KAAK,oBAAoB;AAAA,MACzB,KAAK,mBAAmB;AAAA,IAC1B;AAAA;AAAA,MAEE,SAAS,GAAG;AAAA,IACd,OAAO,KAAK;AAAA;AAAA,MAEV,SAAS,CAAC,OAAO;AAAA,IACnB,IAAI,KAAK,eAAe,OAAO;AAAA,MAC7B,KAAK,aAAa;AAAA,MAClB,KAAK,qBAAqB;AAAA,MAC1B,KAAK,kBAAkB,CAAC;AAAA,MACxB,KAAK,mBAAmB;AAAA,IAC1B;AAAA;AAAA,MAEE,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK;AAAA;AAAA,MAEV,gBAAgB,CAAC,OAAO;AAAA,IAC1B,IAAI,KAAK,sBAAsB,OAAO;AAAA,MACpC,KAAK,oBAAoB;AAAA,MACzB,KAAK,mBAAmB;AAAA,IAC1B;AAAA;AAAA,MAEE,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,OAAO;AAAA,IACrB,IAAI,KAAK,iBAAiB,OAAO;AAAA,MAC/B,KAAK,eAAe;AAAA,MACpB,KAAK,mBAAmB;AAAA,IAC1B;AAAA;AAAA,MAEE,cAAc,GAAG;AAAA,IACnB,OAAO,KAAK;AAAA;AAAA,EAEd,gCAAgC,GAAG;AAAA,IACjC,IAAI,KAAK;AAAA,MACP;AAAA,IACF,MAAM,UAAU,KAAK;AAAA,IACrB,IAAI,CAAC,KAAK,WAAW;AAAA,MACnB,KAAK,0BAA0B;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,MAAM,mBAAmB,KAAK,cAAc,CAAC,KAAK;AAAA,IAClD,MAAM,wBAAwB,KAAK,aAAa,oBAAoB,KAAK,oBAAoB,KAAK;AAAA,IAClG,IAAI,KAAK,cAAc,CAAC,kBAAkB;AAAA,MACxC,KAAK,0BAA0B;AAAA,IACjC,EAAO,SAAI,uBAAuB;AAAA,MAChC,KAAK,WAAW,QAAQ,OAAO;AAAA,MAC/B,KAAK,0BAA0B;AAAA,IACjC,EAAO;AAAA,MACL,KAAK,0BAA0B;AAAA;AAAA;AAAA,OAG7B,eAAc,GAAG;AAAA,IACrB,MAAM,UAAU,KAAK;AAAA,IACrB,MAAM,WAAW,KAAK;AAAA,IACtB,MAAM,aAAa,EAAE,KAAK;AAAA,IAC1B,IAAI,CAAC;AAAA,MACH;AAAA,IACF,MAAM,mBAAmB,KAAK,cAAc,CAAC,KAAK;AAAA,IAClD,IAAI,kBAAkB;AAAA,MACpB,KAAK,qBAAqB;AAAA,IAC5B;AAAA,IACA,KAAK,kBAAkB;AAAA,IACvB,IAAI;AAAA,MACF,MAAM,SAAS,MAAM,KAAK,kBAAkB,cAAc,SAAS,QAAQ;AAAA,MAC3E,IAAI,eAAe,KAAK,sBAAsB;AAAA,QAC5C;AAAA,MACF;AAAA,MACA,IAAI,KAAK;AAAA,QACP;AAAA,MACF,IAAI,aAAa,OAAO,cAAc,CAAC;AAAA,MACvC,IAAI,KAAK,gBAAgB,WAAW,UAAU,GAAG;AAAA,QAC/C,MAAM,UAAU;AAAA,UACd;AAAA,UACA;AAAA,UACA,aAAa,KAAK;AAAA,QACpB;AAAA,QACA,MAAM,WAAW,MAAM,KAAK,aAAa,YAAY,OAAO;AAAA,QAC5D,IAAI,aAAa,WAAW;AAAA,UAC1B,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,IAAI,eAAe,KAAK,sBAAsB;AAAA,QAC5C;AAAA,MACF;AAAA,MACA,IAAI,KAAK;AAAA,QACP;AAAA,MACF,IAAI,WAAW,SAAS,GAAG;AAAA,QACzB,IAAI,KAAK,YAAY;AAAA,UACnB,KAAK,kBAAkB;AAAA,QACzB;AAAA,QACA,MAAM,SAAS,uBAAuB,SAAS,YAAY,KAAK,cAAc;AAAA,UAC5E,SAAS,KAAK;AAAA,QAChB,CAAC;AAAA,QACD,MAAM,aAAa,IAAI,WAAW,MAAM;AAAA,QACxC,KAAK,WAAW,cAAc,UAAU;AAAA,MAC1C,EAAO;AAAA,QACL,KAAK,WAAW,QAAQ,OAAO;AAAA;AAAA,MAEjC,KAAK,0BAA0B;AAAA,MAC/B,KAAK,kBAAkB;AAAA,MACvB,KAAK,mBAAmB;AAAA,MACxB,KAAK,eAAe;AAAA,MACpB,KAAK,cAAc;AAAA,MACnB,OAAO,OAAO;AAAA,MACd,IAAI,eAAe,KAAK,sBAAsB;AAAA,QAC5C;AAAA,MACF;AAAA,MACA,QAAQ,KAAK,yDAAyD,KAAK;AAAA,MAC3E,IAAI,KAAK;AAAA,QACP;AAAA,MACF,KAAK,WAAW,QAAQ,OAAO;AAAA,MAC/B,KAAK,0BAA0B;AAAA,MAC/B,KAAK,kBAAkB;AAAA,MACvB,KAAK,mBAAmB;AAAA,MACxB,KAAK,eAAe;AAAA,MACpB,KAAK,cAAc;AAAA;AAAA;AAAA,EAGvB,iBAAiB,CAAC,SAAS;AAAA,IACzB,OAAO,KAAK,WAAW,kBAAkB,OAAO;AAAA;AAAA,EAElD,UAAU,CAAC,QAAQ;AAAA,IACjB,IAAI,KAAK,kBAAkB;AAAA,MACzB,IAAI,KAAK;AAAA,QACP;AAAA,MACF,IAAI,KAAK,SAAS,WAAW,GAAG;AAAA,QAC9B,KAAK,0BAA0B;AAAA,QAC/B,KAAK,mBAAmB;AAAA,MAC1B,EAAO,SAAI,CAAC,KAAK,WAAW;AAAA,QAC1B,KAAK,0BAA0B;AAAA,QAC/B,KAAK,mBAAmB;AAAA,MAC1B,EAAO;AAAA,QACL,KAAK,iCAAiC;AAAA,QACtC,KAAK,mBAAmB;AAAA,QACxB,KAAK,eAAe;AAAA;AAAA,IAExB;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,MAAM,WAAW,MAAM;AAAA;AAE3B;AAEA,IAAI,4BAA4B,OAAO,IAAI,kCAAkC;AAC7E,SAAS,oBAAoB,CAAC,KAAK;AAAA,EACjC,OAAO,CAAC,CAAC,MAAM;AAAA;AAEjB,SAAS,qBAAqB,CAAC,YAAY;AAAA,EACzC,OAAO,WAAW,OAAO,IAAI,CAAC,UAAU;AAAA,IACtC,MAAM,OAAO,IAAI,mBAAmB;AAAA,MAClC,IAAI,MAAM;AAAA,MACV,IAAI,MAAM;AAAA,MACV,YAAY,MAAM;AAAA,MAClB,MAAM,MAAM;AAAA,IACd,CAAC;AAAA,IACD,KAAK,IAAI,MAAM,IAAI;AAAA,IACnB,OAAO;AAAA,GACR;AAAA;AAAA;AAGH,MAAM,2BAA2B,eAAe;AAAA,GAC7C,6BAA6B;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,CAAC;AAAA,EACb,SAAS;AAAA,EACT,WAAW,CAAC,SAAS;AAAA,IACnB,MAAM,OAAO;AAAA,IACb,KAAK,MAAM,QAAQ,KAAK,WAAW,QAAQ,EAAE,IAAI;AAAA,IACjD,KAAK,MAAM,QAAQ,KAAK,WAAW,QAAQ,EAAE,IAAI;AAAA,IACjD,KAAK,cAAc,QAAQ,cAAc;AAAA,IACzC,KAAK,QAAQ,QAAQ;AAAA;AAAA,MAEnB,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,QAAQ,CAAC,UAAU;AAAA,IACrB,KAAK,YAAY;AAAA,IACjB,KAAK,cAAc;AAAA;AAAA,EAErB,aAAa,GAAG;AAAA,IACd,KAAK,UAAU;AAAA,IACf,KAAK,QAAQ,cAAc;AAAA;AAAA,EAE7B,GAAG,CAAC,KAAK,OAAO;AAAA,IACd,IAAI,OAAO,QAAQ,UAAU;AAAA,MAC3B,IAAI,UAAU,WAAW;AAAA,QACvB,KAAK,UAAU,OAAO,OAAO,GAAG,GAAG;AAAA,QACnC,KAAK,cAAc;AAAA,QACnB,OAAO;AAAA,MACT;AAAA,MACA,MAAM,cAAc,KAAK,UAAU;AAAA,MACnC,KAAK,UAAU,KAAK,GAAG;AAAA,MACvB,KAAK,cAAc;AAAA,MACnB,OAAO;AAAA,IACT;AAAA,IACA,IAAI,qBAAqB,GAAG,GAAG;AAAA,MAC7B,IAAI,UAAU,WAAW;AAAA,QACvB,KAAK,UAAU,OAAO,OAAO,GAAG,GAAG;AAAA,QACnC,IAAI,SAAS;AAAA,QACb,KAAK,cAAc;AAAA,QACnB,OAAO;AAAA,MACT;AAAA,MACA,MAAM,cAAc,KAAK,UAAU;AAAA,MACnC,KAAK,UAAU,KAAK,GAAG;AAAA,MACvB,IAAI,SAAS;AAAA,MACb,KAAK,cAAc;AAAA,MACnB,OAAO;AAAA,IACT;AAAA,IACA,IAAI,aAAa,GAAG,GAAG;AAAA,MACrB,MAAM,YAAY,sBAAsB,GAAG;AAAA,MAC3C,IAAI,UAAU,WAAW;AAAA,QACvB,KAAK,UAAU,OAAO,OAAO,GAAG,GAAG,SAAS;AAAA,QAC5C,UAAU,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI;AAAA,QAC9C,KAAK,cAAc;AAAA,QACnB,OAAO;AAAA,MACT;AAAA,MACA,MAAM,cAAc,KAAK,UAAU;AAAA,MACnC,KAAK,UAAU,KAAK,GAAG,SAAS;AAAA,MAChC,UAAU,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI;AAAA,MAC9C,KAAK,cAAc;AAAA,MACnB,OAAO;AAAA,IACT;AAAA,IACA,MAAM,IAAI,MAAM,gGAAgG;AAAA;AAAA,EAElH,OAAO,CAAC,KAAK,OAAO;AAAA,IAClB,KAAK,UAAU,SAAS;AAAA,IACxB,IAAI,OAAO,QAAQ,UAAU;AAAA,MAC3B,IAAI,SAAS;AAAA,IACf;AAAA,IACA,KAAK,cAAc;AAAA;AAAA,EAErB,YAAY,CAAC,OAAO,YAAY;AAAA,IAC9B,IAAI,CAAC,cAAc,CAAC,qBAAqB,UAAU,GAAG;AAAA,MACpD,MAAM,IAAI,MAAM,qCAAqC;AAAA,IACvD;AAAA,IACA,MAAM,cAAc,KAAK,UAAU,QAAQ,UAAU;AAAA,IACrD,IAAI,gBAAgB,IAAI;AAAA,MACtB,MAAM,IAAI,MAAM,mCAAmC;AAAA,IACrD;AAAA,IACA,IAAI,OAAO,UAAU,UAAU;AAAA,MAC7B,KAAK,UAAU,OAAO,aAAa,GAAG,KAAK;AAAA,IAC7C,EAAO,SAAI,qBAAqB,KAAK,GAAG;AAAA,MACtC,KAAK,UAAU,OAAO,aAAa,GAAG,KAAK;AAAA,MAC3C,MAAM,SAAS;AAAA,IACjB,EAAO,SAAI,iBAAiB,YAAY;AAAA,MACtC,MAAM,YAAY,sBAAsB,KAAK;AAAA,MAC7C,KAAK,UAAU,OAAO,aAAa,GAAG,GAAG,SAAS;AAAA,MAClD,UAAU,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI;AAAA,IAChD,EAAO;AAAA,MACL,MAAM,IAAI,MAAM,oEAAoE;AAAA;AAAA,IAEtF,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,MAAM,CAAC,IAAI;AAAA,IACT,MAAM,aAAa,KAAK,mBAAmB,EAAE;AAAA,IAC7C,IAAI,eAAe,IAAI;AAAA,MACrB,MAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AAAA,IACA,MAAM,QAAQ,KAAK,UAAU;AAAA,IAC7B,KAAK,UAAU,OAAO,YAAY,CAAC;AAAA,IACnC,MAAM,SAAS;AAAA,IACf,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,KAAK,GAAG;AAAA,IACN,KAAK,YAAY,CAAC;AAAA,IAClB,KAAK,cAAc;AAAA;AAAA,EAErB,WAAW,CAAC,aAAa;AAAA,IACvB,OAAO;AAAA,MACL,IAAI,KAAK,OAAO,YAAY;AAAA,MAC5B,IAAI,KAAK,OAAO,YAAY;AAAA,MAC5B,YAAY,KAAK,cAAc,YAAY;AAAA,MAC3C,MAAM,KAAK,SAAS,YAAY;AAAA,IAClC;AAAA;AAAA,EAEF,wBAAwB,CAAC,cAAc;AAAA,IACrC,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,YAAY;AAAA,EACd,GAAG;AAAA,IACD,MAAM,eAAe,KAAK,YAAY,WAAW;AAAA,IACjD,MAAM,SAAS,CAAC;AAAA,IAChB,WAAW,SAAS,KAAK,WAAW;AAAA,MAClC,IAAI,OAAO,UAAU,UAAU;AAAA,QAC7B,OAAO,KAAK;AAAA,UACV,WAAW;AAAA,UACX,MAAM;AAAA,UACN,IAAI,aAAa;AAAA,UACjB,IAAI,aAAa;AAAA,UACjB,YAAY,aAAa;AAAA,UACzB,MAAM,aAAa;AAAA,QACrB,CAAC;AAAA,MACH,EAAO;AAAA,QACL,MAAM,cAAc,MAAM,yBAAyB,YAAY;AAAA,QAC/D,OAAO,KAAK,GAAG,WAAW;AAAA;AAAA,IAE9B;AAAA,IACA,KAAK,UAAU;AAAA,IACf,OAAO;AAAA;AAAA,SAEF,UAAU,CAAC,MAAM,UAAU,CAAC,GAAG;AAAA,IACpC,MAAM,OAAO,IAAI,mBAAmB,OAAO;AAAA,IAC3C,KAAK,IAAI,IAAI;AAAA,IACb,OAAO;AAAA;AAAA,SAEF,SAAS,CAAC,OAAO,UAAU,CAAC,GAAG;AAAA,IACpC,MAAM,OAAO,IAAI,mBAAmB,OAAO;AAAA,IAC3C,WAAW,aAAa,OAAO;AAAA,MAC7B,KAAK,IAAI,SAAS;AAAA,IACpB;AAAA,IACA,OAAO;AAAA;AAAA,EAET,QAAQ,CAAC,cAAc;AAAA,IACrB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,YAAY;AAAA,EACd,GAAG;AAAA,IACD,OAAO,KAAK,yBAAyB,WAAW;AAAA;AAAA,EAElD,WAAW,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,OAAO,CAAC,UAAU,OAAO,UAAU,QAAQ;AAAA;AAAA,EAEnE,gBAAgB,GAAG;AAAA,IACjB,OAAO,KAAK,UAAU;AAAA;AAAA,EAExB,aAAa,CAAC,IAAI;AAAA,IAChB,OAAO,KAAK,UAAU,KAAK,CAAC,UAAU,OAAO,UAAU,YAAY,MAAM,OAAO,EAAE;AAAA;AAAA,EAEpF,kBAAkB,CAAC,IAAI;AAAA,IACrB,OAAO,KAAK,UAAU,UAAU,CAAC,UAAU,qBAAqB,KAAK,KAAK,MAAM,OAAO,EAAE;AAAA;AAAA,MAEvF,EAAE,GAAG;AAAA,IACP,OAAO,KAAK;AAAA;AAAA,MAEV,EAAE,CAAC,KAAK;AAAA,IACV,IAAI,CAAC,KAAK;AAAA,MACR,KAAK,MAAM;AAAA,MACX,KAAK,cAAc;AAAA,MACnB;AAAA,IACF;AAAA,IACA,KAAK,MAAM,WAAW,GAAG;AAAA,IACzB,KAAK,cAAc;AAAA;AAAA,MAEjB,EAAE,CAAC,KAAK;AAAA,IACV,IAAI,CAAC,KAAK;AAAA,MACR,KAAK,MAAM;AAAA,MACX,KAAK,cAAc;AAAA,MACnB;AAAA,IACF;AAAA,IACA,KAAK,MAAM,WAAW,GAAG;AAAA,IACzB,KAAK,cAAc;AAAA;AAAA,MAEjB,EAAE,GAAG;AAAA,IACP,OAAO,KAAK;AAAA;AAAA,MAEV,UAAU,CAAC,YAAY;AAAA,IACzB,KAAK,cAAc;AAAA,IACnB,KAAK,cAAc;AAAA;AAAA,MAEjB,UAAU,GAAG;AAAA,IACf,OAAO,KAAK;AAAA;AAAA,MAEV,IAAI,CAAC,OAAO;AAAA,IACd,KAAK,QAAQ;AAAA,IACb,KAAK,cAAc;AAAA;AAAA,MAEjB,IAAI,GAAG;AAAA,IACT,OAAO,KAAK;AAAA;AAAA,EAEd,kBAAkB,CAAC,IAAI;AAAA,IACrB;AAAA;AAEJ;AAAA;AAEA,MAAM,+BAA+B,mBAAmB;AAAA,EACtD;AAAA,EACA;AAAA,EACA,WAAW,CAAC,KAAK,SAAS,YAAY;AAAA,IACpC,MAAM,OAAO;AAAA,IACb,KAAK,MAAM;AAAA,IACX,KAAK,aAAa;AAAA;AAAA,EAEpB,aAAa,GAAG;AAAA,IACd,KAAK,UAAU;AAAA,IACf,KAAK,IAAI,cAAc;AAAA;AAE3B;AAGA,SAAS,OAAO,CAAC,UAAU,UAAU;AAAA,EACnC,OAAO,EAAE,aAAa,SAAS,CAAC,GAAG,GAAG,QAAQ;AAAA;AAEhD,SAAS,GAAG,CAAC,UAAU,UAAU;AAAA,EAC/B,OAAO,EAAE,eAAe,SAAS,CAAC,GAAG,GAAG,QAAQ;AAAA;AAElD,SAAS,IAAI,CAAC,UAAU,UAAU;AAAA,EAChC,OAAO,EAAE,gBAAgB,SAAS,CAAC,GAAG,GAAG,QAAQ;AAAA;AAEnD,SAAS,SAAS,CAAC,UAAU,UAAU;AAAA,EACrC,OAAO,EAAE,qBAAqB,SAAS,CAAC,GAAG,GAAG,QAAQ;AAAA;AAExD,SAAS,KAAK,CAAC,UAAU,UAAU;AAAA,EACjC,OAAO,EAAE,iBAAiB,SAAS,CAAC,GAAG,GAAG,QAAQ;AAAA;AAEpD,SAAS,MAAM,CAAC,UAAU,UAAU;AAAA,EAClC,OAAO,EAAE,kBAAkB,SAAS,CAAC,GAAG,GAAG,QAAQ;AAAA;AAErD,SAAS,SAAS,CAAC,UAAU,UAAU;AAAA,EACrC,OAAO,EAAE,qBAAqB,SAAS,CAAC,GAAG,GAAG,QAAQ;AAAA;AAExD,SAAS,WAAW,CAAC,UAAU,UAAU;AAAA,EACvC,OAAO,EAAE,uBAAuB,OAAO,GAAG,QAAQ;AAAA;AAEpD,SAAS,IAAI,CAAC,UAAU,UAAU;AAAA,EAChC,OAAO,EAAE,gBAAgB,OAAO,GAAG,QAAQ;AAAA;AAE7C,SAAS,SAAS,CAAC,UAAU,UAAU;AAAA,EACrC,OAAO,EAAE,qBAAqB,SAAS,CAAC,GAAG,GAAG,QAAQ;AAAA;AAExD,SAAS,WAAW,CAAC,UAAU,UAAU;AAAA,EACvC,MAAM,cAAc;AAAA,EACpB,MAAM,kBAAkB;AAAA,OACnB;AAAA,IACH,YAAY,aAAa,cAAc;AAAA,EACzC;AAAA,EACA,MAAM,WAAW,IAAI,mBAAmB,eAAe;AAAA,EACvD,WAAW,SAAS,UAAU;AAAA,IAC5B,SAAS,IAAI,KAAK;AAAA,EACpB;AAAA,EACA,OAAO;AAAA;AAET,IAAI,UAAU;AAAA,EACZ,MAAM,IAAI,aAAa,YAAY,EAAE,YAAY,eAAe,KAAK,GAAG,GAAG,QAAQ;AAAA,EACnF,QAAQ,IAAI,aAAa,YAAY,EAAE,YAAY,eAAe,OAAO,GAAG,GAAG,QAAQ;AAAA,EACvF,WAAW,IAAI,aAAa,YAAY,EAAE,YAAY,eAAe,UAAU,GAAG,GAAG,QAAQ;AAAA,EAC7F,KAAK,IAAI,aAAa,YAAY,EAAE,YAAY,eAAe,IAAI,GAAG,GAAG,QAAQ;AAAA,EACjF,OAAO,IAAI,aAAa,YAAY,EAAE,YAAY,eAAe,MAAM,GAAG,GAAG,QAAQ;AAAA,EACrF,SAAS,IAAI,aAAa,YAAY,EAAE,YAAY,eAAe,QAAQ,GAAG,GAAG,QAAQ;AAAA,EACzF,QAAQ,IAAI,aAAa,YAAY,EAAE,YAAY,eAAe,OAAO,GAAG,GAAG,QAAQ;AAAA,EACvF,eAAe,IAAI,aAAa,YAAY,EAAE,YAAY,eAAe,cAAc,GAAG,GAAG,QAAQ;AAAA,EACrG,YAAY,IAAI,aAAa,YAAY,EAAE,YAAY,eAAe,OAAO,eAAe,OAAO,GAAG,GAAG,QAAQ;AAAA,EACjH,eAAe,IAAI,aAAa,YAAY,EAAE,YAAY,eAAe,OAAO,eAAe,UAAU,GAAG,GAAG,QAAQ;AAAA,EACvH,iBAAiB,IAAI,aAAa,YAAY,EAAE,YAAY,eAAe,SAAS,eAAe,UAAU,GAAG,GAAG,QAAQ;AAAA,EAC3H,qBAAqB,IAAI,aAAa,YAAY,EAAE,YAAY,eAAe,OAAO,eAAe,SAAS,eAAe,UAAU,GAAG,GAAG,QAAQ;AAAA,EACrJ,OAAO,CAAC,UAAU,aAAa,YAAY,EAAE,IAAI,MAAM,GAAG,GAAG,QAAQ;AAAA,EACrE,SAAS,CAAC,YAAY,aAAa,YAAY,EAAE,IAAI,QAAQ,GAAG,GAAG,QAAQ;AAAA,EAC3E,IAAI,CAAC,UAAU,aAAa,YAAY,EAAE,IAAI,MAAM,GAAG,GAAG,QAAQ;AAAA,EAClE,IAAI,CAAC,YAAY,aAAa,YAAY,EAAE,IAAI,QAAQ,GAAG,GAAG,QAAQ;AAAA,EACtE,QAAQ,CAAC,aAAa,MAAM,aAAa,YAAY,EAAE,WAAW,GAAG,GAAG,QAAQ;AAClF;AAAA;AAEA,MAAM,oBAAoB,WAAW;AAAA,EACnC;AAAA,EACA,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,KAAK,OAAO;AAAA,IAClB,KAAK,UAAU;AAAA;AAAA,EAEjB,UAAU,CAAC,QAAQ,WAAW;AAAA,IAC5B,IAAI,KAAK,QAAQ,QAAQ;AAAA,MACvB,KAAK,QAAQ,OAAO,KAAK,KAAK,SAAS,QAAQ,WAAW,IAAI;AAAA,IAChE;AAAA;AAEJ;AAAA;AAEA,MAAM,yBAAyB,WAAW;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,WAAW,CAAC,KAAK,QAAQ,SAAS;AAAA,IAChC,MAAM,KAAK;AAAA,MACT,IAAI,QAAQ;AAAA,MACZ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,UAAU,QAAQ;AAAA,IACpB,CAAC;AAAA,IACD,KAAK,SAAS;AAAA,IACd,KAAK,MAAM,QAAQ;AAAA,IACnB,KAAK,MAAM,QAAQ;AAAA,IACnB,KAAK,YAAY,QAAQ;AAAA,IACzB,KAAK,gBAAgB,QAAQ;AAAA,IAC7B,KAAK,oBAAoB,QAAQ;AAAA,IACjC,KAAK,qBAAqB,QAAQ;AAAA,IAClC,KAAK,aAAa,QAAQ;AAAA,IAC1B,KAAK,oBAAoB,QAAQ;AAAA,IACjC,KAAK,mBAAmB,QAAQ;AAAA,IAChC,KAAK,eAAe,QAAQ,eAAe,IAAI;AAAA,IAC/C,KAAK,sBAAsB,KAAK,OAAO;AAAA,IACvC,KAAK,oBAAoB,KAAK,OAAO;AAAA,IACrC,KAAK,oBAAoB;AAAA,IACzB,KAAK,iBAAiB;AAAA,IACtB,KAAK,kBAAkB,MAAM;AAAA,MAC3B,MAAM,mBAAmB,KAAK,OAAO;AAAA,MACrC,IAAI,qBAAqB,KAAK,qBAAqB;AAAA,QACjD,KAAK,sBAAsB;AAAA,QAC3B,KAAK,SAAS,UAAU;AAAA,QACxB,KAAK,cAAc;AAAA,MACrB;AAAA;AAAA;AAAA,EAGJ,gBAAgB,GAAG;AAAA,IACjB,MAAM,cAAc,CAAC,OAAO,WAAW,QAAQ,eAAe;AAAA,MAC5D,MAAM,cAAc,KAAK,eAAe;AAAA,MACxC,MAAM,eAAe,KAAK,OAAO;AAAA,MACjC,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,MACV;AAAA;AAAA,IAEF,KAAK,SAAS,eAAe,WAAW;AAAA;AAAA,EAE1C,SAAS,GAAG;AAAA,IACV,KAAK,SAAS,UAAU;AAAA;AAAA,EAE1B,mBAAmB,CAAC,QAAQ;AAAA,IAC1B,IAAI,KAAK,sBAAsB,QAAQ;AAAA,MACrC,KAAK,oBAAoB;AAAA,MACzB,KAAK,SAAS,UAAU;AAAA,MACxB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,EAEF,kBAAkB,CAAC,iBAAiB;AAAA,IAClC,KAAK,mBAAmB;AAAA,IACxB,KAAK,SAAS,UAAU;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,EAErB,cAAc,CAAC,aAAa;AAAA,IAC1B,KAAK,eAAe;AAAA,IACpB,KAAK,SAAS,UAAU;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,EAErB,mBAAmB,GAAG;AAAA,IACpB,KAAK,kBAAkB;AAAA,IACvB,KAAK,iBAAiB;AAAA,IACtB,WAAW,QAAQ,KAAK,WAAW,OAAO,GAAG;AAAA,MAC3C,IAAI,KAAK,QAAQ;AAAA,QACf,MAAM,QAAQ,IAAI,YAAY,KAAK,MAAM;AAAA,QACzC,KAAK,kBAAkB,KAAK,IAAI,KAAK,iBAAiB,KAAK;AAAA,MAC7D;AAAA,MACA,IAAI,KAAK,OAAO;AAAA,QACd,MAAM,QAAQ,IAAI,YAAY,KAAK,KAAK;AAAA,QACxC,KAAK,iBAAiB,KAAK,IAAI,KAAK,gBAAgB,KAAK;AAAA,MAC3D;AAAA,IACF;AAAA;AAAA,EAEF,cAAc,GAAG;AAAA,IACf,MAAM,aAAa,KAAK,OAAO;AAAA,IAC/B,IAAI,gBAAgB,aAAa,KAAK;AAAA,IACtC,IAAI,KAAK,aAAa,OAAO,GAAG;AAAA,MAC9B,WAAW,iBAAiB,KAAK,aAAa,OAAO,GAAG;AAAA,QACtD,gBAAgB,KAAK,IAAI,eAAe,aAAa;AAAA,MACvD;AAAA,IACF;AAAA,IACA,MAAM,SAAS,gBAAgB,IAAI,KAAK,MAAM,KAAK,MAAM,aAAa,CAAC,IAAI,IAAI;AAAA,IAC/E,MAAM,YAAY,KAAK,IAAI,KAAK,WAAW,SAAS,KAAK,gBAAgB,CAAC;AAAA,IAC1E,OAAO,YAAY,KAAK,kBAAkB,KAAK;AAAA;AAAA,EAEjD,aAAa,CAAC,kBAAkB,mBAAmB;AAAA,IACjD,KAAK,oBAAoB;AAAA,IACzB,KAAK,qBAAqB;AAAA,IAC1B,KAAK,cAAc;AAAA;AAAA,EAErB,aAAa,GAAG;AAAA,IACd,OAAO;AAAA,MACL,QAAQ,KAAK;AAAA,MACb,SAAS,KAAK;AAAA,IAChB;AAAA;AAAA,EAEF,YAAY,CAAC,WAAW;AAAA,IACtB,MAAM,eAAe,KAAK;AAAA,IAC1B,MAAM,cAAc,KAAK;AAAA,IACzB,KAAK,aAAa;AAAA,IAClB,KAAK,oBAAoB;AAAA,IACzB,IAAI,KAAK,oBAAoB,gBAAgB,KAAK,mBAAmB,aAAa;AAAA,MAChF,KAAK,SAAS,UAAU;AAAA,IAC1B;AAAA,IACA,KAAK,cAAc;AAAA;AAAA,EAErB,YAAY,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,EAEd,UAAU,CAAC,QAAQ;AAAA,IACjB,MAAM,iBAAiB,KAAK,OAAO;AAAA,IACnC,MAAM,gBAAgB,mBAAmB,KAAK;AAAA,IAC9C,IAAI,KAAK,YAAY,CAAC,KAAK,WAAW,CAAC,eAAe;AAAA,MACpD;AAAA,IACF;AAAA,IACA,KAAK,oBAAoB;AAAA,IACzB,KAAK,mBAAmB,MAAM;AAAA;AAAA,EAEhC,kBAAkB,CAAC,QAAQ;AAAA,IACzB,MAAM,SAAS,KAAK,WAAW,IAAI,KAAK;AAAA,IACxC,MAAM,SAAS,KAAK,WAAW,IAAI,KAAK;AAAA,IACxC,IAAI,KAAK,UAAU;AAAA,MACjB,OAAO,MAAM,KAAK,GAAG;AAAA,IACvB,EAAO,SAAI,KAAK,IAAI,IAAI,GAAG;AAAA,MACzB,OAAO,SAAS,QAAQ,QAAQ,KAAK,OAAO,KAAK,QAAQ,KAAK,GAAG;AAAA,IACnE;AAAA,IACA,MAAM,WAAW,KAAK,OAAO;AAAA,IAC7B,IAAI,CAAC,YAAY,CAAC,SAAS;AAAA,MACzB;AAAA,IACF,MAAM,UAAU,SAAS;AAAA,IACzB,IAAI,aAAa;AAAA,IACjB,MAAM,YAAY,KAAK,OAAO;AAAA,IAC9B,IAAI,aAAa,QAAQ;AAAA,MACvB;AAAA,IACF,aAAa,YAAY,IAAI,QAAQ,YAAY,KAAK;AAAA,IACtD,SAAS,IAAI,EAAE,IAAI,KAAK,QAAQ,KAAK;AAAA,MACnC,MAAM,kBAAkB,YAAY;AAAA,MACpC,IAAI,mBAAmB,QAAQ;AAAA,QAC7B;AAAA,MACF,MAAM,cAAc,QAAQ;AAAA,MAC5B,MAAM,SAAS,KAAK,kBAAkB,IAAI,WAAW,KAAK,KAAK;AAAA,MAC/D,IAAI,WAAW,KAAK,KAAK;AAAA,QACvB,OAAO,SAAS,QAAQ,SAAS,GAAG,KAAK,OAAO,GAAG,MAAM;AAAA,MAC3D;AAAA,MACA,IAAI,gBAAgB,YAAY,CAAC,EAAO;AAAA,QACtC,IAAI,WAAW;AAAA,QACf,MAAM,OAAO,KAAK,WAAW,IAAI,WAAW;AAAA,QAC5C,IAAI,MAAM,QAAQ;AAAA,UAChB,MAAM,cAAc,IAAI,YAAY,KAAK,MAAM;AAAA,UAC/C,MAAM,UAAU,KAAK,kBAAkB;AAAA,UACvC,YAAY;AAAA,UACZ,MAAM,cAAc,KAAK,cAAc,WAAW,KAAK,WAAW,IAAI,KAAK;AAAA,UAC3E,OAAO,SAAS,KAAK,QAAQ,UAAU,SAAS,GAAG,aAAa,MAAM;AAAA,UACtE,YAAY;AAAA,QACd,EAAO,SAAI,KAAK,kBAAkB,GAAG;AAAA,UACnC,YAAY,KAAK;AAAA,QACnB;AAAA,QACA,IAAI,CAAC,KAAK,iBAAiB,IAAI,WAAW,GAAG;AAAA,UAC3C,MAAM,gBAAgB,KAAK,aAAa,IAAI,WAAW;AAAA,UACvD,MAAM,UAAU,kBAAkB,YAAY,gBAAgB,cAAc,IAAI,KAAK;AAAA,UACrF,MAAM,aAAa,QAAQ,SAAS;AAAA,UACpC,MAAM,eAAe,WAAW;AAAA,UAChC,MAAM,iBAAiB,KAAK,QAAQ,KAAK,kBAAkB,KAAK,iBAAiB,KAAK;AAAA,UACtF,MAAM,WAAW,SAAS,KAAK,kBAAkB,IAAI,iBAAiB,eAAe;AAAA,UACrF,IAAI,YAAY,SAAS,KAAK,kBAAkB,GAAG;AAAA,YACjD,OAAO,SAAS,YAAY,UAAU,SAAS,GAAG,KAAK,KAAK,MAAM;AAAA,UACpE;AAAA,QACF;AAAA,QACA,IAAI,MAAM,OAAO;AAAA,UACf,MAAM,SAAS,SAAS,KAAK,QAAQ,KAAK,gBAAgB,KAAK;AAAA,UAC/D,MAAM,aAAa,KAAK,aAAa,WAAW,KAAK,UAAU,IAAI,KAAK;AAAA,UACxE,OAAO,SAAS,KAAK,OAAO,QAAQ,SAAS,GAAG,YAAY,MAAM;AAAA,QACpE;AAAA;AAAA,MAEF,aAAa;AAAA,IACf;AAAA;AAEJ;AACA,SAAS,WAAW,CAAC,OAAO;AAAA,EAC1B,OAAO,KAAK,WAAW,MAAM,IAAI,KAAK,MAAM,IAAI,KAAK,MAAM,IAAI,KAAK,MAAM,CAAC;AAAA;AAAA;AAG7E,MAAM,6BAA6B,WAAW;AAAA,EAC5C,SAAS;AAAA,EACT,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB,uBAAuB,MAAM;AAAA,IAC3B,KAAK,QAAQ,UAAU;AAAA,IACvB,KAAK,cAAc;AAAA;AAAA,EAErB,cAAc,CAAC,MAAM,OAAO;AAAA,IAC1B,IAAI,OAAO,UAAU,YAAY,YAAY,OAAO;AAAA,MAClD,MAAM,SAAS;AAAA,MACf,IAAI,OAAO,QAAQ;AAAA,QACjB,KAAK,kBAAkB,IAAI,MAAM,WAAW,OAAO,MAAM,CAAC;AAAA,MAC5D;AAAA,MACA,IAAI,OAAO,SAAS;AAAA,QAClB,KAAK,mBAAmB,IAAI,MAAM,WAAW,OAAO,OAAO,CAAC;AAAA,MAC9D,EAAO,SAAI,OAAO,QAAQ;AAAA,QACxB,KAAK,mBAAmB,IAAI,MAAM,YAAY,WAAW,OAAO,MAAM,CAAC,CAAC;AAAA,MAC1E;AAAA,IACF,EAAO;AAAA,MACL,MAAM,cAAc,WAAW,KAAK;AAAA,MACpC,KAAK,kBAAkB,IAAI,MAAM,WAAW;AAAA,MAC5C,KAAK,mBAAmB,IAAI,MAAM,YAAY,WAAW,CAAC;AAAA;AAAA;AAAA,EAG9D,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,KAAK;AAAA,SACN;AAAA,MACH,eAAe;AAAA,MACf,QAAQ;AAAA,IACV,CAAC;AAAA,IACD,KAAK,MAAM,WAAW,QAAQ,MAAM,SAAS;AAAA,IAC7C,KAAK,MAAM,WAAW,QAAQ,MAAM,aAAa;AAAA,IACjD,KAAK,YAAY,QAAQ,YAAY;AAAA,IACrC,KAAK,gBAAgB,QAAQ,gBAAgB;AAAA,IAC7C,KAAK,oBAAoB,QAAQ,oBAAoB;AAAA,IACrD,KAAK,mBAAmB,QAAQ,mBAAmB,IAAI;AAAA,IACvD,KAAK,eAAe,QAAQ,eAAe,IAAI;AAAA,IAC/C,KAAK,oBAAoB,IAAI;AAAA,IAC7B,KAAK,qBAAqB,IAAI;AAAA,IAC9B,IAAI,QAAQ,YAAY;AAAA,MACtB,YAAY,MAAM,UAAU,QAAQ,YAAY;AAAA,QAC9C,KAAK,eAAe,MAAM,KAAK;AAAA,MACjC;AAAA,IACF;AAAA,IACA,KAAK,aAAa,IAAI;AAAA,IACtB,IAAI,QAAQ,WAAW;AAAA,MACrB,YAAY,MAAM,SAAS,QAAQ,WAAW;AAAA,QAC5C,KAAK,WAAW,IAAI,MAAM,IAAI;AAAA,MAChC;AAAA,IACF;AAAA,IACA,IAAI,QAAQ,QAAQ;AAAA,MAClB,KAAK,UAAU,QAAQ,MAAM;AAAA,IAC/B;AAAA;AAAA,EAEF,SAAS,CAAC,QAAQ;AAAA,IAChB,IAAI,KAAK,WAAW;AAAA,MAClB;AAAA,IACF,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,IAAI,oBAAoB,KAAK,oBAAoB;AAAA,MAC7D,MAAM,OAAO,KAAK,OAAO,EAAE;AAAA,IAC7B;AAAA,IACA,IAAI,KAAK,QAAQ;AAAA,MACf,MAAM,OAAO,KAAK,OAAO,EAAE;AAAA,MAC3B,KAAK,SAAS;AAAA,IAChB;AAAA,IACA,KAAK,SAAS;AAAA,IACd,KAAK,OAAO,GAAG,oBAAoB,KAAK,oBAAoB;AAAA,IAC5D,KAAK,SAAS,IAAI,iBAAiB,KAAK,KAAK,KAAK,QAAQ;AAAA,MACxD,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,MACT,UAAU,KAAK;AAAA,MACf,cAAc,KAAK;AAAA,MACnB,kBAAkB,KAAK;AAAA,MACvB,mBAAmB,KAAK;AAAA,MACxB,WAAW,KAAK;AAAA,MAChB,kBAAkB,KAAK;AAAA,MACvB,iBAAiB,KAAK;AAAA,MACtB,aAAa,KAAK;AAAA,MAClB,IAAI,KAAK,KAAK,GAAG,KAAK,cAAc;AAAA,MACpC,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,MAAM,IAAI,KAAK,MAAM;AAAA,IACrB,MAAM,IAAI,KAAK,MAAM;AAAA;AAAA,EAEvB,GAAG,CAAC,OAAO;AAAA,IACT,IAAI,CAAC,KAAK,UAAU,cAAc,SAAS,eAAe,SAAS,sBAAsB,SAAS,aAAa,OAAO;AAAA,MACpH,KAAK,UAAU,KAAK;AAAA,MACpB,OAAO,KAAK,iBAAiB,IAAI;AAAA,IACnC;AAAA,IACA,OAAO;AAAA;AAAA,EAET,MAAM,CAAC,IAAI;AAAA,IACT,IAAI,KAAK,eAAe;AAAA,MACtB,MAAM,OAAO,EAAE;AAAA,MACf;AAAA,IACF;AAAA,IACA,IAAI,KAAK,UAAU,OAAO,KAAK,OAAO,IAAI;AAAA,MACxC,MAAM,IAAI,MAAM,sDAAsD;AAAA,IACxE;AAAA,IACA,IAAI,KAAK,UAAU,OAAO,KAAK,OAAO,IAAI;AAAA,MACxC,MAAM,IAAI,MAAM,iFAAiF;AAAA,IACnG;AAAA,IACA,MAAM,OAAO,EAAE;AAAA;AAAA,EAEjB,kBAAkB,GAAG;AAAA,IACnB,KAAK,gBAAgB;AAAA,IACrB,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,IAAI,oBAAoB,KAAK,oBAAoB;AAAA,IAC/D;AAAA,IACA,MAAM,mBAAmB;AAAA,IACzB,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AAAA;AAAA,EAEhB,WAAW,GAAG;AAAA,IACZ,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,IAAI,oBAAoB,KAAK,oBAAoB;AAAA,MAC7D,MAAM,OAAO,KAAK,OAAO,EAAE;AAAA,MAC3B,KAAK,SAAS;AAAA,IAChB;AAAA,IACA,IAAI,KAAK,QAAQ;AAAA,MACf,MAAM,OAAO,KAAK,OAAO,EAAE;AAAA,MAC3B,KAAK,SAAS;AAAA,IAChB;AAAA;AAAA,EAEF,UAAU,CAAC,QAAQ;AAAA,IACjB,IAAI,CAAC,KAAK,UAAU,CAAC,KAAK;AAAA,MACxB;AAAA,IACF,MAAM,WAAW,KAAK,OAAO;AAAA,IAC7B,IAAI,CAAC,YAAY,CAAC,SAAS;AAAA,MACzB;AAAA,IACF,MAAM,UAAU,SAAS;AAAA,IACzB,MAAM,YAAY,KAAK,OAAO;AAAA,IAC9B,IAAI,aAAa,QAAQ;AAAA,MACvB;AAAA,IACF,MAAM,cAAc,KAAK,OAAO,UAAU,KAAK,OAAO,QAAQ;AAAA,IAC9D,MAAM,eAAe,KAAK,QAAQ;AAAA,IAClC,SAAS,IAAI,EAAE,IAAI,KAAK,QAAQ,KAAK;AAAA,MACnC,MAAM,kBAAkB,YAAY;AAAA,MACpC,IAAI,mBAAmB,QAAQ;AAAA,QAC7B;AAAA,MACF,MAAM,cAAc,QAAQ;AAAA,MAC5B,MAAM,SAAS,KAAK,mBAAmB,IAAI,WAAW;AAAA,MACtD,IAAI,QAAQ;AAAA,QACV,OAAO,SAAS,KAAK,IAAI,aAAa,KAAK,IAAI,GAAG,cAAc,GAAG,MAAM;AAAA,MAC3E;AAAA,IACF;AAAA;AAAA,MAEE,eAAe,CAAC,OAAO;AAAA,IACzB,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,UAAU;AAAA,IACxB;AAAA;AAAA,MAEE,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK,QAAQ,WAAW;AAAA;AAAA,EAEjC,YAAY,CAAC,MAAM,OAAO;AAAA,IACxB,KAAK,eAAe,MAAM,KAAK;AAAA,IAC/B,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,cAAc,KAAK,mBAAmB,KAAK,kBAAkB;AAAA,IAC3E;AAAA;AAAA,EAEF,cAAc,CAAC,MAAM;AAAA,IACnB,KAAK,kBAAkB,OAAO,IAAI;AAAA,IAClC,KAAK,mBAAmB,OAAO,IAAI;AAAA,IACnC,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,cAAc,KAAK,mBAAmB,KAAK,kBAAkB;AAAA,IAC3E;AAAA;AAAA,EAEF,kBAAkB,GAAG;AAAA,IACnB,KAAK,kBAAkB,MAAM;AAAA,IAC7B,KAAK,mBAAmB,MAAM;AAAA,IAC9B,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,cAAc,KAAK,mBAAmB,KAAK,kBAAkB;AAAA,IAC3E;AAAA;AAAA,EAEF,aAAa,CAAC,YAAY;AAAA,IACxB,KAAK,kBAAkB,MAAM;AAAA,IAC7B,KAAK,mBAAmB,MAAM;AAAA,IAC9B,YAAY,MAAM,UAAU,YAAY;AAAA,MACtC,KAAK,eAAe,MAAM,KAAK;AAAA,IACjC;AAAA,IACA,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,cAAc,KAAK,mBAAmB,KAAK,kBAAkB;AAAA,IAC3E;AAAA;AAAA,EAEF,aAAa,GAAG;AAAA,IACd,OAAO;AAAA,MACL,QAAQ,KAAK;AAAA,MACb,SAAS,KAAK;AAAA,IAChB;AAAA;AAAA,EAEF,WAAW,CAAC,MAAM,MAAM;AAAA,IACtB,KAAK,WAAW,IAAI,MAAM,IAAI;AAAA,IAC9B,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,aAAa,KAAK,UAAU;AAAA,IAC1C;AAAA;AAAA,EAEF,aAAa,CAAC,MAAM;AAAA,IAClB,KAAK,WAAW,OAAO,IAAI;AAAA,IAC3B,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,aAAa,KAAK,UAAU;AAAA,IAC1C;AAAA;AAAA,EAEF,iBAAiB,GAAG;AAAA,IAClB,KAAK,WAAW,MAAM;AAAA,IACtB,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,aAAa,KAAK,UAAU;AAAA,IAC1C;AAAA;AAAA,EAEF,YAAY,CAAC,WAAW;AAAA,IACtB,KAAK,WAAW,MAAM;AAAA,IACtB,YAAY,MAAM,SAAS,WAAW;AAAA,MACpC,KAAK,WAAW,IAAI,MAAM,IAAI;AAAA,IAChC;AAAA,IACA,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,aAAa,KAAK,UAAU;AAAA,IAC1C;AAAA;AAAA,EAEF,YAAY,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,gBAAgB,CAAC,OAAO;AAAA,IAC1B,IAAI,KAAK,sBAAsB,OAAO;AAAA,MACpC,KAAK,oBAAoB;AAAA,MACzB,IAAI,KAAK,QAAQ;AAAA,QACf,KAAK,OAAO,oBAAoB,KAAK;AAAA,MACvC;AAAA,IACF;AAAA;AAAA,MAEE,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK;AAAA;AAAA,EAEd,kBAAkB,CAAC,iBAAiB;AAAA,IAClC,KAAK,mBAAmB;AAAA,IACxB,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,mBAAmB,eAAe;AAAA,IAChD;AAAA;AAAA,EAEF,kBAAkB,GAAG;AAAA,IACnB,OAAO,KAAK;AAAA;AAAA,EAEd,cAAc,CAAC,aAAa;AAAA,IAC1B,KAAK,eAAe;AAAA,IACpB,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,eAAe,WAAW;AAAA,IACxC;AAAA;AAAA,EAEF,cAAc,GAAG;AAAA,IACf,OAAO,KAAK;AAAA;AAAA,EAEd,cAAc,CAAC,WAAW,SAAS,OAAO;AAAA,IACxC,SAAS,IAAI,UAAU,KAAK,SAAS,KAAK;AAAA,MACxC,KAAK,eAAe,GAAG,KAAK;AAAA,IAC9B;AAAA,IACA,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,cAAc,KAAK,mBAAmB,KAAK,kBAAkB;AAAA,IAC3E;AAAA;AAAA,EAEF,mBAAmB,CAAC,WAAW,SAAS;AAAA,IACtC,SAAS,IAAI,UAAU,KAAK,SAAS,KAAK;AAAA,MACxC,KAAK,kBAAkB,OAAO,CAAC;AAAA,MAC/B,KAAK,mBAAmB,OAAO,CAAC;AAAA,IAClC;AAAA,IACA,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,cAAc,KAAK,mBAAmB,KAAK,kBAAkB;AAAA,IAC3E;AAAA;AAEJ;AAAA;AAGA,MAAM,KAAK;AAAA,EACT,IAAI,CAAC,QAAQ,QAAQ,UAAU,CAAC,GAAG;AAAA,IACjC,IAAI;AAAA,IACJ,IAAI,OAAO,YAAY,YAAY;AAAA,MACjC,WAAW;AAAA,MACX,UAAU,CAAC;AAAA,IACb,EAAO,SAAI,cAAc,SAAS;AAAA,MAChC,WAAW,QAAQ;AAAA,IACrB;AAAA,IACA,MAAM,YAAY,KAAK,UAAU,QAAQ,OAAO;AAAA,IAChD,MAAM,YAAY,KAAK,UAAU,QAAQ,OAAO;AAAA,IAChD,MAAM,YAAY,KAAK,YAAY,KAAK,SAAS,WAAW,OAAO,CAAC;AAAA,IACpE,MAAM,YAAY,KAAK,YAAY,KAAK,SAAS,WAAW,OAAO,CAAC;AAAA,IACpE,OAAO,KAAK,mBAAmB,WAAW,WAAW,SAAS,QAAQ;AAAA;AAAA,EAExE,kBAAkB,CAAC,WAAW,WAAW,SAAS,UAAU;AAAA,IAC1D,IAAI;AAAA,IACJ,MAAM,OAAO,CAAC,UAAU;AAAA,MACtB,QAAQ,KAAK,YAAY,OAAO,OAAO;AAAA,MACvC,IAAI,UAAU;AAAA,QACZ,WAAW,QAAQ,GAAG;AAAA,UACpB,SAAS,KAAK;AAAA,WACb,CAAC;AAAA,QACJ;AAAA,MACF,EAAO;AAAA,QACL,OAAO;AAAA;AAAA;AAAA,IAGX,MAAM,SAAS,UAAU,QAAQ,SAAS,UAAU;AAAA,IACpD,IAAI,aAAa;AAAA,IACjB,IAAI,gBAAgB,SAAS;AAAA,IAC7B,IAAI,QAAQ,iBAAiB,MAAM;AAAA,MACjC,gBAAgB,KAAK,IAAI,eAAe,QAAQ,aAAa;AAAA,IAC/D;AAAA,IACA,MAAM,oBAAoB,KAAK,QAAQ,aAAa,QAAQ,OAAO,YAAY,KAAK;AAAA,IACpF,MAAM,sBAAsB,KAAK,IAAI,IAAI;AAAA,IACzC,MAAM,WAAW,CAAC,EAAE,QAAQ,IAAI,eAAe,UAAU,CAAC;AAAA,IAC1D,IAAI,SAAS,KAAK,cAAc,SAAS,IAAI,WAAW,WAAW,GAAG,OAAO;AAAA,IAC7E,IAAI,SAAS,GAAG,SAAS,KAAK,UAAU,SAAS,KAAK,QAAQ;AAAA,MAC5D,OAAO,KAAK,KAAK,YAAY,SAAS,GAAG,eAAe,WAAW,SAAS,CAAC;AAAA,IAC/E;AAAA,IACA,IAAI,wBAAwB,WAAW,wBAAwB;AAAA,IAC/D,MAAM,iBAAiB,MAAM;AAAA,MAC3B,SAAS,eAAe,KAAK,IAAI,uBAAuB,CAAC,UAAU,EAAE,gBAAgB,KAAK,IAAI,uBAAuB,UAAU,GAAG,gBAAgB,GAAG;AAAA,QACnJ,IAAI;AAAA,QACJ,MAAM,aAAa,SAAS,eAAe,IAAI,UAAU,SAAS,eAAe;AAAA,QACjF,IAAI,YAAY;AAAA,UACd,SAAS,eAAe,KAAK;AAAA,QAC/B;AAAA,QACA,IAAI,SAAS;AAAA,QACb,IAAI,SAAS;AAAA,UACX,MAAM,gBAAgB,QAAQ,SAAS;AAAA,UACvC,SAAS,WAAW,KAAK,iBAAiB,gBAAgB;AAAA,QAC5D;AAAA,QACA,MAAM,YAAY,cAAc,WAAW,SAAS,IAAI;AAAA,QACxD,IAAI,CAAC,UAAU,CAAC,WAAW;AAAA,UACzB,SAAS,gBAAgB;AAAA,UACzB;AAAA,QACF;AAAA,QACA,IAAI,CAAC,aAAa,UAAU,WAAW,SAAS,QAAQ,QAAQ;AAAA,UAC9D,WAAW,KAAK,UAAU,SAAS,MAAM,OAAO,GAAG,OAAO;AAAA,QAC5D,EAAO;AAAA,UACL,WAAW,KAAK,UAAU,YAAY,OAAO,MAAM,GAAG,OAAO;AAAA;AAAA,QAE/D,SAAS,KAAK,cAAc,UAAU,WAAW,WAAW,cAAc,OAAO;AAAA,QACjF,IAAI,SAAS,SAAS,KAAK,UAAU,SAAS,KAAK,QAAQ;AAAA,UACzD,OAAO,KAAK,KAAK,YAAY,SAAS,eAAe,WAAW,SAAS,CAAC,KAAK;AAAA,QACjF,EAAO;AAAA,UACL,SAAS,gBAAgB;AAAA,UACzB,IAAI,SAAS,SAAS,KAAK,QAAQ;AAAA,YACjC,wBAAwB,KAAK,IAAI,uBAAuB,eAAe,CAAC;AAAA,UAC1E;AAAA,UACA,IAAI,SAAS,KAAK,QAAQ;AAAA,YACxB,wBAAwB,KAAK,IAAI,uBAAuB,eAAe,CAAC;AAAA,UAC1E;AAAA;AAAA,MAEJ;AAAA,MACA;AAAA;AAAA,IAEF,IAAI,UAAU;AAAA,OACX,SAAS,IAAI,GAAG;AAAA,QACf,WAAW,QAAQ,GAAG;AAAA,UACpB,IAAI,aAAa,iBAAiB,KAAK,IAAI,IAAI,qBAAqB;AAAA,YAClE,OAAO,SAAS,SAAS;AAAA,UAC3B;AAAA,UACA,IAAI,CAAC,eAAe,GAAG;AAAA,YACrB,KAAK;AAAA,UACP;AAAA,WACC,CAAC;AAAA,SACH;AAAA,IACL,EAAO;AAAA,MACL,OAAO,cAAc,iBAAiB,KAAK,IAAI,KAAK,qBAAqB;AAAA,QACvE,MAAM,MAAM,eAAe;AAAA,QAC3B,IAAI,KAAK;AAAA,UACP,OAAO;AAAA,QACT;AAAA,MACF;AAAA;AAAA;AAAA,EAGJ,SAAS,CAAC,OAAM,OAAO,SAAS,WAAW,SAAS;AAAA,IAClD,MAAM,OAAO,MAAK;AAAA,IAClB,IAAI,QAAQ,CAAC,QAAQ,qBAAqB,KAAK,UAAU,SAAS,KAAK,YAAY,SAAS;AAAA,MAC1F,OAAO;AAAA,QACL,QAAQ,MAAK,SAAS;AAAA,QACtB,eAAe,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,SAAS,mBAAmB,KAAK,kBAAkB;AAAA,MACpG;AAAA,IACF,EAAO;AAAA,MACL,OAAO;AAAA,QACL,QAAQ,MAAK,SAAS;AAAA,QACtB,eAAe,EAAE,OAAO,GAAG,OAAO,SAAS,mBAAmB,KAAK;AAAA,MACrE;AAAA;AAAA;AAAA,EAGJ,aAAa,CAAC,UAAU,WAAW,WAAW,cAAc,SAAS;AAAA,IACnE,MAAM,SAAS,UAAU,QAAQ,SAAS,UAAU;AAAA,IACpD,IAAI,SAAS,SAAS,QAAQ,SAAS,SAAS,cAAc,cAAc;AAAA,IAC5E,OAAO,SAAS,IAAI,UAAU,SAAS,IAAI,UAAU,KAAK,OAAO,UAAU,SAAS,IAAI,UAAU,SAAS,IAAI,OAAO,GAAG;AAAA,MACvH;AAAA,MACA;AAAA,MACA;AAAA,MACA,IAAI,QAAQ,mBAAmB;AAAA,QAC7B,SAAS,gBAAgB,EAAE,OAAO,GAAG,mBAAmB,SAAS,eAAe,OAAO,OAAO,SAAS,MAAM;AAAA,MAC/G;AAAA,IACF;AAAA,IACA,IAAI,eAAe,CAAC,QAAQ,mBAAmB;AAAA,MAC7C,SAAS,gBAAgB,EAAE,OAAO,aAAa,mBAAmB,SAAS,eAAe,OAAO,OAAO,SAAS,MAAM;AAAA,IACzH;AAAA,IACA,SAAS,SAAS;AAAA,IAClB,OAAO;AAAA;AAAA,EAET,MAAM,CAAC,MAAM,OAAO,SAAS;AAAA,IAC3B,IAAI,QAAQ,YAAY;AAAA,MACtB,OAAO,QAAQ,WAAW,MAAM,KAAK;AAAA,IACvC,EAAO;AAAA,MACL,OAAO,SAAS,SAAS,CAAC,CAAC,QAAQ,cAAc,KAAK,YAAY,MAAM,MAAM,YAAY;AAAA;AAAA;AAAA,EAG9F,WAAW,CAAC,OAAO;AAAA,IACjB,MAAM,MAAM,CAAC;AAAA,IACb,SAAS,IAAI,EAAE,IAAI,MAAM,QAAQ,KAAK;AAAA,MACpC,IAAI,MAAM,IAAI;AAAA,QACZ,IAAI,KAAK,MAAM,EAAE;AAAA,MACnB;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAET,SAAS,CAAC,OAAO,SAAS;AAAA,IACxB,OAAO;AAAA;AAAA,EAET,QAAQ,CAAC,OAAO,SAAS;AAAA,IACvB,OAAO,MAAM,KAAK,KAAK;AAAA;AAAA,EAEzB,IAAI,CAAC,OAAO;AAAA,IACV,OAAO,MAAM,KAAK,EAAE;AAAA;AAAA,EAEtB,WAAW,CAAC,eAAe,SAAS;AAAA,IAClC,OAAO;AAAA;AAAA,MAEL,eAAe,GAAG;AAAA,IACpB,OAAO;AAAA;AAAA,EAET,WAAW,CAAC,eAAe,WAAW,WAAW;AAAA,IAC/C,MAAM,aAAa,CAAC;AAAA,IACpB,IAAI;AAAA,IACJ,OAAO,eAAe;AAAA,MACpB,WAAW,KAAK,aAAa;AAAA,MAC7B,gBAAgB,cAAc;AAAA,MAC9B,OAAO,cAAc;AAAA,MACrB,gBAAgB;AAAA,IAClB;AAAA,IACA,WAAW,QAAQ;AAAA,IACnB,MAAM,eAAe,WAAW;AAAA,IAChC,IAAI,eAAe,GAAG,SAAS,GAAG,SAAS;AAAA,IAC3C,MAAM,eAAe,cAAc,gBAAgB;AAAA,MACjD,MAAM,YAAY,WAAW;AAAA,MAC7B,IAAI,CAAC,UAAU,SAAS;AAAA,QACtB,IAAI,CAAC,UAAU,SAAS,KAAK,iBAAiB;AAAA,UAC5C,IAAI,QAAQ,UAAU,MAAM,QAAQ,SAAS,UAAU,KAAK;AAAA,UAC5D,QAAQ,MAAM,IAAI,QAAQ,CAAC,QAAQ,GAAG;AAAA,YACpC,MAAM,WAAW,UAAU,SAAS;AAAA,YACpC,OAAO,SAAS,SAAS,OAAO,SAAS,WAAW;AAAA,WACrD;AAAA,UACD,UAAU,QAAQ,KAAK,KAAK,KAAK;AAAA,QACnC,EAAO;AAAA,UACL,UAAU,QAAQ,KAAK,KAAK,UAAU,MAAM,QAAQ,SAAS,UAAU,KAAK,CAAC;AAAA;AAAA,QAE/E,UAAU,UAAU;AAAA,QACpB,IAAI,CAAC,UAAU,OAAO;AAAA,UACpB,UAAU,UAAU;AAAA,QACtB;AAAA,MACF,EAAO;AAAA,QACL,UAAU,QAAQ,KAAK,KAAK,UAAU,MAAM,QAAQ,SAAS,UAAU,KAAK,CAAC;AAAA,QAC7E,UAAU,UAAU;AAAA;AAAA,IAExB;AAAA,IACA,OAAO;AAAA;AAEX;AAAA;AAGA,MAAM,sBAAsB,KAAK;AACjC;AACA,IAAI,gBAAgB,IAAI;AAGxB,SAAS,mBAAmB,CAAC,MAAM,MAAM;AAAA,EACvC,IAAI;AAAA,EACJ,KAAK,IAAI,EAAE,IAAI,KAAK,UAAU,IAAI,KAAK,QAAQ,KAAK;AAAA,IAClD,IAAI,KAAK,MAAM,KAAK,IAAI;AAAA,MACtB,OAAO,KAAK,MAAM,GAAG,CAAC;AAAA,IACxB;AAAA,EACF;AAAA,EACA,OAAO,KAAK,MAAM,GAAG,CAAC;AAAA;AAExB,SAAS,mBAAmB,CAAC,MAAM,MAAM;AAAA,EACvC,IAAI;AAAA,EACJ,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,SAAS,MAAM,KAAK,KAAK,SAAS,IAAI;AAAA,IACpE,OAAO;AAAA,EACT;AAAA,EACA,KAAK,IAAI,EAAE,IAAI,KAAK,UAAU,IAAI,KAAK,QAAQ,KAAK;AAAA,IAClD,IAAI,KAAK,KAAK,UAAU,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK;AAAA,MAC9D,OAAO,KAAK,MAAM,CAAC,CAAC;AAAA,IACtB;AAAA,EACF;AAAA,EACA,OAAO,KAAK,MAAM,CAAC,CAAC;AAAA;AAEtB,SAAS,aAAa,CAAC,QAAQ,WAAW,WAAW;AAAA,EACnD,IAAI,OAAO,MAAM,GAAG,UAAU,MAAM,KAAK,WAAW;AAAA,IAClD,MAAM,MAAM,UAAU,KAAK,UAAU,MAAM,+BAA+B,KAAK,UAAU,SAAS,kBAAkB;AAAA,EACtH;AAAA,EACA,OAAO,YAAY,OAAO,MAAM,UAAU,MAAM;AAAA;AAElD,SAAS,aAAa,CAAC,QAAQ,WAAW,WAAW;AAAA,EACnD,IAAI,CAAC,WAAW;AAAA,IACd,OAAO,SAAS;AAAA,EAClB;AAAA,EACA,IAAI,OAAO,MAAM,CAAC,UAAU,MAAM,KAAK,WAAW;AAAA,IAChD,MAAM,MAAM,UAAU,KAAK,UAAU,MAAM,6BAA6B,KAAK,UAAU,SAAS,kBAAkB;AAAA,EACpH;AAAA,EACA,OAAO,OAAO,MAAM,GAAG,CAAC,UAAU,MAAM,IAAI;AAAA;AAE9C,SAAS,YAAY,CAAC,QAAQ,WAAW;AAAA,EACvC,OAAO,cAAc,QAAQ,WAAW,EAAE;AAAA;AAE5C,SAAS,YAAY,CAAC,QAAQ,WAAW;AAAA,EACvC,OAAO,cAAc,QAAQ,WAAW,EAAE;AAAA;AAE5C,SAAS,cAAc,CAAC,SAAS,SAAS;AAAA,EACxC,OAAO,QAAQ,MAAM,GAAG,aAAa,SAAS,OAAO,CAAC;AAAA;AAExD,SAAS,YAAY,CAAC,GAAG,GAAG;AAAA,EAC1B,IAAI,SAAS;AAAA,EACb,IAAI,EAAE,SAAS,EAAE,QAAQ;AAAA,IACvB,SAAS,EAAE,SAAS,EAAE;AAAA,EACxB;AAAA,EACA,IAAI,OAAO,EAAE;AAAA,EACb,IAAI,EAAE,SAAS,EAAE,QAAQ;AAAA,IACvB,OAAO,EAAE;AAAA,EACX;AAAA,EACA,MAAM,MAAM,MAAM,IAAI;AAAA,EACtB,IAAI,IAAI;AAAA,EACR,IAAI,KAAK;AAAA,EACT,SAAS,IAAI,EAAE,IAAI,MAAM,KAAK;AAAA,IAC5B,IAAI,EAAE,MAAM,EAAE,IAAI;AAAA,MAChB,IAAI,KAAK,IAAI;AAAA,IACf,EAAO;AAAA,MACL,IAAI,KAAK;AAAA;AAAA,IAEX,OAAO,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI;AAAA,MAC5B,IAAI,IAAI;AAAA,IACV;AAAA,IACA,IAAI,EAAE,MAAM,EAAE,IAAI;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAAA,EACA,IAAI;AAAA,EACJ,SAAS,IAAI,OAAO,IAAI,EAAE,QAAQ,KAAK;AAAA,IACrC,OAAO,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI;AAAA,MAC5B,IAAI,IAAI;AAAA,IACV;AAAA,IACA,IAAI,EAAE,MAAM,EAAE,IAAI;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAET,SAAS,UAAU,CAAC,QAAQ;AAAA,EAC1B,IAAI;AAAA,EACJ,KAAK,IAAI,OAAO,SAAS,EAAE,KAAK,GAAG,KAAK;AAAA,IACtC,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,GAAG;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,OAAO,UAAU,IAAI,CAAC;AAAA;AAE/B,SAAS,SAAS,CAAC,QAAQ;AAAA,EACzB,MAAM,QAAQ,OAAO,MAAM,MAAM;AAAA,EACjC,OAAO,QAAQ,MAAM,KAAK;AAAA;AAI5B,IAAI,oBAAoB;AACxB,IAAI,8BAA8B,IAAI,OAAO,IAAI,8BAA8B,sBAAsB,IAAI;AAAA;AAEzG,MAAM,iBAAiB,KAAK;AAAA,EAC1B,MAAM,CAAC,MAAM,OAAO,SAAS;AAAA,IAC3B,IAAI,QAAQ,YAAY;AAAA,MACtB,OAAO,KAAK,YAAY;AAAA,MACxB,QAAQ,MAAM,YAAY;AAAA,IAC5B;AAAA,IACA,OAAO,KAAK,KAAK,MAAM,MAAM,KAAK;AAAA;AAAA,EAEpC,QAAQ,CAAC,OAAO,UAAU,CAAC,GAAG;AAAA,IAC5B,IAAI;AAAA,IACJ,IAAI,QAAQ,eAAe;AAAA,MACzB,MAAM,YAAY,QAAQ;AAAA,MAC1B,IAAI,UAAU,gBAAgB,EAAE,eAAe,QAAQ;AAAA,QACrD,MAAM,IAAI,MAAM,wDAAwD;AAAA,MAC1E;AAAA,MACA,QAAQ,MAAM,KAAK,UAAU,QAAQ,KAAK,GAAG,CAAC,YAAY,QAAQ,OAAO;AAAA,IAC3E,EAAO;AAAA,MACL,QAAQ,MAAM,MAAM,2BAA2B,KAAK,CAAC;AAAA;AAAA,IAEvD,MAAM,SAAS,CAAC;AAAA,IAChB,IAAI,WAAW;AAAA,IACf,MAAM,QAAQ,CAAC,SAAS;AAAA,MACtB,IAAI,KAAK,KAAK,IAAI,GAAG;AAAA,QACnB,IAAI,YAAY,MAAM;AAAA,UACpB,OAAO,KAAK,IAAI;AAAA,QAClB,EAAO;AAAA,UACL,OAAO,KAAK,OAAO,IAAI,IAAI,IAAI;AAAA;AAAA,MAEnC,EAAO,SAAI,YAAY,QAAQ,KAAK,KAAK,QAAQ,GAAG;AAAA,QAClD,IAAI,OAAO,OAAO,SAAS,MAAM,UAAU;AAAA,UACzC,OAAO,KAAK,OAAO,IAAI,IAAI,IAAI;AAAA,QACjC,EAAO;AAAA,UACL,OAAO,KAAK,WAAW,IAAI;AAAA;AAAA,MAE/B,EAAO;AAAA,QACL,OAAO,KAAK,IAAI;AAAA;AAAA,MAElB,WAAW;AAAA,KACZ;AAAA,IACD,OAAO;AAAA;AAAA,EAET,IAAI,CAAC,QAAQ;AAAA,IACX,OAAO,OAAO,IAAI,CAAC,OAAO,MAAM;AAAA,MAC9B,IAAI,KAAK,GAAG;AAAA,QACV,OAAO;AAAA,MACT,EAAO;AAAA,QACL,OAAO,MAAM,QAAQ,QAAQ,EAAE;AAAA;AAAA,KAElC,EAAE,KAAK,EAAE;AAAA;AAAA,EAEZ,WAAW,CAAC,SAAS,SAAS;AAAA,IAC5B,IAAI,CAAC,WAAW,QAAQ,mBAAmB;AAAA,MACzC,OAAO;AAAA,IACT;AAAA,IACA,IAAI,WAAW;AAAA,IACf,IAAI,YAAY;AAAA,IAChB,IAAI,WAAW;AAAA,IACf,QAAQ,QAAQ,CAAC,WAAW;AAAA,MAC1B,IAAI,OAAO,OAAO;AAAA,QAChB,YAAY;AAAA,MACd,EAAO,SAAI,OAAO,SAAS;AAAA,QACzB,WAAW;AAAA,MACb,EAAO;AAAA,QACL,IAAI,aAAa,UAAU;AAAA,UACzB,gCAAgC,UAAU,UAAU,WAAW,MAAM;AAAA,QACvE;AAAA,QACA,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,WAAW;AAAA;AAAA,KAEd;AAAA,IACD,IAAI,aAAa,UAAU;AAAA,MACzB,gCAAgC,UAAU,UAAU,WAAW,IAAI;AAAA,IACrE;AAAA,IACA,OAAO;AAAA;AAEX;AACA,IAAI,WAAW,IAAI;AACnB,SAAS,+BAA+B,CAAC,WAAW,UAAU,WAAW,SAAS;AAAA,EAChF,IAAI,YAAY,WAAW;AAAA,IACzB,MAAM,cAAc,UAAU,SAAS,KAAK;AAAA,IAC5C,MAAM,cAAc,WAAW,SAAS,KAAK;AAAA,IAC7C,MAAM,cAAc,UAAU,UAAU,KAAK;AAAA,IAC7C,MAAM,cAAc,WAAW,UAAU,KAAK;AAAA,IAC9C,IAAI,WAAW;AAAA,MACb,MAAM,iBAAiB,oBAAoB,aAAa,WAAW;AAAA,MACnE,UAAU,QAAQ,cAAc,UAAU,OAAO,aAAa,cAAc;AAAA,MAC5E,SAAS,QAAQ,aAAa,SAAS,OAAO,cAAc;AAAA,MAC5D,UAAU,QAAQ,aAAa,UAAU,OAAO,cAAc;AAAA,IAChE;AAAA,IACA,IAAI,SAAS;AAAA,MACX,MAAM,iBAAiB,oBAAoB,aAAa,WAAW;AAAA,MACnE,QAAQ,QAAQ,cAAc,QAAQ,OAAO,aAAa,cAAc;AAAA,MACxE,SAAS,QAAQ,aAAa,SAAS,OAAO,cAAc;AAAA,MAC5D,UAAU,QAAQ,aAAa,UAAU,OAAO,cAAc;AAAA,IAChE;AAAA,EACF,EAAO,SAAI,WAAW;AAAA,IACpB,IAAI,WAAW;AAAA,MACb,MAAM,KAAK,UAAU,UAAU,KAAK;AAAA,MACpC,UAAU,QAAQ,UAAU,MAAM,UAAU,GAAG,MAAM;AAAA,IACvD;AAAA,IACA,IAAI,SAAS;AAAA,MACX,MAAM,KAAK,UAAU,QAAQ,KAAK;AAAA,MAClC,QAAQ,QAAQ,QAAQ,MAAM,UAAU,GAAG,MAAM;AAAA,IACnD;AAAA,EACF,EAAO,SAAI,aAAa,SAAS;AAAA,IAC/B,MAAM,YAAY,UAAU,QAAQ,KAAK,GAAG,aAAa,UAAU,SAAS,KAAK,GAAG,WAAW,WAAW,SAAS,KAAK;AAAA,IACxH,MAAM,aAAa,oBAAoB,WAAW,UAAU;AAAA,IAC5D,SAAS,QAAQ,aAAa,SAAS,OAAO,UAAU;AAAA,IACxD,MAAM,WAAW,oBAAoB,aAAa,WAAW,UAAU,GAAG,QAAQ;AAAA,IAClF,SAAS,QAAQ,aAAa,SAAS,OAAO,QAAQ;AAAA,IACtD,QAAQ,QAAQ,cAAc,QAAQ,OAAO,WAAW,QAAQ;AAAA,IAChE,UAAU,QAAQ,cAAc,UAAU,OAAO,WAAW,UAAU,MAAM,GAAG,UAAU,SAAS,SAAS,MAAM,CAAC;AAAA,EACpH,EAAO,SAAI,SAAS;AAAA,IAClB,MAAM,kBAAkB,UAAU,QAAQ,KAAK;AAAA,IAC/C,MAAM,mBAAmB,WAAW,SAAS,KAAK;AAAA,IAClD,MAAM,UAAU,eAAe,kBAAkB,eAAe;AAAA,IAChE,SAAS,QAAQ,aAAa,SAAS,OAAO,OAAO;AAAA,EACvD,EAAO,SAAI,WAAW;AAAA,IACpB,MAAM,oBAAoB,WAAW,UAAU,KAAK;AAAA,IACpD,MAAM,mBAAmB,UAAU,SAAS,KAAK;AAAA,IACjD,MAAM,UAAU,eAAe,mBAAmB,gBAAgB;AAAA,IAClE,SAAS,QAAQ,aAAa,SAAS,OAAO,OAAO;AAAA,EACvD;AAAA;AAAA;AAGF,MAAM,2BAA2B,KAAK;AAAA,EACpC,QAAQ,CAAC,OAAO;AAAA,IACd,MAAM,QAAQ,IAAI,OAAO,cAAc,uCAAuC,sBAAsB,IAAI;AAAA,IACxG,OAAO,MAAM,MAAM,KAAK,KAAK,CAAC;AAAA;AAElC;AACA,IAAI,qBAAqB,IAAI;AAAA;AAG7B,MAAM,iBAAiB,KAAK;AAAA,EAC1B,WAAW,GAAG;AAAA,IACZ,MAAM,GAAG,SAAS;AAAA,IAClB,KAAK,WAAW;AAAA;AAAA,EAElB,MAAM,CAAC,MAAM,OAAO,SAAS;AAAA,IAC3B,IAAI,QAAQ,kBAAkB;AAAA,MAC5B,IAAI,CAAC,QAAQ,kBAAkB,CAAC,KAAK,SAAS;AAAA,CACnD,GAAG;AAAA,QACI,OAAO,KAAK,KAAK;AAAA,MACnB;AAAA,MACA,IAAI,CAAC,QAAQ,kBAAkB,CAAC,MAAM,SAAS;AAAA,CACpD,GAAG;AAAA,QACI,QAAQ,MAAM,KAAK;AAAA,MACrB;AAAA,IACF,EAAO,SAAI,QAAQ,sBAAsB,CAAC,QAAQ,gBAAgB;AAAA,MAChE,IAAI,KAAK,SAAS;AAAA,CACvB,GAAG;AAAA,QACI,OAAO,KAAK,MAAM,GAAG,EAAE;AAAA,MACzB;AAAA,MACA,IAAI,MAAM,SAAS;AAAA,CACxB,GAAG;AAAA,QACI,QAAQ,MAAM,MAAM,GAAG,EAAE;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,OAAO,MAAM,OAAO,MAAM,OAAO,OAAO;AAAA;AAE5C;AACA,IAAI,WAAW,IAAI;AACnB,SAAS,QAAQ,CAAC,OAAO,SAAS;AAAA,EAChC,IAAI,QAAQ,iBAAiB;AAAA,IAC3B,QAAQ,MAAM,QAAQ,SAAS;AAAA,CAClC;AAAA,EACC;AAAA,EACA,MAAM,WAAW,CAAC,GAAG,mBAAmB,MAAM,MAAM,WAAW;AAAA,EAC/D,IAAI,CAAC,iBAAiB,iBAAiB,SAAS,IAAI;AAAA,IAClD,iBAAiB,IAAI;AAAA,EACvB;AAAA,EACA,SAAS,IAAI,EAAE,IAAI,iBAAiB,QAAQ,KAAK;AAAA,IAC/C,MAAM,OAAO,iBAAiB;AAAA,IAC9B,IAAI,IAAI,KAAK,CAAC,QAAQ,gBAAgB;AAAA,MACpC,SAAS,SAAS,SAAS,MAAM;AAAA,IACnC,EAAO;AAAA,MACL,SAAS,KAAK,IAAI;AAAA;AAAA,EAEtB;AAAA,EACA,OAAO;AAAA;AAIT,SAAS,kBAAkB,CAAC,MAAM;AAAA,EAChC,OAAO,QAAQ,OAAO,QAAQ,OAAO,QAAQ;AAAA;AAAA;AAG/C,MAAM,qBAAqB,KAAK;AAAA,EAC9B,QAAQ,CAAC,OAAO;AAAA,IACd,IAAI;AAAA,IACJ,MAAM,SAAS,CAAC;AAAA,IAChB,IAAI,cAAc;AAAA,IAClB,SAAS,IAAI,EAAE,IAAI,MAAM,QAAQ,KAAK;AAAA,MACpC,IAAI,KAAK,MAAM,SAAS,GAAG;AAAA,QACzB,OAAO,KAAK,MAAM,MAAM,WAAW,CAAC;AAAA,QACpC;AAAA,MACF;AAAA,MACA,IAAI,mBAAmB,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,MAAM,IAAI,GAAG;AAAA,QAC5D,OAAO,KAAK,MAAM,MAAM,aAAa,IAAI,CAAC,CAAC;AAAA,QAC3C,IAAI,cAAc,IAAI;AAAA,QACtB,QAAQ,KAAK,MAAM,IAAI,QAAQ,QAAQ,OAAO,YAAY,YAAY,GAAG,MAAM,IAAI,GAAG;AAAA,UACpF;AAAA,QACF;AAAA,QACA,OAAO,KAAK,MAAM,MAAM,aAAa,IAAI,CAAC,CAAC;AAAA,QAC3C,cAAc,IAAI;AAAA,MACpB;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAEX;AACA,IAAI,eAAe,IAAI;AAAA;AAGvB,MAAM,gBAAgB,KAAK;AAAA,EACzB,QAAQ,CAAC,OAAO;AAAA,IACd,OAAO,MAAM,MAAM,eAAe;AAAA;AAEtC;AACA,IAAI,UAAU,IAAI;AAAA;AAGlB,MAAM,iBAAiB,KAAK;AAAA,EAC1B,WAAW,GAAG;AAAA,IACZ,MAAM,GAAG,SAAS;AAAA,IAClB,KAAK,WAAW;AAAA;AAAA,MAEd,eAAe,GAAG;AAAA,IACpB,OAAO;AAAA;AAAA,EAET,SAAS,CAAC,OAAO,SAAS;AAAA,IACxB,QAAQ,sBAAsB,oBAAoB,CAAC,GAAG,MAAM,OAAO,MAAM,cAAc,uBAAuB,MAAM;AAAA,IACpH,OAAO,OAAO,UAAU,WAAW,QAAQ,KAAK,UAAU,aAAa,OAAO,MAAM,MAAM,iBAAiB,GAAG,MAAM,IAAI;AAAA;AAAA,EAE1H,MAAM,CAAC,MAAM,OAAO,SAAS;AAAA,IAC3B,OAAO,MAAM,OAAO,KAAK,QAAQ,cAAc,IAAI,GAAG,MAAM,QAAQ,cAAc,IAAI,GAAG,OAAO;AAAA;AAEpG;AACA,IAAI,WAAW,IAAI;AACnB,SAAS,YAAY,CAAC,KAAK,OAAO,kBAAkB,UAAU,KAAK;AAAA,EACjE,QAAQ,SAAS,CAAC;AAAA,EAClB,mBAAmB,oBAAoB,CAAC;AAAA,EACxC,IAAI,UAAU;AAAA,IACZ,MAAM,SAAS,QAAQ,YAAY,KAAK,KAAK,GAAG;AAAA,EAClD;AAAA,EACA,IAAI;AAAA,EACJ,KAAK,IAAI,EAAE,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,IACnC,IAAI,MAAM,OAAO,KAAK;AAAA,MACpB,OAAO,iBAAiB;AAAA,IAC1B;AAAA,EACF;AAAA,EACA,IAAI;AAAA,EACJ,IAAI,OAAO,UAAU,SAAS,KAAK,GAAG,MAAM,kBAAkB;AAAA,IAC5D,MAAM,KAAK,GAAG;AAAA,IACd,mBAAmB,IAAI,MAAM,IAAI,MAAM;AAAA,IACvC,iBAAiB,KAAK,gBAAgB;AAAA,IACtC,KAAK,IAAI,EAAE,IAAI,IAAI,QAAQ,KAAK,GAAG;AAAA,MACjC,iBAAiB,KAAK,aAAa,IAAI,IAAI,OAAO,kBAAkB,UAAU,OAAO,CAAC,CAAC;AAAA,IACzF;AAAA,IACA,MAAM,IAAI;AAAA,IACV,iBAAiB,IAAI;AAAA,IACrB,OAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO,IAAI,QAAQ;AAAA,IACrB,MAAM,IAAI,OAAO;AAAA,EACnB;AAAA,EACA,IAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;AAAA,IAC3C,MAAM,KAAK,GAAG;AAAA,IACd,mBAAmB,CAAC;AAAA,IACpB,iBAAiB,KAAK,gBAAgB;AAAA,IACtC,MAAM,aAAa,CAAC;AAAA,IACpB,IAAI;AAAA,IACJ,KAAK,QAAQ,KAAK;AAAA,MAChB,IAAI,OAAO,UAAU,eAAe,KAAK,KAAK,IAAI,GAAG;AAAA,QACnD,WAAW,KAAK,IAAI;AAAA,MACtB;AAAA,IACF;AAAA,IACA,WAAW,KAAK;AAAA,IAChB,KAAK,IAAI,EAAE,IAAI,WAAW,QAAQ,KAAK,GAAG;AAAA,MACxC,OAAO,WAAW;AAAA,MAClB,iBAAiB,QAAQ,aAAa,IAAI,OAAO,OAAO,kBAAkB,UAAU,IAAI;AAAA,IAC1F;AAAA,IACA,MAAM,IAAI;AAAA,IACV,iBAAiB,IAAI;AAAA,EACvB,EAAO;AAAA,IACL,mBAAmB;AAAA;AAAA,EAErB,OAAO;AAAA;AAAA;AAIT,MAAM,kBAAkB,KAAK;AAAA,EAC3B,QAAQ,CAAC,OAAO;AAAA,IACd,OAAO,MAAM,MAAM;AAAA;AAAA,EAErB,IAAI,CAAC,OAAO;AAAA,IACV,OAAO;AAAA;AAAA,EAET,WAAW,CAAC,OAAO;AAAA,IACjB,OAAO;AAAA;AAEX;AACA,IAAI,YAAY,IAAI;AAGpB,SAAS,UAAU,CAAC,SAAS;AAAA,EAC3B,MAAM,UAAU,QAAQ,MAAM,IAAI,GAAG,OAAO,CAAC;AAAA,EAC7C,IAAI,IAAI;AAAA,EACR,SAAS,UAAU,GAAG;AAAA,IACpB,MAAM,QAAQ,CAAC;AAAA,IACf,KAAK,KAAK,KAAK;AAAA,IACf,OAAO,IAAI,QAAQ,QAAQ;AAAA,MACzB,MAAM,OAAO,QAAQ;AAAA,MACrB,IAAI,qBAAqB,KAAK,IAAI,GAAG;AAAA,QACnC;AAAA,MACF;AAAA,MACA,MAAM,SAAS,2CAA2C,KAAK,IAAI;AAAA,MACnE,IAAI,QAAQ;AAAA,QACV,MAAM,QAAQ,OAAO;AAAA,MACvB;AAAA,MACA;AAAA,IACF;AAAA,IACA,gBAAgB,KAAK;AAAA,IACrB,gBAAgB,KAAK;AAAA,IACrB,MAAM,QAAQ,CAAC;AAAA,IACf,OAAO,IAAI,QAAQ,QAAQ;AAAA,MACzB,MAAM,OAAO,QAAQ;AAAA,MACrB,IAAI,wGAAwG,KAAK,IAAI,GAAG;AAAA,QACtH;AAAA,MACF,EAAO,SAAI,MAAM,KAAK,IAAI,GAAG;AAAA,QAC3B,MAAM,MAAM,KAAK,UAAU,CAAC;AAAA,MAC9B,EAAO,SAAI,MAAM;AAAA,QACf,MAAM,IAAI,MAAM,mBAAmB,IAAI,KAAK,MAAM,KAAK,UAAU,IAAI,CAAC;AAAA,MACxE,EAAO;AAAA,QACL;AAAA;AAAA,IAEJ;AAAA;AAAA,EAEF,SAAS,eAAe,CAAC,OAAO;AAAA,IAC9B,MAAM,aAAa,2BAA2B,KAAK,QAAQ,EAAE;AAAA,IAC7D,IAAI,YAAY;AAAA,MACd,MAAM,OAAO,WAAW,GAAG,MAAM,MAAM,CAAC,GAAG,UAAU,KAAK,MAAM,IAAI,KAAK;AAAA,MACzE,IAAI,WAAW,KAAK,GAAG,QAAQ,SAAS,IAAI;AAAA,MAC5C,IAAI,SAAS,KAAK,QAAQ,GAAG;AAAA,QAC3B,WAAW,SAAS,OAAO,GAAG,SAAS,SAAS,CAAC;AAAA,MACnD;AAAA,MACA,IAAI,WAAW,OAAO,OAAO;AAAA,QAC3B,MAAM,cAAc;AAAA,QACpB,MAAM,YAAY;AAAA,MACpB,EAAO;AAAA,QACL,MAAM,cAAc;AAAA,QACpB,MAAM,YAAY;AAAA;AAAA,MAEpB;AAAA,IACF;AAAA;AAAA,EAEF,SAAS,SAAS,GAAG;AAAA,IACnB,IAAI;AAAA,IACJ,MAAM,mBAAmB,GAAG,kBAAkB,QAAQ,MAAM,cAAc,gBAAgB,MAAM,4CAA4C;AAAA,IAC5I,MAAM,OAAO;AAAA,MACX,UAAU,CAAC,YAAY;AAAA,MACvB,UAAU,OAAO,YAAY,OAAO,cAAc,IAAI,CAAC,YAAY;AAAA,MACnE,UAAU,CAAC,YAAY;AAAA,MACvB,UAAU,OAAO,YAAY,OAAO,cAAc,IAAI,CAAC,YAAY;AAAA,MACnE,OAAO,CAAC;AAAA,IACV;AAAA,IACA,IAAI,KAAK,aAAa,GAAG;AAAA,MACvB,KAAK,YAAY;AAAA,IACnB;AAAA,IACA,IAAI,KAAK,aAAa,GAAG;AAAA,MACvB,KAAK,YAAY;AAAA,IACnB;AAAA,IACA,IAAI,WAAW,GAAG,cAAc;AAAA,IAChC,MAAM,IAAI,QAAQ,WAAW,cAAc,KAAK,YAAY,WAAW,KAAK,cAAc,KAAK,QAAQ,QAAQ,QAAQ,OAAO,YAAY,YAAY,GAAG,WAAW,IAAI,KAAK,KAAK;AAAA,MAChL,MAAM,YAAY,QAAQ,GAAG,UAAU,KAAK,KAAK,QAAQ,SAAS,IAAI,MAAM,QAAQ,GAAG;AAAA,MACvF,IAAI,cAAc,OAAO,cAAc,OAAO,cAAc,OAAO,cAAc,MAAM;AAAA,QACrF,KAAK,MAAM,KAAK,QAAQ,EAAE;AAAA,QAC1B,IAAI,cAAc,KAAK;AAAA,UACrB;AAAA,QACF,EAAO,SAAI,cAAc,KAAK;AAAA,UAC5B;AAAA,QACF,EAAO,SAAI,cAAc,KAAK;AAAA,UAC5B;AAAA,UACA;AAAA,QACF;AAAA,MACF,EAAO;AAAA,QACL,MAAM,IAAI,MAAM,gBAAgB,mBAAmB,4BAA4B,QAAQ,IAAI;AAAA;AAAA,IAE/F;AAAA,IACA,IAAI,CAAC,YAAY,KAAK,aAAa,GAAG;AAAA,MACpC,KAAK,WAAW;AAAA,IAClB;AAAA,IACA,IAAI,CAAC,eAAe,KAAK,aAAa,GAAG;AAAA,MACvC,KAAK,WAAW;AAAA,IAClB;AAAA,IACA,IAAI,aAAa,KAAK,UAAU;AAAA,MAC9B,MAAM,IAAI,MAAM,sDAAsD,mBAAmB,EAAE;AAAA,IAC7F;AAAA,IACA,IAAI,gBAAgB,KAAK,UAAU;AAAA,MACjC,MAAM,IAAI,MAAM,wDAAwD,mBAAmB,EAAE;AAAA,IAC/F;AAAA,IACA,OAAO;AAAA;AAAA,EAET,OAAO,IAAI,QAAQ,QAAQ;AAAA,IACzB,WAAW;AAAA,EACb;AAAA,EACA,OAAO;AAAA;AAAA;AAIT,MAAM,uBAAuB,qBAAqB;AAAA,EAChD;AAAA,EACA,uBAAuB;AAAA,EACvB;AAAA,EACA,yBAAyB;AAAA,IACvB,SAAS;AAAA,EACX;AAAA,EACA,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,KAAK,OAAO;AAAA,IAClB,MAAM,UAAU,QAAQ,WAAW,KAAK,uBAAuB;AAAA,IAC/D,MAAM,aAAa,OAAO,YAAY,WAAW,mBAAmB,OAAO,IAAI;AAAA,IAC/E,KAAK,QAAQ;AAAA,IACb,KAAK,uBAAuB,QAAQ,YAAY,aAAa,YAAY;AAAA,IACzE,KAAK,eAAe,IAAI,uBAAuB,KAAK;AAAA,MAClD,IAAI,GAAG,KAAK;AAAA,MACZ,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,MACT,YAAY,KAAK;AAAA,IACnB,GAAG,IAAI;AAAA,IACP,KAAK,iBAAiB,UAAU;AAAA;AAAA,EAElC,gBAAgB,CAAC,YAAY;AAAA,IAC3B,KAAK,WAAW,cAAc,UAAU;AAAA,IACxC,KAAK,YAAY,UAAU;AAAA;AAAA,EAE7B,WAAW,CAAC,YAAY;AAAA,MACpB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,MAAM;AAAA;AAAA,MAEhB,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,OAAO,CAAC,OAAO;AAAA,IACjB,KAAK,uBAAuB;AAAA,IAC5B,MAAM,aAAa,OAAO,UAAU,WAAW,mBAAmB,KAAK,IAAI;AAAA,IAC3E,IAAI,KAAK,UAAU,YAAY;AAAA,MAC7B,KAAK,QAAQ;AAAA,MACb,KAAK,iBAAiB,UAAU;AAAA,MAChC,KAAK,eAAe;AAAA,IACtB;AAAA;AAAA,EAEF,mBAAmB,GAAG;AAAA,IACpB,IAAI,KAAK,aAAa,WAAW,CAAC,KAAK,sBAAsB;AAAA,MAC3D,MAAM,SAAS,KAAK,aAAa,yBAAyB;AAAA,QACxD,IAAI,KAAK;AAAA,QACT,IAAI,KAAK;AAAA,QACT,YAAY,KAAK;AAAA,QACjB,MAAM;AAAA,MACR,CAAC;AAAA,MACD,KAAK,WAAW,cAAc,IAAI,WAAW,MAAM,CAAC;AAAA,MACpD,KAAK,sBAAsB;AAAA,MAC3B,KAAK,SAAS,UAAU;AAAA,IAC1B;AAAA;AAAA,EAEF,GAAG,CAAC,KAAK,OAAO;AAAA,IACd,OAAO,KAAK,aAAa,IAAI,KAAK,KAAK;AAAA;AAAA,EAEzC,MAAM,CAAC,IAAI;AAAA,IACT,KAAK,aAAa,OAAO,EAAE;AAAA;AAAA,EAE7B,YAAY,CAAC,KAAK,QAAQ;AAAA,IACxB,KAAK,aAAa,aAAa,KAAK,MAAM;AAAA,IAC1C,OAAO,KAAK,aAAa,SAAS,QAAQ,GAAG;AAAA;AAAA,EAE/C,eAAe,GAAG;AAAA,IAChB,OAAO,KAAK,aAAa,YAAY;AAAA;AAAA,EAEvC,KAAK,GAAG;AAAA,IACN,KAAK,aAAa,MAAM;AAAA,IACxB,MAAM,kBAAkB,mBAAmB,EAAE;AAAA,IAC7C,KAAK,QAAQ;AAAA,IACb,KAAK,iBAAiB,eAAe;AAAA,IACrC,KAAK,eAAe;AAAA,IACpB,KAAK,cAAc;AAAA;AAAA,EAErB,kBAAkB,MAAM;AAAA,IACtB,KAAK,oBAAoB;AAAA;AAAA,EAE3B,WAAW,CAAC,UAAU;AAAA,IACpB,KAAK,aAAa,KAAK;AAAA;AAAA,EAEzB,WAAW,CAAC,UAAU;AAAA,IACpB,KAAK,aAAa,KAAK;AAAA;AAAA,EAEzB,mBAAmB,CAAC,eAAe;AAAA,IACjC,KAAK,aAAa,aAAa;AAAA;AAAA,EAEjC,OAAO,GAAG;AAAA,IACR,KAAK,aAAa,SAAS,SAAS;AAAA,IACpC,MAAM,QAAQ;AAAA;AAElB;AAAA;AAGA,MAAM,uBAAuB,WAAW;AAAA,EACtC;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,sBAAsB;AAAA,EACtB,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,sBAAsB;AAAA,EACtB,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,KAAK;AAAA,SACN;AAAA,MACH,eAAe,QAAQ,SAAS,UAAU,QAAQ;AAAA,IACpD,CAAC;AAAA,IACD,KAAK,QAAQ,QAAQ,QAAQ;AAAA,IAC7B,KAAK,QAAQ,QAAQ,QAAQ;AAAA,IAC7B,KAAK,MAAM,QAAQ,KAAK,WAAW,QAAQ,EAAE,IAAI;AAAA,IACjD,KAAK,YAAY,QAAQ;AAAA,IACzB,KAAK,eAAe,QAAQ;AAAA,IAC5B,KAAK,YAAY,QAAQ;AAAA,IACzB,KAAK,WAAW,QAAQ,WAAW;AAAA,IACnC,KAAK,eAAe,QAAQ,cAAc,WAAW,QAAQ,WAAW,IAAI;AAAA,IAC5E,KAAK,eAAe,QAAQ,cAAc,WAAW,QAAQ,WAAW,IAAI;AAAA,IAC5E,KAAK,oBAAoB,QAAQ;AAAA,IACjC,KAAK,mBAAmB,QAAQ,mBAAmB;AAAA,IACnD,KAAK,gBAAgB,WAAW,QAAQ,gBAAgB,SAAS;AAAA,IACjE,KAAK,gBAAgB,WAAW,QAAQ,gBAAgB,aAAa;AAAA,IACrE,KAAK,WAAW,WAAW,QAAQ,WAAW,SAAS;AAAA,IACvD,KAAK,aAAa,WAAW,QAAQ,aAAa,SAAS;AAAA,IAC3D,KAAK,aAAa,WAAW,QAAQ,aAAa,aAAa;AAAA,IAC/D,KAAK,kBAAkB,QAAQ,iBAAiB,WAAW,QAAQ,cAAc,IAAI;AAAA,IACrF,KAAK,oBAAoB,QAAQ,mBAAmB,WAAW,QAAQ,gBAAgB,IAAI;AAAA,IAC3F,KAAK,oBAAoB,QAAQ,mBAAmB,WAAW,QAAQ,gBAAgB,IAAI;AAAA,IAC3F,KAAK,kBAAkB,WAAW,QAAQ,kBAAkB,SAAS;AAAA,IACrE,KAAK,oBAAoB,WAAW,QAAQ,oBAAoB,SAAS;AAAA,IACzE,KAAK,qBAAqB,WAAW,QAAQ,qBAAqB,aAAa;AAAA,IAC/E,KAAK,uBAAuB,WAAW,QAAQ,uBAAuB,aAAa;AAAA,IACnF,IAAI,KAAK,OAAO;AAAA,MACd,KAAK,UAAU;AAAA,MACf,KAAK,UAAU;AAAA,IACjB;AAAA;AAAA,EAEF,SAAS,GAAG;AAAA,IACV,IAAI,CAAC,KAAK,OAAO;AAAA,MACf,KAAK,cAAc;AAAA,MACnB,KAAK,cAAc;AAAA,MACnB;AAAA,IACF;AAAA,IACA,IAAI;AAAA,MACF,MAAM,UAAU,WAAW,KAAK,KAAK;AAAA,MACrC,IAAI,QAAQ,WAAW,GAAG;AAAA,QACxB,KAAK,cAAc;AAAA,QACnB,KAAK,cAAc;AAAA,QACnB;AAAA,MACF;AAAA,MACA,KAAK,cAAc,QAAQ;AAAA,MAC3B,KAAK,cAAc;AAAA,MACnB,OAAO,OAAO;AAAA,MACd,KAAK,cAAc;AAAA,MACnB,KAAK,cAAc,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA;AAAA;AAAA,EAG/E,SAAS,GAAG;AAAA,IACV,IAAI,KAAK,aAAa;AAAA,MACpB,KAAK,eAAe;AAAA,MACpB;AAAA,IACF;AAAA,IACA,IAAI,CAAC,KAAK,eAAe,KAAK,YAAY,MAAM,WAAW,GAAG;AAAA,MAC5D;AAAA,IACF;AAAA,IACA,IAAI,KAAK,UAAU,WAAW;AAAA,MAC5B,KAAK,iBAAiB;AAAA,IACxB,EAAO;AAAA,MACL,KAAK,eAAe;AAAA;AAAA;AAAA,EAGxB,QAAQ,CAAC,OAAO,QAAQ;AAAA,IACtB,MAAM,SAAS,OAAO,MAAM;AAAA,IAC5B,IAAI,KAAK,UAAU,WAAW,KAAK,cAAc,UAAU,KAAK,cAAc,WAAW;AAAA,MACvF,IAAI,KAAK,eAAe,OAAO;AAAA,QAC7B,KAAK,aAAa;AAAA,QAClB,KAAK,eAAe;AAAA,MACtB;AAAA,IACF;AAAA;AAAA,EAEF,cAAc,GAAG;AAAA,IACf,IAAI,KAAK,gBAAgB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,KAAK,iBAAiB;AAAA,IACtB,eAAe,MAAM;AAAA,MACnB,IAAI,CAAC,KAAK,eAAe,KAAK,gBAAgB;AAAA,QAC5C,KAAK,iBAAiB;AAAA,QACtB,KAAK,UAAU;AAAA,QACf,KAAK,cAAc;AAAA,MACrB;AAAA,KACD;AAAA;AAAA,EAEH,WAAW,GAAG;AAAA,IACZ,IAAI,KAAK,UAAU,SAAS;AAAA,MAC1B,KAAK,eAAe;AAAA,IACtB,EAAO;AAAA,MACL,KAAK,UAAU;AAAA;AAAA;AAAA,EAGnB,uBAAuB,MAAM;AAAA,IAC3B,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,IAAI,CAAC,KAAK,sBAAsB,CAAC,KAAK;AAAA,MACpC;AAAA,IACF,MAAM,qBAAqB,KAAK,mBAAmB;AAAA,IACnD,MAAM,sBAAsB,KAAK,oBAAoB;AAAA,IACrD,IAAI,CAAC,sBAAsB,CAAC,qBAAqB;AAAA,MAC/C,KAAK,uBAAuB;AAAA,MAC5B,KAAK,eAAe;AAAA,IACtB;AAAA;AAAA,EAEF,uBAAuB,GAAG;AAAA,IACxB,IAAI,KAAK;AAAA,MACP;AAAA,IACF,IAAI,CAAC,KAAK,sBAAsB,CAAC,KAAK;AAAA,MACpC;AAAA,IACF,KAAK,yBAAyB,KAAK;AAAA,IACnC,KAAK,mBAAmB,GAAG,oBAAoB,KAAK,sBAAsB;AAAA,IAC1E,KAAK,oBAAoB,GAAG,oBAAoB,KAAK,sBAAsB;AAAA;AAAA,EAE7E,uBAAuB,GAAG;AAAA,IACxB,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,IAAI,KAAK,oBAAoB;AAAA,MAC3B,KAAK,mBAAmB,IAAI,oBAAoB,KAAK,sBAAsB;AAAA,IAC7E;AAAA,IACA,IAAI,KAAK,qBAAqB;AAAA,MAC5B,KAAK,oBAAoB,IAAI,oBAAoB,KAAK,sBAAsB;AAAA,IAC9E;AAAA,IACA,KAAK,yBAAyB;AAAA;AAAA,EAEhC,kBAAkB,GAAG;AAAA,IACnB,KAAK,wBAAwB;AAAA,IAC7B,KAAK,iBAAiB;AAAA,IACtB,KAAK,gBAAgB;AAAA,IACrB,KAAK,iBAAiB;AAAA,IACtB,MAAM,mBAAmB;AAAA;AAAA,EAE3B,cAAc,GAAG;AAAA,IACf,KAAK,gBAAgB;AAAA,IACrB,IAAI,KAAK,YAAY,KAAK,eAAe;AAAA,MACvC,MAAM,OAAO,KAAK,SAAS,EAAE;AAAA,MAC7B,KAAK,gBAAgB;AAAA,IACvB;AAAA,IACA,IAAI,KAAK,aAAa,KAAK,gBAAgB;AAAA,MACzC,MAAM,OAAO,KAAK,UAAU,EAAE;AAAA,MAC9B,KAAK,iBAAiB;AAAA,IACxB;AAAA,IACA,MAAM,eAAe,uBAAuB,KAAK,aAAa,WAAW;AAAA;AAAA,IAEzE,IAAI,CAAC,KAAK,qBAAqB;AAAA,MAC7B,KAAK,sBAAsB,IAAI,eAAe,KAAK,KAAK;AAAA,QACtD,IAAI,KAAK,KAAK,GAAG,KAAK,kBAAkB;AAAA,QACxC,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,YAAY;AAAA,MACd,CAAC;AAAA,MACD,MAAM,IAAI,KAAK,mBAAmB;AAAA,IACpC,EAAO;AAAA,MACL,KAAK,oBAAoB,UAAU;AAAA,MACnC,MAAM,iBAAiB,KAAK,YAAY,EAAE,QAAQ,KAAK,mBAAmB;AAAA,MAC1E,IAAI,mBAAmB,IAAI;AAAA,QACzB,MAAM,IAAI,KAAK,mBAAmB;AAAA,MACpC;AAAA;AAAA,IAEF,IAAI,CAAC,KAAK,qBAAqB;AAAA,MAC7B,KAAK,sBAAsB,IAAI,eAAe,KAAK,KAAK;AAAA,QACtD,IAAI,KAAK,KAAK,GAAG,KAAK,kBAAkB;AAAA,QACxC,SAAS,KAAK;AAAA,QACd,UAAU;AAAA,QACV,aAAa,KAAK,gBAAgB,YAAY,OAAO;AAAA,QACrD,UAAU,KAAK;AAAA,QACf,SAAS,KAAK;AAAA,QACd,OAAO;AAAA,QACP,UAAU;AAAA,QACV,YAAY;AAAA,WACT,KAAK,sBAAsB,aAAa,EAAE,kBAAkB,KAAK,kBAAkB;AAAA,MACxF,CAAC;AAAA,MACD,MAAM,IAAI,KAAK,mBAAmB;AAAA,IACpC,EAAO;AAAA,MACL,KAAK,oBAAoB,UAAU,KAAK;AAAA,MACxC,KAAK,oBAAoB,WAAW,KAAK,aAAa;AAAA,MACtD,IAAI,KAAK,cAAc;AAAA,QACrB,KAAK,oBAAoB,cAAc,KAAK;AAAA,MAC9C;AAAA,MACA,MAAM,iBAAiB,KAAK,YAAY,EAAE,QAAQ,KAAK,mBAAmB;AAAA,MAC1E,IAAI,mBAAmB,IAAI;AAAA,QACzB,MAAM,IAAI,KAAK,mBAAmB;AAAA,MACpC;AAAA;AAAA;AAAA,EAGJ,4BAA4B,CAAC,MAAM,SAAS,UAAU,kBAAkB;AAAA,IACtE,MAAM,qBAAqB,SAAS,SAAS,KAAK,qBAAqB,KAAK;AAAA,IAC5E,IAAI,CAAC,oBAAoB;AAAA,MACvB,MAAM,cAAc;AAAA,QAClB,IAAI,KAAK,KAAK,GAAG,KAAK,MAAM,cAAc;AAAA,QAC1C;AAAA,QACA,UAAU,KAAK;AAAA,QACf;AAAA,QACA,SAAS,KAAK;AAAA,QACd,aAAa,KAAK,gBAAgB,YAAY,OAAO;AAAA,QACrD,OAAO;AAAA,QACP,QAAQ;AAAA,WACL,KAAK,QAAQ,aAAa,EAAE,IAAI,KAAK,IAAI;AAAA,WACzC,qBAAqB,aAAa,EAAE,iBAAiB;AAAA,WACrD,KAAK,iBAAiB,aAAa,EAAE,aAAa,KAAK,aAAa;AAAA,WACpE,KAAK,iBAAiB,aAAa,EAAE,aAAa,KAAK,aAAa;AAAA,WACpE,KAAK,sBAAsB,aAAa,EAAE,kBAAkB,KAAK,kBAAkB;AAAA,MACxF;AAAA,MACA,MAAM,gBAAgB,IAAI,eAAe,KAAK,KAAK,WAAW;AAAA,MAC9D,IAAI,SAAS,QAAQ;AAAA,QACnB,KAAK,qBAAqB;AAAA,MAC5B,EAAO;AAAA,QACL,KAAK,sBAAsB;AAAA;AAAA,MAE7B,OAAO;AAAA,IACT,EAAO;AAAA,MACL,mBAAmB,UAAU;AAAA,MAC7B,mBAAmB,WAAW,YAAY;AAAA,MAC1C,mBAAmB,UAAU,KAAK;AAAA,MAClC,IAAI,qBAAqB,WAAW;AAAA,QAClC,mBAAmB,mBAAmB;AAAA,MACxC;AAAA,MACA,IAAI,KAAK,cAAc,WAAW;AAAA,QAChC,mBAAmB,WAAW,KAAK;AAAA,MACrC;AAAA,MACA,IAAI,KAAK,iBAAiB,WAAW;AAAA,QACnC,mBAAmB,cAAc,KAAK;AAAA,MACxC;AAAA,MACA,IAAI,KAAK,iBAAiB,WAAW;AAAA,QACnC,mBAAmB,cAAc,KAAK;AAAA,MACxC;AAAA,MACA,IAAI,KAAK,iBAAiB,WAAW;AAAA,QACnC,mBAAmB,cAAc,KAAK;AAAA,MACxC;AAAA,MACA,IAAI,KAAK,QAAQ,WAAW;AAAA,QAC1B,mBAAmB,KAAK,KAAK;AAAA,MAC/B;AAAA,MACA,OAAO;AAAA;AAAA;AAAA,EAGX,kBAAkB,CAAC,MAAM,QAAQ,YAAY,WAAW,aAAa,iBAAiB,OAAO;AAAA,IAC3F,MAAM,UAAU,SAAS,SAAS,KAAK,WAAW,KAAK;AAAA,IACvD,MAAM,YAAY,SAAS,SAAS,KAAK,gBAAgB,KAAK;AAAA,IAC9D,IAAI,CAAC,SAAS;AAAA,MACZ,MAAM,UAAU,IAAI,qBAAqB,KAAK,KAAK;AAAA,QACjD,IAAI,KAAK,KAAK,GAAG,KAAK,MAAM,SAAS;AAAA,QACrC;AAAA,QACA,IAAI,KAAK;AAAA,QACT,IAAI,KAAK;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,kBAAkB;AAAA,QAClB;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,MACV,CAAC;AAAA,MACD,QAAQ,kBAAkB,KAAK;AAAA,MAC/B,MAAM,IAAI,OAAO;AAAA,MACjB,IAAI,SAAS,QAAQ;AAAA,QACnB,KAAK,WAAW;AAAA,QAChB,KAAK,gBAAgB;AAAA,MACvB,EAAO;AAAA,QACL,KAAK,YAAY;AAAA,QACjB,KAAK,iBAAiB;AAAA;AAAA,IAE1B,EAAO;AAAA,MACL,QAAQ,QAAQ;AAAA,MAChB,QAAQ,cAAc,UAAU;AAAA,MAChC,QAAQ,aAAa,SAAS;AAAA,MAC9B,QAAQ,eAAe,WAAW;AAAA,MAClC,QAAQ,mBAAmB,eAAe;AAAA,MAC1C,IAAI,CAAC,WAAW;AAAA,QACd,MAAM,IAAI,OAAO;AAAA,QACjB,IAAI,SAAS,QAAQ;AAAA,UACnB,KAAK,gBAAgB;AAAA,QACvB,EAAO;AAAA,UACL,KAAK,iBAAiB;AAAA;AAAA,MAE1B;AAAA;AAAA;AAAA,EAGJ,gBAAgB,GAAG;AAAA,IACjB,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,KAAK,gBAAgB;AAAA,IACrB,IAAI,KAAK,qBAAqB;AAAA,MAC5B,MAAM,iBAAiB,KAAK,YAAY,EAAE,QAAQ,KAAK,mBAAmB;AAAA,MAC1E,IAAI,mBAAmB,IAAI;AAAA,QACzB,MAAM,OAAO,KAAK,oBAAoB,EAAE;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,IAAI,KAAK,qBAAqB;AAAA,MAC5B,MAAM,iBAAiB,KAAK,YAAY,EAAE,QAAQ,KAAK,mBAAmB;AAAA,MAC1E,IAAI,mBAAmB,IAAI;AAAA,QACzB,MAAM,OAAO,KAAK,oBAAoB,EAAE;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,MAAM,eAAe,CAAC;AAAA,IACtB,MAAM,aAAa,IAAI;AAAA,IACvB,MAAM,YAAY,IAAI;AAAA,IACtB,MAAM,cAAc,IAAI;AAAA,IACxB,IAAI,YAAY;AAAA,IAChB,WAAW,QAAQ,KAAK,YAAY,OAAO;AAAA,MACzC,IAAI,aAAa,KAAK;AAAA,MACtB,IAAI,aAAa,KAAK;AAAA,MACtB,WAAW,QAAQ,KAAK,OAAO;AAAA,QAC7B,MAAM,YAAY,KAAK;AAAA,QACvB,MAAM,WAAW,KAAK,MAAM,CAAC;AAAA,QAC7B,IAAI,cAAc,KAAK;AAAA,UACrB,aAAa,KAAK,QAAQ;AAAA,UAC1B,MAAM,SAAS;AAAA,YACb,QAAQ,KAAK;AAAA,UACf;AAAA,UACA,IAAI,KAAK,iBAAiB;AAAA,YACxB,OAAO,UAAU,KAAK;AAAA,UACxB,EAAO;AAAA,YACL,OAAO,UAAU,KAAK;AAAA;AAAA,UAExB,WAAW,IAAI,WAAW,MAAM;AAAA,UAChC,UAAU,IAAI,WAAW;AAAA,YACvB,OAAO;AAAA,YACP,YAAY,KAAK;AAAA,UACnB,CAAC;AAAA,UACD,YAAY,IAAI,WAAW,UAAU;AAAA,UACrC;AAAA,UACA;AAAA,QACF,EAAO,SAAI,cAAc,KAAK;AAAA,UAC5B,aAAa,KAAK,QAAQ;AAAA,UAC1B,MAAM,SAAS;AAAA,YACb,QAAQ,KAAK;AAAA,UACf;AAAA,UACA,IAAI,KAAK,mBAAmB;AAAA,YAC1B,OAAO,UAAU,KAAK;AAAA,UACxB,EAAO;AAAA,YACL,OAAO,UAAU,KAAK;AAAA;AAAA,UAExB,WAAW,IAAI,WAAW,MAAM;AAAA,UAChC,UAAU,IAAI,WAAW;AAAA,YACvB,OAAO;AAAA,YACP,YAAY,KAAK;AAAA,UACnB,CAAC;AAAA,UACD,YAAY,IAAI,WAAW,UAAU;AAAA,UACrC;AAAA,UACA;AAAA,QACF,EAAO,SAAI,cAAc,KAAK;AAAA,UAC5B,aAAa,KAAK,QAAQ;AAAA,UAC1B,MAAM,SAAS;AAAA,YACb,QAAQ,KAAK;AAAA,UACf;AAAA,UACA,IAAI,KAAK,mBAAmB;AAAA,YAC1B,OAAO,UAAU,KAAK;AAAA,UACxB,EAAO;AAAA,YACL,OAAO,UAAU,KAAK;AAAA;AAAA,UAExB,WAAW,IAAI,WAAW,MAAM;AAAA,UAChC,YAAY,IAAI,WAAW,UAAU;AAAA,UACrC;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,UAAU,aAAa,KAAK;AAAA,CACrC;AAAA,IACG,MAAM,iBAAiB,KAAK,6BAA6B,QAAQ,SAAS,KAAK,SAAS;AAAA,IACxF,KAAK,mBAAmB,QAAQ,gBAAgB,YAAY,WAAW,aAAa,IAAI,KAAK,MAAM;AAAA,IACnG,IAAI,KAAK,aAAa,KAAK,gBAAgB;AAAA,MACzC,MAAM,OAAO,KAAK,UAAU,EAAE;AAAA,MAC9B,KAAK,iBAAiB;AAAA,IACxB;AAAA;AAAA,EAEF,cAAc,GAAG;AAAA,IACf,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,KAAK,gBAAgB;AAAA,IACrB,IAAI,KAAK,qBAAqB;AAAA,MAC5B,MAAM,iBAAiB,KAAK,YAAY,EAAE,QAAQ,KAAK,mBAAmB;AAAA,MAC1E,IAAI,mBAAmB,IAAI;AAAA,QACzB,MAAM,OAAO,KAAK,oBAAoB,EAAE;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,IAAI,KAAK,qBAAqB;AAAA,MAC5B,MAAM,iBAAiB,KAAK,YAAY,EAAE,QAAQ,KAAK,mBAAmB;AAAA,MAC1E,IAAI,mBAAmB,IAAI;AAAA,QACzB,MAAM,OAAO,KAAK,oBAAoB,EAAE;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,MAAM,mBAAmB,CAAC;AAAA,IAC1B,MAAM,oBAAoB,CAAC;AAAA,IAC3B,WAAW,QAAQ,KAAK,YAAY,OAAO;AAAA,MACzC,IAAI,aAAa,KAAK;AAAA,MACtB,IAAI,aAAa,KAAK;AAAA,MACtB,IAAI,IAAI;AAAA,MACR,OAAO,IAAI,KAAK,MAAM,QAAQ;AAAA,QAC5B,MAAM,OAAO,KAAK,MAAM;AAAA,QACxB,MAAM,YAAY,KAAK;AAAA,QACvB,IAAI,cAAc,KAAK;AAAA,UACrB,MAAM,UAAU,KAAK,MAAM,CAAC;AAAA,UAC5B,iBAAiB,KAAK;AAAA,YACpB;AAAA,YACA,SAAS;AAAA,YACT,OAAO,KAAK;AAAA,YACZ,MAAM;AAAA,UACR,CAAC;AAAA,UACD,kBAAkB,KAAK;AAAA,YACrB;AAAA,YACA,SAAS;AAAA,YACT,OAAO,KAAK;AAAA,YACZ,MAAM;AAAA,UACR,CAAC;AAAA,UACD;AAAA,UACA;AAAA,UACA;AAAA,QACF,EAAO,SAAI,cAAc,MAAM;AAAA,UAC7B;AAAA,QACF,EAAO;AAAA,UACL,MAAM,UAAU,CAAC;AAAA,UACjB,MAAM,OAAO,CAAC;AAAA,UACd,OAAO,IAAI,KAAK,MAAM,QAAQ;AAAA,YAC5B,MAAM,cAAc,KAAK,MAAM;AAAA,YAC/B,MAAM,cAAc,YAAY;AAAA,YAChC,IAAI,gBAAgB,OAAO,gBAAgB,MAAM;AAAA,cAC/C;AAAA,YACF;AAAA,YACA,MAAM,UAAU,YAAY,MAAM,CAAC;AAAA,YACnC,IAAI,gBAAgB,KAAK;AAAA,cACvB,QAAQ,KAAK,EAAE,SAAS,SAAS,WAAW,CAAC;AAAA,cAC7C;AAAA,YACF,EAAO,SAAI,gBAAgB,KAAK;AAAA,cAC9B,KAAK,KAAK,EAAE,SAAS,SAAS,WAAW,CAAC;AAAA,cAC1C;AAAA,YACF;AAAA,YACA;AAAA,UACF;AAAA,UACA,MAAM,YAAY,KAAK,IAAI,QAAQ,QAAQ,KAAK,MAAM;AAAA,UACtD,SAAS,IAAI,EAAE,IAAI,WAAW,KAAK;AAAA,YACjC,IAAI,IAAI,QAAQ,QAAQ;AAAA,cACtB,iBAAiB,KAAK;AAAA,gBACpB,SAAS,QAAQ,GAAG;AAAA,gBACpB,SAAS,QAAQ,GAAG;AAAA,gBACpB,OAAO,KAAK;AAAA,gBACZ,MAAM;AAAA,kBACJ,OAAO;AAAA,kBACP,YAAY,KAAK;AAAA,gBACnB;AAAA,gBACA,MAAM;AAAA,cACR,CAAC;AAAA,YACH,EAAO;AAAA,cACL,iBAAiB,KAAK;AAAA,gBACpB,SAAS;AAAA,gBACT,gBAAgB;AAAA,gBAChB,MAAM;AAAA,cACR,CAAC;AAAA;AAAA,YAEH,IAAI,IAAI,KAAK,QAAQ;AAAA,cACnB,kBAAkB,KAAK;AAAA,gBACrB,SAAS,KAAK,GAAG;AAAA,gBACjB,SAAS,KAAK,GAAG;AAAA,gBACjB,OAAO,KAAK;AAAA,gBACZ,MAAM;AAAA,kBACJ,OAAO;AAAA,kBACP,YAAY,KAAK;AAAA,gBACnB;AAAA,gBACA,MAAM;AAAA,cACR,CAAC;AAAA,YACH,EAAO;AAAA,cACL,kBAAkB,KAAK;AAAA,gBACrB,SAAS;AAAA,gBACT,gBAAgB;AAAA,gBAChB,MAAM;AAAA,cACR,CAAC;AAAA;AAAA,UAEL;AAAA;AAAA,MAEJ;AAAA,IACF;AAAA,IACA,MAAM,qBAAqB,KAAK,QAAQ,MAAM,KAAK,cAAc,UAAU,KAAK,cAAc;AAAA,IAC9F,MAAM,iBAAiB,iBAAiB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK;AAAA,CACtE;AAAA,IACG,MAAM,kBAAkB,kBAAkB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK;AAAA,CACxE;AAAA,IACG,MAAM,6BAA6B,KAAK,cAAc,UAAU,KAAK,cAAc,WAAW,KAAK,YAAY,KAAK;AAAA,IACpH,MAAM,mBAAmB,CAAC;AAAA,IAC1B,MAAM,qBAAqB,KAAK,6BAA6B,QAAQ,gBAAgB,KAAK,WAAW,gBAAgB;AAAA,IACrH,MAAM,sBAAsB,KAAK,6BAA6B,SAAS,iBAAiB,KAAK,WAAW,gBAAgB;AAAA,IACxH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM,qBAAqB,mBAAmB;AAAA,IAC9C,MAAM,sBAAsB,oBAAoB;AAAA,IAChD,MAAM,yBAAyB,8BAA8B,sBAAsB;AAAA,IACnF,IAAI,wBAAwB;AAAA,MAC1B,KAAK,uBAAuB;AAAA,MAC5B,KAAK,wBAAwB;AAAA,IAC/B;AAAA,IACA,MAAM,oBAAoB,sBAAsB,CAAC;AAAA,IACjD,IAAI,mBAAmB;AAAA,MACrB,MAAM,eAAe,mBAAmB;AAAA,MACxC,MAAM,gBAAgB,oBAAoB;AAAA,MAC1C,MAAM,cAAc,aAAa,eAAe,CAAC;AAAA,MACjD,MAAM,eAAe,cAAc,eAAe,CAAC;AAAA,MACnD,MAAM,mBAAmB,IAAI;AAAA,MAC7B,MAAM,oBAAoB,IAAI;AAAA,MAC9B,WAAW,eAAe,aAAa;AAAA,QACrC,iBAAiB,IAAI,cAAc,iBAAiB,IAAI,WAAW,KAAK,KAAK,CAAC;AAAA,MAChF;AAAA,MACA,WAAW,eAAe,cAAc;AAAA,QACtC,kBAAkB,IAAI,cAAc,kBAAkB,IAAI,WAAW,KAAK,KAAK,CAAC;AAAA,MAClF;AAAA,MACA,iBAAiB,CAAC;AAAA,MAClB,kBAAkB,CAAC;AAAA,MACnB,IAAI,gBAAgB;AAAA,MACpB,IAAI,iBAAiB;AAAA,MACrB,SAAS,IAAI,EAAE,IAAI,iBAAiB,QAAQ,KAAK;AAAA,QAC/C,MAAM,WAAW,iBAAiB;AAAA,QAClC,MAAM,YAAY,kBAAkB;AAAA,QACpC,MAAM,kBAAkB,iBAAiB,IAAI,CAAC,KAAK;AAAA,QACnD,MAAM,mBAAmB,kBAAkB,IAAI,CAAC,KAAK;AAAA,QACrD,IAAI,gBAAgB,gBAAgB;AAAA,UAClC,MAAM,MAAM,iBAAiB;AAAA,UAC7B,SAAS,IAAI,EAAE,IAAI,KAAK,KAAK;AAAA,YAC3B,eAAe,KAAK,EAAE,SAAS,IAAI,gBAAgB,MAAM,MAAM,QAAQ,CAAC;AAAA,UAC1E;AAAA,UACA,iBAAiB;AAAA,QACnB,EAAO,SAAI,iBAAiB,eAAe;AAAA,UACzC,MAAM,MAAM,gBAAgB;AAAA,UAC5B,SAAS,IAAI,EAAE,IAAI,KAAK,KAAK;AAAA,YAC3B,gBAAgB,KAAK,EAAE,SAAS,IAAI,gBAAgB,MAAM,MAAM,QAAQ,CAAC;AAAA,UAC3E;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,eAAe,KAAK,QAAQ;AAAA,QAC5B,gBAAgB,KAAK,SAAS;AAAA,QAC9B,iBAAiB;AAAA,QACjB,kBAAkB;AAAA,MACpB;AAAA,MACA,IAAI,gBAAgB,gBAAgB;AAAA,QAClC,MAAM,MAAM,iBAAiB;AAAA,QAC7B,SAAS,IAAI,EAAE,IAAI,KAAK,KAAK;AAAA,UAC3B,eAAe,KAAK,EAAE,SAAS,IAAI,gBAAgB,MAAM,MAAM,QAAQ,CAAC;AAAA,QAC1E;AAAA,MACF,EAAO,SAAI,iBAAiB,eAAe;AAAA,QACzC,MAAM,MAAM,gBAAgB;AAAA,QAC5B,SAAS,IAAI,EAAE,IAAI,KAAK,KAAK;AAAA,UAC3B,gBAAgB,KAAK,EAAE,SAAS,IAAI,gBAAgB,MAAM,MAAM,QAAQ,CAAC;AAAA,QAC3E;AAAA,MACF;AAAA,IACF,EAAO;AAAA,MACL,iBAAiB;AAAA,MACjB,kBAAkB;AAAA;AAAA,IAEpB,MAAM,iBAAiB,IAAI;AAAA,IAC3B,MAAM,kBAAkB,IAAI;AAAA,IAC5B,MAAM,gBAAgB,IAAI;AAAA,IAC1B,MAAM,iBAAiB,IAAI;AAAA,IAC3B,MAAM,sBAAsB,IAAI;AAAA,IAChC,MAAM,uBAAuB,IAAI;AAAA,IACjC,MAAM,kBAAkB,IAAI;AAAA,IAC5B,MAAM,mBAAmB,IAAI;AAAA,IAC7B,eAAe,QAAQ,CAAC,MAAM,UAAU;AAAA,MACtC,IAAI,KAAK,YAAY,WAAW;AAAA,QAC9B,gBAAgB,IAAI,OAAO,KAAK,OAAO;AAAA,MACzC;AAAA,MACA,IAAI,KAAK,gBAAgB;AAAA,QACvB,oBAAoB,IAAI,KAAK;AAAA,MAC/B;AAAA,MACA,IAAI,KAAK,SAAS,UAAU;AAAA,QAC1B,MAAM,SAAS;AAAA,UACb,QAAQ,KAAK;AAAA,QACf;AAAA,QACA,IAAI,KAAK,mBAAmB;AAAA,UAC1B,OAAO,UAAU,KAAK;AAAA,QACxB,EAAO;AAAA,UACL,OAAO,UAAU,KAAK;AAAA;AAAA,QAExB,eAAe,IAAI,OAAO,MAAM;AAAA,MAClC,EAAO,SAAI,KAAK,SAAS,WAAW;AAAA,QAClC,MAAM,SAAS;AAAA,UACb,QAAQ,KAAK;AAAA,QACf;AAAA,QACA,IAAI,KAAK,mBAAmB;AAAA,UAC1B,OAAO,UAAU,KAAK;AAAA,QACxB,EAAO;AAAA,UACL,OAAO,UAAU,KAAK;AAAA;AAAA,QAExB,eAAe,IAAI,OAAO,MAAM;AAAA,MAClC;AAAA,MACA,IAAI,KAAK,MAAM;AAAA,QACb,cAAc,IAAI,OAAO,KAAK,IAAI;AAAA,MACpC;AAAA,KACD;AAAA,IACD,gBAAgB,QAAQ,CAAC,MAAM,UAAU;AAAA,MACvC,IAAI,KAAK,YAAY,WAAW;AAAA,QAC9B,iBAAiB,IAAI,OAAO,KAAK,OAAO;AAAA,MAC1C;AAAA,MACA,IAAI,KAAK,gBAAgB;AAAA,QACvB,qBAAqB,IAAI,KAAK;AAAA,MAChC;AAAA,MACA,IAAI,KAAK,SAAS,OAAO;AAAA,QACvB,MAAM,SAAS;AAAA,UACb,QAAQ,KAAK;AAAA,QACf;AAAA,QACA,IAAI,KAAK,iBAAiB;AAAA,UACxB,OAAO,UAAU,KAAK;AAAA,QACxB,EAAO;AAAA,UACL,OAAO,UAAU,KAAK;AAAA;AAAA,QAExB,gBAAgB,IAAI,OAAO,MAAM;AAAA,MACnC,EAAO,SAAI,KAAK,SAAS,WAAW;AAAA,QAClC,MAAM,SAAS;AAAA,UACb,QAAQ,KAAK;AAAA,QACf;AAAA,QACA,IAAI,KAAK,mBAAmB;AAAA,UAC1B,OAAO,UAAU,KAAK;AAAA,QACxB,EAAO;AAAA,UACL,OAAO,UAAU,KAAK;AAAA;AAAA,QAExB,gBAAgB,IAAI,OAAO,MAAM;AAAA,MACnC;AAAA,MACA,IAAI,KAAK,MAAM;AAAA,QACb,eAAe,IAAI,OAAO,KAAK,IAAI;AAAA,MACrC;AAAA,KACD;AAAA,IACD,MAAM,mBAAmB,eAAe,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK;AAAA,CACtE;AAAA,IACG,MAAM,oBAAoB,gBAAgB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK;AAAA,CACxE;AAAA,IACG,mBAAmB,UAAU;AAAA,IAC7B,oBAAoB,UAAU;AAAA,IAC9B,KAAK,mBAAmB,QAAQ,oBAAoB,gBAAgB,eAAe,iBAAiB,qBAAqB,KAAK;AAAA,IAC9H,KAAK,mBAAmB,SAAS,qBAAqB,iBAAiB,gBAAgB,kBAAkB,sBAAsB,KAAK;AAAA;AAAA,MAElI,IAAI,GAAG;AAAA,IACT,OAAO,KAAK;AAAA;AAAA,MAEV,IAAI,CAAC,OAAO;AAAA,IACd,IAAI,KAAK,UAAU,OAAO;AAAA,MACxB,KAAK,QAAQ;AAAA,MACb,KAAK,uBAAuB;AAAA,MAC5B,KAAK,UAAU;AAAA,MACf,KAAK,YAAY;AAAA,IACnB;AAAA;AAAA,MAEE,IAAI,GAAG;AAAA,IACT,OAAO,KAAK;AAAA;AAAA,MAEV,IAAI,CAAC,OAAO;AAAA,IACd,IAAI,KAAK,UAAU,OAAO;AAAA,MACxB,KAAK,QAAQ;AAAA,MACb,KAAK,gBAAgB,UAAU,UAAU,QAAQ;AAAA,MACjD,KAAK,UAAU;AAAA,IACjB;AAAA;AAAA,MAEE,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,QAAQ,CAAC,OAAO;AAAA,IAClB,IAAI,KAAK,cAAc,OAAO;AAAA,MAC5B,KAAK,YAAY;AAAA,MACjB,KAAK,YAAY;AAAA,IACnB;AAAA;AAAA,MAEE,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,OAAO;AAAA,IACrB,IAAI,KAAK,iBAAiB,OAAO;AAAA,MAC/B,KAAK,eAAe;AAAA,MACpB,KAAK,YAAY;AAAA,IACnB;AAAA;AAAA,MAEE,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,QAAQ,CAAC,OAAO;AAAA,IAClB,IAAI,KAAK,cAAc,OAAO;AAAA,MAC5B,KAAK,YAAY;AAAA,MACjB,IAAI,KAAK,UAAU,aAAa,KAAK,oBAAoB;AAAA,QACvD,KAAK,mBAAmB,WAAW,SAAS;AAAA,MAC9C,EAAO,SAAI,KAAK,UAAU,SAAS;AAAA,QACjC,KAAK,eAAe;AAAA,MACtB;AAAA,IACF;AAAA;AAAA,MAEE,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,MAEV,eAAe,CAAC,OAAO;AAAA,IACzB,IAAI,KAAK,qBAAqB,OAAO;AAAA,MACnC,KAAK,mBAAmB;AAAA,MACxB,IAAI,KAAK,UAAU;AAAA,QACjB,KAAK,SAAS,kBAAkB;AAAA,MAClC;AAAA,MACA,IAAI,KAAK,WAAW;AAAA,QAClB,KAAK,UAAU,kBAAkB;AAAA,MACnC;AAAA,IACF;AAAA;AAAA,MAEE,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,OAAO,CAAC,OAAO;AAAA,IACjB,MAAM,SAAS,WAAW,KAAK;AAAA,IAC/B,IAAI,KAAK,aAAa,QAAQ;AAAA,MAC5B,KAAK,WAAW;AAAA,MAChB,KAAK,YAAY;AAAA,IACnB;AAAA;AAAA,MAEE,SAAS,GAAG;AAAA,IACd,OAAO,KAAK;AAAA;AAAA,MAEV,SAAS,CAAC,OAAO;AAAA,IACnB,MAAM,SAAS,WAAW,KAAK;AAAA,IAC/B,IAAI,KAAK,eAAe,QAAQ;AAAA,MAC9B,KAAK,aAAa;AAAA,MAClB,KAAK,YAAY;AAAA,IACnB;AAAA;AAAA,MAEE,SAAS,GAAG;AAAA,IACd,OAAO,KAAK;AAAA;AAAA,MAEV,SAAS,CAAC,OAAO;AAAA,IACnB,MAAM,SAAS,WAAW,KAAK;AAAA,IAC/B,IAAI,KAAK,eAAe,QAAQ;AAAA,MAC9B,KAAK,aAAa;AAAA,MAClB,KAAK,YAAY;AAAA,IACnB;AAAA;AAAA,MAEE,cAAc,GAAG;AAAA,IACnB,OAAO,KAAK;AAAA;AAAA,MAEV,cAAc,CAAC,OAAO;AAAA,IACxB,MAAM,SAAS,WAAW,KAAK;AAAA,IAC/B,IAAI,KAAK,oBAAoB,QAAQ;AAAA,MACnC,KAAK,kBAAkB;AAAA,MACvB,KAAK,YAAY;AAAA,IACnB;AAAA;AAAA,MAEE,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK;AAAA;AAAA,MAEV,gBAAgB,CAAC,OAAO;AAAA,IAC1B,MAAM,SAAS,WAAW,KAAK;AAAA,IAC/B,IAAI,KAAK,sBAAsB,QAAQ;AAAA,MACrC,KAAK,oBAAoB;AAAA,MACzB,KAAK,YAAY;AAAA,IACnB;AAAA;AAAA,MAEE,iBAAiB,GAAG;AAAA,IACtB,OAAO,KAAK;AAAA;AAAA,MAEV,iBAAiB,CAAC,OAAO;AAAA,IAC3B,MAAM,SAAS,WAAW,KAAK;AAAA,IAC/B,IAAI,KAAK,uBAAuB,QAAQ;AAAA,MACtC,KAAK,qBAAqB;AAAA,MAC1B,KAAK,YAAY;AAAA,IACnB;AAAA;AAAA,MAEE,mBAAmB,GAAG;AAAA,IACxB,OAAO,KAAK;AAAA;AAAA,MAEV,mBAAmB,CAAC,OAAO;AAAA,IAC7B,MAAM,SAAS,WAAW,KAAK;AAAA,IAC/B,IAAI,KAAK,yBAAyB,QAAQ;AAAA,MACxC,KAAK,uBAAuB;AAAA,MAC5B,KAAK,YAAY;AAAA,IACnB;AAAA;AAAA,MAEE,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,MAEV,YAAY,CAAC,OAAO;AAAA,IACtB,MAAM,SAAS,WAAW,KAAK;AAAA,IAC/B,IAAI,KAAK,kBAAkB,QAAQ;AAAA,MACjC,KAAK,gBAAgB;AAAA,MACrB,KAAK,YAAY;AAAA,IACnB;AAAA;AAAA,MAEE,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,MAEV,YAAY,CAAC,OAAO;AAAA,IACtB,MAAM,SAAS,WAAW,KAAK;AAAA,IAC/B,IAAI,KAAK,kBAAkB,QAAQ;AAAA,MACjC,KAAK,gBAAgB;AAAA,MACrB,KAAK,YAAY;AAAA,IACnB;AAAA;AAAA,MAEE,cAAc,GAAG;AAAA,IACnB,OAAO,KAAK;AAAA;AAAA,MAEV,cAAc,CAAC,OAAO;AAAA,IACxB,MAAM,SAAS,QAAQ,WAAW,KAAK,IAAI;AAAA,IAC3C,IAAI,KAAK,oBAAoB,QAAQ;AAAA,MACnC,KAAK,kBAAkB;AAAA,MACvB,KAAK,YAAY;AAAA,IACnB;AAAA;AAAA,MAEE,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK;AAAA;AAAA,MAEV,gBAAgB,CAAC,OAAO;AAAA,IAC1B,MAAM,SAAS,QAAQ,WAAW,KAAK,IAAI;AAAA,IAC3C,IAAI,KAAK,sBAAsB,QAAQ;AAAA,MACrC,KAAK,oBAAoB;AAAA,MACzB,KAAK,YAAY;AAAA,IACnB;AAAA;AAAA,MAEE,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK;AAAA;AAAA,MAEV,gBAAgB,CAAC,OAAO;AAAA,IAC1B,MAAM,SAAS,QAAQ,WAAW,KAAK,IAAI;AAAA,IAC3C,IAAI,KAAK,sBAAsB,QAAQ;AAAA,MACrC,KAAK,oBAAoB;AAAA,MACzB,KAAK,YAAY;AAAA,IACnB;AAAA;AAAA,MAEE,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,OAAO;AAAA,IACrB,MAAM,SAAS,QAAQ,WAAW,KAAK,IAAI;AAAA,IAC3C,IAAI,KAAK,iBAAiB,QAAQ;AAAA,MAChC,KAAK,eAAe;AAAA,MACpB,IAAI,KAAK,oBAAoB;AAAA,QAC3B,KAAK,mBAAmB,cAAc;AAAA,MACxC;AAAA,MACA,IAAI,KAAK,qBAAqB;AAAA,QAC5B,KAAK,oBAAoB,cAAc;AAAA,MACzC;AAAA,IACF;AAAA;AAAA,MAEE,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,OAAO;AAAA,IACrB,MAAM,SAAS,QAAQ,WAAW,KAAK,IAAI;AAAA,IAC3C,IAAI,KAAK,iBAAiB,QAAQ;AAAA,MAChC,KAAK,eAAe;AAAA,MACpB,IAAI,KAAK,oBAAoB;AAAA,QAC3B,KAAK,mBAAmB,cAAc;AAAA,MACxC;AAAA,MACA,IAAI,KAAK,qBAAqB;AAAA,QAC5B,KAAK,oBAAoB,cAAc;AAAA,MACzC;AAAA,IACF;AAAA;AAAA,MAEE,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,OAAO,CAAC,OAAO;AAAA,IACjB,IAAI,KAAK,aAAa,OAAO;AAAA,MAC3B,KAAK,WAAW;AAAA,MAChB,KAAK,YAAY;AAAA,IACnB;AAAA;AAAA,MAEE,EAAE,GAAG;AAAA,IACP,OAAO,KAAK;AAAA;AAAA,MAEV,EAAE,CAAC,OAAO;AAAA,IACZ,MAAM,SAAS,QAAQ,WAAW,KAAK,IAAI;AAAA,IAC3C,IAAI,KAAK,QAAQ,QAAQ;AAAA,MACvB,KAAK,MAAM;AAAA,MACX,IAAI,KAAK,oBAAoB;AAAA,QAC3B,KAAK,mBAAmB,KAAK;AAAA,MAC/B;AAAA,MACA,IAAI,KAAK,qBAAqB;AAAA,QAC5B,KAAK,oBAAoB,KAAK;AAAA,MAChC;AAAA,IACF;AAAA;AAAA,EAEF,YAAY,CAAC,MAAM,OAAO;AAAA,IACxB,KAAK,UAAU,aAAa,MAAM,KAAK;AAAA,IACvC,KAAK,WAAW,aAAa,MAAM,KAAK;AAAA;AAAA,EAE1C,cAAc,CAAC,MAAM;AAAA,IACnB,KAAK,UAAU,eAAe,IAAI;AAAA,IAClC,KAAK,WAAW,eAAe,IAAI;AAAA;AAAA,EAErC,aAAa,CAAC,YAAY;AAAA,IACxB,KAAK,UAAU,cAAc,UAAU;AAAA,IACvC,KAAK,WAAW,cAAc,UAAU;AAAA;AAAA,EAE1C,kBAAkB,GAAG;AAAA,IACnB,KAAK,UAAU,mBAAmB;AAAA,IAClC,KAAK,WAAW,mBAAmB;AAAA;AAAA,EAErC,cAAc,CAAC,WAAW,SAAS,OAAO;AAAA,IACxC,KAAK,UAAU,eAAe,WAAW,SAAS,KAAK;AAAA,IACvD,KAAK,WAAW,eAAe,WAAW,SAAS,KAAK;AAAA;AAAA,EAE1D,mBAAmB,CAAC,WAAW,SAAS;AAAA,IACtC,KAAK,UAAU,oBAAoB,WAAW,OAAO;AAAA,IACrD,KAAK,WAAW,oBAAoB,WAAW,OAAO;AAAA;AAE1D;AAAA;AAEA,MAAM,6BAA6B,WAAW;AAAA,EAC5C,aAAa;AAAA,EACb,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,qBAAqB;AAAA,EACrB;AAAA,EACA;AAAA,EACA,wBAAwB;AAAA,EACxB,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,yBAAyB;AAAA,EACzB,eAAe;AAAA,EACf,2BAA2B;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,IAChB,WAAW,KAAK,WAAW,GAAG,GAAG,GAAG,CAAC;AAAA,IACrC,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,cAAc;AAAA,IACd,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,KAAK,WAAW,GAAG,GAAG,GAAG,CAAC;AAAA,IACvC,aAAa;AAAA,MACX,OAAO;AAAA,MACP,UAAU;AAAA,IACZ;AAAA,IACA,cAAc;AAAA,IACd,mBAAmB;AAAA,EACrB;AAAA,EACA,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,KAAK,OAAO;AAAA,IAClB,KAAK,aAAa,WAAW,QAAQ,aAAa,KAAK,gBAAgB,SAAS;AAAA,IAChF,KAAK,mBAAmB,WAAW,QAAQ,mBAAmB,KAAK,gBAAgB,eAAe;AAAA,IAClG,KAAK,qBAAqB,QAAQ,cAAc,KAAK,gBAAgB;AAAA,IACrE,KAAK,eAAe,QAAQ,cAAc,WAAW,QAAQ,WAAW,IAAI,KAAK,gBAAgB;AAAA,IACjG,KAAK,eAAe,QAAQ,cAAc,WAAW,QAAQ,WAAW,IAAI,KAAK,gBAAgB;AAAA,IACjG,KAAK,aAAa,QAAQ,cAAc,KAAK,gBAAgB;AAAA,IAC7D,KAAK,YAAY,QAAQ,YAAY,KAAK,gBAAgB;AAAA,IAC1D,KAAK,gBAAgB,QAAQ,gBAAgB,KAAK,gBAAgB;AAAA,IAClE,KAAK,eAAe,QAAQ,eAAe,KAAK,gBAAgB;AAAA,IAChE,KAAK,cAAc,QAAQ,cAAc,KAAK,gBAAgB;AAAA,IAC9D,KAAK,eAAe,WAAW,QAAQ,eAAe,KAAK,gBAAgB,WAAW;AAAA,IACtF,KAAK,eAAe,QAAQ,eAAe,KAAK,gBAAgB;AAAA,IAChE,KAAK,gBAAgB,QAAQ,gBAAgB,KAAK,gBAAgB;AAAA,IAClE,KAAK,qBAAqB,QAAQ,oBAAoB,WAAW,QAAQ,iBAAiB,IAAI,KAAK,gBAAgB;AAAA,IACnH,KAAK,aAAa,WAAW,OAAO,KAAK,KAAK,WAAW;AAAA,IACzD,KAAK,aAAa,WAAW,OAAO,KAAK,YAAY,KAAK,SAAS,IAAI,KAAK,UAAU,EAAE;AAAA,IACxF,KAAK,WAAW,YAAY,KAAK,SAAS;AAAA,IAC1C,KAAK,WAAW,gBAAgB,KAAK,aAAa;AAAA,IAClD,KAAK,WAAW,aAAa,KAAK,UAAU;AAAA,IAC5C,KAAK,WAAW,aAAa,KAAK,gBAAgB;AAAA,IAClD,KAAK,WAAW,qBAAqB,KAAK,kBAAkB;AAAA,IAC5D,IAAI,QAAQ,aAAa;AAAA,MACvB,KAAK,WAAW,eAAe,QAAQ,WAAW;AAAA,IACpD;AAAA,IACA,IAAI,KAAK,kBAAkB,WAAW;AAAA,MACpC,KAAK,WAAW,gBAAgB,KAAK,aAAa;AAAA,IACpD;AAAA,IACA,IAAI,KAAK,uBAAuB,WAAW;AAAA,MACzC,KAAK,WAAW,qBAAqB,KAAK,kBAAkB;AAAA,IAC9D;AAAA,IACA,KAAK,iBAAiB;AAAA,IACtB,KAAK,oBAAoB,OAAO;AAAA;AAAA,MAE9B,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK,WAAW,mBAAmB;AAAA;AAAA,EAE5C,mBAAmB,CAAC,SAAS;AAAA,IAC3B,KAAK,wBAAwB,QAAQ;AAAA,IACrC,KAAK,yBAAyB,QAAQ;AAAA,IACtC,KAAK,WAAW,GAAG,kBAAkB,MAAM;AAAA,MACzC,IAAI,KAAK,uBAAuB;AAAA,QAC9B,MAAM,SAAS,KAAK,WAAW,kBAAkB;AAAA,QACjD,KAAK,sBAAsB;AAAA,UACzB,MAAM,OAAO;AAAA,UACb,cAAc,OAAO;AAAA,QACvB,CAAC;AAAA,MACH;AAAA,KACD;AAAA,IACD,KAAK,WAAW,GAAG,mBAAmB,MAAM;AAAA,MAC1C,KAAK,SAAS,UAAU;AAAA,MACxB,KAAK,cAAc;AAAA,MACnB,KAAK,KAAK,kBAAkB;AAAA,MAC5B,IAAI,KAAK,wBAAwB;AAAA,QAC/B,KAAK,uBAAuB,CAAC,CAAC;AAAA,MAChC;AAAA,KACD;AAAA;AAAA,MAEC,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,WAAW,aAAa;AAAA;AAAA,MAElC,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK,WAAW,oBAAoB;AAAA;AAAA,MAEzC,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,WAAW,YAAY,EAAE;AAAA;AAAA,MAEnC,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,WAAW,QAAQ;AAAA;AAAA,MAE7B,aAAa,GAAG;AAAA,IAClB,OAAO,KAAK,WAAW,kBAAkB;AAAA;AAAA,MAEvC,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK,WAAW,gBAAgB;AAAA;AAAA,MAErC,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK,WAAW,gBAAgB,EAAE;AAAA;AAAA,MAEvC,YAAY,CAAC,QAAQ;AAAA,IACvB,KAAK,WAAW,kBAAkB,MAAM;AAAA,IACxC,KAAK,cAAc;AAAA;AAAA,MAEjB,SAAS,GAAG;AAAA,IACd,OAAO,KAAK;AAAA;AAAA,MAEV,SAAS,CAAC,OAAO;AAAA,IACnB,MAAM,WAAW,WAAW,SAAS,KAAK,gBAAgB,SAAS;AAAA,IACnE,IAAI,KAAK,eAAe,UAAU;AAAA,MAChC,KAAK,aAAa;AAAA,MAClB,KAAK,WAAW,aAAa,QAAQ;AAAA,MACrC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,OAAO;AAAA,IACrB,MAAM,WAAW,QAAQ,WAAW,KAAK,IAAI,KAAK,gBAAgB;AAAA,IAClE,IAAI,KAAK,iBAAiB,UAAU;AAAA,MAClC,KAAK,eAAe;AAAA,MACpB,IAAI,KAAK,oBAAoB;AAAA,QAC3B,KAAK,qBAAqB,KAAK,kBAAkB;AAAA,MACnD;AAAA,MACA,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,OAAO;AAAA,IACrB,MAAM,WAAW,QAAQ,WAAW,KAAK,IAAI,KAAK,gBAAgB;AAAA,IAClE,IAAI,KAAK,iBAAiB,UAAU;AAAA,MAClC,KAAK,eAAe;AAAA,MACpB,IAAI,KAAK,oBAAoB;AAAA,QAC3B,KAAK,qBAAqB,KAAK,kBAAkB;AAAA,MACnD;AAAA,MACA,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,MAEV,eAAe,CAAC,OAAO;AAAA,IACzB,MAAM,WAAW,WAAW,SAAS,KAAK,gBAAgB,eAAe;AAAA,IACzE,IAAI,KAAK,qBAAqB,UAAU;AAAA,MACtC,KAAK,mBAAmB;AAAA,MACxB,KAAK,WAAW,aAAa,QAAQ;AAAA,MACrC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,UAAU,GAAG;AAAA,IACf,OAAO,KAAK;AAAA;AAAA,MAEV,UAAU,CAAC,OAAO;AAAA,IACpB,IAAI,KAAK,uBAAuB,OAAO;AAAA,MACrC,KAAK,qBAAqB;AAAA,MAC1B,KAAK,WAAW,qBAAqB,KAAK;AAAA,MAC1C,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,QAAQ,CAAC,OAAO;AAAA,IAClB,IAAI,KAAK,cAAc,OAAO;AAAA,MAC5B,KAAK,YAAY;AAAA,MACjB,KAAK,WAAW,YAAY,KAAK;AAAA,MACjC,KAAK,SAAS,UAAU;AAAA,MACxB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,UAAU,GAAG;AAAA,IACf,OAAO,KAAK;AAAA;AAAA,MAEV,UAAU,CAAC,OAAO;AAAA,IACpB,IAAI,KAAK,gBAAgB,OAAO;AAAA,MAC9B,KAAK,cAAc;AAAA,MACnB,IAAI,CAAC,SAAS,KAAK,UAAU;AAAA,QAC3B,KAAK,KAAK,kBAAkB,GAAG,GAAG,KAAK;AAAA,MACzC;AAAA,MACA,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,OAAO;AAAA,IACrB,MAAM,WAAW,WAAW,KAAK;AAAA,IACjC,IAAI,KAAK,iBAAiB,UAAU;AAAA,MAClC,KAAK,eAAe;AAAA,MACpB,IAAI,KAAK,UAAU;AAAA,QACjB,KAAK,cAAc;AAAA,MACrB;AAAA,IACF;AAAA;AAAA,MAEE,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,OAAO;AAAA,IACrB,MAAM,WAAW;AAAA,IACjB,IAAI,KAAK,YAAY,UAAU,SAAS,SAAS,KAAK,YAAY,aAAa,SAAS,UAAU;AAAA,MAChG,KAAK,eAAe;AAAA,MACpB,IAAI,KAAK,UAAU;AAAA,QACjB,KAAK,cAAc;AAAA,MACrB;AAAA,IACF;AAAA;AAAA,MAEE,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,MAEV,YAAY,CAAC,OAAO;AAAA,IACtB,IAAI,KAAK,kBAAkB,OAAO;AAAA,MAChC,KAAK,gBAAgB;AAAA,MACrB,IAAI,UAAU,WAAW;AAAA,QACvB,KAAK,WAAW,gBAAgB,KAAK;AAAA,MACvC;AAAA,MACA,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,iBAAiB,GAAG;AAAA,IACtB,OAAO,KAAK;AAAA;AAAA,MAEV,iBAAiB,CAAC,OAAO;AAAA,IAC3B,MAAM,WAAW,QAAQ,WAAW,KAAK,IAAI;AAAA,IAC7C,IAAI,KAAK,uBAAuB,UAAU;AAAA,MACxC,KAAK,qBAAqB;AAAA,MAC1B,IAAI,aAAa,WAAW;AAAA,QAC1B,KAAK,WAAW,qBAAqB,QAAQ;AAAA,MAC/C;AAAA,MACA,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,OAAO;AAAA,IACrB,KAAK,eAAe,KAAK,IAAI,GAAG,KAAK;AAAA;AAAA,EAEvC,YAAY,CAAC,OAAO;AAAA,IAClB,IAAI,MAAM,SAAS,UAAU;AAAA,MAC3B,KAAK,aAAa,KAAK;AAAA,IACzB;AAAA;AAAA,EAEF,YAAY,CAAC,OAAO;AAAA,IAClB,IAAI,CAAC,MAAM;AAAA,MACT;AAAA,IACF,QAAQ,WAAW,UAAU,MAAM;AAAA,IACnC,MAAM,WAAW,KAAK,WAAW,YAAY;AAAA,IAC7C,IAAI,cAAc,MAAM;AAAA,MACtB,MAAM,aAAa,KAAK,IAAI,GAAG,SAAS,UAAU,KAAK;AAAA,MACvD,KAAK,WAAW,YAAY,SAAS,SAAS,YAAY,SAAS,OAAO,SAAS,QAAQ,IAAI;AAAA,MAC/F,KAAK,cAAc;AAAA,IACrB,EAAO,SAAI,cAAc,QAAQ;AAAA,MAC/B,MAAM,oBAAoB,KAAK,WAAW,yBAAyB;AAAA,MACnE,MAAM,aAAa,KAAK,IAAI,GAAG,oBAAoB,SAAS,MAAM;AAAA,MAClE,MAAM,aAAa,KAAK,IAAI,SAAS,UAAU,OAAO,UAAU;AAAA,MAChE,KAAK,WAAW,YAAY,SAAS,SAAS,YAAY,SAAS,OAAO,SAAS,QAAQ,IAAI;AAAA,MAC/F,KAAK,cAAc;AAAA,IACrB;AAAA,IACA,IAAI,KAAK,cAAc,QAAQ;AAAA,MAC7B,IAAI,cAAc,QAAQ;AAAA,QACxB,MAAM,aAAa,KAAK,IAAI,GAAG,SAAS,UAAU,KAAK;AAAA,QACvD,KAAK,WAAW,YAAY,YAAY,SAAS,SAAS,SAAS,OAAO,SAAS,QAAQ,IAAI;AAAA,QAC/F,KAAK,cAAc;AAAA,MACrB,EAAO,SAAI,cAAc,SAAS;AAAA,QAChC,MAAM,aAAa,SAAS,UAAU;AAAA,QACtC,KAAK,WAAW,YAAY,YAAY,SAAS,SAAS,SAAS,OAAO,SAAS,QAAQ,IAAI;AAAA,QAC/F,KAAK,cAAc;AAAA,MACrB;AAAA,IACF;AAAA;AAAA,EAEF,QAAQ,CAAC,OAAO,QAAQ;AAAA,IACtB,KAAK,WAAW,gBAAgB,OAAO,MAAM;AAAA;AAAA,EAE/C,qBAAqB,GAAG;AAAA,IACtB,IAAI,KAAK,oBAAoB;AAAA,MAC3B,OAAO,KAAK,qBAAqB,KAAK,kBAAkB;AAAA,IAC1D;AAAA,IACA,OAAO;AAAA;AAAA,EAET,oBAAoB,CAAC,gBAAgB;AAAA,IACnC,IAAI,CAAC,gBAAgB,UAAU;AAAA,MAC7B,KAAK,WAAW,oBAAoB;AAAA,MACpC,OAAO;AAAA,IACT;AAAA,IACA,OAAO,KAAK,WAAW,kBAAkB,eAAe,SAAS,eAAe,SAAS,eAAe,QAAQ,eAAe,QAAQ,KAAK,cAAc,KAAK,cAAc,KAAK;AAAA;AAAA,EAEpL,oBAAoB,CAAC,GAAG,GAAG;AAAA,IACzB,IAAI,CAAC,KAAK;AAAA,MACR,OAAO;AAAA,IACT,MAAM,SAAS,IAAI,KAAK;AAAA,IACxB,MAAM,SAAS,IAAI,KAAK;AAAA,IACxB,OAAO,UAAU,KAAK,SAAS,KAAK,SAAS,UAAU,KAAK,SAAS,KAAK;AAAA;AAAA,EAE5E,kBAAkB,CAAC,WAAW;AAAA,IAC5B,MAAM,iBAAiB,8BAA8B,WAAW,KAAK,GAAG,KAAK,CAAC;AAAA,IAC9E,KAAK,qBAAqB;AAAA,IAC1B,MAAM,eAAe;AAAA,IACrB,MAAM,eAAe,KAAK;AAAA,IAC1B,IAAI;AAAA,IACJ,IAAI,CAAC,gBAAgB,UAAU;AAAA,MAC7B,KAAK,2BAA2B;AAAA,MAChC,KAAK,WAAW,oBAAoB;AAAA,MACpC,UAAU;AAAA,IACZ,EAAO,SAAI,WAAW,SAAS;AAAA,MAC7B,UAAU,KAAK,WAAW,kBAAkB,eAAe,SAAS,eAAe,SAAS,eAAe,QAAQ,eAAe,QAAQ,KAAK,cAAc,KAAK,cAAc,cAAc,YAAY;AAAA,IAC5M,EAAO;AAAA,MACL,UAAU,KAAK,WAAW,qBAAqB,eAAe,SAAS,eAAe,SAAS,eAAe,QAAQ,eAAe,QAAQ,KAAK,cAAc,KAAK,cAAc,cAAc,YAAY;AAAA;AAAA,IAE/M,IAAI,WAAW,gBAAgB,YAAY,WAAW,YAAY;AAAA,MAChE,MAAM,WAAW,KAAK,WAAW,YAAY;AAAA,MAC7C,MAAM,SAAS,eAAe;AAAA,MAC9B,MAAM,eAAe,KAAK,IAAI,GAAG,KAAK,MAAM,SAAS,SAAS,KAAK,aAAa,CAAC;AAAA,MACjF,IAAI,SAAS,cAAc;AAAA,QACzB,KAAK,sBAAsB,CAAC,KAAK;AAAA,MACnC,EAAO,SAAI,UAAU,SAAS,SAAS,cAAc;AAAA,QACnD,KAAK,sBAAsB,KAAK;AAAA,MAClC,EAAO;AAAA,QACL,KAAK,sBAAsB;AAAA;AAAA,IAE/B,EAAO;AAAA,MACL,KAAK,2BAA2B;AAAA,MAChC,KAAK,sBAAsB;AAAA,MAC3B,KAAK,yBAAyB;AAAA;AAAA,IAEhC,IAAI,SAAS;AAAA,MACX,KAAK,cAAc;AAAA,IACrB;AAAA,IACA,OAAO,KAAK,aAAa;AAAA;AAAA,EAE3B,QAAQ,CAAC,WAAW;AAAA,IAClB,MAAM,SAAS,SAAS;AAAA,IACxB,IAAI,KAAK,wBAAwB,KAAK,KAAK,aAAa,GAAG;AAAA,MACzD,MAAM,eAAe,YAAY;AAAA,MACjC,KAAK,0BAA0B,KAAK,sBAAsB;AAAA,MAC1D,MAAM,gBAAgB,KAAK,MAAM,KAAK,IAAI,KAAK,sBAAsB,CAAC;AAAA,MACtE,IAAI,gBAAgB,GAAG;AAAA,QACrB,MAAM,YAAY,KAAK,sBAAsB,IAAI,IAAI;AAAA,QACrD,MAAM,WAAW,KAAK,WAAW,YAAY;AAAA,QAC7C,MAAM,oBAAoB,KAAK,WAAW,yBAAyB;AAAA,QACnE,MAAM,aAAa,KAAK,IAAI,GAAG,oBAAoB,SAAS,MAAM;AAAA,QAClE,MAAM,aAAa,KAAK,IAAI,GAAG,KAAK,IAAI,SAAS,UAAU,YAAY,eAAe,UAAU,CAAC;AAAA,QACjG,IAAI,eAAe,SAAS,SAAS;AAAA,UACnC,KAAK,WAAW,YAAY,SAAS,SAAS,YAAY,SAAS,OAAO,SAAS,QAAQ,KAAK;AAAA,UAChG,KAAK,KAAK,uBAAuB;AAAA,QACnC;AAAA,QACA,KAAK,0BAA0B,YAAY;AAAA,MAC7C;AAAA,IACF;AAAA;AAAA,EAEF,eAAe,GAAG;AAAA,IAChB,OAAO,KAAK,WAAW,gBAAgB;AAAA;AAAA,EAEzC,YAAY,GAAG;AAAA,IACb,OAAO,KAAK,WAAW,aAAa;AAAA;AAAA,EAEtC,YAAY,GAAG;AAAA,IACb,OAAO,KAAK,WAAW,aAAa;AAAA;AAAA,EAEtC,gBAAgB,GAAG;AAAA,IACjB,MAAM,cAAc,CAAC,OAAO,WAAW,QAAQ,eAAe;AAAA,MAC5D,IAAI;AAAA,MACJ,IAAI,cAAc,YAAY,aAAa,MAAM,KAAK,GAAG;AAAA,QACvD,iBAAiB;AAAA,MACnB,EAAO;AAAA,QACL,iBAAiB;AAAA;AAAA,MAEnB,MAAM,kBAAkB,MAAM,MAAM,IAAI,IAAI;AAAA,MAC5C,MAAM,gBAAgB,KAAK,WAAW,qBAAqB,KAAK,MAAM,cAAc,GAAG,KAAK,MAAM,eAAe,CAAC;AAAA,MAClH,MAAM,gBAAgB,gBAAgB,KAAK,IAAI,GAAG,cAAc,QAAQ,IAAI;AAAA,MAC5E,MAAM,iBAAiB,gBAAgB,KAAK,IAAI,GAAG,cAAc,SAAS,IAAI;AAAA,MAC9E,IAAI,cAAc,YAAY,UAAU,KAAK,kBAAkB,YAAY;AAAA,QACzE,OAAO;AAAA,UACL,OAAO,KAAK,IAAI,gBAAgB,aAAa;AAAA,UAC7C,QAAQ,KAAK,IAAI,iBAAiB,cAAc;AAAA,QAClD;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,MACV;AAAA;AAAA,IAEF,KAAK,SAAS,eAAe,WAAW;AAAA;AAAA,EAE1C,MAAM,CAAC,QAAQ,WAAW;AAAA,IACxB,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,IAAI,KAAK;AAAA,MACP;AAAA,IACF,KAAK,UAAU;AAAA,IACf,KAAK,KAAK,aAAa,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK,QAAQ,KAAK,GAAG;AAAA,IACxE,KAAK,WAAW,MAAM;AAAA,IACtB,KAAK,aAAa,MAAM;AAAA;AAAA,EAE1B,UAAU,CAAC,QAAQ;AAAA,IACjB,OAAO,eAAe,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC;AAAA;AAAA,EAEvD,YAAY,CAAC,QAAQ;AAAA,IACnB,IAAI,CAAC,KAAK,eAAe,CAAC,KAAK;AAAA,MAC7B;AAAA,IACF,MAAM,eAAe,KAAK,WAAW,gBAAgB;AAAA,IACrD,MAAM,UAAU,KAAK,IAAI,aAAa,YAAY;AAAA,IAClD,MAAM,UAAU,KAAK,IAAI,aAAa,YAAY;AAAA,IAClD,KAAK,KAAK,kBAAkB,SAAS,SAAS,IAAI;AAAA,IAClD,KAAK,KAAK,eAAe,KAAK,KAAK,cAAc,OAAO,KAAK,aAAa,CAAC;AAAA;AAAA,EAE7E,KAAK,GAAG;AAAA,IACN,MAAM,MAAM;AAAA,IACZ,KAAK,KAAK,eAAe,KAAK,KAAK,cAAc,OAAO,KAAK,aAAa,CAAC;AAAA,IAC3E,KAAK,cAAc;AAAA;AAAA,EAErB,IAAI,GAAG;AAAA,IACL,MAAM,KAAK;AAAA,IACX,KAAK,KAAK,kBAAkB,GAAG,GAAG,KAAK;AAAA,IACvC,KAAK,cAAc;AAAA;AAAA,EAErB,QAAQ,GAAG;AAAA,IACT,IAAI,KAAK,UAAU;AAAA,MACjB,KAAK,KAAK,kBAAkB,GAAG,GAAG,KAAK;AAAA,IACzC;AAAA;AAAA,EAEF,OAAO,GAAG;AAAA,IACR,IAAI,KAAK;AAAA,MACP;AAAA,IACF,IAAI,KAAK,UAAU;AAAA,MACjB,KAAK,KAAK,kBAAkB,GAAG,GAAG,KAAK;AAAA,MACvC,KAAK,KAAK;AAAA,IACZ;AAAA,IACA,KAAK,WAAW,QAAQ;AAAA,IACxB,KAAK,WAAW,QAAQ;AAAA,IACxB,MAAM,QAAQ;AAAA;AAAA,MAEZ,cAAc,CAAC,SAAS;AAAA,IAC1B,KAAK,wBAAwB;AAAA;AAAA,MAE3B,cAAc,GAAG;AAAA,IACnB,OAAO,KAAK;AAAA;AAAA,MAEV,eAAe,CAAC,SAAS;AAAA,IAC3B,KAAK,yBAAyB;AAAA;AAAA,MAE5B,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK,WAAW,eAAe;AAAA;AAAA,MAEpC,WAAW,CAAC,OAAO;AAAA,IACrB,KAAK,WAAW,eAAe,KAAK;AAAA,IACpC,KAAK,cAAc;AAAA;AAAA,EAErB,YAAY,CAAC,SAAS,WAAW;AAAA,IAC/B,KAAK,WAAW,aAAa,SAAS,SAAS;AAAA,IAC/C,KAAK,cAAc;AAAA;AAAA,EAErB,uBAAuB,CAAC,WAAW;AAAA,IACjC,KAAK,WAAW,wBAAwB,SAAS;AAAA,IACjD,KAAK,cAAc;AAAA;AAAA,EAErB,qBAAqB,CAAC,OAAO;AAAA,IAC3B,KAAK,WAAW,sBAAsB,KAAK;AAAA,IAC3C,KAAK,cAAc;AAAA;AAAA,EAErB,mBAAmB,CAAC,SAAS;AAAA,IAC3B,KAAK,WAAW,oBAAoB,OAAO;AAAA,IAC3C,KAAK,cAAc;AAAA;AAAA,EAErB,kBAAkB,GAAG;AAAA,IACnB,KAAK,WAAW,mBAAmB;AAAA,IACnC,KAAK,cAAc;AAAA;AAAA,EAErB,iBAAiB,CAAC,SAAS;AAAA,IACzB,OAAO,KAAK,WAAW,kBAAkB,OAAO;AAAA;AAAA,EAElD,OAAO,CAAC,MAAM;AAAA,IACZ,KAAK,WAAW,QAAQ,IAAI;AAAA,IAC5B,KAAK,SAAS,UAAU;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,EAErB,WAAW,CAAC,MAAM;AAAA,IAChB,KAAK,WAAW,YAAY,IAAI;AAAA,IAChC,KAAK,SAAS,UAAU;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,EAErB,KAAK,GAAG;AAAA,IACN,KAAK,WAAW,MAAM;AAAA,IACtB,KAAK,WAAW,mBAAmB;AAAA,IACnC,KAAK,SAAS,UAAU;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,EAErB,WAAW,CAAC,WAAW,UAAU,SAAS,QAAQ;AAAA,IAChD,KAAK,WAAW,YAAY,WAAW,UAAU,SAAS,MAAM;AAAA,IAChE,KAAK,SAAS,UAAU;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,EAErB,UAAU,CAAC,MAAM;AAAA,IACf,KAAK,WAAW,WAAW,IAAI;AAAA,IAC/B,KAAK,SAAS,UAAU;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,EAErB,YAAY,CAAC,aAAa,WAAW;AAAA,IACnC,OAAO,KAAK,WAAW,aAAa,aAAa,SAAS;AAAA;AAAA,EAE5D,oBAAoB,CAAC,UAAU,UAAU,QAAQ,QAAQ;AAAA,IACvD,OAAO,KAAK,WAAW,qBAAqB,UAAU,UAAU,QAAQ,MAAM;AAAA;AAAA,EAEhF,0BAA0B,CAAC,cAAc,kBAAkB;AAAA,IACzD,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,IAAI,CAAC,cAAc;AAAA,MACjB,KAAK,2BAA2B;AAAA,MAChC,KAAK,KAAK,eAAe;AAAA,MACzB;AAAA,IACF;AAAA,IACA,KAAK,2BAA2B;AAAA,IAChC,MAAM,eAAe,KAAK,WAAW,gBAAgB;AAAA,IACrD,MAAM,UAAU,KAAK,IAAI,aAAa;AAAA,IACtC,MAAM,UAAU,KAAK,IAAI,aAAa;AAAA,IACtC,IAAI,kBAAkB;AAAA,MACpB,IAAI,CAAC,KAAK,KAAK,cAAc;AAAA,QAC3B,KAAK,KAAK,eAAe,MAAM,SAAS,OAAO;AAAA,MACjD;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,KAAK,gBAAgB,MAAM,SAAS,SAAS,EAAE,gBAAgB,KAAK,CAAC;AAAA;AAE9E;AAGA,IAAI,6BAA6B;AAAA,EAC/B,EAAE,MAAM,QAAQ,QAAQ,YAAY;AAAA,EACpC,EAAE,MAAM,SAAS,QAAQ,aAAa;AAAA,EACtC,EAAE,MAAM,MAAM,QAAQ,UAAU;AAAA,EAChC,EAAE,MAAM,QAAQ,QAAQ,YAAY;AAAA,EACpC,EAAE,MAAM,QAAQ,OAAO,MAAM,QAAQ,cAAc;AAAA,EACnD,EAAE,MAAM,SAAS,OAAO,MAAM,QAAQ,eAAe;AAAA,EACrD,EAAE,MAAM,MAAM,OAAO,MAAM,QAAQ,YAAY;AAAA,EAC/C,EAAE,MAAM,QAAQ,OAAO,MAAM,QAAQ,cAAc;AAAA,EACnD,EAAE,MAAM,QAAQ,QAAQ,cAAc;AAAA,EACtC,EAAE,MAAM,OAAO,QAAQ,aAAa;AAAA,EACpC,EAAE,MAAM,QAAQ,OAAO,MAAM,QAAQ,qBAAqB;AAAA,EAC1D,EAAE,MAAM,OAAO,OAAO,MAAM,QAAQ,oBAAoB;AAAA,EACxD,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,YAAY;AAAA,EAC7C,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,WAAW;AAAA,EAC5C,EAAE,MAAM,KAAK,MAAM,MAAM,OAAO,MAAM,QAAQ,mBAAmB;AAAA,EACjE,EAAE,MAAM,KAAK,MAAM,MAAM,OAAO,MAAM,QAAQ,kBAAkB;AAAA,EAChE,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,mBAAmB;AAAA,EACpD,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,kBAAkB;AAAA,EACnD,EAAE,MAAM,KAAK,MAAM,MAAM,OAAO,MAAM,QAAQ,0BAA0B;AAAA,EACxE,EAAE,MAAM,KAAK,MAAM,MAAM,OAAO,MAAM,QAAQ,yBAAyB;AAAA,EACvE,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,aAAa;AAAA,EAC9C,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,YAAY;AAAA,EAC7C,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,uBAAuB;AAAA,EACxD,EAAE,MAAM,aAAa,MAAM,MAAM,QAAQ,uBAAuB;AAAA,EAChE,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,sBAAsB;AAAA,EACvD,EAAE,MAAM,UAAU,MAAM,MAAM,QAAQ,sBAAsB;AAAA,EAC5D,EAAE,MAAM,UAAU,MAAM,MAAM,QAAQ,sBAAsB;AAAA,EAC5D,EAAE,MAAM,KAAK,MAAM,MAAM,OAAO,MAAM,QAAQ,cAAc;AAAA,EAC5D,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,qBAAqB;AAAA,EACtD,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,uBAAuB;AAAA,EACxD,EAAE,MAAM,aAAa,QAAQ,YAAY;AAAA,EACzC,EAAE,MAAM,aAAa,OAAO,MAAM,QAAQ,YAAY;AAAA,EACtD,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,SAAS;AAAA,EAC1C,EAAE,MAAM,UAAU,QAAQ,SAAS;AAAA,EACnC,EAAE,MAAM,UAAU,OAAO,MAAM,QAAQ,SAAS;AAAA,EAChD,EAAE,MAAM,UAAU,QAAQ,UAAU;AAAA,EACpC,EAAE,MAAM,YAAY,QAAQ,UAAU;AAAA,EACtC,EAAE,MAAM,UAAU,MAAM,MAAM,QAAQ,SAAS;AAAA,EAC/C,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,OAAO;AAAA,EACxC,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,OAAO;AAAA,EACxC,EAAE,MAAM,KAAK,OAAO,MAAM,QAAQ,OAAO;AAAA,EACzC,EAAE,MAAM,KAAK,OAAO,MAAM,OAAO,MAAM,QAAQ,OAAO;AAAA,EACtD,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,eAAe;AAAA,EAChD,EAAE,MAAM,KAAK,MAAM,MAAM,QAAQ,gBAAgB;AAAA,EACjD,EAAE,MAAM,SAAS,MAAM,MAAM,QAAQ,eAAe;AAAA,EACpD,EAAE,MAAM,QAAQ,MAAM,MAAM,QAAQ,gBAAgB;AAAA,EACpD,EAAE,MAAM,SAAS,MAAM,MAAM,QAAQ,eAAe;AAAA,EACpD,EAAE,MAAM,QAAQ,MAAM,MAAM,QAAQ,gBAAgB;AAAA,EACpD,EAAE,MAAM,KAAK,MAAM,MAAM,OAAO,MAAM,QAAQ,sBAAsB;AAAA,EACpE,EAAE,MAAM,KAAK,MAAM,MAAM,OAAO,MAAM,QAAQ,uBAAuB;AAAA,EACrE,EAAE,MAAM,SAAS,MAAM,MAAM,OAAO,MAAM,QAAQ,sBAAsB;AAAA,EACxE,EAAE,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM,QAAQ,uBAAuB;AAAA,EACxE,EAAE,MAAM,aAAa,MAAM,MAAM,QAAQ,uBAAuB;AAAA,EAChE,EAAE,MAAM,QAAQ,OAAO,MAAM,QAAQ,mBAAmB;AAAA,EACxD,EAAE,MAAM,SAAS,OAAO,MAAM,QAAQ,kBAAkB;AAAA,EACxD,EAAE,MAAM,MAAM,OAAO,MAAM,QAAQ,cAAc;AAAA,EACjD,EAAE,MAAM,QAAQ,OAAO,MAAM,QAAQ,aAAa;AAAA,EAClD,EAAE,MAAM,QAAQ,OAAO,MAAM,OAAO,MAAM,QAAQ,0BAA0B;AAAA,EAC5E,EAAE,MAAM,SAAS,OAAO,MAAM,OAAO,MAAM,QAAQ,yBAAyB;AAAA,EAC5E,EAAE,MAAM,MAAM,OAAO,MAAM,OAAO,MAAM,QAAQ,qBAAqB;AAAA,EACrE,EAAE,MAAM,QAAQ,OAAO,MAAM,OAAO,MAAM,QAAQ,oBAAoB;AAAA,EACtE,EAAE,MAAM,KAAK,OAAO,MAAM,QAAQ,aAAa;AACjD;AAAA;AAEA,MAAM,2BAA2B,qBAAqB;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,SACX,WAAW;AAAA,IAChB,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,wBAAwB;AAAA,IACxB,kBAAkB;AAAA,IAClB,aAAa;AAAA,IACb,kBAAkB;AAAA,EACpB;AAAA,EACA,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,WAAW,mBAAmB;AAAA,IACpC,MAAM,cAAc;AAAA,SACf;AAAA,MACH,iBAAiB,QAAQ,mBAAmB,SAAS;AAAA,MACrD,WAAW,QAAQ,aAAa,SAAS;AAAA,IAC3C;AAAA,IACA,MAAM,KAAK,WAAW;AAAA,IACtB,KAAK,4BAA4B,WAAW,QAAQ,mBAAmB,SAAS,eAAe;AAAA,IAC/F,KAAK,sBAAsB,WAAW,QAAQ,aAAa,SAAS,SAAS;AAAA,IAC7E,KAAK,0BAA0B,WAAW,QAAQ,0BAA0B,QAAQ,mBAAmB,SAAS,sBAAsB;AAAA,IACtI,KAAK,oBAAoB,WAAW,QAAQ,oBAAoB,QAAQ,aAAa,SAAS,gBAAgB;AAAA,IAC9G,KAAK,eAAe,QAAQ,eAAe,SAAS;AAAA,IACpD,KAAK,oBAAoB,WAAW,QAAQ,oBAAoB,SAAS,gBAAgB;AAAA,IACzF,KAAK,eAAe,gBAAgB,mBAAmB,QAAQ,eAAe,CAAC,CAAC;AAAA,IAChF,KAAK,eAAe,QAAQ,eAAe,CAAC;AAAA,IAC5C,MAAM,iBAAiB,iBAAiB,4BAA4B,KAAK,YAAY;AAAA,IACrF,KAAK,kBAAkB,oBAAoB,gBAAgB,KAAK,YAAY;AAAA,IAC5E,KAAK,kBAAkB,KAAK,oBAAoB;AAAA,IAChD,KAAK,kBAAkB,QAAQ;AAAA,IAC/B,IAAI,QAAQ,cAAc;AAAA,MACxB,KAAK,QAAQ,QAAQ,YAAY;AAAA,MACjC,KAAK,mBAAmB;AAAA,IAC1B;AAAA,IACA,KAAK,aAAa;AAAA,IAClB,KAAK,iBAAiB,KAAK,YAAY;AAAA;AAAA,EAEzC,gBAAgB,CAAC,aAAa;AAAA,IAC5B,IAAI,gBAAgB,MAAM;AAAA,MACxB,KAAK,WAAW,yBAAyB,CAAC,CAAC;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,IAAI,OAAO,gBAAgB,UAAU;AAAA,MACnC,MAAM,aAAa,GAAG,KAAK,iBAAiB;AAAA,MAC5C,MAAM,SAAS,CAAC,WAAW,WAAW,CAAC;AAAA,MACvC,KAAK,WAAW,yBAAyB,MAAM;AAAA,IACjD,EAAO;AAAA,MACL,KAAK,WAAW,yBAAyB,YAAY,MAAM;AAAA;AAAA;AAAA,EAG/D,mBAAmB,GAAG;AAAA,IACpB,OAAO,IAAI,IAAI;AAAA,MACb,CAAC,aAAa,MAAM,KAAK,eAAe,CAAC;AAAA,MACzC,CAAC,cAAc,MAAM,KAAK,gBAAgB,CAAC;AAAA,MAC3C,CAAC,WAAW,MAAM,KAAK,aAAa,CAAC;AAAA,MACrC,CAAC,aAAa,MAAM,KAAK,eAAe,CAAC;AAAA,MACzC,CAAC,eAAe,MAAM,KAAK,eAAe,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,MAC3D,CAAC,gBAAgB,MAAM,KAAK,gBAAgB,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,MAC7D,CAAC,aAAa,MAAM,KAAK,aAAa,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,MACvD,CAAC,eAAe,MAAM,KAAK,eAAe,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,MAC3D,CAAC,aAAa,MAAM,KAAK,aAAa,CAAC;AAAA,MACvC,CAAC,YAAY,MAAM,KAAK,YAAY,CAAC;AAAA,MACrC,CAAC,oBAAoB,MAAM,KAAK,aAAa,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,MAC9D,CAAC,mBAAmB,MAAM,KAAK,YAAY,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,MAC5D,CAAC,oBAAoB,MAAM,KAAK,mBAAmB,CAAC;AAAA,MACpD,CAAC,mBAAmB,MAAM,KAAK,kBAAkB,CAAC;AAAA,MAClD,CAAC,2BAA2B,MAAM,KAAK,mBAAmB,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,MAC3E,CAAC,0BAA0B,MAAM,KAAK,kBAAkB,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,MACzE,CAAC,sBAAsB,MAAM,KAAK,eAAe,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,MAClE,CAAC,qBAAqB,MAAM,KAAK,cAAc,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,MAChE,CAAC,eAAe,MAAM,KAAK,eAAe,CAAC;AAAA,MAC3C,CAAC,cAAc,MAAM,KAAK,cAAc,CAAC;AAAA,MACzC,CAAC,eAAe,MAAM,KAAK,WAAW,CAAC;AAAA,MACvC,CAAC,sBAAsB,MAAM,KAAK,gBAAgB,CAAC;AAAA,MACnD,CAAC,wBAAwB,MAAM,KAAK,kBAAkB,CAAC;AAAA,MACvD,CAAC,aAAa,MAAM,KAAK,mBAAmB,CAAC;AAAA,MAC7C,CAAC,UAAU,MAAM,KAAK,WAAW,CAAC;AAAA,MAClC,CAAC,WAAW,MAAM,KAAK,QAAQ,CAAC;AAAA,MAChC,CAAC,QAAQ,MAAM,KAAK,KAAK,CAAC;AAAA,MAC1B,CAAC,QAAQ,MAAM,KAAK,KAAK,CAAC;AAAA,MAC1B,CAAC,gBAAgB,MAAM,KAAK,gBAAgB,CAAC;AAAA,MAC7C,CAAC,iBAAiB,MAAM,KAAK,iBAAiB,CAAC;AAAA,MAC/C,CAAC,uBAAuB,MAAM,KAAK,gBAAgB,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,MACpE,CAAC,wBAAwB,MAAM,KAAK,iBAAiB,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,MACtE,CAAC,uBAAuB,MAAM,KAAK,kBAAkB,CAAC;AAAA,MACtD,CAAC,wBAAwB,MAAM,KAAK,mBAAmB,CAAC;AAAA,MACxD,CAAC,cAAc,MAAM,KAAK,UAAU,CAAC;AAAA,MACrC,CAAC,UAAU,MAAM,KAAK,OAAO,CAAC;AAAA,IAChC,CAAC;AAAA;AAAA,EAEH,WAAW,CAAC,OAAO;AAAA,IACjB,KAAK,WAAW,MAAM,IAAI;AAAA;AAAA,EAE5B,cAAc,CAAC,KAAK;AAAA,IAClB,MAAM,aAAa,iBAAiB;AAAA,MAClC,MAAM,IAAI;AAAA,MACV,MAAM,IAAI;AAAA,MACV,OAAO,IAAI;AAAA,MACX,MAAM,IAAI;AAAA,MACV,OAAO,IAAI;AAAA,MACX,QAAQ;AAAA,IACV,CAAC;AAAA,IACD,MAAM,SAAS,KAAK,gBAAgB,IAAI,UAAU;AAAA,IAClD,IAAI,QAAQ;AAAA,MACV,MAAM,UAAU,KAAK,gBAAgB,IAAI,MAAM;AAAA,MAC/C,IAAI,SAAS;AAAA,QACX,OAAO,QAAQ;AAAA,MACjB;AAAA,IACF;AAAA,IACA,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,SAAS,CAAC,IAAI,OAAO;AAAA,MACtD,IAAI,IAAI,SAAS,SAAS;AAAA,QACxB,KAAK,WAAW,GAAG;AAAA,QACnB,OAAO;AAAA,MACT;AAAA,MACA,IAAI,IAAI,UAAU;AAAA,QAChB,MAAM,gBAAgB,IAAI,SAAS,WAAW,CAAC;AAAA,QAC/C,IAAI,gBAAgB,IAAI;AAAA,UACtB,OAAO;AAAA,QACT;AAAA,QACA,IAAI,kBAAkB,KAAK;AAAA,UACzB,OAAO;AAAA,QACT;AAAA,QACA,KAAK,WAAW,IAAI,QAAQ;AAAA,QAC5B,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAET,YAAY,GAAG;AAAA,IACb,MAAM,cAAc,KAAK,WAAW,KAAK,0BAA0B,KAAK;AAAA,IACxE,MAAM,cAAc,KAAK,WAAW,KAAK,oBAAoB,KAAK;AAAA,IAClE,MAAM,kBAAkB;AAAA,IACxB,MAAM,YAAY;AAAA;AAAA,EAEpB,UAAU,CAAC,MAAM;AAAA,IACf,IAAI,KAAK,aAAa,GAAG;AAAA,MACvB,KAAK,mBAAmB;AAAA,IAC1B;AAAA,IACA,KAAK,WAAW,WAAW,IAAI;AAAA,IAC/B,KAAK,cAAc;AAAA;AAAA,EAErB,UAAU,CAAC,MAAM;AAAA,IACf,IAAI,KAAK,aAAa,GAAG;AAAA,MACvB,KAAK,mBAAmB;AAAA,IAC1B;AAAA,IACA,KAAK,WAAW,WAAW,IAAI;AAAA,IAC/B,KAAK,cAAc;AAAA;AAAA,EAErB,UAAU,GAAG;AAAA,IACX,IAAI,KAAK,aAAa,GAAG;AAAA,MACvB,KAAK,mBAAmB;AAAA,MACxB,OAAO;AAAA,IACT;AAAA,IACA,KAAK,KAAK,eAAe;AAAA,IACzB,KAAK,WAAW,WAAW;AAAA,IAC3B,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,kBAAkB,GAAG;AAAA,IACnB,IAAI,KAAK,aAAa,GAAG;AAAA,MACvB,KAAK,mBAAmB;AAAA,MACxB,OAAO;AAAA,IACT;AAAA,IACA,KAAK,KAAK,eAAe;AAAA,IACzB,KAAK,WAAW,mBAAmB;AAAA,IACnC,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,kBAAkB,GAAG;AAAA,IACnB,KAAK,WAAW,mBAAmB;AAAA,IACnC,KAAK,KAAK,eAAe;AAAA,IACzB,KAAK,cAAc;AAAA;AAAA,EAErB,OAAO,GAAG;AAAA,IACR,KAAK,KAAK,eAAe;AAAA,IACzB,KAAK,WAAW,QAAQ;AAAA,IACxB,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,UAAU,GAAG;AAAA,IACX,KAAK,KAAK,eAAe;AAAA,IACzB,KAAK,WAAW,WAAW;AAAA,IAC3B,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,cAAc,CAAC,SAAS;AAAA,IACtB,MAAM,SAAS,SAAS,UAAU;AAAA,IAClC,IAAI,CAAC,UAAU,KAAK,aAAa,GAAG;AAAA,MAClC,MAAM,YAAY,KAAK,aAAa;AAAA,MACpC,KAAK,WAAW,kBAAkB,UAAU,KAAK;AAAA,MACjD,KAAK,KAAK,eAAe;AAAA,MACzB,KAAK,cAAc;AAAA,MACnB,OAAO;AAAA,IACT;AAAA,IACA,KAAK,2BAA2B,QAAQ,IAAI;AAAA,IAC5C,KAAK,WAAW,eAAe;AAAA,IAC/B,KAAK,2BAA2B,QAAQ,KAAK;AAAA,IAC7C,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,eAAe,CAAC,SAAS;AAAA,IACvB,MAAM,SAAS,SAAS,UAAU;AAAA,IAClC,IAAI,CAAC,UAAU,KAAK,aAAa,GAAG;AAAA,MAClC,MAAM,YAAY,KAAK,aAAa;AAAA,MACpC,MAAM,eAAe,KAAK,iBAAiB,UAAU,QAAQ,UAAU,MAAM,IAAI,UAAU;AAAA,MAC3F,KAAK,WAAW,kBAAkB,YAAY;AAAA,MAC9C,KAAK,KAAK,eAAe;AAAA,MACzB,KAAK,cAAc;AAAA,MACnB,OAAO;AAAA,IACT;AAAA,IACA,KAAK,2BAA2B,QAAQ,IAAI;AAAA,IAC5C,KAAK,WAAW,gBAAgB;AAAA,IAChC,KAAK,2BAA2B,QAAQ,KAAK;AAAA,IAC7C,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,YAAY,CAAC,SAAS;AAAA,IACpB,MAAM,SAAS,SAAS,UAAU;AAAA,IAClC,KAAK,2BAA2B,QAAQ,IAAI;AAAA,IAC5C,KAAK,WAAW,aAAa;AAAA,IAC7B,KAAK,2BAA2B,QAAQ,KAAK;AAAA,IAC7C,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,cAAc,CAAC,SAAS;AAAA,IACtB,MAAM,SAAS,SAAS,UAAU;AAAA,IAClC,KAAK,2BAA2B,QAAQ,IAAI;AAAA,IAC5C,KAAK,WAAW,eAAe;AAAA,IAC/B,KAAK,2BAA2B,QAAQ,KAAK;AAAA,IAC7C,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,QAAQ,CAAC,MAAM;AAAA,IACb,KAAK,WAAW,SAAS,IAAI;AAAA,IAC7B,KAAK,cAAc;AAAA;AAAA,EAErB,YAAY,CAAC,SAAS;AAAA,IACpB,MAAM,SAAS,SAAS,UAAU;AAAA,IAClC,KAAK,2BAA2B,QAAQ,IAAI;AAAA,IAC5C,MAAM,SAAS,KAAK,WAAW,UAAU;AAAA,IACzC,IAAI,OAAO,QAAQ,KAAK,OAAO,MAAM,GAAG;AAAA,MACtC,KAAK,WAAW,UAAU,OAAO,MAAM,GAAG,CAAC;AAAA,MAC3C,MAAM,cAAc,KAAK,WAAW,OAAO;AAAA,MAC3C,KAAK,WAAW,UAAU,YAAY,KAAK,YAAY,GAAG;AAAA,IAC5D,EAAO;AAAA,MACL,KAAK,WAAW,UAAU,OAAO,KAAK,CAAC;AAAA;AAAA,IAEzC,KAAK,2BAA2B,QAAQ,KAAK;AAAA,IAC7C,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,WAAW,CAAC,SAAS;AAAA,IACnB,MAAM,SAAS,SAAS,UAAU;AAAA,IAClC,KAAK,2BAA2B,QAAQ,IAAI;AAAA,IAC5C,MAAM,SAAS,KAAK,WAAW,UAAU;AAAA,IACzC,MAAM,MAAM,KAAK,WAAW,OAAO;AAAA,IACnC,MAAM,YAAY,KAAK,WAAW,aAAa;AAAA,IAC/C,IAAI,OAAO,QAAQ,IAAI,OAAO,OAAO,MAAM,YAAY,GAAG;AAAA,MACxD,KAAK,WAAW,UAAU,OAAO,MAAM,GAAG,CAAC;AAAA,IAC7C,EAAO;AAAA,MACL,KAAK,WAAW,UAAU,IAAI,KAAK,IAAI,GAAG;AAAA;AAAA,IAE5C,KAAK,2BAA2B,QAAQ,KAAK;AAAA,IAC7C,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,kBAAkB,CAAC,SAAS;AAAA,IAC1B,MAAM,SAAS,SAAS,UAAU;AAAA,IAClC,KAAK,2BAA2B,QAAQ,IAAI;AAAA,IAC5C,MAAM,MAAM,KAAK,WAAW,aAAa;AAAA,IACzC,KAAK,WAAW,UAAU,IAAI,YAAY,IAAI,UAAU;AAAA,IACxD,KAAK,2BAA2B,QAAQ,KAAK;AAAA,IAC7C,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,iBAAiB,CAAC,SAAS;AAAA,IACzB,MAAM,SAAS,SAAS,UAAU;AAAA,IAClC,KAAK,2BAA2B,QAAQ,IAAI;AAAA,IAC5C,MAAM,MAAM,KAAK,WAAW,aAAa;AAAA,IACzC,KAAK,WAAW,UAAU,IAAI,YAAY,IAAI,UAAU;AAAA,IACxD,KAAK,2BAA2B,QAAQ,KAAK;AAAA,IAC7C,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,cAAc,CAAC,SAAS;AAAA,IACtB,MAAM,SAAS,SAAS,UAAU;AAAA,IAClC,KAAK,2BAA2B,QAAQ,IAAI;AAAA,IAC5C,KAAK,WAAW,UAAU,GAAG,CAAC;AAAA,IAC9B,KAAK,2BAA2B,QAAQ,KAAK;AAAA,IAC7C,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,aAAa,CAAC,SAAS;AAAA,IACrB,MAAM,SAAS,SAAS,UAAU;AAAA,IAClC,KAAK,2BAA2B,QAAQ,IAAI;AAAA,IAC5C,KAAK,WAAW,SAAS,MAAM;AAAA,IAC/B,KAAK,2BAA2B,QAAQ,KAAK;AAAA,IAC7C,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,SAAS,GAAG;AAAA,IACV,KAAK,2BAA2B,OAAO,IAAI;AAAA,IAC3C,KAAK,WAAW,UAAU,GAAG,CAAC;AAAA,IAC9B,OAAO,KAAK,cAAc,EAAE,QAAQ,KAAK,CAAC;AAAA;AAAA,EAE5C,eAAe,GAAG;AAAA,IAChB,MAAM,SAAS,KAAK,WAAW,UAAU;AAAA,IACzC,MAAM,MAAM,KAAK,WAAW,OAAO;AAAA,IACnC,IAAI,IAAI,MAAM,OAAO,KAAK;AAAA,MACxB,KAAK,WAAW,YAAY,OAAO,KAAK,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,IACtE;AAAA,IACA,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,iBAAiB,GAAG;AAAA,IAClB,MAAM,SAAS,KAAK,WAAW,UAAU;AAAA,IACzC,IAAI,OAAO,MAAM,GAAG;AAAA,MAClB,KAAK,WAAW,YAAY,OAAO,KAAK,GAAG,OAAO,KAAK,OAAO,GAAG;AAAA,IACnE;AAAA,IACA,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,IAAI,GAAG;AAAA,IACL,KAAK,KAAK,eAAe;AAAA,IACzB,KAAK,WAAW,KAAK;AAAA,IACrB,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,IAAI,GAAG;AAAA,IACL,KAAK,KAAK,eAAe;AAAA,IACzB,KAAK,WAAW,KAAK;AAAA,IACrB,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,eAAe,CAAC,SAAS;AAAA,IACvB,MAAM,SAAS,SAAS,UAAU;AAAA,IAClC,KAAK,2BAA2B,QAAQ,IAAI;AAAA,IAC5C,MAAM,WAAW,KAAK,WAAW,oBAAoB;AAAA,IACrD,KAAK,WAAW,kBAAkB,SAAS,MAAM;AAAA,IACjD,KAAK,2BAA2B,QAAQ,KAAK;AAAA,IAC7C,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,gBAAgB,CAAC,SAAS;AAAA,IACxB,MAAM,SAAS,SAAS,UAAU;AAAA,IAClC,KAAK,2BAA2B,QAAQ,IAAI;AAAA,IAC5C,MAAM,WAAW,KAAK,WAAW,oBAAoB;AAAA,IACrD,KAAK,WAAW,kBAAkB,SAAS,MAAM;AAAA,IACjD,KAAK,2BAA2B,QAAQ,KAAK;AAAA,IAC7C,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,iBAAiB,GAAG;AAAA,IAClB,IAAI,KAAK,aAAa,GAAG;AAAA,MACvB,KAAK,mBAAmB;AAAA,MACxB,OAAO;AAAA,IACT;AAAA,IACA,MAAM,gBAAgB,KAAK,WAAW,kBAAkB;AAAA,IACxD,MAAM,WAAW,KAAK,WAAW,oBAAoB;AAAA,IACrD,IAAI,SAAS,SAAS,cAAc,QAAQ;AAAA,MAC1C,KAAK,WAAW,YAAY,cAAc,KAAK,cAAc,KAAK,SAAS,KAAK,SAAS,GAAG;AAAA,IAC9F;AAAA,IACA,KAAK,KAAK,eAAe;AAAA,IACzB,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,kBAAkB,GAAG;AAAA,IACnB,IAAI,KAAK,aAAa,GAAG;AAAA,MACvB,KAAK,mBAAmB;AAAA,MACxB,OAAO;AAAA,IACT;AAAA,IACA,MAAM,gBAAgB,KAAK,WAAW,kBAAkB;AAAA,IACxD,MAAM,WAAW,KAAK,WAAW,oBAAoB;AAAA,IACrD,IAAI,SAAS,SAAS,cAAc,QAAQ;AAAA,MAC1C,KAAK,WAAW,YAAY,SAAS,KAAK,SAAS,KAAK,cAAc,KAAK,cAAc,GAAG;AAAA,IAC9F;AAAA,IACA,KAAK,KAAK,eAAe;AAAA,IACzB,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,KAAK,GAAG;AAAA,IACN,MAAM,MAAM;AAAA,IACZ,KAAK,aAAa;AAAA;AAAA,EAEpB,IAAI,GAAG;AAAA,IACL,MAAM,KAAK;AAAA,IACX,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,KAAK,aAAa;AAAA,IACpB;AAAA;AAAA,MAEE,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,OAAO;AAAA,IACrB,IAAI,KAAK,iBAAiB,OAAO;AAAA,MAC/B,KAAK,eAAe;AAAA,MACpB,KAAK,iBAAiB,KAAK;AAAA,MAC3B,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK;AAAA;AAAA,MAEV,gBAAgB,CAAC,OAAO;AAAA,IAC1B,MAAM,WAAW,WAAW,SAAS,mBAAmB,SAAS,gBAAgB;AAAA,IACjF,IAAI,KAAK,sBAAsB,UAAU;AAAA,MACvC,KAAK,oBAAoB;AAAA,MACzB,KAAK,iBAAiB,KAAK,YAAY;AAAA,MACvC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,MAEV,eAAe,CAAC,OAAO;AAAA,IACzB,MAAM,WAAW,WAAW,SAAS,mBAAmB,SAAS,eAAe;AAAA,IAChF,IAAI,KAAK,8BAA8B,UAAU;AAAA,MAC/C,KAAK,4BAA4B;AAAA,MACjC,KAAK,aAAa;AAAA,IACpB;AAAA;AAAA,MAEE,SAAS,GAAG;AAAA,IACd,OAAO,KAAK;AAAA;AAAA,MAEV,SAAS,CAAC,OAAO;AAAA,IACnB,MAAM,WAAW,WAAW,SAAS,mBAAmB,SAAS,SAAS;AAAA,IAC1E,IAAI,KAAK,wBAAwB,UAAU;AAAA,MACzC,KAAK,sBAAsB;AAAA,MAC3B,KAAK,aAAa;AAAA,IACpB;AAAA;AAAA,MAEE,sBAAsB,CAAC,OAAO;AAAA,IAChC,MAAM,WAAW,WAAW,SAAS,mBAAmB,SAAS,sBAAsB;AAAA,IACvF,IAAI,KAAK,4BAA4B,UAAU;AAAA,MAC7C,KAAK,0BAA0B;AAAA,MAC/B,KAAK,aAAa;AAAA,IACpB;AAAA;AAAA,MAEE,gBAAgB,CAAC,OAAO;AAAA,IAC1B,MAAM,WAAW,WAAW,SAAS,mBAAmB,SAAS,gBAAgB;AAAA,IACjF,IAAI,KAAK,sBAAsB,UAAU;AAAA,MACvC,KAAK,oBAAoB;AAAA,MACzB,KAAK,aAAa;AAAA,IACpB;AAAA;AAAA,MAEE,YAAY,CAAC,OAAO;AAAA,IACtB,IAAI,CAAC,KAAK,kBAAkB;AAAA,MAC1B,KAAK,QAAQ,KAAK;AAAA,MAClB,KAAK,mBAAmB;AAAA,IAC1B;AAAA;AAAA,EAEF,MAAM,GAAG;AAAA,IACP,IAAI,KAAK,iBAAiB;AAAA,MACxB,KAAK,gBAAgB,CAAC,CAAC;AAAA,IACzB;AAAA,IACA,OAAO;AAAA;AAAA,MAEL,QAAQ,CAAC,SAAS;AAAA,IACpB,KAAK,kBAAkB;AAAA;AAAA,MAErB,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,UAAU;AAAA,IACxB,KAAK,eAAe;AAAA,IACpB,MAAM,iBAAiB,iBAAiB,4BAA4B,QAAQ;AAAA,IAC5E,KAAK,kBAAkB,oBAAoB,gBAAgB,KAAK,YAAY;AAAA;AAAA,MAE1E,WAAW,CAAC,SAAS;AAAA,IACvB,KAAK,eAAe,gBAAgB,mBAAmB,OAAO;AAAA,IAC9D,MAAM,iBAAiB,iBAAiB,4BAA4B,KAAK,YAAY;AAAA,IACrF,KAAK,kBAAkB,oBAAoB,gBAAgB,KAAK,YAAY;AAAA;AAAA,MAE1E,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK,WAAW;AAAA;AAE3B;AAGA,IAAI;AAAA,CACH,CAAC,2BAA2B;AAAA,EAC3B,uBAAuB,WAAW;AAAA,EAClC,uBAAuB,YAAY;AAAA,EACnC,uBAAuB,WAAW;AAAA,GACjC,0BAA0B,CAAC,CAAC;AAAA;AAE/B,MAAM,wBAAwB,mBAAmB;AAAA,EAC/C;AAAA,EACA,sBAAsB;AAAA,SACf,iBAAiB;AAAA,IACtB,aAAa;AAAA,IACb,WAAW;AAAA,IACX,OAAO;AAAA,EACT;AAAA,EACA,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,WAAW,gBAAgB;AAAA,IACjC,MAAM,YAAY,QAAQ,aAAa,SAAS;AAAA,IAChD,MAAM,WAAW,QAAQ,SAAS,SAAS;AAAA,IAC3C,MAAM,eAAe,SAAS,QAAQ,WAAW,EAAE,EAAE,UAAU,GAAG,SAAS;AAAA,IAC3E,MAAM,KAAK;AAAA,SACN;AAAA,MACH,aAAa,QAAQ,eAAe,SAAS;AAAA,MAC7C;AAAA,MACA,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,aAAa;AAAA,QACX,EAAE,MAAM,UAAU,QAAQ,SAAS;AAAA,QACnC,EAAE,MAAM,YAAY,QAAQ,SAAS;AAAA,QACrC,GAAG,QAAQ,eAAe,CAAC;AAAA,MAC7B;AAAA,IACF,CAAC;AAAA,IACD,KAAK,aAAa;AAAA,IAClB,KAAK,sBAAsB,KAAK;AAAA,IAChC,IAAI,cAAc;AAAA,MAChB,KAAK,eAAe,aAAa;AAAA,IACnC;AAAA;AAAA,EAEF,OAAO,GAAG;AAAA,IACR,OAAO;AAAA;AAAA,EAET,WAAW,CAAC,OAAO;AAAA,IACjB,MAAM,YAAY,MAAM,KAAK,QAAQ,WAAW,EAAE;AAAA,IAClD,IAAI,WAAW;AAAA,MACb,KAAK,WAAW,SAAS;AAAA,IAC3B;AAAA;AAAA,EAEF,UAAU,CAAC,MAAM;AAAA,IACf,MAAM,YAAY,KAAK,QAAQ,WAAW,EAAE;AAAA,IAC5C,IAAI,CAAC;AAAA,MACH;AAAA,IACF,MAAM,gBAAgB,KAAK,UAAU;AAAA,IACrC,MAAM,YAAY,KAAK,aAAa;AAAA,IACpC,IAAI,aAAa;AAAA,MACf;AAAA,IACF,MAAM,WAAW,UAAU,UAAU,GAAG,SAAS;AAAA,IACjD,MAAM,WAAW,QAAQ;AAAA,IACzB,KAAK,KAAK,SAAqB,KAAK,SAAS;AAAA;AAAA,MAE3C,KAAK,GAAG;AAAA,IACV,OAAO,KAAK;AAAA;AAAA,MAEV,KAAK,CAAC,OAAO;AAAA,IACf,MAAM,WAAW,MAAM,UAAU,GAAG,KAAK,UAAU,EAAE,QAAQ,WAAW,EAAE;AAAA,IAC1E,MAAM,eAAe,KAAK;AAAA,IAC1B,IAAI,iBAAiB,UAAU;AAAA,MAC7B,KAAK,QAAQ,QAAQ;AAAA,MACrB,KAAK,eAAe,SAAS;AAAA,MAC7B,KAAK,KAAK,SAAqB,QAAQ;AAAA,IACzC;AAAA;AAAA,EAEF,KAAK,GAAG;AAAA,IACN,MAAM,MAAM;AAAA,IACZ,KAAK,sBAAsB,KAAK;AAAA;AAAA,EAElC,IAAI,GAAG;AAAA,IACL,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,MAAM,eAAe,KAAK;AAAA,MAC1B,IAAI,iBAAiB,KAAK,qBAAqB;AAAA,QAC7C,KAAK,sBAAsB;AAAA,QAC3B,KAAK,KAAK,UAAuB,YAAY;AAAA,MAC/C;AAAA,IACF;AAAA,IACA,MAAM,KAAK;AAAA;AAAA,EAEb,MAAM,GAAG;AAAA,IACP,MAAM,eAAe,KAAK;AAAA,IAC1B,IAAI,iBAAiB,KAAK,qBAAqB;AAAA,MAC7C,KAAK,sBAAsB;AAAA,MAC3B,KAAK,KAAK,UAAuB,YAAY;AAAA,IAC/C;AAAA,IACA,KAAK,KAAK,SAAqB,YAAY;AAAA,IAC3C,OAAO;AAAA;AAAA,EAET,kBAAkB,GAAG;AAAA,IACnB,MAAM,SAAS,MAAM,mBAAmB;AAAA,IACxC,KAAK,KAAK,SAAqB,KAAK,SAAS;AAAA,IAC7C,OAAO;AAAA;AAAA,EAET,UAAU,GAAG;AAAA,IACX,MAAM,SAAS,MAAM,WAAW;AAAA,IAChC,KAAK,KAAK,SAAqB,KAAK,SAAS;AAAA,IAC7C,OAAO;AAAA;AAAA,EAET,UAAU,GAAG;AAAA,IACX,MAAM,SAAS,MAAM,WAAW;AAAA,IAChC,KAAK,KAAK,SAAqB,KAAK,SAAS;AAAA,IAC7C,OAAO;AAAA;AAAA,EAET,kBAAkB,GAAG;AAAA,IACnB,MAAM,SAAS,MAAM,mBAAmB;AAAA,IACxC,KAAK,KAAK,SAAqB,KAAK,SAAS;AAAA,IAC7C,OAAO;AAAA;AAAA,EAET,iBAAiB,GAAG;AAAA,IAClB,MAAM,SAAS,MAAM,kBAAkB;AAAA,IACvC,KAAK,KAAK,SAAqB,KAAK,SAAS;AAAA,IAC7C,OAAO;AAAA;AAAA,EAET,iBAAiB,GAAG;AAAA,IAClB,MAAM,SAAS,MAAM,kBAAkB;AAAA,IACvC,KAAK,KAAK,SAAqB,KAAK,SAAS;AAAA,IAC7C,OAAO;AAAA;AAAA,EAET,eAAe,GAAG;AAAA,IAChB,MAAM,SAAS,MAAM,gBAAgB;AAAA,IACrC,KAAK,KAAK,SAAqB,KAAK,SAAS;AAAA,IAC7C,OAAO;AAAA;AAAA,EAET,IAAI,GAAG;AAAA,IACL,MAAM,SAAS,MAAM,KAAK;AAAA,IAC1B,KAAK,KAAK,SAAqB,KAAK,SAAS;AAAA,IAC7C,OAAO;AAAA;AAAA,EAET,IAAI,GAAG;AAAA,IACL,MAAM,SAAS,MAAM,KAAK;AAAA,IAC1B,KAAK,KAAK,SAAqB,KAAK,SAAS;AAAA,IAC7C,OAAO;AAAA;AAAA,EAET,eAAe,CAAC,WAAW;AAAA,IACzB,IAAI,cAAc,YAAY;AAAA,MAC5B,KAAK,mBAAmB;AAAA,IAC1B,EAAO;AAAA,MACL,KAAK,WAAW;AAAA;AAAA;AAAA,MAGhB,SAAS,CAAC,WAAW;AAAA,IACvB,KAAK,aAAa;AAAA,IAClB,MAAM,eAAe,KAAK;AAAA,IAC1B,IAAI,aAAa,SAAS,WAAW;AAAA,MACnC,KAAK,QAAQ,aAAa,UAAU,GAAG,SAAS,CAAC;AAAA,IACnD;AAAA;AAAA,MAEE,SAAS,GAAG;AAAA,IACd,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,aAAa;AAAA,IAC3B,MAAM,cAAc;AAAA;AAAA,MAElB,WAAW,GAAG;AAAA,IAChB,MAAM,IAAI,MAAM;AAAA,IAChB,OAAO,OAAO,MAAM,WAAW,IAAI;AAAA;AAAA,MAEjC,YAAY,CAAC,OAAO;AAC1B;AAEA,SAAS,CAAC,GAAG;AAAA,EACX,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,YAAY,MAAM,KAAK,MAAM,OAAO,MAAM,UAAU,OAAO,UAAU,MAAM,QAAQ,OAAO,WAAW,MAAM,YAAY,KAAK;AAAA;AAEpK,IAAI,IAAI,EAAE;AACV,SAAS,CAAC,CAAC,GAAG;AAAA,EACZ,IAAI;AAAA;AAEN,IAAI,IAAI,EAAE,MAAM,MAAM,KAAK;AAC3B,SAAS,CAAC,CAAC,GAAG,IAAI,IAAI;AAAA,EACpB,IAAI,KAAK,OAAO,KAAK,WAAW,IAAI,EAAE,QAAQ,IAAI,EAAE,SAAS,CAAC,GAAG,MAAM;AAAA,IACrE,IAAI,IAAI,OAAO,KAAK,WAAW,IAAI,EAAE;AAAA,IACrC,OAAO,IAAI,EAAE,QAAQ,EAAE,OAAO,IAAI,GAAG,KAAK,GAAG,QAAQ,GAAG,CAAC,GAAG;AAAA,KAC3D,UAAU,MAAM,IAAI,OAAO,IAAI,CAAC,EAAE;AAAA,EACrC,OAAO;AAAA;AAET,IAAI,MAAM,MAAM;AAAA,EACd,IAAI;AAAA,IACF,OAAO,CAAC,CAAC,IAAI,OAAO,cAAc;AAAA,IAClC,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,GAER;AACH,IAAI,IAAI,EAAE,kBAAkB,0BAA0B,mBAAmB,eAAe,wBAAwB,iBAAiB,gBAAgB,QAAQ,YAAY,MAAM,mBAAmB,MAAM,iBAAiB,MAAM,cAAc,QAAQ,mBAAmB,OAAO,eAAe,OAAO,qBAAqB,QAAQ,WAAW,YAAY,iBAAiB,qBAAqB,iBAAiB,YAAY,yBAAyB,kCAAkC,0BAA0B,oBAAoB,iBAAiB,QAAQ,oBAAoB,2BAA2B,YAAY,kBAAkB,iBAAiB,gBAAgB,kBAAkB,aAAa,SAAS,UAAU,cAAc,YAAY,gBAAgB,QAAQ,iBAAiB,cAAc,mBAAmB,aAAa,iBAAiB,aAAa,kBAAkB,cAAc,gBAAgB,aAAa,WAAW,SAAS,SAAS,WAAW,mBAAmB,kCAAkC,iBAAiB,oCAAoC,mBAAmB,MAAM,iBAAiB,MAAM,mBAAmB,iCAAiC,qBAAqB,iBAAiB,YAAY,WAAW,eAAe,YAAY,oBAAoB,qDAAqD,uBAAuB,sDAAsD,cAAc,8CAA8C,OAAO,gBAAgB,eAAe,QAAQ,UAAU,OAAO,WAAW,OAAO,WAAW,SAAS,gBAAgB,YAAY,WAAW,UAAU,eAAe,QAAQ,eAAe,OAAO,eAAe,CAAC,MAAM,IAAI,OAAO,WAAW,+BAA+B,GAAG,iBAAiB,CAAC,MAAM,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAC,qDAAqD,GAAG,SAAS,CAAC,MAAM,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAC,qDAAqD,GAAG,kBAAkB,CAAC,MAAM,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,MAAM,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,MAAM,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAC,uBAAuB,GAAG,EAAE;AACtoE,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,IAAI;AACR,IAAI,KAAK;AACT,IAAI,IAAI;AACR,IAAI,KAAK;AACT,IAAI,KAAK,EAAE,EAAE,EAAE,QAAQ,SAAS,CAAC,EAAE,QAAQ,cAAc,mBAAmB,EAAE,QAAQ,WAAW,uBAAuB,EAAE,QAAQ,eAAe,SAAS,EAAE,QAAQ,YAAY,cAAc,EAAE,QAAQ,SAAS,mBAAmB,EAAE,QAAQ,YAAY,EAAE,EAAE,SAAS;AACvQ,IAAI,KAAK,EAAE,EAAE,EAAE,QAAQ,SAAS,CAAC,EAAE,QAAQ,cAAc,mBAAmB,EAAE,QAAQ,WAAW,uBAAuB,EAAE,QAAQ,eAAe,SAAS,EAAE,QAAQ,YAAY,cAAc,EAAE,QAAQ,SAAS,mBAAmB,EAAE,QAAQ,UAAU,mCAAmC,EAAE,SAAS;AACtS,IAAI,IAAI;AACR,IAAI,KAAK;AACT,IAAI,IAAI;AACR,IAAI,KAAK,EAAE,6GAA6G,EAAE,QAAQ,SAAS,CAAC,EAAE,QAAQ,SAAS,8DAA8D,EAAE,SAAS;AACxO,IAAI,KAAK,EAAE,sCAAsC,EAAE,QAAQ,SAAS,CAAC,EAAE,SAAS;AAChF,IAAI,IAAI;AACR,IAAI,IAAI;AACR,IAAI,KAAK,EAAE,geAAge,GAAG,EAAE,QAAQ,WAAW,CAAC,EAAE,QAAQ,OAAO,CAAC,EAAE,QAAQ,aAAa,0EAA0E,EAAE,SAAS;AACloB,IAAI,KAAK,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,EAAE,QAAQ,WAAW,uBAAuB,EAAE,QAAQ,aAAa,EAAE,EAAE,QAAQ,UAAU,EAAE,EAAE,QAAQ,cAAc,SAAS,EAAE,QAAQ,UAAU,gDAAgD,EAAE,QAAQ,QAAQ,wBAAwB,EAAE,QAAQ,QAAQ,6DAA6D,EAAE,QAAQ,OAAO,CAAC,EAAE,SAAS;AACnX,IAAI,KAAK,EAAE,yCAAyC,EAAE,QAAQ,aAAa,EAAE,EAAE,SAAS;AACxF,IAAI,IAAI,EAAE,YAAY,IAAI,MAAM,IAAI,KAAK,IAAI,QAAQ,IAAI,SAAS,IAAI,IAAI,GAAG,MAAM,IAAI,UAAU,IAAI,MAAM,IAAI,SAAS,IAAI,WAAW,IAAI,OAAO,GAAG,MAAM,GAAG;AAC9J,IAAI,KAAK,EAAE,6JAA6J,EAAE,QAAQ,MAAM,CAAC,EAAE,QAAQ,WAAW,uBAAuB,EAAE,QAAQ,cAAc,SAAS,EAAE,QAAQ,QAAQ,yBAAyB,EAAE,QAAQ,UAAU,gDAAgD,EAAE,QAAQ,QAAQ,wBAAwB,EAAE,QAAQ,QAAQ,6DAA6D,EAAE,QAAQ,OAAO,CAAC,EAAE,SAAS;AAC3gB,IAAI,KAAK,KAAK,GAAG,UAAU,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,EAAE,QAAQ,WAAW,uBAAuB,EAAE,QAAQ,aAAa,EAAE,EAAE,QAAQ,SAAS,EAAE,EAAE,QAAQ,cAAc,SAAS,EAAE,QAAQ,UAAU,gDAAgD,EAAE,QAAQ,QAAQ,wBAAwB,EAAE,QAAQ,QAAQ,6DAA6D,EAAE,QAAQ,OAAO,CAAC,EAAE,SAAS,EAAE;AACha,IAAI,KAAK,KAAK,GAAG,MAAM,EAAE,wIAAwI,EAAE,QAAQ,WAAW,CAAC,EAAE,QAAQ,QAAQ,mKAAmK,EAAE,SAAS,GAAG,KAAK,qEAAqE,SAAS,0BAA0B,QAAQ,GAAG,UAAU,oCAAoC,WAAW,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,EAAE,QAAQ,WAAW;AAAA,EACllB,EAAE,QAAQ,YAAY,EAAE,EAAE,QAAQ,UAAU,EAAE,EAAE,QAAQ,cAAc,SAAS,EAAE,QAAQ,WAAW,EAAE,EAAE,QAAQ,SAAS,EAAE,EAAE,QAAQ,SAAS,EAAE,EAAE,QAAQ,QAAQ,EAAE,EAAE,SAAS,EAAE;AACnL,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,IAAI;AACR,IAAI,IAAI;AACR,IAAI,KAAK;AACT,IAAI,KAAK,EAAE,yBAAyB,GAAG,EAAE,QAAQ,eAAe,CAAC,EAAE,SAAS;AAC5E,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK,EAAE,0BAA0B,GAAG,EAAE,QAAQ,QAAQ,mGAAmG,EAAE,QAAQ,YAAY,KAAK,aAAa,WAAW,EAAE,QAAQ,QAAQ,yBAAyB,EAAE,QAAQ,QAAQ,gBAAgB,EAAE,SAAS;AACxS,IAAI,KAAK;AACT,IAAI,KAAK,EAAE,IAAI,GAAG,EAAE,QAAQ,UAAU,CAAC,EAAE,SAAS;AAClD,IAAI,KAAK,EAAE,IAAI,GAAG,EAAE,QAAQ,UAAU,EAAE,EAAE,SAAS;AACnD,IAAI,KAAK;AACT,IAAI,KAAK,EAAE,IAAI,IAAI,EAAE,QAAQ,kBAAkB,EAAE,EAAE,QAAQ,eAAe,CAAC,EAAE,QAAQ,UAAU,CAAC,EAAE,SAAS;AAC3G,IAAI,KAAK,EAAE,IAAI,IAAI,EAAE,QAAQ,kBAAkB,EAAE,EAAE,QAAQ,eAAe,EAAE,EAAE,QAAQ,UAAU,EAAE,EAAE,SAAS;AAC7G,IAAI,KAAK,EAAE,oNAAoN,IAAI,EAAE,QAAQ,kBAAkB,EAAE,EAAE,QAAQ,eAAe,CAAC,EAAE,QAAQ,UAAU,CAAC,EAAE,SAAS;AAC3T,IAAI,KAAK,EAAE,aAAa,IAAI,EAAE,QAAQ,UAAU,CAAC,EAAE,SAAS;AAC5D,IAAI,KAAK,EAAE,qCAAqC,EAAE,QAAQ,UAAU,8BAA8B,EAAE,QAAQ,SAAS,8IAA8I,EAAE,SAAS;AAC9Q,IAAI,KAAK,EAAE,CAAC,EAAE,QAAQ,aAAa,KAAK,EAAE,SAAS;AACnD,IAAI,KAAK,EAAE,0JAA0J,EAAE,QAAQ,WAAW,EAAE,EAAE,QAAQ,aAAa,6EAA6E,EAAE,SAAS;AAC3S,IAAI,IAAI;AACR,IAAI,KAAK,EAAE,mEAAmE,EAAE,QAAQ,SAAS,CAAC,EAAE,QAAQ,QAAQ,yCAAyC,EAAE,QAAQ,SAAS,6DAA6D,EAAE,SAAS;AACxP,IAAI,KAAK,EAAE,yBAAyB,EAAE,QAAQ,SAAS,CAAC,EAAE,QAAQ,OAAO,CAAC,EAAE,SAAS;AACrF,IAAI,KAAK,EAAE,uBAAuB,EAAE,QAAQ,OAAO,CAAC,EAAE,SAAS;AAC/D,IAAI,KAAK,EAAE,yBAAyB,GAAG,EAAE,QAAQ,WAAW,EAAE,EAAE,QAAQ,UAAU,EAAE,EAAE,SAAS;AAC/F,IAAI,KAAK;AACT,IAAI,IAAI,EAAE,YAAY,GAAG,gBAAgB,IAAI,UAAU,IAAI,WAAW,IAAI,IAAI,IAAI,MAAM,IAAI,KAAK,GAAG,gBAAgB,IAAI,mBAAmB,IAAI,mBAAmB,IAAI,QAAQ,IAAI,MAAM,IAAI,QAAQ,IAAI,aAAa,IAAI,SAAS,IAAI,eAAe,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE;AACnR,IAAI,KAAK,KAAK,GAAG,MAAM,EAAE,yBAAyB,EAAE,QAAQ,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,+BAA+B,EAAE,QAAQ,SAAS,CAAC,EAAE,SAAS,EAAE;AAC/J,IAAI,IAAI,KAAK,GAAG,mBAAmB,IAAI,gBAAgB,IAAI,KAAK,EAAE,gEAAgE,EAAE,QAAQ,YAAY,EAAE,EAAE,QAAQ,SAAS,2EAA2E,EAAE,SAAS,GAAG,YAAY,8EAA8E,KAAK,2EAA2E,MAAM,EAAE,qNAAqN,EAAE,QAAQ,YAAY,EAAE,EAAE,SAAS,EAAE;AAClrB,IAAI,KAAK,KAAK,GAAG,IAAI,EAAE,EAAE,EAAE,QAAQ,QAAQ,GAAG,EAAE,SAAS,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,QAAQ,eAAe,EAAE,QAAQ,WAAW,GAAG,EAAE,SAAS,EAAE;AAChJ,IAAI,IAAI,EAAE,QAAQ,GAAG,KAAK,IAAI,UAAU,GAAG;AAC3C,IAAI,IAAI,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,IAAI,UAAU,GAAG;AACtD,IAAI,KAAK,EAAE,KAAK,SAAS,KAAK,QAAQ,KAAK,QAAQ,KAAK,UAAU,KAAK,QAAQ;AAC/E,IAAI,KAAK,CAAC,MAAM,GAAG;AACnB,SAAS,CAAC,CAAC,GAAG,GAAG;AAAA,EACf,IAAI,GAAG;AAAA,IACL,IAAI,EAAE,WAAW,KAAK,CAAC;AAAA,MACrB,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE;AAAA,EACxC,EAAO,SAAI,EAAE,mBAAmB,KAAK,CAAC;AAAA,IACpC,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE;AAAA,EAC9C,OAAO;AAAA;AAET,SAAS,CAAC,CAAC,GAAG;AAAA,EACZ,IAAI;AAAA,IACF,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,eAAe,GAAG;AAAA,IAC7C,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,OAAO;AAAA;AAET,SAAS,CAAC,CAAC,GAAG,GAAG;AAAA,EACf,IAAI,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG,GAAG,MAAM;AAAA,IAC1C,IAAI,IAAI,OAAO,IAAI;AAAA,IACnB,MAAM,EAAE,KAAK,KAAK,EAAE,OAAO;AAAA,MACzB,IAAI,CAAC;AAAA,IACP,OAAO,IAAI,MAAM;AAAA,GAClB,GAAG,IAAI,GAAG,MAAM,EAAE,SAAS,GAAG,IAAI;AAAA,EACnC,IAAI,EAAE,GAAG,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,SAAS,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,KAAK,EAAE,IAAI,GAAG;AAAA,IAC1E,IAAI,EAAE,SAAS;AAAA,MACb,EAAE,OAAO,CAAC;AAAA,IAEV;AAAA,YAAM,EAAE,SAAS;AAAA,QACf,EAAE,KAAK,EAAE;AAAA,EACf,MAAM,IAAI,EAAE,QAAQ;AAAA,IAClB,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,WAAW,GAAG;AAAA,EAC7C,OAAO;AAAA;AAET,SAAS,CAAC,CAAC,GAAG,GAAG,IAAI;AAAA,EACnB,IAAI,IAAI,EAAE;AAAA,EACV,IAAI,MAAM;AAAA,IACR,OAAO;AAAA,EACT,IAAI,IAAI;AAAA,EACR,MAAM,IAAI,KAAK;AAAA,IACb,IAAI,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;AAAA,IAC1B,IAAI,MAAM,KAAK,CAAC;AAAA,MACd;AAAA,IACG,SAAI,MAAM,KAAK;AAAA,MAClB;AAAA,IAEA;AAAA;AAAA,EACJ;AAAA,EACA,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;AAAA;AAEzB,SAAS,EAAE,CAAC,GAAG,GAAG;AAAA,EAChB,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM;AAAA,IACtB,OAAO;AAAA,EACT,IAAI,KAAK;AAAA,EACT,SAAS,IAAI,EAAE,IAAI,EAAE,QAAQ;AAAA,IAC3B,IAAI,EAAE,OAAO;AAAA,MACX;AAAA,IACG,SAAI,EAAE,OAAO,EAAE;AAAA,MAClB;AAAA,IACG,SAAI,EAAE,OAAO,EAAE,OAAO,MAAM,KAAK;AAAA,MACpC,OAAO;AAAA,EACX,OAAO,KAAK,IAAI,KAAK;AAAA;AAEvB,SAAS,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG;AAAA,EAC1B,IAAI,IAAI,EAAE,MAAM,IAAI,EAAE,SAAS,MAAM,IAAI,EAAE,GAAG,QAAQ,EAAE,MAAM,mBAAmB,IAAI;AAAA,EACrF,EAAE,MAAM,SAAS;AAAA,EACjB,IAAI,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,MAAM,UAAU,QAAQ,KAAK,IAAI,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,EAAE,aAAa,CAAC,EAAE;AAAA,EAC1H,OAAO,EAAE,MAAM,SAAS,OAAO;AAAA;AAEjC,SAAS,EAAE,CAAC,GAAG,GAAG,IAAI;AAAA,EACpB,IAAI,IAAI,EAAE,MAAM,GAAG,MAAM,sBAAsB;AAAA,EAC/C,IAAI,MAAM;AAAA,IACR,OAAO;AAAA,EACT,IAAI,IAAI,EAAE;AAAA,EACV,OAAO,EAAE,MAAM;AAAA,CAChB,EAAE,IAAI,CAAC,MAAM;AAAA,IACV,IAAI,IAAI,EAAE,MAAM,GAAG,MAAM,cAAc;AAAA,IACvC,IAAI,MAAM;AAAA,MACR,OAAO;AAAA,IACT,KAAK,KAAK;AAAA,IACV,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,IAAI;AAAA,GACnD,EAAE,KAAK;AAAA,CACT;AAAA;AAED,IAAI,IAAI,MAAM;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,CAAC,GAAG;AAAA,IACb,KAAK,UAAU,KAAK;AAAA;AAAA,EAEtB,KAAK,CAAC,GAAG;AAAA,IACP,IAAI,KAAK,KAAK,MAAM,MAAM,QAAQ,KAAK,CAAC;AAAA,IACxC,IAAI,MAAM,GAAG,GAAG,SAAS;AAAA,MACvB,OAAO,EAAE,MAAM,SAAS,KAAK,GAAG,GAAG;AAAA;AAAA,EAEvC,IAAI,CAAC,GAAG;AAAA,IACN,IAAI,KAAK,KAAK,MAAM,MAAM,KAAK,KAAK,CAAC;AAAA,IACrC,IAAI,IAAI;AAAA,MACN,IAAI,IAAI,GAAG,GAAG,QAAQ,KAAK,MAAM,MAAM,kBAAkB,EAAE;AAAA,MAC3D,OAAO,EAAE,MAAM,QAAQ,KAAK,GAAG,IAAI,gBAAgB,YAAY,MAAM,KAAK,QAAQ,WAAW,IAAI,EAAE,GAAG;AAAA,CAC3G,EAAE;AAAA,IACC;AAAA;AAAA,EAEF,MAAM,CAAC,GAAG;AAAA,IACR,IAAI,KAAK,KAAK,MAAM,MAAM,OAAO,KAAK,CAAC;AAAA,IACvC,IAAI,IAAI;AAAA,MACN,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,MAAM,IAAI,KAAK,KAAK;AAAA,MAChD,OAAO,EAAE,MAAM,QAAQ,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,GAAG,KAAK,EAAE,QAAQ,KAAK,MAAM,OAAO,gBAAgB,IAAI,IAAI,GAAG,IAAI,MAAM,EAAE;AAAA,IAC7H;AAAA;AAAA,EAEF,OAAO,CAAC,GAAG;AAAA,IACT,IAAI,KAAK,KAAK,MAAM,MAAM,QAAQ,KAAK,CAAC;AAAA,IACxC,IAAI,IAAI;AAAA,MACN,IAAI,IAAI,GAAG,GAAG,KAAK;AAAA,MACnB,IAAI,KAAK,MAAM,MAAM,WAAW,KAAK,CAAC,GAAG;AAAA,QACvC,IAAI,IAAI,EAAE,GAAG,GAAG;AAAA,SACf,KAAK,QAAQ,YAAY,CAAC,KAAK,KAAK,MAAM,MAAM,gBAAgB,KAAK,CAAC,OAAO,IAAI,EAAE,KAAK;AAAA,MAC3F;AAAA,MACA,OAAO,EAAE,MAAM,WAAW,KAAK,GAAG,IAAI,OAAO,GAAG,GAAG,QAAQ,MAAM,GAAG,QAAQ,KAAK,MAAM,OAAO,CAAC,EAAE;AAAA,IACnG;AAAA;AAAA,EAEF,EAAE,CAAC,GAAG;AAAA,IACJ,IAAI,KAAK,KAAK,MAAM,MAAM,GAAG,KAAK,CAAC;AAAA,IACnC,IAAI;AAAA,MACF,OAAO,EAAE,MAAM,MAAM,KAAK,EAAE,GAAG,IAAI;AAAA,CACxC,EAAE;AAAA;AAAA,EAED,UAAU,CAAC,GAAG;AAAA,IACZ,IAAI,KAAK,KAAK,MAAM,MAAM,WAAW,KAAK,CAAC;AAAA,IAC3C,IAAI,IAAI;AAAA,MACN,IAAI,IAAI,EAAE,GAAG,IAAI;AAAA,CACtB,EAAE,MAAM;AAAA,CACR,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC;AAAA,MACnB,MAAM,EAAE,SAAS,KAAK;AAAA,QACpB,IAAI,IAAI,OAAO,IAAI,CAAC,GAAG;AAAA,QACvB,KAAK,IAAI,EAAE,IAAI,EAAE,QAAQ;AAAA,UACvB,IAAI,KAAK,MAAM,MAAM,gBAAgB,KAAK,EAAE,EAAE;AAAA,YAC5C,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI;AAAA,UACf,SAAI,CAAC;AAAA,YACR,EAAE,KAAK,EAAE,EAAE;AAAA,UAEX;AAAA;AAAA,QACJ,IAAI,EAAE,MAAM,CAAC;AAAA,QACb,IAAI,IAAI,EAAE,KAAK;AAAA,CACtB,GAAG,IAAI,EAAE,QAAQ,KAAK,MAAM,MAAM,yBAAyB;AAAA,OACrD,EAAE,QAAQ,KAAK,MAAM,MAAM,0BAA0B,EAAE;AAAA,QACtD,IAAI,IAAI,GAAG;AAAA,EACjB,MAAM,GAAG,IAAI,IAAI,GAAG;AAAA,EACpB,MAAM;AAAA,QACA,IAAI,IAAI,KAAK,MAAM,MAAM;AAAA,QACzB,IAAI,KAAK,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,YAAY,GAAG,GAAG,IAAI,GAAG,KAAK,MAAM,MAAM,MAAM,GAAG,EAAE,WAAW;AAAA,UAC1G;AAAA,QACF,IAAI,KAAK,EAAE,GAAG,EAAE;AAAA,QAChB,IAAI,IAAI,SAAS;AAAA,UACf;AAAA,QACF,IAAI,IAAI,SAAS,cAAc;AAAA,UAC7B,IAAI,IAAI,IAAI,IAAI,EAAE,MAAM;AAAA,IAC9B,EAAE,KAAK;AAAA,CACV,GAAG,IAAI,KAAK,WAAW,CAAC;AAAA,UACf,EAAE,EAAE,SAAS,KAAK,GAAG,IAAI,EAAE,UAAU,GAAG,EAAE,SAAS,EAAE,IAAI,MAAM,IAAI,EAAE,KAAK,IAAI,EAAE,UAAU,GAAG,EAAE,SAAS,EAAE,KAAK,MAAM,IAAI,EAAE;AAAA,UAC3H;AAAA,QACF,EAAO,SAAI,IAAI,SAAS,QAAQ;AAAA,UAC9B,IAAI,IAAI,IAAI,IAAI,EAAE,MAAM;AAAA,IAC9B,EAAE,KAAK;AAAA,CACV,GAAG,IAAI,KAAK,KAAK,CAAC;AAAA,UACT,EAAE,EAAE,SAAS,KAAK,GAAG,IAAI,EAAE,UAAU,GAAG,EAAE,SAAS,GAAG,IAAI,MAAM,IAAI,EAAE,KAAK,IAAI,EAAE,UAAU,GAAG,EAAE,SAAS,EAAE,IAAI,MAAM,IAAI,EAAE,KAAK,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM;AAAA,CACpL;AAAA,UACS;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO,EAAE,MAAM,cAAc,KAAK,GAAG,QAAQ,GAAG,MAAM,EAAE;AAAA,IAC1D;AAAA;AAAA,EAEF,IAAI,CAAC,GAAG;AAAA,IACN,IAAI,KAAK,KAAK,MAAM,MAAM,KAAK,KAAK,CAAC;AAAA,IACrC,IAAI,IAAI;AAAA,MACN,IAAI,IAAI,GAAG,GAAG,KAAK,GAAG,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,QAAQ,KAAK,IAAI,SAAS,GAAG,OAAO,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,OAAO,OAAO,OAAO,CAAC,EAAE;AAAA,MAC1I,IAAI,IAAI,aAAa,EAAE,MAAM,EAAE,MAAM,KAAK,KAAK,KAAK,QAAQ,aAAa,IAAI,IAAI,IAAI;AAAA,MACrF,IAAI,IAAI,KAAK,MAAM,MAAM,cAAc,CAAC,GAAG,IAAI;AAAA,MAC/C,MAAM,KAAK;AAAA,QACT,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI;AAAA,QAC3B,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,MAAM,MAAM,GAAG,KAAK,CAAC;AAAA,UACjD;AAAA,QACF,IAAI,GAAG,IAAI,IAAI,EAAE,UAAU,EAAE,MAAM;AAAA,QACnC,IAAI,IAAI,GAAG,GAAG,MAAM;AAAA,GACzB,CAAC,EAAE,GAAG,QAAQ,KAAK,MAAM,MAAM,iBAAiB,CAAC,MAAM,IAAI,OAAO,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK,EAAE,MAAM;AAAA,GAC/F,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI;AAAA,QACrB,IAAI,KAAK,QAAQ,YAAY,IAAI,GAAG,IAAI,EAAE,UAAU,KAAK,IAAI,IAAI,GAAG,GAAG,SAAS,KAAK,IAAI,GAAG,GAAG,OAAO,KAAK,MAAM,MAAM,YAAY,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK,GAAG,GAAG,SAAS,KAAK,KAAK,MAAM,MAAM,UAAU,KAAK,EAAE,MAAM,KAAK,KAAK;AAAA,GACzP,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG;AAAA,UACxC,IAAI,IAAI,KAAK,MAAM,MAAM,gBAAgB,CAAC,GAAG,IAAI,KAAK,MAAM,MAAM,QAAQ,CAAC,GAAG,IAAI,KAAK,MAAM,MAAM,iBAAiB,CAAC,GAAG,KAAK,KAAK,MAAM,MAAM,kBAAkB,CAAC,GAAG,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAAA,UAC1M,MAAM,KAAK;AAAA,YACT,IAAI,IAAI,EAAE,MAAM;AAAA,GACzB,CAAC,EAAE,IAAI;AAAA,YACE,IAAI,KAAK,GAAG,KAAK,QAAQ,YAAY,KAAK,GAAG,QAAQ,KAAK,MAAM,MAAM,oBAAoB,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,QAAQ,KAAK,MAAM,MAAM,eAAe,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AAAA,cACpO;AAAA,YACF,IAAI,EAAE,OAAO,KAAK,MAAM,MAAM,YAAY,KAAK,KAAK,CAAC,GAAG,KAAK;AAAA,cAC3D,KAAK;AAAA,IACf,EAAE,MAAM,CAAC;AAAA,YACI;AAAA,cACH,IAAI,KAAK,EAAE,QAAQ,KAAK,MAAM,MAAM,eAAe,MAAM,EAAE,OAAO,KAAK,MAAM,MAAM,YAAY,KAAK,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC;AAAA,gBAC1I;AAAA,cACF,KAAK;AAAA,IACf;AAAA;AAAA,YAEQ,CAAC,KAAK,CAAC,GAAG,KAAK,MAAM,IAAI,OAAO,KAAK,IAAI;AAAA,GAClD,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC;AAAA,UACrC;AAAA,QACF;AAAA,QACA,EAAE,UAAU,IAAI,EAAE,QAAQ,OAAO,KAAK,MAAM,MAAM,gBAAgB,KAAK,CAAC,MAAM,IAAI,QAAQ,EAAE,MAAM,KAAK,EAAE,MAAM,aAAa,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,QAAQ,OAAO,KAAK,MAAM,MAAM,WAAW,KAAK,CAAC,GAAG,OAAO,OAAO,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO;AAAA,MACtP;AAAA,MACA,IAAI,IAAI,EAAE,MAAM,GAAG,EAAE;AAAA,MACrB,IAAI;AAAA,QACF,EAAE,MAAM,EAAE,IAAI,QAAQ,GAAG,EAAE,OAAO,EAAE,KAAK,QAAQ;AAAA,MAEjD;AAAA;AAAA,MACF,EAAE,MAAM,EAAE,IAAI,QAAQ;AAAA,MACtB,SAAS,KAAK,EAAE,OAAO;AAAA,QACrB,IAAI,KAAK,MAAM,MAAM,MAAM,OAAO,EAAE,SAAS,KAAK,MAAM,YAAY,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM;AAAA,UACvF,IAAI,EAAE,OAAO,EAAE,KAAK,QAAQ,KAAK,MAAM,MAAM,iBAAiB,EAAE,GAAG,EAAE,OAAO,IAAI,SAAS,UAAU,EAAE,OAAO,IAAI,SAAS,aAAa;AAAA,YACpI,EAAE,OAAO,GAAG,MAAM,EAAE,OAAO,GAAG,IAAI,QAAQ,KAAK,MAAM,MAAM,iBAAiB,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,KAAK,QAAQ,KAAK,MAAM,MAAM,iBAAiB,EAAE;AAAA,YACjK,SAAS,IAAI,KAAK,MAAM,YAAY,SAAS,EAAE,KAAK,GAAG;AAAA,cACrD,IAAI,KAAK,MAAM,MAAM,WAAW,KAAK,KAAK,MAAM,YAAY,GAAG,GAAG,GAAG;AAAA,gBACnE,KAAK,MAAM,YAAY,GAAG,MAAM,KAAK,MAAM,YAAY,GAAG,IAAI,QAAQ,KAAK,MAAM,MAAM,iBAAiB,EAAE;AAAA,gBAC1G;AAAA,cACF;AAAA,UACJ;AAAA,UACA,IAAI,IAAI,KAAK,MAAM,MAAM,iBAAiB,KAAK,EAAE,GAAG;AAAA,UACpD,IAAI,GAAG;AAAA,YACL,IAAI,IAAI,EAAE,MAAM,YAAY,KAAK,EAAE,KAAK,KAAK,SAAS,EAAE,OAAO,MAAM;AAAA,YACrE,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,MAAM,CAAC,aAAa,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,KAAK,YAAY,EAAE,OAAO,MAAM,EAAE,OAAO,GAAG,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,OAAO,GAAG,OAAO,QAAQ,CAAC,KAAK,EAAE,OAAO,QAAQ,EAAE,MAAM,aAAa,KAAK,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,QAAQ,CAAC;AAAA,UAClX;AAAA,QACF;AAAA,QACA,IAAI,CAAC,EAAE,OAAO;AAAA,UACZ,IAAI,IAAI,EAAE,OAAO,OAAO,CAAC,MAAM,EAAE,SAAS,OAAO,GAAG,IAAI,EAAE,SAAS,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,MAAM,MAAM,QAAQ,KAAK,EAAE,GAAG,CAAC;AAAA,UAC1H,EAAE,QAAQ;AAAA,QACZ;AAAA,MACF;AAAA,MACA,IAAI,EAAE;AAAA,QACJ,SAAS,KAAK,EAAE,OAAO;AAAA,UACrB,EAAE,QAAQ;AAAA,UACV,SAAS,KAAK,EAAE;AAAA,YACd,EAAE,SAAS,WAAW,EAAE,OAAO;AAAA,QACnC;AAAA,MACF,OAAO;AAAA,IACT;AAAA;AAAA,EAEF,IAAI,CAAC,GAAG;AAAA,IACN,IAAI,KAAK,KAAK,MAAM,MAAM,KAAK,KAAK,CAAC;AAAA,IACrC,IAAI;AAAA,MACF,OAAO,EAAE,MAAM,QAAQ,OAAO,MAAM,KAAK,GAAG,IAAI,KAAK,GAAG,OAAO,SAAS,GAAG,OAAO,YAAY,GAAG,OAAO,SAAS,MAAM,GAAG,GAAG;AAAA;AAAA,EAEjI,GAAG,CAAC,GAAG;AAAA,IACL,IAAI,KAAK,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC;AAAA,IACpC,IAAI,IAAI;AAAA,MACN,IAAI,IAAI,GAAG,GAAG,YAAY,EAAE,QAAQ,KAAK,MAAM,MAAM,qBAAqB,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,QAAQ,KAAK,MAAM,MAAM,cAAc,IAAI,EAAE,QAAQ,KAAK,MAAM,OAAO,gBAAgB,IAAI,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,SAAS,CAAC,EAAE,QAAQ,KAAK,MAAM,OAAO,gBAAgB,IAAI,IAAI,GAAG;AAAA,MAC3S,OAAO,EAAE,MAAM,OAAO,KAAK,GAAG,KAAK,GAAG,IAAI,MAAM,GAAG,OAAO,EAAE;AAAA,IAC9D;AAAA;AAAA,EAEF,KAAK,CAAC,GAAG;AAAA,IACP,IAAI,KAAK,KAAK,MAAM,MAAM,MAAM,KAAK,CAAC;AAAA,IACtC,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,MAAM,eAAe,KAAK,GAAG,EAAE;AAAA,MACpD;AAAA,IACF,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,QAAQ,KAAK,MAAM,MAAM,iBAAiB,EAAE,EAAE,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,GAAG,QAAQ,KAAK,MAAM,MAAM,mBAAmB,EAAE,EAAE,MAAM;AAAA,CACzK,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,SAAS,KAAK,GAAG,IAAI,QAAQ,CAAC,GAAG,OAAO,CAAC,GAAG,MAAM,CAAC,EAAE;AAAA,IACtE,IAAI,EAAE,WAAW,EAAE,QAAQ;AAAA,MACzB,SAAS,KAAK;AAAA,QACZ,KAAK,MAAM,MAAM,gBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,IAAI,KAAK,MAAM,MAAM,iBAAiB,KAAK,CAAC,IAAI,EAAE,MAAM,KAAK,QAAQ,IAAI,KAAK,MAAM,MAAM,eAAe,KAAK,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,IAAI,EAAE,MAAM,KAAK,IAAI;AAAA,MAC5N,SAAS,IAAI,EAAE,IAAI,EAAE,QAAQ;AAAA,QAC3B,EAAE,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,QAAQ,KAAK,MAAM,OAAO,EAAE,EAAE,GAAG,QAAQ,MAAM,OAAO,EAAE,MAAM,GAAG,CAAC;AAAA,MAChG,SAAS,KAAK;AAAA,QACZ,EAAE,KAAK,KAAK,EAAE,GAAG,EAAE,OAAO,MAAM,EAAE,IAAI,CAAC,GAAG,OAAO,EAAE,MAAM,GAAG,QAAQ,KAAK,MAAM,OAAO,CAAC,GAAG,QAAQ,OAAO,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,MAChI,OAAO;AAAA,IACT;AAAA;AAAA,EAEF,QAAQ,CAAC,GAAG;AAAA,IACV,IAAI,KAAK,KAAK,MAAM,MAAM,SAAS,KAAK,CAAC;AAAA,IACzC,IAAI;AAAA,MACF,OAAO,EAAE,MAAM,WAAW,KAAK,GAAG,IAAI,OAAO,GAAG,GAAG,OAAO,CAAC,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,IAAI,QAAQ,KAAK,MAAM,OAAO,GAAG,EAAE,EAAE;AAAA;AAAA,EAEhI,SAAS,CAAC,GAAG;AAAA,IACX,IAAI,KAAK,KAAK,MAAM,MAAM,UAAU,KAAK,CAAC;AAAA,IAC1C,IAAI,IAAI;AAAA,MACN,IAAI,IAAI,GAAG,GAAG,OAAO,GAAG,GAAG,SAAS,CAAC,MAAM;AAAA,IAC7C,GAAG,GAAG,MAAM,GAAG,EAAE,IAAI,GAAG;AAAA,MACtB,OAAO,EAAE,MAAM,aAAa,KAAK,GAAG,IAAI,MAAM,GAAG,QAAQ,KAAK,MAAM,OAAO,CAAC,EAAE;AAAA,IAChF;AAAA;AAAA,EAEF,IAAI,CAAC,GAAG;AAAA,IACN,IAAI,KAAK,KAAK,MAAM,MAAM,KAAK,KAAK,CAAC;AAAA,IACrC,IAAI;AAAA,MACF,OAAO,EAAE,MAAM,QAAQ,KAAK,GAAG,IAAI,MAAM,GAAG,IAAI,QAAQ,KAAK,MAAM,OAAO,GAAG,EAAE,EAAE;AAAA;AAAA,EAErF,MAAM,CAAC,GAAG;AAAA,IACR,IAAI,KAAK,KAAK,MAAM,OAAO,OAAO,KAAK,CAAC;AAAA,IACxC,IAAI;AAAA,MACF,OAAO,EAAE,MAAM,UAAU,KAAK,GAAG,IAAI,MAAM,GAAG,GAAG;AAAA;AAAA,EAErD,GAAG,CAAC,GAAG;AAAA,IACL,IAAI,KAAK,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC;AAAA,IACrC,IAAI;AAAA,MACF,OAAO,CAAC,KAAK,MAAM,MAAM,UAAU,KAAK,MAAM,MAAM,UAAU,KAAK,GAAG,EAAE,IAAI,KAAK,MAAM,MAAM,SAAS,OAAO,KAAK,MAAM,MAAM,UAAU,KAAK,MAAM,MAAM,QAAQ,KAAK,GAAG,EAAE,MAAM,KAAK,MAAM,MAAM,SAAS,QAAQ,CAAC,KAAK,MAAM,MAAM,cAAc,KAAK,MAAM,MAAM,kBAAkB,KAAK,GAAG,EAAE,IAAI,KAAK,MAAM,MAAM,aAAa,OAAO,KAAK,MAAM,MAAM,cAAc,KAAK,MAAM,MAAM,gBAAgB,KAAK,GAAG,EAAE,MAAM,KAAK,MAAM,MAAM,aAAa,QAAQ,EAAE,MAAM,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,MAAM,MAAM,QAAQ,YAAY,KAAK,MAAM,MAAM,YAAY,OAAO,OAAO,MAAM,GAAG,GAAG;AAAA;AAAA,EAEnkB,IAAI,CAAC,GAAG;AAAA,IACN,IAAI,KAAK,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC;AAAA,IACtC,IAAI,IAAI;AAAA,MACN,IAAI,IAAI,GAAG,GAAG,KAAK;AAAA,MACnB,IAAI,CAAC,KAAK,QAAQ,YAAY,KAAK,MAAM,MAAM,kBAAkB,KAAK,CAAC,GAAG;AAAA,QACxE,IAAI,CAAC,KAAK,MAAM,MAAM,gBAAgB,KAAK,CAAC;AAAA,UAC1C;AAAA,QACF,IAAI,IAAI,EAAE,EAAE,MAAM,GAAG,EAAE,GAAG,IAAI;AAAA,QAC9B,KAAK,EAAE,SAAS,EAAE,UAAU,MAAM;AAAA,UAChC;AAAA,MACJ,EAAO;AAAA,QACL,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI;AAAA,QACtB,IAAI,MAAM;AAAA,UACR;AAAA,QACF,IAAI,IAAI,IAAI;AAAA,UACV,IAAI,KAAK,GAAG,GAAG,QAAQ,GAAG,MAAM,IAAI,IAAI,KAAK,GAAG,GAAG,SAAS;AAAA,UAC5D,GAAG,KAAK,GAAG,GAAG,UAAU,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,UAAU,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,KAAK;AAAA,QAC/E;AAAA;AAAA,MAEF,IAAI,IAAI,GAAG,IAAI,IAAI;AAAA,MACnB,IAAI,KAAK,QAAQ,UAAU;AAAA,QACzB,IAAI,IAAI,KAAK,MAAM,MAAM,kBAAkB,KAAK,CAAC;AAAA,QACjD,MAAM,IAAI,EAAE,IAAI,IAAI,EAAE;AAAA,MACxB,EACE;AAAA,YAAI,GAAG,KAAK,GAAG,GAAG,MAAM,GAAG,EAAE,IAAI;AAAA,MACnC,OAAO,IAAI,EAAE,KAAK,GAAG,KAAK,MAAM,MAAM,kBAAkB,KAAK,CAAC,MAAM,KAAK,QAAQ,YAAY,CAAC,KAAK,MAAM,MAAM,gBAAgB,KAAK,CAAC,IAAI,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,MAAM,GAAG,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM,KAAK,EAAE,QAAQ,KAAK,MAAM,OAAO,gBAAgB,IAAI,GAAG,OAAO,KAAK,EAAE,QAAQ,KAAK,MAAM,OAAO,gBAAgB,IAAI,EAAE,GAAG,GAAG,IAAI,KAAK,OAAO,KAAK,KAAK;AAAA,IACtV;AAAA;AAAA,EAEF,OAAO,CAAC,GAAG,IAAI;AAAA,IACb,IAAI;AAAA,IACJ,KAAK,IAAI,KAAK,MAAM,OAAO,QAAQ,KAAK,CAAC,OAAO,IAAI,KAAK,MAAM,OAAO,OAAO,KAAK,CAAC,IAAI;AAAA,MACrF,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,QAAQ,KAAK,MAAM,MAAM,qBAAqB,GAAG,GAAG,IAAI,GAAG,EAAE,YAAY;AAAA,MAChG,IAAI,CAAC,GAAG;AAAA,QACN,IAAI,IAAI,EAAE,GAAG,OAAO,CAAC;AAAA,QACrB,OAAO,EAAE,MAAM,QAAQ,KAAK,GAAG,MAAM,EAAE;AAAA,MACzC;AAAA,MACA,OAAO,GAAG,GAAG,GAAG,EAAE,IAAI,KAAK,OAAO,KAAK,KAAK;AAAA,IAC9C;AAAA;AAAA,EAEF,QAAQ,CAAC,GAAG,IAAI,IAAI,IAAI;AAAA,IACtB,IAAI,IAAI,KAAK,MAAM,OAAO,eAAe,KAAK,CAAC;AAAA,IAC/C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,MAAM,mBAAmB;AAAA,MAC5D;AAAA,IACF,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,KAAK,KAAK,MAAM,OAAO,YAAY,KAAK,CAAC,GAAG;AAAA,MACxE,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,SAAS,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,GAAG,OAAO,MAAM,KAAK,MAAM,OAAO,oBAAoB,KAAK,MAAM,OAAO;AAAA,MAChI,KAAK,EAAE,YAAY,GAAG,KAAK,GAAG,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,QAAQ;AAAA,QACjF,IAAI,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AAAA,UACrD;AAAA,QACF,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI;AAAA,UACnC,KAAK;AAAA,UACL;AAAA,QACF,EAAO,UAAK,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK,GAAG,IAAI,KAAK,IAAI;AAAA,UACpD,KAAK;AAAA,UACL;AAAA,QACF;AAAA,QACA,IAAI,KAAK,GAAG,IAAI;AAAA,UACd;AAAA,QACF,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC;AAAA,QACzB,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,QAAQ,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,IAAI,CAAC;AAAA,QAChE,IAAI,KAAK,IAAI,GAAG,CAAC,IAAI,GAAG;AAAA,UACtB,IAAI,IAAI,GAAG,MAAM,GAAG,EAAE;AAAA,UACtB,OAAO,EAAE,MAAM,MAAM,KAAK,IAAI,MAAM,GAAG,QAAQ,KAAK,MAAM,aAAa,CAAC,EAAE;AAAA,QAC5E;AAAA,QACA,IAAI,IAAI,GAAG,MAAM,GAAG,EAAE;AAAA,QACtB,OAAO,EAAE,MAAM,UAAU,KAAK,IAAI,MAAM,GAAG,QAAQ,KAAK,MAAM,aAAa,CAAC,EAAE;AAAA,MAChF;AAAA,IACF;AAAA;AAAA,EAEF,QAAQ,CAAC,GAAG;AAAA,IACV,IAAI,KAAK,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC;AAAA,IACtC,IAAI,IAAI;AAAA,MACN,IAAI,IAAI,GAAG,GAAG,QAAQ,KAAK,MAAM,MAAM,mBAAmB,GAAG,GAAG,IAAI,KAAK,MAAM,MAAM,aAAa,KAAK,CAAC,GAAG,IAAI,KAAK,MAAM,MAAM,kBAAkB,KAAK,CAAC,KAAK,KAAK,MAAM,MAAM,gBAAgB,KAAK,CAAC;AAAA,MACpM,OAAO,KAAK,MAAM,IAAI,EAAE,UAAU,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,YAAY,KAAK,GAAG,IAAI,MAAM,EAAE;AAAA,IAC/F;AAAA;AAAA,EAEF,EAAE,CAAC,GAAG;AAAA,IACJ,IAAI,KAAK,KAAK,MAAM,OAAO,GAAG,KAAK,CAAC;AAAA,IACpC,IAAI;AAAA,MACF,OAAO,EAAE,MAAM,MAAM,KAAK,GAAG,GAAG;AAAA;AAAA,EAEpC,GAAG,CAAC,GAAG;AAAA,IACL,IAAI,KAAK,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC;AAAA,IACrC,IAAI;AAAA,MACF,OAAO,EAAE,MAAM,OAAO,KAAK,GAAG,IAAI,MAAM,GAAG,IAAI,QAAQ,KAAK,MAAM,aAAa,GAAG,EAAE,EAAE;AAAA;AAAA,EAE1F,QAAQ,CAAC,GAAG;AAAA,IACV,IAAI,KAAK,KAAK,MAAM,OAAO,SAAS,KAAK,CAAC;AAAA,IAC1C,IAAI,IAAI;AAAA,MACN,IAAI,GAAG;AAAA,MACP,OAAO,GAAG,OAAO,OAAO,IAAI,GAAG,IAAI,IAAI,YAAY,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,MAAM,QAAQ,KAAK,GAAG,IAAI,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAE,MAAM,QAAQ,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE;AAAA,IACxK;AAAA;AAAA,EAEF,GAAG,CAAC,GAAG;AAAA,IACL,IAAI;AAAA,IACJ,IAAI,KAAK,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,GAAG;AAAA,MACtC,IAAI,GAAG;AAAA,MACP,IAAI,GAAG,OAAO;AAAA,QACZ,IAAI,GAAG,IAAI,IAAI,YAAY;AAAA,MACxB;AAAA,QACH,IAAI;AAAA,QACJ;AAAA,UACE,IAAI,GAAG,IAAI,GAAG,KAAK,KAAK,MAAM,OAAO,WAAW,KAAK,GAAG,EAAE,IAAI,MAAM;AAAA,eAC/D,MAAM,GAAG;AAAA,QAChB,IAAI,GAAG,IAAI,GAAG,OAAO,SAAS,IAAI,YAAY,GAAG,KAAK,IAAI,GAAG;AAAA;AAAA,MAE/D,OAAO,EAAE,MAAM,QAAQ,KAAK,GAAG,IAAI,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAE,MAAM,QAAQ,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE;AAAA,IACnG;AAAA;AAAA,EAEF,UAAU,CAAC,GAAG;AAAA,IACZ,IAAI,KAAK,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC;AAAA,IACtC,IAAI,IAAI;AAAA,MACN,IAAI,IAAI,KAAK,MAAM,MAAM;AAAA,MACzB,OAAO,EAAE,MAAM,QAAQ,KAAK,GAAG,IAAI,MAAM,GAAG,IAAI,SAAS,EAAE;AAAA,IAC7D;AAAA;AAEJ;AACA,IAAI,IAAI,MAAM,EAAE;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,CAAC,GAAG;AAAA,IACb,KAAK,SAAS,CAAC,GAAG,KAAK,OAAO,QAAQ,OAAO,OAAO,IAAI,GAAG,KAAK,UAAU,KAAK,GAAG,KAAK,QAAQ,YAAY,KAAK,QAAQ,aAAa,IAAI,GAAG,KAAK,YAAY,KAAK,QAAQ,WAAW,KAAK,UAAU,UAAU,KAAK,SAAS,KAAK,UAAU,QAAQ,MAAM,KAAK,cAAc,CAAC,GAAG,KAAK,QAAQ,EAAE,QAAQ,OAAO,YAAY,OAAO,KAAK,KAAK;AAAA,IAC3U,IAAI,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,QAAQ,QAAQ,EAAE,OAAO;AAAA,IACvD,KAAK,QAAQ,YAAY,GAAG,QAAQ,EAAE,UAAU,GAAG,SAAS,EAAE,YAAY,KAAK,QAAQ,QAAQ,GAAG,QAAQ,EAAE,KAAK,KAAK,QAAQ,SAAS,GAAG,SAAS,EAAE,SAAS,GAAG,SAAS,EAAE,MAAM,KAAK,UAAU,QAAQ;AAAA;AAAA,aAEhM,KAAK,GAAG;AAAA,IACjB,OAAO,EAAE,OAAO,GAAG,QAAQ,EAAE;AAAA;AAAA,SAExB,GAAG,CAAC,GAAG,IAAI;AAAA,IAChB,OAAO,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC;AAAA;AAAA,SAEjB,SAAS,CAAC,GAAG,IAAI;AAAA,IACtB,OAAO,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC;AAAA;AAAA,EAEjC,GAAG,CAAC,GAAG;AAAA,IACL,IAAI,EAAE,QAAQ,EAAE,gBAAgB;AAAA,CACnC,GAAG,KAAK,YAAY,GAAG,KAAK,MAAM;AAAA,IAC/B,SAAS,KAAK,EAAE,KAAK,KAAK,YAAY,QAAQ,MAAM;AAAA,MAClD,IAAI,IAAI,KAAK,YAAY;AAAA,MACzB,KAAK,aAAa,EAAE,KAAK,EAAE,MAAM;AAAA,IACnC;AAAA,IACA,OAAO,KAAK,cAAc,CAAC,GAAG,KAAK;AAAA;AAAA,EAErC,WAAW,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO;AAAA,IACjC,KAAK,KAAK,QAAQ,aAAa,IAAI,EAAE,QAAQ,EAAE,eAAe,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,KAAK;AAAA,MACnG,IAAI;AAAA,MACJ,IAAI,KAAK,QAAQ,YAAY,OAAO,KAAK,CAAC,OAAO,IAAI,EAAE,KAAK,EAAE,OAAO,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,QAAQ,KAAK;AAAA,QAC9I;AAAA,MACF,IAAI,IAAI,KAAK,UAAU,MAAM,CAAC,GAAG;AAAA,QAC/B,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM;AAAA,QAC5B,IAAI,IAAI,GAAG,GAAG,EAAE;AAAA,QAChB,EAAE,IAAI,WAAW,KAAK,MAAM,YAAY,EAAE,OAAO;AAAA,IACrD,GAAG,KAAK,CAAC;AAAA,QACL;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,KAAK,CAAC,GAAG;AAAA,QAC9B,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM;AAAA,QAC5B,IAAI,IAAI,GAAG,GAAG,EAAE;AAAA,QAChB,GAAG,SAAS,eAAe,GAAG,SAAS,UAAU,EAAE,QAAQ,EAAE,IAAI,SAAS;AAAA,CACjF,IAAI,KAAK;AAAA,KACL,EAAE,KAAK,EAAE,QAAQ;AAAA,IAClB,EAAE,MAAM,KAAK,YAAY,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,CAAC;AAAA,QACrD;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,OAAO,CAAC,GAAG;AAAA,QAChC,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,QAAQ,CAAC,GAAG;AAAA,QACjC,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,GAAG,CAAC,GAAG;AAAA,QAC5B,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,WAAW,CAAC,GAAG;AAAA,QACpC,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,KAAK,CAAC,GAAG;AAAA,QAC9B,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,KAAK,CAAC,GAAG;AAAA,QAC9B,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,GAAG;AAAA,QAC7B,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM;AAAA,QAC5B,IAAI,IAAI,GAAG,GAAG,EAAE;AAAA,QAChB,GAAG,SAAS,eAAe,GAAG,SAAS,UAAU,EAAE,QAAQ,EAAE,IAAI,SAAS;AAAA,CACjF,IAAI,KAAK;AAAA,KACL,EAAE,KAAK,EAAE,QAAQ;AAAA,IAClB,EAAE,KAAK,KAAK,YAAY,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,KAAK,OAAO,MAAM,EAAE,SAAS,KAAK,OAAO,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,EAAE,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QAC9I;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,MAAM,CAAC,GAAG;AAAA,QAC/B,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,SAAS,CAAC,GAAG;AAAA,QAClC,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA,IAAI,IAAI;AAAA,MACR,IAAI,KAAK,QAAQ,YAAY,YAAY;AAAA,QACvC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,MAAM,CAAC,GAAG;AAAA,QAC/B,KAAK,QAAQ,WAAW,WAAW,QAAQ,CAAC,MAAM;AAAA,UAChD,IAAI,EAAE,KAAK,EAAE,OAAO,KAAK,GAAG,CAAC,GAAG,OAAO,KAAK,YAAY,KAAK,MAAM,IAAI,KAAK,IAAI,GAAG,CAAC;AAAA,SACrF,GAAG,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;AAAA,MACtD;AAAA,MACA,IAAI,KAAK,MAAM,QAAQ,IAAI,KAAK,UAAU,UAAU,CAAC,IAAI;AAAA,QACvD,IAAI,IAAI,GAAG,GAAG,EAAE;AAAA,QAChB,KAAK,GAAG,SAAS,eAAe,EAAE,QAAQ,EAAE,IAAI,SAAS;AAAA,CAChE,IAAI,KAAK;AAAA,KACL,EAAE,KAAK,EAAE,QAAQ;AAAA,IAClB,EAAE,MAAM,KAAK,YAAY,IAAI,GAAG,KAAK,YAAY,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE,QAAQ,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM;AAAA,QACvI;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,KAAK,CAAC,GAAG;AAAA,QAC9B,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM;AAAA,QAC5B,IAAI,IAAI,GAAG,GAAG,EAAE;AAAA,QAChB,GAAG,SAAS,UAAU,EAAE,QAAQ,EAAE,IAAI,SAAS;AAAA,CACtD,IAAI,KAAK;AAAA,KACL,EAAE,KAAK,EAAE,QAAQ;AAAA,IAClB,EAAE,MAAM,KAAK,YAAY,IAAI,GAAG,KAAK,YAAY,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,CAAC;AAAA,QAC7E;AAAA,MACF;AAAA,MACA,IAAI,GAAG;AAAA,QACL,IAAI,IAAI,4BAA4B,EAAE,WAAW,CAAC;AAAA,QAClD,IAAI,KAAK,QAAQ,QAAQ;AAAA,UACvB,QAAQ,MAAM,CAAC;AAAA,UACf;AAAA,QACF,EACE;AAAA,gBAAM,IAAI,MAAM,CAAC;AAAA,MACrB;AAAA,IACF;AAAA,IACA,OAAO,KAAK,MAAM,MAAM,MAAM;AAAA;AAAA,EAEhC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG;AAAA,IACjB,OAAO,KAAK,YAAY,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,CAAC,GAAG;AAAA;AAAA,EAExD,YAAY,CAAC,GAAG,KAAK,CAAC,GAAG;AAAA,IACvB,IAAI,IAAI,GAAG,IAAI;AAAA,IACf,IAAI,KAAK,OAAO,OAAO;AAAA,MACrB,IAAI,IAAI,OAAO,KAAK,KAAK,OAAO,KAAK;AAAA,MACrC,IAAI,EAAE,SAAS;AAAA,QACb,OAAO,IAAI,KAAK,UAAU,MAAM,OAAO,cAAc,KAAK,CAAC,MAAM;AAAA,UAC/D,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,GAAG,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE,GAAG,SAAS,CAAC,IAAI,MAAM,EAAE,MAAM,KAAK,UAAU,MAAM,OAAO,cAAc,SAAS;AAAA,IAC/L;AAAA,IACA,OAAO,IAAI,KAAK,UAAU,MAAM,OAAO,eAAe,KAAK,CAAC,MAAM;AAAA,MAChE,IAAI,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,KAAK,UAAU,MAAM,OAAO,eAAe,SAAS;AAAA,IAC/F,IAAI;AAAA,IACJ,OAAO,IAAI,KAAK,UAAU,MAAM,OAAO,UAAU,KAAK,CAAC,MAAM;AAAA,MAC3D,IAAI,EAAE,KAAK,EAAE,GAAG,SAAS,GAAG,IAAI,EAAE,MAAM,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,IAAI,OAAO,EAAE,GAAG,SAAS,IAAI,CAAC,IAAI,MAAM,EAAE,MAAM,KAAK,UAAU,MAAM,OAAO,UAAU,SAAS;AAAA,IACjK,IAAI,KAAK,QAAQ,OAAO,cAAc,KAAK,EAAE,OAAO,KAAK,GAAG,CAAC,KAAK;AAAA,IAClE,IAAI,IAAI,OAAO,IAAI;AAAA,IACnB,MAAM,KAAK;AAAA,MACT,MAAM,IAAI,KAAK,IAAI;AAAA,MACnB,IAAI;AAAA,MACJ,IAAI,KAAK,QAAQ,YAAY,QAAQ,KAAK,CAAC,OAAO,IAAI,EAAE,KAAK,EAAE,OAAO,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,QAAQ,KAAK;AAAA,QAC/I;AAAA,MACF,IAAI,IAAI,KAAK,UAAU,OAAO,CAAC,GAAG;AAAA,QAChC,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,GAAG;AAAA,QAC7B,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,KAAK,CAAC,GAAG;AAAA,QAC9B,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,QAAQ,GAAG,KAAK,OAAO,KAAK,GAAG;AAAA,QACpD,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM;AAAA,QAC5B,IAAI,IAAI,GAAG,GAAG,EAAE;AAAA,QAChB,EAAE,SAAS,UAAU,GAAG,SAAS,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC;AAAA,QACxF;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,SAAS,GAAG,GAAG,CAAC,GAAG;AAAA,QACxC,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,SAAS,CAAC,GAAG;AAAA,QAClC,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,GAAG,CAAC,GAAG;AAAA,QAC5B,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,GAAG;AAAA,QAC7B,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,SAAS,CAAC,GAAG;AAAA,QAClC,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA,IAAI,CAAC,KAAK,MAAM,WAAW,IAAI,KAAK,UAAU,IAAI,CAAC,IAAI;AAAA,QACrD,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA,IAAI,IAAI;AAAA,MACR,IAAI,KAAK,QAAQ,YAAY,aAAa;AAAA,QACxC,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,MAAM,CAAC,GAAG;AAAA,QAC/B,KAAK,QAAQ,WAAW,YAAY,QAAQ,CAAC,OAAO;AAAA,UAClD,IAAI,GAAG,KAAK,EAAE,OAAO,KAAK,GAAG,CAAC,GAAG,OAAO,KAAK,YAAY,KAAK,MAAM,IAAI,KAAK,IAAI,GAAG,CAAC;AAAA,SACtF,GAAG,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;AAAA,MACtD;AAAA,MACA,IAAI,IAAI,KAAK,UAAU,WAAW,CAAC,GAAG;AAAA,QACpC,IAAI,EAAE,UAAU,EAAE,IAAI,MAAM,GAAG,EAAE,IAAI,MAAM,EAAE,MAAM,QAAQ,IAAI,EAAE,IAAI,MAAM,EAAE,IAAI,IAAI;AAAA,QACrF,IAAI,IAAI,GAAG,GAAG,EAAE;AAAA,QAChB,GAAG,SAAS,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC;AAAA,QACnE;AAAA,MACF;AAAA,MACA,IAAI,GAAG;AAAA,QACL,IAAI,IAAI,4BAA4B,EAAE,WAAW,CAAC;AAAA,QAClD,IAAI,KAAK,QAAQ,QAAQ;AAAA,UACvB,QAAQ,MAAM,CAAC;AAAA,UACf;AAAA,QACF,EACE;AAAA,gBAAM,IAAI,MAAM,CAAC;AAAA,MACrB;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAEX;AACA,IAAI,IAAI,MAAM;AAAA,EACZ;AAAA,EACA;AAAA,EACA,WAAW,CAAC,GAAG;AAAA,IACb,KAAK,UAAU,KAAK;AAAA;AAAA,EAEtB,KAAK,CAAC,GAAG;AAAA,IACP,OAAO;AAAA;AAAA,EAET,IAAI,GAAG,MAAM,GAAG,MAAM,IAAI,SAAS,KAAK;AAAA,IACtC,IAAI,KAAK,MAAM,IAAI,MAAM,EAAE,aAAa,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI;AAAA;AAAA,IAErF,OAAO,IAAI,gCAAgC,EAAE,CAAC,IAAI,QAAQ,IAAI,IAAI,EAAE,GAAG,IAAI,KAAK;AAAA,IAChF,iBAAiB,IAAI,IAAI,EAAE,GAAG,IAAI,KAAK;AAAA;AAAA;AAAA,EAGzC,UAAU,GAAG,QAAQ,KAAK;AAAA,IACxB,OAAO;AAAA,EACT,KAAK,OAAO,MAAM,CAAC;AAAA;AAAA;AAAA,EAGnB,IAAI,GAAG,MAAM,KAAK;AAAA,IAChB,OAAO;AAAA;AAAA,EAET,GAAG,CAAC,GAAG;AAAA,IACL,OAAO;AAAA;AAAA,EAET,OAAO,GAAG,QAAQ,GAAG,OAAO,MAAM;AAAA,IAChC,OAAO,KAAK,MAAM,KAAK,OAAO,YAAY,CAAC,OAAO;AAAA;AAAA;AAAA,EAGpD,EAAE,CAAC,GAAG;AAAA,IACJ,OAAO;AAAA;AAAA;AAAA,EAGT,IAAI,CAAC,GAAG;AAAA,IACN,MAAM,SAAS,IAAI,OAAO,MAAM,GAAG,IAAI;AAAA,IACvC,SAAS,IAAI,EAAE,IAAI,EAAE,MAAM,QAAQ,KAAK;AAAA,MACtC,IAAI,IAAI,EAAE,MAAM;AAAA,MAChB,KAAK,KAAK,SAAS,CAAC;AAAA,IACtB;AAAA,IACA,IAAI,IAAI,KAAK,OAAO,MAAM,IAAI,MAAM,MAAM,IAAI,aAAa,IAAI,MAAM;AAAA,IACrE,OAAO,MAAM,IAAI,IAAI;AAAA,IACrB,IAAI,OAAO,IAAI;AAAA;AAAA;AAAA,EAGjB,QAAQ,CAAC,GAAG;AAAA,IACV,OAAO,OAAO,KAAK,OAAO,MAAM,EAAE,MAAM;AAAA;AAAA;AAAA,EAG1C,QAAQ,GAAG,SAAS,KAAK;AAAA,IACvB,OAAO,aAAa,IAAI,gBAAgB,MAAM;AAAA;AAAA,EAEhD,SAAS,GAAG,QAAQ,KAAK;AAAA,IACvB,OAAO,MAAM,KAAK,OAAO,YAAY,CAAC;AAAA;AAAA;AAAA,EAGxC,KAAK,CAAC,GAAG;AAAA,IACP,IAAI,KAAK,IAAI,IAAI;AAAA,IACjB,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,QAAQ;AAAA,MAClC,KAAK,KAAK,UAAU,EAAE,OAAO,EAAE;AAAA,IACjC,MAAM,KAAK,SAAS,EAAE,MAAM,EAAE,CAAC;AAAA,IAC/B,IAAI,IAAI;AAAA,IACR,SAAS,IAAI,EAAE,IAAI,EAAE,KAAK,QAAQ,KAAK;AAAA,MACrC,IAAI,IAAI,EAAE,KAAK;AAAA,MACf,IAAI;AAAA,MACJ,SAAS,IAAI,EAAE,IAAI,EAAE,QAAQ;AAAA,QAC3B,KAAK,KAAK,UAAU,EAAE,EAAE;AAAA,MAC1B,KAAK,KAAK,SAAS,EAAE,MAAM,EAAE,CAAC;AAAA,IAChC;AAAA,IACA,OAAO,MAAM,IAAI,UAAU,cAAc;AAAA;AAAA,IAEzC,KAAK;AAAA,IACL,IAAI;AAAA;AAAA;AAAA,EAGN,QAAQ,GAAG,MAAM,KAAK;AAAA,IACpB,OAAO;AAAA,EACT;AAAA;AAAA;AAAA,EAGA,SAAS,CAAC,GAAG;AAAA,IACX,IAAI,KAAK,KAAK,OAAO,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,OAAO;AAAA,IAClE,QAAQ,EAAE,QAAQ,IAAI,YAAY,EAAE,YAAY,IAAI,QAAQ,KAAK,KAAK;AAAA;AAAA;AAAA,EAGxE,MAAM,GAAG,QAAQ,KAAK;AAAA,IACpB,OAAO,WAAW,KAAK,OAAO,YAAY,CAAC;AAAA;AAAA,EAE7C,EAAE,GAAG,QAAQ,KAAK;AAAA,IAChB,OAAO,OAAO,KAAK,OAAO,YAAY,CAAC;AAAA;AAAA,EAEzC,QAAQ,GAAG,MAAM,KAAK;AAAA,IACpB,OAAO,SAAS,EAAE,GAAG,IAAI;AAAA;AAAA,EAE3B,EAAE,CAAC,GAAG;AAAA,IACJ,OAAO;AAAA;AAAA,EAET,GAAG,GAAG,QAAQ,KAAK;AAAA,IACjB,OAAO,QAAQ,KAAK,OAAO,YAAY,CAAC;AAAA;AAAA,EAE1C,IAAI,GAAG,MAAM,GAAG,OAAO,IAAI,QAAQ,KAAK;AAAA,IACtC,IAAI,IAAI,KAAK,OAAO,YAAY,CAAC,GAAG,IAAI,EAAE,CAAC;AAAA,IAC3C,IAAI,MAAM;AAAA,MACR,OAAO;AAAA,IACT,IAAI;AAAA,IACJ,IAAI,IAAI,cAAc,IAAI;AAAA,IAC1B,OAAO,OAAO,KAAK,aAAa,EAAE,EAAE,IAAI,MAAM,KAAK,MAAM,IAAI,QAAQ;AAAA;AAAA,EAEvE,KAAK,GAAG,MAAM,GAAG,OAAO,IAAI,MAAM,GAAG,QAAQ,KAAK;AAAA,IAChD,MAAM,IAAI,KAAK,OAAO,YAAY,GAAG,KAAK,OAAO,YAAY;AAAA,IAC7D,IAAI,IAAI,EAAE,CAAC;AAAA,IACX,IAAI,MAAM;AAAA,MACR,OAAO,EAAE,CAAC;AAAA,IACZ,IAAI;AAAA,IACJ,IAAI,IAAI,aAAa,WAAW;AAAA,IAChC,OAAO,OAAO,KAAK,WAAW,EAAE,EAAE,OAAO,KAAK,KAAK;AAAA;AAAA,EAErD,IAAI,CAAC,GAAG;AAAA,IACN,OAAO,YAAY,KAAK,EAAE,SAAS,KAAK,OAAO,YAAY,EAAE,MAAM,KAAK,aAAa,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,IAAI;AAAA;AAE5H;AACA,IAAI,IAAI,MAAM;AAAA,EACZ,MAAM,GAAG,MAAM,KAAK;AAAA,IAClB,OAAO;AAAA;AAAA,EAET,EAAE,GAAG,MAAM,KAAK;AAAA,IACd,OAAO;AAAA;AAAA,EAET,QAAQ,GAAG,MAAM,KAAK;AAAA,IACpB,OAAO;AAAA;AAAA,EAET,GAAG,GAAG,MAAM,KAAK;AAAA,IACf,OAAO;AAAA;AAAA,EAET,IAAI,GAAG,MAAM,KAAK;AAAA,IAChB,OAAO;AAAA;AAAA,EAET,IAAI,GAAG,MAAM,KAAK;AAAA,IAChB,OAAO;AAAA;AAAA,EAET,IAAI,GAAG,MAAM,KAAK;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,EAEd,KAAK,GAAG,MAAM,KAAK;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,EAEd,EAAE,GAAG;AAAA,IACH,OAAO;AAAA;AAAA,EAET,QAAQ,GAAG,KAAK,KAAK;AAAA,IACnB,OAAO;AAAA;AAEX;AACA,IAAI,IAAI,MAAM,GAAG;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,CAAC,GAAG;AAAA,IACb,KAAK,UAAU,KAAK,GAAG,KAAK,QAAQ,WAAW,KAAK,QAAQ,YAAY,IAAI,GAAG,KAAK,WAAW,KAAK,QAAQ,UAAU,KAAK,SAAS,UAAU,KAAK,SAAS,KAAK,SAAS,SAAS,MAAM,KAAK,eAAe,IAAI;AAAA;AAAA,SAE5M,KAAK,CAAC,GAAG,IAAI;AAAA,IAClB,OAAO,IAAI,GAAG,EAAE,EAAE,MAAM,CAAC;AAAA;AAAA,SAEpB,WAAW,CAAC,GAAG,IAAI;AAAA,IACxB,OAAO,IAAI,GAAG,EAAE,EAAE,YAAY,CAAC;AAAA;AAAA,EAEjC,KAAK,CAAC,GAAG;AAAA,IACP,IAAI,KAAK;AAAA,IACT,SAAS,IAAI,EAAE,IAAI,EAAE,QAAQ,KAAK;AAAA,MAChC,IAAI,IAAI,EAAE;AAAA,MACV,IAAI,KAAK,QAAQ,YAAY,YAAY,EAAE,OAAO;AAAA,QAChD,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,WAAW,UAAU,EAAE,MAAM,KAAK,EAAE,QAAQ,KAAK,GAAG,CAAC;AAAA,QACjF,IAAI,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,WAAW,QAAQ,SAAS,cAAc,QAAQ,QAAQ,OAAO,aAAa,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG;AAAA,UAC1I,MAAM,KAAK;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,MACA,IAAI,IAAI;AAAA,MACR,QAAQ,EAAE;AAAA,aACH,SAAS;AAAA,UACZ,MAAM,KAAK,SAAS,MAAM,CAAC;AAAA,UAC3B;AAAA,QACF;AAAA,aACK,MAAM;AAAA,UACT,MAAM,KAAK,SAAS,GAAG,CAAC;AAAA,UACxB;AAAA,QACF;AAAA,aACK,WAAW;AAAA,UACd,MAAM,KAAK,SAAS,QAAQ,CAAC;AAAA,UAC7B;AAAA,QACF;AAAA,aACK,QAAQ;AAAA,UACX,MAAM,KAAK,SAAS,KAAK,CAAC;AAAA,UAC1B;AAAA,QACF;AAAA,aACK,SAAS;AAAA,UACZ,MAAM,KAAK,SAAS,MAAM,CAAC;AAAA,UAC3B;AAAA,QACF;AAAA,aACK,cAAc;AAAA,UACjB,MAAM,KAAK,SAAS,WAAW,CAAC;AAAA,UAChC;AAAA,QACF;AAAA,aACK,QAAQ;AAAA,UACX,MAAM,KAAK,SAAS,KAAK,CAAC;AAAA,UAC1B;AAAA,QACF;AAAA,aACK,YAAY;AAAA,UACf,MAAM,KAAK,SAAS,SAAS,CAAC;AAAA,UAC9B;AAAA,QACF;AAAA,aACK,QAAQ;AAAA,UACX,MAAM,KAAK,SAAS,KAAK,CAAC;AAAA,UAC1B;AAAA,QACF;AAAA,aACK,OAAO;AAAA,UACV,MAAM,KAAK,SAAS,IAAI,CAAC;AAAA,UACzB;AAAA,QACF;AAAA,aACK,aAAa;AAAA,UAChB,MAAM,KAAK,SAAS,UAAU,CAAC;AAAA,UAC/B;AAAA,QACF;AAAA,aACK,QAAQ;AAAA,UACX,MAAM,KAAK,SAAS,KAAK,CAAC;AAAA,UAC1B;AAAA,QACF;AAAA,iBACS;AAAA,UACP,IAAI,IAAI,iBAAiB,EAAE,OAAO;AAAA,UAClC,IAAI,KAAK,QAAQ;AAAA,YACf,OAAO,QAAQ,MAAM,CAAC,GAAG;AAAA,UAC3B,MAAM,IAAI,MAAM,CAAC;AAAA,QACnB;AAAA;AAAA,IAEJ;AAAA,IACA,OAAO;AAAA;AAAA,EAET,WAAW,CAAC,GAAG,KAAK,KAAK,UAAU;AAAA,IACjC,IAAI,IAAI;AAAA,IACR,SAAS,IAAI,EAAE,IAAI,EAAE,QAAQ,KAAK;AAAA,MAChC,IAAI,IAAI,EAAE;AAAA,MACV,IAAI,KAAK,QAAQ,YAAY,YAAY,EAAE,OAAO;AAAA,QAChD,IAAI,IAAI,KAAK,QAAQ,WAAW,UAAU,EAAE,MAAM,KAAK,EAAE,QAAQ,KAAK,GAAG,CAAC;AAAA,QAC1E,IAAI,MAAM,SAAS,CAAC,CAAC,UAAU,QAAQ,QAAQ,SAAS,UAAU,MAAM,YAAY,MAAM,OAAO,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG;AAAA,UACzH,KAAK,KAAK;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,MACA,IAAI,IAAI;AAAA,MACR,QAAQ,EAAE;AAAA,aACH,UAAU;AAAA,UACb,KAAK,GAAG,KAAK,CAAC;AAAA,UACd;AAAA,QACF;AAAA,aACK,QAAQ;AAAA,UACX,KAAK,GAAG,KAAK,CAAC;AAAA,UACd;AAAA,QACF;AAAA,aACK,QAAQ;AAAA,UACX,KAAK,GAAG,KAAK,CAAC;AAAA,UACd;AAAA,QACF;AAAA,aACK,SAAS;AAAA,UACZ,KAAK,GAAG,MAAM,CAAC;AAAA,UACf;AAAA,QACF;AAAA,aACK,YAAY;AAAA,UACf,KAAK,GAAG,SAAS,CAAC;AAAA,UAClB;AAAA,QACF;AAAA,aACK,UAAU;AAAA,UACb,KAAK,GAAG,OAAO,CAAC;AAAA,UAChB;AAAA,QACF;AAAA,aACK,MAAM;AAAA,UACT,KAAK,GAAG,GAAG,CAAC;AAAA,UACZ;AAAA,QACF;AAAA,aACK,YAAY;AAAA,UACf,KAAK,GAAG,SAAS,CAAC;AAAA,UAClB;AAAA,QACF;AAAA,aACK,MAAM;AAAA,UACT,KAAK,GAAG,GAAG,CAAC;AAAA,UACZ;AAAA,QACF;AAAA,aACK,OAAO;AAAA,UACV,KAAK,GAAG,IAAI,CAAC;AAAA,UACb;AAAA,QACF;AAAA,aACK,QAAQ;AAAA,UACX,KAAK,GAAG,KAAK,CAAC;AAAA,UACd;AAAA,QACF;AAAA,iBACS;AAAA,UACP,IAAI,IAAI,iBAAiB,EAAE,OAAO;AAAA,UAClC,IAAI,KAAK,QAAQ;AAAA,YACf,OAAO,QAAQ,MAAM,CAAC,GAAG;AAAA,UAC3B,MAAM,IAAI,MAAM,CAAC;AAAA,QACnB;AAAA;AAAA,IAEJ;AAAA,IACA,OAAO;AAAA;AAEX;AACA,IAAI,IAAI,MAAM;AAAA,EACZ;AAAA,EACA;AAAA,EACA,WAAW,CAAC,GAAG;AAAA,IACb,KAAK,UAAU,KAAK;AAAA;AAAA,SAEf,mBAAmB,IAAI,IAAI,CAAC,cAAc,eAAe,oBAAoB,cAAc,CAAC;AAAA,SAC5F,+BAA+B,IAAI,IAAI,CAAC,cAAc,eAAe,kBAAkB,CAAC;AAAA,EAC/F,UAAU,CAAC,GAAG;AAAA,IACZ,OAAO;AAAA;AAAA,EAET,WAAW,CAAC,GAAG;AAAA,IACb,OAAO;AAAA;AAAA,EAET,gBAAgB,CAAC,GAAG;AAAA,IAClB,OAAO;AAAA;AAAA,EAET,YAAY,CAAC,GAAG;AAAA,IACd,OAAO;AAAA;AAAA,EAET,YAAY,GAAG;AAAA,IACb,OAAO,KAAK,QAAQ,EAAE,MAAM,EAAE;AAAA;AAAA,EAEhC,aAAa,GAAG;AAAA,IACd,OAAO,KAAK,QAAQ,EAAE,QAAQ,EAAE;AAAA;AAEpC;AACA,IAAI,IAAI,MAAM;AAAA,EACZ,WAAW,EAAE;AAAA,EACb,UAAU,KAAK;AAAA,EACf,QAAQ,KAAK,cAAc,IAAI;AAAA,EAC/B,cAAc,KAAK,cAAc,KAAK;AAAA,EACtC,SAAS;AAAA,EACT,WAAW;AAAA,EACX,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,WAAW,IAAI,GAAG;AAAA,IAChB,KAAK,IAAI,GAAG,CAAC;AAAA;AAAA,EAEf,UAAU,CAAC,GAAG,IAAI;AAAA,IAChB,IAAI,IAAI,CAAC;AAAA,IACT,SAAS,KAAK;AAAA,MACZ,QAAQ,IAAI,EAAE,OAAO,GAAG,KAAK,MAAM,CAAC,CAAC,GAAG,EAAE;AAAA,aACnC,SAAS;AAAA,UACZ,IAAI,IAAI;AAAA,UACR,SAAS,KAAK,EAAE;AAAA,YACd,IAAI,EAAE,OAAO,KAAK,WAAW,EAAE,QAAQ,EAAE,CAAC;AAAA,UAC5C,SAAS,KAAK,EAAE;AAAA,YACd,SAAS,KAAK;AAAA,cACZ,IAAI,EAAE,OAAO,KAAK,WAAW,EAAE,QAAQ,EAAE,CAAC;AAAA,UAC9C;AAAA,QACF;AAAA,aACK,QAAQ;AAAA,UACX,IAAI,IAAI;AAAA,UACR,IAAI,EAAE,OAAO,KAAK,WAAW,EAAE,OAAO,EAAE,CAAC;AAAA,UACzC;AAAA,QACF;AAAA,iBACS;AAAA,UACP,IAAI,IAAI;AAAA,UACR,KAAK,SAAS,YAAY,cAAc,EAAE,QAAQ,KAAK,SAAS,WAAW,YAAY,EAAE,MAAM,QAAQ,CAAC,MAAM;AAAA,YAC5G,IAAI,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;AAAA,YACvB,IAAI,EAAE,OAAO,KAAK,WAAW,GAAG,EAAE,CAAC;AAAA,WACpC,IAAI,EAAE,WAAW,IAAI,EAAE,OAAO,KAAK,WAAW,EAAE,QAAQ,EAAE,CAAC;AAAA,QAC9D;AAAA;AAAA,IAEJ,OAAO;AAAA;AAAA,EAET,GAAG,IAAI,GAAG;AAAA,IACR,IAAI,KAAK,KAAK,SAAS,cAAc,EAAE,WAAW,CAAC,GAAG,aAAa,CAAC,EAAE;AAAA,IACtE,OAAO,EAAE,QAAQ,CAAC,MAAM;AAAA,MACtB,IAAI,IAAI,KAAK,EAAE;AAAA,MACf,IAAI,EAAE,QAAQ,KAAK,SAAS,SAAS,EAAE,SAAS,OAAO,EAAE,eAAe,EAAE,WAAW,QAAQ,CAAC,MAAM;AAAA,QAClG,IAAI,CAAC,EAAE;AAAA,UACL,MAAM,IAAI,MAAM,yBAAyB;AAAA,QAC3C,IAAI,cAAc,GAAG;AAAA,UACnB,IAAI,IAAI,GAAG,UAAU,EAAE;AAAA,UACvB,IAAI,GAAG,UAAU,EAAE,QAAQ,QAAQ,IAAI,GAAG;AAAA,YACxC,IAAI,IAAI,EAAE,SAAS,MAAM,MAAM,CAAC;AAAA,YAChC,OAAO,MAAM,UAAU,IAAI,EAAE,MAAM,MAAM,CAAC,IAAI;AAAA,cAC5C,GAAG,UAAU,EAAE,QAAQ,EAAE;AAAA,QAC/B;AAAA,QACA,IAAI,eAAe,GAAG;AAAA,UACpB,IAAI,CAAC,EAAE,SAAS,EAAE,UAAU,WAAW,EAAE,UAAU;AAAA,YACjD,MAAM,IAAI,MAAM,6CAA6C;AAAA,UAC/D,IAAI,IAAI,GAAG,EAAE;AAAA,UACb,IAAI,EAAE,QAAQ,EAAE,SAAS,IAAI,GAAG,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,EAAE,UAAU,EAAE,UAAU,UAAU,GAAG,aAAa,GAAG,WAAW,KAAK,EAAE,KAAK,IAAI,GAAG,aAAa,CAAC,EAAE,KAAK,IAAI,EAAE,UAAU,aAAa,GAAG,cAAc,GAAG,YAAY,KAAK,EAAE,KAAK,IAAI,GAAG,cAAc,CAAC,EAAE,KAAK;AAAA,QAC1Q;AAAA,QACA,iBAAiB,KAAK,EAAE,gBAAgB,GAAG,YAAY,EAAE,QAAQ,EAAE;AAAA,OACpE,GAAG,EAAE,aAAa,KAAK,EAAE,UAAU;AAAA,QAClC,IAAI,IAAI,KAAK,SAAS,YAAY,IAAI,EAAE,KAAK,QAAQ;AAAA,QACrD,SAAS,KAAK,EAAE,UAAU;AAAA,UACxB,IAAI,EAAE,KAAK;AAAA,YACT,MAAM,IAAI,MAAM,aAAa,mBAAmB;AAAA,UAClD,IAAI,CAAC,WAAW,QAAQ,EAAE,SAAS,CAAC;AAAA,YAClC;AAAA,UACF,IAAI,IAAI,GAAG,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE;AAAA,UACpC,EAAE,KAAK,IAAI,MAAM;AAAA,YACf,IAAI,IAAI,EAAE,MAAM,GAAG,CAAC;AAAA,YACpB,OAAO,MAAM,UAAU,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,KAAK;AAAA;AAAA,QAEpD;AAAA,QACA,EAAE,WAAW;AAAA,MACf;AAAA,MACA,IAAI,EAAE,WAAW;AAAA,QACf,IAAI,IAAI,KAAK,SAAS,aAAa,IAAI,EAAE,KAAK,QAAQ;AAAA,QACtD,SAAS,KAAK,EAAE,WAAW;AAAA,UACzB,IAAI,EAAE,KAAK;AAAA,YACT,MAAM,IAAI,MAAM,cAAc,mBAAmB;AAAA,UACnD,IAAI,CAAC,WAAW,SAAS,OAAO,EAAE,SAAS,CAAC;AAAA,YAC1C;AAAA,UACF,IAAI,IAAI,GAAG,IAAI,EAAE,UAAU,IAAI,IAAI,EAAE;AAAA,UACrC,EAAE,KAAK,IAAI,MAAM;AAAA,YACf,IAAI,IAAI,EAAE,MAAM,GAAG,CAAC;AAAA,YACpB,OAAO,MAAM,UAAU,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI;AAAA;AAAA,QAE/C;AAAA,QACA,EAAE,YAAY;AAAA,MAChB;AAAA,MACA,IAAI,EAAE,OAAO;AAAA,QACX,IAAI,IAAI,KAAK,SAAS,SAAS,IAAI;AAAA,QACnC,SAAS,KAAK,EAAE,OAAO;AAAA,UACrB,IAAI,EAAE,KAAK;AAAA,YACT,MAAM,IAAI,MAAM,SAAS,mBAAmB;AAAA,UAC9C,IAAI,CAAC,WAAW,OAAO,EAAE,SAAS,CAAC;AAAA,YACjC;AAAA,UACF,IAAI,IAAI,GAAG,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE;AAAA,UACjC,EAAE,iBAAiB,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM;AAAA,YACxC,IAAI,KAAK,SAAS,SAAS,EAAE,6BAA6B,IAAI,CAAC;AAAA,cAC7D,QAAQ,YAAY;AAAA,gBAClB,IAAI,IAAI,MAAM,EAAE,KAAK,GAAG,CAAC;AAAA,gBACzB,OAAO,EAAE,KAAK,GAAG,CAAC;AAAA,iBACjB;AAAA,YACL,IAAI,IAAI,EAAE,KAAK,GAAG,CAAC;AAAA,YACnB,OAAO,EAAE,KAAK,GAAG,CAAC;AAAA,cAChB,EAAE,KAAK,IAAI,MAAM;AAAA,YACnB,IAAI,KAAK,SAAS;AAAA,cAChB,QAAQ,YAAY;AAAA,gBAClB,IAAI,IAAI,MAAM,EAAE,MAAM,GAAG,CAAC;AAAA,gBAC1B,OAAO,MAAM,UAAU,IAAI,MAAM,EAAE,MAAM,GAAG,CAAC,IAAI;AAAA,iBAChD;AAAA,YACL,IAAI,IAAI,EAAE,MAAM,GAAG,CAAC;AAAA,YACpB,OAAO,MAAM,UAAU,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI;AAAA;AAAA,QAE/C;AAAA,QACA,EAAE,QAAQ;AAAA,MACZ;AAAA,MACA,IAAI,EAAE,YAAY;AAAA,QAChB,IAAI,IAAI,KAAK,SAAS,YAAY,IAAI,EAAE;AAAA,QACxC,EAAE,aAAa,QAAQ,CAAC,GAAG;AAAA,UACzB,IAAI,IAAI,CAAC;AAAA,UACT,OAAO,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC,CAAC,IAAI;AAAA;AAAA,MAE1E;AAAA,MACA,KAAK,WAAW,KAAK,KAAK,aAAa,EAAE;AAAA,KAC1C,GAAG;AAAA;AAAA,EAEN,UAAU,CAAC,GAAG;AAAA,IACZ,OAAO,KAAK,WAAW,KAAK,KAAK,aAAa,EAAE,GAAG;AAAA;AAAA,EAErD,KAAK,CAAC,GAAG,IAAI;AAAA,IACX,OAAO,EAAE,IAAI,GAAG,MAAM,KAAK,QAAQ;AAAA;AAAA,EAErC,MAAM,CAAC,GAAG,IAAI;AAAA,IACZ,OAAO,EAAE,MAAM,GAAG,MAAM,KAAK,QAAQ;AAAA;AAAA,EAEvC,aAAa,CAAC,GAAG;AAAA,IACf,OAAO,CAAC,GAAG,MAAM;AAAA,MACf,IAAI,IAAI,KAAK,EAAE,GAAG,IAAI,KAAK,KAAK,aAAa,EAAE,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK;AAAA,MACxF,IAAI,KAAK,SAAS,UAAU,QAAQ,EAAE,UAAU;AAAA,QAC9C,OAAO,EAAE,IAAI,MAAM,oIAAoI,CAAC;AAAA,MAC1J,IAAI,OAAO,IAAI,OAAO,MAAM;AAAA,QAC1B,OAAO,EAAE,IAAI,MAAM,gDAAgD,CAAC;AAAA,MACtE,IAAI,OAAO,KAAK;AAAA,QACd,OAAO,EAAE,IAAI,MAAM,0CAA0C,OAAO,UAAU,SAAS,KAAK,CAAC,IAAI,mBAAmB,CAAC;AAAA,MACvH,IAAI,EAAE,UAAU,EAAE,MAAM,UAAU,GAAG,EAAE,MAAM,QAAQ,IAAI,EAAE;AAAA,QACzD,QAAQ,YAAY;AAAA,UAClB,IAAI,IAAI,EAAE,QAAQ,MAAM,EAAE,MAAM,WAAW,CAAC,IAAI,GAAG,IAAI,OAAO,EAAE,QAAQ,MAAM,EAAE,MAAM,aAAa,IAAI,IAAI,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,QAAQ,MAAM,EAAE,MAAM,iBAAiB,CAAC,IAAI;AAAA,UACzL,EAAE,cAAc,MAAM,QAAQ,IAAI,KAAK,WAAW,GAAG,EAAE,UAAU,CAAC;AAAA,UAClE,IAAI,KAAK,OAAO,EAAE,QAAQ,MAAM,EAAE,MAAM,cAAc,IAAI,IAAI,EAAE,QAAQ,EAAE,aAAa,GAAG,CAAC;AAAA,UAC3F,OAAO,EAAE,QAAQ,MAAM,EAAE,MAAM,YAAY,EAAE,IAAI;AAAA,WAChD,EAAE,MAAM,CAAC;AAAA,MACd,IAAI;AAAA,QACF,EAAE,UAAU,IAAI,EAAE,MAAM,WAAW,CAAC;AAAA,QACpC,IAAI,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,IAAI,IAAI,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC;AAAA,QACzE,EAAE,UAAU,IAAI,EAAE,MAAM,iBAAiB,CAAC,IAAI,EAAE,cAAc,KAAK,WAAW,GAAG,EAAE,UAAU;AAAA,QAC7F,IAAI,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,IAAI,IAAI,EAAE,QAAQ,EAAE,aAAa,GAAG,CAAC;AAAA,QAC9E,OAAO,EAAE,UAAU,IAAI,EAAE,MAAM,YAAY,CAAC,IAAI;AAAA,QAChD,OAAO,GAAG;AAAA,QACV,OAAO,EAAE,CAAC;AAAA;AAAA;AAAA;AAAA,EAIhB,OAAO,CAAC,GAAG,IAAI;AAAA,IACb,OAAO,CAAC,MAAM;AAAA,MACZ,IAAI,EAAE,WAAW;AAAA,4DACqC,GAAG;AAAA,QACvD,IAAI,IAAI,mCAAmC,EAAE,EAAE,UAAU,IAAI,IAAI,IAAI;AAAA,QACrE,OAAO,KAAK,QAAQ,QAAQ,CAAC,IAAI;AAAA,MACnC;AAAA,MACA,IAAI;AAAA,QACF,OAAO,QAAQ,OAAO,CAAC;AAAA,MACzB,MAAM;AAAA;AAAA;AAGZ;AACA,IAAI,IAAI,IAAI;AACZ,SAAS,CAAC,CAAC,IAAI,GAAG;AAAA,EAChB,OAAO,EAAE,MAAM,IAAI,CAAC;AAAA;AAEtB,EAAE,UAAU,EAAE,aAAa,QAAQ,CAAC,IAAI;AAAA,EACtC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,QAAQ,GAAG;AAAA;AAEnE,EAAE,cAAc;AAChB,EAAE,WAAW;AACb,EAAE,MAAM,QAAQ,IAAI,IAAI;AAAA,EACtB,OAAO,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,QAAQ,GAAG;AAAA;AAE/D,EAAE,aAAa,QAAQ,CAAC,IAAI,GAAG;AAAA,EAC7B,OAAO,EAAE,WAAW,IAAI,CAAC;AAAA;AAE3B,EAAE,cAAc,EAAE;AAClB,EAAE,SAAS;AACX,EAAE,SAAS,EAAE;AACb,EAAE,WAAW;AACb,EAAE,eAAe;AACjB,EAAE,QAAQ;AACV,EAAE,QAAQ,EAAE;AACZ,EAAE,YAAY;AACd,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,IAAI,KAAK,EAAE;AACX,IAAI,KAAK,EAAE;AACX,IAAI,KAAK,EAAE;AACX,IAAI,KAAK,EAAE;AACX,IAAI,KAAK,EAAE;AACX,IAAI,KAAK,EAAE;AACX,IAAI,KAAK,EAAE;AAGX,SAAS,wBAAwB,CAAC,YAAY,WAAW,mBAAmB,GAAG;AAAA,EAC7E,IAAI,CAAC,aAAa,UAAU,OAAO,WAAW,GAAG;AAAA,IAC/C,IAAI;AAAA,MACF,MAAM,SAAS,EAAE,IAAI,YAAY,EAAE,KAAK,KAAK,CAAC;AAAA,MAC9C,OAAO,EAAE,SAAS,YAAY,OAAO;AAAA,MACrC,MAAM;AAAA,MACN,OAAO,EAAE,SAAS,YAAY,QAAQ,CAAC,EAAE;AAAA;AAAA,EAE7C;AAAA,EACA,IAAI,SAAS;AAAA,EACb,IAAI,aAAa;AAAA,EACjB,WAAW,SAAS,UAAU,QAAQ;AAAA,IACpC,MAAM,WAAW,SAAS,MAAM,IAAI;AAAA,IACpC,IAAI,YAAY,WAAW,UAAU,WAAW,MAAM,QAAQ,QAAQ,MAAM,MAAM,KAAK;AAAA,MACrF;AAAA,MACA,SAAS;AAAA,IACX,EAAO;AAAA,MACL;AAAA;AAAA,EAEJ;AAAA,EACA,aAAa,KAAK,IAAI,GAAG,aAAa,gBAAgB;AAAA,EACtD,SAAS;AAAA,EACT,SAAS,IAAI,EAAE,IAAI,YAAY,KAAK;AAAA,IAClC,UAAU,UAAU,OAAO,GAAG,IAAI;AAAA,EACpC;AAAA,EACA,MAAM,eAAe,UAAU,OAAO,MAAM,GAAG,UAAU;AAAA,EACzD,MAAM,mBAAmB,WAAW,MAAM,MAAM;AAAA,EAChD,IAAI,CAAC,kBAAkB;AAAA,IACrB,OAAO,EAAE,SAAS,YAAY,QAAQ,aAAa;AAAA,EACrD;AAAA,EACA,IAAI;AAAA,IACF,MAAM,YAAY,EAAE,IAAI,kBAAkB,EAAE,KAAK,KAAK,CAAC;AAAA,IACvD,OAAO,EAAE,SAAS,YAAY,QAAQ,CAAC,GAAG,cAAc,GAAG,SAAS,EAAE;AAAA,IACtE,MAAM;AAAA,IACN,OAAO,EAAE,SAAS,YAAY,QAAQ,aAAa;AAAA;AAAA;AAAA;AAKvD,MAAM,2BAA2B,WAAW;AAAA,EAC1C,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,aAAa;AAAA,EACb,eAAe,CAAC;AAAA,EAChB,cAAc;AAAA,EACd,yBAAyB;AAAA,IACvB,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,EACb;AAAA,EACA,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,KAAK;AAAA,SACN;AAAA,MACH,eAAe;AAAA,MACf,YAAY,QAAQ,cAAc;AAAA,IACpC,CAAC;AAAA,IACD,KAAK,eAAe,QAAQ;AAAA,IAC5B,KAAK,WAAW,QAAQ,WAAW,KAAK,uBAAuB;AAAA,IAC/D,KAAK,WAAW,QAAQ,WAAW,KAAK,uBAAuB;AAAA,IAC/D,KAAK,oBAAoB,QAAQ;AAAA,IACjC,KAAK,cAAc,QAAQ;AAAA,IAC3B,KAAK,aAAa,QAAQ,aAAa,KAAK,uBAAuB;AAAA,IACnE,KAAK,aAAa;AAAA;AAAA,MAEhB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,OAAO,CAAC,OAAO;AAAA,IACjB,IAAI,KAAK,aAAa,OAAO;AAAA,MAC3B,KAAK,WAAW;AAAA,MAChB,KAAK,aAAa;AAAA,MAClB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,OAAO;AAAA,IACrB,IAAI,KAAK,iBAAiB,OAAO;AAAA,MAC/B,KAAK,eAAe;AAAA,MACpB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,OAAO,CAAC,OAAO;AAAA,IACjB,IAAI,KAAK,aAAa,OAAO;AAAA,MAC3B,KAAK,WAAW;AAAA,MAChB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,SAAS,GAAG;AAAA,IACd,OAAO,KAAK;AAAA;AAAA,MAEV,SAAS,CAAC,OAAO;AAAA,IACnB,IAAI,KAAK,eAAe,OAAO;AAAA,MAC7B,KAAK,aAAa;AAAA,MAClB,KAAK,WAAW;AAAA,IAClB;AAAA;AAAA,EAEF,QAAQ,CAAC,OAAO;AAAA,IACd,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,IAAI,QAAQ,KAAK,aAAa,SAAS,KAAK;AAAA,IAC5C,IAAI,CAAC,SAAS,MAAM,SAAS,GAAG,GAAG;AAAA,MACjC,MAAM,WAAW,MAAM,MAAM,GAAG,EAAE;AAAA,MAClC,QAAQ,KAAK,aAAa,SAAS,QAAQ;AAAA,IAC7C;AAAA,IACA,OAAO;AAAA;AAAA,EAET,WAAW,CAAC,MAAM,OAAO,OAAO;AAAA,IAC9B,MAAM,QAAQ,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,SAAS;AAAA,IAC7D,OAAO;AAAA,MACL,WAAW;AAAA,MACX;AAAA,MACA,IAAI,OAAO;AAAA,MACX,IAAI,OAAO;AAAA,MACX,YAAY,QAAQ,qBAAqB;AAAA,QACvC,MAAM,MAAM;AAAA,QACZ,QAAQ,MAAM;AAAA,QACd,WAAW,MAAM;AAAA,QACjB,KAAK,MAAM;AAAA,MACb,CAAC,IAAI;AAAA,MACL,MAAM;AAAA,IACR;AAAA;AAAA,EAEF,kBAAkB,CAAC,MAAM;AAAA,IACvB,OAAO,KAAK,YAAY,MAAM,SAAS;AAAA;AAAA,EAEzC,mBAAmB,CAAC,QAAQ,QAAQ;AAAA,IAClC,WAAW,SAAS,QAAQ;AAAA,MAC1B,KAAK,kBAAkB,OAAO,MAAM;AAAA,IACtC;AAAA;AAAA,EAEF,iBAAiB,CAAC,OAAO,QAAQ;AAAA,IAC/B,QAAQ,MAAM;AAAA,WACP;AAAA,QACH,OAAO,KAAK,KAAK,mBAAmB,MAAM,IAAI,CAAC;AAAA,QAC/C;AAAA,WACG;AAAA,QACH,OAAO,KAAK,KAAK,mBAAmB,MAAM,IAAI,CAAC;AAAA,QAC/C;AAAA,WACG;AAAA,QACH,IAAI,KAAK,UAAU;AAAA,UACjB,OAAO,KAAK,KAAK,YAAY,MAAM,MAAM,YAAY,CAAC;AAAA,QACxD,EAAO;AAAA,UACL,OAAO,KAAK,KAAK,YAAY,KAAK,YAAY,CAAC;AAAA,UAC/C,OAAO,KAAK,KAAK,YAAY,MAAM,MAAM,YAAY,CAAC;AAAA,UACtD,OAAO,KAAK,KAAK,YAAY,KAAK,YAAY,CAAC;AAAA;AAAA,QAEjD;AAAA,WACG;AAAA,QACH,IAAI,CAAC,KAAK,UAAU;AAAA,UAClB,OAAO,KAAK,KAAK,YAAY,MAAM,eAAe,CAAC;AAAA,QACrD;AAAA,QACA,WAAW,SAAS,MAAM,QAAQ;AAAA,UAChC,KAAK,2BAA2B,OAAO,QAAQ,eAAe;AAAA,QAChE;AAAA,QACA,IAAI,CAAC,KAAK,UAAU;AAAA,UAClB,OAAO,KAAK,KAAK,YAAY,MAAM,eAAe,CAAC;AAAA,QACrD;AAAA,QACA;AAAA,WACG;AAAA,QACH,IAAI,CAAC,KAAK,UAAU;AAAA,UAClB,OAAO,KAAK,KAAK,YAAY,KAAK,eAAe,CAAC;AAAA,QACpD;AAAA,QACA,WAAW,SAAS,MAAM,QAAQ;AAAA,UAChC,KAAK,2BAA2B,OAAO,QAAQ,eAAe;AAAA,QAChE;AAAA,QACA,IAAI,CAAC,KAAK,UAAU;AAAA,UAClB,OAAO,KAAK,KAAK,YAAY,KAAK,eAAe,CAAC;AAAA,QACpD;AAAA,QACA;AAAA,WACG;AAAA,QACH,IAAI,CAAC,KAAK,UAAU;AAAA,UAClB,OAAO,KAAK,KAAK,YAAY,MAAM,sBAAsB,CAAC;AAAA,QAC5D;AAAA,QACA,WAAW,SAAS,MAAM,QAAQ;AAAA,UAChC,KAAK,2BAA2B,OAAO,QAAQ,sBAAsB;AAAA,QACvE;AAAA,QACA,IAAI,CAAC,KAAK,UAAU;AAAA,UAClB,OAAO,KAAK,KAAK,YAAY,MAAM,sBAAsB,CAAC;AAAA,QAC5D;AAAA,QACA;AAAA,WACG,QAAQ;AAAA,QACX,MAAM,WAAW,EAAE,KAAK,MAAM,KAAK;AAAA,QACnC,IAAI,KAAK,UAAU;AAAA,UACjB,WAAW,SAAS,MAAM,QAAQ;AAAA,YAChC,KAAK,2BAA2B,OAAO,QAAQ,qBAAqB,QAAQ;AAAA,UAC9E;AAAA,UACA,OAAO,KAAK,KAAK,YAAY,MAAM,eAAe,QAAQ,CAAC;AAAA,UAC3D,OAAO,KAAK,KAAK,YAAY,MAAM,MAAM,mBAAmB,QAAQ,CAAC;AAAA,UACrE,OAAO,KAAK,KAAK,YAAY,KAAK,eAAe,QAAQ,CAAC;AAAA,QAC5D,EAAO;AAAA,UACL,OAAO,KAAK,KAAK,YAAY,KAAK,eAAe,QAAQ,CAAC;AAAA,UAC1D,WAAW,SAAS,MAAM,QAAQ;AAAA,YAChC,KAAK,2BAA2B,OAAO,QAAQ,qBAAqB,QAAQ;AAAA,UAC9E;AAAA,UACA,OAAO,KAAK,KAAK,YAAY,MAAM,eAAe,QAAQ,CAAC;AAAA,UAC3D,OAAO,KAAK,KAAK,YAAY,MAAM,MAAM,mBAAmB,QAAQ,CAAC;AAAA,UACrE,OAAO,KAAK,KAAK,YAAY,KAAK,eAAe,QAAQ,CAAC;AAAA;AAAA,QAE5D;AAAA,MACF;AAAA,WACK,SAAS;AAAA,QACZ,MAAM,YAAY,EAAE,KAAK,MAAM,KAAK;AAAA,QACpC,IAAI,KAAK,UAAU;AAAA,UACjB,OAAO,KAAK,KAAK,YAAY,MAAM,QAAQ,SAAS,qBAAqB,SAAS,CAAC;AAAA,QACrF,EAAO;AAAA,UACL,OAAO,KAAK,KAAK,YAAY,MAAM,eAAe,SAAS,CAAC;AAAA,UAC5D,OAAO,KAAK,KAAK,YAAY,MAAM,QAAQ,IAAI,qBAAqB,SAAS,CAAC;AAAA,UAC9E,OAAO,KAAK,KAAK,YAAY,MAAM,eAAe,SAAS,CAAC;AAAA,UAC5D,OAAO,KAAK,KAAK,YAAY,MAAM,MAAM,mBAAmB,SAAS,CAAC;AAAA,UACtE,OAAO,KAAK,KAAK,YAAY,KAAK,eAAe,SAAS,CAAC;AAAA;AAAA,QAE7D;AAAA,MACF;AAAA,WACK;AAAA,QACH,OAAO,KAAK,KAAK,mBAAmB;AAAA,CAC3C,CAAC;AAAA,QACM;AAAA;AAAA,QAEA,IAAI,YAAY,SAAS,MAAM,QAAQ,MAAM,MAAM,GAAG;AAAA,UACpD,KAAK,oBAAoB,MAAM,QAAQ,MAAM;AAAA,QAC/C,EAAO,SAAI,UAAU,SAAS,OAAO,MAAM,SAAS,UAAU;AAAA,UAC5D,OAAO,KAAK,KAAK,mBAAmB,MAAM,IAAI,CAAC;AAAA,QACjD;AAAA,QACA;AAAA;AAAA;AAAA,EAGN,0BAA0B,CAAC,OAAO,QAAQ,YAAY,OAAO;AAAA,IAC3D,QAAQ,MAAM;AAAA,WACP;AAAA,QACH,OAAO,KAAK,KAAK,YAAY,MAAM,MAAM,YAAY,KAAK,CAAC;AAAA,QAC3D;AAAA,WACG;AAAA,QACH,OAAO,KAAK,KAAK,YAAY,MAAM,MAAM,YAAY,KAAK,CAAC;AAAA,QAC3D;AAAA,WACG;AAAA,QACH,IAAI,KAAK,UAAU;AAAA,UACjB,OAAO,KAAK,KAAK,YAAY,MAAM,MAAM,cAAc,KAAK,CAAC;AAAA,QAC/D,EAAO;AAAA,UACL,OAAO,KAAK,KAAK,YAAY,KAAK,cAAc,KAAK,CAAC;AAAA,UACtD,OAAO,KAAK,KAAK,YAAY,MAAM,MAAM,cAAc,KAAK,CAAC;AAAA,UAC7D,OAAO,KAAK,KAAK,YAAY,KAAK,cAAc,KAAK,CAAC;AAAA;AAAA,QAExD;AAAA;AAAA,QAEA,KAAK,kBAAkB,OAAO,MAAM;AAAA,QACpC;AAAA;AAAA;AAAA,EAGN,mBAAmB,CAAC,OAAO;AAAA,IACzB,MAAM,SAAS,CAAC;AAAA,IAChB,MAAM,QAAQ,kBAAkB,MAAM;AAAA,IACtC,MAAM,SAAS,IAAI,OAAO,MAAM,KAAK,IAAI;AAAA,IACzC,IAAI,CAAC,KAAK,UAAU;AAAA,MAClB,OAAO,KAAK,KAAK,YAAY,QAAQ,KAAK,CAAC;AAAA,IAC7C;AAAA,IACA,WAAW,SAAS,MAAM,QAAQ;AAAA,MAChC,KAAK,2BAA2B,OAAO,QAAQ,KAAK;AAAA,IACtD;AAAA,IACA,OAAO;AAAA;AAAA,EAET,qBAAqB,CAAC,OAAO;AAAA,IAC3B,MAAM,SAAS,CAAC;AAAA,IAChB,KAAK,oBAAoB,MAAM,QAAQ,MAAM;AAAA,IAC7C,OAAO;AAAA;AAAA,EAET,sBAAsB,CAAC,OAAO;AAAA,IAC5B,MAAM,SAAS,CAAC;AAAA,IAChB,WAAW,SAAS,MAAM,QAAQ;AAAA,MAChC,OAAO,KAAK,KAAK,YAAY,MAAM,qBAAqB,CAAC;AAAA,MACzD,MAAM,cAAc,KAAK,oBAAoB,KAAK;AAAA,MAClD,OAAO,KAAK,GAAG,WAAW;AAAA,MAC1B,OAAO,KAAK,KAAK,mBAAmB;AAAA,CACzC,CAAC;AAAA,IACE;AAAA,IACA,OAAO;AAAA;AAAA,EAET,gBAAgB,CAAC,OAAO;AAAA,IACtB,MAAM,SAAS,CAAC;AAAA,IAChB,IAAI,QAAQ,OAAO,MAAM,UAAU,WAAW,MAAM,QAAQ;AAAA,IAC5D,WAAW,QAAQ,MAAM,OAAO;AAAA,MAC9B,IAAI,MAAM,SAAS;AAAA,QACjB,OAAO,KAAK,KAAK,YAAY,GAAG,WAAW,aAAa,CAAC;AAAA,QACzD;AAAA,MACF,EAAO;AAAA,QACL,OAAO,KAAK,KAAK,YAAY,MAAM,aAAa,CAAC;AAAA;AAAA,MAEnD,SAAS,IAAI,EAAE,IAAI,KAAK,OAAO,QAAQ,KAAK;AAAA,QAC1C,MAAM,QAAQ,KAAK,OAAO;AAAA,QAC1B,IAAI,MAAM,SAAS,UAAU,MAAM,KAAK,YAAY,SAAS,MAAM,QAAQ;AAAA,UACzE,KAAK,oBAAoB,MAAM,QAAQ,MAAM;AAAA,UAC7C,OAAO,KAAK,KAAK,mBAAmB;AAAA,CAC7C,CAAC;AAAA,QACM,EAAO,SAAI,MAAM,SAAS,eAAe,MAAM,GAAG;AAAA,UAChD,KAAK,oBAAoB,MAAM,QAAQ,MAAM;AAAA,UAC7C,OAAO,KAAK,KAAK,mBAAmB;AAAA,CAC7C,CAAC;AAAA,QACM,EAAO;AAAA,UACL,MAAM,cAAc,KAAK,oBAAoB,KAAK;AAAA,UAClD,OAAO,KAAK,GAAG,WAAW;AAAA,UAC1B,OAAO,KAAK,KAAK,mBAAmB;AAAA,CAC7C,CAAC;AAAA;AAAA,MAEI;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAET,yBAAyB,GAAG;AAAA,IAC1B,OAAO,CAAC,KAAK,YAAY,OAAO,qBAAqB,CAAC;AAAA;AAAA,EAExD,mBAAmB,CAAC,OAAO;AAAA,IACzB,QAAQ,MAAM;AAAA,WACP;AAAA,QACH,OAAO,KAAK,oBAAoB,KAAK;AAAA,WAClC;AAAA,QACH,OAAO,KAAK,sBAAsB,KAAK;AAAA,WACpC;AAAA,QACH,OAAO,KAAK,uBAAuB,KAAK;AAAA,WACrC;AAAA,QACH,OAAO,KAAK,iBAAiB,KAAK;AAAA,WAC/B;AAAA,QACH,OAAO,KAAK,0BAA0B;AAAA,WACnC;AAAA,QACH,OAAO,CAAC;AAAA;AAAA,QAER,IAAI,SAAS,SAAS,MAAM,KAAK;AAAA,UAC/B,OAAO,CAAC,KAAK,mBAAmB,MAAM,GAAG,CAAC;AAAA,QAC5C;AAAA,QACA,OAAO,CAAC;AAAA;AAAA;AAAA,EAGd,oBAAoB,CAAC,QAAQ,IAAI,eAAe,GAAG;AAAA,IACjD,OAAO,IAAI,eAAe,KAAK,KAAK;AAAA,MAClC;AAAA,MACA,SAAS,IAAI,WAAW,MAAM;AAAA,MAC9B,OAAO;AAAA,MACP;AAAA,IACF,CAAC;AAAA;AAAA,EAEH,oBAAoB,CAAC,OAAO,IAAI,eAAe,GAAG;AAAA,IAChD,OAAO,IAAI,eAAe,KAAK,KAAK;AAAA,MAClC;AAAA,MACA,SAAS,MAAM;AAAA,MACf,UAAU,MAAM,QAAQ;AAAA,MACxB,aAAa,KAAK;AAAA,MAClB,SAAS,KAAK;AAAA,MACd,kBAAkB,KAAK;AAAA,MACvB,OAAO;AAAA,MACP;AAAA,IACF,CAAC;AAAA;AAAA,EAEH,qBAAqB,CAAC,UAAU,OAAO,cAAc;AAAA,IACnD,SAAS,eAAe;AAAA,IACxB,MAAM,cAAc,KAAK,SAAS,SAAS,GAAG,MAAM;AAAA,IACpD,MAAM,eAAe,KAAK,SAAS,gBAAgB,KAAK,KAAK,SAAS,SAAS;AAAA,IAC/E,MAAM,eAAe,KAAK,cAAc,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,GAAG,EAAE,IAAI,MAAM;AAAA,IAChG,MAAM,WAAW,MAAM,OAAO;AAAA,IAC9B,MAAM,UAAU,SAAS;AAAA,IACzB,SAAS,MAAM,EAAE,MAAM,UAAU,OAAO;AAAA,MACtC,MAAM,YAAY,QAAQ;AAAA,MAC1B,IAAI,CAAC;AAAA,QACH;AAAA,MACF,IAAI,qBAAqB,eAAe;AAAA,QACtC,UAAU,cAAc;AAAA,MAC1B;AAAA,MACA,MAAM,iBAAiB,UAAU;AAAA,MACjC,MAAM,YAAY,eAAe;AAAA,MACjC,IAAI,qBAAqB,eAAe;AAAA,QACtC,UAAU,cAAc;AAAA,QACxB,MAAM,iBAAiB,UAAU;AAAA,QACjC,MAAM,aAAa,eAAe;AAAA,QAClC,IAAI,sBAAsB,gBAAgB;AAAA,UACxC,MAAM,aAAa,MAAM,OAAO;AAAA,UAChC,MAAM,eAAe,CAAC;AAAA,UACtB,KAAK,oBAAoB,WAAW,QAAQ,YAAY;AAAA,UACxD,MAAM,qBAAqB,aAAa,IAAI,CAAC,WAAW;AAAA,eACnD;AAAA,YACH,IAAI,cAAc,MAAM,MAAM;AAAA,YAC9B,IAAI,cAAc,MAAM,MAAM;AAAA,YAC9B,YAAY,eAAe,qBAAqB;AAAA,cAC9C,MAAM,aAAa;AAAA,cACnB,QAAQ,aAAa;AAAA,cACrB,WAAW,aAAa;AAAA,cACxB,KAAK,aAAa;AAAA,YACpB,CAAC,IAAI,MAAM;AAAA,UACb,EAAE;AAAA,UACF,WAAW,UAAU,IAAI,WAAW,kBAAkB;AAAA,QACxD;AAAA,MACF;AAAA,MACA,SAAS,MAAM,EAAE,MAAM,aAAa,QAAQ,OAAO;AAAA,QACjD,MAAM,aAAa,MAAM;AAAA,QACzB,MAAM,gBAAgB,eAAe;AAAA,QACrC,IAAI;AAAA,QACJ,IAAI,yBAAyB,eAAe;AAAA,UAC1C,cAAc,cAAc;AAAA,UAC5B,MAAM,eAAe,cAAc;AAAA,UACnC,WAAW,aAAa;AAAA,QAC1B,EAAO,SAAI,yBAAyB,gBAAgB;AAAA,UAClD,WAAW;AAAA,QACb;AAAA,QACA,IAAI,UAAU;AAAA,UACZ,MAAM,OAAO,aAAa,KAAK;AAAA,UAC/B,MAAM,aAAa,CAAC;AAAA,UACpB,IAAI,MAAM;AAAA,YACR,KAAK,oBAAoB,KAAK,QAAQ,UAAU;AAAA,UAClD;AAAA,UACA,SAAS,UAAU,IAAI,WAAW,WAAW,SAAS,IAAI,aAAa,CAAC,KAAK,mBAAmB,GAAG,CAAC,CAAC;AAAA,QACvG;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EAEF,qBAAqB,CAAC,OAAO,IAAI,eAAe,GAAG;AAAA,IACjD,MAAM,WAAW,MAAM,OAAO;AAAA,IAC9B,MAAM,eAAe,KAAK,cAAc,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,GAAG,EAAE,IAAI,MAAM;AAAA,IAChG,IAAI,aAAa,KAAK,aAAa,WAAW,GAAG;AAAA,MAC/C,OAAO,KAAK,qBAAqB,CAAC,KAAK,mBAAmB,MAAM,GAAG,CAAC,GAAG,IAAI,YAAY;AAAA,IACzF;AAAA,IACA,MAAM,WAAW,IAAI,cAAc,KAAK,KAAK;AAAA,MAC3C;AAAA,MACA,eAAe;AAAA,MACf;AAAA,IACF,CAAC;AAAA,IACD,MAAM,cAAc,KAAK,SAAS,SAAS,GAAG,MAAM;AAAA,IACpD,SAAS,MAAM,EAAE,MAAM,UAAU,OAAO;AAAA,MACtC,MAAM,aAAa,QAAQ;AAAA,MAC3B,MAAM,YAAY,QAAQ,WAAW;AAAA,MACrC,MAAM,YAAY,IAAI,cAAc,KAAK,KAAK;AAAA,QAC5C,IAAI,GAAG,UAAU;AAAA,QACjB,eAAe;AAAA,QACf,QAAQ,YAAY,OAAO,CAAC,OAAO,UAAU,MAAM;AAAA,QACnD;AAAA,QACA,mBAAmB,aAAa,YAAY;AAAA,UAC1C,SAAS;AAAA,UACT,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,MACD,MAAM,aAAa,MAAM,OAAO;AAAA,MAChC,MAAM,eAAe,CAAC;AAAA,MACtB,KAAK,oBAAoB,WAAW,QAAQ,YAAY;AAAA,MACxD,MAAM,eAAe,KAAK,SAAS,gBAAgB,KAAK,KAAK,SAAS,SAAS;AAAA,MAC/E,MAAM,qBAAqB,aAAa,IAAI,CAAC,WAAW;AAAA,WACnD;AAAA,QACH,IAAI,cAAc,MAAM,MAAM;AAAA,QAC9B,IAAI,cAAc,MAAM,MAAM;AAAA,QAC9B,YAAY,eAAe,qBAAqB;AAAA,UAC9C,MAAM,aAAa;AAAA,UACnB,QAAQ,aAAa;AAAA,UACrB,WAAW,aAAa;AAAA,UACxB,KAAK,aAAa;AAAA,QACpB,CAAC,IAAI,MAAM;AAAA,MACb,EAAE;AAAA,MACF,MAAM,YAAY,IAAI,cAAc,KAAK,KAAK;AAAA,QAC5C,IAAI,GAAG,UAAU;AAAA,QACjB,QAAQ,CAAC,QAAQ;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,MACD,UAAU,IAAI,IAAI,eAAe,KAAK,KAAK;AAAA,QACzC,IAAI,GAAG,UAAU;AAAA,QACjB,SAAS,IAAI,WAAW,kBAAkB;AAAA,QAC1C,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,aAAa;AAAA,QACb,cAAc;AAAA,MAChB,CAAC,CAAC;AAAA,MACF,UAAU,IAAI,SAAS;AAAA,MACvB,SAAS,MAAM,EAAE,MAAM,aAAa,QAAQ,OAAO;AAAA,QACjD,MAAM,OAAO,aAAa,KAAK;AAAA,QAC/B,MAAM,aAAa,CAAC;AAAA,QACpB,IAAI,MAAM;AAAA,UACR,KAAK,oBAAoB,KAAK,QAAQ,UAAU;AAAA,QAClD;AAAA,QACA,MAAM,YAAY,QAAQ,aAAa,SAAS;AAAA,QAChD,MAAM,WAAW,IAAI,eAAe,KAAK,KAAK;AAAA,UAC5C,IAAI,GAAG,UAAU,WAAW;AAAA,UAC5B,SAAS,IAAI,WAAW,WAAW,SAAS,IAAI,aAAa,CAAC,KAAK,mBAAmB,GAAG,CAAC,CAAC;AAAA,UAC3F,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,aAAa;AAAA,UACb,cAAc;AAAA,QAChB,CAAC;AAAA,QACD,IAAI,WAAW;AAAA,UACb,UAAU,IAAI,QAAQ;AAAA,QACxB,EAAO;AAAA,UACL,MAAM,UAAU,IAAI,cAAc,KAAK,KAAK;AAAA,YAC1C,IAAI,GAAG,UAAU,WAAW;AAAA,YAC5B,QAAQ,CAAC,QAAQ;AAAA,YACjB;AAAA,UACF,CAAC;AAAA,UACD,QAAQ,IAAI,QAAQ;AAAA,UACpB,UAAU,IAAI,OAAO;AAAA;AAAA,MAEzB;AAAA,MACA,SAAS,IAAI,SAAS;AAAA,IACxB;AAAA,IACA,OAAO;AAAA;AAAA,EAET,uBAAuB,CAAC,OAAO,OAAO,eAAe,OAAO;AAAA,IAC1D,MAAM,KAAK,GAAG,KAAK,YAAY;AAAA,IAC/B,MAAM,eAAe,eAAe,IAAI;AAAA,IACxC,IAAI,MAAM,SAAS,QAAQ;AAAA,MACzB,OAAO,KAAK,qBAAqB,OAAO,IAAI,YAAY;AAAA,IAC1D;AAAA,IACA,IAAI,MAAM,SAAS,SAAS;AAAA,MAC1B,OAAO,KAAK,sBAAsB,OAAO,IAAI,YAAY;AAAA,IAC3D;AAAA,IACA,IAAI,MAAM,SAAS,SAAS;AAAA,MAC1B,OAAO;AAAA,IACT;AAAA,IACA,MAAM,SAAS,KAAK,oBAAoB,KAAK;AAAA,IAC7C,IAAI,OAAO,WAAW,GAAG;AAAA,MACvB,OAAO;AAAA,IACT;AAAA,IACA,OAAO,KAAK,qBAAqB,QAAQ,IAAI,YAAY;AAAA;AAAA,EAE3D,qBAAqB,CAAC,OAAO,OAAO,OAAO,cAAc;AAAA,IACvD,MAAM,eAAe,eAAe,IAAI;AAAA,IACxC,IAAI,MAAM,SAAS,QAAQ;AAAA,MACzB,MAAM,iBAAiB,MAAM;AAAA,MAC7B,MAAM,YAAY;AAAA,MAClB,eAAe,UAAU,UAAU;AAAA,MACnC,IAAI,UAAU,MAAM;AAAA,QAClB,eAAe,WAAW,UAAU;AAAA,MACtC;AAAA,MACA,eAAe,eAAe;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,IAAI,MAAM,SAAS,SAAS;AAAA,MAC1B,MAAM,YAAY,MAAM;AAAA,MACxB,MAAM,WAAW;AAAA,MACjB,IAAI,KAAK,YAAY;AAAA,QACnB,MAAM,mBAAmB,KAAK,IAAI,GAAG,UAAU,KAAK,SAAS,CAAC;AAAA,QAC9D,MAAM,kBAAkB,KAAK,IAAI,GAAG,SAAS,KAAK,SAAS,CAAC;AAAA,QAC5D,MAAM,oBAAoB,UAAU,OAAO,WAAW,KAAK,qBAAqB;AAAA,QAChF,MAAM,mBAAmB,SAAS,OAAO,WAAW,KAAK,oBAAoB;AAAA,QAC7E,IAAI,qBAAqB,mBAAmB,UAAU,OAAO,WAAW,SAAS,OAAO,QAAQ;AAAA,UAC9F,IAAI,qBAAqB,oBAAoB,UAAU,QAAQ,SAAS,KAAK;AAAA,YAC3E,MAAM,kBAAkB,MAAM;AAAA,YAC9B,gBAAgB,UAAU,IAAI,WAAW,CAAC,KAAK,mBAAmB,SAAS,GAAG,CAAC,CAAC;AAAA,YAChF,gBAAgB,eAAe;AAAA,UACjC;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACA,KAAK,OAAO,MAAM,WAAW,EAAE;AAAA,MAC/B,MAAM,gBAAgB,KAAK,sBAAsB,UAAU,GAAG,KAAK,YAAY,SAAS,YAAY;AAAA,MACpG,KAAK,IAAI,aAAa;AAAA,MACtB,MAAM,aAAa;AAAA,MACnB;AAAA,IACF;AAAA,IACA,MAAM,iBAAiB,MAAM;AAAA,IAC7B,MAAM,SAAS,KAAK,oBAAoB,KAAK;AAAA,IAC7C,eAAe,UAAU,IAAI,WAAW,MAAM;AAAA,IAC9C,eAAe,eAAe;AAAA;AAAA,EAEhC,YAAY,GAAG;AAAA,IACb,IAAI,CAAC,KAAK,UAAU;AAAA,MAClB,WAAW,SAAS,KAAK,cAAc;AAAA,QACrC,KAAK,OAAO,MAAM,WAAW,EAAE;AAAA,MACjC;AAAA,MACA,KAAK,eAAe,CAAC;AAAA,MACrB,KAAK,cAAc;AAAA,MACnB;AAAA,IACF;AAAA,IACA,MAAM,mBAAmB,KAAK,aAAa,IAAI;AAAA,IAC/C,KAAK,cAAc,yBAAyB,KAAK,UAAU,KAAK,aAAa,gBAAgB;AAAA,IAC7F,MAAM,SAAS,KAAK,YAAY;AAAA,IAChC,IAAI,OAAO,WAAW,KAAK,KAAK,SAAS,SAAS,GAAG;AAAA,MACnD,WAAW,SAAS,KAAK,cAAc;AAAA,QACrC,KAAK,OAAO,MAAM,WAAW,EAAE;AAAA,MACjC;AAAA,MACA,MAAM,OAAO,KAAK,qBAAqB,CAAC,KAAK,mBAAmB,KAAK,QAAQ,CAAC,GAAG,GAAG,KAAK,aAAa;AAAA,MACtG,KAAK,IAAI,IAAI;AAAA,MACb,KAAK,eAAe;AAAA,QAClB;AAAA,UACE,OAAO,EAAE,MAAM,QAAQ,KAAK,KAAK,UAAU,MAAM,KAAK,SAAS;AAAA,UAC/D,UAAU,KAAK;AAAA,UACf,YAAY;AAAA,QACd;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM,cAAc,CAAC;AAAA,IACrB,SAAS,IAAI,EAAE,IAAI,OAAO,QAAQ,KAAK;AAAA,MACrC,IAAI,OAAO,GAAG,SAAS,SAAS;AAAA,QAC9B,YAAY,KAAK,EAAE,OAAO,OAAO,IAAI,eAAe,EAAE,CAAC;AAAA,MACzD;AAAA,IACF;AAAA,IACA,MAAM,iBAAiB,YAAY,SAAS;AAAA,IAC5C,IAAI,aAAa;AAAA,IACjB,SAAS,IAAI,EAAE,IAAI,YAAY,QAAQ,KAAK;AAAA,MAC1C,QAAQ,UAAU,YAAY;AAAA,MAC9B,MAAM,eAAe,IAAI;AAAA,MACzB,MAAM,WAAW,KAAK,aAAa;AAAA,MACnC,IAAI,YAAY,SAAS,UAAU,OAAO;AAAA,QACxC;AAAA,QACA;AAAA,MACF;AAAA,MACA,IAAI,YAAY,SAAS,aAAa,MAAM,OAAO,SAAS,MAAM,SAAS,MAAM,MAAM;AAAA,QACrF,SAAS,QAAQ;AAAA,QACjB;AAAA,QACA;AAAA,MACF;AAAA,MACA,IAAI,YAAY,SAAS,MAAM,SAAS,MAAM,MAAM;AAAA,QAClD,KAAK,sBAAsB,UAAU,OAAO,YAAY,YAAY;AAAA,QACpE,SAAS,QAAQ;AAAA,QACjB,SAAS,WAAW,MAAM;AAAA,QAC1B;AAAA,QACA;AAAA,MACF;AAAA,MACA,IAAI,UAAU;AAAA,QACZ,KAAK,OAAO,SAAS,WAAW,EAAE;AAAA,MACpC;AAAA,MACA,IAAI;AAAA,MACJ,IAAI,KAAK,aAAa;AAAA,QACpB,MAAM,UAAU;AAAA,UACd,aAAa,KAAK;AAAA,UAClB,SAAS,KAAK;AAAA,UACd,kBAAkB,KAAK;AAAA,UACvB,eAAe,MAAM,KAAK,wBAAwB,OAAO,YAAY,YAAY;AAAA,QACnF;AAAA,QACA,MAAM,SAAS,KAAK,YAAY,OAAO,OAAO;AAAA,QAC9C,IAAI,QAAQ;AAAA,UACV,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,IAAI,CAAC,YAAY;AAAA,QACf,aAAa,KAAK,wBAAwB,OAAO,YAAY,YAAY,KAAK;AAAA,MAChF;AAAA,MACA,IAAI,YAAY;AAAA,QACd,KAAK,IAAI,UAAU;AAAA,QACnB,KAAK,aAAa,cAAc;AAAA,UAC9B;AAAA,UACA,UAAU,MAAM;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAO,KAAK,aAAa,SAAS,YAAY;AAAA,MAC5C,MAAM,UAAU,KAAK,aAAa,IAAI;AAAA,MACtC,KAAK,OAAO,QAAQ,WAAW,EAAE;AAAA,IACnC;AAAA;AAAA,EAEF,gBAAgB,GAAG;AAAA,IACjB,WAAW,SAAS,KAAK,cAAc;AAAA,MACrC,KAAK,OAAO,MAAM,WAAW,EAAE;AAAA,IACjC;AAAA,IACA,KAAK,eAAe,CAAC;AAAA;AAAA,EAEvB,cAAc,GAAG;AAAA,IACf,SAAS,IAAI,EAAE,IAAI,KAAK,aAAa,QAAQ,KAAK;AAAA,MAChD,MAAM,QAAQ,KAAK,aAAa;AAAA,MAChC,MAAM,eAAe,IAAI,KAAK,aAAa,SAAS;AAAA,MACpD,IAAI,MAAM,MAAM,SAAS,QAAQ;AAAA,QAC/B,MAAM,iBAAiB,MAAM;AAAA,QAC7B,eAAe,cAAc,KAAK;AAAA,QAClC,eAAe,UAAU,KAAK;AAAA,MAChC,EAAO,SAAI,MAAM,MAAM,SAAS,SAAS;AAAA,QACvC,MAAM,eAAe,eAAe,IAAI;AAAA,QACxC,KAAK,sBAAsB,MAAM,YAAY,MAAM,OAAO,YAAY;AAAA,MACxE,EAAO;AAAA,QACL,MAAM,iBAAiB,MAAM;AAAA,QAC7B,MAAM,SAAS,KAAK,oBAAoB,MAAM,KAAK;AAAA,QACnD,IAAI,OAAO,SAAS,GAAG;AAAA,UACrB,eAAe,UAAU,IAAI,WAAW,MAAM;AAAA,QAChD;AAAA;AAAA,IAEJ;AAAA;AAAA,EAEF,UAAU,GAAG;AAAA,IACX,KAAK,cAAc;AAAA,IACnB,KAAK,iBAAiB;AAAA,IACtB,KAAK,aAAa;AAAA,IAClB,KAAK,cAAc;AAAA;AAAA,EAErB,UAAU,CAAC,QAAQ,WAAW;AAAA,IAC5B,IAAI,KAAK,aAAa;AAAA,MACpB,KAAK,cAAc;AAAA,MACnB,KAAK,eAAe;AAAA,IACtB;AAAA,IACA,MAAM,WAAW,QAAQ,SAAS;AAAA;AAEtC;AAEA,IAAI,8BAA8B,KAAK,QAAQ,SAAS;AACxD,IAAI,8BAA8B,KAAK,QAAQ,SAAS;AAAA;AAExD,MAAM,yBAAyB,WAAW;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,KAAK,EAAE,YAAY,MAAM,QAAQ,CAAC;AAAA,IACxC,KAAK,cAAc,QAAQ;AAAA,IAC3B,KAAK,OAAO,QAAQ,OAAO;AAAA,IAC3B,KAAK,OAAO,QAAQ,OAAO;AAAA,IAC3B,KAAK,SAAS,QAAQ,SAAS,KAAK;AAAA,IACpC,KAAK,gBAAgB,QAAQ,gBAAgB,KAAK,IAAI,IAAI,KAAK,OAAO,KAAK,QAAQ,GAAG;AAAA,IACtF,KAAK,YAAY,QAAQ;AAAA,IACzB,KAAK,mBAAmB,QAAQ,kBAAkB,WAAW,QAAQ,eAAe,IAAI;AAAA,IACxF,KAAK,mBAAmB,QAAQ,kBAAkB,WAAW,QAAQ,eAAe,IAAI;AAAA,IACxF,KAAK,mBAAmB;AAAA;AAAA,MAEtB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK;AAAA;AAAA,MAEV,KAAK,CAAC,UAAU;AAAA,IAClB,MAAM,UAAU,KAAK,IAAI,KAAK,MAAM,KAAK,IAAI,KAAK,MAAM,QAAQ,CAAC;AAAA,IACjE,IAAI,YAAY,KAAK,QAAQ;AAAA,MAC3B,KAAK,SAAS;AAAA,MACd,KAAK,YAAY,OAAO;AAAA,MACxB,KAAK,KAAK,UAAU,EAAE,OAAO,QAAQ,CAAC;AAAA,MACtC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,GAAG,GAAG;AAAA,IACR,OAAO,KAAK;AAAA;AAAA,MAEV,GAAG,CAAC,QAAQ;AAAA,IACd,IAAI,WAAW,KAAK,MAAM;AAAA,MACxB,KAAK,OAAO;AAAA,MACZ,IAAI,KAAK,SAAS,QAAQ;AAAA,QACxB,KAAK,QAAQ;AAAA,MACf;AAAA,MACA,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,GAAG,GAAG;AAAA,IACR,OAAO,KAAK;AAAA;AAAA,MAEV,GAAG,CAAC,QAAQ;AAAA,IACd,IAAI,WAAW,KAAK,MAAM;AAAA,MACxB,KAAK,OAAO;AAAA,MACZ,IAAI,KAAK,SAAS,QAAQ;AAAA,QACxB,KAAK,QAAQ;AAAA,MACf;AAAA,MACA,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,YAAY,CAAC,MAAM;AAAA,IACrB,MAAM,cAAc,KAAK,IAAI,MAAM,KAAK,IAAI,MAAM,KAAK,OAAO,KAAK,IAAI,CAAC;AAAA,IACxE,IAAI,gBAAgB,KAAK,eAAe;AAAA,MACtC,KAAK,gBAAgB;AAAA,MACrB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,MAEV,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,MAEV,eAAe,CAAC,OAAO;AAAA,IACzB,KAAK,mBAAmB,WAAW,KAAK;AAAA,IACxC,KAAK,cAAc;AAAA;AAAA,MAEjB,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,MAEV,eAAe,CAAC,OAAO;AAAA,IACzB,KAAK,mBAAmB,WAAW,KAAK;AAAA,IACxC,KAAK,cAAc;AAAA;AAAA,EAErB,0BAA0B,CAAC,OAAO;AAAA,IAChC,MAAM,aAAa,KAAK,gBAAgB,aAAa,KAAK,IAAI,KAAK;AAAA,IACnE,MAAM,YAAY,KAAK,gBAAgB,aAAa,MAAM,IAAI,MAAM,KAAK;AAAA,IACzE,MAAM,kBAAkB,KAAK,IAAI,GAAG,KAAK,KAAK,KAAK,gBAAgB,aAAa,KAAK,SAAS,KAAK,SAAS,GAAG,WAAW,CAAC,CAAC;AAAA,IAC5H,MAAM,oBAAoB,KAAK,qBAAqB;AAAA,IACpD,MAAM,mBAAmB,KAAK,oBAAoB;AAAA,IAClD,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,kBAAkB,kBAAkB,iBAAiB,CAAC;AAAA;AAAA,EAEpF,kBAAkB,GAAG;AAAA,IACnB,IAAI,aAAa;AAAA,IACjB,IAAI,oBAAoB;AAAA,IACxB,KAAK,cAAc,CAAC,UAAU;AAAA,MAC5B,MAAM,gBAAgB;AAAA,MACtB,MAAM,eAAe;AAAA,MACrB,MAAM,QAAQ,KAAK,aAAa;AAAA,MAChC,MAAM,UAAU,MAAM,KAAK,MAAM,KAAK,MAAM,IAAI,MAAM,IAAI,MAAM,SAAS,MAAM,KAAK,MAAM,KAAK,MAAM,IAAI,MAAM,IAAI,MAAM;AAAA,MACzH,IAAI,SAAS;AAAA,QACX,aAAa;AAAA,QACb,oBAAoB,KAAK,2BAA2B,KAAK;AAAA,MAC3D,EAAO;AAAA,QACL,KAAK,2BAA2B,KAAK;AAAA,QACrC,aAAa;AAAA,QACb,oBAAoB,KAAK,2BAA2B,KAAK;AAAA;AAAA;AAAA,IAG7D,KAAK,cAAc,CAAC,UAAU;AAAA,MAC5B,IAAI,CAAC;AAAA,QACH;AAAA,MACF,MAAM,gBAAgB;AAAA,MACtB,KAAK,+BAA+B,OAAO,iBAAiB;AAAA;AAAA,IAE9D,KAAK,YAAY,CAAC,UAAU;AAAA,MAC1B,IAAI,YAAY;AAAA,QACd,KAAK,+BAA+B,OAAO,iBAAiB;AAAA,MAC9D;AAAA,MACA,aAAa;AAAA;AAAA;AAAA,EAGjB,0BAA0B,CAAC,OAAO;AAAA,IAChC,MAAM,aAAa,KAAK,gBAAgB,aAAa,KAAK,IAAI,KAAK;AAAA,IACnE,MAAM,YAAY,KAAK,gBAAgB,aAAa,KAAK,SAAS,KAAK;AAAA,IACvE,MAAM,WAAW,KAAK,gBAAgB,aAAa,MAAM,IAAI,MAAM;AAAA,IACnE,MAAM,mBAAmB,WAAW;AAAA,IACpC,MAAM,kBAAkB,KAAK,IAAI,GAAG,KAAK,IAAI,WAAW,gBAAgB,CAAC;AAAA,IACzE,MAAM,QAAQ,cAAc,IAAI,IAAI,kBAAkB;AAAA,IACtD,MAAM,QAAQ,KAAK,OAAO,KAAK;AAAA,IAC/B,MAAM,WAAW,KAAK,OAAO,QAAQ;AAAA,IACrC,KAAK,QAAQ;AAAA;AAAA,EAEf,8BAA8B,CAAC,OAAO,eAAe;AAAA,IACnD,MAAM,aAAa,KAAK,gBAAgB,aAAa,KAAK,IAAI,KAAK;AAAA,IACnE,MAAM,YAAY,KAAK,gBAAgB,aAAa,KAAK,SAAS,KAAK;AAAA,IACvE,MAAM,WAAW,KAAK,gBAAgB,aAAa,MAAM,IAAI,MAAM;AAAA,IACnE,MAAM,mBAAmB,YAAY;AAAA,IACrC,MAAM,mBAAmB,WAAW;AAAA,IACpC,MAAM,kBAAkB,KAAK,IAAI,GAAG,KAAK,IAAI,WAAW,gBAAgB,CAAC;AAAA,IACzE,MAAM,kBAAkB,kBAAkB;AAAA,IAC1C,MAAM,mBAAmB,KAAK,oBAAoB;AAAA,IAClD,MAAM,gBAAgB,KAAK,IAAI,GAAG,mBAAmB,gBAAgB;AAAA,IACrE,IAAI,oBAAoB,kBAAkB;AAAA,IAC1C,oBAAoB,KAAK,IAAI,GAAG,KAAK,IAAI,eAAe,iBAAiB,CAAC;AAAA,IAC1E,MAAM,QAAQ,kBAAkB,IAAI,IAAI,oBAAoB;AAAA,IAC5D,MAAM,QAAQ,KAAK,OAAO,KAAK;AAAA,IAC/B,MAAM,WAAW,KAAK,OAAO,QAAQ;AAAA,IACrC,KAAK,QAAQ;AAAA;AAAA,EAEf,YAAY,GAAG;AAAA,IACb,MAAM,mBAAmB,KAAK,oBAAoB;AAAA,IAClD,MAAM,oBAAoB,KAAK,qBAAqB;AAAA,IACpD,MAAM,iBAAiB,KAAK,MAAM,oBAAoB,CAAC;AAAA,IACvD,MAAM,gBAAgB,KAAK,MAAM,oBAAoB,oBAAoB,CAAC,IAAI;AAAA,IAC9E,IAAI,KAAK,gBAAgB,YAAY;AAAA,MACnC,OAAO;AAAA,QACL,GAAG,KAAK;AAAA,QACR,GAAG,KAAK,IAAI;AAAA,QACZ,OAAO,KAAK;AAAA,QACZ,QAAQ,KAAK,IAAI,GAAG,aAAa;AAAA,MACnC;AAAA,IACF,EAAO;AAAA,MACL,OAAO;AAAA,QACL,GAAG,KAAK,IAAI;AAAA,QACZ,GAAG,KAAK;AAAA,QACR,OAAO,KAAK,IAAI,GAAG,aAAa;AAAA,QAChC,QAAQ,KAAK;AAAA,MACf;AAAA;AAAA;AAAA,EAGJ,UAAU,CAAC,QAAQ;AAAA,IACjB,IAAI,KAAK,gBAAgB,cAAc;AAAA,MACrC,KAAK,iBAAiB,MAAM;AAAA,IAC9B,EAAO;AAAA,MACL,KAAK,eAAe,MAAM;AAAA;AAAA;AAAA,EAG9B,gBAAgB,CAAC,QAAQ;AAAA,IACvB,MAAM,mBAAmB,KAAK,oBAAoB;AAAA,IAClD,MAAM,oBAAoB,KAAK,qBAAqB;AAAA,IACpD,MAAM,kBAAkB,oBAAoB;AAAA,IAC5C,OAAO,SAAS,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK,QAAQ,KAAK,gBAAgB;AAAA,IAC9E,MAAM,gBAAgB,KAAK,MAAM,oBAAoB,CAAC;AAAA,IACtD,MAAM,cAAc,KAAK,KAAK,kBAAkB,CAAC,IAAI;AAAA,IACrD,MAAM,SAAS,KAAK,IAAI,GAAG,aAAa;AAAA,IACxC,MAAM,OAAO,KAAK,IAAI,KAAK,QAAQ,GAAG,WAAW;AAAA,IACjD,SAAS,QAAQ,OAAO,SAAS,MAAM,SAAS;AAAA,MAC9C,MAAM,mBAAmB,QAAQ;AAAA,MACjC,MAAM,iBAAiB,mBAAmB;AAAA,MAC1C,MAAM,mBAAmB,KAAK,IAAI,mBAAmB,gBAAgB;AAAA,MACrE,MAAM,iBAAiB,KAAK,IAAI,iBAAiB,cAAc;AAAA,MAC/D,MAAM,WAAW,iBAAiB;AAAA,MAClC,IAAI,OAAO;AAAA,MACX,IAAI,YAAY,GAAG;AAAA,QACjB,OAAO;AAAA,MACT,EAAO;AAAA,QACL,MAAM,aAAa,qBAAqB;AAAA,QACxC,IAAI,YAAY;AAAA,UACd,OAAO;AAAA,QACT,EAAO;AAAA,UACL,OAAO;AAAA;AAAA;AAAA,MAGX,SAAS,KAAK,EAAE,KAAK,KAAK,QAAQ,MAAM;AAAA,QACtC,OAAO,yBAAyB,KAAK,IAAI,OAAO,KAAK,IAAI,IAAI,MAAM,KAAK,kBAAkB,KAAK,gBAAgB;AAAA,MACjH;AAAA,IACF;AAAA;AAAA,EAEF,cAAc,CAAC,QAAQ;AAAA,IACrB,MAAM,mBAAmB,KAAK,oBAAoB;AAAA,IAClD,MAAM,oBAAoB,KAAK,qBAAqB;AAAA,IACpD,MAAM,kBAAkB,oBAAoB;AAAA,IAC5C,OAAO,SAAS,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK,QAAQ,KAAK,gBAAgB;AAAA,IAC9E,MAAM,gBAAgB,KAAK,MAAM,oBAAoB,CAAC;AAAA,IACtD,MAAM,cAAc,KAAK,KAAK,kBAAkB,CAAC,IAAI;AAAA,IACrD,MAAM,SAAS,KAAK,IAAI,GAAG,aAAa;AAAA,IACxC,MAAM,OAAO,KAAK,IAAI,KAAK,SAAS,GAAG,WAAW;AAAA,IAClD,SAAS,QAAQ,OAAO,SAAS,MAAM,SAAS;AAAA,MAC9C,MAAM,mBAAmB,QAAQ;AAAA,MACjC,MAAM,iBAAiB,mBAAmB;AAAA,MAC1C,MAAM,mBAAmB,KAAK,IAAI,mBAAmB,gBAAgB;AAAA,MACrE,MAAM,iBAAiB,KAAK,IAAI,iBAAiB,cAAc;AAAA,MAC/D,MAAM,WAAW,iBAAiB;AAAA,MAClC,IAAI,OAAO;AAAA,MACX,IAAI,YAAY,GAAG;AAAA,QACjB,OAAO;AAAA,MACT,EAAO,SAAI,WAAW,GAAG;AAAA,QACvB,MAAM,wBAAwB,mBAAmB;AAAA,QACjD,IAAI,0BAA0B,GAAG;AAAA,UAC/B,OAAO;AAAA,QACT,EAAO;AAAA,UACL,OAAO;AAAA;AAAA,MAEX;AAAA,MACA,SAAS,KAAK,EAAE,KAAK,KAAK,OAAO,MAAM;AAAA,QACrC,OAAO,yBAAyB,KAAK,IAAI,IAAI,KAAK,IAAI,OAAO,MAAM,KAAK,kBAAkB,KAAK,gBAAgB;AAAA,MACjH;AAAA,IACF;AAAA;AAAA,EAEF,mBAAmB,GAAG;AAAA,IACpB,MAAM,mBAAmB,KAAK,gBAAgB,aAAa,KAAK,SAAS,IAAI,KAAK,QAAQ;AAAA,IAC1F,MAAM,QAAQ,KAAK,OAAO,KAAK;AAAA,IAC/B,IAAI,UAAU;AAAA,MACZ,OAAO;AAAA,IACT,MAAM,eAAe,KAAK,IAAI,GAAG,KAAK,aAAa;AAAA,IACnD,MAAM,cAAc,QAAQ;AAAA,IAC5B,IAAI,eAAe;AAAA,MACjB,OAAO;AAAA,IACT,MAAM,aAAa,eAAe;AAAA,IAClC,MAAM,iBAAiB,KAAK,MAAM,mBAAmB,UAAU;AAAA,IAC/D,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,gBAAgB,gBAAgB,CAAC;AAAA;AAAA,EAE/D,oBAAoB,GAAG;AAAA,IACrB,MAAM,mBAAmB,KAAK,gBAAgB,aAAa,KAAK,SAAS,IAAI,KAAK,QAAQ;AAAA,IAC1F,MAAM,QAAQ,KAAK,OAAO,KAAK;AAAA,IAC/B,IAAI,UAAU;AAAA,MACZ,OAAO;AAAA,IACT,MAAM,cAAc,KAAK,SAAS,KAAK,QAAQ;AAAA,IAC/C,MAAM,mBAAmB,KAAK,oBAAoB;AAAA,IAClD,OAAO,KAAK,MAAM,cAAc,mBAAmB,iBAAiB;AAAA;AAExE;AAAA;AAGA,MAAM,4BAA4B,WAAW;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB;AAAA,EACA,aAAa;AAAA,MACT,OAAO,GAAG;AAAA,IACZ,OAAO,MAAM;AAAA;AAAA,MAEX,OAAO,CAAC,OAAO;AAAA,IACjB,KAAK,oBAAoB;AAAA,IACzB,MAAM,UAAU;AAAA;AAAA,EAElB,sBAAsB,GAAG;AAAA,IACvB,KAAK,oBAAoB;AAAA,IACzB,KAAK,sBAAsB;AAAA;AAAA,MAEzB,UAAU,GAAG;AAAA,IACf,OAAO,KAAK;AAAA;AAAA,MAEV,cAAc,GAAG;AAAA,IACnB,OAAO,KAAK;AAAA;AAAA,MAEV,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,MAEV,UAAU,CAAC,OAAO;AAAA,IACpB,IAAI,UAAU,KAAK;AAAA,MACjB;AAAA,IACF,KAAK,cAAc;AAAA,IACnB,KAAK,sBAAsB;AAAA,IAC3B,KAAK,4BAA4B;AAAA,IACjC,KAAK,iBAAiB,KAAK;AAAA;AAAA,MAEzB,cAAc,CAAC,OAAO;AAAA,IACxB,MAAM,cAAc,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,GAAG,KAAK,GAAG,KAAK,aAAa,KAAK,YAAY,CAAC;AAAA,IAChG,IAAI,gBAAgB,KAAK,iBAAiB;AAAA,MACxC,KAAK,kBAAkB;AAAA,MACvB,KAAK,4BAA4B;AAAA,IACnC;AAAA;AAAA,MAEE,YAAY,CAAC,OAAO;AAAA,IACtB,IAAI,UAAU,KAAK;AAAA,MACjB;AAAA,IACF,KAAK,gBAAgB;AAAA,IACrB,KAAK,OAAO,eAAe,KAAK,IAAI,GAAG,KAAK,aAAa;AAAA,IACzD,KAAK,sBAAsB;AAAA,IAC3B,KAAK,4BAA4B;AAAA,IACjC,KAAK,iBAAiB,KAAK;AAAA;AAAA,MAEzB,UAAU,GAAG;AAAA,IACf,OAAO,KAAK;AAAA;AAAA,MAEV,UAAU,CAAC,OAAO;AAAA,IACpB,IAAI,UAAU,KAAK;AAAA,MACjB;AAAA,IACF,KAAK,cAAc;AAAA,IACnB,KAAK,WAAW,UAAU;AAAA,IAC1B,KAAK,SAAS,UAAU;AAAA;AAAA,EAE1B,WAAW,CAAC,OAAO,cAAc,cAAc,aAAa,aAAa,UAAU,WAAW;AAAA,IAC5F,MAAM,KAAK;AAAA,MACT,eAAe,gBAAgB,aAAa,WAAW;AAAA,MACvD,WAAW;AAAA,MACX,YAAY;AAAA,SACT;AAAA,IACL,CAAC;AAAA,IACD,KAAK,YAAY,QAAQ;AAAA,IACzB,KAAK,cAAc;AAAA,IACnB,KAAK,cAAc;AAAA,IACnB,MAAM,cAAc,KAAK,IAAI,GAAG,KAAK,cAAc,KAAK,aAAa;AAAA,IACrE,MAAM,kBAAkB,KAAK,IAAI,GAAG,KAAK,aAAa;AAAA,IACtD,MAAM,WAAW,cAAc,gBAAgB;AAAA,IAC/C,KAAK,SAAS,IAAI,iBAAiB,KAAK;AAAA,MACtC;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO,KAAK;AAAA,MACZ,cAAc;AAAA,MACd,UAAU,CAAC,UAAU;AAAA,QACnB,KAAK,kBAAkB,KAAK,MAAM,KAAK;AAAA,QACvC,KAAK,YAAY,KAAK,eAAe;AAAA,QACrC,KAAK,KAAK,UAAU,EAAE,UAAU,KAAK,gBAAgB,CAAC;AAAA;AAAA,SAErD,gBAAgB,aAAa;AAAA,QAC9B,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC;AAAA,QAC1C,QAAQ;AAAA,QACR,YAAY;AAAA,MACd,IAAI;AAAA,QACF,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,WAAW;AAAA,MACb;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,SACT;AAAA,IACL,CAAC;AAAA,IACD,KAAK,4BAA4B;AAAA,IACjC,MAAM,YAAY,eAAe;AAAA,MAC/B,iBAAiB,aAAa;AAAA,MAC9B,iBAAiB,aAAa;AAAA,MAC9B,YAAY,aAAa;AAAA,SACtB;AAAA,IACL,IAAI,CAAC;AAAA,IACL,KAAK,aAAa,IAAI,gBAAgB,KAAK;AAAA,MACzC,WAAW;AAAA,MACX,SAAS,KAAK;AAAA,MACd,WAAW,KAAK,gBAAgB,aAAa,OAAO;AAAA,MACpD,QAAQ,KAAK,gBAAgB,aAAa,IAAI;AAAA,SAC3C;AAAA,IACL,CAAC;AAAA,IACD,KAAK,WAAW,IAAI,gBAAgB,KAAK;AAAA,MACvC,WAAW;AAAA,MACX,SAAS,KAAK;AAAA,MACd,WAAW,KAAK,gBAAgB,aAAa,SAAS;AAAA,MACtD,QAAQ,KAAK,gBAAgB,aAAa,IAAI;AAAA,SAC3C;AAAA,IACL,CAAC;AAAA,IACD,KAAK,IAAI,KAAK,UAAU;AAAA,IACxB,KAAK,IAAI,KAAK,MAAM;AAAA,IACpB,KAAK,IAAI,KAAK,QAAQ;AAAA,IACtB,IAAI,yBAAyB;AAAA,IAC7B,IAAI,uBAAuB;AAAA,IAC3B,KAAK,WAAW,cAAc,CAAC,UAAU;AAAA,MACvC,MAAM,gBAAgB;AAAA,MACtB,MAAM,eAAe;AAAA,MACrB,KAAK,SAAS,MAAM,UAAU;AAAA,MAC9B,yBAAyB,WAAW,MAAM;AAAA,QACxC,KAAK,SAAS,MAAM,UAAU;AAAA,QAC9B,yBAAyB,YAAY,MAAM;AAAA,UACzC,KAAK,SAAS,MAAM,UAAU;AAAA,WAC7B,GAAG;AAAA,SACL,GAAG;AAAA;AAAA,IAER,KAAK,WAAW,YAAY,CAAC,UAAU;AAAA,MACrC,MAAM,gBAAgB;AAAA,MACtB,cAAc,sBAAsB;AAAA;AAAA,IAEtC,KAAK,SAAS,cAAc,CAAC,UAAU;AAAA,MACrC,MAAM,gBAAgB;AAAA,MACtB,MAAM,eAAe;AAAA,MACrB,KAAK,SAAS,KAAK,UAAU;AAAA,MAC7B,uBAAuB,WAAW,MAAM;AAAA,QACtC,KAAK,SAAS,KAAK,UAAU;AAAA,QAC7B,uBAAuB,YAAY,MAAM;AAAA,UACvC,KAAK,SAAS,KAAK,UAAU;AAAA,WAC5B,GAAG;AAAA,SACL,GAAG;AAAA;AAAA,IAER,KAAK,SAAS,YAAY,CAAC,UAAU;AAAA,MACnC,MAAM,gBAAgB;AAAA,MACtB,cAAc,oBAAoB;AAAA;AAAA;AAAA,MAGlC,YAAY,CAAC,SAAS;AAAA,IACxB,OAAO,OAAO,KAAK,YAAY,OAAO;AAAA,IACtC,OAAO,OAAO,KAAK,UAAU,OAAO;AAAA,IACpC,KAAK,cAAc;AAAA;AAAA,MAEjB,YAAY,CAAC,SAAS;AAAA,IACxB,OAAO,OAAO,KAAK,QAAQ,OAAO;AAAA,IAClC,KAAK,cAAc;AAAA;AAAA,EAErB,2BAA2B,GAAG;AAAA,IAC5B,MAAM,cAAc,KAAK,IAAI,GAAG,KAAK,cAAc,KAAK,aAAa;AAAA,IACrE,KAAK,OAAO,MAAM;AAAA,IAClB,KAAK,OAAO,MAAM;AAAA,IAClB,KAAK,OAAO,QAAQ,KAAK,IAAI,KAAK,iBAAiB,WAAW;AAAA;AAAA,EAEhE,QAAQ,CAAC,OAAO,OAAO,YAAY;AAAA,IACjC,MAAM,aAAa,SAAS,aAAa,KAAK,eAAe,SAAS,YAAY,KAAK,aAAa,SAAS,SAAS,KAAK,cAAc,IAAI;AAAA,IAC7I,MAAM,gBAAgB,aAAa;AAAA,IACnC,KAAK,kBAAkB;AAAA;AAAA,EAEzB,qBAAqB,GAAG;AAAA,IACtB,IAAI,CAAC,KAAK,mBAAmB;AAAA,MAC3B,MAAM,YAAY,KAAK,cAAc,KAAK,eAAe,IAAI,KAAK,eAAe,KAAK;AAAA,MACtF,MAAM,UAAU,YAAY;AAAA,IAC9B;AAAA;AAAA,EAEF,cAAc,CAAC,KAAK;AAAA,IAClB,QAAQ,IAAI;AAAA,WACL;AAAA,WACA;AAAA,QACH,IAAI,KAAK,gBAAgB;AAAA,UACvB,OAAO;AAAA,QACT,KAAK,SAAS,KAAK,GAAG,UAAU;AAAA,QAChC,OAAO;AAAA,WACJ;AAAA,WACA;AAAA,QACH,IAAI,KAAK,gBAAgB;AAAA,UACvB,OAAO;AAAA,QACT,KAAK,SAAS,IAAI,GAAG,UAAU;AAAA,QAC/B,OAAO;AAAA,WACJ;AAAA,WACA;AAAA,QACH,IAAI,KAAK,gBAAgB;AAAA,UACvB,OAAO;AAAA,QACT,KAAK,SAAS,KAAK,GAAG,UAAU;AAAA,QAChC,OAAO;AAAA,WACJ;AAAA,WACA;AAAA,QACH,IAAI,KAAK,gBAAgB;AAAA,UACvB,OAAO;AAAA,QACT,KAAK,SAAS,IAAI,GAAG,UAAU;AAAA,QAC/B,OAAO;AAAA,WACJ;AAAA,QACH,KAAK,SAAS,KAAK,GAAG,UAAU;AAAA,QAChC,OAAO;AAAA,WACJ;AAAA,QACH,KAAK,SAAS,IAAI,GAAG,UAAU;AAAA,QAC/B,OAAO;AAAA,WACJ;AAAA,QACH,KAAK,SAAS,IAAI,SAAS;AAAA,QAC3B,OAAO;AAAA,WACJ;AAAA,QACH,KAAK,SAAS,GAAG,SAAS;AAAA,QAC1B,OAAO;AAAA;AAAA,IAEX,OAAO;AAAA;AAEX;AAAA;AAEA,MAAM,wBAAwB,WAAW;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,KAAK,OAAO;AAAA,IAClB,KAAK,aAAa,QAAQ;AAAA,IAC1B,KAAK,mBAAmB,QAAQ,kBAAkB,WAAW,QAAQ,eAAe,IAAI,KAAK,WAAW,GAAG,GAAG,GAAG,CAAC;AAAA,IAClH,KAAK,mBAAmB,QAAQ,kBAAkB,WAAW,QAAQ,eAAe,IAAI,KAAK,WAAW,GAAG,GAAG,GAAG,CAAC;AAAA,IAClH,KAAK,cAAc,QAAQ,cAAc;AAAA,IACzC,KAAK,cAAc;AAAA,MACjB,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,SACJ,QAAQ;AAAA,IACb;AAAA,IACA,IAAI,CAAC,QAAQ,OAAO;AAAA,MAClB,KAAK,QAAQ,IAAI,YAAY,KAAK,aAAa,CAAC;AAAA,IAClD;AAAA;AAAA,MAEE,SAAS,GAAG;AAAA,IACd,OAAO,KAAK;AAAA;AAAA,MAEV,SAAS,CAAC,OAAO;AAAA,IACnB,IAAI,KAAK,eAAe,OAAO;AAAA,MAC7B,KAAK,aAAa;AAAA,MAClB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,MAEV,eAAe,CAAC,OAAO;AAAA,IACzB,IAAI,KAAK,qBAAqB,OAAO;AAAA,MACnC,KAAK,mBAAmB,WAAW,KAAK;AAAA,MACxC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,MAEV,eAAe,CAAC,OAAO;AAAA,IACzB,IAAI,KAAK,qBAAqB,OAAO;AAAA,MACnC,KAAK,mBAAmB,WAAW,KAAK;AAAA,MACxC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,UAAU,GAAG;AAAA,IACf,OAAO,KAAK;AAAA;AAAA,MAEV,UAAU,CAAC,OAAO;AAAA,IACpB,IAAI,KAAK,gBAAgB,OAAO;AAAA,MAC9B,KAAK,cAAc;AAAA,MACnB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,UAAU,CAAC,OAAO;AAAA,IACpB,KAAK,cAAc;AAAA,SACd,KAAK;AAAA,SACL;AAAA,IACL;AAAA,IACA,KAAK,cAAc;AAAA;AAAA,EAErB,UAAU,CAAC,QAAQ;AAAA,IACjB,MAAM,OAAO,KAAK,aAAa;AAAA,IAC/B,OAAO,SAAS,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,kBAAkB,KAAK,kBAAkB,KAAK,WAAW;AAAA;AAAA,EAEtG,YAAY,GAAG;AAAA,IACb,QAAQ,KAAK;AAAA,WACN;AAAA,QACH,OAAO,KAAK,YAAY;AAAA,WACrB;AAAA,QACH,OAAO,KAAK,YAAY;AAAA,WACrB;AAAA,QACH,OAAO,KAAK,YAAY;AAAA,WACrB;AAAA,QACH,OAAO,KAAK,YAAY;AAAA;AAAA,QAExB,OAAO;AAAA;AAAA;AAGf;AAAA;AAEA,MAAM,0BAA0B,cAAc;AAAA,EAC5C;AAAA,EACA;AAAA,EACA,WAAW,CAAC,KAAK,UAAU,iBAAiB,SAAS;AAAA,IACnD,MAAM,KAAK,OAAO;AAAA,IAClB,KAAK,WAAW;AAAA,IAChB,KAAK,mBAAmB;AAAA;AAAA,MAEtB,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,MAEV,eAAe,CAAC,OAAO;AAAA,IACzB,KAAK,mBAAmB;AAAA;AAAA,EAE1B,mBAAmB,GAAG;AAAA,IACpB,IAAI,KAAK,kBAAkB;AAAA,MACzB,OAAO,qBAAqB,KAAK,UAAU,KAAK,+BAA+B,GAAG,KAAK,aAAa,CAAC,EAAE,IAAI,CAAC,UAAU,MAAM,GAAG;AAAA,IACjI;AAAA,IACA,OAAO,KAAK,+BAA+B,EAAE,IAAI,CAAC,UAAU,MAAM,GAAG;AAAA;AAEzE;AAAA;AAEA,MAAM,4BAA4B,cAAc;AAAA,SACvC,YAAY;AAAA,EACnB,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,8BAA8B;AAAA,EAC9B,gCAAgC;AAAA,EAChC,sBAAsB;AAAA,EACtB,wBAAwB;AAAA,EACxB,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,wBAAwB;AAAA,EACxB,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB;AAAA,EACA,mBAAmB;AAAA,EACnB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,qBAAqB;AAAA,EACrB;AAAA,EACA,mBAAmB;AAAA,EACnB,0BAA0B;AAAA,EAC1B;AAAA,MACI,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,MAEV,YAAY,CAAC,OAAO;AAAA,IACtB,KAAK,gBAAgB;AAAA,IACrB,KAAK,kBAAkB;AAAA;AAAA,MAErB,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAEV,WAAW,CAAC,OAAO;AAAA,IACrB,KAAK,eAAe;AAAA,IACpB,KAAK,kBAAkB;AAAA;AAAA,MAErB,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,kBAAkB;AAAA;AAAA,MAE5B,SAAS,CAAC,OAAO;AAAA,IACnB,KAAK,kBAAkB,iBAAiB;AAAA,IACxC,IAAI,CAAC,KAAK,yBAAyB;AAAA,MACjC,MAAM,eAAe,KAAK,IAAI,GAAG,KAAK,eAAe,KAAK,SAAS,MAAM;AAAA,MACzE,IAAI,CAAC,KAAK,mBAAmB,KAAK,eAAe,GAAG;AAAA,QAClD,KAAK,mBAAmB;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,KAAK,kBAAkB;AAAA;AAAA,MAErB,UAAU,GAAG;AAAA,IACf,OAAO,KAAK,oBAAoB;AAAA;AAAA,MAE9B,UAAU,CAAC,OAAO;AAAA,IACpB,KAAK,oBAAoB,iBAAiB;AAAA,IAC1C,IAAI,CAAC,KAAK,yBAAyB;AAAA,MACjC,MAAM,gBAAgB,KAAK,IAAI,GAAG,KAAK,cAAc,KAAK,SAAS,KAAK;AAAA,MACxE,IAAI,CAAC,KAAK,mBAAmB,KAAK,gBAAgB,GAAG;AAAA,QACnD,KAAK,mBAAmB;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,KAAK,kBAAkB;AAAA;AAAA,MAErB,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK,oBAAoB;AAAA;AAAA,MAE9B,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK,kBAAkB;AAAA;AAAA,EAEhC,iBAAiB,GAAG;AAAA,IAClB,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,MAAM,eAAe,KAAK,IAAI,GAAG,KAAK,eAAe,KAAK,SAAS,MAAM;AAAA,IACzE,MAAM,gBAAgB,KAAK,IAAI,GAAG,KAAK,cAAc,KAAK,SAAS,KAAK;AAAA,IACxE,IAAI,KAAK,aAAa,GAAG;AAAA,MACvB,KAAK,mBAAmB;AAAA,MACxB,KAAK,sBAAsB;AAAA,MAC3B,IAAI,KAAK,iBAAiB,SAAS,KAAK,iBAAiB,YAAY,iBAAiB,GAAG;AAAA,QACvF,KAAK,mBAAmB;AAAA,MAC1B;AAAA,IACF,EAAO,SAAI,KAAK,aAAa,cAAc;AAAA,MACzC,KAAK,mBAAmB;AAAA,MACxB,KAAK,sBAAsB;AAAA,MAC3B,IAAI,KAAK,iBAAiB,UAAU;AAAA,QAClC,KAAK,mBAAmB;AAAA,MAC1B;AAAA,IACF,EAAO;AAAA,MACL,KAAK,mBAAmB;AAAA,MACxB,KAAK,sBAAsB;AAAA;AAAA,IAE7B,IAAI,KAAK,cAAc,GAAG;AAAA,MACxB,KAAK,oBAAoB;AAAA,MACzB,KAAK,qBAAqB;AAAA,MAC1B,IAAI,KAAK,iBAAiB,UAAU,KAAK,iBAAiB,WAAW,kBAAkB,GAAG;AAAA,QACxF,KAAK,mBAAmB;AAAA,MAC1B;AAAA,IACF,EAAO,SAAI,KAAK,cAAc,eAAe;AAAA,MAC3C,KAAK,oBAAoB;AAAA,MACzB,KAAK,qBAAqB;AAAA,MAC1B,IAAI,KAAK,iBAAiB,SAAS;AAAA,QACjC,KAAK,mBAAmB;AAAA,MAC1B;AAAA,IACF,EAAO;AAAA,MACL,KAAK,oBAAoB;AAAA,MACzB,KAAK,qBAAqB;AAAA;AAAA;AAAA,EAG9B,gBAAgB,CAAC,aAAa;AAAA,IAC5B,KAAK,0BAA0B;AAAA,IAC/B,QAAQ;AAAA,WACD;AAAA,QACH,KAAK,mBAAmB;AAAA,QACxB,KAAK,sBAAsB;AAAA,QAC3B,KAAK,kBAAkB,iBAAiB;AAAA,QACxC;AAAA,WACG;AAAA,QACH,KAAK,mBAAmB;AAAA,QACxB,KAAK,sBAAsB;AAAA,QAC3B,KAAK,kBAAkB,iBAAiB,KAAK,IAAI,GAAG,KAAK,eAAe,KAAK,SAAS,MAAM;AAAA,QAC5F;AAAA,WACG;AAAA,QACH,KAAK,oBAAoB;AAAA,QACzB,KAAK,qBAAqB;AAAA,QAC1B,KAAK,oBAAoB,iBAAiB;AAAA,QAC1C;AAAA,WACG;AAAA,QACH,KAAK,oBAAoB;AAAA,QACzB,KAAK,qBAAqB;AAAA,QAC1B,KAAK,oBAAoB,iBAAiB,KAAK,IAAI,GAAG,KAAK,cAAc,KAAK,SAAS,KAAK;AAAA,QAC5F;AAAA;AAAA,IAEJ,KAAK,0BAA0B;AAAA;AAAA,EAEjC,WAAW,CAAC;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA,UAAU;AAAA,IACV,UAAU;AAAA,IACV;AAAA,IACA,kBAAkB;AAAA,OACf;AAAA,KACF;AAAA,IACD,MAAM,KAAK;AAAA,MACT,eAAe;AAAA,MACf,YAAY;AAAA,SACT;AAAA,SACA;AAAA,IACL,CAAC;AAAA,IACD,KAAK,aAAa,oBAAoB;AAAA,IACtC,KAAK,gBAAgB;AAAA,IACrB,KAAK,eAAe;AAAA,IACpB,KAAK,cAAc,sBAAsB,IAAI;AAAA,IAC7C,KAAK,UAAU,IAAI,cAAc,KAAK;AAAA,MACpC,eAAe;AAAA,MACf,UAAU;AAAA,SACP;AAAA,MACH,IAAI,sBAAsB,KAAK;AAAA,IACjC,CAAC;AAAA,IACD,MAAM,IAAI,KAAK,OAAO;AAAA,IACtB,KAAK,WAAW,IAAI,cAAc,KAAK;AAAA,MACrC,eAAe;AAAA,MACf,UAAU;AAAA,MACV,UAAU;AAAA,MACV,cAAc,MAAM;AAAA,QAClB,KAAK,oBAAoB;AAAA;AAAA,SAExB;AAAA,MACH,IAAI,uBAAuB,KAAK;AAAA,IAClC,CAAC;AAAA,IACD,KAAK,QAAQ,IAAI,KAAK,QAAQ;AAAA,IAC9B,KAAK,UAAU,IAAI,kBAAkB,KAAK,KAAK,UAAU,iBAAiB;AAAA,MACxE,WAAW;AAAA,MACX,YAAY;AAAA,SACT,UAAU,EAAE,UAAU,OAAO,IAAI,EAAE,UAAU,QAAQ,UAAU,OAAO;AAAA,SACtE,UAAU,EAAE,WAAW,OAAO,IAAI,EAAE,WAAW,QAAQ,WAAW,OAAO;AAAA,MAC5E,cAAc,MAAM;AAAA,QAClB,KAAK,oBAAoB;AAAA;AAAA,SAExB;AAAA,MACH,IAAI,sBAAsB,KAAK;AAAA,IACjC,CAAC;AAAA,IACD,KAAK,SAAS,IAAI,KAAK,OAAO;AAAA,IAC9B,KAAK,oBAAoB,IAAI,oBAAoB,KAAK;AAAA,SACjD;AAAA,SACA;AAAA,MACH,cAAc;AAAA,WACT,kBAAkB;AAAA,WAClB,0BAA0B;AAAA,MAC/B;AAAA,MACA,IAAI,iCAAiC,KAAK;AAAA,MAC1C,aAAa;AAAA,MACb,UAAU,CAAC,aAAa;AAAA,QACtB,KAAK,QAAQ,aAAa,CAAC;AAAA,QAC3B,IAAI,CAAC,KAAK,yBAAyB;AAAA,UACjC,MAAM,eAAe,KAAK,IAAI,GAAG,KAAK,eAAe,KAAK,SAAS,MAAM;AAAA,UACzE,IAAI,CAAC,KAAK,mBAAmB,KAAK,eAAe,GAAG;AAAA,YAClD,KAAK,mBAAmB;AAAA,UAC1B;AAAA,QACF;AAAA,QACA,KAAK,kBAAkB;AAAA;AAAA,IAE3B,CAAC;AAAA,IACD,MAAM,IAAI,KAAK,iBAAiB;AAAA,IAChC,KAAK,sBAAsB,IAAI,oBAAoB,KAAK;AAAA,SACnD;AAAA,SACA;AAAA,MACH,cAAc;AAAA,WACT,kBAAkB;AAAA,WAClB,4BAA4B;AAAA,MACjC;AAAA,MACA,IAAI,mCAAmC,KAAK;AAAA,MAC5C,aAAa;AAAA,MACb,UAAU,CAAC,aAAa;AAAA,QACtB,KAAK,QAAQ,aAAa,CAAC;AAAA,QAC3B,IAAI,CAAC,KAAK,yBAAyB;AAAA,UACjC,MAAM,gBAAgB,KAAK,IAAI,GAAG,KAAK,cAAc,KAAK,SAAS,KAAK;AAAA,UACxE,IAAI,CAAC,KAAK,mBAAmB,KAAK,gBAAgB,GAAG;AAAA,YACnD,KAAK,mBAAmB;AAAA,UAC1B;AAAA,QACF;AAAA,QACA,KAAK,kBAAkB;AAAA;AAAA,IAE3B,CAAC;AAAA,IACD,KAAK,QAAQ,IAAI,KAAK,mBAAmB;AAAA,IACzC,KAAK,oBAAoB;AAAA,IACzB,IAAI,eAAe,cAAc;AAAA,MAC/B,KAAK,iBAAiB,WAAW;AAAA,IACnC;AAAA,IACA,KAAK,oBAAoB,MAAM;AAAA,MAC7B,MAAM,YAAY,KAAK,KAAK,aAAa;AAAA,MACzC,IAAI,CAAC,aAAa,CAAC,UAAU,YAAY;AAAA,QACvC,KAAK,eAAe;AAAA,MACtB;AAAA;AAAA,IAEF,KAAK,KAAK,GAAG,aAAa,KAAK,iBAAiB;AAAA;AAAA,EAElD,QAAQ,CAAC,WAAW;AAAA,IAClB,KAAK,iBAAiB,SAAS;AAAA;AAAA,EAEjC,QAAQ,CAAC,OAAO,OAAO,YAAY;AAAA,IACjC,IAAI,OAAO,UAAU,UAAU;AAAA,MAC7B,KAAK,kBAAkB,SAAS,OAAO,IAAI;AAAA,IAC7C,EAAO;AAAA,MACL,KAAK,kBAAkB,SAAS,MAAM,GAAG,IAAI;AAAA,MAC7C,KAAK,oBAAoB,SAAS,MAAM,GAAG,IAAI;AAAA;AAAA;AAAA,EAGnD,QAAQ,CAAC,UAAU;AAAA,IACjB,IAAI,OAAO,aAAa,UAAU;AAAA,MAChC,KAAK,YAAY;AAAA,IACnB,EAAO;AAAA,MACL,KAAK,YAAY,SAAS;AAAA,MAC1B,KAAK,aAAa,SAAS;AAAA;AAAA;AAAA,EAG/B,kBAAkB,GAAG;AAAA,IACnB,IAAI,CAAC,KAAK,iBAAiB,CAAC,KAAK,cAAc;AAAA,MAC7C,OAAO;AAAA,IACT;AAAA,IACA,MAAM,eAAe,KAAK,IAAI,GAAG,KAAK,eAAe,KAAK,SAAS,MAAM;AAAA,IACzE,MAAM,gBAAgB,KAAK,IAAI,GAAG,KAAK,cAAc,KAAK,SAAS,KAAK;AAAA,IACxE,QAAQ,KAAK;AAAA,WACN;AAAA,QACH,OAAO,KAAK,cAAc;AAAA,WACvB;AAAA,QACH,OAAO,KAAK,aAAa;AAAA,WACtB;AAAA,QACH,OAAO,KAAK,eAAe;AAAA,WACxB;AAAA,QACH,OAAO,KAAK,cAAc;AAAA;AAAA,QAE1B,OAAO;AAAA;AAAA;AAAA,EAGb,GAAG,CAAC,KAAK,OAAO;AAAA,IACd,OAAO,KAAK,QAAQ,IAAI,KAAK,KAAK;AAAA;AAAA,EAEpC,YAAY,CAAC,KAAK,QAAQ;AAAA,IACxB,OAAO,KAAK,QAAQ,aAAa,KAAK,MAAM;AAAA;AAAA,EAE9C,MAAM,CAAC,IAAI;AAAA,IACT,KAAK,QAAQ,OAAO,EAAE;AAAA;AAAA,EAExB,WAAW,GAAG;AAAA,IACZ,OAAO,KAAK,QAAQ,YAAY;AAAA;AAAA,EAElC,YAAY,CAAC,OAAO;AAAA,IAClB,IAAI,MAAM,SAAS,UAAU;AAAA,MAC3B,IAAI,MAAM,MAAM,QAAQ;AAAA,MACxB,IAAI,MAAM,UAAU;AAAA,QAClB,MAAM,QAAQ,OAAO,SAAS,QAAQ,SAAS,UAAU,QAAQ,UAAU,SAAS;AAAA,MACtF,MAAM,YAAY,MAAM,QAAQ,SAAS;AAAA,MACzC,MAAM,MAAM,KAAK,IAAI;AAAA,MACrB,MAAM,aAAa,KAAK,YAAY,KAAK,GAAG;AAAA,MAC5C,MAAM,eAAe,YAAY;AAAA,MACjC,IAAI,QAAQ,MAAM;AAAA,QAChB,KAAK,sBAAsB;AAAA,QAC3B,MAAM,gBAAgB,KAAK,MAAM,KAAK,kBAAkB;AAAA,QACxD,IAAI,kBAAkB,GAAG;AAAA,UACvB,KAAK,aAAa;AAAA,UAClB,KAAK,sBAAsB;AAAA,QAC7B;AAAA,MACF,EAAO,SAAI,QAAQ,QAAQ;AAAA,QACzB,KAAK,sBAAsB;AAAA,QAC3B,MAAM,gBAAgB,KAAK,MAAM,KAAK,kBAAkB;AAAA,QACxD,IAAI,kBAAkB,GAAG;AAAA,UACvB,KAAK,aAAa;AAAA,UAClB,KAAK,sBAAsB;AAAA,QAC7B;AAAA,MACF,EAAO,SAAI,QAAQ,QAAQ;AAAA,QACzB,KAAK,sBAAsB;AAAA,QAC3B,MAAM,gBAAgB,KAAK,MAAM,KAAK,kBAAkB;AAAA,QACxD,IAAI,kBAAkB,GAAG;AAAA,UACvB,KAAK,cAAc;AAAA,UACnB,KAAK,sBAAsB;AAAA,QAC7B;AAAA,MACF,EAAO,SAAI,QAAQ,SAAS;AAAA,QAC1B,KAAK,sBAAsB;AAAA,QAC3B,MAAM,gBAAgB,KAAK,MAAM,KAAK,kBAAkB;AAAA,QACxD,IAAI,kBAAkB,GAAG;AAAA,UACvB,KAAK,cAAc;AAAA,UACnB,KAAK,sBAAsB;AAAA,QAC7B;AAAA,MACF;AAAA,MACA,MAAM,eAAe,KAAK,IAAI,GAAG,KAAK,eAAe,KAAK,SAAS,MAAM;AAAA,MACzE,MAAM,gBAAgB,KAAK,IAAI,GAAG,KAAK,cAAc,KAAK,SAAS,KAAK;AAAA,MACxE,IAAI,eAAe,KAAK,gBAAgB,GAAG;AAAA,QACzC,KAAK,mBAAmB;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,IAAI,MAAM,SAAS,UAAU,MAAM,YAAY;AAAA,MAC7C,KAAK,iBAAiB,MAAM,GAAG,MAAM,CAAC;AAAA,IACxC,EAAO,SAAI,MAAM,SAAS,MAAM;AAAA,MAC9B,KAAK,eAAe;AAAA,IACtB;AAAA;AAAA,EAEF,cAAc,CAAC,KAAK;AAAA,IAClB,IAAI,KAAK,kBAAkB,eAAe,GAAG,GAAG;AAAA,MAC9C,KAAK,mBAAmB;AAAA,MACxB,KAAK,YAAY,MAAM;AAAA,MACvB,KAAK,wBAAwB;AAAA,MAC7B,OAAO;AAAA,IACT;AAAA,IACA,IAAI,KAAK,oBAAoB,eAAe,GAAG,GAAG;AAAA,MAChD,KAAK,mBAAmB;AAAA,MACxB,KAAK,YAAY,MAAM;AAAA,MACvB,KAAK,wBAAwB;AAAA,MAC7B,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA;AAAA,EAET,uBAAuB,GAAG;AAAA,IACxB,KAAK,qBAAqB;AAAA,IAC1B,KAAK,qBAAqB;AAAA;AAAA,EAE5B,eAAe,CAAC,QAAQ,QAAQ;AAAA,IAC9B,KAAK,eAAe;AAAA,IACpB,KAAK,mBAAmB;AAAA,IACxB,KAAK,mBAAmB;AAAA,IACxB,KAAK,wBAAwB,KAAK,mBAAmB,QAAQ,MAAM;AAAA,IACnE,KAAK,kBAAkB;AAAA,IACvB,IAAI,CAAC,KAAK,MAAM;AAAA,MACd,KAAK,OAAO;AAAA,IACd;AAAA;AAAA,EAEF,gBAAgB,CAAC,QAAQ,QAAQ;AAAA,IAC/B,KAAK,mBAAmB;AAAA,IACxB,KAAK,mBAAmB;AAAA,IACxB,KAAK,wBAAwB,KAAK,mBAAmB,QAAQ,MAAM;AAAA,IACnE,MAAM,UAAU,KAAK,wBAAwB,MAAM;AAAA,IACnD,MAAM,UAAU,KAAK,wBAAwB,MAAM;AAAA,IACnD,IAAI,YAAY,KAAK,YAAY,GAAG;AAAA,MAClC,KAAK,eAAe;AAAA,IACtB,EAAO,SAAI,CAAC,KAAK,iBAAiB;AAAA,MAChC,KAAK,gBAAgB,QAAQ,MAAM;AAAA,IACrC;AAAA;AAAA,EAEF,cAAc,GAAG;AAAA,IACf,MAAM,mBAAmB,KAAK;AAAA,IAC9B,KAAK,kBAAkB;AAAA,IACvB,KAAK,yBAAyB;AAAA,IAC9B,KAAK,yBAAyB;AAAA,IAC9B,IAAI,oBAAoB,CAAC,KAAK,oBAAoB,GAAG;AAAA,MACnD,KAAK,OAAO;AAAA,IACd;AAAA;AAAA,EAEF,mBAAmB,GAAG;AAAA,IACpB,OAAO;AAAA;AAAA,EAET,gBAAgB,CAAC,WAAW;AAAA,IAC1B,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,MAAM,UAAU,KAAK,wBAAwB,KAAK,gBAAgB;AAAA,IAClE,MAAM,UAAU,KAAK,wBAAwB,KAAK,gBAAgB;AAAA,IAClE,MAAM,eAAe,KAAK,yBAAyB,YAAY;AAAA,IAC/D,IAAI,WAAW;AAAA,IACf,IAAI,YAAY,GAAG;AAAA,MACjB,KAAK,0BAA0B,UAAU;AAAA,MACzC,MAAM,iBAAiB,KAAK,MAAM,KAAK,sBAAsB;AAAA,MAC7D,IAAI,mBAAmB,GAAG;AAAA,QACxB,KAAK,cAAc;AAAA,QACnB,KAAK,0BAA0B;AAAA,QAC/B,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,IAAI,YAAY,GAAG;AAAA,MACjB,KAAK,0BAA0B,UAAU;AAAA,MACzC,MAAM,iBAAiB,KAAK,MAAM,KAAK,sBAAsB;AAAA,MAC7D,IAAI,mBAAmB,GAAG;AAAA,QACxB,KAAK,aAAa;AAAA,QAClB,KAAK,0BAA0B;AAAA,QAC/B,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,IAAI,UAAU;AAAA,MACZ,KAAK,KAAK,uBAAuB;AAAA,IACnC;AAAA,IACA,IAAI,YAAY,KAAK,YAAY,GAAG;AAAA,MAClC,KAAK,eAAe;AAAA,IACtB;AAAA;AAAA,EAEF,uBAAuB,CAAC,QAAQ;AAAA,IAC9B,MAAM,YAAY,SAAS,KAAK;AAAA,IAChC,MAAM,aAAa;AAAA,IACnB,MAAM,cAAc,KAAK,QAAQ;AAAA,IACjC,IAAI,cAAc,KAAK,+BAA+B;AAAA,MACpD,OAAO,KAAK,aAAa,IAAI,KAAK;AAAA,IACpC,EAAO,SAAI,eAAe,KAAK,+BAA+B;AAAA,MAC5D,MAAM,gBAAgB,KAAK,cAAc,KAAK,SAAS;AAAA,MACvD,OAAO,KAAK,aAAa,gBAAgB,IAAI;AAAA,IAC/C;AAAA,IACA,OAAO;AAAA;AAAA,EAET,uBAAuB,CAAC,QAAQ;AAAA,IAC9B,MAAM,YAAY,SAAS,KAAK;AAAA,IAChC,MAAM,YAAY;AAAA,IAClB,MAAM,eAAe,KAAK,SAAS;AAAA,IACnC,IAAI,aAAa,KAAK,6BAA6B;AAAA,MACjD,OAAO,KAAK,YAAY,IAAI,KAAK;AAAA,IACnC,EAAO,SAAI,gBAAgB,KAAK,6BAA6B;AAAA,MAC3D,MAAM,eAAe,KAAK,eAAe,KAAK,SAAS;AAAA,MACvD,OAAO,KAAK,YAAY,eAAe,IAAI;AAAA,IAC7C;AAAA,IACA,OAAO;AAAA;AAAA,EAET,kBAAkB,CAAC,QAAQ,QAAQ;AAAA,IACjC,MAAM,YAAY,SAAS,KAAK;AAAA,IAChC,MAAM,YAAY,SAAS,KAAK;AAAA,IAChC,MAAM,aAAa;AAAA,IACnB,MAAM,cAAc,KAAK,QAAQ;AAAA,IACjC,MAAM,YAAY;AAAA,IAClB,MAAM,eAAe,KAAK,SAAS;AAAA,IACnC,MAAM,cAAc,KAAK,IAAI,YAAY,aAAa,WAAW,YAAY;AAAA,IAC7E,IAAI,eAAe,GAAG;AAAA,MACpB,OAAO,KAAK;AAAA,IACd,EAAO,SAAI,eAAe,GAAG;AAAA,MAC3B,OAAO,KAAK;AAAA,IACd,EAAO;AAAA,MACL,OAAO,KAAK;AAAA;AAAA;AAAA,EAGhB,mBAAmB,GAAG;AAAA,IACpB,MAAM,0BAA0B,KAAK;AAAA,IACrC,KAAK,0BAA0B;AAAA,IAC/B,KAAK,kBAAkB,aAAa,KAAK,QAAQ;AAAA,IACjD,KAAK,kBAAkB,eAAe,KAAK,SAAS;AAAA,IACpD,KAAK,oBAAoB,aAAa,KAAK,QAAQ;AAAA,IACnD,KAAK,oBAAoB,eAAe,KAAK,SAAS;AAAA,IACtD,IAAI,KAAK,eAAe;AAAA,MACtB,MAAM,kBAAkB,KAAK,IAAI,GAAG,KAAK,eAAe,KAAK,SAAS,MAAM;AAAA,MAC5E,MAAM,mBAAmB,KAAK,IAAI,GAAG,KAAK,cAAc,KAAK,SAAS,KAAK;AAAA,MAC3E,IAAI,KAAK,gBAAgB,CAAC,KAAK,kBAAkB;AAAA,QAC/C,KAAK,iBAAiB,KAAK,YAAY;AAAA,MACzC,EAAO;AAAA,QACL,IAAI,KAAK,kBAAkB;AAAA,UACzB,KAAK,YAAY;AAAA,QACnB,EAAO,SAAI,KAAK,uBAAuB,kBAAkB,GAAG;AAAA,UAC1D,KAAK,YAAY;AAAA,QACnB;AAAA,QACA,IAAI,KAAK,mBAAmB;AAAA,UAC1B,KAAK,aAAa;AAAA,QACpB,EAAO,SAAI,KAAK,sBAAsB,mBAAmB,GAAG;AAAA,UAC1D,KAAK,aAAa;AAAA,QACpB;AAAA;AAAA,IAEJ;AAAA,IACA,KAAK,0BAA0B;AAAA,IAC/B,QAAQ,SAAS,MAAM;AAAA,MACrB,KAAK,cAAc;AAAA,KACpB;AAAA;AAAA,MAEC,WAAW,CAAC,SAAS;AAAA,IACvB,OAAO,OAAO,MAAM,OAAO;AAAA,IAC3B,KAAK,cAAc;AAAA;AAAA,MAEjB,cAAc,CAAC,SAAS;AAAA,IAC1B,OAAO,OAAO,KAAK,SAAS,OAAO;AAAA,IACnC,KAAK,cAAc;AAAA;AAAA,MAEjB,eAAe,CAAC,SAAS;AAAA,IAC3B,OAAO,OAAO,KAAK,UAAU,OAAO;AAAA,IACpC,KAAK,cAAc;AAAA;AAAA,MAEjB,cAAc,CAAC,SAAS;AAAA,IAC1B,OAAO,OAAO,KAAK,SAAS,OAAO;AAAA,IACnC,KAAK,cAAc;AAAA;AAAA,MAEjB,gBAAgB,CAAC,SAAS;AAAA,IAC5B,OAAO,OAAO,KAAK,mBAAmB,OAAO;AAAA,IAC7C,OAAO,OAAO,KAAK,qBAAqB,OAAO;AAAA,IAC/C,KAAK,cAAc;AAAA;AAAA,MAEjB,wBAAwB,CAAC,SAAS;AAAA,IACpC,OAAO,OAAO,KAAK,mBAAmB,OAAO;AAAA,IAC7C,KAAK,cAAc;AAAA;AAAA,MAEjB,0BAA0B,CAAC,SAAS;AAAA,IACtC,OAAO,OAAO,KAAK,qBAAqB,OAAO;AAAA,IAC/C,KAAK,cAAc;AAAA;AAAA,MAEjB,kBAAkB,GAAG;AAAA,IACvB,OAAO,KAAK;AAAA;AAAA,MAEV,kBAAkB,CAAC,OAAO;AAAA,IAC5B,KAAK,cAAc;AAAA;AAAA,MAEjB,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK,QAAQ;AAAA;AAAA,MAElB,eAAe,CAAC,OAAO;AAAA,IACzB,KAAK,QAAQ,kBAAkB;AAAA,IAC/B,KAAK,cAAc;AAAA;AAAA,EAErB,WAAW,GAAG;AAAA,IACZ,IAAI,KAAK,mBAAmB;AAAA,MAC1B,KAAK,KAAK,IAAI,aAAa,KAAK,iBAAiB;AAAA,MACjD,KAAK,oBAAoB;AAAA,IAC3B;AAAA,IACA,MAAM,YAAY;AAAA;AAEtB;AAEA,IAAI,2BAA2B;AAAA,EAC7B,EAAE,MAAM,MAAM,QAAQ,UAAU;AAAA,EAChC,EAAE,MAAM,KAAK,QAAQ,UAAU;AAAA,EAC/B,EAAE,MAAM,QAAQ,QAAQ,YAAY;AAAA,EACpC,EAAE,MAAM,KAAK,QAAQ,YAAY;AAAA,EACjC,EAAE,MAAM,MAAM,OAAO,MAAM,QAAQ,eAAe;AAAA,EAClD,EAAE,MAAM,QAAQ,OAAO,MAAM,QAAQ,iBAAiB;AAAA,EACtD,EAAE,MAAM,UAAU,QAAQ,iBAAiB;AAAA,EAC3C,EAAE,MAAM,YAAY,QAAQ,iBAAiB;AAC/C;AACA,IAAI;AAAA,CACH,CAAC,4BAA4B;AAAA,EAC5B,wBAAwB,uBAAuB;AAAA,EAC/C,wBAAwB,mBAAmB;AAAA,GAC1C,2BAA2B,CAAC,CAAC;AAAA;AAEhC,MAAM,yBAAyB,WAAW;AAAA,EACxC,aAAa;AAAA,EACb,WAAW,CAAC;AAAA,EACZ,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,IAChB,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,wBAAwB;AAAA,IACxB,kBAAkB;AAAA,IAClB,yBAAyB;AAAA,IACzB,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,kBAAkB;AAAA,IAClB,0BAA0B;AAAA,IAC1B,qBAAqB;AAAA,IACrB,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,gBAAgB;AAAA,EAClB;AAAA,EACA,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,KAAK,KAAK,SAAS,UAAU,KAAK,CAAC;AAAA,IACzC,KAAK,WAAW,QAAQ,WAAW,CAAC;AAAA,IACpC,MAAM,iBAAiB,QAAQ,iBAAiB,KAAK,gBAAgB;AAAA,IACrE,KAAK,iBAAiB,KAAK,SAAS,SAAS,IAAI,KAAK,IAAI,gBAAgB,KAAK,SAAS,SAAS,CAAC,IAAI;AAAA,IACtG,KAAK,mBAAmB,WAAW,QAAQ,mBAAmB,KAAK,gBAAgB,eAAe;AAAA,IAClG,KAAK,aAAa,WAAW,QAAQ,aAAa,KAAK,gBAAgB,SAAS;AAAA,IAChF,KAAK,0BAA0B,WAAW,QAAQ,0BAA0B,KAAK,gBAAgB,sBAAsB;AAAA,IACvH,KAAK,oBAAoB,WAAW,QAAQ,oBAAoB,KAAK,gBAAgB,gBAAgB;AAAA,IACrG,KAAK,uBAAuB,QAAQ,uBAAuB,KAAK,gBAAgB;AAAA,IAChF,KAAK,iBAAiB,QAAQ,iBAAiB,KAAK,gBAAgB;AAAA,IACpE,KAAK,mBAAmB,QAAQ,mBAAmB,KAAK,gBAAgB;AAAA,IACxE,KAAK,QAAQ,QAAQ;AAAA,IACrB,KAAK,eAAe,QAAQ,eAAe,KAAK,gBAAgB;AAAA,IAChE,KAAK,aAAa,KAAK,QAAQ,YAAY,EAAE,MAAM,KAAK,MAAM,KAAK,MAAM,CAAC,EAAE,SAAS;AAAA,IACrF,KAAK,eAAe,KAAK,mBAAmB,KAAK,QAAQ,KAAK,aAAa,IAAI,IAAI,KAAK,QAAQ,KAAK,aAAa;AAAA,IAClH,KAAK,gBAAgB,KAAK;AAAA,IAC1B,KAAK,kBAAkB,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,SAAS,KAAK,YAAY,CAAC;AAAA,IAC9E,KAAK,2BAA2B,WAAW,QAAQ,2BAA2B,KAAK,gBAAgB,uBAAuB;AAAA,IAC1H,KAAK,qBAAqB,WAAW,QAAQ,qBAAqB,KAAK,gBAAgB,iBAAiB;AAAA,IACxG,KAAK,oBAAoB,WAAW,QAAQ,oBAAoB,KAAK,gBAAgB,gBAAgB;AAAA,IACrG,KAAK,4BAA4B,WAAW,QAAQ,4BAA4B,KAAK,gBAAgB,wBAAwB;AAAA,IAC7H,KAAK,kBAAkB,QAAQ,kBAAkB,KAAK,gBAAgB;AAAA,IACtE,KAAK,eAAe,gBAAgB,mBAAmB,QAAQ,eAAe,CAAC,CAAC;AAAA,IAChF,KAAK,eAAe,QAAQ,eAAe,CAAC;AAAA,IAC5C,MAAM,iBAAiB,iBAAiB,0BAA0B,KAAK,YAAY;AAAA,IACnF,KAAK,kBAAkB,oBAAoB,gBAAgB,KAAK,YAAY;AAAA,IAC5E,KAAK,cAAc;AAAA;AAAA,EAErB,UAAU,CAAC,QAAQ,WAAW;AAAA,IAC5B,IAAI,CAAC,KAAK,WAAW,CAAC,KAAK;AAAA,MACzB;AAAA,IACF,IAAI,KAAK,SAAS;AAAA,MAChB,KAAK,mBAAmB;AAAA,IAC1B;AAAA;AAAA,EAEF,kBAAkB,GAAG;AAAA,IACnB,IAAI,CAAC,KAAK,eAAe,KAAK,SAAS,WAAW;AAAA,MAChD;AAAA,IACF,MAAM,UAAU,KAAK,WAAW,KAAK,0BAA0B,KAAK;AAAA,IACpE,KAAK,YAAY,MAAM,OAAO;AAAA,IAC9B,MAAM,WAAW;AAAA,IACjB,MAAM,WAAW;AAAA,IACjB,MAAM,eAAe,KAAK;AAAA,IAC1B,MAAM,gBAAgB,KAAK;AAAA,IAC3B,MAAM,iBAAiB,KAAK,SAAS,MAAM,KAAK,cAAc,KAAK,eAAe,KAAK,eAAe;AAAA,IACtG,SAAS,IAAI,EAAE,IAAI,eAAe,QAAQ,KAAK;AAAA,MAC7C,MAAM,cAAc,KAAK,eAAe;AAAA,MACxC,MAAM,SAAS,eAAe;AAAA,MAC9B,MAAM,aAAa,gBAAgB,KAAK;AAAA,MACxC,MAAM,QAAQ,WAAW,IAAI,KAAK;AAAA,MAClC,IAAI,QAAQ,KAAK,eAAe,KAAK,WAAW;AAAA,QAC9C;AAAA,MACF,IAAI,YAAY;AAAA,QACd,MAAM,iBAAiB,KAAK,eAAe,KAAK;AAAA,QAChD,KAAK,YAAY,SAAS,UAAU,OAAO,cAAc,gBAAgB,KAAK,wBAAwB;AAAA,MACxG;AAAA,MACA,MAAM,cAAc,GAAG,aAAa,YAAY,OAAO,OAAO;AAAA,MAC9D,MAAM,gBAAgB,KAAK,WAAW,KAAK,oBAAoB,KAAK;AAAA,MACpE,MAAM,YAAY,aAAa,KAAK,qBAAqB;AAAA,MACzD,IAAI,QAAQ,WAAW;AAAA,MACvB,IAAI,KAAK,OAAO;AAAA,QACd,MAAM,YAAY,aAAa,YAAY;AAAA,QAC3C,KAAK,YAAY,SAAS,WAAW,WAAW,GAAG,OAAO,SAAS;AAAA,QACnE,MAAM,iBAAiB;AAAA,QACvB,wBAAwB,KAAK,aAAa;AAAA,UACxC,MAAM,OAAO;AAAA,UACb,GAAG,WAAW,IAAI;AAAA,UAClB,GAAG;AAAA,UACH,OAAO;AAAA,UACP,iBAAiB,aAAa,KAAK,2BAA2B;AAAA,UAC9D,MAAM,KAAK;AAAA,QACb,CAAC;AAAA,QACD,QAAQ,WAAW,IAAI;AAAA,MACzB,EAAO;AAAA,QACL,KAAK,YAAY,SAAS,aAAa,WAAW,GAAG,OAAO,SAAS;AAAA;AAAA,MAEvE,IAAI,KAAK,oBAAoB,QAAQ,KAAK,aAAa,WAAW,eAAe;AAAA,QAC/E,MAAM,YAAY,aAAa,KAAK,4BAA4B,KAAK;AAAA,QACrE,KAAK,YAAY,SAAS,OAAO,aAAa,OAAO,QAAQ,KAAK,YAAY,SAAS;AAAA,MACzF;AAAA,IACF;AAAA,IACA,IAAI,KAAK,wBAAwB,KAAK,SAAS,SAAS,KAAK,iBAAiB;AAAA,MAC5E,KAAK,mCAAmC,UAAU,UAAU,cAAc,aAAa;AAAA,IACzF;AAAA;AAAA,EAEF,kCAAkC,CAAC,UAAU,UAAU,cAAc,eAAe;AAAA,IAClF,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,MAAM,gBAAgB,KAAK,iBAAiB,KAAK,IAAI,GAAG,KAAK,SAAS,SAAS,CAAC;AAAA,IAChF,MAAM,kBAAkB,KAAK,IAAI,GAAG,gBAAgB,CAAC;AAAA,IACrD,MAAM,aAAa,WAAW,IAAI,KAAK,MAAM,gBAAgB,eAAe;AAAA,IAC5E,MAAM,aAAa,WAAW,eAAe;AAAA,IAC7C,KAAK,YAAY,SAAS,UAAU,YAAY,YAAY,WAAW,SAAS,CAAC;AAAA;AAAA,MAE/E,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,OAAO,CAAC,SAAS;AAAA,IACnB,KAAK,WAAW;AAAA,IAChB,KAAK,iBAAiB,KAAK,IAAI,KAAK,gBAAgB,KAAK,IAAI,GAAG,QAAQ,SAAS,CAAC,CAAC;AAAA,IACnF,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,EAErB,iBAAiB,GAAG;AAAA,IAClB,OAAO,KAAK,SAAS,KAAK,mBAAmB;AAAA;AAAA,EAE/C,gBAAgB,GAAG;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,EAEd,MAAM,CAAC,QAAQ,GAAG;AAAA,IAChB,MAAM,WAAW,KAAK,iBAAiB;AAAA,IACvC,IAAI,YAAY,GAAG;AAAA,MACjB,KAAK,iBAAiB;AAAA,IACxB,EAAO,SAAI,KAAK,kBAAkB,KAAK,SAAS,SAAS,GAAG;AAAA,MAC1D,KAAK,iBAAiB,KAAK,SAAS,SAAS;AAAA,IAC/C,EAAO;AAAA,MACL,KAAK,iBAAiB;AAAA;AAAA,IAExB,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA,IACnB,KAAK,KAAK,oBAA4C,KAAK,gBAAgB,KAAK,kBAAkB,CAAC;AAAA;AAAA,EAErG,QAAQ,CAAC,QAAQ,GAAG;AAAA,IAClB,MAAM,WAAW,KAAK,iBAAiB;AAAA,IACvC,IAAI,WAAW,KAAK,SAAS,QAAQ;AAAA,MACnC,KAAK,iBAAiB;AAAA,IACxB,EAAO,SAAI,KAAK,kBAAkB,KAAK,SAAS,SAAS,GAAG;AAAA,MAC1D,KAAK,iBAAiB;AAAA,IACxB,EAAO;AAAA,MACL,KAAK,iBAAiB,KAAK,SAAS,SAAS;AAAA;AAAA,IAE/C,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA,IACnB,KAAK,KAAK,oBAA4C,KAAK,gBAAgB,KAAK,kBAAkB,CAAC;AAAA;AAAA,EAErG,aAAa,GAAG;AAAA,IACd,MAAM,WAAW,KAAK,kBAAkB;AAAA,IACxC,IAAI,UAAU;AAAA,MACZ,KAAK,KAAK,gBAAoC,KAAK,gBAAgB,QAAQ;AAAA,IAC7E;AAAA;AAAA,EAEF,gBAAgB,CAAC,OAAO;AAAA,IACtB,IAAI,SAAS,KAAK,QAAQ,KAAK,SAAS,QAAQ;AAAA,MAC9C,KAAK,iBAAiB;AAAA,MACtB,KAAK,mBAAmB;AAAA,MACxB,KAAK,cAAc;AAAA,MACnB,KAAK,KAAK,oBAA4C,KAAK,gBAAgB,KAAK,kBAAkB,CAAC;AAAA,IACrG;AAAA;AAAA,EAEF,kBAAkB,GAAG;AAAA,IACnB,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,MAAM,cAAc,KAAK,MAAM,KAAK,kBAAkB,CAAC;AAAA,IACvD,MAAM,kBAAkB,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,iBAAiB,aAAa,KAAK,SAAS,SAAS,KAAK,eAAe,CAAC;AAAA,IAC5H,IAAI,oBAAoB,KAAK,cAAc;AAAA,MACzC,KAAK,eAAe;AAAA,MACpB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,EAEF,QAAQ,CAAC,OAAO,QAAQ;AAAA,IACtB,KAAK,kBAAkB,KAAK,IAAI,GAAG,KAAK,MAAM,SAAS,KAAK,YAAY,CAAC;AAAA,IACzE,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,EAErB,cAAc,CAAC,KAAK;AAAA,IAClB,MAAM,aAAa,iBAAiB;AAAA,MAClC,MAAM,IAAI;AAAA,MACV,MAAM,IAAI;AAAA,MACV,OAAO,IAAI;AAAA,MACX,MAAM,IAAI;AAAA,MACV,OAAO,IAAI;AAAA,MACX,QAAQ;AAAA,IACV,CAAC;AAAA,IACD,MAAM,SAAS,KAAK,gBAAgB,IAAI,UAAU;AAAA,IAClD,IAAI,QAAQ;AAAA,MACV,QAAQ;AAAA,aACD;AAAA,UACH,KAAK,OAAO,CAAC;AAAA,UACb,OAAO;AAAA,aACJ;AAAA,UACH,KAAK,SAAS,CAAC;AAAA,UACf,OAAO;AAAA,aACJ;AAAA,UACH,KAAK,OAAO,KAAK,eAAe;AAAA,UAChC,OAAO;AAAA,aACJ;AAAA,UACH,KAAK,SAAS,KAAK,eAAe;AAAA,UAClC,OAAO;AAAA,aACJ;AAAA,UACH,KAAK,cAAc;AAAA,UACnB,OAAO;AAAA;AAAA,IAEb;AAAA,IACA,OAAO;AAAA;AAAA,MAEL,mBAAmB,GAAG;AAAA,IACxB,OAAO,KAAK;AAAA;AAAA,MAEV,mBAAmB,CAAC,MAAM;AAAA,IAC5B,KAAK,uBAAuB;AAAA,IAC5B,KAAK,cAAc;AAAA;AAAA,MAEjB,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,MAEV,eAAe,CAAC,MAAM;AAAA,IACxB,IAAI,KAAK,qBAAqB,MAAM;AAAA,MAClC,KAAK,mBAAmB;AAAA,MACxB,KAAK,eAAe,KAAK,mBAAmB,KAAK,QAAQ,KAAK,aAAa,IAAI,IAAI,KAAK,QAAQ,KAAK,aAAa;AAAA,MAClH,KAAK,gBAAgB,KAAK;AAAA,MAC1B,KAAK,kBAAkB,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,SAAS,KAAK,YAAY,CAAC;AAAA,MAC9E,KAAK,mBAAmB;AAAA,MACxB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,aAAa,GAAG;AAAA,IAClB,OAAO,KAAK;AAAA;AAAA,MAEV,aAAa,CAAC,MAAM;AAAA,IACtB,KAAK,iBAAiB;AAAA;AAAA,MAEpB,eAAe,CAAC,OAAO;AAAA,IACzB,MAAM,WAAW,WAAW,SAAS,KAAK,gBAAgB,eAAe;AAAA,IACzE,IAAI,KAAK,qBAAqB,UAAU;AAAA,MACtC,KAAK,mBAAmB;AAAA,MACxB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,SAAS,CAAC,OAAO;AAAA,IACnB,MAAM,WAAW,WAAW,SAAS,KAAK,gBAAgB,SAAS;AAAA,IACnE,IAAI,KAAK,eAAe,UAAU;AAAA,MAChC,KAAK,aAAa;AAAA,MAClB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,sBAAsB,CAAC,OAAO;AAAA,IAChC,MAAM,WAAW,WAAW,SAAS,KAAK,gBAAgB,sBAAsB;AAAA,IAChF,IAAI,KAAK,4BAA4B,UAAU;AAAA,MAC7C,KAAK,0BAA0B;AAAA,MAC/B,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,gBAAgB,CAAC,OAAO;AAAA,IAC1B,MAAM,WAAW,WAAW,SAAS,KAAK,gBAAgB,gBAAgB;AAAA,IAC1E,IAAI,KAAK,sBAAsB,UAAU;AAAA,MACvC,KAAK,oBAAoB;AAAA,MACzB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,uBAAuB,CAAC,OAAO;AAAA,IACjC,MAAM,WAAW,WAAW,SAAS,KAAK,gBAAgB,uBAAuB;AAAA,IACjF,IAAI,KAAK,6BAA6B,UAAU;AAAA,MAC9C,KAAK,2BAA2B;AAAA,MAChC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,iBAAiB,CAAC,OAAO;AAAA,IAC3B,MAAM,WAAW,WAAW,SAAS,KAAK,gBAAgB,iBAAiB;AAAA,IAC3E,IAAI,KAAK,uBAAuB,UAAU;AAAA,MACxC,KAAK,qBAAqB;AAAA,MAC1B,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,gBAAgB,CAAC,OAAO;AAAA,IAC1B,MAAM,WAAW,WAAW,SAAS,KAAK,gBAAgB,gBAAgB;AAAA,IAC1E,IAAI,KAAK,sBAAsB,UAAU;AAAA,MACvC,KAAK,oBAAoB;AAAA,MACzB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,wBAAwB,CAAC,OAAO;AAAA,IAClC,MAAM,WAAW,WAAW,SAAS,KAAK,gBAAgB,wBAAwB;AAAA,IAClF,IAAI,KAAK,8BAA8B,UAAU;AAAA,MAC/C,KAAK,4BAA4B;AAAA,MACjC,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,IAAI,CAAC,MAAM;AAAA,IACb,KAAK,QAAQ;AAAA,IACb,KAAK,aAAa,YAAY,EAAE,MAAM,KAAK,MAAM,KAAK,MAAM,CAAC,EAAE;AAAA,IAC/D,KAAK,eAAe,KAAK,mBAAmB,KAAK,QAAQ,KAAK,aAAa,IAAI,IAAI,KAAK,QAAQ,KAAK,aAAa;AAAA,IAClH,KAAK,gBAAgB,KAAK;AAAA,IAC1B,KAAK,kBAAkB,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,SAAS,KAAK,YAAY,CAAC;AAAA,IAC9E,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,MAEjB,WAAW,CAAC,SAAS;AAAA,IACvB,KAAK,eAAe;AAAA,IACpB,KAAK,eAAe,KAAK,mBAAmB,KAAK,QAAQ,KAAK,aAAa,IAAI,IAAI,KAAK,QAAQ,KAAK,aAAa;AAAA,IAClH,KAAK,gBAAgB,KAAK;AAAA,IAC1B,KAAK,kBAAkB,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,SAAS,KAAK,YAAY,CAAC;AAAA,IAC9E,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,MAEjB,cAAc,CAAC,MAAM;AAAA,IACvB,KAAK,kBAAkB;AAAA;AAAA,MAErB,WAAW,CAAC,UAAU;AAAA,IACxB,KAAK,eAAe;AAAA,IACpB,MAAM,iBAAiB,iBAAiB,0BAA0B,QAAQ;AAAA,IAC1E,KAAK,kBAAkB,oBAAoB,gBAAgB,KAAK,YAAY;AAAA;AAAA,MAE1E,WAAW,CAAC,SAAS;AAAA,IACvB,KAAK,eAAe,gBAAgB,mBAAmB,OAAO;AAAA,IAC9D,MAAM,iBAAiB,iBAAiB,0BAA0B,KAAK,YAAY;AAAA,IACnF,KAAK,kBAAkB,oBAAoB,gBAAgB,KAAK,YAAY;AAAA;AAAA,MAE1E,aAAa,CAAC,OAAO;AAAA,IACvB,MAAM,WAAW,SAAS,KAAK,gBAAgB;AAAA,IAC/C,MAAM,eAAe,KAAK,SAAS,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,QAAQ,GAAG,KAAK,SAAS,SAAS,CAAC,IAAI;AAAA,IAC5G,IAAI,KAAK,mBAAmB,cAAc;AAAA,MACxC,KAAK,iBAAiB;AAAA,MACtB,KAAK,mBAAmB;AAAA,MACxB,KAAK,cAAc;AAAA,IACrB;AAAA;AAEJ;AAEA,IAAI,8BAA8B;AAAA,EAChC,EAAE,MAAM,QAAQ,QAAQ,YAAY;AAAA,EACpC,EAAE,MAAM,KAAK,QAAQ,YAAY;AAAA,EACjC,EAAE,MAAM,SAAS,QAAQ,aAAa;AAAA,EACtC,EAAE,MAAM,KAAK,QAAQ,aAAa;AAAA,EAClC,EAAE,MAAM,UAAU,QAAQ,iBAAiB;AAAA,EAC3C,EAAE,MAAM,YAAY,QAAQ,iBAAiB;AAC/C;AACA,IAAI;AAAA,CACH,CAAC,+BAA+B;AAAA,EAC/B,2BAA2B,uBAAuB;AAAA,EAClD,2BAA2B,mBAAmB;AAAA,GAC7C,8BAA8B,CAAC,CAAC;AACnC,SAAS,sBAAsB,CAAC,eAAe,iBAAiB;AAAA,EAC9D,IAAI,SAAS;AAAA,EACb,IAAI,eAAe;AAAA,IACjB,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,iBAAiB;AAAA,IACnB,UAAU;AAAA,EACZ;AAAA,EACA,OAAO;AAAA;AAAA;AAGT,MAAM,4BAA4B,WAAW;AAAA,EAC3C,aAAa;AAAA,EACb,WAAW,CAAC;AAAA,EACZ,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,mBAAmB,uBAAuB,QAAQ,iBAAiB,MAAM,QAAQ,mBAAmB,IAAI;AAAA,IAC9G,MAAM,KAAK,KAAK,SAAS,QAAQ,kBAAkB,UAAU,KAAK,CAAC;AAAA,IACnE,KAAK,mBAAmB,WAAW,QAAQ,mBAAmB,aAAa;AAAA,IAC3E,KAAK,aAAa,WAAW,QAAQ,aAAa,SAAS;AAAA,IAC3D,KAAK,0BAA0B,WAAW,QAAQ,0BAA0B,QAAQ,mBAAmB,SAAS;AAAA,IAChH,KAAK,oBAAoB,WAAW,QAAQ,oBAAoB,QAAQ,aAAa,SAAS;AAAA,IAC9F,KAAK,WAAW,QAAQ,WAAW,CAAC;AAAA,IACpC,KAAK,YAAY,QAAQ,YAAY;AAAA,IACrC,KAAK,mBAAmB,QAAQ,mBAAmB;AAAA,IACnD,KAAK,iBAAiB,QAAQ,iBAAiB;AAAA,IAC/C,KAAK,oBAAoB,QAAQ,oBAAoB;AAAA,IACrD,KAAK,iBAAiB,QAAQ,iBAAiB;AAAA,IAC/C,KAAK,iBAAiB,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,QAAQ,KAAK,SAAS,CAAC;AAAA,IACzE,KAAK,2BAA2B,WAAW,QAAQ,2BAA2B,SAAS;AAAA,IACvF,KAAK,qBAAqB,WAAW,QAAQ,qBAAqB,SAAS;AAAA,IAC3E,KAAK,4BAA4B,WAAW,QAAQ,4BAA4B,SAAS;AAAA,IACzF,KAAK,eAAe,gBAAgB,mBAAmB,QAAQ,eAAe,CAAC,CAAC;AAAA,IAChF,KAAK,eAAe,QAAQ,eAAe,CAAC;AAAA,IAC5C,MAAM,iBAAiB,iBAAiB,6BAA6B,KAAK,YAAY;AAAA,IACtF,KAAK,kBAAkB,oBAAoB,gBAAgB,KAAK,YAAY;AAAA;AAAA,EAE9E,sBAAsB,GAAG;AAAA,IACvB,OAAO,uBAAuB,KAAK,gBAAgB,KAAK,gBAAgB;AAAA;AAAA,EAE1E,UAAU,CAAC,QAAQ,WAAW;AAAA,IAC5B,IAAI,CAAC,KAAK,WAAW,CAAC,KAAK;AAAA,MACzB;AAAA,IACF,IAAI,KAAK,SAAS;AAAA,MAChB,KAAK,mBAAmB;AAAA,IAC1B;AAAA;AAAA,EAEF,kBAAkB,GAAG;AAAA,IACnB,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,MAAM,UAAU,KAAK,WAAW,KAAK,0BAA0B,KAAK;AAAA,IACpE,KAAK,YAAY,MAAM,OAAO;AAAA,IAC9B,IAAI,KAAK,SAAS,WAAW;AAAA,MAC3B;AAAA,IACF,MAAM,WAAW;AAAA,IACjB,MAAM,WAAW;AAAA,IACjB,MAAM,eAAe,KAAK;AAAA,IAC1B,MAAM,gBAAgB,KAAK;AAAA,IAC3B,MAAM,iBAAiB,KAAK,SAAS,MAAM,KAAK,cAAc,KAAK,eAAe,KAAK,cAAc;AAAA,IACrG,SAAS,IAAI,EAAE,IAAI,eAAe,QAAQ,KAAK;AAAA,MAC7C,MAAM,cAAc,KAAK,eAAe;AAAA,MACxC,MAAM,SAAS,eAAe;AAAA,MAC9B,MAAM,aAAa,gBAAgB,KAAK;AAAA,MACxC,MAAM,OAAO,WAAW,IAAI,KAAK;AAAA,MACjC,IAAI,QAAQ,WAAW;AAAA,QACrB;AAAA,MACF,MAAM,iBAAiB,KAAK,IAAI,KAAK,WAAW,eAAe,IAAI,KAAK,SAAS;AAAA,MACjF,IAAI,YAAY;AAAA,QACd,KAAK,YAAY,SAAS,MAAM,UAAU,gBAAgB,GAAG,KAAK,wBAAwB;AAAA,MAC5F;AAAA,MACA,MAAM,gBAAgB,KAAK,WAAW,KAAK,oBAAoB,KAAK;AAAA,MACpE,MAAM,YAAY,aAAa,KAAK,qBAAqB;AAAA,MACzD,MAAM,cAAc,KAAK,aAAa,OAAO,MAAM,iBAAiB,CAAC;AAAA,MACrE,KAAK,YAAY,SAAS,aAAa,OAAO,GAAG,UAAU,SAAS;AAAA,MACpE,IAAI,cAAc,KAAK,kBAAkB,iBAAiB,GAAG;AAAA,QAC3D,MAAM,aAAa,WAAW;AAAA,QAC9B,MAAM,cAAc,aAAa,KAAK,2BAA2B;AAAA,QACjE,KAAK,YAAY,SAAS,SAAS,OAAO,cAAc,GAAG,MAAM,YAAY,WAAW,WAAW;AAAA,MACrG;AAAA,IACF;AAAA,IACA,IAAI,KAAK,oBAAoB,kBAAkB,KAAK,iBAAiB,IAAI,IAAI;AAAA,MAC3E,MAAM,iBAAiB,KAAK,kBAAkB;AAAA,MAC9C,IAAI,gBAAgB;AAAA,QAClB,MAAM,eAAe,YAAY,KAAK,iBAAiB,IAAI;AAAA,QAC3D,MAAM,YAAY,KAAK;AAAA,QACvB,MAAM,cAAc,KAAK,aAAa,eAAe,aAAa,eAAe,CAAC;AAAA,QAClF,KAAK,YAAY,SAAS,aAAa,WAAW,GAAG,cAAc,SAAS;AAAA,MAC9E;AAAA,IACF;AAAA,IACA,IAAI,KAAK,qBAAqB,KAAK,SAAS,SAAS,KAAK,gBAAgB;AAAA,MACxE,KAAK,gCAAgC,UAAU,UAAU,cAAc,aAAa;AAAA,IACtF;AAAA;AAAA,EAEF,YAAY,CAAC,MAAM,UAAU;AAAA,IAC3B,IAAI,KAAK,UAAU;AAAA,MACjB,OAAO;AAAA,IACT,OAAO,KAAK,UAAU,GAAG,KAAK,IAAI,GAAG,WAAW,CAAC,CAAC,IAAI;AAAA;AAAA,EAExD,+BAA+B,CAAC,UAAU,UAAU,cAAc,eAAe;AAAA,IAC/E,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF,MAAM,cAAc,KAAK,eAAe;AAAA,IACxC,MAAM,eAAe,KAAK,eAAe,KAAK,iBAAiB,KAAK,SAAS;AAAA,IAC7E,IAAI,aAAa;AAAA,MACf,KAAK,YAAY,SAAS,UAAU,UAAU,UAAU,WAAW,SAAS,CAAC;AAAA,IAC/E;AAAA,IACA,IAAI,cAAc;AAAA,MAChB,KAAK,YAAY,SAAS,UAAU,WAAW,eAAe,GAAG,UAAU,WAAW,SAAS,CAAC;AAAA,IAClG;AAAA;AAAA,EAEF,UAAU,CAAC,SAAS;AAAA,IAClB,KAAK,WAAW;AAAA,IAChB,KAAK,gBAAgB,KAAK,IAAI,KAAK,eAAe,KAAK,IAAI,GAAG,QAAQ,SAAS,CAAC,CAAC;AAAA,IACjF,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,EAErB,iBAAiB,GAAG;AAAA,IAClB,OAAO,KAAK,SAAS,KAAK,kBAAkB;AAAA;AAAA,EAE9C,gBAAgB,GAAG;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,EAEd,QAAQ,GAAG;AAAA,IACT,IAAI,KAAK,gBAAgB,GAAG;AAAA,MAC1B,KAAK;AAAA,IACP,EAAO,SAAI,KAAK,kBAAkB,KAAK,SAAS,SAAS,GAAG;AAAA,MAC1D,KAAK,gBAAgB,KAAK,SAAS,SAAS;AAAA,IAC9C,EAAO;AAAA,MACL;AAAA;AAAA,IAEF,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA,IACnB,KAAK,KAAK,oBAA4C,KAAK,eAAe,KAAK,kBAAkB,CAAC;AAAA;AAAA,EAEpG,SAAS,GAAG;AAAA,IACV,IAAI,KAAK,gBAAgB,KAAK,SAAS,SAAS,GAAG;AAAA,MACjD,KAAK;AAAA,IACP,EAAO,SAAI,KAAK,kBAAkB,KAAK,SAAS,SAAS,GAAG;AAAA,MAC1D,KAAK,gBAAgB;AAAA,IACvB,EAAO;AAAA,MACL;AAAA;AAAA,IAEF,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA,IACnB,KAAK,KAAK,oBAA4C,KAAK,eAAe,KAAK,kBAAkB,CAAC;AAAA;AAAA,EAEpG,aAAa,GAAG;AAAA,IACd,MAAM,WAAW,KAAK,kBAAkB;AAAA,IACxC,IAAI,UAAU;AAAA,MACZ,KAAK,KAAK,gBAAoC,KAAK,eAAe,QAAQ;AAAA,IAC5E;AAAA;AAAA,EAEF,gBAAgB,CAAC,OAAO;AAAA,IACtB,IAAI,SAAS,KAAK,QAAQ,KAAK,SAAS,QAAQ;AAAA,MAC9C,KAAK,gBAAgB;AAAA,MACrB,KAAK,mBAAmB;AAAA,MACxB,KAAK,cAAc;AAAA,MACnB,KAAK,KAAK,oBAA4C,KAAK,eAAe,KAAK,kBAAkB,CAAC;AAAA,IACpG;AAAA;AAAA,EAEF,kBAAkB,GAAG;AAAA,IACnB,MAAM,cAAc,KAAK,MAAM,KAAK,iBAAiB,CAAC;AAAA,IACtD,MAAM,kBAAkB,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,gBAAgB,aAAa,KAAK,SAAS,SAAS,KAAK,cAAc,CAAC;AAAA,IAC1H,IAAI,oBAAoB,KAAK,cAAc;AAAA,MACzC,KAAK,eAAe;AAAA,MACpB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,EAEF,QAAQ,CAAC,OAAO,QAAQ;AAAA,IACtB,KAAK,iBAAiB,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,KAAK,SAAS,CAAC;AAAA,IACpE,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,EAErB,WAAW,CAAC,UAAU;AAAA,IACpB,IAAI,KAAK,cAAc;AAAA,MACrB;AAAA,IACF,KAAK,YAAY;AAAA,IACjB,KAAK,iBAAiB,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,QAAQ,KAAK,SAAS,CAAC;AAAA,IACzE,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,EAErB,WAAW,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,EAEd,cAAc,CAAC,KAAK;AAAA,IAClB,MAAM,aAAa,iBAAiB;AAAA,MAClC,MAAM,IAAI;AAAA,MACV,MAAM,IAAI;AAAA,MACV,OAAO,IAAI;AAAA,MACX,MAAM,IAAI;AAAA,MACV,OAAO,IAAI;AAAA,MACX,QAAQ;AAAA,IACV,CAAC;AAAA,IACD,MAAM,SAAS,KAAK,gBAAgB,IAAI,UAAU;AAAA,IAClD,IAAI,QAAQ;AAAA,MACV,QAAQ;AAAA,aACD;AAAA,UACH,KAAK,SAAS;AAAA,UACd,OAAO;AAAA,aACJ;AAAA,UACH,KAAK,UAAU;AAAA,UACf,OAAO;AAAA,aACJ;AAAA,UACH,KAAK,cAAc;AAAA,UACnB,OAAO;AAAA;AAAA,IAEb;AAAA,IACA,OAAO;AAAA;AAAA,MAEL,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,OAAO,CAAC,SAAS;AAAA,IACnB,KAAK,WAAW;AAAA,IAChB,KAAK,gBAAgB,KAAK,IAAI,KAAK,eAAe,KAAK,IAAI,GAAG,QAAQ,SAAS,CAAC,CAAC;AAAA,IACjF,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,MAEjB,eAAe,CAAC,OAAO;AAAA,IACzB,KAAK,mBAAmB,WAAW,KAAK;AAAA,IACxC,KAAK,cAAc;AAAA;AAAA,MAEjB,SAAS,CAAC,OAAO;AAAA,IACnB,KAAK,aAAa,WAAW,KAAK;AAAA,IAClC,KAAK,cAAc;AAAA;AAAA,MAEjB,sBAAsB,CAAC,OAAO;AAAA,IAChC,KAAK,0BAA0B,WAAW,KAAK;AAAA,IAC/C,KAAK,cAAc;AAAA;AAAA,MAEjB,gBAAgB,CAAC,OAAO;AAAA,IAC1B,KAAK,oBAAoB,WAAW,KAAK;AAAA,IACzC,KAAK,cAAc;AAAA;AAAA,MAEjB,uBAAuB,CAAC,OAAO;AAAA,IACjC,KAAK,2BAA2B,WAAW,KAAK;AAAA,IAChD,KAAK,cAAc;AAAA;AAAA,MAEjB,iBAAiB,CAAC,OAAO;AAAA,IAC3B,KAAK,qBAAqB,WAAW,KAAK;AAAA,IAC1C,KAAK,cAAc;AAAA;AAAA,MAEjB,wBAAwB,CAAC,OAAO;AAAA,IAClC,KAAK,4BAA4B,WAAW,KAAK;AAAA,IACjD,KAAK,cAAc;AAAA;AAAA,MAEjB,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,MAEV,eAAe,CAAC,MAAM;AAAA,IACxB,IAAI,KAAK,qBAAqB,MAAM;AAAA,MAClC,KAAK,mBAAmB;AAAA,MACxB,MAAM,YAAY,KAAK,uBAAuB;AAAA,MAC9C,KAAK,SAAS;AAAA,MACd,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,aAAa,GAAG;AAAA,IAClB,OAAO,KAAK;AAAA;AAAA,MAEV,aAAa,CAAC,MAAM;AAAA,IACtB,IAAI,KAAK,mBAAmB,MAAM;AAAA,MAChC,KAAK,iBAAiB;AAAA,MACtB,MAAM,YAAY,KAAK,uBAAuB;AAAA,MAC9C,KAAK,SAAS;AAAA,MACd,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK;AAAA;AAAA,MAEV,gBAAgB,CAAC,MAAM;AAAA,IACzB,IAAI,KAAK,sBAAsB,MAAM;AAAA,MACnC,KAAK,oBAAoB;AAAA,MACzB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,aAAa,GAAG;AAAA,IAClB,OAAO,KAAK;AAAA;AAAA,MAEV,aAAa,CAAC,MAAM;AAAA,IACtB,KAAK,iBAAiB;AAAA;AAAA,MAEpB,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,QAAQ,CAAC,UAAU;AAAA,IACrB,IAAI,KAAK,cAAc;AAAA,MACrB;AAAA,IACF,KAAK,YAAY;AAAA,IACjB,KAAK,iBAAiB,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,QAAQ,KAAK,SAAS,CAAC;AAAA,IACzE,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA;AAAA,MAEjB,WAAW,CAAC,UAAU;AAAA,IACxB,KAAK,eAAe;AAAA,IACpB,MAAM,iBAAiB,iBAAiB,6BAA6B,QAAQ;AAAA,IAC7E,KAAK,kBAAkB,oBAAoB,gBAAgB,KAAK,YAAY;AAAA;AAAA,MAE1E,WAAW,CAAC,SAAS;AAAA,IACvB,KAAK,eAAe,gBAAgB,mBAAmB,OAAO;AAAA,IAC9D,MAAM,iBAAiB,iBAAiB,6BAA6B,KAAK,YAAY;AAAA,IACtF,KAAK,kBAAkB,oBAAoB,gBAAgB,KAAK,YAAY;AAAA;AAEhF;",
9
+ "debugId": "05FAB165799D948664756E2164756E21",
10
+ "names": []
11
+ }