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

    unit ScrolLbl;
    (********************************************************************
      TScrollLabel Component FOR Delphi.

      It Is A "Special" Label-Component Developed For
      Allow To Scroll A Single Lined Caption Text
      Of A Label.
      For Correct Function You Should Be Switch The
      AutoSize Property To False After Building Your Form.

      Author:  Endre I. Simay;
               Budapest, HUNGARY; 1997.

      Freeware: Feel Free TO Use AND Improve, But Mention The Source

      This Source Is Compatible With Both DELPHI 1.0 & DELPHI 3.0
    *********************************************************************)

    interface

    uses
      SysUtils, WinTypes, WinProcs, Messages, Classes,
      Graphics, Controls, ExtCtrls, StdCtrls;

    type
      TScrlDir=(sdLeft,sdRight);

    type
      TScrollLabel = class(TCustomLabel)
      private
        { Private declarations }
        FRunned,
        FRunTxt:String;
        FTimer:TTimer;
        FInterval:Word;
        FRunning:Boolean;
        FTxtScroll:TScrlDir;
        FBigO,
        FMaxChar:Integer;
        procedure SetScrlDir(Sd:TScrlDir);
        function GetRunTxt:String;
        procedure SetRunTxt(S:String);
        procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
      protected
        { Protected declarations }
      public
        { Public declarations }
        constructor Create(AOwner: TComponent); override;
        destructor Destroy; override;
        procedure ShiftLabelText(Sender: TObject);
        function GetInterval:Word;
        procedure SetInterval(W:Word);
        function GetRunning:Boolean;
        procedure SetRunning(R:Boolean);
        procedure TxtRestore;
      published
        { Published declarations }
        property ScrollDirection: TScrlDir read FTxtScroll write SetScrlDir;
        property RunText: String read GetRunTxt write SetRunTxt ;
        property Interval: Word read GetInterval write SetInterval Default 200;
        property Running: Boolean read GetRunning write SetRunning Default False;
        property Align;
        property Alignment;
        property AutoSize;
        property Color;
        property Enabled;
        property Font;
        property ParentColor;
        property ParentFont;
        property ParentShowHint;
        property ShowHint;
        property Transparent;
        property Visible;
        property OnClick;
        property OnDblClick;
        property OnMouseDown;
        property OnMouseMove;
        property OnMouseUp;
     end;

    procedure Register;

    implementation

    constructor TScrollLabel.Create;
     begin
      Inherited Create(AOwner);
      Parent := TWinControl(AOwner);
      Caption:=FRunTxt;
      FTimer:=TTimer.Create(Self);
      FInterval:=200;
      FTxtScroll:=sdLeft;
      Alignment:=taCenter;
      AutoSize:=True;
      ParentFont:=False;
      Transparent:=False;
      WordWrap:=False;
      With Font do
       begin
        Color:=clBlack;
        Name:='Arial';
        Pitch:=fpDefault;
        Size:=10;
        Style:=[fsBold];
       end;
      FBigO:=Canvas.TextWidth('OWQTEKSZY\')div 10;
      If FTimer<>NIL then
       begin
        FTimer.OnTimer := ShiftLabelText;
        FTimer.Interval := FInterval;
        FTimer.Enabled :=FRunning;
       end;
     end;

    destructor TScrollLabel.Destroy;
     begin
      FTimer.Free;
      inherited Destroy;
     end;

    procedure TScrollLabel.SetScrlDir(Sd:TScrlDir);
     begin
      FTxtScroll:=Sd;
     end;

    procedure TScrollLabel.SetInterval(W:Word);
     begin
      FInterval:=W;
      FTimer.Interval := FInterval;
     end;

    function TScrollLabel.GetInterval:Word;
     begin
      Result:=FInterval;
     end;

    procedure TScrollLabel.SetRunning(R:Boolean);
      begin
       FRunning:=R;
       FTimer.Enabled:=FRunning;
       if not R then TxtRestore;
      end;

    function TScrollLabel.GetRunning:Boolean;
      begin
       Result:=FRunning;
      end;

    procedure TScrollLabel.SetRunTxt(S:String);
     begin
      FRunned:=S;
      FRunTxt:=S;
      Caption:=FRunTxt;
     end;

    function TScrollLabel.GetRunTxt:String;
     begin
      Result:=FRunTxt;
     end;

    procedure TScrollLabel.ShiftLabelText(Sender: TObject) ;
       var
        TxtL:integer;
        Pc:PChar;
       begin
        FBigO:=Canvas.TextWidth('OWQTEKSZY\')div 10;
        FMaxChar:=Width div FBigO;
        TxtL:=Length(FRunned);
        Case FTxtScroll of
        sdLeft:
         begin
          FRunned:=FRunned+FRunned[1]+#0;
          Pc:=@FRunned[2];
          FRunned:=StrPas(Pc);
         end;
        sdRight:
         begin
          FRunned:=FRunned[TxtL]+FRunned;
         {$IFDEF WIN32}
          SetLength (FRunned,TxtL);
         {$ELSE}
          FRunned[0]:=Chr(TxtL);
         {$ENDIF}
         end;
        end;
    {Set the textlength to scrolling region of label}
        if (TxtL*FBigO) > (FMaxChar * FBigO)
         then
          Caption:=Copy(FRunned,1,FMaxChar-1)
         else
          Caption:=FRunned;
      end;

    procedure TScrollLabel.TxtRestore;
     begin
      FRunned:=FRunTxt;
      Caption:=FRunned;
     end;

     {This allows font changes to be detected so the label might be adjusted}
    procedure TScrollLabel.CMFontChanged(var Message: TMessage);
    begin
      inherited;
      FBigO:=Canvas.TextWidth('OWQTEKSZY\')div 10;
    end;

    procedure Register;
    begin
      RegisterComponents('MyComps', [TScrollLabel]);
    end;

    end.

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

    { the following contains addition 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-008723-050897--72--85-62167----SCROLLBL.ZIP--1-OF--2
    I2g1--E++U+++Cm+-GA++++++++++++++++2++++F12q9p-9+kEI++6+0++RirgWbrbJXtY+
    ++0S+E++2++++2ElBWxHEp7DH2l0H0t2Ep7pHvgCkm+EAuJGpckRArN2MgXQJhqE6fLxY2Xw
    +4AzWnyXxm+o4T0-nv7wsWUbTBuDpl70iBqT+Kvw4i+8s38jkFaAmS0+gOYY-mZdsq898CRA
    Hd41IfFlgILYir0qgMBeOcuTIvNvjQwQNfg+71t6YbZ4xB92fm4mpY5peUztCZ1XAi1ODl0r
    C+pMh+pcmvXd4TxjpkKuy+3EGkA23++0++U+OEg26tHUZPg52+++o-w++-++++-2AHMjIoBG
    HolAEYkiF2BJnJZxQ3HLRHzrvRirPxxeVMH2But-UAlb1ENQBy-86-10c06Ec1I66c3KO94o
    IZMfUFlLsYi+29VUX6kd6XWqgNcllbLgVBP4rXXM-i64dmqCNnlZmBTIsvWiAoo4Ec5hvxnv
    RjShl2nwJuRWvdtvnjrRQwwxxxmDwpVEh4c4sSyLJ2KbTFAmLfHznT+jx0zlZqGytTeXGLFK
    NwkjnC41ZqitsaILTSqzxbvwSa47W2VkZYOoCAbxgVzq52NyLxlRvny6DK8KrLPQUPZ5IzFS
    QGAdRNjZ4mCBxIgrp-AxxC-px4KVIRvK5+oq2Ar8h0+E2hTKj0cOeawa8flpfvWiV-KVwAeq
    dW02KuhakTm2g0nGi-50zveyKBmfV8L-tiPeHMmQLvMStf5EIpFTrRnAgXxw2V493L-Fd9ed
    9gGxTrBpXpWjV2KBsGXAVD1IySBkYVEir-chWYNMq5aGtunAXBPMkaxxnhC5dNet2dCgLl08
    T08yVBpN8+bTAK4daHJ4wZm5p4WiKFegXGdCsXnBBGh0ayeWGULzOFYfdSzeZpNj0BPDp9uY
    PD7CouKPZqjQoJgeMwDaH57tjehlOsiqFugmnsY+N2GzXxj96rwnOP6brrr6b4pSxSlkLnNS
    xl1hx-GjO+a5UnJa1rHpOawFnpJ7JquBaXpWiTPxVBEcLVZe02PA5aqtRY2vbRj5Eazlsb+o
    44ahfXSDELtB8l2GP2f3cT+awnX2pvIb6BuXvPG8cJNBnil3EtO9drp-qyYibVzOhAkw+RZs
    3lNFN9aUcvFuOp3RRQEw0T2Q8GPONNI5cvPPgwogqDqOZwXXtlbLidHfdGxvhJrSFQ4caYeq
    CFn6bpU7N9R9nEfujCIdo-W+HWF-PxXe40deLPjwFOL3W-SM3BsIfAbCa+VoYmxnY29zmYOT
    4fJ8i6ZocmUGf6s4NkmT1hV4vpFPeOIfK8MJEUldiaR-g-YVq9Nwy2D+5T5SWWjQB9L2BASZ
    NtPLVKeXAVdK-hbAEW-j7wqgh1IO4gkQvx7xa5JWJP9B2a1xGSlCLGrEfk+fRw98+9iKRCEN
    KmK1lHJBhtEXSI4nnE0UxIaBJzEbd2N9pupm-uc8e66YWhl86KB37O-kxkdAj12Gn1Pf+0rr
    7O1tPXLlvqjyEGdIgB9-XR3EMpXkkUPQjJcwDgSZhghmXPO-P3Cay1qwYj0Fs1LPsOs3efgT
    oWiRunQHQlQwmRDiGjp9S0Q3jQ-f7GqLGbZGUerziTgAI3ToB8LYYvvpiyTJVnO3lNSNVoLQ
    DMrWwLwTSJUsQFYcDrTvjF9L2+l5lEkh78MMHk3vn5gi1SiL6SUrtvJ24wh1XkTZw8iBks-y
    s6+8iPa7Hfjxve94ygO6O-1hchps09UTXHcgDVplK11iNXkS5kHQ3ADjKFWirZ+Tf72Oysn7
    ECOCDdmaAEgZsDPf5D10bxIi9Vin+0g+H-yd396ngz2HRzhxNRIFH2MBnodj4pC-nfsbLSZU
    4JdyGu4ZOUNDxYk-i9+TC2RiIrya+dTLBKsd0RYRpbcKgvzuRQXZewzkaqbErNsGEAC+HbKM
    DEEzhkqzPqKYChnQ7+SEuBQxHT1gS0hx6MOWvDPsDOh1nG4sHG8jSWN-vuUzGnRV4AdO67S3
    Wyd14lwHtpoVMNeD+wb34ML1wRBby8pZsEIPuZDUqSMC+5To+szUIxvoytO3GlhPacA94fS2
    lReQkq8XyEWEXzF1XwHDOWC79apg1Mez+zeEiE963TrEcz0noTFvPTGe7eaNO+pkOzdVFwiB
    eNgfUdh0iAQXkak0zvnQijfzekS66Lxrw3sbZn3jqNNkA16qEtvFTD+qS3puSP0yRdsVFLn5
    eVvTIHoGXLlM7lfTwjunOhH8OwNOC7QHZrcGDGRBpIq33VI+vsESDaMyHsqvou3ugXLAGVir
    oatYsr3AhhF5lNpsdOq2Smmq5ZIxl+ecjs6KREcbBJlleCymKhDJblacDVszMmhFpdyppNSD
    dLUrtgLbONyJpB1haCdbpdJoxPKizifRZVGm2cDixwrrXTNtTBlQ5UnLM4IgSRrl-SNEAmpZ
    dMvfMWZQk09p15-dNFj3HGasYHFubGzB1ftoIihlI1Juv+TX-2jSvrlPDyt9RbYXPEYHTnUt
    tJj87DKMaqX9+nMhgqaHj+S6VZCqd4BgSNIwmz2EhjbdBWqlOO3BuqmuJPvTwj59sluU4t7y
    dXI7dWT3Fl6p4zfNYV5+gSP7C9ELmJ3Bei0L+ymchTYhc6yVhVhoD51DU4sLSyaIXTgdu-8o
    LtJu7l7vjNuGnrKH5AxobFnDQwLMnz6AQXn5gmXp17xCXiTrJ56wiwSHsvYxaVnDv-eFH04k
    m-xbzWsjcvlclP8ZGyQjzTCmSSLgULyHirQJj9oOTITb1AsNtn4w4TXnYqwE0CJZo6XQ6HGA
    Bn7oIVE4KsDwUrWfhc3zb3lYyLHSX5lcRL0n9pjbfPM9T0SOAroSrYlRMDQVcWnTs0mRxwd-
    0+udRhsBFw1qc1pzq9+QbMDxC+Gxf5ucnZ5u549UFJUt84yEtROd70hDoyKmmN+N-OzYu-mk
    vs9vANglAYTbO9k6k0Lagz7oDVgjMn2ysa2HVlsTcNlrXAF446b1RGGCkrhcXnO4SfKlS2LZ
    sLoxXetdsyauBc4mLDYorbITnee7q78Hg72b6yWbk75HQRfBk8Nv+8TDH-lDgr-AnAMtwW1q
    oJzUJTMBj+Tao+vrL9ko5gMXtexkwFTUBJ46mqMS9hvtiAy8u98l+1TfEWEPlPU73l5TjuzX
    ifveSEFLq-8OPGv3RJB8VwmzlZ4z5CCicUMjXxoAaxdkmYv2qCroiLQKvBW3wPhkq1o6Kkv0
    pWDINoq4rQRVtrDYwHq+kyFtaixv+HOyWrZQdARxIu1rAcLxEuXLCstyXLbfvjgcP1s+TWP8
    9AVacnm6yZnEVqalzX-paCh-jsZGVJ7BsuoKh9SXv+8a0yIUR1k5LQzHDCA34iTicmKi5p0D
    ulnwDtEyiCwJGFDZuJ3HI0v8yYrAPtSqXYe9TUNy45obdsNqi4fcetkU1QihdJlj9FLYPe9O
    r1du18zVtmRgFXa3we52XwPupBoTc7xu+qHQxmXJZfK0DYjfdfw2SUvZ5NHr79MrBkxZ1HIA
    LIANklfc3oD1xACVXO1PETR9n3Hn5heQII234RJo84AnmWaI1l312p+acbk1AQHfIc2GE-kx
    WXVOUyho1K7d9S8c2f3KWTJTVzJTXzLy7hOt0iiz+T4p4RX5I-ekFUqUMTE7UnMW-ViVhlbp
    3h+qXBA4LRz4abwPT1hkqv1iqx0y5TLhYCr0pPUPxRqcRu3zBq8V4yrvIRyDyU4gyk4o5QER
    xlFYHu3y-95z1C9Y4RVx3DEcu9CE5wR3RE9p2uUz-nhDMFyw-DcGMeUDTTdUmxxXLhx1zKL2
    p4ZE9eyUzUfqpOicjkPgOu+z+CLm7jez0HpjEbMCx-ncCx1z9iVtX5ISx1rk3s5v2DFbGAOL
    sHbJEFgcF3CmZgXxuodyFoVyCd-j4DKh6D4-65IRTJSXzwCzh8wFm3gtVm-DaXHt1eDYYHp2
    0XVHGov7nhDu7rLCgJ6s9mJGiM5h8XJ97b-rJM-HAt4qAHSByVa0iocZOplzOY0fbp6d4jC5
    ol+etIcaNideXwSHJhWtZYf5G3vBzPjXRfGHA-PBGiih2WiNSX2zRI1bkSFAi3UwNE+aVlld
    3YgL1s1YIfzYGfp7ydgmV2kbM80fVt6nYK97d+3X1OB2yYHmqYpZF6Zw872omMSv6kZ8d20C
    J6aZngkbYTQs2mEKCzCRF9PXH6hMvAln2ZZC8VZmnsi2eiihNFL9JmtQIfvaoQdJLPwtexAl
    -izwEhzKPZ5IrDa38ELlpglsOwOAKBbtRgCcQ6UYbrzysTnsifacPzyUFlUJHd+NPnJS3KJb
    WTs7JdR78RfnindvhDmi6oSpz+wuXqYL8DzxnZuBBahqlwoWdKEnzSYuennzBvCuqazh9vun
    4Iqqz-q2AymttSWGf3iCiYXJvGvERqtTEgqnzqXFxHweioxcyRpgj8zne-ORPpE+XxaJqJpu
    B6R3wHSCOTpZyneDOqJCcTGotqzl9hxtriUiBfdLalQjKMHZa-39nGq3Hpg3qRYhelQj4MtC
    yschvfQLLYpju3MBLT1u+Dhgt3Yh2EMOEvg-vGeyoppwty6ZzKt15BTiDegK8qLcrJJnhvr3
    wLr3QJjpKF8mTTgL7DPzutAzrjzdfEBjIzmxJijZvlqOzdzzzQ8Hbn6zh2634xOb9esoCgIW
    7Pt9I3uwN8NvBk4kIhrM5ATS2B6qEvBhAvGj2mE9wtvBjrsChOvCYymV5dfyOzUFhJth9fIw
    QS1havQR2v3bQTCCZ+5p18bhYcd8Vw4IBgLw+tp5OTyvLQIripPTIXfWfPTWfHTjriCrWyO8
    ZW83kv8WrLJ14ZWKXfxvvrqm-xOxVpFsM5PLLnmVRJy+9ZaPwuDqeQaNeAtmEohgGL6ESs1T
    tWFFLqCF-YtyMBSohIhdkLYJPrL2t7xSF9P0IxdKpBXEp7lyDgeyuZHf8fvJhTfCUTNPEmgq
    qx5n2zgauMWd0ugXlcblIZ1CWoNH7BMbvwN6v3KNiUJWRFfTb63MYwONMm0qHSDYCl1P0vcG
    x814GLYURZ9XOnAEyoXXanYEykGo2jEOu3lEt2x6mUCl8h+Oo8oiHfvFrwJdPm1Kty7YjW1q
    WQ4tOo4AD7mY3wFAo+KUKFuy8+hWNM9Hus7MZN+T-K6HrNnwIqmAaqzLG8l2DXEu0fomdKTO
    GEPalqZv3zVgSzuaT3-2MdDYtOvwAEsoGpvh3DjAnSZtFsmz4Ws1tEw9m6-X7xqQpbT6QFd-
    yIA2ohnMet1j-wwT8+u0Jc2yXLYh-bqNzE1uCinaQGtVLDvkw0xqjmz+wqSxrxAGqSsLUNW7
    mV-ELcQFEi4aU-wCyIml79ORDly+5kCy5-F9HVIqfUtw0SFBBfwTDDjhONgz+tvxxoCPzlVw
    +DlJo-VbhvPwicX6STkD8BzHQJgyGgDu+HxC8sXlVx6tBZo9COTsvO1PtOhNwSxfu0TICbqa
    wpgZ6irZi8W1j7e0VRSYDsDPa2Mc8CStlTPHARgzdoXBsnJGxfkBiZTuQobgcAn8CkfNXjw+
    nr5wCp1qrqpE5gw9jz5wVUX44HEGz2C6iobUyMDE6u7X4xBG2MnlEucGx+NzN+9xWfxB00fY
    zr6u7BFw28elCjVX0CmOXc18+zyJnYzTJ9iWGYySnLgQwezgiCBtninLndHbzNQq9PDxhR4V
    jobiKwLbMjvJAWZEwtf8xgaDN6VPYhxLd9yu7At5HxfwMJjD0yG9-R1jDNjzqCvr-ljb2YeS
    0wfyLmCIDHIqPFDdRcqlvIrA8ljfRFHmgFXzKz7nav7nhhoy0D6qyL9h81HZj1fYzn9RWrpn
    2gusDzYGzZxEGkA23++0++++ws+36k++++++++++++++++M+++-2An7TAmxEGkA23++0++U+
    E7au6cCXID4a++++s+2++-6+++-2An7TAmxHEp7DH2l0H0t2Ep7pHvgC+W2E5AHWv8uojB8G
    V6NKXNq7WTd-71Fy3by4yk0wAq4LrNbgnFs1+0lIdKXxlwQ+EPvjwAM9Jnnlk3rmX+hiV0rQ
    ***** END OF BLOCK 1 *****

    *XX3402-008723-050897--72--85-27584----SCROLLBL.ZIP--2-OF--2
    TBUrTe6upX9EwK8qztsvWr6Eck6bYNkn6Iy851Mck0Zy0zkkbCrREHa-syioqnJTOnOvkk-2
    DcaGSo1m+X8j6Vf3GLbIWrlRe57NQDoRG2pC0lPR+PZAXETwbZoB1CA9I2g1--E++U+6+54j
    xG7hSKMFIks++DQQ+++G++++F1AmLnAjIoBGHolAEYkiF2BJlJVvI3jLaHzbEsy996FAV+m2
    I226GlWUWgBsMWzi+C7VIhsGdbuZiIVLsWN0IeG9PH979WpyUMPR74sSHhgoqqabgngN7opr
    hUtBdxr+q4aaav7CBgpiAXjHzB3BBsxuDQHqSXlWjrDijR8J65yja5DjyLvTwrnbTCSQGwSd
    oSvfpMEwwj6LRLiqfRwYnt02rFxAleDFmKVfEYmxRCG9CV6Gz2f6dmGXeIgpkMOkDS0PGGbl
    uE3lIcdSwGuJFodOXR-juDZzXpEOYRMyGS4RU5FQyTAPbxpNk-u88r7M1ce856xlRZYSSoGI
    MudOFFviZtHC4GLiZlyJhX18i32t2diKBCLP0oA87AJM8W2ahlPkPlOs9Iz+ZtF2FRcufcZs
    AXGF3-CQKtKjBhUPXmay8H2KYI8A5kk7DQSJL5shUM+w9GJTcPsR2KifGWlQ1bsE8J5vFgTP
    BEVR1gRsJwhT3iuD8J9me-Uh3Cy7WNDFP++y1+ZbbEQEQTU4jxYvD-HkvSgQuijdfbVyvRwW
    Ck8OG4ir3-NbcgcyAFO8OiseXIkt7coYskYdeQVGGgyClgOYyu6mdbAs8IRYROvRavZXIZ+d
    A6mwPiac57EMc8yWDBLid-XdblMXahCm94xA2YByFQyM8sjvJNr-S2Ueo21CG4vKbINwG7mK
    0h07K+U55BFLW6Pqln1dQYVrunG2YwWitnmLLT4NK2UBjXG9XmRo2vUiy5fyzOZI+WTGcAVV
    PLsBg0wSXGQ9whGTseVTWGTJiHR2b9wcwcTBZWl5mkqa44Wkh4BnzfM86QjAqenOnDBDlMzh
    ovCIBqJtb2d1B1fXmwOqLov7C1WSmaq-kTVAGictWevSyil56y3G3FWA5pL-ypj4TsJG2r7A
    gr-yyz9byGb7vaIv+bpMuJBmA3Q28LnDOeKZATLOtWatzflrAakCg+nwx51DfcW1RzAbnFeA
    RYL3sAD1rHyqMSbf+hY3aBANYNLU3-yLXKCQTaP3RHtG52tctTdtR44zkIdqnwlNwGinKbNI
    8tmy48ww5v42IprlO8WawazqglIasgdChP9VHwUVNIcRdhIL3JAdGFqZ1IQtbMX5A74zyAdD
    H5lNObHfE3kAORBHOM1rOwIm7gLo+NMPq-B7KN3mFJlhMDb3gCEHcx4Sso2dYHp-L62F8NaG
    IkcHuImZg260QOraBb4oIKSDWqhrjvULXnZy9ArmxT1XYewDFEF3x2ZgClptlzL5GBaM343K
    YhZEIajzYCn14FyIIWaq1rrqwAbbko7+6qAjV5MU2tQIqmosImI1gkZ77zqneL33Xb6mMj2f
    mF2lJRryxgwlkQXeXwa88aV-Gd4aiERPNmkZcuUQWtmcqhQRBf51tpP5lLw7KvjWwOUYlgFz
    5jzvg7KR--2dyS+L+my49ENtOq-swW5QQHxuebMlMisJcmbdhMTS4gLeIT5K6SZMTmmZW94U
    jcJeXBuY7CJlH65YX9HAZCoRT24cFxLp5xl+l8X3dIhI4OpQiB0qXU4Af1AI4dD05--I6-Il
    I9tcwWyyypF5lB4V5Y8xQUnbLnJEn0I4B6KkSEEDqiHPpfC56dM-8FNFdUXyB1g613zMglel
    XwTYFqMYBGLQQX5KUo5QkQKn45RYwgIHgtmfiaEYNtFkgXQNbqOi2lSyYdIEZG31X2XSmwXU
    LNNIO2+88siTr-VyfdaEiumdo7UQaJ6KDyI+B+Y-j7B3iyLYaPD15zmtiE5jKycZXRwctcPd
    HzufZHHNXS0NcxtHRrcxo5dDS0RdjAr6oisDQqkCm8VtiuahpiGLca4rppN9Kxqv99KKni3X
    AGbdRUgS-7l0gB4JNo0PARL0kLi2f+3-BF-gr72bnrMLRE0eWWCbEKf-5r6rEv0lcZ-3jvac
    CZuX1dpkSnOdx-KeC8gxKFKDNIl8sHvcxd+hcViPWQJkvZKpgPnlX9bfBcqbfo11IJqrqJ2R
    Cb7jsGVkL34pDgntgRFGTvXaFe30Lvt0QrJBJi3CrIoBngvhyKuat51iieqezg3gR4PlGv2E
    nawXS2lcTQ-R9rVU7CVigVKC39bcVtqcedrSWdmNM4BJzf6mLalJwHa1pnefhV4uer5e-5rr
    b4ApE9vVP+gqqbYVmszmvk+Jbufp62DUPUMacrCgs6Wn3eJx+PXuCFN5OFwFW5RjISw-ir+B
    m0B3uxvJDFPGPCpZImG3GArq6dL+gN0Oqe7aGmyz--DHDILBlPruYW4Sne7acJSPJp9LLxFg
    uoIJRMGYSP0cqRnP7IS4GToc2lkIXvDu7jJWIMghhw17SXao34QbXekTER8T6oSVdGEjIPGc
    pD58lgN7O9KcRPZORjCfJer0JXD3oC96bp1HiUkhqkm9rPHSUc1T0BF0WmqrG2rfDQ-XnB8v
    YQtBfKbxQT0KeUD36S+SXTZrBHh9ARRnDsJm69nbhP7-M+GiaX6C563FbGLcjZoS3oROc-N6
    PF5LMHtRRKuCxw-i6AFftaShWpFkY2qehnVvz9d6JEsKx2ww3ubKIT0OyHr7FKdoeBHA6xEi
    g0vWmQaOK9NRd0sfmWDSNfWViYVxHhmKitquG2ACRyHTH3qYAQQHQaVHUFj1BuG9BCT4NRLi
    cmvGafBX5MvV3p1kMFTltdil1QSu7uAOPqS-Wy2MjvlqlsxVFhiqNf8PfMjgmaQKOwnlV6jQ
    ZwQ8RaBJeLt8BnMqzddoM9SH+Ba33FRxfQu2N35qK87gFDm-Dyoookyl1d9vjMXBN80LgPq-
    vIDmzzRnw0Rcp8fqTdADmD28uySRemlwOluW1z+CYhqamXbk1W2PVgGkrAs7d91CX92M7Mi7
    LatPGP1sP0FPRJxWV4kXSjoleaxnEAFCp37YzRSrs7SEL3omydQcQtWEX0t1SEenFQekU4N4
    ywqlmWkZOgImc9j+1LgvWJuu1-cdgA1ORg9faB4xKlUc6wO0Nb1D3Z8r2IBpAzGV9MFQd81I
    4ITS6eFm6VV3hdc+Bn3i++nlPS3l-x3r+kPx00JMAuu40e7j1Elu0PYj3IVI2gASkJ-Q3-jF
    +e2eMhkg46klPGU3IfQHsuv-sAREsf20eKeGqnvwymRCL3O2yRIf5nByybzGzt4yYLvvrgjd
    GmfkLjdGKhUMPIwzmpOiXjviJTdrfACdVRCzlKTsoiYpLbwLHvz1o3R-2ruJeWMCNspiveGD
    XK1z6iwjhq4kKXw5qYUKL0ljnoYgvqDxozyc-zAO2nlrzLwLHfz9B5Vc7ryBru3HqLV9Tzvg
    KdObKbnqQXtksUD33jdPAyjCfxfHZvvtk82JUhjd-cAuYn6jL7NHVX4DklCXUNujykwSk-9n
    vwQYLYaTmZd9jnDrIIO93mpPhKvu6ZcxwkH9pYfufT10aHISr9yatv8O8y5o52BLB7gfNovl
    GBQApYxwA8BPF5i9QolUNHnxuGXCvQ9sfTHvuNtPOX7zDHsZsXiosEohS7PaqNON5ZRtGzBj
    4eXoKIuhO4c51lk69HWbK+OLB3gfTq9DHutUMUsQMR3RFHwLJHox36nV6In4FDdxtfaTuduL
    5qFHBfxdmh7L3bv47wprrvbfaMLtxpaTFuY4RKJlbiKeaGOhme2z9P1gzqlJXGZxZbIKmvXU
    lgmh8MKmAH3kiIUrg7GnhLGQ9a3ehAIrTgj+yiHSb9r+ncpwWLFuBRxOyXpJM7s3LjfmZTEj
    SBGz9rptvGyjzhKRO4cYzPjyNJck3DGh7jSH2hJJMOt5u7TZSigpln1x5DSbrxS0mop5bdR1
    8mWWxNTPm7OHgQ-5RCV9r6rmuZwkpOTTjTQr3ydptMAfKYZMwHosmzuzYW8s15+Fg0LEa3pw
    j6tmczpePdErQ7F5JiNPy2uvAjoO2DBJEeyqoegBtbJ0pmjciY0jwSSuYpc2ycl+KkLuVY-L
    -JcA+bpCc3u-DWzE7kFe2yUSULM6x0a-TYSUBkKuIu-h+hoZoDg2qWvEfkaoGu1R+ioJu1u-
    rWxEio+3UHeeuShCybc3DEZptai2Lehb1Yppx8eHZYArTJqUFx1L89HFTl7c0rNfMFSx6B+S
    vCt4RA-7VvnoSovej6xSu8J77loFu3UXjS0YUHOeCCZyULuXUN25qxbnw-vqT809DFwIu4Ef
    ApMaI-TbVhfc0xroVThdS6-C1R1kDjBBBvlN-zXt5GqX5VjITEqQxL0s13lZI32-FqrodUAS
    9MD58i1PRhMzUMUP3hid11OcfsS4CaXwhfYMei0h0cWtsPRZtb7ka4iV+FdgtVNkabR18nGu
    sL32Sv0BUUTSRi864q4h4hOe63e3V-Aiqy5R0jAFe65r54MNeh4-anJM566Dly-X7l6Sy4wr
    z4QJb2T3FjWs2HuhUcwSU1yu63f1vAWObQDalp4KqPOPHs6ReamMTvEIA1w77XPpHq9kDxld
    TVdQx4acc1Sew6JuPjAttBykKwv-2mwQc5iRo6FeNHWsFbkug4Zz7Ugy8pUnJI4vmMJGxOMi
    mo2oscORUULg+W0r4dwC0m1eF-hiVWDJ1RLspoMw3Xi91G2jR80p8YgR52ORBhC+cwe25mpQ
    NUEgI+RJUUbT1aWrS+4UqRF2XXs7A3t2bX7t0KaTR7e-f1fC2j8RtqvW5Hh-PXLN81E7aGM9
    VP4A4Ss4kEnacgmhvtgm4Kn3w0-yUd+GX5EvFZI0UQlqPCIA7eEGPwBr+638g4Tik3OfkbQV
    T1T0RoBNtWtcnPE+jzfS+uktAfhJarjFNWTOr+g1aItgDOdIDv-ansl0Vo+GCwSVqn6CfqGC
    e2cW8YWc8271Fg6a+xuI2qLHs9LAk+y3KNU3qmnw+H6nI498H+ApNltbRdrYKq0lT+iuAWSN
    6GRNE567QvI2fgk0X4GS-6y+rdw41uP3SMux0-5z1p-9+E6I+-E++U+++Cm+-GA+++++++++
    +++++++2++++++++++++A+++++++++-2AHMjI2g-+VE+3++0++U+5Phv6dxtpMyN++++bU2+
    +-+++++++++++++U++++6U+++2ElBWxHEp7DH2l0H0t2Ep7EGk203++I++6+0+-d0kEXZC0J
    ikQE++1E5k++2++++++++++++0++++1d++++F12q9pB1IYxAH27A9YF1JJ-9+E6I+-E++U++
    +DC+-GA++++++++++++++++4++++++++++++A++++-sF++-2An7TAmxEGk203++I++6+0+-+
    aPcWUuBEwOM+++1U+E++2U+++++++++++0++++-02E++F1AmLnAjIoBGHolAEYkiF2BGI2g-
    +VE+3++0++U+QOzp6aptNV3H1U++xlk++-6++++++++++++U++++4-6++2EnAZwn9pB1IYxA
    H27A9YF1JJ-9-EM+++++-U+4+46-++0P6+++++++
    ***** END OF BLOCK 2 *****

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