[Back to FILES SWAG index]  [Back to Main SWAG index]  [Original]

{$M 16000,0,0}
Program FP;
Uses
  Crt, Dos,UTILS,ALLMIX,process;  { support files are contained in the XX3402 Code below }
label 1,2;

Const
        BufSize                =        512;
        Version                =        '1.3';
        MaxError    =        7;

Const
  S = '           ';
  archive = $20;

const
    MajorVer = '1';                     { Current major version number }
    MinorVer = '95';                    { Current minor version number }
    Year     = 1991;                    { Release year }

{$IFDEF MsDos}
    fsDirectory = 64;                   { Set directory length }
    faReadOnly = ReadOnly;              { Set directory flags }
    faHidden = Hidden;
    faSysFile = SysFile;
    faVolumeID = VolumeID;
    faDirectory = Directory;
    faArchive = Archive;
    faAnyFile = AnyFile;
{$ENDIF}

{$IFDEF MsDos}
type
        TRegisters = Registers;                                { Used for DOS calls }
    TSearchRec = SearchRec;             { Used for search record }
{$ENDIF}

Type
        EDMode                        =        (EnCrypt,EnCryptPass,DeCrypt);
        String79                =        String[79];
        FilePaths                =        Array [1..2] Of String79;
        Errors                        =        1..(MaxError - 1);


Var
  List         : Array[1..200] of String[15];
  AttrList     : Array[1..200] of String[15];
  filattr      : ARRAY[1..200] OF CHAR;
  COUNT,Pos, First   : Integer;
  C            : Char;
  Cont         : Integer;
  DirInfo      : SearchRec;
  NumFiles     : Integer;
  I,J:INTEGER;
  key:char;
  lasts,LAST,pass:string[15];
  pass1:string[2];
  NEW,point:integer;
  delcount:integer;
  F: file;
  Attr: Word;
  lines:word;
  command:string[25];
 _file:filepaths;

Procedure WriteXY( X,Y : Byte; S : String79 );
Begin        (* WriteXY *)
        GotoXY(X,Y);
        Write(S);
End;        (* WriteXY *)

Procedure Rm( FileName : String79 );
Var
        F : File;

Begin        (* Rm *)
        If (FileName = '') Then Exit;
        Assign(F,FileName);
        Erase(F);
End;        (* Rm *)

Procedure Center( Y : Byte; S : String; OverWriteMode : Errors );
Var
        X : Byte;

Begin        (* Center *)
        GotoXY(1,Y);
        Case (OverWriteMode) of
                1        : For X := 2 To 78 Do WriteXY(X,WhereY,' ');
                2        : ClrEOL;
        End;        (* Case *)
        X := ((79 - Length(S)) Div 2);
        If (X <= 0) Then X := 1;
        WriteXY(X,Y,S);
End;        (* Center *)


Procedure OutError( S : String79; X,OWM : Errors );
Var
        T : String79;

Begin        (* OutError *)
        GotoXY(1, WhereY);
        Case ( X ) Of
                1        : T := ('Incorrect Number of parameters.');
                2        : T := ('Input file "'+ S +'" not found.');
                3        : T := ('Input and Output files conflict.');
                4        : T := ('User Aborted!');
                5        : T := ('Input file "'+ S +'" is corrupted!');
                6        : If (T = '') Then T := ('DOS Input/Output Failure.')
                                Else T := S;
        End;        (* Case *)
        TextColor(LightRed);
        Center(WhereY,T,OWM);
        TextColor(LightGray);
        If (OWM = 1) Then WriteLn;
        Halt(x);
End;        (* OutError *)


Procedure GetStr( Var S : String79; Prompt,FName : String79; Show : Boolean );
Var
        Max,
        Min        : Byte;
        A        : Char;
        X        : Byte;

Begin        (* GetStr *)
        If (FName = '') Then
        Begin
                Max := 54;
                Min := 0
        End Else
        Begin
                Max := 25;
                Min := 3
        End;
        TextColor(LightGray);
       WriteXY(1,WhereY,Prompt);
        Repeat
                GotoXY(Length(Prompt) + 1,WhereY);
                ClrEOL;
                If (Show) Then WriteXY(Length(Prompt) + 1,WhereY,S)
                Else For X := 1 To Length(S) Do Write(#249);
                A := (ReadKey);
                Case ( A ) of
                        #32..#126 :
                                If (Length(S) < Max) Then S := S + A
                                Else
                                Begin
                                        Sound(100);
                                        Delay(12);
                                        NoSound;
                                End;
                        #8 :
                                If (Length(S) > 0) Then
                                        Delete(S,(Length(S) ), 1);
                        #0 :
                                A := ReadKey;
                        #27:
                                Begin
                                        Rm(FName);
                                        OutError('',4,2);
                                End;
                End;        (* Case *)
        Until (A = #13) And (Length(S) >= Min);
End;        (* GetStr *)

Procedure GraphIt( Var F1, F2        : File;
                                   Var OldX                : Byte;
                                   Hour,
                                   Min,
                                   Sec,
                                   Sec100                : Word;
                                   BoxSetUp                : Boolean );
Var
        F1Size,
        F2Size        : LongInt;
        Percent,
        X,
        NewX        : Byte;
        H,
        M,
        S,
        S100        : Word;
        A,
        B,
        C,
        D,
        Temp        : String79;

Begin        (* GraphIt *)
        If (BoxSetUp) Then
        Begin
                Percent := 0;
                OldX := 1;
         {       GotoXY(1,WhereY);
                WriteLn('ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»');
                WriteLn('º                                                                             º');
                WriteLn('ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ');}
            {    GotoXY(3,WhereY - 2);}
        End Else
        Begin
           textattr:=red+(16*white);
                GetTime(H,M,S,S100);
                If (Sec100 <= S100) Then Dec(S100,Sec100)
                        Else
                        Begin
                                S100 := (S100 + 100 - Sec100);
                                If (S > 0) Then Dec(S);
                        End;
                If (Sec <= S) Then Dec(S,Sec)
                        Else
                        Begin
                                S := (S + 60 - Sec);
                                If (M > 0) Then Dec(M);
                        End;
                If (Min <= M) Then Dec(M,Min)
                        Else
                        Begin
                                M := (M + 60 - Min);
                                If (H > 0) Then Dec(H);
                        End;
                If (Hour <= H) Then Dec(H,Hour)
                        Else H := (H + 12 - Hour);
                Str(H,A);
                Str(M,B);
                Str(S,C);
                Str(S100,D);
                Case (S100) of
                        0..9        : D := ('0' + D);
                End;        (* Case *)
                If (M > 0) Then
                Case (S) of
                        0..9        : C := ('0' + C);
                End;        (* Case *)
                If (H > 0) Then
                Case (M) of
                        0..9        : B := ('0' + B);
                End;        (* Case *)
                If (H = 0) Then
                Begin
                        If (M = 0) Then Temp := (Concat(C,'.',D,' sec') )
                        Else Temp := (Concat(B,' min ',C,'.',D,' sec') );
                End
                Else If (H = 1) Then Temp := (Concat(A,' hr ',B,' min ',C,'.',D,' sec') )
                                Else Temp := (Concat(A,' hrs ',B,' min ',C,'.',D,' sec') );
            F1Size := FileSize(F1);
                F2Size := FileSize(F2);
                If (F2Size <= F1Size) Then
                Percent := ((F2Size * 100) Div F1Size )
                        Else Percent := 100;
                NewX := (((Percent * 76) Div 100) + 2);
                If (NewX < 3) Then NewX := 3;
                textattr:=lightred+(16*white);   {*************************}
{**}            For X := OldX To NewX Do WriteXY(X,{WhereY}23,#249);{}
                OldX := NewX;
                textattr:=9+(16*white);
                Center({WhereY}1 + {1}23,(#181 + ' ' + Temp + ' ' + #198),5);
                GotoXY(NewX,WhereY - 1);
        End;
End;        (* GraphIt *)

Function Shrink( P : PathStr ) : String79;
Var
        D        : DirStr;
        N        : NameStr;
        E        : ExtStr;

Begin        (* Shrink *)
        FSplit(P,D,N,E);
        Shrink := N + E;
End;        (* Shrink *)

Function UpStr( S : String ) : String;
Var
        X        : Byte;

Begin        (* UpStr *)
        For X := 1 To Length(S) Do
                S[x] := (UpCase(S[x]) );
        UpStr := S;
End;        (* UpStr *)

Procedure EnCode( _File : FilePaths; Protect : Boolean );
Var
        Seed,
        PI,
        Y,
        OldX                : Byte;
        I,
        Increment        : Integer;
        Buf                        : Array [1..BufSize] of Char;
        Hour,
        Min,
        Sec,
        Sec100,
        Status                : Word;
        Temp,
        Pass                : String79;
        F1,
        F2                        : File;

Begin        (* EnCode *)
        Pass := '';
    {$I-}
        Assign(F1, _File[1]);        (* input file  *)
        Assign(F2, _File[2]);        (* output file *)
        Reset(F1,1);
        {CheckError('','Couldn''t open input file.');}
        ReWrite(F2,1);
        {CheckError(_File[2],'Couldn''t create output file.');}
        Randomize;
{**}    If (Protect) Then
        Begin
       gotoxy(61,18);
       readln(pass);
{                GetStr(Pass,'(3 Char min, 25 Char max) Enter Password: ',_File[2],False);}
                Buf[1] := Chr(Random(127) );
                BlockWrite(F2,Buf[1],SizeOf(Buf[1]),Status);
                {CheckError(_File[2],'Couldn''t write to output file.');}
        End Else
        Begin
                Buf[1] := Chr(Random(127) + 127);
                BlockWrite(F2,Buf[1],SizeOf(Buf[1]),Status);
                {CheckError(_File[2],'Couldn''t write to output file.');}
        End;
        Seed := Ord(Buf[1]);
        Increment := 1;
        PI := 1;
        Y := 127;
    {TextColor(LightGray);
{        ClrEOL;}
        GetTime(Hour,Min,Sec,Sec100);
        GraphIt(F1,F2,OldX,Hour,Min,Sec,Sec100,True);
        Repeat
                BlockRead(F1, Buf, BufSize, Status);
                {CheckError(_File[2],'Couldn''t read input file.');}
                {CheckAbort(_File[2]);}
                GraphIt(F1,F2,OldX,Hour,Min,Sec,Sec100,False);
                For I := 1 To BufSize Do
                        Begin
                                If (Protect) Then
                                        Begin
                                                Buf[I] := Char(Byte(Buf[I]) XOR Byte(Pass[PI]));
                                                If (PI = Length(Pass)) Then Increment := -1;
                                                If (PI = 1) Then Increment := 1;
                                                Inc(PI,Increment);
                                        End
                                Else
                                        Begin
                                                Buf[I] := Char(Byte(Buf[I]) XOR Y);
                                        End;
                        End;
                BlockWrite(F2, Buf, Status);
                {CheckError(_File[2],'Couldn''t write to output file.');}
        Until (Status < BufSize);
        Close(F1);
        {CheckError(_File[2],'Couldn''t close input file.');}
        Close(F2);
        {CheckError(_File[2],'Couldn''t close output file.');}
        {$I+}
(* Successful Encryption *)
        TextColor(LightGray);
        Temp := (Shrink(_File[1]) +' Encoded to '+ Shrink(_File[2]));
        If (Protect) Then Temp := (Temp + ' with Password.');
        Center(WhereY,Temp,1);
       { GotoXY(1,WhereY + 1);}
{        WriteLn;}
End;        (* EnCode *)

Procedure DeCode( _File : FilePaths );
Var
        Seed,
        PI,
        Y,
        OldX                : Byte;
        I,
        Increment        : Integer;
        Buf                        : Array [1..BufSize] of Char;
        Hour,
        Min,
        Sec,
        Sec100,
        Status                : Word;
        Temp,
        Pass                : String79;
        F1,
        F2                        : File;

Begin        (* DeCode *)
        Pass := '';
        {$I-}
        Assign(F1, _File[1]);
        Assign(F2, _File[2]);
        Reset(F1,1);
        {CheckError('','Couldn''t open input file.');}
        ReWrite(F2,1);
        {CheckError(_File[2],'Couldn''t create output file.');}
        BlockRead(F1,Buf[1],SizeOf(Buf[1]),Status);
        {CheckError(_File[2],'Couldn''t read input file.');}
        Seed := Ord(Buf[1]);
        If (Buf[1] < #127) Then (* There's a Password *)
 {               GetStr(Pass,'Enter Password: ',_File[2],False);}
       gotoxy(61,18);
       readln(pass);
        Increment := 1;
        PI := 1;
        Y := 127;
        TextColor(LightGray);
        ClrEOL;
        GetTime(Hour,Min,Sec,Sec100);
        GraphIt(F1,F2,OldX,Hour,Min,Sec,Sec100,True);
        Repeat
                BlockRead(F1, Buf, BufSize, Status);
                {CheckError(_File[2],'Couldn''t read input file.');}
                GraphIt(F1,F2,OldX,Hour,Min,Sec,Sec100,False);
                {CheckAbort(_File[2]);}
                For I := 1 To BufSize Do
                        Begin
                                If (Pass <> '') Then (* There's a Password *)
                                        Begin
                                                Buf[I] := Char(Byte(Buf[I]) XOR Byte(Pass[PI]));
                                                If (PI = Length(Pass)) Then Increment := -1;
                                                If (PI = 1) Then Increment := 1;
                                                Inc(PI,Increment);
                                        End
                                Else
                                        Begin
                                                Buf[I] := Char(Byte(Buf[I]) XOR Y);
                                        End;
                        End;
                BlockWrite(F2, Buf, Status);
                {CheckError(_File[2],'Couldn''t write to output file.');}
        Until (Status < BufSize);
        Close(F1);
        {CheckError(_File[2],'Couldn''t close input file.');}
        Close(F2);
        {CheckError(_File[2],'Couldn''t close output file.');}
        {$I+}
(* Successful Decryption *)
        Center(WhereY,Shrink(_File[1]) +' Decoded to '+ Shrink(_File[2]),1);
        GotoXY(1,WhereY + 1);
      {  WriteLn;}
End;        (* DeCode *)





function DeleteFile(FN : PathStr) : Boolean;
var
  Regs : Registers;
begin
  FN := FN + #0;          { Add NUL chr for DOS }
  Regs.AH := $41;
  Regs.DX := Ofs(FN) + 1; { Add 1 to bypass length byte }
  Regs.DS := Seg(FN);
  MsDos(Regs);
  DeleteFile := NOT (Regs.Flags AND $0 = $0)
end;

PROCEDURE BOX;
BEGIN
textattr:=9+(16*0);
FOR J:=1 TO 24 DO
FOR I:=1 TO 80 DO
 BEGIN
 GOTOXY(I,J);
 WRITELN('Û');
 END;
textattr:=white+(16*0);
FOR I:=1 TO 80 DO
BEGIN
GOTOXY(I,1);
WRITELN('Û');
GOTOXY(I,23);
WRITELN('Û');
END;
textattr:=black+(16*white);
GOTOXY(3,1);
WRITELN('File Protection, Encoder/Decoder Ver 1.1');
{GOTOXY(16,23);
WRITELN('E-Encode File, D-Decode File, Esc Exit Utility');

{TEXTCOLOR(WHITE);
TEXTBACKGROUND(BLACK);     }
textattr:=white+(16*9);
FOR I:=1 TO 27 DO
 BEGIN
 GOTOXY(2+I,3);
 WRITELN('Ä');
 GOTOXY(2+I,20);
 WRITELN('Ä');
 END;
FOR J:=1 TO 16 DO
 BEGIN
 GOTOXY(2,3+J);
 WRITELN('³');
 GOTOXY(29,3+J);
 WRITELN('³');
 END;
 GOTOXY(29,3);
 WRITELN('¿');
 GOTOXY(29,20);
 WRITELN('Ù');
 GOTOXY(2,3);
 WRITELN('Ú');
 GOTOXY(2,20);
 WRITELN('À');
textattr:=9+(16*0);
for j:=1 to 16 do
for i:=1 to 26 do
begin
gotoxy(2+i,3+j);
writeln('Û');
end;
EnableHighBgd;
textattr:=10+(16*9);
GOTOXY(4,3);
WRITELN('List');
textattr:=9+(16*9);
gotoxy(3,19);
writeln('                          ');
SHADOW(20,3,20,29);
SHADOW(3,29,20,29);
END;

PROCEDURE BOX2;
BEGIN
textattr:=white+(16*9);
FOR I:=1 TO 37 DO
 BEGIN
 GOTOXY(40+I,3);
 WRITELN('Ä');
 GOTOXY(40+I,5);
 WRITELN('Ä');
 END;
 GOTOXY(40,4);
 WRITELN('³');
 GOTOXY(77,4);
 WRITELN('³');
 GOTOXY(77,3);
 WRITELN('¿');
 GOTOXY(77,5);
 WRITELN('Ù');
 GOTOXY(40,3);
 WRITELN('Ú');
 GOTOXY(40,5);
 WRITELN('À');
textattr:=9+(16*0);
for i:=1 to 36 do
begin
gotoxy(40+i,4);
writeln('Û');
end;
textattr:=10+(16*9);
gotoxy(42,3);
writeln('Last Modification');
gotoxy(42,4);
writeln(last);
SHADOW(3,77,4,77);
SHADOW(5,41,5,77);
END;

PROCEDURE BOX3;
BEGIN
textattr:=white+(16*9);
FOR I:=1 TO 37 DO
 BEGIN
 GOTOXY(40+I,7);
 WRITELN('Ä');
 GOTOXY(40+I,10);
 WRITELN('Ä');
 END;
 GOTOXY(40,8);
 WRITELN('³');
 GOTOXY(77,8);
 WRITELN('³');
 GOTOXY(40,9);
 WRITELN('³');
 GOTOXY(77,9);
 WRITELN('³');
 GOTOXY(77,7);
 WRITELN('¿');
 GOTOXY(77,10);
 WRITELN('Ù');
 GOTOXY(40,7);
 WRITELN('Ú');
 GOTOXY(40,10);
 WRITELN('À');
textattr:=9+(16*9);
FOR J:=1 TO 2 DO
for i:=1 to 36 do
begin
gotoxy(40+i,7+J);
writeln('Û');
end;
textattr:=10+(16*9);
gotoxy(42,7);
writeln('User Information');
SHADOW(7,77,9,77);
SHADOW(10,41,10,77);
textattr:=lightgreen+(16*9);
GOTOXY(42,8);
WRITELN('E- Encode File');
GOTOXY(42,9);
WRITELN('D- Decode File');

GOTOXY(60,8);
WRITELN('Del- Delete File');
GOTOXY(60,9);
WRITELN('Esc -Exit');
END;


PROCEDURE DELdir;
BEGIN
lines:=0;
if pos<15 then
  pass:=list[pos]
else
pass:=list[cont-1];
textattr:=white+(16*9);
gotoxy(3,23);
write('Do You Wish To Remove Thise Directory And All Its Contents [y/n]');
key:=readkey;
IF (KEY='Y') OR (KEY='y') THEN
BEGIN
Assign(f,pass);
SetFAttr(f, Archive);
NukeDir (pass,true, false,false,faAnyFile,lines);
LAST:=PASS;
END
ELSE
IF (KEY='N') OR (KEY='n') THEN
BEGIN
lasts:=pass;
END;
END;



PROCEDURE MAIN;
begin
  TextBackground(Black);
  TextColor(LightGray);
{  ClrScr;}

  For Cont := 1 to 15 do
  begin
    List[Cont] := '';
    AttrList[Cont] := '';
  end;

  NumFiles := 0;
  FindFirst('*.*', AnyFile, DirInfo);    {replace here path to *.*}

  While (DosError = 0) do
  begin
    Inc(NumFiles, 1);
    List[NumFiles] := Concat(DirInfo.Name,
                      Copy(S, 1, 12 - Length(DirInfo.Name)));
    If (DirInfo.Attr = $10) Then
      AttrList[NumFiles] := '<DIR>'
    Else
      Str(DirInfo.Size, AttrList[NumFiles]);
    AttrList[NumFiles] := Concat(AttrList[NumFiles],
                          Copy(S, 1, 6 - Length(AttrList[NumFiles])));
    FindNext(DirInfo);
  end;

  First := 1;
  Pos   := 1;
END;

PROCEDURE DIRCHANGE;
BEGIN
 command:='cd..';
 SwapVectors;
 Exec(GetEnv('COMSPEC'), '/C ' + Command);
 SwapVectors;
END;

PROCEDURE DIRCHANGE1;
BEGIN
 command:='cd '+pass;
 SwapVectors;
 Exec(GetEnv('COMSPEC'), '/C ' + Command);
 SwapVectors;
END;

PROCEDURE userinf;
BEGIN
textattr:=white+(16*9);
FOR I:=1 TO 37 DO
 BEGIN
 GOTOXY(40+I,12);
 WRITELN('Ä');
 GOTOXY(40+I,20);
 WRITELN('Ä');
 END;
FOR I:=1 TO 7 DO
BEGIN
 GOTOXY(40,12+I);
 WRITELN('³');
 GOTOXY(77,12+I);
 WRITELN('³');
END;
 GOTOXY(77,12);
 WRITELN('¿');
 GOTOXY(77,20);
 WRITELN('Ù');
 GOTOXY(40,12);
 WRITELN('Ú');
 GOTOXY(40,20);
 WRITELN('À');
textattr:=9+(16*0);
FOR J:=1 TO 7 DO
for i:=1 to 36 do
begin
gotoxy(40+i,12+J);
writeln('Û');
end;
SHADOW(12,77,19,77);
SHADOW(20,41,20,77);

textattr:=LIGHTGREEN+(16*9);
GOTOXY(42,14);
WRITELN('Source File Name : ',pass);
_FILE[1]:=PASS;
_File[1] := (UpStr(_File[1]) );
GOTOXY(42,16);
WRITE('Target File Name : ');

GOTOXY(61,16);
WRITE('             ');
GOTOXY(61,16);
READLN(_FILE[2]);
{GetStr(_File[2],'','',True);}
_File[2] := (UpStr(_File[2]) );
GOTOXY(42,18);
WRITELN('File Password    : ');
END;


PROCEDURE CONFIRM_ENCODE;
BEGIN
lines:=0;
if pos<15 then
  pass:=list[pos]
else
pass:=list[cont-1];
textattr:=WHITE+(16*9);
FOR I:=1 TO 57 DO
 BEGIN
 GOTOXY(10+I,7);
 WRITELN('Ä');
 GOTOXY(10+I,9);
 WRITELN('Ä');
 END;
 GOTOXY(10,8);
 WRITELN('³');
 GOTOXY(67,8);
 WRITELN('³');
 GOTOXY(67,7);
 WRITELN('¿');
 GOTOXY(67,9);
 WRITELN('Ù');
 GOTOXY(10,7);
 WRITELN('Ú');
 GOTOXY(10,9);
 WRITELN('À');
textattr:=9+(16*0);
for i:=1 to 56 do
begin
gotoxy(10+i,8);
writeln('Û');
end;
textattr:=10+(16*9);
gotoxy(12,7);
writeln('Encode File Confirmation [y/n]');
gotoxy(42,4);
writeln(last);
SHADOW(7,67,8,67);
SHADOW(9,11,9,67);

textattr:=white+(16*9);
GOTOXY(12,8);
WRITELN('Do You Wish To Encode File : ',pass); {<----}
key:=readkey;
if (key='N') OR (key='n') THEN
BEGIN
END
ELSE
if (key='Y') OR (key='y') THEN
BEGIN
{MAIN CODE HERE}
userinf;
EnCode(_file,true);
END;
END;

PROCEDURE CONFIRM_DECODE;
BEGIN
lines:=0;
if pos<15 then
  pass:=list[pos]
else
pass:=list[cont-1];
textattr:=WHITE+(16*9);
FOR I:=1 TO 57 DO
 BEGIN
 GOTOXY(10+I,7);
 WRITELN('Ä');
 GOTOXY(10+I,9);
 WRITELN('Ä');
 END;
 GOTOXY(10,8);
 WRITELN('³');
 GOTOXY(67,8);
 WRITELN('³');
 GOTOXY(67,7);
 WRITELN('¿');
 GOTOXY(67,9);
 WRITELN('Ù');
 GOTOXY(10,7);
 WRITELN('Ú');
 GOTOXY(10,9);
 WRITELN('À');
textattr:=9+(16*0);
for i:=1 to 56 do
begin
gotoxy(10+i,8);
writeln('Û');
end;
textattr:=10+(16*9);
gotoxy(12,7);
writeln('Decode File Confirmation [y/n]');
gotoxy(42,4);
writeln(last);
SHADOW(7,67,8,67);
SHADOW(9,11,9,67);

textattr:=white+(16*9);
GOTOXY(12,8);
WRITELN('Do You Wish To Decode File : ',pass); {<----}
key:=readkey;
if (key='N') OR (key='n') THEN
BEGIN
END
ELSE
if (key='Y') OR (key='y') THEN
BEGIN
{MAIN CODE HERE}
userinf;
deCode(_file);
END;
END;

PROCEDURE DELFILE;
BEGIN
if pos<15 then
  pass:=list[pos]
else
pass:=list[cont-1];

textattr:=BLACK+(16*WHITE);
GOTOXY(1,23);
WRITE('Do You Wish To Delete File [y/n] : ',pass);
REPEAT
key:=READKEY;
UNTIL (KEY='N') OR (KEY='n') OR (KEY='Y') OR (KEY='y');
IF (KEY='Y') OR (KEY='y') THEN
 BEGIN
 Assign(F, pass);
 SetFAttr(F, Archive);          { For Windows: faArchive }
 DeleteFile(pass);
 LAST:=PASS;
 END
ELSE
IF (KEY='N') OR (KEY='n') THEN
 BEGIN
 END;
END;

BEGIN
2:TEXTMODE(CO80);
1:BOX;
BOX2;
BOX3;
MAIN;
  Repeat
    For Cont := First To First + 15 do
    begin
      If (Cont - First + 1 = Pos) Then
      begin
        TextBackground(Blue);
        TextColor(Yellow);
      end
      Else
      begin
      textattr:=lightgreen+(16*9);

      end;
      GotoXY(5, Cont - First + 4);
      Write(' ', List[Cont], '  ', AttrList[Cont]);
    end;
    C := ReadKey;
    If (C = #72) Then
      If (Pos > 1) Then
        Dec(Pos, 1)
      Else
      If (First > 1) Then
        Dec(First,1);

    If (C = #80) Then
      If (Pos < 15) Then
        Inc(Pos, 1)
      Else
      If (First + 15 < NumFiles) Then
        Inc(First,1);

    IF (C=#27) THEN
    begin
    textmode(co80);
    EXIT;
    end;

    IF (C='D') OR (C='d') THEN
    begin
    CONFIRM_DECODE;
    GOTO 1;
    end;

    IF (C='E') OR (C='e') THEN
    begin
    CONFIRM_ENCODE;
    GOTO 1;
    end;

    IF (C=#13) THEN
    BEGIN
    if pos<15 then
    pass1:=list[pos]
    else
    pass1:=list[cont-1];
    if pass1='..' then
     begin
     DIRCHANGE;
     goto 1;
     end
    else
     begin
     if pos<15 then
     pass:=list[pos]
     else
     pass:=list[cont-1];
     dirchange1;
     goto 1;
     end;
    END;

    IF (C=#83) THEN
    BEGIN
    if pos<15 then
    pass1:=list[pos]
    else
    pass1:=list[cont-1];
     Delfile;
     goto 1;
    END;

  Until (Ord(c) = 13);{}
END.

GetStr(_File[1],'Enter Input Path/File : ','',True);
_File[1] := (UpStr(_File[1]) );
GetStr(_File[2],'Enter Output Path/File : ','',True);
_File[2] := (UpStr(_File[2]) );
{EnCode(_file,true);}
decode(_file);

{ the following contains additional files that should be included with this
  file.  To extract, you need XX3402 available with the SWAG distribution.

  1.     Cut the text below out, and save to a file  ..  filename.xx
  2.     Use XX3402  :   xx3402 d filename.xx
  3.     The decoded file should be created in the same directory.
  4.     If the file is a archive file, use the proper archive program to
         extract the members.

{ ------------------            CUT              ----------------------}


*XX3402-011488-090697--72--85-13646----------FP.ZIP--1-OF--3
I2g1--E++++++D6IjG6++++++++++++++++4++++JIt7J3AjI2g1-+c++++++2EJjG8h8+UJ
5++++-k++++8++++IYJ-F2p39ZFMJ2N7H2IUFIt1HoF39oF3Eox2FG-JJ2ZAGJFN1EdEGkA2
3++0++U+QopO6gxWMi0r2+++M06++-++++-JHYZIImx-H2lBGJUiJ3-JjJZvQ7FJZXzrSzLL
bItrVm+4N+6P2PCkViu61W6WSHK77DEfsGKpEomOD0cYP1wUePKmMLJXW6HJRKh4aJ9EMJm9
-GQmp0kuCt-0bf6nEy21JuHKcFlbK+7M03If7BpvnjpiRvcvMQPxNnhobyzwviySSwuttxvv
TFyprXcTsCQWf6AxxcKC6zXr+TvRQZVn7iJQbEGkkMnB4g+aQst3VzzfdlgQNfQt6U5spCqa
Bwpfx7+mHzx64a0PpOWam7wertA-TeMxclyGWLx-vpAyIGyfcBqZYPu1csSpAteevxBZoqHH
TOO5HIyPfe-Lnq5PCmf+8ZC9CH5SKiKYSN2uO+7Mm-7ME0idfeudKUJEC5UH0Va5+ZrVG5+1
UCKcXU1y0wVZzZdAlARtv8OVZrg0+DTzcN1dX5GpffOe4d3PIM+wEflNapcOUlphkIUY48dV
km1V5kqvaXIk1Hflec2vsRAA1eOjVbKmrv+s-ygXYJ19InVw1P8aQB-ftWMrpXQ3xuB-em9l
09UJvCp52Zsv-VVN4cPLw3j6j3OXIoR9Ckvm0K7uhU75Y2AqYbu4UUoRcQOPVdyCWlGpZ0Jd
Q6wo3oT7cWZWbHX6HLODN5XXMprcrIoqBu2ft7Ui6NGoPHWwjeIhu744EM2SK0mF1KfoG0IZ
vo2QP4I9ptNuD9LJbeJ3hOheeO4oB9D-upx-1KJZp70B1SIJeFr8mnBkHrItsFIJV3gFfkbU
V-IxwA+1-9jR-4QVX3lDIK-ps+XnG2iL2ad5B3-FKyQJtVR95eamAi3Dc8umb-f8GzWsJJK7
QR34PIJBYGj+wGSSG7ce8pZSLVJMJcGxe4LNgYGDtQY6TWLtK7IclnYWhoy+Z8cfcK-H4-B6
bnLm10l0bpnT5cMwXZ1BuAkb9uhM1JCHW2TquGh84Vh1kL+Mdb5s2tttblucrlFosul+DcTT
Y4PUbDbAMMFdgZnEbgEzZbqadycXa1oL5C9cGMIP6LFnGvg9HaOWyAw3NxDEQ3SsgGDgUgwn
IKvVemHO75AIzvbUunEi2j5D-PQm9L-IMEbI8WKLBh10dpJV-Ygm8kSEAop-Dngu6aoRHK1X
x1nJg9QlpB4ocPsRZr+0zLDq3CGwdjVIhBLG++KQ5-7fa4Aii1Q71YUyIrZ9e8dxTETAsiUP
7dtutUMjpzilCjsPKGJhPHzk9mq3AllxLQpMvb7miTAhY3PU+59QWYzev66nGYfde+oRPFoV
C7i8OOgf+ggx9jV6GLKLUwLkwLXkETVYD1UTneK0IW++bme7gb3WWggwBHJMzJ0c2VfIodDt
RwZYxWGHuIDCJSl7JFi6VC+hrbBbFgygN2xfgiTnm5Z6xf2+53-HGZf0eZKo-71520W4qWEk
FoDUERWhdLKN1nSGk3sNUMSUr7H4S-XyCFrsDbmN-+dJ--P+T1qBwEUwakf6+NQHDgd+L119
b20KabnmWa+66VlNX02qeLvBLo2vsVPOvi3J926hKoYtHswUcunOLpvZNvc1xLz7M1-i4Qj6
ftRpPCmW5M1dh6LMgwO6J2gGo0sZwNzTOLsnAGguKw8F9TdAd5mOEUzlAiHAnP9TIVv2omlc
K0v2taz5IPY9Wi9DfaWjTuchKBbGp3nOpAVo7n9ihqO4RAvYhtKrVBCM0l-rXKBSpzkKqg10
1O3Ug7rdGl-vB6AZ4ODHBWUBmztgr-cXSDEZiZHGDQKRiqVDGbsho3nTq94NuJtgCtiRnZKA
t4LwL+GzmJrT4DF26on5yklsltPdSuj7friX2LQ75jdALsT6R5guFnJGH0bAzDYdSJKmce8e
ZibBGDqVDRDwcnW3zcd+fQTDGFgFqXKCR75txEezryAjxOlWSWQW9sofgDzT4vNjfSBjq9GY
9uZLFmrb9L4y7xBRG8GtM1-CbQH8oeYQOQyJbXJUr5DTgTXMSYbVCiqt3-5p97MCl-7R9mAb
9-oM7NqmHmB4gpv9qccpvPA2Ce8V-Zvd-P5MCI4VVhfuI3AkMXGA7VeaNjYocsTInI2Oh-V-
Umr3FV9UiWmTKicDpXR86lmXdPwAWOIfEmqFc5Ef0R7tFOCIFhR9hqsESX9fXbS3Sj9wEks3
QX59G7tDdlCzjLt1Q9M4eXsKuKGfn9RLbyFSLj-qT7uSn8TWltgFOES5u4NYsXZtnVf4zYxO
mIogTNuDkTWyAHDaebOjQJROc+5VhAMef1tp-L2Z7yTGTGABiQ6TP708firHXRh51PumbYLH
vt7tfOdRK9wkNhq0Mkfn4BU3MLtrWjY9swpTo-BrdrugVZ+s01cRHhBGpfZlUZ8Ugv61qPz0
3UyTVI+kQd2r4NwZsXjysv5sXJobckTkqnhZUVsyhOcRHoBd7DshVfgjCzooNAbHI2eSVewU
tlym8H2BnTIVuHPjG+oOC4pSqonPtxYogNqi+WiiuAHnVIzeQVJMYg0JP4EI3yXdX48Qf-E+
3oUwbh-XqHvK6gKGihraMurGO37TMjCnBO1rcM5BhglhRan1pC-3qyjMjgL4bnfE+uxhPA+i
R0-J1ob1QR6HZHVWmv4TEvpCxvE5mvcOqc7qy8KhHeQZJRrFgN3qhXdHSP0-Z7yHUcRVSuGZ
DFew03zOuf0u6u23Q-qjJhOrFD9VZ8pC7OlsBhDgRGe-lJMQehvSOkzPXEZm9wQ3J+-lqfdc
+QqqynFzcuSxfEgnH01hp+jhDfamdF3Hb21sgRwJlUUHWATiIod01QoMN+e7yOLV4CZrKavo
WSB595fyQE0z7F5D0++nVGkIVS6Iyc8IYeJDdN1fV4kKQeDcpkb4ph4HsMRLO8jsvsTAmSZr
oK4BrsTMEJX8NEyrC-jxz-58Nx0DzGXjFPyCoud0SMsC89HnFtEzFHZ8nysMlmGgxTLcvlmI
at3LVf67tIeI7l1TWH86pUyWb6PlzUSXBlA79yKmI6FvarXUlwj2UnsSgB36GpiMwwcvkZWM
vHJf0Wk4hQVP2e0KEIM5JHL4KkDrUIKpUWrDl5zASKBz-elOfOft5ds0T0I+ayWFEN7AAdAN
MrGWPA5dSEvHsvBAAfgg2dXbsGqPFMNQg6B0izafq4ortaJy9WUmt2+q9j5I0tUlAwTVg4WU
a4XTdgSk1v0jVQYGkuwgGGUJqeEzktavUDaSCpjFJ6j1h+MlSiPu+xtKK1HJ8Xq1k-I2fb7+
goeonxt+s1MCBRRgnbLYHbIch1ieaB7gVe+XJtoulStEO4St4w3wNULvJ0r9-DVD-NKKt1n2
WpYqq-FEn4MfzZeb8PENnAK47Ik5auNCbntRIxm6JR3f39M6wsGVmEmRZmGUID04ZGZAcTQb
ecEHEtSdvH73muUs7JcW9m1zbr1EqTOz-6jBUNwgIBv2VZog0pv5EGrNBahCXWeRF4kD1jej
H22WxJQfEe4CIBrKrvi4Rh125QT0rbZ0cnrqgV75yHdmJD0qabbnMMluNSjFJi1OqAwnWk5Q
oRxCp15firFgLNMqkC3lD0GY4jfDwEEpnQ7b2l3G9ElBF90Y25syYExzaY17SqKW58FqCnxV
1WeWjnL4m4cpsLSN1HS0JXB3PJmHuFSl8GJ4z94h54Tgp4bLoDOVqGSo2BPBETXOSz1fiDTo
OKLhb86tP0pCxA3eaFCr13T9qnvQzjuqwmA1rMD5BaZv3rZ0oe-bnsjC8xzgrbtysB0-YGYf
gKb8mgGMBiCexT4-vaQ3Gft1F9uo1reuTp6IZGzx00xSoT3WCzGvLtbZKCG6DbNbIkDRPkUA
CP2d8pgx8Ef3TPaGfCW9xAXX+sSIC3ft1fO21O8bu2aT9pL3mSp7oLhuiUSZeBPHjLxVl1ta
ogXX-kdEhfEgYGoh8t4hEv5MgIqKjIOWI-iZt6qZ9FMX9qCXkZfIRBkRNtSyE6SuFrZ99-Ym
+OpgP31nI6HMoeLxq-UPGPBX+-CktIjD7arTiX3ZNHDc+sR4Fh7nMFWXtjUjFX02Kqbhnm+T
6dPbSoR45iqxBF6NBClZ4VXHYokB5J+i8zW9olozxM2CMrh7DiP3ySLSZz0Aqrfx67HxyWw4
wLFTAcBGmrVmpnCFrDIgKMdjHpG8CmWbrKxDACRj7sjaiDj57EDibqppvxdqNejvfM5i5M9y
j5jjTNGhEMWk7LriC5RIGL4IZengQ+rx-4jPkRSKK2eN34BhXyAQDCgEQNlpd0sdGoMQbBHL
KrFBLAmvRfFPor-SbBRcqVkWpQtsOc2PSfDYG7oBHXZIR0ql0cwe8EqdFQnbsvjuxlq4zfDX
6sF-nHvua7OAe-wXxjNXhBszuOGK8+OBMLr4YfIyo1pKxzrioHvrvLvrvILiW97cTRFokVqH
sD9RVDUF0L22hpzJBPHJ5LjS5HjpDhaS9CdwSD7lxlLdiDgOKg9OfClnTxDjpjb3xJP5EDSk
Q+lNCf3GAHvdzStVvzUxxsVaF7+MFRi3oyiCouOhQzhMRWDxPWhS95GDP2Nhx96QQsxm7tPk
W0mwvTPauLri49L3yhol9sPffTgXVFr1hiUZp93zx-VKw-j7l6Y8TLQ7jDSNDDmK5faBDx5P
vtqEbIBLGohRtsTvbUAcqr6Pt8RjiAvr58MRKsbxMk8vahvhd1k6JojljTS6vpqEjqZTTT4h
IuSBtHdN2XAoKIfiVF+zhgaKgjgBowFBPYoImX1TZW+yTiJmg1YiHgvS8v4msvr1AMNfhzRK
P80LlPTqLczpR3hlLyfjzHdaNLrsqxBhGSWGcSg7LH3o9O5D7BrkFtGN3GkB0xQqVdi8BXLJ
XmLCBSExL8KMNjQwNcfOHaW7pEu1ZuodqY5iib42SwPe6TskDcLUBr34vonRB-95R1szmYuR
FWXLiEjjjz+4wUJuVdU2yUh2j3j64I6Ks8A8DOjAVJnGaFDvbQFyXu0YpyC9IPu+gYnkesHo
0fZ8m0S3bINVdoLM0EYvasKRdkLzvkJzay0z8DUv-5ybsCwKj5q0hpzkTWZsEs7rHD-y6rUT
0hvbUjQvkTh8w8s7rUr-4lIwWFYw2nBs1aPkva649twNj5g3fp1kL69rgC+x9bXZUcQrs5kS
DAm6jpP6hI9yEBVd3bMq01iPV7qz3LNu-9yLtHjdKLEPrbDHgy2C6RwIsykFxjM9Szxaj3G3
ToQvUqXbTK5rd91vOqPIWkrnE2xjWo5rsWAHnbiigtAzhlMumJ+h3D9lpkXSJgtHMPjUjGHY
emXd4LQDDVaFbJw6zgS0ztbUzNSEZp-KGjGEZChgFjaha8wMXjgmDLQnMxkQx5C7H5YrqVwE
TdiErsTh7Q9CYmWx2XpT6svh4kGyZTl+yIC-zlXZmp7e5O2xp9wEyiwd1hGN42xXVdsXx0ZW
T2qgBvC6wl4Agl0AxRAdwYXtw4+wSK1sNTGXyJFkbSdwrb83bcQwmhjrvg0P7DGdUdQDWHm+
Yxstz-J8SiTk2C9oPe7Ol9xKlBwesih+yELJZR1vF9kj0TpZ4AgjxTyym4i3O5w0lubYQSIu
wmFufq5UnK9QPf5S-cHRZoLvemZqzoSWxmV4TaMZQGAidt1ZMfpKWTJOWz7HyUxzMSyjly9b
yP29CELffwzMbvXyBqbtDADi3r8yY6w8iHdZDfx+zlsIwpeCwveFvsD4j0sLTewJwrdMxAjV
ReNVD0GbklmV3khx+ReVzcxlDFx8VNoecGwLj3fF1zRNzUtdfMVXLJcQyTXKmC+tY2TnAELy
3p-9+kEI++6+0++7JJcWS2wjr9YF+++6Gk++2E+++3JCGJFH9p-GHoB3IpAiI23HnHlfXxiq
Zhw1t1ykE+17fS7sohji7fvSMX8DlgVYNa-BYaOn8I-9h8oPaHF6OeOyUznrtG2dWLfNQXTH
***** END OF BLOCK 1 *****



*XX3402-011488-090697--72--85-26893----------FP.ZIP--2-OF--3
fhD4gYUS5VsSbXRnznruFbwSDp7zcwhrPwu4pwQVaaxFiA8Ic1S2QrHMlw6mbpCG2YY2kYVY
wnXV778APl4aAG8rV4zZ8e39Z2UIAGdlEgKk4xNZxcKU-SDcx0d2RnmFYZ-oYz2tExRMF1V3
DkpzucZL+Sh1EaBq7kdsaE028Z1RPYT1YEDfDS2WMJGxTO2bjaGrN1ob51rzAI-59psQxOTL
BzfnxT4XlswmaYWosGkWEckTDoec75m-6u7O--4D5xozaNuTbdqXhy8I0HKWq8mfQ+mhNtSb
ozCjNHyvSBhHzHeNrEHkfEM287EwcIhF4TbsIQGcY4P+KzkjlhwHXWP6Cz94fIGsFmQNtsF8
h6PSuBNGZaOObbPehkYh69rseFqI+kZuRo1uG91VusbSdkt6At6G9+XOEayxf1PG9QFdkRUH
xDAzleqkEW7FSE-GEdRmZKCnk1C0smiO+c1wQPkPkW93Gp20S7r2AO3ei5YMtyz1fHVDIe6O
v3DFwduZqNdAHpJHzZWoiEgebcjKMluhYZi+ONz83fepgxab4ZTImGSr4p9mrwqA9-AV0FSO
1DNtjCw+rOBrUgG3N6VkaVO2iEY7JXXCG+EIm7z5LSC3vc5IUVaDoJQLyJjA1IXJaIzd7dDc
7F8Oxnwt5D-tL69BJ2w3GqkM3EEt-yqMWXjJZ6wTxlSi5I0jy37Vg-iVSxIfKGMIdksLtKH0
T2bYjj2ZJoW482VECrl4pimKeC3nlZ80OTg7a0uQWL2YAtmaKvII4-ivt7YFYOJm5nXPWmo+
3F1O1cG9V-6FfhURJJ1i46z5zEZwOEG3Udg030Eo4A5E+VTWspV8bglrkvt5yWVUrHI17GUN
WfIyh99Y4qhj9T5XX-BoTj9883uBUExzVlgG3Tgv49Tdu6Le7ek0Z0i0rcNDsHkdM4WFoIW0
3DILb8oRjHQO1CrYaCApUTDu2VZ6Og7+DzZW+2iT2vjuq6mUH2qeCdxUWVW6DYgPUoN0BEuF
ZSI3skmziPMgpUMq+NkWjyHGwcEOBUoI6a8HsaqU3dk7ZyJ9thjrkJLaiQLQQddtAuU+HROP
Z8k7ZFVk-5kvhnabSaKPGkZv+lgtgP8hl1PaWHuuoEfnwOtnAJ81Mv9+KGc1R+EWDY1DpRQf
xy-Fj+NUa5CwzHEO1jzXAlmY2fMx39ePAsnw6RpFnqiXwa4e4u4OwtmlIQPbuNTigpUO-DCI
FJxeVU-wC6Z2wazG0S6SLP-Z+eOUJEmuRo9FT+jblc4oG3698KJoaJ+tPdI7bSBX9AYieL8D
Hf2x6iUC0tFW6EjHhP6WQSgGx4WY8EfnXEjdGTWhcnOf3CKOXMfyLFGpx60ZOBeu84+OgrIb
7E+3owD0e4s9cT5MoPb+iWwp-sxnXPC2wp7O1DPx1JZjEiacJjDu2ex7G7O-TfVOt2RhL21L
XSevoXNLk0ZoiISz2cY2KQ7-pAs9Kmk2oQc5d3FlwfvKg7WIHHyUOALxoO082LFFQ5ovkarJ
e2nI387cJI0C8XXbkxKjERbUX0kOvh2dovUOlRioZ60WkyDTMC0Htmx46sTEkxAELZiIrMNk
aXScCRq4Anr063a-B9LjmzvO3jGVRH1iZXvLa+j9y77dTjXOE9-ZihwOotZpjhPfDDfl6-lC
GkK3B4I--y-ICBQJKRlev1uQjXx70SNjtetGpuy2rj2jN1hbaARcbWoKV5xn-Rf+knqtPESp
C3TJrFXZj1qZYjhDXbsCYBYFwzNidSaiRqZsffoTC6bbzoos4u+74UpEn59tsonFa4PYuCfq
eHclqnL2W0n91UqOJ7q7jt6tDi-2jW3PZnbUZR0G5kBreAt2W+TY0sj0+LnFiKZBuXQcPaTv
emZSq73HAGD4V0FlpI-oH4upt9IqyitKF8s6v6FOkN9XhET49vWLX0CKGLV8-C63m6QnU1gF
9rPBqPZ1zDCw9vf3OJOpS26NHw37yzpJiurF-H8IaANMqlt+cGf28yqQzqaEZidTRr9YnwwD
+3ol5y6MXVjM1hTVhMitesIO37eUOwaBw5jpKs0S5DpbIpLRcqiKe0YYguAojRi6os1qkc3K
-EDx0nX4Z7UFaL48PaPjnZ0mg5AZFhg6ACqlm2TOiOigBI4y5jAvyiRzqMuztoTtPneoZxZu
-U3SOzGuVxKgpemC3g2-1fqNwJ73l+aV1yaNpd0f5AVEnzsVWSL8qes6nkJ9AoZ+QDtXx-9y
DVvLFsGZnxAqs8EdYEgw7gXrTER8bBmWcx3cB30saqxswxlwCTWpvz51vKabEnzM5JqeNEh+
M8hlP4hNT2CWN74E43In4XVBrJE4S1MN3wYhGPS3KbP17AJcW0P6JStBl4uMHIRBxBleibPQ
fARbsVDuH8dltfQ1eoxKdDBHF1pmwDO31RNUHNQhkfm6wFk0LMRGGhUagc6Lc1+6XZPqSDL1
5M6f7imI-rBP+r-zYUsuHVAsIg+2PWkpp8dha9-DUckPgT6G3L8or0mhw5JQB21bllTV4K7U
7BkZUXlgwiXzRn0g25jxshoVVU+5usluOp3cgkAjbJH-1VTkb54LiIdPtXFPfvQB0fn4B2u-
A1-aRtlsNPfuqWcrF6bIimINh-UWjl8d3imD+Yi7kLWjyR3CVV9YmEcU3cq1xe1vWIM71d6o
8MAOIKqIrkW5F3-DHIk1x8xAmDncCLZTTwanxHkpGwkbGFP6donaI+MUKaWHcGcChyzxMXx1
xPw5m-TiCYVZ6uM8yyIwcP3ullJGSXD-zk5Hn46-nSTEubjT1vzrUYd0fBWS6CQRg3kAr+j4
BZcHuCE6dZgrutp+W7pZh2VpQ96VK3MLvjgKu--G1-eKAzY+v8LFE9zqHtYsstllszeeJxq7
LTRHH+-Faox5bk4YBzE4CNrrdLxrkljhU3SCeL4nneU6YGmdPktAEJcBR3+H7m4Fto0RcfB9
cFqWllvFGGvP8dUPxFCUopmYLFiZR4nrKaSIeh+7RQ9c7-L2vC0Tr7R1xWe5ShVC5P7vxFYu
lvQkf03NneiA6xyams+UUyNtzgPQABf3+qQQ0q8vhjRn7JV0Zs34JmQ-HRM0JdXEWCj0+3-J
846NfLWUxEyklSZiOPOH4aqT1nmFt69uLdb0+sa8j8-AokP6ylxjBzLODZAOyGrgLjwMEvu1
U4+EOCd38l7xCM-CpwPs+k3bY2-fddtnnyAdSXskkPtjGobTixNCCQVgW6V7dgrsV4NYC-lu
TQVK-fZuvhp-p9JFfaHFn9G+ifcYToXToITkDZDsdsuSoCSlo3LHFNh7Y6UwtFdMwwBMt7lI
hkuqmVdVHcJ6ptsMqw61EfN6n+oHjgCnpe8-mdlSge8QM8QKQ51M9QKvVbNPKXePdiMZHFAn
BuAV0k3qj7oOZaq87ed9f0rjzgboOQhtaOpfeoKRZhyP72ovH9Jm6uRLhdN0Ouna3Xe9+0It
fW1skxTK+5X1YLVMJzy4jRhg06Ss2ewsyHoeP-nLvsHFKw8Z5EKgbqak2FM2cTv3XlIrDkGD
J-i1-Wcuf70mx-Ap9VcJ2synwM6yM9xziC1IDh6vPZiWrY6psd7k7pzfRbICU4aOE3hSLwMs
U7WU6xUNIo9buvlcaTUlsnsZbu5Tiwo7e5jv7XzrCQ9+neeZW2Yx86BS728SOmyY6ldZuP85
EE3ALeaXEotZQABKn9E3dyMYNLTR1Cf2cGel7m2lZmVJIk7zMPaLEQisWA2EVdNVevy9ETiG
TYS+MMS2vGueCwbsLVVZ8IJXS3atq-qPg8K9Ye43QKZBgM2cpQzukin-GwWQuJLiebWfP7hH
uvOjWCvS4jptZAp45ui-0kSN0FeBxtPThG3nQD0XNkHYqoEzujUN1VUQa0W8qXWW2PUcKkyA
LXX3ljeLfFnKnvN4C51WMnbX3TIZVPLNfuIK4M5hpAfEvCvyU2X1bJPjWUZqFIZu4MwJbWlz
z3+81KSmdUBJhR8pbpR-xzy0kJ5BW9JyWbvqQhv8LPkRC3cuxe7NVzpidrPIUxRzXdnPSYv-
JTSbI+xuk-G4VLhCgB8R1s-i1oJDw46f73Yrk9TtT8JDpyfBpQzL9bxijtCmlp2dZOH9ViD4
Q7rsdNomKWydIcpF+jvuk0PKOmn0ioF48yE9wxqGvSjV+o12kWHu6fNSMlczpS29n7SNfgEp
ZHBJKwhCq4ZWaTP+X17xkQ+m4Gc+RqWiG+jCk1XF7YC2zYMHesroI9vPYPtlzM-iLHWZATY1
AY67beRpMu8QgSNOJtq2OxW22kUwDHre9UzHUGQaTCgja0IAUhlHw1KII56zUTVZilVc2SoJ
54iSgkt4zd56TE6VRuQNRscBKyVi4cTaW4ZQJ9wpJZyqf0XDnpln8CpMQa60VjaZfXmQ03Q+
bMgSc4bmypg-F6O1sV7K9dMeYIXzN80ukCoepFii2Q63EezKhP+8x32f8d-L7BrYFmv5GojZ
QVDFDm2cdDcL0zSxLnkHN6MBJ1w0JCnKoO1J38XhZ7LQ7VlHjuYM6+npmoXBhGd9TPJWe6Xs
UUWpV+z2oqktE3jzBUVu-nul1Kmky6ky3PVwvUjVmcnJuLUAoWdBqNpsqFf3R5PjXLbnVd0B
fLCcLBbIyTU6eVa-PpVaQaRWi+zguych2uBySsuRJQQKhY5DsK3pi35BDQQShpqCMEiRHWmx
va2v3m1ooJdr10sU7cgYojQro7kgEDr05UAJbu6MD+fCAj3RBo66+QHrtgpvkiRAZAZrBldE
MntRYv3vbQ+WyEqgdmWwiDfkrHv0L7grpypJ4gCyHDeFNGX0318xCZg81AQNQuzuhBBKLxqx
UvUaX1Jc7+ioJT1m6YYBf3N2KMLK8bdngEEL9Ph9D1eiaM39qtFfnxvYuftqJKuWgLT2q-ij
hCLmuqIRA3zLM68ER00xxVeyHkbEDXaSrvU-TvMPzekjzC6aOqC4QDQAMRwNr1ihZEaCRoxk
r7k+SZXEjFJwkNAbVd4-3M5pmiapra0ak1QL4fOhHEOpgSKiv2F7ZS9ivPXfaf7nPrJGugVG
hkvurDoqih8+eQE8XF-tWIdt+vhzETpWqY4hv0yjo8YJoNbvOD+Y1SEm1IL7LRBlOIO1wZDY
N2yAQpF-dN5wOCtuau3U1Nqk7Qc8581Bwec6fHda5G8c10HMZ2dPCAbQoXoobBGUafoCN6ho
4d2g69qZyFn1SM6PbsZgK6ftdS32U74MsxMayvhcQN0HOf+4cg4qJHI3aVDEde-58dOXHF3M
rB+2zRVjUlrRd8qldavufYjjynQ8bTCfqRjXay3kCD1qv5Wl4mk15wRYmuqFQ5dqAZJUddSz
ReTiOYfYcnTcbHAhYHtKYs5u1BzBnjH15HPJrpSj9eMrNvDX4m--6edAoaob+-rQTxp1-lQn
4VCC2jb9RycDwXwyilkMKP4jC8OwJBFRXa7ZXPZLrsNLTiByIjVoPLpR6q0uEBuK0+xkxvOS
OdC2EnoazDvccT11xCPYBF72-fY-UmLON7hBMtBwP4OTe63bcLJLb5RSrOLFqxVD39q0-eet
bxppZGfY3yf9oWRn7+7fXUHitCyxEP0zVg2NQCrNi0kkcpjcDuWJHqZ9eSDQ8BHL66pozHCF
Kv0whWnX83el769mm3i0pcF5KmWupmq0NOavLe7kQ7pbJpoq9b9Y-531-pKI9dZVrtVFAhlx
XhKoCV-HW0Y6SZavL7QmqddcFnH-OsB35t3In3P8PMnKF+WwpANjhKkQPUO5vuujfw8nIph1
rj8j95HJ6CmnRQkz2sEKK0ojRd6x3FkCef9cARh89SY9qQWxgvFitEosvhc9VUqpfVl5feyY
3U5-2jVDJXpZc3CN1GVpGKgci-6AiKGIC818jMB6lm79oEd0ALzdxfLb38P4TPd9l8eucTP8
fEWAAOPEv+dgyxunpk3uBUio85UK6Vj+09c564H1eAyCPSxRypa7XI4c8sxjeNzz0p-9+kEI
++6+0+0XP9YWRnWuUo66++0H3U++1k+++3JCGJFH9pJIGIlH9Z--IwJMSqzPC-9zjo0zklkE
***** END OF BLOCK 2 *****



*XX3402-011488-090697--72--85-19075----------FP.ZIP--3-OF--3
s76B5QWCYvPqxWtCb4mRGpeXHfj33Pq0ZiW6XGE86dLMOzEXrbSu4J8G7HyuSvU3HbwYob+S
jrZkCDFmPr16nZhgq48LVymelLtdgJ49rFmmhmrqfgLShxWYlHsSgYy5rtwzKyvREhRvRQcw
tbo5KB7ryzHsNFQ7dmQbluQSzBlGIT16cpkUzsR24gWBX5ETZX-Rk9I82vURkgG6B-G7JUYU
aomAm4PQ3mWVVMOVoikWAzrbnx+YL8YA-BQ9mAFAN09l-FU31q8VGTPtAvB6IF-U806Nry25
j2NKLqI-IE3Ae59BYo+nxlo6LwMw8fys2QKfYP5c+QwmjjXg5Fqpjs0OkIL6gnuhWmGkU++i
wWkfvCl5UeBWe1x9o6hseW762MI6o-wP1U9Ps+CHQMkAOwcurYeoI9IVOypyNRjgAh+dld9h
AjhpoqtVhd9QNHIHOMEA-zquO22AL1NQF4SlcSVwa+nMNNudJ9-fbj9Yc6mUmVCH9PMYOsX0
aD0M4uix-vzWIfw-pSg-uMJq1kfRoCa-pJwWdUlBb+xCGtLIPXCdFRJ66n6cK8gmudQ47m9Z
4HQeorLx1NFZGTEfZ9zm-TV63Maz+8ZVNhaB0pCdMmXjdR43XjC32IpDWqKNf1GJkd5m5nfR
A8i2ZMc2HzcfsPgAYmxboCaqEdJbs7B67QypiCLd-MwW7txa0ZCMNmijPtFum3AkT-c7EUy1
mQJc-5y1jNRSeEOnlKyYBVWVhHWrpyBwAFfK8uY5HtFMhzNSO72xMaVUDJojRit-Jo4XN8PU
BHF8m2TTU-N4kltAAOWccWnYRUzqFwC7z2pgcb-DeLWsMnIEMrsjhgjSVQ60QWKlej41Wei1
xXyY3DovWWj4LRbaRx-kvt3bBFzTDRH1JYzoYZWW++8-8a8N0D0R0DsDA4YFjrSN8XGx3rtB
Imq2pjchbnz7k6EgtjBEmDjEZ2J7elAz2m8d6ZTPb9N9zzhDSl1ki0l4C6xYwj-iBihj2dA4
vS7apASYssfMrvgO51ELwomfP3pBEGIxJrbW4uYGi7k9DnRWzmqD-HBQFdUVPY7hgcD8qsft
GYPWQWupoTgnT2os5FxXN7xMxX7HelB8qlUOpzJKBTvepGhPtZALuswiylBl5mBngx7Q3bUE
N1rspoeRLPhFhePKxa5bFJorkALvAMCPiv5Rx8vsP+N5QFc7AgX7Bu6wTtNiWG-kfIKARYWA
utVolicFSAVUnqivefHQA0g1xPpYwiT6R6KDvOc42j32fMqMOsQJUc8xhZRpgcwm2+cgp0lD
1H4JCmLRnCPz19-xoXq4DlzUlCGn4LKmTFx1vyD9kSxUDOZEFElwOwaDs1KyKVFn-CIXclzO
ZF-Lj1eyolK89FieMLc7PtIFM27iw+xmrR0FFKzQBnaD6-DrIeBv18OtUTArw3K5p5ey+cyo
UeY+XR2mmW4cSo6NPrjSQIaM2g51dlP6rI0HznjCxizUT0xs30aT4r2fMdIhxgSMrL5NpK3E
EnxktatFCkkyAFVbMWPb2r3TIGwb13SenrBYceoDeQZUTBWlynRCkLMWFqEqXhSouwzSzMDS
FsZDYjW8V7th4jbIuOed5fl-xvc17q++xXfKoKjT8geBPGV0+kl509EGgsP5ODWBsCZZ2f1V
OCTOMMRRHWmAr00Cmm7oivchI9i3JPyhNfwh6FnbChlWPyTGtU8Nr0N+x2re5I9PlYrovIPl
zmswyBwaYaOjxSed3WNDDDocT-cu8xdEuGA8qEyNhaag8UspL4ONgjPToQEve8fWCjYBAnxI
WJWfYK4xFa07-YmS7G-61sqaHl8hHUKx1Xv-jdk-HlM5hV3NRRhHzkTDndr75peDPk6BA72A
DdR8jdExyNMz01SmzhAplIw63kMVyViuon9EIoiz0CxVA4RkDZxhD7cO8JyT7z9kTDu3UJSh
1N3p6ZR-kgzigSS3XQbx3q4+6+2r7dDHr6XWva+1qKa58za6kFKDh3VhjnNgD2jYYR5TGloy
qOI+hrhUEu7Gg04VzaGtez0uKxati7Q7QGtFKffayKVD9NcZVBMZDYlTl9K7OLtw1Gy6AE3R
X08xpv-rvbYS0AHPd9vojDtel04ZF2xBhZykARjorNmv3QXryUl8kXfrzTp6vHz776XtzC0U
LoMKjqGQlo+fuUZGdGIJZKPk32cz-7tFDmkJZfBgcH4IRMp9Wm+inT6YUBLsOym7ELRleQJT
bA9O56kO8xuTGVIzRIXdtawKafH3ud3ax1WabmCCmUhn9FHqhaIjWz+VxPaKGHb-NmbNCphB
wavaAstQn5uKJdledDRmXbcldICZsJ3YabPSnr-wJ3rUu8GXVkOCMmxoF7asOqpFdU-yb1ei
09YQuRjI3SNNivFJhWXs8uJ6n6p6+V3IBl8Ni-gkEjXfqi-JUn3bQ5fWZLMd3DMr4gZcParm
HiSgpKuGUXaPndgYTwuuvFpiTTBzv2A7DF+dyM9WzsoHbL+1PyoSRZHS71QwO16JZx2aJsqX
i56SLMm418Irb6SHDynwSGuX+4sIrIu9OzzrnHnQr6orXPnokgoMy+IODr6LwvDXbWBccpnf
7JVykJxMIgeKqhblKZnEgdfBO5UffnahHOhPcEEp80YR5IHHVPZ+PwhBvMNS6Aub3Rw9sEmQ
RLiPDdQNa2TQfCqRCfNjIF5wYmMHMGp1wIooSSNyS3xWs4i73ffrSHcz1CELV-1ht1wvuHL1
5em5jJj2GFJshChE8oiTelwZo-Hxl3G+9FksunV1vRsDl8fX1hZvexwxwCwFaTgDI2g-+VE+
3+++++++wVGx6U++++++++++++++++M++++++++++E+k+++++++++3JCGJFH9p-9+E6I++c+
+++++2EJjG8h8+UJ5++++-k++++8++++++++++2+6++++0E+++-GFI32HIIiJ3VII2g-+VE+
3++0++U+QopO6gxWMi0r2+++M06++-+++++++++++++U++++O++++3JCGJFH9o3AH2p7K0tI
I3JEGk203++I++6+0++7JJcWS2wjr9YF+++6Gk++2E+++++++++-+0++++-B2E++JIt7J3Aj
I37DEoJHImtEEJBEGk203++I++6+0+0XP9YWRnWuUo66++0H3U++1k+++++++++-+0+++++p
6k++JIt7J3AjJJF7H3AiI23HI2g3-U+++++3++I+7U2++8Ef++++++++
***** END OF BLOCK 3 *****


[Back to FILES SWAG index]  [Back to Main SWAG index]  [Original]