Page 1 of 1

WebCamAddict - Creative-Commons Source-Code

Posted: Tue Aug 10, 2010 9:52 pm
by jamirokwai
Hi board,

this is my fourth donation to the community under a Creative Commons-License.
Feel free to adopt, change, and give back...

WebCamAddict opens a small window with a certain WebCam-Picture (PNG and JPG), and refreshes it every xx minutes. The image can be saved to disk using the PopUp-Menu (right button). WebCamAddict was developed using Mac OS X, and should run on all three platforms. The Mac OS X-part (opacity of windows) is dynamically used with CompilerIf-statement...

If you like exchange the PNG inside the DataSection... It's the PNG included in this ZIP: http://pb.quadworks.de/OSS/WebCamAddict.zip

You may add more WebCam-URLs using the DataSection at the end of the listing.

Share your best WebCam, and have fun!


Code: Select all

;#########################
;# WebCamAddict          #
;# (p) 2010 quadWorks.de #
;#########################

; #########################################################################################################
; This code is licensed via a Creative Commons Licence:  http://creativecommons.org/licenses/by-nc-sa/3.0/
; Means: you may alter the code, but have to give the changes back
;        you may use this code as you like, but without commercial background
; If you like to use this code commercially, please contact joerg.burbach@quadworks.de
; #########################################################################################################

; The URLs are hardcoded. See the end of this listing
; NOT Threadsafe!

Global AktURL$      = ""
Global Sticky       = 1
Global AktCam       = 1
Global AktFreq      = 600000
Global Cams$        = ""
Global Dim URLs.s(0)
Global Dim Mins(7)
Mins(0) =  1 : Mins(1) =  2: Mins(2) =  5: Mins(3) = 10: Mins(4) = 15: Mins(5) = 30: Mins(6) = 45: Mins(7) = 60

#WebCamPic          = 0
#FehlerPic          = 1
#PicGadget          = 0
#Fenster            = 0
#MaxBreite          = 320
#MaxHoehe           = 320

Procedure.i Pruefe_Datei(dateinamen$)
 x = ReadFile(#PB_Any, dateinamen$)
 If x <> 0
  CloseFile(x)
 EndIf
 ProcedureReturn x
EndProcedure

Procedure Change_GUI()
; beschreibung bei tinyedges zu finden
 Breite    = ImageWidth (#WebCamPic)
 Hoehe     = ImageHeight(#WebCamPic)
 If Breite > #MaxBreite
  Hoehe    = Hoehe * #MaxBreite / Breite
  Breite   = #MaxBreite
 EndIf
 If Hoehe  > #MaxHoehe
  Breite   = Breite * #MaxHoehe / Hoehe
  Hoehe    = #MaxHoehe
 EndIf

 ResizeImage   (#WebCamPic, Breite, Hoehe)
 ResizeWindow  (#Fenster, 1, DesktopHeight(0) - Hoehe - 3, Breite, Hoehe)
 ResizeGadget  (#PicGadget, 0, 0, WindowWidth(#Fenster), WindowHeight(#Fenster))
 SetGadgetState(#PicGadget, ImageID(#WebCamPic))
 HideWindow    (#Fenster, 0)
EndProcedure

Procedure Hole_Bild(Nummer)
 alteURL$ = AktURL$
 AktURL$  = URLs(Nummer)
 AktCam   = 2
 If AlteURL$ <> AktURL$
  DeleteFile("WebCamAddict.jpg")
 EndIf
 If IsImage(#WebCamPic) : FreeImage(#WebCamPic) : EndIf
 If Pruefe_Datei("WebCamAddict.jpg") = 0
  If ReceiveHTTPFile(AktURL$, "WebCamAddict.jpg") = 0
   CopyImage(#FehlerPic, #WebCamPic)
   Change_GUI()
   ProcedureReturn
  EndIf
 EndIf
 LoadImage(#WebCamPic, "WebCamAddict.jpg")
 Change_GUI()
EndProcedure

Procedure Refresh_Image(*Value)
 Repeat
  Delay(AktFreq)
  Hole_Bild(AktCam)
 ForEver
EndProcedure

Procedure Setup()
 UseJPEGImageDecoder()
 UsePNGImageDecoder()
 InitNetwork()
 ExamineDesktops()
 OpenWindow (#Fenster, 1, DesktopHeight(0) - #MaxHoehe - 3, #MaxBreite, #MaxHoehe, "WebCamAddict", #PB_Window_BorderLess)
 HideWindow (#Fenster, 1)
 ImageGadget(#PicGadget, 0, 0, WindowWidth(#Fenster), WindowHeight(#Fenster), 0)
 CreatePopupMenu(0)
 MenuItem(0,"Information")
 MenuItem(3,"Quit")
 MenuBar()
 MenuItem(1,"Save Image as")
 MenuItem(2,"Open URL")
 MenuItem(4,"Windows always on top") 
 MenuBar()
 
 CompilerIf #PB_Compiler_OS = #PB_OS_MacOS        ; Opacity only on Mac OS X?
 OpenSubMenu("Set Opacity to")
  For i = 10 To 1 Step -1
   MenuItem(i + 10, Str(i * 10) + "%")
  Next i
 CloseSubMenu()
 SetWindowAlpha_(WindowID(#Fenster), 0.75)  ; 75% sichtbar = Standard 
 CompilerEndIf  

 OpenSubMenu("Refresh timeout")
  For i = 0 To 7
  MenuItem(30 + i, Str(Mins(i)) + " Min")
  Next i
 CloseSubMenu()
 StickyWindow(#Fenster, 1)
 OpenSubMenu("Webcams")

; Webcam-URLs auslesen
 Restore Cams
 i = 1
 Repeat
  ReDim URLs(i)
  Read.s Desc.s
  Read.s URLs(i)
  If Desc <> "-1"
   MenuItem(100 + i, Desc)
  EndIf
  i + 1
 Until Desc = "-1"
 
 CloseSubMenu()
 CatchImage(#FehlerPic, ?Fehler)
 AddKeyboardShortcut(#Fenster, #PB_Shortcut_Command | #PB_Shortcut_Q, #PB_Event_CloseWindow) 
 CreateThread(@Refresh_Image(), 1) 
EndProcedure

Setup()
Hole_Bild(AktCam)
Exit = 0

Repeat
 Event = WaitWindowEvent()
 Select Event
  Case #PB_Event_CloseWindow : Exit = 1
  Case #PB_Event_Gadget
   If EventGadget() = 0 And EventType() = #PB_EventType_RightClick
    DisplayPopupMenu(0, WindowID(#Fenster))
   EndIf
  Case #PB_Event_Timer : Hole_Bild(AktCam)
   
  Case #PB_Event_Menu
   Menu = EventMenu()
   Select Menu 

    Case 0 : MessageRequester("Information", "WebCamAddict - Display and save pictures of your favorite WebCams from the Internet.", 0) ; Info darstellen
    Case 1 ; Save Picture
     Temp$ = SaveFileRequester("Save Image as", "WebCamAddict.jpg", "*.jpg", 1)
     If Temp$ <> ""
      If CopyFile("WebCamAddict.jpg", Temp$) <> 0
       MessageRequester("Information", "Image saved As: " + Temp$)
      EndIf
     EndIf
     
    Case 2 ; Eine URL angeben
     Temp$ = InputRequester("Open URL", "Please enter the URL of Your WebCam." + Chr($13), AktURL$)
     If Temp$ <> ""
      URLs(0) = Temp$
      Hole_Bild(0)
     EndIf
    
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
    Case 10 To 20 : SetWindowAlpha_(WindowID(#Fenster), (Menu - 10) * 0.1)              ; Mac OS X-Spezialität -> Opazität
CompilerEndIf
    Case 30 To 38 : AktFreq = Mins(Menu - 30) 
    Case 4
     If Sticky = 0
       Sticky = 1
       SetMenuItemText(0,4, "Window can be hidden")
     Else
       Sticky = 0
       SetMenuItemText(0,4, "Windows always on top")
     EndIf
     StickyWindow(#Fenster, Sticky)
     
   Case 101 To 200 : Hole_Bild(Menu - 100) 
    Case 3 : Exit = 1
   EndSelect
 EndSelect
 Delay(20)
Until Exit = 1

DeleteFile("WebCamAddict.jpg")

DataSection
 Fehler: 
  Data.b 66, 77, 102, 121, 0, 0, 0, 0, 0, 0, 54, 4, 0, 0, 40, 0, 0, 0, -56, 0, 0, 0, -106, 0
  Data.b 0, 0, 1, 0, 8, 0, 1, 0, 0, 0, 48, 117, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 1
  Data.b 0, 0, 0, 1, 0, 0, -1, -1, -1, 0, -2, -2, -2, 0, -3, -3, -3, 0, -4, -4, -4, 0, -5, -5
  Data.b -5, 0, -6, -6, -6, 0, -7, -7, -7, 0, -8, -8, -8, 0, -9, -9, -9, 0, -10, -10, -10, 0, -11, -11
  Data.b -11, 0, -12, -12, -12, 0, -13, -13, -13, 0, -14, -14, -14, 0, -15, -15, -15, 0, -16, -16, -16, 0, -17, -17
  Data.b -17, 0, -18, -18, -18, 0, -19, -19, -19, 0, -20, -20, -20, 0, -21, -21, -21, 0, -22, -22, -22, 0, -23, -23
  Data.b -23, 0, -24, -24, -24, 0, -25, -25, -25, 0, -26, -26, -26, 0, -27, -27, -27, 0, -28, -28, -28, 0, -29, -29
  Data.b -29, 0, -30, -30, -30, 0, -31, -31, -31, 0, -32, -32, -32, 0, -33, -33, -33, 0, -34, -34, -34, 0, -35, -35
  Data.b -35, 0, -36, -36, -36, 0, -37, -37, -37, 0, -38, -38, -38, 0, -39, -39, -39, 0, -40, -40, -40, 0, -41, -41
  Data.b -41, 0, -42, -42, -42, 0, -43, -43, -43, 0, -44, -44, -44, 0, -45, -45, -45, 0, -46, -46, -46, 0, -47, -47
  Data.b -47, 0, -48, -48, -48, 0, -49, -49, -49, 0, -50, -50, -50, 0, -51, -51, -51, 0, -52, -52, -52, 0, -53, -53
  Data.b -53, 0, -54, -54, -54, 0, -55, -55, -55, 0, -56, -56, -56, 0, -57, -57, -57, 0, -58, -58, -58, 0, -59, -59
  Data.b -59, 0, -60, -60, -60, 0, -61, -61, -61, 0, -62, -62, -62, 0, -63, -63, -63, 0, -64, -64, -64, 0, -65, -65
  Data.b -65, 0, -66, -66, -66, 0, -67, -67, -67, 0, -68, -68, -68, 0, -69, -69, -69, 0, -70, -70, -70, 0, -71, -71
  Data.b -71, 0, -72, -72, -72, 0, -73, -73, -73, 0, -74, -74, -74, 0, -75, -75, -75, 0, -76, -76, -76, 0, -77, -77
  Data.b -77, 0, -78, -78, -78, 0, -79, -79, -79, 0, -80, -80, -80, 0, -81, -81, -81, 0, -82, -82, -82, 0, -83, -83
  Data.b -83, 0, -84, -84, -84, 0, -85, -85, -85, 0, -86, -86, -86, 0, -87, -87, -87, 0, -88, -88, -88, 0, -89, -89
  Data.b -89, 0, -90, -90, -90, 0, -91, -91, -91, 0, -92, -92, -92, 0, -93, -93, -93, 0, -94, -94, -94, 0, -95, -95
  Data.b -95, 0, -96, -96, -96, 0, -97, -97, -97, 0, -98, -98, -98, 0, -99, -99, -99, 0, -100, -100, -100, 0, -101, -101
  Data.b -101, 0, -102, -102, -102, 0, -103, -103, -103, 0, -104, -104, -104, 0, -105, -105, -105, 0, -106, -106, -106, 0, -107, -107
  Data.b -107, 0, -108, -108, -108, 0, -109, -109, -109, 0, -110, -110, -110, 0, -111, -111, -111, 0, -112, -112, -112, 0, -113, -113
  Data.b -113, 0, -114, -114, -114, 0, -115, -115, -115, 0, -116, -116, -116, 0, -117, -117, -117, 0, -118, -118, -118, 0, -119, -119
  Data.b -119, 0, -120, -120, -120, 0, -121, -121, -121, 0, -122, -122, -122, 0, -123, -123, -123, 0, -124, -124, -124, 0, -125, -125
  Data.b -125, 0, -126, -126, -126, 0, -127, -127, -127, 0, -128, -128, -128, 0, 127, 127, 127, 0, 126, 126, 126, 0, 125, 125
  Data.b 125, 0, 124, 124, 124, 0, 123, 123, 123, 0, 122, 122, 122, 0, 121, 121, 121, 0, 120, 120, 120, 0, 119, 119
  Data.b 119, 0, 118, 118, 118, 0, 117, 117, 117, 0, 116, 116, 116, 0, 115, 115, 115, 0, 114, 114, 114, 0, 113, 113
  Data.b 113, 0, 112, 112, 112, 0, 111, 111, 111, 0, 110, 110, 110, 0, 109, 109, 109, 0, 108, 108, 108, 0, 107, 107
  Data.b 107, 0, 106, 106, 106, 0, 105, 105, 105, 0, 104, 104, 104, 0, 103, 103, 103, 0, 102, 102, 102, 0, 101, 101
  Data.b 101, 0, 100, 100, 100, 0, 99, 99, 99, 0, 98, 98, 98, 0, 97, 97, 97, 0, 96, 96, 96, 0, 95, 95
  Data.b 95, 0, 94, 94, 94, 0, 93, 93, 93, 0, 92, 92, 92, 0, 91, 91, 91, 0, 90, 90, 90, 0, 89, 89
  Data.b 89, 0, 88, 88, 88, 0, 87, 87, 87, 0, 86, 86, 86, 0, 85, 85, 85, 0, 84, 84, 84, 0, 83, 83
  Data.b 83, 0, 82, 82, 82, 0, 81, 81, 81, 0, 80, 80, 80, 0, 79, 79, 79, 0, 78, 78, 78, 0, 77, 77
  Data.b 77, 0, 76, 76, 76, 0, 75, 75, 75, 0, 74, 74, 74, 0, 73, 73, 73, 0, 72, 72, 72, 0, 71, 71
  Data.b 71, 0, 70, 70, 70, 0, 69, 69, 69, 0, 68, 68, 68, 0, 67, 67, 67, 0, 66, 66, 66, 0, 65, 65
  Data.b 65, 0, 64, 64, 64, 0, 63, 63, 63, 0, 62, 62, 62, 0, 61, 61, 61, 0, 60, 60, 60, 0, 59, 59
  Data.b 59, 0, 58, 58, 58, 0, 57, 57, 57, 0, 56, 56, 56, 0, 55, 55, 55, 0, 54, 54, 54, 0, 53, 53
  Data.b 53, 0, 52, 52, 52, 0, 51, 51, 51, 0, 50, 50, 50, 0, 49, 49, 49, 0, 48, 48, 48, 0, 47, 47
  Data.b 47, 0, 46, 46, 46, 0, 45, 45, 45, 0, 44, 44, 44, 0, 43, 43, 43, 0, 42, 42, 42, 0, 41, 41
  Data.b 41, 0, 40, 40, 40, 0, 39, 39, 39, 0, 38, 38, 38, 0, 37, 37, 37, 0, 36, 36, 36, 0, 35, 35
  Data.b 35, 0, 34, 34, 34, 0, 33, 33, 33, 0, 32, 32, 32, 0, 31, 31, 31, 0, 30, 30, 30, 0, 29, 29
  Data.b 29, 0, 28, 28, 28, 0, 27, 27, 27, 0, 26, 26, 26, 0, 25, 25, 25, 0, 24, 24, 24, 0, 23, 23
  Data.b 23, 0, 22, 22, 22, 0, 21, 21, 21, 0, 20, 20, 20, 0, 19, 19, 19, 0, 18, 18, 18, 0, 17, 17
  Data.b 17, 0, 16, 16, 16, 0, 15, 15, 15, 0, 14, 14, 14, 0, 13, 13, 13, 0, 12, 12, 12, 0, 11, 11
  Data.b 11, 0, 10, 10, 10, 0, 9, 9, 9, 0, 8, 8, 8, 0, 7, 7, 7, 0, 6, 6, 6, 0, 5, 5
  Data.b 5, 0, 4, 4, 4, 0, 3, 3, 3, 0, 2, 2, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, -56, 8
  Data.b 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8
  Data.b 0, 0, -56, 8, 0, 0, 99, 8, 5, -1, 6, 8, 5, -1, 14, 8, 8, -1, 5, 8, 5, -1, 3, 8
  Data.b 6, -1, 1, 8, 12, -1, 8, 8, 5, -1, 6, 8, 5, -1, 7, 8, 0, 0, 99, 8, 5, -1, 6, 8
  Data.b 5, -1, 12, 8, 11, -1, 4, 8, 5, -1, 3, 8, 5, -1, 2, 8, 12, -1, 8, 8, 5, -1, 6, 8
  Data.b 5, -1, 7, 8, 0, 0, 99, 8, 5, -1, 6, 8, 5, -1, 11, 8, 5, -1, 3, 8, 5, -1, 3, 8
  Data.b 5, -1, 2, 8, 6, -1, 2, 8, 5, -1, 15, 8, 5, -1, 6, 8, 5, -1, 7, 8, 0, 0, 99, 8
  Data.b 5, -1, 6, 8, 5, -1, 10, 8, 5, -1, 5, 8, 5, -1, 2, 8, 5, -1, 2, 8, 5, -1, 3, 8
  Data.b 5, -1, 15, 8, 5, -1, 6, 8, 5, -1, 7, 8, 0, 0, 125, 8, 5, -1, 5, 8, 5, -1, 2, 8
  Data.b 5, -1, 1, 8, 6, -1, 3, 8, 5, -1, 38, 8, 0, 0, 125, 8, 5, -1, 5, 8, 5, -1, 2, 8
  Data.b 5, -1, 1, 8, 5, -1, 4, 8, 5, -1, 38, 8, 0, 0, 99, 8, 5, -1, 6, 8, 5, -1, 10, 8
  Data.b 5, -1, 5, 8, 5, -1, 2, 8, 5, -1, 1, 8, 5, -1, 4, 8, 5, -1, 15, 8, 5, -1, 6, 8
  Data.b 5, -1, 7, 8, 0, 0, 99, 8, 5, -1, 6, 8, 5, -1, 10, 8, 5, -1, 5, 8, 5, -1, 2, 8
  Data.b 10, -1, 5, 8, 5, -1, 15, 8, 5, -1, 6, 8, 5, -1, 7, 8, 0, 0, 99, 8, 5, -1, 6, 8
  Data.b 5, -1, 10, 8, 5, -1, 5, 8, 5, -1, 2, 8, 11, -1, 4, 8, 5, -1, 15, 8, 5, -1, 6, 8
  Data.b 5, -1, 7, 8, 0, 0, 99, 8, 6, -1, 5, 8, 6, -1, 9, 8, 5, -1, 5, 8, 5, -1, 2, 8
  Data.b 5, -1, 2, 8, 5, -1, 3, 8, 5, -1, 15, 8, 6, -1, 5, 8, 6, -1, 6, 8, 0, 0, 100, 8
  Data.b 6, -1, 5, 8, 6, -1, 8, 8, 5, -1, 5, 8, 5, -1, 2, 8, 5, -1, 3, 8, 5, -1, 2, 8
  Data.b 5, -1, 16, 8, 6, -1, 5, 8, 6, -1, 5, 8, 0, 0, 101, 8, 6, -1, 5, 8, 6, -1, 7, 8
  Data.b 5, -1, 5, 8, 5, -1, 2, 8, 5, -1, 3, 8, 5, -1, 2, 8, 5, -1, 17, 8, 6, -1, 5, 8
  Data.b 6, -1, 4, 8, 0, 0, 102, 8, 6, -1, 5, 8, 6, -1, 6, 8, 5, -1, 5, 8, 5, -1, 2, 8
  Data.b 5, -1, 3, 8, 5, -1, 2, 8, 5, -1, 18, 8, 6, -1, 5, 8, 6, -1, 3, 8, 0, 0, 103, 8
  Data.b 5, -1, 6, 8, 5, -1, 6, 8, 5, -1, 5, 8, 5, -1, 2, 8, 5, -1, 3, 8, 5, -1, 2, 8
  Data.b 5, -1, 19, 8, 5, -1, 6, 8, 5, -1, 3, 8, 0, 0, 96, 8, 2, -1, 5, 8, 6, -1, 5, 8
  Data.b 5, -1, 6, 8, 5, -1, 5, 8, 5, -1, 2, 8, 5, -1, 3, 8, 5, -1, 2, 8, 5, -1, 12, 8
  Data.b 2, -1, 5, 8, 6, -1, 5, 8, 5, -1, 3, 8, 0, 0, 96, 8, 3, -1, 3, 8, 8, -1, 3, 8
  Data.b 6, -1, 6, 8, 5, -1, 5, 8, 5, -1, 2, 8, 5, -1, 2, 8, 5, -1, 3, 8, 5, -1, 12, 8
  Data.b 3, -1, 3, 8, 8, -1, 3, 8, 6, -1, 3, 8, 0, 0, 96, 8, 22, -1, 7, 8, 5, -1, 5, 8
  Data.b 5, -1, 2, 8, 12, -1, 3, 8, 5, -1, 12, 8, 22, -1, 4, 8, 0, 0, 98, 8, 8, -1, 3, 8
  Data.b 8, -1, 8, 8, 5, -1, 5, 8, 5, -1, 2, 8, 10, -1, 5, 8, 5, -1, 14, 8, 8, -1, 3, 8
  Data.b 8, -1, 5, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8
  Data.b 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8
  Data.b 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8
  Data.b 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, 63, 8, 2, 57, 1, 96, 2, 107, 1, 104, 3, 107, 0, 3
  Data.b 104, 107, 103, 8, 3, 107, 1, 103, 1, 104, 4, 107, 0, 4, 99, 107, 104, 103, 6, 107, 2, 115, 1, 112
  Data.b 11, 115, 1, 107, 1, 112, 14, 107, 0, 3, 99, 107, 99, 1, 3, 107, 1, 104, 1, 103, 2, 107, 0, 3
  Data.b 104, 94, 90, 0, 63, 8, 0, 0, 62, 8, 1, 107, 2, -124, 0, 10, 127, 123, -124, 127, 123, 127, -127, 127
  Data.b 123, -124, 3, 123, 0, 7, -127, 127, 123, -127, 127, 123, -124, 107, 2, 123, 2, -124, 0, 6, 123, -127, 127, -119
  Data.b -120, -119, 2, -116, 1, -112, 1, -111, 6, -108, 1, -112, 5, -116, 1, 123, 2, -124, 1, -127, 1, -124, 2, 123
  Data.b 1, 127, 3, 123, 0, 10, -124, 123, -124, 123, -124, 123, -127, 123, 127, -127, 2, 123, 0, 6, 127, -127, 123, -124
  Data.b 94, 96, 60, 8, 0, 0, 62, 8, 1, 107, 2, -124, 0, 3, 123, -124, -127, 127, 2, 123, 1, -124, 1, 127
  Data.b 2, -127, 1, 123, 1, -124, 2, 123, 1, 127, 2, -127, 1, 127, 1, -127, 2, 123, 1, 127, 1, 123, 2, -124
  Data.b 0, 11, 123, 127, -127, -120, -119, -120, -116, -108, -116, -112, -111, 123, 5, -108, 0, 3, -111, -116, -112, 123, 3, -116
  Data.b 3, -124, 0, 5, 127, -127, 127, 123, -124, 123, 4, 123, 0, 17, -124, 123, -124, 123, -124, 123, -124, -127, 127, -127
  Data.b 127, -127, 127, -127, -124, 90, 94, 0, 60, 8, 0, 0, 60, 8, 0, 8, 107, 103, -124, -127, 127, 123, -127, 127
  Data.b 6, 123, 0, 3, 127, 123, 127, -127, 3, 123, 1, 127, 2, 123, 1, 127, 3, 123, 0, 3, -124, 123, -124, 123
  Data.b 4, -116, 1, -108, 1, -103, 2, -108, 2, -100, 1, -103, 1, -104, 4, -100, 1, -104, 1, -103, 2, -108, 1, -112
  Data.b 2, -116, 3, -124, 0, 6, 123, -124, 123, -124, 123, -124, 4, 123, 1, 127, 3, 123, 1, 127, 2, 123, 1, -127
  Data.b 1, 127, 2, 123, 3, -124, 1, 79, 1, 74, 58, 8, 0, 0, 58, 8, 1, 63, 1, 61, 2, -116, 0, 6
  Data.b -124, 127, 123, -127, 127, -127, 3, 123, 1, -127, 1, 127, 2, 123, 0, 3, -127, 123, 127, 123, 3, 123, 1, 127
  Data.b 2, 123, 1, -124, 1, 123, 3, -124, 1, -116, 1, -111, 3, -108, 1, -104, 2, -108, 1, -124, 2, 107, 0, 8
  Data.b 94, 96, 82, 94, 96, 119, -111, -116, 2, -100, 0, 6, -103, -108, -100, -116, -119, -120, 3, -124, 2, 123, 1, 115
  Data.b 2, -124, 4, 123, 1, 127, 3, 123, 1, 127, 3, 123, 1, 127, 1, 123, 2, -116, 2, -124, 58, 8, 0, 0
  Data.b 58, 8, 1, 61, 1, 63, 2, -116, 0, 6, -119, 123, -127, 127, -127, 127, 2, 123, 0, 4, -124, 127, -127, 127
  Data.b 2, 123, 0, 4, 127, 123, -127, 127, 2, 123, 1, -127, 2, 123, 1, 127, 1, 123, 2, -124, 1, -116, 1, -112
  Data.b 3, -108, 0, 4, -103, -104, -108, -124, 2, 107, 2, 90, 1, 82, 2, 99, 1, 115, 2, -116, 2, -100, 0, 4
  Data.b -108, -100, -108, -112, 2, -124, 1, -119, 2, -124, 3, 123, 2, -124, 1, 127, 2, 123, 1, -124, 3, 123, 1, 127
  Data.b 3, 123, 0, 3, 127, 123, -127, 8, 2, -116, 2, -124, 58, 8, 0, 0, 58, 8, 0, 5, 96, 94, -116, -119
  Data.b 127, 6, 2, -124, 4, 123, 0, 14, 127, -127, 123, 127, -127, 123, 127, -127, 123, 127, 123, -124, 123, 127, 2, -124
  Data.b 1, -127, 4, -116, 0, 9, -100, -108, -100, -108, 99, 46, 41, 33, 24, -112, 2, 33, 1, 28, 1, 30, 3, 33
  Data.b 0, 7, 24, 28, 66, 61, -124, -108, -100, 115, 3, -108, 4, -124, 1, 123, 1, -124, 2, 123, 0, 3, -127, 123
  Data.b -124, -124, 2, 123, 0, 9, -124, -127, 123, -124, 123, -127, 123, 127, 123, 127, 2, -124, 2, -116, 1, 57, 57, 8
  Data.b 0, 0, 58, 8, 0, 4, 94, 90, -124, -116, 2, -124, 1, 123, 1, -124, 2, 123, 1, -127, 2, 123, 1, -124
  Data.b 2, 123, 1, -124, 2, 123, 0, 3, 127, -127, -124, -127, 2, 123, 1, -124, 2, 123, 2, -124, 2, -116, 5, -108
  Data.b 0, 4, 99, 41, 49, 24, 2, 33, 1, 30, 5, 33, 2, 24, 0, 6, 63, 66, -124, -103, -104, -103, 2, -108
  Data.b 0, 4, -124, -116, -124, 123, 2, -124, 2, 123, 1, 127, 1, -124, 2, 123, 0, 9, -124, 123, 127, -127, 123, 127
  Data.b 123, -124, 123, -124, 3, -124, 2, -116, 1, 57, 57, 8, 0, 0, 58, 8, 1, 104, 1, 107, 2, -116, 3, -124
  Data.b 0, 6, 123, 127, 123, 127, -127, 127, 2, 123, 0, 9, -124, 123, -124, 123, -127, 127, 123, -124, 123, -127, 4, -124
  Data.b 2, -116, 1, -108, 1, -100, 2, 123, 0, 4, 33, 41, 28, 33, 4, 24, 0, 7, 20, 16, 21, 20, 16, 24
  Data.b 33, 24, 3, 24, 0, 3, 33, 82, 74, -103, 3, -108, 2, -116, 1, -124, 1, -116, 3, -124, 3, 123, 1, -124
  Data.b 2, 123, 0, 3, -124, 123, 127, 123, 2, -127, 0, 4, 127, 123, -127, 127, 2, -124, 2, -116, 1, 66, 57, 8
  Data.b 0, 0, 58, 8, 1, 103, 1, 99, 2, -116, 1, -124, 2, 123, 0, 10, 127, -127, 127, -127, 127, -127, 123, -124
  Data.b 123, -127, 3, 123, 0, 3, 127, -127, 123, -127, 3, -124, 0, 8, -116, -124, -108, -103, -108, 103, 30, 24, 2, 33
  Data.b 0, 4, 24, 30, 33, 24, 2, 16, 2, 24, 0, 17, 41, 8, 16, 0, 13, 16, 20, 21, 20, 24, 33, 49
  Data.b -108, -111, -104, -108, -111, -116, 2, -124, 2, 123, 0, 3, -124, 123, -124, 3, 2, 123, 0, 11, -124, 123, 127, -127
  Data.b 123, 127, -127, 123, 127, -127, -124, -116, 3, -116, 1, 74, 57, 8, 0, 0, 58, 8, 1, 104, 1, 103, 2, -116
  Data.b 0, 6, -124, 127, -127, 123, 127, -127, 2, -124, 0, 4, 127, -127, 123, 127, 2, 123, 0, 6, 127, 123, -127, 127
  Data.b -127, 123, 3, -124, 2, -116, 0, 4, -104, -103, 104, 28, 2, 33, 0, 5, 28, 21, 33, 28, 21, 16, 2, 16
  Data.b 2, 24, 0, 4, 33, 16, 12, 0, 4, 16, 3, 24, 1, 57, 1, -116, 2, -108, 1, -104, 1, -116, 4, -124
  Data.b 0, 4, 123, -124, 123, -124, 2, 123, 0, 8, -124, 123, 127, -127, 123, 127, -127, 123, 3, -124, 2, -116, 1, 66
  Data.b 57, 8, 0, 0, 58, 8, 1, 103, 1, 104, 2, -116, 0, 6, -124, -127, 123, 127, -127, -124, 4, 123, 0, 7
  Data.b 127, -127, 123, 127, 123, -127, 127, 6, 2, 123, 3, -124, 2, -116, 0, 4, -104, 120, 115, 28, 2, 24, 0, 6
  Data.b 33, 38, 24, 37, 38, 90, 2, 123, 0, 6, 127, -127, -124, 127, -127, 107, 2, 57, 0, 4, 8, 16, 8, 21
  Data.b 2, 24, 0, 5, 66, 61, -111, -116, -108, -116, 3, -124, 0, 6, 123, -124, 123, -127, 123, -124, 2, 123, 0, 8
  Data.b -124, -127, 123, 127, -127, 127, -127, 127, 2, -124, 2, -116, 1, 74, 57, 8, 0, 0, 58, 8, 2, 99, 2, -116
  Data.b 1, -124, 2, 123, 0, 3, -124, 123, 127, -124, 2, 123, 0, 13, -124, -127, 123, 127, 123, -127, 123, 127, -127, -124
  Data.b 123, -124, -120, -116, 2, -116, 1, -108, 1, -116, 3, 24, 2, 33, 0, 5, 24, 20, 82, -124, -120, 123, 2, -124
  Data.b 0, 4, 127, -127, -124, 123, 2, -124, 1, 123, 2, -124, 2, 107, 1, 20, 2, 8, 0, 3, 24, 30, 24, -116
  Data.b 2, 90, 1, -108, 2, -116, 2, -124, 0, 3, 127, -127, 127, 8, 2, 123, 1, -124, 3, 123, 1, -124, 2, 123
  Data.b 0, 5, -127, 127, -127, -120, -124, 0, 2, -116, 1, 66, 57, 8, 0, 0, 58, 8, 2, 99, 0, 8, -119, -116
  Data.b -124, 127, 123, -127, 127, -127, 2, 123, 0, 15, -124, 123, 127, -127, -124, 123, -124, 123, -124, 123, 127, -124, -119, -124
  Data.b -111, -116, 2, -116, 3, 24, 2, 33, 0, 3, 21, 24, 82, 5, 2, -124, 0, 9, -127, 127, -127, -124, 127, 123
  Data.b -124, 123, 127, 123, 2, -124, 2, 107, 1, 24, 2, 8, 0, 6, 24, 28, 33, 86, 90, -108, 2, -116, 0, 16
  Data.b -124, 127, -127, 127, -127, 127, -127, 123, -124, 123, -124, 123, 127, -127, 127, -127, 3, -124, 2, -116, 1, 74, 57, 8
  Data.b 0, 0, 58, 8, 1, 107, 1, 103, 2, -116, 0, 22, -124, -127, -124, 127, -127, 127, -127, 127, 123, -124, 123, 127
  Data.b -127, 127, 123, -127, 127, -124, -127, -124, -120, -116, 2, -108, 0, 8, 74, 24, 28, 33, 24, 33, 86, 90, 3, -124
  Data.b 0, 7, 127, -127, -124, 123, -124, 123, -127, 123, 2, -124, 0, 5, -127, -124, 127, -127, 123, 24, 2, 16, 0, 9
  Data.b 12, 30, 24, 33, 30, -120, -116, -112, -119, 16, 2, -124, 0, 13, -127, 127, -127, 127, -124, 123, -124, 123, -124, 123
  Data.b -124, 123, 127, -124, 2, -124, 1, -119, 2, -116, 1, 66, 57, 8, 0, 0, 58, 8, 1, 103, 1, 104, 2, -116
  Data.b 0, 17, -124, 127, -124, 123, -124, 123, -124, 123, -124, -127, 127, -127, 127, 123, -127, 127, -127, -124, 3, -124, 2, -116
  Data.b 2, -108, 0, 4, 74, 33, 24, 30, 2, 24, 2, 90, 3, -124, 0, 7, -127, 127, -127, 127, -127, 127, -124, 123
  Data.b 2, 123, 0, 5, -124, 127, -127, 127, 123, 24, 2, 16, 0, 8, 13, 24, 28, 30, 28, -124, -116, -111, 3, -124
  Data.b 0, 19, 127, -127, 127, -124, 123, -127, 127, -127, 127, -127, 127, 123, -124, -127, -120, -124, -111, -112, 66, -119, 57, 8
  Data.b 0, 0, 58, 8, 1, 104, 1, 103, 2, -116, 0, 21, -119, -124, 123, -124, 123, -124, 123, -124, 123, 127, -127, 127
  Data.b -127, -124, 127, -127, 127, -127, 127, -124, -108, -116, 3, -116, 1, 16, 2, 24, 0, 3, 28, 71, 66, 90, 2, -124
  Data.b 0, 3, -119, 127, -127, 127, 2, -124, 0, 7, 127, -127, 127, -127, 127, -124, 123, 127, 5, -124, 2, 99, 0, 24
  Data.b 8, 21, 16, 28, 30, 82, -111, -112, -116, -124, 123, -124, 127, -127, 123, -124, 127, 123, -124, 123, -124, -127, -124, 123
  Data.b 3, -124, 2, -116, 1, 66, 57, 8, 0, 0, 58, 8, 1, 103, 1, 104, 2, -116, 0, 18, -124, 123, 127, -127
  Data.b 127, -127, 127, -127, 127, -127, 127, -127, 123, 127, -127, 127, -127, 127, 2, -124, 2, -116, 2, 99, 1, 16, 1, 24
  Data.b 2, 33, 1, 111, 1, 115, 2, -116, 0, 6, 127, 123, -127, 127, 123, -127, 2, 123, 0, 4, -124, 123, -127, -124
  Data.b 2, 123, 3, -124, 2, -116, 0, 7, 33, 12, 16, 30, 28, 41, -112, -112, 2, -116, 3, -124, 0, 3, -127, 127
  Data.b -124, 123, 2, 123, 0, 7, -127, 127, -127, 127, 123, 127, 123, 66, 2, -124, 3, -116, 1, 74, 57, 8, 0, 0
  Data.b 58, 8, 1, 104, 1, 103, 2, -116, 2, -124, 0, 7, -127, 127, -127, 127, -127, 127, -127, -127, 2, 123, 0, 3
  Data.b -124, 127, -127, 127, 2, -124, 0, 6, 123, -124, -127, -124, -112, -111, 2, 99, 0, 4, 12, 33, 30, 33, 2, 115
  Data.b 0, 16, -116, -111, 123, -124, 127, 123, -124, 127, -127, 127, 123, -124, 127, 123, -124, 123, 3, -124, 2, -116, 1, 24
  Data.b 2, 16, 0, 5, 24, 30, 41, -116, -108, -124, 3, -124, 0, 14, 123, -124, -127, 123, -124, -127, 127, -127, 127, -127
  Data.b -124, 123, -127, 127, 2, -124, 2, -116, 1, 66, 57, 8, 0, 0, 58, 8, 1, 103, 1, 104, 2, -116, 0, 20
  Data.b -120, -127, 127, -127, 127, -127, 123, 127, -127, 127, -124, 123, -127, 123, -124, 127, -124, -127, 127, -124, 2, -116, 1, 61
  Data.b 1, 63, 3, 24, 0, 4, 49, -116, -111, -120, 4, -124, 0, 9, -127, 127, -127, 127, 123, -127, -124, 123, -127, 127
  Data.b 2, 123, 3, -124, 2, -116, 0, 9, 90, 13, 12, 24, 20, 30, -124, 123, -116, 5, 3, -124, 0, 15, 127, -127
  Data.b 127, 123, 127, -127, 127, -127, -124, 123, -127, 127, -124, -119, -120, -127, 2, -116, 1, 74, 57, 8, 0, 0, 58, 8
  Data.b 0, 9, 107, 99, -112, -116, -119, 127, -124, 127, -127, -127, 2, -124, 0, 10, -127, 127, -127, 127, -124, 123, 127, -127
  Data.b -124, 123, 2, -124, 0, 3, -119, -116, -108, 63, 2, 41, 2, 24, 1, 33, 1, 66, 2, -108, 0, 3, -119, -124
  Data.b -116, 127, 2, 123, 0, 6, 127, -127, -124, 123, -124, 123, 2, -124, 0, 4, 127, -124, -127, 127, 2, -124, 2, -116
  Data.b 1, 115, 2, 8, 2, 24, 0, 4, 28, 112, 107, -116, 2, -124, 0, 16, -127, -124, 127, -127, -124, 123, -124, -127
  Data.b 127, 123, -124, 127, -127, -124, -120, -119, 2, -116, 1, 66, 57, 8, 0, 0, 58, 8, 1, 99, 1, 107, 2, -116
  Data.b 0, 17, -124, -127, -124, -127, -124, 127, -127, 127, -124, 123, -127, -124, 123, -127, 127, -124, 123, 123, 2, -124, 0, 9
  Data.b -120, -108, -116, 41, 49, 16, 33, 28, 71, 33, 2, -108, 0, 11, -120, -116, -124, 123, 127, 123, -124, 123, 127, -127
  Data.b 127, -127, 3, -124, 0, 4, -127, 127, -127, -124, 3, -116, 1, 115, 2, 8, 2, 24, 0, 4, 30, 111, 107, -116
  Data.b 3, -124, 0, 5, 127, -127, -124, 127, -127, 16, 2, 127, 0, 11, -127, -124, 127, -127, -124, 127, -119, -124, -108, -116
  Data.b 74, -119, 57, 8, 0, 0, 58, 8, 0, 4, 107, 99, -111, -112, 2, -124, 0, 9, 127, -124, 123, -124, 127, -124
  Data.b -127, -124, 127, -124, 2, -124, 1, 123, 2, -124, 1, -127, 3, -124, 2, -116, 1, 37, 1, 33, 2, 24, 0, 9
  Data.b 30, 82, -112, -108, -119, -120, -124, 127, -127, 123, 3, -124, 0, 7, -127, 127, -127, 127, 123, -124, 127, 127, 4, -124
  Data.b 0, 5, -116, -108, 115, 12, 13, 24, 2, 24, 0, 4, 33, 99, 107, -116, 2, -124, 0, 16, -127, -124, 127, -127
  Data.b -124, 127, -127, -124, 127, -127, -124, 127, -127, -124, -120, -124, 2, -116, 1, 66, 57, 8, 0, 0, 58, 8, 0, 4
  Data.b 99, 107, -116, -111, 2, -124, 0, 15, -127, 127, -124, -127, -124, 123, -124, 127, -127, -124, 123, 127, -127, -124, 127, -124
  Data.b 3, -124, 2, -116, 0, 7, 38, 41, 16, 33, 24, 82, -108, 9, 3, -116, 1, -124, 1, -127, 2, -124, 0, 6
  Data.b 123, -124, 127, -124, 123, -127, 2, -124, 1, -127, 4, -124, 0, 5, -108, -116, 115, 13, 12, 12, 2, 24, 1, 33
  Data.b 2, 107, 1, -116, 2, -124, 0, 19, 127, -124, -127, -124, 127, -127, -124, 127, -127, -124, 127, -127, 127, -124, -119, -124
  Data.b -108, -116, 74, -116, 57, 8, 0, 0, 58, 8, 0, 5, 107, 99, -112, -116, -120, -124, 2, -124, 0, 13, -127, 127
  Data.b -124, 123, -124, -127, -124, 127, 123, -127, -124, 127, -127, -124, 5, -124, 1, -116, 2, 41, 1, 16, 2, 24, 0, 3
  Data.b 66, -103, -104, -116, 2, -116, 0, 6, -124, -120, -124, -127, -124, 123, 3, -124, 1, 127, 1, 123, 5, -124, 0, 6
  Data.b -116, -108, -100, 104, 20, 21, 3, 24, 2, 107, 5, -124, 0, 14, 127, -127, -124, 127, -127, -124, 127, -127, -124, 127
  Data.b -127, -124, -120, -119, 2, -116, 1, 66, 57, 8, 0, 0, 58, 8, 1, 99, 1, 107, 2, -116, 2, -124, 0, 9
  Data.b -127, 127, -124, -127, -124, 123, -124, 127, -127, 127, 2, -124, 0, 5, 127, -127, 127, -124, 123, -116, 2, -124, 2, -116
  Data.b 0, 3, 57, 66, 8, -103, 2, 33, 0, 3, 41, -104, -103, -120, 2, -108, 0, 10, -116, -124, -116, -124, 123, -124
  Data.b -127, -124, 127, -127, 5, -124, 2, -116, 2, -108, 1, 86, 2, 16, 2, 33, 1, 24, 2, 123, 4, -124, 0, 11
  Data.b 127, -127, -124, 127, -127, -124, 123, -127, -124, 127, -127, 66, 3, -124, 1, -120, 2, -116, 1, 74, 57, 8, 0, 0
  Data.b 58, 8, 1, 107, 1, 99, 2, -116, 0, 20, -119, 127, -124, -127, 127, -124, 123, -124, 123, -124, 127, -127, 127, -127
  Data.b 127, -127, -124, 127, 123, -124, 2, -116, 2, 57, 1, 16, 1, 24, 2, 33, 2, -100, 1, -112, 1, -111, 2, -116
  Data.b 0, 4, -119, 127, -124, 127, 2, -124, 0, 4, -127, 127, -127, 127, 2, -124, 2, -116, 3, -108, 0, 3, 82, 24
  Data.b 16, 16, 2, 33, 1, 24, 2, 123, 0, 16, -120, -124, -127, 127, -127, 127, -127, -124, 127, 123, -124, 127, 123, -124
  Data.b 127, -127, 2, -124, 0, 4, -119, -116, -112, 66, 57, 8, 0, 0, 58, 8, 0, 4, 99, 103, -111, -112, 5, -124
  Data.b 1, 123, 4, -124, 1, -127, 1, 127, 2, -124, 0, 4, -127, 127, -124, -127, 4, -124, 2, 90, 0, 4, 8, 24
  Data.b 16, 33, 2, 123, 2, -100, 0, 6, -108, -116, -112, -119, -124, -119, 5, -124, 3, -116, 3, -108, 0, 8, -103, -104
  Data.b 38, 28, 30, 28, 30, 33, 2, -116, 7, -124, 1, 127, 1, -127, 2, -124, 1, -127, 2, -124, 0, 8, -127, 127
  Data.b -124, -119, -120, -108, -116, 71, 57, 8, 0, 0, 58, 8, 0, 3, 107, 104, -112, -112, 2, -116, 0, 3, -127, -124
  Data.b 123, -127, 3, -124, 0, 5, 123, -124, 127, -124, -127, -127, 2, -124, 0, 6, 127, -127, -124, 127, -127, -124, 2, -116
  Data.b 1, 123, 1, -124, 2, 8, 0, 7, 16, 24, 63, 61, -103, -104, -103, -108, 2, -108, 0, 3, -112, -111, -112, 28
  Data.b 4, -116, 1, -108, 3, -116, 0, 8, -104, -103, -96, 99, 104, 20, 30, 28, 2, 33, 0, 3, 74, -124, -119, -108
  Data.b 4, -124, 0, 5, -127, 127, -124, -127, 127, -124, 4, -124, 1, 123, 3, -124, 0, 5, -116, -124, -116, -108, 66, 0
  Data.b 57, 8, 0, 0, 58, 8, 0, 6, 104, 103, -116, -111, -124, 127, 2, -124, 0, 3, 127, -124, 123, -124, 3, -124
  Data.b 1, -127, 1, 127, 5, -124, 0, 4, -127, 127, -124, -116, 2, -124, 0, 14, 123, 8, 16, 8, 24, 61, 63, -104
  Data.b -108, -100, -108, -104, -111, -112, 4, -116, 3, -108, 2, -116, 0, 3, -103, -108, -91, 28, 2, 99, 0, 3, 16, 33
  Data.b 30, 8, 2, 33, 1, 70, 2, -116, 3, -124, 1, 127, 2, -124, 1, -127, 4, -124, 1, 127, 2, -124, 1, 127
  Data.b 1, -127, 2, -124, 3, -116, 1, 70, 57, 8, 0, 0, 58, 8, 0, 3, 103, 104, -112, -111, 2, -116, 0, 3
  Data.b -127, 127, -127, -124, 3, -124, 0, 5, -127, 127, -127, 127, -127, -124, 2, -124, 1, 123, 2, -124, 1, 127, 1, -127
  Data.b 2, -124, 3, -116, 0, 3, 57, 8, 16, -100, 3, 24, 0, 6, 87, 82, -91, -100, -94, -100, 8, -108, 1, -91
  Data.b 1, -96, 2, -100, 0, 4, 123, 33, 24, 33, 2, 24, 2, 33, 0, 4, 120, -124, -120, -127, 2, -124, 0, 10
  Data.b -127, 127, -127, -124, 127, -127, 127, -127, -124, -127, 4, -124, 0, 5, -120, -124, -108, -111, 66, 0, 57, 8, 0, 0
  Data.b 58, 8, 0, 4, 104, 103, -111, -116, 4, -124, 0, 4, 127, -127, -124, 127, 7, -124, 0, 3, 123, -124, -127, 127
  Data.b 4, -124, 2, -116, 1, 57, 2, 16, 3, 24, 0, 7, 82, 86, -91, -100, -96, -108, -100, 8, 5, -108, 0, 10
  Data.b -100, -108, -100, -94, -100, -96, 123, 33, 24, 33, 2, 24, 2, 33, 1, 115, 1, -116, 3, -124, 1, 123, 3, -124
  Data.b 1, 127, 1, -127, 4, -124, 0, 3, 127, -124, 123, 10, 2, -124, 1, -119, 3, -116, 1, 74, 57, 8, 0, 0
  Data.b 58, 8, 0, 5, 103, 104, -112, -111, -120, -124, 5, -124, 1, 123, 2, -124, 1, 123, 3, -124, 1, -127, 2, -124
  Data.b 1, 127, 8, -124, 3, 8, 2, 24, 0, 6, 33, 30, 74, -108, -103, -96, 2, -100, 1, -94, 5, -100, 0, 6
  Data.b -91, -100, 115, 112, 33, 24, 3, 33, 0, 7, 28, 70, 71, -120, -124, -119, 127, -116, 16, -124, 0, 5, -120, -119
  Data.b -108, -116, 66, -127, 57, 8, 0, 0, 58, 8, 0, 4, 104, 103, -111, -112, 4, -124, 1, -127, 6, -124, 1, 123
  Data.b 2, -124, 1, -120, 3, -124, 1, 127, 3, -124, 0, 6, -119, -124, -116, 99, 103, 8, 3, 16, 0, 5, 20, 33
  Data.b 38, 37, 96, -94, 2, -124, 2, -100, 1, -96, 2, -116, 0, 5, 115, 66, 57, 33, 24, 70, 3, 33, 0, 4
  Data.b 16, 53, 54, -119, 2, -124, 0, 5, -116, -124, -116, -124, -116, 8, 2, -124, 2, -116, 0, 8, -120, -119, -124, -120
  Data.b -119, -120, -119, -120, 2, -124, 4, -116, 1, 74, 57, 8, 0, 0, 58, 8, 0, 5, 103, 104, -112, -111, -116, -124
  Data.b 4, -124, 1, 127, 18, -124, 1, -116, 2, 99, 1, 8, 3, 16, 1, 21, 1, 37, 2, 33, 1, 99, 2, -124
  Data.b 2, -100, 1, -94, 2, -116, 1, 107, 2, 66, 5, 33, 0, 5, 16, 54, 53, -124, -116, 5, 2, -124, 0, 4
  Data.b -116, -124, -116, -124, 2, -116, 2, -124, 3, -116, 2, -124, 1, -119, 4, -124, 1, -119, 1, -120, 2, -108, 1, 66
  Data.b 57, 8, 0, 0, 58, 8, 0, 4, 104, 103, -111, -112, 7, -124, 1, -127, 4, -124, 1, 123, 4, -124, 1, -127
  Data.b 5, -124, 0, 5, -120, -124, -116, -119, 99, 33, 4, 8, 1, 16, 2, 24, 4, 33, 1, 24, 2, 33, 0, 4
  Data.b 24, 33, 24, 33, 3, 24, 0, 8, 20, 21, 41, 127, 123, -116, -124, -108, 4, -116, 1, -108, 3, -116, 1, -108
  Data.b 6, -116, 1, -120, 1, -119, 2, -124, 1, -120, 3, -116, 1, 71, 57, 8, 0, 0, 58, 8, 0, 5, 103, 104
  Data.b -116, -111, -120, -124, 3, -124, 0, 7, 127, -127, -124, 127, -124, -127, 127, -124, 2, -124, 0, 5, 123, -124, -127, -124
  Data.b -120, 8, 5, -124, 1, -119, 1, -124, 2, -116, 1, -124, 2, 107, 2, 24, 1, 8, 3, 16, 2, 24, 0, 5
  Data.b 20, 21, 24, 28, 33, -108, 5, 24, 1, 16, 2, 57, 1, -116, 2, -124, 3, -116, 3, -108, 0, 3, -100, -108
  Data.b -100, -116, 3, -108, 1, -100, 4, -108, 2, -116, 2, -124, 0, 6, -116, -119, -116, -108, -116, 70, 57, 8, 0, 0
  Data.b 58, 8, 0, 5, 104, 103, -111, -112, -119, -124, 13, -124, 1, 123, 9, -124, 1, -120, 3, -116, 2, 107, 2, 24
  Data.b 1, 4, 3, 16, 2, 24, 0, 4, 21, 20, 33, 30, 4, 24, 0, 3, 16, 24, 16, 107, 2, 57, 2, -124
  Data.b 4, -116, 3, -108, 2, -100, 3, -108, 0, 3, -100, -108, -100, 24, 2, -108, 0, 6, -116, -108, -116, -124, -116, -124
  Data.b 3, -116, 1, -112, 1, 71, 57, 8, 0, 0, 58, 8, 0, 7, 103, 104, -112, -111, -120, -124, -119, -124, 10, -124
  Data.b 1, -116, 6, -124, 0, 6, -116, -124, -116, -124, -111, -112, 4, -108, 2, -116, 1, 79, 2, 16, 3, 8, 0, 3
  Data.b 12, 13, 12, 24, 3, 16, 2, 8, 0, 5, 49, 41, 107, -116, -124, -100, 3, -116, 3, -108, 0, 3, -91, -100
  Data.b -91, -108, 2, -100, 3, -91, 1, -100, 1, -91, 2, -100, 1, -91, 1, -100, 2, -108, 2, -116, 1, -120, 2, -116
  Data.b 0, 3, -111, -108, 70, 6, 57, 8, 0, 0, 58, 8, 0, 3, 104, 99, -108, -111, 2, -116, 1, -120, 9, -124
  Data.b 1, 123, 1, -116, 6, -124, 0, 4, -119, -124, -116, -120, 2, -116, 0, 8, -108, -111, -108, -104, -108, -119, -116, 82
  Data.b 2, 16, 3, 8, 1, 16, 1, 8, 3, 16, 2, 8, 1, 16, 2, 41, 1, 107, 3, -124, 2, -116, 2, -108
  Data.b 4, -100, 1, -91, 1, -100, 2, -91, 0, 4, -100, -91, -100, -91, 2, -100, 0, 3, -108, -100, -108, -120, 5, -116
  Data.b 0, 3, -108, -112, 71, 6, 57, 8, 0, 0, 58, 8, 0, 4, 107, 103, -116, -108, 20, -124, 0, 6, -116, -124
  Data.b -111, -116, -108, -104, 2, -100, 0, 5, -108, -100, -108, -116, -112, -116, 2, -116, 0, 3, 107, 86, 87, -119, 3, 66
  Data.b 2, 74, 0, 4, 99, 123, 115, -116, 2, -124, 1, -116, 2, -124, 0, 5, -108, -116, -108, -100, -116, -116, 7, 115
  Data.b 1, 123, 5, 115, 2, 107, 0, 5, -124, -116, -111, -119, -120, -91, 2, -116, 1, -111, 1, 70, 57, 8, 0, 0
  Data.b 58, 8, 0, 3, 99, 107, -111, -108, 2, -116, 1, -119, 18, -124, 1, -120, 3, -116, 0, 4, -104, 120, 115, 99
  Data.b 2, -124, 0, 6, -108, -104, -111, -120, -119, -120, 2, -124, 1, 123, 8, -124, 0, 4, -116, -124, 123, -124, 3, -116
  Data.b 0, 3, 123, 115, 16, 5, 3, 24, 1, 33, 1, 24, 2, 33, 1, 24, 2, 33, 0, 3, 24, 33, 24, -116
  Data.b 2, 33, 0, 4, 82, -108, -116, -120, 2, -116, 0, 3, -108, -112, 74, 3, 57, 8, 0, 0, 58, 8, 0, 5
  Data.b 103, 99, -112, -111, -120, -116, 19, -124, 1, -119, 3, -116, 0, 4, -108, 119, 120, 99, 2, -124, 2, -108, 0, 6
  Data.b -116, -119, -120, -119, -124, -120, 4, -124, 1, -116, 2, -124, 2, -116, 4, -124, 2, -116, 0, 4, -108, 115, 123, 16
  Data.b 3, 24, 2, 33, 2, 24, 1, 33, 1, 24, 2, 33, 1, 24, 2, 33, 1, 24, 1, 82, 2, -108, 3, -116
  Data.b 0, 3, -111, -108, 66, -116, 57, 8, 0, 0, 58, 8, 0, 3, 104, 107, -111, -111, 2, -116, 19, -124, 3, -116
  Data.b 0, 5, -112, 82, 21, 16, 28, 99, 2, 24, 0, 5, 115, 112, -116, -120, -119, -119, 5, -124, 1, -116, 8, -124
  Data.b 1, -116, 1, -124, 3, -116, 2, 74, 0, 11, 16, 24, 16, 41, 24, 33, 24, 33, 24, 41, 33, 33, 2, 24
  Data.b 0, 4, 33, 24, 33, 90, 2, -116, 1, -124, 2, -116, 2, -108, 1, 66, 57, 8, 0, 0, 58, 8, 0, 3
  Data.b 107, 103, -108, -111, 2, -116, 7, -124, 1, -116, 6, -124, 1, -120, 4, -124, 1, -116, 1, -124, 2, -116, 2, 16
  Data.b 0, 6, 24, 30, 28, 30, 45, 49, 3, -116, 2, -124, 1, -119, 14, -124, 0, 4, -116, -108, 57, 66, 4, 24
  Data.b 5, 33, 0, 4, 24, 33, 24, 41, 2, 33, 1, 24, 1, 82, 3, -116, 0, 5, -119, -120, -108, -111, 66, -108
  Data.b 57, 8, 0, 0, 58, 8, 2, 107, 0, 3, -116, -108, -116, -116, 13, -124, 1, -119, 5, -124, 4, -116, 0, 3
  Data.b 8, 21, 20, -124, 3, 33, 2, 41, 3, -116, 8, -124, 0, 3, -116, -124, -116, -116, 4, -124, 0, 6, -116, -124
  Data.b -108, -116, 66, 57, 2, 24, 1, 33, 1, 24, 3, 33, 0, 10, 24, 33, 24, 33, 24, 33, 41, 24, 33, 82
  Data.b 5, -116, 2, -108, 1, 70, 57, 8, 0, 0, 58, 8, 2, 107, 2, -108, 2, -116, 1, -120, 1, -119, 2, -124
  Data.b 1, -116, 2, -124, 0, 4, -120, -124, -119, -120, 4, -124, 0, 4, -119, -124, -116, -124, 3, -116, 0, 6, 16, 12
  Data.b 13, 16, 24, 33, 2, 41, 0, 4, -116, -124, -116, -120, 12, -124, 1, -116, 3, -124, 2, -116, 0, 9, 57, 66
  Data.b 8, 24, 16, 24, 16, 24, 16, -116, 4, 24, 1, 16, 2, 24, 2, 16, 0, 4, 90, -124, -116, -124, 2, -116
  Data.b 2, -108, 1, 74, 57, 8, 0, 0, 58, 8, 2, 107, 2, -108, 0, 3, -116, -120, -119, -119, 5, -124, 0, 3
  Data.b -116, -124, -116, 4, 5, -124, 1, -120, 3, -124, 1, -120, 1, -119, 2, -116, 0, 6, 20, 13, 8, 16, 33, 24
  Data.b 2, 41, 3, -116, 15, -124, 1, -116, 1, -124, 2, -116, 2, 66, 1, 0, 5, 24, 2, 16, 3, 24, 0, 8
  Data.b 16, 24, 16, 24, 16, 90, -116, -124, 3, -116, 2, -108, 1, 74, 57, 8, 0, 0, 58, 8, 2, 107, 0, 10
  Data.b -108, -103, -111, -116, -120, -116, -124, -120, -124, -119, 6, -124, 1, -120, 1, -119, 4, -124, 0, 8, -116, -124, -120, -119
  Data.b 82, 4, 5, 12, 2, 16, 0, 3, 107, 99, -116, 41, 3, -124, 1, -116, 1, -124, 2, -116, 4, -124, 1, -116
  Data.b 3, -124, 1, -116, 3, -124, 1, -116, 1, -124, 2, 66, 1, 8, 1, 0, 5, 8, 1, 16, 1, 0, 5, 8
  Data.b 2, 41, 1, 123, 3, -116, 3, -108, 1, -100, 1, 74, 57, 8, 0, 0, 58, 8, 2, 90, 2, -100, 0, 9
  Data.b -104, -116, -108, -116, -119, -124, -116, -124, -120, -124, 4, -124, 1, -119, 4, -124, 1, -116, 3, -124, 0, 10, -116, -124
  Data.b -116, 112, 115, 90, 115, 120, -112, -108, 7, -116, 1, -124, 16, -116, 1, -124, 1, -108, 4, -116, 1, -108, 4, -116
  Data.b 0, 3, -108, -116, -108, -116, 2, -124, 1, -108, 2, -116, 3, -108, 2, -100, 1, 49, 57, 8, 0, 0, 58, 8
  Data.b 2, 90, 2, -100, 0, 3, -108, -112, -111, -116, 3, -116, 1, -124, 1, -119, 15, -124, 2, -116, 0, 7, 111, 115
  Data.b 90, 123, 115, -111, -108, -124, 6, -116, 1, -124, 9, -116, 1, -124, 6, -116, 1, -124, 2, -116, 1, -108, 9, -116
  Data.b 1, -108, 6, -116, 1, -108, 4, -100, 1, 57, 57, 8, 0, 0, 58, 8, 2, 57, 2, -91, 2, -100, 2, -108
  Data.b 1, -112, 4, -116, 0, 9, -119, -120, -116, -124, -120, -124, -119, -124, -116, 115, 2, -124, 4, -116, 0, 3, -124, -108
  Data.b -116, -124, 5, -108, 0, 3, -116, -108, -116, -124, 2, -108, 0, 9, -111, -108, -116, -108, -116, -108, -116, -108, -116, -100
  Data.b 4, -108, 1, -116, 2, -108, 1, -116, 4, -108, 1, -116, 3, -108, 1, -116, 5, -108, 1, -116, 6, -108, 4, -100
  Data.b 1, -108, 58, 8, 0, 0, 60, 8, 0, 13, 107, 99, -86, -100, -91, -108, -103, -104, -111, -112, -116, -120, -119, -120
  Data.b 3, -124, 1, -116, 7, -124, 2, -116, 3, -108, 1, -100, 1, -108, 2, -100, 0, 3, -104, -100, -103, 3, 2, -100
  Data.b 1, -104, 9, -100, 1, -108, 16, -100, 1, -108, 10, -100, 4, -91, 1, 74, 1, 82, 58, 8, 0, 0, 60, 8
  Data.b 2, 107, 2, -91, 2, -100, 0, 12, -104, -103, -112, -111, -120, -119, -124, -116, -124, -119, -124, -120, 3, -124, 1, -116
  Data.b 1, -124, 4, -116, 3, -108, 2, -100, 1, -103, 2, -100, 1, -104, 39, -100, 1, -91, 1, -100, 3, -91, 2, 82
  Data.b 58, 8, 0, 0, 62, 8, 0, 11, 107, -100, -91, -96, -103, -104, -111, -112, -111, -120, -116, -119, 3, -124, 0, 8
  Data.b -116, -124, -116, -124, -116, -124, -116, -124, 2, -116, 0, 9, -108, -103, -104, -94, -91, -100, -87, -91, -86, -100, 3, -91
  Data.b 0, 7, -83, -91, -83, -91, -83, -91, -83, 0, 33, -91, 2, 82, 60, 8, 0, 0, 62, 8, 1, 107, 2, -91
  Data.b 0, 5, -94, -104, -103, -112, -108, -120, 2, -116, 0, 3, -119, -124, -120, -124, 2, -124, 1, -119, 2, -124, 6, -116
  Data.b 0, 5, -108, -104, -103, -96, -100, -100, 2, -91, 1, -83, 38, -91, 3, -83, 2, -91, 0, 3, -100, 82, 90, 0
  Data.b 60, 8, 0, 0, 65, 8, 1, 74, 2, 82, 0, 10, -111, -112, -108, -124, -120, -124, -119, -124, -120, -116, 6, -124
  Data.b 3, -116, 2, 74, 1, 82, 37, 90, 1, 99, 6, 90, 1, 82, 2, 74, 63, 8, 0, 0, 68, 8, 0, 3
  Data.b -108, -111, -112, 10, 3, -116, 1, -124, 2, -116, 1, -124, 2, -116, 1, -124, 3, -116, 3, -108, 113, 8, 0, 0
  Data.b 68, 8, 0, 3, -112, -108, -111, 10, 5, -116, 0, 3, -124, -116, -124, -124, 2, -116, 1, -124, 2, -116, 3, -108
  Data.b 113, 8, 0, 0, 68, 8, 1, -100, 4, -108, 1, -116, 1, -108, 3, -116, 1, -108, 1, -116, 2, -108, 1, -116
  Data.b 2, -108, 1, -100, 1, -108, 113, 8, 0, 0, 68, 8, 2, -91, 0, 3, -100, -108, -100, -108, 2, -108, 1, -100
  Data.b 3, -108, 1, -100, 2, -108, 5, -100, 113, 8, 0, 0, 68, 8, 1, -96, 1, -91, 2, -100, 1, -108, 1, -100
  Data.b 4, -108, 1, -100, 3, -108, 0, 3, -100, -108, -91, 8, 2, -100, 113, 8, 0, 0, 68, 8, 0, 3, -103, -108
  Data.b -86, -100, 2, -91, 1, -100, 2, -91, 0, 3, -100, -91, -100, 3, 2, -91, 0, 6, -100, -91, -83, -100, -91, -116
  Data.b 113, 8, 0, 0, 68, 8, 2, -108, 3, -91, 0, 6, -100, -91, -100, -91, -100, -91, 2, -100, 1, -91, 1, -83
  Data.b 3, -91, 1, -116, 113, 8, 0, 0, 68, 8, 2, 74, 1, -112, 11, -83, 0, 5, -91, -83, -116, -108, 66, -100
  Data.b 113, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0
  Data.b -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0
  Data.b -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0
  Data.b -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0
  Data.b -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0
  Data.b -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0
  Data.b -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 0, -56, 8, 0, 1
  
 Cams:
  Data.s "Cologne - DomCam (WDR.de)", "http://www.wdr.de/themen/global/webcams/domcam/domcam_live.jpg"
  Data.s "Berlin - Brandenburger Tor (ZDF.de)", "http://webcam.zdf.de/berlin/cam.jpg"
  Data.s "Hamburg - Town Hall (Slogantrend.de)", "http://www.slogantrend.de/images/big.jpg"
  Data.s "Munich - Marienplatz (Portalmuc.de)", "http://webcam.portalmuc.de/images/webcam/webcam_marienplatz.jpg"
  Data.s "Paris - La Tour Eiffel (Parislive.net)", "http://www.parislive.net/eiffelwebcam1.jpg?1259951852613"

  Data.s "-1", "-1"
EndDataSection

Re: WebCamAddict - Creative-Commons Source-Code

Posted: Tue Aug 10, 2010 11:07 pm
by Vera
W :shock: W

that is great ~ thank you very much :D

no question - runs on Linux (Suse 11.1) straight away 8)

~ the Dom of Cologne poped up highlighted in the dark and in Paris the sun is just about to set ~

regards ~ Vera

Re: WebCamAddict - Creative-Commons Source-Code

Posted: Wed Aug 11, 2010 3:49 pm
by jamirokwai
Vera wrote:W :shock: W

that is great ~ thank you very much :D

no question - runs on Linux (Suse 11.1) straight away 8)

~ the Dom of Cologne poped up highlighted in the dark and in Paris the sun is just about to set ~

regards ~ Vera
Hi Vera,

thanks for the flowers... Glad you like it. And thanks for the information about Linux!
Somebody at the German forum (X0r, I think) hinted me to not use a file as cache.
Probably, I am going to change this, when time permits... For now, I think it works. :)

Re: WebCamAddict - Creative-Commons Source-Code

Posted: Sat Aug 14, 2010 12:30 pm
by infratec
Hi,

I did something similar one year ago.
I published it in Tips & Tricks:

http://www.purebasic.fr/english/viewtop ... 12&t=38313

Ok, no popup menu. But you can make a desktop link and add your webcam page
as parameter.

I done it, because someone want to great me on a specific webcam, but I had no time
to watch it the complete time.
So I wrote this part of software and saved all the images.

Bernd

Re: WebCamAddict - Creative-Commons Source-Code

Posted: Sat Aug 14, 2010 1:18 pm
by jamirokwai
infratec wrote:Hi,

I did something similar one year ago.
I published it in Tips & Tricks:

Bernd
Hi Bernd,

for every task, there are different approaches ;-)

Re: WebCamAddict - Creative-Commons Source-Code

Posted: Tue Jan 11, 2011 11:15 am
by beo6
haha. nice. i did something like that too.

http://sascha.loeffler.gs/downloads/webcamget20.php

the preview image should be loaded right into memory without writing to disk in windows.
On other Systems i still have no good solution.

might release the source code too but it is not really cleaned.

Re: WebCamAddict - Creative-Commons Source-Code

Posted: Thu Jan 13, 2011 1:32 pm
by beo6
so. Here is the PB source-code in my subversion repository:

http://svn.loeffler.gs/webcamget/trunk/

empty username and password should work.
else try username "gast"

and sorry for the German comments in the code.

Maybe someone can find some useful function in the code or something else.