text:
1="5.08" x2="71.12" y2="0" width="0.254" layer="94"/>
<wire x1="71.12" y1="5.08" x2="87.63" y2="5.08" width="0.254" layer="94"/>
<wire x1="71.12" y1="0" x2="101.6" y2="0" width="0.254" layer="94"/>
<wire x1="87.63" y1="15.24" x2="87.63" y2="5.08" width="0.254" layer="94"/>
<wire x1="87.63" y1="15.24" x2="0" y2="15.24" width="0.254" layer="94"/>
<wire x1="87.63" y1="5.08" x2="101.6" y2="5.08" width="0.254" layer="94"/>
<wire x1="101.6" y1="5.08" x2="101.6" y2="0" width="0.254" layer="94"/>
<wire x1="0" y1="15.24" x2="0" y2="22.86" width="0.254" layer="94"/>
<wire x1="0" y1="22.86" x2="101.6" y2="22.86" width="0.254" layer="94"/>
<wire x1="101.6" y1="22.86" x2="101.6" y2="15.24" width="0.254" layer="94"/>
<text x="1.27" y="1.27" size="2.54" layer="94">Date:</text>
<text x="12.7" y="1.27" size="2.54" layer="94">>LAST_DATE_TIME</text>
<text x="72.39" y="1.27" size="2.54" layer="94">Sheet:</text>
<text x="86.36" y="1.27" size="2.54" layer="94">>SHEET</text>
<text x="88.9" y="11.43" size="2.54" layer="94">REV:</text>
<text x="1.524" y="17.78" size="2.54" layer="94">TITLE:</text>
<text x="15.24" y="17.78" size="2.54" layer="94">>DRAWING_NAME</text>
<text x="1.27" y="11.43" size="2.54" layer="94">Design by:</text>
</symbol>
</symbols>
<devicesets>
<deviceset name="LETTER_LANDSCAPE" prefix="FRAME" uservalue="yes">
<gates>
<gate name="G$1" symbol="LETTER_LANDSCAPE" x="0" y="0"/>
<gate name="G$2" symbol="DOCFIELD" x="152.4" y="0" addlevel="must"/>
</gates>
<devices>
<device name="">
<technologies>
<technology name=""/>
</technologies>
</device>
</devices>
</deviceset>
</devicesets>
</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>
</packages>
<symbols>
<symbol name="3.3V">
<wire x1="0.762" y1="1.27" x2="0" y2="2.54" width="0.254" layer="94"/>
<wire x1="0" y1="2.54" x2="-0.762" y2="1.27" width="0.254" layer="94"/>
<text x="-1.016" y="3.556" size="1.778" layer="96">>VALUE</text>
<pin name="3.3V" x="0" y="0" visible="off" length="short" direction="sup" rot="R90"/>
</symbol>
</symbols>
<devicesets>
<deviceset name="3.3V" prefix="SUPPLY">
<description>SUPPLY SYMBOL</description>
<gates>
<gate name="G$1" symbol="3.3V" x="0" y="0"/>
</gates>
<devices>
<device name="">
<technologies>
<technology name=""/>
</technologies>
</device>
</devices>
</deviceset>
</devicesets>
</library>
<library name="SparkFun-RF">
<description>
SparkFun Electronics' preferred foot prints

In this library you'll find things that send or receive RF- GPS, cellular modules, Bluetooth, WiFi, 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="ID-12">
<description>ID12 Footprint (works with ID2, ID12, and ID20)</description>
<wire x1="-0.045" y1="0.02" x2="26.355" y2="0.02" width="0.127" layer="51"/>
<wire x1="26.355" y1="0.02" x2="26.355" y2="25.32" width="0.127" layer="51"/>
<wire x1="26.355" y1="25.32" x2="-0.045" y2="25.32" width="0.127" layer="51"/>
<wire x1="-0.045" y1="25.32" x2="-0.045" y2="0.02" width="0.127" layer="51"/>
<pad name="1" x="16.255" y="5.32" drill="0.8" shape="square" rot="R180"/>
<pad name="2" x="14.255" y="5.32" drill="0.8" rot="R180"/>
<pad name="3" x="12.255" y="5.32" drill="0.8" rot="R180"/>
<pad name="4" x="10.255" y="5.32" drill="0.8" rot="R180"/>
<pad name="5" x="8.255" y="5.32" drill="0.8" rot="R180"/>
<pad name="6" x="8.255" y="20.32" drill="0.8" rot="R180"/>
<pad name="7" x="10.255" y="20.32" drill="0.8" rot="R180"/>
<pad name="8" x="12.255" y="20.32" drill="0.8" rot="R180"/>
<pad name="9" x="14.255" y="20.32" drill="0.8" rot="R180"/>
<pad name="10" x="16.255" y="20.32" drill="0.8" rot="R180"/>
<pad name="11" x="20.255" y="20.32" drill="0.8" rot="R180"/>
<text x="1.905" y="24.13" size="0.4064" layer="25">>NAME</text>
<text x="3.81" y="1.27" size="0.4064" layer="27" rot="R180">>VALUE</text>
</package>
<package name="ID-12_LOCK">
<description>ID12 Footprint (works with ID2, ID12, and ID20)</description>
<wire x1="-0.045" y1="0.02" x2="26.355" y2="0.02" width="0.127" layer="51"/>
<wire x1="26.355" y1="0.02" x2="26.355" y2="25.32" width="0.127" layer="51"/>
<wire x1="26.355" y1="25.32" x2="-0.045" y2="25.32" width="0.127" layer="51"/>
<wire x1="-0.045" y1="25.32" x2="-0.045" y2="0.02" width="0.127" layer="51"/>
<pad name="1" x="16.255" y="5.4978" drill="0.7366" diameter="1.6002" shape="square" rot="R180"/>
<pad name="2" x="14.255" y="5.1422" drill="0.7366" diameter="1.6002" rot="R180"/>
<pad name="3" x="12.255" y="5.4978" drill="0.7366" diameter="1.6002" rot="R180"/>
<pad name="4" x="10.255" y="5.1422" drill="0.7366" diameter="1.6002" rot="R180"/>
<pad name="5" x="8.255" y="5.4978" drill="0.7366" diameter="1.6002" rot="R180"/>
<pad name="6" x="8.255" y="20.4978" drill="0.7366" diameter="1.6002" rot="R180"/>
<pad name="7" x="10.255" y="20.1422" drill="0.7366" diameter="1.6002" rot="R180"/>
<pad name="8" x="12.255" y="20.4978" drill="0.7366" diameter="1.6002" rot="R180"/>
<pad name="9" x="14.255" y="20.1422" drill="0.7366" diameter="1.6002" rot="R180"/>
<pad name="10" x="16.255" y="20.4978" drill="0.7366" diameter="1.6002" rot="R180"/>
<pad name="11" x="20.255" y="20.4978" drill="0.7366" diameter="1.6002" rot="R180"/>
<pad name="NC" x="18.2682" y="20.1422" drill="0.7366" diameter="1.6002" rot="R180"/>
<text x="1.905" y="24.13" size="0.4064" layer="25">>NAME</text>
<text x="3.81" y="1.27" size="0.4064" layer="27" rot="R180">>VALUE</text>
<text x="17.9324" y="19.9644" size="0.4064" layer="51" ratio="15">NC</text>
<rectangle x1="20.1676" y1="20.066" x2="20.3708" y2="20.574" layer="51" rot="R90"/>
<rectangle x1="16.129" y1="20.066" x2="16.3322" y2="20.574" layer="51" rot="R90"/>
<rectangle x1="14.1478" y1="20.066" x2="14.351" y2="20.574" layer="51" rot="R90"/>
<rectangle x1="12.1666" y1="20.066" x2="12.3698" y2="20.574" layer="51" rot="R90"/>
<rectangle x1="10.16" y1="20.066" x2="10.3632" y2="20.574" layer="51" rot="R90"/>
<rectangle x1="8.1534" y1="20.066" x2="8.3566" y2="20.574" layer="51" rot="R90"/>
<rectangle x1="16.1544" y1="5.0546" x2="16.3576" y2="5.5626" layer="51" rot="R90"/>
<rectangle x1="14.1478" y1="5.0546" x2="14.351" y2="5.5626" layer="51" rot="R90"/>
<rectangle x1="12.1158" y1="5.0546" x2="12.319" y2="5.5626" layer="51" rot="R90"/>
<rectangle x1="10.1346" y1="5.0546" x2="10.3378" y2="5.5626" layer="51" rot="R90"/>
<rectangle x1="8.1534" y1="5.0546" x2="8.3566" y2="5.5626" layer="51" rot="R90"/>
</package>
<package name="ID-12_SMD">
<description>ID12 Footprint (works with ID2, ID12, and ID20)</description>
<wire x1="-0.045" y1="0.02" x2="26.355" y2="0.02" width="0.127" layer="51"/>
<wire x1="26.355" y1="0.02" x2="26.355" y2="25.32" width="0.127" layer="51"/>
<wire x1="26.355" y1="25.32" x2="-0.045" y2="25.32" width="0.127" layer="51"/>
<wire x1="-0.045" y1="25.32" x2="-0.045" y2="0.02" width="0.127" layer="51"/>
<wire x1="6.9984" y1="21.5718" x2="6.9984" y2="19.0718" width="0.2032" layer="51"/>
<wire x1="7.0111" y1="21.5718" x2="21.5929" y2="21.5718" width="0.2032" layer="51"/>
<wire x1="21.5929" y1="19.0718" x2="7.0111" y2="19.0718" width="0.2032" layer="51"/>
<wire x1="21.5929" y1="21.5718" x2="21.5929" y2="19.0718" width="0.2032" layer="51"/>
<wire x1="6.9984" y1="6.5604" x2="6.9984" y2="4.0604" width="0.2032" layer="51"/>
<wire x1="7.0111" y1="6.5604" x2="17.5289" y2="6.5604" width="0.2032" layer="51"/>
<wire x1="17.5289" y1="4.0604" x2="7.0111" y2="4.0604" width="0.2032" layer="51"/>
<wire x1="17.5289" y1="6.5604" x2="17.5289" y2="4.0604" width="0.2032" layer="51"/>
<smd name="6" x="8.2484" y="18.8218" dx="0.85" dy="1.7" layer="1"/>
<smd name="7" x="10.2484" y="21.8218" dx="0.85" dy="1.7" layer="1"/>
<smd name="8" x="12.2484" y="18.8218" dx="0.85" dy="1.7" layer="1"/>
<smd name="9" x="14.2484" y="21.8218" dx="0.85" dy="1.7" layer="1"/>
<smd name="10" x="16.2484" y="18.8218" dx="0.85" dy="1.7" layer="1"/>
<smd name="NC" x="18.2484" y="21.8218" dx="0.85" dy="1.7" layer="1"/>
<smd name="11" x="20.2484" y="18.8218" dx="0.85" dy="1.7" layer="1"/>
<smd name="5" x="8.2484" y="3.8104" dx="0.85" dy="1.7" layer="1"/>
<smd name="4" x="10.2484" y="6.8104" dx="0.85" dy="1.7" layer="1"/>
<smd name="3" x="12.2484" y="3.8104" dx="0.85" dy="1.7" layer="1"/>
<smd name="2" x="14.2484" y="6.8104" dx="0.85" dy="1.7" layer="1"/>
<smd name="1" x="16.2484" y="3.8104" dx="0.85" dy="1.7" layer="1"/>
<text x="1.905" y="24.13" size="0.4064" layer="25">>NAME</text>
<text x="3.81" y="1.27" size="0.4064" layer="27" rot="R180">>VALUE</text>
<rectangle x1="12.001" y1="20.066" x2="12.509" y2="20.574" layer="51"/>
<rectangle x1="10.001" y1="20.066" x2="10.509" y2="20.574" layer="51"/>
<rectangle x1="8.001" y1="20.066" x2="8.509" y2="20.574" layer="51"/>
<rectangle x1="14.001" y1="20.066" x2="14.509" y2="20.574" layer="51"/>
<rectangle x1="16.001" y1="20.066" x2="16.509" y2="20.574" layer="51"/>
<rectangle x1="20.001" y1="20.066" x2="20.509" y2="20.574" layer="51"/>
<rectangle x1="12.001" y1="5.0546" x2="12.509" y2="5.5626" layer="51"/>
<rectangle x1="10.001" y1="5.0546" x2="10.509" y2="5.5626" layer="51"/>
<rectangle x1="8.001" y1="5.0546" x2="8.509" y2="5.5626" layer="51"/>
<rectangle x1="14.001" y1="5.0546" x2="14.509" y2="5.5626" layer="51"/>
<rectangle x1="16.001" y1="5.0546" x2="16.509" y2="5.5626" layer="51"/>
</package>
</packages>
<symbols>
<symbol name="ID-12">
<wire x1="-10.16" y1="10.16" x2="-10.16" y2="-10.16" width="0.254" layer="94"/>
<wire x1="-10.16" y1="-10.16" x2="10.16" y2="-10.16" width="0.254" layer="94"/>
<wire x1="10.16" y1="-10.16" x2="10.16" y2="10.16" width="0.254" layer="94"/>
<wire x1="10.16" y1="10.16" x2="-10.16" y2="10.16" width="0.254" layer="94"/>
<text x="-2.54" y="12.7" size="1.27" layer="95" rot="R180">>NAME</text>
<text x="-10.16" y="-12.7" size="1.27" layer="96">>VALUE</text>
<pin name="GNDT" x="-15.24" y="2.54" length="middle"/>
<pin name="RES" x="-15.24" y="0" length="middle"/>
<pin name="ANT1" x="-15.24" y="-2.54" length="middle"/>
<pin name="ANT2" x="-15.24" y="-5.08" length="middle"/>
<pin name="CP" x="-15.24" y="-7.62" length="middle"/>
<pin name="FUTURE" x="15.24" y="-7.62" length="middle" rot="R180"/>
<pin name="+/-" x="15.24" y="-5.08" length="middle" rot="R180"/>
<pin name="D1" x="15.24" y="-2.54" length="middle" rot="R180"/>
<pin name="D0" x="15.24" y="0" length="middle" rot="R180"/>
<pin name="LED" x="15.24" y="2.54" length="middle" rot="R180"/>
<pin name="5V" x="15.24" y="7.62" length="middle" rot="R180"/>
</symbol>
</symbols>
<devicesets>
<deviceset name="ID-12/20">
<description>RFID reader for ID2, ID12, and ID20 Package</description>
<gates>
<gate name="G$1" symbol="ID-12" x="0" y="-2.54"/>
</gates>
<devices>
<device name="" package="ID-12">
<connects>
<connect gate="G$1" pin="+/-" pad="7"/>
<connect gate="G$1" pin="5V" pad="11"/>
<connect gate="G$1" pin="ANT1" pad="3"/>
<connect gate="G$1" pin="ANT2" pad="4"/>
<connect gate="G$1" pin="CP" pad="5"/>
<connect gate="G$1" pin="D0" pad="9"/>
<connect gate="G$1" pin="D1" pad="8"/>
<connect gate="G$1" pin="FUTURE" pad="6"/>
<connect gate="G$1" pin="GNDT" pad="1"/>
<connect gate="G$1" pin="LED" pad="10"/>
<connect gate="G$1" pin="RES" pad="2"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
<device name="ID-12_LOCK" package="ID-12_LOCK">
<connects>
<connect gate="G$1" pin="+/-" pad="7"/>
<connect gate="G$1" pin="5V" pad="11"/>
<connect gate="G$1" pin="ANT1" pad="3"/>
<connect gate="G$1" pin="ANT2" pad="4"/>
<connect gate="G$1" pin="CP" pad="5"/>
<connect gate="G$1" pin="D0" pad="9"/>
<connect gate="G$1" pin="D1" pad="8"/>
<connect gate="G$1" pin="FUTURE" pad="6"/>
<connect gate="G$1" pin="GNDT" pad="1"/>
<connect gate="G$1" pin="LED" pad="10"/>
<connect gate="G$1" pin="RES" pad="2"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
<device name="SMD" package="ID-12_SMD">
<connects>
<connect gate="G$1" pin="+/-" pad="7"/>
<connect gate="G$1" pin="5V" pad="11"/>
<connect gate="G$1" pin="ANT1" pad="3"/>
<connect gate="G$1" pin="ANT2" pad="4"/>
<connect gate="G$1" pin="CP" pad="5"/>
<connect gate="G$1" pin="D0" pad="9"/>
<connect gate="G$1" pin="D1" pad="8"/>
<connect gate="G$1" pin="FUTURE" pad="6"/>
<connect gate="G$1" pin="GNDT" pad="1"/>
<connect gate="G$1" pin="LED" pad="10"/>
<connect gate="G$1" pin="RES" pad="2"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
</devices>
</deviceset>
</devicesets>
</library>
<library name="TMF_ICs">
<packages>
<package name="SOT23-5">
<wire x1="1.5" y1="-0.8" x2="-1.5" y2="-0.8" width="0.127" layer="51"/>
<wire x1="-1.8" y1="-0.8" x2="-1.8" y2="0.8" width="0.127" layer="21"/>
<wire x1="-1.5" y1="0.8" x2="1.5" y2="0.8" width="0.127" layer="51"/>
<wire x1="1.8" y1="0.8" x2="1.8" y2="-0.8" width="0.127" layer="21"/>
<circle x="-1.7" y="-1.3" radius="0.0635" width="0.127" layer="21"/>
<smd name="1" x="-0.95" y="-1.15" dx="0.6" dy="0.9" layer="1"/>
<smd name="2" x="0" y="-1.15" dx="0.6" dy="0.9" layer="1"/>
<smd name="3" x="0.95" y="-1.15" dx="0.6" dy="0.9" layer="1"/>
<smd name="4" x="0.95" y="1.15" dx="0.6" dy="0.9" layer="1"/>
<smd name="5" x="-0.95" y="1.15" dx="0.6" dy="0.9" layer="1"/>
<text x="-2.54" y="-2.54" size="1.27" layer="27" font="vector" ratio="10" align="center-right">>VALUE</text>
<text x="-2.54" y="0" size="1.27" layer="25" font="vector" ratio="10" align="center-right">>NAME</text>
<rectangle x1="-1.14" y1="-1.4" x2="-0.76" y2="-0.8" layer="51"/>
<rectangle x1="-0.19" y1="-1.4" x2="0.19" y2="-0.8" layer="51"/>
<rectangle x1="0.76" y1="-1.4" x2="1.14" y2="-0.8" layer="51"/>
<rectangle x1="0.76" y1="0.8" x2="1.14" y2="1.4" layer="51"/>
<rectangle x1="-1.14" y1="0.8" x2="-0.76" y2="1.4" layer="51"/>
<wire x1="1.5" y1="0.8" x2="1.5" y2="-0.8" width="0.127" layer="51"/>
<wire x1="-1.5" y1="-0.8" x2="-1.5" y2="0.8" width="0.127" layer="51"/>
<wire x1="-2.5" y1="2.5" x2="2.5" y2="2.5" width="0.127" layer="39"/>
<wire x1="2.5" y1="2.5" x2="2.5" y2="-2.5" width="0.127" layer="39"/>
<wire x1="2.5" y1="-2.5" x2="-2.5" y2="-2.5" width="0.127" layer="39"/>
<wire x1="-2.5" y1="-2.5" x2="-2.5" y2="2.5" width="0.127" layer="39"/>
<circle x="-1.1" y="-0.4" radius="0.0635" width="0.127" layer="51"/>
</package>
</packages>
<symbols>
<symbol name="MAX3181E">
<pin name="!INVALID" x="-15.24" y="2.54" length="middle"/>
<pin name="GND" x="-15.24" y="0" length="middle"/>
<pin name="ROUT" x="-15.24" y="-2.54" length="middle"/>
<pin name="RIN" x="15.24" y="-2.54" length="middle" rot="R180"/>
<pin name="VCC" x="15.24" y="2.54" length="middle" rot="R180"/>
<wire x1="-10.16" y1="5.08" x2="-10.16" y2="-5.08" width="0.254" layer="94"/>
<wire x1="-10.16" y1="-5.08" x2="10.16" y2="-5.08" width="0.254" layer="94"/>
<wire x1="10.16" y1="-5.08" x2="10.16" y2="5.08" width="0.254" layer="94"/>
<wire x1="10.16" y1="5.08" x2="-10.16" y2="5.08" width="0.254" layer="94"/>
<text x="0" y="7.62" size="1.778" layer="95" align="center">>NAME</text>
<text x="0" y="-7.62" size="1.778" layer="96" align="center">>VALUE</text>
</symbol>
</symbols>
<devicesets>
<deviceset name="MAX3181E" prefix="U">
<gates>
<gate name="G$1" symbol="MAX3181E" x="0" y="0"/>
</gates>
<devices>
<device name="_SOT23-5" package="SOT23-5">
<connects>
<connect gate="G$1" pin="!INVALID" pad="1"/>
<connect gate="G$1" pin="GND" pad="2"/>
<connect gate="G$1" pin="RIN" pad="4"/>
<connect gate="G$1" pin="ROUT" pad="3"/>
<connect gate="G$1" pin="VCC" pad="5"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
</devices>
</deviceset>
</devicesets>
</library>
</libraries>
<attributes>
</attributes>
<variantdefs>
</variantdefs>
<classes>
<class number="0" name="default" width="0" drill="0">
</class>
</classes>
<parts>
<part name="GND4" library="supply1" deviceset="GND" device=""/>
<part name="GND5" library="supply1" deviceset="GND" device=""/>
<part name="C2" library="SparkFun-Capacitors" library_urn="urn:adsk.eagle:library:510" deviceset="0.1UF" device="-0603-25V-(+80/-20%)" package3d_urn="urn:adsk.eagle:package:37414/1" value="0.1uF">
<attribute name="SPICEPREFIX" value="C"/>
</part>
<part name="J1" library="SparkFun-Connectors" deviceset="CONN_02" device="5MM"/>
<part name="FRAME1" library="TMF_Frames" deviceset="LETTER_LANDSCAPE" device=""/>
<part name="SUPPLY7" library="SparkFun-Aesthetics" deviceset="3.3V" device=""/>
<part name="SUPPLY3" library="SparkFun-Aesthetics" deviceset="3.3V" device=""/>
<part name="LOGO1" library="TinkerMill" deviceset="MADE_BY_TINKERMILL" device=""/>
<part name="SUPPLY4" library="SparkFun-Aesthetics" deviceset="3.3V" device=""/>
<part name="C1" library="SparkFun-Capacitors" library_urn="urn:adsk.eagle:library:510" deviceset="10UF" device="-0603-6.3V-20%" package3d_urn="urn:adsk.eagle:package:37414/1" value="1uF"/>
<part name="GND21" library="supply1" library_urn="urn:adsk.eagle:library:371" deviceset="GND" device=""/>
<part name="U1" library="SparkFun-RF" deviceset="ID-12/20" device=""/>
<part name="GND1" library="supply1" deviceset="GND" device=""/>
<part name="U2" library="TMF_ICs" deviceset="MAX3181E" device="_SOT23-5" value="MAX3181E">
<attribute name="SPICEPREFIX" value="X"/>
</part>
<part name="SUPPLY1" library="SparkFun-Aesthetics" deviceset="3.3V" device=""/>
<part name="GND2" library="supply1" deviceset="GND" device="">
<attribute name="SPICEPREFIX" value="G"/>
</part>
<part name="GND3" library="supply1" deviceset="GND" device=""/>
</parts>
<sheets>
<sheet>
<plain>
<text x="175.26" y="12.7" size="2.1844" layer="95" align="top-left">TinkerMill
Longmont, CO</text>
<text x="243.84" y="7.62" size="2.1844" layer="95">1.0</text>
</plain>
<instances>
<instance part="GND4" gate="1" x="83.82" y="83.82" smashed="yes">
<attribute name="VALUE" x="81.28" y="81.28" size="1.778" layer="96"/>
</instance>
<instance part="GND5" gate="1" x="119.38" y="83.82" smashed="yes">
<attribute name="VALUE" x="116.84" y="81.28" size="1.778" layer="96"/>
</instance>
<instance part="C2" gate="G$1" x="190.5" y="96.52" smashed="yes" rot="R180">
<attribute name="NAME" x="193.04" y="96.52" size="1.778" layer="95"/>
<attribute name="VALUE" x="193.04" y="93.98" size="1.778" layer="96" align="top-left"/>
</instance>
<instance part="J1" gate="G$1" x="35.56" y="93.98" smashed="yes">
<attribute name="VALUE" x="33.02" y="89.154" size="1.778" layer="96" font="vector"/>
<attribute name="NAME" x="33.02" y="99.568" size="1.778" layer="95"/>
</instance>
<instance part="FRAME1" gate="G$1" x="0" y="0" smashed="yes"/>
<instance part="FRAME1" gate="G$2" x="152.4" y="0" smashed="yes">
<attribute name="LAST_DATE_TIME" x="165.1" y="1.27" size="2.54" layer="94"/>
<attribute name="SHEET" x="238.76" y="1.27" size="2.54" layer="94"/>
<attribute name="DRAWING_NAME" x="167.64" y="17.78" size="2.54" layer="94"/>
</instance>
<instance part="SUPPLY7" gate="G$1" x="81.28" y="106.68" smashed="yes">
<attribute name="VALUE" x="81.28" y="110.49" size="1.778" layer="96" align="bottom-center"/>
</instance>
<instance part="SUPPLY3" gate="G$1" x="119.38" y="109.22" smashed="yes">
<attribute name="VALUE" x="119.38" y="113.03" size="1.778" layer="96" align="bottom-center"/>
</instance>
<instance part="LOGO1" gate="G$1" x="109.22" y="5.08" smashed="yes"/>
<instance part="SUPPLY4" gate="G$1" x="129.54" y="139.7" smashed="yes">
<attribute name="VALUE" x="129.54" y="143.51" size="1.778" layer="96" align="bottom-center"/>
</instance>
<instance part="C1" gate="G$1" x="129.54" y="134.62" smashed="yes">
<attribute name="NAME" x="131.064" y="137.541" size="1.778" layer="95"/>
<attribute name="VALUE" x="131.064" y="132.461" size="1.778" layer="96"/>
</instance>
<instance part="GND21" gate="1" x="129.54" y="129.54" smashed="yes">
<attribute name="VALUE" x="127" y="127" size="1.778" layer="96"/>
</instance>
<instance part="U1" gate="G$1" x="101.6" y="96.52" smashed="yes">
<attribute name="NAME" x="91.44" y="109.22" size="1.778" layer="95" align="center-left"/>
<attribute name="VALUE" x="91.44" y="83.82" size="1.778" layer="96" align="center-left"/>
</instance>
<instance part="GND1" gate="1" x="45.72" y="88.9" smashed="yes">
<attribute name="VALUE" x="43.18" y="86.36" size="1.778" layer="96"/>
</instance>
<instance part="U2" gate="G$1" x="157.48" y="99.06" smashed="yes">
<attribute name="NAME" x="157.48" y="106.68" size="1.778" layer="95" align="center"/>
<attribute name="VALUE" x="157.48" y="91.44" size="1.778" layer="96" align="center"/>
</instance>
<instance part="SUPPLY1" gate="G$1" x="175.26" y="106.68" smashed="yes">
<attribute name="VALUE" x="175.26" y="110.49" size="1.778" layer="96" align="bottom-center"/>
</instance>
<instance part="GND2" gate="1" x="139.7" y="91.44" smashed="yes">
<attribute name="VALUE" x="137.16" y="88.9" size="1.778" layer="96"/>
</instance>
<instance part="GND3" gate="1" x="190.5" y="86.36" smashed="yes">
<attribute name="VALUE" x="187.96" y="83.82" size="1.778" layer="96"/>
</instance>
</instances>
<busses>
</busses>
<nets>
<net name="3.3V" class="0">
<segment>
<pinref part="U1" gate="G$1" pin="5V"/>
<wire x1="116.84" y1="104.14" x2="119.38" y2="104.14" width="0.1524" layer="91"/>
<wire x1="119.38" y1="109.22" x2="119.38" y2="104.14" width="0.1524" layer="91"/>
<pinref part="SUPPLY3" gate="G$1" pin="3.3V"/>
</segment>
<segment>
<pinref part="SUPPLY7" gate="G$1" pin="3.3V"/>
<pinref part="U1" gate="G$1" pin="RES"/>
<wire x1="86.36" y1="96.52" x2="81.28" y2="96.52" width="0.1524" layer="91"/>
<wire x1="81.28" y1="96.52" x2="81.28" y2="106.68" width="0.1524" layer="91"/>
</segment>
<segment>
<pinref part="SUPPLY4" gate="G$1" pin="3.3V"/>
<pinref part="C1" gate="G$1" pin="1"/>
</segment>
<segment>
<pinref part="U2" gate="G$1" pin="VCC"/>
<wire x1="172.72" y1="101.6" x2="175.26" y2="101.6" width="0.1524" layer="91"/>
<pinref part="SUPPLY1" gate="G$1" pin="3.3V"/>
<wire x1="175.26" y1="101.6" x2="175.26" y2="106.68" width="0.1524" layer="91"/>
<pinref part="C2" gate="G$1" pin="2"/>
<wire x1="190.5" y1="99.06" x2="190.5" y2="101.6" width="0.1524" layer="91"/>
<wire x1="190.5" y1="101.6" x2="175.26" y2="101.6" width="0.1524" layer="91"/>
<junction x="175.26" y="101.6"/>
</segment>
</net>
<net name="GND" class="0">
<segment>
<pinref part="U1" gate="G$1" pin="GNDT"/>
<wire x1="83.82" y1="99.06" x2="86.36" y2="99.06" width="0.1524" layer="91"/>
<pinref part="GND4" gate="1" pin="GND"/>
<wire x1="83.82" y1="86.36" x2="83.82" y2="99.06" width="0.1524" layer="91"/>
</segment>
<segment>
<pinref part="GND5" gate="1" pin="GND"/>
<wire x1="119.38" y1="86.36" x2="119.38" y2="91.44" width="0.1524" layer="91"/>
<wire x1="119.38" y1="91.44" x2="116.84" y2="91.44" width="0.1524" layer="91"/>
<pinref part="U1" gate="G$1" pin="+/-"/>
</segment>
<segment>
<pinref part="C1" gate="G$1" pin="2"/>
<pinref part="GND21" gate="1" pin="GND"/>
</segment>
<segment>
<pinref part="J1" gate="G$1" pin="1"/>
<wire x1="43.18" y1="93.98" x2="45.72" y2="93.98" width="0.1524" layer="91"/>
<pinref part="GND1" gate="1" pin="GND"/>
<wire x1="45.72" y1="93.98" x2="45.72" y2="91.44" width="0.1524" layer="91"/>
</segment>
<segment>
<pinref part="GND2" gate="1" pin="GND"/>
<pinref part="U2" gate="G$1" pin="GND"/>
<wire x1="139.7" y1="93.98" x2="139.7" y2="99.06" width="0.1524" layer="91"/>
<wire x1="139.7" y1="99.06" x2="142.24" y2="99.06" width="0.1524" layer="91"/>
</segment>
<segment>
<pinref part="C2" gate="G$1" pin="1"/>
<pinref part="GND3" gate="1" pin="GND"/>
<wire x1="190.5" y1="91.44" x2="190.5" y2="88.9" width="0.1524" layer="91"/>
</segment>
</net>
<net name="RXD" class="0">
<segment>

<pinref part="U1" gate="G$1" pin="D0"/>
<pinref part="U2" gate="G$1" pin="ROUT"/>
<wire x1="116.84" y1="96.52" x2="142.24" y2="96.52" width="0.1524" layer="91"/>
</segment>
</net>
<net name="RX232" class="0">
<segment>
<pinref part="J1" gate="G$1" pin="2"/>
<wire x1="43.18" y1="96.52" x2="58.42" y2="96.52" width="0.1524" layer="91"/>

</segment>
<segment>
<pinref part="U2" gate="G$1" pin="RIN"/>
<wire x1="172.72" y1="96.52" x2="185.42" y2="96.52" width="0.1524" layer="91"/>

</segment>
</net>
<net name="!INVALID" class="0">
<segment>
<pinref part="U2" gate="G$1" pin="!INVALID"/>
<wire x1="142.24" y1="101.6" x2="129.54" y2="101.6" width="0.1524" layer="91"/>

</segment>
</net>
</nets>
</sheet>
</sheets>
</schematic>
</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>
<note version="8.2" severity="warning">
Since Version 8.2, EAGLE supports online libraries. The ids
of those online libraries will not be understood (or retained)
with this version.
</note>
<note version="8.3" severity="warning">
Since Version 8.3, EAGLE supports URNs for individual library
assets (packages, symbols, and devices). The URNs of those assets
will not be understood (or retained) with this version.
</note>
<note version="8.3" severity="warning">
Since Version 8.3, EAGLE supports the association of 3D packages
with devices in libraries, schematics, and board files. Those 3D
packages will not be understood (or retained) with this version.
</note>
</compatibility>
</eagle>


text:
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc             (unknown)
// source: infrastructure/rpc/link/v1/link.proto

package v1

import (
	context "context"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
)

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7

const (
	LinkService_Get_FullMethodName    = "/infrastructure.rpc.link.v1.LinkService/Get"
	LinkService_List_FullMethodName   = "/infrastructure.rpc.link.v1.LinkService/List"
	LinkService_Add_FullMethodName    = "/infrastructure.rpc.link.v1.LinkService/Add"
	LinkService_Update_FullMethodName = "/infrastructure.rpc.link.v1.LinkService/Update"
	LinkService_Delete_FullMethodName = "/infrastructure.rpc.link.v1.LinkService/Delete"
)

// LinkServiceClient is the client API for LinkService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type LinkServiceClient interface {
	Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (*GetResponse, error)
	List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (*ListResponse, error)
	Add(ctx context.Context, in *AddRequest, opts ...grpc.CallOption) (*AddResponse, error)
	Update(ctx context.Context, in *UpdateRequest, opts ...grpc.CallOption) (*UpdateResponse, error)
	Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
}

type linkServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewLinkServiceClient(cc grpc.ClientConnInterface) LinkServiceClient {
	return &linkServiceClient{cc}
}

func (c *linkServiceClient) Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (*GetResponse, error) {
	out := new(GetResponse)
	err := c.cc.Invoke(ctx, LinkService_Get_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *linkServiceClient) List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (*ListResponse, error) {
	out := new(ListResponse)
	err := c.cc.Invoke(ctx, LinkService_List_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *linkServiceClient) Add(ctx context.Context, in *AddRequest, opts ...grpc.CallOption) (*AddResponse, error) {
	out := new(AddResponse)
	err := c.cc.Invoke(ctx, LinkService_Add_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *linkServiceClient) Update(ctx context.Context, in *UpdateRequest, opts ...grpc.CallOption) (*UpdateResponse, error) {
	out := new(UpdateResponse)
	err := c.cc.Invoke(ctx, LinkService_Update_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *linkServiceClient) Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
	out := new(emptypb.Empty)
	err := c.cc.Invoke(ctx, LinkService_Delete_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// LinkServiceServer is the server API for LinkService service.
// All implementations must embed UnimplementedLinkServiceServer
// for forward compatibility
type LinkServiceServer interface {
	Get(context.Context, *GetRequest) (*GetResponse, error)
	List(context.Context, *ListRequest) (*ListResponse, error)
	Add(context.Context, *AddRequest) (*AddResponse, error)
	Update(context.Context, *UpdateRequest) (*UpdateResponse, error)
	Delete(context.Context, *DeleteRequest) (*emptypb.Empty, error)
	mustEmbedUnimplementedLinkServiceServer()
}

// UnimplementedLinkServiceServer must be embedded to have forward compatible implementations.
type UnimplementedLinkServiceServer struct {
}

func (UnimplementedLinkServiceServer) Get(context.Context, *GetRequest) (*GetResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Get not implemented")
}
func (UnimplementedLinkServiceServer) List(context.Context, *ListRequest) (*ListResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
}
func (UnimplementedLinkServiceServer) Add(context.Context, *AddRequest) (*AddResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Add not implemented")
}
func (UnimplementedLinkServiceServer) Update(context.Context, *UpdateRequest) (*UpdateResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
}
func (UnimplementedLinkServiceServer) Delete(context.Context, *DeleteRequest) (*emptypb.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
}
func (UnimplementedLinkServiceServer) mustEmbedUnimplementedLinkServiceServer() {}

// UnsafeLinkServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to LinkServiceServer will
// result in compilation errors.
type UnsafeLinkServiceServer interface {
	mustEmbedUnimplementedLinkServiceServer()
}

func RegisterLinkServiceServer(s grpc.ServiceRegistrar, srv LinkServiceServer) {
	s.RegisterService(&LinkService_ServiceDesc, srv)
}

func _LinkService_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(LinkServiceServer).Get(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: LinkService_Get_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(LinkServiceServer).Get(ctx, req.(*GetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _LinkService_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(LinkServiceServer).List(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: LinkService_List_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(LinkServiceServer).List(ctx, req.(*ListRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _LinkService_Add_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AddRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(LinkServiceServer).Add(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: LinkService_Add_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(LinkServiceServer).Add(ctx, req.(*AddRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _LinkService_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UpdateRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(LinkServiceServer).Update(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: LinkService_Update_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(LinkServiceServer).Update(ctx, req.(*UpdateRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _LinkService_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(LinkServiceServer).Delete(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: LinkService_Delete_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(LinkServiceServer).Delete(ctx, req.(*DeleteRequest))
	}
	return interceptor(ctx, in, info, handler)
}

// LinkService_ServiceDesc is the grpc.ServiceDesc for LinkService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var LinkService_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "infrastructure.rpc.link.v1.LinkService",
	HandlerType: (*LinkServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Get",
			Handler:    _LinkService_Get_Handler,
		},
		{
			MethodName: "List",
			Handler:    _LinkService_List_Handler,
		},
		{
			MethodName: "Add",
			Handler:    _LinkService_Add_Handler,
		},
		{
			MethodName: "Update",
			Handler:    _LinkService_Update_Handler,
		},
		{
			MethodName: "Delete",
			Handler:    _LinkService_Delete_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "infrastructure/rpc/link/v1/link.proto",
}

license: MIT

repository: shortlink-org/shortlink

license_type: permissive

repo_name: shortlink-org/shortlink

branch_name: refs/heads/main

gha_license_id: MIT

gha_language: Go

extension: go


text:
DESCRIPTION = "Magic 8 Ball"
HOMEPAGE = "http://www.opkg.org/package_35.html"
AUTHOR = "Jakob Westhoff"
LICENSE = "GPLv2"
SECTION = "x11/game"
SRCREV = "45"
PV = "0.2+svnr${SRCPV}"
PR = "r0"
S = "${WORKDIR}/"
FILES_${PN} += /usr/share/moko_eightball/Accelerometer/__init__.py
FILES_${PN} += /usr/share/moko_eightball/themes/eightball.edj

SRC_URI = "svn://svn.pureenergy.cc/moko_eightball;module=.;proto=svn \
	   file://files/fixpath.patch"

do_compile() {
	cd python/src/data/themes
	./maketheme.sh
}

do_install() {
	cd python
	install -d 0755 ${D}/usr/share/moko_eightball
	install -d 0755 ${D}/usr/share/moko_eightball/Accelerometer
	install -d 0755 ${D}/usr/share/moko_eightball/themes
	install -d 0755 ${D}/usr/share/applications
	install -d 0755 ${D}/usr/share/pixmaps
	install -d 0755 ${D}/usr/bin
	install -m 0755 src/eightball.py ${D}/usr/bin/eightball
	install -m 0644 src/Accelerometer/__init__.py ${D}/usr/share/moko_eightball/Accelerometer/
	install -m 0644 src/data/themes/eightball.edj ${D}/usr/share/moko_eightball/themes/eightball.edj
	install -m 0644 ipk/usr/share/applications/eightball.desktop ${D}/usr/share/applications/eightball.desktop
	install -m 0644 ipk/usr/share/pixmaps/eightball.png ${D}/usr/share/pixmaps/eightball.png
}

repository: trini/openembedded

repo_name: trini/openembedded

branch_name: refs/heads/master

extension: bb


text:
package impl

import (
	"log"

	sunspec "github.com/andig/gosunspec"
	"github.com/andig/gosunspec/smdx"
	"github.com/andig/gosunspec/spi"
	"github.com/andig/gosunspec/typelabel"
)

func NewArray() spi.ArraySPI {
	return &array{
		devices: []*device{},
	}
}

func NewDevice() spi.DeviceSPI {
	return &device{
		models: []*model{},
	}
}

// Answer a new model that can be mapped to a contiguous range of bytes. The size
// (or bound) of that range determines the number of repeats.
func NewContiguousModel(me *smdx.ModelElement, bound uint16, phys spi.Driver) spi.ModelSPI {
	block0len := int(me.Blocks[0].Length) // specified length of the first block
	excess := int(bound) - block0len      // number of words for additional blocks
	nr := 0                               // number of repeat blocks
	rlen := block0len                     // repeat block length

	// reset the repeat block length if there is a repeat block

	if len(me.Blocks) > 1 {
		rlen = int(me.Blocks[1].Length)
	}

	// calculate the repeats and normalize negative numbers to zero

	nr = (excess / rlen)
	if nr < 0 {
		nr = 0
	}

	// build a model with the specified geometry

	m := NewModel(me, nr, phys)

	// handle a specification special case &/or report length inconsistenes.

	if len(me.Blocks) == 1 && excess < 0 {
		// Models with fixed-blocks only are allowed to truncate the
		// fixed block to a smaller model length because of a special
		// case for the Common Model allowed for by the SunSpec Information Model.
		//
		// (Note: it isn't clear why the specification needs to cater for
		// this special case.)
		//
		// In particular, implementations are allowed to return a Common
		// Model block of length 65 instead of 66 if it suits their purposes to do so.
		//
		// We support truncation of other fixed-blocks only models in the same
		// way, if it occurs (e.g. model length < block length) just in case i
		// the standard has been interpreted by others to permit this for
		// other models.
		//
		// The same support cannot be extended to models with repeating blocks
		// because the specification doesn't provide guidance about where to
		// apply such truncations in this case.
		m.MustBlock(0).(spi.BlockSPI).SetLength(bound)
	} else {
		// If the model length is not strictly identical to the canaonical
		// length of a model instance with 'nr' repeat blocks, then report
		// the inconsistency but don't otherwise do anything. It is likely
		// that API may not correctly map points of at least some blocks
		// in this case.
		if nr*rlen+block0len != int(bound) {
			log.Printf("warning: inconsistent model and block lengths: %d, %d, %d*%d. YMMV.", bound, block0len, nr, rlen)
		}
	}
	return m
}

// Answer a new model with nr repeats of the repating block, if any. The caller
// determines the number of repeats.
func NewModel(me *smdx.ModelElement, nr int, driver spi.Driver) spi.ModelSPI {
	blocks := []*block{newBlock(&me.Blocks[0], driver, nil)}

	m := &model{
		smdx:   me,
		driver: driver,
		blocks: blocks,
	}

	for nr > 0 {
		nr--
		m.AddRepeat()
	}

	return m
}

// Answer a new block.
// The fixedBlock param is used to find scale factors that are
// outside of a repeating block.
func newBlock(blockSmdx *smdx.BlockElement, driver spi.Driver, fixedBlock *block) *block {
	b := &block{
		smdx:   blockSmdx,
		points: map[string]*point{},
		driver: driver,
	}

	p := []*smdx.PointElement{}
	q := []*smdx.PointElement{}

	for x, pe := range blockSmdx.Points {
		if pe.Type == typelabel.ScaleFactor {
			p = append(p, &blockSmdx.Points[x])
		} else {
			q = append(q, &blockSmdx.Points[x])
		}
	}

	p = append(p, q...)

	for _, pe := range p {
		var sfp sunspec.Point
		var sp *point
		var ok bool

		if sfp, ok = b.points[pe.ScaleFactor]; ok {
			sp = newPoint(pe, sfp, b)
		} else if pe.ScaleFactor != "" && fixedBlock != nil {
			if sfp, ok = fixedBlock.points[pe.ScaleFactor]; ok {
				sp = newPoint(pe, sfp, b)
			} else {
				sp = newPoint(pe, nil, b)
			}
		} else {
			sp = newPoint(pe, nil, b)
		}

		b.points[pe.Id] = sp
	}

	return b
}

// Answer a new point.
func newPoint(smdx *smdx.PointElement, scaleFactor sunspec.Point, b *block) *point {
	return &point{
		smdx:        smdx,
		scaleFactor: scaleFactor,
		block:       b,
		err:         errNotInitialized,
	}
}

repository: andig/gosunspec

repo_name: andig/gosunspec


text:
# For Visual Studio generators it is now possible (since V3.6) to set a default startup project.
# We will set this to the agent_test project.
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT agent)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)

# Allow better viewing and grouping of files in Visual Studio by defining source groups
get_target_property(agent_sources agent SOURCES)
source_group("Agent\\Headers Files" FILES ${agent_sources} REGULAR_EXPRESSION "\\.(h|hpp)$")
source_group("Agent\\Source Files" FILES ${agent_sources} REGULAR_EXPRESSION "\\.(c|cpp)$")

repository: mtconnect/cppagent

repo_name: mtconnect/cppagent

extension: cmake


text:
DESCRIPTION = "Cryptographic modules for Python."
HOMEPAGE = "http://www.pycrypto.org/"
LICENSE = "PSFv2"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=35f354d199e8cb7667b059a23578e63d"

DEPENDS += " gmp"

export HOST_SYS

inherit pypi autotools-brokensep distutils3

SRC_URI += "file://cross-compiling.patch \
            file://CVE-2013-7459.patch \
            file://0001-Replace-time.clock-with-time.process_time.patch \
           "

SRC_URI[md5sum] = "55a61a054aa66812daf5161a0d5d7eda"
SRC_URI[sha256sum] = "f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c"

do_compile[noexec] = "1"

# We explicitly call distutils_do_install, since we want it to run, but
# *don't* want the autotools install to run, since this package doesn't
# provide a "make install" target.
do_install() {
       distutils3_do_install
}

BBCLASSEXTEND = "native nativesdk"

repository: ni/meta-openembedded

repo_name: ni/meta-openembedded

branch_name: refs/heads/nilrt/master/hardknott

gha_language: BitBake


text:
package miniappopen

import (
	"net/url"

	"github.com/bububa/opentaobao/model"
)

// TaobaoMiniapppTemplateInstantiateAPIRequest （已废弃）构建实例化应用 API请求
// taobao.miniappp.template.instantiate
//
// 实例化saas化的小程序
type TaobaoMiniapppTemplateInstantiateAPIRequest struct {
	model.Params
	// 投放端,目前可投放： taobao(淘宝),tmall(天猫)
	_clients []string
	// 描述长度(9~200)
	_description string
	// schemadata, json字符串
	_extJson string
	// 小程序icon
	_icon string
	// 小程序名称
	_name string
	// 模板id
	_templateId string
	// 模板版本
	_templateVersion string
}

// NewTaobaoMiniapppTemplateInstantiateRequest 初始化TaobaoMiniapppTemplateInstantiateAPIRequest对象
func NewTaobaoMiniapppTemplateInstantiateRequest() *TaobaoMiniapppTemplateInstantiateAPIRequest {
	return &TaobaoMiniapppTemplateInstantiateAPIRequest{
		Params: model.NewParams(),
	}
}

// GetApiMethodName IRequest interface 方法, 获取Api method
func (r TaobaoMiniapppTemplateInstantiateAPIRequest) GetApiMethodName() string {
	return "taobao.miniappp.template.instantiate"
}

// GetApiParams IRequest interface 方法, 获取API参数
func (r TaobaoMiniapppTemplateInstantiateAPIRequest) GetApiParams(params url.Values) {
	for k, v := range r.Params {
		params.Set(k, v.String())
	}
}

// GetRawParams IRequest interface 方法, 获取API原始参数
func (r TaobaoMiniapppTemplateInstantiateAPIRequest) GetRawParams() model.Params {
	return r.Params
}

// SetClients is Clients Setter
// 投放端,目前可投放： taobao(淘宝),tmall(天猫)
func (r *TaobaoMiniapppTemplateInstantiateAPIRequest) SetClients(_clients []string) error {
	r._clients = _clients
	r.Set("clients", _clients)
	return nil
}

// GetClients Clients Getter
func (r TaobaoMiniapppTemplateInstantiateAPIRequest) GetClients() []string {
	return r._clients
}

// SetDescription is Description Setter
// 描述长度(9~200)
func (r *TaobaoMiniapppTemplateInstantiateAPIRequest) SetDescription(_description string) error {
	r._description = _description
	r.Set("description", _description)
	return nil
}

// GetDescription Description Getter
func (r TaobaoMiniapppTemplateInstantiateAPIRequest) GetDescription() string {
	return r._description
}

// SetExtJson is ExtJson Setter
// schemadata, json字符串
func (r *TaobaoMiniapppTemplateInstantiateAPIRequest) SetExtJson(_extJson string) error {
	r._extJson = _extJson
	r.Set("ext_json", _extJson)
	return nil
}

// GetExtJson ExtJson Getter
func (r TaobaoMiniapppTemplateInstantiateAPIRequest) GetExtJson() string {
	return r._extJson
}

// SetIcon is Icon Setter
// 小程序icon
func (r *TaobaoMiniapppTemplateInstantiateAPIRequest) SetIcon(_icon string) error {
	r._icon = _icon
	r.Set("icon", _icon)
	return nil
}

// GetIcon Icon Getter
func (r TaobaoMiniapppTemplateInstantiateAPIRequest) GetIcon() string {
	return r._icon
}

// SetName is Name Setter
// 小程序名称
func (r *TaobaoMiniapppTemplateInstantiateAPIRequest) SetName(_name string) error {
	r._name = _name
	r.Set("name", _name)
	return nil
}

// GetName Name Getter
func (r TaobaoMiniapppTemplateInstantiateAPIRequest) GetName() string {
	return r._name
}

// SetTemplateId is TemplateId Setter
// 模板id
func (r *TaobaoMiniapppTemplateInstantiateAPIRequest) SetTemplateId(_templateId string) error {
	r._templateId = _templateId
	r.Set("template_id", _templateId)
	return nil
}

// GetTemplateId TemplateId Getter
func (r TaobaoMiniapppTemplateInstantiateAPIRequest) GetTemplateId() string {
	return r._templateId
}

// SetTemplateVersion is TemplateVersion Setter
// 模板版本
func (r *TaobaoMiniapppTemplateInstantiateAPIRequest) SetTemplateVersion(_templateVersion string) error {
	r._templateVersion = _templateVersion
	r.Set("template_version", _templateVersion)
	return nil
}

// GetTemplateVersion TemplateVersion Getter
func (r TaobaoMiniapppTemplateInstantiateAPIRequest) GetTemplateVersion() string {
	return r._templateVersion
}

repository: bububa/opentaobao

repo_name: bububa/opentaobao


text:
DESCRIPTION = "Task to install wlan and bluetooth headers and libraries into the SDK"
LICENSE = "MIT"
PR = "r2"

inherit packagegroup

PACKAGE_ARCH = "${MACHINE_ARCH}"

# Bluetooth development packages
BLUETOOTH_STACK = "\
    bluez4-dev \
    openobex-dev \
"

CONNECTIVITY_RDEPENDS = ""

CONNECTIVITY_RDEPENDS_am37x-evm = "\
    ${BLUETOOTH_STACK} \
    wpa-supplicant-dev \
"

CONNECTIVITY_RDEPENDS_am180x-evm = "\
    ${BLUETOOTH_STACK} \
    wpa-supplicant-dev \
"

CONNECTIVITY_RDEPENDS_ti33x  = "\
    ${BLUETOOTH_STACK} \
    wpa-supplicant-dev \
"

RDEPENDS_${PN} = "\
    ${CONNECTIVITY_RDEPENDS} \
"


text:
SUMMARY = "iODBC driver manager maintained by OpenLink Software."

DESCRIPTION = "This kit will provide you with everything you need to \
develop ODBC-compliant applications under Unix without having to pay \
royalties to other parties. \
"

HOMEPAGE = "http://www.iodbc.org/"

LICENSE = "LGPL-2.0-only | BSD-2-Clause"
LIC_FILES_CHKSUM = "file://LICENSE.LGPL;md5=8c0138a8701f0e1282f5c8b2c7d39114 \
                    file://LICENSE.BSD;md5=ff3a66a194e500df485da930da7f2c62 \
                    "

SRC_URI = "https://github.com/openlink/iODBC/releases/download/v${PV}/${BP}.tar.gz"
SRC_URI[sha256sum] = "c74541e3327fc9a1c7ccf103645471c67bc014542d70f572476eb07c0b2dd43c"

inherit autotools

EXTRA_OECONF += " --prefix=/usr/local \
		--includedir=/usr/include/iodbc \
		--with-iodbc-inidir=/etc \
		--enable-odbc3 \
		--enable-pthreads \
		--disable-libodbc \
		--disable-static \
		"

inherit multilib_script
MULTILIB_SCRIPTS = "${PN}:${bindir}/iodbc-config"

repository: openembedded/meta-openembedded

repo_name: openembedded/meta-openembedded


text:
package checks

import (
	"fmt"
	"sort"
	"time"

	"github.com/cli/cli/v2/api"
)

type check struct {
	Name        string    `json:"name"`
	State       string    `json:"state"`
	StartedAt   time.Time `json:"startedAt"`
	CompletedAt time.Time `json:"completedAt"`
	Link        string    `json:"link"`
	Bucket      string    `json:"bucket"`
	Event       string    `json:"event"`
	Workflow    string    `json:"workflow"`
	Description string    `json:"description"`
}

type checkCounts struct {
	Failed   int
	Passed   int
	Pending  int
	Skipping int
}

func aggregateChecks(checkContexts []api.CheckContext, requiredChecks bool) (checks []check, counts checkCounts) {
	for _, c := range eliminateDuplicates(checkContexts) {
		if requiredChecks && !c.IsRequired {
			continue
		}

		state := string(c.State)
		if state == "" {
			if c.Status == "COMPLETED" {
				state = string(c.Conclusion)
			} else {
				state = c.Status
			}
		}

		link := c.DetailsURL
		if link == "" {
			link = c.TargetURL
		}

		name := c.Name
		if name == "" {
			name = c.Context
		}

		item := check{
			Name:        name,
			State:       state,
			StartedAt:   c.StartedAt,
			CompletedAt: c.CompletedAt,
			Link:        link,
			Event:       c.CheckSuite.WorkflowRun.Event,
			Workflow:    c.CheckSuite.WorkflowRun.Workflow.Name,
			Description: c.Description,
		}

		switch state {
		case "SUCCESS":
			item.Bucket = "pass"
			counts.Passed++
		case "SKIPPED", "NEUTRAL":
			item.Bucket = "skipping"
			counts.Skipping++
		case "ERROR", "FAILURE", "CANCELLED", "TIMED_OUT", "ACTION_REQUIRED":
			item.Bucket = "fail"
			counts.Failed++
		default: // "EXPECTED", "REQUESTED", "WAITING", "QUEUED", "PENDING", "IN_PROGRESS", "STALE"
			item.Bucket = "pending"
			counts.Pending++
		}

		checks = append(checks, item)
	}
	return
}

// eliminateDuplicates filters a set of checks to only the most recent ones if the set includes repeated runs
func eliminateDuplicates(checkContexts []api.CheckContext) []api.CheckContext {
	sort.Slice(checkContexts, func(i, j int) bool { return checkContexts[i].StartedAt.After(checkContexts[j].StartedAt) })

	mapChecks := make(map[string]struct{})
	mapContexts := make(map[string]struct{})
	unique := make([]api.CheckContext, 0, len(checkContexts))

	for _, ctx := range checkContexts {
		if ctx.Context != "" {
			if _, exists := mapContexts[ctx.Context]; exists {
				continue
			}
			mapContexts[ctx.Context] = struct{}{}
		} else {
			key := fmt.Sprintf("%s/%s/%s", ctx.Name, ctx.CheckSuite.WorkflowRun.Workflow.Name, ctx.CheckSuite.WorkflowRun.Event)
			if _, exists := mapChecks[key]; exists {
				continue
			}
			mapChecks[key] = struct{}{}
		}
		unique = append(unique, ctx)
	}

	return unique
}

repository: cli/cli

repo_name: cli/cli

branch_name: refs/heads/trunk


text:
package rules

import (
	"github.com/opentelekomcloud/gophertelekomcloud"
	"github.com/opentelekomcloud/gophertelekomcloud/internal/extract"
)

// GetCc is used to query a CC attack protection rule by ID.
func GetCc(client *golangsdk.ServiceClient, policyId, ruleId string) (*CcRule, error) {
	// GET /v1/{project_id}/waf/policy/{policy_id}/cc/{rule_id}
	raw, err := client.Get(client.ServiceURL("waf", "policy", policyId, "cc", ruleId), nil, nil)
	if err != nil {
		return nil, err
	}

	var res CcRule
	return &res, extract.Into(raw.Body, &res)
}

repository: opentelekomcloud/gophertelekomcloud

repo_name: opentelekomcloud/gophertelekomcloud

branch_name: refs/heads/devel


text:
/*
Copyright 2018 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.
*/

package driver

import (
	volumesnapshotv1 "github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1"
	v1 "k8s.io/api/core/v1"
	storagev1 "k8s.io/api/storage/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

const (
	VolumeSnapshotClassKind = "VolumeSnapshotClass"
	SnapshotAPIVersion      = "snapshot.storage.k8s.io/v1"
)

type PVTestDriver interface {
	DynamicPVTestDriver
	PreProvisionedVolumeTestDriver
	VolumeSnapshotTestDriver
}

// DynamicPVTestDriver represents an interface for a CSI driver that supports DynamicPV
type DynamicPVTestDriver interface {
	// GetDynamicProvisionStorageClass returns a StorageClass dynamic provision Persistent Volume
	GetDynamicProvisionStorageClass(parameters map[string]string, mountOptions []string, reclaimPolicy *v1.PersistentVolumeReclaimPolicy, volumeExpansion *bool, bindingMode *storagev1.VolumeBindingMode, allowedTopologyValues []string, namespace string) *storagev1.StorageClass
}

// PreProvisionedVolumeTestDriver represents an interface for a CSI driver that supports pre-provisioned volume
type PreProvisionedVolumeTestDriver interface {
	// GetPersistentVolume returns a PersistentVolume with pre-provisioned volumeHandle
	GetPersistentVolume(volumeID string, fsType string, size string, reclaimPolicy *v1.PersistentVolumeReclaimPolicy, namespace string) *v1.PersistentVolume
}

type VolumeSnapshotTestDriver interface {
	GetVolumeSnapshotClass(namespace string) *volumesnapshotv1.VolumeSnapshotClass
}

func getStorageClass(
	generateName string,
	provisioner string,
	parameters map[string]string,
	mountOptions []string,
	reclaimPolicy *v1.PersistentVolumeReclaimPolicy,
	volumeExpansion *bool,
	bindingMode *storagev1.VolumeBindingMode,
	allowedTopologies []v1.TopologySelectorTerm,
) *storagev1.StorageClass {
	if reclaimPolicy == nil {
		defaultReclaimPolicy := v1.PersistentVolumeReclaimDelete
		reclaimPolicy = &defaultReclaimPolicy
	}
	if bindingMode == nil {
		defaultBindingMode := storagev1.VolumeBindingImmediate
		bindingMode = &defaultBindingMode
	}
	return &storagev1.StorageClass{
		ObjectMeta: metav1.ObjectMeta{
			GenerateName: generateName,
		},
		Provisioner:          provisioner,
		Parameters:           parameters,
		MountOptions:         mountOptions,
		ReclaimPolicy:        reclaimPolicy,
		VolumeBindingMode:    bindingMode,
		AllowedTopologies:    allowedTopologies,
		AllowVolumeExpansion: volumeExpansion,
	}
}

func getVolumeSnapshotClass(generateName string, provisioner string) *volumesnapshotv1.VolumeSnapshotClass {
	return &volumesnapshotv1.VolumeSnapshotClass{
		TypeMeta: metav1.TypeMeta{
			Kind:       VolumeSnapshotClassKind,
			APIVersion: SnapshotAPIVersion,
		},
		ObjectMeta: metav1.ObjectMeta{
			GenerateName: generateName,
		},
		Driver:         provisioner,
		DeletionPolicy: volumesnapshotv1.VolumeSnapshotContentDelete,
	}
}

repository: kubernetes-sigs/aws-ebs-csi-driver

repo_name: kubernetes-sigs/aws-ebs-csi-driver