PureBasic und Formula Flowcode Buggy Teil 1
Verfasst: 03.10.2007 23:44
Hallo Leute,
wie schon "angedroht"
habe ich mir den Formula Flowcode Buggy bei Elektor gekauft. Dieser besitzt eine USB Schnittstelle und ist auch per USB programmierbar. Ich habe jetzt das Gerät als I/O Erweiterung für den PC zweckentfremdet. Benötigt wird nur noch eine weitere DLL Datei (mcHID.dll). Der Formula Flowcode Buggy bietet schon viele Erweiterungen an:
2x digitale Eingänge (Taster)
8x Port Erweiterung als Ausgang und Eingang nutzbar (E-Blocks kompatibel)
1x LDR mit AD Wandlung von 10 bit
1x MIC mit AD Wandlung von 10 bit
3 x IR Sensoren
1 x Motorsteuerung mit zwei Motoren
2 x Servosteuerungen
1 x V24 Schnittstelle
1 x IC2 Bus
Je nach Zeit werde ich mich um die eine oder andere Funktion "kümmern". Hier jetzt das erste Projekt
Habt Spaß
Michael
Der folgende HEX Code wird einfach mit dem Flow Code Programmer per USB programmiert:
wie schon "angedroht"

2x digitale Eingänge (Taster)
8x Port Erweiterung als Ausgang und Eingang nutzbar (E-Blocks kompatibel)
1x LDR mit AD Wandlung von 10 bit
1x MIC mit AD Wandlung von 10 bit
3 x IR Sensoren
1 x Motorsteuerung mit zwei Motoren
2 x Servosteuerungen
1 x V24 Schnittstelle
1 x IC2 Bus
Je nach Zeit werde ich mich um die eine oder andere Funktion "kümmern". Hier jetzt das erste Projekt
Habt Spaß

Michael
Code: Alles auswählen
; "MPZ Buggy IO INTERFACE.pb"
;
; PowerBasic Example um ein Formel Flowcode Buggy von www.matrixmultimedia.com als
; I/O Interface anzusteuern. Das Gerät wird auch von Elektor vertrieben
; Der PIC 18F4455 besitzt unter anderem 35x I/O´s und 13x 10bit AD´s
; Dieses Programm wird erweitert und erlaubt derzeit:
; 2x digitale Eingänge (Taster)
; 8x digitalen Ausgängen
; 1x LDR mit AD Wandlung von 10 bit
; 1x MIC mit AD Wandlung von 10 bit
;
;
; PowerBasic Example to use a PIC Formel Flowcode Buggy from www.matrixmultimedia.com as
; I/O interface anzusteuern.
; The PIC 18F4455 has 35x I/O´s and 13x 10bit AD´s
; This Program will updated and has now:
; 2x digital Inputs
; 8x digital Outputs
; 1x LDR input with 10 bit resulution
; 1x MIC input with 10 bit resulution
;
;
; Version 1.00 by MPZ Okt.2007
; for PB 4.10 beta3
;
; benötigt wird die mcHID.dll von der Firma Mecanique. Die mcHID Library ist
; Bestandteil der EasyHID Software:
; You need the mcHID.dll from the company Mecanique. The mcHID Library is included
; in the EasyHID Software:
; http://www.mecanique.co.uk/software/EasyHID.zip
;
; Ein direkter Download der DLL ist über den folgenden Link möglich
; Direct download link
; http://www.docpro.com.br/arquivos/mcHID.zip
;
; Definierte Übergabeparameter
;
; Wert
; 1 2 3 4 5 6 7 8
; a b c d e f g h
; Daten PIC -> PC
; a = 1 Daten PIC -> PC
; b,c AD8(x*256+y) ; MIC - AD Wandlung (10 bit, ADC 8)
; d,e AD9(x*256+y) ; LDR - AD Wandlung (10 bit, ADC 9)
; f Taster 1 (Bit 1 of f) / Taster 2 (Bit 2 of f)
; in Vorbereitung
; g,h I2C Bus (a,b); Empfangen von I2C Bus Daten
; Daten PC -> PIC
; a = 13 PC -> PIC
; b 8 fach Output
; in Vorbereitung
; c Servo 1 out(x) ; Einstellwert des Servos in 0-100%
; d Servo 2 out(x) ; Einstellwert des Servos in 0-100%
; e Motor links (x) ; Geschwindigkeit in -100% bis +100%
; f Motor rechts (x) ; Geschwindigkeit in -100% bis +100%
; g,h I2C Bus (a,b); Senden von I2C Bus Daten
Enumeration
#Window_0
#Text_Status
#Text_DIGI_IN
#Listview_INPUT
#Text_LDR
#Analog_LDR
#Text_MIC
#Analog_MIC
#Text_OUT
#Button_OUT1
#Button_OUT2
#Button_OUT3
#Button_OUT4
#Button_OUT5
#Button_OUT6
#Button_OUT7
#Button_OUT8
EndEnumeration
; Global
;{/ Globale Variablen
Global pVendorID.l, pProductID.l, DeviceHandle.l, ProductName.s
Global USB_HID.l,DIGITAL_OUT.b, Button_1.b, Button_2.b
Global Dim BufferIn.b(8),Dim BufferOut.b(8)
#WM_APP = 32768
#WM_HID_EVENT = #WM_APP + 200
#NOTIFY_PLUGGED = 1
#NOTIFY_UNPLUGGED = 2
#NOTIFY_CHANGED = 3
#NOTIFY_READ = 4
#VendorID = 6017 ; Vendor ID "MPZ USB BUGGY"
#ProductID = 2001 ; ProductID "MPZ USB BUGGY"
ProductName.s = Space(256)
;}
Procedure Open_Window_0()
If OpenWindow(#Window_0, 310, 185, 391, 272, "MPZ USB BUGGY Interface", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered )
If CreateGadgetList(WindowID(#Window_0))
TextGadget(#Text_Status, 135, 10, 120, 20, "No Device", #PB_Text_Center | #PB_Text_Border)
TextGadget(#Text_DIGI_IN, 30, 40, 330, 12, "DIGITAL IN 1 - IN 2 / TIME", #PB_Text_Center)
ListViewGadget(#Listview_INPUT, 30, 56, 330, 50)
TextGadget(#Text_LDR, 30, 110, 330, 12, "LDR INPUT", #PB_Text_Center)
ProgressBarGadget(#Analog_LDR, 30, 130, 330, 20, 0, 1024, #PB_ProgressBar_Smooth)
TextGadget(#Text_MIC, 30, 153, 330, 12, "MIC INPUT", #PB_Text_Center)
ProgressBarGadget(#Analog_MIC, 30, 170, 330, 20, 0, 1024, #PB_ProgressBar_Smooth)
TextGadget(#Text_OUT, 20, 200, 350, 20, "DIGITAL OUT 1 - OUT8", #PB_Text_Center)
ButtonGadget(#Button_OUT1, 20, 220, 40, 30, "OUT 1", #PB_Button_Default | #PB_Button_Toggle)
ButtonGadget(#Button_OUT2, 65, 220, 40, 30, "OUT 2", #PB_Button_Default | #PB_Button_Toggle)
ButtonGadget(#Button_OUT3, 110, 220, 40, 30, "OUT 3", #PB_Button_Default | #PB_Button_Toggle)
ButtonGadget(#Button_OUT4, 155, 220, 40, 30, "OUT 4", #PB_Button_Default | #PB_Button_Toggle)
ButtonGadget(#Button_OUT5, 200, 220, 40, 30, "OUT 5", #PB_Button_Default | #PB_Button_Toggle)
ButtonGadget(#Button_OUT6, 245, 220, 40, 30, "OUT 6", #PB_Button_Default | #PB_Button_Toggle)
ButtonGadget(#Button_OUT7, 290, 220, 40, 30, "OUT 7", #PB_Button_Default | #PB_Button_Toggle)
ButtonGadget(#Button_OUT8, 335, 220, 40, 30, "OUT 8", #PB_Button_Default | #PB_Button_Toggle)
EndIf
ProcedureReturn 1
EndIf
EndProcedure
;{/ DLL LIB
Prototype hidConnect (pHostWin.l); As Boolean
Prototype hidDisconnect (); As Boolean
Prototype hidRead (pHandle.l, pData.b); As Boolean
Prototype hidWrite (pHandle.l, pData.b); As Boolean
Prototype hidReadEx (pVendorID.l, pProductID.l, pData.b); As Boolean
Prototype hidWriteEx (pVendorID.l, pProductID.l, ByRef.b); As Boolean
Prototype hidGetVendorName (pHandle.l, pText.s, pLen.l); As Long
Prototype hidGetProductName (pHandle.l, pText.s, pLen.l); As Long
Prototype hidGetSerialNumber (pHandle.l, pText.s, pLen.l); As Long
Prototype hidGetVendorID (pHandle.l); As Long
Prototype hidGetProductID (pHandle.l); As Long
Prototype hidGetVersion (pHandle.l); As Long
Prototype hidGetInputReportLength (pHandle.l); As Long
Prototype hidGetOutputReportLength (pHandle.l); As Long
Prototype hidGetHandle (pVendoID.l, pProductID.l); As Long
Prototype hidGetItem (pIndex.l); As Long
Prototype hidGetItemCount (); As Long
Prototype hidSetReadNotify (pHandle.l, pValue.b);
Prototype hidIsReadNotifyEnabled (pHandle.l); As Boolean
Prototype hidIsAvailable (pVendorID.l, pProductID.l); As Boolean
Define mcHID_DLL.l = OpenLibrary(#PB_Any, "mcHID.dll")
If mcHID_DLL
Global hidConnect.hidConnect = GetFunction(mcHID_dll,"Connect") ; (ByVal pHostWin As Long) As Boolean
Global hidDisconnect.hidDisconnect = GetFunction(mcHID_dll,"Disconnect"); () As Boolean
Global hidRead.hidRead = GetFunction(mcHID_dll,"Read"); (ByVal pHandle As Long, ByRef pData As Byte) As Boolean
Global hidWrite.hidWrite = GetFunction(mcHID_dll,"Write"); (ByVal pHandle As Long, ByRef pData As Byte) As Boolean
Global hidReadEx.hidReadEx = GetFunction(mcHID_dll,"ReadEx"); (ByVal pVendorID As Long, ByVal pProductID As Long, ByRef pData As Byte) As Boolean
Global hidWriteEx.hidWriteEx = GetFunction(mcHID_dll,"WriteEx"); (ByVal pVendorID As Long, ByVal pProductID As Long, ByRef pData As Byte) As Boolean
Global hidGetVendorName.hidGetVendorName = GetFunction(mcHID_dll,"GetVendorName"); (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
Global hidGetProductName.hidGetProductName = GetFunction(mcHID_dll,"GetProductName"); (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
Global hidGetSerialNumber.hidGetSerialNumber = GetFunction(mcHID_dll,"GetSerialNumber"); (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
Global hidGetVendorID.hidGetVendorID = GetFunction(mcHID_dll,"GetVendorID"); (ByVal pHandle As Long) As Long
Global hidGetProductid.hidGetProductid = GetFunction(mcHID_dll,"GetProductID"); (ByVal pHandle As Long) As Long
Global hidGetVersion.hidGetVersion = GetFunction(mcHID_dll,"GetVersion"); (ByVal pHandle As Long) As Long
Global hidGetInputReportLength.hidGetInputReportLength = GetFunction(mcHID_dll,"GetInputReportLength"); (ByVal pHandle As Long) As Long
Global hidGetOutputReportLength.hidGetOutputReportLength = GetFunction(mcHID_dll,"GetOutputReportLength"); (ByVal pHandle As Long) As Long
Global hidGetHandle.hidGetHandle = GetFunction(mcHID_dll,"GetHandle"); (ByVal pVendoID As Long, ByVal pProductID As Long) As Long
Global hidGetItem.hidGetItem = GetFunction(mcHID_dll,"GetItem"); (ByVal pIndex As Long) As Long
Global hidGetItemCount.hidGetItemCount = GetFunction(mcHID_dll,"GetItemCount"); (ByVal pIndex As Long) As Long
Global hidSetReadNotify.hidSetReadNotify = GetFunction(mcHID_dll,"SetReadNotify"); ByVal pHandle As Long, ByVal pValue As Boolean)
Global hidIsReadNotifyEnabled.hidIsReadNotifyEnabled = GetFunction(mcHID_dll,"IsReadNotifyEnabled"); (ByVal pHandle As Long) As Boolean
Global hidIsAvailable.hidIsAvailable = GetFunction(mcHID_dll,"IsAvailable"); (ByVal pVendorID As Long, ByVal pProductID As Long) As Boolean
Else
MessageRequester("Fehlermeldung", "Das Programm konnte die mcHID.dll Datei nicht öffnen", #PB_MessageRequester_Ok)
End
EndIf
;}
ProcedureDLL mcHID_Free(); DLL FREE
If mcHID_DLL
CloseLibrary(#PB_Any)
EndIf
XLTable_DLL = 0
EndProcedure
;- Window Callback
Procedure WinProc(hWnd,Msg,wParam,lParam)
result = #PB_ProcessPureBasicEvents
If Msg = #WM_HID_EVENT
Select wParam
; HID device has been plugged message...
Case #NOTIFY_PLUGGED
;HID device has been plugged
DeviceHandle = hidGetHandle(#VendorID, #ProductID)
If DeviceHandle
hidGetProductName (DeviceHandle.l,ProductName,256)
SetGadgetText(#Text_Status, ProductName)
; Reset für PIC eingefügt
BufferOut(0) = 0
BufferOut(1) = 1
hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out
EndIf
Case #NOTIFY_UNPLUGGED
;HID device has unplugged
DeviceHandle = hidGetHandle(#VendorID, #ProductID)
If Not DeviceHandle
SetGadgetText(#Text_Status, "No Device")
EndIf
Case #NOTIFY_CHANGED
;HID device has been changed
If DeviceHandle
hidSetReadNotify (DeviceHandle, #True) ;read event...
EndIf
;DeviceHandle = hidGetHandle(#VendorID, #ProductID)
;hidSetReadNotify (DeviceHandle, #True) ! IMPORTANT ! Read works only With this flag
Case #NOTIFY_READ
; READ works only if the hidSetReadNotify flag is set
If hidRead(DeviceHandle, @BufferIn(0))
;AddGadgetItem(#Listview_INPUT,0, "Read: "+Str(BufferIn(0)) +"/"+ Str(BufferIn(1))+"/"+Str(BufferIn(2))+"/"+Str(BufferIn(3))+"/"+Str(BufferIn(4))+"/"+Str(BufferIn(5))+"/"+Str(BufferIn(6))+"/"+Str(BufferIn(7))+"/"+Str(BufferIn(8)))
If BufferIn(1) = 1 ; Taster 1
If BufferIn(6) & %01 = 1
If Button_1 = 0
AddGadgetItem(#Listview_INPUT,0, "Button 1 at "+FormatDate("%hh:%ii:%ss", Date()))
Button_1 = 1
EndIf
Else
Button_1 = 0
EndIf
If BufferIn(6) & %10 = 2 ; Taster 2
If Button_2 = 0
AddGadgetItem(#Listview_INPUT,0, "Button 2 at "+FormatDate("%hh:%ii:%ss", Date()))
Button_2 = 1
EndIf
Else
Button_2 = 0
EndIf
AD_Wert = BufferIn(2)*256 ; LDR IN
If BufferIn(3) > 0
AD_Wert = AD_Wert + BufferIn(3)
Else
AD_Wert = AD_Wert + 256 + BufferIn(3)
EndIf
SetGadgetState (#Analog_LDR,1024-AD_Wert)
AD_Wert = BufferIn(4)*256 ; MIC IN
If BufferIn(5) > 0
AD_Wert = AD_Wert + BufferIn(5)
Else
AD_Wert = AD_Wert + 256 + BufferIn(5)
EndIf
SetGadgetState (#Analog_MIC,AD_Wert)
EndIf
Else
AddGadgetItem(#Listview_INPUT,0, "Read Error!")
EndIf
EndSelect
EndIf
ProcedureReturn result
EndProcedure
;{ Mainunit
If Open_Window_0()
hidconnect (WindowID(#Window_0))
SetWindowCallback(@WinProc())
BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
BufferOut(2) = 0
hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadget()
Case #Button_OUT1 ; Erweiterungsport Bit 1
If GetGadgetState(#Button_OUT1)
DIGITAL_OUTD = DIGITAL_OUTD | %00000001
Else
DIGITAL_OUTD = DIGITAL_OUTD & %11111110
EndIf
BufferOut(0) = 0
BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
BufferOut(2) = DIGITAL_OUTD
hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out
Case #Button_OUT2 ; Erweiterungsport Bit 2
If GetGadgetState(#Button_OUT2)
DIGITAL_OUTD = DIGITAL_OUTD | %00000010
Else
DIGITAL_OUTD = DIGITAL_OUTD & %11111101
EndIf
BufferOut(0) = 0
BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
BufferOut(2) = DIGITAL_OUTD
hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out
Case #Button_OUT3 ; Erweiterungsport Bit 3
If GetGadgetState(#Button_OUT3)
DIGITAL_OUTD = DIGITAL_OUTD | %00000100
Else
DIGITAL_OUTD = DIGITAL_OUTD & %11111011
EndIf
BufferOut(0) = 0
BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
BufferOut(2) = DIGITAL_OUTD
hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out
Case #Button_OUT4 ; Erweiterungsport Bit 4
If GetGadgetState(#Button_OUT4)
DIGITAL_OUTD = DIGITAL_OUTD | %00001000
Else
DIGITAL_OUTD = DIGITAL_OUTD & %11110111
EndIf
BufferOut(0) = 0
BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
BufferOut(2) = DIGITAL_OUTD
hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out
Case #Button_OUT5 ; Erweiterungsport Bit 5
If GetGadgetState(#Button_OUT5)
DIGITAL_OUTD = DIGITAL_OUTD | %00010000
Else
DIGITAL_OUTD = DIGITAL_OUTD & %11101111
EndIf
BufferOut(0) = 0
BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
BufferOut(2) = DIGITAL_OUTD
hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
Case #Button_OUT6 ; Erweiterungsport Bit 6
If GetGadgetState(#Button_OUT6)
DIGITAL_OUTD = DIGITAL_OUTD | %00100000
Else
DIGITAL_OUTD = DIGITAL_OUTD & %11011111
EndIf
BufferOut(0) = 0
BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
BufferOut(2) = DIGITAL_OUTD
hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
Case #Button_OUT7 ; Erweiterungsport Bit 7
If GetGadgetState(#Button_OUT7)
DIGITAL_OUTD = DIGITAL_OUTD | %01000000
Else
DIGITAL_OUTD = DIGITAL_OUTD & %10111111
EndIf
BufferOut(0) = 0
BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
BufferOut(2) = DIGITAL_OUTD
hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
Case #Button_OUT8 ; Erweiterungsport Bit 8
If GetGadgetState(#Button_OUT8)
DIGITAL_OUTD = DIGITAL_OUTD | %10000000
Else
DIGITAL_OUTD = DIGITAL_OUTD & %01111111
EndIf
BufferOut(0) = 0
BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
BufferOut(2) = DIGITAL_OUTD
hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
EndSelect
EndSelect
Until EventID = #PB_Event_CloseWindow
hidDisconnect ()
mcHID_Free()
EndIf
End
;}
;
Code: Alles auswählen
;PIC_BUGGY_IO.HEX File wird erstellt
;-----------------------------
If CreateFile(1, "PIC_BUGGY_IO.HEX" )
Restore StringData
Repeat
Read Daten.s
If Daten.s = "End" : Break : EndIf
WriteStringN(1,Daten.s)
ForEver
CloseFile (1)
EndIf
DataSection
StringData:
Data.s ":020000040000FA"
Data.s ":10080000D5EF09F0FFFFFFFFFFFFFFFFFFFFFFFF3F"
Data.s ":10081000E9CF01F0EACF02F0E1CF03F0E2CF04F03C"
Data.s ":10082000D9CF05F0DACF06F0D4EC08F001C0E9FF2B"
Data.s ":1008300002C0EAFF03C0E1FF04C0E2FF05C0D9FF28"
Data.s ":1008400006C0DAFF110004010401376B1E0E716E41"
Data.s ":100850000401400E096F5B0E0A6F040E0B6F880EC9"
Data.s ":10086000086F9B0E0E6F040E0F6F0D6B400E0C6F1A"
Data.s ":100870001200040104012A6B14EE9BF024EE18F020"
Data.s ":10088000010E2A5D04E2E6CFDEFF2A2BF9D7010E26"
Data.s ":100890003E6F3F6B1200040104012A6B14EE20F03E"
Data.s ":1008A00024EE18F0020E2A5D04E2E6CFDEFF2A2BCA"
Data.s ":1008B000F9D7020E3E6F3F6B12000401800E040157"
Data.s ":1008C00010634FD0135103082FE0135102080EE0BC"
Data.s ":1008D0001351010801E044D0010E396F7A0E3A6FCE"
Data.s ":1008E000140E3B6F120E3E6F3F6B3AD0010E396F04"
Data.s ":1008F000450EE16E040EE26E1245E126000EE22284"
Data.s ":10090000E6CF3AF4E7CF3BF4F86AF76A040E3A25EB"
Data.s ":10091000F66E3B51F7220900F5CF3EF409000A00BC"
Data.s ":10092000F5CF3FF40A001CD0010E396F020E12659C"
Data.s ":1009300002D0030E126F490EE16E040EE26E1245F4"
Data.s ":10094000E126000EE222E6CF3AF4E7CF3BF43AC4C8"
Data.s ":10095000F6FF3BC4F7FF0800F5503E6F3F6B00D039"
Data.s ":10096000348312000401010E0401396F716A726A46"
Data.s ":10097000736A746A756A766A776A786A796A7A6A73"
Data.s ":100980007B6A7C6A7D6A7E6A7F6A326B336B12C4D3"
Data.s ":1009900031F4125103E1050E306F04D0060E306FB2"
Data.s ":1009A00023EC04F0120004010401186B196B1051C0"
Data.s ":1009B0001F0B020814E010511F0B01080CE010512E"
Data.s ":1009C0001F0B000801E02CD0010E0401396F34A187"
Data.s ":1009D00001D0188325D0010E0401396F21D0010EFA"
Data.s ":1009E0000401396F14510F0B0800F350296B000FED"
Data.s ":1009F000286F040E29231451800B01E0010E04001E"
Data.s ":100A0000F35028253C6F000E29213D6F3CC4E1FFC7"
Data.s ":100A10003DC4E2FFE750040B02E0010E186F00D066"
Data.s ":100A2000010E0401396309E1180E3A6F040E3B6FA1"
Data.s ":100A30003493020E3E6F3F6B00D012000401010E92"
Data.s ":100A40000401125D0CE110511F0B000808E1010EBA"
Data.s ":100A5000396F030E115D02E1348101D03491000E33"
Data.s ":100A60000401125D37E110511F0B020833E11451EC"
Data.s ":100A70000F0B00082FE0010E396F14510F0B080007"
Data.s ":100A8000F350296B000F286F040E29231451800B9B"
Data.s ":100A900001E0010E0400F35028253C6F000E2921CF"
Data.s ":100AA0003D6F030E115D07E1840E3CC4E1FF3DC4C0"
Data.s ":100AB000E2FFE76E0FD014AF07D0000E3CC4E1FF99"
Data.s ":100AC0003DC4E2FFE76E06D0880E3CC4E1FF3DC4A2"
Data.s ":100AD000E2FFE76E12000401010E0401135D04E061"
Data.s ":100AE000030E135D10E01AD0000E0401125D04E045"
Data.s ":100AF000010E125D07E012D0020E0401396F39ECCD"
Data.s ":100B000004F00CD00BD0000E0401125D01E006D001"
Data.s ":100B1000020E0401396F4BEC04F000D0180E0401F2"
Data.s ":100B20003A6F040E3B6F349312000401020E04016D"
Data.s ":100B3000135D04E0030E135D0EE01AD0000E0401F5"
Data.s ":100B4000125D01E015D0020E0401396F5B0E3C6F9F"
Data.s ":100B5000040E3D6F0DD0000E0401125D01E008D0BF"
Data.s ":100B6000020E0401396F200E3C6F040E3D6F00D061"
Data.s ":100B700012000401080E04013E5D000E3F5905E21B"
Data.s ":100B80003EC440F43FC441F404D0080E406F000E50"
Data.s ":100B9000416F049304914151030B041340C405F4C5"
Data.s ":100BA00040513E5F41513F5B180E3C6F040E3D6F5C"
Data.s ":100BB00034A31AD03AC4F6FF3BC4F7FFF86A3CC42A"
Data.s ":100BC000E1FF3DC4E2FF04014051411105E1F6CFD0"
Data.s ":100BD0003AF4F7CF3BF41FD00900F5CFE6FF090048"
Data.s ":100BE000400701E24107EFD73AC4E1FF3BC4E2FF0F"
Data.s ":100BF0003CC4D9FF3DC4DAFF04014051411105E175"
Data.s ":100C0000E1CF3AF4E2CF3BF406D0E6CFDEFF400777"
Data.s ":100C100001E24107F1D71200040104011051600BF9"
Data.s ":100C2000E842E842E842E842E84200085CE111514B"
Data.s ":100C30000C0858E01151070855E011510B0846E027"
Data.s ":100C400011510A0834E0115103082EE01151010836"
Data.s ":100C50002BE01151000825E01151080816E0115150"
Data.s ":100C6000090810E0115106080AE01151050801E0D9"
Data.s ":100C70003AD0010E0401396F040E306F34D05DECB0"
Data.s ":100C800004F031D0B2EC04F02ED0010E0401396F23"
Data.s ":100C9000310E3A6F040E3A6F3493010E3E6F3F6B84"
Data.s ":100CA00022D0D3EC04F01FD01EEC05F01CD0010EB6"
Data.s ":100CB0000401396F14513A6F3B6B320E3A27040E20"
Data.s ":100CC0003B233493010E3E6F3F6B0DD0010E0401A8"
Data.s ":100CD000396FE26A320E1425E16E040EE22212C46C"
Data.s ":100CE000E7FF01D000D004011200040104011051FB"
Data.s ":100CF0001F0B010878E11451000875E11151060835"
Data.s ":100D000001E02AD01351210807E01351220812E014"
Data.s ":100D1000135123081DE01DD0020E0401396F010E8E"
Data.s ":100D2000316304D0C20E3A6F140E3B6F090E3E6F52"
Data.s ":100D30003F6B0FD0020E0401396F010E316307D0F3"
Data.s ":100D4000F00E3A6F140E3B6F2F0E3E6F3F6B01D0CB"
Data.s ":100D500000D00401348300D004011051600BE8423C"
Data.s ":100D6000E842E842E842E84201083DE111510B083F"
Data.s ":100D700034E01151030825E011510A081CE011511B"
Data.s ":100D800002080DE01151090807E01151010801E0C6"
Data.s ":100D90002AD06BEC05F027D095EC05F024D0020E9C"
Data.s ":100DA0000401396F350E3A6F040E3B6F3493010E18"
Data.s ":100DB0003E6F3F6B18D0020E0401396F1351356F2F"
Data.s ":100DC00012D0020E0401396F360E3A6F040E3B6FDB"
Data.s ":100DD0003493010E3E6F3F6B06D0020E0401396F53"
Data.s ":100DE0001251366F00D0040112000401000E0401FC"
Data.s ":100DF00039630AD0080E016F100E026F040E036FE4"
Data.s ":100E0000840E006F046F30D0040110AF1ED00401B7"
Data.s ":100E10003E51165D3F51175904E216C43EF417C403"
Data.s ":100E20003FF4B9EC05F0010E0401386F080E016FB4"
Data.s ":100E3000100E026F040E036F800E006F180E066F07"
Data.s ":100E4000040E076FC80E046F0FD0020E0401386F36"
Data.s ":100E5000056BC80E046F080E016F180E026F040EAA"
Data.s ":100E6000036FC80E006F00D06D9800D0120004010F"
Data.s ":100E7000030E04010015436F01C442F442513E27A2"
Data.s ":100E800043513F23180E3A6F040E3B6F3AC4E1FF03"
Data.s ":100E90003BC4E2FF3CC4D9FF3DC4DAFF0401425128"
Data.s ":100EA000431105E1E1CF3AF4E2CF3BF406D0E6CFBF"
Data.s ":100EB000DEFF420701E24307F1D712000401020EF0"
Data.s ":100EC0000401135D04E0030E135D17E020D0000E53"
Data.s ":100ED0000401125D01E01BD004012A6B14EE5BF0EB"
Data.s ":100EE00024EE9BF0010E2A5D04E2E6CFDEFF2A2B02"
Data.s ":100EF000F9D7010E3E6F3F6B0AD0000E0401125D60"
Data.s ":100F000001E005D0020E04013E6F3F6B00D01200DD"
Data.s ":100F10000401000E0401386F080E016F100E026FFD"
Data.s ":100F2000040E036F880E006F000E046F12000401A0"
Data.s ":100F3000000E0401386F000E396F3E6B3F6B0CECF6"
Data.s ":100F400006F0000E0401396302D075EC06F0F5ECF2"
Data.s ":100F500006F012000401020E0401386311D037ECD0"
Data.s ":100F600007F0020E0401396302D05EEC07F00401C1"
Data.s ":100F700000BD03D0C80E006F02D0880E006F03D0F2"
Data.s ":100F800088EC07F000D012000401040E0401306365"
Data.s ":100F900009D012C46EFF6E5003E0050E306F02D010"
Data.s ":100FA000030E306F010E040138630BD0B9EC05F06D"
Data.s ":100FB000040104BD03D0C80E046F02D0880E046F74"
Data.s ":100FC00003D088EC07F000D0120004010401376B55"
Data.s ":100FD00008BF1BD009512C6502D009C42CF4376B13"
Data.s ":100FE00014EE5BF02DC4D9FF2EC4DAFF2C51375D0F"
Data.s ":100FF00004E2E6CFDEFF372BF9D7400E096F400E33"
Data.s ":101000000817087D880E081300D00401375112001C"
Data.s ":1010100004016D9269946894120004016A6A686A16"
Data.s ":101020009F0E6B6E3B0E696E6E6A716A726A736AAE"
Data.s ":10103000746A756A766A776A786A796A7A6A7B6AA4"
Data.s ":101040007C6A7D6A7E6A7F6A160E706E68A602D020"
Data.s ":101050006896FCD76D9888EC07F004013491316BE9"
Data.s ":10106000030E306F12000401698468986D821200CB"
Data.s ":101070000401689C1200040170A003D088EC07F002"
Data.s ":101080007090689A120004016892120004017C0EAC"
Data.s ":101090006C1404012F6F000E2F6301D005D0040ED5"
Data.s ":1010A0002F6301D00ED010D0040100513C0BE84258"
Data.s ":1010B000E8420D0803E197EC07F002D0AAEC07F034"
Data.s ":1010C00003D0C4EC07F000D0120004017C0E6C14B5"
Data.s ":1010D00004012F6F080E2F6301D005D00C0E2F6373"
Data.s ":1010E00001D00DD00DD057C42DF458C42EF4010EEC"
Data.s ":1010F00004012C6FE5EC07F00401446F01D000D02F"
Data.s ":101100001200E9CF51F4EACF52F4E1CF53F4E2CF29"
Data.s ":1011100054F4D9CF55F4DACF56F40401000E04018B"
Data.s ":10112000306301D034D069A404D068A402D008ECA4"
Data.s ":1011300008F06DB22CD069A004D068A002D00DECEC"
Data.s ":1011400008F069A804D068A802D033EC08F069ACB4"
Data.s ":1011500004D068AC02D038EC08F069AA04D068AAC0"
Data.s ":1011600002D03BEC08F069A204D068A202D043ECA4"
Data.s ":1011700008F0030E0401306101D009D069A607D040"
Data.s ":1011800068A605D046EC08F065EC08F0689656C4F1"
Data.s ":10119000DAFF55C4D9FF54C4E2FF53C4E1FF52C47F"
Data.s ":1011A000EAFF51C4E9FF1200A0AA05D0A1AA03D00A"
Data.s ":1011B00081EC08F0A19A12003F0E566EFF0E556E9C"
Data.s ":1011C000562E01D003D0552EFED7FAD72B0E556ED2"
Data.s ":1011D000552EFED70000000012001F0E576EFF0EA6"
Data.s ":1011E000566EFF0E556E572E01D007D0562E01D0E9"
Data.s ":1011F00003D0552EFED7FAD7F6D7980E566EFF0EAF"
Data.s ":10120000556E562E01D003D0552EFED7FAD79D0E1F"
Data.s ":10121000556E552EFED700000000120004016DB679"
Data.s ":101220001200140E6F6E000E0401306F346B316BC0"
Data.s ":101230006D6A696A6D86010E306FDCEC08F06DBA7C"
Data.s ":1012400006D0686A696A69806988020E0401306F95"
Data.s ":1012500012001200040104010CBFFED7400E2C65E1"
Data.s ":1012600002D0400E2C6F2A6B2DC4E1FF2EC4E2FF8A"
Data.s ":1012700024EE9BF02C512A5D04E2E6CFDEFF2A2B00"
Data.s ":10128000F9D704012CC40DF4400E0C170C7D880E08"
Data.s ":101290000C13120004016DA612006D6A696A000E3B"
Data.s ":1012A0000401306F1200F26AF50EF16EC00EF06E9E"
Data.s ":1012B000D09E9D6AA06A9E6AA16A0F0EC112FF0E9F"
Data.s ":1012C000926EFF0E936EFF0E946E956A070E966EE9"
Data.s ":1012D000896A8A6A8B6A8C6A8D6A120004EE00F051"
Data.s ":1012E000050EEE6AEA62FDD7EDEC08F004019E0EF1"
Data.s ":1012F0000401456F140E466F9E0E476F140E486F23"
Data.s ":101300004E0E496F150E4A6F560E4B6F150E4C6FF1"
Data.s ":101310009A0E4D6F150E4E6FCE0E4F6F150E506F0D"
Data.s ":101320000BC057F40CC058F40DC059F40EC05AF459"
Data.s ":101330000EEC09F0A19AA08AF28CF28E12000B6AD0"
Data.s ":10134000A09A0401060E0401306101D008D06DB2EC"
Data.s ":1013500006D0445304E044C44BF0446B04D04B6AC1"
Data.s ":101360000401446B00D0A08A12000BC04BF01200A5"
Data.s ":101370004C6A04010CBF4C2A4C50000A02E00E6A71"
Data.s ":101380000CD0A09A0BC02DF40CC02EF40DC02CF480"
Data.s ":101390002AEC09F0A08A010E0E6E0EC04BF012006E"
Data.s ":1013A0004AEC09F0A19AA09A12000F6A106A53EC55"
Data.s ":1013B00009F0600E0B6E000E0C6EA00E0D6E000E8E"
Data.s ":1013C0000E6E6EEC09F0838283841F0E576EFF0E43"
Data.s ":1013D000566EFF0E556E572E01D007D0562E01D0F7"
Data.s ":1013E00003D0552EFED7FAD7F6D7980E566EFF0EBD"
Data.s ":1013F000556E562E01D003D0552EFED7FAD79D0E2E"
Data.s ":10140000556E552EFED7000000001F0E576EFF0EC2"
Data.s ":10141000566EFF0E556E572E01D007D0562E01D0B6"
Data.s ":1014200003D0552EFED7FAD7F6D7980E566EFF0E7C"
Data.s ":10143000556E562E01D003D0552EFED7FAD79D0EED"
Data.s ":10144000556E552EFED7000000009FEC09F04BC0F2"
Data.s ":1014500000F0076A0050075C0EE260C008F0A00EC2"
Data.s ":101460000B6E000E0C6E60C0A0F0010E0D6EB8EC9D"
Data.s ":1014700009F0072AEFD7E9D7FFD7120001000000D3"
Data.s ":10148000020000000000000008003400120001000B"
Data.s ":10149000000001000000010002000000010009003E"
Data.s ":1014A000020029000000010001000000A00032003D"
Data.s ":1014B000090004000000000002000300000000001A"
Data.s ":1014C00000000900210001000100000001002200CD"
Data.s ":1014D0002F0000000700050081000300400000000D"
Data.s ":1014E00001000700050001000300400000000100AA"
Data.s ":1014F0000600A000FF0009000100A1000100090092"
Data.s ":1015000003001500000026000000FF007500080021"
Data.s ":101510009500010081000200090004001500000090"
Data.s ":1015200026000000FF0075000800950001009100F2"
Data.s ":101530000200090005001500000026000000FF0061"
Data.s ":101540007500080095000200B1000200C000040010"
Data.s ":10155000030009000400220003006D000000690080"
Data.s ":1015600000006B000000720000006F0000004500EA"
Data.s ":1015700000006C000000650000006B0000007400BB"
Data.s ":101580000000720000006F0000006E0000006900A3"
Data.s ":1015900000006B000000610000001A00030055000D"
Data.s ":1015A000000053000000420000002000000048003E"
Data.s ":1015B000000049000000440000002000000064001A"
Data.s ":1015C0000000650000006D0000006F0000000200D8"
Data.s ":1015D0000300FFFFFFFFFFFFFFFFFFFFFFFFFFFF16"
Data.s ":020000040030CA"
Data.s ":0E000000F032FFFEFFF99BFFFFFFFFBFFFFF87"
Data.s ":00000001FF"
Data.s "End"