TCPIP Chat

TCPIP Chat

Postby Silvio » Wed Sep 24, 2008 12:26 pm

How I can to converte it in fwh ?

http://www.codeproject.com/KB/IP/TCPIPChat.aspx
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Postby norberto » Wed Sep 24, 2008 12:42 pm

HI Silvio, i need this too... i have an old one in fivewin, but want one in fwh/xharbour.

norberto
norberto
 
Posts: 566
Joined: Thu Aug 30, 2007 3:40 pm
Location: BR

Postby Silvio » Wed Sep 24, 2008 12:44 pm

We can translate it
Can I see it please
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Postby Antonio Linares » Wed Sep 24, 2008 1:29 pm

Silvio,

If you are going to have multiple clients, then the browse solution that I proposed you is simpler to be implemented.

Unless it is not going to be used on a lan.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby JC » Wed Sep 24, 2008 6:01 pm

Antonio Linares wrote:Silvio,

If you are going to have multiple clients, then the browse solution that I proposed you is simpler to be implemented.

Unless it is not going to be used on a lan.


Antonio,

Please, it's possible send to me this solution? Thank you.
Peace and lighting!

Júlio César M. Ferreira

FWH 8.10 / xHB 1.1.0 / xDevStudio 0.72 / Pelles C 5.0.1 / SQLLIB 1.9
User avatar
JC
 
Posts: 445
Joined: Thu Feb 21, 2008 11:58 am
Location: Brazil

Postby Silvio » Wed Sep 24, 2008 6:32 pm

Dear Antonio,

why we cannot create a small tcip chat

the our fwh classes not run ok?

I saw it (there is cpp source code) why not create it with fivewin?

I found fwserver and client sample :not run

I think we must not use fwh only for create application to administrate dbfs.

we must enlarge fwh horizonts
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Postby norberto » Wed Sep 24, 2008 7:00 pm

HI, i down this files in some fivewin forum, i dont remember where.... i dont know about author..

sorry, my mistake , author is Author Yanni Yannas - Rhodes Greece.

Server :

/ Server .
// Server receives IP pcakets from the clients.
// Each packet starts with chr(1) and ends with chr(3). So we know if the packet
// is complete. Delimiter is '|' .
// chr(1)|IPNum|Username|Message|Command|chr(3)
// IPNum = sender's IP number
// Username = sender's UserName
// Message = Message
// Command = Command to execute
// Every Packet when received on the server, is sent to all users.
// Server , uses an array to store info about it's clients.


#include "Fivewin.ch"
#include "Splitter.ch"

#xcommand DEFINE GSERV <cVar> ;
=> <cVar> = GSERV():New()



#DEFINE iDSERVERPORT 790 // Server : Port No. to listen

//------------------------------------------------------------------------//
// Server section .
//------------------------------------------------------------------------//
Function Server(oBtn)
//
MemVar oApp, oChatserver, ochatclient
Define GSERV oChatServer // define Server object
oBtn:Disable()
return .t.




Static Function OnReadServer( oSocket )
// actions to perform when reading data from the socket oSocket
local xPacket
local xDelim, i
Local xIPNum, xUserName, xMsg, xCommand
Local nPos, nArrLen, nTime

xPacket := oSocket:GetData() // chr(1)|IPNum|Username|Message|Command|chr(3)
xDelim := "|"
i := 0
nTime := 0

if StrToken(xPacket, 1, xDelim ) = chr(1) .and. Substr(xpacket,2,1) = "|"
// ok to proceed
else
return .f.
endif
// LogFile( "server.txt", { xPacket } )
xCommand := StrToken(xPacket, 5, xDelim )
xMsg := StrToken(xPacket, 4, xDelim )
xUserName := StrToken(xPacket, 3, xDelim )
xIPNum := StrToken(xPacket, 2, xDelim )

Do Case
Case xCommand = "UPD" // send updated array of users
aArray := oChatServer:aServerUsers
nPos := aScan(aArray, {|aVal| aVal[1] == xUserName} ) // scan array
For i :=1 to Len(aArray)
if aArray[i,1] = xUsername
loop
Endif
aArray[nPos,3]:SendData(chr(1)+ "|" +;
aArray[i,2] + "|" +; // IPnum
aArray[i,1] + "|" +; // username
"NIL" + "|" +; // message
"UPD" + "|" + chr(3) )
syswait(.1)
Next

Case xCommand = "ADD" // new user
nTime := Seconds()
aAdd(oChatServer:aServerUsers, {xUserName, xIPNum, oSocket, nTime} )
oChatServer:WRData(xUsername+", connected")
For i :=1 to Len(oChatServer:aServerUsers)
oChatServer:aServerUsers[i,3]:SendData(xPacket) // send packet to everyone
syswait(.2)
next i

Case xCommand = "DEL" // Delete user
nPos := aScan(oChatServer:aServerUsers, {|aVal| aVal[1] == xUserName} ) // scan array
nArrLen := Len(oChatServer:aServerUsers) // get users array len
aDel(oChatServer:aServerUsers, nPos) // delete array element
aSize(oChatServer:aServerUsers, (nArrlen -1) ) // shrink
oApp:oLbx:refresh() // refresh listbox
OnCloseClient(oSocket)
oApp:WRData(xUsername+", disconnected") // write to the memo

For i :=1 to Len(oChatServer:aServerUsers)
oChatServer:aServerUsers[i,3]:SendData(xPacket) // send packet to everyone
syswait(.2)
next i

case xCommand = "CCC" // client connection check (if a client is still connected)
// incoming from client
nPos := aScan(oChatServer:aServerUsers, {|aVal| aVal[1] == xUserName} ) // scan array
nTime := Seconds()
oChatServer:aServerUsers[nPos, 4] := nTime // check done. save the time.

case xCommand = "CUN" // change user name
// user has changed his name

case xCommand = "MSG" // incoming chat packet
// dispatch MSG
For i :=1 to Len(oChatServer:aServerUsers)
oChatServer:aServerUsers[i,3]:SendData(xPacket)
next i

case xCommand = "POP" // incoming Popup msg
// private messaging
// ???????? !!!

Endcase
return nil







Static Function OnCloseClient( oSocket )

// oChatServ:WrData("Client disconnected" )

oSocket:End()

return nil



Function ChkClients()
// see if the clients are still connected to server
Local nPos, nTime, i, nArrLen, nPos1, nArrLen1
Local oClient, cUser2del
Memvar oChatServer
nPos := 0
nTime := 0
i := 0
nPos1 := 0
nArrLen:= Len(oChatServer:aServerUsers)
nArrLen1:=0

For i := 1 to nArrLen
nTime := oChatServer:aServerUsers[i,4]
// MsgInfo(Str( Seconds() - nTime) + "|" + oChatServer:aServerUsers[i,1] )
if (Seconds() - nTime) > 42 // server lost connection with the client (apparently)
oChatServer:oTimer:Deactivate()

oApp:WRData(oChatServer:aServerUsers[i,1]+", lost connection") // write to the memo
cUser2del := oChatServer:aServerUsers[i, 1]
OnCloseClient(oChatServer:aServerUsers[i, 3]) // close socket
aDel(oChatServer:aServerUsers, i) // delete array element
aSize(oChatServer:aServerUsers, (nArrlen -1) ) // shrink

nArrLen:= Len(oChatServer:aServerUsers)

For ii := 1 to nArrLen // inform others , so they delete the user
oClient := oChatServer:aServerUsers[ii, 3]
SendMsg(oClient, cUser2del, "DEL", "NIL") // delete user cuser2Del
Next ii

oChatServer:oTimer:Activate()
endif
next i
return .t.

//------------------------------------------------------------------------//
// Server section . END
//------------------------------------------------------------------------//



Client:



// Client.
// The chat client.
// User writes his message, which upon hitting Enter key,
// is sent to the chat server, as a packet.
// Syntax of the packet
// chr(1)|IP Num|Username|Message|Command|chr(3)


#include "Fivewin.ch"
#include "Splitter.ch"

#xcommand DEFINE GCLIENT <cVar> ; // Object
=> <cVar> = GCLIENT():New()


#DEFINE iDSERVERPORT 790 // Server listens at this port
#DEFINE CLR_GETS RGB(255,255,220)

//------------------------------------------------------------------------//
// Client section
//------------------------------------------------------------------------//

Function Client(oBtn, obtn1) // start client
Local oDlg, oGet1, oGet2, cVar1, cVar2
Local lNoShow := .t.
MemVar oApp, oChatserver, ochatclient


cVar1:= space(15) // ip
cVar2:=Space(12) // user name
oBtn:Disable() // sorry for this, i have to figure out another way....
oBtn1:Disable()

Define GCLIENT oChatClient // define Client object

DEFINE DIALOG oDlg RESOURCE "CONN" of oApp:oMainWnd

REDEFINE GET oGet1 Var cVar1 ID 201 of oDlg COLOR CLR_BLACK, CLR_GETS
REDEFINE GET oGet2 Var cVar2 ID 202 of oDlg COLOR CLR_BLACK, CLR_GETS

oGet1:bValid := {|| !Empty(cvar1) }
oGet1:bLostFocus:= {|| oGet1:Assign(), ;
(oChatClient:cServerIP := Alltrim(oGet1:varGet())) }

oGet2:bValid := {|| !Empty(cvar2) }
oGet2:bLostFocus:= {|| oGet2:Assign(), ;
(oChatClient:cUserName := Alltrim(oGet2:VarGet())) }

REDEFINE BUTTON oBtn1 ID 106 Action ( oChatClient:Conn2Server(lNoShow), oDlg:End() )
REDEFINE BUTTON oBtn2 ID 107 Action oDlg:End()

Activate Dialog oDlg


return .t.





Static Function OnConnect(oClient)
// connected, ask from server to add on the list and send back user names.
Memvar oChatClient

Sendmsg(oClient,oChatClient:cUserName,"ADD","NIL")
oChatClient:WRData("Connected")
syswait(.2)
// request Update from server
SendMsg(oClient, oChatClient:cUserName, "UPD", "NIL")
syswait(.2)

Return .t.


Function OnCloseClient(oClient)

SendMsg(oClient, oChatClient:cUserName, "DEL", "NIL")
syswait(.2)
// ::WRDATA("Disconnected")
return .t.


Function ChkTimer()
// connection check
SendMsg(oChatClient:oClientSock, oChatClient:cUsername, "CCC", "NIL")

return .t.




Function SendMsg(oClient, xUsername, xCommand, xMsg)
// send the packet.
Local xPacket, xIPNum

Default xMsg := "NIL"
xUsername := Alltrim(xUserName)
xIpNum := oClient:cIPAddr
xPacket :=chr(1) + "|" + ;
xIpNum + "|" + ;
xUserName + "|" + ;
xMsg + "|" + ;
xCommand + "|" + ;
Chr(3)

oClient:SendData(xPacket)
return .t.




Static Function ClientRead(osocket)
local xPacket
local xDelim, i
Local xIPNum, xUserName, xMsg, xCommand
Local nPos, nArrLen
Memvar oApp , oChatClient

xPacket:= oSocket:getData()
syswait(.1)
xDelim := "|"
i := 0
nPos := 0
nArrLen:= 0
// chr(1)|IPNum|Username|Message|Command|chr(3)
if StrToken(xPacket, 1, xDelim ) = chr(1) .and. Substr(xpacket,2,1) = "|"
// ok to proceed
else
return .f.
endif
xCommand := StrToken(xPacket, 5, xDelim )
xMsg := StrToken(xPacket, 4, xDelim )
xUserName := StrToken(xPacket, 3, xDelim )
xIPNum := StrToken(xPacket, 2, xDelim )

Do Case
Case xCommand = "UPD" // incoming update (users)
nPos := aScan(oApp:aUsers, {|aVal| aVal[1] == xUserName} ) // scan array
if nPos = 0
aAdd(oApp:aUsers, {xUserName, xIPNum} )
oApp:oLbx:refresh()
Endif

Case xCommand = "ADD" // incoming new user.
aAdd(oApp:aUsers, {xUserName, xIPNum} )
oApp:oLbx:refresh()

Case xCommand = "DEL" // incoming Delete user
nPos := aScan(oApp:aUsers, {|aVal| aVal[1] == xUserName} ) // scan array
nArrLen:= Len(oApp:aUsers) // get users array len
aDel(oApp:aUsers, nPos) // delete array element
aSize(oApp:aUsers, (nArrlen -1) ) // shrink
oApp:oLbx:refresh() // refresh listbox
oApp:WRData(xUsername+", disconnected") // write to the memo

Case xCommand = "MSG" // incoming Message
oChatClient:WRData(xUserName+" > "+ xMsg)

EndCase

// oApp:WRData(xPacket)

return .t.






****************************************************************
//CLASS Definition
****************************************************************

CLASS GCLIENT
DATA oClientSock
DATA oTimer AS OBJECT
DATA cUserName AS CHARACTER
DATA cServerIP AS CHARACTER
DATA nPackets AS NUMERIC
DATA nServerPort AS NUMERIC
DATA lConnected AS LOGICAL
DATA aUsers AS ARRAY INIT {}


METHOD New() CONSTRUCTOR
METHOD WRData(ctext) INLINE oApp:WrData(ctext)
METHOD CONN2SERVER()
METHOD END()

ENDCLASS



METHOD NEW() CLASS GCLIENT
::nPackets := 0
::cServerIP := ""
::nServerPort:= 0
::cUserName := ""
::lConnected := .f.
return self


METHOD CONN2SERVER() CLASS GCLIENT
Local c1, c2,c3,c4
MemVar oApp

::cServerIP := Alltrim(::cServerIP) // get rid of blanks

::oClientSock := TSocket():New(iDSERVERPORT)

::oClientSock:bRead := { |oClient| ClientRead(oClient)}
::oClientSock:bConnect := { |oClient| OnConnect(oClient) }
// ::oClientSock:bClose := { |oClient| OnCloseClient(oClient) }

::oClientSock:Connect( ::cServerIP ) // use the server IP address here
::lConnected := .t.
oApp:lClientConnected := .t.
oApp:oMainWnd:SetText(::cuserName)
::oTimer := Ttimer():New(30000, {|| ChkTimer() }, oApp:oMainWnd )
::oTimer:Activate()
return self



METHOD END CLASS GCLIENT
// close
::oTimer:Deactivate()
syswait(.2) // just wait .2 sec
::oClientSock:End()

syswait(.2) // just wait .2 sec
::WRData("disconnected from chat")

::oTimer:End()
syswait(.3) // just wait .3 sec
return self


****************************************************************
//END OF CLASS Definition
****************************************************************









Chat:



// Chat for FW, FWH. version beta 1 May 2, 2001
// Author Yanni Yannas - Rhodes Greece. Email : plous-rh@otenet.gr
// Description :
// A chat program over TCP/IP written in Fivewin.
// The original program was written in FWH and Harbour. But i still have problems
// with the displaying of the memo. Until solved, i 'dropped back' to Fivewin.
// I wrote this, as a excercise, trying to understand sockets.
// Contains a server section and a client section. Any station can act as server
// for the chat session.
// Tested over the internal company network with 4 users.
// I apologise for the confusing coding in some places, i hope to correct that when
// i will have more knowledge on sockets...
// Please, feel free to correct, add code, and use as you wish.
// Many thanks to everyone of you my friends for your continuous support and help.
//
// To my friend Vangelis, a special 'thank you !', for his very original help on sockets :
// "Immagine water pipes. If you connect the right edges, then , water goes
// where you want to send it !"

#include "Fivewin.ch"
#include "Splitter.ch"

#xcommand DEFINE LETR <cVar> ; // Object definition at the end of file
=> <cVar> = LETR():New()

#DEFINE CLR_BROW RGB(235,202,171)
#DEFINE CLR_BFOOT RGB(26,120,160)
#DEFINE CLR_FFOOT CLR_YELLOW

#DEFINE CLR_GETS RGB(255,255,220)
#DEFINE CLR_RONLY RGB(0,232,225)


Function Main()
Local oVSplit, oHSplit
Local oBar, oMsgBar, oServerBtn, oClientBtn, oFontBtn

Public oApp, oChatServer, oChatClient

Set date British
Set epoch to 1960
Set Century on
Set confirm on

Define LETR oApp // define Object . Contains global variables

Define Font oApp:oFont Name "MS Sans Serif" SIZE 11, -10

Define Window oApp:oMainWnd From 20,20 to 340,500 PIXEL Title "Chat for FW"

oApp:oMainWnd:SetFont(oApp:oFont)

Define MsgBar oMsgBar of oApp:oMainWnd

DEFINE BUTTONBAR oBar Size 32,32 OF oApp:oMainWnd 3d

DEFINE BUTTON Resource "Exit" OF oBar ;
Tooltip " Exit" ;
ACTION oApp:oMainWnd:End()

DEFINE BUTTON oServerBtn Resource "xrun" OF oBar ;
ToolTip "Start Server";
Action ( Server(oServerBtn), client(oClientBtn, oServerBtn) )

DEFINE BUTTON oClientBtn resource "Green" OF oBar ;
ToolTip "Start client";
Action ( Client(oClientBtn, oServerBtn) )

@ 206,1 get oApp:oGet var oApp:cgetVar Size 400,21 Pixel ;
Font oApp:oFont ;
COLOR CLR_BLACK, CLR_GETS ;
Of oApp:oMainWnd;
ON CHANGE (::Assign, Prep2Send(nKey) )

oApp:oMainWnd:oBottom := oApp:oget

@ 0,1 Get oApp:oMemo Var oApp:cMemoVar MULTI SIZE 340,200 PIXEL ;
Font oApp:oFont ;
COLOR CLR_WHITE, CLR_BFOOT;
ReadOnly OF oApp:oMainWnd

@ 0,346 LISTBOX oApp:oLbx FIELDS "";
SIZE 200,200 ;
COLOR CLR_FFOOT, CLR_BFOOT;
HEADER "Users";
SIZES 70;
PIXEL OF oApp:oMainWnd

oApp:oLbx:nAt := 1
oApp:oLbx:bLine := { || { oApp:aUsers[ oApp:oLbx:nAt ][ 1 ] } }
oApp:oLbx:SetArray(oApp:aUsers)


@ 0,341 SPLITTER oVSplit ;
VERTICAL ;
PREVIOUS CONTROLS oApp:oMemo ;
HINDS CONTROLS oApp:oLbx ;
LEFT MARGIN 300 ;
RIGHT MARGIN 40 ;
SIZE 4, 200 PIXEL ;
OF oApp:oMainWnd ;
3DLOOK

ACTIVATE WINDOW oApp:oMainWnd ;
ON RESIZE ( oVSplit:Adjleft(), oVSplit:AdjRight() ) ;
VALID (ServerExit(), .t. )
return nil





Function ServerExit()
MemVar oApp, oChatClient
If oApp:lClientConnected
OnCloseClient(oChatClient:oClientSock)
Endif
oApp:End()
return .t.







Function Prep2Send(nkey)
MemVar oApp, oChatClient

Do case
Case nkey < 13 .And. oApp:lClientConnected // backspace .. etc
oApp:cTGetBuff := Alltrim(oApp:cgetVar)
Case nKey = 13 .And. oApp:lClientConnected
oApp:oGet:oJump:=oApp:oGet // focus again
if ValType(oChatClient) ="O"
SendMsg(oChatClient:oClientSock, ; // function sendMsg() in Client.prg
oChatClient:cUserName,"MSG", oApp:cTGetBuff)
Endif
oApp:oGet:VarPut(Space(130))
oApp:oget:refresh()
oApp:cTGetBuff :=""
Otherwise
// oApp:cTGetBuff := oApp:cTGetBuff + chr(nKey)
oApp:cTGetBuff := Alltrim(oApp:cgetVar) + chr(nKey)
oApp:oGet:oJump:=oApp:oGet // focus again
Endcase

return .t.



/***
* TimeAsSeconds( <cTime> ) --> nSeconds
* Convert a time string to number of seconds from midnight
*/
FUNCTION TimeAsSeconds( cTime )
RETURN VAL(cTime) * 3600 + VAL(SUBSTR(cTime, 4)) * 60 +;
VAL(SUBSTR(cTime, 7))





****************************************************************
//CLASS Definition . Program vars
****************************************************************

CLASS LETR
DATA oMainWnd, oFont, oLbx, oMemo, oGet
DATA cMemoVar, cGetVar AS CHARACTER
DATA cTGetBuff AS CHARACTER
DATA cLocalDir AS CHARACTER
DATA aUsers AS ARRAY INIT {}
DATA iPac AS NUMBER
DATA cComputer AS CHARACTER INIT "" // Net computer name (not used yet)
DATA lClientConnected AS LOGICAL


METHOD New() CONSTRUCTOR
METHOD WRData(ctext)
METHOD END()

ENDCLASS



METHOD NEW() CLASS LETR
::cLocalDir := ".\"
::aUsers := {}
::cGetVar := Space(130)
::cTGetBuff := ""
::lClientConnected:= .f.
return self




METHOD WRData(ctext) CLASS LETR // write on screen
::oMemo:Append(ctext)
::oMemo:Append(CRLF)
::oGet:SetFocus()
return self





METHOD END CLASS LETR
// close
MemVar oChatClient, oChatServer

If ::lClientConnected
oChatClient:End()
Endif


return self


****************************************************************
//END OF CLASS Definition
****************************************************************




Chat.rc


/****************************************************************************


chat.rc

produced by Borland Resource Workshop


*****************************************************************************/


LRED ICON LOADONCALL MOVEABLE DISCARDABLE
{
'00 00 01 00 01 00 20 20 10 00 00 00 00 00 E8 02'
'00 00 16 00 00 00 28 00 00 00 20 00 00 00 40 00'
'00 00 01 00 04 00 00 00 00 00 00 02 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00'
'00 00 80 00 80 00 80 80 00 00 C0 C0 C0 00 80 80'
'80 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00'
'00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00'
'00 99 99 90 80 00 00 00 99 99 99 00 00 00 00 00'
'00 09 99 99 08 00 00 09 99 99 90 00 00 00 00 00'
'00 00 99 99 90 80 00 99 99 99 00 00 00 00 00 00'
'00 00 09 99 99 08 09 99 99 90 00 00 00 00 00 00'
'00 00 00 99 99 90 99 99 99 00 00 00 00 00 00 00'
'00 00 00 09 99 09 99 99 90 00 00 00 00 00 00 00'
'00 00 00 00 90 99 99 99 00 00 00 00 00 00 00 00'
'00 00 00 00 09 99 99 90 80 00 00 00 00 00 00 00'
'00 00 00 00 99 99 99 09 08 00 00 00 00 00 00 00'
'00 00 00 09 99 99 90 99 90 80 00 00 00 00 00 00'
'00 00 00 99 99 99 09 99 99 08 00 00 00 00 00 00'
'00 00 09 99 99 90 09 99 99 90 80 00 00 00 00 00'
'00 00 99 99 99 00 00 99 99 99 08 00 00 00 00 00'
'00 09 99 99 90 00 00 09 99 99 90 80 00 00 00 00'
'00 99 99 99 00 00 00 00 99 99 99 08 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF'
'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF'
'FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0F'
'F0 0F F8 07 E0 1F FC 03 C0 3F FE 01 80 7F FF 00'
'00 FF FF 80 01 FF FF C0 03 FF FF E0 07 FF FF F0'
'07 FF FF E0 03 FF FF C0 01 FF FF 80 00 FF FF 00'
'00 7F FE 01 80 3F FC 03 C0 1F F8 07 E0 0F F0 0F'
'F0 0F FF FF FF FF FF FF FF FF FF FF FF FF FF FF'
'FF FF FF FF FF FF FF FF FF FF FF FF FF FF'
}


3P BITMAP LOADONCALL MOVEABLE
{
'42 4D 36 08 00 00 00 00 00 00 36 04 00 00 28 00'
'00 00 20 00 00 00 20 00 00 00 01 00 08 00 00 00'
'00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 01'
'00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80'
'00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
'00 00 C0 C0 C0 00 C0 DC C0 00 F0 CA A6 00 D4 F0'
'FF 00 B1 E2 FF 00 8E D4 FF 00 6B C6 FF 00 48 B8'
'FF 00 25 AA FF 00 00 AA FF 00 00 92 DC 00 00 7A'
'B9 00 00 62 96 00 00 4A 73 00 00 32 50 00 D4 E3'
'FF 00 B1 C7 FF 00 8E AB FF 00 6B 8F FF 00 48 73'
'FF 00 25 57 FF 00 00 55 FF 00 00 49 DC 00 00 3D'
'B9 00 00 31 96 00 00 25 73 00 00 19 50 00 D4 D4'
'FF 00 B1 B1 FF 00 8E 8E FF 00 6B 6B FF 00 48 48'
'FF 00 25 25 FF 00 00 00 FE 00 00 00 DC 00 00 00'
'B9 00 00 00 96 00 00 00 73 00 00 00 50 00 E3 D4'
'FF 00 C7 B1 FF 00 AB 8E FF 00 8F 6B FF 00 73 48'
'FF 00 57 25 FF 00 55 00 FF 00 49 00 DC 00 3D 00'
'B9 00 31 00 96 00 25 00 73 00 19 00 50 00 F0 D4'
'FF 00 E2 B1 FF 00 D4 8E FF 00 C6 6B FF 00 B8 48'
'FF 00 AA 25 FF 00 AA 00 FF 00 92 00 DC 00 7A 00'
'B9 00 62 00 96 00 4A 00 73 00 32 00 50 00 FF D4'
'FF 00 FF B1 FF 00 FF 8E FF 00 FF 6B FF 00 FF 48'
'FF 00 FF 25 FF 00 FE 00 FE 00 DC 00 DC 00 B9 00'
'B9 00 96 00 96 00 73 00 73 00 50 00 50 00 FF D4'
'F0 00 FF B1 E2 00 FF 8E D4 00 FF 6B C6 00 FF 48'
'B8 00 FF 25 AA 00 FF 00 AA 00 DC 00 92 00 B9 00'
'7A 00 96 00 62 00 73 00 4A 00 50 00 32 00 FF D4'
'E3 00 FF B1 C7 00 FF 8E AB 00 FF 6B 8F 00 FF 48'
'73 00 FF 25 57 00 FF 00 55 00 DC 00 49 00 B9 00'
'3D 00 96 00 31 00 73 00 25 00 50 00 19 00 FF D4'
'D4 00 FF B1 B1 00 FF 8E 8E 00 FF 6B 6B 00 FF 48'
'48 00 FF 25 25 00 FE 00 00 00 DC 00 00 00 B9 00'
'00 00 96 00 00 00 73 00 00 00 50 00 00 00 FF E3'
'D4 00 FF C7 B1 00 FF AB 8E 00 FF 8F 6B 00 FF 73'
'48 00 FF 57 25 00 FF 55 00 00 DC 49 00 00 B9 3D'
'00 00 96 31 00 00 73 25 00 00 50 19 00 00 FF F0'
'D4 00 FF E2 B1 00 FF D4 8E 00 FF C6 6B 00 FF B8'
'48 00 FF AA 25 00 FF AA 00 00 DC 92 00 00 B9 7A'
'00 00 96 62 00 00 73 4A 00 00 50 32 00 00 FF FF'
'D4 00 FF FF B1 00 FF FF 8E 00 FF FF 6B 00 FF FF'
'48 00 FF FF 25 00 FE FE 00 00 DC DC 00 00 B9 B9'
'00 00 96 96 00 00 73 73 00 00 50 50 00 00 F0 FF'
'D4 00 E2 FF B1 00 D4 FF 8E 00 C6 FF 6B 00 B8 FF'
'48 00 AA FF 25 00 AA FF 00 00 92 DC 00 00 7A B9'
'00 00 62 96 00 00 4A 73 00 00 32 50 00 00 E3 FF'
'D4 00 C7 FF B1 00 AB FF 8E 00 8F FF 6B 00 73 FF'
'48 00 57 FF 25 00 55 FF 00 00 49 DC 00 00 3D B9'
'00 00 31 96 00 00 25 73 00 00 19 50 00 00 D4 FF'
'D4 00 B1 FF B1 00 8E FF 8E 00 6B FF 6B 00 48 FF'
'48 00 25 FF 25 00 00 FE 00 00 00 DC 00 00 00 B9'
'00 00 00 96 00 00 00 73 00 00 00 50 00 00 D4 FF'
'E3 00 B1 FF C7 00 8E FF AB 00 6B FF 8F 00 48 FF'
'73 00 25 FF 57 00 00 FF 55 00 00 DC 49 00 00 B9'
'3D 00 00 96 31 00 00 73 25 00 00 50 19 00 D4 FF'
'F0 00 B1 FF E2 00 8E FF D4 00 6B FF C6 00 48 FF'
'B8 00 25 FF AA 00 00 FF AA 00 00 DC 92 00 00 B9'
'7A 00 00 96 62 00 00 73 4A 00 00 50 32 00 D4 FF'
'FF 00 B1 FF FF 00 8E FF FF 00 6B FF FF 00 48 FF'
'FF 00 25 FF FF 00 00 FE FE 00 00 DC DC 00 00 B9'
'B9 00 00 96 96 00 00 73 73 00 00 50 50 00 F2 F2'
'F2 00 E6 E6 E6 00 DA DA DA 00 CE CE CE 00 C2 C2'
'C2 00 B6 B6 B6 00 AA AA AA 00 9E 9E 9E 00 92 92'
'92 00 86 86 86 00 7A 7A 7A 00 6E 6E 6E 00 62 62'
'62 00 56 56 56 00 4A 4A 4A 00 3E 3E 3E 00 32 32'
'32 00 26 26 26 00 1A 1A 1A 00 0E 0E 0E 00 F0 FB'
'FF 00 A4 A0 A0 00 80 80 80 00 00 00 FF 00 00 FF'
'00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
'00 00 FF FF FF 00 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 00 00 00 00 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 00 00 6B 6B 6D 6D 00 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 00 00 6B 73 6B 6B 6D 6D 6D 00 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00 00 00'
'00 E5 00 6B 6B 73 6B 6B 6D 6D 6D 00 E5 00 00 00'
'00 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00 00 0D 0D 11'
'11 00 00 6B 6B 73 6B 6B 6D 6D 6D 00 00 24 24 27'
'27 00 E5 E5 E5 E5 E5 E5 E5 00 00 0D 13 0D 0D 11'
'11 11 00 6B 6B 73 6B 6B 6D 6D 6D 00 2B 24 24 27'
'27 27 00 E5 E5 E5 E5 E5 E5 00 0D 0D 13 0D 0D 11'
'11 11 00 6B 6B 73 6B 6B 6D 6D 6D 00 2B 24 24 27'
'27 27 00 E5 E5 E5 E5 E5 E5 00 0D 0D 13 0D 0D 11'
'11 11 00 6B 6B 73 6B 6B 6D 6D 6D 00 2B 24 24 27'
'27 27 00 E5 E5 E5 E5 E5 E5 00 0D 0D 13 0D 0D 11'
'11 11 00 6B 6B 73 6B 6B 6D 6D 6D 00 2B 24 24 27'
'27 27 00 E5 E5 E5 E5 E5 E5 00 0D 0D 13 0D 0D 11'
'11 11 00 6B 6B 73 6B 6B 73 73 6D 00 2B 24 24 27'
'27 27 00 E5 E5 E5 E5 E5 E5 00 0D 0D 13 0D 0D 11'
'11 11 00 6B 6B 73 6B 6B 6B 73 73 00 2B 24 24 27'
'27 27 00 E5 E5 E5 E5 E5 E5 00 0D 0D 13 0D 0D 11'
'11 11 00 6B 6B 6B 6B 6B 6B 6D 73 00 2B 24 24 27'
'27 27 00 E5 E5 E5 E5 E5 E5 00 0D 0D 13 0D 0D 13'
'13 11 00 6B 6B 6B 6B 6B 6B 6D 6D 73 00 24 24 2B'
'2B 27 00 E5 E5 E5 E5 E5 E5 00 0D 0D 13 0D 0D 0D'
'13 00 6B 6B 6B 6B 6B 6B 6B 6D 6D 6D 00 24 24 24'
'2B 2B 00 E5 E5 E5 E5 E5 E5 00 0D 0D 0D 0D 0D 0D'
'11 00 6B 6B 6B 6B 6B 6B 6B 6D 6D 6D 00 24 24 24'
'27 2B 00 E5 E5 E5 E5 E5 E5 00 0D 0D 0D 0D 0D 0D'
'11 00 6B 6B 6B 6B 6B 6B 6B 6D 6D 6D 00 24 24 24'
'27 27 2B 00 E5 E5 E5 E5 00 0D 0D 0D 0D 0D 0D 0D'
'11 00 6B 6B 6B 6B 6B 6B 6B 6D 6D 6D 00 24 24 24'
'27 27 27 00 E5 E5 E5 E5 00 0D 0D 0D 0D 0D 0D 0D'
'11 00 6B 6B 6B 6B 6B 6B 6B 6D 6D 6D 00 24 24 24'
'27 27 27 00 E5 E5 E5 E5 00 0D 0D 0D 0D 0D 0D 0D'
'11 00 6B 6B 6B 6B 6B FF FF 6B 6D 6D 00 24 24 24'
'27 27 27 00 E5 E5 E5 E5 00 0D 0D 0D 0D 0D 0D 0D'
'11 00 6B 6B 6B FF FF 6B 6B 6B 6B 6D 00 24 24 24'
'27 27 27 00 E5 E5 E5 E5 00 0D 0D 0D 0D 0D 0D 0D'
'11 00 6B FF FF 6D 6D 6D 6D 6D 6D 6B 00 24 24 24'
'27 27 27 00 E5 E5 E5 E5 00 0D 0D 0D 0D 0D FF FF'
'0D 00 FF 6B 6D 00 00 00 00 6D 00 00 24 24 FF FF'
'24 27 27 00 E5 E5 E5 E5 00 0D 0D 0D FF FF 0D 0D'
'0D 0D 00 6B 00 EF EF F0 EF 00 24 24 FF FF 24 24'
'24 24 27 00 E5 E5 E5 E5 00 0D FF FF 11 11 11 11'
'11 11 0D F4 F0 E8 E8 E8 EF F0 00 FF 27 27 27 27'
'27 27 24 00 E5 E5 E5 E5 00 FF 0D 11 00 00 00 00'
'11 00 00 F3 E8 E3 E3 07 EA F0 00 27 00 00 00 00'
'27 00 00 E5 E5 E5 E5 E5 E5 00 0D 00 EF EF F0 EF'
'00 E5 E5 F4 E3 FF FF E3 E8 EF 00 00 EF EF F0 EF'
'00 E5 E5 E5 E5 E5 E5 E5 E5 E5 F5 F0 F7 F7 F7 EF'
'F0 00 E5 F3 E3 FF FF E3 E8 F0 00 F0 E8 E8 E8 EF'
'F0 00 E5 E5 E5 E5 E5 E5 E5 E5 F3 F7 E4 E4 07 E9'
'F0 00 E5 E5 F3 E3 07 EA F0 F4 F3 E8 E3 E3 07 EA'
'F0 00 E5 E5 E5 E5 E5 E5 E5 E5 F5 E4 FF FF E4 F7'
'EF 00 E5 E5 E5 F4 F4 00 F0 E5 F4 E3 FF FF E3 E8'
'EF 00 E5 E5 E5 E5 E5 E5 E5 E5 F3 E4 FF FF E4 F7'
'F0 00 E5 E5 E5 E5 E5 E5 E5 E5 F3 E3 FF FF E3 E8'
'F0 00 E5 E5 E5 E5 E5 E5 E5 E5 E5 F3 E4 07 E9 F0'
'F5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 F3 E3 07 EA F0'
'F4 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 F5 F5 00 F0'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 F4 F4 00 F0'
'E5 E5 E5 E5 E5 E5'
}


BACKUP BITMAP LOADONCALL MOVEABLE
{
'42 4D 46 07 00 00 00 00 00 00 36 04 00 00 28 00'
'00 00 1C 00 00 00 1C 00 00 00 01 00 08 00 00 00'
'00 00 10 03 00 00 13 0B 00 00 13 0B 00 00 00 01'
'00 00 00 01 00 00 00 00 00 00 01 01 01 00 ED FA'
'FE 00 EB FA FE 00 E9 FA FE 00 E7 FA FE 00 E5 FA'
'FE 00 E3 FA FE 00 E6 FA FE 00 E4 FA FE 00 E2 FA'
'FE 00 E0 FA FE 00 DE FA FE 00 DC FA FE 00 DA FA'
'FE 00 D8 FA FE 00 D6 FA FE 00 D4 FA FE 00 D1 F9'
'FD 00 CF F9 FD 00 CD F9 FD 00 CB F9 FD 00 C9 F9'
'FD 00 C7 F9 FD 00 C5 F9 FD 00 D2 FA FE 00 D0 FA'
'FE 00 CE FA FE 00 C3 F9 FD 00 C1 F9 FD 00 BF F9'
'FD 00 00 7F FF 00 9B EF F3 00 99 ED F1 00 98 EA'
'EE 00 96 E8 EC 00 95 E6 EA 00 93 E3 E7 00 92 E1'
'E5 00 90 DF E2 00 8F DD E0 00 8E DA DE 00 8C D8'
'DB 00 8B D6 D9 00 8A D4 D7 00 00 A9 FF 00 94 E4'
'E8 00 92 E2 E6 00 91 DF E3 00 8F DD E1 00 8E DB'
'DF 00 8C D8 DC 00 8B D6 DA 00 89 D4 D7 00 88 D2'
'D5 00 87 CF D3 00 85 CD D0 00 84 CB CE 00 83 C9'
'CC 00 00 D4 FF 00 00 54 FF 00 00 2A FF 00 00 00'
'FF 00 8E DC DF 00 8D DA DD 00 8C D7 DB 00 8A D5'
'D8 00 89 D3 D6 00 88 D1 D4 00 86 CE D1 00 85 CC'
'CF 00 82 C7 CA 00 80 C5 C8 00 7F C2 C5 00 7D C0'
'C3 00 00 FF FF 00 87 D0 D3 00 86 CD D0 00 80 C4'
'C7 00 7D BF C2 00 7C BD C0 00 7A BB BE 00 79 B8'
'BB 00 77 B6 B9 00 BD F9 FD 00 81 C7 CA 00 7C BE'
'C1 00 7B BC BF 00 79 B9 BC 00 78 B7 BA 00 76 B4'
'B7 00 75 B2 B5 00 73 B0 B3 00 72 AD B0 00 7A BC'
'BF 00 79 BA BD 00 76 B5 B8 00 75 B3 B6 00 74 B1'
'B4 00 72 AE B1 00 71 AC AF 00 6F AA AC 00 6E A8'
'AA 00 6D A5 A8 00 6B A3 A5 00 74 B2 B4 00 73 B0'
'B2 00 70 AB AD 00 6F A9 AB 00 6E A7 A9 00 6C A4'
'A6 00 6B A2 A4 00 69 A0 A2 00 68 9E A0 00 67 9B'
'9D 00 80 80 80 00 E8 FA FE 00 E1 FA FE 00 DF FA'
'FE 00 DB FA FE 00 D9 FA FE 00 CC F9 FD 00 CA F9'
'FD 00 D7 FA FE 00 D5 FA FE 00 C6 F9 FD 00 C4 F9'
'FD 00 D3 FA FE 00 D1 FA FE 00 FF FF FF 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 73'
'73 73 73 73 73 73 73 73 73 73 73 73 73 73 00 00'
'00 00 00 00 00 00 00 00 00 00 73 73 73 73 73 73'
'73 73 73 73 73 73 73 73 73 73 00 00 00 00 00 00'
'00 00 00 00 00 01 01 01 01 01 01 01 01 01 01 01'
'01 01 01 01 73 73 00 00 00 00 00 00 00 00 00 00'
'00 01 58 53 69 6A 5D 6B 6C 6D 6D 6F 70 71 72 01'
'73 00 00 00 00 00 00 00 00 00 00 00 00 01 01 4A'
'5E 5F 59 60 61 62 62 64 65 66 67 68 01 00 00 00'
'00 00 00 00 00 00 00 00 00 01 54 01 55 48 49 4A'
'56 57 57 59 5A 5B 5C 5D 01 00 00 00 00 00 00 00'
'00 00 00 00 00 01 16 7D 3F 40 41 42 43 44 44 46'
'3A 47 48 49 4A 01 00 00 00 00 00 00 00 00 00 00'
'00 01 13 79 24 2E 2F 30 31 32 32 34 35 36 37 38'
'39 3A 00 00 00 00 00 00 00 00 00 00 00 01 10 7F'
'01 20 21 22 23 24 24 26 27 28 29 2A 2B 2C 00 00'
'00 00 00 00 00 00 00 00 00 01 10 7F 01 01 01 01'
'01 01 01 01 01 01 01 01 01 01 00 00 00 00 00 00'
'00 00 00 00 00 01 0D 78 7C 19 1A 1B 1B 15 16 7E'
'1D 1E 01 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 01 07 0B 77 78 10 11 11 12 13 7A 17 01 1F 01'
'00 00 00 00 00 00 00 00 00 00 00 00 00 01 01 08'
'75 76 0D 0E 01 01 01 01 01 2D 1F 3C 01 00 00 00'
'73 73 73 73 73 73 73 73 73 73 73 01 01 01 01 01'
'00 00 00 4B 3B 2D 1F 3C 3D 3E 00 73 73 73 73 73'
'73 73 73 73 73 73 73 73 73 73 00 00 00 00 00 01'
'01 2D 1F 3C 01 01 01 01 01 01 01 01 01 01 01 01'
'01 01 01 01 73 00 00 00 00 00 00 00 01 2D 1F 3C'
'01 00 01 58 53 5A 69 6A 5D 6C 6D 6E 6F 70 71 72'
'00 00 00 00 00 01 01 00 01 2D 1F 3C 01 00 01 01'
'4A 56 5E 5F 59 61 62 63 64 65 66 67 01 00 00 00'
'01 1F 01 00 01 2D 1F 3C 01 00 01 54 01 3A 55 48'
'49 56 57 58 59 5A 5B 5C 01 00 00 01 2D 1F 01 01'
'01 2D 1F 3C 01 00 01 1C 01 2C 36 4C 4D 3A 47 4E'
'49 4F 50 51 53 01 01 3B 2D 1F 3C 3E 01 2D 1F 3C'
'01 00 01 13 14 01 24 2E 2F 31 32 33 34 35 36 37'
'39 3A 01 3B 2D 1F 3C 3E 01 2D 01 00 00 00 01 10'
'11 19 01 20 21 23 24 25 26 27 28 29 2B 2C 01 01'
'2D 1F 01 01 01 01 00 00 00 00 01 10 11 19 01 01'
'01 01 01 01 01 01 01 01 01 01 01 00 01 1F 01 00'
'00 00 00 00 00 00 01 0D 0E 0F 10 11 19 1B 15 16'
'17 18 1C 1D 01 00 00 00 00 01 01 00 00 00 00 00'
'00 00 01 07 0B 0C 0D 0E 0F 11 12 13 14 15 16 17'
'01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 01'
'08 09 0A 0B 0C 01 01 01 01 01 01 01 01 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 01 02 03 04 05'
'06 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00'
}


BOXIN1 BITMAP LOADONCALL MOVEABLE
{
'42 4D 46 07 00 00 00 00 00 00 36 04 00 00 28 00'
'00 00 1C 00 00 00 1C 00 00 00 01 00 08 00 00 00'
'00 00 10 03 00 00 13 0B 00 00 13 0B 00 00 00 01'
'00 00 00 01 00 00 00 00 00 00 00 00 FF 00 00 07'
'FF 00 00 03 FF 00 00 0E FF 00 00 15 FF 00 00 0A'
'FF 00 00 1C FF 00 7A B9 00 00 62 96 00 00 00 24'
'FF 00 00 12 FF 00 75 B2 00 00 00 2B FF 00 6B A4'
'00 00 70 AB 00 00 00 32 FF 00 00 19 FF 00 64 99'
'00 00 53 81 00 00 5C 8F 00 00 66 9D 00 00 00 4F'
'FF 00 00 39 FF 00 4A 73 00 00 56 84 00 00 00 A3'
'FF 00 00 90 FF 00 00 7E FF 00 00 6C FF 00 00 5A'
'FF 00 00 48 FF 00 00 A6 FF 00 00 98 FF 00 00 89'
'FF 00 00 7B FF 00 00 6D FF 00 51 7D 00 00 00 B2'
'FF 00 00 A7 FF 00 00 9C FF 00 00 91 FF 00 4E 7A'
'00 00 00 C4 FF 00 00 BD FF 00 00 B6 FF 00 4C 76'
'00 00 00 DD FF 00 00 DA FF 00 00 FF FF 00 92 DC'
'00 00 8F D7 00 00 8E D6 00 00 8E D5 00 00 8C D3'
'00 00 8B D2 00 00 8B D1 00 00 8A D0 00 00 89 CF'
'00 00 89 CE 00 00 88 CD 00 00 87 CC 00 00 86 CB'
'00 00 86 CA 00 00 85 C9 00 00 84 C8 00 00 84 C7'
'00 00 83 C6 00 00 82 C5 00 00 82 C4 00 00 81 C3'
'00 00 80 C2 00 00 80 C1 00 00 85 C8 00 00 7F C0'
'00 00 32 50 00 00 7E BF 00 00 83 C5 00 00 7E BE'
'00 00 7C BC 00 00 7C BB 00 00 7B BA 00 00 7D BD'
'00 00 7F BF 00 00 7B BB 00 00 7A BA 00 00 FF FF'
'FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 56 56 56 56 56 56 56 56 56 56'
'56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56'
'56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56'
'56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 56 56 00 08 08 08'
'08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08'
'08 08 08 08 08 00 56 56 00 52 4F 4F 4F 54 54 51'
'4B 32 32 32 32 32 32 32 32 51 51 54 50 4F 4F 4F'
'52 00 56 56 00 48 4A 53 4C 52 52 4F 4B 54 51 55'
'08 08 55 51 32 4F 4F 52 4E 4C 53 4A 48 00 56 56'
'00 4D 45 46 47 4A 4C 4E 4B 4F 50 51 08 08 51 50'
'32 52 4E 4A 48 47 46 45 4D 00 56 56 00 3B 3C 3D'
'3E 40 41 42 43 44 45 46 48 47 46 45 44 43 42 40'
'3F 3E 3D 3C 3B 00 56 56 00 36 37 38 39 3A 00 00'
'00 00 00 00 00 00 00 00 00 00 00 3A 39 39 38 37'
'36 00 56 56 00 33 34 34 34 00 18 18 18 18 18 18'
'18 18 18 18 18 18 18 00 35 34 34 34 33 00 56 56'
'00 32 32 32 32 18 18 18 18 18 18 18 18 18 18 18'
'18 18 18 18 00 32 32 32 32 00 56 56 00 00 00 00'
'00 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18'
'18 00 00 00 00 00 56 56 00 18 18 18 00 18 18 18'
'18 18 18 18 00 18 18 18 18 18 18 18 18 00 18 18'
'18 00 56 56 56 00 2E 18 18 18 18 18 18 18 18 18'
'31 00 18 18 18 18 18 18 00 18 18 2E 00 56 56 56'
'56 56 00 18 18 00 18 18 18 18 00 2B 2D 2C 2B 00'
'18 18 18 00 25 18 18 00 56 56 56 56 56 56 00 18'
'18 00 18 18 18 00 26 27 29 28 27 26 00 18 18 00'
'13 18 18 00 56 56 56 56 56 56 56 00 18 09 00 00'
'00 20 21 22 24 23 22 21 20 00 00 09 19 18 00 56'
'56 56 56 56 56 56 56 00 13 15 00 00 1A 1B 1C 1D'
'1F 1E 1D 1C 1B 1A 00 15 14 13 00 56 56 56 56 56'
'56 56 56 56 00 0E 00 00 00 00 00 16 0A 17 16 00'
'00 00 00 0E 12 00 56 56 56 56 56 56 56 56 56 56'
'00 0F 00 09 09 09 00 10 01 11 10 00 09 09 09 0F'
'0E 00 56 56 56 56 56 56 56 56 56 56 56 0C 00 09'
'09 09 00 10 01 11 10 00 09 09 09 0C 00 56 56 56'
'56 56 56 56 56 56 56 56 56 00 00 00 00 00 00 0A'
'01 0B 0A 00 00 00 00 00 56 56 56 56 56 56 56 56'
'56 56 56 56 56 56 56 56 56 56 00 07 01 04 07 00'
'56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56'
'56 56 56 56 56 56 00 05 01 06 05 00 56 56 56 56'
'56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56'
'56 56 00 04 01 02 04 00 56 56 56 56 56 56 56 56'
'56 56 56 56 56 56 56 56 56 56 56 56 56 56 00 02'
'01 03 02 00 56 56 56 56 56 56 56 56 56 56 56 56'
'56 56 56 56 56 56 56 56 56 56 00 01 01 01 01 00'
'56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56'
'56 56 56 56 56 56 00 00 00 00 00 00 56 56 56 56'
'56 56 56 56 56 56'
}


BOXOUT BITMAP LOADONCALL MOVEABLE
{
'42 4D 46 07 00 00 00 00 00 00 36 04 00 00 28 00'
'00 00 1C 00 00 00 1C 00 00 00 01 00 08 00 00 00'
'00 00 10 03 00 00 13 0B 00 00 13 0B 00 00 00 01'
'00 00 00 01 00 00 00 00 00 00 00 00 FF 00 00 07'
'FF 00 00 03 FF 00 00 0E FF 00 00 15 FF 00 00 0A'
'FF 00 00 1C FF 00 7A B9 00 00 62 96 00 00 00 24'
'FF 00 00 12 FF 00 75 B2 00 00 00 2B FF 00 6B A4'
'00 00 70 AB 00 00 00 32 FF 00 00 19 FF 00 64 99'
'00 00 53 81 00 00 5C 8F 00 00 66 9D 00 00 00 4F'
'FF 00 00 39 FF 00 4A 73 00 00 56 84 00 00 00 A3'
'FF 00 00 90 FF 00 00 7E FF 00 00 6C FF 00 00 5A'
'FF 00 00 48 FF 00 00 A6 FF 00 00 98 FF 00 00 89'
'FF 00 00 7B FF 00 00 6D FF 00 51 7D 00 00 00 B2'
'FF 00 00 A7 FF 00 00 9C FF 00 00 91 FF 00 4E 7A'
'00 00 00 C4 FF 00 00 BD FF 00 00 B6 FF 00 4C 76'
'00 00 00 DD FF 00 00 DA FF 00 00 FF FF 00 92 DC'
'00 00 8F D7 00 00 8E D6 00 00 8E D5 00 00 8C D3'
'00 00 8B D2 00 00 8B D1 00 00 8A D0 00 00 89 CF'
'00 00 89 CE 00 00 88 CD 00 00 87 CC 00 00 86 CB'
'00 00 86 CA 00 00 85 C9 00 00 84 C8 00 00 84 C7'
'00 00 83 C6 00 00 82 C5 00 00 82 C4 00 00 81 C3'
'00 00 80 C2 00 00 80 C1 00 00 85 C8 00 00 7F C0'
'00 00 32 50 00 00 7E BF 00 00 83 C5 00 00 7E BE'
'00 00 7C BC 00 00 7C BB 00 00 7B BA 00 00 7D BD'
'00 00 7F BF 00 00 7B BB 00 00 7A BA 00 00 FF FF'
'FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 56 56 56 56 56 56 56 56 56 56'
'56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56'
'56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56'
'56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 56 56 00 08 08 08'
'08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08'
'08 08 08 08 08 00 56 56 00 52 4F 4F 4F 54 54 51'
'4B 32 32 32 32 32 32 32 32 51 51 54 50 4F 4F 4F'
'52 00 56 56 00 48 4A 53 4C 52 52 4F 4B 54 51 55'
'08 08 55 51 32 4F 4F 52 4E 4C 53 4A 48 00 56 56'
'00 4D 45 46 47 4A 4C 4E 4B 4F 50 51 08 08 51 50'
'32 52 4E 4A 48 47 46 45 4D 00 56 56 00 3B 3C 3D'
'3E 40 41 42 43 44 45 46 48 47 46 45 44 43 42 40'
'3F 3E 3D 3C 3B 00 56 56 00 36 37 38 39 3A 00 00'
'00 00 00 00 00 00 00 00 00 00 00 3A 39 39 38 37'
'36 00 56 56 00 33 34 34 34 00 18 18 18 18 18 18'
'18 18 18 18 18 18 18 00 35 34 34 34 33 00 56 56'
'00 32 32 32 32 18 18 18 18 18 18 18 18 18 18 18'
'18 18 18 18 00 32 32 32 32 00 56 56 00 00 00 00'
'00 18 18 18 18 18 00 00 00 00 00 00 18 18 18 18'
'18 00 00 00 00 00 56 56 00 18 18 18 00 18 18 18'
'18 18 00 01 01 01 01 00 18 18 18 18 18 00 18 18'
'18 00 56 56 56 00 2E 18 18 18 18 18 18 18 00 02'
'01 03 02 00 18 18 18 18 00 18 18 2E 00 56 56 56'
'56 56 00 18 18 00 18 18 18 18 00 05 01 06 05 00'
'18 18 18 00 25 18 18 00 56 56 56 56 56 56 00 18'
'18 00 18 18 18 18 00 07 01 04 07 00 18 18 18 00'
'13 18 18 00 56 56 56 56 56 56 56 00 18 09 00 00'
'00 00 00 0A 01 0B 0A 00 00 00 00 09 19 18 00 56'
'56 56 56 56 56 56 56 00 13 15 00 09 09 09 00 0D'
'01 05 0D 00 09 09 09 15 14 13 00 56 56 56 56 56'
'56 56 56 56 00 0E 00 09 09 09 00 10 01 11 10 00'
'09 09 09 0E 12 00 56 56 56 56 56 56 56 56 56 56'
'00 0F 00 09 09 09 00 10 01 11 10 00 09 09 09 0F'
'0E 00 56 56 56 56 56 56 56 56 56 56 56 0C 00 00'
'00 00 00 16 0A 17 16 00 00 00 00 0C 00 56 56 56'
'56 56 56 56 56 56 56 56 56 00 00 00 00 20 21 22'
'24 23 22 21 20 00 00 00 56 56 56 56 56 56 56 56'
'56 56 56 56 56 56 56 56 56 00 26 27 29 28 27 26'
'00 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56'
'56 56 56 56 56 56 00 2B 2D 2C 2B 00 56 56 56 56'
'56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56'
'56 56 56 00 30 2F 00 56 56 56 56 56 56 56 56 56'
'56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56'
'31 00 56 56 56 56 56 56 56 56 56 56 56 56 56 56'
'56 56 56 56 56 56 56 56 56 56 56 56 00 56 56 56'
'56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56'
'56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56'
'56 56 56 56 56 56'
}


BROW1 BITMAP LOADONCALL MOVEABLE
{
'42 4D 36 02 00 00 00 00 00 00 76 00 00 00 28 00'
'00 00 1C 00 00 00 1C 00 00 00 01 00 04 00 00 00'
'00 00 C0 01 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80'
'00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
'00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
'00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
'00 00 FF FF FF 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 00 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 00 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 00 00 77 77 88 88 88 88 88 88 88 88'
'88 88 88 77 00 00 77 70 00 00 00 00 00 00 00 00'
'00 00 00 77 00 00 77 70 F9 99 99 0E EE EE EE 0A'
'AA AA 30 77 00 00 77 70 F0 00 00 00 00 00 00 00'
'00 00 30 77 00 00 77 70 F9 99 99 0E EE EE EE 0A'
'AA AA 30 77 00 00 77 70 F0 00 00 00 00 00 00 00'
'00 00 30 77 00 00 77 70 F9 99 99 0E EE EE EE 0A'
'AA AA 30 77 00 00 77 70 F9 99 99 0E EE EE EE 0A'
'AA AA 30 77 00 00 77 70 F0 00 00 00 00 00 00 00'
'00 00 30 77 00 00 77 70 F9 99 99 0E EE EE EE 0A'
'AA AA 30 77 00 00 77 70 F9 99 99 0E EE EE EE 0A'
'AA AA 30 77 00 00 77 70 F0 00 00 00 00 00 00 00'
'00 00 30 77 00 00 77 70 F9 99 99 0E EE EE EE 0A'
'AA AA 30 77 00 00 77 70 F9 99 99 0E EE EE EE 0A'
'AA AA 30 77 00 00 77 70 F9 99 99 0E EE EE EE 0A'
'AA AA 30 77 00 00 77 70 F0 00 00 00 00 00 00 00'
'00 00 30 77 00 00 77 70 F9 99 99 0E EE EE EE 0A'
'AA AA 30 77 00 00 77 70 F9 99 99 0E EE EE EE 0A'
'AA AA 30 77 00 00 77 70 FC CC CC CC CC CC CC CC'
'CC CC 30 77 00 00 77 70 FC CC CC CC CC CC CC CC'
'CC CC 30 77 00 00 77 70 FC CC CC CC CC CC CC CC'
'CC CC 30 77 00 00 77 70 FF FF FF FF FF FF FF FF'
'FF FF F0 77 00 00 77 70 00 00 00 00 00 00 00 00'
'00 00 00 77 00 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 00 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 00 00'
}


BROW2 BITMAP LOADONCALL MOVEABLE
{
'42 4D 36 02 00 00 00 00 00 00 76 00 00 00 28 00'
'00 00 1C 00 00 00 1C 00 00 00 01 00 04 00 00 00'
'00 00 C0 01 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 10 00 00 00 00 00 00 00 00 00 80 00 00 80'
'00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
'00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
'00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
'00 00 FF FF FF 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 00 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 00 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 00 00 77 70 00 00 00 00 00 00 00 00'
'00 00 00 77 00 00 77 70 88 88 88 88 88 88 88 88'
'88 88 80 77 00 00 77 70 FF FF FF F0 99 99 90 FF'
'FF FF 80 77 00 00 77 70 FF FF FF F0 99 99 90 FF'
'FF FF 80 77 00 00 77 70 FF FF FF F0 99 99 90 FF'
'FF FF 80 77 00 00 77 70 F0 00 00 00 00 00 00 00'
'00 00 80 77 00 00 77 70 FF FF FF F0 99 99 90 FF'
'FF FF 80 77 00 00 77 70 FF FF FF F0 99 99 90 FF'
'FF FF 80 77 00 00 77 70 F0 00 00 00 00 00 00 00'
'00 00 80 77 00 00 77 70 FF FF FF F0 99 99 90 FF'
'FF FF 80 77 00 00 77 70 FF FF FF F0 99 99 90 FF'
'FF FF 80 77 00 00 77 70 F0 00 00 00 00 00 00 00'
'00 00 80 77 00 00 77 70 FF FF FF F0 99 99 90 FF'
'FF FF 80 77 00 00 77 70 FF FF FF F0 99 99 90 FF'
'FF FF 80 77 00 00 77 70 FF FF FF F0 99 99 90 FF'
'FF FF 80 77 00 00 77 70 F0 00 00 00 00 00 00 00'
'00 00 80 77 00 00 77 70 FF FF FF F0 99 99 90 FF'
'FF FF 80 77 00 00 77 70 FF FF FF F0 99 99 90 FF'
'FF FF 80 77 00 00 77 70 FC CC CC CC CC CC CC CC'
'CC CC 80 77 00 00 77 70 FC CC CC CC CC CC CC CC'
'CC CC 80 77 00 00 77 70 FC CC CC CC CC CC CC CC'
'CC CC 80 77 00 00 77 70 FF FF FF FF FF FF FF FF'
'FF FF 80 77 00 00 77 70 00 00 00 00 00 00 00 00'
'00 00 00 77 00 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 00 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 00 00'
}


BUG BITMAP LOADONCALL MOVEABLE
{
'42 4D F6 00 00 00 00 00 00 00 76 00 00 00 28 00'
'00 00 10 00 00 00 10 00 00 00 01 00 04 00 00 00'
'00 00 80 00 00 00 C4 0E 00 00 C4 0E 00 00 10 00'
'00 00 10 00 00 00 00 00 00 00 00 00 80 00 00 80'
'00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
'00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
'00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
'00 00 FF FF FF 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 77 77 77 70 77 77 77 77 07 77 77 0B'
'07 70 07 70 B0 77 77 0B 07 03 B0 70 B0 77 77 70'
'B0 FB B3 0B 07 77 77 70 00 FB BB 00 07 77 77 0B'
'B0 FB B3 0B B0 77 77 70 00 0B B0 00 07 77 77 77'
'00 FB BB 00 77 77 77 70 B0 0F 30 0B 07 77 77 0B'
'07 70 07 70 B0 77 77 00 77 07 70 77 00 77 77 77'
'77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 77 77'
}


CHECK1 BITMAP LOADONCALL MOVEABLE
{
'42 4D E6 00 00 00 00 00 00 00 76 00 00 00 28 00'
'00 00 0E 00 00 00 0E 00 00 00 01 00 04 00 00 00'
'00 00 70 00 00 00 00 00 00 00 00 00 00 00 10 00'
'00 00 10 00 00 00 00 00 00 00 00 00 80 00 00 80'
'00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
'00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
'00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
'00 00 FF FF FF 00 77 FF FF FF FF FF FF 00 78 07'
'77 77 77 77 7F 00 78 08 88 88 88 88 7F 00 78 08'
'99 88 89 98 7F 00 78 08 99 98 99 98 7F 00 78 08'
'89 99 99 88 7F 00 78 08 88 99 98 88 7F 00 78 08'
'89 99 99 88 7F 00 78 08 99 98 99 98 7F 00 78 08'
'99 88 89 98 7F 00 78 08 88 88 88 88 7F 00 78 00'
'00 00 00 00 7F 00 78 88 88 88 88 88 87 00 77 77'
'77 77 77 77 77 00'
}


CHECK3 BITMAP LOADONCALL MOVEABLE
{
'42 4D E6 00 00 00 00 00 00 00 76 00 00 00 28 00'
'00 00 0E 00 00 00 0E 00 00 00 01 00 04 00 00 00'
'00 00 70 00 00 00 00 00 00 00 00 00 00 00 10 00'
'00 00 10 00 00 00 00 00 00 00 00 00 80 00 00 80'
'00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
'00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
'00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
'00 00 FF FF FF 00 77 FF FF FF FF FF FF 00 78 07'
'77 77 77 77 7F 00 78 08 88 88 88 88 7F 00 78 08'
'AA 88 8A A8 7F 00 78 08 AA A8 AA A8 7F 00 78 08'
'8A AA AA 88 7F 00 78 08 88 AA A8 88 7F 00 78 08'
'8A AA AA 88 7F 00 78 08 AA A8 AA A8 7F 00 78 08'
'AA 88 8A A8 7F 00 78 08 88 88 88 88 7F 00 78 00'
'00 00 00 00 7F 00 78 88 88 88 88 88 87 00 77 77'
'77 77 77 77 77 00'
}


DEL1 BITMAP LOADONCALL MOVEABLE
{
'42 4D 96 01 00 00 00 00 00 00 76 00 00 00 28 00'
'00 00 18 00 00 00 18 00 00 00 01 00 04 00 00 00'
'00 00 20 01 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80'
'00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
'00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
'00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
'00 00 FF FF FF 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77'
'77 88 88 88 88 88 88 88 77 77 77 79 91 88 88 88'
'88 88 19 98 77 77 77 79 99 14 44 44 44 41 99 98'
'77 77 77 77 99 91 BF BF BF 19 99 88 77 77 77 77'
'79 99 1B FB F1 99 94 88 77 77 77 77 74 99 91 BF'
'19 99 B4 88 77 77 77 77 74 F9 99 11 99 9B F4 88'
'77 77 77 77 74 BF 99 99 99 BF B4 88 77 77 77 77'
'74 FB F9 99 9B FB F4 88 77 77 77 77 74 BF 19 99'
'91 BF B4 88 77 77 77 77 74 F1 99 99 99 1B F4 88'
'77 77 77 77 74 19 99 BF 99 91 B4 88 77 77 77 77'
'71 99 9B FB F9 99 14 88 77 77 77 77 19 99 BF BF'
'B4 99 91 77 77 77 77 71 99 9B FB FB F4 F9 99 17'
'77 77 77 79 99 BF BF BF B4 B4 99 97 77 77 77 79'
'94 FB FB FB F4 47 79 97 77 77 77 77 74 44 44 44'
'44 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 77 77'
}


DOWN BITMAP LOADONCALL MOVEABLE
{
'42 4D F6 00 00 00 00 00 00 00 76 00 00 00 28 00'
'00 00 10 00 00 00 10 00 00 00 01 00 04 00 00 00'
'00 00 80 00 00 00 C4 0E 00 00 C4 0E 00 00 00 00'
'00 00 10 00 00 00 00 00 00 00 00 00 80 00 00 80'
'00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
'00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
'00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
'00 00 FF FF FF 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77'
'77 70 77 77 77 77 77 77 77 09 07 77 77 77 77 77'
'70 99 90 77 77 77 77 77 09 99 99 07 77 77 77 70'
'99 99 99 90 77 77 77 00 00 99 90 00 07 77 77 77'
'70 99 90 77 77 77 77 77 70 99 90 77 77 77 77 77'
'70 99 90 77 77 77 77 77 70 00 00 77 77 77 77 77'
'77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77'
'77 77 77 77 77 77'
}


EDIT1 BITMAP LOADONCALL MOVEABLE
{
'42 4D 16 02 00 00 00 00 00 00 76 00 00 00 28 00'
'00 00 1A 00 00 00 1A 00 00 00 01 00 04 00 00 00'
'00 00 A0 01 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 BF 00 00 BF'
'00 00 00 BF BF 00 BF 00 00 00 BF 00 BF 00 BF BF'
'00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
'00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
'00 00 FF FF FF 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 00 00 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 00 00 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 00 00 00 77 77 88 88 88 88 88 88 77 77'
'77 77 77 00 00 00 77 77 88 88 88 88 88 88 88 77'
'77 77 77 00 00 00 77 74 44 44 44 44 44 44 88 77'
'77 77 77 00 00 00 77 74 BF BF BF BF BF B4 88 77'
'77 77 77 00 00 00 77 74 FB FB F0 00 00 F4 88 77'
'77 77 77 00 00 00 77 74 BF BF B0 03 33 04 88 77'
'77 77 77 00 00 00 77 74 FB FB F0 33 B3 30 88 77'
'77 77 77 00 00 00 77 74 BF BF B0 3B BB 33 08 87'
'77 77 77 00 00 00 77 74 FB FB F0 FF BB B3 30 88'
'77 77 77 00 00 00 77 74 BF BF BF 0F FB BB 33 08'
'87 77 77 00 00 00 77 74 FB FB FB F0 FF BB B3 30'
'88 77 77 00 00 00 77 74 BF BF BF BF 0F FB BB 33'
'08 87 77 00 00 00 77 74 FB FB FB FB F0 FF BB B3'
'30 88 77 00 00 00 77 74 BF BF BF B4 44 0F FB BB'
'00 08 77 00 00 00 77 74 FB FB FB F4 FB 40 FF B0'
'33 07 77 00 00 00 77 74 BF BF BF B4 B4 77 0F 03'
'03 07 77 00 00 00 77 74 FB FB FB F4 47 77 70 03'
'30 77 77 00 00 00 77 74 44 44 44 44 77 77 77 00'
'07 77 77 00 00 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 00 00 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 00 00 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 00 00 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 00 00 00 77 77 77 77 77 77 77 77 77 77'
'77 77 77 00 00 00'
}


EMPL BITMAP LOADONCALL MOVEABLE
{
'42 4D 36 08 00 00 00 00 00 00 36 04 00 00 28 00'
'00 00 20 00 00 00 20 00 00 00 01 00 08 00 00 00'
'00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 01'
'00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80'
'00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
'00 00 C0 C0 C0 00 C0 DC C0 00 F0 CA A6 00 D4 F0'
'FF 00 B1 E2 FF 00 8E D4 FF 00 6B C6 FF 00 48 B8'
'FF 00 25 AA FF 00 00 AA FF 00 00 92 DC 00 00 7A'
'B9 00 00 62 96 00 00 4A 73 00 00 32 50 00 D4 E3'
'FF 00 B1 C7 FF 00 8E AB FF 00 6B 8F FF 00 48 73'
'FF 00 25 57 FF 00 00 55 FF 00 00 49 DC 00 00 3D'
'B9 00 00 31 96 00 00 25 73 00 00 19 50 00 D4 D4'
'FF 00 B1 B1 FF 00 8E 8E FF 00 6B 6B FF 00 48 48'
'FF 00 25 25 FF 00 00 00 FE 00 00 00 DC 00 00 00'
'B9 00 00 00 96 00 00 00 73 00 00 00 50 00 E3 D4'
'FF 00 C7 B1 FF 00 AB 8E FF 00 8F 6B FF 00 73 48'
'FF 00 57 25 FF 00 55 00 FF 00 49 00 DC 00 3D 00'
'B9 00 31 00 96 00 25 00 73 00 19 00 50 00 F0 D4'
'FF 00 E2 B1 FF 00 D4 8E FF 00 C6 6B FF 00 B8 48'
'FF 00 AA 25 FF 00 AA 00 FF 00 92 00 DC 00 7A 00'
'B9 00 62 00 96 00 4A 00 73 00 32 00 50 00 FF D4'
'FF 00 FF B1 FF 00 FF 8E FF 00 FF 6B FF 00 FF 48'
'FF 00 FF 25 FF 00 FE 00 FE 00 DC 00 DC 00 B9 00'
'B9 00 96 00 96 00 73 00 73 00 50 00 50 00 FF D4'
'F0 00 FF B1 E2 00 FF 8E D4 00 FF 6B C6 00 FF 48'
'B8 00 FF 25 AA 00 FF 00 AA 00 DC 00 92 00 B9 00'
'7A 00 96 00 62 00 73 00 4A 00 50 00 32 00 FF D4'
'E3 00 FF B1 C7 00 FF 8E AB 00 FF 6B 8F 00 FF 48'
'73 00 FF 25 57 00 FF 00 55 00 DC 00 49 00 B9 00'
'3D 00 96 00 31 00 73 00 25 00 50 00 19 00 FF D4'
'D4 00 FF B1 B1 00 FF 8E 8E 00 FF 6B 6B 00 FF 48'
'48 00 FF 25 25 00 FE 00 00 00 DC 00 00 00 B9 00'
'00 00 96 00 00 00 73 00 00 00 50 00 00 00 FF E3'
'D4 00 FF C7 B1 00 FF AB 8E 00 FF 8F 6B 00 FF 73'
'48 00 FF 57 25 00 FF 55 00 00 DC 49 00 00 B9 3D'
'00 00 96 31 00 00 73 25 00 00 50 19 00 00 FF F0'
'D4 00 FF E2 B1 00 FF D4 8E 00 FF C6 6B 00 FF B8'
'48 00 FF AA 25 00 FF AA 00 00 DC 92 00 00 B9 7A'
'00 00 96 62 00 00 73 4A 00 00 50 32 00 00 FF FF'
'D4 00 FF FF B1 00 FF FF 8E 00 FF FF 6B 00 FF FF'
'48 00 FF FF 25 00 FE FE 00 00 DC DC 00 00 B9 B9'
'00 00 96 96 00 00 73 73 00 00 50 50 00 00 F0 FF'
'D4 00 E2 FF B1 00 D4 FF 8E 00 C6 FF 6B 00 B8 FF'
'48 00 AA FF 25 00 AA FF 00 00 92 DC 00 00 7A B9'
'00 00 62 96 00 00 4A 73 00 00 32 50 00 00 E3 FF'
'D4 00 C7 FF B1 00 AB FF 8E 00 8F FF 6B 00 73 FF'
'48 00 57 FF 25 00 55 FF 00 00 49 DC 00 00 3D B9'
'00 00 31 96 00 00 25 73 00 00 19 50 00 00 D4 FF'
'D4 00 B1 FF B1 00 8E FF 8E 00 6B FF 6B 00 48 FF'
'48 00 25 FF 25 00 00 FE 00 00 00 DC 00 00 00 B9'
'00 00 00 96 00 00 00 73 00 00 00 50 00 00 D4 FF'
'E3 00 B1 FF C7 00 8E FF AB 00 6B FF 8F 00 48 FF'
'73 00 25 FF 57 00 00 FF 55 00 00 DC 49 00 00 B9'
'3D 00 00 96 31 00 00 73 25 00 00 50 19 00 D4 FF'
'F0 00 B1 FF E2 00 8E FF D4 00 6B FF C6 00 48 FF'
'B8 00 25 FF AA 00 00 FF AA 00 00 DC 92 00 00 B9'
'7A 00 00 96 62 00 00 73 4A 00 00 50 32 00 D4 FF'
'FF 00 B1 FF FF 00 8E FF FF 00 6B FF FF 00 48 FF'
'FF 00 25 FF FF 00 00 FE FE 00 00 DC DC 00 00 B9'
'B9 00 00 96 96 00 00 73 73 00 00 50 50 00 F2 F2'
'F2 00 E6 E6 E6 00 DA DA DA 00 CE CE CE 00 C2 C2'
'C2 00 B6 B6 B6 00 AA AA AA 00 9E 9E 9E 00 92 92'
'92 00 86 86 86 00 7A 7A 7A 00 6E 6E 6E 00 62 62'
'62 00 56 56 56 00 4A 4A 4A 00 3E 3E 3E 00 32 32'
'32 00 26 26 26 00 1A 1A 1A 00 0E 0E 0E 00 F0 FB'
'FF 00 A4 A0 A0 00 80 80 80 00 00 00 FF 00 00 FF'
'00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
'00 00 FF FF FF 00 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 00 00 00 00 07 07 07 07 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 00 00 6B 6B 6D 6D 00 07 07 07 07 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00'
'00 6B 73 6B 6B 6D 6D 6D 00 07 07 07 07 07 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00'
'6B 6B 73 6B 6B 6D 6D 6D 00 07 07 07 07 07 07 07'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00'
'6B 6B 73 6B 6B 6D 6D 6D 00 07 07 07 07 07 07 07'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00'
'6B 6B 73 6B 6B 6D 6D 6D 00 07 07 07 07 07 07 07'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00'
'6B 6B 73 6B 6B 6D 6D 6D 00 07 07 07 07 07 07 07'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00'
'6B 6B 73 6B 6B 6D 6D 6D 00 07 07 07 07 07 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00'
'6B 6B 73 6B 6B 6D 6D 6D 00 07 07 07 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00'
'6B 6B 73 6B 6B 73 73 6D 00 07 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00'
'6B 6B 73 6B 6B 6B 73 73 00 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00'
'6B 6B 6B 6B 6B 6B 6D 73 00 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00'
'6B 6B 6B 6B 6B 6B 6D 6D 73 00 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00 6B'
'6B 6B 6B 6B 6B 6B 6D 6D 6D 00 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00 6B'
'6B 6B 6B 6B 6B 6B 6D 6D 6D 00 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00 6B'
'6B 6B 6B 6B 6B 6B 6D 6D 6D 00 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00 6B'
'6B 6B 6B 6B 6B 6B 6D 6D 6D 00 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00 6B'
'6B 6B 6B 6B 6B 6B 6D 6D 6D 00 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00 6B'
'6B 6B 6B 6B FF FF 6B 6D 6D 00 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00 6B'
'6B 6B FF FF 6B 6B 6B 6B 6D 00 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00 6B'
'FF FF 6D 6D 6D 6D 6D 6D 6B 00 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00 FF'
'6B 6D 00 00 00 00 6D 00 00 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00'
'6B 00 EF EF F0 EF 00 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'F4 F0 E8 E8 E8 EF F0 00 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'F3 E8 E3 E3 07 EA F0 00 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'F4 E3 FF FF E3 E8 EF 00 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'F3 E3 FF FF E3 E8 F0 00 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 F3 E3 07 EA F0 F4 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 F4 F4 00 F0 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5'
'E5 E5 E5 E5 E5 E5'
}


EXIT BITMAP LOADONCALL MOVEABLE
{
'42 4D 72 01 00 00 00 00 00 00 76 00 00 00 28 00'
'00 00 17 00 00 00 15 00 00 00 01 00 04 00 00 00'
'00 00 FC 00 00 00 00 00 00 00 00 00 00 00 10 00'
'00 00 10 00 00 00 00 00 00 00 00 00 80 00 00 80'
'00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
'00 00 80 80 80 00 C0 C0 C0 00 00 00 FF 00 00 FF'
'00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
'00 00 FF FF FF 00 88 88 88 88 88 88 88 88 88 88'
'88 80 88 88 88 88 88 88 88 88 88 88 88 80 88 88'
'88 88 88 88 88 88 88 88 88 80 88 88 88 88 88 88'
'88 88 88 88 88 80 88 88 88 88 88 88 88 88 88 88'
'88 80 88 88 88 88 88 88 88 80 F8 88 88 80 88 88'
'80 F8 88 88 88 88 88 88 88 80 88 88 00 0F 88 88'
'88 0F 88 88 88 80 88 88 00 0F 88 88 80 F8 88 88'
'88 80 88 88 80 00 F8 88 00 F8 88 88 88 80 88 88'
'88 00 0F 80 0F 88 88 88 88 80 88 88 88 80 00 00'
'F8 88 88 88 88 80 88 88 88 88 00 0F 88 88 88 88'
'88 80 88 88 88 80 00 00 F8 88 88 88 88 80 88 88'
'88 00 0F 80 F8 88 88 88 88 80 88 88 00 00 F8 88'
'00 F8 88 88 88 80 88 80 00 0F 88 88 80 0F 88 88'
'88 80 88 80 0F 88 88 88 88 00 F8 88 88 80 88 88'
'88 88 88 88 88 88 88 88 88 80 88 88 88 88 88 88'
'88 88 88 88 88 80 88 88 88 88 88 88 88 88 88 88'
'88 80'
}


FALSE BITMAP LOADONCALL MOVEABLE
{
'42 4D F6 00 00 00 00 00 00 00 76 00 00 00 28 00'
'00 00 10 00 00 00 1
Last edited by norberto on Wed Sep 24, 2008 8:08 pm, edited 1 time in total.
norberto
 
Posts: 566
Joined: Thu Aug 30, 2007 3:40 pm
Location: BR

Postby norberto » Wed Sep 24, 2008 7:02 pm

author: (not tested to me).

Author Yanni Yannas - Rhodes Greece. Email : plous-rh@otenet.gr
// Description :
// A chat program over TCP/IP written in Fivewin.
// The original program was written in FWH and Harbour. But i still have problems
// with the displaying of the memo. Until solved, i 'dropped back' to Fivewin.
// I wrote this, as a excercise, trying to understand sockets.
// Contains a server section and a client section. Any station can act as server
// for the chat session.
// Tested over the internal company network with 4 users.
// I apologise for the confusing coding in some places, i hope to correct that when
// i will have more knowledge on sockets...
// Please, feel free to correct, add code, and use as you wish.
// Many thanks to everyone of you my friends for your continuous support and help.
//
// To my friend Vangelis, a special 'thank you !', for his very original help on sockets :
// "Immagine water pipes. If you connect the right edges, then , water goes
// where you want to send it !"
norberto
 
Posts: 566
Joined: Thu Aug 30, 2007 3:40 pm
Location: BR

Postby xProgrammer » Thu Sep 25, 2008 2:25 am

Hi Silvio, Norberto

IP messaging from FWH should work fine. My client server xBase database (in FiveLinux) has been operating without a problem for some two weeks now.

Just a suggestion - if you are sending multiple pieces of data in a message rather than using token delimiters (which then have to be excluded from any data that might be sent) consider sending arrays using HB_Serialize() and HB_DesSerialize() at the other end.

For example
Code: Select all  Expand view
#define MSG_USER_NAME 1
#define MSG_COMMAND   2
#define MSG_MESSAGE    3

#define CMD_CHAT          1


//build a message
aMessage := Array( 3 )
aMessage[MSG_USER_NAME] := "Silvio"
aMessage[MSG_COMMAND]   := CMD_CHAT
aMessage[MSG_MESSAGE]    := "Hello World"
SendMessage( HB_Serialize( aMessage ) )


then at the other end something like:

Code: Select all  Expand view
aMessageIn := HB_DeSerilaize( cIncomingText )
DO CASE
   CASE aMessageIn[MSG_COMMAND] := CMD_CHAT


Just a suggestion

Happy coding
xProgrammer
User avatar
xProgrammer
 
Posts: 464
Joined: Tue May 16, 2006 7:47 am
Location: Australia

Postby Silvio » Thu Sep 25, 2008 4:25 pm

I explain you
I work at school
We have 250 computer all connected to the same network

I want only a small messaging from on my computer to communicate with a person using another computer.

Each machine must be connected to the same network.

Also, each computer must use similar protocol (TCP/IP).

Now I found a prg at http://www.leadmind.com/index.html

but it have a price...

It use broadcasting address (255.255.255.255 ) or Multicast

why we cannot create it with fwh ?

Perhaps winsock classes not run ok ?
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Postby Silvio » Thu Sep 25, 2008 4:28 pm

to xProgrammer

If you try the chat program over TCP/IP Yanni Yannas it not run ok
Can you see it please

with this software if it run is possible to have also private chat

I'm trying to re- write the class
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Postby Antonio Linares » Thu Sep 25, 2008 4:31 pm

Silvio,

FWH sockets work really fine, but you always choose the "hard" way :-)

It is much simpler to use an existing chat application (IRC, etc.) instead of building one from zero. Unless you have nothing better to do :-)

As I told you, as you are working on a Lan, you can use a browse and a timer, and you will have it working in ten minutes.

But if you want to build one based on tcp/ip and syncronize lots of users, go ahead and do it :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Silvio » Thu Sep 25, 2008 5:01 pm

i'M TRY TO USE tcp/ip CHAT

i RUN A SERVER CHAT to a ip address 172.15.20.4 port 790

look it please


Image


1)

I run another client ( we call it PIPPO) and I connect it to the same ip of the server
I can see PiPPO on the server window


2)
Then I run another client ( we call it PAOLO) and I connect it to the same ip of the server
I can see PAOLO on the server window



3) Now I want send a message from paolo to pippo

it not run ok

do you want help me please ?
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Postby Antonio Linares » Thu Sep 25, 2008 5:19 pm

Silvio,

Now you have to set a socket connection from Paolo to Pippo, or viceversa, so they can talk directly.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Antonio Linares » Thu Sep 25, 2008 5:22 pm

The server will provide the IPs of Paolo and Pippo, so a new connection can be established.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Next

Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot], Silvio.Falconi and 80 guests