@tscircuit/schematic-trace-solver 0.0.112 → 0.0.113
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.
- package/dist/index.d.ts +5 -0
- package/dist/index.js +44 -6
- package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +28 -3
- package/lib/solvers/TraceOverlapShiftSolver/TraceOverlapIssueSolver/TraceOverlapIssueSolver.ts +11 -1
- package/lib/solvers/TraceOverlapShiftSolver/TraceOverlapShiftSolver.ts +12 -0
- package/package.json +1 -1
- package/tests/bug-reports/bug-report-20260707T092615Z/__snapshots__/bug-report-20260707T092615Z.snap.svg +1 -1
- package/tests/repros/__snapshots__/repro-atmega328p-missing-gnd-netlabel.snap.svg +1 -1
- package/tests/repros/__snapshots__/repro-rp2040-usb-cc2-ground-overlap.snap.svg +70 -0
- package/tests/repros/assets/repro-rp2040-usb-cc2-ground-overlap.input.json +164 -0
- package/tests/repros/repro-rp2040-usb-cc2-ground-overlap.test.ts +95 -0
package/dist/index.d.ts
CHANGED
|
@@ -244,6 +244,7 @@ declare class TraceOverlapIssueSolver extends BaseSolver {
|
|
|
244
244
|
overlappingTraceSegments: OverlappingTraceSegmentLocator[];
|
|
245
245
|
interactionKind: TraceInteractionKind;
|
|
246
246
|
traceNetIslands: Record<ConnNetId$1, Array<SolvedTracePath>>;
|
|
247
|
+
traceIdsToShift?: Set<MspConnectionPairId>;
|
|
247
248
|
obstacleRects: ReturnType<typeof getObstacleRects>;
|
|
248
249
|
SHIFT_DISTANCE: number;
|
|
249
250
|
correctedTraceMap: Record<MspConnectionPairId, SolvedTracePath>;
|
|
@@ -252,6 +253,7 @@ declare class TraceOverlapIssueSolver extends BaseSolver {
|
|
|
252
253
|
overlappingTraceSegments: OverlappingTraceSegmentLocator[];
|
|
253
254
|
interactionKind: TraceInteractionKind;
|
|
254
255
|
traceNetIslands: Record<ConnNetId$1, Array<SolvedTracePath>>;
|
|
256
|
+
traceIdsToShift?: Set<MspConnectionPairId>;
|
|
255
257
|
});
|
|
256
258
|
_step(): void;
|
|
257
259
|
private applyOffsets;
|
|
@@ -284,6 +286,7 @@ declare class TraceOverlapShiftSolver extends BaseSolver {
|
|
|
284
286
|
inputProblem: InputProblem;
|
|
285
287
|
inputTracePaths: Array<SolvedTracePath>;
|
|
286
288
|
globalConnMap: ConnectivityMap;
|
|
289
|
+
traceIdsToShift?: Set<MspConnectionPairId>;
|
|
287
290
|
activeSubSolver: TraceOverlapIssueSolver | null;
|
|
288
291
|
/**
|
|
289
292
|
* A traceNetIsland is a set of traces that are connected via the globalConnMap
|
|
@@ -295,6 +298,7 @@ declare class TraceOverlapShiftSolver extends BaseSolver {
|
|
|
295
298
|
inputProblem: InputProblem;
|
|
296
299
|
inputTracePaths: Array<SolvedTracePath>;
|
|
297
300
|
globalConnMap: ConnectivityMap;
|
|
301
|
+
traceIdsToShift?: Set<MspConnectionPairId>;
|
|
298
302
|
});
|
|
299
303
|
getConstructorParams(): ConstructorParameters<typeof TraceOverlapShiftSolver>[0];
|
|
300
304
|
computeTraceNetIslands(): Record<ConnNetId, Array<SolvedTracePath>>;
|
|
@@ -1071,6 +1075,7 @@ declare class SchematicTracePipelineSolver extends BaseSolver {
|
|
|
1071
1075
|
traceCleanupSolver?: TraceCleanupSolver;
|
|
1072
1076
|
example28Solver?: Example28Solver;
|
|
1073
1077
|
availableNetOrientationSolver?: AvailableNetOrientationSolver;
|
|
1078
|
+
postLabelTraceOverlapShiftSolver?: TraceOverlapShiftSolver;
|
|
1074
1079
|
railNetLabelCornerPlacementSolver?: RailNetLabelCornerPlacementSolver;
|
|
1075
1080
|
traceAnchoredNetLabelOverlapSolver?: TraceAnchoredNetLabelOverlapSolver;
|
|
1076
1081
|
preAlignmentNetLabelTraceCollisionSolver?: NetLabelTraceCollisionSolver;
|
package/dist/index.js
CHANGED
|
@@ -1744,6 +1744,7 @@ var TraceOverlapIssueSolver = class extends BaseSolver {
|
|
|
1744
1744
|
overlappingTraceSegments;
|
|
1745
1745
|
interactionKind;
|
|
1746
1746
|
traceNetIslands;
|
|
1747
|
+
traceIdsToShift;
|
|
1747
1748
|
obstacleRects;
|
|
1748
1749
|
SHIFT_DISTANCE = 0.1;
|
|
1749
1750
|
correctedTraceMap = {};
|
|
@@ -1752,6 +1753,7 @@ var TraceOverlapIssueSolver = class extends BaseSolver {
|
|
|
1752
1753
|
this.overlappingTraceSegments = params.overlappingTraceSegments;
|
|
1753
1754
|
this.interactionKind = params.interactionKind;
|
|
1754
1755
|
this.traceNetIslands = params.traceNetIslands;
|
|
1756
|
+
this.traceIdsToShift = params.traceIdsToShift;
|
|
1755
1757
|
this.obstacleRects = getObstacleRects(params.inputProblem);
|
|
1756
1758
|
for (const { connNetId, pathsWithOverlap } of this.overlappingTraceSegments) {
|
|
1757
1759
|
for (const {
|
|
@@ -1769,7 +1771,13 @@ var TraceOverlapIssueSolver = class extends BaseSolver {
|
|
|
1769
1771
|
return path.tracePath.length === 2;
|
|
1770
1772
|
});
|
|
1771
1773
|
const groupShouldStayInPlace = this.overlappingTraceSegments.map(
|
|
1772
|
-
|
|
1774
|
+
(group) => {
|
|
1775
|
+
if (!this.traceIdsToShift) return containsStraightPinToPinTrace(group);
|
|
1776
|
+
return group.pathsWithOverlap.every(({ solvedTracePathIndex }) => {
|
|
1777
|
+
const path = this.traceNetIslands[group.connNetId][solvedTracePathIndex];
|
|
1778
|
+
return !this.traceIdsToShift.has(path.mspPairId);
|
|
1779
|
+
});
|
|
1780
|
+
}
|
|
1773
1781
|
);
|
|
1774
1782
|
const someGroupCanShift = groupShouldStayInPlace.some(
|
|
1775
1783
|
(shouldStay) => !shouldStay
|
|
@@ -2049,6 +2057,7 @@ var TraceOverlapShiftSolver = class extends BaseSolver {
|
|
|
2049
2057
|
inputProblem;
|
|
2050
2058
|
inputTracePaths;
|
|
2051
2059
|
globalConnMap;
|
|
2060
|
+
traceIdsToShift;
|
|
2052
2061
|
/**
|
|
2053
2062
|
* A traceNetIsland is a set of traces that are connected via the globalConnMap
|
|
2054
2063
|
*/
|
|
@@ -2060,6 +2069,7 @@ var TraceOverlapShiftSolver = class extends BaseSolver {
|
|
|
2060
2069
|
this.inputProblem = params.inputProblem;
|
|
2061
2070
|
this.inputTracePaths = params.inputTracePaths;
|
|
2062
2071
|
this.globalConnMap = params.globalConnMap;
|
|
2072
|
+
this.traceIdsToShift = params.traceIdsToShift;
|
|
2063
2073
|
for (const tracePath of this.inputTracePaths) {
|
|
2064
2074
|
const { mspPairId } = tracePath;
|
|
2065
2075
|
this.correctedTraceMap[mspPairId] = tracePath;
|
|
@@ -2070,7 +2080,8 @@ var TraceOverlapShiftSolver = class extends BaseSolver {
|
|
|
2070
2080
|
return {
|
|
2071
2081
|
inputProblem: this.inputProblem,
|
|
2072
2082
|
inputTracePaths: this.inputTracePaths,
|
|
2073
|
-
globalConnMap: this.globalConnMap
|
|
2083
|
+
globalConnMap: this.globalConnMap,
|
|
2084
|
+
traceIdsToShift: this.traceIdsToShift
|
|
2074
2085
|
};
|
|
2075
2086
|
}
|
|
2076
2087
|
computeTraceNetIslands() {
|
|
@@ -2158,6 +2169,9 @@ var TraceOverlapShiftSolver = class extends BaseSolver {
|
|
|
2158
2169
|
if (!aVert && !aHorz) continue;
|
|
2159
2170
|
for (let pb = 0; pb < pathsB.length; pb++) {
|
|
2160
2171
|
const pathB = pathsB[pb];
|
|
2172
|
+
if (this.traceIdsToShift && !this.traceIdsToShift.has(pathA.mspPairId) && !this.traceIdsToShift.has(pathB.mspPairId)) {
|
|
2173
|
+
continue;
|
|
2174
|
+
}
|
|
2161
2175
|
const ptsB = pathB.tracePath;
|
|
2162
2176
|
for (let sb = 0; sb < ptsB.length - 1; sb++) {
|
|
2163
2177
|
const b1 = ptsB[sb];
|
|
@@ -2307,7 +2321,8 @@ var TraceOverlapShiftSolver = class extends BaseSolver {
|
|
|
2307
2321
|
inputProblem: this.inputProblem,
|
|
2308
2322
|
interactionKind,
|
|
2309
2323
|
overlappingTraceSegments,
|
|
2310
|
-
traceNetIslands: this.traceNetIslands
|
|
2324
|
+
traceNetIslands: this.traceNetIslands,
|
|
2325
|
+
traceIdsToShift: this.traceIdsToShift
|
|
2311
2326
|
});
|
|
2312
2327
|
}
|
|
2313
2328
|
visualize() {
|
|
@@ -10632,6 +10647,7 @@ var SchematicTracePipelineSolver = class extends BaseSolver {
|
|
|
10632
10647
|
traceCleanupSolver;
|
|
10633
10648
|
example28Solver;
|
|
10634
10649
|
availableNetOrientationSolver;
|
|
10650
|
+
postLabelTraceOverlapShiftSolver;
|
|
10635
10651
|
railNetLabelCornerPlacementSolver;
|
|
10636
10652
|
traceAnchoredNetLabelOverlapSolver;
|
|
10637
10653
|
preAlignmentNetLabelTraceCollisionSolver;
|
|
@@ -10807,6 +10823,22 @@ var SchematicTracePipelineSolver = class extends BaseSolver {
|
|
|
10807
10823
|
}
|
|
10808
10824
|
]
|
|
10809
10825
|
),
|
|
10826
|
+
definePipelineStep(
|
|
10827
|
+
"postLabelTraceOverlapShiftSolver",
|
|
10828
|
+
TraceOverlapShiftSolver,
|
|
10829
|
+
(instance) => [
|
|
10830
|
+
{
|
|
10831
|
+
inputProblem: instance.inputProblem,
|
|
10832
|
+
inputTracePaths: instance.availableNetOrientationSolver.traces,
|
|
10833
|
+
globalConnMap: instance.mspConnectionPairSolver.globalConnMap,
|
|
10834
|
+
traceIdsToShift: new Set(
|
|
10835
|
+
instance.availableNetOrientationSolver.traces.filter(
|
|
10836
|
+
(trace) => trace.mspPairId.startsWith("available-net-orientation-")
|
|
10837
|
+
).map((trace) => trace.mspPairId)
|
|
10838
|
+
)
|
|
10839
|
+
}
|
|
10840
|
+
]
|
|
10841
|
+
),
|
|
10810
10842
|
definePipelineStep(
|
|
10811
10843
|
"railNetLabelCornerPlacementSolver",
|
|
10812
10844
|
RailNetLabelCornerPlacementSolver,
|
|
@@ -10814,7 +10846,9 @@ var SchematicTracePipelineSolver = class extends BaseSolver {
|
|
|
10814
10846
|
return [
|
|
10815
10847
|
{
|
|
10816
10848
|
inputProblem: instance.inputProblem,
|
|
10817
|
-
traces:
|
|
10849
|
+
traces: Object.values(
|
|
10850
|
+
instance.postLabelTraceOverlapShiftSolver.correctedTraceMap
|
|
10851
|
+
),
|
|
10818
10852
|
netLabelPlacements: instance.availableNetOrientationSolver.outputNetLabelPlacements
|
|
10819
10853
|
}
|
|
10820
10854
|
];
|
|
@@ -10826,7 +10860,9 @@ var SchematicTracePipelineSolver = class extends BaseSolver {
|
|
|
10826
10860
|
(instance) => [
|
|
10827
10861
|
{
|
|
10828
10862
|
inputProblem: instance.inputProblem,
|
|
10829
|
-
traces:
|
|
10863
|
+
traces: Object.values(
|
|
10864
|
+
instance.postLabelTraceOverlapShiftSolver.correctedTraceMap
|
|
10865
|
+
),
|
|
10830
10866
|
netLabelPlacements: instance.railNetLabelCornerPlacementSolver.outputNetLabelPlacements
|
|
10831
10867
|
}
|
|
10832
10868
|
]
|
|
@@ -10837,7 +10873,9 @@ var SchematicTracePipelineSolver = class extends BaseSolver {
|
|
|
10837
10873
|
(instance) => [
|
|
10838
10874
|
{
|
|
10839
10875
|
inputProblem: instance.inputProblem,
|
|
10840
|
-
traces:
|
|
10876
|
+
traces: Object.values(
|
|
10877
|
+
instance.postLabelTraceOverlapShiftSolver.correctedTraceMap
|
|
10878
|
+
),
|
|
10841
10879
|
netLabelPlacements: instance.traceAnchoredNetLabelOverlapSolver.outputNetLabelPlacements
|
|
10842
10880
|
}
|
|
10843
10881
|
]
|
|
@@ -79,6 +79,7 @@ export class SchematicTracePipelineSolver extends BaseSolver {
|
|
|
79
79
|
traceCleanupSolver?: TraceCleanupSolver
|
|
80
80
|
example28Solver?: Example28Solver
|
|
81
81
|
availableNetOrientationSolver?: AvailableNetOrientationSolver
|
|
82
|
+
postLabelTraceOverlapShiftSolver?: TraceOverlapShiftSolver
|
|
82
83
|
railNetLabelCornerPlacementSolver?: RailNetLabelCornerPlacementSolver
|
|
83
84
|
traceAnchoredNetLabelOverlapSolver?: TraceAnchoredNetLabelOverlapSolver
|
|
84
85
|
preAlignmentNetLabelTraceCollisionSolver?: NetLabelTraceCollisionSolver
|
|
@@ -280,6 +281,24 @@ export class SchematicTracePipelineSolver extends BaseSolver {
|
|
|
280
281
|
},
|
|
281
282
|
],
|
|
282
283
|
),
|
|
284
|
+
definePipelineStep(
|
|
285
|
+
"postLabelTraceOverlapShiftSolver",
|
|
286
|
+
TraceOverlapShiftSolver,
|
|
287
|
+
(instance) => [
|
|
288
|
+
{
|
|
289
|
+
inputProblem: instance.inputProblem,
|
|
290
|
+
inputTracePaths: instance.availableNetOrientationSolver!.traces,
|
|
291
|
+
globalConnMap: instance.mspConnectionPairSolver!.globalConnMap,
|
|
292
|
+
traceIdsToShift: new Set(
|
|
293
|
+
instance
|
|
294
|
+
.availableNetOrientationSolver!.traces.filter((trace) =>
|
|
295
|
+
trace.mspPairId.startsWith("available-net-orientation-"),
|
|
296
|
+
)
|
|
297
|
+
.map((trace) => trace.mspPairId),
|
|
298
|
+
),
|
|
299
|
+
},
|
|
300
|
+
],
|
|
301
|
+
),
|
|
283
302
|
definePipelineStep(
|
|
284
303
|
"railNetLabelCornerPlacementSolver",
|
|
285
304
|
RailNetLabelCornerPlacementSolver,
|
|
@@ -287,7 +306,9 @@ export class SchematicTracePipelineSolver extends BaseSolver {
|
|
|
287
306
|
return [
|
|
288
307
|
{
|
|
289
308
|
inputProblem: instance.inputProblem,
|
|
290
|
-
traces:
|
|
309
|
+
traces: Object.values(
|
|
310
|
+
instance.postLabelTraceOverlapShiftSolver!.correctedTraceMap,
|
|
311
|
+
),
|
|
291
312
|
netLabelPlacements:
|
|
292
313
|
instance.availableNetOrientationSolver!.outputNetLabelPlacements,
|
|
293
314
|
},
|
|
@@ -300,7 +321,9 @@ export class SchematicTracePipelineSolver extends BaseSolver {
|
|
|
300
321
|
(instance) => [
|
|
301
322
|
{
|
|
302
323
|
inputProblem: instance.inputProblem,
|
|
303
|
-
traces:
|
|
324
|
+
traces: Object.values(
|
|
325
|
+
instance.postLabelTraceOverlapShiftSolver!.correctedTraceMap,
|
|
326
|
+
),
|
|
304
327
|
netLabelPlacements:
|
|
305
328
|
instance.railNetLabelCornerPlacementSolver!
|
|
306
329
|
.outputNetLabelPlacements,
|
|
@@ -313,7 +336,9 @@ export class SchematicTracePipelineSolver extends BaseSolver {
|
|
|
313
336
|
(instance) => [
|
|
314
337
|
{
|
|
315
338
|
inputProblem: instance.inputProblem,
|
|
316
|
-
traces:
|
|
339
|
+
traces: Object.values(
|
|
340
|
+
instance.postLabelTraceOverlapShiftSolver!.correctedTraceMap,
|
|
341
|
+
),
|
|
317
342
|
netLabelPlacements:
|
|
318
343
|
instance.traceAnchoredNetLabelOverlapSolver!
|
|
319
344
|
.outputNetLabelPlacements,
|
package/lib/solvers/TraceOverlapShiftSolver/TraceOverlapIssueSolver/TraceOverlapIssueSolver.ts
CHANGED
|
@@ -26,6 +26,7 @@ export class TraceOverlapIssueSolver extends BaseSolver {
|
|
|
26
26
|
overlappingTraceSegments: OverlappingTraceSegmentLocator[]
|
|
27
27
|
interactionKind: TraceInteractionKind
|
|
28
28
|
traceNetIslands: Record<ConnNetId, Array<SolvedTracePath>>
|
|
29
|
+
traceIdsToShift?: Set<MspConnectionPairId>
|
|
29
30
|
obstacleRects: ReturnType<typeof getObstacleRects>
|
|
30
31
|
|
|
31
32
|
SHIFT_DISTANCE = 0.1
|
|
@@ -37,11 +38,13 @@ export class TraceOverlapIssueSolver extends BaseSolver {
|
|
|
37
38
|
overlappingTraceSegments: OverlappingTraceSegmentLocator[]
|
|
38
39
|
interactionKind: TraceInteractionKind
|
|
39
40
|
traceNetIslands: Record<ConnNetId, Array<SolvedTracePath>>
|
|
41
|
+
traceIdsToShift?: Set<MspConnectionPairId>
|
|
40
42
|
}) {
|
|
41
43
|
super()
|
|
42
44
|
this.overlappingTraceSegments = params.overlappingTraceSegments
|
|
43
45
|
this.interactionKind = params.interactionKind
|
|
44
46
|
this.traceNetIslands = params.traceNetIslands
|
|
47
|
+
this.traceIdsToShift = params.traceIdsToShift
|
|
45
48
|
this.obstacleRects = getObstacleRects(params.inputProblem)
|
|
46
49
|
|
|
47
50
|
// Only add the relevant traces to the correctedTraceMap
|
|
@@ -76,7 +79,14 @@ export class TraceOverlapIssueSolver extends BaseSolver {
|
|
|
76
79
|
})
|
|
77
80
|
|
|
78
81
|
const groupShouldStayInPlace = this.overlappingTraceSegments.map(
|
|
79
|
-
|
|
82
|
+
(group) => {
|
|
83
|
+
if (!this.traceIdsToShift) return containsStraightPinToPinTrace(group)
|
|
84
|
+
return group.pathsWithOverlap.every(({ solvedTracePathIndex }) => {
|
|
85
|
+
const path =
|
|
86
|
+
this.traceNetIslands[group.connNetId][solvedTracePathIndex]!
|
|
87
|
+
return !this.traceIdsToShift!.has(path.mspPairId)
|
|
88
|
+
})
|
|
89
|
+
},
|
|
80
90
|
)
|
|
81
91
|
const someGroupCanShift = groupShouldStayInPlace.some(
|
|
82
92
|
(shouldStay) => !shouldStay,
|
|
@@ -34,6 +34,7 @@ export class TraceOverlapShiftSolver extends BaseSolver {
|
|
|
34
34
|
inputProblem: InputProblem
|
|
35
35
|
inputTracePaths: Array<SolvedTracePath>
|
|
36
36
|
globalConnMap: ConnectivityMap
|
|
37
|
+
traceIdsToShift?: Set<MspConnectionPairId>
|
|
37
38
|
|
|
38
39
|
declare activeSubSolver: TraceOverlapIssueSolver | null
|
|
39
40
|
|
|
@@ -50,11 +51,13 @@ export class TraceOverlapShiftSolver extends BaseSolver {
|
|
|
50
51
|
inputProblem: InputProblem
|
|
51
52
|
inputTracePaths: Array<SolvedTracePath>
|
|
52
53
|
globalConnMap: ConnectivityMap
|
|
54
|
+
traceIdsToShift?: Set<MspConnectionPairId>
|
|
53
55
|
}) {
|
|
54
56
|
super()
|
|
55
57
|
this.inputProblem = params.inputProblem
|
|
56
58
|
this.inputTracePaths = params.inputTracePaths
|
|
57
59
|
this.globalConnMap = params.globalConnMap
|
|
60
|
+
this.traceIdsToShift = params.traceIdsToShift
|
|
58
61
|
|
|
59
62
|
for (const tracePath of this.inputTracePaths) {
|
|
60
63
|
const { mspPairId } = tracePath
|
|
@@ -71,6 +74,7 @@ export class TraceOverlapShiftSolver extends BaseSolver {
|
|
|
71
74
|
inputProblem: this.inputProblem,
|
|
72
75
|
inputTracePaths: this.inputTracePaths,
|
|
73
76
|
globalConnMap: this.globalConnMap,
|
|
77
|
+
traceIdsToShift: this.traceIdsToShift,
|
|
74
78
|
}
|
|
75
79
|
}
|
|
76
80
|
|
|
@@ -211,6 +215,13 @@ export class TraceOverlapShiftSolver extends BaseSolver {
|
|
|
211
215
|
|
|
212
216
|
for (let pb = 0; pb < pathsB.length; pb++) {
|
|
213
217
|
const pathB = pathsB[pb]!
|
|
218
|
+
if (
|
|
219
|
+
this.traceIdsToShift &&
|
|
220
|
+
!this.traceIdsToShift.has(pathA.mspPairId) &&
|
|
221
|
+
!this.traceIdsToShift.has(pathB.mspPairId)
|
|
222
|
+
) {
|
|
223
|
+
continue
|
|
224
|
+
}
|
|
214
225
|
const ptsB = pathB.tracePath
|
|
215
226
|
for (let sb = 0; sb < ptsB.length - 1; sb++) {
|
|
216
227
|
const b1 = ptsB[sb]!
|
|
@@ -392,6 +403,7 @@ export class TraceOverlapShiftSolver extends BaseSolver {
|
|
|
392
403
|
interactionKind,
|
|
393
404
|
overlappingTraceSegments,
|
|
394
405
|
traceNetIslands: this.traceNetIslands,
|
|
406
|
+
traceIdsToShift: this.traceIdsToShift,
|
|
395
407
|
})
|
|
396
408
|
}
|
|
397
409
|
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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="-4.3400000000000025,-7.364455349999998 -4.140000000000002,-7.364455349999998 -4.140000000000002,-6.844727674999999 -4.890000000000002,-6.844727674999999 -4.890000000000002,-6.324999999999998" data-type="line" data-label="" points="241.17494151286712,455.8294775149467 246.99766051468674,455.8294775149467 246.99766051468674,440.6983364699766 225.16246425786323,440.6983364699766 225.16246425786323,425.5671954250065" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.6400000000000023,-7.364455349999998 -4.3400000000000025,-7.364455349999998" data-type="line" data-label="" points="261.5544580192357,455.8294775149467 241.17494151286712,455.8294775149467" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-9.808910699999998,-1.705000000000001 -9.808910699999998,-1.9050000000000002 -10.4289107,-1.9050000000000002 -10.4289107,-4.214999999999999 -9.808910699999998,-4.214999999999999 -9.808910699999998,-4.015" data-type="line" data-label="" points="81.95529025214461,291.0623864829738 81.95529025214461,296.88510548479337 63.90486134650382,296.88510548479337 63.90486134650382,364.1375099558097 81.95529025214461,364.1375099558097 81.95529025214461,358.31479095399015" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-11.05,-8.129999999999999 -11.25,-8.129999999999999 -11.25,-7.227499999999999 -10.475,-7.227499999999999 -10.475,-6.324999999999999" data-type="line" data-label="" points="45.82271900181962,478.1172344164284 40,478.1172344164284 40,451.8422149207174 62.56303613205097,451.8422149207174 62.56303613205097,425.5671954250065" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-11.05,-8.329999999999998 -11.25,-8.329999999999998 -11.25,-8.129999999999999 -11.05,-8.129999999999999" data-type="line" data-label="" points="45.82271900181962,483.93995341824797 40,483.93995341824797 40,478.1172344164284 45.82271900181962,478.1172344164284" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-9.05,-8.129999999999999 -8.850000000000001,-8.129999999999999 -8.850000000000001,-8.329999999999998 -9.05,-8.329999999999998" data-type="line" data-label="" points="104.0499090200156,478.1172344164284 109.87262802183517,478.1172344164284 109.87262802183517,483.93995341824797 104.0499090200156,483.93995341824797" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-0.8300000000000005,-0.09999999999999959 -1.5050000000000008,-0.09999999999999964" data-type="line" data-label="" points="343.36365999480114,244.33506649337147 323.71198336366,244.33506649337147" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.130000000000001,3.2594553499999996 -2.505000000000001,3.2594553499999996 -2.505000000000001,2.7199999999999998 -1.8800000000000003,2.7199999999999998 -1.8800000000000003,2.92" data-type="line" data-label="" points="276.40239147387575,146.52924398232392 294.59838835456196,146.52924398232392 294.59838835456196,162.23472856771514 312.7943852352482,162.23472856771514 312.7943852352482,156.41200956589552" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999995,0.10000000000000042 1.8449999999999998,0.10000000000000016" data-type="line" data-label="" points="401.5908500129972,238.51234749155188 421.2425266441383,238.51234749155188" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999995,1.3500000000000003 1.1699999999999995,0.7250000000000003 1.3699999999999994,0.7250000000000003 1.3699999999999994,0.10000000000000042 1.1699999999999995,0.10000000000000042" data-type="line" data-label="" points="401.5908500129972,202.12035373017937 401.5908500129972,220.31635061086564 407.41356901481674,220.31635061086564 407.41356901481674,238.51234749155188 401.5908500129972,238.51234749155188" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-0.08000000000000074,1.6894553499999998 0.5449999999999994,1.6894553499999998 0.5449999999999994,1.1500000000000004 1.1699999999999995,1.1500000000000004 1.1699999999999995,1.3500000000000003" data-type="line" data-label="" points="365.19885625162465,192.23758814660778 383.3948531323109,192.23758814660778 383.3948531323109,207.943072731999 401.5908500129972,207.943072731999 401.5908500129972,202.12035373017937" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="4.210000000000001,-2.1794553499999987 4.210000000000001,-1.659727674999999 3.460000000000001,-1.659727674999999 3.460000000000001,-1.1399999999999992 3.660000000000001,-1.1399999999999992" data-type="line" data-label="" points="490.0961788406551,304.8754873927736 490.0961788406551,289.74434634780346 468.2609825838316,289.74434634780346 468.2609825838316,274.61320530283336 474.0837015856512,274.61320530283336" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999982,-6.119999999999999 1.8449999999999984,-6.119999999999999" data-type="line" data-label="" points="401.5908500129971,419.5989084481414 421.24252664413825,419.5989084481414" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999973,-7.469999999999999 1.1699999999999973,-6.794999999999999 1.3699999999999983,-6.794999999999999 1.3699999999999983,-6.119999999999999 1.1699999999999982,-6.119999999999999" data-type="line" data-label="" points="401.59085001299707,458.9022617104237 401.59085001299707,439.2505850792826 407.41356901481674,439.2505850792826 407.41356901481674,419.5989084481414 401.5908500129971,419.5989084481414" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.4199999999999973,-7.699455349999998 2.174727674999997,-7.699455349999998 2.174727674999997,-7.269999999999999 1.1699999999999973,-7.269999999999999 1.1699999999999973,-7.469999999999999" data-type="line" data-label="" points="437.9828437743696,465.5825318429945 430.84208463737974,465.5825318429945 430.84208463737974,453.0795427086041 401.59085001299707,453.0795427086041 401.59085001299707,458.9022617104237" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.3100000000000005,-0.09999999999999964 -2.6350000000000007,-0.09999999999999964" data-type="line" data-label="" points="271.1619443722381,244.33506649337147 290.81362100337924,244.33506649337147" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.660000000000001,1.6800000000000002 -2.9850000000000003,1.6800000000000002" data-type="line" data-label="" points="260.9721861190538,192.51286737717703 280.623862750195,192.51286737717703" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.9499999999999997,1.35 2.9499999999999997,0.7250000000000005 3.175,0.7250000000000005 3.175,0.10000000000000053 2.9749999999999996,0.10000000000000053" data-type="line" data-label="" points="453.41304912919156,202.12035373017937 453.41304912919156,220.3163506108656 459.96360800623864,220.3163506108656 459.96360800623864,238.51234749155188 454.140889004419,238.51234749155188" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.41,-2.92 2.4099999999999997,-2.244999999999999" data-type="line" data-label="" points="437.6917078242787,326.43540441902786 437.6917078242787,306.7837277878867" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="4.249999999999997,-6.119999999999999 2.9749999999999983,-6.119999999999999" data-type="line" data-label="" points="491.2607226410189,419.5989084481414 454.140889004419,419.5989084481414" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-7.200000000000001,-10.398910699999997 -7.400000000000001,-10.398910699999997 -7.400000000000001,-10.198910699999997 -7.200000000000001,-10.198910699999997" data-type="line" data-label="" points="157.9100597868469,544.1733816480373 152.08734078502727,544.1733816480373 152.08734078502727,538.3506626462179 157.9100597868469,538.3506626462179" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-5.200000000000001,-10.198910699999997 -5.000000000000001,-10.198910699999997 -5.000000000000001,-10.398910699999997 -5.200000000000001,-10.398910699999997" data-type="line" data-label="" points="216.13724980504287,538.3506626462179 221.9599688068625,538.3506626462179 221.9599688068625,544.1733816480373 216.13724980504287,544.1733816480373" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-4.760000000000001,1.6800000000000002 -4.960000000000001,1.6800000000000002 -4.960000000000001,-0.09999999999999964 -4.410000000000001,-0.09999999999999964" data-type="line" data-label="" points="228.947231609046,192.51286737717703 223.12451260722642,192.51286737717703 223.12451260722642,244.33506649337147 239.1369898622303,244.33506649337147" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999995,2.45 1.1699999999999995,2.6500000000000004 2.9499999999999997,2.6500000000000004 2.9499999999999997,2.4500000000000006" data-type="line" data-label="" points="401.5908500129972,170.0953992201716 401.5908500129972,164.27268021835198 453.41304912919156,164.27268021835198 453.41304912919156,170.09539922017157" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-7.5994553499999995,-1.3305446499999976 -7.5994553499999995,-0.42804464999999814 -8.965,-0.42804464999999814 -8.965,0.4744553500000013 -7.965000000000001,0.4744553500000013" data-type="line" data-label="" points="146.28047850272944,280.1606450740837 146.28047850272944,253.88562557837272 106.52456459578895,253.88562557837272 106.52456459578895,227.6106060826618 135.63815960488694,227.6106060826618" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-6.3494553499999995,-4.019999999999998 -6.3494553499999995,-4.219999999999998 -7.5994553499999995,-4.219999999999998 -7.5994553499999995,-2.430544649999999" data-type="line" data-label="" points="182.67247226410194,358.4603589290356 182.67247226410194,364.2830779308552 146.28047850272944,364.2830779308552 146.28047850272944,312.1855995840915" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-6.65,-5.8199999999999985 -6.450000000000001,-5.8199999999999985 -6.450000000000001,-6.914727674999998 -7.950000000000001,-6.914727674999998 -7.950000000000001,-8.009455349999998 -7.750000000000001,-8.009455349999998" data-type="line" data-label="" points="173.9225370418508,410.864829945412 179.7452560436704,410.864829945412 179.7452560436704,442.73628812061344 136.07486353002338,442.73628812061344 136.07486353002338,474.6077462958149 141.897582531843,474.6077462958149" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-8.650000000000002,-5.8199999999999985 -9.5625,-5.8199999999999985 -9.5625,-5.024999999999999 -10.475,-5.024999999999999 -10.475,-5.224999999999998" data-type="line" data-label="" points="115.69534702365476,410.864829945412 89.12919157785291,410.864829945412 89.12919157785291,387.71952191317905 62.56303613205097,387.71952191317905 62.56303613205097,393.5422409149987" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999982,-5.92 1.5074999999999983,-5.92 1.5074999999999983,-5.329999999999999 2.41,-5.329999999999999 2.41,-4.02" data-type="line" data-label="" points="401.5908500129971,413.77618944632184 411.4166883285677,413.77618944632184 411.4166883285677,396.599168390954 437.6917078242787,396.599168390954 437.6917078242787,358.46035892903564" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-4.890000000000002,-5.224999999999999 -4.890000000000002,-3.8324999999999996 -1.86945535,-3.8324999999999996 -1.86945535,-2.44" data-type="line" data-label="" points="225.16246425786323,393.54224091499873 225.16246425786323,353.00155986482974 313.10137790486095,353.00155986482974 313.10137790486095,312.4608788146608" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-9.808910699999998,-0.6049999999999982 -9.808910699999998,0.4744553500000017 -7.965000000000001,0.4744553500000017" data-type="line" data-label="" points="81.95529025214461,259.0374319729659 81.95529025214461,227.6106060826618 135.63815960488694,227.6106060826618" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-6.3494553499999995,-2.919999999999998 -6.3494553499999995,-1.6794553499999996 -4.2194553500000005,-1.6794553499999996" data-type="line" data-label="" points="182.67247226410194,326.4354044190278 182.67247226410194,290.31868988822464 244.68442963348065,290.31868988822464" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="7.0649999999999995,0.3272767499999982 7.265,0.3272767499999982 7.265,1.3167320999999976 5.765,1.3167320999999976 5.765,2.3061874499999973 5.965,2.3061874499999973" data-type="line" data-label="" points="573.2154925916299,231.89550423706794 579.0382115934494,231.89550423706794 579.0382115934494,203.08890189758262 535.3678190798025,203.08890189758262 535.3678190798025,174.28229955809732 541.1905380816221,174.28229955809732" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="7.0649999999999995,-1.6516339500000008 7.265,-1.6516339500000008 7.265,-0.6621786000000013 5.765,-0.6621786000000013 5.765,0.3272767499999982 5.965,0.3272767499999982" data-type="line" data-label="" points="573.2154925916299,289.50870891603853 579.0382115934494,289.50870891603853 579.0382115934494,260.7021065765532 535.3678190798025,260.7021065765532 535.3678190798025,231.89550423706794 541.1905380816221,231.89550423706794" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="7.0649999999999995,-3.63054465 7.265,-3.63054465 7.265,-2.6410893000000004 5.765,-2.6410893000000004 5.765,-1.6516339500000008 5.965,-1.6516339500000008" data-type="line" data-label="" points="573.2154925916299,347.1219135950091 579.0382115934494,347.1219135950091 579.0382115934494,318.31531125552385 535.3678190798025,318.31531125552385 535.3678190798025,289.50870891603853 541.1905380816221,289.50870891603853" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.119455350000001,-1.6794553499999991 -2.9194553500000007,-1.6794553499999991 -2.9194553500000007,-1.3399999999999994 -1.8694553500000004,-1.3399999999999994" data-type="line" data-label="" points="276.7093841434884,290.3186898882246 282.53210314530804,290.3186898882246 282.53210314530804,280.435924304653 313.10137790486095,280.435924304653" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.4099999999999997,-1.1149999999999993 2.4099999999999997,-0.9149999999999994 3.460000000000001,-0.9149999999999994 3.460000000000001,-1.1399999999999992" data-type="line" data-label="" points="437.6917078242787,273.88536542760596 437.6917078242787,268.06264642578634 468.2609825838316,268.06264642578634 468.2609825838316,274.61320530283336" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.8694553500000004,-1.3399999999999994 -1.8694553500000004,-0.7199999999999995 -1.3050000000000008,-0.7199999999999995 -1.3050000000000008,-0.09999999999999964 -1.5050000000000008,-0.09999999999999964" data-type="line" data-label="" points="313.10137790486095,280.435924304653 313.10137790486095,262.38549539901226 329.5347023654796,262.38549539901226 329.5347023654796,244.33506649337147 323.71198336366,244.33506649337147" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999995,-1.0999999999999996 1.9909999999999992,-1.0999999999999994 1.9909999999999992,-0.6999999999999995 1.1699999999999995,-0.6999999999999995" data-type="line" data-label="" points="401.5908500129972,273.44866150246946 425.4931115154666,273.44866150246946 425.4931115154666,261.8032234988303 401.5908500129972,261.8032234988303" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-0.8300000000000005,-0.8999999999999996 -1.0300000000000005,-0.8999999999999996 -1.0300000000000005,-0.49999999999999967 -0.8300000000000005,-0.49999999999999967" data-type="line" data-label="" points="343.36365999480114,267.6259425006499 337.5409409929816,267.6259425006499 337.5409409929816,255.98050449701068 343.36365999480114,255.98050449701068" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999995,-0.2999999999999995 1.4699999999999998,-0.2999999999999995 1.4699999999999998,-3.1599999999999997 -1.7710000000000017,-3.1599999999999997 -1.7710000000000017,-6.019999999999999 -0.8300000000000018,-6.02" data-type="line" data-label="" points="401.5908500129972,250.15778549519106 410.3249285157266,250.15778549519106 410.3249285157266,333.4226672212113 315.9677670912399,333.4226672212113 315.9677670912399,416.68754894723156 343.36365999480114,416.6875489472316" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-0.8300000000000005,0.10000000000000042 -1.3425000000000005,0.10000000000000042 -1.3425000000000005,1.6800000000000002 -1.8550000000000004,1.6800000000000002" data-type="line" data-label="" points="343.36365999480114,238.51234749155188 328.44294255263844,238.51234749155188 328.44294255263844,192.51286737717703 313.5222251104757,192.51286737717703" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="4.760000000000001,-1.1399999999999992 5.549999999999997,-1.1399999999999992 5.549999999999997,-3.43054465 5.024,-3.43054465 5.024,-3.83054465 5.549999999999997,-3.83054465 5.549999999999997,-6.119999999999999 5.349999999999997,-6.119999999999999" data-type="line" data-label="" points="506.108656095659,274.61320530283336 529.1083961528464,274.61320530283336 529.1083961528464,341.29919459318955 513.7946451780608,341.29919459318955 513.7946451780608,352.94463259682874 529.1083961528464,352.94463259682874 529.1083961528464,419.5989084481414 523.2856771510267,419.5989084481414" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-8.850000000000001,-8.129999999999999 -8.59,-8.129999999999999 -8.59,-8.130999999999998" data-type="line" data-label="" points="109.87262802183517,478.1172344164284 117.4421627242007,478.1172344164284 117.4421627242007,478.14634801143745" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-5.965000000000001,0.4744553500000013 -5.7540000000000004,0.4744553500000013 -5.7540000000000004,0.27345535000000126" data-type="line" data-label="" points="193.86534962308292,227.6106060826618 200.0083181700026,227.6106060826618 200.0083181700026,233.4624386794905" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.6400000000000023,-7.564455349999998 -3.851000000000002,-7.564455349999998 -3.851000000000002,-7.765455349999998" data-type="line" data-label="" points="261.5544580192357,461.65219651676625 255.41148947231605,461.65219651676625 255.41148947231605,467.504029113595" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-9.808910699999998,-2.9149999999999983 -9.808910699999998,-1.763999999999998 -10.259910699999997,-1.763999999999998" data-type="line" data-label="" points="81.95529025214461,326.2898364439823 81.95529025214461,292.7800885885105 68.82505890304145,292.7800885885105" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.8800000000000003,4.0200000000000005 -1.8800000000000003,5.321000000000001 -2.9310000000000005,5.321000000000001" data-type="line" data-label="" points="312.7943852352482,124.38705505588771 312.7943852352482,86.51026794905121 282.19599688068627,86.51026794905121" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999973,-8.57 1.1699999999999973,-8.671 0.9689999999999974,-8.671" data-type="line" data-label="" points="401.59085001299707,490.92721622043155 401.59085001299707,493.8676893163504 395.7390174161684,493.8676893163504" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="4.210000000000001,-3.2794553499999983 4.210000000000001,-3.8304553499999985 4.159000000000001,-3.8304553499999985" data-type="line" data-label="" points="490.0961788406551,336.9004419027814 490.0961788406551,352.9420327527944 488.6113854951911,352.9420327527944" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-6.200000000000001" data-y="-10.298910699999997" x="157.9100597868469" y="532.5279436443982" width="58.227190018195984" height="17.468157005458806" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="-10.05" data-y="-8.229999999999999" x="45.82271900181962" y="472.2945154146088" width="58.227190018195984" height="17.468157005458806" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="-7.650000000000001" data-y="-5.8199999999999985" x="115.69534702365476" y="405.04211094359243" width="58.22719001819604" height="11.645438003639129" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="-6.965000000000001" data-y="0.4744553500000013" x="135.63815960488694" y="221.7878870808422" width="58.227190018195984" height="11.645438003639185" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_4" data-x="-2.6400000000000023" data-y="-7.464455349999998" x="261.55445801923565" y="450.0067585131271" width="58.22719001819604" height="17.46815700545875" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_5" data-x="0.16999999999999948" data-y="-0.49999999999999956" x="343.3636599948011" y="232.68962848973229" width="58.22719001819604" height="46.5817520145568" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_6" data-x="0.16999999999999815" data-y="-6.02" x="343.36365999480114" y="405.04211094359243" width="58.227190018195984" height="23.29087600727837" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_7" data-x="-9.6714107" data-y="-3.464999999999999" x="69.72758034832336" y="326.28983644398227" width="32.46165843514433" height="32.02495451000783" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_8" data-x="-10.337499999999999" data-y="-5.774999999999999" x="50.33532622822983" y="393.54224091499873" width="32.46165843514433" height="32.02495451000783" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_9" data-x="-9.551410699999998" data-y="-1.154999999999999" x="69.72758034832344" y="259.0374319729659" width="39.448921237327795" height="32.02495451000783" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_10" data-x="-4.597500000000002" data-y="-5.774999999999999" x="219.50116995061086" y="393.54224091499873" width="28.35404169482706" height="32.024954510007774" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_11" data-x="-7.200000000000001" data-y="-8.009455349999998" x="141.897582531843" y="463.2693009617884" width="32.024954510007774" height="22.67689066805292" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_12" data-x="-7.306955349999999" data-y="-1.8805446499999983" x="140.6191841954771" y="280.1606450740836" width="28.35404169482706" height="32.02495451000783" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_13" data-x="-4.890000000000002" data-y="-7.364455349999998" x="209.14998700285935" y="443.32648838055627" width="32.0249545100078" height="25.005978268780837" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_14" data-x="6.515" data-y="-3.63054465" x="541.1905380816221" y="335.78346826098266" width="32.024954510007774" height="22.676890668052977" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_15" data-x="6.515" data-y="-1.6516339500000008" x="541.1905380816221" y="278.170263582012" width="32.024954510007774" height="22.676890668053034" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_16" data-x="6.515" data-y="0.3272767499999982" x="541.1905380816221" y="220.55705890304142" width="32.024954510007774" height="22.676890668053005" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_17" data-x="6.515" data-y="2.3061874499999973" x="541.1905380816221" y="162.94385422407083" width="32.024954510007774" height="22.676890668052977" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_18" data-x="-5.9969553499999995" data-y="-3.469999999999998" x="177.01117795684956" y="326.4354044190278" width="31.84767309591885" height="32.024954510007774" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_19" data-x="-3.6694553500000007" data-y="-1.6794553499999991" x="244.68442963348065" y="277.81570075383416" width="32.024954510007774" height="25.005978268780837" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_20" data-x="-3.6800000000000006" data-y="3.2594553499999996" x="244.37743696386798" y="134.0262548479335" width="32.024954510007774" height="25.005978268780837" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_21" data-x="-0.6300000000000008" data-y="1.6894553499999998" x="333.1739017416169" y="179.73459901221736" width="32.024954510007774" height="25.005978268780837" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_22" data-x="4.502500000000001" data-y="-2.7294553499999985" x="484.4348845334028" y="304.8754873927736" width="28.35404169482706" height="32.024954510007774" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_23" data-x="2.9699999999999975" data-y="-7.699455349999998" x="437.9828437743696" y="454.24408650896805" width="32.024954510007774" height="22.676890668052977" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_24" data-x="-1.5869553500000007" data-y="-1.8899999999999997" x="307.4400835976085" y="280.435924304653" width="27.771769794645138" height="32.02495451000783" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_25" data-x="-1.6475000000000004" data-y="3.47" x="307.1330909279959" y="124.38705505588773" width="24.860410293735356" height="32.0249545100078" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_26" data-x="1.4024999999999994" data-y="1.9000000000000004" x="395.92955570574475" y="170.0953992201716" width="24.860410293735356" height="32.024954510007774" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_27" data-x="4.210000000000001" data-y="-1.1399999999999992" x="474.0837015856512" y="262.11021616844295" width="32.024954510007774" height="25.005978268780837" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_28" data-x="1.4524999999999972" data-y="-8.02" x="395.9295557057447" y="458.9022617104238" width="27.771769794645138" height="32.02495451000783" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_29" data-x="-2.0700000000000007" data-y="-0.09999999999999964" x="290.81362100337924" y="227.15804543800363" width="32.89836236028077" height="34.35404211073566" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_30" data-x="-3.8600000000000008" data-y="-0.09999999999999962" x="239.13698986223034" y="232.99662115934495" width="32.0249545100078" height="22.676890668053005" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_31" data-x="-2.4200000000000004" data-y="1.6800000000000002" x="280.62386275019503" y="175.33584632180919" width="32.898362360280714" height="34.35404211073566" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_32" data-x="-4.210000000000001" data-y="1.6800000000000002" x="228.947231609046" y="181.17442204315054" width="32.024954510007774" height="22.676890668052977" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_33" data-x="2.4099999999999997" data-y="0.10000000000000009" x="421.24252664413837" y="221.33532643618406" width="32.898362360280714" height="34.354042110735634" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_34" data-x="3.2424999999999997" data-y="1.9000000000000004" x="447.75175482193924" y="170.0953992201716" width="28.354041694827117" height="32.0249545100078" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_35" data-x="2.6525" data-y="-1.6799999999999993" x="428.2297894463218" y="273.88536542760596" width="33.04393033532625" height="32.898362360280714" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_36" data-x="2.7525000000000004" data-y="-3.4699999999999998" x="432.0304135170263" y="326.43540441902786" width="31.2654011957369" height="32.024954510007774" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_37" data-x="2.4099999999999984" data-y="-6.119999999999999" x="421.24252664413825" y="402.42188739277356" width="32.89836236028077" height="34.354042110735634" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_38" data-x="4.799999999999997" data-y="-6.119999999999999" x="491.2607226410189" y="407.095919313751" width="32.024954510007774" height="25.005978268780837" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="MY_18650_02" data-x="-6.140000000000001" data-y="-10.728910699999997" x="169.5554977904861" y="551.1606444502208" width="38.429945412009374" height="5.240447101637756" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="J_BAT_POS" data-x="-6.260000000000001" data-y="-9.868910699999997" x="169.55549779048613" y="526.1229527423966" width="31.442682609825823" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="MY_18650_02" data-x="-9.99" data-y="-8.659999999999998" x="57.46815700545881" y="490.9272162204315" width="38.429945412009374" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="J_BAT_NEG" data-x="-10.11" data-y="-7.799999999999999" x="57.468157005458835" y="465.8895245126073" width="31.442682609825795" height="5.240447101637585" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="BAT54WS" data-x="-7.830000000000002" data-y="-6.149999999999999" x="127.34078502729396" y="417.8520927475955" width="24.4554198076423" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="D_PROT" data-x="-7.890000000000002" data-y="-5.489999999999998" x="127.34078502729398" y="398.63712004159083" width="20.96178840655051" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="BAT54WS" data-x="-7.145000000000001" data-y="0.14445535000000126" x="147.28359760852612" y="234.59786888484533" width="24.4554198076423" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="D_SENSE_CLAMP" data-x="-6.785000000000001" data-y="0.8044553500000013" x="147.28359760852612" y="215.38289617884064" width="45.41720821419287" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="LM4040D25FTA" data-x="-2.5200000000000022" data-y="-7.894455349999998" x="273.1998960228749" y="468.63945931894983" width="41.92357681310108" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="U_REF" data-x="-2.940000000000002" data-y="-7.034455349999998" x="273.1998960228749" y="443.6017676111255" width="17.46815700545875" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="LMV339IDR" data-x="0.10999999999999943" data-y="-1.4299999999999997" x="355.0090979984403" y="280.435924304653" width="31.44268260982585" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="U1" data-x="-0.3100000000000006" data-y="0.4300000000000005" x="355.0090979984403" y="226.2846375877307" width="6.987262802183523" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="LMV331IDBVR" data-x="0.22999999999999798" data-y="-6.55" x="355.0090979984403" y="429.49753075123476" width="38.42994541200932" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="U2" data-x="-0.31000000000000194" data-y="-5.489999999999999" x="355.0090979984403" y="398.6371200415909" width="6.987262802183523" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="netId: BAT_RAW
|
|
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="-4.3400000000000025,-7.364455349999998 -4.140000000000002,-7.364455349999998 -4.140000000000002,-6.844727674999999 -4.890000000000002,-6.844727674999999 -4.890000000000002,-6.324999999999998" data-type="line" data-label="" points="241.17494151286712,455.8294775149467 246.99766051468674,455.8294775149467 246.99766051468674,440.6983364699766 225.16246425786323,440.6983364699766 225.16246425786323,425.5671954250065" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.6400000000000023,-7.364455349999998 -4.3400000000000025,-7.364455349999998" data-type="line" data-label="" points="261.5544580192357,455.8294775149467 241.17494151286712,455.8294775149467" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-9.808910699999998,-1.705000000000001 -9.808910699999998,-1.9050000000000002 -10.4289107,-1.9050000000000002 -10.4289107,-4.214999999999999 -9.808910699999998,-4.214999999999999 -9.808910699999998,-4.015" data-type="line" data-label="" points="81.95529025214461,291.0623864829738 81.95529025214461,296.88510548479337 63.90486134650382,296.88510548479337 63.90486134650382,364.1375099558097 81.95529025214461,364.1375099558097 81.95529025214461,358.31479095399015" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-11.05,-8.129999999999999 -11.25,-8.129999999999999 -11.25,-7.227499999999999 -10.475,-7.227499999999999 -10.475,-6.324999999999999" data-type="line" data-label="" points="45.82271900181962,478.1172344164284 40,478.1172344164284 40,451.8422149207174 62.56303613205097,451.8422149207174 62.56303613205097,425.5671954250065" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-11.05,-8.329999999999998 -11.25,-8.329999999999998 -11.25,-8.129999999999999 -11.05,-8.129999999999999" data-type="line" data-label="" points="45.82271900181962,483.93995341824797 40,483.93995341824797 40,478.1172344164284 45.82271900181962,478.1172344164284" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-9.05,-8.129999999999999 -8.850000000000001,-8.129999999999999 -8.850000000000001,-8.329999999999998 -9.05,-8.329999999999998" data-type="line" data-label="" points="104.0499090200156,478.1172344164284 109.87262802183517,478.1172344164284 109.87262802183517,483.93995341824797 104.0499090200156,483.93995341824797" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-0.8300000000000005,-0.09999999999999959 -1.5050000000000008,-0.09999999999999964" data-type="line" data-label="" points="343.36365999480114,244.33506649337147 323.71198336366,244.33506649337147" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.130000000000001,3.2594553499999996 -2.505000000000001,3.2594553499999996 -2.505000000000001,2.7199999999999998 -1.8800000000000003,2.7199999999999998 -1.8800000000000003,2.92" data-type="line" data-label="" points="276.40239147387575,146.52924398232392 294.59838835456196,146.52924398232392 294.59838835456196,162.23472856771514 312.7943852352482,162.23472856771514 312.7943852352482,156.41200956589552" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999995,0.10000000000000042 1.8449999999999998,0.10000000000000016" data-type="line" data-label="" points="401.5908500129972,238.51234749155188 421.2425266441383,238.51234749155188" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999995,1.3500000000000003 1.1699999999999995,0.7250000000000003 1.3699999999999994,0.7250000000000003 1.3699999999999994,0.10000000000000042 1.1699999999999995,0.10000000000000042" data-type="line" data-label="" points="401.5908500129972,202.12035373017937 401.5908500129972,220.31635061086564 407.41356901481674,220.31635061086564 407.41356901481674,238.51234749155188 401.5908500129972,238.51234749155188" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-0.08000000000000074,1.6894553499999998 0.5449999999999994,1.6894553499999998 0.5449999999999994,1.1500000000000004 1.1699999999999995,1.1500000000000004 1.1699999999999995,1.3500000000000003" data-type="line" data-label="" points="365.19885625162465,192.23758814660778 383.3948531323109,192.23758814660778 383.3948531323109,207.943072731999 401.5908500129972,207.943072731999 401.5908500129972,202.12035373017937" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="4.210000000000001,-2.1794553499999987 4.210000000000001,-1.659727674999999 3.460000000000001,-1.659727674999999 3.460000000000001,-1.1399999999999992 3.660000000000001,-1.1399999999999992" data-type="line" data-label="" points="490.0961788406551,304.8754873927736 490.0961788406551,289.74434634780346 468.2609825838316,289.74434634780346 468.2609825838316,274.61320530283336 474.0837015856512,274.61320530283336" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999982,-6.119999999999999 1.8449999999999984,-6.119999999999999" data-type="line" data-label="" points="401.5908500129971,419.5989084481414 421.24252664413825,419.5989084481414" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999973,-7.469999999999999 1.1699999999999973,-6.794999999999999 1.3699999999999983,-6.794999999999999 1.3699999999999983,-6.119999999999999 1.1699999999999982,-6.119999999999999" data-type="line" data-label="" points="401.59085001299707,458.9022617104237 401.59085001299707,439.2505850792826 407.41356901481674,439.2505850792826 407.41356901481674,419.5989084481414 401.5908500129971,419.5989084481414" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.4199999999999973,-7.699455349999998 2.174727674999997,-7.699455349999998 2.174727674999997,-7.269999999999999 1.1699999999999973,-7.269999999999999 1.1699999999999973,-7.469999999999999" data-type="line" data-label="" points="437.9828437743696,465.5825318429945 430.84208463737974,465.5825318429945 430.84208463737974,453.0795427086041 401.59085001299707,453.0795427086041 401.59085001299707,458.9022617104237" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.3100000000000005,-0.09999999999999964 -2.6350000000000007,-0.09999999999999964" data-type="line" data-label="" points="271.1619443722381,244.33506649337147 290.81362100337924,244.33506649337147" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.660000000000001,1.6800000000000002 -2.9850000000000003,1.6800000000000002" data-type="line" data-label="" points="260.9721861190538,192.51286737717703 280.623862750195,192.51286737717703" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.9499999999999997,1.35 2.9499999999999997,0.7250000000000005 3.175,0.7250000000000005 3.175,0.10000000000000053 2.9749999999999996,0.10000000000000053" data-type="line" data-label="" points="453.41304912919156,202.12035373017937 453.41304912919156,220.3163506108656 459.96360800623864,220.3163506108656 459.96360800623864,238.51234749155188 454.140889004419,238.51234749155188" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.41,-2.92 2.4099999999999997,-2.244999999999999" data-type="line" data-label="" points="437.6917078242787,326.43540441902786 437.6917078242787,306.7837277878867" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="4.249999999999997,-6.119999999999999 2.9749999999999983,-6.119999999999999" data-type="line" data-label="" points="491.2607226410189,419.5989084481414 454.140889004419,419.5989084481414" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-7.200000000000001,-10.398910699999997 -7.400000000000001,-10.398910699999997 -7.400000000000001,-10.198910699999997 -7.200000000000001,-10.198910699999997" data-type="line" data-label="" points="157.9100597868469,544.1733816480373 152.08734078502727,544.1733816480373 152.08734078502727,538.3506626462179 157.9100597868469,538.3506626462179" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-5.200000000000001,-10.198910699999997 -5.000000000000001,-10.198910699999997 -5.000000000000001,-10.398910699999997 -5.200000000000001,-10.398910699999997" data-type="line" data-label="" points="216.13724980504287,538.3506626462179 221.9599688068625,538.3506626462179 221.9599688068625,544.1733816480373 216.13724980504287,544.1733816480373" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-4.760000000000001,1.6800000000000002 -4.960000000000001,1.6800000000000002 -4.960000000000001,-0.09999999999999964 -4.410000000000001,-0.09999999999999964" data-type="line" data-label="" points="228.947231609046,192.51286737717703 223.12451260722642,192.51286737717703 223.12451260722642,244.33506649337147 239.1369898622303,244.33506649337147" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999995,2.45 1.1699999999999995,2.6500000000000004 2.9499999999999997,2.6500000000000004 2.9499999999999997,2.4500000000000006" data-type="line" data-label="" points="401.5908500129972,170.0953992201716 401.5908500129972,164.27268021835198 453.41304912919156,164.27268021835198 453.41304912919156,170.09539922017157" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-7.5994553499999995,-1.3305446499999976 -7.5994553499999995,-0.42804464999999814 -8.965,-0.42804464999999814 -8.965,0.4744553500000013 -7.965000000000001,0.4744553500000013" data-type="line" data-label="" points="146.28047850272944,280.1606450740837 146.28047850272944,253.88562557837272 106.52456459578895,253.88562557837272 106.52456459578895,227.6106060826618 135.63815960488694,227.6106060826618" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-6.3494553499999995,-4.019999999999998 -6.3494553499999995,-4.219999999999998 -7.5994553499999995,-4.219999999999998 -7.5994553499999995,-2.430544649999999" data-type="line" data-label="" points="182.67247226410194,358.4603589290356 182.67247226410194,364.2830779308552 146.28047850272944,364.2830779308552 146.28047850272944,312.1855995840915" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-6.65,-5.8199999999999985 -6.450000000000001,-5.8199999999999985 -6.450000000000001,-6.914727674999998 -7.950000000000001,-6.914727674999998 -7.950000000000001,-8.009455349999998 -7.750000000000001,-8.009455349999998" data-type="line" data-label="" points="173.9225370418508,410.864829945412 179.7452560436704,410.864829945412 179.7452560436704,442.73628812061344 136.07486353002338,442.73628812061344 136.07486353002338,474.6077462958149 141.897582531843,474.6077462958149" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-8.650000000000002,-5.8199999999999985 -9.5625,-5.8199999999999985 -9.5625,-5.024999999999999 -10.475,-5.024999999999999 -10.475,-5.224999999999998" data-type="line" data-label="" points="115.69534702365476,410.864829945412 89.12919157785291,410.864829945412 89.12919157785291,387.71952191317905 62.56303613205097,387.71952191317905 62.56303613205097,393.5422409149987" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999982,-5.92 1.5074999999999983,-5.92 1.5074999999999983,-5.329999999999999 2.41,-5.329999999999999 2.41,-4.02" data-type="line" data-label="" points="401.5908500129971,413.77618944632184 411.4166883285677,413.77618944632184 411.4166883285677,396.599168390954 437.6917078242787,396.599168390954 437.6917078242787,358.46035892903564" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-4.890000000000002,-5.224999999999999 -4.890000000000002,-3.8324999999999996 -1.86945535,-3.8324999999999996 -1.86945535,-2.44" data-type="line" data-label="" points="225.16246425786323,393.54224091499873 225.16246425786323,353.00155986482974 313.10137790486095,353.00155986482974 313.10137790486095,312.4608788146608" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-9.808910699999998,-0.6049999999999982 -9.808910699999998,0.4744553500000017 -7.965000000000001,0.4744553500000017" data-type="line" data-label="" points="81.95529025214461,259.0374319729659 81.95529025214461,227.6106060826618 135.63815960488694,227.6106060826618" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-6.3494553499999995,-2.919999999999998 -6.3494553499999995,-1.6794553499999996 -4.2194553500000005,-1.6794553499999996" data-type="line" data-label="" points="182.67247226410194,326.4354044190278 182.67247226410194,290.31868988822464 244.68442963348065,290.31868988822464" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="7.0649999999999995,0.3272767499999982 7.265,0.3272767499999982 7.265,1.3167320999999976 5.765,1.3167320999999976 5.765,2.3061874499999973 5.965,2.3061874499999973" data-type="line" data-label="" points="573.2154925916299,231.89550423706794 579.0382115934494,231.89550423706794 579.0382115934494,203.08890189758262 535.3678190798025,203.08890189758262 535.3678190798025,174.28229955809732 541.1905380816221,174.28229955809732" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="7.0649999999999995,-1.6516339500000008 7.265,-1.6516339500000008 7.265,-0.6621786000000013 5.765,-0.6621786000000013 5.765,0.3272767499999982 5.965,0.3272767499999982" data-type="line" data-label="" points="573.2154925916299,289.50870891603853 579.0382115934494,289.50870891603853 579.0382115934494,260.7021065765532 535.3678190798025,260.7021065765532 535.3678190798025,231.89550423706794 541.1905380816221,231.89550423706794" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="7.0649999999999995,-3.63054465 7.265,-3.63054465 7.265,-2.6410893000000004 5.765,-2.6410893000000004 5.765,-1.6516339500000008 5.965,-1.6516339500000008" data-type="line" data-label="" points="573.2154925916299,347.1219135950091 579.0382115934494,347.1219135950091 579.0382115934494,318.31531125552385 535.3678190798025,318.31531125552385 535.3678190798025,289.50870891603853 541.1905380816221,289.50870891603853" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.119455350000001,-1.6794553499999991 -2.9194553500000007,-1.6794553499999991 -2.9194553500000007,-1.3399999999999994 -1.8694553500000004,-1.3399999999999994" data-type="line" data-label="" points="276.7093841434884,290.3186898882246 282.53210314530804,290.3186898882246 282.53210314530804,280.435924304653 313.10137790486095,280.435924304653" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.4099999999999997,-1.1149999999999993 2.4099999999999997,-0.9149999999999994 3.460000000000001,-0.9149999999999994 3.460000000000001,-1.1399999999999992" data-type="line" data-label="" points="437.6917078242787,273.88536542760596 437.6917078242787,268.06264642578634 468.2609825838316,268.06264642578634 468.2609825838316,274.61320530283336" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.8694553500000004,-1.3399999999999994 -1.8694553500000004,-0.7199999999999995 -1.3050000000000008,-0.7199999999999995 -1.3050000000000008,-0.09999999999999964 -1.5050000000000008,-0.09999999999999964" data-type="line" data-label="" points="313.10137790486095,280.435924304653 313.10137790486095,262.38549539901226 329.5347023654796,262.38549539901226 329.5347023654796,244.33506649337147 323.71198336366,244.33506649337147" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999995,-1.0999999999999996 1.9909999999999992,-1.0999999999999994 1.9909999999999992,-0.6999999999999995 1.1699999999999995,-0.6999999999999995" data-type="line" data-label="" points="401.5908500129972,273.44866150246946 425.4931115154666,273.44866150246946 425.4931115154666,261.8032234988303 401.5908500129972,261.8032234988303" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-0.8300000000000005,-0.8999999999999996 -1.0300000000000005,-0.8999999999999996 -1.0300000000000005,-0.49999999999999967 -0.8300000000000005,-0.49999999999999967" data-type="line" data-label="" points="343.36365999480114,267.6259425006499 337.5409409929816,267.6259425006499 337.5409409929816,255.98050449701068 343.36365999480114,255.98050449701068" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999995,-0.2999999999999995 1.4699999999999998,-0.2999999999999995 1.4699999999999998,-3.1599999999999997 -1.7710000000000017,-3.1599999999999997 -1.7710000000000017,-6.019999999999999 -0.8300000000000018,-6.02" data-type="line" data-label="" points="401.5908500129972,250.15778549519106 410.3249285157266,250.15778549519106 410.3249285157266,333.4226672212113 315.9677670912399,333.4226672212113 315.9677670912399,416.68754894723156 343.36365999480114,416.6875489472316" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-0.8300000000000005,0.10000000000000042 -1.3425000000000005,0.10000000000000042 -1.3425000000000005,1.6800000000000002 -1.8550000000000004,1.6800000000000002" data-type="line" data-label="" points="343.36365999480114,238.51234749155188 328.44294255263844,238.51234749155188 328.44294255263844,192.51286737717703 313.5222251104757,192.51286737717703" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="4.760000000000001,-1.1399999999999992 5.549999999999997,-1.1399999999999992 5.549999999999997,-3.43054465 5.024,-3.43054465 5.024,-3.83054465 5.549999999999997,-3.83054465 5.549999999999997,-6.119999999999999 5.349999999999997,-6.119999999999999" data-type="line" data-label="" points="506.108656095659,274.61320530283336 529.1083961528464,274.61320530283336 529.1083961528464,341.29919459318955 513.7946451780608,341.29919459318955 513.7946451780608,352.94463259682874 529.1083961528464,352.94463259682874 529.1083961528464,419.5989084481414 523.2856771510267,419.5989084481414" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-8.850000000000001,-8.129999999999999 -8.59,-8.129999999999999 -8.59,-8.130999999999998" data-type="line" data-label="" points="109.87262802183517,478.1172344164284 117.4421627242007,478.1172344164284 117.4421627242007,478.14634801143745" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-5.965000000000001,0.4744553500000013 -5.7540000000000004,0.4744553500000013 -5.7540000000000004,0.27345535000000126" data-type="line" data-label="" points="193.86534962308292,227.6106060826618 200.0083181700026,227.6106060826618 200.0083181700026,233.4624386794905" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.6400000000000023,-7.564455349999998 -3.851000000000002,-7.564455349999998 -3.851000000000002,-7.765455349999998" data-type="line" data-label="" points="261.5544580192357,461.65219651676625 255.41148947231605,461.65219651676625 255.41148947231605,467.504029113595" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-9.808910699999998,-2.9149999999999983 -9.808910699999998,-2.814999999999998 -9.708910699999999,-2.814999999999998 -9.708910699999999,-1.763999999999998 -10.259910699999997,-1.763999999999998" data-type="line" data-label="" points="81.95529025214461,326.2898364439823 81.95529025214461,323.3784769430725 84.86664975305439,323.3784769430725 84.86664975305439,292.7800885885105 68.82505890304145,292.7800885885105" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.8800000000000003,4.0200000000000005 -1.8800000000000003,5.321000000000001 -2.9310000000000005,5.321000000000001" data-type="line" data-label="" points="312.7943852352482,124.38705505588771 312.7943852352482,86.51026794905121 282.19599688068627,86.51026794905121" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.1699999999999973,-8.57 1.1699999999999973,-8.671 0.9689999999999974,-8.671" data-type="line" data-label="" points="401.59085001299707,490.92721622043155 401.59085001299707,493.8676893163504 395.7390174161684,493.8676893163504" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="4.210000000000001,-3.2794553499999983 4.210000000000001,-3.8304553499999985 4.159000000000001,-3.8304553499999985" data-type="line" data-label="" points="490.0961788406551,336.9004419027814 490.0961788406551,352.9420327527944 488.6113854951911,352.9420327527944" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-6.200000000000001" data-y="-10.298910699999997" x="157.9100597868469" y="532.5279436443982" width="58.227190018195984" height="17.468157005458806" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="-10.05" data-y="-8.229999999999999" x="45.82271900181962" y="472.2945154146088" width="58.227190018195984" height="17.468157005458806" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="-7.650000000000001" data-y="-5.8199999999999985" x="115.69534702365476" y="405.04211094359243" width="58.22719001819604" height="11.645438003639129" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="-6.965000000000001" data-y="0.4744553500000013" x="135.63815960488694" y="221.7878870808422" width="58.227190018195984" height="11.645438003639185" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_4" data-x="-2.6400000000000023" data-y="-7.464455349999998" x="261.55445801923565" y="450.0067585131271" width="58.22719001819604" height="17.46815700545875" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_5" data-x="0.16999999999999948" data-y="-0.49999999999999956" x="343.3636599948011" y="232.68962848973229" width="58.22719001819604" height="46.5817520145568" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_6" data-x="0.16999999999999815" data-y="-6.02" x="343.36365999480114" y="405.04211094359243" width="58.227190018195984" height="23.29087600727837" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_7" data-x="-9.6714107" data-y="-3.464999999999999" x="69.72758034832336" y="326.28983644398227" width="32.46165843514433" height="32.02495451000783" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_8" data-x="-10.337499999999999" data-y="-5.774999999999999" x="50.33532622822983" y="393.54224091499873" width="32.46165843514433" height="32.02495451000783" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_9" data-x="-9.551410699999998" data-y="-1.154999999999999" x="69.72758034832344" y="259.0374319729659" width="39.448921237327795" height="32.02495451000783" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_10" data-x="-4.597500000000002" data-y="-5.774999999999999" x="219.50116995061086" y="393.54224091499873" width="28.35404169482706" height="32.024954510007774" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_11" data-x="-7.200000000000001" data-y="-8.009455349999998" x="141.897582531843" y="463.2693009617884" width="32.024954510007774" height="22.67689066805292" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_12" data-x="-7.306955349999999" data-y="-1.8805446499999983" x="140.6191841954771" y="280.1606450740836" width="28.35404169482706" height="32.02495451000783" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_13" data-x="-4.890000000000002" data-y="-7.364455349999998" x="209.14998700285935" y="443.32648838055627" width="32.0249545100078" height="25.005978268780837" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_14" data-x="6.515" data-y="-3.63054465" x="541.1905380816221" y="335.78346826098266" width="32.024954510007774" height="22.676890668052977" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_15" data-x="6.515" data-y="-1.6516339500000008" x="541.1905380816221" y="278.170263582012" width="32.024954510007774" height="22.676890668053034" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_16" data-x="6.515" data-y="0.3272767499999982" x="541.1905380816221" y="220.55705890304142" width="32.024954510007774" height="22.676890668053005" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_17" data-x="6.515" data-y="2.3061874499999973" x="541.1905380816221" y="162.94385422407083" width="32.024954510007774" height="22.676890668052977" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_18" data-x="-5.9969553499999995" data-y="-3.469999999999998" x="177.01117795684956" y="326.4354044190278" width="31.84767309591885" height="32.024954510007774" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_19" data-x="-3.6694553500000007" data-y="-1.6794553499999991" x="244.68442963348065" y="277.81570075383416" width="32.024954510007774" height="25.005978268780837" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_20" data-x="-3.6800000000000006" data-y="3.2594553499999996" x="244.37743696386798" y="134.0262548479335" width="32.024954510007774" height="25.005978268780837" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_21" data-x="-0.6300000000000008" data-y="1.6894553499999998" x="333.1739017416169" y="179.73459901221736" width="32.024954510007774" height="25.005978268780837" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_22" data-x="4.502500000000001" data-y="-2.7294553499999985" x="484.4348845334028" y="304.8754873927736" width="28.35404169482706" height="32.024954510007774" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_23" data-x="2.9699999999999975" data-y="-7.699455349999998" x="437.9828437743696" y="454.24408650896805" width="32.024954510007774" height="22.676890668052977" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_24" data-x="-1.5869553500000007" data-y="-1.8899999999999997" x="307.4400835976085" y="280.435924304653" width="27.771769794645138" height="32.02495451000783" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_25" data-x="-1.6475000000000004" data-y="3.47" x="307.1330909279959" y="124.38705505588773" width="24.860410293735356" height="32.0249545100078" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_26" data-x="1.4024999999999994" data-y="1.9000000000000004" x="395.92955570574475" y="170.0953992201716" width="24.860410293735356" height="32.024954510007774" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_27" data-x="4.210000000000001" data-y="-1.1399999999999992" x="474.0837015856512" y="262.11021616844295" width="32.024954510007774" height="25.005978268780837" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_28" data-x="1.4524999999999972" data-y="-8.02" x="395.9295557057447" y="458.9022617104238" width="27.771769794645138" height="32.02495451000783" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_29" data-x="-2.0700000000000007" data-y="-0.09999999999999964" x="290.81362100337924" y="227.15804543800363" width="32.89836236028077" height="34.35404211073566" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_30" data-x="-3.8600000000000008" data-y="-0.09999999999999962" x="239.13698986223034" y="232.99662115934495" width="32.0249545100078" height="22.676890668053005" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_31" data-x="-2.4200000000000004" data-y="1.6800000000000002" x="280.62386275019503" y="175.33584632180919" width="32.898362360280714" height="34.35404211073566" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_32" data-x="-4.210000000000001" data-y="1.6800000000000002" x="228.947231609046" y="181.17442204315054" width="32.024954510007774" height="22.676890668052977" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_33" data-x="2.4099999999999997" data-y="0.10000000000000009" x="421.24252664413837" y="221.33532643618406" width="32.898362360280714" height="34.354042110735634" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_34" data-x="3.2424999999999997" data-y="1.9000000000000004" x="447.75175482193924" y="170.0953992201716" width="28.354041694827117" height="32.0249545100078" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_35" data-x="2.6525" data-y="-1.6799999999999993" x="428.2297894463218" y="273.88536542760596" width="33.04393033532625" height="32.898362360280714" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_36" data-x="2.7525000000000004" data-y="-3.4699999999999998" x="432.0304135170263" y="326.43540441902786" width="31.2654011957369" height="32.024954510007774" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_37" data-x="2.4099999999999984" data-y="-6.119999999999999" x="421.24252664413825" y="402.42188739277356" width="32.89836236028077" height="34.354042110735634" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="schematic_component_38" data-x="4.799999999999997" data-y="-6.119999999999999" x="491.2607226410189" y="407.095919313751" width="32.024954510007774" height="25.005978268780837" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="MY_18650_02" data-x="-6.140000000000001" data-y="-10.728910699999997" x="169.5554977904861" y="551.1606444502208" width="38.429945412009374" height="5.240447101637756" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="J_BAT_POS" data-x="-6.260000000000001" data-y="-9.868910699999997" x="169.55549779048613" y="526.1229527423966" width="31.442682609825823" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="MY_18650_02" data-x="-9.99" data-y="-8.659999999999998" x="57.46815700545881" y="490.9272162204315" width="38.429945412009374" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="J_BAT_NEG" data-x="-10.11" data-y="-7.799999999999999" x="57.468157005458835" y="465.8895245126073" width="31.442682609825795" height="5.240447101637585" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="BAT54WS" data-x="-7.830000000000002" data-y="-6.149999999999999" x="127.34078502729396" y="417.8520927475955" width="24.4554198076423" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="D_PROT" data-x="-7.890000000000002" data-y="-5.489999999999998" x="127.34078502729398" y="398.63712004159083" width="20.96178840655051" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="BAT54WS" data-x="-7.145000000000001" data-y="0.14445535000000126" x="147.28359760852612" y="234.59786888484533" width="24.4554198076423" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="D_SENSE_CLAMP" data-x="-6.785000000000001" data-y="0.8044553500000013" x="147.28359760852612" y="215.38289617884064" width="45.41720821419287" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="LM4040D25FTA" data-x="-2.5200000000000022" data-y="-7.894455349999998" x="273.1998960228749" y="468.63945931894983" width="41.92357681310108" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="U_REF" data-x="-2.940000000000002" data-y="-7.034455349999998" x="273.1998960228749" y="443.6017676111255" width="17.46815700545875" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="LMV339IDR" data-x="0.10999999999999943" data-y="-1.4299999999999997" x="355.0090979984403" y="280.435924304653" width="31.44268260982585" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="U1" data-x="-0.3100000000000006" data-y="0.4300000000000005" x="355.0090979984403" y="226.2846375877307" width="6.987262802183523" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="LMV331IDBVR" data-x="0.22999999999999798" data-y="-6.55" x="355.0090979984403" y="429.49753075123476" width="38.42994541200932" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="U2" data-x="-0.31000000000000194" data-y="-5.489999999999999" x="355.0090979984403" y="398.6371200415909" width="6.987262802183523" height="5.240447101637642" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="netId: BAT_RAW
|
|
2
2
|
globalConnNetId: connectivity_net12" data-x="-7.880000000000001" data-y="-10.398910699999997" x="124.1382895762932" y="541.2620221471275" width="27.94905120873409" height="5.822719001819564" fill="hsl(80, 100%, 50%, 0.35)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="netId: BAT_RAW
|
|
3
3
|
globalConnNetId: connectivity_net12" data-x="-4.520000000000001" data-y="-10.198910699999997" x="221.95996880686243" y="535.439303145308" width="27.94905120873412" height="5.822719001819564" fill="hsl(80, 100%, 50%, 0.35)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="netId: BAT_RAW
|
|
4
4
|
globalConnNetId: connectivity_net12" data-x="-5.970000000000001" data-y="-5.8199999999999985" x="179.7452560436704" y="407.9534704445022" width="27.94905120873409" height="5.822719001819564" fill="hsl(80, 100%, 50%, 0.35)" stroke="black" stroke-width="0.03434821428571429"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
@@ -1,4 +1,4 @@
|
|
|
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="13.45,16 8.9,14.5" data-type="line" data-label="" points="439.8389477922427,115.96732009126299 97.87142665414046,228.70386552140667" fill="none" stroke="hsl(16, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="14.55,16 8.9,15.1" data-type="line" data-label="" points="522.5124144410149,115.96732009126299 97.87142665414046,183.6092473493493" fill="none" stroke="hsl(16, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="13.45,14 11.1,13.1" data-type="line" data-label="" points="439.8389477922427,266.28271399812115 263.2183599516844,333.92464125620734" fill="none" stroke="hsl(160, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="8.9,15.1 8.9,14.7" data-type="line" data-label="" points="97.87142665414046,183.6092473493493 97.87142665414046,213.67232613072088" 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="97.87142665414046,183.6092473493493 263.2183599516844,318.89310186552143" 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 14.55,14" data-type="line" data-label="" points="97.87142665414046,183.6092473493493 522.5124144410149,266.28271399812115" 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 14.55,16" data-type="line" data-label="" points="97.87142665414046,183.6092473493493 522.5124144410149,115.96732009126299" 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="97.87142665414046,213.67232613072088 263.2183599516844,318.89310186552143" 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 14.55,14" data-type="line" data-label="" points="97.87142665414046,213.67232613072088 522.5124144410149,266.28271399812115" 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 14.55,16" data-type="line" data-label="" points="97.87142665414046,213.67232613072088 522.5124144410149,115.96732009126299" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="11.1,13.3 14.55,14" data-type="line" data-label="" points="263.2183599516844,318.89310186552143 522.5124144410149,266.28271399812115" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="11.1,13.3 14.55,16" data-type="line" data-label="" points="263.2183599516844,318.89310186552143 522.5124144410149,115.96732009126299" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="14.55,14 14.55,16" data-type="line" data-label="" points="522.5124144410149,266.28271399812115 522.5124144410149,115.96732009126299" 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="97.87142665414046,198.64078674003486 97.87142665414046,228.70386552140667" 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="97.87142665414046,198.64078674003486 263.2183599516844,363.98772003757904" 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.14,10" data-type="line" data-label="" points="97.87142665414046,198.64078674003486 416.54006173667983,566.9135018118375" 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.45,16" data-type="line" data-label="" points="97.87142665414046,198.64078674003486 439.8389477922427,115.96732009126299" 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="97.87142665414046,228.70386552140667 263.2183599516844,363.98772003757904" 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.14,10" data-type="line" data-label="" points="97.87142665414046,228.70386552140667 416.54006173667983,566.9135018118375" 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.45,16" data-type="line" data-label="" points="97.87142665414046,228.70386552140667 439.8389477922427,115.96732009126299" 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.14,10" data-type="line" data-label="" points="263.2183599516844,363.98772003757904 416.54006173667983,566.9135018118375" 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.45,16" data-type="line" data-label="" points="263.2183599516844,363.98772003757904 439.8389477922427,115.96732009126299" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="13.14,10 13.45,16" data-type="line" data-label="" points="416.54006173667983,566.9135018118375 439.8389477922427,115.96732009126299" 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.86,10" data-type="line" data-label="" points="263.2183599516844,153.54616856797747 545.8113004965778,566.9135018118375" fill="none" stroke="hsl(50, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.5 8.600000000000001,14.5 8.600000000000001,14.9 8.9,14.9" data-type="line" data-label="" points="97.87142665414046,228.70386552140667 75.32411756811189,228.70386552140667 75.32411756811189,198.64078674003486 97.87142665414046,198.64078674003486" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="14.55,16 14.75,16 14.75,14 14.55,14" data-type="line" data-label="" points="522.5124144410149,115.96732009126299 537.5439538317005,115.96732009126299 537.5439538317005,266.28271399812115 522.5124144410149,266.28271399812115" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="8.9,14.7 8.8,14.7 8.8,15.1 8.9,15.1" data-type="line" data-label="" points="97.87142665414046,213.67232613072088 90.35565695879757,213.67232613072088 90.35565695879757,183.6092473493493 97.87142665414046,183.6092473493493" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="13.45,16 12.274999999999999,16 12.274999999999999,13.299999999999999 13.630999999999998,13.299999999999999 13.630999999999998,12.9 12.274999999999999,12.9 12.274999999999999,12.7 11.1,12.7" data-type="line" data-label="" points="439.8389477922427,115.96732009126299 351.52865387196346,115.96732009126299 351.52865387196346,318.89310186552154 453.4424909408133,318.89310186552154 453.4424909408133,348.95618064689313 351.52865387196346,348.95618064689313 351.52865387196346,363.98772003757904 263.2183599516844,363.98772003757904" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="14.75,16 15.010000000000002,16 15.010000000000002,15.999" data-type="line" data-label="" points="537.5439538317005,115.96732009126299 557.0849550395922,115.96732009126299 557.0849550395922,116.04247778821627" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="11.1,13.3 13.860999999999999,13.3 13.860999999999999,12.799000000000001" data-type="line" data-label="" points="263.2183599516844,318.89310186552143 470.72876124010213,318.89310186552143 470.72876124010213,356.5471080391894" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="8.600000000000001,14.5 8.34,14.5 8.34,14.501" data-type="line" data-label="" points="75.32411756811189,228.70386552140667 55.783116360220106,228.70386552140667 55.783116360220106,228.62870782445316" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="13.14,10 12.929,10 12.929,10.401" data-type="line" data-label="" points="416.54006173667983,566.9135018118375 400.6817876795062,566.9135018118375 400.6817876795062,536.7752653335124" 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="97.87142665414046" y="138.51462917729174" width="165.34693329754396" height="255.53616964165883" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013305357142857141"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="14" data-y="14" x="439.83894779224266" y="219.68494188699515" width="82.6734666487722" height="93.19554422225201" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013305357142857141"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="14" data-y="10" x="416.5400617366798" y="537.6429346396459" width="129.27123875989798" height="58.54113434438318" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013305357142857141"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="14" data-y="16" x="439.83894779224266" y="69.36954798013699" width="82.6734666487722" height="93.19554422225201" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013305357142857141"/></g><g><rect data-type="rect" data-label="ATMEGA328P_AU" data-x="10.080000000000002" data-y="12.17" x="127.93450543551216" y="397.05710669708776" width="117.24600724734955" height="13.528385451617169" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.013305357142857141"/></g><g><rect data-type="rect" data-label="U_MCU" data-x="9.600000000000001" data-y="15.83" x="127.93450543551222" y="121.97993584753738" width="45.094618172057494" height="13.528385451617169" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.013305357142857141"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
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="13.45,16 8.9,14.5" data-type="line" data-label="" points="439.8389477922427,115.96732009126299 97.87142665414046,228.70386552140667" fill="none" stroke="hsl(16, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="14.55,16 8.9,15.1" data-type="line" data-label="" points="522.5124144410149,115.96732009126299 97.87142665414046,183.6092473493493" fill="none" stroke="hsl(16, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="13.45,14 11.1,13.1" data-type="line" data-label="" points="439.8389477922427,266.28271399812115 263.2183599516844,333.92464125620734" fill="none" stroke="hsl(160, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="8.9,15.1 8.9,14.7" data-type="line" data-label="" points="97.87142665414046,183.6092473493493 97.87142665414046,213.67232613072088" 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="97.87142665414046,183.6092473493493 263.2183599516844,318.89310186552143" 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 14.55,14" data-type="line" data-label="" points="97.87142665414046,183.6092473493493 522.5124144410149,266.28271399812115" 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 14.55,16" data-type="line" data-label="" points="97.87142665414046,183.6092473493493 522.5124144410149,115.96732009126299" 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="97.87142665414046,213.67232613072088 263.2183599516844,318.89310186552143" 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 14.55,14" data-type="line" data-label="" points="97.87142665414046,213.67232613072088 522.5124144410149,266.28271399812115" 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 14.55,16" data-type="line" data-label="" points="97.87142665414046,213.67232613072088 522.5124144410149,115.96732009126299" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="11.1,13.3 14.55,14" data-type="line" data-label="" points="263.2183599516844,318.89310186552143 522.5124144410149,266.28271399812115" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="11.1,13.3 14.55,16" data-type="line" data-label="" points="263.2183599516844,318.89310186552143 522.5124144410149,115.96732009126299" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="14.55,14 14.55,16" data-type="line" data-label="" points="522.5124144410149,266.28271399812115 522.5124144410149,115.96732009126299" 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="97.87142665414046,198.64078674003486 97.87142665414046,228.70386552140667" 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="97.87142665414046,198.64078674003486 263.2183599516844,363.98772003757904" 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.14,10" data-type="line" data-label="" points="97.87142665414046,198.64078674003486 416.54006173667983,566.9135018118375" 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.45,16" data-type="line" data-label="" points="97.87142665414046,198.64078674003486 439.8389477922427,115.96732009126299" 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="97.87142665414046,228.70386552140667 263.2183599516844,363.98772003757904" 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.14,10" data-type="line" data-label="" points="97.87142665414046,228.70386552140667 416.54006173667983,566.9135018118375" 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.45,16" data-type="line" data-label="" points="97.87142665414046,228.70386552140667 439.8389477922427,115.96732009126299" 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.14,10" data-type="line" data-label="" points="263.2183599516844,363.98772003757904 416.54006173667983,566.9135018118375" 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.45,16" data-type="line" data-label="" points="263.2183599516844,363.98772003757904 439.8389477922427,115.96732009126299" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="13.14,10 13.45,16" data-type="line" data-label="" points="416.54006173667983,566.9135018118375 439.8389477922427,115.96732009126299" 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.86,10" data-type="line" data-label="" points="263.2183599516844,153.54616856797747 545.8113004965778,566.9135018118375" fill="none" stroke="hsl(50, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.5 8.600000000000001,14.5 8.600000000000001,14.9 8.9,14.9" data-type="line" data-label="" points="97.87142665414046,228.70386552140667 75.32411756811189,228.70386552140667 75.32411756811189,198.64078674003486 97.87142665414046,198.64078674003486" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="14.55,16 14.75,16 14.75,14 14.55,14" data-type="line" data-label="" points="522.5124144410149,115.96732009126299 537.5439538317005,115.96732009126299 537.5439538317005,266.28271399812115 522.5124144410149,266.28271399812115" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="8.9,14.7 8.8,14.7 8.8,15.1 8.9,15.1" data-type="line" data-label="" points="97.87142665414046,213.67232613072088 90.35565695879757,213.67232613072088 90.35565695879757,183.6092473493493 97.87142665414046,183.6092473493493" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="13.45,16 12.274999999999999,16 12.274999999999999,13.299999999999999 13.630999999999998,13.299999999999999 13.630999999999998,12.9 12.274999999999999,12.9 12.274999999999999,12.7 11.1,12.7" data-type="line" data-label="" points="439.8389477922427,115.96732009126299 351.52865387196346,115.96732009126299 351.52865387196346,318.89310186552154 453.4424909408133,318.89310186552154 453.4424909408133,348.95618064689313 351.52865387196346,348.95618064689313 351.52865387196346,363.98772003757904 263.2183599516844,363.98772003757904" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="14.75,16 15.010000000000002,16 15.010000000000002,15.999" data-type="line" data-label="" points="537.5439538317005,115.96732009126299 557.0849550395922,115.96732009126299 557.0849550395922,116.04247778821627" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="11.1,13.3 11.2,13.3 11.2,13.280000000000001 13.860999999999999,13.280000000000001 13.860999999999999,12.799000000000001" data-type="line" data-label="" points="263.2183599516844,318.89310186552143 270.7341296470273,318.89310186552143 270.7341296470273,320.39625580459006 470.72876124010213,320.39625580459006 470.72876124010213,356.5471080391894" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="8.600000000000001,14.5 8.34,14.5 8.34,14.501" data-type="line" data-label="" points="75.32411756811189,228.70386552140667 55.783116360220106,228.70386552140667 55.783116360220106,228.62870782445316" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="13.14,10 12.929,10 12.929,10.401" data-type="line" data-label="" points="416.54006173667983,566.9135018118375 400.6817876795062,566.9135018118375 400.6817876795062,536.7752653335124" 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="97.87142665414046" y="138.51462917729174" width="165.34693329754396" height="255.53616964165883" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013305357142857141"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="14" data-y="14" x="439.83894779224266" y="219.68494188699515" width="82.6734666487722" height="93.19554422225201" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013305357142857141"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="14" data-y="10" x="416.5400617366798" y="537.6429346396459" width="129.27123875989798" height="58.54113434438318" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013305357142857141"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="14" data-y="16" x="439.83894779224266" y="69.36954798013699" width="82.6734666487722" height="93.19554422225201" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013305357142857141"/></g><g><rect data-type="rect" data-label="ATMEGA328P_AU" data-x="10.080000000000002" data-y="12.17" x="127.93450543551216" y="397.05710669708776" width="117.24600724734955" height="13.528385451617169" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.013305357142857141"/></g><g><rect data-type="rect" data-label="U_MCU" data-x="9.600000000000001" data-y="15.83" x="127.93450543551222" y="121.97993584753738" width="45.094618172057494" height="13.528385451617169" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.013305357142857141"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
2
2
|
globalConnNetId: connectivity_net1" data-x="15.010000000000002" data-y="15.759" x="541.301838679372" y="116.04247778821627" width="31.566232720440212" height="36.075694537646086" fill="#00000066" stroke="#000000" stroke-width="0.013305357142857141"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
3
3
|
globalConnNetId: connectivity_net1" data-x="13.860999999999999" data-y="12.559000000000001" x="454.945644879882" y="356.54710803918937" width="31.566232720440212" height="36.07569453764597" fill="#00000066" stroke="#000000" stroke-width="0.013305357142857141"/></g><g><rect data-type="rect" data-label="netId: VCC_3V3
|
|
4
4
|
globalConnNetId: connectivity_net0" data-x="12.862499999999999" data-y="16.48" x="379.9006844718829" y="43.81593101597093" width="31.566232720440325" height="72.15138907529195" fill="#ef444466" stroke="#ef4444" stroke-width="0.013305357142857141"/></g><g><rect data-type="rect" data-label="netId: VCC_3V3
|
|
@@ -0,0 +1,70 @@
|
|
|
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="-11.342500000000001,-18.990000000000002 -9.797500000000001,-18.815" data-type="line" data-label="" points="428.00799467022,320.5969353764158 543.2911392405065,307.53897401732183" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-11.342500000000001,-18.990000000000002 -9.797500000000001,-20.625000000000004" data-type="line" data-label="" points="428.00799467022,320.5969353764158 543.2911392405065,442.5956029313793" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-9.797500000000001,-18.815 -9.797500000000001,-20.625000000000004" data-type="line" data-label="" points="543.2911392405065,307.53897401732183 543.2911392405065,442.5956029313793" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-11.342500000000001,-18.04 -9.797500000000001,-18.215" data-type="line" data-label="" points="428.00799467022,249.7108594270485 543.2911392405065,262.76882078614244" fill="none" stroke="hsl(273, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-11.342500000000001,-18.240000000000002 -9.797500000000001,-20.025000000000002" data-type="line" data-label="" points="428.00799467022,264.6342438374418 543.2911392405065,397.8254497001999" fill="none" stroke="hsl(274, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-9.797500000000001,-18.815 -9.797500000000001,-18.990000000000002 -11.342500000000001,-18.990000000000002" data-type="line" data-label="" points="543.2911392405065,307.53897401732183 543.2911392405065,320.5969353764158 428.00799467022,320.5969353764158" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-9.797500000000001,-20.625000000000004 -9.797500000000001,-20.825000000000003 -10.322500000000002,-20.825000000000003 -10.322500000000002,-19.015 -9.797500000000001,-19.015 -9.797500000000001,-18.815" data-type="line" data-label="" points="543.2911392405065,442.5956029313793 543.2911392405065,457.51898734177234 504.1172551632246,457.51898734177234 504.1172551632246,322.4623584277149 543.2911392405065,322.4623584277149 543.2911392405065,307.53897401732183" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-11.342500000000001,-18.04 -9.797500000000001,-18.04 -9.797500000000001,-18.215" data-type="line" data-label="" points="428.00799467022,249.7108594270485 543.2911392405065,249.7108594270485 543.2911392405065,262.76882078614244" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-11.342500000000001,-17.29 -11.041500000000001,-17.29 -11.041500000000001,-17.139" data-type="line" data-label="" points="428.00799467022,193.74816788807448 450.46768820786156,193.74816788807448 450.46768820786156,182.48101265822766" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-9.797500000000001,-20.025000000000002 -9.797500000000001,-19.925 -9.697500000000002,-19.925 -9.697500000000002,-18.874 -10.1485,-18.874" data-type="line" data-label="" points="543.2911392405065,397.8254497001999 543.2911392405065,390.36375749500326 550.752831445703,390.36375749500326 550.752831445703,311.9413724183876 517.1005996002667,311.9413724183876" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_16" data-x="-13.9425" data-y="-18.14" x="40.000000000000284" y="182.55562958027986" width="388.0079946702198" height="149.23384410393055" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013401785714285713"/></g><g><rect data-type="rect" data-label="schematic_component_17" data-x="-9.580000000000002" data-y="-18.515" x="519.0406395736176" y="262.76882078614244" width="80.95936042638255" height="44.77015323117939" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013401785714285713"/></g><g><rect data-type="rect" data-label="schematic_component_18" data-x="-9.580000000000002" data-y="-20.325000000000003" x="519.0406395736176" y="397.8254497001999" width="80.95936042638255" height="44.77015323117939" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013401785714285713"/></g><g><rect data-type="rect" data-label="U3" data-x="-16.0225" data-y="-17.025000000000002" x="65.36975349766828" y="164.6475682878082" width="26.862091938707408" height="18.654230512991262" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.013401785714285713"/></g><g><rect data-type="rect" data-label="netId: VBUS
|
|
2
|
+
globalConnNetId: connectivity_net3" data-x="-11.041500000000001" data-y="-16.929" x="428.08261159227186" y="151.14190539640208" width="44.77015323117939" height="31.339107261825575" fill="#ef444466" stroke="#ef4444" stroke-width="0.013401785714285713"/></g><g><rect data-type="rect" data-label="netId: D_PLUS
|
|
3
|
+
globalConnNetId: connectivity_net2" data-x="-10.921500000000002" data-y="-17.490000000000002" x="428.08261159227186" y="201.20986009327112" width="62.67821452365092" height="14.923384410393282" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.013401785714285713"/></g><g><rect data-type="rect" data-label="netId: D_MINUS
|
|
4
|
+
globalConnNetId: connectivity_net1" data-x="-10.861500000000001" data-y="-17.69" x="428.08261159227186" y="216.13324450366417" width="71.6322451698868" height="14.923384410393282" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.013401785714285713"/></g><g><rect data-type="rect" data-label="netId: CC1
|
|
5
|
+
globalConnNetId: connectivity_net4" data-x="-9.557500000000001" data-y="-18.04" x="543.2911392405065" y="242.24916722185185" width="35.8161225849434" height="14.923384410393282" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.013401785714285713"/></g><g><rect data-type="rect" data-label="netId: CC2
|
|
6
|
+
globalConnNetId: connectivity_net5" data-x="-11.101500000000001" data-y="-18.240000000000002" x="428.0826115922719" y="257.17255163224513" width="35.8161225849434" height="14.923384410393282" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.013401785714285713"/></g><g><rect data-type="rect" data-label="netId: CC2
|
|
7
|
+
globalConnNetId: connectivity_net5" data-x="-10.3885" data-y="-18.874" x="481.28447701532326" y="304.47968021319093" width="35.8161225849434" height="14.923384410393282" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.013401785714285713"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
8
|
+
globalConnNetId: connectivity_net0" data-x="-9.797500000000001" data-y="-21.035000000000004" x="525.3830779480347" y="457.51898734177234" width="35.8161225849434" height="31.339107261825575" fill="#00000066" stroke="#000000" stroke-width="0.013401785714285713"/></g><g><circle data-type="point" data-label="schematic_port_83
|
|
9
|
+
x+" data-x="-11.342500000000001" data-y="-17.29" cx="428.00799467022" cy="193.74816788807448" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_84
|
|
10
|
+
x+" data-x="-11.342500000000001" data-y="-17.490000000000002" cx="428.00799467022" cy="208.67155229846776" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_85
|
|
11
|
+
x+" data-x="-11.342500000000001" data-y="-17.69" cx="428.00799467022" cy="223.5949367088608" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_86
|
|
12
|
+
x+" data-x="-11.342500000000001" data-y="-18.04" cx="428.00799467022" cy="249.7108594270485" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_87
|
|
13
|
+
x+" data-x="-11.342500000000001" data-y="-18.240000000000002" cx="428.00799467022" cy="264.6342438374418" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_88
|
|
14
|
+
x+" data-x="-11.342500000000001" data-y="-18.59" cx="428.00799467022" cy="290.75016655562945" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_89
|
|
15
|
+
x+" data-x="-11.342500000000001" data-y="-18.79" cx="428.00799467022" cy="305.6735509660225" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_90
|
|
16
|
+
x+" data-x="-11.342500000000001" data-y="-18.990000000000002" cx="428.00799467022" cy="320.5969353764158" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_91
|
|
17
|
+
y+" data-x="-9.797500000000001" data-y="-18.215" cx="543.2911392405065" cy="262.76882078614244" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_92
|
|
18
|
+
y-" data-x="-9.797500000000001" data-y="-18.815" cx="543.2911392405065" cy="307.53897401732183" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_93
|
|
19
|
+
y+" data-x="-9.797500000000001" data-y="-20.025000000000002" cx="543.2911392405065" cy="397.8254497001999" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_94
|
|
20
|
+
y-" data-x="-9.797500000000001" data-y="-20.625000000000004" cx="543.2911392405065" cy="442.5956029313793" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
21
|
+
orientation: y+" data-x="-11.041500000000001" data-y="-17.139" cx="450.46768820786156" cy="182.48101265822766" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
22
|
+
orientation: x+" data-x="-11.342500000000001" data-y="-17.490000000000002" cx="428.00799467022" cy="208.67155229846776" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
23
|
+
orientation: x+" data-x="-11.342500000000001" data-y="-17.69" cx="428.00799467022" cy="223.5949367088608" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
24
|
+
orientation: x+" data-x="-9.797500000000001" data-y="-18.04" cx="543.2911392405065" cy="249.7108594270485" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
25
|
+
orientation: x+" data-x="-11.342500000000001" data-y="-18.240000000000002" cx="428.00799467022" cy="264.6342438374418" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
26
|
+
orientation: x-" data-x="-10.1485" data-y="-18.874" cx="517.1005996002667" cy="311.9413724183876" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
27
|
+
orientation: y-" data-x="-9.797500000000001" data-y="-20.825000000000003" cx="543.2911392405065" cy="457.51898734177234" 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[
|
|
28
|
+
document.currentScript.parentElement.addEventListener('mousemove', (e) => {
|
|
29
|
+
const svg = e.currentTarget;
|
|
30
|
+
const rect = svg.getBoundingClientRect();
|
|
31
|
+
const x = e.clientX - rect.left;
|
|
32
|
+
const y = e.clientY - rect.top;
|
|
33
|
+
const crosshair = svg.getElementById('crosshair');
|
|
34
|
+
const h = svg.getElementById('crosshair-h');
|
|
35
|
+
const v = svg.getElementById('crosshair-v');
|
|
36
|
+
const coords = svg.getElementById('coordinates');
|
|
37
|
+
|
|
38
|
+
crosshair.style.display = 'block';
|
|
39
|
+
h.setAttribute('x1', '0');
|
|
40
|
+
h.setAttribute('x2', '640');
|
|
41
|
+
h.setAttribute('y1', y);
|
|
42
|
+
h.setAttribute('y2', y);
|
|
43
|
+
v.setAttribute('x1', x);
|
|
44
|
+
v.setAttribute('x2', x);
|
|
45
|
+
v.setAttribute('y1', '0');
|
|
46
|
+
v.setAttribute('y2', '640');
|
|
47
|
+
|
|
48
|
+
// Calculate real coordinates using inverse transformation
|
|
49
|
+
const matrix = {"a":74.61692205196536,"c":0,"e":1274.3504330446372,"b":0,"d":-74.61692205196536,"f":-1096.3784143904065};
|
|
50
|
+
// Manually invert and apply the affine transform
|
|
51
|
+
// Since we only use translate and scale, we can directly compute:
|
|
52
|
+
// x' = (x - tx) / sx
|
|
53
|
+
// y' = (y - ty) / sy
|
|
54
|
+
const sx = matrix.a;
|
|
55
|
+
const sy = matrix.d;
|
|
56
|
+
const tx = matrix.e;
|
|
57
|
+
const ty = matrix.f;
|
|
58
|
+
const realPoint = {
|
|
59
|
+
x: (x - tx) / sx,
|
|
60
|
+
y: (y - ty) / sy // Flip y back since we used negative scale
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
|
|
64
|
+
coords.setAttribute('x', (x + 5).toString());
|
|
65
|
+
coords.setAttribute('y', (y - 5).toString());
|
|
66
|
+
});
|
|
67
|
+
document.currentScript.parentElement.addEventListener('mouseleave', () => {
|
|
68
|
+
document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
|
|
69
|
+
});
|
|
70
|
+
]]></script></svg>
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
{
|
|
2
|
+
"chips": [
|
|
3
|
+
{
|
|
4
|
+
"chipId": "schematic_component_16",
|
|
5
|
+
"center": {
|
|
6
|
+
"x": -13.9425,
|
|
7
|
+
"y": -18.14
|
|
8
|
+
},
|
|
9
|
+
"width": 5.199999999999999,
|
|
10
|
+
"height": 2,
|
|
11
|
+
"pins": [
|
|
12
|
+
{
|
|
13
|
+
"pinId": "schematic_port_83",
|
|
14
|
+
"x": -11.342500000000001,
|
|
15
|
+
"y": -17.29
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"pinId": "schematic_port_84",
|
|
19
|
+
"x": -11.342500000000001,
|
|
20
|
+
"y": -17.490000000000002
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"pinId": "schematic_port_85",
|
|
24
|
+
"x": -11.342500000000001,
|
|
25
|
+
"y": -17.69
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"pinId": "schematic_port_86",
|
|
29
|
+
"x": -11.342500000000001,
|
|
30
|
+
"y": -18.04
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"pinId": "schematic_port_87",
|
|
34
|
+
"x": -11.342500000000001,
|
|
35
|
+
"y": -18.240000000000002
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"pinId": "schematic_port_88",
|
|
39
|
+
"x": -11.342500000000001,
|
|
40
|
+
"y": -18.59
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"pinId": "schematic_port_89",
|
|
44
|
+
"x": -11.342500000000001,
|
|
45
|
+
"y": -18.79
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"pinId": "schematic_port_90",
|
|
49
|
+
"x": -11.342500000000001,
|
|
50
|
+
"y": -18.990000000000002
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"sectionId": "usb"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"chipId": "schematic_component_17",
|
|
57
|
+
"center": {
|
|
58
|
+
"x": -9.580000000000002,
|
|
59
|
+
"y": -18.515
|
|
60
|
+
},
|
|
61
|
+
"width": 1.084999999999999,
|
|
62
|
+
"height": 0.6000000000000014,
|
|
63
|
+
"pins": [
|
|
64
|
+
{
|
|
65
|
+
"pinId": "schematic_port_91",
|
|
66
|
+
"x": -9.797500000000001,
|
|
67
|
+
"y": -18.215,
|
|
68
|
+
"_facingDirection": "y+"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"pinId": "schematic_port_92",
|
|
72
|
+
"x": -9.797500000000001,
|
|
73
|
+
"y": -18.815,
|
|
74
|
+
"_facingDirection": "y-"
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"sectionId": "usb"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"chipId": "schematic_component_18",
|
|
81
|
+
"center": {
|
|
82
|
+
"x": -9.580000000000002,
|
|
83
|
+
"y": -20.325000000000003
|
|
84
|
+
},
|
|
85
|
+
"width": 1.084999999999999,
|
|
86
|
+
"height": 0.6000000000000014,
|
|
87
|
+
"pins": [
|
|
88
|
+
{
|
|
89
|
+
"pinId": "schematic_port_93",
|
|
90
|
+
"x": -9.797500000000001,
|
|
91
|
+
"y": -20.025000000000002,
|
|
92
|
+
"_facingDirection": "y+"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"pinId": "schematic_port_94",
|
|
96
|
+
"x": -9.797500000000001,
|
|
97
|
+
"y": -20.625000000000004,
|
|
98
|
+
"_facingDirection": "y-"
|
|
99
|
+
}
|
|
100
|
+
],
|
|
101
|
+
"sectionId": "usb"
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"directConnections": [],
|
|
105
|
+
"netConnections": [
|
|
106
|
+
{
|
|
107
|
+
"netId": "GND",
|
|
108
|
+
"netLabelWidth": 0.42,
|
|
109
|
+
"netLabelHeight": 0.48,
|
|
110
|
+
"pinIds": [
|
|
111
|
+
"schematic_port_90",
|
|
112
|
+
"schematic_port_92",
|
|
113
|
+
"schematic_port_94"
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"netId": "D_MINUS",
|
|
118
|
+
"netLabelWidth": 0.96,
|
|
119
|
+
"pinIds": ["schematic_port_85"]
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"netId": "D_PLUS",
|
|
123
|
+
"netLabelWidth": 0.84,
|
|
124
|
+
"pinIds": ["schematic_port_84"]
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"netId": "VBUS",
|
|
128
|
+
"netLabelWidth": 0.42,
|
|
129
|
+
"netLabelHeight": 0.6,
|
|
130
|
+
"pinIds": ["schematic_port_83"]
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"netId": "CC1",
|
|
134
|
+
"netLabelWidth": 0.48,
|
|
135
|
+
"pinIds": ["schematic_port_86", "schematic_port_91"]
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"netId": "CC2",
|
|
139
|
+
"netLabelWidth": 0.48,
|
|
140
|
+
"pinIds": ["schematic_port_87", "schematic_port_93"]
|
|
141
|
+
}
|
|
142
|
+
],
|
|
143
|
+
"textBoxes": [
|
|
144
|
+
{
|
|
145
|
+
"chipId": "schematic_component_16",
|
|
146
|
+
"center": {
|
|
147
|
+
"x": -16.0225,
|
|
148
|
+
"y": -17.025000000000002
|
|
149
|
+
},
|
|
150
|
+
"width": 0.35999999999999943,
|
|
151
|
+
"height": 0.25,
|
|
152
|
+
"text": "U3"
|
|
153
|
+
}
|
|
154
|
+
],
|
|
155
|
+
"availableNetLabelOrientations": {
|
|
156
|
+
"D_MINUS": ["x-", "x+"],
|
|
157
|
+
"D_PLUS": ["x-", "x+"],
|
|
158
|
+
"GND": ["y-"],
|
|
159
|
+
"VBUS": ["y+"],
|
|
160
|
+
"CC1": ["x-", "x+"],
|
|
161
|
+
"CC2": ["x-", "x+"]
|
|
162
|
+
},
|
|
163
|
+
"maxMspPairDistance": 2.4
|
|
164
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { expect, test } from "bun:test"
|
|
2
|
+
import { SchematicTracePipelineSolver } from "lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver"
|
|
3
|
+
import type { SolvedTracePath } from "lib/solvers/SchematicTraceLinesSolver/SchematicTraceLinesSolver"
|
|
4
|
+
import inputProblem from "./assets/repro-rp2040-usb-cc2-ground-overlap.input.json"
|
|
5
|
+
|
|
6
|
+
const EPS = 1e-6
|
|
7
|
+
|
|
8
|
+
const pathsHavePositiveLengthCollinearOverlap = (
|
|
9
|
+
first: SolvedTracePath,
|
|
10
|
+
second: SolvedTracePath,
|
|
11
|
+
) => {
|
|
12
|
+
for (
|
|
13
|
+
let firstIndex = 0;
|
|
14
|
+
firstIndex < first.tracePath.length - 1;
|
|
15
|
+
firstIndex++
|
|
16
|
+
) {
|
|
17
|
+
const firstStart = first.tracePath[firstIndex]!
|
|
18
|
+
const firstEnd = first.tracePath[firstIndex + 1]!
|
|
19
|
+
const firstIsVertical = Math.abs(firstStart.x - firstEnd.x) < EPS
|
|
20
|
+
const firstIsHorizontal = Math.abs(firstStart.y - firstEnd.y) < EPS
|
|
21
|
+
|
|
22
|
+
for (
|
|
23
|
+
let secondIndex = 0;
|
|
24
|
+
secondIndex < second.tracePath.length - 1;
|
|
25
|
+
secondIndex++
|
|
26
|
+
) {
|
|
27
|
+
const secondStart = second.tracePath[secondIndex]!
|
|
28
|
+
const secondEnd = second.tracePath[secondIndex + 1]!
|
|
29
|
+
const secondIsVertical = Math.abs(secondStart.x - secondEnd.x) < EPS
|
|
30
|
+
const secondIsHorizontal = Math.abs(secondStart.y - secondEnd.y) < EPS
|
|
31
|
+
|
|
32
|
+
if (
|
|
33
|
+
firstIsVertical &&
|
|
34
|
+
secondIsVertical &&
|
|
35
|
+
Math.abs(firstStart.x - secondStart.x) < EPS
|
|
36
|
+
) {
|
|
37
|
+
const overlapLength =
|
|
38
|
+
Math.min(
|
|
39
|
+
Math.max(firstStart.y, firstEnd.y),
|
|
40
|
+
Math.max(secondStart.y, secondEnd.y),
|
|
41
|
+
) -
|
|
42
|
+
Math.max(
|
|
43
|
+
Math.min(firstStart.y, firstEnd.y),
|
|
44
|
+
Math.min(secondStart.y, secondEnd.y),
|
|
45
|
+
)
|
|
46
|
+
if (overlapLength > EPS) return true
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (
|
|
50
|
+
firstIsHorizontal &&
|
|
51
|
+
secondIsHorizontal &&
|
|
52
|
+
Math.abs(firstStart.y - secondStart.y) < EPS
|
|
53
|
+
) {
|
|
54
|
+
const overlapLength =
|
|
55
|
+
Math.min(
|
|
56
|
+
Math.max(firstStart.x, firstEnd.x),
|
|
57
|
+
Math.max(secondStart.x, secondEnd.x),
|
|
58
|
+
) -
|
|
59
|
+
Math.max(
|
|
60
|
+
Math.min(firstStart.x, firstEnd.x),
|
|
61
|
+
Math.min(secondStart.x, secondEnd.x),
|
|
62
|
+
)
|
|
63
|
+
if (overlapLength > EPS) return true
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return false
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
test("avoids RP2040 USB-C CC2 label connector overlapping GND", () => {
|
|
72
|
+
const solver = new SchematicTracePipelineSolver(inputProblem as any)
|
|
73
|
+
|
|
74
|
+
solver.solve()
|
|
75
|
+
expect(solver).toMatchSolverSnapshot(import.meta.path)
|
|
76
|
+
|
|
77
|
+
const traces = solver.netLabelTraceCollisionSolver!.getOutput().traces
|
|
78
|
+
const cc2LabelConnector = traces.find(
|
|
79
|
+
(trace) =>
|
|
80
|
+
trace.userNetId === "CC2" &&
|
|
81
|
+
trace.mspPairId.startsWith("available-net-orientation-"),
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
expect(cc2LabelConnector).toBeDefined()
|
|
85
|
+
|
|
86
|
+
const overlappingDifferentNetTraceIds = traces
|
|
87
|
+
.filter(
|
|
88
|
+
(trace) =>
|
|
89
|
+
trace.globalConnNetId !== cc2LabelConnector!.globalConnNetId &&
|
|
90
|
+
pathsHavePositiveLengthCollinearOverlap(trace, cc2LabelConnector!),
|
|
91
|
+
)
|
|
92
|
+
.map((trace) => trace.mspPairId)
|
|
93
|
+
|
|
94
|
+
expect(overlappingDifferentNetTraceIds).toEqual([])
|
|
95
|
+
})
|