@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="8.9,15.1 8.9,14.7" data-type="line" data-label="" points="102.04779068215191,148.06033907355481 102.04779068215191,177.9628887998931" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,15.1 11.1,13.3" data-type="line" data-label="" points="102.04779068215191,148.06033907355481 266.5118141770124,282.621812842077" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.7 11.1,13.3" data-type="line" data-label="" points="102.04779068215191,177.9628887998931 266.5118141770124,282.621812842077" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.9 8.9,14.5" data-type="line" data-label="" points="102.04779068215191,163.01161393672396 102.04779068215191,192.91416366306225" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.9 11.1,12.7" data-type="line" data-label="" points="102.04779068215191,163.01161393672396 266.5118141770124,327.4756374315846" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.9 13.16,10" data-type="line" data-label="" points="102.04779068215191,163.01161393672396 420.50994526765464,529.3178480843678" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.5 11.1,12.7" data-type="line" data-label="" points="102.04779068215191,192.91416366306225 266.5118141770124,327.4756374315846" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.5 13.16,10" data-type="line" data-label="" points="102.04779068215191,192.91416366306225 420.50994526765464,529.3178480843678" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="11.1,12.7 13.16,10" data-type="line" data-label="" points="266.5118141770124,327.4756374315846 420.50994526765464,529.3178480843678" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="11.1,15.5 14.84,10" data-type="line" data-label="" points="266.5118141770124,118.15778934721652 546.1006541182754,529.3178480843678" fill="none" stroke="hsl(50, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.7 8.600000000000001,14.7 8.600000000000001,15.1 8.9,15.1" data-type="line" data-label="" points="102.04779068215191,177.9628887998931 79.6208783873983,177.9628887998931 79.6208783873983,148.06033907355481 102.04779068215191,148.06033907355481" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="8.9,14.5 8.8,14.5 8.8,14.9 8.9,14.9" data-type="line" data-label="" points="102.04779068215191,192.91416366306225 94.57215325056734,192.91416366306225 94.57215325056734,163.01161393672396 102.04779068215191,163.01161393672396" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="11.1,12.7 12.129999999999999,12.7 12.129999999999999,10 13.16,10" data-type="line" data-label="" points="266.5118141770124,327.4756374315846 343.51087972233347,327.4756374315846 343.51087972233347,529.3178480843678 420.50994526765464,529.3178480843678" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="8.600000000000001,14.7 8.31,14.7 8.31,14.699" data-type="line" data-label="" points="79.6208783873983,177.9628887998931 57.94152983580295,177.9628887998931 57.94152983580295,178.03764517420882" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="11.1,13.3 12.341,13.3 12.341,13.249" data-type="line" data-label="" points="266.5118141770124,282.621812842077 359.2844747029769,282.621812842077 359.2844747029769,286.43438793218513" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="10" data-y="14" x="102.04779068215197" y="103.20651448404743" width="164.4640234948605" height="254.17167267387538" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01337678571428571"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="14" data-y="10" x="420.50994526765453" y="503.90068081698024" width="125.59070885062079" height="50.83433453477517" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01337678571428571"/></g><g><rect data-type="rect" data-label="ATMEGA328P_AU" data-x="10.080000000000002" data-y="12.17" x="131.9503404084902" y="360.3684421305565" width="116.61994393271948" height="13.4561473768523" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.01337678571428571"/></g><g><rect data-type="rect" data-label="U_MCU" data-x="9.600000000000001" data-y="15.815" x="127.46495794953961" y="85.26498464824442" width="53.82458950740886" height="18.68909357896132" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.01337678571428571"/></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="8.9,15.1 8.9,14.7" data-type="line" data-label="" points="102.04779068215191,148.06033907355481 102.04779068215191,177.9628887998931" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,15.1 11.1,13.3" data-type="line" data-label="" points="102.04779068215191,148.06033907355481 266.5118141770124,282.621812842077" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.7 11.1,13.3" data-type="line" data-label="" points="102.04779068215191,177.9628887998931 266.5118141770124,282.621812842077" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.9 8.9,14.5" data-type="line" data-label="" points="102.04779068215191,163.01161393672396 102.04779068215191,192.91416366306225" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.9 11.1,12.7" data-type="line" data-label="" points="102.04779068215191,163.01161393672396 266.5118141770124,327.4756374315846" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.9 13.16,10" data-type="line" data-label="" points="102.04779068215191,163.01161393672396 420.50994526765464,529.3178480843678" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.5 11.1,12.7" data-type="line" data-label="" points="102.04779068215191,192.91416366306225 266.5118141770124,327.4756374315846" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.5 13.16,10" data-type="line" data-label="" points="102.04779068215191,192.91416366306225 420.50994526765464,529.3178480843678" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="11.1,12.7 13.16,10" data-type="line" data-label="" points="266.5118141770124,327.4756374315846 420.50994526765464,529.3178480843678" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="11.1,15.5 14.84,10" data-type="line" data-label="" points="266.5118141770124,118.15778934721652 546.1006541182754,529.3178480843678" fill="none" stroke="hsl(50, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.7 8.600000000000001,14.7 8.600000000000001,15.1 8.9,15.1" data-type="line" data-label="" points="102.04779068215191,177.9628887998931 79.6208783873983,177.9628887998931 79.6208783873983,148.06033907355481 102.04779068215191,148.06033907355481" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="8.9,14.5 8.8,14.5 8.8,14.9 8.9,14.9" data-type="line" data-label="" points="102.04779068215191,192.91416366306225 94.57215325056734,192.91416366306225 94.57215325056734,163.01161393672396 102.04779068215191,163.01161393672396" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="11.1,12.7 12.129999999999999,12.7 12.129999999999999,10 13.16,10" data-type="line" data-label="" points="266.5118141770124,327.4756374315846 343.51087972233347,327.4756374315846 343.51087972233347,529.3178480843678 420.50994526765464,529.3178480843678" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="8.600000000000001,14.7 8.31,14.7 8.31,14.699" data-type="line" data-label="" points="79.6208783873983,177.9628887998931 57.94152983580295,177.9628887998931 57.94152983580295,178.03764517420882" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="11.1,13.3 12.341,13.3 12.341,13.249" data-type="line" data-label="" points="266.5118141770124,282.621812842077 359.2844747029769,282.621812842077 359.2844747029769,286.43438793218513" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="10" data-y="14" x="102.04779068215197" y="103.20651448404743" width="164.4640234948605" height="254.17167267387538" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01337678571428571"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="14" data-y="10" x="420.50994526765453" y="503.90068081698024" width="125.59070885062079" height="50.83433453477517" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01337678571428571"/></g><g><rect data-type="rect" data-label="ATMEGA328P_AU" data-x="10.080000000000002" data-y="12.17" x="131.9503404084902" y="360.3684421305565" width="116.61994393271948" height="13.4561473768523" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.01337678571428571"/></g><g><rect data-type="rect" data-label="U_MCU" data-x="9.600000000000001" data-y="15.815" x="127.46495794953961" y="85.26498464824442" width="53.82458950740886" height="18.68909357896132" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.01337678571428571"/></g><g><rect data-type="rect" data-label="netId: GND
2
4
  globalConnNetId: connectivity_net0" data-x="8.31" data-y="14.488999999999999" x="40" y="178.03764517420893" width="35.883059671605906" height="31.39767721265548" fill="#00000066" stroke="#000000" stroke-width="0.01337678571428571"/></g><g><rect data-type="rect" data-label="netId: GND
3
5
  globalConnNetId: connectivity_net0" data-x="12.341" data-y="13.039" x="341.34294486717397" y="286.4343879321851" width="35.883059671605906" height="31.397677212655367" fill="#00000066" stroke="#000000" stroke-width="0.01337678571428571"/></g><g><rect data-type="rect" data-label="netId: VCC_3V3
4
6
  globalConnNetId: connectivity_net1" data-x="11.614999999999998" data-y="12.91" x="269.1282872780669" y="296.07796021892915" width="71.76611934321193" height="31.397677212655367" fill="#ef444466" stroke="#ef4444" stroke-width="0.01337678571428571"/></g><g><rect data-type="rect" data-label="netId: FAULT
@@ -52,7 +54,7 @@ orientation: x+" data-x="14.84" data-y="10" cx="546.1006541182754" cy="529.31784
52
54
  const h = svg.getElementById('crosshair-h');
53
55
  const v = svg.getElementById('crosshair-v');
54
56
  const coords = svg.getElementById('coordinates');
55
-
57
+
56
58
  crosshair.style.display = 'block';
57
59
  h.setAttribute('x1', '0');
58
60
  h.setAttribute('x2', '640');
@@ -71,13 +73,13 @@ orientation: x+" data-x="14.84" data-y="10" cx="546.1006541182754" cy="529.31784
71
73
  // y' = (y - ty) / sy
72
74
  const sx = matrix.a;
73
75
  const sy = matrix.d;
74
- const tx = matrix.e;
76
+ const tx = matrix.e;
75
77
  const ty = matrix.f;
76
78
  const realPoint = {
77
79
  x: (x - tx) / sx,
78
80
  y: (y - ty) / sy // Flip y back since we used negative scale
79
81
  }
80
-
82
+
81
83
  coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
82
84
  coords.setAttribute('x', (x + 5).toString());
83
85
  coords.setAttribute('y', (y - 5).toString());
@@ -85,4 +87,55 @@ orientation: x+" data-x="14.84" data-y="10" cx="546.1006541182754" cy="529.31784
85
87
  document.currentScript.parentElement.addEventListener('mouseleave', () => {
86
88
  document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
87
89
  });
88
- ]]></script></svg>
90
+ ]]></script>
91
+ </g>
92
+ <g transform="translate(1216, 200)">
93
+ <style>
94
+ .boundary { fill: rgb(245, 241, 237); }
95
+ .schematic-boundary { fill: none; stroke: #fff; }
96
+ .component { fill: none; stroke: rgb(132, 0, 0); }
97
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
98
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
99
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
100
+ .pin-number { fill: rgb(169, 0, 0); }
101
+ .port-label { fill: rgb(0, 100, 100); }
102
+ .component-name { fill: rgb(0, 100, 100); }
103
+
104
+ </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 294.30148619975 177.32484076405012 L 263.7282377921001 177.32484076405012 L 263.7282377921001 136.56050955385012 L 294.30148619975 136.56050955385012" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="16.30573248408px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 294.30148619975 177.32484076405012 L 263.7282377921001 177.32484076405012 L 263.7282377921001 136.56050955385012 L 294.30148619975 136.56050955385012" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.03821656051px" 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 294.30148619975 197.70700636915012 L 284.1104033972001 197.70700636915012 L 284.1104033972001 156.94267515895012 L 294.30148619975 156.94267515895012" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="16.30573248408px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 294.30148619975 197.70700636915012 L 284.1104033972001 197.70700636915012 L 284.1104033972001 156.94267515895012 L 294.30148619975 156.94267515895012" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.03821656051px" 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 518.50530785585 381.1464968150501 L 623.473460722115 381.1464968150501 L 623.473460722115 656.3057324839001 L 728.4416135883799 656.3057324839001" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="16.30573248408px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 518.50530785585 381.1464968150501 L 623.473460722115 381.1464968150501 L 623.473460722115 656.3057324839001 L 728.4416135883799 656.3057324839001" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.03821656051px" 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 263.7282377921001 177.32484076405012 L 234.17409766470507 177.32484076405012 L 234.17409766470507 177.42675159207556" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="16.30573248408px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 263.7282377921001 177.32484076405012 L 234.17409766470507 177.32484076405012 L 234.17409766470507 177.42675159207556" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.03821656051px" 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 518.50530785585 319.9999999997501 L 644.9766454354955 319.9999999997501 L 644.9766454354955 325.19745222905067" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="16.30573248408px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 518.50530785585 319.9999999997501 L 644.9766454354955 319.9999999997501 L 644.9766454354955 325.19745222905067" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.03821656051px" 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="263.7282377921001" cy="177.32484076405012" r="3.0573248407649998" 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="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="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="335.0658174099501" y="75.41401273855013" width="142.67515923569988" height="346.4968152867" stroke-width="2.03821656051px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="335.0658174099501" y="75.41401273855013" width="142.67515923569988" height="346.4968152867" fill="transparent"/><text class="sch-text" x="406.4033970278" y="248.66242038190012" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="18.343949044589998px" transform="rotate(0, 406.4033970278, 248.66242038190012)">U_MCU</text><line class="component-pin sch-component-pin sch-port-line" x1="335.0658174099501" y1="95.79617834365013" x2="296.33970276026" y2="95.79617834365013" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_0__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="294.30148619975" cy="95.79617834365013" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="292.26326963924" y="93.75796178314013" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="314.68365180485" y="93.75796178314022" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="335.0658174099501" y1="116.17834394875013" x2="296.33970276026" y2="116.17834394875013" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_1__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="294.30148619975" cy="116.17834394875013" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="292.26326963924" y="114.14012738824013" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="314.68365180485" y="114.14012738823999" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="335.0658174099501" y1="136.56050955385012" x2="294.30148619975" y2="136.56050955385012" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_2__stack1"><rect x="292.26326963924" y="134.52229299334013" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="314.68365180485" y="134.52229299334022" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="335.0658174099501" y1="156.94267515895012" x2="294.30148619975" y2="156.94267515895012" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_3__stack1"><rect x="292.26326963924" y="154.90445859844013" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="314.68365180485" y="154.90445859844021" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">4</text><line class="component-pin sch-component-pin sch-port-line" x1="335.0658174099501" y1="177.32484076405012" x2="294.30148619975" y2="177.32484076405012" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_4__stack1"><rect x="292.26326963924" y="175.28662420354013" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="314.68365180485" y="175.2866242035402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">5</text><line class="component-pin sch-component-pin sch-port-line" x1="335.0658174099501" y1="197.70700636915012" x2="294.30148619975" y2="197.70700636915012" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_5__stack1"><rect x="292.26326963924" y="195.66878980864013" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="314.68365180485" y="195.6687898086402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">6</text><line class="component-pin sch-component-pin sch-port-line" x1="335.0658174099501" y1="218.08917197425012" x2="296.33970276026" y2="218.08917197425012" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_6__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="294.30148619975" cy="218.08917197425012" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="292.26326963924" y="216.05095541374013" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="314.68365180485" y="216.05095541373998" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">7</text><line class="component-pin sch-component-pin sch-port-line" x1="335.0658174099501" y1="238.47133757935012" x2="296.33970276026" y2="238.47133757935012" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_7__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="294.30148619975" cy="238.47133757935012" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="292.26326963924" y="236.43312101884013" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="314.68365180485" y="236.4331210188402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">8</text><line class="component-pin sch-component-pin sch-port-line" x1="335.0658174099501" y1="258.8535031844501" x2="296.33970276026" y2="258.8535031844501" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_8__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="294.30148619975" cy="258.8535031844501" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="292.26326963924" y="256.8152866239401" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="314.68365180485" y="256.8152866239402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">9</text><line class="component-pin sch-component-pin sch-port-line" x1="335.0658174099501" y1="279.2356687895501" x2="296.33970276026" y2="279.2356687895501" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_9__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="294.30148619975" cy="279.2356687895501" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="292.26326963924" y="277.1974522290401" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="314.68365180485" y="277.19745222904" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">10</text><line class="component-pin sch-component-pin sch-port-line" x1="335.0658174099501" y1="299.6178343946501" x2="296.33970276026" y2="299.6178343946501" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_10__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="294.30148619975" cy="299.6178343946501" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="292.26326963924" y="297.5796178341401" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="314.68365180485" y="297.5796178341402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">11</text><line class="component-pin sch-component-pin sch-port-line" x1="335.0658174099501" y1="319.9999999997501" x2="296.33970276026" y2="319.9999999997501" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_11__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="294.30148619975" cy="319.9999999997501" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="292.26326963924" y="317.9617834392401" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="314.68365180485" y="317.96178343924" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">12</text><line class="component-pin sch-component-pin sch-port-line" x1="335.0658174099501" y1="340.3821656048501" x2="296.33970276026" y2="340.3821656048501" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_12__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="294.30148619975" cy="340.3821656048501" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="292.26326963924" y="338.3439490443401" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="314.68365180485" y="338.3439490443402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">13</text><line class="component-pin sch-component-pin sch-port-line" x1="335.0658174099501" y1="360.7643312099501" x2="296.33970276026" y2="360.7643312099501" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_13__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="294.30148619975" cy="360.7643312099501" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="292.26326963924" y="358.7261146494401" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="314.68365180485" y="358.7261146494402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">14</text><line class="component-pin sch-component-pin sch-port-line" x1="335.0658174099501" y1="381.1464968150501" x2="296.33970276026" y2="381.1464968150501" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_14__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="294.30148619975" cy="381.1464968150501" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="292.26326963924" y="379.1082802545401" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="314.68365180485" y="379.1082802545402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">15</text><line class="component-pin sch-component-pin sch-port-line" x1="335.0658174099501" y1="401.5286624201501" x2="296.33970276026" y2="401.5286624201501" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_15__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="294.30148619975" cy="401.5286624201501" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="292.26326963924" y="399.4904458596401" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="314.68365180485" y="399.4904458596402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">16</text><line class="component-pin sch-component-pin sch-port-line" x1="477.74097664565" y1="401.5286624201501" x2="516.4670912953401" y2="401.5286624201501" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_16__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="518.50530785585" cy="401.5286624201501" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="516.46709129534" y="399.4904458596401" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.12314225075" y="399.4904458596402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">17</text><line class="component-pin sch-component-pin sch-port-line" x1="477.74097664565" y1="381.1464968150501" x2="518.50530785585" y2="381.1464968150501" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_17__stack1"><rect x="516.46709129534" y="379.1082802545401" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.12314225075" y="379.1082802545402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">18</text><line class="component-pin sch-component-pin sch-port-line" x1="477.74097664565" y1="360.7643312099501" x2="516.4670912953401" y2="360.7643312099501" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_18__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="518.50530785585" cy="360.7643312099501" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="516.46709129534" y="358.7261146494401" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.12314225075" y="358.7261146494402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">19</text><line class="component-pin sch-component-pin sch-port-line" x1="477.74097664565" y1="340.3821656048501" x2="516.4670912953401" y2="340.3821656048501" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_19__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="518.50530785585" cy="340.3821656048501" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="516.46709129534" y="338.3439490443401" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.12314225075" y="338.3439490443402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">20</text><line class="component-pin sch-component-pin sch-port-line" x1="477.74097664565" y1="319.9999999997501" x2="518.50530785585" y2="319.9999999997501" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_20__stack1"><rect x="516.46709129534" y="317.9617834392401" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.12314225075" y="317.96178343924" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">21</text><line class="component-pin sch-component-pin sch-port-line" x1="477.74097664565" y1="299.6178343946501" x2="516.4670912953401" y2="299.6178343946501" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_21__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="518.50530785585" cy="299.6178343946501" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="516.46709129534" y="297.5796178341401" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.12314225075" y="297.5796178341402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">22</text><line class="component-pin sch-component-pin sch-port-line" x1="477.74097664565" y1="279.2356687895501" x2="516.4670912953401" y2="279.2356687895501" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_22__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="518.50530785585" cy="279.2356687895501" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="516.46709129534" y="277.1974522290401" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.12314225075" y="277.1974522290402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">23</text><line class="component-pin sch-component-pin sch-port-line" x1="477.74097664565" y1="258.8535031844501" x2="516.4670912953401" y2="258.8535031844501" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_23__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="518.50530785585" cy="258.8535031844501" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="516.46709129534" y="256.8152866239401" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.12314225075" y="256.8152866239402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">24</text><line class="component-pin sch-component-pin sch-port-line" x1="477.74097664565" y1="238.47133757935012" x2="516.4670912953401" y2="238.47133757935012" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_24__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="518.50530785585" cy="238.47133757935012" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="516.46709129534" y="236.43312101884013" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.12314225075" y="236.4331210188402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">25</text><line class="component-pin sch-component-pin sch-port-line" x1="477.74097664565" y1="218.08917197425012" x2="516.4670912953401" y2="218.08917197425012" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_25__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="518.50530785585" cy="218.08917197425012" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="516.46709129534" y="216.05095541374013" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.12314225075" y="216.0509554137402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">26</text><line class="component-pin sch-component-pin sch-port-line" x1="477.74097664565" y1="197.70700636915012" x2="516.4670912953401" y2="197.70700636915012" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_26__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="518.50530785585" cy="197.70700636915012" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="516.46709129534" y="195.66878980864013" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.12314225075" y="195.6687898086402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">27</text><line class="component-pin sch-component-pin sch-port-line" x1="477.74097664565" y1="177.32484076405012" x2="516.4670912953401" y2="177.32484076405012" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_27__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="518.50530785585" cy="177.32484076405012" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="516.46709129534" y="175.28662420354013" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.12314225075" y="175.2866242035402" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">28</text><line class="component-pin sch-component-pin sch-port-line" x1="477.74097664565" y1="156.94267515895012" x2="516.4670912953401" y2="156.94267515895012" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_28__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="518.50530785585" cy="156.94267515895012" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="516.46709129534" y="154.90445859844013" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.12314225075" y="154.90445859844021" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">29</text><line class="component-pin sch-component-pin sch-port-line" x1="477.74097664565" y1="136.56050955385012" x2="516.4670912953401" y2="136.56050955385012" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_29__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="518.50530785585" cy="136.56050955385012" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="516.46709129534" y="134.52229299334013" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.12314225075" y="134.52229299334022" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">30</text><line class="component-pin sch-component-pin sch-port-line" x1="477.74097664565" y1="116.17834394875013" x2="516.4670912953401" y2="116.17834394875013" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_30__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="518.50530785585" cy="116.17834394875013" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="516.46709129534" y="114.14012738824013" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.12314225075" y="114.14012738823999" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">31</text><line class="component-pin sch-component-pin sch-port-line" x1="477.74097664565" y1="95.79617834365013" x2="516.4670912953401" y2="95.79617834365013" stroke-width="2.03821656051px"/><g class="sch-port" data-schematic-port-id="source_port_0_31__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="518.50530785585" cy="95.79617834365013" r="2.03821656051" stroke-width="2.03821656051px"/><rect x="516.46709129534" y="93.75796178314013" width="4.07643312102" height="4.07643312102" opacity="0"/></g><text class="pin-number sch-pin-number" x="498.12314225075" y="93.75796178314022" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="15.286624203825px" transform="">32</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="728.4416135883799" y="633.4834140125575" width="171.21019108284008" height="45.64463694268511" fill="transparent"/><path class="sch-component-symbol-path" d="M 728.4416135883799 656.3057324839001 L 756.9823524418894 656.3057324839001" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.03821656051px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 871.1110658177106 656.3057324839001 L 899.65180467122 656.3057324839001" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.03821656051px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 756.9823524418894 633.4834140125575 L 871.1110658177106 633.4834140125575 L 871.1110658177106 679.1280509552427 L 756.9823524418894 679.1280509552427 L 756.9823524418894 633.4834140125575" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.03821656051px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="814.0467091298" y="610.6496815284761" stroke="rgb(245, 241, 237)" stroke-width="2.03821656051px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="ideographic" font-size="18.343949044589998px">R_FAULT_PULLUP</text><text class="sch-component-text" x="814.0467091298" y="701.9617834393241" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="18.343949044589998px"></text><circle class="component-pin sch-component-pin" cx="899.65180467122" cy="656.3057324839001" r="2.03821656051px" stroke-width="2.03821656051px" 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="294.30148619975" cy="95.79617834365013" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="294.30148619975" cy="116.17834394875013" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_2__stack1"><circle cx="294.30148619975" cy="136.56050955385012" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_3__stack1"><circle cx="294.30148619975" cy="156.94267515895012" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_4__stack1"><circle cx="294.30148619975" cy="177.32484076405012" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_5__stack1"><circle cx="294.30148619975" cy="197.70700636915012" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_6__stack1"><circle cx="294.30148619975" cy="218.08917197425012" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_7__stack1"><circle cx="294.30148619975" cy="238.47133757935012" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_8__stack1"><circle cx="294.30148619975" cy="258.8535031844501" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_9__stack1"><circle cx="294.30148619975" cy="279.2356687895501" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_10__stack1"><circle cx="294.30148619975" cy="299.6178343946501" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_11__stack1"><circle cx="294.30148619975" cy="319.9999999997501" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_12__stack1"><circle cx="294.30148619975" cy="340.3821656048501" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_13__stack1"><circle cx="294.30148619975" cy="360.7643312099501" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_14__stack1"><circle cx="294.30148619975" cy="381.1464968150501" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_15__stack1"><circle cx="294.30148619975" cy="401.5286624201501" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_16__stack1"><circle cx="518.50530785585" cy="401.5286624201501" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_17__stack1"><circle cx="518.50530785585" cy="381.1464968150501" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_18__stack1"><circle cx="518.50530785585" cy="360.7643312099501" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_19__stack1"><circle cx="518.50530785585" cy="340.3821656048501" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_20__stack1"><circle cx="518.50530785585" cy="319.9999999997501" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_21__stack1"><circle cx="518.50530785585" cy="299.6178343946501" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_22__stack1"><circle cx="518.50530785585" cy="279.2356687895501" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_23__stack1"><circle cx="518.50530785585" cy="258.8535031844501" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_24__stack1"><circle cx="518.50530785585" cy="238.47133757935012" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_25__stack1"><circle cx="518.50530785585" cy="218.08917197425012" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_26__stack1"><circle cx="518.50530785585" cy="197.70700636915012" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_27__stack1"><circle cx="518.50530785585" cy="177.32484076405012" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_28__stack1"><circle cx="518.50530785585" cy="156.94267515895012" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_29__stack1"><circle cx="518.50530785585" cy="136.56050955385012" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_30__stack1"><circle cx="518.50530785585" cy="116.17834394875013" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_31__stack1"><circle cx="518.50530785585" cy="95.79617834365013" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="783.47346072215" cy="656.3057324839001" r="4.07643312102" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_1__stack1"><circle cx="954.6836518049898" cy="656.3057324839001" r="4.07643312102" 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="
105
+ M 234.17409766470507,177.42675159207556
106
+ L 244.36518046725507,182.92993630545257
107
+ L 244.36518046725507,217.87855626299736
108
+ L 223.98301486215507,217.87855626299736
109
+ L 223.98301486215507,182.92993630545257
110
+ Z
111
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.03821656051px"/><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="234.17409766470507" y="186.59872611437055" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="18.343949044589998px" transform="rotate(90 234.17409766470507 186.59872611437055)">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="
112
+ M 644.9766454354955,325.19745222905067
113
+ L 655.1677282380455,330.70063694242765
114
+ L 655.1677282380455,365.64925689997244
115
+ L 634.7855626329455,365.64925689997244
116
+ L 634.7855626329455,330.70063694242765
117
+ Z
118
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.03821656051px"/><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="644.9766454354955" y="334.36942675134566" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="18.343949044589998px" transform="rotate(90 644.9766454354955 334.36942675134566)">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="
119
+ M 570.9893842889823,381.1464968150501
120
+ L 560.7983014864323,375.64331210167313
121
+ L 560.7983014864323,340.69469214412834
122
+ L 581.1804670915323,340.69469214412834
123
+ L 581.1804670915323,375.64331210167313
124
+ Z
125
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.03821656051px"/><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="570.9893842889823" y="371.9745222927551" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="18.343949044589998px" transform="rotate(-90 570.9893842889823 371.9745222927551)">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="
126
+ M 518.50530785585,95.79617834365013
127
+ L 524.008492569227,85.60509554110013
128
+ L 594.870488322958,85.60509554110013
129
+ L 594.870488322958,105.98726114620013
130
+ L 524.008492569227,105.98726114620013
131
+ Z
132
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.03821656051px"/><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="527.677282378145" y="95.79617834365013" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="18.343949044589998px" transform="">XXXXX</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="
133
+ M 899.65180467122,656.3057324839001
134
+ L 905.154989384597,646.1146496813501
135
+ L 976.016985138328,646.1146496813501
136
+ L 976.016985138328,666.4968152864501
137
+ L 905.154989384597,666.4968152864501
138
+ Z
139
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.03821656051px"/><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="908.8237791935151" y="656.3057324839001" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="18.343949044589998px" transform="">XXXXX</text><text class="sch-text" x="414.5562632698401" y="435.1592356685651" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="18.34394904458997px" transform="rotate(0, 414.5562632698401, 435.1592356685651)">ATMEGA328P_AU</text><text class="sch-text" x="365.6390658176001" y="63.69426751561764" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="18.343949044589998px" transform="rotate(0, 365.6390658176001, 63.69426751561764)">U_MCU</text><rect class="schematic-box sch-box" x="335.0658174099501" y="425.98726114627016" width="158.98089171978006" height="18.343949044589863" stroke-width="2.03821656051px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="16.30573248408 8.15286624204"/><rect class="schematic-box sch-box" x="328.95116772842016" y="50.95541401243008" width="73.37579617836013" height="25.477707006375113" stroke-width="2.03821656051px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="16.30573248408 8.15286624204"/>
140
+ </g>
141
+ </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="1.7999999999999998,-0.32499999999999996 2.25,-0.9" data-type="line" data-label="" points="445.37313432835816,320.9286898839137 487.16417910447757,374.3283582089552" fill="none" stroke="hsl(112, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="1.7999999999999998,-0.975 2.25,-2.6500000000000004" data-type="line" data-label="" points="445.37313432835816,381.2935323383084 487.16417910447757,536.849087893864" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.7999999999999998,-0.32499999999999996 1.9902723250000003,-0.32499999999999996 1.9902723250000003,-1.1 2.25,-1.1 2.25,-0.9" data-type="line" data-label="" points="445.37313432835816,320.9286898839137 463.0435326699834,320.9286898839137 463.0435326699834,392.9021558872305 487.16417910447757,392.9021558872305 487.16417910447757,374.3283582089552" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.7999999999999998,-0.975 1.9249999999999998,-0.975 1.9249999999999998,-2.8500000000000005 2.25,-2.8500000000000005 2.25,-2.6500000000000004" data-type="line" data-label="" points="445.37313432835816,381.2935323383084 456.9817578772802,381.2935323383084 456.9817578772802,555.4228855721392 487.16417910447757,555.4228855721392 487.16417910447757,536.849087893864" 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="111.04477611940302" y="40" width="334.32835820895514" height="501.49253731343276" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010767857142857145"/></g><g><rect data-type="rect" data-label="schematic_component_4" data-x="2.25" data-y="-0.35" x="472.33043150912107" y="272.1724709784411" width="29.667495190712998" height="102.15588723051411" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010767857142857145"/></g><g><rect data-type="rect" data-label="schematic_component_5" data-x="2.25" data-y="-2.1" x="472.33043150912107" y="434.6932006633499" width="29.667495190712998" height="102.15588723051405" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010767857142857145"/></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="1.7999999999999998,-0.32499999999999996 2.25,-0.9" data-type="line" data-label="" points="445.37313432835816,320.9286898839137 487.16417910447757,374.3283582089552" fill="none" stroke="hsl(112, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="1.7999999999999998,-0.975 2.25,-2.6500000000000004" data-type="line" data-label="" points="445.37313432835816,381.2935323383084 487.16417910447757,536.849087893864" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.7999999999999998,-0.32499999999999996 1.9902723250000003,-0.32499999999999996 1.9902723250000003,-1.1 2.25,-1.1 2.25,-0.9" data-type="line" data-label="" points="445.37313432835816,320.9286898839137 463.0435326699834,320.9286898839137 463.0435326699834,392.9021558872305 487.16417910447757,392.9021558872305 487.16417910447757,374.3283582089552" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.7999999999999998,-0.975 1.9249999999999998,-0.975 1.9249999999999998,-2.8500000000000005 2.25,-2.8500000000000005 2.25,-2.6500000000000004" data-type="line" data-label="" points="445.37313432835816,381.2935323383084 456.9817578772802,381.2935323383084 456.9817578772802,555.4228855721392 487.16417910447757,555.4228855721392 487.16417910447757,536.849087893864" 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="111.04477611940302" y="40" width="334.32835820895514" height="501.49253731343276" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010767857142857145"/></g><g><rect data-type="rect" data-label="schematic_component_4" data-x="2.25" data-y="-0.35" x="472.33043150912107" y="272.1724709784411" width="29.667495190712998" height="102.15588723051411" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010767857142857145"/></g><g><rect data-type="rect" data-label="schematic_component_5" data-x="2.25" data-y="-2.1" x="472.33043150912107" y="434.6932006633499" width="29.667495190712998" height="102.15588723051405" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010767857142857145"/></g><g><rect data-type="rect" data-label="netId: GND
2
4
  globalConnNetId: connectivity_net1" data-x="2.25" data-y="-3.0900000000000007" x="477.8772802653399" y="555.4228855721393" width="18.573797678275355" height="44.577114427860806" fill="#00000066" stroke="#000000" stroke-width="0.010767857142857145"/></g><g><rect data-type="rect" data-label="netId: U1.FB to R1.pin2
3
5
  globalConnNetId: connectivity_net0" data-x="2.475" data-y="-1.1" x="487.1641791044775" y="383.6152570480929" width="41.79104477611946" height="18.573797678275298" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.010767857142857145"/></g><g><circle data-type="point" data-label="U1.3
4
6
  x+" data-x="1.7999999999999998" data-y="-0.975" cx="445.37313432835816" cy="381.2935323383084" r="3" fill="hsl(321, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U1.4
@@ -16,7 +18,7 @@ orientation: x+" data-x="2.25" data-y="-1.1" cx="487.16417910447757" cy="392.902
16
18
  const h = svg.getElementById('crosshair-h');
17
19
  const v = svg.getElementById('crosshair-v');
18
20
  const coords = svg.getElementById('coordinates');
19
-
21
+
20
22
  crosshair.style.display = 'block';
21
23
  h.setAttribute('x1', '0');
22
24
  h.setAttribute('x2', '640');
@@ -35,13 +37,13 @@ orientation: x+" data-x="2.25" data-y="-1.1" cx="487.16417910447757" cy="392.902
35
37
  // y' = (y - ty) / sy
36
38
  const sx = matrix.a;
37
39
  const sy = matrix.d;
38
- const tx = matrix.e;
40
+ const tx = matrix.e;
39
41
  const ty = matrix.f;
40
42
  const realPoint = {
41
43
  x: (x - tx) / sx,
42
44
  y: (y - ty) / sy // Flip y back since we used negative scale
43
45
  }
44
-
46
+
45
47
  coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
46
48
  coords.setAttribute('x', (x + 5).toString());
47
49
  coords.setAttribute('y', (y - 5).toString());
@@ -49,4 +51,34 @@ orientation: x+" data-x="2.25" data-y="-1.1" cx="487.16417910447757" cy="392.902
49
51
  document.currentScript.parentElement.addEventListener('mouseleave', () => {
50
52
  document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
51
53
  });
52
- ]]></script></svg>
54
+ ]]></script>
55
+ </g>
56
+ <g transform="translate(1216, 200)">
57
+ <style>
58
+ .boundary { fill: rgb(245, 241, 237); }
59
+ .schematic-boundary { fill: none; stroke: #fff; }
60
+ .component { fill: none; stroke: rgb(132, 0, 0); }
61
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
62
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
63
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
64
+ .pin-number { fill: rgb(169, 0, 0); }
65
+ .port-label { fill: rgb(0, 100, 100); }
66
+ .component-name { fill: rgb(0, 100, 100); }
67
+
68
+ </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 733.2351886454 399.1846441311375 L 754.7823632108267 399.1846441311375 L 754.7823632108267 486.94864390465 L 784.194930449375 486.94864390465 L 784.194930449375 464.29986976955" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="18.119019308080002px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 733.2351886454 399.1846441311375 L 754.7823632108267 399.1846441311375 L 754.7823632108267 486.94864390465 L 784.194930449375 486.94864390465 L 784.194930449375 464.29986976955" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.2648774135100003px" 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 733.2351886454 472.7931600702125 L 747.3906724798375 472.7931600702125 L 747.3906724798375 685.125417586775 L 784.194930449375 685.125417586775 L 784.194930449375 662.476643451675" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="18.119019308080002px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 733.2351886454 472.7931600702125 L 747.3906724798375 472.7931600702125 L 747.3906724798375 685.125417586775 L 784.194930449375 685.125417586775 L 784.194930449375 662.476643451675" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.2648774135100003px" 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 chip sch-component-body" x="370.8548024838" y="56.62193533774996" width="317.0828378914" height="611.5169016477" stroke-width="2.2648774135100003px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="370.8548024838" y="56.62193533774996" width="317.0828378914" height="611.5169016477" fill="transparent"/><text class="sch-text" x="529.3962214295" y="362.3803861616" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="20.383896721590002px" transform="rotate(0, 529.3962214295, 362.3803861616)">U1</text><line class="component-pin sch-component-pin sch-port-line" x1="687.9376403752" y1="472.7931600702125" x2="733.2351886454" y2="472.7931600702125" stroke-width="2.2648774135100003px"/><g class="sch-port" data-schematic-port-id="source_port_0_0__stack1"><rect x="730.9703112318899" y="470.52828265670246" width="4.5297548270200005" height="4.5297548270200005" opacity="0"/></g><text class="pin-number sch-pin-number" x="710.5864145103" y="470.52828265670246" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="16.986580601325px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="687.9376403752" y1="399.1846441311375" x2="733.2351886454" y2="399.1846441311375" stroke-width="2.2648774135100003px"/><g class="sch-port" data-schematic-port-id="source_port_0_1__stack1"><rect x="730.9703112318899" y="396.91976671762745" width="4.5297548270200005" height="4.5297548270200005" opacity="0"/></g><text class="pin-number sch-pin-number" x="710.5864145103" y="396.91976671762745" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="16.986580601325px" transform="">4</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="766.1067502783767" y="385.02916029669996" width="36.17636034199654" height="33.97316120265003" stroke-width="2.2648774135100003px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="766.1067502783767" y="385.02916029669996" width="36.17636034199654" height="33.97316120265003" fill="transparent"/><text class="sch-text" x="784.194930449375" y="402.015740898025" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="20.383896721590002px" transform="rotate(0, 784.194930449375, 402.015740898025)">R1</text><line class="component-pin sch-component-pin sch-port-line" x1="784.194930449375" y1="419.00232149935" x2="784.194930449375" y2="464.29986976955" stroke-width="2.2648774135100003px"/><g class="sch-port" data-schematic-port-id="source_port_1_0__stack1"><rect x="781.930053035865" y="462.03499235604" width="4.5297548270200005" height="4.5297548270200005" opacity="0"/></g><text class="pin-number sch-pin-number" x="781.930053035865" y="441.65109563445" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="16.986580601325px" transform="rotate(-90 781.930053035865 441.65109563445)">2</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_2__stack1"><rect class="component chip sch-component-body" x="766.1067502783767" y="583.205933978825" width="36.17636034199654" height="33.973161202649976" stroke-width="2.2648774135100003px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="766.1067502783767" y="583.205933978825" width="36.17636034199654" height="33.973161202649976" fill="transparent"/><text class="sch-text" x="784.194930449375" y="600.19251458015" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="20.383896721590002px" transform="rotate(0, 784.194930449375, 600.19251458015)">R2</text><line class="component-pin sch-component-pin sch-port-line" x1="784.194930449375" y1="617.1790951814751" x2="784.194930449375" y2="662.476643451675" stroke-width="2.2648774135100003px"/><g class="sch-port" data-schematic-port-id="source_port_2_0__stack1"><rect x="781.930053035865" y="660.211766038165" width="4.5297548270200005" height="4.5297548270200005" opacity="0"/></g><text class="pin-number sch-pin-number" x="781.930053035865" y="639.8278693165751" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="16.986580601325px" transform="rotate(-90 781.930053035865 639.8278693165751)">2</text></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="733.2351886454" cy="472.7931600702125" r="4.5297548270200005" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="733.2351886454" cy="399.1846441311375" r="4.5297548270200005" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="784.194930449375" cy="464.29986976955" r="4.5297548270200005" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_0__stack1"><circle cx="784.194930449375" cy="662.476643451675" r="4.5297548270200005" 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="
69
+ M 784.194930449375,685.125417586775
70
+ L 795.519317516925,691.240586603252
71
+ L 795.519317516925,743.3780646622522
72
+ L 772.870543381825,743.3780646622522
73
+ L 772.870543381825,691.240586603252
74
+ Z
75
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.2648774135100003px"/><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="784.194930449375" y="695.31736594757" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="20.383896721590002px" transform="rotate(90 784.194930449375 695.31736594757)">XXX</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="
76
+ M 784.194930449375,486.94864390465
77
+ L 790.310099465852,475.6242568371
78
+ L 829.1451975161701,475.6242568371
79
+ L 829.1451975161701,498.2730309722
80
+ L 790.310099465852,498.2730309722
81
+ Z
82
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.2648774135100003px"/><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="794.38687881017" y="486.94864390465" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="20.383896721590002px" transform="">XX</text>
83
+ </g>
84
+ </svg>