[Pkg-wmaker-commits] [wmbutton] 03/09: Import Upstream version 0.6.1

Doug Torrance dtorrance-guest at moszumanska.debian.org
Sun Jul 16 03:13:30 UTC 2017


This is an automated email from the git hooks/post-receive script.

dtorrance-guest pushed a commit to branch master
in repository wmbutton.

commit a6ddb27b659843443b763004e217fa2cf78eca1a
Author: Doug Torrance <dtorrance at piedmont.edu>
Date:   Sat Jul 15 23:11:58 2017 -0400

    Import Upstream version 0.6.1
---
 .wmbutton          |   50 +-
 Makefile           |   19 +-
 README             |   90 ++-
 buttons.xpm        | 2099 ++++++++++++++++++++++++++++++++++------------------
 icons/buttons2.xpm |  854 +++++++++++++++++++++
 readln.c           |   59 --
 wmb_libs.c         |  692 +++++++++++++++++
 wmbutton.c         |  552 +++++++-------
 wmbutton.h         |  107 +++
 9 files changed, 3408 insertions(+), 1114 deletions(-)

diff --git a/.wmbutton b/.wmbutton
index 6da6a5e..35e0fc8 100644
--- a/.wmbutton
+++ b/.wmbutton
@@ -1,5 +1,5 @@
 # .wmbutton - Configuration file for wmbutton
-# Last Modified 3/7/99
+# Last Modified 03/21/04
 
 # Buttons are numbered as follows 
 # 	Left	1 2 3	Middle	11 12 13	Right	21 22 23
@@ -7,41 +7,41 @@
 #		7 8 9		17 18 19		27 28 29
 #
 
-1	netscape &
-11	netscape &
-21	netscape &
+1	mozilla &
+11	mozilla -mail &
+21	firefox &
 
-2	nxterm -geometry 80x35 -sb -T 'nxterm' -fg white -bg grey30 &
-12	aterm -tr -geometry 80x35 -sb -T 'Aterm' -fg white -bg black &
-22	rxvt -geometry 80x35 -T 'Rxvt' &
+2	xterm -geometry 80x35 -sb -fg white -bg grey20 -T 'Xterm: User' &
+12	xterm -geometry 80x35 -sb -fg snow -bg midnightblue -T 'Xterm: Root' &
+22	gnome-terminal &
 
-3	wxftp &
+3	gftp &
 13	nxterm -fg black -bg grey70 -T 'FTP' -e ftp &
-23
+23	jpilot &
 
-4	xwp &
-14	nxterm -fg black -bg grey80 -T 'Pine' -e pine &
-24	nxterm -fg black -bg grey80 -T 'Pine' -e pine &
+4	ooffice &
+14	wordperfect &
+24	presentations &
 
-5	nxterm -geometry 120x20 -fg white -bg grey20 -T 'Gnuplot' -e gnuplot &
-15	nxterm -geometry 120x20 -fg white -bg grey20 -T 'Gnuplot' -e gnuplot &
-25	xspread -fg white -bg midnightblue &
+5	gnucash &
+15	xterm -geometry 120x20 -fg white -bg grey20 -T 'Gnuplot' -e gnuplot &
+25	quattropro &
 
 6	xemacs &
-16	nxterm -fg black -bg grey50 -T 'Pico Editor' -e pico -w &
-26	nxterm -geometry 120x35 -fg black -bg grey70 -T 'WMButton Config Editor' -e pico -w ~/.wmbutton &
+16	xterm -geometry 80x35 -fg black -bg grey50 -T 'Pico Editor' -e pico -w &
+26	xterm -geometry 120x35 -fg black -bg grey70 -T 'WMButton Config Editor' -e pico -w ~/.wmbutton &
 
 7	gimp &
-17	xpaint &
-27	xv &
+17	xfig &
+27	kpaint &
 
-8	gv &
-18	xdvi &
+8	kghostview &
+18	ggv &
 28	xpdf &
 
-9	x11amp -b 128 &
-19	xmixer &
-29	xplaycd &
+9	xmms &
+19	xanim &
+29	gnome-sound-recorder &
 
 # The above don't need to be in any particular order.
-# Repeated entries should be ignored
+# Repeated entries will be ignored
diff --git a/Makefile b/Makefile
index 288c412..b4b744d 100644
--- a/Makefile
+++ b/Makefile
@@ -3,14 +3,27 @@ LIBINC =-L/usr/X11R6/lib -L/usr/include/lib
 LIBS = -lX11 -lXpm -lXext
 
 TARGET = wmbutton
-OBJECTS = wmbutton.o readln.o
+OBJECTS = wmbutton.o wmb_libs.o
+
+CFLAGS += -c -Wall -O2
+
+all: ${TARGET} tags
 
 .c.o:
-	gcc -O2 -c -Wall ${INCLUDES} ${FLAGS} $< -o $*.o
+	gcc ${CFLAGS} ${INCLUDES} $< -o $*.o
 
 ${TARGET}: ${OBJECTS}
-	gcc -O2 -o ${TARGET} ${OBJECTS} ${LIBINC} ${LIBS}
+	gcc -o ${TARGET} ${OBJECTS} ${LIBINC} ${LIBS}
 
 clean::
 	for i in ${OBJECTS}; do if [ -e $$i ] ; then rm $$i; fi; done 
 	if [ -e ${TARGET} ] ; then rm ${TARGET}; fi
+	if [ -e tags ]; then rm tags; fi
+	if [ -e core ]; then rm core; fi
+
+wmbutton.o: wmbutton.c wmbutton.h Makefile
+
+wmb_libs.o: wmb_libs.c wmbutton.h Makefile
+
+tags:
+	ctags *.[ch]
diff --git a/README b/README
index 2d94aee..5da98ae 100644
--- a/README
+++ b/README
@@ -1,8 +1,10 @@
-wmbutton Ver. 0 Rel 4
+wmbutton Ver. 0 Rel 6.1
 -------------------------------------------------------------
    Code is based on wmppp, wmload, wmtime, wmcp, and asbutton
-   Author: Edward H. Flora <ehflora at ksu.edu>
-   Ver 0 Rel 4    March 8, 1999
+   Author: Edward H. Flora <ehf_dockapps at cox.net>
+	   This version is released by:
+	   Christian 'Greek0' Aichinger <Greek0 at gmx.net>
+   Ver 0 Rel 6.1    Jan 23, 2005
 
 DESCRIPTION:
 ------------
@@ -13,11 +15,20 @@ should be fairly configurable.
 LICENSING:
 ----------
 This program is released under the GPL license.  A copy (in case you
-don't already have hundreds of then floating around) can be found in
+don't already have hundreds of them floating around) can be found in
 this distribution in the file COPYING
 
 CONTRIBUTORS:
 -------------
+              Christian 'Greek0' Aichinger <Greek0 at gmx.net>
+                  Did some code cleanup and fixed several memory leaks.
+              Ralf Horstmann <ralf.horstmann at gmx.de>
+                  Added ability to load pixmaps at startup,
+                  without having to re-compile
+              Michael Cohrs <camico at users.sourceforge.net> 
+                  Added Tool Tips, and updated graphics
+              Bruno Essmann <essmann at users.sourceforge.net>)
+                  Creator of wmpager
               Ben Cohen <buddog at aztec.asu.edu>
                   original author of wmcp (et al.)
               Thomas Nemeth <tnemeth at multimania.com>
@@ -34,17 +45,17 @@ CONTRIBUTORS:
                         with wmcp)
               Jon Bruno
                   Web Page Development
- The contributors listed above are not necessarily involved with the 
+The contributors listed above are not necessarily involved with the 
 development of wmbutton.  I'm listing them here partially as thanks for 
 helping out, catching bugs in the code, etc.
 
 INSTALLATION:
 -------------
 	Untar the file: 
-		tar xvzf wmbutton-0.4.tar.gz
+		tar xvzf wmbutton-0.5.tar.gz
 
 	CD to source directory:  
-		cd wmbutton-0.4
+		cd wmbutton-0.5
 
 	Edit background xpm, and buttons.xpm to your preferences
 	There are icon files in ./icons to work from
@@ -75,26 +86,34 @@ INSTALLATION:
 	the Makefile.
 
 	Tested on: (Well, it runs, I don't know if 'Tested' is quite right...)
-		WindowMaker-0.50.2, 0.51
+		WindowMaker-0.80.1
 		Afterstep 1.6.?
-		X Clients: Red Hat 5.1, Kernel 2.0.36, 2.0.35
-		X Servers: XFree86 S3V 3.3.3.1
+		Fluxbox 0.9.9
+		Clients: Red Hat 8.x, Kernel 2.4.18
+
 
 USAGE:
 ------
-usage: wmbutton [-g geometry] [-d dpy] [-v] [-f config file] [-h]
-
--g  <geometry>   Window Geometry - ie: 64x64+10+10
--d  <display>    Display -  ie: 127.0.0.1:0.0
--f  <filename>   Full path to configuration file.
--v               Verbose Mode. 
--h               Help. This message.
--m               Enable Middle Mouse functionality.
+wmbutton [-g geom] [-d dpy] [-f cfgfile] [-b btnfile] [-F <font>] 
+	 [-v] [-s] [-n]
+
+ wmbutton Ver 0 Rel 6.1
+
+-g <geometry>  Window Geometry - ie: 64x64+10+10
+-d <display>   Display -  ie: 127.0.0.1:0.0
+-f <filename>  Full path to configuration file.
+-b <filename>  Full path to button xpm.
+-F <font>      Custom tooltip font (e.g. -b\&h-lucidatypewriter-medium-*-*-*-12-*)
+-v             Verbose Mode.
+-h             Help. This message.
+-m             Disable Middle Mouse functionality.
+-s             Swap tooltip colors.
+-n             Turn off tooltips.
 
 Left mouse button:
 	Selects the application to launch, numbered 1 through 9
 
-Middle mouse button: (If enabled (-m))
+Middle mouse button: (unless disabled (-m))
 	Selects the application to launch, numbered 11 through 19
 
 Right mouse button:
@@ -108,8 +127,7 @@ by why bother??  It is taken from wmcp, by Ben Cohen, and modified just
 enough to run applications rather than send ALT-[1..9] key sequences to 
 WindowMaker.  It has also taken some ideas from asbuttons, and
 included them back into the original.  There may still be some code
-left over from wmcp that is no longer needed, but...  This was written 
-in a couple of hours, as my first Dock App.  
+left over from wmcp that is no longer needed, but...  
 
 The mini-icons must be combined into a single graphic, buttons.xpm.  The 
 background border is defined in backdrop.xpm.  Both must be edited in your
@@ -118,13 +136,30 @@ configuration file (usually ~/.wmbutton) for which applications to launch.
 There is no need to restart wmbuttons when simply changing the configuration, 
 as wmbutton searches the file whenever a button is pressed.
 
+As of release 0.5, you can also pass in your own pixmap file for the
+buttons, to override the buttons that are compiled it.  This file should
+still have the same height and width so that it will make sense,
+though really you give it any XPM you want, but it will only display
+the upper left 54x54 pixel corner.
+
+
 An example file is included, related to the the buttons.xpm graphic file.
 
-"C code.  C code run.  Run, code, run.
-			PLEASE!?!?!?!?!?!?"
 
 CHANGE LOG:
 -----------
+0.6.1 Minor changes to the Makefile.
+0.6 Code cleanup and fixes for memory leaks by Christian 'Greek0' Aichinger.
+0.5	Added Modifications submitted by Ralf Horstmann.
+	  Load different pixmaps at start-up time, rather than having
+	  to compile them in.  This also makes it much easier to run
+	  multiple copies.
+	Added Modifications submitted by Michael Cohrs.
+	  Added Tool-Tips
+	Updated default buttons.xpm graphics
+	General Code clean-up, including export must functions to
+	  seperate C file, to reduce clutter.
+
 0.4	Added Modifications submitted by Casey Harkins. 
 	  Start application on mouse button release, 
 	  Only start app if cursor is still on application button
@@ -151,6 +186,8 @@ CHANGE LOG:
 
 TODO:
 -----
+Add ability (via config file) to use discrete 16x16 pixel icons for
+  the buttons, rather than having to paste them all into the existing file.
 Make changing icons and/or background graphics easier.
 Allow for less than 9 icons, 4 would be nicer on the mini-icon size.
 
@@ -159,12 +196,13 @@ BUGS:
 Remember, they're just undocumented FEATURES!!!
 
 Probably Lots.  Send comments (preferably with fixes) to
-<ehflora at ksu.edu>
+<ehf_dockapps at cox.net>
 
-Note:  	I am a graduate student trying to finish a thesis this spring,
-	so I am not likely to do a lot of work on this for a while.
 
 Good Luck.
 
 
+"C code.  C code run.  Run, code, run.
+			PLEASE!?!?!?!?!?!?"
+
 
diff --git a/buttons.xpm b/buttons.xpm
index 8992ecd..f026b2e 100644
--- a/buttons.xpm
+++ b/buttons.xpm
@@ -1,715 +1,1400 @@
 /* XPM */
 static char * buttons_xpm[] = {
-"54 54 658 2",
+"54 54 1343 2",
 "  	c None",
 ". 	c #FFFFFF",
 "+ 	c #000000",
 "@ 	c #AEAAAE",
-"# 	c #000A0D",
-"$ 	c #000F11",
-"% 	c #001111",
-"& 	c #001113",
-"* 	c #001114",
-"= 	c #001112",
-"- 	c #000E10",
-"; 	c #00080A",
-"> 	c #D5D6D5",
-", 	c #6F706F",
-"' 	c #686868",
-") 	c #001718",
-"! 	c #00171B",
-"~ 	c #00191D",
-"{ 	c #001A1F",
-"] 	c #001C1F",
-"^ 	c #001C21",
-"/ 	c #001C20",
-"( 	c #00191C",
-"_ 	c #EFEEEE",
-": 	c #F6F6F4",
-"< 	c #F6F7F3",
-"[ 	c #F3F4EE",
-"} 	c #E8E9E1",
-"| 	c #D6D7CF",
-"1 	c #C5C5BE",
-"2 	c #B3B2A9",
-"3 	c #9F9F94",
-"4 	c #868685",
-"5 	c #6E706A",
-"6 	c #949685",
-"7 	c #514E5A",
-"8 	c #1A1729",
-"9 	c #201A30",
-"0 	c #23203B",
-"a 	c #232039",
-"b 	c #211E37",
-"c 	c #616161",
-"d 	c #6E6E6E",
-"e 	c #001D20",
-"f 	c #001F23",
-"g 	c #173337",
-"h 	c #F0F2F3",
-"i 	c #001F26",
-"j 	c #002129",
-"k 	c #24434A",
-"l 	c #001F24",
-"m 	c #001F22",
-"n 	c #00181D",
-"o 	c #B4B3B6",
-"p 	c #898297",
-"q 	c #554A75",
-"r 	c #40365E",
-"s 	c #241A4B",
-"t 	c #170B46",
-"u 	c #12093E",
-"v 	c #0E0737",
-"w 	c #0A0530",
-"x 	c #060429",
-"y 	c #030325",
-"z 	c #00031F",
-"A 	c #A1A2A0",
-"B 	c #575747",
-"C 	c #5B566C",
-"D 	c #353056",
-"E 	c #423968",
-"F 	c #48416C",
-"G 	c #484066",
-"H 	c #413969",
-"I 	c #002128",
-"J 	c #00242B",
-"K 	c #00252C",
-"L 	c #1D4349",
-"M 	c #849A9F",
-"N 	c #002A32",
-"O 	c #002C34",
-"P 	c #002830",
-"Q 	c #385A61",
-"R 	c #00272E",
-"S 	c #00242A",
-"T 	c #001E25",
-"U 	c #B2B2B3",
-"V 	c #4D436A",
-"W 	c #160350",
-"X 	c #13034B",
-"Y 	c #110346",
-"Z 	c #0F0340",
-"` 	c #0C033A",
-" .	c #0A0335",
-"..	c #07032F",
-"+.	c #05032A",
-"@.	c #A3A4A3",
-"#.	c #5C5C4D",
-"$.	c #615C75",
-"%.	c #423A61",
-"&.	c #4F4D70",
-"*.	c #594E85",
-"=.	c #493F66",
-"-.	c #002B33",
-";.	c #002D35",
-">.	c #003038",
-",.	c #003139",
-"'.	c #678186",
-").	c #00343C",
-"!.	c #002F37",
-"~.	c #00272F",
-"{.	c #B1B0B1",
-"].	c #4E436A",
-"^.	c #070330",
-"/.	c #A4A5A3",
-"(.	c #61614F",
-"_.	c #3B3B2E",
-":.	c #635C75",
-"<.	c #3D3660",
-"[.	c #494169",
-"}.	c #4B4669",
-"|.	c #4F4A6A",
-"1.	c #8D8F8D",
-"2.	c #878787",
-"3.	c #00363E",
-"4.	c #00373F",
-"5.	c #003941",
-"6.	c #36666F",
-"7.	c #577D83",
-"8.	c #003C44",
-"9.	c #003841",
-"0.	c #AEAEAF",
-"a.	c #4D4269",
-"b.	c #261459",
-"c.	c #281C4E",
-"d.	c #2A1E4E",
-"e.	c #150945",
-"f.	c #0C033B",
-"g.	c #0A0336",
-"h.	c #A7A7A5",
-"i.	c #6A6B59",
-"j.	c #454632",
-"k.	c #5D5871",
-"l.	c #333158",
-"m.	c #3D3460",
-"n.	c #423E65",
-"o.	c #515171",
-"p.	c #9D9E9D",
-"q.	c #626262",
-"r.	c #8A8A8A",
-"s.	c #003E47",
-"t.	c #004049",
-"u.	c #00414C",
-"v.	c #00444D",
-"w.	c #4D7B83",
-"x.	c #4D7A82",
-"y.	c #00444F",
-"z.	c #00424B",
-"A.	c #00414B",
-"B.	c #003F49",
-"C.	c #003840",
-"D.	c #ADACAE",
-"E.	c #52476D",
-"F.	c #38314A",
-"G.	c #0A0809",
-"H.	c #181618",
-"I.	c #362F50",
-"J.	c #0F053D",
-"K.	c #000320",
-"L.	c #ABACAB",
-"M.	c #757764",
-"N.	c #565842",
-"O.	c #28233D",
-"P.	c #2E2749",
-"Q.	c #373051",
-"R.	c #393561",
-"S.	c #393259",
-"T.	c #352C52",
-"U.	c #004951",
-"V.	c #004A54",
-"W.	c #004C57",
-"X.	c #00505A",
-"Y.	c #00515C",
-"Z.	c #578C95",
-"`.	c #3E7982",
-" +	c #004E57",
-".+	c #004C56",
-"++	c #004953",
-"@+	c #004851",
-"#+	c #00414E",
-"$+	c #5A5072",
-"%+	c #5F5A67",
-"&+	c #676149",
-"*+	c #777570",
-"=+	c #25232F",
-"-+	c #170E43",
-";+	c #05032B",
-">+	c #030326",
-",+	c #B0B0AF",
-"'+	c #7E826D",
-")+	c #666751",
-"!+	c #959497",
-"~+	c #ACABAE",
-"{+	c #737473",
-"]+	c #302A4F",
-"^+	c #3F3C64",
-"/+	c #4B4274",
-"(+	c #4F4876",
-"_+	c #3F3C69",
-":+	c #00505B",
-"<+	c #005360",
-"[+	c #005563",
-"}+	c #005964",
-"|+	c #005A69",
-"1+	c #005C69",
-"2+	c #72A5AF",
-"3+	c #2B7480",
-"4+	c #005864",
-"5+	c #005462",
-"6+	c #00525F",
-"7+	c #004F59",
-"8+	c #AAABAB",
-"9+	c #645C7A",
-"0+	c #776349",
-"a+	c #E5C319",
-"b+	c #A78F32",
-"c+	c #27232C",
-"d+	c #1E1448",
-"e+	c #080330",
-"f+	c #010320",
-"g+	c #B2B3B2",
-"h+	c #888A75",
-"i+	c #6D6F59",
-"j+	c #393052",
-"k+	c #494261",
-"l+	c #52497A",
-"m+	c #4F487A",
-"n+	c #4D4669",
-"o+	c #463E69",
-"p+	c #005C6A",
-"q+	c #025D6A",
-"r+	c #025F6F",
-"s+	c #066676",
-"t+	c #1F6875",
-"u+	c #09515B",
-"v+	c #034C56",
-"w+	c #054F59",
-"x+	c #90A4A7",
-"y+	c #026372",
-"z+	c #006170",
-"A+	c #025C6A",
-"B+	c #005967",
-"C+	c #A7A7AA",
-"D+	c #6D677D",
-"E+	c #9A9798",
-"F+	c #DBD0B1",
-"G+	c #ECE9E0",
-"H+	c #353334",
-"I+	c #362F4E",
-"J+	c #0F073A",
-"K+	c #080331",
-"L+	c #BBBCBB",
-"M+	c #8B8E79",
-"N+	c #72735E",
-"O+	c #14D121",
-"P+	c #332C54",
-"Q+	c #3D3A69",
-"R+	c #494266",
-"S+	c #494666",
-"T+	c #494363",
-"U+	c #3F3B66",
-"V+	c #979897",
-"W+	c #0E535E",
-"X+	c #0F4048",
-"Y+	c #182E33",
-"Z+	c #0E1315",
-"`+	c #0F1112",
-" @	c #1A1D1D",
-".@	c #152C30",
-"+@	c #16454B",
-"@@	c #185C68",
-"#@	c #A8A7A8",
-"$@	c #636264",
-"%@	c #D9D8D7",
-"&@	c #FAFAF8",
-"*@	c #8D8D8D",
-"=@	c #18171B",
-"-@	c #514D66",
-";@	c #434058",
-">@	c #403E53",
-",@	c #3D3C4F",
-"'@	c #3A3B4A",
-")@	c #CACBC8",
-"!@	c #8A8D78",
-"~@	c #64665B",
-"{@	c #58576C",
-"]@	c #5C5874",
-"^@	c #5E5576",
-"/@	c #5C597A",
-"(@	c #5E5778",
-"_@	c #5C5570",
-":@	c #646464",
-"<@	c #0F1315",
-"[@	c #9F9EA1",
-"}@	c #7F7E7E",
-"|@	c #F9FAF8",
-"1@	c #FBFBF9",
-"2@	c #DEDFDD",
-"3@	c #131313",
-"4@	c #959695",
-"5@	c #F0EFEA",
-"6@	c #ECECE7",
-"7@	c #E9E9E4",
-"8@	c #E7E7DE",
-"9@	c #DEDED3",
-"0@	c #858773",
-"a@	c #555551",
-"b@	c #6B6C6D",
-"c@	c #A7A293",
-"d@	c #F9F9F8",
-"e@	c #F8F8F6",
-"f@	c #F0EEDF",
-"g@	c #1D1D19",
-"h@	c #5D5C58",
-"i@	c #C9C9BE",
-"j@	c #C7C7BD",
-"k@	c #939388",
-"l@	c #929484",
-"m@	c #9A9A8B",
-"n@	c #595953",
-"o@	c #515161",
-"p@	c #B1B0B4",
-"q@	c #B1AFB4",
-"r@	c #858587",
-"s@	c #6B6A6B",
-"t@	c #757475",
-"u@	c #787678",
-"v@	c #7C7A7C",
-"w@	c #C7C1B4",
-"x@	c #ECC635",
-"y@	c #C4A420",
-"z@	c #AFADA8",
-"A@	c #F9F9F6",
-"B@	c #F9F9F7",
-"C@	c #E6CD79",
-"D@	c #7C5B09",
-"E@	c #AB922F",
-"F@	c #343326",
-"G@	c #1E1E14",
-"H@	c #313125",
-"I@	c #504F4F",
-"J@	c #CDBC6E",
-"K@	c #AE6E22",
-"L@	c #6B6A6C",
-"M@	c #595959",
-"N@	c #DBC475",
-"O@	c #F5CC10",
-"P@	c #F4CA10",
-"Q@	c #C1AC62",
-"R@	c #EEEEEC",
-"S@	c #C2C2C0",
-"T@	c #A07F2F",
-"U@	c #F5C80E",
-"V@	c #F3CB17",
-"W@	c #B0A263",
-"X@	c #626254",
-"Y@	c #595949",
-"Z@	c #9B9B9D",
-"`@	c #6E6C6F",
-" #	c #9A9693",
-".#	c #B9A478",
-"+#	c #CBA133",
-"@#	c #967432",
-"##	c #6F6D6D",
-"$#	c #6F6B6D",
-"%#	c #957642",
-"&#	c #C59D35",
-"*#	c #8D8D86",
-"=#	c #696869",
-"-#	c #090909",
-";#	c #DD0D8A",
-">#	c #0909EF",
-",#	c #A56721",
-"'#	c #AFB505",
-")#	c #F79B31",
-"!#	c #EFF707",
-"~#	c #0D8214",
-"{#	c #050591",
-"]#	c #F4C844",
-"^#	c #E0D6C4",
-"/#	c #E7E1C0",
-"(#	c #D9D499",
-"_#	c #E4D08D",
-":#	c #EABE8D",
-"<#	c #E3B26B",
-"[#	c #E3B982",
-"}#	c #BDA385",
-"|#	c #EDE1C3",
-"1#	c #ECC48A",
-"2#	c #F69854",
-"3#	c #F78E42",
-"4#	c #EB9D54",
-"5#	c #FFC280",
-"6#	c #DA776F",
-"7#	c #EA3166",
-"8#	c #DE2F66",
-"9#	c #D57F6A",
-"0#	c #BBA97D",
-"a#	c #95939B",
-"b#	c #E609EA",
-"c#	c #850589",
-"d#	c #EED392",
-"e#	c #FFCF86",
-"f#	c #FBBB57",
-"g#	c #E92F00",
-"h#	c #EB2F00",
-"i#	c #D85025",
-"j#	c #F3B366",
-"k#	c #E6466F",
-"l#	c #FF0061",
-"m#	c #DD7075",
-"n#	c #D6B275",
-"o#	c #B89A77",
-"p#	c #88888E",
-"q#	c #ECECEC",
-"r#	c #FEFEFE",
-"s#	c #F8F8F8",
-"t#	c #D1D1D1",
-"u#	c #F1DCB7",
-"v#	c #FDCF86",
-"w#	c #FFCF72",
-"x#	c #F8BB57",
-"y#	c #D02F00",
-"z#	c #DF2F00",
-"A#	c #EF4310",
-"B#	c #F6B661",
-"C#	c #E44D6C",
-"D#	c #F00877",
-"E#	c #F80677",
-"F#	c #DD7179",
-"G#	c #CEA764",
-"H#	c #CE9B60",
-"I#	c #FDFDFD",
-"J#	c #9B9B9B",
-"K#	c #F3D269",
-"L#	c #F8D334",
-"M#	c #FFDC45",
-"N#	c #FAC75D",
-"O#	c #DF7D3B",
-"P#	c #E97A2A",
-"Q#	c #E7843C",
-"R#	c #EDBD61",
-"S#	c #E3947A",
-"T#	c #DE6C79",
-"U#	c #DB3686",
-"V#	c #CE7E9D",
-"W#	c #CE8BA6",
-"X#	c #CE8188",
-"Y#	c #996D74",
-"Z#	c #7F7D85",
-"`#	c #D7D7D7",
-" $	c #4F4F4F",
-".$	c #C4C4C4",
-"+$	c #EFEFEF",
-"@$	c #727272",
-"#$	c #898989",
-"$$	c #F6F6F6",
-"%$	c #FFEB19",
-"&$	c #FFFF00",
-"*$	c #FFF709",
-"=$	c #F2D135",
-"-$	c #E5C26F",
-";$	c #D3CE77",
-">$	c #D1B165",
-",$	c #CFB875",
-"'$	c #AF7C77",
-")$	c #B1306F",
-"!$	c #961766",
-"~$	c #9D36B5",
-"{$	c #9F09D6",
-"]$	c #A406CC",
-"^$	c #A55DB4",
-"/$	c #898A8F",
-"($	c #ACACAC",
-"_$	c #B0B0B1",
-":$	c #959595",
-"<$	c #DFDFDF",
-"[$	c #434343",
-"}$	c #2F2F2F",
-"|$	c #BDBEBD",
-"1$	c #FBEF0C",
-"2$	c #FFF70C",
-"3$	c #DFD148",
-"4$	c #DDC063",
-"5$	c #D0C261",
-"6$	c #D5B46A",
-"7$	c #907059",
-"8$	c #421B10",
-"9$	c #7B0947",
-"0$	c #7C0642",
-"a$	c #B43ED9",
-"b$	c #A90BFD",
-"c$	c #B853C8",
-"d$	c #9F7258",
-"e$	c #F4F4F4",
-"f$	c #999999",
-"g$	c #F0F0F0",
-"h$	c #6C6C6D",
-"i$	c #8E8E8E",
-"j$	c #FAD739",
-"k$	c #F3ED24",
-"l$	c #F8E533",
-"m$	c #D8C763",
-"n$	c #EBA76F",
-"o$	c #D1C260",
-"p$	c #C7A65C",
-"q$	c #311F0F",
-"r$	c #0C0000",
-"s$	c #390012",
-"t$	c #5F1B24",
-"u$	c #AA36BA",
-"v$	c #9B0BD5",
-"w$	c #9D0BD9",
-"x$	c #A4569D",
-"y$	c #7E7E7E",
-"z$	c #F3F3F3",
-"A$	c #FCFCFC",
-"B$	c #D9D9D9",
-"C$	c #8C8C8C",
-"D$	c #EAC46F",
-"E$	c #F0CB6C",
-"F$	c #D8B36A",
-"G$	c #D1BD6E",
-"H$	c #D3B375",
-"I$	c #CBB260",
-"J$	c #B28866",
-"K$	c #0C0706",
-"L$	c #020206",
-"M$	c #2B1010",
-"N$	c #5E3D1F",
-"O$	c #CB8B8D",
-"P$	c #B78394",
-"Q$	c #C27794",
-"R$	c #B0747D",
-"S$	c #A8A9AF",
-"T$	c #BCBCBC",
-"U$	c #A6A7A6",
-"V$	c #E5C895",
-"W$	c #DCAF6C",
-"X$	c #D8C065",
-"Y$	c #CEBF61",
-"Z$	c #C5B677",
-"`$	c #ACA385",
-" %	c #9E9899",
-".%	c #434340",
-"+%	c #3F3D1C",
-"@%	c #744232",
-"#%	c #BA7D50",
-"$%	c #9B7687",
-"%%	c #313FDB",
-"&%	c #1E3DF1",
-"*%	c #494FBA",
-"=%	c #9E9BA5",
-"-%	c #D4D4D4",
-";%	c #D3BB6C",
-">%	c #CFB869",
-",%	c #D0BB6C",
-"'%	c #B1A5A1",
-")%	c #8A94A5",
-"!%	c #2D3945",
-"~%	c #444823",
-"{%	c #A17741",
-"]%	c #CF9A61",
-"^%	c #887F9F",
-"/%	c #0B2FFD",
-"(%	c #002FFD",
-"_%	c #324AD8",
-":%	c #9C725C",
-"<%	c #3F4046",
-"[%	c #C6A47F",
-"}%	c #A69F87",
-"|%	c #3A364D",
-"1%	c #525141",
-"2%	c #A67E41",
-"3%	c #C88B53",
-"4%	c #CF9061",
-"5%	c #C88761",
-"6%	c #897F90",
-"7%	c #0F2FF3",
-"8%	c #082FF7",
-"9%	c #4047D8",
-"0%	c #81645A",
-"a%	c #CECECE",
-"b%	c #B27F5B",
-"c%	c #D4A77A",
-"d%	c #8C6636",
-"e%	c #72491F",
-"f%	c #9D7A45",
-"g%	c #CC9A61",
-"h%	c #CF9361",
-"i%	c #C99061",
-"j%	c #A97E5C",
-"k%	c #906D5F",
-"l%	c #808185",
-"m%	c #8F7885",
-"n%	c #A16773",
-"o%	c #6D4C42",
-"p%	c #DDDDDD",
-"q%	c #F2F2F2",
-"r%	c #EDEDED",
-"s%	c #CACACA",
-"t%	c #99714C",
-"u%	c #DBA97B",
-"v%	c #7B5029",
-"w%	c #767361",
-"x%	c #BBA07C",
-"y%	c #CA9E68",
-"z%	c #CA9561",
-"A%	c #CF8761",
-"B%	c #B3805C",
-"C%	c #322841",
-"D%	c #413759",
-"E%	c #8D7963",
-"F%	c #A7735A",
-"G%	c #A26453",
-"H%	c #919191",
-"I%	c #B7B7B7",
-"J%	c #E0E0E0",
-"K%	c #D2D2D2",
-"L%	c #937257",
-"M%	c #DBAA7B",
-"N%	c #714D25",
-"O%	c #C69D70",
-"P%	c #BE8D61",
-"Q%	c #A77F54",
-"R%	c #443251",
-"S%	c #606492",
-"T%	c #A39EA3",
-"U%	c #A46959",
-"V%	c #96734D",
-"W%	c #636364",
-"X%	c #DADADA",
-"Y%	c #737373",
-"Z%	c #BEBEBE",
-"`%	c #C1C1C1",
-" &	c #979797",
-".&	c #AFAFAF",
-"+&	c #D5A96D",
-"@&	c #775529",
-"#&	c #A17E63",
-"$&	c #AC825F",
-"%&	c #936958",
-"&&	c #AC97A9",
-"*&	c #C9B4B3",
-"=&	c #737375",
-"-&	c #B5B5B7",
-";&	c #B7B7B9",
-">&	c #616163",
-",&	c #0B0B0B",
+"# 	c #727272",
+"$ 	c #A86666",
+"% 	c #AE7575",
+"& 	c #B17878",
+"* 	c #B37979",
+"= 	c #B57979",
+"- 	c #B87979",
+"; 	c #BA7979",
+"> 	c #BC7A7A",
+", 	c #BF7A7A",
+"' 	c #C27C7C",
+") 	c #C37C7C",
+"! 	c #C57A7A",
+"~ 	c #BB8585",
+"{ 	c #ABABAB",
+"] 	c #B4B4B4",
+"^ 	c #6F6F6F",
+"/ 	c #737373",
+"( 	c #5D5D5D",
+"_ 	c #595959",
+": 	c #717170",
+"< 	c #91908F",
+"[ 	c #8D8C8B",
+"} 	c #858683",
+"| 	c #92928E",
+"1 	c #9B9D98",
+"2 	c #B0AEA8",
+"3 	c #9B9C96",
+"4 	c #71736A",
+"5 	c #59594B",
+"6 	c #474743",
+"7 	c #B5B5B5",
+"8 	c #6F706F",
+"9 	c #686868",
+"0 	c #969696",
+"a 	c #9B9B9B",
+"b 	c #9F9F9F",
+"c 	c #A3A3A3",
+"d 	c #A8A8A8",
+"e 	c #ACACAC",
+"f 	c #B1B1B1",
+"g 	c #FF7474",
+"h 	c #FFB9B9",
+"i 	c #FFB1B1",
+"j 	c #FFAAAA",
+"k 	c #FF9C9C",
+"l 	c #FF8D8D",
+"m 	c #FF7F7F",
+"n 	c #FF6565",
+"o 	c #FF5A5A",
+"p 	c #FF5757",
+"q 	c #FF0404",
+"r 	c #D90000",
+"s 	c #8E8E8E",
+"t 	c #EEEDEA",
+"u 	c #FFFBF7",
+"v 	c #FCFBF7",
+"w 	c #F5F7F2",
+"x 	c #E7E8E2",
+"y 	c #D5D4CB",
+"z 	c #BEBFB8",
+"A 	c #AAA99F",
+"B 	c #91928D",
+"C 	c #767879",
+"D 	c #6E7265",
+"E 	c #90917F",
+"F 	c #1A1D12",
+"G 	c #BABABA",
+"H 	c #514E5A",
+"I 	c #1A1729",
+"J 	c #201A30",
+"K 	c #23203B",
+"L 	c #232039",
+"M 	c #211E37",
+"N 	c #616161",
+"O 	c #AE7676",
+"P 	c #FFC4C4",
+"Q 	c #FFFCFC",
+"R 	c #FFD9D9",
+"S 	c #FFA6A6",
+"T 	c #FF9595",
+"U 	c #FF8686",
+"V 	c #FF6F6F",
+"W 	c #FFC0C0",
+"X 	c #FFABAB",
+"Y 	c #FF3333",
+"Z 	c #B60000",
+"` 	c #797979",
+" .	c #A9A9A9",
+"..	c #787878",
+"+.	c #878585",
+"@.	c #9F99A7",
+"#.	c #4E4271",
+"$.	c #342C55",
+"%.	c #1A1141",
+"&.	c #10043F",
+"*.	c #0C0438",
+"=.	c #080435",
+"-.	c #080430",
+";.	c #060428",
+">.	c #000424",
+",.	c #353647",
+"'.	c #A8A99C",
+").	c #212516",
+"!.	c #BEBEBE",
+"~.	c #5B566C",
+"{.	c #353056",
+"].	c #423968",
+"^.	c #48416C",
+"/.	c #484066",
+"(.	c #413969",
+"_.	c #B9B9B9",
+":.	c #B17979",
+"<.	c #FFB3B3",
+"[.	c #FFF3F3",
+"}.	c #FFE3E3",
+"|.	c #FF8484",
+"1.	c #FF7777",
+"2.	c #FF6464",
+"3.	c #FF8888",
+"4.	c #FFD7D7",
+"5.	c #FF0000",
+"6.	c #C40000",
+"7.	c #7A7A7A",
+"8.	c #7D7D7D",
+"9.	c #888785",
+"0.	c #787186",
+"a.	c #170450",
+"b.	c #100448",
+"c.	c #100444",
+"d.	c #10043E",
+"e.	c #0B0438",
+"f.	c #353749",
+"g.	c #ADAC9E",
+"h.	c #2B2E1D",
+"i.	c #ADADAD",
+"j.	c #615C75",
+"k.	c #423A61",
+"l.	c #4F4D70",
+"m.	c #594E85",
+"n.	c #493F66",
+"o.	c #B37A7A",
+"p.	c #FFADAD",
+"q.	c #FFE1E1",
+"r.	c #FFF1F1",
+"s.	c #FF7676",
+"t.	c #FF6868",
+"u.	c #FF6060",
+"v.	c #FF4949",
+"w.	c #FFCFCF",
+"x.	c #FFBCBC",
+"y.	c #FFC5C5",
+"z.	c #CB0000",
+"A.	c #7E7E7E",
+"B.	c #818181",
+"C.	c #888887",
+"D.	c #787187",
+"E.	c #110448",
+"F.	c #080436",
+"G.	c #070428",
+"H.	c #35374A",
+"I.	c #ADAEA0",
+"J.	c #3B3E2B",
+"K.	c #61625F",
+"L.	c #635C75",
+"M.	c #3D3660",
+"N.	c #494169",
+"O.	c #4B4669",
+"P.	c #4F4A6A",
+"Q.	c #8D8F8D",
+"R.	c #C2C2C2",
+"S.	c #B67B7B",
+"T.	c #FF9F9F",
+"U.	c #FFCECE",
+"V.	c #FFBABA",
+"W.	c #FF4C4C",
+"X.	c #FF4848",
+"Y.	c #FF6262",
+"Z.	c #FFB4B4",
+"`.	c #FFCBCB",
+" +	c #C70000",
+".+	c #808080",
+"++	c #AFAFAF",
+"@+	c #868686",
+"#+	c #898A89",
+"$+	c #757084",
+"%+	c #2A185A",
+"&+	c #291D44",
+"*+	c #2E2648",
+"=+	c #170A45",
+"-+	c #B1B3A6",
+";+	c #51533D",
+">+	c #4F514D",
+",+	c #5D5871",
+"'+	c #333158",
+")+	c #3D3460",
+"!+	c #423E65",
+"~+	c #515171",
+"{+	c #9D9E9D",
+"]+	c #626262",
+"^+	c #8A8A8A",
+"/+	c #B87C7C",
+"(+	c #FF8E8E",
+"_+	c #FFC1C1",
+":+	c #FFA7A7",
+"<+	c #FF3535",
+"[+	c #FF2929",
+"}+	c #FFD3D3",
+"|+	c #FFCCCC",
+"1+	c #838383",
+"2+	c #B2B2B2",
+"3+	c #8B8B8B",
+"4+	c #8A8B8A",
+"5+	c #777085",
+"6+	c #3A334E",
+"7+	c #0C0A0C",
+"8+	c #141414",
+"9+	c #373151",
+"0+	c #0C0439",
+"a+	c #080437",
+"b+	c #393C4C",
+"c+	c #B8B9AC",
+"d+	c #64664F",
+"e+	c #565751",
+"f+	c #28233D",
+"g+	c #2E2749",
+"h+	c #373051",
+"i+	c #393561",
+"j+	c #393259",
+"k+	c #352C52",
+"l+	c #6E6E6E",
+"m+	c #BA7B7B",
+"n+	c #FF8989",
+"o+	c #FF2121",
+"p+	c #FFD1D1",
+"q+	c #CA0000",
+"r+	c #878787",
+"s+	c #B8B8B8",
+"t+	c #8F8F8F",
+"u+	c #8C8C8A",
+"v+	c #797487",
+"w+	c #5F5A6C",
+"x+	c #847A4D",
+"y+	c #817D76",
+"z+	c #282634",
+"A+	c #0E083E",
+"B+	c #060429",
+"C+	c #000425",
+"D+	c #3C3E50",
+"E+	c #BDBFB1",
+"F+	c #767860",
+"G+	c #595A54",
+"H+	c #8D8D8D",
+"I+	c #929292",
+"J+	c #959497",
+"K+	c #ACABAE",
+"L+	c #737473",
+"M+	c #302A4F",
+"N+	c #3F3C64",
+"O+	c #4B4274",
+"P+	c #4F4876",
+"Q+	c #3F3C69",
+"R+	c #BD7C7C",
+"S+	c #FAA8A8",
+"T+	c #E93B3B",
+"U+	c #F2C6C6",
+"V+	c #EB9191",
+"W+	c #D12E2E",
+"X+	c #D50000",
+"Y+	c #E88E8E",
+"Z+	c #FFD0D0",
+"`+	c #CE0000",
+" @	c #898989",
+".@	c #BCBCBC",
+"+@	c #949494",
+"@@	c #8D8D8C",
+"#@	c #7C788C",
+"$@	c #776960",
+"%@	c #E6C019",
+"&@	c #B1993D",
+"*@	c #26242E",
+"=@	c #171045",
+"-@	c #07042B",
+";@	c #3D3F52",
+">@	c #C6C5B7",
+",@	c #818368",
+"'@	c #595A53",
+")@	c #393052",
+"!@	c #494261",
+"~@	c #52497A",
+"{@	c #4F487A",
+"]@	c #4D4669",
+"^@	c #463E69",
+"/@	c #BC7B7B",
+"(@	c #E86C6C",
+"_@	c #E1A2A2",
+":@	c #DFA2A2",
+"<@	c #C34141",
+"[@	c #C54343",
+"}@	c #F0D8D8",
+"|@	c #A80000",
+"1@	c #AD0000",
+"2@	c #AB0000",
+"3@	c #AA0000",
+"4@	c #BB0000",
+"5@	c #999999",
+"6@	c #8F8E8C",
+"7@	c #8F8C9A",
+"8@	c #959398",
+"9@	c #E5E4DF",
+"0@	c #FBF8F4",
+"a@	c #383437",
+"b@	c #38334F",
+"c@	c #0B0639",
+"d@	c #06042B",
+"e@	c #47495A",
+"f@	c #C7C8BB",
+"g@	c #858770",
+"h@	c #5C5D57",
+"i@	c #14D121",
+"j@	c #332C54",
+"k@	c #3D3A69",
+"l@	c #494266",
+"m@	c #494666",
+"n@	c #494363",
+"o@	c #3F3B66",
+"p@	c #979897",
+"q@	c #AE7D7D",
+"r@	c #CD6262",
+"s@	c #EABFBF",
+"t@	c #EFCBCB",
+"u@	c #C94646",
+"v@	c #C02929",
+"w@	c #FCF5F5",
+"x@	c #C63A3A",
+"y@	c #B10000",
+"z@	c #B50000",
+"A@	c #B70000",
+"B@	c #A10000",
+"C@	c #BDBDBD",
+"D@	c #9E9E9E",
+"E@	c #90908E",
+"F@	c #707170",
+"G@	c #DEDDDA",
+"H@	c #FEFBF8",
+"I@	c #FAF7F4",
+"J@	c #969592",
+"K@	c #1B1A1C",
+"L@	c #807D8A",
+"M@	c #767580",
+"N@	c #75737C",
+"O@	c #707279",
+"P@	c #939496",
+"Q@	c #C7C5B7",
+"R@	c #797E67",
+"S@	c #999A99",
+"T@	c #58576C",
+"U@	c #5C5874",
+"V@	c #5E5576",
+"W@	c #5C597A",
+"X@	c #5E5778",
+"Y@	c #5C5570",
+"Z@	c #646464",
+"`@	c #B07C7C",
+" #	c #DB8282",
+".#	c #ECBABA",
+"+#	c #E7AFAF",
+"@#	c #DA7F7F",
+"##	c #BA0D0D",
+"$#	c #BD1616",
+"%#	c #B00000",
+"&#	c #B40000",
+"*#	c #BA0000",
+"=#	c #A20000",
+"-#	c #C1C1C1",
+";#	c #A2A2A2",
+">#	c #626362",
+",#	c #737270",
+"'#	c #FFFBF8",
+")#	c #FDFBF8",
+"!#	c #FFFCFA",
+"~#	c #E4E1DE",
+"{#	c #060406",
+"]#	c #ACAEAC",
+"^#	c #EFEEEC",
+"/#	c #EEEDE8",
+"(#	c #E7EAE5",
+"_#	c #E4E2DD",
+":#	c #B9BAAC",
+"<#	c #676C55",
+"[#	c #E9E9E9",
+"}#	c #6B6C6D",
+"|#	c #828282",
+"1#	c #B07B7B",
+"2#	c #D36060",
+"3#	c #CD4D4D",
+"4#	c #C63434",
+"5#	c #B80000",
+"6#	c #B90000",
+"7#	c #9E0000",
+"8#	c #C8C8C8",
+"9#	c #5B543A",
+"0#	c #A19054",
+"a#	c #FDFBF7",
+"b#	c #FCFAF6",
+"c#	c #F2E6B8",
+"d#	c #090608",
+"e#	c #807E6E",
+"f#	c #9A9A8E",
+"g#	c #95958B",
+"h#	c #565947",
+"i#	c #70715E",
+"j#	c #78786D",
+"k#	c #91928E",
+"l#	c #EDEDED",
+"m#	c #A4A4A4",
+"n#	c #B1B0B4",
+"o#	c #B1AFB4",
+"p#	c #858587",
+"q#	c #6B6A6B",
+"r#	c #757475",
+"s#	c #787678",
+"t#	c #7C7A7C",
+"u#	c #AC7171",
+"v#	c #8B0000",
+"w#	c #920000",
+"x#	c #980000",
+"y#	c #970000",
+"z#	c #9A0000",
+"A#	c #990000",
+"B#	c #8F0000",
+"C#	c #880000",
+"D#	c #979797",
+"E#	c #D5D5D5",
+"F#	c #534820",
+"G#	c #EFC522",
+"H#	c #EFC610",
+"I#	c #7D755E",
+"J#	c #FEFBF7",
+"K#	c #E4C261",
+"L#	c #B78C0D",
+"M#	c #C2A92E",
+"N#	c #2C2D1E",
+"O#	c #26281A",
+"P#	c #515341",
+"Q#	c #727370",
+"R#	c #A4A5A3",
+"S#	c #F2F2F2",
+"T#	c #CDBC6E",
+"U#	c #AE6E22",
+"V#	c #6B6A6C",
+"W#	c #A7A6A6",
+"X#	c #8A5858",
+"Y#	c #745050",
+"Z#	c #755050",
+"`#	c #785353",
+" $	c #795454",
+".$	c #7B5656",
+"+$	c #7E5959",
+"@$	c #805B5B",
+"#$	c #815C5C",
+"$$	c #845F5F",
+"%$	c #876363",
+"&$	c #8F6868",
+"*$	c #A58181",
+"=$	c #E7E7E7",
+"-$	c #63511C",
+";$	c #F3C410",
+">$	c #F7CF10",
+",$	c #D7B540",
+"'$	c #A6A3A3",
+")$	c #787773",
+"!$	c #956E0F",
+"~$	c #F6CA10",
+"{$	c #D4B328",
+"]$	c #7F7A62",
+"^$	c #4E4E46",
+"/$	c #2D2E24",
+"($	c #4C4C40",
+"_$	c #90918A",
+":$	c #F7F7F7",
+"<$	c #9B9B9D",
+"[$	c #6E6C6F",
+"}$	c #A7A7A7",
+"|$	c #AAAAAA",
+"1$	c #B3B3B3",
+"2$	c #B6B6B6",
+"3$	c #CBCBCB",
+"4$	c #D4D4D4",
+"5$	c #DFDFDF",
+"6$	c #FAFAFA",
+"7$	c #494847",
+"8$	c #373022",
+"9$	c #755E2F",
+"0$	c #695024",
+"a$	c #2D2B23",
+"b$	c #292921",
+"c$	c #664D24",
+"d$	c #6F5624",
+"e$	c #40403D",
+"f$	c #C6C6C6",
+"g$	c #E4E4E4",
+"h$	c #FCFCFC",
+"i$	c #C7C7C7",
+"j$	c #696869",
+"k$	c #000001",
+"l$	c #FEFEFE",
+"m$	c #020202",
+"n$	c #5C5C5C",
+"o$	c #7F7F7F",
+"p$	c #858585",
+"q$	c #888888",
+"r$	c #707070",
+"s$	c #919397",
+"t$	c #9B9EA4",
+"u$	c #9DA0A7",
+"v$	c #9FA2A9",
+"w$	c #A0A4AB",
+"x$	c #A1A5AD",
+"y$	c #A3A6AB",
+"z$	c #A6A6A6",
+"A$	c #B0B0B0",
+"B$	c #2C2C2C",
+"C$	c #F1F1F1",
+"D$	c #878D94",
+"E$	c #868D94",
+"F$	c #888E94",
+"G$	c #858C93",
+"H$	c #858B92",
+"I$	c #848A91",
+"J$	c #959595",
+"K$	c #82827A",
+"L$	c #A48E74",
+"M$	c #817A73",
+"N$	c #C3C6CC",
+"O$	c #FEFFFF",
+"P$	c #F8FAFF",
+"Q$	c #EEF1FA",
+"R$	c #E0E5F2",
+"S$	c #B3BDD1",
+"T$	c #AFB2B9",
+"U$	c #E5E5E5",
+"V$	c #939393",
+"W$	c #A1805D",
+"X$	c #FFCD81",
+"Y$	c #DD9B55",
+"Z$	c #89827B",
+"`$	c #C4C7CD",
+" %	c #FAFCFF",
+".%	c #F1F4FC",
+"+%	c #E5EAF4",
+"@%	c #DAE0ED",
+"#%	c #B4B7BE",
+"$%	c #202020",
+"%%	c #829BB6",
+"&%	c #F0F0F0",
+"*%	c #EFEFEF",
+"=%	c #ECECEC",
+"-%	c #EBEBEB",
+";%	c #A87E53",
+">%	c #F5800D",
+",%	c #FFCF81",
+"'%	c #DE9E58",
+")%	c #C9C4C3",
+"!%	c #FBFDFF",
+"~%	c #F5F7FD",
+"{%	c #E9EDF7",
+"]%	c #F5F8FD",
+"^%	c #D9DFED",
+"/%	c #BABDC4",
+"(%	c #92D0F5",
+"_%	c #10161B",
+":%	c #1D2931",
+"<%	c #3B5462",
+"[%	c #75A6C4",
+"}%	c #98D3F5",
+"|%	c #7590AE",
+"1%	c #EEEEEE",
+"2%	c #EAEAEA",
+"3%	c #919191",
+"4%	c #9D9D9D",
+"5%	c #A88665",
+"6%	c #FF931E",
+"7%	c #F57F0D",
+"8%	c #FFC87E",
+"9%	c #EBA863",
+"0%	c #F5EEE7",
+"a%	c #FDFFFF",
+"b%	c #F7F9FE",
+"c%	c #EDF0F9",
+"d%	c #A3AFC7",
+"e%	c #41ACFD",
+"f%	c #256391",
+"g%	c #3286C5",
+"h%	c #348ACB",
+"i%	c #163B57",
+"j%	c #3081BE",
+"k%	c #A1A1A1",
+"l%	c #926F59",
+"m%	c #E16E0D",
+"n%	c #FF8F16",
+"o%	c #FFBF64",
+"p%	c #E89F5B",
+"q%	c #F8F0EA",
+"r%	c #EFF3FA",
+"s%	c #E6EAF5",
+"t%	c #DADDE4",
+"u%	c #ABB5CC",
+"v%	c #61BAFA",
+"w%	c #172B3A",
+"x%	c #040608",
+"y%	c #091016",
+"z%	c #5CB1EE",
+"A%	c #D9D9D9",
+"B%	c #B8B5B5",
+"C%	c #7E7775",
+"D%	c #B3AEAD",
+"E%	c #CACACA",
+"F%	c #E8E8E8",
+"G%	c #909090",
+"H%	c #82726B",
+"I%	c #903400",
+"J%	c #E26C0A",
+"K%	c #FC890D",
+"L%	c #FF8808",
+"M%	c #FDB683",
+"N%	c #EEC297",
+"O%	c #FFF6F4",
+"P%	c #F8FBFF",
+"Q%	c #B4BDD1",
+"R%	c #0E2537",
+"S%	c #0A1A26",
+"T%	c #B07B6F",
+"U%	c #C46755",
+"V%	c #E1705A",
+"W%	c #DA6A53",
+"X%	c #D16650",
+"Y%	c #B35846",
+"Z%	c #975C50",
+"`%	c #544441",
+" &	c #7F6A62",
+".&	c #8F3200",
+"+&	c #E26600",
+"@&	c #FF7902",
+"#&	c #FD9D66",
+"$&	c #FFF0D8",
+"%&	c #FEDBCA",
+"&&	c #F9FBFF",
+"*&	c #ECF0F9",
+"=&	c #E1E6F2",
+"-&	c #BBC3D6",
+";&	c #08131D",
+">&	c #716E7A",
+",&	c #D3705C",
+"'&	c #E06C56",
+")&	c #DD6B55",
+"!&	c #D76851",
+"~&	c #CF644F",
+"{&	c #C7614D",
+"]&	c #C05D4A",
+"^&	c #B85A47",
+"/&	c #AE5745",
+"(&	c #66443E",
+"_&	c #7E6861",
+":&	c #8C3301",
+"<&	c #C05410",
+"[&	c #D86E3A",
+"}&	c #FABE97",
+"|&	c #FFE1C6",
+"1&	c #F0E5E7",
+"2&	c #E8ECF6",
+"3&	c #E5E9F4",
+"4&	c #C0C8DA",
+"5&	c #C0C0C0",
+"6&	c #225B85",
+"7&	c #3FA6F5",
+"8&	c #CB7462",
+"9&	c #DF6C55",
+"0&	c #DB6A53",
+"a&	c #D36750",
+"b&	c #CB634E",
+"c&	c #C45F4B",
+"d&	c #BC5B48",
+"e&	c #B55946",
+"f&	c #AD5544",
+"g&	c #A65241",
+"h&	c #A15443",
+"i&	c #948886",
+"j&	c #6A6A6A",
+"k&	c #757575",
+"l&	c #6E5A53",
+"m&	c #4D301B",
+"n&	c #75451E",
+"o&	c #C97750",
+"p&	c #FBCAA9",
+"q&	c #F8D4C8",
+"r&	c #EBEFF8",
+"s&	c #C3CBDC",
+"t&	c #C4C4C4",
+"u&	c #E9F6FD",
+"v&	c #333334",
+"w&	c #4C4C4C",
+"x&	c #606E80",
+"y&	c #E27E67",
+"z&	c #D76852",
+"A&	c #CF654F",
+"B&	c #C8614D",
+"C&	c #B37357",
+"D&	c #6C777D",
+"E&	c #647276",
+"F&	c #5D6B6F",
+"G&	c #566668",
+"H&	c #4F6062",
+"I&	c #7F817F",
+"J&	c #6D6D6D",
+"K&	c #777777",
+"L&	c #7E7F84",
+"M&	c #5F5B57",
+"N&	c #5C3219",
+"O&	c #BD7552",
+"P&	c #EEAE8B",
+"Q&	c #E1E0E2",
+"R&	c #EAEEF7",
+"S&	c #C5CCDD",
+"T&	c #D2ECFB",
+"U&	c #3B4246",
+"V&	c #E5937F",
+"W&	c #CC634E",
+"X&	c #C45F4C",
+"Y&	c #BD5C49",
+"Z&	c #CEB660",
+"`&	c #5B9F93",
+" *	c #26849B",
+".*	c #1F7B90",
+"+*	c #197386",
+"@*	c #297988",
+"#*	c #505F61",
+"$*	c #747474",
+"%*	c #919398",
+"&*	c #9A9B9E",
+"**	c #665D5A",
+"=*	c #4A3423",
+"-*	c #86847E",
+";*	c #EBEFF7",
+">*	c #E7EBF5",
+",*	c #C6CDDE",
+"'*	c #CCCCCC",
+")*	c #597F96",
+"!*	c #989898",
+"~*	c #B48A80",
+"{*	c #D47B68",
+"]*	c #B95A47",
+"^*	c #B25845",
+"/*	c #AE5E46",
+"(*	c #D2D468",
+"_*	c #AEC16D",
+":*	c #237D90",
+"<*	c #197487",
+"[*	c #2C7A89",
+"}*	c #2F5A62",
+"|*	c #6F7272",
+"1*	c #8C8C8C",
+"2*	c #999CA0",
+"3*	c #B2B4B9",
+"4*	c #B0B3B7",
+"5*	c #9D9FA4",
+"6*	c #565759",
+"7*	c #CDD1D8",
+"8*	c #D0D0D0",
+"9*	c #5E879F",
+"0*	c #555352",
+"a*	c #916B62",
+"b*	c #C37968",
+"c*	c #AD5D4D",
+"d*	c #B48451",
+"e*	c #CCCF68",
+"f*	c #C5C769",
+"g*	c #6B957C",
+"h*	c #39727D",
+"i*	c #274B53",
+"j*	c #2D3739",
+"k*	c #CACDD2",
+"l*	c #F0F0F2",
+"m*	c #E8EBF1",
+"n*	c #E5E8EF",
+"o*	c #E3E6EE",
+"p*	c #E2E6EE",
+"q*	c #E4E8F1",
+"r*	c #E6EBF5",
+"s*	c #C6CEDE",
+"t*	c #AEAEAE",
+"u*	c #796D6A",
+"v*	c #765149",
+"w*	c #8C764A",
+"x*	c #97974E",
+"y*	c #838447",
+"z*	c #586347",
+"A*	c #293B3F",
+"B*	c #565858",
+"C*	c #BBBBBB",
+"D*	c #CFD3DA",
+"E*	c #D7DCE7",
+"F*	c #D3DAE6",
+"G*	c #D2D8E5",
+"H*	c #D1D7E5",
+"I*	c #CFD6E3",
+"J*	c #CDD4E3",
+"K*	c #CBD2E1",
+"L*	c #C9D0E0",
+"M*	c #C7CFDF",
+"N*	c #B6BFD2",
+"O*	c #D8D8D8",
+"P*	c #C3C3C3",
+"Q*	c #B7B7B7",
+"R*	c #A0A0A0",
+"S*	c #A5A5A5",
+"T*	c #BFBFBF",
+"U*	c #0B0B0B",
+"V*	c #090909",
+"W*	c #D9D499",
+"X*	c #E4D08D",
+"Y*	c #EABE8D",
+"Z*	c #E3B26B",
+"`*	c #E3B982",
+" =	c #BDA385",
+".=	c #C6C6D5",
+"+=	c #9494AD",
+"@=	c #787879",
+"#=	c #78787D",
+"$=	c #838386",
+"%=	c #80807B",
+"&=	c #79786A",
+"*=	c #868568",
+"==	c #8C8C6B",
+"-=	c #888874",
+";=	c #EDE1C3",
+">=	c #ECC48A",
+",=	c #F69854",
+"'=	c #F78E42",
+")=	c #EB9D54",
+"!=	c #FFC280",
+"~=	c #DA776F",
+"{=	c #EA3166",
+"]=	c #DE2F66",
+"^=	c #D57F6A",
+"/=	c #BBA97D",
+"(=	c #F3C3BC",
+"_=	c #ED6B56",
+":=	c #E8E1E3",
+"<=	c #EEEEF2",
+"[=	c #EAEAF0",
+"}=	c #DEDEE7",
+"|=	c #E0E0E9",
+"1=	c #7F7F83",
+"2=	c #A7A7AE",
+"3=	c #D2D2CB",
+"4=	c #EDEDC5",
+"5=	c #FDF9AE",
+"6=	c #EDE98B",
+"7=	c #D2CF66",
+"8=	c #ADA84D",
+"9=	c #8E8B4B",
+"0=	c #9D9986",
+"a=	c #EED392",
+"b=	c #FFCF86",
+"c=	c #FBBB57",
+"d=	c #E92F00",
+"e=	c #EB2F00",
+"f=	c #D85025",
+"g=	c #F3B366",
+"h=	c #E6466F",
+"i=	c #FF0061",
+"j=	c #DD7075",
+"k=	c #D6B275",
+"l=	c #B89A77",
+"m=	c #C6BFCC",
+"n=	c #F36C55",
+"o=	c #EB3517",
+"p=	c #DCBAB7",
+"q=	c #EDEFF4",
+"r=	c #EDEDF2",
+"s=	c #E1E1E9",
+"t=	c #C9C9D7",
+"u=	c #767675",
+"v=	c #8C8B7D",
+"w=	c #D7D7B9",
+"x=	c #FFFFF0",
+"y=	c #FFFFFA",
+"z=	c #FFFDD8",
+"A=	c #FFFAB0",
+"B=	c #FFF88D",
+"C=	c #FFF566",
+"D=	c #FFF746",
+"E=	c #D1C336",
+"F=	c #82723E",
+"G=	c #9A8F7E",
+"H=	c #F1DCB7",
+"I=	c #FDCF86",
+"J=	c #FFCF72",
+"K=	c #F8BB57",
+"L=	c #D02F00",
+"M=	c #DF2F00",
+"N=	c #EF4310",
+"O=	c #F6B661",
+"P=	c #E44D6C",
+"Q=	c #F00877",
+"R=	c #F80677",
+"S=	c #DD7179",
+"T=	c #CEA764",
+"U=	c #CE9B60",
+"V=	c #C6C3D1",
+"W=	c #F3806D",
+"X=	c #ED2F11",
+"Y=	c #D9BCB9",
+"Z=	c #EDEFF3",
+"`=	c #E4E4EB",
+" -	c #7D7D6B",
+".-	c #D7D79A",
+"+-	c #FFFBBF",
+"@-	c #FFFEDB",
+"#-	c #FFFEE4",
+"$-	c #FFFBB2",
+"%-	c #FFF986",
+"&-	c #FFF658",
+"*-	c #FDEF36",
+"=-	c #D6B832",
+"--	c #926E35",
+";-	c #6F5642",
+">-	c #B5B1AC",
+",-	c #F3D269",
+"'-	c #F8D334",
+")-	c #FFDC45",
+"!-	c #FAC75D",
+"~-	c #DF7D3B",
+"{-	c #E97A2A",
+"]-	c #E7843C",
+"^-	c #EDBD61",
+"/-	c #E3947A",
+"(-	c #DE6C79",
+"_-	c #DB3686",
+":-	c #CE7E9D",
+"<-	c #CE8BA6",
+"[-	c #CE8188",
+"}-	c #996D74",
+"|-	c #D1D1D1",
+"1-	c #F3CDC6",
+"2-	c #E93E23",
+"3-	c #DED3D3",
+"4-	c #F1F1F5",
+"5-	c #E6E6ED",
+"6-	c #DBDBE5",
+"7-	c #CDCDDA",
+"8-	c #BFBFD0",
+"9-	c #76756C",
+"0-	c #A9A669",
+"a-	c #FFF992",
+"b-	c #FFF9A4",
+"c-	c #FFFEE3",
+"d-	c #FDFDED",
+"e-	c #F5F2B4",
+"f-	c #F9F477",
+"g-	c #FFF23D",
+"h-	c #D6BA31",
+"i-	c #A97B33",
+"j-	c #A67133",
+"k-	c #826137",
+"l-	c #A08C69",
+"m-	c #FFEB19",
+"n-	c #FFFF00",
+"o-	c #FFF709",
+"p-	c #F2D135",
+"q-	c #E5C26F",
+"r-	c #D3CE77",
+"s-	c #D1B165",
+"t-	c #CFB875",
+"u-	c #AF7C77",
+"v-	c #B1306F",
+"w-	c #961766",
+"x-	c #9D36B5",
+"y-	c #9F09D6",
+"z-	c #A406CC",
+"A-	c #A55DB4",
+"B-	c #F5EAE9",
+"C-	c #EE391C",
+"D-	c #DCB3AE",
+"E-	c #F0F1F6",
+"F-	c #F0F0F4",
+"G-	c #E7E7EE",
+"H-	c #E3E3EA",
+"I-	c #D0D0DC",
+"J-	c #C4C4D3",
+"K-	c #C2C2D1",
+"L-	c #89865A",
+"M-	c #D2CC62",
+"N-	c #FFF676",
+"O-	c #FFF785",
+"P-	c #FFFA9D",
+"Q-	c #FCFABC",
+"R-	c #E2E3DA",
+"S-	c #C9C9C7",
+"T-	c #BFC0A2",
+"U-	c #CEB94A",
+"V-	c #A5732D",
+"W-	c #AD7933",
+"X-	c #C79333",
+"Y-	c #AD8735",
+"Z-	c #907A4A",
+"`-	c #CDCDCD",
+" ;	c #FBEF0C",
+".;	c #FFF70C",
+"+;	c #DFD148",
+"@;	c #DDC063",
+"#;	c #D0C261",
+"$;	c #D5B46A",
+"%;	c #907059",
+"&;	c #421B10",
+"*;	c #7B0947",
+"=;	c #7C0642",
+"-;	c #B43ED9",
+";;	c #A90BFD",
+">;	c #B853C8",
+",;	c #9F7258",
+"';	c #F0D5D0",
+");	c #EA3A1C",
+"!;	c #E05A44",
+"~;	c #E5E5E8",
+"{;	c #E8E8EE",
+"];	c #CBCBD9",
+"^;	c #C8C8D6",
+"/;	c #868247",
+"(;	c #EDE54C",
+"_;	c #FFF753",
+":;	c #FFF85C",
+"<;	c #FDF76B",
+"[;	c #EBEAC1",
+"};	c #BCBCC5",
+"|;	c #686875",
+"1;	c #878895",
+"2;	c #BFB9B6",
+"3;	c #BE903A",
+"4;	c #D5A730",
+"5;	c #DCB433",
+"6;	c #D1AF34",
+"7;	c #7F713F",
+"8;	c #FAD739",
+"9;	c #F3ED24",
+"0;	c #F8E533",
+"a;	c #D8C763",
+"b;	c #EBA76F",
+"c;	c #D1C260",
+"d;	c #C7A65C",
+"e;	c #311F0F",
+"f;	c #0C0000",
+"g;	c #390012",
+"h;	c #5F1B24",
+"i;	c #AA36BA",
+"j;	c #9B0BD5",
+"k;	c #9D0BD9",
+"l;	c #A4569D",
+"m;	c #EDA093",
+"n;	c #D68678",
+"o;	c #E36B58",
+"p;	c #D78F85",
+"q;	c #E4E7EE",
+"r;	c #DCDCE5",
+"s;	c #D6D6E1",
+"t;	c #D2D2DE",
+"u;	c #D1D1DD",
+"v;	c #CECEDB",
+"w;	c #78703B",
+"x;	c #F0DF34",
+"y;	c #F2E135",
+"z;	c #F2E034",
+"A;	c #E5D645",
+"B;	c #D9D9D3",
+"C;	c #6E6F7D",
+"D;	c #A4A5A6",
+"E;	c #696976",
+"F;	c #DDDFE8",
+"G;	c #DFCE66",
+"H;	c #F4D925",
+"I;	c #F3DC31",
+"J;	c #F2DC32",
+"K;	c #79703C",
+"L;	c #D6D6D6",
+"M;	c #EAC46F",
+"N;	c #F0CB6C",
+"O;	c #D8B36A",
+"P;	c #D1BD6E",
+"Q;	c #D3B375",
+"R;	c #CBB260",
+"S;	c #B28866",
+"T;	c #0C0706",
+"U;	c #020206",
+"V;	c #2B1010",
+"W;	c #5E3D1F",
+"X;	c #CB8B8D",
+"Y;	c #B78394",
+"Z;	c #C27794",
+"`;	c #B0747D",
+" >	c #C3BECB",
+".>	c #E56E5B",
+"+>	c #D6C5C5",
+"@>	c #EAD4D4",
+"#>	c #DE4C37",
+"$>	c #CFAEAF",
+"%>	c #D9D0D8",
+"&>	c #D5D4DF",
+"*>	c #D4D4E0",
+"=>	c #72643C",
+"->	c #B59434",
+";>	c #BA9332",
+">>	c #B48A30",
+",>	c #AD8336",
+"'>	c #B7B1AD",
+")>	c #888A97",
+"!>	c #6A6B78",
+"~>	c #A3A4AB",
+"{>	c #EDE871",
+"]>	c #FFF53F",
+"^>	c #FFF23F",
+"/>	c #EDE03B",
+"(>	c #8D863F",
+"_>	c #DBDBDB",
+":>	c #E5C895",
+"<>	c #DCAF6C",
+"[>	c #D8C065",
+"}>	c #CEBF61",
+"|>	c #C5B677",
+"1>	c #ACA385",
+"2>	c #9E9899",
+"3>	c #434340",
+"4>	c #3F3D1C",
+"5>	c #744232",
+"6>	c #BA7D50",
+"7>	c #9B7687",
+"8>	c #313FDB",
+"9>	c #1E3DF1",
+"0>	c #494FBA",
+"a>	c #C0ABB4",
+"b>	c #DA7767",
+"c>	c #E3CBC9",
+"d>	c #E9C7C4",
+"e>	c #D76A5D",
+"f>	c #D7341C",
+"g>	c #D35847",
+"h>	c #D36858",
+"i>	c #CABCC2",
+"j>	c #D7D7E2",
+"k>	c #705B4A",
+"l>	c #886035",
+"m>	c #A77333",
+"n>	c #B37E33",
+"o>	c #C8952D",
+"p>	c #CAAE4C",
+"q>	c #C1C0AE",
+"r>	c #D0D0D7",
+"s>	c #E7E7EC",
+"t>	c #F3F1DA",
+"u>	c #FDF792",
+"v>	c #FFF67B",
+"w>	c #FFF468",
+"x>	c #D2C957",
+"y>	c #A6A058",
+"z>	c #D3BB6C",
+"A>	c #CFB869",
+"B>	c #D0BB6C",
+"C>	c #B1A5A1",
+"D>	c #8A94A5",
+"E>	c #2D3945",
+"F>	c #444823",
+"G>	c #A17741",
+"H>	c #CF9A61",
+"I>	c #887F9F",
+"J>	c #0B2FFD",
+"K>	c #002FFD",
+"L>	c #324AD8",
+"M>	c #9C725C",
+"N>	c #B0ACAB",
+"O>	c #BE7570",
+"P>	c #DF5F48",
+"Q>	c #D98075",
+"R>	c #D2837B",
+"S>	c #CCB3B2",
+"T>	c #D6A19E",
+"U>	c #D45341",
+"V>	c #C75E4F",
+"W>	c #BFB9C0",
+"X>	c #D9D9E3",
+"Y>	c #857A70",
+"Z>	c #846337",
+"`>	c #CA9633",
+" ,	c #D4A533",
+".,	c #E2BE33",
+"+,	c #F6DD2B",
+"@,	c #F3EA4E",
+"#,	c #E1DF9A",
+"$,	c #EBEAD0",
+"%,	c #FDFCE5",
+"&,	c #FFFBBE",
+"*,	c #FFF8A1",
+"=,	c #FFF68A",
+"-,	c #AFA965",
+";,	c #C3BF82",
+">,	c #C6A47F",
+",,	c #A69F87",
+"',	c #3A364D",
+"),	c #525141",
+"!,	c #A67E41",
+"~,	c #C88B53",
+"{,	c #CF9061",
+"],	c #C88761",
+"^,	c #897F90",
+"/,	c #0F2FF3",
+"(,	c #082FF7",
+"_,	c #4047D8",
+":,	c #81645A",
+"<,	c #CA9C95",
+"[,	c #E25240",
+"},	c #B74331",
+"|,	c #D9A49B",
+"1,	c #D8CED0",
+"2,	c #DDDCE2",
+"3,	c #E4E6ED",
+"4,	c #DCC8CD",
+"5,	c #BDB4BA",
+"6,	c #C5C9D2",
+"7,	c #DADAE4",
+"8,	c #9C9B9A",
+"9,	c #826D48",
+"0,	c #B89535",
+"a,	c #F0D632",
+"b,	c #FEEF37",
+"c,	c #FFF75B",
+"d,	c #FFFB91",
+"e,	c #FFFDC8",
+"f,	c #FFFFF1",
+"g,	c #FFFDDB",
+"h,	c #FFFABD",
+"i,	c #D7D292",
+"j,	c #A39F72",
+"k,	c #DFDEC6",
+"l,	c #B27F5B",
+"m,	c #D4A77A",
+"n,	c #8C6636",
+"o,	c #72491F",
+"p,	c #9D7A45",
+"q,	c #CC9A61",
+"r,	c #CF9361",
+"s,	c #C99061",
+"t,	c #A97E5C",
+"u,	c #906D5F",
+"v,	c #808185",
+"w,	c #8F7885",
+"x,	c #A16773",
+"y,	c #6D4C42",
+"z,	c #B0ABAA",
+"A,	c #D77B6D",
+"B,	c #CB4F40",
+"C,	c #D51E0F",
+"D,	c #AC8183",
+"E,	c #E9EFF2",
+"F,	c #E5E5EC",
+"G,	c #D7D8E1",
+"H,	c #9E9787",
+"I,	c #8D7C3D",
+"J,	c #C9B434",
+"K,	c #FBEA34",
+"L,	c #FFF349",
+"M,	c #FFF56D",
+"N,	c #FFF798",
+"O,	c #FFFDE8",
+"P,	c #FFFEF3",
+"Q,	c #D7D5B9",
+"R,	c #9F9C85",
+"S,	c #D0CFB3",
+"T,	c #99714C",
+"U,	c #DBA97B",
+"V,	c #7B5029",
+"W,	c #767361",
+"X,	c #BBA07C",
+"Y,	c #CA9E68",
+"Z,	c #CA9561",
+"`,	c #CF8761",
+" '	c #B3805C",
+".'	c #322841",
+"+'	c #413759",
+"@'	c #8D7963",
+"#'	c #A7735A",
+"$'	c #A26453",
+"%'	c #DE6253",
+"&'	c #CE2B1C",
+"*'	c #C84030",
+"='	c #BE5245",
+"-'	c #B8BBC9",
+";'	c #F3F3F6",
+">'	c #DFDFE8",
+",'	c #AFA77E",
+"''	c #9A9144",
+")'	c #AFA73D",
+"!'	c #D2C851",
+"~'	c #EDE470",
+"{'	c #FDF598",
+"]'	c #EDE8AF",
+"^'	c #D2D0BC",
+"/'	c #AFAFB3",
+"('	c #A3A3A1",
+"_'	c #D0CFC1",
+":'	c #937257",
+"<'	c #DBAA7B",
+"['	c #714D25",
+"}'	c #C69D70",
+"|'	c #BE8D61",
+"1'	c #A77F54",
+"2'	c #443251",
+"3'	c #606492",
+"4'	c #A39EA3",
+"5'	c #A46959",
+"6'	c #96734D",
+"7'	c #DD6557",
+"8'	c #DC3121",
+"9'	c #C16F64",
+"0'	c #C1C8C8",
+"a'	c #BAB9AC",
+"b'	c #B3B072",
+"c'	c #A29E61",
+"d'	c #8C885F",
+"e'	c #7D7B64",
+"f'	c #8C8A78",
+"g'	c #A6A499",
+"h'	c #C3C3C2",
+"i'	c #DFDFDE",
+"j'	c #D5A96D",
+"k'	c #775529",
+"l'	c #A17E63",
+"m'	c #AC825F",
+"n'	c #936958",
+"o'	c #AC97A9",
+"p'	c #C9B4B3",
 ". . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . @ . . . . . . . . . . . . . . . . . + ",
-". # $ $ % % & * * * * = % % $ - ; + . > > > > > > > > > > > > > > > > + . , , , , , , , , ' > > > > > > > + ",
-". ) ! ~ { ] ] ^ ^ ^ / ] ] { ( ! & + . > > _ : < [ } | 1 2 3 4 5 6 > > + . , 7 8 9 0 a b , c d > > > > > > + ",
-". e f g h h i j j j k h h h l m n + . > o p q r s t u v w x y z A B > + . , C D E F G H , c d > > > > > > + ",
-". I J K L h M N O O P Q h R K S T + . > U V W X Y Z `  ...+.y z @.#.> + . , $.%.&.*.&.=., c d > > > > > > + ",
-". -.;.>.,.h h '.).).).,.h ,.!.O ~.+ . > {.].W X Y Z `  .^.+.y z /.(._.+ . , :.<.[.}.|.*., 1.2.> > > > > > + ",
-". ).3.4.5.h 6.h 7.8.8.9.h 5.4.4.>.+ . > 0.a.b.c.d.e.f.g.^.+.y z h.i.j.+ . , k.l.m.n.o.p.p.p.p.p.p.p.p.q.r.+ ",
-". 8.s.t.u.h v.w.h x.y.z.h A.B.s.C.+ . > D.E.F.G.H.I.J.g.^.+.y K.L.M.N.+ . , , , , , , p.O.P.Q.R.S.T.p.c d + ",
-". y.U.V.W.h X.Y.Z.h `. +h .+++ at +#++ . > D.$+%+&+*+=+-+g.^.;+>+K.,+'+)++ . > > !+~+, {+p.]+^+/+(+[._+p.c d + ",
-". :+<+[+}+h |+1+1+2+h 3+h 4+5+6+7++ . > 8+9+0+a+b+c+d+g.e+;+>+f+g+h+i++ . p.p.p.p.p.p.p.j+k+l+m+n+o+p.c d + ",
-". p+q+r+s+h t+u+v+w+x+h h y+z+A+B++ . > C+D+E+F+G+H+I+J+K+;+>+f+L+M+N++ . p.O+p.p.p.p.p.P+Q+R+S+T+U+p.c V++ ",
-". W+X+Y+Z+h `++ + + + + +  @. at +@@@+ . > #@$@%@&@: *@=@-@;@>@,@'@)@!@~@+ . p.p.p.p.p.p.p.{@]@^@/@(@_ at p.:@> + ",
-". + + + h h h <@+ + + + + + + + + + . > [@}@|@1 at 1@2 at 3@4 at 5@6 at 7@8 at 9@0 at a@+ . > > > b@> > p.p.p.p.p.p.p.p.p.> + ",
-". + + + + + + + + + + + + + + + + + . > > c at d@e@&@f at g@h at i@j at k@l at m@n at o@+ . > > > b@> > > > p at q@r at s@t at u@v@' + ",
-". + + + + + + + + + + + + + + + + + . w at x@y at z@A at B@C at D@E at F@G at H@I at o@o at o@+ . > > J at K@J@> p.p.p.p.p.p.p.p.L at M@+ ",
-". + + + + + + + + + + + + + + + + + . N at O@P at Q@R at S@T at U@V at W@X at Y@o at o@o@> + . b at b@K at K@K at b@p.O+p.p.p.p.p.Z@`@M at + ",
-". + + + + + + + + + + + + + + + + + .  #.#+#@###$#%#&#*#> > > > > > > + . > > J at K@J@> p.p.p.p.p.p.p.p.=#> + ",
+". # $ % & * = - ; > , ' ) ! ~ { ] + . ^ / ( _ : < [ } | 1 2 3 4 5 6 7 + . 8 8 8 8 8 8 8 8 9 0 a b c d e f + ",
+". $ g h i j k l m g n o p q r s f + . / : t u v w x y z A B C D E F G + . 8 H I J K L M 8 N a b c d e f 7 + ",
+". O P . Q R h S T U V W X Y Z `  .+ . ..+. at .#.$.%.&.*.=.-.;.>.,.'.).!.+ . 8 ~.{.].^./.(.8 N b c d e f 7 _.+ ",
+". :.<.[.. }.l |.1.2.3.. 4.5.6.7. .+ . 8.9.0.a.b.c.d.e.=.-.;.>.f.g.h.i.+ . 8 j.k.l.m.l.n.8 N c d e f 7 _.!.+ ",
+". o.p.q.r.. s.t.u.v.w.x.y.5.z.A.e + . B.C.D.a.E.c.d.e.F.-.G.>.H.I.J.K.+ . 8 L.M.N.O.P.m.8 Q.d e f 7 _.!.R.+ ",
+". S.T.U.i . V.W.X.Y.|.Z.`.5. +.++++ . @+#+$+%+&+*+=+e.F.-.;.>.H.-+;+>++ . 8 ,+'+)+!+~+{+{+{+{+{+{+{+{+]+^++ ",
+". /+(+_+:+V.. <+[+}+5._+|+5. +1+2++ . 3+4+5+6+7+8+9+0+a+-.G.>.b+c+d+e++ . 8 8 8 8 8 8 {+f+g+h+i+j+k+{+N l++ ",
+". m+m Z.:+W.. n+o+p+5.w.p+5.q+r+s++ . t+u+v+w+x+y+z+A+F.-.B+C+D+E+F+G++ . H+I+J+K+8 L+{+M+N+O+P+N.Q+{+N l++ ",
+". R+g p.S+T+U+. V+W+X+Y+Z+5.`+ @. at + . +@@@#@$@%@&@*@=@a+-.- at C+;@>@,@'@+ . {+{+{+{+{+{+{+)@!@~@{@]@^@{+N l++ ",
+". /@(@_@:@<@[@. }@|@1 at 2@3 at 4@Z ^+G + . 5 at 6@7 at 8@9 at 0@a at b@c at -.d@C+e at f@g at h@+ . {+i@{+{+{+{+{+j at k@l at m@n at o@{+N p at + ",
+". q at r@s at t@u at v@w at x@y at z@z at z@A at B@H+C at + . D at E@F at G@H at I@J at K@L at M@N at O@P at Q@R at S@+ . {+{+{+{+{+{+{+T at U@V at W@X at Y@{+Z at r++ ",
+". `@ #.#+#@###$#%#&#Z Z A@*#=#t+-#+ . ;#>#,#'#)#!#~#{#]#^#/#(#_#:#<#[#+ . b c d }#f 7 {+{+{+{+{+{+{+{+{+|#+ ",
+". 1#2#3#4#5#z at A@5#5#6#5#Z 5#7#t+8#+ . / 9#0#a#b#u c#d#e#f#g#h#i#j#k#l#+ . c d e }#7 _.d m#n#o#p#q#r#s#t#9 + ",
+". u#=#v#w#x#y#y#z#A#x#B#C#B#A#D#E#+ . F#G#H#I#J#u K#L#M#N#O#P#Q#R#l#S#+ . d e T#U#T#!.{+{+{+{+{+{+{+{+V#_ + ",
+". W#X#Y#Z#`# $.$+$@$#$$$%$&$*$i.=$+ . -$;$>$,$'$)$!$~${$]$^$/$($_$S#:$+ . }#}#U#U#U#}#{+i@{+{+{+{+{+<$[$_ + ",
+". 2+ .;#c }$|$i.1$2$_.R.3$4$5$=$6$+ . 7$8$9$0$a$b$c$d$e$f$g$[#l#S#:$h$+ . f 7 T#U#T#i${+{+{+{+{+{+{+{+j$^ + ",
 "+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
-". . . . . . . . . . . . . . . . . @ . . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . + ",
-". > > > > > > > > > > > > > > > > + . > > > > > -#> > > -#> > > > > > + . > > > > > > > > > > > > > ;#;#> + ",
-". >#>#>#> >#>#>#>#> >#>#>#> > > > + . > > > > > -#-#-#-#-#-#> > > > > + . > > > > > > > > > > > > ;#;#;#;#+ ",
-". > >#>#> > >#>#> > >#>#> > > > > + . > -#> > > > > > > > > > > > > > + . > > > > > > > > > > > + + ;#;#;#+ ",
-". > >#>#> > >#>#> > >#> > > > > > + . > -#> > > > > > > > > > ,#,#> > + . > > > > > > > > > > + + '#+ ;#> + ",
-". > >#>#> >#>#>#> >#>#> > > > > > + . > -#> > > > > > > > > )#)#,#> > + . > > > > > > > > > '#!#+ + + > > + ",
-". > >#>#> >#> >#> >#> > > > > > > + . -#-#> > ~#~#> > > > > )#)#,#> > + . > > > > > > > > '#!#!#!#+ > > > + ",
-". > > >#>#>#> >#> >#>#>#>#>#>#> > + . -#-#> O+O+~#> > > > > )#)#,#> > + . > > > > > > > '#!#!#!#'#> > > > + ",
-". > > >#>#> > >#>#> > >#>#> >#>#> + . -#-#> O+O+~#> > > > > )#)#,#> > + . > > > > > > '#!#!#!#'#> > > > > + ",
-". > > >#>#> > >#>#> > >#>#> >#>#> + . -#-#> O+O+~#> > {#{#> )#)#,#> > + . > > > > > '#!#!#!#'#> > > > > > + ",
-". > > >#> > > >#> > >#>#> > >#>#> + . -#-#> O+O+~#> >#>#{#> )#)#,#> > + . > > > > '#!#!#!#'#> > > > > > > + ",
-". > > > > > > > > > >#>#> >#>#> > + . > -#> O+O+~#> >#>#{#> )#)#,#> > + . > > > '#!#!#!#'#> > > > > > > > + ",
-". > > > > > > > > > >#>#>#>#> > > + . > -#> O+O+~#> >#>#{#> )#)#,#> > + . > > '#!#!#!#'#> > > > > > > > > + ",
-". > > > > > > > > >#>#> > > > > > + . > -#> O+O+~#> >#>#{#> )#)#,#> > + . > > ]#!#!#'#> > > > > > > > > > + ",
-". > > > > > > > > >#>#> > > > > > + . > -#-#-#-#-#-#-#-#-#-#-#-#-#-#> + . > ]#]#]#'#> > > > > > > > > > > + ",
-". > > > > > > > >#>#>#>#> > > > > + . > > > > > -#-#-#-#-#> > > > > > + . > ]#]#> > > > > > > > > > > > > + ",
-". > > > > > > > > > > > > > > > > + . > > > > > > > > > > > > > > > > + . + > > > > > > > > > > > > > > > + ",
-"+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
-". . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . @ . . . . . . . . . . . . . . . . . + ",
-". > > > > ^#/#(#_#:#<#[#}#> > > > + . > > > > > > > > > > > > > > > > + . > > > > > > > > -#> > > > > > > + ",
-". > > |#1#2#3#4#5#6#7#8#9#0#> > > + . > > > > > a#-#-#-#-#-#> > > > > + . b#b#b#b#b#b#b#-#c#-#b#b#b#b#b#b#+ ",
-". > d#e#f#g#h#i#j#k#l#l#m#n#o#> > + . > > > > p#-#q#r#. s#t#-#> > > > + . > > > > > > > -#> -#> > > > > > + ",
-". u#v#w#x#y#z#A#B#C#D#E#F#G#H#o#> + . > > > > -#s#I#. . . . J#-#> > > + . > > > > > > > -#> -#> > > > > > + ",
-". K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#> + . > > > Z#-#`# $.$+$@$#$$$-#> > > + . b#b#b#b#b#b#b#-#c#-#b#b#b#b#b#b#+ ",
-". %$&$*$=$-$;$>$,$'$)$!$~${$]$^$o#+ . > /$-#-#($_$-#:$<$-#[$. -#-#-#> + . > > > > > > > -#}$|$> > > > > > + ",
-". 1$&$2$3$4$5$6$7$8$9$0$a$b$b$c$d$+ . > -#+$$$e$I#I#. . . . . f$g$h$-#+ . > > > > > > i$-#|$> > > > > > > + ",
-". j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$d$+ . > -#y$z$. I#I#. . . . . A$B$C$-#+ . b#b#b#b#b#c#-#-#c#b#b#b#b#b#b#b#+ ",
-". D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$d$+ . > S$-##$z$I#I#. . . . . T$-#-#> + . > > > > > -#U$-#-#-#i$> > > > > + ",
-". V$W$X$Y$Z$`$ %.%+%@%#%$%%%&%*%d$+ . > > =%-#-%I#I#. . . . . -#> > > + . > > > > > -#> -#> > -#> > > > > + ",
-". > ;%>%,%'%)%!%~%{%]%]%^%/%(%_%:%+ . > > > -#-%I#I#. . . . . -#<%> > + . b#b#b#b#b#-#c#-#c#b#-#b#b#b#b#b#+ ",
-". > > > [%}%|%1%2%3%4%5%6%7%8%9%0%+ . > > > -#-%I#I#. . . . . a%-#> > + . > > > > > -#i$-#i$i$-#> > > > > + ",
-". > > b%c%d%e%f%g%h%i%j%k%l%m%n%o%+ . > > > -#p%I#q%r%. . . s%s#t#-#> + . > > > > > > -#-#-#-#> > > > > > + ",
-". > t%u%v%w%x%y%z%A%B%C%D%E%F%G%o#+ . > > -#H%A$I#I%f$q%. J%-#K%I#.$-#+ . b#b#b#b#b#b#b#c#-#c#b#b#b#b#b#b#+ ",
-". L%M%N%> > > > O%P%Q%R%S%T%U%V%> + . > -#W%X%I#g$-#Y%Z%`% &-#.&`%.&-#+ . > > > > > > -#-#-#> > > > > > > + ",
-". +&@&> > > > > > #&$&%&&&*&o#> > + . > -#=&-&;&-#-#-#-#-#-#> -#-#>&> + . > > > > > > -#-#i$> > > > > > > + ",
-"+ + + + + + + + + + + + + + + + + + + + + ,&-#-#+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "};
+". . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . k$",
+". l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$m$. ^ n$8.o$.+|#1+p$@+q$^+3+H+s r$d + . ^ / ..8.s$t$u$v$w$x$x$y$z$e A$7 + ",
+". l$l$l$l$l$l$l$l$l$l$l$l$+ B$C$C$+ . / 8.+ D$E$+ F$G$H$+ H$I$I$+ + at J$+ . K$L$M$B.N$. . O$P$Q$R$S$T$++7 G + ",
+". l$l$l$l$l$l$l$l$l$l$U$+ 9 l$l$l$+ . ..o$+ + + + + + + + + + + + V$J$+ . W$X$Y$Z$`$. . .  %.%+%S$@%#%_.!.+ ",
+". l$l$l$l$l$l$l$+ + $%+ o$l$l$l$l$+ . 8..++ %%%%+ C$&%*%+ l#=%-%+ I+5 at + . ;%>%,%'%)%. . . !%~%{%S$]%^%/%R.+ ",
+". (%(%(%(%(%(%_%:%<%[%+ (%(%(%}%}%+ . B.|#+ |%|%+ &%*%1%+ =%-%2%+ 3%4%+ . 5%6%7%8%9%0%. . a%b%c%S$S$S$d%. at + ",
+". e%e%e%e%e%f%g%e%e%h%i%j%e%e%e%e%+ . @+1++ + + + + + + + + + + + 3%k%+ . l%m%n%>%o%p%q%. O$P$r%s%t%t%u%7 + ",
+". v%v%v%v%v%v%v%w%x%y%z%v%v%v%v%v%+ . 3+p$+ |%|%+ 1%A%B%C%D%E%F%+ G%m#+ . H%I%J%K%L%M%N%O%O$P%c%s%t%t%Q%s++ ",
+". e%e%e%e%e%e%R%+ S%e%e%e%e%e%e%e%+ . t+ at ++ + + + T%U%V%W%X%Y%Z%`%H+d + . H+ &.&+&@&#&$&%&&&*&=&s%t%t%-&. at + ",
+". e%e%e%e%e%e%+ ;&h%e%e%e%e%e%e%e%+ . + at q$+ |%>&,&'&)&!&~&{&]&^&/&(&|$+ . ` r+_&:&<&[&}&|&1&2&3&s%t%t%4&5&+ ",
+". e%e%e%6&;&+ + 7&e%e%e%e%e%e%e%e%+ . 5@^++ + 8&9&0&a&b&c&d&e&f&g&h&i&+ . j&^ k&l&m&n&o&p&q&r&2&s%t%t%s&t&+ ",
+". u&u&x%+ v&w&B$u&u&u&u&u&u&u&u&u&+ . D at 3++ x&y&z&A&B&]&C&D&E&F&G&H&I&+ . J&r$/ K&L&M&N&O&P&Q&R&s%t%t%S&8#+ ",
+". T&x%U&T&T&T&T&T&T&T&T&T&T&T&T&T&+ . ;#H++ + V&W&X&Y&e&Z&`& *.*+*@*#*+ . $*k&K&7.%*f &***=*-*;*>*t%t%,*'*+ ",
+". )*<%(%(%(%(%(%(%(%(%(%(%(%(%}%}%+ . }$s + !*~*{*]*^*/*(*_*:*<*[*}*|*+ . a J$1*@+2*_.3*4*5*6*7*>*t%t%,*8*+ ",
+". 9*(%(%(%(%(%(%(%(%(%(%(%(%(%}%}%+ . e k&+ + 0*a*b*c*d*e*f*g*h*i*j*. at + . e A$1$] k*l*m*n*o*p*q*r*t%t%s*4$+ ",
+". (%(%(%(%(%(%(%(%(%(%(%(%(%(%}%}%+ . A$t*d |$t*k%u*v*w*x*y*z*A*B*C*-%+ . A$7 G !.D*E*F*G*H*I*J*K*L*M*N*O*+ ",
+". (%(%(%(%(%(%(%(%(%(%(%(%(%(%}%}%+ . 7 G !.P*8#3$i$G D#A.A.J$C*A%C$h$+ . 7 G !.P*Q*R*;#S* .e ++1$2$_.T*F%+ ",
+"+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + U*V*V*+ + + + + + + + + + + + ",
+". . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . k$. . . . . . . . . . . . . . . . . + ",
+". ^ / ..8.B. at +W*X*Y*Z*`* =e e A$7 + . ^ / ..8..=.=.=.=.=.=.=.=+=e A$7 + . ^ / ..@=#=$=%=&=*===-=a }$e A$7 + ",
+". / ..;=>=,='=)=!=~={=]=^=/=. at 7 G + . / ..8.B..=(=_=:=<=[=}=|=+=+=7 G + . / ..K&1=2=3=4=5=6=7=8=9=0=A$7 G + ",
+". / a=b=c=d=e=f=g=h=i=i=j=k=l=G !.+ . ..8.B. at +m=n=o=p=q=r=s=|=+=t=+=!.+ . ..u=v=w=x=y=z=A=B=C=D=E=F=G=G !.+ ",
+". H=I=J=K=L=M=N=O=P=Q=R=S=T=U=l=P*+ . 8.B. at +3+V=W=X=Y=Z=<=`=|=+=+=+=+=+ . @= -.-+- at -y=#-$-%-&-*-=---;->-P*+ ",
+". ,-'-)-!-~-{-]-^-/-(-_-:-<-[-}-|-+ . B. at +3+t+.=1-2-3-4-<=5-|=6-7-8-+=+ . 9-0-a-b-+-c-d-e-f-g-h-i-j-k-l-8#+ ",
+". m-n-o-p-q-r-s-t-u-v-w-x-y-z-A-l=+ . @+3+t++ at .=B-C-D-E-F-G-H-I-J-K-+=+ . L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-`-+ ",
+".  ;n-.;+;@;#;$;%;&;*;=;-;;;;;>;,;+ . 3+t++ at 5@.=';);!;~;F-{;|=];^;.=+=+ . /;(;_;:;<;[;};|;1;2;3;4;5;6;7;|-+ ",
+". 8;9;0;a;b;c;d;e;f;g;h;i;j;k;l;,;+ . t++ at 5@D at .=m;n;o;p;q;r;s;t;u;v;+=+ . w;x;y;z;A;B;C;D;E;F;G;H;I;J;K;L;+ ",
+". M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;`;,;+ . + at 5@D@;# >.>+>@>#>$>%>%>&>*>t;+=+ . =>->;>>>,>'>)>!>~>4-{>]>^>/>(>_>+ ",
+". :><>[>}>|>1>2>3>4>5>6>7>8>9>0>,;+ . 5 at D@;#}$a>b>c>d>e>f>g>h>i>j>s;+=+ . k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>5$+ ",
+". ;#z>A>B>C>D>E>F>G>H>H>I>J>K>L>M>+ . D@;#}$N>O>P>Q>R>S>T>U>V>W>X>s;+=+ . Y>Z>`> ,.,+,@,#,$,%,&,*,=,-,;,g$+ ",
+". ;#}$;#>,,,',),!,~,{,],^,/,(,_,:,+ . ;#}$<,[,},|,1,2,3,`=4,5,6,7,j>+=+ . 8,9,0,.,a,b,c,d,e,f,g,h,i,j,k,[#+ ",
+". }$;#l,m,n,o,p,q,r,s,t,u,v,w,x,y,+ . z,A,B,C,D,E,[={;5-F,H-}=G,7,j>+=+ . }$H,I,J,K,L,M,N,h,O,P,Q,R,S,[#l#+ ",
+". ;#T,U,V,W,X,Y,Z,`, '.'+'@'#'$'l=+ . %'&'*'='-';'{;G-F,`=s=>'6-7,j>+=+ . e A$,''')'!'~'{']'^'/'('_'[#l#S#+ ",
+". :'<'['!.P*8#|-}'|'1'2'3'4'5'6':$+ . 7'8'9'0'.=F-{;{;5-`=|=>'r;7,j>+=+ . A$7 G a'b'c'd'e'f'g'h'i'[#l#S#:$+ ",
+". j'k'!.P*8#`-|-|-l'm'n'o'p'l=:$h$+ . 7 G !.P*+=+=+=+=+=+=+=+=+=+=+=+=+ . 7 G !.P*8#`-|-L;_>5$g$[#l#S#:$h$+ ",
+"+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "};
diff --git a/icons/buttons2.xpm b/icons/buttons2.xpm
new file mode 100644
index 0000000..ddb5f12
--- /dev/null
+++ b/icons/buttons2.xpm
@@ -0,0 +1,854 @@
+/* XPM */
+static char * buttons_xpm[] = {
+"54 54 797 2",
+"  	c None",
+". 	c #FFFFFF",
+"+ 	c #AEAAAE",
+"@ 	c #000000",
+"# 	c #EDEDED",
+"$ 	c #E7E7E8",
+"% 	c #DCDCDE",
+"& 	c #D0D1D5",
+"* 	c #878D9B",
+"= 	c #858E9F",
+"- 	c #808793",
+"; 	c #7A869E",
+"> 	c #8C94A1",
+", 	c #A2A5AD",
+"' 	c #C6C6C9",
+") 	c #C2C2C5",
+"! 	c #FCFCFC",
+"~ 	c #F9F9F9",
+"{ 	c #F4F4F4",
+"] 	c #EFEFEF",
+"^ 	c #EAEAEA",
+"/ 	c #E6E6E6",
+"( 	c #E1E1E1",
+"_ 	c #DCDCDC",
+": 	c #D7D7D7",
+"< 	c #D3D3D3",
+"[ 	c #CFCFCF",
+"} 	c #CACACA",
+"| 	c #C5C5C5",
+"1 	c #C0C0C0",
+"2 	c #BCBCBC",
+"3 	c #B7B7B7",
+"4 	c #6F706F",
+"5 	c #686868",
+"6 	c #C5C7CF",
+"7 	c #717E92",
+"8 	c #889CA3",
+"9 	c #CFE3D8",
+"0 	c #D1E6D5",
+"a 	c #D1E7D4",
+"b 	c #D6EFD3",
+"c 	c #D8F0D3",
+"d 	c #B6C9C3",
+"e 	c #B8C1BE",
+"f 	c #ABAEB8",
+"g 	c #BCBCC0",
+"h 	c #EFEEEE",
+"i 	c #F6F6F4",
+"j 	c #F6F7F3",
+"k 	c #F3F4EE",
+"l 	c #E2E3DF",
+"m 	c #C5C5BE",
+"n 	c #B3B2A9",
+"o 	c #9F9F94",
+"p 	c #868685",
+"q 	c #6E706A",
+"r 	c #949685",
+"s 	c #B2B2B2",
+"t 	c #514E5A",
+"u 	c #1A1729",
+"v 	c #201A30",
+"w 	c #23203B",
+"x 	c #232039",
+"y 	c #211E37",
+"z 	c #616161",
+"A 	c #6E6E6E",
+"B 	c #C4C7D0",
+"C 	c #76899C",
+"D 	c #ADD1B9",
+"E 	c #CCFBB9",
+"F 	c #C5F1B5",
+"G 	c #B3D5AF",
+"H 	c #BAE1AB",
+"I 	c #C5F6A7",
+"J 	c #C3F4A2",
+"K 	c #BFF09E",
+"L 	c #AAD39E",
+"M 	c #86A197",
+"N 	c #B6B6BA",
+"O 	c #B4B3B6",
+"P 	c #898297",
+"Q 	c #554A75",
+"R 	c #40365E",
+"S 	c #241A4B",
+"T 	c #170B46",
+"U 	c #12093E",
+"V 	c #0E0737",
+"W 	c #0A0530",
+"X 	c #060429",
+"Y 	c #030325",
+"Z 	c #00031F",
+"` 	c #A1A2A0",
+" .	c #575747",
+"..	c #ADADAD",
+"+.	c #5B566C",
+"@.	c #353056",
+"#.	c #423968",
+"$.	c #48416C",
+"%.	c #484066",
+"&.	c #413969",
+"*.	c #546586",
+"=.	c #90C39C",
+"-.	c #E2FF9C",
+";.	c #93B38F",
+">.	c #79899E",
+",.	c #7585AA",
+"'.	c #96BA9B",
+").	c #B2EC86",
+"!.	c #B0EB7F",
+"~.	c #ACE777",
+"{.	c #A9E571",
+"].	c #A5DF6F",
+"^.	c #1C3078",
+"/.	c #B2B2B6",
+"(.	c #ACACB1",
+"_.	c #B2B2B3",
+":.	c #4D436A",
+"<.	c #160350",
+"[.	c #13034B",
+"}.	c #110346",
+"|.	c #0F0340",
+"1.	c #0C033A",
+"2.	c #0A0335",
+"3.	c #07032F",
+"4.	c #05032A",
+"5.	c #A3A4A3",
+"6.	c #5C5C4D",
+"7.	c #A8A8A8",
+"8.	c #615C75",
+"9.	c #423A61",
+"0.	c #4F4D70",
+"a.	c #594E85",
+"b.	c #493F66",
+"c.	c #BEC3CF",
+"d.	c #3E6C75",
+"e.	c #98D080",
+"f.	c #5D6C8D",
+"g.	c #6174A4",
+"h.	c #5F73AC",
+"i.	c #6985A2",
+"j.	c #9ADA69",
+"k.	c #9CE05B",
+"l.	c #9ADC58",
+"m.	c #98DA58",
+"n.	c #96D758",
+"o.	c #95D358",
+"p.	c #296B42",
+"q.	c #6E7A9B",
+"r.	c #B1B0B1",
+"s.	c #4E436A",
+"t.	c #070330",
+"u.	c #A4A5A3",
+"v.	c #61614F",
+"w.	c #3B3B2E",
+"x.	c #635C75",
+"y.	c #3D3660",
+"z.	c #494169",
+"A.	c #4B4669",
+"B.	c #4F4A6A",
+"C.	c #8D8F8D",
+"D.	c #878787",
+"E.	c #A4A4A4",
+"F.	c #63778E",
+"G.	c #5EA750",
+"H.	c #638F72",
+"I.	c #4D659F",
+"J.	c #4B61A2",
+"K.	c #5B7E8A",
+"L.	c #87CD4C",
+"M.	c #8BD442",
+"N.	c #89D142",
+"O.	c #88CD42",
+"P.	c #87CA42",
+"Q.	c #84C742",
+"R.	c #83C342",
+"S.	c #74DD00",
+"T.	c #0B2668",
+"U.	c #A6A6AC",
+"V.	c #AEAEAF",
+"W.	c #4D4269",
+"X.	c #261459",
+"Y.	c #281C4E",
+"Z.	c #2A1E4E",
+"`.	c #150945",
+" +	c #0C033B",
+".+	c #0A0336",
+"++	c #A7A7A5",
+"@+	c #6A6B59",
+"#+	c #454632",
+"$+	c #5D5871",
+"%+	c #333158",
+"&+	c #3D3460",
+"*+	c #423E65",
+"=+	c #515171",
+"-+	c #9D9E9D",
+";+	c #626262",
+">+	c #8A8A8A",
+",+	c #2B4B70",
+"'+	c #56A62B",
+")+	c #396362",
+"!+	c #3C598C",
+"~+	c #354C99",
+"{+	c #507D6E",
+"]+	c #76BF33",
+"^+	c #78C32D",
+"/+	c #77C02D",
+"(+	c #74BC2D",
+"_+	c #73B82D",
+":+	c #71B42D",
+"<+	c #6BAE28",
+"[+	c #5EB800",
+"}+	c #002F32",
+"|+	c #ACADB5",
+"1+	c #ADACAE",
+"2+	c #52476D",
+"3+	c #38314A",
+"4+	c #0A0809",
+"5+	c #181618",
+"6+	c #362F50",
+"7+	c #0F053D",
+"8+	c #000320",
+"9+	c #ABACAB",
+"0+	c #757764",
+"a+	c #565842",
+"b+	c #28233D",
+"c+	c #2E2749",
+"d+	c #373051",
+"e+	c #393561",
+"f+	c #393259",
+"g+	c #352C52",
+"h+	c #1F4B59",
+"i+	c #60C004",
+"j+	c #5EB70D",
+"k+	c #4C8A39",
+"l+	c #2A4C7E",
+"m+	c #264386",
+"n+	c #417257",
+"o+	c #4F8A3D",
+"p+	c #62AC17",
+"q+	c #5FA717",
+"r+	c #5DA317",
+"s+	c #599C18",
+"t+	c #4A881A",
+"u+	c #488C00",
+"v+	c #0F4D20",
+"w+	c #848FAC",
+"x+	c #5A5072",
+"y+	c #5F5A67",
+"z+	c #676149",
+"A+	c #777570",
+"B+	c #25232F",
+"C+	c #170E43",
+"D+	c #05032B",
+"E+	c #030326",
+"F+	c #B0B0AF",
+"G+	c #7E826D",
+"H+	c #666751",
+"I+	c #959497",
+"J+	c #ACABAE",
+"K+	c #737473",
+"L+	c #302A4F",
+"M+	c #3F3C64",
+"N+	c #4B4274",
+"O+	c #4F4876",
+"P+	c #3F3C69",
+"Q+	c #0A3455",
+"R+	c #5CB800",
+"S+	c #58B100",
+"T+	c #6BD600",
+"U+	c #2D5E1B",
+"V+	c #1A3884",
+"W+	c #1D3A85",
+"X+	c #234573",
+"Y+	c #4D9502",
+"Z+	c #4B9203",
+"`+	c #478D01",
+" @	c #38770F",
+".@	c #1D454C",
+"+@	c #1F4B5B",
+"@@	c #000E78",
+"#@	c #8692B2",
+"$@	c #AAABAB",
+"%@	c #645C7A",
+"&@	c #776349",
+"*@	c #E5C319",
+"=@	c #A78F32",
+"-@	c #27232C",
+";@	c #1E1448",
+">@	c #080330",
+",@	c #010320",
+"'@	c #B2B3B2",
+")@	c #888A75",
+"!@	c #6D6F59",
+"~@	c #393052",
+"{@	c #494261",
+"]@	c #52497A",
+"^@	c #4F487A",
+"/@	c #4D4669",
+"(@	c #463E69",
+"_@	c #30517B",
+":@	c #54A800",
+"<@	c #52A700",
+"[@	c #1F3A7F",
+"}@	c #25408A",
+"|@	c #27428B",
+"1@	c #294782",
+"2@	c #468E00",
+"3@	c #428203",
+"4@	c #428600",
+"5@	c #23466B",
+"6@	c #224542",
+"7@	c #437E00",
+"8@	c #08083D",
+"9@	c #84848C",
+"0@	c #A7A7AA",
+"a@	c #6D677D",
+"b@	c #9A9798",
+"c@	c #DBD0B1",
+"d@	c #ECE9E0",
+"e@	c #353334",
+"f@	c #362F4E",
+"g@	c #0F073A",
+"h@	c #080331",
+"i@	c #BBBCBB",
+"j@	c #8B8E79",
+"k@	c #72735E",
+"l@	c #14D121",
+"m@	c #332C54",
+"n@	c #3D3A69",
+"o@	c #494266",
+"p@	c #494666",
+"q@	c #494363",
+"r@	c #3F3B66",
+"s@	c #979897",
+"t@	c #7185A6",
+"u@	c #3D7E21",
+"v@	c #3E7B1A",
+"w@	c #253E82",
+"x@	c #2C478F",
+"y@	c #304B90",
+"z@	c #334D92",
+"A@	c #344D92",
+"B@	c #335C3A",
+"C@	c #3B7800",
+"D@	c #315660",
+"E@	c #233D6F",
+"F@	c #264A37",
+"G@	c #316902",
+"H@	c #294489",
+"I@	c #A8A7A8",
+"J@	c #636264",
+"K@	c #D9D8D7",
+"L@	c #FAFAF8",
+"M@	c #8D8D8D",
+"N@	c #18171B",
+"O@	c #514D66",
+"P@	c #434058",
+"Q@	c #403E53",
+"R@	c #3D3C4F",
+"S@	c #3A3B4A",
+"T@	c #CACBC8",
+"U@	c #8A8D78",
+"V@	c #64665B",
+"W@	c #58576C",
+"X@	c #5C5874",
+"Y@	c #5E5576",
+"Z@	c #5C597A",
+"`@	c #5E5778",
+" #	c #5C5570",
+".#	c #646464",
+"+#	c #B7BAC1",
+"@#	c #325B60",
+"##	c #34623B",
+"$#	c #324B91",
+"%#	c #385194",
+"&#	c #3C5497",
+"*#	c #3F5698",
+"=#	c #405799",
+"-#	c #3F5699",
+";#	c #3B5496",
+">#	c #375095",
+",#	c #2D486C",
+"'#	c #2A4877",
+")#	c #224372",
+"!#	c #9F9EA1",
+"~#	c #7F7E7E",
+"{#	c #F9FAF8",
+"]#	c #FBFBF9",
+"^#	c #DEDFDD",
+"/#	c #131313",
+"(#	c #959695",
+"_#	c #F0EFEA",
+":#	c #ECECE7",
+"<#	c #E9E9E4",
+"[#	c #E7E7DE",
+"}#	c #DEDED3",
+"|#	c #858773",
+"1#	c #555551",
+"2#	c #6B6C6D",
+"3#	c #828282",
+"4#	c #C1C2C7",
+"5#	c #7789A4",
+"6#	c #375966",
+"7#	c #435A9A",
+"8#	c #485E9D",
+"9#	c #4B609F",
+"0#	c #4B619F",
+"a#	c #475E9C",
+"b#	c #42599A",
+"c#	c #3B5396",
+"d#	c #354E90",
+"e#	c #364F91",
+"f#	c #7A7A82",
+"g#	c #A7A293",
+"h#	c #F9F9F8",
+"i#	c #F8F8F6",
+"j#	c #F0EEDF",
+"k#	c #1D1D19",
+"l#	c #5D5C58",
+"m#	c #C9C9BE",
+"n#	c #C7C7BD",
+"o#	c #939388",
+"p#	c #929484",
+"q#	c #9A9A8B",
+"r#	c #595953",
+"s#	c #515161",
+"t#	c #B1B0B4",
+"u#	c #B1AFB4",
+"v#	c #858587",
+"w#	c #6B6A6B",
+"x#	c #757475",
+"y#	c #787678",
+"z#	c #7C7A7C",
+"A#	c #C0C0C4",
+"B#	c #8694BA",
+"C#	c #0D2A87",
+"D#	c #4F6795",
+"E#	c #456952",
+"F#	c #586BA6",
+"G#	c #5E6DBC",
+"H#	c #5F6DC0",
+"I#	c #5966CC",
+"J#	c #5B6EA8",
+"K#	c #3A5195",
+"L#	c #3A5293",
+"M#	c #C7C1B4",
+"N#	c #ECC635",
+"O#	c #C4A420",
+"P#	c #AFADA8",
+"Q#	c #F9F9F6",
+"R#	c #F9F9F7",
+"S#	c #E6CD79",
+"T#	c #7C5B09",
+"U#	c #AB922F",
+"V#	c #343326",
+"W#	c #1E1E14",
+"X#	c #313125",
+"Y#	c #504F4F",
+"Z#	c #CDBC6E",
+"`#	c #AE6E22",
+" $	c #6B6A6C",
+".$	c #595959",
+"+$	c #BFC7E0",
+"@$	c #5369A2",
+"#$	c #234C37",
+"$$	c #30600E",
+"%$	c #336407",
+"&$	c #235A00",
+"*$	c #406736",
+"=$	c #1F397E",
+"-$	c #6C7EAF",
+";$	c #6D6D76",
+">$	c #DBC475",
+",$	c #F5CC10",
+"'$	c #F4CA10",
+")$	c #C1AC62",
+"!$	c #EEEEEC",
+"~$	c #C2C2C0",
+"{$	c #A07F2F",
+"]$	c #F5C80E",
+"^$	c #F3CB17",
+"/$	c #B0A263",
+"($	c #626254",
+"_$	c #595949",
+":$	c #747474",
+"<$	c #9B9B9D",
+"[$	c #6E6C6F",
+"}$	c #B7BFD7",
+"|$	c #8695BE",
+"1$	c #7484B4",
+"2$	c #929EC4",
+"3$	c #8997BF",
+"4$	c #A4A5AF",
+"5$	c #9A9693",
+"6$	c #B9A478",
+"7$	c #CBA133",
+"8$	c #967432",
+"9$	c #6F6D6D",
+"0$	c #6F6B6D",
+"a$	c #957642",
+"b$	c #C59D35",
+"c$	c #8D8D86",
+"d$	c #8C8C8C",
+"e$	c #7D7D7D",
+"f$	c #797979",
+"g$	c #6F6F6F",
+"h$	c #9F9F9F",
+"i$	c #696869",
+"j$	c #F8F8F8",
+"k$	c #F3F3F3",
+"l$	c #EEEEEE",
+"m$	c #E9E9E9",
+"n$	c #090909",
+"o$	c #D5D6D5",
+"p$	c #CCCCCC",
+"q$	c #C6C6C6",
+"r$	c #C1C1C1",
+"s$	c #DD0D8A",
+"t$	c #0909EF",
+"u$	c #E4E4E4",
+"v$	c #DFDFDF",
+"w$	c #DADADA",
+"x$	c #D1D1D1",
+"y$	c #A56721",
+"z$	c #A3A3A3",
+"A$	c #AFB505",
+"B$	c #F79B31",
+"C$	c #9E9E9E",
+"D$	c #EFF707",
+"E$	c #0D8214",
+"F$	c #989898",
+"G$	c #9A9A9A",
+"H$	c #939393",
+"I$	c #959595",
+"J$	c #8E8E8E",
+"K$	c #919191",
+"L$	c #050591",
+"M$	c #898989",
+"N$	c #848484",
+"O$	c #7F7F7F",
+"P$	c #7A7A7A",
+"Q$	c #757575",
+"R$	c #F4C844",
+"S$	c #707070",
+"T$	c #6B6B6B",
+"U$	c #676767",
+"V$	c #E8E5E0",
+"W$	c #E7E2C7",
+"X$	c #D9D499",
+"Y$	c #E4D08D",
+"Z$	c #EABE8D",
+"`$	c #E3B26B",
+" %	c #E3B982",
+".%	c #BDA385",
+"+%	c #EDE1C3",
+"@%	c #ECC48A",
+"#%	c #F69854",
+"$%	c #F78E42",
+"%%	c #EB9D54",
+"&%	c #FFC280",
+"*%	c #DA776F",
+"=%	c #EA3166",
+"-%	c #DE2F66",
+";%	c #D57F6A",
+">%	c #BBA97D",
+",%	c #95939B",
+"'%	c #E609EA",
+")%	c #850589",
+"!%	c #EED392",
+"~%	c #FFCF86",
+"{%	c #FBBB57",
+"]%	c #E92F00",
+"^%	c #EB2F00",
+"/%	c #D85025",
+"(%	c #F3B366",
+"_%	c #E6466F",
+":%	c #FF0061",
+"<%	c #DD7075",
+"[%	c #D6B275",
+"}%	c #B89A77",
+"|%	c #88888E",
+"1%	c #ECECEC",
+"2%	c #FEFEFE",
+"3%	c #F1DCB7",
+"4%	c #FDCF86",
+"5%	c #FFCF72",
+"6%	c #F8BB57",
+"7%	c #D02F00",
+"8%	c #DF2F00",
+"9%	c #EF4310",
+"0%	c #F6B661",
+"a%	c #E44D6C",
+"b%	c #F00877",
+"c%	c #F80677",
+"d%	c #DD7179",
+"e%	c #CEA764",
+"f%	c #CE9B60",
+"g%	c #FDFDFD",
+"h%	c #9B9B9B",
+"i%	c #F3D269",
+"j%	c #F8D334",
+"k%	c #FFDC45",
+"l%	c #FAC75D",
+"m%	c #DF7D3B",
+"n%	c #E97A2A",
+"o%	c #E7843C",
+"p%	c #EDBD61",
+"q%	c #E3947A",
+"r%	c #DE6C79",
+"s%	c #DB3686",
+"t%	c #CE7E9D",
+"u%	c #CE8BA6",
+"v%	c #CE8188",
+"w%	c #996D74",
+"x%	c #7F7D85",
+"y%	c #4F4F4F",
+"z%	c #C4C4C4",
+"A%	c #727272",
+"B%	c #F6F6F6",
+"C%	c #FFEB19",
+"D%	c #FFFF00",
+"E%	c #FFF709",
+"F%	c #F2D135",
+"G%	c #E5C26F",
+"H%	c #D3CE77",
+"I%	c #D1B165",
+"J%	c #CFB875",
+"K%	c #AF7C77",
+"L%	c #B1306F",
+"M%	c #961766",
+"N%	c #9D36B5",
+"O%	c #9F09D6",
+"P%	c #A406CC",
+"Q%	c #A55DB4",
+"R%	c #898A8F",
+"S%	c #ACACAC",
+"T%	c #B0B0B1",
+"U%	c #434343",
+"V%	c #2F2F2F",
+"W%	c #BDBEBD",
+"X%	c #FBEF0C",
+"Y%	c #FFF70C",
+"Z%	c #DFD148",
+"`%	c #DDC063",
+" &	c #D0C261",
+".&	c #D5B46A",
+"+&	c #907059",
+"@&	c #421B10",
+"#&	c #7B0947",
+"$&	c #7C0642",
+"%&	c #B43ED9",
+"&&	c #A90BFD",
+"*&	c #B853C8",
+"=&	c #9F7258",
+"-&	c #999999",
+";&	c #F0F0F0",
+">&	c #6C6C6D",
+",&	c #FAD739",
+"'&	c #F3ED24",
+")&	c #F8E533",
+"!&	c #D8C763",
+"~&	c #EBA76F",
+"{&	c #D1C260",
+"]&	c #C7A65C",
+"^&	c #311F0F",
+"/&	c #0C0000",
+"(&	c #390012",
+"_&	c #5F1B24",
+":&	c #AA36BA",
+"<&	c #9B0BD5",
+"[&	c #9D0BD9",
+"}&	c #A4569D",
+"|&	c #7E7E7E",
+"1&	c #D9D9D9",
+"2&	c #EAC46F",
+"3&	c #F0CB6C",
+"4&	c #D8B36A",
+"5&	c #D1BD6E",
+"6&	c #D3B375",
+"7&	c #CBB260",
+"8&	c #B28866",
+"9&	c #0C0706",
+"0&	c #020206",
+"a&	c #2B1010",
+"b&	c #5E3D1F",
+"c&	c #CB8B8D",
+"d&	c #B78394",
+"e&	c #C27794",
+"f&	c #B0747D",
+"g&	c #A8A9AF",
+"h&	c #A6A7A6",
+"i&	c #E5C895",
+"j&	c #DCAF6C",
+"k&	c #D8C065",
+"l&	c #CEBF61",
+"m&	c #C5B677",
+"n&	c #ACA385",
+"o&	c #9E9899",
+"p&	c #434340",
+"q&	c #3F3D1C",
+"r&	c #744232",
+"s&	c #BA7D50",
+"t&	c #9B7687",
+"u&	c #313FDB",
+"v&	c #1E3DF1",
+"w&	c #494FBA",
+"x&	c #9E9BA5",
+"y&	c #D4D4D4",
+"z&	c #D3BB6C",
+"A&	c #CFB869",
+"B&	c #D0BB6C",
+"C&	c #B1A5A1",
+"D&	c #8A94A5",
+"E&	c #2D3945",
+"F&	c #444823",
+"G&	c #A17741",
+"H&	c #CF9A61",
+"I&	c #887F9F",
+"J&	c #0B2FFD",
+"K&	c #002FFD",
+"L&	c #324AD8",
+"M&	c #9C725C",
+"N&	c #3F4046",
+"O&	c #C6A47F",
+"P&	c #A69F87",
+"Q&	c #3A364D",
+"R&	c #525141",
+"S&	c #A67E41",
+"T&	c #C88B53",
+"U&	c #CF9061",
+"V&	c #C88761",
+"W&	c #897F90",
+"X&	c #0F2FF3",
+"Y&	c #082FF7",
+"Z&	c #4047D8",
+"`&	c #81645A",
+" *	c #CECECE",
+".*	c #B27F5B",
+"+*	c #D4A77A",
+"@*	c #8C6636",
+"#*	c #72491F",
+"$*	c #9D7A45",
+"%*	c #CC9A61",
+"&*	c #CF9361",
+"**	c #C99061",
+"=*	c #A97E5C",
+"-*	c #906D5F",
+";*	c #808185",
+">*	c #8F7885",
+",*	c #A16773",
+"'*	c #6D4C42",
+")*	c #DDDDDD",
+"!*	c #F2F2F2",
+"~*	c #99714C",
+"{*	c #DBA97B",
+"]*	c #7B5029",
+"^*	c #767361",
+"/*	c #BBA07C",
+"(*	c #CA9E68",
+"_*	c #CA9561",
+":*	c #CF8761",
+"<*	c #B3805C",
+"[*	c #322841",
+"}*	c #413759",
+"|*	c #8D7963",
+"1*	c #A7735A",
+"2*	c #A26453",
+"3*	c #E0E0E0",
+"4*	c #D2D2D2",
+"5*	c #937257",
+"6*	c #DBAA7B",
+"7*	c #714D25",
+"8*	c #C69D70",
+"9*	c #BE8D61",
+"0*	c #A77F54",
+"a*	c #443251",
+"b*	c #606492",
+"c*	c #A39EA3",
+"d*	c #A46959",
+"e*	c #96734D",
+"f*	c #636364",
+"g*	c #737373",
+"h*	c #BEBEBE",
+"i*	c #979797",
+"j*	c #AFAFAF",
+"k*	c #D5A96D",
+"l*	c #775529",
+"m*	c #A17E63",
+"n*	c #AC825F",
+"o*	c #936958",
+"p*	c #AC97A9",
+"q*	c #C9B4B3",
+"r*	c #737375",
+"s*	c #B5B5B7",
+"t*	c #B7B7B9",
+"u*	c #616163",
+"v*	c #0B0B0B",
+". . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . @ ",
+"# $ $ % & % * = - ; > , ' ' ) ) ) @ . ! ~ { ] ^ / ( _ : < [ } | 1 2 3 @ . 4 4 4 4 4 4 4 4 5 < [ } | 1 2 3 @ ",
+"# $ % 6 7 8 9 0 a b c d e f g g g @ . ~ { h i j k l : m n o p q r 3 s @ . 4 t u v w x y 4 z A } | 1 2 3 s @ ",
+"# % B C D E F G H I J K L M N N N @ . { O P Q R S T U V W X Y Z `  ...@ . 4 +. at .#.$.%.&.4 z A | 1 2 3 s ..@ ",
+"# % *.=.-.;.>.,.'.).!.~.{.].^./.(.@ . ] _.:.<.[.}.|.1.2.3.4.Y Z 5.6.7.@ . 4 8.9.0.a.0.b.4 z A 1 2 3 s ..7.@ ",
+"# c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.(.@ . ^ r.s.<.[.}.|.1.2.t.4.Y Z u.v.w.@ . 4 x.y.z.A.B.a.4 C.D.2 3 s ..7.E.@ ",
+"# F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.@ . / V.W.X.Y.Z.`. +.+t.4.Y Z ++ at +#+@ . 4 $+%+&+*+=+-+-+-+-+-+-+-+-+;+>+@ ",
+"# ,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+@ . ( 1+2+3+4+5+6+7+.+t.4.Y 8+9+0+a+@ . 4 4 4 4 4 4 -+b+c+d+e+f+g+-+z A @ ",
+"# h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+@ . _ 1+x+y+z+A+B+C+.+t.D+E+8+F+G+H+@ . _ : I+J+4 K+-+L+M+N+O+z.P+-+z A @ ",
+"# Q+R+S+T+U+V+W+X+Y+Z+`+ @. at +@@@#@@ . : $@%@&@*@=@-@;@.+>@D+E+,@'@)@!@@ . -+-+-+-+-+-+-+~@{@]@^@/@(@-+z A @ ",
+"# _@:@:@<@[@}@|@1 at 2@3 at 4@5 at 6@7 at 8@9@@ . < 0 at a@b at c@d at e@f at g@h at D+E+, at i@j at k@@ . -+l at -+-+-+-+-+m@n at o@p at q@r at -+z s@@ ",
+"# t at u@v at w@x at y@z at A@B at C@D at E@F at G@H at 9@@ . [ I at J@K at L@i M at N@O at P@Q at R@S at T@U at V@@ . -+-+-+-+-+-+-+W at X@Y at Z@`@ #-+.#D.@ ",
+"# +#@###$#%#&#*#=#-#;#>#,#'#)#9 at 9@@ . } !#~#{#]#]#^#/#(#_#:#<#[#}#|#1#@ . } | 1 2#3 s -+-+-+-+-+-+-+-+-+3#@ ",
+"# 4#5#6#&#7#8#9#0#9#a#b#c#d#e#f#f#@ . | 1 g#h#i#L at j#k#l#m#n#o#p#q#r#s#@ . | 1 2 2#s ..7.E.t#u#v#w#x#y#z#5 @ ",
+"# ) A#B#C#D#E#F#G#H#I#J#K#L#f#f#f#@ . M#N#O#P#Q#R#S#T#U#V#W#X#Y#s#s#s#@ . 1 2 Z#`#Z#7.-+-+-+-+-+-+-+-+ $.$@ ",
+"# ) g N +$@$#$$$%$&$*$=$-$f#f#f#;$@ . >$,$'$)$!$~${$]$^$/$($_$s#s#s#:$@ . 2#2#`#`#`#2#-+l at -+-+-+-+-+<$[$.$@ ",
+"# ) g N (.(.}$|$1$2$3$4$9 at f#f#;$;$@ . 5$6$7$8$9$0$a$b$c$d$D.3#e$f$:$g$@ . 3 s Z#`#Z#h$-+-+-+-+-+-+-+-+i$g$@ ",
+"@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ",
+". . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . @ . . . . . . . . . . . . . . . . . @ ",
+". ! ~ { ] ^ / ( _ : < [ } | 1 2 3 @ . ! j$k$l$m$n$o$o$o$n$p$q$r$2 3 s @ . ! ~ { ] ^ / ( _ : < [ } | s$s$3 @ ",
+". t$t$t$^ t$t$t$t$< t$t$t$1 2 3 s @ . j$k$l$m$u$n$n$n$n$n$n$r$2 3 s ..@ . ~ { ] ^ / ( _ : < [ } | s$s$s$s$@ ",
+". { t$t$/ ( t$t$< [ t$t$1 2 3 s ..@ . k$n$m$u$v$w$o$x$p$q$r$2 3 s ..7.@ . { ] ^ / ( _ : < [ } | @ @ s$s$s$@ ",
+". ] t$t$( _ t$t$[ } t$1 2 3 s ..7.@ . l$n$u$v$w$o$x$p$q$r$2 3 y$y$7.z$@ . ] ^ / ( _ : < [ } | @ @ A$@ s$7.@ ",
+". ^ t$t$_ t$t$t$} t$t$2 3 s ..7.E.@ . m$n$v$w$o$x$p$q$r$2 3 B$B$y$z$C$@ . ^ / ( _ : < [ } | A$D$@ @ @ 7.E.@ ",
+". / t$t$: t$[ t$| t$2 3 s ..7.E.h$@ . n$n$w$o$E$E$q$r$2 3 s B$B$y$C$F$@ . / ( _ : < [ } | A$D$D$D$@ 7.E.h$@ ",
+". ( _ t$t$t$} t$1 t$t$t$t$t$t$h$G$@ . n$n$o$l at l@E$r$2 3 s ..B$B$y$F$H$@ . ( _ : < [ } | A$D$D$D$A$7.E.h$G$@ ",
+". _ : t$t$} | t$t$3 s t$t$E.t$t$I$@ . n$n$x$l at l@E$2 3 s ..7.B$B$y$H$J$@ . _ : < [ } | A$D$D$D$A$7.E.h$G$I$@ ",
+". : < t$t$| 1 t$t$s ..t$t$h$t$t$K$@ . n$n$p$l at l@E$3 s L$L$z$B$B$y$J$M$@ . : < [ } | A$D$D$D$A$7.E.h$G$I$K$@ ",
+". < [ t$| 1 2 t$s ..t$t$h$G$t$t$d$@ . n$n$q$l at l@E$s t$t$L$C$B$B$y$M$N$@ . < [ } | A$D$D$D$A$7.E.h$G$I$K$d$@ ",
+". [ } | 1 2 3 s ..7.t$t$G$t$t$d$D.@ . p$n$r$l at l@E$..t$t$L$F$B$B$y$N$O$@ . [ } | A$D$D$D$A$7.E.h$G$I$K$d$D.@ ",
+". } | 1 2 3 s ..7.E.t$t$t$t$d$D.3#@ . q$n$2 l at l@E$7.t$t$L$H$B$B$y$O$P$@ . } | A$D$D$D$A$7.E.h$G$I$K$d$D.3#@ ",
+". | 1 2 3 s ..7.E.t$t$I$K$d$D.3#e$@ . r$n$3 l at l@E$z$t$t$L$J$B$B$y$P$Q$@ . | 1 R$D$D$A$7.E.h$G$I$K$d$D.3#e$@ ",
+". 1 2 3 s ..7.E.h$t$t$K$d$D.3#e$f$@ . 2 n$n$n$n$n$n$n$n$n$n$n$n$n$n$S$@ . 1 R$R$R$A$7.E.h$G$I$K$d$D.3#e$f$@ ",
+". 2 3 s ..7.E.h$t$t$t$t$D.3#e$f$:$@ . 3 s ..7.z$n$n$n$n$n$N$O$P$Q$S$T$@ . 2 R$R$..7.E.h$G$I$K$d$D.3#e$f$:$@ ",
+". 3 s ..7.E.h$G$I$K$d$D.3#e$f$:$g$@ . s ..7.z$C$F$H$J$M$N$O$P$Q$S$T$U$@ . @ s ..7.E.h$G$I$K$d$D.3#e$f$:$g$@ ",
+"@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ",
+". . . . . . . . . . . . . . . . . @ . . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . @ ",
+". ! ~ { ] V$W$X$Y$Z$`$ %.%| 1 2 3 @ . ! ~ { ] ^ / ( _ : < [ } | 1 2 3 @ . ! ~ { ] ^ / ( _ n$< [ } | 1 2 3 @ ",
+". ~ { +%@%#%$%%%&%*%=%-%;%>%2 3 s @ . ~ { ] ^ / ,%n$n$n$n$n$| 1 2 3 s @ . '%'%'%'%'%'%'%n$)%n$'%'%'%'%'%'%@ ",
+". { !%~%{%]%^%/%(%_%:%:%<%[%}%s ..@ . { ] ^ / |%n$1%2%. j$x$n$2 3 s ..@ . { ] ^ / ( _ : n$[ n$| 1 2 3 s ..@ ",
+". 3%4%5%6%7%8%9%0%a%b%c%d%e%f%}%7.@ . ] ^ / ( n$j$g%. . . . h%n$s ..7.@ . ] ^ / ( _ : < n$} n$1 2 3 s ..7.@ ",
+". i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%E.@ . ^ / ( x%n$: y%z%] A%M$B%n$..7.E.@ . '%'%'%'%'%'%'%n$)%n$'%'%'%'%'%'%@ ",
+". C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%}%@ . / R%n$n$S%T%n$I$v$n$U%. n$n$n$h$@ . / ( _ : < [ } n$V%W%3 s ..7.E.h$@ ",
+". X%D%Y%Z%`% &.&+&@&#&$&%&&&&&*&=&@ . ( n$] B%{ g%g%. . . . . -&;&>&n$@ . ( _ : < [ } J$n$W%3 s ..7.E.h$G$@ ",
+". ,&'&)&!&~&{&]&^&/&(&_&:&<&[&}&=&@ . _ n$|&k$. g%g%. . . . . ! 1&d$n$@ . '%'%'%'%'%)%n$n$)%'%'%'%'%'%'%'%@ ",
+". 2&3&4&5&6&7&8&9&0&a&b&c&d&e&f&=&@ . : g&n$M$k$g%g%. . . . . 2 n$n$K$@ . : < [ } | n$h&n$n$n$J$E.h$G$I$K$@ ",
+". i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&=&@ . < [ x&n$y&g%g%. . . . . n$I$K$d$@ . < [ } | 1 n$3 n$..7.n$h$G$I$K$d$@ ",
+". [ z&A&B&C&D&E&F&G&H&H&I&J&K&L&M&@ . [ } | n$y&g%g%. . . . . n$N&d$D.@ . '%'%'%'%'%n$)%n$)%'%n$'%'%'%'%'%@ ",
+". } | 1 O&P&Q&R&S&T&U&V&W&X&Y&Z&`&@ . } | 1 n$y&g%g%. . . . .  *n$D.3#@ . } | 1 2 3 n$J$n$J$J$n$I$K$d$D.3#@ ",
+". | 1 .*+*@*#*$*%*&***=*-*;*>*,*'*@ . | 1 2 n$)*g%!*# . . . } j$x$n$e$@ . | 1 2 3 s ..n$n$n$n$I$K$d$D.3#e$@ ",
+". 1 ~*{*]*^*/*(*_*:*<*[*}*|*1*2*}%@ . 1 2 n$K$! g%3 -&!*. 3*n$4*g%z%n$@ . '%'%'%'%'%'%'%)%n$)%'%'%'%'%'%'%@ ",
+". 5*6*7*..7.E.h$8*9*0*a*b*c*d*e*:$@ . 2 n$f*w$g%;&n$g*h*r$i*n$j*r$j*n$@ . 2 3 s ..7.E.n$n$n$K$d$D.3#e$f$:$@ ",
+". k*l*..7.E.h$G$I$m*n*o*p*q*}%:$g$@ . 3 n$r*s*t*n$n$n$n$n$n$3#n$n$u*g$@ . 3 s ..7.E.h$n$n$J$d$D.3#e$f$:$g$@ ",
+"@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ v*n$n$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ "};
diff --git a/readln.c b/readln.c
deleted file mode 100644
index 2ae4577..0000000
--- a/readln.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* readln.c - Edward H. Flora - ehflora at ksu.edu */
-/* Last Modified: 2/24/98 */
-/* 
- *	This function reads a string from a file pointed to by fp until a
- *   new line (EOLN) or an end of file is encountered.  It returns a pointer
- *   to the string.  The new line character is included in the string returned
- *   by the function.
- */
-
-/* EXTERNALS:
- ****************** 
- * Functions Called:
- *      Standard Libraries.
- * 
- * Header Files Included:
- *      Standard Includes only.
- */
-
-/* PORTABILITY:
- ******************
- * Coded in ANSI C, using ANSI prototypes.
- */
-
-/******  Include Files  *************************************************/
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define EOLN '\n'		/* Defines the new line character */
-#define SIZE1 10		/* Defines the increment to increase the */
-				/*  string by until a newline of EOF is found */
-
-/******  Function to Read a Line from fp  *******************************/
-char *readln(FILE *fp){
-  char *tmp, *t1, *t2;
-  int count = 0, s1 = SIZE1;
-  
-  if((tmp = malloc(SIZE1*sizeof(char))) == NULL)return NULL;
-  				/* If cannot allocate memory */
-  if((t1 = fgets(tmp, SIZE1, fp)) == NULL){
-    free(tmp);
-    return NULL;
-  }				/* If there is no string to be read */
-  while(strchr(t1,EOLN) == NULL){ /* Loop while EOLN is not in the string */
-    count += strlen(t1);
-    if((s1 - count) > 1)break;
-    s1 +=SIZE1;
-    if((t2 = realloc(tmp, s1*sizeof(char))) == NULL){
-      free(tmp);
-      return NULL;
-    }				/* If cannot allocate more memory */
-    else tmp = t2;
-    if((t1 = fgets((tmp+count),((s1 - count)),fp)) == NULL)break;
-  }				/* End of While Loop */
-  if((t2 = realloc(tmp,strlen(tmp)+1)) == NULL)free(tmp);
-  return (t2);
-}
-/******  End of Function readln  ****************************************/
-
diff --git a/wmb_libs.c b/wmb_libs.c
new file mode 100644
index 0000000..c9ea4c8
--- /dev/null
+++ b/wmb_libs.c
@@ -0,0 +1,692 @@
+/* wmb_libs.c - Edward H. Flora - ehf_dockapps at cox.net */
+/* Last Modified: 4/3/04 */
+/* 
+ * These functions are designed to work with wmbutton.
+ */
+
+/* PORTABILITY:
+******************
+* Coded in ANSI C, using ANSI prototypes.
+*/
+
+/******  Include Files  *************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "wmbutton.h"
+
+
+/******  ToolTip Globals  ***********************************************/
+
+static struct timeval _tStart;
+
+extern struct Config_t Config;
+int _bTooltip = 0;
+XFontStruct* _fTooltip;
+int _nFontHeight, _nFontY;
+int _nScreenWidth, _nScreenHeight;
+GC _gcMono= 0;
+Window _wTooltip;
+
+/******  Parse Command Line  ********************************************/
+void parseargs(int argc, char **argv) {
+  int current;
+  char *Home = getenv("HOME");
+
+  while (-1 != (current = getopt(argc, argv, "vhnmsF:b:g:d:f:"))) {
+    switch (current) {
+    case 'v': 
+      Config.Verbose = 1;
+      break;
+    case '?':
+    case 'h':
+      show_usage();
+      break;
+    case 'm':
+      Config.mmouse = 1;
+      break;
+    case 'n':
+      Config.bTooltipDisable = 1;
+      break;
+    case 's':
+      Config.bTooltipSwapColors = 1;
+      break;
+    case 'g':
+      Config.Geometry_str = strdup(optarg);
+      break;
+    case 'd':
+      Config.Display_str = strdup(optarg);
+      break;
+    case 'f':
+      Config.configfile = strdup(optarg);
+      break;
+    case 'F':
+      Config.szTooltipFont = strdup(optarg);
+      break;
+    case 'b':
+      Config.buttonfile = strdup(optarg);
+      break;
+    }
+  }
+
+  if (!Config.configfile) {
+    if (Home != NULL) {
+      Config.configfile = malloc(
+          strlen(Home) + strlen(CONFFILENAME) + 1);
+      sprintf(Config.configfile, "%s%s", Home, CONFFILENAME);
+    }
+  }
+
+  if (!Config.buttonfile) {
+    if (Home != NULL) {
+      Config.buttonfile = malloc(
+          strlen(Home) + strlen(BUTTONFILENAME) + 1);
+      sprintf(Config.buttonfile, "%s%s", Home, BUTTONFILENAME);
+    }
+  }
+
+  if (!Config.Geometry_str)
+    Config.Geometry_str = "64x64+0+0";
+
+  if (!Config.Display_str)
+    Config.Display_str = "";
+
+  if (!Config.szTooltipFont)
+    Config.szTooltipFont = TOOLTIP_FONT;
+
+  if (!Config.bTooltipDisable)
+    Config.bTooltipDisable = !TOOLTIP_SUPPORT;
+
+}
+
+/******  Show Usage Information  ****************************************/
+void show_usage() {
+  extern char *app_name;
+
+  fprintf(stderr,"\n");
+  fprintf(stderr,"usage: %s [-g geom] [-d dpy] [-f cfgfile] [-b btnfile] "\
+	  "[-F <font>] [-v] [-s] [-n]\n",app_name);
+  fprintf(stderr,"\n");
+  fprintf(stderr," wmbutton Ver %d Rel %d\n",VER,REL);
+  fprintf(stderr,"\n");
+  fprintf(stderr,"-g <geometry>  Window Geometry - ie: 64x64+10+10\n");
+  fprintf(stderr,"-d <display>   Display -  ie: 127.0.0.1:0.0\n"); 
+  fprintf(stderr,"-f <filename>  Full path to configuration file.\n");
+  fprintf(stderr,"-b <filename>  Full path to button xpm.\n");
+  fprintf(stderr,"-F <font>      Custom tooltip font (e.g. -b\\&h-lucidatypewriter-medium-*-*-*-12-*)\n");
+  fprintf(stderr,"-v             Verbose Mode.\n");
+  fprintf(stderr,"-h             Help. This message.\n");
+#if MIDMOUSE
+  fprintf(stderr,"-m             Disable Middle Mouse functionality.\n");
+#else
+  fprintf(stderr,"-m             Enable Middle Mouse functionality.\n");
+#endif
+  fprintf(stderr,"-s             Swap tooltip colors.\n");
+  fprintf(stderr,"-n             Turn off tooltips.\n");
+  fprintf(stderr,"\n");
+  exit(0);
+}/***********************************************************************/
+
+
+/******  Error Handler Routine  *****************************************/
+void err_mess(int err, char *str) {
+
+  switch (err) {
+  case FAILDISP:
+    fprintf(stderr,"Fail: XOpenDisplay for %s\n", str);	
+    exit(err);
+  case FAILSWIN:
+    fprintf(stderr,"Fail: XCreateSimpleWindow\n");	
+    exit(err);
+  case FAILICON: 
+    fprintf(stderr,"Fail: XCreateSimpleWindow\n");	
+    exit(err);
+  case FAILXPM:
+    fprintf(stderr,"Fail: XCreateBitmapFromData\n");
+    break;
+  case FAILWNAM:
+    fprintf(stderr,"%s: Can't set up window name\n", str);
+    exit(err);
+  case FAILGC:
+    fprintf(stderr,"Fail: XCreateGC\n");	
+    exit(err);
+  case FAILCONF:
+    fprintf(stderr, "Fail: Can't Find configuration file %s\n",str);
+    exit(err);
+  case FAILTMPL:
+    fprintf(stderr, "Fail: Can't Create 'template' Pixmap\n");
+    exit(err);
+  case FAILVIS:
+    fprintf(stderr, "Fail: Can't Create 'visible' Pixmap\n");
+    exit(err);
+  case FAILBUT:
+    fprintf(stderr, "Fail: Can't Create 'buttons' Pixmap\n");
+    exit(err);
+  default:
+    fprintf(stderr, "Fail:  UnSpecified Error: %d\n",err);
+    fprintf(stderr, "Fail:  %s\n",str);
+    exit(err);
+  }
+
+}/***********************************************************************/
+
+/***********************************************************************
+ * RunAppN(int app)
+ *
+ * Run the command given in the configuration file 'configfile'
+ ***********************************************************************/
+void RunAppN( int app ) {
+  char *cmndstr;
+  extern struct Config_t Config;
+
+  cmndstr = Parse(app);                  // Get command to pass to system
+
+  if (Config.Verbose) fprintf(stderr, "Command String: %s", cmndstr);
+
+  if (cmndstr != NULL) {
+    system(cmndstr);  // if there's a command, run it
+    free(cmndstr);
+  }
+}/***********************************************************************/
+
+/***********************************************************************
+ * Parse(int app)
+ *
+ * Parses the file 'configfile' for command to execute.
+ ***********************************************************************/
+char *Parse(int app) {
+  FILE *fp;
+  char Buf[BUFFER_SIZE];
+  char *Ptr;
+
+  if ((fp = fopen(Config.configfile, "r")) == NULL)
+    err_mess(FAILCONF,Config.configfile);
+
+  while ((Ptr = fgets(Buf, BUFFER_SIZE, fp))) {
+    if (atoi(Buf) == app)
+    break;
+  }
+
+  fclose(fp);
+  
+  if (!Ptr)
+    return Ptr;
+
+  Ptr = strchr(Buf, '\t');                      // find first tab
+  if (Ptr == NULL) Ptr = strchr(Buf, ' ');      // or space charater
+  if (Ptr == NULL) return(NULL);
+  Ptr++;
+
+  Ptr = strdup(Ptr);
+
+  return(Ptr);
+}/**********************************************************************/
+
+/***********************************************************************
+ *   initTime
+ *
+ *     Copyright (c) 2001 Bruno Essmann <essmann at users.sourceforge.net>
+ ***********************************************************************/
+
+void initTime () {
+  extern struct Config_t Config;
+
+  if (Config.Verbose) {
+    fprintf(stdout, "[        ] initializing time\n");
+  }
+
+  gettimeofday(&_tStart, NULL);
+}/**********************************************************************/
+
+long currentTimeMillis () {
+  struct timeval tNow;
+  struct timeval tElapsed;
+  
+  gettimeofday(&tNow, NULL);
+  
+  if (_tStart.tv_usec > tNow.tv_usec) {
+    tNow.tv_usec+= 1000000;
+    tNow.tv_sec--;
+  }
+  tElapsed.tv_sec= tNow.tv_sec - _tStart.tv_sec;
+  tElapsed.tv_usec= tNow.tv_usec - _tStart.tv_usec;
+  return (tElapsed.tv_sec * 1000) + (tElapsed.tv_usec / 1000);
+}/**********************************************************************/
+
+
+void getWindowOrigin (Window w, int* nX, int* nY) {
+  extern Display *display;
+  Window wWindow, wParent, wRoot;
+  Window* wChildren;
+  unsigned int nChildren;
+  unsigned int ww, wh, wb, wd;
+  int wx, wy;
+
+  wParent= w;
+  do {
+    wWindow= wParent;
+    if (!XQueryTree(display, wParent, &wRoot, &wParent, &wChildren, &nChildren))
+      return;
+
+    if (wChildren)
+      XFree(wChildren);
+
+  } while (wParent != wRoot);
+
+  if (XGetGeometry(display, wWindow, &wRoot, &wx, &wy, &ww, &wh, &wb, &wd)) {
+    if (nX) {
+      *nX= wx;
+    }
+    if (nY) {
+      *nY= wy;
+    }
+  }
+}/**********************************************************************/
+
+/***********************************************************************
+ *  getButtonLocation
+ *
+ *  compute location for each button's tooltip (not perfect)
+ ***********************************************************************/
+void getButtonLocation (int nButton, int* nLocationX, int* nLocationY) {
+  *nLocationX = 0;
+  *nLocationY = 8;
+  while (nButton > BUTTON_COLS) {
+    *nLocationY += BUTTON_SIZE;
+    nButton -= BUTTON_COLS;
+  }
+  while (nButton > 0) {
+    *nLocationX += BUTTON_SIZE - 1;
+    nButton--;
+  }
+}/**********************************************************************/
+
+/* SkipWord & SkipSpaces: utility functions for getNicenedString */
+char *SkipWord(char *Text) {
+  char *Result = Text;
+
+  while ((*Result != ' ')&&(*Result != '\t')&&
+         (*Result != '\n')&&(*Result != 0x00))
+    Result++;
+  return Result;
+}
+
+char *SkipSpaces(char *Text) {
+  char *Result = Text;
+
+  while ((*Result == ' ')||(*Result == '\t')||(*Result == '\n'))
+    Result++;
+  return Result;
+}
+
+/***********************************************************************
+ *  getNicenedString
+ *
+ *  nicen the parsed command from the .wmbutton config file
+ *    - cut if too long
+ *    - remove parameters, whitespace and the '&'...
+ ***********************************************************************/
+char* getNicenedString (char *old, int andAddSeparator) {
+  char *WorkStr;
+  char *WorkStrEnd;
+  char *StartPtr;
+  char *EndPtr;
+
+  char *RetStr;
+
+  if (!old) {
+    if (andAddSeparator)
+      return strdup("-- | ");
+    else
+      return strdup("--");
+  }
+
+  RetStr = malloc(strlen(old) + 3 + 1); // 3 for Seperator
+  *RetStr = 0x00;
+
+  WorkStr = strdup(old);
+  WorkStrEnd = strchr(WorkStr, 0x00);
+  StartPtr = WorkStr;
+
+  while(StartPtr < WorkStrEnd) {
+    StartPtr = SkipSpaces(StartPtr);
+    EndPtr = SkipWord(StartPtr);
+    *EndPtr = 0x00;
+
+    if ((*StartPtr == '&')||(*StartPtr == '-'))
+      break;
+
+    strcat(RetStr, StartPtr);
+    strcat(RetStr, " ");
+    StartPtr = EndPtr+1;
+  }
+
+  free(WorkStr);
+
+  if (andAddSeparator) {
+    strcat(RetStr, "| ");
+  }
+  
+  return RetStr;
+}
+
+/***********************************************************************
+ *  getButtonAppNames
+ *
+ *  returns the 1..3 application names / commands to be shown in tooltip
+ ***********************************************************************/
+char* getButtonAppNames (int nButton) {
+  char *str = NULL;
+  char *tmp1,*tmp2;
+    
+  if (!( nButton < 0 || nButton > 9 )) {
+
+    // FIXME: _Might_ overflow, but it's unlikely.
+    // Perhaps one should fix this sometime ;)
+    str = (char*) calloc (sizeof(char), BUFFER_SIZE);
+    
+    tmp1 = Parse(nButton + LMASK);
+    tmp2 = getNicenedString(tmp1, 1);
+    strcat(str, tmp2);
+    free(tmp1);
+    free(tmp2);
+    
+    tmp1 = Parse(nButton + MMASK);
+    tmp2 = getNicenedString(tmp1, 1);
+    strcat(str, tmp2);
+    free(tmp1);
+    free(tmp2);
+    
+    tmp1 = Parse(nButton + RMASK);
+    tmp2 = getNicenedString(tmp1, 0);
+    strcat(str, tmp2);
+    free(tmp1);
+    free(tmp2);
+  }
+
+  return(str);
+}/**********************************************************************/
+
+
+int hasTooltipSupport () {
+  return !Config.bTooltipDisable;
+}/**********************************************************************/
+
+void showTooltip (int nButton, int nMouseX, int nMouseY) {
+  Pixmap pixmap, mask;
+  int nMainWinX, nMainWinY;
+  int nButtonX = 0, nButtonY = 0, nButtonWidth = 0, nButtonHeight = 0;
+  int nTextY, nX, nY, nWidth, nHeight, nSide;
+  char* szText;
+  extern struct Config_t Config;
+  extern Window iconwin;
+  extern Pixel bg_pixel, fg_pixel;
+  extern Display *display;
+  extern GC gc;
+
+  if (Config.bTooltipDisable ||  nButton == -1) {
+    return;
+  }
+  if (_bTooltip) {
+    hideTooltip();
+  }
+
+
+  if (Config.Verbose) { 
+    fprintf(stdout, "[%8ld] showing tooltip for button %d at %d, %d\n", 
+	    currentTimeMillis(),
+	    nButton, nMouseX, nMouseY);
+  } 
+
+  szText = getButtonAppNames(nButton);
+  if(!szText)
+    return;
+
+  _bTooltip= 1;
+
+  nWidth= XTextWidth(_fTooltip, szText, strlen(szText)) + 16;
+  nHeight= _nFontHeight + 4;
+  if (nHeight < 16) {
+    nHeight= 16;
+  }
+  if (nWidth < nHeight) {
+    nWidth= nHeight;
+  }
+  if (Config.Verbose) { 
+    fprintf(stdout, "[%8ld] tooltip size: %d, %d\n", 
+	    currentTimeMillis(), nWidth, nHeight);
+  }
+	
+  getWindowOrigin(iconwin, &nMainWinX, &nMainWinY);
+  getButtonLocation(nButton, &nButtonX, &nButtonY);
+  nButtonX+= nMainWinX;
+  nButtonY+= nMainWinY;
+  nButtonWidth  = BUTTON_SIZE;
+  nButtonHeight = BUTTON_SIZE;
+	
+  if (nButtonX + nWidth > _nScreenWidth) {
+    nSide= TOOLTIP_RIGHT;
+    nX= nButtonX - nWidth + nButtonWidth / 2;
+    if (nX < 0) {
+      nX= 0;
+    }
+  } else {
+    nSide= TOOLTIP_LEFT;
+    nX= nButtonX + nButtonWidth / 2;
+  }
+  if (nX + nWidth > _nScreenWidth) {
+    nX= _nScreenWidth - nWidth;
+  }
+
+  if (nButtonY - (nHeight + TOOLTIP_SPACE) < 0) {
+    nSide|= TOOLTIP_TOP;
+    nY= nButtonY + nButtonHeight - 1;
+    nTextY= TOOLTIP_SPACE;
+  } else {
+    nSide|= TOOLTIP_BOTTOM;
+    nY= nButtonY - (nHeight + TOOLTIP_SPACE);
+    nTextY= 0;
+  }
+	
+  pixmap= createTooltipPixmap(nWidth, nHeight, nSide, &mask);
+
+  XSetForeground(display, gc, Config.bTooltipSwapColors ? fg_pixel : bg_pixel);
+  XSetFont(display, gc, _fTooltip->fid);
+  XDrawString(display, pixmap, gc, 
+	      8, nTextY + (nHeight - _nFontHeight) / 2 + _nFontY, 
+	      szText, strlen(szText));
+		
+  XSetWindowBackgroundPixmap(display, _wTooltip, pixmap);
+
+  XResizeWindow(display, _wTooltip, nWidth, nHeight + TOOLTIP_SPACE);
+  XShapeCombineMask(display, _wTooltip, ShapeBounding, 0, 0, mask, ShapeSet);
+  XFreePixmap(display, mask);
+  XMoveWindow(display, _wTooltip, nX, nY);
+  XMapRaised(display, _wTooltip);
+  XFreePixmap(display, pixmap);
+
+  free(szText);
+}/**********************************************************************/
+
+void hideTooltip () {
+  extern struct Config_t Config;
+  extern Display *display;
+
+  if (Config.bTooltipDisable) {
+    return;
+  }
+  if (_bTooltip) {
+    if (Config.Verbose) {
+      fprintf(stdout, "[%8ld] hiding tooltip\n", currentTimeMillis());
+    }
+    XUnmapWindow(display, _wTooltip);
+    _bTooltip= 0;
+  }
+}/**********************************************************************/
+
+int hasTooltip () {
+  if (Config.bTooltipDisable) {
+    return 0;
+  }
+  return _bTooltip;
+}/**********************************************************************/
+
+void initTooltip () {
+  XSetWindowAttributes attribs;
+  unsigned long vmask;
+  extern Display *display;
+  extern char *app_name;
+  extern int screen;
+  extern Window rootwin, win;
+
+  if (Config.bTooltipDisable) {
+    if (Config.Verbose) {
+      fprintf(stdout, "[%8ld] initializing tooltips (disabled)\n", 
+	      currentTimeMillis());
+    }
+
+    return;
+  }
+  if (Config.Verbose) {
+    fprintf(stdout, "[%8ld] initializing tooltips\n", currentTimeMillis());
+  }
+  _fTooltip= XLoadQueryFont(display, Config.szTooltipFont);
+  if (!_fTooltip) {
+    fprintf(stderr, "%s: couldn't allocate font '%s'.\n", app_name, Config.szTooltipFont);
+    if (!strcmp(Config.szTooltipFont, TOOLTIP_FONT))
+      fprintf(stderr, "%s: Use option -F <font>\n", app_name);
+    exit(-1);
+  }
+  _nFontHeight= _fTooltip->ascent + _fTooltip->descent;
+  _nFontY= _fTooltip->ascent;
+  _nScreenWidth= WidthOfScreen(ScreenOfDisplay(display, screen));
+  _nScreenHeight= HeightOfScreen(ScreenOfDisplay(display, screen));
+  if (Config.Verbose) {
+    fprintf(stdout, "[%8ld] configuring tooltip font:\n" \
+	    "[%8ld] - '%s'\n" \
+	    "[%8ld] - font-height= %d, font-ascent= %d\n" \
+	    "[%8ld] configuring screen size: %dx%d\n",
+	    currentTimeMillis(), 
+	    currentTimeMillis(), Config.szTooltipFont, 
+	    currentTimeMillis(), _nFontHeight, _nFontY,
+	    currentTimeMillis(), _nScreenWidth, _nScreenHeight  );
+  }
+
+  vmask= CWSaveUnder | CWOverrideRedirect | CWBorderPixel;
+  attribs.save_under= True;
+  attribs.override_redirect= True;
+  attribs.border_pixel= 0;
+  _wTooltip= XCreateWindow(display, rootwin, 1, 1, 10, 10, 1,
+			   CopyFromParent, CopyFromParent, 
+			   CopyFromParent, vmask, &attribs);
+  if (win == 0) {
+    fprintf(stderr, "Cannot create tooltip window.\n");
+    exit(-1);
+  }
+}/**********************************************************************/
+
+void destroyTooltip () {
+  extern Display *display;
+
+  if (Config.bTooltipDisable) {
+    return;
+  }
+  if (_gcMono) {
+    XFreeGC(display, _gcMono);
+    _gcMono= 0;
+  }
+  XDestroyWindow(display, _wTooltip);
+}/**********************************************************************/
+
+void drawTooltipBalloon (Pixmap pix, GC gc, int x, int y, int w, int h, int side) {
+  extern Display *display;
+  int rad = h*3/10;
+  XPoint pt[3];
+
+  XFillArc(display, pix, gc, x, y, rad, rad, 90*64, 90*64);
+  XFillArc(display, pix, gc, x, y+h-1-rad, rad, rad, 180*64, 90*64);
+
+  XFillArc(display, pix, gc, x+w-1-rad, y, rad, rad, 0*64, 90*64);
+  XFillArc(display, pix, gc, x+w-1-rad, y+h-1-rad, rad, rad, 270*64, 90*64);
+
+  XFillRectangle(display, pix, gc, x, y+rad/2, w, h-rad);
+  XFillRectangle(display, pix, gc, x+rad/2, y, w-rad, h);
+
+  if (side & TOOLTIP_BOTTOM) {
+    pt[0].y = y+h-1;
+    pt[1].y = y+h-1+TOOLTIP_SPACE;
+    pt[2].y = y+h-1;
+  } else {
+    pt[0].y = y;
+    pt[1].y = y-TOOLTIP_SPACE;
+    pt[2].y = y;
+  }
+  if (side & TOOLTIP_RIGHT) {
+    pt[0].x = x+w-h+2*h/16;
+    pt[1].x = x+w-h+11*h/16;
+    pt[2].x = x+w-h+7*h/16;
+  } else {
+    pt[0].x = x+h-2*h/16;
+    pt[1].x = x+h-11*h/16;
+    pt[2].x = x+h-7*h/16;
+  }
+  XFillPolygon(display, pix, gc, pt, 3, Convex, CoordModeOrigin);
+}/**********************************************************************/
+
+Pixmap createTooltipPixmap (int width, int height, int side, Pixmap *mask) {
+  extern Display *display;
+  extern GC gc;
+  extern Pixel bg_pixel, fg_pixel;
+  extern int depth;
+  extern Window rootwin;
+  Pixmap bitmap;
+  Pixmap pixmap;
+  int x, y;
+
+  bitmap = XCreatePixmap(display, rootwin, 
+			 width+TOOLTIP_SPACE, height+TOOLTIP_SPACE, 1);
+
+  if (!_gcMono) {
+    _gcMono= XCreateGC(display, bitmap, 0, NULL);
+  }
+  XSetForeground(display, _gcMono, 0); 
+  XFillRectangle(display, bitmap, _gcMono, 0, 0, 
+		 width+TOOLTIP_SPACE, height+TOOLTIP_SPACE);
+
+  pixmap = XCreatePixmap(display, rootwin, 
+			 width+TOOLTIP_SPACE, height+TOOLTIP_SPACE, depth);
+  XSetForeground(display, gc, Config.bTooltipSwapColors ? fg_pixel : bg_pixel);
+  XFillRectangle(display, pixmap, gc, 0, 0, 
+		 width+TOOLTIP_SPACE, height+TOOLTIP_SPACE);
+
+  if (side & TOOLTIP_BOTTOM) {
+    y = 0;
+  } else {
+    y = TOOLTIP_SPACE;
+  }
+  x = 0;
+
+  XSetForeground(display, _gcMono, 1);
+  drawTooltipBalloon(bitmap, _gcMono, x, y, width, height, side);
+  XSetForeground(display, gc, Config.bTooltipSwapColors ? bg_pixel : fg_pixel);
+  drawTooltipBalloon(pixmap, gc, x+1, y+1, width-2, height-2, side);
+
+  *mask = bitmap;
+
+  return pixmap;
+}/***********************************************************************/
+
+
+/***********************************************************************
+ *   flush_expose
+ *
+ *   Everyone else has one of these... Can't hurt to throw it in.
+ ***********************************************************************/
+int flush_expose(Window w) {
+  extern Display *display;
+  XEvent         dummy;
+  int            i=0;
+
+  while (XCheckTypedWindowEvent(display, w, Expose, &dummy)) i++;
+  return(i);
+}/***********************************************************************/
diff --git a/wmbutton.c b/wmbutton.c
index f3ee59c..a2e46ac 100644
--- a/wmbutton.c
+++ b/wmbutton.c
@@ -1,16 +1,25 @@
 /***********************************************************************
  *   Code is based on wmppp, wmload, wmtime, wmcp, and asbutton
  *   Author: Edward H. Flora <ehflora at ksu.edu>
- *   Ver 0 Rel 3    March 6, 1999
+ *   Ver 0 Rel 6.1    Jan 23, 2005
  *
  *   Contributors:
+ *              Christian 'Greek0' Aichinger <Greek0 at gmx.net>
+ *                  Did some code cleanup and fixed several memory leaks.
+ *              Ralf Horstmann <ralf.horstmann at gmx.de>
+ *                  Added ability to load pixmaps at startup,
+ *                  without having to re-compile
+ *              Michael Cohrs <camico at users.sourceforge.net> 
+ *                  Added Tool Tips, and updated graphics
+ *              Bruno Essmann <essmann at users.sourceforge.net>)
+ *                  Creator of wmpager
+ *              Casey Harkins <charkins at cs.wisc.edu> 
+ *                  Bug fix reading config file path - 3/6/99
+ *                  Added button-presses, and other - denoted by *charkins*
  *              Ben Cohen <buddog at aztec.asu.edu>
  *                  original author of wmcp (et al.)
  *              Thomas Nemeth <tnemeth at multimania.com>
  *                  contributor to wmcp
- *              Casey Harkins <charkins at cs.wisc.edu> 
- *                  Bug fix reading config file path - 3/6/99
- *                  Added button-presses, and other - denoted by *charkins*
  *              Michael Henderson <mghenderson at lanl.gov>
  *                  Application ideas, suggestions
  *              Ryan ?? <pancake at mindspring.com> 
@@ -24,30 +33,25 @@
  *    development of wmbutton.  I'm listing them here partially as thanks for 
  *    helping out, catching bugs in the code, etc.
  ***********************************************************************/
-#include <Xlib.h>
-#include <Xutil.h>
-#include <xpm.h>
-#include <extensions/shape.h>
-#include <keysym.h>
 #include <stdio.h>
 #include <math.h>
 #include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
+#include <unistd.h>
 
-#include "backdrop.xpm"           // background graphic
-#include "buttons.xpm"            // graphic of 9 buttons
-#include "mask.xbm"
+#include "wmbutton.h"
 
-#define CONFIGFILEMAX 128
-#define CONFFILENAME  "/.wmbutton"
-#define VER           0
-#define REL           4
+#include "backdrop.xpm"           /* background graphic */
+#include "buttons.xpm"            /* graphic of 9 buttons */
+#include "mask.xbm"               /* Border Graphic */
 
-// #define MIDMOUSE
-#define LMASK         0
-#define MMASK         10
-#define RMASK         20
+/*************** Function Prototypes ***********************************/
+void redraw(void);                 
+void getPixmaps(void);
+int  whichButton(int x, int y);   // determine which button has been pressed
+void SetWmHints();
+void SetClassHints();
 
 /***********************************************************************
  * 		Globals..    OK.. there's too many globals.
@@ -60,10 +64,7 @@ GC gc;
 int depth;
 Pixel bg_pixel, fg_pixel;
 
-XSizeHints xsizehints;
-XWMHints * xwmhints;
-XClassHint xclasshint;
-char configfile[CONFIGFILEMAX]; 
+struct Config_t Config;
 
 typedef struct _XpmIcon {
   Pixmap pixmap;
@@ -71,9 +72,6 @@ typedef struct _XpmIcon {
   XpmAttributes attributes;
 } XpmIcon;
 
-
-Pixmap pixmask;
-
 typedef struct _button_region {
   int x,y;
   int i,j;
@@ -83,81 +81,40 @@ ButtonArea button_region[9];
 
 XpmIcon template, visible, buttons;
 
-int numb_of_apps = 9;
-int N = 1;		/* Button number pressed to goto app #     */
 int border  = 0;
-int Verbose = 0;
-int mmouse  = 0;
 int button_pressed = -1;	/* button to be drawn pressed *charkins*/
 
 char *app_name = "wmbutton";
 
-/*************** Function Prototypes ***********************************/
-void RunAppN(int app);             // function to run app N as found in conf file
-char *Parse(int app);              // parse data in config file
-void redraw(void);                 
-void getPixmaps(void);
-int  whichButton(int x, int y);    // determine which button has been pressed
-int  flush_expose(Window w);
-void show_usage(void);             // show usage message to stderr
-char *readln(FILE *fp);            // read line from file, return pointer to it
-
 /***********************************************************************
  * 		Main
  ***********************************************************************/
 int main( int argc, char ** argv ) {
+
   XEvent report;
   XGCValues xgcValues;	
   XTextProperty app_name_atom;
+  XSizeHints xsizehints;
+
+  Pixmap pixmask;
 
   int dummy = 0;
-  int i;
-  char Geometry_str[64] = "64x64+0+0";
-  char Display_str[64] = "";
+  int N = 1;		        /* Button number pressed to goto app # */
   
-  strcpy(configfile, getenv("HOME"));  // Added by Casey Harkin, 3/6/99
-  strcat(configfile, CONFFILENAME);    // Fixed Bug - didn't look in home directory
-                                       // but startup directory
+  /* Added for Tool Tip Support */
+  long nTooltipShowDelay = TOOLTIP_SHOW_DELAY;
+  long nTooltipReshowDelay = TOOLTIP_RESHOW_DELAY;
+  long nTooltipTimer = -1;
+  long nTooltipHideTimer = -1;
+  long nNow;
+  int nTooltipButton = 0, nTooltipX = 0, nTooltipY = 0;
 
   /* Parse Command Line Arguments */  
-  for ( i=1; i<argc; i++ ) {
-    if ( *argv[i] == '-' ) {
-      switch ( *(argv[i]+1) ) {
-      case 'v':                        // Turn on Verbose (debugging) Mode
-	Verbose = 1;
-	break;
-      case 'g':                        // Set Geometry Options
-	if ( ++i >= argc ) show_usage();
-	sscanf(argv[i], "%s", Geometry_str);
-	if ( Verbose ) printf("Geometry is: %s\n", Geometry_str);
-	break;
-      case 'd':                        // Set display 
-	if ( ++i >= argc ) show_usage();
-	sscanf(argv[i], "%s", Display_str);
-	if ( Verbose ) printf("Display is: %s\n", Display_str);
-	break;
-      case 'h':                        // Show Help Message
-	show_usage();
-	break;
-      case 'f':                        // use config file <filename>
-	if ( ++i >= argc ) show_usage();
-	sscanf(argv[i], "%s", configfile);
-	if ( Verbose ) printf("Using Config File: %s\n", configfile);
-	break;
-      case 'm':                        // Enable Middle Mouse
-	mmouse = 1;
-	break;
-      default:                         // other, unknown, parameters
-	show_usage();
-	break;
-      }
-    }
-  }
-    
-  if ( (display = XOpenDisplay(Display_str)) == NULL ) {
-    fprintf(stderr,"Fail: XOpenDisplay for %s\n", Display_str);	
-    exit(-1);
-  }
+  parseargs(argc, argv);
+
+  /* Open Display */
+  if ( (display = XOpenDisplay(Config.Display_str)) == NULL ) 
+    err_mess(FAILDISP, Config.Display_str);
   
   screen  = DefaultScreen(display);
   rootwin = RootWindow(display,screen);
@@ -172,7 +129,7 @@ int main( int argc, char ** argv ) {
   
   /* Parse Geometry string and fill in sizehints fields */
   XWMGeometry(display, screen, 
-	      Geometry_str, 
+	      Config.Geometry_str, 
 	      NULL, 	
 	      border, 
 	      &xsizehints,
@@ -189,10 +146,9 @@ int main( int argc, char ** argv ) {
 				  xsizehints.width,
 				  xsizehints.height,
 				  border,
-				  fg_pixel, bg_pixel) ) == 0 ) {
-    fprintf(stderr,"Fail: XCreateSimpleWindow\n");	
-    exit(-1);
-  }
+				  fg_pixel, bg_pixel) ) == 0 )
+    err_mess(FAILSWIN, NULL);
+
   
   if ( (iconwin = XCreateSimpleWindow(display,
 				      win,
@@ -201,10 +157,8 @@ int main( int argc, char ** argv ) {
 				      xsizehints.width,
 				      xsizehints.height,
 				      border,
-				      fg_pixel, bg_pixel) ) == 0 ) {
-    fprintf(stderr,"Fail: XCreateSimpleWindow\n");	
-    exit(-1);
-  }
+				      fg_pixel, bg_pixel) ) == 0 )
+    err_mess(FAILICON, NULL);
 
   /* Set up shaped windows */
   /*Gives the appicon a border so you can grab and move it. */
@@ -213,9 +167,9 @@ int main( int argc, char ** argv ) {
 					 win,
 					 mask_bits,
 					 mask_width,
-					 mask_height) )  == 0 ) {
-    fprintf(stderr,"Fail: XCreateBitmapFromData\n");
-  }
+					 mask_height) )  == 0 )
+    err_mess(FAILXPM,NULL);
+
   
   XShapeCombineMask(display, win, ShapeBounding, 0, 0, pixmask, ShapeSet );
   XShapeCombineMask(display, iconwin, ShapeBounding, 0, 0, pixmask, ShapeSet);
@@ -225,47 +179,38 @@ int main( int argc, char ** argv ) {
 
   /* Interclient Communication stuff */
   /* Appicons don't work with out this stuff */
-  xwmhints = XAllocWMHints();
-  xwmhints->flags = WindowGroupHint | IconWindowHint | StateHint;	
-  xwmhints->icon_window = iconwin;
-  xwmhints->window_group = win;
-  xwmhints->initial_state = WithdrawnState;  
-  XSetWMHints( display, win, xwmhints );
+  SetWmHints();
+  SetClassHints();
 
-  xclasshint.res_name = "wmbutton";
-  xclasshint.res_class = "Wmbutton";
-  XSetClassHint( display, win, &xclasshint );
 
   XSetWMNormalHints( display, win, &xsizehints );
   
   /* Tell window manager what the title bar name is. We never see */
   /* this anyways in the WithdrawnState      */
-  if ( XStringListToTextProperty(&app_name, 1, &app_name_atom) == 0 ) {
-    fprintf(stderr,"%s: Can't set up window name\n", app_name);
-    exit(-1);
-  }
+  if ( XStringListToTextProperty(&app_name, 1, &app_name_atom) == 0 )
+    err_mess(FAILWNAM,app_name);
   XSetWMName( display, win, &app_name_atom );
   
   /* Create Graphic Context */	
   if (( gc = XCreateGC(display, win,(GCForeground | GCBackground), &xgcValues))
-       == NULL ) {
-    fprintf(stderr,"Fail: XCreateGC\n");	
-    exit(-1);
-  }
+       == NULL )
+    err_mess(FAILGC,NULL);
 
   /* XEvent Masks. We want both window to process X events */
   XSelectInput(display, win,
 	       ExposureMask | 
 	       ButtonPressMask | 
-		   ButtonReleaseMask |		/* added ButtonReleaseMask *charkins*/
+	       ButtonReleaseMask |    	/* added ButtonReleaseMask *charkins*/
 	       PointerMotionMask |
-	       StructureNotifyMask );  
+	       StructureNotifyMask |
+	       LeaveWindowMask );  
   XSelectInput(display, iconwin,
 	       ExposureMask | 
 	       ButtonPressMask | 
-		   ButtonReleaseMask |		/* added ButtonReleaseMask *charkins*/
+	       ButtonReleaseMask |	/* added ButtonReleaseMask *charkins*/
 	       PointerMotionMask |
-	       StructureNotifyMask );
+	       StructureNotifyMask |
+	       LeaveWindowMask );
   
   /* Store the 'state' of the application for restarting */
   XSetCommand( display, win, argv, argc );	
@@ -274,106 +219,171 @@ int main( int argc, char ** argv ) {
   /* ConfigureNotify */
   XMapWindow( display, win );
 
+  /* Initialize Tooltip Support */
+  initTime();
+  initTooltip(!Config.bTooltipDisable, Config.szTooltipFont, Config.bTooltipSwapColors);
+
   /* X Event Loop */
   while (1) {
-    XNextEvent(display, &report );
-    switch (report.type) {
-    case Expose:
-      if (report.xexpose.count != 0) {	
+    while (XPending(display) || nTooltipTimer == -1) {
+      XNextEvent(display, &report );
+      switch (report.type) {
+      case Expose:
+	if (report.xexpose.count != 0) {	
+	  break;
+	}
+	if ( Config.Verbose ) fprintf(stdout,"Event: Expose\n");	
+	redraw();
+	break;      
+
+      case ConfigureNotify:
+	if ( Config.Verbose ) fprintf(stdout,"Event: ConfigureNotify\n");	
+	redraw();
 	break;
-      }
-      if ( Verbose ) fprintf(stdout,"Event: Expose\n");	
-      redraw();
-      break;      
-    case ConfigureNotify:
-      if ( Verbose ) fprintf(stdout,"Event: ConfigureNotify\n");	
-      redraw();
-      break;
-    case ButtonPress:	/* draw button pressed, don't launch *charkins*/
-      switch (report.xbutton.button) {
-      case Button1:
-	N = whichButton(report.xbutton.x, report.xbutton.y );
-	if ( (N >= 0) && (N <= numb_of_apps) ) {
-	  button_pressed = N + LMASK;
-	  redraw();
+
+      case MotionNotify:
+	if (hasTooltipSupport()) {
+	  if (!hasTooltip()) {
+	    nTooltipTimer= currentTimeMillis();
+	    nTooltipX= report.xbutton.x;
+	    nTooltipY= report.xbutton.y;
+	    nTooltipButton= whichButton(report.xbutton.x, report.xbutton.y);
+	  } else {
+	    int nButton = whichButton(report.xbutton.x, report.xbutton.y);
+	    if (nButton != nTooltipButton) {
+	      hideTooltip();
+	      nTooltipTimer= -1;
+	      nTooltipX = report.xbutton.x;
+	      nTooltipY = report.xbutton.y;
+	      nTooltipButton = nButton;
+	      showTooltip(nTooltipButton, nTooltipX, nTooltipY);
+	    }
+	  }
+	}
+	break;
+      
+      case LeaveNotify:
+	if ( Config.Verbose ) fprintf(stdout,"Event: LeaveNotify\n");	
+	if (hasTooltip()) {
+	  hideTooltip();
+	  nTooltipHideTimer= currentTimeMillis();
 	}
-	if ( Verbose ) 
-	  fprintf(stdout,"Button 1:x=%d y=%d N=%d\n", 
-		  report.xbutton.x, report.xbutton.y, N+LMASK);	
+	nTooltipTimer= -1;
 	break;
-      case Button2:
-	if (mmouse) {
+
+      case ButtonPress:	/* draw button pressed, don't launch *charkins*/
+	if (hasTooltip()) {
+	  hideTooltip();
+	  nTooltipHideTimer= currentTimeMillis();
+	}	switch (report.xbutton.button) {
+	case Button1:
 	  N = whichButton(report.xbutton.x, report.xbutton.y );
-	  if ( (N >= 0) && (N <= numb_of_apps) ) {
-	    button_pressed = N + MMASK;
+	  if ( (N >= 0) && (N <= NUMB_OF_APPS) ) {
+	    button_pressed = N + LMASK;
 	    redraw();
 	  }
-	  if ( Verbose ) 
+
+	  if ( Config.Verbose ) 
 	    fprintf(stdout,"Button 1:x=%d y=%d N=%d\n", 
-		    report.xbutton.x, report.xbutton.y, N+MMASK);
-	}
-	break;
-      case Button3:
-	N = whichButton(report.xbutton.x, report.xbutton.y );
-	if ( (N >= 0) && (N <= numb_of_apps) ) {
-	  button_pressed = N + RMASK;
-	  redraw();
+		    report.xbutton.x, report.xbutton.y, N+LMASK);	
+
+	  break;
+	case Button2:
+	  if (Config.mmouse) {
+	    N = whichButton(report.xbutton.x, report.xbutton.y );
+	    if ( (N >= 0) && (N <= NUMB_OF_APPS) ) {
+	      button_pressed = N + MMASK;
+	      redraw();
+	    }
+
+	    if ( Config.Verbose ) 
+	      fprintf(stdout,"Button 2:x=%d y=%d N=%d\n", 
+		      report.xbutton.x, report.xbutton.y, N+MMASK);
+
+	  }
+	  break;
+	case Button3:
+	  N = whichButton(report.xbutton.x, report.xbutton.y );
+	  if ( (N >= 0) && (N <= NUMB_OF_APPS) ) {
+	    button_pressed = N + RMASK;
+	    redraw();
+	  }
+
+	  if ( Config.Verbose ) 
+	    fprintf(stdout,"Button 3:x=%d y=%d N=%d\n", 
+		    report.xbutton.x, report.xbutton.y, N+RMASK);
+
+	  break;
 	}
-	if ( Verbose ) 
-	  fprintf(stdout,"Button 3:x=%d y=%d N=%d\n", 
-		  report.xbutton.x, report.xbutton.y, N+RMASK);
-	break;
-      }
-      break;
-    case ButtonRelease:	/* launch app here if still over button *charkins*/
-      switch (report.xbutton.button) {
-      case Button1:
-	N = whichButton(report.xbutton.x, report.xbutton.y );
-	if ( (N >= 0) && (N <= numb_of_apps) && (N == button_pressed))
-	  RunAppN( N + LMASK);
-	button_pressed=-1;
-	redraw();
-	if ( Verbose ) 
-	  fprintf(stdout,"Button 1:x=%d y=%d N=%d\n", 
-		  report.xbutton.x, report.xbutton.y, N+LMASK);	
 	break;
-      case Button2:
-	if (mmouse) {
+      case ButtonRelease:   /* launch app here if still over button *charkins*/
+	switch (report.xbutton.button) {
+	case Button1:
 	  N = whichButton(report.xbutton.x, report.xbutton.y );
-	  if ( (N >= 0) && (N <= numb_of_apps) && (N == button_pressed))
-	    RunAppN( N + MMASK);
+	  if ( (N >= 0) && (N <= NUMB_OF_APPS) && (N == button_pressed))
+	    RunAppN( N + LMASK);
 	  button_pressed=-1;
 	  redraw();
-	  if ( Verbose ) 
+
+	  if ( Config.Verbose ) 
 	    fprintf(stdout,"Button 1:x=%d y=%d N=%d\n", 
-		    report.xbutton.x, report.xbutton.y, N+MMASK);
+		    report.xbutton.x, report.xbutton.y, N+LMASK);	
+
+	  break;
+	case Button2:
+	  if (Config.mmouse) {
+	    N = whichButton(report.xbutton.x, report.xbutton.y );
+	    if ( (N >= 0) && (N <= NUMB_OF_APPS) && (N == button_pressed))
+	      RunAppN( N + MMASK);
+	    button_pressed=-1;
+	    redraw();
+
+	    if ( Config.Verbose ) 
+	      fprintf(stdout,"Button 2:x=%d y=%d N=%d\n", 
+		      report.xbutton.x, report.xbutton.y, N+MMASK);
+
+	  }
+	  break;
+	case Button3:
+	  N = whichButton(report.xbutton.x, report.xbutton.y );
+	  if ( (N >= 0) && (N <= NUMB_OF_APPS) && (N == button_pressed))
+	    RunAppN( N + RMASK);
+	  button_pressed=-1;
+	  redraw();
+
+	  if ( Config.Verbose ) 
+	    fprintf(stdout,"Button 3:x=%d y=%d N=%d\n", 
+		    report.xbutton.x, report.xbutton.y, N+RMASK);
+
+	  break;
 	}
 	break;
-      case Button3:
-	N = whichButton(report.xbutton.x, report.xbutton.y );
-	if ( (N >= 0) && (N <= numb_of_apps) && (N == button_pressed))
-	  RunAppN( N + RMASK);
-	button_pressed=-1;
-	redraw();
-	if ( Verbose ) 
-	  fprintf(stdout,"Button 3:x=%d y=%d N=%d\n", 
-		  report.xbutton.x, report.xbutton.y, N+RMASK);
+      case DestroyNotify:
+
+	if ( Config.Verbose ) fprintf(stdout, "Bye\n");
+
+	destroyTooltip();
+	XFreeGC(display, gc);
+	XDestroyWindow(display,win);
+	XDestroyWindow(display,iconwin);
+	XCloseDisplay(display);
+	exit(0);
 	break;
       }
-      break;
-    case DestroyNotify:
-      if ( Verbose ) fprintf(stdout, "Bye\n");
-      XFreeGC(display, gc);
-      XDestroyWindow(display,win);
-      XDestroyWindow(display,iconwin);
-      XCloseDisplay(display);
-      if ( Verbose ) fprintf(stdout, "Bye\n");
-      exit(0);
-      break;
     }
+
+    usleep(50000);
+    nNow = currentTimeMillis();
+    if ( nTooltipTimer != -1 && 
+	 ( (nNow > nTooltipTimer + nTooltipShowDelay) || (nNow < nTooltipHideTimer + nTooltipReshowDelay) ) ) {
+      showTooltip(nTooltipButton, nTooltipX, nTooltipY);
+      nTooltipTimer = -1;
+    }
+    
   }
+
   return (0);
-}
+}/***********************************************************************/
 
 /***********************************************************************
  *   redraw
@@ -394,6 +404,7 @@ void redraw() {
   int offset;
   int bsize = 18;
 
+  if ( Config.Verbose ) fprintf(stdout,"In Redraw()\n");	
   space = 0;
   offset = 5;
   XCopyArea(display, template.pixmap, visible.pixmap, gc, 0, 0,
@@ -412,7 +423,7 @@ void redraw() {
       button_region[n].j = dest_y + bsize - 1; 
       
       /* Copy button images for valid apps */
-      if (  (n + 1) <= numb_of_apps ) {
+      if (  (n + 1) <= NUMB_OF_APPS ) {
         XCopyArea(display, buttons.pixmap, visible.pixmap, gc, 
 	          i * bsize, j * bsize, bsize, bsize, dest_x, dest_y);
       } 
@@ -445,8 +456,8 @@ void redraw() {
   flush_expose( iconwin ); 
   XCopyArea(display, visible.pixmap, iconwin, gc, 0, 0,
 	    visible.attributes.width, visible.attributes.height, 0, 0 );
-  if ( Verbose ) fprintf(stdout,"In Redraw()\n");	
-}
+
+}/***********************************************************************/
 
 /***********************************************************************
  *  whichButton
@@ -457,7 +468,7 @@ void redraw() {
 int whichButton( int x, int y ) {
   int index;
 
-  for ( index=0; index < numb_of_apps; index++ ) {
+  for ( index=0; index < NUMB_OF_APPS; index++ ) {
     if ( x >= button_region[index].x &&
 	 x <= button_region[index].i &&
 	 y >= button_region[index].y &&
@@ -466,60 +477,8 @@ int whichButton( int x, int y ) {
     }
   }
   return(-1);
-}
-
-/***********************************************************************
- * RunAppN(int app)
- *
- * Run the command given in the configuration file 'configfile'
- ***********************************************************************/
-void RunAppN( int app ) {
-  char *cmndstr;
-
-  cmndstr = Parse(app);                  // Get command to pass to system
-  if (Verbose) fprintf(stderr, "Command String: %s", cmndstr);
-  if (cmndstr != NULL) system(cmndstr);  // if there's a command, run it
-}
-
-/***********************************************************************
- * Parse(int app)
- *
- * Parses the file 'configfile' for command to execute.
- ***********************************************************************/
-
-char *Parse(int app) {
-  FILE *fp;
-  char *ptr  = NULL;
-  char *cmnd = NULL;
-  char *line = NULL;
-
-  if ((fp = fopen(configfile, "r")) == NULL) {  // Can't find config file
-    fprintf(stderr, "%s: Configuration File not found\n", configfile);
-    exit(-1);
-  }
-
-  do {                               // Read Lines in config file
-    line = readln(fp);
-    if (line == NULL) break;         // if end of file, quit
-    if ( (line[0] != '#') && (line[0] != '\n'))  // Ignore comments and blanks 
-      if ( atoi(line) == app) break; // if we've found our app, quit looking
-  } while (1);
+}/***********************************************************************/
 
-  if (line == NULL) return(NULL);    // if we didn't find in, that just ignore
-
-  ptr = strchr(line,'\t');                      // find first tab
-  if (ptr == NULL)   ptr = strchr(line,' ');    // or space charater
-  if (ptr == NULL)   return(NULL);              // if neither are there, its a badly
-                                                // formatted line.  Ignore
-  ptr++;
-  cmnd = malloc((strlen(ptr)+1)*sizeof(char));  
-
-  strcpy(cmnd, ptr);                 // Everything after number is passed to system
-
-  free(line);
-  fclose(fp);
-  return(cmnd);
-}
 
 /***********************************************************************
  *   getPixmaps
@@ -533,61 +492,66 @@ char *Parse(int app) {
  *          later copied onto Pixmap visible.
  ***********************************************************************/
 void getPixmaps() {
+  int loaded = 0;
   template.attributes.valuemask |= (XpmReturnPixels | XpmReturnExtensions);
   visible.attributes.valuemask  |= (XpmReturnPixels | XpmReturnExtensions);
   buttons.attributes.valuemask  |= (XpmReturnPixels | XpmReturnExtensions);
   
+
+  if (Config.Verbose) fprintf(stdout, "In getPixmaps\n");
   /* Template Pixmap. Never Drawn To. */
   if ( XpmCreatePixmapFromData(	display, rootwin, backdrop_xpm,
 				&template.pixmap, &template.mask, 
-				&template.attributes) != XpmSuccess ) {
-    fprintf(stderr, "Can't Create 'template' Pixmap\n");
-    exit(1);
-  }
+				&template.attributes) != XpmSuccess )
+    err_mess(FAILTMPL, NULL);
+
   /* Visible Pixmap. Copied from template Pixmap and then drawn to. */
   if ( XpmCreatePixmapFromData(	display, rootwin, backdrop_xpm,
 				&visible.pixmap, &visible.mask, 
-				&visible.attributes) != XpmSuccess ) {
-    fprintf(stderr, "Can't Create 'visible' Pixmap");
-    exit(1);
-  }
+				&visible.attributes) != XpmSuccess )
+    err_mess(FAILVIS, NULL);
   
   /* Button Pixmap.  */
-  if ( XpmCreatePixmapFromData(	display, rootwin, buttons_xpm,
-				&buttons.pixmap, &buttons.mask, 
-				&buttons.attributes) != XpmSuccess ) {
-    fprintf(stderr, "Can't Create 'buttons' Pixmap");
-    exit(1);
+  if ( access( Config.buttonfile, R_OK  ) == 0 ) {
+    /* load buttons from file */
+    if ( XpmReadFileToPixmap( display, rootwin, Config.buttonfile,
+      			      &buttons.pixmap, &buttons.mask, 
+			      &buttons.attributes) != XpmSuccess ) {
+      err_mess(FAILBUT, NULL); 
+    } else {
+      loaded = 1;
+    }
   }
-}
+  if (! loaded) { 
+    /* Use Builtin Button Pixmap.  */
+    if (Config.Verbose) fprintf(stdout, "Using builtin buttons pixmap\n");
+    if ( XpmCreatePixmapFromData( display, rootwin, buttons_xpm,
+				  &buttons.pixmap, &buttons.mask, 
+				  &buttons.attributes) != XpmSuccess )
+      err_mess(FAILBUT, NULL); 
+  }
+  if (Config.Verbose) fprintf(stdout, "Leaving getPixmaps\n");
 
-/***********************************************************************
- *   flush_expose
- *
- *   Everyone else has one of these... Can't hurt to throw it in.
- ***********************************************************************/
-int flush_expose(Window w) {
-  XEvent      dummy;
-  int         i=0;
-  
-  while (XCheckTypedWindowEvent(display, w, Expose, &dummy)) i++;
-  return(i);
+}/*********************************************************************/
+
+void SetWmHints() {
+  XWMHints *xwmhints;
+
+  xwmhints = XAllocWMHints();
+  xwmhints->flags = WindowGroupHint | IconWindowHint | StateHint;	
+  xwmhints->icon_window = iconwin;
+  xwmhints->window_group = win;
+  xwmhints->initial_state = WithdrawnState;  
+  XSetWMHints( display, win, xwmhints );
+	XFree(xwmhints);
+	xwmhints = NULL;
 }
 
-/***********************************************************************
- * 		show_usage
- ***********************************************************************/
-void show_usage() {
-  fprintf(stderr,"\n");
-  fprintf(stderr,"usage: %s [-g geometry] [-d dpy] [-v] [-f <configfile>]\n",app_name);
-  fprintf(stderr,"\n");
-  fprintf(stderr," wmbutton Ver %d Rel %d\n",VER,REL);
-  fprintf(stderr,"\n");
-  fprintf(stderr,"-g  <geometry>   Window Geometry - ie: 64x64+10+10\n");
-  fprintf(stderr,"-d  <display>    Display -  ie: 127.0.0.1:0.0\n"); 
-  fprintf(stderr,"-f  <filename>   Full path to configuration file.\n");
-  fprintf(stderr,"-v               Verbose Mode. \n");
-  fprintf(stderr,"-h               Help. This message.\n");
-  fprintf(stderr,"-m               Enable Middle Mouse functionality.\n\n");
-  exit(-1);
+void SetClassHints() {
+  XClassHint xclasshint;
+
+  xclasshint.res_name = "wmbutton";
+  xclasshint.res_class = "Wmbutton";
+  XSetClassHint( display, win, &xclasshint );
 }
+
diff --git a/wmbutton.h b/wmbutton.h
new file mode 100644
index 0000000..178f896
--- /dev/null
+++ b/wmbutton.h
@@ -0,0 +1,107 @@
+/* wmbutton.h - Edward H. Flora - ehf_dockapps at cox.net */
+/* Last Modified 3/27/04 */
+
+/******  Include Files ***************************************************/
+#include <Xlib.h>
+#include <Xutil.h>
+#include <xpm.h>
+#include <extensions/shape.h>
+#include <keysym.h>
+#include <math.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/time.h>
+#include <unistd.h>
+
+/******  Define Config File Info  ***************************************/
+#define CONFFILENAME  "/.wmbutton"   /* Default conf filename $HOME/.wmbutton */
+#define BUTTONFILENAME "/.wmbutton.xpm"
+
+/******  Version / Release Number ***************************************/
+#define VER           0     /* Version Number */     
+#define REL           6     /* Release Number */
+
+/******  Define Error Codes *********************************************/
+#define FAILDISP      20
+#define FAILSWIN      21
+#define FAILICON      22
+#define FAILXPM       23
+#define FAILWNAM      24
+#define FAILGC        25
+#define FAILCONF      26
+#define FAILTMPL      27
+#define FAILVIS       28
+#define FAILBUT       29
+
+/******   Define Other Options  ****************************************/
+#define VERB          0      /* Enable=1, Disable=0: Debugging (verbose) Mode*/
+#define MIDMOUSE      1      /* Define Middle Mouse functionality */
+#define LMASK         0      /* left button mask: run app # mask + button #*/
+#define MMASK         10     /* middle button mask: run app # mask + button #*/
+#define RMASK         20     /* right button mask: run app # mask + button #*/
+#define NUMB_OF_APPS  9      /* Define number of apps */
+
+#define EOLN '\n'	     /* Defines the new line character */
+#define SIZE1 20	     /* Defines the increment to increase the */
+			     /*   string by until a newline of EOF is found */
+
+/******   Defines for Tool Tips  ***************************************/
+#define TOOLTIP_SUPPORT      1
+#define TOOLTIP_FONT         "-*-helvetica-medium-r-normal-*-10-*-*-*-*-*-*-*"
+#define TOOLTIP_FONT_LEN     128
+#define TOOLTIP_SHOW_DELAY   750
+#define TOOLTIP_RESHOW_DELAY 1500
+
+#define TOOLTIP_SPACE   12
+#define TOOLTIP_TOP	 0
+#define TOOLTIP_BOTTOM	 1
+#define TOOLTIP_LEFT	 0
+#define TOOLTIP_RIGHT	 2
+
+#define BUTTON_SIZE     18
+#define BUTTON_COLS      3
+
+#define BUFFER_SIZE 1024
+
+/******  Typedefs  *******************************************/
+
+struct Config_t {
+  char *configfile;
+  char *buttonfile;
+  char *Geometry_str;
+  char *Display_str;
+  int mmouse;
+  int Verbose;
+  char* szTooltipFont;
+  int bTooltipSwapColors;
+  int bTooltipDisable;
+};
+
+/******  Function Prototyes  *******************************************/
+void RunAppN(int app);             // function to run app N as found in conf file
+char *Parse(int app);              // parse data in config file
+void parseargs(int argc, char **argv);
+char *readln(FILE *fp);            // read line from file, return pointer to it
+void err_mess(int err, char *str); // Error Handling Routine
+void show_usage(void);            // show usage message to stderr
+int  flush_expose(Window w);
+
+
+/******  Tooltip Function Prototypes  **********************************/
+void initTooltip();
+void destroyTooltip ();
+int hasTooltipSupport ();
+void showTooltip (int nButton, int nMouseX, int nMouseY);
+void hideTooltip ();
+int hasTooltip ();
+void drawTooltipBalloon (Pixmap pix, GC gc, int x, int y, int w, int h, int side);
+Pixmap createTooltipPixmap (int width, int height, int side, Pixmap *mask);
+
+void initTime ();
+long currentTimeMillis ();
+void getWindowOrigin (Window w, int* nX, int* nY);
+void getButtonLocation (int nButton, int* nLocationX, int* nLocationY);
+char *getButtonAppNames (int nButton);
+
+/**********************************************************************/

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-wmaker/wmbutton.git



More information about the Pkg-wmaker-commits mailing list