From 50218e93206d97c4b4ec728c515586375d692a77 Mon Sep 17 00:00:00 2001 From: Raymond Date: Fri, 9 Oct 2009 22:17:35 +0000 Subject: [PATCH] Bmp stuff + normal font size in GUI. git-svn-id: http://www.villavu.com/repositories/merlijn/mufasa@120 3f818213-9676-44b0-a9b4-5e4c4e03d09d --- Projects/SAMufasaGUI/project1.lpi | 438 ++++--- Projects/SAMufasaGUI/testunit.lfm | 26 +- Projects/SAMufasaGUI/testunit.lrs | 1526 +++++++++++----------- Projects/SAMufasaGUI/testunit.pas | 2 +- Units/MMLAddon/PSInc/Wrappers/bitmap.inc | 236 ++-- Units/MMLAddon/PSInc/pscompile.inc | 168 +-- Units/MMLAddon/mmlpsthread.pas | 565 ++++---- Units/MMLCore/bitmaps.pas | 24 +- Units/MMLCore/finder.pas | 1052 ++++++++------- 9 files changed, 2120 insertions(+), 1917 deletions(-) diff --git a/Projects/SAMufasaGUI/project1.lpi b/Projects/SAMufasaGUI/project1.lpi index be28994..1e609bd 100644 --- a/Projects/SAMufasaGUI/project1.lpi +++ b/Projects/SAMufasaGUI/project1.lpi @@ -7,7 +7,7 @@ <UseXPManifest Value="True"/> - <ActiveEditorIndexAtStart Value="12"/> + <ActiveEditorIndexAtStart Value="10"/> </General> <VersionInfo> <ProjectVersion Value=""/> @@ -41,7 +41,7 @@ <CursorPos X="71" Y="10"/> <TopLine Value="1"/> <EditorIndex Value="0"/> - <UsageCount Value="176"/> + <UsageCount Value="191"/> <Loaded Value="True"/> </Unit0> <Unit1> @@ -51,117 +51,117 @@ <UnitName Value="TestUnit"/> <CursorPos X="33" Y="57"/> <TopLine Value="32"/> - <UsageCount Value="49"/> + <UsageCount Value="48"/> </Unit1> <Unit2> <Filename Value="client.pas"/> <UnitName Value="Client"/> <CursorPos X="18" Y="34"/> <TopLine Value="10"/> - <UsageCount Value="49"/> + <UsageCount Value="48"/> </Unit2> <Unit3> <Filename Value="../cogat/Units/CogatUnits/comptypes.pas"/> <UnitName Value="CompTypes"/> <CursorPos X="13" Y="531"/> <TopLine Value="523"/> - <UsageCount Value="16"/> + <UsageCount Value="15"/> </Unit3> <Unit4> <Filename Value="mufasatypes.pas"/> <UnitName Value="MufasaTypes"/> <CursorPos X="52" Y="20"/> <TopLine Value="1"/> - <UsageCount Value="49"/> + <UsageCount Value="48"/> </Unit4> <Unit5> <Filename Value="window.pas"/> <UnitName Value="Window"/> <CursorPos X="4" Y="100"/> <TopLine Value="85"/> - <UsageCount Value="49"/> + <UsageCount Value="48"/> </Unit5> <Unit6> <Filename Value="../Documents/fpc/rtl/inc/systemh.inc"/> <CursorPos X="3" Y="261"/> <TopLine Value="246"/> - <UsageCount Value="2"/> + <UsageCount Value="1"/> </Unit6> <Unit7> <Filename Value="input.pas"/> <UnitName Value="Input"/> <CursorPos X="5" Y="20"/> <TopLine Value="15"/> - <UsageCount Value="48"/> + <UsageCount Value="47"/> </Unit7> <Unit8> <Filename Value="../cogat/Units/CogatUnits/compinput.pas"/> <UnitName Value="CompInput"/> <CursorPos X="43" Y="250"/> <TopLine Value="236"/> - <UsageCount Value="14"/> + <UsageCount Value="13"/> </Unit8> <Unit9> <Filename Value="Units/MMLCore/client.pas"/> <UnitName Value="Client"/> <CursorPos X="46" Y="8"/> <TopLine Value="1"/> - <UsageCount Value="18"/> + <UsageCount Value="17"/> </Unit9> <Unit10> <Filename Value="Units/MMLCore/input.pas"/> <UnitName Value="Input"/> <CursorPos X="1" Y="1"/> <TopLine Value="1"/> - <UsageCount Value="18"/> + <UsageCount Value="17"/> </Unit10> <Unit11> <Filename Value="Units/MMLCore/mufasatypes.pas"/> <UnitName Value="MufasaTypes"/> <CursorPos X="1" Y="1"/> <TopLine Value="1"/> - <UsageCount Value="18"/> + <UsageCount Value="17"/> </Unit11> <Unit12> <Filename Value="Units/MMLCore/window.pas"/> <UnitName Value="Window"/> <CursorPos X="69" Y="254"/> <TopLine Value="251"/> - <UsageCount Value="18"/> + <UsageCount Value="17"/> </Unit12> <Unit13> <Filename Value="Units/MMLCore/windowutil.pas"/> <UnitName Value="windowutil"/> <CursorPos X="54" Y="20"/> <TopLine Value="20"/> - <UsageCount Value="41"/> + <UsageCount Value="40"/> </Unit13> <Unit14> <Filename Value="../Documents/lazarus/lcl/graphics.pp"/> <UnitName Value="Graphics"/> <CursorPos X="15" Y="1287"/> <TopLine Value="1272"/> - <UsageCount Value="11"/> + <UsageCount Value="10"/> </Unit14> <Unit15> <Filename Value="../cogat/Units/CogatUnits/compbitmaps.pas"/> <UnitName Value="CompBitmaps"/> <CursorPos X="1" Y="109"/> <TopLine Value="92"/> - <UsageCount Value="11"/> + <UsageCount Value="10"/> </Unit15> <Unit16> <Filename Value="../Documents/lazarus/lcl/include/rasterimage.inc"/> <CursorPos X="1" Y="1"/> <TopLine Value="691"/> - <UsageCount Value="3"/> + <UsageCount Value="2"/> </Unit16> <Unit17> <Filename Value="../Documents/fpc/packages/x11/src/xlib.pp"/> <UnitName Value="xlib"/> <CursorPos X="47" Y="1272"/> <TopLine Value="1257"/> - <UsageCount Value="6"/> + <UsageCount Value="5"/> </Unit17> <Unit18> <Filename Value="testunit.pas"/> @@ -170,10 +170,10 @@ <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="TestUnit"/> - <CursorPos X="10" Y="11"/> + <CursorPos X="111" Y="8"/> <TopLine Value="1"/> - <EditorIndex Value="14"/> - <UsageCount Value="142"/> + <EditorIndex Value="13"/> + <UsageCount Value="157"/> <Loaded Value="True"/> </Unit18> <Unit19> @@ -181,40 +181,40 @@ <UnitName Value="CompColors"/> <CursorPos X="44" Y="914"/> <TopLine Value="897"/> - <UsageCount Value="9"/> + <UsageCount Value="8"/> </Unit19> <Unit20> <Filename Value="../Documents/fpc/packages/x11/src/x.pp"/> <UnitName Value="x"/> <CursorPos X="4" Y="179"/> <TopLine Value="164"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit20> <Unit21> <Filename Value="../Documents/fpc/rtl/unix/aliasctp.inc"/> <CursorPos X="63" Y="45"/> <TopLine Value="30"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit21> <Unit22> <Filename Value="../cogat/Units/CogatUnits/compdragger.pas"/> <UnitName Value="CompDragger"/> <CursorPos X="33" Y="14"/> <TopLine Value="6"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit22> <Unit23> <Filename Value="../Documents/lazarus/lcl/lcltype.pp"/> <UnitName Value="LCLType"/> <CursorPos X="9" Y="99"/> <TopLine Value="83"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit23> <Unit24> <Filename Value="testunit.lfm"/> <CursorPos X="1" Y="1"/> <TopLine Value="1"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> <SyntaxHighlighter Value="LFM"/> </Unit24> <Unit25> @@ -222,81 +222,81 @@ <UnitName Value="Unix"/> <CursorPos X="63" Y="63"/> <TopLine Value="56"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit25> <Unit26> <Filename Value="../Compilertje/Units/CogatUnits/compinput.pas"/> <UnitName Value="CompInput"/> <CursorPos X="6" Y="462"/> <TopLine Value="449"/> - <UsageCount Value="6"/> + <UsageCount Value="5"/> </Unit26> <Unit27> <Filename Value="../FPC/FPCCheckout/rtl/win/wininc/func.inc"/> <CursorPos X="10" Y="663"/> <TopLine Value="635"/> - <UsageCount Value="5"/> + <UsageCount Value="4"/> </Unit27> <Unit28> <Filename Value="../Compilertje/Units/CogatUnits/comptypes.pas"/> <UnitName Value="CompTypes"/> <CursorPos X="13" Y="418"/> <TopLine Value="402"/> - <UsageCount Value="5"/> + <UsageCount Value="4"/> </Unit28> <Unit29> <Filename Value="../Compilertje/Units/CogatUnits/compcolors.pas"/> <UnitName Value="CompColors"/> <CursorPos X="12" Y="603"/> <TopLine Value="573"/> - <UsageCount Value="5"/> + <UsageCount Value="4"/> </Unit29> <Unit30> <Filename Value="../lazarus/lcl/graphics.pp"/> <UnitName Value="Graphics"/> <CursorPos X="15" Y="1283"/> <TopLine Value="1270"/> - <UsageCount Value="5"/> + <UsageCount Value="4"/> </Unit30> <Unit31> <Filename Value="../lazarus/lcl/include/rasterimage.inc"/> <CursorPos X="20" Y="351"/> <TopLine Value="339"/> - <UsageCount Value="5"/> + <UsageCount Value="4"/> </Unit31> <Unit32> <Filename Value="../lazarus/lcl/intfgraphics.pas"/> <UnitName Value="IntfGraphics"/> <CursorPos X="3" Y="3251"/> <TopLine Value="3245"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit32> <Unit33> <Filename Value="../../Documents/fpc/packages/fcl-image/src/fpcanvas.pp"/> <UnitName Value="FPCanvas"/> <CursorPos X="23" Y="257"/> <TopLine Value="142"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit33> <Unit34> <Filename Value="../../Documents/fpc/packages/fcl-image/src/fpimage.pp"/> <UnitName Value="FPimage"/> <CursorPos X="3" Y="58"/> <TopLine Value="43"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit34> <Unit35> <Filename Value="../../Documents/fpc/packages/fcl-image/src/fpimage.inc"/> <CursorPos X="24" Y="25"/> <TopLine Value="1"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit35> <Unit36> <Filename Value="../../Documents/lazarus/lcl/graphics.pp"/> <UnitName Value="Graphics"/> <CursorPos X="88" Y="2395"/> <TopLine Value="2388"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit36> <Unit37> <Filename Value="../../Units/MMLCore/client.pas"/> @@ -305,17 +305,17 @@ <CursorPos X="69" Y="8"/> <TopLine Value="1"/> <EditorIndex Value="4"/> - <UsageCount Value="141"/> + <UsageCount Value="156"/> <Loaded Value="True"/> </Unit37> <Unit38> <Filename Value="../../Units/MMLCore/mufasatypes.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="MufasaTypes"/> - <CursorPos X="37" Y="54"/> - <TopLine Value="37"/> + <CursorPos X="17" Y="40"/> + <TopLine Value="1"/> <EditorIndex Value="3"/> - <UsageCount Value="141"/> + <UsageCount Value="156"/> <Loaded Value="True"/> </Unit38> <Unit39> @@ -323,7 +323,7 @@ <UnitName Value="compFiles"/> <CursorPos X="18" Y="8"/> <TopLine Value="1"/> - <UsageCount Value="19"/> + <UsageCount Value="18"/> </Unit39> <Unit40> <Filename Value="../../Units/MMLCore/files.pas"/> @@ -331,16 +331,16 @@ <UnitName Value="files"/> <CursorPos X="15" Y="76"/> <TopLine Value="47"/> - <UsageCount Value="142"/> + <UsageCount Value="157"/> </Unit40> <Unit41> <Filename Value="../../Units/MMLCore/window.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="Window"/> - <CursorPos X="30" Y="458"/> - <TopLine Value="427"/> + <CursorPos X="3" Y="241"/> + <TopLine Value="233"/> <EditorIndex Value="7"/> - <UsageCount Value="141"/> + <UsageCount Value="156"/> <Loaded Value="True"/> </Unit41> <Unit42> @@ -348,37 +348,37 @@ <UnitName Value="Forms"/> <CursorPos X="15" Y="1236"/> <TopLine Value="981"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit42> <Unit43> <Filename Value="../../../cogat/Units/CogatUnits/comptypes.pas"/> <UnitName Value="CompTypes"/> <CursorPos X="35" Y="727"/> <TopLine Value="712"/> - <UsageCount Value="27"/> + <UsageCount Value="26"/> </Unit43> <Unit44> <Filename Value="../../Units/MMLCore/windowutil.pas"/> <UnitName Value="windowutil"/> <CursorPos X="86" Y="19"/> <TopLine Value="1"/> - <UsageCount Value="42"/> + <UsageCount Value="41"/> </Unit44> <Unit45> <Filename Value="../../Units/MMLCore/input.pas"/> <UnitName Value="Input"/> <CursorPos X="32" Y="251"/> <TopLine Value="220"/> - <UsageCount Value="22"/> + <UsageCount Value="21"/> </Unit45> <Unit46> <Filename Value="../../Units/MMLCore/finder.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="finder"/> - <CursorPos X="9" Y="83"/> - <TopLine Value="61"/> + <CursorPos X="22" Y="479"/> + <TopLine Value="461"/> <EditorIndex Value="1"/> - <UsageCount Value="134"/> + <UsageCount Value="149"/> <Loaded Value="True"/> </Unit46> <Unit47> @@ -386,7 +386,7 @@ <UnitName Value="Graphics"/> <CursorPos X="15" Y="1287"/> <TopLine Value="1272"/> - <UsageCount Value="14"/> + <UsageCount Value="13"/> </Unit47> <Unit48> <Filename Value="../../Units/MMLAddon/mmlthread.pas"/> @@ -394,22 +394,22 @@ <UnitName Value="MMLThread"/> <CursorPos X="10" Y="62"/> <TopLine Value="50"/> - <UsageCount Value="132"/> + <UsageCount Value="147"/> </Unit48> <Unit49> <Filename Value="../../../Documents/fpc/rtl/objpas/classes/classesh.inc"/> <CursorPos X="27" Y="1430"/> <TopLine Value="1422"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit49> <Unit50> <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="mmlpsthread"/> <CursorPos X="31" Y="135"/> - <TopLine Value="120"/> - <EditorIndex Value="10"/> - <UsageCount Value="130"/> + <TopLine Value="117"/> + <EditorIndex Value="9"/> + <UsageCount Value="145"/> <Loaded Value="True"/> </Unit50> <Unit51> @@ -417,132 +417,132 @@ <UnitName Value="uPSComponent"/> <CursorPos X="23" Y="510"/> <TopLine Value="504"/> - <UsageCount Value="21"/> + <UsageCount Value="20"/> </Unit51> <Unit52> <Filename Value="../../../FPC/FPCCheckout/rtl/objpas/classes/classesh.inc"/> <CursorPos X="12" Y="116"/> <TopLine Value="101"/> - <UsageCount Value="11"/> + <UsageCount Value="10"/> </Unit52> <Unit53> <Filename Value="../../../FPC/FPCCheckout/rtl/objpas/types.pp"/> <UnitName Value="types"/> <CursorPos X="1" Y="1"/> <TopLine Value="1"/> - <UsageCount Value="6"/> + <UsageCount Value="5"/> </Unit53> <Unit54> <Filename Value="../../../FPC/FPCCheckout/rtl/objpas/typinfo.pp"/> <UnitName Value="typinfo"/> <CursorPos X="1" Y="1"/> <TopLine Value="1"/> - <UsageCount Value="6"/> + <UsageCount Value="5"/> </Unit54> <Unit55> <Filename Value="../../Units/PascalScript/uPSC_forms.pas"/> <UnitName Value="uPSC_forms"/> <CursorPos X="1" Y="1"/> <TopLine Value="1"/> - <UsageCount Value="13"/> + <UsageCount Value="12"/> </Unit55> <Unit56> <Filename Value="project1.lrs"/> <CursorPos X="70" Y="41"/> <TopLine Value="11"/> - <UsageCount Value="22"/> + <UsageCount Value="21"/> </Unit56> <Unit57> <Filename Value="../../../lazarus/lcl/lresources.pp"/> <UnitName Value="LResources"/> <CursorPos X="3" Y="1396"/> <TopLine Value="1396"/> - <UsageCount Value="6"/> + <UsageCount Value="5"/> </Unit57> <Unit58> <Filename Value="../../../lazarus/components/synedit/synmemo.pas"/> <UnitName Value="SynMemo"/> <CursorPos X="19" Y="161"/> <TopLine Value="146"/> - <UsageCount Value="8"/> + <UsageCount Value="7"/> </Unit58> <Unit59> <Filename Value="../../../lazarus/components/synedit/syneditmiscclasses.pp"/> <UnitName Value="SynEditMiscClasses"/> <CursorPos X="29" Y="100"/> <TopLine Value="92"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit59> <Unit60> <Filename Value="../../../lazarus/components/synedit/synedit.pp"/> <UnitName Value="SynEdit"/> <CursorPos X="3" Y="4078"/> <TopLine Value="4064"/> - <UsageCount Value="8"/> + <UsageCount Value="7"/> </Unit60> <Unit61> <Filename Value="../../../lazarus/components/synedit/syngutterchanges.pas"/> <UnitName Value="SynGutterChanges"/> <CursorPos X="34" Y="126"/> <TopLine Value="118"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit61> <Unit62> <Filename Value="../../../lazarus/components/synedit/syneditlines.pas"/> <UnitName Value="SynEditLines"/> <CursorPos X="21" Y="48"/> <TopLine Value="40"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit62> <Unit63> <Filename Value="../../../lazarus/components/synedit/synedittextbase.pas"/> <UnitName Value="SynEditTextBase"/> <CursorPos X="3" Y="75"/> <TopLine Value="124"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit63> <Unit64> <Filename Value="../../Units/PascalScript/uPSC_std.pas"/> <UnitName Value="uPSC_std"/> <CursorPos X="35" Y="8"/> <TopLine Value="1"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit64> <Unit65> <Filename Value="../../Units/PascalScript/uPSC_controls.pas"/> <UnitName Value="uPSC_controls"/> <CursorPos X="1" Y="1"/> <TopLine Value="11"/> - <UsageCount Value="4"/> + <UsageCount Value="3"/> </Unit65> <Unit66> <Filename Value="../../Units/MMLAddon/PSInc/pscompile.inc"/> - <CursorPos X="37" Y="61"/> - <TopLine Value="51"/> - <EditorIndex Value="12"/> - <UsageCount Value="39"/> + <CursorPos X="42" Y="79"/> + <TopLine Value="31"/> + <EditorIndex Value="11"/> + <UsageCount Value="46"/> <Loaded Value="True"/> </Unit66> <Unit67> <Filename Value="../../../FPC/FPCCheckout/rtl/win/tthread.inc"/> <CursorPos X="15" Y="17"/> <TopLine Value="12"/> - <UsageCount Value="5"/> + <UsageCount Value="4"/> </Unit67> <Unit68> <Filename Value="../../../FPC/FPCCheckout/rtl/inc/objpash.inc"/> <CursorPos X="21" Y="184"/> <TopLine Value="169"/> - <UsageCount Value="16"/> + <UsageCount Value="15"/> </Unit68> <Unit69> <Filename Value="../../Units/MMLCore/bitmaps.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="bitmaps"/> - <CursorPos X="50" Y="83"/> - <TopLine Value="63"/> + <CursorPos X="86" Y="459"/> + <TopLine Value="1"/> <EditorIndex Value="5"/> - <UsageCount Value="120"/> + <UsageCount Value="135"/> <Loaded Value="True"/> </Unit69> <Unit70> @@ -550,146 +550,146 @@ <UnitName Value="FPCanvas"/> <CursorPos X="96" Y="409"/> <TopLine Value="188"/> - <UsageCount Value="6"/> + <UsageCount Value="5"/> </Unit70> <Unit71> <Filename Value="../../Units/MMLAddon/PSInc/Wrappers/colour.inc"/> <CursorPos X="86" Y="33"/> <TopLine Value="10"/> - <UsageCount Value="17"/> + <UsageCount Value="16"/> </Unit71> <Unit72> <Filename Value="../../Units/MMLAddon/PSInc/Wrappers/bitmap.inc"/> <IsPartOfProject Value="True"/> - <CursorPos X="32" Y="96"/> - <TopLine Value="75"/> - <EditorIndex Value="11"/> - <UsageCount Value="119"/> + <CursorPos X="27" Y="111"/> + <TopLine Value="76"/> + <EditorIndex Value="10"/> + <UsageCount Value="134"/> <Loaded Value="True"/> </Unit72> <Unit73> <Filename Value="../../../FPC/FPCCheckout/packages/fcl-image/src/fpcanvas.inc"/> <CursorPos X="16" Y="20"/> <TopLine Value="18"/> - <UsageCount Value="5"/> + <UsageCount Value="4"/> </Unit73> <Unit74> <Filename Value="../../../FPC/FPCCheckout/packages/fcl-image/examples/drawing.pp"/> <UnitName Value="Drawing"/> <CursorPos X="20" Y="19"/> <TopLine Value="1"/> - <UsageCount Value="5"/> + <UsageCount Value="4"/> </Unit74> <Unit75> <Filename Value="../../../FPC/FPCCheckout/packages/fcl-image/src/fpimgcanv.pp"/> <UnitName Value="FPImgCanv"/> <CursorPos X="32" Y="23"/> <TopLine Value="13"/> - <UsageCount Value="5"/> + <UsageCount Value="4"/> </Unit75> <Unit76> <Filename Value="../../../FPC/FPCCheckout/packages/fcl-image/src/fppixlcanv.pp"/> <UnitName Value="FPPixlCanv"/> <CursorPos X="3" Y="31"/> <TopLine Value="32"/> - <UsageCount Value="5"/> + <UsageCount Value="4"/> </Unit76> <Unit77> <Filename Value="../../../FPC/FPCCheckout/packages/fcl-image/src/fpimage.pp"/> <UnitName Value="FPimage"/> <CursorPos X="17" Y="129"/> <TopLine Value="112"/> - <UsageCount Value="10"/> + <UsageCount Value="9"/> </Unit77> <Unit78> <Filename Value="../../../FPC/FPCCheckout/packages/fcl-image/src/fpimage.inc"/> <CursorPos X="3" Y="44"/> <TopLine Value="40"/> - <UsageCount Value="10"/> + <UsageCount Value="9"/> </Unit78> <Unit79> <Filename Value="../../../lazarus/lcl/lclintf.pas"/> <UnitName Value="LCLIntf"/> <CursorPos X="1" Y="1"/> <TopLine Value="1"/> - <UsageCount Value="7"/> + <UsageCount Value="6"/> </Unit79> <Unit80> <Filename Value="../../../lazarus/lcl/intfgraphics.pas"/> <UnitName Value="IntfGraphics"/> <CursorPos X="84" Y="1334"/> <TopLine Value="1334"/> - <UsageCount Value="10"/> + <UsageCount Value="9"/> </Unit80> <Unit81> <Filename Value="../../../lazarus/lcl/graphtype.pp"/> <UnitName Value="GraphType"/> <CursorPos X="19" Y="634"/> <TopLine Value="630"/> - <UsageCount Value="11"/> + <UsageCount Value="10"/> </Unit81> <Unit82> <Filename Value="../../../FPC/FPCCheckout/packages/fcl-image/src/fpcolors.inc"/> <CursorPos X="24" Y="21"/> <TopLine Value="12"/> - <UsageCount Value="5"/> + <UsageCount Value="4"/> </Unit82> <Unit83> <Filename Value="../../../FPC/FPCCheckout/packages/fcl-image/src/fppalette.inc"/> <CursorPos X="3" Y="19"/> <TopLine Value="4"/> - <UsageCount Value="5"/> + <UsageCount Value="4"/> </Unit83> <Unit84> <Filename Value="../../../FPC/FPCCheckout/packages/fcl-image/src/fphandler.inc"/> <CursorPos X="18" Y="268"/> <TopLine Value="241"/> - <UsageCount Value="7"/> + <UsageCount Value="6"/> </Unit84> <Unit85> <Filename Value="../../../FPC/FPCCheckout/packages/fcl-image/src/fpwritebmp.pp"/> <UnitName Value="FPWriteBMP"/> <CursorPos X="28" Y="722"/> <TopLine Value="698"/> - <UsageCount Value="7"/> + <UsageCount Value="6"/> </Unit85> <Unit86> <Filename Value="../../../lazarus/lcl/include/rasterimage.inc"/> <CursorPos X="42" Y="594"/> <TopLine Value="573"/> - <UsageCount Value="8"/> + <UsageCount Value="7"/> </Unit86> <Unit87> <Filename Value="../../../lazarus/lcl/include/custombitmap.inc"/> <CursorPos X="3" Y="98"/> <TopLine Value="96"/> - <UsageCount Value="9"/> + <UsageCount Value="8"/> </Unit87> <Unit88> <Filename Value="../../../Compilertje/Units/CogatUnits/compmaths.pas"/> <UnitName Value="CompMaths"/> <CursorPos X="26" Y="43"/> <TopLine Value="14"/> - <UsageCount Value="6"/> + <UsageCount Value="5"/> </Unit88> <Unit89> <Filename Value="../../../FPC/FPCCheckout/rtl/objpas/math.pp"/> <UnitName Value="math"/> <CursorPos X="10" Y="314"/> <TopLine Value="299"/> - <UsageCount Value="9"/> + <UsageCount Value="8"/> </Unit89> <Unit90> <Filename Value="../../../FPC/FPCCheckout/rtl/inc/systemh.inc"/> <CursorPos X="5" Y="121"/> <TopLine Value="106"/> - <UsageCount Value="9"/> + <UsageCount Value="8"/> </Unit90> <Unit91> <Filename Value="../../../FPC/FPCCheckout/rtl/i386/fastmove.inc"/> <CursorPos X="44" Y="836"/> <TopLine Value="817"/> - <UsageCount Value="7"/> + <UsageCount Value="6"/> </Unit91> <Unit92> <Filename Value="../../Units/MMLCore/colour_conv.pas"/> @@ -698,7 +698,7 @@ <CursorPos X="20" Y="5"/> <TopLine Value="1"/> <EditorIndex Value="2"/> - <UsageCount Value="102"/> + <UsageCount Value="117"/> <Loaded Value="True"/> </Unit92> <Unit93> @@ -706,51 +706,51 @@ <UnitName Value="CompColors"/> <CursorPos X="10" Y="35"/> <TopLine Value="20"/> - <UsageCount Value="9"/> + <UsageCount Value="8"/> </Unit93> <Unit94> <Filename Value="../../Units/MMLAddon/PSInc/Wrappers/mouse.inc"/> <CursorPos X="1" Y="1"/> <TopLine Value="1"/> - <UsageCount Value="10"/> + <UsageCount Value="9"/> </Unit94> <Unit95> <Filename Value="../../Units/MMLAddon/PSInc/Wrappers/other.inc"/> <CursorPos X="1" Y="1"/> <TopLine Value="1"/> - <UsageCount Value="9"/> + <UsageCount Value="8"/> </Unit95> <Unit96> <Filename Value="../../Units/PascalScript/uPSCompiler.pas"/> <UnitName Value="uPSCompiler"/> <CursorPos X="3" Y="13143"/> <TopLine Value="13134"/> - <UsageCount Value="12"/> + <UsageCount Value="11"/> </Unit96> <Unit97> <Filename Value="../../Units/MMLCore/macro/ColorSame.inc"/> <CursorPos X="37" Y="5"/> <TopLine Value="1"/> - <UsageCount Value="7"/> + <UsageCount Value="6"/> </Unit97> <Unit98> <Filename Value="../../../Documents/fpc/rtl/inc/mathh.inc"/> <CursorPos X="19" Y="58"/> <TopLine Value="56"/> - <UsageCount Value="7"/> + <UsageCount Value="6"/> </Unit98> <Unit99> <Filename Value="../../../Documents/fpc/rtl/objpas/sysutils/sysutilh.inc"/> <CursorPos X="19" Y="72"/> <TopLine Value="57"/> - <UsageCount Value="7"/> + <UsageCount Value="6"/> </Unit99> <Unit100> <Filename Value="../../Units/PascalScript/uPSRuntime.pas"/> <UnitName Value="uPSRuntime"/> <CursorPos X="54" Y="1887"/> <TopLine Value="1875"/> - <UsageCount Value="7"/> + <UsageCount Value="6"/> </Unit100> <Unit101> <Filename Value="../../Units/MMLAddon/plugins.pas"/> @@ -758,93 +758,91 @@ <UnitName Value="plugins"/> <CursorPos X="86" Y="128"/> <TopLine Value="128"/> - <UsageCount Value="96"/> + <UsageCount Value="111"/> </Unit101> <Unit102> <Filename Value="../../../Compilertje/Units/CogatUnits/compfiles.pas"/> <UnitName Value="compFiles"/> <CursorPos X="19" Y="510"/> <TopLine Value="495"/> - <UsageCount Value="9"/> + <UsageCount Value="8"/> </Unit102> <Unit103> <Filename Value="../../../FPC/FPCCheckout/rtl/objpas/sysutils/filutilh.inc"/> <CursorPos X="3" Y="17"/> <TopLine Value="2"/> - <UsageCount Value="9"/> + <UsageCount Value="8"/> </Unit103> <Unit104> <Filename Value="../../../lazarus/lcl/fileutil.pas"/> <UnitName Value="FileUtil"/> <CursorPos X="10" Y="81"/> <TopLine Value="66"/> - <UsageCount Value="9"/> + <UsageCount Value="8"/> </Unit104> <Unit105> <Filename Value="../../../lazarus/lcl/include/fileutil.inc"/> <CursorPos X="35" Y="611"/> <TopLine Value="582"/> - <UsageCount Value="9"/> + <UsageCount Value="8"/> </Unit105> <Unit106> <Filename Value="../../Units/MMLAddon/PSInc/psdefines.inc"/> <CursorPos X="1" Y="1"/> <TopLine Value="1"/> - <UsageCount Value="13"/> + <UsageCount Value="12"/> </Unit106> <Unit107> <Filename Value="../../Units/PascalScript/x86.inc"/> <CursorPos X="41" Y="24"/> <TopLine Value="241"/> - <UsageCount Value="8"/> + <UsageCount Value="7"/> </Unit107> <Unit108> <Filename Value="../../../FPC/FPCCheckout/rtl/inc/mathh.inc"/> <CursorPos X="14" Y="71"/> <TopLine Value="56"/> - <UsageCount Value="8"/> + <UsageCount Value="7"/> </Unit108> <Unit109> <Filename Value="../../Units/MMLAddon/PSInc/Wrappers/math.inc"/> <CursorPos X="10" Y="1"/> <TopLine Value="1"/> - <UsageCount Value="8"/> + <UsageCount Value="7"/> </Unit109> <Unit110> <Filename Value="../../../lazarus/lcl/controls.pp"/> <UnitName Value="Controls"/> <CursorPos X="14" Y="1371"/> <TopLine Value="1356"/> - <UsageCount Value="8"/> + <UsageCount Value="7"/> </Unit110> <Unit111> <Filename Value="../../../lazarus/lcl/include/control.inc"/> <CursorPos X="28" Y="1022"/> <TopLine Value="1010"/> - <UsageCount Value="8"/> + <UsageCount Value="7"/> </Unit111> <Unit112> <Filename Value="../../../lazarus/lcl/stdctrls.pp"/> <UnitName Value="StdCtrls"/> <CursorPos X="3" Y="894"/> <TopLine Value="879"/> - <UsageCount Value="8"/> + <UsageCount Value="7"/> </Unit112> <Unit113> <Filename Value="../../../lazarus/lcl/menus.pp"/> <UnitName Value="Menus"/> <CursorPos X="50" Y="542"/> <TopLine Value="522"/> - <UsageCount Value="8"/> + <UsageCount Value="7"/> </Unit113> <Unit114> <Filename Value="../../../cogat/Units/CogatUnits/compdtm.pas"/> <UnitName Value="compDTM"/> <CursorPos X="9" Y="79"/> <TopLine Value="61"/> - <EditorIndex Value="9"/> - <UsageCount Value="28"/> - <Loaded Value="True"/> + <UsageCount Value="27"/> </Unit114> <Unit115> <Filename Value="../../Units/MMLCore/dtm.pas"/> @@ -853,7 +851,7 @@ <CursorPos X="39" Y="401"/> <TopLine Value="384"/> <EditorIndex Value="6"/> - <UsageCount Value="77"/> + <UsageCount Value="92"/> <Loaded Value="True"/> </Unit115> <Unit116> @@ -861,7 +859,7 @@ <UnitName Value="CompPicker"/> <CursorPos X="47" Y="240"/> <TopLine Value="213"/> - <UsageCount Value="10"/> + <UsageCount Value="9"/> </Unit116> <Unit117> <Filename Value="../../Units/MMLAddon/colourpicker.pas"/> @@ -869,8 +867,8 @@ <UnitName Value="colourpicker"/> <CursorPos X="53" Y="33"/> <TopLine Value="15"/> - <EditorIndex Value="13"/> - <UsageCount Value="73"/> + <EditorIndex Value="12"/> + <UsageCount Value="88"/> <Loaded Value="True"/> </Unit117> <Unit118> @@ -878,7 +876,7 @@ <UnitName Value="CompDragger"/> <CursorPos X="101" Y="26"/> <TopLine Value="26"/> - <UsageCount Value="16"/> + <UsageCount Value="15"/> </Unit118> <Unit119> <Filename Value="../../../cogat/mainform.pas"/> @@ -888,7 +886,7 @@ <UnitName Value="MainForm"/> <CursorPos X="29" Y="635"/> <TopLine Value="612"/> - <UsageCount Value="15"/> + <UsageCount Value="14"/> </Unit119> <Unit120> <Filename Value="../../Units/MMLAddon/windowselector.pas"/> @@ -896,33 +894,33 @@ <UnitName Value="windowselector"/> <CursorPos X="76" Y="83"/> <TopLine Value="65"/> - <UsageCount Value="63"/> + <UsageCount Value="78"/> </Unit120> <Unit121> - <Filename Value="../../../../../../usr/lib64/fpc/2.2.4/source/rtl/objpas/classes/classesh.inc"/> + <Filename Value="../../../usr/lib64/fpc/2.2.4/source/rtl/objpas/classes/classesh.inc"/> <CursorPos X="3" Y="319"/> <TopLine Value="319"/> - <UsageCount Value="10"/> + <UsageCount Value="9"/> </Unit121> <Unit122> <Filename Value="../../../lazarus/lcl/forms.pp"/> <UnitName Value="Forms"/> <CursorPos X="3" Y="357"/> <TopLine Value="338"/> - <UsageCount Value="9"/> + <UsageCount Value="8"/> </Unit122> <Unit123> - <Filename Value="../../../../../../usr/lib64/fpc/2.2.4/source/rtl/unix/cthreads.pp"/> + <Filename Value="../../../usr/lib64/fpc/2.2.4/source/rtl/unix/cthreads.pp"/> <UnitName Value="cthreads"/> <CursorPos X="28" Y="1077"/> <TopLine Value="1070"/> - <UsageCount Value="10"/> + <UsageCount Value="9"/> </Unit123> <Unit124> - <Filename Value="../../../../../../usr/lib64/fpc/2.2.4/source/rtl/inc/threadh.inc"/> + <Filename Value="../../../usr/lib64/fpc/2.2.4/source/rtl/inc/threadh.inc"/> <CursorPos X="58" Y="78"/> <TopLine Value="59"/> - <UsageCount Value="9"/> + <UsageCount Value="8"/> </Unit124> <Unit125> <Filename Value="../../Units/MMLCore/dtmutil.pas"/> @@ -931,7 +929,7 @@ <CursorPos X="1" Y="13"/> <TopLine Value="1"/> <EditorIndex Value="8"/> - <UsageCount Value="50"/> + <UsageCount Value="65"/> <Loaded Value="True"/> </Unit125> <Unit126> @@ -939,34 +937,34 @@ <UnitName Value="CompMaths"/> <CursorPos X="15" Y="640"/> <TopLine Value="636"/> - <UsageCount Value="10"/> + <UsageCount Value="9"/> </Unit126> <Unit127> <Filename Value="../../Units/MMLAddon/PSInc/Wrappers/dtm.inc"/> <CursorPos X="2" Y="23"/> <TopLine Value="6"/> - <UsageCount Value="23"/> + <UsageCount Value="22"/> </Unit127> <Unit128> - <Filename Value="../../../../Documents/lazarus/lcl/graphics.pp"/> + <Filename Value="../../../Documents/lazarus/lcl/graphics.pp"/> <UnitName Value="Graphics"/> <CursorPos X="3" Y="53"/> <TopLine Value="38"/> - <UsageCount Value="9"/> + <UsageCount Value="8"/> </Unit128> <Unit129> <Filename Value="../../../cogat/compscript.pas"/> <UnitName Value="CompScript"/> <CursorPos X="1" Y="529"/> <TopLine Value="508"/> - <UsageCount Value="13"/> + <UsageCount Value="12"/> </Unit129> <Unit130> - <Filename Value="../../../../Documents/fpc/rtl/objpas/math.pp"/> + <Filename Value="../../../Documents/fpc/rtl/objpas/math.pp"/> <UnitName Value="math"/> <CursorPos X="40" Y="34"/> <TopLine Value="19"/> - <UsageCount Value="9"/> + <UsageCount Value="8"/> </Unit130> <Unit131> <Filename Value="../../Units/MMLCore/mmath.pas"/> @@ -974,136 +972,136 @@ <UnitName Value="mmath"/> <CursorPos X="35" Y="45"/> <TopLine Value="14"/> - <UsageCount Value="30"/> + <UsageCount Value="45"/> </Unit131> <Unit132> - <Filename Value="../../../../Documents/fpc/rtl/objpas/types.pp"/> + <Filename Value="../../../Documents/fpc/rtl/objpas/types.pp"/> <UnitName Value="types"/> <CursorPos X="5" Y="75"/> <TopLine Value="60"/> - <UsageCount Value="9"/> + <UsageCount Value="8"/> </Unit132> </Units> <JumpHistory Count="30" HistoryIndex="29"> <Position1> - <Filename Value="../../Units/MMLCore/dtm.pas"/> - <Caret Line="8" Column="28" TopLine="1"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="72" Column="35" TopLine="26"/> </Position1> <Position2> - <Filename Value="../../Units/MMLCore/dtm.pas"/> - <Caret Line="676" Column="43" TopLine="661"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="515" Column="19" TopLine="464"/> </Position2> <Position3> - <Filename Value="../../Units/MMLCore/dtm.pas"/> - <Caret Line="675" Column="29" TopLine="651"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="11" Column="130" TopLine="1"/> </Position3> <Position4> - <Filename Value="../../Units/MMLCore/dtm.pas"/> - <Caret Line="251" Column="20" TopLine="232"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="10" Column="112" TopLine="1"/> </Position4> <Position5> - <Filename Value="../../Units/MMLCore/dtm.pas"/> - <Caret Line="236" Column="38" TopLine="217"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="8" Column="83" TopLine="1"/> </Position5> <Position6> - <Filename Value="../../Units/MMLCore/dtm.pas"/> - <Caret Line="643" Column="19" TopLine="630"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="36" Column="43" TopLine="2"/> </Position6> <Position7> - <Filename Value="../../Units/MMLCore/dtm.pas"/> - <Caret Line="700" Column="23" TopLine="685"/> + <Filename Value="../../Units/MMLCore/bitmaps.pas"/> + <Caret Line="57" Column="52" TopLine="16"/> </Position7> <Position8> - <Filename Value="../../Units/MMLCore/dtm.pas"/> - <Caret Line="233" Column="44" TopLine="217"/> + <Filename Value="../../Units/MMLCore/bitmaps.pas"/> + <Caret Line="78" Column="129" TopLine="68"/> </Position8> <Position9> - <Filename Value="../../Units/MMLCore/dtm.pas"/> - <Caret Line="687" Column="30" TopLine="675"/> + <Filename Value="../../Units/MMLCore/bitmaps.pas"/> + <Caret Line="270" Column="13" TopLine="242"/> </Position9> <Position10> - <Filename Value="../../Units/MMLCore/window.pas"/> - <Caret Line="28" Column="37" TopLine="11"/> + <Filename Value="../../Units/MMLCore/bitmaps.pas"/> + <Caret Line="4" Column="116" TopLine="1"/> </Position10> <Position11> - <Filename Value="project1.lpr"/> - <Caret Line="10" Column="71" TopLine="1"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="36" Column="43" TopLine="2"/> </Position11> <Position12> <Filename Value="../../Units/MMLCore/finder.pas"/> - <Caret Line="83" Column="9" TopLine="61"/> + <Caret Line="38" Column="90" TopLine="10"/> </Position12> <Position13> - <Filename Value="../../Units/MMLCore/client.pas"/> - <Caret Line="8" Column="69" TopLine="1"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="579" Column="25" TopLine="542"/> </Position13> <Position14> - <Filename Value="../../Units/MMLCore/bitmaps.pas"/> - <Caret Line="36" Column="33" TopLine="11"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="7" Column="132" TopLine="1"/> </Position14> <Position15> - <Filename Value="../../Units/MMLCore/bitmaps.pas"/> - <Caret Line="50" Column="20" TopLine="31"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="124" Column="19" TopLine="96"/> </Position15> <Position16> - <Filename Value="../../Units/MMLCore/bitmaps.pas"/> - <Caret Line="51" Column="61" TopLine="31"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="207" Column="19" TopLine="179"/> </Position16> <Position17> - <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> - <Caret Line="134" Column="22" TopLine="122"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="582" Column="53" TopLine="543"/> </Position17> <Position18> - <Filename Value="../../Units/MMLCore/bitmaps.pas"/> - <Caret Line="36" Column="33" TopLine="13"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="38" Column="53" TopLine="1"/> </Position18> <Position19> - <Filename Value="../../Units/MMLCore/bitmaps.pas"/> - <Caret Line="414" Column="18" TopLine="403"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="570" Column="127" TopLine="527"/> </Position19> <Position20> - <Filename Value="../../Units/MMLCore/bitmaps.pas"/> - <Caret Line="24" Column="28" TopLine="9"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="546" Column="51" TopLine="543"/> </Position20> <Position21> - <Filename Value="../../Units/MMLCore/bitmaps.pas"/> - <Caret Line="305" Column="16" TopLine="290"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="540" Column="32" TopLine="525"/> </Position21> <Position22> - <Filename Value="../../Units/MMLCore/bitmaps.pas"/> - <Caret Line="318" Column="18" TopLine="290"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="38" Column="68" TopLine="38"/> </Position22> <Position23> - <Filename Value="../../Units/MMLAddon/PSInc/Wrappers/bitmap.inc"/> - <Caret Line="98" Column="33" TopLine="70"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="540" Column="46" TopLine="525"/> </Position23> <Position24> - <Filename Value="../../Units/MMLCore/bitmaps.pas"/> - <Caret Line="50" Column="20" TopLine="35"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="38" Column="46" TopLine="38"/> </Position24> <Position25> - <Filename Value="../../Units/MMLCore/bitmaps.pas"/> - <Caret Line="51" Column="61" TopLine="35"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="10" Column="137" TopLine="1"/> </Position25> <Position26> - <Filename Value="../../Units/MMLCore/bitmaps.pas"/> - <Caret Line="408" Column="43" TopLine="393"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="124" Column="19" TopLine="96"/> </Position26> <Position27> - <Filename Value="../../Units/MMLCore/bitmaps.pas"/> - <Caret Line="21" Column="48" TopLine="1"/> + <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> + <Caret Line="135" Column="23" TopLine="120"/> </Position27> <Position28> - <Filename Value="../../Units/MMLCore/bitmaps.pas"/> - <Caret Line="50" Column="20" TopLine="35"/> + <Filename Value="../../Units/MMLAddon/PSInc/Wrappers/bitmap.inc"/> + <Caret Line="108" Column="19" TopLine="61"/> </Position28> <Position29> - <Filename Value="../../Units/MMLCore/bitmaps.pas"/> - <Caret Line="51" Column="61" TopLine="35"/> + <Filename Value="../../Units/MMLCore/finder.pas"/> + <Caret Line="36" Column="1" TopLine="1"/> </Position29> <Position30> - <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> - <Caret Line="50" Column="11" TopLine="31"/> + <Filename Value="../../Units/MMLAddon/PSInc/Wrappers/bitmap.inc"/> + <Caret Line="114" Column="27" TopLine="77"/> </Position30> </JumpHistory> </ProjectOptions> diff --git a/Projects/SAMufasaGUI/testunit.lfm b/Projects/SAMufasaGUI/testunit.lfm index ffb345f..012beb2 100644 --- a/Projects/SAMufasaGUI/testunit.lfm +++ b/Projects/SAMufasaGUI/testunit.lfm @@ -5,7 +5,7 @@ object Form1: TForm1 Width = 723 ActiveControl = SynEdit1 Caption = 'Mufasa v2' - ClientHeight = 528 + ClientHeight = 533 ClientWidth = 723 Menu = MainMenu1 OnCreate = FormCreate @@ -18,13 +18,14 @@ object Form1: TForm1 Top = 32 Width = 704 Align = alCustom - Font.Height = -10 + Font.Height = -13 Font.Name = 'Courier New' Font.Pitch = fpFixed Font.Quality = fqNonAntialiased ParentColor = False ParentFont = False TabOrder = 0 + BookMarkOptions.OnChange = nil Gutter.Width = 57 Gutter.MouseActions = < item @@ -710,19 +711,6 @@ object Form1: TForm1 end end end - object Memo1: TMemo - Left = 8 - Height = 120 - Top = 368 - Width = 704 - Font.Height = -8 - Lines.Strings = ( - 'Memo1' - ) - ParentFont = False - ScrollBars = ssAutoBoth - TabOrder = 1 - end object ToolBar1: TToolBar Left = 0 Height = 24 @@ -830,6 +818,14 @@ object Form1: TForm1 OnClick = ToTray end end + object Memo1: TMemo + Left = 13 + Height = 134 + Top = 370 + Width = 694 + ScrollBars = ssAutoBoth + TabOrder = 1 + end object SynFreePascalSyn1: TSynFreePascalSyn Enabled = False CompilerMode = pcmObjFPC diff --git a/Projects/SAMufasaGUI/testunit.lrs b/Projects/SAMufasaGUI/testunit.lrs index 0e173df..dec44f0 100644 --- a/Projects/SAMufasaGUI/testunit.lrs +++ b/Projects/SAMufasaGUI/testunit.lrs @@ -1,762 +1,764 @@ -LazarusResources.Add('TForm1','FORMDATA',[ - 'TPF0'#6'TForm1'#5'Form1'#4'Left'#3#152#1#6'Height'#3')'#2#3'Top'#3#207#0#5'W' - +'idth'#3#211#2#13'ActiveControl'#7#8'SynEdit1'#7'Caption'#6#9'Mufasa v2'#12 - +'ClientHeight'#3#16#2#11'ClientWidth'#3#211#2#4'Menu'#7#9'MainMenu1'#8'OnCre' - +'ate'#7#10'FormCreate'#9'OnDestroy'#7#11'FormDestroy'#8'Position'#7#14'poScr' - +'eenCenter'#10'LCLVersion'#6#6'0.9.29'#0#8'TSynEdit'#8'SynEdit1'#4'Left'#2#8 - +#6'Height'#3'H'#1#3'Top'#2' '#5'Width'#3#192#2#5'Align'#7#8'alCustom'#11'Fon' - +'t.Height'#2#246#9'Font.Name'#6#11'Courier New'#10'Font.Pitch'#7#7'fpFixed' - +#12'Font.Quality'#7#16'fqNonAntialiased'#11'ParentColor'#8#10'ParentFont'#8#8 - +'TabOrder'#2#0#12'Gutter.Width'#2'9'#19'Gutter.MouseActions'#14#1#5'Shift'#11 - +#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'Click' - +'Dir'#7#6'cdDown'#7'Command'#2#13#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2 - +#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#7'mbRight'#10'ClickCount' - +#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#12#9'MoveCaret'#8#6'Option' - +#2#0#8'Priority'#2#0#0#0#11'Highlighter'#7#17'SynFreePascalSyn1'#10'Keystrok' - +'es'#14#1#7'Command'#7#4'ecUp'#8'ShortCut'#2'&'#0#1#7'Command'#7#7'ecSelUp'#8 - +'ShortCut'#3'& '#0#1#7'Command'#7#10'ecScrollUp'#8'ShortCut'#3'&@'#0#1#7'Com' - +'mand'#7#6'ecDown'#8'ShortCut'#2'('#0#1#7'Command'#7#9'ecSelDown'#8'ShortCut' - +#3'( '#0#1#7'Command'#7#12'ecScrollDown'#8'ShortCut'#3'(@'#0#1#7'Command'#7#6 - +'ecLeft'#8'ShortCut'#2'%'#0#1#7'Command'#7#9'ecSelLeft'#8'ShortCut'#3'% '#0#1 - +#7'Command'#7#10'ecWordLeft'#8'ShortCut'#3'%@'#0#1#7'Command'#7#13'ecSelWord' - +'Left'#8'ShortCut'#3'%`'#0#1#7'Command'#7#7'ecRight'#8'ShortCut'#2''''#0#1#7 - +'Command'#7#10'ecSelRight'#8'ShortCut'#3''' '#0#1#7'Command'#7#11'ecWordRigh' - +'t'#8'ShortCut'#3'''@'#0#1#7'Command'#7#14'ecSelWordRight'#8'ShortCut'#3'''`' - +#0#1#7'Command'#7#10'ecPageDown'#8'ShortCut'#2'"'#0#1#7'Command'#7#13'ecSelP' - +'ageDown'#8'ShortCut'#3'" '#0#1#7'Command'#7#12'ecPageBottom'#8'ShortCut'#3 - +'"@'#0#1#7'Command'#7#15'ecSelPageBottom'#8'ShortCut'#3'"`'#0#1#7'Command'#7 - +#8'ecPageUp'#8'ShortCut'#2'!'#0#1#7'Command'#7#11'ecSelPageUp'#8'ShortCut'#3 - +'! '#0#1#7'Command'#7#9'ecPageTop'#8'ShortCut'#3'!@'#0#1#7'Command'#7#12'ecS' - +'elPageTop'#8'ShortCut'#3'!`'#0#1#7'Command'#7#11'ecLineStart'#8'ShortCut'#2 - +'$'#0#1#7'Command'#7#14'ecSelLineStart'#8'ShortCut'#3'$ '#0#1#7'Command'#7#11 - +'ecEditorTop'#8'ShortCut'#3'$@'#0#1#7'Command'#7#14'ecSelEditorTop'#8'ShortC' - +'ut'#3'$`'#0#1#7'Command'#7#9'ecLineEnd'#8'ShortCut'#2'#'#0#1#7'Command'#7#12 - +'ecSelLineEnd'#8'ShortCut'#3'# '#0#1#7'Command'#7#14'ecEditorBottom'#8'Short' - +'Cut'#3'#@'#0#1#7'Command'#7#17'ecSelEditorBottom'#8'ShortCut'#3'#`'#0#1#7'C' - +'ommand'#7#12'ecToggleMode'#8'ShortCut'#2'-'#0#1#7'Command'#7#6'ecCopy'#8'Sh' - +'ortCut'#3'-@'#0#1#7'Command'#7#7'ecPaste'#8'ShortCut'#3'- '#0#1#7'Command'#7 - +#12'ecDeleteChar'#8'ShortCut'#2'.'#0#1#7'Command'#7#5'ecCut'#8'ShortCut'#3'.' - +' '#0#1#7'Command'#7#16'ecDeleteLastChar'#8'ShortCut'#2#8#0#1#7'Command'#7#16 - +'ecDeleteLastChar'#8'ShortCut'#3#8' '#0#1#7'Command'#7#16'ecDeleteLastWord'#8 - +'ShortCut'#3#8'@'#0#1#7'Command'#7#6'ecUndo'#8'ShortCut'#4#8#128#0#0#0#1#7'C' - +'ommand'#7#6'ecRedo'#8'ShortCut'#4#8#160#0#0#0#1#7'Command'#7#11'ecLineBreak' - +#8'ShortCut'#2#13#0#1#7'Command'#7#11'ecSelectAll'#8'ShortCut'#3'A@'#0#1#7'C' - +'ommand'#7#6'ecCopy'#8'ShortCut'#3'C@'#0#1#7'Command'#7#13'ecBlockIndent'#8 - +'ShortCut'#3'I`'#0#1#7'Command'#7#11'ecLineBreak'#8'ShortCut'#3'M@'#0#1#7'Co' - +'mmand'#7#12'ecInsertLine'#8'ShortCut'#3'N@'#0#1#7'Command'#7#12'ecDeleteWor' - +'d'#8'ShortCut'#3'T@'#0#1#7'Command'#7#15'ecBlockUnindent'#8'ShortCut'#3'U`' - +#0#1#7'Command'#7#7'ecPaste'#8'ShortCut'#3'V@'#0#1#7'Command'#7#5'ecCut'#8'S' - +'hortCut'#3'X@'#0#1#7'Command'#7#12'ecDeleteLine'#8'ShortCut'#3'Y@'#0#1#7'Co' - +'mmand'#7#11'ecDeleteEOL'#8'ShortCut'#3'Y`'#0#1#7'Command'#7#6'ecUndo'#8'Sho' - +'rtCut'#3'Z@'#0#1#7'Command'#7#6'ecRedo'#8'ShortCut'#3'Z`'#0#1#7'Command'#7 - +#13'ecGotoMarker0'#8'ShortCut'#3'0@'#0#1#7'Command'#7#13'ecGotoMarker1'#8'Sh' - +'ortCut'#3'1@'#0#1#7'Command'#7#13'ecGotoMarker2'#8'ShortCut'#3'2@'#0#1#7'Co' - +'mmand'#7#13'ecGotoMarker3'#8'ShortCut'#3'3@'#0#1#7'Command'#7#13'ecGotoMark' - +'er4'#8'ShortCut'#3'4@'#0#1#7'Command'#7#13'ecGotoMarker5'#8'ShortCut'#3'5@' - +#0#1#7'Command'#7#13'ecGotoMarker6'#8'ShortCut'#3'6@'#0#1#7'Command'#7#13'ec' - +'GotoMarker7'#8'ShortCut'#3'7@'#0#1#7'Command'#7#13'ecGotoMarker8'#8'ShortCu' - +'t'#3'8@'#0#1#7'Command'#7#13'ecGotoMarker9'#8'ShortCut'#3'9@'#0#1#7'Command' - +#7#12'ecSetMarker0'#8'ShortCut'#3'0`'#0#1#7'Command'#7#12'ecSetMarker1'#8'Sh' - +'ortCut'#3'1`'#0#1#7'Command'#7#12'ecSetMarker2'#8'ShortCut'#3'2`'#0#1#7'Com' - +'mand'#7#12'ecSetMarker3'#8'ShortCut'#3'3`'#0#1#7'Command'#7#12'ecSetMarker4' - +#8'ShortCut'#3'4`'#0#1#7'Command'#7#12'ecSetMarker5'#8'ShortCut'#3'5`'#0#1#7 - +'Command'#7#12'ecSetMarker6'#8'ShortCut'#3'6`'#0#1#7'Command'#7#12'ecSetMark' - +'er7'#8'ShortCut'#3'7`'#0#1#7'Command'#7#12'ecSetMarker8'#8'ShortCut'#3'8`'#0 - +#1#7'Command'#7#12'ecSetMarker9'#8'ShortCut'#3'9`'#0#1#7'Command'#7#12'EcFol' - ,'dLevel1'#8'ShortCut'#4'1'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel2'#8'Short' - +'Cut'#4'2'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel1'#8'ShortCut'#4'3'#160#0#0 - +#0#1#7'Command'#7#12'EcFoldLevel1'#8'ShortCut'#4'4'#160#0#0#0#1#7'Command'#7 - +#12'EcFoldLevel1'#8'ShortCut'#4'5'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel6' - +#8'ShortCut'#4'6'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel7'#8'ShortCut'#4'7' - +#160#0#0#0#1#7'Command'#7#12'EcFoldLevel8'#8'ShortCut'#4'8'#160#0#0#0#1#7'Co' - +'mmand'#7#12'EcFoldLevel9'#8'ShortCut'#4'9'#160#0#0#0#1#7'Command'#7#12'EcFo' - +'ldLevel0'#8'ShortCut'#4'0'#160#0#0#0#1#7'Command'#7#13'EcFoldCurrent'#8'Sho' - +'rtCut'#4'-'#160#0#0#0#1#7'Command'#7#15'EcUnFoldCurrent'#8'ShortCut'#4'+' - +#160#0#0#0#1#7'Command'#7#18'EcToggleMarkupWord'#8'ShortCut'#4'M'#128#0#0#0#1 - +#7'Command'#7#14'ecNormalSelect'#8'ShortCut'#3'N`'#0#1#7'Command'#7#14'ecCol' - +'umnSelect'#8'ShortCut'#3'C`'#0#1#7'Command'#7#12'ecLineSelect'#8'ShortCut'#3 - +'L`'#0#1#7'Command'#7#5'ecTab'#8'ShortCut'#2#9#0#1#7'Command'#7#10'ecShiftTa' - +'b'#8'ShortCut'#3#9' '#0#1#7'Command'#7#14'ecMatchBracket'#8'ShortCut'#3'B`' - +#0#1#7'Command'#7#10'ecColSelUp'#8'ShortCut'#4'&'#160#0#0#0#1#7'Command'#7#12 - +'ecColSelDown'#8'ShortCut'#4'('#160#0#0#0#1#7'Command'#7#12'ecColSelLeft'#8 - +'ShortCut'#4'%'#160#0#0#0#1#7'Command'#7#13'ecColSelRight'#8'ShortCut'#4'''' - +#160#0#0#0#1#7'Command'#7#16'ecColSelPageDown'#8'ShortCut'#4'"'#160#0#0#0#1#7 - +'Command'#7#18'ecColSelPageBottom'#8'ShortCut'#4'"'#224#0#0#0#1#7'Command'#7 - +#14'ecColSelPageUp'#8'ShortCut'#4'!'#160#0#0#0#1#7'Command'#7#15'ecColSelPag' - +'eTop'#8'ShortCut'#4'!'#224#0#0#0#1#7'Command'#7#17'ecColSelLineStart'#8'Sho' - +'rtCut'#4'$'#160#0#0#0#1#7'Command'#7#15'ecColSelLineEnd'#8'ShortCut'#4'#' - +#160#0#0#0#1#7'Command'#7#17'ecColSelEditorTop'#8'ShortCut'#4'$'#224#0#0#0#1 - +#7'Command'#7#20'ecColSelEditorBottom'#8'ShortCut'#4'#'#224#0#0#0#0#12'Mouse' - +'Actions'#14#1#5'Shift'#11#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'Button' - +#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command' - +#2#1#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#7'ssShift' - +#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbLeft'#10'ClickCount' - +#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#1#9'MoveCaret'#9#6'Optio' - +'n'#2#1#8'Priority'#2#0#0#1#5'Shift'#11#5'ssAlt'#0#9'ShiftMask'#11#7'ssShift' - +#5'ssAlt'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7 - +#6'cdDown'#7'Command'#2#3#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5 - +'Shift'#11#7'ssShift'#5'ssAlt'#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'But' - +'ton'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Com' - +'mand'#2#3#9'MoveCaret'#9#6'Option'#2#1#8'Priority'#2#0#0#1#5'Shift'#11#0#9 - +'ShiftMask'#11#0#6'Button'#7#7'mbRight'#10'ClickCount'#7#8'ccSingle'#8'Click' - +'Dir'#7#4'cdUp'#7'Command'#2#12#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0 - +#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8 - +'ccDouble'#8'ClickDir'#7#6'cdDown'#7'Command'#2#6#9'MoveCaret'#9#6'Option'#2 - +#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft' - +#10'ClickCount'#7#8'ccTriple'#8'ClickDir'#7#6'cdDown'#7'Command'#2#7#9'MoveC' - +'aret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6 - +'Button'#7#6'mbLeft'#10'ClickCount'#7#6'ccQuad'#8'ClickDir'#7#6'cdDown'#7'Co' - +'mmand'#2#8#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9 - +'ShiftMask'#11#0#6'Button'#7#8'mbMiddle'#10'ClickCount'#7#8'ccSingle'#8'Clic' - +'kDir'#7#6'cdDown'#7'Command'#2#10#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2 - +#0#0#1#5'Shift'#11#6'ssCtrl'#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#6'ssCtrl' - +#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7 - +'Command'#2#11#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#15'MouseSelA' - +'ctions'#14#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'Click' - +'Count'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#9#9'MoveCaret'#8#6 - +'Option'#2#0#8'Priority'#2#0#0#0#13'Lines.Strings'#1#6#12'program new;'#6#5 - +'begin'#6#4'end.'#0#11'MaxLeftChar'#2'P'#10'ScrollBars'#7#10'ssAutoBoth'#21 - +'BracketHighlightStyle'#7#8'sbhsBoth'#0#18'TSynGutterPartList'#0#0#15'TSynGu' - +'tterMarks'#0#5'Width'#2#23#0#0#20'TSynGutterLineNumber'#0#5'Width'#2#17#12 - +'MouseActions'#14#0#21'MarkupInfo.Background'#7#9'clBtnFace'#21'MarkupInfo.F' - +'oreground'#7#6'clNone'#10'DigitCount'#2#2#30'ShowOnlyLineNumbersMultiplesOf' - +#2#1#9'ZeroStart'#8#12'LeadingZeros'#8#0#0#17'TSynGutterChanges'#0#5'Width'#2 - +#4#13'ModifiedColor'#4#252#233#0#0#10'SavedColor'#7#7'clGreen'#0#0#19'TSynGu' - +'tterSeparator'#0#5'Width'#2#2#0#0#21'TSynGutterCodeFolding'#0#12'MouseActio' - +'ns'#14#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#7'mbRight'#10'ClickCou' - +'nt'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#16#9'MoveCaret'#8#6'Op' - +'tion'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#7'ssShift'#0#6 - +'Button'#7#8'mbMiddle'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'C' - ,'ommand'#2#14#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#7 - +'ssShift'#0#9'ShiftMask'#11#7'ssShift'#0#6'Button'#7#8'mbMiddle'#10'ClickCou' - +'nt'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#14#9'MoveCaret'#8#6'Opt' - +'ion'#2#1#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6 - +'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#0#9 - +'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#21'MarkupInfo.Background'#7#6 - +'clNone'#21'MarkupInfo.Foreground'#7#6'clGray'#20'MouseActionsExpanded'#14#1 - +#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'cc' - +'Any'#8'ClickDir'#7#6'cdDown'#7'Command'#2#14#9'MoveCaret'#8#6'Option'#2#0#8 - +'Priority'#2#0#0#0#21'MouseActionsCollapsed'#14#1#5'Shift'#11#6'ssCtrl'#0#9 - +'ShiftMask'#11#6'ssCtrl'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8 - +'ClickDir'#7#6'cdDown'#7'Command'#2#15#9'MoveCaret'#8#6'Option'#2#0#8'Priori' - +'ty'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#6'ssCtrl'#0#6'Button'#7#6'mbLeft' - +#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#15#9'MoveCar' - +'et'#8#6'Option'#2#1#8'Priority'#2#0#0#0#0#0#0#0#5'TMemo'#5'Memo1'#4'Left'#2 - +#8#6'Height'#2'x'#3'Top'#3'p'#1#5'Width'#3#192#2#11'Font.Height'#2#248#13'Li' - +'nes.Strings'#1#6#5'Memo1'#0#10'ParentFont'#8#10'ScrollBars'#7#10'ssAutoBoth' - +#8'TabOrder'#2#1#0#0#8'TToolBar'#8'ToolBar1'#4'Left'#2#0#6'Height'#2#24#3'To' - +'p'#2#0#5'Width'#3#211#2#7'Caption'#6#8'ToolBar1'#6'Images'#7#17'Mufasa_Imag' - +'e_List'#8'TabOrder'#2#2#0#11'TToolButton'#6'TB_Run'#4'Left'#2#1#3'Top'#2#2#7 - +'Caption'#6#6'TB_Run'#10'ImageIndex'#2#0#7'OnClick'#7#12'Button1Click'#0#0#11 - +'TToolButton'#8'TB_Pause'#4'Left'#2#24#3'Top'#2#2#7'Caption'#6#11'ToolButton' - +'1'#7'Enabled'#8#10'ImageIndex'#2#1#0#0#11'TToolButton'#7'TB_Stop'#4'Left'#2 - +'/'#3'Top'#2#2#7'Caption'#6#11'ToolButton1'#7'Enabled'#8#10'ImageIndex'#2#2#0 - +#0#11'TToolButton'#11'ToolButton1'#4'Left'#2'F'#3'Top'#2#2#5'Width'#2#3#7'Ca' - +'ption'#6#11'ToolButton1'#5'Style'#7#10'tbsDivider'#0#0#11'TToolButton'#9'TB' - +'_NewTab'#4'Left'#2'I'#3'Top'#2#2#7'Caption'#6#9'TB_NewTab'#7'Enabled'#8#10 - +'ImageIndex'#2#3#0#0#11'TToolButton'#11'TB_CloseTab'#4'Left'#2'`'#3'Top'#2#2 - +#7'Caption'#6#11'TB_CloseTab'#7'Enabled'#8#10'ImageIndex'#2#4#0#0#11'TToolBu' - +'tton'#11'ToolButton4'#4'Left'#2'w'#3'Top'#2#2#5'Width'#2#3#7'Caption'#6#11 - +'ToolButton4'#5'Style'#7#10'tbsDivider'#0#0#11'TToolButton'#13'TB_ClearDebug' - +#4'Left'#2'z'#3'Top'#2#2#7'Caption'#6#13'TB_ClearDebug'#7'Enabled'#8#10'Imag' - +'eIndex'#2#5#0#0#11'TToolButton'#13'TB_PickColour'#4'Left'#3#145#0#3'Top'#2#2 - +#7'Caption'#6#13'TB_PickColour'#10'ImageIndex'#2#6#7'OnClick'#7#14'PickColor' - +'Event'#0#0#11'TToolButton'#15'TB_SelectClient'#4'Left'#3#168#0#3'Top'#2#2#7 - +'Caption'#6#15'TB_SelectClient'#10'ImageIndex'#2#7#11'OnMouseDown'#7#13'Sele' - +'ctor_DOWN'#0#0#11'TToolButton'#11'ToolButton8'#4'Left'#3#191#0#3'Top'#2#2#5 - +'Width'#2#3#7'Caption'#6#11'ToolButton8'#5'Style'#7#10'tbsDivider'#0#0#11'TT' - +'oolButton'#10'TB_Convert'#4'Left'#3#194#0#3'Top'#2#2#7'Caption'#6#10'TB_Con' - +'vert'#7'Enabled'#8#10'ImageIndex'#2#8#0#0#11'TToolButton'#16'TB_ReloadPlugi' - +'ns'#4'Left'#3#217#0#3'Top'#2#2#7'Caption'#6#16'TB_ReloadPlugins'#7'Enabled' - +#8#10'ImageIndex'#2#9#0#0#11'TToolButton'#7'TB_Tray'#4'Left'#3#240#0#3'Top'#2 - +#2#7'Caption'#6#7'TB_Tray'#10'ImageIndex'#2#10#7'OnClick'#7#6'ToTray'#0#0#0 - +#17'TSynFreePascalSyn'#17'SynFreePascalSyn1'#7'Enabled'#8#12'CompilerMode'#7 - +#9'pcmObjFPC'#14'NestedComments'#9#4'left'#3'0'#2#0#0#9'TMainMenu'#9'MainMen' - +'u1'#4'left'#3'`'#2#0#9'TMenuItem'#14'MenuItemScript'#7'Caption'#6#6'Script' - +#0#9'TMenuItem'#11'MenuItemRun'#7'Caption'#6#3'Run'#8'ShortCut'#2'x'#7'OnCli' - +'ck'#7#16'MenuItemRunClick'#0#0#0#0#10'TImageList'#17'Mufasa_Image_List'#4'l' - +'eft'#3#0#2#6'Bitmap'#10#14'4'#0#0'Li'#13#0#0#0#16#0#0#0#16#0#0#0's'#255#155 - +#255'{'#255#160#255#128#255#164#255#131#255#166#255#133#255#167#255#131#255 - +#166#255#127#255#163#255'y'#255#159#255'p'#255#152#255'd'#255#144#255'X'#255 - +#135#255'L'#255#127#255'?'#255'u'#255'1'#255'k'#255'"'#255'`'#255#21#255'W' - +#255's'#255#155#255'{'#255#160#255#127#255#163#255#130#255#165#255#132#255 - +#167#255#130#255#165#255'}'#255#162#255'u'#255#156#255'j'#255#148#255'^'#255 - +#139#255'P'#255#129#255'B'#255'w'#255'4'#255'm'#255'$'#255'b'#255#21#255'W' - +#255#7#255'M'#255'p'#255#152#255'w'#255#157#255'|'#255#161#255#127#255#163 - +#255#127#255#163#255'}'#255#162#255'x'#255#158#255'o'#255#152#255'b'#255#142 - +#255'T'#255#132#255'E'#255'z'#255'5'#255'n'#255'%'#255'c'#255#21#255'W'#255#5 - +#255'L'#255#0#247'F'#255'l'#255#150#255'r'#255#154#255'v'#255#157#255'y'#255 - +#159#255'y'#255#159#255'v'#255#157#255'p'#255#152#255'e'#255#144#255'X'#255 - +#135#255'H'#255'|'#255'7'#255'o'#255'&'#255'c'#255#21#255'W'#255#4#255'K'#255 - +#0#244'E'#255#0#230'A'#255'd'#255#144#255'j'#255#148#255'm'#255#150#255'p' - +#255#152#255'o'#255#152#255'l'#255#150#255'd'#255#144#255'Y'#255#136#255'J' - +#255'}'#255'9'#255'q'#255''''#255'd'#255#22#255'X'#255#4#255'K'#255#0#242'D' - ,#255#0#227'@'#255#0#214'<'#255'\'#255#138#255'`'#255#141#255'c'#255#143#255 - +'d'#255#144#255'c'#255#143#255'^'#255#139#255'V'#255#134#255'I'#255'|'#255':' - +#255'r'#255'('#255'e'#255#21#255'W'#255#2#255'I'#255#0#241'D'#255#0#224'?' - +#255#0#209';'#255#0#197'8'#255'Q'#255#130#255'S'#255#132#255'U'#255#133#255 - +'T'#255#132#255'R'#255#131#255'L'#255#127#255'C'#255'x'#255'5'#255'n'#255'%' - +#255'c'#255#17#255'T'#255#0#254'H'#255#0#236'C'#255#0#220'>'#255#0#204':'#255 - +#0#191'6'#255#0#180'3'#255'C'#255'x'#255'C'#255'x'#255'C'#255'x'#255'@'#255 - +'v'#255'<'#255's'#255'4'#255'm'#255'*'#255'f'#255#28#255'\'#255#10#255'O'#255 - +#0#247'F'#255#0#229'A'#255#0#212'<'#255#0#197'8'#255#0#182'3'#255#0#171'0' - +#255#0#163'.'#255'4'#255'm'#255'1'#255'k'#255'.'#255'i'#255')'#255'e'#255'"' - +#255'`'#255#25#255'Z'#255#13#255'Q'#255#0#254'H'#255#0#236'C'#255#0#218'>' - +#255#0#201'9'#255#0#185'4'#255#0#172'1'#255#0#161'-'#255#0#152'+'#255#0#146 - +')'#255'#'#255'a'#255#30#255'^'#255#24#255'Y'#255#16#255'S'#255#7#255'M'#255 - +#0#253'G'#255#0#239'C'#255#0#224'?'#255#0#206':'#255#0#189'5'#255#0#173'1' - +#255#0#160'-'#255#0#149'*'#255#0#140'('#255#0#134'&'#255#0#131'%'#255#19#255 - +'V'#255#12#255'Q'#255#3#255'J'#255#0#249'F'#255#0#238'C'#255#0#226'@'#255#0 - +#212'<'#255#0#195'7'#255#0#179'3'#255#0#162'.'#255#0#149'*'#255#0#137''''#255 - +#0#128'$'#255#0'z"'#255#0'w"'#255#0'v!'#255#4#255'K'#255#0#251'G'#255#0#239 - +'C'#255#0#227'@'#255#0#215'='#255#0#201'9'#255#0#186'5'#255#0#170'0'#255#0 - +#154'+'#255#0#140'('#255#0#128'$'#255#0'w"'#255#0'q '#255#0'l'#30#255#0'k'#30 - +#255#0'm'#31#255#0#246'E'#255#0#234'B'#255#0#221'>'#255#0#207':'#255#0#193'6' - +#255#0#179'3'#255#0#164'.'#255#0#148'*'#255#0#133'&'#255#0'x"'#255#0'n'#31 - +#255#0'h'#29#255#0'c'#28#255#0'b'#28#255#0'b'#28#255#0'f'#29#255#0#232'B'#255 - +#0#218'>'#255#0#203'9'#255#0#188'5'#255#0#173'1'#255#0#158'-'#255#0#143'(' - +#255#0#128'$'#255#0's '#255#0'h'#29#255#0'`'#27#255#0'['#26#255#0'Y'#25#255#0 - +'Y'#25#255#0'\'#26#255#0'b'#28#255#0#218'>'#255#0#203'9'#255#0#187'5'#255#0 - +#170'0'#255#0#155','#255#0#140'('#255#0'~$'#255#0'p '#255#0'd'#28#255#0'['#26 - +#255#0'T'#24#255#0'Q'#23#255#0'Q'#23#255#0'S'#23#255#0'X'#25#255#0'`'#27#255 - +#0#206':'#255#0#190'6'#255#0#173'1'#255#0#157','#255#0#141'('#255#0'~$'#255#0 - +'q '#255#0'd'#28#255#0'Y'#25#255#0'R'#23#255#0'M'#22#255#0'L'#21#255#0'M'#22 - +#255#0'Q'#23#255#0'X'#25#255#0'a'#27#255's'#211#255#255'{'#213#255#255#128 - +#215#255#255#131#216#255#255#133#216#255#255#132#216#255#255#129#215#255#255 - +'{'#213#255#255's'#211#255#255'h'#207#255#255'^'#204#255#255'R'#200#255#255 - +'E'#196#255#255'7'#191#255#255')'#187#255#255#27#183#255#255's'#211#255#255 - +'{'#213#255#255#127#214#255#255#131#216#255#255#132#216#255#255#130#215#255 - +#255#127#214#255#255'x'#212#255#255'n'#209#255#255'b'#205#255#255'U'#201#255 - +#255'H'#197#255#255':'#192#255#255'+'#188#255#255#28#183#255#255#13#178#255 - +#255'p'#210#255#255'w'#212#255#255'|'#213#255#255#127#214#255#255#128#215#255 - +#255'~'#214#255#255'y'#212#255#255'r'#210#255#255'g'#207#255#255'Y'#202#255 - +#255'K'#198#255#255'<'#193#255#255','#188#255#255#28#183#255#255#13#178#255 - +#255#0#173#253#255'l'#208#255#255'r'#210#255#255'v'#211#255#255'y'#212#255 - +#255'y'#212#255#255'w'#212#255#255'r'#210#255#255'i'#207#255#255'\'#203#255 - +#255'M'#198#255#255'='#193#255#255'-'#188#255#255#28#183#255#255#12#178#255 - +#255#0#171#251#255#0#161#236#255'd'#206#255#255'j'#208#255#255'm'#209#255#255 - +'p'#210#255#255'p'#210#255#255'm'#209#255#255'g'#207#255#255']'#204#255#255 - +'O'#199#255#255'?'#194#255#255'.'#189#255#255#28#183#255#255#12#178#255#255#0 - +#171#251#255#0#160#234#255#0#150#220#255'\'#203#255#255'`'#204#255#255'c'#205 - +#255#255'd'#206#255#255'c'#205#255#255'_'#204#255#255'X'#202#255#255'M'#198 - +#255#255'?'#194#255#255'.'#189#255#255#28#183#255#255#10#177#255#255#0#169 - +#248#255#0#158#232#255#0#147#216#255#0#139#203#255'Q'#200#255#255'S'#200#255 - +#255'U'#201#255#255'T'#201#255#255'R'#200#255#255'M'#198#255#255'E'#196#255 - +#255'9'#192#255#255')'#187#255#255#23#181#255#255#5#176#255#255#0#166#244#255 - +#0#155#227#255#0#145#212#255#0#134#197#255#0'~'#185#255'C'#195#255#255'C'#195 - +#255#255'C'#195#255#255'@'#194#255#255'<'#193#255#255'6'#191#255#255','#188 - +#255#255#31#184#255#255#15#179#255#255#0#173#253#255#0#160#235#255#0#149#218 - +#255#0#139#203#255#0#129#189#255#0'x'#176#255#0'q'#166#255'4'#191#255#255'1' - +#190#255#255'.'#189#255#255')'#187#255#255'#'#185#255#255#27#183#255#255#16 - +#179#255#255#1#174#255#255#0#164#241#255#0#153#224#255#0#141#206#255#0#130 - +#191#255#0'y'#178#255#0'q'#166#255#0'j'#155#255#0'e'#148#255'#'#185#255#255 - +#30#184#255#255#24#182#255#255#16#179#255#255#8#177#255#255#0#173#254#255#0 - +#165#242#255#0#155#227#255#0#143#210#255#0#132#194#255#0'y'#178#255#0'p'#164 - +#255#0'h'#153#255#0'b'#144#255#0']'#136#255#0'Y'#131#255#19#180#255#255#12 - +#178#255#255#3#175#255#255#0#170#249#255#0#163#239#255#0#155#227#255#0#145 - +#213#255#0#135#198#255#0'|'#182#255#0'q'#166#255#0'h'#152#255#0'`'#141#255#0 - ,'Z'#132#255#0'U}'#255#0'Rx'#255#0'Qv'#255#4#175#255#255#0#171#251#255#0#163 - +#239#255#0#155#227#255#0#147#215#255#0#138#202#255#0#128#188#255#0'v'#173#255 - +#0'k'#157#255#0'b'#143#255#0'Y'#131#255#0'Sy'#255#0'Ns'#255#0'Kn'#255#0'Ik' - +#255#0'Ik'#255#0#168#246#255#0#160#234#255#0#151#221#255#0#141#207#255#0#132 - +#194#255#0'z'#179#255#0'q'#165#255#0'f'#150#255#0']'#136#255#0'Sz'#255#0'Mq' - +#255#0'Hi'#255#0'Ee'#255#0'Cb'#255#0'Cb'#255#0'Dd'#255#0#158#232#255#0#149 - +#218#255#0#139#203#255#0#128#188#255#0'v'#173#255#0'l'#159#255#0'c'#145#255#0 - +'Y'#131#255#0'Pu'#255#0'Hj'#255#0'Ba'#255#0'?\'#255#0'=Y'#255#0'=Y'#255#0'=Z' - +#255#0'A_'#255#0#149#218#255#0#139#203#255#0#128#187#255#0'u'#171#255#0'j' - +#155#255#0'`'#141#255#0'W'#127#255#0'Mq'#255#0'Ee'#255#0'?\'#255#0';V'#255#0 - +'8R'#255#0'7P'#255#0'8R'#255#0';V'#255#0'?\'#255#0#141#206#255#0#130#190#255 - +#0'v'#173#255#0'k'#157#255#0'`'#141#255#0'W'#127#255#0'Mq'#255#0'Ee'#255#0'>' - +'['#255#0'9S'#255#0'5N'#255#0'4L'#255#0'5M'#255#0'6O'#255#0'9T'#255#0'?\'#255 - +'ss'#255#255'{{'#255#255#128#128#255#255#131#131#255#255#132#132#255#255#130 - +#130#255#255'~~'#255#255'ww'#255#255'mm'#255#255'aa'#255#255'UU'#255#255'HH' - +#255#255'::'#255#255'++'#255#255#29#29#255#255#16#16#255#240'ss'#255#255'{{' - +#255#255#127#127#255#255#130#130#255#255#131#131#255#255#129#129#255#255'||' - +#255#255'ss'#255#255'gg'#255#255'[['#255#255'LL'#255#255'=='#255#255'..'#255 - +#255#31#31#255#255#16#16#255#255#2#2#255#240'pp'#255#255'ww'#255#255'||'#255 - +#255#127#127#255#255#127#127#255#255'||'#255#255'vv'#255#255'mm'#255#255'__' - +#255#255'PP'#255#255'@@'#255#255'00'#255#255#31#31#255#255#15#15#255#255#0#0 - +#255#255#0#0#242#240'kk'#255#255'rr'#255#255'vv'#255#255'xx'#255#255'xx'#255 - +#255'uu'#255#255'mm'#255#255'bb'#255#255'TT'#255#255'CC'#255#255'22'#255#255 - +' '#255#255#15#15#255#255#0#0#254#255#0#0#239#255#0#0#226#240'dd'#255#255'j' - +'j'#255#255'mm'#255#255'nn'#255#255'mm'#255#255'jj'#255#255'aa'#255#255'UU' - +#255#255'FF'#255#255'44'#255#255'!!'#255#255#15#15#255#255#0#0#253#255#0#0 - +#236#255#0#0#221#255#0#0#209#240'[['#255#255'^^'#255#255'aa'#255#255'aa'#255 - +#255'``'#255#255'[['#255#255'RR'#255#255'DD'#255#255'33'#255#255' '#255#255 - +#13#13#255#255#0#0#251#255#0#0#233#255#0#0#217#255#0#0#203#255#0#0#192#240'N' - +'N'#255#255'PP'#255#255'QQ'#255#255'OO'#255#255'LL'#255#255'FF'#255#255'<<' - +#255#255'--'#255#255#28#28#255#255#8#8#255#255#0#0#245#255#0#0#227#255#0#0 - +#211#255#0#0#196#255#0#0#183#255#0#0#175#240'??'#255#255'>>'#255#255'=='#255 - +#255'::'#255#255'44'#255#255',,'#255#255' '#255#255#16#16#255#255#0#0#254 - +#255#0#0#236#255#0#0#218#255#0#0#201#255#0#0#186#255#0#0#173#255#0#0#164#255 - +#0#0#157#240'..'#255#255'++'#255#255'&&'#255#255' '#255#255#25#25#255#255#15 - +#15#255#255#1#1#255#255#0#0#242#255#0#0#224#255#0#0#205#255#0#0#188#255#0#0 - +#174#255#0#0#161#255#0#0#152#255#0#0#144#255#0#0#140#240#28#28#255#255#22#22 - +#255#255#15#15#255#255#7#7#255#255#0#0#253#255#0#0#241#255#0#0#227#255#0#0 - +#210#255#0#0#193#255#0#0#176#255#0#0#161#255#0#0#149#255#0#0#139#255#0#0#131 - +#255#0#0#127#255#0#0'~'#240#12#12#255#255#4#4#255#255#0#0#249#255#0#0#239#255 - +#0#0#227#255#0#0#213#255#0#0#198#255#0#0#182#255#0#0#164#255#0#0#149#255#0#0 - +#137#255#0#0#127#255#0#0'w'#255#0#0's'#255#0#0'q'#255#0#0's'#240#0#0#253#255 - +#0#0#242#255#0#0#229#255#0#0#216#255#0#0#203#255#0#0#188#255#0#0#173#255#0#0 - +#157#255#0#0#141#255#0#0#127#255#0#0't'#255#0#0'm'#255#0#0'h'#255#0#0'f'#255 - +#0#0'g'#255#0#0'k'#240#0#0#238#255#0#0#224#255#0#0#210#255#0#0#196#255#0#0 - +#181#255#0#0#166#255#0#0#150#255#0#0#135#255#0#0'y'#255#0#0'm'#255#0#0'e'#255 - +#0#0'_'#255#0#0'\'#255#0#0'\'#255#0#0'_'#255#0#0'f'#240#0#0#224#255#0#0#209 - +#255#0#0#193#255#0#0#177#255#0#0#161#255#0#0#146#255#0#0#131#255#0#0'u'#255#0 - +#0'h'#255#0#0'_'#255#0#0'X'#255#0#0'T'#255#0#0'T'#255#0#0'V'#255#0#0'['#255#0 - +#0'c'#240#0#0#211#255#0#0#194#255#0#0#178#255#0#0#161#255#0#0#145#255#0#0#130 - +#255#0#0't'#255#0#0'g'#255#0#0'\'#255#0#0'T'#255#0#0'P'#255#0#0'M'#255#0#0'O' - +#255#0#0'S'#255#0#0'Y'#255#0#0'c'#240#0#0#200#255#0#0#183#255#0#0#166#255#0#0 - +#149#255#0#0#134#255#0#0'w'#255#0#0'j'#255#0#0'_'#255#0#0'V'#255#0#0'P'#255#0 - +#0'M'#255#0#0'M'#255#0#0'O'#255#0#0'T'#255#0#0'\'#255#0#0'g'#240#255'3='#255 - +#255'3='#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255#255 - +'3='#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255#255'3=' - +#255#255'3='#255#255'3='#255#200#200#201#255#200#200#201#255#200#200#201#255 - +#200#200#201#255#200#200#201#255#200#200#201#255#200#200#201#255#200#200#201 - +#255#200#200#201#255#200#200#201#255#200#200#201#255#200#200#201#255#200#200 - +#201#255#200#200#201#255#200#200#201#255'kkk'#255#200#200#201#255#181#181#181 - +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 - +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 - +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255'kkk'#255#200#200 - +#201#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 - ,#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 - +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 - +#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181#255#181#181#181#255 - +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 - +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 - +#181#255#181#181#181#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181 - +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 - +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 - +#181#181#255#181#181#181#255#181#181#181#255'kkk'#255#200#200#201#255#181#181 - +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 - +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 - +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255'kkk'#255#200 - +#200#201#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 - +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 - +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 - +#181#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181#255#181#181#181 - +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 - +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 - +#181#181#255#181#181#181#255'kkk'#255#200#200#201#255#181#181#181#255#181#181 - +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 - +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 - +#181#181#181#255#181#181#181#255#181#181#181#255'kkk'#255#200#200#201#255#181 - +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 - +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 - +#255#181#181#181#255'"'#180#0#255#181#181#181#255#181#181#181#255'kkk'#255 - +#200#200#201#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 - +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 - +#181#255#181#181#181#255#181#181#181#255'"'#180#0#255#181#181#181#255#181#181 - +#181#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181#255#181#181#181 - +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 - +#181#255#181#181#181#255'"'#180#0#255'"'#180#0#255'"'#180#0#255'"'#180#0#255 - +'"'#180#0#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181#255#181 - +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 - +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255'"'#180#0#255 - +#181#181#181#255#181#181#181#255'kkk'#255#200#200#201#255#181#181#181#255#181 - +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 - +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 - +#255'"'#180#0#255#181#181#181#255#181#181#181#255'kkk'#255#200#200#201#255'k' - +'kk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk' - +#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255#255'3='#255#255'3' - +'='#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255#255'3=' - +#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255 - +#255'3='#255#255'3='#255#200#200#201#255#200#200#201#255#200#200#201#255#200 - +#200#201#255#200#200#201#255#200#200#201#255#200#200#201#255#200#200#201#255 - +#200#200#201#255#200#200#201#255#200#200#201#255#200#200#201#255#200#200#201 - +#255#200#200#201#255#200#200#201#255'kkk'#255#200#200#201#255#181#181#181#255 - +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 - +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 - +#181#255#181#181#181#255#181#181#181#255#181#181#181#255'kkk'#255#200#200#201 - +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 - +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 - +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 - +'kkk'#255#200#200#201#255#181#181#181#255#181#181#181#255#181#181#181#255#181 - +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 - +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 - +#255#181#181#181#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181#255 - +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 - +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 - +#181#255#181#181#181#255#181#181#181#255'kkk'#255#200#200#201#255#181#181#181 - +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 - +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 - +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255'kkk'#255#200#200 - +#201#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 - +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 - ,#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 - +#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181#255#181#181#181#255 - +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 - +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 - +#181#255#181#181#181#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181 - +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 - +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 - +#181#181#255#181#181#181#255#181#181#181#255'kkk'#255#200#200#201#255#181#181 - +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 - +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#0#0#208#255#181 - +#181#181#255#181#181#181#255#181#181#181#255#0#0#208#255'kkk'#255#200#200#201 - +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 - +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 - +#181#181#255#0#0#208#255#181#181#181#255#0#0#208#255#181#181#181#255'kkk'#255 - +#200#200#201#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 - +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 - +#181#255#181#181#181#255#181#181#181#255#0#0#208#255#181#181#181#255#181#181 - +#181#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181#255#181#181#181 - +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 - +#181#255#181#181#181#255#181#181#181#255#0#0#208#255#181#181#181#255#0#0#208 - +#255#181#181#181#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181#255 - +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 - +#255#181#181#181#255#181#181#181#255#0#0#208#255#181#181#181#255#181#181#181 - +#255#181#181#181#255#0#0#208#255'kkk'#255#200#200#201#255'kkk'#255'kkk'#255 - +'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk' - +#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#203#207#210'+'#207#210#212#255#177#178#178#255#163#162#162#255#159 - +#159#159#255#156#156#156#255#148#148#148#255#146#146#146#255#152#152#152#255 - +#137#137#137#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#208#213#214'+'#201 - +#205#208#218#163#164#164#255#207#207#207#255#209#209#209#255#208#208#208#255 - +#209#209#209#255#206#206#206#255#213#213#213#255#201#201#201#255'kkk'#255#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#210#215#217'8'#199#204#205#199#170#171#171#255 - +#192#192#191#255#218#218#218#255#224#224#224#255#226#226#226#255#228#228#228 - +#255#233#233#233#255#208#208#208#255#128#128#128#255'YYY'#255#0#0#0#0#0#0#0#0 - +#0#0#0#0#215#220#222'<'#200#203#205#193#178#179#180#255#186#186#186#255#220 - +#220#220#255#212#212#212#255#215#215#215#255#218#218#218#255#218#218#218#255 - +#230#230#230#255#177#177#177#255'OOO'#255'OOO'#255#0#0#0#0#0#0#0#0#213#219 - +#220'3'#206#210#212#198#180#181#183#255#184#184#183#255#230#230#230#255#205 - +#205#205#255#206#206#206#255#210#210#210#255#212#212#212#255#214#214#214#255 - +#186#186#186#255#137#137#137#255'XXX'#255'BBB'#255#206#211#213#21#202#206#208 - +'#'#215#219#222#209#178#179#180#255#187#186#186#255#236#236#236#255#213#213 - +#213#255#202#202#202#255#200#200#200#255#203#203#203#255#200#200#200#255#186 - +#186#186#255'~~~'#255'MMM'#255'MMM'#255'BCC'#251#214#219#221#154#223#228#231 - +#243#170#172#172#255#192#192#192#255#234#234#234#255#220#220#220#255#211#211 - +#211#255#200#200#200#255#193#193#193#255#191#191#191#255#189#189#189#255#127 - +#127#127#255'QQQ'#255'EED'#255'>>?'#251'ILM'#226#208#212#216#154#167#168#169 - +#247#199#199#199#255#230#230#230#255#227#227#227#255#218#218#218#255#211#211 - +#211#255#198#198#198#255#180#180#180#255#185#185#185#255'|||'#255'TTT'#255'C' - +'CC'#255'((('#236#12#12#12#184'RUW'#216#178#180#181#229#132#132#132#253#190 - +#189#189#255#220#220#220#255#203#203#203#255#197#197#197#255#181#181#181#255 - +#166#166#166#255#170#170#170#255'vvv'#255'SSS'#255'JJJ'#255'<<<'#255'''''''' - +#237#0#0#0#139'*,-w'#136#135#135#255#157#157#157#255#188#189#189#255#193#193 - +#193#255#175#175#175#255#161#161#161#255#148#148#148#255#134#134#134#255'ccc' - +#255'III'#255'<<<'#255'777'#255'+++'#244#20#20#20#197#0#0#0'm'#0#0#0'.ooo' - +#255#193#193#193#255#192#192#192#255#168#168#168#255#153#153#153#255#140#140 - +#140#255#132#132#132#255'rrr'#255'111'#255'333'#255'$$$'#239#30#30#30#228#19 - +#19#19#195#0#0#0#131#0#0#0'E'#0#0#0#19'kkk'#255#144#144#144#255#140#140#140 - +#255'|||'#255'ooo'#255'fff'#255'```'#255'VVV'#255'333'#255'/00'#253#14#14#14 - +#191#0#0#0#139#0#0#0'h'#0#0#0'B'#0#0#0#25#0#0#0#4'ooo'#255'QQQ'#255'CCC'#255 - +'<<<'#255'555'#255'111'#255'...'#255',,,'#255'333'#255';=>'#236#22#23#23#166 - +#0#0#0'R'#0#0#0'"'#0#0#0#15#0#0#0#4#0#0#0#0#0#0#0'#'#0#0#0'k'#0#0#0#143#0#0#0 - ,#143#0#0#0#143#0#0#0#143#0#0#0#143#0#0#0#143#0#0#0#143#0#0#0#136#0#0#0'c'#0#0 - +#0'('#0#0#0#6#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#11#0#0#0'#'#0#0#0'/'#0#0#0'/'#0#0 - +#0'/'#0#0#0'/'#0#0#0'/'#0#0#0'/'#0#0#0'/'#0#0#0','#0#0#0#31#0#0#0#12#0#0#0#1 - +#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'fff'#255#255#255#255 - +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#155#155#155#255#129#129#129#255'OOO'#255#16#16#16#255 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#157#157#157#255#140#140#140#255']]]'#255#18#18#18#255#0#0#0#255#0#0#0 - +#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#148#148#148#255#136 - +#136#136#255'^^^'#255#14#14#14#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#127#127#128#255'UUU'#255#1#1#1#255 - +#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#160#160#160#255#170#170#170#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 - +#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#161#161#161#255#170 - +#170#170#255#195#195#195#255'CCC'#255#0#0#0#255#0#0#0#255#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#163#163#163#255#171#171#171#255#199#199 - +#199#255'FFF'#255#17#17#17#255#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#166#166#166#255#174#174#175#255#205#205#205#255'LLM'#255 - +#17#17#17#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#172#172#172#255#180#180#180#255#208#208#208#255'RRR'#255#19#19#19#255#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#177#177#177 - +#255#190#190#190#255#214#214#214#255'ccd'#255#28#28#28#255#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#155#225#251#255#166#166#166#255#189#189 - +#189#255#218#218#218#255'rrs'#255'"""'#255#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0'y'#214#249#255'~~~'#255#154#154#154#255'w' - +'wx'#255'$$$'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0'P'#202#247#255'JJJ'#255'888'#255'((('#255#18'J_'#255#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#0#172#236#255#0#140#192#255#27'm'#140#255#19'Nd'#255#14':J'#255#255#255#255 - +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0'~'#173 - +#255#0'Xy'#255#20'>M'#255#16'2>'#255#16'2>'#255#18'6D'#255#30'[q'#255'*'#128 - +#159#255#18#146#194#255#20#167#222#255#0#170#232#255#0#168#230#255#0#157#215 - +#255#0#145#198#255#0'~'#173#255#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0'777'#8#29#29#29#255#13#13#13#173#255#255#255#0#255#255#255#0#14#14 - +#14#173' '#255':::'#2#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 - +#0#255#255#255#0#255#255#255#0#255#255#255#0'$$$R'#2#2#2#215#0#0#0#255#0#0#0 - +#223#255#255#255#0#255#255#255#0#0#0#0#223#0#0#0#255#3#3#3#211',,,F'#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#18#18#18#151#0 - +#0#0#223#0#0#0#255#0#0#0#255#0#0#0#223#255#255#255#0#255#255#255#0#0#0#0#223 - +#0#0#0#255#0#0#0#255#0#0#0#223#28#28#28#139#255#255#255#0#255#255#255#0#255 - +#255#255#0#28#28#28'p'#0#0#0#223#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#223#255 - +#255#255#0#255#255#255#0#0#0#0#223#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#223'0' - +'00b'#255#255#255#0'666'#14#1#1#1#221#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 - +#0#0#0#223#0#0#0#223#0#0#0#223#0#0#0#223#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 - +#255#3#3#3#217'ccc'#2#29#29#29#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 - +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 - +#255#0#0#0#255#0#0#0#255'EEE'#255#10#10#10#185#0#0#0#223#0#0#0#223#0#0#0#223 - ,#0#0#0#223#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 - +#223#0#0#0#223#0#0#0#223#0#0#0#223'###'#169#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#0#0#0#223#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 - +#0#0#255#0#0#0#255#0#0#0#223#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#223 - +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#223#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#10#10#10#187#0#0#0#223#0 - +#0#0#223#0#0#0#223#0#0#0#223#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 - +#255#0#0#0#255#0#0#0#223#0#0#0#223#0#0#0#223#0#0#0#223'+++'#169' '#255#0#0 - +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 - +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'bbb'#255'>>>'#14 - +#1#1#1#221#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#223#0#0#0#223#0#0#0 - +#223#0#0#0#223#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#5#5#5#217#172#172#172 - +#2#255#255#255#0'%%%t'#0#0#0#223#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#223#255 - +#255#255#0#255#255#255#0#0#0#0#223#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#223'i' - +'iid'#255#255#255#0#255#255#255#0#255#255#255#0#29#29#29#155#0#0#0#223#0#0#0 - +#255#0#0#0#255#0#0#0#223#255#255#255#0#255#255#255#0#0#0#0#223#0#0#0#255#0#0 - +#0#255#0#0#0#223'LLL'#139#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0'HHHR'#6#6#6#215#0#0#0#255#0#0#0#223#255#255#255#0#255 - +#255#255#0#0#0#0#223#0#0#0#255#11#11#11#211#139#139#139'F'#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#129#129#129#8'NNN'#255'%%%'#175#255#255#255#0#255#255#255#0',,,'#173 - +'ddd'#255#190#190#190#2#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 - +#0#0#0#0#0#0#0#0#0#225#238#225#255#197#220#197#255#219#233#219#255#244#249 - +#244#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#174#213#176#255#214#248#225#255#207#250#221#255 - +#181#248#204#255'x'#216#145#255'@'#139'@'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#202#225#202#255#197 - +#247#213#255#156#244#185#255'}'#228#159#255#10'Y'#12#255#0#0#0#191#0#0#0#0 - +#195#196#237#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#149 - +#196#149#255#187#243#206#255#157#240#186#255'k'#212#142#255'N'#154'h'#255#10 - +'D'#10#255#0#0#0#191#0#0#0#0#221#221#246#255'RW'#199#255#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#132#195#132#255#134#227#165#255'l'#224#146#255'K'#170'k' - +#255#1'/'#1#255'*Y:'#255'6U6'#255#0#0#0#191#0#0#0#0#0#0#0#0#177#180#234#255 - +'=F'#197#255#0#0#0#0#0#0#0#0#0#0#0#0#232#243#232#255#136#221#159#255'D'#207 - +'r'#255'&'#142'I'#255'4;4'#255'1:1'#255'!>+'#255'[r['#255#0#0#0#191#0#0#0#0#0 - +#0#0#0#224#225#247#255'!6'#211#255#130#132#185#255#0#0#0#0#0#0#0#0'a'#177'a' - +#255'7'#198'^'#255'$'#153'J'#255'0I0'#255#0#0#0#191#0#0#0#191#9'@'#9#255#0#0 - +#0#191#0#0#0#191#0#0#0#0#0#0#0#0#151#157#232#255#0#25#192#255#21#25'g'#255#0 - +#0#0#0#0#0#0#0#27#142#27#255#22#139'.'#255';^;'#255#0#0#0#191#0#0#0#191#0#0#0 - +#0#0#0#0#0'x'#135#241#255#0#0#0#0#0#0#0#0#185#191#246#255#0','#241#255#0#20 - +'}'#255#17#20'4'#255#0#0#0#0#0#0#0#0'd'#140'd'#255#21'W"'#255'?D?'#255#0#0#0 - +#191#0#0#0#0#0#0#0#0#194#201#249#255#161#189#254#255#235#237#253#255#233#235 - +#253#255'3d'#254#255#2' '#147#255#0#11'<'#255'99?'#255#0#0#0#0#0#0#0#0#0#0#0 - +#0#2'.'#3#255'$5$'#255#0#0#0#191#0#0#0#0#0#0#0#0#133#151#250#255#142#182#255 - +#255'hz'#238#255'p'#155#251#255#17'5'#156#255#3#18'A'#255#6#10'3'#255#0#0#0 - +#191#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#2''''#2#255'DLD'#255#0#0#0#0#0#0#0#0#16 - +'2'#251#255'r'#178#255#255'c'#161#245#255'6\'#154#255#19'"A'#255#5#11'7'#255 - +#0#0#0#191#0#0#0#191#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'=Q='#255#0#0#0 - +#191#0#0#0#0#9'2'#181#255'S~'#161#255'5Rq'#255#26'+A'#255#23#28';'#255#0#0#0 - +#191#0#0#0#191#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#191#0#0#0#0#23'$e'#255#30'/A'#255'(6A'#255#30'/A'#255#20'$A'#255#1#9'7'#255 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#191'::@'#255'%(='#255#6#13'8'#255'%(='#255#0#0#0#191#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'ggj'#255']]a'#255 - +'WW['#255'SSW'#255'LLP'#255#0#0#0'#'#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'YY\'#255#192#192#198#246#196 - ,#196#202#255#175#175#180#217'CCG'#255#0#0#0'_'#255#255#255#0#0#0#0#0#0#0#0#0 - +#0#0#0#0'@@'#255#255'::'#255#255'::'#255#255'=='#255#255#0#0#0'#'#0#0#0#11'M' - +'MP'#255#191#191#197#246#194#194#200#255#182#182#188#206'AAD'#255#0#0#0'k' - +#255#255#255#0#0#0#0#0#0#0#0#0''''''#255#255#17#17#255#255#11#11#255#255#24 - +#24#255#255'++'#255#255'00'#255#255#0#0#0';FFJ'#255#189#189#195#246#192#192 - +#198#255#190#190#196#195'BBF'#255#0#0#0'_'#255#255#255#0#0#0#0#0'%%'#255#255 - +#0#0#251#255#0#0#0'w'#0#0#0#143#0#0#0#143#26#26#255#255'!!'#255#255#13#13#255 - +#255'CCG'#255#187#187#193#246#187#187#193#255#184#184#189#195'EEI'#255#0#0#0 - +'_'#255#255#255#0'11'#255#255#10#10#255#255#0#0#0'w'#0#0#0'w'#0#0#0'G'#0#0#0 - +'/'#24#24#255#255#21#21#255#255#0#0#252#255'@@D'#255#181#181#187#248#182#182 - +#188#255#178#178#183#195'EEI'#255#0#0#0'_'#255#255#255#0'##'#255#255#0#0#251 - +#255#0#0#0#143#0#0#0'G'#0#0#0#11#0#0#0#0'""'#255#255#15#15#255#255#0#0#239 - +#255'==@'#255#153#153#158#227#169#169#174#213#173#173#179#156'AAE'#255#0#0#0 - +'_'#255#255#255#0#26#26#255#255#0#0#249#255#0#0#0#143#0#0#0'/'#0#0#0#0#0#0#0 - +#0'00'#255#255#16#16#255#255#0#0#234#255'<<?'#255'==A'#255'@@D'#255'??B'#255 - +'::>'#255#0#0#0'k'#255#255#255#0#23#23#255#255#0#0#253#255#0#0#0#143#0#0#0'/' - +#0#0#0#0#0#0#0#0'99'#255#255#22#22#255#255#0#0#241#255#0#0#0#179#0#0#0#143#0 - +#0#0'k'#0#0#0'_'#0#0#0'k'#0#0#0'_'#255#255#255#0#19#19#255#255#0#0#250#255#0 - +#0#0#143#24#24#255#255'::'#255#255#0#0#0'#77'#255#255#25#25#255#255#0#0#248 - +#255#0#0#0#155#0#0#209#255#0#0#197#255#0#0#0'S'#0#0#0';'#0#0#0'#'#255#255#255 - +#0#4#4#255#255#0#0#233#255#0#0#0#143#0#0#0'G'#31#31#255#255',,'#255#255'""' - +#255#255#10#10#255#255#0#0#237#255#0#0#209#255#0#0#189#255#0#0#0'k'#0#0#0'S' - +#0#0#0#23#0#0#0#0#255#255#255#0#0#0#237#255#0#0#208#255#0#0#0#143#0#0#0';'#0 - +#0#249#255#3#3#255#255#0#0#252#255#0#0#230#255#0#0#200#255#0#0#173#255#0#0 - +#162#255#0#0#0#143#0#0#0'G'#0#0#0#11#0#0#0#0#255#255#255#0#0#0#216#255#0#0 - +#191#255#0#0#0#143#0#0#0'/'#0#0#0'#'#0#0#222#255#0#0#209#255#0#0#185#255#0#0 - +#158#255#0#0#140#255#0#0#0#179#0#0#0'w'#0#0#0'#'#0#0#0#0#0#0#0#0#255#255#255 - +#0#0#0#0'#'#0#0#0'k'#0#0#0'k'#0#0#0'#'#0#0#0#11#0#0#0';'#0#0#184#255#0#0#156 - +#255#0#0#135#255#0#0#0#179#0#0#0#131#0#0#0';'#0#0#0#11#0#0#0#0#0#0#0#0#255 - +#255#255#0#0#0#0#11#0#0#0'#'#0#0#0'#'#0#0#0#11#0#0#0#0#0#0#0#11#0#0#0';'#0#0 - +#159#255#0#0#0#167#0#0#0#131#0#0#0';'#0#0#0#11#0#0#0#0#0#0#0#0#0#0#0#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#11#0#0#0'#'#0#0#0'/'#0#0#0 - +'/'#0#0#0'/'#0#0#0'/'#0#0#0'#'#0#0#0#11#255#255#255#0#255#255#255#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#11#0#0#0'#'#0#0#0'G'#138#211#255#255'_'#195#255 - +#255'('#174#255#255#0#159#255#255#0#136#218#255#0'w'#191#255#0#0#0#23#255#255 - +#255#0#255#255#255#0#0#0#0#11#0#0#0'#'#0#0#0'/'#0#0#0'/'#0#0#0'Gs'#202#255 - +#255'g'#198#255#255'Q'#189#255#255#0#0#0'k'#0#0#0';'#0#0#0'/'#0#0#0'/'#0#0#0 - +'#'#0#0#0#11#255#255#255#0#255#255#255#0#0#0#0#23'('#174#255#255#28#170#255 - +#255#19#166#255#255#12#164#255#255#0#159#255#255#0#0#0'_'#0#149#239#255#0'}' - +#200#255#0#0#0'#'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0 - +#0#0#0#11#0#0#0'#'#0#0#0'/'#0#0#0'/'#0#0#0'/'#0#0#0'#'#0#0#0#23#0#0#0'G'#0'c' - +#158#255#0#0#0'G'#0#0#0#11#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'#'#0'\'#148 - +#255#0'En'#255#0#0#0'#'#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#11#0#0#0'G'#0'_' - +#152#255#0#0#0'/'#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'/'#0#141#226 - +#255#0#0#0'/'#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'/'#0#151#242#255#0 - +#0#0'/'#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#11#0#0#0'G'#0#138#221#255#0#0#0 - +'/'#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'#'#27#169#255#255#0'o'#178#255#0#0#0 - +'/'#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#11#0#0#0'#'#0#0#0'/'#0#0#0'/'#0#0#0'S'#0#134#215#255#0'Ky'#255#0#0#0 - +'#'#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#23'%'#173#255#255#10#163#255#255#0#138#222#255#0'l'#173#255#0'Eo' - +#255#0#0#0';'#0#0#0#11#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#11#0#0#0'#'#0#0#0'/'#0#0#0'/'#0#0#0'/'#0#0#0'#' - +#0#0#0#11#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'zXA'#7'zU' - +'='#6'|V='#4'{W='#6'zX@%{Y@''yXB'#10#0#0#0#0'@C_'#4#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'{W='#0'wU>'#13#171'i' - +#27#26'KF[m'#6'6'#171#223#2'5'#173#255#2'6'#176#251#6'+'#141#164#0#0#0#0'"0c' - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'<@h'#29#25'8'#142 - +#207#9'.'#142#253#1'5'#177#255#4'('#148#255#2'/'#159#254#1'2'#171#255#6'$|' - +#135#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#15'6' - +#157#188#1')'#154#255#3'0'#166#255#4'%'#145#254#5'('#137#255#1#23'u'#255#1'1' - +#171#254#1''''#145#255#7#30'j'#171#0#0#0#0#3#27'm'#0#0#0#0#0#0#0#0#0#127'rf' - +#0#0#0#0#0#0#9#154#1#3'2'#172#226#15':'#133#241#11'v'#234#255#11'~'#240#255 - +#18'\'#171#255#9'q'#229#255#3'('#148#255#0','#162#254#0#25'm'#255#5#27'k'#221 - +#19'&f"'#0#0#0#0#0#0#0#0'sf['#6'uli'#29'gkz!'#8'A'#183#239#19'~'#236#255#12 - +#137#255#254#23'p'#207#255'*x'#200#255#10'{'#243#255#5'K'#186#255#0'+'#160 - +#255#4'*'#131#255#0#25'm'#254#2#23'f'#255#17#29'_$tz'#137#6'pjd*xdW(Td'#130 - +'c!'#128#229#255#22'\'#179#255#25'a'#187#255'3'#149#249#255#9'y'#243#255#5'y' - +#248#255#3'y'#252#255#4'3'#158#255#5')'#146#255#2'!v'#255#0#20'b'#255#3#20'_' - +#200'|'#136#177#11#129#138#170')y'#140#159'''B'#143#222#189#18'M'#161#255#14 - +'/h'#255'4'#136#229#255'7'#154#255#255#20'z'#235#255#3'w'#246#255#3's'#238 - +#255#2']'#209#255#2#21't'#255#3'!'#138#255#2#20'h'#255#1#15'['#237'z'#134#165 - +'$p'#139#169#24'n'#144#186#31'H'#152#231#198'5'#145#238#255':'#155#255#255'4' - +#149#251#255'2'#134#231#255' '#130#242#255#0'u'#244#255#0's'#238#255#0'o'#232 - +#255#2#22'w'#255#1'!'#139#255#1#26'}'#255#1#11'V'#255#0#0#0#0#129#144#164#5#0 - +#0#0#0'L'#150#224#165'7'#148#248#255'4'#147#250#255'/'#142#249#255'/'#141#249 - +#255#30#135#248#255#2'v'#241#255#0'q'#235#255#1'a'#211#255#1#28#132#255#1#30 - +#133#255#0#27#127#255#1#12'['#255#0#0#0#0#0#0#0#0#0#0#0#0'?'#147#236#172'2' - +#148#255#255'0'#145#254#255'/'#143#252#255'+'#134#239#255#5'&'#136#255#2#21 - +'q'#255#5'0'#144#255#3'<'#158#255#0#29#134#255#2#25'y'#255#0#27#127#255#0#10 - +'Z'#255#0#0#0#0#0#0#0#0#0#0#0#0'(`'#185#141'.'#139#250#255'+'#134#239#255' m' - +#212#255#3','#149#255#0#25'|'#255#1#21's'#255#0#20's'#255#2#26'}'#255#0#28 - +#129#255#2#24'v'#255#0#23'z'#255#0#9'X'#255#0#0#0#0#0#0#0#0#0#0#0#0#15','#136 - +#137#1''''#153#255#1'$'#145#255#0'#'#146#255#0'$'#145#255#0#23'x'#255#2#19'o' - +#255#2#26'|'#255#1#27'~'#255#1#25'{'#255#1#19'r'#255#1#20'r'#255#1#6'O'#255#0 - +#0#0#0#0#0#0#0#0#0#0#0#25'*u*'#2'#'#139#255#2'"'#139#255#0'#'#143#255#1#28 - +#129#255#2#23'w'#255#1#28#127#255#0#27'~'#255#0#24'z'#255#1#17'l'#255#1#14'i' - +#255#0#11'a'#255#0#5'A'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255'zs'#255#255#129'{' - +#255#255#134#128#255#255#137#131#255#255#139#133#255#255#137#131#255#255#133 - +#127#255#255'~x'#255#255'vo'#255#255'kd'#255#255'`X'#255#255'SK'#255#255'F=' - +#255#255'9/'#255#255'* '#255#255#30#19#255#255'zs'#255#255#129'{'#255#255#133 - +#127#255#255#136#130#255#255#137#131#255#255#136#130#255#255#130'|'#255#255 - +'{u'#255#255'qj'#255#255'e]'#255#255'WO'#255#255'I@'#255#255';1'#255#255',"' - +#255#255#30#19#255#255#17#5#255#255'wp'#255#255'}w'#255#255#130'|'#255#255 - +#133#127#255#255#133#127#255#255#131'}'#255#255'}w'#255#255'un'#255#255'ha' - +#255#255'[S'#255#255'LC'#255#255'>4'#255#255'-#'#255#255#30#19#255#255#15#3 - +#255#245#12#0#255#255'rk'#255#255'yr'#255#255'|v'#255#255#127'y'#255#255#127 - +'y'#255#255'|v'#255#255'vo'#255#255'kd'#255#255'^V'#255#255'OF'#255#255'?5' - +#255#255'.$'#255#255#30#19#255#255#14#2#255#242#11#0#255#229#11#0#255#255'kd' - +#255#255'qj'#255#255'tm'#255#255'vo'#255#255'un'#255#255'rk'#255#255'kd'#255 - +#255'`X'#255#255'RI'#255#255'@7'#255#255'/%'#255#255#30#19#255#255#13#1#255 - +#240#11#0#255#224#11#0#255#212#10#0#255#255'c['#255#255'g_'#255#255'ha'#255 - +#255'ib'#255#255'ha'#255#255'd\'#255#255'\T'#255#255'PG'#255#255'@7'#255#255 - +'.$'#255#255#28#17#255#255#12#0#255#238#11#0#255#221#10#0#255#206#10#0#255 - +#195#9#0#255#255'WO'#255#255'YQ'#255#255'ZR'#255#255'YQ'#255#255'VN'#255#255 - +'RI'#255#255'H?'#255#255';1'#255#255'*'#31#255#255#24#13#255#250#12#0#255#232 - +#11#0#255#215#10#0#255#200#9#0#255#187#9#0#255#177#8#0#255#255'I@'#255#255'I' - +'@'#255#255'H?'#255#255'E<'#255#255'@7'#255#255'9/'#255#255'.$'#255#255'!'#22 - +#255#255#16#4#255#241#11#0#255#223#10#0#255#206#10#0#255#191#9#0#255#178#8#0 - +#255#167#8#0#255#159#7#0#255#255':0'#255#255'7-'#255#255'3)'#255#255'-#'#255 - +#255''''#28#255#255#30#19#255#255#19#7#255#247#12#0#255#229#11#0#255#211#10#0 - +#255#194#9#0#255#179#8#0#255#167#8#0#255#155#7#0#255#147#7#0#255#143#7#0#255 - +#255'*'#31#255#255'$'#25#255#255#29#18#255#255#22#10#255#255#13#1#255#245#12 - ,#0#255#232#11#0#255#215#10#0#255#198#9#0#255#181#9#0#255#166#8#0#255#153#7#0 - +#255#143#7#0#255#135#6#0#255#129#6#0#255#128#6#0#255#255#26#15#255#255#18#6 - +#255#252#12#0#255#242#11#0#255#230#11#0#255#218#10#0#255#203#10#0#255#187#9#0 - +#255#170#8#0#255#155#7#0#255#141#7#0#255#131#6#0#255'{'#6#0#255'v'#6#0#255's' - +#5#0#255't'#5#0#255#255#12#0#255#245#12#0#255#233#11#0#255#220#10#0#255#206 - +#10#0#255#193#9#0#255#178#8#0#255#161#8#0#255#146#7#0#255#132#6#0#255'y'#6#0 - +#255'q'#5#0#255'k'#5#0#255'h'#5#0#255'h'#5#0#255'k'#5#0#255#240#11#0#255#227 - +#11#0#255#214#10#0#255#200#9#0#255#185#9#0#255#170#8#0#255#155#7#0#255#140#7 - +#0#255'}'#6#0#255'q'#5#0#255'h'#5#0#255'b'#5#0#255'_'#4#0#255'^'#4#0#255'`'#5 - +#0#255'e'#5#0#255#226#11#0#255#212#10#0#255#196#9#0#255#181#9#0#255#165#8#0 - +#255#150#7#0#255#135#6#0#255'y'#6#0#255'l'#5#0#255'b'#5#0#255'['#4#0#255'V'#4 - +#0#255'V'#4#0#255'V'#4#0#255'Z'#4#0#255'b'#5#0#255#213#10#0#255#197#9#0#255 - +#181#9#0#255#164#8#0#255#149#7#0#255#134#6#0#255'w'#6#0#255'j'#5#0#255'_'#4#0 - +#255'V'#4#0#255'Q'#4#0#255'O'#4#0#255'O'#4#0#255'R'#4#0#255'X'#4#0#255'a'#5#0 - +#255#203#10#0#255#185#9#0#255#168#8#0#255#152#7#0#255#137#6#0#255'z'#6#0#255 - +'l'#5#0#255'a'#5#0#255'W'#4#0#255'P'#4#0#255'M'#4#0#255'L'#4#0#255'N'#4#0#255 - +'S'#4#0#255'Y'#4#0#255'd'#5#0#255#0#0#9'TTrayIcon'#9'MTrayIcon'#9'Icon.Data' - +#10#250#3#0#0#246#3#0#0#0#0#1#0#1#0#16#14#0#0#1#0' '#0#224#3#0#0#22#0#0#0'(' - +#0#0#0#16#0#0#0#28#0#0#0#1#0' '#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#25'*u*'#2'#'#139#255#2'"'#139#255#0'#'#143#255#1 - +#28#129#255#2#23'w'#255#1#28#127#255#0#27'~'#255#0#24'z'#255#1#17'l'#255#1#14 - +'i'#255#0#11'a'#255#0#5'A'#255#0#0#0#0#0#0#0#0#0#0#0#0#15','#136#137#1'''' - +#153#255#1'$'#145#255#0'#'#146#255#0'$'#145#255#0#23'x'#255#2#19'o'#255#2#26 - +'|'#255#1#27'~'#255#1#25'{'#255#1#19'r'#255#1#20'r'#255#1#6'O'#255#0#0#0#0#0 - +#0#0#0#0#0#0#0'(`'#185#141'.'#139#250#255'+'#134#239#255' m'#212#255#3','#149 - +#255#0#25'|'#255#1#21's'#255#0#20's'#255#2#26'}'#255#0#28#129#255#2#24'v'#255 - +#0#23'z'#255#0#9'X'#255#0#0#0#0#0#0#0#0#0#0#0#0'?'#147#236#172'2'#148#255#255 - +'0'#145#254#255'/'#143#252#255'+'#134#239#255#5'&'#136#255#2#21'q'#255#5'0' - +#144#255#3'<'#158#255#0#29#134#255#2#25'y'#255#0#27#127#255#0#10'Z'#255#0#0#0 - +#0#129#144#164#5#0#0#0#0'L'#150#224#165'7'#148#248#255'4'#147#250#255'/'#142 - +#249#255'/'#141#249#255#30#135#248#255#2'v'#241#255#0'q'#235#255#1'a'#211#255 - +#1#28#132#255#1#30#133#255#0#27#127#255#1#12'['#255'z'#134#165'$p'#139#169#24 - +'n'#144#186#31'H'#152#231#198'5'#145#238#255':'#155#255#255'4'#149#251#255'2' - +#134#231#255' '#130#242#255#0'u'#244#255#0's'#238#255#0'o'#232#255#2#22'w' - +#255#1'!'#139#255#1#26'}'#255#1#11'V'#255'|'#136#177#11#129#138#170')y'#140 - +#159'''B'#143#222#189#18'M'#161#255#14'/h'#255'4'#136#229#255'7'#154#255#255 - +#20'z'#235#255#3'w'#246#255#3's'#238#255#2']'#209#255#2#21't'#255#3'!'#138 - +#255#2#20'h'#255#1#15'['#237'tz'#137#6'pjd*xdW(Td'#130'c!'#128#229#255#22'\' - +#179#255#25'a'#187#255'3'#149#249#255#9'y'#243#255#5'y'#248#255#3'y'#252#255 - +#4'3'#158#255#5')'#146#255#2'!v'#255#0#20'b'#255#3#20'_'#200#0#0#0#0'sf['#6 - +'uli'#29'gkz!'#8'A'#183#239#19'~'#236#255#12#137#255#254#23'p'#207#255'*x' - +#200#255#10'{'#243#255#5'K'#186#255#0'+'#160#255#4'*'#131#255#0#25'm'#254#2 - +#23'f'#255#17#29'_$'#0#0#0#0#127'rf'#0#0#0#0#0#0#9#154#1#3'2'#172#226#15':' - +#133#241#11'v'#234#255#11'~'#240#255#18'\'#171#255#9'q'#229#255#3'('#148#255 - +#0','#162#254#0#25'm'#255#5#27'k'#221#19'&f"'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#15'6'#157#188#1')'#154#255#3'0'#166#255#4'%'#145#254#5'('#137#255#1 - +#23'u'#255#1'1'#171#254#1''''#145#255#7#30'j'#171#0#0#0#0#3#27'm'#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'<@h'#29#25'8'#142#207#9'.'#142#253#1'5'#177 - +#255#4'('#148#255#2'/'#159#254#1'2'#171#255#6'$|'#135#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'{W='#0'wU>'#13#171'i'#27#26'KF[m'#6'6'#171 - +#223#2'5'#173#255#2'6'#176#251#6'+'#141#164#0#0#0#0'"0c'#0#0#0#0#0#0#0#0#0#0 - +#0#0#0'zXA'#7'zU='#6'|V='#4'{W='#6'zX@%{Y@''yXB'#10#0#0#0#0'@C_'#4#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#240#0#0#0#224#0#0#0#224#0#0#0 - +#224#0#0#0#224#0#0#0#224#0#0#0#224#0#0#0#240#0#0#0#240#1#0#0#240#3#0#0#240#7 - +#0#0#248#15#0#0#254#31#0#0#255#255#0#0#7'Visible'#9#7'OnClick'#7#6'NoTray'#4 - +'left'#3#208#1#0#0#0 -]); +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TForm1','FORMDATA',[ + 'TPF0'#6'TForm1'#5'Form1'#4'Left'#3#152#1#6'Height'#3')'#2#3'Top'#3#207#0#5'W' + +'idth'#3#211#2#13'ActiveControl'#7#8'SynEdit1'#7'Caption'#6#9'Mufasa v2'#12 + +'ClientHeight'#3#21#2#11'ClientWidth'#3#211#2#4'Menu'#7#9'MainMenu1'#8'OnCre' + +'ate'#7#10'FormCreate'#9'OnDestroy'#7#11'FormDestroy'#8'Position'#7#14'poScr' + +'eenCenter'#10'LCLVersion'#6#6'0.9.29'#0#8'TSynEdit'#8'SynEdit1'#4'Left'#2#8 + +#6'Height'#3'H'#1#3'Top'#2' '#5'Width'#3#192#2#5'Align'#7#8'alCustom'#11'Fon' + +'t.Height'#2#243#9'Font.Name'#6#11'Courier New'#10'Font.Pitch'#7#7'fpFixed' + +#12'Font.Quality'#7#16'fqNonAntialiased'#11'ParentColor'#8#10'ParentFont'#8#8 + +'TabOrder'#2#0#24'BookMarkOptions.OnChange'#13#12'Gutter.Width'#2'9'#19'Gutt' + +'er.MouseActions'#14#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft' + +#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#13#9'MoveCar' + +'et'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'B' + +'utton'#7#7'mbRight'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Co' + +'mmand'#2#12#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#11'Highlighter' + +#7#17'SynFreePascalSyn1'#10'Keystrokes'#14#1#7'Command'#7#4'ecUp'#8'ShortCut' + +#2'&'#0#1#7'Command'#7#7'ecSelUp'#8'ShortCut'#3'& '#0#1#7'Command'#7#10'ecSc' + +'rollUp'#8'ShortCut'#3'&@'#0#1#7'Command'#7#6'ecDown'#8'ShortCut'#2'('#0#1#7 + +'Command'#7#9'ecSelDown'#8'ShortCut'#3'( '#0#1#7'Command'#7#12'ecScrollDown' + +#8'ShortCut'#3'(@'#0#1#7'Command'#7#6'ecLeft'#8'ShortCut'#2'%'#0#1#7'Command' + +#7#9'ecSelLeft'#8'ShortCut'#3'% '#0#1#7'Command'#7#10'ecWordLeft'#8'ShortCut' + +#3'%@'#0#1#7'Command'#7#13'ecSelWordLeft'#8'ShortCut'#3'%`'#0#1#7'Command'#7 + +#7'ecRight'#8'ShortCut'#2''''#0#1#7'Command'#7#10'ecSelRight'#8'ShortCut'#3 + +''' '#0#1#7'Command'#7#11'ecWordRight'#8'ShortCut'#3'''@'#0#1#7'Command'#7#14 + +'ecSelWordRight'#8'ShortCut'#3'''`'#0#1#7'Command'#7#10'ecPageDown'#8'ShortC' + +'ut'#2'"'#0#1#7'Command'#7#13'ecSelPageDown'#8'ShortCut'#3'" '#0#1#7'Command' + +#7#12'ecPageBottom'#8'ShortCut'#3'"@'#0#1#7'Command'#7#15'ecSelPageBottom'#8 + +'ShortCut'#3'"`'#0#1#7'Command'#7#8'ecPageUp'#8'ShortCut'#2'!'#0#1#7'Command' + +#7#11'ecSelPageUp'#8'ShortCut'#3'! '#0#1#7'Command'#7#9'ecPageTop'#8'ShortCu' + +'t'#3'!@'#0#1#7'Command'#7#12'ecSelPageTop'#8'ShortCut'#3'!`'#0#1#7'Command' + +#7#11'ecLineStart'#8'ShortCut'#2'$'#0#1#7'Command'#7#14'ecSelLineStart'#8'Sh' + +'ortCut'#3'$ '#0#1#7'Command'#7#11'ecEditorTop'#8'ShortCut'#3'$@'#0#1#7'Comm' + +'and'#7#14'ecSelEditorTop'#8'ShortCut'#3'$`'#0#1#7'Command'#7#9'ecLineEnd'#8 + +'ShortCut'#2'#'#0#1#7'Command'#7#12'ecSelLineEnd'#8'ShortCut'#3'# '#0#1#7'Co' + +'mmand'#7#14'ecEditorBottom'#8'ShortCut'#3'#@'#0#1#7'Command'#7#17'ecSelEdit' + +'orBottom'#8'ShortCut'#3'#`'#0#1#7'Command'#7#12'ecToggleMode'#8'ShortCut'#2 + +'-'#0#1#7'Command'#7#6'ecCopy'#8'ShortCut'#3'-@'#0#1#7'Command'#7#7'ecPaste' + +#8'ShortCut'#3'- '#0#1#7'Command'#7#12'ecDeleteChar'#8'ShortCut'#2'.'#0#1#7 + +'Command'#7#5'ecCut'#8'ShortCut'#3'. '#0#1#7'Command'#7#16'ecDeleteLastChar' + +#8'ShortCut'#2#8#0#1#7'Command'#7#16'ecDeleteLastChar'#8'ShortCut'#3#8' '#0#1 + +#7'Command'#7#16'ecDeleteLastWord'#8'ShortCut'#3#8'@'#0#1#7'Command'#7#6'ecU' + +'ndo'#8'ShortCut'#4#8#128#0#0#0#1#7'Command'#7#6'ecRedo'#8'ShortCut'#4#8#160 + +#0#0#0#1#7'Command'#7#11'ecLineBreak'#8'ShortCut'#2#13#0#1#7'Command'#7#11'e' + +'cSelectAll'#8'ShortCut'#3'A@'#0#1#7'Command'#7#6'ecCopy'#8'ShortCut'#3'C@'#0 + +#1#7'Command'#7#13'ecBlockIndent'#8'ShortCut'#3'I`'#0#1#7'Command'#7#11'ecLi' + +'neBreak'#8'ShortCut'#3'M@'#0#1#7'Command'#7#12'ecInsertLine'#8'ShortCut'#3 + +'N@'#0#1#7'Command'#7#12'ecDeleteWord'#8'ShortCut'#3'T@'#0#1#7'Command'#7#15 + +'ecBlockUnindent'#8'ShortCut'#3'U`'#0#1#7'Command'#7#7'ecPaste'#8'ShortCut'#3 + +'V@'#0#1#7'Command'#7#5'ecCut'#8'ShortCut'#3'X@'#0#1#7'Command'#7#12'ecDelet' + +'eLine'#8'ShortCut'#3'Y@'#0#1#7'Command'#7#11'ecDeleteEOL'#8'ShortCut'#3'Y`' + +#0#1#7'Command'#7#6'ecUndo'#8'ShortCut'#3'Z@'#0#1#7'Command'#7#6'ecRedo'#8'S' + +'hortCut'#3'Z`'#0#1#7'Command'#7#13'ecGotoMarker0'#8'ShortCut'#3'0@'#0#1#7'C' + +'ommand'#7#13'ecGotoMarker1'#8'ShortCut'#3'1@'#0#1#7'Command'#7#13'ecGotoMar' + +'ker2'#8'ShortCut'#3'2@'#0#1#7'Command'#7#13'ecGotoMarker3'#8'ShortCut'#3'3@' + +#0#1#7'Command'#7#13'ecGotoMarker4'#8'ShortCut'#3'4@'#0#1#7'Command'#7#13'ec' + +'GotoMarker5'#8'ShortCut'#3'5@'#0#1#7'Command'#7#13'ecGotoMarker6'#8'ShortCu' + +'t'#3'6@'#0#1#7'Command'#7#13'ecGotoMarker7'#8'ShortCut'#3'7@'#0#1#7'Command' + +#7#13'ecGotoMarker8'#8'ShortCut'#3'8@'#0#1#7'Command'#7#13'ecGotoMarker9'#8 + +'ShortCut'#3'9@'#0#1#7'Command'#7#12'ecSetMarker0'#8'ShortCut'#3'0`'#0#1#7'C' + +'ommand'#7#12'ecSetMarker1'#8'ShortCut'#3'1`'#0#1#7'Command'#7#12'ecSetMarke' + +'r2'#8'ShortCut'#3'2`'#0#1#7'Command'#7#12'ecSetMarker3'#8'ShortCut'#3'3`'#0 + +#1#7'Command'#7#12'ecSetMarker4'#8'ShortCut'#3'4`'#0#1#7'Command'#7#12'ecSet' + +'Marker5'#8'ShortCut'#3'5`'#0#1#7'Command'#7#12'ecSetMarker6'#8'ShortCut'#3 + +'6`'#0#1#7'Command'#7#12'ecSetMarker7'#8'ShortCut'#3'7`'#0#1#7'Command'#7#12 + +'ecSetMarker8'#8'ShortCut'#3'8`'#0#1#7'Command'#7#12'ecSetMarker9'#8'ShortCu' + ,'t'#3'9`'#0#1#7'Command'#7#12'EcFoldLevel1'#8'ShortCut'#4'1'#160#0#0#0#1#7'C' + +'ommand'#7#12'EcFoldLevel2'#8'ShortCut'#4'2'#160#0#0#0#1#7'Command'#7#12'EcF' + +'oldLevel1'#8'ShortCut'#4'3'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel1'#8'Sho' + +'rtCut'#4'4'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel1'#8'ShortCut'#4'5'#160#0 + +#0#0#1#7'Command'#7#12'EcFoldLevel6'#8'ShortCut'#4'6'#160#0#0#0#1#7'Command' + +#7#12'EcFoldLevel7'#8'ShortCut'#4'7'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel' + +'8'#8'ShortCut'#4'8'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel9'#8'ShortCut'#4 + +'9'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel0'#8'ShortCut'#4'0'#160#0#0#0#1#7 + +'Command'#7#13'EcFoldCurrent'#8'ShortCut'#4'-'#160#0#0#0#1#7'Command'#7#15'E' + +'cUnFoldCurrent'#8'ShortCut'#4'+'#160#0#0#0#1#7'Command'#7#18'EcToggleMarkup' + +'Word'#8'ShortCut'#4'M'#128#0#0#0#1#7'Command'#7#14'ecNormalSelect'#8'ShortC' + +'ut'#3'N`'#0#1#7'Command'#7#14'ecColumnSelect'#8'ShortCut'#3'C`'#0#1#7'Comma' + +'nd'#7#12'ecLineSelect'#8'ShortCut'#3'L`'#0#1#7'Command'#7#5'ecTab'#8'ShortC' + +'ut'#2#9#0#1#7'Command'#7#10'ecShiftTab'#8'ShortCut'#3#9' '#0#1#7'Command'#7 + +#14'ecMatchBracket'#8'ShortCut'#3'B`'#0#1#7'Command'#7#10'ecColSelUp'#8'Shor' + +'tCut'#4'&'#160#0#0#0#1#7'Command'#7#12'ecColSelDown'#8'ShortCut'#4'('#160#0 + +#0#0#1#7'Command'#7#12'ecColSelLeft'#8'ShortCut'#4'%'#160#0#0#0#1#7'Command' + +#7#13'ecColSelRight'#8'ShortCut'#4''''#160#0#0#0#1#7'Command'#7#16'ecColSelP' + +'ageDown'#8'ShortCut'#4'"'#160#0#0#0#1#7'Command'#7#18'ecColSelPageBottom'#8 + +'ShortCut'#4'"'#224#0#0#0#1#7'Command'#7#14'ecColSelPageUp'#8'ShortCut'#4'!' + +#160#0#0#0#1#7'Command'#7#15'ecColSelPageTop'#8'ShortCut'#4'!'#224#0#0#0#1#7 + +'Command'#7#17'ecColSelLineStart'#8'ShortCut'#4'$'#160#0#0#0#1#7'Command'#7 + +#15'ecColSelLineEnd'#8'ShortCut'#4'#'#160#0#0#0#1#7'Command'#7#17'ecColSelEd' + +'itorTop'#8'ShortCut'#4'$'#224#0#0#0#1#7'Command'#7#20'ecColSelEditorBottom' + +#8'ShortCut'#4'#'#224#0#0#0#0#12'MouseActions'#14#1#5'Shift'#11#0#9'ShiftMas' + +'k'#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSing' + +'le'#8'ClickDir'#7#6'cdDown'#7'Command'#2#1#9'MoveCaret'#9#6'Option'#2#0#8'P' + +'riority'#2#0#0#1#5'Shift'#11#7'ssShift'#0#9'ShiftMask'#11#7'ssShift'#5'ssAl' + +'t'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdD' + +'own'#7'Command'#2#1#9'MoveCaret'#9#6'Option'#2#1#8'Priority'#2#0#0#1#5'Shif' + +'t'#11#5'ssAlt'#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbLeft' + +#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#3#9'MoveC' + +'aret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#7'ssShift'#5'ssAlt'#0 + +#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7 + +#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#3#9'MoveCaret'#9#6'Option' + +#2#1#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#7'mbRig' + +'ht'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#12#9'Mo' + +'veCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0 + +#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccDouble'#8'ClickDir'#7#6'cdDown'#7 + +'Command'#2#6#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0 + +#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccTriple'#8'Clic' + +'kDir'#7#6'cdDown'#7'Command'#2#7#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2 + +#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7 + +#6'ccQuad'#8'ClickDir'#7#6'cdDown'#7'Command'#2#8#9'MoveCaret'#9#6'Option'#2 + +#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#8'mbMiddl' + +'e'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#10#9'M' + +'oveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#6'ssCtrl'#0#9'Shi' + +'ftMask'#11#7'ssShift'#5'ssAlt'#6'ssCtrl'#0#6'Button'#7#6'mbLeft'#10'ClickCo' + +'unt'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#11#9'MoveCaret'#8#6'O' + +'ption'#2#0#8'Priority'#2#0#0#0#15'MouseSelActions'#14#1#5'Shift'#11#0#9'Shi' + +'ftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir' + +#7#6'cdDown'#7'Command'#2#9#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0 + +#13'Lines.Strings'#1#6#12'program new;'#6#5'begin'#6#4'end.'#0#11'MaxLeftCha' + +'r'#2'P'#10'ScrollBars'#7#10'ssAutoBoth'#21'BracketHighlightStyle'#7#8'sbhsB' + +'oth'#0#18'TSynGutterPartList'#0#0#15'TSynGutterMarks'#0#5'Width'#2#23#0#0#20 + +'TSynGutterLineNumber'#0#5'Width'#2#17#12'MouseActions'#14#0#21'MarkupInfo.B' + +'ackground'#7#9'clBtnFace'#21'MarkupInfo.Foreground'#7#6'clNone'#10'DigitCou' + +'nt'#2#2#30'ShowOnlyLineNumbersMultiplesOf'#2#1#9'ZeroStart'#8#12'LeadingZer' + +'os'#8#0#0#17'TSynGutterChanges'#0#5'Width'#2#4#13'ModifiedColor'#4#252#233#0 + +#0#10'SavedColor'#7#7'clGreen'#0#0#19'TSynGutterSeparator'#0#5'Width'#2#2#0#0 + +#21'TSynGutterCodeFolding'#0#12'MouseActions'#14#1#5'Shift'#11#0#9'ShiftMask' + +#11#0#6'Button'#7#7'mbRight'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cd' + +'Up'#7'Command'#2#16#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shif' + +'t'#11#0#9'ShiftMask'#11#7'ssShift'#0#6'Button'#7#8'mbMiddle'#10'ClickCount' + ,#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#14#9'MoveCaret'#8#6'Option' + +#2#0#8'Priority'#2#0#0#1#5'Shift'#11#7'ssShift'#0#9'ShiftMask'#11#7'ssShift' + +#0#6'Button'#7#8'mbMiddle'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown' + +#7'Command'#2#14#9'MoveCaret'#8#6'Option'#2#1#8'Priority'#2#0#0#1#5'Shift'#11 + +#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'Click' + +'Dir'#7#6'cdDown'#7'Command'#2#0#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0 + +#0#0#21'MarkupInfo.Background'#7#6'clNone'#21'MarkupInfo.Foreground'#7#6'clG' + +'ray'#20'MouseActionsExpanded'#14#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button' + +#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2 + +#14#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#21'MouseActionsCollapse' + +'d'#14#1#5'Shift'#11#6'ssCtrl'#0#9'ShiftMask'#11#6'ssCtrl'#0#6'Button'#7#6'm' + +'bLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#15#9 + +'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11 + +#6'ssCtrl'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6 + +'cdDown'#7'Command'#2#15#9'MoveCaret'#8#6'Option'#2#1#8'Priority'#2#0#0#0#0#0 + +#0#0#8'TToolBar'#8'ToolBar1'#4'Left'#2#0#6'Height'#2#24#3'Top'#2#0#5'Width'#3 + +#211#2#7'Caption'#6#8'ToolBar1'#6'Images'#7#17'Mufasa_Image_List'#8'TabOrder' + +#2#2#0#11'TToolButton'#6'TB_Run'#4'Left'#2#1#3'Top'#2#2#7'Caption'#6#6'TB_Ru' + +'n'#10'ImageIndex'#2#0#7'OnClick'#7#12'Button1Click'#0#0#11'TToolButton'#8'T' + +'B_Pause'#4'Left'#2#24#3'Top'#2#2#7'Caption'#6#11'ToolButton1'#7'Enabled'#8 + +#10'ImageIndex'#2#1#0#0#11'TToolButton'#7'TB_Stop'#4'Left'#2'/'#3'Top'#2#2#7 + +'Caption'#6#11'ToolButton1'#7'Enabled'#8#10'ImageIndex'#2#2#0#0#11'TToolButt' + +'on'#11'ToolButton1'#4'Left'#2'F'#3'Top'#2#2#5'Width'#2#3#7'Caption'#6#11'To' + +'olButton1'#5'Style'#7#10'tbsDivider'#0#0#11'TToolButton'#9'TB_NewTab'#4'Lef' + +'t'#2'I'#3'Top'#2#2#7'Caption'#6#9'TB_NewTab'#7'Enabled'#8#10'ImageIndex'#2#3 + +#0#0#11'TToolButton'#11'TB_CloseTab'#4'Left'#2'`'#3'Top'#2#2#7'Caption'#6#11 + +'TB_CloseTab'#7'Enabled'#8#10'ImageIndex'#2#4#0#0#11'TToolButton'#11'ToolBut' + +'ton4'#4'Left'#2'w'#3'Top'#2#2#5'Width'#2#3#7'Caption'#6#11'ToolButton4'#5'S' + +'tyle'#7#10'tbsDivider'#0#0#11'TToolButton'#13'TB_ClearDebug'#4'Left'#2'z'#3 + +'Top'#2#2#7'Caption'#6#13'TB_ClearDebug'#7'Enabled'#8#10'ImageIndex'#2#5#0#0 + +#11'TToolButton'#13'TB_PickColour'#4'Left'#3#145#0#3'Top'#2#2#7'Caption'#6#13 + +'TB_PickColour'#10'ImageIndex'#2#6#7'OnClick'#7#14'PickColorEvent'#0#0#11'TT' + +'oolButton'#15'TB_SelectClient'#4'Left'#3#168#0#3'Top'#2#2#7'Caption'#6#15'T' + +'B_SelectClient'#10'ImageIndex'#2#7#11'OnMouseDown'#7#13'Selector_DOWN'#0#0 + +#11'TToolButton'#11'ToolButton8'#4'Left'#3#191#0#3'Top'#2#2#5'Width'#2#3#7'C' + +'aption'#6#11'ToolButton8'#5'Style'#7#10'tbsDivider'#0#0#11'TToolButton'#10 + +'TB_Convert'#4'Left'#3#194#0#3'Top'#2#2#7'Caption'#6#10'TB_Convert'#7'Enable' + +'d'#8#10'ImageIndex'#2#8#0#0#11'TToolButton'#16'TB_ReloadPlugins'#4'Left'#3 + +#217#0#3'Top'#2#2#7'Caption'#6#16'TB_ReloadPlugins'#7'Enabled'#8#10'ImageInd' + +'ex'#2#9#0#0#11'TToolButton'#7'TB_Tray'#4'Left'#3#240#0#3'Top'#2#2#7'Caption' + +#6#7'TB_Tray'#10'ImageIndex'#2#10#7'OnClick'#7#6'ToTray'#0#0#0#5'TMemo'#5'Me' + +'mo1'#4'Left'#2#13#6'Height'#3#134#0#3'Top'#3'r'#1#5'Width'#3#182#2#10'Scrol' + +'lBars'#7#10'ssAutoBoth'#8'TabOrder'#2#1#0#0#17'TSynFreePascalSyn'#17'SynFre' + +'ePascalSyn1'#7'Enabled'#8#12'CompilerMode'#7#9'pcmObjFPC'#14'NestedComments' + +#9#4'left'#3'0'#2#0#0#9'TMainMenu'#9'MainMenu1'#4'left'#3'`'#2#0#9'TMenuItem' + +#14'MenuItemScript'#7'Caption'#6#6'Script'#0#9'TMenuItem'#11'MenuItemRun'#7 + +'Caption'#6#3'Run'#8'ShortCut'#2'x'#7'OnClick'#7#16'MenuItemRunClick'#0#0#0#0 + +#10'TImageList'#17'Mufasa_Image_List'#4'left'#3#0#2#6'Bitmap'#10#14'4'#0#0'L' + +'i'#13#0#0#0#16#0#0#0#16#0#0#0's'#255#155#255'{'#255#160#255#128#255#164#255 + +#131#255#166#255#133#255#167#255#131#255#166#255#127#255#163#255'y'#255#159 + +#255'p'#255#152#255'd'#255#144#255'X'#255#135#255'L'#255#127#255'?'#255'u' + +#255'1'#255'k'#255'"'#255'`'#255#21#255'W'#255's'#255#155#255'{'#255#160#255 + +#127#255#163#255#130#255#165#255#132#255#167#255#130#255#165#255'}'#255#162 + +#255'u'#255#156#255'j'#255#148#255'^'#255#139#255'P'#255#129#255'B'#255'w' + +#255'4'#255'm'#255'$'#255'b'#255#21#255'W'#255#7#255'M'#255'p'#255#152#255'w' + +#255#157#255'|'#255#161#255#127#255#163#255#127#255#163#255'}'#255#162#255'x' + +#255#158#255'o'#255#152#255'b'#255#142#255'T'#255#132#255'E'#255'z'#255'5' + +#255'n'#255'%'#255'c'#255#21#255'W'#255#5#255'L'#255#0#247'F'#255'l'#255#150 + +#255'r'#255#154#255'v'#255#157#255'y'#255#159#255'y'#255#159#255'v'#255#157 + +#255'p'#255#152#255'e'#255#144#255'X'#255#135#255'H'#255'|'#255'7'#255'o'#255 + +'&'#255'c'#255#21#255'W'#255#4#255'K'#255#0#244'E'#255#0#230'A'#255'd'#255 + +#144#255'j'#255#148#255'm'#255#150#255'p'#255#152#255'o'#255#152#255'l'#255 + +#150#255'd'#255#144#255'Y'#255#136#255'J'#255'}'#255'9'#255'q'#255''''#255'd' + +#255#22#255'X'#255#4#255'K'#255#0#242'D'#255#0#227'@'#255#0#214'<'#255'\'#255 + ,#138#255'`'#255#141#255'c'#255#143#255'd'#255#144#255'c'#255#143#255'^'#255 + +#139#255'V'#255#134#255'I'#255'|'#255':'#255'r'#255'('#255'e'#255#21#255'W' + +#255#2#255'I'#255#0#241'D'#255#0#224'?'#255#0#209';'#255#0#197'8'#255'Q'#255 + +#130#255'S'#255#132#255'U'#255#133#255'T'#255#132#255'R'#255#131#255'L'#255 + +#127#255'C'#255'x'#255'5'#255'n'#255'%'#255'c'#255#17#255'T'#255#0#254'H'#255 + +#0#236'C'#255#0#220'>'#255#0#204':'#255#0#191'6'#255#0#180'3'#255'C'#255'x' + +#255'C'#255'x'#255'C'#255'x'#255'@'#255'v'#255'<'#255's'#255'4'#255'm'#255'*' + +#255'f'#255#28#255'\'#255#10#255'O'#255#0#247'F'#255#0#229'A'#255#0#212'<' + +#255#0#197'8'#255#0#182'3'#255#0#171'0'#255#0#163'.'#255'4'#255'm'#255'1'#255 + +'k'#255'.'#255'i'#255')'#255'e'#255'"'#255'`'#255#25#255'Z'#255#13#255'Q'#255 + +#0#254'H'#255#0#236'C'#255#0#218'>'#255#0#201'9'#255#0#185'4'#255#0#172'1' + +#255#0#161'-'#255#0#152'+'#255#0#146')'#255'#'#255'a'#255#30#255'^'#255#24 + +#255'Y'#255#16#255'S'#255#7#255'M'#255#0#253'G'#255#0#239'C'#255#0#224'?'#255 + +#0#206':'#255#0#189'5'#255#0#173'1'#255#0#160'-'#255#0#149'*'#255#0#140'(' + +#255#0#134'&'#255#0#131'%'#255#19#255'V'#255#12#255'Q'#255#3#255'J'#255#0#249 + +'F'#255#0#238'C'#255#0#226'@'#255#0#212'<'#255#0#195'7'#255#0#179'3'#255#0 + +#162'.'#255#0#149'*'#255#0#137''''#255#0#128'$'#255#0'z"'#255#0'w"'#255#0'v!' + +#255#4#255'K'#255#0#251'G'#255#0#239'C'#255#0#227'@'#255#0#215'='#255#0#201 + +'9'#255#0#186'5'#255#0#170'0'#255#0#154'+'#255#0#140'('#255#0#128'$'#255#0'w' + +'"'#255#0'q '#255#0'l'#30#255#0'k'#30#255#0'm'#31#255#0#246'E'#255#0#234'B' + +#255#0#221'>'#255#0#207':'#255#0#193'6'#255#0#179'3'#255#0#164'.'#255#0#148 + +'*'#255#0#133'&'#255#0'x"'#255#0'n'#31#255#0'h'#29#255#0'c'#28#255#0'b'#28 + +#255#0'b'#28#255#0'f'#29#255#0#232'B'#255#0#218'>'#255#0#203'9'#255#0#188'5' + +#255#0#173'1'#255#0#158'-'#255#0#143'('#255#0#128'$'#255#0's '#255#0'h'#29 + +#255#0'`'#27#255#0'['#26#255#0'Y'#25#255#0'Y'#25#255#0'\'#26#255#0'b'#28#255 + +#0#218'>'#255#0#203'9'#255#0#187'5'#255#0#170'0'#255#0#155','#255#0#140'(' + +#255#0'~$'#255#0'p '#255#0'd'#28#255#0'['#26#255#0'T'#24#255#0'Q'#23#255#0'Q' + +#23#255#0'S'#23#255#0'X'#25#255#0'`'#27#255#0#206':'#255#0#190'6'#255#0#173 + +'1'#255#0#157','#255#0#141'('#255#0'~$'#255#0'q '#255#0'd'#28#255#0'Y'#25#255 + +#0'R'#23#255#0'M'#22#255#0'L'#21#255#0'M'#22#255#0'Q'#23#255#0'X'#25#255#0'a' + +#27#255's'#211#255#255'{'#213#255#255#128#215#255#255#131#216#255#255#133#216 + +#255#255#132#216#255#255#129#215#255#255'{'#213#255#255's'#211#255#255'h'#207 + +#255#255'^'#204#255#255'R'#200#255#255'E'#196#255#255'7'#191#255#255')'#187 + +#255#255#27#183#255#255's'#211#255#255'{'#213#255#255#127#214#255#255#131#216 + +#255#255#132#216#255#255#130#215#255#255#127#214#255#255'x'#212#255#255'n' + +#209#255#255'b'#205#255#255'U'#201#255#255'H'#197#255#255':'#192#255#255'+' + +#188#255#255#28#183#255#255#13#178#255#255'p'#210#255#255'w'#212#255#255'|' + +#213#255#255#127#214#255#255#128#215#255#255'~'#214#255#255'y'#212#255#255'r' + +#210#255#255'g'#207#255#255'Y'#202#255#255'K'#198#255#255'<'#193#255#255',' + +#188#255#255#28#183#255#255#13#178#255#255#0#173#253#255'l'#208#255#255'r' + +#210#255#255'v'#211#255#255'y'#212#255#255'y'#212#255#255'w'#212#255#255'r' + +#210#255#255'i'#207#255#255'\'#203#255#255'M'#198#255#255'='#193#255#255'-' + +#188#255#255#28#183#255#255#12#178#255#255#0#171#251#255#0#161#236#255'd'#206 + +#255#255'j'#208#255#255'm'#209#255#255'p'#210#255#255'p'#210#255#255'm'#209 + +#255#255'g'#207#255#255']'#204#255#255'O'#199#255#255'?'#194#255#255'.'#189 + +#255#255#28#183#255#255#12#178#255#255#0#171#251#255#0#160#234#255#0#150#220 + +#255'\'#203#255#255'`'#204#255#255'c'#205#255#255'd'#206#255#255'c'#205#255 + +#255'_'#204#255#255'X'#202#255#255'M'#198#255#255'?'#194#255#255'.'#189#255 + +#255#28#183#255#255#10#177#255#255#0#169#248#255#0#158#232#255#0#147#216#255 + +#0#139#203#255'Q'#200#255#255'S'#200#255#255'U'#201#255#255'T'#201#255#255'R' + +#200#255#255'M'#198#255#255'E'#196#255#255'9'#192#255#255')'#187#255#255#23 + +#181#255#255#5#176#255#255#0#166#244#255#0#155#227#255#0#145#212#255#0#134 + +#197#255#0'~'#185#255'C'#195#255#255'C'#195#255#255'C'#195#255#255'@'#194#255 + +#255'<'#193#255#255'6'#191#255#255','#188#255#255#31#184#255#255#15#179#255 + +#255#0#173#253#255#0#160#235#255#0#149#218#255#0#139#203#255#0#129#189#255#0 + +'x'#176#255#0'q'#166#255'4'#191#255#255'1'#190#255#255'.'#189#255#255')'#187 + +#255#255'#'#185#255#255#27#183#255#255#16#179#255#255#1#174#255#255#0#164#241 + +#255#0#153#224#255#0#141#206#255#0#130#191#255#0'y'#178#255#0'q'#166#255#0'j' + +#155#255#0'e'#148#255'#'#185#255#255#30#184#255#255#24#182#255#255#16#179#255 + +#255#8#177#255#255#0#173#254#255#0#165#242#255#0#155#227#255#0#143#210#255#0 + +#132#194#255#0'y'#178#255#0'p'#164#255#0'h'#153#255#0'b'#144#255#0']'#136#255 + +#0'Y'#131#255#19#180#255#255#12#178#255#255#3#175#255#255#0#170#249#255#0#163 + +#239#255#0#155#227#255#0#145#213#255#0#135#198#255#0'|'#182#255#0'q'#166#255 + +#0'h'#152#255#0'`'#141#255#0'Z'#132#255#0'U}'#255#0'Rx'#255#0'Qv'#255#4#175 + ,#255#255#0#171#251#255#0#163#239#255#0#155#227#255#0#147#215#255#0#138#202 + +#255#0#128#188#255#0'v'#173#255#0'k'#157#255#0'b'#143#255#0'Y'#131#255#0'Sy' + +#255#0'Ns'#255#0'Kn'#255#0'Ik'#255#0'Ik'#255#0#168#246#255#0#160#234#255#0 + +#151#221#255#0#141#207#255#0#132#194#255#0'z'#179#255#0'q'#165#255#0'f'#150 + +#255#0']'#136#255#0'Sz'#255#0'Mq'#255#0'Hi'#255#0'Ee'#255#0'Cb'#255#0'Cb'#255 + +#0'Dd'#255#0#158#232#255#0#149#218#255#0#139#203#255#0#128#188#255#0'v'#173 + +#255#0'l'#159#255#0'c'#145#255#0'Y'#131#255#0'Pu'#255#0'Hj'#255#0'Ba'#255#0 + +'?\'#255#0'=Y'#255#0'=Y'#255#0'=Z'#255#0'A_'#255#0#149#218#255#0#139#203#255 + +#0#128#187#255#0'u'#171#255#0'j'#155#255#0'`'#141#255#0'W'#127#255#0'Mq'#255 + +#0'Ee'#255#0'?\'#255#0';V'#255#0'8R'#255#0'7P'#255#0'8R'#255#0';V'#255#0'?\' + +#255#0#141#206#255#0#130#190#255#0'v'#173#255#0'k'#157#255#0'`'#141#255#0'W' + +#127#255#0'Mq'#255#0'Ee'#255#0'>['#255#0'9S'#255#0'5N'#255#0'4L'#255#0'5M' + +#255#0'6O'#255#0'9T'#255#0'?\'#255'ss'#255#255'{{'#255#255#128#128#255#255 + +#131#131#255#255#132#132#255#255#130#130#255#255'~~'#255#255'ww'#255#255'mm' + +#255#255'aa'#255#255'UU'#255#255'HH'#255#255'::'#255#255'++'#255#255#29#29 + +#255#255#16#16#255#240'ss'#255#255'{{'#255#255#127#127#255#255#130#130#255 + +#255#131#131#255#255#129#129#255#255'||'#255#255'ss'#255#255'gg'#255#255'[[' + +#255#255'LL'#255#255'=='#255#255'..'#255#255#31#31#255#255#16#16#255#255#2#2 + +#255#240'pp'#255#255'ww'#255#255'||'#255#255#127#127#255#255#127#127#255#255 + +'||'#255#255'vv'#255#255'mm'#255#255'__'#255#255'PP'#255#255'@@'#255#255'00' + +#255#255#31#31#255#255#15#15#255#255#0#0#255#255#0#0#242#240'kk'#255#255'rr' + +#255#255'vv'#255#255'xx'#255#255'xx'#255#255'uu'#255#255'mm'#255#255'bb'#255 + +#255'TT'#255#255'CC'#255#255'22'#255#255' '#255#255#15#15#255#255#0#0#254 + +#255#0#0#239#255#0#0#226#240'dd'#255#255'jj'#255#255'mm'#255#255'nn'#255#255 + +'mm'#255#255'jj'#255#255'aa'#255#255'UU'#255#255'FF'#255#255'44'#255#255'!!' + +#255#255#15#15#255#255#0#0#253#255#0#0#236#255#0#0#221#255#0#0#209#240'[[' + +#255#255'^^'#255#255'aa'#255#255'aa'#255#255'``'#255#255'[['#255#255'RR'#255 + +#255'DD'#255#255'33'#255#255' '#255#255#13#13#255#255#0#0#251#255#0#0#233 + +#255#0#0#217#255#0#0#203#255#0#0#192#240'NN'#255#255'PP'#255#255'QQ'#255#255 + +'OO'#255#255'LL'#255#255'FF'#255#255'<<'#255#255'--'#255#255#28#28#255#255#8 + +#8#255#255#0#0#245#255#0#0#227#255#0#0#211#255#0#0#196#255#0#0#183#255#0#0 + +#175#240'??'#255#255'>>'#255#255'=='#255#255'::'#255#255'44'#255#255',,'#255 + +#255' '#255#255#16#16#255#255#0#0#254#255#0#0#236#255#0#0#218#255#0#0#201 + +#255#0#0#186#255#0#0#173#255#0#0#164#255#0#0#157#240'..'#255#255'++'#255#255 + +'&&'#255#255' '#255#255#25#25#255#255#15#15#255#255#1#1#255#255#0#0#242#255 + +#0#0#224#255#0#0#205#255#0#0#188#255#0#0#174#255#0#0#161#255#0#0#152#255#0#0 + +#144#255#0#0#140#240#28#28#255#255#22#22#255#255#15#15#255#255#7#7#255#255#0 + +#0#253#255#0#0#241#255#0#0#227#255#0#0#210#255#0#0#193#255#0#0#176#255#0#0 + +#161#255#0#0#149#255#0#0#139#255#0#0#131#255#0#0#127#255#0#0'~'#240#12#12#255 + +#255#4#4#255#255#0#0#249#255#0#0#239#255#0#0#227#255#0#0#213#255#0#0#198#255 + +#0#0#182#255#0#0#164#255#0#0#149#255#0#0#137#255#0#0#127#255#0#0'w'#255#0#0 + +'s'#255#0#0'q'#255#0#0's'#240#0#0#253#255#0#0#242#255#0#0#229#255#0#0#216#255 + +#0#0#203#255#0#0#188#255#0#0#173#255#0#0#157#255#0#0#141#255#0#0#127#255#0#0 + +'t'#255#0#0'm'#255#0#0'h'#255#0#0'f'#255#0#0'g'#255#0#0'k'#240#0#0#238#255#0 + +#0#224#255#0#0#210#255#0#0#196#255#0#0#181#255#0#0#166#255#0#0#150#255#0#0 + +#135#255#0#0'y'#255#0#0'm'#255#0#0'e'#255#0#0'_'#255#0#0'\'#255#0#0'\'#255#0 + +#0'_'#255#0#0'f'#240#0#0#224#255#0#0#209#255#0#0#193#255#0#0#177#255#0#0#161 + +#255#0#0#146#255#0#0#131#255#0#0'u'#255#0#0'h'#255#0#0'_'#255#0#0'X'#255#0#0 + +'T'#255#0#0'T'#255#0#0'V'#255#0#0'['#255#0#0'c'#240#0#0#211#255#0#0#194#255#0 + +#0#178#255#0#0#161#255#0#0#145#255#0#0#130#255#0#0't'#255#0#0'g'#255#0#0'\' + +#255#0#0'T'#255#0#0'P'#255#0#0'M'#255#0#0'O'#255#0#0'S'#255#0#0'Y'#255#0#0'c' + +#240#0#0#200#255#0#0#183#255#0#0#166#255#0#0#149#255#0#0#134#255#0#0'w'#255#0 + +#0'j'#255#0#0'_'#255#0#0'V'#255#0#0'P'#255#0#0'M'#255#0#0'M'#255#0#0'O'#255#0 + +#0'T'#255#0#0'\'#255#0#0'g'#240#255'3='#255#255'3='#255#255'3='#255#255'3=' + +#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255 + +#255'3='#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255#200 + +#200#201#255#200#200#201#255#200#200#201#255#200#200#201#255#200#200#201#255 + +#200#200#201#255#200#200#201#255#200#200#201#255#200#200#201#255#200#200#201 + +#255#200#200#201#255#200#200#201#255#200#200#201#255#200#200#201#255#200#200 + +#201#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181#255#181#181#181 + +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 + +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 + +#181#181#255#181#181#181#255'kkk'#255#200#200#201#255#181#181#181#255#181#181 + +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 + ,#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 + +#181#181#181#255#181#181#181#255#181#181#181#255'kkk'#255#200#200#201#255#181 + +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 + +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 + +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255'kkk'#255 + +#200#200#201#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 + +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 + +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 + +#181#181#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181#255#181#181 + +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 + +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 + +#181#181#181#255#181#181#181#255'kkk'#255#200#200#201#255#181#181#181#255#181 + +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 + +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 + +#255#181#181#181#255#181#181#181#255#181#181#181#255'kkk'#255#200#200#201#255 + +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 + +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 + +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255'kkk' + +#255#200#200#201#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 + +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 + +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 + +#181#181#181#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181#255#181 + +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 + +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255'"'#180#0#255 + +#181#181#181#255#181#181#181#255'kkk'#255#200#200#201#255#181#181#181#255#181 + +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 + +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 + +#255'"'#180#0#255#181#181#181#255#181#181#181#255'kkk'#255#200#200#201#255 + +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 + +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255'"'#180#0 + +#255'"'#180#0#255'"'#180#0#255'"'#180#0#255'"'#180#0#255'kkk'#255#200#200#201 + +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 + +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 + +#181#181#255#181#181#181#255'"'#180#0#255#181#181#181#255#181#181#181#255'kk' + +'k'#255#200#200#201#255#181#181#181#255#181#181#181#255#181#181#181#255#181 + +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 + +#181#181#181#255#181#181#181#255#181#181#181#255'"'#180#0#255#181#181#181#255 + +#181#181#181#255'kkk'#255#200#200#201#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255 + +'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk' + +#255'kkk'#255'kkk'#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255#255'3' + +'='#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255#255'3=' + +#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255#255'3='#255#200#200#201 + +#255#200#200#201#255#200#200#201#255#200#200#201#255#200#200#201#255#200#200 + +#201#255#200#200#201#255#200#200#201#255#200#200#201#255#200#200#201#255#200 + +#200#201#255#200#200#201#255#200#200#201#255#200#200#201#255#200#200#201#255 + +'kkk'#255#200#200#201#255#181#181#181#255#181#181#181#255#181#181#181#255#181 + +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 + +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 + +#255#181#181#181#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181#255 + +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 + +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 + +#181#255#181#181#181#255#181#181#181#255'kkk'#255#200#200#201#255#181#181#181 + +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 + +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 + +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255'kkk'#255#200#200 + +#201#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 + +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 + +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 + +#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181#255#181#181#181#255 + +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 + +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 + +#181#255#181#181#181#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181 + +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 + +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 + ,#181#181#255#181#181#181#255#181#181#181#255'kkk'#255#200#200#201#255#181#181 + +#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 + +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 + +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255'kkk'#255#200 + +#200#201#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 + +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 + +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 + +#181#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181#255#181#181#181 + +#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181 + +#181#255#181#181#181#255#0#0#208#255#181#181#181#255#181#181#181#255#181#181 + +#181#255#0#0#208#255'kkk'#255#200#200#201#255#181#181#181#255#181#181#181#255 + +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 + +#255#181#181#181#255#181#181#181#255#181#181#181#255#0#0#208#255#181#181#181 + +#255#0#0#208#255#181#181#181#255'kkk'#255#200#200#201#255#181#181#181#255#181 + +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 + +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 + +#255#0#0#208#255#181#181#181#255#181#181#181#255'kkk'#255#200#200#201#255#181 + +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 + +#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181 + +#255#0#0#208#255#181#181#181#255#0#0#208#255#181#181#181#255'kkk'#255#200#200 + +#201#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181 + +#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255#181#181#181#255 + +#0#0#208#255#181#181#181#255#181#181#181#255#181#181#181#255#0#0#208#255'kkk' + +#255#200#200#201#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'k' + +'kk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk'#255'kkk' + +#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#203#207#210'+'#207#210 + +#212#255#177#178#178#255#163#162#162#255#159#159#159#255#156#156#156#255#148 + +#148#148#255#146#146#146#255#152#152#152#255#137#137#137#255#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#208#213#214'+'#201#205#208#218#163#164#164#255#207 + +#207#207#255#209#209#209#255#208#208#208#255#209#209#209#255#206#206#206#255 + +#213#213#213#255#201#201#201#255'kkk'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#210 + +#215#217'8'#199#204#205#199#170#171#171#255#192#192#191#255#218#218#218#255 + +#224#224#224#255#226#226#226#255#228#228#228#255#233#233#233#255#208#208#208 + +#255#128#128#128#255'YYY'#255#0#0#0#0#0#0#0#0#0#0#0#0#215#220#222'<'#200#203 + +#205#193#178#179#180#255#186#186#186#255#220#220#220#255#212#212#212#255#215 + +#215#215#255#218#218#218#255#218#218#218#255#230#230#230#255#177#177#177#255 + +'OOO'#255'OOO'#255#0#0#0#0#0#0#0#0#213#219#220'3'#206#210#212#198#180#181#183 + +#255#184#184#183#255#230#230#230#255#205#205#205#255#206#206#206#255#210#210 + +#210#255#212#212#212#255#214#214#214#255#186#186#186#255#137#137#137#255'XXX' + +#255'BBB'#255#206#211#213#21#202#206#208'#'#215#219#222#209#178#179#180#255 + +#187#186#186#255#236#236#236#255#213#213#213#255#202#202#202#255#200#200#200 + +#255#203#203#203#255#200#200#200#255#186#186#186#255'~~~'#255'MMM'#255'MMM' + +#255'BCC'#251#214#219#221#154#223#228#231#243#170#172#172#255#192#192#192#255 + +#234#234#234#255#220#220#220#255#211#211#211#255#200#200#200#255#193#193#193 + +#255#191#191#191#255#189#189#189#255#127#127#127#255'QQQ'#255'EED'#255'>>?' + +#251'ILM'#226#208#212#216#154#167#168#169#247#199#199#199#255#230#230#230#255 + +#227#227#227#255#218#218#218#255#211#211#211#255#198#198#198#255#180#180#180 + +#255#185#185#185#255'|||'#255'TTT'#255'CCC'#255'((('#236#12#12#12#184'RUW' + +#216#178#180#181#229#132#132#132#253#190#189#189#255#220#220#220#255#203#203 + +#203#255#197#197#197#255#181#181#181#255#166#166#166#255#170#170#170#255'vvv' + +#255'SSS'#255'JJJ'#255'<<<'#255''''''''#237#0#0#0#139'*,-w'#136#135#135#255 + +#157#157#157#255#188#189#189#255#193#193#193#255#175#175#175#255#161#161#161 + +#255#148#148#148#255#134#134#134#255'ccc'#255'III'#255'<<<'#255'777'#255'+++' + +#244#20#20#20#197#0#0#0'm'#0#0#0'.ooo'#255#193#193#193#255#192#192#192#255 + +#168#168#168#255#153#153#153#255#140#140#140#255#132#132#132#255'rrr'#255'11' + +'1'#255'333'#255'$$$'#239#30#30#30#228#19#19#19#195#0#0#0#131#0#0#0'E'#0#0#0 + +#19'kkk'#255#144#144#144#255#140#140#140#255'|||'#255'ooo'#255'fff'#255'```' + +#255'VVV'#255'333'#255'/00'#253#14#14#14#191#0#0#0#139#0#0#0'h'#0#0#0'B'#0#0 + +#0#25#0#0#0#4'ooo'#255'QQQ'#255'CCC'#255'<<<'#255'555'#255'111'#255'...'#255 + +',,,'#255'333'#255';=>'#236#22#23#23#166#0#0#0'R'#0#0#0'"'#0#0#0#15#0#0#0#4#0 + +#0#0#0#0#0#0'#'#0#0#0'k'#0#0#0#143#0#0#0#143#0#0#0#143#0#0#0#143#0#0#0#143#0 + ,#0#0#143#0#0#0#143#0#0#0#136#0#0#0'c'#0#0#0'('#0#0#0#6#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#11#0#0#0'#'#0#0#0'/'#0#0#0'/'#0#0#0'/'#0#0#0'/'#0#0#0'/'#0#0#0'/'#0 + +#0#0'/'#0#0#0','#0#0#0#31#0#0#0#12#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0'fff'#255#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#155#155 + +#155#255#129#129#129#255'OOO'#255#16#16#16#255#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#157#157#157#255#140#140 + +#140#255']]]'#255#18#18#18#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#148#148#148#255#136#136#136#255'^^^'#255#14#14#14 + +#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#127#127#128#255'UUU'#255#1#1#1#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#160#160#160#255#170 + +#170#170#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#161#161#161#255#170#170#170#255#195#195#195#255 + +'CCC'#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#163#163#163#255#171#171#171#255#199#199#199#255'FFF'#255#17#17#17#255 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#166#166 + +#166#255#174#174#175#255#205#205#205#255'LLM'#255#17#17#17#255#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#172#172#172#255#180#180 + +#180#255#208#208#208#255'RRR'#255#19#19#19#255#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#177#177#177#255#190#190#190#255#214 + +#214#214#255'ccd'#255#28#28#28#255#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#155#225#251#255#166#166#166#255#189#189#189#255#218#218#218#255'r' + +'rs'#255'"""'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'y'#214#249#255'~~~'#255#154#154#154#255'wwx'#255'$$$'#255#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'P'#202#247 + +#255'JJJ'#255'888'#255'((('#255#18'J_'#255#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#172#236#255#0#140#192#255 + +#27'm'#140#255#19'Nd'#255#14':J'#255#255#255#255#0#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#0'~'#173#255#0'Xy'#255#20'>M'#255#16 + +'2>'#255#16'2>'#255#18'6D'#255#30'[q'#255'*'#128#159#255#18#146#194#255#20 + +#167#222#255#0#170#232#255#0#168#230#255#0#157#215#255#0#145#198#255#0'~'#173 + +#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'777'#8#29#29#29 + +#255#13#13#13#173#255#255#255#0#255#255#255#0#14#14#14#173' '#255':::'#2 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0'$$$R'#2#2#2#215#0#0#0#255#0#0#0#223#255#255#255#0 + +#255#255#255#0#0#0#0#223#0#0#0#255#3#3#3#211',,,F'#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#18#18#18#151#0#0#0#223#0#0#0#255 + +#0#0#0#255#0#0#0#223#255#255#255#0#255#255#255#0#0#0#0#223#0#0#0#255#0#0#0 + +#255#0#0#0#223#28#28#28#139#255#255#255#0#255#255#255#0#255#255#255#0#28#28 + +#28'p'#0#0#0#223#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#223#255#255#255#0#255 + +#255#255#0#0#0#0#223#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#223'000b'#255#255 + +#255#0'666'#14#1#1#1#221#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#223#0 + +#0#0#223#0#0#0#223#0#0#0#223#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#3#3#3 + +#217'ccc'#2#29#29#29#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255'EEE'#255#10#10#10#185#0#0#0#223#0#0#0#223#0#0#0#223#0#0#0#223 + ,#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#223#0#0#0 + +#223#0#0#0#223#0#0#0#223'###'#169#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#0#0#0#223#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#223#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#223#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#223#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#10#10#10#187#0#0#0#223#0#0#0#223#0 + +#0#0#223#0#0#0#223#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#223#0#0#0#223#0#0#0#223#0#0#0#223'+++'#169' '#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'bbb'#255'>>>'#14#1#1#1#221 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#223#0#0#0#223#0#0#0#223#0#0#0 + +#223#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#5#5#5#217#172#172#172#2#255#255 + +#255#0'%%%t'#0#0#0#223#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#223#255#255#255#0 + +#255#255#255#0#0#0#0#223#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#223'iiid'#255 + +#255#255#0#255#255#255#0#255#255#255#0#29#29#29#155#0#0#0#223#0#0#0#255#0#0#0 + +#255#0#0#0#223#255#255#255#0#255#255#255#0#0#0#0#223#0#0#0#255#0#0#0#255#0#0 + +#0#223'LLL'#139#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0'HHHR'#6#6#6#215#0#0#0#255#0#0#0#223#255#255#255#0#255#255#255#0#0 + +#0#0#223#0#0#0#255#11#11#11#211#139#139#139'F'#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#129 + +#129#129#8'NNN'#255'%%%'#175#255#255#255#0#255#255#255#0',,,'#173'ddd'#255 + +#190#190#190#2#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0 + +#0#0#0#0#0#225#238#225#255#197#220#197#255#219#233#219#255#244#249#244#255#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#174#213#176#255#214#248#225#255#207#250#221#255#181#248 + +#204#255'x'#216#145#255'@'#139'@'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#202#225#202#255#197#247#213 + +#255#156#244#185#255'}'#228#159#255#10'Y'#12#255#0#0#0#191#0#0#0#0#195#196 + +#237#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#149#196#149 + +#255#187#243#206#255#157#240#186#255'k'#212#142#255'N'#154'h'#255#10'D'#10 + +#255#0#0#0#191#0#0#0#0#221#221#246#255'RW'#199#255#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#132#195#132#255#134#227#165#255'l'#224#146#255'K'#170'k'#255#1 + +'/'#1#255'*Y:'#255'6U6'#255#0#0#0#191#0#0#0#0#0#0#0#0#177#180#234#255'=F'#197 + +#255#0#0#0#0#0#0#0#0#0#0#0#0#232#243#232#255#136#221#159#255'D'#207'r'#255'&' + +#142'I'#255'4;4'#255'1:1'#255'!>+'#255'[r['#255#0#0#0#191#0#0#0#0#0#0#0#0#224 + +#225#247#255'!6'#211#255#130#132#185#255#0#0#0#0#0#0#0#0'a'#177'a'#255'7'#198 + +'^'#255'$'#153'J'#255'0I0'#255#0#0#0#191#0#0#0#191#9'@'#9#255#0#0#0#191#0#0#0 + +#191#0#0#0#0#0#0#0#0#151#157#232#255#0#25#192#255#21#25'g'#255#0#0#0#0#0#0#0 + +#0#27#142#27#255#22#139'.'#255';^;'#255#0#0#0#191#0#0#0#191#0#0#0#0#0#0#0#0 + +'x'#135#241#255#0#0#0#0#0#0#0#0#185#191#246#255#0','#241#255#0#20'}'#255#17 + +#20'4'#255#0#0#0#0#0#0#0#0'd'#140'd'#255#21'W"'#255'?D?'#255#0#0#0#191#0#0#0 + +#0#0#0#0#0#194#201#249#255#161#189#254#255#235#237#253#255#233#235#253#255'3' + +'d'#254#255#2' '#147#255#0#11'<'#255'99?'#255#0#0#0#0#0#0#0#0#0#0#0#0#2'.'#3 + +#255'$5$'#255#0#0#0#191#0#0#0#0#0#0#0#0#133#151#250#255#142#182#255#255'hz' + +#238#255'p'#155#251#255#17'5'#156#255#3#18'A'#255#6#10'3'#255#0#0#0#191#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#2''''#2#255'DLD'#255#0#0#0#0#0#0#0#0#16'2'#251#255 + +'r'#178#255#255'c'#161#245#255'6\'#154#255#19'"A'#255#5#11'7'#255#0#0#0#191#0 + +#0#0#191#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'=Q='#255#0#0#0#191#0#0#0#0#9 + +'2'#181#255'S~'#161#255'5Rq'#255#26'+A'#255#23#28';'#255#0#0#0#191#0#0#0#191 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#191#0#0#0#0#23 + +'$e'#255#30'/A'#255'(6A'#255#30'/A'#255#20'$A'#255#1#9'7'#255#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#191'::@'#255'%(='#255#6#13'8'#255'%(='#255#0#0#0#191#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'ggj'#255']]a'#255'WW['#255'SSW'#255'L' + +'LP'#255#0#0#0'#'#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0'YY\'#255#192#192#198#246#196#196#202#255#175#175 + ,#180#217'CCG'#255#0#0#0'_'#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0'@@'#255#255 + +'::'#255#255'::'#255#255'=='#255#255#0#0#0'#'#0#0#0#11'MMP'#255#191#191#197 + +#246#194#194#200#255#182#182#188#206'AAD'#255#0#0#0'k'#255#255#255#0#0#0#0#0 + +#0#0#0#0''''''#255#255#17#17#255#255#11#11#255#255#24#24#255#255'++'#255#255 + +'00'#255#255#0#0#0';FFJ'#255#189#189#195#246#192#192#198#255#190#190#196#195 + +'BBF'#255#0#0#0'_'#255#255#255#0#0#0#0#0'%%'#255#255#0#0#251#255#0#0#0'w'#0#0 + +#0#143#0#0#0#143#26#26#255#255'!!'#255#255#13#13#255#255'CCG'#255#187#187#193 + +#246#187#187#193#255#184#184#189#195'EEI'#255#0#0#0'_'#255#255#255#0'11'#255 + +#255#10#10#255#255#0#0#0'w'#0#0#0'w'#0#0#0'G'#0#0#0'/'#24#24#255#255#21#21 + +#255#255#0#0#252#255'@@D'#255#181#181#187#248#182#182#188#255#178#178#183#195 + +'EEI'#255#0#0#0'_'#255#255#255#0'##'#255#255#0#0#251#255#0#0#0#143#0#0#0'G'#0 + +#0#0#11#0#0#0#0'""'#255#255#15#15#255#255#0#0#239#255'==@'#255#153#153#158 + +#227#169#169#174#213#173#173#179#156'AAE'#255#0#0#0'_'#255#255#255#0#26#26 + +#255#255#0#0#249#255#0#0#0#143#0#0#0'/'#0#0#0#0#0#0#0#0'00'#255#255#16#16#255 + +#255#0#0#234#255'<<?'#255'==A'#255'@@D'#255'??B'#255'::>'#255#0#0#0'k'#255 + +#255#255#0#23#23#255#255#0#0#253#255#0#0#0#143#0#0#0'/'#0#0#0#0#0#0#0#0'99' + +#255#255#22#22#255#255#0#0#241#255#0#0#0#179#0#0#0#143#0#0#0'k'#0#0#0'_'#0#0 + +#0'k'#0#0#0'_'#255#255#255#0#19#19#255#255#0#0#250#255#0#0#0#143#24#24#255 + +#255'::'#255#255#0#0#0'#77'#255#255#25#25#255#255#0#0#248#255#0#0#0#155#0#0 + +#209#255#0#0#197#255#0#0#0'S'#0#0#0';'#0#0#0'#'#255#255#255#0#4#4#255#255#0#0 + +#233#255#0#0#0#143#0#0#0'G'#31#31#255#255',,'#255#255'""'#255#255#10#10#255 + +#255#0#0#237#255#0#0#209#255#0#0#189#255#0#0#0'k'#0#0#0'S'#0#0#0#23#0#0#0#0 + +#255#255#255#0#0#0#237#255#0#0#208#255#0#0#0#143#0#0#0';'#0#0#249#255#3#3#255 + +#255#0#0#252#255#0#0#230#255#0#0#200#255#0#0#173#255#0#0#162#255#0#0#0#143#0 + +#0#0'G'#0#0#0#11#0#0#0#0#255#255#255#0#0#0#216#255#0#0#191#255#0#0#0#143#0#0 + +#0'/'#0#0#0'#'#0#0#222#255#0#0#209#255#0#0#185#255#0#0#158#255#0#0#140#255#0 + +#0#0#179#0#0#0'w'#0#0#0'#'#0#0#0#0#0#0#0#0#255#255#255#0#0#0#0'#'#0#0#0'k'#0 + +#0#0'k'#0#0#0'#'#0#0#0#11#0#0#0';'#0#0#184#255#0#0#156#255#0#0#135#255#0#0#0 + +#179#0#0#0#131#0#0#0';'#0#0#0#11#0#0#0#0#0#0#0#0#255#255#255#0#0#0#0#11#0#0#0 + +'#'#0#0#0'#'#0#0#0#11#0#0#0#0#0#0#0#11#0#0#0';'#0#0#159#255#0#0#0#167#0#0#0 + +#131#0#0#0';'#0#0#0#11#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#11#0#0#0'#'#0#0#0'/'#0#0#0'/'#0#0#0'/'#0#0#0'/'#0 + +#0#0'#'#0#0#0#11#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#11#0#0#0'#'#0#0#0'G'#138#211#255#255'_'#195#255#255'('#174#255#255#0 + +#159#255#255#0#136#218#255#0'w'#191#255#0#0#0#23#255#255#255#0#255#255#255#0 + +#0#0#0#11#0#0#0'#'#0#0#0'/'#0#0#0'/'#0#0#0'Gs'#202#255#255'g'#198#255#255'Q' + +#189#255#255#0#0#0'k'#0#0#0';'#0#0#0'/'#0#0#0'/'#0#0#0'#'#0#0#0#11#255#255 + +#255#0#255#255#255#0#0#0#0#23'('#174#255#255#28#170#255#255#19#166#255#255#12 + +#164#255#255#0#159#255#255#0#0#0'_'#0#149#239#255#0'}'#200#255#0#0#0'#'#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#11#0#0#0'#'#0#0 + +#0'/'#0#0#0'/'#0#0#0'/'#0#0#0'#'#0#0#0#23#0#0#0'G'#0'c'#158#255#0#0#0'G'#0#0 + +#0#11#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'#'#0'\'#148#255#0'En'#255#0#0#0'#' + +#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#11#0#0#0'G'#0'_'#152#255#0#0#0'/'#0#0 + +#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'/'#0#141#226#255#0#0#0'/'#0#0#0#0 + +#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'/'#0#151#242#255#0#0#0'/'#0#0#0#0#0#0 + +#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#11#0#0#0'G'#0#138#221#255#0#0#0'/'#0#0#0#0#0#0#0#0 + +#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0'#'#27#169#255#255#0'o'#178#255#0#0#0'/'#0#0#0#0#0#0#0 + +#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#11#0#0#0 + +'#'#0#0#0'/'#0#0#0'/'#0#0#0'S'#0#134#215#255#0'Ky'#255#0#0#0'#'#0#0#0#0#0#0#0 + +#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#23'%' + +#173#255#255#10#163#255#255#0#138#222#255#0'l'#173#255#0'Eo'#255#0#0#0';'#0#0 + +#0#11#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#11#0#0#0'#'#0#0#0'/'#0#0#0'/'#0#0#0'/'#0#0#0'#'#0#0#0#11#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0'zXA'#7'zU='#6'|V='#4'{W='#6 + +'zX@%{Y@''yXB'#10#0#0#0#0'@C_'#4#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'{W='#0'wU>'#13#171'i'#27#26'KF[m'#6'6' + +#171#223#2'5'#173#255#2'6'#176#251#6'+'#141#164#0#0#0#0'"0c'#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'<@h'#29#25'8'#142#207#9'.'#142#253 + +#1'5'#177#255#4'('#148#255#2'/'#159#254#1'2'#171#255#6'$|'#135#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#15'6'#157#188#1')'#154#255 + +#3'0'#166#255#4'%'#145#254#5'('#137#255#1#23'u'#255#1'1'#171#254#1''''#145 + +#255#7#30'j'#171#0#0#0#0#3#27'm'#0#0#0#0#0#0#0#0#0#127'rf'#0#0#0#0#0#0#9#154 + +#1#3'2'#172#226#15':'#133#241#11'v'#234#255#11'~'#240#255#18'\'#171#255#9'q' + +#229#255#3'('#148#255#0','#162#254#0#25'm'#255#5#27'k'#221#19'&f"'#0#0#0#0#0 + +#0#0#0'sf['#6'uli'#29'gkz!'#8'A'#183#239#19'~'#236#255#12#137#255#254#23'p' + +#207#255'*x'#200#255#10'{'#243#255#5'K'#186#255#0'+'#160#255#4'*'#131#255#0 + +#25'm'#254#2#23'f'#255#17#29'_$tz'#137#6'pjd*xdW(Td'#130'c!'#128#229#255#22 + +'\'#179#255#25'a'#187#255'3'#149#249#255#9'y'#243#255#5'y'#248#255#3'y'#252 + +#255#4'3'#158#255#5')'#146#255#2'!v'#255#0#20'b'#255#3#20'_'#200'|'#136#177 + +#11#129#138#170')y'#140#159'''B'#143#222#189#18'M'#161#255#14'/h'#255'4'#136 + +#229#255'7'#154#255#255#20'z'#235#255#3'w'#246#255#3's'#238#255#2']'#209#255 + +#2#21't'#255#3'!'#138#255#2#20'h'#255#1#15'['#237'z'#134#165'$p'#139#169#24 + +'n'#144#186#31'H'#152#231#198'5'#145#238#255':'#155#255#255'4'#149#251#255'2' + +#134#231#255' '#130#242#255#0'u'#244#255#0's'#238#255#0'o'#232#255#2#22'w' + +#255#1'!'#139#255#1#26'}'#255#1#11'V'#255#0#0#0#0#129#144#164#5#0#0#0#0'L' + +#150#224#165'7'#148#248#255'4'#147#250#255'/'#142#249#255'/'#141#249#255#30 + +#135#248#255#2'v'#241#255#0'q'#235#255#1'a'#211#255#1#28#132#255#1#30#133#255 + +#0#27#127#255#1#12'['#255#0#0#0#0#0#0#0#0#0#0#0#0'?'#147#236#172'2'#148#255 + +#255'0'#145#254#255'/'#143#252#255'+'#134#239#255#5'&'#136#255#2#21'q'#255#5 + +'0'#144#255#3'<'#158#255#0#29#134#255#2#25'y'#255#0#27#127#255#0#10'Z'#255#0 + +#0#0#0#0#0#0#0#0#0#0#0'(`'#185#141'.'#139#250#255'+'#134#239#255' m'#212#255 + +#3','#149#255#0#25'|'#255#1#21's'#255#0#20's'#255#2#26'}'#255#0#28#129#255#2 + +#24'v'#255#0#23'z'#255#0#9'X'#255#0#0#0#0#0#0#0#0#0#0#0#0#15','#136#137#1'''' + +#153#255#1'$'#145#255#0'#'#146#255#0'$'#145#255#0#23'x'#255#2#19'o'#255#2#26 + +'|'#255#1#27'~'#255#1#25'{'#255#1#19'r'#255#1#20'r'#255#1#6'O'#255#0#0#0#0#0 + +#0#0#0#0#0#0#0#25'*u*'#2'#'#139#255#2'"'#139#255#0'#'#143#255#1#28#129#255#2 + +#23'w'#255#1#28#127#255#0#27'~'#255#0#24'z'#255#1#17'l'#255#1#14'i'#255#0#11 + +'a'#255#0#5'A'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255'zs'#255#255#129'{'#255#255 + +#134#128#255#255#137#131#255#255#139#133#255#255#137#131#255#255#133#127#255 + +#255'~x'#255#255'vo'#255#255'kd'#255#255'`X'#255#255'SK'#255#255'F='#255#255 + +'9/'#255#255'* '#255#255#30#19#255#255'zs'#255#255#129'{'#255#255#133#127#255 + +#255#136#130#255#255#137#131#255#255#136#130#255#255#130'|'#255#255'{u'#255 + +#255'qj'#255#255'e]'#255#255'WO'#255#255'I@'#255#255';1'#255#255',"'#255#255 + +#30#19#255#255#17#5#255#255'wp'#255#255'}w'#255#255#130'|'#255#255#133#127 + +#255#255#133#127#255#255#131'}'#255#255'}w'#255#255'un'#255#255'ha'#255#255 + +'[S'#255#255'LC'#255#255'>4'#255#255'-#'#255#255#30#19#255#255#15#3#255#245 + +#12#0#255#255'rk'#255#255'yr'#255#255'|v'#255#255#127'y'#255#255#127'y'#255 + +#255'|v'#255#255'vo'#255#255'kd'#255#255'^V'#255#255'OF'#255#255'?5'#255#255 + +'.$'#255#255#30#19#255#255#14#2#255#242#11#0#255#229#11#0#255#255'kd'#255#255 + +'qj'#255#255'tm'#255#255'vo'#255#255'un'#255#255'rk'#255#255'kd'#255#255'`X' + +#255#255'RI'#255#255'@7'#255#255'/%'#255#255#30#19#255#255#13#1#255#240#11#0 + +#255#224#11#0#255#212#10#0#255#255'c['#255#255'g_'#255#255'ha'#255#255'ib' + +#255#255'ha'#255#255'd\'#255#255'\T'#255#255'PG'#255#255'@7'#255#255'.$'#255 + +#255#28#17#255#255#12#0#255#238#11#0#255#221#10#0#255#206#10#0#255#195#9#0 + +#255#255'WO'#255#255'YQ'#255#255'ZR'#255#255'YQ'#255#255'VN'#255#255'RI'#255 + +#255'H?'#255#255';1'#255#255'*'#31#255#255#24#13#255#250#12#0#255#232#11#0 + +#255#215#10#0#255#200#9#0#255#187#9#0#255#177#8#0#255#255'I@'#255#255'I@'#255 + +#255'H?'#255#255'E<'#255#255'@7'#255#255'9/'#255#255'.$'#255#255'!'#22#255 + +#255#16#4#255#241#11#0#255#223#10#0#255#206#10#0#255#191#9#0#255#178#8#0#255 + +#167#8#0#255#159#7#0#255#255':0'#255#255'7-'#255#255'3)'#255#255'-#'#255#255 + +''''#28#255#255#30#19#255#255#19#7#255#247#12#0#255#229#11#0#255#211#10#0#255 + +#194#9#0#255#179#8#0#255#167#8#0#255#155#7#0#255#147#7#0#255#143#7#0#255#255 + +'*'#31#255#255'$'#25#255#255#29#18#255#255#22#10#255#255#13#1#255#245#12#0 + ,#255#232#11#0#255#215#10#0#255#198#9#0#255#181#9#0#255#166#8#0#255#153#7#0 + +#255#143#7#0#255#135#6#0#255#129#6#0#255#128#6#0#255#255#26#15#255#255#18#6 + +#255#252#12#0#255#242#11#0#255#230#11#0#255#218#10#0#255#203#10#0#255#187#9#0 + +#255#170#8#0#255#155#7#0#255#141#7#0#255#131#6#0#255'{'#6#0#255'v'#6#0#255's' + +#5#0#255't'#5#0#255#255#12#0#255#245#12#0#255#233#11#0#255#220#10#0#255#206 + +#10#0#255#193#9#0#255#178#8#0#255#161#8#0#255#146#7#0#255#132#6#0#255'y'#6#0 + +#255'q'#5#0#255'k'#5#0#255'h'#5#0#255'h'#5#0#255'k'#5#0#255#240#11#0#255#227 + +#11#0#255#214#10#0#255#200#9#0#255#185#9#0#255#170#8#0#255#155#7#0#255#140#7 + +#0#255'}'#6#0#255'q'#5#0#255'h'#5#0#255'b'#5#0#255'_'#4#0#255'^'#4#0#255'`'#5 + +#0#255'e'#5#0#255#226#11#0#255#212#10#0#255#196#9#0#255#181#9#0#255#165#8#0 + +#255#150#7#0#255#135#6#0#255'y'#6#0#255'l'#5#0#255'b'#5#0#255'['#4#0#255'V'#4 + +#0#255'V'#4#0#255'V'#4#0#255'Z'#4#0#255'b'#5#0#255#213#10#0#255#197#9#0#255 + +#181#9#0#255#164#8#0#255#149#7#0#255#134#6#0#255'w'#6#0#255'j'#5#0#255'_'#4#0 + +#255'V'#4#0#255'Q'#4#0#255'O'#4#0#255'O'#4#0#255'R'#4#0#255'X'#4#0#255'a'#5#0 + +#255#203#10#0#255#185#9#0#255#168#8#0#255#152#7#0#255#137#6#0#255'z'#6#0#255 + +'l'#5#0#255'a'#5#0#255'W'#4#0#255'P'#4#0#255'M'#4#0#255'L'#4#0#255'N'#4#0#255 + +'S'#4#0#255'Y'#4#0#255'd'#5#0#255#0#0#9'TTrayIcon'#9'MTrayIcon'#9'Icon.Data' + +#10#250#3#0#0#246#3#0#0#0#0#1#0#1#0#16#14#0#0#1#0' '#0#224#3#0#0#22#0#0#0'(' + +#0#0#0#16#0#0#0#28#0#0#0#1#0' '#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#25'*u*'#2'#'#139#255#2'"'#139#255#0'#'#143#255#1 + +#28#129#255#2#23'w'#255#1#28#127#255#0#27'~'#255#0#24'z'#255#1#17'l'#255#1#14 + +'i'#255#0#11'a'#255#0#5'A'#255#0#0#0#0#0#0#0#0#0#0#0#0#15','#136#137#1'''' + +#153#255#1'$'#145#255#0'#'#146#255#0'$'#145#255#0#23'x'#255#2#19'o'#255#2#26 + +'|'#255#1#27'~'#255#1#25'{'#255#1#19'r'#255#1#20'r'#255#1#6'O'#255#0#0#0#0#0 + +#0#0#0#0#0#0#0'(`'#185#141'.'#139#250#255'+'#134#239#255' m'#212#255#3','#149 + +#255#0#25'|'#255#1#21's'#255#0#20's'#255#2#26'}'#255#0#28#129#255#2#24'v'#255 + +#0#23'z'#255#0#9'X'#255#0#0#0#0#0#0#0#0#0#0#0#0'?'#147#236#172'2'#148#255#255 + +'0'#145#254#255'/'#143#252#255'+'#134#239#255#5'&'#136#255#2#21'q'#255#5'0' + +#144#255#3'<'#158#255#0#29#134#255#2#25'y'#255#0#27#127#255#0#10'Z'#255#0#0#0 + +#0#129#144#164#5#0#0#0#0'L'#150#224#165'7'#148#248#255'4'#147#250#255'/'#142 + +#249#255'/'#141#249#255#30#135#248#255#2'v'#241#255#0'q'#235#255#1'a'#211#255 + +#1#28#132#255#1#30#133#255#0#27#127#255#1#12'['#255'z'#134#165'$p'#139#169#24 + +'n'#144#186#31'H'#152#231#198'5'#145#238#255':'#155#255#255'4'#149#251#255'2' + +#134#231#255' '#130#242#255#0'u'#244#255#0's'#238#255#0'o'#232#255#2#22'w' + +#255#1'!'#139#255#1#26'}'#255#1#11'V'#255'|'#136#177#11#129#138#170')y'#140 + +#159'''B'#143#222#189#18'M'#161#255#14'/h'#255'4'#136#229#255'7'#154#255#255 + +#20'z'#235#255#3'w'#246#255#3's'#238#255#2']'#209#255#2#21't'#255#3'!'#138 + +#255#2#20'h'#255#1#15'['#237'tz'#137#6'pjd*xdW(Td'#130'c!'#128#229#255#22'\' + +#179#255#25'a'#187#255'3'#149#249#255#9'y'#243#255#5'y'#248#255#3'y'#252#255 + +#4'3'#158#255#5')'#146#255#2'!v'#255#0#20'b'#255#3#20'_'#200#0#0#0#0'sf['#6 + +'uli'#29'gkz!'#8'A'#183#239#19'~'#236#255#12#137#255#254#23'p'#207#255'*x' + +#200#255#10'{'#243#255#5'K'#186#255#0'+'#160#255#4'*'#131#255#0#25'm'#254#2 + +#23'f'#255#17#29'_$'#0#0#0#0#127'rf'#0#0#0#0#0#0#9#154#1#3'2'#172#226#15':' + +#133#241#11'v'#234#255#11'~'#240#255#18'\'#171#255#9'q'#229#255#3'('#148#255 + +#0','#162#254#0#25'm'#255#5#27'k'#221#19'&f"'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#15'6'#157#188#1')'#154#255#3'0'#166#255#4'%'#145#254#5'('#137#255#1 + +#23'u'#255#1'1'#171#254#1''''#145#255#7#30'j'#171#0#0#0#0#3#27'm'#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'<@h'#29#25'8'#142#207#9'.'#142#253#1'5'#177 + +#255#4'('#148#255#2'/'#159#254#1'2'#171#255#6'$|'#135#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'{W='#0'wU>'#13#171'i'#27#26'KF[m'#6'6'#171 + +#223#2'5'#173#255#2'6'#176#251#6'+'#141#164#0#0#0#0'"0c'#0#0#0#0#0#0#0#0#0#0 + +#0#0#0'zXA'#7'zU='#6'|V='#4'{W='#6'zX@%{Y@''yXB'#10#0#0#0#0'@C_'#4#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#240#0#0#0#224#0#0#0#224#0#0#0 + +#224#0#0#0#224#0#0#0#224#0#0#0#224#0#0#0#240#0#0#0#240#1#0#0#240#3#0#0#240#7 + +#0#0#248#15#0#0#254#31#0#0#255#255#0#0#7'Visible'#9#7'OnClick'#7#6'NoTray'#4 + +'left'#3#208#1#0#0#0 +]); diff --git a/Projects/SAMufasaGUI/testunit.pas b/Projects/SAMufasaGUI/testunit.pas index 94d2b43..56cfe4d 100644 --- a/Projects/SAMufasaGUI/testunit.pas +++ b/Projects/SAMufasaGUI/testunit.pas @@ -21,9 +21,9 @@ type { TForm1 } TForm1 = class(TForm) + Memo1: TMemo; Mufasa_Image_List: TImageList; MainMenu1: TMainMenu; - Memo1: TMemo; MenuItemScript: TMenuItem; MenuItemRun: TMenuItem; SynEdit1: TSynEdit; diff --git a/Units/MMLAddon/PSInc/Wrappers/bitmap.inc b/Units/MMLAddon/PSInc/Wrappers/bitmap.inc index ec5b560..1ddee8a 100644 --- a/Units/MMLAddon/PSInc/Wrappers/bitmap.inc +++ b/Units/MMLAddon/PSInc/Wrappers/bitmap.inc @@ -1,104 +1,132 @@ -function CreateBitmap(w,h : integer):integer; -begin - result := CurrThread.Client.MBitmaps.CreateBMP(w,h); -end; - -procedure FreeBitmap(Number : integer); -begin - CurrThread.Client.MBitmaps.FreeBMP(Number); -end; - -procedure SaveBitmap(Bmp : integer; path : string); -begin; - CurrThread.Client.MBitmaps.Bmp[Bmp].SaveToFile(Path); -end; - -function BitmapFromString(Width,height : integer; Data : string) : integer; -begin; - Result := CurrThread.Client.MBitmaps.CreateBMPFromString(Width,Height,Data); -end; - -function LoadBitmap(Path : String) : integer; -begin; - Result := CurrThread.Client.MBitmaps.CreateBMPFromFile(Path); -end; - -procedure SetBitmapSize(Bmp,NewW,NewH : integer); -begin; - if (NewW>=0) and (NewH >=0) then - CurrThread.Client.MBitmaps.Bmp[Bmp].SetSize(NewW,NewH); -end; - -procedure GetBitmapSize(Bmp : integer; var BmpW,BmpH : integer); -begin; - With CurrThread.Client.MBitmaps.Bmp[bmp] do - begin; - BmpW := width; - BmpH := Height; - end; -end; - -function CreateMirroredBitmap(Bmp : integer) : integer; -begin; - Result := CurrThread.Client.MBitmaps.CreateMirroredBitmap(Bmp, MirrorWidth); -end; - -function CreateMirroredBitmapEx(Bmp : integer; MirrorStyle : TBmpMirrorStyle) : integer; -begin; - Result := CurrThread.Client.MBitmaps.CreateMirroredBitmap(Bmp,MirrorStyle); -end; - -function FastGetPixel(bmp,x,y : integer) : LongWord; -begin; - Result := CurrThread.Client.MBitmaps.Bmp[Bmp].FastGetPixel(x,y); -end; - -function FastGetPixels(bmp : integer; TPA : TPointArray) : TIntegerArray; -begin; - result := CurrThread.Client.MBitmaps.Bmp[Bmp].FastGetPixels(TPA); -end; - -procedure FastSetPixel(Bmp,x,y : integer; Color : TColor); -begin - CurrThread.Client.MBitmaps.Bmp[bmp].FastSetPixel(x,y,color); -end; - -procedure FastSetPixels(Bmp : integer; TPA : TPointArray; Colors : TIntegerArray); -begin; - CurrThread.Client.MBitmaps.Bmp[Bmp].FastSetPixels(TPA,Colors); -end; - -procedure FastDrawClear(bmp : integer; Color : TColor); -begin; - CurrThread.Client.MBitmaps.Bmp[bmp].FastDrawClear(Color); -end; - -procedure FastDrawTransparent(x, y: Integer; SourceBitmap, TargetBitmap: Integer); -begin; - CurrThread.Client.MBitmaps.Bmp[SourceBitmap].FastDrawTransparent(x,y,CurrThread.Client.MBitmaps.Bmp[TargetBitmap]); -end; - -procedure SetTransparentColor(Bmp : integer; Color : TColor); -begin - CurrThread.Client.MBitmaps.Bmp[Bmp].SetTransparentColor(Color); -end; - -function GetTransparentColor(Bmp : integer) : TColor; -begin; - Result := CurrThread.Client.MBitmaps.Bmp[bmp].GetTransparentColor; -end; - -procedure FastReplaceColor(bmp: Integer; OldColor, NewColor: TColor); -begin - CurrThread.Client.MBitmaps.Bmp[Bmp].FastReplaceColor(OldColor,NewColor); -end; - -procedure ps_CopyClientToBitmap(bmp, xs, ys, xe, ye: Integer); -var - mBMP: TMufasaBitmap; -begin - mBMP := CurrThread.Client.MBitmaps.GetBMP(bmp); - if mBMP = nil then - exit; - mBMP.CopyClientToBitmap(CurrThread.Client.MWindow, xs, ys, xe, ye); -end; +function CreateBitmap(w,h : integer):integer; +begin + result := CurrThread.Client.MBitmaps.CreateBMP(w,h); +end; + +procedure FreeBitmap(Number : integer); +begin + CurrThread.Client.MBitmaps.FreeBMP(Number); +end; + +procedure SaveBitmap(Bmp : integer; path : string); +begin; + CurrThread.Client.MBitmaps.Bmp[Bmp].SaveToFile(Path); +end; + +function BitmapFromString(Width,height : integer; Data : string) : integer; +begin; + Result := CurrThread.Client.MBitmaps.CreateBMPFromString(Width,Height,Data); +end; + +function LoadBitmap(Path : String) : integer; +begin; + Result := CurrThread.Client.MBitmaps.CreateBMPFromFile(Path); +end; + +procedure SetBitmapSize(Bmp,NewW,NewH : integer); +begin; + if (NewW>=0) and (NewH >=0) then + CurrThread.Client.MBitmaps.Bmp[Bmp].SetSize(NewW,NewH); +end; + +procedure GetBitmapSize(Bmp : integer; var BmpW,BmpH : integer); +begin; + With CurrThread.Client.MBitmaps.Bmp[bmp] do + begin; + BmpW := width; + BmpH := Height; + end; +end; + +procedure SetBitmapName(Bmp : integer; name : string); +begin; + CurrThread.Client.MBitmaps.Bmp[Bmp].BmpName:= name; +end; + +function CreateMirroredBitmap(Bmp : integer) : integer; +begin; + Result := CurrThread.Client.MBitmaps.CreateMirroredBitmap(Bmp, MirrorWidth); +end; + +function CreateMirroredBitmapEx(Bmp : integer; MirrorStyle : TBmpMirrorStyle) : integer; +begin; + Result := CurrThread.Client.MBitmaps.CreateMirroredBitmap(Bmp,MirrorStyle); +end; + +function FastGetPixel(bmp,x,y : integer) : LongWord; +begin; + Result := CurrThread.Client.MBitmaps.Bmp[Bmp].FastGetPixel(x,y); +end; + +function FastGetPixels(bmp : integer; TPA : TPointArray) : TIntegerArray; +begin; + result := CurrThread.Client.MBitmaps.Bmp[Bmp].FastGetPixels(TPA); +end; + +procedure FastSetPixel(Bmp,x,y : integer; Color : TColor); +begin + CurrThread.Client.MBitmaps.Bmp[bmp].FastSetPixel(x,y,color); +end; + +procedure FastSetPixels(Bmp : integer; TPA : TPointArray; Colors : TIntegerArray); +begin; + CurrThread.Client.MBitmaps.Bmp[Bmp].FastSetPixels(TPA,Colors); +end; + +procedure FastDrawClear(bmp : integer; Color : TColor); +begin; + CurrThread.Client.MBitmaps.Bmp[bmp].FastDrawClear(Color); +end; + +procedure FastDrawTransparent(x, y: Integer; SourceBitmap, TargetBitmap: Integer); +begin; + CurrThread.Client.MBitmaps.Bmp[SourceBitmap].FastDrawTransparent(x,y,CurrThread.Client.MBitmaps.Bmp[TargetBitmap]); +end; + +procedure SetTransparentColor(Bmp : integer; Color : TColor); +begin + CurrThread.Client.MBitmaps.Bmp[Bmp].SetTransparentColor(Color); +end; + +function GetTransparentColor(Bmp : integer) : TColor; +begin; + Result := CurrThread.Client.MBitmaps.Bmp[bmp].GetTransparentColor; +end; + +procedure FastReplaceColor(bmp: Integer; OldColor, NewColor: TColor); +begin + CurrThread.Client.MBitmaps.Bmp[Bmp].FastReplaceColor(OldColor,NewColor); +end; + +procedure ps_CopyClientToBitmap(bmp, xs, ys, xe, ye: Integer); +var + mBMP: TMufasaBitmap; +begin + mBMP := CurrThread.Client.MBitmaps.GetBMP(bmp); + if mBMP = nil then + exit; + mBMP.CopyClientToBitmap(CurrThread.Client.MWindow, xs, ys, xe, ye); +end; + +function FindBitmap(Bitmap: integer; var x, y: Integer): Boolean; +begin; + with CurrThread.Client do + result := MFinder.FindBitmap( MBitmaps.Bmp[bitmap],x,y); +end; + +function FindBitmapIn(bitmap: integer; var x, y: Integer; xs, ys, xe, ye: Integer): Boolean; +begin; + with CurrThread.Client do + result := MFinder.FindBitmapIn( MBitmaps.Bmp[bitmap],x,y,xs,ys,xe,ye); +end; + +function FindBitmapToleranceIn(bitmap: integer; var x, y: Integer; xs, ys, xe, ye: Integer; tolerance: Integer): Boolean; +begin; + with CurrThread.Client do + result := MFinder.FindBitmapToleranceIn( MBitmaps.Bmp[bitmap],x,y,xs,ys,xe,ye,tolerance); +end; + + + + + diff --git a/Units/MMLAddon/PSInc/pscompile.inc b/Units/MMLAddon/PSInc/pscompile.inc index 6e86d97..60a290f 100644 --- a/Units/MMLAddon/PSInc/pscompile.inc +++ b/Units/MMLAddon/PSInc/pscompile.inc @@ -1,82 +1,86 @@ - -Sender.Comp.AddTypeS('TIntegerArray', 'Array of integer'); -Sender.Comp.AddTypeS('TPointArray','Array of TPoint'); -Sender.Comp.AddTypeS('TBmpMirrorStyle','(MirrorWidth,MirrorHeight,MirrorLine)'); - - -Sender.Comp.AddTypes('TDTMPointDef', 'record x, y, Color, Tolerance, AreaSize, AreaShape: integer; end;'); -Sender.Comp.AddTypes('TDTMPointDefArray', 'Array Of TDTMPointDef;'); -Sender.Comp.AddTypes('TDTM','record MainPoint: TDTMPointDef; SubPoints: TDTMPointDefArray; end;'); -Sender.Comp.AddTypeS('pDTM','record p: TPointArray; c, t, asz, ash: TIntegerArray; end'); -Sender.Comp.AddTypeS('T2DExtendedArray', 'array of array of extended'); - -Sender.AddFunction(@ThreadSafeCall,'function ThreadSafeCall(ProcName: string; var V: TVariantArray): Variant;'); -Sender.AddFunction(@psWriteln,'procedure writeln(s : string);'); - -{ DTM } - -Sender.AddFunction(@PrintpDTM, 'Procedure PrintpDTM(tDTM : pDTM);'); -Sender.AddFunction(@ps_GetDTM ,'function GetDTM(index: Integer; var dtm: pDTM): Boolean;'); -Sender.AddFunction(@pDTMToTDTM, 'Function pDTMToTDTM(Const DTM: pDTM): TDTM;'); -Sender.AddFunction(@tDTMTopDTM, 'Function tDTMTopDTM(Const DTM: TDTM): pDTM;'); -Sender.AddFunction(@ps_DTMFromString, 'function DTMFromString(DTMString: String): Integer;'); -Sender.AddFunction(@ps_FreeDTM, 'procedure FreeDTM(DTM: Integer);'); -Sender.AddFunction(@ps_FindDTM, 'function FindDTM(DTM: Integer; var x, y: Integer; x1, y1, x2, y2: Integer): Boolean;'); -Sender.AddFunction(@ps_FindDTMs, 'function FindDTMs(DTM: Integer; var p: TPointArray; x1, y1, x2, y2: Integer): Boolean;'); -Sender.AddFunction(@ps_FindDTMRotated, 'function FindDTMRotated(DTM: Integer; var x, y: Integer; x1, y1, x2, y2: Integer; sAngle, eAngle, aStep: Extended; var aFound: Extended): Boolean;'); -Sender.AddFunction(@ps_FindDTMsRotated, 'function FindDTMsRotated(DTM: Integer; var Points: TPointArray; x1, y1, x2, y2: Integer; sAngle, eAngle, aStep: Extended; var aFound: T2DExtendedArray) : Boolean;'); -Sender.AddFunction(@ps_addDTM, 'function AddDTM(d: TDTM): Integer;'); -Sender.AddFunction(@ps_addpDTM, 'function AddpDTM(d: pDTM): Integer;'); - -{maths} -sender.AddFunction(@power,'function pow(base,exponent : extended) : extended'); -Sender.AddFunction(@max,'function Max(a, b: Integer): Integer;'); -Sender.AddFunction(@min,'function Min(a, b: Integer): Integer;'); -Sender.AddFunction(@pssqr,'function Sqr(e : extended) : extended;'); -Sender.AddFunction(@point,'function Point(x,y:integer) : TPoint;'); - -Sender.AddFunction(@Freeze, 'function freeze:boolean;'); -Sender.AddFunction(@Unfreeze, 'function unfreeze: boolean;'); - -Sender.AddFunction(@GetColor,'function GetColor(x, y: Integer): Integer;'); -Sender.AddFunction(@FindColor, 'function findcolor(var x, y: integer; color, x1, y1, x2, y2: integer): boolean;'); -Sender.AddFunction(@FindColorTolerance, 'function findcolortolerance(var x, y: integer; color, x1, y1, x2, y2, tol: integer): boolean;'); -Sender.AddFunction(@FindColors, 'function findcolors(var TPA: TPointArray; color, x1, y1, x2, y2: integer): boolean;'); -Sender.AddFunction(@SimilarColors,'function SimilarColors(Col1,Col2,Tolerance : integer) : boolean'); -Sender.AddFunction(@CountColorTolerance,'function CountColorTolerance(Color, xs, ys, xe, ye, Tolerance: Integer): Integer;'); -Sender.AddFunction(@FindColorsTolerance,'function FindColorsTolerance(var Points: TPointArray; Color, xs, ys, xe, ye, Tolerance: Integer): Boolean;'); - -Sender.AddFunction(@MoveMouse, 'procedure MoveMouse(x, y: integer);'); -Sender.AddFunction(@GetMousePos, 'procedure GetMousePos(var x, y: integer);'); - -Sender.AddFunction(@Wait, 'procedure wait(t: integer);'); -Sender.AddFunction(@GetClientDimensions, 'procedure GetClientDimensions(var w, h:integer);'); -Sender.AddFunction(@SetColorToleranceSpeed, 'procedure SetColorToleranceSpeed(cts: integer);'); -Sender.AddFunction(@GetTickCount, 'function GetSystemTime: Integer;'); - -Sender.AddFunction(@CreateBitmap,'function CreateBitmap(w,h :integer) : integer;'); -Sender.AddFunction(@FreeBitmap,'procedure FreeBitmap(Bmp : integer);'); -Sender.AddFunction(@SaveBitmap,'procedure SaveBitmap(Bmp : integer; path : string);'); -Sender.AddFunction(@BitmapFromString,'function BitmapFromString(Width,Height : integer; Data : string): integer;'); -Sender.AddFunction(@LoadBitmap,'function LoadBitmap(Path : string) : integer;'); -Sender.AddFunction(@SetBitmapSize,'procedure SetBitmapSize(Bmp,NewW,NewH : integer);'); -Sender.AddFunction(@GetBitmapSize,'procedure GetBitmapSize(Bmp : integer; Var BmpW,BmpH : integer);'); -Sender.AddFunction(@CreateMirroredBitmap,'function CreateMirroredBitmap(Bmp : integer) : integer;'); -Sender.AddFunction(@CreateMirroredBitmapEx,'function CreateMirroredBitmapEx(Bmp : integer; MirrorStyle : TBmpMirrorStyle) : integer;'); -Sender.AddFunction(@FastSetPixel,'procedure FastSetPixel(bmp,x,y : integer; Color : TColor);'); -Sender.AddFunction(@FastSetPixels,'procedure FastSetPixels(bmp : integer; TPA : TPointArray; Colors : TIntegerArray);'); -Sender.AddFunction(@FastGetPixel,'function FastGetPixel(bmp, x,y : integer) : TColor;'); -Sender.AddFunction(@FastGetPixels,'function FastGetPixels(Bmp : integer; TPA : TPointArray) : TIntegerArray;'); -Sender.AddFunction(@FastDrawClear,'procedure FastDrawClear(bmp : integer; Color : TColor)'); -Sender.AddFunction(@FastDrawTransparent,'procedure FastDrawTransparent(x, y: Integer; SourceBitmap, TargetBitmap: Integer);'); -Sender.AddFunction(@SetTransparentColor,'procedure SetTransparentColor(bmp : integer; Color : TColor);'); -Sender.AddFunction(@GetTransparentColor,'function GetTransparentColor(bmp: integer) : TColor;'); -Sender.AddFunction(@FastReplaceColor,'procedure FastReplaceColor(Bmp : integer; OldColor,NewColor : TColor);'); -Sender.AddFunction(@ps_CopyClientToBitmap, 'procedure CopyClientToBitmap(bmp, xs, ys, xe, ye: Integer);'); - - - - - - - + +Sender.Comp.AddTypeS('TIntegerArray', 'Array of integer'); +Sender.Comp.AddTypeS('TPointArray','Array of TPoint'); +Sender.Comp.AddTypeS('TBmpMirrorStyle','(MirrorWidth,MirrorHeight,MirrorLine)'); + + +Sender.Comp.AddTypes('TDTMPointDef', 'record x, y, Color, Tolerance, AreaSize, AreaShape: integer; end;'); +Sender.Comp.AddTypes('TDTMPointDefArray', 'Array Of TDTMPointDef;'); +Sender.Comp.AddTypes('TDTM','record MainPoint: TDTMPointDef; SubPoints: TDTMPointDefArray; end;'); +Sender.Comp.AddTypeS('pDTM','record p: TPointArray; c, t, asz, ash: TIntegerArray; end'); +Sender.Comp.AddTypeS('T2DExtendedArray', 'array of array of extended'); + +Sender.AddFunction(@ThreadSafeCall,'function ThreadSafeCall(ProcName: string; var V: TVariantArray): Variant;'); +Sender.AddFunction(@psWriteln,'procedure writeln(s : string);'); + +{ DTM } + +Sender.AddFunction(@PrintpDTM, 'Procedure PrintpDTM(tDTM : pDTM);'); +Sender.AddFunction(@ps_GetDTM ,'function GetDTM(index: Integer; var dtm: pDTM): Boolean;'); +Sender.AddFunction(@pDTMToTDTM, 'Function pDTMToTDTM(Const DTM: pDTM): TDTM;'); +Sender.AddFunction(@tDTMTopDTM, 'Function tDTMTopDTM(Const DTM: TDTM): pDTM;'); +Sender.AddFunction(@ps_DTMFromString, 'function DTMFromString(DTMString: String): Integer;'); +Sender.AddFunction(@ps_FreeDTM, 'procedure FreeDTM(DTM: Integer);'); +Sender.AddFunction(@ps_FindDTM, 'function FindDTM(DTM: Integer; var x, y: Integer; x1, y1, x2, y2: Integer): Boolean;'); +Sender.AddFunction(@ps_FindDTMs, 'function FindDTMs(DTM: Integer; var p: TPointArray; x1, y1, x2, y2: Integer): Boolean;'); +Sender.AddFunction(@ps_FindDTMRotated, 'function FindDTMRotated(DTM: Integer; var x, y: Integer; x1, y1, x2, y2: Integer; sAngle, eAngle, aStep: Extended; var aFound: Extended): Boolean;'); +Sender.AddFunction(@ps_FindDTMsRotated, 'function FindDTMsRotated(DTM: Integer; var Points: TPointArray; x1, y1, x2, y2: Integer; sAngle, eAngle, aStep: Extended; var aFound: T2DExtendedArray) : Boolean;'); +Sender.AddFunction(@ps_addDTM, 'function AddDTM(d: TDTM): Integer;'); +Sender.AddFunction(@ps_addpDTM, 'function AddpDTM(d: pDTM): Integer;'); + +{maths} +sender.AddFunction(@power,'function pow(base,exponent : extended) : extended'); +Sender.AddFunction(@max,'function Max(a, b: Integer): Integer;'); +Sender.AddFunction(@min,'function Min(a, b: Integer): Integer;'); +Sender.AddFunction(@pssqr,'function Sqr(e : extended) : extended;'); +Sender.AddFunction(@classes.point,'function Point(x,y:integer) : TPoint;'); + +Sender.AddFunction(@Freeze, 'function freeze:boolean;'); +Sender.AddFunction(@Unfreeze, 'function unfreeze: boolean;'); + +Sender.AddFunction(@GetColor,'function GetColor(x, y: Integer): Integer;'); +Sender.AddFunction(@FindColor, 'function findcolor(var x, y: integer; color, x1, y1, x2, y2: integer): boolean;'); +Sender.AddFunction(@FindColorTolerance, 'function findcolortolerance(var x, y: integer; color, x1, y1, x2, y2, tol: integer): boolean;'); +Sender.AddFunction(@FindColors, 'function findcolors(var TPA: TPointArray; color, x1, y1, x2, y2: integer): boolean;'); +Sender.AddFunction(@SimilarColors,'function SimilarColors(Col1,Col2,Tolerance : integer) : boolean'); +Sender.AddFunction(@CountColorTolerance,'function CountColorTolerance(Color, xs, ys, xe, ye, Tolerance: Integer): Integer;'); +Sender.AddFunction(@FindColorsTolerance,'function FindColorsTolerance(var Points: TPointArray; Color, xs, ys, xe, ye, Tolerance: Integer): Boolean;'); + +Sender.AddFunction(@MoveMouse, 'procedure MoveMouse(x, y: integer);'); +Sender.AddFunction(@GetMousePos, 'procedure GetMousePos(var x, y: integer);'); + +Sender.AddFunction(@Wait, 'procedure wait(t: integer);'); +Sender.AddFunction(@GetClientDimensions, 'procedure GetClientDimensions(var w, h:integer);'); +Sender.AddFunction(@SetColorToleranceSpeed, 'procedure SetColorToleranceSpeed(cts: integer);'); +Sender.AddFunction(@GetTickCount, 'function GetSystemTime: Integer;'); + +Sender.AddFunction(@CreateBitmap,'function CreateBitmap(w,h :integer) : integer;'); +Sender.AddFunction(@FreeBitmap,'procedure FreeBitmap(Bmp : integer);'); +Sender.AddFunction(@SaveBitmap,'procedure SaveBitmap(Bmp : integer; path : string);'); +Sender.AddFunction(@BitmapFromString,'function BitmapFromString(Width,Height : integer; Data : string): integer;'); +Sender.AddFunction(@LoadBitmap,'function LoadBitmap(Path : string) : integer;'); +Sender.AddFunction(@SetBitmapSize,'procedure SetBitmapSize(Bmp,NewW,NewH : integer);'); +Sender.AddFunction(@GetBitmapSize,'procedure GetBitmapSize(Bmp : integer; Var BmpW,BmpH : integer);'); +Sender.AddFunction(@CreateMirroredBitmap,'function CreateMirroredBitmap(Bmp : integer) : integer;'); +Sender.AddFunction(@CreateMirroredBitmapEx,'function CreateMirroredBitmapEx(Bmp : integer; MirrorStyle : TBmpMirrorStyle) : integer;'); +Sender.AddFunction(@FastSetPixel,'procedure FastSetPixel(bmp,x,y : integer; Color : TColor);'); +Sender.AddFunction(@FastSetPixels,'procedure FastSetPixels(bmp : integer; TPA : TPointArray; Colors : TIntegerArray);'); +Sender.AddFunction(@FastGetPixel,'function FastGetPixel(bmp, x,y : integer) : TColor;'); +Sender.AddFunction(@FastGetPixels,'function FastGetPixels(Bmp : integer; TPA : TPointArray) : TIntegerArray;'); +Sender.AddFunction(@FastDrawClear,'procedure FastDrawClear(bmp : integer; Color : TColor)'); +Sender.AddFunction(@FastDrawTransparent,'procedure FastDrawTransparent(x, y: Integer; SourceBitmap, TargetBitmap: Integer);'); +Sender.AddFunction(@SetTransparentColor,'procedure SetTransparentColor(bmp : integer; Color : TColor);'); +Sender.AddFunction(@GetTransparentColor,'function GetTransparentColor(bmp: integer) : TColor;'); +Sender.AddFunction(@FastReplaceColor,'procedure FastReplaceColor(Bmp : integer; OldColor,NewColor : TColor);'); +Sender.AddFunction(@ps_CopyClientToBitmap, 'procedure CopyClientToBitmap(bmp, xs, ys, xe, ye: Integer);'); +Sender.AddFunction(@SetBitmapName, 'procedure SetBitmapName(Bmp : integer; name : string);'); +Sender.AddFunction(@FindBitmap,'function FindBitmap(bitmap: integer; var x, y: Integer): Boolean;'); +Sender.AddFunction(@FindBitmapIn,'function FindBitmapIn(bitmap: integer; var x, y: Integer; xs, ys, xe, ye: Integer): Boolean;'); +sender.AddFunction(@FindBitmapToleranceIn,'function FindBitmapToleranceIn(bitmap: integer; var x, y: Integer; xs, ys, xe, ye: Integer; tolerance: Integer): Boolean;'); + + + + + + + diff --git a/Units/MMLAddon/mmlpsthread.pas b/Units/MMLAddon/mmlpsthread.pas index 9668a9a..6d92ffc 100644 --- a/Units/MMLAddon/mmlpsthread.pas +++ b/Units/MMLAddon/mmlpsthread.pas @@ -1,283 +1,282 @@ -unit mmlpsthread; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, SysUtils, client, uPSComponent,uPSCompiler,uPSRuntime,stdCtrls, uPSPreProcessor; - -type - - { TMMLPSThread } - - TMMLPSThread = class(TThread) - procedure PSScriptProcessUnknowDirective(Sender: TPSPreProcessor; - Parser: TPSPascalPreProcessorParser; const Active: Boolean; - const DirectiveName, DirectiveParam: string; var Continue: Boolean); - protected - DebugTo : TMemo; - PluginsToload : Array of integer; - procedure OnCompile(Sender: TPSScript); - procedure AfterExecute(Sender : TPSScript); - function RequireFile(Sender: TObject; const OriginFileName: String; - var FileName, OutPut: string): Boolean; - procedure OnCompImport(Sender: TObject; x: TPSPascalCompiler); - procedure OnExecImport(Sender: TObject; se: TPSExec; x: TPSRuntimeClassImporter); - procedure OutputMessages; - procedure OnThreadTerminate(Sender: TObject); - procedure Execute; override; - public - PSScript : TPSScript; // Moved to public, as we can't kill it otherwise. - Client : TClient; - procedure SetPSScript(Script : string); - procedure SetDebug( Strings : TMemo ); - constructor Create(CreateSuspended: Boolean); - destructor Destroy; override; - end; - -implementation -uses - MufasaTypes, dtmutil, - {$ifdef mswindows}windows,{$endif} - uPSC_std, uPSC_controls,uPSC_classes,uPSC_graphics,uPSC_stdctrls,uPSC_forms, - uPSC_extctrls, //Compile-libs - - uPSR_std, uPSR_controls,uPSR_classes,uPSR_graphics,uPSR_stdctrls,uPSR_forms, - uPSR_extctrls, //Runtime-libs - Graphics, //For Graphics types - math, //Maths! - bitmaps, - lclintf; // for GetTickCount and others. - - -threadvar - CurrThread : TMMLPSThread; - -{Some General PS Functions here} -procedure psWriteln(str : string); -begin - {$IFNDEF MSWINDOWS} - writeln(str); - {$ELSE} - if CurrThread.DebugTo <> nil then - CurrThread.DebugTo.lines.add(str); - {$ENDIF} -end; - -function ThreadSafeCall(ProcName: string; var V: TVariantArray): Variant; - -begin; - Writeln('We have a length of: ' + inttostr(length(v))); - Try - Result := CurrThread.PSScript.Exec.RunProcPVar(v,CurrThread.PSScript.Exec.GetProc(Procname)); - Except - Writeln('We has some errors :-('); - end; -end; - - -{ - Note to Raymond: For PascalScript, Create it on the .Create, - Execute it on the .Execute, and don't forget to Destroy it on .Destroy. - - Furthermore, all the wrappers can be in the unit "implementation" section. - Better still to create an .inc for it, otherwise this unit will become huge. - (You can even split up the .inc's in stuff like color, bitmap, etc. ) - - Also, don't add PS to this unit, but make a seperate unit for it. - Unit "MMLPSThread", perhaps? - - See the TestUnit for use of this thread, it's pretty straightforward. - - It may also be wise to turn the "Importing of wrappers" into an include as - well, it will really make the unit more straightforward to use and read. -} - - -constructor TMMLPSThread.Create(CreateSuspended : boolean); -begin - SetLength(PluginsToLoad,0); - Client := TClient.Create; - PSScript := TPSScript.Create(nil); - PSScript.UsePreProcessor:= True; - PSScript.OnNeedFile := @RequireFile; - PSScript.OnProcessUnknowDirective:=@PSScriptProcessUnknowDirective; - PSScript.OnCompile:= @OnCompile; - PSScript.OnCompImport:= @OnCompImport; - PSScript.OnExecImport:= @OnExecImport; - PSScript.OnAfterExecute:= @AfterExecute; - - // Set some defines - {$I PSInc/psdefines.inc} - - - FreeOnTerminate := True; - Self.OnTerminate := @Self.OnThreadTerminate; - inherited Create(CreateSuspended); -end; - -procedure TMMLPSThread.OnThreadTerminate(Sender: TObject); -begin -// Writeln('Terminating the thread'); -end; - -destructor TMMLPSThread.Destroy; -begin - SetLength(PluginsToLoad,0); - Client.Free; - PSScript.Free; - inherited; -end; - -// include PS wrappers -{$I PSInc/Wrappers/other.inc} -{$I PSInc/Wrappers/bitmap.inc} - -{$I PSInc/Wrappers/colour.inc} -{$I PSInc/Wrappers/math.inc} -{$I PSInc/Wrappers/mouse.inc} -{$I PSInc/Wrappers/dtm.inc} - - - -procedure TMMLPSThread.PSScriptProcessUnknowDirective(Sender: TPSPreProcessor; - Parser: TPSPascalPreProcessorParser; const Active: Boolean; - const DirectiveName, DirectiveParam: string; var Continue: Boolean); -var - TempNum : integer; - I: integer; -begin - if DirectiveName= 'LOADDLL' then - if DirectiveParam <> '' then - begin; - TempNum := PluginsGlob.LoadPlugin(DirectiveParam); - if TempNum < 0 then - Writeln(Format('Your DLL %s has not been found',[DirectiveParam])) - else - begin; - for i := High(PluginsToLoad) downto 0 do - if PluginsToLoad[i] = TempNum then - Exit; - SetLength(PluginsToLoad,Length(PluginsToLoad)+1); - PluginsToLoad[High(PluginsToLoad)] := TempNum; - end; - end; - Continue:= True; -end; - -procedure TMMLPSThread.OnCompile(Sender: TPSScript); -var - i,ii : integer; -begin - for i := high(PluginsToLoad) downto 0 do - for ii := 0 to PluginsGlob.MPlugins[PluginsToLoad[i]].MethodLen - 1 do - PSScript.AddFunctionEx(PluginsGlob.MPlugins[PluginsToLoad[i]].Methods[i].FuncPtr, - PluginsGlob.MPlugins[PluginsToLoad[i]].Methods[i].FuncStr, cdStdCall); - // Here we add all the functions to the engine. - {$I PSInc/pscompile.inc} -end; - -procedure TMMLPSThread.AfterExecute(Sender: TPSScript); -begin - //Here we add all the Script-freeing-leftovers (like BMParray etc) - // ^ This will all be done with Client.Destroy; -end; - -function TMMLPSThread.RequireFile(Sender: TObject; - const OriginFileName: String; var FileName, OutPut: string): Boolean; -begin - - Result := False; -end; - -procedure TMMLPSThread.OnCompImport(Sender: TObject; x: TPSPascalCompiler); -begin - SIRegister_Std(x); - SIRegister_Controls(x); - SIRegister_Classes(x, true); - SIRegister_Graphics(x, true); - SIRegister_stdctrls(x); - SIRegister_Forms(x); - SIRegister_ExtCtrls(x); -end; - -procedure TMMLPSThread.OnExecImport(Sender: TObject; se: TPSExec; - x: TPSRuntimeClassImporter); -begin - RIRegister_Std(x); - RIRegister_Classes(x, True); - RIRegister_Controls(x); - RIRegister_Graphics(x, True); - RIRegister_stdctrls(x); - RIRegister_Forms(x); - RIRegister_ExtCtrls(x); -end; - -procedure TMMLPSThread.OutputMessages; -var - l: Longint; - b: Boolean; -begin - b := False; - for l := 0 to PSScript.CompilerMessageCount - 1 do - begin - psWriteln(PSScript.CompilerErrorToStr(l)); - if (not b) and (PSScript.CompilerMessages[l] is TIFPSPascalCompilerError) then - begin - b := True; -// FormMain.CurrSynEdit.SelStart := PSScript.CompilerMessages[l].Pos; - - end; - end; -end; - -procedure TMMLPSThread.Execute; -var - time: Integer; -begin; - CurrThread := Self; - time := lclintf.GetTickCount; - try - if PSScript.Compile then - begin - OutputMessages; - psWriteln('Compiled succesfully in ' + IntToStr(GetTickCount - time) + ' ms.'); -// if not (ScriptState = SCompiling) then - if not PSScript.Execute then - begin -// FormMain.CurrSynEdit.SelStart := Script.PSScript.ExecErrorPosition; - psWriteln(PSScript.ExecErrorToString +' at '+Inttostr(PSScript.ExecErrorProcNo)+'.' - +Inttostr(PSScript.ExecErrorByteCodePosition)); - end else psWriteln('Succesfully executed'); - end else - begin - OutputMessages; - psWriteln('Compiling failed'); - end; - except - on E : Exception do - psWriteln('Error: ' + E.Message); - end; -end; - -procedure TMMLPSThread.SetPSScript(Script: string); -begin - PSScript.Script.Text:= Script; -end; - -procedure TMMLPSThread.SetDebug(Strings: TMemo); -begin - DebugTo := Strings; -end; - - -{ Include stuff here? } - -//{$I inc/colors.inc} -//{$I inc/bitmaps.inc} - - -end. - - +unit mmlpsthread; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, client, uPSComponent,uPSCompiler,uPSRuntime,stdCtrls, uPSPreProcessor; + +type + + { TMMLPSThread } + + TMMLPSThread = class(TThread) + procedure PSScriptProcessUnknowDirective(Sender: TPSPreProcessor; + Parser: TPSPascalPreProcessorParser; const Active: Boolean; + const DirectiveName, DirectiveParam: string; var Continue: Boolean); + protected + DebugTo : TMemo; + PluginsToload : Array of integer; + procedure OnCompile(Sender: TPSScript); + procedure AfterExecute(Sender : TPSScript); + function RequireFile(Sender: TObject; const OriginFileName: String; + var FileName, OutPut: string): Boolean; + procedure OnCompImport(Sender: TObject; x: TPSPascalCompiler); + procedure OnExecImport(Sender: TObject; se: TPSExec; x: TPSRuntimeClassImporter); + procedure OutputMessages; + procedure OnThreadTerminate(Sender: TObject); + procedure Execute; override; + public + PSScript : TPSScript; // Moved to public, as we can't kill it otherwise. + Client : TClient; + procedure SetPSScript(Script : string); + procedure SetDebug( Strings : TMemo ); + constructor Create(CreateSuspended: Boolean); + destructor Destroy; override; + end; + +implementation +uses + MufasaTypes, dtmutil, + {$ifdef mswindows}windows,{$endif} + uPSC_std, uPSC_controls,uPSC_classes,uPSC_graphics,uPSC_stdctrls,uPSC_forms, + uPSC_extctrls, //Compile-libs + + uPSR_std, uPSR_controls,uPSR_classes,uPSR_graphics,uPSR_stdctrls,uPSR_forms, + uPSR_extctrls, //Runtime-libs + Graphics, //For Graphics types + math, //Maths! + bitmaps, + lclintf; // for GetTickCount and others. + + +threadvar + CurrThread : TMMLPSThread; + +{Some General PS Functions here} +procedure psWriteln(str : string); +begin + {$IFNDEF MSWINDOWS} + writeln(str); + {$ELSE} + if CurrThread.DebugTo <> nil then + CurrThread.DebugTo.lines.add(str); + {$ENDIF} +end; + +function ThreadSafeCall(ProcName: string; var V: TVariantArray): Variant; + +begin; + Writeln('We have a length of: ' + inttostr(length(v))); + Try + Result := CurrThread.PSScript.Exec.RunProcPVar(v,CurrThread.PSScript.Exec.GetProc(Procname)); + Except + Writeln('We has some errors :-('); + end; +end; + + +{ + Note to Raymond: For PascalScript, Create it on the .Create, + Execute it on the .Execute, and don't forget to Destroy it on .Destroy. + + Furthermore, all the wrappers can be in the unit "implementation" section. + Better still to create an .inc for it, otherwise this unit will become huge. + (You can even split up the .inc's in stuff like color, bitmap, etc. ) + + Also, don't add PS to this unit, but make a seperate unit for it. + Unit "MMLPSThread", perhaps? + + See the TestUnit for use of this thread, it's pretty straightforward. + + It may also be wise to turn the "Importing of wrappers" into an include as + well, it will really make the unit more straightforward to use and read. +} + + +constructor TMMLPSThread.Create(CreateSuspended : boolean); +begin + SetLength(PluginsToLoad,0); + Client := TClient.Create; + PSScript := TPSScript.Create(nil); + PSScript.UsePreProcessor:= True; + PSScript.OnNeedFile := @RequireFile; + PSScript.OnProcessUnknowDirective:=@PSScriptProcessUnknowDirective; + PSScript.OnCompile:= @OnCompile; + PSScript.OnCompImport:= @OnCompImport; + PSScript.OnExecImport:= @OnExecImport; + PSScript.OnAfterExecute:= @AfterExecute; + + // Set some defines + {$I PSInc/psdefines.inc} + + + FreeOnTerminate := True; + Self.OnTerminate := @Self.OnThreadTerminate; + inherited Create(CreateSuspended); +end; + +procedure TMMLPSThread.OnThreadTerminate(Sender: TObject); +begin +// Writeln('Terminating the thread'); +end; + +destructor TMMLPSThread.Destroy; +begin + SetLength(PluginsToLoad,0); + Client.Free; + PSScript.Free; + inherited; +end; + +// include PS wrappers +{$I PSInc/Wrappers/other.inc} +{$I PSInc/Wrappers/bitmap.inc} +{$I PSInc/Wrappers/colour.inc} +{$I PSInc/Wrappers/math.inc} +{$I PSInc/Wrappers/mouse.inc} +{$I PSInc/Wrappers/dtm.inc} + + + +procedure TMMLPSThread.PSScriptProcessUnknowDirective(Sender: TPSPreProcessor; + Parser: TPSPascalPreProcessorParser; const Active: Boolean; + const DirectiveName, DirectiveParam: string; var Continue: Boolean); +var + TempNum : integer; + I: integer; +begin + if DirectiveName= 'LOADDLL' then + if DirectiveParam <> '' then + begin; + TempNum := PluginsGlob.LoadPlugin(DirectiveParam); + if TempNum < 0 then + Writeln(Format('Your DLL %s has not been found',[DirectiveParam])) + else + begin; + for i := High(PluginsToLoad) downto 0 do + if PluginsToLoad[i] = TempNum then + Exit; + SetLength(PluginsToLoad,Length(PluginsToLoad)+1); + PluginsToLoad[High(PluginsToLoad)] := TempNum; + end; + end; + Continue:= True; +end; + +procedure TMMLPSThread.OnCompile(Sender: TPSScript); +var + i,ii : integer; +begin + for i := high(PluginsToLoad) downto 0 do + for ii := 0 to PluginsGlob.MPlugins[PluginsToLoad[i]].MethodLen - 1 do + PSScript.AddFunctionEx(PluginsGlob.MPlugins[PluginsToLoad[i]].Methods[i].FuncPtr, + PluginsGlob.MPlugins[PluginsToLoad[i]].Methods[i].FuncStr, cdStdCall); + // Here we add all the functions to the engine. + {$I PSInc/pscompile.inc} +end; + +procedure TMMLPSThread.AfterExecute(Sender: TPSScript); +begin + //Here we add all the Script-freeing-leftovers (like BMParray etc) + // ^ This will all be done with Client.Destroy; +end; + +function TMMLPSThread.RequireFile(Sender: TObject; + const OriginFileName: String; var FileName, OutPut: string): Boolean; +begin + + Result := False; +end; + +procedure TMMLPSThread.OnCompImport(Sender: TObject; x: TPSPascalCompiler); +begin + SIRegister_Std(x); + SIRegister_Controls(x); + SIRegister_Classes(x, true); + SIRegister_Graphics(x, true); + SIRegister_stdctrls(x); + SIRegister_Forms(x); + SIRegister_ExtCtrls(x); +end; + +procedure TMMLPSThread.OnExecImport(Sender: TObject; se: TPSExec; + x: TPSRuntimeClassImporter); +begin + RIRegister_Std(x); + RIRegister_Classes(x, True); + RIRegister_Controls(x); + RIRegister_Graphics(x, True); + RIRegister_stdctrls(x); + RIRegister_Forms(x); + RIRegister_ExtCtrls(x); +end; + +procedure TMMLPSThread.OutputMessages; +var + l: Longint; + b: Boolean; +begin + b := False; + for l := 0 to PSScript.CompilerMessageCount - 1 do + begin + psWriteln(PSScript.CompilerErrorToStr(l)); + if (not b) and (PSScript.CompilerMessages[l] is TIFPSPascalCompilerError) then + begin + b := True; +// FormMain.CurrSynEdit.SelStart := PSScript.CompilerMessages[l].Pos; + + end; + end; +end; + +procedure TMMLPSThread.Execute; +var + time: Integer; +begin; + CurrThread := Self; + time := lclintf.GetTickCount; + try + if PSScript.Compile then + begin + OutputMessages; + psWriteln('Compiled succesfully in ' + IntToStr(GetTickCount - time) + ' ms.'); +// if not (ScriptState = SCompiling) then + if not PSScript.Execute then + begin +// FormMain.CurrSynEdit.SelStart := Script.PSScript.ExecErrorPosition; + psWriteln(PSScript.ExecErrorToString +' at '+Inttostr(PSScript.ExecErrorProcNo)+'.' + +Inttostr(PSScript.ExecErrorByteCodePosition)); + end else psWriteln('Succesfully executed'); + end else + begin + OutputMessages; + psWriteln('Compiling failed'); + end; + except + on E : Exception do + psWriteln('Error: ' + E.Message); + end; +end; + +procedure TMMLPSThread.SetPSScript(Script: string); +begin + PSScript.Script.Text:= Script; +end; + +procedure TMMLPSThread.SetDebug(Strings: TMemo); +begin + DebugTo := Strings; +end; + + +{ Include stuff here? } + +//{$I inc/colors.inc} +//{$I inc/bitmaps.inc} + + +end. + + diff --git a/Units/MMLCore/bitmaps.pas b/Units/MMLCore/bitmaps.pas index f205304..d73b857 100644 --- a/Units/MMLCore/bitmaps.pas +++ b/Units/MMLCore/bitmaps.pas @@ -18,6 +18,7 @@ type public FData : PRGB32; Index : integer; + BmpName : string; //Optional? procedure SetSize(AWidth,AHeight : integer); property Width : Integer read w; property Height : Integer read h; @@ -52,7 +53,8 @@ type function CreateBMP(w, h: integer): Integer; function CreateMirroredBitmap(bitmap: Integer; MirrorStyle : TBmpMirrorStyle): Integer; function CreateBMPFromFile(const Path : string) : integer; - function CreateBMPFromString(width,height : integer; Data : string) : integer; + function CreateBMPFromString(width,height : integer; Data : string) : integer;overload; + function CreateBMPFromString(BmpName : string; width,height : integer; Data : string) : integer;overload; procedure FreeBMP( Number : integer); constructor Create(Owner : TObject); destructor Destroy;override; @@ -235,6 +237,14 @@ begin end; end; +function TMBitmaps.CreateBMPFromString(BmpName: string; width, height: integer; + Data: string): integer; +begin + Result := Self.CreateBMPFromString(width,height,data); + Bmp[Result].BmpName:= BmpName; + +end; + procedure TMBitmaps.FreeBMP(Number: integer); var ToDestroy : TMufasaBitmap; @@ -252,6 +262,11 @@ begin end; FreeSpots[FreeSpotsHigh] := Number; end; + //Just for testing purposes + if ToDestroy.BmpName = '' then + Writeln(Format('BMP[%d] has been freed.',[number])) + else + Writeln(Format('BMP[%s] has been freed.',[ToDestroy.BmpName])); FreeAndNil(ToDestroy); end; @@ -439,7 +454,13 @@ var begin for i := 0 to BmpsCurr do if BmpArray[i] <> nil then + begin; + if BmpArray[i].BmpName = '' then + Writeln(Format('BMP[%d] has not been freed in the script, freeing it now.',[i])) + else + Writeln(Format('BMP[%s] has not been freed in the script, freeing it now.',[BmpArray[i].BmpName])); FreeAndNil(BmpArray[i]); + end; SetLength(BmpArray,0); SetLength(FreeSpots,0); inherited Destroy; @@ -485,6 +506,7 @@ end; constructor TMufasaBitmap.Create; begin inherited Create; + BmpName:= ''; FData:= nil; TransparentSet:= False; w := 0; diff --git a/Units/MMLCore/finder.pas b/Units/MMLCore/finder.pas index 0e95ec1..9c88c4a 100644 --- a/Units/MMLCore/finder.pas +++ b/Units/MMLCore/finder.pas @@ -1,449 +1,603 @@ -unit finder; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, SysUtils, MufasaTypes; // Types - -{ TMFinder Class } - -{ - Should be 100% independant, as all platform dependant code is in the - Window and Input classes. - - Let's try not to use any OS-specific defines here? ;) -} - -type - TMFinder = class(TObject) - constructor Create(aClient: TObject); - destructor Destroy; override; - private - Procedure UpdateCachedValues(NewWidth,NewHeight : integer); - procedure DefaultOperations(var x1,y1,x2,y2 : integer); - public - function CountColorTolerance(Color, xs, ys, xe, ye, Tolerance: Integer): Integer; - procedure SetToleranceSpeed(nCTS: Integer); - function SimilarColors(Color1,Color2,Tolerance : Integer) : boolean; - // Possibly turn x, y into a TPoint var. - function FindColor(var x, y: Integer; Color, x1, y1, x2, y2: Integer): Boolean; - function FindColorTolerance(var x, y: Integer; Color, x1, y1, x2, y2, tol: Integer): Boolean; - function FindColorsTolerance(var Points: TPointArray; Color, xs, ys, xe, ye, Tol: Integer): Boolean; - function FindColors(var TPA: TPointArray; Color, x1, y1, x2, y2: Integer): Boolean; - protected - Client: TObject; - CachedWidth, CachedHeight : integer; - ClientTPA : TPointArray; - hueMod, satMod: Extended; - CTS: Integer; - - end; - -implementation -uses - Client, // For the Client Casts. - colour_conv // For RGBToColor, etc. - ; - - -constructor TMFinder.Create(aClient: TObject); - -begin - inherited Create; - - Self.Client := aClient; - Self.CTS := 1; - Self.hueMod := 0.2; - Self.satMod := 0.2; - -end; - -destructor TMFinder.Destroy; -begin - - inherited; -end; - -procedure TMFinder.SetToleranceSpeed(nCTS: Integer); -begin - if (nCTS < 0) or (nCTS > 2) then - raise Exception.CreateFmt('The given CTS ([%d]) is invalid.',[nCTS]); - Self.CTS := nCTS; -end; - -function TMFinder.SimilarColors(Color1, Color2,Tolerance: Integer) : boolean; -var - R1,G1,B1,R2,G2,B2 : Byte; - H1,S1,L1,H2,S2,L2 : extended; -begin - Result := False; - ColorToRGB(Color1,R1,G1,B1); - ColorToRGB(Color2,R2,G2,B2); - if Color1 = Color2 then - Result := true - else - case CTS of - 0: Result := ((Abs(R1-R2) <= Tolerance) and (Abs(G1-G2) <= Tolerance) and (Abs(B1-B2) <= Tolerance)); - 1: Result := (Sqrt(sqr(R1-R2) + sqr(G1-G2) + sqr(B1-B2)) <= Tolerance); - 2: begin - RGBToHSL(R1,g1,b1,H1,S1,L1); - RGBToHSL(R2,g2,b2,H2,S2,L2); - Result := ((abs(H1 - H2) <= (hueMod * Tolerance)) and (abs(S2-S1) <= (satMod * Tolerance)) and (abs(L1-L2) <= Tolerance)); - end; - end; -end; - - -function ColorSame(var CTS,Tolerance : Integer; var R1,B1,G1,R2,G2,B2 : byte; var H1,S1,L1,huemod,satmod : extended) : boolean; inline; -var - H2,S2,L2 : extended; -begin - Result := False; - case CTS of - 0: Result := ((Abs(R1-R2) <= Tolerance) and (Abs(G1-G2) <= Tolerance) and (Abs(B1-B2) <= Tolerance)); - 1: Result := (Sqrt(sqr(R1-R2) + sqr(G1-G2) + sqr(B1-B2)) <= Tolerance); - 2: begin - RGBToHSL(R1,g1,b1,H1,S1,L1); - RGBToHSL(R2,g2,b2,H2,S2,L2); - Result := ((abs(H1 - H2) <= (hueMod * Tolerance)) and (abs(S2-S1) <= (satMod * Tolerance)) and (abs(L1-L2) <= Tolerance)); - end; - end; -end; - -procedure TMFinder.UpdateCachedValues(NewWidth, NewHeight: integer); -begin - CachedWidth := NewWidth; - CachedHeight := NewHeight; - SetLength(ClientTPA,NewWidth * NewHeight); -end; - -procedure TMFinder.DefaultOperations(var x1, y1, x2, y2: integer); -var - w,h : integer; -begin -{ if x1 > x2 then - Swap(x1,x2); - if y1 > y2 then - Swap(y1,y2);} - if x1 < 0 then - // x1 := 0; - raise Exception.createFMT('Any FindColor Function, you did not pass a ' + - 'correct x1: %d.', [x1]); - if y1 < 0 then -// y1 := 0; - raise Exception.createFMT('Any FindColor Function, you did not pass a ' + - 'correct y1: %d.', [y1]); - - TClient(Self.Client).MWindow.GetDimensions(w,h); - if (w <> CachedWidth) or (h <> CachedHeight) then - UpdateCachedValues(w,h); - if x2 >= w then -// x2 := w-1; - raise Exception.createFMT('Any FindColor Function, you did not pass a ' + - 'correct x2: %d.', [x2]); - if y2 >= h then -// y2 := h-1; - raise Exception.createFMT('Any FindColor Function, you did not pass a ' + - 'correct y2: %d.', [y2]); -end; - -function TMFinder.CountColorTolerance(Color, xs, ys, xe, ye, Tolerance: Integer): Integer; -var - PtrData: TRetData; - Ptr: PRGB32; - PtrInc: Integer; - clR, clG, clB : byte; - dX, dY, xx, yy: Integer; - h,s,l,hmod,smod : extended; - Ccts : integer; -begin - DefaultOperations(xs, ys, xe, ye); - dX := xe - xs; - dY := ye - ys; - ColorToRGB(Color, clR, clG, clB); - PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); - Ptr := PtrData.Ptr; - PtrInc := PtrData.IncPtrWith; - CCts := Self.CTS; - result := 0; - if cts = 2 then - begin; - RGBToHSL(clR,clG,clB,h,s,l); - hmod := Self.hueMod; - smod := Self.satMod; - end; - for yy := ys to ye do - begin; - for xx := xs to xe do - begin; - if ColorSame(CCts,Tolerance,clR,clG,clB,Ptr^.r,Ptr^.g,Ptr^.b,H,S,L,hmod,smod) then - inc(result); - Inc(Ptr); - end; - Inc(Ptr, PtrInc) - end; - TClient(Client).MWindow.FreeReturnData; -end; - -function TMFinder.FindColor(var x, y: Integer; Color, x1, y1, x2, y2: Integer): Boolean; -var - PtrData: TRetData; - Ptr: PRGB32; - PtrInc: Integer; - dX, dY, clR, clG, clB, xx, yy: Integer; - -begin - - // checks for valid x1,y1,x2,y2? (may involve GetDimensions) - DefaultOperations(x1,y1,x2,y2); - - // calculate delta x and y - dX := x2 - x1; - dY := y2 - y1; - - //next, convert the color to r,g,b - ColorToRGB(Color, clR, clG, clB); - - PtrData := TClient(Client).MWindow.ReturnData(x1, y1, dX + 1, dY + 1); - - // Do we want to "cache" these vars? - // We will, for now. Easier to type. - Ptr := PtrData.Ptr; - PtrInc := PtrData.IncPtrWith; - - for yy := y1 to y2 do - begin; - for xx := x1 to x2 do - begin; - // Colour comparison here. Possibly with tolerance? ;) - if (Ptr^.R = clR) and (Ptr^.G = clG) and (Ptr^.B = clB) then - begin - Result := True; - x := xx; - y := yy; - - TClient(Client).MWindow.FreeReturnData; - Exit; - end; - Inc(Ptr); - end; - Inc(Ptr, PtrInc) - end; - - TClient(Client).MWindow.FreeReturnData; -end; - -function TMFinder.FindColorTolerance(var x, y: Integer; Color, x1, y1, x2, y2, tol: Integer): Boolean; -var - PtrData: TRetData; - Ptr: PRGB32; - PtrInc: Integer; - dX, dY, clR, clG, clB, xx, yy: Integer; - H1, S1, L1, H2, S2, L2: Extended; - - label Hit; - label Miss; - -begin - - // checks for valid x1,y1,x2,y2? (may involve GetDimensions) - DefaultOperations(x1,y1,x2,y2); - - // calculate delta x and y - dX := x2 - x1; - dY := y2 - y1; - //next, convert the color to r,g,b - ColorToRGB(Color, clR, clG, clB); - ColorToHSL(Color, H1, S1, L1); - - PtrData := TClient(Client).MWindow.ReturnData(x1, y1, dX + 1, dY + 1); - - // Do we want to "cache" these vars? - // We will, for now. Easier to type. - Ptr := PtrData.Ptr; - PtrInc := PtrData.IncPtrWith; - - case CTS of - 0: - for yy := y1 to y2 do - begin - for xx := x1 to x2 do - begin - if ((abs(clB-Ptr^.B) <= Tol) and (abs(clG-Ptr^.G) <= Tol) and (Abs(clR-Ptr^.R) <= Tol)) then - goto Hit; - inc(Ptr); - end; - Inc(Ptr, PtrInc); - end; - - 1: - begin - Tol := Sqr(Tol); - - for yy := y1 to y2 do - begin - for xx := x1 to x2 do - begin - if (sqr(clB - Ptr^.B) + sqr(clG - Ptr^.G) + sqr(clR-Ptr^.R)) <= Tol then - goto Hit; - inc(ptr); - end; - Inc(Ptr, PtrInc); - end; - - end; - 2: - // Can be optimized a lot... RGBToHSL isn't really inline, - // and hueMod * tol is also calculated every time. - begin - for yy := y1 to y2 do - for xx := x1 to x2 do - begin - RGBToHSL(Ptr^.R,Ptr^.G,Ptr^.B,H2,S2,L2); - if ((abs(H1 - H2) <= (hueMod * tol)) and (abs(S1 - S2) <= (satMod * tol)) and (abs(L1 - L2) <= Tol)) then - goto Hit; - inc(Ptr); - end; - Inc(Ptr, PtrInc); - end; - end; - Result := False; - TClient(Client).MWindow.FreeReturnData; - Exit; - - Hit: - Result := True; - x := xx; - y := yy; - TClient(Client).MWindow.FreeReturnData; -end; - -function TMFinder.FindColorsTolerance(var Points: TPointArray; Color, xs, ys, - xe, ye, Tol: Integer): Boolean; -var - PtrData: TRetData; - Ptr: PRGB32; - PtrInc,C: Integer; - dX, dY, clR, clG, clB, xx, yy: Integer; - H1, S1, L1, H2, S2, L2: Extended; -begin - DefaultOperations(xs,ys,xe,ye); - - dX := xe - xs; - dY := ye - ys; - //next, convert the color to r,g,b - ColorToRGB(Color, clR, clG, clB); - ColorToHSL(Color, H1, S1, L1); - - PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); - - // Do we want to "cache" these vars? - // We will, for now. Easier to type. - Ptr := PtrData.Ptr; - PtrInc := PtrData.IncPtrWith; - c := 0; - case CTS of - 0: - for yy := ys to ye do - begin - for xx := xs to xe do - begin - if ((abs(clB-Ptr^.B) <= Tol) and (abs(clG-Ptr^.G) <= Tol) and (Abs(clR-Ptr^.R) <= Tol)) then - begin; - ClientTPA[c].x := xx; - ClientTPA[c].y := yy; - inc(c); - end; - inc(Ptr); - end; - Inc(Ptr, PtrInc); - end; - - 1: - for yy := ys to ye do - begin - for xx := xs to xe do - begin - if (Sqrt(sqr(clR-Ptr^.R) + sqr(clG - Ptr^.G) + sqr(clB - Ptr^.B)) <= Tol) then - begin; - ClientTPA[c].x := xx; - ClientTPA[c].y := yy; - inc(c); - end; - inc(ptr); - end; - Inc(Ptr, PtrInc); - end; - 2: - begin - for yy := ys to ye do - for xx := xs to xe do - begin - RGBToHSL(Ptr^.R,Ptr^.G,Ptr^.B,H2,S2,L2); - if ((abs(H1 - H2) <= (hueMod * tol)) and (abs(S1 - S2) <= (satMod * tol)) and (abs(L1 - L2) <= Tol)) then - begin; - ClientTPA[c].x := xx; - ClientTPA[c].y := yy; - inc(c); - end; - inc(Ptr); - end; - Inc(Ptr, PtrInc); - end; - end; - SetLength(Points, C); - Move(ClientTPA[0], Points[0], C * SizeOf(TPoint)); - Result := C > 0; - TClient(Client).MWindow.FreeReturnData; -end; - -function TMFinder.FindColors(var TPA: TPointArray; Color, x1, y1, x2, y2: Integer): Boolean; -var - PtrData: TRetData; - Ptr: PRGB32; - PtrInc: Integer; - dX, dY, clR, clG, clB, xx, yy, i: Integer; - -begin - DefaultOperations(x1,y1,x2,y2); - - dX := x2 - x1; - dY := y2 - y1; - - I := 0; - - ColorToRGB(Color, clR, clG, clB); - - PtrData := TClient(Client).MWindow.ReturnData(x1, y1, dX + 1, dY + 1); - - Ptr := PtrData.Ptr; - PtrInc := PtrData.IncPtrWith; - - for yy := y1 to y2 do - begin; - for xx := x1 to x2 do - begin; - if (Ptr^.R = clR) and (Ptr^.G = clG) and (Ptr^.B = clB) then - begin - Self.ClientTPA[I].x := xx; - Self.ClientTPA[i].y := yy; - Inc(I); - end; - Inc(Ptr); - end; - Inc(Ptr, PtrInc); - end; - - SetLength(TPA, I); - - Move(ClientTPA[0], TPA[0], i * SizeOf(TPoint)); - - Result := I > 0; - - TClient(Client).MWindow.FreeReturnData; -end; - -end. - +unit finder; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils,bitmaps, MufasaTypes; // Types + +{ TMFinder Class } + +{ + Should be 100% independant, as all platform dependant code is in the + Window and Input classes. + + Let's try not to use any OS-specific defines here? ;) +} + +type + TMFinder = class(TObject) + constructor Create(aClient: TObject); + destructor Destroy; override; + private + Procedure UpdateCachedValues(NewWidth,NewHeight : integer); + procedure DefaultOperations(var xs,ys,xe,ye : integer); + public + function CountColorTolerance(Color, xs, ys, xe, ye, Tolerance: Integer): Integer; + procedure SetToleranceSpeed(nCTS: Integer); + function SimilarColors(Color1,Color2,Tolerance : Integer) : boolean; + // Possibly turn x, y into a TPoint var. + function FindColor(var x, y: Integer; Color, xs, ys, xe, ye: Integer): Boolean; + function FindColorTolerance(var x, y: Integer; Color, xs, ys, xe, ye, tol: Integer): Boolean; + function FindColorsTolerance(var Points: TPointArray; Color, xs, ys, xe, ye, Tol: Integer): Boolean; + function FindColors(var TPA: TPointArray; Color, xs, ys, xe, ye: Integer): Boolean; + //Bitmap functions + function FindBitmap(bitmap: TMufasaBitmap; var x, y: Integer): Boolean; + function FindBitmapIn(bitmap: TMufasaBitmap; var x, y: Integer; xs, ys, xe, ye: Integer): Boolean; + function FindBitmapToleranceIn(bitmap: TMufasaBitmap; var x, y: Integer; xs, ys, xe, ye: Integer; tolerance: Integer): Boolean; + protected + Client: TObject; + CachedWidth, CachedHeight : integer; + ClientTPA : TPointArray; + hueMod, satMod: Extended; + CTS: Integer; + end; + +implementation +uses + Client, // For the Client Casts. + colour_conv // For RGBToColor, etc. + ; +type + TPRGB32Array = array of PRGB32; + +function CalculateRowPtrs(ReturnData : TRetData; RowCount : integer) : TPRGB32Array;overload; +var + I : integer; +begin; + setlength(result,RowCount); + for i := 0 to RowCount - 1do + begin; + result[i] := ReturnData.Ptr; + inc(ReturnData.Ptr,ReturnData.IncPtrWith); + end; +end; + +function CalculateRowPtrs(Bitmap : TMufasaBitmap) : TPRGB32Array;overload; +var + I : integer; +begin; + setlength(result,Bitmap.Height); + for i := 0 to Bitmap.Height - 1 do + result[i] := Bitmap.FData + Bitmap.Width; +end; + +constructor TMFinder.Create(aClient: TObject); + +begin + inherited Create; + + Self.Client := aClient; + Self.CTS := 1; + Self.hueMod := 0.2; + Self.satMod := 0.2; + +end; + +destructor TMFinder.Destroy; +begin + + inherited; +end; + +procedure TMFinder.SetToleranceSpeed(nCTS: Integer); +begin + if (nCTS < 0) or (nCTS > 2) then + raise Exception.CreateFmt('The given CTS ([%d]) is invalid.',[nCTS]); + Self.CTS := nCTS; +end; + +function TMFinder.SimilarColors(Color1, Color2,Tolerance: Integer) : boolean; +var + R1,G1,B1,R2,G2,B2 : Byte; + H1,S1,L1,H2,S2,L2 : extended; +begin + Result := False; + ColorToRGB(Color1,R1,G1,B1); + ColorToRGB(Color2,R2,G2,B2); + if Color1 = Color2 then + Result := true + else + case CTS of + 0: Result := ((Abs(R1-R2) <= Tolerance) and (Abs(G1-G2) <= Tolerance) and (Abs(B1-B2) <= Tolerance)); + 1: Result := (Sqrt(sqr(R1-R2) + sqr(G1-G2) + sqr(B1-B2)) <= Tolerance); + 2: begin + RGBToHSL(R1,g1,b1,H1,S1,L1); + RGBToHSL(R2,g2,b2,H2,S2,L2); + Result := ((abs(H1 - H2) <= (hueMod * Tolerance)) and (abs(S2-S1) <= (satMod * Tolerance)) and (abs(L1-L2) <= Tolerance)); + end; + end; +end; + + +function ColorSame(var CTS,Tolerance : Integer; var R1,G1,B1,R2,G2,B2 : byte; var H1,S1,L1,huemod,satmod : extended) : boolean; inline; +var + H2,S2,L2 : extended; +begin + Result := False; + case CTS of + 0: Result := ((Abs(R1-R2) <= Tolerance) and (Abs(G1-G2) <= Tolerance) and (Abs(B1-B2) <= Tolerance)); + 1: Result := (Sqrt(sqr(R1-R2) + sqr(G1-G2) + sqr(B1-B2)) <= Tolerance); + 2: begin + RGBToHSL(R1,g1,b1,H1,S1,L1); + RGBToHSL(R2,g2,b2,H2,S2,L2); + Result := ((abs(H1 - H2) <= (hueMod * Tolerance)) and (abs(S2-S1) <= (satMod * Tolerance)) and (abs(L1-L2) <= Tolerance)); + end; + end; +end; + +procedure TMFinder.UpdateCachedValues(NewWidth, NewHeight: integer); +begin + CachedWidth := NewWidth; + CachedHeight := NewHeight; + SetLength(ClientTPA,NewWidth * NewHeight); +end; + +procedure TMFinder.DefaultOperations(var xs, ys, xe, ye: integer); +var + w,h : integer; +begin +{ if xs > xe then + Swap(xs,xe); + if ys > ye then + Swap(ys,ye);} + if xs < 0 then + // xs := 0; + raise Exception.createFMT('Any Find Function, you did not pass a ' + + 'correct xs: %d.', [xs]); + if ys < 0 then +// ys := 0; + raise Exception.createFMT('Any Find Function, you did not pass a ' + + 'correct ys: %d.', [ys]); + + TClient(Self.Client).MWindow.GetDimensions(w,h); + if (w <> CachedWidth) or (h <> CachedHeight) then + UpdateCachedValues(w,h); + if xe >= w then +// xe := w-1; + raise Exception.createFMT('Any Find Function, you did not pass a ' + + 'correct xe: %d.', [xe]); + if ye >= h then +// ye := h-1; + raise Exception.createFMT('Any Find Function, you did not pass a ' + + 'correct ye: %d.', [ye]); +end; + +function TMFinder.CountColorTolerance(Color, xs, ys, xe, ye, Tolerance: Integer): Integer; +var + PtrData: TRetData; + Ptr: PRGB32; + PtrInc: Integer; + clR, clG, clB : byte; + dX, dY, xx, yy: Integer; + h,s,l,hmod,smod : extended; + Ccts : integer; +begin + Result := 0; + DefaultOperations(xs, ys, xe, ye); + dX := xe - xs; + dY := ye - ys; + ColorToRGB(Color, clR, clG, clB); + PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); + Ptr := PtrData.Ptr; + PtrInc := PtrData.IncPtrWith; + CCts := Self.CTS; + result := 0; + if cts = 2 then + begin; + RGBToHSL(clR,clG,clB,h,s,l); + hmod := Self.hueMod; + smod := Self.satMod; + end; + for yy := ys to ye do + begin; + for xx := xs to xe do + begin; + if ColorSame(CCts,Tolerance,clR,clG,clB,Ptr^.r,Ptr^.g,Ptr^.b,H,S,L,hmod,smod) then + inc(result); + Inc(Ptr); + end; + Inc(Ptr, PtrInc) + end; + TClient(Client).MWindow.FreeReturnData; +end; + +function TMFinder.FindColor(var x, y: Integer; Color, xs, ys, xe, ye: Integer): Boolean; +var + PtrData: TRetData; + Ptr: PRGB32; + PtrInc: Integer; + dX, dY, clR, clG, clB, xx, yy: Integer; + +begin + Result := false; + // checks for valid xs,ys,xe,ye? (may involve GetDimensions) + DefaultOperations(xs,ys,xe,ye); + + // calculate delta x and y + dX := xe - xs; + dY := ye - ys; + + //next, convert the color to r,g,b + ColorToRGB(Color, clR, clG, clB); + + PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); + + // Do we want to "cache" these vars? + // We will, for now. Easier to type. + Ptr := PtrData.Ptr; + PtrInc := PtrData.IncPtrWith; + + for yy := ys to ye do + begin; + for xx := xs to xe do + begin; + // Colour comparison here. Possibly with tolerance? ;) + if (Ptr^.R = clR) and (Ptr^.G = clG) and (Ptr^.B = clB) then + begin + Result := True; + x := xx; + y := yy; + + TClient(Client).MWindow.FreeReturnData; + Exit; + end; + Inc(Ptr); + end; + Inc(Ptr, PtrInc) + end; + + TClient(Client).MWindow.FreeReturnData; +end; + +function TMFinder.FindColorTolerance(var x, y: Integer; Color, xs, ys, xe, ye, tol: Integer): Boolean; +var + PtrData: TRetData; + Ptr: PRGB32; + PtrInc: Integer; + dX, dY, clR, clG, clB, xx, yy: Integer; + H1, S1, L1, H2, S2, L2: Extended; + + label Hit; + label Miss; + +begin + Result := false; + // checks for valid xs,ys,xe,ye? (may involve GetDimensions) + DefaultOperations(xs,ys,xe,ye); + + // calculate delta x and y + dX := xe - xs; + dY := ye - ys; + //next, convert the color to r,g,b + ColorToRGB(Color, clR, clG, clB); + ColorToHSL(Color, H1, S1, L1); + + PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); + + // Do we want to "cache" these vars? + // We will, for now. Easier to type. + Ptr := PtrData.Ptr; + PtrInc := PtrData.IncPtrWith; + + case CTS of + 0: + for yy := ys to ye do + begin + for xx := xs to xe do + begin + if ((abs(clB-Ptr^.B) <= Tol) and (abs(clG-Ptr^.G) <= Tol) and (Abs(clR-Ptr^.R) <= Tol)) then + goto Hit; + inc(Ptr); + end; + Inc(Ptr, PtrInc); + end; + + 1: + begin + Tol := Sqr(Tol); + + for yy := ys to ye do + begin + for xx := xs to xe do + begin + if (sqr(clB - Ptr^.B) + sqr(clG - Ptr^.G) + sqr(clR-Ptr^.R)) <= Tol then + goto Hit; + inc(ptr); + end; + Inc(Ptr, PtrInc); + end; + + end; + 2: + // Can be optimized a lot... RGBToHSL isn't really inline, + // and hueMod * tol is also calculated every time. + begin + for yy := ys to ye do + for xx := xs to xe do + begin + RGBToHSL(Ptr^.R,Ptr^.G,Ptr^.B,H2,S2,L2); + if ((abs(H1 - H2) <= (hueMod * tol)) and (abs(S1 - S2) <= (satMod * tol)) and (abs(L1 - L2) <= Tol)) then + goto Hit; + inc(Ptr); + end; + Inc(Ptr, PtrInc); + end; + end; + Result := False; + TClient(Client).MWindow.FreeReturnData; + Exit; + + Hit: + Result := True; + x := xx; + y := yy; + TClient(Client).MWindow.FreeReturnData; +end; + +function TMFinder.FindColorsTolerance(var Points: TPointArray; Color, xs, ys, + xe, ye, Tol: Integer): Boolean; +var + PtrData: TRetData; + Ptr: PRGB32; + PtrInc,C: Integer; + dX, dY, clR, clG, clB, xx, yy: Integer; + H1, S1, L1, H2, S2, L2: Extended; +begin + Result := false; + DefaultOperations(xs,ys,xe,ye); + + dX := xe - xs; + dY := ye - ys; + //next, convert the color to r,g,b + ColorToRGB(Color, clR, clG, clB); + ColorToHSL(Color, H1, S1, L1); + + PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); + + // Do we want to "cache" these vars? + // We will, for now. Easier to type. + Ptr := PtrData.Ptr; + PtrInc := PtrData.IncPtrWith; + c := 0; + case CTS of + 0: + for yy := ys to ye do + begin + for xx := xs to xe do + begin + if ((abs(clB-Ptr^.B) <= Tol) and (abs(clG-Ptr^.G) <= Tol) and (Abs(clR-Ptr^.R) <= Tol)) then + begin; + ClientTPA[c].x := xx; + ClientTPA[c].y := yy; + inc(c); + end; + inc(Ptr); + end; + Inc(Ptr, PtrInc); + end; + + 1: + for yy := ys to ye do + begin + for xx := xs to xe do + begin + if (Sqrt(sqr(clR-Ptr^.R) + sqr(clG - Ptr^.G) + sqr(clB - Ptr^.B)) <= Tol) then + begin; + ClientTPA[c].x := xx; + ClientTPA[c].y := yy; + inc(c); + end; + inc(ptr); + end; + Inc(Ptr, PtrInc); + end; + 2: + begin + for yy := ys to ye do + for xx := xs to xe do + begin + RGBToHSL(Ptr^.R,Ptr^.G,Ptr^.B,H2,S2,L2); + if ((abs(H1 - H2) <= (hueMod * tol)) and (abs(S1 - S2) <= (satMod * tol)) and (abs(L1 - L2) <= Tol)) then + begin; + ClientTPA[c].x := xx; + ClientTPA[c].y := yy; + inc(c); + end; + inc(Ptr); + end; + Inc(Ptr, PtrInc); + end; + end; + SetLength(Points, C); + Move(ClientTPA[0], Points[0], C * SizeOf(TPoint)); + Result := C > 0; + TClient(Client).MWindow.FreeReturnData; +end; + +function TMFinder.FindColors(var TPA: TPointArray; Color, xs, ys, xe, ye: Integer): Boolean; +var + PtrData: TRetData; + Ptr: PRGB32; + PtrInc: Integer; + dX, dY, clR, clG, clB, xx, yy, i: Integer; + +begin + Result := false; + DefaultOperations(xs,ys,xe,ye); + + dX := xe - xs; + dY := ye - ys; + + I := 0; + + ColorToRGB(Color, clR, clG, clB); + + PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); + + Ptr := PtrData.Ptr; + PtrInc := PtrData.IncPtrWith; + + for yy := ys to ye do + begin; + for xx := xs to xe do + begin; + if (Ptr^.R = clR) and (Ptr^.G = clG) and (Ptr^.B = clB) then + begin + Self.ClientTPA[I].x := xx; + Self.ClientTPA[i].y := yy; + Inc(I); + end; + Inc(Ptr); + end; + Inc(Ptr, PtrInc); + end; + + SetLength(TPA, I); + + Move(ClientTPA[0], TPA[0], i * SizeOf(TPoint)); + + Result := I > 0; + + TClient(Client).MWindow.FreeReturnData; +end; + +function TMFinder.FindBitmap(bitmap: TMufasaBitmap; var x, y: Integer): Boolean; +var + w,h : integer; +begin + TClient(Client).MWindow.GetDimensions(w,h); + result := Self.FindBitmapIn(bitmap,x,y,0,0,w-1,h-1); +end; + +function TMFinder.FindBitmapIn(bitmap: TMufasaBitmap; var x, y: Integer; xs, + ys, xe, ye: Integer): Boolean; +var + MainRowdata : TPRGB32Array; + BmpRowData : TPRGB32Array; + PtrData : TRetData; + BmpW,BmpH : integer; + xBmp,yBmp : integer; + tmpY : integer; + dX, dY, xx, yy: Integer; +label NotFoundBmp; + //Don't know if the compiler has any speed-troubles with goto jumping in nested for loops. + +begin + Result := false; + // checks for valid xs,ys,xe,ye? (may involve GetDimensions) + DefaultOperations(xs,ys,xe,ye); + + // calculate delta x and y + dX := xe - xs; + dY := ye - ys; + + PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); + //Caculate the row ptrs + MainRowdata:= CalculateRowPtrs(PtrData,dy); + BmpRowData:= CalculateRowPtrs(bitmap); + //Get the 'fixed' bmp size + BmpW := bitmap.Width - 1; + BmpH := bitmap.Height - 1; + //Heck our bitmap cannot be outside the search area + dX := dX - bmpW; + dY := dY - bmpH; + for yy := 0 to dY do + for xx := 0 to dX do + begin; + for yBmp:= 0 to BmpH do + begin; + tmpY := yBmp + yy; + for xBmp := 0 to BmpW do + if (BmpRowData[yBmp][xBmp].R <> MainRowdata[tmpY][xBmp + xx].R) or + (BmpRowData[yBmp][xBmp].G <> MainRowdata[tmpY][xBmp + xx].G) or + (BmpRowData[yBmp][xBmp].B <> MainRowdata[tmpY][xBmp + xx].B) then + goto NotFoundBmp; + + end; + //We did find the Bmp, otherwise we would be at the part below + TClient(Client).MWindow.FreeReturnData; + x := xx + xs; + y := yy + ys; + result := true; + exit; + NotFoundBmp: + end; + TClient(Client).MWindow.FreeReturnData; +end; + +function TMFinder.FindBitmapToleranceIn(bitmap: TMufasaBitmap; var x, y: Integer; xs, + ys, xe, ye: Integer; tolerance: Integer): Boolean; +var + MainRowdata : TPRGB32Array; + BmpRowData : TPRGB32Array; + PtrData : TRetData; + BmpW,BmpH : integer; + xBmp,yBmp : integer; + tmpY : integer; + dX, dY, xx, yy: Integer; + CCTS : integer; + H,S,L,HMod,SMod : extended; +label NotFoundBmp; + //Don't know if the compiler has any speed-troubles with goto jumping in nested for loops. + +begin + Result := false; + // checks for valid xs,ys,xe,ye? (may involve GetDimensions) + DefaultOperations(xs,ys,xe,ye); + + // calculate delta x and y + dX := xe - xs; + dY := ye - ys; + + PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); + //Caculate the row ptrs + MainRowdata:= CalculateRowPtrs(PtrData,dy); + BmpRowData:= CalculateRowPtrs(bitmap); + //Get the 'fixed' bmp size + BmpW := bitmap.Width - 1; + BmpH := bitmap.Height - 1; + //Heck our bitmap cannot be outside the search area + dX := dX - bmpW; + dY := dY - bmpH; + CCTS := Self.CTS; + if CCTS > 1 then + CCTS := 1; + for yy := 0 to dY do + for xx := 0 to dX do + begin; + for yBmp:= 0 to BmpH do + begin; + tmpY := yBmp + yy; + for xBmp := 0 to BmpW do + if not ColorSame(CCTS,tolerance, + BmpRowData[yBmp][xBmp].R,BmpRowData[yBmp][xBmp].G,BmpRowData[yBmp][xBmp].B, + MainRowdata[tmpY][xBmp + xx].R,MainRowdata[tmpY][xBmp + xx].G,MainRowdata[tmpY][xBmp + xx].B, + H,S,L,HMod,SMod) then + goto NotFoundBmp; + + end; + //We did find the Bmp, otherwise we would be at the part below + TClient(Client).MWindow.FreeReturnData; + x := xx + xs; + y := yy + ys; + result := true; + exit; + NotFoundBmp: + end; + TClient(Client).MWindow.FreeReturnData; +end; + +end. +