text:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="6.5.0">
<drawing>
<settings>
<setting alwaysvectorfont="no"/>
<setting verticaltext="up"/>
</settings>
<grid distance="0.025" unitdist="inch" unit="inch" style="lines" multiple="1" display="yes" altdistance="0.025" altunitdist="inch" altunit="inch"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
<layer number="2" name="Route2" color="1" fill="3" visible="no" active="no"/>
<layer number="3" name="Route3" color="4" fill="3" visible="no" active="no"/>
<layer number="4" name="Route4" color="1" fill="4" visible="no" active="no"/>
<layer number="5" name="Route5" color="4" fill="4" visible="no" active="no"/>
<layer number="6" name="Route6" color="1" fill="8" visible="no" active="no"/>
<layer number="7" name="Route7" color="4" fill="8" visible="no" active="no"/>
<layer number="8" name="Route8" color="1" fill="2" visible="no" active="no"/>
<layer number="9" name="Route9" color="4" fill="2" visible="no" active="no"/>
<layer number="10" name="Route10" color="1" fill="7" visible="no" active="no"/>
<layer number="11" name="Route11" color="4" fill="7" visible="no" active="no"/>
<layer number="12" name="Route12" color="1" fill="5" visible="no" active="no"/>
<layer number="13" name="Route13" color="4" fill="5" visible="no" active="no"/>
<layer number="14" name="Route14" color="1" fill="6" visible="no" active="no"/>
<layer number="15" name="Route15" color="4" fill="6" visible="no" active="no"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>
<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>
<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>
<layer number="19" name="Unrouted" color="11" fill="1" visible="yes" active="yes"/>
<layer number="20" name="Dimension" color="15" fill="1" visible="yes" active="yes"/>
<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="29" name="tStop" color="7" fill="3" visible="yes" active="yes"/>
<layer number="30" name="bStop" color="7" fill="6" visible="yes" active="yes"/>
<layer number="31" name="tCream" color="7" fill="4" visible="yes" active="yes"/>
<layer number="32" name="bCream" color="7" fill="5" visible="yes" active="yes"/>
<layer number="33" name="tFinish" color="6" fill="3" visible="yes" active="yes"/>
<layer number="34" name="bFinish" color="6" fill="6" visible="yes" active="yes"/>
<layer number="35" name="tGlue" color="7" fill="4" visible="yes" active="yes"/>
<layer number="36" name="bGlue" color="7" fill="5" visible="yes" active="yes"/>
<layer number="37" name="tTest" color="7" fill="1" visible="yes" active="yes"/>
<layer number="38" name="bTest" color="7" fill="1" visible="yes" active="yes"/>
<layer number="39" name="tKeepout" color="4" fill="11" visible="yes" active="yes"/>
<layer number="40" name="bKeepout" color="1" fill="11" visible="yes" active="yes"/>
<layer number="41" name="tRestrict" color="4" fill="10" visible="yes" active="yes"/>
<layer number="42" name="bRestrict" color="1" fill="10" visible="yes" active="yes"/>
<layer number="43" name="vRestrict" color="2" fill="10" visible="yes" active="yes"/>
<layer number="44" name="Drills" color="7" fill="1" visible="yes" active="yes"/>
<layer number="45" name="Holes" color="7" fill="1" visible="yes" active="yes"/>
<layer number="46" name="Milling" color="3" fill="1" visible="yes" active="yes"/>
<layer number="47" name="Measures" color="7" fill="1" visible="yes" active="yes"/>
<layer number="48" name="Document" color="7" fill="1" visible="yes" active="yes"/>
<layer number="49" name="Reference" color="7" fill="1" visible="yes" active="yes"/>
<layer number="50" name="dxf" color="7" fill="1" visible="no" active="no"/>
<layer number="51" name="tDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="52" name="bDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="53" name="tGND_GNDA" color="7" fill="9" visible="no" active="no"/>
<layer number="54" name="bGND_GNDA" color="1" fill="9" visible="no" active="no"/>
<layer number="56" name="wert" color="7" fill="1" visible="no" active="no"/>
<layer number="57" name="tCAD" color="7" fill="1" visible="no" active="no"/>
<layer number="59" name="tCarbon" color="7" fill="1" visible="no" active="no"/>
<layer number="60" name="bCarbon" color="7" fill="1" visible="no" active="no"/>
<layer number="90" name="Modules" color="5" fill="1" visible="no" active="no"/>
<layer number="91" name="Nets" color="2" fill="1" visible="no" active="no"/>
<layer number="92" name="Busses" color="1" fill="1" visible="no" active="no"/>
<layer number="93" name="Pins" color="2" fill="1" visible="no" active="no"/>
<layer number="94" name="Symbols" color="4" fill="1" visible="no" active="no"/>
<layer number="95" name="Names" color="7" fill="1" visible="no" active="no"/>
<layer number="96" name="Values" color="7" fill="1" visible="no" active="no"/>
<layer number="97" name="Info" color="7" fill="1" visible="no" active="no"/>
<layer number="98" name="Guide" color="6" fill="1" visible="no" active="no"/>
<layer number="99" name="SpiceOrder" color="7" fill="1" visible="no" active="no"/>
<layer number="100" name="Muster" color="7" fill="1" visible="no" active="no"/>
<layer number="101" name="Patch_Top" color="12" fill="4" visible="yes" active="yes"/>
<layer number="102" name="Vscore" color="7" fill="1" visible="yes" active="yes"/>
<layer number="103" name="tMap" color="7" fill="1" visible="yes" active="yes"/>
<layer number="104" name="Name" color="16" fill="1" visible="yes" active="yes"/>
<layer number="105" name="tPlate" color="7" fill="1" visible="yes" active="yes"/>
<layer number="106" name="bPlate" color="7" fill="1" visible="yes" active="yes"/>
<layer number="107" name="Crop" color="7" fill="1" visible="yes" active="yes"/>
<layer number="108" name="tplace-old" color="10" fill="1" visible="yes" active="yes"/>
<layer number="109" name="ref-old" color="11" fill="1" visible="yes" active="yes"/>
<layer number="110" name="fp0" color="7" fill="1" visible="yes" active="yes"/>
<layer number="111" name="LPC17xx" color="7" fill="1" visible="yes" active="yes"/>
<layer number="112" name="tSilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="113" name="IDFDebug" color="4" fill="1" visible="yes" active="yes"/>
<layer number="116" name="Patch_BOT" color="9" fill="4" visible="yes" active="yes"/>
<layer number="118" name="Rect_Pads" color="7" fill="1" visible="yes" active="yes"/>
<layer number="121" name="_tsilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="122" name="_bsilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="123" name="tTestmark" color="7" fill="1" visible="yes" active="yes"/>
<layer number="124" name="bTestmark" color="7" fill="1" visible="yes" active="yes"/>
<layer number="125" name="_tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="126" name="_bNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="127" name="_tValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="128" name="_bValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="129" name="Mask" color="7" fill="1" visible="yes" active="yes"/>
<layer number="131" name="tAdjust" color="7" fill="1" visible="yes" active="yes"/>
<layer number="132" name="bAdjust" color="7" fill="1" visible="yes" active="yes"/>
<layer number="144" name="Drill_legend" color="7" fill="1" visible="yes" active="yes"/>
<layer number="150" name="Notes" color="7" fill="1" visible="yes" active="yes"/>
<layer number="151" name="HeatSink" color="7" fill="1" visible="yes" active="yes"/>
<layer number="152" name="_bDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="153" name="FabDoc1" color="7" fill="1" visible="yes" active="yes"/>
<layer number="154" name="FabDoc2" color="7" fill="1" visible="yes" active="yes"/>
<layer number="155" name="FabDoc3" color="7" fill="1" visible="yes" active="yes"/>
<layer number="199" name="Contour" color="7" fill="1" visible="yes" active="yes"/>
<layer number="200" name="200bmp" color="1" fill="10" visible="yes" active="yes"/>
<layer number="201" name="201bmp" color="2" fill="10" visible="yes" active="yes"/>
<layer number="202" name="202bmp" color="3" fill="10" visible="yes" active="yes"/>
<layer number="203" name="203bmp" color="4" fill="10" visible="yes" active="yes"/>
<layer number="204" name="204bmp" color="5" fill="10" visible="yes" active="yes"/>
<layer number="205" name="205bmp" color="6" fill="10" visible="yes" active="yes"/>
<layer number="206" name="206bmp" color="7" fill="10" visible="yes" active="yes"/>
<layer number="207" name="207bmp" color="8" fill="10" visible="yes" active="yes"/>
<layer number="208" name="208bmp" color="9" fill="10" visible="yes" active="yes"/>
<layer number="209" name="209bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="210" name="210bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="211" name="211bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="212" name="212bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="213" name="213bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="214" name="214bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="215" name="215bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="216" name="216bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="217" name="217bmp" color="18" fill="1" visible="no" active="no"/>
<layer number="218" name="218bmp" color="19" fill="1" visible="no" active="no"/>
<layer number="219" name="219bmp" color="20" fill="1" visible="no" active="no"/>
<layer number="220" name="220bmp" color="21" fill="1" visible="no" active="no"/>
<layer number="221" name="221bmp" color="22" fill="1" visible="no" active="no"/>
<layer number="222" name="222bmp" color="23" fill="1" visible="no" active="no"/>
<layer number="223" name="223bmp" color="24" fill="1" visible="no" active="no"/>
<layer number="224" name="224bmp" color="25" fill="1" visible="no" active="no"/>
<layer number="225" name="225bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="226" name="226bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="227" name="227bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="228" name="228bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="229" name="229bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="230" name="230bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="231" name="231bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="248" name="Housing" color="7" fill="1" visible="yes" active="yes"/>
<layer number="249" name="Edge" color="7" fill="1" visible="yes" active="yes"/>
<layer number="250" name="Descript" color="3" fill="1" visible="no" active="no"/>
<layer number="251" name="SMDround" color="12" fill="11" visible="no" active="no"/>
<layer number="254" name="cooling" color="7" fill="1" visible="yes" active="yes"/>
<layer number="255" name="routoute" color="7" fill="1" visible="yes" active="yes"/>
</layers>
<board>
<plain>
<wire x1="0" y1="73.152" x2="49.383" y2="73.152" width="0" layer="20"/>
<wire x1="49.383" y1="73.152" x2="49.383" y2="99.492" width="0" layer="20"/>
<wire x1="49.383" y1="99.492" x2="0" y2="99.492" width="0" layer="20"/>
<wire x1="0" y1="99.492" x2="0" y2="73.152" width="0" layer="20"/>
<text x="38.1" y="77.47" size="1.778" layer="25" rot="R90">Tinamous.Com</text>
<text x="40.64" y="77.47" size="1.778" layer="25" rot="R90">IoT USB Switch</text>
</plain>
<libraries>
<library name="SparkFun-Connectors">
<description>
SparkFun Electronics' preferred foot prints

In this library you'll find connectors and sockets- basically anything that can be plugged into or onto.

We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com.

Licensing: Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/

You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.</description>
<packages>
<package name="USB-A-SMT-MALE">
<wire x1="6" y1="14.58" x2="-6" y2="14.58" width="0.2032" layer="51"/>
<wire x1="6" y1="0" x2="-6" y2="0" width="0.2032" layer="21"/>
<wire x1="6" y1="0" x2="6" y2="14.58" width="0.2032" layer="51"/>
<wire x1="-6" y1="0" x2="-6" y2="14.58" width="0.2032" layer="51"/>
<wire x1="6" y1="0" x2="6" y2="-1.22" width="0.2032" layer="21"/>
<wire x1="-6" y1="0" x2="-6" y2="-1.22" width="0.2032" layer="21"/>
<wire x1="-4" y1="-4.22" x2="4" y2="-4.22" width="0.2032" layer="21"/>
<wire x1="4.3" y1="10.28" x2="1.9" y2="10.28" width="0.2032" layer="51"/>
<wire x1="1.9" y1="10.28" x2="1.9" y2="7.98" width="0.2032" layer="51"/>
<wire x1="1.9" y1="7.98" x2="4.3" y2="7.98" width="0.2032" layer="51"/>
<wire x1="4.3" y1="7.98" x2="4.3" y2="10.28" width="0.2032" layer="51"/>
<wire x1="-1.9" y1="10.28" x2="-4.3" y2="10.28" width="0.2032" layer="51"/>
<wire x1="-4.3" y1="10.28" x2="-4.3" y2="7.98" width="0.2032" layer="51"/>
<wire x1="-4.3" y1="7.98" x2="-1.9" y2="7.98" width="0.2032" layer="51"/>
<wire x1="-1.9" y1="7.98" x2="-1.9" y2="10.28" width="0.2032" layer="51"/>
<smd name="D+1" x="1.027" y="-5.87" dx="2.5" dy="0.8" layer="1" rot="R270"/>
<smd name="D-1" x="-1.027" y="-5.87" dx="2.5" dy="0.8" layer="1" rot="R270"/>
<smd name="GND1" x="3.5508" y="-5.87" dx="2.5" dy="0.8" layer="1" rot="R270"/>
<pad name="P$1" x="5.85" y="-3.05" drill="0.8" diameter="1.778" shape="long" rot="R90"/>
<pad name="P$3" x="-5.85" y="-3.05" drill="0.8" diameter="1.778" shape="long" rot="R90"/>
<smd name="VBUS1" x="-3.5" y="-5.87" dx="2.5" dy="0.8" layer="1" rot="R270"/>
<text x="-2.7" y="-9.07" size="1.27" layer="25">>NAME</text>
<text x="-4.4" y="0.68" size="1.27" layer="51">PCB Edge</text>
<hole x="2.25" y="-3.12" drill="1.1"/>
<hole x="-2.25" y="-3.12" drill="1.1"/>
<hole x="-5.85" y="-3.45" drill="0.8"/>
<hole x="-5.85" y="-3.85" drill="0.8"/>
<hole x="-5.85" y="-2.65" drill="0.8"/>
<hole x="-5.85" y="-2.25" drill="0.8"/>
<hole x="5.85" y="-3.45" drill="0.8"/>
<hole x="5.85" y="-3.85" drill="0.8"/>
<hole x="5.85" y="-2.65" drill="0.8"/>
<hole x="5.85" y="-2.25" drill="0.8"/>
</package>
</packages>
</library>
<library name="SparkFun-Aesthetics">
<description>
SparkFun Electronics' preferred foot prints

In this library you'll find non-functional items- supply symbols, logos, notations, frame blocks, etc.

We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com.

Licensing: Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/

You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.</description>
<packages>
<package name="OSHW-LOGO-M_COPPER">
<polygon width="0.15" layer="1">
<vertex x="0.6578" y="-1.588" curve="9.499253"/>
<vertex x="0.9108" y="-1.4576"/>
<vertex x="1.5392" y="-1.97"/>
<vertex x="1.97" y="-1.5392"/>
<vertex x="1.4576" y="-0.9108" curve="19.001165"/>
<vertex x="1.6747" y="-0.3866"/>
<vertex x="2.4814" y="-0.3047"/>
<vertex x="2.4814" y="0.3047"/>
<vertex x="1.6747" y="0.3866" curve="19.001165"/>
<vertex x="1.4576" y="0.9108"/>
<vertex x="1.97" y="1.5392"/>
<vertex x="1.5392" y="1.97"/>
<vertex x="0.9108" y="1.4576" curve="19.001165"/>
<vertex x="0.3866" y="1.6747"/>
<vertex x="0.3047" y="2.4814"/>
<vertex x="-0.3047" y="2.4814"/>
<vertex x="-0.3866" y="1.6747" curve="19.001165"/>
<vertex x="-0.9108" y="1.4576"/>
<vertex x="-1.5392" y="1.97"/>
<vertex x="-1.97" y="1.5392"/>
<vertex x="-1.4576" y="0.9108" curve="19.001165"/>
<vertex x="-1.6747" y="0.3866"/>
<vertex x="-2.4814" y="0.3047"/>
<vertex x="-2.4814" y="-0.3047"/>
<vertex x="-1.6747" y="-0.3866" curve="19.001165"/>
<vertex x="-1.4576" y="-0.9108"/>
<vertex x="-1.97" y="-1.5392"/>
<vertex x="-1.5392" y="-1.97"/>
<vertex x="-0.9108" y="-1.4576" curve="9.499253"/>
<vertex x="-0.6578" y="-1.588"/>
<vertex x="-0.299" y="-0.7218" curve="-67.507353"/>
<vertex x="-0.7813" y="0" curve="-247.497552"/>
<vertex x="0.299" y="-0.7218"/>
</polygon>
</package>
</packages>
</library>
<library name="SparkFun-Passives">
<description>
SparkFun Electronics' preferred foot prints

In this library you'll find resistors, capacitors, inductors, test points, jumper pads, etc.

We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com.

Licensing: Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/

You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.</description>
<packages>
<package name="1206">
<wire x1="-2.473" y1="0.983" x2="2.473" y2="0.983" width="0.0508" layer="39"/>
<wire x1="2.473" y1="-0.983" x2="-2.473" y2="-0.983" width="0.0508" layer="39"/>
<wire x1="-2.473" y1="-0.983" x2="-2.473" y2="0.983" width="0.0508" layer="39"/>
<wire x1="2.473" y1="0.983" x2="2.473" y2="-0.983" width="0.0508" layer="39"/>
<wire x1="-0.965" y1="0.787" x2="0.965" y2="0.787" width="0.1016" layer="51"/>
<wire x1="-0.965" y1="-0.787" x2="0.965" y2="-0.787" width="0.1016" layer="51"/>
<smd name="1" x="-1.4" y="0" dx="1.6" dy="1.8" layer="1"/>
<smd name="2" x="1.4" y="0" dx="1.6" dy="1.8" layer="1"/>
<text x="-1.27" y="1.143" size="0.4064" layer="25">>NAME</text>
<text x="-1.397" y="-1.524" size="0.4064" layer="27">>VALUE</text>
<rectangle x1="-1.7018" y1="-0.8509" x2="-0.9517" y2="0.8491" layer="51"/>
<rectangle x1="0.9517" y1="-0.8491" x2="1.7018" y2="0.8509" layer="51"/>
<rectangle x1="-0.1999" y1="-0.4001" x2="0.1999" y2="0.4001" layer="35"/>
</package>
<package name="0805">
<wire x1="-0.3" y1="0.6" x2="0.3" y2="0.6" width="0.1524" layer="21"/>
<wire x1="-0.3" y1="-0.6" x2="0.3" y2="-0.6" width="0.1524" layer="21"/>
<smd name="1" x="-0.9" y="0" dx="0.8" dy="1.2" layer="1"/>
<smd name="2" x="0.9" y="0" dx="0.8" dy="1.2" layer="1"/>
<text x="-0.762" y="0.8255" size="0.4064" layer="25">>NAME</text>
<text x="-1.016" y="-1.397" size="0.4064" layer="27">>VALUE</text>
</package>
</packages>
</library>
<library name="con-berg">
<description>Berg Connectors

Based on  the following source:

http://catalog.fciconnect.com

<author>Created by librarian@cadsoft.de</author></description>
<packages>
<package name="PN87520">
<description>USB connector</description>
<wire x1="-7.4" y1="-10.19" x2="7.4" y2="-10.19" width="0.254" layer="21"/>
<wire x1="7.4" y1="-10.19" x2="7.4" y2="4.11" width="0.254" layer="21"/>
<wire x1="7.4" y1="4.11" x2="-7.4" y2="4.11" width="0.254" layer="21"/>
<wire x1="-7.4" y1="4.11" x2="-7.4" y2="-10.19" width="0.254" layer="21"/>
<wire x1="-5.08" y1="-2.87" x2="-3.81" y2="-8.72" width="0.1524" layer="21"/>
<wire x1="-3.81" y1="-8.72" x2="-2.54" y2="-8.72" width="0.1524" layer="21"/>
<wire x1="-2.54" y1="-8.72" x2="-1.27" y2="-2.87" width="0.1524" layer="21"/>
<wire x1="1.27" y1="-2.87" x2="2.54" y2="-8.72" width="0.1524" layer="21"/>
<wire x1="2.54" y1="-8.72" x2="3.81" y2="-8.72" width="0.1524" layer="21"/>
<wire x1="3.81" y1="-8.72" x2="5.08" y2="-2.87" width="0.1524" layer="21"/>
<wire x1="-2.46" y1="-0.1" x2="-2.46" y2="0.9" width="0.0508" layer="21" curve="180"/>
<wire x1="-2.46" y1="-1.1" x2="-2.46" y2="-0.1" width="0.0508" layer="21" curve="180"/>
<wire x1="3.665" y1="0.4" x2="3.665" y2="-0.6" width="0.0508" layer="21" curve="180"/>
<wire x1="3.415" y1="0.9" x2="3.415" y2="-1.1" width="0.0508" layer="21" curve="180"/>
<wire x1="3.665" y1="0.4" x2="4.165" y2="0.4" width="0.0508" layer="21" curve="-15.189287"/>
<wire x1="3.415" y1="0.9" x2="4.175" y2="0.845" width="0.0508" layer="21" curve="-12.05913"/>
<wire x1="3.415" y1="-1.1" x2="4.165" y2="-0.975" width="0.0508" layer="21" curve="18.422836"/>
<wire x1="1.665" y1="-0.35" x2="1.665" y2="0.9" width="0.0508" layer="21" curve="180"/>
<wire x1="1.29" y1="0.025" x2="1.29" y2="0.4" width="0.0508" layer="21" curve="180"/>
<wire x1="-3.835" y1="0.9" x2="-3.835" y2="-1.1" width="0.0508" layer="21"/>
<wire x1="-3.835" y1="-1.1" x2="-3.21" y2="-1.1" width="0.0508" layer="21"/>
<wire x1="-3.21" y1="-1.1" x2="-3.21" y2="-0.1" width="0.0508" layer="21"/>
<wire x1="-3.21" y1="-0.1" x2="-3.21" y2="0.9" width="0.0508" layer="21"/>
<wire x1="-3.21" y1="0.9" x2="-3.835" y2="0.9" width="0.0508" layer="21"/>
<wire x1="-3.21" y1="0.9" x2="-2.46" y2="0.4" width="0.0508" layer="21"/>
<wire x1="-2.46" y1="0.4" x2="-3.21" y2="-0.1" width="0.0508" layer="21"/>
<wire x1="-3.21" y1="-0.1" x2="-2.46" y2="-0.6" width="0.0508" layer="21"/>
<wire x1="-2.46" y1="-0.6" x2="-3.21" y2="-1.1" width="0.0508" layer="21"/>
<wire x1="-2.46" y1="-1.1" x2="-3.21" y2="-1.1" width="0.0508" layer="21"/>
<wire x1="-2.46" y1="0.9" x2="-3.21" y2="0.9" width="0.0508" layer="21"/>
<wire x1="-1.71" y1="0.9" x2="-1.71" y2="-1.1" width="0.0508" layer="21"/>
<wire x1="-1.71" y1="-1.1" x2="0.04" y2="-1.1" width="0.0508" layer="21"/>
<wire x1="0.04" y1="-1.1" x2="0.04" y2="-0.6" width="0.0508" layer="21"/>
<wire x1="0.04" y1="-0.6" x2="-1.085" y2="-0.6" width="0.0508" layer="21"/>
<wire x1="-1.085" y1="-0.6" x2="-1.085" y2="-0.35" width="0.0508" layer="21"/>
<wire x1="-1.085" y1="-0.35" x2="0.04" y2="-0.35" width="0.0508" layer="21"/>
<wire x1="0.04" y1="-0.35" x2="0.04" y2="0.15" width="0.0508" layer="21"/>
<wire x1="0.04" y1="0.15" x2="-1.085" y2="0.15" width="0.0508" layer="21"/>
<wire x1="-1.085" y1="0.15" x2="-1.085" y2="0.4" width="0.0508" layer="21"/>
<wire x1="-1.085" y1="0.4" x2="0.04" y2="0.4" width="0.0508" layer="21"/>
<wire x1="0.04" y1="0.4" x2="0.04" y2="0.9" width="0.0508" layer="21"/>
<wire x1="0.04" y1="0.9" x2="-1.71" y2="0.9" width="0.0508" layer="21"/>
<wire x1="0.29" y1="0.9" x2="0.29" y2="-1.1" width="0.0508" layer="21"/>
<wire x1="0.29" y1="-1.1" x2="0.915" y2="-1.1" width="0.0508" layer="21"/>
<wire x1="0.915" y1="-1.1" x2="0.915" y2="-0.35" width="0.0508" layer="21"/>
<wire x1="0.915" y1="-0.35" x2="1.415" y2="-1.1" width="0.0508" layer="21"/>
<wire x1="1.415" y1="-1.1" x2="2.165" y2="-1.1" width="0.0508" layer="21"/>
<wire x1="2.165" y1="-1.1" x2="1.665" y2="-0.35" width="0.0508" layer="21"/>
<wire x1="0.915" y1="0.4" x2="0.915" y2="0.025" width="0.0508" layer="21"/>
<wire x1="0.29" y1="0.9" x2="1.665" y2="0.9" width="0.0508" layer="21"/>
<wire x1="0.915" y1="0.4" x2="1.29" y2="0.4" width="0.0508" layer="21"/>
<wire x1="0.915" y1="0.025" x2="1.29" y2="0.025" width="0.0508" layer="21"/>
<wire x1="3.665" y1="-0.1" x2="4.165" y2="-0.1" width="0.0508" layer="21"/>
<wire x1="3.665" y1="-0.1" x2="3.665" y2="-0.6" width="0.0508" layer="21"/>
<wire x1="4.16" y1="0.4" x2="4.16" y2="0.845" width="0.0508" layer="21"/>
<wire x1="4.165" y1="-0.1" x2="4.165" y2="-0.975" width="0.0508" layer="21"/>
<pad name="2" x="-1" y="2.71" drill="0.95" shape="long" rot="R90"/>
<pad name="3" x="1" y="2.71" drill="0.95" shape="long" rot="R90"/>
<pad name="1" x="-3.5" y="2.71" drill="0.95" shape="long" rot="R90"/>
<pad name="4" x="3.5" y="2.71" drill="0.95" shape="long" rot="R90"/>
<text x="-7.62" y="5.08" size="1.27" layer="25">>NAME</text>
<text x="9.144" y="-10.16" size="1.27" layer="27" rot="R90">>VALUE</text>
<text x="-3.81" y="-2.04" size="0.4064" layer="21">E L E C T R O N I C S</text>
<hole x="-6.57" y="0" drill="2.3"/>
<hole x="6.57" y="0" drill="2.3"/>
</package>
</packages>
</library>
<library name="Spark">
<packages>
<package name="PHOTON">
<pad name="1" x="1.27" y="32.258" drill="1.016" diameter="1.8796"/>
<pad name="2" x="1.27" y="29.718" drill="1.016" diameter="1.8796"/>
<pad name="3" x="1.27" y="27.178" drill="1.016" diameter="1.8796"/>
<pad name="4" x="1.27" y="24.638" drill="1.016" diameter="1.8796"/>
<pad name="5" x="1.27" y="22.098" drill="1.016" diameter="1.8796"/>
<pad name="6" x="1.27" y="19.558" drill="1.016" diameter="1.8796"/>
<pad name="7" x="1.27" y="17.018" drill="1.016" diameter="1.8796"/>
<pad name="8" x="1.27" y="14.478" drill="1.016" diameter="1.8796"/>
<pad name="9" x="1.27" y="11.938" drill="1.016" diameter="1.8796"/>
<pad name="10" x="1.27" y="9.398" drill="1.016" diameter="1.8796"/>
<pad name="11" x="1.27" y="6.858" drill="1.016" diameter="1.8796"/>
<pad name="12" x="1.27" y="4.318" drill="1.016" diameter="1.8796"/>
<text x="2.54" y="-1.778" size="1.27" layer="25" ratio="10">>NAME</text>
<rectangle x1="1.016" y1="16.764" x2="1.524" y2="17.272" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="19.304" x2="1.524" y2="19.812" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="21.844" x2="1.524" y2="22.352" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="24.384" x2="1.524" y2="24.892" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="26.924" x2="1.524" y2="27.432" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="29.464" x2="1.524" y2="29.972" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="32.004" x2="1.524" y2="32.512" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="14.224" x2="1.524" y2="14.732" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="11.684" x2="1.524" y2="12.192" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="9.144" x2="1.524" y2="9.652" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="6.604" x2="1.524" y2="7.112" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="4.064" x2="1.524" y2="4.572" layer="51" rot="R270"/>
<pad name="13" x="19.05" y="4.318" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="14" x="19.05" y="6.858" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="15" x="19.05" y="9.398" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="16" x="19.05" y="11.938" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="17" x="19.05" y="14.478" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="18" x="19.05" y="17.018" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="19" x="19.05" y="19.558" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="20" x="19.05" y="22.098" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="21" x="19.05" y="24.638" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="22" x="19.05" y="27.178" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="23" x="19.05" y="29.718" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="24" x="19.05" y="32.258" drill="1.016" diameter="1.8796" rot="R180"/>
<text x="2.54" y="-3.302" size="1.27" layer="27" rot="SR0">>VALUE</text>
<rectangle x1="18.796" y1="19.304" x2="19.304" y2="19.812" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="16.764" x2="19.304" y2="17.272" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="14.224" x2="19.304" y2="14.732" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="11.684" x2="19.304" y2="12.192" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="9.144" x2="19.304" y2="9.652" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="6.604" x2="19.304" y2="7.112" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="4.064" x2="19.304" y2="4.572" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="21.844" x2="19.304" y2="22.352" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="24.384" x2="19.304" y2="24.892" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="26.924" x2="19.304" y2="27.432" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="29.464" x2="19.304" y2="29.972" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="32.004" x2="19.304" y2="32.512" layer="51" rot="R90"/>
<wire x1="20.32" y1="33.528" x2="20.32" y2="36.576" width="0.3048" layer="21"/>
<wire x1="0" y1="36.576" x2="0" y2="33.528" width="0.3048" layer="21"/>
<wire x1="6.096" y1="38.481" x2="6.096" y2="36.576" width="0.3048" layer="21"/>
<wire x1="14.224" y1="36.576" x2="14.224" y2="38.481" width="0.3048" layer="21"/>
<wire x1="14.224" y1="38.481" x2="6.096" y2="38.481" width="0.3048" layer="21"/>
<wire x1="0" y1="36.576" x2="6.096" y2="36.576" width="0.3048" layer="21"/>
<wire x1="14.224" y1="36.576" x2="20.32" y2="36.576" width="0.3048" layer="21"/>
<wire x1="0" y1="3.048" x2="1.524" y2="0" width="0.3048" layer="21"/>
<wire x1="1.524" y1="0" x2="18.796" y2="0" width="0.3048" layer="21"/>
<wire x1="18.796" y1="0" x2="20.32" y2="3.048" width="0.3048" layer="21"/>
<wire x1="0" y1="33.528" x2="0" y2="3.048" width="0.3048" layer="21"/>
<wire x1="0" y1="3.048" x2="2.54" y2="3.048" width="0.3048" layer="21"/>
<wire x1="2.54" y1="3.048" x2="2.54" y2="33.528" width="0.3048" layer="21"/>
<wire x1="2.54" y1="33.528" x2="0" y2="33.528" width="0.3048" layer="21"/>
<wire x1="20.32" y1="33.528" x2="20.32" y2="3.048" width="0.3048" layer="21"/>
<wire x1="20.32" y1="3.048" x2="17.78" y2="3.048" width="0.3048" layer="21"/>
<wire x1="17.78" y1="33.528" x2="20.32" y2="33.528" width="0.3048" layer="21"/>
<wire x1="0" y1="3.048" x2="1.524" y2="0" width="0.3048" layer="51"/>
<wire x1="1.524" y1="0" x2="18.796" y2="0" width="0.3048" layer="51"/>
<wire x1="18.796" y1="0" x2="20.32" y2="3.048" width="0.3048" layer="51"/>
<text x="19.05" y="4.064" size="0.6096" layer="51" font="vector">13</text>
<text x="3.302" y="0.381" size="0.6096" layer="51" font="vector">GROUND PLANE
AND SIGNAL KEEP OUT
RECOMMENDED ON ALL LAYERS</text>
<wire x1="1.524" y1="3.048" x2="1.524" y2="-3.556" width="0.127" layer="51" style="shortdash"/>
<wire x1="1.524" y1="-3.556" x2="18.796" y2="-3.556" width="0.127" layer="51" style="shortdash"/>
<wire x1="18.796" y1="-3.556" x2="18.796" y2="3.048" width="0.127" layer="51" style="shortdash"/>
<wire x1="18.796" y1="3.048" x2="17.78" y2="3.048" width="0.127" layer="51" style="shortdash"/>
<wire x1="17.78" y1="3.048" x2="17.78" y2="5.588" width="0.127" layer="51" style="shortdash"/>
<wire x1="17.78" y1="5.588" x2="2.54" y2="5.588" width="0.127" layer="51" style="shortdash"/>
<wire x1="2.54" y1="5.588" x2="2.54" y2="3.048" width="0.127" layer="51" style="shortdash"/>
<wire x1="2.54" y1="3.048" x2="1.524" y2="3.048" width="0.127" layer="51" style="shortdash"/>
<wire x1="17.78" y1="3.048" x2="17.78" y2="33.528" width="0.3048" layer="21"/>
<wire x1="0" y1="3.048" x2="0" y2="33.528" width="0.3048" layer="51"/>
<wire x1="0" y1="33.528" x2="0" y2="36.576" width="0.3048" layer="51"/>
<wire x1="0" y1="36.576" x2="6.096" y2="36.576" width="0.3048" layer="51"/>
<wire x1="6.096" y1="36.576" x2="6.096" y2="38.481" width="0.3048" layer="51"/>
<wire x1="6.096" y1="38.481" x2="14.224" y2="38.481" width="0.3048" layer="51"/>
<wire x1="14.224" y1="38.481" x2="14.224" y2="36.576" width="0.3048" layer="51"/>
<wire x1="14.224" y1="36.576" x2="20.32" y2="36.576" width="0.3048" layer="51"/>
<wire x1="20.32" y1="36.576" x2="20.32" y2="33.528" width="0.3048" layer="51"/>
<rectangle x1="1.524" y1="-3.556" x2="18.796" y2="3.048" layer="39"/>
<rectangle x1="2.54" y1="3.048" x2="17.78" y2="5.588" layer="39"/>
<rectangle x1="2.54" y1="3.048" x2="17.78" y2="5.588" layer="40"/>
<rectangle x1="1.524" y1="-3.556" x2="18.796" y2="3.048" layer="40"/>
<text x="2.794" y="32.004" size="0.6096" layer="51" font="vector">1</text>
<text x="2.794" y="4.064" size="0.6096" layer="51" font="vector">12</text>
<text x="16.51" y="4.064" size="0.6096" layer="51" font="vector">13</text>
<text x="16.51" y="32.004" size="0.6096" layer="51" font="vector">24</text>
<wire x1="20.32" y1="33.528" x2="20.32" y2="3.048" width="0.3048" layer="51"/>
<wire x1="0" y1="33.528" x2="2.54" y2="33.528" width="0.3048" layer="51"/>
<wire x1="2.54" y1="33.528" x2="2.54" y2="3.048" width="0.3048" layer="51"/>
<wire x1="2.54" y1="3.048" x2="0" y2="3.048" width="0.3048" layer="51"/>
<wire x1="20.32" y1="3.048" x2="17.78" y2="3.048" width="0.3048" layer="51"/>
<wire x1="17.78" y1="3.048" x2="17.78" y2="33.528" width="0.3048" layer="51"/>
<wire x1="17.78" y1="33.528" x2="20.32" y2="33.528" width="0.3048" layer="51"/>
</package>
<package name="TACTILE_SWITCH_SMD">
<smd name="1" x="-1.875" y="0.775" dx="0.65" dy="1.25" layer="1" rot="R90"/>
<smd name="2" x="1.875" y="0.775" dx="0.65" dy="1.25" layer="1" rot="R90"/>
<smd name="3" x="-1.875" y="-0.775" dx="0.65" dy="1.25" layer="1" rot="R90"/>
<smd name="4" x="1.875" y="-0.775" dx="0.65" dy="1.25" layer="1" rot="R90"/>
<text x="-0.889" y="1.778" size="0.4064" layer="25">>NAME</text>
<text x="-0.889" y="-2.032" size="0.4064" layer="27">>Value</text>
<wire x1="-1.8" y1="1.5" x2="1.8" y2="1.5" width="0.127" layer="51"/>
<wire x1="1.8" y1="1.5" x2="1.8" y2="-1.5" width="0.127" layer="51"/>
<wire x1="1.8" y1="-1.5" x2="-1.8" y2="-1.5" width="0.127" layer="51"/>
<wire x1="-1.8" y1="-1.5" x2="-1.8" y2="1.5" width="0.127" layer="51"/>
<wire x1="-1" y1="1.5" x2="0.9" y2="1.5" width="0.2" layer="21"/>
<wire x1="-1" y1="-1.5" x2="1" y2="-1.5" width="0.2" layer="21"/>
<wire x1="-1.8" y1="0.2" x2="-1.8" y2="-0.2" width="0.2" layer="21"/>
<wire x1="1.8" y1="0.2" x2="1.8" y2="-0.2" width="0.2" layer="21"/>
<circle x="0" y="0" radius="0.875" width="0.2" layer="21"/>
</package>
</packages>
</library>
<library name="SparkFun-AnalogIC">
<description>
SparkFun Electronics' preferred foot prints

In this library you'll find all manner of analog ICs- DACs, ADCs, video chips, op-amps, and others.

We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com.

Licensing:Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/

You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.</description>
<packages>
<package name="SO08">
<description>Small Outline Package Fits JEDEC packages (narrow SOIC-8)</description>
<circle x="-2.7813" y="-1.5748" radius="0.1436" width="0.2032" layer="21"/>
<wire x1="-2.362" y1="-1.803" x2="2.362" y2="-1.803" width="0.1524" layer="51"/>
<wire x1="2.362" y1="-1.803" x2="2.362" y2="1.803" width="0.1524" layer="21"/>
<wire x1="2.362" y1="1.803" x2="-2.362" y2="1.803" width="0.1524" layer="51"/>
<wire x1="-2.362" y1="1.803" x2="-2.362" y2="-1.803" width="0.1524" layer="21"/>
<rectangle x1="-2.0828" y1="-2.8702" x2="-1.7272" y2="-1.8542" layer="51"/>
<rectangle x1="-0.8128" y1="-2.8702" x2="-0.4572" y2="-1.8542" layer="51"/>
<rectangle x1="0.4572" y1="-2.8702" x2="0.8128" y2="-1.8542" layer="51"/>
<rectangle x1="1.7272" y1="-2.8702" x2="2.0828" y2="-1.8542" layer="51"/>
<rectangle x1="-2.0828" y1="1.8542" x2="-1.7272" y2="2.8702" layer="51"/>
<rectangle x1="-0.8128" y1="1.8542" x2="-0.4572" y2="2.8702" layer="51"/>
<rectangle x1="0.4572" y1="1.8542" x2="0.8128" y2="2.8702" layer="51"/>
<rectangle x1="1.7272" y1="1.8542" x2="2.0828" y2="2.8702" layer="51"/>
<smd name="1" x="-1.905" y="-2.6162" dx="0.6096" dy="2.2098" layer="1"/>
<smd name="2" x="-0.635" y="-2.6162" dx="0.6096" dy="2.2098" layer="1"/>
<smd name="3" x="0.635" y="-2.6162" dx="0.6096" dy="2.2098" layer="1"/>
<smd name="4" x="1.905" y="-2.6162" dx="0.6096" dy="2.2098" layer="1"/>
<smd name="5" x="1.905" y="2.6162" dx="0.6096" dy="2.2098" layer="1"/>
<smd name="6" x="0.635" y="2.6162" dx="0.6096" dy="2.2098" layer="1"/>
<smd name="7" x="-0.635" y="2.6162" dx="0.6096" dy="2.2098" layer="1"/>
<smd name="8" x="-1.905" y="2.6162" dx="0.6096" dy="2.2098" layer="1"/>
<text x="-1.27" y="-0.635" size="0.4064" layer="27">>VALUE</text>
<text x="-1.27" y="0" size="0.4064" layer="25">>NAME</text>
</package>
</packages>
</library>
<library name="testpad">
<description>Test Pins/Pads

Cream on SMD OFF.

new: Attribute TP_SIGNAL_NAME

<author>Created by librarian@cadsoft.de</author></description>
<packages>
<package name="TP20SQ">
<description>TEST PAD</description>
<smd name="TP" x="0" y="0" dx="2" dy="2" layer="1" cream="no"/>
<text x="-1" y="1.05" size="1.27" layer="25">>NAME</text>
<text x="-1.016" y="-1.143" size="0.0254" layer="27">>VALUE</text>
<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text>
</package>
</packages>
</library>
<library name="SH-linear">
<description>Linear Devices

Operational amplifiers,  comparators, voltage regulators, ADCs, DACs, etc.

<author>Created by librarian@cadsoft.de</author></description>
<packages>
<package name="SO08">
<description>Small Outline Package 8

NS Package M08A</description>
<wire x1="2.4" y1="1.9" x2="2.4" y2="-1.4" width="0.2032" layer="51"/>
<wire x1="2.4" y1="-1.4" x2="2.4" y2="-1.9" width="0.2032" layer="51"/>
<wire x1="2.4" y1="-1.9" x2="-2.4" y2="-1.9" width="0.2032" layer="51"/>
<wire x1="-2.4" y1="-1.9" x2="-2.4" y2="-1.4" width="0.2032" layer="51"/>
<wire x1="-2.4" y1="-1.4" x2="-2.4" y2="1.9" width="0.2032" layer="51"/>
<wire x1="-2.4" y1="1.9" x2="2.4" y2="1.9" width="0.2032" layer="51"/>
<wire x1="2.4" y1="-1.4" x2="-2.4" y2="-1.4" width="0.2032" layer="51"/>
<smd name="2" x="-0.635" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="7" x="-0.635" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="1" x="-1.905" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="3" x="0.635" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="4" x="1.905" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="8" x="-1.905" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="6" x="0.635" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="5" x="1.905" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<text x="-2.667" y="-1.905" size="1.27" layer="25" rot="R90">>NAME</text>
<text x="3.937" y="-1.905" size="1.27" layer="27" rot="R90">>VALUE</text>
<rectangle x1="-2.15" y1="-3.1" x2="-1.66" y2="-2" layer="51"/>
<rectangle x1="-0.88" y1="-3.1" x2="-0.39" y2="-2" layer="51"/>
<rectangle x1="0.39" y1="-3.1" x2="0.88" y2="-2" layer="51"/>
<rectangle x1="1.66" y1="-3.1" x2="2.15" y2="-2" layer="51"/>
<rectangle x1="1.66" y1="2" x2="2.15" y2="3.1" layer="51"/>
<rectangle x1="0.39" y1="2" x2="0.88" y2="3.1" layer="51"/>
<rectangle x1="-0.88" y1="2" x2="-0.39" y2="3.1" layer="51"/>
<rectangle x1="-2.15" y1="2" x2="-1.66" y2="3.1" layer="51"/>
</package>
</packages>
</library>
</libraries>
<attributes>
</attributes>
<variantdefs>
</variantdefs>
<classes>
<class number="0" name="default" width="0" drill="0">
</class>
</classes>
<designrules name="default">
<description language="de">EAGLE Design Rules

Die Standard-Design-Rules sind so gewählt, dass sie für
die meisten Anwendungen passen. Sollte ihre Platine
besondere Anforderungen haben, treffen Sie die erforderlichen
Einstellungen hier und speichern die Design Rules unter
einem neuen Namen ab.</description>
<description language="en">EAGLE Design Rules

The default Design Rules have been set to cover
a wide range of applications. Your particular design
may have different requirements, so please make the
necessary adjustments and save your customized
design rules under a new name.</description>
<param name="layerSetup" value="(1*16)"/>
<param name="mtCopper" value="0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm"/>
<param name="mtIsolate" value="1.5mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm"/>
<param name="mdWireWire" value="8mil"/>
<param name="mdWirePad" value="8mil"/>
<param name="mdWireVia" value="8mil"/>
<param name="mdPadPad" value="8mil"/>
<param name="mdPadVia" value="8mil"/>
<param name="mdViaVia" value="8mil"/>
<param name="mdSmdPad" value="8mil"/>
<param name="mdSmdVia" value="8mil"/>
<param name="mdSmdSmd" value="8mil"/>
<param name="mdViaViaSameLayer" value="8mil"/>
<param name="mnLayersViaInSmd" value="2"/>
<param name="mdCopperDimension" value="40mil"/>
<param name="mdDrill" value="8mil"/>
<param name="mdSmdStop" value="0mil"/>
<param name="msWidth" value="10mil"/>
<param name="msDrill" value="24mil"/>
<param name="msMicroVia" value="9.99mm"/>
<param name="msBlindViaRatio" value="0.5"/>
<param name="rvPadTop" value="0.25"/>
<param name="rvPadInner" value="0.25"/>
<param name="rvPadBottom" value="0.25"/>
<param name="rvViaOuter" value="0.25"/>
<param name="rvViaInner" value="0.25"/>
<param name="rvMicroViaOuter" value="0.25"/>
<param name="rvMicroViaInner" value="0.25"/>
<param name="rlMinPadTop" value="10mil"/>
<param name="rlMaxPadTop" value="20mil"/>
<param name="rlMinPadInner" value="10mil"/>
<param name="rlMaxPadInner" value="20mil"/>
<param name="rlMinPadBottom" value="10mil"/>
<param name="rlMaxPadBottom" value="20mil"/>
<param name="rlMinViaOuter" value="8mil"/>
<param name="rlMaxViaOuter" value="20mil"/>
<param name="rlMinViaInner" value="8mil"/>
<param name="rlMaxViaInner" value="20mil"/>
<param name="rlMinMicroViaOuter" value="4mil"/>
<param name="rlMaxMicroViaOuter" value="20mil"/>
<param name="rlMinMicroViaInner" value="4mil"/>
<param name="rlMaxMicroViaInner" value="20mil"/>
<param name="psTop" value="-1"/>
<param name="psBottom" value="-1"/>
<param name="psFirst" value="-1"/>
<param name="psElongationLong" value="100"/>
<param name="psElongationOffset" value="100"/>
<param name="mvStopFrame" value="1"/>
<param name="mvCreamFrame" value="0"/>
<param name="mlMinStopFrame" value="4mil"/>
<param name="mlMaxStopFrame" value="4mil"/>
<param name="mlMinCreamFrame" value="0mil"/>
<param name="mlMaxCreamFrame" value="0mil"/>
<param name="mlViaStopLimit" value="0mil"/>
<param name="srRoundness" value="0"/>
<param name="srMinRoundness" value="0mil"/>
<param name="srMaxRoundness" value="0mil"/>
<param name="slThermalIsolate" value="10mil"/>
<param name="slThermalsForVias" value="0"/>
<param name="dpMaxLengthDifference" value="10mm"/>
<param name="dpGapFactor" value="2.5"/>
<param name="checkGrid" value="0"/>
<param name="checkAngle" value="0"/>
<param name="checkFont" value="1"/>
<param name="checkRestrict" value="1"/>
<param name="useDiameter" value="13"/>
<param name="maxErrors" value="50"/>
</designrules>
<autorouter>
<pass name="Default">
<param name="RoutingGrid" value="50mil"/>
<param name="tpViaShape" value="round"/>
<param name="PrefDir.1" value="|"/>
<param name="PrefDir.2" value="0"/>
<param name="PrefDir.3" value="0"/>
<param name="PrefDir.4" value="0"/>
<param name="PrefDir.5" value="0"/>
<param name="PrefDir.6" value="0"/>
<param name="PrefDir.7" value="0"/>
<param name="PrefDir.8" value="0"/>
<param name="PrefDir.9" value="0"/>
<param name="PrefDir.10" value="0"/>
<param name="PrefDir.11" value="0"/>
<param name="PrefDir.12" value="0"/>
<param name="PrefDir.13" value="0"/>
<param name="PrefDir.14" value="0"/>
<param name="PrefDir.15" value="0"/>
<param name="PrefDir.16" value="-"/>
<param name="cfVia" value="8"/>
<param name="cfNonPref" value="5"/>
<param name="cfChangeDir" value="2"/>
<param name="cfOrthStep" value="2"/>
<param name="cfDiagStep" value="3"/>
<param name="cfExtdStep" value="0"/>
<param name="cfBonusStep" value="1"/>
<param name="cfMalusStep" value="1"/>
<param name="cfPadImpact" value="4"/>
<param name="cfSmdImpact" value="4"/>
<param name="cfBusImpact" value="0"/>
<param name="cfHugging" value="3"/>
<param name="cfAvoid" value="4"/>
<param name="cfPolygon" value="10"/>
<param name="cfBase.1" value="0"/>
<param name="cfBase.2" value="1"/>
<param name="cfBase.3" value="1"/>
<param name="cfBase.4" value="1"/>
<param name="cfBase.5" value="1"/>
<param name="cfBase.6" value="1"/>
<param name="cfBase.7" value="1"/>
<param name="cfBase.8" value="1"/>
<param name="cfBase.9" value="1"/>
<param name="cfBase.10" value="1"/>
<param name="cfBase.11" value="1"/>
<param name="cfBase.12" value="1"/>
<param name="cfBase.13" value="1"/>
<param name="cfBase.14" value="1"/>
<param name="cfBase.15" value="1"/>
<param name="cfBase.16" value="0"/>
<param name="mnVias" value="20"/>
<param name="mnSegments" value="9999"/>
<param name="mnExtdSteps" value="9999"/>
<param name="mnRipupLevel" value="10"/>
<param name="mnRipupSteps" value="100"/>
<param name="mnRipupTotal" value="100"/>
</pass>
<pass name="Follow-me" refer="Default" active="yes">
</pass>
<pass name="Busses" refer="Default" active="yes">
<param name="cfNonPref" value="4"/>
<param name="cfBusImpact" value="4"/>
<param name="cfHugging" value="0"/>
<param name="mnVias" value="0"/>
</pass>
<pass name="Route" refer="Default" active="yes">
</pass>
<pass name="Optimize1" refer="Default" active="yes">
<param name="cfVia" value="99"/>
<param name="cfExtdStep" value="10"/>
<param name="cfHugging" value="1"/>
<param name="mnExtdSteps" value="1"/>
<param name="mnRipupLevel" value="0"/>
</pass>
<pass name="Optimize2" refer="Optimize1" active="yes">
<param name="cfNonPref" value="0"/>
<param name="cfChangeDir" value="6"/>
<param name="cfExtdStep" value="0"/>
<param name="cfBonusStep" value="2"/>
<param name="cfMalusStep" value="2"/>
<param name="cfPadImpact" value="2"/>
<param name="cfSmdImpact" value="2"/>
<param name="cfHugging" value="0"/>
</pass>
<pass name="Optimize3" refer="Optimize2" active="yes">
<param name="cfChangeDir" value="8"/>
<param name="cfPadImpact" value="0"/>
<param name="cfSmdImpact" value="0"/>
</pass>
<pass name="Optimize4" refer="Optimize3" active="yes">
<param name="cfChangeDir" value="25"/>
</pass>
</autorouter>
<elements>
<element name="JP1" library="SparkFun-Connectors" package="USB-A-SMT-MALE" value="USBA-SMD-MALE" x="0" y="85.725" rot="R90"/>
<element name="LOGO1" library="SparkFun-Aesthetics" package="OSHW-LOGO-M_COPPER" value="OSHW-LOGOM-COPPER" x="3.175" y="96.52"/>
<element name="X1" library="con-berg" package="PN87520" value="USB A Socket" x="46.863" y="85.852" smashed="yes" rot="R90">
<attribute name="MF" value="" x="46.863" y="85.852" size="1.778" layer="27" rot="R90" display="off"/>
<attribute name="OC_NEWARK" value="unknown" x="46.863" y="85.852" size="1.778" layer="27" rot="R90" display="off"/>
<attribute name="MPN" value="" x="46.863" y="85.852" size="1.778" layer="27" rot="R90" display="off"/>
<attribute name="OC_FARNELL" value="unknown" x="46.863" y="85.852" size="1.778" layer="27" rot="R90" display="off"/>
<attribute name="NAME" x="44.704" y="77.851" size="1.27" layer="25" rot="R180"/>
<attribute name="VALUE" x="57.023" y="94.996" size="1.27" layer="27" rot="R180"/>
</element>
<element name="IC1" library="Spark" package="PHOTON" value="PHOTON" x="38.608" y="96.1136" smashed="yes" rot="MR270">
<attribute name="NAME" x="40.386" y="93.5736" size="1.27" layer="26" ratio="10" rot="MR270"/>
<attribute name="VALUE" x="41.91" y="93.5736" size="1.27" layer="28" rot="SMR270"/>
</element>
<element name="R2" library="SparkFun-Passives" package="1206" value="10k" x="39.0652" y="97.9424" smashed="yes" rot="R180">
<attribute name="NAME" x="42.2402" y="98.7044" size="0.4064" layer="25" rot="R180"/>
<attribute name="VALUE" x="40.4622" y="99.4664" size="0.4064" layer="27" rot="R180"/>
</element>
<element name="R3" library="SparkFun-Passives" package="1206" value="10k" x="33.4772" y="97.9424" smashed="yes">
<attribute name="NAME" x="30.3022" y="98.4504" size="0.4064" layer="25"/>
<attribute name="VALUE" x="32.0802" y="96.4184" size="0.4064" layer="27"/>
</element>
<element name="R4" library="SparkFun-Passives" package="1206" value="10k" x="20.2184" y="97.9424" smashed="yes">
<attribute name="NAME" x="17.0434" y="98.4504" size="0.4064" layer="25"/>
<attribute name="VALUE" x="18.8214" y="96.4184" size="0.4064" layer="27"/>
</element>
<element name="R5" library="SparkFun-Passives" package="1206" value="10k" x="25.908" y="97.9424" smashed="yes" rot="R180">
<attribute name="NAME" x="29.083" y="98.7044" size="0.4064" layer="25" rot="R180"/>
<attribute name="VALUE" x="27.305" y="99.4664" size="0.4064" layer="27" rot="R180"/>
</element>
<element name="IC3" library="SparkFun-AnalogIC" package="SO08" value="ACS712" x="19.05" y="90.424" rot="R270">
<attribute name="PROD_ID" value="IC-08964" x="19.05" y="90.424" size="1.778" layer="27" rot="R270" display="off"/>
</element>
<element name="C1" library="SparkFun-Passives" package="0805" value="1nF" x="25.146" y="89.662" rot="R180"/>
<element name="C2" library="SparkFun-Passives" package="0805" value="0.1uF" x="25.146" y="92.456"/>
<element name="C4" library="SparkFun-Passives" package="0805" value="1uF" x="40.894" y="76.454" smashed="yes">
<attribute name="NAME" x="40.132" y="77.2795" size="0.4064" layer="25"/>
<attribute name="VALUE" x="39.878" y="75.057" size="0.4064" layer="27"/>
</element>
<element name="C5" library="SparkFun-Passives" package="0805" value="1uF" x="8.636" y="84.582" rot="R270"/>
<element name="TX" library="testpad" package="TP20SQ" value="TPTP20SQ" x="11.43" y="97.536" smashed="yes">
<attribute name="TP_SIGNAL_NAME" value="" x="11.43" y="94.996" size="1" layer="37"/>
<attribute name="NAME" x="7.89" y="96.554" size="1.27" layer="25"/>
<attribute name="VALUE" x="10.414" y="96.393" size="0.0254" layer="27"/>
</element>
<element name="RX" library="testpad" package="TP20SQ" value="TPTP20SQ" x="13.97" y="97.536" smashed="yes">
<attribute name="TP_SIGNAL_NAME" value="" x="13.97" y="94.996" size="1" layer="37"/>
<attribute name="NAME" x="15.51" y="96.554" size="1.27" layer="25"/>
<attribute name="VALUE" x="12.954" y="96.393" size="0.0254" layer="27"/>
</element>
<element name="S1" library="Spark" package="TACTILE_SWITCH_SMD" value="" x="30.988" y="88.138" rot="R270"/>
<element name="R1" library="SparkFun-Passives" package="1206" value="10k" x="30.48" y="82.55" rot="R90"/>
<element name="IC2" library="SH-linear" package="SO08" value="LM3526M-L" x="19.05" y="83.82" rot="R270"/>
<element name="R7" library="SparkFun-Passives" package="1206" value="10k" x="27.432" y="82.55" rot="R90"/>
<element name="TVA" library="testpad" package="TP20SQ" value="TPTP20SQ" x="23.114" y="86.614" smashed="yes">
<attribute name="TP_SIGNAL_NAME" value="" x="23.114" y="84.074" size="1" layer="37"/>
<attribute name="NAME" x="24.654" y="85.124" size="1.27" layer="25"/>
<attribute name="VALUE" x="22.098" y="85.471" size="0.0254" layer="27"/>
</element>
<element name="TVB" library="testpad" package="TP20SQ" value="TPTP20SQ" x="22.352" y="80.01" smashed="yes">
<attribute name="TP_SIGNAL_NAME" value="" x="22.352" y="77.47" size="1" layer="37"/>
<attribute name="NAME" x="23.765" y="78.52" size="1.27" layer="25"/>
<attribute name="VALUE" x="21.336" y="78.867" size="0.0254" layer="27"/>
</element>
</elements>
<signals>
<signal name="5V">
<contactref element="R4" pad="1"/>
<wire x1="17.78" y1="93.6752" x2="17.78" y2="96.012" width="0.3048" layer="1"/>
<wire x1="17.78" y1="96.012" x2="18.8184" y2="97.0504" width="0.3048" layer="1"/>
<wire x1="18.8184" y1="97.0504" x2="18.8184" y2="97.9424" width="0.3048" layer="1"/>
<contactref element="IC3" pad="3"/>
<contactref element="IC3" pad="4"/>
<wire x1="16.4338" y1="89.789" x2="16.5608" y2="89.662" width="0.6096" layer="1"/>
<wire x1="16.5608" y1="89.662" x2="18.542" y2="89.662" width="0.6096" layer="1"/>
<wire x1="18.542" y1="89.662" x2="18.542" y2="92.71" width="0.6096" layer="1"/>
<wire x1="18.542" y1="92.71" x2="17.78" y2="93.472" width="0.6096" layer="1"/>
<wire x1="17.78" y1="93.472" x2="17.78" y2="93.6752" width="0.6096" layer="1"/>
<contactref element="C2" pad="1"/>
<contactref element="IC3" pad="8"/>
<wire x1="21.6662" y1="92.329" x2="21.2852" y2="92.71" width="0.6096" layer="1"/>
<wire x1="21.2852" y1="92.71" x2="18.542" y2="92.71" width="0.6096" layer="1"/>
<wire x1="21.6662" y1="92.329" x2="21.7932" y2="92.456" width="0.6096" layer="1"/>
<wire x1="21.7932" y1="92.456" x2="24.246" y2="92.456" width="0.6096" layer="1"/>
<contactref element="IC2" pad="7"/>
<wire x1="18.542" y1="89.662" x2="19.05" y2="89.154" width="1.016" layer="1"/>
<wire x1="19.05" y1="89.154" x2="19.05" y2="88.519" width="1.016" layer="1"/>
<wire x1="19.05" y1="88.519" x2="19.05" y2="84.455" width="1.016" layer="1"/>
<wire x1="21.65" y1="84.455" x2="19.05" y2="84.455" width="1.016" layer="1"/>
<wire x1="16.4338" y1="88.519" x2="19.05" y2="88.519" width="1.016" layer="1"/>
</signal>
<signal name="GND">
<contactref element="JP1" pad="GND1"/>
<contactref element="X1" pad="4"/>
<contactref element="IC1" pad="21"/>
<contactref element="IC1" pad="2"/>
<contactref element="R3" pad="1"/>
<contactref element="R5" pad="1"/>
<contactref element="IC3" pad="5"/>
<wire x1="43.942" y1="97.282" x2="29.845" y2="97.282" width="1.4224" layer="16"/>
<wire x1="29.845" y1="97.282" x2="10.668" y2="97.282" width="1.4224" layer="16"/>
<wire x1="10.668" y1="97.282" x2="8.89" y2="95.504" width="1.4224" layer="16"/>
<wire x1="8.89" y1="95.504" x2="8.89" y2="94.8436" width="1.4224" layer="16"/>
<contactref element="C5" pad="1"/>
<contactref element="C4" pad="1"/>
<contactref element="C1" pad="1"/>
<contactref element="C2" pad="2"/>
<wire x1="21.6662" y1="88.519" x2="25.146" y2="88.519" width="0.4064" layer="1"/>
<wire x1="25.146" y1="88.519" x2="25.781" y2="88.519" width="0.4064" layer="1"/>
<wire x1="25.781" y1="88.519" x2="26.162" y2="88.9" width="0.4064" layer="1"/>
<wire x1="26.162" y1="88.9" x2="26.162" y2="89.546" width="0.4064" layer="1"/>
<wire x1="26.162" y1="89.546" x2="26.046" y2="89.662" width="0.4064" layer="1"/>
<wire x1="44.153" y1="89.352" x2="43.942" y2="89.563" width="1.4224" layer="16"/>
<wire x1="43.942" y1="89.563" x2="43.942" y2="97.282" width="1.4224" layer="16"/>
<polygon width="0.4064" layer="16" isolate="0.4064" orphans="yes">
<vertex x="0" y="99.568"/>
<vertex x="32.766" y="99.568"/>
<vertex x="32.766" y="73.152"/>
<vertex x="0" y="73.152"/>
</polygon>
<polygon width="0.4064" layer="16" isolate="0.4064">
<vertex x="49.53" y="99.314"/>
<vertex x="33.02" y="99.314"/>
<vertex x="33.02" y="93.726"/>
<vertex x="35.56" y="93.726"/>
<vertex x="35.56" y="94.742"/>
<vertex x="42.164" y="94.742"/>
<vertex x="42.164" y="77.216"/>
<vertex x="35.56" y="77.216"/>
<vertex x="35.56" y="78.232"/>
<vertex x="32.766" y="78.232"/>
<vertex x="32.766" y="73.152"/>
<vertex x="49.53" y="73.152"/>
</polygon>
<contactref element="S1" pad="4"/>
<contactref element="S1" pad="3"/>
<contactref element="IC2" pad="6"/>
<wire x1="5.87" y1="89.2758" x2="8.5142" y2="89.2758" width="1.4224" layer="1"/>
<wire x1="8.5142" y1="89.2758" x2="8.636" y2="89.154" width="1.4224" layer="1" curve="-90"/>
<wire x1="8.636" y1="89.154" x2="8.636" y2="87.884" width="1.4224" layer="1"/>
<wire x1="8.636" y1="87.884" x2="8.636" y2="87.122" width="1.4224" layer="1"/>
<wire x1="8.636" y1="94.5896" x2="8.89" y2="94.8436" width="1.4224" layer="1" curve="-90"/>
<via x="8.636" y="89.154" extent="1-16" drill="0.6" shape="square"/>
<wire x1="8.636" y1="90.424" x2="8.636" y2="92.964" width="1.4224" layer="16"/>
<wire x1="8.636" y1="92.964" x2="8.636" y2="94.5896" width="1.4224" layer="16"/>
<wire x1="8.636" y1="94.5896" x2="8.89" y2="94.8436" width="1.4224" layer="16" curve="-90"/>
<via x="8.636" y="87.884" extent="1-16" drill="0.6" shape="square"/>
<via x="8.636" y="90.424" extent="1-16" drill="0.6" shape="square"/>
<wire x1="8.636" y1="89.154" x2="8.636" y2="90.424" width="1.4224" layer="1"/>
<wire x1="39.994" y1="76.454" x2="38.1" y2="76.454" width="0.6096" layer="1"/>
<via x="38.1" y="76.454" extent="1-16" drill="0.6" shape="square"/>
<wire x1="37.592" y1="76.454" x2="38.1" y2="76.454" width="0.6096" layer="16"/>
<wire x1="38.1" y1="76.454" x2="38.1" y2="74.93" width="0.6096" layer="16"/>
<wire x1="38.1" y1="74.93" x2="13.97" y2="74.93" width="0.6096" layer="16"/>
<wire x1="13.97" y1="74.93" x2="13.97" y2="76.962" width="0.6096" layer="16"/>
<wire x1="21.65" y1="83.185" x2="25.146" y2="83.185" width="0.8128" layer="1"/>
<wire x1="25.146" y1="83.185" x2="25.146" y2="87.63" width="0.8128" layer="1"/>
<wire x1="25.146" y1="87.63" x2="25.146" y2="88.519" width="0.4064" layer="1"/>
<wire x1="26.162" y1="89.546" x2="30.213" y2="89.546" width="0.4064" layer="1"/>
<wire x1="30.213" y1="89.546" x2="30.213" y2="90.013" width="0.4064" layer="1"/>
<wire x1="30.213" y1="90.013" x2="30.213" y2="86.263" width="0.4064" layer="1"/>
<via x="25.146" y="87.63" extent="1-16" drill="0.6" shape="square"/>
<wire x1="26.046" y1="92.456" x2="28.194" y2="92.456" width="0.4064" layer="1"/>
<via x="28.194" y="92.456" extent="1-16" drill="0.6" shape="square"/>
<wire x1="28.194" y1="92.456" x2="28.194" y2="87.63" width="1.4224" layer="16"/>
<wire x1="28.194" y1="87.63" x2="25.146" y2="87.63" width="1.4224" layer="16"/>
<wire x1="28.194" y1="92.456" x2="8.636" y2="92.456" width="1.4224" layer="16"/>
<wire x1="8.636" y1="92.456" x2="8.636" y2="92.964" width="0.4064" layer="16"/>
<wire x1="13.97" y1="77.0636" x2="13.97" y2="76.962" width="1.4224" layer="16"/>
<wire x1="13.97" y1="77.0636" x2="13.97" y2="79.502" width="1.4224" layer="16"/>
<wire x1="13.97" y1="79.502" x2="8.636" y2="79.502" width="1.4224" layer="16"/>
<wire x1="8.636" y1="85.482" x2="8.636" y2="87.884" width="0.8128" layer="1"/>
<wire x1="8.636" y1="79.502" x2="8.636" y2="90.424" width="1.4224" layer="16"/>
<wire x1="27.308" y1="97.9424" x2="32.0772" y2="97.9424" width="0.8128" layer="1"/>
<wire x1="27.308" y1="97.9424" x2="29.845" y2="97.9424" width="0.8128" layer="1"/>
<wire x1="29.845" y1="97.9424" x2="29.845" y2="97.79" width="0.8128" layer="1"/>
<via x="29.845" y="97.79" extent="1-16" drill="0.6" shape="square"/>
<wire x1="29.845" y1="97.79" x2="29.845" y2="97.282" width="0.8128" layer="16"/>
</signal>
<signal name="VUSBOUTA">
<contactref element="IC2" pad="8"/>
<contactref element="TVA" pad="TP"/>
<wire x1="21.65" y1="85.725" x2="22.225" y2="85.725" width="0.4064" layer="1"/>
<wire x1="22.225" y1="85.725" x2="23.114" y2="86.614" width="0.4064" layer="1" curve="90"/>
</signal>
<signal name="USBVPOWERENABLEA">
<contactref element="IC1" pad="14"/>
<contactref element="R1" pad="1"/>
<wire x1="30.48" y1="81.15" x2="30.988" y2="79.626" width="0.4064" layer="1"/>
<wire x1="30.988" y1="79.626" x2="30.988" y2="77.724" width="0.4064" layer="1"/>
<wire x1="30.988" y1="77.724" x2="31.6484" y2="77.0636" width="0.4064" layer="1"/>
<wire x1="31.6484" y1="77.0636" x2="31.75" y2="77.0636" width="0.4064" layer="1"/>
<contactref element="IC2" pad="1"/>
<wire x1="16.45" y1="85.725" x2="13.208" y2="85.725" width="0.4064" layer="1"/>
<wire x1="13.208" y1="85.725" x2="13.208" y2="85.598" width="0.4064" layer="1"/>
<via x="13.208" y="85.598" extent="1-16" drill="0.6" shape="square"/>
<wire x1="13.208" y1="85.598" x2="31.75" y2="85.598" width="0.4064" layer="16"/>
<wire x1="31.75" y1="85.598" x2="31.75" y2="77.0636" width="0.4064" layer="16"/>
</signal>
<signal name="N$2">
</signal>
<signal name="N$21">
<contactref element="R2" pad="2"/>
<contactref element="R3" pad="2"/>
<wire x1="37.6652" y1="97.9424" x2="34.8772" y2="97.9424" width="0.4064" layer="1"/>
<contactref element="IC1" pad="12"/>
<wire x1="34.8772" y1="97.9424" x2="34.29" y2="97.4568" width="0.4064" layer="1"/>
<wire x1="34.29" y1="97.4568" x2="34.29" y2="94.8436" width="0.4064" layer="1"/>
</signal>
<signal name="N$23">
<contactref element="R5" pad="2"/>
<contactref element="R4" pad="2"/>
<contactref element="IC1" pad="7"/>
<wire x1="21.59" y1="94.8436" x2="21.6184" y2="94.872" width="0.3048" layer="1"/>
<wire x1="21.6184" y1="94.872" x2="21.6184" y2="97.9424" width="1.4224" layer="1"/>
<wire x1="21.6184" y1="97.9424" x2="24.508" y2="97.9424" width="1.4224" layer="1"/>
</signal>
<signal name="N$17">
</signal>
<signal name="VUSBIN">
<contactref element="JP1" pad="VBUS1"/>
<contactref element="C5" pad="2"/>
<contactref element="IC1" pad="1"/>
<contactref element="IC3" pad="2"/>
<contactref element="IC3" pad="1"/>
<wire x1="16.4338" y1="92.329" x2="16.4338" y2="91.694" width="0.6096" layer="1"/>
<wire x1="16.4338" y1="91.694" x2="16.4338" y2="91.059" width="0.6096" layer="1"/>
<wire x1="5.87" y1="82.225" x2="8.636" y2="82.225" width="1.4224" layer="1"/>
<wire x1="8.636" y1="82.225" x2="10.597" y2="82.225" width="1.4224" layer="1"/>
<wire x1="10.597" y1="82.225" x2="10.922" y2="82.55" width="1.4224" layer="1" curve="90"/>
<wire x1="10.922" y1="82.55" x2="10.922" y2="91.948" width="1.4224" layer="1"/>
<wire x1="10.922" y1="91.948" x2="16.1798" y2="91.948" width="1.4224" layer="1"/>
<wire x1="16.1798" y1="91.948" x2="16.4338" y2="91.694" width="1.4224" layer="1" curve="-90"/>
<wire x1="8.636" y1="83.682" x2="8.636" y2="82.225" width="0.8128" layer="1"/>
<wire x1="10.922" y1="91.948" x2="6.35" y2="91.948" width="1.4224" layer="1"/>
<wire x1="6.35" y1="91.948" x2="6.35" y2="94.8436" width="1.4224" layer="1"/>
</signal>
<signal name="N$9">
</signal>
<signal name="VBAT">
<contactref element="IC1" pad="22"/>
</signal>
<signal name="VISENSE">
<contactref element="IC3" pad="7"/>
<contactref element="IC1" pad="11"/>
<wire x1="21.6662" y1="91.059" x2="21.7932" y2="91.186" width="0.4064" layer="1"/>
<wire x1="21.7932" y1="91.186" x2="31.75" y2="91.186" width="0.4064" layer="1"/>
<wire x1="31.75" y1="91.186" x2="31.75" y2="94.8436" width="0.4064" layer="1"/>
</signal>
<signal name="N$3">
<contactref element="IC3" pad="6"/>
<contactref element="C1" pad="2"/>
<wire x1="24.246" y1="89.662" x2="24.384" y2="89.662" width="0.4064" layer="1"/>
<wire x1="21.6662" y1="89.789" x2="24.119" y2="89.789" width="0.4064" layer="1"/>
<wire x1="24.119" y1="89.789" x2="24.246" y2="89.662" width="0.4064" layer="1"/>
</signal>
<signal name="N$6">
<contactref element="IC1" pad="3"/>
<contactref element="TX" pad="TP"/>
<wire x1="11.43" y1="94.8436" x2="11.43" y2="97.536" width="0.8128" layer="1"/>
</signal>
<signal name="N$7">
<contactref element="RX" pad="TP"/>
<contactref element="IC1" pad="4"/>
<wire x1="13.97" y1="94.8436" x2="13.97" y2="97.536" width="0.8128" layer="1"/>
</signal>
<signal name="3V3">
<contactref element="IC1" pad="24"/>
</signal>
<signal name="N$1">
<contactref element="IC1" pad="13"/>
<contactref element="S1" pad="2"/>
<contactref element="S1" pad="1"/>
<wire x1="31.763" y1="90.013" x2="31.763" y2="86.263" width="0.4064" layer="1"/>
<wire x1="31.763" y1="86.263" x2="32.512" y2="85.514" width="0.4064" layer="1"/>
<wire x1="32.512" y1="85.514" x2="32.512" y2="78.994" width="0.4064" layer="1"/>
<wire x1="32.512" y1="78.994" x2="34.29" y2="77.216" width="0.4064" layer="1"/>
<wire x1="34.29" y1="77.216" x2="34.29" y2="77.0636" width="0.4064" layer="1"/>
</signal>
<signal name="USBFLAGA">
<contactref element="IC2" pad="2"/>
<contactref element="IC1" pad="15"/>
<wire x1="29.21" y1="77.

repository: Tinamous/IoTUsbSwitch

repo_name: Tinamous/IoTUsbSwitch

extension: brd


text:
0636" x2="29.21" y2="84.328" width="0.4064" layer="16"/>
<wire x1="29.21" y1="84.328" x2="13.208" y2="84.328" width="0.4064" layer="16"/>
<via x="13.208" y="84.328" extent="1-16" drill="0.6" shape="square"/>
<wire x1="13.208" y1="84.328" x2="16.45" y2="84.328" width="0.4064" layer="1"/>
<wire x1="16.45" y1="84.328" x2="16.45" y2="84.455" width="0.4064" layer="1"/>
</signal>
<signal name="USBFLAGB">
<contactref element="IC2" pad="3"/>
<contactref element="IC1" pad="16"/>
<wire x1="26.67" y1="77.0636" x2="26.67" y2="83.058" width="0.4064" layer="16"/>
<wire x1="26.67" y1="83.058" x2="13.208" y2="83.058" width="0.4064" layer="16"/>
<via x="13.208" y="83.058" extent="1-16" drill="0.6" shape="square"/>
<wire x1="13.208" y1="83.058" x2="16.45" y2="83.058" width="0.4064" layer="1"/>
<wire x1="16.45" y1="83.058" x2="16.45" y2="83.185" width="0.4064" layer="1"/>
</signal>
<signal name="USBVPOWERENABLEB">
<contactref element="IC2" pad="4"/>
<contactref element="IC1" pad="17"/>
<contactref element="R7" pad="1"/>
<wire x1="24.13" y1="77.0636" x2="24.13" y2="81.788" width="0.4064" layer="16"/>
<wire x1="24.13" y1="81.788" x2="13.208" y2="81.788" width="0.4064" layer="16"/>
<via x="13.208" y="81.788" extent="1-16" drill="0.6" shape="square"/>
<wire x1="13.208" y1="81.788" x2="16.45" y2="81.788" width="0.4064" layer="1"/>
<wire x1="16.45" y1="81.788" x2="16.45" y2="81.915" width="0.4064" layer="1"/>
<wire x1="27.432" y1="81.15" x2="24.13" y2="81.15" width="0.4064" layer="1"/>
<wire x1="24.13" y1="81.15" x2="24.13" y2="77.0636" width="0.4064" layer="1"/>
</signal>
<signal name="VINUSB">
<contactref element="R1" pad="2"/>
<contactref element="R7" pad="2"/>
<wire x1="27.432" y1="83.95" x2="30.48" y2="83.95" width="0.4064" layer="1"/>
</signal>
<signal name="N$8">
<via x="8.636" y="86.614" extent="1-16" drill="0.6" shape="square"/>
</signal>
<signal name="VUSBOUTB">
<contactref element="X1" pad="1"/>
<contactref element="C4" pad="2"/>
<contactref element="R2" pad="1"/>
<contactref element="IC2" pad="5"/>
<wire x1="21.65" y1="81.915" x2="19.05" y2="81.915" width="0.8128" layer="1"/>
<wire x1="19.05" y1="81.915" x2="19.05" y2="81.788" width="0.8128" layer="1"/>
<wire x1="19.05" y1="81.788" x2="19.05" y2="80.01" width="1.4224" layer="1"/>
<wire x1="19.05" y1="80.01" x2="19.05" y2="79.502" width="1.4224" layer="1"/>
<wire x1="19.05" y1="79.502" x2="6.604" y2="79.502" width="1.4224" layer="1"/>
<wire x1="6.604" y1="79.502" x2="6.096" y2="79.502" width="1.016" layer="1"/>
<wire x1="6.096" y1="79.502" x2="4.318" y2="77.724" width="1.016" layer="1"/>
<wire x1="4.318" y1="77.724" x2="4.318" y2="74.676" width="1.4224" layer="1"/>
<wire x1="4.318" y1="74.676" x2="42.926" y2="74.676" width="1.4224" layer="1"/>
<wire x1="42.926" y1="74.676" x2="43.942" y2="75.692" width="1.4224" layer="1" curve="90"/>
<wire x1="43.942" y1="75.692" x2="43.942" y2="76.2" width="1.4224" layer="1"/>
<wire x1="43.942" y1="76.2" x2="43.942" y2="82.141" width="1.4224" layer="1"/>
<wire x1="43.942" y1="82.141" x2="44.153" y2="82.352" width="1.4224" layer="1" curve="-90"/>
<wire x1="41.794" y1="76.454" x2="43.942" y2="76.454" width="0.4064" layer="1"/>
<wire x1="43.942" y1="76.454" x2="43.942" y2="76.2" width="0.4064" layer="1"/>
<wire x1="44.153" y1="82.352" x2="46.99" y2="82.352" width="0.4064" layer="1"/>
<wire x1="46.99" y1="82.352" x2="46.99" y2="90.17" width="0.4064" layer="1"/>
<wire x1="46.99" y1="90.17" x2="46.736" y2="90.17" width="0.4064" layer="1"/>
<wire x1="46.736" y1="90.17" x2="44.704" y2="92.202" width="0.4064" layer="1" curve="-90"/>
<wire x1="44.704" y1="92.202" x2="44.704" y2="96.52" width="0.4064" layer="1"/>
<wire x1="44.704" y1="96.52" x2="43.434" y2="97.79" width="0.4064" layer="1" curve="90"/>
<wire x1="43.434" y1="97.79" x2="40.6176" y2="97.79" width="0.4064" layer="1"/>
<wire x1="40.6176" y1="97.79" x2="40.4652" y2="97.9424" width="0.4064" layer="1" curve="90"/>
<contactref element="TVB" pad="TP"/>
<wire x1="22.352" y1="80.01" x2="19.05" y2="80.01" width="1.4224" layer="1"/>
</signal>
<signal name="N$10">
<via x="28.194" y="92.456" extent="1-16" drill="0.6" shape="square"/>
</signal>
</signals>
</board>
</drawing>
<compatibility>
<note version="6.3" minversion="6.2.2" severity="warning">
Since Version 6.2.2 text objects can contain more than one line,
which will not be processed correctly with this version.
</note>
</compatibility>
</eagle>

license: MIT

license_type: permissive

branch_name: refs/heads/master


text:
add_python_test(google_analytics PLUGIN google_analytics)

add_python_style_test(python_static_analysis_google_analytics
                      "${PROJECT_SOURCE_DIR}/plugins/google_analytics/server")

add_javascript_style_test(google_analytics
                          "${PROJECT_SOURCE_DIR}/plugins/google_analytics/web_client/js/src")

repository: cdeepakroy/girder

repo_name: cdeepakroy/girder

extension: cmake


text:
using System.Text;
using Windows.ApplicationModel;
using Windows.Security.Cryptography;
using Windows.Security.Cryptography.Core;
using Windows.UI.Xaml;
using Octane.Xamarin.Forms.VideoPlayer.Interfaces;

namespace Octane.Xamarin.Forms.VideoPlayer.UWP
{
    /// <summary>
    /// Platform native methods needed in cross-platform code.
    /// </summary>
    /// <seealso cref="IPlatformFeatures" />
    internal class PlatformFeatures : IPlatformFeatures
    {
        #region Properties

        /// <summary>
        /// Gets the name of the package.
        /// </summary>
        /// <value>
        /// The name of the package.
        /// </value>
        public string PackageName => Package.Current.Id.Name;

        #endregion

        #region Methods

        /// <summary>
        /// Hashes the specified value using SHA-1.
        /// </summary>
        /// <param name="value">The value to hash.</param>
        /// <returns>
        /// A base-64 encoded SHA-1 hash.
        /// </returns>
        public string HashSha1(string value)
        {
            var hashProvider = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha1);
            var byteData = Encoding.UTF8.GetBytes(value);
            var buffer = CryptographicBuffer.CreateFromByteArray(byteData);
            var hash = hashProvider.HashData(buffer);
            return CryptographicBuffer.EncodeToHexString(hash);
        }

        /// <summary>
        /// Exits the mobile application.
        /// </summary>
        public void Exit()
        {
            Application.Current.Exit();
        }

        #endregion
    }
}

gha_license_id: MIT

extension: cs


text:
DESCRIPTION = "In many applications it's wise to let Perl use Unicode for the strings it \
processes. Most of the interfaces Perl has to the outside world are still \
byte based. Programs therefore need to decode byte strings that enter the \
program from the outside and encode them again on the way out."

SECTION = "libs"
LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
PR = "r0"

MAINTAINER=	"Poky <poky@yoctoproject.org>"
HOMEPAGE=	"https://metacpan.org/release/Encode-Locale"

LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Artistic-1.0;md5=cda03bbdc3c1951996392b872397b798 \
file://${COMMON_LICENSE_DIR}/GPL-1.0-or-later;md5=30c0b8a5048cc2f4be5ff15ef0d8cf61"

SRC_URI = "https://cpan.metacpan.org/authors/id/G/GA/GAAS/Encode-Locale-1.05.tar.gz"

SRC_URI[md5sum] = "fcfdb8e4ee34bcf62aed429b4a23db27"
SRC_URI[sha256sum] = "176fa02771f542a4efb1dbc2a4c928e8f4391bf4078473bd6040d8f11adb0ec1"

S = "${WORKDIR}/Encode-Locale-${PV}"

inherit cpan allarch

BBCLASSEXTEND = "native"

repository: rehsack/meta-cpan

repo_name: rehsack/meta-cpan

gha_language: BitBake

extension: bb


text:
package routers

import (
	"anytunnel/at-web/app/controllers"
	"anytunnel/at-web/app/utils"
	"html/template"
	"math/rand"
	"net/http"

	"github.com/astaxie/beego"
)

func init() {
	beego.AppConfig.Set("sys.name", "ATC")
	beego.AppConfig.Set("sys.fullname", "AnyTunnel Cloud")

	beego.BConfig.ServerName = beego.AppConfig.String("sys.name")
	beego.SetStaticPath("/static/", "static")
	beego.BConfig.WebConfig.AutoRender = false
	beego.BConfig.WebConfig.Session.SessionName = "ssidw"
	beego.BConfig.WebConfig.Session.SessionOn = true
	beego.BConfig.RouterCaseSensitive = false
	beego.AutoRouter(&controllers.MainController{})
	beego.AutoRouter(&controllers.AuthorController{})
	beego.AutoRouter(&controllers.UserController{})
	beego.AutoRouter(&controllers.TunnelController{})
	beego.AutoRouter(&controllers.ClientController{})
	beego.AutoRouter(&controllers.ServerController{})
	beego.Router("/", &controllers.MainController{}, "*:Index")
	beego.AddFuncMap("randInt", randInt)
	beego.AddFuncMap("dateFormat", utils.NewDate().Format)
	beego.ErrorHandler("404", page_not_found)
	beego.ErrorHandler("500", page_not_found)
	beego.BConfig.WebConfig.ViewsPath = "app/views"
}
func page_not_found(rw http.ResponseWriter, r *http.Request) {
	t, _ := template.New("500-full.html").ParseFiles(beego.BConfig.WebConfig.ViewsPath + "/error/500-full.html")
	data := make(map[string]interface{})
	data["content"] = ""
	t.Execute(rw, data)
}

func randInt(start, end int) int {
	return rand.Intn(end) + start
}

extension: go


text:
import {  Component, Input }  from '@angular/core';

@Component({
  selector: 'order-processor',
  template: `
    <span *ngIf="!!stockSymbol">Buying {{quantity}} shares of {{stockSymbol}}</span>
  `,
  styles:[`:host {background: cyan;}`]
})
export class OrderProcessorComponent {

  @Input() quantity: number;

  @Input() stockSymbol: string;
}

repository: cestradamiranda/angulartypescript

repo_name: cestradamiranda/angulartypescript

gha_language: TypeScript

extension: ts


text:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MonoGame.Aseprite.ContentPipeline.Models
{
    public class AsepriteSliceKeyModel
    {
        /// <summary>
        ///     The frame for the slice key
        /// </summary>
        public int frame { get; set; }

        /// <summary>
        ///     The deifned bounds for the slice key
        /// </summary>
        public AsepriteRectangleModel bounds { get; set; }
    }
}

repository: igarastudio/monogame-aseprite

repo_name: igarastudio/monogame-aseprite


text:
import fs = require('fs');
import {BunqApiConfig} from "./BunqApiConfig";
import {BunqApiSetup} from "./BunqApiSetup";
import {BunqConnection} from "./BunqConnection";
import {BunqKey} from "./BunqKey";

const dateTime = require('node-datetime');
const dt = dateTime.create();
const dateTimeString = dt.format('YmdHMS');

const config:BunqApiConfig = new BunqApiConfig();
const deviceServerConfig = BunqApiConfig.readJson(config.json.secretsFile);
const key : BunqKey = BunqKey.createFromPrivateKeyFile(config.json.privateKeyFile);
const installationTokenConfig = BunqApiConfig.readJson(config.json.installationTokenFile);
const installationToken:string=installationTokenConfig.Response[1].Token.token;
const setup:BunqApiSetup=new BunqApiSetup(new BunqConnection(), key, deviceServerConfig.secret,installationToken);

setup.createDeviceServer(deviceServerConfig.description).then(function(response:string){
    console.log(response);
    fs.writeFileSync(config.json.secretsPath+"/bunqDeviceServerResponse"+dateTimeString+".json", response);
    let resp : any = JSON.parse(response);
    console.log("created device server id: "+resp.Response[0].Id.id);
}).catch(function(error:string){
    console.log("error : "+error);
});

repository: aalwash/bunq-js-api

repo_name: aalwash/bunq-js-api


text:
DESCRIPTION = "Openmoko Accelerometer-based Gestures"
HOMEPAGE = "http://code.google.com/p/accelges/"
AUTHOR = "Paul V. Borza"
LICENSE = "GPL"
SECTION = "openmoko/utilities"

PV = "0.2+svnr${SRCPV}"
PR = "r5"
PE = "1"
SRCREV = "206"

DEPENDS = "curl dbus dbus-glib gtk+ libglade libnotify libxrandr notification-daemon"
RDEPENDS_${PN} = "notification-daemon"

SRC_URI = "svn://accelges.googlecode.com/svn/;module=trunk;proto=http \
           file://support_newer_kernels.patch;apply=yes"
S = "${WORKDIR}/trunk"

inherit autotools update-rc.d

#PACKAGES += "${PN}-cmd"

#INITSCRIPT_PACKAGES = "${PN} ${PN}-cmd"
#INITSCRIPT_NAME_${PN} = "gesd-neo2"
#INITSCRIPT_PARAMS_${PN} = "defaults 70"
#INITSCRIPT_NAME_${PN}-cmd = "gesl"
#INITSCRIPT_PARAMS_${PN}-cmd = "defaults 80"

INITSCRIPT_NAME = "gesd-neo2"
INITSCRIPT_PARAMS = "defaults 70"

do_install_append() {
	install -d ${D}${sysconfdir}/accelges/neo2
	install -c -D -m 644 ${S}/config/neo2/* ${D}${sysconfdir}/accelges/neo2
	install -d ${D}${sysconfdir}/accelges/neo3
	install -c -D -m 644 ${S}/config/neo3/* ${D}${sysconfdir}/accelges/neo3
	install -d ${D}${sysconfdir}/accelges/wii
	install -c -D -m 644 ${S}/config/wii/* ${D}${sysconfdir}/accelges/wii

	install -d ${D}${sysconfdir}/init.d
	install -c -D -m 755 ${S}/config/init.d/* ${D}${sysconfdir}/init.d/

	install -d ${D}${sysconfdir}/dbus-1/system.d
	install -c -D -m 644 ${S}/gesd/data/accelges.conf ${D}${sysconfdir}/dbus-1/system.d
}

# FIXME increase packaging granularity
FILES_${PN} += "${datadir}"

repository: overo/overo-oe-natty

repo_name: overo/overo-oe-natty

branch_name: HEAD


text:
inherit gpe

DESCRIPTION = "An Othello clone using GTK, hacked from ugothello."
DEPENDS = "gtk+ libgpewidget gpe-icons"
SECTION = "gpe"
PRIORITY = "optional"

SRC_URI += "file://fix-makefiles.patch;patch=1"

repository: Terentyev/familiar-linux

repo_name: Terentyev/familiar-linux


text:
SUMMARY = "Simple helloworld application"
DESCRIPTION = "Simple helloworld application"
SECTION = "debug/application"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"

PV = "0.0.1"

SRC_URI = "file://hello_world.c"

S = "${WORKDIR}"

do_compile() {
    ${CC} hello_world.c ${LDFLAGS} -o helloworld
}

do_install() {
    install -d ${D}${bindir}
    install -m 0755 helloworld ${D}${bindir}
}

repository: yuravg/meta-example-yocto

repo_name: yuravg/meta-example-yocto


text:
// Copied from https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/ec2_instance_types/gen.go

/*
Copyright 2017 The Kubernetes Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

// instance-types auto-generates EC2 instance types from AWS API.
package main

import (
	"encoding/json"
	"fmt"
	"os"
	"os/exec"
	"regexp"
	"strconv"
	"strings"
	"text/template"
	"time"

	"github.com/aws/aws-k8s-tester/pkg/httputil"
	"github.com/aws/aws-sdk-go/aws/endpoints"
	"go.uber.org/zap"
)

var lg *zap.Logger

func init() {
	var err error
	lg, err = zap.NewProduction()
	if err != nil {
		panic(err)
	}
}

type response struct {
	Products map[string]product `json:"products"`
}

type product struct {
	Attributes productAttributes `json:"attributes"`
}

type productAttributes struct {
	InstanceType string `json:"instanceType"`
	VCPU         string `json:"vcpu"`
	Memory       string `json:"memory"`
	GPU          string `json:"gpu"`
}

type instanceType struct {
	InstanceType string
	VCPU         int64
	Memory       int64
	GPU          int64
	MaxPods      int64
}

var (
	tmpl = fmt.Sprintf(`/*
Copyright 2017 The Kubernetes Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

// This file was generated by go generate; DO NOT EDIT

// generated at %v

package ec2

// InstanceType is an EC2 instance type.
type InstanceType struct {
	InstanceType string
	VCPU         int64
	MemoryMb     int64
	GPU          int64
	MaxPods      int64
}

// InstanceTypes is a map of EC2 resources.
var InstanceTypes = map[string]*InstanceType{
{{- range .InstanceTypes }}
	"{{ .InstanceType }}": {
		InstanceType: "{{ .InstanceType }}",
		VCPU:         {{ .VCPU }},
		MemoryMb:     {{ .Memory }},
		GPU:          {{ .GPU }},
		MaxPods:      {{ .MaxPods }},
	},
{{- end }}
}
`, time.Now())

	pkgTmpl = template.Must(template.New("").Parse(tmpl))
)

func main() {
	maxPodsData, merr := httputil.Read(lg, os.Stdout, "https://raw.githubusercontent.com/awslabs/amazon-eks-ami/master/files/eni-max-pods.txt")
	if merr != nil {
		lg.Fatal("failed to download ENI max pods", zap.Error(merr))
	}
	instanceToMaxPods := make(map[string]int64)
	for _, line := range strings.Split(string(maxPodsData), "\n") {
		if strings.HasPrefix(line, "# ") {
			continue
		}
		fields := strings.Fields(line)
		if len(fields) != 2 {
			lg.Warn("skipping line", zap.String("line", line))
			continue
		}
		n, err := strconv.ParseInt(fields[1], 10, 64)
		if err != nil {
			lg.Fatal("failed to parse int", zap.Error(err))
		}
		instanceToMaxPods[fields[0]] = n
	}

	reg, err := regexp.Compile("[^0-9\\.]+")
	if err != nil {
		lg.Fatal("failed to compile regex", zap.Error(err))
	}

	instanceTypes := make(map[string]*instanceType)

	resolver := endpoints.DefaultResolver()
	partitions := resolver.(endpoints.EnumPartitions).Partitions()
	lg.Info("partitions", zap.Int("total", len(partitions)))
	for _, p := range partitions {
		lg.Info("partition", zap.String("id", p.ID()), zap.Int("total-regions", len(p.Regions())))
		for _, r := range p.Regions() {
			u := "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/" + r.ID() + "/index.json"
			d, err := httputil.Read(lg, os.Stdout, u)
			if err != nil {
				lg.Warn("failed to download", zap.String("url", u), zap.String("data", string(d)), zap.Error(err))
				continue
			}

			var rs response
			err = json.Unmarshal(d, &rs)
			if err != nil {
				if len(d) < 250 {
					lg.Warn("contents are missing?", zap.String("url", u), zap.String("data", string(d)), zap.Error(err))
					continue
				}
				lg.Warn("failed to unmarshal", zap.String("url", u), zap.String("data", string(d)), zap.Error(err))
				continue
			}

			for _, product := range rs.Products {
				attr := product.Attributes
				if attr.InstanceType == "" || strings.Contains(attr.InstanceType, " ") || (strings.ToLower(attr.InstanceType) != attr.InstanceType) {
					continue
				}
				instanceTypes[attr.InstanceType] = &instanceType{
					InstanceType: attr.InstanceType,
				}
				if attr.Memory != "" && attr.Memory != "NA" && !strings.HasSuffix(attr.Memory, " Mbps") {
					parsed := strings.TrimSpace(reg.ReplaceAllString(attr.Memory, ""))
					mem, err := strconv.ParseFloat(parsed, 64)
					if err == nil {
						instanceTypes[attr.InstanceType].Memory = int64(mem * float64(1024))
					} else {
						lg.Warn("failed to parse float", zap.String("string", attr.Memory), zap.Error(err))
					}
				}
				if attr.VCPU != "" {
					iv, err := strconv.ParseInt(attr.VCPU, 10, 64)
					if err == nil {
						instanceTypes[attr.InstanceType].VCPU = iv
					} else {
						lg.Warn("failed to parse integer", zap.String("string", attr.VCPU), zap.Error(err))
					}
				}
				if attr.GPU != "" {
					iv, err := strconv.ParseInt(attr.GPU, 10, 64)
					if err == nil {
						instanceTypes[attr.InstanceType].GPU = iv
					} else {
						lg.Warn("failed to parse integer", zap.String("string", attr.GPU), zap.Error(err))
					}
				}
				if !strings.Contains(attr.InstanceType, ".") {
					continue
				}
				v, ok := instanceToMaxPods[attr.InstanceType]
				if !ok {
					lg.Warn("failed to find max pods", zap.String("instance-type", attr.InstanceType))
				}
				instanceTypes[attr.InstanceType].MaxPods = v
			}
		}
	}

	f, err := os.Create("instance_types.go")
	if err != nil {
		lg.Fatal("failed to write 'instance_types.go'", zap.Error(err))
	}
	defer f.Close()

	if err = pkgTmpl.Execute(f, struct {
		InstanceTypes map[string]*instanceType
	}{
		InstanceTypes: instanceTypes,
	}); err != nil {
		lg.Fatal("failed to write template", zap.Error(err))
	}

	if err := exec.Command("go", "fmt", "instance_types.go").Run(); err != nil {
		lg.Fatal("failed to 'gofmt'", zap.Error(err))
	}

	lg.Info("done!")
}

branch_name: refs/heads/main

gha_language: Go


text:
inherit noto-fonts
inherit noto-cjk

SRC_URI = "${NOTO_SRC_URI_PREFIX}/NotoSansCJK-Regular.ttc.zip"
SRC_URI[sha256sum] = "32d03afb0b1109fa75a96f89dfc118015283a5343f2216ee4b3757c19992f75d"

repository: ssfivy/meta-noto

repo_name: ssfivy/meta-noto