From 7f0d3918584e81ad8283ef574753c23262ad693a Mon Sep 17 00:00:00 2001 From: xmm15 Date: Sun, 16 Feb 2020 12:37:19 -0600 Subject: [PATCH] Add PIC defines --- README.md | 1 - src/0000Boot/0000Kernel.BIN.C | Bin 188912 -> 188912 bytes src/Compiler/Compiler.BIN | Bin 194048 -> 194048 bytes src/Doc/Comm.CC | 6 +- src/Kernel.BIN.C | Bin 188832 -> 188832 bytes src/Kernel/KInterrupts.CC | 26 +- src/Kernel/KMisc.CC | 6 +- src/Kernel/Kernel.MAP | 3109 +++++++++++++++--------------- src/Kernel/KernelA.HH | 12 +- src/Kernel/SerialDev/Keyboard.CC | 4 +- src/Kernel/SerialDev/Mouse.CC | 8 +- src/Tmp/MyDistro.iso | Bin 38926336 -> 38926336 bytes 12 files changed, 1592 insertions(+), 1580 deletions(-) diff --git a/README.md b/README.md index ddf73c43..23a532cf 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,6 @@ Changes include: - Fwd -> Forward - Glbls -> Globals - Hndlr -> Handler - - Ints -> Interrupts - Lst -> List - Ms -> Mouse - Msg -> Message diff --git a/src/0000Boot/0000Kernel.BIN.C b/src/0000Boot/0000Kernel.BIN.C index d5616dae08622f4427c502838694806eaa0fd494..530183b351e9276f9a02999b9999a717d90694d2 100755 GIT binary patch delta 370 zcmexxnES(F?g=LBUY$j4+D_b?7qVPr-ps=?KZUaM76}^`}Km8 zcQnQ^=TvHLmTY2TgeYL#wmGLcNuF76I^*Vxi|mXT=S~*5TESMFs^Asc2drw-}nHV%Tr@T>QX0+Yh_Wm0Sqvqz?FLC_L3=9n0?=dqzWMK!gKw$eZ4#s)R zj11dTc^K0T7>l-_wPBPO0Mc)L80E!*G;a#yGhwE;CELH2Gj11QUI+Ei_G3MaycTd% zZXIEaWMWjJ=NP}5Fy?PR%*?cij}2;Jwh&X9CF9cVkGz@I s@J`-jDYAW0B$Jjb3)nRm%9y6|O|NfYl-}OZ$~2Lk@#uD;UZ#5?0G@e(F#rGn delta 378 zcmexxnES(F?g=LBTn82FwVk*(FJ!sMyqSk(eiY-{&1>S+SQ+DF8uv#`a?z zjPsZot+%K0Fs2(YhHgJ=!zeERq~H25%8LVO-W0}X!c0P?+rO4GZWm!*3-#6ZV?B(# z7VH_;;hA}E`P*+DVT@#AWZrIaoUxvrNvC8wpA@6S_Os_0znU;IY(LD*w1|%_z%#^1 zr(k=w5L1~YW9Rlq-b`zFng0LZJ|U9HMwSKSob4CNn5ObE=cmL^S14f;+g{hoG?|@o L^>(3Nrh6d(j!%Qo diff --git a/src/Compiler/Compiler.BIN b/src/Compiler/Compiler.BIN index 5721cf9ebb35158b7050b5a22001e055d962c315..663ca183e6f2c0ef73c26be7bd36df3882549cb9 100755 GIT binary patch delta 70 zcmZp8!`<+Pd&B3ctiGwa&iR{vOr7q}*fDv+)A_8$C7KL+lTDtvuz(nwYo4`aFzRe) Z^k>XxWR%-p7{FNYpRsWJBY!5jWdJnc93ub# delta 70 zcmZp8!`<+Pd&B3c(;3wmWj6CqYw%~xnLOd?d`5=p1)_{1lU<&furL6@=9*_M8H@tk a8T}da85xYz6ZW#cmV;K7Y diff --git a/src/Doc/Comm.CC b/src/Doc/Comm.CC index 46971ff7..ba436ea6 100755 --- a/src/Doc/Comm.CC +++ b/src/Doc/Comm.CC @@ -46,14 +46,14 @@ interrupt U0 IRQComm3() { CommHandler(2); CommHandler(4); - OutU8(0x20,0x20); + OutU8(PIC1,PIC_EOI); } interrupt U0 IRQComm4() { CommHandler(1); CommHandler(3); - OutU8(0x20,0x20); + OutU8(PIC1,PIC_EOI); } U0 CommInit() @@ -93,7 +93,7 @@ public CComm *CommInit8n1(I64 port,I64 baud) OutU8(c->base+UART_MCR,4); OutU8(c->base+UART_IER,0); //Disable all IRQ OutU8(c->base+UART_MCR,0xA); //out2 and rts - OutU8(0x21,InU8(0x21) & (0xFF-0x18)); //Enable 8259 IRQ 3 & 4 + OutU8(PIC1_DATA,InU8(PIC1_DATA) & (0xFF-0x18));//Enable 8259 IRQ 3 & 4 OutU8(c->base+UART_IER,1); //RX but no THR empty POPFD diff --git a/src/Kernel.BIN.C b/src/Kernel.BIN.C index 78d2a1857e5e9bf9b833940548cd1cafdd3d2a32..0383fda41fec2b4c589f41257a2e842a267259a2 100755 GIT binary patch delta 433 zcmZ2*n0vut?g=LBrhjtVw4Jy&FJ!sMyqSk(eiY-{&1>S+SeYU>Z@!YeK$LOW=F-ab z%#52S2ObmMY*nks#1gQ3D&zEkEJpFoW%ap?ECzd~GEUBKQk=}uXv{3LdirF$Mqif6 z>mh0+Cf~0YoV=sanw(R16q(H!tS6_wQ3mol z->hd`KiTrFJ>$mBm2Y{NfY!9Vx0GbpakN!(^R(K2jDxX=iM4zxBLlMJ)Cv88h#dJ-9NqOt`+1^Zgj!ZIB Lwx8}{x*7rie4v`h delta 435 zcmZ2*n0vut?g=LBfji{twVk*(FJ!sMyqSk(eiY-%&1>S+SebsV+k7Q?fhgmm&83y= znHkql4m>8h*{W8NiRI(Asf^PDvKYlTm(}MovYgpIm2q-@lj3BKMq_5L>r*G&HTtsX zuZF0Rn0&upaPp2uYj%a4#Nra$g2}%cWhT2dh)&jS`T$eSbY{`!+~%2bjN2!(FFMW^ z6zmxv;<)+BB5NZi@&3tzSIgO4BDgpMLO1ta_2FkJ&epZteD6sTJLBfbj&Bs185kHQ zr@m1J@;cwFXIwqm@~u7Nn$4AOd6*a#Hn+XElw^0#FU>1aDBgaIgRzK-wRkEc1H<&f z&5UB(gSi<685ym&r}8kS8!&Y)+J4T4QBDBFc;~|?Ck|rpr7%7fW;$EE{cAbnb`j>4 zP_J)4*2AcwK3T7lW3tl;iS2w_7*&OtY&L8+J Wv|;;fZzerQrak@JPxmlg4FLc!E2Fyr diff --git a/src/Kernel/KInterrupts.CC b/src/Kernel/KInterrupts.CC index 459f7f1b..5b486cb4 100755 --- a/src/Kernel/KInterrupts.CC +++ b/src/Kernel/KInterrupts.CC @@ -128,23 +128,23 @@ U8 *IntEntrySet(I64 irq,U0 (*fp_new_handler)(),I64 type=IDTET_IRQ,I64 dpl=0) U0 IntsInit() {//Init 8259 - OutU8(0x20,0x11); //IW1 - OutU8(0xA0,0x11); //IW1 - OutU8(0x21,0x20); //IW2 - OutU8(0xA1,0x28); //IW2 - OutU8(0x21,0x04); //IW3 - OutU8(0xA1,0x02); //IW3 - OutU8(0x21,0x0D); //IW4 - OutU8(0xA1,0x09); //IW4 - OutU8(0x21,0xFA); //Mask all but IRQ0 (timer) and IRQ2 Cascade. - OutU8(0xA1,0xFF); + OutU8(PIC1,0x11); //IW1 + OutU8(PIC2,0x11); //IW1 + OutU8(PIC1_DATA,0x20); //IW2 + OutU8(PIC2_DATA,0x28); //IW2 + OutU8(PIC1_DATA,0x04); //IW3 + OutU8(PIC2_DATA,0x02); //IW3 + OutU8(PIC1_DATA,0x0D); //IW4 + OutU8(PIC2_DATA,0x09); //IW4 + OutU8(PIC1_DATA,0xFA); //Mask all but IRQ0 (timer) and IRQ2 Cascade. + OutU8(PIC2_DATA,0xFF); } interrupt U0 IntNop() {//Make unplanned IRQs stop by all means! - OutU8(0xA0,0x20); - OutU8(0x20,0x20); - *(dev.uncached_alias+LAPIC_EOI)(U32 *)=0; + OutU8(PIC2,PIC_EOI); + OutU8(PIC1,PIC_EOI); + *(dev.uncached_alias + LAPIC_EOI)(U32 *) = 0; } interrupt U0 IntDivZero() diff --git a/src/Kernel/KMisc.CC b/src/Kernel/KMisc.CC index 3842249c..5a44b26c 100755 --- a/src/Kernel/KMisc.CC +++ b/src/Kernel/KMisc.CC @@ -55,11 +55,11 @@ U0 IntCore0TimerHandler(CTask *) LBtr(&sys_semas[SEMA_SYS_TIMER],0); for (i=1;icatch_except=TRUE; } IntEntrySet(0x21,&IRQKbd); - OutU8(0x21,InU8(0x21)&~2); + OutU8(PIC1_DATA,InU8(PIC1_DATA)&~2); } U0 KbdHandler() diff --git a/src/Kernel/SerialDev/Mouse.CC b/src/Kernel/SerialDev/Mouse.CC index 6e8da827..33da33ac 100755 --- a/src/Kernel/SerialDev/Mouse.CC +++ b/src/Kernel/SerialDev/Mouse.CC @@ -90,8 +90,8 @@ U0 MouseHardPacketRead() interrupt U0 IRQMouseHard() { CLD - OutU8(0xA0,0x20); - OutU8(0x20,0x20); + OutU8(PIC2,PIC_EOI); + OutU8(PIC1,PIC_EOI); mouse_hard.irqs_working=TRUE; if (mouse_hard.install_in_progress || !mouse_hard.installed) { kbd.reset=TRUE; @@ -296,13 +296,13 @@ Bool MouseHardDriverInstall(I64 dummy=0) //can be spawned no_warn dummy; I64 i; mouse_hard.install_in_progress=TRUE; - OutU8(0xA1,InU8(0xA1)|0x10); + OutU8(PIC2_DATA,InU8(PIC2_DATA)|0x10); mouse_hard.installed=mouse_hard.irqs_working=FALSE; IntEntrySet(0x2C,&IRQMouseHard); for(i=0;i<5;i++) mouse_hard.bttns[i]=0; if (i=MouseHardReset) - OutU8(0xA1,InU8(0xA1)&~0x10); + OutU8(PIC2_DATA,InU8(PIC2_DATA)&~0x10); KbdMouseReset; mouse_hard.install_attempts++; mouse_hard.installed=mouse_hard.event=i; diff --git a/src/Tmp/MyDistro.iso b/src/Tmp/MyDistro.iso index f79badb8f552d64453d86d97d63f473107366917..32577910045b56882d9f7d1af9929f58797b52b9 100755 GIT binary patch delta 21307 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 delta 21351 zcmaL92Ur!y_dcF`0g;Z1h}gi6pxj;r8(@c>v3IfeUSi3OVu=`g-{(2+uCueVXU?29XZMov^jN_R(58x;d?!s^6jV7W zV6*O=ZtL64Rm*!vDdk7cPW(AB@5J@t#Qovq^@o$h%OCpSLxG4CC_vvedI=!?+j>AD;mG%~Odwd$ao52?5Jz+<^S1dYSB(Qz3zP{-6FM5XI-aKUZ3H@`LVj{CfyJU z-L4y+4-MQlZM!Ztgnn$R3sxT-){XSl+dfmfoYqBq(ND=E}6fd(K{a&Js^~CHk^{LK|l4#$=uLa%lWe;_3GTsIJpq?ymo7 zGm^UOw(MpIlH~VfozYpEQzdNWQ#@s_r5ATwd=l4}ag7=^CC-bq)7* z`+ahs>Kg0oZuFnVAAH?4{?izi-(BdF#!Oem{Hm*>pL^9O7s!?4_ko`rKMy}Yd}wt2 z;O9Q@$vvto%ikUFpT_0>?u}Zb$LPt`I3UmdRCnV5cYe(jRacvUVOgXb8(3To`6D1h z==#u%T7gSw{Ezx@s+|;Q_SWpel@vI>hb~mrtqtt2gH{e)7dYUZZcyegYlA?+pb$_f zr~s%Ss1PU&R2USl{<5~n%U026duQo*xQTtWV_H(P!BPDG_y6jJtGPZA)xAIE+dtxi zHhRupd(ILAK3sKq&fI*)zKdRa&JqJZw7EQIZqM0k&sk!Sr=RD{?Kyk>;Y>{oj(Gh+ zFCsiFd^l6x5fPsCEB^j+rmJ`asHo~H9_jA=e#ty{xF$xrtNo|(XrvqV3*(@~k3H{3 zx_f@oNG_$=2h~xExjt~#@_l2bt7S1zaZm|RNl+08dL^U7E}&Y9#jET5flTe z1d0X4sjill-CyR(R%3{zoay?pGN_8``Z3-;=97!K!{9FWpTPZ~2_DMpY9WCmGOSBlkr{gY0rtF+A>{h!7Zo7?$GW2S4A4P*y7 zKu%CqPy#3sR1H*Jb&aaw_R? zViKsvk{S`TaY+r6pQlxQyrjnOUQzhJF|K~UW{!${786xI3MX~yR5lDZI$~lH{8XQn zHD>F*0=xp2Y@XIgA4xSY7tKeZT}ykbn;w>l(M5lMbgpJ(-A-ypHnPw>W;D$BEHigi z4Ny%`El`r0yDGW**iUCsDJ9Q@RClEmm+rlA;yyIG;!@m?|L-lTE3!5m5zF9T!YE(+ zy(PLmXRkk;sfiV8Tf75H7RqDqn%^&Bsw=j(MHkqxcwSS8sp%-y9anpsSKzdM+N?gy zx_|3Sav5rG3-lY!Vf?etIHjOOW9`@PnKZqBWTwkh8&pSind-X5Cl}$u>$>}X(nzkS zbuED}4S5fL*uAQr+)wLn3mIKDuVvYu@%p?Vwd0Sv^<)0EcFl^_d!h^eziX$qDN*k` zAG&Re9yc?zeRPzbv>8;%JMy~tV%Und{95~iAT_s4y`Y#9hT*k7s0lI(F?2|tD&)1P zmD1{MFNg=#@+e6yBfU(ox8;*I^+1PuQNA-n3s%TDkf#r;)!F=fJhz|r+&}JWPWVAk z-rOiU)fSZ*)uWyo)uaCJ8%Dp^OQSI+Au2w;ehcHjn9&&ge_ny^@{RBBG5z}KUVdQYLGqXqXN)|Sq-c@AN9_x22naZ zz+_N;=QOxbq|9e6@A~Ggd&)ac&|`ay_%84N55h8Y*EUdd*EZa9o=Qzl%}-gQQj4hT zMx_Sj)A?lX8lS4}8lM(bV`k{3(gpi!OWCsgoex9xTN;R=W>~fM`~^Q#UmZ%TwnJwm z=SU@9Z!%G@kxC!E)vEqHQYoejGL|muUpBR2Ta#V-|;&OmLxRE#)G{Zjcyk2@!hQWAAW^~fkCNayb` ze;A+oPfm@XR+E%Mv?)ad1Q_ift~8-W8A=S*$xt?c&F2|PHyoy&77;Y6fh_A~wL56x z7{y3ur-6$f$0%mK(M|zlm2c5)%UH#!H<{`2SjFz+uwY0!|9j0slsHa_)ElhSa-0%N zeZP?Y>eO*cjE;6K6ajQ#yb?!e{>DsRj#pY?lty1EMlXlcL|=WSSo8)H?dGGyPS3tl z%yUPgW0eU?yqDc+rw$X8u6nDDj!nRWEl$#BDt#!n1~?m@sZ`e6P3o#l#i^rS|0w?S zaH2vwD~-9L6ejvwDW^ABXz$m`6TQPh8zw0Zz12YvaHM_;2B8rO{Y5rui#J5Dt z)yYa*z0FL{DQF4#S`?tMQ>9qybY9YfYoZty*4nvzacUgM^$ z(;}3zx2O41>)En|x5;X^lXW^&!{MZE)0KXDvx9z|u2><&z!^$M%C+LAVKcCtRqZms zE2Vy8I(J7Y<7Ktj>4zD3jL}B zOc}G#6HnSUOR0ic-_(zEe|y_axy;*b(R9cC+0yxL=DD?fM{aAT`E${%{O zjnd{S)%0d7O_{5hsNWg%KR#FKilM4xDYGeiw-Vr0yGtr{tSbuB=muc@NtTkJcUUNv zlrF6PGfAngH(BXCDJCzg(@Oc~L7vrLD1KCTo)Qye@T@`Ors-5*s)+J7S{+teHV>k8 zm?>wTVy9a#@ZbXTl~&Lo8}*$J-Ljf#g?2R2<@t)8nJ>6N8B340qigm8r6O9?;|r8} zI(qjtmMU_QQWGJp;)Qab2OHY&SVF`z@U#r#}5jb9AD%_cg$ zSQ$Zm@?mCmvth{97Gtc@*;qfjRo#>gUD6xubbSdLtS0IZEF!7*1yPpbZi9{HOO<9& zXj;EinTw&5mnq-!e;+La4_LnF<;pzDpD6?B$a1B;mj&kYWVw<+qsQSH|CEE?B(G2^ z;l_R|lx~`J{j>thX|qtkO2tN%KL=9{S1JZ>`EsRlSZ{Yy@;Ax?y~RW~zd<{W1-?~Y z)46RJu*fQHiz92K)fhM|?Kr*aXDzU?CyI!$? zc?Zp24+*^Mj|UHF9T`eN^F=gyZNQ_^DRF~RnKqonV+LA59x^gRKWwg-ht*ky~x{M=L^cKMszD+5M;S#pN#hIPz&}~W`9aY_cdyZ^ZDp2Sh zn9uX=kl~vdu>MLr(6)fDw&AnBr@+^g9eKWD{|?M#!+9u^x2lw9wTn}gcC=?Bde2ss zDjd)bsY++P)lL<6Dsh2^4@*(6e_vWQU4&D{IwhFmuZw&%X{U09U2eBsN)BDyj3H`% z&x4w&$M?#7KhLf7_;K9`x{)JF20KiS4+FA+-)x3o-E8iudk~on^!Xl+C}!HcN3pR@ z{K`jg8@(6eMG$Db7m?5Aq|CiaHdW5Tpz-^#xaiq(ANR1**ZUyS{k{E#hsGFQ*_c3{y*Yy^m#0g^9`oZ?!59Rn|R|3h+pyLg}=U5Q<`~CgwZV> zE^oY`^rNeb;n*r(RLavN8z$58qS6lB?6`=zm@Mj}i%MZ#u*2zbQFWj&1xCqeioc|^ zWBru_39@gkdFSWT+o~BwBWMxKdLfO1X17wfi(7t5>1OIg2@9{lvrxe z5DWi;&k~wRf1k#w-O|%&%m7i6l&eZN_S-wIBJLaM-c`lQIal#(kPjp(u7P7@g=4NM zH>uJ(jMwYB5~DYmY3_BzCP?zsb!A9FqtoNR(^JgpO`0Xq?O;)a_U{)y)b|EQ9xE-m zfq34oAI9iBvq2=ix}hi(`Yk5X_@>gGTmv~a+*B&k$B za1SlI+e#dGt#TWy-GOSx-x6V65YJlvtMh^E-+i3sLzl3aJo&kU^ez<1Spj$w5K) za71)Yya(+=emvwJ?tydOa8EHKHk;}0Jro9nKUL8LrU%F!3Aq@U_~ z0_h>_;PRf|l}s#7?WfAZP`hWudQFF<*J(z^3ra~Z8yr)CXGp+}4$622`%7H|CExpu znB`PB87N>l0?53iE=H&h7=+52y$5-!=j%d{QH4d zN_?>0vnfPOZA>*?(4PLt#p$ohHAATyryi5$g13&Zl_4B3etNC+qQy55hQu2z?n#FX zrSWf+GW6DgUYp+_53T+J+%$cw>}DG%@J@;MHaan>ly}NISjXJj!br$q#I13(|=NC54i>KumyV#oR`w0`8U4CF0TC&kkti+R=`V06+ zJ5BZnr+ar`xU>GEHH|upM;QY|C5n>J)gA$&9Q*3&0eEQI5Xj3GDBKi~B!aVoL^(=K zg8sz^iAs92o!SHmBr-Odt{ts(h>tcqy$lj&AG@|wi?-JYC$)$uO6`M1b@s>E!NN#2 zpWykIgT->@GX#9X9d8T~z1Rwhg$ffzF@r5aMI2pUgeOkrvv(2;d5F()9)YpkQ1LCE zrY7mGD<(q$rJ%E$WbBqK95@EKM1Y5n%r) zA)e}t>Yb88r=xZ;;O|K(fpp7CMWV!JNc}{VFnDuTPBj)Km84?PA`(|sd$jP?VeU0b zi)FNqBg4beB8Fud`a6b=DI;127@Zy;L{-X)Qq&<@c+k$?xbF9-2nI{{ASmlG9e{!M`mwmF?Gd?jOCdBlXB22XrQsY7{l`3R$dHb zucJLVp@L`@_%W+VPN7ZpkoOIkiVe!13Ze~_EDO<>shFp6Z7PbYJQP(FRoF_7RTRih z?WB(p{rx>fqmFdoJ|e~R7|{n)ejNktG*Emcv4S47M$Z0AC8!)G;1|pKir^G0zD0*S z_^*#yE7mMyC5n#|Q#iBT6NhC-+R(MKI6&U`#NbB8+Z#c(jqva+-!kYX}uFqcxn-q z>B)FF;%s;pq}WzFI%tYbV|I^Cpaf^9Si6`=ecy-@lw-$IBgD6I zhhcRb4#Gh<&nNE?-NnwSmq947hiz`d23S)rD<3k%##z9$_o>mogIEi&6V1$#0 z(QjaasGu{b^Akj{j?HsTBG#pn3b8h?Cd$z66e$0=YOLNjyFjkfs$)7+PUFTi)kS+w z@+;SX(W5@pk&p0%b8A2WOOAx1ovR_bU}#HC(F>;Ipry4$Rcgq&1h&r2gNRloK`Ak@$Yf!ohG%h4>tsj?>MWeDc&VN*Wag}wb zO#>_|T-2)uaAJ^PTthLGx9%$%!j~IObfqCAfT-k`im6{aAPSI@3iku;9EKJ)?)9mH z%er0C&|&W(MeE>8o6aM-6S0)m)s%ianu?CPActpJ>ou)I zOPe7kJ-i9$w1m%!-NL}?|(bZ6zv07?qu{g6w81FD=~P>A+`lJo%xw!P z!hM!&m*-kqwiENc*?rPzW4%ZUX)lUl4P)C2N8ra&Vsa{8;VJJclGED5evGuQy_ipD z_Q3W!rfZX%o-R5D{i}%Hvpda1B1^?Oh#{E!j1CYDeCd%6;t?zTmX4SKa+k19Vj*V| zn>z{47mIX;h!COcc81!4&rzL)Dfr`(q4?93YRr`7^cDk!cY)VJG#%eXbmqFtuU!P! zeM@x}CQl;WvdI&xZ^!UY0e{m>minKo-(zkxI$I9 zk~OfGz@EuQ*}b3}Fpr#GP_C!#5Yjp>L?l?yTYN{=`lF-L2a7YUD`wxJ|AeUXC9j)}!0M6AUxF|YMbfW61D4SK5*iz3J zD9U5~)PYzS-1k52Xrdy6M0`GEJ*+xQjj7>87qCBBS_!`9%Rva$(BNHz#C|%H3LeG{ z76u=i*7tf=WCZ05MqRIJVO;rZu!zB$l^mjlL^(vP;gI-hh%lfwZ9+93dBB&gA(2@_ zwH}9uYTo<#P$XiA?4OHOY*0Ucj`Z^BI7}~bm_Vr-?*fJi>{Qk4VZx!KO=Gdpw}y){ zsQTI{-v|VK>`X?8YOIjIjetK6-iUiEjD#^x4+K{&N5a{`VPuZXGq2qvMOBTTzemDl zV>jF93lWRK9JJsIp{4c~I`aht1jTvt1+q3c(C#iRNh&o8In7QNT(rfcUUrEPosU(^ zG=kT{ckdjn6!mgi4TNqMY%;)SyHN;Op$l*}eh6M1EgdC_YHxr>!R>9xM)RMe1gbW8 ziBca?w)bdJk@_|Q_lrl1INofW8m(D@Ej9qkuq3kBkLH< z&*4yejzMUIJZFs+Jz4&5#)|Iz&~D>IY>30@d8d%xSTv)VmoOtOz1urZaP{_&apEk! z-7EdQ>NKlEx~~ux90qzZUYLBe-7?*@)ht3(1}+;(fgiR0N+i%J*3BhfiF9NFSrfGU z#Xdm{pxlXQ-#kHED?9x(0s4$OO2JI@FjDqJ2He^F5LXNk3A)Q(^QA-1_Ohl*V5=I;KH7-q-FvZ4Si)ZXEYfloLDQz)Y zwoc+Cg|1E#b}uLVXZU0>(3>}~v_G&|5gOhccCqvx-f1Dx-#c0K#Y-3qRha@m4~_3W z1;G=}Y~B=673^M|B6iYgA53WOR8bBMyQhk7!I~@5N);k4T_NLIrKGnJ1u<$g4VnY# z@16!`GMeDFiqnOG0#0KNou?ySI}rosP8VNdq(U=920ek+dZo$wH1HHM`3{d^fCpwk ztF88|nZo4n*>=~b^Iu?V-*%>0MQ<~tpB}k3Dk|8$&k{Q*HWlXec$TOT=t-lKQ_S>i zgHlqhJ{$JKS!M(G(p+(s)^`E31F{fg;E)$) z!HnREqnATdZ)Szs`S@)7a;8xn(AW|8y6N(j?V2j(GCAp3qXPkfFC^_>q_ zUDXZ6zdj!(aQB%KO2rmvUPCLrrY{gtlaaV;pp=0$M7HQS*3{}y3I@s2TKG5m><lceP^rk-ULTD&R+t!OHJxqH}wn$**IG>Gl*Yyx-!{{Yg z)_!Bqan}-o7n|2$zNMFnrT!mxL!>K#jmQsoPziEa4XW2N;fJiiM8V5NdpI5o^;95c+U#Xo2>L;1-6GMLO7}T%Dgi>$(0BO z@N+6!p!5$`LTwFH<{PozU#szGT1rboWCYzht%Om&Z^c@=#kII2--4djcz7Ehw!wBjhHyrK6xX0ph`Ppqex_@roAFKxe=uk4EJ;+#>e8c+=RU@N`fah zad<@0Y%?}vz2l_6I%u;X9Vc}GTSbo`gQqH(28}r|2}Pfqvyc;R+=>AE`X#*E^{oOg zA1$S6*%PF>MYoCL%;ueK96l{-q3yy)$N5j>4(uP}%iwKg>mBTLO>|@jYAUEcW~lIa z$mwcshoj!POGHCWJ==3pC-1d-R2KB8A8zjP%|yxg=!MQ(zRXUwI|_&A9r!-a5UT~#wom8e5=)F_wGhCdUXz#@MgDG_c`rG zx(KPia|?V+L5X|B3_3@c_s@HFrl==Z_CS;!XtPA_v75Uer?uwG{RBL9rsl@~<}yJ^OT}O%r5z zRw1m+PlrSXJMmVBMRnRY4_q!gEMo9(2xmVW7W|_4-C=Q)AAReHu>9+#YQ3g-?ew24}FTwBdGbj@-Ix3nobAKI$cSMys_Lzu6;s6hMOzhOs-Q!S3xSs~c#dg}s zyNQ4kA_kedjqE2dQ6!ALPl$V14Ylz}agu{_iPHj`nMZg;`_piM=XODY_zWW6-|o@H zCHpU@VB49n6NzQeD!9tPGwgY-lyF8^uyt_IpfiwGKN2DI*BP!F*{H->Cn?`Or&Slr|1xSp}<%{hUW@g{nggH_x=9@kUOv#B|0xM(F&gIvc7vRfLR3gVkE{S0?b5Sgzt4qLH!5@$oLmzAW09R7<5?2@cVC=@11bpkz6u@>w@TG^*Ja`u>I(L_Md$niFnvGK>1tO%^=9I=U&o z(;3w|x4<6w8F?ESrjd5sMu`VpPx%Gj06UqJzu>Zw-u@!?bJ1k~9W)zl>f1YFqP8`h zcn|sgfO%MpzwTjtl*3Bi7uPV~SN9s`__5+a)$6(L;6)Fm~ zw*0Eai>|+F0$KDcI|nD7`&DF9_Cri~*h4P0s7oKBTd>)aK4SOQjSBn*PdWTNlEKY3 z$scziTX+1%n=UgAz>%sy25XI;g@w`K-$W};8A?4CN7y;vf6Qr?l}bH7YH& z#B1J6@BRbB<1vkPz&-f>DZbA~|BkPyUT0M6J5m%J7WIJzagf$&k->Gwul zr1W3})K+h`4O_-r*wz!?iSBwUc7|$SGv#HS$?1xaG-f`(5pvRscM!@9kf&RGBw=I=o%NA6+VcYIfuD$U4$!uS8goPFSv7<`6mSD*aXwj- z3pqFQ$(8I?zVemG4a{`FS5~1nPR#5dUl|L{Q_JUh342(c4$Jd841~;-i%? z$Tgr=1R4BgF&aG!UbLydyuia$43Mb1+NfoKG_aOU3XqA^dOc*E6Cf-4ShVeGwyj1H zI=WDaptwM3fiOA-;^DpLqu2aE37>EQY+MYKIaG`*mFt5r7MA#CkgN=YaZ*UIgihJ0 zUa;)W;dgVe>`Jcs=o%G*S-~qE4Uv^8BwGfkZ$l*f4FnugKq4hJ(f9(=%KE;$fSiUX zVyD!CGM*|Ag_{{)P*w&vTM9}pCEqP5QB=WKVTGh2*z)l;a}(HG=tWV^%Yqcd9wt%! zJP3XVg~ zl@TuE*^zI?k*X#m?SB+5AM+0MN)ZSFo;fgrd)TR3gnYmmXoaE@?$x2TEh;<0&p2sc zBsltRHay+CNLik)&&K29i^&PR!&Zy2(pl*DViMmsI;eSZna*FOsl{a{$O13lOUQLB z>XRj;6O-{S35|L<0)kB`DYb;Re@S^67wVV7GA%8D3*$;jt~IPL#cWyWMk#rP*Z=z{ zaIs-EJoaBv5*1Agm564|FjHEz%=W^jh?Xu&DoevAC=vLo28K|jw6u`leoVPA zE#Ui`(kMz{w9}dkw=rB^ZGSW<`=b$?)%E*2QkY+WktgNoXd@R(g z942Ok%6wl=v$`kcq?Ic17ZjDt%kr#4&C1IeH2+T}VAa#|5-F*P{-^-$f@EVW!Xoki z))i$ntSDw4P8%x9@d2JKV8?!B6xa-z!A5$F#Oqovvo4L173lY^$a2re$OU?qO5ZrS znvJeVWogS|D{NU=R^o|`uZ(pzJODp?D$Aa9ZUpW!RFSRO{Z5XT8+jX$Xh5HY2#h?` zAm?)64>Zc96gLHT?J#0mcmZofmup>8nUzl2it~$iPI;PA?_;z}Rhhl4 z1nB_(&IEalgG7-;d7ZA*68`GjM5$;S1f{w((K#Iy>Fesybd+fJR+oKgEq`rktsxf$ zYlR=p&874l+?!@Jl#$e-4r2e_c$uGqYDx$F#{NXqlx?ZxMclT%CUluI(3%oyql3b0 z$=kHhDgCmNZ~-%mO_DB%Y;_Vu0j{p{5yl&w%oDazwPaYu=($+NQOQsu6#lp#Yhx&+vOm>^{lqutesv_iLABGcI`SST z9Q_AkTR*t2EW=NnR~J_Fl)v@5P*+x@bS|TL*MoaT-eRmLQ4+J#!g}Be3wE-e-2 zV4&27@*C#=&xX?OW7CR6QQk?#sbQ*&WR32giZ#bRZXqAxhR&tRZaNA~2BS3;OdU>V zfFjpp>LrCVhkPtLCnxvsJAj@oga9o@b)t}U5VH{-B{aFzE3A@VBRPl87Di=gZ6jGR zD;)m$S|iC{-}p6#rwBa-snluA(uMFE%XD1$sWIk*80z0devV~P$2O6nI_k3mJr_2W z_(;@2Cz@)G&8ry>2CCLfp2U6mn?oMZ>>ADG7V2#P@2{G}(y#!tS|GwexUX73RS;{9 zEun+h*>-D*h3PN=J(snV>C|vGszgDp@CevLLMu3=*crGsycPWaq9iEFtyW+Z-ljln z_<2~_sMfOczrH+8P8rmb8qG%i)-Xl-{wohoO2PMt%M||D)P~0=wUI|z>i%sdzk{vT zRyvT~qL9>99^`B(v7PLW_Lc1%9CW^?D4f+1p=n50dAh*I+y>kJ^d|N3 z<<>QR>t<31b(7(EVR;14o!K3nmKcSh&vus=u~^G{K=cXw!Q=HFaI{rVs~%s%kl7-~-+=!Ds>{@F(sV}Bje54r(=ozjop zpp}OAla2tpCr`&GIzOVYaigDXPq|~E6LtH`UOqP7ZqmA_n$h(4SyY5lM~Xmi#5a6y zHBiQQnUH434q$7wQ>OvEh&GxtK=$VZ#%G}9@5ZVPKNh{80GjCttziuNo?2DD)i$ygU>R3I)sj zpF@LSokKsDn>mB8IE>?nnbP@)(Xxigb+nj&kB~YXmITK;ayWDoJEhyhwcHu;VFdd& zJ2e;~zhY}XKLW~#v?+b0{E1iF@dXcMrT$;YLI2t!HR+5d;kPza=xY2So z28+wUg}wtJg{~R!W)SAo4CEgMI-LPcty*6OQ2sGkI_v?fj*(Ve7%+zY6kY?5k?TV~ z)>fM&r`JPS>{q1}#jeK^O&W{j*g*Tn%Kfyc7asieI2rq|Z=d0(pN*4c;HR;R8wY*2 zTht=sX;BrXM+viqAAEK+OfwS zG!@Av^nBq|*@usQ)37$ZYQui(OhZUT-`>-Z+~Z3U9C)d6rpY)eb|2>GJDnYy1MdP5 zUDDcf%$<((<$Hc#m~VzGOW)ybKUrsJ>2CTAX{Wt+!17Ww@Z?X;z<>ypZ)b2IM3yuY zM{Iz)@ex_ef|-b@{M(WfGqEEYU<0!uv-pQkaNo9B+BLh{b(Rd%(MdNRIc_%QhEn7D z*-#yLm7B96wo_l=O0hY4dx?f~w7VQMat`E(pt5ETlG}W<;9eik!Q!po138Azl|wPz zDRZ@5$?myw5Y^ldw(VImrhwg3sZW;4^;5cjPUl~tHg1B+&B~HX5ouI>l8w?T3Lpvd zg$1NK~KzT{sg)tE0GKH85bNIu7FqwGNl)wehSUNay0(KY_S|5vT6T6h73#zCXz zLTq;7y1rNlZG~2@Td29Py9-%?@DcSQ*@dP(g7=uXNVW_ydP;GPQ|o;AYB*>yR)2C& z$f53H&W7!DW3iUn7tGdD$%Z(v{Fh9`25dpL$iOiyPn=uu~ zQmFP~d>`grtJ7fZg$};k&B2cdrY}XVw73zbaBL|w3iE%u6v8bo&=S84eyUm*D9GJq z99-=DDyBEapSoP$;JmW$3fP6wuC7@j=j$l$ChCJ*mdWy{%D^>!@r^vk`CjU`GBfaF z1Z*;d3}x}v=YakqKN%7s%79fE++e19t5~7T~aI`J4X#t=2+8~cd~K-J}pM@(QI{zu6;dy z1Z^Uvl-`K93v1;gs=5i|l~{*8WaKrBkhV_V#j6OdJ#@?V+D9u5_sA}|vS|<8(5*$d<=GxMx>CzAn@W4-C7m&ApG;(LR(+pl_FSQ0S{vZ<@591A~dy?w6<8 z1C2OVHU@@q>g9`qi}K;NH|| z3tlSb9DIVUj0~ z$qwwaV~=A>xiM(zj5BuEvyVf6kP)0d&Thm(`A(om=psyUVEJNUv~m>tM{L0dpWv~b zwDtsIe7kkHe*c7=&rWR2NloILPO?Pk77jF>aJ}d$*_3YZ&xD4Z;sTqMR-VE$z~_xq zcs9liJ}tL$LUib~97tD7fUD|f5HsPimYjh$I@3r5cqgZr-oJ>h zc@8xO_}GW%*vnbq$7B{%M9qwEJ`kA&vU+GFHLVxD@Ev+EWBUU z)OPZD*~4G^oo$|T*sQ7b!!h{qs9`k`i0@I~KePP>IgOp;lMC?ckY~(AITD^P^P7uO z{pMn$Hu$V_f;DYs=!zY=jU4&3U)_8DM!;NGSwFb2TwFR{UwFjkxI)FNYI)OTax`4WZx`DcbdVqR@dVzX_`hfa^ z`hog`27m^F27v~HhJc2GJ_ij04F`6x#(~Czz5-1E zWr8Mxz6MPKO$JQ?O$AK@O$W^Y%>>N?%?8Z@%>`wF2s95gAGAPqc`w9Y!_fZx690uK zJ|S1Zg^9j=ru~VfTDq*Tg^s){iDCb~GDepb{{D)#B6&B5FML0Yo6jyckHKG3@th?V z`OxO_oVh(`uRUjp5%2q{u84(hpZ8BM`F`k3SILE-MWDr?Y|s+WQqVHca?lFUO3*i; zZ$Ya-t3hi(-+|VG)`8Z8Hh?yQHi0&Swt%*Rwt=>Tc7RmSPS7sU_n_S%H)s!NFK8cV zKj;AHAm|Y2Fz5*ADCijIIOqiEBx^b zL4SdsgI<7Mg8l~m1Ih)x0=)*k0lfvio9rs7n+{^oGk7t0Gx#v%WAJ6j&)~=4&k(>6 z$PmO3%n-s5%20rzAVVRBFowbm;S5C>A{dG?L^2d(D9%uVLF1|vpG7f5Gn8g1!%&u? z97B1A3Jet)Vi+nh#4^M&RA#8c5YJ#>Ffy1J%nTL=D}#-}&fs8hGE`+qU`S-B#!#K1 z218ATS`0}H$qXqBwHfL#)Mcp0P@kazLqmpChBO9+K`=;$MhuM^nlLnFXvWZ-p#?)r zhE@!%8QL(kWoXCHo*|u~14BoKP7IwHx-fKQ=*G~Up$9`xhF%Q48Tv5vW$4GypJ4#Q zK!!mKgBgY}3}yJ7VHm@3h7k-S8NOg}F?`7|ieWTE2E!PJu?*uF#xs1yFo7YHVIsrV z43iipGfZKa$}o*#I>QWxnGCZSW;4uTn9GpGKn(L3<})l{Sje!5VKGBC!xDz249ggn zGpt}($?y%sw+yQoRx_+&_>N&M!#alb3>z3WGHhbl%&>)FE5kO1?F>5@REC`lyBNM_ z*v;T(*u$`wVIRYOh64--84fWVW;nudl;Ie|afTBNCmBvLoMt$~aF*d5Lk`1vh6@ZA z8Gc~6#PB1-PYgdZTxPh!aFyX2!*zxm3^y5WG2CYOh2ajvU50xM_Zj}j@POf0hKCG~ z7=B}T%nM-ZH$?!TsrRqGQlA zcrkc0_%P&S@MXx);K$(45Wo<~5X2D75W*13P=KKzLm`GRhQbWt3`H0s7>Y7PG8AJd z&QO9u6t-7%DNuGQ=@dW~jmt&tPCMGME_53>F3} zgN?z?;9zhvRAoqDNMxwSP@SO$LrwiYxIaCz5iMs(-M*si-