diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 3c9a7fb..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,13 +0,0 @@ -# These are supported funding model platforms - -github: [mrzealot] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry -custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/23creus.yaml b/23creus.yaml index 54e288b..d063d21 100644 --- a/23creus.yaml +++ b/23creus.yaml @@ -1,4 +1,3 @@ -# yaml-language-server: $schema=./meta/schema.json units: kx: cx ky: cy @@ -68,78 +67,6 @@ points: outlines: # outer border - farouter: - - what: polygon - points: - - ref: matrix_inner_num - shift: [13, 13] - - ref: matrix_middle_num - shift: [13, 13] - - ref: matrix_middle_num - shift: [-13, 13] - - ref: matrix_pinky_num - shift: [-13, 13] - - ref: matrix_pinky_bottom - shift: [-13, -13] - - ref: matrix_pinky_bottom - shift: [13, -13] - - ref: matrix_inner_bottom - shift: [-13, -13] - - ref: matrix_inner_bottom - shift: [13, -13] - - ref: mirror_matrix_inner_bottom - shift: [13, -13] - - ref: mirror_matrix_inner_bottom - shift: [-13, -13] - - ref: mirror_matrix_pinky_bottom - shift: [13, -13] - - ref: mirror_matrix_pinky_bottom - shift: [-13, -13] - - ref: mirror_matrix_pinky_num - shift: [-13, 13] - - ref: mirror_matrix_middle_num - shift: [-13, 13] - - ref: mirror_matrix_middle_num - shift: [13, 13] - - ref: mirror_matrix_inner_num - shift: [13, 13] - - compatouter: - - what: polygon - points: - - ref: matrix_inner_num - shift: [11, 11] - - ref: matrix_middle_num - shift: [11, 11] - - ref: matrix_middle_num - shift: [-11, 11] - - ref: matrix_pinky_num - shift: [-11, 11] - - ref: matrix_pinky_bottom - shift: [-11, -11] - - ref: matrix_pinky_bottom - shift: [11, -11] - - ref: matrix_inner_bottom - shift: [-11, -11] - - ref: matrix_inner_bottom - shift: [11, -11] - - ref: mirror_matrix_inner_bottom - shift: [11, -11] - - ref: mirror_matrix_inner_bottom - shift: [-11, -11] - - ref: mirror_matrix_pinky_bottom - shift: [11, -11] - - ref: mirror_matrix_pinky_bottom - shift: [-11, -11] - - ref: mirror_matrix_pinky_num - shift: [-11, 11] - - ref: mirror_matrix_middle_num - shift: [-11, 11] - - ref: mirror_matrix_middle_num - shift: [11, 11] - - ref: mirror_matrix_inner_num - shift: [11, 11] - outer: - what: polygon points: @@ -185,14 +112,14 @@ outlines: aggregate.parts: - matrix_inner_bottom - mirror_matrix_inner_bottom - shift: [0, 40] + shift: [0, 0] # 14mm holes for cherry switches keyholes: - what: rectangle where: true asym: source - size: 13.8 + size: 13.5 # keycaps keycaps: @@ -207,21 +134,6 @@ outlines: - -keyholes - -chip - # far outer switchplate - farouterswitchplate: - - farouter - - -keyholes - - -chip - -cases: - laser: - - name: farouterswitchplate - extrude: 6.5 - - name: compatouter - extrude: 5.2 - shift: [0, 0, 1.3] - operation: subtract - pcbs: main: outlines: @@ -237,7 +149,14 @@ pcbs: to: "{{column_net}}" keycaps: true hotswap: true - + #led: + # what: rgb + # where: true + # adjust: + # shift: [0, -5] + # params: + # din: "{{label}}" + # dout: P02 diode: what: diode where: true @@ -245,9 +164,8 @@ pcbs: from: "{{colrow}}" to: "{{row_net}}" adjust: - shift: [0, -5] - rotate: 180 - + shift: [-8, -0] + rotate: 90 reset: what: button params: @@ -259,7 +177,6 @@ pcbs: - matrix_inner_bottom - mirror_matrix_inner_bottom rotate: 90 - mcu: what: promicro where: diff --git a/23treus.yaml b/23treus.yaml index 2984107..56ffaaf 100644 --- a/23treus.yaml +++ b/23treus.yaml @@ -145,8 +145,6 @@ outlines: - -keyholes - -chip -cases: - pcbs: main: outlines: diff --git a/Makefile b/Makefile index 60e09c0..e732de1 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ all: node_modules - node src/cli.js 23creus.yaml -d -o output - cp output/pcbs/main.kicad_pcb kicad/23creus/ + node src/cli.js 23creus.yaml -o output + cp output/pcbs/main.kicad_pcb kicad/45treus/ node_modules: npm ci diff --git a/README.md b/README.md deleted file mode 100644 index ae404e1..0000000 --- a/README.md +++ /dev/null @@ -1,111 +0,0 @@ - -# Ergogen - -***Ergonomic Keyboard Generator*** - -
- - - -The project aims to provide a common configuration format to describe ***ergonomic*** 2D layouts and generate automatic plates, cases, as well as un-routed PCBs for them. The project grew out of (and is an integral part of) the [Absolem keyboard], and shares its [Discord] server as well. - - -
-
-
-
- ---- - -[![Button WebUI]][WebUI] -[![Button Documentation]][Documentation] -[![Button Discord]][Discord] -[![Button Donate]][Donate] - ---- - -
- -
-
- -## Getting Started - -Until there's a proper "Getting started" guide, try getting acquainted with **Ergogen** by following these steps in order: - -
- -1. Read the **[Documentation]**. - - D'uuh. - They're not complete by any measure, but should give you a fairly good idea what you're dealing with here. - -
- -2. Try one of the web-based deployments. - - [![Button Official]][WebUI]    - [![Button Unofficial]][Unofficial] - - The unofficial deployment is probably better, tbh, and will soon be replacing the official one. - Choose either one, then click things, look at outputs and see if things start to make sense. - - There is no need for you to download the **CLI** unless you want to do one of the following: - - - Preview in-development features - - Use custom modifications - - Contribute code - -
- -3. Search the [`ergogen`][Topic] topic on GitHub. - - There, you can look at (and reverse engineer) a variety of real life configs using **Ergogen**. - Pop them into the web UI to see what they do, tinker with them and things should start to make more sense. - -
- -4. If a question persists after all of the above, feel free to ask it over on **[Discord]** and we'll do our best to help you out. - -
- -## Contributions - -Feature ideas, documentation improvements, examples, tests, or pull requests welcome! -Get in touch on our **[Discord]**, and we can definitely find something you can help with, if you'd like to. - -
- -## Sponsors - -Huge thanks go to everyone who chooses to support my work! -But even huger thanks are due to the following, *distinguished* sponsors: - -- [perce](https://madebyperce.com/) -- [Cache](https://github.com/MvEerd) -- [Neil Gilmour](https://github.com/neilgilmour) -- [ochief](https://github.com/ochief) -- [Alyx Brett](https://github.com/alyx-brett) - - - -[Absolem keyboard]: https://zealot.hu/absolem -[Documentation]: https://docs.ergogen.xyz -[Discord]: http://discord.ergogen.xyz -[WebUI]: https://ergogen.xyz -[Unofficial]: https://ergogen.cache.works/ -[Topic]: https://github.com/topics/ergogen -[Donate]: https://github.com/sponsors/mrzealot - - - -[Button WebUI]: https://img.shields.io/badge/Deployment-37a779?style=for-the-badge&logoColor=white&logo=AppleArcade -[Button Unofficial]: https://img.shields.io/badge/Unofficial-yellow?style=for-the-badge -[Button Official]: https://img.shields.io/badge/Official-37a779?style=for-the-badge -[Button Documentation]: https://img.shields.io/badge/Documentation-1793D1?style=for-the-badge&logoColor=white&logo=GitBook -[Button Discord]: https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logoColor=white&logo=Discord -[Button Donate]: https://img.shields.io/badge/Donate-EA4AAA?style=for-the-badge&logoColor=white&logo=githubsponsors diff --git a/kicad/23creus/23creus.kicad_prl b/kicad/23creus/23creus.kicad_prl index 4beb8e5..ac5a5b3 100644 --- a/kicad/23creus/23creus.kicad_prl +++ b/kicad/23creus/23creus.kicad_prl @@ -1,14 +1,12 @@ { "board": { - "active_layer": 37, + "active_layer": 0, "active_layer_preset": "All Layers", "auto_track_width": true, - "hidden_netclasses": [], "hidden_nets": [], "high_contrast_mode": 0, "net_color_mode": 1, "opacity": { - "images": 0.6, "pads": 1.0, "tracks": 1.0, "vias": 1.0, diff --git a/kicad/23creus/23creus.kicad_pro b/kicad/23creus/23creus.kicad_pro index 65fc3e8..c75a0d5 100644 --- a/kicad/23creus/23creus.kicad_pro +++ b/kicad/23creus/23creus.kicad_pro @@ -1,6 +1,5 @@ { "board": { - "3dviewports": [], "design_settings": { "defaults": { "board_outline_line_width": 0.049999999999999996, @@ -45,6 +44,7 @@ "silk_text_thickness": 0.15, "silk_text_upright": false, "zones": { + "45_degree_only": false, "min_clearance": 0.508 } }, @@ -57,43 +57,32 @@ "rule_severities": { "annular_width": "error", "clearance": "error", - "connection_width": "warning", "copper_edge_clearance": "error", - "copper_sliver": "warning", "courtyards_overlap": "error", "diff_pair_gap_out_of_range": "error", "diff_pair_uncoupled_length_too_long": "error", "drill_out_of_range": "error", "duplicate_footprints": "warning", "extra_footprint": "warning", - "footprint": "error", - "footprint_type_mismatch": "ignore", + "footprint_type_mismatch": "error", "hole_clearance": "error", "hole_near_hole": "error", "invalid_outline": "error", - "isolated_copper": "warning", "item_on_disabled_layer": "error", "items_not_allowed": "error", "length_out_of_range": "error", - "lib_footprint_issues": "warning", - "lib_footprint_mismatch": "warning", "malformed_courtyard": "error", "microvia_drill_out_of_range": "error", "missing_courtyard": "ignore", "missing_footprint": "warning", "net_conflict": "warning", "npth_inside_courtyard": "ignore", - "padstack": "warning", + "padstack": "error", "pth_inside_courtyard": "ignore", "shorting_items": "error", - "silk_edge_clearance": "warning", "silk_over_copper": "warning", "silk_overlap": "warning", "skew_out_of_range": "error", - "solder_mask_bridge": "error", - "starved_thermal": "error", - "text_height": "warning", - "text_thickness": "warning", "through_hole_pad_without_hole": "error", "too_many_vias": "error", "track_dangling": "warning", @@ -102,75 +91,32 @@ "unconnected_items": "error", "unresolved_variable": "error", "via_dangling": "warning", + "zone_has_empty_net": "error", "zones_intersect": "error" }, "rules": { + "allow_blind_buried_vias": false, + "allow_microvias": false, "max_error": 0.005, "min_clearance": 0.0, - "min_connection": 0.0, "min_copper_edge_clearance": 0.075, "min_hole_clearance": 0.25, "min_hole_to_hole": 0.25, "min_microvia_diameter": 0.19999999999999998, "min_microvia_drill": 0.09999999999999999, - "min_resolved_spokes": 2, "min_silk_clearance": 0.0, - "min_text_height": 0.7999999999999999, - "min_text_thickness": 0.08, "min_through_hole_diameter": 0.3, "min_track_width": 0.19999999999999998, - "min_via_annular_width": 0.09999999999999999, + "min_via_annular_width": 0.049999999999999996, "min_via_diameter": 0.39999999999999997, - "solder_mask_to_copper_clearance": 0.0, "use_height_for_length_calcs": true }, - "teardrop_options": [ - { - "td_allow_use_two_tracks": true, - "td_curve_segcount": 5, - "td_on_pad_in_zone": false, - "td_onpadsmd": true, - "td_onroundshapesonly": false, - "td_ontrackend": false, - "td_onviapad": true - } - ], - "teardrop_parameters": [ - { - "td_curve_segcount": 0, - "td_height_ratio": 1.0, - "td_length_ratio": 0.5, - "td_maxheight": 2.0, - "td_maxlen": 1.0, - "td_target_name": "td_round_shape", - "td_width_to_size_filter_ratio": 0.9 - }, - { - "td_curve_segcount": 0, - "td_height_ratio": 1.0, - "td_length_ratio": 0.5, - "td_maxheight": 2.0, - "td_maxlen": 1.0, - "td_target_name": "td_rect_shape", - "td_width_to_size_filter_ratio": 0.9 - }, - { - "td_curve_segcount": 0, - "td_height_ratio": 1.0, - "td_length_ratio": 0.5, - "td_maxheight": 2.0, - "td_maxlen": 1.0, - "td_target_name": "td_track_end", - "td_width_to_size_filter_ratio": 0.9 - } - ], "track_widths": [], "via_dimensions": [], "zones_allow_external_fillets": false, "zones_use_no_outline": true }, - "layer_presets": [], - "viewports": [] + "layer_presets": [] }, "boards": [], "cvpcb": { @@ -392,7 +338,7 @@ "net_settings": { "classes": [ { - "bus_width": 12, + "bus_width": 12.0, "clearance": 0.2, "diff_pair_gap": 0.25, "diff_pair_via_gap": 0.25, @@ -406,276 +352,13 @@ "track_width": 0.25, "via_diameter": 0.8, "via_drill": 0.4, - "wire_width": 6 + "wire_width": 6.0 } ], "meta": { - "version": 3 + "version": 2 }, - "net_colors": null, - "netclass_assignments": null, - "netclass_patterns": [ - { - "netclass": "Default", - "pattern": "" - }, - { - "netclass": "Default", - "pattern": "pinky_bottom" - }, - { - "netclass": "Default", - "pattern": "P21" - }, - { - "netclass": "Default", - "pattern": "pinky_home" - }, - { - "netclass": "Default", - "pattern": "pinky_top" - }, - { - "netclass": "Default", - "pattern": "pinky_num" - }, - { - "netclass": "Default", - "pattern": "ring_bottom" - }, - { - "netclass": "Default", - "pattern": "P20" - }, - { - "netclass": "Default", - "pattern": "ring_home" - }, - { - "netclass": "Default", - "pattern": "ring_top" - }, - { - "netclass": "Default", - "pattern": "ring_num" - }, - { - "netclass": "Default", - "pattern": "middle_bottom" - }, - { - "netclass": "Default", - "pattern": "P19" - }, - { - "netclass": "Default", - "pattern": "middle_home" - }, - { - "netclass": "Default", - "pattern": "middle_top" - }, - { - "netclass": "Default", - "pattern": "middle_num" - }, - { - "netclass": "Default", - "pattern": "index_bottom" - }, - { - "netclass": "Default", - "pattern": "P18" - }, - { - "netclass": "Default", - "pattern": "index_home" - }, - { - "netclass": "Default", - "pattern": "index_top" - }, - { - "netclass": "Default", - "pattern": "index_num" - }, - { - "netclass": "Default", - "pattern": "inner_bottom" - }, - { - "netclass": "Default", - "pattern": "P15" - }, - { - "netclass": "Default", - "pattern": "inner_home" - }, - { - "netclass": "Default", - "pattern": "inner_top" - }, - { - "netclass": "Default", - "pattern": "inner_num" - }, - { - "netclass": "Default", - "pattern": "thumb_bottom" - }, - { - "netclass": "Default", - "pattern": "P14" - }, - { - "netclass": "Default", - "pattern": "mirror_pinky_bottom" - }, - { - "netclass": "Default", - "pattern": "P2" - }, - { - "netclass": "Default", - "pattern": "mirror_pinky_home" - }, - { - "netclass": "Default", - "pattern": "mirror_pinky_top" - }, - { - "netclass": "Default", - "pattern": "mirror_pinky_num" - }, - { - "netclass": "Default", - "pattern": "mirror_ring_bottom" - }, - { - "netclass": "Default", - "pattern": "P3" - }, - { - "netclass": "Default", - "pattern": "mirror_ring_home" - }, - { - "netclass": "Default", - "pattern": "mirror_ring_top" - }, - { - "netclass": "Default", - "pattern": "mirror_ring_num" - }, - { - "netclass": "Default", - "pattern": "mirror_middle_bottom" - }, - { - "netclass": "Default", - "pattern": "P4" - }, - { - "netclass": "Default", - "pattern": "mirror_middle_home" - }, - { - "netclass": "Default", - "pattern": "mirror_middle_top" - }, - { - "netclass": "Default", - "pattern": "mirror_middle_num" - }, - { - "netclass": "Default", - "pattern": "mirror_index_bottom" - }, - { - "netclass": "Default", - "pattern": "P5" - }, - { - "netclass": "Default", - "pattern": "mirror_index_home" - }, - { - "netclass": "Default", - "pattern": "mirror_index_top" - }, - { - "netclass": "Default", - "pattern": "mirror_index_num" - }, - { - "netclass": "Default", - "pattern": "mirror_inner_bottom" - }, - { - "netclass": "Default", - "pattern": "P6" - }, - { - "netclass": "Default", - "pattern": "mirror_inner_home" - }, - { - "netclass": "Default", - "pattern": "mirror_inner_top" - }, - { - "netclass": "Default", - "pattern": "mirror_inner_num" - }, - { - "netclass": "Default", - "pattern": "mirror_thumb_bottom" - }, - { - "netclass": "Default", - "pattern": "P7" - }, - { - "netclass": "Default", - "pattern": "P16" - }, - { - "netclass": "Default", - "pattern": "P10" - }, - { - "netclass": "Default", - "pattern": "P9" - }, - { - "netclass": "Default", - "pattern": "P8" - }, - { - "netclass": "Default", - "pattern": "RST" - }, - { - "netclass": "Default", - "pattern": "GND" - }, - { - "netclass": "Default", - "pattern": "RAW" - }, - { - "netclass": "Default", - "pattern": "VCC" - }, - { - "netclass": "Default", - "pattern": "P1" - }, - { - "netclass": "Default", - "pattern": "P0" - } - ] + "net_colors": null }, "pcbnew": { "last_paths": { diff --git a/kicad/23creus/main.kicad_pcb b/kicad/23creus/main.kicad_pcb deleted file mode 100644 index ee475df..0000000 --- a/kicad/23creus/main.kicad_pcb +++ /dev/null @@ -1,7254 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title main) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") -(net 1 "pinky_bottom") -(net 2 "P21") -(net 3 "pinky_home") -(net 4 "pinky_top") -(net 5 "pinky_num") -(net 6 "ring_bottom") -(net 7 "P20") -(net 8 "ring_home") -(net 9 "ring_top") -(net 10 "ring_num") -(net 11 "middle_bottom") -(net 12 "P19") -(net 13 "middle_home") -(net 14 "middle_top") -(net 15 "middle_num") -(net 16 "index_bottom") -(net 17 "P18") -(net 18 "index_home") -(net 19 "index_top") -(net 20 "index_num") -(net 21 "inner_bottom") -(net 22 "P15") -(net 23 "inner_home") -(net 24 "inner_top") -(net 25 "inner_num") -(net 26 "thumb_bottom") -(net 27 "P14") -(net 28 "mirror_pinky_bottom") -(net 29 "P2") -(net 30 "mirror_pinky_home") -(net 31 "mirror_pinky_top") -(net 32 "mirror_pinky_num") -(net 33 "mirror_ring_bottom") -(net 34 "P3") -(net 35 "mirror_ring_home") -(net 36 "mirror_ring_top") -(net 37 "mirror_ring_num") -(net 38 "mirror_middle_bottom") -(net 39 "P4") -(net 40 "mirror_middle_home") -(net 41 "mirror_middle_top") -(net 42 "mirror_middle_num") -(net 43 "mirror_index_bottom") -(net 44 "P5") -(net 45 "mirror_index_home") -(net 46 "mirror_index_top") -(net 47 "mirror_index_num") -(net 48 "mirror_inner_bottom") -(net 49 "P6") -(net 50 "mirror_inner_home") -(net 51 "mirror_inner_top") -(net 52 "mirror_inner_num") -(net 53 "mirror_thumb_bottom") -(net 54 "P7") -(net 55 "P16") -(net 56 "P10") -(net 57 "P9") -(net 58 "P8") -(net 59 "RST") -(net 60 "GND") -(net 61 "RAW") -(net 62 "VCC") -(net 63 "P1") -(net 64 "P0") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") -(add_net "pinky_bottom") -(add_net "P21") -(add_net "pinky_home") -(add_net "pinky_top") -(add_net "pinky_num") -(add_net "ring_bottom") -(add_net "P20") -(add_net "ring_home") -(add_net "ring_top") -(add_net "ring_num") -(add_net "middle_bottom") -(add_net "P19") -(add_net "middle_home") -(add_net "middle_top") -(add_net "middle_num") -(add_net "index_bottom") -(add_net "P18") -(add_net "index_home") -(add_net "index_top") -(add_net "index_num") -(add_net "inner_bottom") -(add_net "P15") -(add_net "inner_home") -(add_net "inner_top") -(add_net "inner_num") -(add_net "thumb_bottom") -(add_net "P14") -(add_net "mirror_pinky_bottom") -(add_net "P2") -(add_net "mirror_pinky_home") -(add_net "mirror_pinky_top") -(add_net "mirror_pinky_num") -(add_net "mirror_ring_bottom") -(add_net "P3") -(add_net "mirror_ring_home") -(add_net "mirror_ring_top") -(add_net "mirror_ring_num") -(add_net "mirror_middle_bottom") -(add_net "P4") -(add_net "mirror_middle_home") -(add_net "mirror_middle_top") -(add_net "mirror_middle_num") -(add_net "mirror_index_bottom") -(add_net "P5") -(add_net "mirror_index_home") -(add_net "mirror_index_top") -(add_net "mirror_index_num") -(add_net "mirror_inner_bottom") -(add_net "P6") -(add_net "mirror_inner_home") -(add_net "mirror_inner_top") -(add_net "mirror_inner_num") -(add_net "mirror_thumb_bottom") -(add_net "P7") -(add_net "P16") -(add_net "P10") -(add_net "P9") -(add_net "P8") -(add_net "RST") -(add_net "GND") -(add_net "RAW") -(add_net "VCC") -(add_net "P1") -(add_net "P0") - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 0 0 -23) - - - (fp_text reference "S1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 7.4238914 -17.4895922 -23) - - - (fp_text reference "S2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 14.8477829 -34.9791844 -23) - - - (fp_text reference "S3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 22.2716743 -52.4687766 -23) - - - (fp_text reference "S4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 18.5922643 3.5465065 -23) - - - (fp_text reference "S5" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 26.0161557 -13.9430858 -23) - - - (fp_text reference "S6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 33.4400472 -31.432678 -23) - - - (fp_text reference "S7" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 40.8639386 -48.9222702 -23) - - - (fp_text reference "S8" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 37.5752597 6.1725081 -23) - - - (fp_text reference "S9" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 44.9991512 -11.3170841 -23) - - - (fp_text reference "S10" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 52.4230426 -28.8066764 -23) - - - (fp_text reference "S11" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 59.8469341 -46.2962686 -23) - - - (fp_text reference "S12" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 52.6509439 18.0035582 -23) - - - (fp_text reference "S13" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 60.0748353 0.513966 -23) - - - (fp_text reference "S14" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 67.4987268 -16.9756262 -23) - - - (fp_text reference "S15" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 74.9226182 -34.4652184 -23) - - - (fp_text reference "S16" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 67.3358969 30.7551132 -23) - - - (fp_text reference "S17" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 74.7597883 13.265521 -23) - - - (fp_text reference "S18" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 82.1836798 -4.2240712 -23) - - - (fp_text reference "S19" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 89.6075712 -21.7136634 -23) - - - (fp_text reference "S20" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 88.272548 28.7785906 -23) - - - (fp_text reference "S21" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 27 "P14")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 218.545096 0 23) - - - (fp_text reference "S22" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 211.1212046 -17.4895922 23) - - - (fp_text reference "S23" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 203.6973131 -34.9791844 23) - - - (fp_text reference "S24" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 196.2734217 -52.4687766 23) - - - (fp_text reference "S25" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 199.9528317 3.5465065 23) - - - (fp_text reference "S26" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 192.5289403 -13.9430858 23) - - - (fp_text reference "S27" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 185.1050488 -31.432678 23) - - - (fp_text reference "S28" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 177.68115740000002 -48.9222702 23) - - - (fp_text reference "S29" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 180.9698363 6.1725081 23) - - - (fp_text reference "S30" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 173.5459448 -11.3170841 23) - - - (fp_text reference "S31" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 166.1220534 -28.8066764 23) - - - (fp_text reference "S32" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 158.6981619 -46.2962686 23) - - - (fp_text reference "S33" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 165.89415209999999 18.0035582 23) - - - (fp_text reference "S34" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 158.4702607 0.513966 23) - - - (fp_text reference "S35" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 151.04636920000002 -16.9756262 23) - - - (fp_text reference "S36" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 143.6224778 -34.4652184 23) - - - (fp_text reference "S37" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 151.2091991 30.7551132 23) - - - (fp_text reference "S38" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 143.7853077 13.265521 23) - - - (fp_text reference "S39" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 136.3614162 -4.2240712 23) - - - (fp_text reference "S40" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 128.9375248 -21.7136634 23) - - - (fp_text reference "S41" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 130.272548 28.7785906 23) - - - (fp_text reference "S42" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 54 "P7")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 218.545096 0 23) - - - (fp_text reference "S43" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 211.1212046 -17.4895922 23) - - - (fp_text reference "S44" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 203.6973131 -34.9791844 23) - - - (fp_text reference "S45" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 196.2734217 -52.4687766 23) - - - (fp_text reference "S46" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 199.9528317 3.5465065 23) - - - (fp_text reference "S47" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 192.5289403 -13.9430858 23) - - - (fp_text reference "S48" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 185.1050488 -31.432678 23) - - - (fp_text reference "S49" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 177.68115740000002 -48.9222702 23) - - - (fp_text reference "S50" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 180.9698363 6.1725081 23) - - - (fp_text reference "S51" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 173.5459448 -11.3170841 23) - - - (fp_text reference "S52" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 166.1220534 -28.8066764 23) - - - (fp_text reference "S53" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 158.6981619 -46.2962686 23) - - - (fp_text reference "S54" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 165.89415209999999 18.0035582 23) - - - (fp_text reference "S55" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 158.4702607 0.513966 23) - - - (fp_text reference "S56" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 151.04636920000002 -16.9756262 23) - - - (fp_text reference "S57" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 143.6224778 -34.4652184 23) - - - (fp_text reference "S58" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 151.2091991 30.7551132 23) - - - (fp_text reference "S59" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 143.7853077 13.265521 23) - - - (fp_text reference "S60" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 136.3614162 -4.2240712 23) - - - (fp_text reference "S61" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 128.9375248 -21.7136634 23) - - - (fp_text reference "S62" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 130.272548 28.7785906 23) - - - (fp_text reference "S63" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 54 "P7")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 0 0 -23) - - - (fp_text reference "S64" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 7.4238914 -17.4895922 -23) - - - (fp_text reference "S65" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 14.8477829 -34.9791844 -23) - - - (fp_text reference "S66" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 22.2716743 -52.4687766 -23) - - - (fp_text reference "S67" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 18.5922643 3.5465065 -23) - - - (fp_text reference "S68" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 26.0161557 -13.9430858 -23) - - - (fp_text reference "S69" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 33.4400472 -31.432678 -23) - - - (fp_text reference "S70" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 40.8639386 -48.9222702 -23) - - - (fp_text reference "S71" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 37.5752597 6.1725081 -23) - - - (fp_text reference "S72" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 44.9991512 -11.3170841 -23) - - - (fp_text reference "S73" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 52.4230426 -28.8066764 -23) - - - (fp_text reference "S74" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 59.8469341 -46.2962686 -23) - - - (fp_text reference "S75" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 52.6509439 18.0035582 -23) - - - (fp_text reference "S76" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 60.0748353 0.513966 -23) - - - (fp_text reference "S77" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 67.4987268 -16.9756262 -23) - - - (fp_text reference "S78" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 74.9226182 -34.4652184 -23) - - - (fp_text reference "S79" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 67.3358969 30.7551132 -23) - - - (fp_text reference "S80" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 74.7597883 13.265521 -23) - - - (fp_text reference "S81" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 82.1836798 -4.2240712 -23) - - - (fp_text reference "S82" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 89.6075712 -21.7136634 -23) - - - (fp_text reference "S83" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 88.272548 28.7785906 -23) - - - (fp_text reference "S84" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 27 "P14")) - ) - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at -1.9536556 4.6025243 157) - - - (fp_text reference "D1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 1 "pinky_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 1 "pinky_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 5.470235799999999 -12.887067900000002 157) - - - (fp_text reference "D2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 "pinky_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 3 "pinky_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 12.894127300000001 -30.376660100000002 157) - - - (fp_text reference "D3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 4 "pinky_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 4 "pinky_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 20.3180187 -47.8662523 157) - - - (fp_text reference "D4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 "pinky_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 5 "pinky_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 16.6386087 8.1490308 157) - - - (fp_text reference "D5" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 6 "ring_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 6 "ring_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 24.062500099999998 -9.3405615 157) - - - (fp_text reference "D6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 8 "ring_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 8 "ring_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 31.4863916 -26.8301537 157) - - - (fp_text reference "D7" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 "ring_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 9 "ring_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 38.910283 -44.3197459 157) - - - (fp_text reference "D8" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 10 "ring_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 10 "ring_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 35.6216041 10.7750324 157) - - - (fp_text reference "D9" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 11 "middle_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 11 "middle_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 43.0454956 -6.714559800000001 157) - - - (fp_text reference "D10" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 13 "middle_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 13 "middle_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 50.469387000000005 -24.2041521 157) - - - (fp_text reference "D11" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 14 "middle_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 14 "middle_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 57.8932785 -41.6937443 157) - - - (fp_text reference "D12" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 15 "middle_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 15 "middle_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 50.697288300000004 22.6060825 157) - - - (fp_text reference "D13" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 16 "index_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 16 "index_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 58.1211797 5.1164903 157) - - - (fp_text reference "D14" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 18 "index_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 18 "index_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 65.5450712 -12.373101900000002 157) - - - (fp_text reference "D15" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 19 "index_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 19 "index_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 72.9689626 -29.8626941 157) - - - (fp_text reference "D16" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 20 "index_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 20 "index_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 65.38224129999999 35.3576375 157) - - - (fp_text reference "D17" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 21 "inner_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 21 "inner_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 72.80613269999999 17.8680453 157) - - - (fp_text reference "D18" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 23 "inner_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 23 "inner_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 80.23002419999999 0.37845309999999976 157) - - - (fp_text reference "D19" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 24 "inner_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 24 "inner_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 87.65391559999999 -17.111139100000003 157) - - - (fp_text reference "D20" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 25 "inner_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 25 "inner_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 86.3188924 33.3811149 157) - - - (fp_text reference "D21" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 26 "thumb_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 26 "thumb_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 220.4987516 4.6025243 -157) - - - (fp_text reference "D22" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 28 "mirror_pinky_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 28 "mirror_pinky_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 213.0748602 -12.887067900000002 -157) - - - (fp_text reference "D23" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 30 "mirror_pinky_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 30 "mirror_pinky_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 205.6509687 -30.376660100000002 -157) - - - (fp_text reference "D24" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 31 "mirror_pinky_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 31 "mirror_pinky_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 198.2270773 -47.8662523 -157) - - - (fp_text reference "D25" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 32 "mirror_pinky_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 32 "mirror_pinky_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 201.90648729999998 8.1490308 -157) - - - (fp_text reference "D26" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 33 "mirror_ring_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 33 "mirror_ring_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 194.48259589999998 -9.3405615 -157) - - - (fp_text reference "D27" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 35 "mirror_ring_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 35 "mirror_ring_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 187.05870439999998 -26.8301537 -157) - - - (fp_text reference "D28" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 36 "mirror_ring_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 36 "mirror_ring_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 179.634813 -44.3197459 -157) - - - (fp_text reference "D29" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 37 "mirror_ring_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 37 "mirror_ring_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 182.9234919 10.7750324 -157) - - - (fp_text reference "D30" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 38 "mirror_middle_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 38 "mirror_middle_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 175.4996004 -6.714559800000001 -157) - - - (fp_text reference "D31" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 40 "mirror_middle_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 40 "mirror_middle_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 168.075709 -24.2041521 -157) - - - (fp_text reference "D32" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 41 "mirror_middle_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 41 "mirror_middle_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 160.6518175 -41.6937443 -157) - - - (fp_text reference "D33" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 42 "mirror_middle_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 42 "mirror_middle_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 167.84780769999998 22.6060825 -157) - - - (fp_text reference "D34" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 43 "mirror_index_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 43 "mirror_index_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 160.4239163 5.1164903 -157) - - - (fp_text reference "D35" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 45 "mirror_index_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 45 "mirror_index_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 153.0000248 -12.373101900000002 -157) - - - (fp_text reference "D36" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 46 "mirror_index_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 46 "mirror_index_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 145.5761334 -29.8626941 -157) - - - (fp_text reference "D37" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 47 "mirror_index_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 47 "mirror_index_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 153.1628547 35.3576375 -157) - - - (fp_text reference "D38" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 48 "mirror_inner_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 48 "mirror_inner_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 145.7389633 17.8680453 -157) - - - (fp_text reference "D39" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 50 "mirror_inner_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 50 "mirror_inner_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 138.3150718 0.37845309999999976 -157) - - - (fp_text reference "D40" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 51 "mirror_inner_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 51 "mirror_inner_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 130.8911804 -17.111139100000003 -157) - - - (fp_text reference "D41" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 52 "mirror_inner_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 52 "mirror_inner_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 132.2262036 33.3811149 -157) - - - (fp_text reference "D42" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 53 "mirror_thumb_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 53 "mirror_thumb_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 220.4987516 4.6025243 -157) - - - (fp_text reference "D43" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 28 "mirror_pinky_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 28 "mirror_pinky_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 213.0748602 -12.887067900000002 -157) - - - (fp_text reference "D44" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 30 "mirror_pinky_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 30 "mirror_pinky_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 205.6509687 -30.376660100000002 -157) - - - (fp_text reference "D45" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 31 "mirror_pinky_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 31 "mirror_pinky_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 198.2270773 -47.8662523 -157) - - - (fp_text reference "D46" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 32 "mirror_pinky_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 32 "mirror_pinky_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 201.90648729999998 8.1490308 -157) - - - (fp_text reference "D47" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 33 "mirror_ring_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 33 "mirror_ring_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 194.48259589999998 -9.3405615 -157) - - - (fp_text reference "D48" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 35 "mirror_ring_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 35 "mirror_ring_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 187.05870439999998 -26.8301537 -157) - - - (fp_text reference "D49" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 36 "mirror_ring_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 36 "mirror_ring_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 179.634813 -44.3197459 -157) - - - (fp_text reference "D50" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 37 "mirror_ring_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 37 "mirror_ring_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 182.9234919 10.7750324 -157) - - - (fp_text reference "D51" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 38 "mirror_middle_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 38 "mirror_middle_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 175.4996004 -6.714559800000001 -157) - - - (fp_text reference "D52" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 40 "mirror_middle_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 40 "mirror_middle_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 168.075709 -24.2041521 -157) - - - (fp_text reference "D53" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 41 "mirror_middle_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 41 "mirror_middle_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 160.6518175 -41.6937443 -157) - - - (fp_text reference "D54" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 42 "mirror_middle_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 42 "mirror_middle_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 167.84780769999998 22.6060825 -157) - - - (fp_text reference "D55" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 43 "mirror_index_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 43 "mirror_index_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 160.4239163 5.1164903 -157) - - - (fp_text reference "D56" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 45 "mirror_index_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 45 "mirror_index_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 153.0000248 -12.373101900000002 -157) - - - (fp_text reference "D57" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 46 "mirror_index_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 46 "mirror_index_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 145.5761334 -29.8626941 -157) - - - (fp_text reference "D58" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 47 "mirror_index_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 47 "mirror_index_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 153.1628547 35.3576375 -157) - - - (fp_text reference "D59" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 48 "mirror_inner_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 48 "mirror_inner_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 145.7389633 17.8680453 -157) - - - (fp_text reference "D60" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 50 "mirror_inner_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 50 "mirror_inner_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 138.3150718 0.37845309999999976 -157) - - - (fp_text reference "D61" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 51 "mirror_inner_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 51 "mirror_inner_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 130.8911804 -17.111139100000003 -157) - - - (fp_text reference "D62" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 52 "mirror_inner_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 52 "mirror_inner_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 132.2262036 33.3811149 -157) - - - (fp_text reference "D63" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 53 "mirror_thumb_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 53 "mirror_thumb_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at -1.9536556 4.6025243 157) - - - (fp_text reference "D64" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 1 "pinky_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 1 "pinky_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 5.470235799999999 -12.887067900000002 157) - - - (fp_text reference "D65" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 "pinky_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 3 "pinky_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 12.894127300000001 -30.376660100000002 157) - - - (fp_text reference "D66" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 4 "pinky_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 4 "pinky_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 20.3180187 -47.8662523 157) - - - (fp_text reference "D67" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 "pinky_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 5 "pinky_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 16.6386087 8.1490308 157) - - - (fp_text reference "D68" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 6 "ring_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 6 "ring_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 24.062500099999998 -9.3405615 157) - - - (fp_text reference "D69" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 8 "ring_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 8 "ring_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 31.4863916 -26.8301537 157) - - - (fp_text reference "D70" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 "ring_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 9 "ring_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 38.910283 -44.3197459 157) - - - (fp_text reference "D71" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 10 "ring_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 10 "ring_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 35.6216041 10.7750324 157) - - - (fp_text reference "D72" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 11 "middle_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 11 "middle_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 43.0454956 -6.714559800000001 157) - - - (fp_text reference "D73" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 13 "middle_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 13 "middle_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 50.469387000000005 -24.2041521 157) - - - (fp_text reference "D74" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 14 "middle_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 14 "middle_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 57.8932785 -41.6937443 157) - - - (fp_text reference "D75" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 15 "middle_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 15 "middle_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 50.697288300000004 22.6060825 157) - - - (fp_text reference "D76" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 16 "index_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 16 "index_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 58.1211797 5.1164903 157) - - - (fp_text reference "D77" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 18 "index_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 18 "index_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 65.5450712 -12.373101900000002 157) - - - (fp_text reference "D78" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 19 "index_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 19 "index_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 72.9689626 -29.8626941 157) - - - (fp_text reference "D79" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 20 "index_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 20 "index_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 65.38224129999999 35.3576375 157) - - - (fp_text reference "D80" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 21 "inner_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 21 "inner_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 72.80613269999999 17.8680453 157) - - - (fp_text reference "D81" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 23 "inner_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 23 "inner_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 80.23002419999999 0.37845309999999976 157) - - - (fp_text reference "D82" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 24 "inner_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 24 "inner_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 87.65391559999999 -17.111139100000003 157) - - - (fp_text reference "D83" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 25 "inner_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 25 "inner_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 86.3188924 33.3811149 157) - - - (fp_text reference "D84" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 26 "thumb_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 26 "thumb_bottom")) - ) - - - - - (module E73:SW_TACT_ALPS_SKQGABE010 (layer F.Cu) (tstamp 5BF2CC94) - - (descr "Low-profile SMD Tactile Switch, https://www.e-switch.com/product-catalog/tact/product-lines/tl3342-series-low-profile-smt-tact-switch") - (tags "SPST Tactile Switch") - - (at 109.272548 30.7551132 90) - - (fp_text reference "B1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 2.75 1.25) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.75 -1.25) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.75 -1.25) (end 2.75 1.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 2.75) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -2.75) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.75 1.25) (end -1.25 2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.75 -1.25) (end -1.25 -2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer F.SilkS) (width 0.15)) - - - (pad 1 smd rect (at -3.1 -1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 59 "RST")) - (pad 1 smd rect (at 3.1 -1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 59 "RST")) - (pad 2 smd rect (at -3.1 1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 60 "GND")) - (pad 2 smd rect (at 3.1 1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 60 "GND")) - ) - - - - - (module ProMicro (layer F.Cu) (tedit 5B307E4C) - (at 109.272548 34.7551132 270) - - - (fp_text reference "MCU1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -19.304 -3.81) (end -14.224 -3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) - - - (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) - - - - (fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.24 6.35) (end -15.24 8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.7 6.35) (end -12.7 8.89) (layer F.SilkS) (width 0.15)) - - - (fp_text user RAW (at -13.97 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -11.43 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user RST (at -8.89 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user VCC (at -6.35 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P21 (at -3.81 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P20 (at -1.27 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P19 (at 1.27 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P18 (at 3.81 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P15 (at 6.35 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P14 (at 8.89 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P16 (at 11.43 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P10 (at 13.97 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - - (fp_text user P01 (at -13.97 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P00 (at -11.43 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -8.89 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -6.35 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P02 (at -3.81 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P03 (at -1.27 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P04 (at 1.27 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P05 (at 3.81 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P06 (at 6.35 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P07 (at 8.89 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P08 (at 11.43 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P09 (at 13.97 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - - - (pad 1 thru_hole rect (at -13.97 7.62 270) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 61 "RAW")) - (pad 2 thru_hole circle (at -11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 60 "GND")) - (pad 3 thru_hole circle (at -8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 59 "RST")) - (pad 4 thru_hole circle (at -6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 62 "VCC")) - (pad 5 thru_hole circle (at -3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 2 "P21")) - (pad 6 thru_hole circle (at -1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 7 "P20")) - (pad 7 thru_hole circle (at 1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 12 "P19")) - (pad 8 thru_hole circle (at 3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 17 "P18")) - (pad 9 thru_hole circle (at 6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 22 "P15")) - (pad 10 thru_hole circle (at 8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 27 "P14")) - (pad 11 thru_hole circle (at 11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 55 "P16")) - (pad 12 thru_hole circle (at 13.97 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 56 "P10")) - - (pad 13 thru_hole circle (at -13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 63 "P1")) - (pad 14 thru_hole circle (at -11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 64 "P0")) - (pad 15 thru_hole circle (at -8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 60 "GND")) - (pad 16 thru_hole circle (at -6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 60 "GND")) - (pad 17 thru_hole circle (at -3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 29 "P2")) - (pad 18 thru_hole circle (at -1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 34 "P3")) - (pad 19 thru_hole circle (at 1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 39 "P4")) - (pad 20 thru_hole circle (at 3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 44 "P5")) - (pad 21 thru_hole circle (at 6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 49 "P6")) - (pad 22 thru_hole circle (at 8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 54 "P7")) - (pad 23 thru_hole circle (at 11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 58 "P8")) - (pad 24 thru_hole circle (at 13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 57 "P9")) - ) - - (gr_line (start 115.825165 -27.0114006) (end 102.719931 -27.0114006) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 102.719931 -27.0114006) (end 72.9592939 -51.5940058) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 72.9592939 -51.5940058) (end 54.5491969 -59.4086284) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 54.5491969 -59.4086284) (end 16.9739371 -65.58113639999999) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 16.9739371 -65.58113639999999) (end -13.1123598 5.2977372) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start -13.1123598 5.2977372) (end 5.2977372 13.1123598) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 5.2977372 13.1123598) (end 54.223537099999994 36.0528504) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 54.223537099999994 36.0528504) (end 72.6336341 43.867473000000004) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 72.6336341 43.867473000000004) (end 145.9114619 43.867473000000004) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 145.9114619 43.867473000000004) (end 164.3215589 36.0528504) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 164.3215589 36.0528504) (end 213.2473588 13.1123598) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 213.2473588 13.1123598) (end 231.6574558 5.2977372) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 231.6574558 5.2977372) (end 201.5711589 -65.58113639999999) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 201.5711589 -65.58113639999999) (end 163.9958991 -59.4086284) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 163.9958991 -59.4086284) (end 145.5858021 -51.5940058) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 145.5858021 -51.5940058) (end 115.825165 -27.0114006) (angle 90) (layer Edge.Cuts) (width 0.15)) - -) - - \ No newline at end of file diff --git a/LICENSE b/license.md similarity index 100% rename from LICENSE rename to license.md diff --git a/package-lock.json b/package-lock.json index 35bdcc7..8ea82ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,164 +1,86 @@ { "name": "ergogen", - "version": "4.0.5", - "lockfileVersion": 3, + "version": "4.0.0", + "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ergogen", - "version": "4.0.5", + "version": "4.0.0", "license": "MIT", "dependencies": { - "fs-extra": "^11.1.0", + "fs-extra": "^10.0.1", "js-yaml": "^3.14.1", "jszip": "^3.10.1", "kle-serial": "github:ergogen/kle-serial#ergogen", "makerjs": "github:ergogen/maker.js#ergogen", - "mathjs": "^11.5.0", - "yargs": "^17.6.2" + "mathjs": "^10.1.1", + "yargs": "^17.3.1" }, "bin": { "ergogen": "src/cli.js" }, "devDependencies": { - "@rollup/plugin-commonjs": "^24.0.1", - "@rollup/plugin-json": "^6.0.0", - "chai": "^4.3.7", + "@rollup/plugin-commonjs": "^21.0.2", + "@rollup/plugin-json": "^4.1.0", + "chai": "^4.3.6", "chai-as-promised": "^7.1.1", "dir-compare": "^4.0.0", - "glob": "^8.1.0", - "mocha": "^10.2.0", + "glob": "^7.2.0", + "mocha": "^9.2.1", "nyc": "^15.1.0", - "rollup": "^3.10.1", - "sinon": "^15.0.1" + "rollup": "^2.68.0" } }, "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "version": "2.1.2", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.16.7", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { - "version": "7.20.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", - "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", + "version": "7.17.7", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", - "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "version": "7.17.9", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helpers": "^7.20.7", - "@babel/parser": "^7.20.7", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.12", - "@babel/types": "^7.20.7", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", + "json5": "^2.2.1", "semver": "^6.3.0" }, "engines": { @@ -170,44 +92,26 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.17.9", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "version": "7.17.7", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, "engines": { @@ -218,143 +122,126 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "version": "7.16.7", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "7.17.9", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "version": "7.16.7", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "version": "7.16.7", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", - "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "version": "7.17.7", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "version": "7.17.7", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.20.2" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.16.7", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.16.7", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.16.7", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", - "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", + "version": "7.17.9", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.13", - "@babel/types": "^7.20.7" + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.17.9", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, "engines": { @@ -363,9 +250,8 @@ }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -375,9 +261,8 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -389,42 +274,37 @@ }, "node_modules/@babel/highlight/node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -433,10 +313,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "version": "7.17.9", "dev": true, + "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -445,45 +324,42 @@ } }, "node_modules/@babel/runtime": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", - "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "version": "7.17.9", + "license": "MIT", "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.13.4" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.16.7", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", - "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", + "version": "7.17.9", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", - "debug": "^4.3.1", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", "globals": "^11.1.0" }, "engines": { @@ -491,13 +367,11 @@ } }, "node_modules/@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "version": "7.17.0", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -506,14 +380,12 @@ }, "node_modules/@danmarshall/jscad-typings": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", - "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==" + "license": "MIT" }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -527,9 +399,8 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -540,9 +411,8 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -552,9 +422,8 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -567,9 +436,8 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -579,196 +447,119 @@ }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "3.0.5", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true + "version": "1.4.11", + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.4", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, "node_modules/@rollup/plugin-commonjs": { - "version": "24.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.1.tgz", - "integrity": "sha512-15LsiWRZk4eOGqvrJyu3z3DaBu5BhXIMeWnijSRvd8irrrg9SHpQ1pH+BUK4H6Z9wL9yOxZJMTLU+Au86XHxow==", + "version": "21.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@rollup/pluginutils": "^5.0.1", + "@rollup/pluginutils": "^3.1.0", "commondir": "^1.0.1", - "estree-walker": "^2.0.2", - "glob": "^8.0.3", - "is-reference": "1.2.1", - "magic-string": "^0.27.0" + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" }, "engines": { - "node": ">=14.0.0" + "node": ">= 8.0.0" }, "peerDependencies": { - "rollup": "^2.68.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } + "rollup": "^2.38.3" } }, "node_modules/@rollup/plugin-json": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz", - "integrity": "sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==", + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@rollup/pluginutils": "^5.0.1" - }, - "engines": { - "node": ">=14.0.0" + "@rollup/pluginutils": "^3.0.8" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } + "rollup": "^1.20.0 || ^2.0.0" } }, "node_modules/@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "version": "3.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" }, "engines": { - "node": ">=14.0.0" + "node": ">= 8.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } + "rollup": "^1.20.0||^2.0.0" } }, - "node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", - "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-7.0.1.tgz", - "integrity": "sha512-zsAk2Jkiq89mhZovB2LLOdTCxJF4hqqTToGP0ASWlhp4I1hqOjcfmZGafXntCN7MDC6yySH0mFHrYtHceOeLmw==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - } - }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", - "dev": true + "license": "MIT" }, "node_modules/@types/bezier-js": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.6.tgz", - "integrity": "sha512-kXsAlt8e8N6zt9R6LcMYWB1HkBw3q2g+M9BdI/UE+s4agIONuIscQaRCoInH22+Jas3rw8yLUehL2InaZjyNSA==" + "license": "MIT" }, "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true + "version": "0.0.39", + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { "version": "7.10.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.14.tgz", - "integrity": "sha512-29GS75BE8asnTno3yB6ubOJOO0FboExEqNJy4bpz0GSmW/8wPTNL4h9h63c6s1uTrOopCmJYe/4yJLh5r92ZUA==" + "license": "MIT" }, "node_modules/@types/opentype.js": { "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", - "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==" + "license": "MIT" }, "node_modules/@types/pdfkit": { "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", - "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "dev": true, + "license": "ISC" + }, "node_modules/aggregate-error": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -779,25 +570,22 @@ }, "node_modules/ansi-colors": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -809,10 +597,9 @@ } }, "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "version": "3.1.2", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -823,9 +610,8 @@ }, "node_modules/append-transform": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", "dev": true, + "license": "MIT", "dependencies": { "default-require-extensions": "^3.0.0" }, @@ -835,52 +621,45 @@ }, "node_modules/archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/argparse": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/assertion-error": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bezier-js": { "version": "2.6.1", - "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.6.1.tgz", - "integrity": "sha512-jelZM33eNzcZ9snJ/5HqJLw3IzXvA8RFcBjkdOB8SDYyOvW8Y2tTosojAiBTnD1MhbHoWUYNbxUXxBl61TxbRg==" + "license": "MIT" }, "node_modules/binary-extensions": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -888,9 +667,8 @@ }, "node_modules/braces": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -900,14 +678,11 @@ }, "node_modules/browser-stdout": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.20.2", "dev": true, "funding": [ { @@ -919,11 +694,13 @@ "url": "https://tidelift.com/funding/github/npm/browserslist" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" @@ -934,9 +711,8 @@ }, "node_modules/caching-transform": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "dev": true, + "license": "MIT", "dependencies": { "hasha": "^5.0.0", "make-dir": "^3.0.0", @@ -949,17 +725,14 @@ }, "node_modules/camelcase": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001447", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001447.tgz", - "integrity": "sha512-bdKU1BQDPeEXe9A39xJnGtY0uRq/z5osrnXUw0TcK+EYno45Y+U7QU9HhHEyzvMDffpYadFXi3idnSNkcwLkTw==", + "version": "1.0.30001332", "dev": true, "funding": [ { @@ -970,17 +743,17 @@ "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "version": "4.3.6", "dev": true, + "license": "MIT", "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", - "deep-eql": "^4.1.2", + "deep-eql": "^3.0.1", "get-func-name": "^2.0.0", "loupe": "^2.3.1", "pathval": "^1.1.1", @@ -992,9 +765,8 @@ }, "node_modules/chai-as-promised": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", "dev": true, + "license": "WTFPL", "dependencies": { "check-error": "^1.0.2" }, @@ -1004,9 +776,8 @@ }, "node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1020,9 +791,8 @@ }, "node_modules/chalk/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -1032,17 +802,14 @@ }, "node_modules/check-error": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/chokidar": { "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "funding": [ { @@ -1050,6 +817,7 @@ "url": "https://paulmillr.com/funding/" } ], + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -1068,38 +836,31 @@ }, "node_modules/clean-stack": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "version": "7.0.4", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", + "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" } }, "node_modules/clone": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1109,19 +870,16 @@ }, "node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "license": "MIT" }, "node_modules/commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/complex.js": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz", - "integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==", + "license": "MIT", "engines": { "node": "*" }, @@ -1132,26 +890,25 @@ }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "version": "1.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.1" + } }, "node_modules/core-util-is": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1162,10 +919,9 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.3", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -1180,105 +936,89 @@ }, "node_modules/debug/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + "version": "10.3.1", + "license": "MIT" }, "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "version": "3.0.1", "dev": true, + "license": "MIT", "dependencies": { "type-detect": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=0.12" } }, "node_modules/default-require-extensions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", - "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { "strip-bom": "^4.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/diff": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/dir-compare": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.0.0.tgz", - "integrity": "sha512-wC7thVKL3V656tO61rbEDE4LTeeYrUC2pAUL00AaXYghBhjjVNRyBlpH6POzb44ZuK23OSrqF6TbSC/QYeqfAg==", "dev": true, + "license": "MIT", "dependencies": { "minimatch": "^3.0.4", "p-limit": "^3.1.0 " } }, "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true + "version": "1.4.111", + "dev": true, + "license": "ISC" }, "node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "license": "MIT" }, "node_modules/es6-error": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/escalade": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-latex": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz", - "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==" + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -1288,8 +1028,7 @@ }, "node_modules/esprima": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1300,15 +1039,13 @@ }, "node_modules/estree-walker": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fill-range": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1318,9 +1055,8 @@ }, "node_modules/find-cache-dir": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -1335,9 +1071,8 @@ }, "node_modules/find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -1351,18 +1086,16 @@ }, "node_modules/flat": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, "node_modules/foreground-child": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^3.0.2" @@ -1373,8 +1106,7 @@ }, "node_modules/fraction.js": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "license": "MIT", "engines": { "node": "*" }, @@ -1385,8 +1117,6 @@ }, "node_modules/fromentries": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", "dev": true, "funding": [ { @@ -1401,90 +1131,76 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "version": "10.0.1", + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=14.14" + "node": ">=12" } }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "dev": true, + "license": "MIT" }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "version": "2.0.0", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/get-package-type": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.0.0" } }, "node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "version": "7.2.0", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=12" + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -1492,9 +1208,8 @@ }, "node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -1502,60 +1217,53 @@ "node": ">= 6" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/globals": { "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/graceful-fs": { "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "license": "ISC" }, "node_modules/graham_scan": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/graham_scan/-/graham_scan-1.0.4.tgz", - "integrity": "sha512-jL+zq9xTYXxsDIf+qy9aaudRXx/X4sqrOlbFkg1ElqCznhYAQ/wXv8cifgzRvzFopStDeIvny5sIu6jgSjnRww==" + "license": "MIT" + }, + "node_modules/growl": { + "version": "1.10.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.x" + } + }, + "node_modules/has": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } }, "node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/hasha": { "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", "dev": true, + "license": "MIT", "dependencies": { "is-stream": "^2.0.0", "type-fest": "^0.8.0" @@ -1569,47 +1277,41 @@ }, "node_modules/he": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, + "license": "MIT", "bin": { "he": "bin/he" } }, "node_modules/html-escaper": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/immediate": { "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + "license": "MIT" }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1617,14 +1319,12 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "license": "ISC" }, "node_modules/is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -1632,28 +1332,36 @@ "node": ">=8" } }, + "node_modules/is-core-module": { + "version": "2.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -1663,36 +1371,32 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-plain-obj": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-reference": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*" } }, "node_modules/is-stream": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -1702,15 +1406,13 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-unicode-supported": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -1720,38 +1422,33 @@ }, "node_modules/is-windows": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-hook": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "append-transform": "^2.0.0" }, @@ -1761,9 +1458,8 @@ }, "node_modules/istanbul-lib-instrument": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.7.5", "@istanbuljs/schema": "^0.1.2", @@ -1775,17 +1471,17 @@ } }, "node_modules/istanbul-lib-processinfo": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", - "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", + "version": "2.0.2", "dev": true, + "license": "ISC", "dependencies": { "archy": "^1.0.0", - "cross-spawn": "^7.0.3", - "istanbul-lib-coverage": "^3.2.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", "p-map": "^3.0.0", "rimraf": "^3.0.0", - "uuid": "^8.3.2" + "uuid": "^3.3.3" }, "engines": { "node": ">=8" @@ -1793,9 +1489,8 @@ }, "node_modules/istanbul-lib-report": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", @@ -1807,9 +1502,8 @@ }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -1819,9 +1513,8 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -1831,11 +1524,18 @@ "node": ">=10" } }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.4", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -1846,19 +1546,16 @@ }, "node_modules/javascript-natural-sort": { "version": "0.7.1", - "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==" + "license": "MIT" }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -1869,9 +1566,8 @@ }, "node_modules/jsesc": { "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -1880,9 +1576,8 @@ } }, "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "version": "2.2.1", + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -1892,8 +1587,7 @@ }, "node_modules/jsonfile": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -1903,8 +1597,7 @@ }, "node_modules/jszip": { "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", @@ -1912,16 +1605,9 @@ "setimmediate": "^1.0.5" } }, - "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", - "dev": true - }, "node_modules/kdbush": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", - "integrity": "sha512-9KqSdmWCkBIisFIGclT0FRagKhI7IVbMyUjsxCFG0Ly1Dg6whlxJ7b9lrq8ifk3X/fGeJzok1R75LQfZTfA5zQ==" + "license": "ISC" }, "node_modules/kle-serial": { "name": "@ijprest/kle-serial", @@ -1934,17 +1620,15 @@ }, "node_modules/lie": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", "dependencies": { "immediate": "~3.0.5" } }, "node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -1957,21 +1641,13 @@ }, "node_modules/lodash.flattendeep": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", - "dev": true - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -1984,40 +1660,25 @@ } }, "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.4", "dev": true, + "license": "MIT", "dependencies": { "get-func-name": "^2.0.0" } }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, "node_modules/magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "version": "0.25.9", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" + "sourcemap-codec": "^1.4.8" } }, "node_modules/make-dir": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -2045,32 +1706,30 @@ } }, "node_modules/mathjs": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-11.5.0.tgz", - "integrity": "sha512-vJ/+SqWtxjW6/aeDRt8xL3TlOVKqwN15BIyTGVqGbIWuiqgY4SxZ0yLuna82YH9CB757iFP7uJ4m3KvVBX7Qcg==", + "version": "10.4.3", + "license": "Apache-2.0", "dependencies": { - "@babel/runtime": "^7.20.6", - "complex.js": "^2.1.1", - "decimal.js": "^10.4.3", + "@babel/runtime": "^7.17.8", + "complex.js": "^2.1.0", + "decimal.js": "^10.3.1", "escape-latex": "^1.2.0", "fraction.js": "^4.2.0", "javascript-natural-sort": "^0.7.1", "seedrandom": "^3.0.5", "tiny-emitter": "^2.1.0", - "typed-function": "^4.1.0" + "typed-function": "^2.1.0" }, "bin": { "mathjs": "bin/cli.js" }, "engines": { - "node": ">= 14" + "node": ">= 12" } }, "node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2079,39 +1738,41 @@ } }, "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "version": "9.2.2", "dev": true, + "license": "MIT", "dependencies": { + "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", "chokidar": "3.5.3", - "debug": "4.3.4", + "debug": "4.3.3", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.2.0", + "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "5.0.1", + "minimatch": "4.2.1", "ms": "2.1.3", - "nanoid": "3.3.3", + "nanoid": "3.3.1", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "workerpool": "6.2.1", + "which": "2.0.2", + "workerpool": "6.2.0", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "bin": { "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" + "mocha": "bin/mocha" }, "engines": { - "node": ">= 14.0.0" + "node": ">= 12.0.0" }, "funding": { "type": "opencollective", @@ -2120,58 +1781,13 @@ }, "node_modules/mocha/node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/mocha/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } + "license": "Python-2.0" }, "node_modules/mocha/node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -2180,31 +1796,20 @@ } }, "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "4.2.1", "dev": true, + "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^1.1.7" }, "engines": { "node": ">=10" } }, - "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/mocha/node_modules/yargs": { "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -2220,15 +1825,13 @@ }, "node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "version": "3.3.1", "dev": true, + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -2236,24 +1839,10 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/nise": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", - "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "^10.0.2", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" - } - }, "node_modules/node-preload": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", "dev": true, + "license": "MIT", "dependencies": { "process-on-spawn": "^1.0.0" }, @@ -2262,25 +1851,22 @@ } }, "node_modules/node-releases": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", - "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", - "dev": true + "version": "2.0.3", + "dev": true, + "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/nyc": { "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", @@ -2319,9 +1905,8 @@ }, "node_modules/nyc/node_modules/cliui": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -2330,9 +1915,8 @@ }, "node_modules/nyc/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -2341,31 +1925,10 @@ "node": ">=8" } }, - "node_modules/nyc/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/nyc/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -2375,9 +1938,8 @@ }, "node_modules/nyc/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -2390,9 +1952,8 @@ }, "node_modules/nyc/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -2402,9 +1963,8 @@ }, "node_modules/nyc/node_modules/wrap-ansi": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -2416,15 +1976,13 @@ }, "node_modules/nyc/node_modules/y18n": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/nyc/node_modules/yargs": { "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -2444,9 +2002,8 @@ }, "node_modules/nyc/node_modules/yargs-parser": { "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -2457,18 +2014,16 @@ }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -2481,9 +2036,8 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -2496,9 +2050,8 @@ }, "node_modules/p-map": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -2508,18 +2061,16 @@ }, "node_modules/p-try": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/package-hash": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", "dev": true, + "license": "ISC", "dependencies": { "graceful-fs": "^4.1.15", "hasha": "^5.0.0", @@ -2532,71 +2083,54 @@ }, "node_modules/pako": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + "license": "(MIT AND Zlib)" }, "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "node_modules/path-parse": { + "version": "1.0.7", "dev": true, - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/path-to-regexp/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true + "license": "MIT" }, "node_modules/pathval": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/picocolors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -2606,9 +2140,8 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -2618,9 +2151,8 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -2631,9 +2163,8 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -2643,9 +2174,8 @@ }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -2658,9 +2188,8 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -2670,14 +2199,12 @@ }, "node_modules/process-nextick-args": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "license": "MIT" }, "node_modules/process-on-spawn": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", "dev": true, + "license": "MIT", "dependencies": { "fromentries": "^1.2.0" }, @@ -2687,17 +2214,15 @@ }, "node_modules/randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/readable-stream": { "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -2710,9 +2235,8 @@ }, "node_modules/readdirp": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -2721,15 +2245,13 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "version": "0.13.9", + "license": "MIT" }, "node_modules/release-zalgo": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", "dev": true, + "license": "ISC", "dependencies": { "es6-error": "^4.0.1" }, @@ -2739,32 +2261,44 @@ }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/require-main-filename": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/resolve": { + "version": "1.22.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -2775,37 +2309,15 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/rollup": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.10.1.tgz", - "integrity": "sha512-3Er+yel3bZbZX1g2kjVM+FW+RUWDxbG87fcqFM5/9HbPCTpbVp6JOLn7jlxnNlbu7s/N/uDA4EV/91E2gWnxzw==", + "version": "2.70.2", "dev": true, + "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" + "node": ">=10.0.0" }, "optionalDependencies": { "fsevents": "~2.3.2" @@ -2813,48 +2325,41 @@ }, "node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "license": "MIT" }, "node_modules/seedrandom": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", - "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" + "license": "MIT" }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "6.3.0", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/serialize-javascript": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/setimmediate": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "license": "MIT" }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -2864,63 +2369,34 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sinon": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.0.1.tgz", - "integrity": "sha512-PZXKc08f/wcA/BMRGBze2Wmw50CWPiAH3E21EOi4B49vJ616vW4DQh4fQrqsYox2aNR/N3kCqLuB0PwwOucQrg==", "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "10.0.2", - "@sinonjs/samsam": "^7.0.1", - "diff": "^5.0.0", - "nise": "^5.1.2", - "supports-color": "^7.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" - } - }, - "node_modules/sinon/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "ISC" }, "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.5.7", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "dev": true, + "license": "MIT" + }, "node_modules/spawn-wrap": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^2.0.0", "is-windows": "^1.0.2", @@ -2935,21 +2411,18 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "license": "BSD-3-Clause" }, "node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2961,8 +2434,7 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2972,18 +2444,16 @@ }, "node_modules/strip-bom": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -2993,9 +2463,8 @@ }, "node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3006,11 +2475,21 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/test-exclude": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -3020,45 +2499,22 @@ "node": ">=8" } }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/tiny-emitter": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + "license": "MIT" }, "node_modules/to-fast-properties": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -3068,92 +2524,57 @@ }, "node_modules/type-detect": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/type-fest": { "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/typed-function": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-4.1.0.tgz", - "integrity": "sha512-DGwUl6cioBW5gw2L+6SMupGwH/kZOqivy17E4nsh1JI9fKF87orMmlQx3KISQPmg3sfnOUGlwVkroosvgddrlg==", + "version": "2.1.0", "engines": { - "node": ">= 14" + "node": ">= 10" } }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, + "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/universalify": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "license": "MIT", "engines": { "node": ">= 10.0.0" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "license": "MIT" }, "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "version": "3.4.0", "dev": true, + "license": "MIT", "bin": { - "uuid": "dist/bin/uuid" + "uuid": "bin/uuid" } }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -3166,20 +2587,17 @@ }, "node_modules/which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true + "version": "6.2.0", + "dev": true, + "license": "Apache-2.0" }, "node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -3194,15 +2612,13 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/write-file-atomic": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -3212,30 +2628,22 @@ }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", "engines": { "node": ">=10" } }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, "node_modules/yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "version": "17.4.1", + "license": "MIT", "dependencies": { - "cliui": "^8.0.1", + "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "yargs-parser": "^21.0.0" }, "engines": { "node": ">=12" @@ -3243,18 +2651,16 @@ }, "node_modules/yargs-parser": { "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yargs-unparser": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, + "license": "MIT", "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -3267,9 +2673,8 @@ }, "node_modules/yargs-unparser/node_modules/camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -3279,9 +2684,8 @@ }, "node_modules/yargs-unparser/node_modules/decamelize": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -3290,18 +2694,16 @@ } }, "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "version": "21.0.1", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -3309,5 +2711,1701 @@ "url": "https://github.com/sponsors/sindresorhus" } } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.1.2", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.0" + } + }, + "@babel/code-frame": { + "version": "7.16.7", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.7", + "dev": true + }, + "@babel/core": { + "version": "7.17.9", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.17.9", + "dev": true, + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.17.7", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.17.9", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.17.7", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.17.7", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "dev": true + }, + "@babel/helpers": { + "version": "7.17.9", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + } + }, + "@babel/highlight": { + "version": "7.17.9", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.17.9", + "dev": true + }, + "@babel/runtime": { + "version": "7.17.9", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.7", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.17.9", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.17.0", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@danmarshall/jscad-typings": { + "version": "1.0.0" + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "dev": true + }, + "@jridgewell/resolve-uri": { + "version": "3.0.5", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.4", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@rollup/plugin-commonjs": { + "version": "21.1.0", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + } + }, + "@rollup/plugin-json": { + "version": "4.1.0", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "dev": true + } + } + }, + "@types/bezier-js": { + "version": "0.0.6" + }, + "@types/estree": { + "version": "0.0.39", + "dev": true + }, + "@types/node": { + "version": "7.10.14" + }, + "@types/opentype.js": { + "version": "0.7.2" + }, + "@types/pdfkit": { + "version": "0.7.36", + "requires": { + "@types/node": "*" + } + }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "dev": true + }, + "aggregate-error": { + "version": "3.1.0", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ansi-colors": { + "version": "4.1.1", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1" + }, + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "append-transform": { + "version": "2.0.0", + "dev": true, + "requires": { + "default-require-extensions": "^3.0.0" + } + }, + "archy": { + "version": "1.0.0", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "assertion-error": { + "version": "1.1.0", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "dev": true + }, + "bezier-js": { + "version": "2.6.1" + }, + "binary-extensions": { + "version": "2.2.0", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "dev": true + }, + "browserslist": { + "version": "4.20.2", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + } + }, + "caching-transform": { + "version": "4.0.0", + "dev": true, + "requires": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + } + }, + "camelcase": { + "version": "5.3.1", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001332", + "dev": true + }, + "chai": { + "version": "4.3.6", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chai-as-promised": { + "version": "7.1.1", + "dev": true, + "requires": { + "check-error": "^1.0.2" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "check-error": { + "version": "1.0.2", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4" + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "commondir": { + "version": "1.0.1", + "dev": true + }, + "complex.js": { + "version": "2.1.1" + }, + "concat-map": { + "version": "0.0.1", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "core-util-is": { + "version": "1.0.3" + }, + "cross-spawn": { + "version": "7.0.3", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.3", + "dev": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "dev": true + } + } + }, + "decamelize": { + "version": "1.2.0", + "dev": true + }, + "decimal.js": { + "version": "10.3.1" + }, + "deep-eql": { + "version": "3.0.1", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "default-require-extensions": { + "version": "3.0.0", + "dev": true, + "requires": { + "strip-bom": "^4.0.0" + } + }, + "diff": { + "version": "5.0.0", + "dev": true + }, + "dir-compare": { + "version": "4.0.0", + "dev": true, + "requires": { + "minimatch": "^3.0.4", + "p-limit": "^3.1.0 " + } + }, + "electron-to-chromium": { + "version": "1.4.111", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0" + }, + "es6-error": { + "version": "4.1.1", + "dev": true + }, + "escalade": { + "version": "3.1.1" + }, + "escape-latex": { + "version": "1.2.0" + }, + "escape-string-regexp": { + "version": "4.0.0", + "dev": true + }, + "esprima": { + "version": "4.0.1" + }, + "estree-walker": { + "version": "2.0.2", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-cache-dir": { + "version": "3.3.2", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "5.0.0", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "dev": true + }, + "foreground-child": { + "version": "2.0.0", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + } + }, + "fraction.js": { + "version": "4.2.0" + }, + "fromentries": { + "version": "1.3.2", + "dev": true + }, + "fs-extra": { + "version": "10.0.1", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5" + }, + "get-func-name": { + "version": "2.0.0", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "dev": true + }, + "glob": { + "version": "7.2.0", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "11.12.0", + "dev": true + }, + "graceful-fs": { + "version": "4.2.10" + }, + "graham_scan": { + "version": "1.0.4" + }, + "growl": { + "version": "1.10.5", + "dev": true + }, + "has": { + "version": "1.0.3", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "hasha": { + "version": "5.2.2", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + } + }, + "he": { + "version": "1.2.0", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "dev": true + }, + "immediate": { + "version": "3.0.6" + }, + "imurmurhash": { + "version": "0.1.4", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4" + }, + "is-binary-path": { + "version": "2.1.0", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.8.1", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0" + }, + "is-glob": { + "version": "4.0.3", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "is-stream": { + "version": "2.0.1", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "dev": true + }, + "isarray": { + "version": "1.0.0" + }, + "isexe": { + "version": "2.0.0", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "dev": true + }, + "istanbul-lib-hook": { + "version": "3.0.0", + "dev": true, + "requires": { + "append-transform": "^2.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "istanbul-lib-processinfo": { + "version": "2.0.2", + "dev": true, + "requires": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.1.4", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "javascript-natural-sort": { + "version": "0.7.1" + }, + "js-tokens": { + "version": "4.0.0", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "dev": true + }, + "json5": { + "version": "2.2.1" + }, + "jsonfile": { + "version": "6.1.0", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jszip": { + "version": "3.10.1", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "kdbush": { + "version": "2.0.1" + }, + "kle-serial": { + "version": "git+ssh://git@github.com/ergogen/kle-serial.git#61f29f317d87bbfed0b0b7e646e1b91d4384ac02", + "from": "kle-serial@github:ergogen/kle-serial#ergogen", + "requires": { + "json5": "^2.1.0" + } + }, + "lie": { + "version": "3.3.0", + "requires": { + "immediate": "~3.0.5" + } + }, + "locate-path": { + "version": "6.0.0", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash.flattendeep": { + "version": "4.4.0", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "loupe": { + "version": "2.3.4", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, + "magic-string": { + "version": "0.25.9", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "3.1.0", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "makerjs": { + "version": "git+ssh://git@github.com/ergogen/maker.js.git#a0ca32948845efe8ad5c9ca454f1285926853138", + "from": "makerjs@github:ergogen/maker.js#ergogen", + "requires": { + "@danmarshall/jscad-typings": "^1.0.0", + "@types/bezier-js": "^0.0.6", + "@types/node": "^7.0.5", + "@types/opentype.js": "^0.7.0", + "@types/pdfkit": "^0.7.34", + "bezier-js": "^2.1.0", + "clone": "^1.0.2", + "graham_scan": "^1.0.4", + "kdbush": "^2.0.1" + } + }, + "mathjs": { + "version": "10.4.3", + "requires": { + "@babel/runtime": "^7.17.8", + "complex.js": "^2.1.0", + "decimal.js": "^10.3.1", + "escape-latex": "^1.2.0", + "fraction.js": "^4.2.0", + "javascript-natural-sort": "^0.7.1", + "seedrandom": "^3.0.5", + "tiny-emitter": "^2.1.0", + "typed-function": "^2.1.0" + } + }, + "minimatch": { + "version": "3.1.2", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mocha": { + "version": "9.2.2", + "dev": true, + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.3", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "4.2.1", + "ms": "2.1.3", + "nanoid": "3.3.1", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.2.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "minimatch": { + "version": "4.2.1", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "yargs": { + "version": "16.2.0", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + } + } + }, + "ms": { + "version": "2.1.3", + "dev": true + }, + "nanoid": { + "version": "3.3.1", + "dev": true + }, + "node-preload": { + "version": "0.2.1", + "dev": true, + "requires": { + "process-on-spawn": "^1.0.0" + } + }, + "node-releases": { + "version": "2.0.3", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "dev": true + }, + "nyc": { + "version": "15.1.0", + "dev": true, + "requires": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "dependencies": { + "cliui": { + "version": "6.0.0", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "once": { + "version": "1.4.0", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "3.1.0", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-map": { + "version": "3.0.0", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "package-hash": { + "version": "4.0.0", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, + "pako": { + "version": "1.0.11" + }, + "path-exists": { + "version": "4.0.0", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "process-nextick-args": { + "version": "2.0.1" + }, + "process-on-spawn": { + "version": "1.0.0", + "dev": true, + "requires": { + "fromentries": "^1.2.0" + } + }, + "randombytes": { + "version": "2.1.0", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regenerator-runtime": { + "version": "0.13.9" + }, + "release-zalgo": { + "version": "1.0.0", + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } + }, + "require-directory": { + "version": "2.1.1" + }, + "require-main-filename": { + "version": "2.0.0", + "dev": true + }, + "resolve": { + "version": "1.22.0", + "dev": true, + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.70.2", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "safe-buffer": { + "version": "5.1.2" + }, + "seedrandom": { + "version": "3.0.5" + }, + "semver": { + "version": "6.3.0", + "dev": true + }, + "serialize-javascript": { + "version": "6.0.0", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "dev": true + }, + "setimmediate": { + "version": "1.0.5" + }, + "shebang-command": { + "version": "2.0.0", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "dev": true + }, + "spawn-wrap": { + "version": "2.0.0", + "dev": true, + "requires": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + } + }, + "sprintf-js": { + "version": "1.0.3" + }, + "string_decoder": { + "version": "1.1.1", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "string-width": { + "version": "4.2.3", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "4.0.0", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true + }, + "test-exclude": { + "version": "6.0.0", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "tiny-emitter": { + "version": "2.1.0" + }, + "to-fast-properties": { + "version": "2.0.0", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "type-detect": { + "version": "4.0.8", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "dev": true + }, + "typed-function": { + "version": "2.1.0" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "universalify": { + "version": "2.0.0" + }, + "util-deprecate": { + "version": "1.0.2" + }, + "uuid": { + "version": "3.4.0", + "dev": true + }, + "which": { + "version": "2.0.2", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "dev": true + }, + "workerpool": { + "version": "6.2.0", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "y18n": { + "version": "5.0.8" + }, + "yargs": { + "version": "17.4.1", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "dependencies": { + "yargs-parser": { + "version": "21.0.1" + } + } + }, + "yargs-parser": { + "version": "20.2.4", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "dependencies": { + "camelcase": { + "version": "6.3.0", + "dev": true + }, + "decamelize": { + "version": "4.0.0", + "dev": true + } + } + }, + "yocto-queue": { + "version": "0.1.0", + "dev": true + } } } diff --git a/package.json b/package.json index 8cd2a34..8c71779 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ergogen", - "version": "4.0.5", + "version": "4.0.0", "description": "Ergonomic keyboard layout generator", "author": "Bán Dénes ", "license": "MIT", @@ -15,25 +15,24 @@ "coverage": "nyc --reporter=html --reporter=text npm test" }, "dependencies": { - "fs-extra": "^11.1.0", + "fs-extra": "^10.0.1", "js-yaml": "^3.14.1", "jszip": "^3.10.1", "kle-serial": "github:ergogen/kle-serial#ergogen", "makerjs": "github:ergogen/maker.js#ergogen", - "mathjs": "^11.5.0", - "yargs": "^17.6.2" + "mathjs": "^10.1.1", + "yargs": "^17.3.1" }, "devDependencies": { - "@rollup/plugin-commonjs": "^24.0.1", - "@rollup/plugin-json": "^6.0.0", - "chai": "^4.3.7", + "@rollup/plugin-commonjs": "^21.0.2", + "@rollup/plugin-json": "^4.1.0", + "chai": "^4.3.6", "chai-as-promised": "^7.1.1", "dir-compare": "^4.0.0", - "glob": "^8.1.0", - "mocha": "^10.2.0", + "glob": "^7.2.0", + "mocha": "^9.2.1", "nyc": "^15.1.0", - "rollup": "^3.10.1", - "sinon": "^15.0.1" + "rollup": "^2.68.0" }, "nyc": { "all": true, diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..8151102 --- /dev/null +++ b/readme.md @@ -0,0 +1,22 @@ +# Ergogen + +Ergogen is a keyboard generator that aims to provide a common configuration format to describe **ergonomic** 2D layouts, and generate automatic plates, cases, and (un-routed) PCBs for them. +The project grew out of (and is an integral part of) the [Absolem keyboard](https://zealot.hu/absolem), and shares its [Discord server](https://discord.gg/nbKcAZB) as well. + +## Getting started + +Until there's a proper "Getting started" guide, try getting acquainted with ergogen by following these steps in order: + +1. Read the [docs](https://docs.ergogen.xyz). D'uuh. They're not complete by any measure, but should give you a fairly good idea what you're dealing with here. + +1. Try one of the web-based deployments ([official](https://ergogen.xyz); [unofficial](https://ergogen.cache.works/) but probably better and soon to be official) - no need to download the CLI unless you want to A) preview in-development features, B) use custom modifications, or C) contribute code. Click things, look at outputs; see if things start to make sense. + +1. Search the [`#ergogen`](https://github.com/topics/ergogen) topic on GitHub to look at (and reverse engineer) a variety of real life configs using ergogen. Pop them into the web UI, see what they do, tinker with them; things should start to make more and more sense. + +1. If a question persists after all of the above, feel free to ask it over on [Discord](https://discord.gg/nbKcAZB) and we'll do our best to help you out. + + +## Contributions + +Feature ideas, documentation improvements, examples, tests, or pull requests welcome! +Get in touch [on Discord](https://discord.gg/nbKcAZB), and we can definitely find something you can help with, if you'd like to. diff --git a/roadmap.md b/roadmap.md index aa1c837..3629cf0 100644 --- a/roadmap.md +++ b/roadmap.md @@ -14,10 +14,6 @@ ### Minor -- Support "direct" anchors, as in, recognize num arrays and parse them as x/y/r -- Add `origin` to zone-wide and global rotation in points -- Handle unnecessary (but seemingly consistent, so easy to confuse) `key` subfield of row-level overrides -- Allow footprints to access raw array/object fields from points with templating - Include raw kicad footprint integrations - pull torik's script to be able to convert raw kicad footprints into positionable ergogen ones - have a `dummy` footprint which can just be updated from schematic diff --git a/rollup.config.mjs b/rollup.config.js similarity index 90% rename from rollup.config.mjs rename to rollup.config.js index 002aff5..95bc171 100644 --- a/rollup.config.mjs +++ b/rollup.config.js @@ -1,4 +1,4 @@ -import pkg from './package.json' assert { type: 'json' } +import pkg from './package.json' import json from '@rollup/plugin-json' import commonjs from '@rollup/plugin-commonjs' diff --git a/showcase.png b/showcase.png deleted file mode 100644 index f3b928f..0000000 Binary files a/showcase.png and /dev/null differ diff --git a/src/anchor.js b/src/anchor.js index 3d892ee..e00c612 100644 --- a/src/anchor.js +++ b/src/anchor.js @@ -1,7 +1,6 @@ const u = require('./utils') const a = require('./assert') const Point = require('./point') -const m = require('makerjs') const mirror_ref = exports.mirror = (ref, mirror=true) => { if (mirror) { @@ -18,52 +17,15 @@ const aggregator_common = ['parts', 'method'] const aggregators = { average: (config, name, parts) => { a.unexpected(config, name, aggregator_common) - const len = parts.length - if (len == 0) { - return new Point() - } let x = 0, y = 0, r = 0 + const len = parts.length for (const part of parts) { x += part.x y += part.y r += part.r } return new Point(x / len, y / len, r / len) - }, - intersect: (config, name, parts) => { - // a line is generated from a point by taking their - // (rotated) Y axis. The line is not extended to - // +/- Infinity as that doesn't work with makerjs. - // An arbitrary offset of 1 meter is considered - // sufficient for practical purposes, and the point - // coordinates are used as pivot point for the rotation. - const get_line_from_point = (point, offset=1000) => { - const origin = [point.x, point.y] - const p1 = [point.x, point.y - offset] - const p2 = [point.x, point.y + offset] - - let line = new m.paths.Line(p1, p2) - line = m.path.rotate(line, point.r, origin) - - return line - } - - a.unexpected(config, name, aggregator_common) - a.assert(parts.length==2, `Intersect expects exactly two parts, but it got ${parts.length}!`) - - const line1 = get_line_from_point(parts[0]) - const line2 = get_line_from_point(parts[1]) - const intersection = m.path.intersection(line1, line2) - - a.assert(intersection, `The points under "${name}.parts" do not intersect!`) - - const intersection_point_arr = intersection.intersectionPoints[0] - const intersection_point = new Point( - intersection_point_arr[0], intersection_point_arr[1], 0 - ) - - return intersection_point - }, + } } const anchor = exports.parse = (raw, name, points={}, start=new Point(), mirror=false) => units => { @@ -91,7 +53,7 @@ const anchor = exports.parse = (raw, name, points={}, start=new Point(), mirror= // // Reference or aggregate handling // - + let point = start.clone() if (raw.ref !== undefined && raw.aggregate !== undefined) { throw new Error(`Fields "ref" and "aggregate" cannot appear together in anchor "${name}"!`) diff --git a/src/cases.js b/src/cases.js index 7fabbb1..f6342fc 100644 --- a/src/cases.js +++ b/src/cases.js @@ -69,19 +69,15 @@ exports.parse = (config, outlines, units) => { const extrude = a.sane(part.extrude || 1, `${part_qname}.extrude`, 'number')(units) const outline = outlines[name] a.assert(outline, `Field "${part_qname}.name" does not name a valid outline!`) - // This is a hack to separate multiple calls to the same outline with different extrude values - // I know it needlessly duplicates a lot of code, but it's the quickest fix in the short term - // And on the long run, we'll probably be moving to CADQuery anyway... - const extruded_name = `${name}_extrude_` + ('' + extrude).replace(/\D/g, '_') - if (!scripts[extruded_name]) { - scripts[extruded_name] = m.exporter.toJscadScript(outline, { - functionName: `${extruded_name}_outline_fn`, + if (!scripts[name]) { + scripts[name] = m.exporter.toJscadScript(outline, { + functionName: `${name}_outline_fn`, extrude: extrude, indent: 4 }) } - outline_dependencies.push(extruded_name) - base = `${extruded_name}_outline_fn()` + outline_dependencies.push(name) + base = `${name}_outline_fn()` } else { a.assert(part.extrude === undefined, `Field "${part_qname}.extrude" should not be used when what=case!`) a.in(name, `${part_qname}.name`, Object.keys(cases)) diff --git a/src/cli.js b/src/cli.js index fe0615b..bdaeac0 100755 --- a/src/cli.js +++ b/src/cli.js @@ -132,14 +132,12 @@ try { // output helpers -const yamldump = data => yaml.dump(data, {indent: 4, noRefs: true}) - const single = (data, rel) => { if (!data) return const abs = path.join(args.o, rel) fs.mkdirpSync(path.dirname(abs)) if (abs.endsWith('.yaml')) { - fs.writeFileSync(abs, yamldump(data)) + fs.writeFileSync(abs, yaml.dump(data, {indent: 4})) } else { fs.writeFileSync(abs, data) } @@ -150,7 +148,7 @@ const composite = (data, rel) => { const abs = path.join(args.o, rel) if (data.yaml) { fs.mkdirpSync(path.dirname(abs)) - fs.writeFileSync(abs + '.yaml', yamldump(data.yaml)) + fs.writeFileSync(abs + '.yaml', yaml.dump(data.yaml, {indent: 4})) } for (const format of ['svg', 'dxf', 'jscad']) { if (data[format]) { diff --git a/src/filter.js b/src/filter.js index ca091b6..ca1ef01 100644 --- a/src/filter.js +++ b/src/filter.js @@ -9,8 +9,9 @@ const _false = () => false const _and = arr => p => arr.map(e => e(p)).reduce((a, b) => a && b) const _or = arr => p => arr.map(e => e(p)).reduce((a, b) => a || b) -const similar = (keys, reference, name, units) => { +const similar = (key, reference, name, units) => { let neg = false + if (reference.startsWith('-')) { neg = true reference = reference.slice(1) @@ -19,19 +20,15 @@ const similar = (keys, reference, name, units) => { // support both string or regex as reference let internal_tester = val => (''+val) == reference if (reference.startsWith('/')) { - try { - const regex_parts = reference.split('/') - regex_parts.shift() // remove starting slash - const flags = regex_parts.pop() - const regex = new RegExp(regex_parts.join('/'), flags) - internal_tester = val => regex.test(''+val) - } catch (ex) { - throw new Error(`Invalid regex "${reference}" found at filter "${name}"!`) - } + const regex_parts = reference.split('/') + regex_parts.shift() // remove starting slash + const flags = regex_parts.pop() + const regex = new RegExp(regex_parts.join('/'), flags) + internal_tester = val => regex.test(''+val) } // support strings, arrays, or objects as key - const external_tester = (point, key) => { + const external_tester = point => { const value = u.deep(point, key) if (a.type(value)() == 'array') { return value.some(subkey => internal_tester(subkey)) @@ -42,12 +39,11 @@ const similar = (keys, reference, name, units) => { } } - // consider negation + // negation happens at the end if (neg) { - return point => keys.every(key => !external_tester(point, key)) - } else { - return point => keys.some(key => external_tester(point, key)) + return point => !external_tester(point) } + return external_tester } const comparators = { @@ -79,7 +75,7 @@ const simple = (exp, name, units) => { value = exp } - return point => comparators[op](keys, value, name, units)(point) + return point => keys.some(key => comparators[op](key, value, name, units)(point)) } const complex = (config, name, units, aggregator=_or) => { @@ -113,7 +109,7 @@ const contains_object = (val) => { } exports.parse = (config, name, points={}, units={}, asym='source') => { - + let result = [] // if a filter decl is undefined, it's just the default point at [0, 0] @@ -127,11 +123,7 @@ exports.parse = (config, name, points={}, units={}, asym='source') => { } if (['clone', 'both'].includes(asym)) { // this is strict: if the ref of the anchor doesn't have a mirror pair, it will error out - // also, we check for duplicates as ref-less anchors mirror to themselves - const clone = anchor(config, name, points, undefined, true)(units) - if (result.every(p => !p.equals(clone))) { - result.push(clone) - } + result.push(anchor(config, name, points, undefined, true)(units)) } // otherwise, it is treated as a condition to filter all available points @@ -140,15 +132,9 @@ exports.parse = (config, name, points={}, units={}, asym='source') => { if (['source', 'both'].includes(asym)) { result = result.concat(source) } - if (['clone', 'both'].includes(asym)) { + if (['source', 'both'].includes(asym)) { // this is permissive: we only include mirrored versions if they exist, and don't fuss if they don't - // also, we check for duplicates as clones can potentially refer back to their sources, too - const pool = result.map(p => p.meta.name) - result = result.concat( - source.map(p => points[anchor_lib.mirror(p.meta.name)]) - .filter(p => !!p) - .filter(p => !pool.includes(p.meta.name)) - ) + result = result.concat(source.map(p => points[anchor_lib.mirror(p.meta.name)]).filter(p => !!p)) } } diff --git a/src/footprints/alps.js b/src/footprints/alps.js index e998a99..9ab6218 100644 --- a/src/footprints/alps.js +++ b/src/footprints/alps.js @@ -25,8 +25,8 @@ module.exports = { (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) ${''/* pins */} - (pad 1 thru_hole circle (at 2.5 -4.5) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.from}) - (pad 2 thru_hole circle (at -2.5 -4) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.to}) + (pad 1 thru_hole circle (at 2.5 -4.5) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.from.str}) + (pad 2 thru_hole circle (at -2.5 -4) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.to.str}) ) ` diff --git a/src/footprints/button.js b/src/footprints/button.js index 25fc333..bbf7786 100644 --- a/src/footprints/button.js +++ b/src/footprints/button.js @@ -28,10 +28,10 @@ module.exports = { (fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer ${p.side}.SilkS) (width 0.15)) ${'' /* pins */} - (pad 1 smd rect (at -3.1 -1.85 ${p.r}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from}) - (pad 1 smd rect (at 3.1 -1.85 ${p.r}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from}) - (pad 2 smd rect (at -3.1 1.85 ${p.r}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to}) - (pad 2 smd rect (at 3.1 1.85 ${p.r}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to}) + (pad 1 smd rect (at -3.1 -1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from.str}) + (pad 1 smd rect (at 3.1 -1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from.str}) + (pad 2 smd rect (at -3.1 1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to.str}) + (pad 2 smd rect (at 3.1 1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to.str}) ) ` diff --git a/src/footprints/choc.js b/src/footprints/choc.js index 52484e5..792b1c8 100644 --- a/src/footprints/choc.js +++ b/src/footprints/choc.js @@ -62,14 +62,14 @@ module.exports = { (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) ${'' /* net pads */} - (pad 1 smd rect (at ${def_neg}3.275 -5.95 ${p.r}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from}) - (pad 2 smd rect (at ${def_pos}8.275 -3.75 ${p.r}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to}) + (pad 1 smd rect (at ${def_neg}3.275 -5.95 ${p.rot}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from.str}) + (pad 2 smd rect (at ${def_pos}8.275 -3.75 ${p.rot}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to.str}) ` } else { return ` ${''/* pins */} - (pad 1 thru_hole circle (at ${def_pos}5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.from}) - (pad 2 thru_hole circle (at ${def_pos}0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.to}) + (pad 1 thru_hole circle (at ${def_pos}5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.from.str}) + (pad 2 thru_hole circle (at ${def_pos}0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.to.str}) ` } } diff --git a/src/footprints/chocmini.js b/src/footprints/chocmini.js index 060bc52..b09b865 100644 --- a/src/footprints/chocmini.js +++ b/src/footprints/chocmini.js @@ -69,8 +69,8 @@ module.exports = { function pins(def_neg, def_pos) { return ` ${''/* pins */} - (pad 1 thru_hole circle (at ${def_neg}4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.from} (clearance 0.2)) - (pad 2 thru_hole circle (at ${def_pos}2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.to} (clearance 0.2)) + (pad 1 thru_hole circle (at ${def_neg}4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.from.str} (clearance 0.2)) + (pad 2 thru_hole circle (at ${def_pos}2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.to.str} (clearance 0.2)) ` } if(p.reverse){ diff --git a/src/footprints/diode.js b/src/footprints/diode.js index 16d4288..741b747 100644 --- a/src/footprints/diode.js +++ b/src/footprints/diode.js @@ -32,14 +32,14 @@ module.exports = { (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) ${''/* SMD pads on both sides */} - (pad 1 smd rect (at -1.65 0 ${p.r}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.to}) - (pad 2 smd rect (at 1.65 0 ${p.r}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.from}) - (pad 1 smd rect (at -1.65 0 ${p.r}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.to}) - (pad 2 smd rect (at 1.65 0 ${p.r}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.from}) + (pad 1 smd rect (at -1.65 0 ${p.rot}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.to.str}) + (pad 2 smd rect (at 1.65 0 ${p.rot}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.from.str}) + (pad 1 smd rect (at -1.65 0 ${p.rot}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.to.str}) + (pad 2 smd rect (at 1.65 0 ${p.rot}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.from.str}) ${''/* THT terminals */} - (pad 1 thru_hole rect (at -3.81 0 ${p.r}) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) ${p.to}) - (pad 2 thru_hole circle (at 3.81 0 ${p.r}) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) ${p.from}) + (pad 1 thru_hole rect (at -3.81 0 ${p.rot}) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) ${p.to.str}) + (pad 2 thru_hole circle (at 3.81 0 ${p.rot}) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) ${p.from.str}) ) ` diff --git a/src/footprints/jstph.js b/src/footprints/jstph.js index 7bdac1d..c93bb6a 100644 --- a/src/footprints/jstph.js +++ b/src/footprints/jstph.js @@ -30,8 +30,8 @@ module.exports = { (fp_line (start -1 1.5) (end -1 2.0) (layer ${p.side}.SilkS) (width 0.15)) (fp_line (start -1.25 1.75) (end -0.75 1.75) (layer ${p.side}.SilkS) (width 0.15)) - (pad 1 thru_hole rect (at -1 0 ${p.r}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.pos}) - (pad 2 thru_hole oval (at 1 0 ${p.r}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.neg}) + (pad 1 thru_hole rect (at -1 0 ${p.rot}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.pos.str}) + (pad 2 thru_hole oval (at 1 0 ${p.rot}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.neg.str}) ) diff --git a/src/footprints/jumper.js b/src/footprints/jumper.js index f5203e2..22b7d40 100644 --- a/src/footprints/jumper.js +++ b/src/footprints/jumper.js @@ -14,9 +14,9 @@ module.exports = { (fp_text value Jumper (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) ${'' /* pins */} - (pad 1 smd rect (at -0.50038 0 ${p.r}) (size 0.635 1.143) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - (clearance 0.1905) ${p.from}) - (pad 2 smd rect (at 0.50038 0 ${p.r}) (size 0.635 1.143) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - (clearance 0.1905) ${p.to})) + (pad 1 smd rect (at -0.50038 0 ${p.rot}) (size 0.635 1.143) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + (clearance 0.1905) ${p.from.str}) + (pad 2 smd rect (at 0.50038 0 ${p.rot}) (size 0.635 1.143) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + (clearance 0.1905) ${p.to.str})) ` } \ No newline at end of file diff --git a/src/footprints/mx.js b/src/footprints/mx.js index 458b999..11d8de8 100644 --- a/src/footprints/mx.js +++ b/src/footprints/mx.js @@ -62,14 +62,14 @@ module.exports = { (pad "" np_thru_hole circle (at ${def_neg}3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) ${'' /* net pads */} - (pad 1 smd rect (at ${def_neg}7.085 -2.54 ${p.r}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from}) - (pad 2 smd rect (at ${def_pos}5.842 -5.08 ${p.r}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to}) + (pad 1 smd rect (at ${def_neg}7.085 -2.54 ${p.rot}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from.str}) + (pad 2 smd rect (at ${def_pos}5.842 -5.08 ${p.rot}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to.str}) ` } else { return ` ${''/* pins */} - (pad 1 thru_hole circle (at ${def_pos}2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.from}) - (pad 2 thru_hole circle (at ${def_neg}3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.to}) + (pad 1 thru_hole circle (at ${def_pos}2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.from.str}) + (pad 2 thru_hole circle (at ${def_neg}3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.to.str}) ` } } diff --git a/src/footprints/oled.js b/src/footprints/oled.js index 3addacf..5a8a536 100644 --- a/src/footprints/oled.js +++ b/src/footprints/oled.js @@ -16,14 +16,14 @@ module.exports = { (fp_text value OLED (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) ${'' /* pins */} - (pad 4 thru_hole oval (at 1.6 2.18 ${p.r+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - ${p.SDA}) - (pad 3 thru_hole oval (at 1.6 4.72 ${p.r+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - ${p.SCL}) - (pad 2 thru_hole oval (at 1.6 7.26 ${p.r+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - ${p.VCC}) - (pad 1 thru_hole rect (at 1.6 9.8 ${p.r+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - ${p.GND}) + (pad 4 thru_hole oval (at 1.6 2.18 ${p.rot+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + ${p.SDA.str}) + (pad 3 thru_hole oval (at 1.6 4.72 ${p.rot+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + ${p.SCL.str}) + (pad 2 thru_hole oval (at 1.6 7.26 ${p.rot+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + ${p.VCC.str}) + (pad 1 thru_hole rect (at 1.6 9.8 ${p.rot+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + ${p.GND.str}) ) ` } \ No newline at end of file diff --git a/src/footprints/omron.js b/src/footprints/omron.js index ff95eba..7669c6c 100644 --- a/src/footprints/omron.js +++ b/src/footprints/omron.js @@ -24,10 +24,10 @@ module.exports = { (fp_line (start -6 6) (end -6 -6) (layer Dwgs.User) (width 0.15)) ${'' /* pins */} - (pad 1 np_thru_hole circle (at 6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.from}) - (pad 2 np_thru_hole circle (at -6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.from}) - (pad 3 np_thru_hole circle (at 6.25 2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.to}) - (pad 4 np_thru_hole circle (at -6.25 2.5 ) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.to}) + (pad 1 np_thru_hole circle (at 6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.from.str}) + (pad 2 np_thru_hole circle (at -6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.from.str}) + (pad 3 np_thru_hole circle (at 6.25 2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.to.str}) + (pad 4 np_thru_hole circle (at -6.25 2.5 ) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.to.str}) ) ` diff --git a/src/footprints/pad.js b/src/footprints/pad.js index 34d5cb9..debfe8b 100644 --- a/src/footprints/pad.js +++ b/src/footprints/pad.js @@ -28,9 +28,9 @@ module.exports = { if (align == 'down') y -= p.height / 2 + plus let text = '' if (p.text.length) { - text = `(fp_text user ${p.text} (at ${x} ${y} ${p.r}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror}))` + text = `(fp_text user ${p.text} (at ${x} ${y} ${p.rot}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror}))` } - return `(pad 1 smd rect (at 0 0 ${p.r}) (size ${p.width} ${p.height}) (layers ${side}.Cu ${side}.Paste ${side}.Mask) ${p.net})\n${text}` + return `(pad 1 smd rect (at 0 0 ${p.rot}) (size ${p.width} ${p.height}) (layers ${side}.Cu ${side}.Paste ${side}.Mask) ${p.net.str})\n${text}` } return ` diff --git a/src/footprints/promicro.js b/src/footprints/promicro.js index fc11a5c..6d55c0c 100644 --- a/src/footprints/promicro.js +++ b/src/footprints/promicro.js @@ -60,58 +60,58 @@ module.exports = { (fp_line (start -12.7 ${def_pos}6.35) (end -12.7 ${def_pos}8.89) (layer F.SilkS) (width 0.15)) ${''/* pin names */} - (fp_text user RAW (at -13.97 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -11.43 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user RST (at -8.89 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user VCC (at -6.35 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P21 (at -3.81 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P20 (at -1.27 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P19 (at 1.27 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P18 (at 3.81 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P15 (at 6.35 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P14 (at 8.89 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P16 (at 11.43 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P10 (at 13.97 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user RAW (at -13.97 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -11.43 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user RST (at -8.89 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user VCC (at -6.35 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P21 (at -3.81 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P20 (at -1.27 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P19 (at 1.27 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P18 (at 3.81 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P15 (at 6.35 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P14 (at 8.89 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P16 (at 11.43 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P10 (at 13.97 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P01 (at -13.97 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P00 (at -11.43 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -8.89 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -6.35 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P02 (at -3.81 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P03 (at -1.27 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P04 (at 1.27 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P05 (at 3.81 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P06 (at 6.35 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P07 (at 8.89 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P08 (at 11.43 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P09 (at 13.97 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P01 (at -13.97 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P00 (at -11.43 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -8.89 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -6.35 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P02 (at -3.81 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P03 (at -1.27 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P04 (at 1.27 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P05 (at 3.81 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P06 (at 6.35 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P07 (at 8.89 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P08 (at 11.43 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P09 (at 13.97 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) ${''/* and now the actual pins */} - (pad 1 thru_hole rect (at -13.97 ${def_pos}7.62 ${p.r}) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RAW}) - (pad 2 thru_hole circle (at -11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND}) - (pad 3 thru_hole circle (at -8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RST}) - (pad 4 thru_hole circle (at -6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.VCC}) - (pad 5 thru_hole circle (at -3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P21}) - (pad 6 thru_hole circle (at -1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P20}) - (pad 7 thru_hole circle (at 1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P19}) - (pad 8 thru_hole circle (at 3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P18}) - (pad 9 thru_hole circle (at 6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P15}) - (pad 10 thru_hole circle (at 8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P14}) - (pad 11 thru_hole circle (at 11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P16}) - (pad 12 thru_hole circle (at 13.97 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P10}) + (pad 1 thru_hole rect (at -13.97 ${def_pos}7.62 ${p.rot}) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RAW.str}) + (pad 2 thru_hole circle (at -11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND.str}) + (pad 3 thru_hole circle (at -8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RST.str}) + (pad 4 thru_hole circle (at -6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.VCC.str}) + (pad 5 thru_hole circle (at -3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P21.str}) + (pad 6 thru_hole circle (at -1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P20.str}) + (pad 7 thru_hole circle (at 1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P19.str}) + (pad 8 thru_hole circle (at 3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P18.str}) + (pad 9 thru_hole circle (at 6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P15.str}) + (pad 10 thru_hole circle (at 8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P14.str}) + (pad 11 thru_hole circle (at 11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P16.str}) + (pad 12 thru_hole circle (at 13.97 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P10.str}) - (pad 13 thru_hole circle (at -13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P1}) - (pad 14 thru_hole circle (at -11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P0}) - (pad 15 thru_hole circle (at -8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND}) - (pad 16 thru_hole circle (at -6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND}) - (pad 17 thru_hole circle (at -3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P2}) - (pad 18 thru_hole circle (at -1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P3}) - (pad 19 thru_hole circle (at 1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P4}) - (pad 20 thru_hole circle (at 3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P5}) - (pad 21 thru_hole circle (at 6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P6}) - (pad 22 thru_hole circle (at 8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P7}) - (pad 23 thru_hole circle (at 11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P8}) - (pad 24 thru_hole circle (at 13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P9}) + (pad 13 thru_hole circle (at -13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P1.str}) + (pad 14 thru_hole circle (at -11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P0.str}) + (pad 15 thru_hole circle (at -8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND.str}) + (pad 16 thru_hole circle (at -6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND.str}) + (pad 17 thru_hole circle (at -3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P2.str}) + (pad 18 thru_hole circle (at -1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P3.str}) + (pad 19 thru_hole circle (at 1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P4.str}) + (pad 20 thru_hole circle (at 3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P5.str}) + (pad 21 thru_hole circle (at 6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P6.str}) + (pad 22 thru_hole circle (at 8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P7.str}) + (pad 23 thru_hole circle (at 11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P8.str}) + (pad 24 thru_hole circle (at 13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P9.str}) ` } if(p.orientation == 'down') { diff --git a/src/footprints/rgb.js b/src/footprints/rgb.js index 12e19ff..45be1b0 100644 --- a/src/footprints/rgb.js +++ b/src/footprints/rgb.js @@ -29,15 +29,15 @@ module.exports = { (fp_poly (pts (xy 4 2.2) (xy 4 0.375) (xy 5 1.2875)) (layer ${p.side}.SilkS) (width 0.1)) - (pad 1 smd rect (at -2.2 -0.875 ${p.r}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.VCC}) - (pad 2 smd rect (at -2.2 0.875 ${p.r}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.dout}) - (pad 3 smd rect (at 2.2 0.875 ${p.r}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.GND}) - (pad 4 smd rect (at 2.2 -0.875 ${p.r}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.din}) + (pad 1 smd rect (at -2.2 -0.875 ${p.rot}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.VCC.str}) + (pad 2 smd rect (at -2.2 0.875 ${p.rot}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.dout.str}) + (pad 3 smd rect (at 2.2 0.875 ${p.rot}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.GND.str}) + (pad 4 smd rect (at 2.2 -0.875 ${p.rot}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.din.str}) - (pad 11 smd rect (at -2.5 -1.6 ${p.r}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.VCC}) - (pad 22 smd rect (at -2.5 1.6 ${p.r}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.dout}) - (pad 33 smd rect (at 2.5 1.6 ${p.r}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.GND}) - (pad 44 smd rect (at 2.5 -1.6 ${p.r}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.din}) + (pad 11 smd rect (at -2.5 -1.6 ${p.rot}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.VCC.str}) + (pad 22 smd rect (at -2.5 1.6 ${p.rot}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.dout.str}) + (pad 33 smd rect (at 2.5 1.6 ${p.rot}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.GND.str}) + (pad 44 smd rect (at 2.5 -1.6 ${p.rot}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.din.str}) ) diff --git a/src/footprints/rotary.js b/src/footprints/rotary.js index 771eeea..60092bf 100644 --- a/src/footprints/rotary.js +++ b/src/footprints/rotary.js @@ -56,15 +56,15 @@ module.exports = { (fp_circle (center -0.12 -0.04) (end 2.88 -0.04) (layer F.Fab) (width 0.12)) ${''/* pin names */} - (pad A thru_hole rect (at -7.62 -2.54 ${p.r}) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.A}) - (pad C thru_hole circle (at -7.62 -0.04) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.C}) - (pad B thru_hole circle (at -7.62 2.46) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.B}) - (pad 1 thru_hole circle (at 6.88 -2.54) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.from}) - (pad 2 thru_hole circle (at 6.88 2.46) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.to}) + (pad A thru_hole rect (at -7.62 -2.54 ${p.rot}) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.A.str}) + (pad C thru_hole circle (at -7.62 -0.04) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.C.str}) + (pad B thru_hole circle (at -7.62 2.46) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.B.str}) + (pad 1 thru_hole circle (at 6.88 -2.54) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.from.str}) + (pad 2 thru_hole circle (at 6.88 2.46) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.to.str}) ${''/* Legs */} - (pad "" thru_hole rect (at -0.12 -5.64 ${p.r}) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask)) - (pad "" thru_hole rect (at -0.12 5.56 ${p.r}) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask)) + (pad "" thru_hole rect (at -0.12 -5.64 ${p.rot}) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask)) + (pad "" thru_hole rect (at -0.12 5.56 ${p.rot}) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask)) ) ` } diff --git a/src/footprints/scrollwheel.js b/src/footprints/scrollwheel.js index e7cc2de..3024d29 100644 --- a/src/footprints/scrollwheel.js +++ b/src/footprints/scrollwheel.js @@ -35,8 +35,8 @@ module.exports = { const standard = ` (module RollerEncoder_Panasonic_EVQWGD001 (layer F.Cu) (tedit 6040A10C) ${p.at /* parametric position */} - (fp_text reference REF** (at 0 0 ${p.r}) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - (fp_text value RollerEncoder_Panasonic_EVQWGD001 (at -0.1 9 ${p.r}) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + (fp_text reference REF** (at 0 0 ${p.rot}) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + (fp_text value RollerEncoder_Panasonic_EVQWGD001 (at -0.1 9 ${p.rot}) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) ${'' /* corner marks */} (fp_line (start -8.4 -6.4) (end 8.4 -6.4) (layer Dwgs.User) (width 0.12)) @@ -57,15 +57,15 @@ module.exports = { (fp_arc (start ${def_pos}9.5 -6.3) (end ${def_pos}9.8 -6.3) (angle ${def_neg}90) (layer Edge.Cuts) (width 0.15)) ${'' /* pins */} - (pad S1 thru_hole circle (at ${def_neg}6.85 -6.2 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.from}) - (pad S2 thru_hole circle (at ${def_neg}5 -6.2 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.to}) - (pad A thru_hole circle (at ${def_neg}5.625 -3.81 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.A}) - (pad B thru_hole circle (at ${def_neg}5.625 -1.27 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.B}) - (pad C thru_hole circle (at ${def_neg}5.625 1.27 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.C}) - (pad D thru_hole circle (at ${def_neg}5.625 3.81 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.D}) + (pad S1 thru_hole circle (at ${def_neg}6.85 -6.2 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.from.str}) + (pad S2 thru_hole circle (at ${def_neg}5 -6.2 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.to.str}) + (pad A thru_hole circle (at ${def_neg}5.625 -3.81 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.A.str}) + (pad B thru_hole circle (at ${def_neg}5.625 -1.27 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.B.str}) + (pad C thru_hole circle (at ${def_neg}5.625 1.27 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.C.str}) + (pad D thru_hole circle (at ${def_neg}5.625 3.81 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.D.str}) ${'' /* stabilizer */} - (pad "" np_thru_hole circle (at ${def_neg}5.625 6.3 ${p.r}) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at ${def_neg}5.625 6.3 ${p.rot}) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) ` } if(p.reverse) { diff --git a/src/footprints/slider.js b/src/footprints/slider.js index 12b3fd9..fa117fd 100644 --- a/src/footprints/slider.js +++ b/src/footprints/slider.js @@ -38,15 +38,15 @@ module.exports = { (pad "" np_thru_hole circle (at -1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask)) ${'' /* pins */} - (pad 1 smd rect (at ${right}2.25 2.075 ${p.r}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from}) - (pad 2 smd rect (at ${left}0.75 2.075 ${p.r}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to}) - (pad 3 smd rect (at ${left}2.25 2.075 ${p.r}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) + (pad 1 smd rect (at ${right}2.25 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from.str}) + (pad 2 smd rect (at ${left}0.75 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to.str}) + (pad 3 smd rect (at ${left}2.25 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) ${'' /* side mounts */} - (pad "" smd rect (at 3.7 -1.1 ${p.r}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) - (pad "" smd rect (at 3.7 1.1 ${p.r}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) - (pad "" smd rect (at -3.7 1.1 ${p.r}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) - (pad "" smd rect (at -3.7 -1.1 ${p.r}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) + (pad "" smd rect (at 3.7 -1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) + (pad "" smd rect (at 3.7 1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) + (pad "" smd rect (at -3.7 1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) + (pad "" smd rect (at -3.7 -1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) ) ` diff --git a/src/footprints/trrs.js b/src/footprints/trrs.js index ede0002..6728e7b 100644 --- a/src/footprints/trrs.js +++ b/src/footprints/trrs.js @@ -71,10 +71,10 @@ module.exports = { } function pins(def_neg, def_pos) { return ` - (pad 1 thru_hole oval (at ${def_neg} 11.3 ${p.r}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.A}) - (pad 2 thru_hole oval (at ${def_pos} 10.2 ${p.r}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.B}) - (pad 3 thru_hole oval (at ${def_pos} 6.2 ${p.r}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.C}) - (pad 4 thru_hole oval (at ${def_pos} 3.2 ${p.r}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.D}) + (pad 1 thru_hole oval (at ${def_neg} 11.3 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.A.str}) + (pad 2 thru_hole oval (at ${def_pos} 10.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.B.str}) + (pad 3 thru_hole oval (at ${def_pos} 6.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.C.str}) + (pad 4 thru_hole oval (at ${def_pos} 3.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.D.str}) ` } if(p.reverse & p.symmetric) { diff --git a/src/footprints/via.js b/src/footprints/via.js index 1b6dc5c..c83924a 100644 --- a/src/footprints/via.js +++ b/src/footprints/via.js @@ -14,7 +14,7 @@ module.exports = { (fp_text value VIA-0.6mm (at 0 -1.4) (layer F.Fab) hide (effects (font (size 1 1) (thickness 0.15)))) ${'' /* via */} - (pad 1 thru_hole circle (at 0 0) (size 0.6 0.6) (drill 0.3) (layers *.Cu) (zone_connect 2) ${p.net}) + (pad 1 thru_hole circle (at 0 0) (size 0.6 0.6) (drill 0.3) (layers *.Cu) (zone_connect 2) ${p.net.str}) ) ` } \ No newline at end of file diff --git a/src/outlines.js b/src/outlines.js index f837cde..c1e675e 100644 --- a/src/outlines.js +++ b/src/outlines.js @@ -136,15 +136,20 @@ const whats = { outline } -const expand_shorthand = (config, name, units) => { +const expand_shorthand = (config, units) => { if (a.type(config.expand)(units) == 'string') { const prefix = config.expand.slice(0, -1) const suffix = config.expand.slice(-1) - const valid_suffixes = [')', '>', ']'] - a.assert(valid_suffixes.includes(suffix), `If field "${name}" is a string, ` + - `it should end with one of [${valid_suffixes.map(s => `'${s}'`).join(', ')}]!`) - config.expand = prefix - config.joints = config.joints || valid_suffixes.indexOf(suffix) + let expand = suffix + let joints = 0 + + if (suffix == ')') ; // noop + else if (suffix == '>') joints = 1 + else if (suffix == ']') joints = 2 + else expand = config.expand + + config.expand = parseFloat(expand) + config.joints = config.joints || joints } if (a.type(config.joints)(units) == 'string') { @@ -154,7 +159,7 @@ const expand_shorthand = (config, name, units) => { } } -exports.parse = (config, points, units) => { +exports.parse = (config = {}, points = {}, units = {}) => { // output outlines will be collected here const outlines = {} @@ -194,8 +199,9 @@ exports.parse = (config, points, units) => { const where = units => filter(original_where, `${name}.where`, points, units, asym) const original_adjust = part.adjust // same as above + const adjust = start => anchor(original_adjust || {}, `${name}.adjust`, points, start)(units) const fillet = a.sane(part.fillet || 0, `${name}.fillet`, 'number')(units) - expand_shorthand(part, `${name}.expand`, units) + expand_shorthand(part, units) const expand = a.sane(part.expand || 0, `${name}.expand`, 'number')(units) const joints = a.in(a.sane(part.joints || 0, `${name}.joints`, 'number')(units), `${name}.joints`, [0, 1, 2]) const scale = a.sane(part.scale || 1, `${name}.scale`, 'number')(units) @@ -214,7 +220,6 @@ exports.parse = (config, points, units) => { // a prototype "shape" maker (and its units) are computed const [shape_maker, shape_units] = whats[what](part, name, points, outlines, units) - const adjust = start => anchor(original_adjust || {}, `${name}.adjust`, points, start)(shape_units) // and then the shape is repeated for all where positions for (const w of where(shape_units)) { diff --git a/src/pcbs.js b/src/pcbs.js index 59515d7..3289d12 100644 --- a/src/pcbs.js +++ b/src/pcbs.js @@ -1,6 +1,4 @@ const m = require('makerjs') -const yaml = require('js-yaml') - const u = require('./utils') const a = require('./assert') const prep = require('./prepare') @@ -117,7 +115,7 @@ const kicad_netclass = ` ) ` -const makerjs2kicad = exports._makerjs2kicad = (model, layer) => { +const makerjs2kicad = exports._makerjs2kicad = (model, layer='Edge.Cuts') => { const grs = [] const xy = val => `${val[0]} ${-val[1]}` m.model.walk(model, { @@ -153,24 +151,6 @@ exports.inject_footprint = (name, fp) => { footprint_types[name] = fp } -const xy_obj = (x, y) => { - return { - x, - y, - str: `${x} ${y}`, - toString: function() { return this.str } - } -} - -const net_obj = (name, index) => { - return { - name, - index, - str: `(net ${index} "${name}")`, - toString: function() { return this.str } - } -} - const footprint = exports._footprint = (points, net_indexer, component_indexer, units, extra) => (config, name, point) => { // config sanitization @@ -189,7 +169,7 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, params = prep.extend(params, mirror_overrides) } a.unexpected(params, `${name}.params`, Object.keys(fp.params)) - + // parsing parameters const parsed_params = {} for (const [param_name, param_def] of Object.entries(fp.params)) { @@ -203,51 +183,40 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, parsed_def = {type: 'number', value: a.mathnum(param_def)(units)} } else if (def_type == 'boolean') { parsed_def = {type: 'boolean', value: param_def} - } else if (def_type == 'array') { - parsed_def = {type: 'array', value: param_def} - } else if (def_type == 'object') { - // parsed param definitions also expand to an object - // so to detect whether this is an arbitrary object, - // we first have to make sure it's not an expanded param def - // (this has to be a heuristic, but should be pretty reliable) - const defarr = Object.keys(param_def) - const already_expanded = defarr.length == 2 && defarr.includes('type') && defarr.includes('value') - if (!already_expanded) { - parsed_def = {type: 'object', value: param_def} - } - } else { + } else if (def_type == 'undefined') { parsed_def = {type: 'net', value: undefined} } // combine default value with potential user override - let value = params[param_name] !== undefined ? params[param_name] : parsed_def.value - const type = parsed_def.type - + let value = prep.extend(parsed_def.value, params[param_name]) + let type = parsed_def.type + // templating support, with conversion back to raw datatypes const converters = { string: v => v, number: v => a.sane(v, `${name}.params.${param_name}`, 'number')(units), boolean: v => v === 'true', - array: v => yaml.load(v), - object: v => yaml.load(v), net: v => v, - anchor: v => yaml.load(v) + anchor: v => v } - a.in(type, `${name}.params.${param_name}.type`, Object.keys(converters)) if (a.type(value)() == 'string') { value = u.template(value, point.meta) value = converters[type](value) } - // type-specific postprocessing - if (['string', 'number', 'boolean', 'array', 'object'].includes(type)) { + // type-specific processing + if (['string', 'number', 'boolean'].includes(type)) { parsed_params[param_name] = value } else if (type == 'net') { const net = a.sane(value, `${name}.params.${param_name}`, 'string')(units) const index = net_indexer(net) - parsed_params[param_name] = net_obj(net, index) - } else { // anchor - let parsed_anchor = anchor(value, `${name}.params.${param_name}`, points, point)(units) + parsed_params[param_name] = { + name: net, + index: index, + str: `(net ${index} "${net}")` + } + } else if (type == 'anchor') { + let parsed_anchor = anchor(value || {}, `${name}.params.${param_name}`, points, point)(units) parsed_anchor.y = -parsed_anchor.y // kicad mirror, as per usual parsed_params[param_name] = parsed_anchor } @@ -258,35 +227,31 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, parsed_params.ref_hide = extra.references ? '' : 'hide' // footprint positioning - parsed_params.x = point.x - parsed_params.y = -point.y - parsed_params.r = point.r - parsed_params.rot = point.r // to be deprecated - parsed_params.xy = `${point.x} ${-point.y}` parsed_params.at = `(at ${point.x} ${-point.y} ${point.r})` - - const internal_xyfunc = (x, y, resist) => { - const sign = resist ? 1 : (point.meta.mirrored ? -1 : 1) - return xy_obj(sign * x, y) + parsed_params.rot = point.r + parsed_params.ixy = (x, y) => { + const sign = point.meta.mirrored ? -1 : 1 + return `${sign * x} ${y}` } - parsed_params.isxy = (x, y) => internal_xyfunc(x, y, false) - parsed_params.iaxy = (x, y) => internal_xyfunc(x, y, true) - - const external_xyfunc = (x, y, resist) => { + const xyfunc = (x, y, resist=true) => { const new_anchor = anchor({ shift: [x, -y], resist: resist }, '_internal_footprint_xy', points, point)(units) - return xy_obj(new_anchor.x, -new_anchor.y) + return `${new_anchor.x} ${-new_anchor.y}` } - parsed_params.esxy = (x, y) => external_xyfunc(x, y, false) - parsed_params.eaxy = (x, y) => external_xyfunc(x, y, true) + parsed_params.xy = (x, y) => xyfunc(x, y, true) + parsed_params.sxy = (x, y) => xyfunc(x, y, false) // allowing footprints to add dynamic nets parsed_params.local_net = suffix => { const net = `${component_ref}_${suffix}` const index = net_indexer(net) - return net_obj(net, index) + return { + name: net, + index: index, + str: `(net ${index} "${net}")` + } } return fp.body(parsed_params) diff --git a/src/point.js b/src/point.js index 27e538a..160e1fa 100644 --- a/src/point.js +++ b/src/point.js @@ -76,11 +76,4 @@ module.exports = class Point { const dy = other.y - this.y return -Math.atan2(dx, dy) * (180 / Math.PI) } - - equals(other) { - return this.x === other.x - && this.y === other.y - && this.r === other.r - && JSON.stringify(this.meta) === JSON.stringify(other.meta) - } } diff --git a/src/points.js b/src/points.js index 8f50904..d20bf40 100644 --- a/src/points.js +++ b/src/points.js @@ -21,7 +21,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, a.unexpected(zone, `points.zones.${zone_name}`, ['columns', 'rows', 'key']) // the anchor comes from "above", because it needs other zones too (for references) - const cols = zone.columns = a.sane(zone.columns || {}, `points.zones.${zone_name}.columns`, 'object')() + const cols = a.sane(zone.columns || {}, `points.zones.${zone_name}.columns`, 'object')() const zone_wide_rows = a.sane(zone.rows || {}, `points.zones.${zone_name}.rows`, 'object')() for (const [key, val] of Object.entries(zone_wide_rows)) { zone_wide_rows[key] = val || {} // no check yet, as it will be extended later @@ -43,6 +43,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, // column layout + const col_minmax = {} if (!Object.keys(cols).length) { cols.default = {} } @@ -52,6 +53,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, // column-level sanitization col = col || {} + col_minmax[col_name] = {min: Infinity, max: -Infinity} a.unexpected( col, @@ -90,7 +92,6 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, orient: 0, shift: [0, 0], rotate: 0, - adjust: {}, width: units.$default_width, height: units.$default_height, padding: units.$default_padding, @@ -116,7 +117,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, key.col.name = col_name key.row = row - key.stagger = a.sane(key.stagger, `${key.name}.stagger`, 'number')(units) + key.stagger = a.sane(key.stagger, `${key.name}.shift`, 'number')(units) key.spread = a.sane(key.spread, `${key.name}.spread`, 'number')(units) key.splay = a.sane(key.splay, `${key.name}.splay`, 'number')(units) key.origin = a.xy(key.origin, `${key.name}.origin`)(units) @@ -167,34 +168,83 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, // copy the current column anchor let point = running_anchor.clone() - // apply cumulative per-key adjustments + // apply per-key adjustments point.r += key.orient point.shift(key.shift) point.r += key.rotate - // commit running anchor - running_anchor = point.clone() - - // apply independent adjustments - point = anchor_lib.parse(key.adjust, `${key.name}.adjust`, {}, point)(units) - // save new key point.meta = key points[key.name] = point + // collect minmax stats for autobind + col_minmax[col_name].min = Math.min(col_minmax[col_name].min, point.y) + col_minmax[col_name].max = Math.max(col_minmax[col_name].max, point.y) + // advance the running anchor to the next position + running_anchor = point.clone() running_anchor.shift([0, key.padding]) } first_col = false } + // autobind + + let col_names = Object.keys(col_minmax) + let col_index = 0 + for (const [col_name, bounds] of Object.entries(col_minmax)) { + for (const point of Object.values(points)) { + if (point.meta.col.name != col_name) continue + if (!point.meta.autobind) continue + const autobind = a.sane(point.meta.autobind, `${point.meta.name}.autobind`, 'number')(units) + // specify default as -1, so we can recognize where it was left undefined even after number-ification + const bind = point.meta.bind = a.trbl(point.meta.bind, `${point.meta.name}.bind`, -1)(units) + + // up + if (bind[0] == -1) { + if (point.y < bounds.max) bind[0] = autobind + else bind[0] = 0 + + } + + // right + if (bind[1] == -1) { + bind[1] = 0 + if (col_index < col_names.length - 1) { + const right = col_minmax[col_names[col_index + 1]] + if (point.y >= right.min && point.y <= right.max) { + bind[1] = autobind + } + } + } + + // down + if (bind[2] == -1) { + if (point.y > bounds.min) bind[2] = autobind + else bind[2] = 0 + } + + // left + if (bind[3] == -1) { + bind[3] = 0 + if (col_index > 0) { + const left = col_minmax[col_names[col_index - 1]] + if (point.y >= left.min && point.y <= left.max) { + bind[3] = autobind + } + } + } + } + col_index++ + } + return points } const parse_axis = exports._parse_axis = (config, name, points, units) => { if (!['number', 'undefined'].includes(a.type(config)(units))) { - const mirror_obj = a.sane(config, name, 'object')() + const mirror_obj = a.sane(config || {}, name, 'object')() const distance = a.sane(mirror_obj.distance || 0, `${name}.distance`, 'number')(units) delete mirror_obj.distance let axis = anchor_lib.parse(mirror_obj, name, points)(units).x @@ -204,91 +254,21 @@ const parse_axis = exports._parse_axis = (config, name, points, units) => { } const perform_mirror = exports._perform_mirror = (point, axis) => { - point.meta.mirrored = false - if (point.meta.asym == 'source') return ['', null] - const mp = point.clone().mirror(axis) - const mirrored_name = `mirror_${point.meta.name}` - mp.meta = prep.extend(mp.meta, mp.meta.mirror || {}) - mp.meta.name = mirrored_name - mp.meta.colrow = `mirror_${mp.meta.colrow}` - mp.meta.mirrored = true - if (point.meta.asym == 'clone') { - point.meta.skip = true - } - return [mirrored_name, mp] -} - -const perform_autobind = exports._perform_autobind = (points, units) => { - - const bounds = {} - const col_lists = {} - const mirrorzone = p => (p.meta.mirrored ? 'mirror_' : '') + p.meta.zone.name - - // round one: get column upper/lower bounds and per-zone column lists - for (const p of Object.values(points)) { - - const zone = mirrorzone(p) - const col = p.meta.col.name - - if (!bounds[zone]) bounds[zone] = {} - if (!bounds[zone][col]) bounds[zone][col] = {min: Infinity, max: -Infinity} - if (!col_lists[zone]) col_lists[zone] = Object.keys(p.meta.zone.columns) - - bounds[zone][col].min = Math.min(bounds[zone][col].min, p.y) - bounds[zone][col].max = Math.max(bounds[zone][col].max, p.y) - } - - // round two: apply autobind as appropriate - for (const p of Object.values(points)) { - - const autobind = a.sane(p.meta.autobind, `${p.meta.name}.autobind`, 'number')(units) - if (!autobind) continue - - const zone = mirrorzone(p) - const col = p.meta.col.name - const col_list = col_lists[zone] - const col_bounds = bounds[zone][col] - - - // specify default as -1, so we can recognize where it was left undefined even after number-ification - const bind = p.meta.bind = a.trbl(p.meta.bind, `${p.meta.name}.bind`, -1)(units) - - // up - if (bind[0] == -1) { - if (p.y < col_bounds.max) bind[0] = autobind - else bind[0] = 0 - } - - // down - if (bind[2] == -1) { - if (p.y > col_bounds.min) bind[2] = autobind - else bind[2] = 0 - } - - // left - if (bind[3] == -1) { - bind[3] = 0 - const col_index = col_list.indexOf(col) - if (col_index > 0) { - const left = bounds[zone][col_list[col_index - 1]] - if (left && p.y >= left.min && p.y <= left.max) { - bind[3] = autobind - } - } - } - - // right - if (bind[1] == -1) { - bind[1] = 0 - const col_index = col_list.indexOf(col) - if (col_index < col_list.length - 1) { - const right = bounds[zone][col_list[col_index + 1]] - if (right && p.y >= right.min && p.y <= right.max) { - bind[1] = autobind - } - } - } + if (axis !== undefined) { + point.meta.mirrored = false + if (point.meta.asym == 'source') return ['', null] + const mp = point.clone().mirror(axis) + const mirrored_name = `mirror_${point.meta.name}` + mp.meta = prep.extend(mp.meta, mp.meta.mirror || {}) + mp.meta.name = mirrored_name + mp.meta.colrow = `mirror_${mp.meta.colrow}` + mp.meta.mirrored = true + if (point.meta.asym == 'clone') { + point.meta.skip = true + } + return [mirrored_name, mp] } + return ['', null] } exports.parse = (config, units) => { @@ -320,11 +300,13 @@ exports.parse = (config, units) => { // simplifying the names in individual point "zones" and single-key columns while (Object.keys(new_points).some(k => k.endsWith('_default'))) { - for (const key of Object.keys(new_points).filter(k => k.endsWith('_default'))) { - const new_key = key.slice(0, -8) - new_points[new_key] = new_points[key] - new_points[new_key].meta.name = new_key - delete new_points[key] + for (const key of Object.keys(new_points)) { + if (key.endsWith('_default')) { + const new_key = key.slice(0, -8) + new_points[new_key] = new_points[key] + new_points[new_key].meta.name = new_key + delete new_points[key] + } } } @@ -370,7 +352,7 @@ exports.parse = (config, units) => { const global_axis = parse_axis(global_mirror, `points.mirror`, points, units) const global_mirrored_points = {} for (const point of Object.values(points)) { - if (global_axis !== undefined && point.meta.mirrored === undefined) { + if (global_axis !== undefined && point.mirrored === undefined) { const [mname, mp] = perform_mirror(point, global_axis) if (mp) { global_mirrored_points[mname] = mp @@ -386,9 +368,6 @@ exports.parse = (config, units) => { filtered[k] = p } - // apply autobind - perform_autobind(filtered, units) - // done return filtered } diff --git a/src/prepare.js b/src/prepare.js index 48edd7f..2314542 100644 --- a/src/prepare.js +++ b/src/prepare.js @@ -42,14 +42,11 @@ const traverse = exports.traverse = (config, root, breadcrumbs, op) => { } return result } else if (a.type(config)() == 'array') { - // needed so that arrays can set output the same way as objects within ops - const dummy = {} const result = [] let index = 0 for (const val of config) { breadcrumbs.push(`[${index}]`) - op(dummy, 'dummykey', traverse(val, root, breadcrumbs, op), root, breadcrumbs) - result[index] = dummy.dummykey + result[index] = traverse(val, root, breadcrumbs, op) breadcrumbs.pop() index++ } diff --git a/src/utils.js b/src/utils.js index 34a852d..de9cb5f 100644 --- a/src/utils.js +++ b/src/utils.js @@ -23,7 +23,7 @@ exports.template = (str, vals={}) => { let res = str let shift = 0 for (const match of str.matchAll(regex)) { - const replacement = (deep(vals, match[1]) || '') + '' + const replacement = deep(vals, match[1]) || '' res = res.substring(0, match.index + shift) + replacement + res.substring(match.index + shift + match[0].length) diff --git a/test/cases/cube___cases_cube_jscad.jscad b/test/cases/cube___cases_cube_jscad.jscad index 349bb42..bb9cda8 100644 --- a/test/cases/cube___cases_cube_jscad.jscad +++ b/test/cases/cube___cases_cube_jscad.jscad @@ -1,4 +1,4 @@ -function square_extrude_5_outline_fn(){ +function square_outline_fn(){ return new CSG.Path2D([[-2.5,-2.5],[2.5,-2.5]]).appendPoint([2.5,2.5]).appendPoint([-2.5,2.5]).appendPoint([-2.5,-2.5]).close().innerToCAG() .extrude({ offset: [0, 0, 5] }); } @@ -10,7 +10,7 @@ function square_extrude_5_outline_fn(){ // creating part 0 of case cube - let cube__part_0 = square_extrude_5_outline_fn(); + let cube__part_0 = square_outline_fn(); // make sure that rotations are relative let cube__part_0_bounds = cube__part_0.getBounds(); diff --git a/test/cases/operations.yaml b/test/cases/operations.yaml deleted file mode 100644 index 47984f1..0000000 --- a/test/cases/operations.yaml +++ /dev/null @@ -1,36 +0,0 @@ -points.zones.matrix: {} -outlines: - _square: - - what: rectangle - where: true - size: [8, 8] - _circle: - - what: circle - where: true - radius: 3 -cases: - _cube: - - name: _square - extrude: 8 - _cylinder_one: - - name: _circle - extrude: 8 - _subtract: - target: - name: _cube - what: case - tool: - name: _cylinder_one - what: case - operation: subtract - _cylinder_two: - - name: _circle - extrude: 8 - shift: [0,4,4] - rotate: [90,0,0] - _flat_square: - - "_square" - combination: - - "_subtract" - - "~_cylinder_two" - - "+_flat_square" diff --git a/test/cases/operations___cases_combination_jscad.jscad b/test/cases/operations___cases_combination_jscad.jscad deleted file mode 100644 index 1fb8cb8..0000000 --- a/test/cases/operations___cases_combination_jscad.jscad +++ /dev/null @@ -1,211 +0,0 @@ -function _square_extrude_8_outline_fn(){ - return new CSG.Path2D([[-4,-4],[4,-4]]).appendPoint([4,4]).appendPoint([-4,4]).appendPoint([-4,-4]).close().innerToCAG() -.extrude({ offset: [0, 0, 8] }); -} - - -function _circle_extrude_8_outline_fn(){ - return CAG.circle({"center":[0,0],"radius":3}) -.extrude({ offset: [0, 0, 8] }); -} - - -function _square_extrude_1_outline_fn(){ - return new CSG.Path2D([[-4,-4],[4,-4]]).appendPoint([4,4]).appendPoint([-4,4]).appendPoint([-4,-4]).close().innerToCAG() -.extrude({ offset: [0, 0, 1] }); -} - - - - - function _subtract_case_fn() { - - - // creating part target of case _subtract - let _subtract__part_target = _cube_case_fn(); - - // make sure that rotations are relative - let _subtract__part_target_bounds = _subtract__part_target.getBounds(); - let _subtract__part_target_x = _subtract__part_target_bounds[0].x + (_subtract__part_target_bounds[1].x - _subtract__part_target_bounds[0].x) / 2 - let _subtract__part_target_y = _subtract__part_target_bounds[0].y + (_subtract__part_target_bounds[1].y - _subtract__part_target_bounds[0].y) / 2 - _subtract__part_target = translate([-_subtract__part_target_x, -_subtract__part_target_y, 0], _subtract__part_target); - _subtract__part_target = rotate([0,0,0], _subtract__part_target); - _subtract__part_target = translate([_subtract__part_target_x, _subtract__part_target_y, 0], _subtract__part_target); - - _subtract__part_target = translate([0,0,0], _subtract__part_target); - let result = _subtract__part_target; - - - - // creating part tool of case _subtract - let _subtract__part_tool = _cylinder_one_case_fn(); - - // make sure that rotations are relative - let _subtract__part_tool_bounds = _subtract__part_tool.getBounds(); - let _subtract__part_tool_x = _subtract__part_tool_bounds[0].x + (_subtract__part_tool_bounds[1].x - _subtract__part_tool_bounds[0].x) / 2 - let _subtract__part_tool_y = _subtract__part_tool_bounds[0].y + (_subtract__part_tool_bounds[1].y - _subtract__part_tool_bounds[0].y) / 2 - _subtract__part_tool = translate([-_subtract__part_tool_x, -_subtract__part_tool_y, 0], _subtract__part_tool); - _subtract__part_tool = rotate([0,0,0], _subtract__part_tool); - _subtract__part_tool = translate([_subtract__part_tool_x, _subtract__part_tool_y, 0], _subtract__part_tool); - - _subtract__part_tool = translate([0,0,0], _subtract__part_tool); - result = result.subtract(_subtract__part_tool); - - - return result; - } - - - - function _cube_case_fn() { - - - // creating part 0 of case _cube - let _cube__part_0 = _square_extrude_8_outline_fn(); - - // make sure that rotations are relative - let _cube__part_0_bounds = _cube__part_0.getBounds(); - let _cube__part_0_x = _cube__part_0_bounds[0].x + (_cube__part_0_bounds[1].x - _cube__part_0_bounds[0].x) / 2 - let _cube__part_0_y = _cube__part_0_bounds[0].y + (_cube__part_0_bounds[1].y - _cube__part_0_bounds[0].y) / 2 - _cube__part_0 = translate([-_cube__part_0_x, -_cube__part_0_y, 0], _cube__part_0); - _cube__part_0 = rotate([0,0,0], _cube__part_0); - _cube__part_0 = translate([_cube__part_0_x, _cube__part_0_y, 0], _cube__part_0); - - _cube__part_0 = translate([0,0,0], _cube__part_0); - let result = _cube__part_0; - - - return result; - } - - - - function _cylinder_one_case_fn() { - - - // creating part 0 of case _cylinder_one - let _cylinder_one__part_0 = _circle_extrude_8_outline_fn(); - - // make sure that rotations are relative - let _cylinder_one__part_0_bounds = _cylinder_one__part_0.getBounds(); - let _cylinder_one__part_0_x = _cylinder_one__part_0_bounds[0].x + (_cylinder_one__part_0_bounds[1].x - _cylinder_one__part_0_bounds[0].x) / 2 - let _cylinder_one__part_0_y = _cylinder_one__part_0_bounds[0].y + (_cylinder_one__part_0_bounds[1].y - _cylinder_one__part_0_bounds[0].y) / 2 - _cylinder_one__part_0 = translate([-_cylinder_one__part_0_x, -_cylinder_one__part_0_y, 0], _cylinder_one__part_0); - _cylinder_one__part_0 = rotate([0,0,0], _cylinder_one__part_0); - _cylinder_one__part_0 = translate([_cylinder_one__part_0_x, _cylinder_one__part_0_y, 0], _cylinder_one__part_0); - - _cylinder_one__part_0 = translate([0,0,0], _cylinder_one__part_0); - let result = _cylinder_one__part_0; - - - return result; - } - - - - function _cylinder_two_case_fn() { - - - // creating part 0 of case _cylinder_two - let _cylinder_two__part_0 = _circle_extrude_8_outline_fn(); - - // make sure that rotations are relative - let _cylinder_two__part_0_bounds = _cylinder_two__part_0.getBounds(); - let _cylinder_two__part_0_x = _cylinder_two__part_0_bounds[0].x + (_cylinder_two__part_0_bounds[1].x - _cylinder_two__part_0_bounds[0].x) / 2 - let _cylinder_two__part_0_y = _cylinder_two__part_0_bounds[0].y + (_cylinder_two__part_0_bounds[1].y - _cylinder_two__part_0_bounds[0].y) / 2 - _cylinder_two__part_0 = translate([-_cylinder_two__part_0_x, -_cylinder_two__part_0_y, 0], _cylinder_two__part_0); - _cylinder_two__part_0 = rotate([90,0,0], _cylinder_two__part_0); - _cylinder_two__part_0 = translate([_cylinder_two__part_0_x, _cylinder_two__part_0_y, 0], _cylinder_two__part_0); - - _cylinder_two__part_0 = translate([0,4,4], _cylinder_two__part_0); - let result = _cylinder_two__part_0; - - - return result; - } - - - - function _flat_square_case_fn() { - - - // creating part 0 of case _flat_square - let _flat_square__part_0 = _square_extrude_1_outline_fn(); - - // make sure that rotations are relative - let _flat_square__part_0_bounds = _flat_square__part_0.getBounds(); - let _flat_square__part_0_x = _flat_square__part_0_bounds[0].x + (_flat_square__part_0_bounds[1].x - _flat_square__part_0_bounds[0].x) / 2 - let _flat_square__part_0_y = _flat_square__part_0_bounds[0].y + (_flat_square__part_0_bounds[1].y - _flat_square__part_0_bounds[0].y) / 2 - _flat_square__part_0 = translate([-_flat_square__part_0_x, -_flat_square__part_0_y, 0], _flat_square__part_0); - _flat_square__part_0 = rotate([0,0,0], _flat_square__part_0); - _flat_square__part_0 = translate([_flat_square__part_0_x, _flat_square__part_0_y, 0], _flat_square__part_0); - - _flat_square__part_0 = translate([0,0,0], _flat_square__part_0); - let result = _flat_square__part_0; - - - return result; - } - - - - function combination_case_fn() { - - - // creating part 0 of case combination - let combination__part_0 = _subtract_case_fn(); - - // make sure that rotations are relative - let combination__part_0_bounds = combination__part_0.getBounds(); - let combination__part_0_x = combination__part_0_bounds[0].x + (combination__part_0_bounds[1].x - combination__part_0_bounds[0].x) / 2 - let combination__part_0_y = combination__part_0_bounds[0].y + (combination__part_0_bounds[1].y - combination__part_0_bounds[0].y) / 2 - combination__part_0 = translate([-combination__part_0_x, -combination__part_0_y, 0], combination__part_0); - combination__part_0 = rotate([0,0,0], combination__part_0); - combination__part_0 = translate([combination__part_0_x, combination__part_0_y, 0], combination__part_0); - - combination__part_0 = translate([0,0,0], combination__part_0); - let result = combination__part_0; - - - - // creating part 1 of case combination - let combination__part_1 = _cylinder_two_case_fn(); - - // make sure that rotations are relative - let combination__part_1_bounds = combination__part_1.getBounds(); - let combination__part_1_x = combination__part_1_bounds[0].x + (combination__part_1_bounds[1].x - combination__part_1_bounds[0].x) / 2 - let combination__part_1_y = combination__part_1_bounds[0].y + (combination__part_1_bounds[1].y - combination__part_1_bounds[0].y) / 2 - combination__part_1 = translate([-combination__part_1_x, -combination__part_1_y, 0], combination__part_1); - combination__part_1 = rotate([0,0,0], combination__part_1); - combination__part_1 = translate([combination__part_1_x, combination__part_1_y, 0], combination__part_1); - - combination__part_1 = translate([0,0,0], combination__part_1); - result = result.intersect(combination__part_1); - - - - // creating part 2 of case combination - let combination__part_2 = _flat_square_case_fn(); - - // make sure that rotations are relative - let combination__part_2_bounds = combination__part_2.getBounds(); - let combination__part_2_x = combination__part_2_bounds[0].x + (combination__part_2_bounds[1].x - combination__part_2_bounds[0].x) / 2 - let combination__part_2_y = combination__part_2_bounds[0].y + (combination__part_2_bounds[1].y - combination__part_2_bounds[0].y) / 2 - combination__part_2 = translate([-combination__part_2_x, -combination__part_2_y, 0], combination__part_2); - combination__part_2 = rotate([0,0,0], combination__part_2); - combination__part_2 = translate([combination__part_2_x, combination__part_2_y, 0], combination__part_2); - - combination__part_2 = translate([0,0,0], combination__part_2); - result = result.union(combination__part_2); - - - return result; - } - - - - function main() { - return combination_case_fn(); - } - - \ No newline at end of file diff --git a/test/cli/big/reference/cases/_export.jscad b/test/cli/big/reference/cases/_export.jscad index bb85f72..a98416f 100644 --- a/test/cli/big/reference/cases/_export.jscad +++ b/test/cli/big/reference/cases/_export.jscad @@ -1,4 +1,4 @@ -function export_extrude_1_outline_fn(){ +function export_outline_fn(){ return new CSG.Path2D([[-9,-9],[9,-9]]).appendPoint([9,9]).appendPoint([-9,9]).appendPoint([-9,-9]).close().innerToCAG() .extrude({ offset: [0, 0, 1] }); } @@ -10,7 +10,7 @@ function export_extrude_1_outline_fn(){ // creating part 0 of case _export - let _export__part_0 = export_extrude_1_outline_fn(); + let _export__part_0 = export_outline_fn(); // make sure that rotations are relative let _export__part_0_bounds = _export__part_0.getBounds(); diff --git a/test/cli/big/reference/cases/export.jscad b/test/cli/big/reference/cases/export.jscad index 19511e7..6ccb677 100644 --- a/test/cli/big/reference/cases/export.jscad +++ b/test/cli/big/reference/cases/export.jscad @@ -1,4 +1,4 @@ -function export_extrude_1_outline_fn(){ +function export_outline_fn(){ return new CSG.Path2D([[-9,-9],[9,-9]]).appendPoint([9,9]).appendPoint([-9,9]).appendPoint([-9,-9]).close().innerToCAG() .extrude({ offset: [0, 0, 1] }); } @@ -10,7 +10,7 @@ function export_extrude_1_outline_fn(){ // creating part 0 of case export - let export__part_0 = export_extrude_1_outline_fn(); + let export__part_0 = export_outline_fn(); // make sure that rotations are relative let export__part_0_bounds = export__part_0.getBounds(); diff --git a/test/cli/big/reference/pcbs/_export.kicad_pcb b/test/cli/big/reference/pcbs/_export.kicad_pcb index 53faa54..8644559 100644 --- a/test/cli/big/reference/pcbs/_export.kicad_pcb +++ b/test/cli/big/reference/pcbs/_export.kicad_pcb @@ -5,8 +5,8 @@ (page A3) (title_block (title _export) - (rev v3.14) - (company MrZealot) + (rev v1.0.0) + (company Unknown) ) (general diff --git a/test/cli/big/reference/pcbs/export.kicad_pcb b/test/cli/big/reference/pcbs/export.kicad_pcb index e52b3b8..d2e5a7b 100644 --- a/test/cli/big/reference/pcbs/export.kicad_pcb +++ b/test/cli/big/reference/pcbs/export.kicad_pcb @@ -5,8 +5,8 @@ (page A3) (title_block (title export) - (rev v3.14) - (company MrZealot) + (rev v1.0.0) + (company Unknown) ) (general diff --git a/test/cli/big/reference/points/points.yaml b/test/cli/big/reference/points/points.yaml index fc6b036..911c06d 100644 --- a/test/cli/big/reference/points/points.yaml +++ b/test/cli/big/reference/points/points.yaml @@ -14,7 +14,6 @@ matrix: - 0 - 0 rotate: 0 - adjust: {} width: 18 height: 18 padding: 19 @@ -24,11 +23,6 @@ matrix: colrow: default_default name: matrix zone: - columns: - default: - rows: {} - key: {} - name: default name: matrix col: rows: {} diff --git a/test/cli/big/reference/source/canonical.yaml b/test/cli/big/reference/source/canonical.yaml index 409691a..41858d8 100644 --- a/test/cli/big/reference/source/canonical.yaml +++ b/test/cli/big/reference/source/canonical.yaml @@ -1,6 +1,3 @@ -meta: - author: MrZealot - version: v3.14 units: a: 28 + u points: diff --git a/test/cli/big/reference/source/raw.txt b/test/cli/big/reference/source/raw.txt index 843cf13..9d6d2e7 100644 --- a/test/cli/big/reference/source/raw.txt +++ b/test/cli/big/reference/source/raw.txt @@ -1,6 +1,3 @@ -meta: - author: MrZealot - version: v3.14 units: a: 28 + u points.zones.matrix: diff --git a/test/cli/minimal/reference/points/points.yaml b/test/cli/minimal/reference/points/points.yaml index a2c7bb5..63b3d11 100644 --- a/test/cli/minimal/reference/points/points.yaml +++ b/test/cli/minimal/reference/points/points.yaml @@ -14,7 +14,6 @@ matrix_col_row: - 0 - 0 rotate: 0 - adjust: {} width: 18 height: 18 padding: 19 @@ -25,17 +24,14 @@ matrix_col_row: name: matrix_col_row zone: columns: - col: + col: &ref_0 rows: {} key: {} name: col rows: row: {} name: matrix - col: - rows: {} - key: {} - name: col + col: *ref_0 row: row bind: - 0 diff --git a/test/fixtures/big.yaml b/test/fixtures/big.yaml index 843cf13..9d6d2e7 100644 --- a/test/fixtures/big.yaml +++ b/test/fixtures/big.yaml @@ -1,6 +1,3 @@ -meta: - author: MrZealot - version: v3.14 units: a: 28 + u points.zones.matrix: diff --git a/test/fixtures/minimal_kle.json b/test/fixtures/minimal_kle.json deleted file mode 100644 index 0e60b85..0000000 --- a/test/fixtures/minimal_kle.json +++ /dev/null @@ -1,15 +0,0 @@ -[ - [ - "0_0", - "0_1" - ], - [ - "1_0", - "1_1" - ], - [ - "", - "" - ] -] - diff --git a/test/footprints/choc.yaml b/test/footprints/choc.yaml index 016eeae..2c3e39e 100644 --- a/test/footprints/choc.yaml +++ b/test/footprints/choc.yaml @@ -38,14 +38,4 @@ pcbs.pcb.footprints: to: to reverse: true hotswap: true - adjust.shift: [200, 0] - - # all of keycaps, reverse and hotswap - - what: choc - params: - from: from - to: to - keycaps: true - reverse: true - hotswap: true - adjust.shift: [250, 0] + adjust.shift: [200, 0] \ No newline at end of file diff --git a/test/footprints/choc___pcbs_pcb.kicad_pcb b/test/footprints/choc___pcbs_pcb.kicad_pcb index 43736fd..3fabc5e 100644 --- a/test/footprints/choc___pcbs_pcb.kicad_pcb +++ b/test/footprints/choc___pcbs_pcb.kicad_pcb @@ -284,58 +284,6 @@ - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 0) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 1 "from")) - (pad 2 smd rect (at 8.275 -3.75 0) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "to")) - - - - (pad "" np_thru_hole circle (at -5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at 3.275 -5.95 0) (size 2.6 2.6) (layers F.Cu F.Paste F.Mask) (net 1 "from")) - (pad 2 smd rect (at -8.275 -3.75 0) (size 2.6 2.6) (layers F.Cu F.Paste F.Mask) (net 2 "to")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 250 0 0) - - - (fp_text reference "S6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) diff --git a/test/footprints/chocmini.yaml b/test/footprints/chocmini.yaml index 5312a0d..2cadb43 100644 --- a/test/footprints/chocmini.yaml +++ b/test/footprints/chocmini.yaml @@ -22,12 +22,3 @@ pcbs.pcb.footprints: to: to reverse: true adjust.shift: [100, 0] - - # reverse with keycap visualization - - what: chocmini - params: - from: from - to: to - keycaps: true - reverse: true - adjust.shift: [150, 0] diff --git a/test/footprints/chocmini___pcbs_pcb.kicad_pcb b/test/footprints/chocmini___pcbs_pcb.kicad_pcb index 784556a..650ceb0 100644 --- a/test/footprints/chocmini___pcbs_pcb.kicad_pcb +++ b/test/footprints/chocmini___pcbs_pcb.kicad_pcb @@ -267,67 +267,6 @@ ) - - - (module lib:Kailh_PG1232 (layer F.Cu) (tedit 5E1ADAC2) - (at 150 0 0) - - - (fp_text reference "S4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value Kailh_PG1232 (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - - - (fp_line (start -7.25 -6.75) (end -6.25 -6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7.25 -6.75) (end -7.25 -5.75) (layer Dwgs.User) (width 0.15)) - - (fp_line (start -7.25 6.75) (end -6.25 6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7.25 6.75) (end -7.25 5.75) (layer Dwgs.User) (width 0.15)) - - (fp_line (start 7.25 -6.75) (end 6.25 -6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7.25 -6.75) (end 7.25 -5.75) (layer Dwgs.User) (width 0.15)) - - (fp_line (start 7.25 6.75) (end 6.25 6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7.25 6.75) (end 7.25 5.75) (layer Dwgs.User) (width 0.15)) - - - (fp_line (start 2.8 -5.35) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) - (fp_line (start -2.8 -3.2) (end 2.8 -3.2) (layer Dwgs.User) (width 0.15)) - (fp_line (start 2.8 -3.2) (end 2.8 -5.35) (layer Dwgs.User) (width 0.15)) - (fp_line (start -2.8 -3.2) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) - - - (fp_line (start 2.25 2.6) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -2.25 2.6) (end -5.8 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start 2.25 3.6) (end 2.25 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -2.25 3.6) (end 2.25 3.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -2.25 2.6) (end -2.25 3.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -5.8 2.6) (end -5.8 -2.95) (layer Edge.Cuts) (width 0.12)) - (fp_line (start 5.8 -2.95) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -5.8 -2.95) (end 5.8 -2.95) (layer Edge.Cuts) (width 0.12)) - - - (pad 3 thru_hole circle (at 5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) - (pad 4 thru_hole circle (at -5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad 1 thru_hole circle (at -4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 1 "from") (clearance 0.2)) - (pad 2 thru_hole circle (at 2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 2 "to") (clearance 0.2)) - - - - (pad 1 thru_hole circle (at 4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 1 "from") (clearance 0.2)) - (pad 2 thru_hole circle (at -2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 2 "to") (clearance 0.2)) - ) - - ) diff --git a/test/footprints/mx.yaml b/test/footprints/mx.yaml index d1f200b..ee4a5dc 100644 --- a/test/footprints/mx.yaml +++ b/test/footprints/mx.yaml @@ -38,14 +38,4 @@ pcbs.pcb.footprints: to: to reverse: true hotswap: true - adjust.shift: [200, 0] - - # all of keycaps, reverse and hotswap - - what: mx - params: - from: from - to: to - keycaps: true - reverse: true - hotswap: true - adjust.shift: [250, 0] + adjust.shift: [200, 0] \ No newline at end of file diff --git a/test/footprints/mx___pcbs_pcb.kicad_pcb b/test/footprints/mx___pcbs_pcb.kicad_pcb index 01d7823..dbb3d65 100644 --- a/test/footprints/mx___pcbs_pcb.kicad_pcb +++ b/test/footprints/mx___pcbs_pcb.kicad_pcb @@ -284,58 +284,6 @@ - (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -7.085 -2.54 0) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) (net 1 "from")) - (pad 2 smd rect (at 5.842 -5.08 0) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) (net 2 "to")) - - - - (pad "" np_thru_hole circle (at -2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at 7.085 -2.54 0) (size 2.55 2.5) (layers F.Cu F.Paste F.Mask) (net 1 "from")) - (pad 2 smd rect (at -5.842 -5.08 0) (size 2.55 2.5) (layers F.Cu F.Paste F.Mask) (net 2 "to")) - ) - - - - (module MX (layer F.Cu) (tedit 5DD4F656) - (at 250 0 0) - - - (fp_text reference "S6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) diff --git a/test/footprints/pad.yaml b/test/footprints/pad.yaml index 43ed2d9..3d05355 100644 --- a/test/footprints/pad.yaml +++ b/test/footprints/pad.yaml @@ -25,17 +25,3 @@ pcbs.pcb.footprints: align: down mirrored: true adjust.shift: [50, 50] - - - what: pad - params: - net: net - align: right - mirrored: true - adjust.shift: [100, 0] - - - what: pad - params: - net: net - align: left - mirrored: true - adjust.shift: [100, 50] diff --git a/test/footprints/pad___pcbs_pcb.kicad_pcb b/test/footprints/pad___pcbs_pcb.kicad_pcb index 997b2f6..d34827d 100644 --- a/test/footprints/pad___pcbs_pcb.kicad_pcb +++ b/test/footprints/pad___pcbs_pcb.kicad_pcb @@ -181,44 +181,6 @@ ) - - - (module SMDPad (layer F.Cu) (tedit 5B24D78E) - - (at 100 0 0) - - - (fp_text reference "PAD5" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) (net 1 "net")) - - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers B.Cu B.Paste B.Mask) (net 1 "net")) - - - ) - - - - - (module SMDPad (layer F.Cu) (tedit 5B24D78E) - - (at 100 -50 0) - - - (fp_text reference "PAD6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) (net 1 "net")) - - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers B.Cu B.Paste B.Mask) (net 1 "net")) - - - ) - - ) diff --git a/test/footprints/rest.yaml b/test/footprints/rest.yaml index 7e24468..769682a 100644 --- a/test/footprints/rest.yaml +++ b/test/footprints/rest.yaml @@ -64,22 +64,4 @@ pcbs.pcb.footprints: - what: via params: net: net - adjust.shift: [0, 150] - - - what: scrollwheel - params: - from: from - to: to - A: A - B: B - C: C - D: D - reverse: true - adjust.shift: [50, 150] - - - what: slider - params: - from: from - to: to - side: B - adjust.shift: [100, 150] + adjust.shift: [0, 150] \ No newline at end of file diff --git a/test/footprints/rest___pcbs_pcb.kicad_pcb b/test/footprints/rest___pcbs_pcb.kicad_pcb index 506f4fd..db1fbf7 100644 --- a/test/footprints/rest___pcbs_pcb.kicad_pcb +++ b/test/footprints/rest___pcbs_pcb.kicad_pcb @@ -424,104 +424,6 @@ (pad 1 thru_hole circle (at 0 0) (size 0.6 0.6) (drill 0.3) (layers *.Cu) (zone_connect 2) (net 15 "net")) ) - - - (module RollerEncoder_Panasonic_EVQWGD001 (layer F.Cu) (tedit 6040A10C) - (at 50 -150 0) - (fp_text reference REF** (at 0 0 0) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - (fp_text value RollerEncoder_Panasonic_EVQWGD001 (at -0.1 9 0) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - - - (fp_line (start -8.4 -6.4) (end 8.4 -6.4) (layer Dwgs.User) (width 0.12)) - (fp_line (start 8.4 -6.4) (end 8.4 7.4) (layer Dwgs.User) (width 0.12)) - (fp_line (start 8.4 7.4) (end -8.4 7.4) (layer Dwgs.User) (width 0.12)) - (fp_line (start -8.4 7.4) (end -8.4 -6.4) (layer Dwgs.User) (width 0.12)) - - - - (fp_line (start 9.8 7.3) (end 9.8 -6.3) (layer Edge.Cuts) (width 0.15)) - (fp_line (start 7.4 -6.3) (end 7.4 7.3) (layer Edge.Cuts) (width 0.15)) - (fp_line (start 9.5 -6.6) (end 7.7 -6.6) (layer Edge.Cuts) (width 0.15)) - (fp_line (start 7.7 7.6) (end 9.5 7.6) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start 7.7 7.3) (end 7.4 7.3) (angle -90) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start 9.5 7.3) (end 9.5 7.6) (angle -90) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start 7.7 -6.3) (end 7.7 -6.6) (angle -90) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start 9.5 -6.3) (end 9.8 -6.3) (angle -90) (layer Edge.Cuts) (width 0.15)) - - - (pad S1 thru_hole circle (at -6.85 -6.2 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 1 "from")) - (pad S2 thru_hole circle (at -5 -6.2 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 2 "to")) - (pad A thru_hole circle (at -5.625 -3.81 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 11 "A")) - (pad B thru_hole circle (at -5.625 -1.27 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 12 "B")) - (pad C thru_hole circle (at -5.625 1.27 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 13 "C")) - (pad D thru_hole circle (at -5.625 3.81 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 14 "D")) - - - (pad "" np_thru_hole circle (at -5.625 6.3 0) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) - - - - (fp_line (start -9.8 7.3) (end -9.8 -6.3) (layer Edge.Cuts) (width 0.15)) - (fp_line (start -7.4 -6.3) (end -7.4 7.3) (layer Edge.Cuts) (width 0.15)) - (fp_line (start -9.5 -6.6) (end -7.7 -6.6) (layer Edge.Cuts) (width 0.15)) - (fp_line (start -7.7 7.6) (end -9.5 7.6) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start -7.7 7.3) (end -7.4 7.3) (angle 90) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start -9.5 7.3) (end -9.5 7.6) (angle 90) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start -7.7 -6.3) (end -7.7 -6.6) (angle 90) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start -9.5 -6.3) (end -9.8 -6.3) (angle 90) (layer Edge.Cuts) (width 0.15)) - - - (pad S1 thru_hole circle (at 6.85 -6.2 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 1 "from")) - (pad S2 thru_hole circle (at 5 -6.2 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 2 "to")) - (pad A thru_hole circle (at 5.625 -3.81 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 11 "A")) - (pad B thru_hole circle (at 5.625 -1.27 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 12 "B")) - (pad C thru_hole circle (at 5.625 1.27 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 13 "C")) - (pad D thru_hole circle (at 5.625 3.81 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 14 "D")) - - - (pad "" np_thru_hole circle (at 5.625 6.3 0) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) - ) - - - - (module E73:SPDT_C128955 (layer F.Cu) (tstamp 5BF2CC3C) - - (at 100 -150 0) - - - (fp_text reference "T2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 1.95 -1.35) (end -1.95 -1.35) (layer B.SilkS) (width 0.15)) - (fp_line (start 0 -1.35) (end -3.3 -1.35) (layer B.SilkS) (width 0.15)) - (fp_line (start -3.3 -1.35) (end -3.3 1.5) (layer B.SilkS) (width 0.15)) - (fp_line (start -3.3 1.5) (end 3.3 1.5) (layer B.SilkS) (width 0.15)) - (fp_line (start 3.3 1.5) (end 3.3 -1.35) (layer B.SilkS) (width 0.15)) - (fp_line (start 0 -1.35) (end 3.3 -1.35) (layer B.SilkS) (width 0.15)) - - - (fp_line (start -1.95 -3.85) (end 1.95 -3.85) (layer Dwgs.User) (width 0.15)) - (fp_line (start 1.95 -3.85) (end 1.95 -1.35) (layer Dwgs.User) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 -3.85) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -2.25 2.075 0) (size 0.9 1.25) (layers B.Cu B.Paste B.Mask) (net 1 "from")) - (pad 2 smd rect (at 0.75 2.075 0) (size 0.9 1.25) (layers B.Cu B.Paste B.Mask) (net 2 "to")) - (pad 3 smd rect (at 2.25 2.075 0) (size 0.9 1.25) (layers B.Cu B.Paste B.Mask)) - - - (pad "" smd rect (at 3.7 -1.1 0) (size 0.9 0.9) (layers B.Cu B.Paste B.Mask)) - (pad "" smd rect (at 3.7 1.1 0) (size 0.9 0.9) (layers B.Cu B.Paste B.Mask)) - (pad "" smd rect (at -3.7 1.1 0) (size 0.9 0.9) (layers B.Cu B.Paste B.Mask)) - (pad "" smd rect (at -3.7 -1.1 0) (size 0.9 0.9) (layers B.Cu B.Paste B.Mask)) - ) - - ) diff --git a/test/helpers/mock_footprints.js b/test/helpers/mock_footprints.js index 14edaf3..749d26c 100644 --- a/test/helpers/mock_footprints.js +++ b/test/helpers/mock_footprints.js @@ -3,7 +3,6 @@ exports.inject = (ergogen) => { params: { designator: 'T', side: 'F', - width: 0.25, P1: {type: 'net', value: 'P1'} }, body: p => { @@ -13,15 +12,15 @@ exports.inject = (ergogen) => { ${p.at /* parametric position */} - (pad 1 smd rect (at ${p.isxy(0, 0)} ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.P1} (solder_mask_margin 0.2)) + (pad 1 smd rect (at ${p.ixy(0, 0)} ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + ${p.P1.str} (solder_mask_margin 0.2)) - (pad 2 smd rect (at ${p.isxy(5, 5)} ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.P1} (solder_mask_margin 0.2)) + (pad 2 smd rect (at ${p.ixy(5, 5)} ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + ${p.P1.str} (solder_mask_margin 0.2)) ) - (segment (start ${p.esxy(0, 0)}) (end ${p.esxy(5, 5)}) (width ${p.width}) (layer ${p.side}.Cu) (net ${p.P1.index})) + (segment (start ${p.sxy(0, 0)}) (end ${p.sxy(5, 5)}) (width 0.25) (layer ${p.side}.Cu) (net ${p.P1.index})) ` } @@ -40,11 +39,11 @@ exports.inject = (ergogen) => { ${p.at /* parametric position */} - (pad 1 smd rect (at 0 0 ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.P1} (solder_mask_margin 0.2)) + (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + ${p.P1.str} (solder_mask_margin 0.2)) - (pad 2 smd rect (at ${p.iaxy(5, 5)} ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.P1} (solder_mask_margin 0.2)) + (pad 2 smd rect (at 5 5 ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + ${p.P1.str} (solder_mask_margin 0.2)) ) @@ -52,7 +51,7 @@ exports.inject = (ergogen) => { (connect_pads (clearance 0.508)) (min_thickness 0.254) (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) - (polygon (pts (xy ${p.eaxy(5, 5)}) (xy ${p.eaxy(5, -5)}) (xy ${p.eaxy(-5, -5)}) (xy ${p.eaxy(-5, 5)}))) + (polygon (pts (xy ${p.xy(5, 5)}) (xy ${p.xy(5, -5)}) (xy ${p.xy(-5, -5)}) (xy ${p.xy(-5, 5)}))) ) ` @@ -71,14 +70,14 @@ exports.inject = (ergogen) => { ${p.at /* parametric position */} - (pad 1 smd rect (at 0 0 ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.local_net('1')} (solder_mask_margin 0.2)) + (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + ${p.local_net('1').str} (solder_mask_margin 0.2)) - (pad 1 smd rect (at 0 0 ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.local_net('2')} (solder_mask_margin 0.2)) + (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + ${p.local_net('2').str} (solder_mask_margin 0.2)) - (pad 1 smd rect (at 0 0 ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.local_net('3')} (solder_mask_margin 0.2)) + (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + ${p.local_net('3').str} (solder_mask_margin 0.2)) ) @@ -107,33 +106,7 @@ exports.inject = (ergogen) => { } }) - ergogen.inject('footprint', 'arrobj_test', { - params: { - designator: 'T', - side: 'F', - start: {x: 0, y: 0}, - end: [[1, 0], [0, 1]] - }, - body: p => { - lines = '' - for (const item of p.end) { - lines += `(fp_line (start ${p.start.x} ${p.start.y}) (end ${item[0]} ${item[1]}) (layer Dwgs.User) (width 0.05))\n` - } - return ` - - (module arrobj_test (layer ${p.side}.Cu) (tedit 5CF31DEF) - - ${p.at /* parametric position */} - - ${lines} - - ) - - ` - } - }) - - ergogen.inject('references_test', { + ergogen.inject('footprint', 'references_test', { params: {}, body: p => { return `references ${p.ref_hide ? 'hidden' : 'shown'}` diff --git a/test/helpers/register.js b/test/helpers/register.js index 36a7e79..8007d73 100644 --- a/test/helpers/register.js +++ b/test/helpers/register.js @@ -1,12 +1,4 @@ global.chai = require('chai') global.chai.use(require('chai-as-promised')) global.expect = global.chai.expect -global.should = global.chai.should() -global.sinon = require('sinon') - -// Restore the default sandbox after every test -exports.mochaHooks = { - afterEach() { - sinon.restore() - } -} \ No newline at end of file +global.should = global.chai.should() \ No newline at end of file diff --git a/test/index.js b/test/index.js index fc0444b..e1fc995 100644 --- a/test/index.js +++ b/test/index.js @@ -9,15 +9,7 @@ require('./helpers/mock_footprints').inject(ergogen) let what = process.env.npm_config_what const dump = process.env.npm_config_dump -const lineends = /(?:\r\n|\r|\n)/g -const handle_slash = (() => { - if (path.sep == '\\') { - return str => str.replace(/\\/g,'/') - } else { - return str => str - } -})() // Unit tests @@ -25,7 +17,7 @@ const handle_slash = (() => { // the --dump switch does nothing here what = what ? what.split(',') : false -for (const unit of glob.sync(handle_slash(path.join(__dirname, 'unit', '*.js')))) { +for (const unit of glob.sync(path.join(__dirname, 'unit', '*.js'))) { const base = path.basename(unit, '.js') if (what && !what.includes(base)) continue require(`./unit/${base}.js`) @@ -38,19 +30,6 @@ for (const unit of glob.sync(handle_slash(path.join(__dirname, 'unit', '*.js'))) // as well as individual tests using slash-notation (like `points/default`) // the --dump switch can output the new results, overriding the old reference -const dump_structure = (obj, depth=-1, prefix='', breadcrumbs=[]) => { - if (a.type(obj)() != 'object') { - console.log(prefix + breadcrumbs.join('_')) - return - } - if (depth == 0) return - for (const [key, val] of Object.entries(obj)) { - breadcrumbs.push(key) - dump_structure(val, depth-1, prefix, breadcrumbs) - breadcrumbs.pop() - } -} - const cap = s => s.charAt(0).toUpperCase() + s.slice(1) const test = function(input_path) { @@ -58,52 +37,27 @@ const test = function(input_path) { this.slow(120000) title = path.basename(input_path, '.yaml').split('_').join(' ') it(title, async function() { - const input = yaml.load(fs.readFileSync(input_path).toString()) - const base = path.join(path.dirname(input_path), path.basename(input_path, '.yaml')) - const references = glob.sync(handle_slash(base) + '___*') - - // handle deliberately wrong inputs - const exception = base + '___EXCEPTION.txt' - if (fs.existsSync(exception)) { - const exception_snippet = fs.readFileSync(exception).toString() - return await ergogen.process(input, true).should.be.rejectedWith(exception_snippet) - } - const output = await ergogen.process(input, true) // compare output vs. reference - if (references.length) { - for (const expected_path of references) { - let expected = fs.readFileSync(expected_path).toString() - if (expected_path.endsWith('.json')) { - expected = JSON.parse(expected) - } - const comp_path = expected_path.split('___')[1].split('.')[0].split('_').join('.') - const output_part = u.deep(output, comp_path) - if (dump) { - if (a.type(output_part)() == 'string') { - fs.writeFileSync(expected_path, output_part) - } else { - fs.writeJSONSync(expected_path, output_part, {spaces: 4}) - } - } else { - if (a.type(output_part)() == 'string') { - const parse_out = output_part.replace(lineends, '\n') - const parse_exp = expected.replace(lineends, '\n') - parse_out.should.deep.equal(parse_exp) - } else { - // JSON can hide negative zeroes, for example, so we canonical-ize first - const canonical_part = JSON.parse(JSON.stringify(output_part)) - canonical_part.should.deep.equal(expected) - } - } + const base = path.join(path.dirname(input_path), path.basename(input_path, '.yaml')) + for (const expected_path of glob.sync(base + '___*')) { + let expected = fs.readFileSync(expected_path).toString() + if (expected_path.endsWith('.json')) { + expected = JSON.parse(expected) + } + const comp_path = expected_path.split('___')[1].split('.')[0].split('_').join('.') + const output_part = u.deep(output, comp_path) + if (dump) { + if (a.type(output_part)() == 'string') { + fs.writeFileSync(expected_path, output_part) + } else { + fs.writeJSONSync(expected_path, output_part, {spaces: 4}) + } + } else { + output_part.should.deep.equal(expected) } - - // explicit dump-ing above only works, if there are already files with the right name - // if there aren't, dump now outputs a list of candidates that could be referenced - } else if (dump) { - dump_structure(output, 3, base + '___') } }) } @@ -120,7 +74,7 @@ if (what) { regex = path.join(__dirname, w, '*.yaml') } describe(title, function() { - for (const i of glob.sync(handle_slash(regex))) { + for (const i of glob.sync(regex)) { test.call(this, i) } }) @@ -128,7 +82,7 @@ if (what) { } else { for (const part of ['points', 'outlines', 'cases', 'pcbs', 'footprints']) { describe(cap(part), function() { - for (const i of glob.sync(handle_slash(path.join(__dirname, part, '*.yaml')))) { + for (const i of glob.sync(path.join(__dirname, part, '*.yaml'))) { test.call(this, i) } }) @@ -155,7 +109,7 @@ for (let w of cli_what) { describe('CLI', function() { this.timeout(120000) this.slow(120000) - for (const t of glob.sync(handle_slash(path.join(__dirname, w)))) { + for (const t of glob.sync(path.join(__dirname, w))) { it(path.basename(t).split('_').join(' '), function() { const command = read(t, 'command') const output_path = exists(t, 'path') ? read(t, 'path') : 'output' @@ -179,19 +133,14 @@ for (let w of cli_what) { ref_path = path.resolve(path.join(t, read(ref_path).trim())) } const comp_res = dircompare.compareSync(output_path, ref_path, { - compareContent: true, - ignoreLineEnding: true, - compareFileSync: dircompare.fileCompareHandlers.lineBasedFileCompare.compareSync, - compareFileAsync: dircompare.fileCompareHandlers.lineBasedFileCompare.compareAsync + compareContent: true }) if (dump) { fs.moveSync(output_path, ref_path, {overwrite: true}) } else { fs.removeSync(output_path) } - const parse_act_log = actual_log.replace(lineends, '\n') - const parse_ref_log = ref_log.replace(lineends, '\n') - parse_act_log.should.equal(parse_ref_log) + actual_log.should.equal(ref_log) comp_res.same.should.be.true // deliberately incorrect execution } else { @@ -213,4 +162,4 @@ for (let w of cli_what) { }) } }) -} +} \ No newline at end of file diff --git a/test/outlines/binding.yaml b/test/outlines/binding.yaml deleted file mode 100644 index 6fba506..0000000 --- a/test/outlines/binding.yaml +++ /dev/null @@ -1,18 +0,0 @@ -points: - zones: - matrix: - mirror: - ref: matrix_only_first - distance: 30 - columns: - only.rows: - first.bind: 0 - second.bind: [0,10,0,10] - third.bind: [10,0,10,0] - fourth.bind: [u, u/2, u/3, u/4] -outlines: - bound: - - what: rectangle - where: true - size: 20 - bound: true diff --git a/test/outlines/binding___outlines_bound_dxf.dxf b/test/outlines/binding___outlines_bound_dxf.dxf deleted file mode 100644 index 433dd5d..0000000 --- a/test/outlines/binding___outlines_bound_dxf.dxf +++ /dev/null @@ -1,338 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --10 -20 --10 -11 -10 -21 --10 -0 -LINE -8 -0 -10 -10 -20 --10 -11 -10 -21 -9 -0 -LINE -8 -0 -10 --10 -20 -9 -11 --10 -21 --10 -0 -LINE -8 -0 -10 -10 -20 -29 -11 -20 -21 -29 -0 -LINE -8 -0 -10 -20 -20 -9 -11 -10 -21 -9 -0 -LINE -8 -0 -10 --10 -20 -9 -11 --20 -21 -9 -0 -LINE -8 -0 -10 --20 -20 -9 -11 --20 -21 -29 -0 -LINE -8 -0 -10 --20 -20 -29 -11 --10 -21 -29 -0 -LINE -8 -0 -10 -10 -20 -29 -11 -10 -21 -40.6666667 -0 -LINE -8 -0 -10 --10 -20 -29 -11 --10 -21 -40.6666667 -0 -LINE -8 -0 -10 --14.75 -20 -86 -11 -44.75 -21 -86 -0 -LINE -8 -0 -10 -10 -20 -40.6666667 -11 -20 -21 -40.6666667 -0 -LINE -8 -0 -10 --10 -20 -40.6666667 -11 --14.75 -21 -40.6666667 -0 -LINE -8 -0 -10 --14.75 -20 -40.6666667 -11 --14.75 -21 -86 -0 -LINE -8 -0 -10 -20 -20 --10 -11 -40 -21 --10 -0 -LINE -8 -0 -10 -40 -20 --10 -11 -40 -21 -9 -0 -LINE -8 -0 -10 -20 -20 -9 -11 -20 -21 --10 -0 -LINE -8 -0 -10 -40 -20 -29 -11 -50 -21 -29 -0 -LINE -8 -0 -10 -50 -20 -9 -11 -50 -21 -29 -0 -LINE -8 -0 -10 -50 -20 -9 -11 -40 -21 -9 -0 -LINE -8 -0 -10 -40 -20 -29 -11 -40 -21 -40.6666667 -0 -LINE -8 -0 -10 -20 -20 -29 -11 -20 -21 -40.6666667 -0 -LINE -8 -0 -10 -44.75 -20 -40.6666667 -11 -44.75 -21 -86 -0 -LINE -8 -0 -10 -44.75 -20 -40.6666667 -11 -40 -21 -40.6666667 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/outlines/expand.yaml b/test/outlines/expand.yaml deleted file mode 100644 index 160f737..0000000 --- a/test/outlines/expand.yaml +++ /dev/null @@ -1,46 +0,0 @@ -points: - zones: - matrix: {} -outlines: - base: - - what: rectangle - where: true - size: 20 - bound: false - sh_beveled: - - what: outline - name: base - expand: "5]" - sh_round: - - what: outline - name: base - expand: "6)" - sh_pointy: - - what: outline - name: base - expand: "7>" - shorthand-combo: - - "sh_pointy" - - "-sh_round" - - "+sh_beveled" - - "-base" - jnt_beveled: - - what: outline - name: base - expand: 8 - joints: beveled - jnt_round: - - what: outline - name: base - expand: 9 - joints: round - jnt_pointy: - - what: outline - name: base - expand: 10 - joints: pointy - joint-name-combo: - - "jnt_pointy" - - "-jnt_round" - - "+jnt_beveled" - - "-base" diff --git a/test/outlines/expand___outlines_joint-name-combo_dxf.dxf b/test/outlines/expand___outlines_joint-name-combo_dxf.dxf deleted file mode 100644 index f8b2a82..0000000 --- a/test/outlines/expand___outlines_joint-name-combo_dxf.dxf +++ /dev/null @@ -1,346 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --20 -20 --20 -11 -20 -21 --20 -0 -LINE -8 -0 -10 -20 -20 --20 -11 -20 -21 -20 -0 -LINE -8 -0 -10 --20 -20 -20 -11 -20 -21 -20 -0 -LINE -8 -0 -10 --20 -20 --20 -11 --20 -21 -20 -0 -LINE -8 -0 -10 --10 -20 --19 -11 -10 -21 --19 -0 -ARC -8 -0 -10 -10 -20 --10 -40 -9 -50 -270 -51 -360 -0 -LINE -8 -0 -10 -19 -20 --10 -11 -19 -21 -10 -0 -ARC -8 -0 -10 -10 -20 -10 -40 -9 -50 -0 -51 -90 -0 -LINE -8 -0 -10 -10 -20 -19 -11 --10 -21 -19 -0 -ARC -8 -0 -10 --10 -20 -10 -40 -9 -50 -90 -51 -180 -0 -LINE -8 -0 -10 --19 -20 -10 -11 --19 -21 --10 -0 -ARC -8 -0 -10 --10 -20 --10 -40 -9 -50 -180 -51 -270 -0 -LINE -8 -0 -10 --13.3137085 -20 --18 -11 -13.3137085 -21 --18 -0 -LINE -8 -0 -10 -13.3137085 -20 --18 -11 -18 -21 --13.3137085 -0 -LINE -8 -0 -10 -18 -20 --13.3137085 -11 -18 -21 -13.3137085 -0 -LINE -8 -0 -10 -13.3137085 -20 -18 -11 -18 -21 -13.3137085 -0 -LINE -8 -0 -10 --13.3137085 -20 -18 -11 -13.3137085 -21 -18 -0 -LINE -8 -0 -10 --18 -20 -13.3137085 -11 --13.3137085 -21 -18 -0 -LINE -8 -0 -10 --18 -20 --13.3137085 -11 --18 -21 -13.3137085 -0 -LINE -8 -0 -10 --18 -20 --13.3137085 -11 --13.3137085 -21 --18 -0 -LINE -8 -0 -10 --10 -20 --10 -11 -10 -21 --10 -0 -LINE -8 -0 -10 -10 -20 --10 -11 -10 -21 -10 -0 -LINE -8 -0 -10 -10 -20 -10 -11 --10 -21 -10 -0 -LINE -8 -0 -10 --10 -20 -10 -11 --10 -21 --10 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/outlines/expand___outlines_shorthand-combo_dxf.dxf b/test/outlines/expand___outlines_shorthand-combo_dxf.dxf deleted file mode 100644 index 6a9b92d..0000000 --- a/test/outlines/expand___outlines_shorthand-combo_dxf.dxf +++ /dev/null @@ -1,346 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --17 -20 --17 -11 -17 -21 --17 -0 -LINE -8 -0 -10 -17 -20 --17 -11 -17 -21 -17 -0 -LINE -8 -0 -10 --17 -20 -17 -11 -17 -21 -17 -0 -LINE -8 -0 -10 --17 -20 --17 -11 --17 -21 -17 -0 -LINE -8 -0 -10 --10 -20 --16 -11 -10 -21 --16 -0 -ARC -8 -0 -10 -10 -20 --10 -40 -6 -50 -270 -51 -360 -0 -LINE -8 -0 -10 -16 -20 --10 -11 -16 -21 -10 -0 -ARC -8 -0 -10 -10 -20 -10 -40 -6 -50 -0 -51 -90 -0 -LINE -8 -0 -10 -10 -20 -16 -11 --10 -21 -16 -0 -ARC -8 -0 -10 --10 -20 -10 -40 -6 -50 -90 -51 -180 -0 -LINE -8 -0 -10 --16 -20 -10 -11 --16 -21 --10 -0 -ARC -8 -0 -10 --10 -20 --10 -40 -6 -50 -180 -51 -270 -0 -LINE -8 -0 -10 --12.0710678 -20 --15 -11 -12.0710678 -21 --15 -0 -LINE -8 -0 -10 -12.0710678 -20 --15 -11 -15 -21 --12.0710678 -0 -LINE -8 -0 -10 -15 -20 --12.0710678 -11 -15 -21 -12.0710678 -0 -LINE -8 -0 -10 -12.0710678 -20 -15 -11 -15 -21 -12.0710678 -0 -LINE -8 -0 -10 --12.0710678 -20 -15 -11 -12.0710678 -21 -15 -0 -LINE -8 -0 -10 --15 -20 -12.0710678 -11 --12.0710678 -21 -15 -0 -LINE -8 -0 -10 --15 -20 --12.0710678 -11 --15 -21 -12.0710678 -0 -LINE -8 -0 -10 --15 -20 --12.0710678 -11 --12.0710678 -21 --15 -0 -LINE -8 -0 -10 --10 -20 --10 -11 -10 -21 --10 -0 -LINE -8 -0 -10 -10 -20 --10 -11 -10 -21 -10 -0 -LINE -8 -0 -10 -10 -20 -10 -11 --10 -21 -10 -0 -LINE -8 -0 -10 --10 -20 -10 -11 --10 -21 --10 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/outlines/outlines.yaml b/test/outlines/outlines.yaml index 99a70b6..351fff7 100644 --- a/test/outlines/outlines.yaml +++ b/test/outlines/outlines.yaml @@ -16,22 +16,11 @@ outlines: where: true size: cy bound: true - adjust: - - what: circle - where: true - radius: 2 - # adjust works, and it can use shape-specific units - adjust.shift: [0, r] fillet: - - name: base + - what: outline + name: base fillet: 2 scale: - - name: fillet - scale: 0.5 - combination: - - "base" - - "-scale" - - "~fillet" - expand: - - name: combination - expand: 1 + - what: outline + name: fillet + scale: 0.5 \ No newline at end of file diff --git a/test/outlines/outlines___outlines_adjust_dxf.dxf b/test/outlines/outlines___outlines_adjust_dxf.dxf deleted file mode 100644 index 5a902b7..0000000 --- a/test/outlines/outlines___outlines_adjust_dxf.dxf +++ /dev/null @@ -1,90 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -CIRCLE -8 -0 -10 -0 -20 -2 -40 -2 -0 -CIRCLE -8 -0 -10 -0 -20 -19 -40 -2 -0 -CIRCLE -8 -0 -10 -19 -20 -2 -40 -2 -0 -CIRCLE -8 -0 -10 -19 -20 -19 -40 -2 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/outlines/outlines___outlines_combination_dxf.dxf b/test/outlines/outlines___outlines_combination_dxf.dxf deleted file mode 100644 index 557f735..0000000 --- a/test/outlines/outlines___outlines_combination_dxf.dxf +++ /dev/null @@ -1,514 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 -8.6 -20 --6.6 -11 -8.6 -21 --4.3 -0 -LINE -8 -0 -10 -8.6 -20 -12.8 -11 -8.6 -21 -23.6 -0 -LINE -8 -0 -10 --6.6 -20 --8.6 -11 -6.6 -21 --8.6 -0 -LINE -8 -0 -10 --8.6 -20 --6.6 -11 --8.6 -21 -23.6 -0 -LINE -8 -0 -10 --6.6 -20 -25.6 -11 -6.6 -21 -25.6 -0 -LINE -8 -0 -10 -27.6 -20 --6.6 -11 -27.6 -21 -23.6 -0 -LINE -8 -0 -10 -12.4 -20 --8.6 -11 -25.6 -21 --8.6 -0 -LINE -8 -0 -10 -10.4 -20 --6.6 -11 -10.4 -21 --4.3 -0 -LINE -8 -0 -10 -10.4 -20 -12.8 -11 -10.4 -21 -23.6 -0 -LINE -8 -0 -10 -12.4 -20 -25.6 -11 -25.6 -21 -25.6 -0 -LINE -8 -0 -10 -4.3 -20 --3.3 -11 -4.3 -21 -11.8 -0 -LINE -8 -0 -10 --3.3 -20 --4.3 -11 -3.3 -21 --4.3 -0 -LINE -8 -0 -10 --4.3 -20 --3.3 -11 --4.3 -21 -11.8 -0 -LINE -8 -0 -10 --3.3 -20 -12.8 -11 -3.3 -21 -12.8 -0 -LINE -8 -0 -10 -13.8 -20 --3.3 -11 -13.8 -21 -11.8 -0 -LINE -8 -0 -10 -6.2 -20 --4.3 -11 -8.6 -21 --4.3 -0 -LINE -8 -0 -10 -10.4 -20 --4.3 -11 -12.8 -21 --4.3 -0 -LINE -8 -0 -10 -5.2 -20 --3.3 -11 -5.2 -21 -11.8 -0 -LINE -8 -0 -10 -6.2 -20 -12.8 -11 -8.6 -21 -12.8 -0 -LINE -8 -0 -10 -10.4 -20 -12.8 -11 -12.8 -21 -12.8 -0 -ARC -8 -0 -10 -3.3 -20 -11.8 -40 -1 -50 -0 -51 -90 -0 -ARC -8 -0 -10 --3.3 -20 -11.8 -40 -1 -50 -90 -51 -180 -0 -ARC -8 -0 -10 --3.3 -20 --3.3 -40 -1 -50 -180 -51 -270 -0 -ARC -8 -0 -10 -3.3 -20 --3.3 -40 -1 -50 -270 -51 -0 -0 -ARC -8 -0 -10 -12.8 -20 -11.8 -40 -1 -50 -0 -51 -90 -0 -ARC -8 -0 -10 -6.2 -20 -11.8 -40 -1 -50 -90 -51 -180 -0 -ARC -8 -0 -10 -6.2 -20 --3.3 -40 -1 -50 -180 -51 -270 -0 -ARC -8 -0 -10 -12.8 -20 --3.3 -40 -1 -50 -270 -51 -0 -0 -ARC -8 -0 -10 -6.6 -20 -23.6 -40 -2 -50 -0 -51 -90 -0 -ARC -8 -0 -10 --6.6 -20 -23.6 -40 -2 -50 -90 -51 -180 -0 -ARC -8 -0 -10 --6.6 -20 --6.6 -40 -2 -50 -180 -51 -270 -0 -ARC -8 -0 -10 -6.6 -20 --6.6 -40 -2 -50 -270 -51 -0 -0 -ARC -8 -0 -10 -25.6 -20 -23.6 -40 -2 -50 -0 -51 -90 -0 -ARC -8 -0 -10 -12.4 -20 -23.6 -40 -2 -50 -90 -51 -180 -0 -ARC -8 -0 -10 -12.4 -20 --6.6 -40 -2 -50 -180 -51 -270 -0 -ARC -8 -0 -10 -25.6 -20 --6.6 -40 -2 -50 -270 -51 -0 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/outlines/outlines___outlines_expand_dxf.dxf b/test/outlines/outlines___outlines_expand_dxf.dxf deleted file mode 100644 index b129818..0000000 --- a/test/outlines/outlines___outlines_expand_dxf.dxf +++ /dev/null @@ -1,410 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --6.6 -20 --9.6 -11 -6.6 -21 --9.6 -0 -ARC -8 -0 -10 -6.6 -20 --6.6 -40 -3 -50 -270 -51 -345.164888 -0 -ARC -8 -0 -10 -12.4 -20 --6.6 -40 -3 -50 -194.835112 -51 -270 -0 -LINE -8 -0 -10 -12.4 -20 --9.6 -11 -25.6 -21 --9.6 -0 -ARC -8 -0 -10 -25.6 -20 --6.6 -40 -3 -50 -270 -51 -360 -0 -LINE -8 -0 -10 -28.6 -20 --6.6 -11 -28.6 -21 -23.6 -0 -ARC -8 -0 -10 -25.6 -20 -23.6 -40 -3 -50 -0 -51 -90 -0 -LINE -8 -0 -10 -12.4 -20 -26.6 -11 -25.6 -21 -26.6 -0 -ARC -8 -0 -10 -12.4 -20 -23.6 -40 -3 -50 -90 -51 -165.164888 -0 -ARC -8 -0 -10 -6.6 -20 -23.6 -40 -3 -50 -14.835112 -51 -90 -0 -LINE -8 -0 -10 --6.6 -20 -26.6 -11 -6.6 -21 -26.6 -0 -ARC -8 -0 -10 --6.6 -20 -23.6 -40 -3 -50 -90 -51 -180 -0 -LINE -8 -0 -10 --9.6 -20 --6.6 -11 --9.6 -21 -23.6 -0 -ARC -8 -0 -10 --6.6 -20 --6.6 -40 -3 -50 -180 -51 -270 -0 -LINE -8 -0 -10 -12.8 -20 --3.3 -11 -12.8 -21 -11.8 -0 -LINE -8 -0 -10 -10.4 -20 -11.8 -11 -12.8 -21 -11.8 -0 -ARC -8 -0 -10 -10.4 -20 -12.8 -40 -1 -50 -205.8419331 -51 -270 -0 -ARC -8 -0 -10 -8.6 -20 -12.8 -40 -1 -50 -270 -51 -334.1580669 -0 -LINE -8 -0 -10 -6.2 -20 -11.8 -11 -8.6 -21 -11.8 -0 -LINE -8 -0 -10 -6.2 -20 --3.3 -11 -6.2 -21 -11.8 -0 -LINE -8 -0 -10 -6.2 -20 --3.3 -11 -8.6 -21 --3.3 -0 -ARC -8 -0 -10 -8.6 -20 --4.3 -40 -1 -50 -25.8419331 -51 -90 -0 -ARC -8 -0 -10 -10.4 -20 --4.3 -40 -1 -50 -90 -51 -154.1580669 -0 -LINE -8 -0 -10 -10.4 -20 --3.3 -11 -12.8 -21 --3.3 -0 -LINE -8 -0 -10 -3.3 -20 --3.3 -11 -3.3 -21 -11.8 -0 -LINE -8 -0 -10 --3.3 -20 -11.8 -11 -3.3 -21 -11.8 -0 -LINE -8 -0 -10 --3.3 -20 --3.3 -11 --3.3 -21 -11.8 -0 -LINE -8 -0 -10 --3.3 -20 --3.3 -11 -3.3 -21 --3.3 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/outlines/rectangles.yaml b/test/outlines/rectangles.yaml index 6cd7c2f..2982e5e 100644 --- a/test/outlines/rectangles.yaml +++ b/test/outlines/rectangles.yaml @@ -17,7 +17,6 @@ outlines: - mirror_matrix shift: [0, sy/2] size: [20, 40] - corner: 5 outside_rects: what: rectangle where: diff --git a/test/outlines/rectangles___outlines_outline_dxf.dxf b/test/outlines/rectangles___outlines_outline_dxf.dxf index 101992d..8de0346 100644 --- a/test/outlines/rectangles___outlines_outline_dxf.dxf +++ b/test/outlines/rectangles___outlines_outline_dxf.dxf @@ -67,7 +67,7 @@ LINE 11 10 21 -5 +0 0 LINE 8 @@ -135,7 +135,7 @@ LINE 10 30 20 -5 +0 11 30 21 @@ -145,28 +145,14 @@ LINE 8 0 10 -15 +10 20 0 11 -25 +30 21 0 0 -ARC -8 -0 -10 -25 -20 -5 -40 -5 -50 -270 -51 -360 -0 LINE 8 0 @@ -177,74 +163,32 @@ LINE 11 30 21 -35 -0 -ARC -8 -0 -10 -25 -20 -35 40 -5 -50 -0 -51 -90 0 LINE 8 0 10 -25 +30 20 40 11 -15 +10 21 40 0 -ARC -8 -0 -10 -15 -20 -35 -40 -5 -50 -90 -51 -180 -0 LINE 8 0 10 10 20 -35 +40 11 10 21 10 0 -ARC -8 -0 -10 -15 -20 -5 -40 -5 -50 -180 -51 -270 -0 LINE 8 0 diff --git a/test/pcbs/mock_footprints.yaml b/test/pcbs/mock_footprints.yaml index 14e9821..ddce5b0 100644 --- a/test/pcbs/mock_footprints.yaml +++ b/test/pcbs/mock_footprints.yaml @@ -1,7 +1,5 @@ points.zones.matrix: mirror: 10 - key: - magic_value: 5 outlines: edge: - what: rectangle @@ -20,7 +18,6 @@ pcbs: shift: [1, 1] rotate: 30 params: - width: u/40 side: F mirror: side: B @@ -31,25 +28,9 @@ pcbs: rotate: 30 dyn: what: dynamic_net_test - anc1: + anc: what: anchor_test params: end: ref: matrix - shift: [10, 10] - anc2: - what: anchor_test - params: - end: matrix - arrobj: - what: arrobj_test - params: - start: {x: 5, y: 5} - end: [[6, 6], [7, 7]] - arrobj_templated: - what: arrobj_test - where: - ref: matrix - params: - start: '{x: {{magic_value}}, y: {{magic_value}}}' - end: '[[6, 6], [7, {{magic_value}}]]' + shift: [10, 10] \ No newline at end of file diff --git a/test/pcbs/mock_footprints___pcbs_main.kicad_pcb b/test/pcbs/mock_footprints___pcbs_main.kicad_pcb index 463dd01..d9b38b3 100644 --- a/test/pcbs/mock_footprints___pcbs_main.kicad_pcb +++ b/test/pcbs/mock_footprints___pcbs_main.kicad_pcb @@ -94,9 +94,9 @@ (net 0 "") (net 1 "P1") -(net 2 "T4_1") -(net 3 "T4_2") -(net 4 "T4_3") +(net 2 "T6_1") +(net 3 "T6_2") +(net 4 "T6_3") (net_class Default "This is the default net class." (clearance 0.2) @@ -107,9 +107,9 @@ (uvia_drill 0.1) (add_net "") (add_net "P1") -(add_net "T4_1") -(add_net "T4_2") -(add_net "T4_3") +(add_net "T6_1") +(add_net "T6_2") +(add_net "T6_3") ) @@ -126,7 +126,7 @@ ) - (segment (start 1 -1) (end 7.830127 0.8301270000000001) (width 0.475) (layer F.Cu) (net 1)) + (segment (start 1 -1) (end 7.830127 0.8301270000000001) (width 0.25) (layer F.Cu) (net 1)) @@ -143,7 +143,41 @@ ) - (segment (start 19 -1) (end 12.169872999999999 0.8301270000000001) (width 0.475) (layer B.Cu) (net 1)) + (segment (start 19 -1) (end 12.169872999999999 0.8301270000000001) (width 0.25) (layer B.Cu) (net 1)) + + + + + (module trace_test (layer B.Cu) (tedit 5CF31DEF) + + (at 19 -1 -30) + + (pad 1 smd rect (at 0 0 -30) (size 1 1) (layers B.Cu B.Paste B.Mask) + (net 1 "P1") (solder_mask_margin 0.2)) + + (pad 2 smd rect (at -5 5 -30) (size 1 1) (layers B.Cu B.Paste B.Mask) + (net 1 "P1") (solder_mask_margin 0.2)) + + ) + + (segment (start 19 -1) (end 12.169872999999999 0.8301270000000001) (width 0.25) (layer B.Cu) (net 1)) + + + + + (module trace_test (layer F.Cu) (tedit 5CF31DEF) + + (at 1 -1 30) + + (pad 1 smd rect (at 0 0 30) (size 1 1) (layers F.Cu F.Paste F.Mask) + (net 1 "P1") (solder_mask_margin 0.2)) + + (pad 2 smd rect (at 5 5 30) (size 1 1) (layers F.Cu F.Paste F.Mask) + (net 1 "P1") (solder_mask_margin 0.2)) + + ) + + (segment (start 1 -1) (end 7.830127 0.8301270000000001) (width 0.25) (layer F.Cu) (net 1)) @@ -175,13 +209,13 @@ (at 0 0 0) (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 2 "T4_1") (solder_mask_margin 0.2)) + (net 2 "T6_1") (solder_mask_margin 0.2)) (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 3 "T4_2") (solder_mask_margin 0.2)) + (net 3 "T6_2") (solder_mask_margin 0.2)) (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 4 "T4_3") (solder_mask_margin 0.2)) + (net 4 "T6_3") (solder_mask_margin 0.2)) ) @@ -197,43 +231,6 @@ ) - - - (module anchor_test (layer F.Cu) (tedit 5CF31DEF) - - (at 0 0 0) - - (fp_line (start 0 0) (end 0 0) (layer Dwgs.User) (width 0.05)) - - ) - - - - - (module arrobj_test (layer F.Cu) (tedit 5CF31DEF) - - (at 0 0 0) - - (fp_line (start 5 5) (end 6 6) (layer Dwgs.User) (width 0.05)) -(fp_line (start 5 5) (end 7 7) (layer Dwgs.User) (width 0.05)) - - - ) - - - - - (module arrobj_test (layer F.Cu) (tedit 5CF31DEF) - - (at 0 0 0) - - (fp_line (start 5 5) (end 6 6) (layer Dwgs.User) (width 0.05)) -(fp_line (start 5 5) (end 7 5) (layer Dwgs.User) (width 0.05)) - - - ) - - (gr_line (start -9.5 9.5) (end 9.5 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) (gr_line (start 9.5 9.5) (end 9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) (gr_line (start 9.5 -9.5) (end -9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) diff --git a/test/pcbs/outlines.yaml b/test/pcbs/outlines.yaml deleted file mode 100644 index 7a7cd82..0000000 --- a/test/pcbs/outlines.yaml +++ /dev/null @@ -1,34 +0,0 @@ -points.zones.matrix: - columns: - left: - right: - rows.only: -outlines: - left: - out: - what: rectangle - where: matrix_left_only - size: u - fillet: u/5 - in: - what: circle - where: matrix_left_only - radius: u/4 - operation: subtract - right: - out: - what: rectangle - where: matrix_right_only - size: u - bevel: u/5 - in: - what: rectangle - where: matrix_right_only - size: u/2 - bevel: u/4 - operation: subtract -pcbs: - main: - outlines: - - outline: 'left' - - outline: 'right' diff --git a/test/pcbs/outlines___pcbs_main.kicad_pcb b/test/pcbs/outlines___pcbs_main.kicad_pcb deleted file mode 100644 index 8e92c54..0000000 --- a/test/pcbs/outlines___pcbs_main.kicad_pcb +++ /dev/null @@ -1,132 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title main) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") - ) - - - (gr_line (start -5.7 9.5) (end 5.699999999999999 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 9.5 5.7) (end 9.5 -5.699999999999999) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 5.699999999999999 -9.5) (end -5.7 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start -9.5 -5.699999999999999) (end -9.5 5.7) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_arc (start 5.7 5.7) (end 5.7 9.5) (angle -90) (layer Edge.Cuts) (width 0.15)) -(gr_arc (start 5.7 -5.7) (end 9.5 -5.7) (angle -90) (layer Edge.Cuts) (width 0.15)) -(gr_arc (start -5.7 -5.7) (end -5.7 -9.5) (angle -90) (layer Edge.Cuts) (width 0.15)) -(gr_arc (start -5.7 5.7) (end -9.5 5.7) (angle -90) (layer Edge.Cuts) (width 0.15)) -(gr_circle (center 0 0) (end 4.75 0) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 13.3 9.5) (end 9.5 5.7) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 9.5 5.7) (end 9.5 -5.7) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 9.5 -5.7) (end 13.3 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 13.3 -9.5) (end 24.700000000000003 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 24.700000000000003 -9.5) (end 28.5 -5.7) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 28.5 -5.7) (end 28.5 5.7) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 28.5 5.7) (end 24.700000000000003 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 24.700000000000003 9.5) (end 13.3 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 19 4.75) (end 14.25 0) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 14.25 0) (end 19 -4.75) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 19 -4.75) (end 23.75 0) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 23.75 0) (end 19 4.75) (angle 90) (layer Edge.Cuts) (width 0.15)) - -) - - \ No newline at end of file diff --git a/test/points/adjustments.yaml b/test/points/adjustments.yaml index 8b1063d..77850a8 100644 --- a/test/points/adjustments.yaml +++ b/test/points/adjustments.yaml @@ -3,21 +3,17 @@ points: matrix: columns: left: - middle.rows.home.adjust: - shift: [-2u, 0] - rotate: 45 right: key: stagger: 5 spread: 25 - splay: -5 + splay: 5 origin: [-9, -9] rows: - home: + top: orient: -90 shift: [0, 10] rotate: 90 rows: bottom: - home: top: \ No newline at end of file diff --git a/test/points/adjustments___demo_dxf.dxf b/test/points/adjustments___demo_dxf.dxf index f23b53e..6f18f2b 100644 --- a/test/points/adjustments___demo_dxf.dxf +++ b/test/points/adjustments___demo_dxf.dxf @@ -145,227 +145,35 @@ LINE 8 0 10 --9 -20 -47 -11 -9 -21 -47 -0 -LINE -8 -0 -10 -9 -20 -47 -11 -9 -21 -29 -0 -LINE -8 -0 -10 -9 -20 -29 -11 --9 -21 -29 -0 -LINE -8 -0 -10 --9 -20 -29 -11 --9 -21 -47 -0 -LINE -8 -0 -10 -10 -20 -9 -11 -28 -21 -9 -0 -LINE -8 -0 -10 -28 -20 -9 -11 -28 -21 --9 -0 -LINE -8 -0 -10 -28 -20 --9 -11 -10 -21 --9 -0 -LINE -8 -0 -10 -10 -20 --9 -11 -10 -21 -9 -0 -LINE -8 -0 -10 --31.7279221 -20 -19 -11 --19 -21 -31.7279221 -0 -LINE -8 -0 -10 --19 -20 -31.7279221 -11 --6.2720779 -21 -19 -0 -LINE -8 -0 -10 --6.2720779 -20 -19 -11 --19 -21 -6.2720779 -0 -LINE -8 -0 -10 --19 -20 -6.2720779 -11 --31.7279221 -21 -19 -0 -LINE -8 -0 -10 -10 -20 -47 -11 -28 -21 -47 -0 -LINE -8 -0 -10 -28 -20 -47 -11 -28 -21 -29 -0 -LINE -8 -0 -10 -28 -20 -29 -11 -10 -21 -29 -0 -LINE -8 -0 -10 -10 -20 -29 -11 -10 -21 -47 -0 -LINE -8 -0 -10 -36.5688034 +14.4311966 20 13.9315046 11 -54.500308 +32.3627012 21 -12.3627012 +15.500308 0 LINE 8 0 10 -54.500308 +32.3627012 20 -12.3627012 +15.500308 11 -52.9315046 +33.9315046 21 --5.5688034 +-2.4311966 0 LINE 8 0 10 -52.9315046 +33.9315046 20 --5.5688034 +-2.4311966 11 -35 +16 21 -4 0 @@ -373,11 +181,11 @@ LINE 8 0 10 -35 +16 20 -4 11 -36.5688034 +14.4311966 21 13.9315046 0 @@ -385,97 +193,49 @@ LINE 8 0 10 -48.1867095 +22.7371845 20 -31.9876465 +33.7307613 11 -66.1182141 +40.6686891 21 -30.4188431 +35.2995647 0 LINE 8 0 10 -66.1182141 +40.6686891 20 -30.4188431 +35.2995647 11 -64.5494107 +42.2374925 21 -12.4873385 +17.3680601 0 LINE 8 0 10 -64.5494107 +42.2374925 20 -12.4873385 +17.3680601 11 -46.6179061 +24.3059879 21 -14.0561419 +15.7992567 0 LINE 8 0 10 -46.6179061 +24.3059879 20 -14.0561419 +15.7992567 11 -48.1867095 +22.7371845 21 -31.9876465 -0 -LINE -8 -0 -10 -49.8426686 -20 -50.9153458 -11 -67.7741732 -21 -49.3465424 -0 -LINE -8 -0 -10 -67.7741732 -20 -49.3465424 -11 -66.2053698 -21 -31.4150378 -0 -LINE -8 -0 -10 -66.2053698 -20 -31.4150378 -11 -48.2738652 -21 -32.9838412 -0 -LINE -8 -0 -10 -48.2738652 -20 -32.9838412 -11 -49.8426686 -21 -50.9153458 +33.7307613 0 ENDSEC 0 diff --git a/test/points/adjustments___points.json b/test/points/adjustments___points.json index ff8bd04..92f7b09 100644 --- a/test/points/adjustments___points.json +++ b/test/points/adjustments___points.json @@ -17,7 +17,6 @@ 0 ], "rotate": 0, - "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -29,33 +28,18 @@ "zone": { "columns": { "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, "right": { "key": { "stagger": 5, "spread": 25, - "splay": -5, + "splay": 5, "origin": [ -9, -9 ] }, "rows": { - "home": { + "top": { "orient": -90, "shift": [ 0, @@ -69,7 +53,6 @@ }, "rows": { "bottom": {}, - "home": {}, "top": {} }, "name": "matrix" @@ -82,13 +65,13 @@ "row": "bottom", "bind": [ 10, - 10, + 0, 0, 0 ] } }, - "matrix_left_home": { + "matrix_left_top": { "x": 0, "y": 19, "r": 0, @@ -106,96 +89,6 @@ 0 ], "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "left_home", - "name": "matrix_left_home", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": {}, - "key": {}, - "name": "left" - }, - "row": "home", - "bind": [ - 10, - 10, - 10, - 0 - ] - } - }, - "matrix_left_top": { - "x": 0, - "y": 38, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -207,33 +100,18 @@ "zone": { "columns": { "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, "right": { "key": { "stagger": 5, "spread": 25, - "splay": -5, + "splay": 5, "origin": [ -9, -9 ] }, "rows": { - "home": { + "top": { "orient": -90, "shift": [ 0, @@ -247,7 +125,6 @@ }, "rows": { "bottom": {}, - "home": {}, "top": {} }, "name": "matrix" @@ -266,317 +143,14 @@ ] } }, - "matrix_middle_bottom": { - "x": 19, - "y": 0, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "middle_bottom", - "name": "matrix_middle_bottom", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "row": "bottom", - "bind": [ - 10, - 0, - 0, - 10 - ] - } - }, - "matrix_middle_home": { - "x": -19, - "y": 19, - "r": 45, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - }, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "middle_home", - "name": "matrix_middle_home", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "row": "home", - "bind": [ - 10, - 10, - 10, - 10 - ] - } - }, - "matrix_middle_top": { - "x": 19, - "y": 38, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "middle_top", - "name": "matrix_middle_top", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "row": "top", - "bind": [ - 0, - 10, - 10, - 10 - ] - } - }, "matrix_right_bottom": { - "x": 44.750154, - "y": 4.1813506, - "r": -5, + "x": 24.181350600000002, + "y": 5.750154, + "r": 5, "meta": { "stagger": 5, "spread": 25, - "splay": -5, + "splay": 5, "origin": [ -9, -9 @@ -587,7 +161,6 @@ 0 ], "rotate": 0, - "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -599,33 +172,18 @@ "zone": { "columns": { "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, "right": { "key": { "stagger": 5, "spread": 25, - "splay": -5, + "splay": 5, "origin": [ -9, -9 ] }, "rows": { - "home": { + "top": { "orient": -90, "shift": [ 0, @@ -639,7 +197,6 @@ }, "rows": { "bottom": {}, - "home": {}, "top": {} }, "name": "matrix" @@ -648,14 +205,14 @@ "key": { "stagger": 5, "spread": 25, - "splay": -5, + "splay": 5, "origin": [ -9, -9 ] }, "rows": { - "home": { + "top": { "orient": -90, "shift": [ 0, @@ -675,14 +232,14 @@ ] } }, - "matrix_right_home": { - "x": 56.3680601, - "y": 22.237492500000002, - "r": -5, + "matrix_right_top": { + "x": 32.4873385, + "y": 25.549410700000003, + "r": 5, "meta": { "stagger": 5, "spread": 25, - "splay": -5, + "splay": 5, "origin": [ -9, -9 @@ -693,113 +250,6 @@ 10 ], "rotate": 90, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "right_home", - "name": "matrix_right_home", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, - "name": "right" - }, - "row": "home", - "bind": [ - 10, - 0, - 10, - 10 - ] - } - }, - "matrix_right_top": { - "x": 58.0240192, - "y": 41.1651918, - "r": -5, - "meta": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -811,33 +261,18 @@ "zone": { "columns": { "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, "right": { "key": { "stagger": 5, "spread": 25, - "splay": -5, + "splay": 5, "origin": [ -9, -9 ] }, "rows": { - "home": { + "top": { "orient": -90, "shift": [ 0, @@ -851,7 +286,6 @@ }, "rows": { "bottom": {}, - "home": {}, "top": {} }, "name": "matrix" @@ -860,14 +294,14 @@ "key": { "stagger": 5, "spread": 25, - "splay": -5, + "splay": 5, "origin": [ -9, -9 ] }, "rows": { - "home": { + "top": { "orient": -90, "shift": [ 0, diff --git a/test/points/autobind.yaml b/test/points/autobind.yaml deleted file mode 100644 index 0e61c63..0000000 --- a/test/points/autobind.yaml +++ /dev/null @@ -1,24 +0,0 @@ -points.zones: - none: - key: - autobind: 0 - columns: - a: - b: - some: - key: - autobind: 1 - columns: - a: - b: -outlines: - none: - - what: rectangle - where: /none_.*/ - size: 5 - bound: true - some: - - what: rectangle - where: /some_.*/ - size: 5 - bound: true \ No newline at end of file diff --git a/test/points/autobind___outlines_none_dxf.dxf b/test/points/autobind___outlines_none_dxf.dxf deleted file mode 100644 index 93a857b..0000000 --- a/test/points/autobind___outlines_none_dxf.dxf +++ /dev/null @@ -1,146 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --2.5 -20 --2.5 -11 -2.5 -21 --2.5 -0 -LINE -8 -0 -10 -2.5 -20 --2.5 -11 -2.5 -21 -2.5 -0 -LINE -8 -0 -10 -2.5 -20 -2.5 -11 --2.5 -21 -2.5 -0 -LINE -8 -0 -10 --2.5 -20 -2.5 -11 --2.5 -21 --2.5 -0 -LINE -8 -0 -10 -16.5 -20 --2.5 -11 -21.5 -21 --2.5 -0 -LINE -8 -0 -10 -21.5 -20 --2.5 -11 -21.5 -21 -2.5 -0 -LINE -8 -0 -10 -21.5 -20 -2.5 -11 -16.5 -21 -2.5 -0 -LINE -8 -0 -10 -16.5 -20 -2.5 -11 -16.5 -21 --2.5 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/points/autobind___outlines_some_dxf.dxf b/test/points/autobind___outlines_some_dxf.dxf deleted file mode 100644 index 46d46c2..0000000 --- a/test/points/autobind___outlines_some_dxf.dxf +++ /dev/null @@ -1,146 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --2.5 -20 --2.5 -11 -3.5 -21 --2.5 -0 -LINE -8 -0 -10 --2.5 -20 -2.5 -11 -3.5 -21 -2.5 -0 -LINE -8 -0 -10 --2.5 -20 -2.5 -11 --2.5 -21 --2.5 -0 -LINE -8 -0 -10 -3.5 -20 --2.5 -11 -3.5 -21 -2.5 -0 -LINE -8 -0 -10 -15.5 -20 --2.5 -11 -21.5 -21 --2.5 -0 -LINE -8 -0 -10 -21.5 -20 --2.5 -11 -21.5 -21 -2.5 -0 -LINE -8 -0 -10 -15.5 -20 -2.5 -11 -21.5 -21 -2.5 -0 -LINE -8 -0 -10 -15.5 -20 --2.5 -11 -15.5 -21 -2.5 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/points/basic_2x2___points.json b/test/points/basic_2x2___points.json index 140cf1a..61d9968 100644 --- a/test/points/basic_2x2___points.json +++ b/test/points/basic_2x2___points.json @@ -17,7 +17,6 @@ 0 ], "rotate": 0, - "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -69,7 +68,6 @@ 0 ], "rotate": 0, - "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -121,7 +119,6 @@ 0 ], "rotate": 0, - "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -173,7 +170,6 @@ 0 ], "rotate": 0, - "adjust": {}, "width": 18, "height": 18, "padding": 19, diff --git a/test/points/default___points.json b/test/points/default___points.json index 4536086..60e486d 100644 --- a/test/points/default___points.json +++ b/test/points/default___points.json @@ -17,7 +17,6 @@ 0 ], "rotate": 0, - "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -27,13 +26,6 @@ "colrow": "default_default", "name": "matrix", "zone": { - "columns": { - "default": { - "rows": {}, - "key": {}, - "name": "default" - } - }, "name": "matrix" }, "col": { @@ -68,7 +60,6 @@ 0 ], "rotate": 0, - "adjust": {}, "width": 18, "height": 18, "padding": 19, diff --git a/test/points/mirrors.yaml b/test/points/mirrors.yaml deleted file mode 100644 index eb95a42..0000000 --- a/test/points/mirrors.yaml +++ /dev/null @@ -1,30 +0,0 @@ -points: - mirror: - ref: matrix_right_top - distance: U - zones: - matrix: - columns: - left: - rows: - bottom.asym: source - top.asym: clone - right: - rows: - bottom: - top: - other: - anchor: - ref: matrix_right_top - shift: [100, 100] - # default mirror object, ref = [0, 0], distance = 0 - mirror: {} - columns: - left: - rows: - bottom.asym: source - top.asym: clone - right: - rows: - bottom: - top: diff --git a/test/points/mirrors___demo_dxf.dxf b/test/points/mirrors___demo_dxf.dxf deleted file mode 100644 index e1c7ea2..0000000 --- a/test/points/mirrors___demo_dxf.dxf +++ /dev/null @@ -1,626 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --9 -20 -9 -11 -9 -21 -9 -0 -LINE -8 -0 -10 -9 -20 -9 -11 -9 -21 --9 -0 -LINE -8 -0 -10 -9 -20 --9 -11 --9 -21 --9 -0 -LINE -8 -0 -10 --9 -20 --9 -11 --9 -21 -9 -0 -LINE -8 -0 -10 -10 -20 -9 -11 -28 -21 -9 -0 -LINE -8 -0 -10 -28 -20 -9 -11 -28 -21 --9 -0 -LINE -8 -0 -10 -28 -20 --9 -11 -10 -21 --9 -0 -LINE -8 -0 -10 -10 -20 --9 -11 -10 -21 -9 -0 -LINE -8 -0 -10 -10 -20 -28 -11 -28 -21 -28 -0 -LINE -8 -0 -10 -28 -20 -28 -11 -28 -21 -10 -0 -LINE -8 -0 -10 -28 -20 -10 -11 -10 -21 -10 -0 -LINE -8 -0 -10 -10 -20 -10 -11 -10 -21 -28 -0 -LINE -8 -0 -10 -110 -20 -128 -11 -128 -21 -128 -0 -LINE -8 -0 -10 -128 -20 -128 -11 -128 -21 -110 -0 -LINE -8 -0 -10 -128 -20 -110 -11 -110 -21 -110 -0 -LINE -8 -0 -10 -110 -20 -110 -11 -110 -21 -128 -0 -LINE -8 -0 -10 -129 -20 -128 -11 -147 -21 -128 -0 -LINE -8 -0 -10 -147 -20 -128 -11 -147 -21 -110 -0 -LINE -8 -0 -10 -147 -20 -110 -11 -129 -21 -110 -0 -LINE -8 -0 -10 -129 -20 -110 -11 -129 -21 -128 -0 -LINE -8 -0 -10 -129 -20 -147 -11 -147 -21 -147 -0 -LINE -8 -0 -10 -147 -20 -147 -11 -147 -21 -129 -0 -LINE -8 -0 -10 -147 -20 -129 -11 -129 -21 -129 -0 -LINE -8 -0 -10 -129 -20 -129 -11 -129 -21 -147 -0 -LINE -8 -0 -10 --128 -20 -147 -11 --110 -21 -147 -0 -LINE -8 -0 -10 --110 -20 -147 -11 --110 -21 -129 -0 -LINE -8 -0 -10 --110 -20 -129 -11 --128 -21 -129 -0 -LINE -8 -0 -10 --128 -20 -129 -11 --128 -21 -147 -0 -LINE -8 -0 -10 --147 -20 -128 -11 --129 -21 -128 -0 -LINE -8 -0 -10 --129 -20 -128 -11 --129 -21 -110 -0 -LINE -8 -0 -10 --129 -20 -110 -11 --147 -21 -110 -0 -LINE -8 -0 -10 --147 -20 -110 -11 --147 -21 -128 -0 -LINE -8 -0 -10 --147 -20 -147 -11 --129 -21 -147 -0 -LINE -8 -0 -10 --129 -20 -147 -11 --129 -21 -129 -0 -LINE -8 -0 -10 --129 -20 -129 -11 --147 -21 -129 -0 -LINE -8 -0 -10 --147 -20 -129 -11 --147 -21 -147 -0 -LINE -8 -0 -10 -48.05 -20 -28 -11 -66.05 -21 -28 -0 -LINE -8 -0 -10 -66.05 -20 -28 -11 -66.05 -21 -10 -0 -LINE -8 -0 -10 -66.05 -20 -10 -11 -48.05 -21 -10 -0 -LINE -8 -0 -10 -48.05 -20 -10 -11 -48.05 -21 -28 -0 -LINE -8 -0 -10 -29.05 -20 -9 -11 -47.05 -21 -9 -0 -LINE -8 -0 -10 -47.05 -20 -9 -11 -47.05 -21 --9 -0 -LINE -8 -0 -10 -47.05 -20 --9 -11 -29.05 -21 --9 -0 -LINE -8 -0 -10 -29.05 -20 --9 -11 -29.05 -21 -9 -0 -LINE -8 -0 -10 -29.05 -20 -28 -11 -47.05 -21 -28 -0 -LINE -8 -0 -10 -47.05 -20 -28 -11 -47.05 -21 -10 -0 -LINE -8 -0 -10 -47.05 -20 -10 -11 -29.05 -21 -10 -0 -LINE -8 -0 -10 -29.05 -20 -10 -11 -29.05 -21 -28 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/points/mirrors___points.json b/test/points/mirrors___points.json deleted file mode 100644 index 96b7841..0000000 --- a/test/points/mirrors___points.json +++ /dev/null @@ -1,798 +0,0 @@ -{ - "matrix_left_bottom": { - "x": 0, - "y": 0, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "source", - "colrow": "left_bottom", - "name": "matrix_left_bottom", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "row": "bottom", - "mirrored": false, - "bind": [ - 0, - 10, - 0, - 0 - ] - } - }, - "matrix_right_bottom": { - "x": 19, - "y": 0, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "right_bottom", - "name": "matrix_right_bottom", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": {}, - "key": {}, - "name": "right" - }, - "row": "bottom", - "mirrored": false, - "bind": [ - 10, - 0, - 0, - 10 - ] - } - }, - "matrix_right_top": { - "x": 19, - "y": 19, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "right_top", - "name": "matrix_right_top", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": {}, - "key": {}, - "name": "right" - }, - "row": "top", - "mirrored": false, - "bind": [ - 0, - 0, - 10, - 0 - ] - } - }, - "other_left_bottom": { - "x": 119, - "y": 119, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "source", - "colrow": "left_bottom", - "name": "other_left_bottom", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "other" - }, - "col": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "row": "bottom", - "mirrored": false, - "bind": [ - 0, - 10, - 0, - 0 - ] - } - }, - "other_right_bottom": { - "x": 138, - "y": 119, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "right_bottom", - "name": "other_right_bottom", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "other" - }, - "col": { - "rows": {}, - "key": {}, - "name": "right" - }, - "row": "bottom", - "mirrored": false, - "bind": [ - 10, - 0, - 0, - 10 - ] - } - }, - "other_right_top": { - "x": 138, - "y": 138, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "right_top", - "name": "other_right_top", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "other" - }, - "col": { - "rows": {}, - "key": {}, - "name": "right" - }, - "row": "top", - "mirrored": false, - "bind": [ - 0, - 0, - 10, - 0 - ] - } - }, - "mirror_other_left_top": { - "x": -119, - "y": 138, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "clone", - "colrow": "mirror_left_top", - "name": "mirror_other_left_top", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "other" - }, - "col": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "row": "top", - "mirrored": true, - "bind": [ - 0, - 10, - 0, - 0 - ] - } - }, - "mirror_other_right_bottom": { - "x": -138, - "y": 119, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "mirror_right_bottom", - "name": "mirror_other_right_bottom", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "other" - }, - "col": { - "rows": {}, - "key": {}, - "name": "right" - }, - "row": "bottom", - "mirrored": true, - "bind": [ - 10, - 0, - 0, - 0 - ] - } - }, - "mirror_other_right_top": { - "x": -138, - "y": 138, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "mirror_right_top", - "name": "mirror_other_right_top", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "other" - }, - "col": { - "rows": {}, - "key": {}, - "name": "right" - }, - "row": "top", - "mirrored": true, - "bind": [ - 0, - 0, - 10, - 10 - ] - } - }, - "mirror_matrix_left_top": { - "x": 57.05, - "y": 19, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "clone", - "colrow": "mirror_left_top", - "name": "mirror_matrix_left_top", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "row": "top", - "mirrored": true, - "bind": [ - 0, - 10, - 0, - 0 - ] - } - }, - "mirror_matrix_right_bottom": { - "x": 38.05, - "y": 0, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "mirror_right_bottom", - "name": "mirror_matrix_right_bottom", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": {}, - "key": {}, - "name": "right" - }, - "row": "bottom", - "mirrored": true, - "bind": [ - 10, - 0, - 0, - 0 - ] - } - }, - "mirror_matrix_right_top": { - "x": 38.05, - "y": 19, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "mirror_right_top", - "name": "mirror_matrix_right_top", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": {}, - "key": {}, - "name": "right" - }, - "row": "top", - "mirrored": true, - "bind": [ - 0, - 0, - 10, - 10 - ] - } - } -} diff --git a/test/points/overrides___points.json b/test/points/overrides___points.json index 88fbfe6..2a763b7 100644 --- a/test/points/overrides___points.json +++ b/test/points/overrides___points.json @@ -17,7 +17,6 @@ 0 ], "rotate": 0, - "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -86,7 +85,6 @@ 0 ], "rotate": 0, - "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -155,7 +153,6 @@ 0 ], "rotate": 0, - "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -226,7 +223,6 @@ 0 ], "rotate": 0, - "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -297,7 +293,6 @@ 0 ], "rotate": 0, - "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -368,7 +363,6 @@ 0 ], "rotate": 0, - "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -443,7 +437,6 @@ 0 ], "rotate": 0, - "adjust": {}, "width": 18, "height": 18, "padding": 19, diff --git a/test/points/rotations.yaml b/test/points/rotations.yaml deleted file mode 100644 index 50ffa01..0000000 --- a/test/points/rotations.yaml +++ /dev/null @@ -1,16 +0,0 @@ -points: - rotate: 22.5 - zones: - matrix: - rotate: 22.5 - key: - origin: [-u/2, -u/2] - columns: - left: - right.key: - rotate: -45 - padding: (1+sqrt(2))/2 * u - spread: (1+sqrt(2))/2 * u - rows: - bottom: - top: diff --git a/test/points/rotations___demo_dxf.dxf b/test/points/rotations___demo_dxf.dxf deleted file mode 100644 index 657e493..0000000 --- a/test/points/rotations___demo_dxf.dxf +++ /dev/null @@ -1,242 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --12.7279221 -20 -0 -11 -0 -21 -12.7279221 -0 -LINE -8 -0 -10 -0 -20 -12.7279221 -11 -12.7279221 -21 -0 -0 -LINE -8 -0 -10 -12.7279221 -20 -0 -11 -0 -21 --12.7279221 -0 -LINE -8 -0 -10 -0 -20 --12.7279221 -11 --12.7279221 -21 -0 -0 -LINE -8 -0 -10 --26.1629509 -20 -13.4350288 -11 --13.4350288 -21 -26.1629509 -0 -LINE -8 -0 -10 --13.4350288 -20 -26.1629509 -11 --0.7071067 -21 -13.4350288 -0 -LINE -8 -0 -10 --0.7071067 -20 -13.4350288 -11 --13.4350288 -21 -0.7071067 -0 -LINE -8 -0 -10 --13.4350288 -20 -0.7071067 -11 --26.1629509 -21 -13.4350288 -0 -LINE -8 -0 -10 -7.2175144 -20 -25.2175144 -11 -25.2175144 -21 -25.2175144 -0 -LINE -8 -0 -10 -25.2175144 -20 -25.2175144 -11 -25.2175144 -21 -7.2175144 -0 -LINE -8 -0 -10 -25.2175144 -20 -7.2175144 -11 -7.2175144 -21 -7.2175144 -0 -LINE -8 -0 -10 -7.2175144 -20 -7.2175144 -11 -7.2175144 -21 -25.2175144 -0 -LINE -8 -0 -10 -16.2175144 -20 -51.8804653 -11 -28.9454365 -21 -39.1525432 -0 -LINE -8 -0 -10 -28.9454365 -20 -39.1525432 -11 -16.2175144 -21 -26.4246211 -0 -LINE -8 -0 -10 -16.2175144 -20 -26.4246211 -11 -3.4895923 -21 -39.1525432 -0 -LINE -8 -0 -10 -3.4895923 -20 -39.1525432 -11 -16.2175144 -21 -51.8804653 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/points/samename.yaml b/test/points/samename.yaml deleted file mode 100644 index 0e365ae..0000000 --- a/test/points/samename.yaml +++ /dev/null @@ -1,2 +0,0 @@ -points.zones.matrix.key.name: samename -points.zones.other.key.name: samename diff --git a/test/points/samename___EXCEPTION.txt b/test/points/samename___EXCEPTION.txt deleted file mode 100644 index daec189..0000000 --- a/test/points/samename___EXCEPTION.txt +++ /dev/null @@ -1 +0,0 @@ -defined more than once \ No newline at end of file diff --git a/test/unit/anchor.js b/test/unit/anchor.js index 342d59a..c9b3dd1 100644 --- a/test/unit/anchor.js +++ b/test/unit/anchor.js @@ -6,10 +6,6 @@ describe('Anchor', function() { const points = { o: new Point(0, 0, 0, {label: 'o'}), - rotated_o: new Point(0, 0, 90, {label: 'rotated_o'}), - o_five: new Point(0, 5, 0, {label: 'o_five'}), - five_o: new Point(5, 0, 0, {label: 'five_o'}), - five: new Point(5, 5, 90, {label: 'five'}), ten: new Point(10, 10, -90, {label: 'ten'}), mirror_ten: new Point(-10, 10, 90, {mirrored: true}) } @@ -60,94 +56,6 @@ describe('Anchor', function() { }, 'name', points)(), [5, 5, -45, {}] ) - // empty parts - check( - parse({ - aggregate: { - } - }, 'name', points)(), - [0, 0, 0, {}] - ) - // can't have aggregate and ref together - parse({ - aggregate: { - parts: ['o', 'ten'] - }, - ref : 'ten' - }, 'name', points).should.throw() - }) - it('intersect', function() { - // points that intersect on a negative Y axis - check( - parse({ - aggregate: { - parts: ['o','ten'], - method: 'intersect' - } - }, 'name', points)(), - [0,10,0,{}] - ) - - // points that have parallel Y axis, i.e. never intersect - parse({ - aggregate: { - parts: ['o','five_o'], - method: 'intersect' - } - }, 'name', points).should.throw(`The points under "name.aggregate.parts" do not intersect!`) - - // points intersect on their positive Y axis - check( - parse({ - aggregate: { - parts: ['o','five'], - method: 'intersect' - } - }, 'name', points)(), - [0, 5, 0, {}] - ) - - // intersecting points with the same coordinates, but different rotations - check( - parse({ - aggregate: { - parts: ['o','rotated_o'], - method: 'intersect' - } - }, 'name', points)(), - [0, 0, 0, {}] - ) - - // points with overlapping Y axis - parse({ - aggregate: { - parts: ['o','o_five'], - method: 'intersect' - } - }, 'name', points).should.throw(`The points under "name.aggregate.parts" do not intersect!`) - - // more than two parts - parse({ - aggregate: { - parts: ['o', `five`, `ten`], - method: 'intersect' - } - }, 'name', points).should.throw(`Intersect expects exactly two parts, but it got 3!`) - - // only one part - parse({ - aggregate: { - parts: ['o'], - method: 'intersect' - } - }, 'name', points).should.throw(`Intersect expects exactly two parts, but it got 1!`) - - // no parts - parse({ - aggregate: { - method: 'intersect' - } - }, 'name', points).should.throw(`Intersect expects exactly two parts, but it got 0!`) }) it('shift', function() { diff --git a/test/unit/filter.js b/test/unit/filter.js index 3972e93..5481949 100644 --- a/test/unit/filter.js +++ b/test/unit/filter.js @@ -4,67 +4,42 @@ const Point = require('../../src/point') describe('Filter', function() { - it('without points', function() { - filter(undefined, '').should.deep.equal([new Point()]) - filter(true, '').should.deep.equal([]) - filter(false, '').should.deep.equal([]) - filter({}, '').should.deep.equal([anchor({}, '', points)()]) - }) - const points = { one: new Point(0, 1, 0, {name: 'one', tags: ['odd']}), two: new Point(0, 2, 0, {name: 'two', tags: ['even', 'prime']}), - three: new Point(0, 3, 0, {name: 'three', tags: {odd: 'yes', prime: 'yupp'}}), - mirror_one: new Point(0, 1, 0, {name: 'mirror_one', tags: ['odd'], mirrored: true}) + three: new Point(0, 3, 0, {name: 'three', tags: {odd: 'yes', prime: 'yupp'}}) } - it('empty filter', function() { + const names = points => points.map(p => p.meta.name) + + it('similar', function() { // an undefined config leads to a default point filter(undefined, '', points).should.deep.equal([new Point()]) // true shouldn't filter anything, while false should filter everything filter(true, '', points).should.deep.equal(Object.values(points)) filter(false, '', points).should.deep.equal([]) - // points should only be returned on their respective halves - // - so `source` is every match - filter(true, '', points, undefined, 'source').should.deep.equal(Object.values(points)) - // - `clone` is the mirror image of every match, which maps one to mirror_one, mirror_one to one, and two/three to nothing (as they don't have mirror parts) - filter(true, '', points, undefined, 'clone').should.deep.equal([points.mirror_one, points.one]) - // - and `both` is every match plus its mirror image as well - filter(true, '', points, undefined, 'both').should.deep.equal(Object.values(points)) // objects just propagate to anchor (and then wrap in array for consistency) filter({}, '', points).should.deep.equal([anchor({}, '', points)()]) - filter({}, '', points, undefined, 'source').should.deep.equal([anchor({}, '', points)()]) - filter({}, '', points, undefined, 'clone').should.deep.equal([anchor({}, '', points)()]) - filter({}, '', points, undefined, 'both').should.deep.equal([anchor({}, '', points)()]) - }) - - const names = points => points.map(p => p.meta.name) - - it('similar', function() { // simple name string names(filter('one', '', points)).should.deep.equal(['one']) // simple name regex names(filter('/^t/', '', points)).should.deep.equal(['two', 'three']) - // tags should count, too (one and mirror_one for the name, three for the odd tag) - names(filter('/^o/', '', points)).should.deep.equal(['one', 'three', 'mirror_one']) + // tags should count, too (one for the name, three for the odd tag) + names(filter('/^o/', '', points)).should.deep.equal(['one', 'three']) // middle spec, should be the same as above, only explicit - names(filter('~ /^o/', '', points)).should.deep.equal(['one', 'three', 'mirror_one']) - // full spec (/n/ would normally match both "one" and "even", but on the tags level, it's just even) + names(filter('~ /^o/', '', points)).should.deep.equal(['one', 'three']) + // full spec (n would normally match both one and even, but on the tags level, it's just even) names(filter('meta.tags ~ /n/', '', points)).should.deep.equal(['two']) - names(filter('meta.name,meta.tags ~ /n/', '', points)).should.deep.equal(['one', 'two', 'mirror_one']) // negation - names(filter('meta.tags ~ -/n/', '', points)).should.deep.equal(['one', 'three', 'mirror_one']) - names(filter('meta.name,meta.tags ~ -/n/', '', points)).should.deep.equal(['three']) - // arrays OR by default at odd levels (including top level)... + names(filter('meta.tags ~ -/n/', '', points)).should.deep.equal(['one', 'three']) + // arrays OR by default at odd levels levels (including top level)... names(filter(['one', 'two'], '', points)).should.deep.equal(['one', 'two']) // ...and AND at even levels names(filter([['even', 'prime']], '', points)).should.deep.equal(['two']) // arbitrary nesting should be possible names(filter([[['even', 'odd'], 'prime']], '', points)).should.deep.equal(['two', 'three']) - // invalid regexes should throw meaningful errors - filter.bind(this, '/\\/', '', points).should.throw('Invalid regex') - // anything other than string/array/object/undefined is also an error + // anything other than string/array/object/undefined is an error filter.bind(this, 28, '', points).should.throw('Unexpected type') }) -}) +}) \ No newline at end of file diff --git a/test/unit/interface.js b/test/unit/interface.js index af93712..ddae923 100644 --- a/test/unit/interface.js +++ b/test/unit/interface.js @@ -10,8 +10,7 @@ const load = name => yaml.safeLoad(fs.readFileSync( ).toString()) const minimal = load('minimal.yaml') const big = load('big.yaml') -const minimal_kle = load('minimal_kle.json') -const atreus_kle = load('atreus_kle.json') +const kle = load('atreus_kle.json') describe('Interface', function() { @@ -50,8 +49,7 @@ describe('Interface', function() { //: return 'not an object'; `, true, logger).should.be.rejectedWith('not valid'), - ergogen.process(minimal_kle, true, logger).should.be.rejectedWith('KLE'), - ergogen.process(atreus_kle, true, logger).should.be.rejectedWith('KLE'), + ergogen.process(kle, true, logger).should.be.rejectedWith('KLE'), ergogen.process('not an object', true, logger).should.be.rejectedWith('object'), ergogen.process({}, true, logger).should.be.rejectedWith('empty'), ergogen.process({not_points: {}}, true, () => {}).should.be.rejectedWith('points clause'), diff --git a/test/unit/internals.js b/test/unit/internals.js deleted file mode 100644 index 2449d34..0000000 --- a/test/unit/internals.js +++ /dev/null @@ -1,22 +0,0 @@ -const m = require('makerjs') -const pcb_lib = require('../../src/pcbs') -const ergogen = require('../../src/ergogen') - -describe('Internals', function() { - - it('makerjs2kicad', function() { - // warn on unknown path type - sinon.stub(m.model, 'walk').callsFake(function(model, config) { - config.onPath({pathContext: {type: 'nonexistent'}}) - }) - pcb_lib._makerjs2kicad.bind(this).should.throw("Can't convert path type") - }) - - it('injection', function() { - // warn on unknown injection type - ergogen.inject.bind(this, 'nonexistent', 'name', 'value').should.throw('Unknown injection type') - }) -}) - - - diff --git a/test/unit/prepare.js b/test/unit/prepare.js index 0b416f5..225e0da 100644 --- a/test/unit/prepare.js +++ b/test/unit/prepare.js @@ -24,7 +24,6 @@ describe('Prepare', function() { }) it('inherit', function() { - // normal case p.inherit({ a: { x: 1, @@ -44,23 +43,6 @@ describe('Prepare', function() { z: 3, w: 4 }) - // should apply to objects within arrays as well! - p.inherit({ - a: { - x: 1, - y: 2 - }, - b: [ - { - $extends: 'a', - z: 3 - } - ] - }).b[0].should.deep.equal({ - x: 1, - y: 2, - z: 3 - }) }) it('parameterize', function() { diff --git a/test/unit/units.js b/test/unit/units.js index ac1e947..2da81dc 100644 --- a/test/unit/units.js +++ b/test/unit/units.js @@ -5,19 +5,12 @@ describe('Units', function() { it('defaults', function() { // check that an empty config has the default units (and nothing more) - const def1 = u.parse({}) - Object.keys(def1).filter(public).length.should.equal(4) - def1.U.should.equal(19.05) - def1.u.should.equal(19) - def1.cx.should.equal(18) - def1.cy.should.equal(17) - // check that an empty config has the default units (and nothing more) - const def2 = u.parse() - Object.keys(def2).filter(public).length.should.equal(4) - def2.U.should.equal(19.05) - def2.u.should.equal(19) - def2.cx.should.equal(18) - def2.cy.should.equal(17) + const def = u.parse({}) + Object.keys(def).filter(public).length.should.equal(4) + def.U.should.equal(19.05) + def.u.should.equal(19) + def.cx.should.equal(18) + def.cy.should.equal(17) }) it('units', function() { @@ -54,4 +47,4 @@ describe('Units', function() { res.a.should.equal(20.05) }) -}) +}) \ No newline at end of file diff --git a/test/unit/utils.js b/test/unit/utils.js index 7ac48b8..e702791 100644 --- a/test/unit/utils.js +++ b/test/unit/utils.js @@ -33,7 +33,6 @@ describe('Utils', function() { {longlonglong: 'long', short: 'shortshortshort'} ).should.equal('long_shortshortshort') u.template('{{a.b.c}}', {a: {b: {c: 'deep'}}}).should.equal('deep') - u.template('{x: {{number}}, y: {{number}}}', {number: 5}).should.equal('{x: 5, y: 5}') }) it('eq', function() {