diff options
author | Christian Cunningham <cc@localhost> | 2022-01-05 14:01:29 -0800 |
---|---|---|
committer | Christian Cunningham <cc@localhost> | 2022-01-05 14:01:29 -0800 |
commit | 3a8ed19bf83f11ff00c4904fab2cc083b7e33478 (patch) | |
tree | 9d9a6f92f9d74001e969d23ea79ad26f6227fea2 /src | |
parent | f3ea4cd0c22f351d8dfffb0e937194c4b526b665 (diff) |
Cleaned up/ Standardized
Diffstat (limited to 'src')
-rw-r--r-- | src/boot.S | 6 | ||||
-rw-r--r-- | src/cpu/atomic/swap.h | 1 | ||||
-rw-r--r-- | src/cpu/irq.S | 82 | ||||
-rw-r--r-- | src/cpu/irq.c | 4 | ||||
-rw-r--r-- | src/drivers/uart.h | 5 | ||||
-rw-r--r-- | src/graphics/lfb.c | 12 | ||||
-rw-r--r-- | src/graphics/philosopher_toad.h | 764 | ||||
-rw-r--r-- | src/lib/ll.c | 6 | ||||
-rw-r--r-- | src/lib/ll.h | 8 | ||||
-rw-r--r-- | src/lib/mem.c | 7 | ||||
-rw-r--r-- | src/lib/q.c | 6 | ||||
-rw-r--r-- | src/lib/q.h | 8 | ||||
-rw-r--r-- | src/sys/core.c | 1 | ||||
-rw-r--r-- | src/sys/core.h | 11 | ||||
-rw-r--r-- | src/sys/kernel.S | 6 | ||||
-rw-r--r-- | src/sys/kernel.h | 8 | ||||
-rw-r--r-- | src/sys/timer.c | 2 | ||||
-rw-r--r-- | src/util/status.c | 2 | ||||
-rw-r--r-- | src/util/time.h | 3 |
19 files changed, 821 insertions, 121 deletions
@@ -59,12 +59,6 @@ irq: pop {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} subs pc, lr, #4 -fiq: - push {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - bl a_fiq_handler - pop {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - subs pc, lr, #4 - .globl io_halt io_halt: wfi diff --git a/src/cpu/atomic/swap.h b/src/cpu/atomic/swap.h index 3584d4e..cbed62c 100644 --- a/src/cpu/atomic/swap.h +++ b/src/cpu/atomic/swap.h @@ -8,6 +8,7 @@ /// https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/3_Processes.html /// https://developer.arm.com/documentation/dht0008/a/arm-synchronization-primitives/practical-uses/implementing-a-semaphore?lang=en +// TODO: Once scheduling works, have a failed lock put thread in waiting state static inline void atm_lock(unsigned long pid, unsigned long* addr) { unsigned long tmp, current_lock_value; diff --git a/src/cpu/irq.S b/src/cpu/irq.S deleted file mode 100644 index fbb6ab7..0000000 --- a/src/cpu/irq.S +++ /dev/null @@ -1,82 +0,0 @@ -a_irq_handler: - push {lr} - cpsid i // Disable IRQ - // r2 = CORE0_INTERRUPT_SOURCE - // if r2 & 0b100000000 - mov r2, #0x40000000 - ldr r3, [r2, #0x60] - tst r3, #256 - beq a_irq_handler.timer - // r2 = IRQ_PEND2 - // r2 & 1 << 25 - mov r2, #0xB208 - movt r2, #0x3F00 - ldr r3, [r2] - tst r3, #0x2000000 - beq a_irq_handler.exit - mov r2, #0x1040 - movt r2, #0x3F20 - ldr r3, [r2] - tst r3, #16 - beq a_irq_handler.exit - mov r2, #0x1000 - movt r2, #0x3F20 - ldrb r0, [r2] - push {r0} - - // If 't' was pressed - // disable timer - cmp r0, #0x74 - bne a_irq_handler.ttimer - mrc p15, #0, r0, c14, c3, #1 - cmp r0, #0 - beq a_irq_handler.etimer - // Disable - mov r0, #0 - mcr p15, 0, r0, c14, c3, 1 - b a_irq_handler.ttimer -a_irq_handler.etimer: - // Enable - ldr r0, =cntfrq - bl write_cntv_tval - mov r0, #1 - mcr p15, 0, r0, c14, c3, 1 - // Otherwise continue -a_irq_handler.ttimer: - pop {r0} - bl uart_char - ldr r0, =imsg - bl uart_string - cpsie i // Enable IRQ - pop {pc} -a_irq_handler.timer: - - // r2 = CORE0_INTERRUPT_SOURCE - // if r2 & 0b1000 - mov r2, #0x40000000 - ldr r3, [r2, #0x60] - tst r3, #8 - beq a_irq_handler.exit - bl c_timer - //ldr r0, =imsg - //bl uart_string -a_irq_handler.exit: - cpsie i // Enable IRQ - pop {pc} - -.globl a_fiq_handler -a_fiq_handler: - push {lr} - cpsie f // Disable FIQ - bl c_timer - ldr r0, =fmsg - bl uart_string -a_fiq_handler.exit: - cpsie f // Enable FIQ - pop {pc} - -.section ".data" -imsg: - .asciz " asm_irq_handler\n" -fmsg: - .asciz " asm_fiq_handler\n" diff --git a/src/cpu/irq.c b/src/cpu/irq.c index dbd4c10..4a96018 100644 --- a/src/cpu/irq.c +++ b/src/cpu/irq.c @@ -2,14 +2,12 @@ #include "../drivers/uart.h" #include "../graphics/drawer.h" #include "../sys/core.h" +#include "../sys/kernel.h" #include "../sys/timer.h" #include "../util/mutex.h" #include "../util/status.h" #include "../util/time.h" -extern unsigned long cmdidx; -extern char cmd[2048]; - void localtest(void); void c_irq_handler(void) diff --git a/src/drivers/uart.h b/src/drivers/uart.h index 21e8795..b83732f 100644 --- a/src/drivers/uart.h +++ b/src/drivers/uart.h @@ -6,9 +6,10 @@ #define PRINTI_DBG(X) uart_char('[');uart_string(__FILE__);uart_char(':');uart_10(__LINE__);uart_string("] ");uart_10((unsigned long)X);uart_char('\n'); extern void uart_char(unsigned char c); -extern void uart_hex(unsigned long data); extern void uart_string(char* message); -void uart_hexn(unsigned long); +extern void uart_hex(unsigned long data); + void uart_10(unsigned long); +void uart_hexn(unsigned long); #endif diff --git a/src/graphics/lfb.c b/src/graphics/lfb.c index 54bc71c..ffc27de 100644 --- a/src/graphics/lfb.c +++ b/src/graphics/lfb.c @@ -1,6 +1,6 @@ #include "../drivers/uart.h" #include "../graphics/glyphs.h" -#include "../graphics/homer.h" +#include "../graphics/philosopher_toad.h" #include "../graphics/lfb.h" #include "../graphics/mbox.h" @@ -90,18 +90,18 @@ void lfb_showpicture(void) clear_screen(); unsigned int x,y; unsigned char *ptr=lfb; - char *data=homer_data, pixel[4]; + char *data=toad_data, pixel[4]; - ptr = lfb + (height-homer_height)*pitch + (width-homer_width)*4; - for(y=0;y<homer_height;y++) { - for(x=0;x<homer_width;x++) { + ptr = lfb + (height-toad_height)*pitch + (width-toad_width)*4; + for(y=0;y<toad_height;y++) { + for(x=0;x<toad_width;x++) { HEADER_PIXEL(data, pixel); // the image is in RGB. So if we have an RGB framebuffer, we can copy the pixels // directly, but for BGR we must swap R (pixel[0]) and B (pixel[2]) channels. *((unsigned int*)ptr)=isrgb ? *((unsigned int *)&pixel) : (unsigned int)(pixel[0]<<16 | pixel[1]<<8 | pixel[2]); ptr+=4; } - ptr+=pitch-homer_width*4; + ptr+=pitch-toad_width*4; } } diff --git a/src/graphics/philosopher_toad.h b/src/graphics/philosopher_toad.h new file mode 100644 index 0000000..c58d6b4 --- /dev/null +++ b/src/graphics/philosopher_toad.h @@ -0,0 +1,764 @@ +/* GIMP header image file format (RGB): philosopher_toad.h */ + +static unsigned int toad_width = 109; +static unsigned int toad_height = 110; + +/* Call this macro repeatedly. After each use, the pixel data can be extracted */ + +#define HEADER_PIXEL(data,pixel) {\ +pixel[0] = (((data[0] - 33) << 2) | ((data[1] - 33) >> 4)); \ +pixel[1] = ((((data[1] - 33) & 0xF) << 4) | ((data[2] - 33) >> 2)); \ +pixel[2] = ((((data[2] - 33) & 0x3) << 6) | ((data[3] - 33))); \ +data += 4; \ +} +static char *toad_data = + "P+[BP;_CO+K>N+;:O;O?Q</GP+[BM++6L*[4P+[DR,;LP+[DO;OAO;O?M;/7M;/7" + "R,3HR<?KQ,+HS,KRQL7NQL?RR,GTS]#]TM/^T]3_U-7`U-7`UMC`V-L\"U]H!U=?_" + "U=?_T]7]U-;^U-;^TM/^U]<!V=D#UM7`U=<#U-8\"U=<#U-8\"T=+_T]4!U=<!TM/^" + "T=+_T-'^T-'^T=+_T]4#U-8$T]4#TM0\"T]4!TM/`T=+_T=+_T=+_T=+_T=+_T=+_" + "T-'`T-'`T-'`T-'`S]#_S]#_S]#_S]#_T-'`T-'`T=,!T=,!T-'`S]#_S]#]T-'^" + "S]#_S]#_T-'`S]#_SL_^S<[]S<[]S<[]S<[]SL_^SL_^S<[]S,W\\S,W\\S,W\\S<[]" + "S,W\\S,W\\S,W\\S,W\\R\\S[RLOZRLOZR\\S[R<KYR<KYR<KYR<KYRLOZO[[?N[K;MK76" + "L['5M;/7M;/7KZW1IZ7)K:O/L['5NKC<O;O?MK38M[79LK#4L:_3P<#AQL3HQ,+F" + "QL;KO[[FP</KPL3LPL7OS<[YT-'\\S]#[S<_WSM#XU-;^U-;]T=/ZT]7]T=/[TM3\\" + "T=/[T-+ZTM/^U-7`T-'\\SL_\\S<[YS]#[T-'\\S]#[T]3_U=<!TM/^TM/^T]4!U-8\"" + "T]4!T]4!T]4#U-8$U=<%T]4#TM0\"T=,!T=,!T=,!TM0\"TM0\"TM0\"TM0\"T=,!T-'`" + "S]#_T-'`T-'`T=,!T=,!T-'`T-'`T-'`T-'`S]#_SL_^SL_^S]#_SL_^S]#_S]#_" + "S]#_SL_^S<[]S<[]S<[]S<[]S<[]S<[]S,W\\S,W\\R\\S[S,W\\S<[]S<[]S<[]S<[]" + "S,W\\R\\S[RLOZRLOZR\\S[R<KYR<KYR<KYR<KYRLOZM+/4L;#1K:S-JJG*I*/$G9R]" + "F9BXF)>WFYJZG9R\\JJG)MK75G)N[EY:VH:\"`K:S,JJG)N[K:Q,3EP\\/FM[K<O\\'F" + "PL;LPL;LP<3LP<3LP\\;NQ<GOQ\\OQR,SRR<WSRL[TR\\_URL[TS='WSM'YS=#XT=3\\" + "TM7]S]+ZS,WXRLOVS,WXS<[YS<[YT=+]U-7`T-'\\S,[VT=/[U-7`U-8\"T=+_SL_^" + "S]#_T=(\"T]4#TM0\"T=,!T-'`T=,!TM0\"TM0\"TM0\"T]4#T=,!S]#_SL_^T-'`T=,!" + "T=,!T=,!T-'`T-'`T-'`S]#_SL_^SL_^SL_^S]#_SL_^SL_^S]#_SL_^S<[]S<[]" + "S<[]S<[]S<[]S<[]S<[]S,W\\R\\S[R\\S[R\\S[S,W\\S,W\\S,W\\S,W\\S,W\\R\\S[RLOZ" + "RLOZR\\S[RLOZRLOZRLOZRLOZR<KYJZK*K:S,K*O+I*/!F)>UD(^MD(^ME).QBHJE" + "AX>BEI:QHZ*`='.18F%_=G63C(NI?GV;FINXMK?6L+32HZ;&K+'2M+G:L[C9L;79" + "L+38M[O?P<7IPL;JO,#DO<'EQ,CLQLKNQLKNRL[TS-#VR\\_US='WS-'XQ\\SSQLGQ" + "Q,?OQ,?OQ,?OQ,?OR,OSRLWUQLGSQ<GOR\\_UT];^U=D\"T]<\"T=0\"T-,\"T=0#T=0\"" + "T-,!T-,!T-,!T-,!T=0\"T=0\"T-,!TM4#T-,!SM#_SM#_S]'`T-,!S]'`SM#_T-,!" + "T-,!T-,!S]'`S<_^S<__S<__SM#`S<_^S<_^S<_^S<_^S,[]S,[]S,[]S<_^S,[]" + "S,[]S,[]R\\W\\RLS[RLS[RLS[R\\W\\R<OZR<OZRLS[RLS[R<OZR<OZR<OZRLS[R<OZ" + "R<OZR<OZR<OZR,KYJZK(K:S*J:G$GY^ZEY>RE)2ME)2MDY.LA(2=?7V6C8VFGY^X" + "<W..5E9Q:FJ%@'^=;6V(BXNFL;+/K:[+GZ/!IZO)JJ_.I*G(HJ?(J:[/L[C9NK_@" + "NK_@NK_@O,'BP,7FP\\;HQ,?IQ\\OOR,SPQ<GMP\\GLP,;KN;_DN;WAM[O?N+SBN;WC" + "N;WCOL'IP<3LOL'IO,#DP<7KR,SRS=#XT-/]T-/_T-,!T=0\"T-/_T-/_T-/_T-/_" + "T=3`T=3`T-/_S]+^T=3`T-/_S]+^T-/_T-/_T-/_SM']S=#\\S]'`S]'`S]'`SM#_" + "S<__S,[^S,[^S<__S<_^S<_^S<_^S<_^S,[]S,[]S<_^SM#_S<_^S<_^S<_^S,[]" + "R\\W\\RLS[R\\W\\R\\W\\RLS[RLS[R\\W\\RLS[R<OZR<OZR<OZR<OZR<OZR<OZR<OZR<OZ" + "R,KYHZ\"\\H9ZZFYBRE9*LEI2KFIBOF):MD8^EDI\"GDI\"GIJ2[M[3.DY\"J:F>#?7J6" + "E9*N<6Z*@X.>JZO&J:K'HJ.`IZO'I:G'F)RZG)^_K;#0M;C8L+/3L[;6P,/CQ,?I" + "O<#BO;W@O+_AP<3FP\\;HP,7FP,3HO,+EMKS?L+76L+76L[?;MKK>M[OAO<'GP\\?M" + "PL7MOL+FP,3JPL;LQ<CPR,OUR<SVR\\[ZR\\[ZS]+\\SM'[S=#ZS=#ZSM'[S]+\\S]+\\" + "S]+\\T-/]T-/]T=3^T=3^T=3^T-/]S]+\\SM'[S<_^SM#_SM#_SM#`S<__S,[^R\\W_" + "R\\W_S,[]S<_^S,[]S,[]R\\W\\S,[]S<_^SM#_S<_^S<_^S<_^S,[]R\\W\\R\\W\\R\\W\\" + "R\\W\\S<_^S<_^S<_^S,[]RLS[R<OZR<OZR<OZR<OZR<OZR<OZR<OZR,KYDY\"JDH^I" + "DH^IE9.JFYFOH9^UHJ\"TH9^SKZW#L['(P+[5Q,';IJ.];FN'?'F5DY\"L?'F5B(6A" + "LJ_-KZ[,J*?%K*W*JJO(H*&^G9Z]K*W,L;+1K:[-L[/4P<'BP\\/DN;G:KZ_0L;'2" + "M[?8N;S>NKW?O,'BO<+CM[W>L[C7M+G:M[S=N+S@M[O?O<'GP\\?MP\\?MQ<GOQLKP" + "Q\\OQR<STR<STRLWUR\\[XR\\[XRLWUR<STQLGQQLGQQ\\KRRLWUS,_WSM'YS=#XSM'Y" + "T-/[T-/[SM'YS=#XSM'YS]+ZS=#\\SM#_S]'`S](!SM#`S<`!S,[`S,[`R\\W\\R\\W\\" + "R\\W\\R\\W\\RLS[R\\W\\S,[]S<_^S<_^S<_^S<_^S,[]R\\W\\RLS[RLS[R\\W\\S,[]S,[]" + "S,[]R\\W\\RLS[R<OZR<OZR<OZR<OZR<OZR<OZR<OZR,KYC(FCD(VGFIBOI**XJ:>]" + "K:N_MK3(P;_3Q,+8PL#7P\\'8P;[8M+'+>G>3@G^;D8ZL>721A'^>KZS*JZC&G)NY" + "G)NYGZ\"]FYRYH)^]I*/!J:C&KZ[.N+?7O;S=NKG:M+/4IZ;'J*?(K:W.L;'2L;36" + "MKG;M[S=L[C9MKO:M[S;N;[?N+W>L[?;MKK>N[_EN[_ENK[DOL'IP\\;NQ\\KRR,OS" + "R,OSR,OSR<STQLGQP\\;NP,/KOL'IP,/KQ<CPR<STS,_WR<WSS-#VS='WS='WR\\_U" + "R\\_US='WT-3ZS=#\\S]'`T=0\"T=0#T-,\"S](#SM$\"SL`$RLS[RLS[RLS[R<OZR<OZ" + "RLS[R\\W\\S,[]S,[]S<_^S,[]R\\W\\RLS[RLS[RLS[RLS[R,KYR<OZR<OZR<OZR,KY" + "R,KYR<OZR<OZR<OZR<OZR<OZR<OZR,KYF9JOHZ2YK:O!N;?-QL3:Q,+8O+K0NKC." + "M[7+M;/*N;?.P\\'8N[C2@X\":=7*,B8:@=7*.@7Z:G9JVI:6`C(RGA86@A8:ACY\"K" + "DI&QF)>WIJ7%LK'1M;34MK76M+/4KJW.IZ;&K*O,KJS0J:G*JZS)LK/.L[?3LK;4" + "M+C6M;G7MKG9M;C8I:C*JJW/K:_4K*[3KK#5L++7M+C<N[_EPL;LQLGQQ<KQQ<KQ" + "PL;LPL;LN;WCN+SBPL;LP\\?MP,3JR,SRR,OSRLSTR<ORQ\\GPR,KQS,[USM#XSM#X" + "RLOXQ\\CUQ\\CWRLK[S,S]R\\O\\R\\S[S,W\\R\\SYS<[[SL_\\S,WZRLOXR,GVRLOXS,WZ" + "S<[]S<[]S,W\\S,W\\S,W\\R\\S[R\\S[S,W\\RLOXR<KWR<KWRLOXR\\S[RLOZRLOZR<KY" + "RLOZRLOZR\\S[RLOZR<KYLK#&NKC.OKS2O[W3PL#6P+[4N;?-M;/)J*:]JZF`N;?." + "R\\G@MK/-?GN5<F^)AX2>=G./?GN7E)&MFYBT@(\";?7V8@X.>CX^JF9BVF)>UH)^_" + "JJG)K*O+JJG)JJG*JJG*KZ[.K:S-JJC,J:C)K:[+L[7-L;+-K*W,LK/0MK?4M[C7" + "MK?6IJ;'J:G*JZO.JZO.J*O-J*O-JZ[0L;/8N;O@OL+HO\\/IO\\+JM;G?MKK@M+C>" + "M;G?N;WCN+SBN;WCP,3JR<OSS,[UR\\WTQ<?LPL3IQ,;MQ<?NQ,;NQ,7PPL/PP\\3S" + "QL?VR,CYR<KYRLOZS<[]RLOXR\\SYS,WZS,WZS,WZS,WZR\\SYR\\SYS,W\\S,W\\S<[]" + "SL_^S]#_SL_^S<[]S,W\\R\\SYRLOXRLOXRLOXRLOZR<KYR<KYRLOZR<KYRLOZRLOZ" + "RLOZR<KYP;_5Q,+8P;_5N[G/N;?-O;O1O;O1N;?-K*K!IJ2[M;/*S\\WDL:_&?GN5" + "<6Z(?WR6>'61>WB4C(FEE)&M?7V8@(\";BHJEEY>RGYZ\\F9BVFIFWHJ&_I*/#H:\"`" + "I*/#JZK*LK'/K*O,J*?(JJG)L+#+LK++KK#(J:K'K:W(M+3/MK;1M+/1I*/!IJ7%" + "IZ;&J*?'I:3$I*/$I:7&JZO,LK+5MK;;LK39KK#5JZW2JZW2L++7M+;;L++7K:_4" + "L++7M+;;P,+IQ\\GPR<OPQ,?IP,/EP,+GP</JO\\'HP\\7MQ,7PQL?TQ\\CWQ\\CWQL?V" + "Q\\CUR<KWR,GTR,GTQ\\CSR<KURLOVR\\SWRLOVRLOVRLOXR\\SYS<[[S<[[S<[[S<[[" + "S,WZR\\SYR\\SWR\\SYR\\SYRLOXR<KWR,GXR<KYRLOZR<KYRLOZRLOZRLOZR<KYO[O2" + "O+C/MK+)KZW#K:O\"M++)O+K1P;_6NKC/K*K!MK3+S\\WDIJ2[>':-<6Z(?GN5?7J4" + "?'F3BH>AE)&KA8*<BXBBDH^IG)FSFYNVF)BSEY>RG)NYH)^]H)^]HZ*`K*O)J*7#" + "I:'\"HZ+#J:C(K*S%JZO\"JJK!J:G$JJB_M++)M;+,L*W'H9ZZHZ\"\\I*&_IZ3\"HI^]" + "H9Z\\I*&_J:C(L*_0L;#1JZK+I*+&I*3'HZ/&KJ[1M;78K:W0JZO.L;'4L+#3M[?<" + "O+SAP\\/FQL;GQ<7FP<'DO+[CN[WBP\\+JQ\\;ORLGTR<?UQ\\7SQL3RQ\\;QR,?RR,?P" + "R<CQRLGRR<CQR,?RR,?RRLGTR\\KURLGTR\\KUS,OVR\\KUR\\KUS,OVS,OVRLGTR\\KU" + "SLWXS\\[YS<OYR\\GWR\\GYS,KZS<O[S,KZS<O[S<O[S,KZR\\GYM;'(MK+)M;'(KZO#" + "I:.ZHJ\"WKJO%P;[8O+G3L[#*O;O2SLSCG9NR<&Z%<6^&AX6<@H\"7?7N2AX6<D8^F" + "A8.:BHB?C(JAD(ZEDY\"JEI.MEI.MF)6QGINWH)VYH)VYI:*`FYBTF)2UFY>XI*&_" + "J:>^IZ6[I**XHZ\"ZJ*2[LZ_&L:W%JJ:^G9FSH9VWH9RYIJ&^H9RYH)NXH)VYI:*`" + "K*G'KJK+JZ?(I*/$GIV^GIV^JZK+L[+3K*O,KJW.M+/4L*_0KJS0KJW.MK76P<#@" + "P<+AN;G:L[/4M+37NKK?OKWEO[[GO+OFN[KEO[[IQ,/LQL7NQ<3LRLGQS\\[VSLWU" + "R<CQQ<3MQ,/LQL7NP\\+KQL7NR<CQRLGRR\\KSS,OTR\\KSR,?PR<CQS<SUS\\[YS<SW" + "R\\GWS,KZS<O[S<O[SLS\\SLS\\SLS\\S<O[S,KZIJ&XM[+)O[O2N+3,IZ.[E)&KGYRV" + "OKO5O;K4M[3.O;K4R<?>I:.Z>7>.=G2+B8>>?WV4>':-@X&8CHRCA(\"8B86=B(2<" + "BH:>C8NBE9.JE)&KE)&KFYBRG)FSF)6QG)FUFI>SEI.QEI*SH)VYJJ:]J::ZH9ZR" + "FY>NI:&XL:W$K:F`I*\"XFI:NGIJTGYNUI:&[IZ.]I*\"ZHIVZHIVZHZ\"^I:*`IJ+#" + "IJ+#GYZ^H)^_JJG)K*O+I*/#J*?'KJW-I:3$HIZ`H)R]IJ+#KZ[,L[+0K*W,J:K)" + "K*S-LK+5M+39L;#8JJG1J:C1L;#9NKGAO;SDN[O@PL+GR\\OPSLWURLGQPL'JO+OD" + "N;CAN+?@OKWFQ,/LQL7NRLGRS,OTR\\KSR,?PQ\\;OR\\KSS,OTRLGTRLCVS,KZS,KZ" + "R\\GYS<O[SLS\\SLS\\S<O[S,KZEY*ILZ[%P+O2N;7-JZ?!E9*LFI>QN;G4P;[8O+G3" + "O+G3P\\#:L['(A(*9=G2+@'Z5=G2+='*)A(*9DI\"GB86=C8FAC(B@CHJBC(JADI\"G" + "CXVDD8^FFI>QEY2NDH^IFI>QH)VYG9JXG9JXHYZ[JJ:]J::XH9ZPFI6LHI^SKZO\"" + "J:6\\H9VUF96MGIJTG9FSHY^YIZ.]J*2^J:3!IJ._HZ\"^GYRZG9FZG)BYHI^]IZ3\"" + "K*G'I*&_FYBVH)V[I*&_FYBVFI6VF92UF9:TG)FUG9VXH*&^I:;%JJO*L;'4L[/6" + "KJ[3I:3,HZ+*JJG1L+#5LK+7KJ[1L[/6O+S?Q<7JR,?OP\\+JN;CAL*_8L*_7M;3<" + "N;C@N[KBO[[FQ<3LR,?OQL7MR,?ORLGQR<CQQL7PQL3RRLCXR\\GYR<?WR\\GYS,KZ" + "S,KZS,KZR\\GYD8FAKZK!N+/*L:W%K:G#G)FSFYBTM;70P+W7PK_9P;[8P+W7M++)" + "@'Z5;FR#>7>-<&Z$<W&'B8>=FY>NCXNBD(RCCXJAD8RCBHB>C(JAB8>>CHRCEY6L" + "DH^ICXRFG)FSH9ZZHI^]I*&_IZ.]IZ2XIJ&THIVPG9BMH9VTKJK!J*2[GYNSF96M" + "GIJTG)BRHIZXGIJTIJ*\\KZK'L*W)JJ?%H)V[F)2UD9\"PGINYIZ3\"JJ?%G9JXDY\"N" + "FYBVGYRZF)6SF92UFY:UEI.QCXRHC8VHF9BVHZ3!J:K)L;'2M+37L;'6J:G.IZ;." + "K:W2L+#5KJ[1J*C)J:G,KZ_2N[O@Q\\?LQ\\;NO+OCL;#9K:S4KZ[6KZ[6KJW5LK'9" + "O+OCP\\+JQ<3LR,?OR<CPQ\\;OP\\+MP\\'OR,;VR<?WQ\\7VR<?WRLCXRLCXR\\GYRLCX" + "E(^BH9ROIZ2XK:F`J*2^G9BUHIV\\JZ;%L:[*M[30P\\#:N[C2KJS#?7N2;VV#>WF/" + "=7.)<W&'@'Z4CHN?AX28B8::A8*6B(69A(.4B(>8CXVAF9>MCHRBE9.JEY6LF)6O" + "HI^YI:*\\IZ6\\IJ*ZI:&XI*\"WHZ\"TH9ZRJ*:\\K:O!JJB_GYVTF9>NG)FSH)VWH9ZX" + "FY:SG)FUH*&\\IZ?\"J*.`H9NXFI6TEI.QGYFRI)RUH9FRH9>QF8^IH9FRHYJVGYFT" + "HYZ[I)Z[F(^KAX&<DY\"JF9:PH)NXJJ&_JZK(MK75M+/4K:O/L:_3M;/7L*_0KJW-" + "JZK(J:C&L*_/M;35N+;:R,/JRL7LN+/<K*K2L:_7J*;.HZ')KJS4MK3<NKC@P\\'I" + "QL3JQ\\7IQL3HQ,+JQ\\3RS,CZR\\?YQ\\/TRL;XRL;XR\\?XS,CYS,CYG)>JFY:KFY:M" + "I*\"XIZ.]I)^\\I*&_HI^]G)FUI*&]O+G3PK_9NKC/B(:=>':,@'Z4=7.);&I^<6^#" + ">7:*<W\"$?'F+?7J,@G^1A(&3B(69D(VAFI:MDX^FFI:NG9FQGIJRGYNUI:&YJJ:^" + "JZ>_J:6\\IZ.ZI:&XHZ&WJ*:]J*:]I**YGYVTGIRSH)VWG9VVFIJSHIVZG)FUFYRW" + "H:&\\I)^\\I)Z[H)NXF9:RH:\"^HZ\"^G9JXFYBVE9*PHZ\"^J*7#IZ;&HZ\"\\H)RVDHRG" + "@W^7CHZED)*JD9&JE9*NFIFWJZK*KJW.J:?+K*K.L:_3KZ[/KJW.J:C&I*/!IJ7%" + "IZ;'K*K.OKS@R<?MO[WCL:_5L*[4IZ7+HJ#&I:/)IJ3*K*K0N+;<N[GAP;_CQ\\7I" + "R<?OR,7SQ\\/UR<7WR\\?XR\\?XR\\?XS,CYS,CYR\\?XI9VSFI*HDHVDG)BPI:&[J*7!" + "JJ?%G)NYBH>CD(VIL[#*Q<+<P+[5CHRC?GR2@'Z4<G\"$;6M_='*&=W2(9F-U;FM]" + "=G.%?WR.@G^3AX28D(VAFI:MF)2KGIJRH9VUHIZVH)JSIJ\"YJZ>_K:G!K*K!K*K!" + "J:F`IZ>^GY^VEI:MC(RCBHJCD)\"IFYNTHZ.\\IZ>`H9R[G9JVG9VXGINWF9.NG92P" + "HIRWGYRVH9RYIJ&^IJ&^IJ&^GIFVI:\"]I*\"ZH)RVGY^XF9:PAX.;=W6,@X6;@HF=" + "@XB?AXFAC(NKE92TFIFZGYZ_I:/'IJ3(I*/$IJ7&IJ7#H:\"^GYZ^G9R]GYZ_L['5" + "Q,+HQ,+HMK3:KZW3J*;,HZ''G)J`EY6[G9O!J:?-LK#8N;?=P\\'ERLCPRL?UQL+T" + "Q\\/URL;WR\\?XR\\?XR\\?XR\\?XR\\?XIY^UF9&IDHVDG9>PHY^YJZC$KJW+H:\"^AH.?" + "AX2@K*G#Q,';P+[5D(ZE@H\"6A(*8<G\"$;&I^=7.'>7:(9F-U;FM]>7:(@G^/A'^4" + "B829D(N@EY*IF).JF92KF)*KF)*KEY&JG):OGYNSGYNSG9JTG)RUG9^WGJ\"XE9>O" + "C8^GAXFAB8NCCX^HE96NF9FRG9VVI:\"_H9ZZH:&\\GIFVEHVIF8^KGYFRG9FQJ)JR" + "K*\"WJ:\"VHYNQE8VCG92JHI:KI9>MDY\"JDHREB8&:?7B/B(F>A(:<@8.9@X.<CHJK" + "A8&BA82DEI6VH:#!G9R]FIFZGIV^GYZ\\GIV[GYZ^FIFYF)>XI:/'MK;9N[O>NKC<" + "KZW1J*;*I*+&FYF]EI2XF9>[GYW!JJC.KZW1M[79P;_GR,7SR<7WQL3UQ</SR<;T" + "R<;TRL?URL;WRL;WHIJRF)\"HE(ZGGYNUIJ*\\KZS(MK//IJ7#BX:CB82AJZ?!Q,#:" + "PK[6DX^GB(2;C(B?=G2(8V%U9V5Y<W\"$:F=Y>'6'?WR.@G^1AH&6B829CHF@D(NB" + "DHVDCHF@B82;AH&8DHJBFI6LH)RTF9:PC(REAH>BBXRID)2PD9*MB(FD@X2?B8JE" + "DY.NF)BSF9FTFIJUGYRZF9:REI.OEY&NF8^KG9\"MF9\"LCHJDF(^KH)JUGYRXEY>R" + "A86@C(FCE8^HG)2LF)*MFI\"JDH.?A7F2C86=AX.;BX>?E8^JDXZMAX*AA8*@D8ZL" + "F96VEI6UE).SE).TE9*PFYBVH)R]G)BYE92UFYJ[JJG*M++6N[K;L*_0IZ;'H:#!" + "GIV^GYZ_H:#!H)^`JJ7,K:G+L*_0N+;<P;[JQL3TQ\\7UQ,+PR,;TR,;TR,;TR,;T" + "R,;VF9.LEI\"IE9&IH9VWJZ?!M*_,M[+/J*/\"DXZKDHVJKZO%PK[8P+S4D(RD@W^6" + "B86<<6^%75MQ:&9\\>WB,<&V!=W2(?'F-?7J,@GZ5A8&8B86<B86<D8VDC(B?B(2;" + "AH*9D8RCHIVTK:G!HI^YBXNF?G^<@X2CBXZNC8ZK@H.@>WR9A(2?DY.NG9JVG9JV" + "FYBTCXRHCXRHD8ZJF9.PHI2TH9*RF8ZMDXZKC)&XE9W#DZ''BIS!=8>L>(:J?8:H" + "@(:GG).OG9\"MF(6BC7J7DH6@BX&;D8>CGY6QEI\"MD8NHCHBEBH6BAX*?B82CB(6C" + "@7V>CH>GEY*QGIFZG9BYF96VG9F[IZ;'LK'2N;76L:W.IZ/$H9V^HY^`IJ+#J*3%" + "JJ;'LJ[0L:W.LZ_0MK38O+GCO[WKPL#NQ,/NR<CSR,?RR,;TQ\\7SQ\\7SDHZFFI:N" + "GIJTJ*2^KZK'L:S)L:O(II^_G9BUGIFVM+#*O[O5O+C0BX>?>W>.@W^6:&9]65=N" + ";VV#AH*9<FZ%;VN\"<W\"$>G>+@'R3@W^6AH*9AH*9E)\"GD8VDD8VDD8VDC8J>FY>N" + "I**YGYRVC8RJ@8*A@8&BAH:IB(FFAXBEBXJHDI&OG)FWFYBTDXZKBX:CCHNGF)6Q" + "GIFVIYZ^KY_\"HY.XF(VPG9:XF*#(E:'(B)K!>Y&Y;(*H=8>L>XBK?XBJAH\"=CX6A" + "EH6DF8:CHY2PEXJGD82AEHBHFY\"ODHBDCH:?C(2=A'Z7@WV8@'N8>723BH&ADXJJ" + "F9*TG9:XGIFZH9R]IZ/$L*S-KJK+K*C)IJ+#I*#!IZ/$HY^`HY^`K*C)M+#1J:;$" + "IZ3\"L*_0N;??N;CCN[KCP,+IR,?RR,?RQ\\;QQ\\7SQL3RC(JAGYVTJ*6_KZO%L*O(" + "K*;#JJ3!IIV]I)^\\IZ*_N+3.O;G3N[?/BH:>>G:-A8&89F1[44]F9&)Y?GJ2;&A_" + ":V=^<FZ%>G:-@H\"6@X&7A(*8@7^5DI\"FCXVCD(ZDDI\"FC8J>D8^EEI2KEI.MD9\"N" + "C8RMAX>J@X.FBXRKD9\"PEY:TFYBVFYBVFY:SFY:SFY6REY2PGINWGIFXI9R\\KI[#" + "G(JQAGJAB8&GEI*SD).SAH^O@H^P?(FHB9*PBX^IBXBB@X\"<B'^=BWR:CWZ=HI.Q" + "G(^LFXVMH9.SH92QC'^:AWV7E8NDE(RDBH2=AX&>AH\"=A7J;C8*CE(JMFY&TH)F[" + "H)N\\HIV^J*/$HIZ_IJ+#IJ+#JJ;'JZ?(G9FZFI:WJJ;'JJ7$DY\"LCXRHI:3$N+;<" + "M[;?MKC@OL#EQ\\;OQL7PQL7PQL3RQL3RCXNCH9VUKZO#LZ_)KZO%IJ&^GYJWGYJY" + "I:&[L*S&M[/-P;W7M;')D(RD?WN3@W^78EYU3$A?85UT>W>.:F9]:&1[;6E`@'R3" + "@GZ5A(\"7@'R3BX>>GIJQB(2;@'R3?GJ1B(2;E)\"GGYNRCHRC@X.<E)2OEI>VBHJK" + "BXRIG9Z[G9Z[DY*PB8BFG)N[H:\"`GIV^F)2UDX^QE8^RDXVPI)V_F9*RC(:CCXFF" + "B(FHAH>DA(BBA8FCAHJDAXNEBXRICY\"MFY*RH):YBX2FB8*DB8*BB8.@FY6NGIFP" + "H)BPG9BOF).HGYJOBXB<D8VDD(NBF9.LDY\"DAX.:AH*:C8BECXRJE)\"QF96VF)2U" + "EY.TGIJ[H9V^GYN\\JJ;'FY>XFI:WJJ;'K*G'DH^MC8FJH)^`KZW1KZ[6MK7=P,+J" + "Q<3MQ\\;OQL7PQ<3OQ\\7SFI:NHIZVK:G!M+#*L*S&HYZ[G9BUHIV\\K:G#MK+,O+C2" + "P;W7MK+*D(RD@7V5@W^78EYU3DIA8U]V>G:-:V=^;&A_<V^&A8&8B86<@W^6A(\"7" + "CHJADHZE>W>.>W>.?'B/@W^6BH:=EI*ICHRBBHJAF)BQEI6SB(FFB8FDF9FTF9BV" + "C(VJCH^ND9*QDI*SEI:WDI*UCHRPG9N_GIJ^F96WHYZ]JJ7\"I*\"ZI:.ZG9ZSE9:I" + "D)&DD)&DD)&FB(B?@'V7?7:8>W27?WF>;VN/:&2&>7:4?'B2<V^'>G:-BH>;E9*D" + "C8J<@'V/>WB*@7Z2E(^DC8F@AH*9@W^9AH&>AX2BBH:GC(BIBXBFE)\"QGIJ[G)BY" + "E9&RG9FZH9V^I:'\"K*C)JZC&H)V[F96VG9R]J*;*KZ_4M;3<NKSDP+_HP\\+KPL'J" + "PL'LQ<3OI:&YI*\"XK*B`M[/-LJ[(HIVZGYJWJJ7$M+#*N;7/OKK4OKK4N+3,D8VE" + "A(\"8A(\"896%X5E)I;&A_@'R3=7&(=7&(>'2+A8&8AH*9@GZ5B(2;C8F@AX.:?7F0" + "B(2;BX>>?'B0?GJ1C8F@DI\"DE)*HFYRQDY.JAH:?A(2=D)\"KD9\"NAXBGEI:WBXZP" + "BHVODI6WHJ3+G)[%EYF^DY.VCY\"ODI*MAH2;?GR2DHZ;IZ&NKJBSH)JCDXV8D8J:" + "C(68@'N2@7N@<V^3A8.ICHVUD9&VG)R]B8BF:FJ%4%%F5UAM:FA\\:VIY@G^/@X\"0" + "BXB:F)6GD(RDCHJBB(.@A8\"?B(6CBH>EB(6CAH.AD8ZLF9:TEI.QD(VKD(VKGINY" + "I*&_IJ/!JJ?%IJ/!FI:WE).TH)[\"JJK/KZ[6M+;=N[KBOKWEO[[GP+_HQ,/NK*B`" + "IZ.[K:G!M+#*K:G#HIVZI:\"]L*O*N+3.N;7/O+C2O;G3N[?/EI*JB86=B(2<:F9]" + "7UMR=W.*B(2;?WN2?'B/>76,@'R3C(B?D(RCD(RCB86<@GZ5@'R3B(2;BH:=>G:." + ">W>.C8J>F):JF9BIF9>KCY\"CA8:9?GN5@X\":AH6CC(NKGI[!GJ'#GJ#%GZ/'GZ+*" + "E9B`AHJP@XBI@(2@>WV3969Y9V9U<F=N@G=\\DX>*DX2&@G-Y=VEUAGF+GI\"FHY_#" + "IJ3*M[;>S,[VR,OSO;_DM+?7GI^\\='6045-K4E-H8%YRA8*4C(F;C(><BH>;DX^I" + "EY*OCXJIBH6DD(RME)&OC8JHB(6ABH>ED(VKE)&OF)6SC8JHEI.QF9:TFYBVJJ?%" + "HZ\"^DH^MC8RLG9R]I:7(J:G.L;/8M;7:NKK?O+OCOKWEP\\+KM+#(L*S$L*S$JZ?!" + "GYNUGIFVJJ7\"LJW,N;7/MK+,M;'+O;G3O[O3G9FQC(B@BX>?<&R#9&!W>76,A(\"7" + "@'R3?'B/>G:-@'R3C(B?D8VDBX>>AH*9AX.:A(\"7?GJ1A8&8@GZ6@W^6E)&EG)FK" + "E).DD(^@C(N<BXJ;BH:>?WR6>WB6@X*BBHJMGI[!H*/%EYJ\\>GRD?8&GC9*SCY2R" + "<WB-;W\"!;&QW;6QS;EY@5T1&5D)!;E93;5567$=/=%]OH8ZCLZS,H9V_BXNPDI2\\" + "I:C0KK+8N[[@RLOJG9Z]6UIX44YH8UYU<FV\"@7R3B(*;C8>BE(^NFI6TEI&RDXZO" + "G)BYH)V[E)&MBH>CA8*@D8ZLG9JXH9Z\\CXRJE)&OEY2REI.QH9ZZH9Z\\EI.QD9\"P" + "GIV^HZ/$IJ;)KK'3KZ_2M+39M[?<O+OCPL'IO;G1N;7-LZ_'HIZXDX^IG)>TK:C%" + "KJG(LZ_)K*C\"IZ.]N[?1OKK2GYNSB(2<AX.;=W.*9V-Z=7&(>76,>G:->76,?'B/" + "AX.:@W^6@W^6?WN2AX.:DHZEC8F@?GJ1C8F@C8FACXNBGINOG)FKCHN=B8:8B8:8" + "C8J<>W>.=G*,?'F5D8VND9\"QGYZ_D(^P<W*29&*&D)\"QN;K7O+[4JJN\\G)JD@GV\"" + "=6]P?VMK:5%.94I\">EQ3@F-?>%M>=UUIA&U^:%YW4$IE3$AJ2DIO6UV$9&2)<W&5" + "NK;7RL;H@'N:;61`;6-\\6E!I:F!Z=&N'?':3@WV@B8.FB8.FBH2GDHZOEI.QC(FE" + "?GN5BXBFG)FWIZ3\"GYRZD(VKF)6SG)FWE)&ODY\"LGINWGINYEI6SFYJZH*#!HZ/$" + "I*?'J:G,KJ[1LK+5M[?<O[_DOKK2N[?/M+#(HIZXE9&KHYZ[LJW*K*?&K*C\"HIZX" + "F96ONK;0O+C0H9VU@W^7A(\"8=G*)9&!W<&R#<FZ%=G*)<FZ%=7&(@7V4AX.:A(\"7" + "@GZ5B(2;C8F@E)\"GB(2;D(RCDHZFEI*II:*VGYRNC8J<AX26AH.5A8*6@GZ5>'2," + ">721AH&BDXVPGYJ[F).R@WZ;B(.@M;+,S,K@RLG8W-KDQ+_\"AGY\\95I5=F):?65:" + "A6A7C&M9D&]?B&EC;U576$%*1#5(+R-!+\"9!,BY05%)X<6V1A'ZARL/ER<#>DXFE" + "A7F0=&9\\6TQB;5]W<VF#=VZ,AH\"EAX&FB(*GB8.FC8FKEI.QEI.OC8JDD8ZJFI>S" + "H)VYE)&MD8ZJF9:RH)VYF)6QD8ZJEI.OF9:TEY:TF9BXFYR[G9Z]G)^_I*3%J:G*" + "K:W0M+37O;WBN[?/N+3,M+#(IZ.]GIJTK:C%M[+/JZ;%J:6_G9FSDHZHO+C2O[O3" + "I:&Y@W^7A8&9;VN\"75EP;&A_<&R#='\"':F9]9V-Z<6V$AX.:AX.:B(2;@W^6@'R3" + "FY>NF96LE9&HD(RDF)2KJ::ZHZ\"TD8Z@BH>;@G^3>WB,?7F0>76-?WJ7B82EG9:X" + "E8ZN@WV:;FB#<&A`=&^&@'V/CXV9OKR`R<&`H9>/>FQD@&I<AFQ<CG!9E7%8EG%=" + "B6E;;U-05S]!6$93=F=Z?W6.>723CHJNIZ'&LZG,PK?8GY6OB'J2B7J.;EUP6DE<" + ";E]U<V=`<FB$@WVB?WF>?GB=?7><?GJ<C8JHF)6QEI.MCHNGBXBDCHNGBH>CE)&M" + "F)6QHI^[H9ZZG)FUCHNGC8JFEY:TG)NYF9JYF9JYFIZ\\HZ/$J*C)K*S-L[/6O+S?" + "N;7-N+3,L*S$G9FSI*\"ZJJ:`L:W'JZ;#JJ7\"GIFVEI*LN+3.PK[6IJ*ZB86<C8F@" + ">76-6E9M96%X;VN\"<6V$:&-Z9V)Y<&N\"?7F0?WN2>76,>W>.?GJ1DHZEDHZECHJA" + "@'Z5>WF-FYJKH:\"QIJ2ZA(*9;6N\"<W&'>W>1@GV:CXFFDXVJEHVIEHRF=VM`0SA*" + ",2E!+21!0CI(:6!FAWU\\GI&)H9&#DH!QCW)AC6Q:BV92C61/CV93C6A7A6-8>UU4" + "D'AWMZ.CUL7,U\\O:TL;=T<3?P[7-K:\"S@G!]=V5P@FQW6T9.33E#8$Y=8U1H:EYU" + "A':6CH*G=&R4=G&:=W69AX.DEI&PC8:HAX2@@G^;@7Z:>G>1A(&;BXBBFYBRH)VW" + "F)6OB(6?B(6?BXNFGYZ\\F)FVE)6TG*\"^HZ/$J*C)J*C)J*C+O[_BMK+*M;')IJ*\\" + "DX^IH9VWHY^YI)^\\IJ&^L*O(I)^\\FI:PNK;0O[O3J:6]D8VDEI*I@'R37EIQ:65\\" + ";&A_8U]V8%QS:V=^<FZ%=G*)=G*)<6V$=7&(=W.*BH:=CXNBC8F@<&Z%75MO@H&2" + "EI2HF9>M>G>1:VB\";6N\"<&R&C8BEF9.PF(^MBX&;F8NC>VZ!44-32#M$6$Q1;F!>" + "C'YTA75EC'IEA6]8A&Q3EWAEE7)?DVU7E&M6D6A5BV14AF19AF5=E7AUHH:$L9N<" + "NJ:PL9ZPHY\"DG(>7G(B3@FMR?&-H@&9J6T%#2C%!33A!33M(5D56=6I[?W:,<VV&" + "<6Z(>7F0>'F.@7^5@'R3?GN5?'F3>G>1='&+=W2.?WR6CXRFF9:PFI>QC(FC@X\":" + "@8&<EI>REYBUEYBUFY^]GI^^H*#!H:'\"HJ+#N+C;M+#(LJ[(G9FSC8FCG9FSFI6R" + "EY*OH9RYLJW*IZ*_FY>QO+C2N;7-J*2\\E9&HGIJQAX.:8%QS:65\\:65\\7%AO7UMR" + ";VN\"<6V$='\"'=W.*=W.*>'2+=W.*BH:=D8VDBH:=:65\\2TE?;VV!B(:<A(*8;6J$" + ";&F%;FN'>'.0DHRIG).QDXFEC7^9F8J>DX&0?VUZA7%SD7QZE(!TGHEUD'A?DWA<" + "DW-9GWUCEG9@DW!9DVU5EFQ5DFA3BV13D&I>EW5JE7!IC6QDD71MFW]_D79\\?&%I" + ">F!DB6UM@V1@?%U7>5M2:$I!94A#6D!!3CA!239!44=185EG9V-S7UUQ:6I_9&1[" + ":VE_<6^%=G.->7:0>'6/=G.-<6Z(>'6/AX2>EI.MFYBREY2NAX2>?7V8C8VHDY2Q" + "G)VZG*\"\\H:+!HJ/\"H:'\"HJ+#L[/6M[/-KZO%G9FSDX^IFI6REI&NE(^LG9BUJJ7\"" + "H9RYF96OOKK4M[/+HY^WD8VDGIJQAX.:7UMR96%X:65\\9F)Y9F)Z:VE`;6N\"?'B/" + "A(\"7AH*9?7F0?GJ1E9\"GE9\"G?7B/75EP4DYF=G**AH*9>W>.:VE`<6Z,=G*4<&F)" + "@'J7G)&PEHFDE(6;?VQ^B'1^CWI`FX.$E7YYD7ELB7!;CW-<D7%9H'MGJH1PF7I=" + "EW59E7!4E&Q1D6=.CV=/D6Q8EW1AF75HE7%BDW-CD7-HAFEB>%M6=EA/>UY1?5Q," + ">EE'=E5#=E=$?F-3;%1)74E!54)!-RQ!2$!.759G3TMB34IF4DYO6U=X:&2%<6^&" + ">':->G>1?7J4<F^)>'6/@G^9DY\"JG)BRH9VWC(FC>G>1>WN6A86@E)6PFINXFINX" + "FYR[FINZG)R]I:7&M[/-J:6_GYNUFY:SE9\"ME(^LE9\"ME9\"MG9BUF92QF96OO[O5" + "N[?/H9VUCHJAG9FP@7Z285YR9&!W;&A_<W&':6=^9&)Y<6^&AX.:CHJAB(2;>76," + "A8\"7G9BOCHF@8EIR241;9%YWB(2>BX>>?WR0<G\"$='&->769<FN-@7J:H)6TEXJE" + "@W2(7$I5;UQ?CGIZDX!QD'UKD7]HB75;D'A=B7!3DW5<F'ABF'M<F'E;EW17DVY0" + "D&M-D&M-C6I-AV5(@F%1A692A6=0?6%,=UQ*=EM+=EI&=5E\"=5=!=EA!<E9!=%I\"" + ">F%,:%-!95-$9U5(0S9!2C]$85A>6U5B03M41T)A5$]N:F6\">GB/?WV4@'Z5A(*9" + ">G>1?'F3@G^9D8ZHI9^ZI)ZYB86?<&R&:VB\">'61A86@CX^JCHVKD9\"NDY*PF)>W" + "F9FZKZO%H9VWFI6RF92QC8BEDHVJDHVJB82CD8RIEY*OG9FSN[?1P;W5I*\"XDHZE" + "GYNR?GF.9&%U:65\\<&R#=G2*96-Z75UT=76,C(B@C8FA@GZ6=W&*C8>@G)2M?W>0" + "345>1T)9=&Z)D8NHB86<?WR,=72#<W\"*=W.7?GB=C(6HE8RLC8.=<61V95A@<V-B" + "B7ITC'B#AW-^@&MY?FAV=F!N=UQL=5AI>%EJ=5)G?%9L@%EMA%MMBF%RD&ATC&1N" + "@5QD?V)1@&1/?V-,>5]'=EQ&=UQ(>5])>F!(<E9!<E9!<EA\"<EE#=V%+:E=%:UI)" + ":EA)8%)*7$Y\";&!3<FEC4TE32T)45D]@>')_>W>.>'2+=G**>G:.=G*,=G*,>W>1" + "A8\"=G92PCX:B=&N'75=R7%9Q:&1^:&1^=7&+D(NHD8ZLE)&OG)FWEY:VJ:6_HIVZ" + "EY*ODXZKC8BEEI&NCXJI@GV<C(>DGIFVI*\"ZL:W'P;W5IZ.[EY.JGYNR@WZ39V1X" + ";FM_<6^%<6^&8&!W75UV;V^(@W^7AH*:A8&9AH\"9F9.LC86>;&1]44=A7%1L?722" + "C(6EB(.:@H\",>WN&=W6+=W.5=W\":@7N@@7J<@'B1<FIZ@G=\\>W)L;V5::5A/5TA\"" + "2SM!1S9!0C!!2#1!2S9!1S)!3S!!535!7#Q&941+<4]/>UI4?U]3?5U-?V-6@&53" + "@&1->U](=5E$<%1!;U-!;E)!<51%;$]!<59&;U5%=5Y-<EQ-<5M-:%1(;5E-;%M(" + "<6),<F1:8U1:4D956U!??7-[@WZ5>72+=W*)?7>0AH\"9A7^:B(*=C(:CEXJGAWJ7" + "?7./>&Z*>7\",?G619F![<6N&CHBEC8>DC8BGF92SE)\"QJJ7\"JZ;#F92QDHVJE9\"M" + "H)NZDHVLA8\"?C(>DI:\"]J*2^IZ.]O;G1IZ.[F96LG9FPBH6::&5Y;VQ`<6^%;6N\"" + "86%X8&!Y8V5]=7&)?GJ2C(B@F9.LI)RU?76.8%9P7%)L9EYV>7\".A7Z>CXJACHR6" + "B(>.?WV1=W.4>W2?>W6<>G.6;FB#;VAX@WU`@GMR95]033E!.BA!/BI$,Q]#-B%)" + "+QM!/RI,-R)!2\"I#1RE\"3\"Q\"43!\"5S9!7CY!9D=!;$]\";5%%=UI+?F)-@6).@&%." + "?U]/?%Q,=UA%;DU#:$I!<55)9TM!9DQ!:U!&;U=,;%1+:U-0=V%5<5Y/8D]*9%)?" + "54-<6TQB=&AW>W.);65];V=_>'\")C(2=BH&=C82@C(.AA'63>VR*B7R9E(>DE(JF" + "CH2@9EUY<6B$C82BB(*?B(*?EI&PE9\"OJJ7\"LJW*HYZ[AX*?E9\"MFI6RF92QE(^L" + "EY.MHY^YIZ.]KZO%LZ_'JJ:^E9&IH)RSC(J>;FE^;&=^:6=^7V1[86=^8FB!;7&+" + ">'B1>GJ1B8>>GIJRG)BP=6^(5E!I54]H:&1T;F9^?'2-@7V4C8^=AHR9@H2<=G66" + ">W:=?'B<?'>8=G\")54Y>;V9J>&]K9UU45$!!7$=#8DI'5D%!7$M$5$-!43Y!6T1!" + "8D9$9TE*9D9(83Y!8#Y!94-\"8T1!7T!!845!94E!<U5*>%I/A61:@5Y7@%U8>E=2" + "<E--<U1.<51/;$]*:DY+;E51;E528DI'84M,:U-2;5548TY23CY'3$!+4D91;%QF" + ";6)S85EI:F-T?G>*C86;B(\"6D(>=E8R@@76,:EUP?&M\\E(68E(N?A'^68%MR<FI`" + "CHF>F).JD8NFCXJGH)NZM[+/M[+/HYZ[BH6BC(>DD(NHE(^LFI6RJ:6_H9VWJ*2^" + "N[?1N+3,K:G!FI:NG)BPCXVA:V9]9V)Y9&)Y7F-Z6V%Z9&J#;'\"*9VF!<W6-B8FB" + "H)ZUGYNS?7F17EAQ5U%J9F%T<&A`>7&*=W.*=WF'<WF(<W6-;FV.='*8>G::>'25" + "<FZ&4DM;7E5;;&%>=FEAAG%MAF]JB7!JA6YEBG9L?VU@?&A<A&QA@VABAVIEAF=E" + "@5]>?5M:?5M:>%E5<5).8$1!9DA!:TU$;U%&<$]'<D]*<U!-=5)/>5=4>UE6?5Y:" + "?F%>?F)??6%?<5A58DA(5#Y!84E*=5M;=%YA4T)+1SE%33]+9E9@8UAG7E-B9U]O" + ">'&\"@GN,=VY`B7Z0GY2E@G2*74YA74M::EQL?72&>W:+7%=J:6)SCXJ?DXZEB8.<" + "A8\"=EI&PO[K7NK72J:3!GIFVG)BRHY^YJJ:`M[/-MK+,IJ*\\IZ.]O;G1O;G1JZ>_" + "DX^GG9FQE9.I:&-Z6E1M:&9]9&E`96N$9FR%8F:\"8F9`<7:-AXFAF9NSEI:O?WV4" + "9F)Z7UMS9&%S=&R\">W.+>'.(:VQ]9FQ]8F=^86&\";&J0=G28>'>7>76/9E]P<69M" + "?6]MC'UWFH-^G8)\\GX-YF7UPEG]LCWIDD'IDDG=CEWMNEWEND7-JBFECAV5BB6=D" + "B&EEA69@?V!:@V5<?%Y5>EE19T9!9D-!8CY!:$1%=E)2=E13>UE8?%Q<>EQ;>5U=" + "=%A8:E!08DE-7D1&;%)2<UU@5T9-1SI#23E#7$M27U->9%AC;F1P?'%`?7*!8%5D" + "95EF>&QY951E54-07TM67T]9=&EX<6U]5E1B9&!MB827AX*7?GF0>W>1BX:CP;S9" + "O+?4L*O(L*S&JJ:`KZO%KZO%M;'+MK+,LZ_)IZ.[MK+*PK[6IZ.[B(2<I:&YFYFO" + ":61[4TUF;VR&96F#;'*+9VV(7V-_76-\\;W6.B(ZGH*2^E9>O>WN49F1[9V-Z>72)" + "?W>-?72(>72':FM^:&V!96F#:FN*<G*5>WN>?7R<>WB4<VQ_BGZ)DX.%C7EWDWIT" + "GX-YHX-SEGAAB&]2AW!0CW97C6]4D75@CG)>AVI;@F)6@6!8A&-=AV9@A69@AF=A" + "B6IDAF5=@F%;=%--<$Q,;4E*<$Q/<DY.<DY.=%)2<%!09T=)8T5&9TI-:DU0:5!4" + "8$1$8D9&;E598$Q43CY'1#1!5D5,:%MC=FER>6YV?W-^@'1_8%-<5$1-3S](1S5!" + "8DU5@6QR=&-J@GA`>79`7%ID9V1L@7J+?WB+?'>.?7>0BH6BMK'.N[;3MK+,MK+," + "K*C\"KJK\"JJ:^K*B`L:W%M;')KZO#N[?/P;W5I:&YB(2>J*2^H)ZU:&)[7%9Q;VR&" + "9&B\"9FR':W\".8V>%9VZ)>'^:D9BUHJC#@86?8F)[65=M;&E]?WJ-?'.%=VQ]>W*$" + "<F^!;G\"&9&E`9VB#=7:5=WB7?G^>?GN7=6V#DX>6II*:E7^\"DWAPG']RFWAEEG18" + "AFI&A&A\"C'!,BVU,BFQ1B&I1A692@F)2?V)5@%]5?EU5>UI2>5A2>5A0?%M3>EE1" + "?UQ7?%E6?%A8>E97>555>555?%I9=E96:$A(73]!6S]!7$!!6$!!845%:DY,=U]@" + ";UQA5D9/0S-!6DE.?&QUCX**BWZ&AWJ\"CX**@'%W=&-H74Q14CU%>V5IEH\"#?VQO" + "DH>,CXJ096)H9&)F?7:&?G>(A8\"3AX*9CXNEJ*.`M[+/NK;0M;'+KJK\"K:G!K:G!" + "M+#'KZO#JJ:^LZ_'Q<'9N[?/HY^YD(RFH)RVI**Y8EQW:6-^;FN':V^+9FR';7*0" + "7F)`5EMY;W:3BY*PE9RY:V^+555N7%AO>72)B8\"4?W2#=VEW>6Y]=W*%=76,<'**" + "<'*(965`9&6\">WR9A82B=W&*BGV0H8V8EG^&D79LE'1FC&A1E7)1D'!(A6A!AFE\"" + "B6A$AVA*@V-)?F!)>U]+>EU.>5Q/>5A.>%=->E=0=E-,>EA.>%9,@F!6?EM4?EM6" + ">%50?%E4>EE3?5M8>UQ8<U93:T],9TM)8$=$6D)!:E%-=EU9?VIH>6AM8U9>33U&" + "6TI1=FEQD(.+C8\"(A'=_BWZ&A79Z@W-U:59995!4C'9WEW]^>F9FE(B+EH^58EUB" + "6U99?WF&@GN+D8J=C8B=DHREHIVZLJW*N+3.LZ_)M+#(JZ>_J*2[KJK!L:W%HIZV" + "JZ>_P[_7NK;0I*\"ZCXNEF96OGYRV8%IU<VV(<F^+7F)^8&6#9FN)8&.#9FN*@XJH" + "E)J[C92R7&!^3DYG3$A?5U!C7E-E9EAF<V-L>&IV?'.%<G\"'8V-Z559K6EAO65ER" + "<7&,@'^=>G2/>FZ#@6]^>6-OC7)HF'AHCFI1FG93FGE/D7)'BVM%AF1!@V%$>UQ!" + "=5=!<U=\"=%=&=5A)>%A,>5E->59/>%9,>UE.?5M.@F!3@%Y1?EQ1>5=,<U)(<E%)" + "<E1+<E9,<%5-<UA2<UI4<%=1:E50;UA1=UY8?&=E=&-H;F%I64Q54T-,;%]HAWJ#" + "C8\")D(.,DX:.B7I`C7U_=F-E<EY@E8!^DWMX>65CE8:(EHV16U5885A<A'Z)B(*/" + "F)&BD(N@D8NDG9BUJJ7\"LJ[(M+#*Q,#8M;'(JZ>^K*B_M;'(IZ.[H9VUN;7-P;W7" + "IZ.]B86?FY>QDY\"J95]Z>'*/=7*..CY:35)P6E]^<W:6A(FHEINZBY&R<':72$QJ" + "5E9O7EEP7E5I9UIL:UMG;%MB7DY88UAJ:&1[<W&';6Z!65=K65=N9&1_='.1?WJ7" + "@W>0?FM_<5MIA6I@I(1TFW=<GWM7GGU1FWQ1D7%+@V%!?UU!>UE!=EA!=UM&>5Q+" + "=UI+=U=+=U=+=U5+?%I0?%I-@F%1?%M+?%M+=%-#<E%!:$M!:TY!;5%%;%!$:$U#" + ":U-(<5E0;UA/;%A0:5))=%U4=F->9E=;;&%I7U1<3#Q%5$92:EQH=VMVB7Z&DH6-" + "AG=]D8&#@&UO@6UMG(>#D7IU?&AFF8J,FY*68EE=;V9HB8*+C8>2GYBHDXZADXZE" + "G9BUI:\"]L*S&M+#*Q,#8P;W4J*2[I:&XL:W$GIJQF)2KO;G1P[_7J**]E(ZIF9.N" + "F96O;&B\";&B\":VB$24AF7U]`='27;FZ3=7><B8NPBHZR;G&3555V5U)Q5DYG1SU6" + "7$UA:%9A=6!F=6%K5$599EYVB8B7A(2+=&R\"6%1K65ET='.4A'ZABX&=B'6'=F%G" + "A6MKI8IVG7U5H7U,IX!6I'Q:EW!.B&5!@%U!?UU!@&!&?V%*>UQ(>UQ(?5Y*?%M(" + "?EU-?5Q,@6!.A&-1?E],=5A';5-#9TU!8D=!9DM#9$Q#:%!'7D=!94Y'95!,:%-1" + ":%)6:U56;%A6<5YA9E9B:EMN9%AG6U%;5$Q:2T-165%?>&YZC8&,C'R%E(.(AG-V" + "BG5YFH*#DWMX?VIHJ9N;D8B,;&-I:V)F@GN$AW^+CH:6CH>:E8VEE9\"MI:\"]JZ?!" + "K*C\"OKK2Q<'8KZO\"G9JNEY.JC8F@E)\"GQ\\/;P+S4J*2^DHZHHYZ[DHRG<6V'9%]\\" + "7%EU@G^=E).TI*+&GY_$C9\"REIF[>'N=2TYN45!N3$AB44A>9%AM<%MM?69O@&9J" + "BW)Y<%YM8E=I:V5R@7^#?'B%:VAX:6E`<&^/:62+=VR/?VV&=%UP@&9HGX1TF7M6" + "GWQ1I'Q7H7A;F7)4D6U,C&A/BFA.B6E3A&51?5Y+?5U-@6%1@&%.AF)1AF)1AV-2" + "@V)0?%U*=%=&:U%!8DM!:D]'9TQ$94U$84A\"7$5!7$=#8TU.9$Y1:U1=<%M?>F=I" + ">FEP=V9U=F=[?7\"\"@':\"<VM[8EIJ8%AF=FMZC8&,CGZ'DX*)B'5ZB71XGHB)E7UZ" + "D7U[IYB:DHF-:V)H;61J>'%Z>W-_@'B(AG^2CH:<EI&NJZ;#K*C\"JJ:^M[/+PK[5" + "M+'%FI>KD(RCAH*9EI*JP;W5P+S6K:G#DXZKF).PBX6B?GB5;&>$:&-`HZ\"^L:W/" + "R<7IU=#WR\\OLO+_A@X:H2$AI7EMY7UER;6%V@G6'DGJ'EWE`@&)C@&-H<UQG:5AG" + "8U=B=VQQ<&]T9&1O:&E\\<'&075B!:E^*=V:)<5UY@6EJFX%SE7=6FWA1HGI8I7E?" + "H'9=GG1;EW-<F'-?F'5BD&]=AF96A655B6E9B6E9B612B612AV)0@V!->UQ)<UA(" + ":5)#84M!:$U%94I$:E%+94U*95!.7TE,9E%78T]7;%5F<5UH?&MT?FYZC7Z1D(*8" + "G)&CGY>GEX^?>7&!8%AH:5YMA7F&BWZ'C7R%AG)ZBW9\\H8N,EW]^GHJ(I)67B8\"&" + "<&9N<6=O=F]X=6UY>G)`AG^0D(F<EI\"MK:?$JZ6`K:G!LZ_&PK[5OKO/I*&UAH*9" + "B(2;JZ>_O;G1P+S6JJ:`GINWFYBT@WR<?GB5>721FI6TNK76R,+ETLSQTLSSS,SQ" + "R,?OMK7=EI:[HIZ`I)NYE(B?<V1X;E9C>V!HA&5K@V9K;UIB:EIF=&9R@W9_=')\\" + "7EUK86)W=7248EV&8UB!:%=Z9U-O@VQGF'YND'-4DW%,G753J7UAJ'QBHW=>F7-=" + "FW=@G7IEE75?B6I6AF=3AVA5A693B6-/AF%-@UY*@%],?V!-=%I*:E1&9E)&:$])" + "9DU);%11:%)38TY474E38U%>9E5D<%UR?FR!C'N.DH.7I9>MIYNRHIFMGI>JG)6F" + "@'F*6E-D4$A88E=F:%QG;%QF<6!ICWR!G8F+DWY\\G(B(H)&5?7-[>&YX=VUW<&ER" + ";65Q<VM[@7J+BX27HYJVM:_*L:O$L*K#K*B_P+S3N[C,F9:JAH*:AX.;I*\"XN[?1" + "Q<+<KJO'G9JVE)&M=7\"/AX*AF92SPKW<PKW>T<ONV]/YU\\_WT,WYUM/_VMD&T,[\\" + "S<CRT,GLN*W,B7N5;UYO=%]MC7:!F(.+CGV&;F)M:U]L=FIW>72'8%MP6U=O;6B'" + "85I]5TQM5$5;5T54>6-5D'=BD'-4D&Y)EW%+JG]=JG]>HWA9G75:GWI>H7YAF'E<" + "C&]1BFQ1BFQ3AFA/BF51@V!+?UQ'@%],@&-2<UE+9U%%:%9+;EE4:%-/8$Q,6DE." + "33U'4$137%%B:V!R?W.,FHZGI9NUJZ&ZK*.YJJ.VFY.IDXNAF).HB8299%]R1C]0" + "0#A(13M'3#Y*7E%:DX*'G8F+C7=XG(F+F8V2?')\\?')^>G!\\;V=U:F)R=&M]?'6(" + "A'R2LJK\"P+C0N[/+L:S#I)^VNK;-LZ_&CHJAI)ZWE)\"HC8FAN[?1P+W7GYRX<G*-" + ":&>%>'25GIJ[N[C6Q\\3BPKW>RL3GTLKPT,CPS<?VT,S]RL?[Q<+VR,3UU<[YV<_S" + "V,WNM*N_F8R?@G&\">6EUA'F!<VQU8UAG:%MM=6N$:5]X8UMT:F%]:%YZ4T5;23=\"" + "43Y!<UQ+C')<E7A:EG1/EW%)IX!6J'Y9I'E7FW12FW=4G'I6EW94D')1DG56DW98" + "CG!5AV93@F%.>5I'>5Q+?&%1;55(7TM!8D]'95-064E(3T!$4D=/2T-1651G:69Z" + ">WF/D8ZHH9ZZHIV\\HY^YGIFNIJ*RG9BKEY*GGYVSE)*H;FQ`2$57/#A(1T%.2D!," + "6$Q7E(.*G8J-A'!PHY\"3E(>/B'Z*>W!_?'%`=FU_<6A\\@7B.@'B0BH*;MZ[$MJ[$" + "N+#&L:S#EY*IJJ:^JZ>_HIZVN;/,K:G!DX^IO+G3L:[*?GZ96UIX962\"8V2#<G&1" + "C8RLI*#!NK;7U,[QU<_TR\\/KQK_LR,+SQL+VP;[TQL3UO+GEOKC?R<+DQ,#7L:F_" + "B'V/855B4DE/:6)H;F1P<V1W<6-[;F!X;6%X=&9^@7*(64A72C=!84Q'@F=7CG%@" + "E7=>F'=5F'5,I']3H'E1GG91E&Q'E6])E')-D7!,CG!-D715D7-8B6M2@613@613" + "=EM)<UA(>%Y0<%I.8T]%8U!(6$U*2T%!24!&65->:&5U>7J/AHN@D)6JEYVTEIJV" + "DY>UDI.NDY*CG9NGHY^NI)^RHJ.XEYJN<W2)3$U@04!155%@44M654Y7CG^%EX2'" + "?FILH(V0E(>0D(64>W\"!?W*$=6R\"<&9_B'Z8@7B6DXJHP[K.M*N_MZ_%MJ[$B(.:" + "BX>?EI*LKJK$PKS5M[/+EI*LM+'+M[30A(2?=W:4A8:CA(2E96:%9VB'>GF9@GZ?" + "JJ3'N;/8NK3;Q+WHNK3AO;GKM[3HO[_PM[;AQ<#GR,/DRLC>QL'8MZ[\"CH201T%$" + "85A<9%EA6$=86TI=5$585TA;:5INC'N.7TI85#Y!?F=@E'ALD71ED&]<E7-6EW1-" + "H'M0F'%)EFY+FG)-FG1.FG92EG51DW54DW98CG!9@6).?F14A&I:>5]/<5='>6%4" + ">F18;EQ1:UI185E83$9'3DE/8%YL@(&4CI.HFZ.YFJ6ZDY^TD9NWG:3\"FIZXE9>E" + "CX^8GIRHIJ&THJ2ZH*6ZAHF=6EUQ1$566%5E5U-@75=BB7I`CGM^?6EKE8*%E8B1" + "CH.2?G.%@'.&<6>!;6-_BX\"?@WJ:G9.VN+++NK++N[/,LZO$HIJR=7\"'AH*9P;_5" + "S\\OCKJK\"D8^FN;;0P+W7H9ZXFYNVK*S'JZO&A(.A962$>7B6>'B1@'V7>7:4@W^A" + "GYF^N;+<OKGCO+;CO+?@O[G>P[W:N+++L::UM*RXPKB`N:VN?&AF:U9284M.84Y3" + ";%E>95%97$I584]<@&QW6T9.6T5&B7%NEX!OC71?CG);FGU?G'Y=F7A6E'91DW50" + "E'95FGQ;F7Q=E'=9DWA<E'IBBW)=?F52A&EAAVQD@6AB:5)->&5@<%Y;85).6TM*" + "5$E02T1+34=2;&IXCY\"CH:2XJ:O!I:J_G**[EYRSG9VTG)JPGYRPEI&DGIFLIJ&T" + "G)JNI::[FYRQ=7:+0#Y255%A65%?85=CBGJ#EX2)AW)VCWR!GI\"<B'V.;&-U<&5W" + "9UUV;6-\\CH6ABX*@EY\"PL:O$M['*O;7.KJ:^FI*J?'>.D8VDN[G-Q\\/;J:6]EI2K" + "L*[%PK_9K:K$F9FRH*\"YI*2]A86@>'>5AH:ADI*IAX6<<6Z*85U^>W68E)\"TGYK!" + "L*O2J*+'IZ\"`GY>PEHVCCH*-DXB0DH>,CW]^?&A@94U$749!<%I;>&1D<EUA7DI2" + "4#Q&8TU85T!'7T=(>F%>BG)ECG1FF7YLHH-OIH9NH(!FFWQ?DG-6DW5<D7-:C7)8" + "BW%9C'%=C7-CB'%BA&Q?A6QFCW9RBW1O>&1B@G!O?FYO9%A95TM,4$E07EAA@'R)" + "H:\"QIZB[KJ[%M+;,HZ6]GI^ZE)2MEI2KE9&HEI&FC8B;F92GJ*.VF):LHJ.XF9FP" + ">'B/2TE?4TYA3T=57%)>AG9_DG^$CGE]F(6*G8^;?W2%8EEK9EMM95MT:%YWA'N7" + "@WJ8DXRLL:O$M;#'OK;.L:G!GY>OF).HK:J^OKO/R\\?>P;W4N+;,N;?.OKS3L*[%" + "F)BOG9VTI*2[@H*;;&R'<W.,A8:;A8.7>GB/<&V)='&/<V^0;&B)=W*3>7.0>'\"(" + "=VQ^>&Q[?6QSE(6)DX.$?FIBF'YPG8!QG8%TCW1JB'%JEW]\\D'AY;%994#I!3#-!" + ":$Y.BG%NAF]JC'-MG(%WG(!TH(-TE'=FDG5DC&]>C7)BAFM;@6=7@VQ=AFYAA&UD" + "@&QD@6QGA&QIAW)PB'1TAG9XA79Z=&EP85=?:&%HCXN8I*\"OJJ>YK*J^KJ[%K*S%" + "JJ?!HI^YGYRVF96OEY&JDHVBDXNAC8B=FI6JIJ&VG9NQHJ*YFIJQA(2;:VE_8EUP" + "3D9664Y=>6ES@FYVD'M_GHN0EXF5<F=X65!B8E=I:%YW9%IS=&N'<FF'@7J:DX^G" + "C8F@F92KG)>NE(^FGIFPKZR`K:J^L*S#M[/*L[''O;O1N[G/L:_%G9ZSIZB]KJ_$" + "@X.:65ER7E]T969W<&]`;6N!>'6/@G^9;6J$5E-M2D9>:V-Y9UQM;F)M=FEQ?FIL" + "@&QL@W!K?V=<EWMGF'ABIHAQF7UIB&YAE7IPF7YXAVYK7D1$5CQ!94M+=UU=?65D" + "=U]<@6EFA6QHEGUWC'%ICW1LCW1LC'5LA&UD@&QBAG)JBG=QAW1O?VUJ?&II=F%E" + ";5I=<6!G?7!XA7N%=&Y[;6EXA(&1L;#!O+K.HZ2YDY.LG9VVH9ZZG9BUGIBSF9\"L" + "FI*KFI\"IDXJ@D8F?E(RBF).HFI:MGYVTG)RUE)2MCX^HCXVD@'N07E5G95II=65O" + "=&!HCWI`H(R4E(:2;&%R5$M=7U1F7E1M75-L;61`<VJ(@WR<?7N2;6F!=&Z'?7>0" + "<&N\"<&N\"=7&(;VN\"=7&(='\"'<6^%LK#&P+[4K*J`DY2IGI^TLK/(AH:=7U]V:&E^" + ";W\"!9V9U65=K8V%X=7.);VV#8EYU6%-H?'6&;&)N75!88U1:9$Y/6T=%8DU(;%)%" + "?5Y*@5Y'FGIBJ8MTDWAFFG]OHX=[H89^>F%=;U939DY-7DA)5D)\"6T=';5E9>65E" + "EX.#DGY\\D'QZBW9TAG1Q@G!M?F]K@G-OB7IVB'IZ?W!R=&5G85%:5DE28E9A<F=V" + "DXR=DH^ADI\"FEYBMHJ*YI*2]H:&ZGIZYEY>RF)6QFY6RD(JEC(*<C(*;CH*;C82:" + "CH6;CX>=CHF@CXNBFI>QE)2MCX^JE)2OH9ZXEY*I=FV!?'&\"A'1`<5UGCGE_H8V5" + "F(J6;V1U3T984TA:3T5>6$YG;V:\"?W:4BX2D@'V7<W\"*?'B2CHBC@GR5@7N4B(2<" + "CHJBGYNS=W.+7UUTK*K!NKC/H)ZTFINPM[C-L+'&@X.:8V-Z7E]R<G2\"75QK45!A" + "4E!F85]U<G\"&=7.'?GN-CH>7@7>#8U9?;V!F>&1D>65E=6%?:E))?6!/C6U7D7-<" + "E'ACH89TDG=EAFM;BW%DBW-JEH%]@&QL7$E+3CY!=V9KFHN/FX^4IIJ?H9*8FHN1" + "D8*(B'Q_AGI]@G9Y@'9XAWU_C8*'AWZ$?'-Y9EII7E-B=&Q\\AX\"3J*6YHZ&XHJ*[" + "I:6`IJ?\"J*G&H:*_GI^\\F9BVDY\"LD8NFC(.?B7^8@GB1@G:-C8&8BX*8B(\"8AX&:" + "D(RDB8:BA86@@X*@B8BFC(FEC8>@=&M_>W\"\"CGV,;5ECC'=_GHJ2FXV9<VAY3$-5" + "2T!244=@64]H:V)^?722A'V=D)\"KC8JFCHFFF9.PD(JEDHRGF96OIZ.]K*C\"@W^9" + "?WR6N;;0PL#7GIRSDI*IHJ*YO;[3FYNR=W>.7E]T;W%_9F5S9&-T9&)X9&)X;6N!" + "?'J.CXR>BX>7CH:4A7N%F(V5GXR/?&QNAG-UC79QGX-WIH9VGH%PHXAXK9)`IXQ\\" + "F'YNC'1GAW!GC'ET?6UL:%E;?&]XK:\"IR;W*O;+!M:V]L*BXKJ.TJZ\"OIINJHIBD" + "FI\"<D8J3E(V6G)2@GI:DG)2BB8*3A7Z1F).HI:\"WKZO#H9ZXH*\"[JZO&JJO*JJO*" + "E)6TAXBGC8RJC8JFC(BBCXFBB8&9B'^5A'N1BH&7AGV3B8&9B8.<DX^ICXRHC8RJ" + "CHVKE).QBXBDEI\"I@7B.@'2)B'>&:U=BD'N#FX>1E(:2;6)S3$-55TQ>7E1M7U5N" + "9EUY=VZ,@'F9EI6SEY2RCHFHCXJGBH2ADXVJF).PI:\"]I:\"]@GV:D(VGKZS&P;[8" + "L*[%IZ>^IZ>^H*\"WFIJQ>WN48F-X9FAV;VY];6Q];FR\":VE_7%IP<&Z\">WB,;VM[" + ";VAX>W!_B7V*D8\"%4D-)<F%F@FYNA&EAA&9;CW-GE7UREGQLEWUME7MMDGIMDGYT" + "D7]Z@W5S=6MKH)2AN:Z]NK'#KJ:\\KZK!N;')N;')O;3*N[+&M:R`J:*SH)FJGI>H" + "HYRMJZ2WKZ>]K:B]KZJ_LZ[%K*B`IZ.]J:;\"IZ2`JJ?%I:;%G9Z]EYBWD)&P@X*@" + "BH>CEI*JBH6<A7V3D(B>C(.9AGV3?'2*BH*:C(:?C(BBC8JFBXJHCXZNFIFYC8JF" + "H9NTBH&7?G*'@G%`;EIEG(>/G8F3BWV+8UAI3416:5YP;6-\\:5]X:%][>&^-?WB8" + "HIZ_FYBTFI:PFI2QEY\"RHYR_G)6WI9Z^F92UA8\"AI)^`KJG(HYZ]JZC$JZC$JZO$" + "FIRTBXVE@(\"7<W.*85]V:VE`<V^&='\"';V^(:6F\":&A_:VR!='*&<W\"\"E9&AA'V." + "B'Z(54E4?&]XDX*+A'%TB')SH(B%J)&*DGMTE8%WGHM\\F(9WB'INAGQT<FAG=VYR" + "LJ>VO;3&K*2\\L*K%JZ;#J:6_L*S#M;##M;')L*S#HI^SG)FKH)VOHZ\"RJZB\\L*W!" + "L;'*KZ_(JZO$J::`J*7!J:;\"IJ._HI^[F9BXCY\"OC8ZMBXRKAH6CC8JFCXNEA'Z7" + "A7V5DXNAC86;@WJ0:F)Z@7N4BH:@C(>DA8&BD(^PF9BYE).SFYBVH9NVB'R39UEO" + ";5MP>&-SI(Z9J)2<C'Z*449734)4;V)U;65[<6F!=&R%@'>5>W24>G:7>7:4?'>4" + "?WB8@GN>BH*HAG^BA8\"A;6B)75AY@'N<@7R;:VB&>'61AX2@>7:2@(*:>'J2=76." + ";FZ'8%YU7EQS9F)Z;FJ\"?W^:@X.>?7V6;V^&;VV$<&R#BX:;;F9\\=&M_6$U?=6AZ" + "AGB(A')]@FYVAW)VA&YOCWEZEH)`G(F$BWETBWQXB'Q]>G%WA7Z'M[+%Q,#7L[#," + "L[+2KZ_0K:[-K:[)JZW%KK#(K*[$H:2XG:\"RHZ:XJ:R^KK'%L;3(JZW%K[')KZ_*" + "J:G$IJ._HZ\"\\H)VYFYBTD9*QCH^ND9*QD)&PBHNHB8:BA(\":>'2.A'^4C(2:?'2*" + ":6%W755M=W&*@W^9A'^<AX.DC(NLCXZOCHVNEI.QGIBSA'J35TE?8U%F=%]OH(J5" + "J)2>AWF%2C]03$%395IL:6%W=FZ&>'\")@WJ8AX\"@9V:';&B):F6$9F&\":V.+;&6/" + "<6N2:F2)85M^:6.&<&N,:&2%;6J(;VR*='&/<W\",7U]Z5E9Q7%QW:F>#9&%[75ES" + "8U]Y;&B\"='.1?'N9>'>5:&B#965`;FN'BX>A=&Z)=VZ*;V:\"=&J$=FB\"=69\\<%]P" + ";EQI95->6TA*9%)1<&%=<&%=BG]\\B7]_@7I`DXV6KJ['N[O6L+/3M+C<L[G>K;/6" + "JK#1J*_-JK+*K;7-IZ_%H:F]HZN_I:W!H:F]GJ:\\I*C$J*S(IJ?\"FYNVDY.NF)6Q" + "G9JVH)NXF)FVDY2QC)\"NB(RJAH>DAH:AB8:@C(BBC8B=B829<FI`6E)H755M=&Z)" + "@7R9@7R;A(\"AB8BIB8BIC8RME)\"QGYFTD(:?64UD9E1I=V)RG(:1IY.=?W%]1CM," + "5TQ>;&%S<VN!C86=AWZ:B8\">D8JJD9\"QEY.TD(NLAH\"CBH.MB(&LD(NUA'^HBH2I" + "D8VQCHJLE92UEY:VEY.TG9JXHI^]=G636%=U4D]M;&F%8EUZ75AU7%9S6U5P96&\"" + ":&>':&>'86!`7%M[6EEY=G*3<&N,;VJ+:V2$:%]_?722G9.MJY^VHI6HA'B'9UQ9" + "6U!+54M#4$9!6U),6%-09&!@A(*&HZ.^M;;5M[K<N\\'FN;_DJ[/8J;+4K+77K[;1" + "LKG4K[?/I*S\"I*S\"IZ_%GZ>_FJ*ZG*\"\\I*C$IZC%G)VZE)2OE9*NEI.OE9\"MDI.N" + "D9*OC9&MC9&MCH^LAH>B@H*;A8*<@G^3>'.(8UYS4TMC8UMS;VF$>G21>W:5?WN<" + "AX:FB(BIC8VNC(NKFI6RFY.K9%MQ:EAM>61TF(*.JY>B?G!^1#Q,7U9H<F=Y;V=_" + "E(RDBH&=AGV;C(6ECHVNDHZOB(6C@WV@C(6OB(*OAX2N<6^7>72;DI\"T@X.FDY.V" + "FYN\\F9FZEI6UJZ?(GINY<&V+55)P<6R+651Q75=T6U5R4TUJ4$MJ5E)S75EZ7UY^" + "6UIZ5E5U:V>);6F+<&V+:F6$8UY]>G21CXFDGY>OG)2J?G6)?G=^;6-K7%-93D5+" + ".C-!1#Y'7UQF@7^-EY2PM+/1PL/BN[[@M;C:K*_1K*_/K;#0NKO:N;K7M+70IJB`" + "I*:^IZG!G)VXF)FTGJ*\\I:;!I*6`F9FTCX^JCXRHC8JFBH6BB8FDB(FDB(FFBXRI" + "BXRI@X.>>7F2>'6/;FJ\"8EYU6E5L5T]G;&1];VF$>G21@7R9?WZ<AH6EAH>FB(FH" + "@(&>D(VGEI&H95US8E%D<F!OE8&,L9^L@G:%1CU/7%-E:%UO:F)XD8FAAGZ7A7R8" + "CHBEF9BVDI*MAX2@@GZ?BX:MB(6O>WJC8F&)<'\"5;6^4='B<D)6VA(FJE)>WGIZ_" + "B8BIEY2R<W\".5E%P;&>$65-P75=T8EEW6U)P85IZ:&&!:&.\"8V!^6UIX6EEW:&6#" + "9V2\";6J$;VR&:6:\"9F-_4T]I3TMC5E%H241;1#Y;/#93.\"]+.3!,,\"I%2D1A7UIY" + "96&\"@7R9IZ*_N[C6KJW-K:S,L*W+M+'-M;#-K*?&JJ7\"K:G#J:6_L:W%M[/-I:&[" + "GYJWH:&ZH:&ZG)RUE)&KCHNGCHNGCHNGC(FEDH^IB(6A>GJ5;W\"-9F6#75UX659P" + "5E-M2TAB1$!:2$);3DAA8%IS8UUV<6N&?'B2A(2?A(2?A(6B@X>C?X\";C8VDD8ZB" + "8UYQ7U!C=F1SF822L)ZK@'.%2T)4751F8UMK95YQ?W>-;F9^=&R%?GB3EY>PDY.J" + "CXVDBH>CAH2HAH2L<G&986.(:6N2;G*8=GR?@XRNCI>WC9*SAXJJ?W^@CHFF?'>4" + "5U)O6%)O5U%N5DUI7%-O751P95MW:6!\\95]Z8U]Y9&%[;6J$='&+<&V'7EQS;&F#" + "<F^+>7:2<F^-=7*0<6Z*:&6!6U=[4$QN2$)E24-F34=J5E)T6U=[4E!V:V:%?7J8" + "DH^MDY\"NH)NZHIRYJJ&]LZO$M*[+J**]IJ\"YHIRUK:B_L*K#EI\"IBX6>EY.JFY>N" + "H)RSH)RTF9:PC8JF@7Z:>7:496%[7UMU7%EU5E9Q34QJ3DMG34ID1T-=14)@0T!<" + "34EC5U%J85QS9V)Y=W&*?GJ2@H*9?X&9@X>A@X>A?X2;D)\"GC8J>9V-S85)E?VU\\" + "GHF7II2C=6AZ4$=;8UIL:V-S;VAY?WB+<FI`@'B0A'^6?GZ5AXB=E)6JEI.MB8BI" + "AX>L;W&8;&Z3866+<GB=@XNPA(ZPE)Z`=7N<;G&3@X.FE(^LB(.@55!M/3=444MF" + "341@6U)N:%YZ:%MX9UUW95UV:&1\\;6F!;6N!:&1[8%QS;VV$B(6?DY\"LG)FWHIZ_" + "L*S-KJK+L:W.G9VXE)2MCHNEB(6?A8*<:69`7U]Z8&![5E)S34QL7%M[<&R-A8\"?" + ">G2/@'B1EXVGGIBSAX&:?WJ1?7B/DXZCI:\"WE(^FD(JCEH^BEI&FF92IEI*IB86?" + "='&-85YZ5U1R85MT6U=Q7%=T55)N2$5A1T1@2D9@03U71T9F3$EG651Q85MT8EUT" + ";&=^>72+>W>.>GN0>7N1A8JA@XB??8*9BXRA@X*39F-S6DM>@&Y]H(N9G(J9:UYP" + "4DE=9%UN;&1T:F-T?G>(@'F,F9&GE(^F='&+@'N0HINLJ:6UB(:<>7J5>W^==G>6" + "9&:->'NCEYK$EYS'C9*]:&N3;6^6>7F>BXFOA(.C7%EU.S=144MH3D5C7U5Q;6-\\" + "95]\\7EAU7EAU:&-`;FF&8EUZ7EMW;&F%EY6LKJO%M[3.J:;\"HI^[K*G'L[#.L*S-" + "IJ/!GINYHI^]IZ3\"JJ?%F)6SC8JHAX2B?WR:<F^-=7*0?WJ7>'.0;6B%;&:!>7.." + ">G:0;6F#655O2D9@9V-[=7&);VN#:&1\\;VI_;FE^='\"'<V^':F9`7UQV6E=S8E][" + "<F^+='&-<&V)8V!\\659R6UAT6E=S3TQH34ID75IV<&N*<FV*;VF\"=&^$?76-?'./" + "=76.?'Z6>X\"7@H>>>X\"5B(F>@'N085IM4D58>&=XGHR9C'N*:%UN6%%D:6)S<&AX" + "=F^\"?'6(@GJ0DXZEDHRE;VV#<&Q\\AX&.C8F6AH64<72(<G2,<'\"+7F&!=7B:E)B^" + "E)>_A8BP6UZ&86.(='29@7^CA82D8%UW/#A23TEF44MH7E5Q:5]Y9%Y[6U5R75AU" + "9%]\\9F%^=&^,D8ZJJJ?#O;K4P+W7M;+,H9ZZFI>SHI^]IJ/!H)R]FI>UDY\"NF)6S" + "GINYK:K(J:;$I*&_G)FWG)FWE)&OF)6SBXBFDXZKAX*?A8\"=?7B5>W>19F)\\2D9@" + "/3E34$QD85UU4$QD2D9>3DM?7%EM;FJ!<6V%<F^)>7:0=W20>'61;FN':F>#:&6!" + ":6:\"<6Z*>WB4=W20:6:\"8%UW:6:\"<F^-=G&.>'*+?GF.A'R4?W:2=W>0?X&9@8:=" + "A(F@@H2:C(J@@GV27E=J34!3<V)SG8N8BWJ)9UQM8UQO<6I]=6Q^>'&$=V^%=FZ&" + "A'Z7@WV6;VU[<&IW>W1]<6QR<W)Y76!J969W;FQ`7E]Z>WR9FYZ^EIB]@8.J5UE`" + "65M`<'\"5=725@H&?8%UW.SE01#]<24)B44MH85ER8EUZ8%MX<FV*A8\"=C(>DH)VY" + "M[30N;;2L:[(LJ_)K:K&IZ2`JZC$L:[,KZS*IJ/!GYRZG)FWH)V[HZ\"^L:[,KJO)" + "HZ\"^DY\"NFI>UG9JXG)FWB8:DF).PF).PEY*OA8\"=@GZ8=7&+8EYX5%!J7%AR=7&)" + ":&1\\;VN#=7*&@'R3C8F@B86=@X\":@G^9>'61<6Z*:6:\";6J&=7*.?'F5@G^;B8:B" + "BXBDA8*>=7*,='&-=G.1>721?'B0A'^4@GV4>7..='2-?'Z6@X6=@8.;@H*9BXF?" + "A'^4759I13I,<F1THI\"=B7B'7%%B95YQ;F=Z=FU_@GN.>W.)=&R$@GR5@7N4>'5]" + "=W!Y>7!V:V5H:FAH75]?8&%E7EQH7EQR?7J4GIV[F9>[@8\"H5E5]34QT8&\"%>GF9" + "@8&<7UUT/SU414)>2T9E2D5B6%1N:62!=7\"-CXJGI:\"]L:[*P;[:Q<+>MK//KZS(" + "K:K&JJ?#IZ2`IJ/!I:*`H9Z\\G9JXEY2RF)6SHI^]J:;$NK?5N;;4L[#.IJ/!H)V[" + "IJ/!FYBVD8ZLD8ZLEY2RF)6SDY\"NCHFF?GF6<&R&7UMU:65_B(2>B(2<E9&IG)JP" + "FIBNG)JQE)*IB8:@?GN7<&V);6J&='&-?'F5B8:BC8JFAX2@A8*>B(6AB8:B@X\":" + "?7J6>WB6?7B5?WN3@G^3?WJ1=&Z)=G:/?W^8A8>??GZ7@H*9C8F@C8B=9V!S13I," + "<V5UH)\"<?W%_4TA:9U]U:V-Y<FE]A7Z1?'2*=V^'B(*;B8.>:F5J:6!F<&1I;&)B" + "6E9,3T]$6E947UA>7UIM=&^$F)*MI)^`E)\"T8EV$1T5K7UV#@H*=A(2;8F!V/3M1" + "03Y:3TQJ3TQJ5U1P96)^AH.?I*&]L:[*N+71OKO7O+G5M[30JZC$JJ?#JZC$KZS*" + "L*W+K:K(J:;$J*7#H9Z\\GYRZI*&_IJ/!KJO)J:;$J:;$I:*`I*&_I*&_FI>UFYBV" + "EI.QE)&OI*&_L:[,G9JV=G./9F-_8E]Y?7J4D(VGCHNEE9*LH)ZUF):ME)*IC8JD" + "B(6?AH.?@'V9@7Z:AH.?AX2@C8JFD8ZJC8JFBH>CB(6A@X\"<B(6?A(&=A(&?AH&>" + "A(\"8@X\"4?WN2=W.->'B1@(\"9A86>?'F3?WV4BH6<C(2:9E]R0CE+;V-RE(20<F1R" + "5$E;;V=]<&A^=FV!>W.)=&R\"<FJ\"AX&:BH2?6E%36DU5<%]H@7-S<&A<8%I+759/" + "85=99%IF9UQKA7R0I9NUI9RZ<FN-44UN;VN,AX2>BHB>;F^\"/#U2-S=24E%Q:VJ*" + ">7B6CHVKL:[,QL/AQL/AQ,'?P+W;NK?5NK74KZS*K*G'K*G'L:[,LJ_-K*G'I*&_" + "H)V[FYBVFI>UH)V[H9Z\\IZ3\"HZ\"^I:*`I:*`EI.QCXRJDY\"NEI.QFYJZD9\"PL*_/" + "N+?7BH>C:6:\";&F%AX2@J::`I*&[H)VWHI^YI*2[GIZUF)BQC(REC8JDDY\"LCXRH" + "C(FEC(FEB8:BBXBDCXRHD8ZJDY\"LDY\"LC8JFB8:@AX2@B8:DBXBDB(:=A8.7A(*8" + "@GZ8?GZ7@X.<A8*<?GJ4?7F1A8\"7@7F/6E-F/35%<65TC7^-:5MK4D=99EYV;65]" + "?'\"'=&R\"<6F!<FJ#AH\";B8.>@'1W;EUF8TU88D]1;6%2;651;F1;;U]A8U=87E)7" + ";5]K@G6'C(\"5;F5[3TI?:F=[>':-<G\"$:VQ]34YC5U=R=WB7G9Z]L+'0O+O9P\\+@" + "Q<3BO[S:M[32MK/1M;+0L*O*JZC&I:*`H)V[GYRZGINYFYBVF)6SF)6SG)FWG9JX" + "H9Z\\GYRZIZ3\"IZ3\"IZ3\"H9Z\\F)6SD8ZLE9*PEY2RG9R\\F)>WK*O+EY:V:&6!;&F%" + "@X\"<J*7!MK//K*G#K:K$K:K$IJ:_GIZWFYNTE96NF)6OFYBTDY\"LCXRHC(FEBXBD" + "C(FEC(FEC8JFE9*NFI>SEY2PBXBBAX2@B(6CBXBDB8>>B(::BHB>B8:@B8FBBXBB" + "@X\":@GZ8?WF2BH*:>W.)4TQ?1#U->6Y]BGR*8E9E4DE=6E)J8UER<V=^<VN!=6V%" + "=V^(B8.>BH2?D8*&FX>1E7V*>6-FA'1F?7)=@')H@&UP;6!9:%I89%577T]8:5MG" + "8UEE2$)/6%5?65=M/CQ02$E:65IMAH>BIJ?&P,'@Q<GGQ,/AP+_=Q<3BP\\+@N;;4" + "N[C6OKO9LZ[-L:W.LZ_0M[32MK/1K:K(H)V[EY2RE)&OEY2REI.QE)&OC8JHF9:T" + "HZ\"^IZ3\"G9JXF9:TFI>UE9*PFIFYFIFYIJ7%I*3%=766;VR*CXRHH)VYM+'-JZC$" + "J::`L:[(JZC\"IZG!FIRTG)RUI*2]IZ?\"H)VYDY\"LE)&ME)&MCXRHBXBDB(6ABH>C" + "E)&MF9:RE)&MCXRFB(6AAX2BBH>CBHB?BXF=CHRBCHNEB8FBA8*<>'2.>W60=W&*" + "A7V5<FI`2T)66%%A@'6$@')`6T]>7E5I8%AP7U5N8E9O;F9\\=&R$>7&*B8.>AX&<" + "<E]A?FILA6]PAV]NBW1ODWQSDG]PC'EG@VUA@VUA?&A><5Y8<F!==FAH:EY?8EA:" + "7%IF/#A%6E=G@(\"7FI^]M+K;P\\CGOK_>LK;4NKO:Q,7DP\\+BQ<3DO;G:N+35J*/$" + "H9V^G)BYE9\"QGYJ[G)>VE(^NA'^>A8\"?C(FGE9*PGINYH)V[GINYH9Z\\H9Z\\F9:T" + "DH^MEY2RGYRZFYBVF)6SHI^]CXZL8F%_AH6CL*_-I:3\"J*?%F9FTEI:QG)RWGY^Z" + "G)ZVF9NSG)RUI*2]IJ._GINWEI&NDXZKDH^KCHNGCHNGD(VIC8JFCHNGD8ZJDH^K" + "BXNFCXRHCXNECXRFBXVC@H69A(*8DXZEB(6?>G:0;&B\"<V^)>'*+>G**9%MO4D=9" + ";&%RAW^+>G-\\8EIH6E%E7U5O5DQF75-M95UU=6V&>7&*A7R8@WV83SI!6$%(:5!5" + "?6-GD75UF7YXDWMPBG)EB'%BC'5DC79EAW%BAG1GA7=O@G5P=6II>'9`55)<>'2#" + "E)6JIJO)M+K;Q<KIRLOJR,SJQ,7DO;[=MK?6N+?7IJ+#H9V^HY^`E)\"Q@'R==W*3" + "@WZ??GF8@7R;?GF8?'>6?GN9CHNIH)V[IJ/!I*&_I:*`H)V[E9*PE)&OE9*PG9JX" + "GIV[FYJZE).S>'>745!P=W:6JJG)J*?%K:S*H)^]F9FTEY>RF)BSG)ZVG9^WG)RU" + "F9FRG)FUGINWG9BUF).PCXRHD(VIF)6QGINWFYBTE9*NDY\"LD(VIE96PFI>SFI:P" + "E)&KBHRB@H2:A(*8BX:=AH.=?7J4;&B\";FB#<FR%=6V%95QP7U9J?W2%EHR8@7J#" + "8EIH8%=K:%YW7U5O7%)K8UMT:F)[;65^@'>3AH\";>F-NA6YYCW1^D7-ZE79ZFGMY" + "E'5OB&IAAVQ8C'):D7==C75:BW=??VY;@G1J;6!9=W1\\7%9?C8>4IJ2ZL[?3M[W>" + "P<;ERLOJQLKHP,3BN+G8L;+1MK75HZ+\"FI:WH)R]CXFL;VJ+96&\";6F*85U^;&F'" + "=7*0;&F'<W\".@X\">DY\"NEY2REI.QG)FWG9JXE9*PEI.QFYBVG9RZGYZ^GIV]DY2S" + ">7J97EY_@X2CHZ3#FYR[JJO(K*W*H*&^EI>TFINXGI^ZG9ZYF9FTDI*ME)&KFI>Q" + "G9FSFY>QE)&MEI.OGYRXI*&]G)FUDH^KC8JFBXBDE)2OF)6OFI:PD8ZHA(:<A(:<" + "B8>=BH6<A8*<A(&;>G:0>G2/<VN$:&!X8%=M;&-W?7*#C(*.=VUW5$Q:8%=K<&9_" + ";65]9%QT8UMT9%QU9%QU<6N&A'Z9BW1]DGB\"DWA`CW)WCFYPDG!OE'%JD6]EAFA1" + "B6M0D713E'I6FH%ABW==E81S>&I@?'5[;F5KI9VIM+'#O+W8NK_>N\\#>O+W:O\\#=" + "O\\#=N[S9KJ_,K:S,HZ+\"C(NK?GV=9F\"#44MN2$1F14%B/3E:44YL9F.!8V!^9&.!" + ">WB6D8ZLFI>UG)FWH9Z\\H)V[EY*QEI.QI:*`I:3\"G9R\\G)V\\EYBW@8*A;&^/@X2C" + "IZC'HZ3#JJO*IJ?&EYBUD)&NFINXGZ\"[F9JUE96PE)2OEI.MEI.MFI:PGIJTEY2P" + "EY2PG)FUGINWEY2PDY\"LEI.OF)6QD8ZHD(RFD8VGC(FC@H2:A(F>C8VDC(B?B8:@" + "@GZ8=W&,;F6!4TEC3$);7U5N?W:,B'V.C8./=VUW54U;8UIN<&A`<6F!9U]U:6%Z" + ":V-\\9F![;&:!A'Z;95!494]2;E59?6-CC7!MEG5OFGANGWIPF'ICEG9<F'I9FWU8" + "H(-BCG9;EH%M>&99=&AI=FIMK*&HL:JZL+#'L[?3M+C4LK+-M+3/L;',L*_-HZ*`" + "F9BVE).S>7667UM\\3TEN7%9[8EY`6E9X5E)S6UIX8%]]65AV7%MY:FF'>GF7A(&?" + "BXBFF92SHIV\\GYJYI)^^K:K(JZC&H)^]G9RZC8ZK<'&.6U][>7J7G)VZG9Z[GZ\"]" + "I*7\"HJ.`FYRYFINXG)VXEI>RDI*MDI*ME)&KDY\"JEI*LF)2NEY*OEY*OFY:SG)>T" + "EY*OEY*OFI6RFY:SDY\"JCHJDCXNECHRCAHB>A8J?BHJAB(2<@GZ8>G2/<6F\"7U5N" + "035.3D);<F9]BW^6D(.6C8*1>G!\\7%1B9EUQ;&1\\;65]9EYV<&J#<&J#<&J%>G2/" + "DHRI6TE(:%95=&!>>V9BA6YIDG=OF'IQEG5KD'!@CFU:DG!6E7-7G7MADG9?F7]O" + "AW%C<&%=?VULK)VAN:^[L[#$M;7.M[?0M;/*J:;\"H9ZZHZ\"\\GYRZE)&OBX>H:&2%" + "5E)S;FB-CHBMGIJ^DHZPC8RL@8\">;VZ,7E]\\4U)P7UY\\<G&/A(&?C8JHEY*QF92S" + "DXZME8ZNDXZMDXZMG)FUI*2_F)BQA8>?@(*:D)&LBHNF>GN6@X2?E)6REYBUF)FV" + "H*&^HZ3!HZ3!G9VXDY.NE9*LFYBRG)BPE9&IE)\"JF96OH9VWHIZXH)RVHIZXH)RV" + "F)2NBXBBB(2>B8.<AX6<@(*8>X\"5>GJ1=W.+>G2->'\"(;F)[6DQD1C9/9%1M@G*+" + "AWF1BWV3AWJ-<F=V7%%B85AN:6%Z:F1]:&-Z<VV(;6>\"<VV(C(:CFY:S<&%=@'!O" + "BWMZB7IVB75SD'MVF8!ZG(%YE7EMEW=KG'AKFG1FFG1FE')EEGELE'IM>61?>F5@" + "E(!`LJ6NKZBYJ*:]I:.ZHIZUK*C\"J:3!I)^\\GIFVF92SAX*C7%=X75AYC8>NH)K!" + "IJ+&F96WFYJZDY*PAXBE>WR9:6J'8V)`86!^9V2\";6J(>G64A'^>AX\"@E(JMC8:F" + "C8:FEI&NFYBRDI*ICY\"EEIFKHZ.\\C(RE>7F2>GJ5=W>2;V^*?W^:EY:THJ.`HJ.`" + "G)RWE)2OF9:PHI^YHIZVFI:NE9&IFY>OH9VUH9VUI*\"XK*B`J:6]G)BPDHZFEY&J" + "DXVFBHB?A(:<@8:;?H\"6?7N2>G**<&=]5DA>13-*02Y#7$A@=6-ZA'2-F8NECH\"6" + ";&%S4TA:5$IC:%][;FB#;FB!=6^*;&:!=&Z)CHFFD(NH:%I88%)09UQ;@')RA75T" + ">6=F?FEGE'QYB&UECF]IEG-LE6YHD&EAD6QCD')GG8%UAF]F<UQ5=F%?IYB>KJ:V" + "J:6\\IJ*YIJ&VJJ2_LZW(HYVZE8^LF)&QBH.E7UAZ<6J,HIS#J*+)KJK.JJ;(L;#0" + "JZS)HJ.`D9*MAH>D<W*08F%_7EMY7UQZ:62#=7\"/>W24?7.6A7N>BX2DCHBCBX>?" + "C(J>E)6FH*&RF9FPDY.JBXND@X.<?GZ7?W^:B(BCB(BCA(6B?X\"=?W^:A(2?CXRF" + "E9*LEY.KEI*JGIJQGYNRFI:MD(RCCHJAF)2KEI*IAH*9A(\"8CXFBAX&:='*);G\"&" + ";G.*;G\"(;VR&;F5[9%AO1C=+02Y#1S%&3SE/7$A@@6^&G(VIC'Z67E-E0C9+1#I4" + ":%][=G\"+>'*->7..<VV(=W&,B82A?GF67U5?2#U%4D5-=&EQ>W%[;V5O;V-H=&1F" + ";518@&9HDG9TB&MHAFEFBV]MB&YPE'M_B71X;EM@8U-<A7F$IY^OK*>ZHZ&WFYNR" + "I*\"XHY^WFY>QDHZHC(>DCXJI:V:'>G66J:7'H9N^H9J\\OKG:N;K9K+#,GZ\"]G)FW" + "C(NIC(NI?GN9>7:46%5S9V2\"<VZ-85Q[55!O96\"!>7*4;FB%=7\"%:65U;FIZ<VZ!" + "<FZ&>'2,AH*9B(2;>W>.D8VEDX^IA(\":?'>.:V9]>G6,CXJA@GR5>'2,@GZ6B(2<" + "EI*JFY>OEI*JAH*:@GZ6BX>?B(2<=7&)=&N'<VV&;FJ!:FA_;&R';V^*<6^&<W&%" + "@WJ0@'2+>VR\">V=_9U%I54%94CY6<5]VBWR2;&-W24190#M02$!89UUV@WN4>'*+" + "=W&,?':1?WF4A'Z;=W*1?'2\"6U%=5$A3<6=S@'F)>W>&=&QX:%UE8DY6=V)HB&]S" + "@&9H?F1FAFQN@6MO>V9L@&QT=&-L:EID<V=T@'B(D8R?H)ZRK*J`GYNRH)RTFY>O" + "EY.MCHFFAH&@9F%`@'N<KZO,J*/$I9Z`NK76L[31HZ?#EYBUDY\"NCHVKD9\"NC8JH" + "C(FG@'V;?7J8@GV<;VJ)5U)Q44QM7UAZ7%9S651I/3E)0#Q,3TI=34E@6E9M=G.'" + "<W\"$9F-W;VN\"?GJ2@'R4:F5\\7EEP5U)I55!GB8.<A'Z7B(2<CHJBGIJRGYNSG9FQ" + "DHZFAH*:@7V5=W.+:65]6$]K3$9?2$1;5E1K9&%]9&%]:&1\\='&%AGJ1CH\"8EX6<" + "F(2<A&Z$<V!U;%IQ?F^%@G2*7E=J.39*-3)&3$1<9EQV?'2-=&Z'<VV(@'J5@GR7" + ">7.0;6B'BX.99%UP3T9:9V)WA(*9C8VDAX.:<6I]8%5D9%9D:%AD<U]I?&=OA7!X" + "A'!Z<%]H>6=T?&MZ<6-S95IK6%%B<6Q_CHR@I:.WJJ:]J:6\\HY^WGIJRCHJD=7\"-" + "55!M>'.2LZ_0L:S-K:;(NK76L[31I*C$F9JWE)&ODI&OD(^MC8JHBH>EE)&OBH>E" + "E9\"OB82C6E5T1#]@44IL7%9S9%]T5$U>5D]@8UQO;&1Z95YQ:6)U:V1W@WR/@GJ0" + "=V^%<6F!:6%Y9EYV5T]G1#]6@7N4=&Z'<&J#=W.+@GZ6?'B0>G:.>'2,<6V%;6F!" + ";VN#;VN#7UET6%)K7EIQ=W.+BX:CC8>DDXNDI)NQL**ZL*\"YLJ\"WL)VRJ)*HI9*G" + "F8J>G(ZDCX:<96!U/#I.,C!&44QC8EAR<6F\";&9_:F1_@7N6AX&<=&Z+;VJ)D8RI" + ";&:!3DID8F%_?X*BB(VNA(>G<&^-96%Y2T9=24!4<F5XC7^/D8.3D(*2>6M[8E-G" + ":%MN:5UR8UIN5$U@:F5Z@G^3F):JKJK!KJK!I:&XFI:NA8&;9&!Z2$-@;VJ'JJ?%" + "L:S+LZS,NK74MK?4J:W)GZ\"]F)6SCHVKBXJHBXBFAX2BC8JH@'V;AX*A<VZ-/CE8" + ".3155U!R:6-`>W.)?W:(?G6'?G6)A7R.>W*$<&AX>'!`GI:FG).EC828EXZBGY6N" + "GI2MEX^GDXNCGIBQEY&JDXVFFI2MG):OCHBAA'Z7?WF2>7.,>G2-@WV6BH2=BH2?" + "D8NDF92KHIRUJ)^]I9J[I9BUJYVWL*\"YJIBOJ)6JIY&FJI2IK9ROH9*FF(J@BH*8" + "9V1X0T19-#)(4TYE7E1N;&1];6=`:6-^@WV8BX6@>'*/>G64BXJK:V>)3TMM:&B-" + "@XBO@HJR?8*I:V^37V!_/3Q<03Y:>7..G)2LGY:LFHZE@76,6DUH54ME8UER:V-[" + "7EEP9&!W:V=^>':,CXNBF96LE9&IA(\"8;&B\"4DYH245?=&^,G9JXKZK)MJ_/M[+1" + "M;;3IJK&FYRYD8ZLAX:DA(.AA(&?@X\">>7:4>G>5@7R;85Q[,BU,1T)C>'&3AGV;" + "C(.9DXB:CX26C7^5CX25>F]`=6IYA7J)D(64G9*CHYBJM:J\\M*C!M*C!L*:_LZG\"" + "IIZWJJ2]JJ2]J**[FI2MD8NDBH2=B(*;BX6>EI\"IH9NTHYVVH9BTJ:2[KJF`JZ6`" + "JZ+\"JYV_JIN[K9VYJIBQJ96MJY6JI9\"BII&CG8R=AWB,=VM`=FZ&7EIQ24I?-S5+" + "3DE@6U%K<&B!>'*+;VF$@GR7BH2?@7N8B82CAH6M:6>-3DQR<'*:D)?\"BY2`@8BS" + ";W*:4U5Z/S]B2$=H<V^0D(NJFY6RF9\"L@7B48EEW4DEG9%Y[<&J%:&)]75EQ4T]G" + "4T]G9F)Z>'2,>W>/9F)\\34EC0#Q634AE>G62GINWM[+/O[G6N+/0M;;3I*C$F)FV" + "BXBFB(>EAH6C@X\">A(&?=G.1A(&?C(>F:62#.S95241E<FN-?'.1@7B.C8\"3BGV0" + "E(6;GI*A<&1S;6%PBW^,CX.2IIJIJ9RNGI&DJIRVL*2]MZO$L*:_J*\"YJ:&ZIJ\"Y" + "GIBQFY6NEI\"ICXFBB8.<BX6>EI\"IFI2MD8NDG)2MFI*JE(^FDXJFD8BHC8*ED(&A" + "EXBDDH\"9CWN3AW&&=V)R@FU]?FM]959I54==-\"I#+RE\"0D!724=>6U5N9UUW<&B!" + ";&9_>'*-?WF4@WV8A'Z;C(>FD)*Z=72<551\\=7:AEIW*CI?#@XBS;&Z63U%X04-H" + "3T]T:&:*@7V?EY*SE(VM@7J:7UAZ3$5E9V*!=&^.?'>4<FZ(8%QV3DID34EC6%1N" + "7%AR34EC/3A5/#=46%-P?WJ7HI^[P+O8R,+?N;31MK?4IZO'GI^\\D8ZLC8RJDI&O" + "C8JHCHNIA8*@BH>E@GV<6E5T+RQ*+2A)0#E;1SY<5DIA9EEL959J>FA_A7F(9EII" + "9EIIA'B%H)2CL:6TJIVOH92GH)*LFXVGJY^XM*C!KJ2^H9FRG):OD8ND?GB1?GB1" + "?7>0>'*+>G2-@7N4?':/;FB!=&R%<VN#=&R$>'*-?'.3>F^2@7.5C8\"=>VF\"?6M`" + "<EUO8TU;A7!^EX64C'N.?F^%959R2$!93DIB5%!H5T]H9EQV<FJ#;FB!>G2/>G2/" + ">W60@GR9@GV<DY2_>7BA551\\<7*=D9C%C).`A(FR;6^63TYV1$-K555Z:VF/A(*F" + "FY>YDHVN@GV>7UI[2T9G;FF*?'>6E(^ND8RI>7215E%N0#M803Q90SY;/CE6/#=4" + "2$-@:&-`B(.@H)VWP+S6Q\\'>M;#-M+70J:W)I*7\"F9:TDI&OE92RAX2B@'V;@G^=" + "@X\">>G646E5T,2Y,+BE*.C-5.\"U,0#1+3C]32CA-8$YE9EII95EH6DY=:5UJJY^N" + "L:6TH92FLZ:YFXNF<F1^?W&+HI:ODXFC@'B1=W&*:&)[6E)K85ER:6%Z;&1];65^" + ";F9_8EIS3D9?5DYG85EQ:6%Y:6-^95Y^8%9Y8E=X;%]\\6$AA<%YS<UYP9U%?DWV+" + "KIFII92GFHNA<&!\\1#I424-<65-L6%!I:V%[=&R%:V5^;FB#<&J%=6^*A7^<A'^>" + "CI\"W;&Z54U5\\:VV5BHRTD)*ZA(:N;G\"85%=_2$MS6%J!;FV5<G\"8C8NQDHVT@'NB" + "7EEZ2D5F:F6&@'N<GIFZHIV^AX*C85Q]0#E;.S1614!A/CE:1D%B34IH;VR*FI>U" + "K:C'O[S:O[S:KJO)M[;4L*_-HJ.`F)FVE)&OC(FGAX2B@GV<=7\"/A8\"?>W:55E-Q" + ".C=5/#=60SI:13I933Y<4D1>3S]87$UC95AJ<V=V5TM8:EYIHY>DK:&PK)^QLZ:Y" + "EXFC75!M4T5G:UU];F%\\7E1M3T5>34-?0SI644AD=&R%@7F2@'B1;65^13U603E2" + "55!G95US;F1]65!N5E%R44MN0CE98%%O2SE0>69Z@6Q\\?VEUAG!\\J92DL)VOFHB=" + ":UQR/2Y*1#96449E7E9O;65^<FJ#:6!^:V6\":6-`=&Z+B8.@E(^LCI&S:&N-5%=Y" + "<'\"3C(ROC8VPB8>K=7.77%^!3DYQ6EI]:VN.:FB,@H&BBX>I?WN=6E5V1#]@9%]`" + ">W:7DHROFY6XA'ZA6U5X.S17.C17/3=:.S971D%B655V>766I:*`N+/4O[K9O+G7" + "KZS*M;32K:S*H:*_F)FVEI6SE9*PDY\"NC8JH?7J8BH6D?WJ97%=V03Y<.C54/S96" + "449E75!M64ME5TEA85-I:5YO>&U\\7U5A=VUYK**NMZR[L::XL:6ZG9&J9EEV4T5G" + "13=93D%>3T5>4DAB5$IF3D9?4TMD?G:/CH:?B8&:=6V&345>.C)+5$QD64]H6$YG" + "3$-A4$ML3DAK0CE954AE23I0?&M^@FU]=V%MBG)_JI2BKYJLFH>;9E1M0C).3T!@" + "5TQK65%J8EIR<&B!<VJ&<VV(;6>$<FR)?7>4DHVJBHZL:6V+7E]^=G>6DI&OBXBF" + "CXRJ@GV:9V:$44YL6%5S;&B):V>(@W^@BX>HA8&B9F*#34EJ:V>)@GZ@CHJLG)B\\" + "B86I655Y.#)7-S%4/3=:.S582D1G7EI[B86FM;'2PKW>OKG:NK;7M+#1M+/1K*O)" + "HJ.^F)FTDI&OD(^MCHVKC8JH@G^=CHNI@'N:6E5T/#E7-\"].-\"U-3$%@5$=D23Q7" + "5$AA6DYE;6)T>6Y_8UAGAGR(L:>SN[\"_K*&SI)BMD82?9%9V6$IL1SE;34-?6E!I" + "5TUG85=S75-M54ME@':0BX&;B7^9>W&+7U5O1#I44DIC6$YG5DED341B2T5H1T-E" + "1T!@5$IF33]5?W\"#@W%`;UEEB'!]IHZ=JY2GG(:;:U=S2SA76TIK:5M[:F!Z:6%Y" + ":F)Z95QX:6-^;FB#?7>4E(ZKHIVZ@86C<G.28V2#='.1FI>UBH6BD(JGBH2A<FV," + "4TYM6%-R<&R-='\"1BH:HD8VOBHFJ;VN,4T]P<6V/BX>ICXNOH)O\"DHVT651]-C!5" + ",\"I/0CQA03M>44MN9V&$HIR_Q;_BO[G<N++5M[+3MK+3M+'/KZ[,J:G$G)VXEI6S" + "D(^MBHFGB8BFA(.AD8ZL>G644$EI.S95/CE80#=73D-D23Y=/\"],44=@4$9?;F-U" + "<&5V859EDHB4L::UM:J[I)FKF8VDB'N87E!R44-G54IM4$9B75-M2#Y88UEU8%9O" + "5DQE?'*+?G2.@GB2>6^)9EQV3$)<4DAB7E%L5TIG3D5E14%C04!A2T9E341@3D)7" + "?&U`BGB'<UUIAV]\\I8V<L9FJHHN@=%UZ3#=75D)F8U1T:5]Y9EYV7U=O5T]H7EAS" + "9V%\\=G\"+EY&NF).P?7V@>7F<7%M\\:&2&FY6XC8:HBH.EB7^B<6J-4TQO6E1W=W&4" + "=W.7AH*FBXFOB8>M<6V.44UN<FZ0C8FKD8VQHIW$G9B_7UJ#,BQ1,2M0/SE>1T%D" + "44MN@GR?N++5P[W@NK/6M*[1LZ[/LZ_0KJK+L*_-KJW+HZ*`H*\"[G9VXE)6PD)&L" + "B8FDCHNG;FF&0#I7-S!0/SA80SE<4$5F2T!A.\"Y*4TEC44=@<F9[:E]Q95IKGY2C" + "LJ>VKZ2UI)BMFX^F=VF)3T%C2#QA5TQO4TAG6$YH/35.65!L54MD64]H@':/?7.," + "@WF3>&Z(7%)L03=1341@64]K3T5A1SY>0#Q@0#YB2$-D.3-./C))95AKAW:'?6=U" + "AV]\\HHJ9L)>KGH6;=%UX1S)21#!21C=723]93$1<54UF7E5Q85MV8%IU9%YY<FR'" + ">'.0?WVA?GR@5E1X8U^#G):]D8NRB8&I@GJB8ER!2D1I65-Z=6^6;FF0>G6<@H\"F" + "AH2J=G*34T]P='\"2BX>ID(RNG)B\\HI[\"9F*&.#180#Q>-S-524-F54]RH)N\\O;C9" + "KZK+P[S>O+77M;#1M*_0JZ?(KZO,JJG)H:\"`FIJUGI^ZFYRWDY>QAXBCAH.?8UY[" + ".S)0,BE),B=*,29)0S593#Y@/\"Y.6$YJ7E1N@7.)<F5X=6AZK:\"RLZ:XJ)NNIYFQ" + "GI\"J>&V,5DMN6$QS4$1I4$5D345>/C9/0SI62D%77%-IAGR5@7>0A'J3?W6/7E1N" + "/S5/1SY<5TYL4TAG1T!B0#Q@0#YB1D%B.S)..2U&6DQBAG.'C'6&D'B'IHZ?JY*F" + "EG^4=F)Z23930S)31CA834-=345>4DIC6U)P2D1=3DAC8%IU8%IU<FZ(?GV>?GR@" + "7UM_='\"4G9B_D(JQB8*L@'FC8%N\"2$-J5U)Y<FZ2;6F->G::A8&EBX>K?7R<5U9V" + "=724@H&AB8BICHVNHZ+#;VZ/4$QN55%S/#A:4$ML=&^0L:S-N[;7KZC(QK_?N[34" + "L*O,M*_0JZ?)JJ;(G9R]F):ZD9&LF)FTE)BRCY.MAH>BB(6A:F2!1CU;1#E:1#9:" + "0S-83#QA74UR44-E:EQ\\;V6!C'R5?6Z$B7J.MZB[LJ.VI)6IKIZWHI*M<VB)75%V" + "7U-Z3$!E44AH8%=S:%][85AT1CY465%GAGZ4@WN3?W>/BH*;<6F\"3$-?03Q;54QJ" + "5DUM349H14%E0S]C1#]@1#I61C=574UH?FM`CG>*F(\"1K92HJ)&FG86<@6^$4D)=" + "3T!>7%%P;F6!:6%Z6U)N5TYN4DQE65-L<FR'@GR7DX^I>766?7F::F:(BH:JGIJ^" + "BH6LAX*K?WJC;VV144]S6EA\\=725=G*4A8&BCHJKCXNLBHFI8F&!?WZ>AH6ECHVM" + "D9\"PL;#0AH6E9F*#8%Q]2$1E6E5VG9BYN+/2PKO;P[S<N[72KZC(I)^^L:S-K*C*" + "IJ+&EI*VD8^UEY>RFINVDI:PC9&KBHZHDI*M>7.05TYL7E!T:EI_;5V\":5=]=66*" + ":%A[<V6%;6-_C7V6@G.)E(69NZR_LJ.VI9:LMZ>`J)BSAWR=?W.8@G:==FJ/:V*\"" + ">7\",=VZ*9%MW1C]25DYDAW^5B8&9?'2,E(RE@GJ35$MG0SY=2D-C2T)B1T!C2$-J" + "14%E/C=9/C101#534T-?9%!H=E]TBW*&IHVAGH:=H(JBAG>*6$IB54AE95IY>W*." + "=FV):%]]8UE\\;FB!8EQU8EQUBX6@D8VG@GVFBX:M9V6)>WF=EI6U@H&A?7R:@8&<" + "='2/555P5E9Q:FJ%;&N)=722AH6CB8BF?'V88V1_>'F6BXRID9*QE96VIJ;)AH:I" + "75M_4$YR4E!T<G\"4K:G+N;77NK;8O[O=K:?*I9_\"H)J]I*#!J*3%HY^`FI:WDI&Q" + "D)2PF9VYCY.MB(RF@X>ABXJH=7*03DEJ34)E855\\;F&+:EZ%:EQ^95AU<&-`=6>'" + "AWF1@'\")G(VCN:>^P*[%KY^XM:6`J)JTAGN<EHJOG)\"W@W><<6:%=FV)9EUY65!L" + "0#A.7E9L@GJ0<FI`;F9\\>G**;V=`4DEE2$)?3$-C5$IM6U1W:F:(9F*$5E%P6E%O" + "?&Z(B7F2=&%V<5IMAV]`H8B<G(68EH\"5AW6,3CY73#Y895AS9UUY:V)^;&-_:F1_" + ";VF\"8UUV7UER=&Z'=G*,@'NB@GVD7UM_<W*3BXJJ?GV;?WZ<A86@<7&,6%AS6%=U" + "8V)`8F%_;FV+?GV;>GF9<7*/4E-P;F^,@8*A@8&BB8FJFYN^>GJ=3$IN/#I>5U9W" + "BHFJL*S.K:G+LJ[0N[?9J:3%HYZ_GYJ[GIJ[G9FZFI>UFI>UG)FWEI>TEYNUBX^I" + "A(BBA8:AD)\"KA8*@96\"!3$)E34-I4$5N3D)I5$EJ5TUI:EUZ<&*\"@G2,?FZ'HY2J" + "NZF`Q++)NZO$NJK%H9.MB7Z?C(\"EB'RC;F*':E]^<VN$<VN$;V:\":V-Y=6V#A7V3" + ";65[:V-Y?W>/?W>0;61`;VF&?'.3A'J=A7ZABH:HB86FAX*ACX:DK)ZXH)\"IB'6*" + ">F-VD'B)G866H(F<HXVBBWF064EB5DAB:5QW:%YZ9EUY9%MW8%IU54]H85MT;6=`" + ";&9_:F9`<&R0<6V16%1V<W*2C8RLBXJHCHVKC(VH=7229&.!962\":6B(9F6%>7B8" + "BHFI@8\"@=W:73DUN;FV.@8\"AAH2HDY&UG)J^>7>;2DEJ.CE:9F*$GYN]K:G*I*#!" + "KZK+M*_0J:3#HYZ]GIFXG)>VFI6TEI.OEY2PFYBTFINVFYVUE9>OC8^GC8^GE)2O" + "D(VK<FV.0SU@0#I?3D9N4$AN4$=G44=C:5][>G\",B'J2@G*+KZ\"VNZF`NZF`N*C!" + "OZ_*K9ZZD8:GC8*ECH*I@'29CX2CE(REFI*KFI&M?G:,AGZ4G)2JCH:<C(2:E8VE" + "CX>@?G61A7^<C(.CB7^BB(&DBX>ID8VNE(^NDHFGF8NE?FZ':59K:%%DC'2%KI:G" + "J9*EI(ZCD7^69E=M74]I9EET9UUY9EUY:%][9V%\\5$YG9F!Y>'*+<&J#<V^)9F*$" + ":&2&5E)T<&^/D(^OG)NYG9Z[CY\"M>'F8:VR+<&^/=725<W*3AH6FF)>XCXZO?WVC" + "44]U9F2*=7.9AX6KDY&UBXFM:6>+3$AJ1T-E<6V.GIJ[I)^`HYZ]JJ7$I)^^JJ3!" + "HIRYG):SG)>TG9FSFI:PDX^ICHJDD)\"GDY.JDI*IB8F@@H*;A86@B(6C;VN,.SI;" + ".#183TIS6%)W3TAH3$-?:5]YA'J6DX6=@W.,M*2]O*K!MZ6^L:&ZO:W(LJ._C(&@" + "AWR?D(2IBW^DHI>VEHZGF)\"IEHVIBX.9C86;GY>MC86;@'B.?'2,=6V&;&-_9F!]" + "9EU]7%)U8EM^9F*$<6V.=W*/<VJ&9%9P;E]U=6)V>&%T>V-TJI*CI(V@I(^AD7^4" + ";E]U7U%I851O:5][:%][;&-_;6>\"95]X8EQU:6-\\<FR%@7V7<6N.;&>(55%R8%Q]" + "@H&AEYBWGI^^A8:E:FJ+75U^:6F*>'::=W69@7^CCHJNA8&E=&^83$=P3DER4$MR" + ";&>.<6V17EI^2D9J-3%31$!A<VZ/H)NZIZ+!I:\"]I)Z[G9>RHYVXG9>RFY6NGIBQ" + "H)JSFY>OCXNBAH*9CHRBDI\"FCXVCA(*8=W6,@G^9CXZL@H&A3DYO-C9;1$)J44MP" + "44IJ44EB;6-]C(*>C7^9@'\")MJ:_O:O$P*['NJK%MZ?#F8JF8E=V7U1W:EZ#:E^\"" + "B'V<>G*+A7V6BX*>@GJ0>W.)A'R2<&A^85EO7E9N7%1M6$]K6%)O6E%Q4TEL4TQO" + "0CY?0C]=1T-=4$AA7U%I>VR\"FH>;E'V.?F9WHXN<I8ZAHXZ@BWJ-<F-W8%)J7E)K" + ";6-_9%MW8UIV8EQW;FB!8EQU7UER=G\")@GZ8>G27;VF,5E)T44UO>7B9CHZOE96V" + "='>75E9Y2DIM7EZ!>7>=>7>=>W:=@'NB=W*;9%^)1D%K/#=@-3!944QS4$QP14%C" + "/SM=.C56/#=83TII9F%`7EAU65-N8EQW<VV&A'R4AGZ6B(\"8B82;B(.:@WZ3?7B-" + ">'.(@7Z0B8:8AX26?GN/:65\\?7J4CXZLAX:F8&.%04%F2$9N4DYR65)R7%1M=FR&" + "G9\"K=FB\"@G*-O:W&NZG\"P:_(O:W(MJ;\"A'617E-R75)U7U-X6$UP;V6!7%1L:V-[" + "=FZ'9U]U8UMQ=&R\":V-Y:&!V:6%Y8UMT6E%M8%IW9EU]9UU`95Y`44UN5%%O5%!J" + ":V-\\<F1\\<V1ZDX\"4CG>(CW>&IHZ?M9ZOHXZ@BWJ-=F=[74]E5DIC:V%[7E5Q7U9R" + "85MV;&9_;6=`;FB!?GB1?7F3"; diff --git a/src/lib/ll.c b/src/lib/ll.c index 6d96f45..7f1a47e 100644 --- a/src/lib/ll.c +++ b/src/lib/ll.c @@ -1,7 +1,7 @@ #include "../lib/ll.h" #include "../lib/mem.h" -struct LL* new(void* val) +struct LL* new_ll(void* val) { struct LL* ll = (struct LL*)malloc(sizeof(struct LL)); ll->prev = ll; @@ -10,7 +10,7 @@ struct LL* new(void* val) return ll; } -void push(struct LL* l, void* val) +void push_ll(struct LL* l, void* val) { struct LL* ll = (struct LL*)malloc(sizeof(struct LL)); ll->prev = l->prev; @@ -20,7 +20,7 @@ void push(struct LL* l, void* val) ll->data = val; } -void remove(struct LL* l, unsigned long idx) +void remove_ll(struct LL* l, unsigned long idx) { struct LL* t = l; for(unsigned long i = 0; i < idx; i++) { diff --git a/src/lib/ll.h b/src/lib/ll.h index 4a11620..ab4148d 100644 --- a/src/lib/ll.h +++ b/src/lib/ll.h @@ -7,11 +7,11 @@ struct LL { void* data; }; -struct LL* new(void* val); -void push(struct LL* l, void* val); -void remove(struct LL* l, unsigned long idx); +struct LL* new_ll(void* val); +void push_ll(struct LL* l, void* val); +void remove_ll(struct LL* l, unsigned long idx); -#define showl(L, TYPE) { \ +#define show_ll(L, TYPE) { \ struct LL* t = L; \ do { \ uart_hex(*(TYPE*)t->data); \ diff --git a/src/lib/mem.c b/src/lib/mem.c index d738305..2b495ef 100644 --- a/src/lib/mem.c +++ b/src/lib/mem.c @@ -73,6 +73,7 @@ void* malloca(unsigned char size, unsigned char amnt) unsigned long diff = (unsigned long)mem + i + 2; diff %= amnt; diff = amnt - diff; + diff %= amnt; if((mem[i] == size) && mem[i+1]==0) { if(diff == 0) { mem[i] = size; @@ -90,7 +91,6 @@ void* malloca(unsigned char size, unsigned char amnt) diff += amnt; } mem[i] = diff-2; - mem[i+1] = 0; i += diff; mem[i] = size; mem[i+1] = 1; @@ -116,6 +116,11 @@ void free(void* memloc) for(unsigned int i = 0; i < size; i++) { base[i+2] = 0; } + // If it is the last entry, clear it and move the heap top down + if (base + size + 2 == rpi_heap_top) { + base[0] = 0; + rpi_heap_top = base; + } } void* heap_base(void) diff --git a/src/lib/q.c b/src/lib/q.c index 494c712..1f5a871 100644 --- a/src/lib/q.c +++ b/src/lib/q.c @@ -1,7 +1,7 @@ #include "../lib/q.h" #include "../lib/mem.h" -struct Q_base* newq() +struct Q_base* new_q() { struct Q_base* q = (struct Q_base*)malloc(sizeof(struct Q_base)); q->next = 0; @@ -9,7 +9,7 @@ struct Q_base* newq() return q; } -void pushq(struct Q_base* qb, void* val) +void push_q(struct Q_base* qb, void* val) { struct Q* n = (struct Q*)malloc(sizeof(struct Q)); n->next = 0; @@ -22,7 +22,7 @@ void pushq(struct Q_base* qb, void* val) qb->last = n; } -void popq(struct Q_base* qb) +void pop_q(struct Q_base* qb) { if (qb->next == 0) return; diff --git a/src/lib/q.h b/src/lib/q.h index 51ff1a1..cf75c6d 100644 --- a/src/lib/q.h +++ b/src/lib/q.h @@ -11,11 +11,11 @@ struct Q { void* data; }; -struct Q_base* newq(); -void pushq(struct Q_base* qb, void* val); -void popq(struct Q_base* qb); +struct Q_base* new_q(); +void push_q(struct Q_base* qb, void* val); +void pop_q(struct Q_base* qb); -#define showq(QQ, TYPE) { \ +#define show_q(QQ, TYPE) { \ if (QQ->next != 0) { \ struct Q* t = QQ->next; \ while (t->next != 0) { \ diff --git a/src/sys/core.c b/src/sys/core.c index 37cd6a5..97a77c0 100644 --- a/src/sys/core.c +++ b/src/sys/core.c @@ -13,6 +13,7 @@ #include "../util/status.h" #include "../util/time.h" +#define SYS_CORE_C #ifndef VERSION char* os_info_v = "?"; #else diff --git a/src/sys/core.h b/src/sys/core.h index fa9e1b5..9e25f9d 100644 --- a/src/sys/core.h +++ b/src/sys/core.h @@ -1,6 +1,10 @@ #ifndef SYS_CORE_H #define SYS_CORE_H +#ifndef SYS_CORE_C +extern char* os_info_v; +#endif + extern unsigned long cntfrq; static inline unsigned long load32(unsigned long addr) @@ -41,6 +45,13 @@ static inline void setsp(void* in) asm volatile ("mov sp, %0" :: "r"(in)); } +static inline void* heap_end(void) +{ + unsigned long value; + asm volatile ("ldr %0, =__bss_end": "=r"(value)); + return (void*)value; +} + enum { // The offset for the MMIO area diff --git a/src/sys/kernel.S b/src/sys/kernel.S index a691ebf..e0333ca 100644 --- a/src/sys/kernel.S +++ b/src/sys/kernel.S @@ -2,12 +2,10 @@ .globl kernel_main kernel_main: - push {lr} bl sysinit kernel_main.loop: wfe b kernel_main.loop - pop {lr} .section ".data" .globl cntfrq @@ -19,3 +17,7 @@ cmdidx: .globl cmd cmd: .space 2049 + +.section ".bss.heap" +mheap: + .space 0x100000 diff --git a/src/sys/kernel.h b/src/sys/kernel.h new file mode 100644 index 0000000..e724513 --- /dev/null +++ b/src/sys/kernel.h @@ -0,0 +1,8 @@ +#ifndef SYS_KERNEL_H +#define SYS_KERNEL_H + +extern unsigned long cntfrq; +extern unsigned long cmdidx; +extern char cmd[2048]; + +#endif diff --git a/src/sys/timer.c b/src/sys/timer.c index 9419f80..3753561 100644 --- a/src/sys/timer.c +++ b/src/sys/timer.c @@ -9,8 +9,6 @@ /// Cycles Per Second #define CPS 10 -extern char* os_info_v; - #define SYS_TIMER_C static unsigned long exe_cnt = 0; struct Mutex exe_cnt_m = {.addr = &exe_cnt, .pid = NULL_PID}; diff --git a/src/util/status.c b/src/util/status.c index bd529da..6ab21c0 100644 --- a/src/util/status.c +++ b/src/util/status.c @@ -6,8 +6,6 @@ #include "../util/status.h" #include "../util/time.h" -extern char* os_info_v; - void output_irq_status(void) { // Basic IRQ diff --git a/src/util/time.h b/src/util/time.h index 13875e2..f6dacb0 100644 --- a/src/util/time.h +++ b/src/util/time.h @@ -9,7 +9,8 @@ unsigned long read_cntv_tval(void); void write_cntv_tval(unsigned long val); unsigned long read_cntfrq(void); -static inline void enablecntv(void) { +static inline void enablecntv(void) +{ unsigned long cntv_ctl; cntv_ctl = 1; asm volatile ("mcr p15, 0, %0, c14, c3, 1" :: "r"(cntv_ctl) ); // write CNTV_CTL |