@tscircuit/schematic-trace-solver 0.0.112 → 0.0.114

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 (22) hide show
  1. package/dist/index.d.ts +10 -0
  2. package/dist/index.js +128 -10
  3. package/lib/solvers/LongDistancePairSolver/LongDistancePairSolver.ts +55 -1
  4. package/lib/solvers/MspConnectionPairSolver/MspConnectionPairSolver.ts +13 -4
  5. package/lib/solvers/MspConnectionPairSolver/isLabeledPeripheralConnection.ts +44 -0
  6. package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +30 -3
  7. package/lib/solvers/TraceOverlapShiftSolver/TraceOverlapIssueSolver/TraceOverlapIssueSolver.ts +11 -1
  8. package/lib/solvers/TraceOverlapShiftSolver/TraceOverlapShiftSolver.ts +12 -0
  9. package/package.json +1 -1
  10. package/site/bug-reports/bug-report-20260728T144234Z.page.tsx +4 -0
  11. package/site/bug-reports/bug-report-20260728T225606Z.page.tsx +4 -0
  12. package/tests/bug-reports/bug-report-20260707T092615Z/__snapshots__/bug-report-20260707T092615Z.snap.svg +1 -1
  13. package/tests/bug-reports/bug-report-20260728T144234Z/__snapshots__/bug-report-20260728T144234Z.snap.svg +108 -0
  14. package/tests/bug-reports/bug-report-20260728T144234Z/bug-report-20260728T144234Z.json +518 -0
  15. package/tests/bug-reports/bug-report-20260728T144234Z/bug-report-20260728T144234Z.test.ts +12 -0
  16. package/tests/bug-reports/bug-report-20260728T225606Z/__snapshots__/bug-report-20260728T225606Z.snap.svg +131 -0
  17. package/tests/bug-reports/bug-report-20260728T225606Z/bug-report-20260728T225606Z.json +1127 -0
  18. package/tests/bug-reports/bug-report-20260728T225606Z/bug-report-20260728T225606Z.test.ts +35 -0
  19. package/tests/repros/__snapshots__/repro-atmega328p-missing-gnd-netlabel.snap.svg +1 -1
  20. package/tests/repros/__snapshots__/repro-rp2040-usb-cc2-ground-overlap.snap.svg +70 -0
  21. package/tests/repros/assets/repro-rp2040-usb-cc2-ground-overlap.input.json +164 -0
  22. package/tests/repros/repro-rp2040-usb-cc2-ground-overlap.test.ts +95 -0
@@ -0,0 +1,131 @@
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.1800000000000002,2.000000000000001 -2.9699999999999998,4.3" data-type="line" data-label="" points="278.6468919877098,243.23327818482625 160.18789884188138,91.02339872370601" fill="none" stroke="hsl(104, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-1.1800000000000002,2.000000000000001 -2.67,3.3800000000000003" data-type="line" data-label="" points="278.6468919877098,243.23327818482625 180.04136138028838,151.90735050815408" fill="none" stroke="hsl(104, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="2.02,-2.1000000000000005 2.1399999999999997,-2.6199999999999997" data-type="line" data-label="" points="490.41715906405113,514.5639328763887 498.3585440794139,548.9766012762941" fill="none" stroke="hsl(136, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-1.1800000000000002,1.8000000000000007 -4.1425,3.000000000000001" data-type="line" data-label="" points="278.6468919877098,256.4689198770976 82.5939494209407,177.0550697234696" fill="none" stroke="hsl(168, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-1.1800000000000002,1.6000000000000008 -4.1425,2.200000000000002" data-type="line" data-label="" points="278.6468919877098,269.70456156936893 82.5939494209407,229.99763649255485" fill="none" stroke="hsl(112, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-1.1800000000000002,1.4000000000000008 -4.1425,1.4000000000000015" data-type="line" data-label="" points="278.6468919877098,282.94020326164025 82.5939494209407,282.9402032616402" fill="none" stroke="hsl(248, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-1.1800000000000002,1.2000000000000008 -4.1425,0.6000000000000012" data-type="line" data-label="" points="278.6468919877098,296.17584495391156 82.5939494209407,335.88277003072557" fill="none" stroke="hsl(272, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-1.1800000000000002,1.0000000000000009 -4.1425,-0.1999999999999991" data-type="line" data-label="" points="278.6468919877098,309.4114866461829 82.5939494209407,388.8253367998109" fill="none" stroke="hsl(104, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-1.1800000000000002,-2.0000000000000004 -1.7425000000000002,-2.0000000000000004" data-type="line" data-label="" points="278.6468919877098,507.94611203025295 241.42164972819666,507.94611203025295" fill="none" stroke="hsl(88, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-1.1800000000000002,2.400000000000001 2.02,0.49999999999999956" data-type="line" data-label="" points="278.6468919877098,216.7619948002836 490.41715906405113,342.50059087686134" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.1800000000000002,2.400000000000001 2.02,0.6999999999999997" data-type="line" data-label="" points="278.6468919877098,216.7619948002836 490.41715906405113,329.26494918458997" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.1800000000000002,2.400000000000001 -2.67,2.6199999999999997" data-type="line" data-label="" points="278.6468919877098,216.7619948002836 180.04136138028838,202.2027889387852" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.1800000000000002,2.400000000000001 3.08,-2.6199999999999997" data-type="line" data-label="" points="278.6468919877098,216.7619948002836 560.5660600330891,548.9766012762941" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="2.02,0.49999999999999956 2.02,0.6999999999999997" data-type="line" data-label="" points="490.41715906405113,342.50059087686134 490.41715906405113,329.26494918458997" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="2.02,0.49999999999999956 -2.67,2.6199999999999997" data-type="line" data-label="" points="490.41715906405113,342.50059087686134 180.04136138028838,202.2027889387852" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="2.02,0.49999999999999956 3.08,-2.6199999999999997" data-type="line" data-label="" points="490.41715906405113,342.50059087686134 560.5660600330891,548.9766012762941" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="2.02,0.6999999999999997 -2.67,2.6199999999999997" data-type="line" data-label="" points="490.41715906405113,329.26494918458997 180.04136138028838,202.2027889387852" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="2.02,0.6999999999999997 3.08,-2.6199999999999997" data-type="line" data-label="" points="490.41715906405113,329.26494918458997 560.5660600330891,548.9766012762941" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-2.67,2.6199999999999997 3.08,-2.6199999999999997" data-type="line" data-label="" points="180.04136138028838,202.2027889387852 560.5660600330891,548.9766012762941" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.1800000000000002,2.2000000000000006 -2.37,4.3" data-type="line" data-label="" points="278.6468919877098,229.99763649255493 199.89482391869535,91.02339872370601" fill="none" stroke="hsl(154, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-2.67,3.3800000000000003 -2.67,3.84 -3.17,3.84 -3.17,4.3 -2.9699999999999998,4.3" data-type="line" data-label="" points="180.04136138028838,151.90735050815408 180.04136138028838,121.46537461593005 146.95225714961003,121.46537461593005 146.95225714961003,91.02339872370601 160.18789884188138,91.02339872370601" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.02,-2.1000000000000005 2.08,-2.1000000000000005 2.08,-2.6199999999999997 2.1399999999999997,-2.6199999999999997" data-type="line" data-label="" points="490.41715906405113,514.5639328763887 494.38785157173254,514.5639328763887 494.38785157173254,548.9766012762941 498.3585440794139,548.9766012762941" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.1800000000000002,1.6000000000000008 -3.8312500000000003,1.6000000000000008 -3.8312500000000003,2.200000000000002 -4.1425,2.200000000000002" data-type="line" data-label="" points="278.6468919877098,269.70456156936893 103.19191680453793,269.70456156936893 103.19191680453793,229.99763649255485 82.5939494209407,229.99763649255485" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.1800000000000002,1.4000000000000008 -4.1425,1.4000000000000015" data-type="line" data-label="" points="278.6468919877098,282.94020326164025 82.5939494209407,282.9402032616402" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.1800000000000002,1.2000000000000008 -2.66125,1.2000000000000008 -2.66125,0.6000000000000012 -4.1425,0.6000000000000012" data-type="line" data-label="" points="278.6468919877098,296.17584495391156 180.62042070432526,296.17584495391156 180.62042070432526,335.88277003072557 82.5939494209407,335.88277003072557" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.1800000000000002,1.0000000000000009 -1.3800000000000001,1.0000000000000009 -1.3800000000000001,-0.1999999999999991 -4.1425,-0.1999999999999991" data-type="line" data-label="" points="278.6468919877098,309.4114866461829 265.41125029543844,309.4114866461829 265.41125029543844,388.8253367998109 82.5939494209407,388.8253367998109" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.1800000000000002,-2.0000000000000004 -1.7425000000000002,-2.0000000000000004" data-type="line" data-label="" points="278.6468919877098,507.94611203025295 241.42164972819666,507.94611203025295" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-2.67,2.6199999999999997 -2.67,2.400000000000001 -1.1800000000000002,2.400000000000001" data-type="line" data-label="" points="180.04136138028838,202.2027889387852 180.04136138028838,216.7619948002836 278.6468919877098,216.7619948002836" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.02,0.6999999999999997 2.22,0.6999999999999997 2.22,0.49999999999999956 2.02,0.49999999999999956" data-type="line" data-label="" points="490.41715906405113,329.26494918458997 503.65280075632245,329.26494918458997 503.65280075632245,342.50059087686134 490.41715906405113,342.50059087686134" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.1800000000000002,1.8000000000000007 -3.63125,1.8000000000000007 -3.63125,3.000000000000001 -4.1425,3.000000000000001" data-type="line" data-label="" points="278.6468919877098,256.4689198770976 116.42755849680927,256.4689198770976 116.42755849680927,177.0550697234696 82.5939494209407,177.0550697234696" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.22,0.6999999999999997 2.51,0.6999999999999997 2.51,0.6989999999999997" data-type="line" data-label="" points="503.65280075632245,329.26494918458997 522.8444812101159,329.26494918458997 522.8444812101159,329.33112739305136" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="3.08,-2.6199999999999997 3.321,-2.6199999999999997 3.321,-2.9709999999999996" data-type="line" data-label="" points="560.5660600330891,548.9766012762941 576.5150082722762,548.9766012762941 576.5150082722762,572.2051524462303" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.1800000000000002,2.2000000000000006 -1.481,2.2000000000000006 -1.481,2.5010000000000003" data-type="line" data-label="" points="278.6468919877098,229.99763649255493 258.72725124084144,229.99763649255493 258.72725124084144,210.0779957456866" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-2.37,4.3 -2.0690000000000004,4.3 -2.0690000000000004,4.651" data-type="line" data-label="" points="199.89482391869535,91.02339872370601 219.8144646655637,91.02339872370601 219.8144646655637,67.79484755376978" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="0.41999999999999993" data-y="0" x="278.64689198770975" y="210.14417395414796" width="211.77026707634133" height="330.89104230678333" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="-2.67" data-y="4.3" x="160.1878988418814" y="68.52280784684476" width="39.706925076813974" height="45.001181753722506" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="-2.5975" data-y="3" x="150.2611675726779" y="151.90735050815408" width="69.15622784211772" height="50.29543843063112" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="2.61" data-y="-2.57" x="498.35854407941383" y="521.8795797683764" width="62.20751595367523" height="47.576222169699804" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="schematic_component_4" data-x="-1.9425" data-y="-2.0000000000000004" x="214.95036634365403" y="501.32829118411723" width="26.47128338454263" height="13.235641692271372" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="schematic_component_5" data-x="-4.3425" data-y="3.000000000000001" x="56.12266603639799" y="170.4372488773339" width="26.471283384542687" height="13.235641692271344" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="schematic_component_6" data-x="-4.3425" data-y="2.200000000000002" x="56.12266603639799" y="223.37981564641916" width="26.471283384542687" height="13.235641692271344" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="schematic_component_7" data-x="-4.3425" data-y="1.4000000000000015" x="56.12266603639799" y="276.32238241550453" width="26.471283384542687" height="13.235641692271315" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="schematic_component_8" data-x="-4.3425" data-y="0.6000000000000012" x="56.12266603639799" y="329.2649491845899" width="26.471283384542687" height="13.235641692271315" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="schematic_component_9" data-x="-4.3425" data-y="-0.19999999999999907" x="56.12266603639799" y="382.2075159536752" width="26.471283384542687" height="13.235641692271315" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="ESP32_S3_WROOM_1_N16R8" data-x="0.5399999999999998" data-y="-2.63" x="305.1181753722525" y="543.6823445993855" width="174.71047033798158" height="11.912077523044218" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="U1" data-x="-0.66" data-y="2.615" x="301.1474828645711" y="194.26140392342236" width="23.82415504608838" height="16.544552115339172" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="netId: GND
2
+ globalConnNetId: connectivity_net8" data-x="-2.67" data-y="2.190000000000001" x="164.15859134956276" y="216.7619948002836" width="31.765540061451247" height="27.794847553769785" fill="#00000066" stroke="#000000" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="netId: GND
3
+ globalConnNetId: connectivity_net8" data-x="2.51" data-y="0.48899999999999977" x="506.96171117939025" y="329.33112739305136" width="31.765540061451247" height="27.794847553769785" fill="#00000066" stroke="#000000" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="netId: GND
4
+ globalConnNetId: connectivity_net8" data-x="3.321" data-y="-3.1809999999999996" x="560.6322382415506" y="572.2051524462304" width="31.765540061451134" height="27.794847553769728" fill="#00000066" stroke="#000000" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="netId: V3V3
5
+ globalConnNetId: connectivity_net9" data-x="-1.481" data-y="2.7110000000000003" x="238.87378870243447" y="182.2831481919168" width="39.706925076813974" height="27.794847553769785" fill="#ef444466" stroke="#ef4444" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="netId: V3V3
6
+ globalConnNetId: connectivity_net9" data-x="-2.0690000000000004" data-y="4.861" x="199.9610021271567" y="40.00000000000003" width="39.706925076813974" height="27.794847553769785" fill="#ef444466" stroke="#ef4444" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="netId: .U1 &gt; .EN to .C_EN &gt; .pin1
7
+ globalConnNetId: connectivity_net0" data-x="-1.541" data-y="2.000000000000001" x="230.93240368707166" y="236.6154573386906" width="47.64831009217676" height="13.235641692271344" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="netId: .U1 &gt; .EN to .C_EN &gt; .pin1
8
+ globalConnNetId: connectivity_net0" data-x="-2.31" data-y="3.6100000000000003" x="180.04136138028838" y="130.0685417159064" width="47.648310092176786" height="13.235641692271344" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="netId: .U1 &gt; .IO4 to .TCH1 &gt; .pin1
9
+ globalConnNetId: connectivity_net2" data-x="-3.2800000000000002" data-y="2.2200000000000006" x="133.0548333727251" y="200.879224769558" width="13.235641692271344" height="55.589695107539626" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="netId: .U1 &gt; .IO5 to .TCH2 &gt; .pin1
10
+ globalConnNetId: connectivity_net3" data-x="-4.251250000000001" data-y="1.9000000000000012" x="47.602221696998285" y="243.23327818482625" width="55.5896951075396" height="13.235641692271344" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="netId: .U1 &gt; .IO7 to .TCH4 &gt; .pin1
11
+ globalConnNetId: connectivity_net5" data-x="-1.920625" data-y="0.7800000000000009" x="223.01583549988186" y="296.17584495391156" width="13.235641692271315" height="55.589695107539626" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="netId: .U1 &gt; .IO15 to .TCH5 &gt; .pin1
12
+ globalConnNetId: connectivity_net6" data-x="-1.86" data-y="0.20000000000000084" x="201.88017017253605" y="355.7362325691326" width="63.53108012290235" height="13.235641692271315" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="netId: .U1 &gt; .IO21 to .TP_LED_DATA &gt; .pin1
13
+ globalConnNetId: connectivity_net7" data-x="-1.4612500000000002" data-y="-1.7750000000000004" x="253.41645001181757" y="478.1659182226425" width="13.235641692271315" height="29.780193807610488" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.015110714285714285"/></g><g><rect data-type="rect" data-label="netId: .U1 &gt; .IO0 to .SW_BOOT &gt; .pin1
14
+ globalConnNetId: connectivity_net1" data-x="2.305" data-y="-2.1000000000000005" x="494.3878515717325" y="507.946112030253" width="29.780193807610544" height="13.235641692271315" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.015110714285714285"/></g><g><circle data-type="point" data-label="schematic_port_0
15
+ x-" data-x="-1.1800000000000002" data-y="2.400000000000001" cx="278.6468919877098" cy="216.7619948002836" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_1
16
+ x-" data-x="-1.1800000000000002" data-y="2.2000000000000006" cx="278.6468919877098" cy="229.99763649255493" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_2
17
+ x-" data-x="-1.1800000000000002" data-y="2.000000000000001" cx="278.6468919877098" cy="243.23327818482625" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_3
18
+ x-" data-x="-1.1800000000000002" data-y="1.8000000000000007" cx="278.6468919877098" cy="256.4689198770976" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_4
19
+ x-" data-x="-1.1800000000000002" data-y="1.6000000000000008" cx="278.6468919877098" cy="269.70456156936893" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_5
20
+ x-" data-x="-1.1800000000000002" data-y="1.4000000000000008" cx="278.6468919877098" cy="282.94020326164025" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_6
21
+ x-" data-x="-1.1800000000000002" data-y="1.2000000000000008" cx="278.6468919877098" cy="296.17584495391156" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_7
22
+ x-" data-x="-1.1800000000000002" data-y="1.0000000000000009" cx="278.6468919877098" cy="309.4114866461829" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_8
23
+ x-" data-x="-1.1800000000000002" data-y="0.8000000000000009" cx="278.6468919877098" cy="322.64712833845425" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_9
24
+ x-" data-x="-1.1800000000000002" data-y="0.600000000000001" cx="278.6468919877098" cy="335.88277003072557" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_10
25
+ x-" data-x="-1.1800000000000002" data-y="0.400000000000001" cx="278.6468919877098" cy="349.1184117229969" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_11
26
+ x-" data-x="-1.1800000000000002" data-y="0.20000000000000107" cx="278.6468919877098" cy="362.3540534152682" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_12
27
+ x-" data-x="-1.1800000000000002" data-y="8.881784197001252e-16" cx="278.6468919877098" cy="375.58969510753957" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_13
28
+ x-" data-x="-1.1800000000000002" data-y="-0.1999999999999993" cx="278.6468919877098" cy="388.8253367998109" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_14
29
+ x-" data-x="-1.1800000000000002" data-y="-0.39999999999999947" cx="278.6468919877098" cy="402.06097849208226" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_15
30
+ x-" data-x="-1.1800000000000002" data-y="-0.5999999999999996" cx="278.6468919877098" cy="415.2966201843536" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_16
31
+ x-" data-x="-1.1800000000000002" data-y="-0.7999999999999998" cx="278.6468919877098" cy="428.53226187662494" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_17
32
+ x-" data-x="-1.1800000000000002" data-y="-1" cx="278.6468919877098" cy="441.76790356889626" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_18
33
+ x-" data-x="-1.1800000000000002" data-y="-1.2000000000000002" cx="278.6468919877098" cy="455.00354526116763" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_19
34
+ x-" data-x="-1.1800000000000002" data-y="-1.4000000000000004" cx="278.6468919877098" cy="468.239186953439" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_20
35
+ x-" data-x="-1.1800000000000002" data-y="-1.6" cx="278.6468919877098" cy="481.4748286457103" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_21
36
+ x-" data-x="-1.1800000000000002" data-y="-1.8000000000000003" cx="278.6468919877098" cy="494.71047033798163" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_22
37
+ x-" data-x="-1.1800000000000002" data-y="-2.0000000000000004" cx="278.6468919877098" cy="507.94611203025295" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_23
38
+ x-" data-x="-1.1800000000000002" data-y="-2.2000000000000006" cx="278.6468919877098" cy="521.1817537225243" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_24
39
+ x-" data-x="-1.1800000000000002" data-y="-2.400000000000001" cx="278.6468919877098" cy="534.4173954147957" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_25
40
+ x+" data-x="2.02" data-y="-2.3000000000000007" cx="490.41715906405113" cy="527.79957456866" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_26
41
+ x+" data-x="2.02" data-y="-2.1000000000000005" cx="490.41715906405113" cy="514.5639328763887" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_27
42
+ x+" data-x="2.02" data-y="-1.9000000000000008" cx="490.41715906405113" cy="501.32829118411735" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_28
43
+ x+" data-x="2.02" data-y="-1.7000000000000006" cx="490.41715906405113" cy="488.092649491846" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_29
44
+ x+" data-x="2.02" data-y="-1.5000000000000007" cx="490.41715906405113" cy="474.85700779957466" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_30
45
+ x+" data-x="2.02" data-y="-1.3000000000000007" cx="490.41715906405113" cy="461.62136610730334" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_31
46
+ x+" data-x="2.02" data-y="-1.1000000000000008" cx="490.41715906405113" cy="448.385724415032" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_32
47
+ x+" data-x="2.02" data-y="-0.9000000000000008" cx="490.41715906405113" cy="435.15008272276066" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_33
48
+ x+" data-x="2.02" data-y="-0.7000000000000008" cx="490.41715906405113" cy="421.91444103048934" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_34
49
+ x+" data-x="2.02" data-y="-0.5000000000000009" cx="490.41715906405113" cy="408.678799338218" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_35
50
+ x+" data-x="2.02" data-y="-0.30000000000000093" cx="490.41715906405113" cy="395.4431576459467" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_36
51
+ x+" data-x="2.02" data-y="-0.10000000000000098" cx="490.41715906405113" cy="382.20751595367534" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_37
52
+ x+" data-x="2.02" data-y="0.0999999999999992" cx="490.41715906405113" cy="368.971874261404" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_38
53
+ x+" data-x="2.02" data-y="0.2999999999999994" cx="490.41715906405113" cy="355.73623256913265" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_39
54
+ x+" data-x="2.02" data-y="0.49999999999999956" cx="490.41715906405113" cy="342.50059087686134" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_40
55
+ x+" data-x="2.02" data-y="0.6999999999999997" cx="490.41715906405113" cy="329.26494918458997" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_41
56
+ x+" data-x="2.02" data-y="0.8999999999999999" cx="490.41715906405113" cy="316.02930749231865" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_42
57
+ x+" data-x="2.02" data-y="1.1" cx="490.41715906405113" cy="302.7936658000473" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_43
58
+ x+" data-x="2.02" data-y="1.3000000000000003" cx="490.41715906405113" cy="289.55802410777596" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_44
59
+ x+" data-x="2.02" data-y="1.5000000000000004" cx="490.41715906405113" cy="276.3223824155046" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_45
60
+ x+" data-x="2.02" data-y="1.7000000000000002" cx="490.41715906405113" cy="263.0867407232333" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_46
61
+ x+" data-x="2.02" data-y="1.9000000000000004" cx="490.41715906405113" cy="249.85109903096196" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_47
62
+ x+" data-x="2.02" data-y="2.1000000000000005" cx="490.41715906405113" cy="236.6154573386906" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_48
63
+ x+" data-x="2.02" data-y="2.3000000000000007" cx="490.41715906405113" cy="223.37981564641925" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_49
64
+ x-" data-x="-2.9699999999999998" data-y="4.3" cx="160.18789884188138" cy="91.02339872370601" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_50
65
+ x+" data-x="-2.37" data-y="4.3" cx="199.89482391869535" cy="91.02339872370601" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_51
66
+ y+" data-x="-2.67" data-y="3.3800000000000003" cx="180.04136138028838" cy="151.90735050815408" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_52
67
+ y-" data-x="-2.67" data-y="2.6199999999999997" cx="180.04136138028838" cy="202.2027889387852" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_53
68
+ x-" data-x="2.1399999999999997" data-y="-2.6199999999999997" cx="498.3585440794139" cy="548.9766012762941" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_54
69
+ x+" data-x="3.08" data-y="-2.6199999999999997" cx="560.5660600330891" cy="548.9766012762941" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_55
70
+ x+" data-x="-1.7425000000000002" data-y="-2.0000000000000004" cx="241.42164972819666" cy="507.94611203025295" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_56
71
+ x+" data-x="-4.1425" data-y="3.000000000000001" cx="82.5939494209407" cy="177.0550697234696" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_57
72
+ x+" data-x="-4.1425" data-y="2.200000000000002" cx="82.5939494209407" cy="229.99763649255485" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_58
73
+ x+" data-x="-4.1425" data-y="1.4000000000000015" cx="82.5939494209407" cy="282.9402032616402" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_59
74
+ x+" data-x="-4.1425" data-y="0.6000000000000012" cx="82.5939494209407" cy="335.88277003072557" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_60
75
+ x+" data-x="-4.1425" data-y="-0.1999999999999991" cx="82.5939494209407" cy="388.8253367998109" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
76
+ orientation: y-" data-x="-2.67" data-y="2.400000000000001" cx="180.04136138028838" cy="216.7619948002836" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
77
+ orientation: y-" data-x="2.51" data-y="0.6989999999999997" cx="522.8444812101159" cy="329.33112739305136" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
78
+ orientation: y-" data-x="3.321" data-y="-2.9709999999999996" cx="576.5150082722762" cy="572.2051524462303" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
79
+ orientation: y+" data-x="-1.481" data-y="2.5010000000000003" cx="258.72725124084144" cy="210.0779957456866" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
80
+ orientation: y+" data-x="-2.0690000000000004" data-y="4.651" cx="219.8144646655637" cy="67.79484755376978" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
81
+ orientation: x-" data-x="-1.1800000000000002" data-y="2.000000000000001" cx="278.6468919877098" cy="243.23327818482625" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
82
+ orientation: x+" data-x="-2.67" data-y="3.6100000000000003" cx="180.04136138028838" cy="136.68636256204206" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
83
+ orientation: y+" data-x="-3.2800000000000002" data-y="1.8000000000000007" cx="139.6726542188608" cy="256.4689198770976" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
84
+ orientation: x-" data-x="-3.8312500000000003" data-y="1.9000000000000012" cx="103.19191680453793" cy="249.8510990309619" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
85
+ orientation: y-" data-x="-1.920625" data-y="1.2000000000000008" cx="229.63365634601752" cy="296.17584495391156" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
86
+ orientation: x-" data-x="-1.3800000000000001" data-y="0.20000000000000084" cx="265.41125029543844" cy="362.35405341526825" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
87
+ orientation: y+" data-x="-1.4612500000000002" data-y="-2.0000000000000004" cx="260.03427085795323" cy="507.94611203025295" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
88
+ orientation: x+" data-x="2.08" data-y="-2.1000000000000005" cx="494.38785157173254" cy="514.5639328763887" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g id="crosshair" style="display: none"><line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5"/><line id="crosshair-v" x1="0" x2="640" stroke="#666" stroke-width="0.5"/><text id="coordinates" font-family="monospace" font-size="12" fill="#666"></text></g><script><![CDATA[
89
+ document.currentScript.parentElement.addEventListener('mousemove', (e) => {
90
+ const svg = e.currentTarget;
91
+ const rect = svg.getBoundingClientRect();
92
+ const x = e.clientX - rect.left;
93
+ const y = e.clientY - rect.top;
94
+ const crosshair = svg.getElementById('crosshair');
95
+ const h = svg.getElementById('crosshair-h');
96
+ const v = svg.getElementById('crosshair-v');
97
+ const coords = svg.getElementById('coordinates');
98
+
99
+ crosshair.style.display = 'block';
100
+ h.setAttribute('x1', '0');
101
+ h.setAttribute('x2', '640');
102
+ h.setAttribute('y1', y);
103
+ h.setAttribute('y2', y);
104
+ v.setAttribute('x1', x);
105
+ v.setAttribute('x2', x);
106
+ v.setAttribute('y1', '0');
107
+ v.setAttribute('y2', '640');
108
+
109
+ // Calculate real coordinates using inverse transformation
110
+ const matrix = {"a":66.17820846135666,"c":0,"e":356.73717797211066,"b":0,"d":-66.17820846135666,"f":375.5896951075396};
111
+ // Manually invert and apply the affine transform
112
+ // Since we only use translate and scale, we can directly compute:
113
+ // x' = (x - tx) / sx
114
+ // y' = (y - ty) / sy
115
+ const sx = matrix.a;
116
+ const sy = matrix.d;
117
+ const tx = matrix.e;
118
+ const ty = matrix.f;
119
+ const realPoint = {
120
+ x: (x - tx) / sx,
121
+ y: (y - ty) / sy // Flip y back since we used negative scale
122
+ }
123
+
124
+ coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
125
+ coords.setAttribute('x', (x + 5).toString());
126
+ coords.setAttribute('y', (y - 5).toString());
127
+ });
128
+ document.currentScript.parentElement.addEventListener('mouseleave', () => {
129
+ document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
130
+ });
131
+ ]]></script></svg>