inra@axis.fr (Inst. Natl. Rech. Agronomique) (04/15/88)
After rm command is it possible to recover removed files Please email to: UUCP: ...axis!inra EARN BITNET BERTHEAU.FRINRA72 .
dg@lakart.UUCP (David Goodenough) (04/18/88)
From article <367@axis.fr>, by inra@axis.fr (Inst. Natl. Rech. Agronomique): > > After rm command is it possible to recover removed files Believe it or not, but way back in the dim and distant past, a guru I knew at university had an unrm program (from what I could gather, it knew the nature of the freeblock list, and it looked at where the returned blocks were put, and then wrote their contents to a different file structure. Admittedly this was done under UNIX V6 from bell labs - whether the idea is portable to BSD or System 5, I have no idea. P.S. I've X-posted to c.u.wizards, cause it's gonna take a genius to write this program (i.e. someone who know UNIX like the back of his hand) P.P.S. the program only worked on a fairly quiet day - if system load was heavy you was out of luck :-) :-) -- dg@lakart.UUCP - David Goodenough +---+ | +-+-+ ....... !harvard!adelie!cfisun!lakart!dg +-+-+ | +---+
domo@riddle.UUCP (Dominic Dunlop) (04/21/88)
In article <367@axis.fr> inra@axis.fr (Inst. Natl. Rech. Agronomique) writes: > >After rm command is it possible to recover removed files Probably not, particularly if you made your posting from the system you deleted the files on. However, a paper presented at the Winter 88 Usenix conference in Dallas, entitled something like _What to do after you type rm *_ gives a number of strategies which, used together, can recover well over 90% of the data in deleted files on System V and Xenix systems PROVIDED THAT THE SYSTEM IS SHUT DOWN AT ONCE following the accident. The author was from an outfit in San Francisco which has found itself specialising in this type of business after somebody brought them an Altos system, having done something stupid (cat > valuable), then yanked the power plug -- which turned out to be a smart move. Regret I can't give an exact citation, as I don't have the proceedings to hand. Help, somebody? Good luck. -- Dominic Dunlop domo@sphinx.co.uk domo@riddle.uucp
cramer@optilink.UUCP (Clayton Cramer) (04/26/88)
> From article <367@axis.fr>, by inra@axis.fr (Inst. Natl. Rech. Agronomique): > > > > After rm command is it possible to recover removed files > > Believe it or not, but way back in the dim and distant past, a guru I > knew at university had an unrm program (from what I could gather, it knew > the nature of the freeblock list, and it looked at where the returned blocks > were put, and then wrote their contents to a different file structure. > Admittedly this was done under UNIX V6 from bell labs - whether the idea is > portable to BSD or System 5, I have no idea. > Here's my solution. (Not elegant, but worth considering). Put the following csh script in /usr/local/bin/del. ====================================================================== # /bin/csh foreach file ($argv) mv $file /tmp/$USER/$file:t end ====================================================================== and a line in your /usr/lib/crontab file to delete files more than three days old from /tmp/$USER. (You generally notice that a file you've deleted needs undeleting within about ten seconds of doing an rm). Why not call the script rm, so it's transparent to the user? Well, then you have to handle all the options on rm, because every program and shell script that uses rm will be trying to run your program, not /bin/rm. Of course, you could always handle the problem by making the above script an alias instead. Clayton E. Cramer
mouse@mcgill-vision.UUCP (der Mouse) (04/26/88)
In article <54@lakart.UUCP>, dg@lakart.UUCP (David Goodenough) writes: > From article <367@axis.fr>, by inra@axis.fr (Inst. Natl. Rech. Agronomique): >> After rm command is it possible to recover removed files > Believe it or not, but way back in the dim and distant past, a guru I > knew at university had an unrm program (from what I could gather, it > knew the nature of the freeblock list, and it looked at where the > returned blocks were put, and then wrote their contents to a > different file structure.) Much like what various programs can do under MS-DOS. This is one advantage of a simple ("primitive") filesystem - you can pull tricks like this. > Admittedly this was done under UNIX V6 from bell labs - whether the > idea is portable to BSD or System 5, I have no idea. I looked at doing this for 4.3. Normally, people will dismiss the idea because 4.3 doesn't keep a freelist in the usual sense - it's more like bitmaps of free blocks. But I considered leaving the block pointers around, just zapping the size field of the inode, so if you caught it before the blocks got reused (always a requirement), you could see the pointers still there. However, it looks as though it isn't going to work. When a file is extended, it is done by writing past the end. If there is a hole, the block addresses there are left untouched as far as I can tell, which means they better be zero, or the file hasn't acquired holes; it's suddenly acquired blocks that nobody ever expected it to have. Bad news. This might be fixable, but would require a fair piece of kernel work (wherever the size is grown, it must be careful to clear block addresses as appropriate). der Mouse uucp: mouse@mcgill-vision.uucp arpa: mouse@larry.mcrcim.mcgill.edu
chris@mimsy.UUCP (Chris Torek) (04/27/88)
[N.B.: There are two kinds of `deleted' files: those the user has asked to be deleted and those that have in fact been deleted; the latter is what `rm' implements, and what is being discussed. In *all* systems, even those with deferred deletion, files are eventually removed, and that is where this becomes relevant.] In article <1079@mcgill-vision.UUCP> mouse@mcgill-vision.UUCP (der Mouse) writes: >I looked at [recovering the original file blocks] for 4.3[BSD]. >... I considered leaving the [inode] block pointers around ... so >if you caught it before the blocks got reused (always a requirement), >you could see the pointers still there. The main reason the block pointers are clobbered is for crash recovery. If you change this you may have to work on fsck. It is not something to be undertaken lightly. -- In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7163) Domain: chris@mimsy.umd.edu Path: uunet!mimsy!chris
inc@tc.fluke.COM (Gary Benson) (04/28/88)
Here at Fluke, a programmer named Mike Bryant invented SAFERM (safe remove). Uuencoded sources are attached for anyone interested. Here's how it works: First, you set an environment variable WASTE to a directory called .waste in your home directory. Next, link the program (it can be put in public, then made a part of everyone's path). Then, alias rm to <programname>. Once set up, SAFERM moves rm'd files to ~/.waste. Then, using crontab, .waste is cleaned out after three days. In our experience with this program (3 years), it has proven to be robust and extremely reliable. If a user goes three days and crontab flushes .waste, then hey! that's what regular backups are for! Following is the uuencoded program. It creates a file called RM. Good Luck! --------------------------------cut here--------------------------------- begin 755 RM M"P$````L````"```?````/0%```````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````/$4/07EK!!%I0 MT%!9T%E8U8D3`A'ZT5EH&0/"!%G06>_:*P``U.^4,P``W>_.*P``W5C=:OL# M[Q<```#=4/L![THE```$$;L````1`001_0`````(GL[T]U[=O`C[`>]7!@`` MT%#O8#,``-&L!`$4`S$>`="L"%"8L`10T5`M$O#0K`A0P0&@!*WX,?4`[P`! M[\DK``!0UE#P4``![[TK```QVP#14(]R````$P,QK0#O`@'OIBL``%#64/!0 M`@'OFBL``#&X`-%0CU8````36-%0CV8````3M-%0CVD````2PN\!`>]T*P`` M4-90\%`!`>]H*P``,88`F+WX4-%0CU4````2P=WOOC(``-WON#(``-_O2BL` M`/L#[]\(``#=`/L![V8D``#=[YPR``#?[T,K``#[`N_#"```WN]?*P``S?3W M,0\!W^]9*P``^P'OJ@@``-T`^P'O,20``-WO9S(``-WO83(``-_O.2L``/L# M[X@(``#=`?L![P\D``#6K?B5O?@3`S%O_\`$K`C7K`3=CP`$``#[`>_@)``` MT%"M_-V/``0``/L![\\D``#04.\8,@``W03[`>^_)```T%#O_#$``-_O`RL` M`/L![U,(``#04._L,0``$P,QI0#>[_`J``#OW#$``-3OXC$``#'/`-#-]/=0 MULWT]]#OI"\``%'6[YTO``"08&$12,[OCB\``%#14.^2+P``&%+0S?3W4-;- M]/>08/]X+P``F/]R+P``4-%0"A,(UN]F+P``$13?[UHO``":_U@O``!^^P+O MD!\``)'=]/<@$@,QY_[7[SPO```8B^`'[T,O``">W^\L+P``T,WT]U#6S?3W MFF!^$<N4S?CWW>\X,0``W\WX]_L"[Y$+``#?[S\J``#?S?CW^P+O@`L``-_O M-RH``-_-^/?[`N^W!P``T%#O$#$``-WO^C```-WO^#```/L"[_T&``#54!@I MT._?,```4-U`[],,``#=[]DP``#=[]<P``#?[_$I``#[!._^!@``$330[[HP M``!0/*`(4,J/_P___U#14(\`0```$R+=[Z,P``#=[Z$P``#?[]@I``#[`^_( M!@``W0'[`>]/(@``U>^-,```$T[?S?C[^P'O4`0``-U0W^_7*0``W>]R,``` M^P/O>Q4``!$LX`#O[B@``"30[T<P``!0W4#O.PP``-V\"-WO0C```-_OIRD` M`/L$[VD&``#`!*P(UZP$$A;5[RXP```3#=WO)C```/L![]4?```$W>\(,``` MW;P(^P+O#@8``-50&:'0[_0O``!0/*`(4,J/_P___U#14(\`0```$B#@`N]T M*```&-V\"-WOUB\``-_O22D``/L#[_T%```1DN$![U0H``!#W;P(W>^V+P`` MW^\^*0``^P/OW04``-WOIR\``/L![P0#``"1_YHO``"/<1()W0'[`>]-(0`` MD?^'+P``CWD3<#%'_^``[PDH``!ET.]F+P``4#R@"%#*C_\/__]0T5"/`*`` M`!-*W0+=O`C[`N]E!0``U5`8.MV\"-#O."\``%#O``^@"'[=[S,O``#?[\0H M``#[!.]:!0``W>\D+P``^P'O@0(``)'_%R\``(]Y$I#=O`C[`>_U`0``T%"M M^-1;$0+66]VM^-U;W>_L+@``W^^E*```W:W\^P7O_!(``-WOTBX``-VM_/L" M[]@$``#54!C/W:W\W;P(^P+OYP0``-50&!#=K?S=O`C[`N\4````,7;^W:W\ MW;P(^P+OK@$``#%F_@``",((7MWOARX``-VL!/L"[XT$``#0[W<N``!0X0Z@ M""?0[V<N``!0W4#O6PH``-VL!-WO8BX``-_O("@``/L$[XD$``#44`3=`-T" MW:P$^P/O3`<``-!0K?P8`S$+`=V/@`$``-VL"/L"[V<!``#04*WX&0,QFP#= M[Q@N``#=K`3=[Q,N``#?[R(H``#[!.\Z!```W:P$W^\P*```^P+O*@0``-WO M]"T``/L![U$!``"1_^<M``"/>1**W:P$^P'O<0@``-50$P,QG@#0`5`$W5O= M[\8M``#=K?C[`^_0(P``U5`8+=#OHBT``%#=0.^6"0``W:P(W>^=+0``W^^( M)P``^P3OQ`,``-T!^P'O2Q\``-V/``0``-WO?RT``-VM_/L#[X41``#04%L4 MHMVL"-VL!/L"[V\```#=K?S[`>]U'0``W:WX^P'O:QT``-VL!/L![]T'``#5 M4!(#,6S_W:P(^P'OS`<``-#O'BT``%#=0.\2"0``W:P$W>\9+0``W^];)P`` M,;3^``S0K`1;W2_=6_L"[Z,$``#04%H3!M9:T%I0!-!;4`0``-7O\"P``!,9 MW:P(W:P$W^\\)P``W>_<+```^P3OY1$```07[^8B````````O`@?\@0`0"@C M*6=E=',N8PDU+C(@*$)E<FME;&5Y*2`S+SDO.#8```````S0K`1;GN]0*@`` M6M5J%![=6OL![R('``#54!E%D5`*$@24:Q$FD%"+U:H($^(Z"FJZ!!,<PU!J M4L)2:BA2N@1KE&/04:H$UVK6J@30K`10!"AJN@1KT%-;T*H(J@34:A&NT5NL M!!,$E&L1X-10!```GLYD]U[>K?_-_/O>S?SWS?CWU.\>+```E-W\^]_-I/?? M[Y`F``#[`N\M!@``U5`8$]_O@28``-VL!/L"[]$0``#44`2PS:3WS?3WT,VH M]\WL]]_O="8``-W-^/?[`N^O$```P`+-^/??S:3WW\W\]_L"[^,%``#54!D# M,?\`W^]+)@``$;'?S:3WW=WH]_L"[_4=``"QS?;WS:3W$E?1S?#WS:CW$AW= MS>CW^P'OH`,``)7=_/L3`S$9`=_O;28``#$4`=W-Z/?[`>]G!```T%#-Y/<2 M%-W-Z/?[`>]Q`P``W^\5)@``,4W_T=WD]\WP]Q+1$5C=S>CW^P'O-@0``-!0 MS>3W$A3=S>CW^P'O0`,``-_O_"4``#$<_\$(S>3W?MW-^/?[`N_F#P``W\UD M]]_-_/?[`N_S````T<UH]\WP]Q*QL<UD]\WV]Q*HW<WH]_L![_H"``#=S?S[ MP0C-Y/=^^P+O?P```-U0W^^[)0``^P+O<````-!0S?S[T<VH]\WL]Q(,L<VD M]\WT]Q(#,2#_T,VH]\WP][#-I/?-]O??[STE``#=S?CW^P+O80\``,`#S?CW MW\W\]_L![[T"``#04,WH]Q,#,;O^W^\6)0``,6/^W<W\^]VL!/L"[S`/``#0 MK`10!```#M"L!%O0K`A:U%D1!-99UEN5:Q+XP%GO,2H``-'O*RH``(\`!``` M&041#)![>M!94-=9U5`4]-!:4`0``!?O&B````````"\*!_R!``7[PH@```` M````O"$?\@0`%^_Z'P```````+R/@``?\`0``````-_OG"<``,$(7'[=K`3[ M`^\^$```X07OER<```7.`5`1`M10!`````[0K`1;T._,(0``6M5J$S?=BMU; M^P+O"@```-!061/LT%E0!```#-"L!%O0K`A:D6N*$@F1BST2]M!:4`25:Q(& MD:K_/1/RU%`$`(`/T*P(6_L`[W,9``#04%H3'9&K`2L2&M`!4!$7T5"/<@`` M`!,ST5"/=P```!,ZU%`$U%#04%B8:U#14(]A````$MK56!,%T`)0$0/0`5#) MCP`"``!05Q$DU5@3!=`"4!$"U%#04%<1%-58$P70`E`1`]`!4,F/``8``%!7 MW8^V`0``W5?=K`3[`^_1`0``T%!9&9N1:X]A$@W=`MT`W5G[`^])#0``U&KV M6:H2U*H,U5@3"+"/``&J$!$0D6N/<A(&]P&J$!$$]P*J$-2J!-"J!*H(T%I0 M!$`H(RER:6YD97@N<PDU+C,@*$)E<FME;&5Y*2`S+SDO.#8`````?:P$4=52 M$@PZ`(___V$3^-!14`3>[[@C``!3X@!C))Y"8U669=14*H___V%C`1/WE6$3 M!]!15-91$>S05%"4991C!-!14]14.@"/__]C$ABW4#I24&,2!=!14Q'KT%%4 MP0%14]=0$>##4U%0UE`Z4E!C$PO0453!`5%3UU`1[]!44`0`````"-"L!%O= M:_L![^47``#.`6O4JP3=JQC[`>^I&P``W5O[`>^@&P``!``````,GJ[`7MT` MW:P$^P+OG@```-!06M%:C_____\34M^MP-U:^P+OXAD``-90$SD\K<A0RH__ M#___4-%0CP!````3,=`4[U,G```1'-5;$QC5JQ@3"MVK&/L![SX;``#=6_L! M[S4;``#=6OL![U@7``#44`3='/L![^`9``#04%L3RMVM\/L![]$9``#04*L8 M$[K0K?"K%-2K#-2K$-!::]2K!-!;4`0``!?O&AT```````"\!1_R!```#-"L M!%O5JP03`S&<`-7OF",``!45P0Q;?MVK%-VK&-UK^P3OYP```!%GU>][(P`` M$DW=CP`(``#[`>]8"P``T%#O92,``,$,6W[=JQ3=JQC=:_L$[[8```#04*L( MW>]((P``^P'O00L``-6K"!@KT>]N)@``%A(BS@'O+",``-V/``(``-VK&-UK M^P/O<@H``-!0JP@1"M10!-`![PHC``#5JP@5\=2K$-&K!*L(&0;4JP0Q3__! MJP2K&%JUJ@03UCRJ!%#`4*L$UJL0U6H3X]!:4`0```C0K`1;U>_*(@``%0O% MJQ2K#%#`JQ!0!-T!W0#=:_L#[XP*``#"JPA0P*L$4`0````7[P(<```````` MO(^<`!_P!````!?O[AL```````"\)A_R!`!`*",I<W1R8V%T+G,)-2XS("A" M97)K96QE>2D@,R\Y+S@V``#``'VL!%;05E$Z`(___V$3^-!14SH`C___9Q(+ M*(___V=CT%%7$>W"5U'642A19V/05E`$%^^&&P```````+P*'_($```(GJZX M7M"L!%OA"*L0!*@!JQ#HJQ`$S@%0!+./4`"K$!+T$1W>K;M0$1/5[W\D```3 M\IBK$E#`[W,D``!0T%"K"-6K"!)(X`*K$-_?K;R8JQ)^^P+O9A<``-50&075 MK>P4"#*/``2M_!$%T*WLK?S=K?S[`>^6%P``T%"K"!(&J`2K$!&\J`BK$-"M M_*L,T5N/D#$``!(JX0?OI2(```W?[XXB``#[`>\3%```X0?OI"(```W?[XTB M``#[`>_^$P``X0*K$`70`5`1!-"K#%#=4-VK")BK$G[[`^^0"```T%!KT*L( MJP3A`JL0#=ZMNU#1JPA0$@/4JPC7:Q@AT6N/_____Q(/J!"K$.$(JQ`*J@&K M$!$$J""K$-1K,?C^FKL$4-:K!`0`0"@C*65R<FQS="YC"34N,B`H0F5R:V5L M97DI(#,O.2\X-@``_!````01```.$0``*!$``#@1``!0$0``6A$``'01``"& M$0``F!$``*@1``"T$0``QA$``-@1``#J$0``]A$```P2```8$@``)!(``#82 M``!%$@``51(``&02``!U$@``B1(``)T2``"\$@``RQ(``-H2``#R$@``_Q(` M`!43```D$P``,!,``$,3``!4$P``:A,``(03``"B$P``P1,``-X3``#O$P`` M#A0``"\4``!&%```8!0``((4``"@%```T!0``.<4```&%0``%A4``"T5``!1 M%0``<A4``(L5``"E%0``P14``-D5``#Z%0``'!8``#$6``!$%@``9A8``'D6 M``"&%@``FA8``*X6``#!%@``T!8``.06``#Z%@``'!<``#`7```^%P``5A<` M`'$7``"$%P``EQ<``+L7``!%<G)O<B`P`$YO="!O=VYE<@!.;R!S=6-H(&9I M;&4@;W(@9&ER96-T;W)Y`$YO('-U8V@@<')O8V5S<P!);G1E<G)U<'1E9"!S M>7-T96T@8V%L;`!)+T\@97)R;W(`3F\@<W5C:"!D979I8V4@;W(@861D<F5S M<P!!<F<@;&ES="!T;V\@;&]N9P!%>&5C(&9O<FUA="!E<G)O<@!"860@9FEL M92!N=6UB97(`3F\@8VAI;&1R96X`3F\@;6]R92!P<F]C97-S97,`3F]T(&5N M;W5G:"!M96UO<GD`4&5R;6ES<VEO;B!D96YI960`0F%D(&%D9')E<W,`0FQO M8VL@9&5V:6-E(')E<75I<F5D`$1E=FEC92!B=7-Y`$9I;&4@97AI<W1S`$-R M;W-S+61E=FEC92!L:6YK`$YO('-U8V@@9&5V:6-E`$YO="!A(&1I<F5C=&]R M>0!)<R!A(&1I<F5C=&]R>0!);G9A;&ED(&%R9W5M96YT`$9I;&4@=&%B;&4@ M;W9E<F9L;W<`5&]O(&UA;GD@;W!E;B!F:6QE<P!);F%P<')O<')I871E(&EO M8W1L(&9O<B!D979I8V4`5&5X="!F:6QE(&)U<WD`1FEL92!T;V\@;&%R9V4` M3F\@<W!A8V4@;&5F="!O;B!D979I8V4`26QL96=A;"!S965K`%)E860M;VYL M>2!F:6QE('-Y<W1E;0!4;V\@;6%N>2!L:6YK<P!"<F]K96X@<&EP90!!<F=U M;65N="!T;V\@;&%R9V4`4F5S=6QT('1O;R!L87)G90!/<&5R871I;VX@=V]U M;&0@8FQO8VL`3W!E<F%T:6]N(&YO=R!I;B!P<F]G<F5S<P!/<&5R871I;VX@ M86QR96%D>2!I;B!P<F]G<F5S<P!3;V-K970@;W!E<F%T:6]N(&]N(&YO;BUS M;V-K970`1&5S=&EN871I;VX@861D<F5S<R!R97%U:7)E9`!-97-S86=E('1O M;R!L;VYG`%!R;W1O8V]L('=R;VYG('1Y<&4@9F]R('-O8VME=`!/<'1I;VX@ M;F]T('-U<'!O<G1E9"!B>2!P<F]T;V-O;`!0<F]T;V-O;"!N;W0@<W5P<&]R M=&5D`%-O8VME="!T>7!E(&YO="!S=7!P;W)T960`3W!E<F%T:6]N(&YO="!S M=7!P;W)T960@;VX@<V]C:V5T`%!R;W1O8V]L(&9A;6EL>2!N;W0@<W5P<&]R M=&5D`$%D9')E<W,@9F%M:6QY(&YO="!S=7!P;W)T960@8GD@<')O=&]C;VP@ M9F%M:6QY`$%D9')E<W,@86QR96%D>2!I;B!U<V4`0V%N)W0@87-S:6=N(')E M<75E<W1E9"!A9&1R97-S`$YE='=O<FL@:7,@9&]W;@!.971W;W)K(&ES('5N M<F5A8VAA8FQE`$YE='=O<FL@9')O<'!E9"!C;VYN96-T:6]N(&]N(')E<V5T M`%-O9G1W87)E(&-A=7-E9"!C;VYN96-T:6]N(&%B;W)T`$-O;FYE8W1I;VX@ M<F5S970@8GD@<&5E<@!.;R!B=69F97(@<W!A8V4@879A:6QA8FQE`%-O8VME M="!I<R!A;')E861Y(&-O;FYE8W1E9`!3;V-K970@:7,@;F]T(&-O;FYE8W1E M9`!#86XG="!S96YD(&%F=&5R('-O8VME="!S:'5T9&]W;@!4;V\@;6%N>2!R M969E<F5N8V5S.B!C86XG="!S<&QI8V4`0V]N;F5C=&EO;B!T:6UE9"!O=70` M0V]N;F5C=&EO;B!R969U<V5D`%1O;R!M86YY(&QE=F5L<R!O9B!S>6UB;VQI M8R!L:6YK<P!&:6QE(&YA;64@=&]O(&QO;F<`2&]S="!I<R!D;W=N`$AO<W0@ M:7,@=6YR96%C:&%B;&4`1&ER96-T;W)Y(&YO="!E;7!T>0!4;V\@;6%N>2!P M<F]C97-S97,`5&]O(&UA;GD@=7-E<G,`1&ES8R!Q=6]T82!E>&-E961E9`!3 M=&%L92!.1E,@9FEL92!H86YD;&4`5&]O(&UA;GD@;&5V96QS(&]F(')E;6]T M92!I;B!P871H`$YO="!A('-T<F5A;2!D979I8V4`5&EM97(@97AP:7)E9`!/ M=70@;V8@<W1R96%M(')E<V]U<F-E<P!.;R!M97-S86=E(&]F(&1E<VER960@ M='EP90!.;W0@82!D871A(&UE<W-A9V4`261E;G1I9FEE<B!R96UO=F5D`$1E M861L;V-K('-I='5A=&EO;B!D971E8W1E9"]A=F]I9&5D`$YO(')E8V]R9"!L M;V-K<R!A=F%I;&%B;&4`````%^\.$@```````+P#'_($````PA1>F8]"K?S0 MK`2M\#*/_W^M[-^M[,$,7'[=K`C[`^]&`@``UZWL&0O0K?!0UJWPE&`1-N$' MK?PDSJWL4-%0K?@8&I2]\)B]\%#14`H3!=:M\!$6WZWLFKWP?A$&WZWLF@!^ M^P+OE`D``-"L!%`$````%^^*$0```````+P3'_($`!?O>A$```````"\CVT` M'_`$````%^]F$0```````+R/;@`?\`0```!`*",I<W1R8W!Y+G,)-2XS("A" M97)K96QE>2D@,R\Y+S@V``!``-"L!%/0K`A6.@"/__]F$@LHC___9F/04581 M[<)64=91*%%F8]"L!%`$```(GLX`_%[0K`1;X0*K$$*J!*L0WLT`_*L$WLT` M_*L(,H\`!*L,U&O=6\$,7'[=K`C[`^\X`0``W5O[`>\+"@``J`2K$-2K!-2K M"-2K#-1K$1#=6\$,7'[=K`C[`^\.`0``X06K$`7.`5`1`M10!````0(#!`4& M!P@)"@L,#0X/$!$2$Q05%A<8&1H;'!T>'R`A(B,D`"8G*"DJ*RPM+B\P,3(S M-#4V-S@Y.CL\/3X_0$%"0T1%1D=(24I+3$U.3U!14E-455976%E:6UQ=7E]@ M86)C9&5F9VAI:FML;6YO<'%R<W1U=G=X>7I[?'U^?X"!@H.$A8:'B(F*BXR- MCH^0D9*3E)66EYB9FIN<G9Z?H*&BHZ2EIJ>HJ:JKK*VNK["QLK.TM;:WN+FZ MN[R]OK_`P<+#Q,7&Q\C)RLO,S<[/T-'2T]35UM?8V=K;W-W>W^#AXN/DY>;G MZ.GJZ^SM[N_P\?+S]/7V]_CY^OO\_?[_P`\QL0#45!%3T*W\4^$'HQ`?P:,, MHPA4T:,$5!@3T5(*$PZ04K,$UJ,$U&/6K?`1'+L#W:W\W5+[`N]5!P``U5`8 M!>,?K?``UJWPN@.>[ZW^__]3?;W\5.`?5*G`4*WPU%+54!4?U505&YJ!4Y5# M[XS^__\2!\X!4M=1$0B04X775/50X7U4O?S"4*WPX`%2`_10`06:@5*50N]A M_O__$P,Q9?_64-=1T`)2!>,?K?``T*WP4`2>S@#_7M"L!%O0K`RM_-"L"%S4 MK?`\C___4-!;47V]_%3#4552&0C14%(5`]!24#!E_]!16^$!4MR5BQ.^T%Y5 M?%E\5IJ+4(]0((]8G`*R`+(`I@*R`+(`L@"R`+(`L@#L`JP"L@"R`N$"L@"X M`L,"PP+#`L,"PP+#`L,"PP+#`K(`L@"R`+(`L@"R`+(`L@"R`+(`GP&]`+(` MO0"R`+(`L@"R`+(`L@"R``0!L@"R`+(`L@"R`',!L@"R`+T`L@"R`+(`L@"R M`+(`L@"R`+(`L@"0`I\!'@0'`^0$^/^R`+(`L@#X_[(`L@`$`;(`L@"R`,H` ML@!S`;(`L@`3`9!0A1(#,?#^,=D!R(]`````6HP@4#$Q_]!84.`!6@/.`5#0 MC%(Z`%!BT%%5T%)1,2$!,#$R,S0U-C<X.6%B8V1E9C`Q,C,T-38W.#E!0D-$ M14;0'E+0`U.>[]3___]7$1C0'%+0!%.>[\7___]7X09:!Y[ORO___U?.4U;4 M4<`$5=",4.]24U!1D$%GA?$`5E+Q_WQ6E&4[,`NN!.$%6GK5K/P3==%3!!(2 MD(]X4.$&6@20CUA0D%!QT`)7D#!Q$5G*CY````!:[P$?;%#Y4`IN-`INK@@@ M"JX("F[IC!8@`>_W````"FX1"ZH!`/F,"FX8`M97.`IN[^W___^N"#L@"ZX( MU5<2$N$$6@60*W$1!^$'6@60(''65^`!6@/0`5C#4556PE=6PE98%2;`5U'= M49Y(I2!2PEU2&0/"4E@H5F%(82P`83!8O@##5XY1P5935<-155C#6%E0%2#@ M`UH<X`):!!!2$1305U`5"<)06,)063`B_<-865`0-\)86=!84#`3_>$!4AW7 M4)J!4GV]_%3T5`4PO/P1ZY!2A=:M\'U4O?P1W-!94!0#,6C]$`@Q8_V0,%(1 M`Y`@4L)06=U1T%!7PE!>+`!@4E=NT%=0T%Y1,,/\P%=>T(Y1!1S0C%"04(70 M7E$Q:?_(CX````!:,5+]R"!:,4S]R!!:,4;]R`A:,4#]X`!:!^`!6A+(!%K@ M`5H+WDEI63Y)H-!9$0G>2&A8/DB@T%C(`5HQ%_W46,@"6LH!6C$,_>`!6@W0 MC%D8YLP(6LY961'>T(Q8&-G.6%@1U.`!6@/0!E@PZP'!K?A85]!75A@"U%?1 M5Q\5`]`?5\,15U#X4!%N!5>N$!PC\P!6']!74-:M^-97^%`![TC___\`5ZX0 M>(__5U"(K>]`KA">KA!1T%=6G^]3_O__GZ$PGJ$P4Y`#@RP`88^15F.48SA6 M8:$PH1##5E51T&Y3U%?IK>\%D"V#UE?0K?A0%`60,(,1']%05A4#T%90PE!6 MPE"M^"A086/0K?A0%08L`&$P4&/06%`4".`%6@3C"5H#D"Z#SJWX4!41T5!8 M%0/06%#"4%@L`&$P4&/06%#14%85`]!64,)06"A086/06%`5&9Y`HR!2PEU2 M&0;"4E#04%C"4%@L`&$P4&/04U6Z`@4#1&5"*P22`-98X`%:`]`'6##2`-!8 M5]%7'Q4#T!]7PQ%74/A0$6X%5ZX0'![6K?C#`5=0^%`![SW^__\`5ZX0>(__ M5U"(K>]`KA#@"%H]GJX041`FT%%6PP&M]%#Y4`)N.`)N[Y?___]ET%91X`9: M`S$L_8P@I?PQ)?W05U;76-"M^*WTT`&M^#'!_L$#K?A0&3#"`U#14%@4*-!7 M5L)06)ZN$%$PI?[@!5H0X`E:#)%U,!/[D64N$P+65>$(6I4QW?R>KA!1,+'_ MY`A:VN`!6@/0!EC56!0#T`%8X@A:`S$N_S$K_Y2M[W",51(#,9\`%`9R5566 MK>_O!PA54IZB@%+$.U(9!9["Q`!2GJ*>4L:/Q````%(P@@!Q4%44`M92T%*M M^,Y24M%2'14*9._A````5<(04L`)4A;O7````'105%505?E0":X0^`@)KA`` M$:X$=.^R`````%505?E0"*X0T%A7G^^<_O__T8YN%03`K?A7T5<1&0EQ50`9 M!(@0K@P@"*X0$:X$B*WOK@P%U%#0`:WX$:X```$`<`A0U%1^[TT```!3U5(8 M!\Y24N(&4@#A5%(#9&-0P`A3\P54\N4&4A-G4`A0T1Q2$@?`[\3___]1SE)2 MP2A24^%3[T$````'PN^N____49I"[V(```!4!2!"````````R$,````````< M1P!``````+Y-(+P`````#EO)&P2_``"==:W%*ZBV<%!"//*'````]G]6=M.( MM6*Z]3(^#DC;45,GL>_KI0=)6]D/$\W_OY?]O+8C+#L*S0`````````````` M``````````````````"@R#J$Y-R2FP#`6*X8[P``#YZNN%[0K`A;X0BK$`BH M`JL0JA&K$.`!JQ!WS@%0!-19T%E8FJP$4`3A`JL0()"L!*W_T`%8W5C?K?^8 MJQ)^^P/OM0<``-!06=1K,>H`T*L(6A,#,;0`WZVXF*L2?OL"[^(#``#54!D% MU:WH%`@RCP`$K?@1!="MZ*WXW:WX^P'O$@0``-!06M!:JP@21Z@$JQ#A!ZL0 MDM"K"%J0K`2[!-:K!,&K#%I0T:L$4!@)D:P$"A,#,6C_PUJK!%C=6-U:F*L2 M?OL#[S`'``#04%G06JL$,73_J`BK$-"M^*L,T5N/I#$``!(=F._@#@``?OL! M[VX#``#54!,+X@>K$`#06JL$$8[46=!96!$@PUJK!%G065@5%M!:JP3=6=U: MF*L2?OL#[],&``#04%G#`:L,:Y"L!(K06JL$T5A9$@,QY/ZH(*L0,=3^``[0 MK`1;,JL04,J/^?___U#14`(20-"K"%H3.L-:JP19%3/06JL$LX^$`*L0$P34 M4!$$T*L,4-!0:]U9W5J8JQ)^^P/O:P8``-%061,(J""K$,X!4`344`0```S0 MK`1;S@%:LX\#`:L0$S+@!JL0+=U;^P'OA____]!06IBK$G[[`>\U````U5`8 M`\X!6N$#JQ`*W:L(^P'O\P,``-1KU*L(U*L$U*L,M*L0E*L2T%I0!```%^\" M!@```````+P&'_($```.U>_X#P``$E;>[XP-``!:$0^SCP,!JA`2!-!:4`3` M%%K16H\@,P``&>C[`.]0````U5`2*M`,[X\/```1'M!K4+./`P&@$!,AP`1; MT5OOL`\``!D1T!CO;P\``-10!-#OF@\``%O5:Q+4U6L2#MT4W0'[`N\V`0`` MT%!KT&M0!```#L($7OL`[[X!``#04*W\W03=4/L"[Q,!``#04.]<#P``U5`2 M`]10!'@"K?Q0P>]*#P``4.](#P``WN_:#```6M#O-P\``%L1!M!:B\`46M%: MCR`S```9\=T!W:W\^P+OR0```-!0[SX.``#0`5`$``S5[P8/```2#/L`[W__ M___54!(!!-#O\@X``%L1%=5K$@[=%-T!^P+OD````-!0:\`$6]%;[]<.```9 MX@0`#M"L!%O5[\0.```2(M[O6`P``%G168\@,P``&#NSCP,!J1`3!=U9^P%K MP!19$>70[YH.``!:$1?5:A,0T&I0LX\#`:`0$P7=:OL!:\`$6M%:[WT.```9 MX`0``-_O!/[___L![Y?___\$`````/L`[^7____=K`3[`>]5!```!``.T*P$ M6]"L"%K$6UK=6OL![\8```#04%D3"]U:W5G[`N\V````T%E0!```W:P$^P'O MY@$```0`0"@C*6)Z97)O+G,)-2XS("A"97)K96QE>2D@,R\Y+S@V``````#0 MK`13$0K"4*P(+`!C`%!C/(___U#1K`A0%.LL`&,`K`AC!````!?OO@,````` M``"\/A_R!``7[ZX#````````O(]9`!_P!```````P@A>WZWZW8\(=`9`W:P$ M^P/O%````-50&`/44`30`5`$`!?O=@,```````"\-A_R!```#]7O[`T``!)> M^P#O#P,``-!06-!8[]D-``#=`/L![P@#``#04%O#!%A0PP%84=)14<M16U'# M45!8$Q#=6/L![^<"``#64!(#U%`$U%K0"%D1!<!96=9:T>^6#0``61KRT%KO MD`T``,,$[X4-``!8T:P$6!H*T`A9U%K.!%@1%]#O;@T``%G0[VL-``!:$0?` M65D3M-9:P5A94-&L!%`:[]!*[]0,``!;$A/=6OL![R````#02N_!#```6Q.+ MT&M*[[8,``"0C^]K]EJK`<$$6U`$```,P@A>P0.L!%!X4`%0T%!:%`$$T5KO M!0T``!@0T._]#```K?S'6JW\K?@1#<'O[0P``%JM_-`!K?C=K?S[`>\4`@`` MT%!;T5N/_____Q(!!-"L!%#06T#O2PP``!$'P5I;:\!:6_6M^/4$```,U:P$ M$@$$PP2L!%J::E#14(_O````$P$$FJH!6]!+[Q<,``!JT%I+[PX,```$```, MP@Q>U*WTU:P$$@O=K`C[`>]Y_O__!,,$K`2M_)J]_%#14(_O````$@W6K?30 MK?Q0FJ`!6A$/W0'=K?S[`N^F````T%!:P0-:4'A0`5O16^\N#```'@7"!%L1 M"\,$[R`,``!0P%!;U:WT$T#56A,AP0):4'A0`5K16N\$#```'@7"!%H1"\,$ M[_8+``!0P%!:T:P(6QH+T:P(6AL%T*P$4`3=K`3[`>\C____W:P(^P'OV?W_ M_]!0K?@2`]10!-&L!*WX$Q[1K`A;'@;0K`A0$0/06U#=4-VM^-VL!/L#[U\` M``#0K?A0!``.U%K46=!*[Q4+``!;$1716:P($Q/16ZP$$@306E`$UEG0:UO5 M6Q+GUEK16AX9U,X!4`0``$`H(REB8V]P>2YS"34N,R`H0F5R:V5L97DI(#,O M.2\X-@```$``T*P$4="L"%/0K`Q6T5%3%`H9%P3"4%8H4&%C/(___U#15E`4 M[RA686,$P%91P%93/(___U`1&,)05L)04<)04RA086,\C___4,)04<)04]%6 M4!3CPE91PE93*%9A8P0````7[TX`````````O(]``!_P!```````P>\("@`` MK`1^W0'07%/07ER\$1\0T._S"0``4,"C!._J"0``!!?O$P```````!?O"@`` M``````"\!!_R!`#04._-"0``S@%0!````+P!```````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M``````````4````D2&5A9&5R.B`O87!O;&QO+W5S<C(O<'=L+V)R>6%N="]B M:6XO<W)C+W-A9F5?<FTN8RQV(#$N.2`X-R\P-R\P-B`P.#HU,#HQ."!P=VP@ M17AP("0``````````"5S.B!5<V%G92`E<R!;+69I<ET*`"5S.B!A(")S869E M(B!R96UO=F4@(%9E<G-I;VX@`"12979I<VEO;CH@,2XY("0`"@`E<SH@=6YK M;F]W;B!O<'1I;VXN("!5<V%G93H@)7,@6RUF:7)="@!705-410`O=7-R+W1M M<``O+FQA<W1R;0!W*P`E<SH@=V%S=&4@8F%S:V5T(&`E<R<@+2T@)7,*`"5S M.B!W87-T92!B87-K970@8"5S)R`M+2!N;W0@82!D:7)E8W1O<GD*`"5S"@`E M<SH@)7,@+2T@)7,*`"5S.B`E<R`M+2!$:7)E8W1O<GD*`"5S.B`E<S\@`"5S M.B!O=F5R<FED92!P<F]T96-T:6]N("5O(&9O<B`E<S\@`"5S+R,E9"5S`"5S M.B!C86XG="!R96UO=F4@*&-O<'DI(&1I<F5C=&]R>2`E<R`M("@E<RD*`"5S M.B!004Y)0R`M('=R:71E(&5R<F]R('1O("5S("@E<RD*`"5S.B!C86XG="!C M<F5A=&4@)7,@:6X@8"5S)SH*`'5N<V%F96QY(')E;6]V92`E<S\@`"5S.B!C M86XG="!R96UO=F4@)7,@+2`E<PH`)7,@)7,@)7,*`$`H(REG971W9"YC"34N M,B`H0F5R:V5L97DI(#,O.2\X-@```"\`9V5T=V0Z(&-A;B=T('-T870@+P`N M+P!G971W9#H@8V%N)W0@<W1A="`N`"XN+P!G971W9#H@8V%N)W0@;W!E;B`N M+@!G971W9#H@<F5A9"!E<G)O<B!I;B`N+@!G971W9#H@<F5A9"!E<G)O<B!I M;B`N+@`O`"\```!`*",I<')I;G1F+F,)-2XR("A"97)K96QE>2D@,R\Y+S@V M``!`*",I9V5T96YV+F,)-2XR("A"97)K96QE>2D@,R\Y+S@V``!`*",I9F]P M96XN8PDU+C(@*$)E<FME;&5Y*2`S+SDO.#8````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M````````````````````0"@C*6-L;W-E9&ER+F,@,2XQ(#@V+S`R+S`S(%-- M20!`*",I;W!E;F1I<BYC(#$N,2`X-B\P,B\P,R!334D``(PP````````0"@C M*7)E861D:7(N8PDS+C,).#8O,#DO,C<);70@6&EN=0``0"@C*69I;&)U9BYC M"34N,R`H0F5R:V5L97DI(#,O.2\X-@``4````$`H(RES<')I;G1F+F,)-2XR M("A"97)K96QE>2D@,R\Y+S@V```Q``!`*",I9G!R:6YT9BYC"3,N,@DX-B\Q M,"\Q,`EM="!8:6YU``!`*",I9&]P<FYT+F,)-2XT("A"97)K96QE>2D@,R\Y M+S@V``!`*",I9FQS8G5F+F,)-2XR("A"97)K96QE>2D@,R\Y+S@V``!`*",I M9FEN9&EO<"YC"34N-B`H0F5R:V5L97DI(#,O.2\X-@`````````````````` M`````0`````````````````````````"``$```````````````````````8` M`@`````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M````````````````````````````````````X#,``$`H(REE>&ET+F,)-2XR M("A"97)K96QE>2D@,R\Y+S@V`````$`H(REC86QL;V,N8PDU+C(@*$)E<FME M;&5Y*2`S+SDO.#8``$`H(REI<V%T='DN8PDU+C(@*$)E<FME;&5Y*2`S+SDO M.#8``$`H(REM86QL;V,N8PDU+C8@*$)E<FME;&5Y*2`S+SDO.#8```0```!\ M-```?#0````````````````````````````````````````````````````` M```````````````````````````````````$````!`#B!@`````+````!`"2 M`%0````5````!@````@L```<````!``````'```D````!``N!Q`'```K```` M!`#^`:0'```S````!``*!\P)```[````!``""-P)``!$````!`#_!.P)``!- M````!`!M!P`*``!6````!`!^`B@*``!?````!`!R!70*``!G````!`#%!TP+ M``!P````!`"\!_@+``![````!`!Y`R0,``"%````!`"K!LP,``",````!`#" M`]P,``"6````!`#%!^0-``"F````!`"7!O@-``"M````!`#P`P@.``"V```` M!`"<"&`.``"_````!`!U"'`.``#(````!`"<`Y@/``#1````!````)@/``#9 M````!````-@7``#@````!`"<`^@7``#J````!`!F`EP8``#R````!`#%!VP8 M``#]````!`#;!8`8```*`0``!`"[`I08```3`0``!``A`.08```=`0``!`!, M!E09```F`0``!`!F`N@A```O`0``!`!Y`^0C```W`0``!``[!_0C``!!`0`` M!``!!I`E``!(`0``!`#B!J0E``!1`0``!`!Y`]PE``!9`0``!`![!R@F``!A M`0``!`"B!S@F``!Q`0``!`!+!TPF``!Z`0``!`",!W`F``""`0``!`",!X`F M``"+`0``!`#Q!A`I``"3`0``!`#Q!I@I``"A`0``!`#7`:PI``"H`0``!`#! M`]PI``"P`0``!`"5".PI``"Y`0``!`"7!_@I``#!`0``!P!R!0`L``#*`0`` M!0`.!0````#0`0``"0"7!\`S``#7`0``!0!^`U0```#=`0``!0"@`Y`E``#C M`0``!0`N!DH```#O`0``!P"2``0L``#V`0``!P`I!6`L``#]`0``"0#"`\0S M```#`@``"0`U",@S```*`@``"0`3!LPS```/`@``"0#0!=`S```4`@``"0!O M`]0S```>`@``!0#"!;P/```K`@``!0"<!;P&```]`@``!0`8"``*``!%`@`` M!0"K!H`F``!-`@``!0!@!B@*``!5`@``!P`N`Y`Q``!;`@``!0!F`N@A``!D M`@``!0"<""P.``!L`@``!0!T!W0*``!S`@``!0`""-0)``!Z`@``!0!>!Z0' M``"!`@``!0"D!>08``"*`@``!0`!!HHC``"2`@``!0!Y`S0'``"8`@``!0#_ M!.0)``"@`@``!0!&`.@7``"I`@``!0!M!_0)``"Q`@``!0!_`S(%``"W`@`` M!0"/"-P&``"_`@``!0##`]0,``#%`@``!0`N!P@'``#,`@``!0!U"&@.``#4 M`@``!0"5".0I``#;`@``!0"<`^`7``#A`@``!0`[!^PC``#H`@``!0"\!W`+ M``#P`@``!0`<".PI``#W`@``!0#^`7`.`````P``!0#P`P`.```&`P``!0`A M`+@8```.`P``!0"B!S`F```5`P``!0!:`/@+```?`P``!0#:!=P,```H`P`` M!0`*!R0,```Q`P``!0!^`E0:```Z`P``!0!^!/0C``!$`P``!0#%!V08``!+ M`P``!0!Z`\`G``!1`P``!0"7!NP-``!@`P``!0#;!708``!J`P``!0"[`H@8 M``!V`P``!0!*![(-``!_`P``!P`2!R`S``"*`P``!0!,!C`C``"2`P``!P": M`M0P``"<`P``!0`S!TPF``"D`P``!0"C`G8D``"R`P``!0!K!:0E``"Z`P`` M!0!+!T`F``#)`P``!0!7!.8D``#5`P``!0!I!20E``#=`P``!0"6`WXE``#G M`P``!0#B!O@I``#N`P``!0![!P`F``#U`P``!0#[!LXE``#\`P``!0",!W@F M```#!```!0#7`:`I```0!```!0#!`ZPI```6!```!0"[!50G```@!```!P#@ M!+0S```Q!```!0`W!O`G```Z!```!0#Q!C0I``!!!```"0#,!7PT``!&!``` M!P"=`+@S``!-!```!P`]`+PS``!4!```8W)T,"YO`'-A9F5?<FTN;P!?<F-S M:60`8W)E870N;P!G971S+F\`9V5T=V0N;P!L<W1A="YO`&%C8V5S<RYO`')E M;F%M92YO`'!R:6YT9BYO`&=E=&5N=BYO`&9O<&5N+F\`<FEN9&5X+F\`8VQO M<V5D:7(N;P!O<&5N9&ER+F\`;W!E;BYO`')E861D:7(N;P!G971D:7)E;G1R M:65S+F\`<W1A="YO`'-T<F-A="YO`'5N;&EN:RYO`&9I;&)U9BYO`&5R<FQS M="YO`%]S8V-S:60`<F5A9"YO`'-P<FEN=&8N;P!L<V5E:RYO`'-I9V)L;V-K M+F\`<VEG<V5T;6%S:RYO`'-T<F-P>2YO`&9P<FEN=&8N;P!D;W!R;G0N;P!F M;'-B=68N;P!C;&]S92YO`&9I;F1I;W`N;P!E>&ET+F\`8V%L;&]C+F\`8GIE M<F\N;P!F<W1A="YO`&=E=&1T86)L97-I>F4N;P!I<V%T='DN;P!I;V-T;"YO M`&UA;&QO8RYO`&)C;W!Y+F\`9V5T<&%G97-I>F4N;P!S8G)K+F\`=W)I=&4N M;P!C97)R;W(N;P!?97AI="YO`%]E;G9I<F]N`'-T87)T`%]E<G)N;P!?;6%I M;@!?97AI=`!?;6]N8V]N=')O;`!M8V]U;G0`7T9L86=S`%]S8G5F`%]W87-T M90!?=VAO`%]B=68`7VQO9U]F:6QE`%]S>7-?97)R;&ES=`!?>F%P7VQE861I M;F=?<&%T:`!?<')I;G1F`%]M86QL;V,`7V=E=&5N=@!?7VEO8@!?7V9L<V)U M9@!?<W1R8V%T`%]F;W!E;@!?;'-T870`7V=E='=D`%]F<')I;G1F`%]F8VQO M<V4`7V=E=',`7V%C8V5S<P!?<W!R:6YT9@!?<F5N86UE`%]C;W!Y`%]P=71L M;V<`7V]P96X`7V-R96%T`%]U;FQI;FL`7W=R:71E`%]R96%D`%]C;&]S90!? M<FEN9&5X`&-E<G)O<@!?7V9I;&)U9@!?<W1A=`!?<W1R8W!Y`%]F<W1A=`!? M8VQO<V5D:7(`7W)E861D:7(`7V]P96YD:7(`7U]D;W!R;G0`7U]F:6YD:6]P M`%]L<V5E:P!?9G)E90!?9V5T9&ER96YT<FEE<P!?<VEG8FQO8VL`7W-I9W-E M=&UA<VL`7W1E;&QD:7(`7U]S;6%L;&)U9@!?9F9L=7-H`%]S>7-?;F5R<@!? M:7-A='1Y`%]?9E]M;W)E9FEL97,`7V-A;&QO8P!?9V5T9'1A8FQE<VEZ90!? M9E]P<F5A;&QO8P!?7V9W86QK`%]?8VQE86YU<`!?7V5X:70`7V)Z97)O`%]C M9G)E90!?:6]C=&P`7V=E='!A9V5S:7IE`%]S8G)K`%]M;W)E8V]R90!?<F5A M;&QO8U]S<F-H;&5N`%]R96%L;&]C`%]B8V]P>0!?96YD`&UI;F)R:P!C=7)B M<FL````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` F```````````````````````````````````````````````````` ` end
graham@sce.UUCP (Doug Graham) (05/03/88)
In article <1079@mcgill-vision.UUCP>, mouse@mcgill-vision.UUCP (der Mouse) writes: > > I looked at doing this for 4.3. Normally, people will dismiss the idea > because 4.3 doesn't keep a freelist in the usual sense - it's more like > bitmaps of free blocks. But I considered leaving the block pointers > around, just zapping the size field of the inode, so if you caught it > before the blocks got reused (always a requirement), you could see the > pointers still there. However, it looks as though it isn't going to > work. When a file is extended, it is done by writing past the end. If > there is a hole, the block addresses there are left untouched as far as > I can tell, which means they better be zero, or the file hasn't > acquired holes; it's suddenly acquired blocks that nobody ever expected > it to have. Bad news. This might be fixable, but would require a fair > piece of kernel work (wherever the size is grown, it must be careful to > clear block addresses as appropriate). > > der Mouse > If this is the case, a block used to contain pointers to indirect blocks would have to be cleared when the file was extended. Couldn't the inode be treated similary: either when the inode is re-used, or when the first data block is assigned to the new file, the inode is cleared. Seems to me like a simple matter of moving a bit of code around. The code that clears the inode when it is de-allocated, is moved to the place where the inode is allocated. A co-worker and I have just finished recovering a directory full of files that had been accidently deleted. Fortunately, he was using a single-user SUN, so that the chances of the blocks being re-used were slim. Since there was no useful information left in the inode, (except the UID, why?) we could only search all of the free blocks in the filesystem. We wrote a program that searched all of these blocks looking for keywords that were known to exist in the files deleted. (Doesn't work well for binary files). If the inodes had been largely intact, a lot of time could have been saved. Doug.
strong@tc.fluke.COM (Norm Strong) (05/04/88)
In article <1079@mcgill-vision.UUCP> mouse@mcgill-vision.UUCP (der Mouse) writes: }In article <54@lakart.UUCP>, dg@lakart.UUCP (David Goodenough) writes: }> From article <367@axis.fr>, by inra@axis.fr (Inst. Natl. Rech. Agronomique): } }>> After rm command is it possible to recover removed files } I solved this problem by creating a directory called ~/junk. In my alias file is a line like this: alias rm '/bin/mv -f \!* ~strong/junk' Every rm command is now converted to a mv to junk directory file. After sufficient time has elapsed, you can clear the directory and start over again by typing /bin/rm ~/junk/* -- Norm (strong@tc.fluke.com)