text:
" y="5.8"/>
</polygon>
<via x="7.6" y="7.4" extent="1-16" drill="0.32"/>
<via x="7.6" y="6.3" extent="1-16" drill="0.32"/>
<polygon width="0.1" layer="1">
<vertex x="13.9" y="29.6"/>
<vertex x="14.6" y="29.6"/>
<vertex x="14.6" y="27.2"/>
<vertex x="13.9" y="27.2"/>
</polygon>
<via x="14.3" y="27.6" extent="1-16" drill="0.32"/>
<contactref element="C43" pad="P$2"/>
<polygon width="0.1" layer="1">
<vertex x="50.8" y="27.7"/>
<vertex x="51.7" y="27.7"/>
<vertex x="51.7" y="29.1"/>
<vertex x="50.8" y="29.1"/>
</polygon>
<via x="51.2" y="28.7" extent="1-16" drill="0.32"/>
<polygon width="0.1" layer="1">
<vertex x="55.7" y="30.8"/>
<vertex x="56.3" y="30.8"/>
<vertex x="56.3" y="31.5"/>
<vertex x="56.7" y="31.8"/>
<vertex x="56.7" y="32.7"/>
<vertex x="56.1" y="32.7"/>
<vertex x="56.1" y="31.8"/>
<vertex x="55.7" y="31.8"/>
</polygon>
<via x="56.4" y="32.2" extent="1-16" drill="0.32"/>
<polygon width="0.1" layer="1">
<vertex x="58.6" y="26.6"/>
<vertex x="59.4" y="26.6"/>
<vertex x="59.5" y="26.6"/>
<vertex x="59.5" y="28.6"/>
<vertex x="58.6" y="28.6"/>
</polygon>
<via x="59" y="28.1" extent="1-16" drill="0.32"/>
<polygon width="0.1" layer="1">
<vertex x="55.7" y="27.2"/>
<vertex x="55.7" y="25.5"/>
<vertex x="56.4" y="25.5"/>
<vertex x="56.4" y="27.2"/>
</polygon>
<polygon width="0.1" layer="1">
<vertex x="48.1" y="31.9"/>
<vertex x="48.1" y="34.1"/>
<vertex x="49.4" y="34.1"/>
<vertex x="49.4" y="31.9"/>
</polygon>
<via x="48.7" y="33.8" extent="1-16" drill="0.32"/>
<polygon width="0.1" layer="1">
<vertex x="48.1" y="29.7"/>
<vertex x="49.4" y="29.7"/>
<vertex x="49.4" y="27.8"/>
<vertex x="48.1" y="27.8"/>
</polygon>
<via x="48.75" y="28.1" extent="1-16" drill="0.32"/>
<polygon width="0.1" layer="16">
<vertex x="18.7" y="18"/>
<vertex x="19.7" y="18"/>
<vertex x="19.7" y="16.4"/>
<vertex x="18.7" y="16.4"/>
</polygon>
<via x="19.2" y="16.7" extent="1-16" drill="0.32"/>
<polygon width="0.1" layer="16">
<vertex x="10.4" y="15.2"/>
<vertex x="11.2" y="15.2"/>
<vertex x="11.2" y="13.9"/>
<vertex x="10.4" y="13.9"/>
</polygon>
<via x="10.8" y="14.2" extent="1-16" drill="0.32"/>
<polygon width="0.1" layer="16">
<vertex x="13.1" y="7.2"/>
<vertex x="13.1" y="5.6"/>
<vertex x="13.9" y="5.6"/>
<vertex x="13.9" y="7.2"/>
</polygon>
<via x="13.5" y="6.9" extent="1-16" drill="0.32"/>
<via x="15" y="6.9" extent="1-16" drill="0.32"/>
<polygon width="0.1" layer="16">
<vertex x="14.6" y="7.2"/>
<vertex x="14.6" y="5.6"/>
<vertex x="15.4" y="5.6"/>
<vertex x="15.4" y="7.2"/>
</polygon>
<polygon width="0.1" layer="16">
<vertex x="27.1" y="9.6"/>
<vertex x="27.1" y="8.1"/>
<vertex x="27.9" y="8.1"/>
<vertex x="27.9" y="9.6"/>
</polygon>
<via x="27.5" y="9.3" extent="1-16" drill="0.32"/>
<polygon width="0.1" layer="16">
<vertex x="33.1" y="6"/>
<vertex x="33.9" y="6"/>
<vertex x="33.9" y="4.5"/>
<vertex x="33.1" y="4.5"/>
</polygon>
<via x="33.5" y="4.8" extent="1-16" drill="0.32"/>
<polygon width="0.1" layer="16">
<vertex x="34.3" y="2.4"/>
<vertex x="34.3" y="1.6"/>
<vertex x="35.8" y="1.6"/>
<vertex x="35.8" y="2.4"/>
</polygon>
<via x="35.5" y="2" extent="1-16" drill="0.32"/>
<polygon width="0.1" layer="16" thermals="no">
<vertex x="25" y="3"/>
<vertex x="26.4" y="3"/>
<vertex x="26.4" y="2.4"/>
<vertex x="25" y="2.4"/>
</polygon>
<via x="26.1" y="2.7" extent="1-16" drill="0.32"/>
<via x="42.2" y="27" extent="1-16" drill="0.32"/>
<wire x1="7.2" y1="38.4" x2="8" y2="38.4" width="0.3" layer="16"/>
<wire x1="8" y1="38.4" x2="9.295" y2="38.4" width="0.3" layer="16"/>
<wire x1="9.295" y1="38.4" x2="9.3" y2="38.405" width="0.3" layer="16"/>
<wire x1="13.8" y1="38.4" x2="13" y2="38.4" width="0.3" layer="16"/>
<wire x1="13" y1="38.4" x2="11.705" y2="38.4" width="0.3" layer="16"/>
<wire x1="11.705" y1="38.4" x2="11.7" y2="38.405" width="0.3" layer="16"/>
<wire x1="7.2" y1="38.4" x2="7.2" y2="35.83" width="0.3" layer="16"/>
<wire x1="7.2" y1="35.83" x2="7.3" y2="35.73" width="0.3" layer="16"/>
<via x="8" y="38.4" extent="1-16" drill="0.32"/>
<via x="13" y="38.4" extent="1-16" drill="0.32"/>
<via x="12.4" y="35.5" extent="1-16" drill="0.32"/>
<wire x1="11.8" y1="35.73" x2="12.17" y2="35.73" width="0.3" layer="16"/>
<wire x1="12.17" y1="35.73" x2="12.4" y2="35.5" width="0.3" layer="16"/>
<wire x1="13.7" y1="35.73" x2="12.63" y2="35.73" width="0.3" layer="16"/>
<wire x1="12.63" y1="35.73" x2="12.4" y2="35.5" width="0.3" layer="16"/>
<via x="7.1" y="34.6" extent="1-16" drill="0.32"/>
<wire x1="7.3" y1="35.73" x2="7.3" y2="34.8" width="0.3" layer="16"/>
<wire x1="7.3" y1="34.8" x2="7.1" y2="34.6" width="0.3" layer="16"/>
<wire x1="7.1" y1="34.6" x2="7.1" y2="33.8" width="0.3" layer="16"/>
<via x="35.2" y="21.7" extent="1-16" drill="0.32"/>
<via x="46.4" y="21.7" extent="1-16" drill="0.32"/>
<via x="43.6" y="21.7" extent="1-16" drill="0.32"/>
<via x="41.9" y="22.2" extent="1-16" drill="0.32"/>
<via x="39.75" y="21.75" extent="1-16" drill="0.32"/>
<wire x1="39.75" y1="22.5" x2="39.75" y2="21.75" width="0.3" layer="16"/>
<via x="39.1" y="27" extent="1-16" drill="0.32"/>
<wire x1="39.75" y1="27" x2="39.1" y2="27" width="0.3" layer="16"/>
<wire x1="35.202" y1="20.7" x2="35.202" y2="21.698" width="0.2" layer="1"/>
<wire x1="35.202" y1="21.698" x2="35.2" y2="21.7" width="0.2" layer="1"/>
<via x="36.4" y="21.7" extent="1-16" drill="0.32"/>
<wire x1="36.402" y1="20.7" x2="36.402" y2="21.698" width="0.2" layer="1"/>
<wire x1="36.402" y1="21.698" x2="36.4" y2="21.7" width="0.2" layer="1"/>
<via x="37.6" y="21.7" extent="1-16" drill="0.32"/>
<wire x1="37.602" y1="20.7" x2="37.602" y2="21.698" width="0.2" layer="1"/>
<wire x1="37.602" y1="21.698" x2="37.6" y2="21.7" width="0.2" layer="1"/>
<via x="38.8" y="21.7" extent="1-16" drill="0.32"/>
<wire x1="38.802" y1="20.7" x2="38.802" y2="21.698" width="0.2" layer="1"/>
<wire x1="38.802" y1="21.698" x2="38.8" y2="21.7" width="0.2" layer="1"/>
<wire x1="40.002" y1="20.7" x2="40.002" y2="21.498" width="0.2" layer="1"/>
<wire x1="40.002" y1="21.498" x2="39.75" y2="21.75" width="0.2" layer="1"/>
<wire x1="44.002" y1="20.7" x2="44.002" y2="21.298" width="0.2" layer="1"/>
<wire x1="44.002" y1="21.298" x2="43.6" y2="21.7" width="0.2" layer="1"/>
<wire x1="43.202" y1="20.7" x2="43.202" y2="21.302" width="0.2" layer="1"/>
<wire x1="43.202" y1="21.302" x2="43.6" y2="21.7" width="0.2" layer="1"/>
<wire x1="46.402" y1="20.7" x2="46.402" y2="21.698" width="0.2" layer="1"/>
<wire x1="46.402" y1="21.698" x2="46.4" y2="21.7" width="0.2" layer="1"/>
<wire x1="46.002" y1="20.7" x2="46.002" y2="21.302" width="0.2" layer="1"/>
<wire x1="46.002" y1="21.302" x2="46.4" y2="21.7" width="0.2" layer="1"/>
<wire x1="46.802" y1="20.7" x2="46.802" y2="21.298" width="0.2" layer="1"/>
<wire x1="46.802" y1="21.298" x2="46.4" y2="21.7" width="0.2" layer="1"/>
<via x="49.2" y="19.8" extent="1-16" drill="0.32"/>
<wire x1="49.2" y1="19.05" x2="49.2" y2="19.8" width="0.2" layer="16"/>
<via x="41.2" y="19.8" extent="1-16" drill="0.32"/>
<wire x1="41.202" y1="20.7" x2="41.202" y2="19.802" width="0.2" layer="1"/>
<wire x1="41.202" y1="19.802" x2="41.2" y2="19.8" width="0.2" layer="1"/>
<wire x1="41.602" y1="23.3" x2="41.602" y2="22.698" width="0.2" layer="1"/>
<wire x1="41.602" y1="22.698" x2="41.9" y2="22.2" width="0.2" layer="1"/>
<via x="30.8" y="24.4" extent="1-16" drill="0.32"/>
<wire x1="30.802" y1="23.3" x2="30.802" y2="24.398" width="0.2" layer="1"/>
<wire x1="30.802" y1="24.398" x2="30.8" y2="24.4" width="0.2" layer="1"/>
<via x="28.8" y="21.8" extent="1-16" drill="0.32"/>
<wire x1="28.802" y1="20.7" x2="28.802" y2="21.798" width="0.2" layer="1"/>
<wire x1="28.802" y1="21.798" x2="28.8" y2="21.8" width="0.2" layer="1"/>
<via x="28.5" y="19.3" extent="1-16" drill="0.32"/>
<wire x1="27.602" y1="20.7" x2="27.602" y2="19.598" width="0.2" layer="1"/>
<wire x1="27.602" y1="19.598" x2="27.9" y2="19.3" width="0.2" layer="1"/>
<wire x1="27.9" y1="19.3" x2="28.5" y2="19.3" width="0.2" layer="1"/>
<via x="31.3" y="3.4" extent="1-16" drill="0.32"/>
<via x="28.5" y="3.4" extent="1-16" drill="0.32"/>
<via x="29.9" y="3.4" extent="1-16" drill="0.32"/>
<wire x1="28.502" y1="4.3" x2="28.502" y2="3.402" width="0.2" layer="1"/>
<wire x1="28.502" y1="3.402" x2="28.5" y2="3.4" width="0.2" layer="1"/>
<wire x1="30.102" y1="4.3" x2="30.102" y2="3.602" width="0.2" layer="1"/>
<wire x1="30.102" y1="3.602" x2="29.9" y2="3.4" width="0.2" layer="1"/>
<wire x1="29.702" y1="4.3" x2="29.702" y2="3.598" width="0.2" layer="1"/>
<wire x1="29.702" y1="3.598" x2="29.9" y2="3.4" width="0.2" layer="1"/>
<wire x1="31.302" y1="4.3" x2="31.302" y2="3.402" width="0.2" layer="1"/>
<wire x1="31.302" y1="3.402" x2="31.3" y2="3.4" width="0.2" layer="1"/>
<via x="30.5" y="2.6" extent="1-16" drill="0.32"/>
<via x="27.3" y="2.6" extent="1-16" drill="0.32"/>
<wire x1="30.502" y1="1.7" x2="30.502" y2="2.598" width="0.2" layer="1"/>
<wire x1="30.502" y1="2.598" x2="30.5" y2="2.6" width="0.2" layer="1"/>
<wire x1="27.302" y1="1.7" x2="27.302" y2="2.598" width="0.2" layer="1"/>
<wire x1="27.302" y1="2.598" x2="27.3" y2="2.6" width="0.2" layer="1"/>
<via x="28.1" y="2.6" extent="1-16" drill="0.32"/>
<via x="29.3" y="2.6" extent="1-16" drill="0.32"/>
<wire x1="29.302" y1="1.7" x2="29.302" y2="2.598" width="0.2" layer="1"/>
<wire x1="29.302" y1="2.598" x2="29.3" y2="2.6" width="0.2" layer="1"/>
<wire x1="28.102" y1="1.7" x2="28.102" y2="2.598" width="0.2" layer="1"/>
<wire x1="28.102" y1="2.598" x2="28.1" y2="2.6" width="0.2" layer="1"/>
<via x="11.7" y="2.8" extent="1-16" drill="0.32"/>
<wire x1="11.702" y1="1.7" x2="11.702" y2="2.798" width="0.2" layer="1"/>
<wire x1="11.702" y1="2.798" x2="11.7" y2="2.8" width="0.2" layer="1"/>
<via x="19.7" y="2.6" extent="1-16" drill="0.32"/>
<wire x1="19.702" y1="1.7" x2="19.702" y2="2.598" width="0.2" layer="1"/>
<wire x1="19.702" y1="2.598" x2="19.7" y2="2.6" width="0.2" layer="1"/>
<via x="14.5" y="2.6" extent="1-16" drill="0.32"/>
<wire x1="14.502" y1="1.7" x2="14.502" y2="2.598" width="0.2" layer="1"/>
<wire x1="14.502" y1="2.598" x2="14.5" y2="2.6" width="0.2" layer="1"/>
<via x="13.1" y="2.6" extent="1-16" drill="0.32"/>
<wire x1="13.302" y1="1.7" x2="13.302" y2="2.398" width="0.2" layer="1"/>
<wire x1="13.302" y1="2.398" x2="13.1" y2="2.6" width="0.2" layer="1"/>
<wire x1="12.902" y1="1.7" x2="12.902" y2="2.402" width="0.2" layer="1"/>
<wire x1="12.902" y1="2.402" x2="13.1" y2="2.6" width="0.2" layer="1"/>
<via x="16.1" y="2.6" extent="1-16" drill="0.32"/>
<wire x1="16.102" y1="1.7" x2="16.102" y2="2.598" width="0.2" layer="1"/>
<wire x1="16.102" y1="2.598" x2="16.1" y2="2.6" width="0.2" layer="1"/>
<via x="17.3" y="2.6" extent="1-16" drill="0.32"/>
<wire x1="17.302" y1="1.7" x2="17.302" y2="2.598" width="0.2" layer="1"/>
<wire x1="17.302" y1="2.598" x2="17.3" y2="2.6" width="0.2" layer="1"/>
<via x="18.7" y="2.6" extent="1-16" drill="0.32"/>
<wire x1="18.502" y1="1.7" x2="18.502" y2="2.402" width="0.2" layer="1"/>
<wire x1="18.502" y1="2.402" x2="18.7" y2="2.6" width="0.2" layer="1"/>
<via x="12.5" y="3.4" extent="1-16" drill="0.32"/>
<wire x1="12.502" y1="4.3" x2="12.502" y2="3.402" width="0.2" layer="1"/>
<wire x1="12.502" y1="3.402" x2="12.5" y2="3.4" width="0.2" layer="1"/>
<via x="14.9" y="3.4" extent="1-16" drill="0.32"/>
<wire x1="14.902" y1="4.3" x2="14.902" y2="3.402" width="0.2" layer="1"/>
<wire x1="14.902" y1="3.402" x2="14.9" y2="3.4" width="0.2" layer="1"/>
<via x="19.7" y="3.4" extent="1-16" drill="0.32"/>
<wire x1="19.702" y1="4.3" x2="19.702" y2="3.402" width="0.2" layer="1"/>
<wire x1="19.702" y1="3.402" x2="19.7" y2="3.4" width="0.2" layer="1"/>
<via x="17.3" y="3.4" extent="1-16" drill="0.32"/>
<wire x1="17.302" y1="4.3" x2="17.302" y2="3.402" width="0.2" layer="1"/>
<wire x1="17.302" y1="3.402" x2="17.3" y2="3.4" width="0.2" layer="1"/>
<via x="18.5" y="3.4" extent="1-16" drill="0.32"/>
<wire x1="18.502" y1="4.3" x2="18.502" y2="3.402" width="0.2" layer="1"/>
<wire x1="18.502" y1="3.402" x2="18.5" y2="3.4" width="0.2" layer="1"/>
<via x="16.1" y="3.4" extent="1-16" drill="0.32"/>
<wire x1="16.102" y1="4.3" x2="16.102" y2="3.402" width="0.2" layer="1"/>
<wire x1="16.102" y1="3.402" x2="16.1" y2="3.4" width="0.2" layer="1"/>
<via x="25" y="5.3" extent="1-16" drill="0.32"/>
<via x="23.3" y="5.3" extent="1-16" drill="0.32"/>
<wire x1="24.902" y1="4.3" x2="24.902" y2="5.202" width="0.2" layer="1"/>
<wire x1="24.902" y1="5.202" x2="25" y2="5.3" width="0.2" layer="1"/>
<wire x1="23.702" y1="4.3" x2="23.702" y2="4.898" width="0.2" layer="1"/>
<wire x1="23.702" y1="4.898" x2="23.3" y2="5.3" width="0.2" layer="1"/>
<via x="22.1" y="2.7" extent="1-16" drill="0.32"/>
<wire x1="22.102" y1="1.7" x2="22.102" y2="2.698" width="0.2" layer="1"/>
<wire x1="22.102" y1="2.698" x2="22.1" y2="2.7" width="0.2" layer="1"/>
<via x="22.8" y="2.8" extent="1-16" drill="0.32"/>
<wire x1="23.302" y1="1.7" x2="23.302" y2="2.298" width="0.2" layer="1"/>
<wire x1="23.302" y1="2.298" x2="22.8" y2="2.8" width="0.2" layer="1"/>
<wire x1="26.102" y1="1.7" x2="26.102" y2="2.698" width="0.2" layer="1"/>
<wire x1="26.102" y1="2.698" x2="26.1" y2="2.7" width="0.2" layer="1"/>
<wire x1="24.3" y1="2" x2="23.5" y2="2" width="0.2" layer="16"/>
<wire x1="23.5" y1="2" x2="22.8" y2="2.8" width="0.2" layer="16"/>
<via x="43.5" y="17.3" extent="1-16" drill="0.32"/>
<wire x1="43.65" y1="16.2" x2="43.5" y2="16.2" width="0.3" layer="16"/>
<wire x1="43.5" y1="16.2" x2="43.5" y2="17.3" width="0.3" layer="16"/>
<via x="50.7" y="17.2" extent="1-16" drill="0.32"/>
<wire x1="50.7" y1="16.2" x2="50.7" y2="17.2" width="0.3" layer="16"/>
<via x="54.2" y="17.2" extent="1-16" drill="0.32"/>
<wire x1="54" y1="16.2" x2="54.2" y2="16.2" width="0.3" layer="16"/>
<wire x1="54.2" y1="16.2" x2="54.2" y2="17.2" width="0.3" layer="16"/>
<via x="57.9" y="11.8" extent="1-16" drill="0.32"/>
<via x="55.8" y="1.1" extent="1-16" drill="0.32"/>
<via x="40.2" y="0.8" extent="1-16" drill="0.32"/>
<contactref element="U11" pad="4"/>
<contactref element="C44" pad="P$2"/>
<contactref element="R46" pad="P$2"/>
<contactref element="R47" pad="P$2"/>
<via x="31.2" y="27.1" extent="1-16" drill="0.32"/>
<wire x1="59.4" y1="22" x2="58.64" y2="22.11" width="0" layer="19" extent="1-16"/>
<wire x1="59.075" y1="20.575" x2="59.4" y2="22" width="0" layer="19" extent="1-1"/>
<wire x1="56.96" y1="25.32" x2="58.64" y2="22.11" width="0" layer="19" extent="16-16"/>
<wire x1="14.5" y1="32.4" x2="14.45" y2="32.8" width="0" layer="19" extent="1-16"/>
<wire x1="14.5" y1="28.6" x2="14.25" y2="29" width="0" layer="19" extent="1-16"/>
<wire x1="14.5" y1="30.5" x2="14.45" y2="31" width="0" layer="19" extent="1-16"/>
<wire x1="40.3" y1="27.05" x2="39.75" y2="27" width="0" layer="19" extent="1-16"/>
<wire x1="58.6" y1="11.5" x2="57.9" y2="11.8" width="0" layer="19" extent="1-1"/>
<wire x1="32.25" y1="27.105" x2="31.2" y2="27.1" width="0" layer="19" extent="16-16"/>
<wire x1="39.75" y1="19" x2="41.202" y2="19.802" width="0" layer="19" extent="1-16"/>
<wire x1="28.95" y1="26" x2="28.9" y2="28" width="0" layer="19" extent="1-1"/>
<wire x1="34.45" y1="28.7" x2="32.4" y2="28.95" width="0" layer="19" extent="16-16"/>
<wire x1="24.5" y1="30.42" x2="26" y2="28.95" width="0" layer="19" extent="1-16"/>
<wire x1="4" y1="11.5" x2="4" y2="13.8" width="0" layer="19" extent="1-1"/>
<wire x1="17.75" y1="34" x2="17.5" y2="36.35" width="0" layer="19" extent="1-16"/>
<wire x1="4.25" y1="18.9" x2="6.6" y2="18.7" width="0" layer="19" extent="1-16"/>
<wire x1="4" y1="21.2" x2="4.25" y2="18.9" width="0" layer="19" extent="1-1"/>
<wire x1="2.75" y1="9.2" x2="4" y2="11.5" width="0" layer="19" extent="1-1"/>
<wire x1="45" y1="26.95" x2="42.2" y2="27" width="0" layer="19" extent="16-16"/>
<wire x1="45" y1="26.45" x2="45" y2="26.95" width="0" layer="19" extent="16-16"/>
<wire x1="18.1" y1="27.95" x2="14.5" y2="28.6" width="0" layer="19" extent="16-16"/>
<wire x1="2.75" y1="27.2" x2="1.7" y2="23.65" width="0" layer="19" extent="1-1"/>
<wire x1="4" y1="29.5" x2="2.75" y2="27.2" width="0" layer="19" extent="1-1"/>
<wire x1="6.05" y1="29.1" x2="4" y2="29.5" width="0" layer="19" extent="1-16"/>
<wire x1="58.6" y1="16.7" x2="59.075" y2="20.575" width="0" layer="19" extent="1-1"/>
<wire x1="54.925" y1="7.925" x2="54.8" y2="11.9" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="N$2">
<contactref element="C4" pad="P$1"/>
<contactref element="U1" pad="23"/>
<wire x1="50.175" y1="32.26" x2="49.12" y2="32.26" width="0.3" layer="16"/>
<wire x1="49.12" y1="32.26" x2="48.65" y2="32.73" width="0.3" layer="16"/>
</signal>
<signal name="N$3">
<contactref element="R1" pad="P$1"/>
<contactref element="U1" pad="10"/>
<wire x1="54.125" y1="31.26" x2="54.69" y2="31.26" width="0.2" layer="16"/>
<wire x1="54.69" y1="31.26" x2="55.15" y2="30.8" width="0.2" layer="16"/>
<wire x1="55.15" y1="30.8" x2="55.15" y2="29.75" width="0.2" layer="16"/>
<wire x1="55.15" y1="29.75" x2="55.65" y2="29.25" width="0.2" layer="16"/>
</signal>
<signal name="N$4">
<contactref element="R2" pad="P$1"/>
<contactref element="U1" pad="2"/>
<wire x1="52.65" y1="35.4" x2="52.4" y2="35.4" width="0.3" layer="16"/>
<wire x1="52.4" y1="35.4" x2="51.4" y2="34.4" width="0.3" layer="16"/>
<wire x1="51.4" y1="34.4" x2="51.4" y2="33.485" width="0.3" layer="16"/>
</signal>
<signal name="N$5">
<contactref element="R3" pad="P$1"/>
<contactref element="U1" pad="8"/>
<wire x1="54.125" y1="32.26" x2="55.46" y2="32.26" width="0.3" layer="16"/>
<wire x1="55.46" y1="32.26" x2="55.65" y2="32.45" width="0.3" layer="16"/>
</signal>
<signal name="N$1">
<contactref element="D1" pad="ANODE"/>
<contactref element="R4" pad="P$2"/>
<wire x1="54.1" y1="34.48" x2="53.8" y2="36.19" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="N$6">
<contactref element="D1" pad="CATHODE"/>
<contactref element="U1" pad="3"/>
<wire x1="51.9" y1="33.485" x2="53.8" y2="37.69" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="I2C_0_SDA">
<contactref element="U1" pad="5"/>
<contactref element="J6" pad="95"/>
<contactref element="U11" pad="5"/>
<wire x1="46.002" y1="23.3" x2="52.9" y2="33.485" width="0" layer="19" extent="1-16"/>
<wire x1="37.55" y1="27.105" x2="46.002" y2="23.3" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="I2C_0_SCL">
<contactref element="U1" pad="6"/>
<contactref element="J6" pad="57"/>
<contactref element="U11" pad="6"/>
<wire x1="37.55" y1="25.835" x2="53.4" y2="33.485" width="0" layer="19" extent="16-16"/>
<wire x1="38.402" y1="23.3" x2="37.55" y2="25.835" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="N$9">
<contactref element="U1" pad="9"/>
<contactref element="R5" pad="P$2"/>
<wire x1="54.125" y1="31.76" x2="54.75" y2="31.76" width="0.3" layer="16"/>
<wire x1="54.75" y1="31.76" x2="55.65" y2="30.86" width="0.3" layer="16"/>
</signal>
<signal name="N$8">
<contactref element="R7" pad="P$1"/>
<contactref element="R6" pad="P$2"/>
<contactref element="U1" pad="11"/>
<wire x1="58.64" y1="25.3" x2="54.125" y2="30.76" width="0" layer="19" extent="16-16"/>
<wire x1="58.64" y1="23.61" x2="58.64" y2="25.3" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="N$11">
<contactref element="U1" pad="21"/>
<contactref element="C6" pad="P$2"/>
<wire x1="47.15" y1="29.54" x2="47.91" y2="30.3" width="0.3" layer="16"/>
<wire x1="47.91" y1="30.3" x2="49.1" y2="30.3" width="0.3" layer="16"/>
<wire x1="49.1" y1="30.3" x2="49.4" y2="30.6" width="0.3" layer="16"/>
<wire x1="49.4" y1="30.6" x2="49.4" y2="31" width="0.3" layer="16"/>
<wire x1="49.4" y1="31" x2="49.66" y2="31.26" width="0.3" layer="16"/>
<wire x1="49.66" y1="31.26" x2="50.175" y2="31.26" width="0.3" layer="16"/>
</signal>
<signal name="N$12">
<contactref element="C6" pad="P$1"/>
<contactref element="U1" pad="19"/>
<contactref element="U1" pad="20"/>
<contactref element="L1" pad="1"/>
<wire x1="50.175" y1="30.76" x2="50.175" y2="30.26" width="0.3" layer="16"/>
<wire x1="50.175" y1="30.26" x2="49.455" y2="29.54" width="0.5" layer="16"/>
<wire x1="49.455" y1="29.54" x2="48.65" y2="29.54" width="0.5" layer="16"/>
<wire x1="48.65" y1="29.54" x2="49.49" y2="28.7" width="0.5" layer="16"/>
<wire x1="49.49" y1="28.7" x2="49.49" y2="26.52" width="0.5" layer="16"/>
</signal>
<signal name="N$7">
<contactref element="R8" pad="P$2"/>
<contactref element="U2" pad="B1"/>
<wire x1="5.8" y1="19.1" x2="3.3" y2="21.25" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="N$13">
<contactref element="U2" pad="C3"/>
<contactref element="U2" pad="C4"/>
<contactref element="L2" pad="1"/>
<wire x1="7.5" y1="16" x2="7.5" y2="17.3" width="0.3" layer="16"/>
<wire x1="7.5" y1="17.3" x2="6.6" y2="17.3" width="0.3" layer="16"/>
<wire x1="6.6" y1="17.3" x2="6.2" y2="17.7" width="0.3" layer="16"/>
<wire x1="6.2" y1="17.7" x2="6.2" y2="17.9" width="0.3" layer="16"/>
<wire x1="6.2" y1="17.9" x2="6.2" y2="18.3" width="0.3" layer="16"/>
</signal>
<signal name="N$14">
<contactref element="R9" pad="P$2"/>
<contactref element="R10" pad="P$1"/>
<contactref element="U2" pad="A1"/>
<wire x1="3.75" y1="19.6" x2="5.4" y2="19.1" width="0" layer="19" extent="16-16"/>
<wire x1="1.7" y1="21.25" x2="3.75" y2="19.6" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="N$15">
<contactref element="U2" pad="C1"/>
<contactref element="R11" pad="P$2"/>
<wire x1="4.9" y1="21.25" x2="6.2" y2="19.1" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="N$18">
<contactref element="U2" pad="A2"/>
<contactref element="R12" pad="P$2"/>
<contactref element="TP1" pad="TP"/>
<wire x1="3.75" y1="18" x2="5.4" y2="18.7" width="0" layer="19" extent="16-16"/>
<wire x1="1.5" y1="1" x2="3.75" y2="18" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="N$16">
<contactref element="U3" pad="8"/>
<contactref element="U3" pad="9"/>
<contactref element="L3" pad="1"/>
<wire x1="25.4" y1="35.55" x2="26.25" y2="34.7" width="0.4" layer="16"/>
<wire x1="26.25" y1="34.7" x2="28.2" y2="34.7" width="0.4" layer="16"/>
<wire x1="28.2" y1="34.7" x2="28.7" y2="34.7" width="0.3" layer="16"/>
</signal>
<signal name="N$17">
<contactref element="L3" pad="2"/>
<contactref element="U3" pad="6"/>
<contactref element="U3" pad="7"/>
<wire x1="25.4" y1="32.25" x2="25.75" y2="31.9" width="0.4" layer="16"/>
<wire x1="25.75" y1="31.9" x2="28.2" y2="31.9" width="0.4" layer="16"/>
<wire x1="28.2" y1="31.9" x2="28.7" y2="31.9" width="0.3" layer="16"/>
</signal>
<signal name="N$19">
<contactref element="C16" pad="P$1"/>
<contactref element="U3" pad="1"/>
<wire x1="31.2" y1="31.9" x2="32.4" y2="30.45" width="0.3" layer="16"/>
</signal>
<signal name="N$20">
<contactref element="R13" pad="P$2"/>
<contactref element="U3" pad="12"/>
<wire x1="30.2" y1="34.7" x2="33.55" y2="36.5" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="N$21">
<contactref element="U3" pad="14"/>
<contactref element="R14" pad="P$2"/>
<contactref element="TP2" pad="TP"/>
<wire x1="34.05" y1="31.1" x2="31.2" y2="34.7" width="0" layer="19" extent="16-16"/>
<wire x1="37" y1="29.4" x2="34.05" y2="31.1" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="N$23">
<contactref element="U4" pad="7"/>
<contactref element="L4" pad="1"/>
<wire x1="32.95" y1="12.75" x2="35.5" y2="12.75" width="0.3" layer="16"/>
<wire x1="35.5" y1="12.75" x2="35.7" y2="12.95" width="0.3" layer="16"/>
<wire x1="35.7" y1="12.95" x2="36.3" y2="12.95" width="0.3" layer="16"/>
</signal>
<signal name="N$25">
<contactref element="U4" pad="6"/>
<contactref element="R15" pad="P$2"/>
<contactref element="TP3" pad="TP"/>
<wire x1="39.4" y1="14.75" x2="42.5" y2="17.5" width="0" layer="19" extent="1-16"/>
<wire x1="32.95" y1="13.25" x2="39.4" y2="14.75" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="N$26">
<contactref element="R16" pad="P$2"/>
<contactref element="R17" pad="P$1"/>
<contactref element="U4" pad="4"/>
<wire x1="31.05" y1="13.75" x2="29.25" y2="13.75" width="0.2" layer="16"/>
<wire x1="29.25" y1="13.75" x2="29.25" y2="13.2" width="0.2" layer="16"/>
<wire x1="29.25" y1="13.2" x2="29.25" y2="14.8" width="0.2" layer="16"/>
</signal>
<signal name="N$27">
<contactref element="U4" pad="1"/>
<contactref element="R18" pad="P$2"/>
<wire x1="29.25" y1="11.6" x2="31.05" y2="12.25" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="VDD1">
<contactref element="R18" pad="P$1"/>
<contactref element="J6" pad="36"/>
<contactref element="R31" pad="P$1"/>
<contactref element="R32" pad="P$1"/>
<contactref element="R19" pad="P$1"/>
<contactref element="R22" pad="P$1"/>
<contactref element="C44" pad="P$1"/>
<contactref element="U11" pad="8"/>
<wire x1="54.85" y1="11.5" x2="54.85" y2="16.7" width="0" layer="19" extent="1-1"/>
<wire x1="37.55" y1="23.295" x2="54.85" y2="16.7" width="0" layer="19" extent="1-16"/>
<wire x1="34.05" y1="22.1" x2="37.55" y2="23.295" width="0" layer="19" extent="16-16"/>
<wire x1="34.002" y1="20.7" x2="34.05" y2="22.1" width="0" layer="19" extent="1-16"/>
<wire x1="35" y1="18.25" x2="34.002" y2="20.7" width="0" layer="19" extent="1-16"/>
<wire x1="35.95" y1="28.7" x2="37.55" y2="23.295" width="0" layer="19" extent="16-16"/>
<wire x1="27.75" y1="11.6" x2="35" y2="18.25" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="V1P8V">
<contactref element="R15" pad="P$1"/>
<contactref element="L4" pad="2"/>
<contactref element="C23" pad="P$1"/>
<contactref element="C24" pad="P$1"/>
<contactref element="C25" pad="P$1"/>
<contactref element="R16" pad="P$1"/>
<contactref element="U4" pad="5"/>
<contactref element="U8" pad="1"/>
<contactref element="U8" pad="5"/>
<contactref element="C29" pad="P$1"/>
<contactref element="U7" pad="6"/>
<contactref element="FB1" pad="P$1"/>
<contactref element="U10" pad="20"/>
<contactref element="C39" pad="P$1"/>
<wire x1="33.25" y1="19.5" x2="33.25" y2="17.8" width="0.3" layer="16"/>
<wire x1="33.25" y1="17.8" x2="33.25" y2="16.1" width="0.3" layer="16"/>
<wire x1="33.25" y1="16.1" x2="33.4" y2="16.25" width="0.3" layer="16"/>
<wire x1="33.4" y1="16.25" x2="36.3" y2="16.25" width="0.3" layer="16"/>
<wire x1="33.25" y1="16.1" x2="32.95" y2="15.8" width="0.3" layer="16"/>
<wire x1="32.95" y1="15.8" x2="32.95" y2="13.75" width="0.3" layer="16"/>
<wire x1="16.4" y1="29.5" x2="18.1" y2="29.5" width="0.2" layer="16"/>
<wire x1="18.1" y1="29.5" x2="18.1" y2="29.45" width="0.2" layer="16"/>
<wire x1="18.1" y1="29.45" x2="22.15" y2="29.45" width="0.3" layer="16"/>
<wire x1="22.15" y1="29.45" x2="23.1" y2="28.5" width="0.3" layer="16"/>
<via x="23.1" y="28.5" extent="1-16" drill="0.6"/>
<wire x1="23.1" y1="28.5" x2="23.1" y2="17.5" width="0.3" layer="15"/>
<wire x1="23.1" y1="17.5" x2="25.8" y2="14.8" width="0.3" layer="15"/>
<via x="25.8" y="14.8" extent="1-16" drill="0.6"/>
<wire x1="25.8" y1="14.8" x2="27.75" y2="14.8" width="0.3" layer="16"/>
<wire x1="32.95" y1="15.8" x2="32.95" y2="15.25" width="0.2" layer="16"/>
<wire x1="32.95" y1="15.25" x2="32.9" y2="15.2" width="0.2" layer="16"/>
<wire x1="32.9" y1="15.2" x2="30.3" y2="15.2" width="0.2" layer="16"/>
<wire x1="30.3" y1="15.2" x2="29.8" y2="15.7" width="0.2" layer="16"/>
<wire x1="29.8" y1="15.7" x2="28.65" y2="15.7" width="0.2" layer="16"/>
<wire x1="28.65" y1="15.7" x2="27.75" y2="14.8" width="0.2" layer="16"/>
<wire x1="36.3" y1="16.25" x2="38.9" y2="16.25" width="0.2" layer="16"/>
<wire x1="38.9" y1="16.25" x2="39.4" y2="16.25" width="0.2" layer="16"/>
<wire x1="39.4" y1="16.25" x2="40.75" y2="16.25" width="0.2" layer="16"/>
<wire x1="40.75" y1="16.25" x2="40.9" y2="16.1" width="0.2" layer="16"/>
<via x="40.9" y="16.1" extent="1-16" drill="0.6"/>
<wire x1="40.9" y1="16.1" x2="42.1" y2="14.9" width="0.2" layer="15"/>
<wire x1="42.1" y1="14.9" x2="54.3" y2="14.9" width="0.2" layer="15"/>
<wire x1="54.3" y1="14.9" x2="56.1" y2="16.7" width="0.2" layer="15"/>
<wire x1="56.1" y1="16.7" x2="56.1" y2="23.1" width="0.2" layer="15"/>
<via x="56.1" y="23.1" extent="1-16" drill="0.6"/>
<wire x1="56.1" y1="23.1" x2="56.1" y2="24.3" width="0.2" layer="1"/>
<wire x1="57.05" y1="26.9" x2="56.95" y2="28.3" width="0" layer="19" extent="1-1"/>
<wire x1="59" y1="25.35" x2="57.05" y2="26.9" width="0" layer="19" extent="1-1"/>
<wire x1="56.1" y1="24.3" x2="57.05" y2="26.9" width="0" layer="19" extent="1-1"/>
<wire x1="39.75" y1="20.7" x2="39.4" y2="16.25" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="VSYS">
<contactref element="C21" pad="P$1"/>
<contactref element="C22" pad="P$1"/>
<contactref element="U4" pad="8"/>
<contactref element="C13" pad="P$1"/>
<contactref element="C14" pad="P$1"/>
<contactref element="C15" pad="P$1"/>
<contactref element="U3" pad="10"/>
<contactref element="U3" pad="11"/>
<contactref element="U2" pad="A4"/>
<contactref element="U2" pad="A3"/>
<contactref element="C9" pad="P$1"/>
<contactref element="C10" pad="P$1"/>
<contactref element="R8" pad="P$1"/>
<contactref element="L2" pad="2"/>
<contactref element="R11" pad="P$1"/>
<contactref element="R5" pad="P$1"/>
<contactref element="C7" pad="P$1"/>
<contactref element="C8" pad="P$1"/>
<contactref element="L1" pad="2"/>
<contactref element="U1" pad="15"/>
<contactref element="U1" pad="16"/>
<contactref element="J6" pad="15"/>
<contactref element="J6" pad="17"/>
<contactref element="J6" pad="5"/>
<contactref element="J6" pad="2"/>
<contactref element="J6" pad="7"/>
<contactref element="J6" pad="12"/>
<contactref element="J7" pad="1"/>
<contactref element="J7" pad="3"/>
<contactref element="J7" pad="32"/>
<contactref element="J7" pad="34"/>
<contactref element="J7" pad="20"/>
<contactref element="J7" pad="22"/>
<contactref element="R3" pad="P$2"/>
<polygon width="0.1" layer="15">
<vertex x="0.2" y="39.8"/>
<vertex x="59.8" y="39.8"/>
<vertex x="59.8" y="0.2"/>
<vertex x="0.2" y="0.2"/>
</polygon>
<wire x1="52.2" y1="26.52" x2="52.79" y2="26.52" width="0.5" layer="16"/>
<wire x1="51.9" y1="29.535" x2="52.4" y2="29.535" width="0.3" layer="16"/>
<wire x1="52.4" y1="29.535" x2="52.2" y2="28.7" width="0.3" layer="16"/>
<wire x1="52.2" y1="28.7" x2="52.2" y2="26.52" width="0.5" layer="16"/>
<polygon width="0.1" layer="16">
<vertex x="53.9" y="28.2"/>
<vertex x="57.9" y="28.2"/>
<vertex x="57.9" y="26.5"/>
<vertex x="53.9" y="26.5"/>
</polygon>
<via x="54.2" y="26.9" extent="1-16" drill="0.32"/>
<via x="54.2" y="27.8" extent="1-16" drill="0.32"/>
<via x="57.65" y="27.7" extent="1-16" drill="0.32"/>
<polygon width="0.1" layer="16">
<vertex x="1.9" y="15.8"/>
<vertex x="4.6" y="15.8"/>
<vertex x="4.6" y="17.35"/>
<vertex x="2.7" y="17.35"/>
<vertex x="2.7" y="18.4"/>
<vertex x="1.9" y="18.4"/>
</polygon>
<via x="2.95" y="17.1" extent="1-16" drill="0.32"/>
<via x="4" y="17.1" extent="1-16" drill="0.32"/>
<wire x1="4" y1="16.25" x2="4.25" y2="16" width="0.4" layer="16"/>
<wire x1="4.25" y1="16" x2="5.5" y2="16" width="0.4" layer="16"/>
<wire x1="5.4" y1="17.9" x2="5.4" y2="16.1" width="0.3" layer="16"/>
<wire x1="5.4" y1="16.1" x2="5.5" y2="16" width="0.3" layer="16" curve="90"/>
<wire x1="5.4" y1="17.9" x2="5.4" y2="18.3" width="0.3" layer="16"/>
<polygon width="0.1" layer="16">
<vertex x="2.8" y="23.9"/>
<vertex x="2.8" y="22.5"/>
<vertex x="3.7" y="22.5"/>
<vertex x="3.7" y="23.9"/>
</polygon>
<via x="3.3" y="23.6" extent="1-16" drill="0.32"/>
<polygon width="0.1" layer="16">
<vertex x="4.5" y="23.9"/>
<vertex x="4.5" y="22.5"/>
<vertex x="5.3" y="22.5"/>
<vertex x="5.3" y="23.9"/>
</polygon>
<via x="4.9" y="23.6" extent="1-16" drill="0.32"/>
<contactref element="R37" pad="P$1"/>
<contactref element="R38" pad="P$1"/>
<contactref element="R39" pad="P$1"/>
<contactref element="R12" pad="P$1"/>
<wire x1="52.79" y1="26.52" x2="53.17" y2="26.9" width="0.4" layer="16"/>
<wire x1="53.17" y1="26.9" x2="54.2" y2="26.9" width="0.4" layer="16"/>
<wire x1="28.4" y1="36.25" x2="29.7" y2="36.25" width="0.4" layer="16"/>
<wire x1="29.7" y1="36.25" x2="30" y2="36.25" width="0.4" layer="16"/>
<wire x1="30" y1="36.25" x2="31.6" y2="36.25" width="0.4" layer="16"/>
<wire x1="29.7" y1="36.25" x2="29.7" y2="34.7" width="0.3" layer="16"/>
<wire x1="29.7" y1="34.7" x2="29.2" y2="34.7" width="0.3" layer="16"/>
<polygon width="0.1" layer="16">
<vertex x="28" y="37.3"/>
<vertex x="32" y="37.3"/>
<vertex x="32" y="36"/>
<vertex x="28" y="36"/>
</polygon>
<via x="29.2" y="37" extent="1-16" drill="0.32"/>
<via x="30.8" y="37" extent="1-16" drill="0.32"/>
<polygon width="0.1" layer="16">
<vertex x="34.5" y="11.5"/>
<vertex x="37.1" y="11.5"/>
<vertex x="37.1" y="10.3"/>
<vertex x="34.5" y="10.3"/>
</polygon>
<via x="35.8" y="10.5" extent="1-16" drill="0.32"/>
<wire x1="35" y1="11.25" x2="34" y2="12.25" width="0.3" layer="16"/>
<wire x1="34" y1="12.25" x2="32.95" y2="12.25" width="0.3" layer="16"/>
<via x="30.2" y="24.4" extent="1-16" drill="0.32"/>
<via x="28.2" y="24.4" extent="1-16" drill="0.32"/>
<via x="29.2" y="19.8" extent="1-16" drill="0.32"/>
<wire x1="29.202" y1="20.7" x2="29.202" y2="19.802" width="0.2" layer="1"/>
<wire x1="29.202" y1="19.802" x2="29.2" y2="19.8" width="0.2" layer="1"/>
<wire x1="28.002" y1="23.3" x2="28.002" y2="24.202" width="0.2" layer="1"/>
<wire x1="28.002" y1="24.202" x2="28.2" y2="24.4" width="0.2" layer="1"/>
<wire x1="28.402" y1="23.3" x2="28.402" y2="24.198" width="0.2" layer="1"/>
<wire x1="28.402" y1="24.198" x2="28.2" y2="24.4" width="0.2" layer="1"/>
<wire x1="30.002" y1="23.3" x2="30.002" y2="24.202" width="0.2" layer="1"/>
<wire x1="30.002" y1="24.202" x2="30.2" y2="24.4" width="0.2" layer="1"/>
<wire x1="30.402" y1="23.3" x2="30.402" y2="24.198" width="0.2" layer="1"/>
<wire x1="30.402" y1="24.198" x2="30.2" y2="24.4" width="0.2" layer="1"/>
<via x="28.5" y="18.7" extent="1-16" drill="0.32"/>
<wire x1="27.202" y1="20.7" x2="27.202" y2="19.498" width="0.2" layer="1"/>
<wire x1="27.202" y1="19.498" x2="27.6" y2="18.7" width="0.2" layer="1"/>
<wire x1="27.6" y1="18.7" x2="28.5" y2="18.7" width="0.2" layer="1"/>
<via x="15.3" y="2.6" extent="1-16" drill="0.32"/>
<wire x1="15.302" y1="1.7" x2="15.302" y2="2.598" width="0.2" layer="1"/>
<wire x1="15.302" y1="2.598" x2="15.3" y2="2.6" width="0.2" layer="1"/>
<via x="18.1" y="2.6" extent="1-16" drill="0.32"/>
<wire x1="18.102" y1="1.7" x2="18.102" y2="2.598" width="0.2" layer="1"/>
<wire x1="18.102" y1="2.598" x2="18.1" y2="2.6" width="0.2" layer="1"/>
<wire x1="15.702" y1="1.7" x2="15.702" y2="2.198" width="0.2" layer="1"/>
<wire x1="15.702" y1="2.198" x2="15.3" y2="2.6" width="0.2" layer="1"/>
<wire x1="17.702" y1="1.7" x2="17.702" y2="2.202" width="0.2" layer="1"/>
<wire x1="17.702" y1="2.202" x2="18.1" y2="2.6" width="0.2" layer="1"/>
<via x="11.9" y="3.4" extent="1-16" drill="0.32"/>
<wire x1="11.702" y1="4.3" x2="11.702" y2="3.598" width="0.2" layer="1"/>
<wire x1="11.702" y1="3.598" x2="11.9" y2="3.4" width="0.2" layer="1"/>
<wire x1="12.102" y1="4.3" x2="12.102" y2="3.602" width="0.2" layer="1"/>
<wire x1="12.102" y1="3.602" x2="11.9" y2="3.4" width="0.2" layer="1"/>
<via x="57.75" y="31.7" extent="1-16" drill="0.32"/>
<wire x1="57.15" y1="30.86" x2="57.75" y2="31.7" width="0.3" layer="16"/>
<wire x1="57.75" y1="31.7" x2="57.15" y2="32.45" width="0.3" layer="16"/>
<wire x1="4.9" y1="23.6" x2="4.25" y2="30.8" width="0" layer="19" extent="1-1"/>
<wire x1="4.25" y1="22.5" x2="4.9" y2="22.75" width="0" layer="19" extent="1-16"/>
<wire x1="4.25" y1="12.8" x2="4.25" y2="16" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="V3P3V">
<contactref element="U3" pad="5"/>
<contactref element="U3" pad="4"/>
<contactref element="U3" pad="3"/>
<contactref element="C17" pad="P$1"/>
<contactref element="C18" pad="P$1"/>
<contactref element="C19" pad="P$1"/>
<contactref element="C20" pad="P$1"/>
<contactref element="R14" pad="P$1"/>
<contactref element="FB2" pad="P$2"/>
<contactref element="R27" pad="P$1"/>
<wire x1="26" y1="30.45" x2="27.6" y2="30.45" width="0.4" layer="16"/>
<wire x1="27.6" y1="30.45" x2="29.2" y2="30.45" width="0.4" layer="16"/>
<wire x1="29.2" y1="30.45" x2="29.7" y2="30.45" width="0.4" layer="16"/>
<wire x1="29.7" y1="30.45" x2="30.8" y2="30.45" width="0.4" layer="16"/>
<wire x1="29.7" y1="31.9" x2="29.7" y2="30.45" width="0.4" layer="16"/>
<wire x1="29.2" y1="31.9" x2="29.7" y2="31.9" width="0.3" layer="16"/>
<wire x1="29.7" y1="31.9" x2="30.2" y2="31.9" width="0.3" layer="16"/>
<wire x1="30.8" y1="30.45" x2="35.55" y2="31.1" width="0" layer="19" extent="16-16"/>
<wire x1="39.75" y1="25" x2="35.55" y2="31.1" width="0" layer="19" extent="16-16"/>
<wire x1="30.85" y1="9.8" x2="39.75" y2="25" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="VDD3">
<contactref element="R13" pad="P$1"/>
<contactref element="R9" pad="P$1"/>
<contactref element="J6" pad="30"/>
<wire x1="32.802" y1="20.7" x2="35.05" y2="36.5" width="0" layer="19" extent="1-16"/>
<wire x1="2.25" y1="19.6" x2="32.802" y2="20.7" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="V5P0V">
<contactref element="U2" pad="B4"/>
<contactref element="U2" pad="B3"/>
<contactref element="C11" pad="P$1"/>
<contactref element="C12" pad="P$1"/>
<contactref element="C26" pad="P$1"/>
<contactref element="U5" pad="6"/>
<contactref element="U7" pad="1"/>
<contactref element="U7" pad="5"/>
<contactref element="U8" pad="6"/>
<contactref element="C30" pad="P$1"/>
<contactref element="U6" pad="6"/>
<contactref element="JFAN" pad="1"/>
<contactref element="C37" pad="P$1"/>
<contactref element="R23" pad="P$1"/>
<contactref element="R20" pad="P$1"/>
<wire x1="5.8" y1="18.3" x2="5.8" y2="17.9" width="0.3" layer="16"/>
<wire x1="5.8" y1="17.9" x2="5.8" y2="17.5" width="0.3" layer="16"/>
<wire x1="5.8" y1="17.5" x2="6.3" y2="17" width="0.3" layer="16"/>
<wire x1="6.3" y1="17" x2="6.3" y2="14.55" width="0.3" layer="16"/>
<wire x1="6.3" y1="14.55" x2="5.75" y2="14" width="0.3" layer="16"/>
<wire x1="5.75" y1="14" x2="5.75" y2="12.4" width="0.3" layer="16"/>
<wire x1="12.5" y1="34.35" x2="13.95" y2="34.35" width="0.3" layer="1"/>
<wire x1="11.95" y1="12.15" x2="11.65" y2="12.45" width="0.3" layer="16"/>
<wire x1="11.65" y1="12.45" x2="10.3" y2="12.45" width="0.3" layer="16"/>
<wire x1="10.3" y1="12.45" x2="8.95" y2="11.1" width="0.3" layer="16"/>
<wire x1="8.95" y1="11.1" x2="8.9" y2="11.1" width="0.3" layer="16"/>
<via x="8.9" y="11.1" extent="1-16" drill="0.32"/>
<wire x1="8.9" y1="11.1" x2="5.7" y2="11.1" width="0.3" layer="15"/>
<via x="5.7" y="11.1" extent="1-16" drill="0.32"/>
<wire x1="5.7" y1="11.1" x2="5.75" y2="11.15" width="0.3" layer="16"/>
<wire x1="5.75" y1="11.15" x2="5.75" y2="12.4" width="0.3" layer="16"/>
<wire x1="12.5" y1="34.35" x2="11.8" y2="34.35" width="0.3" layer="1"/>
<wire x1="11.8" y1="34.35" x2="10.9" y2="33.45" width="0.3" layer="1"/>
<wire x1="10.9" y1="33.45" x2="9.2" y2="31.75" width="0.3" layer="1"/>
<wire x1="9.2" y1="31.75" x2="9.2" y2="29.6" width="0.3" layer="1"/>
<via x="9.2" y="29.6" extent="1-16" drill="0.32"/>
<wire x1="9.2" y1="29.6" x2="5.7" y2="26.1" width="0.3" layer="15"/>
<wire x1="5.7" y1="26.1" x2="5.7" y2="11.1" width="0.3" layer="15"/>
<contactref element="C43" pad="P$1"/>
<wire x1="30.5" y1="7" x2="30.75" y2="7.25" width="0.3" layer="16"/>
<wire x1="30.75" y1="7.25" x2="33.5" y2="7.25" width="0.3" layer="16"/>
<wire x1="12" y1="7.85" x2="11.35" y2="8.5" width="0.3" layer="16"/>
<wire x1="11.35" y1="8.5" x2="11" y2="8.5" width="0.3" layer="16"/>
<via x="11" y="8.5" extent="1-16" drill="0.32"/>
<wire x1="11" y1="8.5" x2="10.2" y2="8.5" width="0.3" layer="2"/>
<wire x1="10.2" y1="8.5" x2="8.9" y2="9.8" width="0.3" layer="2"/>
<wire x1="8.9" y1="9.8" x2="8.9" y2="11.1" width="0.3" layer="2"/>
<wire x1="12" y1="7.85" x2="12.95" y2="7.85" width="0.3" layer="16"/>
<wire x1="12.95" y1="7.85" x2="13" y2="7.9" width="0.3" layer="16"/>
<via x="13" y="7.9" extent="1-16" drill="0.32"/>
<wire x1="13" y1="7.9" x2="18.4" y2="7.9" width="0.3" layer="15"/>
<wire x1="18.4" y1="7.9" x2="19" y2="7.3" width="0.3" layer="15"/>
<wire x1="19" y1="7.3" x2="21.3" y2="7.3" width="0.3" layer="15"/>
<via x="21.3" y="7.3" extent="1-16" drill="0.32"/>
<wire x1="21.3" y1="7.3" x2="25.4" y2="7.3" width="0.3" layer="2"/>
<via x="25.4" y="7.3" extent="1-16" drill="0.32"/>
<wire x1="25.4" y1="7.3" x2="30.9" y2="7.3" width="0.3" layer="15"/>
<wire x1="30.9" y1="7.3" x2="31.5" y2="7.9" width="0.3" layer="15"/>
<via x="31.5" y="7.9" extent="1-16" drill="0.32"/>
<wire x1="31.5" y1="7.9" x2="31.4" y2="7.9" width="0.3" layer="16"/>
<wire x1="31.4" y1="7.9" x2="30.5" y2="7" width="0.3" layer="16"/>
<wire x1="56" y1="28.3" x2="56.95" y2="30.9" width="0" layer="19" extent="1-1"/>
<wire x1="57.05" y1="24.3" x2="56" y2="28.3" width="0" layer="19" extent="1-1"/>
<wire x1="51.2" y1="26.35" x2="56" y2="28.3" width="0" layer="19" extent="1-1"/>
<wire x1="33.5" y1="7.25" x2="51.2" y2="26.35" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="VREGN">
<contactref element="R6" pad="P$1"/>
<contactref element="R4" pad="P$1"/>
<contactref element="U1" pad="22"/>
<contactref element="C5" pad="P$1"/>
<wire x1="48.65" y1="31.14" x2="49.27" y2="31.76" width="0.3" layer="16"/>
<wire x1="49.27" y1="31.76" x2="50.175" y2="31.76" width="0.3" layer="16"/>
<wire x1="54.1" y1="32.98" x2="58.64" y2="26.8" width="0" layer="19" extent="1-16"/>
<wire x1="50.175" y1="31.76" x2="54.1" y2="32.98" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="VIN_CHRG">
<contactref element="U1" pad="1"/>
<contactref element="C1" pad="P$1"/>
<contactref element="C2" pad="P$1"/>
<contactref element="C3" pad="P$1"/>
<contactref element="F1" pad="2"/>
<contactref element="J6" pad="37"/>
<wire x1="45.4" y1="35.411" x2="45.411" y2="35.4" width="0.5" layer="16"/>
<wire x1="45.411" y1="35.4" x2="47.53" y2="35.4" width="0.5" layer="16"/>
<wire x1="47.53" y1="35.4" x2="49.23" y2="35.4" width="0.5" layer="16"/>
<wire x1="49.23" y1="35.4" x2="50.93" y2="35.4" width="0.5" layer="16"/>
<wire x1="50.93" y1="35.4" x2="50.9" y2="35.37" width="0.3" layer="16"/>
<wire x1="50.9" y1="35.37" x2="50.9" y2="33.485" width="0.3" layer="16"/>
<wire x1="34.402" y1="23.3" x2="45.4" y2="35.411" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="N$24">
<contactref element="R20" pad="P$2"/>
<contactref element="U5" pad="4"/>
<contactref element="Q4" pad="3"/>
<wire x1="12.1" y1="36.2" x2="13.95" y2="35.65" width="0" layer="19" extent="1-1"/>
<wire x1="10.9" y1="34.95" x2="12.1" y2="36.2" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="N$29">
<contactref element="U5" pad="2"/>
<contactref element="R21" pad="P$1"/>
<wire x1="17.5" y1="34.85" x2="16.05" y2="35" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="V5P0V_USBA">
<contactref element="U5" pad="1"/>
<contactref element="C27" pad="P$1"/>
<contactref element="C28" pad="P$1"/>
<contactref element="J4" pad="1"/>
<contactref element="C41" pad="P$1"/>
<wire x1="16.05" y1="34.35" x2="16.05" y2="32.8" width="0.3" layer="1"/>
<wire x1="16.05" y1="32.8" x2="15.95" y2="32.8" width="0.3" layer="1"/>
<wire x1="15.95" y1="32.8" x2="15.95" y2="32.3" width="0.3" layer="1"/>
<wire x1="15.95" y1="32.3" x2="15.95" y2="31" width="0.3" layer="1"/>
<wire x1="15.95" y1="31" x2="16.15" y2="31" width="0.3" layer="1"/>
<wire x1="16.15" y1="31" x2="16.15" y2="29" width="0.3" layer="1"/>
<wire x1="16.15" y1="31" x2="31.5" y2="30.42" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="SERVO_TX_5V">
<contactref element="U7" pad="3"/>
<contactref element="JD1" pad="2"/>
<wire x1="46.25" y1="30.9" x2="55.05" y2="30.9" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="SERVO_RX_5V">
<contactref element="U8" pad="3"/>
<contactref element="JD1" pad="3"/>
<wire x1="43.75" y1="30.9" x2="55.15" y2="26.9" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="JOULE_RX_18V">
<contactref element="U7" pad="4"/>
<contactref element="J6" pad="26"/>
<wire x1="32.002" y1="20.7" x2="55.05" y2="28.3" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="JOULE_TX_18V">
<contactref element="U8" pad="4"/>
<contactref element="J6" pad="28"/>
<wire x1="32.402" y1="20.7" x2="55.15" y2="24.3" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="N$28">
<contactref element="JD1" pad="4"/>
<contactref element="D2" pad="2"/>
<wire x1="40.4" y1="31.15" x2="39.6" y2="31.95" width="0.4" layer="16"/>
<wire x1="39.6" y1="31.95" x2="39.6" y2="33" width="0.4" layer="16"/>
<via x="39.6" y="33" extent="1-16" drill="0.32"/>
<wire x1="39.6" y1="33" x2="39.6" y2="30.9" width="0.4" layer="1"/>
<wire x1="39.6" y1="30.9" x2="41.25" y2="30.9" width="0.4" layer="1"/>
</signal>
<signal name="N$31">
<contactref element="D2" pad="1"/>
<contactref element="F1" pad="1"/>
<wire x1="40.4" y1="38.05" x2="41.261" y2="37.189" width="0.4" layer="16"/>
<wire x1="41.261" y1="37.189" x2="45.4" y2="37.189" width="0.4" layer="16"/>
</signal>
<signal name="N$33">
<contactref element="R23" pad="P$2"/>
<contactref element="U6" pad="4"/>
<contactref element="Q5" pad="3"/>
<wire x1="12" y1="9.35" x2="11.95" y2="10.85" width="0" layer="19" extent="16-16"/>
<wire x1="9" y1="8.5" x2="12" y2="9.35" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="N$34">
<contactref element="U6" pad="2"/>
<contactref element="R24" pad="P$1"/>
<wire x1="14.05" y1="11.5" x2="15.5" y2="11.25" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="V5P0V_USBB">
<contactref element="U6" pad="1"/>
<contactref element="C31" pad="P$1"/>
<contactref element="C32" pad="P$1"/>
<contactref element="J5" pad="1"/>
<contactref element="C42" pad="P$1"/>
<wire x1="17.55" y1="11.9" x2="17.55" y2="12.15" width="0.3" layer="16"/>
<wire x1="17.55" y1="12.15" x2="14.05" y2="12.15" width="0.3" layer="16"/>
<wire x1="17.55" y1="11.9" x2="17.55" y2="10.1" width="0.3" layer="16"/>
<wire x1="17.55" y1="10.1" x2="17.55" y2="8.1" width="0.3" layer="16"/>
<wire x1="17.55" y1="8.1" x2="17.55" y2="8.05" width="0.3" layer="16"/>
<wire x1="17.55" y1="8.05" x2="18.8" y2="6.8" width="0.3" layer="16"/>
<wire x1="18.8" y1="6.8" x2="18.8" y2="5.95" width="0.3" layer="16"/>
<wire x1="18.8" y1="5.95" x2="19.5" y2="5.25" width="0.3" layer="16"/>
</signal>
<signal name="USB2_0_N" class="1">
<contactref element="J6" pad="8"/>
<contactref element="J4" pad="2"/>
<wire x1="28.402" y1="20.7" x2="28.402" y2="21.45965" width="0.1524" layer="1"/>
<wire x1="28.402" y1="21.45965" x2="27.84735" y2="22.0143" width="0.1524" layer="1"/>
<wire x1="27.84735" y1="22.0143" x2="26.74735" y2="22.0143" width="0.1524" layer="1"/>
<wire x1="26.74735" y1="22.0143" x2="26.4143" y2="22.34735" width="0.1524" layer="1"/>
<wire x1="26.4143" y1="22.34735" x2="26.4143" y2="26.05265" width="0.1524" layer="1"/>
<wire x1="26.4143" y1="26.05265" x2="28.2143" y2="27.85265" width="0.1524" layer="1"/>
<wire x1="28.2143" y1="27.85265" x2="28.2143" y2="29.6343" width="0.1524" layer="1"/>
<wire x1="28.2143" y1="29.6343" x2="29" y2="30.42" width="0.1524" layer="1"/>
</signal>
<signal name="USB2_0_P" class="1">
<contactref element="J4" pad="3"/>
<contactref element="J6" pad="6"/>
<wire x1="28.002" y1="20.7" x2="28.002" y2="21.53635" width="0.1524" layer="1"/>
<wire x1="28.002" y1="21.53635" x2="27.75265" y2="21.7857" width="0.1524" layer="1"/>
<wire x1="27.75265" y1="21.7857" x2="26.65265" y2="21.7857" width="0.1524" layer="1"/>
<wire x1="26.65265" y1="21.7857" x2="26.1857" y2="22.25265" width="0.1524" layer="1"/>
<wire x1="26.1857" y1="22.25265" x2="26.1857" y2="26.14735" width="0.1524" layer="1"/>
<wire x1="26.1857" y1="26.14735" x2="27.9857" y2="27.94735" width="0.1524" layer="1"/>
<wire x1="27.9857" y1="27.94735" x2="27.9857" y2="29.4343" width="0.1524" layer="1"/>
<wire x1="27.9857" y1="29.4343" x2="27" y2="30.42" width="0.1524" layer="1"/>
</signal>
<signal name="USB2_1_N" class="1">
<contactref element="J7" pad="63"/>
<contactref element="J5" pad="2"/>
<wire x1="24.102" y1="4.3" x2="24.102" y2="5.13635" width="0.1524" layer="1"/>
<wire x1="24.102" y1="5.13635" x2="22.65265" y2="6.5857" width="0.1524" layer="1"/>
<wire x1="22.65265" y1="6.5857" x2="17.64735" y2="6.5857" width="0.1524" layer="1"/>
<wire x1="17.64735" y1="6.5857" x2="17.4143" y2="6.35265" width="0.1524" layer="1"/>
<wire x1="17.4143" y1="6.35265" x2="17.4143" y2="6.3357" width="0.1524" layer="1"/>
<wire x1="17.4143" y1="6.3357" x2="17.4" y2="6.3" width="0.1524" layer="1"/>
<via x="17.4" y="6.3" extent="1-16" drill="0.32"/>
<wire x1="17.4" y1="6.3" x2="17.7" y2="6" width="0.1524" layer="16"/>
<wire x1="17.7" y1="6" x2="18" y2="6" width="0.1524" layer="16"/>
<wire x1="18" y1="6" x2="18" y2="5.25" width="0.1524" layer="16"/>
</signal>
<signal name="USB2_1_P" class="1">
<contactref element="J7" pad="65"/>
<contactref element="J5" pad="3"/>
<wire x1="24.502" y1="4.3" x2="24.502" y2="5.05965" width="0.1524" layer="1"/>
<wire x1="24.502" y1="5.05965" x2="22.74735" y2="6.8143" width="0.1524" layer="1"/>
<wire x1="22.74735" y1="6.8143" x2="17.2857" y2="6.8143" width="0.1524" layer="1"/>
<wire x1="17.2857" y1="6.8143" x2="17.1357" y2="6.7857" width="0.1524" layer="1"/>
<wire x1="17.1357" y1="6.7857" x2="16.9" y2="6.75" width="0.1524" layer="1"/>
<via x="16.9" y="6.75" extent="1-16" drill="0.32"/>
<wire x1="16.9" y1="6.75" x2="16.8" y2="6.65" width="0.1524" layer="16"/>
<wire x1="16.8" y1="6.65" x2="16.75" y2="6.65" width="0.1524" layer="16"/>
<wire x1="16.75" y1="6.65" x2="16.75" y2="5.5" width="0.1524" layer="16"/>
<wire x1="16.75" y1="5.5" x2="16.5" y2="5.25" width="0.1524" layer="16"/>
</signal>
<signal name="VRTC">
<contactref element="R25" pad="P$2"/>
<contactref element="J6" pad="11"/>
<wire x1="12" y1="14.25" x2="29.202" y2="23.3" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="N$30">
<contactref element="R25" pad="P$1"/>
<contactref element="JRTC" pad="P2"/>
<contactref element="JRTC" pad="P1"/>
<contactref element="D3" pad="P$2"/>
<wire x1="11.61" y1="20" x2="26.79" y2="20" width="0" layer="19" extent="16-16"/>
<wire x1="12" y1="15.75" x2="11.61" y2="20" width="0" layer="19" extent="16-16"/>
<wire x1="10.8" y1="15.8" x2="12" y2="15.75" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="SDCARD_VCCA">
<contactref element="FB1" pad="P$2"/>
<contactref element="C33" pad="P$1"/>
<contactref element="U9" pad="A5"/>
<contactref element="R26" pad="P$1"/>
<wire x1="41.25" y1="20.7" x2="46" y2="25.95" width="0" layer="19" extent="16-16"/>
<wire x1="41.25" y1="19" x2="41.25" y2="20.7" width="0" layer="19" extent="16-16"/>
<wire x1="57.8" y1="10.95" x2="41.25" y2="19" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="N$41">
<contactref element="J8" pad="8"/>
<contactref element="U9" pad="D1"/>
<contactref element="R44" pad="P$2"/>
<wire x1="53.3" y1="17.55" x2="44" y2="27.45" width="0" layer="19" extent="16-16"/>
<wire x1="52.9" y1="16.2" x2="53.3" y2="17.55" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="N$42">
<contactref element="J8" pad="1"/>
<contactref element="U9" pad="C4"/>
<contactref element="R43" pad="P$2"/>
<wire x1="44.4" y1="17.55" x2="45.5" y2="26.95" width="0" layer="19" extent="16-16"/>
<wire x1="45.2" y1="16.2" x2="44.4" y2="17.55" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="N$43">
<contactref element="J8" pad="2"/>
<contactref element="U9" pad="D4"/>
<contactref element="R42" pad="P$2"/>
<wire x1="46" y1="17.55" x2="45.5" y2="27.45" width="0" layer="19" extent="16-16"/>
<wire x1="46.3" y1="16.2" x2="46" y2="17.55" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="N$44">
<contactref element="J8" pad="3"/>
<contactref element="U9" pad="C2"/>
<contactref element="R41" pad="P$2"/>
<wire x1="47.6" y1="17.55" x2="44.5" y2="26.95" width="0" layer="19" extent="16-16"/>
<wire x1="47.4" y1="16.2" x2="47.6" y2="17.55" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="N$45">
<contactref element="J8" pad="5"/>
<contactref element="U9" pad="D3"/>
<wire x1="49.6" y1="16.2" x2="45" y2="27.45" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="SDCARD_CD">
<contactref element="J6" pad="79"/>
<contactref element="J8" pad="11"/>
<contactref element="R26" pad="P$2"/>
<wire x1="57.8" y1="9.45" x2="42.802" y2="23.3" width="0" layer="19" extent="1-16"/>
<wire x1="54.8" y1="5.7" x2="57.8" y2="9.45" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="SDCARD_D0">
<contactref element="J6" pad="81"/>
<contactref element="U9" pad="B2"/>
<wire x1="43.202" y1="23.3" x2="44.5" y2="26.45" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="SDCARD_D1">
<contactref element="J6" pad="83"/>
<contactref element="U9" pad="A2"/>
<wire x1="43.602" y1="23.3" x2="44.5" y2="25.95" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="SDCARD_D2">
<contactref element="J6" pad="85"/>
<contactref element="U9" pad="B4"/>
<wire x1="44.002" y1="23.3" x2="45.5" y2="26.45" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="SDCARD_D3">
<contactref element="J6" pad="87"/>
<contactref element="U9" pad="A4"/>
<wire x1="44.402" y1="23.3" x2="45.5" y2="25.95" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="SDCARD_CMD">
<contactref element="J6" pad="89"/>
<contactref element="U9" pad="B1"/>
<wire x1="44.802" y1="23.3" x2="44" y2="26.45" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="SDCARD_CLK">
<contactref element="J6" pad="75"/>
<contactref element="U9" pad="A3"/>
<wire x1="42.002" y1="23.3" x2="45" y2="25.95" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="SDCARD_CLK_FB">
<contactref element="J6" pad="77"/>
<contactref element="U9" pad="A1"/>
<wire x1="42.402" y1="23.3" x2="44" y2="25.95" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="SDCARD_VCCB">
<contactref element="FB2" pad="P$1"/>
<contactref element="C35" pad="P$1"/>
<contactref element="C34" pad="P$1"/>
<contactref element="J8" pad="4"/>
<contactref element="C36" pad="P$1"/>
<contactref element="U9" pad="D5"/>
<contactref element="R41" pad="P$1"/>
<contactref element="R42" pad="P$1"/>
<contactref element="R43" pad="P$1"/>
<contactref element="R44" pad="P$1"/>
<contactref element="R45" pad="P$1"/>
<wire x1="41.25" y1="27" x2="46" y2="27.45" width="0" layer="19" extent="16-16"/>
<wire x1="41.25" y1="25" x2="41.25" y2="27" width="0" layer="19" extent="16-16"/>
<wire x1="41.25" y1="22.5" x2="41.25" y2="25" width="0" layer="19" extent="16-16"/>
<wire x1="44.4" y1="19.05" x2="41.25" y2="22.5" width="0" layer="19" extent="16-16"/>
<wire x1="46" y1="19.05" x2="44.4" y2="19.05" width="0" layer="19" extent="16-16"/>
<wire x1="47.6" y1="19.05" x2="46" y2="19.05" width="0" layer="19" extent="16-16"/>
<wire x1="49.2" y1="17.55" x2="47.6" y2="19.05" width="0" layer="19" extent="16-16"/>
<wire x1="48.5" y1="16.2" x2="49.2" y2="17.55" width="0" layer="19" extent="16-16"/>
<wire x1="51.7" y1="19.05" x2="49.2" y2="17.55" width="0" layer="19" extent="16-16"/>
<wire x1="53.3" y1="19.05" x2="51.7" y2="19.05" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="N$36">
<contactref element="R27" pad="P$2"/>
<contactref element="JFAN" pad="2"/>
<wire x1="29" y1="7" x2="29.35" y2="9.8" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="N$46">
<contactref element="D4" pad="P$2"/>
<contactref element="FB3" pad="P$1"/>
<contactref element="J1" pad="1"/>
<wire x1="7.9" y1="33.8" x2="9.2" y2="35.73" width="0" layer="19" extent="16-16"/>
<wire x1="7.5" y1="32.55" x2="7.9" y2="33.8" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="N$49">
<contactref element="FB3" pad="P$2"/>
<contactref element="C38" pad="P$1"/>
<contactref element="U10" pad="12"/>
<wire x1="7.5" y1="31.05" x2="14" y2="32.4" width="0" layer="19" extent="16-16"/>
<wire x1="7.55" y1="29.1" x2="7.5" y2="31.05" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="N$53">
<contactref element="U10" pad="10"/>
<contactref element="C40" pad="P$1"/>
<wire x1="12.6" y1="31.5" x2="16.25" y2="34" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="UART2_RX">
<contactref element="U10" pad="17"/>
<contactref element="J6" pad="80"/>
<wire x1="16.4" y1="31" x2="42.802" y2="20.7" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="UART2_TX">
<contactref element="U10" pad="1"/>
<contactref element="J6" pad="78"/>
<contactref element="SW2" pad="P$2"/>
<contactref element="D6" pad="P$2"/>
<wire x1="59.4" y1="16.7" x2="59.075" y2="15.275" width="0" layer="19" extent="1-1"/>
<wire x1="42.402" y1="20.7" x2="59.4" y2="16.7" width="0" layer="19" extent="1-1"/>
<wire x1="15.5" y1="28.6" x2="42.402" y2="20.7" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="UART2_CTS">
<contactref element="U10" pad="19"/>
<contactref element="J6" pad="74"/>
<wire x1="16.4" y1="30" x2="41.602" y2="20.7" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="UART2_RTS">
<contactref element="U10" pad="6"/>
<contactref element="J6" pad="76"/>
<wire x1="12.6" y1

license_type: permissive

branch_name: refs/heads/master


text:
="29.5" x2="42.002" y2="20.7" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="N$39">
<contactref element="R28" pad="P$2"/>
<contactref element="U10" pad="9"/>
<wire x1="9.3" y1="31.05" x2="9.35" y2="31" width="0.1524" layer="16"/>
<wire x1="9.35" y1="31" x2="12.6" y2="31" width="0.1524" layer="16"/>
</signal>
<signal name="N$47">
<contactref element="R29" pad="P$2"/>
<contactref element="U10" pad="8"/>
<wire x1="11" y1="30.05" x2="11.45" y2="30.5" width="0.1524" layer="16"/>
<wire x1="11.45" y1="30.5" x2="12.6" y2="30.5" width="0.1524" layer="16"/>
</signal>
<signal name="N$48" class="1">
<contactref element="R29" pad="P$1"/>
<contactref element="J1" pad="3"/>
<wire x1="10.5" y1="35.73" x2="10.5" y2="32.05" width="0.1524" layer="16"/>
<wire x1="10.5" y1="32.05" x2="11" y2="31.55" width="0.1524" layer="16"/>
</signal>
<signal name="N$50" class="1">
<contactref element="R28" pad="P$1"/>
<contactref element="J1" pad="2"/>
<wire x1="9.85" y1="35.73" x2="9.85" y2="33.1" width="0.1524" layer="16"/>
<wire x1="9.85" y1="33.1" x2="9.3" y2="32.55" width="0.1524" layer="16"/>
</signal>
<signal name="PMIC_PWRBTN_N">
<contactref element="SW1" pad="P$2"/>
<contactref element="D5" pad="P$2"/>
<contactref element="R30" pad="P$1"/>
<wire x1="54.85" y1="22" x2="58.6" y2="22" width="0" layer="19" extent="1-1"/>
<wire x1="54.925" y1="18.425" x2="54.85" y2="22" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="N$51">
<contactref element="U1" pad="12"/>
<contactref element="R30" pad="P$2"/>
<wire x1="56.35" y1="22" x2="54.125" y2="30.26" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="N$52">
<contactref element="R31" pad="P$2"/>
<contactref element="SW2" pad="P$3"/>
<wire x1="54.925" y1="13.125" x2="56.35" y2="16.7" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="N$54">
<contactref element="R32" pad="P$2"/>
<contactref element="SW3" pad="P$1"/>
<wire x1="54.925" y1="10.075" x2="56.35" y2="11.5" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="BTN_N">
<contactref element="J6" pad="84"/>
<contactref element="SW3" pad="P$2"/>
<contactref element="D7" pad="P$2"/>
<wire x1="59.075" y1="10.075" x2="59.4" y2="11.5" width="0" layer="19" extent="1-1"/>
<wire x1="43.602" y1="20.7" x2="59.4" y2="11.5" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="N$56">
<contactref element="R39" pad="P$2"/>
<contactref element="D10" pad="ANODE"/>
<wire x1="1" y1="12.75" x2="2.75" y2="12.8" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="N$57">
<contactref element="R38" pad="P$2"/>
<contactref element="D9" pad="ANODE"/>
<wire x1="1" y1="22.45" x2="2.75" y2="22.5" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="N$58">
<contactref element="R37" pad="P$2"/>
<contactref element="D8" pad="ANODE"/>
<wire x1="1" y1="30.75" x2="2.75" y2="30.8" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="N$59">
<contactref element="D8" pad="CATHODE"/>
<contactref element="Q1" pad="3"/>
<wire x1="1" y1="29.25" x2="3" y2="29" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="N$60">
<contactref element="D9" pad="CATHODE"/>
<contactref element="Q2" pad="3"/>
<wire x1="1" y1="20.95" x2="3" y2="20.7" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="N$61">
<contactref element="D10" pad="CATHODE"/>
<contactref element="Q3" pad="3"/>
<wire x1="1" y1="11.25" x2="3" y2="11" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="ISH_GPIO_0">
<contactref element="J6" pad="25"/>
<contactref element="R33" pad="P$2"/>
<contactref element="Q1" pad="1"/>
<wire x1="4.25" y1="27.2" x2="32.002" y2="23.3" width="0" layer="19" extent="1-1"/>
<wire x1="4" y1="28.5" x2="4.25" y2="27.2" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="ISH_GPIO_1">
<contactref element="J6" pad="27"/>
<contactref element="R34" pad="P$2"/>
<contactref element="Q2" pad="1"/>
<wire x1="4" y1="20.2" x2="32.402" y2="23.3" width="0" layer="19" extent="1-1"/>
<wire x1="2.75" y1="18.9" x2="4" y2="20.2" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="ISH_GPIO_2">
<contactref element="J6" pad="32"/>
<contactref element="R35" pad="P$2"/>
<contactref element="Q3" pad="1"/>
<wire x1="4" y1="10.5" x2="33.202" y2="20.7" width="0" layer="19" extent="1-1"/>
<wire x1="4.25" y1="9.2" x2="4" y2="10.5" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="ISH_GPIO_3">
<contactref element="J6" pad="34"/>
<contactref element="R36" pad="P$1"/>
<contactref element="Q4" pad="1"/>
<wire x1="12.6" y1="37.2" x2="33.602" y2="20.7" width="0" layer="19" extent="1-1"/>
<wire x1="10.1" y1="37.95" x2="12.6" y2="37.2" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="SDCARD_LVL_CMD_DIR">
<contactref element="J6" pad="90"/>
<contactref element="U9" pad="B5"/>
<wire x1="44.802" y1="20.7" x2="46" y2="26.45" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="SDCARD_LVL_DAT_DIR">
<contactref element="J6" pad="67"/>
<contactref element="U9" pad="C1"/>
<contactref element="U9" pad="C5"/>
<wire x1="44" y1="26.95" x2="46" y2="26.95" width="0" layer="19" extent="16-16"/>
<wire x1="40.402" y1="23.3" x2="44" y2="26.95" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="N$69">
<contactref element="J8" pad="7"/>
<contactref element="U9" pad="D2"/>
<contactref element="R45" pad="P$2"/>
<wire x1="51.7" y1="17.55" x2="44.5" y2="27.45" width="0" layer="19" extent="16-16"/>
<wire x1="51.8" y1="16.2" x2="51.7" y2="17.55" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="ISH_GPIO_4">
<contactref element="J6" pad="29"/>
<contactref element="R40" pad="P$1"/>
<contactref element="Q5" pad="1"/>
<wire x1="9.5" y1="7.5" x2="32.802" y2="23.3" width="0" layer="19" extent="1-16"/>
<wire x1="9.95" y1="6.2" x2="9.5" y2="7.5" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="ISH_GPIO_5">
<contactref element="J6" pad="38"/>
<contactref element="R19" pad="P$2"/>
<contactref element="U5" pad="3"/>
<wire x1="35" y1="19.75" x2="34.402" y2="20.7" width="0" layer="19" extent="1-16"/>
<wire x1="16.05" y1="35.65" x2="34.402" y2="20.7" width="0" layer="19" extent="1-1"/>
</signal>
<signal name="ISH_GPIO_6">
<contactref element="J6" pad="31"/>
<contactref element="R22" pad="P$2"/>
<contactref element="U6" pad="3"/>
<wire x1="32.55" y1="22.1" x2="33.202" y2="23.3" width="0" layer="19" extent="1-16"/>
<wire x1="14.05" y1="10.85" x2="32.55" y2="22.1" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="N$22">
<contactref element="R46" pad="P$1"/>
<contactref element="U11" pad="3"/>
<wire x1="30.45" y1="26" x2="32.25" y2="25.835" width="0" layer="19" extent="1-16"/>
</signal>
<signal name="N$32">
<contactref element="R47" pad="P$1"/>
<contactref element="U11" pad="7"/>
<wire x1="37.55" y1="24.565" x2="40.3" y2="25.55" width="0" layer="19" extent="1-16"/>
</signal>
</signals>
<errors>
<approved hash="4,1,51146464ac655871"/>
<approved hash="4,1,512672eddfca5b9f"/>
<approved hash="4,1,bc3e04060405bc3d"/>
<approved hash="4,1,d98fccedf13dc343"/>
<approved hash="4,1,bc735a1b5b06dc88"/>
<approved hash="4,1,bc3e84068406bc3e"/>
<approved hash="4,1,d91744055e07a271"/>
<approved hash="4,1,b83de805e805b83d"/>
<approved hash="4,1,7126e68f25aba99c"/>
<approved hash="4,1,e074f27c1d66f688"/>
<approved hash="4,1,718eac8ddb5b8544"/>
<approved hash="4,1,a03e60066006a03e"/>
<approved hash="4,16,bc3e04060405bc3d"/>
<approved hash="4,16,512672eddfca5b9f"/>
<approved hash="4,16,51146464ac655871"/>
<approved hash="4,16,d98fccedf13dc343"/>
<approved hash="4,16,bc735a1b5b06dc88"/>
<approved hash="4,16,bc3e84068406bc3e"/>
<approved hash="4,16,ece62734e398577c"/>
<approved hash="4,16,0a2fb0107010ca2f"/>
<approved hash="4,16,58d689000b235d51"/>
<approved hash="4,16,c34a6975a9760349"/>
<approved hash="4,16,7126e68f25aba99c"/>
<approved hash="4,16,b83de805e805b83d"/>
<approved hash="4,16,d91744055e07a271"/>
<approved hash="4,16,718eac8ddb5b8544"/>
<approved hash="4,16,e074f27c1d66f688"/>
<approved hash="4,16,a03e60066006a03e"/>
</errors>
</board>
</drawing>
</eagle>

repository: antmd/mjmech

repo_name: antmd/mjmech

extension: brd


text:
/// <reference lib="esnext.asynciterable" />
import { AnyIterable } from './types'

async function _collect<T>(iterable: AsyncIterable<T>) {
  const values: T[] = []
  for await (const value of iterable) {
    values.push(value)
  }
  return values
}

export type UnwrapToPromiseOrAsyncIterable<M extends AnyIterable<any>> = M extends Iterable<infer T>
  ? T[]
  : M extends AsyncIterable<infer B>
  ? Promise<B[]>
  : never

export function collect<T, M extends AnyIterable<T>>(iterable: M): UnwrapToPromiseOrAsyncIterable<M>
export function collect<T>(iterable: AnyIterable<T>) {
  if (iterable[Symbol.asyncIterator]) {
    return _collect(iterable as AsyncIterable<any>)
  }
  return Array.from(iterable as Iterable<any>)
}

license: MIT

repository: keyvan-m-sadeghi/streaming-iterables

repo_name: keyvan-m-sadeghi/streaming-iterables

extension: ts


text:
package entity

import (
	"bytes"

	"github.com/Windowsfreak/go-mc/data/entity"
	item "github.com/Windowsfreak/go-mc/data/item"
	"github.com/Windowsfreak/go-mc/nbt"
	pk "github.com/Windowsfreak/go-mc/net/packet"
	"github.com/google/uuid"
)

// BlockEntity describes the representation of a tile entity at a position.
type BlockEntity struct {
	ID string `nbt:"id"`

	// global co-ordinates
	X int `nbt:"x"`
	Y int `nbt:"y"`
	Z int `nbt:"z"`

	// sign-specific.
	Color string `nbt:"color"`
	Text1 string `nbt:"Text1"`
	Text2 string `nbt:"Text2"`
	Text3 string `nbt:"Text3"`
	Text4 string `nbt:"Text4"`
}

//Entity represents an instance of an entity.
type Entity struct {
	ID   int32
	Data int32
	Base *entity.Entity

	UUID uuid.UUID

	X, Y, Z          float64
	Pitch, Yaw       int8
	VelX, VelY, VelZ int16
	OnGround         bool

	IsLiving  bool
	HeadPitch int8
}

// The Slot data structure is how Minecraft represents an item and its associated data in the Minecraft Protocol
type Slot struct {
	Present bool
	ItemID  item.ID
	Count   int8
	Damage  int16
	NBT     interface{}
}

//Decode implement packet.FieldDecoder interface
func (s *Slot) Decode(r pk.DecodeReader) error {
	var itemID pk.Short
	if err := itemID.Decode(r); err != nil {
		return err
	}
	s.Present = itemID != -1
	if s.Present {
		s.ItemID = item.ID(itemID)
		if err := (*pk.Byte)(&s.Count).Decode(r); err != nil {
			return err
		}
		if err := (*pk.Short)(&s.Damage).Decode(r); err != nil {
			return err
		}
		if err := nbt.NewDecoder(r).Decode(&s.NBT); err != nil {
			return err
		}
	}
	return nil
}

func (s Slot) Encode() []byte {
	if !s.Present {
		return pk.Boolean(false).Encode()
	}

	var b bytes.Buffer
	b.Write(pk.Short(s.ItemID).Encode())
	b.Write(pk.Byte(s.Count).Encode())
	b.Write(pk.Short(s.Damage).Encode())

	if s.NBT != nil {
		nbt.NewEncoder(&b).Encode(s.NBT)
	} else {
		b.Write([]byte{nbt.TagEnd})
	}

	return b.Bytes()
}

func (s Slot) String() string {
	return item.ByID[item.ID(s.ItemID)].DisplayName
}

repository: Windowsfreak/snitchMap

repo_name: Windowsfreak/snitchMap

extension: go


text:
package env

import (
	"bytes"
	"errors"
	"io/ioutil"
	"net/http"
	"testing"
	"time"

	"github.com/newrelic/newrelic-diagnostics-cli/helpers/httpHelper"
	"github.com/newrelic/newrelic-diagnostics-cli/tasks"
	. "github.com/onsi/ginkgo"
	. "github.com/onsi/gomega"
	"github.com/onsi/gomega/format"
)

func mockValidDateHeader(wrapper httpHelper.RequestWrapper) (*http.Response, error) {
	return &http.Response{
		Header: http.Header{
			"Date": []string{"Wed, 26 Feb 2020 10:45:17 GMT"},
		},
		Body: ioutil.NopCloser(bytes.NewReader([]byte("test body"))),
	}, nil
}

func mockInvalidDateHeader(wrapper httpHelper.RequestWrapper) (*http.Response, error) {
	return &http.Response{
		Header: http.Header{},
		Body:   ioutil.NopCloser(bytes.NewReader([]byte("test body"))),
	}, nil
}

func mockUnSuccessfulRequestErr(wrapper httpHelper.RequestWrapper) (*http.Response, error) {
	return &http.Response{}, errors.New("Error! This is an error")
}
func TestInfraCheckClockSkew(t *testing.T) {
	RegisterFailHandler(Fail)
	RunSpecs(t, "Infra/Env/ClockSkew test suite")
}

var _ = Describe("Infra/Env/ClockSkew", func() {

	var p InfraEnvClockSkew
	format.TruncatedDiff = false
	Describe("Identifier()", func() {
		It("Should return correct identifier", func() {
			expectedIdentifier := tasks.Identifier{
				Category:    "Infra",
				Subcategory: "Env",
				Name:        "ClockSkew",
			}
			Expect(p.Identifier()).To(Equal(expectedIdentifier))
		})
	})

	Describe("Explain()", func() {
		It("Should return correct explain string", func() {
			Expect(p.Explain()).To(Equal("Detect if host has clock skew from New Relic collector"))
		})
	})

	Describe("Dependencies()", func() {
		It("Should return expected dependencies", func() {
			Expect(p.Dependencies()).To(Equal([]string{"Infra/Agent/Connect", "Base/Config/ProxyDetect"}))
		})
	})

	Describe("Execute()", func() {
		var (
			options  tasks.Options
			upstream map[string]tasks.Result
			result   tasks.Result
		)

		JustBeforeEach(func() {
			result = p.Execute(options, upstream)
		})

		Context("When payload returns type assertion failure", func() {
			BeforeEach(func() {
				options = tasks.Options{}
				upstream = map[string]tasks.Result{
					"Infra/Agent/Connect": tasks.Result{
						Status:  tasks.Success,
						Payload: "Incorrect payload",
					},
				}
			})

			It("It should a return task.None and a Summary", func() {
				Expect(result.Status).To(Equal(tasks.Error))
				Expect(result.Summary).To(Equal(tasks.AssertionErrorSummary))
			})
		})

		Context("When API endpoint is not able to be parsed for collector time", func() {
			BeforeEach(func() {
				options = tasks.Options{}
				upstream = map[string]tasks.Result{

					"Infra/Agent/Connect": tasks.Result{
						Status: tasks.Failure,
						Payload: map[string]string{
							"requestURLs": "",
						},
					},
				}
				p.httpGetter = mockInvalidDateHeader
			})

			It("It should a return task.Error and a Summary", func() {
				Expect(result.Status).To(Equal(tasks.Error))
				Expect(result.Summary).To(Equal("Unable to determine New Relic collector time"))
			})
		})

		Context("When clock is not in sync", func() {

			BeforeEach(func() {
				options = tasks.Options{}
				upstream = map[string]tasks.Result{

					"Infra/Agent/Connect": tasks.Result{
						Status: tasks.Success,
						Payload: map[string]string{
							"requestURLs": "https://infra-api.newrelic.com",
						},
					},
				}
				p.httpGetter = mockValidDateHeader
				hostTime, _ := time.Parse(time.RFC1123, "Wed, 26 Feb 2020 11:45:17 GMT")
				p.checkForClockSkew = func(time.Time) (bool, int, time.Time) {
					return true, 61, hostTime.In(time.UTC)
				}

			})

			Context("in windows environments", func() {
				BeforeEach(func() {
					p.runtimeOS = "windows"
				})

				It("It should a return a failure Status and Summary", func() {
					expectedSummary := "Detected clock skew of 61 seconds between host and New Relic collector. This could lead to chart irregularities:\n\tHost time:      2020-02-26 11:45:17 +0000 UTC\n\tCollector time: 2020-02-26 10:45:17 +0000 UTC\nYour host may be affected by clock skew. Please consider using NTP to keep your host clocks in sync."
					Expect(result.Status).To(Equal(tasks.Failure))
					Expect(result.Summary).To(Equal(expectedSummary))
					Expect(result.URL).To(Equal(troubleshootingURLwindows))
				})
			})

			Context("in non-windows environments", func() {
				BeforeEach(func() {
					p.runtimeOS = "linux"
				})

				It("It should a return a failure Status and Summary", func() {
					expectedSummary := "Detected clock skew of 61 seconds between host and New Relic collector. This could lead to chart irregularities:\n\tHost time:      2020-02-26 11:45:17 +0000 UTC\n\tCollector time: 2020-02-26 10:45:17 +0000 UTC\nYour host may be affected by clock skew. Please consider using NTP to keep your host clocks in sync."
					Expect(result.Status).To(Equal(tasks.Failure))
					Expect(result.Summary).To(Equal(expectedSummary))
					Expect(result.URL).To(Equal(troubleshootingURLlinux))
				})
			})

		})
		Context("When clock is off by a couple of seconds but still in sync", func() {
			BeforeEach(func() {
				options = tasks.Options{}
				upstream = map[string]tasks.Result{

					"Infra/Agent/Connect": tasks.Result{
						Status: tasks.Success,
						Payload: map[string]string{
							"requestURLs": "https://infra-api.newrelic.com",
						},
					},
				}
				p.httpGetter = mockValidDateHeader
				hostTime, _ := time.Parse(time.RFC1123, "Wed, 26 Feb 2020 10:45:19 GMT")
				p.checkForClockSkew = func(time.Time) (bool, int, time.Time) {
					return false, 2, hostTime
				}

			})

			It("It should a return a failure Status and Summary", func() {
				expectedSummary := "System clock in sync with New Relic collector"
				Expect(result.Status).To(Equal(tasks.Success))
				Expect(result.Summary).To(Equal(expectedSummary))
			})
		})
	})

	Describe("getCollectorTime()", func() {
		var (
			apiEndpoint string
			serverTime  time.Time
			err         error
		)

		JustBeforeEach(func() {
			serverTime, err = p.getCollectorTime(apiEndpoint)
		})

		Context("getCollectorTime successfully parses endpoint", func() {

			BeforeEach(func() {
				apiEndpoint = "https://infra-api.newrelic.com"
				p.httpGetter = mockValidDateHeader
			})

			It("should return a server time and nil", func() {
				expectedTime, _ := time.Parse(time.RFC1123, "Wed, 26 Feb 2020 10:45:17 GMT")
				Expect(serverTime).To(Equal(expectedTime.In(time.UTC)))
				Expect(err).To(BeNil())
			})

		})

		Context("getCollectorTime unsuccessfully parses endpoint", func() {

			BeforeEach(func() {
				apiEndpoint = "https://infra-api.newrelic.com"
				p.httpGetter = mockInvalidDateHeader
			})

			It("should return a an error", func() {
				Expect(err).To(Equal(errResponseMissingDateHeader))
			})

		})
	})
})

repository: carlossscastro/newrelic-diagnostics-cli

repo_name: carlossscastro/newrelic-diagnostics-cli

branch_name: refs/heads/main


text:
DESCRIPTION = "Various MIME modules."
SECTION = "libs"
LICENSE = "Artistic|GPLv1+"
PR = "r3"

RDEPENDS_${PN} = "perl-module-test-more \
            perl-module-time-local"

SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RJ/RJBS/Email-Date-Format-${PV}.tar.gz"

S = "${WORKDIR}/Email-Date-Format-${PV}"

inherit cpan

BBCLASSEXTEND="native"

SRC_URI[md5sum] = "7ae25275da6ab272aa8b40141eac9f82"
SRC_URI[sha256sum] = "0c7f3636dffa5ff151f6906baa17582c2efeb29109750f40f820fe5d2dc38e84"

repository: overo/overo-oe-natty

repo_name: overo/overo-oe-natty

branch_name: HEAD

extension: bb


text:
/*
Copyright 2022 Gravitational, Inc.

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 conntest

import (
	"context"
	"fmt"
	"net"
	"strconv"
	"strings"
	"time"

	"github.com/google/uuid"
	"github.com/gravitational/trace"

	apiclient "github.com/gravitational/teleport/api/client"
	"github.com/gravitational/teleport/api/client/proto"
	"github.com/gravitational/teleport/api/types"
	"github.com/gravitational/teleport/lib/client"
	"github.com/gravitational/teleport/lib/client/conntest/database"
	"github.com/gravitational/teleport/lib/defaults"
	"github.com/gravitational/teleport/lib/services"
	alpn "github.com/gravitational/teleport/lib/srv/alpnproxy/common"
	"github.com/gravitational/teleport/lib/srv/db/common/role"
)

// databasePinger describes the required methods to test a Database Connection.
type databasePinger interface {
	// Ping tests the connection to the Database with a simple request.
	Ping(ctx context.Context, params database.PingParams) error

	// IsConnectionRefusedError returns whether the error is referring to a connection refused.
	IsConnectionRefusedError(error) bool

	// IsInvalidDatabaseUserError returns whether the error is referring to an invalid (non-existent) user.
	IsInvalidDatabaseUserError(error) bool

	// IsInvalidDatabaseNameError returns whether the error is referring to an invalid (non-existent) database name.
	IsInvalidDatabaseNameError(error) bool
}

// ClientDatabaseConnectionTester contains the required auth.ClientI methods to test a Database Connection
type ClientDatabaseConnectionTester interface {
	client.ALPNAuthClient

	services.ConnectionsDiagnostic
	apiclient.GetResourcesClient
}

// DatabaseConnectionTesterConfig defines the config fields for DatabaseConnectionTester.
type DatabaseConnectionTesterConfig struct {
	// UserClient is an auth client that has a User's identity.
	UserClient ClientDatabaseConnectionTester

	// PublicProxyAddr is public address of the proxy
	PublicProxyAddr string

	// TLSRoutingEnabled indicates that proxy supports ALPN SNI server where
	// all proxy services are exposed on a single TLS listener (Proxy Web Listener).
	TLSRoutingEnabled bool
}

// DatabaseConnectionTester implements the ConnectionTester interface for Testing Database access.
type DatabaseConnectionTester struct {
	cfg DatabaseConnectionTesterConfig
}

// NewDatabaseConnectionTester returns a new DatabaseConnectionTester
func NewDatabaseConnectionTester(cfg DatabaseConnectionTesterConfig) (*DatabaseConnectionTester, error) {
	return &DatabaseConnectionTester{
		cfg: cfg,
	}, nil
}

// TestConnection tests the access to a database using:
// - auth Client using the User access
// - the resource name
// - database user and database name to connect to
//
// A new ConnectionDiagnostic is created and used to store the traces as it goes through the checkpoints
// To connect to the Database, we will create a cert-key pair and setup a Database client back to Teleport Proxy.
// The following checkpoints are reported:
// - database server for the requested database exists / the user's roles can access it
// - the user can use the requested database user and database name (per their roles)
// - the database is acessible and accepting connections from the database server
// - the database has the database user and database name that was requested
func (s *DatabaseConnectionTester) TestConnection(ctx context.Context, req TestConnectionRequest) (types.ConnectionDiagnostic, error) {
	if req.ResourceKind != types.KindDatabase {
		return nil, trace.BadParameter("invalid value for ResourceKind, expected %q got %q", types.KindDatabase, req.ResourceKind)
	}

	connectionDiagnosticID := uuid.NewString()
	connectionDiagnostic, err := types.NewConnectionDiagnosticV1(
		connectionDiagnosticID,
		map[string]string{},
		types.ConnectionDiagnosticSpecV1{
			// We start with a failed state so that we don't need to set it to each return statement once an error is returned.
			// if the test reaches the end, we force the test to be a success by calling
			// 	connectionDiagnostic.SetMessage(types.DiagnosticMessageSuccess)
			//	connectionDiagnostic.SetSuccess(true)
			Message: types.DiagnosticMessageFailed,
		},
	)
	if err != nil {
		return nil, trace.Wrap(err)
	}

	if err := s.cfg.UserClient.CreateConnectionDiagnostic(ctx, connectionDiagnostic); err != nil {
		return nil, trace.Wrap(err)
	}

	databaseServers, err := s.getDatabaseServers(ctx, req.ResourceName)
	if err != nil {
		return nil, trace.Wrap(err)
	}

	if len(databaseServers) == 0 {
		connDiag, err := s.appendDiagnosticTrace(ctx,
			connectionDiagnosticID,
			types.ConnectionDiagnosticTrace_RBAC_DATABASE,
			"Database not found. "+
				"Ensure your role grants access by adding it to the 'db_labels' property. "+
				"This can also happen when you don't have a Database Agent proxying the database - "+
				"you can fix that by adding the database labels to the 'db_service.resources.labels' in 'teleport.yaml' file of the database agent.",
			trace.NotFound("%s not found", req.ResourceName),
		)
		if err != nil {
			return nil, trace.Wrap(err)
		}

		return connDiag, nil
	}

	databaseServer := databaseServers[0]
	routeToDatabase := proto.RouteToDatabase{
		ServiceName: databaseServer.GetName(),
		Protocol:    databaseServer.GetDatabase().GetProtocol(),
		Username:    req.DatabaseUser,
		Database:    req.DatabaseName,
	}

	databasePinger, err := getDatabaseConnTester(routeToDatabase.Protocol)
	if err != nil {
		return nil, trace.Wrap(err)
	}

	if err := checkDatabaseLogin(routeToDatabase.Protocol, req.DatabaseUser, req.DatabaseName); err != nil {
		return nil, trace.Wrap(err)
	}

	if _, err := s.appendDiagnosticTrace(ctx,
		connectionDiagnosticID,
		types.ConnectionDiagnosticTrace_RBAC_DATABASE,
		"A Database Agent is available to proxy the connection to the Database.",
		nil,
	); err != nil {
		return nil, trace.Wrap(err)
	}

	listener, err := s.runALPNTunnel(ctx, req, routeToDatabase, connectionDiagnosticID)
	if err != nil {
		return nil, trace.Wrap(err)
	}
	defer listener.Close()

	ping, err := newPing(listener.Addr().String(), req.DatabaseUser, req.DatabaseName)
	if err != nil {
		return nil, trace.Wrap(err)
	}

	if pingErr := databasePinger.Ping(ctx, ping); pingErr != nil {
		connDiag, err := s.handlePingError(ctx, connectionDiagnosticID, pingErr, databasePinger)
		return connDiag, trace.Wrap(err)
	}

	return s.handlePingSuccess(ctx, connectionDiagnosticID)
}

func (s *DatabaseConnectionTester) runALPNTunnel(ctx context.Context, req TestConnectionRequest, routeToDatabase proto.RouteToDatabase, connectionDiagnosticID string) (net.Listener, error) {
	list, err := net.Listen("tcp", "localhost:0")
	if err != nil {
		return nil, trace.Wrap(err)
	}

	alpnProtocol, err := alpn.ToALPNProtocol(routeToDatabase.Protocol)
	if err != nil {
		return nil, trace.Wrap(err)
	}

	mfaResponse, err := req.MFAResponse.GetOptionalMFAResponseProtoReq()
	if err != nil {
		return nil, trace.Wrap(err)
	}

	err = client.RunALPNAuthTunnel(ctx, client.ALPNAuthTunnelConfig{
		AuthClient:             s.cfg.UserClient,
		Listener:               list,
		Protocol:               alpnProtocol,
		Expires:                time.Now().Add(time.Minute).UTC(),
		PublicProxyAddr:        s.cfg.PublicProxyAddr,
		ConnectionDiagnosticID: connectionDiagnosticID,
		RouteToDatabase:        routeToDatabase,
		InsecureSkipVerify:     req.InsecureSkipVerify,
		MFAResponse:            mfaResponse,
	})
	if err != nil {
		return nil, trace.Wrap(err)
	}

	return list, nil
}

func (s *DatabaseConnectionTester) getDatabaseServers(ctx context.Context, databaseName string) ([]types.DatabaseServer, error) {
	// Lookup the Database Server that's proxying the requested Database.
	page, err := apiclient.GetResourcePage[types.DatabaseServer](ctx, s.cfg.UserClient, &proto.ListResourcesRequest{
		PredicateExpression: fmt.Sprintf(`name == "%s"`, databaseName),
		ResourceType:        types.KindDatabaseServer,
		Limit:               defaults.MaxIterationLimit,
	})
	return page.Resources, trace.Wrap(err)
}

func checkDatabaseLogin(protocol, databaseUser, databaseName string) error {
	needUser := role.RequireDatabaseUserMatcher(protocol)
	needDatabase := role.RequireDatabaseNameMatcher(protocol)

	if needUser && databaseUser == "" {
		return trace.BadParameter("missing required parameter Database User")
	}

	if needDatabase && databaseName == "" {
		return trace.BadParameter("missing required parameter Database Name")
	}

	return nil
}

func newPing(alpnProxyAddr, databaseUser, databaseName string) (database.PingParams, error) {
	proxyHost, proxyPortStr, err := net.SplitHostPort(alpnProxyAddr)
	if err != nil {
		return database.PingParams{}, trace.Wrap(err)
	}

	proxyPort, err := strconv.Atoi(proxyPortStr)
	if err != nil {
		return database.PingParams{}, trace.Wrap(err)
	}

	return database.PingParams{
		Host:         proxyHost,
		Port:         proxyPort,
		Username:     databaseUser,
		DatabaseName: databaseName,
	}, nil
}

func (s DatabaseConnectionTester) handlePingSuccess(ctx context.Context, connectionDiagnosticID string) (types.ConnectionDiagnostic, error) {
	if _, err := s.appendDiagnosticTrace(ctx, connectionDiagnosticID,
		types.ConnectionDiagnosticTrace_CONNECTIVITY,
		"Database is accessible from the Database Agent.",
		nil,
	); err != nil {
		return nil, trace.Wrap(err)
	}

	if _, err := s.appendDiagnosticTrace(ctx, connectionDiagnosticID,
		types.ConnectionDiagnosticTrace_RBAC_DATABASE_LOGIN,
		"Access to Database User and Database Name granted.",
		nil,
	); err != nil {
		return nil, trace.Wrap(err)
	}

	if _, err := s.appendDiagnosticTrace(ctx, connectionDiagnosticID,
		types.ConnectionDiagnosticTrace_DATABASE_DB_USER,
		"Database User exists in the Database.",
		nil,
	); err != nil {
		return nil, trace.Wrap(err)
	}

	connDiag, err := s.appendDiagnosticTrace(ctx, connectionDiagnosticID,
		types.ConnectionDiagnosticTrace_DATABASE_DB_NAME,
		"Database Name exists in the Database.",
		nil,
	)
	if err != nil {
		return nil, trace.Wrap(err)
	}

	connDiag.SetMessage(types.DiagnosticMessageSuccess)
	connDiag.SetSuccess(true)

	if err := s.cfg.UserClient.UpdateConnectionDiagnostic(ctx, connDiag); err != nil {
		return nil, trace.Wrap(err)
	}

	return connDiag, nil
}

func errorFromDatabaseService(pingErr error) bool {
	// If the requested DB User/Name can't be used per RBAC checks, the Database Agent returns an error which gets here.
	if strings.Contains(pingErr.Error(), "access to db denied. User does not have permissions. Confirm database user and name.") {
		return true
	}

	// When there's an error when trying to use RDS IAM auth.
	if strings.Contains(pingErr.Error(), "FATAL: PAM authentication failed for user") &&
		strings.Contains(pingErr.Error(), "IAM policy") {
		return true
	}

	return false
}

func (s DatabaseConnectionTester) handlePingError(ctx context.Context, connectionDiagnosticID string, pingErr error, databasePinger databasePinger) (types.ConnectionDiagnostic, error) {
	// The Database Agent (lib/srv/db/server.go) might add an trace in some cases.
	// Here, it must be ignored to prevent multiple failed traces.
	if errorFromDatabaseService(pingErr) {
		connDiag, err := s.cfg.UserClient.GetConnectionDiagnostic(ctx, connectionDiagnosticID)
		if err != nil {
			return nil, trace.Wrap(err)
		}

		return connDiag, nil
	}

	if databasePinger.IsConnectionRefusedError(pingErr) {
		connDiag, err := s.appendDiagnosticTrace(ctx,
			connectionDiagnosticID,
			types.ConnectionDiagnosticTrace_CONNECTIVITY,
			"There was a connection problem between the Database Agent and the Database. "+
				"Ensure the Database is running and accessible from the Database Agent.",
			pingErr,
		)
		if err != nil {
			return nil, trace.Wrap(err)
		}

		return connDiag, nil
	}

	// Requested DB User is allowed per RBAC rules, but those entities don't exist in the Database itself.
	if databasePinger.IsInvalidDatabaseUserError(pingErr) {
		connDiag, err := s.appendDiagnosticTrace(ctx,
			connectionDiagnosticID,
			types.ConnectionDiagnosticTrace_DATABASE_DB_USER,
			"The Database rejected the provided Database User. Ensure that the database user exists.",
			pingErr,
		)
		if err != nil {
			return nil, trace.Wrap(err)
		}

		return connDiag, nil
	}

	// Requested DB Name is allowed per RBAC rules, but those entities don't exist in the Database itself.
	if databasePinger.IsInvalidDatabaseNameError(pingErr) {
		connDiag, err := s.appendDiagnosticTrace(ctx,
			connectionDiagnosticID,
			types.ConnectionDiagnosticTrace_DATABASE_DB_NAME,
			"The Database rejected the provided Database Name. Ensure that the database name exists.",
			pingErr,
		)
		if err != nil {
			return nil, trace.Wrap(err)
		}

		return connDiag, nil
	}

	connDiag, err := s.appendDiagnosticTrace(ctx,
		connectionDiagnosticID,
		types.ConnectionDiagnosticTrace_UNKNOWN_ERROR,
		fmt.Sprintf("Unknown error. %v", pingErr),
		pingErr,
	)
	if err != nil {
		return nil, trace.Wrap(err)
	}

	return connDiag, nil
}

func (s DatabaseConnectionTester) appendDiagnosticTrace(ctx context.Context, connectionDiagnosticID string, traceType types.ConnectionDiagnosticTrace_TraceType, message string, err error) (types.ConnectionDiagnostic, error) {
	connDiag, err := s.cfg.UserClient.AppendDiagnosticTrace(
		ctx,
		connectionDiagnosticID,
		types.NewTraceDiagnosticConnection(
			traceType,
			message,
			err,
		))
	if err != nil {
		return nil, trace.Wrap(err)
	}

	return connDiag, nil
}

func getDatabaseConnTester(protocol string) (databasePinger, error) {
	switch protocol {
	case defaults.ProtocolPostgres:
		return &database.PostgresPinger{}, nil
	case defaults.ProtocolMySQL:
		return &database.MySQLPinger{}, nil
	case defaults.ProtocolSQLServer:
		return &database.SQLServerPinger{}, nil
	}
	return nil, trace.NotImplemented("database protocol %q is not supported yet for testing connection", protocol)
}

repository: gravitational/teleport

repo_name: gravitational/teleport

gha_language: Go


text:
// <copyright file="AssemblyInfo.cs" company="Dark Bond, Inc.">
//     Copyright © 2016-2018 - Dark Bond, Inc.  All Rights Reserved.
// </copyright>
// <author>Donald Roy Airey</author>
using System;
using System.Diagnostics.CodeAnalysis;
using System.Reflection;
using System.Resources;
using System.Runtime.InteropServices;

// General information about the assembly.
[assembly: AssemblyDescription("A library of common view models.")]
[assembly: AssemblyCopyright("Copyright © 2016-2018, Dark Bond, Inc.  All rights reserved.")]
[assembly: AssemblyTrademark("The Essential Element")]

// Indicates that this assembly is compliant with the Common Language Specification (CLS).
[assembly: CLSCompliant(false)]

// Disables the accessibility of this assembly to COM.
[assembly: ComVisible(false)]

// Describes the default language used for the resources.
[assembly: NeutralResourcesLanguageAttribute("en")]

// Suppress these FXCop issues.
[assembly: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "DarkBond.ViewModels.Input", Justification = "Reviewed")]
[assembly: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "DarkBond", Justification = "Spelled Correctly")]
[assembly: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "DarkBond", Scope = "namespace", Target = "DarkBond.ViewModel", Justification = "Spelled Correctly")]
[assembly: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "DarkBond", Scope = "namespace", Target = "DarkBond.ViewModels.Input", Justification = "Spelled Correctly")]
[assembly: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "DarkBond", Scope = "namespace", Target = "DarkBond.ViewModels.Events", Justification = "Spelled Correctly")]
[assembly: SuppressMessage("Microsoft.Design", "CA2210:AssembliesShouldHaveValidStrongNames", Justification = "Reviewed")]

repository: DonaldAirey/dark-bond-main

repo_name: DonaldAirey/dark-bond-main

extension: cs