@scriptc/compiler 0.0.34 → 0.0.36

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 (424) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +7 -6
  2. package/dist/backend/build-cache.d.ts +44 -0
  3. package/dist/backend/build-cache.js +241 -0
  4. package/dist/backend/build-cache.js.map +1 -0
  5. package/dist/backend/{emission/emit-async.d.ts → c/async.d.ts} +21 -30
  6. package/dist/backend/{emission/emit-async.js → c/async.js} +270 -286
  7. package/dist/backend/c/async.js.map +1 -0
  8. package/dist/backend/{emission/emitter.d.ts → c/c-emitter.d.ts} +6 -23
  9. package/dist/backend/{emission/emitter.js → c/c-emitter.js} +53 -107
  10. package/dist/backend/c/c-emitter.js.map +1 -0
  11. package/dist/backend/c/exprs.d.ts +8 -0
  12. package/dist/backend/c/exprs.js +7913 -0
  13. package/dist/backend/c/exprs.js.map +1 -0
  14. package/dist/backend/{emission/emit-island.d.ts → c/island.d.ts} +5 -5
  15. package/dist/backend/{emission/emit-island.js → c/island.js} +24 -22
  16. package/dist/backend/c/island.js.map +1 -0
  17. package/dist/backend/{emission → c}/may-throw.d.ts +1 -1
  18. package/dist/backend/{emission → c}/may-throw.js +1 -1
  19. package/dist/backend/c/may-throw.js.map +1 -0
  20. package/dist/backend/{emission/emit-shapes.d.ts → c/shapes.d.ts} +19 -19
  21. package/dist/backend/{emission/emit-shapes.js → c/shapes.js} +78 -87
  22. package/dist/backend/c/shapes.js.map +1 -0
  23. package/dist/backend/{emission/emit-stmts.d.ts → c/stmts.d.ts} +12 -12
  24. package/dist/backend/{emission/emit-stmts.js → c/stmts.js} +377 -343
  25. package/dist/backend/c/stmts.js.map +1 -0
  26. package/dist/backend/{emission/emit-types.d.ts → c/types.d.ts} +1 -1
  27. package/dist/backend/{emission/emit-types.js → c/types.js} +42 -286
  28. package/dist/backend/c/types.js.map +1 -0
  29. package/dist/backend/c/types.test.js +25 -0
  30. package/dist/backend/c/types.test.js.map +1 -0
  31. package/dist/backend/{emission/emit-walkers.d.ts → c/walkers.d.ts} +19 -41
  32. package/dist/backend/{emission/emit-walkers.js → c/walkers.js} +238 -298
  33. package/dist/backend/c/walkers.js.map +1 -0
  34. package/dist/backend/ffi-callbacks.d.ts +1 -1
  35. package/dist/backend/ffi-callbacks.js +4 -3
  36. package/dist/backend/ffi-callbacks.js.map +1 -1
  37. package/dist/backend/{library-identity.d.ts → library-identity-markers.d.ts} +0 -4
  38. package/dist/backend/{library-identity.js → library-identity-markers.js} +10 -9
  39. package/dist/backend/library-identity-markers.js.map +1 -0
  40. package/dist/backend/llvm/blocks.d.ts +4 -0
  41. package/dist/backend/llvm/blocks.js +29 -0
  42. package/dist/backend/llvm/blocks.js.map +1 -1
  43. package/dist/backend/llvm/classes.d.ts +2 -19
  44. package/dist/backend/llvm/classes.js +20 -52
  45. package/dist/backend/llvm/classes.js.map +1 -1
  46. package/dist/backend/llvm/common.d.ts +4 -0
  47. package/dist/backend/llvm/common.js +27 -0
  48. package/dist/backend/llvm/common.js.map +1 -0
  49. package/dist/backend/llvm/dyn.d.ts +3 -8
  50. package/dist/backend/llvm/dyn.js +152 -224
  51. package/dist/backend/llvm/dyn.js.map +1 -1
  52. package/dist/backend/llvm/emitter.d.ts +4 -1
  53. package/dist/backend/llvm/emitter.js +514 -9981
  54. package/dist/backend/llvm/emitter.js.map +1 -1
  55. package/dist/backend/llvm/expr-async.d.ts +4 -0
  56. package/dist/backend/llvm/expr-async.js +726 -0
  57. package/dist/backend/llvm/expr-async.js.map +1 -0
  58. package/dist/backend/llvm/expr-bytes.d.ts +13 -0
  59. package/dist/backend/llvm/expr-bytes.js +456 -0
  60. package/dist/backend/llvm/expr-bytes.js.map +1 -0
  61. package/dist/backend/llvm/expr-callbacks.d.ts +22 -0
  62. package/dist/backend/llvm/expr-callbacks.js +520 -0
  63. package/dist/backend/llvm/expr-callbacks.js.map +1 -0
  64. package/dist/backend/llvm/expr-calls.d.ts +2 -0
  65. package/dist/backend/llvm/expr-calls.js +618 -0
  66. package/dist/backend/llvm/expr-calls.js.map +1 -0
  67. package/dist/backend/llvm/expr-containers.d.ts +25 -0
  68. package/dist/backend/llvm/expr-containers.js +623 -0
  69. package/dist/backend/llvm/expr-containers.js.map +1 -0
  70. package/dist/backend/llvm/expr-context.d.ts +255 -0
  71. package/dist/backend/llvm/expr-context.js +2 -0
  72. package/dist/backend/llvm/expr-context.js.map +1 -0
  73. package/dist/backend/llvm/expr-control.d.ts +2 -0
  74. package/dist/backend/llvm/expr-control.js +473 -0
  75. package/dist/backend/llvm/expr-control.js.map +1 -0
  76. package/dist/backend/llvm/expr-dispatch.d.ts +4 -0
  77. package/dist/backend/llvm/expr-dispatch.js +151 -0
  78. package/dist/backend/llvm/expr-dispatch.js.map +1 -0
  79. package/dist/backend/llvm/expr-dynamic.d.ts +2 -0
  80. package/dist/backend/llvm/expr-dynamic.js +810 -0
  81. package/dist/backend/llvm/expr-dynamic.js.map +1 -0
  82. package/dist/backend/llvm/expr-island.d.ts +15 -0
  83. package/dist/backend/llvm/expr-island.js +690 -0
  84. package/dist/backend/llvm/expr-island.js.map +1 -0
  85. package/dist/backend/llvm/expr-primitives.d.ts +6 -0
  86. package/dist/backend/llvm/expr-primitives.js +622 -0
  87. package/dist/backend/llvm/expr-primitives.js.map +1 -0
  88. package/dist/backend/llvm/expr-records.d.ts +9 -0
  89. package/dist/backend/llvm/expr-records.js +299 -0
  90. package/dist/backend/llvm/expr-records.js.map +1 -0
  91. package/dist/backend/llvm/expr-stream-bridges.d.ts +13 -0
  92. package/dist/backend/llvm/expr-stream-bridges.js +396 -0
  93. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -0
  94. package/dist/backend/llvm/expr-stream-callbacks.d.ts +12 -0
  95. package/dist/backend/llvm/expr-stream-callbacks.js +360 -0
  96. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -0
  97. package/dist/backend/llvm/lib-dispatch.d.ts +5 -0
  98. package/dist/backend/llvm/lib-dispatch.js +267 -0
  99. package/dist/backend/llvm/lib-dispatch.js.map +1 -0
  100. package/dist/backend/llvm/lib-filesystem.d.ts +6 -0
  101. package/dist/backend/llvm/lib-filesystem.js +594 -0
  102. package/dist/backend/llvm/lib-filesystem.js.map +1 -0
  103. package/dist/backend/llvm/lib-network.d.ts +2 -0
  104. package/dist/backend/llvm/lib-network.js +429 -0
  105. package/dist/backend/llvm/lib-network.js.map +1 -0
  106. package/dist/backend/llvm/lib-process.d.ts +5 -0
  107. package/dist/backend/llvm/lib-process.js +585 -0
  108. package/dist/backend/llvm/lib-process.js.map +1 -0
  109. package/dist/backend/llvm/lib-shared.d.ts +6 -0
  110. package/dist/backend/llvm/lib-shared.js +687 -0
  111. package/dist/backend/llvm/lib-shared.js.map +1 -0
  112. package/dist/backend/llvm/lib-stream.d.ts +2 -0
  113. package/dist/backend/llvm/lib-stream.js +470 -0
  114. package/dist/backend/llvm/lib-stream.js.map +1 -0
  115. package/dist/backend/llvm/shapes.d.ts +12 -2
  116. package/dist/backend/llvm/shapes.js +66 -307
  117. package/dist/backend/llvm/shapes.js.map +1 -1
  118. package/dist/backend/llvm/shapes.test.js +52 -0
  119. package/dist/backend/llvm/shapes.test.js.map +1 -0
  120. package/dist/backend/llvm/split.d.ts +43 -0
  121. package/dist/backend/llvm/split.js +227 -0
  122. package/dist/backend/llvm/split.js.map +1 -0
  123. package/dist/backend/llvm/split.test.d.ts +1 -0
  124. package/dist/backend/llvm/split.test.js +102 -0
  125. package/dist/backend/llvm/split.test.js.map +1 -0
  126. package/dist/backend/llvm/unsupported.d.ts +1 -1
  127. package/dist/backend/llvm/walkers.d.ts +2 -3
  128. package/dist/backend/llvm/walkers.js +164 -218
  129. package/dist/backend/llvm/walkers.js.map +1 -1
  130. package/dist/backend/native-codegen.d.ts +38 -0
  131. package/dist/backend/native-codegen.js +261 -0
  132. package/dist/backend/native-codegen.js.map +1 -0
  133. package/dist/backend/native-codegen.test.d.ts +1 -0
  134. package/dist/backend/native-codegen.test.js +188 -0
  135. package/dist/backend/native-codegen.test.js.map +1 -0
  136. package/dist/backend/native-link-info.d.ts +96 -0
  137. package/dist/backend/native-link-info.js +219 -0
  138. package/dist/backend/native-link-info.js.map +1 -0
  139. package/dist/backend/native-link-info.test.d.ts +1 -0
  140. package/dist/backend/native-link-info.test.js +134 -0
  141. package/dist/backend/native-link-info.test.js.map +1 -0
  142. package/dist/backend/{cc.d.ts → native-toolchain.d.ts} +139 -47
  143. package/dist/backend/{cc.js → native-toolchain.js} +1008 -910
  144. package/dist/backend/native-toolchain.js.map +1 -0
  145. package/dist/backend/native-toolchain.test.d.ts +1 -0
  146. package/dist/backend/{cc-cache.test.js → native-toolchain.test.js} +1297 -127
  147. package/dist/backend/native-toolchain.test.js.map +1 -0
  148. package/dist/backend/object-localize.js +1 -1
  149. package/dist/backend/object-localize.test.js +20 -0
  150. package/dist/backend/object-localize.test.js.map +1 -1
  151. package/dist/backend/runtime-abi.d.ts +10 -0
  152. package/dist/backend/runtime-abi.js +11 -0
  153. package/dist/backend/runtime-abi.js.map +1 -0
  154. package/dist/backend/runtime-pack.d.ts +137 -0
  155. package/dist/backend/runtime-pack.js +400 -0
  156. package/dist/backend/runtime-pack.js.map +1 -0
  157. package/dist/backend/runtime-pack.test.d.ts +1 -0
  158. package/dist/backend/runtime-pack.test.js +438 -0
  159. package/dist/backend/runtime-pack.test.js.map +1 -0
  160. package/dist/backend/targets.d.ts +30 -0
  161. package/dist/backend/targets.js +46 -0
  162. package/dist/backend/targets.js.map +1 -0
  163. package/dist/backend/targets.test.d.ts +1 -0
  164. package/dist/backend/targets.test.js +19 -0
  165. package/dist/backend/targets.test.js.map +1 -0
  166. package/dist/backend/vendor-archives.d.ts +41 -0
  167. package/dist/backend/vendor-archives.js +462 -0
  168. package/dist/backend/vendor-archives.js.map +1 -0
  169. package/dist/compat/fetch-profile.d.ts +0 -1
  170. package/dist/compat/fetch-profile.js +0 -1
  171. package/dist/compat/fetch-profile.js.map +1 -1
  172. package/dist/coverage/report.js +3 -3
  173. package/dist/coverage/report.js.map +1 -1
  174. package/dist/coverage/surface-manifest.js +25 -32
  175. package/dist/coverage/surface-manifest.js.map +1 -1
  176. package/dist/diagnostics/diagnostic.d.ts +11 -12
  177. package/dist/diagnostics/diagnostic.js +19 -17
  178. package/dist/diagnostics/diagnostic.js.map +1 -1
  179. package/dist/diagnostics/render.d.ts +1 -1
  180. package/dist/diagnostics/render.js +1 -1
  181. package/dist/diagnostics/render.js.map +1 -1
  182. package/dist/errors.d.ts +5 -0
  183. package/dist/errors.js +9 -0
  184. package/dist/errors.js.map +1 -0
  185. package/dist/executable/executable-cache.d.ts +86 -0
  186. package/dist/executable/executable-cache.js +398 -0
  187. package/dist/executable/executable-cache.js.map +1 -0
  188. package/dist/executable/executable-cache.test.d.ts +1 -0
  189. package/dist/executable/executable-cache.test.js +300 -0
  190. package/dist/executable/executable-cache.test.js.map +1 -0
  191. package/dist/ffi/{profile.d.ts → ffi-manifest.d.ts} +7 -2
  192. package/dist/ffi/{profile.js → ffi-manifest.js} +2 -1
  193. package/dist/ffi/ffi-manifest.js.map +1 -0
  194. package/dist/frontend/builtin-modules.d.ts +21 -0
  195. package/dist/frontend/builtin-modules.js +82 -0
  196. package/dist/frontend/builtin-modules.js.map +1 -0
  197. package/dist/frontend/cjs-lexer.d.ts +7 -0
  198. package/dist/frontend/cjs-lexer.js +15 -17
  199. package/dist/frontend/cjs-lexer.js.map +1 -1
  200. package/dist/frontend/dts-paths.d.ts +26 -0
  201. package/dist/frontend/dts-paths.js +41 -0
  202. package/dist/frontend/dts-paths.js.map +1 -0
  203. package/dist/frontend/input-tracker.d.ts +0 -2
  204. package/dist/frontend/input-tracker.js +1 -4
  205. package/dist/frontend/input-tracker.js.map +1 -1
  206. package/dist/frontend/lib-contract.d.ts +1 -5
  207. package/dist/frontend/lib-contract.js +1 -1
  208. package/dist/frontend/lib-contract.js.map +1 -1
  209. package/dist/frontend/lib-exports.d.ts +1 -1
  210. package/dist/frontend/lowering/call-position.d.ts +4 -0
  211. package/dist/frontend/lowering/call-position.js +7 -0
  212. package/dist/frontend/lowering/call-position.js.map +1 -0
  213. package/dist/frontend/lowering/callback-arg.d.ts +20 -0
  214. package/dist/frontend/lowering/callback-arg.js +44 -0
  215. package/dist/frontend/lowering/callback-arg.js.map +1 -0
  216. package/dist/frontend/lowering/lib-boundary.d.ts +1 -1
  217. package/dist/frontend/lowering/lib-boundary.js +34 -34
  218. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  219. package/dist/frontend/lowering/lower-assert.d.ts +3 -3
  220. package/dist/frontend/lowering/lower-assert.js +214 -241
  221. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  222. package/dist/frontend/lowering/lower-builtins.d.ts +74 -146
  223. package/dist/frontend/lowering/lower-builtins.js +1126 -1234
  224. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  225. package/dist/frontend/lowering/lower-calls.d.ts +56 -188
  226. package/dist/frontend/lowering/lower-calls.js +1409 -1494
  227. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  228. package/dist/frontend/lowering/lower-classes.d.ts +62 -125
  229. package/dist/frontend/lowering/lower-classes.js +832 -866
  230. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  231. package/dist/frontend/lowering/lower-comptime.d.ts +5 -12
  232. package/dist/frontend/lowering/lower-comptime.js +32 -31
  233. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  234. package/dist/frontend/lowering/lower-containers.d.ts +35 -135
  235. package/dist/frontend/lowering/lower-containers.js +1394 -1715
  236. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  237. package/dist/frontend/lowering/lower-dgram.d.ts +3 -7
  238. package/dist/frontend/lowering/lower-dgram.js +97 -111
  239. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  240. package/dist/frontend/lowering/lower-enums.d.ts +4 -4
  241. package/dist/frontend/lowering/lower-enums.js +30 -30
  242. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  243. package/dist/frontend/lowering/{lower-emitter.d.ts → lower-event-emitter.d.ts} +7 -18
  244. package/dist/frontend/lowering/{lower-emitter.js → lower-event-emitter.js} +172 -174
  245. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -0
  246. package/dist/frontend/lowering/lower-expando.d.ts +5 -5
  247. package/dist/frontend/lowering/lower-expando.js +40 -40
  248. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  249. package/dist/frontend/lowering/lower-exprs.d.ts +56 -264
  250. package/dist/frontend/lowering/lower-exprs.js +1644 -1704
  251. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  252. package/dist/frontend/lowering/lower-generators.d.ts +6 -6
  253. package/dist/frontend/lowering/lower-generators.js +73 -72
  254. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  255. package/dist/frontend/lowering/lower-inspect.d.ts +5 -17
  256. package/dist/frontend/lowering/lower-inspect.js +236 -238
  257. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  258. package/dist/frontend/lowering/lower-island.d.ts +34 -45
  259. package/dist/frontend/lowering/lower-island.js +440 -511
  260. package/dist/frontend/lowering/lower-island.js.map +1 -1
  261. package/dist/frontend/lowering/lower-mixins.d.ts +7 -10
  262. package/dist/frontend/lowering/lower-mixins.js +86 -86
  263. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  264. package/dist/frontend/lowering/lower-modules.d.ts +12 -18
  265. package/dist/frontend/lowering/lower-modules.js +284 -283
  266. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  267. package/dist/frontend/lowering/lower-namespaces.d.ts +23 -49
  268. package/dist/frontend/lowering/lower-namespaces.js +123 -115
  269. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  270. package/dist/frontend/lowering/lower-server.d.ts +18 -25
  271. package/dist/frontend/lowering/lower-server.js +899 -899
  272. package/dist/frontend/lowering/lower-server.js.map +1 -1
  273. package/dist/frontend/lowering/lower-stmts.d.ts +30 -149
  274. package/dist/frontend/lowering/lower-stmts.js +1176 -1229
  275. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  276. package/dist/frontend/lowering/lower-stream.d.ts +12 -12
  277. package/dist/frontend/lowering/lower-stream.js +300 -301
  278. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  279. package/dist/frontend/lowering/lower-test.d.ts +5 -5
  280. package/dist/frontend/lowering/lower-test.js +82 -82
  281. package/dist/frontend/lowering/lower-test.js.map +1 -1
  282. package/dist/frontend/lowering/lowerer.d.ts +66 -20
  283. package/dist/frontend/lowering/lowerer.js +421 -198
  284. package/dist/frontend/lowering/lowerer.js.map +1 -1
  285. package/dist/frontend/lowering/pairs-snapshot.d.ts +11 -0
  286. package/dist/frontend/lowering/pairs-snapshot.js +85 -0
  287. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -0
  288. package/dist/frontend/lowering/static-this.d.ts +6 -0
  289. package/dist/frontend/lowering/static-this.js +24 -0
  290. package/dist/frontend/lowering/static-this.js.map +1 -0
  291. package/dist/frontend/lowering/surfaces.d.ts +14 -33
  292. package/dist/frontend/lowering/surfaces.js +64 -64
  293. package/dist/frontend/lowering/surfaces.js.map +1 -1
  294. package/dist/frontend/npm-static-rewrite.js +6 -28
  295. package/dist/frontend/npm-static-rewrite.js.map +1 -1
  296. package/dist/frontend/npm-static.d.ts +0 -10
  297. package/dist/frontend/npm-static.js +4 -7
  298. package/dist/frontend/npm-static.js.map +1 -1
  299. package/dist/frontend/npm.d.ts +0 -24
  300. package/dist/frontend/npm.js +11 -85
  301. package/dist/frontend/npm.js.map +1 -1
  302. package/dist/frontend/program.d.ts +3 -1
  303. package/dist/frontend/program.js +51 -17
  304. package/dist/frontend/program.js.map +1 -1
  305. package/dist/frontend/provenance-registry.d.ts +0 -2
  306. package/dist/frontend/provenance-registry.js +0 -10
  307. package/dist/frontend/provenance-registry.js.map +1 -1
  308. package/dist/frontend/provenance.js +4 -7
  309. package/dist/frontend/provenance.js.map +1 -1
  310. package/dist/frontend/resolve.d.ts +7 -2
  311. package/dist/frontend/resolve.js +12 -17
  312. package/dist/frontend/resolve.js.map +1 -1
  313. package/dist/frontend/resolve.test.d.ts +1 -0
  314. package/dist/frontend/resolve.test.js +29 -0
  315. package/dist/frontend/resolve.test.js.map +1 -0
  316. package/dist/frontend/ts7/adapter.d.ts +2 -2
  317. package/dist/frontend/ts7/adapter.js +1 -1
  318. package/dist/frontend/ts7/adapter.js.map +1 -1
  319. package/dist/frontend/ts7/checker.d.ts +40 -2
  320. package/dist/frontend/ts7/checker.js +182 -54
  321. package/dist/frontend/ts7/checker.js.map +1 -1
  322. package/dist/frontend/ts7/enums.js +2 -1
  323. package/dist/frontend/ts7/enums.js.map +1 -1
  324. package/dist/frontend/ts7/{program.js → program-adapter.js} +7 -6
  325. package/dist/frontend/ts7/program-adapter.js.map +1 -0
  326. package/dist/frontend/ts7/world-check.d.ts +1 -3
  327. package/dist/frontend/ts7/world-check.js +3 -1
  328. package/dist/frontend/ts7/world-check.js.map +1 -1
  329. package/dist/frontend/tsc-codes.d.ts +8 -0
  330. package/dist/frontend/tsc-codes.js +109 -0
  331. package/dist/frontend/tsc-codes.js.map +1 -0
  332. package/dist/frontend/{types.d.ts → type-mapper.d.ts} +2 -25
  333. package/dist/frontend/{types.js → type-mapper.js} +31 -52
  334. package/dist/frontend/type-mapper.js.map +1 -0
  335. package/dist/frontend/workspace-registry.d.ts +26 -0
  336. package/dist/frontend/workspace-registry.js +71 -0
  337. package/dist/frontend/workspace-registry.js.map +1 -0
  338. package/dist/index.d.ts +115 -30
  339. package/dist/index.js +650 -146
  340. package/dist/index.js.map +1 -1
  341. package/dist/ir/analysis.d.ts +37 -0
  342. package/dist/ir/analysis.js +118 -0
  343. package/dist/ir/analysis.js.map +1 -0
  344. package/dist/ir/analysis.test.d.ts +1 -0
  345. package/dist/ir/analysis.test.js +21 -0
  346. package/dist/ir/analysis.test.js.map +1 -0
  347. package/dist/ir/build.d.ts +9 -0
  348. package/dist/ir/build.js +33 -0
  349. package/dist/ir/build.js.map +1 -0
  350. package/dist/ir/integer-loops.d.ts +1 -1
  351. package/dist/ir/{nodes.d.ts → ir.d.ts} +60 -26
  352. package/dist/ir/{nodes.js → ir.js} +173 -141
  353. package/dist/ir/ir.js.map +1 -0
  354. package/dist/ir/ir.test.d.ts +1 -0
  355. package/dist/ir/ir.test.js +17 -0
  356. package/dist/ir/ir.test.js.map +1 -0
  357. package/dist/ir/serialize.d.ts +1 -1
  358. package/dist/ir/serialize.js +2 -1
  359. package/dist/ir/serialize.js.map +1 -1
  360. package/dist/ir/validate.d.ts +1 -1
  361. package/dist/ir/validate.js +16 -5
  362. package/dist/ir/validate.js.map +1 -1
  363. package/dist/library/cache-primitives.d.ts +24 -0
  364. package/dist/library/cache-primitives.js +83 -0
  365. package/dist/library/cache-primitives.js.map +1 -0
  366. package/dist/library/cache-reset.test.d.ts +1 -0
  367. package/dist/library/cache-reset.test.js +47 -0
  368. package/dist/library/cache-reset.test.js.map +1 -0
  369. package/dist/library/compiler-self-identity.d.ts +23 -0
  370. package/dist/library/compiler-self-identity.js +84 -0
  371. package/dist/library/compiler-self-identity.js.map +1 -0
  372. package/dist/library/fence-eval.d.ts +3 -1
  373. package/dist/library/fence-eval.js +5 -1
  374. package/dist/library/fence-eval.js.map +1 -1
  375. package/dist/library/int-infer.d.ts +1 -36
  376. package/dist/library/int-infer.js +17 -17
  377. package/dist/library/int-infer.js.map +1 -1
  378. package/dist/library/{early-cache.d.ts → library-cache.d.ts} +1 -1
  379. package/dist/library/{early-cache.js → library-cache.js} +37 -111
  380. package/dist/library/library-cache.js.map +1 -0
  381. package/dist/library/library-cache.test.d.ts +1 -0
  382. package/dist/library/{early-cache.test.js → library-cache.test.js} +2 -2
  383. package/dist/library/library-cache.test.js.map +1 -0
  384. package/dist/library/{profile.d.ts → library-profile.d.ts} +4 -7
  385. package/dist/library/{profile.js → library-profile.js} +18 -11
  386. package/dist/library/library-profile.js.map +1 -0
  387. package/dist/library/semantic-source.js +2 -1
  388. package/dist/library/semantic-source.js.map +1 -1
  389. package/dist/library/sidecar.d.ts +5 -2
  390. package/dist/library/sidecar.js +11 -5
  391. package/dist/library/sidecar.js.map +1 -1
  392. package/dist/startup-cache.d.ts +6 -0
  393. package/dist/startup-cache.js +6 -0
  394. package/dist/startup-cache.js.map +1 -0
  395. package/package.json +7 -2
  396. package/surface-manifest.json +1 -1
  397. package/dist/backend/cc-cache.test.js.map +0 -1
  398. package/dist/backend/cc.js.map +0 -1
  399. package/dist/backend/emission/emit-async.js.map +0 -1
  400. package/dist/backend/emission/emit-exprs.d.ts +0 -13
  401. package/dist/backend/emission/emit-exprs.js +0 -7407
  402. package/dist/backend/emission/emit-exprs.js.map +0 -1
  403. package/dist/backend/emission/emit-island.js.map +0 -1
  404. package/dist/backend/emission/emit-shapes.js.map +0 -1
  405. package/dist/backend/emission/emit-stmts.js.map +0 -1
  406. package/dist/backend/emission/emit-types.js.map +0 -1
  407. package/dist/backend/emission/emit-walkers.js.map +0 -1
  408. package/dist/backend/emission/emitter.js.map +0 -1
  409. package/dist/backend/emission/may-throw.js.map +0 -1
  410. package/dist/backend/library-identity.js.map +0 -1
  411. package/dist/ffi/profile.js.map +0 -1
  412. package/dist/frontend/lowering/lower-emitter.js.map +0 -1
  413. package/dist/frontend/shared.d.ts +0 -82
  414. package/dist/frontend/shared.js +0 -308
  415. package/dist/frontend/shared.js.map +0 -1
  416. package/dist/frontend/ts7/program.js.map +0 -1
  417. package/dist/frontend/types.js.map +0 -1
  418. package/dist/ir/nodes.js.map +0 -1
  419. package/dist/library/early-cache.js.map +0 -1
  420. package/dist/library/early-cache.test.js.map +0 -1
  421. package/dist/library/profile.js.map +0 -1
  422. /package/dist/backend/{cc-cache.test.d.ts → c/types.test.d.ts} +0 -0
  423. /package/dist/{library/early-cache.test.d.ts → backend/llvm/shapes.test.d.ts} +0 -0
  424. /package/dist/frontend/ts7/{program.d.ts → program-adapter.d.ts} +0 -0
@@ -1,20 +1,11 @@
1
- import { RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, isRefCounted, mapOf, STRING } from "../../ir/nodes.js";
1
+ import { InternalCompilerError } from "../../errors.js";
2
+ import { RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, isRefCounted, mapOf, STRING } from "../../ir/ir.js";
2
3
  import { mangleClassGcFree, mangleClassNew, mangleClassRelease, mangleClassReleaseDirect, mangleClassRetain, mangleClassStruct, mangleClassTrace, mangleCtorThunk, mangleField, mangleFunction, mangleRecordClone, mangleRecordGcFree, mangleRecordNew, mangleRecordRelease, mangleRecordRetain, mangleRecordStruct, mangleRecordTrace, mangleVtAdapter, mangleVtInstance, mangleVtStruct } from "../mangle.js";
3
- import { boxKindC, cDecl, cType, elemKindC, mapValKindC, releaseCallC, retainCallC, vAdapters } from "./emit-types.js";
4
+ import { boxKindC, cDecl, cType, elemKindC, mapValKindC, releaseCallC, retainCallC, vAdapters } from "./types.js";
5
+ import { streamRooted } from "../../ir/analysis.js";
4
6
  /** The overflow map's C member name on index-signature record structs.
5
7
  * User fields mangle to `sc_fld_*`, so no field can collide. */
6
8
  export const OVERFLOW_MEMBER = "sc_ovf";
7
- /** True when the class descends from a runtime stream class: its struct
8
- * embeds the FULL ScrStream prefix (registry, display name, state
9
- * pointer) and its RC/trace helpers delegate the state block to
10
- * scr_stream_st_*. */
11
- function streamRooted(meta) {
12
- for (let m = meta.base; m; m = m.base) {
13
- if (RUNTIME_STREAM_CLASSES.has(m.def.name))
14
- return true;
15
- }
16
- return false;
17
- }
18
9
  /** Per-shape C structs + RC helpers for classes AND record shapes (the
19
10
  * layouts are identical: `size_t rc` header + fields). All structs are
20
11
  * forward-declared first so fields can reference any shape regardless of
@@ -29,32 +20,32 @@ function streamRooted(meta) {
29
20
  * exactly the other refcounted fields (the trace/teardown complement
30
21
  * contract in scr_runtime.h) — and their retain/release feed the
31
22
  * candidate-root buffer. Acyclic shapes keep the lean 1-word header. */
32
- export function emitStructDefs(E, out) {
23
+ export function emitStructDefs(emitter, out) {
33
24
  // Runtime-provided classes (the builtin Error hierarchy) emit NOTHING
34
25
  // here — struct, RC helpers, and vtables live in the runtime. They keep
35
26
  // their ClassMeta (preorder numbering, instanceof constants, vtable
36
27
  // struct type for user subclasses); main() stamps their intervals.
37
28
  const shapes = [
38
- ...(E.mod.classes ?? []).filter((cls) => !cls.runtime).map((cls) => ({
29
+ ...(emitter.mod.classes ?? []).filter((cls) => !cls.runtime).map((cls) => ({
39
30
  struct: mangleClassStruct(cls.name),
40
31
  newFn: mangleClassNew(cls.name),
41
32
  retain: mangleClassRetain(cls.name),
42
33
  release: mangleClassRelease(cls.name),
43
34
  trace: mangleClassTrace(cls.name),
44
35
  gcFree: mangleClassGcFree(cls.name),
45
- traced: E.tracedShapes.has(`object:${cls.name}`),
36
+ traced: emitter.tracedShapes.has(`object:${cls.name}`),
46
37
  fields: cls.fields,
47
38
  comment: `class ${cls.name}`,
48
- meta: E.classMeta.get(cls.name) ?? null,
39
+ meta: emitter.classMeta.get(cls.name) ?? null,
49
40
  })),
50
- ...(E.mod.records ?? []).map((rec) => ({
41
+ ...(emitter.mod.records ?? []).map((rec) => ({
51
42
  struct: mangleRecordStruct(rec.id),
52
43
  newFn: mangleRecordNew(rec.id),
53
44
  retain: mangleRecordRetain(rec.id),
54
45
  release: mangleRecordRelease(rec.id),
55
46
  trace: mangleRecordTrace(rec.id),
56
47
  gcFree: mangleRecordGcFree(rec.id),
57
- traced: E.tracedShapes.has(`record:${rec.id}`),
48
+ traced: emitter.tracedShapes.has(`record:${rec.id}`),
58
49
  fields: rec.fields,
59
50
  recordId: rec.id,
60
51
  ...(rec.indexValue ? { indexValue: rec.indexValue } : {}),
@@ -87,7 +78,7 @@ export function emitStructDefs(E, out) {
87
78
  // every construction site (literal lowering fills omitted optional
88
79
  // fields, the dynCheck/JSON builders fill missing keys), and the
89
80
  // immortal instance costs nothing if overwritten (releases skip it).
90
- const undefFieldInitC = (s) => s.meta === null ? [] : s.fields.flatMap((f) => E.undefFieldInitLineC(f.name, f.type));
81
+ const undefFieldInitC = (s) => s.meta === null ? [] : s.fields.flatMap((f) => emitter.undefFieldInitLineC(f.name, f.type));
91
82
  // The overflow map's construction call (in the shape's newFn): value
92
83
  // handling is type-directed exactly like a user Map's.
93
84
  const overflowNewC = (s) => {
@@ -97,7 +88,7 @@ export function emitStructDefs(E, out) {
97
88
  return `scr_map_new(SCR_MAP_KEY_STR, ${valKind}, NULL, NULL, NULL)`;
98
89
  }
99
90
  const rc = vAdapters(v);
100
- return `scr_map_new(SCR_MAP_KEY_STR, SCR_MAP_VAL_REF, &${rc.retain}, &${rc.release}, ${E.traceArgC(v)})`;
91
+ return `scr_map_new(SCR_MAP_KEY_STR, SCR_MAP_VAL_REF, &${rc.retain}, &${rc.release}, ${emitter.traceArgC(v)})`;
101
92
  };
102
93
  for (const s of shapes) {
103
94
  out.push(`typedef struct ${s.struct} ${s.struct}; /* ${s.comment} */`);
@@ -139,10 +130,10 @@ export function emitStructDefs(E, out) {
139
130
  // from the EMITTED hierarchy classes' roots, while adapter prototypes,
140
131
  // instances, and helpers stay shapes-only (the runtime owns the
141
132
  // builtin classes; a subclass-free Error tree emits nothing at all).
142
- E.emitVtableDecls(out, shapes.filter(inHierarchy).map((s) => s.meta));
133
+ emitter.emitVtableDecls(out, shapes.filter(inHierarchy).map((s) => s.meta));
143
134
  for (const s of shapes) {
144
135
  out.push(`static ${s.struct} *${s.retain}(${s.struct} *o);`, `static void ${s.release}(${s.struct} *o);`, `static ${s.struct} *${s.newFn}(void);`);
145
- if (s.recordId !== undefined && E.recordCloneShapes.has(s.recordId)) {
136
+ if (s.recordId !== undefined && emitter.recordCloneShapes.has(s.recordId)) {
146
137
  out.push(`static ${s.struct} *${mangleRecordClone(s.recordId)}(${s.struct} *src);`);
147
138
  }
148
139
  if (inHierarchy(s)) {
@@ -153,10 +144,10 @@ export function emitStructDefs(E, out) {
153
144
  }
154
145
  }
155
146
  out.push("");
156
- E.emitVtableInstances(out, shapes.filter(inHierarchy).map((s) => s.meta));
147
+ emitter.emitVtableInstances(out, shapes.filter(inHierarchy).map((s) => s.meta));
157
148
  for (const s of shapes) {
158
149
  if (inHierarchy(s)) {
159
- E.emitHierarchyClassHelpers(out, s.meta, s);
150
+ emitter.emitHierarchyClassHelpers(out, s.meta, s);
160
151
  continue;
161
152
  }
162
153
  // NULL-tolerant: zeroed fields (calloc) and user `null as unknown as C`
@@ -169,15 +160,15 @@ export function emitStructDefs(E, out) {
169
160
  const field = `o->${m.member}`;
170
161
  out.push(` if (${field}) ${releaseCallC(m.type, field)};`);
171
162
  }
172
- out.push(` scr_obj_free_note();`, ` free(o);`, ` }`, `}`, `static ${s.struct} *${s.newFn}(void) {`, ` ${s.struct} *o = calloc(1, sizeof *o);`, ` if (!o) { scr_trap("scriptc: out of memory\\n"); }`, ` o->rc = 1;`, ...undefFieldInitC(s), ...(s.indexValue ? [` o->${OVERFLOW_MEMBER} = ${overflowNewC(s)};`] : []), ` scr_obj_alloc_note();`, ` return o;`, `}`, ...(s.recordId !== undefined && E.recordCloneShapes.has(s.recordId)
163
+ out.push(` scr_obj_free_note();`, ` free(o);`, ` }`, `}`, `static ${s.struct} *${s.newFn}(void) {`, ` ${s.struct} *o = calloc(1, sizeof *o);`, ` if (!o) { scr_trap("scriptc: out of memory\\n"); }`, ` o->rc = 1;`, ...undefFieldInitC(s), ...(s.indexValue ? [` o->${OVERFLOW_MEMBER} = ${overflowNewC(s)};`] : []), ` scr_obj_alloc_note();`, ` return o;`, `}`, ...(s.recordId !== undefined && emitter.recordCloneShapes.has(s.recordId)
173
164
  ? emitRecordCloneC(s.recordId, s.struct, s.fields, s.newFn)
174
165
  : []), `static void *${s.retain}_v(void *o) { return ${s.retain}((${s.struct} *)o); }`, `static void ${s.release}_v(void *o) { ${s.release}((${s.struct} *)o); }`, ``);
175
166
  continue;
176
167
  }
177
168
  // Cycle-capable shape: cycle-headered allocation, root-buffer hooks
178
169
  // on release, and the trace/teardown complement pair.
179
- const tracedFields = rcMembers(s).filter((m) => E.traceAdapterC(m.type) !== null);
180
- const untracedRefFields = rcMembers(s).filter((m) => isRefCounted(m.type) && E.traceAdapterC(m.type) === null);
170
+ const tracedFields = rcMembers(s).filter((m) => emitter.traceAdapterC(m.type) !== null);
171
+ const untracedRefFields = rcMembers(s).filter((m) => isRefCounted(m.type) && emitter.traceAdapterC(m.type) === null);
181
172
  out.push(`static ${s.struct} *${s.retain}(${s.struct} *o) {`, ` if (o && o->rc != SIZE_MAX) {`, ` o->rc++;`, ` scr_cyc_mark_live(o);`, ` }`, ` return o;`, `}`, `static void ${s.release}(${s.struct} *o) {`, ` if (!o || o->rc == SIZE_MAX) return;`, ` if (--o->rc == 0) {`, ` scr_cyc_on_dead(o);`);
182
173
  for (const m of rcMembers(s)) {
183
174
  if (!isRefCounted(m.type))
@@ -185,7 +176,7 @@ export function emitStructDefs(E, out) {
185
176
  const field = `o->${m.member}`;
186
177
  out.push(` if (${field}) ${releaseCallC(m.type, field)};`);
187
178
  }
188
- out.push(` scr_obj_free_note();`, ` scr_cyc_free(o);`, ` } else {`, ` scr_cyc_on_release(o); /* possible cycle root; may collect */`, ` }`, `}`, `static ${s.struct} *${s.newFn}(void) {`, ` ${s.struct} *o = scr_cyc_alloc(sizeof *o, &${s.trace}, &${s.gcFree});`, ` o->rc = 1;`, ...undefFieldInitC(s), ...(s.indexValue ? [` o->${OVERFLOW_MEMBER} = ${overflowNewC(s)};`] : []), ` scr_obj_alloc_note();`, ` return o;`, `}`, ...(s.recordId !== undefined && E.recordCloneShapes.has(s.recordId)
179
+ out.push(` scr_obj_free_note();`, ` scr_cyc_free(o);`, ` } else {`, ` scr_cyc_on_release(o); /* possible cycle root; may collect */`, ` }`, `}`, `static ${s.struct} *${s.newFn}(void) {`, ` ${s.struct} *o = scr_cyc_alloc(sizeof *o, &${s.trace}, &${s.gcFree});`, ` o->rc = 1;`, ...undefFieldInitC(s), ...(s.indexValue ? [` o->${OVERFLOW_MEMBER} = ${overflowNewC(s)};`] : []), ` scr_obj_alloc_note();`, ` return o;`, `}`, ...(s.recordId !== undefined && emitter.recordCloneShapes.has(s.recordId)
189
180
  ? emitRecordCloneC(s.recordId, s.struct, s.fields, s.newFn)
190
181
  : []), `static void ${s.trace}(void *o0, ScrTraceVisit visit, void *ctx) {`, ` ${s.struct} *o = (${s.struct} *)o0;`, ...tracedFields.map((m) => ` visit(o->${m.member}, ctx); /* ${m.name} */`), `}`, `static void ${s.gcFree}(void *o0) {`, ...(untracedRefFields.length > 0
191
182
  ? [
@@ -229,7 +220,7 @@ function emitRecordCloneC(shapeId, struct, fields, newFn) {
229
220
  * ABSTRACT class whose chain holds only abstract declarations of the
230
221
  * slot also answers null — the class never instantiates (tsc), so its
231
222
  * own vtable entry can never dispatch. */
232
- export function vtEntriesFor(E, meta) {
223
+ export function vtEntriesFor(emitter, meta) {
233
224
  return meta.root.slots.map((slot) => {
234
225
  if (!(slot.declarer.pre <= meta.pre && meta.pre <= slot.declarer.post)) {
235
226
  return { slot, impl: null };
@@ -241,11 +232,11 @@ export function vtEntriesFor(E, meta) {
241
232
  }
242
233
  if (meta.def.abstract === true)
243
234
  return { slot, impl: null };
244
- throw new Error(`emitter bug: no implementation of ${slot.method} for ${meta.def.name}`);
235
+ throw new InternalCompilerError(`emitter bug: no implementation of ${slot.method} for ${meta.def.name}`);
245
236
  });
246
237
  }
247
238
  /** The C parameter list of a slot (declaring-class `this` first). */
248
- export function vtSlotParams(E, slot, named) {
239
+ export function vtSlotParams(emitter, slot, named) {
249
240
  const thisParam = named
250
241
  ? `${mangleClassStruct(slot.declarer.def.name)} *o`
251
242
  : `${mangleClassStruct(slot.declarer.def.name)} *`;
@@ -256,7 +247,7 @@ export function vtSlotParams(E, slot, named) {
256
247
  }
257
248
  /** Vtable struct typedefs + adapter prototypes (the definitions call
258
249
  * function bodies, so they flush after the signature block — see emit). */
259
- export function emitVtableDecls(E, out, hierarchyClasses) {
250
+ export function emitVtableDecls(emitter, out, hierarchyClasses) {
260
251
  // Roots of the EMITTED classes' hierarchies — a runtime root (%Error)
261
252
  // counts exactly when some emitted subclass needs its vtable type.
262
253
  const roots = [...new Set(hierarchyClasses.map((m) => m.root))];
@@ -266,34 +257,34 @@ export function emitVtableDecls(E, out, hierarchyClasses) {
266
257
  out.push(` ScrVt head;`);
267
258
  for (const slot of root.slots) {
268
259
  const ret = cType(slot.fn.returnType).trim();
269
- out.push(` ${ret} (*${slot.member})(${E.vtSlotParams(slot, false).join(", ")}); /* ${slot.method} */`);
260
+ out.push(` ${ret} (*${slot.member})(${emitter.vtSlotParams(slot, false).join(", ")}); /* ${slot.method} */`);
270
261
  }
271
262
  out.push(`} ${vtt};`);
272
263
  }
273
264
  if (roots.length > 0)
274
265
  out.push("");
275
266
  for (const meta of hierarchyClasses) {
276
- for (const { slot, impl } of E.vtEntriesFor(meta)) {
267
+ for (const { slot, impl } of emitter.vtEntriesFor(meta)) {
277
268
  if (impl === null)
278
269
  continue;
279
270
  const key = `${impl.def.name}.${slot.method}`;
280
- if (E.vtAdapters.has(key))
271
+ if (emitter.vtAdapters.has(key))
281
272
  continue;
282
- E.vtAdapters.set(key, { impl, slot });
273
+ emitter.vtAdapters.set(key, { impl, slot });
283
274
  const ret = cType(slot.fn.returnType).trim();
284
- out.push(`static ${ret} ${mangleVtAdapter(impl.def.name, slot.method)}(${E.vtSlotParams(slot, false).join(", ")});`);
275
+ out.push(`static ${ret} ${mangleVtAdapter(impl.def.name, slot.method)}(${emitter.vtSlotParams(slot, false).join(", ")});`);
285
276
  }
286
277
  }
287
- if (E.vtAdapters.size > 0)
278
+ if (emitter.vtAdapters.size > 0)
288
279
  out.push("");
289
280
  }
290
281
  /** One static const vtable per hierarchy class: interval, direct
291
282
  * release, and the class's dispatch entry for every slot. */
292
- export function emitVtableInstances(E, out, hierarchyClasses) {
283
+ export function emitVtableInstances(emitter, out, hierarchyClasses) {
293
284
  for (const meta of hierarchyClasses) {
294
285
  const vtt = mangleVtStruct(meta.root.def.name);
295
286
  const head = `{ ${meta.pre}, ${meta.post}, &${mangleClassReleaseDirect(meta.def.name)} }`;
296
- const entries = E.vtEntriesFor(meta).map(({ slot, impl }) => impl === null
287
+ const entries = emitter.vtEntriesFor(meta).map(({ slot, impl }) => impl === null
297
288
  ? `0 /* ${slot.method}: outside the declaring subtree */`
298
289
  : `&${mangleVtAdapter(impl.def.name, slot.method)} /* ${slot.method} */`);
299
290
  out.push(`static const ${vtt} ${mangleVtInstance(meta.def.name)} = { /* class ${meta.def.name} */`, ` ${[head, ...entries].join(",\n ")}`, `};`);
@@ -303,13 +294,13 @@ export function emitVtableInstances(E, out, hierarchyClasses) {
303
294
  }
304
295
  /** Adapter definitions (flushed after the signature block): the impl
305
296
  * class's method behind the slot's declaring-class signature. */
306
- export function emitVtAdapterDefs(E, out) {
307
- for (const { impl, slot } of E.vtAdapters.values()) {
297
+ export function emitVtAdapterDefs(emitter, out) {
298
+ for (const { impl, slot } of emitter.vtAdapters.values()) {
308
299
  const ret = cType(slot.fn.returnType).trim();
309
300
  const recv = impl === slot.declarer ? "o" : `(${mangleClassStruct(impl.def.name)} *)o`;
310
301
  const args = [recv, ...slot.fn.params.slice(1).map((_, i) => `sc_a${i}`)].join(", ");
311
302
  const call = `${mangleFunction(`%${impl.def.name}.${slot.method}`)}(${args})`;
312
- out.push(``, `static ${ret} ${mangleVtAdapter(impl.def.name, slot.method)}(${E.vtSlotParams(slot, true).join(", ")}) {`, slot.fn.returnType.kind === "void" ? ` ${call};` : ` return ${call};`, `}`);
303
+ out.push(``, `static ${ret} ${mangleVtAdapter(impl.def.name, slot.method)}(${emitter.vtSlotParams(slot, true).join(", ")}) {`, slot.fn.returnType.kind === "void" ? ` ${call};` : ` return ${call};`, `}`);
313
304
  }
314
305
  }
315
306
  /** RC helpers of one hierarchy class. Retain is layout-generic (rc sits
@@ -319,7 +310,7 @@ export function emitVtAdapterDefs(E, out) {
319
310
  * teardown. Cycle capability is hierarchy-uniform (constructor fixpoint),
320
311
  * and the cycle header's trace/teardown are stamped with the concrete
321
312
  * class's functions at allocation — the collector needs no vtable. */
322
- export function emitHierarchyClassHelpers(E, out, meta, s) {
313
+ export function emitHierarchyClassHelpers(emitter, out, meta, s) {
323
314
  const reld = mangleClassReleaseDirect(meta.def.name);
324
315
  const emitterRooted = meta.root.def.name === RUNTIME_EMITTER_CLASS;
325
316
  const isStreamRooted = streamRooted(meta);
@@ -356,10 +347,10 @@ export function emitHierarchyClassHelpers(E, out, meta, s) {
356
347
  // Undefined-admitting fields start as JS's undefined, not NULL — see
357
348
  // undefFieldInitLineC. s.fields is the FLATTENED layout (base prefix
358
349
  // + own), so a derived allocation covers inherited fields too.
359
- ...s.fields.flatMap((f) => E.undefFieldInitLineC(f.name, f.type)), ` scr_obj_alloc_note();`, ` return o;`, `}`);
350
+ ...s.fields.flatMap((f) => emitter.undefFieldInitLineC(f.name, f.type)), ` scr_obj_alloc_note();`, ` return o;`, `}`);
360
351
  if (s.traced) {
361
- const tracedFields = s.fields.filter((f) => E.traceAdapterC(f.type) !== null);
362
- const untracedRefFields = s.fields.filter((f) => isRefCounted(f.type) && E.traceAdapterC(f.type) === null);
352
+ const tracedFields = s.fields.filter((f) => emitter.traceAdapterC(f.type) !== null);
353
+ const untracedRefFields = s.fields.filter((f) => isRefCounted(f.type) && emitter.traceAdapterC(f.type) === null);
363
354
  out.push(`static void ${s.trace}(void *o0, ScrTraceVisit visit, void *ctx) {`, ` ${s.struct} *o = (${s.struct} *)o0;`, ...(emitterRooted
364
355
  ? [` scr_emitter_reg_trace(o->sc_eereg, visit, ctx); /* listener closures */`]
365
356
  : []), ...(isStreamRooted
@@ -383,35 +374,35 @@ export function emitHierarchyClassHelpers(E, out, meta, s) {
383
374
  * (definitions land later with the other synthesized bodies —
384
375
  * emitCtorThunkDefs). The interval constants are the same numbering the
385
376
  * vtables carry, so instanceOfValue agrees with compiled instanceOf. */
386
- export function emitClassObjs(E, out) {
387
- if (E.classObjs.size === 0)
377
+ export function emitClassObjs(emitter, out) {
378
+ if (emitter.classObjs.size === 0)
388
379
  return;
389
380
  out.push("");
390
- for (const [className, sym] of E.classObjs) {
391
- const meta = E.classMeta.get(className);
381
+ for (const [className, sym] of emitter.classObjs) {
382
+ const meta = emitter.classMeta.get(className);
392
383
  if (!meta)
393
- throw new Error(`emitter bug: class object for unknown class ${className}`);
384
+ throw new InternalCompilerError(`emitter bug: class object for unknown class ${className}`);
394
385
  // A generic-class INSTANTIATION's class object carries its FAMILY's
395
386
  // interval: at runtime JS has ONE `Box`, so instanceof through the
396
387
  // value must answer for the whole family (every instantiation and
397
388
  // their subclasses) — IrClassDef.genericOf. Construction still
398
389
  // dispatches the instantiation's own thunk.
399
390
  const intervalMeta = meta.def.genericOf !== undefined
400
- ? E.classMeta.get(meta.def.genericOf)
391
+ ? emitter.classMeta.get(meta.def.genericOf)
401
392
  : meta;
402
393
  if (!intervalMeta)
403
- throw new Error(`emitter bug: class object for ${className} names unknown family ${meta.def.genericOf ?? ""}`);
404
- const nameSym = E.internLiteral(meta.def.jsName ?? "");
405
- out.push(`static void *${mangleCtorThunk(className)}(${ctorThunkParams(E, className).decls || "void"});`, `static ScrClassObj ${sym} = { SIZE_MAX, ${intervalMeta.pre}, ${intervalMeta.post}, ` +
394
+ throw new InternalCompilerError(`emitter bug: class object for ${className} names unknown family ${meta.def.genericOf ?? ""}`);
395
+ const nameSym = emitter.internLiteral(meta.def.jsName ?? "");
396
+ out.push(`static void *${mangleCtorThunk(className)}(${ctorThunkParams(emitter, className).decls || "void"});`, `static ScrClassObj ${sym} = { SIZE_MAX, ${intervalMeta.pre}, ${intervalMeta.post}, ` +
406
397
  `(void *)&${mangleCtorThunk(className)}, (const ScrStr *)&${nameSym} }; /* class ${className} */`);
407
398
  }
408
399
  }
409
400
  /** The construct thunk's parameter list: the constructor's completed ABI
410
401
  * minus the `this` the thunk allocates itself. */
411
- function ctorThunkParams(E, className) {
412
- const ctor = E.fnByName.get(`%${className}.constructor`);
402
+ function ctorThunkParams(emitter, className) {
403
+ const ctor = emitter.fnByName.get(`%${className}.constructor`);
413
404
  if (!ctor)
414
- throw new Error(`emitter bug: class object for ${className} without a constructor`);
405
+ throw new InternalCompilerError(`emitter bug: class object for ${className} without a constructor`);
415
406
  const params = ctor.params.slice(1);
416
407
  return {
417
408
  decls: params.map((p, i) => cDecl(p.type, `sc_a${i}`)).join(", "),
@@ -426,9 +417,9 @@ function ctorThunkParams(E, className) {
426
417
  * constructor leaves the pending flag set: the thunk releases the
427
418
  * half-built object and returns NULL (a dummy the checked call site
428
419
  * never reads). */
429
- export function emitCtorThunkDefs(E, out) {
430
- for (const className of E.classObjs.keys()) {
431
- const { decls, names } = ctorThunkParams(E, className);
420
+ export function emitCtorThunkDefs(emitter, out) {
421
+ for (const className of emitter.classObjs.keys()) {
422
+ const { decls, names } = ctorThunkParams(emitter, className);
432
423
  const struct = mangleClassStruct(className);
433
424
  const lines = [
434
425
  ``,
@@ -436,7 +427,7 @@ export function emitCtorThunkDefs(E, out) {
436
427
  ` ${struct} *o = ${mangleClassNew(className)}();`,
437
428
  ` ${mangleFunction(`%${className}.constructor`)}(${[`${mangleClassRetain(className)}(o)`, ...names].join(", ")});`,
438
429
  ];
439
- if (E.mayThrow.has(`%${className}.constructor`)) {
430
+ if (emitter.mayThrow.has(`%${className}.constructor`)) {
440
431
  lines.push(` if (scr_exc_pending()) {`, ` ${mangleClassRelease(className)}(o);`, ` return NULL;`, ` }`);
441
432
  }
442
433
  lines.push(` return (void *)o;`, `}`);
@@ -449,15 +440,15 @@ export function emitCtorThunkDefs(E, out) {
449
440
  * cycle-capable fields — capability is hierarchy-uniform, so the
450
441
  * runtime's own allocations need collector headers too). Empty for
451
442
  * hand-written IR without the builtin defs. */
452
- export function errorVtStampLines(E) {
443
+ export function errorVtStampLines(emitter) {
453
444
  const lines = [];
454
445
  for (const [name, rec] of RUNTIME_ERROR_CLASSES) {
455
- const meta = E.classMeta.get(name);
446
+ const meta = emitter.classMeta.get(name);
456
447
  if (!meta)
457
448
  return [];
458
449
  lines.push(` scr_error_vts[${rec.kind}].pre = ${meta.pre}; scr_error_vts[${rec.kind}].post = ${meta.post}; /* ${rec.lib} */`);
459
450
  }
460
- if (E.tracedShapes.has("object:%Error")) {
451
+ if (emitter.tracedShapes.has("object:%Error")) {
461
452
  lines.push(` scr_error_set_traced();`);
462
453
  }
463
454
  return lines;
@@ -466,8 +457,8 @@ export function errorVtStampLines(E) {
466
457
  * interval from THIS module's numbering (the errorVtStampLines story).
467
458
  * Empty when the program never touches the emitter surface — the class
468
459
  * def only rides modules that reference it. */
469
- export function emitterVtStampLines(E) {
470
- const meta = E.classMeta.get(RUNTIME_EMITTER_CLASS);
460
+ export function emitterVtStampLines(emitter) {
461
+ const meta = emitter.classMeta.get(RUNTIME_EMITTER_CLASS);
471
462
  if (!meta)
472
463
  return [];
473
464
  return [
@@ -479,10 +470,10 @@ export function emitterVtStampLines(E) {
479
470
  * def rides the module only when the program touches the stream
480
471
  * surface, and instanceof needs their preorder intervals under the
481
472
  * emitter root. */
482
- export function streamVtStampLines(E) {
473
+ export function streamVtStampLines(emitter) {
483
474
  const lines = [];
484
475
  for (const [name, rec] of RUNTIME_STREAM_CLASSES) {
485
- const meta = E.classMeta.get(name);
476
+ const meta = emitter.classMeta.get(name);
486
477
  if (!meta)
487
478
  continue;
488
479
  const vt = `scr_${rec.lib.toLowerCase()}_vt`;
@@ -492,16 +483,16 @@ export function streamVtStampLines(E) {
492
483
  }
493
484
  /** The trace entry point symbol for a payload/field type, or null when
494
485
  * the type cannot participate in a cycle (see the constructor fixpoint). */
495
- export function traceAdapterC(E, t) {
486
+ export function traceAdapterC(emitter, t) {
496
487
  switch (t.kind) {
497
488
  case "func":
498
489
  return "scr_closure_trace_v";
499
490
  case "union":
500
- return E.tracedUnions.has(t.unionId) ? "scr_union_trace_v" : null;
491
+ return emitter.tracedUnions.has(t.unionId) ? "scr_union_trace_v" : null;
501
492
  case "promise":
502
493
  return "scr_promise_trace_v";
503
494
  case "object":
504
- if (!E.tracedShapes.has(`object:${t.className}`))
495
+ if (!emitter.tracedShapes.has(`object:${t.className}`))
505
496
  return null;
506
497
  if (RUNTIME_ERROR_CLASSES.has(t.className))
507
498
  return "scr_error_trace";
@@ -511,26 +502,26 @@ export function traceAdapterC(E, t) {
511
502
  return "scr_stream_trace";
512
503
  return mangleClassTrace(t.className);
513
504
  case "record":
514
- return E.tracedShapes.has(`record:${t.shapeId}`) ? mangleRecordTrace(t.shapeId) : null;
505
+ return emitter.tracedShapes.has(`record:${t.shapeId}`) ? mangleRecordTrace(t.shapeId) : null;
515
506
  // Cycle-capable exactly when the VALUE type is (mirrors the
516
507
  // constructor fixpoint's map rule): such maps allocate with the
517
508
  // collector header and their runtime trace visits every live value.
518
509
  case "map":
519
- return E.traceAdapterC(t.value) !== null ? "scr_map_trace_v" : null;
510
+ return emitter.traceAdapterC(t.value) !== null ? "scr_map_trace_v" : null;
520
511
  // Arrays mirror maps: cycle-capable exactly when the ELEMENT type is
521
512
  // (a record/object/union element — or a cycle-capable inner array —
522
513
  // can point back at the array holding it). Such arrays allocate with
523
514
  // the collector header (scr_arr_new_ref with a trace); scalar/
524
515
  // string/bytes-element arrays stay lean.
525
516
  case "array":
526
- return E.traceAdapterC(t.elem) !== null ? "scr_arr_trace_v" : null;
517
+ return emitter.traceAdapterC(t.elem) !== null ? "scr_arr_trace_v" : null;
527
518
  default:
528
519
  return null;
529
520
  }
530
521
  }
531
522
  /** `&<trace>` or `NULL` — the trace argument at a container call site. */
532
- export function traceArgC(E, t) {
533
- const sym = E.traceAdapterC(t);
523
+ export function traceArgC(emitter, t) {
524
+ const sym = emitter.traceAdapterC(t);
534
525
  return sym ? `&${sym}` : "NULL";
535
526
  }
536
527
  /** Array construction expression for one element type. Ref elements
@@ -541,7 +532,7 @@ export function traceArgC(E, t) {
541
532
  * allocates with the collector header exactly when the element type
542
533
  * carries one (trace non-NULL). Every other element kind keeps the
543
534
  * historic scr_arr_new call. */
544
- export function arrNewC(E, elem, capExpr) {
535
+ export function arrNewC(emitter, elem, capExpr) {
545
536
  const useRef = elem.kind === "record" || elem.kind === "object" || elem.kind === "union" ||
546
537
  // Promise elements (Promise.all's food): refcounted, cycle-headered
547
538
  // — the `_v` adapters and scr_promise_trace_v ride the same REF
@@ -556,22 +547,22 @@ export function arrNewC(E, elem, capExpr) {
556
547
  // Closures: scr_closure_* adapters + scr_closure_trace_v (always
557
548
  // cycle-headered — captures can reach back through boxes).
558
549
  elem.kind === "func" ||
559
- (elem.kind === "array" && E.traceAdapterC(elem) !== null);
550
+ (elem.kind === "array" && emitter.traceAdapterC(elem) !== null);
560
551
  if (!useRef)
561
552
  return `scr_arr_new(${elemKindC(elem)}, ${capExpr})`;
562
553
  const v = vAdapters(elem);
563
- return `scr_arr_new_ref(&${v.retain}, &${v.release}, ${E.traceArgC(elem)}, ${capExpr})`;
554
+ return `scr_arr_new_ref(&${v.retain}, &${v.release}, ${emitter.traceArgC(elem)}, ${capExpr})`;
564
555
  }
565
556
  /** Box construction expression — object/record/union/promise boxes carry
566
557
  * their RC entry points (and the payload's trace) as function pointers
567
558
  * (the SCR_BOX_OBJ mechanism: the runtime can't know per-shape layouts). */
568
- export function boxNewC(E, t) {
559
+ export function boxNewC(emitter, t) {
569
560
  // A captured local can be typed by a class the module never collected
570
561
  // (a runtime-fenced JS class — e.g. one declared inside a block —
571
562
  // whose declaration and every use compile to runtime traps): no
572
563
  // instance can ever exist, so the box is an inert placeholder — its
573
564
  // RC adapters were never emitted and must not be referenced.
574
- if (t.kind === "object" && !E.classMeta.has(t.className)) {
565
+ if (t.kind === "object" && !emitter.classMeta.has(t.className)) {
575
566
  return `scr_box_new(SCR_BOX_F64) /* ${t.className}: uncollected class, all uses trap */`;
576
567
  }
577
568
  if (t.kind === "object" || t.kind === "record" || t.kind === "union" ||
@@ -601,10 +592,10 @@ export function boxNewC(E, t) {
601
592
  // A CYCLE-CAPABLE array must ride the obj-box so the box's trace
602
593
  // reaches it (SCR_BOX_ARR payloads are never traced); acyclic arrays
603
594
  // keep the historic plain-kind box below.
604
- (t.kind === "array" && E.traceAdapterC(t) !== null)) {
595
+ (t.kind === "array" && emitter.traceAdapterC(t) !== null)) {
605
596
  const v = vAdapters(t);
606
- return `scr_box_new_obj(&${v.retain}, &${v.release}, ${E.traceArgC(t)})`;
597
+ return `scr_box_new_obj(&${v.retain}, &${v.release}, ${emitter.traceArgC(t)})`;
607
598
  }
608
599
  return `scr_box_new(${boxKindC(t)})`;
609
600
  }
610
- //# sourceMappingURL=emit-shapes.js.map
601
+ //# sourceMappingURL=shapes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shapes.js","sourceRoot":"","sources":["../../../src/backend/c/shapes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAQxD,OAAO,EAAsB,qBAAqB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACvJ,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAChZ,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAClH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD;gEACgE;AAChE,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AAgCxC;;;;;;;;;;;;;0EAa0E;AACxE,MAAM,UAAU,cAAc,CAAC,OAAiB,EAAE,GAAa;IAoB7D,sEAAsE;IACtE,wEAAwE;IACxE,oEAAoE;IACpE,mEAAmE;IACnE,MAAM,MAAM,GAAkB;QAC5B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACzE,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;YACnC,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;YAC/B,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;YACnC,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;YACrC,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;YACjC,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;YACnC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,IAAI,EAAE,CAAC;YACtD,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO,EAAE,SAAS,GAAG,CAAC,IAAI,EAAE;YAC5B,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI;SAC9C,CAAC,CAAC;QACH,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC3C,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,EAAE,EAAE,CAAC;YACpD,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,QAAQ,EAAE,GAAG,CAAC,EAAE;YAChB,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,OAAO,EAAE,UAAU,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI;YACrH,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;KACJ,CAAC;IACF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAChC,MAAM,WAAW,GAAG,CAAC,CAAc,EAAW,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IACrF,qEAAqE;IACrE,qEAAqE;IACrE,sEAAsE;IACtE,qCAAqC;IACrC,MAAM,SAAS,GAAG,CAAC,CAAc,EAAoD,EAAE,CAAC;QACtF,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACrF,GAAG,CAAC,CAAC,CAAC,UAAU;YACd,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;YAClG,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,+DAA+D;IAC/D,qEAAqE;IACrE,sEAAsE;IACtE,qEAAqE;IACrE,mEAAmE;IACnE,uEAAuE;IACvE,kEAAkE;IAClE,oEAAoE;IACpE,kEAAkE;IAClE,mEAAmE;IACnE,iEAAiE;IACjE,qEAAqE;IACrE,MAAM,eAAe,GAAG,CAAC,CAAc,EAAY,EAAE,CACnD,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9F,qEAAqE;IACrE,uDAAuD;IACvD,MAAM,YAAY,GAAG,CAAC,CAAc,EAAU,EAAE;QAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,UAAW,CAAC;QACxB,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,OAAO,KAAK,iBAAiB,EAAE,CAAC;YAClC,OAAO,gCAAgC,OAAO,qBAAqB,CAAC;QACtE,CAAC;QACD,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO,kDAAkD,EAAE,CAAC,MAAM,MAAM,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;IACjH,CAAC,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC;IACzE,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO,KAAK,EAAE,cAAc,CAAC,CAAC;QACpE,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACnB,mEAAmE;YACnE,gEAAgE;YAChE,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC/B,IAAI,CAAC,CAAC,IAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBACpD,8DAA8D;gBAC9D,+DAA+D;gBAC/D,6DAA6D;gBAC7D,wCAAwC;gBACxC,GAAG,CAAC,IAAI,CACN,uEAAuE,EACvE,6EAA6E,CAC9E,CAAC;gBACF,IAAI,YAAY,CAAC,CAAC,CAAC,IAAK,CAAC,EAAE,CAAC;oBAC1B,0DAA0D;oBAC1D,6DAA6D;oBAC7D,8DAA8D;oBAC9D,4DAA4D;oBAC5D,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;YACjB,GAAG,CAAC,IAAI,CAAC,aAAa,eAAe,+CAA+C,CAAC,CAAC;QACxF,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,uEAAuE;IACvE,kEAAkE;IAClE,oEAAoE;IACpE,uEAAuE;IACvE,gEAAgE;IAChE,qEAAqE;IACrE,OAAO,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC;IAC7E,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CACN,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,OAAO,EAClD,eAAe,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,OAAO,EAC3C,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,SAAS,CACxC,CAAC;QACF,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,eAAe,wBAAwB,CAAC,CAAC,CAAC,IAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CACN,eAAe,CAAC,CAAC,KAAK,4CAA4C,EAClE,eAAe,CAAC,CAAC,MAAM,YAAY,CACpC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC;IACjF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACnB,OAAO,CAAC,yBAAyB,CAAC,GAAG,EAAE,CAAC,CAAC,IAAK,EAAE,CAAC,CAAC,CAAC;YACnD,SAAS;QACX,CAAC;QACD,wEAAwE;QACxE,kDAAkD;QAClD,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CACN,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,QAAQ,EACnD,wCAAwC,EACxC,aAAa,EACb,GAAG,EACH,eAAe,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,QAAQ,EAC5C,wCAAwC,EACxC,uBAAuB,CACxB,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACpC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC/B,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YAChE,CAAC;YACD,GAAG,CAAC,IAAI,CACN,0BAA0B,EAC1B,cAAc,EACd,KAAK,EACL,GAAG,EACH,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,UAAU,EACxC,KAAK,CAAC,CAAC,MAAM,6BAA6B,EAC1C,sDAAsD,EACtD,cAAc,EACd,GAAG,eAAe,CAAC,CAAC,CAAC,EACrB,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,eAAe,MAAM,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1E,yBAAyB,EACzB,aAAa,EACb,GAAG,EACH,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACvE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC3D,CAAC,CAAC,EAAE,CAAC,EACP,gBAAgB,CAAC,CAAC,MAAM,wBAAwB,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,UAAU,EAC/E,eAAe,CAAC,CAAC,OAAO,iBAAiB,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,UAAU,EACzE,EAAE,CACH,CAAC;YACF,SAAS;QACX,CAAC;QACD,oEAAoE;QACpE,sDAAsD;QACtD,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QACxF,MAAM,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CACtE,CAAC;QACF,GAAG,CAAC,IAAI,CACN,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,QAAQ,EACnD,iCAAiC,EACjC,cAAc,EACd,2BAA2B,EAC3B,KAAK,EACL,aAAa,EACb,GAAG,EACH,eAAe,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,QAAQ,EAC5C,wCAAwC,EACxC,uBAAuB,EACvB,yBAAyB,CAC1B,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,SAAS;YACpC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAChE,CAAC;QACD,GAAG,CAAC,IAAI,CACN,0BAA0B,EAC1B,sBAAsB,EACtB,YAAY,EACZ,mEAAmE,EACnE,KAAK,EACL,GAAG,EACH,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,UAAU,EACxC,KAAK,CAAC,CAAC,MAAM,mCAAmC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM,IAAI,EACzE,cAAc,EACd,GAAG,eAAe,CAAC,CAAC,CAAC,EACrB,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,eAAe,MAAM,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1E,yBAAyB,EACzB,aAAa,EACb,GAAG,EACH,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;YACvE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC;YAC3D,CAAC,CAAC,EAAE,CAAC,EACP,eAAe,CAAC,CAAC,KAAK,8CAA8C,EACpE,KAAK,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,MAAM,QAAQ,EACvC,GAAG,YAAY,CAAC,GAAG,CACjB,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,MAAM,cAAc,CAAC,CAAC,IAAI,KAAK,CACvD,EACD,GAAG,EACH,eAAe,CAAC,CAAC,MAAM,cAAc,EACrC,GAAG,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;YAC9B,CAAC,CAAC;gBACE,KAAK,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,MAAM,QAAQ;gBACvC,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;oBAC/B,OAAO,SAAS,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,eAAe,CAAC;gBACrF,CAAC,CAAC;aACH;YACH,CAAC,CAAC,EAAE,CAAC,EACP,wBAAwB,EACxB,qBAAqB,EACrB,GAAG,EACH,gBAAgB,CAAC,CAAC,MAAM,wBAAwB,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,UAAU,EAC/E,eAAe,CAAC,CAAC,OAAO,iBAAiB,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,UAAU,EACzE,EAAE,CACH,CAAC;IACJ,CAAC;AACH,CAAC;AAEH;;yDAEyD;AACzD,SAAS,gBAAgB,CACvB,OAAe,EACf,MAAc,EACd,MAAwC,EACxC,KAAa;IAEb,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACrC,OAAO;QACL,GAAG,CAAC,QAAQ;YACV,CAAC,CAAC;gBACE,uBAAuB;gBACvB,sBAAsB;gBACtB,OAAO;gBACP,2BAA2B;gBAC3B,QAAQ;aACT;YACH,CAAC,CAAC,EAAE,CAAC;QACP,UAAU,MAAM,KAAK,iBAAiB,CAAC,OAAO,CAAC,IAAI,MAAM,UAAU;QACnE,KAAK,MAAM,SAAS,KAAK,KAAK;QAC9B,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAClB,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACnC,OAAO,QAAQ,MAAM,MAAM,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,EAAE,GAAG,CAAC;QAChH,CAAC,CAAC;QACF,aAAa;QACb,GAAG;KACJ,CAAC;AACJ,CAAC;AAED;;;;;4CAK4C;AAC1C,MAAM,UAAU,YAAY,CAAC,OAAiB,EAAE,IAAe;IAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAClC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACvE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC9B,CAAC;QACD,KAAK,IAAI,CAAC,GAAqB,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACnD,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1F,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC5D,MAAM,IAAI,qBAAqB,CAAC,qCAAqC,IAAI,CAAC,MAAM,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3G,CAAC,CAAC,CAAC;AACL,CAAC;AAEH,qEAAqE;AACnE,MAAM,UAAU,YAAY,CAAC,OAAiB,EAAE,IAAY,EAAE,KAAc;IAC1E,MAAM,SAAS,GAAG,KAAK;QACrB,CAAC,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;QACnD,CAAC,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM;SACxB,KAAK,CAAC,CAAC,CAAC;SACR,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;AAC9B,CAAC;AAEH;6EAC6E;AAC3E,MAAM,UAAU,eAAe,CAAC,OAAiB,EAAE,GAAa,EAAE,gBAA6B;IAC7F,sEAAsE;IACtE,mEAAmE;IACnE,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,GAAG,CAAC,IAAI,CAAC,kBAAkB,GAAG,qCAAqC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC;QACvF,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,GAAG,CAAC,IAAI,CACN,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,KAAK,CACpG,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACpC,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,IAAI,IAAI,KAAK,IAAI;gBAAE,SAAS;YAC5B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9C,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC1C,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,GAAG,CAAC,IAAI,CACN,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CACjH,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChD,CAAC;AAEH;+DAC+D;AAC7D,MAAM,UAAU,mBAAmB,CAAC,OAAiB,EAAE,GAAa,EAAE,gBAA6B;IACjG,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,MAAM,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1F,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAChE,IAAI,KAAK,IAAI;YACX,CAAC,CAAC,QAAQ,IAAI,CAAC,MAAM,oCAAoC;YACzD,CAAC,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,KAAK,CAC3E,CAAC;QACF,GAAG,CAAC,IAAI,CACN,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,EACzF,KAAK,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EACvC,IAAI,CACL,CAAC;IACJ,CAAC;IACD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChD,CAAC;AAEH;mEACmE;AACjE,MAAM,UAAU,iBAAiB,CAAC,OAAiB,EAAE,GAAa;IAChE,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;QACzD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,IAAI,GACR,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5E,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrF,MAAM,IAAI,GAAG,GAAG,cAAc,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC;QAC9E,GAAG,CAAC,IAAI,CACN,EAAE,EACF,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAChH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,YAAY,IAAI,GAAG,EACvE,GAAG,CACJ,CAAC;IACJ,CAAC;AACH,CAAC;AAEH;;;;;;wEAMwE;AACtE,MAAM,UAAU,yBAAyB,CAAC,OAAiB,EAAE,GAAa,EACxE,IAAe,EACf,CASC;IACD,MAAM,IAAI,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,qBAAqB,CAAC;IACnE,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1C,kEAAkE;IAClE,4CAA4C;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IAClB,GAAG,CAAC,IAAI,CACN,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,QAAQ,EACnD,GAAG,CAAC,CAAC,CAAC,MAAM;QACV,CAAC,CAAC,CAAC,iCAAiC,EAAE,cAAc,EAAE,2BAA2B,EAAE,KAAK,CAAC;QACzF,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,EAC/C,aAAa,EACb,GAAG,EACH,eAAe,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,QAAQ,EAC5C,wCAAwC,EACxC,yDAAyD,EACzD,GAAG,EACH,eAAe,IAAI,cAAc,EACjC,KAAK,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,MAAM,QAAQ,EACvC,uBAAuB,EACvB,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CACjD,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS;QACpC,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,aAAa,EAAE,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAC7E,IAAI,cAAc,EAAE,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IACD,GAAG,CAAC,IAAI,CACN,0BAA0B,EAC1B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,cAAc,EAClD,GAAG,CAAC,CAAC,CAAC,MAAM;QACV,CAAC,CAAC,CAAC,YAAY,EAAE,mEAAmE,EAAE,KAAK,CAAC;QAC5F,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EACZ,GAAG,EACH,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,UAAU,EACxC,GAAG,CAAC,CAAC,CAAC,MAAM;QACV,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,mCAAmC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC;QAC7E,CAAC,CAAC;YACE,KAAK,CAAC,CAAC,MAAM,6BAA6B;YAC1C,sDAAsD;SACvD,CAAC,EACN,cAAc,EACd,cAAc,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EACrD,GAAG,CAAC,aAAa;QACf,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,8CAA8C,CAAC;QAChG,CAAC,CAAC,EAAE,CAAC;IACP,qEAAqE;IACrE,qEAAqE;IACrE,+DAA+D;IAC/D,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EACvE,yBAAyB,EACzB,aAAa,EACb,GAAG,CACJ,CAAC;IACF,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QACpF,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CACtE,CAAC;QACF,GAAG,CAAC,IAAI,CACN,eAAe,CAAC,CAAC,KAAK,8CAA8C,EACpE,KAAK,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,MAAM,QAAQ,EACvC,GAAG,CAAC,aAAa;YACf,CAAC,CAAC,CAAC,2EAA2E,CAAC;YAC/E,CAAC,CAAC,EAAE,CAAC,EACP,GAAG,CAAC,cAAc;YAChB,CAAC,CAAC,CAAC,gFAAgF,CAAC;YACpF,CAAC,CAAC,EAAE,CAAC,EACP,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,KAAK,CAAC,EACtF,GAAG,EACH,eAAe,CAAC,CAAC,MAAM,cAAc,EACrC,GAAG,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa;YAC/C,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,MAAM,QAAQ,CAAC;YAC3C,CAAC,CAAC,EAAE,CAAC,EACP,GAAG,CAAC,aAAa;YACf,CAAC,CAAC,CAAC,kEAAkE,CAAC;YACtE,CAAC,CAAC,EAAE,CAAC,EACP,GAAG,CAAC,cAAc;YAChB,CAAC,CAAC,CAAC,yEAAyE,CAAC;YAC7E,CAAC,CAAC,EAAE,CAAC,EACP,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,OAAO,SAAS,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,eAAe,CAAC;QACrF,CAAC,CAAC,EACF,wBAAwB,EACxB,qBAAqB,EACrB,GAAG,CACJ,CAAC;IACJ,CAAC;IACD,GAAG,CAAC,IAAI,CACN,gBAAgB,CAAC,CAAC,MAAM,wBAAwB,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,UAAU,EAC/E,eAAe,CAAC,CAAC,OAAO,iBAAiB,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,UAAU,EACzE,EAAE,CACH,CAAC;AACJ,CAAC;AAEH;;;;;0EAK0E;AACxE,MAAM,UAAU,aAAa,CAAC,OAAiB,EAAE,GAAa;IAC5D,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO;IACzC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,qBAAqB,CAAC,+CAA+C,SAAS,EAAE,CAAC,CAAC;QACvG,oEAAoE;QACpE,mEAAmE;QACnE,kEAAkE;QAClE,+DAA+D;QAC/D,4CAA4C;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS;YACnD,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;YAC3C,CAAC,CAAC,IAAI,CAAC;QACT,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,qBAAqB,CAAC,iCAAiC,SAAS,yBAAyB,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,CAAC;QAClJ,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAC7D,GAAG,CAAC,IAAI,CACN,gBAAgB,eAAe,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,KAAK,IAAI,MAAM,IAAI,EACrG,sBAAsB,GAAG,kBAAkB,YAAY,CAAC,GAAG,KAAK,YAAY,CAAC,IAAI,IAAI;YACnF,YAAY,eAAe,CAAC,SAAS,CAAC,sBAAsB,OAAO,gBAAgB,SAAS,KAAK,CACpG,CAAC;IACJ,CAAC;AACH,CAAC;AAEH;oDACoD;AAClD,SAAS,eAAe,CAAC,OAAiB,EAAE,SAAiB;IAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,cAAc,CAAC,CAAC;IAC/D,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,qBAAqB,CAAC,iCAAiC,SAAS,wBAAwB,CAAC,CAAC;IAC/G,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpC,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACjE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC;AAEH;;;;;;;qBAOqB;AACnB,MAAM,UAAU,iBAAiB,CAAC,OAAiB,EAAE,GAAa;IAChE,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACjD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG;YACZ,EAAE;YACF,gBAAgB,eAAe,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,MAAM,KAAK;YAClE,KAAK,MAAM,SAAS,cAAc,CAAC,SAAS,CAAC,KAAK;YAClD,KAAK,cAAc,CAAC,IAAI,SAAS,cAAc,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;SACpH,CAAC;QACF,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,cAAc,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CACR,4BAA4B,EAC5B,OAAO,kBAAkB,CAAC,SAAS,CAAC,MAAM,EAC1C,kBAAkB,EAClB,KAAK,CACN,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACvC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAEH;;;;;iDAKiD;AAC/C,MAAM,UAAU,iBAAiB,CAAC,OAAiB;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,qBAAqB,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CACR,mBAAmB,GAAG,CAAC,IAAI,WAAW,IAAI,CAAC,GAAG,mBAAmB,GAAG,CAAC,IAAI,YAAY,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,GAAG,KAAK,CACnH,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAEH;;;iDAGiD;AAC/C,MAAM,UAAU,mBAAmB,CAAC,OAAiB;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,OAAO;QACL,0BAA0B,IAAI,CAAC,GAAG,2BAA2B,IAAI,CAAC,IAAI,sBAAsB;KAC7F,CAAC;AACJ,CAAC;AAEH;;;;qBAIqB;AACnB,MAAM,UAAU,kBAAkB,CAAC,OAAiB;IAClD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,sBAAsB,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,EAAE,GAAG,OAAO,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,IAAI,CAAC,GAAG,KAAK,EAAE,WAAW,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAEH;8EAC8E;AAC5E,MAAM,UAAU,aAAa,CAAC,OAAiB,EAAE,CAAS;IACxD,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,qBAAqB,CAAC;QAC/B,KAAK,OAAO;YACV,OAAO,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1E,KAAK,SAAS;YACZ,OAAO,qBAAqB,CAAC;QAC/B,KAAK,QAAQ;YACX,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;gBAAE,OAAO,IAAI,CAAC;YACpE,IAAI,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;gBAAE,OAAO,iBAAiB,CAAC;YACrE,IAAI,CAAC,CAAC,SAAS,KAAK,qBAAqB;gBAAE,OAAO,mBAAmB,CAAC;YACtE,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;gBAAE,OAAO,kBAAkB,CAAC;YACvE,OAAO,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACvC,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/F,4DAA4D;QAC5D,gEAAgE;QAChE,oEAAoE;QACpE,KAAK,KAAK;YACR,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5E,qEAAqE;QACrE,oEAAoE;QACpE,qEAAqE;QACrE,+DAA+D;QAC/D,yCAAyC;QACzC,KAAK,OAAO;YACV,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAEH,0EAA0E;AACxE,MAAM,UAAU,SAAS,CAAC,OAAiB,EAAE,CAAS;IACpD,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAClC,CAAC;AAEH;;;;;;;kCAOkC;AAChC,MAAM,UAAU,OAAO,CAAC,OAAiB,EAAE,IAAY,EAAE,OAAwB;IAC/E,MAAM,MAAM,GACV,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QACzE,oEAAoE;QACpE,gEAAgE;QAChE,6CAA6C;QAC7C,IAAI,CAAC,IAAI,KAAK,SAAS;QACvB,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,iDAAiD;QAC1E,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,iEAAiE;QAC1F,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,wDAAwD;QACjF,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,sDAAsD;QACnF,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,kDAAkD;QAC5E,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,6DAA6D;QACzF,iEAAiE;QACjE,2DAA2D;QAC3D,IAAI,CAAC,IAAI,KAAK,MAAM;QACpB,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAClE,IAAI,CAAC,MAAM;QAAE,OAAO,eAAe,SAAS,CAAC,IAAI,CAAC,KAAK,OAAO,GAAG,CAAC;IAClE,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,oBAAoB,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,OAAO,GAAG,CAAC;AAChG,CAAC;AAEH;;8EAE8E;AAC5E,MAAM,UAAU,OAAO,CAAC,OAAiB,EAAE,CAAS;IAClD,sEAAsE;IACtE,kEAAkE;IAClE,gEAAgE;IAChE,oEAAoE;IACpE,6DAA6D;IAC7D,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/D,OAAO,+BAA+B,CAAC,CAAC,SAAS,uCAAuC,CAAC;IAC3F,CAAC;IACD,IACE,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAChE,CAAC,CAAC,IAAI,KAAK,UAAU;QACrB,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;QAC5D,CAAC,CAAC,IAAI,KAAK,WAAW;QACtB,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc;QACnE,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QACzC,CAAC,CAAC,IAAI,KAAK,YAAY;QACvB,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QACjE,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;QAChD,CAAC,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa;QACrD,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;QAChD,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;QAC5C,CAAC,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;QACpD,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa;QAClD,mEAAmE;QACnE,sDAAsD;QACtD,CAAC,CAAC,IAAI,KAAK,OAAO;QAClB,kEAAkE;QAClE,8DAA8D;QAC9D,8DAA8D;QAC9D,2DAA2D;QAC3D,kEAAkE;QAClE,8DAA8D;QAC9D,CAAC,CAAC,IAAI,KAAK,KAAK;QAChB,iEAAiE;QACjE,qEAAqE;QACrE,0CAA0C;QAC1C,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EACzD,CAAC;QACD,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACvB,OAAO,oBAAoB,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;IACjF,CAAC;IACD,OAAO,eAAe,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AACvC,CAAC"}
@@ -1,14 +1,14 @@
1
- import type { CEmitter, ScopeEntry } from "./emitter.js";
2
- import type { IrFunction } from "../../ir/nodes.js";
3
- import { IrExpr, IrStmt } from "../../ir/nodes.js";
4
- export declare function emitFunction(E: CEmitter, fn: IrFunction): void;
1
+ import type { CEmitter, ScopeEntry } from "./c-emitter.js";
2
+ import type { IrFunction } from "../../ir/ir.js";
3
+ import { IrExpr, IrStmt } from "../../ir/ir.js";
4
+ export declare function emitFunction(emitter: CEmitter, fn: IrFunction): void;
5
5
  /** Emits a block in its own lexical scope (refcounted locals released at
6
6
  * end). `setup` runs after the scope opens, before the statements — the
7
7
  * catch-binding hook: it may emit prelude lines and register entries the
8
8
  * scope owns (released on every exit, jumps and unwinds included). */
9
- export declare function emitBlock(E: CEmitter, stmts: IrStmt[], setup?: (scope: ScopeEntry[]) => void): void;
10
- export declare function emitStmts(E: CEmitter, stmts: IrStmt[]): void;
11
- export declare function emitStmt(E: CEmitter, s: IrStmt): void;
9
+ export declare function emitBlock(emitter: CEmitter, stmts: IrStmt[], setup?: (scope: ScopeEntry[]) => void): void;
10
+ export declare function emitStmts(emitter: CEmitter, stmts: IrStmt[]): void;
11
+ export declare function emitStmt(emitter: CEmitter, s: IrStmt): void;
12
12
  /** try/catch/finally via pending-flag unwinding. Entering a try emits NO
13
13
  * code: the try context is compile-time state (tryStack) that redirects
14
14
  * unwinds inside the region to a label here instead of out of the
@@ -40,7 +40,7 @@ export declare function emitStmt(E: CEmitter, s: IrStmt): void;
40
40
  * normal, exception, and pending-return are the only paths a finally
41
41
  * must model; jumps out of PLAIN try/catch need nothing here —
42
42
  * release-on-jump already walks the try scopes. */
43
- export declare function emitTryCatch(E: CEmitter, s: IrStmt & {
43
+ export declare function emitTryCatch(emitter: CEmitter, s: IrStmt & {
44
44
  kind: "tryCatch";
45
45
  }): void;
46
46
  /** JS-exact switch as a goto chain — C `switch` cannot express lazily
@@ -61,18 +61,18 @@ export declare function emitTryCatch(E: CEmitter, s: IrStmt & {
61
61
  * it still holds the pointer a previous iteration's scope exit already
62
62
  * released. The declarations are therefore NULL-reset up front; the
63
63
  * scope-exit releases rely on the runtime's NULL-tolerant release calls. */
64
- export declare function emitSwitch(E: CEmitter, s: IrStmt & {
64
+ export declare function emitSwitch(emitter: CEmitter, s: IrStmt & {
65
65
  kind: "switch";
66
66
  }): void;
67
67
  /** Emits `if (cond) ` followed by a block on the same line for readability. */
68
- export declare function mergeBrace(E: CEmitter, emitBlockFn: () => void): void;
68
+ export declare function mergeBrace(emitter: CEmitter, emitBlockFn: () => void): void;
69
69
  /** Evaluates `expr` in its own statement frame inside an already-open
70
70
  * branch and moves the result into the C lvalue `target`: the chosen
71
71
  * value's ownership transfers, every other temp the evaluation allocated
72
72
  * releases inside the branch. The shared core of the lazily-branched
73
73
  * expressions (`logical`, `ternary`); the caller owns the surrounding
74
74
  * braces/indentation and registers `target` in ITS frame. */
75
- export declare function emitBranchInto(E: CEmitter, target: string, expr: IrExpr): void;
75
+ export declare function emitBranchInto(emitter: CEmitter, target: string, expr: IrExpr): void;
76
76
  /** Evaluates a condition; its string temps are released before the branch,
77
77
  * which is safe because the result is a scalar bool. */
78
- export declare function emitCondition(E: CEmitter, cond: IrExpr): string;
78
+ export declare function emitCondition(emitter: CEmitter, cond: IrExpr): string;