From bef8d413d66db42ca6ae47da99d38dba3568e7bb Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Thu, 21 Jan 2016 14:43:44 +0100 Subject: [PATCH] jungfrau done but not merged --- .../commonFiles/communication_funcs.c | 26 ++- .../jungfrauDetectorServer/firmware_funcs.c | 74 ++++--- .../jungfrauDetectorServer/firmware_funcs.h | 15 ++ .../jungfrauDetectorServerTest | Bin 136208 -> 125656 bytes .../jungfrauDetectorServer/mcb_funcs.c | 30 ++- .../jungfrauDetectorServer/mcb_funcs.h | 5 +- .../jungfrauDetectorServer/registers_m.h | 5 +- .../jungfrauDetectorServer/server.c | 4 +- .../jungfrauDetectorServer/server_funcs.c | 205 ++++++++++-------- .../jungfrauDetectorServer/server_funcs.h | 2 + .../jungfrauDetectorServer/trimming_funcs.c | 20 +- .../slsDetector/slsDetector.cpp | 133 +++++++----- .../slsDetectorServer_defs.h | 8 +- 13 files changed, 330 insertions(+), 197 deletions(-) diff --git a/slsDetectorSoftware/commonFiles/communication_funcs.c b/slsDetectorSoftware/commonFiles/communication_funcs.c index 40005b44e..1e7a72d39 100755 --- a/slsDetectorSoftware/commonFiles/communication_funcs.c +++ b/slsDetectorSoftware/commonFiles/communication_funcs.c @@ -421,9 +421,11 @@ int sendModule(int file_des, sls_detector_module *myMod) { ts+=sendData(file_des,&(myMod->nadc),sizeof(myMod->nadc),INT32); ts+=sendData(file_des,&(myMod->reg),sizeof(myMod->reg),INT32); ts+=sendData(file_des,myMod->dacs,sizeof(myMod->ndac),OTHER); +#ifndef JUNGFRAU_DHANYA ts+=sendData(file_des,myMod->adcs,sizeof(myMod->nadc),OTHER); ts+=sendData(file_des,myMod->chipregs,sizeof(myMod->nchip),OTHER); ts+=sendData(file_des,myMod->chanregs,sizeof(myMod->nchan),OTHER); +#endif ts+=sendData(file_des,&(myMod->gain), sizeof(myMod->gain),OTHER); ts+=sendData(file_des,&(myMod->offset), sizeof(myMod->offset),OTHER); @@ -436,6 +438,8 @@ int sendModule(int file_des, sls_detector_module *myMod) { for (idac=0; idac< nDacs; idac++) printf("dac %d is %d\n",idac,(int)myMod->dacs[idac]); #endif + +#ifndef JUNGFRAU_DHANYA ts+= sendData(file_des,myMod->adcs,sizeof(dacs_t)*nAdcs,INT32); #ifdef VERBOSE printf("adcs %d of size %d sent\n",myMod->module, ts); @@ -448,6 +452,8 @@ int sendModule(int file_des, sls_detector_module *myMod) { #ifdef VERBOSE printf("chans %d of size %d sent - %d\n",myMod->module, ts, myMod->nchan); #endif +#endif + #ifdef VERBOSE printf("module %d of size %d sent register %x\n",myMod->module, ts, myMod->reg); #endif @@ -508,12 +514,10 @@ int receiveChip(int file_des, sls_detector_chip* myChip) { } int receiveModule(int file_des, sls_detector_module* myMod) { - - + int ts=0; dacs_t *dacptr=myMod->dacs; dacs_t *adcptr=myMod->adcs; int *chipptr=myMod->chipregs, *chanptr=myMod->chanregs; - int ts=0; int nChips, nchipold=myMod->nchip, nchipdiff; int nChans, nchanold=myMod->nchan, nchandiff; int nDacs, ndold=myMod->ndac, ndacdiff; @@ -530,17 +534,19 @@ int receiveModule(int file_des, sls_detector_module* myMod) { ts+=receiveData(file_des,&(myMod->nadc),sizeof(myMod->nadc),INT32); ts+=receiveData(file_des,&(myMod->reg),sizeof(myMod->reg),INT32); ts+=receiveData(file_des,myMod->dacs,sizeof(myMod->ndac),INT32); +#ifndef JUNGFRAU_DHANYA ts+=receiveData(file_des,myMod->adcs,sizeof(myMod->nadc),INT32); ts+=receiveData(file_des,myMod->chipregs,sizeof(myMod->nchip),INT32); ts+=receiveData(file_des,myMod->chanregs,sizeof(myMod->nchan),INT32); +#endif ts+=receiveData(file_des,&(myMod->gain), sizeof(myMod->gain),OTHER); ts+=receiveData(file_des,&(myMod->offset), sizeof(myMod->offset),OTHER); -printf(RED,"ts:%d\n",ts); + myMod->dacs=dacptr; myMod->adcs=adcptr; myMod->chipregs=chipptr; myMod->chanregs=chanptr; - + nChips=myMod->nchip; nchipdiff=nChips-nchipold; if (nchipold!=nChips) { @@ -585,6 +591,7 @@ printf(RED,"ts:%d\n",ts); ts+=receiveData(file_des,myMod->dacs, sizeof(dacs_t)*nDacs,INT32); #ifdef VERBOSE printf("dacs received\n"); + int id; for (id=0; iddacs[id]); @@ -599,9 +606,10 @@ printf(RED,"ts:%d\n",ts); return FAIL; } +#ifndef JUNGFRAU_DHANYA if (nadcdiff<=0) { ts+=receiveData(file_des,myMod->adcs, sizeof(dacs_t)*nAdcs,INT32); -#ifdef VERBOSE +#ifdef VERBOSE printf("adcs received\n"); #endif } else { @@ -615,7 +623,7 @@ printf(RED,"ts:%d\n",ts); if (nchipdiff<=0) { ts+=receiveData(file_des,myMod->chipregs, sizeof(int)*nChips,INT32); -#ifdef VERBOSE +#ifdef VERBOSE printf("chips received\n"); #endif } else { @@ -629,7 +637,7 @@ printf(RED,"ts:%d\n",ts); if (nchandiff<=0) { ts+=receiveData(file_des,myMod->chanregs, sizeof(int)*nChans,INT32); -#ifdef VERBOSE +#ifdef VERBOSE printf("chans received\n"); #endif } else { @@ -640,8 +648,10 @@ printf(RED,"ts:%d\n",ts); free(chanptr); return FAIL; } +#endif #ifdef VERBOSE printf("received module %d of size %d register %x\n",myMod->module,ts,myMod->reg); #endif + return ts; } diff --git a/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c b/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c index ba6e284d2..37220002e 100755 --- a/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c +++ b/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c @@ -64,7 +64,11 @@ struct timeval tss,tse,tsss; //for timing //for memory mapping +#ifdef JUNGFRAU_DHANYA +u_int32_t CSP0BASE; +#else u_int64_t CSP0BASE; +#endif FILE *debugfp, *datafp; @@ -155,8 +159,8 @@ int mapCSP0(void) { return FAIL; } #endif - printf("CSPObase is 0x%x \n",CSP0BASE); - printf("CSPOBASE=from %08x to %x\n",CSP0BASE,CSP0BASE+MEM_SIZE); + printf("CSPObase is 0x%08x \n",CSP0BASE); + printf("CSPOBASE=from %08x to %08x\n",CSP0BASE,CSP0BASE+MEM_SIZE); u_int32_t address; address = FIFO_DATA_REG;//_OFF; @@ -383,7 +387,6 @@ u_int32_t setPllReconfigReg(u_int32_t reg, u_int32_t val, int trig) { u_int32_t getPllReconfigReg(u_int32_t reg, int trig) { - int i; u_int32_t val=reg<65535 || st<-65535) return clkPhase[0]; @@ -1128,15 +1127,20 @@ u_int32_t testFpga(void) { // for fpga test u_int32_t testRAM(void) { int result=OK; +#ifdef JUNGFRAU_DHANYA + cprintf(RED,"TestRAM not implemented for Jungfrau\n"); +#else int i=0; allocateRAM(); // while(i<100000) { memcpy(ram_values, values, dataBytes); printf ("Testing RAM:\t%d: copied fifo %x to memory %x size %d\n",i++, (unsigned int)(values), (unsigned int)(ram_values), dataBytes); // } +#endif return result; } + int getNModBoard() { #ifdef JUNGFRAU_DHANYA return 1; @@ -1341,11 +1345,15 @@ int64_t getFramesFromStart(){ ROI *setROI(int nroi,ROI* arg,int *retvalsize, int *ret) { +#ifdef JUNGFRAU_DHANYA + cprintf(RED,"ROI Not implemented for Jungfrau yet\n"); + return NULL; +#else + ROI retval[MAX_ROIS]; int i, ich; + adcDisableMask=0xfffffffff; /**has one f too many?, dhanya*/ - adcDisableMask=0xfffffffff; - printf("Setting ROI\n"); if (nroi>=0) { if (nroi==0) { @@ -1398,10 +1406,14 @@ ROI *setROI(int nroi,ROI* arg,int *retvalsize, int *ret) { } getDynamicRange(); return retval; +#endif } int loadImage(int index, short int ImageVals[]){ +#ifdef JUNGFRAU_DHANYA + cprintf(RED,"loadImage Not implemented for Jungfrau yet\n"); //compiler warnings on 1st argument of memcpy(ptr,ImageVals ,dataBytes); +#else u_int32_t address; switch (index) { case DARK_IMAGE : @@ -1421,6 +1433,7 @@ int loadImage(int index, short int ImageVals[]){ memcpy(ptr,ImageVals ,dataBytes); #ifdef VERBOSE printf("\nLoaded x%08x address with image of index %d\n",(unsigned int)(ptr),index); +#endif #endif return OK; } @@ -1694,7 +1707,7 @@ ip.ip_destip = destip; while (sum>>16) sum = (sum & 0xffff) + (sum >> 16);// Fold 32-bit sum to 16 bits checksum = (~sum)&0xffff; - printf("IP checksum is 0x%x\n",checksum); + printf("IP checksum is 0x%lx\n",checksum); bus_w(DETECTORIP_AREG,sourceip);//detectorip_AReg_c @@ -1718,7 +1731,7 @@ ip.ip_destip = destip; bus_w(CONFIG_REG,conf | GB10_NOT_CPU_BIT); printf("System status register is %08x\n",bus_r(SYSTEM_STATUS_REG)); -return; +return 0; //any value doesnt matter - dhanya /* } */ /* #ifdef DDEBUG */ @@ -2094,7 +2107,7 @@ u_int16_t* fifo_read_event(int ns) int i=0;//, j=0; /* volatile u_int16_t volatile *dum; */ volatile u_int16_t a; - volatile u_int32_t val; + /*volatile u_int32_t val;*/ // volatile u_int32_t volatile *dum; // volatile u_int32_t a; @@ -2337,12 +2350,15 @@ int setDynamicRange(int dr) { int getDynamicRange() { - // dynamicRange=16; +#ifdef JUNGFRAU_DHANYA + dynamicRange=16; + return dynamicRange; +#else nSamples=bus_r(NSAMPLES_REG); getChannels(); dataBytes=nModX*NCHIP*getChannels()*2; return dynamicRange*bus_r(NSAMPLES_REG);//nSamples; - +#endif } int testBus() { @@ -2418,7 +2434,7 @@ int allocateRAM() { //#ifdef VERBOSE - printf("reallocating ram %x, size %d\n",(unsigned int)ram_values, size); + printf("reallocating ram %x, size %d\n",(unsigned int)ram_values, (int)size); //#endif //+2 was added since dma_memcpy would switch the 16 bit values and the mem is 32 bit @@ -2456,7 +2472,7 @@ int writeADC(int addr, int val) { u_int32_t valw,codata,csmask; - int i,cdx,ddx,j; + int i,cdx,ddx; cdx=0; ddx=1; csmask=0xfc; // 1111100 @@ -2503,8 +2519,8 @@ int writeADC(int addr, int val) { int prepareADC(){ printf("Preparing ADC\n"); - u_int32_t valw,codata,csmask; - int i,cdx,ddx,j; + u_int32_t codata,csmask; + int cdx,ddx; cdx=0; ddx=1; csmask=0x7c; // 1111100 @@ -2563,8 +2579,11 @@ int prepareADC(){ bus_w(ADC_OFFSET_REG,0xbbbbbbbb); // bus_w(ADC_INVERSION_REG,0x1f6170c6); - +#ifndef JUNGFRAU_DHANYA return; +#else + return OK; +#endif } @@ -2993,7 +3012,7 @@ int calibratePedestal(int frames){ int a; for (a=0;a<1280; a++){ - unsigned short v = (frame[a] << 8) + (frame[a] >> 8); + //unsigned short v = (frame[a] << 8) + (frame[a] >> 8); // printf("%i: %i %i\n",a, frame[a],v); avg[a] += ((double)frame[a])/(double)frames; //if(frame[a] == 8191) @@ -3020,7 +3039,7 @@ int calibratePedestal(int frames){ - double nf = (double)numberFrames; + //double nf = (double)numberFrames; for(i =0; i < 1280; i++){ adc = i / 256; adcCh = (i - adc * 256) / 32; @@ -3193,7 +3212,6 @@ int setPatternLoop(int level, int *start, int *stop, int *n) { int setPatternWaitAddress(int level, int addr) { - int ret=-1; int reg; switch (level) { @@ -3222,7 +3240,6 @@ int setPatternWaitAddress(int level, int addr) { uint64_t setPatternWaitTime(int level, uint64_t t) { - uint64_t ret=-1; int reglsb; int regmsb; @@ -3256,7 +3273,7 @@ void initDac(int dacnum) { u_int32_t offw,codata; u_int16_t valw; - int iru,i,ddx,csdx,cdx; + int i,ddx,csdx,cdx; @@ -3343,8 +3360,7 @@ int setDac(int dacnum,int dacvalue){ u_int32_t offw,codata; u_int16_t valw; - int iru,i,ddx,csdx,cdx; - int retval; + int i,ddx,csdx,cdx; int dacch=0; diff --git a/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.h b/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.h index 5e80dba22..271edbe06 100755 --- a/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.h +++ b/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.h @@ -69,6 +69,9 @@ int setContinousReadOut(int d); int startReceiver(int d); int setDACRegister(int idac, int val, int imod); +#ifdef JUNGFRAU_DHANYA +int getDacRegister(int dacnum); +#endif int getTemperature(int tempSensor,int imod); int initHighVoltage(int val,int imod); @@ -82,6 +85,9 @@ int getAdcConfigured(); u_int64_t getDetectorNumber(); u_int32_t getFirmwareVersion(); +#ifdef JUNGFRAU_DHANYA +u_int32_t getFirmwareSVNVersion(); +#endif int testFifos(void); u_int32_t testFpga(void); u_int32_t testRAM(void); @@ -144,8 +150,17 @@ int setDynamicRange(int dr); int getDynamicRange(); int getNModBoard(); int setNMod(int n); +#ifdef JUNGFRAU_DHANYA +int getNMod(); +#endif int setStoreInRAM(int b); int allocateRAM(); + +#ifdef JUNGFRAU_DHANYA +int writeADC(int addr, int val); +int prepareADC(); +#endif + int clearRAM(); diff --git a/slsDetectorSoftware/jungfrauDetectorServer/jungfrauDetectorServerTest b/slsDetectorSoftware/jungfrauDetectorServer/jungfrauDetectorServerTest index a9de9d69785a9772c58c87bb2ef2273c05120b20..fb1d9f73e9cf48f53514a6dbcabfee29bd4dcfea 100755 GIT binary patch delta 63624 zcmb?^4SW+t`u}c#HZ3V^OM&zSNK37y6bx7(lnQBitL3EyD}C{VCML6m}MNr6HUb6g`eZuOJHg!!yg)idrBbYT=Onzt3(qyGaY@-TnD|hVINf z^UO2PJTvpmGtW$_cIZ!i7M?L@%=jXPVcH{%V%XUX!|pUO>;VVEaPl|9Ek+(Y#qsr1 zHS9swSUoCv;tRHR!V9(^og;vfcWe= z#?U{c5(`Qri1XIzZ5EV1h0^-s;PNw2entX--T{L49AopjJDRLQDT*S9dF%KxU20?< zpz09a_#E%h#ad)?r<#)&Fyau9N-a8s5(r{0M{ z3Z^+Gp*Gy-%r!IO_;sA=>aLjTbiwy)&GZ~06Zx5%{OomvWX2qZf*7|>hNF`FMm?&~ zgJg&6qKgslWU5@ATt<95#pBKw+V6@)@VGeMgS@%7fJ~!RsImi56%f6%_R3shX_|=< zU(sFEd;#@{R5Fc8rhX8Eb$l(7UGW2Gvkck`wamQMd zz~~v#E2UbIiXgtS)>6wDCZP@EkurYn(AujG^vGI%M*E)n9T|kioxwZW8+C7G@SEEw z+F#4yfOI*4m(T4CcHO&{y5H;ex^jfh3@ePt)kl1gU=>~f1cKOcZG;K!LCoPto{Kgy z;v*TJiQIm!jx*?u(RFc#BqLX+H*m(j;2E7KK^|3~ol*Ibb*)t}7BdvY=1Qg7=xXo` zsR-gZj0wijHx6Rf&m%UJi+tV?Q67M zflR(uXce5`JA(Mln&!EbX8$o${^&JC{u?n!{_FPtePpm4e-UwX-);1NcPst>L=JV^ z&Vk_&^m?F05Ld0S3b9TGAxAg?&YdV;2AJD6ScPkELoVOW5gL%%P@Im`6r^sOu$K|G z?adLIkla)}5Xo^H@`c2`kqENT()hP@z|wR!oT+ot1XWoA}A+&-7ypy!TZ?z;?15yX4f_*@>h$E8d!%vqM9 z2|L>4!;seEunKhs27%*&rI>IfL8$c+O$qsci$t&rhA0MsYs_FURFy;<5^Yf&uY%Qe z0-{b;PBmqGXN-%^^_mn1hdG1ecB?R}qZwg!bfG3?R}2P2OqC|Z)&+HSsYeRhFVnOu z7C^Dw9u?8i?u>A>d)3=&N^u;9VO+f?WqCZNxOh&JlG1|_QhF3>Qfxg@Sx>GphEXxq znb0&7*VxsrNwoC_U~jI`s7c$@ixD>U;u^bX(#n$=p*)#u?50WMZozVW3)dK@Ni(NH z<4ENi6E$hOkhTkHJ^X2Czg0-Pl|kSd6EuM1)4=L9uCb>k&DaO?U>~lrmnN+NX$?p- zY0{kO7&hr#W0EF~$zTK~gKO-qN%Qt&?1Hx+*O;P7Z0^Sh%}7huq^5hcJSE2-nz8la^?~%4*>nZ_}h*9*VIulxys-Nn1CJ5!Mak8qG?Y9qiwM z#2rW+pd=#AHUbom;2H;N(qeNkRpfAuw`a zrZwX{Rxr-nkJ)GMlgebri2dyaX2Cxzz1tfTh!c~L6SI^6by$3}H@`iq=ipa*LusA| z5uV405q70;j$j2!>%3J!`Ph@8Mc4M`uSWH^uk1||Plcf~rxq(jvBG&@qS(YINhyuE zZfS_P&KL?gWd?=*1wA8Q$b2UfL5gwd0(Y%uI;niOKP%0ihCWD3YbJHE6c|hA<(j7h zXUdZ*7QNjt07w-ydP91kNI8m>&&$Q!u0tTS+a60WDF~~OTLpx$r~{I^dGDjh(I@!volSP7qw0}S zKkp1O_B^2~6<%nwYCGC-Mq9mRL3txtZ^kTN=!2@NHyDfs=7auDeKnBN$rRd0Re`*E z7t8<9xobdJnm|L-yzfCn$rA@`KycT94Ug(=Rqmcx;26k``RAgsi@eS2)`Lo~ zyMy$<9+%%K=5SHt8{P) zm_r@hHobQ|&M%5F+0)Xi+_#}a6={@*s;v6ZPz}cply+hh`&79TG#$?vVvV#{Q@Iw} z(Z63!z2(48j=?rbTSGge5$OeH^wi6X#VE; zS!jOUI(4jkV!By(ZN;XRG%p5{1?5eQPOq1wi^ieS;jaOM$4^$RpR5-_mcLiJv>Jj> zn)pjyG6I9<5a>EIe*?zaJ)mp$0!uB;DNAlj*C>fDr_154b;TK?j1E^4HXyz5mxIZH z5&xM{?-txcOpG|9A7|E?S;&`wZWdrgV4e#D{=RHKesgS={nUI$KoHkFLM_!}KR}Rb zKjqew3>sng;|J#WU?-&YbZ zels8JSXs5JD|TM1;!IUwgdU~>{Z86i_`j+>Zi8tJ*pY%>LJ%8Q5`(BZBmT-$6ODlq z5a{%eEM>IK>e=>y487WjOXov7ufccyQcI&XY?+)c<;7StgW=XJL z?coi~jkEn}FZ9rxVE`!fYL+-aOM~)>9=tEkRHO*x0dVTTg4e;RS!>kMvK&Zn%&9xq zP_H?_C97}(J$YimF|_Bsa=th|)&6jjC)eX|qBqGSbz?{W$Y}y_lLTB-9vQT#(3Gzg zfUY1QQ~)}*(JDoE{Wa0wVmpc{yJa%QaWKY_vOv3Lbr>2-pvRPuF8gT(R)qP@jyd@L zF7alqey@Ub3mfF43@xv6`5>>gC`s~qG*D8bFsqtxtyHuSTlPd$oLKU{>r?cn&t=}t znj_6!(4$;Aj4|mX;A})YaH~pMncH&}LQ4x(#uzFzOQhb=dS}(tQw&s^4Ar! zO&-@un?CY(C}51Cx3LiRfkP4ch<3*2xrOdY7?a~mu=6Zo#J{g7gs~#hILXDDZ3X(t z1P7Z+u?#g0PzYk(3cZPNv~*T*cwCbp1@ewXe&(}{;z7M#D!!|Zbnb38F9wlz`qGN z5X2=bcDqb=PtxUX z%U{u2Jgd;(N&W$LIKeAn=?2|f8FcR@kO&TTr5>HDuetjtfO^=ULTN&b6+I4VVZk=g#$J2pW- zwbd-7jMuP0+a3PlN`o~@8mwN;K+RZ)eZ|6;(f+R=li3fGULtSqm8knPji1>NI@1SNy!!(tw~uxPC?dv( z8J!ruv^~(ymgnPq(rl@xtsrV)#BuRX&D^hW{mVFhe9|agbppRJX`=3_Tlq6dgY7B< zdj_p@-4Xj&OQhh1En6>H?G*tHWuA|c?@Ytnd8!)2JA235 zUq)dM#FY3XNPN0I&eH~;o-itOD5h8CT*o9C%k>rYq$}RWs}em~G=d`#p6P zKuXonK8fOtp)2=o9U~4%eNrC@)zY(HsIv-X7^Mi}s}FjqgtTOMCFtQHO9qT?%EnFB zW4MYWPFgvSclWwII9%#vOc(ZQ(m(2c zV-=<@kO#(#E-blK-~od8)iO_=YKreJ?c6KR6-?((oRv}xNA0eR3r?f=lt=MFVJ3Eiae#6OZ2H%pmB z)Oz-#G%Xr5H`b#x&5do>^9M~mZ?;j-)^7Zzv{d^m-EOwMS++{nUTFpQX(m^_WU5jJ zNLQ{(GF1_@%AU|+^6k=I*y{*j>nf|qebD8DZLOwH_q*!A#=3=PTt8x7RFu43OP%OR zt*t}eV{51KG|*0pZ)Yx)i3vQL-j(I}?&&=O`y3x?@kvw6_batB(^@^$c5!GMN|v@a zG2*}akTC0ETvJ;4ClbrQ+P+925q{MJP@>lXbxk|*DgxPlVP+wk$@n6wZw!;Xb`rgaHfEc;d8AKm`N z_Y)enjJED%!t725k~V!2#2dCAHh zQbKili7Is^rL0g=dI_oLmT08T&yIQsU9EqzDTws~SzDteH&$6cI>PX=#t%Ovkcy4g zS-b4BA)ndO22neNXz^4hgCU3+aAaxNb#qndMKq%VjjAYBhA;LdOL9;S18J8$b^p}G zpJ#U}idj<^1^wjeBkrw`lRx&67pp92OL|nS-^Eqyiv!=#sEn|#7!Brjrei^C@;7?(5bqWS`=mRJ4d15P99c_N!TIV3wfj@Sch3d1C$rwm$8yR>l zhF&mBTMUWVv#VTS#9NcOV)8gqgsuu5SA|~g66j3Gz~Wm1rMMt9@_-%S2TJ3y)ZDj1 zLBfbHEmpe$_GPqRuF}}5Rg)D)2Kabq5FZ1}9Bhv5u+Y^xT0}z&W4M;U*hovT(|LV+ zWT+MD4Vgjx-tRZ|`|lSAGrU79(yqlQ4Vheh6-NLtld-q*Q_QN-$_sXQOE+N19(`Dy zSI@-AD`MML`hD2IRbfDofajv*-){=-kf5tD`oaSzFpOR7x|ot4LsJzkU2o_e#D+v{ zyN|hS?xpV8uA$H|%ls>2)lF8$u*G+q1lJl^)Xbema%&{(Z1w{o49=Py z?%nPY*o{%NMT%McvA2>aZ-75`e=^0={jo|Zk7guA{w{-qmrKup4;fNRyZRx&mCAL3 z8eQc+1A~A9&piNZto;E9=>x<8PGySt%mXSn!9yei&62YB1;9uvYFh^0 zdWcjM0qrUUF$m%<4>&>Uy%@P<0I}KF$ULrA>VOk~I1%UotMCls2zK!(hHZb7$9>Fg zH8JAvrLST5Du)U0n0qk3IwsTC0DRR;xf%F6C#BtrFRS#GjIVp7uO9fCA$=L~^`P|C z1z*oeU(^*&O;^}+1gS4TdqXMFt_PbpgEj=wUfOyQaJs*Bkzrz_u=jy>2s*RR8EtN7 zCa07p(nyn1WBw3kqY zFh{U}EX!h2(Q22s=96~I@EYfnwhXPsawBp`ER|)|zCi+2?5NDymsmOj^|+hoI0Bf@r%RTTK6am<(c4K>%%&TDLh4Ii37NkszZvhs#vJnJ>EP z9Fg!##EeJn=NAnb7^}<|szvwn2YKg^_%<^B@*w}uAw4I?b$8-KhStm(Sisb2l}^J| zt)eSd)i%06r1x*RpU<~s+She+;#j;MVsHB$3Ut`UKx~h*?$n?igZ0XIZ&RD1~2`4v0jks z9AP=AUA{zdO@S`HP>~n@Ojc@Qu#1kllg}NAbJj%Eo4A)x8D=rHmd&4+!owGhKoHFf z`PIYVZRq!QR9pH5fa(B*Aa+4ZgHOC#?;q}3b6;fo!*Xx6|MucNXm)$Z7 z6RO;`7;j1Zw|7Jjo~^|E>c_qSTx6mj&Y$yoAm?Br-+#EV@OVhkssO-<9>GP|A}1j4 z;0#?AP{xHaUc#61zZ;$x5K9X>$5Qq>_%Ns}UATN5=B!#cSP54dM$7{`8iZ}@K0Txz zD3zHyJx3@6o?GIW7?i)DPd=Bjx)LJ{(dkbf5W$hC`8{Mja-91g*8$`8>SI~w@}ocz~kK=u$s>jG|Q!+{p7uo?*nqGbW! zG$JK^eOWtUec45)dH1s2q|kIjGZGdIZP?$E)!+uW6W|D9^a4K1I)3;8L=Ti10QAj# zpWpSj4^G*RB@AuY2k;ZfM-V@sKeV9^C|pQuKpKL0bUuH`I^KQ_(Q6V4M=KQX0^GC| zqh%=$>E_cQz7CZv7KVCE!qQQtN7^R(?auBjsnQIT$XH5Nu@&=a!5+cEX}%W&O$SzK2@Ud+FmlO87Xi~l6YnDx&dm|%Na8sBN5m7ETys(`*q zLZ2}|(v;Qk4v5@~w7pVV@_c1r@}^vqGU1QO9iOjEgAJ&yVJR70?p>@J2bM@yU7bYbL{MsFhMT%_B@$$lRic8)v#V zn{*$V$6P8jSmK3GXLHooe^5P;($o0LbW#Xr$!D|m=QZl^+Mv7VbWRlKA5o% zdl*FpeAz!8w>|8ZJU~mXmiX3+4Y~ORFU&#fMie|H&K7r&R2O4!{^+P=g}BS3)TKEM z#HB4GYc!`JF7>9w{j2o<3vtW+#C1#I_l^z_cY1VIVA{$9ae2$W1m|ADmP6s(pY%5q zqjeyTbYceHsapQEUUB_ef}|t_ajp+I_v_q_;GEq1m;Jrp?-oK#M*<3B{=G4#Fu%Yy z;M1>)MUGV+H;d7R;$>&h27{&z$v17oFZU~LNcnHu&;xBKn=AMJ)fAZ_8c{tuHbCs9 zvFQPZSAf`xWwh7%-TmqkBaa+a$Bw}ap^Wq(#-Yw`bBT0vy=27GUF3RiyqnlMM_SYq z0!HqI;j;O)Bc~{({JVK7GdF|2&C6(uIQYM$@7*~veWZ-9{Of!JvP;1I`6AwVr)qXk^}>UT{^!00o3rM0z~sb;>8-jpNLS)V=XX(ra#sGR@k+0q z0-dLp(Pr|lMKnKS&yMefVLs@NR>8LnP7TW#@x$33m!JCG7r>GS zaZB?-{(Sx@t1Y#{UG44+SG(PyW~CG(zZLno|HoS>S2eSALs5DT6Abx4HN)9r6Q=#d> za$yy+k%J(9Y$Ih-CF8CRt;jetesc0_67?!rTx+l?6UOU~r10A&^j9c2HNiYa<|?d0 zHV<7Ia!Ctz~XI<2SONtDv|^h@`twxka2C(Fhp@^Vpx@?Y%~ zGm`3s4RMuBOy>f5PHFcbUl8lWSl$`>hkW5MOz(%c@}7d&ZWHd8bzD7Wt_ny6f_P;X z|9wIHtRDAsw(>?_3rz?gEUa={{(y_D3(FfXwvcO3y{i)GUoEPTE}AMukIibHTkn1V z3q&8}HY{QcvoTK_a7tjnc>!bSj%xPqg}SttpHrA&-;2%U-o5fww3zB+u4Y?Kk>0l6 zS~(>L>6BObQI`rb6U6W;8aj;dqeQ9+ci~KX># z0k1=VNy<6a?42+B)#=dqNi#_hX%mjys;CA*jG8qtiG;Hol+xOnbg7zLs5?V7eVJnY zu=lGhq1(CjD1aainiY=%OjP$c+L}ft)w|Lr=Ab$jfj3M}0mby$nuDH^l|>4m%0n6^ z^_V~2hx7IJg|r4$7+wM`<0V>PN|q`=i^>tiZ)d`l8#%OfV3y+)Z8yo`Id5tJZv+FPL#_WXZ!2_J?r=Y#LuNBk}e( z0>B;|qx8W6H&*}=p67I5-Q{&vISGXqX`ER`)FN)=|1l$O_~U_cSd7HqVYBDJI_I|@ zo$UtO(G^&aeEYBNs;^~$i`&BC|H3UM{9m<&Po0@+zY8dQb-3WQKeUBof^xJi92%6P zu#Nbd5tOq=!(2x{rf3k&XK58Ug)cnP8&5D4Nw0Z~|6j{yMf0L!`H!a$ZFe1Jd@Kb{K3H7ZuR zsX`5O@Z;`_vab#h>Z|ka?*rwQgrQ3@b)eJ5f$(Fs_^T0yxq%V{%b8i1A|_J;ISd43 z0a)wZ@0Hxv+5c577oG-C1aXX1I3ISPo*AgBXBd z$$Olkb#^a`B8a(Y>>+$3h}WjjT8qw+t**HDPUrWPA^3dmt1j+EEeva}dq;)q7D+9y zW(x_hZYNhGAN=z_&oQ$n_*>`pv%jG{-67R*mlhZeC*kXne|1pocq@uFfQC`4K(dSDrdHzZ-Tn{bQcwH{GcOGqwRCHfnCp93g z92+Y5G`)E@$xw^<4KK_~vcKmq^UOTCauzey-s>uX9YLTC$NweL$)yLUm-TR5@?j^F z4SWdVkh>XMgiVKXv%naA)GV&fkt6tEZuf1KHHheHli+0;@!eeNPyIyl2%y^pkV-oq z+*lJ42A4s7u|qY!hR0MG; z_8`=We?^*#XL|t8vq)Dk+*@Q{ z+OM+IJy5Jl(2Kt+qgfVk>VN8>xj8;GuNhdH%da>vvh3pYBCOR>?QxyP>$aHijXehh zXg2PyVb3smi140;>79;WGYK=LsYJYH9m)HOWX<(e^laFsZTKs!t; zm3>XVV12H1wg#8 zl3!Jt!EWIHSUMMwn%uHfY6lRgoRAN;pT>S}7r@Qto;_>U2Ht^6TpHO&?AGEkj z&)|mP3`(!9k)OZ#w~!fHOd)^3O$eQTeaLSkbO84H9Bv~(m?4Yft|zupESOJx_LBdV zYNfh%*GIHbU7PF#k(y2!;2#ijuXum`4OGXJr49@hi3M%c9m;EdQCXrrxEFr|c|p`Y z^lM5R6$SHD=~9xts8HGCJ1p(x7woO+OWAw(G@FD8(v0#!vvw|4QtO&&7NOM)BPd^Q zR?>ghY``Ffa}X+kiDYhF+B}G~+<|j4RhnPdmXS|86f3v@4L)a|9D$O{?ev$(3n7 zH-`sIn(@5eMZh!S>r<6{G9-S7d>hzpBLJA6}tdd{alaJ2tx!ckJavB~D zXvpoL(YA=Ye^L6O9g{bk)W#i33f2bNykxAx=`V;jO(gvdTAIE^{2l-N@~-jO$UzXt zO^n3FXsa*{aRhPXME`u^e&}>1cv9p~6bcK!rY+ z1J7sG<1qOcO5G}z&H6>TRLvRRcGY8Ea{`Yu2v5@l!ebRWcV-Zj^5IhX_+Ln6$7^|a zcV>~P*LO6Mson=VeXA~l-Jkdi`+P|8DTTlLnFzo3vs~EcgU;wv%4R+S+uI{l);WQ1 zc*r!a90>^G??wX1`X19jbrxgI6#mRki(UMnDiBo8VuL`F#)H zI#_-m1-l$SbUSoGCLj?+;{^XpZ0I=i&&s=aEn@o5eC&!e7-sHR(f!s*KU->7)-qxT zMn+MFtC$@b%kGuCEwwG;w4c51a{MjgA6b!*mJj&?Gcmtx_ikKGA6iQn znSUA2zqg_!_Q0KH^H6g>RA-z{V~fIwVjh3JJTdm=(b48hPR<-AxoYyG88P}!eo=XR z?6a*(?3GL0A5@|uhwc{ghs%>=r?)DxMlN9qDlq{i{*=e}Us)U*)~ZB5sYG_eC@ocA zje=u99@N_1kJKKhjkI+s(%FiNIP-=nI@}S0st)Fsu3lNYA3Qrbj=#RLTYeRis{BbG zj+0(hM2f?oa$uZESb#~)=Pa*v)xJD?4hBu>b&SfqP%a%CD{*Ok5IwJ0;TAoXe{Pj2 zw!Bq|*W?mYf=b+v5+9G{FRe<8&23d;px-SMz!jaXotZpX9s_`P z41aWWO5)Tu0cHWfGln-j+TZR0e?6<^%gF=tt-@Kv&#o3+bZsO(pTyEX9{kS#SDab9 z@dVzZcmnTHyx*6v-OkhHfGbXH1(Ay&Mh4~L$r8-X%IJ!aV6*sVD+)}@0l)lFQmc>N zd3Ej{_ax};+=OOlog>c1h{Z$rYZVrqaETwhCY^idlBJfz-p}J=3tPlPm-w&7(CPlr8jmbT`D1KuN))WZ;N=xB^Y;*TO=PVK?OgH@qTuz zNl5NM+lMB^nh@)RSRoo_!dZ^b-Hh3{8!-7{qk@3>DQmMPzjASh&4w}Zr;B7BIs|eN z#8O--J`Ieg;r&L~m>KgZj4>Mi5{t_EZ^eE%_%fW`JefGu7kOoY$bsGhus%=6%z~MVITP*v`kUwlE|He{jPXwRS&%pa2p1h z#ujn2PaPymfsH;=4%Bp7PK=M?1;WP|Q9o9D?Apnc)Rn0-dq9Jutf?>=`MMgbdc_IuZL(5 zKSo?=h7y^@p+0m=>V@*gYc2gvEux5*@>2Y%PfMxg-&||);FewrhdB=vA&9y$En?$! zi&-wc;sV{tO0+Wwo$Z)bZy!Um%4%vcke39Z`9}hgfah3QNdI|-oaXbSaNL7I>hI%f z>`wi*+sV~90mCb!xJZqCIb#?AI}(xGsZHoa8C*p~Cz(o&cdk#jD>ayKpsYv~boSzd zxkOEi=r~U?l1c29BmR(}NZ{n^Fa7pm`CPq&q$DZ1bT3Z9)*f>uVNkBS(MD=LECe*| z_2KV%Dk?_4OGl=ZFw?ZzjCgrGU;b1|X5rdMp>QqHTZFHowOsWoh>lB}>=^Jdyr)NW^@_BW`hQym;<{eL4Zw_$n>5MRcZT+8#xBD;g zVMW_+bYj*w=DtDRkS1o4ez#4x``NUwI0 z)kiK@fyrO_#`N0`S$x>D7JKOcx*oQ9(xuFOHOZZmsJDDDyt&`z~2gxc&BMv);^_xhb^6!!;4q zw>iST#jglml5gS{)>+OC8tztD*-(K-}fS8>%rD$SF*CTuh5 z?D8PKawKWG_Xm&5Gcq`B(hoGdj50;oysl_-rB!G4jMSSQE`3oj+#Nqe*nF-y^IB^= zKg1e)k;{hN)?}y4XdY+nh;=HbNCD9m1{d#%;z|V)`jGriKh$H8(+13KGe+!BP@z?F zLK}2ji}>UBfn^jd3dfRD2Oc1Zhw*Z>!m8CwJqEdl|8v#tGdlht+c>Ks$sK;6r?7Jb zx0^-43>t*39Y&1WYSsD96mCFX|?4A6X>I~b4^PK@W6peWNd?dc^#8<_6 zdYbGWd_AJ6D|D^XV^S$IB(C>)Prg``B~Jnniu|64)mf zQ2OXrU=238%9ddAf0Jv$ydxPZse?@C3~C3!HrN3x7x6S!Q_HD@`GHzEyPvM#UJdpB zxu(|DP&WxpYGY0%+#aZgE@V^dTi23*qt@I5bo*~m&09g$C>-NC9*=swXv%9X5vCw! zMM}&0XHAM&c->D0F^vp?(4m|7>Ay?;jmTbYl4Xg*JTSQpWY0D6hkrA&1x@!zf=M35 z^iZnO&75SSY!Rn6@q=s9?eb#;l81<7>IyzT_hODo`-N^QW5@Ul9Wjxs`ygm`msy;q zPizt6kb9*I+3DW@mVB0E?{ApB&CL$7H~wo3rb%=3c!K!-w>SYZ#6k^E{)MbpP@wJ5 zpbujLL=aPl({Za8F$A&Ka2gKSy<)Xj{1oUKlv7iQ-t0sb72|04MMtcX4?xI~JvHI4 zsEV4<+usC-dzilo_7t?C4%u=WW}^)fz1Wbqh@-yMw#VtB_Pn5JPiCM!?w_HWQ+qVc z`O6*J=G5Kc!P%|D-<$@hmiBgi#JL1&YxVgS@t&VIU=C^#hoVm>L(4A23Y`X$5X5`#P}U3% zPva50Ev64$o{%bvs_(|{p^(>v6An{wZhR422k{R>$y{UE!ia@KwHBR621eT@6o z1n3v>w~>-n`B9GwE!ENdWTyudlPnO$`iKt`Y>3<3nWh$TnGYV>KMig4{bXtI{Y1C6 zhT`u~xSU!VF8p+Hu0FDZ^kp{Cz0pGO^Bx~pO#5038fIAo-KpOl5qQv)+FFbx1hF9- z4u$w$zh)A8yvH4d*n2z#E;-!afT@vQ8i!lQnzr zlA#sm7xZ|crSTl{&VjrzkazBOHwI~dK$)aWWp#gHNy*Uc}{xf3t>dm9g!AOYV zp@^wUcq~}T8?U!K(r~>cG(Wm}vSY09!kTb|?XHL5Fy(Vr@&EdLT)T&|Yx(Y*dqK-y z>#9QPfZdFZo}g?I3%*(Es+7`5=8C_0KX)ZCLudD~g*ttAqc->MZw}_>3iWGr2oJiR z^kY(=!x74q^bkGbfH^EZdd zm}Cf)qL*DbEl+T`vVNo_{%x|lUL2${&RI`Xp*o*N<4Xv@AO)g zy|fa0s>(~aO-L>%WTF3KmKP4kDMsw+m{o6b)p&{%-)CI(t;dVeIHVU>y-6NQRcH}{ z_#8@L(nc!B2j{HGy1J`Nb=I3P)l?cgxX{|{Vp$fgyF0~tFmV$QZUPhGP>g~c{Lnh! za-oM-I zQ@v)ZCqr=NgErhRnT)B(zn9}5-qNXuNHtDrLtdZG$HLsJkuQ1^4K%HdF$d-FGR;%Nyh`bEmyGXjaZ{E)K4HwNjbw7PAi}u zIU?|fwq~ULP4Ky0tw1V2npTN<323fKXjWNxUQJ0vaN&HMp zzwZ(y3yAWTTwlvYS2@hO6}{$>(Ye`SD)8je8bxitj9$OoQh^2y7x=<0v3&d%L&tss zU3sDI_3{I@^ym;LL|{jIY)hB)gEl8Rt}4)RIYk}~>s4e|y!y3%l}K$%9IKWC(few204N{}$t} zx3Iazs6PYSjs-B5wKStI8dB#dgugwFhDqS&Bz#NU%&!>i_mLKP*lhaxhXean1pSC>&m-#R_d8AYvILkL-H`}o(3n9jtg*$g#=>NW)D!ODv1+f&fTsW-l5*D~H@cQw)8$-d9U~x!??}1Jkvj>wg(11yrQCV^#W%+4 z{+7XK?MjZ>mx1@#j9G6MZmr&m0&iEp&0pV@$3ORGH+vp%=B=YMEasnhV*s%kQtZlC z+Snz;RLCE`(y~%zo6IaaWUF(m!2{&*WWZM22BzC2rYp=0Fz9SMJ0?Lb>i1Al8Hgy8 zh}ahta|RKy6R~xGTqi+p0ZD2_znvs|E1F=W@gsC{75?mLZ6^q)wQ`{jv42CF9V1L0Why7= zbvP!abyw)>CM7@Cck%AM(` z)?b+<8=)2Z>y5kNP~o$7XAP7~$w${Rqna_onr||~`0cy1?6M&KC&g4rq?5)DIB6UT zM;`o;6AaMGZz)-7*XzT%p|#{wy!Wivos8YM&mCjB=%SQ2&RSqDBAdqcK4-)6qf6w} zOusoOpQ0&9=oIa2f(*Fv?8djd@vrXDPgioaRa|aW#Seih8h>LA$5DgHu3#@m1N3OX zDya#Ffd3Y$39+W3wU?wu>_-jMK=SC{8>l0u%~mufD3GrKlULdyNT-U@;38KD`Qee2 zju4R)hzPDr4&YyZ+Y*@~CE$mZ2JlU9Tf#OWy6JH~eQ%Z_4WDTeC^vvF+q=P3jD+IH z>16stv$CGmOE+fawT+K|Co$3kAOx|*%v;~tm?0myan-PuHB~^qTEt%0Xoo%HFNxAAScDO!Eu3NQL zs=(wLz4+y(VYnz#fj1=`t|}ZO1Y~QItK6<$ZaV!q9ua#Smn_7w{i%wgWO6%@9_xGp zcA+PRZh^`8But}-rAe{fCp%;5leG%U-HF_6`237V5Vrt&?gVJ=cJ zX9QusB?xoR5X{|zFn12ZtUt*++(r$_KYy;}<^{ymO3!{y%uvblB3C8(3&hmC?OwF@=ZVDkgH3+&_5VSFbY!109t0NFoS*`oL&QG>lTk~gH zN-iSi&$EN`If$1})Qk^diJD)JMb(JvxcU^=k6)>xZs*&^D8%VS8b?qE=L`_<}D z+uK34*`Zr84LesF~RRb61zK;^`77#on1B4d zL)z*Sfv!UAA;i?Y#S;EFb<_c(*bWeXcOg0xF_oYxfy%4FgKwar>7%--(;eVP2bCTk zRC)-=<3iy31;M8xrfGjK6flMq=o(a@Q&0urfXCgBh+vYgeX4EHPl%}vI{#@MW_+5l z16;9-4FK_vGqmU{!~&V(=bvhX8@ZnZA^&R-a!*jq^{KLE!CjZP)ZR$FfDS@d2YI~> zUSa>&<^4CU?)Jdi8eDnn<$d6Py1WOi?nI0iMn&>CRye~|d);O=A}{Uga7x3{?!fc0 zWNhz_LjLiy@q=t#`8Rz12ivpNAz5>rW){uZ!Cdj|ab@_2j2-0JkMnyD_18@MbB+h3 z0NM8<=9dD*ijHff0P*q2Rj0Voh^d4O4^$eBE1L(fJ67||$CbwVRZja2cX~IIi882s z75}BmN8M0{Zm5vD!M`cws>^~@zKWa3L>2NB70%)QA7x@Js38-pBStT7gkJmv#qxq;If%&yEXvC|M)Lx_ z|6C6EatYpij5=M7rv;TrLQKtzSM%&Z*X5YffPc3$r*2kNV|8os-;cg&k?0;cQ%b77 z!o><{o6*+rQ>w?29ZWjPa)o;~c%Inns>e=VN#kc6&bB`T_8^G+Qek?+H-fl3m3H;z zwH0p6a@dr9*QE-l74?Bml((h|DL0x2`jV%Zf2Ty~;qh&G+MgG`MSHpr55>@CcoJ7$o}{$J|4;}Ho>(c*26(@@8|FkZ+L=(!B$b;Sz?F%#Oerm|6)wQr z{ROgaf-EC|EDy-?BxK2LA@k#k4Z$V5Mv*o&1LbEtN%Mg2AFwtf)~!s6{_7KM=H*ZL z=D+tZT!;L1QufJDg4v)jY7-zfNe~|eAYPJ`NCiU0@y;jw!$*7i`AsA^K2iB6+nr@# z;_XIFp3GaBbjn+YJlRsa3)SzE*s&^5z0yxAe5n@Kbg84%%vk|s9w75b$ch5U)83K|Hv_7FkC!hJgXaQKsWzV3xH6IldTiS(B9G^F!jZLg1$a z$L-?8j|T*_a~Z{GfXE7j9KQo`S@n?PgF@o{Lf~%+iTC)}16Fz9ED!(|SyivpI-h;R1CJA}l4{X4wHH1I$DJqdi# zN>URbv~t-H5e>glF`skr?xlgBcfORwpFVE63Bchb-u!8|Y;7CH1d;ey2EL!OVpPWzak%WCUa0Z0k1QWz(Nnx@=&R_d% zN8HIDP#oYVo*G(v6&=#SBzMSX{GUHh81}d?c$_`*H#v7V?q0CAO6dULZ}qhu zmk%pe4!P@^5Z6us4TnibqXDN){Q^+aP}j5#a;al-sg3}W6aIFXpLoiY<^&V8<(!9M zUOQ!y-jIs9jocF7Jk=t;^acOBQ;T9s(WcT39?7q&BhDyJ_T*!}NY>rkmmmB^X6j~C zw|T==2Q_Y6PvR2p9UX&EsI@<2Y%^cDesioAl$+zUYHA@Bl0{IG`} zo9$KbDJGX>n>)uuw}1E}Ury_J8q7Qmc9nsh^fSKoxYVz>8hLu~*8ek(F+GjvC7xb} zvo#<5QDuKZM%>XuOSK~bLM~>eSAdR=m^g}_hEL?vR~>6y7oiX17X*6num0cQj0&Kt zK(eJ)c^Rv;hulS*>g6ta*#CFS@r|cPMTYyC5cNGj@pQ7?buNS#AIUu0`dx6xxqg(> zYrYGHulWeKd_Y;<(=_!lJzB*6pUa%QltG+)_H&w7h?6wCEI;X$IC-DK$qr!U_C)^j z=@~seXov?5A+~wI6Q_o4I}`cEUm1=1XYeZ}&&X_}Sw?;dtU8f@^{Z~i>}MDu`x%u# zk0yG-Kdujd^eeNy1eqnz&~!Z`QEo``+2DoA`yq9)0ffnlxh!FyeW-K^E#a3iFKHLE zk3I}$#(M!Avh`BN@%D#hcE2>{+c*h{R-CsnVS&_^pnh_|qZrwTCKDTCMjV zheGS!7av;h3-N8&+k|?X{Po759&J1_B(4jocVer02e+!X%MI#fo`sU~tjy)=51_PY z;!lOd*L)D%-j6>BZSOmAA?+>R7}s`twGzRh9<4;^5!dE3A1LF?7^RE-tRJKdRK`9l zt5&n|JLTd)y9G&>XKC=}#sv%Uk@wpgw10VDLE6@!b-o`=!j1qA?Vx=nfFmC_z*-I3 z=cGb6AGE7ck#^87M_fB-OWzM2v~vNW4qBLC5jQ<)XYilgjdum8YHQGr0=Rb2W+Sd0 zw3!mop@X&$ptN0-gt)eg;`lXRci}zX7$<6{k6#aBkw(8v^9$HdA@OsFYvI2+NW-|& zqzvQ%?@Iz!`m9bUeO4OCaYjkN)D-*A-Gc>;dXomS7VmP@qh(oXNWH}eWx*6?2~8oDSp^@x3NF-zkJ(oh;mj&{y*;}P)R2ohxAxE zmtCMT<0U+O{df*H$QYjE?>#$YSh%1nfouJ`zVeK&~xf*w8n= z9#L*Xxya8rYYvy68{NqN<@+9^wWNONSN?Vj^16Tj8Ts#LK4Qy>TV%J)7IBRfKYB~O zq)WDlefgvxCPZfWD`BXTp8P+*HL~&ipML1B5OVZ~_(-M6X9pTN(bXCVJSNc@9(ZbMSPHrJD={v54`y;V(6t5ofai%IEsArB8!RbQTJs_?R$`_Q3-k!$OR)h6ztfd$>4Opp2n2Dx0>R(* zQ(s*k$ItjFWz-;!9=q{D|2pG;8{iWIyzmp+n|8adEZB{ulwOX+2`Jru!!uMpTEUMp z@P~fdk^7gOACsuw8D%i26v`%7!=2yRcHX|!aCSQzw)%Oz zTmO8`aXo9+WpFj^Bk;EiS2H+*ou%Zx9KlXgzMCUhldiUNO?)IfQ1@i#nu(EYoi4p| zjlLs0Sl6j@jkP2Dvd+_~<}}5(b*hOqukVwY&eEx-$-ws4nL5=ZMzN!my!laV zvGQFXg*x7es<{*exL2ZTk~^_SbVH(Q&UXUNgs7U-&g>T5-wZWJI;d&m$G&dj^gkHx09efYl33GCi>x;`ChCih}1 zbZ6VwoahB=v!9O;vY+2K+{C`8i@B>EGw)MZpZ=e^kGR87YFxXTPQBU2eTUQ8(hj;2 z7itEZL4wTeeOt_EU|7=|nDgGKIXsYEZm-%JCLow52phLXAv}b`UuIh*LU%YO?rGr$ z;%bBbtl1j)m)eIiQ9!gujGaOJVp)!e9iQG9_I+F*p>Go$(%QHLgt`0Xb z%%WX|SjsYgeV}@@;Y#;aZ^9L2H*~G7Il{KBxx$XEmkz*Sfybt|ZPg)$pH_}C33i4N zKkK|?;OHgeLHlUji8A1CF+(?dI{z9Tm1?{P&j{2bhv<0TxyUsZ)DeZ<&G`rNdjVK( zrpmxM%ssAr5JiO5d_S1AgpJx3C5+lulQx9SnzFiz6;@ZhFP#K2XFd*Nn5GV}#cj($ zDlu2ig_ra;Mtm;}nwy-1zy2KY?J)cZ1!TjpZ9GW2yV`*NYwCuurk<;-7Vkl4N%$FY zV_3hpMjO8Cu0YrPJcKRo*+%bcnObgPGtebU=kI&V!d9_ij;ct(QMGSW78}FrcWv!g zVi0z1t(i59%?R^##;w!NHC4mdf!yA$b&X$NpJi)r8w7~GTWgLFV_y$@p{kwmLe;*? zY}TUdHhz1(+w1;g?d<9>8&lHG_RU;Q7{9%yemJ`^jH!meSJ#w`V4q0Yff{#IG0ei3 z3SVON?P8-!JD4I%3twUkKX-?&RRvwEswT$DrW(&yMF?lB^k#<117v0_UOhwEvsE>P zRyH>8G;&W@CGEMgB%&1g5x=7JQItMfWgLk2%>a42DtgpY)9;#&>wZ;vFXF;qRm4DU zO7-+fFY1f#1RkH8@Yn3JvX*Z8>W+fG`hN3=#bX3hHB-_dGYo(CUA3~=?C_g&b`H}4 z5AfZMsiBIon8OSav12jDRZiC|&t=o5|2rH%9Uv@4z~XBYi!xZZVX*!bG!NALoXeX1 zy-%WCv7oy-RB~%ZjbxLxycw?o8G8-HIGdU zJNkxBIQqsuPaa#&hHcs$DQw!jZ+JdtMyvi0G@9fIL;r_4j8$m=hyT~wxkgoaos0UN z_=yX$L_$#sAxd;f5D`~as3M^R5s?@~MB-r+N)Q2&jYtSFXxT1G4Y7tGQR^ZeHd0uj zL{X6tAc&M0OD!dq8bSzhP&L##sK?=PxZMu7HRt(2n@iih`{Vq0eZI@Qyz{-x`Q2RT zf6$np=HzcPy{dxDVHd~C2-M3lZsRk!{`_GaO8e2uKm6~tGTrQA9&hEa`gW^}|4yqm z<4UzK=IeGAjC}Q#-eao#akE}~EoMBT~`(8{5`M0v9pu@Y8%(LO4fwU zq)78vLCo>xT@3tfbJ`MORPw^F2R=UNW#-J-YismQ7&8Cz%UlHE-_*Stqe3iyTQ@gW zulfF1ul$14-}KpWgojmI#5!h_=vV#ZWA zwoniYeTU=T3O7#hnq*Fu@qE+E>$6)b6aQbB`RZMmXk2V@aVp7ikQ#%BTbtulnR3aj z<3E|zDTHT)b+*`eENYzF~a`HVOvSO3bI}~tWV#}Jcq}=PH@$Kh~|OQ zy!jIx^}6GIwXyxU z#m(Ypi9%HaV$4oWUa~jK_Jilu^tcf05mIM(%XRNc7D4^<@(7MZ)IGn~@YYuDCcbc4 zaWRY|VRd6KO43~SI(R=%;};GW@Y8A+4!iDsj=?^J=z|{{c-`~LgfYH#Z18#V_qr25 zJnLk;!}$l6Gp$wE)c>@^m=ly=r0z;zI~|W*f;h0PUw!CT8~T#>wJUw?x}D2eOw08j z3PWLiot|`mowijcDDyYk8gEArjep$MKHA!Mzb(Cgy)C_T>$HDSE)Lc(dqs7{@xkLB z#}kfYC%fxg2~8e9%Zv*3devOAVF^v^it9=^j$IPyU5;Ne=!&o8{A5JfP8X|r()}8) zb_Z5;eQoaJ;zD2V^%Xvyp^dNP%o$B9b!D8)YxX*&OxE>jc!7Ly*gR+(_@N4Ph##~W zla;4`RHg8u|Pyk5x0= z4Fp+NjR9F{-kBK7TM4(fBIx7Vr4<)HUgCT){bT)x?nZ~+dM@>5xd;7m=&K14-riz) zmRe3@HGlk#n*V3`*^9O%P8WB4rq}$xV>K^cw!$=p&X61P8W@} zwziF`%+Zx?*IHY27CGihA+~d}lqu3w`}%uM7frPy4#x~{Kg`9>lg#QS^43)QaKyiu zpS}1rHJ`3^@OH{Jygh+SofYgkBM(Qc#vc)!ji|K^W~l`4_}Z>x{M=&gBbMUCpg(=` z)zAL;)mKr*xvncOrg8s~R%?s>SLNxLM(woP)?BvLgTa(%f4yUC+@wNWv#F6?JCS>r z&1`M1wcXvMyd7Vn?n||{SvjiPVV%)7nxo9tuXCs9{!PMnb4Sk`J%9Af_-oP|BN^v| zw3W%vc#Pj1gzH&!za3Zm-^;4iZ%xcBxo9p*wM_N?@j8R;?agZbiVO2(>|R1&0`zA2 zaTa|(U=n=L;q48sd%t~gmO3^!H*-<-EU>yG!m z=B@Gaj<$Dl)fBHV?g#X_ir?1o`q5wS^Tw@g>&sO^o?n-6^7{7RY_nccjgCfUB%{4` z@FnFu!EpWr7ateTpRkSQs}`5&IuG*)O|#6t7AL~I_2?_ANpbLlraMji$l=&QTh6O0 z$6?ZEw&7QmheOBjY`0%k!L9|h%enG%xL8m-F>{iB4H#aaOrFE%yv-Lrm}_PQ@_NMl zU(d~Bq0?8Ng4))i0_CN`mY$pB{hy7~%zEB`^`-ZKK2@wVJFT2+(U0msYtE104(Lyf zmKpyr-TUHSCXD|I^LTl~fbINN6>h%E+Ig3?IMt$zE?x$2R^J9zUq1OuwK%eOlk+zZ zPh{&hTelCl#%xm#|KsA7^CMOK%~ZbgBNcjoo*2JH)!oh=HIDl04fWbWl|Y@a`?tBR zZH3B9v)!DnsXG_DLVdYBod1xB56ngQjFvv`;pQyv6Ypp zj3qIf^S#&Q=4NkPzb-X9eZj^}x!LKP(sT0D)4Ve_=XvL6ZhYB0Ej>Sdeg5V=XGXCs zFK=^R@EV30x9ZvXb6ytP@841jd`^8|)qzOJ7pce)7Cf3{GDy<-*owitevpy3d6V}X{Wzho)4BD_18S2BElU@E3hFbd%ZsP^~sh$i_a;{#?~g^0`zm;`Z*hWt3w#kUNM2=bYcQxxK4y z_*g6!$)UmE@uq|n%-@)^!CUWRPTH8|>BF}0kXqQf?-2h7czm$yGdFL3IsL^g`I&j? zFK52EE+>ucyp5aw;aDOcSWLzSua|xC)s6X?FJ`B2NzeW#s*TrMpK1MO$Nx;d?{>H; zJ#FKLPV=lHgJOuC}Rqzew*mo)fb zU*Fb`>-+n^A;r=<^q$)8J}ttoWCwB@d9ck>$DA`N^s$O}l~f!;bbdqh@(#8i_ozqb zxGJGl883GDesR6ZebJj8FKRRWMukoAs8g-#LuFJp*AJDWt-MDWZN?APLt|T>9kogx zNW;G?8Ix*QZENXKeiJG#i|xxEHFrY!sMx0bmW}FbVte|xYR-iC{}9`H{YdP8iEa09 z)#DQb?}}Wuz4co)-PZeCo(6jTMQopO!r2Rb15x^}vibFL!5YtYfrD*@zMaqZbq8Bk zubSal!FKrsTbX{mjcu0Sqx$jlY?~+A&h;uECxe4X?*GEJV;xycH0{qJLxPfip3;W9 zxJMYLc-grx*R_%fuQ}|Xws<4)lslhnoAt5swHlhK)24}G01m-XcnvZJC(*>o z1-d~hI+>saE`$*<3a*8TknnNJhTGtFSPIKw6|8}cuo<3$-H;G+cF>*?CpvbbV`n!G zOydL!IH7>E5Bq*F7>2?a7za~f2HXO-*{*!7F7QX_MQLijuc-O{n({Y^^7qx$+#*qP zcWBD3Q+z}uR7=%y&6gQkq`&_h#`gG5aZgE253UWQjS<>D;L#TAY~ z>Q5;XHKh{T;UP^uV$BluNC6vk_(%!tgTs&p9-#rxL{XlpFc)so)NJx$_5s)qQOx8Z zJd=P6VJO@Nx5F05`8ma+=Inyk;0;arOcUiZ1E#<+02nWC2GLoBfz(=Ts;&G4@9s!LOGC>pm1Qa-L)Q){wC zt=R?{;hLSe<^ry{jB8NnA%93cqcbjIq{d8K5`s&jU@z>)C4x&dE56u+FDl?5ynyM^ z>=6`sqzcx-emH~+7=fn?OomwyMLcV;SRfV)ht!*!hlN&PA>D$wY5@aV&;!q5DI=Eh zgkcaxEJawzTE+$)ScWmxO-yx1Q_t)a^-MV?T8m}yQRE#gAy|TuEoWrQ6Jau}gjgaf z8Vki^8S2H+-WtlSq1+l`W(_g3<`Nv`P4X2I_$nklg!B+I%jD?qRjK2|TOt$h*b2|7 zr>zvyC^V7t6Ah5$ok;RdjD#y-5=?{r-^m4No2CGCZv>14uKW0QWMu<5!XwaJlrnw zaHl42*F@ZIX!5-Vk?%EX;?5Y{?`SeLTx4pbCexTDraNfjVHELj)#Q;H5!@-BZ6cl> z@CLl4$zvHJk7a2x6GdkZX;zt4Ei%il$(#}qQb&Apuvi{scJX0$d4fx~C*m~;VB`Ue zJm4n0t%-RMi=NlSLOl!ho}$C2=rC|6Gj}P(Vu4s}5oTW$s7X+iNKiB^h9#OjeMjW! zdsa=JsTX;s0bYiqnk-o>vLsQH@KEOFa7~u_b3tgZ6tQ5V(>7jG=*faM&q7#+LO@l;Gc6_ZcL!qc&^2h*bm)8nJrB9B^gF@*tB7&Upk zPUP`JnwY{wOc9J6S3H3$eD{m^9?)cNs>s|7P5c6gCyOTjAtL@^ScHxO=x9Nr$bw`n z(v3xWH2FRXeIJE_&M@L$O~MLA!ipFm?Jc3b@a-bj@M1=YCQDHyqJ$Cd(qtJE`7$Q* zWteE$Jw}Z0BJtgG=NRz-Bjvmc=UozD60C&Pun+cYG9^u9N+v9Wdmsu-K>=4*FjrQv zhq2tlSkCRVSjFuOL4{AghfmxC392C23;Qq~6{b>QdKRY3VSgI?p6p*@|1t_?pimYj zy-To(Cec_X8p}LVz8-ns~Xh zlzTu%=*0-VXwZuWz4pNhqBw*o4udVQ9is4KDE!z>cw3VhTSR7T!?g{#wo#MW)SFGc zIaqEEmYa=bXJc8D70u_MxlaVq9tFGLX?%~VpTN|p9eg!3@ryh2z6_rU!GS1iF5ugUx< zk@?Y(5zS{r0hI(>HNkeCV7ovX8c9P}O`fb1dGZkZG3>{2p5R(QY?+U;-vqD1>y(>8 zxmmCcc98#14zqEI11`{w=%qso9a@rL3cLYtk>3U6H!gSzOFV@oo;nN9!CUYS!J133 z<`b-Df;EunuORv>HCgB^ve1S7X7=0I&u6~?cEB$3e^DqCL^y1Kjik$3(j^fRr9t~3 z3Iw6RVn(`{kuGM0iy7f!6kLpgi?_k;a3?HfV(DRGIjc#C8_z7JK};QjsY6gG1cgE@ za3RE^Ay!Np(!xeNBnU$Y!jPNrwkAJt7x{q)B>I0q^#5QNEQ3|B22$<^lnbR?DCI&U z;R;B@p|l%{i$ZZx=yiCL32r+RTru;2FY|yuWZ>2?M!v+K3Bk;SKttg)w3HcaDKl7v z7xRHPrZr$%BRm6pF)<^JWTeZ>M3(P?SZ+C%i#o-t@@`F@C7quoou93Q)ubuyJx6=X zdnwnaNj#Q~$Fk9S{znt7E9rP89k0ZvEAi<{OuiD6$Iw6w4a86}hKj2)MOJ0QLRbWw zVH>35Rdl?n5B9@hcnMyG*CFY)igb%*Ah8T2b{h1ACh|YlmkoRpi%(+1UorN}6iGOxNg^&x#D$52@I0i$L^^!IOXLM_O@ebpg7evL zV!s7a?*;0;V5PzfRCr+&UehGWk7oe^Fa(CdIJg$laS|OT(LfRn{F^57Zw9yn?<P zCeh#z>G+3qoQ#E%u~6~>Sf$B}=S5z;ph-#;52vDGHMEoeDVRJ3ldr=^>+sP!U+52+ z7uID#e7O!^uA{;_Dy+K#uR=OpM~A5*lB%)a&;B6$m^KyDrUt$FgY* zG>w6#Gm!Ka@;?L9WMG;N(IOjSHQ5v|vMB+!!%m2AH{sh&*We9Ja$I=a=LWG<4wlLx z+H;8Z92Cq!!JJ0etjT7h$Yxhadz)!*a|Nt~D7qO%=~i;NAeCGXHoPDea;cCT3`1cF z+@;A&W|5ZyHF+6Rzl^D0u7?c}1z$$NEm&|17ThunFKO~Bu6Y&LygCc|z)D!H$<{=X zt;w2fOXjvbRg)j(i2TT!r%9njq>$h%tb>Q}=?r{23&z5DmhJEq%C3~Z<4 z?R5N;7?GdE!Cu&>$qomR9k_Bw2n^HYHRgraRzO_(8ZLbei@t_MU&EEw*YIVDiHA_W zn!N5K^17cUWm!DH%F$#uKHQBD%L>>pWS@q1)6i}j+D$`yL;2%T;q2$JzeSUBMqbXy z%L%q}g01`-yaDgPdz$R=7ujQmSZ)uN+jE)x-!n=>1kGN8W-lh&i^=vD!5xqh?`6b$ z2jO{0LwjjxAHlSbVEP#*{~0FVAI;<6Sm+67z(5!T8OVMHvi}V1g_Pf~moJ5AyPv-Y zCHosSsc`1;go`Ez&hadIK$ExO+wcG#9iXF1Oj(I3t0-4Rxylsw(=;hc5-Cd2q&R}- z&{41&+BuGeim*^It|`Vf#fRWgO=?<1YM3W#ad9m!uC+$75zPiZsl_LDg3V5_*?Ztw zP2Rx;@8ANy43T#-;1C?vqz+fq;fgw9p^jK+C>Cibfhf>`0!O_0uFeE2VYMc$jv}qj z5LdV2>Q>6NQqJ1$!IOF~P1+a2U`T`QG}sX*(yA zrJ+_DYEM9sBzPWPK#>C|QiTHSpJcx}S)@8ulb;8O{M-Uvp*tiNeoid>JPYQa0Qp}- z{?}}W#c&W3OSKMI+>!jR&1NGP?u4b9oM1#J7}1FfaDc?QG;b_ zuuRQmI0|pV+q8oswJ2iW!-)6eGCy1vpvfUDa0m+=qvK z7#cSE@_g7I5?qZ0S0gTH#08CwuvwGiB63`VUeFsdkmC&GI0HG(K#o_!YS;!lG-(PH zX$pd|FdmkZ|4sYYXy8C2yeIOWgC_5hM(>eE@8P5OB4HlfqRIOnBJX=ag7$ra_We>= z4(nk9#C7lEy7#fj`&i`tJMf++Ez@|j;|Z}u3zlfX)h)QXC5ilRNnxXa1BDPxThO$n z9}dDx@UkW!_=tSq2iL+xh^0QjQXdS$^AOX2fa!mkCi2Tnh^2msr9N~Q`Org?kIsmE z)C(#95#>)Cc+F&l9_0UNFE$p!U>FT!HTe~$`xU19RXgm|=Rt?5?n`nM2?&C9>7emCyh+-Gkv0(!pC8BP#|fh21krIi zJWhvA1W^+~)MSFbFb!tHBDe#dg9Gpyyg@e5&il0UegP~bxJwCcYdIVBY%~zXX#4>h ze}Kjxpz%i;L~9n@0=L0BcnG$@c4DK7*r@D#CtMLx$OpO3<8SO(V~y~W6ru|O)M z{4vTmIx|2QNW0cX8g3-b8cDO`xZpT0I6eS}(0m%2d%`@p1zvz7j3A2<Ng6t6;I z8vcNWKPo}7U2s1>>Y;p>g9v6bObjunq-WP{0im zwa1Ctl;6bMIwNJxiGboic;iOCg(P~?3Sd7u1#pZspYH7&TNB?yK<6mHQK?uI=m z+=IgO`_UEh|D&sH+=h3__d@c$2;!Sx;hInI^(Xjxkd6oGc!&`UF@i5TNUJUsSc?LQ zbnH*ZW*QEr;ZX7)#d}fw+*Q*0Iu`K20$!{sr&&|ZKw{$rv2ntBla1RfE*guA0eV9d zt6UVTTr`Y_37T{UigX4+g0hpK?4*NEI_Ru`mCSer%y@;c5jI0y^-Em!%e%aU7frfQ zunPrGIf|TehHa2et*36WaR&=<;v-IU({MKpcVqHyOx`^VFF~TXn>3)6SS!g!bsbD86#nd4(2uKN(zeOLjp$cJZOFXfUcmkR6P zAvg-Jao)`NK=Qwff?X8+kdb`INIpc<57G1#$4_zm)F3>M1yHaX1-lQxD%J!n@N3-y zxr{uY5mqw7Y6gM@zrcbYMPktvtSOlKG^YMl6fqSId*E5xG189Jm5m@aLSQD$rojLj zw7?h`N5hFUoD6CBbKNyG)J;R(2{4Irp_B{fd=}?(IF91oDE{j(6pVoTU`y7B<5+cn99o~fmh&FP0oAq z;?G-?VN5=Z$uDH^9yg2qDE6Z@zTM-yZ+A^DF>hRA-nirg{WSh^7GL=eLq`53Bfpg` zaw}Jpdnk4f#V+^r!gElQKUIqSsha%%69xZ7!O?RfqXU}!84dr8hJR-N&jXs8#2d0n z`uiJRuecn5jgS{jF1%)O;Wf(?Ub9Sb*VOko{=H^RJ)9@%VcvpFpCxL#59IaB^ayww z_P_?%2zhZey^j&l2AMEa`@vUveJO(UL3hD&)Pp0qQAM>e>k3|Ewq=VjGAqCtV(D6owwcpFpjHY~9XOIQn6@X#rSr&9ww zof_hV11GS^))Drvu+K!Zjfo~DgXe@Z<;!qXlYIKir@wsa<+ro`zru)KVMMPmqE{GEGNw$%l*#3AA6Kzm zT*aOy`n!n!Gn#rRQq)7yn(`!#JbgL7gX24ykVr=t(s7E335nwt(%3?pMz--x7kuBF37K1N_3nBAZ$lPez`ctAQbF=A60WQH?cgE!!9 zcvn+%u-Kevm;;$ld>r@&!2p@6tv&@b$OvXLg4s+cv$4eNdsJiwGg)9T+yYBr6Xg7y z?KH&xoKbj-hTLe-6DGk-SOggeU*f8{p)d-@^SQ@PKKCevSlpip%>RJAp#150DjH97 z&{PPThQw%!Hy?^OA1ZX3s8AYSic6N_l89kZ5tlR-%`5z9d>w;Hc|V|LmarD=Vdli7 zs~BNQqNtQ)Tl0UYS=MB2mI@2w6EL z4-P>BUOO+MU4XaYT}>tuw-brmiDceHGH+rWTnjJ3%e)LFQCuz&;Qj=#|7lX24Dcrd zrpNN~G9D(vWM20)@Vcjw*EBE`uCy=yZCkpv52 z5iEhb;67Nv` z-~3o_(?Jy-)WCYkH2oSQd5w|0-a`jxd4BB5^J908W0}{m%xi;?Sz1v~QSXP>dFgSJ zDT9F|Gmv#NMAprMfwaFah>b`NtbmMg9V1*%L+fd1J(q9mxqMrXrt493eKyR61+WnA zf%`Enli>~~!`JVi&^=9d28-+rh25}6lb_WEtX9H8c zfvMgYfJ2&;n)p_k>Ao}shCxhP+6?<(zb0=of;Sn#o1riqmcnvK2XE3rdJ%6=cA!8S z3S>eou=6I0pzu#ocvl#TM8In-aJz2MG1KrHOv7*NgB6gGyunCHlj$&(*D~y^2{)XF7vN2Jn}%Iz*bQQ-Oe~cd0iz%aWTHT3C9Hg-!4b?1jTn&;P7jY~0c0U%f^C)r7AY*-l2bGX}=N zAvlch3h`YLKJ&w60l3Hk7db-G=?&89je6LC%cx&U{n7)likLvbH&O7-EpQuoj{;j! zpel~5v9;uXRX!U9unN||cGw9C#wvobijh_^(u1x%vUi90{vf_T7!6}#Hq7Os<_;G% z_cS@|DROuQ#Mg)M^+uN^IobWO4vk-WGTh-sbo$u_~hv2Urm&?_de{U;`wn_R<*S(=~SFeMN_pXlU-ADSncMp#LwY2 zZ4L^~Nrf3yq$7VLD<;<%^Xl2}V!xaHX7=0Ik7J+q=G|cbj;5S$iE@Ig^F*y?rCrT{ zRx_a0lv_=?)f3TVb*Am^UzDeHG5%hRzZYMCBP>kSEKGLT02`q%^oO_w?Zuxt!haX+ zfoCCp_Q%ij{YB=RVJggk1onIad;TGK6!yYCO#(>$08&4Ixg#J-TO|P*Y-DL-prV0_ zhB|l%o`vV&C3qR$gts+uB4C{eSSJtY1^r+EBoLj#YzZH$ryrxL6IGq4>O@rxA{a!R zo%!h1rPcJ6a#q$!6q-aK<7pA&88`%oA&FrmG5Al_GMT`i90^yza=4Fc2;$9!cyl=e zd-;%xflp!JQwa1a1p1T`xC?f{(~u0ELWa5)aRavlVp!Kk<{(!r=ZfVXPUOq0WVjQS z!Y0_Fi5r%8!}4yWupD;4E_fM^@_|+;A83WcZE!oZ!+Ji{q8)eIac5xe49xu+yuqDg zFn5ljkW8Lh$Q(2kO{O;TnIPtwhIytl;^~Z-#{t6Q0GU1nhxw9AwCE=E8h<09I+@8OIl0Yay2K#1fv3uo;fRYkbg^#s^*2Ouoz#zRc2KAPj=Z zFcqTtV`x5u4rb87j2xK9ms^ydN%@)iumIX&J;aqWaiurYzBkkU2`~wkaSh_ThYcF=r2$`D;EN09n)r0g z7be1FxC8Elr(id{4sUAW=Og0h2V-G8EQ7S?M~wIpBlA#j9tzGo1AEC*EbNbk{ZYUl z1^n~52Jy#)^D)VMOfo+nCO}L*A5+h#wesTebvP1b4tg@F>J$ zkyvaw>A0M9TwVfq@r_$7cZl(P+h*X~HY23HXK8OmApZd;2)4j>h)Y)Bk`)ZZx`L5B z=gdcNF3=yEVKPjGJ7Fp8foFLbN4iCmZqa#g3tw`Nuy$Nw4ZspESi+TdTxrKGh^aY* znU(resn3H};X$i-tYyYbWai6f<||;rawY#~x-(N9Wu|Ik0*Yb+ie|#7X2P&DA5<|P z)R6C4rjJ}11w=Y&`JIByRh=j~^o88-d`tGFwxI0K(-MI#=F%48}| zrs9-AmdW$1es?jUV9IIG6H{hj$}CJd15?hzl!2Hs2vf#k%C)Qw*H{~FV98=ES%M{T zl?hipQGg{2v1B2ZEW(mlcrF(9bH|b%{((D=;A=4r0VXM`06|OT==?SS}UIWnj52SZ*7ZBbLI6rKKpk6h$Mlv0N^e zV_?fX$^T^oYz$#KMjpw?pKHT(9XwNL;h91^A6Vl17S&@lR3h>_SsbbJ(c!yX=X(7|dtSRD)FAud>r3sw`vs|n)Cr*LgISz;hd zj1UD~P;km+Tx}gCZ9++#aD48;6^|Fhmk;AhHyU)KL3cWKr{k#!#6S`;;7SY-JRbPi z10Q<~!C@{eFsUc8@+cO06pMH@@-V%b*wBa#1H1r7NIMjsiNfBv#_El49?vIe3Lp(V zPD8UDxj=9xh)~FcLZ&@%Ki31jTo3dSRG9DyO!&lgc$47DA-M8jAM7W{f(f!vSP82M zHrn%}J-Z971SO^q!t{&%SwqaEH|++~Zs&8d2)1VjhhEXsY(s2?U zC!t^x3MS!-BwUen30~&;k~7bjTp*VDA(r{!DcH>&H)&f&+Lm>~Q5 za!0V-krbE)3t%DK0eA9##FO_UL}F_Q41>6!HG%wZO=BaI1BI{%?u4bhK*4wI_^usI z+tIW=17^W3a2qUxd*A_B#iM|J20|LwR5K7eWMDN6td?l6CE9D_;9A%K8(}Z(BmeDa zW=AtSQDP@*?ai5Gw`JE{lXmVH0d8|KI7vS0;Sr zi;rlqfd(7eA;%j~tO3Ou7)b*oX+VJ^C~yQ5A2IT@C6T8s$uJFOLh6lBZv;g~P-Fy` zj^NTi8b$u-3VoqJZwYvN5bb498>~_M6OF_o@kj!agrpeMrVu0yi9jf~iE^7Lw~2C_ z`jJ88JaPdUL9QTIk=w|1+wk135I1LjyT9@Ny=S zjpQQvNP$7+b3C6iTaqA^^ZN|y6%WK4@!~k#5`v_0j!s_bK+dy`qWOb}zD+;*^pTGO z`FA-l2CI4n?Orh;M#L3yM@)z>;*Xe-KqLqWLBfy-BnpW}Vv%?x0ZBqq5R`Z&6Ujz$ zk$j{8DMX5p9mr0k)XG2Q$UdY3sYI#~J5rA{AdN^f(uQ;)r;#&AFVctfBZJ5VWCXc_ zTt%)UH<8=OT`VJrh8Ped;)+<^`NsqCLQIG+;*Xe-KqLqWLn4qUBpQiD;*kU-#h|uQ zZ!7h-Qg18uwo-2^^|mG<-be^S8(V2(D{XA0jjgn?l{TzfX=Ljeq!;N!`jJ6{daVL! zKpK%|qz&mnDv@f$j?^2}Zb7^dI@+xvM#LQnLi`aF+8v0vA}G4sfOsIj232+!|L;b- z-SJ2YQh;P5xkx?|g(M)ENHh|QBq3=?7!qMnb(E>&Tpj1?Xs3?$>Nr=&x!T(XW!DfR z+jpS>p{`vJyFtC9(UG0Xb}HKG$WG&S6tUBoy%gDpR3Mc|HBwH)MMwiOXi&ePpY?^|AI2V=t3?SR6QNnn-CPN=UhGQ)OYE2MNvaR zD5#hKN>yAFM3;4OH^ryk#@!9dA|DsrpzLSS^&yvwl~t6Wr~!fe-e)HFA!&>5?)Q&h zU$1HIou_l=%$YN1&YYP$`?5*3f*^E3xJ0luLB3y)UF~Vh|Y<`dP?AyD0xBT($<|=hkLoUKM;VShyJYCmtUb9#CaJ!+?Fepl>DvNAt#h*4WtTLy0RJ1_N%R^L5QNk` zB`;qp9F>2|&1=?PH#IO@7!pwOl4n%|gM5TadpCz$ZAAITw`U8Y*YT9?fFMM=qGbZX zp*MQg^HW@s32-@^#1^Wmou87XO zxh+AP*h6xwn;QfQ+JPp~>uS3rqQR^6y10Wsb`s4bxg_F@My!m-Uo zfuU;R#JU+3Y8-ImO9);fTDkdpwK^!4j}TR)HBqGPKAX78t$I)og7(9@qjRWt%49+NTaF~_ z`K5rM{q^ivB!)8AJp1!ZBSRCT39@ylXszN^aIsu%SkXz#5P7^k@Q-<#6;u)eEs zV6c!3mp2Pq;9Sw34;p@m{0LfPo#+M6JTKt?A4iBzw|WFA2-;WcWK|FaZ3~MP9u!mr zO zo$edaUF_rNEOo&M33!bLywMN#0=+})h!^9LxKg3^5^U+-;d zUc7nJ_%#AQL7O}xdbz9Zlay=!Cn*VIzZ}2)>;oM1F4`r>IiSA0D<8q-mDae`MW|uX zgXJhWf8Du8nwzDqN80)aE08v0oou9yXKAk^?ezyIAZ^mRA|p*e8ex$?qG7vxiCf)^ zTnO5jbvo3-0H}{x1Z~8+WKghQ?+`TEDXTTY^qNu?l3Tm)T>fT5O?RiCk%E4zv!vX7 zEU$E~J>idyv7GW6FnLCaYuXi1M-9fWrTt@Uw1tGtx*|7Efp|KFILoO5)J zpv7GL_xKq8+m?QBD(COh)A4uUUC?eikN)3tDgFP~WmMbLU!c$SpwISHsAHGe5bi*1 z)iW4FdohOgR;ZH@J89Wa#JUi>4YAu0TZ`D*Wup)~{F!QX?B09?qTN-_4fDo1ee)9G zZUJMyO7<>9%-^cYyhmq2Zd66Rg?N9fN>;1DITh*! zm)g|zLj~>k!$s6)L!RFbm({BoSM`(xZ3Eu&E_7m~e({{aZEit(9Pz|^1kay-=6txq zlCosD!%H0V*DD1t$s8AEU6MI@kU1n3-KrnFhM+Bdti~CdmkbU-eGP+Y1PcXSB+&~w zDgQ%>VLXqH*$|`}8=D;+&T72nBgCGqP`CB7AylftWjP3m@W|#IXD??lXx8*tOz}Yj zh(SK41Tn9RL&h&j&&(R929m+qLIN{_Xcwj3kmoyq8G?5AV{Y{zo)0b~310VDLWxGA ziryMb9S3Xz%_)U)BCAgDa{>6dKw5)Z=ThAqhl3?L?ryaXIqC|ewqb%9w+(UIP|A$y z-wXBh@`ufsFk-^JVwRXLg@W3pP--^w#1RuO^jKn~VnLOP{g#+*h}l*gv&7g>gETlz z+G5r-%z=5^;eW}D+13xG`o%0UdrlYBJ*P{Sn8q`pIi2CL#B4hgrOuSviY#sIUy7EM zN^PfE;W~u>FTOUiD<7`27oGrEWv&8KjET}sN zOKtrvapTJbb$prBc7`Qx8{)PhuEY{|V2Gd|7$UWuX^DGzsGz<)RBAiR66ZTdP<`h} zZL%e9(l9}tG)!tMwZyF-j@ecVskXkI_=w5KG+H^96P6`BK|ZOPsSD`gpn2R%VG? zinyhSJI4~YA94E;H{24J90Sd8jMO&55*Hf_U309|cCIDPdlBZ}i=;NEC2lF=mLhJX zC2njb@T-*CMp@z#Rf3wRlG@I*#O=KV^W`N{+h|K%^in~MUMjWy+!D9{GT?lf)bT8bxUwYa-;+?|q~(>)8K~3slv#^tABj5kT15L$qr`NSn7+Ic zx2p!Zcb^gmHk@Wvu0-NGmnUcL`ywm)g=Dsij}%ogTK4wRvpk#ogo z14Sq15>Ep2muR;;YMfisDIXXqJ>~3P-f5)8*t~_+?ty%UQxG`$EjaB2PCJ)>4xAP} zS>v3Ax`}4318Kg@?Dd1ld2so=m=SYV6JPoxeypXYOJOCB*^x9L!CvG@C@y<1hnNAw z-e^eHV=({7-tKawj`*&1hQnto%@Mt_>773nx9=mt7_Vv+VV9blyS4VsFKrq(`o zp{=gQd}vjBo~UsyPS;yBkdLCC9gd1m5vT zSN5OsS-GW~6hnz@p4l~^J-56$Kc?mEmL83C@)#{iccT-PVb(H*%+4?B5|KT=}h9>Lxl zd=|9uayGa8!B2f2#7bPiI@byz*Wo~XjZ^RU(P%?3%?qXJJ{t&ajZ;WdXzQ>T<6e>rI!FDpG=Usk zB81Wy?=J1UkKZ)XxF$>XuR5leyP9bY7mKJ2bCOzSk8cF_8yiXU%hk2H^R3 zfZaLv(;4<*B^U`Q{pAXZF0v#!8gYk+jdPv@*vEae7*VQ;}>E04cPc?2{fh{H+@hNqY1WL0&-{JQJhWk>`yoi`}5sv?#5TVXL9Ed#~+0ZSi#-rx9=VMa_qm zO0{0dQD1)&Ywy_|=S}GAFRYtCE1{CbtfZg~oAu)*z9=CaXU*w2C#BtbW5;Q;WeK#t z9^Ae1+-T$){N6Ys9Jva=JI6#LSK#-4#Mj8?Jk;fseb@XrTM--5QMCVi{Wg46KiQ9d zD}yboY!|IC(@%kD#4ayJ?{xuBA!x@Rq5dRj4*YWYPNV(#vtpQ+xTMjg&-$}EmyN58 zv~XHB()zyu>wmJ$n%r{93Y&V#3K|s`KTe|}$uy7q&LZ8gGs!p<)Cgi!L@{$`&V-H( zZY~5jTVZ8$^M*%A+K+ZbmFYDk%Z7Lt)`((v=nti^aa@h(Jj|?HD--DHw+BTlgOP6X zZiU{8f5zvNKG0R#m+FpKL0g9sVa(X{-0x@MNV9@@RV2NHG!}E7bFf+HG&V;ygQrLD z$w8=6y(@AN-a;vE*XZHw3;lNdBQ)N*z2w6)X%z83nU#)v_e{}=@#TqIbQk1iQfr%$ z#^)=t%8(r+FD`TW1_xOq}%A4SZgyL+rIrEvFYtX~6u?`oVkgR#R zpqCH&fDd~wJ~fphSc2VW(Rn(O8$Qcu%pM_y56_ar%0jQ0e;)C)eW1gQv9T>r%*%Da zjvT3gGGU4FK6v=r$G z+Akl<#hl?sJ)*r3ID{}pA6}V*@RIUY#@M{>q4wPALtm3rqrUEPMvT?c2kSR|3?J*S z%TSsNc)o-YXL2l3*cjetr1_X!)yFW`JxK3JSo$-%(xygNHUPFCHU`o;D)IbI|5J_Q zd)HW{tDsFBMi|;)L5+d_#A8A57-=LH(BKfYP+id}*asT4w9)Gtd@O z2DUIddqAUX8Hf}{ze*!5*lu2mTPSCL2&>hHo&>eNS*65Ij#d>!N5Nhq zy#_pAJ7>9=3vGz-DF?suXTP!-BT;_~8)GxfN)G*zv1!F9du&#%>>*>t9gaa7_`#K1 zfWwQ`KFi#K^&_pVn6?`SA8t+aSG0ufR4_Y&&YQ26v|lyoJh#b6i)Zkh)NbC8K{c6C zZ91qn>&6x)9Ulk0&Q}Umt7+bFLNdBBcX(h&2m|MyO!miV#AC-R?;Pq;NH|cQuaE64 zoj9^P_>$2Z9LUoOSQ^Pe(Gk_@Z=@DUlfsUJ|y zJixyD8D>tBVtOelKy)zQSuL0e^>h)nns2mTK9lj}twWb%gqkUo&&q?GQ?qlJ<4r_8 zR!dD^yjfwIBRiWrk2Fd$X)bYaXHaQYXw17V=cV_f&4jP114$Mfxt-92NKi*VL{=GfIpNd=n8|=?a>aPagYgfMcJBdg{H-yT3lb|M z*IeY9%W_@Fas^qgpyJNRPabu&1II0QD#{{B{f3-l$(6@M#9bb1%C4fa|K=E<_6gzqPpqRt2;c zLHnQOVJg8itT4-c@sCJxf2&E6>~Z2LyEktE2r~ zsmuM%MjCoVdk~TXd$i1F<$*QmNo^5!8}@=K2wHHNzr{LsPG@7sA0e*#dNo;Lh^xL_ z9ZPf7fz@%wRr^=dTtq#I{~0}L^3EvOar_u}lq;b~8M#c}Ig90rvRv7GX!4GojBq)q9F|FP2Qn>P?hpy@`=tnqGyeeZ!~~K0D}1>fsi~$uWl?bjjWU_-kL$ ziP_5&CTXK>Tur?eS`A8Tzg`V`YEP~9r=LeF!vcG92e7L; zgx!PjD$V*tW0Lb1_C3{l?sH}%2|~vEv6i#;80}=}Hfs@5#LspzNWU>@nk@mYfAB2W zW>oaX=u4xKtx6)jhe0xiG#Uv~iTbZX6&|)B>{GtMylSlf9t?v=tafc~-L&d3JNm?! z4%17@?u$qtef7};wy4GFUJDzsx-KIe=*nnhE4zmd^uX9pGxYg@iPt+Td#dfHEG%SOQ3_%PXS9{(@e z(wnvA`VQLiI_iJ@;Vr2D#vf_R!=1L}fezb3dncKDrF#Ht&%+x4%LzNjs$mI?qXQ3P zZTK*09nUX0tiZZoOTMZJCC?kE5%EkOyh-Fi(5_q}L%;etY;f?tgodBMYC!ObBKbRx ze*~T&kHG(IiGVx6z&fc&K+Ab&1$-&mOV+ zdh7GGb;SO|h>cm~Ip3G0c{Wo@U6diE&d1v@cvKCG(dxj&HhZM@KudO@T{~9kI0@RP z4HYP7L*OHEO>aF-Ul*DGG7PPB|)9fMG$3R~%1KhG0wD-BjGu8zzSgBpR zqyRix@id6pt2u_W?#YBW1NHM<#mJw8{U?ci;A-^j2#c z+v0AnaZ52s=d+|J{`bdP%A^5wtU=OT=3%-=K<`zkd(m@y(aS3uboyXlqv2;pDJg?; zT^_ZmT^>Chv*zCo+XwXL22--ou7M7b);F1LN)%^P@v~w*H&M}$%9uB~k9kVVPYL$p zCB}@(d{0bxuySYg`S73E=Y?7Q`)oVRp0r?g47=3uF&x?wOldEti0d$yaW8vV{%LIc zE%RU*s8sgoN{sEwm8QnvE9SaI$9tl~VKwrnS3NXO-*n2{eOPWkc&$6eBp-!>_RwOA zxgQkJ*Hof?UzNq3O3BERCd;E=|UQeq$fq z2P$k>K~y;{opU($CYqrOQrte+IraS0k$?K5;9J&y$wHBw#U?GFZ^EYTXL@UaB~QW! zpGC9>L3_bxYNJmUC73p9Zzri9L5c{iq9UzRJ;-u$ejwXOKC`ihEgTU9hC#*=o zRr&<&&H*GB+%nd(?CAnL{b?Y@(H`{_CN)OlsSk@AhNq{`rqscBTEE`gdArgTxYJ{y;@oM}nM_J`KnXdlzM(~p&I z#>#0u@L2C}1s?A$H?94Jg{N9q{AoFH2CWn4If9B@BRR3cJF43%zL8>)-3rCq#Gb~; ztWaMDq?i4bm~DQ|%Ht#ldJ948^8jf!=R+>YX)pGTN6Cx5I1p8E62tIf=dpbeOWy0c z$2*TLLabgo%u3S0{J$oKk6P=`ApAn3EEpgnQ_vx=X* zvY97kr8+5)gJ7N!;*du|Vj&(+MLh?$VqxH=!{zIeowThn@$kwVgAR=Q8~Sk82>r)?~x>+5~qy_YHJ z4xnuZ0s}CXTOKs~`9M#dlXb27lb)a;*Q^ZNiB)3SS7Y~THTj#ZMLjwu@Al+%&PLmJ z;(2iz!B4}USo9+ME-r^Fo(k5&69K2|t9Ht%k zTrsau+G5cVqo86G5c(|gfIjoE29CiVMLG5YHiGu$yFtr4_$SzbJ`w?Eu#^569Z z#8XyztoPkiq&O_2uNv>PYxjH)tP`=?9E8;-)+ojs?8&fYoBgWWhOGQU8ZmLdK4Rs9 z1gx6VCjm0DplT62agcyGA&T&E5!b!UkABT6Gpe6hJBO#=eVw_h3%WXzV-Wi!G zuNf&@vQl0!Qf@jkv&_>*$~{?S{6@-WS!I?W#TdnOnp!ePyDkMjSz?tvbcTXflID4b zS$0}qUap^r5WHARTp_eHldeNjN>yj{KlNWj7O{dQL)9ZEVKWcW$%bPB z{HcHuNvDq2o8LCj>_cU)ngJP%dPc9oDPPo3;hYK`e%bQjVOAe~ar zO{dE0T%p=&^O!Y!n9gyAk>l}n4!w?eI)~lJu_LRFz3Ci3_;hbRIxXtPXhF~%_muB{ z9W?Ob9YK@sap4`OU7hsnn|xUn{kkVt@ZYL2c&k!xS(A%!7<%0u&9tKEgI0XAuzY`O zYRvu!YFmri5VU_Sq&^ugkMt%K+ZAJwegV=G@XK|qI^WrCUar&WmPR#f?~$8F{~MBC z*VG}-2i?o;InH`_*J(YR;m07s6W0PRv1H$=h90zW+5q zZ9zJM_IqH`0!$Rd?LZuYwlNEn7GR?M$C$)XYn)+H-wu;k0kz9o$fC8dJ1is#`F}n^ zdmX#T82QZiitqIDoxyly48vVQ327}^_iGlCE_SgbXhj3)jD(=whLtAQAxvH!yB2fK z+7~c$zqXk250t2%%Ft`AIH?**xtz99E>NKytt@nk&WrZHn$r8fIN$=z!{JfQziNJ| zInmq|J?H^d6EgNPOKD6HH1e;x6Ik8JuNMJ7mc)-Wqu@^KoYYW zNn4X^kD#?j*1iEKGkqq+C(~L&$Fg-C=zVHi0If}a%oY&6yDM8OTy{2TUYr_fZe^{m z1`ZwT=@%k}^mLsTKW900J-y?0+8={n{a6l0=Ya>zcAkC8cE0z(|BH4`O1JZp!5z2r z|HRJP`M*f9wsR}Xskc)fgZtBCFmCD9VQB5J$38%>F0i!r4=A7LbjF;C))IySPU)SR z->s0c*ZzP1RS)zk=l3HRzr^p?lu^C3?`_u0x!kIoO$Bz8t2c6G$^oi}@0Gj7&bfY+ zk!I?1{2ZSZ-|?W#_{a8vGW+j0`Cz~)Df2hjGdN`i{TGxO|0~Y#PDYK)o!|D<_-l7g zjrKdEf9kH&z-*_k`_kNQj_tW<>)gl4qITPVXvz8NE^0ZQU4tLcX`BX~+g|RyD^uIP zDcy!1QuZo%CQE6ryJzC>1OC3p$WGbwKg54k8h^4UB(O6_+}%0;C0Y3Ab&CJ-ZkAO8 z*6}2BNQ0&GV_Hs~)RFjp zBz$CD_{C{fiM$wb_stMrBoOHZk8pbXD|-`VPulk%Bub zl&hSxZ@k`Fb>ldve4}X*T{eVEQI7W?P!CB_Q^(Ws-e6!@1PpbY))}#&W*V1AEO9!1 zON_X0zzK`fIhV0Egwk&h;H^TLie9y&*ATQVzjP~8K<#cru};R$hg+4Af}lP3OX@F^ z-dA*r_hkm;R~ZlTc3xn_{?3BWMGT*3tTP5xW3d^0rU7eSd%|$T)}2V0qwKpmS9JG7nZn9`Gc$*c>S#T*&HTwt8=u&U)*w zU34zHz=A>4h;>3HoAa8Wow$SijC8BH>+u}b^>`KDa}i8l>Gn$#_LG3Em(Y2{Z`996 zHutCf(eq#Tnl!qv3rX3|R^>xs0i$yrQS3Zgtxux;-#q_yM-V*T!@>7r%jF=f$z&&t zDgUodYc06L-23T@HW55Jy+120AAZQyy*W(%Tc_feMp}^R-+T|Dr{H>}{JCoN0Q?&c zz`p_K-KFrHy2x*F;xNyf1AhJ4{oJA2+{?A7zU^>|`Xi<^ApVv6eC&=ey}sWrpgHPR=x9Tb`ucr> zeHL_@Ver-%2EPr#-WRa<;P$3Hd->Suf!%?_*mEKYOg{6azBek4KiONsIofQB=e8FaVR<~wa}@~v`L3HEOs zdJnbF$$KbT)ljR~WA+hQ9%Gnq-hdbT{fqdBegc>dO5xSa39&ZTR>2>6%u@r9zT5(-}ygiIJ1kGMYr=!;54MFQ#N8a-5@rIzC zyq&mkBi<0S?{81eX$k*a#ymYwbe4iMhJiDN?e&2(B=E!e_r^OMH`sYR<+$P8R*2ij zx^EK&gZp3w7w3{RwQ^$&maVUf;_$KeSood$9D&arWLdActtHse_*H^B9-KS)7%;iR z96y=$_4^O&BWmemUJ4}V8P97tB(f7@h0}brdCZoUP%P3C!p=a5vmAW>BBVkDA zGDlcxEa-~=l6{UN1^u^SyVwBQc*IfWGe+8DzDhUtdE3QJc30(06W1j}iFwIpm6ewo zAn(%U`7@1FH||1ot3nF5D5e(IQazTm$&{9Ylt>A-TGY43Oy_u*c^kI-mYS(lv+r^$ zkqpIwL6BkKXh;|s@Mp--z!kxU?Uj!jnWf%b)v*1I z#obZrO_+Mi4P2Mi>R7*3+k4uzz+yt!EX^^`tf>L;moWGZKD4A@Sxv+C#l4o-n5A?~ zm#l2q-mthUU@pmhqw=qneWqRi6Y8gXB4pw`%GVOPFG(4vHXmCu3MnNCT9k8@#k(rh`Ul6}j`k2tsAeCKq zt2q{E4M=GupJ^_UF_%Pf6JfRLeLNqbFyIPx-)3{iF_$NU<30OuhbrvxxA3{a?kEpo zW}511rgQ2xPb`AFIScj`#~}0Rj#2EgBEZ`a5`P$WT!-A=1Q!# zO4L?uq@Yb{e?qcVw1@k1BWE_;vWyff+>(rxSr&|X8Y#y%7lzC>k+h^UtYa%|lEF&dkNhvo{2&V)zO|w7Fv7{Alh-ajoVM&{^fxM#3a=k2Rfep|o zEon9*Ev$1S`nY4BJbFUshwQ#Qn2}Opq46gfDYMckM1yyY6ob3ie)G{VaZ#AfX2e_Z z41RhIr69>XkYri>^g>386^ExYQgj?>bo-5z%yF^Q5|8<_ne+H=1*^cR3HWHnaI%Fw zaVI?iZR-ihz5gLyv^P7HK{aL4_*$d3C_Fibzz<)lf#1sAVT_l!;zxT6Lz%sKiBW>` zO3r4S4j_q?(#|(h!dSt}*ps2Po-RxJu(6488A`N*iW>wPmm4Jf_ivCvQ74{aK@YtL zefUpw<|EfSX1fB06Et?VqjB=MHN{HfFEUcBH2ydvWwC`fc4wr7EGgSEQnp%BUNcf? ze3+8#cb53V4QBi^miQ@__%)XJfF*vp5uZI~@5xB9j@es{6nGYcBkG>O&EHSpPQE8b zp^sW_KDIg05(5tjinIkZS3LMHD}MZs1>LX%dB9cP$P~q$<|-fRK+vv1Nq>;;C-5PM zKeAYuULz&ZB4}HG z1)EK47&ns_W=W-OMm}#EDjzeWenlJ&Egsa&mVhr9W%!t}8Dr*YBSla!RvFa00Cma+ zcLv@ojC_6u^#a+;+WP%nG=e-z3?p^Q22Vzr+l?}mS8^5_P-hz{5};0GP{#mjU_)I- z4VN4FoJzcPi0o%D|9F=Sm_8;Q0vmi8C4O#{puCc^)PPxLq{x6-$Y93VX;$jq`B*pf z5ZtQxq(DJC=O(N(@$7iARLzlSWu7yi*0wHYAsK`e1kG_1d9OZ-_1sv*AZWc1!_ULZ zs?D~krVct@o;Or;I%;@j9>49ZTD|lAd<1FD6s%>^&w(k>7k0zWU5@i{F<1cT^wK2M zilFVEpXY7H4O4D)K4K8Gf6muS76zsUvDc4y1i;thPYX;7>d&+a=;i%Q%@~h8w|hO`dAC3D`FQd*sGC z|JMSoCpH2;g7&xhSg+$5L0d7O-_<}8xD37kL}Qy!-&`L$RsD&`F-3YTyNu20dhN%{ zxqc_%#&^A}K39)vZVA=59Zw~Lv>Iy(R!nn+%4#a6)rV};5|M@bkHeEBrR_9)jRbbC zhV=7}OHl5o(z*3EDL&H@JgcjP0G-}r~{ar+RQMYhKV?4sLlx28%@*;MJNR+RngJhE1nVFku* z-F-k4G`mF$DM4K>Cr7%{r(C+|QBQfi1}RnX%CST`-J z7KSzLwGqXc2sirmXt2y%Uz5@Xq_Fxz`NN8=PQiWWDXm{hR;9s$Hs@~8$XQse#}}l` zJl)fIrrezjnsw9uG10_VL*Km6%N;%`!!JzGF1Q;$gxh@$$zXkrZJJnZ&GX60>{9=i zE+yYhv@vUY`y|=2}7qBzb;M~`cAIEahL#I?)T~XlE30{ zHpFc_Y2r@z3VC6roR2d>G-kP%T`WQz1PdGBA!wl+NtWfH>`c&2EVxd>SW=}O=+7P8 zo?94@)woU2Ud7F1u!dajgZaiZwnGdg5@?7EhJi%}zpIO(<7++Nwcr8WgrB5}p zn|VApMll`>VOR1o_)SP_dMbqZrV7xV4C6nYJP)3^gq@i>+DQGwNm!;>+1F7PL2J8# z+x$~n=%icSiC6^fpEtm6i=Oxk;>>y^qn?Kluh;MwqXwU)hSqcq8^IgI@t@yCeM&a{ z4*>%~`|S;!TPgtOkrSMc|8bYeK}$}gIVin0@j~C85AGozpkBHjBY|uNIL(V14?J}= zNTdEwHzWb43vL#}E`*F{*t)?-v*`AIiaS?s36`osL4Q9Ry9%Z1Nt>9@)6c}a0PFkF zIRW?pCsAi64;HOS22f@z8g_3}9x%xBR^Yi2G6%9x(0h4m z;B$6rxXXI@1g@u6U3Y_?Ru}-qrs{7V*lSbTH7E6VeD4Ok6P$afmbeABSwFvvhU7Zm zf8dm%FY08Et*L=ykaH&fx;?eKLkY_2wM=@o9@n4VJMOMB^U|3ViyUkx&-J?UVe7>X zBxv7NLR-&IaISUR_>x$wP;lvZ~RvkRRK?i{D&TnK;Oe$FNCTxYb3`L)(oPUAH^`2*q7 z)xbsH6YIt3Z*NC`;>lc`sj*l-51a=4Ar*oBQilD});O>~+M;%XJ-#2r`ud(92(x$^ zv&z~y@T~;CRQDXOBX2lP|Ld)x-N!S4Qzkb^0dRs?=!gW(ob;s?&N1emgqb=ukPrNi z{ZD>G&_@>2ZIW|flY>Q;_CLuFvLz_@{JfB6aN@8Qw5_EbhtYT^X?GTE7%A<(6!zaR zE2Xsh)JSM5g}`3Ng!3-Pwkz_G9PgUe$r6gAAYSrvsm^zLt=FU0?D7trqiG*YeA=@e zH0poYl}@@ksE2l|+t)+9%yE0|STf-!wdz#$ zcGj*NPoCcahCkM>i6{GaP^xpP>a7})(W;M)@qenmI#sK5I_I9exC4ATYei?Yh@be+ zTD9$jwXc5Ju2u6o!0o5Bs_DeI4od#Jt-9;Ppbl#3ysrv6839u)t!yfx@mk(Ny(CA5 zveEm*32GzV7M#-7oFLxrf|}#Fot|P=o}kFL1}5_FOTc1?P+l>1INa32As)SsXc znTxa-#(_Q>wwFY)qo0pGce>j!j{jXG8M>1bHYD=Gu*Q>(VGxh!`Ek;d^3&;6hc!Rq z@m(c{gm^oP&tvt_{g6I*yqK$T(l_)upX(2knf~x(QdarXOG$k`B0Wiu-IS#Hm~>;b zq*`?9@%Ja~GU9RS0P)VeNqYPpMtu*VBz!~IJuY1w9I+6ehhTSs>M0WsJAGY2W``9!5}XgL!S;p ze(2(u2X?Mkq21SdX^kdGwpx;PM{xr^`fNDe4B+gyzQ!1UL ztqIzh^U(9!JTH%jK8(E5({$I^wKpelw-n+519zz-rsqw1I{5-kMmk}9sF?CxHKRi9 zjk3L;PJbni|6%K_o?$cjeyoBy#P-qS5 z!5(^rC!qx4#iZBXi`72#d);45a=fHa3xcR8m{E_1)#Fxs^%4;D@`t`7?DEs??$yhN zG*Rr~ARos#+8KZPFnVuPx@;nWZy+V~vb$N?gWqwQB@#F*n9$1(`ZcVOzoxRi)A)1g zVtyU*<`P;f6=O{|A9)e9)O9#jg=Yj!!LuI!&2@Cv$$O(d9?6fdJ9?R~;NWj&*Kh2h z8+f<{kZ$1N-uF@f_CoNMXC7`XV=_+9BL!Sey(Hx_OH`;wevR`azqZ~l5WbGXPv6Z6 zE)oQ+a}E0q$t;JwrRzpk{ zkgcyJ=z>g5;(swTOK7DbvMCjQmkbJ%X-6%IuUFtE-bj7uFygy@=L#(hnYhsRHF^lH z=7r6!P)h6lT^#vRn)DrwF5+A&+rYkhfflmwUAz%_FM_YPK7+5fK67s<4sJ}~7FFWs zy5?ql;jTPHU$`559mNm@*w-gO5xzc>;UR^)*268qqrtbmH)HIr*GDJv^WGe6wh!tOPyGWTr8-Q zXX9(B>fv{D)Z@R+bMP(QG=plE)teY*RO`*&JAheD3TOV> z)xQ7gQ`J5)qxQ?Nt5P(B+A-SC>7cg-?Tn$FdsCVlP*%2s(tJuNC#PE5Pz)%aTy243 z(E5K2TE8%BHd@qXv7Iqm$AQCvly=gH*YWF^*1u?n=e4KA^MwpNpPh>PjjpDe?+v{k z%J&x6=6GvsCFja%Ik;&B-fQ6gxz8*NwW3$MUwcm|63TIkb9KuQkoMgqo(>1H45FgossJKDi|;*_x3rdavqlPNf3KAmco)ma9$PWLu| zL;ijOHotbY-+ap2U(2X{=VU=^vb2Q0;lsx-=;a5!no`=wnGDZ}!6-K0jTZS(TVqPQ7A^V> z!(Ubp_wqx+<#@TgxdfO>X-p-7%5@W(yxy88yt6>>iW77OpPz_d-eLJcD4)2Ba|Y?Z z-GxS!?l#K zB>$UiB>!8R;YS5)PwlSc9BB-1(AZ#_k#PB@51Lb*Riig&{stAuCbPq0{Ge;)+Rpt zNNDfe?m0}#^XhgXvIXf_VK%Kbo?*r0?J2_U(lE4USdes%51@gOzF~ziC5W2EcZ#7! z!}D8JT%pC{V_0QVKK3F}gTMXqYdxLaAa`(6`}>hOV~T@jnr1z`B)VD+S)DqSkRsR}NMK3(#%>Ul}C(ZtIJ5A0hs)p{G*p z(TI7ty*r(foJT3MWJ*iU({DyZ#Wnx3?kpTvT zAA>#cKZ4DBMDN{uOW-5j4L45Xb}6ha3>|{@EW4$(0MaYzJ9II4#ddXcW1Oh3%uc;a zYie?mGog?MF=aN_s@Ohd_P9^`#xXss=OFN1OOWi58?Y*f3L%B4(_4zp+MrNR^^ja% z9@opkHJxarx7-9iffujL=cXw8>U<;kp)p8y`PEk+o3kY{1v>)LeqKQ%p5|XB z7hxsES}E7$cCwZF@U4?1S-f#e%9)ZYgdT+lmCcjV&O4m;3#pC4$4W27PQFhge@i_l ztv*r-^F5{YIZXRk+;&MTz1HT0kSkEth!3G10W&tqDn;H__VrnPOz_q_|D zrM{P-ry+QHCqZk-D)dear-mqY@tlwn@9W8dOfo}kc~Tt-b2vtoQ{<;r^*5DUpEGGD(z{Iy}<>} zq&|R;C}5?u8xmH#0j=dJ56RTgkQ1YKkrW|sR{lo5t=JDrz?%W7caja>-WPU#5qhq; zLskcLB?)84n;mbs&}xkbbd+(5BN0iWNBW?q&hxsFm#hsu?_sP9ces7v(x~E_OuyVu zAC$uv(Y7j^Fyo}O&kpfl8|aQ(cR&LKZPfH?^*GM^9Dj@Ki2Ad+uIa_*R-((3_tOq7 zt*5!I=A%QNi1O(_Q}yU4XLU>4KU4JPn`5gLon>CzG>Q?tEo~oQ-+Gi>-*ymh^=*fc z>!VaMUFM@y{ik20=1-nqQ{VO#^0|eUHZ9eNQu|o$L@F8bqc7l52Tr7KYs4Z2@(1wL z*jfo`kNw`5B7qmNLYhad7Yn{Fj=~xxF^Ol**B$d5mGMosv0Y-{WWoMDW{hZ6v@!v! z$`R1x2%BMkd)3j9tWE?Mq_oM0Wc5-!DZ!LB?$DSJz76QJc}3@VZyi!EI&>6!VB=U$ z*P&J;wT#UyBMvP@Jrh{!kV9c`zOSKvL$tEO<6!A$9ZCSBCd~fW{|6lU@_8w&9qrS&~TeQFQkOd}-Xc&2Z#2?yNWzE8Ud zD1{yT<6rR+NUKGC9MJx~;7Dm-eWl9_TD$T5`@gc}WcnCpX23+y-kD~uw{Z&(cz!JI z*5xgLj^#^fR{>Z4b@!AuCH-8gRtOkhmXu4VMZoR%z|HjU`D7ZG@w`o4vDU5yTm)_P zG+t|=H>I78vgGv;wNS4AS2X+5y_btnVi8u+@c)~Zz}_zAUUpaWM#Lj%w@xFQPfwY{ zzbym)Gt+Ed6*@>q|?!*xZ$zW5OW4 z*7E*i>5y+62MIVh;Avv3HS5yTa**ajf0$|9=0fM96A`j_k)>ksm#{zB$4ICTyx{$k z{Fu&_Q<{cvFb_({e#BzyKRuqJ`>zK{xRnvDM$mR#No!RXEWHtV4iVb-^Ow?p!Yy`+U`)sD()uaqz3NSMpTxm2eI=hgmRZ0477I#B0y z(t);C62>WQ-$8n#u>y;J-gD4I`K{Aa18+k{QJ?VhmR+$TA%7_IPHMfjE~L#dUnzdq zH0`4`V&|CVp&_`9`7k_g_(=-A=FcPDS@Q`SM4nTCL*}7Vt z`+PnEwS7LG=07h5wz^H5)($uMlU_Q@pU$1Y{E&ESYG5UNYG_yCQb&U#dvmZ`zgWq` z8CO+qP~6@e@fOEorNLV$KIquXG`cd}S{#OyCeNytwiG0K6nCD-APJ=gKZ{pB#h2uu zwd7#OmCGVJ147ybpY^vYLFgEtl|a@*v)6S$I$zc(zFYEcr%)UnK#^*6I5cBr!l9X? zGbqn6{in!Mqd01}(JrCNT_vV*Ht~xAzXK%=tmK83lKg}!_0TXDOa4hV4?mBgQ^}-{ zILdsMMimEIK`j*&+2L+*)9+R{^gN-_ol~2O(@LC1_+Ri|38&$Y_48JD3}^6~i_c|v zT6;!^3{MmE9-SV=7x@4SbGy;jQ}Yn7`ya)Ai_GM{FBlWhwFgNp*wHD4M#Q!jaa&*s(pz7Vv5kobi*o%VDy6R(jh#(D|dx3~d! zUu`hYnZF9lVK?35fZYv25|Y0z2ILIOqCyfk3@ZK(Pc;O9;mDQLj2VS89gC2sQMk1s)H7IKo zt5uKM(X614^Is}vzoLlSQhj*;T`~I=xn_~6gHzAbcfp*{5}dpAQ(*j!v}l|i(|hJX zjv&n9bURHptp?dET>8RKa$X$V!{siwGaP{2NY8*+d8V|UxXq0Bn)Md{9d44rZs6jE zmQJfEo7h7-jCMys2?Q-TmHKW9W)xjglWvkkYH|bFWc;v<_O?MHYrnhB$OC@Wa|`x! z&|3Y?oHLB4fCHSvWj{%Jy3Nn=tPO$h7E$kAH#LDfi_%!a<0H<#5aE6nH}X9zXuaU8 zYLWWT6!MwgPST!IWc9cZ#vIVF-Q581QBM#WZxhNkJ$sC;Vn<9RN#c+Ap^?gJ1shur z{3{IYI5Y09e~}Eo1U(T;`}NRT*RP1RnfYe@i@wQhdi(g5#kGnT_diSxDh}sFcMq)m zD&T9Awvu=it!|1* zr$wNXfHCRz_QUA9Hs!`>#U5WO3?I~#c4aE)EyXG&rFl~GS<0joS&k^r`Tyc;#{iy3 z{!2t`1&ta6%-R3a`7jsKMCSzho`>a4%Q3izMuE-|Y((gov-uo;yEu80XCLgqDFpk? zn00OT%~*#{2M&c3Vj=+88pv#ghBJ`9L=D45WWpj`tAs*H3cof9yU7XE@3*vbILK~KZuaxjJsKA2DpG!>I>UuF>-*MXtSuXPI zBODm(;H|Bocb+2({}RbQ-LX~aXK!>U;1kY?Kb7Yn`NE{d7bQ;^<#nDP+zDOi?iW5f zFhej8HR9wOzp$H}8j$QXvWTl@SfK1JxzT{4bMsG!LZjro4xkX94$gpbo&klv`9gjC z)1h3A+JsJ^9QoX&*k1IQKJq)_hNe9rLX3+YfZT5E1av41hjfS1$>CWuw)Z4)A6sM=+n1i~0kDKMN z;-2+A`M#4>`8n3$M{I&tc3n#Q?mNMLw3z&B4u483MAO5f1s(}FZ#69j%TwVb%JIgh z*e!zH95(3hQri0{N%oZwF`FW2|2vsZiyXllg7(H_8vRkGhj9x%?E~ZiZ}JN>;m{fg zcb#0LuTpM$1QW+Ch=bP@BuETOi(bugt3|LzI!X-X?V|IdPTM27A+78oID-%QfA3<+N| zryd!HQzCS326HJ^euanm5=!EejkzWmm;|I2Ub9rvw!0B91#QuITH_G)KLzDoZC`v_ zzWddU2=$>6KL4+U8xcat}seAXIOl7CjInZ(Hrj6YZex+QB zlhcW?7am2wgg4RG%`uEF=avOqx;uM1PXpW^CN2Pdu#4p(8xS}QcK?&9g`b{;?O#aP zJXKF<6knb#ZLig6_#y*N8F1}5BqjDke;Q4d#JrHZ^^%`nW_ixNWs8X&< z*OZg~j?C*5GslRd1pDOAVW0fDk)Yg*6N!FH$LaKYV4Rh2-Hc*5=YjkP+T#=5Y8jpp zG|$9%%i$K__N9Qk5wS1um1X=-8`fnixQh0f_&%VBQ%FbWNX~xF zEs-~ICkuQLQTzDkXphl55gI@CdJZe&+0H?ZCbN4UCtZ_Z{;)ju`+YpN;u=`TQ5HeV zok-sU&tu*NUmPTuIMIf*na}N3_Mx@s!K47Qu{QV`z3x5xU~xbW1Z{sc>T>;K99Sh3ptp*MsFuykE!M)59eXBs88j}y|>$lFz-)@v|WqvEt!4~vY zsd_srKinu!_E=84DEdFf_qHHyXpJI3&kf?Ncd28r4Ec+57C~scMGhIW+Lfq39@zw( z63`rE^(yv09WWC3zKpD1&EK&vMW?vv^oXopK{!RaKnjK1Sed+$sQwEy#hO{d2+? zV8hdWm*aWO7>3a{q$6m5W#zY4QZ64(aAwy2I$+Yy`E1n+vw1=kcQS@8JVNV_qu6%0Jg{0R!dh^Rl56iL?En<&#a}WQ4*39J(EDBNU6S{v)9+5> zaBR*Gb4b#WJ+V-xk)SCFNKO7VU+4m#lb;gyfj_4lbjPgD(*o zWQkp%l+Rs2^U!1o7WfJ^2EK_s_b$E@%q@!~qhWuVAcNC=HGZ61s&6}zTDbp6$_H34 z#>o!EPk@narvB3-DO;^I$ND&FqLZ=i)qQ3<&ew>VbeoWwLvn6qRwcj1suVM(`Y zQ9jWQ6Uk}9&GA_Cd*bMKW@FllJ)CCPnA*34N}Dz;Yw3|4LbK+O1O?5JtonJrfL zp&%Q+(ymV0EC2f^iAeht4o!LA|gm#Gg~ZpHuKm{22v&mp54r8bvCV2Ke(-DL>4sibUsB;7oS~ z;_~NK;tu0)3_jkXyr)EsF#`MTxWfwV4*722r{?7vP|;JzxH)gnBHap)Ls43j8CgSQKY^4}=hOIPg;c64kiI1~K1wkOb)Zr3W zoB2Qe81u?pTCwO{-M$@EI@%$$?Hxk1*8j@K#MLIe7e9uF0Q!E|^ZXR{50}vy)Rgw< z$jhvk%8!2okyrAD{9H7gm~W9kPLR*o7bRK?WtgGMfJx&tv7#xn*N*K?9(BAJMYbt zAN@DI`N>Be@s73K?|hWmo7+Fi?9JZk-rRJ8`t%#!BNx6@@TvZcc2)Sk8Tl?AhTad4 z#;LTk?7->udRUO_;USVx$`I2FF^dqhh{bF|OgF^%5aVMpPQ;v;QmrmU%u>V%UfeB= z_eQ)oviEr8ZP-(ItwjN7d}(M6o_zQU@N%?oj2$=6j^@sDrfUp{TRP9fF{RqdP}}%Z zN*j>SB2&u+z&4~S1k1qQVT<!}(EC}m&hWTj;i5b! zyP@z|lm;J;dGU&8*Jk9oJDtb#Yyf$P7fI@$LHKRJ{!E&-KJ59>qMPmrVwsIBq7jab_T&3G7NBe0^(3v*a0?@xRe?#7l zQ~!yZ^6*y2-X>VPiW0ckTJZDx@Ej5m`KEr6Sb2CshO z8ItQir9~8wq72eXK-z=1J?w1>-psT`23*?r`VXL?on*&ws|Nt#0D~~~1ClU3V0Su> zxZ^Bt{0Fcv%_U1b_DJ%+DY51s1B}cbI1d)IH#2QBpr&ClzW8t8a(ffqEi^bq|6hj} zT_VyQ+H*>KHO1*bC%zYp-(!~Lkhmu|ZzE0s;I10x5A&nr(S&vQ1goE&ZQ-!)Oy53X z!s49&pTVLvZrAi0*9W_Yt|`(D)Qw_ysXRpRH-8q741o12ff@9$LNU*N=5oS+#hcQ8 z{aJUMaVHy1Ay$vvSCVU++*k5I3D36@bwC29eJ+0*+=K1lY6jeoe~g*iS&_Hz1$H*V6z zx%a`arLw0yJ8Z1*Fh*Qo7H7lLX^w%gxFYr}QFO3a;bKwj!=AdaQ}e|#eS5f{42>IS zGsfe8u}mj6BzZdi7sy`x&zI-pKX#RXRsAONG+%PDuKC88zRk5@(+`;T1c)blvaxVa zGh{x>B4}q{+!8t(BD-L6maR4j&#Z>+v0SqMz?O^W9qc*Eo}=tJ#-3Z)a~#i}$+)2j zyw+8sGvU?8yUKKS9Q%N{qfC#TaH12k*5)>x@NOH+zC{{HK$F#u^W& zW3IA{3G$z#o$zqVePMlQJ;3;Arutz78eot$Jj_%dqvU3bpYUx!gS~LZF(;s|7cYoUQCSnBm z?BgxiDnWCNO09vs%5!y^Zf#9=Novjh!J^Xzy`0V%>8&AuKL_j{-2Q>obZZIdRO znan%1B=iy4rFD(MwLx0r+Hk75L!WWTpHkQKaN9BbqJpr~`D((E5m=S;S&8!KI)V-N zW$E!!AkVwFM$Ds=RQjw*yQNeI-H1h={Ca#49HT$e{;;ldWx}VjQF!phaI2p+hY6kJ zudcaOK(`^-`a6fsZ{Z@?dOY3As6UgguTv=#c0OQ}r@HPjoWP#7HK&OK`Tp@anrhJV z+ZZl9p7vlwRv-0~2#ot%Em2RPjYdLbCbc4P^2~9piEz zxSP1#Z*V!?W#?+Z{bsnS*3E9J9gqJlArJm1L({RJBCYX5`jb=&V_pA`5+B~k7cqvn zT_tsRBQIoH^S@bwJ0j?IMTz*HzG!IP)SB3Y`$RUiV(#gBA+@S@0G-^Bu(~e$Ep}9Y zTfPDJmi!%F3V0jK-g5um3z{j{H!1apJ-8nNsUDVkWDlJ#?2Gbdj?Xi4Xm~TzKHSp> zwVAN?Ak~Dm3vXuH_C00r!pQTwmBnt1<5~}F%^a4Q=jDv@FJ_c~p20F<{~D<#=Iiig zrup|ceiYXI8L;lofK`_TYkmf-SsAcq?2&#H*7yuq6&bL`WWgGh0qdL$ScCS6KMJcT z16Gd=SY5JU9e>YC!*B6s((tSIgdc_VAxfD2{dc^XefiFN#2aRP+cRMOIRjS9d-d)3 z?)Mq_f0L0v$m%v>H6hi+BY-zEZRLCNkG7*eqx^!5@;7I-V>VJvzPko*W*ckYYe~1m zgkPOecU4B+W3%cWol*DjjJnTe{o%q+2#ug*sN)e-oB_?A0j+Bmv=i@ITk;*=%$6K_ z*9{ruhWCsDslL60{EyD+PX8;rTl4+%T>(B-wA!5uDKeKyk=^flQPvyrl7`AwyJo#_ zB0ud)n0hY1FO%--c0$8-M;7AC2h_IukT}^3y{is5ke21de$m6$ROa>Iv;b=!I z1`Q5#K(kW`vzr;nlSVqO%j-Hw=&dCle06dZwA2|wJ=4{6yHKWvmbS}7pScJ#mcGWK z6Ij21RM&MgtHqtP8R$-VXCpr^T?7j_=^|E*inOWL&7>uem0H(X;))NxP?WE%CdUIU z5&BjPnhIH4V;1`J^9^I5F{gV8I&5OM;PqR36>)95`Hbby?p37i-Hmyt;Bj-_LEJmL zjWLP0xA2x86L^cV`mqMEzo&OKU=8l`z^VfGkAdHGEmKb?`xn>BGWD?k zf9Zgu{wp1j+Jbu{paYUVs_T61^*?i@mi>RceG7b3MfU$q+9Wq=N^fYOX$kZee3Vx+ z+(j+;N?VXxp-n?u9zOO~sx8Pa=&rlS>Y5gi>f+kkWuf?Lao0sfO%ZpS2DJq&h^R%^ z_p2d*_*(0`<(2>U+?%9nDXzQ!{rvj*q{-YnbLPyyys)49XJL~v z3%vt0J{}q$X?9+4KlQ9R+Hu*06y0J%y4(k&a3=Dhh~HK{4@giVkB?z?YT$YAz-@QT zKLt_wRvXr95yvzIyBZQ~BSog{7&YVRc|3(eW)+vStWepg1Ydz*2=>}gL|G@t$~I{Tm_e)1}50t0#cN3TZY!|6Q!fRaB~ zw3IueXaD!%^tFKhY2R+#44hnY&=)!Hige9>S-Jhy=o~=3PaxI*?vYnx<^bM4h`0T6 zcmq=XQl>77odufn4)|O9-_^Vt8Tp@Lm7QruKq^7<{P$K7MM8KKDvVe{%LiCRo~TVS za5j=vR2O3vHTnPlX9UF>H4T^%R6}HT5cNjrp3dILw80~S8L`|a510`yWk$%+8PSTk z8Xl)1(Tq^_fpVV*bKql0OTNN|JAsWqk-4Ht=vBzq?w?QQqBLsF=#1r!O^ z{0cln&^A^)N~ui)QVmG;=Un#+@mV8iY#s8iQ}WlmLUh!hUOAw|uaN40w{*a}>t2cU z3gpSZ@dZb6o<4fSZ6Y>m&;MZbehNPe#|U8bQo+x<;05m2HwOBG5J87nWA#)T;#hR6 z2>L%pUoeM#8#w(1eTq-;=JT+og5UTAmz_tRWM^PE()a``&x4m1T3j`>qYKjOpyBn~ z`>H1|LT5iNnbcgT_og?dH{1UQz3IhVpfi9Y<0sTp4G|nEj?Ed^i?-nt?3;?6kNCa+ z(P~6dNaqpXmBd>%_k?v(@}J{e!!Nr1vCrT`S5C`#8ztX<^eZKL*m_=aOu1x4mG(ZW z!RPA%v4NWNdN4A?+i!uku^(J*(qo7SdW;KhpBfoYnxSbn1eU?88hJLnzB%ge)4Fii zbwwz6OHV{DwPTb&1FUSo!YBC0so9$;wzK_P+`o%w_yku2zUp!9KhK8Z*CM{he)<{? zO*Nv)_D8DZx>_+)FYO`eOB!foC4uy0^7lpfGp$K&+fV&S(xwEpmpn$#w(O6ze4wS_Ot8fr3I#;iU z{N91Tp!{DRBi?nRv5OrPIMUau-|4<&sd_~yg-rm)LZ)jXTJi+ zG6<_ke|95Bw~~X4=4ezbv`CJA7+=0Lu*bVWc@%|0>tlOBEvh`FHoW^%6tnPJxC({F zW`E2(b)41q(YxpHP95iOf!DW6e{LUCYotFY|06#FYhx4^|2TFFJx=-m7=@*_F&365 z1{UojXa^>$|NTmw*+qW$_fDzbC$Vzp_1}#CRjEYv%F8I(fwbv4+UIP*`1-D{Xi?s0a%p%H+GM*iq8+0_TzMKs zZ_g-|Uq_^h1-|!M{uzu>EXIbHaGEpv#{Rh4g3!K!=^yra0h6>=;`(mPHvV?qpsl87&<6iVwb7Ocb2_^Q3={SxQapmz3nAAFS$NYqz1h#k1wO^w2pqFSJe zofq|~nxC59g0yNIsp+Oc>5YT(*9}V7?xTCaRhm^H+>RWv>E9x)YLn{wWrNa{gYy4; zP9nT&tb1D@wRT$<~ft zuyn@9WPu_K)#o1U=2ce})yVP$M3(ne-iTGj8?mZL5$3AzI5*&WT#HZ8_m<+v@W798 zBhDpOSE1gUqR#IKEZJY~t45r!jNMW)V3h+_IXpP3ABRhvihbJf8aQdh2I5l}#fNk{ zg5d%T7hn_v21OLB+TLJ%>IUG`5XPqqxye64e10W*F?LM;`r^R!14ze?;rbV2$Dm-) z7~Fx}>p+9+9{(Eq3E-h;eDg?d4W;A5cBvuypX#*HqZQuSSRsrn0h<4bY_=B-+MUibY2 zJ=EhpKZXi7vToqm4GIFqhiQw>mV{;C1UEqqqiz2w%wL9KdI6bsqYx!Mg4W0Ooo8=s z-~1kLW9jHd^g{kt>>1m7&_^RZ6A)EOsZ%JW9&5rxDRh!`Kdi2tkn}~;pf;0EhSa&Pjs5?5=5~Ni>H;O#> z;PlF$#*JD*1+81Z@qMhUix1>Re{!g!6@m5dxlso+;|RqNcZ}du7scn_aif9w4CF?$ z!}zGw*{#S~;zqH(c+H-Hy}SVLV@IKI4`v+3wRh__h2M+?%ro;FqN8LbcA?OJ8H=@Q z;O)I58N0?b^07ri$x6An1bbW8)O3#jW2L{+cWhpzAL-R@@Y!jznz;{cE{VU{a zeKjRRmt5;#i;`=Vk~cwO;PzdAHA+H)l-!7tH7FT}-KDk)TZK?aw>FKOaT)8zdS#uD zo(R~VRPXChWR^VraDLG< zaNa%Bsg`N{4BCZUqs*U{Z`EgW0H@oZE2^mvKW_(}jyp~o#uP+jL_Fdhu)HV+2J7-o z8a_kW+oSr*X??ca*Wo%nFWoRT`w0y`p#Sg*PqVYsvF!m5p*b-fcXGWvDnbowfmt?A zQ0-F2(^&PW;&W^AKL`F+7$ZZ}vx8I#;z8edo}eh9G2xy$Cmi`P>2tMB%a0B0jjYbd znu_(@bhbaC?k=JeoNk-k4oIZ`s+jK#YrtK~JZ&A-17Cw? zdW2^Wlm^WLkcSa*k`r^lu7Y^^=TO$sE; z5tF_;PDYa2Ks87~YR<5Z+$N6hjwbR%m$9 z<^i@IXfmYFsMOLArvqnvo%N&!pJPqS!x2|qSg%ueYjVNsC&?&BtC4CS>=@Mq%!k=> z0#ztg_2f-Hn)gl6Mm3Day>L=&-!zQ^*ABj$?LnCYNbdX5zWY&AweKr9S>V%}L~rPx zBB!DolsJ+nxd!wg^IFc7|yibu9s-39zw(00V9X)Lq%{?=EPxWyT zm4|{!yCQgz{`)m_lUUn;!wAK4jNY9Q7!~kJRy?Z0_+n=S2F`C)V8oXBP$_c}>;dQx zs}lkP)zlwHI`;j;QJl!CAWpp4EyxvXXWoc(?EA&hIya#o4vwO}8b3A_?bf(?<*abr7^a*9gw|oa zx}H+|Zw}zZre_XHUkq%>H?CS(ckLuv_xcxxEv!1s-X=tZK|;bZ!tF3l6RqaciJ!J6 z&}1IYjBWQ#VV%ywdC2BE^b}6+c#3SU?-kzGZ~1>X9y11VnBsIfvxqbA{u?O%FcdFf zk(EVq6*eLuZD!ewoVTI(B=v3`mEy2`8i9t@~~^b3=Gtzu=69ux6B zoGvq-Qe=h)>}?iU*J*R#vP>I#yQP9mQ!VS@C=1j+GU^K{{4e{8GVr zu&h{wT(P5hCDO5@IX7BozpUsIhn5wwxLyD_O&GVP@Vs#hN}r2#Z2oj$=keFT_En|F z4bT5CImdRdHn810l=OK1oS)7)&J5-LFq8=AAi5*z5!=EipBp&3k02fU{=w%|&f!6n z%x$B3d^~n(3>=HQQ6hG%)*u}_R<}JDp?h1R1GPgR#z&oZR{+B^%{wl9$2Y~ySzEBL zw*}`vokPBei=eS~V+~k6ALb+?eYzlLyOh&n+7ERr5qVu<+c;afC(2SE(ZeyTT6&Zi zLyckye)utI$2We}1sO?WoDsO4EX(J<&CAT5+!BpM!?d z_$6U6TfuB%7&Gr76{p`E>QPpky2Do4VBBE0D!!Y+xYa4Rjr&Ta1=THbq_e5x8e-9PyZkG`B@*wwy0ys-hFz=r?lEI3ABJu z@Qbset7GsrMB-ba3E(|G!O>?^8=V**vWD)$`awU<1cR|O^N7-q%XD!-9 zGi{)mE`KZfy$7dR5=IeP*%VYqOa?BrGWpYK#i-En$|FPziD(09o&B_OI^Dhy_CquV zR7+>>LG}BM9-^a_Q`Ozjp1^Iy}>*l>G~f|7r% zy{K!*xuHE0X(`RnXNRPgr=lJ!mHKDKP|qvlqST|rGepjZ>qUeu?dL>9Q}CFUqW#q0 zcNxi=?)N#U=Pi)Wp$ql|+17M+(R8KUpSf=M1qi}BfIuA1AoLKQ6DarTvB5*Zf<6a2 z#wU2oxCq=O3f$gu+?fb${yVs6A0o9P5vsr__(?o@3;80xf^?aY{~of^U$mzSWnAMy zGpEdSR?~KzTQjhaC>DY82}SuXF)-t##+8cPADjDg(RmSPhxZb~2iKM4xUfGbm~vlf5X49A{=!~v3twgBJ1=* zz1*f3S2QngThR>vR9kuL@>Y%8gZJuv5Oh}DkKHPg=BSJEeca58b6qSBVbBxaAp(;o zcn4HpNuA;=p?eLRFdHeZZ>YN`JgpthCPbYdN$y?5wIO#K%|o#byG1n`nYHD#vDO~1 zvz4`Qt(MlYIInRAxK@w2(k8lzr5$o@pr1%t88Ee@_3dY9J<1s0O7R>i9SewbLS)DamD%*mIf_LNYsH9BGA)02Vk z#jvldhG#pU!|P*HLVcH$3vLUS>1oxVg{cCypbM?+ zf_L}Fd#FCS3#Tj&!eJ;yc8t$R`P&7-L<*gD`PSGBYN z%Doxz`L$(ZrdN)pyXZLha=&g>Z`LrS#J25Msa)_qdtF;yD|Q&#>RL0D`~ODTVr#V2 zM^0<2!<@YpwcM)I^7CjdQ^Qyz9wljTeXosFZ^L`Yvm)j;yx?$p>I@V(xxhIW(0$5h zi`u}=(^MQ+CNY1GpRoBx!yEhYO0}n;huADLgJ;DZ_MKNUE=(V>2>1~{1#|3{7RW9?!&dAvW#AS%KBQd64NQ&O3 zc0aTxg`z=y?k>EK&?9k~2*)}7?xK$;HKD$5QQx;MlD9;ebg`ZbCXg=++@N& z;`X@f`=vTiy9a(ZPL}<2V?t!!dK7LF>8B2-3~u6tf1l>1+HyKUbAq5gQD>^99(w>x zqAfO;3p>^a=i!SqrbL?ya|mZ4#XzLknMk~JKPLU7rC?!vGTDRv_P{&nMYPsm$VVNl zo#etZTI-?RqV7@Dre&fBEqv;II`QGxACTRCrSjwv{Fb3*)7$J1`|BClVhh_D<))VU z<-WbnT-VTjkPz;JFg=tD4HV-U+b&CetS#Y*v2&ILWZ*5w(2fin=IK#{+lTKj$GhcG zY9%ac`G@eXzxDUfdQQ+dsXM9z^`G^$5?W9@Jgjt|>jD37AZ=;v$bO)^m=Lo&if$cl zN3`q#oX#5$DXB)x49t~2ispR}DDYtTrk_G9PEs5dFSa1^icVq}nBQ<({@ux3;-|@U zQYdd67v|h577?yYDP9@~iOy8&hdewiv(-9PSdWid(cA(Ghy%=a?3imt@5Djsc3~}~ z3(sruz8``byQ}gO8S4$u?ppfLL#mFL3EPkhKAI-7@n|cRYE>*$>Zb?O=q%@6@aD#} z*t47$3TjF{3%k#Z^XJmKF{@NL*^AqQ--PTWE+&R!Wu|kNeEeeQGS&o%*%Q@;lIw?# zQ@HfVOQA~-y%ah&kA6{{!}KHjLfMD*g{I+YHhxdT^WH_%@Fb^X8qzD|>3DOdxQ9!R zybO3REAUg`~C^ZeKmY>k7 zE@086V9^!E;#EL;73I5t1-_4TDOkL!VDYMg1#+Gtn&Z+VuL0g`3cT0C@D2dp0l<3= z@bHZs)T#ptyaNh61q3(H-_WX=8eL3#5{7yo(GZ0;+AHy6Ik1ne zGNmp1&_^Ln>u^{gT_*%~pf&r@haolIXm~@MkMkX94X5e@tu>v=9*RU7-oW`j*!gnDE$g&VT@INZ3Z&xXI3895}xQ>vProFCgOsc)DI!=MS`YDLYIu+5+(K zscqzK0q|_~d}7vS#OXbe6fgBHn}(cXs|3t{b;1RGE)%t6DmvF&qeMVmlF9JDGIMSQ zjrM^(q2SM7P)GRnx7F`=!XrOA97nL`9d*Q?!s>oA;zNG7yMM(0I*~?vS2~sNK2kMqdr;+%O7l@tZOPpR+BN281DKz&+$R69rs5YGynkf$BV$#4hOw$UZLAuR)6;q{YI)$e%P&N!%2Mxw=I+Fk2=zcR zo0Fk=afwD-|5L0LH}GPAnzZx&lu(~(c0uDb?B-SrQOXqRk@jefQ)1v)U@!7+vYu7@ zitLzBTocAm#`wwGEEv7kG-!3OGCgK9c*($bk16l^Yd#7*l4I~v;KMra$HECcnK+jK zx)=Nwh3>yiQ#C*lwWXX(RBAm}hHpVS`VQA zN%~Yn8}FAsgYDGpW<^^cV5dgxSkg%Q`F^aQhx`c*XS<>!E5P>uvAnmPEkn9-xP1}) z*MC0#i~dYV0M*jNiVS#<;LCAEWCD4TMA&{kZ9U-YLXE6gy~MlKv@2`{JFyD}H+6%0 zMc@*VCn9w6*G8!{-Cu`*r@Kc*I6PT#ZKHY>?mHavvuUTwb**oz-)V2D-`5;gzdI3) zNB2$jWa5tG4xDA!(a(L4WD@uF?^L<(Uw1J@-Zt-YDs8?E@^)TZ?!S??L-SMOv^V{K za$3(%;kkZ&v;EIw<>>Xc*j}z4^-gPJ8^xJN zq-+8&?oW};*o>TYt($?zTfNJ{`D(%WY9YCB-xBVBs>73wc(QR@GtSDx`F}Q| zDjq&T!G8>#P6G?}_?sO5|LYB+vBN)!#whywC^Fmw@C~{>{#ZIBDKJ9t zD4vAa=OhP=V(b%=1hHw71siQ1MHZ;fRZ5OXgY(gI7T;LlbN)L58(30{J8Waiq}0d0 zx76nbTDKwIf7>^$9@x!OTId9o$ljv|QeyLxTu2imHEB+-2|8$OO*rWVQlie^?K@U3 z7_GM6@@~Xa9^IzFXRI$7dYF3ZUNrtQ1-^*3ZpbLB@MHPhDP###Uec=i*LJuVUxoFZ zp=S4pA!j!?V0M3>)&#!LgwtiX;M3!r`0pK8r^vBp#Gk@~PjlhfBjaTJe|TJX>vNE4 z@5acq{xc_;AO0|1(-w#`!(S ze*&j_pHNQx4*yc}_aOhz#8yN%XDM~4`JHEke-!!Y?!9pB^=kg%XN2F4{IteIoT-1k ziq3mkpzGw~wVi?|Zg*NdPJ8FgwmS>&h}+z)75Q9Kr@&R` zb(l3cijS8mS0qI+b)DMyal6y>HJz*0CQI~|clYKS=WOoQiSfHNtF;E4fzWR1v~lzu zDXB4W+UmSj3QQHVeB0@Goh8ueroc@bw>uShX*+q(K)eL*z1(Dpci&mKGq0x8w5Ip+ z2-e!pwAECr;1W>te~PET5rzU+sc~v@G@;;?A*pUk-A<>)eXfS$=Y!C%c<$J?32geq zqLjh3=IgA9rn~JVn{+14=wpj=5#>C>f0hFL$bieRi$SoeVtSx#w*HET48Eu)a zK9tZ2T9bzLR`M9X)t-(rt$emYhGD%XS<){5~|Ef8xzn*`UOAfDV}9Y?a*5W_RGm-YQLnTU(_;R4Ud%BeQKxg z-}TE(<|*nZo68yn=%8@yldZI(-%6Y>|<*812O5?0Peb51W0d8%|+y9hvB%oJr zcHoXeC(61LS&p-~Y`ip=t#{VE62Jd2+C`L5@4O6jkWlsub{p&QuPF@W{==WBwDwQH zoPLFZm8V+JQW0Lt2o0F*rAz=7XiYj$L7e?WrQoWatCm|4Eq8@duI3eP_cuO{Q>j5? z(%Wxi*{)-i2GeSL?OdXS+<6CmUAdp+f(q}cDa>H$Y?t$ZbGP#f>}gqDo#U$A*(N5K z;_Ypg| zlRUF2BiN<1DjSq-1Z5w`2&!#5zAO`MQp*jCmJ6KhKwnUsUXN)Ll{`iiuJp#SN-CL$ zS#~wX^C73U>|DtveV8?aUCFA84(4uj7Q1SV4=0ai$1An+!&w^Bt?9=qvt741PN3wx ztdpp@J4>DSCJuGIa^b_c3jp)~T+IGB^K7fhv{IS<1uSDTWHqCV~lS;xf#@{QuC}b6K45hSE4B%HH~-i`ugxJze~waG;y_(U!CKW z|1SF~jL|*HE}b}2T^Ot60kbXcG@hi+woTTDjq!Gx%SK@~d(?fE`zqF8#B7Dr zcgM`~xo4c^Yog`mE9GcL1Y>4|-hL&sVNS%E{%numuPLP2LUUbP){*;e?s(=YTvhmn zbEoqi=enJ%xB|@THJIt9@GRe@%<@&P>Y}5$ImH`{^X)18?`#{~SBo^$Z4z;`!E@c~ zS2;F~tU69V1CHvr>XmWwDlJ<9YK>Q@yU<=Ap5J4lIlnqi6wrd4LyhQFxOsGybDUH^ zH<)FU%oqdWJLn})Y#wG$9i*u!6=ogqCAzO<3*BpsT5YlW9(N}D$``*s(YXt~P;Jy` z3xK`LX%V_E`EU~^SE)OqK1^!T{NmYGF3*uiW%(i$qZM=J(STJtB!`9hJvqi*a6RI%~gv zmD3<68qFgfb(< zqDMPQHtk*J;WCbX8sDBjrj}Wq!-F380)O3WXU)! zRaZWN{~q2$>Y?TA4yPVH#A~&c`Ha&RJM+spxmvu1t&pvZddXBVi8V6D-;i=0dgj;Z zRJ)eH&L%Pc>|qtZbPz>+0;<%ScUyDVTGxC~MUC+WR|Mxr9Cxx}Wayj8qwX#h<1fX^iE|&7ciTG@uR@F z)L8|L?{Uv(d7vAW4!1~IM2T5*=K5!kV5SP*k%)R%a)Sk`fG1pv=p#_}wSFR41KmUjwy*4{h9xgA-iZ|z2 zTX5O+Fu>n!Rr}_N^exhSro#;SIa(yRlYrOH*gU6Edxuk_y`XHab1!C?Np@vj$EZCt zzVo9w=QE>rm2;l+!ZM9Ezsv~^H%A%!9P6W~hepV+w1ZmV0M=)reJbV1Ru$u6*5iwo zumEP;?(wXt?_nipKLPTr;Nhi!gJ+JwC4jI%y+dZvy|v=aujcsmbPW7vwF># z%ULx$T9jItUsla*g&Xrr?917h!UywRRwtf=*Q}~7+al?~d2E==Y1R1rac^0qReznV z_QE)f+q3QopmiF#Yup`fe}1n0DYuhNH!W8{#rmcv42vSKMyx>oDdMbXfIlh9Hm$GE}H%@)w#2@<`t8t57H3#dak8JLPhDqoGj`Pop8z zuwUWF3H-&jzX6vqtHzKd_Uu*g+2zv6GgysJm|y45V>q8tx;$Wi+K5m6HST&hHwmqH z_VA&Q9#TP-HgA`Z=Ikq4Pm*X56d0WE-#4UhSMJm z*@it1qpZg$?85hr{&-m@kE^=HLG{E}QB5y79>|ZgKa~IH(TS|F;Mv37p{Z=NxYkG3 z;d1CH8~kT8-h6ZvpSUemFh4oUX4YDVk5xx7zJ%aB=IC2=3O0KZr<2v^ni6WugANV5 z-+wL(IFhC7q>D|~8RJJ>%%7dg?dRJ60`2U?vdNMcmf0-Kfy=5%YxNYi`!6f{-hTyq zG53JK!#5Ka#-tzK^6eo@Yi|dznTfHvBB2>OI;so#GK0xvht?IgKn-CFG=9IKkn$Q( zI`M}$d@oSx{pu4gI4R*_lzu0dFVn#W{T*!3Q?NltjgH^1E5!Y-po`TW{k#>pp*@gW zyRSCG1x#xSYhGDheJy^i+iBu{clgs#?ao!=ZHGS(t=qW$5vI{yz_{Qe7Pcmdx#SFcE~EU9Mh@7N{0F15o)mQ?Ha-F~w12+uCGn6#ibO>un@qociC-*hs_DHkBfvXOtg7ie>Cu#(C>k-d$-mwI zR+iW2H9D=|`L_9%xE@74L?f-P8`z1;^+vlD)~Gd^pKROY*05=g5$qGWy>b#;;I47b zahA?o?L06!MR|6K@~p`D*1S8M+N=ru(Uc#2Nv1&hAx9Es%2IY$mddSsXF6^XXUXMKy@39X1k3y*?N2zLhCx{ zIJIc8gELpAyR*_w)2-=zdCFJ5dgFQa9^XG5y|UIg%SIZVJ1nIxVr!iS#z;S6a2aZ6 zI0N&vipHzEwo^Zvl^OrqWSkG>s>Zt;Sf)#GZFHZg)UfSYU-^th z-}$J&==m;Ss9{e#NHebK{8Sl_g7A36S9vFsoEQc760xNqCynnmH ztZ)Ju6>=~l zSZ58#z%68U@WnW-*8EY51HU*e!TBJaGY_|F%%7*jPZ-XbV?Kf8edFN`|^d9 zi*OF@4r5Ppj=2L+K0rHzI>u~a`K>7-$!&xLhb4~tk!oHsRv+8OaXtP#^BC(KHU)Ur z+h>~J7(J7{>Bm|z|GF=mJym&Fc0igZk0q;aq71!oMQYS^=wG?)lQv)K`SJCx~O8U%JzUF+v^PVknJ|Z7D!Uk zu}plL?Jtn+cF$-9H(rtLHIVH$v6guwA=9sdOuy>sTj3`qxxQzCVXB)WTvVu>oM{jZ zpF$ez|CBgzJtljyL zI6^`Ut!v#*hXzLjO7OcX-cWIB`GY0!?-2LZxPrN>3%T>x?Hr?7xAPoGr#017GRIYn za(~lAd@Fm3$%ATe*`^-Ny_tQNyMnFT`K+e8=v+zTx|!WkxPl2&b6M@q=frh8b&z{^ zXl8)x6O_RaO5g)mYhJhWY>t!G?R-E}yYrlkn$EST`9aYt;nvUMu@PLQ%?qz&HEdPk z+pas=OD>zKHy1LurU9OS9G6~8@T>6qGgw=rO*guJf!_x0-L4UknmX+;{MTsPTsdVa zCeiSX z`p!38>h|fBC%ie?#^WSF!93b#Gk-Wr)x7qU{vBFZi8N#CdF&$SZC|En!1E3AvsC%~ zr6LcCJT;w7_tZ(ZLegCxmUK=l*|k?FvZ^dBtH^%T#K@{yPM;#H^d;kDTZ}$X};)RYnX)R<%B)>bOAitKCht4XEg`616)zh^DI zNHf*9dBtV}{Ad%TcR*F;Ysj0ntuzj_WmM!G)->T)8^Z@}xs1C)kV^T-6c5{2@cIv| zm$PZ$3B8Js?XeN_;a~HzTiEXh`Pf`BKDKieA6t)(yAJzb%vSi=6yJ~HWqU7Gg^Sz0-;{Qrd8KuYoGhY}}OM{iP zvrAL;L_b}A$MdU%9u6|Cony>7L@TlEv(<6Z!tLtfbDutf2?ZHs!{ zIK}JsBD`+dwkgmJ9#p(;cVIMA;dRr?=VBgN9Ro+=9`{DYk9QX|XRqRSBVA7y<9VyM zIpKL*0MDEE44${$Vb5E2sX;z8$n*9<*z?9xZaK~K)|y4*^{9=;YjU{dLyy~9$#bZS+U%+a^uwNZ{h2nWz0Ix^_JZ~4Kcv-&UM-%PEijR?lC-fl~jaV!C^7n&$ zZxxE~EmCHeRV}kMeTlR{@z|6^eOW{K-e$)5-io3*7Yy*d<-liCpiqF*8fi(y_qKqY z1-w(U>d?Y8wD9Lvb%cgl$HUhh>w6QkRNvC!k%U>qOQj3@-kfYLsKdj0egucSu;*>L zt)KpGw-Wu`uXx@b4bPf0(Vq`=5bJq6D~h!`v%OjBOj$K1ADF0~H&58}c4OG{mJ{{7 zEjgp-?Y_zC96AgBy64;;TC)h#ygxtB{txid1ij)jNlqJ#rNjHI9`I$`kCT;yD#i} zJ9FMDNVBUQ@51}0m*-7BwrII77ZU71Nj5x=#?|;#KUSC#I2A{BnaQZPa*Fjs=jvXT zCk95xYmG)b=@X&b^)9kI=uH9>13!xw+{fkS0-KSdl9Q3j0hiO81EVOHCy(;Ya*Ba3 zj%!`j&ZM$$9Fe-~ONXvI!JY>@%y^v`7!!|JA0uy#Gmk_}bEMWdbCQ+n9fq|vwPtfn z&0jcFt7ve&0Y{Z0$Fmt{o`x77{tr5{Cofx1o;{Z~19j!N2`cYChLgo6DG+)0T4zLu zB3@Ko8Yd@EQ~_qgnOA-y9ym?d1DA;&h(oXIFLn!#;I3b!EzdXn0Tni6V7 z2U_u33??ZochLJ?4p~RB14+Qf0zHQ4W8ojhhN+{kaD>r_RSUF;4O7}k7U<=97AYfe zaeSh2q}>fUFSrF*h1gv>*BsZksITbw9Mahv=RP+#wiKNSAjLNq=!_Z4m>xy%CmSzS zFwaydiR#(nGRMVhrxxd$$0OF0AktdTBYAfWfTfpD6`SJ_8&Etp@bdBXu3k9}v>jR{ zxZ^4v>`%@d=PL69&Ww2*oM-D-nN!$EeXjYP6fMg{WJoMdG(I|)h5g)F;^g>j_Z{IrzoV4KWKZd{(Bc8HhmDSyYUXDi>n?bR+vJ><25L+@67VY`*bJ$*Y z35!ciP+IZnaf2%nkt~hQS;-WEoZ+tc|W{)^*8e7?1Z%ndT5ZAKN zm|(LZ0#5Ze37nvCIz;z{zXc_pg-U5nDVQavM}IAJnxgT1#Qi9yPvaIigT(_MI*$T&W95&+MF3^=Z-h$vL-H5fvQuW?m@mSc_#r?T?ap}ZfYIHEvmfE z##XjW$&V8-uHwq(*K#wf;!r*otG^9}6uR4}QK{yq-3#S5iQP1_4&kVRVvHczjeik~N8q_h%43rMa z`^FG?ztd&H|2Kl0X*Sxc8acDxep$e~M^7JdPGH-fM0{?>X$Rt76Fw>RxN8VdikRm5 zu@swtea^#8tOe&y@A=+qV5R8I?R&W3e2(yb1}*;VJ=w4XR~ax$?k%+#RcQ|Y>a7W zkycEq(3_3cS-_8A7-fQTE!K{x_9v8nr#YeCDsJD)1EziNJSNm%Tfqedg(|6UDbMtl zd8`Icb&;ny7iW5lg%z>tim$wVi@2a(X_Gn@d-CYy`6Safi>B$5{VQDK0$tqij&z6U z)CH&C<(K_8!Y^oIvshd6DnEBU7cABakUb__j*sDV<~VC#Wsbi9XITmN5w2QBBmW)f zmgg8sQNQE{{`4}nORl7T(ITa`&Z#`Vs)YK7!|!Xk%L7|qHsVuIpNsKxH8EaqrE|TO zNEWeF;<(cKnTWaz1>ZPDyg)Bh&n&Y9#%Kk0lEY@Dh1$POY`2nHPH;3JG&G5sg zLU;L1Ri+sml;11;@W}-KV!?i0GjCmvy%tMP(#Z#lPp%ecp+^k(^wX9~RZfM%2GSPB z6ft9*`DY4@f|Gao8hr&kZ_h=f1Ly<$Lva7r$pZAO37^t>1A1=BR##IfIQ8T&(5HPV zE1$qREl#xCu_q_6drxj)@1C!Ba7by8(jtX(%@Re#L2$u0l9ov`m(9j_&SXZ}jPDAL z;3u6lB%Whi;G+?riP>{i$vxgBzDO%lSiugW0d?eK=fwi-MpE&jkuGi^s1=-1q`eT; zxJ`x&rX^^rmV{5f+@Z{c&p}^t9QLZ76s0+VioJ>WWUc4qvoVWb=96TD+gZfsXKwiA zVG(ir7z2LK+*w6GELe6#mpk~fp5s2(IRk7jy`g&4 zw;Y~u!RPci0ZV;@@9>-8)B1wIB=D6c0w&KYgNX;|zEb@t|F@o`&C{1G$JNe|ae52Bq*YtPH&1Cw-cq?OA zZxM;E3?-GU^++gm306nr#ZV=J$!zhUgc8(rt%W!LkbY|J1-#jM9?HdGe(8b7Fh+0Z zTJ{vHd{UK9v_GMcn-J(ewPIV!mE&O@&p@t28jpFH_0mJFA<}m1^*mxi*fi94+& z%PSd4O0GEV92Qrl6%&_|1c|p#C>Qu+DOa-uKFRjdTtm2K4NFqWjkIL*Eh7Z!^@WuC ziPSl4LbJJK4WIewE?P1Elq8s8y(NF!w*dJduTz03602>}*r zTbRp?;^h^TuckBA)3&gHX}YvKCCp-{1$$j95x4b0;b#px(9 zAz#Gr^73rMG}xq4es)2&e(^A)bpd43^W}Q+a&WTqA>$Tc#gs4~f!* zVOG1`xVW6>vw?-d$`@oG*%2}?9Vzo7j}-^K94~VDqRjNOSZigbG!1oEn|WxGl>h7* zV*W_`@L>#bC27F4P)-uZ$!VYsa2=D;DmPXGa-7u&%;(@ffmP*lqm8#%GiAMTK46;6 z2J7s={ymec%=n)#Y5+r5HA5_A7E_M>YL+^;NL*P}481opVq!&)_fsFvk;=w7QrWC! z#b!&ryNL^~fDCD|(fDr>??Q>k?VIp_i%`se>KkJ%sh?psTejW9yL>Ax@qUSP^PHa!ZK%oXRIwO}}y` zTOhA?4THTiQ66Ko$k5^SHLmPKZ6N`>U|_L`uDMq*lPl9@lUfgdbgBk49A}+Wtiu@Y z2-)&S2wXYMw2PTmnP*1ZEbM|Y$}|(6NaD@kr(f*OUSRw7IDEdr{DNK?&ogzt zY)bMd5H1=5!a4=QMQ)Kl%SxKq9Ly_%>`8(>%BP_}&Q$lZXx#?u#fMu%bJ!(WX21}TDGNS!9LK@lQw>0-wZfTh#IT~_);gk!iwsm9Y*1ai`RU8jG z5Ui%9E|T5$C6Fv!@JSAGA1m@kaMvaET9Mvz=Fd_bid1+uTnE+gRP*>F$(#WvG;#8l zmMZTS@0SXHHE>V05I&TbmtKe`8B*KKnQNO$t>ksU?aWrw;bd;?Qq#xD+`(m#YDcVG zEi|tQ0T-9w)K_F#ICP$TudXUfeDs>S%{g-7Ql8JW^G1SXunOi;HX$+9K20`@8JKN6 zk5xCL1#1l)kNZY!(<*r0WX)A-+=&{Co4AG?uR-j`fopIs<+y!Myuo*+r->?_Mr-Y% zv$*^UTM;K!FBIwtN5YTi>CM?OZ*Yb;SBv|2jaE-yt(R}M6>zip7Op&B=?RiD7z&*T zIb(zk+2r?P&Ds@My06RM?f+YIc|9V$s^a9siv&C?0fo+y@*9h3mf99eCQ;9hQWU+s zSV~;_&_dzJ$&f}iK`NX|(ipLag>^eU*SlPaOE*dj>z6d9Nt><`*4y%XQfk4|1Zm>p zg@98mO&3MPunrS6iDvs8$+*;Do|f9-H|(A^Oe-1y+bkLqnPraYSbBaV&57?v6-x%J zwZkHK1{T3HCV6qAYomsbweIA|9=|2P)^WkPcL~g#TJtB2mBV!4+;QuWA(dc)LbA zwMY+XL*Kt~Oo8^l7yNqfc8&usjig;CE~V0h$@eL^dv-hSp4|?);N}wz)<~X$rHL5Z zy2D1S4mwwpEZSkeJitF=#0PSY%Lk;XkOe&2$v8oFDzcqmrz}} zg&hBNB9-UNohem~-QMK<>T<4JqnBGqDrifRXWPoe7GA#I+q9#*h4NL|42fm7D*~C% zB;a!cd!gd8fb$uyN;g%HZ&#wxy7rp7!$(7_7uFp)i*x4b#C^W6m(@U0W&?jZVRaVt zUS6^>r+mC}-8IFV*IqOH(8-XNKift($5{9=wnV8;`g)mbJyF|2)A5wF8M%y~qsQqi z#f@Jr%U=)fXj_2isWWoI&o9q|FT)sbO_0`IbMH2O>A@#VOLy|VlmwBNn~t2r&44ZC zye?2V7MkVXHHk~RoB!5wU4u}e1z(SFDohCQkf<#dwz#Tv(9&UV^(+$nVxXB@0ZWT^ zGtXjE*aYURMEu<`I@x=c|6D)u+>5ma7gMaTS?ss|Vb~==7T9!)qTzx69M(-xbh}KP zP^Ma=(|@9Fr^8+poP-yw`?p#g`5<`ic z1sXZoBH4WJB3j3Y(BT(KKiviznSzM)ew>2|oOz6Zm@=CI)_CutVZd{3z+g(S{@~O> zizW*ERRTS|HISgR)>e?YArw6Pz3S^z{gJBw;|dKYrAou4>BDR`&D4&vZ;H6M5yF8P zealA4n@WaDn)|V5TZr4s*);cR?$_L#Yu+g7gkQn;mkYghb9bDWx>2)<()a_ME*C+% zJTFbIE74;8nO4wj8lGsH@lmp7lV;QVkQ}m(mn>564SZP-upBKs+MU7~>xS214Vs&UkA+VX z`bxO{HuLa0U=#PweEMy~Z!s<&Tq|Sg*rgrIb}sWEI>)$i_{PoM37kP+KBT&QodehluS$WHwyQ0xRLZYRvl=x;Ok|_ zDveTsoAR3~G*bRX$bKcyv1lIhyAd>=je@0RgtVr6#f=rI@Wu9}%nF=3l^5`MERrD* zIu(as$Xl1~vf=IV^a54~A9bJ-6lJv_Ow=gV!Xkn-g%n>QC~0jtEmZJIIu7X%Q;@rY za8!MVbiW11*%z*SoMr)&;gTLW8Srb2 zNLVpfHr}UTeTc9+2&_in_otP0hfjuRKA0-%;FICtk)vNB{LK)T7KHE8rU zH{nEUd*u66wNI>Q)V ze4Fu{M$%3d%+uhBm?yO!IT6xS#mNVk8DzJdfnA~1*B8oDOctxq*yYr?5Vyebrip@Z zUmW6mjZ4q2T5LQ^NPsSXBlO60Ar7%~c!r2h)6$gt;$+~B8T>)Yf<%kG2no6;%#NvPwOd!ME+$Ho?3O+FonB2_IqoiX-2LX0hd!8hNE$ z2`X82QYY)GDk?`vz9(}6pA~BY>1%FgmMg_ZoC}|3mNE-H*HxDftN3K04P1fe#YVd| zC$N9NCh+opF1R->o23`tj?>Qf??Y>p}ExNlg+R9B{SZeuL$y0l{1R!Fe*jIUUGo#Vb4E{l{Y-B_MjF*?z5 zU*gjH)8|PGmp!(SJkYdv{Na<+9_F#9A{5;DjUaW)31aVNGoG(GNnYDlJX3p5?K!e4 zBWoI&f$4+R8JdxM@CsFAP2$2qdH?Vud7a41vHn#ioRK(0ZVu~2G@mj9vot4~{mo6B zsH|(nV_gg9aG*p}-U+O0sjH2&sujWI@hylIgDuZACI0lr9D zlInraeDPYW)|~ZX5h#wsHy8Y^CYwd_;LN}mDIZoP%$I_`PP_`M;ME>qN_{JI@oZOb zr7v%9DPP`Ipz^fkElDg5besA$!-~g5+zmHWT`BP5sdYWB8CdtUGt{lOr${|M0rK5| zm4L3V1xd!Lptg$Ub}m!-wCeMW!&=aW0rff#fx`ojYq`VAs5a=4_@4qTWT}SECsErZ z)Z2=T_0`5iYXoP49clkxb#5+)6>Qx*x3Z!fYugnSSeLWcHr08t3c5AF2`QV)tA|~A z7W(U~7wKG{@GqRzlw_TQS`zV@P@l_8MMWg!DrrB`Bd2IxgVsGKiia!Buz*6r6US(tCxy;s8PMXpD>6-^qazht<8l}E!81x9 zaKYaV(F0lGxkPP#0kV;k0*gpeWY*g%@=NB+8nlZyhRN5}7zJzb z)*Os_T~jSay&fwmNZIne;KvOn7AKnALc>Cq?3OFWH_$4TduuLse5f2p@s>!cc2gq8e;{&wWd{cFUl?XgK?CNYFlMYIzw${s!dElU8$sFD7Czs5~r+V z#3?i3GsP#vA$mktRgP7k941#7z#A7!mjnO4lw2{#?6h4kFJ^DKjP=9ZI>fNHzy9B6H%RJU*?yAVF8naEXz zTrzU4+2N9s#5A0A(YVmHWBrae+Y-FFw!w)puEDQj$-L*rV)sJI*h}Ri$t|L(cFIVE8L>t-PmUh2U7VxXZ(&g94wfMEw(v5u{ zw`sGP2lK7NNBK5e4)`e7gO*yEeAAmOy^CgorpG~tp!fG$GzyeI;+tUHW$A5F`B?0l z*uWLB3Qk=So2^xGS#D7=S!zL?j<*Qj(mRv0JeRI|-?#tHYQq2xC%eQP0C7 zO_JJZP%KhfMavD$*hgz-p76TqjD4zI>r|dcxb}>FWa;*R8~42GrctsRu=1?hw3MG# zldt8t;7R0~dVvX_T(j0rYs*~lODN`QjM_XYlO1cB!VWGq$OTwKNUF%FKu_B&QlBHK zqNX#&qXF)_k~yhJ3M>s(3X;BIY9OA=nL2i<=K-V}46rc@0=>Ya_f;JtP;qWu@DmM< zA4Q{a+&5@j6?8BfKfSz8N)CJ3$ZE{ea^}UbYw10QwJDdtExth-42%5d8{jRXTpB=e0m{-- z8y3RS@$YY8(yO;_WQ^(0w7^yr|XpDOxRKXi*FG;tr zx>zg18>r~0Pou}GbTcWcgJL=m1H!QChI8&mQf$Y^;WLr6BO@^#6w&eA+)n2#_PxIy znjRNi9_{&@KNkz5Vo4|*M@faB(0fY5=h#Jc!SC3Gbt!WiB92HNs!|SK zL4i`RL-C2!_s{c9fq$M4OIz6yrq)HUNWYDPMpO{^7Bu$ltGy3XSrxlh{LX+)KS9a| z_3`+amtK2KPQ#LViCz5giDkv`r2h4q+y>}>p<$5oS79bywU0;Cz#Oc8Tj_*oJgL}M z+Q8S}QjS=oVFdvhPvm`M{lIE%(2AvmY1fK}sdt2iE6|e(_)yPMuU>&@I~~q5>Pgax zkE1semtKoq!mY+*={n5FM5&zn=_LvRw@M~_;J3gC(Ejn*Uh02lMoZNBHVm_E1}o=6 z!S0ipf#s-tWivt1V}JPK%sTazz^^EbjDeXq)r7ImAQU7A{e%y_6v^P&IZ=1)<|`qxz_Edb$hs0!jx)N zb3?A0RBoxpaxB+PQM{rv7sOETs?UiA^UOlS>vr4vs{Af{9;DFSef!}} zu7`gu7xApu!mr3z)EVlKhP42m_y5>?_xPx)>+gR}auOyXK)?V4MmSKwfCytijZrZd zz<^vrh(Lkb88VX#ge1)c0;M)0MN~xaib(xNuokUiL~FyP7Ayi)R7C0(mB>Y;N)f37 zBIoyB=gj1SX#4c{d;Ok2o+oYiF^9OCHNO`uDCBg zy375V=f$Lzo_qGjHzs!RwIwI_By;TciSJD8j>Y%$e{N;L8rln67j&{?%s%~kLn)O8wW_Snah?$62^k$~S? z9QOX&xP%?!hr|wP-)e(bCN>+Mdb5+BO+v;7Q4iyM zooLrRv99+=N9Ua3FC^|_j~AQZkmw;f!^UX{oz;GYUH?MQud>r~mW)q&6#wvN6HF0Z zIdFR-i1#t^)DjtEd-Zg(W%OxgcfUC6$gA26!+u8n?(dfsM{n5qAMwdqj7ZwH)mnct zub=7hMIa#;CU(ebpHTFuu1Q2D#In;hC(F(0KJi#BRVV3>t)t@+ardj)={(g)zAoW+$XP)HN#W#3+xT6w|aYis_(9Pizi`|ep}W0%wvTg8mwRW=_2Z)L z5T_5Pcw3uJ=o9>Qer?~A!V)~n9*U1^~| z>0#;({x~)=E%QK0d8T@umN~69h3~nfFT17IYzRvIp~IHTn>2F$A)h7m8CWOX8xQ)d z%L1*Vx5RmUi&}|K-(B_T+xWAbv^LkOpU)&eRs}`}^$9u2OrZYIDJ#m?alNNSnr3H;3BHq=u(H*3W4^=2S`0~X6|@%1kLP0#Mvu*hn^Vd9k5JxBUfuJHX& z&MZvjTQOJjtr-1wOnSqE=_i@fEqF)2AoFFYT-N@cP^a%bW3dCE$?n_c<{Ir?G&!5O zsA_oD{skY8Ymo?gk9;&=7F6*F4DaPzx?Y2+&8dJJlH z$A-24r^Ic;IchQSOW~hBQ(Ce=(9~NOPxRiCAL&cw8$DO^Rhu?mwb%?fX!3Q(?FZw% zU)te^lcu%*&W32x{o1a*jvt#)@Q#%g=<7`(Zd75LV*TFFjoxMB)hawRWO4pYJGDY* z`=XOircL!m=F|k`;pXqF+NBp>oIIK}oYaFKSh2+!-qcS&U>3KjyVjf5raLAsVFSPG z@h<4Hv=7El4dulPCgtGUR$5$jmy@L_NbUuU%K41S?d<27lTYEvfu@sx zi~kNv{?3=DW_&v%(!7c|D$Bd98vp#ldcMCj4*TfDysCiWN@a=6tBD3FsFE12eR!|9hXeUqsyVNO)=Z*6IRC! zxG3El8FNWTPmX>Q>0;=M4N+-${z6!@hyHu3o(Eo9&1mnIIFnJfOn%`tH)L&C;_j5#Hs{(6(k3e5)Qo-&_gSq?--fh? zH?|2^&W5rL`n1-XIK_o0UOL*J-Y>G;Sevfe;GUeGVxN(I(E$Gl|pP3+vJv_LBPEZENa+#pBq$Js(b+(3^Dc(oB8pYc>Uon`$qLmb;n!E=U}gqu-6X#oacPMk;r)IW5yk$?OB~Sn%}R8n+3VFg#a# zf98)g|0i>%zX0xUDy={Cjn&B)VRrMiVsxc1*a544cDm-kT{cECISFyXNUqhPx-Kz&DU*_$aoWZEuleNE}9y5~D)~0z=KE0dX zqhrD~|DhL(ez`f09{pvP_y!~^y={HB^L5PnLksLS^c!pa!3I2J+`09K8u&^|8hUyb zK4h|?Y@-`YU)J{_SMn|RgC%9f<6GY->Zk8n58hPs+jv^JVX7T0bMRI4qNxYpqqQIFjK?nDa$8Q$^g6z@hD$}i)8bB( ztP2xF`(b`bl#pmdL%H znz%Qyz`biOCB)x7PAXA^Tx6w8i8QaF$6W5idkSyHbod?XZiBtGY$JYpzWReZE%RYJ zMzTTJa9O%jmM=SNsm@9n-=erH@d>k*G%iXg^|tc`^JC}>!tr!poiQbfum-WpT5#YF zyVj0$58@M-^iYq6o9JyLJ*|9^+_z)qopv^5@*JI$xY8I;y8RPL$Bitnk8xH;U zY@6bXvFc9usCRLfgwe@Q9B^T!{h7qDz|%f)4QmvOSl4mm7u+}5NpH>M4iCE@y2brX zclApwN={lHA9}NtH=1@5{-bYqc1m)AdDVI+-XeCqIkwEUjiqxZYw65))f zR!FNXGoI6p9@g)*tw*-pcI#~0$ibVXFS$fxyOsS@>BFOa3HT4HpQDkGL_V`R8Og5u zyJWfTJ9lDqR&-)}bSM09Xf^e;63J?pn6`c#w(SKm?45|4yxyRf-Dj~Tfkyzld=F^b z{Qe#zr6{cB#V5zm*QrjttZrA`(nB4^eLtES^Jp|RS#&T`mg39Gs?By*Y_>0bHh!Jk zx6Aec#jnKHrQ`XUb^NnS4|bGzG%d}!qh#0Ww@7sT$Zg;6sy$h-t1hgA>-^%RJsVHD zH_7%+s)@TGaSbW3D>>nbr(zymgtt``UQzMOWB;tYmi-qSDU^hn458d3*O14_yw+x6 z9aQ@C?l51wJzQ5S)IJyZBlO+K@B#@I+-J9gAXvTlEU!_K%? z4X^IJn%&-L#I#j4arFtu z@*)q#OWL|I^a~MxY2_Qy(0_Xj*L-5dJcK79dPL2^VZz%95r3&UG)(?EFs9h8vV(8w z(SbDwhKb2;Rq@pv8Y(W|cwY~*RaV-n=)@XMT0NGRw(jeJ-na#xNW8SK_oc-CI-zFW z7wBU<;{07Q5wr^<+9B2xcPDpD1fLr}bmyBo_y8SlJmKxeDwaZv}9J)Q0tNqZQ zdPg)&A-5^pBka^8@g^O~T`X7oq2tg_1H27vUpBS<{qwhNcg?5#f6I)Yz?Z0)M=kY5 z#zaxpiCKpWJkhdxwD+&ixpP{F=-l2JJ!^m18mAHz^7%;C*~uWOUN^F#a{K0IV)?gA z^8CpupT1@3&WEhHzWC!TU=QGe?P@pKepdC~z7Khpx!mmi=gF$GBY79gbtCJk+k0sL zBedT+YZo0DiX?8nC~LJlkoDY-RkyE>@Exyv(bQP0&w7^CFlRlP_iPWfxU}+2M~^dD zWynSUsXvr!X{e=V`!(EXm1dd^|74#_=PAt98BKJTf|;Q2Ye*$&WY30bv>~_sWH$88 z@A4bp1$HjEXRFuN_&xVt<=ed4jdZfZ{FWr|uz+E57ndQdz;ErgxFx|T--y8E`_v*C{g@f!eocd1tyH;5} zE`oZShuyjq`RfnB8D`TiUn{e3Vama`tSokHyS;PQj>w#znGKJ#pL=K31FISHbF>7< z>U8}^tp_6voj0hJ$=cuh)IP*_arbTi}=5-7P`+;gs$#-+7kJ_w(Hd_bHnv@#ZLRD&I?OpVOlu zjk$th^Q4_mQ+VRL)@Dl%D}Ud#euzIGg!uDL_f}a05(+bKVMM==J@rM<=l1p;*`BFD zzd(EU9e4&TMnV^Fk7B>--TbqOGR_PbsUw6D-*ZKq;(rZv#SKdw*{}?W zUAFy3cX7fH>=Z%ivP@^;@$M@Vde}8Ro^sX1{mk=Ie;oS>3|l&*5}Z_redq8&$JdUH zvXN?Yf?ZEGA7acEKHXKqYM@QYCA@Xpy~;?QS7)lWJAj@`Ys!51!O3IU8J3~mBl~lV z>b1K2$EkTwV$Eu`&Aha>JvNm#=A5znCV)=W$8XwrV}_vW_4a;tk7;!M`P6E0?zXy7_G zc1Hu>dTalSN82T*v$w=qi!h z4t*ajd{iZZb4l1B?`1B`w-K?CCYfsGj3Cuk%-;HANAADF+TV#&1fHlxS8=!TJYnxG zdN~SoJd>l$$mOkR z=OU~bN*YwgOIcJhb2mNZh3~q4_DyK7q_Ym+9O5#hTiBTs|+J zP54J*MM&{RFnX{D3{IY8wxaJHKB!Npa)@0RoaP#lFc7)ckpGO@j&F*38b>DR+P?D? zaX^K|*c-v5-EWA2Tb#`|17#{Y|c)uR# zlt9COYwtH72^Br@nCZg%ehrn@JCl1h)QEejYWbOX=ZN)^`xCDk2c!nQSEsI)Lj+V&LeH~$l1;wv;yzAHX#O@HoZ{0gwgiT`PvibI0_EhId*d5%AysRO3A`7F;)`hw{)TY?* znxnL*yTI#VG%0*2mpy!uo(sHfNulr|M;|VmP6xaA#Z8ftD@3Ddl z{J6d+#CcDR*3*i<+}JA_4+U@0Lsxlk%dgJ7!RLvMOYA!`EAuDVIz5cw*JEop8=kPX zjGL4BsCz`b{hg-BHpQLrQvPcFS9Q7ec|@{*9a>fwZ*`{2mu;VHG|2lCvoLdC+R61> zIH`3TXQaP;i)%tIryOm&_1Gr-s0fc1&qjSc2kF~9S9T^-QBQ0vT53kk^>!L!kA}zP zYuMPzbQd0GO~+OE*~Ylyh(bNh{{4;L&FE+Tigp-P7>PCzoq$J3rfS*jKr3EUI4q`X z!ia`mX)%;YZSRf^{kLyj#r_%%S(DHD&U@jt2Wx-MPPL=Q75g4?WxA68w%%h~xjb2K zbS{IAnD}?sry)BPMTQwyym#Xl1Ai4aCgHvHoEn{w(Xf2`_4xHifKi35_|?_>vt%i3 zUEI@*O?DUGGI_;h?a?l@cLmkGr?VOSk>4=A`_}jM>Uv8T@3%Kx;vGr+Sgt1teXKx| zjmalBzF;okt}`c!X5k}7@0Jbi*(0a&4T1Z!AF9c4x!>r1Ve%g|{p4X&Y>a!U^TX!t zg`;Dl6Hl(H#&7J&$){iZa6KII^d5R@)i7^*_NjIDno}ZQAS2&QG+4>(fi|l)ouSFK z2kq5t^jEiS)nV3*U&Cp1!dRcXIE!5j6Y1;ChFq7kTl6HmMJHv)6yNaBg~_k2|1EXs z$@;SMn`tLkrMunP4bdmpsdt`J1G2v?QsPD?o?3MaV@BU(17Go)OzaWN>@Q|zLn5Mm z503RPnsYWLmgG$4JMIKspK|K&z1LgeUl6`~VYk*9d(KDqO%AVNS^NL6TlbF*!~e5s zt;vb~$ZoA~{mt4abm++@g?m+!HS?H_h@;Jt4D zvAUCaUe;X09@}Xjn6}--Icvk?t&Vcp8bocu+-Kw4s!k*OJ4w7*U)1vKBx`>R)Sus9 ze(tkL4IfHNPoU!;d_Q!PZ_nEA`OUn4-tes6;5pOY`&HfP(VWR|dwFR4{=yzlTj4q9 zc+XtbsE4W_$q%2?gBJJnlTW{i?Q{s*>yuB7K^s8#~#aN#o#1olkwVMw)V7FCpi&7@Y;2dmfRaB}dy@ z@&_O4N@rVk{HVUUh51_+V{=E3bEm!r>$q>jesj*xKtFcY?{)QF&okj1fo9aFHJ-rZ zXb;VO2qWS zr_H@tbsnsU9yHEtV zpsm-;ABL7bT($IxQE2JWXz7zPiM_NH+IbS%`7hAUPj(-dyyyV?<4PTE)dM$|VmVj+ zoD)k6;_Z7!Ur$H-(Akuu&wtQ4omqzJSjxGUw8b`~ZI~%>8SEfb`u-K7PiGS~^VzxQ z%pxZ0&OMz)Oo6@*OH-lG3w^sX*JZ~~N}r&!h!fp2yvv|-UqKglB5NRB@WVP>u#6qw zUEB%Wx99#C_h-3}<35J_liXX}Gj_-A3C$RkR<~`hMsGDQz)F;}JRwmm_pSfZ{^IfArRw8dv!ngcuWH$cw!<@OFkUpRw@OWq%WmBqDYtHJ@2=S#@44`@ zTesDWyJd6ym|HeSOp3JcG*rxG24D56AVA=9FF}- z=N!(ol(>DJ`F4ZvBYS_W+J?Mnj?-?@GojzTQP=j`NkneDz{i~a8GE~D>}O+?_AE}( z@3z1yXw5kRW<$-H?b)0QA(1gX^ek!V;p>UKyqR@bLWDOh^8#;|G43{3*rz%ETDIgy zc+)dA-CxVJ%=KdtezD?(?r7u8(AJTZL&YiGF^ z`%>I*b-#c!C1V3`IA6eZC*d{a4!k)kEmL#a+1V90!4na8ou>=FJetpQBmYXSFAwDO zqJ)lmieo|~Us{XxJu^`6e&3xO=KpP^Qm%BrHZan6GH)&a_9e`32ae6#h~4d&Z&J>+ z-jlw+jC93#IG5Pv?&-OJGo+TMeU%>%e~;y{BQ@gsv^f(vmyJ^&ot(GiitqM;SQ`SI zK$>=2S}gT&Lt3i|lk8B-;rk~8BfOEm*#k#3%zGt%bZ>kDRZ$M6eYi0I!%r& zoy*Q)!IA;yuCG;xEc|&vX=P=hznrAMpLWX>2AJ8U6%|F(ii4)Vyr61k zu%xmg)ohVSBe_yhSz1;RET0uDZ=P;xS+K;^SElnW)vPL+QBpd)#4IZjd$r+nN&6bx|2JMvk zo8>`&pfSrZ?dh^R>o>OEg59S4F*aWWhYg&2!;$n@QUsaN4H`Dx*s+s1sno#d*=YN}aJ1;X> z9n7n;Gpj5NHpQ`n$C7sCEPrvTozsma4;UP2ewta3@yepeB!G~v;-V7XbE9}*bN zIh>|)`yATgroMOL=N0-(3W8xt3#C*Y2l8v8CsEHCjF zn-xU`3i-wUg68x#zE=iRl@#Uq?YgEl1fkqXCsgJlyIYf-;4i9*%3*A{gDgTI0;XNg zaK0r0h%P9qBtz|~?RTTY4UAV6e)?*XYiujc0>k1^2997Zz~P{4XAzStiOb8C!j;D5 z})44Z^%yvVim}9Uxnk_sX6J!HqsO7D4Np~<`Y31xnx&NGaivgQ(bDAib?`O z`UqQKt`BuW{(#*HHBUQK70u;Q+dxUM*eL_;P364l*@aUE4W1b&FV~*r!YSUFu%nr7 zK!;U|{Aw4L=d`;fouu&{Wc=W}yuzX~`{jA!DG~O&kQ|4bCj(b$sacHP5vr~Ha(W`A ztEmnu3(HZYN>PvU84qTb221h^B~x3w)8W~@bVUm>_(8U7y6~l<(vPO$&!eeS*jkh$ z59dB@zCVyh4)qp9i0L1|f8Fu;4nzub?~VipJU9XV<)b`?5? zS5)Lz6&KGj^FxXp3=7FSR8=w#I(_>&&zd!>Sg}KedZ6$Sr9F{$hR!>uSg=m|qb#Lz zWpPd53UHNkE#Y$V&{8+$8dF1>ok`!h_!sKo?LCYuHfn)x)=-0z?>5Q%%VKATosAy!e!8sw|Jvs zX!E1R(`N0sNk<~?K;=PsX%Vq<933&BDkQ35ld>~y4&%IC4LM^+G>s?R&^@Ly=EQ{m zxAP9^r(x~S9DJEc$4Cim?rAJ|p(EHFvM!ogRvgqhT`)kknxpORvxlhmn`&!zjCYOm z4J|8uz0%vCxu^ZS(2rWHFQ_A)SM;|>veFXdtl3i~YBfd$MxSn$ z`Bi+;FGxt_kra`)&$-rcU&pn9Yb)1It|nP+>@U&59A-H~L2R=yjvkFRQ(iQ4rmZYC zju;T==%$*^xq4)hYP-ykRJYK%Elkj0bI#R*e>9CUovLUeKax)wm2T>HWODY-h?F zl7w(O3r&NY^pVE;nTBf6G)vBQrpt}QQXRH@WZGjKlimEHf~xYMjs^Df-qq+o#l`%~ zTsEX({#-T8pHC}7P#AQa!Xs=FTU6!`=v*a+c1@6?5=XTyDpTR=9T*V)pE-@rw^W0j z>Cf{AQZ_Q0O3hm<5Zw|Waw-D{JaS{VU$XU)Om?hTCG{i z+d>;K{gol65s<$o{lqp|G-lPjKShshVj#3R@y?frwhO0k(!|4b1eF0zopOjC4XZu7 zqs?jfQKgPF7O^3NnO|s@#Ww*$^Wf&XU{hO|=~qSFo{pd+G(E4FgKk9UQZ%>uL?j1M zrZiRb0p;d274@c!a)R23&;PPnzYx+`>^ZJIh%|qPP86C9I^#>zJ7&Q})5=w;WDG-! z{HmIs)8CZ&E1`?8PD|*Qqr2Nu7AwWUS;1mu8N;|b>b ztBSGC1&c6?>HDG*>=?Bm|@vDV{^xfg!KoTH$30Q%bf8oua%)^OTeViyZZBlYaVY8?~ieP@^8X5kMsZc z?<>wJ=ehY0{WtH=4S&A-vp-V)xPO!WlcBg>33skK5}Gkqgj;o>2cC#i23@8TMoh!D zz=sA*m6)B}%hLYtG!-r^r%9j`L^bY8z!|-Y@d&*6ng_eXYP8o_&3~KF=?zW_$<>PU(yuJsPXxoOgCl(D*t%H+R_R z>|7drYK*33I)?LbJvqauhOS0F8THUIRETX|@IQ^KYWDXM7!Zpe_ zv^NU6Aq zIkZ%Jd#2=tikDK{B4*hzbsB?7ct8m1IGc$PRa?;r?WMKK=oL~!YkniLG3K(mSHVhB zXhvn1Z~Pn@AL}_SyU`Ha8HvKQXt%5RYk$kE(9cj^5)8dmJ~f8Jm#MNenU#mnX zuGqsueJLYpi?UJ9RFff#-pf&+Lbb2iH17;UBx~Qy9BfXWraShASfLGTHHTVhV|xi3 z+G%HDX>p_^Kr7VBCP&9kuN6dFqQPRRX=>~Gs4)>|(%mc@EvGXF9!}Yd!`cN)c$f)h zRv~T(q(7ugp_=GX5%SF`kw+Jj|8iJ93r0nH9g zKy4m|bW@w?|Br31q_1+t{L_{n^cTC$`Dd{f%nUK4TbsR$l6n{QxBu7aUXhu^@&LnJKYV^jq7*Y>umzvYGIXumGDj9f4G*ZwtwUN;9<(dghD*Dt8*r=_8v)hyP?=9##~KDM(oEXwCLCUTF)>mD)+gNFpnm?&7dpQfw z1(v9q8F`zBZDvs;-R9{zz5l;Yi={U0KUyTzln!OEU;n#w!r@vZgKu%@FQk)b+4YHi z+wz%n*Ya67wvA5QP=My)Lcg6v`5K4jaoKso*%^lehr%f>;jsL6@*t(}JtN*Z&(!v8 z+gnmi+f60ZK5c&%HJJy3Oc!ZI+Ey8@D|is{RdD7RPTYyM0lzV>Eo?duvelaFF}m2w zeAo}=_;ai|Jm2y<&9exe#d3Av>dHkl7H%3>Y}NO|u?$l{d~do#dLyJzhmxF}EG3AcV^y&241;Gj4bb+Yw>>(CR;)vH z*JNU(5<*S3$u;Mkwf1R2YEzw5%I1haUyY#l&(QC1EjltDVu{U+#9457wtFu7Li9J1)r|g@&z$`1 zH2w=}!)0}7XskX|QR*km?#6kdJ*HCC-{W|rEx_raa&?}eft|3aW~Spt(p2d!bz0RR zHI9y$c_Dk!IpWkbhJ>nB>nUtkQhqXdJvWncBrEpE^T5TYD&!;+UNd*511j50crg$* z&o2~OYdP2=Z%4>~K)M|o%y2@@WJIIEbBBhO?6>JYU!3y=4)ZZoSKq6ua54LzQ)l7A z52e~hl#FHUQLg^mQl7sNhw9TLF(<7i$qKXQhiE@vob!cM>TC_Gs#0H{D=v<_Xj2I_ z7nK)EMc5x{Cg&}UZ9Zt0o|B-aXLlV=9`?hQ&zv4zpJ|<#WIh@~n>f+3lEdZ6FDqca zL_n0W#<1`+lvk)U&Ui4Ku>Wm=Y??HIA0aBd+NON2z~`})kyic7!#aHP_gb&|HaEOd zUS+$FPQwbLKIUlbI3|Xh=sC63%&Z=^N}uba)#wd;zOZDeLyA3XJtt{tT)7W1(@`4e zi71EN*Ay4cWR76Z8I*QsY>Ji9!9Wq}cJo@WgPr@lA{2RoL$QhPBkPm4cjzEIp)p?$ zvJ-dax%g75|1kEiM$PLSf@eDU+WMFh6`~1!vMFK5Eb7oqpP`;?fg)xa{JzF43C?c3 zGxgD>w)aA~Tn-(|mB!j2Ok=BT^a@2svI8k=V!OD+>v73St_XfB9%**3@AT4V`hF7_ zzSi(N*>uVBp3YSbE(u+UVEA5t>vO#y)9gy+x40rABKb2ye^KZBMgN<>R{t;m*i-wz z^$#&<{DT{ff0xLmVv4s~yp#AuK)gE^`*LCNsOfVne=%7i`24NC%;0iMcUB(SwPMo| zU*yu&hW?eI1LXDE4bdDo;luL8WZyp@1;Mvcm(s; zC{oaL?4=DuNVS!;a&y|W%ZT6~{=&WnwgO?IV>rHK!Y++a+t8U2H#3V^st;)YfM-J? z!z_~zG`Ro{&FZT^r}0f$d8vA%VS%9)lvkCh^HGIkrKA%o<~hq-0~zc9M{jA2%KBXq z(`b^_^$txWJ+vvsURuZOsE#vODTd)Quj9x}ygO{lB?DueO%v1Eyz-(lNYZ3!EVQ@~ zNx=%q35KS{7)@En$MS?LQ&ow77S0#ySsnKOZ8UO)))p~s&n#l23~TNIwy(el%`i-5 zhV54oqCV_|jXQm~G!(@#5ZG&S!4Sh)}E%#l^t_EI<{(;0&1W4_sXIWwn~7UNXt zluVfv+ISK&-`JZ0)N@QmAXSw``9;i6%h~fY3mU_UcxV))!DuX}WTR})m}EQqCchsd zIWGp8h5lk~t>Ig^6Rea`Fu2hu)jYXujA^BL?3oIbvyY|RPL`!+%=)AO)tTc*VDB%l z%3}uyHsVGGg~gyA7B8DmwjhqtMxjMxM+=pvg%20pZZu6*sND(9 zMevXQg0`lm4)=(*zES{9sDO?%*&fQ&O^LnP2(y)6H^SH+VvHT>_G{H${md#GM~#+& z1`rxvIG#^r?jN9SqA|FnJDku|(1^6nDT!KOyCZCoWf5Zmv}r-rZ&Zb*MP{L{wRldW z@G&T5`YSUtM=~u$ryLE=0cEpU03#jPnkB%}jNOnwrAl&v<+7v%>D~LUooK zCK%7I@(LMGr-Ydcca_k1tTj?va%spTZKyrBa;*>PHA^2vlGz>O>bH%4^7V-6Ut}3mw~rsES8*M4DP+> zd8zi$vQRIjYtweXu%j-u46nlV>1UWOP}exS&q2t-qx2Z30c#r#usv0p-B+=*jz({5 z0O7|0#zH)Q5U@sfJ6KP~^rYiU^DAc~!7Pc{{&&s7*gkfc9~vXsF>LyS2nU_gw5t4k zx}getylmofE?s+t?ORB5FJsZz?oGmF4CMgZ&mT@%*%T%u+S+lLj@7gB`>9tHR#n=J zXp}hI3F)OuP~R|{9(uuQL;+u<{KHzzA~Dq?Lkn;i)Kn? zxL8yj)ryk~x?Xds!Lgv(oAGqAL30fKo2@u7xCBtuXgi@1NjnwRwpg>&{S@$6M}bMh z#*CO`5ArNa>z-JRtNeFfRN$psR)}r5`G`M4wJOyMnnwwBZ6gMb4YkmrMYs?AqN)_% z1%^7iL(_D1I>_q0ZHW?Rl_2!U?pYhB0{{0%a}KbpzvX{sq{%^V`d`cE=fCs0HXA?o z-@ESb|JO47-`!3Bz3l$a{%fAX+wP|Swz>ba|HAP_UC#cG{;RQWvF2O1S_`b-SPQM& ztVP!C)*aTJ)?(`}Yl(HYwbWW>-DBNr-DllzJzza(Ew>)BR#*>PE3MyJk68a>)mo2Q ztE|=5W7hAi$F1L6Ypf@%C#^qNPgze}YprLjI_p_$o%Njcy!A)x1?x{%y|v!jU~RNE zS%0=(wEkjkwzgO=S%0;*S}$AMtnJng>u=U8)~nV|>ox0j>kVs{^`^Dkddu2l{oQ)o zddGU#de3^_`oP+2eQ14TeQfQs8mv#O{ni2NpmoUl)H-Z^W*xEqVSR3WVI8&pX&tk^ zw2oU}StqQ2SzlYx}iCrEAK%&KzOS(xdP}7bud-EM zmTj_KcF5o46?s*5%4_nvydk^fP1!AP$sYN;ye;p@yYimAFCWNW`A|NRk2&J8K|YcF zazGBsA^DU8UOtl}@(=l3zL2BxPdO%E%5nKhPRPIHYxzb_$|*T5-^v;JPR@!YMJ4$% zV$5(U@uQHWkD<=`hx&tFY0i(II=JYsHZFMQ!E~wFcjcVFre}68iTdLo>+c=@uT$53 z7CAO$bn->sQ(3d;Prl|a6~F#)Y{x3K|MtTU6tXilnwhXNoyT@ml2d6I7$n_;&13aO3S8ysU|*H75ZPS z3}hSAz=}fQf4MXdzyDA=NhQn!?cGs!6s%Sv>TiMVO1ERE4a@!&ex`RlF^#q5GVM3m zx_7wbF|Gq#;opkQ|61NPy=nejJ7qKUp#C+N)W6Q9*zD4L&h5OLrxDMM-rI5C2&JLv zgf6A=N8|JI-1kk?I={|+-#q`6SDN3Q8}t9r`yXIQ^T&I)yCi(=+~N}Z+6r>1>?!BM z*yIQ9n)j2qw)DM1Tfyhv?UJt}u~f8892(cI*WEFz-FLNG9DQfhZN|dL-$X3X{4{JD zS5}-$+9K>f7Pc4R)E|BlLbVR3^o+J1(lzgPuWof$^x~#eHO>3D;ySy8GZlX{O_Ok& zx!f1I=)W{&<}*sJSnd1>E@D;oN}}*>*Npz2&d&3OxWjt z;*vdfITFY-@$Ocuqwi|URT$gYlSQ~i{ao}w_=Jj_w#sfT*4Z} zdET2mTgm%*yszbVM%y^@Nw_;|wQ*bI!ieAS%1&c5KN9=97;7|)L72F^BUeY7AF~xrDi| zhH|&evoM?|QMGSW*Zv`f#CX`5kO*=gqxWOL9MA^_K(+_O%mNpHi$JoDSplvAp8_|4 zFM>P4UEoI`#~rzAsMQ7BALIUnA)LJ>vC$yn9qR%6fc?N}U_MCxvE&~+3!Do=M=W&2 z-T^KF9|2c^>%bSlZQv{5``}05QSi7St;we~`Lyl?b_M%^1Hd6*2FT8())T;da5^{_ zyct{q-UF@z9|vCmH-N8zuY;7UHRWo39Q@kgU{YF1EZ7z71`Ys|!3=OXI02jtP6tcC zo5A_uJ>Uc2OTc@;m%vvH*XU?*jgAE~K;DmOE3Pq}z`5Yf;41J*@N@8( z;Tjt+uCX4&HLhM<w6pAmy8K1vu1j1?Gt>a0hq~xZH4+yf3bj!{BLgl~SJ4KA;yoA+9npTxIZ~48E78 zfN9_&aEamiC3OC>8%X$H_6JXjYhJYBnn(HOB~UNL)Jr)CJ%j407vc?m0HmCQPf#yA zsFyv|$0X{*2QCJeQV-pzhhAU+ET%r7D+4+*`hm%y56lOlKVt=W1pL}?WkN^h0Qj{T ze!UJ7Z`@h<^)~#1f0L-ENtA2S1n?$sIruoZ6NHW_aqy=rNcvNz!=D=Xv(RuACWxyr z5&nDvpN_$oh45!FNV!TWSLq?}2z*I`FYux4U2q@#Al@%Y@0W!8CEmm<4HiYDKx+gmV+lP5IoE&%FnH7u*LP zpfB;#mkb7Z--h>XC|4WG)du?8LVtVuuJ-g@9lGIF+S8B==qoRnU`PUdOn{G^*C-vy zrz3pp2;VwGM`!5p6pMJu4CxwyCu+1I7bfC~X@Z2mknk7Lhh9V^0sR}y_(Qd@8#cnA17c+3zl?{5(u4FL+6mU8S>sYBx3=i=OXYWaGN1RlSPJJVaTwq zc=vWQWVjoT**HV4@5xDieGD0~L}bK0hK!+{V<=}^>Z>jF)wTv?jEjfPc4B>kV(vSOo zXZglPgdvx}zf0iXrF)t2>@#E_=?o+t?`imQ7JiWbVDi6W6sMA8!-tdb;SA+|jB>9r zBy$qpY*Q&`Ipv&1IVV%jnB3DVsRe$ghcm(-+ z0Qp)0-w5B4@SPGwI(gt9t%wy4CzBYeaNTRaPCKP zKcD-B+#?UYkcU2NxPOZKd$@mqd-&f6{`dNv`(xZka34*(*+;uUzLH2UiS+uGAUEaU z8RSNg8=m*$c|Yo-AN6qw{JsQ!UveL~9HbsDp&t7CIKd_WR)W>wa&RTM3ET{le}D4t ze+)c<{E`2q2w39^Ii3u(O7lUiSr@&p{9^`)%@}G_T z$07gmhNQrs6!?>Zyrv+pDNDio47n;>c{zFh_1Qpq=!d{ap`m2|I8ru|(37K3Hr z>)>t>y03=rYmmQdkiTnEz-zz>;AAiW7SdlmPJi_z2%m<)r|Y~T*9``t=Q`-Qt}WOB z%mF8Wl>a))f88qZagg#{M|rM02A(h^4Zf$r_q2R)Iye`+86;d9;nE0~M!58z?B47H zl5RTbrq_d;z@6YO`pwDon>W#~(2g=`N12p6lX4Gr)4#-lq%)LshJ8do^9lV7d>;~WynPMIuX8(t)>0bF2|DZSn|z&QY3pV2*0!8_c-E@BmOwzjU!&pP-0V?6RT9{Czi z{f?)8$ESeTfbf4j{2!kSP9lB{@fR2}^$L-xsfOH?#mTRuz-%xVTnsJ+*MjT7UEm&& zd~YJ(Ye$J(n{9~ibK&z1;7Ra|A^r|n)jEN_z$B1*_EXP((({v^|1oe4NO}B}XBy$A z5pJO&vd|4K02lGx%k#m8@|7Q7Db29JR!3@OYI zDI9J{5%d;8?{w&!4t+C-KZE$igGGu{44D}(GBd%D3J<%*62Y6n`5^RFKwrf=@C9%; z_%?VHJZ?xO^i@J%WdJM$X>XOZx5{1M9z&`~uZr}lrh-0jIk*zs3hn^+g8M+iR}p^J zBu?L*3X9O$zls(4Ra zOnoe*J{D$!xnLn!3~mB98*&@;-Uhw5!T;Of|Kc$si*pRQ%Pn$O90*-^LDyZ?;5{kQF&1D<*){(+cWoMHyIW$iq*GJX}XS>TxCY zxH2D{4n6>`0O8|G`1o59`K|Y9q&#OR&l%+T4D$S4w8(d{U=qlDkR=dIqy{de z_>sE7RFL_)YZf@ya7A>&2bg(c#1&vFm<{HFWnd-9JU4=QbL1o9ie!Etl`F2ON$`n! zzMXo$6FI#TIlc2qa4me=1fMp;ALu*^oku?b55b>a@Fxje2;KpohQp_k@TU{}=?cyQ z=fWTO@fG~|YAd({zQDH=@a+WmC%8ZT0{qwj(vDBlj!z#2kHeR?@TCJt_-_e+20ovG z&u88S-v_C$Gt}32@$e-9q2-iHbee&kI0`M0PDc#4XLNR^^~_B zd8kJoUg{+BQde*=m;w^+CBnUoJiOc=gzqoI_m@fUWzyR|O=NpMSOYFFWC!7Q5Prw& z;BG^nfW9Z7?+N()1blunLgdM4kbIsbpC|i)11RrG%3Di$i2n@n|3v-#iTcqKqUz~4 z>Zyl%>ft5I^AhEGiF98g-IoiYqZs@gJO&-e(e}0Ef0F#qkp2Utzrv6|_vIW{~7YHOQpVs81hHT|3}KdfqXZR z?*{5&1NE>W8_Wf1uN!Eu8=!9k^lePx`*zoWx!@%5F>npI8Qf~frg$vY31ENF3sR0v zlw%X+*hD!tQSY0m_f0#%ore5*DBmQ`0)1crtOXwfX_tSdUB1{>Y@|Z&Tj4DepVT;X73JJFkGRgZsb(2HmO1y9SsHUSY_4TSea60UiJk z8}dH&{XX@*7u>5D01FNIsFTP?UBQvy7(+fz5c${x67FNd?JwtxaI?UBzy}ODkilxs za1go=K=;8kk%L1)9~dy?(C3_(dd!ed<3v7~-&a`Oyw^GpO74MN8= z(DBTD;BxQ`@+!z}f6xo^ypHE}bs+Nl7Ug=2a=k^l-lAN4y6UQtA%CAP^7j(rSCh^> z!jn%O`P9)4>K-Tj9>Tv%c!Th6!c*SAQ{Lxp5_yjC_c_8nN4V#Ev9go|ZUA58Ir%(C zKF@#6{b@tizb~@>Barf}r#u@d_Xf(nVIEim)`E|Lo50Pq7x=IdK5R?^`-9N85&AY# zu8ovyBk6A>eS*s-1Iz|c?g z|ItUt$tNJ`e@yxZW2yJHU_WpG<)&UYM1v(@Ik*;FM>(mdjnvb|h2R|^?Q0|LYZLt6 z1phaY&nEKub06sM2hIl zyWsn-o!~Co9rE`v^0%Mz@2C6+k%xoG!=W>@Cn5iQ@}Ew=*N|@->5e4bG4un_`wsMe z)SvQuX`hp5pHmq}_ArjT3w{C~VjM9TN8Dfn=mEXpV8%7V?;t!MK$abaAab<>x%wOV z|Bd|rHWl=N4}dGc=fQfAa{Y~Ry+XacLcP6`3JwA5!A&6b_X_p*D)sOx_3$cmzY5*2 zBA2fsm#rKk_<`M9yA-k!k-PF_W0eV8SAs_A* z`S5MZ9Zk7oLFD-(s9#mA@%$r^?U%n9e{7I!k1U!%d1Pl`@pBbI{N*^^!rP}P2gtmU2reu zb5p)J!aYK`Rp24;2=DvxegIeoR)U1vNw}SqV<+X<37tEk^L3uT&hytjU?Tj0zBi%o zP5A#N{C|t`zoq4`qukF!=U(XCM>*i%A^7+DLgL+l+?_=3;Pb9U$lGG##}dCSI10=L ztHF8T8t^I7D8>E%M?lg&p!GsJZ)!Tr!Igx&nQ-%Y|0M6%Qcuvm8@hMb zfD6Dq;JeT}70k+X5BLDM4txPz1wKxH4c&X7`|q9Tue*YC!J8Qm3mFfKk^7#= zeIIZExClH3o?zS~pZCb;UF6_hCf$$cfi>V_a4C2KJZZ?j zR6GHOfM0{B4QaSWq#+HYJ{qWxPlj+BX$E*2Jd50>(f)@Lo^%mRP z3GL$$?c-22IFIo=iTlxq z%Lu;X8V&OPOWuFE8+@C2R0i{?;ou`6^8f8q%!lfjr?8$H0e{YPU>?*7gx)jIdzN(1 zlI~f`f3}Qy4C~vGW5B5(>!JqpM1y&vaR6kUmi06j>uD|z^CA!PqVCL_x-)NbGyicj z|A}FK7&8f62fkpq;_eVv9P71hOmVegU9}DOZMgT6zL)f`WL@;iKHxPV^Q$W-fXuJ1 zTn;j?x`yZ1q#3TO&WbCQ^~>wlitD;{;7)Lt;Ywq^nl=GU0j~j}D-F8RGQi=4gTCva zFD;h)wqO8cef2u>y^eg-9^-xu$U12n>!jDeAg=2-fXwf%XMQ(=_#=q_^L%mryx4F} znD%uWw@qC zi)(r;$b54;^UdiwAn&Iag5)#3608PU@11@J$UJ=d1K=_6Yr{2z^30$-Gx~u84A;!3 z#5J=HB>$P@KXWg*&v4B?F0R?94OexlxT=R3uH-YUhYRcCx3NBjoW>)k9chOhX@}R+POqh%&O%OSA*Z*OV^5fc9bqzdgqy$@zzx{JXorhQ z|My$5)9hd#e3W_caYNS8j@HqR*5!lKLHe0>^fT-Bfd|kh>4%=9ANnKx!XJ_Q`WKmh zz627#p7?)xK;$ngn1@2&OVIbyaqw&A8GD##yvsPwc(jf2X!|{k+Yf+*+s?xsq`!mo z{}#`9oWOWcIJncgrTqGn0i`FJuRkuiz(k9;m050$AA^AKRrVDXu`+x-p%_sumji$913QEH-q!BPx`P^ z28c&_2Ti^$qF)KMEQC2~!bpJ6`-RA?x&vm!tiq2AoO4TZ(Na+=o zIfm8};+G;aa$(e>CDs^gnX!(-opIJO>x^-R8OP8eGD8e8#8Km@Q@=nB;cF1_mJ(x( zF~%5Uj4{L*V~jDz81sGk$CJ0`-t&2WeV+3Kjhaj*Qw`nzrKn$^qsigi_bbvahztov~Dc6ZY;KrE%y0m)|=0)Ck-V* zsG$r;@v{Dq)j=q}CLH>s_2iG%lf~A}#pTYoK73|<_{{bFnd`qH>im54d4td6*5SD8 zKhBSMm2oSLqo-!J{*@?NA8LxR6+4iBHU0EO=$nSt|Ie&*^|$r0Jj7@Cihk>B!%KRd z7Z=Bxd)iN)IJW-9t$*1T7T~AYqDO&mS6{VAv-bgR?N`fWF4+(#GSYYn^3+g zZr}_3P1e22W^Bb*`kcbX^FPM_m~}5E53zkHFR?)!F>ZqKsaS-*uS_=HapgALjYsh~ zj^k7PQ+Gs*WVeXFMa|(*EkA2-hC{#a3_`yb z*T!Q(Xd}IK=A+Jhe6`tnULOwqX?+m-lX?DHKEIaFveY0{Hrug$ZWrHf$Gg>8pzZ>7 z7i_?dsBQyw8>sW(b~sc$fw%`$i>G=Df85trtws7*)#5(n*Q$fqW}NjUu)YNL3BeY; ziFftc+|y^{I?=!yyb(s%?;Eb)H?EIig>oSieH4bzr@9pcePyzHl)8 zR1i!*i|26Ad(6?fn+^m*0m&#fC(){ScGQZ+xT9alU4`(5uz z?&D*8>UuumdhWq~9AI}fyKAg75$nukL`);ZVZ-&~i? zt=5-zq^Fsl<{=zG*J<-L?_1=h+FTFS8=T3g^6!%VX@2tVKxE*)kZrqEf@N78v zOHmN~rC2=dHnV$x{sZ(M*n-=TzX$nyunE<{Kjr10^3vL(Bexa1@g$0)RUC)Z&mr}5 zNWKrr_o1!09mml;wMBxUZ8Gw|jsI=iun~tbf%Lc0|A!LqJIqc`+C|>4= zc>XD#R`t@VURpQeW>inD>gkX;4vFJX8y@jKbo1dci{vf_TWMXzW z_(~qWl83MO^%cMBV?j_~6%HDF-{5=eXkZ-;Ha8o8FdWp0w@$ou{H)_=-FX}~zTEgq z+=tEBiCx%_19%m$qr7}2FZJ?LFE91%*Rx;09&1sY_2R6T?|S*JKY=~SPCYyIckmuQ z!x#K3;NMcL#FZGwt+*HWAwL`V+0cvUP(B*uL;q)>|1*eZVGfpJIhx0~d5o)vxO#~1 z#}+(>$MGBvqIrv(w*$r{D;sr``<*-TAuFm*6_wfV*)op2Sml9dF_jeCGX% z`TEX$eHX~*u(J&XzaNA~`gz1}+h#Zle$s=GdU@00f*==*`b zA6DXOb{?_w#P~Ght!LfrbhFc)g*mtl8~t5sfAEI=!5a_paX6G@*-LVNPjX*RD#aMu zw9=Hd) z?^j>fUtX`je2e49j_o5>-FDx-Yae1<%(#l&AXJfu?#C7OCl&mw;9tcfd}16s)$M41 zRGn|Ucvr1-yv%V4(pODi^-kRD@4($bXc2z%DhM^&3p9$SQ9R!`?;GcR!;f#w`_BsW z-MVgnwh=dDGal48rS1#Wec=F}cRzJKEO0$6Fh2{-&wSUzeAk203>HK%8>6@x>(RU| zXv8tRqK{3TEL0~8i?A5Wu@dVrj_fRCXW=~@*Y9S6^OE)3*6O$2g!Dz|i}d0-zlBKl zTZk#Bo+hfNiKSSMHMkb}F_9k=ci=7**Ft&+rC3&*n zLZskq%tZE**-K_GnZ4vSxDM-a3+~3f*oH^&1oq${4&hb2j`#5avXjitq$z$2k&2m^ zjRm+AUO>(_Wa=lI3g4=K}?!zN^6wTKp^EGJ*M^HSI#53suKEhXi12MsGAyRP~ zW@8kWVi8v2O5A`OaT_+`K5WLLcnnWtFOJ|S-o)GZ2%qSGo}dpp$$oH={a}IP9LKp> zgvGcT*I+BQqx}3_et!NGpX-OUu1&G7y_sttnTPH_Z?@uj97gfHDV~%p&l_@3UQ*;G zMct&Ro3~Q*#ipUS-V)bagE)i_@v*+*Y5Iz1;C^gD>tCwt;1?M|@QW-g$4Weg$MH7a z)mIzQS34QmPh)>7`%~GUDsNNeZK`>gY96NEz+2&9n!1^$Zl;TOx_GCHW4bufeV*>~ zbpECDFTEBw;c+~n@3vasZ4Ii^x7F#}SMVCXz*qWj<$s3!&)~-le$2FP&a`gMqFq(~cdeF5XcWv(3kB^D(;%yYVVs4+nFcKgaoV_&Mi;VU+D8yAM@15 zymhz%_oMomC$IBH@F70d-%DREeYrKb);h_*`TUzN5A)?={x!UT&+(=8G0pmzj(6}L z@@oOV7EZAareYT6;2KJBg?82|m*oyj5TD zcI?7#9K<2Ki}&>bv$u%7MWtAdaonmOxJX}cF?QogWcSzX=Fiq2oQdq_vzxyUn~{I{ z{QFI+{@`g?h|6#XT89ft^aYop>!F|(&3A$ME}*x7-oyh3M=>1?6FY6x;>mQEbF5H9sTgtx=XXzWxK-cGouFnrU zuoFjc)O|10eJ>kbSB0*t!adlefB2~W;bV9iuloD7+~2R2o^u7BbA@pwu14_|i?{e3 z4(jWbkB{WzqbjUM<3BQ9I)W18N}{*`#Ze-Tk{&#bejukp)`UrzsW`j@xi5xkB! zJzt}zl%CRMSc1ctK=~_`zZEm|3(rP%v_c)NP#-JQ$BJ8cM<4MNj{s6Jj$2Va%H*Sr zpJn{~ZJz$(d|Zp`aWC#e`TDJVmAmfCUH9c1aHGECTz$uRcn`<*9n%-1uOcM~D$?*E zwxRi`Fdr4-s1QfReSF||2@$_bn2bxY2y1Z@9>){m;CB;(;CD$_i7VZ2%G_^a?jKF= zAN$=8>fH~vSl`)AWq0bhb@`!nxYIh^WxegS-k!5wT2E$LPv*Ej=D0pGsS2BXFs3)f@*bLqi)U567#dP zNc|P#YFvXY*sAW#$A{*l@TKRbf#;_=n5)i8)LEH&S+8Dd)kC9t*lFJ7dAU57R+-;w z^QdlCsGG9c<|`9#<6ZM3ufLVoO7T{T_tRm0-U)rv{QHD|pY}T*kU#M!iGNDE{LR93 zxIrGppCbNL_EXtUWj~euspfs^sC@2}&)xFbDxdB0$<9o6=B$)Yb^1&5`O63LN$*^G z-%pdzboq1~bsUwysQk@4C7);I^PGGR%4d&!p0<9CS--BxXQ_Oa%cr~)$jjmz)`eU0 zmnVPu7{{$B?xo`XaG!iO%U^-~EtS6_`74$`ewFZRx%pgfK1&zK-y-=dlfM`~!DsS! zTK;ovUL`wZV_VKvsEe0g3N zeEb-n>Q|qlUp-acd^tIW$O^CBOgivLsbSIuHK11oVQn(r#}{jq#} zEFYijWp^JQ!{eTl(O*q}buQ*1JJsw|@4#K=H{1M1u@2+*RrJ0|Z%VoOu0(oL=y}We zZ#h3z-csf5_5YBND&Djn`=Hb6pkEyfr~~<*F8}HLNax4f^82>@&e&$3(x@)F)x}Bs zkTm;{bo-7?_8oQVM19Xu-*ejVh<(P8{l^C%^9}sjFn%k1guTc~R#@#TOM{^g7;DXG_#sA&PIF_@pk#ji@_z=Cd>ZB%V@# zdFn48JF!b04ywZ;*Y~LF`?CAsM)$$Z>XN>E`ts?^r_Xz|pg_G9h@(Ipi=DsN`Aa*@ zZ>PGH&kyCZFyekP8E@eo_mP|KBe&HlyC1RpkvjWGot4N>iTo_jRj+yKRb7>;tJ3Yb zL%quL3VB{3A1maeEKs*$6i=CW%Fg33zEZ~%)bnvXflu(6x;C!TIM26(%7^NWKYj-s zeEI+%`CWr~|J=NPz798FJ9eP@{9Jv0K7i-(1-|k-hczBauS5QC;Qtrm`9eHjY{vR< zu#11Y_;*;|4$E76viCMqoS)+SG|y>MJ*S<9^0-YNn=(8f%|i9rq&~lU?)k_|{hH$V zk2reh>7l2`anI}H)7YzjZMOckOz#sry-)1&UNGBx!6-^le+<`SEyi&xHsOA3#dhxt zquv)Tz!+9xEpEcCxE=Rn3(Cikd|WK_UU3=9(?xl@xD6XoelN=J#iMu(PhgL}*U9=` zQ^X;U|B=W4T)}JnFXn$KZorKwzdiEXV_tghh>Ks}^XvO^ti)kV;5{7Ir?*z0-g?}D zyYL#`z^C|JK9NF@fVE0VEje%f6@G3 zT!aPKj{|rY@1r`qsLn>5H{!ez`52Lp5%n^nUM|JF$F0ITjH7wDWF9VcVi(ePiM~tx zxx}AK{JF%ROY(C`ei8>gH)})ll`vn4b2x~@n7~K)#PhTy&(o4oo&A`J?ElFAkHu*I zPUM^4B`6Okh`Ms$AtdJF*Gk{Z+H$@>N#Aw@8$J7dHtTf@7X)G(tNGPK^($S zylkH6{V%2qmb3-8 z;SSt|o_{5I{*^S03A}^%!lA9+Q*G^zg#MO8a!DS^Crd~nSr!TXV-IN}`$-FFCGDgm z5^9-6GDsGoqlJzZI$G#xF}8)C7J6FBNQ{(3LI=*1YvcyGMedM$WSAt#7`YM&wK>17 zid2&tvNjSr?DNCU`4`=XjXivpyo`j}!zA!I{wss9cbJX#PIBJA`^f-#{cm;-vvHXH z!*|F%GEN?n$K)w_Zd`;+CMhJ1q?1`BgJh8$l1uVPK3PHv$ud$x_|P6BRiv8KkhNqz zsU@389f^~zWINeGc9A`#iR>pWq?NRj4$?)s$w_jGoF)BafDDra86#K7HFAU8B6r9= zGEN?n$K)w_PF~7cKq6!^Ng-(@oy;OxB!}dZJd#hAkU~-t33WKP!?_*K?Z_a`?{I!c zjL_9#T!(QT#&sCiVO+;D@_K9;=_do^JQ*g5NT~ZHaop{=`}Oe{xk65nv&5KgW6rR5 zhQ2fOoniM3TW8ogQ$u2;ic}N!&#-rfUuXDmhTSu>$Xc?M>>}-CKWQPYWE0s=nn)dq zlO1FaSx;&sp;70I`fk*Bqx6i@H|o1l-zCyX7Re=SC31+di3~Cv3H|u`J7W{ZCD=*O zo#01;uEa@lmh_VWa-N)`x08&K=aJA)^!yYf&i{$OKRM^8@knSaLf9Jf-B=xIA#{x0 F`G0b9-Jt*g diff --git a/slsDetectorSoftware/jungfrauDetectorServer/mcb_funcs.c b/slsDetectorSoftware/jungfrauDetectorServer/mcb_funcs.c index d0e2a9812..5e4061e07 100755 --- a/slsDetectorSoftware/jungfrauDetectorServer/mcb_funcs.c +++ b/slsDetectorSoftware/jungfrauDetectorServer/mcb_funcs.c @@ -55,25 +55,33 @@ int initDetector() { #ifdef VERBOSE printf("Board is for %d modules\n",n); #endif + detectorModules=malloc(n*sizeof(sls_detector_module)); + detectorDacs=malloc(n*NDAC*sizeof(int)); +#ifndef JUNGFRAU_DHANYA detectorChips=malloc(n*NCHIP*sizeof(int)); detectorChans=malloc(n*NCHIP*NCHAN*sizeof(int)); - detectorDacs=malloc(n*NDAC*sizeof(int)); detectorAdcs=malloc(n*NADC*sizeof(int)); +#endif + #ifdef VERBOSE printf("modules from 0x%x to 0x%x\n",(unsigned int)(detectorModules), (unsigned int)(detectorModules+n)); + printf("dacs from 0x%x to 0x%x\n",(unsigned int)(detectorDacs), (unsigned int)(detectorDacs+n*NDAC)); +#ifndef JUNGFRAU_DHANYA printf("chips from 0x%x to 0x%x\n",(unsigned int)(detectorChips), (unsigned int)(detectorChips+n*NCHIP)); printf("chans from 0x%x to 0x%x\n",(unsigned int)(detectorChans), (unsigned int)(detectorChans+n*NCHIP*NCHAN)); - printf("dacs from 0x%x to 0x%x\n",(unsigned int)(detectorDacs), (unsigned int)(detectorDacs+n*NDAC)); printf("adcs from 0x%x to 0x%x\n",(unsigned int)(detectorAdcs), (unsigned int)(detectorAdcs+n*NADC)); #endif - for (imod=0; imoddacs=detectorDacs+imod*NDAC; +#ifndef JUNGFRAU_DHANYA (detectorModules+imod)->adcs=detectorAdcs+imod*NADC; (detectorModules+imod)->chipregs=detectorChips+imod*NCHIP; (detectorModules+imod)->chanregs=detectorChans+imod*NCHIP*NCHAN; +#endif (detectorModules+imod)->ndac=NDAC; (detectorModules+imod)->nadc=NADC; (detectorModules+imod)->nchip=NCHIP; @@ -209,6 +217,7 @@ int copyModule(sls_detector_module *destMod, sls_detector_module *srcMod) { // printf("copying gain and offset %f %f to %f %f\n",srcMod->gain,srcMod->offset,destMod->gain,destMod->offset); +#ifndef JUNGFRAU_DHANYA for (ichip=0; ichip<(srcMod->nchip); ichip++) { if (*((srcMod->chipregs)+ichip)>=0) *((destMod->chipregs)+ichip)=*((srcMod->chipregs)+ichip); @@ -217,14 +226,19 @@ int copyModule(sls_detector_module *destMod, sls_detector_module *srcMod) { if (*((srcMod->chanregs)+ichan)>=0) *((destMod->chanregs)+ichan)=*((srcMod->chanregs)+ichan); } +#endif + for (idac=0; idac<(srcMod->ndac); idac++) { if (*((srcMod->dacs)+idac)>=0) *((destMod->dacs)+idac)=*((srcMod->dacs)+idac); } + +#ifndef JUNGFRAU_DHANYA for (iadc=0; iadc<(srcMod->nadc); iadc++) { if (*((srcMod->adcs)+iadc)>=0) *((destMod->adcs)+iadc)=*((srcMod->adcs)+iadc); } +#endif return ret; } @@ -1543,7 +1557,7 @@ int initModulebyNumber(sls_detector_module myMod) { // int ow; /* int v[NDAC];*/ int retval =-1, idac; -printf("111\n"); + nchip=myMod.nchip; nchan=(myMod.nchan)/nchip; @@ -1597,11 +1611,11 @@ printf("111\n"); for (idac=0; idac #include "communication_funcs.h" #include "server_funcs.h" -#include +#include + extern int sockfd; diff --git a/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.c b/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.c index 8da1eb848..02f2fcc2c 100755 --- a/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.c +++ b/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.c @@ -59,7 +59,9 @@ int adcvpp=0x4; int init_detector(int b, int checkType) { int i; +#ifndef JUNGFRAU_DHANYA int retvalsize,ret; +#endif if (mapCSP0()==FAIL) { printf("Could not map memory\n"); exit(1); } @@ -112,8 +114,7 @@ int init_detector(int b, int checkType) { if (b) { - resetPLL(); - + resetPLL(); bus_w16(CONTROL_REG, SYNC_RESET); bus_w16(CONTROL_REG, 0); bus_w16(CONTROL_REG, GB10_RESET_BIT); @@ -142,6 +143,71 @@ int init_detector(int b, int checkType) { initDac(0); initDac(8); //initializes the two dacs +#ifdef JUNGFRAU_DHANYA + + if(myDetectorType==JUNGFRAU){ + //set dacs + int retval = -1; + int dacvalues[14][2]={ + {0, 1250}, //vout_cm + {10, 1053}, //vin_com + {1, 600}, //vb_sda + {11, 1000}, //vb_colbuf + {2, 3000}, //vb_test_cur + {3, 830}, //vcascp_pixbuf + {4, 1630}, //vcascn_pixbuf + {12, 750}, //vb_pixbuf + {6, 480}, //vref_ds + {5, 1000}, //vb_ds + {7, 400}, //vref_comp + {13, 1220}, //vb_comp + {8, 1500}, //vref_prech + {9, 3000}, //vdd_prot + }; + for(i=0;i<14;++i){ + retval=setDac(dacvalues[i][0], dacvalues[i][1]); + if(retval!=dacvalues[i][1]) + printf("Error: Setting dac %d failed, wrote %d, read %d\n",dacvalues[i][0],dacvalues[i][1],retval); + } + + //power on the chips + bus_w(POWER_ON_REG,0x1); + + //reset adc + writeADC(ADCREG1,0x3); writeADC(ADCREG1,0x0); + writeADC(ADCREG2,0x40); + writeADC(ADCREG3,0xf); + writeADC(ADCREG4,0x3f); + //vrefs - configurable? + writeADC(ADCREG_VREFS,0x2); + + + //set ADCINVERSionreg (by trial and error) + bus_w(ADC_INVERSION_REG,0x453b2a9c); + + //set adc_pipeline + bus_w(ADC_PIPELINE_REG,0x20); + + //set dbit_pipeline + bus_w(DBIT_PIPELINE_REG,0x100e); + usleep(1000000);//1s + + //reset mem machine fifos fifos + bus_w(MEM_MACHINE_FIFOS_REG,0x4000); + bus_w(MEM_MACHINE_FIFOS_REG,0x0); + + //reset run control + bus_w(MEM_MACHINE_FIFOS_REG,0x0400); + bus_w(MEM_MACHINE_FIFOS_REG,0x0); + + //set default setting + setSettings(DYNAMICGAIN,-1); + cprintf(BLUE,"set to dynamic gain\n"); + } + +#endif + + //Initialization setFrames(-1); setTrains(-1); @@ -155,75 +221,20 @@ int init_detector(int b, int checkType) { setSynchronization(GET_SYNCHRONIZATION_MODE); startReceiver(0); //firmware } + else printf("\n\n"); + strcpy(mess,"dummy message"); strcpy(lastClientIP,"none"); strcpy(thisClientIP,"none1"); lockStatus=0; // getDynamicRange(); +#ifndef JUNGFRAU_DHANYA setROI(-1,NULL,&retvalsize,&ret); - allocateRAM(); - -#ifdef JUNGFRAU_DHANYA - if(myDetectorType==JUNGFRAU){ - //set dacs - int retval = -1; - int dacvalues[14][2]={ - {0, 1250}, //vout_cm - {10, 1053}, //vin_com - {1, 600}, //vb_sda - {11, 1000}, //vb_colbuf - {2, 3000}, //vb_test_cur - {3, 830}, //vcascp_pixbuf - {4, 1630}, //vcascn_pixbuf - {12, 750}, //vb_pixbuf - {6, 480}, //vref_ds - {5, 1000}, //vb_ds - {7, 400}, //vref_comp - {13, 1220}, //vb_comp - {8, 1500}, //vref_prech - {9, 3000}, //vdd_prot - }; - for(i=0;i<14;++i){ - retval=setDac(dacvalues[i][0], dacvalues[i][1]); - if(retval!=dacvalues[i][1]) - printf("Error: Setting dac %d failed, wrote %d, read %d\n",dacvalues[i][0],dacvalues[i][1],retval); - } - - //power on the chips - bus_w(POWER_ON_REG,0x1); - - //reset adc - writeADC(ADCREG1,0x3); writeADC(ADCREG1,0x0); - writeADC(ADCREG2,0x40); - writeADC(ADCREG3,0xf); - writeADC(ADCREG4,0x3f); - //vrefs - configurable? - writeADC(ADCREG_VREFS,0x2); - - - //set ADCINVERSionreg (by trial and error) - bus_w(ADC_INVERSION_REG,0x453b2a9c); - - //set adc_pipeline - bus_w(ADC_PIPELINE_REG,0x20); - - //set dbit_pipeline - bus_w(DBIT_PIPELINE_REG,0x100e); - usleep(1000000);//1s - - //reset mem machine fifos fifos - bus_w(MEM_MACHINE_FIFOS_REG,0x4000); - bus_w(MEM_MACHINE_FIFOS_REG,0x0); - - //reset run control - bus_w(MEM_MACHINE_FIFOS_REG,0x0400); - bus_w(MEM_MACHINE_FIFOS_REG,0x0); - - //set default setting - setSettings(DYNAMICGAIN,-1); - } + allocateRAM(); //dhanya - already being done.. and all this should be inside if (b){} ?? #endif + + return OK; } @@ -231,9 +242,9 @@ int init_detector(int b, int checkType) { int decode_function(int file_des) { int fnum,n; int retval=FAIL; -//#ifdef VERBOSE +#ifdef VERBOSE printf( "receive data\n"); -//#endif +#endif n = receiveDataOnly(file_des,&fnum,sizeof(fnum)); if (n <= 0) { #ifdef VERBOSE @@ -246,15 +257,14 @@ int decode_function(int file_des) { printf("size of data received %d\n",n); #endif - //#ifdef VERBOSE +#ifdef VERBOSE printf( "calling function fnum = %d %x %x %x\n",fnum,(unsigned int)(flist[fnum]), (unsigned int)(flist[F_READ_REGISTER]),(unsigned int)(&read_register)); - //#endif +#endif if (fnum<0 || fnum>255) fnum=255; retval=(*flist[fnum])(file_des); if (retval==FAIL) printf( "Error executing the function = %d \n",fnum); - printf("retval:%d\n",retval); return retval; } @@ -1027,7 +1037,6 @@ int set_dac(int file_des) { int imod; int n; int val; - int idac=0; int mV=0; sprintf(mess,"Can't set DAC\n"); @@ -1497,15 +1506,17 @@ int get_chip(int file_des) { } int set_module(int file_des) { sls_detector_module myModule; + int *myDac=malloc(NDAC*sizeof(int)); +#ifndef JUNGFRAU_DHANYA int *myChip=malloc(NCHIP*sizeof(int)); int *myChan=malloc(NCHIP*NCHAN*sizeof(int)); - int *myDac=malloc(NDAC*sizeof(int)); int *myAdc=malloc(NADC*sizeof(int)); +#endif int retval, n; int ret=OK; int dr;// ow; - dr=setDynamicRange(-1); cprintf(BLUE,"drr:%d\n",dr); + dr=setDynamicRange(-1); if (myDac) myModule.dacs=myDac; @@ -1513,6 +1524,8 @@ int set_module(int file_des) { sprintf(mess,"could not allocate dacs\n"); ret=FAIL; } + +#ifndef JUNGFRAU_DHANYA if (myAdc) myModule.adcs=myAdc; else { @@ -1531,6 +1544,12 @@ int set_module(int file_des) { sprintf(mess,"could not allocate chans\n"); ret=FAIL; } +#else + myModule.adcs=NULL; + myModule.chipregs=NULL; + myModule.chanregs=NULL; +#endif + myModule.ndac=NDAC; myModule.nchip=NCHIP; myModule.nchan=NCHAN*NCHIP; @@ -1588,10 +1607,16 @@ int set_module(int file_des) { } else { n += sendDataOnly(file_des,mess,sizeof(mess)); } + + free(myDac); +#ifndef JUNGFRAU_DHANYA free(myChip); free(myChan); - free(myDac); free(myAdc); +#endif + + + // setDynamicRange(dr); always 16 commented out printf("freed\n"); @@ -1615,11 +1640,12 @@ int get_module(int file_des) { sls_detector_module myModule; + int *myDac=malloc(NDAC*sizeof(int)); +#ifndef JUNGFRAU_DHANYA int *myChip=malloc(NCHIP*sizeof(int)); int *myChan=malloc(NCHIP*NCHAN*sizeof(int)); - int *myDac=malloc(NDAC*sizeof(int));/**dhanya*/ - int *myAdc=malloc(NADC*sizeof(int));/**dhanya*/ - + int *myAdc=malloc(NADC*sizeof(int)); +#endif if (myDac) myModule.dacs=myDac; @@ -1627,6 +1653,8 @@ int get_module(int file_des) { sprintf(mess,"could not allocate dacs\n"); ret=FAIL; } + +#ifndef JUNGFRAU_DHANYA if (myAdc) myModule.adcs=myAdc; else { @@ -1645,7 +1673,11 @@ int get_module(int file_des) { sprintf(mess,"could not allocate chans\n"); ret=FAIL; } - +#else + myModule.adcs=NULL; + myModule.chipregs=NULL; + myModule.chanregs=NULL; +#endif myModule.ndac=NDAC; myModule.nchip=NCHIP; myModule.nchan=NCHAN*NCHIP; @@ -1690,13 +1722,12 @@ int get_module(int file_des) { n += sendDataOnly(file_des,mess,sizeof(mess)); } - - + free(myDac); +#ifndef JUNGFRAU_DHANYA free(myChip); free(myChan); - free(myDac); free(myAdc); - +#endif /*return ok/fail*/ return ret; @@ -2019,7 +2050,6 @@ int get_run_status(int file_des) { int read_frame(int file_des) { - int ns=0; u_int16_t* p=NULL; @@ -2410,7 +2440,6 @@ int set_roi(int file_des) { int retvalsize=0; ROI arg[MAX_ROIS]; ROI* retval=0; - int iroi; strcpy(mess,"Could not set/get roi\n"); @@ -2423,12 +2452,20 @@ int set_roi(int file_des) { ret=FAIL; } +#ifdef JUNGFRAU_DHANYA + ret = FAIL; + strcpy(mess,"Not applicable/implemented for this detector\n"); + printf("Error:Set ROI-%s",mess); +#else + + if(nroi>=0){ n = receiveDataOnly(file_des,arg,nroi*sizeof(ROI)); if (n != (nroi*sizeof(ROI))) { sprintf(mess,"Received wrong number of bytes for ROI\n"); ret=FAIL; } + //#ifdef VERBOSE printf("Setting ROI to:"); @@ -2459,7 +2496,7 @@ int set_roi(int file_des) { sprintf(mess,"Could not set all roi, should have set %d rois, but only set %d rois\n",nroi,retvalsize); } } - +#endif if(ret==OK && differentClients){ printf("Force update\n"); @@ -2612,7 +2649,6 @@ int set_speed(int file_des) { int set_readout_flags(int file_des) { enum readOutFlags arg; - int n; int ret=FAIL; @@ -3441,7 +3477,6 @@ int write_adc_register(int file_des) { int arg[2]; int addr, val; int n; - u_int32_t address; sprintf(mess,"Can't write to register\n"); diff --git a/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.h b/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.h index 4f18e23fc..08f3c61e3 100755 --- a/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.h +++ b/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.h @@ -69,7 +69,9 @@ int set_dynamic_range(int); int set_roi(int); int get_roi(int); int set_speed(int); +#ifndef JUNGFRAU_DHANYA void prepareADC(void); +#endif int set_readout_flags(int); int execute_trimming(int); int lock_server(int); diff --git a/slsDetectorSoftware/jungfrauDetectorServer/trimming_funcs.c b/slsDetectorSoftware/jungfrauDetectorServer/trimming_funcs.c index 23762b25e..543b946b7 100755 --- a/slsDetectorSoftware/jungfrauDetectorServer/trimming_funcs.c +++ b/slsDetectorSoftware/jungfrauDetectorServer/trimming_funcs.c @@ -155,6 +155,10 @@ int calccal_from_vthr(int vthr) { int choose_vthresh_and_vtrim(int countlim, int nsigma, int im) { int retval=OK; +#ifdef JUNGFRAU_DHANYA + cprintf(RED,"choose_vthresh_and_vtrim Not implemented for JungFrau\n");//did not want to fix warnings +#else + #ifdef MCB_FUNCS int modma, modmi, nm; int thr, thrstep=5, nthr=31; @@ -315,6 +319,7 @@ int choose_vthresh_and_vtrim(int countlim, int nsigma, int im) { free(thrmi); free(thrma); +#endif #endif return retval; } @@ -324,11 +329,14 @@ int choose_vthresh_and_vtrim(int countlim, int nsigma, int im) { int trim_with_level(int countlim, int im) { + int retval=OK; +#ifdef JUNGFRAU_DHANYA + cprintf(RED,"trim_with_level Not implemented for JungFrau\n"); //did not want to fix warnings +#else int ich, itrim, ichan, ichip, imod; u_int32_t *scan; int *inttrim; int modma, modmi, nm; - int retval=OK; int *fifodata; sls_detector_channel myChan; printf("trimming module number %d", im); @@ -427,6 +435,7 @@ int trim_with_level(int countlim, int im) { } free(inttrim); +#endif #endif return retval; } @@ -474,6 +483,9 @@ int ave(int *a, int n) int choose_vthresh() { int retval=OK; +#ifdef JUNGFRAU_DHANYA + cprintf(RED,"choose_vthresh Not implemented for JungFrau\n"); //did not want to fix warnings +#else #ifdef MCB_FUNCS int imod, ichan; u_int32_t *scan, *scan1; @@ -599,6 +611,7 @@ int choose_vthresh() { free(scan); free(scan1); } +#endif #endif return retval; } @@ -611,7 +624,9 @@ int trim_with_median(int stop, int im) { int retval=OK; - +#ifdef JUNGFRAU_DHANYA + cprintf(RED,"trim_with_median Not implemented for JungFrau\n"); //did not want to fix warnings +#else #ifdef MCB_FUNCS int ichan, imod, ichip, ich; u_int32_t *scan, *scan1; @@ -744,6 +759,7 @@ int trim_with_median(int stop, int im) { } free(olddiff); free(direction); +#endif #endif return retval; } diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index fad7115a8..23581e43c 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -1075,25 +1075,29 @@ int slsDetector::sendChip(sls_detector_chip *myChip) { int slsDetector::sendModule(sls_detector_module *myMod) { int ts=0; //send module structure - ts+=controlSocket->SendDataOnly(&(myMod->module),sizeof(myMod->module));cout<<"module:"<<(myMod->module)<SendDataOnly(&(myMod->serialnumber),sizeof(myMod->serialnumber));cout<<"serial number:"<<(myMod->serialnumber)<SendDataOnly(&(myMod->nchan),sizeof(myMod->nchan));cout<<"nchan :"<<(myMod->nchan)<SendDataOnly(&(myMod->nchip),sizeof(myMod->nchip));cout<<"nchip :"<<(myMod->nchip)<SendDataOnly(&(myMod->ndac),sizeof(myMod->ndac));cout<<"ndac :"<<(myMod->ndac)<SendDataOnly(&(myMod->nadc),sizeof(myMod->nadc));cout<<"nadc :"<<(myMod->nadc)<SendDataOnly(&(myMod->reg),sizeof(myMod->reg));cout<<"reg :"<<(myMod->reg)<SendDataOnly(myMod->dacs,sizeof(myMod->ndac));cout<<"dacs :"<<(myMod->dacs[0])<SendDataOnly(myMod->adcs,sizeof(myMod->nadc));cout<<"adcs :none"<SendDataOnly(myMod->chipregs,sizeof(myMod->nchip));cout<<"chipregs :"<<(myMod->serialnumber)<SendDataOnly(myMod->chanregs,sizeof(myMod->nchan));cout<<"chanregs :"<<(myMod->serialnumber)<SendDataOnly(&(myMod->gain), sizeof(myMod->gain));cout<<"gain :"<<(myMod->gain)<SendDataOnly(&(myMod->offset), sizeof(myMod->offset));cout<<"offset :"<<(myMod->offset)<SendDataOnly(&(myMod->module),sizeof(myMod->module)); + ts+=controlSocket->SendDataOnly(&(myMod->serialnumber),sizeof(myMod->serialnumber)); + ts+=controlSocket->SendDataOnly(&(myMod->nchan),sizeof(myMod->nchan)); + ts+=controlSocket->SendDataOnly(&(myMod->nchip),sizeof(myMod->nchip)); + ts+=controlSocket->SendDataOnly(&(myMod->ndac),sizeof(myMod->ndac)); + ts+=controlSocket->SendDataOnly(&(myMod->nadc),sizeof(myMod->nadc)); + ts+=controlSocket->SendDataOnly(&(myMod->reg),sizeof(myMod->reg)); + ts+=controlSocket->SendDataOnly(myMod->dacs,sizeof(myMod->ndac)); + if(thisDetector->myDetectorType != JUNGFRAU){ + ts+=controlSocket->SendDataOnly(myMod->adcs,sizeof(myMod->nadc)); + ts+=controlSocket->SendDataOnly(myMod->chipregs,sizeof(myMod->nchip)); + ts+=controlSocket->SendDataOnly(myMod->chanregs,sizeof(myMod->nchan)); + } + ts+=controlSocket->SendDataOnly(&(myMod->gain),sizeof(myMod->gain)); + ts+=controlSocket->SendDataOnly(&(myMod->offset), sizeof(myMod->offset)); ts+=controlSocket->SendDataOnly(myMod->dacs,sizeof(dacs_t)*(myMod->ndac)); - ts+=controlSocket->SendDataOnly(myMod->adcs,sizeof(dacs_t)*(myMod->nadc)); - ts+=controlSocket->SendDataOnly(myMod->chipregs,sizeof(int)*(myMod->nchip)); - ts+=controlSocket->SendDataOnly(myMod->chanregs,sizeof(int)*(myMod->nchan)); + if(thisDetector->myDetectorType != JUNGFRAU){ + ts+=controlSocket->SendDataOnly(myMod->adcs,sizeof(dacs_t)*(myMod->nadc)); + ts+=controlSocket->SendDataOnly(myMod->chipregs,sizeof(int)*(myMod->nchip)); + ts+=controlSocket->SendDataOnly(myMod->chanregs,sizeof(int)*(myMod->nchan)); + } return ts; } @@ -1147,17 +1151,19 @@ int slsDetector::receiveModule(sls_detector_module* myMod) { ts+=controlSocket->ReceiveDataOnly(&(myMod->nadc),sizeof(myMod->nadc)); ts+=controlSocket->ReceiveDataOnly(&(myMod->reg),sizeof(myMod->reg)); ts+=controlSocket->ReceiveDataOnly(myMod->dacs,sizeof(myMod->ndac)); - ts+=controlSocket->ReceiveDataOnly(myMod->adcs,sizeof(myMod->nadc)); - ts+=controlSocket->ReceiveDataOnly(myMod->chipregs,sizeof(myMod->nchip)); - ts+=controlSocket->ReceiveDataOnly(myMod->chanregs,sizeof(myMod->nchan)); + if(thisDetector->myDetectorType != JUNGFRAU){ + ts+=controlSocket->ReceiveDataOnly(myMod->adcs,sizeof(myMod->nadc)); + ts+=controlSocket->ReceiveDataOnly(myMod->chipregs,sizeof(myMod->nchip)); + ts+=controlSocket->ReceiveDataOnly(myMod->chanregs,sizeof(myMod->nchan)); + } ts+=controlSocket->ReceiveDataOnly(&(myMod->gain), sizeof(myMod->gain)); ts+=controlSocket->ReceiveDataOnly(&(myMod->offset), sizeof(myMod->offset)); - myMod->dacs=dacptr; - myMod->adcs=adcptr; - myMod->chipregs=chipptr; - myMod->chanregs=chanptr; + myMod->dacs=dacptr; + myMod->adcs=adcptr; + myMod->chipregs=chipptr; + myMod->chanregs=chanptr; #ifdef VERBOSE std::cout<< "received module " << myMod->module << " of size "<< ts << " register " << myMod->reg << std::endl; @@ -1166,21 +1172,24 @@ int slsDetector::receiveModule(sls_detector_module* myMod) { #ifdef VERBOSE std::cout<< "received dacs " << myMod->module << " of size "<< ts << std::endl; #endif - ts+=controlSocket->ReceiveDataOnly(myMod->adcs,sizeof(dacs_t)*(myMod->nadc)); -#ifdef VERBOSE - std::cout<< "received adcs " << myMod->module << " of size "<< ts << std::endl; -#endif - ts+=controlSocket->ReceiveDataOnly(myMod->chipregs,sizeof(int)*(myMod->nchip)); -#ifdef VERBOSE - std::cout<< "received chips " << myMod->module << " of size "<< ts << std::endl; -#endif - ts+=controlSocket->ReceiveDataOnly(myMod->chanregs,sizeof(int)*(myMod->nchan)); -#ifdef VERBOSE - std::cout<< "nchans= " << thisDetector->nChans << " nchips= " << thisDetector->nChips; - std::cout<< "mod - nchans= " << myMod->nchan << " nchips= " <nchip; - std::cout<< "received chans " << myMod->module << " of size "<< ts << std::endl; + if(thisDetector->myDetectorType != JUNGFRAU){ + ts+=controlSocket->ReceiveDataOnly(myMod->adcs,sizeof(dacs_t)*(myMod->nadc)); +#ifdef VERBOSE + std::cout<< "received adcs " << myMod->module << " of size "<< ts << std::endl; #endif + ts+=controlSocket->ReceiveDataOnly(myMod->chipregs,sizeof(int)*(myMod->nchip)); +#ifdef VERBOSE + std::cout<< "received chips " << myMod->module << " of size "<< ts << std::endl; +#endif + ts+=controlSocket->ReceiveDataOnly(myMod->chanregs,sizeof(int)*(myMod->nchan)); +#ifdef VERBOSE + std::cout<< "nchans= " << thisDetector->nChans << " nchips= " << thisDetector->nChips; + std::cout<< "mod - nchans= " << myMod->nchan << " nchips= " <nchip; + std::cout<< "received chans " << myMod->module << " of size "<< ts << std::endl; +#endif + } + #ifdef VERBOSE std::cout<< "received module " << myMod->module << " of size "<< ts << " register " << myMod->reg << std::endl; #endif @@ -2774,24 +2783,27 @@ int slsDetector::setModule(sls_detector_module module, int* gainval, int* offset thisDetector->nDacs=module.ndac; thisDetector->nAdcs=module.nadc; - for (int ichip=0; ichipnChips; ichip++) { - if (chipregs) - chipregs[ichip+thisDetector->nChips*imod]=module.chipregs[ichip]; + if(thisDetector->myDetectorType != JUNGFRAU){ + for (int ichip=0; ichipnChips; ichip++) { + if (chipregs) + chipregs[ichip+thisDetector->nChips*imod]=module.chipregs[ichip]; - if (chanregs) { - for (int i=0; inChans; i++) { - chanregs[i+ichip*thisDetector->nChans+thisDetector->nChips*thisDetector->nChans*imod]=module.chanregs[ichip*thisDetector->nChans+i]; - } - } + if (chanregs) { + for (int i=0; inChans; i++) { + chanregs[i+ichip*thisDetector->nChans+thisDetector->nChips*thisDetector->nChans*imod]=module.chanregs[ichip*thisDetector->nChans+i]; + } + } + } + if (adcs) { + for (int i=0; inAdcs; i++) + adcs[i+imod*thisDetector->nAdcs]=module.adcs[i]; + } } + if (dacs) { for (int i=0; inDacs; i++) dacs[i+imod*thisDetector->nDacs]=module.dacs[i]; } - if (adcs) { - for (int i=0; inAdcs; i++) - adcs[i+imod*thisDetector->nAdcs]=module.adcs[i]; - } (detectorModules+imod)->gain=module.gain; (detectorModules+imod)->offset=module.offset; @@ -2899,25 +2911,28 @@ slsDetectorDefs::sls_detector_module *slsDetector::getModule(int imod){ thisDetector->nDacs=myMod->ndac; thisDetector->nAdcs=myMod->nadc; - for (int ichip=0; ichipnChips; ichip++) { - if (chipregs) - chipregs[ichip+thisDetector->nChips*imod]=myMod->chipregs[ichip]; + if(thisDetector->myDetectorType != JUNGFRAU){ + for (int ichip=0; ichipnChips; ichip++) { + if (chipregs) + chipregs[ichip+thisDetector->nChips*imod]=myMod->chipregs[ichip]; - if (chanregs) { - for (int i=0; inChans; i++) { - chanregs[i+ichip*thisDetector->nChans+thisDetector->nChips*thisDetector->nChans*imod]=myMod->chanregs[ichip*thisDetector->nChans+i]; + if (chanregs) { + for (int i=0; inChans; i++) { + chanregs[i+ichip*thisDetector->nChans+thisDetector->nChips*thisDetector->nChans*imod]=myMod->chanregs[ichip*thisDetector->nChans+i]; + } } } + + if (adcs) { + for (int i=0; inAdcs; i++) + adcs[i+imod*thisDetector->nAdcs]=myMod->adcs[i]; + } } + if (dacs) { for (int i=0; inDacs; i++) dacs[i+imod*thisDetector->nDacs]=myMod->dacs[i]; } - if (adcs) { - for (int i=0; inAdcs; i++) - adcs[i+imod*thisDetector->nAdcs]=myMod->adcs[i]; - } - (detectorModules+imod)->gain=myMod->gain; (detectorModules+imod)->offset=myMod->offset; (detectorModules+imod)->serialnumber=myMod->serialnumber; diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_defs.h b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_defs.h index 543f305e5..488dc0a0f 100644 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_defs.h +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_defs.h @@ -15,10 +15,17 @@ /* examples*/ +#ifdef JUNGFRAU_DHANYA +#define NCHAN (256*256) +#define NCHIP 8 +#define NADC 0 +#else #define NCHAN 1 #define NCHIP 1 #define NDAC 1 #define NADC 1 +#endif + #define NMAXMODX 1 #define NMAXMODY 1 #define NMAXMOD NMAXMODX*NMAXMODY @@ -27,5 +34,4 @@ - #endif /* SLSDETECTORSERVER_DEFS_H_ */