Code : Tout sélectionner
;____________________________________________________________________________
;¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
; Alphablending sous XP
; Auteur : Ollivier
; Version PB : 4.30
;____________________________________________________________________________
;¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
;{ En-tête }
;{ Déclarations nécessaires }
Declare.L CreateAlphaImage(W.L, H.L)
;}
;{ Macros }
Macro Argb(A, R, G, B)
((((A << 24) + (R << 16) ) + (G << 8) ) + B)
EndMacro
Macro DrawLocate(x, y, p)
p + (8 + (((y * PeekL(p) ) + x) * 4) )
EndMacro
;}
;{ Structures }
Structure APIX ; Cf Procédures >> Alphablending
Alpha.B
Red.B
Green.B
Blue.B
EndStructure
Structure LW ; Cf Procédures >> Alphablending >> Layered Window
WindowID.L ; Handle du DC de la fenêtre translucide (WindowID)
*ptWnd ;#Pointe vers une structure POINT (Position de la fenêtre, 0 = inchangée)
*szWnd ;#Pointe vers une structure SIZE (Taille de la fenêtre, 0 = inchangée)
hdcAIm.L ; Handle du DC source (Image Alpha)
*ptAIm ;#Pointe vers une structure POINT
crKey.L ; Couleur clé (transparence)
*Blend ;#Pointe vers la structure BLENDFUNCTION (fBlend plus bas)
*AImArea ;#Pointe vers 1 struc RECT spécifiant la zone à copier depuis le DC source
X.L ; Coordonnées X de la fenêtre
Y.L ; Coordonnées Y de la fenêtre
W.L ; Largeur de la fenêtre
H.L ; Hauteur de la fenêtre
XA.L ; Coordonnées X dans l'image
YA.L ; Coordonnées Y dans l'image
fBlend.L ; Fonction Blend (toujours $1FF0000)
X1.L ; Vista
Y1.L ; Vista
X2.L ; Vista
Y2.L ; Vista
Window.L ; n° de fenêtre
ImageID.L ; ID de l'image
VX.F
VY.F
AA.F
V.F
Flip.L
EndStructure
Structure StringAreaStruc ; Cf Procédures >> Gestion des structures
AreaStringQty.L
AreaOffset.L
EndStructure
;}
;{ Procédures }
;{ Maths }
Procedure.L ValHex(H.S)
Protected V.L
H = UCase(H)
a = Asc( Left(H, 1) ) - 48: If a > 16: a - 7: EndIf
b = Asc(Right(H, 1) ) - 48: If b > 16: b - 7: EndIf
V = 16 * a + b
ProcedureReturn V
EndProcedure
;}
;{ Alphablending }
;{ Image Alpha }
Procedure.L AlphaTest()
Protected Ch.S
*x = AllocateMemory(7820)
*Adr = *x
Restore Bulle
Repeat
Read.S Ch
For i = 1 To Len(Ch) Step 2
PokeB(*Adr, ValHex(Mid(Ch, i, 2) ) )
*Adr + 1
Next
Until Len(Ch) < 92
*y = AllocateMemory(13000)
UnpackMemory(*x, *y)
CatchImage(0, *y)
W = ImageWidth(0)
H = ImageHeight(0)
*Alpha = CreateAlphaImage(W, H)
*Adr = DrawLocate(0, 0, *Alpha)
StartDrawing(ImageOutput(0) )
For y = 0 To H - 1
For x = 0 To W - 1
*Adr = DrawLocate(x, y, *Alpha)
c = Point(x, y)
If c = 0
PokeL(*Adr, Argb(0, 1, 1, 1) )
Else
r.L = (c & $FF)
g.L = (c & $FF00) >> 8
b.L = (c & $FF0000) >> 16
dx.F = x - (W / 2)
dy.F = y - (H / 2)
Dist.F = Sqr(dx*dx + dy*dy)
Alpha.F = 2 * Dist / W
If Dist > ((W / 2) - 2)
Alpha / (Pow(2, (Dist - (W/2) ) + 2) )
Alpha = 0
r = 0
g = 0
b = 0
EndIf
A.L = Alpha * 255
If r > A: R = A: EndIf
If g > A: g = A: EndIf
If b > A: b = A: EndIf
PokeL(*Adr, Argb(A, r, g, b) )
EndIf
Next
Next
StopDrawing()
ProcedureReturn *Alpha
EndProcedure
Procedure.L CatchAlphaImage(*lpvBits)
;____________________________________________________________________________
;¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
; Crée une image Alpha de 32 bits de profondeur à partir d'une zone mémoire
; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
; Entrée Adresse pointant sur l'image
; ¯¯¯¯¯¯
; Sortie Retourne le handle de l'image (= ImageID)
; ¯¯¯¯¯¯
; Remarque La zone mémoire doit posséder une en-tête dont la structure est
; ¯¯¯¯¯¯¯¯ comme suit:
; ___________________________
; | $0 | Largeur de l'image |
; | $4 | Hauteur de l'image |
; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
;____________________________________________________________________________
;¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Protected nWidth.L = PeekL(*lpvBits)
Protected nHeight.L = PeekL(*lpvBits + 4)
Protected AlphaImage.L = CreateBitmap_(nWidth, nHeight, 1, 32, *lpvBits + 8)
ProcedureReturn AlphaImage
EndProcedure
Procedure.L CreateAlphaImage(W.L, H.L)
;____________________________________________________________________________
;¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
; Crée une zone mémoire pour l'édition d'une image Alpha
; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
; Entrées W (LONG) Largeur de l'image
; ¯¯¯¯¯¯¯ H (LONG) Hauteur de l'image
;
; Sortie Retourne l'adresse pointant sur l'image
; ¯¯¯¯¯¯
; Remarque L'image possède une en-tête dont la structure est comme suit:
; ¯¯¯¯¯¯¯¯ ___________________________
; | $0 | Largeur de l'image |
; | $4 | Hauteur de l'image |
; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
;____________________________________________________________________________
;¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
*Alpha = AllocateMemory(((W * H) << 2) + 8)
PokeL(*Alpha, W)
PokeL(*Alpha + 4, H)
ProcedureReturn *Alpha
EndProcedure
;}
;{ LayeredWindow }
Procedure CloseLW(*LW.LW)
With *LW
CloseWindow(\Window)
EndWith
EndProcedure
Procedure HideLW(*LW.LW, Stat.L)
With *LW
; \Flip = 1 - Stat
HideWindow(\Window, Stat)
EndWith
EndProcedure
Procedure LayeredWindow(Window.L, Stat.L)
Protected NewFlag.L = GetWindowLong_(WindowID(Window), #GWL_EXSTYLE) | (#WS_EX_LAYERED * Stat)
SetWindowLong_(WindowID(Window), #GWL_EXSTYLE, NewFlag)
EndProcedure
Procedure MoveLW(Window.L, *Coord.POINT)
Static OldCoord.POINT
With *Coord
ResizeWindow(Window, \X, \Y, #PB_Ignore, #PB_Ignore)
EndWith
EndProcedure
Procedure OpenLW(*LW.LW, X, Y, ImageID)
Protected Bmp.BITMAP
Protected PosiSrc.POINT
With *LW
\ImageID = ImageID
GetObject_(\ImageID, SizeOf(BITMAP), @Bmp)
\W = Bmp\BmWidth
\H = Bmp\BmHeight
\Window = OpenWindow(-1, X, Y, W, H, "", $90000000)
\WindowID = WindowID(\Window)
If \Window
StickyWindow(\Window, 1)
LayeredWindow(\Window, 1)
\hdcAIm = CreateCompatibleDC_(StartDrawing(WindowOutput(\Window) ) )
SelectObject_(\hdcAIm, \ImageID)
Blend.L = $1FF0000
Result.L = UpdateLayeredWindow_(\WindowID, 0, 0, @\W, \HdcAIm, PosiSrc, 0, @Blend, 2)
StopDrawing()
DeleteDC_(\hdcAIm)
HideWindow(\Window, 0)
EndIf
If Result = 0: CloseWindow(\Window): EndIf
EndWith
ProcedureReturn Result
EndProcedure
;}
;}
;}
;}
QM = 8
Q = QM * 2
*AlphaTest = AlphaTest()
ExamineDesktops()
AlphaTest.L = CatchAlphaImage(*AlphaTest)
Dim TestLW.LW(Q - 1)
Dim Flip(Q - 1)
For i = 0 To Q - 1
With TestLW(i)
\ImageID = AlphaTest
\VX = DesktopWidth(0) / 2 + Random(100)
\VY = DesktopHeight(0) / 2 + Random(100)
OpenLW(TestLW(i), \VX, \VY, AlphaTest)
SetTimer_(WindowID(\Window), 0, 1, 0)
HideLW(TestLW(i), 1)
EndWith
Next
For i = 0 To QM - 1
With TestLW(i)
HideLW(TestLW(i), 0)
EndWith
Next
Repeat
WEvent = WaitWindowEvent()
Select WEvent
Case #WM_CLOSE, #WM_KEYDOWN
Break
Case #WM_RBUTTONDOWN
Quit = 1
Case #WM_RBUTTONUP
If Quit = 1
Quit = 2
EndIf
EndSelect
EWindow = EventWindow()
For i = 0 To QM - 1
With TestLW(i)
If \Window = EWindow
Select WEvent
Case #WM_LBUTTONDOWN
SendMessage_(\WindowID, #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
\VX = WindowX(\Window)
\VY = WindowY(\Window)
\V / 2
Case #WM_TIMER
\AA = \AA + (Random(100) - Random(50) ) / 10000.0
\V + (Random(100) - 50) / 10000.0
\VX + Cos(\AA) * \V
\VY + Sin(\AA) * \V
ResizeWindow(\Window, \VX, \VY, #PB_Ignore, #PB_Ignore)
EndSelect
Break
EndIf
EndWith
Next
Until Quit = 2
For i = 0 To Q - 1
KillTimer_(WindowID(TestLW(i)\Window), 0)
CloseLW(TestLW(i) )
Next
DeleteObject_(AlphaTest)
FreeMemory(*AlphaTest)
End
DataSection
Bulle:
Data.S "4A43F6240000948C147FBFA9D0206914216912CA08B04840279C808F01C6AB0013C4287F0AF67967D4C53B23ED2A"
Data.S "6FEBAB6BAB5877A503A614C7F0C08B91A5AD5730B4A8DFD26A3533593C7B02AE04E5C9B673AED55391DEE5986CE1"
Data.S "D329D7D57C3B76C8B499EF5EDA789F535C3B36F4F0B2E3963EBEEB8153D01D3E71EAA2BB576E9724D75039C5839B"
Data.S "CD95DBAFEB96B5E95A9D42F644E6C9B976B35D533FE73E5A3472E87B8B8EBE1C97D2D495F68BEAEADE0EDD357373"
Data.S "CFD426BC29D929D47D4B38F6E9C58EFCFA656E598EA947F72E79DD29DFB3E02F1FEDECED19E0BEBCBCB9BA6C5FA7"
Data.S "B2D3E7E2EBD7FA28B34D43959A39EEC6A72CEF2DE3A59B177A267574CDDDE2DAB8BB57A7D06FC369A6F96CEC653A"
Data.S "05F645B507396C92B301AB972BA75C666F2E30CFF8963F773EA901B877A81BAFEE9DF5DDD2C3BAF2B9F8031F868B"
Data.S "12B5A437B46B62FE098FAE5D37E8E1BCEF46ED3C74E2A9A196BE7C75DCDBA9B7735BFB743BB79D3D18E6B2AB1ABA"
Data.S "F2D7CD19E0D2148DEBE8432101D6385FFD5C357224C0CF2E7EFC70DCC287978C6E099DB8F1E5BCFA8502B1AEBD93"
Data.S "7470F87E3ECDF877257BC37A12B59927B1655DAED72E06BC37E6DCA8C99E5DBDF1A342A0F08E53C40A78ED9FCEFB"
Data.S "BA7406D04D998EDB3AF563B92DA952C15E1B62BB92FDD045737DD12818EF7EFB4271EA1342D87F53C78778F0E3C5"
Data.S "0EBC929C577237370EAA69A23857AF919386C1DAE7B1AD9F63DA53F09997FE529E1DB3FC9B7AE8BF604B072DAFED"
Data.S "1A28F2CC695B951E3B71E97C419E327DB7765BBFDEBB71EFDF83372EBE3CA714A7983BE48187DCDB29BB4ACDFAF7"
Data.S "E914022C1D9DBB6A9386FE29D74D5FB0B36A9DE9C0B5775ACD41A22C8A7872E9FFBD1B39EEB96F5F0C79DB133573"
Data.S "F698D73DAD1ED8A1855FA27E971A2CFA32CDC0C597467A75F2CA83E7B68EF7D731E4AEBEBB7403DF5E811051D599"
Data.S "78F2C2377CFCF94C93974FBFD8A028EAB95B7E77D6D73FB6737ABAF76F27ED3CF2EC9E99D8F8E732595CFCE3A137"
Data.S "3E4EE694C7CAEBD29A642EFD74733FE79272D4977F8A585BF0E19F49F8DB9EB5EBF2D37FB67D31F0C0B0523BEBF4"
Data.S "3C4A97EACCB5FFE6CD7BFB62B1652F0FBEF96FEC676F99AEE3DDA35712288BF41F9EB876EED13B27F4F6F037577E"
Data.S "7E7D27BDBD8F5476D8D7B3B9B9383945F227F776FE388229CF0B652F6FE8596E57F773238F4B6700E170E2727103"
Data.S "F772BD9413776ED8A629CC2B45F7F1E7BF1100399DF6EEECC3A3FE7C8CF8D3A9F0EB4BE742755C1CE5AED4E8C034"
Data.S "81C27FF7316ADC0B0B17F2ECBE299F7E7E792FD4D13F39A234DB8E78F0C1DF3D3E7C94E75E79358A3C150E11F59D"
Data.S "D04F4BC7BC39E6E4832F5F4CEF6FE6816ED73765D5F30297126D7529DADED3E3279BBBF9DD5F6B1B8DBBEBEBB16D"
Data.S "6F6DDC1A70B3F1BF15E31E9ED837E0C835F7162639EC1941380349EAF3B6CE99F475ED2FC3DEF83860D5AA954D4A"
Data.S "87D6EB17F2F57C11EE6D1DEFE0CEBFA71F7DBBFAE393737F4F32C82D0451E2B12E490F03CDBF87BFE852DD2774E9"
Data.S "AC2539F3FC347F6CDCB3464EA929DAC2EDF21BDB77DA7775CD1171ADAF87948BD50B7435F0A99DA6DEFDD997D3B5"
Data.S "B5694A692B2583559385ED5A6FBCBA73EE9D98F731A032EF0DF1E3AC0C76E2A84D3A3DED993B9B0FDE32EBF077CB"
Data.S "3D5DDAD59E8664B75695077F57B0E2D0F5369D3D7C69D5BB9FAFA4F777F4079F9CFAA68FF748A77CD44FD177BFBC"
Data.S "DB15EEC729AD33147975D6D96C7CA2F999858812FF468AA59C33314951F26D90312AE62DDC1A29BAB1ED8D14938B"
Data.S "7920B74BC71AEBA60939913B392555CD9AA4061BBA76D76C4BC34D5BAF6AB87B2B9667C4A8CC37CEBB787D57DF2C"
Data.S "0783EEAEF1994593A35DB26AB69DED365D6A5C37A08A65EBC1B021B19E5839F6A7774D9179F7C3C36EED134A9EB9"
Data.S "47FCD57BB76E7A7AF2D893BCD29D6FF7FD1D0D05B4AF5B1EAE71F2C2B79D36FEF6B539BEB192968C293EED71F06E"
Data.S "B223E29DF6B5C5B6D2AEBEC88D68555FD41F2F146DA7E4DAC275CDD2D0BEB161695A987659677D7C73EBB2959B96"
Data.S "3DB7E4D7B909C73CDB77957F5C03E70EE2B5F2AB755B2DFE336AB3C77366D58974C7BD512D73CAE7DD81FEB8B979"
Data.S "DD471B8F5E3D6DECC1AF0F3E3775F1AF298F7E1E9BD78EA8B5EFDCA5D97B6328F4CC6DEB461E1E36376CE1A0E474"
Data.S "473F3C5CECE57E813F654C4EEF9E3EA97637D91CBDD2EA7A64D651538BAC14A7A529AA6453D235BD9278AAA95F4A"
Data.S "E975354D40CFB2BE9DA6712F618A56BEA5FC3AED31A06DE7F8E3D2BA2BE7BC5AB4974B64DF29C52DAA7CEAD9C69D"
Data.S "1E2BC3A2D99345B4327397AE5DAAB52746DBE214BBBFC06D3A649F1A7D7BDF55732735462DE9A8E1CD89EFEC188E"
Data.S "BA0D9DFAE7E0E69DE5E5735BB3C57BEBF72D9DBDF1B6969D09DE35B1DFF2769A2759DD41D3C46A5BE9944B5B157D"
Data.S "1269A09F4D16E97333C90178662E4941B9935234B3EC4AA2A15D9EB974F4D341AD962EC5E9580266DD355FC7B2DF"
Data.S "467C19B78747DEF4F6F1D0B09E7B39678FBF04B7EDF4AB6D36FD3E35B3B2C35F6B876A9E905927BF5CF0EEE8FF2E"
Data.S "99B2F3ED5B5F3CDD7BE6AA956FA7E46137EE1B3B6FE16F9D41AEF1A9874BCE3EF672C4D3DF8E975F236CBC2E66E7"
Data.S "779F552C6EEDAC7D8A6DCD34CFABAB85B6B9D47427B7B4708BE4913FE44EC8944CB9D9382AA6D45C332922694566"
Data.S "E291B9A426F33DAFCCC969E89A4272254DF4D9B5A7A9B6CBD7752E830FD33DB2E1A135EBDB937EBC421C7D41814A"
Data.S "AB7D9B7F7E346DF8D1172EDE54DCA890D8B5544DFEEDFD6ED0B993636F7979751E9EB239D1BF2BCEE8E617C46F5D"
Data.S "FCFAE6BB615BE03BB96A3BE7DB68970F9DBBB06EA5798F496FD727EE62E29723F6EFD3AEB64A9F5B3F4C9C13AAE7"
Data.S "906716CD33B14A9C792206D9283A2F1F3C4CE95C6B16EEDCC04CC21E3B2E1F3B32C99891626E69B352CE3A81CDFA"
Data.S "39A9B76A4F6BBDD7AE6BAA054736E63564CEBBA25B349BC73E9E3977D7CA1767DF1A9929F5619A2E6BFC09FBA876"
Data.S "7AE5CFA986CADC7BD8C59B6661EEE137C9FBDCBABB03666E37F4C7C8733E9E5A16CCBC71E9E79CD6091D3D3147EC"
Data.S "F942E5832F33EF6FBE1FCEBDBDB6542DAFC11AE958D537EBB40A6865994BDA64CC52C69983455E18A0B04BC11863"
Data.S "A54438E364C078C0BC18A6C0922F1377F2A626645AFED93356CF508F357BBA2CC07E57D71D19F2EBB2417F6E13E0"
Data.S "96D2D42935E12A3C6BE3FEDD1E2B247BEEA7CC1A9D74A21BABD45E7DB2D04C92F756969B7FBF04F575F1744A62CF"
Data.S "358E9D2DBCB9A3CFAD3AB6F2AF654FF6B7F3EFC4F04A2EFE3F761953B06EB987EAC5DD1691B55CD4AEB3326415B5"
Data.S "D3B09F7E0EBA6551CC3231A7F0239DB48C33F9B49686949A8B2B103700C6EC28EE508E2C196F6F47665F25BDF6F2"
Data.S "7939ECB138692E4E79A94FC8437F6D7AADEBB85C0C7EFD979B2DABFEBBF4E7D566F566ED2FC1A583F09EDCD93AFD"
Data.S "DA9DC26E4F3AD95494C3D2901F5BCE99B872E16D0B9FF8F114EC957EFD30AD16EF68DADBDFD5D829C2947D18F56B"
Data.S "BDF15A96E0E26E2DDDFBBBADB17671A31256EEEDC8E6CA96655757A5D1CC69A7EE2935B4C7328F6AA99824CEBAA4"
Data.S "748C45937E3727FF36409380268BA4E06A82C306B0A9FB18F3306C9C9267A29577E61B15B4D47DCDAA26DA715DD7"
Data.S "5B7B56FCD317D49BBEBA76ECD74DF31671F49FE04E4E7EB6C1AED9C36ACCBA16E35F4B0DD4A699E1C53C7A6AE33E"
Data.S "CE11F8D7D9C39FEED73BE1CDA73E18CA7954074E1D9C66D4945745AC3A6FB27A6DAF3EAD2E6F1B9B2B5C7E606B6D"
Data.S "54CD52B01AEAD9D63F1FED6A29E69E53FA8C4C33536A8853618B2A07E45B1125927D2792AB3500C5C0AC6B96B1A3"
Data.S "5ACA26FE08134EC627671D5A1967C54E403FB5DDAFA5AB3EEC164C5199073AF4EAD17B979EDD8A74D0BB0D1C3CE6"
Data.S "0FAA7D4FD417E376C9ECD0C308EA6761B31EEE9B76DCD1A70FDFFBB9EFDD4F6FA9C6B95C330D7E3CECB4B4875833"
Data.S "ED54CE100E6D395DEB96AC6DAB6A8A754DF54E29A79FDA35032823DD4A59649F513D5C1C93E81CA14EE645F215D2"
Data.S "62C8BE110018A017248EDCDB6800CBD5F124E012838592920F63644966628E30DE545C92D2A1936BDEDA94B3D370"
Data.S "B18A9B5A30DA90555BE616CFAC3912DD16D999B7F3CEDFCC3E55F7AD93732CFEB2F096107BF5D65FB112AE9AFA72"
Data.S "DD914F7F76EFC12FE57EBDF3A1D095A3B7528EF08B4E0B5BDEC47F27E94AB7335F4F3D9BEB6CA75F6255AD74472F"
Data.S "A48D0529D7D1ED4CF42AA191773A49D3F04B1A59021620F57A68D023DE875C18E0D221F342D48424BA6A28C2454D"
Data.S "CB80558481319AFC816BC16C8CAA27AA9265E26474F351A1AA91C6DA039F450D8E21BDAABAB36BD1758FBEBDF772"
Data.S "CFBD6CFBFAC7A88F678FFA4EF1F5094357B673172E604EE9FE5CDBA35F6F253BF0EAE52EBD7289568C8BB653E2BE"
Data.S "5F66FB3ADBBE801DADAA5ACB753553A4A5B6366A67D4D34334E513FAA79D1900D95332CE2F6F206EE9C588F28A9C"
Data.S "06A478D761471EF736E4948F97878C6ABC6A14C036606451948BD8E24AC3176F849967E3913516AD2C5355A89E8D"
Data.S "96ABD5F46A84CFA619532E83C966D7A572CFBCA5E0D4A777169E9D31D0C4C9972398F7FABC6499F7B81F23B61C38"
Data.S "79E8B55307EFEC13DED52B65B9E37D54BAC7A8A312BF620F5BD6567B1730CB50C7362A1A29564A4F037D3369E89D"
Data.S "A634F58CC934976E330B65D052030C9223051CCAF8342CEDDF0C10D551131164828B86F27B2786A423F934915F1B"
Data.S "B08A4DB045CA45656150CB1833317A3EE6D7A34A33638DB5AAE80243793D782F85D169C514CC769D5935DBB843C7"
Data.S "7285B8E733DECDDC76D1BFB15B7DE98D032F47ECF360A13833E70D1A5338C9C7E706D5ACF1C4D7A306F7560A1DDE"
Data.S "FA28B6A83F4B0B98F061610BABA5D4AAE3A77932D55CF34DA3A1BA9966A6432FCB44B16663952D9604DC9AC4907C"
Data.S "03886A72682FA35AABD4143532A6518DCEC71A652628654F92F514345377E54A2DEABC64EB2D9DB869C5A337C435"
Data.S "E68BAE7D3BB4D750847FEA8B7D273E7D74EF0CAAA92E12E5506769CF81ABFF4E3CF7760F03241D3A1356CD002F6C"
Data.S "8F526065B3D4DFA70F6E5B1ADAB97F0362A0A84AF432F5548E7EF6C9969901D52BC7BC70E5E2933FE50E65F1228A"
Data.S "A239E6AAF135BDAE1AA80D51AB8224D9974BA15A035824050A6CCE6844B1CB247542A9A399B71AD635D37ED3B2FE"
Data.S "DA71DCD54783EE7BB3E9D48B936E0D5BF0D0B2731BB986B67D475FDC5418E7A38CDD31F1D8C02E85C251C3663EB9"
Data.S "73F01316A4660E8C1D395A33A5DC85D78A7EBA9F318B2DDDC19E82351CF7D2AA8CA9F6B954333DDFB48015AA9947"
Data.S "A7DC19995E8C2705BC4BF1638E762576A247D229A45E066C58921A0A1753F6D517CA49BE72AF45937C1AB146A22E"
Data.S "64580DF276F83BB124858333AEFCEBF0C696E419991831B236B3F6D2ADA67BBBC2567863F7953A30E9C67E6DE93C"
Data.S "D5B8377FB4EDDF9B6BE67D3C5F3CA292EBE2D539FF8C1CFCB14E2733DDBA72E9834F016774E8E585BD786E89B3D7"
Data.S "2E7CA8F3D55187E53DFA5FBAA22B7D3BF7F0AC630DD7B6D42AE34E0828A8AA79B43354D3D22C752D06687C51245F"
Data.S "8135AA14ED6FC694809B2857A174C0901D5B824F35195B6A53E8E5928346FD3CD0D4B0AA38AFEEB127FFA52DB3E9"
Data.S "C3A78B962DF969D6BB3D9B510D787B4F6FFCB6F1EA9EF965031E875D3A79EBD38B49BB73BEF79B3F37AF3B70DED3"
Data.S "4A81DD182FE594CE64B0BE3DF63BF77416D60B3156C561D16D5A396A9C483B0FAFCBD0E6A15A8636AF5A09783C45"
Data.S "32306A4D148921B03C9A5114891F2349BF346F3409388B3D2F0953F2499B695966A9D5429DA25B1B6AD77E85876D"
Data.S "98F0EFB83723B6CD74EBC7AB93C69D39A831BD47C92F98E170E59B31063E3D72656FAE8BE39E37DFCDF5A8E4B63B"
Data.S "FB057B39FADDFF404F5FEBBC87536BBD75E64F9F872E186C70CDFFC675DD2B92B992B1D9B58146BEBA15D1CC469B"
Data.S "2C8A99E7EC8865D9948555EA2EA35A468A82B8B15FA6350BC40EB256DE4B472F12F86240E561450DCA5C3C924B9D"
Data.S "8C51BE39F4B2D13C9172DABA28546E6D4FF5D7AF6FB2073F5E3E37E6C8C4B8264D799D45D7B66FD314DE26BEFAF5"
Data.S "E1CA4FF72CBCF9E79BDE4CB7F7D9CEAF64CE668FC54C3528DBBA17B35FFBF979D489475FE9EA9BE539EE65F52D5B"
Data.S "75FE36E3B0C66E0E4C775FC378EF25ECB66DA13E9678D551CA4C7AB9899FCBBAD01C1E5726C68C6A2E53FB141F51"
Data.S "F26BA959044941896042A04C3AC5F164056C3349F926445443FB4C8AEBE9A3528475FD1467DFDEAE9CAE5FDE9F0F"
Data.S "766C3472C99C4DF92D1ABD9B22794F80931EEBD8C155FCE2FBB83CBAA7D2914BDF5CB48B6AACC6B827779A18694E"
Data.S "AD6FC7B5DEF6F4EDB708978E1A047253B3F98DBE9157F60A2EEEC663EB055D9898BE8B01B62CE1BBAB5A7D8C3251"
Data.S "A59442C13954F6AC4CD348988E5F539429D44559EF941255026CD84880A23021FCD58912D552452DBBCCF4A9E79E"
Data.S "A5721D6DD915B2AC7B7BECDA06FE5DA1E1C7C4F3A7CC5979E9A55447D71DD8AFBE9AB66EC759972E6D4A6CD326BE"
Data.S "5C76D3CAA1BFFEB9F8F46E5D7389F3D6C0765E0DED08FA8315A86947571E4135EAE2B874DDDA2F7EEE3AE5B2CD41"
Data.S "DB3125794927B6BBC098C37DAD45305F7AAD3CB74C5197C3A9A7D1C972CC9F1A1A3E4993E659215943512C6A19A0"
Data.S "184560CCC9BE544CD2E5A4955FEA9A35F44FAD15517BBAD5CA8D4CDDDCBD2B8B8D0339E4CBCB4BD73CDA6EECA65D"
Data.S "E96D5DF6363E615ED6CE71EBB0FAF9ED9B532C187974D8C51472506D3A4D14533D519DBCD526D37D4665B615FD77"
Data.S "66D4B7CE8115DEDFA50FFEFA3874CB43476E36B9E5B3B6EB796C29804B33B1E0C290CC97AE6552CE92CD29C951A9"
Data.S "048AD9F6555A2ECB7049988A84EB8852524F4BE359AD0630A349EC3993844958E5983C192DFD73E9B7B4A776B717"
Data.S "78D99CBC020C949D177665CED22B0F8DDA7AECAA655F0E7E36EF13BFFC56F3E1D185B61E1CB862537CCBDDBAA57F"
Data.S "E4A21AF4AA3940E9C78CA20EC3684913623496ABE6BCAC2587AF5AF8C94F7467F8F5E2C98B5EED7B19C77D9BDC4E"
Data.S "63B52E8C5A31C4823B2371E00BE68C772E8791C38A85B472D3A87B62FE49E6CECB3887CBF2D81A531276925EBAC1"
Data.S "7024AB567548A1FBC0104DCA33AF8B94C3FC2999EAA14F379D9D752CC1BBD7D6ECB8785E91332B3FF54A68E8D4B2"
Data.S "E3857344714779DFC5C59D62BCF99477470EB74B9E4FDDD33BBDB864797200C6FAC6A34344A13673E5A58B3ECE3D"
Data.S "16CFD6A1CA2A50C48717A5E54EF7EAE3CCCFA32E930178D970E4DB95860E7B77F1722E43F1DEE68F4D513CDB7866"
Data.S "4C516624179EDAC881F3756B65C98D32B56C4ACFA199D1EBA64F9FB43C0694903017E7B0C79764399823356A0063"
Data.S "72479981A866800D4E0D5DB355B1AC87677B37B7E47D0D071C5D7164A49D5BEE6AD8D72BAFBDFB3BF2BC858B3AFA"
Data.S "CA715C57AF1CD3B1AFAF7396F4EFC5B8A53A775EDCFA9E1FB744E8CB717775F38F6A7A77510DF0F08F46C9326FC5"
Data.S "5A83E6D30E3EB4E55B5392679EA8EAEE8EFC7978CD99BE898F197F1FEFC6842F39F6A5F0AEEC713C0DB04A2D59B2"
Data.S "F73235A365BBA69EA95BE7504D51C7043A99B5953B25C99A905D9853948B92013A9A56F9B353D43995721B1BE955"
Data.S "7573633517B171B4195766EEED1C51D28D9D34EBC8CBDFDEC7FA7BE23EBB07FE5DFD87C2F9BEBED2A4229E5225BB"
Data.S "F98CC13E7D3C4552A96EFB023D795937478E77CE00C725D6571B2CEAE7AA85E7D7970E69712BDD95E9A60E9DFEE9"
Data.S "D1C1870FF5E594E7E3FEDA38767C9D4E2B82933FD417CDB8060AF2E631E8CC05FE0DDD7863DB5EF239AAD6CF2B17"
Data.S "75DAE8E49B479CA23C534216A5014961C9F312B54CF14EA69B653E7A9574DC55CBC230F00ADD53667E5766D1D313"
Data.S "2FED3A3BF2B2738F1F3FBA74F0FB8317443E7FF704C09EBE253DFAF3431E3C11570BFF3D8AD2BE9D02A979F736A5"
Data.S "76DBC576AE1CD155B345B97666E6AA391D2A62C4AF163F157A5873EE9661D25E1E379B83479F7B6FECD6AC19CDDB"
Data.S "87A75FFE7833F0C896AC69FD497742ABB566CCA6A75E1C79DBD27701050B5A6C585437571DD0A80426E50C12E1A4"
Data.S "74747CF37944DA68D6D26D532DBBF06FB2733B2E2E17E4CFCF0327DD1AFBF5B2757F8F1E7872C0C72F01FDFDFF97"
Data.S "607FC200CEFBF604BC853DFA1FBEB2FE8C179F49D7B79BB7F7E8D43BDBA2DC786B3F47AEEAB437CD0581D892927D"
Data.S "17E7F4BF5D92D733C68E5727478D3DF0E9E070539E7D3BEFBE1C68D7DB6BA7CCB8FAD991350F0DBBB267B4568D29"
Data.S "73DE88C6E2C9B32FBE4BD835D26CF5A62B3A6BDA5B414B0DF4EA67A6295A55637CBCB2AA2A56B55261E1C686DCAD"
Data.S "5FDD93F35D2CB574C598D7C6CE19EEE1E257E1A7ABBDF9F633E600A15A7C8A00F243E7BD042AB8DA7ACBA0BCFAF1"
Data.S "DB09B0D07C7A7AEA578E1CE399A2825FD91CE9BA776AEB94618D7A99A25C41D6EEF83656F35D0F3F9D7C70E427C8"
Data.S "9AEEEFF09E14E59D355FB5FBF2669CAE4D166362BFC6E7D1B94DB62C9AB76833EEE00D5F0A5B2D5FD9748B95EB7A"
Data.S "97AD6D5B5A0AD6B455F3FAAABFCAA5AD8B536AB97373BE8D958EAE58A767234FBEB6EFEEE00F574E3CD5D46DDF1E"
Data.S "535FFFEDEBEF130B7EFED53C92FBBC27C022BFDE3C016F273F11840DBFE07CC2BDF9A427D7BEA96F7C53BFB437AD"
Data.S "89B22EE2532E542B7C9624E2CF2C3B35F1B673BFF0DA31B577F28A74AB5ECD9D70CD9BAD2D370574DAF36C514297"
Data.S "F66DE09D537B35EFCC14CC696E1910B61887BFF32AEEE0CBDCC1F6EFC52DFC2298D28DCB353C33F4BE8EA8DECE98"
Data.S "A86B7FAFFA8A70F2BD7D6539C5DF776EFC7AF7DAB38F5F7FD4E46FF66CF4CFE7003460B96F3F818FF0EAD3B3BFBD"
Data.S "FC7B9EA96EA1D2BB3FBF180B77E76728C02954C6C84F83E56BAA48639EF5FBB65DC58F9B5FDDB975EFBF45D10E5E"
Data.S "5D5D822CA0A3AB2E1935F1CEC6E8CE9D57638ADFE59A27C7FDBCF16CB09D2FDE9935F3CEBC739A529F1326DDB4F3"
Data.S "C0A2029A02380BFEBCFCF6C5ACAF164F99F68F97F7F83774F4AE8FC1AE5EF3A787777BCDF6F35F1FAA3D7DFC0440"
Data.S "4F1AA0BEEDE577E6F5947BF5A79E9E3F59D8C9EB506C50B8EF97E57054F74CF56B3B388318E5EED5BBC9BA864F06"
Data.S "8BD4EBDBCC299E78A5BDC54D7F9E45387170B64EBBF6DBC651C37527F7E91D1BE37A63DE2C1774C9BB9BBD29174F"
Data.S "63CD74CA5FACDB7AB227A660C714A0FDEE8F291DFEDD736FCBC7931E5BBAF9D71E1F8B92DB3F078F7028EDE70F9F"
Data.S "BE78F2E7DF7FFF0CFEFDFD144B541EFE243EDEFCA4B2FB8447EFF70C0765B1AE7D3BA994174F0799FA7EFD0CBC51"
Data.S "751A3B8AC54BD594CC93ED4ADFBB7677E7852BCF3CBD74EE3CF8056373DB064FDF92D8CE566DD897739C356F8D79"
Data.S "6EBA9B935B2777CAF2ECFF9E99790650303787F3C53B33C0674A4F0AE045E56D4717073DF0EB28903EB9A2B46328"
Data.S "7DF8E3413FFFFF0C9CFB0E209FFDFCFDEA9B7F8FF5F4C75B29F792F8764B77EAFDBC467B6F9FF92E59639784A64E"
Data.S "BFABF91AE5AE73E1B27DEF463FDAF3E7F66BA70E9D3DA758A7B4DEE4A5238EBB7AF2BA6F170FB127BE2DD76D5738"
Data.S "9C3B6AE4A18F57BDB574F4ABC3A6AEDEF9DAD6D3F60E4ED47CBBE677937F6F4F7EF4F2F05FDFA39E1F9FB271B3C7"
Data.S "9C32D4E057F4AFA1A84707E6F34F6321EF9EA38FFF3DE0D55FBCE6C5E36AC3F75C24E051D0CF4BC6533654CCBF85"
Data.S "DBA4AF6962B388E9F73E7AF36AF7790BF8DCA78BE4B09B7343BCBC767E9C77A50CFF4D59482F3ED1CAB3BF9E3B14"
Data.S "79D8DF7D9D3DFAC0B9C77FFF3878E8F33B2FEB6F80EA7CFFD8D79FFFDF3BCED7A78C18C0AB513EECA1F5F1A1B45B"
Data.S "EFED29DD874F2101D267BEABC153DC5FF2E135EFFD463C7AFCE6327E0B4F9EBD3EA9592112E67ADD67D079BF4F5E"
Data.S "1CBCF8D8A39BBAFC0CF573793F7E776FDE9EF5E7C2C9720A66F83D93DB79AA5BDF1D2FDABF5FF6BE2BE6FF7E38F9"
Data.S "ABE7883AD511A79AFFFA7AFBF56B678F4BFEEEEDA7C100F7977F410FD3934D99A25C26D7CA5BC787BF4CA0B041D4"
Data.S "CE73608F3F357FBF7D621FDF3E23C5B47F4FF10FAAD6AF7CA9DFCD19B3DDB18803FFF6F9DFB9DE129FFC4169A7CF"
Data.S "F5E29B93B7794F7104BFCEDDDA8D4FA75B3ACC3FF5E1DDA59E43FCBB585138100F08245301C63F2F86A842FEE031"
Data.S "207C76F417E7ADBA790B17EF14CCF8F59AED9CF4D45B2A052CF986CE1D20A27F5DEB2F52954EED51A1FCBB66ACD8"
Data.S "F3ECC17FB90E3E3ADD734F3FFC94EAF56D7FFD73DDA690B7DD73834B843BF0F2B7EEFDB8E8D4BF3B1AA03A7837CB"
Data.S "CD4BF217E5E532DE7A72DEFCA29DDF9F9BE7A3E782F36B2AD6A329EAE4B3CC2706C6F1F5A7F7E4DB7DF3867A7BF8"
Data.S "F6ACF9FC8E2B9D2EBFDAB6AA9CB72E5DAF95C37EFD38FEE787C0FAAFF4A3B7F0E5FDDD73FDF04B7B9BCF2D5FE429"
Data.S "B7D3253C7ADE86C2FD3C5DB31B7BBE2F0C707EB8F6F4D714FFBEBB93BF787978F3C6523BCFDE9F9E229FF8E96FAF"
Data.S "245893EE7CF7B053DA3629D6A99AF56B55438B71B07D1972145EAA13C22357961F7C6BE8FAA7470EECF801A1FDF5"
Data.S "CBF94F91FEBFF3452DDF73FAEE9901A0C387C36FAF9DD22BEBAD032895F4407FEF3EC8A7C09F2FA1AF91D8FBDB1F"
Data.S "5FFCFDF97F425EF27B23278EEF5ABB9635762553C264CB7D60BA7E6D06FE3A72DBE8AFA71FDC7EF9F38BFF9794F8"
Data.S "C6295F6780E6F7B953EA21FBD929600003F48FC700ED4CD053FA49C03F032DDF2BF9BCFAECFACBBEDDDBD7AF650F"
Data.S "34BB3164C4AE164E8D64B9DA4AB5AC4983EF06FE5BF6E9D17B636F7E7DEEF6E42F5F83DFF7A7D0E6B3FD675435DF"
Data.S "FF33FEFCC6111C258AF9788317AFDAAA9157CBF7B1EC357582A5772144A92C52A918E995EA033CC3AA3CF52A5C9F"
Data.S "EBC615BCB061C08EB062C984BD7D19A08B5AB6966A77EA552BCDF2141163569108263C0BC277804500000020"
EndDataSection