@tscircuit/schematic-trace-solver 0.0.148 → 0.0.150

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/.agents/skills/schematic-trace-visualization/SKILL.md +7 -2
  2. package/dist/index.d.ts +31 -2
  3. package/dist/index.js +127 -46
  4. package/lib/solvers/InlineNetLabelSolver/InlineNetLabelSolver.ts +115 -6
  5. package/lib/solvers/NetLabelPlacementSolver/NetLabelPlacementSolver.ts +17 -1
  6. package/lib/solvers/NetLabelPlacementSolver/SingleNetLabelPlacementSolver/SingleNetLabelPlacementSolver.ts +2 -0
  7. package/lib/solvers/NetLabelPlacementSolver/SingleNetLabelPlacementSolver/solvePortOnlyPin.ts +2 -0
  8. package/lib/types/InputProblem.ts +27 -1
  9. package/package.json +8 -1
  10. package/site/examples/example51.page.tsx +4 -0
  11. package/tests/assets/example51.json +5102 -0
  12. package/tests/bug-reports/bug-report-20260706T213649Z/__snapshots__/bug-report-20260706T213649Z.snap.svg +751 -5
  13. package/tests/bug-reports/bug-report-20260706T220324Z/__snapshots__/bug-report-20260706T220324Z.snap.svg +660 -5
  14. package/tests/bug-reports/bug-report-20260707T020342Z/__snapshots__/bug-report-20260707T020342Z.snap.svg +44 -5
  15. package/tests/bug-reports/bug-report-20260707T092615Z/__snapshots__/bug-report-20260707T092615Z.snap.svg +394 -5
  16. package/tests/bug-reports/bug-report-20260707T134549Z/__snapshots__/bug-report-20260707T134549Z.snap.svg +170 -5
  17. package/tests/bug-reports/bug-report-20260707T134722Z/__snapshots__/bug-report-20260707T134722Z.snap.svg +79 -5
  18. package/tests/bug-reports/bug-report-20260707T140410Z/__snapshots__/bug-report-20260707T140410Z.snap.svg +219 -5
  19. package/tests/bug-reports/bug-report-20260707T141025Z/__snapshots__/bug-report-20260707T141025Z.snap.svg +65 -5
  20. package/tests/bug-reports/bug-report-20260707T141421Z/__snapshots__/bug-report-20260707T141421Z.snap.svg +142 -5
  21. package/tests/bug-reports/bug-report-20260707T230831Z/__snapshots__/bug-report-20260707T230831Z.snap.svg +100 -5
  22. package/tests/bug-reports/bug-report-20260708T053736Z/__snapshots__/bug-report-20260708T053736Z.snap.svg +23 -5
  23. package/tests/bug-reports/bug-report-20260708T055430Z/__snapshots__/bug-report-20260708T055430Z.snap.svg +58 -5
  24. package/tests/bug-reports/bug-report-20260708T095725Z/__snapshots__/bug-report-20260708T095725Z.snap.svg +86 -5
  25. package/tests/bug-reports/bug-report-20260716T144856Z/__snapshots__/bug-report-20260716T144856Z.snap.svg +226 -5
  26. package/tests/bug-reports/bug-report-20260717T022934Z/__snapshots__/bug-report-20260717T022934Z.snap.svg +191 -5
  27. package/tests/bug-reports/bug-report-20260717T031704Z/__snapshots__/bug-report-20260717T031704Z.snap.svg +30 -5
  28. package/tests/bug-reports/bug-report-20260717T042845Z/__snapshots__/bug-report-20260717T042845Z.snap.svg +37 -5
  29. package/tests/bug-reports/bug-report-20260721T221026Z/__snapshots__/bug-report-20260721T221026Z.snap.svg +580 -2
  30. package/tests/bug-reports/bug-report-20260724T175257Z/__snapshots__/bug-report-20260724T175257Z.snap.svg +44 -5
  31. package/tests/bug-reports/bug-report-20260728T144234Z/__snapshots__/bug-report-20260728T144234Z.snap.svg +107 -5
  32. package/tests/bug-reports/bug-report-20260728T225606Z/__snapshots__/bug-report-20260728T225606Z.snap.svg +114 -5
  33. package/tests/bug-reports/bug-report-20260730T061837Z/__snapshots__/bug-report-20260730T061837Z.snap.svg +121 -5
  34. package/tests/bug-reports/bug-report-20260731T052229Z/__snapshots__/bug-report-20260731T052229Z.snap.svg +51 -5
  35. package/tests/bug-reports/bug-report-20260804T095800Z/__snapshots__/bug-report-20260804T095800Z.snap.svg +212 -5
  36. package/tests/bug-reports/bug-report-20260804T171919Z/__snapshots__/bug-report-20260804T171919Z.snap.svg +569 -5
  37. package/tests/bug-reports/bug-report-20260804T225912Z/__snapshots__/bug-report-20260804T225912Z.snap.svg +37 -5
  38. package/tests/bug-reports/bug-report-20260805T061316Z/__snapshots__/bug-report-20260805T061316Z.snap.svg +289 -5
  39. package/tests/bug-reports/bug-report-20260806T061548Z/__snapshots__/bug-report-20260806T061548Z.snap.svg +289 -5
  40. package/tests/bug-reports/bug-report-20260806T093501Z/__snapshots__/bug-report-20260806T093501Z.snap.svg +149 -5
  41. package/tests/bug-reports/bug-report-20260811T075142Z/__snapshots__/bug-report-20260811T075142Z.snap.svg +93 -5
  42. package/tests/bug-reports/bug-report-20260815T073240Z/__snapshots__/bug-report-20260815T073240Z.snap.svg +79 -5
  43. package/tests/bug-reports/bug-report-20260819T091818Z/__snapshots__/bug-report-20260819T091818Z.snap.svg +244 -2
  44. package/tests/examples/__snapshots__/example01.snap.svg +44 -5
  45. package/tests/examples/__snapshots__/example02.snap.svg +51 -5
  46. package/tests/examples/__snapshots__/example03.snap.svg +86 -5
  47. package/tests/examples/__snapshots__/example04.snap.svg +30 -5
  48. package/tests/examples/__snapshots__/example05.snap.svg +30 -5
  49. package/tests/examples/__snapshots__/example06.snap.svg +30 -5
  50. package/tests/examples/__snapshots__/example07.snap.svg +58 -5
  51. package/tests/examples/__snapshots__/example08.snap.svg +37 -5
  52. package/tests/examples/__snapshots__/example09.snap.svg +149 -5
  53. package/tests/examples/__snapshots__/example10.snap.svg +65 -5
  54. package/tests/examples/__snapshots__/example11.snap.svg +51 -5
  55. package/tests/examples/__snapshots__/example12.snap.svg +51 -5
  56. package/tests/examples/__snapshots__/example13.snap.svg +72 -5
  57. package/tests/examples/__snapshots__/example14.snap.svg +79 -5
  58. package/tests/examples/__snapshots__/example15.snap.svg +86 -5
  59. package/tests/examples/__snapshots__/example16.snap.svg +51 -5
  60. package/tests/examples/__snapshots__/example17.snap.svg +51 -5
  61. package/tests/examples/__snapshots__/example18.snap.svg +58 -5
  62. package/tests/examples/__snapshots__/example19.snap.svg +44 -5
  63. package/tests/examples/__snapshots__/example20.snap.svg +44 -5
  64. package/tests/examples/__snapshots__/example21.snap.svg +72 -5
  65. package/tests/examples/__snapshots__/example22.snap.svg +51 -5
  66. package/tests/examples/__snapshots__/example23.snap.svg +51 -5
  67. package/tests/examples/__snapshots__/example24.snap.svg +51 -5
  68. package/tests/examples/__snapshots__/example25.snap.svg +86 -5
  69. package/tests/examples/__snapshots__/example26.snap.svg +51 -5
  70. package/tests/examples/__snapshots__/example27.snap.svg +72 -5
  71. package/tests/examples/__snapshots__/example28.snap.svg +44 -5
  72. package/tests/examples/__snapshots__/example29.snap.svg +324 -5
  73. package/tests/examples/__snapshots__/example30.snap.svg +107 -5
  74. package/tests/examples/__snapshots__/example31.snap.svg +37 -5
  75. package/tests/examples/__snapshots__/example32.snap.svg +149 -5
  76. package/tests/examples/__snapshots__/example33.snap.svg +93 -5
  77. package/tests/examples/__snapshots__/example34.snap.svg +51 -5
  78. package/tests/examples/__snapshots__/example35.snap.svg +58 -5
  79. package/tests/examples/__snapshots__/example36.snap.svg +44 -5
  80. package/tests/examples/__snapshots__/example37.snap.svg +72 -5
  81. package/tests/examples/__snapshots__/example38.snap.svg +30 -5
  82. package/tests/examples/__snapshots__/example39.snap.svg +37 -5
  83. package/tests/examples/__snapshots__/example40.snap.svg +100 -5
  84. package/tests/examples/__snapshots__/example41.snap.svg +44 -5
  85. package/tests/examples/__snapshots__/example42.snap.svg +65 -5
  86. package/tests/examples/__snapshots__/example43.snap.svg +58 -5
  87. package/tests/examples/__snapshots__/example44.snap.svg +107 -5
  88. package/tests/examples/__snapshots__/example45.snap.svg +51 -5
  89. package/tests/examples/__snapshots__/example46.snap.svg +93 -5
  90. package/tests/examples/__snapshots__/example47.snap.svg +93 -5
  91. package/tests/examples/__snapshots__/example48.snap.svg +65 -5
  92. package/tests/examples/__snapshots__/example49.snap.svg +177 -5
  93. package/tests/examples/__snapshots__/example50.snap.svg +93 -5
  94. package/tests/examples/__snapshots__/example51.snap.svg +952 -0
  95. package/tests/examples/example51.test.ts +12 -0
  96. package/tests/fixtures/convertSolverOutputToCircuitJson.test.ts +219 -0
  97. package/tests/fixtures/convertSolverOutputToCircuitJson.ts +1058 -0
  98. package/tests/fixtures/matcher.ts +45 -8
  99. package/tests/repros/__snapshots__/board-1273-trace-overlap-cycle.snap.svg +762 -2
  100. package/tests/repros/__snapshots__/board-15984-same-net-junction.snap.svg +111 -2
  101. package/tests/repros/__snapshots__/board1096-usb-label-overlap-iteration.snap.svg +167 -2
  102. package/tests/repros/__snapshots__/bugreport-001-gnd-overlap.snap.svg +65 -5
  103. package/tests/repros/__snapshots__/manufacturePartNumber-text-box.snap.svg +30 -5
  104. package/tests/repros/__snapshots__/netlabel-connector-through-rail-label.snap.svg +79 -5
  105. package/tests/repros/__snapshots__/repro-atmega328p-fault-pullup.snap.svg +65 -5
  106. package/tests/repros/__snapshots__/repro-atmega328p-missing-gnd-netlabel.snap.svg +149 -5
  107. package/tests/repros/__snapshots__/repro-board-589-regulator-section.snap.svg +55 -2
  108. package/tests/repros/__snapshots__/repro-board-648-esp12f-section.snap.svg +160 -2
  109. package/tests/repros/__snapshots__/repro-bq24074-battery-charger.snap.svg +135 -5
  110. package/tests/repros/__snapshots__/repro-bq25895-cross-net-trace-overlap.snap.svg +69 -2
  111. package/tests/repros/__snapshots__/repro-cc2340r5.snap.svg +86 -5
  112. package/tests/repros/__snapshots__/repro-core-555-power-cross-net-overlap.snap.svg +44 -5
  113. package/tests/repros/__snapshots__/repro-core-subcircuit-missing-ground.snap.svg +44 -5
  114. package/tests/repros/__snapshots__/repro-core-tb67s579ftg-inline-label-routing.snap.svg +260 -0
  115. package/tests/repros/__snapshots__/repro-example35-minimize-trace-crossing.snap.svg +335 -2
  116. package/tests/repros/__snapshots__/repro-ground-label-on-lower-rail-end.snap.svg +48 -2
  117. package/tests/repros/__snapshots__/repro-ina237-current-monitor.snap.svg +149 -5
  118. package/tests/repros/__snapshots__/repro-missing-trace-netlabel.snap.svg +72 -5
  119. package/tests/repros/__snapshots__/repro-netlabel-collision-687.snap.svg +100 -5
  120. package/tests/repros/__snapshots__/repro-netlabel-overlap-trace.snap.svg +51 -5
  121. package/tests/repros/__snapshots__/repro-nrf52810-clock-routing.snap.svg +90 -2
  122. package/tests/repros/__snapshots__/repro-power-group-rail-labels.snap.svg +37 -5
  123. package/tests/repros/__snapshots__/repro-rectifier-trace-overlap.snap.svg +44 -5
  124. package/tests/repros/__snapshots__/repro-rp2040-gamepad-trace-alignment.snap.svg +237 -2
  125. package/tests/repros/__snapshots__/repro-rp2040-usb-cc2-ground-overlap.snap.svg +72 -5
  126. package/tests/repros/__snapshots__/repro-rp2040-v3v3-label-placement.snap.svg +51 -5
  127. package/tests/repros/__snapshots__/repro-rp2040-zero-crystal-fallback-netlabels.snap.svg +30 -5
  128. package/tests/repros/__snapshots__/repro-ti-power-output-section.snap.svg +79 -5
  129. package/tests/repros/__snapshots__/repro-tida010076-j4-ground-bus.snap.svg +27 -2
  130. package/tests/repros/__snapshots__/repro-tida010076-page02.snap.svg +1150 -5
  131. package/tests/repros/__snapshots__/repro-tps61222-trace-intersection.snap.svg +51 -5
  132. package/tests/repros/__snapshots__/repro-type-c-16pin-self-connection.snap.svg +30 -5
  133. package/tests/repros/__snapshots__/repro-type-c-16pin-to-resistor.snap.svg +30 -5
  134. package/tests/repros/__snapshots__/repro-type-c-vbus-led-ground-label.snap.svg +44 -5
  135. package/tests/repros/__snapshots__/repro-usb-power-vbus-label-detour.snap.svg +685 -2
  136. package/tests/repros/__snapshots__/repro-vcc-pin1-detour.snap.svg +27 -2
  137. package/tests/repros/__snapshots__/repro129-host-custom-symbol-passives.snap.svg +51 -5
  138. package/tests/repros/__snapshots__/repro130-bq27441-fuel-gauge-trace-through-c1.snap.svg +100 -5
  139. package/tests/repros/__snapshots__/repro161-power-section-autolayout.snap.svg +107 -5
  140. package/tests/repros/__snapshots__/repro47-endpoint-obstacle-detour.snap.svg +51 -5
  141. package/tests/repros/__snapshots__/repro48-555-timer-vcc-rail-label.snap.svg +104 -2
  142. package/tests/repros/__snapshots__/repro5-escape-padded-text-obstacles.snap.svg +30 -5
  143. package/tests/repros/__snapshots__/repro51-overlap-junction-crossing.snap.svg +65 -5
  144. package/tests/repros/__snapshots__/repro84-stacked-gnd-label-orientation.snap.svg +27 -2
  145. package/tests/repros/__snapshots__/small-variant-resistor-facing-direction.snap.svg +58 -5
  146. package/tests/repros/__snapshots__/trace-overlap-box-resistor.snap.svg +37 -5
  147. package/tests/repros/assets/repro-core-tb67s579ftg-inline-label-routing.input.json +900 -0
  148. package/tests/repros/repro-core-tb67s579ftg-inline-label-routing.test.ts +40 -0
  149. package/tests/solvers/InlineNetLabelSolver/__snapshots__/fallback-net-label-width.snap.svg +25 -7
  150. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label-anchored-label-clearance.snap.svg +34 -2
  151. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label-port-stub.snap.svg +23 -5
  152. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label-two-pin-net.snap.svg +23 -5
  153. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label01.snap.svg +23 -5
  154. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label02.snap.svg +23 -5
  155. package/tests/solvers/InlineNetLabelSolver/__snapshots__/terminal-stub-trace-clearance.snap.svg +71 -0
  156. package/tests/solvers/InlineNetLabelSolver/fallback-net-label-width.test.ts +10 -1
  157. package/tests/solvers/InlineNetLabelSolver/terminal-stub-trace-clearance.test.ts +102 -0
  158. package/tests/solvers/SchematicTraceSingleLineSolver2/__snapshots__/SchematicTraceSingleLineSolver2_01-example17-d1_1-u1_1.snap.svg +23 -5
  159. package/tests/solvers/SchematicTraceSingleLineSolver2/__snapshots__/SchematicTraceSingleLineSolver2_repro47-short-opposing-pins.snap.svg +20 -2
  160. package/tests/solvers/TraceCleanupSolver/__snapshots__/TraceCleanupSolver.snap.svg +44 -5
  161. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/__snapshots__/TraceLabelOverlapAvoidanceSolver.snap.svg +79 -5
  162. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/sub-solver/__snapshots__/MergedNetLabelObstacles.snap.svg +44 -5
  163. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/sub-solver/__snapshots__/OverlapAvoidanceStepSolver.snap.svg +23 -5
  164. 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.3148566499999994,0.5512093000000002 -1.4,0.42500000000000004" data-type="line" data-label="" points="70.92192940766586,346.32029245159356 177.95207620854734,361.0856657006556" fill="none" stroke="hsl(256, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-2.31430995,-0.5512093000000002 -1.4,-0.42500000000000004" data-type="line" data-label="" points="70.98588847847327,475.2935306020977 177.95207620854734,460.5281573530356" fill="none" stroke="hsl(256, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="1.757519574999999,1.2 1.4,0.5" data-type="line" data-label="" points="547.3539750075635,270.4175115470151 505.5273428281519,352.31132820191624" fill="none" stroke="hsl(144, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-1.4,0.42500000000000004 1.4,-0.3" data-type="line" data-label="" points="177.95207620854734,361.0856657006556 505.5273428281519,445.9042615218033" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.4,0.42500000000000004 1.4,-0.5" data-type="line" data-label="" points="177.95207620854734,361.0856657006556 505.5273428281519,469.302494851775" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.4,0.42500000000000004 -2.3148566499999994,0.5512093000000002" data-type="line" data-label="" points="177.95207620854734,361.0856657006556 70.92192940766586,346.32029245159356" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.4,0.42500000000000004 1.7580660749999977,2.3025814000000002" data-type="line" data-label="" points="177.95207620854734,361.0856657006556 547.4179106801375,141.42522723458046" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.4,-0.3 1.4,-0.5" data-type="line" data-label="" points="505.5273428281519,445.9042615218033 505.5273428281519,469.302494851775" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.4,-0.3 -2.3148566499999994,0.5512093000000002" data-type="line" data-label="" points="505.5273428281519,445.9042615218033 70.92192940766586,346.32029245159356" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.4,-0.3 1.7580660749999977,2.3025814000000002" data-type="line" data-label="" points="505.5273428281519,445.9042615218033 547.4179106801375,141.42522723458046" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.4,-0.5 -2.3148566499999994,0.5512093000000002" data-type="line" data-label="" points="505.5273428281519,469.302494851775 70.92192940766586,346.32029245159356" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.4,-0.5 1.7580660749999977,2.3025814000000002" data-type="line" data-label="" points="505.5273428281519,469.302494851775 547.4179106801375,141.42522723458046" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-2.3148566499999994,0.5512093000000002 1.7580660749999977,2.3025814000000002" data-type="line" data-label="" points="70.92192940766586,346.32029245159356 547.4179106801375,141.42522723458046" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.4,-0.42500000000000004 -2.31430995,-0.5512093000000002" data-type="line" data-label="" points="177.95207620854734,460.5281573530356 70.98588847847327,475.2935306020977" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.4,0.5 1.757519574999999,1.2" data-type="line" data-label="" points="505.5273428281519,352.31132820191624 547.3539750075635,270.4175115470151" fill="none" stroke="hsl(304, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.4,0.42500000000000004 -1.8574283249999997,0.42500000000000004 -1.8574283249999997,0.7512093000000004 -2.3148566499999994,0.7512093000000004 -2.3148566499999994,0.5512093000000002" data-type="line" data-label="" points="177.95207620854734,361.0856657006556 124.4370028081066,361.0856657006556 124.4370028081066,322.9220591216218 70.92192940766586,322.9220591216218 70.92192940766586,346.32029245159356" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.4,-0.5 1.5999999999999999,-0.5 1.5999999999999999,-0.3 1.4,-0.3" data-type="line" data-label="" points="505.5273428281519,469.302494851775 528.9255761581237,469.302494851775 528.9255761581237,445.9042615218033 505.5273428281519,445.9042615218033" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-2.31430995,-0.5512093000000002 -2.31430995,-0.7512093000000004 -1.857154975,-0.7512093000000004 -1.857154975,-0.42500000000000004 -1.4,-0.42500000000000004" data-type="line" data-label="" points="70.98588847847327,475.2935306020977 70.98588847847327,498.6917639320694 124.4689823435103,498.6917639320694 124.4689823435103,460.5281573530356 177.95207620854734,460.5281573530356" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.757519574999999,1.2 1.757519574999999,0.5 1.4,0.5" data-type="line" data-label="" points="547.3539750075635,270.4175115470151 547.3539750075635,352.31132820191624 505.5273428281519,352.31132820191624" 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="177.95207620854734" y="328.9130948719445" width="327.5752666196046" height="163.78763330980223" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.00854765388392857"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="-2.3145833" data-y="0" x="39.999999999999986" y="346.32029245159356" width="61.907817886139156" height="128.97323815050413" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.00854765388392857"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="1.7577928249999983" data-y="1.7512907000000002" x="528.9255761581237" y="141.42522723458043" width="36.92073337145359" height="128.99228431243466" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.00854765388392857"/></g><g><rect data-type="rect" data-label="netId: V3_3
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.3148566499999994,0.5512093000000002 -1.4,0.42500000000000004" data-type="line" data-label="" points="70.92192940766586,346.32029245159356 177.95207620854734,361.0856657006556" fill="none" stroke="hsl(256, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-2.31430995,-0.5512093000000002 -1.4,-0.42500000000000004" data-type="line" data-label="" points="70.98588847847327,475.2935306020977 177.95207620854734,460.5281573530356" fill="none" stroke="hsl(256, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="1.757519574999999,1.2 1.4,0.5" data-type="line" data-label="" points="547.3539750075635,270.4175115470151 505.5273428281519,352.31132820191624" fill="none" stroke="hsl(144, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-1.4,0.42500000000000004 1.4,-0.3" data-type="line" data-label="" points="177.95207620854734,361.0856657006556 505.5273428281519,445.9042615218033" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.4,0.42500000000000004 1.4,-0.5" data-type="line" data-label="" points="177.95207620854734,361.0856657006556 505.5273428281519,469.302494851775" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.4,0.42500000000000004 -2.3148566499999994,0.5512093000000002" data-type="line" data-label="" points="177.95207620854734,361.0856657006556 70.92192940766586,346.32029245159356" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.4,0.42500000000000004 1.7580660749999977,2.3025814000000002" data-type="line" data-label="" points="177.95207620854734,361.0856657006556 547.4179106801375,141.42522723458046" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.4,-0.3 1.4,-0.5" data-type="line" data-label="" points="505.5273428281519,445.9042615218033 505.5273428281519,469.302494851775" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.4,-0.3 -2.3148566499999994,0.5512093000000002" data-type="line" data-label="" points="505.5273428281519,445.9042615218033 70.92192940766586,346.32029245159356" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.4,-0.3 1.7580660749999977,2.3025814000000002" data-type="line" data-label="" points="505.5273428281519,445.9042615218033 547.4179106801375,141.42522723458046" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.4,-0.5 -2.3148566499999994,0.5512093000000002" data-type="line" data-label="" points="505.5273428281519,469.302494851775 70.92192940766586,346.32029245159356" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.4,-0.5 1.7580660749999977,2.3025814000000002" data-type="line" data-label="" points="505.5273428281519,469.302494851775 547.4179106801375,141.42522723458046" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-2.3148566499999994,0.5512093000000002 1.7580660749999977,2.3025814000000002" data-type="line" data-label="" points="70.92192940766586,346.32029245159356 547.4179106801375,141.42522723458046" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.4,-0.42500000000000004 -2.31430995,-0.5512093000000002" data-type="line" data-label="" points="177.95207620854734,460.5281573530356 70.98588847847327,475.2935306020977" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.4,0.5 1.757519574999999,1.2" data-type="line" data-label="" points="505.5273428281519,352.31132820191624 547.3539750075635,270.4175115470151" fill="none" stroke="hsl(304, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.4,0.42500000000000004 -1.8574283249999997,0.42500000000000004 -1.8574283249999997,0.7512093000000004 -2.3148566499999994,0.7512093000000004 -2.3148566499999994,0.5512093000000002" data-type="line" data-label="" points="177.95207620854734,361.0856657006556 124.4370028081066,361.0856657006556 124.4370028081066,322.9220591216218 70.92192940766586,322.9220591216218 70.92192940766586,346.32029245159356" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.4,-0.5 1.5999999999999999,-0.5 1.5999999999999999,-0.3 1.4,-0.3" data-type="line" data-label="" points="505.5273428281519,469.302494851775 528.9255761581237,469.302494851775 528.9255761581237,445.9042615218033 505.5273428281519,445.9042615218033" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-2.31430995,-0.5512093000000002 -2.31430995,-0.7512093000000004 -1.857154975,-0.7512093000000004 -1.857154975,-0.42500000000000004 -1.4,-0.42500000000000004" data-type="line" data-label="" points="70.98588847847327,475.2935306020977 70.98588847847327,498.6917639320694 124.4689823435103,498.6917639320694 124.4689823435103,460.5281573530356 177.95207620854734,460.5281573530356" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.757519574999999,1.2 1.757519574999999,0.5 1.4,0.5" data-type="line" data-label="" points="547.3539750075635,270.4175115470151 547.3539750075635,352.31132820191624 505.5273428281519,352.31132820191624" 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="177.95207620854734" y="328.9130948719445" width="327.5752666196046" height="163.78763330980223" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.00854765388392857"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="-2.3145833" data-y="0" x="39.999999999999986" y="346.32029245159356" width="61.907817886139156" height="128.97323815050413" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.00854765388392857"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="1.7577928249999983" data-y="1.7512907000000002" x="528.9255761581237" y="141.42522723458043" width="36.92073337145359" height="128.99228431243466" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.00854765388392857"/></g><g><rect data-type="rect" data-label="netId: V3_3
2
4
  globalConnNetId: connectivity_net0" data-x="-2.3148566499999994" data-y="0.9762093000000004" x="59.22281274267996" y="270.2760341291854" width="23.398233329971788" height="52.64602499243642" fill="#ef444466" stroke="#ef4444" stroke-width="0.00854765388392857"/></g><g><rect data-type="rect" data-label="netId: V3_3
3
5
  globalConnNetId: connectivity_net0" data-x="1.5999999999999999" data-y="-0.07499999999999998" x="517.2264594931378" y="393.25823652936674" width="23.39823332997173" height="52.64602499243648" fill="#ef444466" stroke="#ef4444" stroke-width="0.00854765388392857"/></g><g><rect data-type="rect" data-label="netId: V3_3
4
6
  globalConnNetId: connectivity_net0" data-x="1.7580660749999977" data-y="2.5285814" x="535.7187940151516" y="88.66221107549416" width="23.39823332997173" height="52.64602499243642" fill="#ef444466" stroke="#ef4444" stroke-width="0.00854765388392857"/></g><g><rect data-type="rect" data-label="netId: GND
@@ -30,7 +32,7 @@ orientation: x+" data-x="1.757519574999999" data-y="0.85" cx="547.3539750075635"
30
32
  const h = svg.getElementById('crosshair-h');
31
33
  const v = svg.getElementById('crosshair-v');
32
34
  const coords = svg.getElementById('coordinates');
33
-
35
+
34
36
  crosshair.style.display = 'block';
35
37
  h.setAttribute('x1', '0');
36
38
  h.setAttribute('x2', '640');
@@ -49,13 +51,13 @@ orientation: x+" data-x="1.757519574999999" data-y="0.85" cx="547.3539750075635"
49
51
  // y' = (y - ty) / sy
50
52
  const sx = matrix.a;
51
53
  const sy = matrix.d;
52
- const tx = matrix.e;
54
+ const tx = matrix.e;
53
55
  const ty = matrix.f;
54
56
  const realPoint = {
55
57
  x: (x - tx) / sx,
56
58
  y: (y - ty) / sy // Flip y back since we used negative scale
57
59
  }
58
-
60
+
59
61
  coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
60
62
  coords.setAttribute('x', (x + 5).toString());
61
63
  coords.setAttribute('y', (y - 5).toString());
@@ -63,4 +65,55 @@ orientation: x+" data-x="1.757519574999999" data-y="0.85" cx="547.3539750075635"
63
65
  document.currentScript.parentElement.addEventListener('mouseleave', () => {
64
66
  document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
65
67
  });
66
- ]]></script></svg>
68
+ ]]></script>
69
+ </g>
70
+ <g transform="translate(1216, 200)">
71
+ <style>
72
+ .boundary { fill: rgb(245, 241, 237); }
73
+ .schematic-boundary { fill: none; stroke: #fff; }
74
+ .component { fill: none; stroke: rgb(132, 0, 0); }
75
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
76
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
77
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
78
+ .pin-number { fill: rgb(169, 0, 0); }
79
+ .port-label { fill: rgb(0, 100, 100); }
80
+ .component-name { fill: rgb(0, 100, 100); }
81
+
82
+ </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 414.893549174 457.8730753392125 L 339.4049920584986 457.8730753392125 L 339.4049920584986 404.03935313878304 L 263.9164349429971 404.03935313878304 L 263.9164349429971 437.0449861482831" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="26.404506407600003px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 414.893549174 457.8730753392125 L 339.4049920584986 457.8730753392125 L 339.4049920584986 404.03935313878304 L 263.9164349429971 404.03935313878304 L 263.9164349429971 437.0449861482831" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.3005633009500004px" 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 876.972411307 610.52412800815 L 909.9780443165 610.52412800815 L 909.9780443165 577.5184949986501 L 876.972411307 577.5184949986501" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="26.404506407600003px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 876.972411307 610.52412800815 L 909.9780443165 610.52412800815 L 909.9780443165 577.5184949986501 L 876.972411307 577.5184949986501" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.3005633009500004px" 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 264.0066558408285 618.975104820517 L 264.0066558408285 651.9807378300171 L 339.4501025074142 651.9807378300171 L 339.4501025074142 598.1470156295876 L 414.893549174 598.1470156295876" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="26.404506407600003px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 264.0066558408285 618.975104820517 L 264.0066558408285 651.9807378300171 L 339.4501025074142 651.9807378300171 L 339.4501025074142 598.1470156295876 L 414.893549174 598.1470156295876" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.3005633009500004px" 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 935.9732107378119 329.97624742740004 L 935.9732107378119 445.49596296065005 L 876.972411307 445.49596296065005" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="26.404506407600003px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 935.9732107378119 329.97624742740004 L 935.9732107378119 445.49596296065005 L 876.972411307 445.49596296065005" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.3005633009500004px" 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"/><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="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"/><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="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component chip sch-component-body" x="480.904815193" y="412.49032995115004" width="330.056330095" height="231.03943106649996" stroke-width="3.3005633009500004px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="480.904815193" y="412.49032995115004" width="330.056330095" height="231.03943106649996" fill="transparent"/><text class="sch-text" x="645.9329802405" y="528.0100454844" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="29.70506970855px" transform="rotate(0, 645.9329802405, 528.0100454844)">U3</text><line class="component-pin sch-component-pin sch-port-line" x1="480.904815193" y1="457.8730753392125" x2="414.893549174" y2="457.8730753392125" stroke-width="3.3005633009500004px"/><g class="sch-port" data-schematic-port-id="source_port_0_0__stack1"><rect x="411.59298587305" y="454.5725120382625" width="6.601126601900001" height="6.601126601900001" opacity="0"/></g><text class="pin-number sch-pin-number" x="447.8991821835" y="454.5725120382625" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.754224757125px" transform="">8</text><line class="component-pin sch-component-pin sch-port-line" x1="480.904815193" y1="598.1470156295876" x2="414.893549174" y2="598.1470156295876" stroke-width="3.3005633009500004px"/><g class="sch-port" data-schematic-port-id="source_port_0_1__stack1"><rect x="411.59298587305" y="594.8464523286376" width="6.601126601900001" height="6.601126601900001" opacity="0"/></g><text class="pin-number sch-pin-number" x="447.8991821835" y="594.8464523286376" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.754224757125px" transform="">4</text><line class="component-pin sch-component-pin sch-port-line" x1="810.961145288" y1="445.49596296065005" x2="876.972411307" y2="445.49596296065005" stroke-width="3.3005633009500004px"/><g class="sch-port" data-schematic-port-id="source_port_0_2__stack1"><rect x="873.67184800605" y="442.19539965970006" width="6.601126601900001" height="6.601126601900001" opacity="0"/></g><text class="pin-number sch-pin-number" x="843.9667782975" y="442.19539965970006" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.754224757125px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="810.961145288" y1="478.50159597015005" x2="873.67184800605" y2="478.50159597015005" stroke-width="3.3005633009500004px"/><g class="sch-port" data-schematic-port-id="source_port_0_3__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="876.972411307" cy="478.50159597015005" r="3.3005633009500004" stroke-width="3.3005633009500004px"/><rect x="873.67184800605" y="475.20103266920006" width="6.601126601900001" height="6.601126601900001" opacity="0"/></g><text class="pin-number sch-pin-number" x="843.9667782975" y="475.20103266920006" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.754224757125px" transform="">6</text><line class="component-pin sch-component-pin sch-port-line" x1="810.961145288" y1="511.50722897965005" x2="873.67184800605" y2="511.50722897965005" stroke-width="3.3005633009500004px"/><g class="sch-port" data-schematic-port-id="source_port_0_4__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="876.972411307" cy="511.50722897965005" r="3.3005633009500004" stroke-width="3.3005633009500004px"/><rect x="873.67184800605" y="508.20666567870006" width="6.601126601900001" height="6.601126601900001" opacity="0"/></g><text class="pin-number sch-pin-number" x="843.9667782975" y="508.2066656787" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.754224757125px" transform="">5</text><line class="component-pin sch-component-pin sch-port-line" x1="810.961145288" y1="544.51286198915" x2="873.67184800605" y2="544.51286198915" stroke-width="3.3005633009500004px"/><g class="sch-port" data-schematic-port-id="source_port_0_5__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="876.972411307" cy="544.51286198915" r="3.3005633009500004" stroke-width="3.3005633009500004px"/><rect x="873.67184800605" y="541.2122986882" width="6.601126601900001" height="6.601126601900001" opacity="0"/></g><text class="pin-number sch-pin-number" x="843.9667782975" y="541.2122986882" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.754224757125px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="810.961145288" y1="577.5184949986501" x2="876.972411307" y2="577.5184949986501" stroke-width="3.3005633009500004px"/><g class="sch-port" data-schematic-port-id="source_port_0_6__stack1"><rect x="873.67184800605" y="574.2179316977001" width="6.601126601900001" height="6.601126601900001" opacity="0"/></g><text class="pin-number sch-pin-number" x="843.9667782975" y="574.2179316977" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.754224757125px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="810.961145288" y1="610.52412800815" x2="876.972411307" y2="610.52412800815" stroke-width="3.3005633009500004px"/><g class="sch-port" data-schematic-port-id="source_port_0_7__stack1"><rect x="873.67184800605" y="607.2235647072" width="6.601126601900001" height="6.601126601900001" opacity="0"/></g><text class="pin-number sch-pin-number" x="843.9667782975" y="607.2235647072" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.754224757125px" transform="">7</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="215.39566632684537" y="437.0449861482831" width="97.04153723230345" height="181.93014104293866" fill="transparent"/><path class="sch-component-symbol-path" d="M 263.9164349429971 618.9751271912218 L 263.9164349429971 546.2030707740463" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.3005633009500004px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 263.9164349429971 509.81704256545856 L 263.9164349429971 437.0449861482831" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.3005633009500004px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 312.4372035591488 546.2030707740463 L 215.39566632684537 546.2030707740463" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.3005633009500004px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 312.4372035591488 509.81704256545856 L 215.39566632684537 509.81704256545856" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.3005633009500004px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="298.7863786428937" y="467.36667632210623" stroke="rgb(245, 241, 237)" stroke-width="3.3005633009500004px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="start" dominant-baseline="ideographic" font-size="29.70506970855px">C20</text><text class="sch-component-text" x="298.7863786428937" y="588.6534370173987" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="start" dominant-baseline="hanging" font-size="29.70506970855px"></text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_2__stack1"><rect class="component-overlay sch-component-overlay" x="911.8085295157914" y="148.01926216989636" width="48.50973822843753" height="181.95700760854277" fill="transparent"/><path class="sch-component-symbol-path" d="M 936.0633986300102 148.01926216989636 L 936.0633986300102 178.35149533824045" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.3005633009500004px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 936.0633986300102 299.64403661009504 L 936.0633986300102 329.97626977843913" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.3005633009500004px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 960.3182677442289 178.35149533824045 L 960.3182677442289 299.64403661009504 L 911.8085295157914 299.64403661009504 L 911.8085295157914 178.35149533824045 L 960.3182677442289 178.35149533824045" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.3005633009500004px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="984.5852673256215" y="190.47589727855635" stroke="rgb(245, 241, 237)" stroke-width="3.3005633009500004px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="start" dominant-baseline="middle" font-size="29.70506970855px">R11</text><text class="sch-component-text" x="984.5852673256215" y="287.5196346697792" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="start" dominant-baseline="middle" font-size="29.70506970855px"></text><circle class="component-pin sch-component-pin" cx="936.0633986300102" cy="148.01926216989636" r="3.3005633009500004px" stroke-width="3.3005633009500004px" fill="none" stroke="rgb(132, 0, 0)"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="414.893549174" cy="457.8730753392125" r="6.601126601900001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="414.893549174" cy="598.1470156295876" r="6.601126601900001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_2__stack1"><circle cx="876.972411307" cy="445.49596296065005" r="6.601126601900001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_3__stack1"><circle cx="876.972411307" cy="478.50159597015005" r="6.601126601900001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_4__stack1"><circle cx="876.972411307" cy="511.50722897965005" r="6.601126601900001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_5__stack1"><circle cx="876.972411307" cy="544.51286198915" r="6.601126601900001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_6__stack1"><circle cx="876.972411307" cy="577.5184949986501" r="6.601126601900001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_7__stack1"><circle cx="876.972411307" cy="610.52412800815" r="6.601126601900001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="263.9164349429971" cy="478.50160715550237" r="6.601126601900001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_1__stack1"><circle cx="264.0066558408285" cy="660.4317258277364" r="6.601126601900001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_0__stack1"><circle cx="936.0633986300102" cy="189.48931645991775" r="6.601126601900001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_1__stack1"><circle cx="935.9732107378119" cy="371.4463017174214" r="6.601126601900001" 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="
83
+ M 263.9164349429971,404.03935313878304
84
+ L 247.4136184382471,395.12783222621806
85
+ L 247.4136184382471,338.5341734925954
86
+ L 280.4192514477471,338.5341734925954
87
+ L 280.4192514477471,395.12783222621806
88
+ Z
89
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.3005633009500004px"/><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="263.9164349429971" y="389.18681828450804" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="29.70506970855px" transform="rotate(-90 263.9164349429971 389.18681828450804)">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="
90
+ M 909.9780443165,577.5184949986501
91
+ L 893.4752278117501,568.6069740860851
92
+ L 893.4752278117501,512.0133153524624
93
+ L 926.4808608212501,512.0133153524624
94
+ L 926.48086082125,568.6069740860851
95
+ Z
96
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.3005633009500004px"/><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="909.9780443165" y="562.6659601443752" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="29.70506970855px" transform="rotate(-90 909.9780443165 562.6659601443752)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" d="
97
+ M 936.0633986300102,148.01926216989636
98
+ L 919.5605821252602,139.10774125733136
99
+ L 919.5605821252602,82.51408252370871
100
+ L 952.5662151347602,82.51408252370871
101
+ L 952.5662151347601,139.10774125733136
102
+ Z
103
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.3005633009500004px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" x="936.0633986300102" y="133.16672731562136" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="29.70506970855px" transform="rotate(-90 936.0633986300102 133.16672731562136)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" d="
104
+ M 264.0066558408285,651.9807378300171
105
+ L 280.5094723455785,660.8922587425822
106
+ L 280.5094723455785,717.4859174762048
107
+ L 247.5038393360785,717.4859174762048
108
+ L 247.5038393360785,660.8922587425822
109
+ Z
110
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.3005633009500004px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" x="264.0066558408285" y="666.8332726842921" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="29.70506970855px" transform="rotate(90 264.0066558408285 666.8332726842921)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" d="
111
+ M 935.9732107378119,387.7361051940251
112
+ L 944.8847316503769,371.23328868927507
113
+ L 1001.4783903839996,371.23328868927507
114
+ L 1001.4783903839996,404.2389216987751
115
+ L 944.8847316503769,404.2389216987751
116
+ Z
117
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.3005633009500004px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" x="950.8257455920868" y="387.7361051940251" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="29.70506970855px" transform="">XX</text>
118
+ </g>
119
+ </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.30000000000000004 3.4487093,0.0002732499999993365" data-type="line" data-label="" points="69.7277221998153,290.27227780018467 470.9240733271781,319.9729229996964" fill="none" stroke="hsl(248, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.6000000000000001,-0.10000000000000003 4.5512907,-0.0002732499999993365" data-type="line" data-label="" points="188.6386109990767,329.90924073327176 580.1815185334564,320.0270770003036" fill="none" stroke="hsl(248, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-0.6000000000000001,0.30000000000000004 -0.8,0.30000000000000004 -0.8,0.7 3.2487093,0.7 3.2487093,0.0002732499999993365 3.4487093,0.0002732499999993365" data-type="line" data-label="" points="69.7277221998153,290.27227780018467 49.909240733271744,290.27227780018467 49.909240733271744,250.63531486709752 451.10559186063455,250.63531486709752 451.10559186063455,319.9729229996964 470.9240733271781,319.9729229996964" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.6000000000000001,-0.10000000000000003 0.8,-0.10000000000000003 0.8,-0.7 4.7512907,-0.7 4.7512907,-0.0002732499999993365 4.5512907,-0.0002732499999993365" data-type="line" data-label="" points="188.6386109990767,329.90924073327176 208.45709246562024,329.90924073327176 208.45709246562024,389.3646851329025 600,389.3646851329025 600,320.0270770003036 580.1815185334564,320.0270770003036" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="4" data-y="0" x="470.92407332717806" y="300.73095124977385" width="109.25744520627825" height="38.538097500452295" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010091590535714286"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="0" data-y="0" x="69.7277221998153" y="270.4537963336411" width="118.91088879926139" height="99.09240733271781" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010091590535714286"/></g><g><rect data-type="rect" data-label="netId: chip.U1 &gt; port.pin1 to R1.1
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.30000000000000004 3.4487093,0.0002732499999993365" data-type="line" data-label="" points="69.7277221998153,290.27227780018467 470.9240733271781,319.9729229996964" fill="none" stroke="hsl(248, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.6000000000000001,-0.10000000000000003 4.5512907,-0.0002732499999993365" data-type="line" data-label="" points="188.6386109990767,329.90924073327176 580.1815185334564,320.0270770003036" fill="none" stroke="hsl(248, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-0.6000000000000001,0.30000000000000004 -0.8,0.30000000000000004 -0.8,0.7 3.2487093,0.7 3.2487093,0.0002732499999993365 3.4487093,0.0002732499999993365" data-type="line" data-label="" points="69.7277221998153,290.27227780018467 49.909240733271744,290.27227780018467 49.909240733271744,250.63531486709752 451.10559186063455,250.63531486709752 451.10559186063455,319.9729229996964 470.9240733271781,319.9729229996964" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.6000000000000001,-0.10000000000000003 0.8,-0.10000000000000003 0.8,-0.7 4.7512907,-0.7 4.7512907,-0.0002732499999993365 4.5512907,-0.0002732499999993365" data-type="line" data-label="" points="188.6386109990767,329.90924073327176 208.45709246562024,329.90924073327176 208.45709246562024,389.3646851329025 600,389.3646851329025 600,320.0270770003036 580.1815185334564,320.0270770003036" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="4" data-y="0" x="470.92407332717806" y="300.73095124977385" width="109.25744520627825" height="38.538097500452295" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010091590535714286"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="0" data-y="0" x="69.7277221998153" y="270.4537963336411" width="118.91088879926139" height="99.09240733271781" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010091590535714286"/></g><g><rect data-type="rect" data-label="netId: chip.U1 &gt; port.pin1 to R1.1
2
4
  globalConnNetId: connectivity_net0" data-x="-0.8" data-y="0.07500000000000004" x="39.999999999999964" y="290.2722778001846" width="19.81848146654356" height="44.59158329972303" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.010091590535714286"/></g><g><rect data-type="rect" data-label="netId: chip.U1 &gt; port.pin6 to R1.2
3
5
  globalConnNetId: connectivity_net1" data-x="0.8" data-y="0.12499999999999997" x="198.54785173234845" y="285.3176574335488" width="19.818481466543574" height="44.59158329972297" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.010091590535714286"/></g><g><circle data-type="point" data-label="R1.1
4
6
  x-" data-x="3.4487093" data-y="0.0002732499999993365" cx="470.9240733271781" cy="319.9729229996964" r="3" fill="hsl(226, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R1.2
@@ -22,7 +24,7 @@ orientation: y+" data-x="0.8" data-y="-0.10000000000000003" cx="208.457092465620
22
24
  const h = svg.getElementById('crosshair-h');
23
25
  const v = svg.getElementById('crosshair-v');
24
26
  const coords = svg.getElementById('coordinates');
25
-
27
+
26
28
  crosshair.style.display = 'block';
27
29
  h.setAttribute('x1', '0');
28
30
  h.setAttribute('x2', '640');
@@ -41,13 +43,13 @@ orientation: y+" data-x="0.8" data-y="-0.10000000000000003" cx="208.457092465620
41
43
  // y' = (y - ty) / sy
42
44
  const sx = matrix.a;
43
45
  const sy = matrix.d;
44
- const tx = matrix.e;
46
+ const tx = matrix.e;
45
47
  const ty = matrix.f;
46
48
  const realPoint = {
47
49
  x: (x - tx) / sx,
48
50
  y: (y - ty) / sy // Flip y back since we used negative scale
49
51
  }
50
-
52
+
51
53
  coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
52
54
  coords.setAttribute('x', (x + 5).toString());
53
55
  coords.setAttribute('y', (y - 5).toString());
@@ -55,4 +57,34 @@ orientation: y+" data-x="0.8" data-y="-0.10000000000000003" cx="208.457092465620
55
57
  document.currentScript.parentElement.addEventListener('mouseleave', () => {
56
58
  document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
57
59
  });
58
- ]]></script></svg>
60
+ ]]></script>
61
+ </g>
62
+ <g transform="translate(1216, 200)">
63
+ <style>
64
+ .boundary { fill: rgb(245, 241, 237); }
65
+ .schematic-boundary { fill: none; stroke: #fff; }
66
+ .component { fill: none; stroke: rgb(132, 0, 0); }
67
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
68
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
69
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
70
+ .pin-number { fill: rgb(169, 0, 0); }
71
+ .port-label { fill: rgb(0, 100, 100); }
72
+ .component-name { fill: rgb(0, 100, 100); }
73
+
74
+ </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 141.12289644097999 347.07891383464 L 105.84217233074 347.07891383464 L 105.84217233074 276.51746561416 L 820.0491514100545 276.51746561416 L 820.0491514100545 399.9517977106845 L 855.3298755202945 399.9517977106845" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="28.224579288192px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 141.12289644097999 347.07891383464 L 105.84217233074 347.07891383464 L 105.84217233074 276.51746561416 L 820.0491514100545 276.51746561416 L 820.0491514100545 399.9517977106845 L 855.3298755202945 399.9517977106845" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.528072411024px" 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 352.80724110242 417.64036205512 L 388.08796521266004 417.64036205512 L 388.08796521266004 523.4825343858399 L 1085.1099505429454 523.4825343858399 L 1085.1099505429454 400.0482022893155 L 1049.8292264327054 400.0482022893155" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="28.224579288192px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 352.80724110242 417.64036205512 L 388.08796521266004 417.64036205512 L 388.08796521266004 523.4825343858399 L 1085.1099505429454 523.4825343858399 L 1085.1099505429454 400.0482022893155 L 1049.8292264327054 400.0482022893155" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.528072411024px" 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"/><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-overlay sch-component-overlay" x="855.3298755202946" y="374.0250310492959" width="194.49937480411575" height="51.85353332277725" fill="transparent"/><path class="sch-component-symbol-path" d="M 855.3298755202946 399.9517977106845 L 887.7529213001407 399.9517977106845" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.528072411024px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 1017.4062045445643 399.9517977106845 L 1049.8292503244104 399.9517977106845" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.528072411024px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 887.7529213001407 374.0250310492959 L 1017.4062045445643 374.0250310492959 L 1017.4062045445643 425.87856437207313 L 887.7529213001407 425.87856437207313 L 887.7529213001407 374.0250310492959" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.528072411024px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="952.5795629223525" y="348.0852977629203" stroke="rgb(245, 241, 237)" stroke-width="3.528072411024px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="ideographic" font-size="31.752651699216px">R1</text><text class="sch-component-text" x="952.5795629223525" y="451.8182976584487" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="31.752651699216px"></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="211.68434466146" y="311.7981897244" width="70.56144822048003" height="176.4036205512" stroke-width="3.528072411024px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="211.68434466146" y="311.7981897244" width="70.56144822048003" height="176.4036205512" fill="transparent"/><text class="sch-text" x="246.9650687717" y="400" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="31.752651699216px" transform="rotate(0, 246.9650687717, 400)">U1</text><line class="component-pin sch-component-pin sch-port-line" x1="211.68434466146" y1="347.07891383464" x2="141.12289644097999" y2="347.07891383464" stroke-width="3.528072411024px"/><g class="sch-port" data-schematic-port-id="source_port_1_0__stack1"><rect x="137.594824029956" y="343.55084142361596" width="7.056144822048" height="7.056144822048" opacity="0"/></g><text class="pin-number sch-pin-number" x="176.40362055122" y="343.550841423616" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="26.460543082679997px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="211.68434466146" y1="382.35963794488" x2="144.65096885200398" y2="382.35963794488" stroke-width="3.528072411024px"/><g class="sch-port" data-schematic-port-id="source_port_1_1__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="141.12289644097999" cy="382.35963794488" r="3.528072411024" stroke-width="3.528072411024px"/><rect x="137.594824029956" y="378.83156553385595" width="7.056144822048" height="7.056144822048" opacity="0"/></g><text class="pin-number sch-pin-number" x="176.40362055122" y="378.831565533856" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="26.460543082679997px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="211.68434466146" y1="417.64036205512" x2="144.65096885200398" y2="417.64036205512" stroke-width="3.528072411024px"/><g class="sch-port" data-schematic-port-id="source_port_1_2__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="141.12289644097999" cy="417.64036205512" r="3.528072411024" stroke-width="3.528072411024px"/><rect x="137.594824029956" y="414.112289644096" width="7.056144822048" height="7.056144822048" opacity="0"/></g><text class="pin-number sch-pin-number" x="176.40362055122" y="414.112289644096" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="26.460543082679997px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="211.68434466146" y1="452.92108616536" x2="144.65096885200398" y2="452.92108616536" stroke-width="3.528072411024px"/><g class="sch-port" data-schematic-port-id="source_port_1_3__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="141.12289644097999" cy="452.92108616536" r="3.528072411024" stroke-width="3.528072411024px"/><rect x="137.594824029956" y="449.393013754336" width="7.056144822048" height="7.056144822048" opacity="0"/></g><text class="pin-number sch-pin-number" x="176.40362055122" y="449.393013754336" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="26.460543082679997px" transform="">4</text><line class="component-pin sch-component-pin sch-port-line" x1="282.24579288194" y1="452.92108616536" x2="349.279168691396" y2="452.92108616536" stroke-width="3.528072411024px"/><g class="sch-port" data-schematic-port-id="source_port_1_4__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="352.80724110242" cy="452.92108616536" r="3.528072411024" stroke-width="3.528072411024px"/><rect x="349.27916869139597" y="449.393013754336" width="7.056144822048" height="7.056144822048" opacity="0"/></g><text class="pin-number sch-pin-number" x="317.52651699218" y="449.393013754336" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="26.460543082679997px" transform="">5</text><line class="component-pin sch-component-pin sch-port-line" x1="282.24579288194" y1="417.64036205512" x2="352.80724110242" y2="417.64036205512" stroke-width="3.528072411024px"/><g class="sch-port" data-schematic-port-id="source_port_1_5__stack1"><rect x="349.27916869139597" y="414.112289644096" width="7.056144822048" height="7.056144822048" opacity="0"/></g><text class="pin-number sch-pin-number" x="317.52651699218" y="414.112289644096" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="26.460543082679997px" transform="">6</text><line class="component-pin sch-component-pin sch-port-line" x1="282.24579288194" y1="382.35963794488" x2="349.279168691396" y2="382.35963794488" stroke-width="3.528072411024px"/><g class="sch-port" data-schematic-port-id="source_port_1_6__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="352.80724110242" cy="382.35963794488" r="3.528072411024" stroke-width="3.528072411024px"/><rect x="349.27916869139597" y="378.83156553385595" width="7.056144822048" height="7.056144822048" opacity="0"/></g><text class="pin-number sch-pin-number" x="317.52651699218" y="378.831565533856" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="26.460543082679997px" transform="">7</text><line class="component-pin sch-component-pin sch-port-line" x1="282.24579288194" y1="347.07891383464" x2="349.279168691396" y2="347.07891383464" stroke-width="3.528072411024px"/><g class="sch-port" data-schematic-port-id="source_port_1_7__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="352.80724110242" cy="347.07891383464" r="3.528072411024" stroke-width="3.528072411024px"/><rect x="349.27916869139597" y="343.55084142361596" width="7.056144822048" height="7.056144822048" opacity="0"/></g><text class="pin-number sch-pin-number" x="317.52651699218" y="343.550841423616" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="26.460543082679997px" transform="">8</text></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="899.6584767569924" cy="399.9517977106845" r="7.056144822048" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="1094.1578276694033" cy="400.0482022893155" r="7.056144822048" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="141.12289644097999" cy="347.07891383464" r="7.056144822048" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_1__stack1"><circle cx="141.12289644097999" cy="382.35963794488" r="7.056144822048" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_2__stack1"><circle cx="141.12289644097999" cy="417.64036205512" r="7.056144822048" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_3__stack1"><circle cx="141.12289644097999" cy="452.92108616536" r="7.056144822048" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_4__stack1"><circle cx="352.80724110242" cy="452.92108616536" r="7.056144822048" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_5__stack1"><circle cx="352.80724110242" cy="417.64036205512" r="7.056144822048" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_6__stack1"><circle cx="352.80724110242" cy="382.35963794488" r="7.056144822048" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_7__stack1"><circle cx="352.80724110242" cy="347.07891383464" r="7.056144822048" 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="
75
+ M 105.84217233074,347.07891383464
76
+ L 123.48253438585999,356.6047093444048
77
+ L 123.48253438586,417.0993909520963
78
+ L 88.20181027562,417.0993909520963
79
+ L 88.20181027562,356.6047093444048
80
+ Z
81
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.528072411024px"/><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="105.84217233074" y="362.955239684248" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="31.752651699216px" transform="rotate(90 105.84217233074 362.955239684248)">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="
82
+ M 388.08796521266004,417.64036205512
83
+ L 370.44760315754,408.1145665453552
84
+ L 370.44760315754,347.6198849376637
85
+ L 405.72832726778006,347.6198849376637
86
+ L 405.72832726778006,408.1145665453552
87
+ Z
88
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.528072411024px"/><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="388.08796521266004" y="401.764036205512" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="31.752651699216px" transform="rotate(-90 388.08796521266004 401.764036205512)">XX</text>
89
+ </g>
90
+ </svg>