From f2d5c937034e6c07391549ef6d46b2c8db086c85 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Thu, 7 Mar 2002 03:13:07 -0500 Subject: [PATCH] Fixed the journal handling so that an offer is made to clear the journal filesystem in all cases. Fixed a bug in e2fsck which caused it to give spurious I/O manager bad messages right before crashes. --- e2fsck/ChangeLog | 12 +++++++++++- e2fsck/journal.c | 4 +++- e2fsck/unix.c | 1 - tests/ChangeLog | 6 +++++- tests/f_extra_journal/expect.1 | 23 +++++++++++++++++++++++ tests/f_extra_journal/expect.2 | 7 +++++++ tests/f_extra_journal/image.gz | Bin 0 -> 4320 bytes tests/f_extra_journal/name | 1 + tests/f_miss_journal/expect.1 | 23 +++++++++++++++++++++++ tests/f_miss_journal/expect.2 | 7 +++++++ tests/f_miss_journal/image.gz | Bin 0 -> 4276 bytes tests/f_miss_journal/name | 1 + tests/f_swapfs/image | Bin 0 -> 1048576 bytes 13 files changed, 81 insertions(+), 4 deletions(-) create mode 100644 tests/f_extra_journal/expect.1 create mode 100644 tests/f_extra_journal/expect.2 create mode 100644 tests/f_extra_journal/image.gz create mode 100644 tests/f_extra_journal/name create mode 100644 tests/f_miss_journal/expect.1 create mode 100644 tests/f_miss_journal/expect.2 create mode 100644 tests/f_miss_journal/image.gz create mode 100644 tests/f_miss_journal/name create mode 100644 tests/f_swapfs/image diff --git a/e2fsck/ChangeLog b/e2fsck/ChangeLog index 1bb41917..747f1fc6 100644 --- a/e2fsck/ChangeLog +++ b/e2fsck/ChangeLog @@ -1,4 +1,14 @@ -2002-03-06 +2002-03-07 + + * unix.c (main): Don't close the filesystem before calling + fatal_error(); this just causes a needless warning about a + bad I/O manager magic number. + + * journal.c (e2fsck_check_ext3_journal): Offer to clear the inode + in case the journal is too small, or the inode number in + the superblock doesn't appear to be random. + +2002-03-06 * problem.h, problem.c: PR_5_BLOCK_RANGE_UNUSED, PR_5_BLOCK_RANGE_USED, PR_5_INODE_RANGE_UNUSED, diff --git a/e2fsck/journal.c b/e2fsck/journal.c index ec575ee7..6597d574 100644 --- a/e2fsck/journal.c +++ b/e2fsck/journal.c @@ -620,7 +620,9 @@ int e2fsck_check_ext3_journal(e2fsck_t ctx) retval = e2fsck_get_journal(ctx, &journal); if (retval) { - if (retval == EXT2_ET_BAD_INODE_NUM) + if ((retval == EXT2_ET_BAD_INODE_NUM) || + (retval == EXT2_ET_JOURNAL_TOO_SMALL) || + (retval == EXT2_ET_NO_JOURNAL)) return e2fsck_journal_fix_bad_inode(ctx, &pctx); return retval; } diff --git a/e2fsck/unix.c b/e2fsck/unix.c index 1eac4973..e424ac7b 100644 --- a/e2fsck/unix.c +++ b/e2fsck/unix.c @@ -831,7 +831,6 @@ restart: com_err(ctx->program_name, retval, _("while checking ext3 journal for %s"), ctx->device_name); - ext2fs_close(ctx->fs); fatal_error(ctx, 0); } diff --git a/tests/ChangeLog b/tests/ChangeLog index 7d16aee0..71c1eb21 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,4 +1,8 @@ -2002-03-06 +2002-03-07 + + * f_miss_journal, f_extra_journal: Added new test cases. + +2002-03-06 * f_badorphan, f_badtable, f_bbinode, f_dupsuper, f_expand, f_illbbitmap, f_illibitmap, f_illitable, f_imagic, diff --git a/tests/f_extra_journal/expect.1 b/tests/f_extra_journal/expect.1 new file mode 100644 index 00000000..f8ccd647 --- /dev/null +++ b/tests/f_extra_journal/expect.1 @@ -0,0 +1,23 @@ +Superblock doesn't have has_journal flag, but has ext3 journal inode. +Clear? yes + +Pass 1: Checking inodes, blocks, and sizes +Journal inode is not in use, but contains data. Clear? yes + +Pass 2: Checking directory structure +Pass 3: Checking directory connectivity +Pass 4: Checking reference counts +Pass 5: Checking group summary information +Block bitmap differences: -(50--1079) +Fix? yes + +Free blocks count wrong for group #0 (968, counted=1998). +Fix? yes + +Free blocks count wrong (968, counted=1998). +Fix? yes + + +test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** +test_filesys: 11/256 files (0.0% non-contiguous), 50/2048 blocks +Exit status is 1 diff --git a/tests/f_extra_journal/expect.2 b/tests/f_extra_journal/expect.2 new file mode 100644 index 00000000..834a1204 --- /dev/null +++ b/tests/f_extra_journal/expect.2 @@ -0,0 +1,7 @@ +Pass 1: Checking inodes, blocks, and sizes +Pass 2: Checking directory structure +Pass 3: Checking directory connectivity +Pass 4: Checking reference counts +Pass 5: Checking group summary information +test_filesys: 11/256 files (0.0% non-contiguous), 50/2048 blocks +Exit status is 0 diff --git a/tests/f_extra_journal/image.gz b/tests/f_extra_journal/image.gz new file mode 100644 index 0000000000000000000000000000000000000000..113961930d9130178a8346b46859ede99b40b892 GIT binary patch literal 4320 zcmeH{T~reX8irA8u&%&yZNP)7@4OFzS&IoAZppHcL^v;W(z1xdD`dz)} zyZYYe{mvV4V9Jy$;ro_NoU~b;TbLg(;z1_yjk1f3f||n_h3w?(M7he6qXY zX4v7id*1)hTY0ngZ)R>;+v)^?pqKxQu35+DMhq|8*uQ5Wq9yMLE%4{kMO{|>;rBJe&^J}^ zNQf=4ytRCHbbM>6A@Z2+r>Ap<<4Padj+Wi2;T|SF46P_ft0HEBUH;q`eSFvXi4h?Y zW63|TygO4J(?$U{6`Bm)9Svw~FOgqQzlPkt9wte@O z()1`|(}=c0aqvaxqNg`z7uS#VoRBuVw*V!s^kR1ou+x?4bC&`S_JyL8;o21kN5;>; z*dFcclaC8RzItA0J8{-vGQv7ti@|&!uFy3V@OKqK*ZR*)4ES#|c3YTJKW&t$ok#lVR{zFxQtsO(bF{!ruEir1}s>@Sf-1=%v>Kh+86n{PbVRSV4UVty;oAS=F zNdplJ$G>LjuAiW?D!TU}6B_P)T)L0 zJoqR+iRl!f!B(7l57`tZ*+)-DHflQ@=}FWLWL=p2GW7^}Flpv|_ZrS6YIBJDteH#< z=jD}pu#vitBmk(0UkQIvTQ0gMGMgbn9enM7hon`B#ZZU!=GHEx0Xua!~ zxKp?;KHZyRBQZqoRmNLu$Taq#y?NNw&YrZ}hRx5}U79oDrhROc=3Kb>GF!;4jFqKP zx43ow^Cz)E=9zGGLUky6TGLjR?zBi5N`onJ6@{~vn&w`Uja|as)-?8FPZ&S1@H^sW zEq-GUZ@K_9RJcFm_6r?}=ybS2*p_HaXR86QQdwh)hOP;jvq2SAcbR!sd1NOQ@3)EKcm z>fhBdFGc(6${t)eBBBVBvb2E6RcFnnL*Z)Axy5D|e86+I#e}iRM2cFj zvJOGdJ+(V5dT5Yet0i_A6|l|IF^a~*xTk&8sD+ ~X6Jtb;&NcNGnNOqVqiLBx{ zJ~2$3L`NfA!lak!H<1nctUgOME9ZtpryZGn*a&4rK)te%JdQ~8ib1jsQR-EpIbSA8BdfWrSVcG4&Gu-lC-G3`qQlWG5e=a<)2x(Z zHTAs~8#BbG_*;67JJ}A6vrOv5L!eWG9V>v=3i6*qYg~F4Jq6fMnKg%gAAq!H6U{f+ zOdzpRmPa+h4}^`Eut(6C?$kWXeyCs9Fc0e{Hv*q)TMXz2ut{e(7&pUqoudGK2R7*1 z3XC$iMb|NaE`_bS_5tJPutVpZ`Agw~e>ua2yn5gKlH;fH1Hs|5vMn?5xzH8Rbkv#; z^?=qm=~a3v_Y7>3n2x|lKtf`s;7YLBZCXHjh*V6@QarIjojsen#9j3K&k7p(vp#!1 zwS>LLOSJ8&#u0KSTY^A(NhAFZQlJ+X(o2ydy>yVCjN~e^Lg~54W`*P!{Wj<4S14ps zib7Hpa+>0h1aI~dDuhi!ioF>&w;Cz&x0YqZV=>HiyLs4J!t~nlVLXtzph3f}Nz4t6 zB^Y^~Z$^Q2~8O2zF8Pp{K&yL`xNPPk1^JOLK1mG+NUoG#a+>+bb1!$yPvF zshUB438bgwRFe(dah+uz-tB%1$WIYx(w_k86zMH`8j$D8T10;Yz%EHM{Vq`G5*O3U zfUPd6kDf?;8kO}M`u7Qz@|S{r^<-xsxaGUf&VFKLlq{LLNvw;KU!?}2XJBodD$>1{ z*oI}8-4LO{(qT8q?FHN2Mg;Bvor}>RxZcz1$UZ?D2$@DYUyn{ zn8+K-ilL>9nMfW2+o@q9X-HN=^%7}A^5@hGWO-P2Aa#KwL=C}M7xPe5chG{I6Ysa#Z$3c%wtjgbxSkzK-730^D$%gQy*InF#Yz1 zkFl%F&-OZpDjtnwO?JE02(xy(qX?bN8u(m4T4a?oZaY?lN6=|ZBa-Bm?WDX&npggW z@^i~$vqPvZZgnj9HFcM3*3_M}G&1)!hB9ThyO=BOSiiuX%x&}6mC10@%z+(Br%6T6 z<_bE*Tj{NgjZ5v2k5JFKc3!JpKPe$lAfSE}W+cF^{K_EJ9P+O~MrBStiE>wjSR$TA z%>oK4#WmI@_*BgE(o2JAk>>uL)u$Dsk; r=>n_=8r9VgSlTMUTd&@;zIObYz-t2k#{{0zK2=cu6iGn9?*jej8m46gor>5xr#8LFsdLV>inOD_GYXs{YNaR%A4xVO0a4K121a24g8>TD zVuu24@xX@iAqe@}%~I)t29wZn)Se2Cx*s-(@e_5o0TdTyW8iM?mvcYv=goBV{q@ZI z>wP}vnK!Iz_H381a^u^9`?VR_djq_~dwSa|L|J}Ae(%xu%F9~wE6SuFwdKeE=qrEZpkIt|>WC|ACj02LJme=zo>%KBMW-@q zqCO5dyeGtRH8_YG8>wF!7>Malu@Rjwx|0e|Ej_LB&+5x8l&OXu;O$ zmad^0YAEcJ_o6Ru^%cs)%4X)2Hcvdia&P9Q>uKPN(_h+DxBUygb(Q#`MT?($2ID%p zl#mxjEXHrRH-?s01h3#DY8!2x*!$plgE`Bl04W2SHFG^FCBup=$ppLvRic3%=k%TBAL3y2gCW;-9uOTms;s=0k@^{g;0Yx5p zQ?yIp8Lgb49)eE(@PI~Rn#EMvZoc)3x33?Zu9+1aGI!P5qV)7TOKWBwCRPzIBhspf zHtvByT}9r-w}dO=$!qv$;mS+oQ+zWjUrAoXcj!A(QH%m{9V&q+053q3G**~pxoSQO zm9caXo}o?tfL?*`*QPeo3-P_$6eS&rYqhc=dLEwXP4-xt*daXL3-pmk+zw|_G0}|6 zyec2zfj<|@F3@w}-FnwfOC5VujPJBw zXTK454_dm}AH}_c)(N)U-nH6N#eUCkQUML*12|5lh(W^06c|<|(NryKw>wLu>xgPN z$^UbXP03_)6LvhuI>gr4yGJd3Y_q+0)aqlu&~+`bRI-b>?NLB28Ntf9qA1BODv8VY z+e?yMXf{*GeeQQoCte{ZxXliE1bK z+Yh=8|J|3^dT`KS9kCr^)^NWWdZT3%cz^#g ze4qaGSM+YYC|nXxN%8#fq)XI6{4kohlG=eEM5P*Y3TwpyR1FaZJQY>31Pu=JI(@rS z!IC__Nh|+=Jdb~>1scf_JWi`nk`$hxRSuDpc&t~xf$Rkz@&#ULAC)6&E5OExC3vYz*~fhZRAz>GokVV`2^nFB==x-%zbgkPV_qS zOx!+*bThw;jf3a}^U~hB8mVIL+E0`uHc)%vLn?`k3T3y!DJm6B;M_gC&4#rQA#mn! zatzwY*7FMgnH+S8nY6c$B7MxL-8hQ+m}y<>5~Py3!^cHQYpG1`5}y*K-bK`L$x$ko z%|qm}Kk%w3r3;H8^0>o}#0V;$JLr&N6vXKql3Ys3UC{O2G8eKAfg&(AC@6^hKejX1 z0dy@C?Dhw~;_T}Or>SNC7JeZbL5~B-LhP^LKLJa_sNH=k(wqQwyU+BP!Xc~M-ecB6eQsxgNeCJF zRBxKcrUGdjNp%UV(W#mA-$XgpvM}rkyFj!_e{u!#HF%d#PLQ_P zK7~#i&UBhSge(Sor+GhQH#oCQ??au2(^+N()MIdrnASr!L*Iz`3Xu)nI!>*9{j&Oo a@f!u+DDVeXV0vsSGhMn&T>6=hHec9!%Z(qu`QWMNo`25a-`iUW5cm=atk3PVPXHTo^xxXF|Ky1P zfi)p;`%yd%Y!2?I(KSbL^FD+Cfjdv&u!r-VcQZZ{0RqRGKyLxR@WA$+z3IK~OY!`? z+uFBsT>IL>r!t>zPxp4)O|q{0a{Jjm2440e0RjZ>ut4Yhb5^r+`+*C4)BU9FbI+** zH*n9qe0t_ynR{pMlQ|=E-^`B8MCQ!QS(*D~MtZvTBkgxPZtKqN2N!p4zwSVLx*yoy zmn~hG?f!XZp643vQ9YG=yw2^Pm#_c2+j`Tzh4#m6AGoy#ps@|1bP10%;PeT&paV>LFS2> zCuJ_oJUR1}%te`}W}cR7))(h_`>DMBn{Hov`-a}yGqC;~@-cJs`{(AC-u0;dbI9i! z{0!aOzc#mfOTPZkx2OB|_QwpYe`6mU{J0~0xxD@U`n&z$)t&p`!Nu<9Zr}Fc?SJS9 zZ*%b7%iHgM{hM;zbG_+);2|F~F>&V1?!7w}X7?=&e%?`EKIC%^eo*)JPwd@x`+0r) zv(pPl_kUs7?VmEr?YH(%&Cl-Gy(bVy`hR5D?H`}pzpD5Dq4@gm$RRN7_D}BJcKdm8 z`~5F`>Ho-){XGo3{VgNh{(NiCWjppQUU6i%-1%aL-Tvm0Zhzmx8FQ`uduF;oNARq? z{X^HE_8Qbb{@Wiju>OpFIH%E@j^H*2-?hB`!FTd90RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB=DGP+(niLNnI><<)s=zr1du^M_5%wr1me>yTeMdP1|M*)Z^nU^h3XH76CnnDxZG zZQIPszqIx)`P}RCyHp2%kL{NHw(ZR;{F2qJ>o0ANzazi=cj+th9|8nc64*3&{ICC9 z|M*|&eZ7tVfmJ3j@Jqf|*;nSvAwXc5fa8Cdkhc?9y#kK^)%$nrDixU*l@S;w;P@XVHWdw!^ zIR1wTc{_pCE8zHFy??j9G6IJaSe%@injD|${I}Jb7$2W*O<$hZv|2Osv+ZYj)hO?@ zxckcdZ{sNM>hrCD%&&WAbN~Bt9v>SIce3y{0t8l-z^;Mye{Nv?&&%!gzw@e5-l@BO zjqi**X;(Rq(-U%EZC5`o{+oOYvjQflGi}R`TX)gkt z51bF251bF25BlFPsZ!K_(tdK>dTG71URp1$m)6TXo?`IQiv5B8f&D?fG&nvSAC3>l zM{n!oeBgZGeBgZGe2|o?E;_p2RMJ>KtRL2o`qbh0aC|sE93S>qYj1y*A7(f&bAIMg znMY?Hlkr4=z#0%Jqe)MeH1^B(%l6Cm%l6A_Z@*kF3f9Y##(HVJv|d^-t(Vrz{y!>V zy|i8)1CNhi1DAMwi3Cc4!GDTpYI1M?-~Y?Y?NfEg5k6%}y^N$z}-l^PQ zN}5A@xjKmW@pFEjEbj!4kCMjurF%WjdbDwrt)2Ue`^!q#Z>z0|`-}UF`%AqwaeO#F z93PGk*Vpp>uxb;b-%1+mhxNnyQJ*>-AC3>lhvUQk%KobVO>Fx~`$^v~s}}{whvUQX z;rQrnnw$@u51bF251bDYQJvq9U0teny~*_^*PH57rQ_q+JwEb-0T*YUo_R**nVDy0 zo}GD4=DC^YWuBjTLFSUo3p1ByCNoo+>C8-KHZzyGEVC=KJM*H<<(c`+6`4JmR_4mg zi!*yO`!Wle{h6yWFUh<#vzWO$^Rmp#Gq1?JGV`j;HJNKOug<(C^V-boG6yo(Wvka>IN9hrA#-j#WG<~^DBX5N>1f9A%_2QnYbd?@qb z%uShZ&U{PeBbjf_d|T$*GvAT<&dhgZzB}_hneWYfH1mC#k7d3;^8=Y5%=}R1hciEt z`O(aeWqv&K6PcgP{8Z+rGe490+04&nem?UHnP1HOQs(2CU(WnW=2tVnmihI}Z)84^ zxjFNjnNMbJ$^2I4w==(!`Q6O#Wqv>N2boW0{xI`LnLp0_N#;*8f0p_4%wJ^wGV|%o zUuFI}^Ea8#WNyv;ZRYPXf1mk>%s*ys%luR3vzdR+{7dFvGyj(PT;|_1|B?C6%ztJ6 zJM;O>|75<9`QOa{Wo~bpu{;~gf5z5j)@P2(Y{+~?<|{MDXTB=4F|#RiLS}R3#LQhX zTQXZScg>uX*_OFm=H$#NnNu@&&wO>}Yci*0zBco9nXk``XTBlxjhS!CY|q>ybI;7_ znR{jKow-lujLdyAJ2DfQGc#vp?w8q_xqs#XnFnSblsP-|;LJlZ56zsDd06J*nMY(E znK?IeUgrGFqcV@qJSOwl%;PeT&paV>LFS2>CuJ_oJUR1}%te`}W}a3?j{YlYtY^pW zdRG3Wxj&aQ?$7Se`bEF=F7-GcI3GA4I3GA4Ox1S+`$_vr-yd^)^iGn_2hIo12hIo1 z2iY|Fe)-@(Eup9Nw4Sb)2FHiv!|~zx=xv>x51bF251bF24_trt^P5w8`tqf7VgIgR ze_(%Le_(%Le_(&mUle@*&G+AY|E*pW93PGk$A{yiw`p=da6WK8a6WK8aDC17wc!_8 zt(VqI>!tP5dTG71URp1wm)!~M59|-@59|-@59|+?Ee#&8;_)gTuTn1!jt|F&lhvTCc70w6F2hIo12hIl`|LpP4`f~Y22Kxj1 z1N#H}1N#H}1N#H}1N(z3vnATNYlLq_c>IRPZ+QGhy>)VYI6fR7j*nhiI3GA4I3GA4 zI3IYtqsKcAztmv8v|d^-t(VqI>!tP5db#}4y#0awf&GE~f&GE~f&GE~f&IY<-?aC5 zM~`>(c*lCvjbWsxL)FViR&e-4#53*W-8n`>b_3IzAj9 zjt|F2@6w9%f%Ad$f%Ad$K`ymcQQ`YhC5`pN`eFU3PaTdA$A{y?@nL^uf93bZ4F6WP z_0oE2y|i9hFRho>OY7zGhkn@~*dN#**dN#**dN#**dN#*`2DMXetNf`5AgE=em=nC zH~f5npATr?2l`uM*GpV4alOR#64y&yFX=A|9?$CWtp0tKdQotEI6fR7j*s4^$@#$f z!1=)W!1*8%<=@|MeQn5{z!tP5dTG71UM_!7 zv;Benf&GE~f&GE~f&GE~f&GD>ck%Nse%{5;yL7rhAL%1~q>uEGKGH|}NFV7VeWZ`{ zkv4qU1N#H}1N#H}1N#H}1N#HNKiTh3_WP5ohcfB~y`UHLf?m)IdO*+EY^>j(2r}ea+*3)`gPwQzt zt*7<0p4QWPT2GhJsHaOBJ*}tpw4T<}dRkBGX+5o{^|YSW(|Wp$Mm=59=xIHzr}ea+ z*3)`gPwQztt*7<0p4QW4H0tS+Mo;T$J*}tpw4T<}dRkBGX+5o{^|YQYqft+nGuEi$r}ea+*3)`gPwQztt*7;L8I5|nq|wuQT2Jd~J*}tpw4T<}dRkBGX+5o{%V^Zo zC5@ie(|TG@>uEi$r}ea+*3)`gPwQztT}GpxE@||%p4QWPT2Jd~J*}tpw4T<}dRkBG z=`tGibV;M9^|YSW(|TG@>uEi$r}ea+*3)`gPnXfCr%M_=t*7<0p4QWPT2Jd~J*}tp zw4T<}db*58Jzdi1X+5o{^|YSW(|TG@>uEi$r}ea+*3)G)>gke3PwQztt*7<0p4QWP zT2Jd~J*}tpw4N@bQBRjNdRkBGX+5o{^|YSW(|TG@>uEi$r}cChje5GI(bIZbPwQzt zt*7<0p4QWPT2Jd~J*}t9Xw=gsjh@!idRkBGX+5o{^|YSW(|TG@>uEh*Mx&lCY4o(7 z*3)`gPwQztt*7<0p4QWPT2JfgG8*-CNu#Irw4T<}dRkBGX+5o{^|YSW(|TG@m(i%F zOBy|`r}ea+*3)`gPwQztt*7<0p4QWPx{O9WUDD`jJ*}tpw4T<}dRkBGX+5o{^|YSW z(`7X3>5@iI>uEi$r}ea+*3)`gPwQztt*7<0o-U(NPnR@$T2Jd~J*}tpw4T<}dRkBG zX+5o{^>i7Hdb*_1(|TG@>uEi$r}ea+*3)`gPwQztt*6Uq)YB!6p4QWPT2Jd~J*}tp zw4T<}dRkBGX+2#=qn<8l^t7JV(|TG@>uEi$r}ea+*3)`gPwVM28ufHZqo?(>p4QWP zT2Jd~J*}tpw4T<}dRkAH(Ws|O8a=J2^|YSW(|TG@>uEi$r}ea+*3){rj7B|O(&%YD zt*7<0p4QWPT2Jd~J*}tpw4T<}Wi;yPl15MKX+5o{^|YSW(|TG@>uEi$r}ea+E~8OT zmo$1>PwQztt*7<0p4QWPT2Jd~J*}tpbQz6$x}?$5dRkBGX+5o{^|YSW(|TG@>uEi$ zr^{&6(*+EY^>j(2r}ea+*3)`gPwQztt*7<0p4QWPT2GhJsHaOBJ*}tpw4T<}dRkBG zX+5o{^|YSW(|Wp$Mm=59=xIHzr}ea+*3)`gPwQztt*7<0p4QW4H0tS+Mo;T$J*}tp zw4T<}dRkBGX+5o{^|YQYqft+nGuEi$r}ea+*3)`gPwQztt*7;L8I5|nq|wuQ zT2JfgFGf!{&Dhf$PXq|8QGu~%$%vG6}WL}zC%v_y$S?1-L zS7ct9c~$0`%(a5@iI>uEi$r}ea+*3)`gPwQztt*7<0o-U(N zPnR@$T2Jd~J*}tpw4T<}dRkBGX+5o{^>i7Hdb*_1(|TG@>uEi$r}ea+*3)`gPwQzt zt*6Uq)YB!6p4QWPT2Jd~J*}tpw4T<}dRkBGX+2#=qn<8l^t7JV(|TG@>uEi$r}ea+ z*3)`gPwVM28ufHZqo?(>p4QWPT2Jd~J*}tpw4T<}dRkAH(Ws|O8a=J2^|YSW(|TG@ z>uEi$r}ea+*3){rj7B|O(&%YDt*7<0p4QWPT2Jd~J*}tpw4T<}Wi;yPl15MKX+5o{ z^|YSW(|TG@>uEi$r}ea+E~8OTmo$1>PwQztt*7<0p4QWPT2Jd~J*}tpbQz6$x}?$5 zdRkBGX+5o{^|YSW(|TG@>uEi$r^{&6(*+EY^>j(2r}ea+*3)`gPwQztt*7<0p4QWP zT2GhJsHaOBJ*}tpw4Pp#J>9JGr^zq((<=A%1-3RPG-DH;|C8(T^16x6AMV<0 zX^x-Sy?4jL?7oG(`J`rBvnhX`onGj@Dz7=M**4SKKQ%wQWA~mz-*~rt{D!&t{d04j z&wX;<_oV(iExn=tc}{6gZ8p!h_FT4O-{KYh*EV_Wwr1meYu~~dbFKY*W|ltD-Pd2# ztWT?TKCAx{AaK+IivySbW?HR@@oviG<@TlV&Z|awr*0pQ@~-2fypzw@#h+ffH0keS ze5P|(E$*c5FL%oQW#dtwNqisy0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 e2oNAZfB*pk1PBlyK!5-N0t5&UAV6Sk2>d?)UC1>6 literal 0 HcmV?d00001