formulab 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. package/CHANGELOG.md +144 -0
  2. package/LICENSE +21 -0
  3. package/README.md +403 -0
  4. package/dist/automotive/batteryRuntime.d.ts +14 -0
  5. package/dist/automotive/batteryRuntime.d.ts.map +1 -0
  6. package/dist/automotive/batteryRuntime.js +38 -0
  7. package/dist/automotive/batteryRuntime.js.map +1 -0
  8. package/dist/automotive/evCharging.d.ts +14 -0
  9. package/dist/automotive/evCharging.d.ts.map +1 -0
  10. package/dist/automotive/evCharging.js +48 -0
  11. package/dist/automotive/evCharging.js.map +1 -0
  12. package/dist/automotive/fuelEconomy.d.ts +15 -0
  13. package/dist/automotive/fuelEconomy.d.ts.map +1 -0
  14. package/dist/automotive/fuelEconomy.js +61 -0
  15. package/dist/automotive/fuelEconomy.js.map +1 -0
  16. package/dist/automotive/gearRatio.d.ts +15 -0
  17. package/dist/automotive/gearRatio.d.ts.map +1 -0
  18. package/dist/automotive/gearRatio.js +39 -0
  19. package/dist/automotive/gearRatio.js.map +1 -0
  20. package/dist/automotive/index.d.ts +9 -0
  21. package/dist/automotive/index.d.ts.map +1 -0
  22. package/dist/automotive/index.js +9 -0
  23. package/dist/automotive/index.js.map +1 -0
  24. package/dist/automotive/power.d.ts +14 -0
  25. package/dist/automotive/power.d.ts.map +1 -0
  26. package/dist/automotive/power.js +52 -0
  27. package/dist/automotive/power.js.map +1 -0
  28. package/dist/automotive/tireCompare.d.ts +9 -0
  29. package/dist/automotive/tireCompare.d.ts.map +1 -0
  30. package/dist/automotive/tireCompare.js +54 -0
  31. package/dist/automotive/tireCompare.js.map +1 -0
  32. package/dist/automotive/torque.d.ts +14 -0
  33. package/dist/automotive/torque.d.ts.map +1 -0
  34. package/dist/automotive/torque.js +52 -0
  35. package/dist/automotive/torque.js.map +1 -0
  36. package/dist/automotive/types.d.ts +114 -0
  37. package/dist/automotive/types.d.ts.map +1 -0
  38. package/dist/automotive/types.js +2 -0
  39. package/dist/automotive/types.js.map +1 -0
  40. package/dist/chemical/batch.d.ts +12 -0
  41. package/dist/chemical/batch.d.ts.map +1 -0
  42. package/dist/chemical/batch.js +36 -0
  43. package/dist/chemical/batch.js.map +1 -0
  44. package/dist/chemical/concentration.d.ts +15 -0
  45. package/dist/chemical/concentration.d.ts.map +1 -0
  46. package/dist/chemical/concentration.js +45 -0
  47. package/dist/chemical/concentration.js.map +1 -0
  48. package/dist/chemical/dilution.d.ts +12 -0
  49. package/dist/chemical/dilution.d.ts.map +1 -0
  50. package/dist/chemical/dilution.js +68 -0
  51. package/dist/chemical/dilution.js.map +1 -0
  52. package/dist/chemical/index.d.ts +9 -0
  53. package/dist/chemical/index.d.ts.map +1 -0
  54. package/dist/chemical/index.js +9 -0
  55. package/dist/chemical/index.js.map +1 -0
  56. package/dist/chemical/injectionCycle.d.ts +19 -0
  57. package/dist/chemical/injectionCycle.d.ts.map +1 -0
  58. package/dist/chemical/injectionCycle.js +170 -0
  59. package/dist/chemical/injectionCycle.js.map +1 -0
  60. package/dist/chemical/ph.d.ts +13 -0
  61. package/dist/chemical/ph.d.ts.map +1 -0
  62. package/dist/chemical/ph.js +83 -0
  63. package/dist/chemical/ph.js.map +1 -0
  64. package/dist/chemical/reactor.d.ts +19 -0
  65. package/dist/chemical/reactor.d.ts.map +1 -0
  66. package/dist/chemical/reactor.js +57 -0
  67. package/dist/chemical/reactor.js.map +1 -0
  68. package/dist/chemical/shelfLife.d.ts +15 -0
  69. package/dist/chemical/shelfLife.d.ts.map +1 -0
  70. package/dist/chemical/shelfLife.js +36 -0
  71. package/dist/chemical/shelfLife.js.map +1 -0
  72. package/dist/chemical/types.d.ts +144 -0
  73. package/dist/chemical/types.d.ts.map +1 -0
  74. package/dist/chemical/types.js +2 -0
  75. package/dist/chemical/types.js.map +1 -0
  76. package/dist/construction/aggregate.d.ts +33 -0
  77. package/dist/construction/aggregate.d.ts.map +1 -0
  78. package/dist/construction/aggregate.js +92 -0
  79. package/dist/construction/aggregate.js.map +1 -0
  80. package/dist/construction/beamLoad.d.ts +12 -0
  81. package/dist/construction/beamLoad.d.ts.map +1 -0
  82. package/dist/construction/beamLoad.js +156 -0
  83. package/dist/construction/beamLoad.js.map +1 -0
  84. package/dist/construction/brick.d.ts +17 -0
  85. package/dist/construction/brick.d.ts.map +1 -0
  86. package/dist/construction/brick.js +53 -0
  87. package/dist/construction/brick.js.map +1 -0
  88. package/dist/construction/concreteMix.d.ts +9 -0
  89. package/dist/construction/concreteMix.d.ts.map +1 -0
  90. package/dist/construction/concreteMix.js +31 -0
  91. package/dist/construction/concreteMix.js.map +1 -0
  92. package/dist/construction/earthwork.d.ts +13 -0
  93. package/dist/construction/earthwork.d.ts.map +1 -0
  94. package/dist/construction/earthwork.js +25 -0
  95. package/dist/construction/earthwork.js.map +1 -0
  96. package/dist/construction/formwork.d.ts +9 -0
  97. package/dist/construction/formwork.d.ts.map +1 -0
  98. package/dist/construction/formwork.js +61 -0
  99. package/dist/construction/formwork.js.map +1 -0
  100. package/dist/construction/index.d.ts +13 -0
  101. package/dist/construction/index.d.ts.map +1 -0
  102. package/dist/construction/index.js +13 -0
  103. package/dist/construction/index.js.map +1 -0
  104. package/dist/construction/pert.d.ts +15 -0
  105. package/dist/construction/pert.d.ts.map +1 -0
  106. package/dist/construction/pert.js +207 -0
  107. package/dist/construction/pert.js.map +1 -0
  108. package/dist/construction/rebar.d.ts +16 -0
  109. package/dist/construction/rebar.d.ts.map +1 -0
  110. package/dist/construction/rebar.js +43 -0
  111. package/dist/construction/rebar.js.map +1 -0
  112. package/dist/construction/roof.d.ts +16 -0
  113. package/dist/construction/roof.d.ts.map +1 -0
  114. package/dist/construction/roof.js +65 -0
  115. package/dist/construction/roof.js.map +1 -0
  116. package/dist/construction/slope.d.ts +14 -0
  117. package/dist/construction/slope.d.ts.map +1 -0
  118. package/dist/construction/slope.js +54 -0
  119. package/dist/construction/slope.js.map +1 -0
  120. package/dist/construction/stair.d.ts +17 -0
  121. package/dist/construction/stair.d.ts.map +1 -0
  122. package/dist/construction/stair.js +69 -0
  123. package/dist/construction/stair.js.map +1 -0
  124. package/dist/construction/types.d.ts +219 -0
  125. package/dist/construction/types.d.ts.map +1 -0
  126. package/dist/construction/types.js +2 -0
  127. package/dist/construction/types.js.map +1 -0
  128. package/dist/electronics/awg.d.ts +9 -0
  129. package/dist/electronics/awg.d.ts.map +1 -0
  130. package/dist/electronics/awg.js +66 -0
  131. package/dist/electronics/awg.js.map +1 -0
  132. package/dist/electronics/capacitor.d.ts +9 -0
  133. package/dist/electronics/capacitor.d.ts.map +1 -0
  134. package/dist/electronics/capacitor.js +51 -0
  135. package/dist/electronics/capacitor.js.map +1 -0
  136. package/dist/electronics/index.d.ts +12 -0
  137. package/dist/electronics/index.d.ts.map +1 -0
  138. package/dist/electronics/index.js +12 -0
  139. package/dist/electronics/index.js.map +1 -0
  140. package/dist/electronics/led.d.ts +9 -0
  141. package/dist/electronics/led.d.ts.map +1 -0
  142. package/dist/electronics/led.js +72 -0
  143. package/dist/electronics/led.js.map +1 -0
  144. package/dist/electronics/reflow.d.ts +12 -0
  145. package/dist/electronics/reflow.d.ts.map +1 -0
  146. package/dist/electronics/reflow.js +77 -0
  147. package/dist/electronics/reflow.js.map +1 -0
  148. package/dist/electronics/resistor.d.ts +8 -0
  149. package/dist/electronics/resistor.d.ts.map +1 -0
  150. package/dist/electronics/resistor.js +137 -0
  151. package/dist/electronics/resistor.js.map +1 -0
  152. package/dist/electronics/smt-takt.d.ts +8 -0
  153. package/dist/electronics/smt-takt.d.ts.map +1 -0
  154. package/dist/electronics/smt-takt.js +59 -0
  155. package/dist/electronics/smt-takt.js.map +1 -0
  156. package/dist/electronics/solder.d.ts +8 -0
  157. package/dist/electronics/solder.d.ts.map +1 -0
  158. package/dist/electronics/solder.js +46 -0
  159. package/dist/electronics/solder.js.map +1 -0
  160. package/dist/electronics/stencil.d.ts +9 -0
  161. package/dist/electronics/stencil.d.ts.map +1 -0
  162. package/dist/electronics/stencil.js +78 -0
  163. package/dist/electronics/stencil.js.map +1 -0
  164. package/dist/electronics/trace.d.ts +8 -0
  165. package/dist/electronics/trace.d.ts.map +1 -0
  166. package/dist/electronics/trace.js +75 -0
  167. package/dist/electronics/trace.js.map +1 -0
  168. package/dist/electronics/types.d.ts +145 -0
  169. package/dist/electronics/types.d.ts.map +1 -0
  170. package/dist/electronics/types.js +2 -0
  171. package/dist/electronics/types.js.map +1 -0
  172. package/dist/electronics/via.d.ts +12 -0
  173. package/dist/electronics/via.d.ts.map +1 -0
  174. package/dist/electronics/via.js +63 -0
  175. package/dist/electronics/via.js.map +1 -0
  176. package/dist/energy/carbonFootprint.d.ts +13 -0
  177. package/dist/energy/carbonFootprint.d.ts.map +1 -0
  178. package/dist/energy/carbonFootprint.js +41 -0
  179. package/dist/energy/carbonFootprint.js.map +1 -0
  180. package/dist/energy/compressedAirCost.d.ts +14 -0
  181. package/dist/energy/compressedAirCost.d.ts.map +1 -0
  182. package/dist/energy/compressedAirCost.js +39 -0
  183. package/dist/energy/compressedAirCost.js.map +1 -0
  184. package/dist/energy/index.d.ts +8 -0
  185. package/dist/energy/index.d.ts.map +1 -0
  186. package/dist/energy/index.js +8 -0
  187. package/dist/energy/index.js.map +1 -0
  188. package/dist/energy/motorEfficiency.d.ts +14 -0
  189. package/dist/energy/motorEfficiency.d.ts.map +1 -0
  190. package/dist/energy/motorEfficiency.js +47 -0
  191. package/dist/energy/motorEfficiency.js.map +1 -0
  192. package/dist/energy/pfCorrection.d.ts +15 -0
  193. package/dist/energy/pfCorrection.d.ts.map +1 -0
  194. package/dist/energy/pfCorrection.js +56 -0
  195. package/dist/energy/pfCorrection.js.map +1 -0
  196. package/dist/energy/powerCost.d.ts +15 -0
  197. package/dist/energy/powerCost.d.ts.map +1 -0
  198. package/dist/energy/powerCost.js +37 -0
  199. package/dist/energy/powerCost.js.map +1 -0
  200. package/dist/energy/types.d.ts +119 -0
  201. package/dist/energy/types.d.ts.map +1 -0
  202. package/dist/energy/types.js +2 -0
  203. package/dist/energy/types.js.map +1 -0
  204. package/dist/energy/vfdSavings.d.ts +16 -0
  205. package/dist/energy/vfdSavings.d.ts.map +1 -0
  206. package/dist/energy/vfdSavings.js +57 -0
  207. package/dist/energy/vfdSavings.js.map +1 -0
  208. package/dist/food/calorie.d.ts +13 -0
  209. package/dist/food/calorie.d.ts.map +1 -0
  210. package/dist/food/calorie.js +42 -0
  211. package/dist/food/calorie.js.map +1 -0
  212. package/dist/food/expiry.d.ts +13 -0
  213. package/dist/food/expiry.d.ts.map +1 -0
  214. package/dist/food/expiry.js +58 -0
  215. package/dist/food/expiry.js.map +1 -0
  216. package/dist/food/haccp.d.ts +18 -0
  217. package/dist/food/haccp.d.ts.map +1 -0
  218. package/dist/food/haccp.js +70 -0
  219. package/dist/food/haccp.js.map +1 -0
  220. package/dist/food/index.d.ts +6 -0
  221. package/dist/food/index.d.ts.map +1 -0
  222. package/dist/food/index.js +6 -0
  223. package/dist/food/index.js.map +1 -0
  224. package/dist/food/nutrition.d.ts +12 -0
  225. package/dist/food/nutrition.d.ts.map +1 -0
  226. package/dist/food/nutrition.js +75 -0
  227. package/dist/food/nutrition.js.map +1 -0
  228. package/dist/food/types.d.ts +104 -0
  229. package/dist/food/types.d.ts.map +1 -0
  230. package/dist/food/types.js +2 -0
  231. package/dist/food/types.js.map +1 -0
  232. package/dist/index.d.ts +7 -0
  233. package/dist/index.d.ts.map +1 -0
  234. package/dist/index.js +9 -0
  235. package/dist/index.js.map +1 -0
  236. package/dist/logistics/cbm.d.ts +12 -0
  237. package/dist/logistics/cbm.d.ts.map +1 -0
  238. package/dist/logistics/cbm.js +37 -0
  239. package/dist/logistics/cbm.js.map +1 -0
  240. package/dist/logistics/containerFit.d.ts +12 -0
  241. package/dist/logistics/containerFit.d.ts.map +1 -0
  242. package/dist/logistics/containerFit.js +73 -0
  243. package/dist/logistics/containerFit.js.map +1 -0
  244. package/dist/logistics/dimWeight.d.ts +13 -0
  245. package/dist/logistics/dimWeight.d.ts.map +1 -0
  246. package/dist/logistics/dimWeight.js +50 -0
  247. package/dist/logistics/dimWeight.js.map +1 -0
  248. package/dist/logistics/eoq.d.ts +18 -0
  249. package/dist/logistics/eoq.d.ts.map +1 -0
  250. package/dist/logistics/eoq.js +42 -0
  251. package/dist/logistics/eoq.js.map +1 -0
  252. package/dist/logistics/fillRate.d.ts +22 -0
  253. package/dist/logistics/fillRate.d.ts.map +1 -0
  254. package/dist/logistics/fillRate.js +84 -0
  255. package/dist/logistics/fillRate.js.map +1 -0
  256. package/dist/logistics/freightClass.d.ts +12 -0
  257. package/dist/logistics/freightClass.d.ts.map +1 -0
  258. package/dist/logistics/freightClass.js +68 -0
  259. package/dist/logistics/freightClass.js.map +1 -0
  260. package/dist/logistics/index.d.ts +15 -0
  261. package/dist/logistics/index.d.ts.map +1 -0
  262. package/dist/logistics/index.js +15 -0
  263. package/dist/logistics/index.js.map +1 -0
  264. package/dist/logistics/kanban.d.ts +19 -0
  265. package/dist/logistics/kanban.d.ts.map +1 -0
  266. package/dist/logistics/kanban.js +48 -0
  267. package/dist/logistics/kanban.js.map +1 -0
  268. package/dist/logistics/pallet3d.d.ts +16 -0
  269. package/dist/logistics/pallet3d.d.ts.map +1 -0
  270. package/dist/logistics/pallet3d.js +380 -0
  271. package/dist/logistics/pallet3d.js.map +1 -0
  272. package/dist/logistics/palletStack.d.ts +12 -0
  273. package/dist/logistics/palletStack.d.ts.map +1 -0
  274. package/dist/logistics/palletStack.js +65 -0
  275. package/dist/logistics/palletStack.js.map +1 -0
  276. package/dist/logistics/pickTime.d.ts +17 -0
  277. package/dist/logistics/pickTime.d.ts.map +1 -0
  278. package/dist/logistics/pickTime.js +70 -0
  279. package/dist/logistics/pickTime.js.map +1 -0
  280. package/dist/logistics/safetyStock.d.ts +24 -0
  281. package/dist/logistics/safetyStock.d.ts.map +1 -0
  282. package/dist/logistics/safetyStock.js +99 -0
  283. package/dist/logistics/safetyStock.js.map +1 -0
  284. package/dist/logistics/shipping.d.ts +16 -0
  285. package/dist/logistics/shipping.d.ts.map +1 -0
  286. package/dist/logistics/shipping.js +115 -0
  287. package/dist/logistics/shipping.js.map +1 -0
  288. package/dist/logistics/tsp.d.ts +12 -0
  289. package/dist/logistics/tsp.d.ts.map +1 -0
  290. package/dist/logistics/tsp.js +166 -0
  291. package/dist/logistics/tsp.js.map +1 -0
  292. package/dist/logistics/types.d.ts +315 -0
  293. package/dist/logistics/types.d.ts.map +1 -0
  294. package/dist/logistics/types.js +5 -0
  295. package/dist/logistics/types.js.map +1 -0
  296. package/dist/metal/bearing.d.ts +11 -0
  297. package/dist/metal/bearing.d.ts.map +1 -0
  298. package/dist/metal/bearing.js +32 -0
  299. package/dist/metal/bearing.js.map +1 -0
  300. package/dist/metal/bendAllowance.d.ts +13 -0
  301. package/dist/metal/bendAllowance.d.ts.map +1 -0
  302. package/dist/metal/bendAllowance.js +75 -0
  303. package/dist/metal/bendAllowance.js.map +1 -0
  304. package/dist/metal/bolt.d.ts +32 -0
  305. package/dist/metal/bolt.d.ts.map +1 -0
  306. package/dist/metal/bolt.js +149 -0
  307. package/dist/metal/bolt.js.map +1 -0
  308. package/dist/metal/cutting.d.ts +10 -0
  309. package/dist/metal/cutting.d.ts.map +1 -0
  310. package/dist/metal/cutting.js +55 -0
  311. package/dist/metal/cutting.js.map +1 -0
  312. package/dist/metal/cuttingStock.d.ts +8 -0
  313. package/dist/metal/cuttingStock.d.ts.map +1 -0
  314. package/dist/metal/cuttingStock.js +89 -0
  315. package/dist/metal/cuttingStock.js.map +1 -0
  316. package/dist/metal/flatPattern.d.ts +12 -0
  317. package/dist/metal/flatPattern.d.ts.map +1 -0
  318. package/dist/metal/flatPattern.js +50 -0
  319. package/dist/metal/flatPattern.js.map +1 -0
  320. package/dist/metal/gear.d.ts +13 -0
  321. package/dist/metal/gear.d.ts.map +1 -0
  322. package/dist/metal/gear.js +79 -0
  323. package/dist/metal/gear.js.map +1 -0
  324. package/dist/metal/hardness.d.ts +15 -0
  325. package/dist/metal/hardness.d.ts.map +1 -0
  326. package/dist/metal/hardness.js +77 -0
  327. package/dist/metal/hardness.js.map +1 -0
  328. package/dist/metal/index.d.ts +24 -0
  329. package/dist/metal/index.d.ts.map +1 -0
  330. package/dist/metal/index.js +24 -0
  331. package/dist/metal/index.js.map +1 -0
  332. package/dist/metal/kFactorReverse.d.ts +19 -0
  333. package/dist/metal/kFactorReverse.d.ts.map +1 -0
  334. package/dist/metal/kFactorReverse.js +39 -0
  335. package/dist/metal/kFactorReverse.js.map +1 -0
  336. package/dist/metal/material.d.ts +5 -0
  337. package/dist/metal/material.d.ts.map +1 -0
  338. package/dist/metal/material.js +56 -0
  339. package/dist/metal/material.js.map +1 -0
  340. package/dist/metal/metalWeight.d.ts +10 -0
  341. package/dist/metal/metalWeight.d.ts.map +1 -0
  342. package/dist/metal/metalWeight.js +82 -0
  343. package/dist/metal/metalWeight.js.map +1 -0
  344. package/dist/metal/pressFit.d.ts +15 -0
  345. package/dist/metal/pressFit.d.ts.map +1 -0
  346. package/dist/metal/pressFit.js +96 -0
  347. package/dist/metal/pressFit.js.map +1 -0
  348. package/dist/metal/pressTonnage.d.ts +13 -0
  349. package/dist/metal/pressTonnage.d.ts.map +1 -0
  350. package/dist/metal/pressTonnage.js +86 -0
  351. package/dist/metal/pressTonnage.js.map +1 -0
  352. package/dist/metal/roughness.d.ts +6 -0
  353. package/dist/metal/roughness.d.ts.map +1 -0
  354. package/dist/metal/roughness.js +62 -0
  355. package/dist/metal/roughness.js.map +1 -0
  356. package/dist/metal/screw.d.ts +7 -0
  357. package/dist/metal/screw.d.ts.map +1 -0
  358. package/dist/metal/screw.js +44 -0
  359. package/dist/metal/screw.js.map +1 -0
  360. package/dist/metal/spring.d.ts +11 -0
  361. package/dist/metal/spring.d.ts.map +1 -0
  362. package/dist/metal/spring.js +59 -0
  363. package/dist/metal/spring.js.map +1 -0
  364. package/dist/metal/tap.d.ts +16 -0
  365. package/dist/metal/tap.d.ts.map +1 -0
  366. package/dist/metal/tap.js +62 -0
  367. package/dist/metal/tap.js.map +1 -0
  368. package/dist/metal/thread.d.ts +8 -0
  369. package/dist/metal/thread.d.ts.map +1 -0
  370. package/dist/metal/thread.js +75 -0
  371. package/dist/metal/thread.js.map +1 -0
  372. package/dist/metal/tolerance.d.ts +6 -0
  373. package/dist/metal/tolerance.d.ts.map +1 -0
  374. package/dist/metal/tolerance.js +113 -0
  375. package/dist/metal/tolerance.js.map +1 -0
  376. package/dist/metal/types.d.ts +494 -0
  377. package/dist/metal/types.d.ts.map +1 -0
  378. package/dist/metal/types.js +2 -0
  379. package/dist/metal/types.js.map +1 -0
  380. package/dist/metal/vibration.d.ts +6 -0
  381. package/dist/metal/vibration.d.ts.map +1 -0
  382. package/dist/metal/vibration.js +153 -0
  383. package/dist/metal/vibration.js.map +1 -0
  384. package/dist/metal/weldHeat.d.ts +6 -0
  385. package/dist/metal/weldHeat.d.ts.map +1 -0
  386. package/dist/metal/weldHeat.js +138 -0
  387. package/dist/metal/weldHeat.js.map +1 -0
  388. package/dist/metal/welding.d.ts +6 -0
  389. package/dist/metal/welding.d.ts.map +1 -0
  390. package/dist/metal/welding.js +80 -0
  391. package/dist/metal/welding.js.map +1 -0
  392. package/dist/quality/aql.d.ts +10 -0
  393. package/dist/quality/aql.d.ts.map +1 -0
  394. package/dist/quality/aql.js +104 -0
  395. package/dist/quality/aql.js.map +1 -0
  396. package/dist/quality/cpk.d.ts +14 -0
  397. package/dist/quality/cpk.d.ts.map +1 -0
  398. package/dist/quality/cpk.js +44 -0
  399. package/dist/quality/cpk.js.map +1 -0
  400. package/dist/quality/cycle.d.ts +11 -0
  401. package/dist/quality/cycle.d.ts.map +1 -0
  402. package/dist/quality/cycle.js +55 -0
  403. package/dist/quality/cycle.js.map +1 -0
  404. package/dist/quality/downtime.d.ts +9 -0
  405. package/dist/quality/downtime.d.ts.map +1 -0
  406. package/dist/quality/downtime.js +28 -0
  407. package/dist/quality/downtime.js.map +1 -0
  408. package/dist/quality/dpmo.d.ts +10 -0
  409. package/dist/quality/dpmo.d.ts.map +1 -0
  410. package/dist/quality/dpmo.js +114 -0
  411. package/dist/quality/dpmo.js.map +1 -0
  412. package/dist/quality/index.d.ts +15 -0
  413. package/dist/quality/index.d.ts.map +1 -0
  414. package/dist/quality/index.js +15 -0
  415. package/dist/quality/index.js.map +1 -0
  416. package/dist/quality/lineBalancing.d.ts +9 -0
  417. package/dist/quality/lineBalancing.d.ts.map +1 -0
  418. package/dist/quality/lineBalancing.js +185 -0
  419. package/dist/quality/lineBalancing.js.map +1 -0
  420. package/dist/quality/mtbf.d.ts +13 -0
  421. package/dist/quality/mtbf.d.ts.map +1 -0
  422. package/dist/quality/mtbf.js +48 -0
  423. package/dist/quality/mtbf.js.map +1 -0
  424. package/dist/quality/oee.d.ts +11 -0
  425. package/dist/quality/oee.d.ts.map +1 -0
  426. package/dist/quality/oee.js +43 -0
  427. package/dist/quality/oee.js.map +1 -0
  428. package/dist/quality/ppk.d.ts +15 -0
  429. package/dist/quality/ppk.d.ts.map +1 -0
  430. package/dist/quality/ppk.js +61 -0
  431. package/dist/quality/ppk.js.map +1 -0
  432. package/dist/quality/ppm.d.ts +9 -0
  433. package/dist/quality/ppm.d.ts.map +1 -0
  434. package/dist/quality/ppm.js +134 -0
  435. package/dist/quality/ppm.js.map +1 -0
  436. package/dist/quality/rpn.d.ts +11 -0
  437. package/dist/quality/rpn.d.ts.map +1 -0
  438. package/dist/quality/rpn.js +48 -0
  439. package/dist/quality/rpn.js.map +1 -0
  440. package/dist/quality/takt.d.ts +13 -0
  441. package/dist/quality/takt.d.ts.map +1 -0
  442. package/dist/quality/takt.js +44 -0
  443. package/dist/quality/takt.js.map +1 -0
  444. package/dist/quality/types.d.ts +261 -0
  445. package/dist/quality/types.d.ts.map +1 -0
  446. package/dist/quality/types.js +2 -0
  447. package/dist/quality/types.js.map +1 -0
  448. package/dist/quality/yield.d.ts +12 -0
  449. package/dist/quality/yield.d.ts.map +1 -0
  450. package/dist/quality/yield.js +56 -0
  451. package/dist/quality/yield.js.map +1 -0
  452. package/dist/safety/fallClearance.d.ts +12 -0
  453. package/dist/safety/fallClearance.d.ts.map +1 -0
  454. package/dist/safety/fallClearance.js +37 -0
  455. package/dist/safety/fallClearance.js.map +1 -0
  456. package/dist/safety/havsCalculate.d.ts +16 -0
  457. package/dist/safety/havsCalculate.d.ts.map +1 -0
  458. package/dist/safety/havsCalculate.js +103 -0
  459. package/dist/safety/havsCalculate.js.map +1 -0
  460. package/dist/safety/index.d.ts +8 -0
  461. package/dist/safety/index.d.ts.map +1 -0
  462. package/dist/safety/index.js +8 -0
  463. package/dist/safety/index.js.map +1 -0
  464. package/dist/safety/nioshLifting.d.ts +21 -0
  465. package/dist/safety/nioshLifting.d.ts.map +1 -0
  466. package/dist/safety/nioshLifting.js +164 -0
  467. package/dist/safety/nioshLifting.js.map +1 -0
  468. package/dist/safety/noiseExposure.d.ts +22 -0
  469. package/dist/safety/noiseExposure.d.ts.map +1 -0
  470. package/dist/safety/noiseExposure.js +76 -0
  471. package/dist/safety/noiseExposure.js.map +1 -0
  472. package/dist/safety/respiratorCalculate.d.ts +14 -0
  473. package/dist/safety/respiratorCalculate.d.ts.map +1 -0
  474. package/dist/safety/respiratorCalculate.js +90 -0
  475. package/dist/safety/respiratorCalculate.js.map +1 -0
  476. package/dist/safety/types.d.ts +93 -0
  477. package/dist/safety/types.d.ts.map +1 -0
  478. package/dist/safety/types.js +2 -0
  479. package/dist/safety/types.js.map +1 -0
  480. package/dist/safety/wbgtCalculate.d.ts +25 -0
  481. package/dist/safety/wbgtCalculate.d.ts.map +1 -0
  482. package/dist/safety/wbgtCalculate.js +65 -0
  483. package/dist/safety/wbgtCalculate.js.map +1 -0
  484. package/dist/utility/assignment.d.ts +11 -0
  485. package/dist/utility/assignment.d.ts.map +1 -0
  486. package/dist/utility/assignment.js +113 -0
  487. package/dist/utility/assignment.js.map +1 -0
  488. package/dist/utility/index.d.ts +4 -0
  489. package/dist/utility/index.d.ts.map +1 -0
  490. package/dist/utility/index.js +4 -0
  491. package/dist/utility/index.js.map +1 -0
  492. package/dist/utility/qrcode.d.ts +30 -0
  493. package/dist/utility/qrcode.d.ts.map +1 -0
  494. package/dist/utility/qrcode.js +30 -0
  495. package/dist/utility/qrcode.js.map +1 -0
  496. package/dist/utility/types.d.ts +64 -0
  497. package/dist/utility/types.d.ts.map +1 -0
  498. package/dist/utility/types.js +2 -0
  499. package/dist/utility/types.js.map +1 -0
  500. package/dist/utility/unit.d.ts +25 -0
  501. package/dist/utility/unit.d.ts.map +1 -0
  502. package/dist/utility/unit.js +136 -0
  503. package/dist/utility/unit.js.map +1 -0
  504. package/dist/utils.d.ts +9 -0
  505. package/dist/utils.d.ts.map +1 -0
  506. package/dist/utils.js +12 -0
  507. package/dist/utils.js.map +1 -0
  508. package/package.json +117 -0
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Reflow profile data for different solder paste types
3
+ */
4
+ const REFLOW_PROFILES = {
5
+ sac305: {
6
+ pasteType: 'SAC305',
7
+ meltingPoint: 217,
8
+ preheatRate: '1.0-3.0',
9
+ preheatTemp: '150-200',
10
+ preheatTime: '60-120',
11
+ soakTemp: '150-200',
12
+ soakTime: '60-120',
13
+ peakTemp: '235-250',
14
+ timeAboveLiquidus: '60-90',
15
+ coolingRate: '<4.0',
16
+ totalProfileTime: '240-300',
17
+ },
18
+ sn63pb37: {
19
+ pasteType: 'Sn63Pb37',
20
+ meltingPoint: 183,
21
+ preheatRate: '1.0-2.5',
22
+ preheatTemp: '100-150',
23
+ preheatTime: '60-90',
24
+ soakTemp: '150-183',
25
+ soakTime: '60-90',
26
+ peakTemp: '210-230',
27
+ timeAboveLiquidus: '45-75',
28
+ coolingRate: '<4.0',
29
+ totalProfileTime: '180-240',
30
+ },
31
+ sac387: {
32
+ pasteType: 'SAC387',
33
+ meltingPoint: 217,
34
+ preheatRate: '1.0-3.0',
35
+ preheatTemp: '150-200',
36
+ preheatTime: '60-120',
37
+ soakTemp: '150-200',
38
+ soakTime: '60-120',
39
+ peakTemp: '240-260',
40
+ timeAboveLiquidus: '60-90',
41
+ coolingRate: '<4.0',
42
+ totalProfileTime: '240-300',
43
+ },
44
+ snbi58: {
45
+ pasteType: 'SnBi58',
46
+ meltingPoint: 138,
47
+ preheatRate: '0.5-2.0',
48
+ preheatTemp: '80-120',
49
+ preheatTime: '60-90',
50
+ soakTemp: '100-130',
51
+ soakTime: '60-90',
52
+ peakTemp: '160-180',
53
+ timeAboveLiquidus: '30-60',
54
+ coolingRate: '<3.0',
55
+ totalProfileTime: '180-240',
56
+ },
57
+ };
58
+ const PASTE_TYPES = ['sac305', 'sn63pb37', 'sac387', 'snbi58'];
59
+ /**
60
+ * Get all available paste types
61
+ */
62
+ export function getPasteTypes() {
63
+ return [...PASTE_TYPES];
64
+ }
65
+ /**
66
+ * Get reflow profile for a specific solder paste type
67
+ * @param pasteType - The type of solder paste
68
+ * @returns Reflow profile or undefined if paste type is invalid
69
+ */
70
+ export function reflowProfile(pasteType) {
71
+ const profile = REFLOW_PROFILES[pasteType];
72
+ if (!profile) {
73
+ return undefined;
74
+ }
75
+ return { ...profile };
76
+ }
77
+ //# sourceMappingURL=reflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflow.js","sourceRoot":"","sources":["../../src/electronics/reflow.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,eAAe,GAAoC;IACvD,MAAM,EAAE;QACN,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,GAAG;QACjB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,QAAQ;QACrB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,SAAS;QACnB,iBAAiB,EAAE,OAAO;QAC1B,WAAW,EAAE,MAAM;QACnB,gBAAgB,EAAE,SAAS;KAC5B;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,UAAU;QACrB,YAAY,EAAE,GAAG;QACjB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,OAAO;QACpB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,SAAS;QACnB,iBAAiB,EAAE,OAAO;QAC1B,WAAW,EAAE,MAAM;QACnB,gBAAgB,EAAE,SAAS;KAC5B;IACD,MAAM,EAAE;QACN,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,GAAG;QACjB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,QAAQ;QACrB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,SAAS;QACnB,iBAAiB,EAAE,OAAO;QAC1B,WAAW,EAAE,MAAM;QACnB,gBAAgB,EAAE,SAAS;KAC5B;IACD,MAAM,EAAE;QACN,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,GAAG;QACjB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,QAAQ;QACrB,WAAW,EAAE,OAAO;QACpB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,SAAS;QACnB,iBAAiB,EAAE,OAAO;QAC1B,WAAW,EAAE,MAAM;QACnB,gBAAgB,EAAE,SAAS;KAC5B;CACF,CAAC;AAEF,MAAM,WAAW,GAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,SAAoB;IAChD,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;AACxB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ResistorBands, ResistorResult } from './types.js';
2
+ /**
3
+ * Decode resistor color bands to get resistance value
4
+ * @param input - Resistor band information (count and colors)
5
+ * @returns Decoded resistance, tolerance, and formatted string
6
+ */
7
+ export declare function resistorDecode(input: ResistorBands): ResistorResult;
8
+ //# sourceMappingURL=resistor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resistor.d.ts","sourceRoot":"","sources":["../../src/electronics/resistor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAa,MAAM,YAAY,CAAC;AAoG3E;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CA4CnE"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Color code values for resistor bands
3
+ */
4
+ const COLOR_VALUES = {
5
+ black: 0,
6
+ brown: 1,
7
+ red: 2,
8
+ orange: 3,
9
+ yellow: 4,
10
+ green: 5,
11
+ blue: 6,
12
+ violet: 7,
13
+ grey: 8,
14
+ white: 9,
15
+ gold: -1, // used for multiplier (0.1) and tolerance (5%)
16
+ silver: -2, // used for multiplier (0.01) and tolerance (10%)
17
+ };
18
+ /**
19
+ * Multiplier values for each color
20
+ */
21
+ const MULTIPLIERS = {
22
+ black: 1,
23
+ brown: 10,
24
+ red: 100,
25
+ orange: 1000,
26
+ yellow: 10000,
27
+ green: 100000,
28
+ blue: 1000000,
29
+ violet: 10000000,
30
+ grey: 100000000,
31
+ white: 1000000000,
32
+ gold: 0.1,
33
+ silver: 0.01,
34
+ };
35
+ /**
36
+ * Tolerance values for each color (percentage)
37
+ */
38
+ const TOLERANCES = {
39
+ brown: 1,
40
+ red: 2,
41
+ green: 0.5,
42
+ blue: 0.25,
43
+ violet: 0.1,
44
+ grey: 0.05,
45
+ gold: 5,
46
+ silver: 10,
47
+ };
48
+ /**
49
+ * Temperature coefficient values (ppm/C) for 6-band resistors
50
+ */
51
+ const TEMP_COEFFICIENTS = {
52
+ black: 250,
53
+ brown: 100,
54
+ red: 50,
55
+ orange: 15,
56
+ yellow: 25,
57
+ green: 20,
58
+ blue: 10,
59
+ violet: 5,
60
+ grey: 1,
61
+ };
62
+ /**
63
+ * Format resistance value with appropriate unit (Ohm, kOhm, MOhm)
64
+ */
65
+ function formatResistance(resistance, tolerance, tempCoeff) {
66
+ let value;
67
+ let unit;
68
+ if (resistance >= 1000000) {
69
+ value = (resistance / 1000000).toString();
70
+ if (value.includes('.') && value.split('.')[1].length > 2) {
71
+ value = (resistance / 1000000).toFixed(2).replace(/\.?0+$/, '');
72
+ }
73
+ unit = 'M\u03A9';
74
+ }
75
+ else if (resistance >= 1000) {
76
+ value = (resistance / 1000).toString();
77
+ if (value.includes('.') && value.split('.')[1].length > 2) {
78
+ value = (resistance / 1000).toFixed(2).replace(/\.?0+$/, '');
79
+ }
80
+ unit = 'k\u03A9';
81
+ }
82
+ else {
83
+ value = resistance.toString();
84
+ unit = '\u03A9';
85
+ }
86
+ let formatted = `${value}${unit} \u00B1${tolerance}%`;
87
+ if (tempCoeff !== undefined) {
88
+ formatted += ` ${tempCoeff}ppm/\u00B0C`;
89
+ }
90
+ return formatted;
91
+ }
92
+ /**
93
+ * Decode resistor color bands to get resistance value
94
+ * @param input - Resistor band information (count and colors)
95
+ * @returns Decoded resistance, tolerance, and formatted string
96
+ */
97
+ export function resistorDecode(input) {
98
+ const { bandCount, bands } = input;
99
+ let resistance;
100
+ let tolerance;
101
+ let tempCoeff;
102
+ if (bandCount === 4) {
103
+ // 4-band: digit1, digit2, multiplier, tolerance
104
+ const digit1 = COLOR_VALUES[bands[0]];
105
+ const digit2 = COLOR_VALUES[bands[1]];
106
+ const multiplier = MULTIPLIERS[bands[2]];
107
+ tolerance = TOLERANCES[bands[3]] ?? 20;
108
+ resistance = (digit1 * 10 + digit2) * multiplier;
109
+ }
110
+ else if (bandCount === 5) {
111
+ // 5-band: digit1, digit2, digit3, multiplier, tolerance
112
+ const digit1 = COLOR_VALUES[bands[0]];
113
+ const digit2 = COLOR_VALUES[bands[1]];
114
+ const digit3 = COLOR_VALUES[bands[2]];
115
+ const multiplier = MULTIPLIERS[bands[3]];
116
+ tolerance = TOLERANCES[bands[4]] ?? 20;
117
+ resistance = (digit1 * 100 + digit2 * 10 + digit3) * multiplier;
118
+ }
119
+ else {
120
+ // 6-band: digit1, digit2, digit3, multiplier, tolerance, tempCoeff
121
+ const digit1 = COLOR_VALUES[bands[0]];
122
+ const digit2 = COLOR_VALUES[bands[1]];
123
+ const digit3 = COLOR_VALUES[bands[2]];
124
+ const multiplier = MULTIPLIERS[bands[3]];
125
+ tolerance = TOLERANCES[bands[4]] ?? 20;
126
+ tempCoeff = TEMP_COEFFICIENTS[bands[5]];
127
+ resistance = (digit1 * 100 + digit2 * 10 + digit3) * multiplier;
128
+ }
129
+ const formatted = formatResistance(resistance, tolerance, tempCoeff);
130
+ return {
131
+ resistance,
132
+ tolerance,
133
+ tempCoeff,
134
+ formatted,
135
+ };
136
+ }
137
+ //# sourceMappingURL=resistor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resistor.js","sourceRoot":"","sources":["../../src/electronics/resistor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { SmtTaktInput, SmtTaktResult } from './types.js';
2
+ /**
3
+ * Calculate SMT line takt time and throughput
4
+ * @param input - SMT line parameters
5
+ * @returns Takt time calculation results
6
+ */
7
+ export declare function smtTakt(input: SmtTaktInput): SmtTaktResult;
8
+ //# sourceMappingURL=smt-takt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smt-takt.d.ts","sourceRoot":"","sources":["../../src/electronics/smt-takt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAU9D;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CA2D1D"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Round to specified decimal places
3
+ */
4
+ function roundTo(value, decimals) {
5
+ const factor = Math.pow(10, decimals);
6
+ return Math.round(value * factor) / factor;
7
+ }
8
+ /**
9
+ * Calculate SMT line takt time and throughput
10
+ * @param input - SMT line parameters
11
+ * @returns Takt time calculation results
12
+ */
13
+ export function smtTakt(input) {
14
+ const { placementRate, componentsPerBoard, boardsPerPanel, setupTimeSec, availableTimeMin, } = input;
15
+ // Guard against invalid inputs
16
+ if (componentsPerBoard <= 0) {
17
+ return {
18
+ placementTimeSec: 0,
19
+ totalCycleTimeSec: 0,
20
+ boardsPerHour: 0,
21
+ totalBoardsPerShift: 0,
22
+ lineUtilization: 0,
23
+ };
24
+ }
25
+ if (placementRate <= 0) {
26
+ return {
27
+ placementTimeSec: 0,
28
+ totalCycleTimeSec: 0,
29
+ boardsPerHour: 0,
30
+ totalBoardsPerShift: 0,
31
+ lineUtilization: 0,
32
+ };
33
+ }
34
+ // Calculate placement time per board (seconds)
35
+ // placementRate is in components per hour (cph)
36
+ // placementTime = (components / rate) * 3600
37
+ const placementTimeSec = roundTo((componentsPerBoard / placementRate) * 3600, 2);
38
+ // Total cycle time includes setup time
39
+ const totalCycleTimeSec = roundTo(placementTimeSec + setupTimeSec, 2);
40
+ // Boards per hour
41
+ const boardsPerHour = totalCycleTimeSec > 0 ? roundTo(3600 / totalCycleTimeSec, 2) : 0;
42
+ // Total boards per shift (available time in minutes * 60 / cycle time) * boards per panel
43
+ const availableTimeSec = availableTimeMin * 60;
44
+ const totalBoardsPerShift = totalCycleTimeSec > 0
45
+ ? Math.floor((availableTimeSec / totalCycleTimeSec) * boardsPerPanel)
46
+ : 0;
47
+ // Line utilization: ratio of pure placement time to total cycle time
48
+ const lineUtilization = totalCycleTimeSec > 0
49
+ ? roundTo((placementTimeSec / totalCycleTimeSec) * 100, 2)
50
+ : 0;
51
+ return {
52
+ placementTimeSec,
53
+ totalCycleTimeSec,
54
+ boardsPerHour,
55
+ totalBoardsPerShift,
56
+ lineUtilization,
57
+ };
58
+ }
59
+ //# sourceMappingURL=smt-takt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smt-takt.js","sourceRoot":"","sources":["../../src/electronics/smt-takt.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,EACJ,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,gBAAgB,GACjB,GAAG,KAAK,CAAC;IAEV,+BAA+B;IAC/B,IAAI,kBAAkB,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,gBAAgB,EAAE,CAAC;YACnB,iBAAiB,EAAE,CAAC;YACpB,aAAa,EAAE,CAAC;YAChB,mBAAmB,EAAE,CAAC;YACtB,eAAe,EAAE,CAAC;SACnB,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,gBAAgB,EAAE,CAAC;YACnB,iBAAiB,EAAE,CAAC;YACpB,aAAa,EAAE,CAAC;YAChB,mBAAmB,EAAE,CAAC;YACtB,eAAe,EAAE,CAAC;SACnB,CAAC;IACJ,CAAC;IAED,+CAA+C;IAC/C,gDAAgD;IAChD,6CAA6C;IAC7C,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,kBAAkB,GAAG,aAAa,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAEjF,uCAAuC;IACvC,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;IAEtE,kBAAkB;IAClB,MAAM,aAAa,GAAG,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvF,0FAA0F;IAC1F,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,EAAE,CAAC;IAC/C,MAAM,mBAAmB,GAAG,iBAAiB,GAAG,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,cAAc,CAAC;QACrE,CAAC,CAAC,CAAC,CAAC;IAEN,qEAAqE;IACrE,MAAM,eAAe,GAAG,iBAAiB,GAAG,CAAC;QAC3C,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC,CAAC;IAEN,OAAO;QACL,gBAAgB;QAChB,iBAAiB;QACjB,aAAa;QACb,mBAAmB;QACnB,eAAe;KAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { SolderInput, SolderResult } from './types.js';
2
+ /**
3
+ * Calculate solder paste consumption for SMT production
4
+ * @param input - Solder paste parameters
5
+ * @returns Solder paste volume and weight calculations
6
+ */
7
+ export declare function solderPaste(input: SolderInput): SolderResult;
8
+ //# sourceMappingURL=solder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solder.d.ts","sourceRoot":"","sources":["../../src/electronics/solder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU5D;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAiD5D"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Round to specified decimal places
3
+ */
4
+ function roundTo(value, decimals) {
5
+ const factor = Math.pow(10, decimals);
6
+ return Math.round(value * factor) / factor;
7
+ }
8
+ /**
9
+ * Calculate solder paste consumption for SMT production
10
+ * @param input - Solder paste parameters
11
+ * @returns Solder paste volume and weight calculations
12
+ */
13
+ export function solderPaste(input) {
14
+ const { padCount, avgPadArea, stencilThickness, transferEfficiency, density, boardsPerPanel, panelCount, } = input;
15
+ // Guard against zero/negative values
16
+ if (padCount <= 0 || stencilThickness <= 0) {
17
+ return {
18
+ volumePerBoard: 0,
19
+ weightPerBoard: 0,
20
+ totalVolume: 0,
21
+ totalWeight: 0,
22
+ totalWeightKg: 0,
23
+ };
24
+ }
25
+ // Volume per board (mm3)
26
+ // Volume = padCount * avgPadArea * stencilThickness * transferEfficiency
27
+ const volumePerBoard = roundTo(padCount * avgPadArea * stencilThickness * transferEfficiency, 4);
28
+ // Weight per board (g)
29
+ // Weight = volume * density / 1000 (density is g/cm3, volume is mm3)
30
+ // 1 cm3 = 1000 mm3, so divide by 1000
31
+ const weightPerBoard = roundTo(volumePerBoard * density / 1000, 4);
32
+ // Total boards = boardsPerPanel * panelCount
33
+ const totalBoards = boardsPerPanel * panelCount;
34
+ // Total volume and weight
35
+ const totalVolume = roundTo(volumePerBoard * totalBoards, 4);
36
+ const totalWeight = roundTo(weightPerBoard * totalBoards, 4);
37
+ const totalWeightKg = roundTo(totalWeight / 1000, 4);
38
+ return {
39
+ volumePerBoard,
40
+ weightPerBoard,
41
+ totalVolume,
42
+ totalWeight,
43
+ totalWeightKg,
44
+ };
45
+ }
46
+ //# sourceMappingURL=solder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solder.js","sourceRoot":"","sources":["../../src/electronics/solder.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAkB;IAC5C,MAAM,EACJ,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,OAAO,EACP,cAAc,EACd,UAAU,GACX,GAAG,KAAK,CAAC;IAEV,qCAAqC;IACrC,IAAI,QAAQ,IAAI,CAAC,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;QAC3C,OAAO;YACL,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,CAAC;YACjB,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;YACd,aAAa,EAAE,CAAC;SACjB,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,yEAAyE;IACzE,MAAM,cAAc,GAAG,OAAO,CAC5B,QAAQ,GAAG,UAAU,GAAG,gBAAgB,GAAG,kBAAkB,EAC7D,CAAC,CACF,CAAC;IAEF,uBAAuB;IACvB,qEAAqE;IACrE,sCAAsC;IACtC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnE,6CAA6C;IAC7C,MAAM,WAAW,GAAG,cAAc,GAAG,UAAU,CAAC;IAEhD,0BAA0B;IAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAErD,OAAO;QACL,cAAc;QACd,cAAc;QACd,WAAW;QACX,WAAW;QACX,aAAa;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { StencilInput, StencilResult } from './types.js';
2
+ /**
3
+ * Calculate stencil aperture area ratio and aspect ratio
4
+ * @param input - Aperture dimensions, stencil thickness, and component type
5
+ * @returns Area ratio, aspect ratio, and pass/fail status
6
+ * @throws Error if dimensions are invalid
7
+ */
8
+ export declare function stencilAperture(input: StencilInput): StencilResult;
9
+ //# sourceMappingURL=stencil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stencil.d.ts","sourceRoot":"","sources":["../../src/electronics/stencil.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAmB7E;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CA8DlE"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Round to specified decimal places
3
+ */
4
+ function roundTo(value, decimals) {
5
+ const factor = Math.pow(10, decimals);
6
+ return Math.round(value * factor) / factor;
7
+ }
8
+ // Recommended minimums by component type (IPC-7525B guidelines)
9
+ const RECOMMENDATIONS = {
10
+ bga: { areaRatio: 0.66, aspectRatio: 1.5 }, // Fine pitch BGA
11
+ qfp: { areaRatio: 0.60, aspectRatio: 1.5 }, // QFP/QFN
12
+ chip: { areaRatio: 0.50, aspectRatio: 1.5 }, // 0402/0603 chip components
13
+ sot: { areaRatio: 0.55, aspectRatio: 1.5 }, // SOT/SOIC
14
+ general: { areaRatio: 0.50, aspectRatio: 1.5 }, // General purpose
15
+ };
16
+ /**
17
+ * Calculate stencil aperture area ratio and aspect ratio
18
+ * @param input - Aperture dimensions, stencil thickness, and component type
19
+ * @returns Area ratio, aspect ratio, and pass/fail status
20
+ * @throws Error if dimensions are invalid
21
+ */
22
+ export function stencilAperture(input) {
23
+ const { shape, apertureWidth, apertureLength, stencilThickness, componentType } = input;
24
+ // Validate inputs
25
+ if (apertureWidth <= 0 || stencilThickness <= 0) {
26
+ throw new Error('Aperture width and stencil thickness must be positive');
27
+ }
28
+ if (shape === 'rectangle' && apertureLength <= 0) {
29
+ throw new Error('Aperture length must be positive for rectangular apertures');
30
+ }
31
+ let apertureArea;
32
+ let perimeter;
33
+ if (shape === 'circle') {
34
+ // For circle: width is diameter
35
+ const radius = apertureWidth / 2;
36
+ apertureArea = Math.PI * radius * radius;
37
+ perimeter = Math.PI * apertureWidth;
38
+ }
39
+ else {
40
+ // Rectangle
41
+ apertureArea = apertureWidth * apertureLength;
42
+ perimeter = 2 * (apertureWidth + apertureLength);
43
+ }
44
+ // Wall area = perimeter * stencil thickness
45
+ const wallArea = perimeter * stencilThickness;
46
+ // Area ratio = aperture area / wall area
47
+ const areaRatio = apertureArea / wallArea;
48
+ // Aspect ratio = smallest aperture dimension / stencil thickness
49
+ const smallestDimension = shape === 'circle' ? apertureWidth : Math.min(apertureWidth, apertureLength);
50
+ const aspectRatio = smallestDimension / stencilThickness;
51
+ // Get recommendations for component type
52
+ const recommendations = RECOMMENDATIONS[componentType];
53
+ const areaRatioOk = areaRatio >= recommendations.areaRatio;
54
+ const aspectRatioOk = aspectRatio >= recommendations.aspectRatio;
55
+ // Determine overall status
56
+ let status;
57
+ if (areaRatioOk && aspectRatioOk) {
58
+ status = 'good';
59
+ }
60
+ else if (areaRatioOk || aspectRatioOk) {
61
+ status = 'marginal';
62
+ }
63
+ else {
64
+ status = 'poor';
65
+ }
66
+ return {
67
+ apertureArea: roundTo(apertureArea, 4),
68
+ wallArea: roundTo(wallArea, 4),
69
+ areaRatio: roundTo(areaRatio, 3),
70
+ aspectRatio: roundTo(aspectRatio, 2),
71
+ areaRatioOk,
72
+ aspectRatioOk,
73
+ recommendedAreaRatio: recommendations.areaRatio,
74
+ recommendedAspectRatio: recommendations.aspectRatio,
75
+ status,
76
+ };
77
+ }
78
+ //# sourceMappingURL=stencil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stencil.js","sourceRoot":"","sources":["../../src/electronics/stencil.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC;AAED,gEAAgE;AAChE,MAAM,eAAe,GAAsE;IACzF,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,EAAO,iBAAiB;IAClE,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,EAAO,UAAU;IAC3D,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,EAAM,4BAA4B;IAC7E,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,EAAO,WAAW;IAC5D,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,kBAAkB;CACnE,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAmB;IACjD,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IAExF,kBAAkB;IAClB,IAAI,aAAa,IAAI,CAAC,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,KAAK,KAAK,WAAW,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,YAAoB,CAAC;IACzB,IAAI,SAAiB,CAAC;IAEtB,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,gCAAgC;QAChC,MAAM,MAAM,GAAG,aAAa,GAAG,CAAC,CAAC;QACjC,YAAY,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;QACzC,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,YAAY;QACZ,YAAY,GAAG,aAAa,GAAG,cAAc,CAAC;QAC9C,SAAS,GAAG,CAAC,GAAG,CAAC,aAAa,GAAG,cAAc,CAAC,CAAC;IACnD,CAAC;IAED,4CAA4C;IAC5C,MAAM,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC;IAE9C,yCAAyC;IACzC,MAAM,SAAS,GAAG,YAAY,GAAG,QAAQ,CAAC;IAE1C,iEAAiE;IACjE,MAAM,iBAAiB,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACvG,MAAM,WAAW,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;IAEzD,yCAAyC;IACzC,MAAM,eAAe,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;IAEvD,MAAM,WAAW,GAAG,SAAS,IAAI,eAAe,CAAC,SAAS,CAAC;IAC3D,MAAM,aAAa,GAAG,WAAW,IAAI,eAAe,CAAC,WAAW,CAAC;IAEjE,2BAA2B;IAC3B,IAAI,MAAoC,CAAC;IACzC,IAAI,WAAW,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,GAAG,MAAM,CAAC;IAClB,CAAC;SAAM,IAAI,WAAW,IAAI,aAAa,EAAE,CAAC;QACxC,MAAM,GAAG,UAAU,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,CAAC;IAClB,CAAC;IAED,OAAO;QACL,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACpC,WAAW;QACX,aAAa;QACb,oBAAoB,EAAE,eAAe,CAAC,SAAS;QAC/C,sBAAsB,EAAE,eAAe,CAAC,WAAW;QACnD,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { TraceInput, TraceResult } from './types.js';
2
+ /**
3
+ * Calculate PCB trace width using IPC-2221 formula
4
+ * @param input - Trace parameters (current, temp rise, copper weight, layer)
5
+ * @returns Trace width and related calculations
6
+ */
7
+ export declare function traceWidth(input: TraceInput): TraceResult;
8
+ //# sourceMappingURL=trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/electronics/trace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAsC1D;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAgDzD"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Round to specified decimal places
3
+ */
4
+ function roundTo(value, decimals) {
5
+ const factor = Math.pow(10, decimals);
6
+ return Math.round(value * factor) / factor;
7
+ }
8
+ /**
9
+ * IPC-2221 constants for trace width calculation
10
+ * k values differ between external and internal layers
11
+ */
12
+ const IPC2221_CONSTANTS = {
13
+ external: {
14
+ k: 0.048,
15
+ b: 0.44,
16
+ c: 0.725,
17
+ },
18
+ internal: {
19
+ k: 0.024,
20
+ b: 0.44,
21
+ c: 0.725,
22
+ },
23
+ };
24
+ /**
25
+ * Copper thickness per oz/ft2 in mils
26
+ * 1 oz/ft2 = 1.378 mils (35 um)
27
+ */
28
+ const COPPER_THICKNESS_PER_OZ = 1.378;
29
+ /**
30
+ * Copper resistivity at 25C in ohm-mil
31
+ */
32
+ const COPPER_RESISTIVITY = 0.6787; // micro-ohm-inch = 0.6787 ohm-mil^2/inch
33
+ /**
34
+ * Calculate PCB trace width using IPC-2221 formula
35
+ * @param input - Trace parameters (current, temp rise, copper weight, layer)
36
+ * @returns Trace width and related calculations
37
+ */
38
+ export function traceWidth(input) {
39
+ const { current, tempRise, copperWeight, layer } = input;
40
+ // Get constants for the layer type
41
+ const constants = IPC2221_CONSTANTS[layer];
42
+ // IPC-2221 formula:
43
+ // Area (mil^2) = (I / (k * dT^b))^(1/c)
44
+ // where:
45
+ // I = current in amps
46
+ // k = constant (0.048 external, 0.024 internal)
47
+ // dT = temperature rise in C
48
+ // b = 0.44
49
+ // c = 0.725
50
+ const crossSection = Math.pow(current / (constants.k * Math.pow(tempRise, constants.b)), 1 / constants.c);
51
+ // Copper thickness in mils
52
+ const copperThickness = copperWeight * COPPER_THICKNESS_PER_OZ;
53
+ // Width = Area / thickness
54
+ const widthMils = roundTo(crossSection / copperThickness, 4);
55
+ // Convert to mm (1 mil = 0.0254 mm)
56
+ const widthMm = roundTo(widthMils * 0.0254, 4);
57
+ // Calculate resistance per inch at 25C
58
+ // R = resistivity / Area (where resistivity is in micro-ohm-inch)
59
+ // Area is in mil^2
60
+ // R = 0.6787 / Area (micro-ohm/inch) = 0.6787e-6 / Area (ohm/inch)
61
+ const resistance = roundTo(COPPER_RESISTIVITY / crossSection * 1e-6, 8);
62
+ // Voltage drop per inch = I * R
63
+ const voltageDrop = roundTo(current * resistance, 8);
64
+ // Power loss per inch = I^2 * R
65
+ const powerLoss = roundTo(current * current * resistance, 8);
66
+ return {
67
+ widthMils,
68
+ widthMm,
69
+ crossSection: roundTo(crossSection, 4),
70
+ resistance,
71
+ voltageDrop,
72
+ powerLoss,
73
+ };
74
+ }
75
+ //# sourceMappingURL=trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/electronics/trace.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,iBAAiB,GAAG;IACxB,QAAQ,EAAE;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,KAAK;KACT;IACD,QAAQ,EAAE;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,KAAK;KACT;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAEtC;;GAEG;AACH,MAAM,kBAAkB,GAAG,MAAM,CAAC,CAAC,yCAAyC;AAE5E;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAEzD,mCAAmC;IACnC,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAE3C,oBAAoB;IACpB,wCAAwC;IACxC,SAAS;IACT,wBAAwB;IACxB,kDAAkD;IAClD,+BAA+B;IAC/B,aAAa;IACb,cAAc;IACd,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC3B,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EACzD,CAAC,GAAG,SAAS,CAAC,CAAC,CAChB,CAAC;IAEF,2BAA2B;IAC3B,MAAM,eAAe,GAAG,YAAY,GAAG,uBAAuB,CAAC;IAE/D,2BAA2B;IAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,GAAG,eAAe,EAAE,CAAC,CAAC,CAAC;IAE7D,oCAAoC;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IAE/C,uCAAuC;IACvC,kEAAkE;IAClE,mBAAmB;IACnB,mEAAmE;IACnE,MAAM,UAAU,GAAG,OAAO,CAAC,kBAAkB,GAAG,YAAY,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAExE,gCAAgC;IAChC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;IAErD,gCAAgC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;IAE7D,OAAO;QACL,SAAS;QACT,OAAO;QACP,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,UAAU;QACV,WAAW;QACX,SAAS;KACV,CAAC;AACJ,CAAC"}