@tscircuit/schematic-trace-solver 0.0.149 → 0.0.151

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 (162) hide show
  1. package/.agents/skills/schematic-trace-visualization/SKILL.md +7 -2
  2. package/README.md +6 -4
  3. package/dist/index.d.ts +64 -3
  4. package/dist/index.js +383 -66
  5. package/lib/solvers/InlineNetLabelSolver/InlineNetLabelSolver.ts +123 -84
  6. package/lib/solvers/NetLabelPlacementSolver/NetLabelPlacementSolver.ts +17 -1
  7. package/lib/solvers/NetLabelPlacementSolver/SingleNetLabelPlacementSolver/SingleNetLabelPlacementSolver.ts +2 -0
  8. package/lib/solvers/NetLabelPlacementSolver/SingleNetLabelPlacementSolver/solvePortOnlyPin.ts +2 -0
  9. package/lib/solvers/NetLabelToTraceSolver/NetLabelToTraceSolver.ts +338 -0
  10. package/lib/solvers/NetLabelTraceRecovery/getTraceRecoveryConnectivityMaps.ts +33 -0
  11. package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +15 -0
  12. package/lib/types/InputProblem.ts +27 -1
  13. package/package.json +8 -1
  14. package/tests/bug-reports/bug-report-20260706T213649Z/__snapshots__/bug-report-20260706T213649Z.snap.svg +751 -5
  15. package/tests/bug-reports/bug-report-20260706T220324Z/__snapshots__/bug-report-20260706T220324Z.snap.svg +660 -5
  16. package/tests/bug-reports/bug-report-20260707T020342Z/__snapshots__/bug-report-20260707T020342Z.snap.svg +44 -5
  17. package/tests/bug-reports/bug-report-20260707T092615Z/__snapshots__/bug-report-20260707T092615Z.snap.svg +394 -5
  18. package/tests/bug-reports/bug-report-20260707T134549Z/__snapshots__/bug-report-20260707T134549Z.snap.svg +170 -5
  19. package/tests/bug-reports/bug-report-20260707T134722Z/__snapshots__/bug-report-20260707T134722Z.snap.svg +79 -5
  20. package/tests/bug-reports/bug-report-20260707T140410Z/__snapshots__/bug-report-20260707T140410Z.snap.svg +219 -5
  21. package/tests/bug-reports/bug-report-20260707T141025Z/__snapshots__/bug-report-20260707T141025Z.snap.svg +65 -5
  22. package/tests/bug-reports/bug-report-20260707T141421Z/__snapshots__/bug-report-20260707T141421Z.snap.svg +142 -5
  23. package/tests/bug-reports/bug-report-20260707T230831Z/__snapshots__/bug-report-20260707T230831Z.snap.svg +100 -5
  24. package/tests/bug-reports/bug-report-20260708T053736Z/__snapshots__/bug-report-20260708T053736Z.snap.svg +23 -5
  25. package/tests/bug-reports/bug-report-20260708T055430Z/__snapshots__/bug-report-20260708T055430Z.snap.svg +58 -5
  26. package/tests/bug-reports/bug-report-20260708T095725Z/__snapshots__/bug-report-20260708T095725Z.snap.svg +86 -5
  27. package/tests/bug-reports/bug-report-20260716T144856Z/__snapshots__/bug-report-20260716T144856Z.snap.svg +226 -5
  28. package/tests/bug-reports/bug-report-20260717T022934Z/__snapshots__/bug-report-20260717T022934Z.snap.svg +191 -5
  29. package/tests/bug-reports/bug-report-20260717T031704Z/__snapshots__/bug-report-20260717T031704Z.snap.svg +30 -5
  30. package/tests/bug-reports/bug-report-20260717T042845Z/__snapshots__/bug-report-20260717T042845Z.snap.svg +37 -5
  31. package/tests/bug-reports/bug-report-20260721T221026Z/__snapshots__/bug-report-20260721T221026Z.snap.svg +580 -2
  32. package/tests/bug-reports/bug-report-20260724T175257Z/__snapshots__/bug-report-20260724T175257Z.snap.svg +44 -5
  33. package/tests/bug-reports/bug-report-20260728T144234Z/__snapshots__/bug-report-20260728T144234Z.snap.svg +107 -5
  34. package/tests/bug-reports/bug-report-20260728T225606Z/__snapshots__/bug-report-20260728T225606Z.snap.svg +114 -5
  35. package/tests/bug-reports/bug-report-20260730T061837Z/__snapshots__/bug-report-20260730T061837Z.snap.svg +121 -5
  36. package/tests/bug-reports/bug-report-20260731T052229Z/__snapshots__/bug-report-20260731T052229Z.snap.svg +51 -5
  37. package/tests/bug-reports/bug-report-20260804T095800Z/__snapshots__/bug-report-20260804T095800Z.snap.svg +212 -5
  38. package/tests/bug-reports/bug-report-20260804T171919Z/__snapshots__/bug-report-20260804T171919Z.snap.svg +569 -5
  39. package/tests/bug-reports/bug-report-20260804T225912Z/__snapshots__/bug-report-20260804T225912Z.snap.svg +37 -5
  40. package/tests/bug-reports/bug-report-20260805T061316Z/__snapshots__/bug-report-20260805T061316Z.snap.svg +289 -5
  41. package/tests/bug-reports/bug-report-20260806T061548Z/__snapshots__/bug-report-20260806T061548Z.snap.svg +289 -5
  42. package/tests/bug-reports/bug-report-20260806T093501Z/__snapshots__/bug-report-20260806T093501Z.snap.svg +149 -5
  43. package/tests/bug-reports/bug-report-20260811T075142Z/__snapshots__/bug-report-20260811T075142Z.snap.svg +93 -5
  44. package/tests/bug-reports/bug-report-20260815T073240Z/__snapshots__/bug-report-20260815T073240Z.snap.svg +79 -5
  45. package/tests/bug-reports/bug-report-20260819T091818Z/__snapshots__/bug-report-20260819T091818Z.snap.svg +244 -2
  46. package/tests/examples/__snapshots__/example01.snap.svg +44 -5
  47. package/tests/examples/__snapshots__/example02.snap.svg +51 -5
  48. package/tests/examples/__snapshots__/example03.snap.svg +86 -5
  49. package/tests/examples/__snapshots__/example04.snap.svg +30 -5
  50. package/tests/examples/__snapshots__/example05.snap.svg +30 -5
  51. package/tests/examples/__snapshots__/example06.snap.svg +30 -5
  52. package/tests/examples/__snapshots__/example07.snap.svg +58 -5
  53. package/tests/examples/__snapshots__/example08.snap.svg +37 -5
  54. package/tests/examples/__snapshots__/example09.snap.svg +149 -5
  55. package/tests/examples/__snapshots__/example10.snap.svg +65 -5
  56. package/tests/examples/__snapshots__/example11.snap.svg +51 -5
  57. package/tests/examples/__snapshots__/example12.snap.svg +51 -5
  58. package/tests/examples/__snapshots__/example13.snap.svg +72 -5
  59. package/tests/examples/__snapshots__/example14.snap.svg +79 -5
  60. package/tests/examples/__snapshots__/example15.snap.svg +86 -5
  61. package/tests/examples/__snapshots__/example16.snap.svg +51 -5
  62. package/tests/examples/__snapshots__/example17.snap.svg +51 -5
  63. package/tests/examples/__snapshots__/example18.snap.svg +58 -5
  64. package/tests/examples/__snapshots__/example19.snap.svg +44 -5
  65. package/tests/examples/__snapshots__/example20.snap.svg +44 -5
  66. package/tests/examples/__snapshots__/example21.snap.svg +72 -5
  67. package/tests/examples/__snapshots__/example22.snap.svg +51 -5
  68. package/tests/examples/__snapshots__/example23.snap.svg +51 -5
  69. package/tests/examples/__snapshots__/example24.snap.svg +51 -5
  70. package/tests/examples/__snapshots__/example25.snap.svg +86 -5
  71. package/tests/examples/__snapshots__/example26.snap.svg +51 -5
  72. package/tests/examples/__snapshots__/example27.snap.svg +72 -5
  73. package/tests/examples/__snapshots__/example28.snap.svg +44 -5
  74. package/tests/examples/__snapshots__/example29.snap.svg +324 -5
  75. package/tests/examples/__snapshots__/example30.snap.svg +107 -5
  76. package/tests/examples/__snapshots__/example31.snap.svg +37 -5
  77. package/tests/examples/__snapshots__/example32.snap.svg +149 -5
  78. package/tests/examples/__snapshots__/example33.snap.svg +93 -5
  79. package/tests/examples/__snapshots__/example34.snap.svg +51 -5
  80. package/tests/examples/__snapshots__/example35.snap.svg +58 -5
  81. package/tests/examples/__snapshots__/example36.snap.svg +44 -5
  82. package/tests/examples/__snapshots__/example37.snap.svg +72 -5
  83. package/tests/examples/__snapshots__/example38.snap.svg +30 -5
  84. package/tests/examples/__snapshots__/example39.snap.svg +37 -5
  85. package/tests/examples/__snapshots__/example40.snap.svg +100 -5
  86. package/tests/examples/__snapshots__/example41.snap.svg +44 -5
  87. package/tests/examples/__snapshots__/example42.snap.svg +65 -5
  88. package/tests/examples/__snapshots__/example43.snap.svg +58 -5
  89. package/tests/examples/__snapshots__/example44.snap.svg +107 -5
  90. package/tests/examples/__snapshots__/example45.snap.svg +51 -5
  91. package/tests/examples/__snapshots__/example46.snap.svg +93 -5
  92. package/tests/examples/__snapshots__/example47.snap.svg +93 -5
  93. package/tests/examples/__snapshots__/example48.snap.svg +65 -5
  94. package/tests/examples/__snapshots__/example49.snap.svg +177 -5
  95. package/tests/examples/__snapshots__/example50.snap.svg +93 -5
  96. package/tests/examples/__snapshots__/example51.snap.svg +594 -21
  97. package/tests/fixtures/convertSolverOutputToCircuitJson.test.ts +219 -0
  98. package/tests/fixtures/convertSolverOutputToCircuitJson.ts +1058 -0
  99. package/tests/fixtures/matcher.ts +45 -8
  100. package/tests/repros/__snapshots__/board-1273-trace-overlap-cycle.snap.svg +762 -2
  101. package/tests/repros/__snapshots__/board-15984-same-net-junction.snap.svg +111 -2
  102. package/tests/repros/__snapshots__/board1096-usb-label-overlap-iteration.snap.svg +170 -5
  103. package/tests/repros/__snapshots__/bugreport-001-gnd-overlap.snap.svg +65 -5
  104. package/tests/repros/__snapshots__/manufacturePartNumber-text-box.snap.svg +30 -5
  105. package/tests/repros/__snapshots__/netlabel-connector-through-rail-label.snap.svg +79 -5
  106. package/tests/repros/__snapshots__/repro-atmega328p-fault-pullup.snap.svg +65 -5
  107. package/tests/repros/__snapshots__/repro-atmega328p-missing-gnd-netlabel.snap.svg +149 -5
  108. package/tests/repros/__snapshots__/repro-board-589-regulator-section.snap.svg +55 -2
  109. package/tests/repros/__snapshots__/repro-board-648-esp12f-section.snap.svg +160 -2
  110. package/tests/repros/__snapshots__/repro-bq24074-battery-charger.snap.svg +135 -5
  111. package/tests/repros/__snapshots__/repro-bq25895-cross-net-trace-overlap.snap.svg +69 -2
  112. package/tests/repros/__snapshots__/repro-cc2340r5.snap.svg +86 -5
  113. package/tests/repros/__snapshots__/repro-core-555-power-cross-net-overlap.snap.svg +44 -5
  114. package/tests/repros/__snapshots__/repro-core-subcircuit-missing-ground.snap.svg +44 -5
  115. package/tests/repros/__snapshots__/repro-core-tb67s579ftg-inline-label-routing.snap.svg +30 -5
  116. package/tests/repros/__snapshots__/repro-example35-minimize-trace-crossing.snap.svg +335 -2
  117. package/tests/repros/__snapshots__/repro-ground-label-on-lower-rail-end.snap.svg +48 -2
  118. package/tests/repros/__snapshots__/repro-ina237-current-monitor.snap.svg +149 -5
  119. package/tests/repros/__snapshots__/repro-missing-trace-netlabel.snap.svg +72 -5
  120. package/tests/repros/__snapshots__/repro-netlabel-collision-687.snap.svg +100 -5
  121. package/tests/repros/__snapshots__/repro-netlabel-overlap-trace.snap.svg +51 -5
  122. package/tests/repros/__snapshots__/repro-nrf52810-clock-routing.snap.svg +90 -2
  123. package/tests/repros/__snapshots__/repro-power-group-rail-labels.snap.svg +37 -5
  124. package/tests/repros/__snapshots__/repro-rectifier-trace-overlap.snap.svg +44 -5
  125. package/tests/repros/__snapshots__/repro-rp2040-gamepad-trace-alignment.snap.svg +237 -2
  126. package/tests/repros/__snapshots__/repro-rp2040-usb-cc2-ground-overlap.snap.svg +72 -5
  127. package/tests/repros/__snapshots__/repro-rp2040-v3v3-label-placement.snap.svg +51 -5
  128. package/tests/repros/__snapshots__/repro-rp2040-zero-crystal-fallback-netlabels.snap.svg +30 -5
  129. package/tests/repros/__snapshots__/repro-ti-power-output-section.snap.svg +79 -5
  130. package/tests/repros/__snapshots__/repro-tida010076-j4-ground-bus.snap.svg +27 -2
  131. package/tests/repros/__snapshots__/repro-tida010076-page02.snap.svg +1150 -5
  132. package/tests/repros/__snapshots__/repro-tps61222-trace-intersection.snap.svg +51 -5
  133. package/tests/repros/__snapshots__/repro-type-c-16pin-self-connection.snap.svg +30 -5
  134. package/tests/repros/__snapshots__/repro-type-c-16pin-to-resistor.snap.svg +30 -5
  135. package/tests/repros/__snapshots__/repro-type-c-vbus-led-ground-label.snap.svg +44 -5
  136. package/tests/repros/__snapshots__/repro-usb-power-vbus-label-detour.snap.svg +685 -2
  137. package/tests/repros/__snapshots__/repro-vcc-pin1-detour.snap.svg +27 -2
  138. package/tests/repros/__snapshots__/repro129-host-custom-symbol-passives.snap.svg +51 -5
  139. package/tests/repros/__snapshots__/repro130-bq27441-fuel-gauge-trace-through-c1.snap.svg +100 -5
  140. package/tests/repros/__snapshots__/repro161-power-section-autolayout.snap.svg +107 -5
  141. package/tests/repros/__snapshots__/repro47-endpoint-obstacle-detour.snap.svg +51 -5
  142. package/tests/repros/__snapshots__/repro48-555-timer-vcc-rail-label.snap.svg +104 -2
  143. package/tests/repros/__snapshots__/repro5-escape-padded-text-obstacles.snap.svg +30 -5
  144. package/tests/repros/__snapshots__/repro51-overlap-junction-crossing.snap.svg +65 -5
  145. package/tests/repros/__snapshots__/repro84-stacked-gnd-label-orientation.snap.svg +27 -2
  146. package/tests/repros/__snapshots__/small-variant-resistor-facing-direction.snap.svg +58 -5
  147. package/tests/repros/__snapshots__/trace-overlap-box-resistor.snap.svg +37 -5
  148. package/tests/solvers/InlineNetLabelSolver/__snapshots__/fallback-net-label-width.snap.svg +25 -7
  149. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label-anchored-label-clearance.snap.svg +34 -2
  150. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label-port-stub.snap.svg +23 -5
  151. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label-two-pin-net.snap.svg +23 -5
  152. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label01.snap.svg +23 -5
  153. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label02.snap.svg +23 -5
  154. package/tests/solvers/InlineNetLabelSolver/__snapshots__/terminal-stub-trace-clearance.snap.svg +23 -5
  155. package/tests/solvers/InlineNetLabelSolver/fallback-net-label-width.test.ts +10 -1
  156. package/tests/solvers/SchematicTraceSingleLineSolver2/__snapshots__/SchematicTraceSingleLineSolver2_01-example17-d1_1-u1_1.snap.svg +23 -5
  157. package/tests/solvers/SchematicTraceSingleLineSolver2/__snapshots__/SchematicTraceSingleLineSolver2_repro47-short-opposing-pins.snap.svg +20 -2
  158. package/tests/solvers/TraceCleanupSolver/__snapshots__/TraceCleanupSolver.snap.svg +44 -5
  159. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/__snapshots__/TraceLabelOverlapAvoidanceSolver.snap.svg +79 -5
  160. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/sub-solver/__snapshots__/MergedNetLabelObstacles.snap.svg +44 -5
  161. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/sub-solver/__snapshots__/OverlapAvoidanceStepSolver.snap.svg +23 -5
  162. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/sub-solver/__snapshots__/SingleOverlapSolver.snap.svg +30 -5
@@ -1,4 +1,6 @@
1
- <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="-2.275,-2.5 -2.275,-3.5" data-type="line" data-label="" points="453.96494552344836,156.72193273330174 453.96494552344836,421.99905258171486" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-2.275,-2.5 -2.0749999999999997,-2.5 -2.0749999999999997,-3.5 -2.275,-3.5" data-type="line" data-label="" points="453.96494552344836,156.72193273330174 507.02036949313106,156.72193273330174 507.02036949313106,421.99905258171486 453.96494552344836,421.99905258171486" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-2.0749999999999997,-2.5 -2.0749999999999997,-3.7510000000000003" data-type="line" data-label="" points="507.02036949313106,156.72193273330174 507.02036949313106,488.5836096636666" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-3" data-y="-2.5" x="69.31312174324955" y="103.6665087636191" width="384.6518237801988" height="106.11084793936527" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.003769642857142858"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="-3" data-y="-3.5" x="69.31312174324955" y="368.9436286120322" width="384.6518237801988" height="106.11084793936527" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.003769642857142858"/></g><g><rect data-type="rect" data-label="J3" data-x="-3.205" data-y="-2.1849999999999996" x="159.50734249170984" y="39.99999999999994" width="95.4997631454288" height="66.31927996210322" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.003769642857142858"/></g><g><rect data-type="rect" data-label="J4" data-x="-3.205" data-y="-3.1849999999999996" x="159.50734249170984" y="305.27711984841295" width="95.4997631454288" height="66.31927996210322" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.003769642857142858"/></g><g><rect data-type="rect" data-label="netId: GND
1
+ <svg width="2416" height="1200" viewBox="0 0 2416 1200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Solver debug visualization on the left and Circuit JSON schematic on the right">
2
+ <g transform="translate(0, 0) scale(1.875, 1.875) translate(0, 0)">
3
+ <rect width="100%" height="100%" fill="white"/><g><polyline data-points="-2.275,-2.5 -2.275,-3.5" data-type="line" data-label="" points="453.96494552344836,156.72193273330174 453.96494552344836,421.99905258171486" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-2.275,-2.5 -2.0749999999999997,-2.5 -2.0749999999999997,-3.5 -2.275,-3.5" data-type="line" data-label="" points="453.96494552344836,156.72193273330174 507.02036949313106,156.72193273330174 507.02036949313106,421.99905258171486 453.96494552344836,421.99905258171486" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-2.0749999999999997,-2.5 -2.0749999999999997,-3.7510000000000003" data-type="line" data-label="" points="507.02036949313106,156.72193273330174 507.02036949313106,488.5836096636666" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-3" data-y="-2.5" x="69.31312174324955" y="103.6665087636191" width="384.6518237801988" height="106.11084793936527" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.003769642857142858"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="-3" data-y="-3.5" x="69.31312174324955" y="368.9436286120322" width="384.6518237801988" height="106.11084793936527" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.003769642857142858"/></g><g><rect data-type="rect" data-label="J3" data-x="-3.205" data-y="-2.1849999999999996" x="159.50734249170984" y="39.99999999999994" width="95.4997631454288" height="66.31927996210322" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.003769642857142858"/></g><g><rect data-type="rect" data-label="J4" data-x="-3.205" data-y="-3.1849999999999996" x="159.50734249170984" y="305.27711984841295" width="95.4997631454288" height="66.31927996210322" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.003769642857142858"/></g><g><rect data-type="rect" data-label="netId: GND
2
4
  globalConnNetId: connectivity_net0" data-x="-2.0749999999999997" data-y="-3.9610000000000003" x="443.353860729512" y="488.5836096636665" width="127.3330175272381" height="111.4163903363335" fill="#00000066" stroke="#000000" stroke-width="0.003769642857142858"/></g><g><circle data-type="point" data-label="J3.1
3
5
  x+" data-x="-2.275" data-y="-2.5" cx="453.96494552344836" cy="156.72193273330174" r="3" fill="hsl(340, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="J4.1
4
6
  x+" data-x="-2.275" data-y="-3.5" cx="453.96494552344836" cy="421.99905258171486" r="3" fill="hsl(221, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
@@ -12,7 +14,7 @@ orientation: y-" data-x="-2.0749999999999997" data-y="-3.7510000000000003" cx="5
12
14
  const h = svg.getElementById('crosshair-h');
13
15
  const v = svg.getElementById('crosshair-v');
14
16
  const coords = svg.getElementById('coordinates');
15
-
17
+
16
18
  crosshair.style.display = 'block';
17
19
  h.setAttribute('x1', '0');
18
20
  h.setAttribute('x2', '640');
@@ -31,13 +33,13 @@ orientation: y-" data-x="-2.0749999999999997" data-y="-3.7510000000000003" cx="5
31
33
  // y' = (y - ty) / sy
32
34
  const sx = matrix.a;
33
35
  const sy = matrix.d;
34
- const tx = matrix.e;
36
+ const tx = matrix.e;
35
37
  const ty = matrix.f;
36
38
  const realPoint = {
37
39
  x: (x - tx) / sx,
38
40
  y: (y - ty) / sy // Flip y back since we used negative scale
39
41
  }
40
-
42
+
41
43
  coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
42
44
  coords.setAttribute('x', (x + 5).toString());
43
45
  coords.setAttribute('y', (y - 5).toString());
@@ -45,4 +47,27 @@ orientation: y-" data-x="-2.0749999999999997" data-y="-3.7510000000000003" cx="5
45
47
  document.currentScript.parentElement.addEventListener('mouseleave', () => {
46
48
  document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
47
49
  });
48
- ]]></script></svg>
50
+ ]]></script>
51
+ </g>
52
+ <g transform="translate(1216, 200)">
53
+ <style>
54
+ .boundary { fill: rgb(245, 241, 237); }
55
+ .schematic-boundary { fill: none; stroke: #fff; }
56
+ .component { fill: none; stroke: rgb(132, 0, 0); }
57
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
58
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
59
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
60
+ .pin-number { fill: rgb(169, 0, 0); }
61
+ .port-label { fill: rgb(0, 100, 100); }
62
+ .component-name { fill: rgb(0, 100, 100); }
63
+
64
+ </style><rect class="boundary" x="0" y="0" width="1200" height="800"/><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><path d="M 704.924545003125 243.52857358749992 L 756.7391351281251 243.52857358749992 L 756.7391351281251 502.6015242124999 L 704.924545003125 502.6015242124999" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="41.451672099999996px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 704.924545003125 243.52857358749992 L 756.7391351281251 243.52857358749992 L 756.7391351281251 502.6015242124999 L 704.924545003125 502.6015242124999" stroke="rgb(0, 150, 0)" fill="none" stroke-width="5.1814590124999995px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"><path d="M 756.7391351281251 243.52857358749992 L 756.7391351281251 567.628834819375" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="41.451672099999996px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 756.7391351281251 243.52857358749992 L 756.7391351281251 567.628834819375" stroke="rgb(0, 150, 0)" fill="none" stroke-width="5.1814590124999995px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><circle cx="756.7391351281251" cy="243.52857358749992" r="7.772188518749999" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"/><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component chip sch-component-body" x="432.897946846875" y="191.71398346249993" width="168.39741790624998" height="103.62918024999999" stroke-width="5.1814590124999995px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="432.897946846875" y="191.71398346249993" width="168.39741790624998" height="103.62918024999999" fill="transparent"/><text class="sch-text" x="517.0966558" y="243.52857358749992" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="34.54306008333336px" transform="rotate(0, 517.0966558, 243.52857358749992)">J3</text><line class="component-pin sch-component-pin sch-port-line" x1="601.295364753125" y1="243.52857358749992" x2="704.924545003125" y2="243.52857358749992" stroke-width="5.1814590124999995px"/><g class="sch-port" data-schematic-port-id="source_port_0_0__stack1"><rect x="699.743085990625" y="238.34711457499992" width="10.362918024999999" height="10.362918024999999" opacity="0"/></g><text class="pin-number sch-pin-number" x="653.109954878125" y="238.34711457499992" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="38.860942593749996px" transform="">1</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_1__stack1"><rect class="component chip sch-component-body" x="432.897946846875" y="450.7869340874999" width="168.39741790624998" height="103.62918025000005" stroke-width="5.1814590124999995px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="432.897946846875" y="450.7869340874999" width="168.39741790624998" height="103.62918025000005" fill="transparent"/><text class="sch-text" x="517.0966558" y="502.6015242124999" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="34.54306008333336px" transform="rotate(0, 517.0966558, 502.6015242124999)">J4</text><line class="component-pin sch-component-pin sch-port-line" x1="601.295364753125" y1="502.6015242124999" x2="704.924545003125" y2="502.6015242124999" stroke-width="5.1814590124999995px"/><g class="sch-port" data-schematic-port-id="source_port_1_0__stack1"><rect x="699.743085990625" y="497.4200651999999" width="10.362918024999999" height="10.362918024999999" opacity="0"/></g><text class="pin-number sch-pin-number" x="653.109954878125" y="497.4200651999999" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="38.860942593749996px" transform="">1</text></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="704.924545003125" cy="243.52857358749992" r="10.362918024999999" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="704.924545003125" cy="502.6015242124999" r="10.362918024999999" fill="red" opacity="0"/></g><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" d="
65
+ M 756.7391351281251,567.628834819375
66
+ L 782.6464301906251,581.6187741531251
67
+ L 782.6464301906251,670.4635246874583
68
+ L 730.8318400656251,670.4635246874583
69
+ L 730.8318400656251,581.6187741531251
70
+ Z
71
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="5.1814590124999995px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" x="756.7391351281251" y="590.945400375625" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="46.633131112499996px" transform="rotate(90 756.7391351281251 590.945400375625)">XX</text><text class="sch-text" x="463.986700921875" y="161.92059414062481" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="46.633131112499996px" transform="rotate(0, 463.986700921875, 161.92059414062481)">J3</text><text class="sch-text" x="463.986700921875" y="420.9935447656248" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="46.633131112499996px" transform="rotate(0, 463.986700921875, 420.9935447656248)">J4</text><rect class="schematic-box sch-box" x="417.3535698093749" y="129.53647531249993" width="93.2662622250001" height="64.76823765624988" stroke-width="5.1814590124999995px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="41.451672099999996 20.725836049999998"/><rect class="schematic-box sch-box" x="417.3535698093749" y="388.6094259374999" width="93.2662622250001" height="64.76823765624988" stroke-width="5.1814590124999995px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="41.451672099999996 20.725836049999998"/>
72
+ </g>
73
+ </svg>
@@ -1,4 +1,6 @@
1
- <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="-0.6000000000000001,0.1 -0.6000000000000001,-0.1" data-type="line" data-label="" points="188.5246894880339,494.81975159042713 188.5246894880339,528.748863980612" fill="none" stroke="hsl(27, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-0.6000000000000001,0.1 -0.6599999999999999,2.36" data-type="line" data-label="" points="188.5246894880339,494.81975159042713 178.3459557709785,111.42078158133899" fill="none" stroke="hsl(27, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-0.6000000000000001,-0.1 -0.6599999999999999,2.36" data-type="line" data-label="" points="188.5246894880339,528.748863980612 178.3459557709785,111.42078158133899" fill="none" stroke="hsl(27, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.6000000000000001,0.1 0.6000000000000001,-0.1" data-type="line" data-label="" points="392.0993638291427,494.81975159042713 392.0993638291427,528.748863980612" fill="none" stroke="hsl(64, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.6000000000000001,0.1 0.6599999999999999,2.36" data-type="line" data-label="" points="392.0993638291427,494.81975159042713 402.2780975461981,111.42078158133899" fill="none" stroke="hsl(64, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.6000000000000001,-0.1 0.6599999999999999,2.36" data-type="line" data-label="" points="392.0993638291427,528.748863980612 402.2780975461981,111.42078158133899" fill="none" stroke="hsl(64, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-0.6000000000000001,-0.1 -0.8,-0.1 -0.8,0.1 -0.6000000000000001,0.1" data-type="line" data-label="" points="188.5246894880339,528.748863980612 154.59557709784912,528.748863980612 154.59557709784912,494.81975159042713 188.5246894880339,494.81975159042713" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-0.6599999999999999,2.36 -0.8599999999999999,2.36 -0.8599999999999999,0.1 -0.6000000000000001,0.1" data-type="line" data-label="" points="178.3459557709785,111.42078158133899 144.4168433807937,111.42078158133899 144.4168433807937,494.81975159042713 188.5246894880339,494.81975159042713" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.6000000000000001,0.1 1.4400000000000002,0.1 1.4400000000000002,-0.1 0.6000000000000001,-0.1" data-type="line" data-label="" points="392.0993638291427,494.81975159042713 534.6016358679188,494.81975159042713 534.6016358679188,528.748863980612 392.0993638291427,528.748863980612" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.6599999999999999,2.36 1.4400000000000002,2.36 1.4400000000000002,0.1 0.6000000000000001,0.1" data-type="line" data-label="" points="402.2780975461981,111.42078158133899 534.6016358679188,111.42078158133899 534.6016358679188,494.81975159042713 392.0993638291427,494.81975159042713" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-0.8599999999999999,2.36 -1.15,2.36 -1.15,2.3609999999999998" data-type="line" data-label="" points="144.4168433807937,111.42078158133899 95.21963041502573,111.42078158133899 95.21963041502573,111.25113601938807" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="188.5246894880339" y="460.8906392002424" width="203.5746743411088" height="101.7873371705544" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.005894642857142856"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="0" data-y="2.32" x="178.3459557709785" y="46.95546803998786" width="223.93214177521963" height="142.50227203877614" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.005894642857142856"/></g><g><rect data-type="rect" data-label="5x20-BLX-A" data-x="0.4" data-y="-0.43000000000000005" x="256.3829142684035" y="569.4637988488337" width="203.5746743411088" height="30.536201151166324" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.005894642857142856"/></g><g><rect data-type="rect" data-label="FUSEX20MM" data-x="0.3400000000000001" data-y="0.41500000000000004" x="246.2041805513481" y="420.1757043320206" width="203.57467434110882" height="42.41139048773101" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.005894642857142856"/></g><g><rect data-type="rect" data-label="netId: VIN
1
+ <svg width="2416" height="1200" viewBox="0 0 2416 1200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Solver debug visualization on the left and Circuit JSON schematic on the right">
2
+ <g transform="translate(0, 0) scale(1.875, 1.875) translate(0, 0)">
3
+ <rect width="100%" height="100%" fill="white"/><g><polyline data-points="-0.6000000000000001,0.1 -0.6000000000000001,-0.1" data-type="line" data-label="" points="188.5246894880339,494.81975159042713 188.5246894880339,528.748863980612" fill="none" stroke="hsl(27, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-0.6000000000000001,0.1 -0.6599999999999999,2.36" data-type="line" data-label="" points="188.5246894880339,494.81975159042713 178.3459557709785,111.42078158133899" fill="none" stroke="hsl(27, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-0.6000000000000001,-0.1 -0.6599999999999999,2.36" data-type="line" data-label="" points="188.5246894880339,528.748863980612 178.3459557709785,111.42078158133899" fill="none" stroke="hsl(27, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.6000000000000001,0.1 0.6000000000000001,-0.1" data-type="line" data-label="" points="392.0993638291427,494.81975159042713 392.0993638291427,528.748863980612" fill="none" stroke="hsl(64, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.6000000000000001,0.1 0.6599999999999999,2.36" data-type="line" data-label="" points="392.0993638291427,494.81975159042713 402.2780975461981,111.42078158133899" fill="none" stroke="hsl(64, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.6000000000000001,-0.1 0.6599999999999999,2.36" data-type="line" data-label="" points="392.0993638291427,528.748863980612 402.2780975461981,111.42078158133899" fill="none" stroke="hsl(64, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-0.6000000000000001,-0.1 -0.8,-0.1 -0.8,0.1 -0.6000000000000001,0.1" data-type="line" data-label="" points="188.5246894880339,528.748863980612 154.59557709784912,528.748863980612 154.59557709784912,494.81975159042713 188.5246894880339,494.81975159042713" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-0.6599999999999999,2.36 -0.8599999999999999,2.36 -0.8599999999999999,0.1 -0.6000000000000001,0.1" data-type="line" data-label="" points="178.3459557709785,111.42078158133899 144.4168433807937,111.42078158133899 144.4168433807937,494.81975159042713 188.5246894880339,494.81975159042713" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.6000000000000001,0.1 1.4400000000000002,0.1 1.4400000000000002,-0.1 0.6000000000000001,-0.1" data-type="line" data-label="" points="392.0993638291427,494.81975159042713 534.6016358679188,494.81975159042713 534.6016358679188,528.748863980612 392.0993638291427,528.748863980612" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.6599999999999999,2.36 1.4400000000000002,2.36 1.4400000000000002,0.1 0.6000000000000001,0.1" data-type="line" data-label="" points="402.2780975461981,111.42078158133899 534.6016358679188,111.42078158133899 534.6016358679188,494.81975159042713 392.0993638291427,494.81975159042713" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-0.8599999999999999,2.36 -1.15,2.36 -1.15,2.3609999999999998" data-type="line" data-label="" points="144.4168433807937,111.42078158133899 95.21963041502573,111.42078158133899 95.21963041502573,111.25113601938807" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="188.5246894880339" y="460.8906392002424" width="203.5746743411088" height="101.7873371705544" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.005894642857142856"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="0" data-y="2.32" x="178.3459557709785" y="46.95546803998786" width="223.93214177521963" height="142.50227203877614" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.005894642857142856"/></g><g><rect data-type="rect" data-label="5x20-BLX-A" data-x="0.4" data-y="-0.43000000000000005" x="256.3829142684035" y="569.4637988488337" width="203.5746743411088" height="30.536201151166324" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.005894642857142856"/></g><g><rect data-type="rect" data-label="FUSEX20MM" data-x="0.3400000000000001" data-y="0.41500000000000004" x="246.2041805513481" y="420.1757043320206" width="203.57467434110882" height="42.41139048773101" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.005894642857142856"/></g><g><rect data-type="rect" data-label="netId: VIN
2
4
  globalConnNetId: connectivity_net0" data-x="-1.15" data-y="2.5709999999999997" x="54.50469554680399" y="39.99999999999997" width="81.4298697364435" height="71.25113601938807" fill="#ef444466" stroke="#ef4444" stroke-width="0.005894642857142856"/></g><g><rect data-type="rect" data-label="netId: VOUT
3
5
  globalConnNetId: connectivity_net1" data-x="1.4400000000000002" data-y="2.57" x="483.7079672826417" y="40.16964556195089" width="101.78733717055434" height="71.25113601938807" fill="#ef444466" stroke="#ef4444" stroke-width="0.005894642857142856"/></g><g><circle data-type="point" data-label="F1.1
4
6
  x-" data-x="-0.6000000000000001" data-y="0.1" cx="188.5246894880339" cy="494.81975159042713" r="3" fill="hsl(214, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="F1.2
@@ -18,7 +20,7 @@ orientation: y+" data-x="1.4400000000000002" data-y="2.36" cx="534.6016358679188
18
20
  const h = svg.getElementById('crosshair-h');
19
21
  const v = svg.getElementById('crosshair-v');
20
22
  const coords = svg.getElementById('coordinates');
21
-
23
+
22
24
  crosshair.style.display = 'block';
23
25
  h.setAttribute('x1', '0');
24
26
  h.setAttribute('x2', '640');
@@ -37,13 +39,13 @@ orientation: y+" data-x="1.4400000000000002" data-y="2.36" cx="534.6016358679188
37
39
  // y' = (y - ty) / sy
38
40
  const sx = matrix.a;
39
41
  const sy = matrix.d;
40
- const tx = matrix.e;
42
+ const tx = matrix.e;
41
43
  const ty = matrix.f;
42
44
  const realPoint = {
43
45
  x: (x - tx) / sx,
44
46
  y: (y - ty) / sy // Flip y back since we used negative scale
45
47
  }
46
-
48
+
47
49
  coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
48
50
  coords.setAttribute('x', (x + 5).toString());
49
51
  coords.setAttribute('y', (y - 5).toString());
@@ -51,4 +53,34 @@ orientation: y+" data-x="1.4400000000000002" data-y="2.36" cx="534.6016358679188
51
53
  document.currentScript.parentElement.addEventListener('mouseleave', () => {
52
54
  document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
53
55
  });
54
- ]]></script></svg>
56
+ ]]></script>
57
+ </g>
58
+ <g transform="translate(1216, 200)">
59
+ <style>
60
+ .boundary { fill: rgb(245, 241, 237); }
61
+ .schematic-boundary { fill: none; stroke: #fff; }
62
+ .component { fill: none; stroke: rgb(132, 0, 0); }
63
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
64
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
65
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
66
+ .pin-number { fill: rgb(169, 0, 0); }
67
+ .port-label { fill: rgb(0, 100, 100); }
68
+ .component-name { fill: rgb(0, 100, 100); }
69
+
70
+ </style><rect class="boundary" x="0" y="0" width="1200" height="800"/><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><path d="M 460.6803908429 627.9543081549999 L 423.27915348530007 627.9543081549999 L 423.27915348530007 590.5530707974 L 460.6803908429 590.5530707974" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="29.92098988608px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 460.6803908429 627.9543081549999 L 423.27915348530007 627.9543081549999 L 423.27915348530007 590.5530707974 L 460.6803908429 590.5530707974" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.74012373576px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"><path d="M 449.4600196356201 167.91908865651993 L 412.0587822780201 167.91908865651993 L 412.0587822780201 590.5530707974 L 460.6803908429 590.5530707974" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="29.92098988608px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 449.4600196356201 167.91908865651993 L 412.0587822780201 167.91908865651993 L 412.0587822780201 590.5530707974 L 460.6803908429 590.5530707974" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.74012373576px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"><path d="M 685.0878149885001 590.5530707974 L 842.1730118904201 590.5530707974 L 842.1730118904201 627.9543081549999 L 685.0878149885001 627.9543081549999" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="29.92098988608px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 685.0878149885001 590.5530707974 L 842.1730118904201 590.5530707974 L 842.1730118904201 627.9543081549999 L 685.0878149885001 627.9543081549999" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.74012373576px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_3__stack1"><path d="M 696.3081861957801 167.91908865651993 L 842.1730118904201 167.91908865651993 L 842.1730118904201 590.5530707974 L 685.0878149885001 590.5530707974" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="29.92098988608px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 696.3081861957801 167.91908865651993 L 842.1730118904201 167.91908865651993 L 842.1730118904201 590.5530707974 L 685.0878149885001 590.5530707974" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.74012373576px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_4__stack1"><path d="M 412.0587822780201 167.91908865651993 L 357.82698810950006 167.91908865651993 L 357.82698810950006 167.73208246973195" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="29.92098988608px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 412.0587822780201 167.91908865651993 L 357.82698810950006 167.91908865651993 L 357.82698810950006 167.73208246973195" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.74012373576px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><circle cx="460.6803908429" cy="590.5530707974" r="5.61018560364" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"><circle cx="412.0587822780201" cy="167.91908865651993" r="5.61018560364" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"><circle cx="685.0878149885001" cy="590.5530707974" r="5.61018560364" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/><circle cx="842.1730118904201" cy="590.5530707974" r="5.61018560364" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_3__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_4__stack1"/><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component chip sch-component-body" x="535.4828655581" y="553.1518334397999" width="74.8024747152001" height="112.20371207280004" stroke-width="3.74012373576px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="535.4828655581" y="553.1518334397999" width="74.8024747152001" height="112.20371207280004" fill="transparent"/><text class="sch-text" x="572.8841029157" y="609.2536894762" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="33.66111362184px" transform="rotate(0, 572.8841029157, 609.2536894762)">F1</text><line class="component-pin sch-component-pin sch-port-line" x1="535.4828655581" y1="590.5530707974" x2="460.6803908429" y2="590.5530707974" stroke-width="3.74012373576px"/><g class="sch-port" data-schematic-port-id="source_port_0_0__stack1"><rect x="456.94026710714" y="586.81294706164" width="7.48024747152" height="7.48024747152" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.08162820050006" y="586.81294706164" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="28.0509280182px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="535.4828655581" y1="627.9543081549999" x2="460.6803908429" y2="627.9543081549999" stroke-width="3.74012373576px"/><g class="sch-port" data-schematic-port-id="source_port_0_1__stack1"><rect x="456.94026710714" y="624.2141844192399" width="7.48024747152" height="7.48024747152" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.08162820050006" y="624.2141844192399" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="28.0509280182px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="610.2853402733001" y1="590.5530707974" x2="685.0878149885001" y2="590.5530707974" stroke-width="3.74012373576px"/><g class="sch-port" data-schematic-port-id="source_port_0_2__stack1"><rect x="681.3476912527401" y="586.81294706164" width="7.48024747152" height="7.48024747152" opacity="0"/></g><text class="pin-number sch-pin-number" x="647.6865776309" y="586.81294706164" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="28.0509280182px" transform="">4</text><line class="component-pin sch-component-pin sch-port-line" x1="610.2853402733001" y1="627.9543081549999" x2="685.0878149885001" y2="627.9543081549999" stroke-width="3.74012373576px"/><g class="sch-port" data-schematic-port-id="source_port_0_3__stack1"><rect x="681.3476912527401" y="624.2141844192399" width="7.48024747152" height="7.48024747152" opacity="0"/></g><text class="pin-number sch-pin-number" x="647.6865776309" y="624.2141844192399" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="28.0509280182px" transform="">3</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_1__stack1"><rect class="component-overlay sch-component-overlay" x="449.4600196356201" y="137.64525690857585" width="246.84816656016" height="62.87641978419168" fill="transparent"/><path class="sch-component-symbol-path" d="M 449.4600196356201 167.91908865652 L 696.3081861957801 167.91908865652" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.74012373576px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 572.8841029157 137.64525690857585 L 635.7605226998918 137.64525690857585 L 635.7605226998918 200.52167669276753 L 512.3364394198118 200.52167669276753 L 512.3364394198118 137.64525690857585 L 572.8841029157 137.64525690857585" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.74012373576px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="570.5553466273966" y="121.34396289045208" stroke="rgb(245, 241, 237)" stroke-width="3.74012373576px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="ideographic" font-size="33.66111362184px">F2</text><text class="sch-component-text" x="572.8841029157" y="223.80923957580148" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="33.66111362184px"></text></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="460.6803908429" cy="590.5530707974" r="7.48024747152" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="460.6803908429" cy="627.9543081549999" r="7.48024747152" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_2__stack1"><circle cx="685.0878149885001" cy="590.5530707974" r="7.48024747152" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_3__stack1"><circle cx="685.0878149885001" cy="627.9543081549999" r="7.48024747152" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="473.77082391806005" cy="169.75386633821353" r="7.48024747152" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_1__stack1"><circle cx="720.61899047822" cy="169.75386633821353" r="7.48024747152" fill="red" opacity="0"/></g><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" d="
71
+ M 357.82698810950006,167.73208246973195
72
+ L 339.12636943070004,157.63374838317995
73
+ L 339.12636943070004,93.50309339401515
74
+ L 376.5276067883001,93.50309339401515
75
+ L 376.5276067883001,157.63374838317995
76
+ Z
77
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.74012373576px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" x="357.82698810950006" y="150.90152565881195" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="33.66111362184px" transform="rotate(-90 357.82698810950006 150.90152565881195)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" d="
78
+ M 842.1730118904201,167.91908865651993
79
+ L 823.4723932116201,157.82075456996793
80
+ L 823.4723932116201,93.69009958080314
81
+ L 860.87363056922,93.69009958080314
82
+ L 860.87363056922,157.82075456996793
83
+ Z
84
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.74012373576px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" x="842.1730118904201" y="151.08853184559993" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="33.66111362184px" transform="rotate(-90 842.1730118904201 151.08853184559993)">XX</text><text class="sch-text" x="647.6865776309" y="689.66634979504" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="33.66111362183999px" transform="rotate(0, 647.6865776309, 689.66634979504)">5x20-BLX-A</text><text class="sch-text" x="636.4662064236201" y="531.6461219591799" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="33.66111362184px" transform="rotate(0, 636.4662064236201, 531.6461219591799)">FUSEX20MM</text><rect class="schematic-box sch-box" x="535.4828655581" y="672.83579298412" width="224.4074241456001" height="33.66111362184006" stroke-width="3.74012373576px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="29.92098988608 14.96049494304"/><rect class="schematic-box sch-box" x="524.26249435082" y="508.27034861067995" width="224.4074241456001" height="46.75154669700004" stroke-width="3.74012373576px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="29.92098988608 14.96049494304"/>
85
+ </g>
86
+ </svg>