From acc806d5ce797254fad1c1db3675376e7098196c Mon Sep 17 00:00:00 2001 From: TitanMKD Date: Mon, 28 May 2012 00:02:48 +0200 Subject: [PATCH 1/2] * Add PIN_EN1V8 (1V8 work fine 1V8 LED is set to ON), and PIN_BOOT0, 1, 2 & 3(read only). * Fixed wait() by using volatile else the loop was removed by GCC. Tested it with SPIFI work fine: SPIFI tested with LPCXpresso+NXP LPC Link (from LPCXpresso Board LPC1769 Debugger) -> Program Flash with Flash Driver LPC1850A_4350A_SPIFI.cfx -> Select file: firmware\blinky\blinky.bin -> Base address 0x14000000 & option Erase only required pages --- firmware/blinky/blinky.c | 15 ++++++++++++++- firmware/common/hackrf_core.c | 3 +++ firmware/common/hackrf_core.h | 24 +++++++++++++++++++++--- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/firmware/blinky/blinky.c b/firmware/blinky/blinky.c index 175c8d38..7fa09249 100644 --- a/firmware/blinky/blinky.c +++ b/firmware/blinky/blinky.c @@ -23,15 +23,26 @@ void wait(uint8_t duration) { - uint32_t i; + volatile uint32_t i; for (i = 0; i < duration * 1000000; i++); } +uint32_t boot0, boot1, boot2, boot3; + int main() { + gpio_init(); + EN1V8_SET; + EN1V8_CLR; + while (1) { + boot0 = BOOT0; + boot1 = BOOT1; + boot2 = BOOT2; + boot3 = BOOT3; + LED1_SET; LED2_SET; LED3_SET; @@ -41,4 +52,6 @@ int main() LED3_CLR; wait(1); } + + return 0 ; } diff --git a/firmware/common/hackrf_core.c b/firmware/common/hackrf_core.c index 654e0c72..9ae55029 100644 --- a/firmware/common/hackrf_core.c +++ b/firmware/common/hackrf_core.c @@ -31,6 +31,9 @@ void gpio_init() /* set certain pins as outputs, all others inputs */ GPIO_DIR2 = (PIN_LED1 | PIN_LED2 | PIN_LED3); + + /* set certain pins as outputs, all others inputs */ + GPIO_DIR3 = (PIN_EN1V8); } void all_pins_off(void) diff --git a/firmware/common/hackrf_core.h b/firmware/common/hackrf_core.h index 92e3f87c..9961ccad 100644 --- a/firmware/common/hackrf_core.h +++ b/firmware/common/hackrf_core.h @@ -33,9 +33,16 @@ /* GPIO pins */ //#ifdef JELLYBEAN -#define PIN_LED1 (1 << 1) /* GPIO2[1] on P4_1 */ -#define PIN_LED2 (1 << 2) /* GPIO2[2] on P4_2 */ -#define PIN_LED3 (1 << 8) /* GPIO2[8] on P6_12 */ +#define PIN_LED1 (1 << 1) /* GPIO2[1] on P4_1 */ +#define PIN_LED2 (1 << 2) /* GPIO2[2] on P4_2 */ +#define PIN_LED3 (1 << 8) /* GPIO2[8] on P6_12 */ + +#define PIN_EN1V8 (1 << 6) /* GPIO3[6] on P6_10 */ + +#define PIN_BOOT0 (1 << 8) /* GPIO0[8] on P1_1 */ +#define PIN_BOOT1 (1 << 9) /* GPIO0[9] on P1_2 */ +#define PIN_BOOT2 (1 << 7) /* GPIO5[7] on P2_8 */ +#define PIN_BOOT3 (1 << 10) /* GPIO1[10] on P2_9 */ //#endif /* indicator LED control */ @@ -49,6 +56,17 @@ #define LED3 (GPIO_PIN2 & PIN_LED3) #define LED3_SET (GPIO_SET2 = PIN_LED3) #define LED3_CLR (GPIO_CLR2 = PIN_LED3) + +#define EN1V8 (GPIO_PIN3 & PIN_EN1V8) +#define EN1V8_SET (GPIO_SET3 = PIN_EN1V8) +#define EN1V8_CLR (GPIO_CLR3 = PIN_EN1V8) + +/* Input GPIO BOOT0 to 3 */ +#define BOOT0 (GPIO_PIN0 & PIN_BOOT0) +#define BOOT1 (GPIO_PIN0 & PIN_BOOT1) +#define BOOT2 (GPIO_PIN5 & PIN_BOOT2) +#define BOOT3 (GPIO_PIN1 & PIN_BOOT3) + //#endif void gpio_init(void); From 71879fc05fbd0b4ed9c286789aaa673d5e795f51 Mon Sep 17 00:00:00 2001 From: TitanMKD Date: Mon, 28 May 2012 11:41:41 +0200 Subject: [PATCH 2/2] JellyBean BOM with DigiKey Part Number --- hardware/jellybean/jellybean_BOM.ods | Bin 0 -> 17355 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 hardware/jellybean/jellybean_BOM.ods diff --git a/hardware/jellybean/jellybean_BOM.ods b/hardware/jellybean/jellybean_BOM.ods new file mode 100644 index 0000000000000000000000000000000000000000..2af7c4de24fef0f5e5ee17249e07bab2f5bd8249 GIT binary patch literal 17355 zcma*P1yo(h(l(5{yK5joaCdhN?#{v8U4u*TpuvJW1b26LcXxtA;D^lQ&fNLtzU%M3 z&Y^dA)l1O^wOO7yFARwT(&ubHqm6;X5(ajd1Z)zD~ydjouQMx z{hJc5R+gYZAEhAQbO!=?`+6<^TOF*|-hZlNY-ywK2>7kcZ^!%s`t$4GjIgz_b+Uc+ zgVUcz{2L$MzeuySw=uB?IQ-50f8+c&iHJ0qux6hBA~ zH`9%V5>L7>WJm{+hutI?P{^uDVl-mIwtgHTiXRFtWG|zo5)l~`I~!B$j2}O@T4zoG zJ>QL;9eleSa^xARzArFX1T`^T*g_OT{3%uFc9rq@? z@n(0w`nfQ0aWOTecr8)Pd3vX2R-@6kF_X|9FymF-zy*DVgAg?mip{)>|3P`j)$MHh z3ckRzqs1=f`2H&Rz+c($uJ=RnsMZu|UGx~dFSLjJQ!>2gPn>{>Ym2nZ-Hx0Me>;rT zW@vOPsNgWx2tF>Br#`Sp*3UKrJ?DgVY!+G#il&+!Ex1KE^|NqK$rCFVd-#3op*Y+~ zF+6Ch2|J5+S1!k=`RR3h4T(05l}nIZHiTGl9g%1*N7em#a+AmA%ADW(V0?6vN;Y)k*`;IA3m*}Em-|p@F^V^*OKA+|(%P+Y zC|N7!!ztm6-!ZdOYUskg?EV2+jEmg*Q?%LxAX)BZ{=Bs5Vw@AfMgw?`@x4@H$*Hzy z)V+ssqslp1?>iuW=IfA2DE71kiQ@yP@bLGBc9EX;ci`_^E#`IfMgmRL`$ea>m4&V) z1g5flCp1G8-`(7jKUXs06`tBEk@?_xX$5tMfUI5|1|vg9PWEFZO^)M9H-GjKF0;CJ zAba4tD?${@F9S%&=fK!;4RPhoZoAoS>|>pOPq}jhY%Q#ZF|%4_iwKgO4P0`MKQcA* zdiM=qLUxD$WbCi@8z7cZC9n*?5*Z$}vI$3fVKk1qJ^R8Y+IEU@y6|Jf4CCOTHwTse zDM7jzR$Y@%R&Z+5#qg91_!FeU-Bdnp;w^n#6u>JZXP30T68Unv$6awru{`?(o3&{V?1Y545px43RyCKdvMyM`Fdj7%eG)<|>uKc>)t9G@E+ z$9^WO)z(SIwvJYWf0-}rUC;U=J8Bm!96=a$26>OrK*g3CVAkV6K3j2#$nmsRm7WEN zz)vN5=o7wNK@_VsOf4_F-@ZItZ1fA|xJ1=$YaP*!m7cwN$Ds9oa9pCd8)vCJ^)g*u zL8@3^J-W|p6i=RmOX*Ak)M#UAb@DNh?c2D=sTVS+@4$}~2X4>|BM9r%ExpZIEKG5i@L8fJ50x>_p52e%cw#dq6G7O68r3 zwteQ_c^|Vmx}h1T`>4Y{o;I%BSCh}NTN*>Tb(7`m5A8|Oh&r{%Ds_Q`z`6~9Ex*QkL-oB1q`L%d3gGDUaR`BUwU>$Hrgn5;cMQYa0bk1RE#{# zWfrg|`b4xmo=*kebeu*$lmm8%S`_k#Y4ot#NagnJi>ErWJk_KwP}!}=?9$xknI zV@!cNDg-ZdtTs2}2jLO`e%ru^y}vHa7#?NW%SgVXO6H?)OLd}23U-9`D1RzS`3`}F zg`4rP-4z=d+)Bq9;Lk9tVUUr8}G1#mSQdB zF1Ut{xG}jGvjx6zudfP}p1U!T>r-+Y;lN!mG4;NiXTSAZz9qJ39`gcd-&4Lq?i)Lv zhMSFt-DN=N!;O0FG;+Z9 zUY+I%MxArDd*?)ci3n+$7-6Yz(4C?M+f%B}SVeYrVHveJ%5|(jXoumBh0hlC?q!iV zh+&{RDOPG4a1{sl8OMSBM;LDPI3Y{68JCIbL?)N{aP@53mg$V%rrIfWn4A{{E?sMm zeA!f6J%iLLXwRz-by9Sj;$@&B{7?dcdH}NcF1#&S!6fE%U@L;X+UqKe|o zye(Dkc-W=QOSJ@JD>xn8e2iIzt_L0z+{~>`oTHk}wGF5gj%uAmPd-JeONy6U1NuxQmUoY>m?0x6$8A9gg5J z4WR*3ap4^ ztuO+9My%Wp`g``x?k%Gs8E8CcAG8e$P2)(}Z4`C`La_z=fS!jO%WIFc^^mywM4Bc_ z+jmd$A*5uQt+n&@1Bsb*lY|LiVrh4z1oo2yfkI^M z$nT#+Y9eadkuzTZda|}80E37nv2PM*&_s8FD7f~k5wa_=A8ehc#*Jzi(b;|qCG~cg zBzuL6kpfV?Pv65K1jdz~uSoPaF6fGL_fs4YN*>g}Nm+#&g7CZ$|B~AaF_;_Z%Asu zj1P8P1Lge~(+{gHK4ccDQR?W!F8On@VOtx74J`*G9`=isIlYR$4vcBYRJ zw?I7+@OAoJD41VCxrUFg$ZbENvzq`3Vr?b2uw~Xa=~m-^E_dhR$`I|g^7A6cqqhK; z)$;8aUIby-kiIxqU5D%cI_juO6>6phGbV|?06yBc?u-gH4LXqPi6- z3r6q^lV(1ci`qd?8)%Xnb_`V96p>1Lt=QC4a&G?#oQ`FIOqBccUo#XS0BFuc=g6XnwgB1}Q}1{v5w zpd2JdbqOL|%$&HMS%OYv+XA!mmk`1VL(WfF!(EmszU~_z_vj(2dF50;W_mkVP%)@R z1PQdXW7oXvQ#X2{|JgBU#uW$NSgO>%Zu49yeihO_7^^t+L;9AdV_@%Uf;Q$}$Rey% zVbk~8v+LTS$D;P0#7{NqBE?)VL>ZQSz++YH;^UEI7R7G3H${MXMW`42_ z#ZZPxcV??_(3Ihn$A!_gG|$4*1{J%eaqj1sEm_d6`l-8H_J9UVAyHd9)>LjOp($8# zlw`xD_h5#P_tUE+r|s&YToHJ}+bFee2zOjFc&mji_oIG=vx?0Xi2>2>2xldG=cA$s zXO_F?qqCRkH=Yjx>>c|ma$#w09B?-P#T%9ABW^3R8M1g+Vj{P-CHsP!aoAQJirPoAWAEptaw$Q({O8T z?#G~LKrgB-8yxE7Qk%3zh|vNmn~RC)zcZI;WoqO!(b)Ji*n3SmCC`&S3`Q&$1gTD zRVhe`?Kxt0+4P;dv@V6fm^{utZ* z=F|94B_fuPRoYzz2uABqjM@$qEeGP}N4yMI*#6N*^NjuYNij{5OigA1_~KdH^4nNm z{e)1qvxTTovzxK}x=>I^P}9q0J62#M?vcpiFYnEfR-Z4Rdq**r;^9k(pfY@wBG~c1 z)Cj@Ze)PkFxGS3!v?X7Hy!oCck>1GUR}*p~?RyXxF$#tkeRKfI2n?eNjNMO+4&37} z#4k#FC7<`gIU#VMqPJ2of%nii?1WkiLabmsjc{Gqw zH-+qIk~0C~bUGNy_8AYH-b=)J$FxgS;@uhjxYDF}znc25NESs{@xZcn5U2(-yH3^% zo@64>z?vRJ$D(A3-_rRXArnUBD()=C{3`dsS)oI>IP?^UlfHt^lGN@2$sQYDgcQ4AuMiVsya> z^2#klN-?W*bpr*X+xP)+VMG~lEsY|#xC(5T!7P!NT-w=i1~<9dH=IAW1Tl}^;P@+u z_J~)(3_=aY2Q%V`HsohUWJ-rp1TY{HQ;DP%AtW!46zeSk(kzt0R4%6hL)ER6_UQ?ieB5%sW|*^V)H zAuAT@LU{u*<3LTl_I#mK53A)Y#QRb)*qAje@{uvRAw>md*Bl41Ypzk4EXCUvKRkm} z#W`{EtTxOO?An3 zPyZ>%@udf*iP9;MX!|m-A0cCoK=HcB+d8 zb!7qIerz;J8cX@940%Of;39nlVnW1*;l7j1HBI+Qil~EynLC<}z$?ktC z@w9N95VQ^ZQOC@&C7M*DmIu}Ye(cz8S`|bqJU1O+PfWjGCod_YXNNKr+%8C(g6PNc zB^=T3fTbD{cuwrJa=|mQF1;$Nxg(^-pUs~Qum#_lV$gxxkve$+p-)fbO6sb}xvDoT z548%l8Xw7qg>LsJnJ7cbdgQvyf@?s9Rn;Fg(n&LaR)5w5GtxXBa2qh2$seNKxNlfj z&B#-);Qnj}Zlsgre^df0aYKKz{c0+7BMoBvlm8Xy59-axHyZQR5Cc;IT!GZ-@5mCr zE4kxu#D!)76(7E2MrMw5j6>9;n_+$ejm!1b=ZWqdslPK#U==xac`75GKszxeX-CR-jSFb{rt0RX(x%7@2bJ7sc zOOnfjcb6=HPsfU!Fnw4N6U??A&*U3ri=5OTT_5LE7+B*1POyvn9U_q6mUQrFz`9aM ziPe-x8=ZEPVvgo8C66Hd+S^NARf*Z(KU>f7D?qKvLa)yja5{sn6$(RNq{v5BjWp^In13RUUA=}1wi zgfKL8d8>iy!=EQX!W({q#1$v43_6wPYTvcjmubv#wl|R}1uO9*+d^Uoi3O1Sv*k)rs%AzSGvA3Y%&;y|zeM7NcNG~1Z_ zgYi!ps3VqD_9O(UNurD*^N|3~X$XiLTrg6B&ox39xE1rkM{IglB#-b(3f1@Uro-{K zq18CLb{MYFM?2V}XJ{DHbmi6$m@CI4m2UAz3-AXS&b)<1lTA6U5l1^BbsjTq1>gB} zov4bag7X=QtEkt$8p!Z};~YeH17YY9D67&jq**t+N4@hS@Zr1Wl~7H`0akzXK|VzA zZEk#=&6=G(JX-yL)r1I4={ZxzeKkt8hnUZn5Web`JJoWg`~5M&z0KwG`H9FSW>Vew zk&MKY@-F!~#rZ9)_A^SRM4jr%X^W$1r1F=O59U_L9z!XsMH25osMw$e==aSIZ(Upx zted9FuO9XiK6VioKKi)OQb85%5<$)FBr3%@C9|L??u+p0QI`eA-DzrC%~|9tY#n7} zps8Cc8qTp<7%a3MumnG+pNA};N~)?RIPdK?E0nL)(pg*k<7gfnWqe5sHX=$zS5An> z$zoR2%A3gQo&N%!v~&91VzJKVi^-lOd`AHNd=^66$G99i&+;QEpdiJ&+MgdMrmKs+ z1DUTQigW6JaR>_*Z+JpqsIn{ZdmuWK3chp_-=}3Ev>3D}9HdkZJH*EO}My zmq-C^y&X~hl{TB_qALPU%oQxRBk*X|Ar<7T(l!_XrKNWb?xMw9$Fi16UMAv^#aBbP z7QbR1I(nSqE>5N-0m505qCHbT<&*&jUpC&t{PNXt^wuIay^9UJED&h5ldEwq(i;)1 zbCBZC^Z_&_BFlQPQ&cpA$BO6QYVWe8J6)gAO^||sIp>K;%LBA>_a!EkxUZ9>9yq}eK znnfaQ0pd}hyJVGSiL`{T^se{Ye&(c}G&X0!_yedr6QNJxLx#-#@rRm*kT&YaU_-=% zn!3AoowGyKk->nW)Tz}y$seo*Jf=6NYBq;<~2l;FF7JIFp87!x1Mnp}$S6qoo}+jx#Ycb)TJo zJ-is#((w-UI~S@W?o}uJ#LX<$>$w^19=pkwE`~YTth8{Oo7AiH<5n?x?DjXh~m?`IV!9pQwv;6BuEbayK9BsbN^9D!ifCTxrhxOppi=Na698-oHHGy}Shy ztRV_01`_}Q9j}1=8A$MN@d+@m@2?#k-7EnPZy^XL+DFz~tQgO2a{8tiBCsVTnrZXa zo0%&H;}|2B3{&dI&s12Uv7wUL{1bM|8D3v`l{1Va4h@OZ%s%y}=a@M(){1SfS7s+acWBi^zZp^sa!T+L(8nswzFDds58aTy7gB2R8A zQXVNQyX>C&UV1Ib1zrGJ?hhJy}g$ zSb`lBjP98U0$_`UjCb&0im9YB12OCFZj>tIEW>RPuJ&D z7^?4L)5E7`rFT%`#fy{WRr?Ghq~z~?spkXhYt3}97n}m!SEO3WLj)CwT|5S~kzP+# z?52&GMNP0H1cT-9F2PwgBwg&kVu6t-jVmDO@-8qO%>xQ(&Cr~Ksm^G`K{wq>ze(fu z>FE#oi~0!K{>)1pdN|=@0*hfCbg(5mW5Vuyvsc^B`od)Bo@YF*6Kr1X6eYP(jL@(<(U{%+ zZk(hClc?ihPNuV@Mz>x@QlDA4QMVmMEK?+}%5eW!6f@=Wri6g<+f^o_ioQ-RTAD+Q zFxWmV9EWIi85j~0QZ)7TCwg1dFg3F{CkFFg@b`_u3NQvbJM{H(%cd46I*P{#X#TT$ zTU%~Wn|k0Nv%9Dh>zm5b&~b++9;F-~O*$YpRpwwj{nZ6-AFK8U8Zhu*JnM#1%k79g zt=$W@)oafEZ8s01sc3}8T6M}>g1DVZ9Q z3Ia_Ay0noy4`*eTloGwJtJO^}J_#kxyH1D=z&Jy9v{uUTlnA?3c<)@S3<*t*VZA@lQ;yWA!+|76k`mH?HJtkt%8_h4c&_bf{F$Fe6 z!O4o_>@awg%Anj!mSYOhlyb|WNx@uePI=IYMmdvpZBf-AZ z3D|GQ{wpJeCMHsY`E>%qictPZl=cy|;hX|yQ)2df4Mb0w*WkReQaOcI;IU%RDM!%< z+=fHN8QFniYwfx*Mz;Aw`+!mkw)p`200-a(fgR30Eq?ot#b+D4HG(xsA54PQ!-YfKroEhjH_mdE>eiJ4Hbvy=v zal$*ggGS-oK6APwlK#N1yNNEb^NB~ys$91hTRY481i6_Gdc{&iPP@7O*oBbKG`!7)uaWD*fN^`En5;68YhQiuKDk(~ z*e@@>m_=tbzFcRsfTh|f)Iq?Q_j?8B@YfZ<%rW&)QF3FId0s(D3Vg#+6&XQ5voTg} zSyIbG+QiBfG=axLUbkWSGiJ)Wo3WQRN0nhR$O5@xBgqPLc(2@{#1*<{HehjOh?te{ z%A6(vx0)61DsAoyhc|F1o@3{xkpP#+R=Wk76e^}6>xRPg?;TIUSl=sDH*}mlcxy>F zbUxcSd@r=T#KhcLqglCJ5CO|;kYfDI`*~yL%p%El|FNJ@)hVV+MruaA||*jDs}H|{uYJqnIt@E&w^ z+=hjw_|am7Nt-7DvYU)&<1I#42_JBwj7?rEnZf7_v&*QQX2l6-`u|Wf&VF0=|f981NkVpD4 zVbBAGf3OSbx>3Nrf(&fY4iE{N9UPu@d($tgbDzZKl&hu(va#u3}| zZF5b7vI{3$PvY#m7@m7DP9N_er&CuL)9@kt_wrirwe$xMsJo7MbG)elF?~Tl5uTn8 zopN566Am3|?O^_wKZ`ec_7sk1r@kc()JdN)e}Vt>4R@1Fa{SEF`iL`21Jgc;gQ>2- zDP98B1rKA>uDvHCxk(Twva9)03c=bNC%qUGKTsHWTBxGqgT~YWaVT|ZU;$Y$QEZj5 zY-}#qF1E20+K(DW(v9~>jQH139#56P69-$fR#L{k#!#B8K5NGVX(0r{7VC>9!Upr3=)nxOl zRrn(F6Q@p#FRmU2R|vN1`6}~h^}@k>9(<@^;v-*5nK6c7bQuG=lGBFfhQ=_umSl>N z)jl&F&>tMVI|wiu(X-RbW97s=XeI?Q8_3pb{2@A8c;=jq159J#Vf?j+ru^%!#50$+ zV3IuD>Dif0q_N>@EOXifJqMevd~SC9N~e|cVe>HS&M}{Z_GLKDDW(d8ZmyNsCx7LU z{T31|F6U*F#oK%6UY^7n7ivwkX5jMWdVWY8k1K$v7&3hEyM=32uAqVuB@2`atKm`I z#r@_4JvIum7~0c-1)6%Zg+`8vlfv4H{2&enS1DTX_gYVeN>Ib!>Pi}z(si}J2-bDv z)2J%4EeSRMN)|vlX=}^R_XsUnw5MVckK`q2q_+B60@UJG_SM@{lml(vuJYtPO39%&bj#NR*XCY1m2lcwxA0jE&6< z0i3_1cxhh4ef5c6S*;y7|LEc&ak97O{1xxZX{~PsaNu+_Ie!WIqs7(I z%-Vv7#MIHzmXnUo#l?lzg^AY2-h_^UgM)+aS1-w*qKpjxLucz`Z~2SL$dK+ey!S1% z*ny6LmVxd!?VE=Gf0cTp{kuvwHa7ne^k%~!CjJt~NKem9_s9KjNhbD2Mwb7f|C<4? zv`lm+bVmA)`ZUgF02fjcqCfrkH-|Hl5d8w+bhOvEb}+WFxB3b+B}#voSJev^O%QeZ3*!{XJH1M)7k0GR^Qc`Dv_oJ{PT%&fGG?7wJ#_5Y!bt-YDGe7$-wxhDt{yTgUbY9 z{YMZtuiUE}XD??)vjW*J5{#Xsr)pZ@=5Gjub2eXiqW{0;w`{Ll73 zi2w5s^cKx-=HO^%Nc79|j`{|c02)IZCu>I@lGiEm$8Z2FEq}MMaIpW`YGd$b)$ewC z5;|V)KPM#T8`ocV|B>~p`F{t^zr}GYnL1e+SnHcvI?y@(uF~3Cn>Zz!v8S40_L1Ir zg`!v~Db`#S0SJoxGZkx!$A@PUWzjpdL}--J1y2kl2pi#wNEh?I9T<-n01Uo-PfRI< z6C(eVBwraX|4HF2=cH-)QRgiGvGo*jjAPGd^vvfgH=&IxAaDhS9!q**<>XFc-!i!4 zou0kzej?3qlz#^r+RA62pYRvK_m|;4fpp5dEq(Q@Q#TZmzy z%F8ZiZ)*&cG|yV+1|7WloK>0p*yyPd#dER)J{Eg+or7P@zKiet^9eUfl+bDP)@G$u z4abFLOV4{GRL>|dv8ThuBwpO5$6NCIvqy)Fc1TClsdEctBG$rZDf!BqV7T&YPDd7t zz^231_KcB|B4Y#C2-hZ8mZG>O@?9TAmXLBUPfoXmt|coty-oKZpl466e*6QWP|(Vd8#2lFe#EX0w3R&Fi?LbaboU!+!SjpYrR4G1{BcGR=p zAFk6fqlwewL@4mDZO(lehI}_Zvh&S;g4AS{nWMpNmTdiAy=K|s^aroc41p4k&t->G z0+*xO`oO&80o)A8^4asZQ<<>p#Sz=E30>V46Q1P}=XzO1ZmM$_t=BOUg^+FJ?8s9k@O^u?3zk%k(|Lt)E)^r#2TS|Ws$U`o6A z5lbB>0t5KmDIL##w$b!a?BU7Yc zpXAHxnPbbty9fK@!!wsbS<8^Hhyooa^020DZ$hjJ&5Wi7dGB@;>8MfjWv@t&vjWh~ z(vJSspfDZdgRI?Sas=}i%SuPp1-Xb$R30$S@5W_GEv?fnW%j{>7JWaf_Wdx$%iNO&>3M8K>lHD< z0MkhF#5I)L4+I3RW0|0ktbNweN)GTl1YytL2nP$->LJ9$s`^4xD8tcOZx7cfGC@0r z$#$k|MijtAW_#h(#$1H?QB1ewTMFj)Ef1f^@DBrx_Oq+Bk+f6eL2Q`b14gnX08~dnY@uLC`3YgmJ2=vk-2I;AN3ZooGD=ZPztXB7U<5ffi`H!726VQP=8#iFge7T3U8)R+h^pXaA zV_S>Lb>@MoWtSA4yeIBF$d{nAFk1E)MCb!J3}~=$k1dOjaGhz}FR1*MtdN+gB4P0* z3W@cj2%g-OmXA@FOvOWLc_=l7S}+HB0RUcO33qPd(7cmgvDyY5dhsOv<{C@hpXv{5 z%Jc$M_8PkT9UPmIe9L>}ALHm)Jsa=KdMWAx;k|qRu0&p9wGA3=D;sfwO6A? zLNU&fUBO7RkP}#lE7JNVa(!%rs32bCG-p~W@M<#!T=f3AhO7*n0q=o(O=C|{zfHLL zu12=XTdep)W;09yK@d44M%(IxTd9BA5O&$pVsmLeQB*2*^0_%0ZKw%*B|L=vsnwR5 zdnqm{0)PQw2rK7lHo2QhEHzmOdhGL{$mxh&*}&IB`~p^df;`Lqu;VQ{HEA?2C-bA5 zn1G%s5r`w3vO*lKaO{@2P#y_{)?6EL7{2y6?i0)m@o_0Z=wifM;ZHxeZIf6QvV-_E zv6l`sG+%tn)y`Z5jU#c5CWs9ZN;*X`P={t4q`jn|>{uy{pOX`(byD zEruFL^ordy05ut95F<_nustKR0=$(kHZvmcHb2cV3|>l#-a!_%gce74Y)oBh>j4So zslgcaxMw#jlMz`=sF>FARt&`Sw-&B=0O5~}p*%$Jn@w0%&U4Y1gy`czUZm(9ZswC9 zdu%Ynv%~kz{1f~{PVX$DkeT61%AA2VtoV7%Ktk_yd!4rwZunzN$Y2U;mzeEo zWa@2;ws^hhvZ=uGrE^$E28||y84u(wd|(majmZWsI$Ucy7GPg`sayHl+0lV#xA|!; zj>JDDx$Np;48;*w2g5Z?G4l5PTy+;j4^EkV z+CdZknSaZBZzZ{Q;-tTFg~fI`VrF08aJ4-_dq1RegAU32?C8+$_b9vk{>BZIqhf^A z`$@>o3R;DV+J=>qh`z1z#_|hI4I7``xyNm;NyCUqGjNyn66l1^c&vm`HA~JE`G;xt z{Z4MBo#`$kQHda(AVTKQ-5*)%pCY6?>#W+_K`kPN2-!CDBH`3f2cC~vuY2+N5vL1d zViXb)!ZIPV*5GF6?=qnVDSon=(ci!pi$pufD6;Xw8MUIzo^yMSL^_BxwuR z`;E@{Z8>@KZTQPuNS>Bd?%czYdoE8`H5G?4bnu34*$8XB`#UdsG&{YRv*(#-YCpgj z1%115@v#sDCgR&u?9~g@;=Oh03Dri3mdzof-pLScJ+lVeB(~y{XcwGSr)<+TAjpz# zB>^6zq&7yOiFpsWXRL!|_rCTC9cEz2RjZb9XW_1eYi%56*+orqxl-@->m{Qpru`fX ztG^ufaXZ7D#b^*lE{8v3ciSoCoyqu_hHx2@O(dysr?D&<<4^XTuK?a2If&zG)4ADc z5{%S326l=(EOXi0R$iiEYLL&}0r#fH&ov(3`Gsr$3~BfD*z0MbvOU7*S9YUJ_RsM~ zXdocr*Jr~2z5j!Idno~MeB1l}@mfMd+hLIt$?L3K?@9K~T>Ko2lRppMYSD;(!0K@l z`35AVU*q$;t#Mr+04`^!1zWe;iDSxp2q{jF<|fWX^t6_STXidVL4|FvVyEfv=Iz>7 z6uLL1sS8UFh1bUChj5s%hyEv7xDV~h+WrdeVI>DUT8js^YcSw-G2&EKvYyek_EvDd zXNe1lCQG4}R|7mbPh~cx@i51tq+!`P1rDDK7EG_*TSOTfQx8dW$9G!uCKnK8h&K_1 zF8t%A4N6ulTdlvXl`bZ3gU)>~?HEODnj=iJg8xS7RMh_2OL2)es_>e|YEnlr#M^ab zQ1jMxgeJjpRFA@Un7+a}z#Mg7U@(EjG~;Fzhp&qp_5lTh3h}Xig#+u6@32sr_QLw? zZd>mTHgias_g=Qnp^?se<-I_qG{(4s#DpTYo6x}iZeqG1TRPEekbV7?zqNL=&Y#$ca(aJ9WkL_bPdNAQ4Mi^%C-U5Us^9UKgVXA+PU zh;&JqHJu@dhpqY-J;WdoQlpje_wEX#)iR~W#V(!b4g}}7r=yEj`o)|co|b`kYs*9U zMD;uJmv;EmL+^}ug8M=Hs2lNzo&!C}6-W!Tp)xOts`%pNM8#zF^D{-bC={=pd|&EY zf!Q=~|9~lMewa0ukEIQC!JoviSppP~fd{&e>V{4w%E6B76D7?V%|rBoVbd06*jDnJ zzh!3eygKE%u(gdzgnE+y^aU+-VohU$QYN*hb&n@SGwLW$V_sFXx5)ba_E4TI3}18p z1WJ}gMg3G?CoO>q3QjIM0Xz*I?IJli=wxuuaw`p zIgNS`PLl1ou=$Chq1CC8(fQ(61ub2TK81b8mPECuH zh#?vcCGk;}w`^5m)H$`feSZIwtPOO{a4Pl4wD$u^Nb!B-1R_{J`z_U3m5~Xa?26evzj+j zRJAE=p8J)ErycAw{yVr3?CkBEo|xErD8xsbfg4K8M)T$r_uG}o>n#&7>^t$0ODZO+EXqpTpn_5!!WeA*+dGMIecH@< zSM86Y;>3hu_8FJEmidoZqsV5Ip?;(%MB5z!3a0cj+R;=&^cX}l>`foSGno*um^xa1 zOyq;2Fl_`Jfhx4pjf`R=V#p9YsU?>zRCinh@x*%0aQo($L_sdBrJ{>)J*O#8C#1kU zCvFIEY{l%%!<=@;WxULN@ZLkofSWv?2gWu&vRLxMbH?~iJn%(-$BK{5bG4Jip)s;N zS9^f)%f$og+klkWT?NSk0|E6xz6}U42pZ7;PQZU1mA{qW>G=QT`Wp$*Tdw$DMd`Kr z&kXm!C*1!b{qL`|e`n3VrQH8jB3`Ti#Q7fy`2Ux3Z$}b;m95w6KSBRWzyEK?{KWIpUHMOxzo+B>Z=AP;{J)C)zv28>dj9`L`fsO){|nOJ)Aj#1&VT!->tAsGO5gwg zi*o-jD1W8%|8JDHg#Nz@-Rr#gr z|3vxwD*Lwa`m1zs{P#BOpPYYR4&GMbzsf1k|5%ehN`XVXks-ZatYAPuK74O?{~z5f BCKCVv literal 0 HcmV?d00001