@tscircuit/schematic-trace-solver 0.0.101 → 0.0.103

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 (37) hide show
  1. package/dist/index.d.ts +14 -6
  2. package/dist/index.js +251 -66
  3. package/lib/solvers/AvailableNetOrientationSolver/AvailableNetOrientationSolver.ts +58 -3
  4. package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/SchematicTraceSingleLineSolver2.ts +13 -5
  5. package/lib/solvers/TraceOverlapShiftSolver/TraceOverlapIssueSolver/TraceOverlapIssueSolver.ts +168 -24
  6. package/lib/solvers/TraceOverlapShiftSolver/TraceOverlapShiftSolver.ts +128 -48
  7. package/package.json +1 -1
  8. package/site/bug-reports/bug-report-20260716T144856Z.page.tsx +4 -0
  9. package/site/bug-reports/bug-report-20260717T022934Z.page.tsx +4 -0
  10. package/site/bug-reports/bug-report-20260717T031704Z.page.tsx +4 -0
  11. package/site/bug-reports/bug-report-20260717T042845Z.page.tsx +4 -0
  12. package/tests/bug-reports/bug-report-20260706T213649Z/__snapshots__/bug-report-20260706T213649Z.snap.svg +3 -3
  13. package/tests/bug-reports/bug-report-20260706T220324Z/__snapshots__/bug-report-20260706T220324Z.snap.svg +3 -3
  14. package/tests/bug-reports/bug-report-20260707T092615Z/__snapshots__/bug-report-20260707T092615Z.snap.svg +5 -5
  15. package/tests/bug-reports/bug-report-20260707T140410Z/__snapshots__/bug-report-20260707T140410Z.snap.svg +3 -3
  16. package/tests/bug-reports/bug-report-20260716T144856Z/__snapshots__/bug-report-20260716T144856Z.snap.svg +149 -0
  17. package/tests/bug-reports/bug-report-20260716T144856Z/bug-report-20260716T144856Z.json +693 -0
  18. package/tests/bug-reports/bug-report-20260716T144856Z/bug-report-20260716T144856Z.test.ts +12 -0
  19. package/tests/bug-reports/bug-report-20260717T022934Z/__snapshots__/bug-report-20260717T022934Z.snap.svg +130 -0
  20. package/tests/bug-reports/bug-report-20260717T022934Z/bug-report-20260717T022934Z.json +543 -0
  21. package/tests/bug-reports/bug-report-20260717T022934Z/bug-report-20260717T022934Z.test.ts +12 -0
  22. package/tests/bug-reports/bug-report-20260717T031704Z/__snapshots__/bug-report-20260717T031704Z.snap.svg +48 -0
  23. package/tests/bug-reports/bug-report-20260717T031704Z/bug-report-20260717T031704Z.json +77 -0
  24. package/tests/bug-reports/bug-report-20260717T031704Z/bug-report-20260717T031704Z.test.ts +12 -0
  25. package/tests/bug-reports/bug-report-20260717T042845Z/__snapshots__/bug-report-20260717T042845Z.snap.svg +54 -0
  26. package/tests/bug-reports/bug-report-20260717T042845Z/bug-report-20260717T042845Z.json +113 -0
  27. package/tests/bug-reports/bug-report-20260717T042845Z/bug-report-20260717T042845Z.test.ts +12 -0
  28. package/tests/examples/__snapshots__/example11.snap.svg +19 -19
  29. package/tests/examples/__snapshots__/example19.snap.svg +3 -5
  30. package/tests/examples/__snapshots__/example29.snap.svg +13 -13
  31. package/tests/examples/__snapshots__/example37.snap.svg +4 -2
  32. package/tests/examples/example16.test.ts +22 -0
  33. package/tests/repros/__snapshots__/repro-rp2040-gamepad-trace-alignment.snap.svg +2 -8
  34. package/tests/repros/__snapshots__/repro47-endpoint-obstacle-detour.snap.svg +19 -19
  35. package/tests/repros/__snapshots__/trace-overlap-box-resistor.snap.svg +10 -10
  36. package/tests/repros/repro47-endpoint-obstacle-detour.test.ts +30 -0
  37. package/tests/solvers/TraceOverlapShiftSolver/TraceOverlapShiftSolver.test.ts +174 -0
@@ -0,0 +1,54 @@
1
+ <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="-0.6000000000000001,0.1 -0.6000000000000001,-0.1" data-type="line" data-label="" points="213.9715237806725,494.81975159042713 213.9715237806725,528.748863980612" fill="none" stroke="hsl(27, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-0.6000000000000001,0.1 -0.6599999999999999,2.36" data-type="line" data-label="" points="213.9715237806725,494.81975159042713 203.79279006361708,111.42078158133899" fill="none" stroke="hsl(27, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-0.6000000000000001,-0.1 -0.6599999999999999,2.36" data-type="line" data-label="" points="213.9715237806725,528.748863980612 203.79279006361708,111.42078158133899" fill="none" stroke="hsl(27, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.6000000000000001,0.1 0.6000000000000001,-0.1" data-type="line" data-label="" points="417.5461981217813,494.81975159042713 417.5461981217813,528.748863980612" fill="none" stroke="hsl(64, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.6000000000000001,0.1 0.6599999999999999,2.36" data-type="line" data-label="" points="417.5461981217813,494.81975159042713 427.7249318388367,111.42078158133899" fill="none" stroke="hsl(64, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.6000000000000001,-0.1 0.6599999999999999,2.36" data-type="line" data-label="" points="417.5461981217813,528.748863980612 427.7249318388367,111.42078158133899" fill="none" stroke="hsl(64, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-0.6000000000000001,-0.1 -0.8,-0.1 -0.8,0.1 -0.6000000000000001,0.1" data-type="line" data-label="" points="213.9715237806725,528.748863980612 180.0424113904877,528.748863980612 180.0424113904877,494.81975159042713 213.9715237806725,494.81975159042713" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-0.6599999999999999,2.36 -0.8599999999999999,2.36 -0.8599999999999999,0.1 -0.6000000000000001,0.1" data-type="line" data-label="" points="203.79279006361708,111.42078158133899 169.86367767343228,111.42078158133899 169.86367767343228,494.81975159042713 213.9715237806725,494.81975159042713" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.6000000000000001,0.1 1.4400000000000002,0.1 1.4400000000000002,-0.1 0.6000000000000001,-0.1" data-type="line" data-label="" points="417.5461981217813,494.81975159042713 560.0484701605575,494.81975159042713 560.0484701605575,528.748863980612 417.5461981217813,528.748863980612" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.6599999999999999,2.36 1.4400000000000002,2.36 1.4400000000000002,0.1 0.6000000000000001,0.1" data-type="line" data-label="" points="427.7249318388367,111.42078158133899 560.0484701605575,111.42078158133899 560.0484701605575,494.81975159042713 417.5461981217813,494.81975159042713" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-0.8599999999999999,2.36 -1.15,2.36 -1.15,2.3609999999999998" data-type="line" data-label="" points="169.86367767343228,111.42078158133899 120.66646470766432,111.42078158133899 120.66646470766432,111.25113601938807" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="213.9715237806725" y="460.8906392002424" width="203.5746743411088" height="101.7873371705544" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.005894642857142856"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="0" data-y="2.32" x="203.79279006361708" y="46.95546803998786" width="223.93214177521963" height="142.50227203877614" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.005894642857142856"/></g><g><rect data-type="rect" data-label="5x20-BLX-A" data-x="0.4" data-y="-0.43000000000000005" x="281.8297485610421" y="569.4637988488337" width="203.5746743411088" height="30.536201151166324" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.005894642857142856"/></g><g><rect data-type="rect" data-label="FUSEX20MM" data-x="0.3400000000000001" data-y="0.41500000000000004" x="271.6510148439867" y="420.1757043320206" width="203.5746743411088" height="42.41139048773101" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.005894642857142856"/></g><g><rect data-type="rect" data-label="netId: VIN
2
+ globalConnNetId: connectivity_net0" data-x="-1.15" data-y="2.5709999999999997" x="79.95152983944257" y="39.99999999999997" width="81.4298697364435" height="71.25113601938807" fill="#ef444466" stroke="#ef4444" stroke-width="0.005894642857142856"/></g><g><rect data-type="rect" data-label="netId: VOUT
3
+ globalConnNetId: connectivity_net1" data-x="1.05" data-y="2.57" x="442.9930324144199" y="40.16964556195089" width="101.78733717055445" height="71.25113601938807" fill="#ef444466" stroke="#ef4444" stroke-width="0.005894642857142856"/></g><g><circle data-type="point" data-label="F1.1
4
+ x-" data-x="-0.6000000000000001" data-y="0.1" cx="213.9715237806725" cy="494.81975159042713" r="3" fill="hsl(214, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="F1.2
5
+ x-" data-x="-0.6000000000000001" data-y="-0.1" cx="213.9715237806725" cy="528.748863980612" r="3" fill="hsl(215, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="F1.4
6
+ x+" data-x="0.6000000000000001" data-y="0.1" cx="417.5461981217813" cy="494.81975159042713" r="3" fill="hsl(217, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="F1.3
7
+ x+" data-x="0.6000000000000001" data-y="-0.1" cx="417.5461981217813" cy="528.748863980612" r="3" fill="hsl(216, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="F2.1
8
+ x-" data-x="-0.6599999999999999" data-y="2.36" cx="203.79279006361708" cy="111.42078158133899" r="3" fill="hsl(95, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="F2.2
9
+ x+" data-x="0.6599999999999999" data-y="2.36" cx="427.7249318388367" cy="111.42078158133899" r="3" fill="hsl(96, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
10
+ orientation: y+" data-x="-1.15" data-y="2.3609999999999998" cx="120.66646470766432" cy="111.25113601938807" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
11
+ orientation: y+" data-x="1.05" data-y="2.36" cx="493.8867009996971" cy="111.42078158133899" 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[
12
+ document.currentScript.parentElement.addEventListener('mousemove', (e) => {
13
+ const svg = e.currentTarget;
14
+ const rect = svg.getBoundingClientRect();
15
+ const x = e.clientX - rect.left;
16
+ const y = e.clientY - rect.top;
17
+ const crosshair = svg.getElementById('crosshair');
18
+ const h = svg.getElementById('crosshair-h');
19
+ const v = svg.getElementById('crosshair-v');
20
+ const coords = svg.getElementById('coordinates');
21
+
22
+ crosshair.style.display = 'block';
23
+ h.setAttribute('x1', '0');
24
+ h.setAttribute('x2', '640');
25
+ h.setAttribute('y1', y);
26
+ h.setAttribute('y2', y);
27
+ v.setAttribute('x1', x);
28
+ v.setAttribute('x2', x);
29
+ v.setAttribute('y1', '0');
30
+ v.setAttribute('y2', '640');
31
+
32
+ // Calculate real coordinates using inverse transformation
33
+ const matrix = {"a":169.645561950924,"c":0,"e":315.7588609512269,"b":0,"d":-169.645561950924,"f":511.78430778551956};
34
+ // Manually invert and apply the affine transform
35
+ // Since we only use translate and scale, we can directly compute:
36
+ // x' = (x - tx) / sx
37
+ // y' = (y - ty) / sy
38
+ const sx = matrix.a;
39
+ const sy = matrix.d;
40
+ const tx = matrix.e;
41
+ const ty = matrix.f;
42
+ const realPoint = {
43
+ x: (x - tx) / sx,
44
+ y: (y - ty) / sy // Flip y back since we used negative scale
45
+ }
46
+
47
+ coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
48
+ coords.setAttribute('x', (x + 5).toString());
49
+ coords.setAttribute('y', (y - 5).toString());
50
+ });
51
+ document.currentScript.parentElement.addEventListener('mouseleave', () => {
52
+ document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
53
+ });
54
+ ]]></script></svg>
@@ -0,0 +1,113 @@
1
+ {
2
+ "chips": [
3
+ {
4
+ "chipId": "schematic_component_0",
5
+ "center": {
6
+ "x": 0,
7
+ "y": 0
8
+ },
9
+ "width": 1.2000000000000002,
10
+ "height": 0.6000000000000001,
11
+ "pins": [
12
+ {
13
+ "pinId": "F1.1",
14
+ "x": -0.6000000000000001,
15
+ "y": 0.1
16
+ },
17
+ {
18
+ "pinId": "F1.2",
19
+ "x": -0.6000000000000001,
20
+ "y": -0.1
21
+ },
22
+ {
23
+ "pinId": "F1.4",
24
+ "x": 0.6000000000000001,
25
+ "y": 0.1
26
+ },
27
+ {
28
+ "pinId": "F1.3",
29
+ "x": 0.6000000000000001,
30
+ "y": -0.1
31
+ }
32
+ ]
33
+ },
34
+ {
35
+ "chipId": "schematic_component_1",
36
+ "center": {
37
+ "x": 0,
38
+ "y": 2.32
39
+ },
40
+ "width": 1.3199999999999998,
41
+ "height": 0.8399999999999999,
42
+ "pins": [
43
+ {
44
+ "pinId": "F2.1",
45
+ "x": -0.6599999999999999,
46
+ "y": 2.36,
47
+ "_facingDirection": "x-"
48
+ },
49
+ {
50
+ "pinId": "F2.2",
51
+ "x": 0.6599999999999999,
52
+ "y": 2.36,
53
+ "_facingDirection": "x+"
54
+ }
55
+ ]
56
+ }
57
+ ],
58
+ "directConnections": [],
59
+ "netConnections": [
60
+ {
61
+ "netId": "VIN",
62
+ "pinIds": [
63
+ "F1.1",
64
+ "F1.2",
65
+ "F2.1"
66
+ ],
67
+ "netLabelWidth": 0.42,
68
+ "netLabelHeight": 0.48
69
+ },
70
+ {
71
+ "netId": "VOUT",
72
+ "pinIds": [
73
+ "F1.4",
74
+ "F1.3",
75
+ "F2.2"
76
+ ],
77
+ "netLabelWidth": 0.42,
78
+ "netLabelHeight": 0.6
79
+ }
80
+ ],
81
+ "textBoxes": [
82
+ {
83
+ "chipId": "schematic_component_0",
84
+ "center": {
85
+ "x": 0.4,
86
+ "y": -0.43000000000000005
87
+ },
88
+ "width": 1.2,
89
+ "height": 0.17999999999999994,
90
+ "text": "5x20-BLX-A"
91
+ },
92
+ {
93
+ "chipId": "schematic_component_0",
94
+ "center": {
95
+ "x": 0.3400000000000001,
96
+ "y": 0.41500000000000004
97
+ },
98
+ "width": 1.2000000000000002,
99
+ "height": 0.25,
100
+ "text": "FUSEX20MM"
101
+ }
102
+ ],
103
+ "availableNetLabelOrientations": {
104
+ "VIN": [
105
+ "y+"
106
+ ],
107
+ "VOUT": [
108
+ "y+"
109
+ ]
110
+ },
111
+ "maxMspPairDistance": 2.4,
112
+ "_hideRatsNet": false
113
+ }
@@ -0,0 +1,12 @@
1
+ import { expect, test } from "bun:test"
2
+ import { SchematicTracePipelineSolver } from "lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver"
3
+ import inputProblem from "./bug-report-20260717T042845Z.json"
4
+ import "tests/fixtures/matcher"
5
+
6
+ test("bug-report-20260717T042845Z", () => {
7
+ const solver = new SchematicTracePipelineSolver(inputProblem as any)
8
+
9
+ solver.solve()
10
+
11
+ expect(solver).toMatchSolverSnapshot(import.meta.path)
12
+ })
@@ -1,21 +1,21 @@
1
- <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="0.48,0.765 -0.48,-0.765" data-type="line" data-label="" points="391.4893617021276,213.51063829787233 248.51063829787228,441.3829787234042" fill="none" stroke="hsl(224, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="1.58,0.765 -1.58,-0.765" data-type="line" data-label="" points="555.3191489361701,213.51063829787233 84.68085106382975,441.3829787234042" fill="none" stroke="hsl(224, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.5800000000000001,-0.665 -1.58,0.765" data-type="line" data-label="" points="406.3829787234042,426.48936170212767 84.68085106382975,213.51063829787233" fill="none" stroke="hsl(168, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="1.48,-0.665 -0.48,0.765" data-type="line" data-label="" points="540.4255319148936,426.48936170212767 248.51063829787228,213.51063829787233" fill="none" stroke="hsl(168, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.48,0.765 0.27999999999999997,0.765 0.27999999999999997,0.665 -0.1,0.665 -0.1,-0.765 -0.48,-0.765" data-type="line" data-label="" points="391.4893617021276,213.51063829787233 361.7021276595744,213.51063829787233 361.7021276595744,228.40425531914892 305.10638297872333,228.40425531914892 305.10638297872333,441.3829787234042 248.51063829787228,441.3829787234042" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.58,0.765 1.7800000000000002,0.765 1.7800000000000002,0 -1.8800000000000001,0 -1.8800000000000001,-0.765 -1.58,-0.765" data-type="line" data-label="" points="555.3191489361701,213.51063829787233 585.1063829787233,213.51063829787233 585.1063829787233,327.4468085106383 39.99999999999994,327.4468085106383 39.99999999999994,441.3829787234042 84.68085106382975,441.3829787234042" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.5800000000000001,-0.665 0.050000000000000044,-0.665 0.050000000000000044,-0.37054465000000053 -1.68,-0.37054465000000053 -1.68,0.765 -1.58,0.765" data-type="line" data-label="" points="406.3829787234042,426.48936170212767 327.4468085106382,426.48936170212767 327.4468085106382,382.63430957446815 69.78723404255317,382.63430957446815 69.78723404255317,213.51063829787233 84.68085106382975,213.51063829787233" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.48,-0.665 1.68,-0.665 1.68,0.37054465000000053 0.1,0.37054465000000053 0.1,0.865 -0.38,0.865 -0.38,0.765 -0.48,0.765" data-type="line" data-label="" points="540.4255319148936,426.48936170212767 570.2127659574467,426.48936170212767 570.2127659574467,272.2593074468084 334.89361702127655,272.2593074468084 334.89361702127655,198.61702127659575 263.4042553191489,198.61702127659575 263.4042553191489,213.51063829787233 248.51063829787228,213.51063829787233" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-1.03" data-y="0.765" x="84.68085106382976" y="184.54920319148943" width="163.82978723404253" height="57.922870212765815" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.006714285714285715"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="1.03" data-y="0.765" x="391.48936170212767" y="184.54920319148943" width="163.8297872340425" height="57.922870212765815" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.006714285714285715"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="-1.03" data-y="-0.765" x="84.68085106382976" y="412.4215436170213" width="163.82978723404253" height="57.922870212765815" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.006714285714285715"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="1.03" data-y="-0.765" x="406.3829787234042" y="401.9148936170212" width="134.04255319148933" height="78.936170212766" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.006714285714285715"/></g><g><rect data-type="rect" data-label="netId: .J1 &gt; .pin1 to .R1 &gt; .pin1
2
- globalConnNetId: connectivity_net2" data-x="0.31500000000000006" data-y="-0.44000000000000006" x="352.0212765957446" y="359.468085106383" width="29.787234042553223" height="67.02127659574472" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.006714285714285715"/></g><g><rect data-type="rect" data-label="netId: .J1 &gt; .pin3 to .R1 &gt; .pin2
3
- globalConnNetId: connectivity_net3" data-x="1.68" data-y="-0.89" x="555.31914893617" y="426.48936170212767" width="29.787234042553223" height="67.02127659574467" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.006714285714285715"/></g><g><rect data-type="rect" data-label="netId: .R2 &gt; .pin1 to .R3 &gt; .pin2
4
- globalConnNetId: connectivity_net0" data-x="0.27999999999999997" data-y="0.99" x="346.8085106382978" y="146.48936170212767" width="29.787234042553166" height="67.0212765957447" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.006714285714285715"/></g><g><rect data-type="rect" data-label="netId: .R2 &gt; .pin2 to .R3 &gt; .pin1
5
- globalConnNetId: connectivity_net1" data-x="1.7800000000000002" data-y="0.99" x="570.2127659574467" y="146.48936170212767" width="29.787234042553223" height="67.0212765957447" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.006714285714285715"/></g><g><circle data-type="point" data-label="R1.1
6
- x-" data-x="-1.58" data-y="0.765" cx="84.68085106382975" cy="213.51063829787233" r="3" fill="hsl(226, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R1.2
7
- x+" data-x="-0.48" data-y="0.765" cx="248.51063829787228" cy="213.51063829787233" r="3" fill="hsl(227, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R2.1
8
- x-" data-x="0.48" data-y="0.765" cx="391.4893617021276" cy="213.51063829787233" r="3" fill="hsl(107, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R2.2
9
- x+" data-x="1.58" data-y="0.765" cx="555.3191489361701" cy="213.51063829787233" r="3" fill="hsl(108, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R3.1
10
- x-" data-x="-1.58" data-y="-0.765" cx="84.68085106382975" cy="441.3829787234042" r="3" fill="hsl(348, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R3.2
11
- x+" data-x="-0.48" data-y="-0.765" cx="248.51063829787228" cy="441.3829787234042" r="3" fill="hsl(349, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="J1.1
12
- x-" data-x="0.5800000000000001" data-y="-0.665" cx="406.3829787234042" cy="426.48936170212767" r="3" fill="hsl(218, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="J1.2
13
- y-" data-x="1.03" data-y="-1.03" cx="473.4042553191489" cy="480.8510638297872" r="3" fill="hsl(219, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="J1.3
14
- x+" data-x="1.48" data-y="-0.665" cx="540.4255319148936" cy="426.48936170212767" r="3" fill="hsl(220, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
15
- orientation: y+" data-x="0.31500000000000006" data-y="-0.665" cx="366.9148936170212" cy="426.48936170212767" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
16
- orientation: y-" data-x="1.68" data-y="-0.665" cx="570.2127659574467" cy="426.48936170212767" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
17
- orientation: y+" data-x="0.27999999999999997" data-y="0.765" cx="361.7021276595744" cy="213.51063829787233" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
18
- orientation: y+" data-x="1.7800000000000002" data-y="0.765" cx="585.1063829787233" cy="213.51063829787233" 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[
1
+ <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="0.48,0.765 -0.48,-0.765" data-type="line" data-label="" points="361.5571776155718,215.76642335766422 230.75425790754258,424.2335766423358" fill="none" stroke="hsl(224, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="1.58,0.765 -1.58,-0.765" data-type="line" data-label="" points="511.43552311435525,215.76642335766422 80.87591240875912,424.2335766423358" fill="none" stroke="hsl(224, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.5800000000000001,-0.665 -1.58,0.765" data-type="line" data-label="" points="375.18248175182487,410.6082725060827 80.87591240875912,215.76642335766422" fill="none" stroke="hsl(168, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="1.48,-0.665 -0.48,0.765" data-type="line" data-label="" points="497.81021897810217,410.6082725060827 230.75425790754258,215.76642335766422" fill="none" stroke="hsl(168, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.48,0.765 0,0.765 0,-0.765 -0.48,-0.765" data-type="line" data-label="" points="361.5571776155718,215.76642335766422 296.1557177615572,215.76642335766422 296.1557177615572,424.2335766423358 230.75425790754258,424.2335766423358" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.58,0.765 1.7800000000000002,0.765 1.7800000000000002,0 -1.68,0 -1.68,-0.765 -1.58,-0.765" data-type="line" data-label="" points="511.43552311435525,215.76642335766422 538.6861313868613,215.76642335766422 538.6861313868613,320 67.2506082725061,320 67.2506082725061,424.2335766423358 80.87591240875912,424.2335766423358" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.5800000000000001,-0.665 0.050000000000000044,-0.665 0.050000000000000044,-1.1594553499999996 -1.8800000000000001,-1.1594553499999996 -1.8800000000000001,0.765 -1.58,0.765" data-type="line" data-label="" points="375.18248175182487,410.6082725060827 302.9683698296837,410.6082725060827 302.9683698296837,477.9793177615571 40,477.9793177615571 40,215.76642335766422 80.87591240875912,215.76642335766422" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.48,-0.665 1.68,-0.665 1.68,1.1594553499999996 -0.1,1.1594553499999996 -0.1,0.765 -0.48,0.765" data-type="line" data-label="" points="497.81021897810217,410.6082725060827 525.0608272506083,410.6082725060827 525.0608272506083,162.02068223844287 282.53041362530416,162.02068223844287 282.53041362530416,215.76642335766422 230.75425790754258,215.76642335766422" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-1.03" data-y="0.765" x="80.87591240875912" y="189.27129051094897" width="149.87834549878346" height="52.9902656934305" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.007339285714285715"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="1.03" data-y="0.765" x="361.5571776155718" y="189.27129051094897" width="149.87834549878346" height="52.9902656934305" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.007339285714285715"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="-1.03" data-y="-0.765" x="80.87591240875912" y="397.7384437956205" width="149.87834549878346" height="52.9902656934305" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.007339285714285715"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="1.03" data-y="-0.765" x="375.18248175182487" y="388.1265206812652" width="122.6277372262773" height="72.21411192214111" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.007339285714285715"/></g><g><rect data-type="rect" data-label="netId: .J1 &gt; .pin1 to .R1 &gt; .pin1
2
+ globalConnNetId: connectivity_net2" data-x="0.31500000000000006" data-y="-0.44000000000000006" x="325.45012165450123" y="349.29440389294405" width="27.2506082725061" height="61.31386861313865" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.007339285714285715"/></g><g><rect data-type="rect" data-label="netId: .J1 &gt; .pin3 to .R1 &gt; .pin2
3
+ globalConnNetId: connectivity_net3" data-x="1.68" data-y="-0.89" x="511.43552311435525" y="410.6082725060827" width="27.250608272506156" height="61.31386861313871" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.007339285714285715"/></g><g><rect data-type="rect" data-label="netId: .R2 &gt; .pin1 to .R3 &gt; .pin2
4
+ globalConnNetId: connectivity_net0" data-x="0.24" data-y="0.54" x="315.23114355231144" y="215.76642335766422" width="27.2506082725061" height="61.31386861313871" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.007339285714285715"/></g><g><rect data-type="rect" data-label="netId: .R2 &gt; .pin2 to .R3 &gt; .pin1
5
+ globalConnNetId: connectivity_net1" data-x="2.0050000000000003" data-y="0.765" x="538.6861313868615" y="202.1411192214112" width="61.31386861313865" height="27.25060827250607" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.007339285714285715"/></g><g><circle data-type="point" data-label="R1.1
6
+ x-" data-x="-1.58" data-y="0.765" cx="80.87591240875912" cy="215.76642335766422" r="3" fill="hsl(226, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R1.2
7
+ x+" data-x="-0.48" data-y="0.765" cx="230.75425790754258" cy="215.76642335766422" r="3" fill="hsl(227, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R2.1
8
+ x-" data-x="0.48" data-y="0.765" cx="361.5571776155718" cy="215.76642335766422" r="3" fill="hsl(107, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R2.2
9
+ x+" data-x="1.58" data-y="0.765" cx="511.43552311435525" cy="215.76642335766422" r="3" fill="hsl(108, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R3.1
10
+ x-" data-x="-1.58" data-y="-0.765" cx="80.87591240875912" cy="424.2335766423358" r="3" fill="hsl(348, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R3.2
11
+ x+" data-x="-0.48" data-y="-0.765" cx="230.75425790754258" cy="424.2335766423358" r="3" fill="hsl(349, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="J1.1
12
+ x-" data-x="0.5800000000000001" data-y="-0.665" cx="375.18248175182487" cy="410.6082725060827" r="3" fill="hsl(218, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="J1.2
13
+ y-" data-x="1.03" data-y="-1.03" cx="436.4963503649635" cy="460.34063260340633" r="3" fill="hsl(219, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="J1.3
14
+ x+" data-x="1.48" data-y="-0.665" cx="497.81021897810217" cy="410.6082725060827" r="3" fill="hsl(220, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
15
+ orientation: y+" data-x="0.31500000000000006" data-y="-0.665" cx="339.07542579075425" cy="410.6082725060827" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
16
+ orientation: y-" data-x="1.68" data-y="-0.665" cx="525.0608272506083" cy="410.6082725060827" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
17
+ orientation: y-" data-x="0.24" data-y="0.765" cx="328.85644768856446" cy="215.76642335766422" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
18
+ orientation: x+" data-x="1.7800000000000002" data-y="0.765" cx="538.6861313868613" cy="215.76642335766422" 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[
19
19
  document.currentScript.parentElement.addEventListener('mousemove', (e) => {
20
20
  const svg = e.currentTarget;
21
21
  const rect = svg.getBoundingClientRect();
@@ -37,7 +37,7 @@ orientation: y+" data-x="1.7800000000000002" data-y="0.765" cx="585.106382978723
37
37
  v.setAttribute('y2', '640');
38
38
 
39
39
  // Calculate real coordinates using inverse transformation
40
- const matrix = {"a":148.93617021276594,"c":0,"e":319.99999999999994,"b":0,"d":-148.93617021276594,"f":327.4468085106383};
40
+ const matrix = {"a":136.2530413625304,"c":0,"e":296.1557177615572,"b":0,"d":-136.2530413625304,"f":320};
41
41
  // Manually invert and apply the affine transform
42
42
  // Since we only use translate and scale, we can directly compute:
43
43
  // x' = (x - tx) / sx
@@ -1,6 +1,5 @@
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.4002733499999995,-0.0012093000000001908 0.6000000000000001,0" data-type="line" data-label="" points="240.027335,339.4329900000001 160.00000000000003,339.31206000000003" fill="none" stroke="hsl(256, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="1.3997266500000003,1.1012093000000003 2.1487092999999997,1.3002732499999994" data-type="line" data-label="" points="239.97266500000006,229.19113 314.87093,209.2847350000001" fill="none" stroke="hsl(256, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="2.1487092999999997,1.3002732499999994 0.6000000000000001,0.2" data-type="line" data-label="" points="314.87093,209.2847350000001 160.00000000000003,319.31206000000003" fill="none" stroke="hsl(280, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="3.8000000000000003,0 3.2512907000000006,1.2997267500000007" data-type="line" data-label="" points="480,339.31206000000003 425.12907000000007,209.33938499999996" fill="none" stroke="hsl(336, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="3.8000000000000003,-0.9 3.2512907000000006,1.2997267500000007" data-type="line" data-label="" points="480,429.31206000000003 425.12907000000007,209.33938499999996" fill="none" stroke="hsl(336, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="2.0034928,-0.8350319000000007 0.6000000000000001,-0.2" data-type="line" data-label="" points="300.34928,422.8152500000001 160.00000000000003,359.31206000000003" fill="none" stroke="hsl(352, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="3.2512907000000006,1.2997267500000007 3.8000000000000003,0" data-type="line" data-label="" points="425.12907000000007,209.33938499999996 480,339.31206000000003" fill="none" stroke="hsl(123, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.2512907000000006,1.2997267500000007 3.8000000000000003,-0.9" data-type="line" data-label="" points="425.12907000000007,209.33938499999996 480,429.31206000000003" fill="none" stroke="hsl(123, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.8000000000000003,0 3.8000000000000003,-0.9" data-type="line" data-label="" points="480,339.31206000000003 480,429.31206000000003" fill="none" stroke="hsl(123, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.4002733499999995,-0.0012093000000001908 1.4002733499999995,-0.30120930000000024 1.0001366749999998,-0.30120930000000024 1.0001366749999998,0 0.6000000000000001,0" data-type="line" data-label="" points="240.027335,339.4329900000001 240.027335,369.4329900000001 200.0136675,369.4329900000001 200.0136675,339.31206000000003 160.00000000000003,339.31206000000003" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.1487092999999997,1.3002732499999994 1.3997266500000003,1.3002732499999994 1.3997266500000003,1.1012093000000003" data-type="line" data-label="" points="314.87093,209.2847350000001 239.97266500000006,209.2847350000001 239.97266500000006,229.19113" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.6000000000000001,0.2 0.9998633250000002,0.2 0.9998633250000002,1.3012093000000002 1.3997266500000003,1.3012093000000002 1.3997266500000003,1.1012093000000003" data-type="line" data-label="" points="160.00000000000003,319.31206000000003 199.98633250000006,319.31206000000003 199.98633250000006,209.19113000000002 239.97266500000006,209.19113000000002 239.97266500000006,229.19113" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="3.8000000000000003,-0.9 3.6000000000000005,-0.9 3.6000000000000005,0 3.8000000000000003,0" data-type="line" data-label="" points="480,429.31206000000003 460.0000000000001,429.31206000000003 460.0000000000001,339.31206000000003 480,339.31206000000003" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="3.2512907000000006,1.2997267500000007 3.5256453500000005,1.2997267500000007 3.5256453500000005,0 3.8000000000000003,0" data-type="line" data-label="" points="425.12907000000007,209.33938499999996 452.5645350000001,209.33938499999996 452.5645350000001,339.31206000000003 480,339.31206000000003" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.0034928,-0.8350319000000007 2.0034928,-0.1 0.7000000000000001,-0.1 0.7000000000000001,-0.2 0.6000000000000001,-0.2" data-type="line" data-label="" points="300.34928,422.8152500000001 300.34928,349.31206000000003 170.00000000000003,349.31206000000003 170.00000000000003,359.31206000000003 160.00000000000003,359.31206000000003" 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="40.00000000000003" y="299.31206000000003" width="120" height="80" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="1.4" data-y="0.55" x="213.54167" y="229.19113" width="52.916660000000036" height="110.24186000000009" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="2.7" data-y="1.3" x="314.87092999999993" y="189.86652500000008" width="110.25814000000008" height="38.8910699999999" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="4.4" data-y="0" x="480.0000000000001" y="319.31206000000003" width="120" height="40" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01"/></g><g><rect data-type="rect" data-label="schematic_component_4" data-x="4.4" data-y="-0.9" x="480.0000000000001" y="409.31206000000003" width="120" height="40" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01"/></g><g><rect data-type="rect" data-label="schematic_component_5" data-x="2" data-y="-1.1" x="255.41992" y="422.8152500000001" width="89.16015999999999" height="52.99361999999985" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01"/></g><g><rect data-type="rect" data-label="netId: solderjumper.JP8 &gt; port.pin2 to .U1 &gt; .pin6
2
- globalConnNetId: connectivity_net3" data-x="2.2284928" data-y="-0.46751595000000035" x="300.34928" y="376.06365500000004" width="45" height="20" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.01"/></g><g><rect data-type="rect" data-label="netId: capacitor.C2 &gt; port.pin1 to .U1 &gt; .pin8
3
- globalConnNetId: connectivity_net0" data-x="1.6252733499999996" data-y="-0.30120930000000024" x="240.027335" y="359.4329900000001" width="45" height="20" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.01"/></g><g><rect data-type="rect" data-label="netId: resistor.R1 &gt; port.pin1 to .U1 &gt; .pin1
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.4002733499999995,-0.0012093000000001908 0.6000000000000001,0" data-type="line" data-label="" points="240.027335,339.4329900000001 160.00000000000003,339.31206000000003" fill="none" stroke="hsl(256, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="1.3997266500000003,1.1012093000000003 2.1487092999999997,1.3002732499999994" data-type="line" data-label="" points="239.97266500000006,229.19113 314.87093,209.2847350000001" fill="none" stroke="hsl(256, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="2.1487092999999997,1.3002732499999994 0.6000000000000001,0.2" data-type="line" data-label="" points="314.87093,209.2847350000001 160.00000000000003,319.31206000000003" fill="none" stroke="hsl(280, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="3.8000000000000003,0 3.2512907000000006,1.2997267500000007" data-type="line" data-label="" points="480,339.31206000000003 425.12907000000007,209.33938499999996" fill="none" stroke="hsl(336, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="3.8000000000000003,-0.9 3.2512907000000006,1.2997267500000007" data-type="line" data-label="" points="480,429.31206000000003 425.12907000000007,209.33938499999996" fill="none" stroke="hsl(336, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="2.0034928,-0.8350319000000007 0.6000000000000001,-0.2" data-type="line" data-label="" points="300.34928,422.8152500000001 160.00000000000003,359.31206000000003" fill="none" stroke="hsl(352, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="3.2512907000000006,1.2997267500000007 3.8000000000000003,0" data-type="line" data-label="" points="425.12907000000007,209.33938499999996 480,339.31206000000003" fill="none" stroke="hsl(123, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.2512907000000006,1.2997267500000007 3.8000000000000003,-0.9" data-type="line" data-label="" points="425.12907000000007,209.33938499999996 480,429.31206000000003" fill="none" stroke="hsl(123, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.8000000000000003,0 3.8000000000000003,-0.9" data-type="line" data-label="" points="480,339.31206000000003 480,429.31206000000003" fill="none" stroke="hsl(123, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.4002733499999995,-0.0012093000000001908 1.4002733499999995,-0.1012093000000002 1.0001366749999998,-0.1012093000000002 1.0001366749999998,0 0.6000000000000001,0" data-type="line" data-label="" points="240.027335,339.4329900000001 240.027335,349.4329900000001 200.0136675,349.4329900000001 200.0136675,339.31206000000003 160.00000000000003,339.31206000000003" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.1487092999999997,1.3002732499999994 1.3997266500000003,1.3002732499999994 1.3997266500000003,1.1012093000000003" data-type="line" data-label="" points="314.87093,209.2847350000001 239.97266500000006,209.2847350000001 239.97266500000006,229.19113" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.6000000000000001,0.2 0.9998633250000002,0.2 0.9998633250000002,1.3012093000000002 1.3997266500000003,1.3012093000000002 1.3997266500000003,1.1012093000000003" data-type="line" data-label="" points="160.00000000000003,319.31206000000003 199.98633250000006,319.31206000000003 199.98633250000006,209.19113000000002 239.97266500000006,209.19113000000002 239.97266500000006,229.19113" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="3.8000000000000003,-0.9 3.6000000000000005,-0.9 3.6000000000000005,0 3.8000000000000003,0" data-type="line" data-label="" points="480,429.31206000000003 460.0000000000001,429.31206000000003 460.0000000000001,339.31206000000003 480,339.31206000000003" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="3.2512907000000006,1.2997267500000007 3.5256453500000005,1.2997267500000007 3.5256453500000005,0 3.8000000000000003,0" data-type="line" data-label="" points="425.12907000000007,209.33938499999996 452.5645350000001,209.33938499999996 452.5645350000001,339.31206000000003 480,339.31206000000003" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.0034928,-0.8350319000000007 2.0034928,-0.2 0.6000000000000001,-0.2" data-type="line" data-label="" points="300.34928,422.8152500000001 300.34928,359.31206000000003 160.00000000000003,359.31206000000003" 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="40.00000000000003" y="299.31206000000003" width="120" height="80" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="1.4" data-y="0.55" x="213.54167" y="229.19113" width="52.916660000000036" height="110.24186000000009" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="2.7" data-y="1.3" x="314.87092999999993" y="189.86652500000008" width="110.25814000000008" height="38.8910699999999" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="4.4" data-y="0" x="480.0000000000001" y="319.31206000000003" width="120" height="40" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01"/></g><g><rect data-type="rect" data-label="schematic_component_4" data-x="4.4" data-y="-0.9" x="480.0000000000001" y="409.31206000000003" width="120" height="40" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01"/></g><g><rect data-type="rect" data-label="schematic_component_5" data-x="2" data-y="-1.1" x="255.41992" y="422.8152500000001" width="89.16015999999999" height="52.99361999999985" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01"/></g><g><rect data-type="rect" data-label="netId: solderjumper.JP8 &gt; port.pin2 to .U1 &gt; .pin6
2
+ globalConnNetId: connectivity_net3" data-x="2.2284928" data-y="-0.5175159500000004" x="300.34928" y="381.06365500000004" width="45" height="19.999999999999943" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.01"/></g><g><rect data-type="rect" data-label="netId: resistor.R1 &gt; port.pin1 to .U1 &gt; .pin1
4
3
  globalConnNetId: connectivity_net1" data-x="1.3997266500000003" data-y="1.5262093000000003" x="229.97266500000006" y="164.19113" width="20.00000000000003" height="45.00000000000003" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.01"/></g><g><rect data-type="rect" data-label="netId: PAD
5
4
  globalConnNetId: connectivity_net2" data-x="3.3884680250000008" data-y="1.5247267500000008" x="428.8468025000001" y="164.33938499999994" width="20" height="45.00000000000003" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.01"/></g><g><circle data-type="point" data-label="U1.6
6
5
  x+" data-x="0.6000000000000001" data-y="-0.2" cx="160.00000000000003" cy="359.31206000000003" r="3" fill="hsl(324, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U1.8
@@ -15,8 +14,7 @@ x-" data-x="3.8000000000000003" data-y="-0.9" cx="480" cy="429.31206000000003" r
15
14
  x+" data-x="2.4458007999999998" data-y="-1.2015872704999997" cx="344.58008" cy="459.47078705" r="3" fill="hsl(245, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="JP8.2
16
15
  y+" data-x="2.0034928" data-y="-0.8350319000000007" cx="300.34928" cy="422.8152500000001" r="3" fill="hsl(246, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="JP8.3
17
16
  x-" data-x="1.5541992" data-y="-1.2014628704999997" cx="255.41992000000002" cy="459.45834705" r="3" fill="hsl(247, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
18
- orientation: x+" data-x="2.0034928" data-y="-0.46751595000000035" cx="300.34928" cy="386.06365500000004" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
19
- orientation: x+" data-x="1.4002733499999995" data-y="-0.30120930000000024" cx="240.027335" cy="369.4329900000001" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
17
+ orientation: x+" data-x="2.0034928" data-y="-0.5175159500000004" cx="300.34928" cy="391.06365500000004" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
20
18
  orientation: y+" data-x="1.3997266500000003" data-y="1.3012093000000002" cx="239.97266500000006" cy="209.19113000000002" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
21
19
  orientation: y+" data-x="3.3884680250000008" data-y="1.2997267500000007" cx="438.8468025000001" cy="209.33938499999996" 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[
22
20
  document.currentScript.parentElement.addEventListener('mousemove', (e) => {