@faicad/faijs 0.29.5 → 0.30.9

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 (582) hide show
  1. package/NOTICE +6 -5
  2. package/dist/api/api-namespace.d.ts +1 -1
  3. package/dist/api/api-namespace.d.ts.map +1 -1
  4. package/dist/api/api-namespace.js +53 -1
  5. package/dist/api/api-namespace.js.map +1 -1
  6. package/dist/api/appearance.d.ts +0 -2
  7. package/dist/api/appearance.d.ts.map +1 -1
  8. package/dist/api/appearance.js +0 -2
  9. package/dist/api/appearance.js.map +1 -1
  10. package/dist/api/assembly/entities.d.ts +1 -1
  11. package/dist/api/assembly/entities.js +1 -1
  12. package/dist/api/assembly/entities.js.map +1 -1
  13. package/dist/api/assembly/index.d.ts +1 -1
  14. package/dist/api/assembly/index.js +1 -1
  15. package/dist/api/assembly/index.js.map +1 -1
  16. package/dist/api/assembly/joints.d.ts +33 -15
  17. package/dist/api/assembly/joints.d.ts.map +1 -1
  18. package/dist/api/assembly/joints.js +31 -13
  19. package/dist/api/assembly/joints.js.map +1 -1
  20. package/dist/api/assembly/preview.d.ts +1 -1
  21. package/dist/api/assembly/preview.js +1 -1
  22. package/dist/api/assembly/preview.js.map +1 -1
  23. package/dist/api/assembly/solve.d.ts +1 -1
  24. package/dist/api/assembly/solve.js +1 -1
  25. package/dist/api/assembly/solve.js.map +1 -1
  26. package/dist/api/assembly/solvers/assembly-tree.d.ts +1 -1
  27. package/dist/api/assembly/solvers/assembly-tree.js +1 -1
  28. package/dist/api/assembly/solvers/assembly-tree.js.map +1 -1
  29. package/dist/api/assembly/solvers/chain-solver.d.ts +2 -2
  30. package/dist/api/assembly/solvers/chain-solver.js.map +1 -1
  31. package/dist/api/assembly/solvers/global-solver.d.ts +1 -2
  32. package/dist/api/assembly/solvers/global-solver.d.ts.map +1 -1
  33. package/dist/api/assembly/solvers/global-solver.js +3 -4
  34. package/dist/api/assembly/solvers/global-solver.js.map +1 -1
  35. package/dist/api/assembly/solvers/joints-kinematics.js +1 -1
  36. package/dist/api/assembly/solvers/joints-kinematics.js.map +1 -1
  37. package/dist/api/assembly/solvers/linalg.d.ts +2 -2
  38. package/dist/api/assembly/solvers/linalg.js +2 -2
  39. package/dist/api/assembly/solvers/linalg.js.map +1 -1
  40. package/dist/api/assembly/solvers/types.d.ts +2 -5
  41. package/dist/api/assembly/solvers/types.d.ts.map +1 -1
  42. package/dist/api/assembly/solvers/types.js +1 -4
  43. package/dist/api/assembly/solvers/types.js.map +1 -1
  44. package/dist/api/boolean.d.ts.map +1 -1
  45. package/dist/api/boolean.js +7 -6
  46. package/dist/api/boolean.js.map +1 -1
  47. package/dist/api/brep-mirror/booleanFns.d.ts +3 -3
  48. package/dist/api/brep-mirror/booleanFns.js +5 -5
  49. package/dist/api/brep-mirror/booleanFns.js.map +1 -1
  50. package/dist/api/brep-mirror/compoundFns.d.ts +1 -1
  51. package/dist/api/brep-mirror/compoundFns.js +4 -4
  52. package/dist/api/brep-mirror/compoundFns.js.map +1 -1
  53. package/dist/api/brep-mirror/healingFns.d.ts +4 -4
  54. package/dist/api/brep-mirror/healingFns.js +4 -4
  55. package/dist/api/brep-mirror/healingFns.js.map +1 -1
  56. package/dist/api/brep-mirror/hullFns.d.ts +2 -2
  57. package/dist/api/brep-mirror/hullFns.js +2 -2
  58. package/dist/api/brep-mirror/hullFns.js.map +1 -1
  59. package/dist/api/brep-mirror/patternFns.d.ts +5 -5
  60. package/dist/api/brep-mirror/patternFns.js +10 -10
  61. package/dist/api/brep-mirror/patternFns.js.map +1 -1
  62. package/dist/api/brep-mirror/primitiveFns.d.ts +4 -4
  63. package/dist/api/brep-mirror/primitiveFns.js +4 -4
  64. package/dist/api/brep-mirror/primitiveFns.js.map +1 -1
  65. package/dist/api/brep-mirror/roofFns.d.ts +3 -3
  66. package/dist/api/brep-mirror/roofFns.js +7 -7
  67. package/dist/api/brep-mirror/roofFns.js.map +1 -1
  68. package/dist/api/brep-mirror/sweepFns.d.ts +7 -7
  69. package/dist/api/brep-mirror/sweepFns.js +14 -14
  70. package/dist/api/brep-mirror/sweepFns.js.map +1 -1
  71. package/dist/api/brep-mirror/threadFns.d.ts +1 -1
  72. package/dist/api/brep-mirror/threadFns.js +1 -1
  73. package/dist/api/brep-mirror/threadFns.js.map +1 -1
  74. package/dist/api/brep-mirror/topologyFns.d.ts +5 -5
  75. package/dist/api/brep-mirror/topologyFns.js +8 -8
  76. package/dist/api/brep-mirror/topologyFns.js.map +1 -1
  77. package/dist/api/brep-operations/booleanFns.d.ts +40 -0
  78. package/dist/api/brep-operations/booleanFns.d.ts.map +1 -0
  79. package/dist/api/brep-operations/booleanFns.js +104 -0
  80. package/dist/api/brep-operations/booleanFns.js.map +1 -0
  81. package/dist/api/brep-operations/brepHelpers.d.ts +55 -0
  82. package/dist/api/brep-operations/brepHelpers.d.ts.map +1 -0
  83. package/dist/api/brep-operations/brepHelpers.js +131 -0
  84. package/dist/api/brep-operations/brepHelpers.js.map +1 -0
  85. package/dist/api/brep-operations/compoundFns.d.ts +46 -0
  86. package/dist/api/brep-operations/compoundFns.d.ts.map +1 -0
  87. package/dist/api/brep-operations/compoundFns.js +299 -0
  88. package/dist/api/brep-operations/compoundFns.js.map +1 -0
  89. package/dist/api/brep-operations/healingFns.d.ts +78 -0
  90. package/dist/api/brep-operations/healingFns.d.ts.map +1 -0
  91. package/dist/api/brep-operations/healingFns.js +294 -0
  92. package/dist/api/brep-operations/healingFns.js.map +1 -0
  93. package/dist/api/brep-operations/hullFns.d.ts +20 -0
  94. package/dist/api/brep-operations/hullFns.d.ts.map +1 -0
  95. package/dist/api/brep-operations/hullFns.js +46 -0
  96. package/dist/api/brep-operations/hullFns.js.map +1 -0
  97. package/dist/api/brep-operations/joinery-brep.d.ts +172 -0
  98. package/dist/api/brep-operations/joinery-brep.d.ts.map +1 -0
  99. package/dist/api/brep-operations/joinery-brep.js +463 -0
  100. package/dist/api/brep-operations/joinery-brep.js.map +1 -0
  101. package/dist/api/brep-operations/patternFns.d.ts +43 -0
  102. package/dist/api/brep-operations/patternFns.d.ts.map +1 -0
  103. package/dist/api/brep-operations/patternFns.js +178 -0
  104. package/dist/api/brep-operations/patternFns.js.map +1 -0
  105. package/dist/api/brep-operations/primitiveFns.d.ts +42 -0
  106. package/dist/api/brep-operations/primitiveFns.d.ts.map +1 -0
  107. package/dist/api/brep-operations/primitiveFns.js +104 -0
  108. package/dist/api/brep-operations/primitiveFns.js.map +1 -0
  109. package/dist/api/brep-operations/roofFns.d.ts +24 -0
  110. package/dist/api/brep-operations/roofFns.d.ts.map +1 -0
  111. package/dist/api/brep-operations/roofFns.js +229 -0
  112. package/dist/api/brep-operations/roofFns.js.map +1 -0
  113. package/dist/api/brep-operations/straightSkeleton.d.ts +36 -0
  114. package/dist/api/brep-operations/straightSkeleton.d.ts.map +1 -0
  115. package/dist/api/brep-operations/straightSkeleton.js +431 -0
  116. package/dist/api/brep-operations/straightSkeleton.js.map +1 -0
  117. package/dist/api/brep-operations/sweepFns.d.ts +60 -0
  118. package/dist/api/brep-operations/sweepFns.d.ts.map +1 -0
  119. package/dist/api/brep-operations/sweepFns.js +323 -0
  120. package/dist/api/brep-operations/sweepFns.js.map +1 -0
  121. package/dist/api/brep-operations/threadFns.d.ts +83 -0
  122. package/dist/api/brep-operations/threadFns.d.ts.map +1 -0
  123. package/dist/api/brep-operations/threadFns.js +138 -0
  124. package/dist/api/brep-operations/threadFns.js.map +1 -0
  125. package/dist/api/brep-operations/topologyFns.d.ts +90 -0
  126. package/dist/api/brep-operations/topologyFns.d.ts.map +1 -0
  127. package/dist/api/brep-operations/topologyFns.js +276 -0
  128. package/dist/api/brep-operations/topologyFns.js.map +1 -0
  129. package/dist/api/brep-topology.d.ts +1 -1
  130. package/dist/api/brep-topology.d.ts.map +1 -1
  131. package/dist/api/brep-topology.js +1 -1
  132. package/dist/api/brep-topology.js.map +1 -1
  133. package/dist/api/brepjs-compat/index.d.ts +1 -1
  134. package/dist/api/brepjs-compat/index.js +3 -3
  135. package/dist/api/brepjs-compat/index.js.map +1 -1
  136. package/dist/api/cadquery-selectors/borrow-bridge.d.ts.map +1 -1
  137. package/dist/api/cadquery-selectors/borrow-bridge.js +3 -4
  138. package/dist/api/cadquery-selectors/borrow-bridge.js.map +1 -1
  139. package/dist/api/curve-sketch/index.d.ts +235 -0
  140. package/dist/api/curve-sketch/index.d.ts.map +1 -0
  141. package/dist/api/curve-sketch/index.js +487 -0
  142. package/dist/api/curve-sketch/index.js.map +1 -0
  143. package/dist/api/engrave.d.ts.map +1 -1
  144. package/dist/api/engrave.js +3 -2
  145. package/dist/api/engrave.js.map +1 -1
  146. package/dist/api/export-brep.d.ts +41 -0
  147. package/dist/api/export-brep.d.ts.map +1 -0
  148. package/dist/api/export-brep.js +58 -0
  149. package/dist/api/export-brep.js.map +1 -0
  150. package/dist/api/export-stl.d.ts +50 -0
  151. package/dist/api/export-stl.d.ts.map +1 -0
  152. package/dist/api/export-stl.js +99 -0
  153. package/dist/api/export-stl.js.map +1 -0
  154. package/dist/api/extrude.d.ts +8 -11
  155. package/dist/api/extrude.d.ts.map +1 -1
  156. package/dist/api/extrude.js +11 -14
  157. package/dist/api/extrude.js.map +1 -1
  158. package/dist/api/fillet-variable.d.ts +2 -2
  159. package/dist/api/fillet-variable.js +2 -2
  160. package/dist/api/fillet-variable.js.map +1 -1
  161. package/dist/api/fillet.d.ts +2 -4
  162. package/dist/api/fillet.d.ts.map +1 -1
  163. package/dist/api/fillet.js +2 -4
  164. package/dist/api/fillet.js.map +1 -1
  165. package/dist/api/generated/2d.d.ts +4 -0
  166. package/dist/api/generated/2d.d.ts.map +1 -1
  167. package/dist/api/generated/2d.js +4 -0
  168. package/dist/api/generated/2d.js.map +1 -1
  169. package/dist/api/generated/core.d.ts +4 -0
  170. package/dist/api/generated/core.d.ts.map +1 -1
  171. package/dist/api/generated/core.js +4 -0
  172. package/dist/api/generated/core.js.map +1 -1
  173. package/dist/api/generated/gear.d.ts +4 -0
  174. package/dist/api/generated/gear.d.ts.map +1 -1
  175. package/dist/api/generated/gear.js +4 -0
  176. package/dist/api/generated/gear.js.map +1 -1
  177. package/dist/api/generated/io.d.ts +4 -0
  178. package/dist/api/generated/io.d.ts.map +1 -1
  179. package/dist/api/generated/io.js +4 -0
  180. package/dist/api/generated/io.js.map +1 -1
  181. package/dist/api/generated/kernel.d.ts +4 -0
  182. package/dist/api/generated/kernel.d.ts.map +1 -1
  183. package/dist/api/generated/kernel.js +4 -0
  184. package/dist/api/generated/kernel.js.map +1 -1
  185. package/dist/api/generated/measurement.d.ts +21 -21
  186. package/dist/api/generated/measurement.d.ts.map +1 -1
  187. package/dist/api/generated/measurement.js +25 -21
  188. package/dist/api/generated/measurement.js.map +1 -1
  189. package/dist/api/generated/ns.d.ts +4 -0
  190. package/dist/api/generated/ns.d.ts.map +1 -1
  191. package/dist/api/generated/ns.js +4 -0
  192. package/dist/api/generated/ns.js.map +1 -1
  193. package/dist/api/generated/operations.d.ts +32 -32
  194. package/dist/api/generated/operations.d.ts.map +1 -1
  195. package/dist/api/generated/operations.js +52 -48
  196. package/dist/api/generated/operations.js.map +1 -1
  197. package/dist/api/generated/projection.d.ts +4 -0
  198. package/dist/api/generated/projection.d.ts.map +1 -1
  199. package/dist/api/generated/projection.js +4 -0
  200. package/dist/api/generated/projection.js.map +1 -1
  201. package/dist/api/generated/query.d.ts +4 -0
  202. package/dist/api/generated/query.d.ts.map +1 -1
  203. package/dist/api/generated/query.js +4 -0
  204. package/dist/api/generated/query.js.map +1 -1
  205. package/dist/api/generated/sketching.d.ts +2 -2
  206. package/dist/api/generated/sketching.d.ts.map +1 -1
  207. package/dist/api/generated/sketching.js +7 -3
  208. package/dist/api/generated/sketching.js.map +1 -1
  209. package/dist/api/generated/text.d.ts +4 -0
  210. package/dist/api/generated/text.d.ts.map +1 -1
  211. package/dist/api/generated/text.js +4 -0
  212. package/dist/api/generated/text.js.map +1 -1
  213. package/dist/api/generated/topology.d.ts +45 -45
  214. package/dist/api/generated/topology.d.ts.map +1 -1
  215. package/dist/api/generated/topology.js +67 -63
  216. package/dist/api/generated/topology.js.map +1 -1
  217. package/dist/api/generated/view.d.ts +4 -0
  218. package/dist/api/generated/view.d.ts.map +1 -1
  219. package/dist/api/generated/view.js +4 -0
  220. package/dist/api/generated/view.js.map +1 -1
  221. package/dist/api/geom-types/constants.d.ts +11 -0
  222. package/dist/api/geom-types/constants.d.ts.map +1 -0
  223. package/dist/api/geom-types/constants.js +11 -0
  224. package/dist/api/geom-types/constants.js.map +1 -0
  225. package/dist/api/geom-types/index.d.ts +21 -0
  226. package/dist/api/geom-types/index.d.ts.map +1 -0
  227. package/dist/api/geom-types/index.js +22 -0
  228. package/dist/api/geom-types/index.js.map +1 -0
  229. package/dist/api/geom-types/planeOps.d.ts +98 -0
  230. package/dist/api/geom-types/planeOps.d.ts.map +1 -0
  231. package/dist/api/geom-types/planeOps.js +170 -0
  232. package/dist/api/geom-types/planeOps.js.map +1 -0
  233. package/dist/api/geom-types/planeTypes.d.ts +24 -0
  234. package/dist/api/geom-types/planeTypes.d.ts.map +1 -0
  235. package/dist/api/geom-types/planeTypes.js +8 -0
  236. package/dist/api/geom-types/planeTypes.js.map +1 -0
  237. package/dist/api/geom-types/types.d.ts +64 -0
  238. package/dist/api/geom-types/types.d.ts.map +1 -0
  239. package/dist/api/geom-types/types.js +48 -0
  240. package/dist/api/geom-types/types.js.map +1 -0
  241. package/dist/api/geom-types/vecOps.d.ts +124 -0
  242. package/dist/api/geom-types/vecOps.d.ts.map +1 -0
  243. package/dist/api/geom-types/vecOps.js +202 -0
  244. package/dist/api/geom-types/vecOps.js.map +1 -0
  245. package/dist/api/geom.d.ts.map +1 -1
  246. package/dist/api/geom.js +6 -5
  247. package/dist/api/geom.js.map +1 -1
  248. package/dist/api/half-space.d.ts +56 -0
  249. package/dist/api/half-space.d.ts.map +1 -0
  250. package/dist/api/half-space.js +82 -0
  251. package/dist/api/half-space.js.map +1 -0
  252. package/dist/api/helix.d.ts +10 -1
  253. package/dist/api/helix.d.ts.map +1 -1
  254. package/dist/api/helix.js +19 -3
  255. package/dist/api/helix.js.map +1 -1
  256. package/dist/api/index.d.ts +15 -6
  257. package/dist/api/index.d.ts.map +1 -1
  258. package/dist/api/index.js +29 -8
  259. package/dist/api/index.js.map +1 -1
  260. package/dist/api/internal/compat-op.d.ts +4 -30
  261. package/dist/api/internal/compat-op.d.ts.map +1 -1
  262. package/dist/api/internal/compat-op.js +10 -42
  263. package/dist/api/internal/compat-op.js.map +1 -1
  264. package/dist/api/internal/compat-projection.d.ts +5 -5
  265. package/dist/api/internal/compat-projection.js +5 -5
  266. package/dist/api/internal/compat-projection.js.map +1 -1
  267. package/dist/api/internal/dual-form-args.d.ts +0 -2
  268. package/dist/api/internal/dual-form-args.d.ts.map +1 -1
  269. package/dist/api/internal/dual-form-args.js +1 -3
  270. package/dist/api/internal/dual-form-args.js.map +1 -1
  271. package/dist/api/internal/l3-bridge.d.ts +5 -37
  272. package/dist/api/internal/l3-bridge.d.ts.map +1 -1
  273. package/dist/api/internal/l3-bridge.js +7 -76
  274. package/dist/api/internal/l3-bridge.js.map +1 -1
  275. package/dist/api/internal/profile-wire.d.ts +1 -1
  276. package/dist/api/internal/profile-wire.js +1 -1
  277. package/dist/api/internal/profile-wire.js.map +1 -1
  278. package/dist/api/internal/result-unwrap.d.ts +4 -6
  279. package/dist/api/internal/result-unwrap.d.ts.map +1 -1
  280. package/dist/api/internal/result-unwrap.js +4 -6
  281. package/dist/api/internal/result-unwrap.js.map +1 -1
  282. package/dist/api/knurl.d.ts.map +1 -1
  283. package/dist/api/knurl.js +5 -3
  284. package/dist/api/knurl.js.map +1 -1
  285. package/dist/api/loft.d.ts +2 -2
  286. package/dist/api/loft.d.ts.map +1 -1
  287. package/dist/api/loft.js +2 -2
  288. package/dist/api/loft.js.map +1 -1
  289. package/dist/api/measurement/index.d.ts +3 -3
  290. package/dist/api/measurement/index.js +3 -3
  291. package/dist/api/measurement/index.js.map +1 -1
  292. package/dist/api/meta.d.ts +0 -2
  293. package/dist/api/meta.d.ts.map +1 -1
  294. package/dist/api/meta.js +0 -2
  295. package/dist/api/meta.js.map +1 -1
  296. package/dist/api/offset2d.d.ts +49 -0
  297. package/dist/api/offset2d.d.ts.map +1 -0
  298. package/dist/api/offset2d.js +86 -0
  299. package/dist/api/offset2d.js.map +1 -0
  300. package/dist/api/pattern.js +3 -3
  301. package/dist/api/pattern.js.map +1 -1
  302. package/dist/api/primitives.d.ts.map +1 -1
  303. package/dist/api/primitives.js +7 -6
  304. package/dist/api/primitives.js.map +1 -1
  305. package/dist/api/replicate.d.ts +2 -2
  306. package/dist/api/replicate.d.ts.map +1 -1
  307. package/dist/api/replicate.js +12 -12
  308. package/dist/api/replicate.js.map +1 -1
  309. package/dist/api/result.d.ts +1 -1
  310. package/dist/api/result.js +1 -1
  311. package/dist/api/result.js.map +1 -1
  312. package/dist/api/revolve.d.ts +2 -2
  313. package/dist/api/revolve.js +3 -3
  314. package/dist/api/revolve.js.map +1 -1
  315. package/dist/api/screw.d.ts +1 -1
  316. package/dist/api/screw.d.ts.map +1 -1
  317. package/dist/api/screw.js +5 -4
  318. package/dist/api/screw.js.map +1 -1
  319. package/dist/api/sdf.d.ts.map +1 -1
  320. package/dist/api/sdf.js +3 -2
  321. package/dist/api/sdf.js.map +1 -1
  322. package/dist/api/shape-type/index.d.ts +141 -0
  323. package/dist/api/shape-type/index.d.ts.map +1 -0
  324. package/dist/api/shape-type/index.js +182 -0
  325. package/dist/api/shape-type/index.js.map +1 -0
  326. package/dist/api/shell.d.ts +2 -2
  327. package/dist/api/shell.js +2 -2
  328. package/dist/api/shell.js.map +1 -1
  329. package/dist/api/solid-from-faces.d.ts +45 -0
  330. package/dist/api/solid-from-faces.d.ts.map +1 -0
  331. package/dist/api/solid-from-faces.js +72 -0
  332. package/dist/api/solid-from-faces.js.map +1 -0
  333. package/dist/api/solid-offset/index.d.ts +67 -0
  334. package/dist/api/solid-offset/index.d.ts.map +1 -0
  335. package/dist/api/solid-offset/index.js +132 -0
  336. package/dist/api/solid-offset/index.js.map +1 -0
  337. package/dist/api/surface/arg-spec.d.ts +35 -33
  338. package/dist/api/surface/arg-spec.d.ts.map +1 -1
  339. package/dist/api/surface/arg-spec.js +222 -224
  340. package/dist/api/surface/arg-spec.js.map +1 -1
  341. package/dist/api/surface-face/index.d.ts +104 -0
  342. package/dist/api/surface-face/index.d.ts.map +1 -0
  343. package/dist/api/surface-face/index.js +217 -0
  344. package/dist/api/surface-face/index.js.map +1 -0
  345. package/dist/api/surface.d.ts +44 -0
  346. package/dist/api/surface.d.ts.map +1 -0
  347. package/dist/api/surface.js +66 -0
  348. package/dist/api/surface.js.map +1 -0
  349. package/dist/api/sweep.d.ts +59 -9
  350. package/dist/api/sweep.d.ts.map +1 -1
  351. package/dist/api/sweep.js +11 -6
  352. package/dist/api/sweep.js.map +1 -1
  353. package/dist/api/thicken.d.ts +1 -1
  354. package/dist/api/thicken.js +1 -1
  355. package/dist/api/thicken.js.map +1 -1
  356. package/dist/api/transform.d.ts +5 -5
  357. package/dist/api/transform.d.ts.map +1 -1
  358. package/dist/api/transform.js +11 -10
  359. package/dist/api/transform.js.map +1 -1
  360. package/dist/api/view/cameraFns.d.ts +1 -1
  361. package/dist/api/view/cameraFns.d.ts.map +1 -1
  362. package/dist/api/view/cameraFns.js +1 -1
  363. package/dist/api/view/cameraFns.js.map +1 -1
  364. package/dist/api/view/index.d.ts +0 -2
  365. package/dist/api/view/index.d.ts.map +1 -1
  366. package/dist/api/view/index.js +0 -2
  367. package/dist/api/view/index.js.map +1 -1
  368. package/dist/api/view/projectionPlanes.d.ts +1 -1
  369. package/dist/api/view/projectionPlanes.d.ts.map +1 -1
  370. package/dist/api/view/projectionPlanes.js.map +1 -1
  371. package/dist/api/view/view-camera.d.ts +7 -9
  372. package/dist/api/view/view-camera.d.ts.map +1 -1
  373. package/dist/api/view/view-camera.js +4 -6
  374. package/dist/api/view/view-camera.js.map +1 -1
  375. package/dist/api/view/view-projection.d.ts +0 -2
  376. package/dist/api/view/view-projection.d.ts.map +1 -1
  377. package/dist/api/view/view-projection.js +0 -2
  378. package/dist/api/view/view-projection.js.map +1 -1
  379. package/dist/api/view/view-sheet.d.ts +0 -2
  380. package/dist/api/view/view-sheet.d.ts.map +1 -1
  381. package/dist/api/view/view-sheet.js +0 -2
  382. package/dist/api/view/view-sheet.js.map +1 -1
  383. package/dist/api/view-export/index.d.ts +97 -0
  384. package/dist/api/view-export/index.d.ts.map +1 -0
  385. package/dist/api/view-export/index.js +118 -0
  386. package/dist/api/view-export/index.js.map +1 -0
  387. package/dist/brep/brep-ops.d.ts +89 -1
  388. package/dist/brep/brep-ops.d.ts.map +1 -1
  389. package/dist/brep/brep-ops.js +176 -10
  390. package/dist/brep/brep-ops.js.map +1 -1
  391. package/dist/brep/brep-topology.d.ts +20 -0
  392. package/dist/brep/brep-topology.d.ts.map +1 -1
  393. package/dist/brep/brep-topology.js +46 -0
  394. package/dist/brep/brep-topology.js.map +1 -1
  395. package/dist/brep/engine/adapters/occt.d.ts +1 -1
  396. package/dist/brep/engine/adapters/occt.js +7 -7
  397. package/dist/brep/engine/adapters/occt.js.map +1 -1
  398. package/dist/brep/engine/primitives.d.ts +2 -3
  399. package/dist/brep/engine/primitives.d.ts.map +1 -1
  400. package/dist/brep/engine/primitives.js +1 -2
  401. package/dist/brep/engine/primitives.js.map +1 -1
  402. package/dist/brep/engine/registry.d.ts +1 -1
  403. package/dist/brep/engine/registry.js +1 -1
  404. package/dist/brep/engine/registry.js.map +1 -1
  405. package/dist/brep/engine/types.d.ts +2 -2
  406. package/dist/brep/engine/types.js.map +1 -1
  407. package/dist/brep/handle-bridge.d.ts +2 -2
  408. package/dist/brep/handle-bridge.js +2 -2
  409. package/dist/brep/handle-bridge.js.map +1 -1
  410. package/dist/brep/index.d.ts +6 -3
  411. package/dist/brep/index.d.ts.map +1 -1
  412. package/dist/brep/index.js +6 -3
  413. package/dist/brep/index.js.map +1 -1
  414. package/dist/brepkit-kernel/brepkitKernel.d.ts +1 -1
  415. package/dist/brepkit-kernel/brepkitKernel.js +2 -2
  416. package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
  417. package/dist/browser.d.ts +2 -2
  418. package/dist/browser.d.ts.map +1 -1
  419. package/dist/browser.js +5 -4
  420. package/dist/browser.js.map +1 -1
  421. package/dist/cad-runtime/admit-compat-lib.d.ts +3 -10
  422. package/dist/cad-runtime/admit-compat-lib.d.ts.map +1 -1
  423. package/dist/cad-runtime/admit-compat-lib.js +3 -9
  424. package/dist/cad-runtime/admit-compat-lib.js.map +1 -1
  425. package/dist/cad-runtime/backend-dispatch.js +12 -3
  426. package/dist/cad-runtime/backend-dispatch.js.map +1 -1
  427. package/dist/cad-runtime/direct-executor.d.ts +6 -3
  428. package/dist/cad-runtime/direct-executor.d.ts.map +1 -1
  429. package/dist/cad-runtime/direct-executor.js +31 -9
  430. package/dist/cad-runtime/direct-executor.js.map +1 -1
  431. package/dist/cad-runtime/interp/env.d.ts +1 -1
  432. package/dist/cad-runtime/interp/env.js.map +1 -1
  433. package/dist/cad-runtime/lib-id.d.ts +0 -2
  434. package/dist/cad-runtime/lib-id.d.ts.map +1 -1
  435. package/dist/cad-runtime/lib-id.js +0 -2
  436. package/dist/cad-runtime/lib-id.js.map +1 -1
  437. package/dist/cad-runtime/live-shapes.d.ts +3 -5
  438. package/dist/cad-runtime/live-shapes.d.ts.map +1 -1
  439. package/dist/cad-runtime/live-shapes.js +8 -10
  440. package/dist/cad-runtime/live-shapes.js.map +1 -1
  441. package/dist/cad-runtime/ports.d.ts +3 -3
  442. package/dist/cad-runtime/ports.js.map +1 -1
  443. package/dist/cad-runtime/runtime.d.ts +21 -7
  444. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  445. package/dist/cad-runtime/runtime.js +45 -6
  446. package/dist/cad-runtime/runtime.js.map +1 -1
  447. package/dist/define-op.d.ts +4 -3
  448. package/dist/define-op.d.ts.map +1 -1
  449. package/dist/define-op.js +2 -2
  450. package/dist/define-op.js.map +1 -1
  451. package/dist/geometry2d/bridge/plane.d.ts +1 -1
  452. package/dist/geometry2d/bridge/plane.js +1 -1
  453. package/dist/geometry2d/bridge/plane.js.map +1 -1
  454. package/dist/geometry2d/curve2d.d.ts +1 -1
  455. package/dist/geometry2d/curve2d.js +1 -1
  456. package/dist/geometry2d/curve2d.js.map +1 -1
  457. package/dist/index.d.ts +1 -1
  458. package/dist/index.d.ts.map +1 -1
  459. package/dist/index.js +10 -4
  460. package/dist/index.js.map +1 -1
  461. package/dist/io/fai-zip/container-read.d.ts +16 -0
  462. package/dist/io/fai-zip/container-read.d.ts.map +1 -1
  463. package/dist/io/fai-zip/container-read.js +22 -0
  464. package/dist/io/fai-zip/container-read.js.map +1 -1
  465. package/dist/io/fai-zip/index.d.ts +1 -1
  466. package/dist/io/fai-zip/index.d.ts.map +1 -1
  467. package/dist/io/fai-zip/index.js +1 -1
  468. package/dist/io/fai-zip/index.js.map +1 -1
  469. package/dist/lang/code-to-args.d.ts.map +1 -1
  470. package/dist/lang/code-to-args.js +10 -1
  471. package/dist/lang/code-to-args.js.map +1 -1
  472. package/dist/lang/determinism-scanner.d.ts.map +1 -1
  473. package/dist/lang/determinism-scanner.js +22 -9
  474. package/dist/lang/determinism-scanner.js.map +1 -1
  475. package/dist/lang/metadata-extractor.d.ts +27 -6
  476. package/dist/lang/metadata-extractor.d.ts.map +1 -1
  477. package/dist/lang/metadata-extractor.js +88 -8
  478. package/dist/lang/metadata-extractor.js.map +1 -1
  479. package/dist/lang/parse-error.d.ts +4 -0
  480. package/dist/lang/parse-error.d.ts.map +1 -1
  481. package/dist/lang/parse-error.js.map +1 -1
  482. package/dist/lang/security-scanner.d.ts +27 -2
  483. package/dist/lang/security-scanner.d.ts.map +1 -1
  484. package/dist/lang/security-scanner.js +29 -2
  485. package/dist/lang/security-scanner.js.map +1 -1
  486. package/dist/lang/source-edit.d.ts +2 -2
  487. package/dist/lang/source-edit.js.map +1 -1
  488. package/dist/lang/symbol-table.generated.d.ts +36 -0
  489. package/dist/lang/symbol-table.generated.d.ts.map +1 -1
  490. package/dist/lang/symbol-table.generated.js +36 -0
  491. package/dist/lang/symbol-table.generated.js.map +1 -1
  492. package/dist/mesh/import-model.d.ts +94 -0
  493. package/dist/mesh/import-model.d.ts.map +1 -0
  494. package/dist/mesh/import-model.js +15 -0
  495. package/dist/mesh/import-model.js.map +1 -0
  496. package/dist/mesh/index.d.ts +19 -58
  497. package/dist/mesh/index.d.ts.map +1 -1
  498. package/dist/mesh/index.js +19 -70
  499. package/dist/mesh/index.js.map +1 -1
  500. package/dist/mesh/io.d.ts +33 -16
  501. package/dist/mesh/io.d.ts.map +1 -1
  502. package/dist/mesh/io.js +144 -39
  503. package/dist/mesh/io.js.map +1 -1
  504. package/dist/mesh/primitives.js +1 -1
  505. package/dist/mesh/primitives.js.map +1 -1
  506. package/dist/mesh/threemf-bambu.d.ts +12 -1
  507. package/dist/mesh/threemf-bambu.d.ts.map +1 -1
  508. package/dist/mesh/threemf-bambu.js +68 -16
  509. package/dist/mesh/threemf-bambu.js.map +1 -1
  510. package/dist/mesh/threemf-loader.d.ts +14 -1
  511. package/dist/mesh/threemf-loader.d.ts.map +1 -1
  512. package/dist/mesh/threemf-loader.js +24 -7
  513. package/dist/mesh/threemf-loader.js.map +1 -1
  514. package/dist/mesh/transform.d.ts +1 -1
  515. package/dist/mesh/transform.js +1 -1
  516. package/dist/mesh/transform.js.map +1 -1
  517. package/dist/mesh/types.d.ts +5 -5
  518. package/dist/mesh/types.d.ts.map +1 -1
  519. package/dist/mesh/types.js.map +1 -1
  520. package/dist/node-host/cli.d.ts +49 -1
  521. package/dist/node-host/cli.d.ts.map +1 -1
  522. package/dist/node-host/cli.js +125 -19
  523. package/dist/node-host/cli.js.map +1 -1
  524. package/dist/node-host/execute-script.d.ts +55 -0
  525. package/dist/node-host/execute-script.d.ts.map +1 -0
  526. package/dist/node-host/execute-script.js +46 -0
  527. package/dist/node-host/execute-script.js.map +1 -0
  528. package/dist/node.d.ts +2 -0
  529. package/dist/node.d.ts.map +1 -1
  530. package/dist/node.js +3 -0
  531. package/dist/node.js.map +1 -1
  532. package/dist/occt-kernel/generated/occtPlatform.generated.d.ts +260 -0
  533. package/dist/occt-kernel/generated/occtPlatform.generated.d.ts.map +1 -0
  534. package/dist/occt-kernel/generated/occtPlatform.generated.js +875 -0
  535. package/dist/occt-kernel/generated/occtPlatform.generated.js.map +1 -0
  536. package/dist/occt-kernel/hullGeometry.d.ts +2 -2
  537. package/dist/occt-kernel/hullGeometry.js +2 -3
  538. package/dist/occt-kernel/hullGeometry.js.map +1 -1
  539. package/dist/occt-kernel/hullOps.d.ts +3 -3
  540. package/dist/occt-kernel/hullOps.js +4 -4
  541. package/dist/occt-kernel/hullOps.js.map +1 -1
  542. package/dist/occt-kernel/occt-primitives.d.ts.map +1 -1
  543. package/dist/occt-kernel/occt-primitives.js +31 -4
  544. package/dist/occt-kernel/occt-primitives.js.map +1 -1
  545. package/dist/occt-kernel/occtKernel.d.ts.map +1 -1
  546. package/dist/occt-kernel/occtKernel.js +18 -0
  547. package/dist/occt-kernel/occtKernel.js.map +1 -1
  548. package/dist/occt-scan/recognize.d.ts +58 -0
  549. package/dist/occt-scan/recognize.d.ts.map +1 -0
  550. package/dist/occt-scan/recognize.js +216 -0
  551. package/dist/occt-scan/recognize.js.map +1 -0
  552. package/dist/primitives/brep-primitives.js +7 -7
  553. package/dist/primitives/brep-primitives.js.map +1 -1
  554. package/dist/result/bug.d.ts +1 -1
  555. package/dist/result/bug.js +1 -1
  556. package/dist/result/bug.js.map +1 -1
  557. package/dist/result/errors.d.ts +2 -2
  558. package/dist/result/errors.d.ts.map +1 -1
  559. package/dist/result/errors.js +1 -1
  560. package/dist/result/errors.js.map +1 -1
  561. package/dist/result/vec3.d.ts +1 -1
  562. package/dist/result/vec3.js +1 -1
  563. package/dist/result/vec3.js.map +1 -1
  564. package/dist/runtime-state.d.ts +16 -0
  565. package/dist/runtime-state.d.ts.map +1 -1
  566. package/dist/runtime-state.js +27 -0
  567. package/dist/runtime-state.js.map +1 -1
  568. package/dist/script-globals.d.ts +24 -0
  569. package/dist/script-globals.d.ts.map +1 -0
  570. package/dist/script-globals.js +24 -0
  571. package/dist/script-globals.js.map +1 -0
  572. package/dist/shape.d.ts +24 -0
  573. package/dist/shape.d.ts.map +1 -1
  574. package/dist/shape.js +40 -0
  575. package/dist/shape.js.map +1 -1
  576. package/dist/topology/naming/lineage.d.ts +3 -2
  577. package/dist/topology/naming/lineage.d.ts.map +1 -1
  578. package/dist/topology/naming/lineage.js.map +1 -1
  579. package/dist/weapp.d.ts +1 -1
  580. package/dist/weapp.js +1 -1
  581. package/dist/weapp.js.map +1 -1
  582. package/package.json +8 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"occtPlatform.generated.js","sourceRoot":"","sources":["../../../src/occt-kernel/generated/occtPlatform.generated.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,oCAAoC;AACpC,2BAA2B;AAC3B,uCAAuC;AACvC,wDAAwD;AACxD,EAAE;AACF,gDAAgD;AAChD,0DAA0D;AAC1D,gCAAgC;AAChC,EAAE;AACF,wCAAwC;AACxC,uCAAuC;AACvC,wCAAwC;AAGxC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAyP9H;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAkB;IACnD,MAAM,GAAG,GAAoD,EAAE,CAAA;IAE/D,mCAAmC;IACnC,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,IAAe;QACxC,OAAQ,MAAM,CAAC,OAA4C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjF,CAAC,CAAA;IAED,8CAA8C;IAC9C,GAAG,CAAC,kBAAkB,GAAG,UAAU,GAAG,IAAe;QACnD,OAAQ,MAAM,CAAC,kBAAuD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5F,CAAC,CAAA;IAED,wCAAwC;IACxC,GAAG,CAAC,YAAY,GAAG,UAAU,GAAG,IAAe;QAC7C,OAAQ,MAAM,CAAC,YAAiD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACtF,CAAC,CAAA;IAED,sCAAsC;IACtC,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,IAAe;QAC3C,OAAQ,MAAM,CAAC,UAA+C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACpF,CAAC,CAAA;IAED,oCAAoC;IACpC,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAe;QACzC,OAAQ,MAAM,CAAC,QAA6C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAClF,CAAC,CAAA;IAED,qCAAqC;IACrC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAA8C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnF,CAAC,CAAA;IAED,qCAAqC;IACrC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAA8C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnF,CAAC,CAAA;IAED,yCAAyC;IACzC,GAAG,CAAC,aAAa,GAAG,UAAU,GAAG,IAAe;QAC9C,OAAQ,MAAM,CAAC,aAAkD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvF,CAAC,CAAA;IAED,yCAAyC;IACzC,GAAG,CAAC,aAAa,GAAG,UAAU,GAAG,IAAe;QAC9C,OAAQ,MAAM,CAAC,aAAkD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvF,CAAC,CAAA;IAED,gCAAgC;IAChC,GAAG,CAAC,IAAI,GAAG,UAAU,GAAG,IAAe;QACrC,OAAQ,MAAM,CAAC,IAAyC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9E,CAAC,CAAA;IAED,+BAA+B;IAC/B,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,IAAe;QACpC,OAAQ,MAAM,CAAC,GAAwC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7E,CAAC,CAAA;IAED,kCAAkC;IAClC,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,IAAe;QACvC,OAAQ,MAAM,CAAC,MAA2C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChF,CAAC,CAAA;IAED,qCAAqC;IACrC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAA8C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnF,CAAC,CAAA;IAED,mCAAmC;IACnC,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,IAAe;QACxC,OAAQ,MAAM,CAAC,OAA4C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjF,CAAC,CAAA;IAED,wCAAwC;IACxC,GAAG,CAAC,YAAY,GAAG,UAAU,GAAG,IAAe;QAC7C,OAAQ,MAAM,CAAC,YAAiD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACtF,CAAC,CAAA;IAED,mCAAmC;IACnC,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,IAAe;QACxC,OAAQ,MAAM,CAAC,OAA4C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjF,CAAC,CAAA;IAED,kCAAkC;IAClC,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,IAAe;QACvC,OAAQ,MAAM,CAAC,MAA2C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChF,CAAC,CAAA;IAED,iCAAiC;IACjC,GAAG,CAAC,KAAK,GAAG,UAAU,GAAG,IAAe;QACtC,OAAQ,MAAM,CAAC,KAA0C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC/E,CAAC,CAAA;IAED,6CAA6C;IAC7C,GAAG,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAe;QAClD,OAAQ,MAAM,CAAC,iBAAsD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3F,CAAC,CAAA;IAED,mCAAmC;IACnC,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,IAAe;QACxC,OAAQ,MAAM,CAAC,OAA4C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjF,CAAC,CAAA;IAED,mCAAmC;IACnC,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,IAAe;QACxC,OAAQ,MAAM,CAAC,OAA4C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjF,CAAC,CAAA;IAED,kCAAkC;IAClC,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,IAAe;QACvC,OAAQ,MAAM,CAAC,MAA2C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChF,CAAC,CAAA;IAED,mCAAmC;IACnC,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,IAAe;QACxC,OAAQ,MAAM,CAAC,OAA4C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjF,CAAC,CAAA;IAED,4CAA4C;IAC5C,GAAG,CAAC,gBAAgB,GAAG,UAAU,GAAG,IAAe;QACjD,OAAQ,MAAM,CAAC,gBAAqD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC1F,CAAC,CAAA;IAED,6CAA6C;IAC7C,GAAG,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAe;QAClD,OAAQ,MAAM,CAAC,iBAAsD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3F,CAAC,CAAA;IAED,iCAAiC;IACjC,GAAG,CAAC,KAAK,GAAG,UAAU,GAAG,IAAe;QACtC,OAAQ,MAAM,CAAC,KAA0C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC/E,CAAC,CAAA;IAED,kCAAkC;IAClC,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,IAAe;QACvC,OAAQ,MAAM,CAAC,MAA2C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChF,CAAC,CAAA;IAED,iCAAiC;IACjC,GAAG,CAAC,KAAK,GAAG,UAAU,GAAG,IAAe;QACtC,OAAQ,MAAM,CAAC,KAA0C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC/E,CAAC,CAAA;IAED,gCAAgC;IAChC,GAAG,CAAC,IAAI,GAAG,UAAU,GAAG,IAAe;QACrC,OAAQ,MAAM,CAAC,IAAyC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9E,CAAC,CAAA;IAED,sCAAsC;IACtC,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,IAAe;QAC3C,OAAQ,MAAM,CAAC,UAA+C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACpF,CAAC,CAAA;IAED,gCAAgC;IAChC,GAAG,CAAC,IAAI,GAAG,UAAU,GAAG,IAAe;QACrC,OAAQ,MAAM,CAAC,IAAyC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9E,CAAC,CAAA;IAED,4CAA4C;IAC5C,GAAG,CAAC,gBAAgB,GAAG,UAAU,GAAG,IAAe;QACjD,OAAQ,MAAM,CAAC,gBAAqD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC1F,CAAC,CAAA;IAED,iCAAiC;IACjC,GAAG,CAAC,KAAK,GAAG,UAAU,GAAG,IAAe;QACtC,OAAQ,MAAM,CAAC,KAA0C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC/E,CAAC,CAAA;IAED,0CAA0C;IAC1C,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAAmD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxF,CAAC,CAAA;IAED,yCAAyC;IACzC,GAAG,CAAC,aAAa,GAAG,UAAU,GAAG,IAAe;QAC9C,OAAQ,MAAM,CAAC,aAAkD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvF,CAAC,CAAA;IAED,yCAAyC;IACzC,GAAG,CAAC,aAAa,GAAG,UAAU,GAAG,IAAe;QAC9C,OAAQ,MAAM,CAAC,aAAkD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvF,CAAC,CAAA;IAED,qCAAqC;IACrC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAA8C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnF,CAAC,CAAA;IAED,sCAAsC;IACtC,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,IAAe;QAC3C,OAAQ,MAAM,CAAC,UAA+C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACpF,CAAC,CAAA;IAED,sCAAsC;IACtC,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,IAAe;QAC3C,OAAQ,MAAM,CAAC,UAA+C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACpF,CAAC,CAAA;IAED,oCAAoC;IACpC,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAe;QACzC,OAAQ,MAAM,CAAC,QAA6C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAClF,CAAC,CAAA;IAED,wCAAwC;IACxC,GAAG,CAAC,YAAY,GAAG,UAAU,GAAG,IAAe;QAC7C,OAAQ,MAAM,CAAC,YAAiD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACtF,CAAC,CAAA;IAED,0CAA0C;IAC1C,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAAmD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxF,CAAC,CAAA;IAED,yCAAyC;IACzC,GAAG,CAAC,aAAa,GAAG,UAAU,GAAG,IAAe;QAC9C,OAAQ,MAAM,CAAC,aAAkD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvF,CAAC,CAAA;IAED,uCAAuC;IACvC,GAAG,CAAC,WAAW,GAAG,UAAU,GAAG,IAAe;QAC5C,OAAQ,MAAM,CAAC,WAAgD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACrF,CAAC,CAAA;IAED,2CAA2C;IAC3C,GAAG,CAAC,eAAe,GAAG,UAAU,GAAG,IAAe;QAChD,OAAQ,MAAM,CAAC,eAAoD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACzF,CAAC,CAAA;IAED,0CAA0C;IAC1C,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAAmD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxF,CAAC,CAAA;IAED,0CAA0C;IAC1C,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAAmD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxF,CAAC,CAAA;IAED,2CAA2C;IAC3C,GAAG,CAAC,eAAe,GAAG,UAAU,GAAG,IAAe;QAChD,OAAQ,MAAM,CAAC,eAAoD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACzF,CAAC,CAAA;IAED,0CAA0C;IAC1C,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAAmD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxF,CAAC,CAAA;IAED,yCAAyC;IACzC,GAAG,CAAC,aAAa,GAAG,UAAU,GAAG,IAAe;QAC9C,OAAQ,MAAM,CAAC,aAAkD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvF,CAAC,CAAA;IAED,+CAA+C;IAC/C,GAAG,CAAC,mBAAmB,GAAG,UAAU,GAAG,IAAe;QACpD,OAAQ,MAAM,CAAC,mBAAwD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7F,CAAC,CAAA;IAED,oCAAoC;IACpC,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAe;QACzC,OAAQ,MAAM,CAAC,QAA6C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAClF,CAAC,CAAA;IAED,oCAAoC;IACpC,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAe;QACzC,OAAQ,MAAM,CAAC,QAA6C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAClF,CAAC,CAAA;IAED,6CAA6C;IAC7C,GAAG,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAe;QAClD,OAAQ,MAAM,CAAC,iBAAsD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3F,CAAC,CAAA;IAED,0CAA0C;IAC1C,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAAmD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxF,CAAC,CAAA;IAED,+CAA+C;IAC/C,GAAG,CAAC,mBAAmB,GAAG,UAAU,GAAG,IAAe;QACpD,OAAQ,MAAM,CAAC,mBAAwD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7F,CAAC,CAAA;IAED,qCAAqC;IACrC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAA8C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnF,CAAC,CAAA;IAED,+BAA+B;IAC/B,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,IAAe;QACpC,OAAQ,MAAM,CAAC,GAAwC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7E,CAAC,CAAA;IAED,0CAA0C;IAC1C,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAAmD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxF,CAAC,CAAA;IAED,+CAA+C;IAC/C,GAAG,CAAC,mBAAmB,GAAG,UAAU,GAAG,IAAe;QACpD,OAAQ,MAAM,CAAC,mBAAwD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7F,CAAC,CAAA;IAED,wCAAwC;IACxC,GAAG,CAAC,YAAY,GAAG,UAAU,GAAG,IAAe;QAC7C,OAAQ,MAAM,CAAC,YAAiD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACtF,CAAC,CAAA;IAED,wCAAwC;IACxC,GAAG,CAAC,YAAY,GAAG,UAAU,GAAG,IAAe;QAC7C,OAAQ,MAAM,CAAC,YAAiD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACtF,CAAC,CAAA;IAED,6CAA6C;IAC7C,GAAG,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAe;QAClD,OAAQ,MAAM,CAAC,iBAAsD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3F,CAAC,CAAA;IAED,yCAAyC;IACzC,GAAG,CAAC,aAAa,GAAG,UAAU,GAAG,IAAe;QAC9C,OAAQ,MAAM,CAAC,aAAkD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvF,CAAC,CAAA;IAED,qCAAqC;IACrC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAA8C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnF,CAAC,CAAA;IAED,kCAAkC;IAClC,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,IAAe;QACvC,OAAQ,MAAM,CAAC,MAA2C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChF,CAAC,CAAA;IAED,kCAAkC;IAClC,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,IAAe;QACvC,OAAQ,MAAM,CAAC,MAA2C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChF,CAAC,CAAA;IAED,kCAAkC;IAClC,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,IAAe;QACvC,OAAQ,MAAM,CAAC,MAA2C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChF,CAAC,CAAA;IAED,kCAAkC;IAClC,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,IAAe;QACvC,OAAQ,MAAM,CAAC,MAA2C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChF,CAAC,CAAA;IAED,iCAAiC;IACjC,GAAG,CAAC,KAAK,GAAG,UAAU,GAAG,IAAe;QACtC,OAAQ,MAAM,CAAC,KAA0C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC/E,CAAC,CAAA;IAED,kCAAkC;IAClC,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,IAAe;QACvC,OAAQ,MAAM,CAAC,MAA2C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChF,CAAC,CAAA;IAED,gCAAgC;IAChC,GAAG,CAAC,IAAI,GAAG,UAAU,GAAG,IAAe;QACrC,OAAQ,MAAM,CAAC,IAAyC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9E,CAAC,CAAA;IAED,qCAAqC;IACrC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAA8C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnF,CAAC,CAAA;IAED,mCAAmC;IACnC,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,IAAe;QACxC,OAAQ,MAAM,CAAC,OAA4C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjF,CAAC,CAAA;IAED,4CAA4C;IAC5C,GAAG,CAAC,gBAAgB,GAAG,UAAU,GAAG,IAAe;QACjD,OAAQ,MAAM,CAAC,gBAAqD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC1F,CAAC,CAAA;IAED,yCAAyC;IACzC,GAAG,CAAC,aAAa,GAAG,UAAU,GAAG,IAAe;QAC9C,OAAQ,MAAM,CAAC,aAAkD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvF,CAAC,CAAA;IAED,2CAA2C;IAC3C,GAAG,CAAC,eAAe,GAAG,UAAU,GAAG,IAAe;QAChD,OAAQ,MAAM,CAAC,eAAoD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACzF,CAAC,CAAA;IAED,yCAAyC;IACzC,GAAG,CAAC,gBAAgB,GAAG,UAAU,GAAG,IAAe;QACjD,OAAQ,MAAM,CAAC,gBAAkD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvF,CAAC,CAAA;IAED,4CAA4C;IAC5C,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAAqD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC1F,CAAC,CAAA;IAED,uCAAuC;IACvC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAAgD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACrF,CAAC,CAAA;IAED,2CAA2C;IAC3C,GAAG,CAAC,eAAe,GAAG,UAAU,GAAG,IAAe;QAChD,OAAQ,MAAM,CAAC,eAAoD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACzF,CAAC,CAAA;IAED,6CAA6C;IAC7C,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,IAAe;QAC3C,OAAQ,MAAM,CAAC,UAAsD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3F,CAAC,CAAA;IAED,yCAAyC;IACzC,GAAG,CAAC,WAAW,GAAG,UAAU,GAAG,IAAe;QAC5C,OAAQ,MAAM,CAAC,WAAkD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvF,CAAC,CAAA;IAED,4CAA4C;IAC5C,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAAqD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC1F,CAAC,CAAA;IAED,yCAAyC;IACzC,GAAG,CAAC,WAAW,GAAG,UAAU,GAAG,IAAe;QAC5C,OAAQ,MAAM,CAAC,WAAkD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvF,CAAC,CAAA;IAED,wCAAwC;IACxC,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,IAAe;QAC3C,OAAQ,MAAM,CAAC,UAAiD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACtF,CAAC,CAAA;IAED,yCAAyC;IACzC,GAAG,CAAC,WAAW,GAAG,UAAU,GAAG,IAAe;QAC5C,OAAQ,MAAM,CAAC,WAAkD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvF,CAAC,CAAA;IAED,sCAAsC;IACtC,GAAG,CAAC,YAAY,GAAG,UAAU,GAAG,IAAe;QAC7C,OAAQ,MAAM,CAAC,YAA+C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACpF,CAAC,CAAA;IAED,kCAAkC;IAClC,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,IAAe;QAC3C,OAAQ,MAAM,CAAC,UAA2C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChF,CAAC,CAAA;IAED,mCAAmC;IACnC,GAAG,CAAC,WAAW,GAAG,UAAU,GAAG,IAAe;QAC5C,OAAQ,MAAM,CAAC,WAA4C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjF,CAAC,CAAA;IAED,+BAA+B;IAC/B,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,IAAe;QACxC,OAAQ,MAAM,CAAC,OAAwC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7E,CAAC,CAAA;IAED,+BAA+B;IAC/B,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,IAAe;QACxC,OAAQ,MAAM,CAAC,OAAwC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7E,CAAC,CAAA;IAED,8BAA8B;IAC9B,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,IAAe;QACvC,OAAQ,MAAM,CAAC,MAAuC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5E,CAAC,CAAA;IAED,8BAA8B;IAC9B,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,IAAe;QACvC,OAAQ,MAAM,CAAC,MAAuC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5E,CAAC,CAAA;IAED,8BAA8B;IAC9B,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,IAAe;QACvC,OAAQ,MAAM,CAAC,MAAuC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5E,CAAC,CAAA;IAED,gCAAgC;IAChC,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAe;QACzC,OAAQ,MAAM,CAAC,QAAyC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9E,CAAC,CAAA;IAED,0CAA0C;IAC1C,GAAG,CAAC,YAAY,GAAG,UAAU,GAAG,IAAe;QAC7C,OAAQ,MAAM,CAAC,YAAmD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxF,CAAC,CAAA;IAED,oCAAoC;IACpC,GAAG,CAAC,aAAa,GAAG,UAAU,GAAG,IAAe;QAC9C,OAAQ,MAAM,CAAC,aAA6C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAClF,CAAC,CAAA;IAED,uCAAuC;IACvC,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAAgD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACrF,CAAC,CAAA;IAED,oCAAoC;IACpC,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAe;QACzC,OAAQ,MAAM,CAAC,QAA6C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAClF,CAAC,CAAA;IAED,sCAAsC;IACtC,GAAG,CAAC,eAAe,GAAG,UAAU,GAAG,IAAe;QAChD,OAAQ,MAAM,CAAC,eAA+C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACpF,CAAC,CAAA;IAED,8BAA8B;IAC9B,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,IAAe;QACvC,OAAQ,MAAM,CAAC,MAAuC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5E,CAAC,CAAA;IAED,+BAA+B;IAC/B,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,IAAe;QACxC,OAAQ,MAAM,CAAC,OAAwC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7E,CAAC,CAAA;IAED,8BAA8B;IAC9B,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,IAAe;QACvC,OAAQ,MAAM,CAAC,MAAuC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5E,CAAC,CAAA;IAED,+BAA+B;IAC/B,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAe;QACzC,OAAQ,MAAM,CAAC,QAAwC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7E,CAAC,CAAA;IAED,iDAAiD;IACjD,GAAG,CAAC,gBAAgB,GAAG,UAAU,GAAG,IAAe;QACjD,OAAQ,MAAM,CAAC,gBAA0D,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC/F,CAAC,CAAA;IAED,yCAAyC;IACzC,GAAG,CAAC,WAAW,GAAG,UAAU,GAAG,IAAe;QAC5C,OAAQ,MAAM,CAAC,WAAkD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvF,CAAC,CAAA;IAED,2CAA2C;IAC3C,GAAG,CAAC,aAAa,GAAG,UAAU,GAAG,IAAe;QAC9C,OAAQ,MAAM,CAAC,aAAoD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACzF,CAAC,CAAA;IAED,wCAAwC;IACxC,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,IAAe;QAC3C,OAAQ,MAAM,CAAC,UAAiD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACtF,CAAC,CAAA;IAED,sCAAsC;IACtC,GAAG,CAAC,aAAa,GAAG,UAAU,GAAG,IAAe;QAC9C,OAAQ,MAAM,CAAC,aAA+C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACpF,CAAC,CAAA;IAED,+BAA+B;IAC/B,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,IAAe;QAC3C,OAAQ,MAAM,CAAC,UAAwC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7E,CAAC,CAAA;IAED,kCAAkC;IAClC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAA2C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChF,CAAC,CAAA;IAED,wCAAwC;IACxC,GAAG,CAAC,gBAAgB,GAAG,UAAU,GAAG,IAAe;QACjD,OAAQ,MAAM,CAAC,gBAAiD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACtF,CAAC,CAAA;IAED,8BAA8B;IAC9B,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAAuC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5E,CAAC,CAAA;IAED,uCAAuC;IACvC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAAgD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACrF,CAAC,CAAA;IAED,sCAAsC;IACtC,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,IAAe;QAC3C,OAAQ,MAAM,CAAC,UAA+C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACpF,CAAC,CAAA;IAED,iCAAiC;IACjC,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,IAAe;QAC3C,OAAQ,MAAM,CAAC,UAA0C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC/E,CAAC,CAAA;IAED,qCAAqC;IACrC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAA8C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnF,CAAC,CAAA;IAED,6CAA6C;IAC7C,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAAsD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3F,CAAC,CAAA;IAED,6BAA6B;IAC7B,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,IAAe;QACvC,OAAQ,MAAM,CAAC,MAAsC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3E,CAAC,CAAA;IAED,oCAAoC;IACpC,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAe;QACzC,OAAQ,MAAM,CAAC,QAA6C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAClF,CAAC,CAAA;IAED,uCAAuC;IACvC,GAAG,CAAC,YAAY,GAAG,UAAU,GAAG,IAAe;QAC7C,OAAQ,MAAM,CAAC,YAAgD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACrF,CAAC,CAAA;IAED,0CAA0C;IAC1C,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAAmD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxF,CAAC,CAAA;IAED,gCAAgC;IAChC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAAyC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9E,CAAC,CAAA;IAED,sCAAsC;IACtC,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,IAAe;QAC3C,OAAQ,MAAM,CAAC,UAA+C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACpF,CAAC,CAAA;IAED,0CAA0C;IAC1C,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAAmD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxF,CAAC,CAAA;IAED,gCAAgC;IAChC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAAyC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9E,CAAC,CAAA;IAED,qCAAqC;IACrC,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAA8C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnF,CAAC,CAAA;IAED,gCAAgC;IAChC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAAyC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9E,CAAC,CAAA;IAED,oCAAoC;IACpC,GAAG,CAAC,eAAe,GAAG,UAAU,GAAG,IAAe;QAChD,OAAQ,MAAM,CAAC,eAA6C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAClF,CAAC,CAAA;IAED,mCAAmC;IACnC,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,IAAe;QAC3C,OAAQ,MAAM,CAAC,UAA4C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjF,CAAC,CAAA;IAED,qCAAqC;IACrC,GAAG,CAAC,aAAa,GAAG,UAAU,GAAG,IAAe;QAC9C,OAAQ,MAAM,CAAC,aAA8C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnF,CAAC,CAAA;IAED,2CAA2C;IAC3C,GAAG,CAAC,sBAAsB,GAAG,UAAU,GAAG,IAAe;QACvD,OAAQ,MAAM,CAAC,sBAAoD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACzF,CAAC,CAAA;IAED,0CAA0C;IAC1C,GAAG,CAAC,qBAAqB,GAAG,UAAU,GAAG,IAAe;QACtD,OAAQ,MAAM,CAAC,qBAAmD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxF,CAAC,CAAA;IAED,8CAA8C;IAC9C,GAAG,CAAC,gBAAgB,GAAG,UAAU,GAAG,IAAe;QACjD,OAAQ,MAAM,CAAC,gBAAuD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5F,CAAC,CAAA;IAED,mCAAmC;IACnC,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAA4C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjF,CAAC,CAAA;IAED,uCAAuC;IACvC,GAAG,CAAC,WAAW,GAAG,UAAU,GAAG,IAAe;QAC5C,OAAQ,MAAM,CAAC,WAAgD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACrF,CAAC,CAAA;IAED,kCAAkC;IAClC,GAAG,CAAC,aAAa,GAAG,UAAU,GAAG,IAAe;QAC9C,OAAQ,MAAM,CAAC,aAA2C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChF,CAAC,CAAA;IAED,mCAAmC;IACnC,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAA4C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjF,CAAC,CAAA;IAED,qCAAqC;IACrC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAA8C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnF,CAAC,CAAA;IAED,2CAA2C;IAC3C,GAAG,CAAC,eAAe,GAAG,UAAU,GAAG,IAAe;QAChD,OAAQ,MAAM,CAAC,eAAoD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACzF,CAAC,CAAA;IAED,iCAAiC;IACjC,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAe;QACzC,OAAQ,MAAM,CAAC,QAA0C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC/E,CAAC,CAAA;IAED,6BAA6B;IAC7B,qBAAqB;IACrB,qBAAqB;IACrB,QAAQ;IACR,GAAG,CAAC,WAAW,GAAG,UAAU,GAAG,IAAe;QAI5C,OAAQ,MAAM,CAAC,WAGb,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxB,CAAC,CAAA;IAED,qCAAqC;IACrC,0BAA0B;IAC1B,6BAA6B;IAC7B,eAAe;IACf,GAAG,CAAC,mBAAmB,GAAG,UAAU,GAAG,IAAe;QAIpD,OAAQ,MAAM,CAAC,mBAGN,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,uCAAuC;IACvC,GAAG,CAAC,kBAAkB,GAAG,UAAU,GAAG,IAAe;QACnD,OAAQ,MAAM,CAAC,kBAAgD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACrF,CAAC,CAAA;IAED,uDAAuD;IACvD,GAAG,CAAC,mBAAmB,GAAG,UAAU,GAAG,IAAe;QACpD,OAAQ,MAAM,CAAC,mBAAgE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACrG,CAAC,CAAA;IAED,0CAA0C;IAC1C,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAAmD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxF,CAAC,CAAA;IAED,mCAAmC;IACnC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAA4C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjF,CAAC,CAAA;IAED,sCAAsC;IACtC,GAAG,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAe;QAClD,OAAQ,MAAM,CAAC,iBAA+C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACpF,CAAC,CAAA;IAED,iCAAiC;IACjC,GAAG,CAAC,YAAY,GAAG,UAAU,GAAG,IAAe;QAC7C,OAAQ,MAAM,CAAC,YAA0C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC/E,CAAC,CAAA;IAED,iCAAiC;IACjC,yBAAyB;IACzB,wBAAwB;IACxB,QAAQ;IACR,GAAG,CAAC,eAAe,GAAG,UAAU,GAAG,IAAe;QAIhD,OAAQ,MAAM,CAAC,eAGb,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxB,CAAC,CAAA;IAED,qCAAqC;IACrC,GAAG,CAAC,aAAa,GAAG,UAAU,GAAG,IAAe;QAC9C,OAAQ,MAAM,CAAC,aAA8C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnF,CAAC,CAAA;IAED,uCAAuC;IACvC,GAAG,CAAC,eAAe,GAAG,UAAU,GAAG,IAAe;QAChD,OAAQ,MAAM,CAAC,eAAgD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACrF,CAAC,CAAA;IAED,kCAAkC;IAClC,GAAG,CAAC,WAAW,GAAG,UAAU,GAAG,IAAe;QAC5C,OAAQ,MAAM,CAAC,WAA2C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChF,CAAC,CAAA;IAED,6CAA6C;IAC7C,GAAG,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAe;QAClD,OAAQ,MAAM,CAAC,iBAAsD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3F,CAAC,CAAA;IAED,yDAAyD;IACzD,GAAG,CAAC,6BAA6B,GAAG,UAAU,GAAG,IAAe;QAC9D,OAAQ,MAAM,CAAC,6BAAkE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvG,CAAC,CAAA;IAED,oCAAoC;IACpC,uBAAuB;IACvB,yBAAyB;IACzB,6BAA6B;IAC7B,QAAQ;IACR,GAAG,CAAC,kBAAkB,GAAG,UAAU,GAAG,IAAe;QAKnD,OAAQ,MAAM,CAAC,kBAIb,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxB,CAAC,CAAA;IAED,6CAA6C;IAC7C,GAAG,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAe;QAClD,OAAQ,MAAM,CAAC,iBAAsD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3F,CAAC,CAAA;IAED,gDAAgD;IAChD,GAAG,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAe;QAClD,OAAQ,MAAM,CAAC,iBAAyD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9F,CAAC,CAAA;IAED,8CAA8C;IAC9C,GAAG,CAAC,kBAAkB,GAAG,UAAU,GAAG,IAAe;QACnD,OAAQ,MAAM,CAAC,kBAAuD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5F,CAAC,CAAA;IAED,2CAA2C;IAC3C,GAAG,CAAC,eAAe,GAAG,UAAU,GAAG,IAAe;QAChD,OAAQ,MAAM,CAAC,eAAoD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACzF,CAAC,CAAA;IAED,2CAA2C;IAC3C,GAAG,CAAC,eAAe,GAAG,UAAU,GAAG,IAAe;QAChD,OAAQ,MAAM,CAAC,eAAoD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACzF,CAAC,CAAA;IAED,qDAAqD;IACrD,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,IAAe;QAC3C,OAAQ,MAAM,CAAC,UAA8D,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnG,CAAC,CAAA;IAED,8CAA8C;IAC9C,GAAG,CAAC,kBAAkB,GAAG,UAAU,GAAG,IAAe;QACnD,OAAQ,MAAM,CAAC,kBAAuD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5F,CAAC,CAAA;IAED,2CAA2C;IAC3C,GAAG,CAAC,YAAY,GAAG,UAAU,GAAG,IAAe;QAC7C,OAAQ,MAAM,CAAC,YAAoD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACzF,CAAC,CAAA;IAED,4BAA4B;IAC5B,GAAG,CAAC,KAAK,GAAG,UAAU,GAAG,IAAe;QACtC,OAAQ,MAAM,CAAC,KAAqC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC1E,CAAC,CAAA;IAED,qCAAqC;IACrC,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAA8C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnF,CAAC,CAAA;IAED,yCAAyC;IACzC,GAAG,CAAC,KAAK,GAAG,UAAU,GAAG,IAAe;QACtC,OAAQ,MAAM,CAAC,KAAkD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvF,CAAC,CAAA;IAED,kDAAkD;IAClD,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAA2D,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChG,CAAC,CAAA;IAED,mCAAmC;IACnC,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,IAAe;QACxC,OAAQ,MAAM,CAAC,OAA4C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjF,CAAC,CAAA;IAED,qCAAqC;IACrC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAA8C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnF,CAAC,CAAA;IAED,wCAAwC;IACxC,GAAG,CAAC,YAAY,GAAG,UAAU,GAAG,IAAe;QAC7C,OAAQ,MAAM,CAAC,YAAiD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACtF,CAAC,CAAA;IAED,oCAAoC;IACpC,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAe;QACzC,OAAQ,MAAM,CAAC,QAA6C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAClF,CAAC,CAAA;IAED,0CAA0C;IAC1C,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAAmD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxF,CAAC,CAAA;IAED,wCAAwC;IACxC,GAAG,CAAC,YAAY,GAAG,UAAU,GAAG,IAAe;QAC7C,OAAQ,MAAM,CAAC,YAAiD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACtF,CAAC,CAAA;IAED,kDAAkD;IAClD,GAAG,CAAC,oBAAoB,GAAG,UAAU,GAAG,IAAe;QACrD,OAAQ,MAAM,CAAC,oBAA2D,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChG,CAAC,CAAA;IAED,6CAA6C;IAC7C,GAAG,CAAC,eAAe,GAAG,UAAU,GAAG,IAAe;QAChD,OAAQ,MAAM,CAAC,eAAsD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3F,CAAC,CAAA;IAED,4CAA4C;IAC5C,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,IAAe;QAC/C,OAAQ,MAAM,CAAC,cAAqD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC1F,CAAC,CAAA;IAED,+CAA+C;IAC/C,GAAG,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAe;QAClD,OAAQ,MAAM,CAAC,iBAAwD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7F,CAAC,CAAA;IAED,+CAA+C;IAC/C,GAAG,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAe;QAClD,OAAQ,MAAM,CAAC,iBAAwD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7F,CAAC,CAAA;IAED,+CAA+C;IAC/C,GAAG,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAe;QAClD,OAAQ,MAAM,CAAC,iBAAwD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7F,CAAC,CAAA;IAED,8CAA8C;IAC9C,GAAG,CAAC,gBAAgB,GAAG,UAAU,GAAG,IAAe;QACjD,OAAQ,MAAM,CAAC,gBAAuD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5F,CAAC,CAAA;IAED,kDAAkD;IAClD,GAAG,CAAC,oBAAoB,GAAG,UAAU,GAAG,IAAe;QACrD,OAAQ,MAAM,CAAC,oBAA2D,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAChG,CAAC,CAAA;IAED,gDAAgD;IAChD,GAAG,CAAC,kBAAkB,GAAG,UAAU,GAAG,IAAe;QACnD,OAAQ,MAAM,CAAC,kBAAyD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9F,CAAC,CAAA;IAED,8CAA8C;IAC9C,GAAG,CAAC,gBAAgB,GAAG,UAAU,GAAG,IAAe;QACjD,OAAQ,MAAM,CAAC,gBAAuD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5F,CAAC,CAAA;IAED,+CAA+C;IAC/C,GAAG,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAe;QAClD,OAAQ,MAAM,CAAC,iBAAwD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7F,CAAC,CAAA;IAED,gDAAgD;IAChD,GAAG,CAAC,kBAAkB,GAAG,UAAU,GAAG,IAAe;QACnD,OAAQ,MAAM,CAAC,kBAAyD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9F,CAAC,CAAA;IAED,oCAAoC;IACpC,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAe;QACzC,OAAQ,MAAM,CAAC,QAA6C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAClF,CAAC,CAAA;IAED,2CAA2C;IAC3C,GAAG,CAAC,eAAe,GAAG,UAAU,GAAG,IAAe;QAChD,OAAQ,MAAM,CAAC,eAAoD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACzF,CAAC,CAAA;IAED,+BAA+B;IAC/B,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,IAAe;QACxC,OAAQ,MAAM,CAAC,OAAwC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7E,CAAC,CAAA;IAED,qCAAqC;IACrC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,IAAe;QAC1C,OAAQ,MAAM,CAAC,SAA8C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnF,CAAC,CAAA;IAED,oCAAoC;IACpC,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAe;QACzC,OAAQ,MAAM,CAAC,QAA6C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAClF,CAAC,CAAA;IAED,oCAAoC;IACpC,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAe;QACzC,OAAQ,MAAM,CAAC,QAA6C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAClF,CAAC,CAAA;IAED,+CAA+C;IAC/C,GAAG,CAAC,mBAAmB,GAAG,UAAU,GAAG,IAAe;QACpD,OAAQ,MAAM,CAAC,mBAAwD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7F,CAAC,CAAA;IAED,iDAAiD;IACjD,GAAG,CAAC,qBAAqB,GAAG,UAAU,GAAG,IAAe;QACtD,OAAQ,MAAM,CAAC,qBAA0D,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC/F,CAAC,CAAA;IAED,kCAAkC;IAClC,GAAG,CAAC,aAAa,GAAG,UAAU,GAAG,IAAe;QAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;QAChC,IAAI,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,aAA2C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC1E,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC,CAAA;IAED,yCAAyC;IACzC,GAAG,CAAC,aAAa,GAAG,UAAU,GAAG,IAAe;QAC9C,OAAQ,MAAM,CAAC,aAAkD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvF,CAAC,CAAA;IAED,+CAA+C;IAC/C,GAAG,CAAC,kBAAkB,GAAG,UAAU,GAAG,IAAe;QACnD,OAAQ,MAAM,CAAC,kBAAwD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7F,CAAC,CAAA;IAED,+CAA+C;IAC/C,GAAG,CAAC,kBAAkB,GAAG,UAAU,GAAG,IAAe;QACnD,OAAQ,MAAM,CAAC,kBAAwD,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7F,CAAC,CAAA;IAED,4BAA4B;IAC5B,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,IAAe;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;QAChC,IAAI,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,OAAqC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACpE,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC,CAAA;IAED,iCAAiC;IACjC,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,IAAe;QAC3C,OAAQ,MAAM,CAAC,UAA0C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC/E,CAAC,CAAA;IAED,iCAAiC;IACjC,GAAG,CAAC,YAAY,GAAG,UAAU,GAAG,IAAe;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;QAChC,IAAI,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,YAA0C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACzE,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC,CAAA;IAED,+BAA+B;IAC/B,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAe;QACzC,OAAQ,MAAM,CAAC,QAAwC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7E,CAAC,CAAA;IAED,OAAO,GAAiC,CAAA;AAC1C,CAAC","sourcesContent":["// GENERATED FILE — DO NOT EDIT MANUALLY\n// Source: occt-wasm/dist/index.d.ts\n// occt-wasm version: 5.6.0\n// upstream d.ts hash: 056391ba46f1d6af\n// Generator: packages/core/scripts/gen-occt-platform.ts\n//\n// L2 平台直通面(OcctPlatformApi):occt 专属、1:1 覆盖、生成式。\n// 每个薄封装统一 checkpoint() → 调用 → releaseSince(mark),中间句柄不泄漏,\n// 返回的 ShapeHandle 交调用方 release。\n//\n// 生成器从 index.d.ts 直接产出,「全部能力可用」是结构性保证——\n// 上游加方法 → 生成器产出 → 类型系统可见,不存在「人忘了接」的环节。\n// 扫描器(scan-occt-wasm-surface.ts)只做兜底校验。\n\nimport type { OcctKernel } from 'occt-wasm'\nexport { BooleanOp, BooleanGlue, JoinType, SweepMode, SweepLaw, SweepContact, TransitionMode, OcctErrorCode } from 'occt-wasm'\nimport type { ShapeHandle, Vec3, Mesh, EdgeData, BoundingBox, TessellateOptions, WireframeOptions, SurfaceKind, CurveKind, UVBounds, EvolutionData, NurbsCurveData, CurvatureData, MeshBatchData, ShapeQueryResult, ProjectionData, BooleanOpOptions, SweepFullOptions, SweepAdvancedOptions, SweepOrientedOptions, AlignAnchor, ViewName, PngViewOptions, MultiviewPngOptions, ShapeType, ShapeOrientation, PointClassification, XCAFDocument, MultiviewSvgOptions, SvgViewOptions, BooleanOp, JoinType, SweepMode, TransitionMode } from 'occt-wasm'\nexport type { ShapeHandle, Vec3, Mesh, EdgeData, BoundingBox, TessellateOptions, WireframeOptions, SurfaceKind, CurveKind, UVBounds, EvolutionData, NurbsCurveData, CurvatureData, MeshBatchData, ShapeQueryResult, ProjectionData, BooleanOpOptions, SweepFullOptions, SweepAdvancedOptions, SweepOrientedOptions, AlignAnchor, ViewName, PngViewOptions, MultiviewPngOptions, ShapeType, ShapeOrientation, PointClassification, XCAFDocument, MultiviewSvgOptions, SvgViewOptions } from 'occt-wasm'\n\n/**\n * OcctPlatformApi — occt 专属 1:1 平台直通面。\n *\n * 覆盖 OcctKernel 全部公开方法(豁免条目除外),每方法签名与上游一致。\n * 薄封装统一做 checkpoint/releaseSince 句柄清理:中间产生的临时句柄\n * 自动释放,返回的 ShapeHandle 由调用方负责 release。\n *\n * 这一层是「能力可用」的结构性保证——不等于「已被 op 层集成」。\n * op 层是否使用某方法由 scan-occt-wasm-surface 的 integrated 维统计。\n */\nexport interface OcctPlatformApi {\n makeBox(dx: number, dy: number, dz: number): ShapeHandle\n makeBoxFromCorners(corner1: Vec3, corner2: Vec3): ShapeHandle\n makeCylinder(radius: number, height: number): ShapeHandle\n makeSphere(radius: number): ShapeHandle\n makeCone(r1: number, r2: number, height: number): ShapeHandle\n makeTorus(majorRadius: number, minorRadius: number): ShapeHandle\n halfSpace(origin: Vec3, normal: Vec3): ShapeHandle\n makeEllipsoid(rx: number, ry: number, rz: number): ShapeHandle\n makeRectangle(width: number, height: number): ShapeHandle\n fuse(a: ShapeHandle, b: ShapeHandle): ShapeHandle\n cut(a: ShapeHandle, b: ShapeHandle): ShapeHandle\n common(a: ShapeHandle, b: ShapeHandle): ShapeHandle\n intersect(a: ShapeHandle, b: ShapeHandle): ShapeHandle\n section(a: ShapeHandle, b: ShapeHandle): ShapeHandle\n sectionPlane(shape: ShapeHandle, origin: Vec3, normal: Vec3): ShapeHandle\n fuseAll(shapes: ShapeHandle[]): ShapeHandle\n cutAll(shape: ShapeHandle, tools: ShapeHandle[]): ShapeHandle\n split(shape: ShapeHandle, tools: ShapeHandle[]): ShapeHandle\n intersectionCells(shapes: ShapeHandle[]): ShapeHandle\n extrude(shape: ShapeHandle, dx: number, dy: number, dz: number): ShapeHandle\n revolve(shape: ShapeHandle, axis: {\n point: Vec3;\n direction: Vec3;\n }, angleRad: number): ShapeHandle\n fillet(solid: ShapeHandle, edges: ShapeHandle[], radius: number): ShapeHandle\n chamfer(solid: ShapeHandle, edges: ShapeHandle[], distance: number): ShapeHandle\n chamferDistAngle(solid: ShapeHandle, edges: ShapeHandle[], distance: number, angleDeg: number): ShapeHandle\n chamferAsymmetric(solid: ShapeHandle, edge: ShapeHandle, distance1: number, distance2: number, referenceFace?: ShapeHandle): ShapeHandle\n shell(solid: ShapeHandle, facesToRemove: ShapeHandle[], thickness: number, tolerance: number, joinType?: JoinType.Arc | JoinType.Intersection): ShapeHandle\n offset(solid: ShapeHandle, distance: number, tolerance: number, joinType?: JoinType.Arc | JoinType.Intersection): ShapeHandle\n draft(shape: ShapeHandle, face: ShapeHandle, angleRad: number, direction: Vec3): ShapeHandle\n pipe(profile: ShapeHandle, spine: ShapeHandle): ShapeHandle\n simplePipe(profile: ShapeHandle, spine: ShapeHandle): ShapeHandle\n loft(wires: ShapeHandle[], isSolid: boolean, ruled: boolean): ShapeHandle\n loftWithVertices(wires: ShapeHandle[], isSolid: boolean, ruled: boolean, startVertex: ShapeHandle, endVertex: ShapeHandle): ShapeHandle\n sweep(wire: ShapeHandle, spine: ShapeHandle, transitionMode?: TransitionMode): ShapeHandle\n sweepPipeShell(profile: ShapeHandle, spine: ShapeHandle, freenet?: boolean, smooth?: boolean): ShapeHandle\n sweepOriented(profile: ShapeHandle, spine: ShapeHandle, mode?: SweepMode, up?: Vec3, auxSpine?: ShapeHandle, options?: SweepOrientedOptions): ShapeHandle\n sweepAdvanced(profile: ShapeHandle, spine: ShapeHandle, options?: SweepAdvancedOptions): ShapeHandle\n sweepFull(profile: ShapeHandle, spine: ShapeHandle, options?: SweepFullOptions): ShapeHandle\n draftPrism(shape: ShapeHandle, dx: number, dy: number, dz: number, angleDeg: number): ShapeHandle\n makeVertex(x: number, y: number, z: number): ShapeHandle\n makeEdge(v1: ShapeHandle, v2: ShapeHandle): ShapeHandle\n makeLineEdge(start: Vec3, end: Vec3): ShapeHandle\n makeCircleEdge(center: Vec3, normal: Vec3, radius: number): ShapeHandle\n makeCircleArc(center: Vec3, normal: Vec3, radius: number, startAngle: number, endAngle: number): ShapeHandle\n makeArcEdge(start: Vec3, mid: Vec3, end: Vec3): ShapeHandle\n makeEllipseEdge(center: Vec3, normal: Vec3, majorRadius: number, minorRadius: number): ShapeHandle\n makeEllipseArc(center: Vec3, normal: Vec3, majorRadius: number, minorRadius: number, startAngle: number, endAngle: number): ShapeHandle\n makeBezierEdge(controlPoints: Vec3[]): ShapeHandle\n makeBSplineEdge(poles: number[], weights: number[], knots: number[], multiplicities: number[], degree: number, periodic?: boolean): ShapeHandle\n makeTangentArc(start: Vec3, tangent: Vec3, end: Vec3): ShapeHandle\n makeHelixWire(origin: Vec3, axis: Vec3, pitch: number, height: number, radius: number): ShapeHandle\n makeHelixWireHanded(origin: Vec3, axis: Vec3, pitch: number, height: number, radius: number, leftHanded?: boolean): ShapeHandle\n makeWire(edges: ShapeHandle[]): ShapeHandle\n makeFace(wire: ShapeHandle): ShapeHandle\n makeNonPlanarFace(wire: ShapeHandle): ShapeHandle\n addHolesInFace(face: ShapeHandle, holeWires: ShapeHandle[]): ShapeHandle\n removeHolesFromFace(face: ShapeHandle, holeIndices: number[]): ShapeHandle\n makeSolid(shell: ShapeHandle): ShapeHandle\n sew(shapes: ShapeHandle[], tolerance?: number): ShapeHandle\n sewAndSolidify(faces: ShapeHandle[], tolerance?: number): ShapeHandle\n buildSolidFromFaces(faces: ShapeHandle[], tolerance?: number): ShapeHandle\n makeCompound(shapes: ShapeHandle[]): ShapeHandle\n buildTriFace(a: Vec3, b: Vec3, c: Vec3): ShapeHandle\n makeFaceOnSurface(face: ShapeHandle, wire: ShapeHandle): ShapeHandle\n makeNullShape(): ShapeHandle\n translate(shape: ShapeHandle, dx: number, dy: number, dz: number): ShapeHandle\n alignX(shape: ShapeHandle, target?: number, anchor?: AlignAnchor): ShapeHandle\n alignY(shape: ShapeHandle, target?: number, anchor?: AlignAnchor): ShapeHandle\n alignZ(shape: ShapeHandle, target?: number, anchor?: AlignAnchor): ShapeHandle\n rotate(shape: ShapeHandle, axis: {\n point: Vec3;\n direction: Vec3;\n }, angleRad: number): ShapeHandle\n scale(shape: ShapeHandle, center: Vec3, factor: number): ShapeHandle\n mirror(shape: ShapeHandle, point: Vec3, normal: Vec3): ShapeHandle\n copy(shape: ShapeHandle): ShapeHandle\n transform(shape: ShapeHandle, matrix: number[]): ShapeHandle\n located(shape: ShapeHandle, matrix: number[]): ShapeHandle\n generalTransform(shape: ShapeHandle, matrix: number[]): ShapeHandle\n linearPattern(shape: ShapeHandle, direction: Vec3, spacing: number, count: number): ShapeHandle\n circularPattern(shape: ShapeHandle, center: Vec3, axis: Vec3, angle: number, count: number): ShapeHandle\n composeTransform(m1: number[], m2: number[]): number[]\n translateBatch(shapes: ShapeHandle[], offsets: number[]): ShapeHandle[]\n booleanOp(op: BooleanOp, args: ShapeHandle[], tools: ShapeHandle[], options?: BooleanOpOptions): EvolutionData\n booleanPipeline(base: ShapeHandle, opCodes: BooleanOp[], tools: ShapeHandle[]): ShapeHandle\n queryBatch(shapes: ShapeHandle[]): ShapeQueryResult[]\n filletBatch(ops: Array<{\n solid: ShapeHandle;\n edges: ShapeHandle[];\n radius: number;\n }>): ShapeHandle[]\n transformBatch(shapes: ShapeHandle[], matrices: number[]): ShapeHandle[]\n rotateBatch(shapes: ShapeHandle[], params: number[]): ShapeHandle[]\n scaleBatch(shapes: ShapeHandle[], params: number[]): ShapeHandle[]\n mirrorBatch(shapes: ShapeHandle[], params: number[]): ShapeHandle[]\n getShapeType(shape: ShapeHandle): ShapeType\n isCompound(shape: ShapeHandle): boolean\n isCompSolid(shape: ShapeHandle): boolean\n isSolid(shape: ShapeHandle): boolean\n isShell(shape: ShapeHandle): boolean\n isFace(shape: ShapeHandle): boolean\n isWire(shape: ShapeHandle): boolean\n isEdge(shape: ShapeHandle): boolean\n isVertex(shape: ShapeHandle): boolean\n getSubShapes(shape: ShapeHandle, type: \"vertex\" | \"edge\" | \"wire\" | \"face\" | \"shell\" | \"solid\"): ShapeHandle[]\n subShapeCount(shape: ShapeHandle, type: \"vertex\" | \"edge\" | \"wire\" | \"face\" | \"shell\" | \"solid\"): number\n subShapeHashes(shape: ShapeHandle, type: \"vertex\" | \"edge\" | \"wire\" | \"face\" | \"shell\" | \"solid\", hashUpperBound: number): number[]\n downcast(shape: ShapeHandle, targetType: \"vertex\" | \"edge\" | \"wire\" | \"face\" | \"shell\" | \"solid\"): ShapeHandle\n distanceBetween(a: ShapeHandle, b: ShapeHandle): number\n isSame(a: ShapeHandle, b: ShapeHandle): boolean\n isEqual(a: ShapeHandle, b: ShapeHandle): boolean\n isNull(shape: ShapeHandle): boolean\n hashCode(shape: ShapeHandle, upperBound: number): number\n shapeOrientation(shape: ShapeHandle): ShapeOrientation\n sharedEdges(faceA: ShapeHandle, faceB: ShapeHandle): ShapeHandle[]\n adjacentFaces(shape: ShapeHandle, face: ShapeHandle): ShapeHandle[]\n iterShapes(shape: ShapeHandle): ShapeHandle[]\n edgeToFaceMap(shape: ShapeHandle, hashUpperBound: number): number[]\n tessellate(shape: ShapeHandle, options?: TessellateOptions): Mesh\n wireframe(shape: ShapeHandle, options?: number | WireframeOptions): EdgeData\n hasTriangulation(shape: ShapeHandle): boolean\n meshShape(shape: ShapeHandle, options?: TessellateOptions): Mesh\n meshBatch(shapes: ShapeHandle[], options?: TessellateOptions): MeshBatchData\n importStep(data: string | ArrayBuffer): ShapeHandle\n exportStep(shape: ShapeHandle): string\n importStl(data: string | ArrayBuffer | Uint8Array): ShapeHandle\n exportStl(shape: ShapeHandle, linearDeflection: number | undefined, ascii: boolean): string | Uint8Array\n toBREP(shape: ShapeHandle): string\n fromBREP(data: string): ShapeHandle\n toBREPBinary(shape: ShapeHandle): Uint8Array\n fromBREPBinary(data: Uint8Array): ShapeHandle\n cacheStep(stepData: string | ArrayBuffer): string\n loadCached(brep: string): ShapeHandle\n getBoundingBox(shape: ShapeHandle, useTriangulation: boolean): BoundingBox\n getVolume(shape: ShapeHandle): number\n getSurfaceArea(shape: ShapeHandle): number\n getLength(shape: ShapeHandle): number\n getCenterOfMass(shape: ShapeHandle): Vec3\n getInertia(shape: ShapeHandle): number[]\n containsPoint(shape: ShapeHandle, point: Vec3, tolerance?: number): boolean\n getSurfaceCenterOfMass(face: ShapeHandle): Vec3\n getLinearCenterOfMass(shape: ShapeHandle): Vec3\n surfaceCurvature(face: ShapeHandle, u: number, v: number): CurvatureData\n vertexPosition(vertex: ShapeHandle): Vec3\n surfaceType(face: ShapeHandle): SurfaceKind\n surfaceNormal(face: ShapeHandle, u: number, v: number): Vec3\n pointOnSurface(face: ShapeHandle, u: number, v: number): Vec3\n outerWire(face: ShapeHandle): ShapeHandle\n reverseSurfaceU(face: ShapeHandle): ShapeHandle\n uvBounds(face: ShapeHandle): UVBounds\n uvFromPoint(face: ShapeHandle, point: Vec3): {\n u: number;\n v: number;\n }\n getFaceCylinderData(face: ShapeHandle): {\n radius: number;\n isDirect: boolean;\n } | null\n projectPointOnFace(face: ShapeHandle, point: Vec3): Vec3\n classifyPointOnFace(face: ShapeHandle, u: number, v: number): PointClassification\n bsplineSurface(controlPoints: Vec3[], rows: number, cols: number): ShapeHandle\n curveType(edge: ShapeHandle): CurveKind\n curvePointAtParam(edge: ShapeHandle, param: number): Vec3\n curveTangent(edge: ShapeHandle, param: number): Vec3\n curveParameters(edge: ShapeHandle): {\n first: number;\n last: number;\n }\n curveIsClosed(edge: ShapeHandle): boolean\n curveIsPeriodic(edge: ShapeHandle): boolean\n curveLength(edge: ShapeHandle): number\n interpolatePoints(points: Vec3[], periodic?: boolean): ShapeHandle\n interpolatePointsWithTangents(points: Vec3[], startTangent: Vec3, endTangent: Vec3): ShapeHandle\n projectPointOnEdge(edge: ShapeHandle, point: Vec3): {\n point: Vec3;\n tangent: Vec3;\n parameter: number;\n }\n approximatePoints(points: Vec3[], tolerance?: number): ShapeHandle\n getNurbsCurveData(edge: ShapeHandle): NurbsCurveData\n curveDegreeElevate(edge: ShapeHandle, elevateBy: number): ShapeHandle\n curveKnotInsert(edge: ShapeHandle, knot: number, times: number): ShapeHandle\n curveKnotRemove(edge: ShapeHandle, knot: number, tolerance: number): ShapeHandle\n curveSplit(edge: ShapeHandle, param: number): [ShapeHandle, ShapeHandle]\n liftCurve2dToPlane(points2d: Array<{\n x: number;\n y: number;\n }>, planeOrigin: Vec3, planeZ: Vec3, planeX: Vec3): ShapeHandle\n projectEdges(shape: ShapeHandle, viewOrigin: Vec3, viewDirection: Vec3, xAxis?: Vec3): ProjectionData\n toSVG(shape: ShapeHandle, view?: ViewName, options?: SvgViewOptions): string\n toMultiviewSVG(shape: ShapeHandle, options?: MultiviewSvgOptions): string\n toPNG(shape: ShapeHandle, view?: ViewName, options?: PngViewOptions): Promise<Uint8Array>\n toMultiviewPNG(shape: ShapeHandle, options?: MultiviewPngOptions): Promise<Uint8Array>\n thicken(shape: ShapeHandle, thickness: number, tolerance: number): ShapeHandle\n defeature(shape: ShapeHandle, faces: ShapeHandle[], tolerance: number): ShapeHandle\n reverseShape(shape: ShapeHandle): ShapeHandle\n simplify(shape: ShapeHandle): ShapeHandle\n filletVariable(solid: ShapeHandle, edge: ShapeHandle, startRadius: number, endRadius: number): ShapeHandle\n offsetWire2D(wire: ShapeHandle, offset: number, joinType?: JoinType): ShapeHandle\n translateWithHistory(shape: ShapeHandle, dx: number, dy: number, dz: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n fuseWithHistory(a: ShapeHandle, b: ShapeHandle, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n cutWithHistory(a: ShapeHandle, b: ShapeHandle, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n filletWithHistory(solid: ShapeHandle, edges: ShapeHandle[], radius: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n rotateWithHistory(shape: ShapeHandle, axis: {\n point: Vec3;\n direction: Vec3;\n }, angleRad: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n mirrorWithHistory(shape: ShapeHandle, point: Vec3, normal: Vec3, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n scaleWithHistory(shape: ShapeHandle, center: Vec3, factor: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n intersectWithHistory(a: ShapeHandle, b: ShapeHandle, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n chamferWithHistory(solid: ShapeHandle, edges: ShapeHandle[], distance: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n shellWithHistory(solid: ShapeHandle, faces: ShapeHandle[], thickness: number, tolerance: number, inputFaceHashes: number[], hashUpperBound: number, joinType?: JoinType.Arc | JoinType.Intersection): EvolutionData\n offsetWithHistory(solid: ShapeHandle, distance: number, tolerance: number, inputFaceHashes: number[], hashUpperBound: number, joinType?: JoinType.Arc | JoinType.Intersection): EvolutionData\n thickenWithHistory(shape: ShapeHandle, thickness: number, tolerance: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n fixShape(shape: ShapeHandle): ShapeHandle\n unifySameDomain(shape: ShapeHandle): ShapeHandle\n isValid(shape: ShapeHandle): boolean\n healSolid(shape: ShapeHandle, tolerance?: number): ShapeHandle\n healFace(shape: ShapeHandle, tolerance?: number): ShapeHandle\n healWire(shape: ShapeHandle, tolerance?: number): ShapeHandle\n fixFaceOrientations(shape: ShapeHandle): ShapeHandle\n removeDegenerateEdges(shape: ShapeHandle): ShapeHandle\n buildCurves3d(wire: ShapeHandle): void\n fixWireOnFace(wire: ShapeHandle, face: ShapeHandle, tolerance?: number): ShapeHandle\n createXCAFDocument(): XCAFDocument\n importXCAFFromSTEP(stepData: string): XCAFDocument\n release(shape: ShapeHandle): void\n checkpoint(): number\n releaseSince(mark: number): void\n describe(shape: ShapeHandle): string\n}\n\n/**\n * Create an OcctPlatformApi instance wrapping the given kernel.\n *\n * Each method call is bracketed by checkpoint()/releaseSince():\n * intermediate temporary handles are auto-released, the returned\n * ShapeHandle (if any) is preserved for the caller.\n *\n * @param kernel - the initialized OcctKernel instance\n * @returns the platform API proxy\n */\nexport function createOcctPlatform(kernel: OcctKernel): OcctPlatformApi {\n const api: Record<string, (...args: unknown[]) => unknown> = {}\n\n // OcctKernel#makeBox → ShapeHandle\n api.makeBox = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeBox as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeBoxFromCorners → ShapeHandle\n api.makeBoxFromCorners = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeBoxFromCorners as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeCylinder → ShapeHandle\n api.makeCylinder = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeCylinder as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeSphere → ShapeHandle\n api.makeSphere = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeSphere as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeCone → ShapeHandle\n api.makeCone = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeCone as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeTorus → ShapeHandle\n api.makeTorus = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeTorus as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#halfSpace → ShapeHandle\n api.halfSpace = function (...args: unknown[]): ShapeHandle {\n return (kernel.halfSpace as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeEllipsoid → ShapeHandle\n api.makeEllipsoid = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeEllipsoid as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeRectangle → ShapeHandle\n api.makeRectangle = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeRectangle as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#fuse → ShapeHandle\n api.fuse = function (...args: unknown[]): ShapeHandle {\n return (kernel.fuse as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#cut → ShapeHandle\n api.cut = function (...args: unknown[]): ShapeHandle {\n return (kernel.cut as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#common → ShapeHandle\n api.common = function (...args: unknown[]): ShapeHandle {\n return (kernel.common as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#intersect → ShapeHandle\n api.intersect = function (...args: unknown[]): ShapeHandle {\n return (kernel.intersect as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#section → ShapeHandle\n api.section = function (...args: unknown[]): ShapeHandle {\n return (kernel.section as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#sectionPlane → ShapeHandle\n api.sectionPlane = function (...args: unknown[]): ShapeHandle {\n return (kernel.sectionPlane as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#fuseAll → ShapeHandle\n api.fuseAll = function (...args: unknown[]): ShapeHandle {\n return (kernel.fuseAll as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#cutAll → ShapeHandle\n api.cutAll = function (...args: unknown[]): ShapeHandle {\n return (kernel.cutAll as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#split → ShapeHandle\n api.split = function (...args: unknown[]): ShapeHandle {\n return (kernel.split as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#intersectionCells → ShapeHandle\n api.intersectionCells = function (...args: unknown[]): ShapeHandle {\n return (kernel.intersectionCells as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#extrude → ShapeHandle\n api.extrude = function (...args: unknown[]): ShapeHandle {\n return (kernel.extrude as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#revolve → ShapeHandle\n api.revolve = function (...args: unknown[]): ShapeHandle {\n return (kernel.revolve as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#fillet → ShapeHandle\n api.fillet = function (...args: unknown[]): ShapeHandle {\n return (kernel.fillet as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#chamfer → ShapeHandle\n api.chamfer = function (...args: unknown[]): ShapeHandle {\n return (kernel.chamfer as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#chamferDistAngle → ShapeHandle\n api.chamferDistAngle = function (...args: unknown[]): ShapeHandle {\n return (kernel.chamferDistAngle as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#chamferAsymmetric → ShapeHandle\n api.chamferAsymmetric = function (...args: unknown[]): ShapeHandle {\n return (kernel.chamferAsymmetric as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#shell → ShapeHandle\n api.shell = function (...args: unknown[]): ShapeHandle {\n return (kernel.shell as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#offset → ShapeHandle\n api.offset = function (...args: unknown[]): ShapeHandle {\n return (kernel.offset as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#draft → ShapeHandle\n api.draft = function (...args: unknown[]): ShapeHandle {\n return (kernel.draft as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#pipe → ShapeHandle\n api.pipe = function (...args: unknown[]): ShapeHandle {\n return (kernel.pipe as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#simplePipe → ShapeHandle\n api.simplePipe = function (...args: unknown[]): ShapeHandle {\n return (kernel.simplePipe as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#loft → ShapeHandle\n api.loft = function (...args: unknown[]): ShapeHandle {\n return (kernel.loft as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#loftWithVertices → ShapeHandle\n api.loftWithVertices = function (...args: unknown[]): ShapeHandle {\n return (kernel.loftWithVertices as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#sweep → ShapeHandle\n api.sweep = function (...args: unknown[]): ShapeHandle {\n return (kernel.sweep as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#sweepPipeShell → ShapeHandle\n api.sweepPipeShell = function (...args: unknown[]): ShapeHandle {\n return (kernel.sweepPipeShell as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#sweepOriented → ShapeHandle\n api.sweepOriented = function (...args: unknown[]): ShapeHandle {\n return (kernel.sweepOriented as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#sweepAdvanced → ShapeHandle\n api.sweepAdvanced = function (...args: unknown[]): ShapeHandle {\n return (kernel.sweepAdvanced as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#sweepFull → ShapeHandle\n api.sweepFull = function (...args: unknown[]): ShapeHandle {\n return (kernel.sweepFull as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#draftPrism → ShapeHandle\n api.draftPrism = function (...args: unknown[]): ShapeHandle {\n return (kernel.draftPrism as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeVertex → ShapeHandle\n api.makeVertex = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeVertex as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeEdge → ShapeHandle\n api.makeEdge = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeEdge as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeLineEdge → ShapeHandle\n api.makeLineEdge = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeLineEdge as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeCircleEdge → ShapeHandle\n api.makeCircleEdge = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeCircleEdge as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeCircleArc → ShapeHandle\n api.makeCircleArc = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeCircleArc as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeArcEdge → ShapeHandle\n api.makeArcEdge = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeArcEdge as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeEllipseEdge → ShapeHandle\n api.makeEllipseEdge = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeEllipseEdge as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeEllipseArc → ShapeHandle\n api.makeEllipseArc = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeEllipseArc as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeBezierEdge → ShapeHandle\n api.makeBezierEdge = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeBezierEdge as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeBSplineEdge → ShapeHandle\n api.makeBSplineEdge = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeBSplineEdge as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeTangentArc → ShapeHandle\n api.makeTangentArc = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeTangentArc as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeHelixWire → ShapeHandle\n api.makeHelixWire = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeHelixWire as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeHelixWireHanded → ShapeHandle\n api.makeHelixWireHanded = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeHelixWireHanded as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeWire → ShapeHandle\n api.makeWire = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeWire as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeFace → ShapeHandle\n api.makeFace = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeFace as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeNonPlanarFace → ShapeHandle\n api.makeNonPlanarFace = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeNonPlanarFace as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#addHolesInFace → ShapeHandle\n api.addHolesInFace = function (...args: unknown[]): ShapeHandle {\n return (kernel.addHolesInFace as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#removeHolesFromFace → ShapeHandle\n api.removeHolesFromFace = function (...args: unknown[]): ShapeHandle {\n return (kernel.removeHolesFromFace as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeSolid → ShapeHandle\n api.makeSolid = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeSolid as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#sew → ShapeHandle\n api.sew = function (...args: unknown[]): ShapeHandle {\n return (kernel.sew as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#sewAndSolidify → ShapeHandle\n api.sewAndSolidify = function (...args: unknown[]): ShapeHandle {\n return (kernel.sewAndSolidify as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#buildSolidFromFaces → ShapeHandle\n api.buildSolidFromFaces = function (...args: unknown[]): ShapeHandle {\n return (kernel.buildSolidFromFaces as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeCompound → ShapeHandle\n api.makeCompound = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeCompound as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#buildTriFace → ShapeHandle\n api.buildTriFace = function (...args: unknown[]): ShapeHandle {\n return (kernel.buildTriFace as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeFaceOnSurface → ShapeHandle\n api.makeFaceOnSurface = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeFaceOnSurface as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeNullShape → ShapeHandle\n api.makeNullShape = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeNullShape as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#translate → ShapeHandle\n api.translate = function (...args: unknown[]): ShapeHandle {\n return (kernel.translate as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#alignX → ShapeHandle\n api.alignX = function (...args: unknown[]): ShapeHandle {\n return (kernel.alignX as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#alignY → ShapeHandle\n api.alignY = function (...args: unknown[]): ShapeHandle {\n return (kernel.alignY as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#alignZ → ShapeHandle\n api.alignZ = function (...args: unknown[]): ShapeHandle {\n return (kernel.alignZ as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#rotate → ShapeHandle\n api.rotate = function (...args: unknown[]): ShapeHandle {\n return (kernel.rotate as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#scale → ShapeHandle\n api.scale = function (...args: unknown[]): ShapeHandle {\n return (kernel.scale as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#mirror → ShapeHandle\n api.mirror = function (...args: unknown[]): ShapeHandle {\n return (kernel.mirror as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#copy → ShapeHandle\n api.copy = function (...args: unknown[]): ShapeHandle {\n return (kernel.copy as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#transform → ShapeHandle\n api.transform = function (...args: unknown[]): ShapeHandle {\n return (kernel.transform as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#located → ShapeHandle\n api.located = function (...args: unknown[]): ShapeHandle {\n return (kernel.located as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#generalTransform → ShapeHandle\n api.generalTransform = function (...args: unknown[]): ShapeHandle {\n return (kernel.generalTransform as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#linearPattern → ShapeHandle\n api.linearPattern = function (...args: unknown[]): ShapeHandle {\n return (kernel.linearPattern as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#circularPattern → ShapeHandle\n api.circularPattern = function (...args: unknown[]): ShapeHandle {\n return (kernel.circularPattern as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#composeTransform → number[]\n api.composeTransform = function (...args: unknown[]): number[] {\n return (kernel.composeTransform as (...a: unknown[]) => number[]).apply(kernel, args)\n }\n\n // OcctKernel#translateBatch → ShapeHandle[]\n api.translateBatch = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.translateBatch as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#booleanOp → EvolutionData\n api.booleanOp = function (...args: unknown[]): EvolutionData {\n return (kernel.booleanOp as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#booleanPipeline → ShapeHandle\n api.booleanPipeline = function (...args: unknown[]): ShapeHandle {\n return (kernel.booleanPipeline as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#queryBatch → ShapeQueryResult[]\n api.queryBatch = function (...args: unknown[]): ShapeQueryResult[] {\n return (kernel.queryBatch as (...a: unknown[]) => ShapeQueryResult[]).apply(kernel, args)\n }\n\n // OcctKernel#filletBatch → ShapeHandle[]\n api.filletBatch = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.filletBatch as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#transformBatch → ShapeHandle[]\n api.transformBatch = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.transformBatch as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#rotateBatch → ShapeHandle[]\n api.rotateBatch = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.rotateBatch as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#scaleBatch → ShapeHandle[]\n api.scaleBatch = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.scaleBatch as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#mirrorBatch → ShapeHandle[]\n api.mirrorBatch = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.mirrorBatch as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#getShapeType → ShapeType\n api.getShapeType = function (...args: unknown[]): ShapeType {\n return (kernel.getShapeType as (...a: unknown[]) => ShapeType).apply(kernel, args)\n }\n\n // OcctKernel#isCompound → boolean\n api.isCompound = function (...args: unknown[]): boolean {\n return (kernel.isCompound as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isCompSolid → boolean\n api.isCompSolid = function (...args: unknown[]): boolean {\n return (kernel.isCompSolid as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isSolid → boolean\n api.isSolid = function (...args: unknown[]): boolean {\n return (kernel.isSolid as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isShell → boolean\n api.isShell = function (...args: unknown[]): boolean {\n return (kernel.isShell as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isFace → boolean\n api.isFace = function (...args: unknown[]): boolean {\n return (kernel.isFace as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isWire → boolean\n api.isWire = function (...args: unknown[]): boolean {\n return (kernel.isWire as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isEdge → boolean\n api.isEdge = function (...args: unknown[]): boolean {\n return (kernel.isEdge as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isVertex → boolean\n api.isVertex = function (...args: unknown[]): boolean {\n return (kernel.isVertex as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#getSubShapes → ShapeHandle[]\n api.getSubShapes = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.getSubShapes as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#subShapeCount → number\n api.subShapeCount = function (...args: unknown[]): number {\n return (kernel.subShapeCount as (...a: unknown[]) => number).apply(kernel, args)\n }\n\n // OcctKernel#subShapeHashes → number[]\n api.subShapeHashes = function (...args: unknown[]): number[] {\n return (kernel.subShapeHashes as (...a: unknown[]) => number[]).apply(kernel, args)\n }\n\n // OcctKernel#downcast → ShapeHandle\n api.downcast = function (...args: unknown[]): ShapeHandle {\n return (kernel.downcast as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#distanceBetween → number\n api.distanceBetween = function (...args: unknown[]): number {\n return (kernel.distanceBetween as (...a: unknown[]) => number).apply(kernel, args)\n }\n\n // OcctKernel#isSame → boolean\n api.isSame = function (...args: unknown[]): boolean {\n return (kernel.isSame as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isEqual → boolean\n api.isEqual = function (...args: unknown[]): boolean {\n return (kernel.isEqual as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isNull → boolean\n api.isNull = function (...args: unknown[]): boolean {\n return (kernel.isNull as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#hashCode → number\n api.hashCode = function (...args: unknown[]): number {\n return (kernel.hashCode as (...a: unknown[]) => number).apply(kernel, args)\n }\n\n // OcctKernel#shapeOrientation → ShapeOrientation\n api.shapeOrientation = function (...args: unknown[]): ShapeOrientation {\n return (kernel.shapeOrientation as (...a: unknown[]) => ShapeOrientation).apply(kernel, args)\n }\n\n // OcctKernel#sharedEdges → ShapeHandle[]\n api.sharedEdges = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.sharedEdges as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#adjacentFaces → ShapeHandle[]\n api.adjacentFaces = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.adjacentFaces as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#iterShapes → ShapeHandle[]\n api.iterShapes = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.iterShapes as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#edgeToFaceMap → number[]\n api.edgeToFaceMap = function (...args: unknown[]): number[] {\n return (kernel.edgeToFaceMap as (...a: unknown[]) => number[]).apply(kernel, args)\n }\n\n // OcctKernel#tessellate → Mesh\n api.tessellate = function (...args: unknown[]): Mesh {\n return (kernel.tessellate as (...a: unknown[]) => Mesh).apply(kernel, args)\n }\n\n // OcctKernel#wireframe → EdgeData\n api.wireframe = function (...args: unknown[]): EdgeData {\n return (kernel.wireframe as (...a: unknown[]) => EdgeData).apply(kernel, args)\n }\n\n // OcctKernel#hasTriangulation → boolean\n api.hasTriangulation = function (...args: unknown[]): boolean {\n return (kernel.hasTriangulation as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#meshShape → Mesh\n api.meshShape = function (...args: unknown[]): Mesh {\n return (kernel.meshShape as (...a: unknown[]) => Mesh).apply(kernel, args)\n }\n\n // OcctKernel#meshBatch → MeshBatchData\n api.meshBatch = function (...args: unknown[]): MeshBatchData {\n return (kernel.meshBatch as (...a: unknown[]) => MeshBatchData).apply(kernel, args)\n }\n\n // OcctKernel#importStep → ShapeHandle\n api.importStep = function (...args: unknown[]): ShapeHandle {\n return (kernel.importStep as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#exportStep → string\n api.exportStep = function (...args: unknown[]): string {\n return (kernel.exportStep as (...a: unknown[]) => string).apply(kernel, args)\n }\n\n // OcctKernel#importStl → ShapeHandle\n api.importStl = function (...args: unknown[]): ShapeHandle {\n return (kernel.importStl as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#exportStl → string | Uint8Array\n api.exportStl = function (...args: unknown[]): string | Uint8Array {\n return (kernel.exportStl as (...a: unknown[]) => string | Uint8Array).apply(kernel, args)\n }\n\n // OcctKernel#toBREP → string\n api.toBREP = function (...args: unknown[]): string {\n return (kernel.toBREP as (...a: unknown[]) => string).apply(kernel, args)\n }\n\n // OcctKernel#fromBREP → ShapeHandle\n api.fromBREP = function (...args: unknown[]): ShapeHandle {\n return (kernel.fromBREP as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#toBREPBinary → Uint8Array\n api.toBREPBinary = function (...args: unknown[]): Uint8Array {\n return (kernel.toBREPBinary as (...a: unknown[]) => Uint8Array).apply(kernel, args)\n }\n\n // OcctKernel#fromBREPBinary → ShapeHandle\n api.fromBREPBinary = function (...args: unknown[]): ShapeHandle {\n return (kernel.fromBREPBinary as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#cacheStep → string\n api.cacheStep = function (...args: unknown[]): string {\n return (kernel.cacheStep as (...a: unknown[]) => string).apply(kernel, args)\n }\n\n // OcctKernel#loadCached → ShapeHandle\n api.loadCached = function (...args: unknown[]): ShapeHandle {\n return (kernel.loadCached as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#getBoundingBox → BoundingBox\n api.getBoundingBox = function (...args: unknown[]): BoundingBox {\n return (kernel.getBoundingBox as (...a: unknown[]) => BoundingBox).apply(kernel, args)\n }\n\n // OcctKernel#getVolume → number\n api.getVolume = function (...args: unknown[]): number {\n return (kernel.getVolume as (...a: unknown[]) => number).apply(kernel, args)\n }\n\n // OcctKernel#getSurfaceArea → number\n api.getSurfaceArea = function (...args: unknown[]): number {\n return (kernel.getSurfaceArea as (...a: unknown[]) => number).apply(kernel, args)\n }\n\n // OcctKernel#getLength → number\n api.getLength = function (...args: unknown[]): number {\n return (kernel.getLength as (...a: unknown[]) => number).apply(kernel, args)\n }\n\n // OcctKernel#getCenterOfMass → Vec3\n api.getCenterOfMass = function (...args: unknown[]): Vec3 {\n return (kernel.getCenterOfMass as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#getInertia → number[]\n api.getInertia = function (...args: unknown[]): number[] {\n return (kernel.getInertia as (...a: unknown[]) => number[]).apply(kernel, args)\n }\n\n // OcctKernel#containsPoint → boolean\n api.containsPoint = function (...args: unknown[]): boolean {\n return (kernel.containsPoint as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#getSurfaceCenterOfMass → Vec3\n api.getSurfaceCenterOfMass = function (...args: unknown[]): Vec3 {\n return (kernel.getSurfaceCenterOfMass as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#getLinearCenterOfMass → Vec3\n api.getLinearCenterOfMass = function (...args: unknown[]): Vec3 {\n return (kernel.getLinearCenterOfMass as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#surfaceCurvature → CurvatureData\n api.surfaceCurvature = function (...args: unknown[]): CurvatureData {\n return (kernel.surfaceCurvature as (...a: unknown[]) => CurvatureData).apply(kernel, args)\n }\n\n // OcctKernel#vertexPosition → Vec3\n api.vertexPosition = function (...args: unknown[]): Vec3 {\n return (kernel.vertexPosition as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#surfaceType → SurfaceKind\n api.surfaceType = function (...args: unknown[]): SurfaceKind {\n return (kernel.surfaceType as (...a: unknown[]) => SurfaceKind).apply(kernel, args)\n }\n\n // OcctKernel#surfaceNormal → Vec3\n api.surfaceNormal = function (...args: unknown[]): Vec3 {\n return (kernel.surfaceNormal as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#pointOnSurface → Vec3\n api.pointOnSurface = function (...args: unknown[]): Vec3 {\n return (kernel.pointOnSurface as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#outerWire → ShapeHandle\n api.outerWire = function (...args: unknown[]): ShapeHandle {\n return (kernel.outerWire as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#reverseSurfaceU → ShapeHandle\n api.reverseSurfaceU = function (...args: unknown[]): ShapeHandle {\n return (kernel.reverseSurfaceU as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#uvBounds → UVBounds\n api.uvBounds = function (...args: unknown[]): UVBounds {\n return (kernel.uvBounds as (...a: unknown[]) => UVBounds).apply(kernel, args)\n }\n\n // OcctKernel#uvFromPoint → {\n // u: number;\n // v: number;\n // }\n api.uvFromPoint = function (...args: unknown[]): {\n u: number;\n v: number;\n } {\n return (kernel.uvFromPoint as (...a: unknown[]) => {\n u: number;\n v: number;\n }).apply(kernel, args)\n }\n\n // OcctKernel#getFaceCylinderData → {\n // radius: number;\n // isDirect: boolean;\n // } | null\n api.getFaceCylinderData = function (...args: unknown[]): {\n radius: number;\n isDirect: boolean;\n } | null {\n return (kernel.getFaceCylinderData as (...a: unknown[]) => {\n radius: number;\n isDirect: boolean;\n } | null).apply(kernel, args)\n }\n\n // OcctKernel#projectPointOnFace → Vec3\n api.projectPointOnFace = function (...args: unknown[]): Vec3 {\n return (kernel.projectPointOnFace as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#classifyPointOnFace → PointClassification\n api.classifyPointOnFace = function (...args: unknown[]): PointClassification {\n return (kernel.classifyPointOnFace as (...a: unknown[]) => PointClassification).apply(kernel, args)\n }\n\n // OcctKernel#bsplineSurface → ShapeHandle\n api.bsplineSurface = function (...args: unknown[]): ShapeHandle {\n return (kernel.bsplineSurface as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#curveType → CurveKind\n api.curveType = function (...args: unknown[]): CurveKind {\n return (kernel.curveType as (...a: unknown[]) => CurveKind).apply(kernel, args)\n }\n\n // OcctKernel#curvePointAtParam → Vec3\n api.curvePointAtParam = function (...args: unknown[]): Vec3 {\n return (kernel.curvePointAtParam as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#curveTangent → Vec3\n api.curveTangent = function (...args: unknown[]): Vec3 {\n return (kernel.curveTangent as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#curveParameters → {\n // first: number;\n // last: number;\n // }\n api.curveParameters = function (...args: unknown[]): {\n first: number;\n last: number;\n } {\n return (kernel.curveParameters as (...a: unknown[]) => {\n first: number;\n last: number;\n }).apply(kernel, args)\n }\n\n // OcctKernel#curveIsClosed → boolean\n api.curveIsClosed = function (...args: unknown[]): boolean {\n return (kernel.curveIsClosed as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#curveIsPeriodic → boolean\n api.curveIsPeriodic = function (...args: unknown[]): boolean {\n return (kernel.curveIsPeriodic as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#curveLength → number\n api.curveLength = function (...args: unknown[]): number {\n return (kernel.curveLength as (...a: unknown[]) => number).apply(kernel, args)\n }\n\n // OcctKernel#interpolatePoints → ShapeHandle\n api.interpolatePoints = function (...args: unknown[]): ShapeHandle {\n return (kernel.interpolatePoints as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#interpolatePointsWithTangents → ShapeHandle\n api.interpolatePointsWithTangents = function (...args: unknown[]): ShapeHandle {\n return (kernel.interpolatePointsWithTangents as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#projectPointOnEdge → {\n // point: Vec3;\n // tangent: Vec3;\n // parameter: number;\n // }\n api.projectPointOnEdge = function (...args: unknown[]): {\n point: Vec3;\n tangent: Vec3;\n parameter: number;\n } {\n return (kernel.projectPointOnEdge as (...a: unknown[]) => {\n point: Vec3;\n tangent: Vec3;\n parameter: number;\n }).apply(kernel, args)\n }\n\n // OcctKernel#approximatePoints → ShapeHandle\n api.approximatePoints = function (...args: unknown[]): ShapeHandle {\n return (kernel.approximatePoints as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#getNurbsCurveData → NurbsCurveData\n api.getNurbsCurveData = function (...args: unknown[]): NurbsCurveData {\n return (kernel.getNurbsCurveData as (...a: unknown[]) => NurbsCurveData).apply(kernel, args)\n }\n\n // OcctKernel#curveDegreeElevate → ShapeHandle\n api.curveDegreeElevate = function (...args: unknown[]): ShapeHandle {\n return (kernel.curveDegreeElevate as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#curveKnotInsert → ShapeHandle\n api.curveKnotInsert = function (...args: unknown[]): ShapeHandle {\n return (kernel.curveKnotInsert as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#curveKnotRemove → ShapeHandle\n api.curveKnotRemove = function (...args: unknown[]): ShapeHandle {\n return (kernel.curveKnotRemove as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#curveSplit → [ShapeHandle, ShapeHandle]\n api.curveSplit = function (...args: unknown[]): [ShapeHandle, ShapeHandle] {\n return (kernel.curveSplit as (...a: unknown[]) => [ShapeHandle, ShapeHandle]).apply(kernel, args)\n }\n\n // OcctKernel#liftCurve2dToPlane → ShapeHandle\n api.liftCurve2dToPlane = function (...args: unknown[]): ShapeHandle {\n return (kernel.liftCurve2dToPlane as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#projectEdges → ProjectionData\n api.projectEdges = function (...args: unknown[]): ProjectionData {\n return (kernel.projectEdges as (...a: unknown[]) => ProjectionData).apply(kernel, args)\n }\n\n // OcctKernel#toSVG → string\n api.toSVG = function (...args: unknown[]): string {\n return (kernel.toSVG as (...a: unknown[]) => string).apply(kernel, args)\n }\n\n // OcctKernel#toMultiviewSVG → string\n api.toMultiviewSVG = function (...args: unknown[]): string {\n return (kernel.toMultiviewSVG as (...a: unknown[]) => string).apply(kernel, args)\n }\n\n // OcctKernel#toPNG → Promise<Uint8Array>\n api.toPNG = function (...args: unknown[]): Promise<Uint8Array> {\n return (kernel.toPNG as (...a: unknown[]) => Promise<Uint8Array>).apply(kernel, args)\n }\n\n // OcctKernel#toMultiviewPNG → Promise<Uint8Array>\n api.toMultiviewPNG = function (...args: unknown[]): Promise<Uint8Array> {\n return (kernel.toMultiviewPNG as (...a: unknown[]) => Promise<Uint8Array>).apply(kernel, args)\n }\n\n // OcctKernel#thicken → ShapeHandle\n api.thicken = function (...args: unknown[]): ShapeHandle {\n return (kernel.thicken as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#defeature → ShapeHandle\n api.defeature = function (...args: unknown[]): ShapeHandle {\n return (kernel.defeature as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#reverseShape → ShapeHandle\n api.reverseShape = function (...args: unknown[]): ShapeHandle {\n return (kernel.reverseShape as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#simplify → ShapeHandle\n api.simplify = function (...args: unknown[]): ShapeHandle {\n return (kernel.simplify as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#filletVariable → ShapeHandle\n api.filletVariable = function (...args: unknown[]): ShapeHandle {\n return (kernel.filletVariable as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#offsetWire2D → ShapeHandle\n api.offsetWire2D = function (...args: unknown[]): ShapeHandle {\n return (kernel.offsetWire2D as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#translateWithHistory → EvolutionData\n api.translateWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.translateWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#fuseWithHistory → EvolutionData\n api.fuseWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.fuseWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#cutWithHistory → EvolutionData\n api.cutWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.cutWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#filletWithHistory → EvolutionData\n api.filletWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.filletWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#rotateWithHistory → EvolutionData\n api.rotateWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.rotateWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#mirrorWithHistory → EvolutionData\n api.mirrorWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.mirrorWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#scaleWithHistory → EvolutionData\n api.scaleWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.scaleWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#intersectWithHistory → EvolutionData\n api.intersectWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.intersectWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#chamferWithHistory → EvolutionData\n api.chamferWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.chamferWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#shellWithHistory → EvolutionData\n api.shellWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.shellWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#offsetWithHistory → EvolutionData\n api.offsetWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.offsetWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#thickenWithHistory → EvolutionData\n api.thickenWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.thickenWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#fixShape → ShapeHandle\n api.fixShape = function (...args: unknown[]): ShapeHandle {\n return (kernel.fixShape as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#unifySameDomain → ShapeHandle\n api.unifySameDomain = function (...args: unknown[]): ShapeHandle {\n return (kernel.unifySameDomain as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#isValid → boolean\n api.isValid = function (...args: unknown[]): boolean {\n return (kernel.isValid as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#healSolid → ShapeHandle\n api.healSolid = function (...args: unknown[]): ShapeHandle {\n return (kernel.healSolid as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#healFace → ShapeHandle\n api.healFace = function (...args: unknown[]): ShapeHandle {\n return (kernel.healFace as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#healWire → ShapeHandle\n api.healWire = function (...args: unknown[]): ShapeHandle {\n return (kernel.healWire as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#fixFaceOrientations → ShapeHandle\n api.fixFaceOrientations = function (...args: unknown[]): ShapeHandle {\n return (kernel.fixFaceOrientations as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#removeDegenerateEdges → ShapeHandle\n api.removeDegenerateEdges = function (...args: unknown[]): ShapeHandle {\n return (kernel.removeDegenerateEdges as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#buildCurves3d → void\n api.buildCurves3d = function (...args: unknown[]): void {\n const mark = kernel.checkpoint()\n try {\n ;(kernel.buildCurves3d as (...a: unknown[]) => void).apply(kernel, args)\n } finally {\n kernel.releaseSince(mark)\n }\n }\n\n // OcctKernel#fixWireOnFace → ShapeHandle\n api.fixWireOnFace = function (...args: unknown[]): ShapeHandle {\n return (kernel.fixWireOnFace as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#createXCAFDocument → XCAFDocument\n api.createXCAFDocument = function (...args: unknown[]): XCAFDocument {\n return (kernel.createXCAFDocument as (...a: unknown[]) => XCAFDocument).apply(kernel, args)\n }\n\n // OcctKernel#importXCAFFromSTEP → XCAFDocument\n api.importXCAFFromSTEP = function (...args: unknown[]): XCAFDocument {\n return (kernel.importXCAFFromSTEP as (...a: unknown[]) => XCAFDocument).apply(kernel, args)\n }\n\n // OcctKernel#release → void\n api.release = function (...args: unknown[]): void {\n const mark = kernel.checkpoint()\n try {\n ;(kernel.release as (...a: unknown[]) => void).apply(kernel, args)\n } finally {\n kernel.releaseSince(mark)\n }\n }\n\n // OcctKernel#checkpoint → number\n api.checkpoint = function (...args: unknown[]): number {\n return (kernel.checkpoint as (...a: unknown[]) => number).apply(kernel, args)\n }\n\n // OcctKernel#releaseSince → void\n api.releaseSince = function (...args: unknown[]): void {\n const mark = kernel.checkpoint()\n try {\n ;(kernel.releaseSince as (...a: unknown[]) => void).apply(kernel, args)\n } finally {\n kernel.releaseSince(mark)\n }\n }\n\n // OcctKernel#describe → string\n api.describe = function (...args: unknown[]): string {\n return (kernel.describe as (...a: unknown[]) => string).apply(kernel, args)\n }\n\n return api as unknown as OcctPlatformApi\n}\n"]}
@@ -2,8 +2,8 @@
2
2
  * Pure-TS 3D convex hull (QuickHull).
3
3
  *
4
4
  * 第一方模块(2026-09-25 core-decouple Phase 2 §5.1):复制自 brepjs
5
- * `src/kernel/hullGeometry.ts`(同源复制,签名不变;brepjs 包 Phase 5 删除后
6
- * 仍由本文件承担)。
5
+ * `src/kernel/hullGeometry.ts`(同源复制,签名不变;已内化为第一方代码,
6
+ * 由本文件承担)。
7
7
  *
8
8
  * Kernel-agnostic: operates on plain {x,y,z} points and returns triangle
9
9
  * indices. Shared by the occt and occt-wasm adapters, which supply their own
@@ -2,8 +2,8 @@
2
2
  * Pure-TS 3D convex hull (QuickHull).
3
3
  *
4
4
  * 第一方模块(2026-09-25 core-decouple Phase 2 §5.1):复制自 brepjs
5
- * `src/kernel/hullGeometry.ts`(同源复制,签名不变;brepjs 包 Phase 5 删除后
6
- * 仍由本文件承担)。
5
+ * `src/kernel/hullGeometry.ts`(同源复制,签名不变;已内化为第一方代码,
6
+ * 由本文件承担)。
7
7
  *
8
8
  * Kernel-agnostic: operates on plain {x,y,z} points and returns triangle
9
9
  * indices. Shared by the occt and occt-wasm adapters, which supply their own
@@ -166,7 +166,6 @@ function findInitialTetrahedron(points) {
166
166
  * @returns The hull faces (triangle indices) and deduplicated points.
167
167
  * @throws if fewer than 4 non-coincident, non-coplanar points are supplied.
168
168
  */
169
- // brepjs-patterns-disable: max-function-lines -- cohesive QuickHull main loop; splitting hurts readability
170
169
  export function quickHull(inputPoints, tolerance) {
171
170
  const points = deduplicatePoints(inputPoints, tolerance);
172
171
  if (points.length < 4) {
@@ -1 +1 @@
1
- {"version":3,"file":"hullGeometry.js","sourceRoot":"","sources":["../../src/occt-kernel/hullGeometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,SAAS,GAAG,CAAC,CAAO,EAAE,CAAO;IAC3B,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,KAAK,CAAC,CAAO,EAAE,CAAO;IAC7B,OAAO;QACL,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,GAAG,CAAC,CAAO,EAAE,CAAO;IAC3B,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,SAAS,CAAC,CAAO;IACxB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,MAAM,CAAC,CAAO,EAAE,CAAO;IAC9B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrC,CAAC;AAED,kFAAkF;AAClF,SAAS,EAAE,CAAC,GAAoB,EAAE,CAAS;IACzC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACjB,IAAI,CAAC,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,gCAAgC;AAChC,SAAS,GAAG,CAAC,GAAsB,EAAE,CAAS;IAC5C,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACjB,IAAI,CAAC,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjE,OAAO,CAAC,CAAC;AACX,CAAC;AAgBD,SAAS,QAAQ,CAAC,MAAuB,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IACxE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7F,OAAO;QACL,CAAC;QACD,CAAC;QACD,CAAC;QACD,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7B,KAAK,EAAE,IAAI;QACX,aAAa,EAAE,EAAE;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAc,EAAE,KAAW;IAC7C,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAC/C,CAAC;AAED,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,SAAS,iBAAiB,CAAC,MAAc,EAAE,SAAiB;IAC1D,MAAM,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;IACpC,MAAM,MAAM,GAAW,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC;gBACzB,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,WAAW;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,SAAS,sBAAsB,CAAC,MAAuB;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvB,gFAAgF;IAChF,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;gBAChB,OAAO,GAAG,CAAC,CAAC;gBACZ,EAAE,GAAG,CAAC,CAAC;gBACP,EAAE,GAAG,CAAC,CAAC;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG,KAAK;QAAE,OAAO,IAAI,CAAC;IAEjC,0CAA0C;IAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACZ,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YAAE,SAAS;QACnC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC;YACpB,WAAW,GAAG,CAAC,CAAC;YAChB,EAAE,GAAG,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IAED,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,WAAW,GAAG,KAAK;QAAE,OAAO,IAAI,CAAC;IAElD,8CAA8C;IAC9C,MAAM,WAAW,GAAG,KAAK,CACvB,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EACnC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CACpC,CAAC;IACF,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,IAAI,QAAQ,GAAG,KAAK;QAAE,OAAO,IAAI,CAAC;IAElC,MAAM,EAAE,GAAG;QACT,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,QAAQ;QAC3B,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,QAAQ;QAC3B,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,QAAQ;KAC5B,CAAC;IACF,MAAM,WAAW,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAE5C,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACZ,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YAAE,SAAS;QAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC;YACrB,YAAY,GAAG,CAAC,CAAC;YACjB,EAAE,GAAG,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IAED,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,YAAY,GAAG,KAAK;QAAE,OAAO,IAAI,CAAC;IAEnD,6DAA6D;IAC7D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC;IACjD,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB;IAC/C,CAAC;IACD,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;;;;;GAOG;AACH,2GAA2G;AAC3G,MAAM,UAAU,SAAS,CAAC,WAAmB,EAAE,SAAiB;IAC9D,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEzD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,MAAM,CAAC,MAAM,KAAK,CAAC;YACjB,CAAC,CAAC,oCAAoC;YACtC,CAAC,CAAC,kEAAkE,CACvE,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;IAE7B,+DAA+D;IAC/D,MAAM,QAAQ,GAAS;QACrB,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAClF,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAClF,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;KACnF,CAAC;IAEF,iEAAiE;IACjE,SAAS,eAAe,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,qDAAqD;QACrD,MAAM,UAAU,GAAS;YACvB,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5D,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5D,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;SAC7D,CAAC;QACF,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,6BAA6B;YAC7B,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAe;QACxB,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3B,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3B,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3B,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;KAC5B,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAEzC,oFAAoF;IACpF,oFAAoF;IACpF,MAAM,OAAO,GAAG,KAAK,CAAC;IAEtB,sDAAsD;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;gBAC9C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;QACnE,kCAAkC;QAClC,IAAI,WAAW,GAAoB,IAAI,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,WAAW,KAAK,IAAI;YAAE,MAAM;QAEhC,yCAAyC;QACzC,IAAI,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;QACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1D,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC;gBACrB,YAAY,GAAG,CAAC,CAAC;gBACjB,WAAW,GAAG,GAAG,CAAC;YACpB,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,MAAM,YAAY,GAAe,EAAE,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;gBACtE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,gEAAgE;QAChE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAmD,CAAC;QAC7E,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,KAAK,GAAuB;gBAChC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAChB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAChB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;aACjB,CAAC;YACF,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;gBACpD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,2CAA2C;oBAC3C,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAoC,EAAE,CAAC;QACzD,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;gBACtB,sEAAsE;gBACtE,gDAAgD;gBAChD,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,qDAAqD;QACrD,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrC,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;oBACxB,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAC1B,CAAC;QAED,4DAA4D;QAC5D,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YACjE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;QAED,wCAAwC;QACxC,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;oBAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC7B,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM,WAAW,GAA6C,EAAE,CAAC;IACjE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAU,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC","sourcesContent":["/**\n * Pure-TS 3D convex hull (QuickHull).\n *\n * 第一方模块(2026-09-25 core-decouple Phase 2 §5.1):复制自 brepjs\n * `src/kernel/hullGeometry.ts`(同源复制,签名不变;brepjs 包 Phase 5 删除后\n * 仍由本文件承担)。\n *\n * Kernel-agnostic: operates on plain {x,y,z} points and returns triangle\n * indices. Shared by the occt and occt-wasm adapters, which supply their own\n * vertex extraction and BREP reconstruction around it.\n */\n\nexport interface Vec3 {\n readonly x: number;\n readonly y: number;\n readonly z: number;\n}\n\n/** Result of a QuickHull computation: hull triangle indices and deduplicated points. */\nexport interface HullResult {\n readonly faces: ReadonlyArray<readonly [number, number, number]>;\n readonly points: readonly Vec3[];\n}\n\n// ---------------------------------------------------------------------------\n// Vector math helpers\n// ---------------------------------------------------------------------------\n\nfunction sub(a: Vec3, b: Vec3): Vec3 {\n return { x: a.x - b.x, y: a.y - b.y, z: a.z - b.z };\n}\n\nfunction cross(a: Vec3, b: Vec3): Vec3 {\n return {\n x: a.y * b.z - a.z * b.y,\n y: a.z * b.x - a.x * b.z,\n z: a.x * b.y - a.y * b.x,\n };\n}\n\nfunction dot(a: Vec3, b: Vec3): number {\n return a.x * b.x + a.y * b.y + a.z * b.z;\n}\n\nfunction lengthVec(v: Vec3): number {\n return Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z);\n}\n\nfunction distSq(a: Vec3, b: Vec3): number {\n const dx = a.x - b.x;\n const dy = a.y - b.y;\n const dz = a.z - b.z;\n return dx * dx + dy * dy + dz * dz;\n}\n\n/** Safe array access — throws on out-of-bounds instead of returning undefined. */\nfunction at(arr: readonly Vec3[], i: number): Vec3 {\n const v = arr[i];\n if (v === undefined) throw new Error(`Index ${i} out of bounds`);\n return v;\n}\n\n/** Safe number array access. */\nfunction atN(arr: readonly number[], i: number): number {\n const v = arr[i];\n if (v === undefined) throw new Error(`Index ${i} out of bounds`);\n return v;\n}\n\n// ---------------------------------------------------------------------------\n// QuickHull face\n// ---------------------------------------------------------------------------\n\ninterface HullFace {\n readonly a: number; // indices into points array\n readonly b: number;\n readonly c: number;\n readonly normal: Vec3;\n readonly offset: number; // dot(normal, points[a])\n alive: boolean;\n outsidePoints: number[];\n}\n\nfunction makeFace(points: readonly Vec3[], a: number, b: number, c: number): HullFace {\n const normal = cross(sub(at(points, b), at(points, a)), sub(at(points, c), at(points, a)));\n const len = lengthVec(normal);\n const n = len > 1e-14 ? { x: normal.x / len, y: normal.y / len, z: normal.z / len } : normal;\n return {\n a,\n b,\n c,\n normal: n,\n offset: dot(n, at(points, a)),\n alive: true,\n outsidePoints: [],\n };\n}\n\nfunction signedDist(face: HullFace, point: Vec3): number {\n return dot(face.normal, point) - face.offset;\n}\n\n// ---------------------------------------------------------------------------\n// Deduplication\n// ---------------------------------------------------------------------------\n\nfunction deduplicatePoints(points: Vec3[], tolerance: number): Vec3[] {\n const tolSq = tolerance * tolerance;\n const result: Vec3[] = [];\n for (const p of points) {\n let isDuplicate = false;\n for (const q of result) {\n if (distSq(p, q) < tolSq) {\n isDuplicate = true;\n break;\n }\n }\n if (!isDuplicate) result.push(p);\n }\n return result;\n}\n\n// ---------------------------------------------------------------------------\n// Initial tetrahedron\n// ---------------------------------------------------------------------------\n\nfunction findInitialTetrahedron(points: readonly Vec3[]): [number, number, number, number] | null {\n const n = points.length;\n if (n < 4) return null;\n\n // Find two most distant points along each axis, pick the pair with max distance\n let i0 = 0;\n let i1 = 1;\n let maxDist = distSq(at(points, 0), at(points, 1));\n\n for (let i = 0; i < n; i++) {\n for (let j = i + 1; j < n; j++) {\n const d = distSq(at(points, i), at(points, j));\n if (d > maxDist) {\n maxDist = d;\n i0 = i;\n i1 = j;\n }\n }\n }\n\n if (maxDist < 1e-20) return null;\n\n // Find point most distant from line i0-i1\n const lineDir = sub(at(points, i1), at(points, i0));\n let i2 = -1;\n let maxLineDist = -1;\n\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1) continue;\n const v = sub(at(points, i), at(points, i0));\n const c = cross(lineDir, v);\n const d = dot(c, c);\n if (d > maxLineDist) {\n maxLineDist = d;\n i2 = i;\n }\n }\n\n if (i2 === -1 || maxLineDist < 1e-20) return null;\n\n // Find point most distant from plane i0-i1-i2\n const planeNormal = cross(\n sub(at(points, i1), at(points, i0)),\n sub(at(points, i2), at(points, i0))\n );\n const planeLen = lengthVec(planeNormal);\n if (planeLen < 1e-14) return null;\n\n const pn = {\n x: planeNormal.x / planeLen,\n y: planeNormal.y / planeLen,\n z: planeNormal.z / planeLen,\n };\n const planeOffset = dot(pn, at(points, i0));\n\n let i3 = -1;\n let maxPlaneDist = -1;\n\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1 || i === i2) continue;\n const d = Math.abs(dot(pn, at(points, i)) - planeOffset);\n if (d > maxPlaneDist) {\n maxPlaneDist = d;\n i3 = i;\n }\n }\n\n if (i3 === -1 || maxPlaneDist < 1e-14) return null;\n\n // Orient tetrahedron so that i3 is \"above\" the base triangle\n const sd = dot(pn, at(points, i3)) - planeOffset;\n if (sd > 0) {\n return [i0, i2, i1, i3]; // flip base winding\n }\n return [i0, i1, i2, i3];\n}\n\n// ---------------------------------------------------------------------------\n// QuickHull\n// ---------------------------------------------------------------------------\n\n/**\n * Compute the 3D convex hull of a point set.\n *\n * @param inputPoints - Input points to build the hull from.\n * @param tolerance - Coincidence tolerance for point deduplication.\n * @returns The hull faces (triangle indices) and deduplicated points.\n * @throws if fewer than 4 non-coincident, non-coplanar points are supplied.\n */\n// brepjs-patterns-disable: max-function-lines -- cohesive QuickHull main loop; splitting hurts readability\nexport function quickHull(inputPoints: Vec3[], tolerance: number): HullResult {\n const points = deduplicatePoints(inputPoints, tolerance);\n\n if (points.length < 4) {\n throw new Error(\n points.length === 0\n ? 'No points provided for convex hull'\n : 'Fewer than 4 non-coincident points; cannot form a 3D convex hull'\n );\n }\n\n const tet = findInitialTetrahedron(points);\n if (tet === null) {\n throw new Error('All points are coplanar; cannot form a 3D convex hull');\n }\n\n const [t0, t1, t2, t3] = tet;\n\n // Centroid of initial tetrahedron for ensuring outward normals\n const centroid: Vec3 = {\n x: (at(points, t0).x + at(points, t1).x + at(points, t2).x + at(points, t3).x) / 4,\n y: (at(points, t0).y + at(points, t1).y + at(points, t2).y + at(points, t3).y) / 4,\n z: (at(points, t0).z + at(points, t1).z + at(points, t2).z + at(points, t3).z) / 4,\n };\n\n // Build initial 4 faces of tetrahedron, ensuring outward normals\n function makeOutwardFace(a: number, b: number, c: number): HullFace {\n const face = makeFace(points, a, b, c);\n // If normal points toward centroid, flip the winding\n const faceCenter: Vec3 = {\n x: (at(points, a).x + at(points, b).x + at(points, c).x) / 3,\n y: (at(points, a).y + at(points, b).y + at(points, c).y) / 3,\n z: (at(points, a).z + at(points, b).z + at(points, c).z) / 3,\n };\n const toCentroid = sub(centroid, faceCenter);\n if (dot(face.normal, toCentroid) > 0) {\n // Normal points inward, flip\n return makeFace(points, a, c, b);\n }\n return face;\n }\n\n const faces: HullFace[] = [\n makeOutwardFace(t0, t1, t2),\n makeOutwardFace(t0, t2, t3),\n makeOutwardFace(t0, t3, t1),\n makeOutwardFace(t1, t3, t2),\n ];\n\n const tetSet = new Set([t0, t1, t2, t3]);\n\n // Use a small geometric epsilon for \"outside\" tests, independent of mesh tolerance.\n // Mesh tolerance controls deduplication; hull geometry uses a much tighter epsilon.\n const epsilon = 1e-10;\n\n // Assign each non-tet point to the first visible face\n for (let i = 0; i < points.length; i++) {\n if (tetSet.has(i)) continue;\n for (const face of faces) {\n if (signedDist(face, at(points, i)) > epsilon) {\n face.outsidePoints.push(i);\n break;\n }\n }\n }\n\n for (let iteration = 0; iteration < points.length * 4; iteration++) {\n // Find a face with outside points\n let currentFace: HullFace | null = null;\n for (const face of faces) {\n if (face.alive && face.outsidePoints.length > 0) {\n currentFace = face;\n break;\n }\n }\n if (currentFace === null) break;\n\n // Find the furthest point from this face\n let furthestIdx = atN(currentFace.outsidePoints, 0);\n let furthestDist = signedDist(currentFace, at(points, furthestIdx));\n for (let i = 1; i < currentFace.outsidePoints.length; i++) {\n const idx = atN(currentFace.outsidePoints, i);\n const d = signedDist(currentFace, at(points, idx));\n if (d > furthestDist) {\n furthestDist = d;\n furthestIdx = idx;\n }\n }\n\n // Find all visible faces from this point\n const visibleFaces: HullFace[] = [];\n for (const face of faces) {\n if (face.alive && signedDist(face, at(points, furthestIdx)) > epsilon) {\n visibleFaces.push(face);\n }\n }\n\n // Find horizon edges (edges shared by exactly one visible face)\n const edgeCount = new Map<string, { a: number; b: number; count: number }>();\n for (const face of visibleFaces) {\n const edges: [number, number][] = [\n [face.a, face.b],\n [face.b, face.c],\n [face.c, face.a],\n ];\n for (const [ea, eb] of edges) {\n const key = ea < eb ? `${ea}-${eb}` : `${eb}-${ea}`;\n const entry = edgeCount.get(key);\n if (entry) {\n entry.count++;\n } else {\n // Store in the order from the visible face\n edgeCount.set(key, { a: ea, b: eb, count: 1 });\n }\n }\n }\n\n const horizonEdges: Array<{ a: number; b: number }> = [];\n for (const entry of edgeCount.values()) {\n if (entry.count === 1) {\n // Keep edge in same direction as the visible face; makeFace with apex\n // produces outward normal by winding convention\n horizonEdges.push({ a: entry.a, b: entry.b });\n }\n }\n\n // Collect orphaned outside points from visible faces\n const orphanedPoints: number[] = [];\n for (const face of visibleFaces) {\n for (const idx of face.outsidePoints) {\n if (idx !== furthestIdx) {\n orphanedPoints.push(idx);\n }\n }\n face.alive = false;\n face.outsidePoints = [];\n }\n\n // Create new faces from horizon edges to the furthest point\n const newFaces: HullFace[] = [];\n for (const edge of horizonEdges) {\n const newFaceObj = makeFace(points, edge.a, edge.b, furthestIdx);\n newFaces.push(newFaceObj);\n faces.push(newFaceObj);\n }\n\n // Reassign orphaned points to new faces\n for (const idx of orphanedPoints) {\n for (const face of newFaces) {\n if (signedDist(face, at(points, idx)) > epsilon) {\n face.outsidePoints.push(idx);\n break;\n }\n }\n }\n }\n\n // Collect alive faces\n const resultFaces: Array<readonly [number, number, number]> = [];\n for (const face of faces) {\n if (face.alive) {\n resultFaces.push([face.a, face.b, face.c] as const);\n }\n }\n\n return { faces: resultFaces, points };\n}\n"]}
1
+ {"version":3,"file":"hullGeometry.js","sourceRoot":"","sources":["../../src/occt-kernel/hullGeometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,SAAS,GAAG,CAAC,CAAO,EAAE,CAAO;IAC3B,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,KAAK,CAAC,CAAO,EAAE,CAAO;IAC7B,OAAO;QACL,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,GAAG,CAAC,CAAO,EAAE,CAAO;IAC3B,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,SAAS,CAAC,CAAO;IACxB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,MAAM,CAAC,CAAO,EAAE,CAAO;IAC9B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrC,CAAC;AAED,kFAAkF;AAClF,SAAS,EAAE,CAAC,GAAoB,EAAE,CAAS;IACzC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACjB,IAAI,CAAC,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,gCAAgC;AAChC,SAAS,GAAG,CAAC,GAAsB,EAAE,CAAS;IAC5C,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACjB,IAAI,CAAC,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjE,OAAO,CAAC,CAAC;AACX,CAAC;AAgBD,SAAS,QAAQ,CAAC,MAAuB,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IACxE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7F,OAAO;QACL,CAAC;QACD,CAAC;QACD,CAAC;QACD,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7B,KAAK,EAAE,IAAI;QACX,aAAa,EAAE,EAAE;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAc,EAAE,KAAW;IAC7C,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAC/C,CAAC;AAED,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,SAAS,iBAAiB,CAAC,MAAc,EAAE,SAAiB;IAC1D,MAAM,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;IACpC,MAAM,MAAM,GAAW,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC;gBACzB,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,WAAW;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,SAAS,sBAAsB,CAAC,MAAuB;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvB,gFAAgF;IAChF,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;gBAChB,OAAO,GAAG,CAAC,CAAC;gBACZ,EAAE,GAAG,CAAC,CAAC;gBACP,EAAE,GAAG,CAAC,CAAC;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG,KAAK;QAAE,OAAO,IAAI,CAAC;IAEjC,0CAA0C;IAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACZ,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YAAE,SAAS;QACnC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC;YACpB,WAAW,GAAG,CAAC,CAAC;YAChB,EAAE,GAAG,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IAED,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,WAAW,GAAG,KAAK;QAAE,OAAO,IAAI,CAAC;IAElD,8CAA8C;IAC9C,MAAM,WAAW,GAAG,KAAK,CACvB,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EACnC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CACpC,CAAC;IACF,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,IAAI,QAAQ,GAAG,KAAK;QAAE,OAAO,IAAI,CAAC;IAElC,MAAM,EAAE,GAAG;QACT,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,QAAQ;QAC3B,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,QAAQ;QAC3B,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,QAAQ;KAC5B,CAAC;IACF,MAAM,WAAW,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAE5C,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACZ,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YAAE,SAAS;QAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC;YACrB,YAAY,GAAG,CAAC,CAAC;YACjB,EAAE,GAAG,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IAED,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,YAAY,GAAG,KAAK;QAAE,OAAO,IAAI,CAAC;IAEnD,6DAA6D;IAC7D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC;IACjD,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB;IAC/C,CAAC;IACD,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;;;;;GAOG;AAEH,MAAM,UAAU,SAAS,CAAC,WAAmB,EAAE,SAAiB;IAC9D,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEzD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,MAAM,CAAC,MAAM,KAAK,CAAC;YACjB,CAAC,CAAC,oCAAoC;YACtC,CAAC,CAAC,kEAAkE,CACvE,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;IAE7B,+DAA+D;IAC/D,MAAM,QAAQ,GAAS;QACrB,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAClF,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAClF,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;KACnF,CAAC;IAEF,iEAAiE;IACjE,SAAS,eAAe,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,qDAAqD;QACrD,MAAM,UAAU,GAAS;YACvB,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5D,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5D,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;SAC7D,CAAC;QACF,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,6BAA6B;YAC7B,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAe;QACxB,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3B,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3B,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3B,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;KAC5B,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAEzC,oFAAoF;IACpF,oFAAoF;IACpF,MAAM,OAAO,GAAG,KAAK,CAAC;IAEtB,sDAAsD;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;gBAC9C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;QACnE,kCAAkC;QAClC,IAAI,WAAW,GAAoB,IAAI,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,WAAW,KAAK,IAAI;YAAE,MAAM;QAEhC,yCAAyC;QACzC,IAAI,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;QACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1D,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC;gBACrB,YAAY,GAAG,CAAC,CAAC;gBACjB,WAAW,GAAG,GAAG,CAAC;YACpB,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,MAAM,YAAY,GAAe,EAAE,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;gBACtE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,gEAAgE;QAChE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAmD,CAAC;QAC7E,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,KAAK,GAAuB;gBAChC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAChB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAChB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;aACjB,CAAC;YACF,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;gBACpD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,2CAA2C;oBAC3C,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAoC,EAAE,CAAC;QACzD,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;gBACtB,sEAAsE;gBACtE,gDAAgD;gBAChD,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,qDAAqD;QACrD,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrC,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;oBACxB,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAC1B,CAAC;QAED,4DAA4D;QAC5D,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YACjE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;QAED,wCAAwC;QACxC,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;oBAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC7B,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM,WAAW,GAA6C,EAAE,CAAC;IACjE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAU,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC","sourcesContent":["/**\n * Pure-TS 3D convex hull (QuickHull).\n *\n * 第一方模块(2026-09-25 core-decouple Phase 2 §5.1):复制自 brepjs\n * `src/kernel/hullGeometry.ts`(同源复制,签名不变;已内化为第一方代码,\n * 由本文件承担)。\n *\n * Kernel-agnostic: operates on plain {x,y,z} points and returns triangle\n * indices. Shared by the occt and occt-wasm adapters, which supply their own\n * vertex extraction and BREP reconstruction around it.\n */\n\nexport interface Vec3 {\n readonly x: number;\n readonly y: number;\n readonly z: number;\n}\n\n/** Result of a QuickHull computation: hull triangle indices and deduplicated points. */\nexport interface HullResult {\n readonly faces: ReadonlyArray<readonly [number, number, number]>;\n readonly points: readonly Vec3[];\n}\n\n// ---------------------------------------------------------------------------\n// Vector math helpers\n// ---------------------------------------------------------------------------\n\nfunction sub(a: Vec3, b: Vec3): Vec3 {\n return { x: a.x - b.x, y: a.y - b.y, z: a.z - b.z };\n}\n\nfunction cross(a: Vec3, b: Vec3): Vec3 {\n return {\n x: a.y * b.z - a.z * b.y,\n y: a.z * b.x - a.x * b.z,\n z: a.x * b.y - a.y * b.x,\n };\n}\n\nfunction dot(a: Vec3, b: Vec3): number {\n return a.x * b.x + a.y * b.y + a.z * b.z;\n}\n\nfunction lengthVec(v: Vec3): number {\n return Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z);\n}\n\nfunction distSq(a: Vec3, b: Vec3): number {\n const dx = a.x - b.x;\n const dy = a.y - b.y;\n const dz = a.z - b.z;\n return dx * dx + dy * dy + dz * dz;\n}\n\n/** Safe array access — throws on out-of-bounds instead of returning undefined. */\nfunction at(arr: readonly Vec3[], i: number): Vec3 {\n const v = arr[i];\n if (v === undefined) throw new Error(`Index ${i} out of bounds`);\n return v;\n}\n\n/** Safe number array access. */\nfunction atN(arr: readonly number[], i: number): number {\n const v = arr[i];\n if (v === undefined) throw new Error(`Index ${i} out of bounds`);\n return v;\n}\n\n// ---------------------------------------------------------------------------\n// QuickHull face\n// ---------------------------------------------------------------------------\n\ninterface HullFace {\n readonly a: number; // indices into points array\n readonly b: number;\n readonly c: number;\n readonly normal: Vec3;\n readonly offset: number; // dot(normal, points[a])\n alive: boolean;\n outsidePoints: number[];\n}\n\nfunction makeFace(points: readonly Vec3[], a: number, b: number, c: number): HullFace {\n const normal = cross(sub(at(points, b), at(points, a)), sub(at(points, c), at(points, a)));\n const len = lengthVec(normal);\n const n = len > 1e-14 ? { x: normal.x / len, y: normal.y / len, z: normal.z / len } : normal;\n return {\n a,\n b,\n c,\n normal: n,\n offset: dot(n, at(points, a)),\n alive: true,\n outsidePoints: [],\n };\n}\n\nfunction signedDist(face: HullFace, point: Vec3): number {\n return dot(face.normal, point) - face.offset;\n}\n\n// ---------------------------------------------------------------------------\n// Deduplication\n// ---------------------------------------------------------------------------\n\nfunction deduplicatePoints(points: Vec3[], tolerance: number): Vec3[] {\n const tolSq = tolerance * tolerance;\n const result: Vec3[] = [];\n for (const p of points) {\n let isDuplicate = false;\n for (const q of result) {\n if (distSq(p, q) < tolSq) {\n isDuplicate = true;\n break;\n }\n }\n if (!isDuplicate) result.push(p);\n }\n return result;\n}\n\n// ---------------------------------------------------------------------------\n// Initial tetrahedron\n// ---------------------------------------------------------------------------\n\nfunction findInitialTetrahedron(points: readonly Vec3[]): [number, number, number, number] | null {\n const n = points.length;\n if (n < 4) return null;\n\n // Find two most distant points along each axis, pick the pair with max distance\n let i0 = 0;\n let i1 = 1;\n let maxDist = distSq(at(points, 0), at(points, 1));\n\n for (let i = 0; i < n; i++) {\n for (let j = i + 1; j < n; j++) {\n const d = distSq(at(points, i), at(points, j));\n if (d > maxDist) {\n maxDist = d;\n i0 = i;\n i1 = j;\n }\n }\n }\n\n if (maxDist < 1e-20) return null;\n\n // Find point most distant from line i0-i1\n const lineDir = sub(at(points, i1), at(points, i0));\n let i2 = -1;\n let maxLineDist = -1;\n\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1) continue;\n const v = sub(at(points, i), at(points, i0));\n const c = cross(lineDir, v);\n const d = dot(c, c);\n if (d > maxLineDist) {\n maxLineDist = d;\n i2 = i;\n }\n }\n\n if (i2 === -1 || maxLineDist < 1e-20) return null;\n\n // Find point most distant from plane i0-i1-i2\n const planeNormal = cross(\n sub(at(points, i1), at(points, i0)),\n sub(at(points, i2), at(points, i0))\n );\n const planeLen = lengthVec(planeNormal);\n if (planeLen < 1e-14) return null;\n\n const pn = {\n x: planeNormal.x / planeLen,\n y: planeNormal.y / planeLen,\n z: planeNormal.z / planeLen,\n };\n const planeOffset = dot(pn, at(points, i0));\n\n let i3 = -1;\n let maxPlaneDist = -1;\n\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1 || i === i2) continue;\n const d = Math.abs(dot(pn, at(points, i)) - planeOffset);\n if (d > maxPlaneDist) {\n maxPlaneDist = d;\n i3 = i;\n }\n }\n\n if (i3 === -1 || maxPlaneDist < 1e-14) return null;\n\n // Orient tetrahedron so that i3 is \"above\" the base triangle\n const sd = dot(pn, at(points, i3)) - planeOffset;\n if (sd > 0) {\n return [i0, i2, i1, i3]; // flip base winding\n }\n return [i0, i1, i2, i3];\n}\n\n// ---------------------------------------------------------------------------\n// QuickHull\n// ---------------------------------------------------------------------------\n\n/**\n * Compute the 3D convex hull of a point set.\n *\n * @param inputPoints - Input points to build the hull from.\n * @param tolerance - Coincidence tolerance for point deduplication.\n * @returns The hull faces (triangle indices) and deduplicated points.\n * @throws if fewer than 4 non-coincident, non-coplanar points are supplied.\n */\n\nexport function quickHull(inputPoints: Vec3[], tolerance: number): HullResult {\n const points = deduplicatePoints(inputPoints, tolerance);\n\n if (points.length < 4) {\n throw new Error(\n points.length === 0\n ? 'No points provided for convex hull'\n : 'Fewer than 4 non-coincident points; cannot form a 3D convex hull'\n );\n }\n\n const tet = findInitialTetrahedron(points);\n if (tet === null) {\n throw new Error('All points are coplanar; cannot form a 3D convex hull');\n }\n\n const [t0, t1, t2, t3] = tet;\n\n // Centroid of initial tetrahedron for ensuring outward normals\n const centroid: Vec3 = {\n x: (at(points, t0).x + at(points, t1).x + at(points, t2).x + at(points, t3).x) / 4,\n y: (at(points, t0).y + at(points, t1).y + at(points, t2).y + at(points, t3).y) / 4,\n z: (at(points, t0).z + at(points, t1).z + at(points, t2).z + at(points, t3).z) / 4,\n };\n\n // Build initial 4 faces of tetrahedron, ensuring outward normals\n function makeOutwardFace(a: number, b: number, c: number): HullFace {\n const face = makeFace(points, a, b, c);\n // If normal points toward centroid, flip the winding\n const faceCenter: Vec3 = {\n x: (at(points, a).x + at(points, b).x + at(points, c).x) / 3,\n y: (at(points, a).y + at(points, b).y + at(points, c).y) / 3,\n z: (at(points, a).z + at(points, b).z + at(points, c).z) / 3,\n };\n const toCentroid = sub(centroid, faceCenter);\n if (dot(face.normal, toCentroid) > 0) {\n // Normal points inward, flip\n return makeFace(points, a, c, b);\n }\n return face;\n }\n\n const faces: HullFace[] = [\n makeOutwardFace(t0, t1, t2),\n makeOutwardFace(t0, t2, t3),\n makeOutwardFace(t0, t3, t1),\n makeOutwardFace(t1, t3, t2),\n ];\n\n const tetSet = new Set([t0, t1, t2, t3]);\n\n // Use a small geometric epsilon for \"outside\" tests, independent of mesh tolerance.\n // Mesh tolerance controls deduplication; hull geometry uses a much tighter epsilon.\n const epsilon = 1e-10;\n\n // Assign each non-tet point to the first visible face\n for (let i = 0; i < points.length; i++) {\n if (tetSet.has(i)) continue;\n for (const face of faces) {\n if (signedDist(face, at(points, i)) > epsilon) {\n face.outsidePoints.push(i);\n break;\n }\n }\n }\n\n for (let iteration = 0; iteration < points.length * 4; iteration++) {\n // Find a face with outside points\n let currentFace: HullFace | null = null;\n for (const face of faces) {\n if (face.alive && face.outsidePoints.length > 0) {\n currentFace = face;\n break;\n }\n }\n if (currentFace === null) break;\n\n // Find the furthest point from this face\n let furthestIdx = atN(currentFace.outsidePoints, 0);\n let furthestDist = signedDist(currentFace, at(points, furthestIdx));\n for (let i = 1; i < currentFace.outsidePoints.length; i++) {\n const idx = atN(currentFace.outsidePoints, i);\n const d = signedDist(currentFace, at(points, idx));\n if (d > furthestDist) {\n furthestDist = d;\n furthestIdx = idx;\n }\n }\n\n // Find all visible faces from this point\n const visibleFaces: HullFace[] = [];\n for (const face of faces) {\n if (face.alive && signedDist(face, at(points, furthestIdx)) > epsilon) {\n visibleFaces.push(face);\n }\n }\n\n // Find horizon edges (edges shared by exactly one visible face)\n const edgeCount = new Map<string, { a: number; b: number; count: number }>();\n for (const face of visibleFaces) {\n const edges: [number, number][] = [\n [face.a, face.b],\n [face.b, face.c],\n [face.c, face.a],\n ];\n for (const [ea, eb] of edges) {\n const key = ea < eb ? `${ea}-${eb}` : `${eb}-${ea}`;\n const entry = edgeCount.get(key);\n if (entry) {\n entry.count++;\n } else {\n // Store in the order from the visible face\n edgeCount.set(key, { a: ea, b: eb, count: 1 });\n }\n }\n }\n\n const horizonEdges: Array<{ a: number; b: number }> = [];\n for (const entry of edgeCount.values()) {\n if (entry.count === 1) {\n // Keep edge in same direction as the visible face; makeFace with apex\n // produces outward normal by winding convention\n horizonEdges.push({ a: entry.a, b: entry.b });\n }\n }\n\n // Collect orphaned outside points from visible faces\n const orphanedPoints: number[] = [];\n for (const face of visibleFaces) {\n for (const idx of face.outsidePoints) {\n if (idx !== furthestIdx) {\n orphanedPoints.push(idx);\n }\n }\n face.alive = false;\n face.outsidePoints = [];\n }\n\n // Create new faces from horizon edges to the furthest point\n const newFaces: HullFace[] = [];\n for (const edge of horizonEdges) {\n const newFaceObj = makeFace(points, edge.a, edge.b, furthestIdx);\n newFaces.push(newFaceObj);\n faces.push(newFaceObj);\n }\n\n // Reassign orphaned points to new faces\n for (const idx of orphanedPoints) {\n for (const face of newFaces) {\n if (signedDist(face, at(points, idx)) > epsilon) {\n face.outsidePoints.push(idx);\n break;\n }\n }\n }\n }\n\n // Collect alive faces\n const resultFaces: Array<readonly [number, number, number]> = [];\n for (const face of faces) {\n if (face.alive) {\n resultFaces.push([face.a, face.b, face.c] as const);\n }\n }\n\n return { faces: resultFaces, points };\n}\n"]}
@@ -5,20 +5,20 @@
5
5
  * `src/kernel/occtWasm/hullOps.ts` + `src/kernel/occtWasm/constructionOps.ts#buildSolidFromFaces`,
6
6
  * BREP 重建改为 core 的 occt-wasm 原生直调(`buildTriFace` / `sewAndSolidify` /
7
7
  * `fixFaceOrientations` / `release`,occt-wasm index.d.ts 形态——ShapeHandle[]、
8
- * Vec3 对象),**不 import brepjs**。occt-wasm 无原生 hull(Phase 0 实证),
8
+ * Vec3 对象),**不依赖外部 brepjs 包**。occt-wasm 无原生 hull(Phase 0 实证),
9
9
  * 故不直调原生 hull;QuickHull 由 `./hullGeometry` 承担。
10
10
  */
11
11
  import type { OcctKernel } from 'occt-wasm';
12
12
  import type { BrepHandle } from '../brep/engine/types.js';
13
13
  import { type Vec3 } from './hullGeometry.js';
14
14
  /**
15
- * 由点集构造凸包实体(brepjs 原语义:quickHull → 三角面 → 缝合 → 修复朝向 → solid)。
15
+ * 由点集构造凸包实体(原 brepjs 语义:quickHull → 三角面 → 缝合 → 修复朝向 → solid)。
16
16
  *
17
17
  * @param k - OCCT kernel used for BREP reconstruction.
18
18
  * @param points - Input points to build the hull from.
19
19
  * @param tolerance - Point coincidence tolerance for QuickHull.
20
20
  * @returns The constructed hull solid handle.
21
- * @throws 点数不足 4 或退化(面 < 4)——与 brepjs 原实现一致。
21
+ * @throws 点数不足 4 或退化(面 < 4)——与原 brepjs 实现一致。
22
22
  */
23
23
  export declare function hullFromPoints(k: OcctKernel, points: Vec3[], tolerance: number): BrepHandle;
24
24
  //# sourceMappingURL=hullOps.d.ts.map
@@ -5,18 +5,18 @@
5
5
  * `src/kernel/occtWasm/hullOps.ts` + `src/kernel/occtWasm/constructionOps.ts#buildSolidFromFaces`,
6
6
  * BREP 重建改为 core 的 occt-wasm 原生直调(`buildTriFace` / `sewAndSolidify` /
7
7
  * `fixFaceOrientations` / `release`,occt-wasm index.d.ts 形态——ShapeHandle[]、
8
- * Vec3 对象),**不 import brepjs**。occt-wasm 无原生 hull(Phase 0 实证),
8
+ * Vec3 对象),**不依赖外部 brepjs 包**。occt-wasm 无原生 hull(Phase 0 实证),
9
9
  * 故不直调原生 hull;QuickHull 由 `./hullGeometry` 承担。
10
10
  */
11
11
  import { quickHull } from './hullGeometry.js';
12
12
  /**
13
- * 由点集构造凸包实体(brepjs 原语义:quickHull → 三角面 → 缝合 → 修复朝向 → solid)。
13
+ * 由点集构造凸包实体(原 brepjs 语义:quickHull → 三角面 → 缝合 → 修复朝向 → solid)。
14
14
  *
15
15
  * @param k - OCCT kernel used for BREP reconstruction.
16
16
  * @param points - Input points to build the hull from.
17
17
  * @param tolerance - Point coincidence tolerance for QuickHull.
18
18
  * @returns The constructed hull solid handle.
19
- * @throws 点数不足 4 或退化(面 < 4)——与 brepjs 原实现一致。
19
+ * @throws 点数不足 4 或退化(面 < 4)——与原 brepjs 实现一致。
20
20
  */
21
21
  export function hullFromPoints(k, points, tolerance) {
22
22
  if (points.length < 4)
@@ -24,7 +24,7 @@ export function hullFromPoints(k, points, tolerance) {
24
24
  const { points: hullPoints, faces } = quickHull(points, tolerance);
25
25
  if (faces.length < 4)
26
26
  throw new Error('hullFromPoints: degenerate hull (fewer than 4 faces)');
27
- // Build triangle faces, sew them, and solidify(brepjs buildSolidFromFaces 原逻辑)。
27
+ // Build triangle faces, sew them, and solidify(原 brepjs buildSolidFromFaces 逻辑)。
28
28
  const faceIds = [];
29
29
  for (const [i0, i1, i2] of faces) {
30
30
  const p0 = hullPoints[i0];
@@ -1 +1 @@
1
- {"version":3,"file":"hullOps.js","sourceRoot":"","sources":["../../src/occt-kernel/hullOps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,SAAS,EAAa,MAAM,gBAAgB,CAAA;AAErD;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,CAAa,EACb,MAAc,EACd,SAAiB;IAEjB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAChF,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAClE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IAE7F,gFAAgF;IAChF,MAAM,OAAO,GAAkB,EAAE,CAAA;IACjC,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;QACzB,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;QACzB,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;QACzB,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE;YAAE,SAAQ;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IAC1C,CAAC;IACD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAClD,MAAM,IAAI,GAAG,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;QACzC,8EAA8E;QAC9E,IAAI,IAAI,KAAK,KAAK;YAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACpC,OAAO,IAA6B,CAAA;IACtC,CAAC;YAAS,CAAC;QACT,uEAAuE;QACvE,yEAAyE;QACzE,KAAK,MAAM,EAAE,IAAI,OAAO;YAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACzC,CAAC;AACH,CAAC","sourcesContent":["/**\n * Convex hull operations for the faijs occt kernel(第一方模块)。\n *\n * 2026-09-25 core-decouple Phase 2 §5.1:最小闭包移植——算法复制自 brepjs\n * `src/kernel/occtWasm/hullOps.ts` + `src/kernel/occtWasm/constructionOps.ts#buildSolidFromFaces`,\n * BREP 重建改为 core 的 occt-wasm 原生直调(`buildTriFace` / `sewAndSolidify` /\n * `fixFaceOrientations` / `release`,occt-wasm index.d.ts 形态——ShapeHandle[]、\n * Vec3 对象),**不 import brepjs**。occt-wasm 无原生 hull(Phase 0 实证),\n * 故不直调原生 hull;QuickHull 由 `./hullGeometry` 承担。\n */\n\nimport type { OcctKernel, ShapeHandle } from 'occt-wasm'\nimport type { BrepHandle } from '../brep/engine/types'\nimport { quickHull, type Vec3 } from './hullGeometry'\n\n/**\n * 由点集构造凸包实体(brepjs 原语义:quickHull → 三角面 → 缝合 → 修复朝向 → solid)。\n *\n * @param k - OCCT kernel used for BREP reconstruction.\n * @param points - Input points to build the hull from.\n * @param tolerance - Point coincidence tolerance for QuickHull.\n * @returns The constructed hull solid handle.\n * @throws 点数不足 4 或退化(面 < 4)——与 brepjs 原实现一致。\n */\nexport function hullFromPoints(\n k: OcctKernel,\n points: Vec3[],\n tolerance: number,\n): BrepHandle {\n if (points.length < 4) throw new Error('hullFromPoints: need at least 4 points')\n const { points: hullPoints, faces } = quickHull(points, tolerance)\n if (faces.length < 4) throw new Error('hullFromPoints: degenerate hull (fewer than 4 faces)')\n\n // Build triangle faces, sew them, and solidify(brepjs buildSolidFromFaces 原逻辑)。\n const faceIds: ShapeHandle[] = []\n for (const [i0, i1, i2] of faces) {\n const p0 = hullPoints[i0]\n const p1 = hullPoints[i1]\n const p2 = hullPoints[i2]\n if (!p0 || !p1 || !p2) continue\n faceIds.push(k.buildTriFace(p0, p1, p2))\n }\n try {\n const sewn0 = k.sewAndSolidify(faceIds, tolerance)\n const sewn = k.fixFaceOrientations(sewn0)\n // fixFaceOrientations returns a fresh slot; release the pre-fix intermediate.\n if (sewn !== sewn0) k.release(sewn0)\n return sewn as unknown as BrepHandle\n } finally {\n // Each buildTriFace is a fresh arena slot consumed into the sewn solid\n // (shared refcounted TShape); release the triangles once sewing is done.\n for (const id of faceIds) k.release(id)\n }\n}\n"]}
1
+ {"version":3,"file":"hullOps.js","sourceRoot":"","sources":["../../src/occt-kernel/hullOps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,SAAS,EAAa,MAAM,gBAAgB,CAAA;AAErD;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,CAAa,EACb,MAAc,EACd,SAAiB;IAEjB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAChF,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAClE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IAE7F,iFAAiF;IACjF,MAAM,OAAO,GAAkB,EAAE,CAAA;IACjC,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;QACzB,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;QACzB,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;QACzB,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE;YAAE,SAAQ;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IAC1C,CAAC;IACD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAClD,MAAM,IAAI,GAAG,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;QACzC,8EAA8E;QAC9E,IAAI,IAAI,KAAK,KAAK;YAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACpC,OAAO,IAA6B,CAAA;IACtC,CAAC;YAAS,CAAC;QACT,uEAAuE;QACvE,yEAAyE;QACzE,KAAK,MAAM,EAAE,IAAI,OAAO;YAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACzC,CAAC;AACH,CAAC","sourcesContent":["/**\n * Convex hull operations for the faijs occt kernel(第一方模块)。\n *\n * 2026-09-25 core-decouple Phase 2 §5.1:最小闭包移植——算法复制自 brepjs\n * `src/kernel/occtWasm/hullOps.ts` + `src/kernel/occtWasm/constructionOps.ts#buildSolidFromFaces`,\n * BREP 重建改为 core 的 occt-wasm 原生直调(`buildTriFace` / `sewAndSolidify` /\n * `fixFaceOrientations` / `release`,occt-wasm index.d.ts 形态——ShapeHandle[]、\n * Vec3 对象),**不依赖外部 brepjs 包**。occt-wasm 无原生 hull(Phase 0 实证),\n * 故不直调原生 hull;QuickHull 由 `./hullGeometry` 承担。\n */\n\nimport type { OcctKernel, ShapeHandle } from 'occt-wasm'\nimport type { BrepHandle } from '../brep/engine/types'\nimport { quickHull, type Vec3 } from './hullGeometry'\n\n/**\n * 由点集构造凸包实体(原 brepjs 语义:quickHull → 三角面 → 缝合 → 修复朝向 → solid)。\n *\n * @param k - OCCT kernel used for BREP reconstruction.\n * @param points - Input points to build the hull from.\n * @param tolerance - Point coincidence tolerance for QuickHull.\n * @returns The constructed hull solid handle.\n * @throws 点数不足 4 或退化(面 < 4)——与原 brepjs 实现一致。\n */\nexport function hullFromPoints(\n k: OcctKernel,\n points: Vec3[],\n tolerance: number,\n): BrepHandle {\n if (points.length < 4) throw new Error('hullFromPoints: need at least 4 points')\n const { points: hullPoints, faces } = quickHull(points, tolerance)\n if (faces.length < 4) throw new Error('hullFromPoints: degenerate hull (fewer than 4 faces)')\n\n // Build triangle faces, sew them, and solidify(原 brepjs buildSolidFromFaces 逻辑)。\n const faceIds: ShapeHandle[] = []\n for (const [i0, i1, i2] of faces) {\n const p0 = hullPoints[i0]\n const p1 = hullPoints[i1]\n const p2 = hullPoints[i2]\n if (!p0 || !p1 || !p2) continue\n faceIds.push(k.buildTriFace(p0, p1, p2))\n }\n try {\n const sewn0 = k.sewAndSolidify(faceIds, tolerance)\n const sewn = k.fixFaceOrientations(sewn0)\n // fixFaceOrientations returns a fresh slot; release the pre-fix intermediate.\n if (sewn !== sewn0) k.release(sewn0)\n return sewn as unknown as BrepHandle\n } finally {\n // Each buildTriFace is a fresh arena slot consumed into the sewn solid\n // (shared refcounted TShape); release the triangles once sewing is done.\n for (const id of faceIds) k.release(id)\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"occt-primitives.d.ts","sourceRoot":"","sources":["../../src/occt-kernel/occt-primitives.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAqE5F;;;;;;GAMG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,aAAa,CAAC,CAkWnE;AAED,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAA;AAI7E,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GAAG,4BAA4B,CAAC,cAAc,CAAC,CAAA"}
1
+ {"version":3,"file":"occt-primitives.d.ts","sourceRoot":"","sources":["../../src/occt-kernel/occt-primitives.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAqE5F;;;;;;GAMG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,aAAa,CAAC,CA4XnE;AAED,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAA;AAI7E,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GAAG,4BAA4B,CAAC,cAAc,CAAC,CAAA"}
@@ -5,7 +5,7 @@ const asShape = (h) => h;
5
5
  const shapes = (hs) => hs.map(asShape);
6
6
  const v3 = (v) => ({ x: v.x, y: v.y, z: v.z });
7
7
  const rad = (deg) => (deg * Math.PI) / 180;
8
- /** brepjs topology layer uses this upper bound for face hashes (HASH_CODE_MAX). */
8
+ /** Topology layer uses this upper bound for face hashes (HASH_CODE_MAX). */
9
9
  const HASH_UPPER_BOUND = 2 ** 24;
10
10
  /**
11
11
  * Build a large planar face (boolean tool) through `point`, oriented by
@@ -63,8 +63,8 @@ export async function createOcctPrimitives() {
63
63
  // the property again recurses into the wrapper).
64
64
  const nativeLinearPattern = raw.linearPattern.bind(k);
65
65
  // 2026-09-25 core-decouple Phase 2(§5.1):hull 最小闭包已移植进 occt-kernel/
66
- // (hullGeometry + hullOps,occt-wasm 原生直调),此处不再经 vendored
67
- // OcctWasmAdapter——core 自有引擎对 brepjs 适配器的最后一处依赖已拔除。
66
+ // (hullGeometry + hullOps,occt-wasm 原生直调),此处不再经
67
+ // OcctWasmAdapter——core 自有引擎对旧适配器的最后一处依赖已拔除。
68
68
  const splitCompoundToArray = (compound) => {
69
69
  const parts = k.getSubShapes(compound, 'solid').map(asHandle);
70
70
  k.release(compound);
@@ -176,7 +176,34 @@ export async function createOcctPrimitives() {
176
176
  transform: (shape, matrix) => asHandle(k.transform(asShape(shape), matrix)),
177
177
  located: (shape, matrix) => asHandle(k.located(asShape(shape), matrix)),
178
178
  locate: (shape, matrix) => asHandle(k.located(asShape(shape), matrix)),
179
- generalTransform: (shape, matrix) => asHandle(k.generalTransform(asShape(shape), matrix)),
179
+ generalTransform: (shape, matrix) => {
180
+ // GOTCHA (2026-10-07, openscad example023 parity): the native `gp_GTrsf`
181
+ // path returns a handle whose *stored triangulation* double-applies the
182
+ // translated face's TopLoc. The exact geometry is right; only the
183
+ // tessellation is wrong, so the defect only shows on an **already meshed**
184
+ // shape — and every `cad.extrude`/boolean result is meshed for display
185
+ // (`brep-ops.ts#solidToShape`). Measured on an extruded face-with-hole
186
+ // prism: exact top cap 5.0, tessellated top cap 10.0 (non-uniform z×2.5:
187
+ // 12.5 vs 17.5). `BRepBuilderAPI_Copy` yields a shape without the stale
188
+ // triangulation, so the result re-tessellates correctly.
189
+ //
190
+ // Deliberately adapter-local, not in the engine-neutral dispatcher
191
+ // (`brep/brep-ops.ts#applyAffineBrep`): the defect is **occt-only** —
192
+ // brepkit's GTrsf path is clean (pinned by
193
+ // test/brep/applymatrix-similarity-routing.test.ts). Making every engine
194
+ // pay an extra handle allocation for an occt quirk also perturbed
195
+ // brepkit's `cut` bbox in test/brep/engine/multi-engine-op-parity.test.ts.
196
+ //
197
+ // Safety: the copy is adapter-owned and released here; the returned handle
198
+ // is independent of it (the native op does not consume its input).
199
+ const copy = k.copy(asShape(shape));
200
+ try {
201
+ return asHandle(k.generalTransform(copy, matrix));
202
+ }
203
+ finally {
204
+ k.release(copy);
205
+ }
206
+ },
180
207
  copy: (shape) => asHandle(k.copy(asShape(shape))),
181
208
  copyShape: (shape) => asHandle(k.copy(asShape(shape))),
182
209
  composeTransform: (m1, m2) => k.composeTransform(m1, m2),