From:
http://www.cs.mun.ca/~gstarkes/wmaker/dockapps/files/wmtetris-0.1.tar.gz
---
 wmtetris/README                     |  22 ++
 wmtetris/wmgeneral/wmgeneral.c      | 366 ++++++++++++++++++
 wmtetris/wmgeneral/wmgeneral.h      |  50 +++
 wmtetris/wmtetris/Makefile          |  16 +
 wmtetris/wmtetris/wmmon.c           | 739 ++++++++++++++++++++++++++++++++++++
 wmtetris/wmtetris/wmtetris-mask.xbm |  46 +++
 wmtetris/wmtetris/wmtetris.c        | 302 +++++++++++++++
 wmtetris/wmtetris/wmtetris.h        |  40 ++
 wmtetris/wmtetris/wmtetris.xpm      | 532 ++++++++++++++++++++++++++
 9 files changed, 2113 insertions(+)
 create mode 100644 wmtetris/README
 create mode 100644 wmtetris/wmgeneral/wmgeneral.c
 create mode 100644 wmtetris/wmgeneral/wmgeneral.h
 create mode 100644 wmtetris/wmtetris/Makefile
 create mode 100644 wmtetris/wmtetris/wmmon.c
 create mode 100644 wmtetris/wmtetris/wmtetris-mask.xbm
 create mode 100644 wmtetris/wmtetris/wmtetris.c
 create mode 100644 wmtetris/wmtetris/wmtetris.h
 create mode 100644 wmtetris/wmtetris/wmtetris.xpm

diff --git a/wmtetris/README b/wmtetris/README
new file mode 100644
index 0000000..96923b7
--- /dev/null
+++ b/wmtetris/README
@@ -0,0 +1,22 @@
+Here it is, just what you always wanted -- tetris for the dock.
+
+To install, type make or something.
+
+I started with the wmapm code and made just enough changes to make it
+play tetris and not show your laptop's battery status. So if you want
+actual documentation, refer to the files that come with wmapm.
+
+This is commercial software. If you decide to keep it after your 21 day
+evaluation period, you are required by law to send me the registration
+fee of $899 U.S. Failure to promptly transfer these funds may result in
+criminal prosecution for violation of U.S. copyright law and Bill Gates
+will shake is finger at you and condemn you as a thief of "intellectual
+property".
+
+WMTETRIS IS PROVIDED "AS IS", AND COMES WITH NO WARRANTY WHATSOEVER,
+INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTEES OF NOT MAKING YOU
+FEEL LIKE A JERK FOR DOWNLOADING CRAPPY SOFTWARE, AND OF NOT CAUSING A
+CULT FOLLOWING TO DEVELOP ;-). 
+
+Comments, questions, and psychiatric referrals to sr...@cornell.edu.
+
diff --git a/wmtetris/wmgeneral/wmgeneral.c b/wmtetris/wmgeneral/wmgeneral.c
new file mode 100644
index 0000000..a4f13c1
--- /dev/null
+++ b/wmtetris/wmgeneral/wmgeneral.c
@@ -0,0 +1,366 @@
+/*
+       Best viewed with vim5, using ts=4
+
+       wmgeneral was taken from wmppp.
+
+       It has a lot of routines which most of the wm* programs use.
+
+       ------------------------------------------------------------
+
+       Author: Martijn Pieterse (piete...@xs4all.nl)
+
+       ---
+       CHANGES:
+       ---
+       02/05/1998 (Martijn Pieterse, piete...@xs4all.nl)
+               * changed the read_rc_file to parse_rcfile, as suggester by 
Marcelo E. Magallon
+               * debugged the parse_rc file.
+       30/04/1998 (Martijn Pieterse, piete...@xs4all.nl)
+               * Ripped similar code from all the wm* programs,
+                 and put them in a single file.
+
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <ctype.h>
+#include <stdarg.h>
+
+#include <X11/Xlib.h>
+#include <X11/xpm.h>
+#include <X11/extensions/shape.h>
+
+#include "wmgeneral.h"
+
+  /*****************/
+ /* X11 Variables */
+/*****************/
+
+Window         Root;
+int                    screen;
+int                    x_fd;
+int                    d_depth;
+XSizeHints     mysizehints;
+XWMHints       mywmhints;
+Pixel          back_pix, fore_pix;
+char           *Geometry = "";
+Window         iconwin, win;
+GC                     NormalGC;
+XpmIcon                wmgen;
+Pixmap         pixmask;
+
+  /*****************/
+ /* Mouse Regions */
+/*****************/
+
+typedef struct {
+       int             enable;
+       int             top;
+       int             bottom;
+       int             left;
+       int             right;
+} MOUSE_REGION;
+
+#define MAX_MOUSE_REGION (8)
+MOUSE_REGION   mouse_region[MAX_MOUSE_REGION];
+
+  /***********************/
+ /* Function Prototypes */
+/***********************/
+
+static void GetXPM(XpmIcon *, char **);
+static Pixel GetColor(char *);
+void RedrawWindow(void);
+void AddMouseRegion(int, int, int, int, int);
+int CheckMouseRegion(int, int);
+
+/*******************************************************************************\
+|* read_rc_file                                                                
                                                                   *|
+\*******************************************************************************/
+
+void parse_rcfile(const char *filename, rckeys *keys) {
+
+       char    *p;
+       char    temp[128];
+       char    *tokens = " :\t\n";
+       FILE    *fp;
+       int             i,key;
+
+       fp = fopen(filename, "r");
+       if (fp) {
+               while (fgets(temp, 128, fp)) {
+                       key = 0;
+                       while (key >= 0 && keys[key].label) {
+                               if ((p = strstr(temp, keys[key].label))) {
+                                       p += strlen(keys[key].label);
+                                       p += strspn(p, tokens);
+                                       if ((i = strcspn(p, "#\n"))) p[i] = 0;
+                                       free(*keys[key].var);
+                                       *keys[key].var = strdup(p);
+                                       key = -1;
+                               } else key++;
+                       }
+               }
+               fclose(fp);
+       }
+}
+
+
+/*******************************************************************************\
+|* GetXPM                                                                      
                                                                   *|
+\*******************************************************************************/
+
+static void GetXPM(XpmIcon *wmgen, char *pixmap_bytes[]) {
+
+       XWindowAttributes       attributes;
+       int                                     err;
+
+       /* For the colormap */
+       XGetWindowAttributes(display, Root, &attributes);
+
+       wmgen->attributes.valuemask |= (XpmReturnPixels | XpmReturnExtensions);
+
+       err = XpmCreatePixmapFromData(display, Root, pixmap_bytes, 
&(wmgen->pixmap),
+                                       &(wmgen->mask), &(wmgen->attributes));
+       
+       if (err != XpmSuccess) {
+               fprintf(stderr, "Not enough free colorcells.\n");
+               exit(1);
+       }
+}
+
+/*******************************************************************************\
+|* GetColor                                                                    
                                                                   *|
+\*******************************************************************************/
+
+static Pixel GetColor(char *name) {
+
+       XColor                          color;
+       XWindowAttributes       attributes;
+
+       XGetWindowAttributes(display, Root, &attributes);
+
+       color.pixel = 0;
+       if (!XParseColor(display, attributes.colormap, name, &color)) {
+               fprintf(stderr, "wm.app: can't parse %s.\n", name);
+       } else if (!XAllocColor(display, attributes.colormap, &color)) {
+               fprintf(stderr, "wm.app: can't allocate %s.\n", name);
+       }
+       return color.pixel;
+}
+
+/*******************************************************************************\
+|* flush_expose                                                                
                                                                   *|
+\*******************************************************************************/
+
+static int flush_expose(Window w) {
+
+       XEvent          dummy;
+       int                     i=0;
+
+       while (XCheckTypedWindowEvent(display, w, Expose, &dummy))
+               i++;
+
+       return i;
+}
+
+/*******************************************************************************\
+|* RedrawWindow                                                                
                                                                   *|
+\*******************************************************************************/
+
+void RedrawWindow(void) {
+       
+       flush_expose(iconwin);
+       XCopyArea(display, wmgen.pixmap, iconwin, NormalGC, 
+                               0,0, wmgen.attributes.width, 
wmgen.attributes.height, 0,0);
+       flush_expose(win);
+       XCopyArea(display, wmgen.pixmap, win, NormalGC,
+                               0,0, wmgen.attributes.width, 
wmgen.attributes.height, 0,0);
+}
+
+/*******************************************************************************\
+|* RedrawWindowXY                                                              
                                                           *|
+\*******************************************************************************/
+
+void RedrawWindowXY(int x, int y) {
+       
+       flush_expose(iconwin);
+       XCopyArea(display, wmgen.pixmap, iconwin, NormalGC, 
+                               x,y, wmgen.attributes.width, 
wmgen.attributes.height, 0,0);
+       flush_expose(win);
+       XCopyArea(display, wmgen.pixmap, win, NormalGC,
+                               x,y, wmgen.attributes.width, 
wmgen.attributes.height, 0,0);
+}
+
+/*******************************************************************************\
+|* AddMouseRegion                                                              
                                                           *|
+\*******************************************************************************/
+
+void AddMouseRegion(int index, int left, int top, int right, int bottom) {
+
+       if (index < MAX_MOUSE_REGION) {
+               mouse_region[index].enable = 1;
+               mouse_region[index].top = top;
+               mouse_region[index].left = left;
+               mouse_region[index].bottom = bottom;
+               mouse_region[index].right = right;
+       }
+}
+
+/*******************************************************************************\
+|* CheckMouseRegion                                                            
                                                           *|
+\*******************************************************************************/
+
+int CheckMouseRegion(int x, int y) {
+
+       int             i;
+       int             found;
+
+       found = 0;
+
+       for (i=0; i<MAX_MOUSE_REGION && !found; i++) {
+               if (mouse_region[i].enable &&
+                       x <= mouse_region[i].right &&
+                       x >= mouse_region[i].left &&
+                       y <= mouse_region[i].bottom &&
+                       y >= mouse_region[i].top)
+                       found = 1;
+       }
+       if (!found) return -1;
+       return (i-1);
+}
+
+/*******************************************************************************\
+|* copyXPMArea                                                                 
                                                           *|
+\*******************************************************************************/
+
+void copyXPMArea(int x, int y, int sx, int sy, int dx, int dy) {
+
+       XCopyArea(display, wmgen.pixmap, wmgen.pixmap, NormalGC, x, y, sx, sy, 
dx, dy);
+
+}
+
+/*******************************************************************************\
+|* copyXBMArea                                                                 
                                                           *|
+\*******************************************************************************/
+
+void copyXBMArea(int x, int y, int sx, int sy, int dx, int dy) {
+
+       XCopyArea(display, wmgen.mask, wmgen.pixmap, NormalGC, x, y, sx, sy, 
dx, dy);
+}
+
+
+/*******************************************************************************\
+|* setMaskXY                                                                   
                                                           *|
+\*******************************************************************************/
+
+void setMaskXY(int x, int y) {
+
+        XShapeCombineMask(display, win, ShapeBounding, x, y, pixmask, 
ShapeSet);
+        XShapeCombineMask(display, iconwin, ShapeBounding, x, y, pixmask, 
ShapeSet);
+}
+
+/*******************************************************************************\
+|* openXwindow                                                                 
                                                           *|
+\*******************************************************************************/
+void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char 
*pixmask_bits, int pixmask_width, int pixmask_height) {
+
+       unsigned int    borderwidth = 1;
+       XClassHint              classHint;
+       char                    *display_name = NULL;
+       char                    *wname = argv[0];
+       XTextProperty   name;
+
+       XGCValues               gcv;
+       unsigned long   gcm;
+
+
+       int                             dummy=0;
+       int                             i;
+
+       for (i=1; argv[i]; i++) {
+               if (!strcmp(argv[i], "-display")) 
+                       display_name = argv[i+1];
+       }
+
+       if (!(display = XOpenDisplay(display_name))) {
+               fprintf(stderr, "%s: can't open display %s\n", 
+                                               wname, 
XDisplayName(display_name));
+               exit(1);
+       }
+       screen  = DefaultScreen(display);
+       Root    = RootWindow(display, screen);
+       d_depth = DefaultDepth(display, screen);
+       x_fd    = XConnectionNumber(display);
+
+       /* Convert XPM to XImage */
+       GetXPM(&wmgen, pixmap_bytes);
+
+       /* Create a window to hold the stuff */
+       mysizehints.flags = USSize | USPosition;
+       mysizehints.x = 0;
+       mysizehints.y = 0;
+
+       back_pix = GetColor("white");
+       fore_pix = GetColor("black");
+
+       XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
+                               &mysizehints.x, 
&mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
+
+       mysizehints.width = 64;
+       mysizehints.height = 64;
+               
+       win = XCreateSimpleWindow(display, Root, mysizehints.x, mysizehints.y,
+                               mysizehints.width, mysizehints.height, 
borderwidth, fore_pix, back_pix);
+       
+       iconwin = XCreateSimpleWindow(display, win, mysizehints.x, 
mysizehints.y,
+                               mysizehints.width, mysizehints.height, 
borderwidth, fore_pix, back_pix);
+
+       /* Activate hints */
+       XSetWMNormalHints(display, win, &mysizehints);
+       classHint.res_name = wname;
+       classHint.res_class = wname;
+       XSetClassHint(display, win, &classHint);
+
+       XSelectInput(display, win, ButtonPressMask | ExposureMask | 
ButtonReleaseMask | PointerMotionMask | StructureNotifyMask);
+       XSelectInput(display, iconwin, ButtonPressMask | ExposureMask | 
ButtonReleaseMask | PointerMotionMask | StructureNotifyMask);
+
+       if (XStringListToTextProperty(&wname, 1, &name) == 0) {
+               fprintf(stderr, "%s: can't allocate window name\n", wname);
+               exit(1);
+       }
+
+       XSetWMName(display, win, &name);
+
+       /* Create GC for drawing */
+       
+       gcm = GCForeground | GCBackground | GCGraphicsExposures;
+       gcv.foreground = fore_pix;
+       gcv.background = back_pix;
+       gcv.graphics_exposures = 0;
+       NormalGC = XCreateGC(display, Root, gcm, &gcv);
+
+       /* ONLYSHAPE ON */
+
+       pixmask = XCreateBitmapFromData(display, win, pixmask_bits, 
pixmask_width, pixmask_height);
+
+       XShapeCombineMask(display, win, ShapeBounding, 0, 0, pixmask, ShapeSet);
+       XShapeCombineMask(display, iconwin, ShapeBounding, 0, 0, pixmask, 
ShapeSet);
+
+       /* ONLYSHAPE OFF */
+
+       mywmhints.initial_state = WithdrawnState;
+       mywmhints.icon_window = iconwin;
+       mywmhints.icon_x = mysizehints.x;
+       mywmhints.icon_y = mysizehints.y;
+       mywmhints.window_group = win;
+       mywmhints.flags = StateHint | IconWindowHint | IconPositionHint | 
WindowGroupHint;
+
+       XSetWMHints(display, win, &mywmhints);
+
+       XSetCommand(display, win, argv, argc);
+       XMapWindow(display, win);
+
+}
diff --git a/wmtetris/wmgeneral/wmgeneral.h b/wmtetris/wmgeneral/wmgeneral.h
new file mode 100644
index 0000000..55b37dd
--- /dev/null
+++ b/wmtetris/wmgeneral/wmgeneral.h
@@ -0,0 +1,50 @@
+#ifndef WMGENERAL_H_INCLUDED
+#define WMGENERAL_H_INCLUDED
+
+  /***********/
+ /* Defines */
+/***********/
+
+#define MAX_MOUSE_REGION (8)
+
+  /************/
+ /* Typedefs */
+/************/
+
+typedef struct _rckeys rckeys;
+
+struct _rckeys {
+       const char      *label;
+       char            **var;
+};
+
+typedef struct {
+       Pixmap                  pixmap;
+       Pixmap                  mask;
+       XpmAttributes   attributes;
+} XpmIcon;
+
+  /*******************/
+ /* Global variable */
+/*******************/
+
+Display                *display;
+
+  /***********************/
+ /* Function Prototypes */
+/***********************/
+
+void AddMouseRegion(int index, int left, int top, int right, int bottom);
+int CheckMouseRegion(int x, int y);
+
+void openXwindow(int argc, char *argv[], char **, char *, int, int);
+void RedrawWindow(void);
+void RedrawWindowXY(int x, int y);
+
+void copyXPMArea(int, int, int, int, int, int);
+void copyXBMArea(int, int, int, int, int, int);
+void setMaskXY(int, int);
+
+void parse_rcfile(const char *, rckeys *);
+
+#endif
diff --git a/wmtetris/wmtetris/Makefile b/wmtetris/wmtetris/Makefile
new file mode 100644
index 0000000..0594796
--- /dev/null
+++ b/wmtetris/wmtetris/Makefile
@@ -0,0 +1,16 @@
+LIBDIR = -L/usr/X11R6/lib
+LIBS   = -lXpm -lXext
+OBJS   =  wmtetris.o \
+         ../wmgeneral/wmgeneral.o \
+
+wmtetris: $(OBJS)
+       cc -O -o wmtetris $^ $(LIBDIR) $(LIBS)
+
+%.o:   %.c
+       cc -O -c -o $@ $<
+
+clean:
+       for i in $(OBJS) ; do \
+               rm -f $$i;\
+       done
+       rm -f wmtetris
diff --git a/wmtetris/wmtetris/wmmon.c b/wmtetris/wmtetris/wmmon.c
new file mode 100644
index 0000000..da5242f
--- /dev/null
+++ b/wmtetris/wmtetris/wmmon.c
@@ -0,0 +1,739 @@
+/*
+       Code based on wmppp/wmifs
+
+       [Orig WMPPP comments]
+
+       This code was mainly put together by looking at the
+       following programs:
+
+       asclock
+               A neat piece of equip, used to display the date
+               and time on the screen.
+               Comes with every AfterStep installation.
+
+               Source used:
+                       How do I create a not so solid window?
+                       How do I open a window?
+                       How do I use pixmaps?
+       
+       ------------------------------------------------------------
+
+       Authors: Martijn Pieterse (piete...@xs4all.nl)
+                Antoine Nulle (w...@xs4all.nl)
+
+       This program is distributed under the GPL license.
+       (as were asclock and pppstats)
+
+       ----
+       Changes:
+       ----
+
+       18/05/1998 (Antoine Nulle, w...@xs4all.nl)
+               * MEM/SWAP/UPTIME only updated when visible
+               * Using global file descriptors to reduce file
+                 system overhead, both updates are based on a diff 
+                 supplied by Dave Harden (dhar...@wisewire.com) 
+       15/05/1998 (Antoine Nulle, w...@xs4all.nl)
+               * Fixed memory overflow in the MEM gaugebar
+               * MEM gauge displays now real used mem
+                 (buffered + cached mem removed)
+       14/05/1998 (Antoine Nulle, w...@xs4all.nl)
+               * Added -i & -s kludge for selecting startupmode,
+                 tijno, don't hate me for this :)
+       12/05/1998 (Antoine Nulle, w...@xs4all.nl)
+               * Finetuned master-xpm, tijno don't worry, no 
+                 reprogramming needed this time ;-)
+       07/05/1998 (Martijn Pieterse, piete...@xs4all.nl)
+               * Added disk i/o
+       03/05/1998 (Antoine Nulle, w...@xs4all.nl)
+               * Added new master-xpm which contains the gfx
+                 for the upcoming SysInfo part :P
+       02/05/1998 (Martijn Pieterse, piete...@xs4all.nl)
+               * Removed a lot of code, that was put in wmgeneral
+       23/04/1998 (Martijn Pieterse, piete...@xs4all.nl)
+               * Added zombie destroying code (aka wait :) )
+       18/04/1998 (Martijn Pieterse, piete...@xs4all.nl)
+               * Added CPU-on-screen.
+               * Added -display command line
+       15/04/1998 (Martijn Pieterse, piete...@xs4all.nl)
+               * Fixed a bug in the stats routine
+                 (Top 3 bright pixels were not shown when 100% loaded)
+               * Changed xpm to a no-title one.
+                 This included the reprogramming of all positions.
+                 warpstah, i hate you! ;)
+       05/04/1998 (Martijn Pieterse, piete...@xs4all.nl)
+               * First Working Version
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+#include <string.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include <sys/wait.h>
+#include <sys/param.h>
+#include <sys/types.h>
+
+#include <X11/Xlib.h>
+#include <X11/xpm.h>
+#include <X11/extensions/shape.h>
+
+#include "../wmgeneral/wmgeneral.h"
+#include "../wmgeneral/misc.h"
+
+#include "wmmon-master.xpm"
+#include "wmmon-mask.xbm"
+
+  /***********/
+ /* Defines */
+/***********/
+
+#define LEFT_ACTION (NULL)
+#define RIGHT_ACTION (NULL)
+#define MIDDLE_ACTION (NULL)
+
+#define WMMON_VERSION "1.0.b2"
+
+  /********************/
+ /* Global Variables */
+/********************/
+
+char   *ProgName;
+int    stat_current = 0; /* now global */
+FILE   *fp_meminfo;
+FILE   *fp_stat;
+FILE   *fp_loadavg;
+
+/* functions */
+void usage(void);
+void printversion(void);
+void DrawStats(int *, int, int, int, int);
+void DrawStats_io(int *, int, int, int, int);
+
+void wmmon_routine(int, char **);
+
+void main(int argc, char *argv[]) {
+
+       int             i;
+       
+
+       /* Parse Command Line */
+
+       ProgName = argv[0];
+       if (strlen(ProgName) >= 5)
+               ProgName += (strlen(ProgName) - 5);
+       
+       for (i=1; i<argc; i++) {
+               char *arg = argv[i];
+
+               if (*arg=='-') {
+                       switch (arg[1]) {
+                       case 'd' :
+                               if (strcmp(arg+1, "display")) {
+                                       usage();
+                                       exit(1);
+                               }
+                               break;
+                       case 'v' :
+                               printversion();
+                               exit(0);
+                               break;
+                       case 'i' :
+                               stat_current = 1;
+                               break;
+                       case 's' :
+                               stat_current = 2;
+                               break;
+                       default:
+                               usage();
+                               exit(0);
+                               break;
+                       }
+               }
+       }
+
+       wmmon_routine(argc, argv);
+}
+
+/*******************************************************************************\
+|* wmmon_routine                                                               
                                                           *|
+\*******************************************************************************/
+
+typedef struct {
+
+       char    name[5];                        /* "cpu0..cpuz", eventually.. 
:) */
+       int             his[55];
+       int             hisaddcnt;
+       long    rt_stat;
+       long    statlast;
+       long    rt_idle;
+       long    idlelast;
+       
+} stat_dev;
+
+#define MAX_STAT_DEVICES (4)
+stat_dev       stat_device[MAX_STAT_DEVICES];
+
+char           *left_action;
+char           *right_action;
+char           *middle_action;
+
+
+int checksysdevs(void);
+void get_statistics(char *, long *, long *, long *);
+void DrawActive(char *);
+
+void update_stat_cpu(stat_dev *);
+void update_stat_io(stat_dev *);
+void update_stat_mem(stat_dev *st, stat_dev *st2);
+void update_stat_swp(stat_dev *);
+
+void wmmon_routine(int argc, char **argv) {
+
+       rckeys          wmmon_keys[] = {
+               { "left", &left_action },
+               { "right", &right_action },
+               { "middle", &middle_action },
+               { NULL, NULL }
+       };
+
+       unsigned long           i,j;
+       long            k;
+       XEvent          Event;
+       int                     but_stat = -1;
+
+       int                     stat_online;
+
+       long            starttime;
+       long            curtime;
+       long            nexttime;
+
+       long            istat;
+       long            idle;
+
+       FILE            *fp;
+       char            temp[128];
+       char            *p;
+
+       int                     xpm_X = 0, xpm_Y = 0;
+
+       long            online_time = 0;
+       long            ref_time = 0;
+       long            cnt_time;
+
+
+       fp = fopen("/proc/uptime", "r");
+       fp_meminfo = fopen("/proc/meminfo", "r");
+       fp_loadavg = fopen("/proc/loadavg", "r");
+       fp_stat = fopen("/proc/stat", "r");
+
+       if (fp) {
+               fscanf(fp, "%ld", &online_time);
+               ref_time = time(0);
+               fclose(fp);
+       }
+
+       for (i=0; i<MAX_STAT_DEVICES; i++) {
+               for (j=0; j<55; j++) {
+                       stat_device[i].his[j] = 0;
+               }
+               stat_device[i].hisaddcnt = 0;
+       }
+
+       if (LEFT_ACTION) left_action = strdup(LEFT_ACTION);
+       if (RIGHT_ACTION) right_action = strdup(RIGHT_ACTION);
+       if (MIDDLE_ACTION) middle_action = strdup(MIDDLE_ACTION);
+
+       strcpy(temp, "/etc/wmmonrc");
+       parse_rcfile(temp, wmmon_keys);
+
+       p = getenv("HOME");
+       strcpy(temp, p);
+       strcat(temp, "/.wmmonrc");
+       parse_rcfile(temp, wmmon_keys);
+       
+       strcpy(temp, "/etc/wmmonrc.fixed");
+       parse_rcfile(temp, wmmon_keys);
+
+       stat_online = checksysdevs();
+
+
+       openXwindow(argc, argv, wmmon_master_xpm, wmmon_mask_bits, 
wmmon_mask_width, wmmon_mask_height);
+
+       /* add mouse region */
+       AddMouseRegion(0, 12, 13, 58, 57);
+       AddMouseRegion(1, 5, 5, 24, 14);
+
+       starttime = time(0);
+       nexttime = starttime + 10;
+
+       for (i=0; i<stat_online; i++) {
+               get_statistics(stat_device[i].name, &k, &istat, &idle);
+               stat_device[i].statlast = istat;
+               stat_device[i].idlelast = idle;
+       }
+       if (stat_current == 0) DrawStats(stat_device[stat_current].his, 54, 40, 
5, 58);
+       if (stat_current == 1) {
+               DrawStats_io(stat_device[stat_current].his, 54, 40, 5, 58);
+       }
+       if (stat_current == 2) {
+               xpm_X = 64;
+               setMaskXY(-64, 0);
+       } else {
+               xpm_X = 0;
+               setMaskXY(0, 0);
+       }
+       DrawActive(stat_device[stat_current].name);
+
+       while (1) {
+               curtime = time(0);
+
+               waitpid(0, NULL, WNOHANG);
+
+
+               update_stat_cpu(&stat_device[0]);
+               update_stat_io(&stat_device[1]);
+
+               if(stat_current == 2) {
+                       update_stat_mem(&stat_device[2], &stat_device[3]);
+//                     update_stat_swp(&stat_device[3]);
+               }
+
+               if (stat_current < 2) {
+                       i = stat_current;
+               
+                       /* Load ding is 45 pixels hoog */
+                       copyXPMArea(0, 64, 32, 12, 28, 4);
+
+                       j = (stat_device[i].rt_stat + stat_device[i].rt_idle);
+                       if (j != 0) {
+                               j = (stat_device[i].rt_stat * 100) / j;
+                       }
+                       j = j * 0.32;
+                       if (j > 32) j = 32;
+                       copyXPMArea(32, 64, j, 12, 28, 4);
+               } else {
+                       /* Nu zal ie wel 3 zijn. */
+
+                       copyXPMArea(0, 64, 32, 12, 28+64, 4);
+                       copyXPMArea(0, 64, 32, 12, 28+64, 18);
+
+                       j = stat_device[2].rt_idle;
+                       if (j != 0) {
+                               j = (stat_device[2].rt_stat * 100) / j;
+                       }
+                       j = j * 0.32;
+                       if (j > 32) j = 32;
+                       copyXPMArea(32, 64, j, 12, 28+64, 4);
+                       /*---------------------           ------------------*/
+                       j = stat_device[3].rt_idle;
+                       if (j != 0) {
+                               j = (stat_device[3].rt_stat * 100) / j;
+                       }
+                       j = j * 0.32;
+                       if (j > 32) j = 32;
+                       copyXPMArea(32, 64, j, 12, 28+64, 18);
+
+                       /*----------- online tijd neerzetten! ----------*/
+                       
+                       cnt_time = time(0) - ref_time + online_time;
+
+                       /* cnt_time = uptime in seconden */
+                       /*
+                               secs = 108,47
+                               mins = 89,47
+                               uren = 70,47
+                               digits = 40,78, 6breed, 9hoog
+                       */
+                       i = cnt_time % 60;
+                       cnt_time /= 60;
+                       copyXPMArea(40 + (i % 10)*7, 78, 6, 9, 115, 47);
+                       copyXPMArea(40 + (i / 10)*7, 78, 6, 9, 108, 47);
+
+                       i = cnt_time % 60;
+                       cnt_time /= 60;
+                       copyXPMArea(40 + (i % 10)*7, 78, 6, 9, 96, 47);
+                       copyXPMArea(40 + (i / 10)*7, 78, 6, 9, 89, 47);
+
+                       i = cnt_time % 24;
+                       cnt_time /= 24;
+                       copyXPMArea(40 + (i % 10)*7, 78, 6, 9, 77, 47);
+                       copyXPMArea(40 + (i / 10)*7, 78, 6, 9, 70, 47);
+
+                       /* De rest is dagen!  5x7*/
+                       
+                       i = cnt_time;
+                       copyXPMArea(66 + (i % 10)*6, 66, 5, 7, 88, 35);
+                       i /= 10;
+                       copyXPMArea(66 + (i % 10)*6, 66, 5, 7, 82, 35);
+                       i /= 10;
+                       copyXPMArea(66 + (i % 10)*6, 66, 5, 7, 76, 35);
+                       i /= 10;
+                       copyXPMArea(66 + (i % 10)*6, 66, 5, 7, 70, 35);
+               }
+
+               if (curtime >= nexttime) {
+                       nexttime+=10;
+
+                       for (i=0; i<stat_online; i++) {
+                               if (stat_device[i].his[54])
+                                       stat_device[i].his[54] /= 
stat_device[i].hisaddcnt;
+
+                               for (j=1; j<55; j++) {
+                                       stat_device[i].his[j-1] = 
stat_device[i].his[j];
+                               }
+
+                               if (i == stat_current) {
+                                       if (i == 0) 
DrawStats(stat_device[i].his, 54, 40, 5, 58);
+                                       if (i == 1) 
DrawStats_io(stat_device[i].his, 54, 40, 5, 58);
+                               }
+                               stat_device[i].his[54] = 0;
+                               stat_device[i].hisaddcnt = 0;
+                               
+                       }
+               }
+               RedrawWindowXY(xpm_X, xpm_Y);
+       
+               while (XPending(display)) {
+                       XNextEvent(display, &Event);
+                       switch (Event.type) {
+                       case Expose:
+                               RedrawWindowXY(xpm_X, xpm_Y);
+                               break;
+                       case DestroyNotify:
+                               XCloseDisplay(display);
+                               exit(0);
+                               break;
+                       case ButtonPress:
+                               but_stat = CheckMouseRegion(Event.xbutton.x, 
Event.xbutton.y);
+                               break;
+                       case ButtonRelease:
+                               i = CheckMouseRegion(Event.xbutton.x, 
Event.xbutton.y);
+                               if (but_stat == i && but_stat >= 0) {
+                                       switch (but_stat) {
+                                       case 0:
+                                               switch (Event.xbutton.button) {
+                                               case 1:
+                                                       if (left_action)
+                                                               
execCommand(left_action);
+                                                       break;
+                                               case 2:
+                                                       if (middle_action)
+                                                               
execCommand(middle_action);
+                                                       break;
+                                               case 3:
+                                                       if (right_action)
+                                                               
execCommand(right_action);
+                                                       break;
+                                               }
+                                       case 1:
+                                               stat_current++;
+                                               printf("current stat is :%d\n", 
stat_current);
+                                               if (stat_current == stat_online)
+                                                       stat_current = 0;
+
+                                               
DrawActive(stat_device[stat_current].name);
+                                               if (stat_current == 0) 
DrawStats(stat_device[stat_current].his, 54, 40, 5, 58);
+                                               if (stat_current == 1) {
+                                                       
DrawStats_io(stat_device[stat_current].his, 54, 40, 5, 58);
+                                               }
+                                               if (stat_current == 2) {
+                                                       xpm_X = 64;
+                                                       setMaskXY(-64, 0);
+                                               } else {
+                                                       xpm_X = 0;
+                                                       setMaskXY(0, 0);
+                                               }
+                                               RedrawWindowXY(xpm_X, xpm_Y);
+                                               break;
+                                       }
+                               }
+                               break;
+                       }
+               }
+
+               usleep( stat_current == 0 ? 100000L : 200000L);
+       }
+}
+
+void update_stat_cpu(stat_dev *st) {
+
+       long    k, istat, idle;
+
+       get_statistics(st->name, &k, &istat, &idle);
+
+       st->rt_idle = idle - st->idlelast;
+       st->idlelast = idle;
+
+       st->rt_stat = istat - st->statlast;
+       st->statlast = istat;
+
+       st->his[54] += k;
+       st->hisaddcnt += 1;
+}
+
+void update_stat_io(stat_dev *st) {
+
+       long                    j, k, istat, idle;
+       static long             maxdiskio = 0;
+
+       get_statistics(st->name, &k, &istat, &idle);
+
+       st->rt_idle = idle - st->idlelast;
+       st->idlelast = idle;
+
+       st->rt_stat = istat - st->statlast;
+       st->statlast = istat;
+
+       j = st->rt_stat;
+       if (maxdiskio < j) {
+               maxdiskio = j;
+       }
+       st->rt_idle = maxdiskio - j;
+
+       st->his[54] += st->rt_stat;
+       st->hisaddcnt += 1;
+}
+
+void update_stat_mem(stat_dev *st, stat_dev *st2) {
+
+       char    temp[128];
+       unsigned long free, shared, buffers, cached;
+
+       freopen("/proc/meminfo", "r", fp_meminfo);
+       while (fgets(temp, 128, fp_meminfo)) {
+               if (strstr(temp, "Mem:")) {
+                       sscanf(temp, "Mem: %ld %ld %ld %ld %ld %ld",
+                              &st->rt_idle, &st->rt_stat,
+                              &free, &shared, &buffers, &cached);
+                       st->rt_idle >>= 10;
+                       st->rt_stat -= buffers+cached;
+                       st->rt_stat >>= 10;
+//                     break;
+               }
+               if (strstr(temp, "Swap:")) {
+                       sscanf(temp, "Swap: %ld %ld", &st2->rt_idle, 
&st2->rt_stat);
+                       st2->rt_idle >>= 10;
+                       st2->rt_stat >>= 10;
+                       break;
+               }
+       }
+}
+
+void update_stat_swp(stat_dev *st) {
+
+       char    temp[128];
+
+       fseek(fp_meminfo, 0, SEEK_SET);
+       while (fgets(temp, 128, fp_meminfo)) {
+               if (strstr(temp, "Swap:")) {
+                       sscanf(temp, "Swap: %ld %ld", &st->rt_idle, 
&st->rt_stat);
+                       st->rt_idle >>= 10;
+                       st->rt_stat >>= 10;
+                       break;
+               }
+       }
+
+}
+
+/*******************************************************************************\
+|* get_statistics                                                              
                                                           *|
+\*******************************************************************************/
+
+void get_statistics(char *devname, long *is, long *ds, long *idle) {
+
+       int     i;
+       char    temp[128];
+       char    *p;
+       char    *tokens = " \t\n";
+       float   f;
+       long    maxdiskio=0;
+
+       *is = 0;
+       *ds = 0;
+       *idle = 0;
+
+       if (!strncmp(devname, "cpu", 3)) {
+               fseek(fp_stat, 0, SEEK_SET);
+               while (fgets(temp, 128, fp_stat)) {
+                       if (strstr(temp, "cpu")) {
+                               p = strtok(temp, tokens);
+                               /* 1..3, 4 == idle, we don't want idle! */
+                               for (i=0; i<3; i++) {
+                                       p = strtok(NULL, tokens);
+                                       *ds += atol(p);
+                               }
+                               p = strtok(NULL, tokens);
+                               *idle = atol(p);
+                       }
+               }
+               fp_loadavg = freopen("/proc/loadavg", "r", fp_loadavg);
+               fscanf(fp_loadavg, "%f", &f);
+               *is = (long) (100 * f);
+       }
+
+       if (!strncmp(devname, "i/o", 3)) {
+
+               fseek(fp_stat, 0, SEEK_SET);
+               while (fgets(temp, 128, fp_stat)) {
+                       if (strstr(temp, "disk_rio") || strstr(temp, 
"disk_wio")) {
+                               p = strtok(temp, tokens);
+                               /* 1..4 */
+                               for (i=0; i<4; i++) {
+                                       p = strtok(NULL, tokens);
+                                       *ds += atol(p);
+                               }
+                       }
+               }
+               if (*ds > maxdiskio) maxdiskio = *ds;
+       }
+}
+
+/*******************************************************************************\
+|* checksysdevs                                                                
                                                                   *|
+\*******************************************************************************/
+
+int checksysdevs(void) {
+
+       strcpy(stat_device[0].name, "cpu0");
+       strcpy(stat_device[1].name, "i/o");
+       strcpy(stat_device[2].name, "sys");
+
+       return 3;
+}
+
+
+/*******************************************************************************\
+|* void DrawActive(char *)                                                     
                                                   *|
+\*******************************************************************************/
+
+void DrawActive(char *name) {
+
+       /* Alles op X,77
+          CPU: 0
+          I/O: 21
+
+          20 Breed, 10 hoog
+          Destinatie: 5,5
+       */
+
+       if (name[0] == 'c') {
+               copyXPMArea(0, 77, 19, 10, 5, 5);
+       } else if (name[0] == 'i') {
+               copyXPMArea(19, 77, 19, 10, 5, 5);
+       }
+
+}
+
+/*******************************************************************************\
+|* DrawStats                                                                   
*|
+\*******************************************************************************/
+
+void DrawStats(int *his, int num, int size, int x_left, int y_bottom) {
+
+       int     pixels_per_byte;
+       int     j,k;
+       int     *p;
+       int             d;
+
+       pixels_per_byte = 100;
+       p = his;
+       for (j=0; j<num; j++) {
+               if (p[0] > pixels_per_byte)
+                       pixels_per_byte += 100;
+               p += 1;
+       }
+
+       p = his;
+
+       for (k=0; k<num; k++) {
+               d = (1.0 * p[0] / pixels_per_byte) * size;
+
+               for (j=0; j<size; j++) {
+               
+                       if (j < d - 3)
+                               copyXPMArea(2, 88, 1, 1, k+x_left, y_bottom-j);
+                       else if (j < d)
+                               copyXPMArea(2, 89, 1, 1, k+x_left, y_bottom-j);
+                       else
+                               copyXPMArea(2, 90, 1, 1, k+x_left, y_bottom-j);
+               }
+               p += 1;
+       }
+
+       /* Nu horizontaal op 100/200/300 etc lijntje trekken! */
+       for (j = pixels_per_byte-100; j > 0; j-=100) {
+               for (k=0; k<num; k++) {
+                       d = (40.0 / pixels_per_byte) * j;
+
+                       copyXPMArea(2, 91, 1, 1, k+x_left, y_bottom-d);
+               }
+       }
+}
+
+/*******************************************************************************\
+|* DrawStats_io                                                                
*|
+\*******************************************************************************/
+
+void DrawStats_io(int *his, int num, int size, int x_left, int y_bottom) {
+
+       float   pixels_per_byte;
+       int     j,k;
+       int     *p;
+       int             d;
+
+       static int      global_io_scale = 1;
+
+       p = his;
+       for (j=0; j<num; j++) {
+               if (p[j] > global_io_scale) global_io_scale = p[j];
+       }
+
+       pixels_per_byte = 1.0 * global_io_scale / size;
+       if (pixels_per_byte == 0) pixels_per_byte = 1;
+
+       for (k=0; k<num; k++) {
+               d = (1.0 * p[0] / pixels_per_byte);
+
+               for (j=0; j<size; j++) {
+               
+                       if (j < d - 3)
+                               copyXPMArea(2, 88, 1, 1, k+x_left, y_bottom-j);
+                       else if (j < d)
+                               copyXPMArea(2, 89, 1, 1, k+x_left, y_bottom-j);
+                       else
+                               copyXPMArea(2, 90, 1, 1, k+x_left, y_bottom-j);
+               }
+               p += 1;
+       }
+}
+
+
+/*******************************************************************************\
+|* usage                                                                       
                                                                   *|
+\*******************************************************************************/
+
+void usage(void) {
+
+       fprintf(stderr, "\nwmmon - programming: tijno, (de)bugging & design 
warp, webhosting: bobby\n\n");
+       fprintf(stderr, "usage:\n");
+       fprintf(stderr, "\t-display <display name>\n");
+       fprintf(stderr, "\t-h\tthis screen\n");
+       fprintf(stderr, "\t-v\tprint the version number\n");
+       fprintf(stderr, "\t-i\tstartup in DiskIO mode\n");
+       fprintf(stderr, "\t-s\tstartup in SysInfo mode\n");
+       fprintf(stderr, "\n");
+}
+
+/*******************************************************************************\
+|* printversion                                                                
                                                                   *|
+\*******************************************************************************/
+
+void printversion(void) {
+
+       if (!strcmp(ProgName, "wmmon")) {
+               fprintf(stderr, "%s\n", WMMON_VERSION);
+       }
+}
diff --git a/wmtetris/wmtetris/wmtetris-mask.xbm 
b/wmtetris/wmtetris/wmtetris-mask.xbm
new file mode 100644
index 0000000..43678dc
--- /dev/null
+++ b/wmtetris/wmtetris/wmtetris-mask.xbm
@@ -0,0 +1,46 @@
+#define wmtetris_mask_width 64
+#define wmtetris_mask_height 64
+static unsigned char wmtetris_mask_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/wmtetris/wmtetris/wmtetris.c b/wmtetris/wmtetris/wmtetris.c
new file mode 100644
index 0000000..fc8fff5
--- /dev/null
+++ b/wmtetris/wmtetris/wmtetris.c
@@ -0,0 +1,302 @@
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <X11/Xlib.h>
+#include <X11/xpm.h>
+
+#include "../wmgeneral/wmgeneral.h"
+
+#include "wmtetris.xpm"
+#include "wmtetris-mask.xbm"
+
+#define TEMPORAL_RESOLUTION 10000
+#define INITIAL_DELAY 250000
+#define FAST_MODE_DELAY 30000
+#define DELAY_INCREMENT 20000
+
+#define BLOCK_SIZE 3
+#define BOARD_POS_X 4
+#define BOARD_POS_Y 6
+#define BOARD_WIDTH 13
+#define BOARD_HEIGHT 18
+#define NEXT_POS_X 46
+#define NEXT_POS_Y 7
+
+#define BUTTONC 6
+#define BUTTON_NONE 0
+#define BUTTON_ROTATE_LEFT 1
+#define BUTTON_ROTATE_RIGHT 2
+#define BUTTON_MOVE_LEFT 3
+#define BUTTON_MOVE_RIGHT 4
+#define BUTTON_MOVE_DOWN 5
+
+static int buttons[6][4] = {
+       { 0,  0, 64, 64},
+       {43, 31, 51, 40},
+       {52, 31, 60, 40},
+       {43, 41, 51, 50},
+       {52, 41, 60, 50},
+       {43, 51, 60, 60}
+};
+
+static int initial_figures[7][4][2] = {
+       { {0, 1}, {1, 1}, {2, 1}, {3, 1} },
+       { {0, 1}, {1, 1}, {2, 1}, {2, 2} },
+       { {0, 2}, {1, 2}, {2, 2}, {2, 1} },
+       { {0, 2}, {1, 1}, {1, 2}, {2, 2} },
+       { {0, 2}, {1, 2}, {1, 1}, {2, 1} },
+       { {0, 1}, {1, 1}, {1, 2}, {2, 2} },
+       { {1, 1}, {2, 1}, {1, 2}, {2, 2} }
+};
+
+unsigned char board[BOARD_WIDTH][BOARD_HEIGHT];
+int score=0;
+
+int which_button(int x, int y);
+int rotate_figure(int direction, int figure[4][2], int fig_x, int fig_y);
+void draw_figure(int figure[4][2], int type, int x, int y);
+void draw_next_figure(int figure[4][2], int type);
+void general_draw_figure(int base_x, int base_y, int figure[4][2],
+                                                int type, int x, int y);
+void full_refresh();
+int check_figure_position(int fig_x, int fig_y, int figure[4][2]);
+
+int main(int argc, char *argv[]) {
+       int i, x, y, step, input, fast_mode, progress,
+               fig_x, fig_y, new_figure=1, figure_type, next_figure_type;
+       int figure[4][2] = { {0, 0}, {0, 0}, {0, 0}, {0, 0} },
+               next_figure[4][2] = { {0, 0}, {0, 0}, {0, 0}, {0, 0} };
+       unsigned long delay = INITIAL_DELAY, start_time;
+       XEvent event;
+
+       srand(time());
+
+       for (y = 0; y < BOARD_HEIGHT; y++)
+               for (x = 0; x < BOARD_WIDTH; x++)
+                       board[x][y] = 0;
+
+       openXwindow(argc, argv, wmtetris_xpm, wmtetris_mask_bits,
+                               wmtetris_mask_width, wmtetris_mask_height);
+       copyXPMArea(64, 0, 64, 64, 0, 0);
+       RedrawWindow();
+
+       fast_mode=0;
+       figure_type = random() % 7;
+       for (i = 0; i < 4; i++) {
+               figure[i][0] = initial_figures[figure_type][i][0];
+               figure[i][1] = initial_figures[figure_type][i][1];
+       }
+       next_figure_type = random() % 7;
+       for (i = 0; i < 4; i++) {
+               next_figure[i][0] = initial_figures[next_figure_type][i][0];
+               next_figure[i][1] = initial_figures[next_figure_type][i][1];
+       }
+       draw_next_figure(next_figure, next_figure_type);
+       fig_x = BOARD_WIDTH / 2 - 1;
+       fig_y = 0;
+       draw_figure(figure, figure_type, fig_x, fig_y);
+       RedrawWindow();
+
+       while (1) {
+               if (check_figure_position(fig_x, fig_y + 1, figure)) {
+                       new_figure = 0;
+                       draw_figure(figure, -1, fig_x, fig_y);
+                       fig_y++;
+               } else {
+                       new_figure = 1;
+                       for (i = 0; i < 4; i++) {
+                               board [fig_x + figure[i][0]] [fig_y + 
figure[i][1]] = figure_type + 1;
+                       }
+
+                       progress=0;
+                       for (y = 0; y < BOARD_HEIGHT; y++) {
+                               for (x = 0; x < BOARD_WIDTH; x++)
+                                       if (!board[x][y])
+                                               break;
+                               if (x == BOARD_WIDTH) {
+                                       for (i = y; i > 0; i--)
+                                               for (x = 0; x < BOARD_WIDTH; 
x++)
+                                                       board[x][i] = 
board[x][i-1];
+                                       progress++;
+                               }
+                       }
+                       score += progress*progress;
+
+                       full_refresh();
+
+                       i = score;
+                       for (x = 3; x >= 0; x--) {
+                               copyXPMArea(4 * (i % 10), 100, 3, 5, 44 + 4*x, 
24);
+                               i /= 10;
+                       }
+
+                       figure_type = next_figure_type;
+                       next_figure_type = random() % 7;
+                       for (i = 0; i < 4; i++) {
+                               figure[i][0] = next_figure[i][0];
+                               figure[i][1] = next_figure[i][1];
+                               next_figure[i][0] = 
initial_figures[next_figure_type][i][0];
+                               next_figure[i][1] = 
initial_figures[next_figure_type][i][1];
+                       }
+                       draw_next_figure(next_figure, next_figure_type);
+                       fig_x = BOARD_WIDTH / 2 - 1;
+                       fig_y = 0;
+               }
+               draw_figure(figure, figure_type, fig_x, fig_y);
+               RedrawWindow();
+
+               if (new_figure) {
+                       if (!check_figure_position(fig_x, fig_y, figure)) {
+                               copyXPMArea(64, 64, 23, 15, 12, 24);
+                               RedrawWindow();
+                               while (1) {
+                                       XNextEvent(display, &event);
+                                       if (event.type == ButtonPress)
+                                               break;
+                                       if (event.type == Expose)
+                                               RedrawWindow();
+                               }
+                               exit(0);
+                       }
+               }
+
+               for (step = 0; step < (fast_mode ? FAST_MODE_DELAY / 
TEMPORAL_RESOLUTION : INITIAL_DELAY / TEMPORAL_RESOLUTION); step++) {
+                       while (XPending(display)) {
+                               input = 0;
+
+                               XNextEvent(display, &event);
+                               switch (event.type) {
+                               case ButtonRelease:
+                                       fast_mode = 0;
+                                       break;
+                               case ButtonPress:
+                                       if (!(input =
+                                                 which_button(event.xbutton.x, 
event.xbutton.y))) {
+/*
+                                               switch (event.xbutton.button) {
+                                               case 1:
+                                                       input = 
BUTTON_MOVE_LEFT;
+                                                       break;
+                                               case 3:
+                                                       input = 
BUTTON_MOVE_RIGHT;
+                                                       break;
+                                               case 2:
+                                                       input = 
BUTTON_ROTATE_RIGHT;
+                                                       break;
+                                               }
+*/
+                                       }
+                               }
+                               if (input) {
+                                       draw_figure(figure, -1, fig_x, fig_y);
+                                       switch (input) {
+                                       case BUTTON_ROTATE_LEFT:
+                                               rotate_figure(0, figure, fig_x, 
fig_y);
+                                               break;
+                                       case BUTTON_ROTATE_RIGHT:
+                                               rotate_figure(1, figure, fig_x, 
fig_y);
+                                               break;
+                                       case BUTTON_MOVE_LEFT:
+                                               if (check_figure_position(fig_x 
- 1, fig_y, figure))
+                                                       fig_x--;
+                                               break;
+                                       case BUTTON_MOVE_RIGHT:
+                                               if (check_figure_position(fig_x 
+ 1, fig_y, figure))
+                                                       fig_x++;
+                                               break;
+                                       case BUTTON_MOVE_DOWN:
+                                               fast_mode = 1;
+                                               break;
+                                       }
+                                       draw_figure(figure, figure_type, fig_x, 
fig_y);
+                                       RedrawWindow();
+                               }
+                       }
+                       usleep(TEMPORAL_RESOLUTION);
+               }
+       }
+}
+
+int which_button(int x, int y) {
+       int i;
+       
+       for (i = BUTTONC - 1; i >= 0; i--) {
+               if ((buttons[i][0] <= x && x < buttons[i][2]) &&
+                       (buttons[i][1] <= y && y < buttons[i][3]))
+                break;
+       }
+       return i;
+}
+
+int rotate_figure(int direction, int figure[4][2], int fig_x, int fig_y) {
+       int i, temp[4][2];
+
+       for (i = 0; i < 4; i++) {
+               temp[i][0] = direction ? 3 - figure[i][1] :     figure[i][1];
+               temp[i][1] = direction ?     figure[i][0] : 3 - figure[i][0];
+       }
+       if (check_figure_position(fig_x, fig_y, temp)) {
+               for (i = 0; i < 4; i++) {
+                       figure[i][0] = temp[i][0];
+                       figure[i][1] = temp[i][1];
+               }
+               return 1;
+       } else {
+               return 0;
+       }
+}
+
+void draw_figure(int figure[4][2], int type, int x, int y) {
+       general_draw_figure(BOARD_POS_X, BOARD_POS_Y, figure, type, x, y);
+}
+
+void draw_next_figure(int figure[4][2], int type) {
+       copyXPMArea(64 + NEXT_POS_X, NEXT_POS_Y, BLOCK_SIZE * 4, BLOCK_SIZE * 4,
+                               NEXT_POS_X, NEXT_POS_Y);
+       general_draw_figure(NEXT_POS_X, NEXT_POS_Y, figure, type, 0, 0);
+}
+
+void general_draw_figure(int base_x, int base_y, int figure[4][2],
+                                                int type, int x, int y)
+{
+       int i, block_x, block_y;
+
+       for (i = 0; i < 4; i++) {
+               block_x = base_x + BLOCK_SIZE * (x + figure[i][0]);
+               block_y = base_y + BLOCK_SIZE * (y + figure[i][1]);
+               if (type == -1)
+                       copyXPMArea(64 + block_x, block_y, BLOCK_SIZE, 
BLOCK_SIZE, block_x, block_y);
+               else
+                       copyXPMArea(0, 64 + BLOCK_SIZE * type, BLOCK_SIZE, 
BLOCK_SIZE, block_x, block_y);
+       }
+}
+
+void full_refresh() {
+       int x, y;
+
+       for (y = 0; y < BOARD_HEIGHT; y++)
+               for (x = 0; x < BOARD_WIDTH; x++)
+                       if (board[x][y])
+                               copyXPMArea(0, 64 + BLOCK_SIZE * (board[x][y] - 
1), BLOCK_SIZE, BLOCK_SIZE,
+                                                       BOARD_POS_X + 
BLOCK_SIZE * x, BOARD_POS_Y + BLOCK_SIZE * y);
+                       else
+                               copyXPMArea(64 + BOARD_POS_X + BLOCK_SIZE * x, 
BOARD_POS_Y + BLOCK_SIZE * y, 
+                                                       BLOCK_SIZE, BLOCK_SIZE, 
+                                                       BOARD_POS_X + 
BLOCK_SIZE * x, BOARD_POS_Y + BLOCK_SIZE * y);
+}
+
+int check_figure_position(int fig_x, int fig_y, int figure[4][2]) {
+       int i, x, y;
+
+       for (i = 0; i < 4; i++) {
+               x = fig_x + figure[i][0];
+               y = fig_y + figure[i][1];
+               if ((x < 0) || (x >= BOARD_WIDTH) || (y < 0) || (y >= 
BOARD_HEIGHT))
+                       return 0;
+               if (board[x][y])
+                       return 0;
+       }
+       return 1;
+}
diff --git a/wmtetris/wmtetris/wmtetris.h b/wmtetris/wmtetris/wmtetris.h
new file mode 100644
index 0000000..16d612a
--- /dev/null
+++ b/wmtetris/wmtetris/wmtetris.h
@@ -0,0 +1,40 @@
+/*  wmapm.h -- Header file for WMAPM
+ *
+ *  wmapm-1.2 (C) 1998 Chris D. Faulhaber <jed...@speck.ml.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program (see the file COPYING); if not, write to the
+ * Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
+ ***********************************************************************/
+
+#define DELAY 250000          /* Delay between refreshes (in microseconds) */
+
+#define WMAPM_VERSION "1.2"
+
+typedef struct apm_info {
+   const char driver_version[10];
+   int        apm_version_major;
+   int        apm_version_minor;
+   int        apm_flags;
+   int        ac_line_status;
+   int        battery_status;
+   int        battery_flags;
+   int        battery_percentage;
+   int        battery_time;
+   int        using_minutes;
+} apm_info;
+
+#ifndef APM_32_BIT_SUPPORT
+#define APM_32_BIT_SUPPORT      0x0002
+#endif
diff --git a/wmtetris/wmtetris/wmtetris.xpm b/wmtetris/wmtetris/wmtetris.xpm
new file mode 100644
index 0000000..52a491b
--- /dev/null
+++ b/wmtetris/wmtetris/wmtetris.xpm
@@ -0,0 +1,532 @@
+/* XPM */
+static char * wmtetris_xpm[] = {
+"128 120 409 2",
+"      c None",
+".     c #000000",
+"+     c #0000FF",
+"@     c #010000",
+"#     c #020000",
+"$     c #030000",
+"%     c #040000",
+"&     c #4D4D4D",
+"*     c #494949",
+"=     c #454545",
+"-     c #424242",
+";     c #3F3F3F",
+">     c #3D3D3D",
+",     c #3C3C3C",
+"'     c #3A3A3A",
+")     c #717571",
+"!     c #9E9A9E",
+"~     c #181818",
+"{     c #BEBEBE",
+"]     c #CFCFCF",
+"^     c #8E8A8E",
+"/     c #616561",
+"(     c #CFCBCF",
+"_     c #A6A2A6",
+":     c #DFDFDF",
+"<     c #EFEBEF",
+"[     c #E7E7E7",
+"}     c #BEBABE",
+"|     c #DFDBDF",
+"1     c #969296",
+"2     c #C7C7C7",
+"3     c #E7E3E7",
+"4     c #AEAEAE",
+"5     c #696969",
+"6     c #B6AEAE",
+"7     c #717171",
+"8     c #B6B2B6",
+"9     c #383430",
+"0     c #050000",
+"a     c #414141",
+"b     c #3E3E3E",
+"c     c #383838",
+"d     c #363636",
+"e     c #343434",
+"f     c #5F635F",
+"g     c #848484",
+"h     c #060A06",
+"i     c #5F5F5F",
+"j     c #A4A4A4",
+"k     c #B4B4B4",
+"l     c #B4B0B4",
+"m     c #C5BDBD",
+"n     c #161A16",
+"o     c #9C989C",
+"p     c #47433F",
+"q     c #161616",
+"r     c #949494",
+"s     c #474747",
+"t     c #16120E",
+"u     c #949094",
+"v     c #4F4F4F",
+"w     c #948C8C",
+"x     c #57534F",
+"y     c #8C8C8C",
+"z     c #575757",
+"A     c #160E0E",
+"B     c #8C888C",
+"C     c #5F5B57",
+"D     c #060000",
+"E     c #2E2A26",
+"F     c #070000",
+"G     c #393939",
+"H     c #353535",
+"I     c #333333",
+"J     c #313131",
+"K     c #2F2F2F",
+"L     c #4D514D",
+"M     c #8A868A",
+"N     c #8A8A8A",
+"O     c #7A7A7A",
+"P     c #928E92",
+"Q     c #929292",
+"R     c #8A8282",
+"S     c #2D312D",
+"T     c #0C0C0C",
+"U     c #827E82",
+"V     c #0C0804",
+"W     c #AAA6AA",
+"X     c #A2A2A2",
+"Y     c #040404",
+"Z     c #45413D",
+"`     c #0C0404",
+" .    c #827A7A",
+"..    c #726E72",
+"+.    c #7A7272",
+"@.    c #4D4945",
+"#.    c #241C1C",
+"$.    c #928A8A",
+"%.    c #140804",
+"&.    c #080000",
+"*.    c #2E2E2E",
+"=.    c #2B2B2B",
+"-.    c #292929",
+";.    c #3B3F3B",
+">.    c #808080",
+",.    c #787878",
+"'.    c #787478",
+").    c #1A1A1A",
+"!.    c #686868",
+"~.    c #231E1A",
+"{.    c #686468",
+"].    c #232323",
+"^.    c #2B2323",
+"/.    c #685F5B",
+"(.    c #332F2B",
+"_.    c #5B5753",
+":.    c #2B2723",
+"<.    c #5B5B5B",
+"[.    c #3B3733",
+"}.    c #120A0A",
+"|.    c #433F3B",
+"1.    c #0A0000",
+"2.    c #2D2D2D",
+"3.    c #272727",
+"4.    c #252525",
+"5.    c #242424",
+"6.    c #292D29",
+"7.    c #5E5551",
+"8.    c #191410",
+"9.    c #494D49",
+"0.    c #5E5A5E",
+"a.    c #5E5E5E",
+"b.    c #100C08",
+"c.    c #515151",
+"d.    c #191010",
+"e.    c #514D49",
+"f.    c #666266",
+"g.    c #211D19",
+"h.    c #292521",
+"i.    c #080400",
+"j.    c #413D39",
+"k.    c #312D29",
+"l.    c #0C0000",
+"m.    c #212121",
+"n.    c #1F1F1F",
+"o.    c #090000",
+"p.    c #0B0000",
+"q.    c #0D0000",
+"r.    c #1E1E1E",
+"s.    c #191919",
+"t.    c #0E0000",
+"u.    c #0F0000",
+"v.    c #141414",
+"w.    c #100000",
+"x.    c #0E0E0E",
+"y.    c #110000",
+"z.    c #120000",
+"A.    c #130000",
+"B.    c #140000",
+"C.    c #150000",
+"D.    c #160000",
+"E.    c #170000",
+"F.    c #180000",
+"G.    c #190000",
+"H.    c #1A0000",
+"I.    c #1B0000",
+"J.    c #1C0000",
+"K.    c #1D0000",
+"L.    c #1E0000",
+"M.    c #4E4E4E",
+"N.    c #4A4A4A",
+"O.    c #444444",
+"P.    c #404040",
+"Q.    c #1F0000",
+"R.    c #200000",
+"S.    c #210000",
+"T.    c #220000",
+"U.    c #230000",
+"V.    c #008F00",
+"W.    c #00E100",
+"X.    c #240000",
+"Y.    c #250000",
+"Z.    c #260000",
+"`.    c #270000",
+" +    c #280000",
+".+    c #290000",
+"++    c #2A0000",
+"@+    c #2B0000",
+"#+    c #2C0000",
+"$+    c #2D0000",
+"%+    c #2E0000",
+"&+    c #D7D3D7",
+"*+    c #9E9E9E",
+"=+    c #2F0000",
+"-+    c #515551",
+";+    c #300000",
+">+    c #310000",
+",+    c #303430",
+"'+    c #000400",
+")+    c #320000",
+"!+    c #282C28",
+"~+    c #080C08",
+"{+    c #969696",
+"]+    c #330000",
+"^+    c #340000",
+"/+    c #350000",
+"(+    c #360000",
+"_+    c #370000",
+":+    c #380000",
+"<+    c #390000",
+"[+    c #3A0000",
+"}+    c #3B0000",
+"|+    c #3C0000",
+"1+    c #3D0000",
+"2+    c #3E0000",
+"3+    c #3F0000",
+"4+    c #400000",
+"5+    c #410000",
+"6+    c #420000",
+"7+    c #616161",
+"8+    c #430000",
+"9+    c #440000",
+"0+    c #450000",
+"a+    c #460000",
+"b+    c #470000",
+"c+    c #480000",
+"d+    c #490000",
+"e+    c #4A0000",
+"f+    c #4B0000",
+"g+    c #4C0000",
+"h+    c #4D0000",
+"i+    c #4E0000",
+"j+    c #4F0000",
+"k+    c #500000",
+"l+    c #510000",
+"m+    c #6B6B6B",
+"n+    c #0D0D0D",
+"o+    c #520000",
+"p+    c #530000",
+"q+    c #540000",
+"r+    c #505050",
+"s+    c #550000",
+"t+    c #560000",
+"u+    c #131313",
+"v+    c #570000",
+"w+    c #580000",
+"x+    c #590000",
+"y+    c #00C700",
+"z+    c #00B200",
+"A+    c #009A00",
+"B+    c #FFFFFF",
+"C+    c #F8F8F8",
+"D+    c #F2F2F2",
+"E+    c #EFEFEF",
+"F+    c #EDEDED",
+"G+    c #ECECEC",
+"H+    c #EAEAEA",
+"I+    c #E9E9E9",
+"J+    c #008600",
+"K+    c #FEFEFE",
+"L+    c #FBFBFB",
+"M+    c #F9F9F9",
+"N+    c #F5F5F5",
+"O+    c #F3F3F3",
+"P+    c #EBEBEB",
+"Q+    c #E8E8E8",
+"R+    c #E4E4E4",
+"S+    c #E2E2E2",
+"T+    c #006D00",
+"U+    c #F4F4F4",
+"V+    c #E6E6E6",
+"W+    c #E5E5E5",
+"X+    c #E0E0E0",
+"Y+    c #DEDEDE",
+"Z+    c #DDDDDD",
+"`+    c #DBDBDB",
+" @    c #D8D8D8",
+".@    c #D7D7D7",
+"+@    c #00C7C7",
+"@@    c #00B2B6",
+"#@    c #009A9E",
+"$@    c #E3E3E3",
+"%@    c #D9D9D9",
+"&@    c #D6D6D6",
+"*@    c #D5D5D5",
+"=@    c #D3D3D3",
+"-@    c #D1D1D1",
+";@    c #D0D0D0",
+">@    c #CDCDCD",
+",@    c #CBCBCB",
+"'@    c #CACACA",
+")@    c #C8C8C8",
+"!@    c #008686",
+"~@    c #DCDCDC",
+"{@    c #D4D4D4",
+"]@    c #CECECE",
+"^@    c #C9C9C9",
+"/@    c #C6C6C6",
+"(@    c #C5C5C5",
+"_@    c #C1C1C1",
+":@    c #C0C0C0",
+"<@    c #006D69",
+"[@    c #0000C0",
+"}@    c #D2D2D2",
+"|@    c #CCCCCC",
+"1@    c #C4C4C4",
+"2@    c #C3C3C3",
+"3@    c #BFBFBF",
+"4@    c #BBBBBB",
+"5@    c #B9B9B9",
+"6@    c #B6B6B6",
+"7@    c #B5B5B5",
+"8@    c #0000C7",
+"9@    c #0000B6",
+"0@    c #00009E",
+"a@    c #C2C2C2",
+"b@    c #BDBDBD",
+"c@    c #BCBCBC",
+"d@    c #B7B7B7",
+"e@    c #B2B2B2",
+"f@    c #AFAFAF",
+"g@    c #ABABAB",
+"h@    c #A9A9A9",
+"i@    c #A8A8A8",
+"j@    c #A6A6A6",
+"k@    c #A5A5A5",
+"l@    c #000086",
+"m@    c #000069",
+"n@    c #ADADAD",
+"o@    c #A7A7A7",
+"p@    c #A0A0A0",
+"q@    c #9D9D9D",
+"r@    c #9C9C9C",
+"s@    c #9A9A9A",
+"t@    c #999999",
+"u@    c #979797",
+"v@    c #919191",
+"w@    c #8F8F8F",
+"x@    c #C700C7",
+"y@    c #B600B6",
+"z@    c #9E009E",
+"A@    c #A3A3A3",
+"B@    c #9B9B9B",
+"C@    c #959595",
+"D@    c #909090",
+"E@    c #898989",
+"F@    c #878787",
+"G@    c #828282",
+"H@    c #860086",
+"I@    c #989898",
+"J@    c #939393",
+"K@    c #8E8E8E",
+"L@    c #8B8B8B",
+"M@    c #858585",
+"N@    c #7D7D7D",
+"O@    c #7C7C7C",
+"P@    c #797979",
+"Q@    c #777777",
+"R@    c #690069",
+"S@    c #888888",
+"T@    c #838383",
+"U@    c #7E7E7E",
+"V@    c #7B7B7B",
+"W@    c #767676",
+"X@    c #727272",
+"Y@    c #707070",
+"Z@    c #6F6F6F",
+"`@    c #6D6D6D",
+" #    c #C70000",
+".#    c #B60000",
+"+#    c #9E0000",
+"@#    c #868686",
+"##    c #282828",
+"$#    c #818181",
+"%#    c #747474",
+"&#    c #737373",
+"*#    c #6E6E6E",
+"=#    c #666666",
+"-#    c #656565",
+";#    c #636363",
+">#    c #860000",
+",#    c #757575",
+"'#    c #6C6C6C",
+")#    c #646464",
+"!#    c #5A5A5A",
+"~#    c #585858",
+"{#    c #565656",
+"]#    c #690000",
+"^#    c #BAB8BA",
+"/#    c #6A6A6A",
+"(#    c #676767",
+"_#    c #595959",
+":#    c #545454",
+"<#    c #535353",
+"[#    c #4B4B4B",
+"}#    c #C7C700",
+"|#    c #B6B200",
+"1#    c #9E9A00",
+"2#    c #868600",
+"3#    c #696D00",
+"4#    c #797D79",
+"5#    c #696D69",
+"6#    c #414541",
+"7#    c #202020",
+"8#    c #383C38",
+"9#    c #202420",
+"0#    c #595D59",
+"a#    c #101410",
+"b#    c #CF0000",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + + + + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + + + + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + + + + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + + + + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + . . . . . . . . . . . 
. . . . . @ @ @ @ @ @ @ # # # # # # $ $ $ $ $ $ $ % % % & * = - ; > , ' ' ' , > 
; - = * & + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + . ) ! ~ ) { ] ^ / ( _ 
: < [ } ( < [ | 1 | < [ { 2 < 3 4 5 | < [ 6 7 ( 3 8 9 0 * = a b ' c d e e e d c 
' b a = * + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + @ f g h i j k k l m ; 
n o p q r s . . . t u v t w x t y z A B C A B i D ; E F = a > G H I J K K K J I 
H G > a = + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + $ L M N O P Q O R Q S 
T U H V R W X L . Y O Z `  .X X ..` % +.@.. #.$.X +.%.&.- b G e J 
*.=.-.-.-.=.*.J e G b - + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + % ;.>.,.>.'.,.).# 
!.~.# {.].# {.^.. . . . /.(.# /._.{.:.. . <.[.. ^.}.. _.|.1.; ' H J 
2.-.3.4.5.4.3.-.2.J H ' ; + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + D 6.7.8.9.0.a.b.. 
c.d.. e.8.. e.f.f.f.b.. * g.. * h.i.e.j.f.0.a.e.k.a.f.c.&.l.> c I 
*.-.4.m.n.n.n.m.4.-.*.I c > + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + F 
&.&.&.&.&.&.&.o.o.o.o.o.o.1.1.1.1.1.1.1.p.p.p.p.p.p.p.l.l.l.l.l.l.q.q.q.q.q., d 
J =.3.m.r.).s.).r.m.3.=.J d , + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
o.o.o.o.1.1.1.1.1.1.1.p.p.p.p.p.p.l.l.l.l.l.l.l.q.q.q.q.q.q.t.t.t.t.t.t.t.u.u.' 
e K -.4.n.).q v.q ).n.4.-.K e ' + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
p.p.p.p.p.p.p.l.l.l.l.l.l.l.q.q.q.q.q.q.t.t.t.t.t.t.t.u.u.u.u.u.u.u.w.w.w.w.w.' 
e K -.5.n.s.v.x.v.s.n.5.-.K e ' + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
l.l.l.q.q.q.q.q.q.q.t.t.t.t.t.t.t.u.u.u.u.u.u.w.w.w.w.w.w.w.y.y.y.y.y.y.y.z.z.' 
e K -.4.n.).q v.q ).n.4.-.K e ' + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
t.t.t.t.t.t.u.u.u.u.u.u.u.w.w.w.w.w.w.w.y.y.y.y.y.y.z.z.z.z.z.z.z.A.A.A.A.A.A., 
d J =.3.m.r.).s.).r.m.3.=.J d , + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
u.u.u.w.w.w.w.w.w.y.y.y.y.y.y.y.z.z.z.z.z.z.z.A.A.A.A.A.A.B.B.B.B.B.B.B.C.C.C.> 
c I *.-.4.m.n.n.n.m.4.-.*.I c > + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
y.y.y.y.y.y.z.z.z.z.z.z.A.A.A.A.A.A.A.B.B.B.B.B.B.B.C.C.C.C.C.C.D.D.D.D.D.D.D.; 
' H J 2.-.3.4.5.4.3.-.2.J H ' ; + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
z.z.A.A.A.A.A.A.A.B.B.B.B.B.B.C.C.C.C.C.C.C.D.D.D.D.D.D.D.E.E.E.E.E.E.F.F.F.F.- 
b G e J *.=.-.-.-.=.*.J e G b - + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
B.B.B.B.B.C.C.C.C.C.C.C.D.D.D.D.D.D.E.E.E.E.E.E.E.F.F.F.F.F.F.G.G.G.G.G.G.G.H.= 
a > G H I J K K K J I H G > a = + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
C.D.D.D.D.D.D.D.E.E.E.E.E.E.E.F.F.F.F.F.F.G.G.G.G.G.G.G.H.H.H.H.H.H.H.I.I.I.I.* 
= a b ' c d e e e d c ' b a = * + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
E.E.E.E.F.F.F.F.F.F.F.G.G.G.G.G.G.G.H.H.H.H.H.H.I.I.I.I.I.I.I.J.J.J.J.J.J.J.K.& 
* = - ; > , ' ' ' , > ; - = * & + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
G.G.G.G.G.G.G.H.H.H.H.H.H.H.I.I.I.I.I.I.J.J.J.J.J.J.J.K.K.K.K.K.K.K.L.L.L.L.L.c.M.N.s
 O.- a P.; P.a - O.s N.M.c.+ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
H.H.H.H.I.I.I.I.I.I.J.J.J.J.J.J.J.K.K.K.K.K.K.K.L.L.L.L.L.L.Q.Q.Q.Q.Q.Q.Q.R.R.. 
. . . . . . . . . . . . . . . . + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
J.J.J.J.J.J.J.K.K.K.K.K.K.L.L.L.L.L.L.L.Q.Q.Q.Q.Q.Q.Q.R.R.R.R.R.R.S.S.S.S.S.S.. 
. . . . . . . . . . . . . . . . + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
K.K.K.L.L.L.L.L.L.L.Q.Q.Q.Q.Q.Q.R.R.R.R.R.R.R.S.S.S.S.S.S.S.T.T.T.T.T.T.U.U.U.. 
V.W.V.. V.W.V.. V.W.V.. V.W.V.. + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
Q.Q.Q.Q.Q.Q.R.R.R.R.R.R.S.S.S.S.S.S.S.T.T.T.T.T.T.T.U.U.U.U.U.U.U.X.X.X.X.X.X.. 
W.. W.. W.. W.. W.. W.. W.. W.. + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
R.R.S.S.S.S.S.S.S.T.T.T.T.T.T.T.U.U.U.U.U.U.X.X.X.X.X.X.X.Y.Y.Y.Y.Y.Y.Y.Z.Z.Z.. 
W.. W.. W.. W.. W.. W.. W.. W.. + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
T.T.T.T.T.U.U.U.U.U.U.U.X.X.X.X.X.X.X.Y.Y.Y.Y.Y.Y.Z.Z.Z.Z.Z.Z.Z.`.`.`.`.`.`.`.. 
W.. W.. W.. W.. W.. W.. W.. W.. + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
U.U.X.X.X.X.X.X.Y.Y.Y.Y.Y.Y.Y.Z.Z.Z.Z.Z.Z.`.`.`.`.`.`.`. + + + + + + +.+.+.+.+. 
V.W.V.. V.W.V.. V.W.V.. V.W.V.. + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
Y.Y.Y.Y.Y.Z.Z.Z.Z.Z.Z.`.`.`.`.`.`.`. + + + + + + +.+.+.+.+.+.+++++++++++++++@+. 
. . . . . . . . . . . . . . . . + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + Z.`.`.`.`.`.`.`. + + 
+ + + +.+.+.+.+.+.+.+++++++++++++++@+@+@+@+@+@+#+#+#+#+#+. . . . . . . . . . . 
. . . . . . + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + +  + + + 
+.+.+.+.+.+.+.+++++++++++++@+@+@+@+@+@+@+#+#+#+#+#+#+$+$+$+$+$+$+$+%+%+&+&+&+&+&+&+&+*+.
 &+&+&+&+&+&+&+*++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
++++++++++++++@+@+@+@+@+@+@+#+#+#+#+#+#+$+$+$+$+$+$+$+%+%+%+%+%+%+%+=+=+=+=+=+&+*+*+*+*+*+*+-+.
 &+*+*+*+*+*+*+-++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
@+@+@+#+#+#+#+#+#+#+$+$+$+$+$+$+$+%+%+%+%+%+%+=+=+=+=+=+=+=+;+;+;+;+;+;+;+>+>+&+1
 ,+'+'+,+1 -+. &+1 ,+'+'+,+1 -++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
$+$+$+$+$+$+%+%+%+%+%+%+%+=+=+=+=+=+=+=+;+;+;+;+;+;+>+>+>+>+>+>+>+)+)+)+)+)+)+&+!+~+{+{+~+!+-+.
 &+!+~+{+{+~+!+-++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
%+%+%+=+=+=+=+=+=+;+;+;+;+;+;+;+>+>+>+>+>+>+)+)+)+)+)+)+)+]+]+]+]+]+]+]+^+^+^+&+.
 7 *+9.*+. -+. &+. *+9.*+7 . -++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
;+;+;+;+;+;+>+>+>+>+>+>+)+)+)+)+)+)+)+]+]+]+]+]+]+]+^+^+^+^+^+^+/+/+/+/+/+/+/+&+!+.
 7 . 9.*+-+. &+*+9.. 7 . !+-++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
>+>+)+)+)+)+)+)+]+]+]+]+]+]+]+^+^+^+^+^+^+^+/+/+/+/+/+/+/+(+(+(+(+(+(+_+_+_+_+&+1
 !+. . . 9.-+. &+9.. . . !+1 -++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
]+]+]+]+]+^+^+^+^+^+^+/+/+/+/+/+/+/+(+(+(+(+(+(+(+_+_+_+_+_+_+:+:+:+:+:+:+:+<+&+*+*+*+*+*+*+-+.
 &+*+*+*+*+*+*+-++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
^+/+/+/+/+/+/+/+(+(+(+(+(+(+(+_+_+_+_+_+_+:+:+:+:+:+:+:+<+<+<+<+<+<+<+[+[+[+[+*+-+-+-+-+-+-+-+.
 *+-+-+-+-+-+-+-++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
(+(+(+(+_+_+_+_+_+_+_+:+:+:+:+:+:+<+<+<+<+<+<+<+[+[+[+[+[+[+[+}+}+}+}+}+}+}+|+. 
. . . . . . . . . . . . . . . . + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
:+:+:+:+:+:+:+<+<+<+<+<+<+<+[+[+[+[+[+[+}+}+}+}+}+}+}+|+|+|+|+|+|+|+1+1+1+1+1+&+&+&+&+&+&+&+*+.
 &+&+&+&+&+&+&+*++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
<+<+<+<+[+[+[+[+[+[+}+}+}+}+}+}+}+|+|+|+|+|+|+|+1+1+1+1+1+1+2+2+2+2+2+2+2+3+3+&+*+*+*+*+*+*+-+.
 &+*+*+*+*+*+*+-++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
}+}+}+}+}+}+}+|+|+|+|+|+|+1+1+1+1+1+1+1+2+2+2+2+2+2+3+3+3+3+3+3+3+4+4+4+4+4+4+&+*+*+*+)
 * *+-+. &+*+* ) *+*+*+-++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
|+|+|+1+1+1+1+1+1+1+2+2+2+2+2+2+3+3+3+3+3+3+3+4+4+4+4+4+4+5+5+5+5+5+5+5+6+6+6+&+*+7+c
 . . *+-+. &+*+. . c 7+*+-++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
2+2+2+2+2+2+3+3+3+3+3+3+3+4+4+4+4+4+4+5+5+5+5+5+5+5+6+6+6+6+6+6+6+8+8+8+8+8+8+&+c
 ~+'+. . *+-+. &+*+. . '+~+c -++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
3+3+4+4+4+4+4+4+4+5+5+5+5+5+5+6+6+6+6+6+6+6+8+8+8+8+8+8+8+9+9+9+9+9+9+9+0+0+0+&+*+7+c
 . . *+-+. &+*+. . c 7+*+-++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
5+5+5+5+5+6+6+6+6+6+6+6+8+8+8+8+8+8+8+9+9+9+9+9+9+0+0+0+0+0+0+0+a+a+a+a+a+a+b+&+*+*+*+)
 * *+-+. &+*+* ) *+*+*+-++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
6+6+8+8+8+8+8+8+9+9+9+9+9+9+9+0+0+0+0+0+0+0+a+a+a+a+a+a+b+b+b+b+b+b+b+c+c+c+c+&+*+*+*+*+*+*+-+.
 &+*+*+*+*+*+*+-++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
9+9+9+9+9+0+0+0+0+0+0+a+a+a+a+a+a+a+b+b+b+b+b+b+b+c+c+c+c+c+c+d+d+d+d+d+d+d+e+*+-+-+-+-+-+-+-+.
 *+-+-+-+-+-+-+-++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
0+a+a+a+a+a+a+a+b+b+b+b+b+b+c+c+c+c+c+c+c+d+d+d+d+d+d+d+e+e+e+e+e+e+f+f+f+f+f+. 
. . . . . . . . . . . . . . . . + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
b+b+b+b+c+c+c+c+c+c+c+d+d+d+d+d+d+e+e+e+e+e+e+e+f+f+f+f+f+f+f+g+g+g+g+g+g+h+h+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+*++
 + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
d+d+d+d+d+d+d+e+e+e+e+e+e+f+f+f+f+f+f+f+g+g+g+g+g+g+g+h+h+h+h+h+h+i+i+i+i+i+i+&+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+-++
 + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
e+e+e+f+f+f+f+f+f+f+g+g+g+g+g+g+g+h+h+h+h+h+h+i+i+i+i+i+i+i+j+j+j+j+j+j+j+k+k+&+*+*
 . . . . . . . . . . . * *+-++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
g+g+g+g+g+g+h+h+h+h+h+h+h+i+i+i+i+i+i+i+j+j+j+j+j+j+k+k+k+k+k+k+k+l+l+l+l+l+l+&+*+*+m+n+.
 . . . . . . n+m+*+*+9.+ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
h+h+i+i+i+i+i+i+i+j+j+j+j+j+j+j+k+k+k+k+k+k+k+l+l+l+l+l+l+o+o+o+o+o+o+o+p+p+p+&+*+*+*+y
 *.. . . . . *.y *+*+*+-++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
j+j+j+j+j+j+k+k+k+k+k+k+l+l+l+l+l+l+l+o+o+o+o+o+o+o+p+p+p+p+p+p+q+q+q+q+q+q+q+&+*+*+*+*+*+r+.
 . . r+*+*+*+*+*+-++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
k+k+l+l+l+l+l+l+l+o+o+o+o+o+o+p+p+p+p+p+p+p+q+q+q+q+q+q+q+s+s+s+s+s+s+t+t+t+t+&+*+*+*+*+*+*+7
 u+7 *+*+*+*+*+*+-++ + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
o+o+o+o+o+p+p+p+p+p+p+p+q+q+q+q+q+q+s+s+s+s+s+s+s+t+t+t+t+t+t+v+v+v+v+v+v+v+w+&+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+-++
 + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + 
p+q+q+q+q+q+q+q+s+s+s+s+s+s+s+t+t+t+t+t+t+v+v+v+v+v+v+v+w+w+w+w+w+w+w+x+x+x+x+*+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++
 + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + + + + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + + + + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + + + + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + + + + + + + ",
+"y+z+A++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + + + + + + + + + + + + + + + + + + + + + + + . B+B+B+. . . . B+. . . C+. . 
. D+. E+F+G+H+I+                          B+B+B+        B+      B+      B+  
B+B+B+B+B+. . . + + + ",
+"z+A+J++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + + + + + + + + + + + + + + + + + + + + + + + B+K+. L+M+. . N+O+D+. . F+P+. 
Q+[ . R+S+. . .                         B+B+  B+B+    B+B+B+    B+B+  B+B+  
B+B+      . . . + + + ",
+"A+J+T++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + + + + + + + + + + + + + + + + + + + + + + + U+O+. . . . P+I+. V+W+. 
S+X+Y+Z+`+.  @.@. . .                         B+B+        B+B+  B+B+  
B+B+B+B+B+  B+B+      . . . + + + ",
+"+@@@#@+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + + + + + + + + + + + + + + + + + + + + + + + I+[ V+R+$@. : Y+. `+%@. 
&@*@=@-@;@. >@,@'@)@.                         B+B+B+B+B+  B+B+  B+B+  
B+B+B+B+B+  B+B+B+B+  . . . + + + ",
+"@@#@!@+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + +                               + + + + + + Z+~@. %@.@. {@=@-@] ]@. 
,@^@)@/@(@. _@:@. . .                         B+B+  B+B+  B+B+B+B+B+  
B+B+B+B+B+  B+B+      . . . + + + ",
+"#@!@<@+ + + + + + + + + + + + + + + + + + + + + + [@+ + + + + + + + + + + + + 
+ + + +                               + + + + + + }@;@. >@|@. ^@2 . 1@2@. 3@{ . 
4@5@. 6@7@. . .                         B+B+  B+B+  B+B+  B+B+  B+B+  B+B+  
B+B+      . . . + + + ",
+"8@9@0@+ + + + + + + + + *+*+*+*+*+*+*+*+*+*+*+*+*+. . . . . . . . . . . . . . 
. . . .                               + + + + + + . (@1@a@:@. b@c@. 5@d@. k e@. 
f@4 . g@h@i@j@k@                          B+B+B+B+  B+B+  B+B+  B+B+  B+B+  
B+B+B+B+B+. . . + + + ",
+"9@0@l@+ + + + + + + + + *+*+*+*+*+*+*+*+*+*+*+*+. . . . . . . . . . . . . . . 
. . . .                               + + + + + + . . . . . . . . . . . . . . . 
. . . . . . . .                                                                 
      . . . + + + ",
+"0@l@m@+ + + + + + + + + *+*+*+*+*+*+*+*+*+*+*+. . . . . . . . . . . . . . . . 
. . . .                               + + . . . . . 4 n@g@. . o@k@. X p@. 
q@r@s@t@u@. r Q v@w@.                           B+B+B+    B+B+  B+B+  
B+B+B+B+B+  B+B+B+B+  . . . + + + ",
+"x@y@z@+ + + + + + + + + *+*+*+*+*+*+        . . . . . . . . .       . . . . . 
. . . .                               + + . . . . k@A@. p@*+. B@s@. u@C@. Q D@. 
. . . E@F@. g G@                        B+B+  B+B+  B+B+  B+B+  B+B+        
B+B+  B+B+. . . + + + ",
+"y@z@H@+ + + + + + + + + *+*+*+*+*+*+        . . . . . . . . . .     . . . . . 
. . . .                               + + . . . . t@I@. r J@. D@K@. L@N . F@M@. 
. . . N@O@. P@Q@                        B+B+  B+B+  B+B+  B+B+  B+B+        
B+B+  B+B+. . . + + + ",
+"z@H@R@+ + + + + + + + + *+*+*+*+*+*+      . . . . . . . . . . . .   . . . . . 
. . . . + + + + + + + + + + + + + + + + + . . . . K@y . E@S@. g T@. >.U@. V@O 
,.W@. . X@Y@Z@`@.                         B+B+  B+B+  B+B+  B+B+  B+B+B+B+    
B+B+B+B+  . . . + + + ",
+" #.#+#+ + + + + + + + + *+*+*+*+*+*+    @###. . . . . . . . . . . . . . . . . 
. . . . + + + + + + + + + + + + + + + + + . . . . G@$#. U@O@. P@Q@. %#&#. Y@*#. 
. . . =#-#;#. .                         B+B+  B+B+  B+B+  B+B+  B+B+        
B+B+B+    . . . + + + ",
+".#+#>#+ + + + + + + + + *+*+*+*+*+*+  *+*+*+* . . . . . . . . . . . . . . . . 
. . . . + + + + + + + + + + + + + + + + + . . . . Q@,#. X@7 . . '#m+5 . . )#;#. 
. . . <.!#~#{#.                         B+B+  B+B+    B+B+B+    B+B+        
B+B+B+B+  . . . + + + ",
+"+#>#]#+ + + + + + + ^#^#*+*+*+*+*+*+  *+*+*+*+m+n+. . . . . . . . . . . . . . 
. . . . + + + + + + + + + + + + + + + + + . . . . . /#5 (#. . . . i . . . _#z 
{#:#<#. r+M.. [#*                           B+B+B+        B+      B+B+B+B+B+  
B+B+  B+B+. . . + + + ",
+"}#|#1#+ + + + + + + + + *+*+*+*+*+*+*+*+*+*+*+*+y *.. . . . . . .   . . . . . 
. + + + + + + + + + + + + + + + + + + + + + + + + . . . . . . . . . . . . . . . 
. . . . . . . .                                                                 
      + + + + + + ",
+"|#1#2#+ + + + + + + + + *+*+*+*+*+*+*+*+*+*+*+*+*+*+r+. . . . . .   . . . . . 
. &+&+&+&+&+&+&+*+&+&+&+&+&+&+&+*+                                              
  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + + + + + + + ",
+"1#2#3#+ + + + + + + + + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+7 u+. . .     . . . . . 
. &+*+*+*+*+*+*+-+&+*+*+*+*+*+*+-+                                              
  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + + + + + + + ",
+"_ 1 4#+ + + + + + + + + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+Q H .       . . . . . 
. &+1 ,+'+'+,+1 -+&+1 ,+'+'+,+1 -+                                              
  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"1 4#5#+ + + + + + + + + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+{#      . . . . . 
. &+!+~+{+{+~+!+-+&+!+~+{+{+~+!+-+                                              
  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"4#5#_#+ + + + + + + + + *+*+*+*+*+*+  *+*+*+*+*+*+*+*+*+*+q@        . . . . . 
. &+. 7 *+9.*+. -+&+. *+9.*+7 . -+                                              
  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"+ + + + + + + + + + + + *+*+*+*+*+*+      *+*+*+*+*+*+*+q@          . . . . . 
. &+!+. 7 . 9.*+-+&+*+9.. 7 . !+-+                                              
  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"+ + + + + + + + + + + + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+I . . . . . . . . . . 
. &+1 !+. . . 9.-+&+9.. . . !+1 -+                                              
  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"+ + + + + + + + + + + + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+:#. . . . . . . . . . . 
. &+*+*+*+*+*+*+-+&+*+*+*+*+*+*+-+                                              
  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"+ + + + + + + + + + + + + + + + + + + + + + + + + *+W@. . . . . . . . . . . . 
. *+-+-+-+-+-+-+-+*+-+-+-+-+-+-+-+                                              
  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"+ + + + + + + + + + + + + + + + + + + + + + + + + + . . . . . . . . . . . . . 
. &+&+&+&+&+&+&+*+&+&+&+&+&+&+&+*+                                              
  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"+ + + + + + + + + + + + + + + + + + + + + + + + + + . . . . . . . . . . . . . 
. &+*+*+*+*+*+*+-+&+*+*+*+*+*+*+-+                                              
  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"+ + + + + + + + + + + + + + + + + + + + + + + + + *+*+*+*+*+*+*+*+*+*+*+. . . 
. &+*+*+*+) * *+-+&+*+* ) *+*+*+-+                                              
  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"+ + + + + + + + + + + + + + + + + + + + + + + + + *+*+*+*+*+*+*+*+*+*+*+. . . 
. &+*+7+c . . *+-+&+*+. . c 7+*+-+                                              
  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"+ + + + + + + + + + + + + + + + + + + + + + + + + *+*+*+*+*+*+*+*+*+*+*+. . . 
. &+c ~+'+. . *+-+&+*+. . '+~+c -+                                              
  . . . . . 5 6#7#. . . . . . . 7#6#5   . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"                                                                              
  &+*+7+c . . *+-+&+*+. . c 7+*+-+                                              
  . . . . . *+@#_#!+. . . . . !+_#@#*+  . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"                                                                              
  &+*+*+*+) * *+-+&+*+* ) *+*+*+-+                                              
  . . . . . *+*+*+4#8#. . . 8#4#*+*+*+  . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"                                                                              
  &+*+*+*+*+*+*+-+&+*+*+*+*+*+*+-+                                              
  . . . . . *+*+*+*+*+5 . 5 *+*+*+*+*+  . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"                                                                              
  *+-+-+-+-+-+-+-+*+-+-+-+-+-+-+-+                                              
  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"                                                                              
  &+&+&+&+&+&+&+&+&+&+&+&+&+&+&+*+                                              
  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. &+*+*+*+*+*+*+*+*+*+*+*+*+*+*+-+                                              
  . . . . . . . _#9#. . . . 9#_#. . . . . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"V.W.V.. . W.. . W.W.V.. W.W.V.. W.. W.. W.W.W.. V.W.W.. W.W.W.. V.W.V.. 
V.W.V.. &+*+*+*+*+*+*+*+*+*+*+*+*+*+*+-+                                        
        . . . . . . . {+0#a#. . a#0#{+. . . . . . . . . . . . . . . . . . + + + 
+ + + + + + + + + + + + ",
+"W.. W.. W.W.. . . . W.. . . W.. W.. W.. W.. . . W.. . . . . W.. W.. W.. W.. 
W.. &+5 6#7#. . . . . . . . 7#6#5 9.                                            
    . . . . . . . *+! 0#'+'+0#! *+. . . . . . . . . . . . . . . . . . + + + + + 
+ + + + + + + + + + ",
+"W.. W.. . W.. . V.W.V.. W.W.V.. V.W.W.. W.W.V.. W.W.V.. . . W.. V.W.V.. 
V.W.W.. &+*+@#_#!+. . . . . . !+_#@#*+-+                                        
        . . . . . . . *+*+*+9.9.*+*+*+. . . . . . . . . . . . . . . . . . + + + 
+ + + + + + + + + + + + ",
+"W.. W.. . W.. . W.. . . . . W.. . . W.. . . W.. W.. W.. . . W.. W.. W.. . . 
W.. &+*+*+*+4#8#. . . . 8#4#*+*+*+-+                                            
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + 
+ + + + + + + + + + ",
+"V.W.V.. . W.. . W.W.W.. W.W.V.. . . W.. W.W.V.. V.W.V.. . . W.. V.W.V.. 
W.W.V.. &+*+*+*+*+*+5 . . 5 *+*+*+*+*+-+                                        
        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + 
+ + + + + + + + + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. &+*+*+*+*+*+*+*+*+*+*+*+*+*+*+-+                                              
  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. *+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                                              
  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + 
+ + + + + + + + + ",
+"b#b#b#. . b#. . b#b#b#. b#b#b#. b#. b#. b#b#b#. b#b#b#. b#b#b#. b#b#b#. 
b#b#b#. . . . . . . . . . . . . . . . .                                         
        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + 
+ + + + + + + + + + + + ",
+"b#. b#. b#b#. . . . b#. . . b#. b#. b#. b#. . . b#. . . . . b#. b#. b#. b#. 
b#.                                                                             
                                                                                
            + + + + ",
+"b#. b#. . b#. . b#b#b#. b#b#b#. b#b#b#. b#b#b#. b#b#b#. . . b#. b#b#b#. 
b#b#b#.                           B+      B+  B+      B+  B+B+B+B+B+  
B+B+B+B+B+  B+B+B+B+B+  B+B+B+B+    B+B+B+B+B+    B+B+B+                        
                          + + + + ",
+"b#. b#. . b#. . b#. . . . . b#. . . b#. . . b#. b#. b#. . . b#. b#. b#. . . 
b#.                           B+      B+  B+  B+  B+      B+      B+            
  B+      B+      B+      B+      B+                                            
            + + + + ",
+"b#b#b#. . b#. . b#b#b#. b#b#b#. . . b#. b#b#b#. b#b#b#. . . b#. b#b#b#. 
b#b#b#.                           B+  B+  B+  B+  B+  B+      B+      B+B+B+B+  
      B+      B+B+B+B+        B+        B+B+B+                                  
                + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
.                           B+  B+  B+  B+      B+      B+      B+              
B+      B+  B+          B+              B+                                      
          + + + + ",
+"                                                                              
                            B+      B+  B+      B+      B+      B+B+B+B+B+      
B+      B+      B+  B+B+B+B+B+    B+B+B+                                        
          + + + + ",
+"+ + + + + + + + +                                                             
                                                                                
                                                                                
          + + + + ",
+"+ + + + + + + + +                                                             
                                                                                
                                                                                
          + + + + ",
+"+ + + + + + + + +                                                             
                                                                                
                                                                                
          + + + + ",
+"+ + + + + + + + +                                                             
                                                                                
                                                                                
          + + + + ",
+"+ + + + + + + + +                                                             
                                                                                
                                                                                
          + + + + ",
+"+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
+ + + + + + + + + "};
-- 
2.7.4


-- 
To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.

Reply via email to