Professor_Bernd Posted April 9, 2021 Author Share Posted April 9, 2021 9 hours ago, Werty said: Maybe something like this instead of text, still both the au3 and pspad logos. You are really good! I probably would have wasted a lot of time to realize in the end that text in an icon is no good. I love your icons! The only "problem" that remains is choosing between the two. With the first icon, I thought, "This is it!" With the second icon, I thought, "That's it, too!" ... Hmm, ... the second one would express the order in the name: PSPad=>4=>AutoIt3. But the first icon is probably better to recognize, if it is displayed very small in Explorer, for example. Wow, now I have not only 1 icon, but even 2! Thanks a lot for your good work! Link to comment Share on other sites More sharing options...
Professor_Bernd Posted April 9, 2021 Author Share Posted April 9, 2021 1 hour ago, Zedna said: Here is my old example with simple hyperlinks in About window Your code was one of the two I found, as described above. 👍 Here is your code and here is MrCreatoR's code. Both I found on last Sunday and gave both a "Like", because after long unsuccessful search in the German and in the English forum were these the only hits! Your and MrCreatoR's code example has brought me in the right direction as far as LinkLabels are concerned. Without your codes I would have searched for a long time to find an approach! Thanks a lot for your code! Link to comment Share on other sites More sharing options...
Popular Post UEZ Posted April 9, 2021 Popular Post Share Posted April 9, 2021 (edited) Here a fast hack: expandcollapse popup;Coded by UEZ build 2021-04-11 #include <GDIPlus.au3> #include <GuiConstantsEx.au3> #include <WindowsConstants.au3> _GDIPlus_Startup() Global $hGUI, $iFPS = 0, $iShowFPS = 0, $bExit AutoItSetOption("GUIOnEventMode", 1) Global $sText = _ "This is an About Window ²" & _ ;² is the marker for the column width which all lines below must follow "coded with Autoit using " & _ "GDI+ library to produce " & _ "this flying chars effect. " & _ "------------------------ " & _ "Greetings fly out to: " & _ "All Autoit users around " & _ "the world! " & _ " " & _ " " & _ "Coded by UEZ 2021 ;-) " & _ " " & _ " " & _ " " & _ "Press ESC to exit. " GDIPlus_About($sText) AutoItSetOption("GUIOnEventMode", 0) _GDIPlus_Shutdown() Func GDIPlus_About($sText, $iFontsize = 16, $dx = 35, $dy = 150, $iSpeed = 33, $sFont = "Courier New") Local Const $iW = 540, $iH = 500, $iWh = $iW / 2, $iHh = $iH / 2, $sTitle = "GDI+ About Window" Local Const $fPi = ACos(-1), $fRad = $fPi / 180, $fDeg = 180 / $fPi $bExit = False $hGUI = GUICreate($sTitle, $iW, $iH) ;, 0, 0, $WS_POPUP) GUISetState(@SW_SHOW, $hGUI) ;~ GUISetCursor(16, 1) ;create canvas elements Local Const $hDC = _WinAPI_GetDC($hGUI) Local Const $hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH) Local Const $hDC_backbuffer = _WinAPI_CreateCompatibleDC($hDC) Local Const $DC_obj = _WinAPI_SelectObject($hDC_backbuffer, $hHBitmap) Local Const $hCanvas = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer) _GDIPlus_GraphicsSetSmoothingMode($hCanvas, $GDIP_SMOOTHINGMODE_HIGHQUALITY) _GDIPlus_GraphicsSetPixelOffsetMode($hCanvas, $GDIP_PIXELOFFSETMODE_HIGHQUALITY) Local Const $hBrush_Clr = _GDIPlus_HatchBrushCreate(18, 0xF0B0B0E0, 0xF0F0F0FF), _ $hBrush_FPS = _GDIPlus_BrushCreateSolid(0xF0808080), _ $hFormat_FPS = _GDIPlus_StringFormatCreate(), _ $hFamily_FPS = _GDIPlus_FontFamilyCreate("Arial"), _ $hFont_FPS = _GDIPlus_FontCreate($hFamily_FPS, 8), _ $tLayout_FPS = _GDIPlus_RectFCreate(0, 0, 60, 16) $iFPS = 0 GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit_About") Local $iLen = StringLen($sText), $iColums = StringInStr($sText, "²"), $i, $u, $s, $r, $iChar_Space, $x, $y, $t = 0,$f, $b = 0, $a = 255, $iCharCol = 0x101030 $sText = StringReplace($sText, "²", " ") Local $aChars = StringSplit($sText, "", 2) Local $hFormat_char = _GDIPlus_StringFormatCreate(), $hFamily_char = _GDIPlus_FontFamilyCreate($sFont), $hFont_char = _GDIPlus_FontCreate($hFamily_char, $iFontsize, 1), _ $tLayout_char = _GDIPlus_RectFCreate(), $hBrush_char = _GDIPlus_BrushCreateSolid(0xFF000000 + $iCharCol), _ $hImage_logo = _GDIPlus_BitmapCreateFromMemory(_Logo()) AdlibRegister("CalcFPS", 1000) Do DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush_Clr, "float", 0, "float", 112, "float", $iW, "float", $iH - 112) ;erase canvas background _GDIPlus_GraphicsDrawImageRect($hCanvas, $hImage_logo, 0, 0, 540, 112) $rr = 0 For $i = 0 To UBound($aChars) - 1 If $aChars[$i] <> " " Then $f = $t - $i / $iSpeed $s = $f > 2 ? 2 : $f $s = $s > 0 ? $s : 0 $r = (2 - $s) * $iColums * $iColums $iChar_Space = $s / 3 * $iColums $rr +=$r $tLayout_char.x = $dx + $r / 2 * Sin($t + $i) + Mod($i, $iColums) * $iChar_Space $tLayout_char.y = $dy + $r / 3 * Cos($t + $i) + Int($i / $iColums) * $iChar_Space ;* 1.2 _GDIPlus_GraphicsDrawStringEx($hCanvas, $aChars[$i], $hFont_char, $tLayout_char, $hFormat_char, $hBrush_char) EndIf Next $t += 0.04 _GDIPlus_GraphicsDrawStringEx($hCanvas, "FPS: " & $iShowFPS, $hFont_FPS, $tLayout_FPS, $hFormat_FPS, $hBrush_FPS) ;draw background message text _WinAPI_BitBlt($hDC, 0, 0, $iW, $iH, $hDC_backbuffer, 0, 0, $SRCCOPY) ;blit drawn bitmap to GUI $iFPS += 1 If $bExit Then ExitLoop If $r = 0 Then $b = 1 If $b Then $a -= 2 _GDIPlus_BrushSetSolidColor($hBrush_char, BitShift($a, -24) + $iCharCol) If $a <= 0 Then $b = 0 $a = 255 _GDIPlus_BrushSetSolidColor($hBrush_char, BitShift($a, -24) + $iCharCol) $t = 0 EndIf EndIf Until Not Sleep(10) AdlibUnRegister("CalcFPS") ;release resources _GDIPlus_FontDispose($hFont_char) _GDIPlus_FontFamilyDispose($hFamily_char) _GDIPlus_StringFormatDispose($hFormat_char) _GDIPlus_BrushDispose($hBrush_char) _GDIPlus_ImageDispose($hImage_logo) _GDIPlus_FontDispose($hFont_FPS) _GDIPlus_FontFamilyDispose($hFamily_FPS) _GDIPlus_StringFormatDispose($hFormat_FPS) _GDIPlus_BrushDispose($hBrush_Clr) _GDIPlus_BrushDispose($hBrush_FPS) _GDIPlus_GraphicsDispose($hCanvas) _WinAPI_SelectObject($hDC_backbuffer, $DC_obj) _WinAPI_DeleteDC($hDC_backbuffer) _WinAPI_DeleteObject($hHBitmap) _WinAPI_ReleaseDC($hGUI, $hDC) GUIDelete($hGUI) EndFunc ;==>GDIPlus_About Func _Exit_About() $bExit = True EndFunc ;==>_Exit_About Func CalcFPS() ;display FPS $iShowFPS = $iFPS $iFPS = 0 EndFunc ;==>CalcFPS ;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2020-06-05 Func _Logo($bSaveBinary = False, $sSavePath = @ScriptDir) Local $Logo $Logo &= 'iVBORw0KGgoAAAANSUhEUgAAAhwAAABwCAIAAADaNT4jAACVR0lEQVR4XuzVPwqCcBjH4Y7aFDRFW+BQU3ODQ0SrkycQIxAPUeIh/Dcq/uoM0hI8z/x93/WzCj8CAH8TFQBEBQBRAQBRAUBUABAVABAVAEQFAFEBQFQAQFQAEBUARAUARAUAUQFAVAAQFQAQFQBEBQBRAQBRgXkMYVpwB4gKzH3XVO9XlhfxLd1H8Xp72uzOh+Plek8ez7Kuq6Fvv7MFr4EP+2b2W0eW1/Gz1XrXxfa1b2zHSxzbSZylt4H00CiA2KZpGiSEQEItgQQSmn+Al3nmBcQD4hWEYCTEMmLUTT/RTZOehsl0nMWO7Xi53nKv1+TuS92qcw6/qkpfNUmmY9PpRD2cj6/tU6eqzr0PdfS53/qdYugnG4VC8kqlXCzu5jfuLa8VVjb2t/eaD2rIERFJbEINTHJIIrHhiut7BG2ZpJGJoZNDfWMnohNjudGRwdxAfzKZQJihp6FQKLCfVn6iUCiJuA9KJbDI6vr2Sr64tnV/e7deqiOHW4hGqGYzTSOEYAyHSvjtzgWEwxmBuBDcc7nbRLxpkFYqIgezkbHhzMTYwKmxoRO5gXQ6RaiOniNHnKcYY/RlUCiUVBQKt9O+f//+veL+6trGSn4nf69U3G+Wm6QjbMzAIhZjoUUChRz9gsc4cAwWgWM8tyW9ho5byag80WuOB44ZG8kNDeYymQzTzK9OJBjj45541NMUCiUVhaLZqO3t729tF1fz91Y39jcKpf2SV+9YLmeY2WARShklBB3NIsdyDLyEEJ7ncbcNjmGoGbNEf1obGUycHh2YODV8cniwpydjGNb/WSRAaATgs07UarcbjUa73W614NWCDxAeTAhhjJmmaVlWJGJblm2aOv7fo8E43TG7lkIKhZKKQpHPr/35X/zV8rZTaUc6KBrczrIo0yllBCPUvaP1PMChZoSQnHue6wivRWTbJM2UVTs7nvj2' $Logo &= 'H//h0NDQsXTS9QQ0hJSNev3g8GB///7h4f1SqQRCcRyH+wiMUVcVlFJoM8YMw7BtO56IQnLq68v29vREbDv0hxDi+UhFoWDo64NCMTQ0/M7v/e6nN5duLxXW7jVKzTb3CCEM0cAo6LkZBZAICN9VCiQ5w+2U3R4fSp6fOjNzZjSVSh03oASVHlyv17cK9/L5fHGn2Gq2PJdLIRljsEvXdWiEVoCDu/kjbDgB9x8crK+vE0qikehAth/ElsvlYrFYqJYn6kShUElFoRCHBwfLK+uzt5dvLWyvFZrVtiVojOkRvw7/lUWWMKAIgSCbeE4N81rSdk8NRS+cGb40Mz4xPtzT24cQOV5Awf4PNA4OD5cWF0Enh+USbFJKDd2AXVgiQin0YJ/utIVNEmxDGwOccwJQBIgA7nrQBr0NDw+Pjo7192c/ryL0OAqFkopCIYW3u7e7dDc/e3vl1mJxc7dd70QQizPdYozhLy2YUCQwhgcmcRrYq8ZMZ2TAPD+Zfen8xMy56Q8++PepqemZ8xePW4GHfyTIGVAimpu7s7m5CYWTIJFoYWoRQoahhHOOAeKf2C2o4AC/LXAoE9gKjwnPokSDtuu6cLplWaCWycnJbLaX+COLUDA/1i4KhZKKQiG8TqFYuLO4Nre0NXd3d3PHqXtRRG1NtyhlGMtQMMcRCfc6TQkiMToj/drMZHZmeuTs9EQuN9BdVfzOH3z7N9765bd//c1jSSX0Qalcnr8zDzesatWGpmmMMc551xndg4UI6yiIUPLI7S8JCNxtYyLxZ1DyUE7BCNJ1O5qmj4+PnT0zlUwmu/fc0BejUCipKBTf//678bgdj0V39so372zcvru7ve+2RYxoMU03P3tORTxRJJxzt+MvII6ZfDDDIZFcPDcyPNjHudB16/Tk1COOeOeP/uTNX/qZ3/rNbx2rfAKBY2VtdW5+rlwqg04IZtAPnbDrkdI69Oi6Dv0SccCXSADsogGM6tAIB/d4BwYJ' $Logo &= 'D0OShPohwX/GGOyC4BKL2tNTU5NTU9DzPMKKQhXqhRDoOUIIaXecWqMWtaOM0nKt8njDMkxo+x/s/yWKY32hFtz9+3+5uryjj56InB2LvTxz8q1ffEUIvra5Nzu3Mb+yuVfRHG4QPcqYjoORBecQSYRbtzRnKMVnTvddmjk/MjwgubuxvXftxtrf/NO11c3SG5fif/an33n0s2Hc6XTQ0QiNAgFl9vr17cI92LRtGzoF9xMG2AUBXVswBvGiXm/s7BRhDVi58gDK+K1WC8QQSoUFmIadSCTi8Xg2m01nkvEYiFPvAI4HIACTcMGYYRggMOi8cfPm/sHBxYsXoeLy4r2iUKu/MCYISbhm7y4vLt1dhM1YLCaECDN7iODc9dxuivcA7iEUxHYhYFY8jN4SurDreW3HYZRRSjquqzFNStFqNSGtu51OpVoaGxn95uWf7e0b0HX9i9WiUBDK+vt712rJnQbbut5677/mY8aNkQH28rncr1y58Pu/01Nvdu4srd9a2Frf3q82BUIymaSnTvZcOndm8tSwxtDmtq+f7/7rp9t7nYZrET2u6TnPTCVTT5oNwcMrR3yMkRBSKBZnb8yWy2XTNKEnTB6MYc6FFJgxTdcIl2L/8CC/vl7c3Do8PHQcx/eBGQcDpdIpTWOEMUKJ53qwq9VswrOf9ZVVIbilaz2Z9NjoyMSpsXRvFhPadFyYUyBaLlyEKZxF4B0Mvbi7U/249tLFS7BC7IVX7xVKKkhKxD13fX31o6sfSikz6QwXnATr68N19AJ2ex4cRqhvjmarBRJilD6UjZACXuGSzGA02IRkLgSnlEp/EC4Fh9EqlUq1Un7t1ddGR8dTmV4d6egpKBQ4EdWl16Z6lJoWsmxPoqV9b+798t+++2FPjJ8ZS3zj0vg7v/3zPekEIZQGhYpCYffTWyt/+dfv391sVFoGYnHNyFGbRR5WYpCLZTSWQo9DMIxwxGXIyyvLt2/fFkJEo1EZAO2wFK9r' $Logo &= 'umHYIInV1aX5uTuFnV2OcLJ3cPLi5RODJyCFxJM9lmWFKgJgOC4497jjdOqNWq1e3dvd2dte3ykWPv7v65/88PrJoYHz52fGx8fjVqTZbkN0CeWHAyKRCPRcu3at0WicPn36RS4MUyipdPOKbUcy6R6QRBjhCfYzhxNcu4wxzfCPAhCAqa4Zhq5B/qAuzB6Tc5CIG+4N10V2ALcDw4Y9AAiIu2AgZFoRQghGR0KhyKQTUpaDpq8EjJDGiKYlEEpVhfjPpfZ/3F4x6a2+hBzo0XWNFA/a2wfCkSCSFNOyVqK7ZozDHx+MJXdty0SPQSkzrejTJguGrL6wuLC8skIp1TSNc46D2on0Qb5jBFpYWLh+fXbvYD+eyFx45Q1YU9Z3YjiVTsPxhBKEP/fIvQRg0z/dipJEpk8Ib3xi2nVa5dKDw73d1dXl1aU7//y99070937z9Z86NTUNFqlWq11zCCEg/XDXm5+fB5OdO3cu/D734tWiUA8/UkoNTUOCNxATCMeR20JGi5oESdwo41YdMWYh19V1z4hiZjMpCWOoekhaFcI0jFBoFkFwh5kESwwdhEjodQkcCS9d1w3dCKqRLx4p5VM+iUR+DHtxKNIJG/G9h5m6i9/mBCPTMJFpwdauIwqbrpSSMY1Gw1AiEBJIPnFVi2dQFz2GYactK/LFRuGcz83N5dfzoIfwlhclVAaDQo9hGMVC4erVH+TzG9n+3JVffXticqYvO2yZMYodKXyxCZcH84F8Vh9BhMLZRIBMOApyv29BYUSTvWYykx0em7z46uX88uL8jR/94/feGx25eeXKlcGhoUaz6XY6cL4f0AhmhiGlhOVn8PfMmTMw0Z55iUWhpNItJ9Kn5WAZ/EpGKdONtkANLSmZqYsWJ5pLfKkQ+wFuVAQiRHKPWk0WlVQjGDkwvpGSdqmNqZQIY3+oNtI8pHEkuPD7CEJmrWjWqw4EHE0TQkA9H+TyTBZBht/yjlVcfWSmOU7bT1au' $Logo &= 'C/vDRMaoRhk1DNOfrpgcfeGDlIhS363PwncA+voQGpr40fSZ0pNJIOmiH0M3vjCCmK6hgDCUfAEEyd6+PvQYTrtVr5WeWEfptpeWlra3t0Fm4fVACfEEF5jatoWE98NPfvDxJ7OYmZd/7tfOXngp2dsPR2K/bFllgUUokYQiii1oE+KPHJrFfxchDCqFpFwyKiTyXCQJF4gwM53Jxl9JDY9PLy0sLP7ow+/+3T9cfv2nX3/9MrKsRqPujyM5JhRgjBUKBWiAV76S51cUSirdJ3XRESBSdCSqIL1t9nh2b4s70CnD9BEZkJ7HHZd33A6XLsHdQWm6p53gNdfjQhKMP//GDY9zj1tCppsVzDtIyo7r1puNaqMWjcYIDPAMkMepIeFHplmzWd/a2iiVSrVqRUgviGtaxI7Ztt2T7YPaT8SwukI6Yo3qy81iCT+hn75mYHyEC00e1zqnJ0Zt9pGQmKBngxDYotVz0yOP9K+srNxZfWCay2+/+QuabjxyzYSN1dVViAKQSLqyCZ9qTFl6pVZ/99/eX1nLD0+99tKr38gNjZh2FCHudhxKsaFpQWkfhy8WLg2mMhAKCUcT0CeEJyTnEhOs6/4pnAiMPddDRMhEInXh0sv9udz87LUPPrpa2N741ltvJ1PpWq3M/VjGw9QCHw+evoS/U1NTz/6LiUJJ5X/Yew8oOa7zTLQrV+fpnpwwGAwGg5gDCWaCYI4mKZESJVHJsq20Ppbzyu+tfdZrH0u29lmWbAX7SAySGMUgJokBIAiQABFzDoPJsXOu7n7f/9+aOs0ZABwAFA/fPl0Mm9XVFW7duvcP35/Y63H81KnjkGgm8kDA5kEcIFTbNLtjTsBtu8ZjelsWCexF1QCqVVL0sjCjlMBDihaZ20E1VIj6JSwlF9FOESMAp5ukS7EU/OQSp+QsC6vE1FRyAsAakcsWDPfZdD5HypDbMHGJeCp3/MTR44f35XNZL5s6He6ALU7aqolU5eiZSh4y' $Logo &= 'JMWZpokcrhAP/T5/wB/E/samVtzS0SSmo6CMDA8cPHwQbqAwbMbjsTRnjYX3gdB4sOg1TddUzXCb4HzIFzujpXVe19zW1nZHtXKiECqbIBDdo7Hd3cPpbN6SJM3QxJALblPCIFo0iE46QMi44NQgTF6PEfSZ0CiDbr0+4Knyuv0ew7kyjvjoS5t4KX2jsfX7u4czOYyfT1ezkEBKRCotWEXSWWBRV3Q2r5s/47wu29HReefa9kdeGfBVNcJr5CIj6sEC0vGBf/mL29ra2if99svnX88orW/vjx05enzBgvlTxRFoAMePH3dQLycBl8/rHR3oe/yXvxqO55ZdecvsBSvC4WpZ1yBQaYqLsSm+AjcZTZGw3rBTMBhxEVZUaBBdRWKg+MCyI1VDxhWY+WBnGdpYuap+5pJLPdW1tXu3v/3ww4/ee+89rTNaEokYxsaZ6kDhwFewWGbOnOn6wNvv2u9sKuPjY5vfeWtosN/FOVAx59LpVL5QbO+YHwwE/a0tmLVM+DgiC+SSuENJKhakQhZ8A6QQJntEYhGWJdsJJRSgwqCQhDxIGdj3iyWVfwLdR7AWeFMZfSqrsEioQEXKZBqFn76Vp1mvoilqNpPe+u6WF59/Mh6P1Nc3gLC+hwcoMsg6uoPTCNzQNHQSC80N8c/nVRUJHAVuoQCOOzvntrd3Yo03NDSB05wRORJcM18sxaIoQLvvyJED+w/u6+3vTyaSWPkAKHA7NFuIxrX4X4HwB5wrNzY2Hpm/YEbrrLld85qbm/2+gIiXngQsSHz68aHoL945GM/kC5JkmAYXmyIWi6EvYdCzuSIbmSb8F8A28VH2ufWglxCVoNtoDvnqgt6ZdVXNVd56vwfbTJbAnD+iaQQde8eunpEfbNh7PJoERwmoSrJYhqqKd58pFEeiKTDqv7vr0vNlKmh//OVPqepjj/36dFGrA7m8oGQtEv6y2bTbNfw3X1p17VWrz4izlYp99YFSQ30lMmaHxEOX' $Logo &= 'PXz4sCyYAK2UstgPszx0l6ee+GXJCFy67sbq5naP10dyQ8nirP2q3VE+S+KG3QphVcRR+FMWGg8akDQFs6KMGSEOdjETok6QrKMb2A+UregN1rXNXeoJHd32+kMPPXTffR+fPbsDuZAFn3MmPFgguldTU/OhgWD/f0HbfsdUQP6QJDWZSgNxNUxCcgsWEU4rG7cycRFRZVMFiZpYgySJ5Ymgc2kj9hlWJMtOc0RHIHl3ulCU+VRV7KL1UM4WrBLPLdrAEgKCLdQaaqQkZaETQFgDS8qlYc7IZgv4xCmTIJKsK+eADLm87V2WSqZRx8l+Zmj6qrx9x/bqmjq/33f9DTdfuvKySryisoElDo1FXnn5+U0bXimxuhYKhmqqa9GviVSAaJKDp2Ef80hiqflc7t1t2za/805X55ybb7x5yeIVUF/ONtp46niuYGFACLYokBEqk4FqI3k8FL+Ai6maBSbGT8nOTApulLCs6FgsX8IAuvS+UdMgitQWDqyb2/J7y2Z73YYgix9V3EsSHrUD8UwCcjYeDnMjm8srWgECN1K9Zy2wdJ9Hq/FcCIiFaVQbMr/1p1c+/My7O47kJb1aN0wRSD/NrJG5bEotRa5e7FvW1bZsybwzEr55XTOLmV3LVjZU19RMopJQZAGOYR0J6zc2ePoZXp9x6uSpJx9/tuhrXLT6Sk8g7NY0FSo+gGQXBDWFJpaAuLAhtBNXWcGrV8uKqpCgxDAYfoUUI7zIJFtjxziW7U+JroVJSxdQdLVUcJvudMZrems7V91ycO+rv3j85w/e/7mZXTOhdmONCealc9QkklrCVQzuy1PJ/aRsx7QxtQzMeTbnXGfopqaQmVQYZurpk7qK7bPda/rHOLj3pB5OvZdz1tkuPp0Dph5c2YGpZ03dWbl/GmMy3fGZ+tIvkKkIGRoyjmInp5OFMz5t0KYsskWAAmK52IRLTHWChEmQxjQnhxV0iM6SIEdlLCtr4QecSpZGhQ300Fey' $Logo &= 'FnEUPlciPqGocj7jSo65sglJVmXS4Olm1BvIZQWQ65zE2jooD64luRy/ZDpAVjVF1SfmmhMKIGmqTgX8wIsKUiaXH49G8UB9fT2nT5288fqbg8EwHpNFv5Lj3LV//563try9ceMbieh4oCrk9XjBYvEn5EC0M9NKjs7Br4V0GvjYnj07rQKqE46svfZG4SYk9JWKSVOKpNPjuaKuSioGio5gfiwr2MAYlVRNwhVZbJXtMxmWYTamyUSNABVG07lkzhocT3b3DJ/sG71+2ezVsxrxqnC7j6yLKN4jJIZkPCVh2E0tbYFlsm+6rGQKOcxln9sM+f0XcOX1b7z+la9+pbml/S//9Mt339j08vp9Ow71Jwo+RferqiEI83t0lzLNPZ7SmWI+FnZn166oufOmdb09Pd/4s7/euuXMqb0KBQv0G9N3Kvk7ffo0IhxBpitFFrdHHRwZ+PnTv1QD4QXL1+jugKySZ+OEw7xUnlxiixkI/ckqHwQ1BbKDxmoyVNZCHhZNvGJMWhXhjY5wY09Oh+zQqi17fP5YKu1SPfMWXHN071sPP/Xw5x78XHNTUzIeB7MSN8WySiQSwMEQvHJGyuhQOvG1Eiu+MLWD113pjAS98r6VOTSnQ1gvskizw9imXhxfp/IYQYHOeHGn5+dbGdqhYZUjP7WHH2xRamfwJzGSSfzmQpgKVp1hmGiAg92mCVKKeyAGxTA8kPWhN2BS23YCx/YAFB/wFnQUbDDqJTgKlgK+QkFJWxYBXAI0g9KDTrPuUoABpQJxKGB3LqMnh2UrDUirYOWFEiPcrGRFVcnuUsZyxZqqfHIx9hBINciGJYY72LLpshOJ6xaH0Qi3GUB2WJG7d+0cHBgYHxu78457Gxub8ByOJWLHjq1PPf340WNHEDjW2NRiGgbwtBKvV5iR8H96am5l595ouDHje6bpxgBWBYMjI8P79+8/3XMaj3zHbfcIj2QnDA10ARVxsdTBLA3FwDjb+h8QG4kG' $Logo &= 'Dp+qrtOc5VlRrITpZM3UNYl9gbAfRilTLyZT2b29o4f7Ro8NR7PXLr1mfhtJAHzuR6yxaS0PzpsFY/Ebqs9jFmQZ40fdNUD3c5Ip14YC4WDw/Mt5nfiDP/iDeHQsHh3/3Oe/5PP7b7h+7V998dOJjGv73m4kahmNWdmCUnLZCRoUWpo5j1GuDWlz26tXLVkyt3PG6Hj0u//x8ycee3jN6iWQ3M98o1N9shE+1h1LJWMeb8BZb9CMh4aGQKDxleFhS2RkgSnu8aefz8jeRYsvd+lBKFBu1ZAlFQvEpsk018XbkiolVjTs9piGpkpluiL0OJHZBTixhlli5QrvQXHLvC12sBSHpaQZmJXeZKZYkgMz56/Zv/f1J5584guf+7zf5wMsIepIiuwv6Hx1NUwwtZOYxNnUEbEWLh7+wnXOTWQ/tLL8lZpTJVE+21fBaM5xKbRznD61nbte59k1p3Lla7qYx5/63i8W/qqYjyWxQbYKDmxERGIinfSYpphJjnBFoE8xD/s8tis5Cv6lLAscRZYcuEgCI8lZFDQgTPdQbnA/8XvOysNS7yFpTC0VwcnI4k96jCLRMaxDQUeJJxJEESpZt/2ZK+F8bjK5tRgAoS1uE+uNGpgl1pIvEIjHE08981QwWP2J+x8Q05qfNPvOlk27du+ora2vrWuAQA0FCQyAPXwk9KfE2zjYcRSwmYQFK3rB4e1ouAI42anuk+9u3Tp/7sLm5tZKHKyMZymqhVxRyWclA29Ewz7nBTgb4uoCJwQjlc9An+k0TZaqfGbAXTs6Ejt4evjXu080Vwc660NUseMjGTozGE0hUwqGF9JCqUzKaN4qU0YREkzAfaFfsvp7Pm1gYODWW2+FCy9/IzAyHos8+eTTz//qpSVLlt579+2rbpmDZFmqpmdzlsIGCtPQfV63z2viZu9s3f7a+s3f+tdHDxzYGx0+WixkYLiGdHXGVbJz/2nDXTUYSZw6dXr+goUT7uY5qCkit0pR' $Logo &= 'GFLYKIiu/PrXbwyPpueuWlc2aouyrqlAlsFRhNov44PXAK0ZZ/1NzC1AnnI+l4mMxbOwbuazkN0gXWEuaWaViA62ZS9bia7UVMqs59Mn5C3dY6RL6WLJM3vBNcfeff5Xv/rVJz5+H3ajw2Jd4FKwSp46dQr5xAwOZKmksAcPHgTLBL/BMWTh4f3YgNCGnGYoNzlv3jznlPPy2oedaXBwEOYczqXm0GgaOiQ9w0iuXr16UmcAMKZSaV3XnLGqZE5ix3Soa6UeIMJC4Y+D/txyyy3YFlkPxAEYpSxXdxZ52JzimxN3tOUBu+sTTcSDQ6rwcsNoY5zf16SE/bjR9u3bMSZC+nESHwjej6m+YsUKZMmqvFQiEYfDIdBLC2TTFlBsMiuGVBjqzphYj5Ea+z96JPYMdB4N9HL37t0o+7Z48eIPIvhxgkTa+SHAOXRR3aFYxrLL5rJFo6wXJdWV48MIlcYNGPUCR8ngMKEA2TI1UUaC13CxIns3sXwG1Ae6DEMguI4rlc2hKHeJr8ZYsY0GMJJs0Qrkjk3yEy7iyhZ9IapE+kRBLhUZAFCJeJUdmEECSMcgnCuTTr348nNVoaprrr4Oahk83zZt3rhtx3YC7lQaVTymDYvnc0KeZBTLQvRyPB7FpaCUBIJBvz+AdY4Fj7tNyvik68beA3vf2PD6x+79BAgBBbJIorflSDqXyuahvDgonoRmn0vwYJ4z3wgGBi7qiERlx4eYPyUxbxh/193GWK745DuHuhpCYCrOpPqoRbIMx1Ij8TQ28IScU9EeAPxBBPCqasg0Srnc9C8IenfbbbchLmQq3chl01u3vP3uu1uE/UBRQQeN2Z1zV116eaCqMRpPnOzu379n22g/DCEFfslFMbIgAWdc9mOjw4dOxnS9PpPz7j1wbMHCRWJsh4eHAXxhzWOK0pwhA7pimMaOd9/eefhA69yrFHcdwFFgASoQYrxel46pzZ4pAHOJsQj9G1xWKKvkpqG6UnEQ' $Logo &= 'bfyNw4kGGjeOQcc4laTH9Ic8VY2ASUvZrCBh6H6R/ghJxQYkPhftIwVeI6W9BKS0KPnq5l6xd++m2VveueyyywVTQYcFoQEIhgdxiiKLy2IxnO7pQe6yxobGdDpDUDA3RSXvAzw1KA6YygVY17ABjrJp8zt1dXXpdLpc0fCYmXQSpBNMRfTEYULbtu/EwaDy+DoVnxEfmiY6qfAndjjhyXwpBh9EigGbxGGINO2FF1644YYbiKNMZJWOxKJoSByFF4B8a5AUcV8SVVmydXo7Yd4l9yOx9vGpcgS3AH7wysLhcBU3r9tT2fOpdiPwrbc2bwILpxuhVXh0GjoplEiFIFIvStywsX3Hrt7eXrw+UQqhAgi1kRWhkgpuoXATQ8Gzlau7FSw0nIuDoNxiEHAMco8i48PmzZv/8X/9w8VE1E9Ve11846LoHafahlRZoIyoJXSjVMAqYQKhgAgyxUxbxVRhAvVimzzwLvzhCZjIsX8SjuML4lwcKhOzUeOSz5WTXLCaOPgWTYVigW0qBJKA1ucLgoFV9jhbEHW8aS2rWLh5BTspLN+gqk2OFxD4DLgC22bMGa0zDh7c94vHH8XGgvmLsFo2vvVm30B/fV09Dsd75UfHqXR73I5Gni1JkHC9dfXYgKEGh8G32qCar6RtOFISguNwfFNDw7ETx97atHHl8tXLlq1Alj8cA6KGw8YT6Wi2UNI0sjCweifgQ8Ek4EAHjMgiYxJFTiu8QgTxVcgpiMdwwqmamDS/Fb/PrWjWviM9mw/13H/FQk0hnK1MA6JOgUfxd057vlh359+4l9K5rzaSzo2lc4x5lrMUEOgq2RVCimDaXt3TEvAqIIjTaxAev/CFL+zYseMcIimmBIQ4JCxhCSG3c8e7u3btBFFkEdUCKjrVSWzVqlVnvNax492RFOi6oujB/Uf6hciFaQA3YsdIYANfbnNoaOT1t3YEa+d4g415S3ZrOo85WCme3QISJ/E8ByfBn8IjB4XU' $Logo &= 'oolQdJv6+HB/cnQ4mUyAqeAFagqLuiyWwlLpK0qJlBWqbZBlTSR/4eR5LtrAN/blxwanxccmKfAgcrlU2udrrm7uem3j5tb2prralkwaPIlGWyC0oE0gf5CsK60CWHfsrM9uzhMNB+PaQqK/YPhLhGE6YrXDP2g/t0q1BpR9z569FBOdy00N2ORj7CZsUnZTJgyZZcnurUIHOxAFNgI+/yuvvALvzU9/+tMig/UIwMzhIZTmhDsfeFiRmyA3kA6nmlhYVSnLvAIcQzfyH+JcbCNDKBRZsBboH7XVNZTVLRCwT5zqMcS5qx1kEhCQuBXplLo6VdxB4gaIAuB2QpWh+eSMTNkeJbbQCYZCl3VgfPw68RIVNMBOOFmAt5AYMOC//vWvv/zlL6Pa24UxFZ7vAsh39vB3kPSClWPzPf0mcRPvLk8md7KOkEM96wKEehWKDuqFf9BRQCVtN+KiJcYHnwWiiHyMiMSQNEsOlhS3KtFKJwrO0V9FYigZSo3H+r3FOcAnQZaYZCDxuCmO0TA0uoZtDB6Wk6FroMICapawsHTDXiea7nb7IP2dPHEUTEUUAydQjpuhU8NZdCg/LG6BPkCFnTtv/pyOTlyuu+f0nn37oI1Cw21qbMRZDiDGoZxFwAKmbgJSP3rkUFNLM4QWvKpalWCfTN5Kllx5VTM5EL9IACApYoIoC00uB/YcTyMKVPUChNeFG5ipSIbynuLsjtIN04QhlxuC3pFE9vUD3fMbAzVeDfGnqCCgqdp7mMr7eohJwrno/Jt05p2V1wIKkymVhV6ZJ0QUwBdPDMsCUwE8FPIaHve0sohiPP/2b//22WefPfdh3/zmN1999dWNGzdWcDnO4Hv2tmzZsjPu7+ntB4n3lHQIMemsTXlHRkbAsQSdLXKTVLwu650t70ZyxqyO+XlJk1W5LKlF9s7CtITvvUrL2IW9+CuBubKzZEmiLJZujx4fHx0d6oWffToZh1Mfi5g6oy4khmPxY1Vq' $Logo &= 'ZXm492R1U6dlEerMsJuQoCSsLNwFw5vF2gXb5vtg9stqAVwk2NBxOjr01qYtv3dHM7pc5iaeBVI5tIdZs2ZVWmsElceKsAo2KCSYoUOeLswPUGwL6okVJy7laCoSKxMOtwDR3LVrF+dKz3vcbsezpjL4zJlqLJLbTdXksxnPsY2rgdbv2LYdYj7mEqg5uAhEBKi/2MhkMyWGB9EfR7PhqeswlcqgN3ZUmmhi0MRZ4hhMEkBbsUgUDYoIog5w5SkGEjuaAnzdLhctqU7/TUOLjI87z4vD4A4O7U2gGiJjKYsqdmMhw+YxGjccRp/cnKFg+YBLQRSy+B+6DZoGZeWxxx67+eabb7rhRsGML8iluFQi2g2Tnkb3K7A6UgnQ2jGRFTidIPQYuQyoA04EC8H5hMZIAvXC1ywbSAi0heRMeAcdD3UD3EioHPxkxCkISgPcjEvlSBnjicvCOA+MhX2cP1+qEGewBYaCrjqKAm6fL4DcsKJadNXWwPoYLhRozPAOcEXhpivxqCZTyQOHDqxefSlruVHcARybB7dAj8b9I0JRIA44Z87cK9Zc2TmnS5aIHa5YsWb5stW7dm17++3NCE0wTaBouizAK6hTLEQDhUWfd+za1tnVtWjJslgijtCfaNrqG49HUuAjpRx0EeaFRRGMwk5rCIgExemq9TfObKClo6mxbGEwlkpkC0PxFKxPQY/p0xVMGZb3iSfhxiyZutyaMjge33qkt9ZoqXdXwVMoUU7Ch83Q3kOmAUCNJtJiJNN5C5CUW1ebQn5ICUBWZlT7SRqbRioY7BcShjPRTwyNI/hmLJXVVaW5CmYLrbHKX5kadCSRGUjnMkBRVJpAedanJBHUVyx5da0lDKVLn460+6Mf/ejb3/72uQ/7y7/8yz//8z9/8cUXXefTAMiccf+ll6z6mz/MEsqqKldfeZlwI+7v7xezsciNDF2G3tfTfeDgkXDj4qLqwbPpMvRdjVg/6+6Yj/iDROGYDBXM' $Logo &= 'MwwkrT4yJ0QGev0eLZ1MBQN+zD+aurKOZhNK1YPZAoNQIpke6O+vqW3EiJLIRY2C7cklhQNmyfWS618KdUXVtJySzJXUcEPn0WOHAMTPnj0btytxw5UFj2xoaHCUFUE9OZrYi7UrjhEElJLzQ0e/uIaHwpXBVPD0E1SbmAq6XFm4DBwFFBnDi6BmXpci6YAyyUWqzI16aSM9JOtiS8CDDqTvKNDAoyAXbtu27a//+q/x1LAq4aswn+AwdExA0A5zdTL+lCtaJVNxDmOnbfrnjKHw4Ehn0hhhSMrgMZ2dndCh0bepKhcALpBfAlSLzi8kIjuOc/gJnO/I4cN4CxAdhOqD6ziVQFlepYMnhhGnaCo3jIvDUXgY8BNzE5XIPn6Ftvr8889jFfz+F39fQIUXbKgng7MwHlisAUF3Zmck/lcU7rusQ7hKrMXbloocFD2E6zFEhj+VY1LYjlIEvcfqsb3VylK+THQEJ+ELq/kT1gLaT6fxqa6CHUBpR0YLtQg3BoEW4hgnR5JzjLzDXLF06TwkzsM7cABOULTI2NjJ7u7RcVQ6Sug64Qa4LDor3jJOx9DiMQF5HT9xDBwL5B7PjLuIKuK4mtBSgPMl4tGWluZLVq2+4fqbsXM8EYUJJxyqQrg1qlNAw33m+Wc5YpQev0DAlajjlIOEA4ByaGQIs1SVFF3RpFIhl7d6xhKj8ZRMgT1gQYTx0RRgwxHOHkvlZ9QEb1s86+o5TYlsDkMxmsj0RmAlzB0ZiR8Zjg9GwZ1yflPHCxH4oUK8t4zhLSpqLG+NxDOQSEzDHc8m4YAA+d+S1dFkdiyVScG1OpE5MjAOLkXMQHIls/n+8YTH0GfWBjHCNV6zoz5U43eHELdg6GGf2+9mjZvfqTQ5gxlxPcgAI7HUUCx5dChyaDAaz+ZhjYeG2Fod8ChSR13V7Kbq9toqXAp3HBmN9o/GwILBU4i4Yo4JsxkjreB+M8BUdO19OcpPfvITKObnPuwzn/nM' $Logo &= '//gf/wPIA9nwp91ASs6WPxTT4NOfun+SRQfSPfojKsPbIIxV2rbrYFat8oSb0gjFBdMv4YlIJ6FwWUnBf1hfDPxLRWY1iNRhtLeoWMb4wMkaP47JA9xmS56uUCMAijYEseRA17racPL08Hjcrej+UiFjEZJVwieuJjDnEoHNFqkqNE+YeckGcFvTVz2q+nbu3t46c6asGGXkVAJBVGltgNhBSMcgOMRakWRNUd2GCTovgvtF0XtyjOZ0DxcTBQkoAaIHAC1HTRGmo6JlCuwI+4HsA4oB9SS0QFMlbg6A5iA8gkg69m2hAwkXBowdjSQj2I6a6zYMLPxfPff8Pffcs3LlSvgjwGKBY0BYQOsrNSGHlONXgROIEahgKwINsTmuw6SdntgcVLW5Ah4NR+7cuXPRokXgH5NUATHaEAQr/arFsIjnFaYXMFqghBBrPG6j0meMZ28lxE1jwjMTh+OP5hLGaWLA6ZOz+oICKWW5VFNdA9VtoK//n771LRwrdJcLZCqOhVkMq3hpeQ7k5k2h01GcisycocBzCUBuOk8ossaD4mgxuSJxFDvdCDUwTdLvC6xui8OcAAwR+OVgM071COJkE7Z5MeikwzBIohoGCq8AKG5sbr5u7Q2XX34lEoVRiDGxo3J9bX10fGzru28/+fSTBw8fbmxo0NiIytb3Ei9LdmNhABGvB5/i6QoUdKhLrAM5PQSC4A+gvl4A2KU/GIQGhwWIkkpuj9sfCC1evGzfwX2UVtIR4uyXKWWyWUxruJzhZiKaB0K4r6wnC0WQciFOSezrTK+UCWvaKiVyBbemLmqr62gM9w0MgUvXBbSuBh+8qqPZ0qYTQz9fv+fQWMqoN4QMJaOHYGM8SlmAHFSDQPP5fS7dXZYS5AlXlvpjqTcO9716sHsskSrAYEOgiIRD0QOBwsNG1JtIYZEZ5dKmA8RuQwHfovbmy+e0rO5o5KcRAsHk7GNofZHU45v3bj/aMwY5QtOIWxeItx4a' $Logo &= 'jiGDG3hlU0P4c1ctunfVXIK/4EcIxcg0chbZqySsUpWImfBE0VU54NH194PpgYC/L0e55pprvvOd74ASQTAEqO2adrv00kshwE7nSEwbqClY1cJEj4cW4m1f/+CRU4O+6vYizXme78RPyOBBf1gzcplAsAnNm3OskCylmfroUHfIDTprxJNFXbczMrDUbZueFW5OYeC2GY37jvaG6mYWyHuOVgCYG2n6AAisEqu/aBL2409gwFjW2YLLF64/2X8MPmxtrS2YEzLeQ1EVBmpI6xDbxS0csqBxc9BvoWRgj3xxPr7CoE1drCDTuHA2a0vTeHfCHQAIFeRxGpApLcvNoe5oTr4A6FhgfpI8JQ6D23/9138B6nzggQegtMGehNkCaiBkecdLSoyJqPGMA7DhsC58imtWRqE5D5Jnw75wdqjkoyJbLn4C6wJjgDcX4KZJ7tpCmahEAgQqKO4uctAJvAvnStyccwVfcSib4Fj4dMQRPJ/XG0A3HC7OSgSWI+nEUNeAFf/VX/2VQPXF3S/YpmJXbHSV7XwnDv9lGzEJlNTRXBa2eQ+DwArjGhZrUCpv58lJq8zWZhgjWUchBcWF6S0YBF3NxtEEtyeDLWXGK+SVVDKfTgJ15gp3+WwuTZYvVcGpmVQ2ncnm2abEpYqASpPDAnEvRkVRNKwqHCKmweiboWh+L/75Dh1Bwtb9GfbZECoIxlVgccJfC3ruwGA/RECMvUpSAJV9AciNn3gcyAiPzLKnTp7c8OZ6qBOXX36N2yBshAP8c4S/L11VFQrhClO9u/FCWYNRGuuboFNjmVNWJinXHU0NJLNhr5G3hIOOTaPBhmNpzMJiyOeuD/pwLQ8Efp1IieoiE31zgx+A8qbDvbtGYrFMXlWwU7gzQAgSyQcVrK0EPR5xmdpQ1VA0/astR9883Hcinu5NZqAdYVkYisAOLIl1Qzw43iDGN1sG+YG1zkLHBlLjkWTm6OmBE4PtqzpbZ1QHNMWW13Aw' $Logo &= 'pjzOAsL44r5T7xzp3XqkJwUsj9YT/hVl9sYQ0Bb62X96OP3SuzAcLWxvGMFDyjLJ1CWaNzK/0Ak7QMmtyS1Bw6efax6j5tVnP/tZrMlzpgLr+OlPfwotHts4kvTOaTfQL9CO6Zia8U4hQTs15MUKxAQ6euxkqqQHPWF4bGkmdBHm+hDOoA7IJcgzlOaOZj+VkMTME4vCNNRoJKYV4w01ddl0Wjfc4LqiZJH83iZxU9hvPhDwtzdWHT59ItDQgUWRt0hgAOTMnjHCkUO2WJyiP1rKWFQanDcVb3V0bOD4iVOtjTWUJMciGVxwRzwU9BWMXiWZc2ATpwMYJex0XVxzis04QJawG2tMgvDuHn30USiazht0aFwlpgR5Hx5owpkNBzixBOgh9FT4cQhWVGn/wPWhl4Ai//Ef/zGYFpgKOBaogQHkTRAKboJz4DAwJ6ik0JlgccGGECAqzTPi01F2IZe0tbXB+C9cOSYFoxDRZ4YvkL3LLrtsUlQ8BlYgUZVGGodN4pRHHnkE3RPS/9R0UzgXHVizZg0eCtvCnFGpvb3++ut4EGw73FGwHwwLNDasL6huYtAurp4KDws4FrgLcBtHO7F/YmyrXGI1HwI9pF2plMOWTJKyHV1YJog8T1dwYY4yryCOkhHYLqss4hVMAJAlNieS7qDBLpKO5TNJmEQgSmMy5fI5ShmpUPBwFiazTNYi3ZN7QYQPH7hmAWmDoa3jstF4FJcjCqUgCIZSdYWramACqaoKpJIpdD/g99oCkQD3CoSkAT0dj4yTEZJmLQl0lpVzpovOYoXP40aUNQK24YiMfiGNGKWG5Y6lovHm5haQoXOPO949gDhZlYVBdSSaAKLlBX5lFcRkFMGMYDtR2m9Uew0wb2B7mLkcGkrGVqAYjZ5gY3WgKhwoaSqIuFuXwUtYunMpjFOWi+QyBu87DJjLVTUYt1490Pcfr+080Dvqq/LVVQcAX5uaCi3adsUWirxAgdEfxjO9HPcO' $Logo &= 'v97xROJg/+jh4VjPePLjl3S11dlUxgnYfH7n8f/chNyQ47hmbXUVtFVyisNI4oEA/OPIgNdfsCLx1Kaj/YlU7rIFbUciKdPn5sw0DDuzzZPM1YqGrvhNrQl5DLSzqtuQW++//36Qg3NzBbiHOi4rUCbOF+WfpkcTNFeQIc7wZjdsI6iwp3dAcVdlSzrlRiAezE5ZIAqY8XK5yLYDixNBEshVxEqSi4qUBtyeiC+fXW3lUyx4qQyQT9irK5rDwHC7bCreUhsYiWX7Rod9/mCBoQW+PqGr+OTvriJzcVaVaLQLJYWIjDuMribjUcnjR6iYLT6yORDjDKYyySPG9pzlwxwN5qKzbTsb9jNWejPTOs3nQf6c6JmpPAlQEmg9+IrFCfIc4l5kvAgSPU4HlcelKtUU5seBr3/96/jptddewzJnSIrXApNvB3oCPAWu89xzzyF8BL3CWQ5AOjVsXpwFVU8EtcArd926dQjyKLDTbqW1H5QNLxwCMVg4uCY8uR1FqlwReFQJDDhIEo5Mcptk6he8ULAfTHukSIBHAAZQ8GwnfAoSA5A3HCn6U5kZAZTq9ttvBx5YaVG7yCJdFXkRpniHCnYgGCPmblYqJnMFfApXV0hDIiMLttmZAPCuDFksz2OgMH5lgSexk7etFXEdbSZSKheRUDk1ci6dyuECkP1JxuNFxdKRk6SPZr+i6/lcXig9+K0ydzFPNRrZTCELnMDj8cViQ0L1IyMQJ7ogUAv/K6sM3dFZFr6T9mMr4HaIM+WpJEgNaADY6Nbt2+Em39Y2Y07XnMWLlra1zoTZ0L4tcjBnkhanahZ1+AV7I684i3L/AZIq4SceKxW+BDmSJiv97oRchEhAb0nSJRcmnKvo5gRZjG1hbPLUUYxxhtS0ktfNuolw5GXKJfKPYdLQYYgjymU2H+19fstBmEw6ZtSqusaJCVzwVy5rAJpIz0A3TVXFBi7hBqcUD84oLMbL8PtDpjuSzuw4evrqzhow' $Logo &= 'lcr4XShML+46Fkukav1eADXgJRlJov4x5mmxhiqzdolHrqsLDeWsF3Ydy5QlN76TH6DKj86vRNFgDYK25TE0t+kD53WdqUFCvPHGGyFJndvGDrN8V1eXs+c3v/mN63wanXv25hi0STgYG83RZCqzPpTGp+YyBodH4figBpszOZdslIyigmfFFKCH1rAEJMwHYUe1JEtxqXKZ2ExBNWJjPUtnBzFRYUlnDxHyQCkV6Z9DwVld4FZSMNnIMalcSmULne3NYzv2JhNq2dDgqCjnZYt4Cs4lvkKLDhObTfdArbMYX7CzPN5E9fj4yNDgaFObF0+B2YNPEQgJGWhWsehEobKDEHMo3mZXSZnhB3bguYgm4EAAG7wkC2J4lbIqssQC4fmTP/kTbFcWP67cQE9AlJ/+5S8hhAnvWKfhVzhtYuXC6byVba5T6aPI/w8PGsj1iVgcC6QSgIKCCY6C6D/4QWFeQX4HVgaRRSBOU53ZHOOHsMPDNWv9+vVPPPEEFAuQaVwQmqRYYXhqcXwc70zXDh89gh5WwKpWrsCEUyk7qqGrQiFevnz5v/7rv2L/1KQDjvUFEBa0NMJByc+IiAM6gKFWaUfhzjvvRJcwJpOgOaGtfmAR9WIoxcvDfQVGzIoLq8yMXgn6TjOeMCiaqELUtUTgN+dFwj78R0qMMLaXS7aTEnukQHtxXHUZ/yAPL6gkGGMP18WjqU/HlQRAZtMdRxmyaLEA5WGCTxCCaRiYGbjQJE+2Kr9PIyqqDwwO4R1DtwApJkmNC1LoKog060DpJEclhXFHeJUjiT3egsygNXGaYtEZaPQWjucJaEbxSP9A755du6uqQphz7e2zGhqb8MLngBp1zrftt9FIvpAr5ylBk8OqFVWBUal3PDGWhv29KF5ZkXQ1GkldA5mQgBoGTR2JhzWZ7FeqROxEWP6rfBTbPxRNnuwby8RS1T6TfB+KE1PBlm9KsP97JbmjofrEcOwHr2w7NBTB07oNlYP/' $Logo &= '6Y0puBF5oeSGklkE2oA3QVn0aCrgOIwlRlMRPWOfCyCvw9n8iUjypX09teFwe11YSKsnhqMv7D7+9vF+rxsdl8mjKVcgls8BE3hvFvbwi8YeMBhF1eL5TCqZNUzDLYMwod+qU1gG7BZzjVKfqQqogxePrU221UOQxDI4Z0gK1ej9wQ9+sGTJEvH1wjQVuFGe41cnQgL9GRsdE8Qrl2MxiPNBDA+PQkfRZRXL2HC5aUDYdxKfhAzjT8InCL1LLATKluD2xsf72kJatVsdj8aEa7CgqmXewCcNm6RkMzlyMtVs1kICFvhLMWsq2tzZMzbtPuUON0DexSJhHwggkNhAgzDHGyzMU5fKtB5VRc6W5N7BsQaIyewHD7ou4BE4IMB5EenJnUKWwh1U9MeOI8mpNtB0EQ1XIFgilxN8y/HEFQzGoe/nACHpVzZgOEylyA2/ChBJ13TBP86YLgyUFweDB9CAcWIOB2P0ebzAWp988kkYXT7+8Y9DQZk+oIepCPZz5ZVX3nvvvd/61rcefvhhXARDbLFRWUwbgV9B9cFow5Mb/M/hCrYxhuMcHLLsYOzO45xN7nFMQbi+mEWQQ0lu54ad+PVsF6kE9C6WqYhAGI4iZNQPRCGfFzCUHUzFNJ8SorCuIPxELdaos5gZkH/BSCCpM6mA/wn7cNEXi1Nx5DmAUGBl4n7SRLicxXzICcwTmO2kEAfaw3fnKEj6VdUUjee2bgDOoWBpEFRe9yBJpUwWefsVaBY9Pb11tbWcoiNf4oYVKSxX4IPJUqG+rgGIVl193YmTx8EySPrjxMMuQgwgrFh09zwhkiEy3oQxSulUurdnD5QJTVUDiGmqrUVUysrlKwdW9IM/+auCbq87gAVZLONIjloglqhq8kg8dbB/bDwH+IGtCQwYZgsYK45SY9rjNbWw1w1mWXKpJKWqkkL3L8YLhePdJ36zt+fgQISUwAmzhO3DrlPIPi7V6PV0VAcMw72t+/QbB05V1QSb' $Logo &= 'Q4Cg6PUK9laSyR0APqwdNcE6v0cH8iSVR5LZ4WQumcVSdnl11dFIwFcA0+Xz8pvHRuY0D7fXVWNn91j8mZ3Htp4cwFXhIoZ+5zIEtUjES1wsZ8tQp1JZDtgm8EeCKmOCFEqmPemZ19olMEEWkfUelVSw+k0NhnwNwLbmfm8ax8Jf/MVfAKZwnb3hxf3P//k/77rrLmxPOtd1Ps1/znSWDtqApEEgu8Iey2g+i0fZwsjoeEHyQeLHW9UspSDDvEUiP2WlEYpZ2VmylHlONpREPBJQ4q219aNDkZxkJw5x/GVE9pf9xw5CNV+wYAH2y2pOqCxk4tZNVXPFY+OhQHBOS3DfqUGjqiVbpFiggtBUGGor8AaWJ1xv8FlkgYlcz3Rv/3gc4DJWDhPiktD+Aa3AMF7FTMUJMBCEXmD96JIgWK6La4Lwgc4IW7EwJwjEeFKqq7MxFdElXGEqUxHKgRNLX3mi+FUkp4HxFeYx3m9n7RBm+cF4AhFOf/KNb9xy882OcR5tmsmJRfdg7Pm3f/s3uCzDuwRQGIYaP4vuCfomonCEJzddkJc2wddYHBapF04ED4gkTjzHsFTuwZHkKcANFwStE2OLZYKndrScqaeLe31Aqe85fST+dLJOkxFe8DdYufPFAseeyBhXYJwlSkNk0VQjZ2JLY72aOEpZLJMSATuMcRWInZCOLAafgXwLBAXfaIOIC4RTqnePi0yJmCu7GP6q3Fs5KQzKeilj0sgqXdjn9jJHFM115Mj+19e/9uqrrwCCA/BjGDquB6bEFkk8l0LWe9g1NbAbd319Y0tLq6xsjURjdbU1OL2Qy1WOtcapZ0E8ZCqlrLu93ka3m2Q+ss1Y4+PRyNh4b0/vCy++hBG48orLP3H/J5pqydCSSCUVKFToIKXxl6LpAnK0cJisjHjyAouNaFCaONUzo+8iul7Wi4qRcVmw7kKNiBdL2/tij2zYu/lQb1bT/DVAz8ns6sxivAs8KSqcVbd62+pD' $Logo &= 'hwfG9vaNGB48ukx2GQmXAapGTtvxbAHRLh3V/ruWz75zWSc4ii4VXtx/+sldvadHY4lMDtIRI4I23olO4hjIgRRVw60/ln7r+GA0kwu6dTrKIs2ShImyhHctvCkiySySVmFW0bvW1GAIvEmh2reCo6gabaNnkCI5/SVnOtCqPLpCX6VJktf3v/99rEzXOdvXuWFjkpoCgPu8Euie26DiLFqk8BB+X/YKLOFcFRJYNBaX1CbKwy0peKEUemKBj3NUil2djgQySaiVsgaZQsmMzl1YFY8BTPNJco6JJI2ixeAF9BJYOF544UVcGWWCkGMY8SsiXBdUGC4VeMe6KsdiozObgr3DmcFoVPGA4lsFFlQskuc4mSrNN5EAVqRyIXYrK2Y0FYfW5fZ6SiXbSC4kaICNLc0t4mltTSVHvheO4VewhItMMUr8gJuDfeFeAkEC+Tu3yFz5kzBaiHOdDVxNYB5nOxGME+wEBIQfRBJJ/ETiQQwvDA/XX389OIrw/nKU1Gmm1hdfcS7gsj/90z/9u7/7u4HBQWgwoLIOQOfwqp7eHpiF+IJ0CmJUiWByY6ZiO+TgJ+fi75vI0tFUSEAp5DmBDbEV4TM9netcNPwlFG30nHOxEDokeH6JoVTKXY/VTnZ0cEBQ5JSUsXSYJgn3cDGAkyfVHpsgQERZhOJv8bBRpJ7gJSVS2MGOibjIMm1QnK4CcW5qPVkH/sKJRRwGWJDrPNJrKOTdJhlUE/HEk08+sWPHzlw643BaTIujRw/v3b9nbGy8vrEBukfJYmsJgbPsN4lyxfEEHi4UroJnGYJdPvbxT+7as+eZXz6LcWikU4A94hQ79ltIFiX+dDwxwGAsfCWGSkMVicUgu+LwyNhob3dPV9fce+/7RMfMjkQqgTJfFHSpSwjS7RtPJDMFdCdHmjCQbAtsmMQTScWF3VXesUz+Fxv3b9h5wgMjZIHmEJ4TmSK6U7ldPUPZRMoTDpqGWSxwficXTT2BwxaB' $Logo &= 'hSVzs2r9i1uDL+zr/uGb+9MD0XQig9z4OMANu6yqgqdGBvoWz5/1iUtWr53b1BzycNSReteStrqg7ydvHth4rB9wFhuDGPfEKS4ZwgEcnVMTYum+k4P7jvYphlob8rF8WcqCWpVoTPByUJKnfyTu93luXj67qcoXSWX3940dHYnGSsVav+FS2aWAk7O5xAYJzGxg97ub/R5sTEoS8/TTT8NFx3XOBg/jf/qnf5q6GCCHIuT4vPyJYVydjqYC9xDoJTAQCdQEnAK/pVBgIQ/rvAy9jQsLERopW/SswiqoyDSHLIlcsBjeNHKZ4Utn6vlUPp3GmCS5HJsYVDCAvIpxzcsvvvib9sWXw539uVfeuP+O6zXDyOcsLmKXM/S8ZRrgPABXc8XE0lnB9du7I6UWFlTymD5WXmPJx/YwBhRJs6YogbcXC+gPQucsiM8wPZZYSyEsQKIA3sh4zA5PptwZVoYETouRmbwwq2DmAT/F58WY6WE7SCaAK9t6BgFWctHSiKlgezp1UIQQAMycH7IoGvMYepJKKjy1NgleYh4thwHKozMOoaefCjHMZ4GFytym9mQ6e5j3Wy0tLVddeeWx48fndM3DtMF+R6nCCODioyOjzukgdelUxnHWckAqqXwe5WGYkktc8I+GQkCXlobFTUxFQHnTT0t84fVUeOCIczKhy0/wZ3YYZ97ATlPE/iirDby6fBaYCqL5BCvKMyJJMe1krmZ3fO6mMP9iFHltcR+wLVMNVZaE7eyPU/sjCneJZqda4WgO7ktZZ8+HTCr1q+efRUA8FpXjrABvMdwerKK5tRlsA511QvQ5EpfC0eH3hYU0b+4809Bxk67Zc++88244IGOC9/T2ATHDBW1HdYDXHBeqMGiGFYj9ItJSodKT1NAvw+0BNIaV3tfT/9gTT2DhDgwP/sk3/tzjhaXGjynv9ejRXOzYcCyeLrD5v0hx8AJwoCplxHcCbiOWyr2+56QrngEDxw3s4YI2hprF' $Logo &= 'YV9dXbBMVDwnYckVmTSrbC8hsDKHt9cQ8s5trHrzxHBHfXVb0GfolPsPN/IrCoASPMewx7p7efu9y9tNuRSPj5cpXkXxmXp70PQbcs5CT4sGiB5HGMkyYcDgGRlIfDw9jg9Fth3rA4WBNQXMgKZsmYKWhHAYSwIUzNUE3PesmnPf6rldTaGhWPp1qEFbj2w7OQgxGauErgJvbJ1zYWEDCIbNVLxNAWIqxYqVg8hewNmuc7aPfexj//t//+8zahhYS+cF0cBhBrLk+2ozuCY8gmgesvUbTeaCdZwNDs4qLGZIJYZY7bShklMyQUzUcrpshJGfdF5T2e81EUsDQMli86zDVEq4rK5v3rIjYWm3Xnu7x9SOHdy3Yf2GtUBRyEyoK5YC0YfLgkGXNnO5YnXYNbezbsPOIdVXj7MLBeyjRJIFoakQ5Ubf2AeJzaKstVuQA6pCdgULYRnGBswMGD2sDgGMW0W7CduvcHXDARdvU8HVHCTNsalM31pT4o6DiYihED1lnlIQ/mPnyA0MTYXuy+9RXMpRHaDBwCiCZCoXX6dSzMyuuXOPHjtW4FdcJkySwTrQSQVfAYdLDhojFDWBVlVaOEAfzme0y9Z7m5CMxYrAxodR+VHwQiaeZQBLJPmCEDv1TVUZVvtcNkevC86+UBpkktEzeeqrMJwAHclbpEeI69lFt2muMMoh8C5No42yvUF6DX5SVNqeCn9ZImafthWVEuOjUr2d/kzThHUHlJjzdZuVdQs0lTBfGafAoJpMYp+iYVsmh1srT/C7boDtIX/J8qUr2mfMwgSCoHn9desSkciP/vOHu3YeQGRMfWO9h3JClAxNo5gyCsHVafoWsWHYG4qB54W1xvFOwcyua6iDV9jo8OiTjz+OWfPlr/63uR1zSya6qiQL5e5oEiCCYIEwW2HG2VgQPEPAvTjyK9gQKtdV0QjYQ2EPKIaUfctKlbkhBTaftco5yMuGSmtd837xisW3Leooi8BVgd87' $Logo &= '+SjJqoQIb4h2Rb/bA2aIXwfGYz/bcnz/QFSUGWSxmj17ijRmImsNI2nlg71jxyNJxecG+Ulm8llORy3KqGO+jozFAel8/aYVX1m7GDCp6rLaQsadi1vdupot4twRRSr6TKVoG22EJGz7bsCYBN4m3qCTLA9R8edeAJdccsn3vvc9SHNni08831i86USoCLTaUVwogxY73WQQCVwAnghzlwW4k0O4VXBcCSCYzLndZJwuPB61dCJa70l2NdWPjZNTu+P36ZrQjyHVnDzVs+vQqZs/9vmyZEAWWXvzvU8/9H0My/wFC9ABnMVkoiBRK+DrWGS8qb5pXnNq24k+01cFECFPoqAMdm4bV2gJKAyxkqEUXcP+ZDqL7wRUM1Nh0ZjMKrkcMZVJ3k1MqdGKF1/dBFcV0rqDVl2cZ7JTvKMsNt/37QvzvrDiOo/jOP6CsHCezQ+mPjfcgSCv4EGdwGGxYXHTC9o5Srk47PO8mEGJm7isw33L3D4cpsKu9OAonIcb7FRmYSFDBjSOCMV74kwpIKAEWMESKxmZEnnGEnpMp7MNEKcz/YIqYEMc/F4F0IErTN4QaWBKxpkrxkzKrcsZt8FqhNJEX1UNnSKTpcetKISMifBGlekvDiBxjNYnVxJjJUyUcYR0FE/EkHvniiuunjVr9sjYCI6sqam74/furm1oeOaZX27d+nZvX08ykYKeGA6HwCRwIhs9SKuyija+R769rKUBEnTc/HXD9Af8OOzg/v0v/uqFltYZtZ//UnUVmbgRYDgWp4r3inDwZ8cVHih85ZBrhWAURRZuxBrDg+SbTYpdoSAyulSuIplL2QNZjw9GYDu6/eold6/oBOShqwrCFV1nab2RxK6ewQyonazi9aWSmQ1H+rb2jqURM+Ux0LEMextrFBMqWXnIw0VFVf1EX+Td/eMHhmOQminugUekyFoX2lgkpav6JZ0t1y9sbaoOJqOwvJUNTZkR8n3yko7eSOxw33A6mdYkj0qS' $Logo &= 'hDwxNyiGAzwfaV2Qdozrudl50e+++24oBK5zNkQPAFs4x7pynU9DiDXKuU/aCb8d7J9EjGCHqJTcbQWMtHZZWGIVgn9pYDhPOq0njJ6w1GMjltE95d6V82pyFETFKvtEI7ZDUhRlf3zzrXeWrLqmtqUjm4ghtMcTbl5y9Z071v8CHqjwEKHDFLsmqUiNJKvuRCS6bG742Eh8NJ6wFA+bVSyRbSzPzIBQV6Y12FYlbBNbYj/y8gQZYpc2bjBWordO2mDHaAzmVFmI0Aasp9ccCFGggopKF8cXcRcR8m0ptGeaegCfqDjvmpZ+kc5VuZ0j3kIE8zshgZVB7BrbHyadeJE6GSwZ6KcIQxSVDkTVPqlIgzLpoUSblFxcnDj9wFKBnjkuGPYIM/7x4TCVouDbXNODAtzALrh0QYZs2+xMgakHYFVlC0o6l0sbAGzZ+E3Bwky+8cxCkHZidxS+KVfcxZdJGyKim6NbZCaX4v3TmiS5yRbEKyJXSTOXBUkXbAMbDC6rVOCLJzrbXWxzIrYJvOLlItmLQwOnHB8dmzmz7aabbgJHEU4KIOrj45Fwdc3H7r5v4aKFDz/0k5MnT508cTKTSpckOHGlyEmDxGGZn9LOIF0Q8hqHozkZ6yDEqrpeFQp0dM4GDX3kkYdmtMy4/+NUEAzoSBJ+D1xMgzP1Q2EgJu3STZyLDb4Y5ElsTJQ8E28Ex2NDlokWy/TniFT5bD4RS+GFXbGw7U+vX3ZZR+Pg4JCsyTqhduVowRqD8T1nabo8nMyfHIFbb2EgmkLOR5gCEbOCuPme/lE4pAXCgbDHdKsK+iciVwyVZjH6i3VQ43EHDBWx6f2R+Fgi7TUC1EGWqkG2sgx4ZpO5VXOa/+i6RTNDZjYVAWdC/1l0R2bP2jWdDT/d5M4MxgDE+wJuXFok4BM10BSrBEdq8BULbiAuirFFeAHinKezVl0fXMN4Tg2/h8Q6CXd2MnDY9uESGx1L5GyR51xEJCyxb69U' $Logo &= 'IqASinlewu+AldktAXvTA1evrKs2tdF0UjVYdSBuwgHwfBNTlda/+o4U6pi59GqEUHBy1RLKq8zsWtB3bOmbmzbdfedN2YKOi3EePvwpNJ9klSVr+bpVzY/86lTB1FBFz+LUyOipqGIBiQx95Hh7qDFF1UV6DDMS+p2JnUyVJnOYHVmRCh46LqZTySDKK9Mk1aUcacyGqYmXKKwv00eKcKTQIw1Tp5Wk0NImMk6WV+AaKtjZ9BsjRbSi5CKtjAK7sMB+yIxJOgf8BU8/vD5Nx+1VoeJgSjOkaQmrA0IIUDPpIpUV8bAUrm+aeDQyRIPiCXiUUl5q49m0aZrOLdBtvEixoaDxp6NGT1/JENdRyUaKpSqrZUEyKfPhh8RUmDoQkoOH00yNIUqLfPIAOWVStJDKchaUk1UoAGFSKWKZ9RZEYgnqt5wtk6TheGiR7WTaCUypoB3FdBjMb4iVAGIFISzLE+UUXfYGm+uLrLFojFjn+VYaaQ+Aj9jUWOIgQWHkonnCmCmOUSnnM6lf8NQ6fWrgc5974MFPfYZTUidkif7hsEwyXTAKAX/VA594EMJlf2/35k0b9x3YjyJF8WgcVdwsTrHk93sDQZ9pmLiFcNHhV4jrE8JG3czn0B+k0MA8OHn8FKwsLm4ZUPkcCeIA74iFqJqdL02AHpViiaYLRxCJs7/hYDHF6HBNowPYHTebKSCbl2soumDVnK/esBw5TtKxGEYDK7Uq6EEv3j48/MT24z0jEasE+wfE4kwyYzHoyAFJXHTWCHhaSBnCnmIqX3JkTqC/2JVm3LLFoDOS6STKREBJEXITJUTgGAiu76PhCu213itm14VMLZ0jS7WryM+l0iQ2DS+ChwYjGUwhYqWSIegQjTyEmXTOkGSPYcC/tawQvvTOO++4PhoNYclTYJMp3rQ8ZBaaQHfZ3iJx4SCi06y+SOViFnGnmpaJjFw7272koz4y1u+mmsRFAvWF7mu53PmMz+1BRM6x/tja' $Logo &= 'e+6m0MVcQQbR5AZ9Y9GVN7z8xA+37dh/7RVrElmIOrqT7B0jahh6OlOYWRO+annsuY0RORCCT1rRYtuPEH6IqdAdiY8oAiQhhIIxKJu10FPkbW9s4X9BLvsixQg3keEDRBnQcaWMf150NpVOwzNKqAXOZUUCGORlmn4NfILsdI28XciZp0gbnPBb4zIw53DNQoETYRxyQtPLTOuF0y0G6sSJkwh7uhiwyEndj/wL9ShHls2YblOgUsJuhLtDKRdzzLEqQacRMYxOXmE6ks3b55kCB40qxzpZXjBQlkWQ5ofBVETlxBIrxTkR5QRqSZY6Ax60sCkbhopFMzw07HHrNcWsO92rK+GYVmfJhlTIepB82/Gn5pfm6MTn2MA/Tm4vmYkh3/BBIzuaVc1cPsmWT1nUn3ebImEqn8RgAkuUdm1HLAGh0GFDwgYzEvZ4lqEucCEhXEoBp0JcAVzFBgf6EFbyex//2Gc//4dtbR3j0XGkEBYgknADhydIqCrc3NDMKaRmwXl8+YrVa6+7cWRkaGiw//ix4wMDg8gkgNS3hZwFI3x9Qy3AMXBeFjZdNirOupHH7wP9TiaycEECc5NkKvUPxQI0BJOFeIJTcMtJWYAhJF7KegpjwxZYJp6xCL2ChE3y6iTKUiJOlsnhTqH68PLFs75y3eJr5jTASGNoKhxP+2LJV94++ubB3n2D8e2nhlPJNOVtVPGc5OBtaorpUunmYFm6bBqaqbArJ7gYHoIBBOEMQ1orB9Qgb3GN14AFFEB7inJMkVIKCTfHyd5LIkdlIe83tZagG8+RyluyYy9hWIJSRWnQSPlVygqb1ki2LiqaC6hZuRT2qQYEtBI/OWegcn00GuKop4QC2Ll6K3OxKkSbVC5DZ2GYOQoUGh+eFI9kYTYTxKlIVmKsxZ9ft3pRPhPB7C67TBjsygIq4xLDAY8fBaJeemNH56W36Z4wQp0UiGgMUKGB4mke35Irbt/8+lOL5nXOmDUrk8mZ' $Logo &= 'piFIs/0pKYlY+pplbcdOxDefHjY9AXBtijsmEKBA3YOmYhUm4C7Ct3WuGoLlwiSMVHqH7oDAYRufZc77UGEML+Cd4hM+VMjpgutMHywSRn44y4CsC+9h7BFAlijuCywBn9Ok2jgLkr6g0Y6FBl91TY+MR7DzbDVdglS81Q8dAggqUBkmW3a+SHKR8viQ4gUpvGAOuTBzvXPW/v37RVwRxtDJQiY6iZ6D5eAulY8jVCjxQoXEgP0aV6WdPofDAIps02JIhYUJe0DoPjSmIlFj51QAAFgf2AblwpQFrXF7AAcqTXXVM9vb4fg/NjgAZuN3HUsiakXVPVbam0/ZbsGSJFgFW2HfZ8OuEa269WS/d3S/BV9lq4wV0oXW2aXLeiEvjMQuOz2eQpKVsMGBC7uIFBJGx8lfLfKfYg1RGIfYmM8JIl0EwhCCLCuz2metu+nmz33xK/PndI2NjwG2MNzQwDUSqwWYjABnrk+OGhUgwAsWLlu8cDmL7fnDh/YfOLjvdE8vYhSOHDoKcIYK7yTTosaqi8tEOqAzOBx7Glt+vzsaGd2zd8fCrq5sngzyOB7/QFjL7/W9I4JRKBJ5pj4XeH6pJamASSHnLDwDBgOQkqYqXl2l6lvhQENt8OqFMz596bwFjcHYWJRiTmW1L5p9YfvJf3zundMnBlymLrl1Q9fcXqoTio6aOvWVg+sFkQJeR6ZejYiJHZ9E4SV2uicJtNGQJERQ1gS8CO1J4DdgRGxLES6cJEQXLIpeJE9ZBfZk08R9SE3h2m52ZGs0hapjGQBEqqmTsoVn5HLkiATFI1VVmX4f3l2B8UVyy8EpH0GmUlkqomLl8PzkeCYe0yIj2BZ2smEPz08+9DkL2/mANfLx21aZHi2eMgxIRQXJEsnbMJLstqIW80/96g13y7LG2csSmZSMV2BHHuOa9L9sMlbf0lnfseS536z/yu+3+3yU1M6hy6zHKwXZQNLTu2/oPPjQztFUXpZxeXrlQkdh' $Logo &= 'yJl8PoQZUtSUrDRnOpH8QpwXMdgiuKE00UTtCdBl1BNCrcyz+ThM1WPEBtLtmFhotlYhV1JPEF8QesqXM73mMFQnMZrQA4Skj+0z4pyCfOMuW7e9C/MqjudVbGdN1TRyxcYjI7EYYk7xmNPnIpV+DSKjMB4Hl0I2MDwyv8uSMLxBUQNLxn2RAtW5CHg6SFCBGbzMoL1MobMljenM+WsqmnhSwVR03vMhwV9iBMBQymT/1pWJ9Mune3vg73jJShrTGbPab7/ttocfenjfwWMLFy/Q00PBsV6Izm4NbEElQVekAYZqzFIDnukcG2Wm+DS4oCpSSTW9A2NxhFxV1wRWrVw1s202vNcHh04nUlF2Z2Q7ikqnk2yl0XCLMN+x0QhSRgqvJfvV8j+RVhlsCccDrWhra166fPFdd92z5vKrZ7XOxGHIbdw/0F9VHaSiQFOax3BXfo2MRsJVtSuWX7pipeQzvdlM+u13Nr2x4bWXXnolEom2zZwBkk3exqpGdJpDaiRmb1ybMouK6HAkzhZVUlPcso5JUsgL+Mt2b9O1PIhpPFOKp9mCbYfbutwZnAICwWUcyi7wBp+nq6F6ZWvt9z57fWUPQTOA2fbHky/v7nno5e2nuwd9zSG8C4mHRgfPYKdWOOmBO6GrlFuFEoBiiEDozeqgz2+SLpG3aD+fwmUKLQrXD/sMVdGGYpkCsQrinJbQCC2L0AZmiorfG/R7yF4mMu+qxFeoTBI2XKXhaAovFC8bi0roKCKo3kqlUdLACHns2srscPvy8y+7PjKNaN97m51HXVYnJDEIBGrelVM0t1zmvNvguQUKWbeDHFXQb4y/OxId+9j1MxbMqBmOp926h37UyTmD9BSZhPSg3/3Yk8+cGE1fdsuVyJFKC4SpDE8H8a+sFqSxZLq565LNLxz65TPPfvrTnxIE0S75KzNOr0vJgqs+XPPg1c3/+PgJKRhWSphIEtvgLU55UZSsvCLR+tNUW/+wM4iUFOE+' $Logo &= 'IqKVUP4W6gjkJ5Gd0MX9ZBsQ+yNwtu8jR47A+9bgdkagydkpYiYgmEJuwMACPTN1w6nrLqwXuCboAAnv024iR7dAvWSuqYtPt2GCiJ07cBLsEEVzUZARyhaIvjCFC3fuAswz3JDFC/mGwVfQ4enExvInnYsLAvWCswkeDbIvF8Dn+c/BPZaL6vy/9ebGrk5yZMdg2jCXogBsZOdzW0pgRiVPP9UpmhhGiMsFhdiqwnkd+OKqYDAfiqGea6XAiZCZgpbh6oe6YRw/fuLFF1+oq6ldsmT5skUrgAtFIrGHHn4I9Zs9hhxSXcixEBmMDacYA5VoAUgEwrLZXlErN9i24exRwRIgXcFRyu/zyroJvCRXyK1ateK+++6/9ZY7OVVD5uWXX37l5V/rulJtVovyXjbwJSsiAyTGDkqN3+fPcTJORxYSy6MqUNVQ32iYRri6ekbbjIamhpWrLgn7w85TNzU2HT5yeP+BPbgYSC+4qWVx94ghQYzG6Fvjkejy5auQhSWVzQQBark9IocjMt53zpsbrq7d8MZ6RM6TvuzzsAiLJ+VPWcNKpzFhj6aRVH4McYjJnBL0KpoCokOEFVdi6SaRzpmStLAxfOkVCzsawsRCOZhU59xfoOwMv8omx53UeY1PrFk86Q1WEyybe+3Q0X95aduxnjGXF7ClWeaRx8PwPC7jBQ8lcjDCugwFZvkFDTUzq/0dNZ5kobSzN3ZqODpeKATgLkwSMRk882A8VGJSrQ96ESeTyEVTMKxRThZqXLVJIc4nhF6J8GzbB9p2LKcvODqVQc7jTDKVxzs0dBn7iaixgoa4GMiHuCmYGgi4q5SGAYIiFj8aDTJspWRnRwxwE6WmsfRBh7GpKjKy9Shy2aIJALoGs7zFHFj49ymjieQVs923r5mPoVAJpHL4E7HwPKZrVfDA7u0vrN8558p7YlZphjcbqg3QxZlnOx4rklzIwntcDjTddVtyaB8MPIZhir45Ir+on4iA8ZXL' $Logo &= 'F647MfbslgFfoF4uREgbp+5xDj1OMoFuIFIVvRRKpVOTii0cmuCpSPl86NAhUHkQShbhLdFnXE04wgk3a1BGpzylkzAfn04eM7EBsR2niNQvldVt8SmALIj2oL+46XQs5HwAh2bL9viI/peYS537LPQHLBP5GZEBCM7rokCGwAzApcV1wBhEETZAUqLObmUt3qk6k3hMwTvBiUEWBFooTsSGOAy/AlVDcC4MKl/72tcq+Zzw6mYGabfK1PfTb87plQqoeCMfElPBOLLnIamFsBDQFufAh2izceP6bDb5h1/66upVa+pqGz71qU+hgvYzTz+fBRbf0lgsa0bQUHwlQk64vb8thTcYlSYA3dI80ENi0UhDfc09997z2Qe/hJ8PH0a508NPPP7k9u27lyxbiAhCyhJhFZzBTaXI5IuCwbfeevOKlatGR8cszq9gqyoceQ+OMnvWbHCtcLjubA9+8NC+7/w/34b1Hmi/PxhANB+xVVnGEBiaCokeNSf+6Ctf65o/FyYNONqMplK0yjnH38qlq0NVVTjxmaefi8RjwVAQXkEC9MC0ElH36IyJCaUbw/HUWCxJIJuskFmbPTs5mTFZGhD6Dh5w2Zzmb961pjkcOKeODcec7Nm8l7afGDp2tN/VVFNT5YFLOKEcHNBToixS5APkU6SmtvqO5nCd11zeWrdiZt0lnc17uvv+/PG3sdhjOQs8WGLqAjpQIGUStmMNxhKvqXp1qcjRrWR6YVwRMIEtJ2oqEENEPHD9M9uUAnER2CIMwygKubdvFDqQbmqGrpB3FPuGgeRimpm6goqTYUq6RRXg0KgExUejLVy4cCq4L0qJgOvzigXxLSv80MGAT4NMStlolDIGSbY42odMU3AgrPeUPnfrSiuTsjBqlRIllzXzeLxAQn7ws2cDHZcZwcaQMvapaxZjBnJ6C7qMU/WIw4sV6BO6uiptLYHxaaL2hk07KuXlRDz+wM3LD514+chYNKBLZQvMy8Ks' $Logo &= 'AFZLXneS5VGkqmCAE5NATLbxCQc8oeXKFc/+/u//HjAgHOFAJfkY8YpLAl8SBdjRf2EvEUBWZQbfSVm5BPo0NdevCHvcunUrErAL2jd9dzI0xyVyOtEYTv0rJCrdvHnzG2+8sXbtWmhIYhzx7I6/coEZoChz4LgaT2UqDuEW4JvDR53RcB5ZeJdhJJ955hnE9oKxTWKfTsJjZwDLFW36royC/TtRdE5auQ8L/iK4SBa3RwyjXeqRS6iimsimTW+vve4mMBVAPbNnzb1szZXPP/si4uoxjZB5bsmSpYsXLypi5KHr5AvvPw/YFSYcCg0ODmzfvgP2OtgSYtH4patXLli4IJqMVfmCIyPDTzz9+KEjB+vqKB0kQ2V5iVewounYgLMvJi900o7OuUuXro6MjpcEeCLqgHO8zOz22e87KOBVmF0cC50nCIIL6YuMyYCJMmmwLmn/vr2bN725ctklwVBobHxUKokQRFroAX8Qkbe6sIOVBQDInuCcVwZ9FvOBfB/SOQtzy2cS55MmYh4lCRv0SbEosqFpCWT3K6iy5jn7qzINr3lmBtkXPR3JuNyA80rgIYSwMXkgJ02pNBZPq5K8dsHML61btnRGbZ4Kw+XDQVxK6o1kd57qz1r5gNegNGITjhu5TA7ImxRwazIpcCGPrIsRdnwxeAER5uLzgqloZcvn0aiYLfAgTcVsqEMNSr97+8H+jUf7SKPXDfIdz+fJ11xTMYQ40lC0oK4ZvPCEzxjEN9dHo8GEO1XgFfK1NZGSXRayLYRZX8jnMccj/FoJBeXweoZhkU7u89cv8ZuFgbjsc9PhFdVeRcCH6+FHHh0sVc2fc2kpOXjPutpULtM/mpaFtsf0yOYaRU2CFQtXJ3bOiR64QSstc6usZQvKBdTms3dc8n//12/SVlgjs0yRQ4NKIjsF4HsUJwWC73A4wSfwSXWDWJyfNWsWOAry5SD9Ow4TfMXGALk5sfEiA6boj0MfXRUxZ5VszyGa' $Logo &= 'gviKCEFULgDPvvbaa7Fz+mhPZWy/4x8Nm985CK6jrEAF+epXv/rNb34TShLy9ICvOKYRggRZZqKsOTlqTq/o7U3Jm2K/oopAejEOlYkgHY7yox/9aP78+UiBOtULQKh0AkASVT8uwMWOWCGR5IJQuZy7CxHEYXK/RaZCuWapDzmhQ7N6S21kaASJaJDvROPK4aFQ1eHDB7ZsedvtNcd6xmB96pwz5+7fu+faa9YmUnHy2s9b7+nohJIv8teLDRZdYOLzR2ORyy87+J//+Z+bNm9pbKw/evT425u3tDS3g6mgkuPqVat379x94MBBxKgrXje7eNnOjxIFYTARlyWQ9Sp/lWl6TFg5z7/BObiuprr7+GnEcWIdWaUcR3DahFM33eBqu3fs/I9///f774vcccfv1VXXOZxxaLjvN79++c2NbyHRfTAYEJISrzX2aeMoGehPcDEJ19QdiFvD0DAMTWKKQ392njjGwbIFRSu0VwdR2Z04ygW1rSdGDvRFXJqi2/OaeBtF80hyPJnx6dqK9sZPXdp5z/I2l6y7LLOQy5TZ53LX6bHhkYSC8BNdhT+0cF8mSUekSSiXgX1RKUlI4rIMLE/kqLaft0jxp5JGkMueU6Mv7O69aWF7Y30gn47poTA6sbN7+InNB7tPj/jDfhUovsgpaWfuIdXEZ8BnzCdRism8iwzTEhCJ2bNnX1y0dhlhjIAXpn8K8lEi8dfUiP2pCw9UzyRTapoXJ5MMVcN09LrNOr+GKFI8YKGYI/psWVnDnYkP3H/l/AVzGnoHh023l5Bau7yVbeH3eX2v/+bV9XsG2q9+MBfvvXU51LbgaDRJUVa2jiKLOk0skBGKSCoj+2rmmSk51VYcudipNNU/NtpW57v7ijk/feVw0BfkQBpkB7VgSdGsXLXXZwa8udGo0D80jQq6Q0U13YhaMhyNB+jQN77xDRQcRJE0UCW4xgpPLZETT3gbT5Kp7XPLZyoyK1wbBJXk41SFCm/D' $Logo &= 'vIHqI8gVj2eZfow9hWnnsjbhrmQbOflsfMW5stCHUEcL+eX+4R/+ASrXVVddJdA5l2xXlnRC2QmSZp3RUQbBmiuuiT125nWHadEDWrbmJwrQiKpfGElYoXBTB7JzRgwHwU0U1BjbMH4J/ItrRVOb/vzPU6x6Dm/K4eL8VmzlSdzrtx38WBJJvHVNZ3WbeAzGE76zCxYu/OIXv7B61SWkTScTP/7PHz70yE9bWmZg/s1sm/nAJz914w23NDU2J7NpiQX4sgN0CcGTaw6fcaOjU1+94tLDB4/u3rM3EPRv27Ebg1ZXU3fDzbcsnL9o/rx5I8OjsJIhBAncmjx3s1mC7jlRC/4EToJ0jRjxC+Mo8XRi9pw58As4euTE6Pg4bmFpqvPmQBPoRqHAyePd27a+C+oBrrls8coMgpU8ntHx4YP7dz/++GP79h+srq4OcT1jgZGX7Xmn0HiUS/W1tXVNrb/uP9kbidvvskiolEs3MO60UVJgrJa9pdaQp9Z/gRzl+ED/yfFYXzSpyHawsojYpw0aKKsx7F8yq/7SjgbE6Y1ERpSSZOgqkt7v2jfw6p4TZAdkNYIyDkpgQ7w6GKFiYqWJWBONsCCiZbwomTsyh1HyOdXUd/dFv/PK7pKsr+tq7B1JNtRqW06N/mTDnm1H+qCXGKYGzoHhsbU0y+IMPSWvoTdUebCAsshAXqKbojST6+IadGhU65v+8eATuOl0jMOcx8gEaYgnKFvwROUPSpeHYUJl7x3HxxSVlpOimgATs9Howtbqu9YugbchsjFy6lwNn052cLfhOXFgzyNPvVS1+M6crFzSoC1vD/eORCU06JqVblmCJLPF1QGRBNUTkqnDVCrwfaounOw5ve6SeUeP9m46HoddAJFBSjGvGoqVTTc2tmHJ47ITYe2qiBkU9gNc2amT+Dd/8zd/9md/hnTRqBECmQ+0AhSjMhdOZX74qfUQJxF0pxQj7ot74SJPPfUUXG+RzRfyxPQ5irhp' $Logo &= 'gdsUfzNG+M55upPrDNgXPsFXIIjceuuteLOg7KKTovPOgFdaZSqZCqaA2O8c7FzfqZ0FRo0aLc8++yzq9UI3ghUK+6eqKU6hgcqqjpZmnVcYJoDrHLdJBhtcHD35MOAvbiLnIjWQkWQiD5wUIDgcJNatvam+vuFU98nNWzbu2r2raJHYZHq0+QvmXr/2RlSpQlkqQoOYDAlqQ1+LlUyFLv/eDRBcRJfKy1YsW7lqxbEjx4N+byaXfuhnD3XMnlNXXQ8VfcHihfjp8MEjmO1QBaB8kkAm2B6HmNG1cIsLZbkY8Rkt7YsWLvcHXurp64F7EklqzGIVVcMtgIABWm5obgDadmD/oZ5T30GhFGJsVAOngPFJJuPgKEgZCVIOsEs4I8icRwDwCAJH8YyG24AEOBRPRRJpuSLGl/5YZICwRN63gK3UIs5zXVDmV8y4aC6fKFg04oJvWQWufKXyq5Hi2dxIJhcIBsAdgu4cV2BR9wwlHt10aP3B7iAMJppckgkrY4oPbsSlvzRVM/R0Lm2bEEl6lXKpnE6x0FKZozLLnN7W76OchrtODv7Li+/s7Z5R4zEHd55cf7Dn4OlR6L/BKg8sOgAHyeG8gLNkkUQA/dRVxW8CQWQYEF2VL1qA4qT3qNI6/eNByMAnpn88cNeenj4nPTuWv9DDwZbkt/YgMEUpg3mgjmkxJGc/f+eNhXSEcRV4S1s4S6gFQnBJZGM//PlzmfC8cFVznTJ63bJ5Q0MDhbIJpjCJhDmfDoETlgoR18gOJjZbEcu4xEylQLbIlOkefuC2NQf+/blYOmuosgofMDJB5ttnNuA49q+xi0uqmgKBHVwEO0QqEeEvBMv5P//zP8O4gvSday6/DNokYBwnKMSxZDj9nMRgpiJFwmyDc5Fr58033wz6A9BRgLPZovS0G5VO5ubw2kpmI02POeGmqHeCuLR//Md//Jd/+Rfgb4DiMSlBgsV1nAesRPMw5BWgfqky/YczFMKzGZ8o' $Logo &= 'mrJp41snTpwAV/6DP/gDETsyKfOK0I2gKon7Vg6aqLw2faaCdzcpfSQ2hCCOF/fh2FTsNNcCHQacCqUEgX633n7bF37/D+rqqIDMyRPHfvyjHx05fAQDcbq75847bv/DL32lqakVjw5jilJWBAvhsXVGQmxJZ9woZ7D4lNvvuAvP+a1//icEFWI039r41i+feQrqEVbcXXfcg9ja7373X6GvuN1QDwCCUdQ65+2xHfPLNlp1IZRIB4NS9Tlz5sIneP+BvdHxaF1DvaIpsM9LnDGMlXSXCcZO4XixE6dOFixSS9llC32Rq2uqkYUJGyLWhBYxJgpVMTJHhkfAimZ3zlq0YD5klO5IciyatIsAq0yvKUhThUiWASymKtW1geoqP72mC2puw43athkwFX4JNsLGChzYnc9UcgVr+7GBH725b21XUyKVzlrFw4Oxt48OvrjjWDmT02sDUFMEcucSig6hICVgIDPCAZ1ZLazN8xpDv2kMZ+Hsh0EhawFjdwwN6IYOMjUeT63fewp5JxuD3v5IYjiShAkiAFuD6sqnMyCirN/AndoQCwirGSQ2CKaiyJyWymapF6+poKDeeXl5TYepOOZT+NcKgisEfHLiUBTErjc3N1VXBcbiWVXW8yDneeuzD66b1eTt7knohhvzKpvlMpETQYawjj/3zC8PjKutV1zjK8YeWNNsZRMRy+1WOITWEZeEsDYh9E0gYYwqUyYEAmbYsbgElEV4FouuFi3KJQkYdzSRaW9r/MO7L/+Xn75QKldBM4HeXR10z2ithxUa3eF3LgwqRRGeUvngAuyChek73/nOY2hPPL5p06aOWbPmzOmqb6gHkQJ7cPgc2hk9oxzUSHhVgciiMgESwuMrlIMHP/0ZYbLGkecXsi6Rmu0obQ7Tnb5c73BB+GV897vfBTb1zLPPbHjzTfAVBLLAGYdMuQy5i4hRh21U1pyV5Ape4nIUFMr3DBdqxOWc7j49d+5cME5gqqKHZwxm' $Logo &= 'xH6hBVaqF7bGc14uxdw4sbskZBDHcfzDCn7kJoAvTDJR7XxWe/s9d9/X1dEFD5N0OrFp01sH9x9CEF51dVhTtLvvum/RomVYukVywqcIDMFR7OQcsvClFVMSO5nyq5UbJMuDGIWCVWvXXr//0P7XXnt1sH8QOVBe+fXLKMV42813zp0774brb+nt6/3Zo48ODgzNaG/jWGxLVOfVDE04xlwoT3EhhJDNKoFrrrkWzPLE8ZM+vw+syzZtsVQCJpHlOIAGJIBtaXIEkDKtWJaDJBl2CIkohEYPx6nHsmXQtSim4x233XbtVdfErdLIKPyJs1q131ancaJVZBFXpqQmulpf7Q/4/BdMUwMe34xQoNZrDI2zbCKcfTE60DnIE1pD1f4TfWPffn7ziztqYD8fyuR2dw9lxhK4dbAuBE7CnJ5RKU1nhIoko+aq4BL4kqEafxF0IHXDnIYD3c3Pbj8GNzlT1W2EzUW3gwHG0DQ95E8nM0PjiaFIiiJ4/R7EXeIhs+SmwAejYYNbiavseAy12uc2FAoXra2rdX0QjWr5nU8DEAGyOP0Y6eqaGlVTMbiargFIBGRkWfiz6urMrln1G7cc1DzuSGx87bLOxe0Nhw8cyFKVErAUBBMTAGgoHNWmGaiR/uudpxtW3imlRi7rUAqJ8YPDoxBrMUl4JuC1lLkKgSpuLbgImycxd0hfdxQF4boqArYYirEb+YRoJD0djI/Pbmm4clH7+u0nXUGfKxObPaMjFKwdGurnjN6SCE4rWcS1aqtrKnUjB0+DfP3ggw/ecMMNKGUIj6lXXn4Zt8bohdGgsnu9sLM6qlil0Vig6wluKDsGvQ0XBBe58/Y7br7l5jmdcwQzwM7zdZzFBaGZioi0Iv+zDV2yhIh6dOIcRump+h/savDxRSUVuGZt2LABuDdCv+vr6sFloZ5CdwF7OWPGUqeYIzvQ5jAD8YyIUwHxBC0FO/nMf//v8KMDA66sBDOpkiMaUr2hjIXw' $Logo &= 'enB6LkDX6QcFo2PDg0PoCnLhuITShknCns24COSnD8NQ7/hlyPyJgnkzWmfcdOONHW0zhVfGLx575GeP/Qxkr6+vv66j895775kzt1PgAAg+R+OYI+bhRYFgAOWwab29IZ1hAwejgqwv4P/Cg1+KReJPnHwsHKpGFcW3N7+9dNGSWR3tcPO9795P9nT3/PwXj8LfjEAi0yQzFATvAgsmDKRMtd1xcm87F+m5JZRQKHznXfdufvvtbVt3y8oAhM1gOGjh8vkcR+br7EpicSH1guBfdv48oQ1MlDrmPKCq7tFRI2B8dHxwYHjmzBk33HCrXtVoRZLp4QjSFLt9JoDecjZLZ5FvsQrWwhH4ilvXLuYNg4PPrg60Bn0DownqJKNexCE4RR/EP8MEwgF3cWt/9+hxLQqBGSvPF3KrBpG4MudRmBhJ5hOMLIS9ZldDyK9pebgS6MoVXQ2v7u9+Zn3GQrEmt65AQiQ/b9a9IARhE2gZ8D+vTvnFFFmXSU9KxLPQUVBn2cXkDwdT4lFZKZqaS0+GPFpdFYiR5kf92g+ooWzf+Xp5ndfxNdBQA36BJAiEAWRUWH2XL134zrYDVtkyVNfBfVu+8uZziOXAuwZxL3Gor53JW1ZKZaqlHVxyixmsTvYdfvbpzQ9FBiRyaCffMVmkwsPhrJmUK8rpcTpO0tGhGjvQUllmKY3nJ9QVESqJJmJcWPqyVFPRgzMl2aORKaywfMlC4S4hsxwsUonE0lEE3ADUPbPQyQ3BgPAEg9EeYY8HufWgnT4NSgrOcUZlBRcXiUNATJYuXYrSNYhUh4KIr1Pr406/4YKg2o8//rgJNIm1HOdSgD2QuQvRCKLn09dXcDrgUJRrBPvcvXs30Lmj3PC6xdOdW+ZAE/m7wJ/AS6D9wIKACwp1SkSqnq26F86Kx+JvrH8DLGQSYIi7X3bZZbA/va/cI4YFHBGvA/xMuDDwfrt6MUZeHPnbTigJsZtECQ1ikqLgPS1buvym' $Logo &= 'G29ubmkVXQHNPbjv2MKlXRDN6uprr77mKkyIkiDfgC24h0EPDFFepyLK2ZE21MjKFF0slZTAHvLhUBgeXLM7OyHNeH3uY4cTB/YdGB0ZGhwemNHc3t4+a9HiJQ//7Kfon0bznsOIGEklGEqRLqAwhtOg0kKMqwvXfuWPvpqKxze99dZhxHm1t3vgyiMiNkgAkWUR0WmrtHbaYzt+nkP9cYBYw9FIDMDXQN/I6kuX/+VffPOSleTgMBBJAG5yGZpuUOJYkAL2Klb5suTDG3QbDT63qamuC21uTf295bM3HT69deeRpFQ2dU3G1STmD7IiSuDIbqOkIGuklYDFGHeX4DScL8VzkteoDbg5WFoS2JfQmml2mnoD7C0aBe6AQYDFXrug9fVlszfvOj5+ajjQWqOTCYmMMexZYrksqkOoe8jmj1CN8UgCaUqrwwGvx4xm84pEYjMIsOwiZlpgxlYdcHc2AGJzfYANhOC8jr/88svPK5kxoCtI2SCp+MSihWwuKAWWcVdHW1tL/dG+iGkoPeNSTmlW/IbOuYop+ami2jRcUTHgAX+gqrq2mEmagZp041Jf22qN1p/CqgUJ+7bdXbJXFLtagTMJS4mF/zvJuPBNYnyGUBrO7IXDOG9JHoY9kUtSQehSQqmrDSFj9oyG6nlzZqWS45JKua/ViZSOkG1ntrWBAk5FoiZJ1iB8i7kJ82SSGwRhkL9JVbYwPiCXoHSQkd3cnCs7PODCkmvhyqj7edttt4maNE6wiAgwBPMDFT4vduWY7kUu0XXcQIjj3PB02K48eCpTESltgtzwvPjqTBun9NbZHge9/drXv3b3PXcLOFHcwtH24DCGMT/H4ziqHtjGt7/9bXRVfHUu5VTO/zC8v7j+PCRs5AqhHNQYC4zg9u07ddMb8JMosXTJUkRBQseEq2E6m9741lv1dc2trTMxzBDXFS5Lls6XE8UcVAiSlSbiEKk5wcPslufV1SpE0Qt3Q/uo8tDoUPfp' $Logo &= 'U2Bp2UyuKuybM6czFKqG1pLOZ2OxyJGjh1WFkt5JhNDkFbbVE11mqn/uWhrvk1lBtgd65fLV3/zv/9cPf/wfL730EooNYzC8fpB5E2tXwAdWOcdeZ6qVJ59O3lbIfoSFzAZmcMc0zA7JtNt0z5nX/uUvf/WO2+7MpBJDo2P7+8fzGCJdRVwp+zOwT20Bse7ktlvOFQAThU1dQp8vtHFJDwmJ53++5eDweBo57WEbtwsxgKCAwGO4NM0wFTA2qgwNNlAo+lXVpytFWUrmKV27HVWAY8miRKE4g+OJ3T3DnQ2+No9vLJZBUs7OhtB/u2mZkS+8seNYKpEp+kyDLyWLFJnQ5xSVtC+rANEB3g61deHlXc3RRGbzvm6oY16fWspTaEshncunsq5UVte1kNck5O2Da0Aezut4hGKcV651YYbZt3efSMIoXGM5H2sBosFVl19y9OfPgpBWB2ssPSSpXgP2J+LqquArzO8VgrlkBem11XJRMz31XSsM8B0FqiOlaDKxRZNeVTUymzgpuawS6Xu5LFlhs5Yrz8iSRfkPGAcT4evFLKGzwsKXz2Ab37DEVexwJRUpI+WSV152MzBHlEVGR8DfnFhrQHTvOxpOdJ5DyAxu0G+mz5grgTXXRbQ2blP3T7WZn1ciyEp3L5NbXV3dBXTPYXXvO6NEa+f2vhE2aOdQJcHV4EnxviVtfvsJJUl+shEweEEcP3EC7oP19U0d7bMjiSjiTlH99Ec//jEMf0je+fBDj3bO6gJTKXNdDF0mO/3m4/3P7e0dTGTcmlTj1TkbGD8DV7KG71bKKgFjXDen+Wu3XgYRWCBUXKJ55Ic/+N62d7eAHEfGoi2tTWsuv7S5pc3nCYyMjvz4R//+yssvqoqOCsFUf3BiKoMT8jDTl6kImBA33ndaV865jtldX/v6nzS2tPzskUdOnexOn+itb4Afv0cA6BDDbVdmhdJqC91FFg4H6Uw0GkdYPnIS19QHb7jphnXrblx7' $Logo &= '9XVk8JfKA8nMzpPw6Im4RuMRHeykovgbzi8UsT/npmqSSbIEVLkuqIlZcuWc1r+8bc3fPb05crgvUqoBnfCCi+CmmipRjhx0NYc/wp0Taa2x5oZls+9b1blp1/F/e3Kjy9QRm8lMmjuGY6Kp4/HUY4Z84+KZsu4ryxmkNQhq6tLWqruvnHcslurpHkqlsjk/vRfTCwRCAyCfz+Qh7ZKDdSQ+f1nHF69eAlvqExv2WqMxy9ByWQ9dGSyWOEqOij8Xi/YdP6AGeYiiu6fbJmOk01z8LU3NkL0gf0BZAVmXVYkCzSQlGk+uWbnw9Q3rTw4BATeL6ahLh2neJIVAsaQSc19wGFWDAiETE9EIypKLhRxyo8kuQ1XxM0JvKTYR2qQKXi+YvdA+qOIAl6YAMyG+AVtCngqRAs+k2hAFfFBmUTB1PrqAecVfs5jA6ULeo+Gk9IzG0KUrF8cTSWCjpmQnDQMng7UD9AgS8XSoMM46owPx2YhdpQHjIhlJZffK3M5hLDkvNWXq9tSnq7z11Md0th3cz9lTufG+FH/Sxac5bpWq5NRncUCwDyf3V5mUadalcwWoI55s/8DJEycefuQn7bPaZ8xsD/mrbrrllvUb18MRq79vEHP6pw//V31T/dKlKzHpo9ExxVA7G0O5HSefXb8T4pO3NpjnVLiSLUcrGVCQaLK2JXzP8tnYX/lsL7/ywi9+/vPRsRGvzx+JDD9w/QO///t/BMqNn1577ZWfP/royVPds2d3qnaZZvowTF1wQCgKZzPUT3/4hKaPAsMoVg+XNqQ4O3r4yP79+/oH+5OpBMBiuGPItquPTHmTFHJ0K1CJdRIKIPtXh4Pz586tqa4FhHrlNVevvmSNJqnDQ0Nen16iCA+tc2Z9X9BbG/ah844Cx5VgrBGve2lH49ymsFouXWRx1qDH/NK1Sz2q9JM39x4fTg7HUrF4kuwtBLbI4iDD7+moCzcHPVfMbbp8fst1XTN9ZdfPN+6Hvac6' $Logo &= '5GMPBdto5Gq0hhJJfBlPM1ivSIBSAM63hDyfuGoBjArPvXv48EDkQN9IJpLMoFaYgO/yFjKPzW2rnb2q4/NXzLu8sxWFCHcdqx1JZMFdfEDG2G8Y+opUKEYsqw22/VTaUMuKQad/IP7EMIBP/3h4+BCyfz5NGFHmdnUhpwhSKijcGNAnmALm6ltvXPfdHz+qezyUoa5scRpHieOjebXjn50n2iYAFXkKZDu7BQkwHCnF34TnmYvYTlkulrlcA3F+0Z+Ky/Cl2Lzpoj/aJHyAE7rpistQMPKFG9ddi9fX358ANxWYjNA24HcDMwCk8um7Tk2PYvL+3067MOgM7eKfDl8/8MesTLTzgY+Js/NDYyqcG4AtCEBlockixvU3r7/S2Nz4V3/+N3pVVXVd3Sc++clf/OwX+/bubZs1Y8PGDQ0NjW0zZtXV1luUlrXU2Vj3tXXL9p8eePdwfypN2LrkshPhQZxy4U/V/vCaZV+8fqVUwYNfe+OVp375RCYLq7gER4slyxbfcvPt1aFa0PGXXvnVY0/8AjlUmltaQtWhbDrFudZVgdKyowtzLekDmDQOb0fp389+5guIRd29d9eGjeu7u0/v3b0XJS6wuO0VK4rcMU/QDb2mNlxTHYJv5YoVqxYuWNTaMhMIIITlYoFBHqtU7davmttcFfImM7lqXWUjuGNdlxBiOhzPzKoLrmirDZoX5U4rGIHHUL+0bsWlHfU/2nh4Z//YicGIapVEnB2lzfcbXa21a2Y1r5vbuqjBh1wA+Kmuxv+FW1f4TB3lhCHXVrJk6CFgpG5VGo7G8PwY8nTegvmoJhT4zOXzL+toeP3A6Se3HeoZjacyBcrCiSMMbU5r3bVdTR9bNmN2fTAylqwy1euWz+qYWae7yj4VJNHpMBVlWVgfSKaSBUMJGh+M+zzIIrxuXL/9BuQaTAUGSJhkCQdTFIvTPYyPDF9xycq3t2zfuv+kx/Sm8hl6MQzWkh8yrzHOOVmSFKqh' $Logo &= 'whRfGLdlVuyFYUux/8m2P25JYE0i55iEJnjJRKhdkasX8ydporgatqkqJTCxAj7x59bLhUx0SVf7VZevHB2hIRK8UESoINIb5pBFixZVUKXftd+1i0p9L8PdHpTE5PILGuG5vt6evp07dq7f+Oolqy+fO3seDNqHDhzctXu7QtEVeeRQWb/h1SuuutbvC2YIuinNa6r+23uu+uYv3tyx56R3Vr0i0aXApSLjCa/PXL2k/crFszT5PaQTgSlvbtgIb/fu7t7W1hlf+sKXVq9axUHO+oF9Bzes39Dc1OjxecnDSDdgUJE4QoQiRTl6XVLZ++uDbgATAP3dccvdWHSWRZVcx0aH4/GYSF4N3qabBhLEVIdr/FBGdC5aoKrwVYODCNgJiARncaCS+qYidVV7WsMmFrtaYlRUoUcoc7UcXA5GV1NRAqbaWH9hDrWVUF5JcLvOpro/vtGXyhdhYMde/k2UlNQg3qouK2xKiI8hCdYVb/Krn1w5S9EUst0Xy3YKNR5bHCBZsB/qIElCwxAxRlCwVE1vrfZf01W3sDlgGl7hw8/e3rhMSZOsgKGkk1ncIeTVLmsLLW8I4M0rCg0Lg2yS8DV3qzLuSFVg/7/ThEUB+g20HJjrgbZjStBenpMFYFLZ5AMfv/vgP/1btlDUFRhOYDoxCCkGD6HkzDwEONp2meRPbpUypfjn4i2xy9lm1y4heDL0j8Y2ML4O60FFscfmORh0Dfy+mPG71Qfuv8fKpigSgptTxQRxeSjsAd9Z8R4vCnb/XfsdUxFRF5xxwYIlAF9JQlJUeKAjd8L3v/89UzMbb7oNNPQzn3oQZRA3btyMOXfy1Knvfe974XDNurU3pmGhTmfhvXDzko5t3SM7uocL8YzkNQyPSeUOk9n2hW1/cc8Va+c1w5ibyuaRmh0uws89//TLr7wUiyXh+dfQUL127bV33XE3XAMw4199/TdPPf0k5NzWVnKDgQkcn+glF1UtgSCC7ZH31zQw' $Logo &= '3/NFNlioJ93MXW+CYTg/ISkM1q+oV0qR5u+tuZJMpwB0c14EEQDFWXeLhItX+/RmTRGlnQyqSF+m3D7sey1xZUrZ7b+YyuqVXwVVcRtGR71xljOsfAbVTQpUNEzGwKb9utbUEqa4x8qgH3Z9lUmGRpQqIHsQRN6Lxsn8VTyLps1prptjl4iobEVQ1WQWUyCPedSIoIf/45oguKtXr4bXKVAj0GI42+iaRnZySRuLxtpmzPjsPTf9+389ZXrCMHmQUqbIGGSJFyJFk0qiQC+5RZBRsuTi2CL8YzmJNygiVegk9J/4k/AnEuKz1iyLAEhiJ0V8UmFHDnC3YJeRStikkyDDADBGMvD7Pn13R1tjb/dpx2NNqCl4BKjXeJzfqSm/ax8Q/FUsIeKGJRQKcnNMOlXh4PDg8Nub3nl79eZLLrnUssqrVq35xH2f2rvnANDaXC67fduOt958c8XyFVT9RbNvcf2yji1H+t5451C8YHnBD2Jprdp307L2tV3NMIv0IbxLVcBUtr679bvf/153T/fMma3wzr7p5hvv/+QnvT5K/L7xrQ1//7/+btfuHa1tjbkcGSZt0inyWlEBdUvXVBLDivTxwSkrDJdjmRkm5HGkvIQQDSaDRUwZetnNS5TizWUKk5iKz+NFkDBRC5nz0MiIIKt1fsVP6KhOxmwTXw3V/Vukd5x90CpZ4HPZfFYiJsAjpBC8T05zCtgdayRkuVJg/RrL5ESyA9pZuVFi+icUFIm/8nUc0RpDBWKaSIwjvK++pt4B9jQzGDJd/wc3oayAl8CnFmEx119/vaDRTqZFmHauu27Nse7+53+zxR+oSeXypJtSXXilxO8DG9BdFHyFwkIxjQQM0jY+KU+2UDN4g14AIWR8WLlksxaZ/jibuKi6IvzsixZWM4UWk7mRDSqaVPRprmR08Nar19x8w9qBvlPoJi7hRHWAwezbtw/mQPjgCgXl/2XvWqCbKvP8Te5NbpImafqkpZTWAgXK' $Logo &= 'UwqCQqkgQ2GWijCWx05FLNTHiKCz7OB4juPuzDg+OLM4Hkb2eHY4ux4FV0flNaAMVFcRKSCgSKEtfUgLSdO0Tdo8mvf+vu9jY5YcmZYpFOr3O+Fye7n39tLTL7/8X7+f8HeCg5MKFCagNn/xYrMM42xq+OwlrSxExrELhtfO4JZ/3xyfYHx49eM4GWJfBTOnf/zxJ+ZLFpQ69ny4Jysn56EVq6jiZKdBb5yWmbJw8vBDNU1uh6sLk9Vd7tIFk56aPQYyLN4wJt5kSVbV1J/b/9e9LWYLlgj9DQ9MmTIV8vLE0vns6df/tOXL41/C0tdrcHd22aO6L0jNH5mxFkuHKAk6g9bj8+A5ry1fdPUBIlkjY0W6vG78NIg0EtX5YcXPZFOSEAPW2I7t9/0TvPxMhmud7+t9QCaJEv128de7gKmhEH6owJg0VAIxAIj2fwzcSZLExA3R64uJpbKVJW3t9mNf1mDqz+0DBPRzCZjsoX0PiDiw0IjssyQFqUNfCK+wkvQN4y8SboTBG6KgwJk4QComVDsI7BLENkzC3QBetIMYeVra84VXkA3ck3hHGdSrFf7O1jsnjHiotMRqacZnQVHU4J9wniAQ7Uhk8PDM+I8IfQUOTioZGUOWLPvpzBYLJEtRfA4QEMkHGfv+IDJbVqsFWSn0R+HknGHD1zy+rrPTuaP5A4wtnjr59fZtb40eOWr02LEhmgXCZ/aSqaMuOj3/9t7nXRds2WOzfjp15ODE5FabFW2QRoMeWYLdu3a+te1NZNPRiZuSPPInZRjSXypQYMJo+LDc8vJHIDwF9WLMsSIuIdE+tXjBU+FytPBi9WYOycgdPtLV7Y7T6K6ZSK4yRoQmZiznoCTjSx9KJX7iTDXINEi4JsCJUhgo4EAswoIVzPTNmzdv27ZtbNSOjUzT31ilsxOCpB1PPrHyxZdeO17TGGccFERqmcwMERE4nEMdy0XsQdEghLQqvqYm8xIljOiIRGDe5pRaCJfQ' $Logo &= 'MryXKNHi5cMr7KOZLpwQJCfR4IXplKo8nZZxw4asfWRlt8vR7e5CZhvnUcE64kaFgc3Tp08vWrQIw3q9EnPk4JCuUlBBw+6TT66nZoyKSFqdVf0UFOh/J87JFMjq4LWg+N66hvPwh4fgDzo4N2/5A/qAp08vbGuzoSRo0mo3zM0//XXjZ4HQunn5Q5NM7k6kkpTGeB3ildras0c+/6Lpghl6i1hCELpf+8R6mPuyPpbxYyeOHTNBDXFfBWMCJsROUi6XS5R0I1PfEGTtkFMSrgMYCUEkgEmHQk4G6SAirHTDEZlt5rjZaioM0NZFZQUGgkVFRUy1CdSAMUTQQ4etIzlZ/OX6Rzf+ceuJry4Y9KkevxskAstUpA5JPEniDvAELFgkWKVACsgTUsoBRZxalHzwVVWIgDLA5HjBR/6QCK0dZF99XmqijUvwDRFTM8uVoKAKoQmNmE5qVKSH2GOzTRyT9fM1/4hf4dZ2u5quYkXUADYeG/V5+FP1XcspByeVcJi1xcesm6gj6isvL16wEJJcmzb9nghB+L2HPj28qPgnErGLJklhAGJWP8ofkZeTtjB/RKqByB5jLaUkJINU3njrjZq6msQkk81qGzUq9545hVA0iIhr/j99G/GK57kSPWeUSAZZ6C1omw1hFw35HCrcWIDZhZsVHJEuqcWLF7/88svHjh3DuzOTswQXMAtFTBRCg/WZteVbtr770aHTKmOSFFB6ibAw9UBFJgyMoGCjx7SyEgxRZTtBCQ9JL/JhNK657AUbwuqieS7sMul1QmAhBa2PEcVexCnkEjgMiZimtdtmzRixauUSv6fLYbPjYZg4bkQU5MSJE0jZ4eFjp7WvHRycVK6tym2IM8yf/+MjRw6dPHUSZXaky9CslZE5JG/seNRlMPIrSarFd+WBs1INugB0z0V1QrwBi+X9ne/t2LGzvd1mijd53C6sxtLSlbJad6PeAkK9GmyJTKYhMRhRFbthYDNsPHy5+Sv2' $Logo &= 'MCCBPSK8RtBnDPVAdLuw46iigF2s1lZ/XNfjDy9LH5L+7s4KhP1GrckDboAmMIlUJDpHoiJUpCTD9sTOR6kmvkZqFRiC9kdgC7YIYvSedeCFGP/QvmwFrguL1PsWNpQhrTIUcLWJAUfpfbPvKy5obzM7Oro0KgO1ArpcMgSjwJAKvZ3Qzoq0EfcdqXDwlmKK3nbijh83oWzVQ6/9sfvQ54eHZGbsP/CRrNNt2PDLoVnZyEqhvyvVoGU3d7p9GjWgeve9t//zv/5EHCB8REZ7wsSxc+4puiGMwqo1ToOBDo33HtG2232e3fq+qvtVGCVG36xHZaTrwUMcTBMIyrvLly+HjTHaFlBfQbyiBESRRQAYD3X6zy+eN31MdvZ/vLOr9ttLGsNgQaXtpnlmNqII0aawIOKFkgeZ3lGyrmEmZEo6ENmET1iJfTb7SAdKSLkRVKQGNUmYYvb4fI6LwzISHipZPC43s77R7A+4QFOwAoKSGFOjwhNCbAna9UuWLMG0Y+815xk4OKlcB8AUsqLik48//QRCkM5O99kzZ/Z9uOcfFiy8bWiOy9Glj9NJVFVJVEnI89rt7UePVJ75pgquqxgShKbWipWrMVYp3CiAURhrRtcq2E60/Mb3OdZdp7V3lXtGHg+g+9HH6VxJFHngYE8kNZk9eL8k0Knv1Hf6BXiwAcYrBQUFGObfvXs3SvfQBHN5iI89sSAgShAi5oKqz9cPycr49YbyPfs/3/vJSbvLozIm0+b4kDJMGvtDfkEUqTpxEH/Q+S1SMfzLTQFgGKrUgnBDEkAyAqzmJcgf08q9J4jJoPbmRFmYU3RH0dy7g6HuqroaUBT1siMS+CAupi5stbX+df/+OffMQSf0NfcQc3CQlXw9PsyeOHX8xZd+V3GgAqlkqOKbEhKe3vD08qUPQDgr3oiGMV2YhO3K89/WffDnd/57+/YzVVXwYjIY41aVlT++5ilZUgscfyuIjGY7ZxfmfwLxCQkYOIll' $Logo &= 'PsYiN7LyzxHRGWQ7sA48ePAgnKwGpaexeIWZEuI0ZvmuN5jS04dYWzsOHvzs6DeNDtjNGNIkfaKaCEiqw5Ia7jchmdg8CNinFteR4Xk/HWYR/AGi8uKTYJ4m+NF1bw13mA2yf3Le0KJZd6QkpmA8wOly4GoqlSRENOExzow5R0hxFxbMLCsriwm++xscPFLBTN+kiZPLyx6rra61tFzCurnQeKHy8OFpU6fpDDBKI4TBOqa+/vqrN958o8ViThuc7na6l9xfsnzJsp4wCmtG+8EiNtOtNxivOKG3qcs+ZBTe8BYb85WWlmKLeKVw1t2QMQevKCiY9wkSYp0Ou9PRkZKUUFoyZ+5sd+Wps0fPNFo66t1SnFqfoFInCqIiTqGRFHIYeyEVk6sk2S7krsIAJhs9AUgiuM3dnVbRZx9qkvMnjM6/fXRygqaj3XL2nBl5NyTFAmQG5jLhReooyHohQFlR+sDfaf/HwaHs+XrulQ8rtrm5wxctXpiUlNze1h6fEP/Rwf17/vKXQUmpyOR6Az5QQnVt1Yd7d9vb7NAqxtJKSIqfcPuk9MFZPSyVo7wvcFyVJAZSvQSMcitGKpE8ErbglZKSErjvQToP6SbGKEwPmLi9BbwgiGar9ZvzdaGws2j27f/82KJ1D8y6d0p6bnyn1lUdbv3K1XrO2XrO017rtZ/32eu7O+o8bbVuW63PfMrddNRrPqbsPDNUZy26PXXt0tm/WHHvnIJxIZ+z+lxdi9UN5R+aciMF/MiKxmNUVVVVVFQU31v84IoH8SR9GKNw8PRX36PFevHZXz27bdtbMGOoOddQUHjnr//1t5On3KHTxQV8/o0bf/fq5j/A+a2hril31LBV5WW/+PkzQg9AfREFJZPSG9DgiC0F3erZMLyDb926FUV71FpUshp6NiGKYIBaONIKfJD6NsKaxWQiuWLE+ohsOuwOc5fH4XS5PUSkyBtkls2SrFab1EqjXpeYCAUlo1FLvEfd1A7d' $Logo &= '091Ny1QiiVxD5M5MwBh/y7KM2x6trLRYLGhRQ14Ox/uBUTg4qfQ8jmHrf/s7b77yyu9bzDDWsmVkDh47fsyax9bdOXX68S8rN23atPfDvbflZDfU1c//cfH7f97Rq293q6R0ODipXGGOhODg9ddfx6jKtDunDc3KIi6NxAZbyUosQQqcFtEhAnMgSRUHyIIoSUS+FC8qSgwIZHCFuMP5vB6X04lGANwQR1WSJIrSd9PKgsgeA3eDlw+45NChQ+gbfri8fNz48TdXyouD11RiHRUjXLWg+L7z9XWvbd6skAQM+1YervzR7HMmk3HHzvcumpu0Wo35oiU/f9KyJff3kE4UN18thYMnvnpovce2eXl5zz333Pbt2ys+rhiSmQmTV/AFzA6AaMfZSOgAkkBAQ+RHcR8qBSai+0vwM1ohpSayRdMXHV8RpctWKwQ+dhM20oKDskaDIKbyyFeXLjXPmjV72bJlMEli/c03XcmKg6e/YnmFJKlEEcItmzZtrKg42NLSKsuamTNnYFT+iy++6OzswimSKK5fv/6xR9f29lsM4GCFw93tUZDP2io2gj4wQk8WDUQ6DrA9crTy7bffbmpqgu7kyNzRhFoocCY7jdEM+5KEJwLNkMHGi8qvhCMtKxhJwR7GGHFcDLPzo6lCBUgymAkmrbW1telpqUuXLr3rrruYfHKE8zip9Cc4qfR8sA4WKdXVVS+88MK+j/bljcnz+uDW6JIkFZwTEX0XFBb87NE1E8dP6vn9BzyvcLS0WZHgMUBxWtbEzIEOqIZjVD4OHDiwd99eh92Rk5MzYsQI1FFQXkF0QoIVIESI4f945Tt3H7rLNgAoKkjpgUQpjL1wOTVAEyVJguzKtw2NDQ0NaKKZP38+KigwprwFBoM4OKlEeCV2Uu+ljc+/+uorer0RcbhGo8bA2zenq++Ylv+b3z4/d1ZRr+48YHiFgw8bKShQ4cAUC/p622HtlZKSnXNb6qBUnVaHE5AWYwgz' $Logo &= 'RWJ6IYNASitXjiWxdjJswS6ebjcqN4iEMIaSlJBYWFiIvmH0CLD0GsuSCf0LDj78GMsZV788MqBX11j74ovP7961RxQVKSnJbW12gyFu1eryRx5do9fE/TBJhYPzSnTeCW/9lZWVqJ+fr6uDaBFClsGDM0zxCUiLofc3whwhigiFRI8xAqj5wycCJvktLS2Ozg7cGQHQjBkzpuRPBp3EakT2D69wcFKJRc8FpiK/97v27Xr+N//S1NwkKSW3y7NyxYM/W/OEzqBPS07rIaMMVFLh4BYskYFWVD7gyX3i5Ak0iTU2NMKjCJEHeAWZK2xlWQbBoETCrmYqxciVQa0S1r9Ic2EHh3B2VlbWmDGjJ0ycMHzYcI0sR8dGAkU/eM5zcFLpK15hp10yX/zgg3e3bNlyrrpmypRJT637p/tLllF9PIGTCgfHFZMioAqz2dzc3FxfX3/hwgVEHghBcNDrJSbfEUpgdXhwjdFoSE1NzczMzM7OxhZxCegn5s43PTg4qTDC6GFxxensfOaZp4+fPLZq9ep77p6bnXVbzxmlz0nF0mJJG5Qm3Ezg4IiujkQvAcw/IgpBLOJ0OhmvAGT4UZa1Wi2LYzDOAo6JXTi3joI9ByeV3vPK+zvesdqsxcWL4vUmrIO/qfHFvB37nFScXRgTcylVIizChOuDVrsNz89IEd2xifEJkRM4WttaBeKGTirGcRQu0hXoEonRekin0+q1epaf+WFGnGGKa6CEWMeKfpDz4uCkciNh77CZ8D7e3/B53U6XU0FdKcFdwUDQoDeoI7b24aDT7YQBjFIgRkdIaKtVWhz2eF1IQagUdPgM1wXC1FtPCHoD8YZ4SSM7uux+r1elVAkSLZwGw1TcPQRBDqOek4rgaLeRH7iogJ4ufi7YQUVar9PLmjjSau52iqIEiUWtRqfR6YUo8KglUhGJTmfFRjb9XIHn4Pjf9uqgCAAABgHQ+pd2JTxfUIKUAMBlBgCpAIBUAJAKAFIB' $Logo &= 'gAcIIS5QiH1PVwAAAABJRU5ErkJggg==' Local $bString = _WinAPI_Base64Decode($Logo) If @error Then Return SetError(1, 0, 0) $bString = Binary($bString) If $bSaveBinary Then Local Const $hFile = FileOpen($sSavePath & "\pspad4autoit.png", 18) If @error Then Return SetError(2, 0, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_Logo Func _WinAPI_Base64Decode($sB64String) Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "") Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]") $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "") Return DllStructGetData($bBuffer, 1) EndFunc ;==>_WinAPI_Base64Decode Edited April 14, 2021 by UEZ Small modification ;-) Exit, FrancescoDiMuro, Werty and 5 others 7 1 Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
Professor_Bernd Posted April 9, 2021 Author Share Posted April 9, 2021 Och, no problem, I could have done that too! 😁 Just kidding! I would never have been able to do that. I'm on my knees to your graphical skills. This is a brilliant code with absolutely cool effect. At the end it says: "Press ESC to exit" - But I don't want to exit at all. I'm sitting in front of it like in front of an aquarium, waiting to see if anything else comes. 😳 Really well done! Thanks for posting! Link to comment Share on other sites More sharing options...
Werty Posted April 9, 2021 Share Posted April 9, 2021 6 hours ago, Professor_Bernd said: Wow, now I have not only 1 icon, but even 2! 3 ! It was just a quick mock-up, with a little more effort... ...there the pen is dominating, it's got a 4, the au3 logo, woven/braided together as one, and is "read" from left to right. Though again, now it has so much detail that it doesnt look good as Icon, at least not the smallest, as seen here (128x128, 64x64, 32x32, 16x16) But it's awesome as a logo, if I may say so myself argumentum and Professor_Bernd 2 Some guy's script + some other guy's script = my script! Link to comment Share on other sites More sharing options...
Professor_Bernd Posted April 9, 2021 Author Share Posted April 9, 2021 Wow, I am very impressed with your work! The third logo is also really good and it is good to interpret as you described: 1 hour ago, Werty said: ...there the pen is dominating, it's got a 4, the au3 logo, woven/braided together as one, and is "read" from left to right. As a small icon it is maybe not so suitable, but for example on the PSPad4AutoIt3 forum page you can use it well. So you could use a mixture of the logos in different places, which I'm sure would look really good. But the second one is also very clever. There you see a fountain pen with AutoIt in it, sort of symbolizing the writing with PSPad, where AutoIt comes out. And my favorite is the first logo! 💘 Everything in it that is needed, but not cluttered. Can you create the originals as icons and send them to me (PN) or upload them here? As you prefer. As I said, artistic isn't really my thing, so I don't know how much work it will be. If it is a lot of work, I would be happy with the first logo already. Prof Bernd. Link to comment Share on other sites More sharing options...
Werty Posted April 9, 2021 Share Posted April 9, 2021 I dont have any software that can save as .ico file, I use an ancient version of PaintShopPro from the "JASC" times, which doesnt support it, but just take the png and upload it to an online converter, google "png to icon online converter" and tons pops up, Some guy's script + some other guy's script = my script! Link to comment Share on other sites More sharing options...
Professor_Bernd Posted April 9, 2021 Author Share Posted April 9, 2021 Thank you! Link to comment Share on other sites More sharing options...
Musashi Posted April 9, 2021 Share Posted April 9, 2021 The following results can be obtained with Irfanview (but there are probably more suitable programs). pspad4au3-32x32.ico pspad4au3-128x128.ico pspad4au3-64x64.ico Professor_Bernd and Werty 1 1 "In the beginning the Universe was created. This has made a lot of people very angry and been widely regarded as a bad move." Link to comment Share on other sites More sharing options...
Professor_Bernd Posted April 10, 2021 Author Share Posted April 10, 2021 My about dialog is done and I'm sharing it here for your use. Thanks to all of you for your tips! Link to comment Share on other sites More sharing options...
Shark007 Posted April 11, 2021 Share Posted April 11, 2021 (edited) On 4/9/2021 at 10:11 AM, UEZ said: Here a fast hack: I like this Aboutbox by @UEZ. I added DPI, singleton and drag support to meet my needs. I'm sharing my modified project in the hopes of helping others use what UEZ shared here. expandcollapse popup#NoTrayIcon #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Res_Description=About Box #AutoIt3Wrapper_UseX64=y #AutoIt3Wrapper_Res_HiDpi=Y #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_stripped.au3" #AutoIt3Wrapper_Run_Au3Stripper=y #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <GDIPlus.au3> #include <GuiConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPIDiag.au3> Func _SingletonHwID($sUniqueName) ;multi app detection Local $iReturn, $sOccurenceName = _WinAPI_UniqueHardwareID(0) $sOccurenceName &= '_' & $sUniqueName Local $hAutoItWnd = WinGetHandle($sOccurenceName) If @error Then AutoItWinSetTitle($sOccurenceName & @AutoItPID) $hAutoItWnd = WinGetHandle($sOccurenceName & @AutoItPID) AutoItWinSetTitle($sOccurenceName) Local Const $hControl = ControlGetHandle($hAutoItWnd, '', 'Edit1') ControlSetText($hAutoItWnd, '', $hControl, ControlGetText($hAutoItWnd, '', $hControl) & @CRLF & '|SINGLETON_HWID:' & @AutoItPID & @CRLF) Else $iReturn = Int(StringRegExp(ControlGetText($hAutoItWnd, '', ControlGetHandle($hAutoItWnd, '', 'Edit1')) & @CRLF & _ '|SINGLETON_HWID:0' & @CRLF, '\|SINGLETON_HWID:(\d+)\R', 3)[0]) EndIf Return $iReturn EndFunc ;==>_SingletonHwID SingleApp() Func SingleApp() ; multi app handling Local $iSingleton = _SingletonHwID(@ScriptName) If $iSingleton <> "" Then Local $script, $wins, $w, $handle $script = @AutoItPID $wins = WinList('About') For $w = 1 To $wins[0][0] $handle = $wins[$w][1] WinActivate($handle) Next ProcessClose($script) EndIf EndFunc ;==>SingleApp _GDIPlus_Startup() Func DPIRatio() Local $hGfx = _GDIPlus_GraphicsCreateFromHWND(0) If @error Then Return SetError(1, @extended, 1) Local $aResult = DllCall($__g_hGDIPDll, "int", "GdipGetDpiX", "handle", $hGfx, "float*", 0) If @error Then Return SetError(2, @extended, 1) Local $iDPI = $aResult[2] _GDIPlus_GraphicsDispose($hGfx) Return $iDPI / 96 EndFunc ;==>DPIRatio Global $hGUI, $bExit Global Const $iScale = DPIRatio() AutoItSetOption("GUIOnEventMode", 1) GUIRegisterMsg(132, 'drag') GDIPlus_About() Func GDIPlus_About() Local Const $iW = 420 * $iScale, $iH = 320 * $iScale $hGUI = GUICreate('', $iW, $iH, -1, -1, $WS_POPUP) GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit_About") GUISetState(@SW_SHOW, $hGUI) ;create canvas elements Local Const $hDC = _WinAPI_GetDC($hGUI) Local Const $hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH) Local Const $hDC_backbuffer = _WinAPI_CreateCompatibleDC($hDC) Local Const $DC_obj = _WinAPI_SelectObject($hDC_backbuffer, $hHBitmap) Local Const $hCanvas = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer) Local Const $hBrush_Clr = _GDIPlus_BrushCreateSolid(0xE0F0F0F0) Local $sText = _ " This Shark007 software " & _ " is freely distributed " & _ " for your personal use " & _ " " & _ " This software uses " & _ " libraries from the " & _ " FFmpeg project " & _ " " & _ " " & _ " Press ESC to exit " Local $aChars = StringSplit($sText, "", 2) Local $iLen = StringLen($sText), $iColums = 25, $i, $iHh, $s, $r, $iChar_Space, $t = 0, $f, $iSpeed = 33 Local $hFormat_char = _GDIPlus_StringFormatCreate(), $hFamily_char = _GDIPlus_FontFamilyCreate("Arial"), $hFont_char = _GDIPlus_FontCreate($hFamily_char, 10), _ $tLayout_char = _GDIPlus_RectFCreate(), $hBrush_char = _GDIPlus_BrushCreateSolid(0xFF000080), _ $hImage_logo = _GDIPlus_BitmapCreateFromMemory(_Logo()) Do DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush_Clr, "float", 0, "float", 0, "float", $iW, "float", $iH) ;erase canvas background _GDIPlus_GraphicsDrawImageRect($hCanvas, $hImage_logo, $iW / 2 - (70 * $iScale), 0, 140 * $iScale, 140 * $iScale) For $i = 0 To $iLen - 1 $f = $t - $i / $iSpeed $s = $f > 2 ? 2 : $f $r = (2 - $s) * $iColums * $iColums $iChar_Space = $s / 3 * $iColums $tLayout_char.x = $r / 2 * Sin($t + $i) + Mod($i, $iColums) * $iChar_Space * $iScale $tLayout_char.y = (130 * $iScale) + $r / 3 * Cos($t + $i) + Int($i / $iColums) * $iChar_Space * $iScale _GDIPlus_GraphicsDrawStringEx($hCanvas, $aChars[$i], $hFont_char, $tLayout_char, $hFormat_char, $hBrush_char) Next $t += 0.02 _WinAPI_BitBlt($hDC, 0, 0, $iW, $iH, $hDC_backbuffer, 0, 0, $SRCCOPY) Until $bExit _GDIPlus_FontDispose($hFont_char) _GDIPlus_FontFamilyDispose($hFamily_char) _GDIPlus_StringFormatDispose($hFormat_char) _GDIPlus_BrushDispose($hBrush_char) _GDIPlus_ImageDispose($hImage_logo) _GDIPlus_BrushDispose($hBrush_Clr) _GDIPlus_GraphicsDispose($hCanvas) _WinAPI_SelectObject($hDC_backbuffer, $DC_obj) _WinAPI_DeleteDC($hDC_backbuffer) _WinAPI_DeleteObject($hHBitmap) _WinAPI_ReleaseDC($hGUI, $hDC) _GDIPlus_Shutdown() GUIDelete($hGUI) EndFunc ;==>GDIPlus_About Func drag($hGUI) Return 2 EndFunc ;==>drag Func _Exit_About() $bExit = True EndFunc ;==>_Exit_About Func _Logo() Local $Logo $Logo &= 'iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAYAAACuwEE+AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRB' $Logo &= 'yAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFos' $Logo &= 'tqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/' $Logo &= 'PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAEZ0FNQQAAsY58+1GTAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAC+7SURBVHja7L13eFxXnfD/Oee2GY26ZEmWJcsl7iW2YydOnMRx7IQ0diEEyBtgl7IsCzzAwo+ysPDuvpR3KctSFtjQQugkBBJCCgHSSXOKU2zHjntTr9PundvO7487Go+KbcmWE+Cd7/PMI2mK7p17PvfbzzlCKUVJSjJRkaVLUJISMCUpAVOSEjAlKQFTkhIwJSlJCZiSlIApSQmYkpSAKUkJmJKUgClJSUrAlKQETElKwJSkBExJSsCUpARMSUpSAqYkJWBKUgKmJCVgSlICpiQlKQFTkhIwJSkBU5ISMCUpAVOSEjAl' $Logo &= 'KclI0Sfz5q99+4Yxz2lSghCsWraEiopywjBE0zSGhoZ4y3XX0t/fj65P7DBCiOghJSiFUgohBPkVJjSlVKhGLTdR/KdSqkop1QzUCSFqgSqgUghRBViAio6DUIqUUqpbSrkfeFaoMOnFasg0rkCo4KQupkJg4LNA60InQCGOfjcU+8JpDKo4EgVCEnbvQmUHkA3zEGU1oMJXFAZ3y21TC8zpFqXUwiAI1gkhZuQHvUrTNF3TNCWFrEHgh2GY8jzvNuBXw5DlP1sWi8XuaGhomJ9IJMpjsVhZPB4nUVaGkBIpJEJAGIb4nk86kyaZTDLQ3+/0Dw4+H3i5TynN/H1Jh7xCwCilCIJJ3akXlMXjd8yaNauyvr6eqqoqKioqicdjmKaJAnzPo7evj/vuu+/soaGh30opXSllBIHvX71y5crzL730UqqrqykvLycejxOzLHTDKGhCz/WwbZtsNkMqmaK7pzv2wvPPn/3Qg/f/OhOrfidC9KGoBkzABlJAmP+ZBgaAQSBbAmaKJAxDqqqqaJ3ZRt+WZzAM40RwCSnl585es6Zy48ZNVFVXkShLYJgmUgqCIMDzPNKZDD09PRw4cGD+008/vVHTtLullARBQE1NzXvWrFlDY2Mj5eXlWJaFrutomoYmJUJKBCClQNc1TNOkvLwcqUnK4nEG+noTD7145Ge5WA5BiBBF7p0KI2MmcEFkESINdCDkQSXkfuAFBTuVEjslYkApRahCQhVpQCmn0lVUoDDy/md0VhHQXmQBxV8eMEopyhIJLrn0UrY88/SETFF1VdW5y5Yvp6KiHNM0EUIQhgFhGAGoFOiaTkVFBUuXLGXHjh0fsm3bFUJUhWG4YunSpefOnTuXWCxW8HuKH+R9ndHPCyEwLYt58+bz/J7DJJZeiIxXgNBQCkIV4nsuYeATuo4Z5jJm4KSqAzvZgj20RrppdAI0obA00RXX1HOWrh8xdas6Fo83Oo7jp1KpDxi69uxJXsw5oFYC' $Logo &= 'KxFyIUJrRNNqEVJHiAgYpXxU2I8KugnVIVS4HdRLwIsguqYSpNNmknKOw8ZNl/CD73+PZDJ5Isf3nMaGRr2+rh6paSMGtshHARSalLS0trB27dpNQ0NDmxKJBHV1dSxduhTLsk7qXAWCmtpaKi0NxwA9ZhBmhxBuBi2w0YMcemBjKJeYqYjFA2K1ITG9nLhRSTxmEbNMLNNqNE3zUt2yMAwTwzBwHIfHH3/8953tR/6XgnsnCEkbKrwGqb0GI7YKM16GEQfdBM0AIRkJgYp0jQoh9CHwIXDBc/rxc9vx3ccIg3uBJ0H0I8SfHzC+79PY2MjFGzdx802/OK5ZEkIsra+vx7LMwvcfL4JS+e9pmiYrVqwgCAISiQSVlZXEYjFOar2+vFI3TAvL1CnfdRv1tTXUVlXQUF+HbuiYpolp1mEYBlLT0DQdqelRNIdgvAEIw5Ag8DF1ydJF86dlBnt/a6Sc7yFiP0Lw1DFOZi5h+GF0642UVdYQqwTdigAZaZJGXaT8OQgJmg5G4XxqUeH5BN75eM5HyGXacbMP4bu3gfojiL7JwnNaoySlFBdv3MQvb/o5vuehjaNllFJIKadXV1fnB2BUiJ1/KBVC3pWILIxCSomUEqUUYXjyIakAwjDA9zxmzWqjtraOhoYGGpuaCIKgAGKxxguUgiAkDMNhpxvPzeHYWdLJJINDQ/QOpuhJ5xj0TTLG7Hi20nyfzGbei5+7Gyn+ExU+EAGgNFT4AYT2SVHdVEOiFqXrEASgggmG26rox6gbRzcj8OJVzYTBtXjOteTS7TjpO/FzPwP1EEKGrzgwtm2zYuUqNl39Zh689/ck0ylCpUbY00ApauKmXlYWH6EhwjAkVCHpVIqhwX4cO0sQhCggCBU5J4em64UBK4Zs0rQgsB0Hz/cxrRh+EBCER2EYjviGnW/f83A9Dzfn4NhZsuk0yVSagbTNgBMy6BukZAWO1YpfUY+KVSFMCwlINy3VUOeVqu/gJaHr' $Logo &= 'PIZmgqZXE6s4U9S0gBGH0EeEAQo1VXfuUYikBCsBZryZRM07yWXfiTP0JK79DeBHLxcwRt5THxFH65rEDwOWnHMRKb2aWsOn78g+YppChYpAKaSm0X5gfywMQmzbRtM0fN9ncKCfHdu3sXnL8/SmclQ0tKJLgQxd9MDBUDkqK8ppbGhgRutMmqbPQNf0gumbFDgCUqkUCFHwgxzHobu7m1wuF0Hi+/ieW4Akk7VJ2h5DniQ5DIg5A7eqBhWvQphlCM1Ag8ivGNYURhymzSHMZc3a1jPW2z541W2Impb8nRIUHPQpFyHAd1H2UOTnDJsxPb5G+N7/mXJgfN8fC6+UJkIopUbqTV2TDKZsbr73CRASzYix7KyldLXNJ3SStFVbVMU0NE3j9t/eoTu5HAP9/Rw5eICdL73Eczv30J7ViM09h5aLrqC2bTEIQeg5eMkeUh276Dq8nRf37Md68RHq4pI5rU0sXryE2XPnUV1Tg6ZpJ9Q6AlChor+vH9MwMU2TMAxJp9MkhwYJPBfHccjaDinHJ+lrJEOLjFZPzqjAL6tCWZXRXWvEMIRGqMJo4MMAFaqRAKgQEMiaZjJ2P6q2CVnbisq//+hZFT+mTtOo7CD4uQiUMO8kh+FhAu8zU26S5s2dPd4FVyA8yzILJsXQNQZSNjfdu5mXDnSwZO5MlArx3BzprM2uQ730ZGo4f+kcQnsIwlAd2r+XHTtfZHfHAANUUD5vAwvOvoL6toVoukHguVHyXU9gJSopnzGfcPkmnIEOMp176e7ax+HOvTyx6wFaKh/irOWLWbFqNU3NMxCmiXYcaILAp6u7i+qqCpTvkkklSWcdkrmAVKCTpgxba8I1ygkSCTDLEVYCPVaOppsoJEEYEAYhYRBEAzEMSWG8iwAIQ4RVTljThqioP+p3DEc+p0PDCImyk3lYNETgBnjOT0F9D3gBxOCUAzN3Vtt4T3vD2kcAsZjJYy/s4cX9HQV4Rt/RuhSYuoYnjNi9' $Logo &= 'L7S/dfu+ztW9Q0nseANVCy9nyaqNTJu1BKnpBL5L4DqFi6mixEyUpxKCsvoWYtUNlE+fizPQgTPUy4G+I+x5Yhv3PfYM561YxHkXrGdGSyu6ro/RNgrIZLL09fYiYuU8dyRNWlTiGDNwE3ECzQTNQphxjFg5plUOmklIPk8UBARhgMjneoSIwnRVTIvIQyBGHlhUN+dNUDhSm4iilJyaAg0jRBRm51J5zeINkMtcidQem2x+5pRN0lETpJHzPJ5+4SA7D3Ri59woHT+6WKlJLNOQ+9q7X7d5665P7N57YAWqlqol5zFn5cU0zj3zKCheLhrg4kEezssMq9jAR0iNWN0MrKppWP0dmIkq/MZZpIZ6uW3r0zyy5X9Yf/aZXHjRRqprakY4yCpU9HR3MJADteBSlFkGUkfqJrFYAhmrBDOGUoLQ96LzCjwIAvJpM0T+okdciFEDPd6Ai5EQqdHvKtJGQh0z1TApa2QnIcwHDcmBT5DLPoYRA9Mac1OfdqdX1yS26/Kz3z2GH0JleRwpxYgvKaXANAz6BlOXbd918GNHunouwnOpmN5G66qNNM47C92KE3i58UEZN7gRBXDIgxOfNhOruhGn/whSN7Eq60kn+7jlqcd58tmvc9nG9SxedmZUnXVdbNtm7+5d5MpnUFY9HSNRhVZWhTAToBlRij+vRdAtlO9Fat11CDw/0iViONyOBvjYOkEwrH/UGEdqrL8yJd6LEODa4NpRNV157hUXn3NHzNTRpMZTO/ax91AnmqZNPTCJeGzc2L+zL8l3br2PwVSWhXNaRrxDCoFlGuRcf/ktf3jkU9t27b/Gd2zKahtoWbGB6YvPxSwrJ/C8yPRMMsKJrrUYTs6gVIDQdOKNczCrm7B7DyGkxFxxBe09B/nebx7krC1buODC9VjxMnq6u3lp70H02ZdQNq0Vo3p6pElCP/JHVOSPiLxlEfmEndRMlOGhvBzCdSD0EMMNDcPnn1cQ6rjOq5hCOsYt' $Logo &= '7EVRkRAEmQzrVs2/8SNvf8MRPwjQNY0DHd28+zPfImvnph6Yf/7PG/PnoCiLm6xbPp+yeIykEzCUsUeoNiEEpqGT87ymR5998WNPPL/jnU4ymTAqq2g753JazlxPvKqe0Hfx3VzBko4LixDFSfAxTmExNGK4rBD4SN0k0Twfq2Y6dvcBhJD4NU1s3rOZPT/9BeetXkF/Xy+9VFPRuhSjoh7lu1GSUBWZGIpNh4r8FUBIDWnGUZqJ8nKEORvyznn04YlScKL3nSRNQoCdhMAnDBVVFbHejecs/8wLu/YrP4iC2phlsHReG48/tXXqgbnz/s0jvsSv7nmENcsWcNmFZ2MZOkH+JAxdRynH2HWw/R8e2fLix9ODg63SNGladh4zz7qEioaZhME4GmUcWEYDNMYUHeOSFoOjm2WUty7Gqhkg23MQufACkt0t3P3I78EewFr9JmL1rQhNj0zO6P83TqRTQHgYHs1EWhpobgRO6IznnIzyUdQE4DgFWHwXlUtH6YhMktdfs+kLl5y36nA6Y4/wKT/+jtfz//UNTj0wxiiTpAlFzDIifyVvfkxDp3cwueHWPzz66SNdPecTBlS3zmPm6suonbUEgcJ3ncjpHAWJOAEsxzRFxRdJqTE/lcpXuxNVVJQtxU32oscrycYq8IY6iTcvwCivjXIhI7yMaLCOIqJG+q0jzltFxWOpIawyhNRRuQyE7sTHXIzWnqdmp5STBKWiut60qhcXzGr51tZdByJ/rCgJbJkGr7547ctbS9I1DSdwG+99/LlPPrNt97tdO63FqqfRsnIjTYvPRTdjhL5bCDuPZconAstkLmdxwKLyaX6joh4tUYNZ00RuoBOzZnoUMY0CojgiHv/AYtSJF/0udUSsHOVmIa9JTxoCMVKbTczRjY6r8k7v325Y93/rqiuzGdsZc62zdo5Fs1tfHmCEEBi6Tu9g8pqntu76wkBf/xxpGjQtXUfr6kspq24iLA6Rj8nJSZbci67/' $Logo &= 'sQPZUc+oAIHCrKzHKK8dUY8a7/+NZ0yOXf8b4W0hjHik5Vx70t+nMPhOJl+mj08AGpF3dJORo+vYLJ83c/N1V1z0c5XPap+SYjglWBBIIepu/v2fvr599/7r/JxDeWMLrWsup272skgduvao9PxUd4RN7o4tfrcak7o/gV8xoUy9Gvu3EYsSdL4z+e81rC0yAzBtTr7VQR3/Y3YKAg+ERPgum9ae+b/9IAyyTu7ULcmpfDhQimd27vtucij5Ws0waF6xgRkrN2HGKwg8LzI/Y7SKmmJo1BS+W53aMY7T2SYMC+XnJnG+6mjtqbwO7CFIdUNVc1TIPKGjq+HnbNqm19+btp17fnbXgyc89qsvOvu0AZMA3q8U65LJ5JWJ+um0nH0VNTMXo8KgyPyMA4sSI54u4DPspE4WKzX2V3WCAVejepDUCf7fiNNXJwmdkCC1qMdlkgoKIaGqCfoOQCxf6DxGj4yyI0dXAZry1QVnLflcTWU5nh9Mye15MsCUA7cpFW5Ugc+0BWtoPutyrEQVgedEzdNCjD/YeV7yVaHjIzEOQKiR0Yka9+qO84w6CaWhRvqZY6BSI34Z+R51jH92sq2RKgQzAWU1MNQemSZGmSYhIJcFzwEhCewsy+Y037V8wez7Pc+fspzgyQDznyi1USBoPvvV1C86F6EUgZfLh9dqfByUQhWDpIrCyKL60PDroQLXjzrvAQxNoEuB5yv8MCryWZpAinEgUGpsVHEMZ7F4uI/CMVJXqcKz4wOiir/jsWgcbnk4Hq1qjJc18sVEDWQHIdULlY0jv1MYRGE0AlSIVL5auWjul7O2g+v5U+YATBaYs4B/DAOfprMuo27ROkI/hxQghDxakBVq7B03jtZRoyMbpXAD8ENFdVxjcWOMBQ0xzqi3qC3TiBuSVC5kf3+ObZ0Omw9mCJRCOzo7clwFoo5lmorUhSo+WXVsM8UIeIoZVcUfH/vZMBxlRtQkbBKF0geJWkj3QawCzLLo' $Logo &= 'fwqBstP5piiJn7OZUV91nxTygV0HO6a0XWKywFynAl/E61uombcmMkEoFPLojIejvBwzx1LQNnntopTC8RW6FCxpirNxXgVr2xK0VpvjnsS6WQkAbt82xBfu78TSRpYOVL58EShV+BkEinB4eglFU03C8Ojz+d7gMMzPKwqjpN9wm6YYdmIKXfocbTIepY+OtkWqQkR27IGbwICGAYQexBKQy8BQB9TPjvwbPxc9J/K3n+dy7eWXf3P5/Nkq57pTGpNOFph1SgVUzFiA0AwythOF1lKhaZKYESXw1DicqOG7UI3MlHqhwtAE62aX8/oza1jTmpiwqf+bJVU8fSjDb7cNYemCkKhIqGuCMkMQNzQqY5LqmEZFTKPclFTFNcoMScKUaBIsTRI3ZEFjZN0Axwvw/DCqkdke/RmXvoxLTzJHd8phMOMymHVxXI8gDBEoNKGOGrPR2kYRdbad0Fk6DjihV+RF1sBAB6Qj0xRldMOCdmltrH1+8ZyZd0X1POMVBWYGQqJX1OP6AZcvrmPlzErcQLG1PcMzh9IM2j5CRrP9pBDIfA5G1ySmLrF0gaFJDC16bXadxZvPqmd1a9kJD+75wZjejQ+ub0TXBDk/pK3GpLXapKHcoC6hU1umEdOjY02FBEphuwE9KZfDAzZ7utNsa0+y7cgQuzqTtA9myToeEGJqoItR/osY9nPUOA70eGbvaKIx8n/yaWfNhLKqyDQJDbzcUe2Sc7h03QU3xGNmLmvnpjztNUlgVBlCwxcGn3jVLP5uTcOIVw/0OzyyN0lv2qO6TKfc0im3NBKWJK5rxE1JzJDEdElMF8SM6O4+kTz27A5+fvdDHOzs5W/Wr+HtV19SeK06rvGpS6bzcogmRP476cyuL+OCeXWF13pSOba3D/HIrh4e3tnNlv29dA1kQIUYMkQb9l+KzZg6vndVeD3wRoYEKoR4ZdTnku4GqwIQBL5LZUW8f/WSeTfFTHPCPS6nERgxFORyta9Z' $Logo &= 'WjUClt6BJJomaastp602NmUn5/sBX/3J7fzwN/dRWWYwraqMb//ybi46exlzWpr4c5JpFRbrFzSwfkEDXLWEQ/0ZHt7ZxR1bDnH/c3vp7HRBKkxdMrZJVI3v0oi8sxwEjFNsg0Q1DHVHPowRR9k2q89Z8rvmhrrOyF3glQaGTsJw9vK6o1/wgSdf4KNfvgFd07j2ivX84zWXEbNO3W46OZdPfP3H3PXgZi46cw6XnDUfTZN85ZaHSGUc/tyltTbBdefO4bpz5/DSgfnc8fQebn1yH0/s6sB1PHRTY6SlVGO0TtRPGZm4McAoFU1ZiVUgnBRK6ggRcsGqJb8qj8fQ5OmZlD9ZYHYA5z7xwkv80xuvBOAPj23BEj4t9ZX85w2/5Pmd+/jKv7yTirL4ySf7leLfv/VzHnxiC/9wxdmcOXcGvu/juB7LzmiltamevxRRYUhDhcE/bVrM31+4gM27u/jhQzu46+l9pFLZccAp0jpK5YERx05ullWCZxM6GSrKy/oMQ3/khd37CYPJh9JXXjj1wDyIYbzt0ed24ORcYpbJojkzkU6SDSvPYMUZM/jpH5/iA//xbb79b++bVHNxsXzzF3ex5YWtfOC159NQU07GdojH4yydv4B1F15EbVX5XwwwrufhuD45L3Lyz184nQsXNfPCwV6++8et3PTITjKpLLqljVo/TkSwHDeHokDqUFaFGuhiWk3lgYMdPV05z+N0LfsxWWAe0g3d2bPvSOzJrbu44KwlvP7SdSTXLqez/TDn6AatDTX8+J7H+dqPbuVDb3sdcpLp8MNdfbhOlk++7W+wDB3NMKmrq2P69OknvTrDKym53NEKcagU2VwUXi+aUct/v2MDb9uwmP/67dP85vGd+H6AaQ6vXhHmtcsEygZWAhFLMJTK1GmaVlFlmSl1mmZPisn8Y3PlawD+4KWzm97z1tfyzX9995iLk0mnsG2HvR39rF25ZNJaJgjDcaen/CWKUoq+vr5oztYx' $Logo &= 'bpy4qSOF4Hdb9vHZmx/huZ1H0GI6UnlRW8OERlGgAo+g5wgfeMvfvPGcZQtutk8iYfe212w64XtOZmRuFJbJrfc+Rt9gcsQLlmVRW1fPjJYWLliz/KRM0l8LLFGU5x8XFgDb9cm6HpevmsNd//sNfOSN6zAkeNnsZMhEaCZKN3nsuRffYLsuTm7yj4nIyYzO7bqhH+g41MlP7niAkhzHf5ngXa4UpB0Xy9D49Jsu5Bcf/lvmTa/Gs91JVJkVsqyCl/YfuWgolWmMmQaGrk3qcbqASQH/g6HzPzfdNeH5LP8vSrH/MiGNFIQMZXKcNbueH3/4aq48bzG+4xJOpK1SgWbGGEhm6nYfbN8QhCE515vU43Q4vcPyXcMy/3nnjr1NP7z9Xt79xitKdIz2xYLghOYIohmhUkj8IEAIgeM4DCUz1JTH+co7L2NuUw3/ffvjhCoqrxw/YtIQUvLw09su0TTtFxOF4HRGScPSD3xWmMaXvnjDLfFrL7+QmsryEiWjtEsYhscFRtMk3X1D9A0MsPiM2fhBgG1HzeKuHyCl4EOvPZcZ9ZX824/vxRmnljb2n+p09w9uaKitSkgpM1MdLZ1KT+83dUPP7N9z6Adf/clv+D/vedP/GyC4Hj39g7Q0TTvu+xznxNloXdM41NnDoYMHWDhnJq7r4rpuAbIwVKRtl2svXEplmcVHv38PKdvFMI4BjQCp6/T0Dc2WUp615Iy2h9wp1jKTAsZLDoxMRsJPMOLXfe1Hv7nkzVduYF5b8189MKmMzbM79hwXGN/38TzvhOZICEFn3yC6FORybkG7jDI0JLM5rlg9j5ip8/7r7ySVPTY0Qgj8MOC+zc9d4nr+QxONfgCuuXTd1ALzzjdfPTIvY+j+lp3773z0wc2XfOyrP+TXX/n4Xz0wBzq62bJ9N1ddtPa45qh4AcVj+zkhR7p6mddYjm3bx4Usmc1x8fLZfOntr+Kfv30XbhCijfZphqvgQnKkq+/iJWfM' $Logo &= '/FTUBPYKddz90xuvGvG3oevsOdTxi3cdOPL+W2+/d84vL7+A1196/l8tLNt2H+Tz3/kFb7l83SmbIyEEadthYChFrLUG23FO2I6QzOa4fPU8hrIb+fgNvycUqjBNebiXFyKzdKSr78y9hzrbaqvKDwxPvH/ZgUllsmOAbmms63rXG698/2e+8oPffvhL3xcb1iynvqbyrw6Wh57Zzue//TPe/Kq1XLVx3XFzLxMxR7om6egZIJ2x0VCFXWCK3JFC++qIMcjmeOMFSznSl+Trv3oEETePTofKL7woNY1kOpt47qV95y+c3XrA9abOj5lUHiYRj414lMdjCCm45pJ1d776ivX/c3DbLj76lRv/6mD59R8f49Pf+BHvuGodb7jqEqRuHvO94/kh44fTkrSdw3VdwjBE1/WRy84qxZad+8f1aTI5l/dddQ6Xn7sI3y7yUYb7hvMN97v2t18kXsmOu3A8WxgoDB2uu3z9vzz9wkvn/eCnt6+4/PxVfzWm6fqbf8evfnc/77/mYl614QJ089gF0DAMyeVyE1pIwNA1Nr+wi4QBMr/a5zAwuqZxuLuPjt4hzl6ij5kmEoaKUCr+/bqL2Hm4h73t/RiWgQqOvk9JSffA4IVzW5osBLlTnVN9UsB09PQfK2VEfXVl6u2ve9U7PveNn97/gc9dX3nu8oW0/AX1rYyJdIKAz3z7JjZv2cqHrt3EOatWYMWP33ds2/YJcy8Accvkhd2HePip53jNOWdgGCbDu7IAGIbGc7sOUVuVGFHtL54Z4foB06oS/PubNvCOr9xGGCpEUXVb03Xau/vPeHr77iUzGuqemaqZj5MySUqN/0BBxnZYu3zBM393zas+2LH7IP/46W+Mr5H+AmQoneXdn/4Wz2/bwYevu5TlixdQWz/tBNdGTcgcGbpGKuvwXz+6nTPb6qitTFBdU1PQLkIIMlmH7fuOsGBm04gprgrwi5bIzzguFy5p4+8uWUlg2/kJ+PkFGqXA' $Logo &= '83y560D7+f1DKXoHkyd8TLmGaairOmEi6h1XX3rDYCqz4je//v37vrRmGR972+v+siKhPQf52H/9gNoynQ9dewktM5ppnnHitVNs2z5hKUCTEiEEn7/hVrTA5sw5bSQqqkgkEoXlRmKmwf1P7cI0dJrqqnHyiTfL0Hl6x34qEjHOaGksgOS4Pu++4mwefPpFdu/qRTeNoqhJ0dk7cNF1V170ddfzpmQ+26Q0TEVZ/LiPmGXSPK2G665Y/5G6mdPv+vgXv8cDE1w77ZWWrr5BvvSDX/PWT3yZRS21vPfqDcyY0UzbrNknNDFKKbInaEeQUmIaOl/56Z28tGcPV569AKnrNDU1FbSLFALH9bjz0ee4YMWCo73gAhzXY9vewzTUVBaWhgPwgpDa8hj/67wzivKp+c/pOgc6etamMna1GJ6GctzHFAMTKnXch1KKrJ1jZtO03Fc//q63tjRN2/Z3H/kC7cfwfV5pcT2fZ17cy6ev/wXXfPD/cv9jT/Le167n2k3nML15BnPmzJ3QbmrZbPa42kVKiWXofPVnd3Lfo0/xxguXIQU0NU0fsW1PPGby24efQUrBygVtBWc3Zpo8vnUPMdOgtrJ8hKmXUtLbP8iSGVUsndtM4B51fDVNo7t/aPquA0dWZO0cybR93MeUm6SJQlWeiLP2zIU9b7vmsjd8+r9uuOfNH/tSy++/+1n00zBP5njnIYqWNHVdj1TGpqN3gJcOtPPsi3t57qW99PT20zKtijdtWs2KeS3ELIvpM1pobGyc2HHCkEwmMyFY7rjvUd7+qtXELYPKqmrq6+sLjm7cMtl5oINbH3iKj77lqmih7MCLwu+sw/1Pb+ftr75wzLIdQgjaOzsRCF6zdiHb93cdncEkJfg+W3cfWN/cUPeAnctxqr2+kwJmouvnhmFI1s6xctGc7R9575uu+/L3b7nzfZ+7vuKtr9lEGCpynoftRLP1hBDYTg7H9QqLEWayzogLk8rY+PkLq5Qi' $Logo &= 'mclGUYGIioHprFN4Tamo8bpQ2s9rYieXYzCVIQxCYqbGjGnVnLuwhWVz19JYUwFCkCivoK2tjUQiMfFkZip1zMhIkxLT1PnqT+/kN398hLdduoqa8hhSN2hpaSlolphp0DuY4os/voOLVi1ixfw27HwNKG4Z/PyeR2moqWR2c0PheYgWM9yx9xBbXtzL4rZGlrY1sKitgW37OtGNaGiVprHnUOf6gWR6StaImRQwk61JzG9r5qzFcx9uqK16y0c+/52bHnhqq1Uej+MXbVoFR9PbSoGhSbT8plm6LgthpaFr0QKFoSJmGui6JAwVlqFjGlHSK2YZSCEoNzSmlZcBirhlIoUgHjNpqK6gobaSuqpy4nnnMAgVVizO9OZmpk2bNqnvl8vlsG17XFh0TUNIwX/ccCu/f/hJ3nbpKhpqKvD8gHmzZkXb9ChFWdziQEcvn/3Bb2isreLvr7yAXD4zG7dMntmxn0ee38Vn3vW6EQMupcB1Pe588EkWt9YRKIWl62xaMWeElpGaRlff4IruvsEmXdc6T7WuNClgrr/57kkfQAiBJsVdNfU1HRtXzZ913vJ55FyPeH65VqUiGDQZJa4MXS/6XUPm1+Q1dT2/HL0qWjNPjVg/b3gpVyEo8j3ECOCHN/jS87vK1tXVUV1dPemNucIwJJkcPxQ1jSjZ9unrb+Gp57bzjstWM60qgeN6tLW1UVNViSYlWSfHnY88y413PMTCtmY+/KYr0KTEDQLipkF77wBfu+ke3rDpHKbXV5N1jmqXmGlw8+/+RC7n0FxfRc7zcf2ARa3TKC+LkXZcNCmQmiSZTNcYhr5yxYLZd+dOca2YyW1/c5LtC6apq6ryRLKizGLlvBYydi6/ZIwYY++Hl3XQpBZt06fJyBcp2s5P1zQQ0S6z5Lf5LX4IIQp7JY33U9M0LMua/O5txbmaoSGCfJdcscQsg4Fkhk9+8+fs3XeQd7xqNTUVceycy/Tp02lsaOBwVz8PPbuD' $Logo &= 'Pz37En1DKa7esIarN6xBCoEXBCRiFu09A/zbd37NivltXLZ2+QhTFLNMnt2+m989+izXbVyJVxQ1+UE4avlYSRgEtHf3bdywZvndWcd5GYGZ2Tyu6rUM/bhBmWXqvqXrvUq3aJ01B88PxgzuMDDDUAxriOGfQpze/ZgnI6lUatwSQCJmsa+jh4999cfY6SHeeeXZJGIm2ZxLXW0tM2Y0o1TI5m17eH73Ic5ddgYbVi9mZmMdru8jpSBhWDy5fS9fvekeFs1q5l1XX4znB4UcimUaHGnv5Os33cOaha3UVpQxrDU0KRjMOOQ8f+TKXJrG1t0Hz7dzOeEHp1YjmBQwB4+0jwTB0Hlq+14e2rIDy9CPm4M41N7Vj9Qpr/jLrmRnMplxo6LyshhPv7iXj3/9J9RYkrdftgZT13ByLpUVkTOtVJSp/dv1q3jthtWF+c/R4tGKPYe7uONPz/LQlh1csW4Fb73ygmhhzLwGsUyD7p5ePn/j7dRVlnH2gtYRdSYpBclMDs8L0ItaOaWuc6izZ9n+I10z66orD/hB8PIAs3HNkpFpbk0yt6WRwYyDHwRFvRmj0+E6advu7eodmPCxPM8jnU6Tzdpkcx5eECKkhm7oVCbKaKyrfkVgSaVSI2CJHGqLu/+0hc9+95csaanl1ectBhXleeLxOLNnz0bTtEI21w9CCEJ0TXKgs5e7H32enQc66B5IMrOpjn99+9+yZuFscr5PEER+Wsw02HvwEF/84Z2EKuRN568kyO9/VFxr6ktlYZQSkZrEtp2yfUe6zq4oLztwKm2bkwJmdBd6DmioqeC6y86nN5nB0LVx089lcYtczuvpmAQwjm1z571/4g+PP0dfKksyYxOoqFIrNcmqhXN47xtexcL5814WWNLpNOl0egQsuqah6xrfv+1err/5bi5ePosNK+biBSG+H2AYBrNnzy7sIzlOSIAfKCzT4Lzl81h+RivzZ07H0DWcfE9NzDJQYcj9TzzLt265' $Logo &= 'l9rKMv7+0tUYmmRsY5SgYyA9NmsrJGEQsutg+4Yz2pp/mcu9TMCMX9UNmdNcT3VVJTl3/MahRFmMqopE5/72romXISoree0Vm1g8bxa9Pd3Rlw4VWSdHKmujlCIei512UMIwJJVKjQmfLdPAzrn8xw2/5s4HN/O685ew8oxmcl601YymacyePZtEIlFIzo3RokHA3BkNLGybng/xw0JOx9B1so7Ltj2HufW+J9i8dQ9rl7Rx+ZoFaHI8WKLPdw2kx03OCU1jf3v3Ws8PdIXyTza6npJMr2VoPPHsVr59yx+xYmObi6QQ9A+lBuuqKyfU63oUtDirzlzG4UOHOHToEJomqa+Oth6eNq2BWFnZaYXF8zySySSu644oEZTFLI509/Nv19/ES3v28w+XraatqQbH9Qv5pba2NiorK48Jy7AJ8YOgkJTUNUlH3xB3/OlZDnf109HbT2//IC31VbzzynOY21yH50d7ao93jbOuR9dgGsaZvyR1na7egUWHO3tnV5bHdwWBeuWAcVyXDauXcLB7kIFUZsz8aE1KegeH+rfvOUQqa1OZmNxAt7S2knNd2tvbMU2T5pbW07Ic12h/JZ1OR6F9UaSWiFs8tX0Pn/zmz9ECl/e8ei3V5XFyRbDMnDmT2tra48Iyfs5KErdMynSwcFk9p4E56xbRUJ0AITheDkWTgoFBm76UPe6KGUIK3JwX6+wdOKe6IrHLV/4rB0wYKuKWwWvWr6Z7KIs5agqEoevsO9LV+/S23aQykwcGYPbs2QXTEATBaQPGdV3S6XRhftCwNtQ0iWUY/OqPj/PFG29j0YwaXrNuBYYmcf2jZYuWlhamTZs2YViGUwhhGNLX309fby9nzqzlzJk1gCAIwxF5lmMCo0kO9Q5h2y76eFNQhCQIQzp7By6Y19b8k5ONlKas+OgHIU11FYRCMpTKIoq1TLRJRV/GdpxM1jkpx0NKyaxZs9ixY8dpASUIAtLpNI7jjDGbpqHj+T5f' $Logo &= 'uPE2br7nYS5dOZf1y+fgFw1mEAQ0NzfT1NQ0IViGc06e59Hf309fX98YjTap6yMEu9v78zMHjjFnSdM43NV77vT6WktKkVMnsaD8lFarDSk5cPgIn/nOr/J9qsV1KOyc59sp2zlpT7W6upqZM2dOqXYJgoBsNjuivbIYlrhl0tE7yL9/+ya27tjDWy4+k8VtjeQ8/+gil0FAY2Mjzc3Nx4RFFGWqh+EcHBxkaGio4FAPQ3Qy5RfH89lxuDeqUB8LKk2jdyC5SEoxf/q02heOt630lACjHWsyuIo8dMf1OHfZPN501UXs7+jF0GXxHZW9/f4nkn0DyZpTGeDm5qmZXel5Ho7jHBOUYVh27D/Cx772E1Quy3tevZZp1eU4RT0nQRDQ0NAwovo8GhClFEF+3nQymSSZTBZMq5TylG8AQ5Ps7x5kf9fgsccIEFIShIH+met/IaUmxyyHdt2VF00tMAODQ+NyBATliURBlV523nJ2HurFKDp5TdOy9z/xfKpvMFWw98W5ieHBkqdhQaHhAQuCoDB/2ff9gukZ7642DZ1dBzv516//lNm1cTatWoauyxGOZxAE1NXVMXPmzAIYMl9pD4KgUM1Op9NkMhkcxynAORWgHPURNTbvPIzruOjHW8E0+p7t/YMDB3k5wuqnnn1hHO9c6gjB6jOXBRUV5fhBSE15nFUL2vDDo5ts6obuxywzdaSzm5ydJZnOjLkjR9+Zo2tLxa+NV18a/n/DW/KFYUgQBCP+Hq0BjqXiQ6X47q//wNln1HPu4lk4rk+Yr6APH6uhvo62WbMIwxDXdcjlXBzbxrZtbMfBzeUIggCV9zFMXQNx6l5AGEariYt8BNozlOHBrfsRJ14UKA3iXbpuDJzssSd19uPd/VJKDyGGsQ4gail88pkX+dR//xSjKC/TfqT78WQ6c24Y+GMqvcObQ5wuOR4goyVmGjy85UUe2PzcjVevW7zjka0H9CAMjy7ErZQKwzCsqUlpj23b' $Logo &= 'Ty6Xw89/J5Xv9BtxvCmum9ZVllmGpmkKlGVo4o7NLw329KVs3dLlCVbd/CNCbAd50tvVToXTG+arBCMG56WDR2g/eAiGty5WCrzwxq7+oQ/C+IP351KRDsOQ+uoK2vuSP/rVw1vvn986DVPXCitBKaVwPRejvb/Aw8t57kFzLXHTLPQMtfcl8xXM4xrmYp9Fz9/c4SsBzBjHuLt/iB/e8TCisqaoairwcu78p7bvJmM7hdzDn5sowDQNnJyH63ofeulA18NeEPrnLJpZ6NaPtKF23Ar96RRNykLzmSZPtDLV+D7/yR57yj1M0zDYvu8wnd0DI0rsoNBNfduWbXvsW+59nNrKckxDR9c0tHxbppRiUqZjKkXKaJP2mooE7d39fPKbPyOXcw8aMTPY3zXAoe7BkxmYvzqZeg0jBU9t25PfUMEYbXJeFFJ++qNf+dF/DKWzXHn+qmjxZk1D1yS6rkUA5efwHHXsx5qsEfu7icm5CcVb9UWzNxUZ2+FARy9/fOJ5vnPLH9h3sP3nRsz6cN5loS+Vpa2xpgTMlDuXQHf/saddarr2+bTtpP/lyzd+8PM33Do7EbeEZRqYho5l6Fimga5pxGPRMhZV5WVIKTF0jcpEWcFuV5aXFcyDZRpUlMVP7DSLKMIYSmUIQkUqY5PMZukZSNLRM8Dew11DqcHUZgz9O0bMumV0JrUkpwGY4yb4hg+qad9A0344lM6eMZjKVKKUQKkalJJAOUqVoZQAaoajcqCmaN/gqvxzw1P24ihVfgLPXwAZIBttfcsQAhtEP4IupHZQGtoOoyx2qITFcS6i+gudMF+SV0ZKXlxJSsCUpARMSUrAlKQETElKwJSkJCVgSlICpiQlYEpSAqYkJWBKUgKmJCUpAVOSEjAlKQFTkhIwJSkBU5ISMCUpSQmYkpSAKUkJmJKUgClJCZiSlKQETElKwJSkBExJSsCUpARMSUrAlKQkJWBKciry/w8AsDw916bgUD8AAAAA' $Logo &= 'SUVORK5CYII=' Local $bString = _WinAPI_Base64Decode($Logo) If @error Then Return SetError(1, 0, 0) $bString = Binary($bString) Return $bString EndFunc ;==>_Logo Func _WinAPI_Base64Decode($sB64String) Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "") Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]") $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "") Return DllStructGetData($bBuffer, 1) EndFunc ;==>_WinAPI_Base64Decode For whatever reason that I am not aware of, Virus detection is through the roof with any AutoIt App when compiled as 32bit. The same code, when compiled as 64bit, is always damn near detection free. Edited April 16, 2021 by Shark007 update scaling mLipok 1 Link to comment Share on other sites More sharing options...
UEZ Posted April 11, 2021 Share Posted April 11, 2021 @Shark007 you can use Local Const $hBrush_Clr = _GDIPlus_HatchBrushCreate(2, 0xF0E0E0E0, 0xF0F0F0FF) to give the background a little note. 😉 2 hours ago, Shark007 said: For whatever reason that I am not aware of, Virus detection is through the roof with any AutoIt App when compiled as 32bit. The same code, when compiled as 64bit, is always damn near detection fre I've similar problem with Freebasic. As soon as I use Screenres to init the screen the x86 compiled exe will be flagged as Trojan. Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
Shark007 Posted April 11, 2021 Share Posted April 11, 2021 (edited) 56 minutes ago, UEZ said: @Shark007 you can use Local Const $hBrush_Clr = _GDIPlus_HatchBrushCreate(2, 0xF0E0E0E0, 0xF0F0F0FF) I've tried to use this; even added #include <GDIPlusConstants.au3> but I am not seeing any effect from it at all. A n d ... its very interesting! ... EDIT ... OK. I didn't fully understand the 8 digit color code. Now that I get the transparency offered by the alpha channel it is making more sense. Edited April 11, 2021 by Shark007 Link to comment Share on other sites More sharing options...
UEZ Posted April 11, 2021 Share Posted April 11, 2021 The $hBrush_Clr brush handle is used the clear the background of the screen. By adding a hatch brush it draws some pattern to avoid plain simple flat background. The two hex values are the ARGB color values for foreground / background. Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
Shark007 Posted April 11, 2021 Share Posted April 11, 2021 11 minutes ago, UEZ said: The $hBrush_Clr brush handle is used the clear the background of the screen. By adding a hatch brush it draws some pattern to avoid plain simple flat background. The two hex values are the ARGB color values for foreground / background. Its like you handed me a new toy to play with. Thank you. Link to comment Share on other sites More sharing options...
Professor_Bernd Posted April 11, 2021 Author Share Posted April 11, 2021 7 hours ago, Shark007 said: I like this Aboutbox by @UEZ. I added DPI, singleton and drag support to meet my needs. I'm sharing my modified project in the hopes of helping others use what UEZ shared here. Also a nice effect. Thanks a lot! Link to comment Share on other sites More sharing options...
UEZ Posted April 12, 2021 Share Posted April 12, 2021 (edited) Last but not least here the version with chip sound: expandcollapse popup;Coded by UEZ build 2021-04-14 ;Thanks to wakillon for the SID Dll, Soren Lund (Jeff) for the SID tune and Ward for the MemoryDllCall functions #AutoIt3Wrapper_Run_Au3Stripper=y #Au3Stripper_Parameters=/so /pe ;/rm #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_stripped.au3" #AutoIt3Wrapper_Res_HiDpi=y #include <GDIPlus.au3> #include <GuiConstantsEx.au3> #include <Memory.au3> #include <WindowsConstants.au3> #Region TichySID Global Const $tagIMAGE_DOS_HEADER = 'WORD e_magic;WORD e_cblp;WORD e_cp;WORD e_crlc;WORD e_cparhdr;WORD e_minalloc;WORD e_maxalloc;WORD e_ss;WORD e_sp;WORD e_csum;WORD e_ip;WORD e_cs;WORD e_lfarlc;WORD e_ovno;WORD e_res[4];WORD e_oemid;WORD e_oeminfo;WORD e_res2[10];LONG e_lfanew;' Global Const $tagIMAGE_FILE_HEADER = 'WORD Machine;WORD NumberOfSections;DWORD TimeDateStamp;DWORD PointerToSymbolTable;DWORD NumberOfSymbols;WORD SizeOfOptionalHeader;WORD Characteristics;' Global $tagIMAGE_OPTIONAL_HEADER = 'WORD Magic;BYTE MajorLinkerVersion;BYTE MinorLinkerVersion;DWORD SizeOfCode;DWORD SizeOfInitializedData;DWORD SizeOfUninitializedData;DWORD AddressOfEntryPoint;DWORD BaseOfCode;DWORD BaseOfData;PTR ImageBase;DWORD SectionAlignment;DWORD FileAlignment;WORD MajorOperatingSystemVersion;WORD MinorOperatingSystemVersion;WORD MajorImageVersion;WORD MinorImageVersion;WORD MajorSubsystemVersion;WORD MinorSubsystemVersion;DWORD Win32VersionValue;DWORD SizeOfImage;DWORD SizeOfHeaders;DWORD CheckSum;WORD Subsystem;WORD DllCharacteristics;PTR SizeOfStackReserve;PTR SizeOfStackCommit;PTR SizeOfHeapReserve;PTR SizeOfHeapCommit;DWORD LoaderFlags;DWORD NumberOfRvaAndSizes;' If @AutoItX64 Then $tagIMAGE_OPTIONAL_HEADER = 'WORD Magic;BYTE MajorLinkerVersion;BYTE MinorLinkerVersion;DWORD SizeOfCode;DWORD SizeOfInitializedData;DWORD SizeOfUninitializedData;DWORD AddressOfEntryPoint;DWORD BaseOfCode;PTR ImageBase;DWORD SectionAlignment;DWORD FileAlignment;WORD MajorOperatingSystemVersion;WORD MinorOperatingSystemVersion;WORD MajorImageVersion;WORD MinorImageVersion;WORD MajorSubsystemVersion;WORD MinorSubsystemVersion;DWORD Win32VersionValue;DWORD SizeOfImage;DWORD SizeOfHeaders;DWORD CheckSum;WORD Subsystem;WORD DllCharacteristics;PTR SizeOfStackReserve;PTR SizeOfStackCommit;PTR SizeOfHeapReserve;PTR SizeOfHeapCommit;DWORD LoaderFlags;DWORD NumberOfRvaAndSizes;' Global Const $tagIMAGE_NT_HEADER = 'DWORD Signature;' & $tagIMAGE_FILE_HEADER & $tagIMAGE_OPTIONAL_HEADER Global Const $tagIMAGE_SECTION_HEADER = 'CHAR Name[8];DWORD VirtualSize;DWORD VirtualAddress;DWORD SizeOfRawData;DWORD PointerToRawData;DWORD PointerToRelocations;DWORD PointerToLinenumbers;WORD NumberOfRelocations;WORD NumberOfLinenumbers;DWORD Characteristics;' Global Const $tagIMAGE_DATA_DIRECTORY = 'DWORD VirtualAddress;DWORD Size;' Global Const $tagIMAGE_BASE_RELOCATION = 'DWORD VirtualAddress;DWORD SizeOfBlock;' Global Const $tagIMAGE_IMPORT_DESCRIPTOR = 'DWORD OriginalFirstThunk;DWORD TimeDateStamp;DWORD ForwarderChain;DWORD Name;DWORD FirstThunk;' Global Const $tagIMAGE_IMPORT_BY_NAME = 'WORD Hint;char Name[1];' Global Const $tagIMAGE_EXPORT_DIRECTORY = 'DWORD Characteristics;DWORD TimeDateStamp;WORD MajorVersion;WORD MinorVersion;DWORD Name;DWORD Base;DWORD NumberOfFunctions;DWORD NumberOfNames;DWORD AddressOfFunctions;DWORD AddressOfNames;DWORD AddressOfNameOrdinals;' Global $_KERNEL32DLL = DllOpen('kernel32.dll') Global $_MFHookPtr, $_MFHookBak, $_MFHookApi = 'LocalCompact' Global Const $tagModule = 'PTR ExportList;PTR CodeBase;PTR ImportList;PTR DllEntry;DWORD Initialized;' Global Const $SID_MEMORY = 1 Global Const $SID_NON_DEFAULT = 2 Global $hTitchysidDll, $iSubsongCount = 0 #EndRegion _GDIPlus_Startup() Global $aDPI = _GDIPlus_GraphicsGetDPIRatio() Global $hGUI, $iFPS = 0, $iShowFPS = 0, $bExit AutoItSetOption("GUIOnEventMode", 1) Global $sText = _ "This is an About Window ²" & _ ;² is the marker for the column width which all lines below must follow "coded with Autoit using " & _ "GDI+ library to produce " & _ "this flying chars effect. " & _ "------------------------ " & _ "Greetings fly out to: " & _ "All Autoit users around " & _ "the world! " & _ " " & _ " " & _ "Coded by UEZ 2021 ;-) " & _ " " & _ " " & _ " " & _ "Press ESC to exit. " Global Const $binSIDSound = _Chip_Sound() _SIDStartup() _SIDOpen($binSIDSound) GDIPlus_About($sText, 16 * $aDPI[0]) _SIDStop() _SIDClose() _SIDShutdown() AutoItSetOption("GUIOnEventMode", 0) _GDIPlus_Shutdown() Func GDIPlus_About($sText, $iFontsize = 16, $dx = 30, $dy = 150, $iSpeed = 33, $sFont = "Courier New") Local Const $iW = 540, $iH = 500, $iWh = $iW / 2, $iHh = $iH / 2, $sTitle = "GDI+ About Window" Local Const $fPi = ACos(-1), $fRad = $fPi / 180, $fDeg = 180 / $fPi $bExit = False $hGUI = GUICreate($sTitle, $iW, $iH) GUISetState(@SW_SHOW, $hGUI) ;create canvas elements Local Const $hDC = _WinAPI_GetDC($hGUI) Local Const $hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH) Local Const $hDC_backbuffer = _WinAPI_CreateCompatibleDC($hDC) Local Const $DC_obj = _WinAPI_SelectObject($hDC_backbuffer, $hHBitmap) Local Const $hCanvas = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer) _GDIPlus_GraphicsSetSmoothingMode($hCanvas, $GDIP_SMOOTHINGMODE_HIGHQUALITY) _GDIPlus_GraphicsSetPixelOffsetMode($hCanvas, $GDIP_PIXELOFFSETMODE_HIGHQUALITY) Local Const $hBrush_Clr = _GDIPlus_HatchBrushCreate(18, 0xF0B0B0E0, 0xF0F0F0FF), _ $hBrush_FPS = _GDIPlus_BrushCreateSolid(0xF0808080), _ $hFormat_FPS = _GDIPlus_StringFormatCreate(), _ $hFamily_FPS = _GDIPlus_FontFamilyCreate("Arial"), _ $hFont_FPS = _GDIPlus_FontCreate($hFamily_FPS, 8), _ $tLayout_FPS = _GDIPlus_RectFCreate(0, 0, 100, 24) $iFPS = 0 GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit_About") Local $iLen = StringLen($sText), $iColums = StringInStr($sText, "²"), $i, $u, $s, $r, $iChar_Space, $x, $y, $t = 0,$f, $b = 0, $a = 384, $iCharCol = 0x101030 $sText = StringReplace($sText, "²", " ") Local $aChars = StringSplit($sText, "", 2) Local $hFormat_char = _GDIPlus_StringFormatCreate(), $hFamily_char = _GDIPlus_FontFamilyCreate($sFont), $hFont_char = _GDIPlus_FontCreate($hFamily_char, $iFontsize, 1), _ $tLayout_char = _GDIPlus_RectFCreate(), $hBrush_char = _GDIPlus_BrushCreateSolid(0xFF000000 + $iCharCol), _ $hImage_logo = _GDIPlus_BitmapCreateFromMemory(_Logo()) Local Const $hDll_k32 = DllOpen("ntdll.dll"), $iMilliSeconds = 5 AdlibRegister("CalcFPS", 1000) Do DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush_Clr, "float", 0, "float", 112, "float", $iW, "float", $iH - 112) ;erase canvas background _GDIPlus_GraphicsDrawImageRect($hCanvas, $hImage_logo, 0, 0, 540, 112) $rr = 0 For $i = 0 To UBound($aChars) - 1 If $aChars[$i] <> " " Then $f = $t - $i / $iSpeed $s = $f > 2 ? 2 : $f $s = $s > 0 ? $s : 0 $r = (2 - $s) * $iColums * $iColums $iChar_Space = $s / 3 * $iColums $rr +=$r $tLayout_char.x = $dx + $r / 2 * Sin($t + $i) + Mod($i, $iColums) * $iChar_Space $tLayout_char.y = $dy + $r / 3 * Cos($t + $i) + Int($i / $iColums) * $iChar_Space ;* 1.2 _GDIPlus_GraphicsDrawStringEx($hCanvas, $aChars[$i], $hFont_char, $tLayout_char, $hFormat_char, $hBrush_char) EndIf Next $t += 0.025 _GDIPlus_GraphicsDrawStringEx($hCanvas, "FPS: " & $iShowFPS, $hFont_FPS, $tLayout_FPS, $hFormat_FPS, $hBrush_FPS) ;draw background message text _WinAPI_BitBlt($hDC, 0, 0, $iW, $iH, $hDC_backbuffer, 0, 0, $SRCCOPY) ;blit drawn bitmap to GUI $iFPS += 1 If $bExit Then ExitLoop If $r = 0 Then $b = 1 If $b Then $a -= 5 If $a < 256 Then _GDIPlus_BrushSetSolidColor($hBrush_char, BitShift($a, -24) + $iCharCol) If $a <= 0 Then $b = 0 $a = 384 _GDIPlus_BrushSetSolidColor($hBrush_char, 0xFF000000 + $iCharCol) $t = 0 EndIf EndIf DllCall($hDll_k32, "dword", "SleepEx", "dword", $iMilliSeconds, "bool", True) Until False AdlibUnRegister("CalcFPS") ;release resources DllClose($hDll_k32) _GDIPlus_FontDispose($hFont_char) _GDIPlus_FontFamilyDispose($hFamily_char) _GDIPlus_StringFormatDispose($hFormat_char) _GDIPlus_BrushDispose($hBrush_char) _GDIPlus_ImageDispose($hImage_logo) _GDIPlus_FontDispose($hFont_FPS) _GDIPlus_FontFamilyDispose($hFamily_FPS) _GDIPlus_StringFormatDispose($hFormat_FPS) _GDIPlus_BrushDispose($hBrush_Clr) _GDIPlus_BrushDispose($hBrush_FPS) _GDIPlus_GraphicsDispose($hCanvas) _WinAPI_SelectObject($hDC_backbuffer, $DC_obj) _WinAPI_DeleteDC($hDC_backbuffer) _WinAPI_DeleteObject($hHBitmap) _WinAPI_ReleaseDC($hGUI, $hDC) GUIDelete($hGUI) EndFunc ;==>GDIPlus_About Func _Exit_About() $bExit = True EndFunc ;==>_Exit_About Func CalcFPS() ;display FPS $iShowFPS = $iFPS $iFPS = 0 EndFunc ;==>CalcFPS Func _GDIPlus_GraphicsGetDPIRatio($iDPIDef = 96) Local $hGfx = _GDIPlus_GraphicsCreateFromHWND(0) If @error Then Return SetError(1, @extended, 0) Local $aResult = DllCall($__g_hGDIPDll, "int", "GdipGetDpiX", "handle", $hGfx, "float*", 0) If @error Then Return SetError(2, @extended, 0) Local $iDPI = $aResult[2] _GDIPlus_GraphicsDispose($hGfx) Local $aResults[2] = [$iDPIDef / $iDPI, $iDPI / $iDPIDef] Return $aResults EndFunc ;==>_GDIPlus_GraphicsGetDPIRatio ;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2020-06-05 Func _Logo($bSaveBinary = False, $sSavePath = @ScriptDir) Local $Logo $Logo &= 'iVBORw0KGgoAAAANSUhEUgAAAhwAAABwCAIAAADaNT4jAACVR0lEQVR4XuzVPwqCcBjH4Y7aFDRFW+BQU3ODQ0SrkycQIxAPUeIh/Dcq/uoM0hI8z/x93/WzCj8CAH8TFQBEBQBRAQBRAUBUABAVABAVAEQFAFEBQFQAQFQAEBUARAUARAUAUQFAVAAQFQAQFQBEBQBRAQBRgXkMYVpwB4gKzH3XVO9XlhfxLd1H8Xp72uzOh+Plek8ez7Kuq6Fvv7MFr4EP+2b2W0eW1/Gz1XrXxfa1b2zHSxzbSZylt4H00CiA2KZpGiSEQEItgQQSmn+Al3nmBcQD4hWEYCTEMmLUTT/RTZOehsl0nMWO7Xi53nKv1+TuS92qcw6/qkpfNUmmY9PpRD2cj6/tU6eqzr0PdfS53/qdYugnG4VC8kqlXCzu5jfuLa8VVjb2t/eaD2rIERFJbEINTHJIIrHhiut7BG2ZpJGJoZNDfWMnohNjudGRwdxAfzKZQJihp6FQKLCfVn6iUCiJuA9KJbDI6vr2Sr64tnV/e7deqiOHW4hGqGYzTSOEYAyHSvjtzgWEwxmBuBDcc7nbRLxpkFYqIgezkbHhzMTYwKmxoRO5gXQ6RaiOniNHnKcYY/RlUCiUVBQKt9O+f//+veL+6trGSn4nf69U3G+Wm6QjbMzAIhZjoUUChRz9gsc4cAwWgWM8tyW9ho5byag80WuOB44ZG8kNDeYymQzTzK9OJBjj45541NMUCiUVhaLZqO3t729tF1fz91Y39jcKpf2SV+9YLmeY2WARShklBB3NIsdyDLyEEJ7ncbcNjmGoGbNEf1obGUycHh2YODV8cniwpydjGNb/WSRAaATgs07UarcbjUa73W614NWCDxAeTAhhjJmmaVlWJGJblm2aOv7fo8E43TG7lkIKhZKKQpHPr/35X/zV8rZTaUc6KBrczrIo0yllBCPUvaP1PMChZoSQnHue6wivRWTbJM2UVTs7nvj2' $Logo &= 'H//h0NDQsXTS9QQ0hJSNev3g8GB///7h4f1SqQRCcRyH+wiMUVcVlFJoM8YMw7BtO56IQnLq68v29vREbDv0hxDi+UhFoWDo64NCMTQ0/M7v/e6nN5duLxXW7jVKzTb3CCEM0cAo6LkZBZAICN9VCiQ5w+2U3R4fSp6fOjNzZjSVSh03oASVHlyv17cK9/L5fHGn2Gq2PJdLIRljsEvXdWiEVoCDu/kjbDgB9x8crK+vE0qikehAth/ElsvlYrFYqJYn6kShUElFoRCHBwfLK+uzt5dvLWyvFZrVtiVojOkRvw7/lUWWMKAIgSCbeE4N81rSdk8NRS+cGb40Mz4xPtzT24cQOV5Awf4PNA4OD5cWF0Enh+USbFJKDd2AXVgiQin0YJ/utIVNEmxDGwOccwJQBIgA7nrQBr0NDw+Pjo7192c/ryL0OAqFkopCIYW3u7e7dDc/e3vl1mJxc7dd70QQizPdYozhLy2YUCQwhgcmcRrYq8ZMZ2TAPD+Zfen8xMy56Q8++PepqemZ8xePW4GHfyTIGVAimpu7s7m5CYWTIJFoYWoRQoahhHOOAeKf2C2o4AC/LXAoE9gKjwnPokSDtuu6cLplWaCWycnJbLaX+COLUDA/1i4KhZKKQiG8TqFYuLO4Nre0NXd3d3PHqXtRRG1NtyhlGMtQMMcRCfc6TQkiMToj/drMZHZmeuTs9EQuN9BdVfzOH3z7N9765bd//c1jSSX0Qalcnr8zDzesatWGpmmMMc551xndg4UI6yiIUPLI7S8JCNxtYyLxZ1DyUE7BCNJ1O5qmj4+PnT0zlUwmu/fc0BejUCipKBTf//678bgdj0V39so372zcvru7ve+2RYxoMU03P3tORTxRJJxzt+MvII6ZfDDDIZFcPDcyPNjHudB16/Tk1COOeOeP/uTNX/qZ3/rNbx2rfAKBY2VtdW5+rlwqg04IZtAPnbDrkdI69Oi6Dv0SccCXSADsogGM6tAIB/d4BwYJ' $Logo &= 'D0OShPohwX/GGOyC4BKL2tNTU5NTU9DzPMKKQhXqhRDoOUIIaXecWqMWtaOM0nKt8njDMkxo+x/s/yWKY32hFtz9+3+5uryjj56InB2LvTxz8q1ffEUIvra5Nzu3Mb+yuVfRHG4QPcqYjoORBecQSYRbtzRnKMVnTvddmjk/MjwgubuxvXftxtrf/NO11c3SG5fif/an33n0s2Hc6XTQ0QiNAgFl9vr17cI92LRtGzoF9xMG2AUBXVswBvGiXm/s7BRhDVi58gDK+K1WC8QQSoUFmIadSCTi8Xg2m01nkvEYiFPvAI4HIACTcMGYYRggMOi8cfPm/sHBxYsXoeLy4r2iUKu/MCYISbhm7y4vLt1dhM1YLCaECDN7iODc9dxuivcA7iEUxHYhYFY8jN4SurDreW3HYZRRSjquqzFNStFqNSGtu51OpVoaGxn95uWf7e0b0HX9i9WiUBDK+vt712rJnQbbut5677/mY8aNkQH28rncr1y58Pu/01Nvdu4srd9a2Frf3q82BUIymaSnTvZcOndm8tSwxtDmtq+f7/7rp9t7nYZrET2u6TnPTCVTT5oNwcMrR3yMkRBSKBZnb8yWy2XTNKEnTB6MYc6FFJgxTdcIl2L/8CC/vl7c3Do8PHQcx/eBGQcDpdIpTWOEMUKJ53qwq9VswrOf9ZVVIbilaz2Z9NjoyMSpsXRvFhPadFyYUyBaLlyEKZxF4B0Mvbi7U/249tLFS7BC7IVX7xVKKkhKxD13fX31o6sfSikz6QwXnATr68N19AJ2ex4cRqhvjmarBRJilD6UjZACXuGSzGA02IRkLgSnlEp/EC4Fh9EqlUq1Un7t1ddGR8dTmV4d6egpKBQ4EdWl16Z6lJoWsmxPoqV9b+798t+++2FPjJ8ZS3zj0vg7v/3zPekEIZQGhYpCYffTWyt/+dfv391sVFoGYnHNyFGbRR5WYpCLZTSWQo9DMIxwxGXIyyvLt2/fFkJEo1EZAO2wFK9r' $Logo &= 'umHYIInV1aX5uTuFnV2OcLJ3cPLi5RODJyCFxJM9lmWFKgJgOC4497jjdOqNWq1e3dvd2dte3ykWPv7v65/88PrJoYHz52fGx8fjVqTZbkN0CeWHAyKRCPRcu3at0WicPn36RS4MUyipdPOKbUcy6R6QRBjhCfYzhxNcu4wxzfCPAhCAqa4Zhq5B/qAuzB6Tc5CIG+4N10V2ALcDw4Y9AAiIu2AgZFoRQghGR0KhyKQTUpaDpq8EjJDGiKYlEEpVhfjPpfZ/3F4x6a2+hBzo0XWNFA/a2wfCkSCSFNOyVqK7ZozDHx+MJXdty0SPQSkzrejTJguGrL6wuLC8skIp1TSNc46D2on0Qb5jBFpYWLh+fXbvYD+eyFx45Q1YU9Z3YjiVTsPxhBKEP/fIvQRg0z/dipJEpk8Ib3xi2nVa5dKDw73d1dXl1aU7//y99070937z9Z86NTUNFqlWq11zCCEg/XDXm5+fB5OdO3cu/D734tWiUA8/UkoNTUOCNxATCMeR20JGi5oESdwo41YdMWYh19V1z4hiZjMpCWOoekhaFcI0jFBoFkFwh5kESwwdhEjodQkcCS9d1w3dCKqRLx4p5VM+iUR+DHtxKNIJG/G9h5m6i9/mBCPTMJFpwdauIwqbrpSSMY1Gw1AiEBJIPnFVi2dQFz2GYactK/LFRuGcz83N5dfzoIfwlhclVAaDQo9hGMVC4erVH+TzG9n+3JVffXticqYvO2yZMYodKXyxCZcH84F8Vh9BhMLZRIBMOApyv29BYUSTvWYykx0em7z46uX88uL8jR/94/feGx25eeXKlcGhoUaz6XY6cL4f0AhmhiGlhOVn8PfMmTMw0Z55iUWhpNItJ9Kn5WAZ/EpGKdONtkANLSmZqYsWJ5pLfKkQ+wFuVAQiRHKPWk0WlVQjGDkwvpGSdqmNqZQIY3+oNtI8pHEkuPD7CEJmrWjWqw4EHE0TQkA9H+TyTBZBht/yjlVcfWSmOU7bT1au' $Logo &= 'C/vDRMaoRhk1DNOfrpgcfeGDlIhS363PwncA+voQGpr40fSZ0pNJIOmiH0M3vjCCmK6hgDCUfAEEyd6+PvQYTrtVr5WeWEfptpeWlra3t0Fm4fVACfEEF5jatoWE98NPfvDxJ7OYmZd/7tfOXngp2dsPR2K/bFllgUUokYQiii1oE+KPHJrFfxchDCqFpFwyKiTyXCQJF4gwM53Jxl9JDY9PLy0sLP7ow+/+3T9cfv2nX3/9MrKsRqPujyM5JhRgjBUKBWiAV76S51cUSirdJ3XRESBSdCSqIL1t9nh2b4s70CnD9BEZkJ7HHZd33A6XLsHdQWm6p53gNdfjQhKMP//GDY9zj1tCppsVzDtIyo7r1puNaqMWjcYIDPAMkMepIeFHplmzWd/a2iiVSrVqRUgviGtaxI7Ztt2T7YPaT8SwukI6Yo3qy81iCT+hn75mYHyEC00e1zqnJ0Zt9pGQmKBngxDYotVz0yOP9K+srNxZfWCay2+/+QuabjxyzYSN1dVViAKQSLqyCZ9qTFl6pVZ/99/eX1nLD0+99tKr38gNjZh2FCHudhxKsaFpQWkfhy8WLg2mMhAKCUcT0CeEJyTnEhOs6/4pnAiMPddDRMhEInXh0sv9udz87LUPPrpa2N741ltvJ1PpWq3M/VjGw9QCHw+evoS/U1NTz/6LiUJJ5X/Yew8oOa7zTLQrV+fpnpwwGAwGg5gDCWaCYI4mKZESJVHJsq20Ppbzyu+tfdZrH0u29lmWbAX7SAySGMUgJokBIAiQABFzDoPJsXOu7n7f/9+aOs0ZABwAFA/fPl0Mm9XVFW7duvcP35/Y63H81KnjkGgm8kDA5kEcIFTbNLtjTsBtu8ZjelsWCexF1QCqVVL0sjCjlMBDihaZ20E1VIj6JSwlF9FOESMAp5ukS7EU/OQSp+QsC6vE1FRyAsAakcsWDPfZdD5HypDbMHGJeCp3/MTR44f35XNZL5s6He6ALU7aqolU5eiZSh4y' $Logo &= 'JMWZpokcrhAP/T5/wB/E/samVtzS0SSmo6CMDA8cPHwQbqAwbMbjsTRnjYX3gdB4sOg1TddUzXCb4HzIFzujpXVe19zW1nZHtXKiECqbIBDdo7Hd3cPpbN6SJM3QxJALblPCIFo0iE46QMi44NQgTF6PEfSZ0CiDbr0+4Knyuv0ew7kyjvjoS5t4KX2jsfX7u4czOYyfT1ezkEBKRCotWEXSWWBRV3Q2r5s/47wu29HReefa9kdeGfBVNcJr5CIj6sEC0vGBf/mL29ra2if99svnX88orW/vjx05enzBgvlTxRFoAMePH3dQLycBl8/rHR3oe/yXvxqO55ZdecvsBSvC4WpZ1yBQaYqLsSm+AjcZTZGw3rBTMBhxEVZUaBBdRWKg+MCyI1VDxhWY+WBnGdpYuap+5pJLPdW1tXu3v/3ww4/ee+89rTNaEokYxsaZ6kDhwFewWGbOnOn6wNvv2u9sKuPjY5vfeWtosN/FOVAx59LpVL5QbO+YHwwE/a0tmLVM+DgiC+SSuENJKhakQhZ8A6QQJntEYhGWJdsJJRSgwqCQhDxIGdj3iyWVfwLdR7AWeFMZfSqrsEioQEXKZBqFn76Vp1mvoilqNpPe+u6WF59/Mh6P1Nc3gLC+hwcoMsg6uoPTCNzQNHQSC80N8c/nVRUJHAVuoQCOOzvntrd3Yo03NDSB05wRORJcM18sxaIoQLvvyJED+w/u6+3vTyaSWPkAKHA7NFuIxrX4X4HwB5wrNzY2Hpm/YEbrrLld85qbm/2+gIiXngQsSHz68aHoL945GM/kC5JkmAYXmyIWi6EvYdCzuSIbmSb8F8A28VH2ufWglxCVoNtoDvnqgt6ZdVXNVd56vwfbTJbAnD+iaQQde8eunpEfbNh7PJoERwmoSrJYhqqKd58pFEeiKTDqv7vr0vNlKmh//OVPqepjj/36dFGrA7m8oGQtEv6y2bTbNfw3X1p17VWrz4izlYp99YFSQ30lMmaHxEOX' $Logo &= 'PXz4sCyYAK2UstgPszx0l6ee+GXJCFy67sbq5naP10dyQ8nirP2q3VE+S+KG3QphVcRR+FMWGg8akDQFs6KMGSEOdjETok6QrKMb2A+UregN1rXNXeoJHd32+kMPPXTffR+fPbsDuZAFn3MmPFgguldTU/OhgWD/f0HbfsdUQP6QJDWZSgNxNUxCcgsWEU4rG7cycRFRZVMFiZpYgySJ5Ymgc2kj9hlWJMtOc0RHIHl3ulCU+VRV7KL1UM4WrBLPLdrAEgKCLdQaaqQkZaETQFgDS8qlYc7IZgv4xCmTIJKsK+eADLm87V2WSqZRx8l+Zmj6qrx9x/bqmjq/33f9DTdfuvKySryisoElDo1FXnn5+U0bXimxuhYKhmqqa9GviVSAaJKDp2Ef80hiqflc7t1t2za/805X55ybb7x5yeIVUF/ONtp46niuYGFACLYokBEqk4FqI3k8FL+Ai6maBSbGT8nOTApulLCs6FgsX8IAuvS+UdMgitQWDqyb2/J7y2Z73YYgix9V3EsSHrUD8UwCcjYeDnMjm8srWgECN1K9Zy2wdJ9Hq/FcCIiFaVQbMr/1p1c+/My7O47kJb1aN0wRSD/NrJG5bEotRa5e7FvW1bZsybwzEr55XTOLmV3LVjZU19RMopJQZAGOYR0J6zc2ePoZXp9x6uSpJx9/tuhrXLT6Sk8g7NY0FSo+gGQXBDWFJpaAuLAhtBNXWcGrV8uKqpCgxDAYfoUUI7zIJFtjxziW7U+JroVJSxdQdLVUcJvudMZrems7V91ycO+rv3j85w/e/7mZXTOhdmONCealc9QkklrCVQzuy1PJ/aRsx7QxtQzMeTbnXGfopqaQmVQYZurpk7qK7bPda/rHOLj3pB5OvZdz1tkuPp0Dph5c2YGpZ03dWbl/GmMy3fGZ+tIvkKkIGRoyjmInp5OFMz5t0KYsskWAAmK52IRLTHWChEmQxjQnhxV0iM6SIEdlLCtr4QecSpZGhQ300Fey' $Logo &= 'FnEUPlciPqGocj7jSo65sglJVmXS4Olm1BvIZQWQ65zE2jooD64luRy/ZDpAVjVF1SfmmhMKIGmqTgX8wIsKUiaXH49G8UB9fT2nT5288fqbg8EwHpNFv5Lj3LV//563try9ceMbieh4oCrk9XjBYvEn5EC0M9NKjs7Br4V0GvjYnj07rQKqE46svfZG4SYk9JWKSVOKpNPjuaKuSioGio5gfiwr2MAYlVRNwhVZbJXtMxmWYTamyUSNABVG07lkzhocT3b3DJ/sG71+2ezVsxrxqnC7j6yLKN4jJIZkPCVh2E0tbYFlsm+6rGQKOcxln9sM+f0XcOX1b7z+la9+pbml/S//9Mt339j08vp9Ow71Jwo+RferqiEI83t0lzLNPZ7SmWI+FnZn166oufOmdb09Pd/4s7/euuXMqb0KBQv0G9N3Kvk7ffo0IhxBpitFFrdHHRwZ+PnTv1QD4QXL1+jugKySZ+OEw7xUnlxiixkI/ckqHwQ1BbKDxmoyVNZCHhZNvGJMWhXhjY5wY09Oh+zQqi17fP5YKu1SPfMWXHN071sPP/Xw5x78XHNTUzIeB7MSN8WySiQSwMEQvHJGyuhQOvG1Eiu+MLWD113pjAS98r6VOTSnQ1gvskizw9imXhxfp/IYQYHOeHGn5+dbGdqhYZUjP7WHH2xRamfwJzGSSfzmQpgKVp1hmGiAg92mCVKKeyAGxTA8kPWhN2BS23YCx/YAFB/wFnQUbDDqJTgKlgK+QkFJWxYBXAI0g9KDTrPuUoABpQJxKGB3LqMnh2UrDUirYOWFEiPcrGRFVcnuUsZyxZqqfHIx9hBINciGJYY72LLpshOJ6xaH0Qi3GUB2WJG7d+0cHBgYHxu78457Gxub8ByOJWLHjq1PPf340WNHEDjW2NRiGgbwtBKvV5iR8H96am5l595ouDHje6bpxgBWBYMjI8P79+8/3XMaj3zHbfcIj2QnDA10ARVxsdTBLA3FwDjb+h8QG4kG' $Logo &= 'Dp+qrtOc5VlRrITpZM3UNYl9gbAfRilTLyZT2b29o4f7Ro8NR7PXLr1mfhtJAHzuR6yxaS0PzpsFY/Ebqs9jFmQZ40fdNUD3c5Ip14YC4WDw/Mt5nfiDP/iDeHQsHh3/3Oe/5PP7b7h+7V998dOJjGv73m4kahmNWdmCUnLZCRoUWpo5j1GuDWlz26tXLVkyt3PG6Hj0u//x8ycee3jN6iWQ3M98o1N9shE+1h1LJWMeb8BZb9CMh4aGQKDxleFhS2RkgSnu8aefz8jeRYsvd+lBKFBu1ZAlFQvEpsk018XbkiolVjTs9piGpkpluiL0OJHZBTixhlli5QrvQXHLvC12sBSHpaQZmJXeZKZYkgMz56/Zv/f1J5584guf+7zf5wMsIepIiuwv6Hx1NUwwtZOYxNnUEbEWLh7+wnXOTWQ/tLL8lZpTJVE+21fBaM5xKbRznD61nbte59k1p3Lla7qYx5/63i8W/qqYjyWxQbYKDmxERGIinfSYpphJjnBFoE8xD/s8tis5Cv6lLAscRZYcuEgCI8lZFDQgTPdQbnA/8XvOysNS7yFpTC0VwcnI4k96jCLRMaxDQUeJJxJEESpZt/2ZK+F8bjK5tRgAoS1uE+uNGpgl1pIvEIjHE08981QwWP2J+x8Q05qfNPvOlk27du+ora2vrWuAQA0FCQyAPXwk9KfE2zjYcRSwmYQFK3rB4e1ouAI42anuk+9u3Tp/7sLm5tZKHKyMZymqhVxRyWclA29Ewz7nBTgb4uoCJwQjlc9An+k0TZaqfGbAXTs6Ejt4evjXu080Vwc660NUseMjGTozGE0hUwqGF9JCqUzKaN4qU0YREkzAfaFfsvp7Pm1gYODWW2+FCy9/IzAyHos8+eTTz//qpSVLlt579+2rbpmDZFmqpmdzlsIGCtPQfV63z2viZu9s3f7a+s3f+tdHDxzYGx0+WixkYLiGdHXGVbJz/2nDXTUYSZw6dXr+goUT7uY5qCkit0pR' $Logo &= 'GFLYKIiu/PrXbwyPpueuWlc2aouyrqlAlsFRhNov44PXAK0ZZ/1NzC1AnnI+l4mMxbOwbuazkN0gXWEuaWaViA62ZS9bia7UVMqs59Mn5C3dY6RL6WLJM3vBNcfeff5Xv/rVJz5+H3ajw2Jd4FKwSp46dQr5xAwOZKmksAcPHgTLBL/BMWTh4f3YgNCGnGYoNzlv3jznlPPy2oedaXBwEOYczqXm0GgaOiQ9w0iuXr16UmcAMKZSaV3XnLGqZE5ix3Soa6UeIMJC4Y+D/txyyy3YFlkPxAEYpSxXdxZ52JzimxN3tOUBu+sTTcSDQ6rwcsNoY5zf16SE/bjR9u3bMSZC+nESHwjej6m+YsUKZMmqvFQiEYfDIdBLC2TTFlBsMiuGVBjqzphYj5Ea+z96JPYMdB4N9HL37t0o+7Z48eIPIvhxgkTa+SHAOXRR3aFYxrLL5rJFo6wXJdWV48MIlcYNGPUCR8ngMKEA2TI1UUaC13CxIns3sXwG1Ae6DEMguI4rlc2hKHeJr8ZYsY0GMJJs0Qrkjk3yEy7iyhZ9IapE+kRBLhUZAFCJeJUdmEECSMcgnCuTTr348nNVoaprrr4Oahk83zZt3rhtx3YC7lQaVTymDYvnc0KeZBTLQvRyPB7FpaCUBIJBvz+AdY4Fj7tNyvik68beA3vf2PD6x+79BAgBBbJIorflSDqXyuahvDgonoRmn0vwYJ4z3wgGBi7qiERlx4eYPyUxbxh/193GWK745DuHuhpCYCrOpPqoRbIMx1Ij8TQ28IScU9EeAPxBBPCqasg0Srnc9C8IenfbbbchLmQq3chl01u3vP3uu1uE/UBRQQeN2Z1zV116eaCqMRpPnOzu379n22g/DCEFfslFMbIgAWdc9mOjw4dOxnS9PpPz7j1wbMHCRWJsh4eHAXxhzWOK0pwhA7pimMaOd9/eefhA69yrFHcdwFFgASoQYrxel46pzZ4pAHOJsQj9G1xWKKvkpqG6UnEQ' $Logo &= 'bfyNw4kGGjeOQcc4laTH9Ic8VY2ASUvZrCBh6H6R/ghJxQYkPhftIwVeI6W9BKS0KPnq5l6xd++m2VveueyyywVTQYcFoQEIhgdxiiKLy2IxnO7pQe6yxobGdDpDUDA3RSXvAzw1KA6YygVY17ABjrJp8zt1dXXpdLpc0fCYmXQSpBNMRfTEYULbtu/EwaDy+DoVnxEfmiY6qfAndjjhyXwpBh9EigGbxGGINO2FF1644YYbiKNMZJWOxKJoSByFF4B8a5AUcV8SVVmydXo7Yd4l9yOx9vGpcgS3AH7wysLhcBU3r9tT2fOpdiPwrbc2bwILpxuhVXh0GjoplEiFIFIvStywsX3Hrt7eXrw+UQqhAgi1kRWhkgpuoXATQ8Gzlau7FSw0nIuDoNxiEHAMco8i48PmzZv/8X/9w8VE1E9Ve11846LoHafahlRZoIyoJXSjVMAqYQKhgAgyxUxbxVRhAvVimzzwLvzhCZjIsX8SjuML4lwcKhOzUeOSz5WTXLCaOPgWTYVigW0qBJKA1ucLgoFV9jhbEHW8aS2rWLh5BTspLN+gqk2OFxD4DLgC22bMGa0zDh7c94vHH8XGgvmLsFo2vvVm30B/fV09Dsd75UfHqXR73I5Gni1JkHC9dfXYgKEGh8G32qCar6RtOFISguNwfFNDw7ETx97atHHl8tXLlq1Alj8cA6KGw8YT6Wi2UNI0sjCweifgQ8Ek4EAHjMgiYxJFTiu8QgTxVcgpiMdwwqmamDS/Fb/PrWjWviM9mw/13H/FQk0hnK1MA6JOgUfxd057vlh359+4l9K5rzaSzo2lc4x5lrMUEOgq2RVCimDaXt3TEvAqIIjTaxAev/CFL+zYseMcIimmBIQ4JCxhCSG3c8e7u3btBFFkEdUCKjrVSWzVqlVnvNax492RFOi6oujB/Uf6hciFaQA3YsdIYANfbnNoaOT1t3YEa+d4g415S3ZrOo85WCme3QISJ/E8ByfBn8IjB4XU' $Logo &= 'oolQdJv6+HB/cnQ4mUyAqeAFagqLuiyWwlLpK0qJlBWqbZBlTSR/4eR5LtrAN/blxwanxccmKfAgcrlU2udrrm7uem3j5tb2prralkwaPIlGWyC0oE0gf5CsK60CWHfsrM9uzhMNB+PaQqK/YPhLhGE6YrXDP2g/t0q1BpR9z569FBOdy00N2ORj7CZsUnZTJgyZZcnurUIHOxAFNgI+/yuvvALvzU9/+tMig/UIwMzhIZTmhDsfeFiRmyA3kA6nmlhYVSnLvAIcQzfyH+JcbCNDKBRZsBboH7XVNZTVLRCwT5zqMcS5qx1kEhCQuBXplLo6VdxB4gaIAuB2QpWh+eSMTNkeJbbQCYZCl3VgfPw68RIVNMBOOFmAt5AYMOC//vWvv/zlL6Pa24UxFZ7vAsh39vB3kPSClWPzPf0mcRPvLk8md7KOkEM96wKEehWKDuqFf9BRQCVtN+KiJcYHnwWiiHyMiMSQNEsOlhS3KtFKJwrO0V9FYigZSo3H+r3FOcAnQZaYZCDxuCmO0TA0uoZtDB6Wk6FroMICapawsHTDXiea7nb7IP2dPHEUTEUUAydQjpuhU8NZdCg/LG6BPkCFnTtv/pyOTlyuu+f0nn37oI1Cw21qbMRZDiDGoZxFwAKmbgJSP3rkUFNLM4QWvKpalWCfTN5Kllx5VTM5EL9IACApYoIoC00uB/YcTyMKVPUChNeFG5ipSIbynuLsjtIN04QhlxuC3pFE9vUD3fMbAzVeDfGnqCCgqdp7mMr7eohJwrno/Jt05p2V1wIKkymVhV6ZJ0QUwBdPDMsCUwE8FPIaHve0sohiPP/2b//22WefPfdh3/zmN1999dWNGzdWcDnO4Hv2tmzZsjPu7+ntB4n3lHQIMemsTXlHRkbAsQSdLXKTVLwu650t70ZyxqyO+XlJk1W5LKlF9s7CtITvvUrL2IW9+CuBubKzZEmiLJZujx4fHx0d6oWffToZh1Mfi5g6oy4khmPxY1Vq' $Logo &= 'ZXm492R1U6dlEerMsJuQoCSsLNwFw5vF2gXb5vtg9stqAVwk2NBxOjr01qYtv3dHM7pc5iaeBVI5tIdZs2ZVWmsElceKsAo2KCSYoUOeLswPUGwL6okVJy7laCoSKxMOtwDR3LVrF+dKz3vcbsezpjL4zJlqLJLbTdXksxnPsY2rgdbv2LYdYj7mEqg5uAhEBKi/2MhkMyWGB9EfR7PhqeswlcqgN3ZUmmhi0MRZ4hhMEkBbsUgUDYoIog5w5SkGEjuaAnzdLhctqU7/TUOLjI87z4vD4A4O7U2gGiJjKYsqdmMhw+YxGjccRp/cnKFg+YBLQRSy+B+6DZoGZeWxxx67+eabb7rhRsGML8iluFQi2g2Tnkb3K7A6UgnQ2jGRFTidIPQYuQyoA04EC8H5hMZIAvXC1ywbSAi0heRMeAcdD3UD3EioHPxkxCkISgPcjEvlSBnjicvCOA+MhX2cP1+qEGewBYaCrjqKAm6fL4DcsKJadNXWwPoYLhRozPAOcEXhpivxqCZTyQOHDqxefSlruVHcARybB7dAj8b9I0JRIA44Z87cK9Zc2TmnS5aIHa5YsWb5stW7dm17++3NCE0wTaBouizAK6hTLEQDhUWfd+za1tnVtWjJslgijtCfaNrqG49HUuAjpRx0EeaFRRGMwk5rCIgExemq9TfObKClo6mxbGEwlkpkC0PxFKxPQY/p0xVMGZb3iSfhxiyZutyaMjge33qkt9ZoqXdXwVMoUU7Ch83Q3kOmAUCNJtJiJNN5C5CUW1ebQn5ICUBWZlT7SRqbRioY7BcShjPRTwyNI/hmLJXVVaW5CmYLrbHKX5kadCSRGUjnMkBRVJpAedanJBHUVyx5da0lDKVLn460+6Mf/ejb3/72uQ/7y7/8yz//8z9/8cUXXefTAMiccf+ll6z6mz/MEsqqKldfeZlwI+7v7xezsciNDF2G3tfTfeDgkXDj4qLqwbPpMvRdjVg/6+6Yj/iDROGYDBXM' $Logo &= 'MwwkrT4yJ0QGev0eLZ1MBQN+zD+aurKOZhNK1YPZAoNQIpke6O+vqW3EiJLIRY2C7cklhQNmyfWS618KdUXVtJySzJXUcEPn0WOHAMTPnj0btytxw5UFj2xoaHCUFUE9OZrYi7UrjhEElJLzQ0e/uIaHwpXBVPD0E1SbmAq6XFm4DBwFFBnDi6BmXpci6YAyyUWqzI16aSM9JOtiS8CDDqTvKNDAoyAXbtu27a//+q/x1LAq4aswn+AwdExA0A5zdTL+lCtaJVNxDmOnbfrnjKHw4Ehn0hhhSMrgMZ2dndCh0bepKhcALpBfAlSLzi8kIjuOc/gJnO/I4cN4CxAdhOqD6ziVQFlepYMnhhGnaCo3jIvDUXgY8BNzE5XIPn6Ftvr8889jFfz+F39fQIUXbKgng7MwHlisAUF3Zmck/lcU7rusQ7hKrMXbloocFD2E6zFEhj+VY1LYjlIEvcfqsb3VylK+THQEJ+ELq/kT1gLaT6fxqa6CHUBpR0YLtQg3BoEW4hgnR5JzjLzDXLF06TwkzsM7cABOULTI2NjJ7u7RcVQ6Sug64Qa4LDor3jJOx9DiMQF5HT9xDBwL5B7PjLuIKuK4mtBSgPMl4tGWluZLVq2+4fqbsXM8EYUJJxyqQrg1qlNAw33m+Wc5YpQev0DAlajjlIOEA4ByaGQIs1SVFF3RpFIhl7d6xhKj8ZRMgT1gQYTx0RRgwxHOHkvlZ9QEb1s86+o5TYlsDkMxmsj0RmAlzB0ZiR8Zjg9GwZ1yflPHCxH4oUK8t4zhLSpqLG+NxDOQSEzDHc8m4YAA+d+S1dFkdiyVScG1OpE5MjAOLkXMQHIls/n+8YTH0GfWBjHCNV6zoz5U43eHELdg6GGf2+9mjZvfqTQ5gxlxPcgAI7HUUCx5dChyaDAaz+ZhjYeG2Fod8ChSR13V7Kbq9toqXAp3HBmN9o/GwILBU4i4Yo4JsxkjreB+M8BUdO19OcpPfvITKObnPuwzn/nM' $Logo &= '//gf/wPIA9nwp91ASs6WPxTT4NOfun+SRQfSPfojKsPbIIxV2rbrYFat8oSb0gjFBdMv4YlIJ6FwWUnBf1hfDPxLRWY1iNRhtLeoWMb4wMkaP47JA9xmS56uUCMAijYEseRA17racPL08Hjcrej+UiFjEZJVwieuJjDnEoHNFqkqNE+YeckGcFvTVz2q+nbu3t46c6asGGXkVAJBVGltgNhBSMcgOMRakWRNUd2GCTovgvtF0XtyjOZ0DxcTBQkoAaIHAC1HTRGmo6JlCuwI+4HsA4oB9SS0QFMlbg6A5iA8gkg69m2hAwkXBowdjSQj2I6a6zYMLPxfPff8Pffcs3LlSvgjwGKBY0BYQOsrNSGHlONXgROIEahgKwINsTmuw6SdntgcVLW5Ah4NR+7cuXPRokXgH5NUATHaEAQr/arFsIjnFaYXMFqghBBrPG6j0meMZ28lxE1jwjMTh+OP5hLGaWLA6ZOz+oICKWW5VFNdA9VtoK//n771LRwrdJcLZCqOhVkMq3hpeQ7k5k2h01GcisycocBzCUBuOk8ossaD4mgxuSJxFDvdCDUwTdLvC6xui8OcAAwR+OVgM071COJkE7Z5MeikwzBIohoGCq8AKG5sbr5u7Q2XX34lEoVRiDGxo3J9bX10fGzru28/+fSTBw8fbmxo0NiIytb3Ei9LdmNhABGvB5/i6QoUdKhLrAM5PQSC4A+gvl4A2KU/GIQGhwWIkkpuj9sfCC1evGzfwX2UVtIR4uyXKWWyWUxruJzhZiKaB0K4r6wnC0WQciFOSezrTK+UCWvaKiVyBbemLmqr62gM9w0MgUvXBbSuBh+8qqPZ0qYTQz9fv+fQWMqoN4QMJaOHYGM8SlmAHFSDQPP5fS7dXZYS5AlXlvpjqTcO9716sHsskSrAYEOgiIRD0QOBwsNG1JtIYZEZ5dKmA8RuQwHfovbmy+e0rO5o5KcRAsHk7GNofZHU45v3bj/aMwY5QtOIWxeItx4a' $Logo &= 'jiGDG3hlU0P4c1ctunfVXIK/4EcIxcg0chbZqySsUpWImfBE0VU54NH194PpgYC/L0e55pprvvOd74ASQTAEqO2adrv00kshwE7nSEwbqClY1cJEj4cW4m1f/+CRU4O+6vYizXme78RPyOBBf1gzcplAsAnNm3OskCylmfroUHfIDTprxJNFXbczMrDUbZueFW5OYeC2GY37jvaG6mYWyHuOVgCYG2n6AAisEqu/aBL2409gwFjW2YLLF64/2X8MPmxtrS2YEzLeQ1EVBmpI6xDbxS0csqBxc9BvoWRgj3xxPr7CoE1drCDTuHA2a0vTeHfCHQAIFeRxGpApLcvNoe5oTr4A6FhgfpI8JQ6D23/9138B6nzggQegtMGehNkCaiBkecdLSoyJqPGMA7DhsC58imtWRqE5D5Jnw75wdqjkoyJbLn4C6wJjgDcX4KZJ7tpCmahEAgQqKO4uctAJvAvnStyccwVfcSib4Fj4dMQRPJ/XG0A3HC7OSgSWI+nEUNeAFf/VX/2VQPXF3S/YpmJXbHSV7XwnDv9lGzEJlNTRXBa2eQ+DwArjGhZrUCpv58lJq8zWZhgjWUchBcWF6S0YBF3NxtEEtyeDLWXGK+SVVDKfTgJ15gp3+WwuTZYvVcGpmVQ2ncnm2abEpYqASpPDAnEvRkVRNKwqHCKmweiboWh+L/75Dh1Bwtb9GfbZECoIxlVgccJfC3ruwGA/RECMvUpSAJV9AciNn3gcyAiPzLKnTp7c8OZ6qBOXX36N2yBshAP8c4S/L11VFQrhClO9u/FCWYNRGuuboFNjmVNWJinXHU0NJLNhr5G3hIOOTaPBhmNpzMJiyOeuD/pwLQ8Efp1IieoiE31zgx+A8qbDvbtGYrFMXlWwU7gzQAgSyQcVrK0EPR5xmdpQ1VA0/astR9883Hcinu5NZqAdYVkYisAOLIl1Qzw43iDGN1sG+YG1zkLHBlLjkWTm6OmBE4PtqzpbZ1QHNMWW13Aw' $Logo &= 'pjzOAsL44r5T7xzp3XqkJwUsj9YT/hVl9sYQ0Bb62X96OP3SuzAcLWxvGMFDyjLJ1CWaNzK/0Ak7QMmtyS1Bw6efax6j5tVnP/tZrMlzpgLr+OlPfwotHts4kvTOaTfQL9CO6Zia8U4hQTs15MUKxAQ6euxkqqQHPWF4bGkmdBHm+hDOoA7IJcgzlOaOZj+VkMTME4vCNNRoJKYV4w01ddl0Wjfc4LqiZJH83iZxU9hvPhDwtzdWHT59ItDQgUWRt0hgAOTMnjHCkUO2WJyiP1rKWFQanDcVb3V0bOD4iVOtjTWUJMciGVxwRzwU9BWMXiWZc2ATpwMYJex0XVxzis04QJawG2tMgvDuHn30USiazht0aFwlpgR5Hx5owpkNBzixBOgh9FT4cQhWVGn/wPWhl4Ai//Ef/zGYFpgKOBaogQHkTRAKboJz4DAwJ6ik0JlgccGGECAqzTPi01F2IZe0tbXB+C9cOSYFoxDRZ4YvkL3LLrtsUlQ8BlYgUZVGGodN4pRHHnkE3RPS/9R0UzgXHVizZg0eCtvCnFGpvb3++ut4EGw73FGwHwwLNDasL6huYtAurp4KDws4FrgLcBtHO7F/YmyrXGI1HwI9pF2plMOWTJKyHV1YJog8T1dwYY4yryCOkhHYLqss4hVMAJAlNieS7qDBLpKO5TNJmEQgSmMy5fI5ShmpUPBwFiazTNYi3ZN7QYQPH7hmAWmDoa3jstF4FJcjCqUgCIZSdYWramACqaoKpJIpdD/g99oCkQD3CoSkAT0dj4yTEZJmLQl0lpVzpovOYoXP40aUNQK24YiMfiGNGKWG5Y6lovHm5haQoXOPO949gDhZlYVBdSSaAKLlBX5lFcRkFMGMYDtR2m9Uew0wb2B7mLkcGkrGVqAYjZ5gY3WgKhwoaSqIuFuXwUtYunMpjFOWi+QyBu87DJjLVTUYt1490Pcfr+080Dvqq/LVVQcAX5uaCi3adsUWirxAgdEfxjO9HPcO' $Logo &= 'v97xROJg/+jh4VjPePLjl3S11dlUxgnYfH7n8f/chNyQ47hmbXUVtFVyisNI4oEA/OPIgNdfsCLx1Kaj/YlU7rIFbUciKdPn5sw0DDuzzZPM1YqGrvhNrQl5DLSzqtuQW++//36Qg3NzBbiHOi4rUCbOF+WfpkcTNFeQIc7wZjdsI6iwp3dAcVdlSzrlRiAezE5ZIAqY8XK5yLYDixNBEshVxEqSi4qUBtyeiC+fXW3lUyx4qQyQT9irK5rDwHC7bCreUhsYiWX7Rod9/mCBoQW+PqGr+OTvriJzcVaVaLQLJYWIjDuMribjUcnjR6iYLT6yORDjDKYyySPG9pzlwxwN5qKzbTsb9jNWejPTOs3nQf6c6JmpPAlQEmg9+IrFCfIc4l5kvAgSPU4HlcelKtUU5seBr3/96/jptddewzJnSIrXApNvB3oCPAWu89xzzyF8BL3CWQ5AOjVsXpwFVU8EtcArd926dQjyKLDTbqW1H5QNLxwCMVg4uCY8uR1FqlwReFQJDDhIEo5Mcptk6he8ULAfTHukSIBHAAZQ8GwnfAoSA5A3HCn6U5kZAZTq9ttvBx5YaVG7yCJdFXkRpniHCnYgGCPmblYqJnMFfApXV0hDIiMLttmZAPCuDFksz2OgMH5lgSexk7etFXEdbSZSKheRUDk1ci6dyuECkP1JxuNFxdKRk6SPZr+i6/lcXig9+K0ydzFPNRrZTCELnMDj8cViQ0L1IyMQJ7ogUAv/K6sM3dFZFr6T9mMr4HaIM+WpJEgNaADY6Nbt2+Em39Y2Y07XnMWLlra1zoTZ0L4tcjBnkhanahZ1+AV7I684i3L/AZIq4SceKxW+BDmSJiv97oRchEhAb0nSJRcmnKvo5gRZjG1hbPLUUYxxhtS0ktfNuolw5GXKJfKPYdLQYYgjymU2H+19fstBmEw6ZtSqusaJCVzwVy5rAJpIz0A3TVXFBi7hBqcUD84oLMbL8PtDpjuSzuw4evrqzhow' $Logo &= 'lcr4XShML+46Fkukav1eADXgJRlJov4x5mmxhiqzdolHrqsLDeWsF3Ydy5QlN76TH6DKj86vRNFgDYK25TE0t+kD53WdqUFCvPHGGyFJndvGDrN8V1eXs+c3v/mN63wanXv25hi0STgYG83RZCqzPpTGp+YyBodH4figBpszOZdslIyigmfFFKCH1rAEJMwHYUe1JEtxqXKZ2ExBNWJjPUtnBzFRYUlnDxHyQCkV6Z9DwVld4FZSMNnIMalcSmULne3NYzv2JhNq2dDgqCjnZYt4Cs4lvkKLDhObTfdArbMYX7CzPN5E9fj4yNDgaFObF0+B2YNPEQgJGWhWsehEobKDEHMo3mZXSZnhB3bguYgm4EAAG7wkC2J4lbIqssQC4fmTP/kTbFcWP67cQE9AlJ/+5S8hhAnvWKfhVzhtYuXC6byVba5T6aPI/w8PGsj1iVgcC6QSgIKCCY6C6D/4QWFeQX4HVgaRRSBOU53ZHOOHsMPDNWv9+vVPPPEEFAuQaVwQmqRYYXhqcXwc70zXDh89gh5WwKpWrsCEUyk7qqGrQiFevnz5v/7rv2L/1KQDjvUFEBa0NMJByc+IiAM6gKFWaUfhzjvvRJcwJpOgOaGtfmAR9WIoxcvDfQVGzIoLq8yMXgn6TjOeMCiaqELUtUTgN+dFwj78R0qMMLaXS7aTEnukQHtxXHUZ/yAPL6gkGGMP18WjqU/HlQRAZtMdRxmyaLEA5WGCTxCCaRiYGbjQJE+2Kr9PIyqqDwwO4R1DtwApJkmNC1LoKog060DpJEclhXFHeJUjiT3egsygNXGaYtEZaPQWjucJaEbxSP9A755du6uqQphz7e2zGhqb8MLngBp1zrftt9FIvpAr5ylBk8OqFVWBUal3PDGWhv29KF5ZkXQ1GkldA5mQgBoGTR2JhzWZ7FeqROxEWP6rfBTbPxRNnuwby8RS1T6TfB+KE1PBlm9KsP97JbmjofrEcOwHr2w7NBTB07oNlYP/' $Logo &= '6Y0puBF5oeSGklkE2oA3QVn0aCrgOIwlRlMRPWOfCyCvw9n8iUjypX09teFwe11YSKsnhqMv7D7+9vF+rxsdl8mjKVcgls8BE3hvFvbwi8YeMBhF1eL5TCqZNUzDLYMwod+qU1gG7BZzjVKfqQqogxePrU221UOQxDI4Z0gK1ej9wQ9+sGTJEvH1wjQVuFGe41cnQgL9GRsdE8Qrl2MxiPNBDA+PQkfRZRXL2HC5aUDYdxKfhAzjT8InCL1LLATKluD2xsf72kJatVsdj8aEa7CgqmXewCcNm6RkMzlyMtVs1kICFvhLMWsq2tzZMzbtPuUON0DexSJhHwggkNhAgzDHGyzMU5fKtB5VRc6W5N7BsQaIyewHD7ou4BE4IMB5EenJnUKWwh1U9MeOI8mpNtB0EQ1XIFgilxN8y/HEFQzGoe/nACHpVzZgOEylyA2/ChBJ13TBP86YLgyUFweDB9CAcWIOB2P0ebzAWp988kkYXT7+8Y9DQZk+oIepCPZz5ZVX3nvvvd/61rcefvhhXARDbLFRWUwbgV9B9cFow5Mb/M/hCrYxhuMcHLLsYOzO45xN7nFMQbi+mEWQQ0lu54ad+PVsF6kE9C6WqYhAGI4iZNQPRCGfFzCUHUzFNJ8SorCuIPxELdaos5gZkH/BSCCpM6mA/wn7cNEXi1Nx5DmAUGBl4n7SRLicxXzICcwTmO2kEAfaw3fnKEj6VdUUjee2bgDOoWBpEFRe9yBJpUwWefsVaBY9Pb11tbWcoiNf4oYVKSxX4IPJUqG+rgGIVl193YmTx8EySPrjxMMuQgwgrFh09zwhkiEy3oQxSulUurdnD5QJTVUDiGmqrUVUysrlKwdW9IM/+auCbq87gAVZLONIjloglqhq8kg8dbB/bDwH+IGtCQwYZgsYK45SY9rjNbWw1w1mWXKpJKWqkkL3L8YLhePdJ36zt+fgQISUwAmzhO3DrlPIPi7V6PV0VAcMw72t+/QbB05V1QSb' $Logo &= 'Q4Cg6PUK9laSyR0APqwdNcE6v0cH8iSVR5LZ4WQumcVSdnl11dFIwFcA0+Xz8pvHRuY0D7fXVWNn91j8mZ3Htp4cwFXhIoZ+5zIEtUjES1wsZ8tQp1JZDtgm8EeCKmOCFEqmPemZ19olMEEWkfUelVSw+k0NhnwNwLbmfm8ax8Jf/MVfAKZwnb3hxf3P//k/77rrLmxPOtd1Ps1/znSWDtqApEEgu8Iey2g+i0fZwsjoeEHyQeLHW9UspSDDvEUiP2WlEYpZ2VmylHlONpREPBJQ4q219aNDkZxkJw5x/GVE9pf9xw5CNV+wYAH2y2pOqCxk4tZNVXPFY+OhQHBOS3DfqUGjqiVbpFiggtBUGGor8AaWJ1xv8FlkgYlcz3Rv/3gc4DJWDhPiktD+Aa3AMF7FTMUJMBCEXmD96JIgWK6La4Lwgc4IW7EwJwjEeFKqq7MxFdElXGEqUxHKgRNLX3mi+FUkp4HxFeYx3m9n7RBm+cF4AhFOf/KNb9xy882OcR5tmsmJRfdg7Pm3f/s3uCzDuwRQGIYaP4vuCfomonCEJzddkJc2wddYHBapF04ED4gkTjzHsFTuwZHkKcANFwStE2OLZYKndrScqaeLe31Aqe85fST+dLJOkxFe8DdYufPFAseeyBhXYJwlSkNk0VQjZ2JLY72aOEpZLJMSATuMcRWInZCOLAafgXwLBAXfaIOIC4RTqnePi0yJmCu7GP6q3Fs5KQzKeilj0sgqXdjn9jJHFM115Mj+19e/9uqrrwCCA/BjGDquB6bEFkk8l0LWe9g1NbAbd319Y0tLq6xsjURjdbU1OL2Qy1WOtcapZ0E8ZCqlrLu93ka3m2Q+ss1Y4+PRyNh4b0/vCy++hBG48orLP3H/J5pqydCSSCUVKFToIKXxl6LpAnK0cJisjHjyAouNaFCaONUzo+8iul7Wi4qRcVmw7kKNiBdL2/tij2zYu/lQb1bT/DVAz8ns6sxivAs8KSqcVbd62+pD' $Logo &= 'hwfG9vaNGB48ukx2GQmXAapGTtvxbAHRLh3V/ruWz75zWSc4ii4VXtx/+sldvadHY4lMDtIRI4I23olO4hjIgRRVw60/ln7r+GA0kwu6dTrKIs2ShImyhHctvCkiySySVmFW0bvW1GAIvEmh2reCo6gabaNnkCI5/SVnOtCqPLpCX6VJktf3v/99rEzXOdvXuWFjkpoCgPu8Euie26DiLFqk8BB+X/YKLOFcFRJYNBaX1CbKwy0peKEUemKBj3NUil2djgQySaiVsgaZQsmMzl1YFY8BTPNJco6JJI2ixeAF9BJYOF544UVcGWWCkGMY8SsiXBdUGC4VeMe6KsdiozObgr3DmcFoVPGA4lsFFlQskuc4mSrNN5EAVqRyIXYrK2Y0FYfW5fZ6SiXbSC4kaICNLc0t4mltTSVHvheO4VewhItMMUr8gJuDfeFeAkEC+Tu3yFz5kzBaiHOdDVxNYB5nOxGME+wEBIQfRBJJ/ETiQQwvDA/XX389OIrw/nKU1Gmm1hdfcS7gsj/90z/9u7/7u4HBQWgwoLIOQOfwqp7eHpiF+IJ0CmJUiWByY6ZiO+TgJ+fi75vI0tFUSEAp5DmBDbEV4TM9netcNPwlFG30nHOxEDokeH6JoVTKXY/VTnZ0cEBQ5JSUsXSYJgn3cDGAkyfVHpsgQERZhOJv8bBRpJ7gJSVS2MGOibjIMm1QnK4CcW5qPVkH/sKJRRwGWJDrPNJrKOTdJhlUE/HEk08+sWPHzlw643BaTIujRw/v3b9nbGy8vrEBukfJYmsJgbPsN4lyxfEEHi4UroJnGYJdPvbxT+7as+eZXz6LcWikU4A94hQ79ltIFiX+dDwxwGAsfCWGSkMVicUgu+LwyNhob3dPV9fce+/7RMfMjkQqgTJfFHSpSwjS7RtPJDMFdCdHmjCQbAtsmMQTScWF3VXesUz+Fxv3b9h5wgMjZIHmEJ4TmSK6U7ldPUPZRMoTDpqGWSxwficXTT2BwxaB' $Logo &= 'hSVzs2r9i1uDL+zr/uGb+9MD0XQig9z4OMANu6yqgqdGBvoWz5/1iUtWr53b1BzycNSReteStrqg7ydvHth4rB9wFhuDGPfEKS4ZwgEcnVMTYum+k4P7jvYphlob8rF8WcqCWpVoTPByUJKnfyTu93luXj67qcoXSWX3940dHYnGSsVav+FS2aWAk7O5xAYJzGxg97ub/R5sTEoS8/TTT8NFx3XOBg/jf/qnf5q6GCCHIuT4vPyJYVydjqYC9xDoJTAQCdQEnAK/pVBgIQ/rvAy9jQsLERopW/SswiqoyDSHLIlcsBjeNHKZ4Utn6vlUPp3GmCS5HJsYVDCAvIpxzcsvvvib9sWXw539uVfeuP+O6zXDyOcsLmKXM/S8ZRrgPABXc8XE0lnB9du7I6UWFlTymD5WXmPJx/YwBhRJs6YogbcXC+gPQucsiM8wPZZYSyEsQKIA3sh4zA5PptwZVoYETouRmbwwq2DmAT/F58WY6WE7SCaAK9t6BgFWctHSiKlgezp1UIQQAMycH7IoGvMYepJKKjy1NgleYh4thwHKozMOoaefCjHMZ4GFytym9mQ6e5j3Wy0tLVddeeWx48fndM3DtMF+R6nCCODioyOjzukgdelUxnHWckAqqXwe5WGYkktc8I+GQkCXlobFTUxFQHnTT0t84fVUeOCIczKhy0/wZ3YYZ97ATlPE/iirDby6fBaYCqL5BCvKMyJJMe1krmZ3fO6mMP9iFHltcR+wLVMNVZaE7eyPU/sjCneJZqda4WgO7ktZZ8+HTCr1q+efRUA8FpXjrABvMdwerKK5tRlsA511QvQ5EpfC0eH3hYU0b+4809Bxk67Zc++88244IGOC9/T2ATHDBW1HdYDXHBeqMGiGFYj9ItJSodKT1NAvw+0BNIaV3tfT/9gTT2DhDgwP/sk3/tzjhaXGjynv9ejRXOzYcCyeLrD5v0hx8AJwoCplxHcCbiOWyr2+56QrngEDxw3s4YI2hprF' $Logo &= 'YV9dXbBMVDwnYckVmTSrbC8hsDKHt9cQ8s5trHrzxHBHfXVb0GfolPsPN/IrCoASPMewx7p7efu9y9tNuRSPj5cpXkXxmXp70PQbcs5CT4sGiB5HGMkyYcDgGRlIfDw9jg9Fth3rA4WBNQXMgKZsmYKWhHAYSwIUzNUE3PesmnPf6rldTaGhWPp1qEFbj2w7OQgxGauErgJvbJ1zYWEDCIbNVLxNAWIqxYqVg8hewNmuc7aPfexj//t//+8zahhYS+cF0cBhBrLk+2ozuCY8gmgesvUbTeaCdZwNDs4qLGZIJYZY7bShklMyQUzUcrpshJGfdF5T2e81EUsDQMli86zDVEq4rK5v3rIjYWm3Xnu7x9SOHdy3Yf2GtUBRyEyoK5YC0YfLgkGXNnO5YnXYNbezbsPOIdVXj7MLBeyjRJIFoakQ5Ubf2AeJzaKstVuQA6pCdgULYRnGBswMGD2sDgGMW0W7CduvcHXDARdvU8HVHCTNsalM31pT4o6DiYihED1lnlIQ/mPnyA0MTYXuy+9RXMpRHaDBwCiCZCoXX6dSzMyuuXOPHjtW4FdcJkySwTrQSQVfAYdLDhojFDWBVlVaOEAfzme0y9Z7m5CMxYrAxodR+VHwQiaeZQBLJPmCEDv1TVUZVvtcNkevC86+UBpkktEzeeqrMJwAHclbpEeI69lFt2muMMoh8C5No42yvUF6DX5SVNqeCn9ZImafthWVEuOjUr2d/kzThHUHlJjzdZuVdQs0lTBfGafAoJpMYp+iYVsmh1srT/C7boDtIX/J8qUr2mfMwgSCoHn9desSkciP/vOHu3YeQGRMfWO9h3JClAxNo5gyCsHVafoWsWHYG4qB54W1xvFOwcyua6iDV9jo8OiTjz+OWfPlr/63uR1zSya6qiQL5e5oEiCCYIEwW2HG2VgQPEPAvTjyK9gQKtdV0QjYQ2EPKIaUfctKlbkhBTaftco5yMuGSmtd837xisW3Leooi8BVgd87' $Logo &= '+SjJqoQIb4h2Rb/bA2aIXwfGYz/bcnz/QFSUGWSxmj17ijRmImsNI2nlg71jxyNJxecG+Ulm8llORy3KqGO+jozFAel8/aYVX1m7GDCp6rLaQsadi1vdupot4twRRSr6TKVoG22EJGz7bsCYBN4m3qCTLA9R8edeAJdccsn3vvc9SHNni08831i86USoCLTaUVwogxY73WQQCVwAnghzlwW4k0O4VXBcCSCYzLndZJwuPB61dCJa70l2NdWPjZNTu+P36ZrQjyHVnDzVs+vQqZs/9vmyZEAWWXvzvU8/9H0My/wFC9ABnMVkoiBRK+DrWGS8qb5pXnNq24k+01cFECFPoqAMdm4bV2gJKAyxkqEUXcP+ZDqL7wRUM1Nh0ZjMKrkcMZVJ3k1MqdGKF1/dBFcV0rqDVl2cZ7JTvKMsNt/37QvzvrDiOo/jOP6CsHCezQ+mPjfcgSCv4EGdwGGxYXHTC9o5Srk47PO8mEGJm7isw33L3D4cpsKu9OAonIcb7FRmYSFDBjSOCMV74kwpIKAEWMESKxmZEnnGEnpMp7MNEKcz/YIqYEMc/F4F0IErTN4QaWBKxpkrxkzKrcsZt8FqhNJEX1UNnSKTpcetKISMifBGlekvDiBxjNYnVxJjJUyUcYR0FE/EkHvniiuunjVr9sjYCI6sqam74/furm1oeOaZX27d+nZvX08ykYKeGA6HwCRwIhs9SKuyija+R769rKUBEnTc/HXD9Af8OOzg/v0v/uqFltYZtZ//UnUVmbgRYDgWp4r3inDwZ8cVHih85ZBrhWAURRZuxBrDg+SbTYpdoSAyulSuIplL2QNZjw9GYDu6/eold6/oBOShqwrCFV1nab2RxK6ewQyonazi9aWSmQ1H+rb2jqURM+Ux0LEMextrFBMqWXnIw0VFVf1EX+Td/eMHhmOQminugUekyFoX2lgkpav6JZ0t1y9sbaoOJqOwvJUNTZkR8n3yko7eSOxw33A6mdYkj0qS' $Logo &= 'hDwxNyiGAzwfaV2Qdozrudl50e+++24oBK5zNkQPAFs4x7pynU9DiDXKuU/aCb8d7J9EjGCHqJTcbQWMtHZZWGIVgn9pYDhPOq0njJ6w1GMjltE95d6V82pyFETFKvtEI7ZDUhRlf3zzrXeWrLqmtqUjm4ghtMcTbl5y9Z071v8CHqjwEKHDFLsmqUiNJKvuRCS6bG742Eh8NJ6wFA+bVSyRbSzPzIBQV6Y12FYlbBNbYj/y8gQZYpc2bjBWordO2mDHaAzmVFmI0Aasp9ccCFGggopKF8cXcRcR8m0ptGeaegCfqDjvmpZ+kc5VuZ0j3kIE8zshgZVB7BrbHyadeJE6GSwZ6KcIQxSVDkTVPqlIgzLpoUSblFxcnDj9wFKBnjkuGPYIM/7x4TCVouDbXNODAtzALrh0QYZs2+xMgakHYFVlC0o6l0sbAGzZ+E3Bwky+8cxCkHZidxS+KVfcxZdJGyKim6NbZCaX4v3TmiS5yRbEKyJXSTOXBUkXbAMbDC6rVOCLJzrbXWxzIrYJvOLlItmLQwOnHB8dmzmz7aabbgJHEU4KIOrj45Fwdc3H7r5v4aKFDz/0k5MnT508cTKTSpckOHGlyEmDxGGZn9LOIF0Q8hqHozkZ6yDEqrpeFQp0dM4GDX3kkYdmtMy4/+NUEAzoSBJ+D1xMgzP1Q2EgJu3STZyLDb4Y5ElsTJQ8E28Ex2NDlokWy/TniFT5bD4RS+GFXbGw7U+vX3ZZR+Pg4JCsyTqhduVowRqD8T1nabo8nMyfHIFbb2EgmkLOR5gCEbOCuPme/lE4pAXCgbDHdKsK+iciVwyVZjH6i3VQ43EHDBWx6f2R+Fgi7TUC1EGWqkG2sgx4ZpO5VXOa/+i6RTNDZjYVAWdC/1l0R2bP2jWdDT/d5M4MxgDE+wJuXFok4BM10BSrBEdq8BULbiAuirFFeAHinKezVl0fXMN4Tg2/h8Q6CXd2MnDY9uESGx1L5GyR51xEJCyxb69U' $Logo &= 'IqASinlewu+AldktAXvTA1evrKs2tdF0UjVYdSBuwgHwfBNTlda/+o4U6pi59GqEUHBy1RLKq8zsWtB3bOmbmzbdfedN2YKOi3EePvwpNJ9klSVr+bpVzY/86lTB1FBFz+LUyOipqGIBiQx95Hh7qDFF1UV6DDMS+p2JnUyVJnOYHVmRCh46LqZTySDKK9Mk1aUcacyGqYmXKKwv00eKcKTQIw1Tp5Wk0NImMk6WV+AaKtjZ9BsjRbSi5CKtjAK7sMB+yIxJOgf8BU8/vD5Nx+1VoeJgSjOkaQmrA0IIUDPpIpUV8bAUrm+aeDQyRIPiCXiUUl5q49m0aZrOLdBtvEixoaDxp6NGT1/JENdRyUaKpSqrZUEyKfPhh8RUmDoQkoOH00yNIUqLfPIAOWVStJDKchaUk1UoAGFSKWKZ9RZEYgnqt5wtk6TheGiR7WTaCUypoB3FdBjMb4iVAGIFISzLE+UUXfYGm+uLrLFojFjn+VYaaQ+Aj9jUWOIgQWHkonnCmCmOUSnnM6lf8NQ6fWrgc5974MFPfYZTUidkif7hsEwyXTAKAX/VA594EMJlf2/35k0b9x3YjyJF8WgcVdwsTrHk93sDQZ9pmLiFcNHhV4jrE8JG3czn0B+k0MA8OHn8FKwsLm4ZUPkcCeIA74iFqJqdL02AHpViiaYLRxCJs7/hYDHF6HBNowPYHTebKSCbl2soumDVnK/esBw5TtKxGEYDK7Uq6EEv3j48/MT24z0jEasE+wfE4kwyYzHoyAFJXHTWCHhaSBnCnmIqX3JkTqC/2JVm3LLFoDOS6STKREBJEXITJUTgGAiu76PhCu213itm14VMLZ0jS7WryM+l0iQ2DS+ChwYjGUwhYqWSIegQjTyEmXTOkGSPYcC/tawQvvTOO++4PhoNYclTYJMp3rQ8ZBaaQHfZ3iJx4SCi06y+SOViFnGnmpaJjFw7272koz4y1u+mmsRFAvWF7mu53PmMz+1BRM6x/tja' $Logo &= 'e+6m0MVcQQbR5AZ9Y9GVN7z8xA+37dh/7RVrElmIOrqT7B0jahh6OlOYWRO+annsuY0RORCCT1rRYtuPEH6IqdAdiY8oAiQhhIIxKJu10FPkbW9s4X9BLvsixQg3keEDRBnQcaWMf150NpVOwzNKqAXOZUUCGORlmn4NfILsdI28XciZp0gbnPBb4zIw53DNQoETYRxyQtPLTOuF0y0G6sSJkwh7uhiwyEndj/wL9ShHls2YblOgUsJuhLtDKRdzzLEqQacRMYxOXmE6ks3b55kCB40qxzpZXjBQlkWQ5ofBVETlxBIrxTkR5QRqSZY6Ax60sCkbhopFMzw07HHrNcWsO92rK+GYVmfJhlTIepB82/Gn5pfm6MTn2MA/Tm4vmYkh3/BBIzuaVc1cPsmWT1nUn3ebImEqn8RgAkuUdm1HLAGh0GFDwgYzEvZ4lqEucCEhXEoBp0JcAVzFBgf6EFbyex//2Gc//4dtbR3j0XGkEBYgknADhydIqCrc3NDMKaRmwXl8+YrVa6+7cWRkaGiw//ix4wMDg8gkgNS3hZwFI3x9Qy3AMXBeFjZdNirOupHH7wP9TiaycEECc5NkKvUPxQI0BJOFeIJTcMtJWYAhJF7KegpjwxZYJp6xCL2ChE3y6iTKUiJOlsnhTqH68PLFs75y3eJr5jTASGNoKhxP+2LJV94++ubB3n2D8e2nhlPJNOVtVPGc5OBtaorpUunmYFm6bBqaqbArJ7gYHoIBBOEMQ1orB9Qgb3GN14AFFEB7inJMkVIKCTfHyd5LIkdlIe83tZagG8+RyluyYy9hWIJSRWnQSPlVygqb1ki2LiqaC6hZuRT2qQYEtBI/OWegcn00GuKop4QC2Ll6K3OxKkSbVC5DZ2GYOQoUGh+eFI9kYTYTxKlIVmKsxZ9ft3pRPhPB7C67TBjsygIq4xLDAY8fBaJeemNH56W36Z4wQp0UiGgMUKGB4mke35Irbt/8+lOL5nXOmDUrk8mZ' $Logo &= 'piFIs/0pKYlY+pplbcdOxDefHjY9AXBtijsmEKBA3YOmYhUm4C7Ct3WuGoLlwiSMVHqH7oDAYRufZc77UGEML+Cd4hM+VMjpgutMHywSRn44y4CsC+9h7BFAlijuCywBn9Ok2jgLkr6g0Y6FBl91TY+MR7DzbDVdglS81Q8dAggqUBkmW3a+SHKR8viQ4gUpvGAOuTBzvXPW/v37RVwRxtDJQiY6iZ6D5eAulY8jVCjxQoXEgP0aV6WdPofDAIps02JIhYUJe0DoPjSmIlFj51QAAFgf2AblwpQFrXF7AAcqTXXVM9vb4fg/NjgAZuN3HUsiakXVPVbam0/ZbsGSJFgFW2HfZ8OuEa269WS/d3S/BV9lq4wV0oXW2aXLeiEvjMQuOz2eQpKVsMGBC7uIFBJGx8lfLfKfYg1RGIfYmM8JIl0EwhCCLCuz2metu+nmz33xK/PndI2NjwG2MNzQwDUSqwWYjABnrk+OGhUgwAsWLlu8cDmL7fnDh/YfOLjvdE8vYhSOHDoKcIYK7yTTosaqi8tEOqAzOBx7Glt+vzsaGd2zd8fCrq5sngzyOB7/QFjL7/W9I4JRKBJ5pj4XeH6pJamASSHnLDwDBgOQkqYqXl2l6lvhQENt8OqFMz596bwFjcHYWJRiTmW1L5p9YfvJf3zundMnBlymLrl1Q9fcXqoTio6aOvWVg+sFkQJeR6ZejYiJHZ9E4SV2uicJtNGQJERQ1gS8CO1J4DdgRGxLES6cJEQXLIpeJE9ZBfZk08R9SE3h2m52ZGs0hapjGQBEqqmTsoVn5HLkiATFI1VVmX4f3l2B8UVyy8EpH0GmUlkqomLl8PzkeCYe0yIj2BZ2smEPz08+9DkL2/mANfLx21aZHi2eMgxIRQXJEsnbMJLstqIW80/96g13y7LG2csSmZSMV2BHHuOa9L9sMlbf0lnfseS536z/yu+3+3yU1M6hy6zHKwXZQNLTu2/oPPjQztFUXpZxeXrlQkdh' $Logo &= 'yJl8PoQZUtSUrDRnOpH8QpwXMdgiuKE00UTtCdBl1BNCrcyz+ThM1WPEBtLtmFhotlYhV1JPEF8QesqXM73mMFQnMZrQA4Skj+0z4pyCfOMuW7e9C/MqjudVbGdN1TRyxcYjI7EYYk7xmNPnIpV+DSKjMB4Hl0I2MDwyv8uSMLxBUQNLxn2RAtW5CHg6SFCBGbzMoL1MobMljenM+WsqmnhSwVR03vMhwV9iBMBQymT/1pWJ9Mune3vg73jJShrTGbPab7/ttocfenjfwWMLFy/Q00PBsV6Izm4NbEElQVekAYZqzFIDnukcG2Wm+DS4oCpSSTW9A2NxhFxV1wRWrVw1s202vNcHh04nUlF2Z2Q7ikqnk2yl0XCLMN+x0QhSRgqvJfvV8j+RVhlsCccDrWhra166fPFdd92z5vKrZ7XOxGHIbdw/0F9VHaSiQFOax3BXfo2MRsJVtSuWX7pipeQzvdlM+u13Nr2x4bWXXnolEom2zZwBkk3exqpGdJpDaiRmb1ybMouK6HAkzhZVUlPcso5JUsgL+Mt2b9O1PIhpPFOKp9mCbYfbutwZnAICwWUcyi7wBp+nq6F6ZWvt9z57fWUPQTOA2fbHky/v7nno5e2nuwd9zSG8C4mHRgfPYKdWOOmBO6GrlFuFEoBiiEDozeqgz2+SLpG3aD+fwmUKLQrXD/sMVdGGYpkCsQrinJbQCC2L0AZmiorfG/R7yF4mMu+qxFeoTBI2XKXhaAovFC8bi0roKCKo3kqlUdLACHns2srscPvy8y+7PjKNaN97m51HXVYnJDEIBGrelVM0t1zmvNvguQUKWbeDHFXQb4y/OxId+9j1MxbMqBmOp926h37UyTmD9BSZhPSg3/3Yk8+cGE1fdsuVyJFKC4SpDE8H8a+sFqSxZLq565LNLxz65TPPfvrTnxIE0S75KzNOr0vJgqs+XPPg1c3/+PgJKRhWSphIEtvgLU55UZSsvCLR+tNUW/+wM4iUFOE+' $Logo &= 'IqKVUP4W6gjkJ5Gd0MX9ZBsQ+yNwtu8jR47A+9bgdkagydkpYiYgmEJuwMACPTN1w6nrLqwXuCboAAnv024iR7dAvWSuqYtPt2GCiJ07cBLsEEVzUZARyhaIvjCFC3fuAswz3JDFC/mGwVfQ4enExvInnYsLAvWCswkeDbIvF8Dn+c/BPZaL6vy/9ebGrk5yZMdg2jCXogBsZOdzW0pgRiVPP9UpmhhGiMsFhdiqwnkd+OKqYDAfiqGea6XAiZCZgpbh6oe6YRw/fuLFF1+oq6ldsmT5skUrgAtFIrGHHn4I9Zs9hhxSXcixEBmMDacYA5VoAUgEwrLZXlErN9i24exRwRIgXcFRyu/zyroJvCRXyK1ateK+++6/9ZY7OVVD5uWXX37l5V/rulJtVovyXjbwJSsiAyTGDkqN3+fPcTJORxYSy6MqUNVQ32iYRri6ekbbjIamhpWrLgn7w85TNzU2HT5yeP+BPbgYSC+4qWVx94ghQYzG6Fvjkejy5auQhSWVzQQBark9IocjMt53zpsbrq7d8MZ6RM6TvuzzsAiLJ+VPWcNKpzFhj6aRVH4McYjJnBL0KpoCokOEFVdi6SaRzpmStLAxfOkVCzsawsRCOZhU59xfoOwMv8omx53UeY1PrFk86Q1WEyybe+3Q0X95aduxnjGXF7ClWeaRx8PwPC7jBQ8lcjDCugwFZvkFDTUzq/0dNZ5kobSzN3ZqODpeKATgLkwSMRk882A8VGJSrQ96ESeTyEVTMKxRThZqXLVJIc4nhF6J8GzbB9p2LKcvODqVQc7jTDKVxzs0dBn7iaixgoa4GMiHuCmYGgi4q5SGAYIiFj8aDTJspWRnRwxwE6WmsfRBh7GpKjKy9Shy2aIJALoGs7zFHFj49ymjieQVs923r5mPoVAJpHL4E7HwPKZrVfDA7u0vrN8558p7YlZphjcbqg3QxZlnOx4rklzIwntcDjTddVtyaB8MPIZhir45Ir+on4iA8ZXL' $Logo &= 'F647MfbslgFfoF4uREgbp+5xDj1OMoFuIFIVvRRKpVOTii0cmuCpSPl86NAhUHkQShbhLdFnXE04wgk3a1BGpzylkzAfn04eM7EBsR2niNQvldVt8SmALIj2oL+46XQs5HwAh2bL9viI/peYS537LPQHLBP5GZEBCM7rokCGwAzApcV1wBhEETZAUqLObmUt3qk6k3hMwTvBiUEWBFooTsSGOAy/AlVDcC4MKl/72tcq+Zzw6mYGabfK1PfTb87plQqoeCMfElPBOLLnIamFsBDQFufAh2izceP6bDb5h1/66upVa+pqGz71qU+hgvYzTz+fBRbf0lgsa0bQUHwlQk64vb8thTcYlSYA3dI80ENi0UhDfc09997z2Qe/hJ8PH0a508NPPP7k9u27lyxbiAhCyhJhFZzBTaXI5IuCwbfeevOKlatGR8cszq9gqyoceQ+OMnvWbHCtcLjubA9+8NC+7/w/34b1Hmi/PxhANB+xVVnGEBiaCokeNSf+6Ctf65o/FyYNONqMplK0yjnH38qlq0NVVTjxmaefi8RjwVAQXkEC9MC0ElH36IyJCaUbw/HUWCxJIJuskFmbPTs5mTFZGhD6Dh5w2Zzmb961pjkcOKeODcec7Nm8l7afGDp2tN/VVFNT5YFLOKEcHNBToixS5APkU6SmtvqO5nCd11zeWrdiZt0lnc17uvv+/PG3sdhjOQs8WGLqAjpQIGUStmMNxhKvqXp1qcjRrWR6YVwRMIEtJ2oqEENEPHD9M9uUAnER2CIMwygKubdvFDqQbmqGrpB3FPuGgeRimpm6goqTYUq6RRXg0KgExUejLVy4cCq4L0qJgOvzigXxLSv80MGAT4NMStlolDIGSbY42odMU3AgrPeUPnfrSiuTsjBqlRIllzXzeLxAQn7ws2cDHZcZwcaQMvapaxZjBnJ6C7qMU/WIw4sV6BO6uiptLYHxaaL2hk07KuXlRDz+wM3LD514+chYNKBLZQvMy8Ks' $Logo &= 'AFZLXneS5VGkqmCAE5NATLbxCQc8oeXKFc/+/u//HjAgHOFAJfkY8YpLAl8SBdjRf2EvEUBWZQbfSVm5BPo0NdevCHvcunUrErAL2jd9dzI0xyVyOtEYTv0rJCrdvHnzG2+8sXbtWmhIYhzx7I6/coEZoChz4LgaT2UqDuEW4JvDR53RcB5ZeJdhJJ955hnE9oKxTWKfTsJjZwDLFW36royC/TtRdE5auQ8L/iK4SBa3RwyjXeqRS6iimsimTW+vve4mMBVAPbNnzb1szZXPP/si4uoxjZB5bsmSpYsXLypi5KHr5AvvPw/YFSYcCg0ODmzfvgP2OtgSYtH4patXLli4IJqMVfmCIyPDTzz9+KEjB+vqKB0kQ2V5iVewounYgLMvJi900o7OuUuXro6MjpcEeCLqgHO8zOz22e87KOBVmF0cC50nCIIL6YuMyYCJMmmwLmn/vr2bN725ctklwVBobHxUKokQRFroAX8Qkbe6sIOVBQDInuCcVwZ9FvOBfB/SOQtzy2cS55MmYh4lCRv0SbEosqFpCWT3K6iy5jn7qzINr3lmBtkXPR3JuNyA80rgIYSwMXkgJ02pNBZPq5K8dsHML61btnRGbZ4Kw+XDQVxK6o1kd57qz1r5gNegNGITjhu5TA7ImxRwazIpcCGPrIsRdnwxeAER5uLzgqloZcvn0aiYLfAgTcVsqEMNSr97+8H+jUf7SKPXDfIdz+fJ11xTMYQ40lC0oK4ZvPCEzxjEN9dHo8GEO1XgFfK1NZGSXRayLYRZX8jnMccj/FoJBeXweoZhkU7u89cv8ZuFgbjsc9PhFdVeRcCH6+FHHh0sVc2fc2kpOXjPutpULtM/mpaFtsf0yOYaRU2CFQtXJ3bOiR64QSstc6usZQvKBdTms3dc8n//12/SVlgjs0yRQ4NKIjsF4HsUJwWC73A4wSfwSXWDWJyfNWsWOAry5SD9Ow4TfMXGALk5sfEiA6boj0MfXRUxZ5VszyGa' $Logo &= 'gviKCEFULgDPvvbaa7Fz+mhPZWy/4x8Nm985CK6jrEAF+epXv/rNb34TShLy9ICvOKYRggRZZqKsOTlqTq/o7U3Jm2K/oopAejEOlYkgHY7yox/9aP78+UiBOtULQKh0AkASVT8uwMWOWCGR5IJQuZy7CxHEYXK/RaZCuWapDzmhQ7N6S21kaASJaJDvROPK4aFQ1eHDB7ZsedvtNcd6xmB96pwz5+7fu+faa9YmUnHy2s9b7+nohJIv8teLDRZdYOLzR2ORyy87+J//+Z+bNm9pbKw/evT425u3tDS3g6mgkuPqVat379x94MBBxKgrXje7eNnOjxIFYTARlyWQ9Sp/lWl6TFg5z7/BObiuprr7+GnEcWIdWaUcR3DahFM33eBqu3fs/I9///f774vcccfv1VXXOZxxaLjvN79++c2NbyHRfTAYEJISrzX2aeMoGehPcDEJ19QdiFvD0DAMTWKKQ392njjGwbIFRSu0VwdR2Z04ygW1rSdGDvRFXJqi2/OaeBtF80hyPJnx6dqK9sZPXdp5z/I2l6y7LLOQy5TZ53LX6bHhkYSC8BNdhT+0cF8mSUekSSiXgX1RKUlI4rIMLE/kqLaft0jxp5JGkMueU6Mv7O69aWF7Y30gn47poTA6sbN7+InNB7tPj/jDfhUovsgpaWfuIdXEZ8BnzCdRism8iwzTEhCJ2bNnX1y0dhlhjIAXpn8K8lEi8dfUiP2pCw9UzyRTapoXJ5MMVcN09LrNOr+GKFI8YKGYI/psWVnDnYkP3H/l/AVzGnoHh023l5Bau7yVbeH3eX2v/+bV9XsG2q9+MBfvvXU51LbgaDRJUVa2jiKLOk0skBGKSCoj+2rmmSk51VYcudipNNU/NtpW57v7ijk/feVw0BfkQBpkB7VgSdGsXLXXZwa8udGo0D80jQq6Q0U13YhaMhyNB+jQN77xDRQcRJE0UCW4xgpPLZETT3gbT5Kp7XPLZyoyK1wbBJXk41SFCm/D' $Logo &= 'vIHqI8gVj2eZfow9hWnnsjbhrmQbOflsfMW5stCHUEcL+eX+4R/+ASrXVVddJdA5l2xXlnRC2QmSZp3RUQbBmiuuiT125nWHadEDWrbmJwrQiKpfGElYoXBTB7JzRgwHwU0U1BjbMH4J/ItrRVOb/vzPU6x6Dm/K4eL8VmzlSdzrtx38WBJJvHVNZ3WbeAzGE76zCxYu/OIXv7B61SWkTScTP/7PHz70yE9bWmZg/s1sm/nAJz914w23NDU2J7NpiQX4sgN0CcGTaw6fcaOjU1+94tLDB4/u3rM3EPRv27Ebg1ZXU3fDzbcsnL9o/rx5I8OjsJIhBAncmjx3s1mC7jlRC/4EToJ0jRjxC+Mo8XRi9pw58As4euTE6Pg4bmFpqvPmQBPoRqHAyePd27a+C+oBrrls8coMgpU8ntHx4YP7dz/++GP79h+srq4OcT1jgZGX7Xmn0HiUS/W1tXVNrb/uP9kbidvvskiolEs3MO60UVJgrJa9pdaQp9Z/gRzl+ED/yfFYXzSpyHawsojYpw0aKKsx7F8yq/7SjgbE6Y1ERpSSZOgqkt7v2jfw6p4TZAdkNYIyDkpgQ7w6GKFiYqWJWBONsCCiZbwomTsyh1HyOdXUd/dFv/PK7pKsr+tq7B1JNtRqW06N/mTDnm1H+qCXGKYGzoHhsbU0y+IMPSWvoTdUebCAsshAXqKbojST6+IadGhU65v+8eATuOl0jMOcx8gEaYgnKFvwROUPSpeHYUJl7x3HxxSVlpOimgATs9Howtbqu9YugbchsjFy6lwNn052cLfhOXFgzyNPvVS1+M6crFzSoC1vD/eORCU06JqVblmCJLPF1QGRBNUTkqnDVCrwfaounOw5ve6SeUeP9m46HoddAJFBSjGvGoqVTTc2tmHJ47ITYe2qiBkU9gNc2amT+Dd/8zd/9md/hnTRqBECmQ+0AhSjMhdOZX74qfUQJxF0pxQj7ot74SJPPfUUXG+RzRfyxPQ5irhp' $Logo &= 'gdsUfzNG+M55upPrDNgXPsFXIIjceuuteLOg7KKTovPOgFdaZSqZCqaA2O8c7FzfqZ0FRo0aLc8++yzq9UI3ghUK+6eqKU6hgcqqjpZmnVcYJoDrHLdJBhtcHD35MOAvbiLnIjWQkWQiD5wUIDgcJNatvam+vuFU98nNWzbu2r2raJHYZHq0+QvmXr/2RlSpQlkqQoOYDAlqQ1+LlUyFLv/eDRBcRJfKy1YsW7lqxbEjx4N+byaXfuhnD3XMnlNXXQ8VfcHihfjp8MEjmO1QBaB8kkAm2B6HmNG1cIsLZbkY8Rkt7YsWLvcHXurp64F7EklqzGIVVcMtgIABWm5obgDadmD/oZ5T30GhFGJsVAOngPFJJuPgKEgZCVIOsEs4I8icRwDwCAJH8YyG24AEOBRPRRJpuSLGl/5YZICwRN63gK3UIs5zXVDmV8y4aC6fKFg04oJvWQWufKXyq5Hi2dxIJhcIBsAdgu4cV2BR9wwlHt10aP3B7iAMJppckgkrY4oPbsSlvzRVM/R0Lm2bEEl6lXKpnE6x0FKZozLLnN7W76OchrtODv7Li+/s7Z5R4zEHd55cf7Dn4OlR6L/BKg8sOgAHyeG8gLNkkUQA/dRVxW8CQWQYEF2VL1qA4qT3qNI6/eNByMAnpn88cNeenj4nPTuWv9DDwZbkt/YgMEUpg3mgjmkxJGc/f+eNhXSEcRV4S1s4S6gFQnBJZGM//PlzmfC8cFVznTJ63bJ5Q0MDhbIJpjCJhDmfDoETlgoR18gOJjZbEcu4xEylQLbIlOkefuC2NQf+/blYOmuosgofMDJB5ttnNuA49q+xi0uqmgKBHVwEO0QqEeEvBMv5P//zP8O4gvSday6/DNokYBwnKMSxZDj9nMRgpiJFwmyDc5Fr58033wz6A9BRgLPZovS0G5VO5ubw2kpmI02POeGmqHeCuLR//Md//Jd/+Rfgb4DiMSlBgsV1nAesRPMw5BWgfqky/YczFMKzGZ8o' $Logo &= 'mrJp41snTpwAV/6DP/gDETsyKfOK0I2gKon7Vg6aqLw2faaCdzcpfSQ2hCCOF/fh2FTsNNcCHQacCqUEgX633n7bF37/D+rqqIDMyRPHfvyjHx05fAQDcbq75847bv/DL32lqakVjw5jilJWBAvhsXVGQmxJZ9woZ7D4lNvvuAvP+a1//icEFWI039r41i+feQrqEVbcXXfcg9ja7373X6GvuN1QDwCCUdQ65+2xHfPLNlp1IZRIB4NS9Tlz5sIneP+BvdHxaF1DvaIpsM9LnDGMlXSXCcZO4XixE6dOFixSS9llC32Rq2uqkYUJGyLWhBYxJgpVMTJHhkfAimZ3zlq0YD5klO5IciyatIsAq0yvKUhThUiWASymKtW1geoqP72mC2puw43athkwFX4JNsLGChzYnc9UcgVr+7GBH725b21XUyKVzlrFw4Oxt48OvrjjWDmT02sDUFMEcucSig6hICVgIDPCAZ1ZLazN8xpDv2kMZ+Hsh0EhawFjdwwN6IYOMjUeT63fewp5JxuD3v5IYjiShAkiAFuD6sqnMyCirN/AndoQCwirGSQ2CKaiyJyWymapF6+poKDeeXl5TYepOOZT+NcKgisEfHLiUBTErjc3N1VXBcbiWVXW8yDneeuzD66b1eTt7knohhvzKpvlMpETQYawjj/3zC8PjKutV1zjK8YeWNNsZRMRy+1WOITWEZeEsDYh9E0gYYwqUyYEAmbYsbgElEV4FouuFi3KJQkYdzSRaW9r/MO7L/+Xn75QKldBM4HeXR10z2ithxUa3eF3LgwqRRGeUvngAuyChek73/nOY2hPPL5p06aOWbPmzOmqb6gHkQJ7cPgc2hk9oxzUSHhVgciiMgESwuMrlIMHP/0ZYbLGkecXsi6Rmu0obQ7Tnb5c73BB+GV897vfBTb1zLPPbHjzTfAVBLLAGYdMuQy5i4hRh21U1pyV5Ape4nIUFMr3DBdqxOWc7j49d+5cME5gqqKHZwxm' $Logo &= 'xH6hBVaqF7bGc14uxdw4sbskZBDHcfzDCn7kJoAvTDJR7XxWe/s9d9/X1dEFD5N0OrFp01sH9x9CEF51dVhTtLvvum/RomVYukVywqcIDMFR7OQcsvClFVMSO5nyq5UbJMuDGIWCVWvXXr//0P7XXnt1sH8QOVBe+fXLKMV42813zp0774brb+nt6/3Zo48ODgzNaG/jWGxLVOfVDE04xlwoT3EhhJDNKoFrrrkWzPLE8ZM+vw+syzZtsVQCJpHlOIAGJIBtaXIEkDKtWJaDJBl2CIkohEYPx6nHsmXQtSim4x233XbtVdfErdLIKPyJs1q131ancaJVZBFXpqQmulpf7Q/4/BdMUwMe34xQoNZrDI2zbCKcfTE60DnIE1pD1f4TfWPffn7ziztqYD8fyuR2dw9lxhK4dbAuBE7CnJ5RKU1nhIoko+aq4BL4kqEafxF0IHXDnIYD3c3Pbj8GNzlT1W2EzUW3gwHG0DQ95E8nM0PjiaFIiiJ4/R7EXeIhs+SmwAejYYNbiavseAy12uc2FAoXra2rdX0QjWr5nU8DEAGyOP0Y6eqaGlVTMbiargFIBGRkWfiz6urMrln1G7cc1DzuSGx87bLOxe0Nhw8cyFKVErAUBBMTAGgoHNWmGaiR/uudpxtW3imlRi7rUAqJ8YPDoxBrMUl4JuC1lLkKgSpuLbgImycxd0hfdxQF4boqArYYirEb+YRoJD0djI/Pbmm4clH7+u0nXUGfKxObPaMjFKwdGurnjN6SCE4rWcS1aqtrKnUjB0+DfP3ggw/ecMMNKGUIj6lXXn4Zt8bohdGgsnu9sLM6qlil0Vig6wluKDsGvQ0XBBe58/Y7br7l5jmdcwQzwM7zdZzFBaGZioi0Iv+zDV2yhIh6dOIcRump+h/savDxRSUVuGZt2LABuDdCv+vr6sFloZ5CdwF7OWPGUqeYIzvQ5jAD8YyIUwHxBC0FO/nMf//v8KMDA66sBDOpkiMaUr2hjIXw' $Logo &= 'enB6LkDX6QcFo2PDg0PoCnLhuITShknCns24COSnD8NQ7/hlyPyJgnkzWmfcdOONHW0zhVfGLx575GeP/Qxkr6+vv66j895775kzt1PgAAg+R+OYI+bhRYFgAOWwab29IZ1hAwejgqwv4P/Cg1+KReJPnHwsHKpGFcW3N7+9dNGSWR3tcPO9795P9nT3/PwXj8LfjEAi0yQzFATvAgsmDKRMtd1xcm87F+m5JZRQKHznXfdufvvtbVt3y8oAhM1gOGjh8vkcR+br7EpicSH1guBfdv48oQ1MlDrmPKCq7tFRI2B8dHxwYHjmzBk33HCrXtVoRZLp4QjSFLt9JoDecjZLZ5FvsQrWwhH4ilvXLuYNg4PPrg60Bn0DownqJKNexCE4RR/EP8MEwgF3cWt/9+hxLQqBGSvPF3KrBpG4MudRmBhJ5hOMLIS9ZldDyK9pebgS6MoVXQ2v7u9+Zn3GQrEmt65AQiQ/b9a9IARhE2gZ8D+vTvnFFFmXSU9KxLPQUVBn2cXkDwdT4lFZKZqaS0+GPFpdFYiR5kf92g+ooWzf+Xp5ndfxNdBQA36BJAiEAWRUWH2XL134zrYDVtkyVNfBfVu+8uZziOXAuwZxL3Gor53JW1ZKZaqlHVxyixmsTvYdfvbpzQ9FBiRyaCffMVmkwsPhrJmUK8rpcTpO0tGhGjvQUllmKY3nJ9QVESqJJmJcWPqyVFPRgzMl2aORKaywfMlC4S4hsxwsUonE0lEE3ADUPbPQyQ3BgPAEg9EeYY8HufWgnT4NSgrOcUZlBRcXiUNATJYuXYrSNYhUh4KIr1Pr406/4YKg2o8//rgJNIm1HOdSgD2QuQvRCKLn09dXcDrgUJRrBPvcvXs30Lmj3PC6xdOdW+ZAE/m7wJ/AS6D9wIKACwp1SkSqnq26F86Kx+JvrH8DLGQSYIi7X3bZZbA/va/cI4YFHBGvA/xMuDDwfrt6MUZeHPnbTigJsZtECQ1ikqLgPS1buvym' $Logo &= 'G29ubmkVXQHNPbjv2MKlXRDN6uprr77mKkyIkiDfgC24h0EPDFFepyLK2ZE21MjKFF0slZTAHvLhUBgeXLM7OyHNeH3uY4cTB/YdGB0ZGhwemNHc3t4+a9HiJQ//7Kfon0bznsOIGEklGEqRLqAwhtOg0kKMqwvXfuWPvpqKxze99dZhxHm1t3vgyiMiNkgAkWUR0WmrtHbaYzt+nkP9cYBYw9FIDMDXQN/I6kuX/+VffPOSleTgMBBJAG5yGZpuUOJYkAL2Klb5suTDG3QbDT63qamuC21uTf295bM3HT69deeRpFQ2dU3G1STmD7IiSuDIbqOkIGuklYDFGHeX4DScL8VzkteoDbg5WFoS2JfQmml2mnoD7C0aBe6AQYDFXrug9fVlszfvOj5+ajjQWqOTCYmMMexZYrksqkOoe8jmj1CN8UgCaUqrwwGvx4xm84pEYjMIsOwiZlpgxlYdcHc2AGJzfYANhOC8jr/88svPK5kxoCtI2SCp+MSihWwuKAWWcVdHW1tL/dG+iGkoPeNSTmlW/IbOuYop+ami2jRcUTHgAX+gqrq2mEmagZp041Jf22qN1p/CqgUJ+7bdXbJXFLtagTMJS4mF/zvJuPBNYnyGUBrO7IXDOG9JHoY9kUtSQehSQqmrDSFj9oyG6nlzZqWS45JKua/ViZSOkG1ntrWBAk5FoiZJ1iB8i7kJ82SSGwRhkL9JVbYwPiCXoHSQkd3cnCs7PODCkmvhyqj7edttt4maNE6wiAgwBPMDFT4vduWY7kUu0XXcQIjj3PB02K48eCpTESltgtzwvPjqTBun9NbZHge9/drXv3b3PXcLOFHcwtH24DCGMT/H4ziqHtjGt7/9bXRVfHUu5VTO/zC8v7j+PCRs5AqhHNQYC4zg9u07ddMb8JMosXTJUkRBQseEq2E6m9741lv1dc2trTMxzBDXFS5Lls6XE8UcVAiSlSbiEKk5wcPslufV1SpE0Qt3Q/uo8tDoUPfp' $Logo &= 'U2Bp2UyuKuybM6czFKqG1pLOZ2OxyJGjh1WFkt5JhNDkFbbVE11mqn/uWhrvk1lBtgd65fLV3/zv/9cPf/wfL730EooNYzC8fpB5E2tXwAdWOcdeZ6qVJ59O3lbIfoSFzAZmcMc0zA7JtNt0z5nX/uUvf/WO2+7MpBJDo2P7+8fzGCJdRVwp+zOwT20Bse7ktlvOFQAThU1dQp8vtHFJDwmJ53++5eDweBo57WEbtwsxgKCAwGO4NM0wFTA2qgwNNlAo+lXVpytFWUrmKV27HVWAY8miRKE4g+OJ3T3DnQ2+No9vLJZBUs7OhtB/u2mZkS+8seNYKpEp+kyDLyWLFJnQ5xSVtC+rANEB3g61deHlXc3RRGbzvm6oY16fWspTaEshncunsq5UVte1kNck5O2Da0Aezut4hGKcV651YYbZt3efSMIoXGM5H2sBosFVl19y9OfPgpBWB2ssPSSpXgP2J+LqquArzO8VgrlkBem11XJRMz31XSsM8B0FqiOlaDKxRZNeVTUymzgpuawS6Xu5LFlhs5Yrz8iSRfkPGAcT4evFLKGzwsKXz2Ab37DEVexwJRUpI+WSV152MzBHlEVGR8DfnFhrQHTvOxpOdJ5DyAxu0G+mz5grgTXXRbQ2blP3T7WZn1ciyEp3L5NbXV3dBXTPYXXvO6NEa+f2vhE2aOdQJcHV4EnxviVtfvsJJUl+shEweEEcP3EC7oP19U0d7bMjiSjiTlH99Ec//jEMf0je+fBDj3bO6gJTKXNdDF0mO/3m4/3P7e0dTGTcmlTj1TkbGD8DV7KG71bKKgFjXDen+Wu3XgYRWCBUXKJ55Ic/+N62d7eAHEfGoi2tTWsuv7S5pc3nCYyMjvz4R//+yssvqoqOCsFUf3BiKoMT8jDTl6kImBA33ndaV865jtldX/v6nzS2tPzskUdOnexOn+itb4Afv0cA6BDDbVdmhdJqC91FFg4H6Uw0GkdYPnIS19QHb7jphnXrblx7' $Logo &= '9XVk8JfKA8nMzpPw6Im4RuMRHeykovgbzi8UsT/npmqSSbIEVLkuqIlZcuWc1r+8bc3fPb05crgvUqoBnfCCi+CmmipRjhx0NYc/wp0Taa2x5oZls+9b1blp1/F/e3Kjy9QRm8lMmjuGY6Kp4/HUY4Z84+KZsu4ryxmkNQhq6tLWqruvnHcslurpHkqlsjk/vRfTCwRCAyCfz+Qh7ZKDdSQ+f1nHF69eAlvqExv2WqMxy9ByWQ9dGSyWOEqOij8Xi/YdP6AGeYiiu6fbJmOk01z8LU3NkL0gf0BZAVmXVYkCzSQlGk+uWbnw9Q3rTw4BATeL6ahLh2neJIVAsaQSc19wGFWDAiETE9EIypKLhRxyo8kuQ1XxM0JvKTYR2qQKXi+YvdA+qOIAl6YAMyG+AVtCngqRAs+k2hAFfFBmUTB1PrqAecVfs5jA6ULeo+Gk9IzG0KUrF8cTSWCjpmQnDQMng7UD9AgS8XSoMM46owPx2YhdpQHjIhlJZffK3M5hLDkvNWXq9tSnq7z11Md0th3cz9lTufG+FH/Sxac5bpWq5NRncUCwDyf3V5mUadalcwWoI55s/8DJEycefuQn7bPaZ8xsD/mrbrrllvUb18MRq79vEHP6pw//V31T/dKlKzHpo9ExxVA7G0O5HSefXb8T4pO3NpjnVLiSLUcrGVCQaLK2JXzP8tnYX/lsL7/ywi9+/vPRsRGvzx+JDD9w/QO///t/BMqNn1577ZWfP/royVPds2d3qnaZZvowTF1wQCgKZzPUT3/4hKaPAsMoVg+XNqQ4O3r4yP79+/oH+5OpBMBiuGPItquPTHmTFHJ0K1CJdRIKIPtXh4Pz586tqa4FhHrlNVevvmSNJqnDQ0Nen16iCA+tc2Z9X9BbG/ah844Cx5VgrBGve2lH49ymsFouXWRx1qDH/NK1Sz2q9JM39x4fTg7HUrF4kuwtBLbI4iDD7+moCzcHPVfMbbp8fst1XTN9ZdfPN+6Hvac6' $Logo &= '5GMPBdto5Gq0hhJJfBlPM1ivSIBSAM63hDyfuGoBjArPvXv48EDkQN9IJpLMoFaYgO/yFjKPzW2rnb2q4/NXzLu8sxWFCHcdqx1JZMFdfEDG2G8Y+opUKEYsqw22/VTaUMuKQad/IP7EMIBP/3h4+BCyfz5NGFHmdnUhpwhSKijcGNAnmALm6ltvXPfdHz+qezyUoa5scRpHieOjebXjn50n2iYAFXkKZDu7BQkwHCnF34TnmYvYTlkulrlcA3F+0Z+Ky/Cl2Lzpoj/aJHyAE7rpistQMPKFG9ddi9fX358ANxWYjNA24HcDMwCk8um7Tk2PYvL+3067MOgM7eKfDl8/8MesTLTzgY+Js/NDYyqcG4AtCEBlockixvU3r7/S2Nz4V3/+N3pVVXVd3Sc++clf/OwX+/bubZs1Y8PGDQ0NjW0zZtXV1luUlrXU2Vj3tXXL9p8eePdwfypN2LrkshPhQZxy4U/V/vCaZV+8fqVUwYNfe+OVp375RCYLq7gER4slyxbfcvPt1aFa0PGXXvnVY0/8AjlUmltaQtWhbDrFudZVgdKyowtzLekDmDQOb0fp389+5guIRd29d9eGjeu7u0/v3b0XJS6wuO0VK4rcMU/QDb2mNlxTHYJv5YoVqxYuWNTaMhMIIITlYoFBHqtU7davmttcFfImM7lqXWUjuGNdlxBiOhzPzKoLrmirDZoX5U4rGIHHUL+0bsWlHfU/2nh4Z//YicGIapVEnB2lzfcbXa21a2Y1r5vbuqjBh1wA+Kmuxv+FW1f4TB3lhCHXVrJk6CFgpG5VGo7G8PwY8nTegvmoJhT4zOXzL+toeP3A6Se3HeoZjacyBcrCiSMMbU5r3bVdTR9bNmN2fTAylqwy1euWz+qYWae7yj4VJNHpMBVlWVgfSKaSBUMJGh+M+zzIIrxuXL/9BuQaTAUGSJhkCQdTFIvTPYyPDF9xycq3t2zfuv+kx/Sm8hl6MQzWkh8yrzHOOVmSFKqh' $Logo &= 'whRfGLdlVuyFYUux/8m2P25JYE0i55iEJnjJRKhdkasX8ydporgatqkqJTCxAj7x59bLhUx0SVf7VZevHB2hIRK8UESoINIb5pBFixZVUKXftd+1i0p9L8PdHpTE5PILGuG5vt6evp07dq7f+Oolqy+fO3seDNqHDhzctXu7QtEVeeRQWb/h1SuuutbvC2YIuinNa6r+23uu+uYv3tyx56R3Vr0i0aXApSLjCa/PXL2k/crFszT5PaQTgSlvbtgIb/fu7t7W1hlf+sKXVq9axUHO+oF9Bzes39Dc1OjxecnDSDdgUJE4QoQiRTl6XVLZ++uDbgATAP3dccvdWHSWRZVcx0aH4/GYSF4N3qabBhLEVIdr/FBGdC5aoKrwVYODCNgJiARncaCS+qYidVV7WsMmFrtaYlRUoUcoc7UcXA5GV1NRAqbaWH9hDrWVUF5JcLvOpro/vtGXyhdhYMde/k2UlNQg3qouK2xKiI8hCdYVb/Krn1w5S9EUst0Xy3YKNR5bHCBZsB/qIElCwxAxRlCwVE1vrfZf01W3sDlgGl7hw8/e3rhMSZOsgKGkk1ncIeTVLmsLLW8I4M0rCg0Lg2yS8DV3qzLuSFVg/7/ThEUB+g20HJjrgbZjStBenpMFYFLZ5AMfv/vgP/1btlDUFRhOYDoxCCkGD6HkzDwEONp2meRPbpUypfjn4i2xy9lm1y4heDL0j8Y2ML4O60FFscfmORh0Dfy+mPG71Qfuv8fKpigSgptTxQRxeSjsAd9Z8R4vCnb/XfsdUxFRF5xxwYIlAF9JQlJUeKAjd8L3v/89UzMbb7oNNPQzn3oQZRA3btyMOXfy1Knvfe974XDNurU3pmGhTmfhvXDzko5t3SM7uocL8YzkNQyPSeUOk9n2hW1/cc8Va+c1w5ibyuaRmh0uws89//TLr7wUiyXh+dfQUL127bV33XE3XAMw4199/TdPPf0k5NzWVnKDgQkcn+glF1UtgSCC7ZH31zQw' $Logo &= '3/NFNlioJ93MXW+CYTg/ISkM1q+oV0qR5u+tuZJMpwB0c14EEQDFWXeLhItX+/RmTRGlnQyqSF+m3D7sey1xZUrZ7b+YyuqVXwVVcRtGR71xljOsfAbVTQpUNEzGwKb9utbUEqa4x8qgH3Z9lUmGRpQqIHsQRN6Lxsn8VTyLps1prptjl4iobEVQ1WQWUyCPedSIoIf/45oguKtXr4bXKVAj0GI42+iaRnZySRuLxtpmzPjsPTf9+389ZXrCMHmQUqbIGGSJFyJFk0qiQC+5RZBRsuTi2CL8YzmJNygiVegk9J/4k/AnEuKz1iyLAEhiJ0V8UmFHDnC3YJeRStikkyDDADBGMvD7Pn13R1tjb/dpx2NNqCl4BKjXeJzfqSm/ax8Q/FUsIeKGJRQKcnNMOlXh4PDg8Nub3nl79eZLLrnUssqrVq35xH2f2rvnANDaXC67fduOt958c8XyFVT9RbNvcf2yji1H+t5451C8YHnBD2Jprdp307L2tV3NMIv0IbxLVcBUtr679bvf/153T/fMma3wzr7p5hvv/+QnvT5K/L7xrQ1//7/+btfuHa1tjbkcGSZt0inyWlEBdUvXVBLDivTxwSkrDJdjmRkm5HGkvIQQDSaDRUwZetnNS5TizWUKk5iKz+NFkDBRC5nz0MiIIKt1fsVP6KhOxmwTXw3V/Vukd5x90CpZ4HPZfFYiJsAjpBC8T05zCtgdayRkuVJg/RrL5ESyA9pZuVFi+icUFIm/8nUc0RpDBWKaSIwjvK++pt4B9jQzGDJd/wc3oayAl8CnFmEx119/vaDRTqZFmHauu27Nse7+53+zxR+oSeXypJtSXXilxO8DG9BdFHyFwkIxjQQM0jY+KU+2UDN4g14AIWR8WLlksxaZ/jibuKi6IvzsixZWM4UWk7mRDSqaVPRprmR08Nar19x8w9qBvlPoJi7hRHWAwezbtw/mQPjgCgXl/2XvWqCbKvP8Te5NbpImafqkpZTWAgXK' $Logo &= 'UwqCQqkgQ2GWijCWx05FLNTHiKCz7OB4juPuzDg+OLM4Hkb2eHY4ux4FV0flNaAMVFcRKSCgSKEtfUgLSdO0Tdo8mvf+vu9jY5YcmZYpFOr3O+Fye7n39tLTL7/8X7+f8HeCg5MKFCagNn/xYrMM42xq+OwlrSxExrELhtfO4JZ/3xyfYHx49eM4GWJfBTOnf/zxJ+ZLFpQ69ny4Jysn56EVq6jiZKdBb5yWmbJw8vBDNU1uh6sLk9Vd7tIFk56aPQYyLN4wJt5kSVbV1J/b/9e9LWYLlgj9DQ9MmTIV8vLE0vns6df/tOXL41/C0tdrcHd22aO6L0jNH5mxFkuHKAk6g9bj8+A5ry1fdPUBIlkjY0W6vG78NIg0EtX5YcXPZFOSEAPW2I7t9/0TvPxMhmud7+t9QCaJEv128de7gKmhEH6owJg0VAIxAIj2fwzcSZLExA3R64uJpbKVJW3t9mNf1mDqz+0DBPRzCZjsoX0PiDiw0IjssyQFqUNfCK+wkvQN4y8SboTBG6KgwJk4QComVDsI7BLENkzC3QBetIMYeVra84VXkA3ck3hHGdSrFf7O1jsnjHiotMRqacZnQVHU4J9wniAQ7Uhk8PDM+I8IfQUOTioZGUOWLPvpzBYLJEtRfA4QEMkHGfv+IDJbVqsFWSn0R+HknGHD1zy+rrPTuaP5A4wtnjr59fZtb40eOWr02LEhmgXCZ/aSqaMuOj3/9t7nXRds2WOzfjp15ODE5FabFW2QRoMeWYLdu3a+te1NZNPRiZuSPPInZRjSXypQYMJo+LDc8vJHIDwF9WLMsSIuIdE+tXjBU+FytPBi9WYOycgdPtLV7Y7T6K6ZSK4yRoQmZiznoCTjSx9KJX7iTDXINEi4JsCJUhgo4EAswoIVzPTNmzdv27ZtbNSOjUzT31ilsxOCpB1PPrHyxZdeO17TGGccFERqmcwMERE4nEMdy0XsQdEghLQqvqYm8xIljOiIRGDe5pRaCJfQ' $Logo &= 'MryXKNHi5cMr7KOZLpwQJCfR4IXplKo8nZZxw4asfWRlt8vR7e5CZhvnUcE64kaFgc3Tp08vWrQIw3q9EnPk4JCuUlBBw+6TT66nZoyKSFqdVf0UFOh/J87JFMjq4LWg+N66hvPwh4fgDzo4N2/5A/qAp08vbGuzoSRo0mo3zM0//XXjZ4HQunn5Q5NM7k6kkpTGeB3ildras0c+/6Lpghl6i1hCELpf+8R6mPuyPpbxYyeOHTNBDXFfBWMCJsROUi6XS5R0I1PfEGTtkFMSrgMYCUEkgEmHQk4G6SAirHTDEZlt5rjZaioM0NZFZQUGgkVFRUy1CdSAMUTQQ4etIzlZ/OX6Rzf+ceuJry4Y9KkevxskAstUpA5JPEniDvAELFgkWKVACsgTUsoBRZxalHzwVVWIgDLA5HjBR/6QCK0dZF99XmqijUvwDRFTM8uVoKAKoQmNmE5qVKSH2GOzTRyT9fM1/4hf4dZ2u5quYkXUADYeG/V5+FP1XcspByeVcJi1xcesm6gj6isvL16wEJJcmzb9nghB+L2HPj28qPgnErGLJklhAGJWP8ofkZeTtjB/RKqByB5jLaUkJINU3njrjZq6msQkk81qGzUq9545hVA0iIhr/j99G/GK57kSPWeUSAZZ6C1omw1hFw35HCrcWIDZhZsVHJEuqcWLF7/88svHjh3DuzOTswQXMAtFTBRCg/WZteVbtr770aHTKmOSFFB6ibAw9UBFJgyMoGCjx7SyEgxRZTtBCQ9JL/JhNK657AUbwuqieS7sMul1QmAhBa2PEcVexCnkEjgMiZimtdtmzRixauUSv6fLYbPjYZg4bkQU5MSJE0jZ4eFjp7WvHRycVK6tym2IM8yf/+MjRw6dPHUSZXaky9CslZE5JG/seNRlMPIrSarFd+WBs1INugB0z0V1QrwBi+X9ne/t2LGzvd1mijd53C6sxtLSlbJad6PeAkK9GmyJTKYhMRhRFbthYDNsPHy5+Sv2' $Logo &= 'MCCBPSK8RtBnDPVAdLuw46iigF2s1lZ/XNfjDy9LH5L+7s4KhP1GrckDboAmMIlUJDpHoiJUpCTD9sTOR6kmvkZqFRiC9kdgC7YIYvSedeCFGP/QvmwFrguL1PsWNpQhrTIUcLWJAUfpfbPvKy5obzM7Oro0KgO1ArpcMgSjwJAKvZ3Qzoq0EfcdqXDwlmKK3nbijh83oWzVQ6/9sfvQ54eHZGbsP/CRrNNt2PDLoVnZyEqhvyvVoGU3d7p9GjWgeve9t//zv/5EHCB8REZ7wsSxc+4puiGMwqo1ToOBDo33HtG2232e3fq+qvtVGCVG36xHZaTrwUMcTBMIyrvLly+HjTHaFlBfQbyiBESRRQAYD3X6zy+eN31MdvZ/vLOr9ttLGsNgQaXtpnlmNqII0aawIOKFkgeZ3lGyrmEmZEo6ENmET1iJfTb7SAdKSLkRVKQGNUmYYvb4fI6LwzISHipZPC43s77R7A+4QFOwAoKSGFOjwhNCbAna9UuWLMG0Y+815xk4OKlcB8AUsqLik48//QRCkM5O99kzZ/Z9uOcfFiy8bWiOy9Glj9NJVFVJVEnI89rt7UePVJ75pgquqxgShKbWipWrMVYp3CiAURhrRtcq2E60/Mb3OdZdp7V3lXtGHg+g+9HH6VxJFHngYE8kNZk9eL8k0Knv1Hf6BXiwAcYrBQUFGObfvXs3SvfQBHN5iI89sSAgShAi5oKqz9cPycr49YbyPfs/3/vJSbvLozIm0+b4kDJMGvtDfkEUqTpxEH/Q+S1SMfzLTQFgGKrUgnBDEkAyAqzmJcgf08q9J4jJoPbmRFmYU3RH0dy7g6HuqroaUBT1siMS+CAupi5stbX+df/+OffMQSf0NfcQc3CQlXw9PsyeOHX8xZd+V3GgAqlkqOKbEhKe3vD08qUPQDgr3oiGMV2YhO3K89/WffDnd/57+/YzVVXwYjIY41aVlT++5ilZUgscfyuIjGY7ZxfmfwLxCQkYOIll' $Logo &= 'PsYiN7LyzxHRGWQ7sA48ePAgnKwGpaexeIWZEuI0ZvmuN5jS04dYWzsOHvzs6DeNDtjNGNIkfaKaCEiqw5Ia7jchmdg8CNinFteR4Xk/HWYR/AGi8uKTYJ4m+NF1bw13mA2yf3Le0KJZd6QkpmA8wOly4GoqlSRENOExzow5R0hxFxbMLCsriwm++xscPFLBTN+kiZPLyx6rra61tFzCurnQeKHy8OFpU6fpDDBKI4TBOqa+/vqrN958o8ViThuc7na6l9xfsnzJsp4wCmtG+8EiNtOtNxivOKG3qcs+ZBTe8BYb85WWlmKLeKVw1t2QMQevKCiY9wkSYp0Ou9PRkZKUUFoyZ+5sd+Wps0fPNFo66t1SnFqfoFInCqIiTqGRFHIYeyEVk6sk2S7krsIAJhs9AUgiuM3dnVbRZx9qkvMnjM6/fXRygqaj3XL2nBl5NyTFAmQG5jLhReooyHohQFlR+sDfaf/HwaHs+XrulQ8rtrm5wxctXpiUlNze1h6fEP/Rwf17/vKXQUmpyOR6Az5QQnVt1Yd7d9vb7NAqxtJKSIqfcPuk9MFZPSyVo7wvcFyVJAZSvQSMcitGKpE8ErbglZKSErjvQToP6SbGKEwPmLi9BbwgiGar9ZvzdaGws2j27f/82KJ1D8y6d0p6bnyn1lUdbv3K1XrO2XrO017rtZ/32eu7O+o8bbVuW63PfMrddNRrPqbsPDNUZy26PXXt0tm/WHHvnIJxIZ+z+lxdi9UN5R+aciMF/MiKxmNUVVVVVFQU31v84IoH8SR9GKNw8PRX36PFevHZXz27bdtbMGOoOddQUHjnr//1t5On3KHTxQV8/o0bf/fq5j/A+a2hril31LBV5WW/+PkzQg9AfREFJZPSG9DgiC0F3erZMLyDb926FUV71FpUshp6NiGKYIBaONIKfJD6NsKaxWQiuWLE+ohsOuwOc5fH4XS5PUSkyBtkls2SrFab1EqjXpeYCAUlo1FLvEfd1A7d' $Logo &= '091Ny1QiiVxD5M5MwBh/y7KM2x6trLRYLGhRQ14Ox/uBUTg4qfQ8jmHrf/s7b77yyu9bzDDWsmVkDh47fsyax9bdOXX68S8rN23atPfDvbflZDfU1c//cfH7f97Rq293q6R0ODipXGGOhODg9ddfx6jKtDunDc3KIi6NxAZbyUosQQqcFtEhAnMgSRUHyIIoSUS+FC8qSgwIZHCFuMP5vB6X04lGANwQR1WSJIrSd9PKgsgeA3eDlw+45NChQ+gbfri8fNz48TdXyouD11RiHRUjXLWg+L7z9XWvbd6skAQM+1YervzR7HMmk3HHzvcumpu0Wo35oiU/f9KyJff3kE4UN18thYMnvnpovce2eXl5zz333Pbt2ys+rhiSmQmTV/AFzA6AaMfZSOgAkkBAQ+RHcR8qBSai+0vwM1ohpSayRdMXHV8RpctWKwQ+dhM20oKDskaDIKbyyFeXLjXPmjV72bJlMEli/c03XcmKg6e/YnmFJKlEEcItmzZtrKg42NLSKsuamTNnYFT+iy++6OzswimSKK5fv/6xR9f29lsM4GCFw93tUZDP2io2gj4wQk8WDUQ6DrA9crTy7bffbmpqgu7kyNzRhFoocCY7jdEM+5KEJwLNkMHGi8qvhCMtKxhJwR7GGHFcDLPzo6lCBUgymAkmrbW1telpqUuXLr3rrruYfHKE8zip9Cc4qfR8sA4WKdXVVS+88MK+j/bljcnz+uDW6JIkFZwTEX0XFBb87NE1E8dP6vn9BzyvcLS0WZHgMUBxWtbEzIEOqIZjVD4OHDiwd99eh92Rk5MzYsQI1FFQXkF0QoIVIESI4f945Tt3H7rLNgAoKkjpgUQpjL1wOTVAEyVJguzKtw2NDQ0NaKKZP38+KigwprwFBoM4OKlEeCV2Uu+ljc+/+uorer0RcbhGo8bA2zenq++Ylv+b3z4/d1ZRr+48YHiFgw8bKShQ4cAUC/p622HtlZKSnXNb6qBUnVaHE5AWYwgz' $Logo &= 'RWJ6IYNASitXjiWxdjJswS6ebjcqN4iEMIaSlJBYWFiIvmH0CLD0GsuSCf0LDj78GMsZV788MqBX11j74ovP7961RxQVKSnJbW12gyFu1eryRx5do9fE/TBJhYPzSnTeCW/9lZWVqJ+fr6uDaBFClsGDM0zxCUiLofc3whwhigiFRI8xAqj5wycCJvktLS2Ozg7cGQHQjBkzpuRPBp3EakT2D69wcFKJRc8FpiK/97v27Xr+N//S1NwkKSW3y7NyxYM/W/OEzqBPS07rIaMMVFLh4BYskYFWVD7gyX3i5Ak0iTU2NMKjCJEHeAWZK2xlWQbBoETCrmYqxciVQa0S1r9Ic2EHh3B2VlbWmDGjJ0ycMHzYcI0sR8dGAkU/eM5zcFLpK15hp10yX/zgg3e3bNlyrrpmypRJT637p/tLllF9PIGTCgfHFZMioAqz2dzc3FxfX3/hwgVEHghBcNDrJSbfEUpgdXhwjdFoSE1NzczMzM7OxhZxCegn5s43PTg4qTDC6GFxxensfOaZp4+fPLZq9ep77p6bnXVbzxmlz0nF0mJJG5Qm3Ezg4IiujkQvAcw/IgpBLOJ0OhmvAGT4UZa1Wi2LYzDOAo6JXTi3joI9ByeV3vPK+zvesdqsxcWL4vUmrIO/qfHFvB37nFScXRgTcylVIizChOuDVrsNz89IEd2xifEJkRM4WttaBeKGTirGcRQu0hXoEonRekin0+q1epaf+WFGnGGKa6CEWMeKfpDz4uCkciNh77CZ8D7e3/B53U6XU0FdKcFdwUDQoDeoI7b24aDT7YQBjFIgRkdIaKtVWhz2eF1IQagUdPgM1wXC1FtPCHoD8YZ4SSM7uux+r1elVAkSLZwGw1TcPQRBDqOek4rgaLeRH7iogJ4ufi7YQUVar9PLmjjSau52iqIEiUWtRqfR6YUo8KglUhGJTmfFRjb9XIHn4Pjf9uqgCAAABgHQ+pd2JTxfUIKUAMBlBgCpAIBUAJAKAFIB' $Logo &= 'gAcIIS5QiH1PVwAAAABJRU5ErkJggg==' Local $bString = _WinAPI_Base64Decode($Logo) If @error Then Return SetError(1, 0, 0) $bString = Binary($bString) If $bSaveBinary Then Local Const $hFile = FileOpen($sSavePath & "\pspad4autoit.png", 18) If @error Then Return SetError(2, 0, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_Logo Func _Chip_Sound($bSaveBinary = False, $sSavePath = @ScriptDir) Local $Chip_Sound $Chip_Sound &= 'UFNJRAACAHwAABAAEAMAAQABAAAAAENvbW1vZG9yZSA2NAAAAAAAAAAAAAAAAAAAAAAAAAAAU/hyZW4gTHVuZCAoSmVmZikAAAAAAAAAAAAAAAAAAAAyMDA0IFZpcnV6L0NhbWVsb3QAAAAAAAAAAAAAAAAAAAAUAAAAAAAQTH0RTOoRTA0SrZaJkpWarS0oAykgCgUGBi8WCRIVGi0BAAAAAAAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFic4S19ziqG61PAOLU5xlr3nE0J0qeAbWpviLHvOJ4XoUcE3tDfEV/WcTgnQo4JuaG6Ir+s5nBOhRgTc0NwQXtZyOCZCjAi4oLggvKzkcEyEGBBwQHBAeFjI4JgIMCAuAQEBAQEBAQEBAQECAgICAgICAwMDAwMEBAQEBQUFBgYGBwcICAkJCgoLDA0NDg8QERITFBUXGBobHR8gIiQnKSsuMTQ3Oj5BRUlOUldcYmhudXyDi5Ocpa+5xNDd6vj9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzRkAAAAAACAaAAAAAABlGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqKkPjfMRuSUQCqq9BheNexG9BxeNfBG5KRCNIxCtJBCNMhaNZxK5LRCNTxG5MRCNVhG5NRCNXRGiACDBEaIHIMERog6pAZ0+EZ05EZ1lEakCnQ8RqQSdEhGpAJ04EZ0TEZ1NEZ08ESAtEkxcFKX7SKX8SKkACQCNGNSiDiCpE6IHIKkTogAgqRNohfxohftgpftIpfxIog4gJRKiByAlEqIAICUSTAYSvTsR8OJMyhSp/506EZ0lEbwTEbmWGJ1jEbm2GJ0QEakAnSMRnRQRnTsRnSgRnSkRuTYZnScRuVYZnSYRqQOdEhHgANAZuRYZjRfU' $Chip_Sound &= 'ufYYKfCN8RG51hiNaBGpAI1vEb04EcnA8CO5dhidBtSdPxC5VhidBdSdPhCpCZ0E1L1NEZ1OEakAnTgRYLxiEbmwGZ0G1J0/ELmTGUyWEqn/nToRTEMTKR+dDhH+PBHITC4T8OrJ/fAhsGipA50SEamAnSURjHoRvBMRuTYZnScRuVYZnSYRrHoR/jwRyEwuEyl/nRMR/jwRyEwuE71mEZ0PEb0+EdAJIMoUvU0RnU4RvTkQhfu9OhCF/Lw8EbH7yfuwn8mwsE/JgLDFyWCwh50kEf48Eb0OEZ05Ecix+8n/0Aj+TxGpAJ08Eb0+EdAQvTgRyRDwJ8kg8C/JUPBKYEwtEr0PEfCVyQLwCJADTMoUTJYUTCEU/jwRyEwuE71iEZ0lEakAnTgRYLxiEbmTGZ1jEakAnTgRYN4PEb05EfDCvQ8R8BhMyhS8YhG5sBmdPxC5kxmdPhCpAJ04EWC9ZRFJAZ1lEai5exGdDxHeORFMyhTwEsn+8AmpAJ0+EchMOxSp/p06EakAnT4RTEUUyMmwkDeMehE46bCdYhGouXYZnTgRMAWpAJ0+Eax6EUw7FLw8EfA2qf+dOhGdPhG9ORCF+706EIX8vDwRsfvJ+7CiyWCwur0+EfAPqf6dOhGpAJ0/EKn/nT4QTMoUvVARhfu9URGF/LxPEbH7MBmoua0anTkQuccanToQTCYUsfudTxGoTGkUyMn/8PIpf51NEf5PEUxpFL1lEUkBnWURqLl7EZ1mESDKFL04EclA0BSpAJ0SEZ0oEZ0pEZ04Eb1iEZ09EWDeFBFMCBWpAZ07Eb0UEdDwvBMRufYYKQ+dFBG8YxG5DhfJ/vAfkAyYOPl2F51jEahM4hSdZxEp9509ELl2F51kEf5jEbwlETATvSYRGHmwGZ0mEb0nEXmTGZ0nEb1nESkI0Dq9JBEYfU4RfWQRhfuouU4QGH0mEY14EbmuEH0nEY15Eb0SEfAryQLwJJBirXgRnQDUrXkRnQHU' $Chip_Sound &= 'TDEWvSYRnQDUvWQRGH0nEZ0B1EwxFkz0FaT7uU8QOPlOEIX7ua8Q+a4Qhfy8PRG5kxlKaQCdIxG5sBnwCaiIRvxm+4gQ+f4SEaX7nVIRpfydUxFMMRa9KBEYfVIRnSgRvSkRfVMRnSkRrXgRGH0oEZ0A1K15EX0pEZ0B1L0jEd4jEdBPvD0RuZMZGGkBnSMR/hIRTDEWvSgROP1SEZ0oEb0pEf1TEZ0pEa14ERh9KBGdANSteRF9KRGdAdS9IxHeIxHQD7w9EbmTGRhpAZ0jEd4SEeAA0FisaBHwU7kOGNAbuSAYjXYRjRbUuUQY8ECNaBGouQ4YjXcRTI0WrGgR8C65IBgYbW8RjW8RuTIYbXYRjXYRjRbUuQ4YzXcRzncR0A25RBiNaBGouQ4YjXcRvBAR8F653hfQI7nqF508EJ0D1CnwnTsQnQLUuQIY8EOdEBGoud4XnRERTPAWvBAR8DG56hcYfTsQnTsQnQLUufYXfTwQnTwQnQPUud4X3RER3hER0A25AhidEBGoud4XnRERvT8QnQbUvT4QnQXUvT0QPToRnQTUYAQE////////Cf5B/okZGRkYGP6JSYiIiP+JGfn4/kFBQUERERER/0FBQUERERER/0FBQUERERER/0FBQUERERER/0FBQUERERER/4n+Ef4RQf4T/hkZGRkZGRn+if4T/hP+iRkZGBgYGBgY/xH+Ff4AAAAAzwkHBgQDAM8NVFBUApgeHh4AAAAAAAAAAAAIAAMHDAADBwwIAAUIDAAFCAwIAAUJDAAFCQwIAAUKDAAFCgwIzwAAAAAAABgAEAcGBQQEAwDPAAwADAAyDQkHBgUEBAQIAAAAAAAAEBAAADAwABAgIAAEQMAIBiDgBhAQ8AAAAP8AAAD/AAAA/wACAwIABgcGCQoLCgAABwAAAAcAMACAgACAgIAAAACwANzAqAAQgFCgYIjAgIB4aAAA6AAAAOwABAAA/wD//wAAAAACAAICBgAI' $Chip_Sound &= 'AAoLCg0ODw4KCgAHBwcNBgkAAQcBAQEBtwECxwYHAcYGDQDhwQSnBgMFd4eHh/W3tSMldzs7OztzRTZze41FfWv1JUVDaXWZNVUAAgICBAsFERYCHygxOkMWC0VHRxZKR0wWFlRWWFpkZgABAQEABAAABAQFBQUFAAQEAAgIBAQIAAQEBAAAAAAAAAEDBAAAAAAJBQAAAAAHCQAHEQwRDBAAERERAAAAAAAQEBAQAAAAADAQAgICAhAwABAwMDAwMAAwMDAAAAAAAPHx8fEAAAAA8/EAAAAA8fMA8fPz8/PzAPPz8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAMDAwEDAQBBAQFAQEFBQEBAQEBAQEBAQwBAQEBAQzNzsBQAIAAgI1P8A5AEA/5AwqKCQgPuw+gD++hzKysoCXwUIAwRN+BBLRTD4AAAAAACAABiAgCAAAAkNBAQEBAQEBAQEBAQEBAQEBgYGDwYGBg8GBgYPBgYGDwEBBwgBAQcIAQEHCAEBBwgGBgYPBgYGDwYGBg8GBgYPBgYGDwYGBg8QExUTEBMVE/8BCowDBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBIAFBQUFGBmMAwQEBAQEBAQEBAQEBAQEBIARFBYUERQWFP8BCwIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDIwXFxcXEgQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBP8B4eQBGz1fkK3K5+vy+RQ2WHWeyuz8Ez1qi74aGhsbGxsbGxsbGxsbHBwcHBwcHBwdHR0dHW/+/4JgD7Ni+4FgG7Ni+7BgD7P7iWEbsWAPs/u0G/v/hGEA/gD+hQD+hwD+AIYAhAD+hQD+hwCGAP+IYCf8LPwi/Cf8Lvwi/Cn8Lvwl/Cn8Kvwl/Cf8Kvws' $Chip_Sound &= '/Cf//GAn/Cz8Ivwn/C78Ivwp/C78Jfwp/Cr8Jfwn/Cr8LPwn/4pgM7X7Y/5gM7X7Y/6LYDW1Yvtv/oxgMbX7Y/5gMbX7Y/6NYDW1+2P+i2A1tftr/v+CYA2zYvuBYA+zYvuwYA+z+4lhG7FgD7P7tBv7/4JgErNi+4FgHrNi+7BgErP7iWEesWASs/u0Hvv/gmAWs2L7gWAis2L7sGAWs/uJYSKxYBaz+7Qi+/+OZwD/kWAMtmb7/2H+hgD+AP+EYQD+AP6FAP6HAP4AhgCEAP6FAIYAhwCGAP+PYCf8LPwi/Cf8Lvwi/Cn8Lvwl/Cn8Kvwl/Cf8Kvws/Cf/iGAn/Cz8Ivwn/C78Ivwp/C78Jfwp/Cr8Jfwn/Cr8LPwn/4JgErNi+4FgFLNi+7BgFLP7iWEgsWAUs/u0IPv/kmAnt2L7Y/5gI7di+2P+YCK3Yvtj/mAet2L7Y/6TYBu3avty/rlg/v+bYDG+YvuSYCe3Yvtj/mAjt2L7Y/5gIrdi+2P+YB63Yvtj/pNgG7dy+2f+/5lgJ/ws/CL8J/wu/CL8Kfwu/CX8Kfwq/CX8J/wq/Cy9J//8YA+4aPt1/mv7vGP7b/7/l2MAZ/6VYAq6bvtr/rtn/rxj/pprAP+SYCe3Yvtj/mAjt2L7Y/6WYC63Yvtj/mAqt2L7Y/6TYCe3avty/rlg/v+bYCe+YvuSYCe3Yvtj/mAjt2L7Y/6WYC63Yvtj/mAqt2L7Y/6TYCe3cvtn/v+XYQCYYCL8J/wu/CL8KfwulwD8+5gq/CX8J/wq/Cz8J/+eYBjAYvvBY/vC+8Nn+8Rj+8X7xvtgSshi+8dgSsj+Sshi+8dgSsj+nxvJavvKYD9m+/+eYBjAYvvBY/vC+8Nn+8Rj+8X7y2H7zPtgSshi+8dgSsj+Sshi+8dgSsj+nz/KYvuXYwCHYQCQYwAAhWEA/w==' Local $bString = _WinAPI_Base64Decode($Chip_Sound) If @error Then Return SetError(1, 0, 0) $bString = Binary($bString) If $bSaveBinary Then Local Const $hFile = FileOpen($sSavePath & "\Commodore_64.sid", 18) If @error Then Return SetError(2, 0, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_Chip_Sound Func _WinAPI_Base64Decode($sB64String) Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "") Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]") $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "") Return DllStructGetData($bBuffer, 1) EndFunc ;==>_WinAPI_Base64Decode #Region TichySID Func _SIDClose() Local $aRet = MemoryDllCall($hTitchysidDll, 'int', 'SIDClose') If @error Then Return SetError(@error, 0, 0) Return $aRet[0] EndFunc ;==>_SIDClose Func _SIDOpen($Sid, $iSubsong = 1) If Not IsBinary($Sid) Then If Not FileExists($Sid) Then Return SetError(2, 0, 0) Local $hFileOpen = FileOpen($Sid, 0) If $hFileOpen = -1 Then Return SetError(-1, 0, 0) Local $bSid = FileRead($hFileOpen) FileClose($hFileOpen) Else $bSid = $Sid EndIf Local $tSid = DllStructCreate('byte[' & BinaryLen($bSid) & ']') DllStructSetData($tSid, 1, $bSid) Local $sType = BinaryToString(BinaryMid($bSid, 1, 4), 1) ConsoleWrite('-->-- Sid File Type : ' & $sType & @CRLF) Local $iVersion = Execute(BinaryMid($bSid, 5, 2)) ConsoleWrite('-->-- Sid File Version : ' & $iVersion & @CRLF) $iSubsongCount = Int(StringTrimLeft(BinaryMid($bSid, 15, 2), 2)) ConsoleWrite('-->-- SubsongCount : ' & $iSubsongCount & @CRLF) $iSubsong = $iSubsong - 1 If $iSubsong < 0 Then $iSubsong = 0 If $iSubsong > $iSubsongCount Then $iSubsong = 0 ConsoleWrite('-->-- Subsong : ' & $iSubsong & @CRLF) Local $aRet = MemoryDllCall($hTitchysidDll, 'int', 'SIDOpen', 'ptr', DllStructGetPtr($tSid), 'int', DllStructGetSize($tSid), 'int', $SID_MEMORY, 'int', $SID_NON_DEFAULT, 'int', $iSubsong) If @error Then Return SetError(@error, 0, 0) $tSid = 0 $bSid = 0 Return $aRet[0] EndFunc ;==>_SIDOpen Func _SIDShutdown() MemoryDllClose($hTitchysidDll) $hTitchysidDll = 0 EndFunc ;==>_SIDShutdown Func _SIDStartup() $hTitchysidDll = MemoryDllOpen(TitchySIDdll()) If $hTitchysidDll = -1 Then Return SetError(1, 0, 0) Return SetError(0, 0, $hTitchysidDll) EndFunc ;==>_SIDStartup Func _SIDStop() Local $aRet = MemoryDllCall($hTitchysidDll, 'int', 'SIDStop') If @error Then Return SetError(@error, 0, 0) Return $aRet[0] EndFunc ;==>_SIDStop Func TitchySIDdll() Local $sFileBin = 'cbsATVqQAAMAAACCBAAw//8AALgAOC0BAEAEOBkAsAAMDh8Aug4AtAnNIbgAAUzNIVRoaXMAIHByb2dyYW0AIGNhbm5vdCAAYmUgcnVuIGkAbiBET1MgbW+AZGUuDQ0KJASGADvpjpN/iODAQQUDg6jywHwAB/EQl/PAZQAHUmljBmgBFwVzUEUAAEyAAQQA9O0oVQUTAOAADiELAQUMpAASAAzMAgegEAADfjAECQELABoB5wEABQcA/iCAfgQGgxwAFIEVhgMDA2BgMgAAvoEDgCc84RmKEAMAnKCdDgCAK4JYGA8udGV4dIADftYBRoEBgXUGYgRlAE8uAHJkYXRhAAAeNwHqgX2BERaLE4DtQC5xAxMAW8NAPQF7AT8aAc4JwC5yZWxvY7gAAGjBB8A2whMczgn+QrE8PwA/AD8APwA/ADcAAFWL7IPE6FZXADPJvoRCABC/ASA5EOtzUQ+3RgACJf8PAADB4AAQiUcED7YVmwEAA9Pqg+IBiFcACQ+2TgXB6QRAiwSNCEAA4AMKDLpI4AChAoDhDw9AtwRKiUcOoAEGAaYBFg+2RgYk8ACJRxKKRgSIR0AID7cG9yXgRhAAiQdZQYPGB4MAxyyD+QNyiL+BYRAPtkcWweBgDgBPFYPhBwPB90QlBCAFuQCAoIXBAHYBkYlHGTPJCLEE64AKRxjT6ACD4AGA+Qd1AwCD8AGIRDkZQQCD+Qhy5WaD5gAPiXchuD0KAAIAAAkXwOkE9+EAuTMzAQAryMEA6QiJTyUzwImARfyLRQzpYSBbADPJiU3wiU3sCIhN6yIg6c0BAAAAUYsHAUcagQBnGv///w8zwAD2RwgIdA2JR4AaiUcjx0cngAIAAIpF6/7IPACAcwKwAohF+wAEIAJ0ILksoCr34QK+wQgD8ItGGosADjvBcwn3JzMI0vfxoAeLRxozAMk7RwR3Av7JAIhN+MHoE4hFAPrR6IhF+cHoQAM5RyN0WOAL0QBnJ4tHJ8HoFimAG4vwQgERQAEzxhAJRyczwAbqM9IAsAOxB7IZ6x8EKtBAEAF1ArAEJFBRAAWKyiIiWdMA4AhF6lj+yYAA+f913IpF6ogERysgD8HoGwvAQHQEgHX6/6AVBAh0GLihFfZl+4FMuBrgFWABCHOiA8YARff/ik8I9sEAEHQGikX6IEVQ9/bBIEEB+UIBQJVBAfhCAYBAAUcrQAEAikciCsB1GYtARwoBRx64wSM5AEcefFOJRx7GYEciAetKgBSAHw7AKUcei0cSwEqgAwR/NaMDAussPAIkdRHmAnQdQgYXPMADdROLRxZABsDSEgThCX0DIAaAfetAAnIJgD2kQRZ0QB0PtkX3LYBDAAD3Zx7B+BaAfwAJAHQFAUXs64ADAUXw/kXrIEwBwksPgir+//++Ap2gBotN7MHhEACLRhTB+Aj3ZgAMK8grThiJToAQM//rE4sGYAIAi0y+EMH5CPcA4QFEvhRHg/8AAnLoi/6DxwQB4UTssQLrEoA/AAB0CotEjhDBFPgQQA1HAy3pi0UA8ANF7PdmCIsATfyLVQhmiQQESv+iTDlF/A+CAJb9//9fXsnCAgihbg+3RQgPtgSAw6ARgH0MAHRgB2b/BcGAAcgDiwDIZiUA/GY9AADUdRGA4R+KRUAMUIrBUOigcgDk6wmgAYiBoQcEBkB4AP+KVQiA+gdyAAyA+g13B0eAAG0IB+sRgPoOqQECFHeAbAJAAg7ifAS4B+El5wPwD7YQTQwPtnEDBnYFAaIBgPoDdgOIDBIycAB3MHFAgPoBBHcDEDv2wgF0CgIlMIIAweEI6wWEJQCgAAPBM8nwAQh2AUGwDk7rKIAQ+gR1I0Il9+e6ASIw0PbBAXUGxgBCIgPrCoB6IigDdQSwAABmEIPEAvyQC8CD/gJ0BQCD/gV1DIB9EAgAdQbxAQwAi3UoCL+5QAS50QoCTQOAEvAeFTvxcxFqAAGD7AJm/3cIROixMB1mi8gABHcgYw+3VwjyAxRmIIPqAmoAMQJS6IKPEwJCikUQUBMBAn0QAcHgCGYLyMAzwAv2dA2ARMAHhAF1MEdHBDPSoAAEdAdyBAFCC9IPBIW50AdmA8jpsbNwADAKdzozBtEGSkUGw6ElYggDD4SJcAIjBQYEIwXAA2aB4f8AgOtyg/4Hd1ZiDEBQg/4GdQ/UAQ+Mt8GCFdMEUOjckCLAZolF/mZBcgNjAZhR6MVhAYILRf6QBIR1B6BNBWYDwYAHgOsXg/4JdRKgBUgCdQZQBQPrEDoMqIhHAxEHM2IBDmUE8n5gBOsf8AeAIdgW8SXVAwJ8hCoMgiW+IRgBXAKDcSoFC0UI6wYA91UII0UIiEYGBnUcVQJOB4HBAFHAU4pFCMQEL8AEgAB+BwB0A/5OBxHgAgQAuKECgHgHIP9zA/5AMAxABwYFIQPFD9/8///DA0Eholi5w0IBECvQz/Oqv4EAg3A3IEEECAWRL/93BFD/MDfomQahmfAA/o6BYaIzyesLx0byWQiDxizgYANy8F9cXsO1JgIl5yNywAYPCLawaBBmi9DR6gAPtpJoQQAQqQPgCAALwOoEgOIPAIlV/IP+JHYiQIP+N3MdamAl/xB1/OhBUA2D/jVAcwyD/itykB4uEHYCiAexFmkPtoRXBhAkdwWA4iBMYwAhkQAC6w2RI5AAgKDrA4DiQFAnDzEvBgowIoEvBnUJC9IAdQNC6wIz0lIhMQZqCOjeoAlmmIhmA0dwREcBWpAojISC0JfAAAjpeYAAgIP+Dnc7M8CgYAJAsB93BLAB6xBIg/4LgAAI66AIDa53MGGAATEGCzEGDeAskFJQ6CmQKuk58gMQEXclimEqD3UFAooQIwiD/hB1A0CKRwRqAVAxDl0JAAjpD5ICE3cWigpHYA0S8QEDUOgKBUEE9OCgg/4UdQsAZsdHCAAA6eQh8gAWD4ebgjIWdUAfM9LrFmbgGmYAQArSdQRmwegQCFDoz5AT/sKAUPoCcuWgGhinGOdg+v//CslgAtAO/kDBgPkCcuOxLglARwFmi1cB8AR0ARAo/AB1CWaJVwgI6XfBBn38DA9chW2QAJIEpDifcARmikKUBAiaBAjpQDIKIBd1Deh2cAiIRwgG6S4SARl3JejCZFI3RwHoW3U2sgcVMABAQhcEkgIadQtBIBKIRwfp9JCDgyD+Lw+Ht+Aig/4AG3UI/k8E6QWFwgAcwABHBOn4khBSHSEDA4jwAOjyAB5V8QAH8QDY8gAfkQMFlOnLwgAgkQMF6cHGiIP+IZQDBemu8gBaIoALvWAZgD3pYcaDRP4j5AgD6YzyACQMdQgwHfAA63+D/hAldQUgkAB1g/4QJnUFMJAAa4P+ECd1BQiQAGGD/gApdxqD/ih1BAD+D+sC/gdqABSKB2IfZvAT60KDoP4qdQUigAI4EC5CdQIFLoP+LJEABCDrJIP+LZEABesBEAQudQTR4OsCpNHosRNqADIEIjAEGYFUHnbgJUADilcEHOs04AzhAJADilcFHOsloAjhAMAFilcDROsW8QgEiheBMirAdQSK0OsEYR8AWgDSdQFAUGoC6EBw+///geKBflIyaFEA6F8AAcACdAkRMAgPgmZwFzPSD2i2B7KwIi5AKYAbJQVxReuQNip1B4PgIECyQOsDwJFQUiToJKAD6TSSGjJ3YlXgCIP+MHMIQDAxBUAuV4Bb0lJmK9BbwCZJCOuADUoI2pEOwBBaOhdyAQIB6MqJ8ADp2qIYNHdYwUCBcECD/jN1CSXxAgTQJxAG4AHQL8GU4gfhApvgAggXthdE6vjhSAcz0qCUAWpCEgNQcwZygAKQQegCatEZfYP+Nnd4QUAAdQQ0/4ggVFcAAwPC9kcGAXQuAaEqcw/hBTzQAg+33EcB4Bs0BTEEJlABwEsAdQsPto+4AEcDJYAAAADrAAkzwIB/A392EAFAUGgBgOgC+gD//w+2RwYkAQAPtk8GgOGAMwDBUGpA6Ov5/wD/X17Jw1WL7ABW' $sFileBin &= 'vrlCABCKRQAMiEYDM8CJRgAE/k4HZotNCIBmiU4IUOjoAFAIUOjiAArrBeh/AQCYZoN+CAF39CBeycIIAAB6g8QA/FZXi3UIi30ADA+2RgeIRf8AD7cEMGaJB6MAy0IBEA+3RgpIZsHAAEtHAgALDIUECwQAKg+IRwYABgARiEcHD7cHBQLDAIMPtlX/g8IAAgPyi00QK8oAZolPCFBRv8MBAEaJTwSDPwB0wAj/dwToXgDVAAclAMNOAAmJBwAL/zcIVuhbAAZZWFFQGFboUYAEgEZmg38ABAB1GWoAg+wAAmb/dwLoEf+BgIS3BddFABABQQGAWWoYWYPGFoMQxwrzpYCFwgwAAP8lADAAEP8lmgSAAswKAIGTV/yDc0GATsHpAvOlgAODMOED86SDHYsXVlcAvndDARCL/oEAx+QGAAC4yA0AAAD3ZssD+P8ARsuDfssQdQUlAbXLhE62XYBN6HAA/v//aHIDAAAAVugt8v//M9IA6xFmiw5miQ8BgIQCg8YCg8cECEKB+gEQcudfXg0D3dCAjoEkclBQUABo8EEAEGr/jQBGblDomAIAAADHRnqA3AAAgwSOioFMx0Z2W0qAARBqDI+GhsADAGogjUZ2UP92SG7oeYAK6EwAIIOgfnIAdfUHBngABgj+hqSBlT5qBI9khpaBDQyNwgECCC0RAAiLhpqAAzPSuQFCOPGD4A85RnIQdAfo+wAz6wdqAAXo9gEAAIC+oqIACQB0uUEND0ANLQcZDUADwQHbgAlqACzoqoABgFMEgZZWVyK/gTeAv6MCDwXoAotBdnUIgH0QAEB1I1dqClYADH9RAAyL+FdAAntBAvAFQQJ9QAKJRQxf6AR+94A1dQxXVugAUv3//4pFGPYARRQBdAWKRwdg/siIh6XBMUWH8xD8//9qQCBqAGgs8x2AUQEjF8ERR2oAC8B0DmoPUOgyIIAD/ocBI0F8FAAJQ1/+hsE2av//dlhq6BBACMEB2IFEwPKJQgZew8MJhzzCEcJVi8UGQQX4QevN9v8AaiJywTuAvqaBAXUHIsaCCgCKhscrdgJk6EPAK+iWQDVDbV7Qw/81PgBO6IEEZQEGq2EBDyk2ikUIOgBHBnQuPAByKkkAAXMlYyH+hyEO6JJpYCb+j0EBgL8iDw0gLzlgAoEeBADM/1QlCGJkDKIAEKIAFFWiABiiAByiACCiACRVogAoogAwogA0ogA4VaIAPKIAQKIARKIASPWiAEyiAFCgAKEPHwAfAH8fAB8AHwAfAB8AHwATAPQAMAAAAjEAAB5VYAAsYAA8YABKYABaVWAAamAAfmAAkGAAmKtgAAEAruAAvmAA1GAACuJgAPJgAAoyAABqGmAALGAARmAACQCcW+ALBQAQYQjgAcxoAlY/4AUgPH8TfxN/E2QTpQEAR2xvYmFsQWwgbG9jAKykAUZyAGVlAABrZXJuAGVsMzIuZGxsAAAAIwBDbG9zAGVIYW5kbGUAAFYAQ3JlYXRlFFRowABkYBsARXgEaXSlAcAARmluAGRSZXNvdXJjAGVBAO8BTG9hgeYBAACpAlNlhAUAUHJpb3JpdHkAALYCU2l6ZW8CZqcEtwJTbGVlAnDg71dhaXRGbwByU2luZ2xlTwBiamVjdAC2AIB3YXZlT3V0whIIAAC/5QFHZXRQAG9zaXRpb24ABADCpQJPcGVuAKLDpQFQYXVhBsTmAYByZXBhcmVIAAkaZZBDxXUBwAhldABEAMb4AHRhchABylEVAVVucLsDy5UBV4NgDTAGd2lubW0jFNFxHO0oVXEAzvAXIExUAAc0AIjwAKQwAMAFMRog8EIfAADRHqswH7AAnLAADnAAuHAAqtzwAeowAPMwAPswAKAEMwAADDAAFjAAAREFAgADAAQABQAABgB0aXRjaBB5c2lksgdTSUQAQ2hhbmdlU2/8bmfSAFITgACCEXAAIxExgQBsYXlxALAOdW3hEgFTdG9wLykPAA8A/w8ADwAPAA8ADwAPAA8ADwAbDwAIAGcAGWAWAKSTgAIAh7kAAD1gkgB+PgAA2CcAAAT8GjA3FgAA+BKAAAAlDwAAFACJqgpQhOYwA4UwAIJwAwOxlOE3pKZtPLEeAFsU+gzKCD4HAC4G7wT7Af0AgJ4AfwAqABkAWQAUJzg4OCcuOFYTMABxAAT0AAh0ABYAJTg4KiUzOBerMABxAAXwADhwAAl0AIQYJnAAJi84EjAAKhUwAAb0AAx0ABk1oXAANTQ4IjAAFTAACgf0AA10ADgPODiAEQ8QOB84I3IAIgD0ACQPGrIBLSsiLDIAISsdcgABKxEzAQ4rHnIAMjA4QTAAKDggMBtyAAIV8AA4cAAKdAAxNjhBMAApOBw2N3IAAxXwADhwAAt0AGvdMwDTi9kA0HrdTcDUK90d0WD8AP0BFfMADPYAaPYBRNUrStnwANj5ABHS+AHUT/IB/AD1HtEyRKywWLEuAjAzgHIgAGhwAQswABAwKTA/MEcwAHswjzClMBIxAFkxCTK8MvIyAIAzjTO+M/MzAA40XDShNCQ2AEo2dTadNqI2AKs2uDbINvI2AAc3Ejc9PJM8AME82jwqPUg9AE49kz34PQU+ACU+1z5MP3Y/sJ4/uj8ABkAmNGAAAgRwBiAwbDByMAB4MH4whDCKMACQMJYwnDCiMACoMK4wtDC6MIDAMMYwzDDSP2H/DwAPAA8ADwAPAA8ADwAPAP8PAA8ADwAPAA8ADwAPAA8A/w8ADwAPAA8ADwAPAA8ADwD/DwAPAA8ADwAPAA8ADwAPAP8PAA8ADwAPAA8ADwAPAA8A/w8ADwAPAA8ADwAPAA8ABAA=' $sFileBin = Binary(_WinAPI_Base64Decode($sFileBin)) $sFileBin = Binary(_LzntDecompress($sFileBin)) Return SetError(0, 0, $sFileBin) EndFunc ;==>TitchySIDdll Func _LzntDecompress($bBinary) $bBinary = Binary($bBinary) Local $tInput = DllStructCreate('byte[' & BinaryLen($bBinary) & ']') DllStructSetData($tInput, 1, $bBinary) Local $tBuffer = DllStructCreate('byte[' & 16 * DllStructGetSize($tInput) & ']') Local $a_Call = DllCall('ntdll.dll', 'int', 'RtlDecompressBuffer', 'ushort', 2, 'ptr', DllStructGetPtr($tBuffer), 'dword', DllStructGetSize($tBuffer), 'ptr', DllStructGetPtr($tInput), 'dword', DllStructGetSize($tInput), 'dword*', 0) If @error Or $a_Call[0] Then Return SetError(1, 0, '') Local $tOutput = DllStructCreate('byte[' & $a_Call[6] & ']', DllStructGetPtr($tBuffer)) Return SetError(0, 0, DllStructGetData($tOutput, 1)) EndFunc ;==>_LzntDecompress Func API_FreeLibrary($Module) Local $Ret = DllCall($_KERNEL32DLL, 'bool', 'FreeLibrary', 'handle', $Module) If @error Then Return SetError(@error, @extended, 0) Return $Ret[0] EndFunc ;==>API_FreeLibrary Func API_GetProcAddress($Module, $Procname) If IsNumber($Procname) Then Local $Ret = DllCall($_KERNEL32DLL, 'ptr', 'GetProcAddress', 'handle', $Module, 'int', $Procname) Else Local $Ret = DllCall($_KERNEL32DLL, 'ptr', 'GetProcAddress', 'handle', $Module, 'str', $Procname) EndIf If @error Then Return SetError(@error, @extended, 0) Return $Ret[0] EndFunc ;==>API_GetProcAddress Func API_IsBadReadPtr($Ptr, $Len) Local $Ret = DllCall($_KERNEL32DLL, 'int', 'IsBadReadPtr', 'ptr', $Ptr, 'UINT_PTR', $Len) If @error Then Return SetError(@error, @extended, 0) Return $Ret[0] EndFunc ;==>API_IsBadReadPtr Func API_LoadLibrary($Filename) Local $Ret = DllCall($_KERNEL32DLL, 'handle', 'LoadLibraryW', 'wstr', $Filename) If @error Then Return SetError(@error, @extended, 0) Return $Ret[0] EndFunc ;==>API_LoadLibrary Func API_lstrlenA($Address) Local $Ret = DllCall($_KERNEL32DLL, 'int', 'lstrlenA', 'ptr', $Address) If @error Then Return SetError(@error, @extended, 0) Return $Ret[0] EndFunc ;==>API_lstrlenA Func API_lstrlenW($Address) Local $Ret = DllCall($_KERNEL32DLL, 'int', 'lstrlenW', 'ptr', $Address) If @error Then Return SetError(@error, @extended, 0) Return $Ret[0] EndFunc ;==>API_lstrlenW Func API_VirtualProtect($Address, $Size, $Protection) Local $Ret = DllCall($_KERNEL32DLL, 'bool', 'VirtualProtect', 'ptr', $Address, 'dword_ptr', $Size, 'dword', $Protection, 'dword*', 0) If @error Then Return SetError(@error, @extended, 0) Return $Ret[0] EndFunc ;==>API_VirtualProtect Func API_ZeroMemory($Address, $Size) Local $Ret = DllCall($_KERNEL32DLL, 'none', 'RtlZeroMemory', 'ptr', $Address, 'dword_ptr', $Size) If @error Then Return SetError(@error, @extended, 0) Return $Ret[0] EndFunc ;==>API_ZeroMemory Func MemLib_BuildImportTable($CodeBase, $PEHeader) Local Const $IMAGE_DIRECTORY_ENTRY_IMPORT = 1 Local Const $SizeOfPtr = DllStructGetSize(DllStructCreate('ptr', 1)) Local $IMAGE_NT_HEADER = DllStructCreate($tagIMAGE_NT_HEADER, $PEHeader) Local $SizeOfDataDirectory = DllStructGetSize(DllStructCreate($tagIMAGE_DATA_DIRECTORY)) Local $ImportDirectoryPtr = $PEHeader + DllStructGetSize($IMAGE_NT_HEADER) + $IMAGE_DIRECTORY_ENTRY_IMPORT * $SizeOfDataDirectory Local $ImportDirectory = DllStructCreate($tagIMAGE_DATA_DIRECTORY, $ImportDirectoryPtr) Local $ImportSize = DllStructGetData($ImportDirectory, 'Size') Local $ImportVirtualAddress = DllStructGetData($ImportDirectory, 'VirtualAddress') Local $SizeOfImportDir = DllStructGetSize(DllStructCreate($tagIMAGE_IMPORT_DESCRIPTOR)) Local $ImportList = '' If $ImportSize > 0 Then Local $ImportDescPtr = $CodeBase + $ImportVirtualAddress While 1 If API_IsBadReadPtr($ImportDescPtr, $SizeOfImportDir) Then ExitLoop Local $ImportDesc = DllStructCreate($tagIMAGE_IMPORT_DESCRIPTOR, $ImportDescPtr) Local $NameOffset = DllStructGetData($ImportDesc, 'Name') If $NameOffset = 0 Then ExitLoop Local $Name = Peek('str', $CodeBase + $NameOffset) Local $OriginalFirstThunk = DllStructGetData($ImportDesc, 'OriginalFirstThunk') Local $FirstThunk = DllStructGetData($ImportDesc, 'FirstThunk') Local $Handle = API_LoadLibrary($Name) If $Handle Then $ImportList &= $Handle & ',' Local $FuncRef = $CodeBase + $FirstThunk Local $ThunkRef = $CodeBase + $OriginalFirstThunk If $OriginalFirstThunk = 0 Then $ThunkRef = $FuncRef While 1 Local $Ref = Peek('ptr', $ThunkRef) If $Ref = 0 Then ExitLoop If BitAND(Peek('byte', $ThunkRef + $SizeOfPtr - 1), 0x80) Then Local $Ptr = API_GetProcAddress($Handle, BitAND($Ref, 0xffff)) Else Local $IMAGE_IMPORT_BY_NAME = DllStructCreate($tagIMAGE_IMPORT_BY_NAME, $CodeBase + $Ref) Local $NamePtr = DllStructGetPtr($IMAGE_IMPORT_BY_NAME, 2) Local $FuncName = Peek('str', $NamePtr) Local $Ptr = API_GetProcAddress($Handle, $FuncName) EndIf If $Ptr = 0 Then Return SetError(1, 0, False) Poke('ptr', $FuncRef, $Ptr) $ThunkRef += $SizeOfPtr $FuncRef += $SizeOfPtr WEnd Else Return SetError(1, 0, False) EndIf $ImportDescPtr += $SizeOfImportDir WEnd EndIf Return $ImportList EndFunc ;==>MemLib_BuildImportTable Func MemLib_CopySections($CodeBase, $PEHeader, $DllDataPtr) Local $IMAGE_NT_HEADER = DllStructCreate($tagIMAGE_NT_HEADER, $PEHeader) Local $SizeOfFileHeader = DllStructGetPtr($IMAGE_NT_HEADER, 'Magic') - $PEHeader Local $SizeOfOptionalHeader = DllStructGetData($IMAGE_NT_HEADER, 'SizeOfOptionalHeader') Local $NumberOfSections = DllStructGetData($IMAGE_NT_HEADER, 'NumberOfSections') Local $SectionAlignment = DllStructGetData($IMAGE_NT_HEADER, 'SectionAlignment') Local $SectionPtr = $PEHeader + $SizeOfFileHeader + $SizeOfOptionalHeader For $i = 1 To $NumberOfSections Local $Section = DllStructCreate($tagIMAGE_SECTION_HEADER, $SectionPtr) Local $VirtualAddress = DllStructGetData($Section, 'VirtualAddress') Local $SizeOfRawData = DllStructGetData($Section, 'SizeOfRawData') Local $PointerToRawData = DllStructGetData($Section, 'PointerToRawData') If $SizeOfRawData = 0 Then Local $Dest = _MemVirtualAlloc($CodeBase + $VirtualAddress, $SectionAlignment, $MEM_COMMIT, $PAGE_READWRITE) API_ZeroMemory($Dest, $SectionAlignment) Else Local $Dest = _MemVirtualAlloc($CodeBase + $VirtualAddress, $SizeOfRawData, $MEM_COMMIT, $PAGE_READWRITE) _MemMoveMemory($DllDataPtr + $PointerToRawData, $Dest, $SizeOfRawData) EndIf DllStructSetData($Section, 'VirtualSize', $Dest - $CodeBase) $SectionPtr += DllStructGetSize($Section) Next EndFunc ;==>MemLib_CopySections Func MemLib_FinalizeSections($CodeBase, $PEHeader) Local Const $IMAGE_SCN_MEM_EXECUTE = 0x20000000 Local Const $IMAGE_SCN_MEM_READ = 0x40000000 Local Const $IMAGE_SCN_MEM_WRITE = 0x80000000 Local Const $IMAGE_SCN_MEM_NOT_CACHED = 0x4000000 Local Const $IMAGE_SCN_CNT_INITIALIZED_DATA = 64 Local Const $IMAGE_SCN_CNT_UNINITIALIZED_DATA = 128 Local Const $PAGE_WRITECOPY = 0x0008 Local Const $PAGE_EXECUTE_WRITECOPY = 0x0080 Local $IMAGE_NT_HEADER = DllStructCreate($tagIMAGE_NT_HEADER, $PEHeader) Local $SizeOfFileHeader = DllStructGetPtr($IMAGE_NT_HEADER, 'Magic') - $PEHeader Local $SizeOfOptionalHeader = DllStructGetData($IMAGE_NT_HEADER, 'SizeOfOptionalHeader') Local $NumberOfSections = DllStructGetData($IMAGE_NT_HEADER, 'NumberOfSections') Local $SectionAlignment = DllStructGetData($IMAGE_NT_HEADER, 'SectionAlignment') Local $SectionPtr = $PEHeader + $SizeOfFileHeader + $SizeOfOptionalHeader For $i = 1 To $NumberOfSections Local $Section = DllStructCreate($tagIMAGE_SECTION_HEADER, $SectionPtr) Local $Characteristics = DllStructGetData($Section, 'Characteristics') Local $SizeOfRawData = DllStructGetData($Section, 'SizeOfRawData') Local $Executable = (BitAND($Characteristics, $IMAGE_SCN_MEM_EXECUTE) <> 0) Local $Readable = (BitAND($Characteristics, $IMAGE_SCN_MEM_READ) <> 0) Local $Writeable = (BitAND($Characteristics, $IMAGE_SCN_MEM_WRITE) <> 0) Local $ProtectList[8] = [$PAGE_NOACCESS, $PAGE_EXECUTE, $PAGE_READONLY, $PAGE_EXECUTE_READ, $PAGE_WRITECOPY, $PAGE_EXECUTE_WRITECOPY, $PAGE_READWRITE, $PAGE_EXECUTE_READWRITE] Local $Protect = $ProtectList[$Executable + $Readable * 2 + $Writeable * 4] If BitAND($Characteristics, $IMAGE_SCN_MEM_NOT_CACHED) Then $Protect = BitOR($Protect, $PAGE_NOCACHE) Local $Size = $SizeOfRawData If $Size = 0 Then If BitAND($Characteristics, $IMAGE_SCN_CNT_INITIALIZED_DATA) Then $Size = DllStructGetData($IMAGE_NT_HEADER, 'SizeOfInitializedData') ElseIf BitAND($Characteristics, $IMAGE_SCN_CNT_UNINITIALIZED_DATA) Then $Size = DllStructGetData($IMAGE_NT_HEADER, 'SizeOfUninitializedData') EndIf EndIf If $Size > 0 Then Local $PhysicalAddress = $CodeBase + DllStructGetData($Section, 'VirtualSize') API_VirtualProtect($PhysicalAddress, $Size, $Protect) EndIf $SectionPtr += DllStructGetSize($Section) Next EndFunc ;==>MemLib_FinalizeSections Func MemLib_FreeLibrary($ModulePtr) If Not MemLib_Vaild($ModulePtr) Then Return 0 Local $Module = DllStructCreate($tagModule, $ModulePtr) Local $CodeBase = DllStructGetData($Module, 'CodeBase') Local $DllEntry = DllStructGetData($Module, 'DllEntry') Local $Initialized = DllStructGetData($Module, 'Initialized') Local $ImportListPtr = DllStructGetData($Module, 'ImportList') Local $ExportListPtr = DllStructGetData($Module, 'ExportList') If $Initialized And $DllEntry Then Local $Success = MemoryFuncCall('bool', $DllEntry, 'ptr', $CodeBase, 'dword', 0, 'ptr', 0) DllStructSetData($Module, 'Initialized', 0) EndIf If $ExportListPtr Then _MemGlobalFree($ExportListPtr) If $ImportListPtr Then Local $ImportList = StringSplit(Peek('str', $ImportListPtr), ',') For $i = 1 To $ImportList[0] If $ImportList[$i] Then API_FreeLibrary($ImportList[$i]) Next _MemGlobalFree($ImportListPtr) EndIf If $CodeBase Then _MemVirtualFree($CodeBase, 0, $MEM_RELEASE) DllStructSetData($Module, 'CodeBase', 0) DllStructSetData($Module, 'ExportList', 0) _MemGlobalFree($ModulePtr) Return 1 EndFunc ;==>MemLib_FreeLibrary Func MemLib_GetExportList($CodeBase, $PEHeader) Local Const $IMAGE_DIRECTORY_ENTRY_EXPORT = 0 Local $IMAGE_NT_HEADER = DllStructCreate($tagIMAGE_NT_HEADER, $PEHeader) Local $SizeOfDataDirectory = DllStructGetSize(DllStructCreate($tagIMAGE_DATA_DIRECTORY)) Local $ExportDirectoryPtr = $PEHeader + DllStructGetSize($IMAGE_NT_HEADER) + $IMAGE_DIRECTORY_ENTRY_EXPORT * $SizeOfDataDirectory Local $ExportDirectory = DllStructCreate($tagIMAGE_DATA_DIRECTORY, $ExportDirectoryPtr) Local $ExportSize = DllStructGetData($ExportDirectory, 'Size') Local $ExportVirtualAddress = DllStructGetData($ExportDirectory, 'VirtualAddress') Local $ExportList = '' If $ExportSize > 0 Then Local $IMAGE_EXPORT_DIRECTORY = DllStructCreate($tagIMAGE_EXPORT_DIRECTORY, $CodeBase + $ExportVirtualAddress) Local $NumberOfNames = DllStructGetData($IMAGE_EXPORT_DIRECTORY, 'NumberOfNames') Local $NumberOfFunctions = DllStructGetData($IMAGE_EXPORT_DIRECTORY, 'NumberOfFunctions') Local $AddressOfFunctions = DllStructGetData($IMAGE_EXPORT_DIRECTORY, 'AddressOfFunctions') If $NumberOfNames = 0 Or $NumberOfFunctions = 0 Then Return '' Local $NameRef = $CodeBase + DllStructGetData($IMAGE_EXPORT_DIRECTORY, 'AddressOfNames') Local $Ordinal = $CodeBase + DllStructGetData($IMAGE_EXPORT_DIRECTORY, 'AddressOfNameOrdinals') For $i = 1 To $NumberOfNames Local $Ref = Peek('dword', $NameRef) Local $Idx = Peek('word', $Ordinal) Local $FuncName = Peek('str', $CodeBase + $Ref) If $Idx <= $NumberOfFunctions Then Local $Addr = $CodeBase + Peek('dword', $CodeBase + $AddressOfFunctions + $Idx * 4) $ExportList &= $FuncName & Chr(1) & $Addr & Chr(1) EndIf $NameRef += 4 $Ordinal += 2 Next EndIf Return $ExportList EndFunc ;==>MemLib_GetExportList Func MemLib_GetProcAddress($ModulePtr, $FuncName) Local $ExportPtr = Peek('ptr', $ModulePtr) If Not $ExportPtr Then Return 0 Local $ExportList = Peek('str', $ExportPtr) Local $Match = StringRegExp($ExportList, '(?i)' & $FuncName & '\001([^\001]*)\001', 3) If Not @error Then Return Ptr($Match[0]) Return 0 EndFunc ;==>MemLib_GetProcAddress Func MemLib_LoadLibrary($DllBinary) $DllBinary = Binary($DllBinary) Local $DllData = DllStructCreate('byte[' & BinaryLen($DllBinary) & ']') Local $DllDataPtr = DllStructGetPtr($DllData) DllStructSetData($DllData, 1, $DllBinary) Local $IMAGE_DOS_HEADER = DllStructCreate($tagIMAGE_DOS_HEADER, $DllDataPtr) If DllStructGetData($IMAGE_DOS_HEADER, 'e_magic') <> 0x5A4D Then Return SetError(1, 0, 0) EndIf Local $PEHeader = $DllDataPtr + DllStructGetData($IMAGE_DOS_HEADER, 'e_lfanew') Local $IMAGE_NT_HEADER = DllStructCreate($tagIMAGE_NT_HEADER, $PEHeader) If DllStructGetData($IMAGE_NT_HEADER, 'Signature') <> 0x4550 Then Return SetError(1, 0, 0) EndIf Switch DllStructGetData($IMAGE_NT_HEADER, 'Magic') Case 0x10B If @AutoItX64 Then Return SetError(2, 0, 0) Case 0x20B If Not @AutoItX64 Then Return SetError(2, 0, 0) EndSwitch Local $ImageBase = DllStructGetData($IMAGE_NT_HEADER, 'ImageBase') Local $SizeOfImage = DllStructGetData($IMAGE_NT_HEADER, 'SizeOfImage') Local $SizeOfHeaders = DllStructGetData($IMAGE_NT_HEADER, 'SizeOfHeaders') Local $AddressOfEntryPoint = DllStructGetData($IMAGE_NT_HEADER, 'AddressOfEntryPoint') Local $ModulePtr = _MemGlobalAlloc(DllStructGetSize(DllStructCreate($tagModule)), $GPTR) If $ModulePtr = 0 Then Return SetError(3, 0, 0) Local $Module = DllStructCreate($tagModule, $ModulePtr) Local $CodeBase = _MemVirtualAlloc($ImageBase, $SizeOfImage, $MEM_RESERVE, $PAGE_READWRITE) If $CodeBase = 0 Then $CodeBase = _MemVirtualAlloc(0, $SizeOfImage, $MEM_RESERVE, $PAGE_READWRITE) If $CodeBase = 0 Then Return SetError(3, 0, 0) DllStructSetData($Module, 'CodeBase', $CodeBase) _MemVirtualAlloc($CodeBase, $SizeOfImage, $MEM_COMMIT, $PAGE_READWRITE) Local $Base = _MemVirtualAlloc($CodeBase, $SizeOfHeaders, $MEM_COMMIT, $PAGE_READWRITE) _MemMoveMemory($DllDataPtr, $Base, $SizeOfHeaders) MemLib_CopySections($CodeBase, $PEHeader, $DllDataPtr) Local $LocationDelta = $CodeBase - $ImageBase If $LocationDelta <> 0 Then MemLib_PerformBaseRelocation($CodeBase, $PEHeader, $LocationDelta) Local $ImportList = MemLib_BuildImportTable($CodeBase, $PEHeader) If @error Then MemLib_FreeLibrary($ModulePtr) Return SetError(2, 0, 0) EndIf Local $ExportList = MemLib_GetExportList($CodeBase, $PEHeader) Local $ImportListPtr = _MemGlobalAlloc(StringLen($ImportList) + 2, $GPTR) Local $ExportListPtr = _MemGlobalAlloc(StringLen($ExportList) + 2, $GPTR) DllStructSetData($Module, 'ImportList', $ImportListPtr) DllStructSetData($Module, 'ExportList', $ExportListPtr) If $ImportListPtr = 0 Or $ExportListPtr = 0 Then MemLib_FreeLibrary($ModulePtr) Return SetError(3, 0, 0) EndIf Poke('str', $ImportListPtr, $ImportList) Poke('str', $ExportListPtr, $ExportList) MemLib_FinalizeSections($CodeBase, $PEHeader) Local $DllEntry = $CodeBase + $AddressOfEntryPoint DllStructSetData($Module, 'DllEntry', $DllEntry) DllStructSetData($Module, 'Initialized', 0) If $AddressOfEntryPoint Then Local $Success = MemoryFuncCall('bool', $DllEntry, 'ptr', $CodeBase, 'dword', 1, 'ptr', 0) If Not $Success[0] Then MemLib_FreeLibrary($ModulePtr) Return SetError(4, 0, 0) EndIf DllStructSetData($Module, 'Initialized', 1) EndIf Return $ModulePtr EndFunc ;==>MemLib_LoadLibrary Func MemLib_PerformBaseRelocation($CodeBase, $PEHeader, $LocationDelta) Local Const $IMAGE_DIRECTORY_ENTRY_BASERELOC = 5 Local Const $IMAGE_REL_BASED_HIGHLOW = 3 Local Const $IMAGE_REL_BASED_DIR64 = 10 Local $IMAGE_NT_HEADER = DllStructCreate($tagIMAGE_NT_HEADER, $PEHeader) Local $SizeOfDataDirectory = DllStructGetSize(DllStructCreate($tagIMAGE_DATA_DIRECTORY)) Local $RelocDirectoryPtr = $PEHeader + DllStructGetSize($IMAGE_NT_HEADER) + $IMAGE_DIRECTORY_ENTRY_BASERELOC * $SizeOfDataDirectory Local $RelocDirectory = DllStructCreate($tagIMAGE_DATA_DIRECTORY, $RelocDirectoryPtr) Local $RelocSize = DllStructGetData($RelocDirectory, 'Size') Local $RelocVirtualAddress = DllStructGetData($RelocDirectory, 'VirtualAddress') If $RelocSize > 0 Then Local $Relocation = $CodeBase + $RelocVirtualAddress While 1 Local $IMAGE_BASE_RELOCATION = DllStructCreate($tagIMAGE_BASE_RELOCATION, $Relocation) Local $VirtualAddress = DllStructGetData($IMAGE_BASE_RELOCATION, 'VirtualAddress') Local $SizeOfBlock = DllStructGetData($IMAGE_BASE_RELOCATION, 'SizeOfBlock') If $VirtualAddress = 0 Then ExitLoop Local $Dest = $CodeBase + $VirtualAddress Local $Entries = ($SizeOfBlock - 8) / 2 Local $RelInfo = DllStructCreate('word[' & $Entries & ']', $Relocation + 8) For $i = 1 To $Entries Local $Info = DllStructGetData($RelInfo, 1, $i) Local $Type = BitShift($Info, 12) If $Type = $IMAGE_REL_BASED_HIGHLOW Or $Type = $IMAGE_REL_BASED_DIR64 Then Local $Addr = DllStructCreate('ptr', $Dest + BitAND($Info, 0xFFF)) DllStructSetData($Addr, 1, DllStructGetData($Addr, 1) + $LocationDelta) EndIf Next $Relocation += $SizeOfBlock WEnd EndIf EndFunc ;==>MemLib_PerformBaseRelocation Func MemLib_Vaild($ModulePtr) Local $ModuleSize = DllStructGetSize(DllStructCreate($tagModule)) If API_IsBadReadPtr($ModulePtr, $ModuleSize) Then Return False Local $Module = DllStructCreate($tagModule, $ModulePtr) Local $CodeBase = DllStructGetData($Module, 'CodeBase') If Not $CodeBase Then Return False Return True EndFunc ;==>MemLib_Vaild Func MemoryDllCall($Module, $RetType, $FuncName, $Type1 = '', $Param1 = 0, $Type2 = '', $Param2 = 0, $Type3 = '', $Param3 = 0, $Type4 = '', $Param4 = 0, $Type5 = '', $Param5 = 0, $Type6 = '', $Param6 = 0, $Type7 = '', $Param7 = 0, $Type8 = '', $Param8 = 0, $Type9 = '', $Param9 = 0, $Type10 = '', $Param10 = 0, $Type11 = '', $Param11 = 0, $Type12 = '', $Param12 = 0, $Type13 = '', $Param13 = 0, $Type14 = '', $Param14 = 0, $Type15 = '', $Param15 = 0, $Type16 = '', $Param16 = 0, $Type17 = '', $Param17 = 0, $Type18 = '', $Param18 = 0, $Type19 = '', $Param19 = 0, $Type20 = '', $Param20 = 0) Local $Ret, $OpenFlag = False Local Const $MaxParams = 20 If (@NumParams < 3) Or (@NumParams > $MaxParams * 2 + 3) Or (Mod(@NumParams, 2) = 0) Then Return SetError(4, 0, 0) If Not IsPtr($Module) Then $OpenFlag = True $Module = MemoryDllOpen($Module) If @error Then Return SetError(1, 0, 0) EndIf Local $Addr = MemLib_GetProcAddress($Module, $FuncName) If Not $Addr Then Return SetError(3, 0, 0) Poke('ptr', $_MFHookPtr + 1 + @AutoItX64, $Addr) Switch @NumParams Case 3 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi) Case 5 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1) Case 7 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2) Case 9 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3) Case 11 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4) Case 13 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4, $Type5, $Param5) Case Else Local $DllCallStr = 'DllCall ( $_KERNEL32DLL, $RetType, $_MFHookApi', $n = 1 For $i = 5 To @NumParams Step 2 $DllCallStr &= ', $Type' & $n & ', $Param' & $n $n += 1 Next $DllCallStr &= ' )' $Ret = Execute($DllCallStr) EndSwitch Local $Err = @error If $OpenFlag Then MemoryDllClose($Module) Return SetError($Err, 0, $Ret) EndFunc ;==>MemoryDllCall Func MemoryDllClose($Module) MemLib_FreeLibrary($Module) EndFunc ;==>MemoryDllClose Func MemoryDllOpen($DllBinary) If Not IsDllStruct($_MFHookBak) Then MemoryFuncInit() Local $Module = MemLib_LoadLibrary($DllBinary) If @error Then Return SetError(@error, 0, -1) Return $Module EndFunc ;==>MemoryDllOpen Func MemoryFuncCall($RetType, $Address, $Type1 = '', $Param1 = 0, $Type2 = '', $Param2 = 0, $Type3 = '', $Param3 = 0, $Type4 = '', $Param4 = 0, $Type5 = '', $Param5 = 0, $Type6 = '', $Param6 = 0, $Type7 = '', $Param7 = 0, $Type8 = '', $Param8 = 0, $Type9 = '', $Param9 = 0, $Type10 = '', $Param10 = 0, $Type11 = '', $Param11 = 0, $Type12 = '', $Param12 = 0, $Type13 = '', $Param13 = 0, $Type14 = '', $Param14 = 0, $Type15 = '', $Param15 = 0, $Type16 = '', $Param16 = 0, $Type17 = '', $Param17 = 0, $Type18 = '', $Param18 = 0, $Type19 = '', $Param19 = 0, $Type20 = '', $Param20 = 0) If Not IsDllStruct($_MFHookBak) Then MemoryFuncInit() Poke('ptr', $_MFHookPtr + 1 + @AutoItX64, $Address) Local $Ret Switch @NumParams Case 2 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi) Case 4 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1) Case 6 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2) Case 8 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3) Case 10 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4) Case 12 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4, $Type5, $Param5) Case Else Local $DllCallStr = 'DllCall($_KERNEL32DLL, $RetType, $_MFHookApi', $n = 1 For $i = 4 To @NumParams Step 2 $DllCallStr &= ', $Type' & $n & ', $Param' & $n $n += 1 Next $DllCallStr &= ')' $Ret = Execute($DllCallStr) EndSwitch Return SetError(@error, 0, $Ret) EndFunc ;==>MemoryFuncCall Func MemoryFuncInit() Local $KernelHandle = API_LoadLibrary('kernel32.dll') API_FreeLibrary($KernelHandle) Local $HookPtr = API_GetProcAddress($KernelHandle, $_MFHookApi) Local $HookSize = 7 + @AutoItX64 * 5 $_MFHookPtr = $HookPtr $_MFHookBak = DllStructCreate('byte[' & $HookSize & ']') If Not API_VirtualProtect($_MFHookPtr, $HookSize, $PAGE_EXECUTE_READWRITE) Then Return False DllStructSetData($_MFHookBak, 1, Peek('byte[' & $HookSize & ']', $_MFHookPtr)) If @AutoItX64 Then Poke('word', $_MFHookPtr, 0xB848) Poke('word', $_MFHookPtr + 10, 0xE0FF) Else Poke('byte', $_MFHookPtr, 0xB8) Poke('word', $_MFHookPtr + 5, 0xE0FF) EndIf Return True EndFunc ;==>MemoryFuncInit Func Peek($Type, $Ptr) If $Type = 'str' Then $Type = 'char[' & API_lstrlenA($Ptr) & ']' ElseIf $Type = 'wstr' Then $Type = 'wchar[' & API_lstrlenW($Ptr) & ']' EndIf Return DllStructGetData(DllStructCreate($Type, $Ptr), 1) EndFunc ;==>Peek Func Poke($Type, $Ptr, $Value) If $Type = 'str' Then $Type = 'char[' & (StringLen($Value) + 1) & ']' ElseIf $Type = 'wstr' Then $Type = 'wchar[' & (StringLen($Value) + 1) & ']' EndIf DllStructSetData(DllStructCreate($Type, $Ptr), 1, $Value) EndFunc ;==>Poke #EndRegion Edited April 14, 2021 by UEZ Added DPI stuff dmob, FrancescoDiMuro, argumentum and 1 other 4 Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
Popular Post Zedna Posted April 12, 2021 Popular Post Share Posted April 12, 2021 (edited) I wonder if number of lines of code implementing About box finally will not be much bigger than whole main project (without About box) ... Edited April 12, 2021 by Zedna Werty, UEZ, seadoggie01 and 4 others 7 Resources UDF ResourcesEx UDF AutoIt Forum Search Link to comment Share on other sites More sharing options...
Shark007 Posted April 12, 2021 Share Posted April 12, 2021 @UEZ - you are making my use of a MsgBox as a solution look good again. Please don't stop posting code examples though. I do find your work very intriguing. Link to comment Share on other sites More sharing options...
Professor_Bernd Posted April 12, 2021 Author Share Posted April 12, 2021 7 hours ago, Zedna said: I wonder if number of lines of code implementing About box finally will not be much bigger than whole main project (without About box) ... In the end the about dialog needs its own about dialog! @UEZ Please keep posting your ideas. Even if I think they are too much for an about dialog, I'm sure you can use them for other things. 👍 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now