From b7433e108da26346c189888d0aa07ab0e896a709 Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Sun, 15 Mar 2020 17:01:55 +0100
Subject: GNU libx

---
 minilibx_linux/Makefile                     |   25 +
 minilibx_linux/Makefile.gen                 |   71 ++
 minilibx_linux/Makefile.mk                  |   71 ++
 minilibx_linux/README                       |   42 +
 minilibx_linux/README.md                    |  131 +++
 minilibx_linux/configure                    |   95 ++
 minilibx_linux/man/man3/mlx.3               |   93 ++
 minilibx_linux/man/man3/mlx_loop.3          |  141 +++
 minilibx_linux/man/man3/mlx_new_image.3     |  192 ++++
 minilibx_linux/man/man3/mlx_new_window.3    |   79 ++
 minilibx_linux/man/man3/mlx_pixel_put.3     |   81 ++
 minilibx_linux/mlx.h                        |  129 +++
 minilibx_linux/mlx.pc                       |   12 +
 minilibx_linux/mlx_clear_window.c           |   21 +
 minilibx_linux/mlx_destroy_image.c          |   31 +
 minilibx_linux/mlx_destroy_window.c         |   38 +
 minilibx_linux/mlx_expose_hook.c            |   22 +
 minilibx_linux/mlx_flush_event.c            |   25 +
 minilibx_linux/mlx_get_color_value.c        |   33 +
 minilibx_linux/mlx_get_data_addr.c          |   23 +
 minilibx_linux/mlx_hook.c                   |   40 +
 minilibx_linux/mlx_init.c                   |   91 ++
 minilibx_linux/mlx_int.h                    |  125 +++
 minilibx_linux/mlx_int_anti_resize_win.c    |   28 +
 minilibx_linux/mlx_int_do_nothing.c         |   16 +
 minilibx_linux/mlx_int_get_visual.c         |   39 +
 minilibx_linux/mlx_int_param_event.c        |  100 ++
 minilibx_linux/mlx_int_set_win_event_mask.c |   34 +
 minilibx_linux/mlx_int_str_to_wordtab.c     |  113 +++
 minilibx_linux/mlx_int_wait_first_expose.c  |   23 +
 minilibx_linux/mlx_key_hook.c               |   22 +
 minilibx_linux/mlx_lib_xpm.c                |   96 ++
 minilibx_linux/mlx_loop.c                   |   38 +
 minilibx_linux/mlx_loop_hook.c              |   21 +
 minilibx_linux/mlx_mouse_hook.c             |   22 +
 minilibx_linux/mlx_new_image.c              |  155 +++
 minilibx_linux/mlx_new_window.c             |   61 ++
 minilibx_linux/mlx_pixel_put.c              |   26 +
 minilibx_linux/mlx_put_image_to_window.c    |   37 +
 minilibx_linux/mlx_rgb.c                    |  764 ++++++++++++++
 minilibx_linux/mlx_string_put.c             |   26 +
 minilibx_linux/mlx_xpm.c                    |  317 ++++++
 minilibx_linux/mlx_xpm.c.ok                 |  310 ++++++
 minilibx_linux/rgb2c.pl                     |   38 +
 minilibx_linux/test/Makefile.gen            |   26 +
 minilibx_linux/test/Makefile.mk             |   24 +
 minilibx_linux/test/main.c                  |  284 ++++++
 minilibx_linux/test/new_win.c               |   31 +
 minilibx_linux/test/open.xpm                | 1439 +++++++++++++++++++++++++++
 minilibx_linux/test/open24.xpm              |  230 +++++
 minilibx_linux/test/open30.xpm              | 1439 +++++++++++++++++++++++++++
 51 files changed, 7370 insertions(+)
 create mode 100644 minilibx_linux/Makefile
 create mode 100644 minilibx_linux/Makefile.gen
 create mode 100644 minilibx_linux/Makefile.mk
 create mode 100644 minilibx_linux/README
 create mode 100644 minilibx_linux/README.md
 create mode 100755 minilibx_linux/configure
 create mode 100644 minilibx_linux/man/man3/mlx.3
 create mode 100644 minilibx_linux/man/man3/mlx_loop.3
 create mode 100644 minilibx_linux/man/man3/mlx_new_image.3
 create mode 100644 minilibx_linux/man/man3/mlx_new_window.3
 create mode 100644 minilibx_linux/man/man3/mlx_pixel_put.3
 create mode 100644 minilibx_linux/mlx.h
 create mode 100644 minilibx_linux/mlx.pc
 create mode 100644 minilibx_linux/mlx_clear_window.c
 create mode 100644 minilibx_linux/mlx_destroy_image.c
 create mode 100644 minilibx_linux/mlx_destroy_window.c
 create mode 100644 minilibx_linux/mlx_expose_hook.c
 create mode 100644 minilibx_linux/mlx_flush_event.c
 create mode 100644 minilibx_linux/mlx_get_color_value.c
 create mode 100644 minilibx_linux/mlx_get_data_addr.c
 create mode 100644 minilibx_linux/mlx_hook.c
 create mode 100644 minilibx_linux/mlx_init.c
 create mode 100644 minilibx_linux/mlx_int.h
 create mode 100644 minilibx_linux/mlx_int_anti_resize_win.c
 create mode 100644 minilibx_linux/mlx_int_do_nothing.c
 create mode 100644 minilibx_linux/mlx_int_get_visual.c
 create mode 100644 minilibx_linux/mlx_int_param_event.c
 create mode 100644 minilibx_linux/mlx_int_set_win_event_mask.c
 create mode 100644 minilibx_linux/mlx_int_str_to_wordtab.c
 create mode 100644 minilibx_linux/mlx_int_wait_first_expose.c
 create mode 100644 minilibx_linux/mlx_key_hook.c
 create mode 100644 minilibx_linux/mlx_lib_xpm.c
 create mode 100644 minilibx_linux/mlx_loop.c
 create mode 100644 minilibx_linux/mlx_loop_hook.c
 create mode 100644 minilibx_linux/mlx_mouse_hook.c
 create mode 100644 minilibx_linux/mlx_new_image.c
 create mode 100644 minilibx_linux/mlx_new_window.c
 create mode 100644 minilibx_linux/mlx_pixel_put.c
 create mode 100644 minilibx_linux/mlx_put_image_to_window.c
 create mode 100644 minilibx_linux/mlx_rgb.c
 create mode 100644 minilibx_linux/mlx_string_put.c
 create mode 100644 minilibx_linux/mlx_xpm.c
 create mode 100644 minilibx_linux/mlx_xpm.c.ok
 create mode 100755 minilibx_linux/rgb2c.pl
 create mode 100644 minilibx_linux/test/Makefile.gen
 create mode 100644 minilibx_linux/test/Makefile.mk
 create mode 100644 minilibx_linux/test/main.c
 create mode 100644 minilibx_linux/test/new_win.c
 create mode 100644 minilibx_linux/test/open.xpm
 create mode 100644 minilibx_linux/test/open24.xpm
 create mode 100644 minilibx_linux/test/open30.xpm

(limited to 'minilibx_linux')

diff --git a/minilibx_linux/Makefile b/minilibx_linux/Makefile
new file mode 100644
index 0000000..ccf7387
--- /dev/null
+++ b/minilibx_linux/Makefile
@@ -0,0 +1,25 @@
+##
+## Makefile for MiniLibX in /home/boulon/work/c/raytraceur/minilibx
+## 
+## Made by Olivier Crouzet
+## Login   <ol@epitech.net>
+## 
+## Started on  Tue Oct  5 15:56:43 2004 Olivier Crouzet
+## Last update Tue May 15 15:44:41 2007 Olivier Crouzet
+##
+
+## Please use configure script
+
+
+all	: do_configure
+
+do_configure	:
+	./configure
+
+clean	:
+	./configure clean
+
+re	: clean all
+
+install:
+	$(MAKE) -f Makefile.gen $@
diff --git a/minilibx_linux/Makefile.gen b/minilibx_linux/Makefile.gen
new file mode 100644
index 0000000..f93b892
--- /dev/null
+++ b/minilibx_linux/Makefile.gen
@@ -0,0 +1,71 @@
+INC=/usr/include
+HT=x86_64
+DOCP=do_cp
+##
+## Makefile for MiniLibX in /home/boulon/work/c/raytraceur/minilibx
+##
+## Made by Olivier Crouzet
+## Login   <ol@epitech.net>
+##
+## Started on  Tue Oct  5 15:56:43 2004 Olivier Crouzet
+## Last update Tue May 15 15:41:20 2007 Olivier Crouzet
+##
+
+## Please use configure script
+
+
+
+CC		=	gcc
+
+NAME	=	libmlx.a
+
+SRC		=	mlx_init.c \
+			mlx_new_window.c \
+			mlx_pixel_put.c \
+			mlx_loop.c \
+			mlx_mouse_hook.c \
+			mlx_key_hook.c \
+			mlx_expose_hook.c \
+			mlx_loop_hook.c \
+			mlx_int_anti_resize_win.c \
+			mlx_int_do_nothing.c \
+			mlx_int_wait_first_expose.c \
+			mlx_int_get_visual.c \
+			mlx_flush_event.c \
+			mlx_string_put.c \
+			mlx_new_image.c \
+			mlx_get_data_addr.c \
+			mlx_put_image_to_window.c \
+			mlx_get_color_value.c \
+			mlx_clear_window.c \
+			mlx_xpm.c \
+			mlx_int_str_to_wordtab.c \
+			mlx_destroy_window.c \
+			mlx_int_param_event.c \
+			mlx_int_set_win_event_mask.c \
+			mlx_hook.c \
+			mlx_rgb.c \
+			mlx_destroy_image.c
+
+OBJ		=	$(SRC:.c=.o)
+CFLAGS	=	-O3 -I$(INC)
+
+DESTDIR	=	/usr/local
+
+all: $(NAME) $(DOCP)
+
+$(NAME): $(OBJ)
+	ar -r $(NAME) $(OBJ)
+	ranlib $(NAME)
+
+do_cp:
+	cp $(NAME) libmlx_$(HT).a
+
+clean:
+	rm -f $(OBJ) $(NAME) *~ core *.core
+
+install:
+	mkdir -p $(DESTDIR)/lib && cp $(NAME) $(DESTDIR)/lib
+	mkdir -p $(DESTDIR)/lib/pkgconfig && cp mlx.pc $(DESTDIR)/lib/pkgconfig
+	mkdir -p $(DESTDIR)/include && cp mlx.h $(DESTDIR)/include
+	mkdir -p $(DESTDIR)/man/man3 && cp man/man3/*.3 $(DESTDIR)/man/man3
diff --git a/minilibx_linux/Makefile.mk b/minilibx_linux/Makefile.mk
new file mode 100644
index 0000000..4f919ac
--- /dev/null
+++ b/minilibx_linux/Makefile.mk
@@ -0,0 +1,71 @@
+##
+## Makefile for MiniLibX in /home/boulon/work/c/raytraceur/minilibx
+##
+## Made by Olivier Crouzet
+## Login   <ol@epitech.net>
+##
+## Started on  Tue Oct  5 15:56:43 2004 Olivier Crouzet
+## Last update Tue May 15 15:41:20 2007 Olivier Crouzet
+##
+
+## Please use configure script
+
+
+INC		=	%%%%
+HT		=	%%%%
+DOCP	=	%%%%
+
+CC		=	gcc
+
+NAME	=	libmlx.a
+
+SRC		=	mlx_init.c \
+			mlx_new_window.c \
+			mlx_pixel_put.c \
+			mlx_loop.c \
+			mlx_mouse_hook.c \
+			mlx_key_hook.c \
+			mlx_expose_hook.c \
+			mlx_loop_hook.c \
+			mlx_int_anti_resize_win.c \
+			mlx_int_do_nothing.c \
+			mlx_int_wait_first_expose.c \
+			mlx_int_get_visual.c \
+			mlx_flush_event.c \
+			mlx_string_put.c \
+			mlx_new_image.c \
+			mlx_get_data_addr.c \
+			mlx_put_image_to_window.c \
+			mlx_get_color_value.c \
+			mlx_clear_window.c \
+			mlx_xpm.c \
+			mlx_int_str_to_wordtab.c \
+			mlx_destroy_window.c \
+			mlx_int_param_event.c \
+			mlx_int_set_win_event_mask.c \
+			mlx_hook.c \
+			mlx_rgb.c \
+			mlx_destroy_image.c
+
+OBJ		=	$(SRC:.c=.o)
+CFLAGS	=	-O3 -I$(INC)
+
+DESTDIR	=	/usr/local
+
+all: $(NAME) $(DOCP)
+
+$(NAME): $(OBJ)
+	ar -r $(NAME) $(OBJ)
+	ranlib $(NAME)
+
+do_cp:
+	cp $(NAME) libmlx_$(HT).a
+
+clean:
+	rm -f $(OBJ) $(NAME) *~ core *.core
+
+install:
+	mkdir -p $(DESTDIR)/lib && cp $(NAME) $(DESTDIR)/lib
+	mkdir -p $(DESTDIR)/lib/pkgconfig && cp mlx.pc $(DESTDIR)/lib/pkgconfig
+	mkdir -p $(DESTDIR)/include && cp mlx.h $(DESTDIR)/include
+	mkdir -p $(DESTDIR)/man/man3 && cp man/man3/*.3 $(DESTDIR)/man/man3
diff --git a/minilibx_linux/README b/minilibx_linux/README
new file mode 100644
index 0000000..7adcb2f
--- /dev/null
+++ b/minilibx_linux/README
@@ -0,0 +1,42 @@
+
+This is the MinilibX, a simple X-Window (X11R6) programming API
+in C, designed for students, suitable for X-beginners.
+
+
+Contents
+
+ - source code in C to create the mlx library
+ - man pages (in man/ directory)
+ - a test program (in test/ directory) is built
+   with the library
+ - a public include file mlx.h
+ - a tiny configure script to generate an appropriate Makefile.gen
+
+
+Requirements
+
+ - MinilibX only support TrueColor visual type (8,15,16,24 or 32 bits depth)
+ - gcc
+ - X11 include files
+ - XShm extension must be present
+
+
+Compile MinilibX
+
+ - run ./configure or make
+   both will make a few tests, create Makefile.gen
+   and then automatically run make on this generated Makefile.gen .
+   libmlx.a and libmlx_$(HOSTTYPE).a are created.
+   test/mlx-test binary is also created.
+
+
+Install MinilibX
+
+ - no installation script is provided. You may want to install
+     - libmlx.a and/or libmlx_$(HOSTTYPE).a in /usr/X11/lib or /usr/local/lib
+     - mlx.h in /usr/X11/include or /usr/local/include
+     - man/man3/mlx*.1 in /usr/X11/man/man3 or /usr/local/man/man3
+ - or make DESTDIR=/usr/local install
+
+
+ Olivier CROUZET - 2014-01-06 -
diff --git a/minilibx_linux/README.md b/minilibx_linux/README.md
new file mode 100644
index 0000000..f75e806
--- /dev/null
+++ b/minilibx_linux/README.md
@@ -0,0 +1,131 @@
+# minilibx_linux
+
+This is a mirror of the minilibx library.
+
+Ubuntu: You need to install Xlib.h (pd-maxlib) and XShm.h (libxtst-dev) libraries to make it work on a classic 18.04/18.10 installation.
+
+```
+# sudo apt install pd-maxlib
+# sudo apt install libxtst-dev
+
+```
+
+## Original minilibx for Linux readme
+
+## What is minilibx?
+
+Minilibx is a very basic graphical library writting in C used in
+[42](https://42.fr) (also exported in US in the Silicon Valley, see [42
+US](https://42.us.org)) and in [Epitech](http://www.epitech.eu/) for infography
+project such like *fdf* and *Raytracer*.
+
+You can find a mirror to the native version for Mac OSX
+[here](https://github.com/dannywillems/minilix-mac-osx).
+
+## Compile
+
+1. Add a variable named PKG_CONFIG_PATH containing the path to the minilibx
+directory.
+2. Compile and install with
+```
+make && sudo make install
+```
+
+## Tutorials
+
+Here some tutorials and articles (in French):
+* [Installation and basic usage](https://achedeuzot.me/2014/12/20/installer-la-minilibx/)
+* [Manual](http://thomas.tissotdupont.free.fr/MinilibX%20Manual/)
+
+## Related projects
+
+* [Binding OCaml](https://github.com/dannywillems/ocaml-minilibx)
+
+## Licence
+
+Licence BSD: Copyright Olivier Crouzet - 2014
+
+Minilibx
+======================================
+
+Ce dépot est un mirroir pour la librairie graphique *minilibx*.
+
+## Qu'est-ce que minilibx ?
+
+Minilibx est une librairie graphique très basique écrite en C utilisée à
+[42](https://42.fr) (aussi exporté aux USA dans la Silicon Valley, voir [42
+US](https://42.us.org)) et à [Epitech](http://www.epitech.eu)
+
+Vous pouvez trouver un mirroir pour la version native pour Mac OSX
+[ici](https://github.com/dannywillems/minilibx-mac-osx).
+
+## Compiler
+
+1. Ajouter une variable PKG_CONFIG_PATH contenant le chemin vers le dossier de
+   la minilibx.
+2. Compilation and installation avec
+```
+make && sudo make install
+```
+
+## Tutoriels
+
+Ici des articles et des tutoriels (en français):
+
+* [Installation et utilisation basique](https://achedeuzot.me/2014/12/20/installer-la-minilibx/)
+* [Manuel](http://thomas.tissotdupont.free.fr/MinilibX%20Manual/)
+
+## Projets connexes
+
+* [Binding OCaml](https://github.com/dannywillems/ocaml-minilibx)
+
+## License
+
+License BSD: Copyright Olivier Crouzet - 2014
+
+
+## Original README
+
+
+This is the MinilibX, a simple X-Window (X11R6) programming API
+in C, designed for students, suitable for X-beginners.
+
+
+Contents
+
+ - source code in C to create the mlx library
+ - man pages (in man/ directory)
+ - a test program (in test/ directory) is built
+   with the library
+ - a public include file mlx.h
+ - a tiny configure script to generate an appropriate Makefile.gen
+
+
+Requirements
+
+ - MinilibX only support TrueColor visual type (8,15,16,24 or 32 bits depth)
+ - gcc
+ - X11 include files
+ - XShm extension must be present
+
+
+Compile MinilibX
+
+ - run ./configure or make
+   both will make a few tests, create Makefile.gen
+   and then automatically run make on this generated Makefile.gen .
+   libmlx.a and libmlx_$(HOSTTYPE).a are created.
+   test/mlx-test binary is also created.
+
+
+Install MinilibX
+
+ - no installation script is provided. You may want to install
+     - libmlx.a and/or libmlx_$(HOSTTYPE).a in /usr/X11/lib or /usr/local/lib
+     - mlx.h in /usr/X11/include or /usr/local/include
+     - man/man3/mlx*.1 in /usr/X11/man/man3 or /usr/local/man/man3
+ - or make DESTDIR=/usr/local install
+
+## Credits
+
+ Olivier CROUZET - 2014-01-06 -
diff --git a/minilibx_linux/configure b/minilibx_linux/configure
new file mode 100755
index 0000000..8366568
--- /dev/null
+++ b/minilibx_linux/configure
@@ -0,0 +1,95 @@
+#!/bin/sh
+
+
+if [ -n "$1" -a "$1" = "--help" ] ; then
+	echo "Usage : $0\n Auto-configure and make MinilibX"
+	exit
+fi
+
+
+conf_inc=NO
+
+for inc in \
+    /usr/X11/include          \
+    /usr/X11R6/include        \
+    /usr/X11R5/include        \
+    /usr/X11R4/include        \
+                              \
+    /usr/include	      \
+    /usr/include/X11          \
+    /usr/include/X11R6        \
+    /usr/include/X11R5        \
+    /usr/include/X11R4        \
+                              \
+    /usr/local/X11/include    \
+    /usr/local/X11R6/include  \
+    /usr/local/X11R5/include  \
+    /usr/local/X11R4/include  \
+                              \
+    /usr/local/include/X11    \
+    /usr/local/include/X11R6  \
+    /usr/local/include/X11R5  \
+    /usr/local/include/X11R4  \
+                              \
+    /usr/X386/include         \
+    /usr/x386/include         \
+    /usr/XFree86/include/X11  \
+                              \
+    /usr/include              \
+    /usr/local/include        \
+    /usr/athena/include       \
+    /usr/local/x11r5/include  \
+    /usr/lpp/Xamples/include  \
+                              \
+    /usr/openwin/include      \
+    /usr/openwin/share/include
+ do
+	if [ -f "$inc/X11/Xlib.h" -a -f "$inc/X11/extensions/XShm.h" ]; then
+		conf_inc=$inc
+		break
+	fi
+ done
+
+
+if [ "$conf_inc" = "NO" ]; then
+	echo "Can't find a suitable X11 include directory...."
+	exit
+else
+	echo "X11 include dir : $conf_inc"
+fi
+
+if [ -z "$HOSTTYPE" ]; then
+    conf_ht=`uname -s`
+else
+    conf_ht=$HOSTTYPE
+fi
+
+if [ -z "$conf_ht" ]; then
+    conf_docp=""
+else
+    conf_docp="do_cp"
+    echo "lib_$conf_ht generation"
+fi
+
+
+/bin/echo "INC=$conf_inc" > Makefile.gen
+/bin/echo "HT=$conf_ht" >> Makefile.gen
+/bin/echo "DOCP=$conf_docp" >> Makefile.gen
+cat Makefile.mk | grep -v %%%% >> Makefile.gen
+
+/bin/echo "INC=$conf_inc" > test/Makefile.gen
+/bin/echo "HT=$conf_ht" >> test/Makefile.gen
+/bin/echo "DOCP=$conf_docp" >> test/Makefile.gen
+cat test/Makefile.mk | grep -v %%%% >> test/Makefile.gen
+
+
+if [ -n "$1" -a "$1" = "clean" ] ; then
+    echo "Now make it clean."
+    make -f Makefile.gen clean
+    (cd test ; make -f Makefile.gen clean)
+    exit
+fi
+
+echo "Now make it."
+make -f Makefile.gen all
+#(cd test ; make -f Makefile.gen all )
diff --git a/minilibx_linux/man/man3/mlx.3 b/minilibx_linux/man/man3/mlx.3
new file mode 100644
index 0000000..9ad0ac1
--- /dev/null
+++ b/minilibx_linux/man/man3/mlx.3
@@ -0,0 +1,93 @@
+.TH MiniLibX 3 "September 19, 2002"
+.SH NAME
+MiniLibX - Simple X-Window Interface Library for students
+.SH SYNOPSYS
+#include <mlx.h>
+
+.nf
+.I void *
+.fi
+.B mlx_init
+();
+
+.SH DESCRIPTION
+MiniLibX is an easy way to create graphical software,
+without any X-Window programming knowledge. It provides
+simple window creation, a drawing tool, image and basic events
+management.
+
+.SH X-WINDOW CONCEPT
+
+X-Window is a network-oriented graphical system for Unix.
+It is based on two main parts:
+.br
+On one side, your software wants to draw something on the screen and/or
+get keyboard & mouse entries.
+.br
+On the other side, the X-Server manages the screen, keyboard and mouse
+(It is often refered to as a "display").
+.br
+A network connection must be established between these two entities to send
+drawing orders (from the software to the X-Server), and keyboard/mouse
+events (from the X-Server to the software).
+
+.SH INCLUDE FILE
+.B mlx.h
+should be included for a correct use of the MiniLibX API.
+It only contains function prototypes, no structure is needed.
+
+.SH LIBRARY FUNCTIONS
+.P
+First of all, you need to initialize the connection
+between your software and the display.
+Once this connection is established, you'll be able to
+use other MiniLibX functions to send the X-Server messages,
+like "I want to draw a yellow pixel in this window" or "did the
+user hit a key?".
+.P
+The
+.B mlx_init
+function will create this connection. No parameters are needed, ant it will
+return a
+.I "void *"
+identifier, used for further calls to the library routines.
+.P
+All other MiniLibX functions are described in the following man pages:
+
+.TP 20
+.B mlx_new_window
+: manage windows
+.TP 20
+.B mlx_pixel_put
+: draw inside window
+.TP 20
+.B mlx_new_image
+: manipulate images
+.TP 20
+.B mlx_loop
+: handle keyboard or mouse events
+
+.SH LINKING MiniLibX
+To use MiniLibX functions, you'll need to link
+your software with several libraries, including the MiniLibX library itself.
+To do this, simply add the following arguments at linking time:
+
+.B -lmlx -lXext -lX11
+
+You may also need to specify the path to these libraries, using
+the
+.B -L
+flag.
+
+
+.SH RETURN VALUES
+If
+.B mlx_init()
+fails to set up the connection to the X server, it will return NULL, otherwise
+a non-null pointer is returned as a connection identifier.
+
+.SH SEE ALSO
+mlx_new_window(3), mlx_pixel_put(3), mlx_new_image(3), mlx_loop(3)
+
+.SH AUTHOR
+Copyright ol@ - 2002-2014 - Olivier Crouzet
diff --git a/minilibx_linux/man/man3/mlx_loop.3 b/minilibx_linux/man/man3/mlx_loop.3
new file mode 100644
index 0000000..3397ce2
--- /dev/null
+++ b/minilibx_linux/man/man3/mlx_loop.3
@@ -0,0 +1,141 @@
+.TH MiniLibX 3 "September 19, 2002"
+.SH NAME
+MiniLibX - Handle events
+.SH SYNOPSYS
+
+.nf
+.I int
+.fi
+.B mlx_loop
+(
+.I void *mlx_ptr
+);
+
+.nf
+.I int
+.fi
+.B mlx_key_hook
+(
+.I void *win_ptr, int (*funct_ptr)(), void *param
+);
+
+.nf
+.I int
+.fi
+.B mlx_mouse_hook
+(
+.I void *win_ptr, int (*funct_ptr)(), void *param
+);
+
+.nf
+.I int
+.fi
+.B mlx_expose_hook
+(
+.I void *win_ptr, int (*funct_ptr)(), void *param
+);
+
+.nf
+.I int
+.fi
+.B mlx_loop_hook
+(
+.I void *mlx_ptr, int (*funct_ptr)(), void *param
+);
+
+.SH X-WINDOW EVENTS
+
+The X-Window system is bi-directionnal. On one hand, the program sends orders to
+the screen to display pixels, images, and so on. On the other hand,
+it can get information from the keyboard and mouse associated to
+the screen. To do so, the program receives "events" from the keyboard or the
+mouse.
+
+.SH DESCRIPTION
+
+To receive events, you must use
+.B mlx_loop
+(). This function never returns. It is an infinite loop that waits for
+an event, and then calls a user-defined function associated with this event.
+A single parameter is needed, the connection identifier
+.I mlx_ptr
+(see the
+.B mlx manual).
+
+You can assign different functions to the three following events:
+.br
+- A key is pressed
+.br
+- The mouse button is pressed
+.br
+- A part of the window should be re-drawn
+(this is called an "expose" event, and it is your program's job to handle it).
+.br
+
+Each window can define a different function for the same event.
+
+The three functions
+.B mlx_key_hook
+(),
+.B mlx_mouse_hook
+() and
+.B mlx_expose_hook
+() work exactly the same way.
+.I funct_ptr
+is a pointer to the function you want to be called
+when an event occurs. This assignment is specific to the window defined by the
+.I win_ptr
+identifier. The
+.I param
+adress will be passed to the function everytime it is called, and should be
+used to store the parameters it might need.
+
+The syntax for the
+.B mlx_loop_hook
+() function is identical to the previous ones, but the given function will be
+called when no event occurs.
+
+When it catches an event, the MiniLibX calls the corresponding function
+with fixed parameters:
+.nf
+
+  expose_hook(void *param);
+  key_hook(int keycode,void *param);
+  mouse_hook(int button,int x,int y,void *param);
+  loop_hook(void *param);
+
+.fi
+These function names are arbitrary. They here are used to distinguish
+parameters according to the event. These functions are NOT part of the
+MiniLibX.
+
+.I param
+is the address specified in the mlx_*_hook calls. This address is never
+used nor modified by the MiniLibX. On key and mouse events, additional
+information is passed:
+.I keycode
+tells you which key is pressed (look for the X11 include file "keysymdef.h"),
+(
+.I x
+,
+.I y
+) are the coordinates of the mouse click in the window, and
+.I button
+tells you which mouse button was pressed.
+
+.SH GOING FURTHER WITH EVENTS
+The MiniLibX provides a much generic access to all X-Window events. The
+.I mlx.h
+include define
+.B mlx_hook()
+in the same manner mlx_*_hook functions work. The event and mask values
+will be taken from the X11 include file "X.h".
+
+See source code of mlx_int_param_event.c to find out how the MiniLibX will
+call your own function for a specific event.
+
+.SH SEE ALSO
+mlx(3), mlx_new_window(3), mlx_pixel_put(3), mlx_new_image(3)
+
+.SH AUTHOR
+Copyright ol@ - 2002-2014 - Olivier Crouzet
diff --git a/minilibx_linux/man/man3/mlx_new_image.3 b/minilibx_linux/man/man3/mlx_new_image.3
new file mode 100644
index 0000000..f2160a2
--- /dev/null
+++ b/minilibx_linux/man/man3/mlx_new_image.3
@@ -0,0 +1,192 @@
+.TH MiniLibX 3 "September 19, 2002"
+.SH NAME
+MiniLibX - Manipulating images
+.SH SYNOPSYS
+
+.nf
+.I void *
+.fi
+.B mlx_new_image
+(
+.I void *mlx_ptr, int width, int height
+);
+
+.nf
+.I char *
+.fi
+.B mlx_get_data_addr
+(
+.I void *img_ptr, int *bits_per_pixel, int *size_line, int *endian
+);
+
+.nf
+.I int
+.fi
+.B mlx_put_image_to_window
+(
+.I void *mlx_ptr, void *win_ptr, void *img_ptr, int x, int y
+);
+
+.nf
+.I unsigned int
+.fi
+.B mlx_get_color_value
+(
+.I void *mlx_ptr, int color
+);
+
+.nf
+.I void *
+.fi
+.B mlx_xpm_to_image
+(
+.I void *mlx_ptr, char **xpm_data, int *width, int *height
+);
+
+.nf
+.I void *
+.fi
+.B mlx_xpm_file_to_image
+(
+.I void *mlx_ptr, char *filename, int *width, int *height
+);
+
+.nf
+.I int
+.fi
+.B mlx_destroy_image
+(
+.I void *mlx_ptr, void *img_ptr
+);
+
+
+.SH DESCRIPTION
+
+.B mlx_new_image
+() creates a new image in memory. It returns a
+.I void *
+identifier needed to manipulate this image later. It only needs
+the size of the image to be created, using the
+.I width
+and
+.I height
+parameters, and the
+.I mlx_ptr
+connection identifier (see the
+.B mlx
+manual).
+
+The user can draw inside the image (see below), and
+can dump the image inside a specified window at any time to
+display it on the screen. This is done using
+.B mlx_put_image_to_window
+(). Three identifiers are needed here, for the connection to the
+display, the window to use, and the image (respectively
+.I mlx_ptr
+,
+.I win_ptr
+and
+.I img_ptr
+). The (
+.I x
+,
+.I y
+) coordinates define where the image should be placed in the window.
+
+.B mlx_get_data_addr
+() returns information about the created image, allowing a user
+to modify it later. The
+.I img_ptr
+parameter specifies the image to use. The three next parameters should
+be the addresses of three different valid integers.
+.I bits_per_pixel
+will be filled with the number of bits needed to represent a pixel color
+(also called the depth of the image).
+.I size_line
+is the number of bytes used to store one line of the image in memory.
+This information is needed to move from one line to another in the image.
+.I endian
+tells you wether the pixel color in the image needs to be stored in
+little endian (
+.I endian
+== 0), or big endian (
+.I endian
+== 1).
+
+.B mlx_get_data_addr
+returns a
+.I char *
+address that represents the begining of the memory area where the image
+is stored. From this adress, the first
+.I bits_per_pixel
+bits represent the color of the first pixel in the first line of
+the image. The second group of
+.I bits_per_pixel
+bits represent the second pixel of the first line, and so on.
+Add
+.I size_line
+to the adress to get the begining of the second line. You can reach any
+pixels of the image that way.
+
+.B mlx_destroy_image
+destroys the given image (
+.I img_ptr
+).
+
+.SH STORING COLOR INSIDE IMAGES
+
+Depending on the display, the number of bits used to store a pixel color
+can change. The user usually represents a color in RGB mode, using
+one byte for each component (see
+.B mlx_pixel_put
+manual). This must be translated to fit the
+.I bits_per_pixel
+requirement of the image, and make the color understandable to the X-Server.
+That is the purpose of the
+.B mlx_get_color_value
+() function. It takes a standard RGB
+.I color
+parameter, and returns an
+.I unsigned int
+value.
+The
+.I bits_per_pixel
+least significant bits of this value can be stored in the image.
+
+Keep in mind that the least significant bits position depends on the local
+computer's endian. If the endian of the image (in fact the endian of
+the X-Server's computer) differs from the local endian, then the value should
+be transformed before being used.
+
+.SH XPM IMAGES
+
+The
+.B mlx_xpm_to_image
+() and
+.B mlx_xpm_file_to_image
+() functions will create a new image the same way.
+They will fill it using the specified
+.I xpm_data
+or
+.I filename
+, depending on which function is used.
+Note that MiniLibX does not use the standard
+Xpm library to deal with xpm images. You may not be able to
+read all types of xpm images. It however handles transparency.
+
+.SH RETURN VALUES
+The three functions that create images,
+.B mlx_new_image()
+,
+.B mlx_xpm_to_image()
+and
+.B mlx_xpm_file_to_image()
+, will return NULL if an error occurs. Otherwise they return a non-null pointer
+as an image identifier.
+
+
+.SH SEE ALSO
+mlx(3), mlx_new_window(3), mlx_pixel_put(3), mlx_loop(3)
+
+.SH AUTHOR
+Copyright ol@ - 2002-2014 - Olivier Crouzet
diff --git a/minilibx_linux/man/man3/mlx_new_window.3 b/minilibx_linux/man/man3/mlx_new_window.3
new file mode 100644
index 0000000..90f6d47
--- /dev/null
+++ b/minilibx_linux/man/man3/mlx_new_window.3
@@ -0,0 +1,79 @@
+.TH MiniLibX 3 "September 19, 2002"
+.SH NAME
+MiniLibX - Managing windows
+.SH SYNOPSYS
+
+.nf
+.I void *
+.fi
+.B mlx_new_window
+(
+.I void *mlx_ptr, int size_x, int size_y, char *title
+);
+
+.nf
+.I int
+.fi
+.B mlx_clear_window
+(
+.I void *mlx_ptr, void *win_ptr
+);
+
+.nf
+.I int
+.fi
+.B mlx_destroy_window
+(
+.I void *mlx_ptr, void *win_ptr
+);
+
+
+.SH DESCRIPTION
+The
+.B mlx_new_window
+() function creates a new window on the screen, using the
+.I size_x
+and
+.I size_y
+parameters to determine its size, and
+.I title
+as the text that should be displayed in the window's title bar.
+The
+.I mlx_ptr
+parameter is the connection identifier returned by
+.B mlx_init
+() (see the
+.B mlx
+man page).
+.B mlx_new_window
+() returns a
+.I void *
+window identifier that can be used by other MiniLibX calls.
+Note that the MiniLibX
+can handle an arbitrary number of separate windows.
+
+.B mlx_clear_window
+() and
+.B mlx_destroy_window
+() respectively clear (in black) and destroy the given window. They both have
+the same parameters:
+.I mlx_ptr
+is the screen connection identifier, and
+.I win_ptr
+is a window identifier.
+
+.SH RETURN VALUES
+If
+.B mlx_new_window()
+fails to create a new window (for wathever reason), it will return NULL,
+otherwise a non-null pointer is returned as a window identifier.
+.B mlx_clear_window
+and
+.B mlx_destroy_window
+right now return nothing.
+
+.SH SEE ALSO
+mlx(3), mlx_pixel_put(3), mlx_new_image(3), mlx_loop(3)
+
+.SH AUTHOR
+Copyright ol@ - 2002-2014 - Olivier Crouzet
diff --git a/minilibx_linux/man/man3/mlx_pixel_put.3 b/minilibx_linux/man/man3/mlx_pixel_put.3
new file mode 100644
index 0000000..f4d131e
--- /dev/null
+++ b/minilibx_linux/man/man3/mlx_pixel_put.3
@@ -0,0 +1,81 @@
+.TH MiniLibX 3 "September 19, 2002"
+.SH NAME
+MiniLibX - Drawing inside windows
+.SH SYNOPSYS
+
+.nf
+.I int
+.fi
+.B mlx_pixel_put
+(
+.I void *mlx_ptr, void *win_ptr, int x, int y, int color
+);
+
+.nf
+.I int
+.fi
+.B mlx_string_put
+(
+.I void *mlx_ptr, void *win_ptr, int x, int y, int color, char *string
+);
+
+
+.SH DESCRIPTION
+The
+.B mlx_pixel_put
+() function draws a defined pixel in the window
+.I win_ptr
+using the (
+.I x
+,
+.I y
+) coordinates, and the specified
+.I color
+\&. The origin (0,0) is the upper left corner of the window, the x and y axis
+respectively pointing right and down. The connection
+identifier,
+.I mlx_ptr
+, is needed (see the
+.B mlx
+man page).
+
+Parameters for
+.B mlx_string_put
+() have the same meaning. Instead of a simple pixel, the specified
+.I string
+will be displayed at (
+.I x
+,
+.I y
+).
+
+In both functions, it is impossible to display anything outside the
+specified window, nor display in another window in front of the selected one.
+
+.SH COLOR MANAGEMENT
+The
+.I color
+parameter has an integer type. The displayed color needs to be encoded
+in this integer, following a defined scheme. All displayable colors
+can be split in 3 basic colors: red, green and blue. Three associated
+values, in the 0-255 range, represent how much of each color is mixed up
+to create the original color. Theses three values must be set inside the
+integer to display the right color. The three least significant bytes of
+this integer are filled as shown in the picture below:
+
+.nf
+        | 0 | R | G | B |   color integer
+        +---+---+---+---+
+.fi
+
+
+While filling the integer, make sure you avoid endian problems. Remember
+that the "blue" byte should always be the least significant one.
+
+
+.SH SEE ALSO
+mlx(3), mlx_new_window(3), mlx_new_image(3), mlx_loop(3)
+
+
+.SH AUTHOR
+Copyright ol@ - 2002-2014 - Olivier Crouzet
diff --git a/minilibx_linux/mlx.h b/minilibx_linux/mlx.h
new file mode 100644
index 0000000..a2cc7e5
--- /dev/null
+++ b/minilibx_linux/mlx.h
@@ -0,0 +1,129 @@
+/*
+** mlx.h for MinilibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Mon Jul 31 16:37:50 2000 Charlie Root
+** Last update Tue May 15 16:23:28 2007 Olivier Crouzet
+*/
+
+/*
+**   MinilibX -  Please report bugs
+*/
+
+
+/*
+** FR msg - FR msg - FR msg
+**
+** La MinilibX utilise 2 librairies supplementaires qu'il
+**      est necessaire de rajouter a la compilation :
+**   -lmlx -lXext -lX11
+**
+** La MinilibX permet le chargement des images de type Xpm.
+** Notez que cette implementation est incomplete.
+** Merci de communiquer tout probleme de chargement d'image
+** de ce type.
+*/
+
+
+#ifndef MLX_H
+
+#define	MLX_H
+
+
+void	*mlx_init();
+/*
+**  needed before everything else.
+**  return (void *)0 if failed
+*/
+
+
+/*
+** Basic actions
+*/
+
+void	*mlx_new_window(void *mlx_ptr, int size_x, int size_y, char const *title);
+/*
+**  return void *0 if failed
+*/
+int	mlx_clear_window(void *mlx_ptr, void *win_ptr);
+int	mlx_pixel_put(void *mlx_ptr, void *win_ptr, int x, int y, int color);
+/*
+**  origin for x & y is top left corner of the window
+**  y down is positive
+**  color is 0x00RRGGBB
+*/
+
+
+/*
+** Image stuff
+*/
+
+void	*mlx_new_image(void *mlx_ptr,int width,int height);
+/*
+**  return void *0 if failed
+**  obsolete : image2 data is stored using bit planes
+**  void	*mlx_new_image2(void *mlx_ptr,int width,int height);
+*/
+char	*mlx_get_data_addr(void *img_ptr, int *bits_per_pixel,
+			   int *size_line, int *endian);
+/*
+**  endian : 0 = sever X is little endian, 1 = big endian
+**  for mlx_new_image2, 2nd arg of mlx_get_data_addr is number_of_planes
+*/
+int	mlx_put_image_to_window(void *mlx_ptr, void *win_ptr, void *img_ptr,
+				int x, int y);
+unsigned int	mlx_get_color_value(void *mlx_ptr, int color);
+
+
+/*
+** dealing with Events
+*/
+
+int	mlx_mouse_hook (void *win_ptr, int (*funct_ptr)(), void *param);
+int	mlx_key_hook (void *win_ptr, int (*funct_ptr)(), void *param);
+int	mlx_expose_hook (void *win_ptr, int (*funct_ptr)(), void *param);
+
+int	mlx_loop_hook (void *mlx_ptr, int (*funct_ptr)(), void *param);
+int	mlx_loop (void *mlx_ptr);
+
+
+/*
+**  hook funct are called as follow :
+**
+**   expose_hook(void *param);
+**   key_hook(int keycode, void *param);
+**   mouse_hook(int button, int x,int y, void *param);
+**   loop_hook(void *param);
+**
+*/
+
+
+/*
+**  Usually asked...
+*/
+
+int	mlx_string_put(void *mlx_ptr, void *win_ptr, int x, int y, int color,
+		       char *string);
+void	*mlx_xpm_to_image(void *mlx_ptr, char **xpm_data,
+			  int *width, int *height);
+void	*mlx_xpm_file_to_image(void *mlx_ptr, char const *filename,
+			       int *width, int *height);
+int	mlx_destroy_window(void *mlx_ptr, void *win_ptr);
+
+int	mlx_destroy_image(void *mlx_ptr, void *img_ptr);
+
+/*
+**  generic hook system for all events, and minilibX functions that
+**    can be hooked. Some macro and defines from X11/X.h are needed here.
+*/
+
+int	mlx_hook(void *win_ptr, int x_event, int x_mask,
+                 int (*funct)(), void *param);
+
+int	mlx_do_key_autorepeatoff(void *mlx_ptr);
+int	mlx_do_key_autorepeaton(void *mlx_ptr);
+int	mlx_do_sync(void *mlx_ptr);
+
+#endif /* MLX_H */
diff --git a/minilibx_linux/mlx.pc b/minilibx_linux/mlx.pc
new file mode 100644
index 0000000..e032212
--- /dev/null
+++ b/minilibx_linux/mlx.pc
@@ -0,0 +1,12 @@
+prefix=/usr/local
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: MiniLibX
+Description: Simple X-Window Interface Library for students
+Version: 2014-01-06
+URL: https://projects.intrav2.42.fr/fdf/mine
+Requires.private: xext x11 libbsd
+Libs: -L${libdir} -lmlx
+Cflags: -I${includedir}
diff --git a/minilibx_linux/mlx_clear_window.c b/minilibx_linux/mlx_clear_window.c
new file mode 100644
index 0000000..f621090
--- /dev/null
+++ b/minilibx_linux/mlx_clear_window.c
@@ -0,0 +1,21 @@
+/*
+** mlx_clear_window.c for MiniLibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Thu Sep  7 19:46:15 2000 Charlie Root
+** Last update Tue Sep 25 17:11:19 2001 Charlie Root
+*/
+
+
+
+#include	"mlx_int.h"
+
+
+int		mlx_clear_window(t_xvar *xvar,t_win_list *win)
+{
+  XClearWindow(xvar->display,win->window);
+  if (xvar->do_flush)
+    XFlush(xvar->display);
+}
diff --git a/minilibx_linux/mlx_destroy_image.c b/minilibx_linux/mlx_destroy_image.c
new file mode 100644
index 0000000..afd4d1a
--- /dev/null
+++ b/minilibx_linux/mlx_destroy_image.c
@@ -0,0 +1,31 @@
+/*
+** mlx_destroy_image.c for MinilibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Tue Mar 12 10:25:15 2002 Charlie Root
+** Last update Tue May 15 16:45:54 2007 Olivier Crouzet
+*/
+
+
+#include	"mlx_int.h"
+
+
+int	mlx_destroy_image(t_xvar *xvar, t_img *img)
+{
+  if (img->type == MLX_TYPE_SHM_PIXMAP ||
+      img->type == MLX_TYPE_SHM)
+    {
+      XShmDetach(xvar->display, &(img->shm));
+      shmdt(img->shm.shmaddr);
+      /* shmctl IPC_RMID already done */
+    }
+  XDestroyImage(img->image);  /* For image & shm-image. Also free img->data */
+  XFreePixmap(xvar->display, img->pix);
+  if (img->gc)
+    XFreeGC(xvar->display, img->gc);
+  free(img);
+  if (xvar->do_flush)
+    XFlush(xvar->display);
+}
diff --git a/minilibx_linux/mlx_destroy_window.c b/minilibx_linux/mlx_destroy_window.c
new file mode 100644
index 0000000..464790c
--- /dev/null
+++ b/minilibx_linux/mlx_destroy_window.c
@@ -0,0 +1,38 @@
+/*
+** mlx_destroy_window.c for MinilibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Tue Mar 12 10:25:15 2002 Charlie Root
+** Last update Tue May 15 16:46:08 2007 Olivier Crouzet
+*/
+
+
+#include	"mlx_int.h"
+
+
+int	mlx_destroy_window(t_xvar *xvar,t_win_list *win)
+{
+  t_win_list	*w;
+  t_win_list	*prev;
+  t_win_list	first;
+
+  first.next = xvar->win_list;
+  prev = &first;
+  w = prev->next;
+  while (w)
+    {
+      if (w==win)
+	prev->next = w->next;
+      else
+	prev = w;
+      w = w->next;
+    }
+  xvar->win_list = first.next;
+  XDestroyWindow(xvar->display,win->window);
+  XFreeGC(xvar->display,win->gc);
+  free(win);
+  if (xvar->do_flush)
+    XFlush(xvar->display);
+}
diff --git a/minilibx_linux/mlx_expose_hook.c b/minilibx_linux/mlx_expose_hook.c
new file mode 100644
index 0000000..b00b675
--- /dev/null
+++ b/minilibx_linux/mlx_expose_hook.c
@@ -0,0 +1,22 @@
+/*
+** mlx_expose_hook.c for MiniLibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Thu Aug  3 11:49:06 2000 Charlie Root
+** Last update Fri Feb 23 17:07:42 2001 Charlie Root
+*/
+
+
+#include	"mlx_int.h"
+
+
+
+
+int		mlx_expose_hook(t_win_list *win,int (*funct)(),void *param)
+{
+  win->hooks[Expose].hook = funct;
+  win->hooks[Expose].param = param;
+  win->hooks[Expose].mask = ExposureMask;
+}
diff --git a/minilibx_linux/mlx_flush_event.c b/minilibx_linux/mlx_flush_event.c
new file mode 100644
index 0000000..1e586ad
--- /dev/null
+++ b/minilibx_linux/mlx_flush_event.c
@@ -0,0 +1,25 @@
+/*
+** mlx_flush_event.c for MiniLibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Wed Aug  2 18:58:11 2000 Charlie Root
+** Last update Fri Feb 23 17:08:48 2001 Charlie Root
+*/
+
+
+#include	"mlx_int.h"
+
+
+
+
+int	mlx_flush_event(t_xvar *xvar)
+{
+  XEvent	ev;
+
+  while (XPending(xvar->display))
+  {
+     XNextEvent(xvar->display,&ev);
+  }
+}
diff --git a/minilibx_linux/mlx_get_color_value.c b/minilibx_linux/mlx_get_color_value.c
new file mode 100644
index 0000000..b620970
--- /dev/null
+++ b/minilibx_linux/mlx_get_color_value.c
@@ -0,0 +1,33 @@
+/*
+** mlx_get_color_value.c for MiniLibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Mon Jul 31 19:01:33 2000 Charlie Root
+** Last update Thu Oct  4 15:04:13 2001 Charlie Root
+*/
+
+
+#include	"mlx_int.h"
+
+
+int             mlx_get_color_value(t_xvar *xvar,int color)
+{
+  return(mlx_int_get_good_color(xvar,color));
+}
+
+int		mlx_int_get_good_color(t_xvar *xvar,int color)
+{
+  XColor	xc;
+
+  if (xvar->depth>=24)
+    return (color);
+  xc.red = (color>>8)&0xFF00;
+  xc.green = color&0xFF00;
+  xc.blue = (color<<8)&0xFF00;
+  xc.pixel = ((xc.red>>(16-xvar->decrgb[1]))<<xvar->decrgb[0])+
+    ((xc.green>>(16-xvar->decrgb[3]))<<xvar->decrgb[2])+
+    ((xc.blue>>(16-xvar->decrgb[5]))<<xvar->decrgb[4]);
+  return (xc.pixel);
+}
diff --git a/minilibx_linux/mlx_get_data_addr.c b/minilibx_linux/mlx_get_data_addr.c
new file mode 100644
index 0000000..45e7a85
--- /dev/null
+++ b/minilibx_linux/mlx_get_data_addr.c
@@ -0,0 +1,23 @@
+/*
+** mlx_get_data_addr.c for MiniLibX in raytraceur
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Mon Aug 14 15:45:57 2000 Charlie Root
+** Last update Thu Sep 27 19:05:25 2001 Charlie Root
+*/
+
+
+
+#include	"mlx_int.h"
+
+
+char	*mlx_get_data_addr(t_img *img,int *bits_per_pixel,
+			   int *size_line,int *endian)
+{
+  *bits_per_pixel = img->bpp;
+  *size_line = img->size_line;
+  *endian = img->image->byte_order;
+  return (img->data);
+}
diff --git a/minilibx_linux/mlx_hook.c b/minilibx_linux/mlx_hook.c
new file mode 100644
index 0000000..98e509a
--- /dev/null
+++ b/minilibx_linux/mlx_hook.c
@@ -0,0 +1,40 @@
+/*
+** mlx_hook.c for MiniLibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Thu Aug  3 11:49:06 2000 Charlie Root
+** Last update Fri Jan 28 17:05:28 2005 Olivier Crouzet
+*/
+
+
+#include	"mlx_int.h"
+
+
+
+
+int	mlx_hook(t_win_list *win, int x_event, int x_mask, 
+		 int (*funct)(),void *param)
+{
+  win->hooks[x_event].hook = funct;
+  win->hooks[x_event].param = param;
+  win->hooks[x_event].mask = x_mask;
+}
+
+
+int	mlx_do_key_autorepeatoff(t_xvar *xvar)
+{
+  XAutoRepeatOff(xvar->display);
+}
+
+int	mlx_do_key_autorepeaton(t_xvar *xvar)
+{
+  XAutoRepeatOn(xvar->display);
+}
+
+
+int	mlx_do_sync(t_xvar *xvar)
+{
+  XSync(xvar->display, False);
+}
diff --git a/minilibx_linux/mlx_init.c b/minilibx_linux/mlx_init.c
new file mode 100644
index 0000000..7a8db8f
--- /dev/null
+++ b/minilibx_linux/mlx_init.c
@@ -0,0 +1,91 @@
+/*
+** mlx_init.c for MiniLibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Mon Jul 31 16:52:42 2000 Charlie Root
+** Last update Fri Jan 28 17:05:09 2005 Olivier Crouzet
+*/
+
+
+#include	"mlx_int.h"
+
+
+
+void		*mlx_init()
+{
+  t_xvar	*xvar;
+  
+  if (!(xvar = malloc(sizeof(*xvar))) || (xvar->display = XOpenDisplay(""))==0)
+    return ((void *)0);
+  xvar->screen = DefaultScreen(xvar->display);
+  xvar->root = DefaultRootWindow(xvar->display);
+  xvar->cmap = DefaultColormap(xvar->display,xvar->screen);
+  xvar->depth = DefaultDepth(xvar->display,xvar->screen);
+  if (mlx_int_get_visual(xvar)==-1)
+    {
+      printf(ERR_NO_TRUECOLOR);
+      exit(1);
+    }
+  xvar->win_list = 0;
+  xvar->loop_hook = 0;
+  xvar->loop_param = (void *)0;
+  xvar->do_flush = 1;
+  mlx_int_deal_shm(xvar);
+  if (xvar->private_cmap)
+    xvar->cmap = XCreateColormap(xvar->display,xvar->root,
+				 xvar->visual,AllocNone);
+  mlx_int_rgb_conversion(xvar);
+  return (xvar);
+}
+
+
+/*
+** pshm_format of -1 :  Not XYBitmap|XYPixmap|ZPixmap
+** alpha libX need a check of the DISPLAY env var, or shm is allowed
+** in remote Xserver connections.
+*/
+
+int	mlx_int_deal_shm(t_xvar *xvar)
+{
+  int	use_pshm;
+  int	bidon;
+  char	*dpy;
+  char	buff[33];
+
+  xvar->use_xshm = XShmQueryVersion(xvar->display,&bidon,&bidon,&(use_pshm));
+  if (xvar->use_xshm && use_pshm)
+    xvar->pshm_format = XShmPixmapFormat(xvar->display);
+  else
+    xvar->pshm_format = -1;
+  gethostname(buff,32);
+  dpy = getenv(ENV_DISPLAY);
+  if (dpy && strlen(dpy) && *dpy!=':' && strncmp(dpy,buff,strlen(buff)) &&
+      strncmp(dpy,LOCALHOST,strlen(LOCALHOST)) )
+    {
+      xvar->pshm_format = -1;
+      xvar->use_xshm = 0;
+    }
+}
+
+/*
+** TrueColor Visual is needed to have *_mask correctly set
+*/
+
+int	mlx_int_rgb_conversion(t_xvar *xvar)
+{
+  bzero(xvar->decrgb,sizeof(int)*6);
+  while (!(xvar->visual->red_mask&1))
+    { xvar->visual->red_mask >>= 1; xvar->decrgb[0] ++; }
+  while (xvar->visual->red_mask&1)
+    { xvar->visual->red_mask >>= 1; xvar->decrgb[1] ++; }
+  while (!(xvar->visual->green_mask&1))
+    { xvar->visual->green_mask >>= 1; xvar->decrgb[2] ++; }
+  while (xvar->visual->green_mask&1)
+    { xvar->visual->green_mask >>= 1; xvar->decrgb[3] ++; }
+  while (!(xvar->visual->blue_mask&1))
+    { xvar->visual->blue_mask >>= 1; xvar->decrgb[4] ++; }
+  while (xvar->visual->blue_mask&1)
+    { xvar->visual->blue_mask >>= 1; xvar->decrgb[5] ++; }
+}
diff --git a/minilibx_linux/mlx_int.h b/minilibx_linux/mlx_int.h
new file mode 100644
index 0000000..4349f5f
--- /dev/null
+++ b/minilibx_linux/mlx_int.h
@@ -0,0 +1,125 @@
+/*
+** mlx_int.h for mlx in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Mon Jul 31 16:45:48 2000 Charlie Root
+** Last update Wed May 25 16:44:16 2011 Olivier Crouzet
+*/
+
+
+
+/*
+** Internal settings for MiniLibX
+*/
+
+
+#include	<stdlib.h>
+#include	<stdio.h>
+#include	<string.h>
+#include        <unistd.h>
+#include        <fcntl.h>
+#include        <sys/mman.h>
+#include	<X11/Xlib.h>
+#include	<X11/Xutil.h>
+#include	<sys/ipc.h>
+#include	<sys/shm.h>
+#include	<X11/extensions/XShm.h>
+/* #include	<X11/xpm.h> */
+
+
+#define	MLX_TYPE_SHM_PIXMAP	3
+#define	MLX_TYPE_SHM		2
+#define	MLX_TYPE_XIMAGE		1
+
+#define	MLX_MAX_EVENT		LASTEvent
+
+
+#define	ENV_DISPLAY		"DISPLAY"
+#define	LOCALHOST		"localhost"
+#define	ERR_NO_TRUECOLOR	"MinilibX Error : No TrueColor Visual available.\n"
+#define	WARN_SHM_ATTACH		"MinilibX Warning : X server can't attach shared memory.\n"
+
+
+typedef	struct	s_xpm_col
+{
+  int		name;
+  int		col;
+} t_xpm_col;
+
+
+struct	s_col_name
+{
+  char	*name;
+  int	color;
+};
+
+typedef struct	s_event_list
+{
+  int		mask;
+  int		(*hook)();
+  void		*param;
+} t_event_list;
+
+
+typedef struct	s_win_list
+{
+  Window		window;
+  GC			gc;
+  struct s_win_list	*next;
+  int			(*mouse_hook)();
+  int			(*key_hook)();
+  int			(*expose_hook)();
+  void			*mouse_param;
+  void			*key_param;
+  void			*expose_param;
+  t_event_list		hooks[MLX_MAX_EVENT];
+} t_win_list;
+
+
+typedef struct	s_img
+{
+  XImage	*image;
+  Pixmap	pix;
+  GC		gc;
+  int		size_line;
+  int		bpp;
+  int		width;
+  int		height;
+  int		type;
+  int		format;
+  char		*data;
+  XShmSegmentInfo shm;
+} t_img;
+
+typedef struct	s_xvar
+{
+  Display	*display;
+  Window	root;
+  int		screen;
+  int		depth;
+  Visual	*visual;
+  Colormap	cmap;
+  int		private_cmap;
+  t_win_list	*win_list;
+  int		(*loop_hook)();
+  void		*loop_param;
+  int		use_xshm;
+  int		pshm_format;
+  int		do_flush;
+  int		decrgb[6];
+} t_xvar;
+
+
+int	mlx_int_do_nothing();
+int	mlx_int_get_good_color();
+int	mlx_int_find_in_pcm();
+int	mlx_int_anti_resize_win();
+int	mlx_int_wait_first_expose();
+int	mlx_int_rgb_conversion();
+int	mlx_int_deal_shm();
+void	*mlx_int_new_xshm_image();
+char    **mlx_int_str_to_wordtab();
+void	*mlx_new_image();
+int	shm_att_pb();
diff --git a/minilibx_linux/mlx_int_anti_resize_win.c b/minilibx_linux/mlx_int_anti_resize_win.c
new file mode 100644
index 0000000..2f20b44
--- /dev/null
+++ b/minilibx_linux/mlx_int_anti_resize_win.c
@@ -0,0 +1,28 @@
+/*
+** mlx_int_anti_resize_win.c for MiniLibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Tue Aug  8 14:31:05 2000 Charlie Root
+** Last update Tue Sep 25 15:56:58 2001 Charlie Root
+*/
+
+#include	"mlx_int.h"
+
+
+int	mlx_int_anti_resize_win(t_xvar *xvar,Window win,int w,int h)
+{
+  XSizeHints    hints;
+  long		toto;
+  
+  XGetWMNormalHints(xvar->display,win,&hints,&toto);
+  hints.width = w;
+  hints.height = h;
+  hints.min_width = w;
+  hints.min_height = h;
+  hints.max_width = w;
+  hints.max_height = h;
+  hints.flags = PPosition | PSize | PMinSize | PMaxSize;
+  XSetWMNormalHints(xvar->display,win,&hints);
+}
diff --git a/minilibx_linux/mlx_int_do_nothing.c b/minilibx_linux/mlx_int_do_nothing.c
new file mode 100644
index 0000000..49524e4
--- /dev/null
+++ b/minilibx_linux/mlx_int_do_nothing.c
@@ -0,0 +1,16 @@
+/*
+** mlx_int_do_nothing.c for MiniLibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Tue Aug  8 12:58:24 2000 Charlie Root
+** Last update Tue Sep 25 15:56:22 2001 Charlie Root
+*/
+
+
+
+int	mlx_int_do_nothing(void *param)
+{
+  
+}
diff --git a/minilibx_linux/mlx_int_get_visual.c b/minilibx_linux/mlx_int_get_visual.c
new file mode 100644
index 0000000..440a7ca
--- /dev/null
+++ b/minilibx_linux/mlx_int_get_visual.c
@@ -0,0 +1,39 @@
+/*
+** mlx_int_get_visual.c for MinilibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Wed Oct  3 17:01:51 2001 Charlie Root
+** Last update Thu Oct  4 15:00:45 2001 Charlie Root
+*/
+
+
+
+#include	"mlx_int.h"
+
+
+/*
+** We need a private colormap for non-default Visual.
+*/
+
+
+int		mlx_int_get_visual(t_xvar *xvar)
+{
+  XVisualInfo	*vi;
+  XVisualInfo	template;
+  int		nb_item;
+
+  xvar->private_cmap = 0;
+  xvar->visual = DefaultVisual(xvar->display,xvar->screen);
+  if (xvar->visual->class == TrueColor)
+    return (0);
+  template.class = TrueColor;
+  template.depth = xvar->depth;
+  if (!(vi = XGetVisualInfo(xvar->display,VisualDepthMask|VisualClassMask,
+			    &template,&nb_item)) )
+    return (-1);
+  xvar->visual = vi->visual;
+  xvar->private_cmap = 1;
+  return (0);
+}
diff --git a/minilibx_linux/mlx_int_param_event.c b/minilibx_linux/mlx_int_param_event.c
new file mode 100644
index 0000000..8756a22
--- /dev/null
+++ b/minilibx_linux/mlx_int_param_event.c
@@ -0,0 +1,100 @@
+/*
+** mlx_int_param_event.c for MinilibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Mon Jul 31 16:37:50 2000 Charlie Root
+** Last update Wed Oct  6 13:14:52 2004 Olivier Crouzet
+*/
+
+#include	"mlx_int.h"
+
+int	mlx_int_param_undef()
+{
+}
+
+int	mlx_int_param_KeyPress(t_xvar *xvar, XEvent *ev, t_win_list *win)
+{
+  win->hooks[KeyPress].hook(XkbKeycodeToKeysym(xvar->display,
+					       ev->xkey.keycode, 0, 0),
+			    win->hooks[KeyPress].param);
+}
+
+int	mlx_int_param_KeyRelease(t_xvar *xvar, XEvent *ev, t_win_list *win)
+{
+  win->hooks[KeyRelease].hook(XkbKeycodeToKeysym(xvar->display,
+						 ev->xkey.keycode, 0, 0),
+			      win->hooks[KeyRelease].param);
+}
+
+int	mlx_int_param_ButtonPress(t_xvar *xvar, XEvent *ev, t_win_list *win)
+{
+  win->hooks[ButtonPress].hook(ev->xbutton.button,ev->xbutton.x,ev->xbutton.y,
+			       win->hooks[ButtonPress].param);
+}
+
+int	mlx_int_param_ButtonRelease(t_xvar *xvar, XEvent *ev, t_win_list *win)
+{
+  win->hooks[ButtonRelease].hook(ev->xbutton.button,
+				 ev->xbutton.x, ev->xbutton.y,
+				 win->hooks[ButtonRelease].param);
+}
+
+int	mlx_int_param_MotionNotify(t_xvar *xvar, XEvent *ev, t_win_list *win)
+{
+  win->hooks[MotionNotify].hook(ev->xbutton.x,ev->xbutton.y,
+				win->hooks[MotionNotify].param);
+}
+
+int	mlx_int_param_Expose(t_xvar *xvar, XEvent *ev, t_win_list *win)
+{
+  if (!ev->xexpose.count)
+    win->hooks[Expose].hook(win->hooks[Expose].param);
+}
+
+
+int	mlx_int_param_generic(t_xvar *xvar, XEvent *ev, t_win_list *win)
+{
+  win->hooks[ev->type].hook(win->hooks[ev->type].param);
+}
+
+int	(*(mlx_int_param_event[]))() =
+{
+  mlx_int_param_undef,   /* 0 */
+  mlx_int_param_undef,
+  mlx_int_param_KeyPress,
+  mlx_int_param_KeyRelease,  /* 3 */
+  mlx_int_param_ButtonPress,
+  mlx_int_param_ButtonRelease,
+  mlx_int_param_MotionNotify,  /* 6 */
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_Expose,   /* 12 */
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic,
+  mlx_int_param_generic
+};
diff --git a/minilibx_linux/mlx_int_set_win_event_mask.c b/minilibx_linux/mlx_int_set_win_event_mask.c
new file mode 100644
index 0000000..55650cd
--- /dev/null
+++ b/minilibx_linux/mlx_int_set_win_event_mask.c
@@ -0,0 +1,34 @@
+/*
+** mlx_int_set_win_event_mask.c for MiniLibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Thu Aug  3 11:49:06 2000 Charlie Root
+** Last update Fri Feb 23 17:07:42 2001 Charlie Root
+*/
+
+
+#include	"mlx_int.h"
+
+
+
+
+int	mlx_int_set_win_event_mask(t_xvar *xvar)
+{
+  t_win_list	*win;
+  int		mask;
+  int		i;
+  XSetWindowAttributes	xwa;
+
+  win = xvar->win_list;
+  while (win)
+    {
+      xwa.event_mask = 0;
+      i = MLX_MAX_EVENT;
+      while (i--)
+	xwa.event_mask |= win->hooks[i].mask;
+      XChangeWindowAttributes(xvar->display, win->window, CWEventMask, &xwa);
+      win = win->next;
+    }
+}
diff --git a/minilibx_linux/mlx_int_str_to_wordtab.c b/minilibx_linux/mlx_int_str_to_wordtab.c
new file mode 100644
index 0000000..7f92089
--- /dev/null
+++ b/minilibx_linux/mlx_int_str_to_wordtab.c
@@ -0,0 +1,113 @@
+/*
+** mlx_int_str_to_wordtab.c for MinilibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Wed Sep 13 11:36:09 2000 Charlie Root
+** Last update Fri Dec 14 11:02:09 2001 Charlie Root
+*/
+
+
+#include	"mlx_int.h"
+
+
+int	mlx_int_str_str(char *str,char *find,int len)
+{
+  int	len_f;
+  int	pos;
+  char	*s;
+  char	*f;
+
+  len_f = strlen(find);
+  if (len_f>len)
+    return (-1);
+  pos = 0;
+  while (*(str+len_f-1))
+    {
+      s = str;
+      f = find;
+      while (*(f++) == *(s++))
+        if (!*f)
+          return (pos);
+      str ++;
+      pos ++;
+    }
+  return (-1);
+}
+
+
+
+int	mlx_int_str_str_cote(char *str,char *find,int len)
+{
+  int	len_f;
+  int	pos;
+  char	*s;
+  char	*f;
+  int	cote;
+
+  len_f = strlen(find);
+  if (len_f>len)
+    return (-1);
+  cote = 0;
+  pos = 0;
+  while (*(str+len_f-1))
+    {
+      if (*str=='"')
+	cote = 1-cote;
+      if (!cote)
+	{
+	  s = str;
+	  f = find;
+	  while (*(f++) == *(s++))
+	    if (!*f)
+	      return (pos);
+	}
+      str ++;
+      pos ++;
+    }
+  return (-1);
+}
+
+
+char	**mlx_int_str_to_wordtab(char *str)
+{
+  char	**tab;
+  int	pos;
+  int	nb_word;
+  int	len;
+
+  len = strlen(str);
+  nb_word = 0;
+  pos = 0;
+  while (pos<len)
+  {
+    while (*(str+pos)==' ' || *(str+pos)=='\t')
+      pos ++;
+    if (*(str+pos))
+      nb_word ++;
+    while (*(str+pos) && *(str+pos)!=' ' && *(str+pos)!='\t')
+      pos ++;
+  }
+  if (!(tab = malloc((1+nb_word)*sizeof(*tab))))
+    return ((char **)0);
+  nb_word = 0;
+  pos = 0;
+  while (pos<len)
+    {
+      while (*(str+pos)==' ' || *(str+pos)=='\t')
+	{
+	  *(str+pos) = 0;
+	  pos ++;
+	}
+      if (*(str+pos))
+	{
+	  tab[nb_word] = str+pos;
+	  nb_word ++;
+	}
+      while (*(str+pos) && *(str+pos)!=' ' && *(str+pos)!='\t')
+	pos ++;
+    }
+  tab[nb_word] = 0;
+  return (tab);
+}
diff --git a/minilibx_linux/mlx_int_wait_first_expose.c b/minilibx_linux/mlx_int_wait_first_expose.c
new file mode 100644
index 0000000..0d549ee
--- /dev/null
+++ b/minilibx_linux/mlx_int_wait_first_expose.c
@@ -0,0 +1,23 @@
+/*
+** mlx_int_wait_first_expose.c for minilibx in 
+** 
+** Made by olivier crouzet
+** Login   <ol@epita.fr>
+** 
+** Started on  Tue Oct 17 09:26:45 2000 olivier crouzet
+** Last update Fri Feb 23 17:27:10 2001 Charlie Root
+*/
+
+
+
+#include	"mlx_int.h"
+
+
+
+int	mlx_int_wait_first_expose(t_xvar *xvar,Window win)
+{
+  XEvent	ev;
+
+  XWindowEvent(xvar->display,win,ExposureMask,&ev);
+  XPutBackEvent(xvar->display,&ev);
+}
diff --git a/minilibx_linux/mlx_key_hook.c b/minilibx_linux/mlx_key_hook.c
new file mode 100644
index 0000000..eea6484
--- /dev/null
+++ b/minilibx_linux/mlx_key_hook.c
@@ -0,0 +1,22 @@
+/*
+** mlx_key_hook.c for MiniLibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Thu Aug  3 11:49:06 2000 Charlie Root
+** Last update Fri Feb 23 17:10:09 2001 Charlie Root
+*/
+
+
+#include	"mlx_int.h"
+
+
+
+
+int		mlx_key_hook(t_win_list *win,int (*funct)(),void *param)
+{
+  win->hooks[KeyRelease].hook = funct;
+  win->hooks[KeyRelease].param = param;
+  win->hooks[KeyRelease].mask = KeyReleaseMask;
+}
diff --git a/minilibx_linux/mlx_lib_xpm.c b/minilibx_linux/mlx_lib_xpm.c
new file mode 100644
index 0000000..4a3c5ad
--- /dev/null
+++ b/minilibx_linux/mlx_lib_xpm.c
@@ -0,0 +1,96 @@
+/*
+** mlx_xpm.c for minilibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Fri Dec  8 11:07:24 2000 Charlie Root
+** Last update Thu Oct  4 16:00:22 2001 Charlie Root
+*/
+
+
+#include	"mlx_int.h"
+
+
+
+
+void		*mlx_int_xpm_f_image(t_xvar *xvar,int *width,int *height,
+				     int (*xpm_func)(),void *param)
+{
+  XImage	*img1;
+  XImage	*img2;
+  t_img		*im2;
+  XpmAttributes	xpm_att;
+
+  xpm_att.visual = xvar->visual;
+  xpm_att.colormap = xvar->cmap;
+  xpm_att.depth = xvar->depth;
+  xpm_att.bitmap_format = ZPixmap;
+  xpm_att.valuemask = XpmDepth|XpmBitmapFormat|XpmVisual|XpmColormap;
+  if (xpm_func(xvar->display,param,&img1,&img2,&xpm_att))
+    return ((void *)0);
+  if (img2)
+    XDestroyImage(img2);
+
+  if (!(im2 = (void *)mlx_new_image(xvar,img1->width,img1->height)))
+    {
+      XDestroyImage(img1);
+      return ((void *)0);
+    }
+  *width = img1->width;
+  *height = img1->height;
+  if (mlx_int_egal_img(im2->image,img1))
+    {
+      bcopy(img1->data,im2->data,img1->height*img1->bytes_per_line);
+      XDestroyImage(img1);
+      return (im2);
+    }
+  if (im2->type==MLX_TYPE_SHM_PIXMAP)
+    {
+      XFreePixmap(xvar->display,im2->pix);
+      im2->pix = XCreatePixmap(xvar->display,xvar->root,
+			       *width,*height,xvar->depth);
+    }
+  if (im2->type>MLX_TYPE_XIMAGE)
+    {
+      XShmDetach(xvar->display,&(im2->shm));
+      shmdt(im2->data);
+    }
+  XDestroyImage(im2->image);
+  im2->image = img1;
+  im2->data = img1->data;
+  im2->type = MLX_TYPE_XIMAGE;
+  im2->size_line = img1->bytes_per_line;
+  im2->bpp = img1->bits_per_pixel;
+  return (im2);
+}
+
+
+int	mlx_int_egal_img(XImage *img1,XImage *img2)
+{
+  if (img1->width!=img2->width || img1->height!=img2->height ||
+      img1->xoffset!=img2->xoffset || img1->format!=img2->format ||
+      img1->byte_order!=img2->byte_order ||
+      img1->bitmap_unit!=img2->bitmap_unit ||
+      img1->bitmap_bit_order!=img2->bitmap_bit_order ||
+      img1->bitmap_pad!=img2->bitmap_pad || img1->depth!=img2->depth ||
+      img1->bytes_per_line!=img2->bytes_per_line ||
+      img1->bits_per_pixel!=img2->bits_per_pixel ||
+      img1->red_mask!=img2->red_mask || img1->green_mask!=img2->green_mask ||
+      img1->blue_mask!=img2->blue_mask )
+    return (0);
+  return (1);
+}
+
+
+void	*mlx_xpm_file_to_image(t_xvar *xvar,char const *filename,
+			       int *width,int *height)
+{
+  return (mlx_int_xpm_f_image(xvar,width,height,XpmReadFileToImage,filename));
+}
+
+
+void	*mlx_xpm_to_image(t_xvar *xvar,char **data,int *width,int *height)
+{
+  return (mlx_int_xpm_f_image(xvar,width,height,XpmCreateImageFromData,(void *)data));
+}
diff --git a/minilibx_linux/mlx_loop.c b/minilibx_linux/mlx_loop.c
new file mode 100644
index 0000000..74af0a5
--- /dev/null
+++ b/minilibx_linux/mlx_loop.c
@@ -0,0 +1,38 @@
+/*
+** mlx_loop.c for MiniLibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Wed Aug  2 18:58:11 2000 Charlie Root
+** Last update Fri Sep 30 14:47:41 2005 Olivier Crouzet
+*/
+
+
+#include	"mlx_int.h"
+
+extern int	(*(mlx_int_param_event[]))();
+
+
+int		mlx_loop(t_xvar *xvar)
+{
+  XEvent	ev;
+  t_win_list	*win;
+
+  mlx_int_set_win_event_mask(xvar);
+  xvar->do_flush = 0;
+  while (42)
+    {
+      while (!xvar->loop_hook || XPending(xvar->display))
+	{
+	  XNextEvent(xvar->display,&ev);
+	  win = xvar->win_list;
+	  while (win && (win->window!=ev.xany.window))
+	    win = win->next;
+	  if (win && ev.type < MLX_MAX_EVENT)
+	    if (win->hooks[ev.type].hook)
+	      mlx_int_param_event[ev.type](xvar, &ev, win);
+	}
+      xvar->loop_hook(xvar->loop_param);
+    }
+}
diff --git a/minilibx_linux/mlx_loop_hook.c b/minilibx_linux/mlx_loop_hook.c
new file mode 100644
index 0000000..1f8b9ed
--- /dev/null
+++ b/minilibx_linux/mlx_loop_hook.c
@@ -0,0 +1,21 @@
+/*
+** mlx_loop_hook.c for MiniLibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Thu Aug  3 11:49:06 2000 Charlie Root
+** Last update Fri Feb 23 17:11:39 2001 Charlie Root
+*/
+
+
+#include	"mlx_int.h"
+
+
+
+
+int	mlx_loop_hook(t_xvar *xvar,int (*funct)(),void *param)
+{
+  xvar->loop_hook = funct;
+  xvar->loop_param = param;
+}
diff --git a/minilibx_linux/mlx_mouse_hook.c b/minilibx_linux/mlx_mouse_hook.c
new file mode 100644
index 0000000..cb567ab
--- /dev/null
+++ b/minilibx_linux/mlx_mouse_hook.c
@@ -0,0 +1,22 @@
+/*
+** mlx_mouse_hook.c for MiniLibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Thu Aug  3 11:49:06 2000 Charlie Root
+** Last update Fri Feb 23 17:11:05 2001 Charlie Root
+*/
+
+
+#include	"mlx_int.h"
+
+
+
+
+int		mlx_mouse_hook(t_win_list *win,int (*funct)(),void *param)
+{
+  win->hooks[ButtonPress].hook = funct;
+  win->hooks[ButtonPress].param = param;
+  win->hooks[ButtonPress].mask = ButtonPressMask;
+}
diff --git a/minilibx_linux/mlx_new_image.c b/minilibx_linux/mlx_new_image.c
new file mode 100644
index 0000000..9967401
--- /dev/null
+++ b/minilibx_linux/mlx_new_image.c
@@ -0,0 +1,155 @@
+/*
+** mlx_new_image.c for MiniLibX in raytraceur
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Mon Aug 14 15:29:14 2000 Charlie Root
+** Last update Wed May 25 16:46:31 2011 Olivier Crouzet
+*/
+
+
+
+
+#include	"mlx_int.h"
+
+/*
+** To handle X errors
+*/
+
+#define	X_ShmAttach	1
+
+int	mlx_X_error;
+
+int	shm_att_pb(Display *d,XErrorEvent *ev)
+{
+  if (ev->request_code==146 && ev->minor_code==X_ShmAttach)
+    write(2,WARN_SHM_ATTACH,strlen(WARN_SHM_ATTACH));
+  mlx_X_error = 1;
+}
+
+
+/*
+**  Data malloc :  width+32 ( bitmap_pad=32 ),    *4 = *32 / 8bit
+*/
+
+
+void	*mlx_int_new_xshm_image(t_xvar *xvar,int width,int height,int format)
+{
+  t_img	*img;
+  int	(*save_handler)();
+
+  if (!(img = malloc(sizeof(*img))))
+    return ((void *)0);
+  bzero(img,sizeof(*img));
+  img->data = 0;
+  img->image = XShmCreateImage(xvar->display,xvar->visual,xvar->depth,
+			       format,img->data,&(img->shm),width,height);
+  if (!img->image)
+    {
+      free(img);
+      return ((void *)0);
+    }
+  img->width = width;
+  img->height = height;
+  img->size_line = img->image->bytes_per_line;
+  img->bpp = img->image->bits_per_pixel;
+  img->format = format;
+  img->shm.shmid = shmget(IPC_PRIVATE,(width+32)*height*4,IPC_CREAT|0777);
+  if (img->shm.shmid==-1)
+    {
+      XDestroyImage(img->image);
+      free(img);
+      return ((void *)0);
+    }
+  img->data = img->shm.shmaddr = img->image->data = shmat(img->shm.shmid,0,0);
+  if (img->data==(void *)-1)
+    {
+      shmctl(img->shm.shmid,IPC_RMID,0);
+      XDestroyImage(img->image);
+      free(img);
+      return ((void *)0);
+    }
+  img->shm.readOnly = False;
+  mlx_X_error = 0;
+  save_handler = XSetErrorHandler(shm_att_pb);
+  if (!XShmAttach(xvar->display,&(img->shm)) ||
+      0&XSync(xvar->display,False) || mlx_X_error)
+    {
+      XSetErrorHandler(save_handler);
+      shmdt(img->data);
+      shmctl(img->shm.shmid,IPC_RMID,0);
+      XDestroyImage(img->image);
+      free(img);
+      return ((void *)0);
+    }
+  XSetErrorHandler(save_handler);
+  shmctl(img->shm.shmid,IPC_RMID,0);
+  if (xvar->pshm_format==format)
+    {
+      img->pix = XShmCreatePixmap(xvar->display,xvar->root,img->shm.shmaddr,
+				  &(img->shm),width,height,xvar->depth);
+      img->type = MLX_TYPE_SHM_PIXMAP;
+    }
+  else
+    {
+      img->pix = XCreatePixmap(xvar->display,xvar->root,
+			       width,height,xvar->depth);
+      img->type = MLX_TYPE_SHM;
+    }
+  if (xvar->do_flush)
+    XFlush(xvar->display);
+  return (img);
+}
+
+
+
+void	*mlx_int_new_image(t_xvar *xvar,int width, int height,int format)
+{
+  t_img	*img;
+
+  if (!(img = malloc(sizeof(*img))) ||
+      !(img->data = malloc((width+32)*height*4)))
+    return ((void *)0);
+  bzero(img->data,(width+32)*height*4);
+  img->image = XCreateImage(xvar->display,xvar->visual,xvar->depth,format,0,
+			    img->data,width,height,32,0);
+  if (!img->image)
+    {
+      free(img->data);
+      free(img);
+      return ((void *)0);
+    }
+  img->gc = 0;
+  img->size_line = img->image->bytes_per_line;
+  img->bpp = img->image->bits_per_pixel;
+  img->width = width;
+  img->height = height;
+  img->pix = XCreatePixmap(xvar->display,xvar->root,width,height,xvar->depth);
+  img->format = format;
+  img->type = MLX_TYPE_XIMAGE;
+  if (xvar->do_flush)
+    XFlush(xvar->display);
+  return (img);
+}
+
+
+void	*mlx_new_image(t_xvar *xvar,int width, int height)
+{
+  t_img	*img;
+
+  if (xvar->use_xshm)
+    if (img = mlx_int_new_xshm_image(xvar,width,height,ZPixmap))
+      return (img);
+  return (mlx_int_new_image(xvar,width,height,ZPixmap));
+}
+
+void	*mlx_new_image2(t_xvar *xvar,int width, int height)
+{
+  t_img	*img;
+
+  if (xvar->use_xshm)
+    if (img = mlx_int_new_xshm_image(xvar,width,height,XYPixmap))
+      return (img);
+  return (mlx_int_new_image(xvar,width,height,XYPixmap));
+}
diff --git a/minilibx_linux/mlx_new_window.c b/minilibx_linux/mlx_new_window.c
new file mode 100644
index 0000000..c049285
--- /dev/null
+++ b/minilibx_linux/mlx_new_window.c
@@ -0,0 +1,61 @@
+/*
+** mlx_new_window.c for MiniLibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Mon Jul 31 17:29:02 2000 Charlie Root
+** Last update Thu Oct  4 15:44:43 2001 Charlie Root
+*/
+
+
+/*
+** We do not use White/BlackPixel macro, TrueColor Visual make sure
+** 0 is black & -1 is white
+**
+** With mlx_int_wait_first_expose, no flush is needed.
+*/
+
+#include	"mlx_int.h"
+
+
+void	*mlx_new_window(t_xvar *xvar,int size_x,int size_y,char const *title)
+{
+  t_win_list		*new_win;
+  XSetWindowAttributes  xswa;
+  XGCValues		xgcv;
+
+  xswa.background_pixel = 0;
+  xswa.border_pixel = -1;
+  xswa.colormap = xvar->cmap;
+  /*
+  xswa.event_mask = ButtonPressMask | ButtonReleaseMask | ExposureMask |
+    KeyPressMask | KeyReleaseMask | StructureNotifyMask;
+  */
+  /* xswa.event_mask = ExposureMask; */
+  xswa.event_mask = 0xFFFFFF;  /* all events */
+  if (!(new_win = malloc(sizeof(*new_win))))
+    return ((void *)0);
+  new_win->window = XCreateWindow(xvar->display,xvar->root,0,0,size_x,size_y,
+				  0,CopyFromParent,InputOutput,xvar->visual,
+				  CWEventMask|CWBackPixel|CWBorderPixel|
+				  CWColormap,&xswa);
+  mlx_int_anti_resize_win(xvar,new_win->window,size_x,size_y);
+  XStoreName(xvar->display,new_win->window,title);
+  xgcv.foreground = -1;
+  xgcv.function = GXcopy;
+  xgcv.plane_mask = AllPlanes;
+  new_win->gc = XCreateGC(xvar->display,new_win->window,
+			  GCFunction|GCPlaneMask|GCForeground,&xgcv);
+  new_win->next = xvar->win_list;
+  xvar->win_list = new_win;
+  /*
+  new_win->mouse_hook = mlx_int_do_nothing;
+  new_win->key_hook = mlx_int_do_nothing;
+  new_win->expose_hook = mlx_int_do_nothing;
+  */
+  bzero(&(new_win->hooks), sizeof(new_win->hooks));
+  XMapRaised(xvar->display,new_win->window);
+  mlx_int_wait_first_expose(xvar,new_win->window);
+  return (new_win);
+}
diff --git a/minilibx_linux/mlx_pixel_put.c b/minilibx_linux/mlx_pixel_put.c
new file mode 100644
index 0000000..c411f36
--- /dev/null
+++ b/minilibx_linux/mlx_pixel_put.c
@@ -0,0 +1,26 @@
+/*
+ ** mlx_pixel_put.c for MiniLibX in 
+ ** 
+ ** Made by Charlie Root
+ ** Login   <ol@epitech.net>
+ ** 
+ ** Started on  Mon Jul 31 19:01:33 2000 Charlie Root
+** Last update Tue Sep 25 17:09:49 2001 Charlie Root
+ */
+
+
+#include	"mlx_int.h"
+
+
+
+int		mlx_pixel_put(t_xvar *xvar,t_win_list *win,
+			      int x,int y,int color)
+{
+   XGCValues	xgcv;
+   
+   xgcv.foreground = mlx_int_get_good_color(xvar,color);
+   XChangeGC(xvar->display,win->gc,GCForeground,&xgcv);
+   XDrawPoint(xvar->display,win->window,win->gc,x,y);
+   if (xvar->do_flush)
+     XFlush(xvar->display);
+}
diff --git a/minilibx_linux/mlx_put_image_to_window.c b/minilibx_linux/mlx_put_image_to_window.c
new file mode 100644
index 0000000..86ba3f4
--- /dev/null
+++ b/minilibx_linux/mlx_put_image_to_window.c
@@ -0,0 +1,37 @@
+/*
+** mlx_put_image_to_window.c for MiniLibX in raytraceur
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Mon Aug 14 15:55:49 2000 Charlie Root
+** Last update Sun Oct  2 09:53:00 2005 Olivier Crouzet
+*/
+
+
+
+#include	"mlx_int.h"
+
+
+int	mlx_put_image_to_window(t_xvar *xvar,t_win_list *win,t_img *img,
+				int x,int y)
+{
+  GC	gc;
+
+  gc = win->gc;
+  if (img->gc)
+    {
+      gc = img->gc;
+      XSetClipOrigin(xvar->display, gc, x, y);
+    }
+  if (img->type==MLX_TYPE_SHM)
+    XShmPutImage(xvar->display,img->pix, win->gc, img->image,0,0,0,0,
+		 img->width,img->height,False);
+  if (img->type==MLX_TYPE_XIMAGE)
+    XPutImage(xvar->display,img->pix, win->gc, img->image,0,0,0,0,
+	      img->width,img->height);
+  XCopyArea(xvar->display,img->pix,win->window, gc,
+	    0,0,img->width,img->height,x,y);
+  if (xvar->do_flush)
+    XFlush(xvar->display);
+}
diff --git a/minilibx_linux/mlx_rgb.c b/minilibx_linux/mlx_rgb.c
new file mode 100644
index 0000000..0cfccf6
--- /dev/null
+++ b/minilibx_linux/mlx_rgb.c
@@ -0,0 +1,764 @@
+/*
+** This is a generated file with rgb2c.pl and rgb.txt from
+** the XFree86 distribution.
+*/
+
+#include	"mlx_int.h"
+
+struct s_col_name mlx_col_name[] =
+{
+ { "snow" , 0xfffafa },
+ { "ghost white" , 0xf8f8ff },
+ { "ghostwhite" , 0xf8f8ff },
+ { "white smoke" , 0xf5f5f5 },
+ { "whitesmoke" , 0xf5f5f5 },
+ { "gainsboro" , 0xdcdcdc },
+ { "floral white" , 0xfffaf0 },
+ { "floralwhite" , 0xfffaf0 },
+ { "old lace" , 0xfdf5e6 },
+ { "oldlace" , 0xfdf5e6 },
+ { "linen" , 0xfaf0e6 },
+ { "antique white" , 0xfaebd7 },
+ { "antiquewhite" , 0xfaebd7 },
+ { "papaya whip" , 0xffefd5 },
+ { "papayawhip" , 0xffefd5 },
+ { "blanched almond" , 0xffebcd },
+ { "blanchedalmond" , 0xffebcd },
+ { "bisque" , 0xffe4c4 },
+ { "peach puff" , 0xffdab9 },
+ { "peachpuff" , 0xffdab9 },
+ { "navajo white" , 0xffdead },
+ { "navajowhite" , 0xffdead },
+ { "moccasin" , 0xffe4b5 },
+ { "cornsilk" , 0xfff8dc },
+ { "ivory" , 0xfffff0 },
+ { "lemon chiffon" , 0xfffacd },
+ { "lemonchiffon" , 0xfffacd },
+ { "seashell" , 0xfff5ee },
+ { "honeydew" , 0xf0fff0 },
+ { "mint cream" , 0xf5fffa },
+ { "mintcream" , 0xf5fffa },
+ { "azure" , 0xf0ffff },
+ { "alice blue" , 0xf0f8ff },
+ { "aliceblue" , 0xf0f8ff },
+ { "lavender" , 0xe6e6fa },
+ { "lavender blush" , 0xfff0f5 },
+ { "lavenderblush" , 0xfff0f5 },
+ { "misty rose" , 0xffe4e1 },
+ { "mistyrose" , 0xffe4e1 },
+ { "white" , 0xffffff },
+ { "black" , 0x0 },
+ { "dark slate" , 0x2f4f4f },
+ { "darkslategray" , 0x2f4f4f },
+ { "dark slate" , 0x2f4f4f },
+ { "darkslategrey" , 0x2f4f4f },
+ { "dim gray" , 0x696969 },
+ { "dimgray" , 0x696969 },
+ { "dim grey" , 0x696969 },
+ { "dimgrey" , 0x696969 },
+ { "slate gray" , 0x708090 },
+ { "slategray" , 0x708090 },
+ { "slate grey" , 0x708090 },
+ { "slategrey" , 0x708090 },
+ { "light slate" , 0x778899 },
+ { "lightslategray" , 0x778899 },
+ { "light slate" , 0x778899 },
+ { "lightslategrey" , 0x778899 },
+ { "gray" , 0xbebebe },
+ { "grey" , 0xbebebe },
+ { "light grey" , 0xd3d3d3 },
+ { "lightgrey" , 0xd3d3d3 },
+ { "light gray" , 0xd3d3d3 },
+ { "lightgray" , 0xd3d3d3 },
+ { "midnight blue" , 0x191970 },
+ { "midnightblue" , 0x191970 },
+ { "navy" , 0x80 },
+ { "navy blue" , 0x80 },
+ { "navyblue" , 0x80 },
+ { "cornflower blue" , 0x6495ed },
+ { "cornflowerblue" , 0x6495ed },
+ { "dark slate" , 0x483d8b },
+ { "darkslateblue" , 0x483d8b },
+ { "slate blue" , 0x6a5acd },
+ { "slateblue" , 0x6a5acd },
+ { "medium slate" , 0x7b68ee },
+ { "mediumslateblue" , 0x7b68ee },
+ { "light slate" , 0x8470ff },
+ { "lightslateblue" , 0x8470ff },
+ { "medium blue" , 0xcd },
+ { "mediumblue" , 0xcd },
+ { "royal blue" , 0x4169e1 },
+ { "royalblue" , 0x4169e1 },
+ { "blue" , 0xff },
+ { "dodger blue" , 0x1e90ff },
+ { "dodgerblue" , 0x1e90ff },
+ { "deep sky" , 0xbfff },
+ { "deepskyblue" , 0xbfff },
+ { "sky blue" , 0x87ceeb },
+ { "skyblue" , 0x87ceeb },
+ { "light sky" , 0x87cefa },
+ { "lightskyblue" , 0x87cefa },
+ { "steel blue" , 0x4682b4 },
+ { "steelblue" , 0x4682b4 },
+ { "light steel" , 0xb0c4de },
+ { "lightsteelblue" , 0xb0c4de },
+ { "light blue" , 0xadd8e6 },
+ { "lightblue" , 0xadd8e6 },
+ { "powder blue" , 0xb0e0e6 },
+ { "powderblue" , 0xb0e0e6 },
+ { "pale turquoise" , 0xafeeee },
+ { "paleturquoise" , 0xafeeee },
+ { "dark turquoise" , 0xced1 },
+ { "darkturquoise" , 0xced1 },
+ { "medium turquoise" , 0x48d1cc },
+ { "mediumturquoise" , 0x48d1cc },
+ { "turquoise" , 0x40e0d0 },
+ { "cyan" , 0xffff },
+ { "light cyan" , 0xe0ffff },
+ { "lightcyan" , 0xe0ffff },
+ { "cadet blue" , 0x5f9ea0 },
+ { "cadetblue" , 0x5f9ea0 },
+ { "medium aquamarine" , 0x66cdaa },
+ { "mediumaquamarine" , 0x66cdaa },
+ { "aquamarine" , 0x7fffd4 },
+ { "dark green" , 0x6400 },
+ { "darkgreen" , 0x6400 },
+ { "dark olive" , 0x556b2f },
+ { "darkolivegreen" , 0x556b2f },
+ { "dark sea" , 0x8fbc8f },
+ { "darkseagreen" , 0x8fbc8f },
+ { "sea green" , 0x2e8b57 },
+ { "seagreen" , 0x2e8b57 },
+ { "medium sea" , 0x3cb371 },
+ { "mediumseagreen" , 0x3cb371 },
+ { "light sea" , 0x20b2aa },
+ { "lightseagreen" , 0x20b2aa },
+ { "pale green" , 0x98fb98 },
+ { "palegreen" , 0x98fb98 },
+ { "spring green" , 0xff7f },
+ { "springgreen" , 0xff7f },
+ { "lawn green" , 0x7cfc00 },
+ { "lawngreen" , 0x7cfc00 },
+ { "green" , 0xff00 },
+ { "chartreuse" , 0x7fff00 },
+ { "medium spring" , 0xfa9a },
+ { "mediumspringgreen" , 0xfa9a },
+ { "green yellow" , 0xadff2f },
+ { "greenyellow" , 0xadff2f },
+ { "lime green" , 0x32cd32 },
+ { "limegreen" , 0x32cd32 },
+ { "yellow green" , 0x9acd32 },
+ { "yellowgreen" , 0x9acd32 },
+ { "forest green" , 0x228b22 },
+ { "forestgreen" , 0x228b22 },
+ { "olive drab" , 0x6b8e23 },
+ { "olivedrab" , 0x6b8e23 },
+ { "dark khaki" , 0xbdb76b },
+ { "darkkhaki" , 0xbdb76b },
+ { "khaki" , 0xf0e68c },
+ { "pale goldenrod" , 0xeee8aa },
+ { "palegoldenrod" , 0xeee8aa },
+ { "light goldenrod" , 0xfafad2 },
+ { "lightgoldenrodyellow" , 0xfafad2 },
+ { "light yellow" , 0xffffe0 },
+ { "lightyellow" , 0xffffe0 },
+ { "yellow" , 0xffff00 },
+ { "gold" , 0xffd700 },
+ { "light goldenrod" , 0xeedd82 },
+ { "lightgoldenrod" , 0xeedd82 },
+ { "goldenrod" , 0xdaa520 },
+ { "dark goldenrod" , 0xb8860b },
+ { "darkgoldenrod" , 0xb8860b },
+ { "rosy brown" , 0xbc8f8f },
+ { "rosybrown" , 0xbc8f8f },
+ { "indian red" , 0xcd5c5c },
+ { "indianred" , 0xcd5c5c },
+ { "saddle brown" , 0x8b4513 },
+ { "saddlebrown" , 0x8b4513 },
+ { "sienna" , 0xa0522d },
+ { "peru" , 0xcd853f },
+ { "burlywood" , 0xdeb887 },
+ { "beige" , 0xf5f5dc },
+ { "wheat" , 0xf5deb3 },
+ { "sandy brown" , 0xf4a460 },
+ { "sandybrown" , 0xf4a460 },
+ { "tan" , 0xd2b48c },
+ { "chocolate" , 0xd2691e },
+ { "firebrick" , 0xb22222 },
+ { "brown" , 0xa52a2a },
+ { "dark salmon" , 0xe9967a },
+ { "darksalmon" , 0xe9967a },
+ { "salmon" , 0xfa8072 },
+ { "light salmon" , 0xffa07a },
+ { "lightsalmon" , 0xffa07a },
+ { "orange" , 0xffa500 },
+ { "dark orange" , 0xff8c00 },
+ { "darkorange" , 0xff8c00 },
+ { "coral" , 0xff7f50 },
+ { "light coral" , 0xf08080 },
+ { "lightcoral" , 0xf08080 },
+ { "tomato" , 0xff6347 },
+ { "orange red" , 0xff4500 },
+ { "orangered" , 0xff4500 },
+ { "red" , 0xff0000 },
+ { "hot pink" , 0xff69b4 },
+ { "hotpink" , 0xff69b4 },
+ { "deep pink" , 0xff1493 },
+ { "deeppink" , 0xff1493 },
+ { "pink" , 0xffc0cb },
+ { "light pink" , 0xffb6c1 },
+ { "lightpink" , 0xffb6c1 },
+ { "pale violet" , 0xdb7093 },
+ { "palevioletred" , 0xdb7093 },
+ { "maroon" , 0xb03060 },
+ { "medium violet" , 0xc71585 },
+ { "mediumvioletred" , 0xc71585 },
+ { "violet red" , 0xd02090 },
+ { "violetred" , 0xd02090 },
+ { "magenta" , 0xff00ff },
+ { "violet" , 0xee82ee },
+ { "plum" , 0xdda0dd },
+ { "orchid" , 0xda70d6 },
+ { "medium orchid" , 0xba55d3 },
+ { "mediumorchid" , 0xba55d3 },
+ { "dark orchid" , 0x9932cc },
+ { "darkorchid" , 0x9932cc },
+ { "dark violet" , 0x9400d3 },
+ { "darkviolet" , 0x9400d3 },
+ { "blue violet" , 0x8a2be2 },
+ { "blueviolet" , 0x8a2be2 },
+ { "purple" , 0xa020f0 },
+ { "medium purple" , 0x9370db },
+ { "mediumpurple" , 0x9370db },
+ { "thistle" , 0xd8bfd8 },
+ { "snow1" , 0xfffafa },
+ { "snow2" , 0xeee9e9 },
+ { "snow3" , 0xcdc9c9 },
+ { "snow4" , 0x8b8989 },
+ { "seashell1" , 0xfff5ee },
+ { "seashell2" , 0xeee5de },
+ { "seashell3" , 0xcdc5bf },
+ { "seashell4" , 0x8b8682 },
+ { "antiquewhite1" , 0xffefdb },
+ { "antiquewhite2" , 0xeedfcc },
+ { "antiquewhite3" , 0xcdc0b0 },
+ { "antiquewhite4" , 0x8b8378 },
+ { "bisque1" , 0xffe4c4 },
+ { "bisque2" , 0xeed5b7 },
+ { "bisque3" , 0xcdb79e },
+ { "bisque4" , 0x8b7d6b },
+ { "peachpuff1" , 0xffdab9 },
+ { "peachpuff2" , 0xeecbad },
+ { "peachpuff3" , 0xcdaf95 },
+ { "peachpuff4" , 0x8b7765 },
+ { "navajowhite1" , 0xffdead },
+ { "navajowhite2" , 0xeecfa1 },
+ { "navajowhite3" , 0xcdb38b },
+ { "navajowhite4" , 0x8b795e },
+ { "lemonchiffon1" , 0xfffacd },
+ { "lemonchiffon2" , 0xeee9bf },
+ { "lemonchiffon3" , 0xcdc9a5 },
+ { "lemonchiffon4" , 0x8b8970 },
+ { "cornsilk1" , 0xfff8dc },
+ { "cornsilk2" , 0xeee8cd },
+ { "cornsilk3" , 0xcdc8b1 },
+ { "cornsilk4" , 0x8b8878 },
+ { "ivory1" , 0xfffff0 },
+ { "ivory2" , 0xeeeee0 },
+ { "ivory3" , 0xcdcdc1 },
+ { "ivory4" , 0x8b8b83 },
+ { "honeydew1" , 0xf0fff0 },
+ { "honeydew2" , 0xe0eee0 },
+ { "honeydew3" , 0xc1cdc1 },
+ { "honeydew4" , 0x838b83 },
+ { "lavenderblush1" , 0xfff0f5 },
+ { "lavenderblush2" , 0xeee0e5 },
+ { "lavenderblush3" , 0xcdc1c5 },
+ { "lavenderblush4" , 0x8b8386 },
+ { "mistyrose1" , 0xffe4e1 },
+ { "mistyrose2" , 0xeed5d2 },
+ { "mistyrose3" , 0xcdb7b5 },
+ { "mistyrose4" , 0x8b7d7b },
+ { "azure1" , 0xf0ffff },
+ { "azure2" , 0xe0eeee },
+ { "azure3" , 0xc1cdcd },
+ { "azure4" , 0x838b8b },
+ { "slateblue1" , 0x836fff },
+ { "slateblue2" , 0x7a67ee },
+ { "slateblue3" , 0x6959cd },
+ { "slateblue4" , 0x473c8b },
+ { "royalblue1" , 0x4876ff },
+ { "royalblue2" , 0x436eee },
+ { "royalblue3" , 0x3a5fcd },
+ { "royalblue4" , 0x27408b },
+ { "blue1" , 0xff },
+ { "blue2" , 0xee },
+ { "blue3" , 0xcd },
+ { "blue4" , 0x8b },
+ { "dodgerblue1" , 0x1e90ff },
+ { "dodgerblue2" , 0x1c86ee },
+ { "dodgerblue3" , 0x1874cd },
+ { "dodgerblue4" , 0x104e8b },
+ { "steelblue1" , 0x63b8ff },
+ { "steelblue2" , 0x5cacee },
+ { "steelblue3" , 0x4f94cd },
+ { "steelblue4" , 0x36648b },
+ { "deepskyblue1" , 0xbfff },
+ { "deepskyblue2" , 0xb2ee },
+ { "deepskyblue3" , 0x9acd },
+ { "deepskyblue4" , 0x688b },
+ { "skyblue1" , 0x87ceff },
+ { "skyblue2" , 0x7ec0ee },
+ { "skyblue3" , 0x6ca6cd },
+ { "skyblue4" , 0x4a708b },
+ { "lightskyblue1" , 0xb0e2ff },
+ { "lightskyblue2" , 0xa4d3ee },
+ { "lightskyblue3" , 0x8db6cd },
+ { "lightskyblue4" , 0x607b8b },
+ { "slategray1" , 0xc6e2ff },
+ { "slategray2" , 0xb9d3ee },
+ { "slategray3" , 0x9fb6cd },
+ { "slategray4" , 0x6c7b8b },
+ { "lightsteelblue1" , 0xcae1ff },
+ { "lightsteelblue2" , 0xbcd2ee },
+ { "lightsteelblue3" , 0xa2b5cd },
+ { "lightsteelblue4" , 0x6e7b8b },
+ { "lightblue1" , 0xbfefff },
+ { "lightblue2" , 0xb2dfee },
+ { "lightblue3" , 0x9ac0cd },
+ { "lightblue4" , 0x68838b },
+ { "lightcyan1" , 0xe0ffff },
+ { "lightcyan2" , 0xd1eeee },
+ { "lightcyan3" , 0xb4cdcd },
+ { "lightcyan4" , 0x7a8b8b },
+ { "paleturquoise1" , 0xbbffff },
+ { "paleturquoise2" , 0xaeeeee },
+ { "paleturquoise3" , 0x96cdcd },
+ { "paleturquoise4" , 0x668b8b },
+ { "cadetblue1" , 0x98f5ff },
+ { "cadetblue2" , 0x8ee5ee },
+ { "cadetblue3" , 0x7ac5cd },
+ { "cadetblue4" , 0x53868b },
+ { "turquoise1" , 0xf5ff },
+ { "turquoise2" , 0xe5ee },
+ { "turquoise3" , 0xc5cd },
+ { "turquoise4" , 0x868b },
+ { "cyan1" , 0xffff },
+ { "cyan2" , 0xeeee },
+ { "cyan3" , 0xcdcd },
+ { "cyan4" , 0x8b8b },
+ { "darkslategray1" , 0x97ffff },
+ { "darkslategray2" , 0x8deeee },
+ { "darkslategray3" , 0x79cdcd },
+ { "darkslategray4" , 0x528b8b },
+ { "aquamarine1" , 0x7fffd4 },
+ { "aquamarine2" , 0x76eec6 },
+ { "aquamarine3" , 0x66cdaa },
+ { "aquamarine4" , 0x458b74 },
+ { "darkseagreen1" , 0xc1ffc1 },
+ { "darkseagreen2" , 0xb4eeb4 },
+ { "darkseagreen3" , 0x9bcd9b },
+ { "darkseagreen4" , 0x698b69 },
+ { "seagreen1" , 0x54ff9f },
+ { "seagreen2" , 0x4eee94 },
+ { "seagreen3" , 0x43cd80 },
+ { "seagreen4" , 0x2e8b57 },
+ { "palegreen1" , 0x9aff9a },
+ { "palegreen2" , 0x90ee90 },
+ { "palegreen3" , 0x7ccd7c },
+ { "palegreen4" , 0x548b54 },
+ { "springgreen1" , 0xff7f },
+ { "springgreen2" , 0xee76 },
+ { "springgreen3" , 0xcd66 },
+ { "springgreen4" , 0x8b45 },
+ { "green1" , 0xff00 },
+ { "green2" , 0xee00 },
+ { "green3" , 0xcd00 },
+ { "green4" , 0x8b00 },
+ { "chartreuse1" , 0x7fff00 },
+ { "chartreuse2" , 0x76ee00 },
+ { "chartreuse3" , 0x66cd00 },
+ { "chartreuse4" , 0x458b00 },
+ { "olivedrab1" , 0xc0ff3e },
+ { "olivedrab2" , 0xb3ee3a },
+ { "olivedrab3" , 0x9acd32 },
+ { "olivedrab4" , 0x698b22 },
+ { "darkolivegreen1" , 0xcaff70 },
+ { "darkolivegreen2" , 0xbcee68 },
+ { "darkolivegreen3" , 0xa2cd5a },
+ { "darkolivegreen4" , 0x6e8b3d },
+ { "khaki1" , 0xfff68f },
+ { "khaki2" , 0xeee685 },
+ { "khaki3" , 0xcdc673 },
+ { "khaki4" , 0x8b864e },
+ { "lightgoldenrod1" , 0xffec8b },
+ { "lightgoldenrod2" , 0xeedc82 },
+ { "lightgoldenrod3" , 0xcdbe70 },
+ { "lightgoldenrod4" , 0x8b814c },
+ { "lightyellow1" , 0xffffe0 },
+ { "lightyellow2" , 0xeeeed1 },
+ { "lightyellow3" , 0xcdcdb4 },
+ { "lightyellow4" , 0x8b8b7a },
+ { "yellow1" , 0xffff00 },
+ { "yellow2" , 0xeeee00 },
+ { "yellow3" , 0xcdcd00 },
+ { "yellow4" , 0x8b8b00 },
+ { "gold1" , 0xffd700 },
+ { "gold2" , 0xeec900 },
+ { "gold3" , 0xcdad00 },
+ { "gold4" , 0x8b7500 },
+ { "goldenrod1" , 0xffc125 },
+ { "goldenrod2" , 0xeeb422 },
+ { "goldenrod3" , 0xcd9b1d },
+ { "goldenrod4" , 0x8b6914 },
+ { "darkgoldenrod1" , 0xffb90f },
+ { "darkgoldenrod2" , 0xeead0e },
+ { "darkgoldenrod3" , 0xcd950c },
+ { "darkgoldenrod4" , 0x8b6508 },
+ { "rosybrown1" , 0xffc1c1 },
+ { "rosybrown2" , 0xeeb4b4 },
+ { "rosybrown3" , 0xcd9b9b },
+ { "rosybrown4" , 0x8b6969 },
+ { "indianred1" , 0xff6a6a },
+ { "indianred2" , 0xee6363 },
+ { "indianred3" , 0xcd5555 },
+ { "indianred4" , 0x8b3a3a },
+ { "sienna1" , 0xff8247 },
+ { "sienna2" , 0xee7942 },
+ { "sienna3" , 0xcd6839 },
+ { "sienna4" , 0x8b4726 },
+ { "burlywood1" , 0xffd39b },
+ { "burlywood2" , 0xeec591 },
+ { "burlywood3" , 0xcdaa7d },
+ { "burlywood4" , 0x8b7355 },
+ { "wheat1" , 0xffe7ba },
+ { "wheat2" , 0xeed8ae },
+ { "wheat3" , 0xcdba96 },
+ { "wheat4" , 0x8b7e66 },
+ { "tan1" , 0xffa54f },
+ { "tan2" , 0xee9a49 },
+ { "tan3" , 0xcd853f },
+ { "tan4" , 0x8b5a2b },
+ { "chocolate1" , 0xff7f24 },
+ { "chocolate2" , 0xee7621 },
+ { "chocolate3" , 0xcd661d },
+ { "chocolate4" , 0x8b4513 },
+ { "firebrick1" , 0xff3030 },
+ { "firebrick2" , 0xee2c2c },
+ { "firebrick3" , 0xcd2626 },
+ { "firebrick4" , 0x8b1a1a },
+ { "brown1" , 0xff4040 },
+ { "brown2" , 0xee3b3b },
+ { "brown3" , 0xcd3333 },
+ { "brown4" , 0x8b2323 },
+ { "salmon1" , 0xff8c69 },
+ { "salmon2" , 0xee8262 },
+ { "salmon3" , 0xcd7054 },
+ { "salmon4" , 0x8b4c39 },
+ { "lightsalmon1" , 0xffa07a },
+ { "lightsalmon2" , 0xee9572 },
+ { "lightsalmon3" , 0xcd8162 },
+ { "lightsalmon4" , 0x8b5742 },
+ { "orange1" , 0xffa500 },
+ { "orange2" , 0xee9a00 },
+ { "orange3" , 0xcd8500 },
+ { "orange4" , 0x8b5a00 },
+ { "darkorange1" , 0xff7f00 },
+ { "darkorange2" , 0xee7600 },
+ { "darkorange3" , 0xcd6600 },
+ { "darkorange4" , 0x8b4500 },
+ { "coral1" , 0xff7256 },
+ { "coral2" , 0xee6a50 },
+ { "coral3" , 0xcd5b45 },
+ { "coral4" , 0x8b3e2f },
+ { "tomato1" , 0xff6347 },
+ { "tomato2" , 0xee5c42 },
+ { "tomato3" , 0xcd4f39 },
+ { "tomato4" , 0x8b3626 },
+ { "orangered1" , 0xff4500 },
+ { "orangered2" , 0xee4000 },
+ { "orangered3" , 0xcd3700 },
+ { "orangered4" , 0x8b2500 },
+ { "red1" , 0xff0000 },
+ { "red2" , 0xee0000 },
+ { "red3" , 0xcd0000 },
+ { "red4" , 0x8b0000 },
+ { "deeppink1" , 0xff1493 },
+ { "deeppink2" , 0xee1289 },
+ { "deeppink3" , 0xcd1076 },
+ { "deeppink4" , 0x8b0a50 },
+ { "hotpink1" , 0xff6eb4 },
+ { "hotpink2" , 0xee6aa7 },
+ { "hotpink3" , 0xcd6090 },
+ { "hotpink4" , 0x8b3a62 },
+ { "pink1" , 0xffb5c5 },
+ { "pink2" , 0xeea9b8 },
+ { "pink3" , 0xcd919e },
+ { "pink4" , 0x8b636c },
+ { "lightpink1" , 0xffaeb9 },
+ { "lightpink2" , 0xeea2ad },
+ { "lightpink3" , 0xcd8c95 },
+ { "lightpink4" , 0x8b5f65 },
+ { "palevioletred1" , 0xff82ab },
+ { "palevioletred2" , 0xee799f },
+ { "palevioletred3" , 0xcd6889 },
+ { "palevioletred4" , 0x8b475d },
+ { "maroon1" , 0xff34b3 },
+ { "maroon2" , 0xee30a7 },
+ { "maroon3" , 0xcd2990 },
+ { "maroon4" , 0x8b1c62 },
+ { "violetred1" , 0xff3e96 },
+ { "violetred2" , 0xee3a8c },
+ { "violetred3" , 0xcd3278 },
+ { "violetred4" , 0x8b2252 },
+ { "magenta1" , 0xff00ff },
+ { "magenta2" , 0xee00ee },
+ { "magenta3" , 0xcd00cd },
+ { "magenta4" , 0x8b008b },
+ { "orchid1" , 0xff83fa },
+ { "orchid2" , 0xee7ae9 },
+ { "orchid3" , 0xcd69c9 },
+ { "orchid4" , 0x8b4789 },
+ { "plum1" , 0xffbbff },
+ { "plum2" , 0xeeaeee },
+ { "plum3" , 0xcd96cd },
+ { "plum4" , 0x8b668b },
+ { "mediumorchid1" , 0xe066ff },
+ { "mediumorchid2" , 0xd15fee },
+ { "mediumorchid3" , 0xb452cd },
+ { "mediumorchid4" , 0x7a378b },
+ { "darkorchid1" , 0xbf3eff },
+ { "darkorchid2" , 0xb23aee },
+ { "darkorchid3" , 0x9a32cd },
+ { "darkorchid4" , 0x68228b },
+ { "purple1" , 0x9b30ff },
+ { "purple2" , 0x912cee },
+ { "purple3" , 0x7d26cd },
+ { "purple4" , 0x551a8b },
+ { "mediumpurple1" , 0xab82ff },
+ { "mediumpurple2" , 0x9f79ee },
+ { "mediumpurple3" , 0x8968cd },
+ { "mediumpurple4" , 0x5d478b },
+ { "thistle1" , 0xffe1ff },
+ { "thistle2" , 0xeed2ee },
+ { "thistle3" , 0xcdb5cd },
+ { "thistle4" , 0x8b7b8b },
+ { "gray0" , 0x0 },
+ { "grey0" , 0x0 },
+ { "gray1" , 0x30303 },
+ { "grey1" , 0x30303 },
+ { "gray2" , 0x50505 },
+ { "grey2" , 0x50505 },
+ { "gray3" , 0x80808 },
+ { "grey3" , 0x80808 },
+ { "gray4" , 0xa0a0a },
+ { "grey4" , 0xa0a0a },
+ { "gray5" , 0xd0d0d },
+ { "grey5" , 0xd0d0d },
+ { "gray6" , 0xf0f0f },
+ { "grey6" , 0xf0f0f },
+ { "gray7" , 0x121212 },
+ { "grey7" , 0x121212 },
+ { "gray8" , 0x141414 },
+ { "grey8" , 0x141414 },
+ { "gray9" , 0x171717 },
+ { "grey9" , 0x171717 },
+ { "gray10" , 0x1a1a1a },
+ { "grey10" , 0x1a1a1a },
+ { "gray11" , 0x1c1c1c },
+ { "grey11" , 0x1c1c1c },
+ { "gray12" , 0x1f1f1f },
+ { "grey12" , 0x1f1f1f },
+ { "gray13" , 0x212121 },
+ { "grey13" , 0x212121 },
+ { "gray14" , 0x242424 },
+ { "grey14" , 0x242424 },
+ { "gray15" , 0x262626 },
+ { "grey15" , 0x262626 },
+ { "gray16" , 0x292929 },
+ { "grey16" , 0x292929 },
+ { "gray17" , 0x2b2b2b },
+ { "grey17" , 0x2b2b2b },
+ { "gray18" , 0x2e2e2e },
+ { "grey18" , 0x2e2e2e },
+ { "gray19" , 0x303030 },
+ { "grey19" , 0x303030 },
+ { "gray20" , 0x333333 },
+ { "grey20" , 0x333333 },
+ { "gray21" , 0x363636 },
+ { "grey21" , 0x363636 },
+ { "gray22" , 0x383838 },
+ { "grey22" , 0x383838 },
+ { "gray23" , 0x3b3b3b },
+ { "grey23" , 0x3b3b3b },
+ { "gray24" , 0x3d3d3d },
+ { "grey24" , 0x3d3d3d },
+ { "gray25" , 0x404040 },
+ { "grey25" , 0x404040 },
+ { "gray26" , 0x424242 },
+ { "grey26" , 0x424242 },
+ { "gray27" , 0x454545 },
+ { "grey27" , 0x454545 },
+ { "gray28" , 0x474747 },
+ { "grey28" , 0x474747 },
+ { "gray29" , 0x4a4a4a },
+ { "grey29" , 0x4a4a4a },
+ { "gray30" , 0x4d4d4d },
+ { "grey30" , 0x4d4d4d },
+ { "gray31" , 0x4f4f4f },
+ { "grey31" , 0x4f4f4f },
+ { "gray32" , 0x525252 },
+ { "grey32" , 0x525252 },
+ { "gray33" , 0x545454 },
+ { "grey33" , 0x545454 },
+ { "gray34" , 0x575757 },
+ { "grey34" , 0x575757 },
+ { "gray35" , 0x595959 },
+ { "grey35" , 0x595959 },
+ { "gray36" , 0x5c5c5c },
+ { "grey36" , 0x5c5c5c },
+ { "gray37" , 0x5e5e5e },
+ { "grey37" , 0x5e5e5e },
+ { "gray38" , 0x616161 },
+ { "grey38" , 0x616161 },
+ { "gray39" , 0x636363 },
+ { "grey39" , 0x636363 },
+ { "gray40" , 0x666666 },
+ { "grey40" , 0x666666 },
+ { "gray41" , 0x696969 },
+ { "grey41" , 0x696969 },
+ { "gray42" , 0x6b6b6b },
+ { "grey42" , 0x6b6b6b },
+ { "gray43" , 0x6e6e6e },
+ { "grey43" , 0x6e6e6e },
+ { "gray44" , 0x707070 },
+ { "grey44" , 0x707070 },
+ { "gray45" , 0x737373 },
+ { "grey45" , 0x737373 },
+ { "gray46" , 0x757575 },
+ { "grey46" , 0x757575 },
+ { "gray47" , 0x787878 },
+ { "grey47" , 0x787878 },
+ { "gray48" , 0x7a7a7a },
+ { "grey48" , 0x7a7a7a },
+ { "gray49" , 0x7d7d7d },
+ { "grey49" , 0x7d7d7d },
+ { "gray50" , 0x7f7f7f },
+ { "grey50" , 0x7f7f7f },
+ { "gray51" , 0x828282 },
+ { "grey51" , 0x828282 },
+ { "gray52" , 0x858585 },
+ { "grey52" , 0x858585 },
+ { "gray53" , 0x878787 },
+ { "grey53" , 0x878787 },
+ { "gray54" , 0x8a8a8a },
+ { "grey54" , 0x8a8a8a },
+ { "gray55" , 0x8c8c8c },
+ { "grey55" , 0x8c8c8c },
+ { "gray56" , 0x8f8f8f },
+ { "grey56" , 0x8f8f8f },
+ { "gray57" , 0x919191 },
+ { "grey57" , 0x919191 },
+ { "gray58" , 0x949494 },
+ { "grey58" , 0x949494 },
+ { "gray59" , 0x969696 },
+ { "grey59" , 0x969696 },
+ { "gray60" , 0x999999 },
+ { "grey60" , 0x999999 },
+ { "gray61" , 0x9c9c9c },
+ { "grey61" , 0x9c9c9c },
+ { "gray62" , 0x9e9e9e },
+ { "grey62" , 0x9e9e9e },
+ { "gray63" , 0xa1a1a1 },
+ { "grey63" , 0xa1a1a1 },
+ { "gray64" , 0xa3a3a3 },
+ { "grey64" , 0xa3a3a3 },
+ { "gray65" , 0xa6a6a6 },
+ { "grey65" , 0xa6a6a6 },
+ { "gray66" , 0xa8a8a8 },
+ { "grey66" , 0xa8a8a8 },
+ { "gray67" , 0xababab },
+ { "grey67" , 0xababab },
+ { "gray68" , 0xadadad },
+ { "grey68" , 0xadadad },
+ { "gray69" , 0xb0b0b0 },
+ { "grey69" , 0xb0b0b0 },
+ { "gray70" , 0xb3b3b3 },
+ { "grey70" , 0xb3b3b3 },
+ { "gray71" , 0xb5b5b5 },
+ { "grey71" , 0xb5b5b5 },
+ { "gray72" , 0xb8b8b8 },
+ { "grey72" , 0xb8b8b8 },
+ { "gray73" , 0xbababa },
+ { "grey73" , 0xbababa },
+ { "gray74" , 0xbdbdbd },
+ { "grey74" , 0xbdbdbd },
+ { "gray75" , 0xbfbfbf },
+ { "grey75" , 0xbfbfbf },
+ { "gray76" , 0xc2c2c2 },
+ { "grey76" , 0xc2c2c2 },
+ { "gray77" , 0xc4c4c4 },
+ { "grey77" , 0xc4c4c4 },
+ { "gray78" , 0xc7c7c7 },
+ { "grey78" , 0xc7c7c7 },
+ { "gray79" , 0xc9c9c9 },
+ { "grey79" , 0xc9c9c9 },
+ { "gray80" , 0xcccccc },
+ { "grey80" , 0xcccccc },
+ { "gray81" , 0xcfcfcf },
+ { "grey81" , 0xcfcfcf },
+ { "gray82" , 0xd1d1d1 },
+ { "grey82" , 0xd1d1d1 },
+ { "gray83" , 0xd4d4d4 },
+ { "grey83" , 0xd4d4d4 },
+ { "gray84" , 0xd6d6d6 },
+ { "grey84" , 0xd6d6d6 },
+ { "gray85" , 0xd9d9d9 },
+ { "grey85" , 0xd9d9d9 },
+ { "gray86" , 0xdbdbdb },
+ { "grey86" , 0xdbdbdb },
+ { "gray87" , 0xdedede },
+ { "grey87" , 0xdedede },
+ { "gray88" , 0xe0e0e0 },
+ { "grey88" , 0xe0e0e0 },
+ { "gray89" , 0xe3e3e3 },
+ { "grey89" , 0xe3e3e3 },
+ { "gray90" , 0xe5e5e5 },
+ { "grey90" , 0xe5e5e5 },
+ { "gray91" , 0xe8e8e8 },
+ { "grey91" , 0xe8e8e8 },
+ { "gray92" , 0xebebeb },
+ { "grey92" , 0xebebeb },
+ { "gray93" , 0xededed },
+ { "grey93" , 0xededed },
+ { "gray94" , 0xf0f0f0 },
+ { "grey94" , 0xf0f0f0 },
+ { "gray95" , 0xf2f2f2 },
+ { "grey95" , 0xf2f2f2 },
+ { "gray96" , 0xf5f5f5 },
+ { "grey96" , 0xf5f5f5 },
+ { "gray97" , 0xf7f7f7 },
+ { "grey97" , 0xf7f7f7 },
+ { "gray98" , 0xfafafa },
+ { "grey98" , 0xfafafa },
+ { "gray99" , 0xfcfcfc },
+ { "grey99" , 0xfcfcfc },
+ { "gray100" , 0xffffff },
+ { "grey100" , 0xffffff },
+ { "dark grey" , 0xa9a9a9 },
+ { "darkgrey" , 0xa9a9a9 },
+ { "dark gray" , 0xa9a9a9 },
+ { "darkgray" , 0xa9a9a9 },
+ { "dark blue" , 0x8b },
+ { "darkblue" , 0x8b },
+ { "dark cyan" , 0x8b8b },
+ { "darkcyan" , 0x8b8b },
+ { "dark magenta" , 0x8b008b },
+ { "darkmagenta" , 0x8b008b },
+ { "dark red" , 0x8b0000 },
+ { "darkred" , 0x8b0000 },
+ { "light green" , 0x90ee90 },
+ { "lightgreen" , 0x90ee90 },
+ { "none", -1 },
+ { 0, 0 }
+};
diff --git a/minilibx_linux/mlx_string_put.c b/minilibx_linux/mlx_string_put.c
new file mode 100644
index 0000000..8492a09
--- /dev/null
+++ b/minilibx_linux/mlx_string_put.c
@@ -0,0 +1,26 @@
+/*
+ ** mlx_string_put.c for MiniLibX in 
+ ** 
+ ** Made by Charlie Root
+ ** Login   <ol@epitech.net>
+ ** 
+ ** Started on  Mon Jul 31 19:01:33 2000 Charlie Root
+** Last update Tue Sep 25 17:11:47 2001 Charlie Root
+ */
+
+
+#include	"mlx_int.h"
+
+
+
+int		mlx_string_put(t_xvar *xvar,t_win_list *win,
+			       int x,int y,int color,char *string)
+{
+   XGCValues	xgcv;
+   
+   xgcv.foreground = mlx_int_get_good_color(xvar,color);
+   XChangeGC(xvar->display,win->gc,GCForeground,&xgcv);
+   XDrawString(xvar->display,win->window,win->gc,x,y,string,strlen(string));
+   if (xvar->do_flush)
+     XFlush(xvar->display);
+}
diff --git a/minilibx_linux/mlx_xpm.c b/minilibx_linux/mlx_xpm.c
new file mode 100644
index 0000000..1ab8acd
--- /dev/null
+++ b/minilibx_linux/mlx_xpm.c
@@ -0,0 +1,317 @@
+/*
+** xpm-read.c for MinilibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Tue Dec 11 15:25:27 2001 olivier crouzet
+** Last update Sat Oct  1 14:56:13 2005 Olivier Crouzet
+*/
+
+
+#include	"mlx_int.h"
+
+extern struct s_col_name mlx_col_name[];
+
+
+#define	RETURN	{ if (colors) free(colors); if (tab) free(tab); \
+		  if (colors_direct) free(colors_direct); \
+                  if (img) {XDestroyImage(img->image); \
+                            XFreePixmap(xvar->display,img->pix);free(img);} \
+                  return ((void *)0);}
+
+
+
+
+char	*mlx_int_get_line(char *ptr,int *pos,int size)
+{
+  int	pos2;
+  int	pos3;
+  int	pos4;
+
+  if ((pos2 = mlx_int_str_str(ptr+*pos,"\"",size-*pos))==-1)
+    return ((char *)0);
+  if ((pos3 = mlx_int_str_str(ptr+*pos+pos2+1,"\"",size-*pos-pos2-1))==-1)
+    return ((char *)0);
+  *(ptr+*pos+pos2) = 0;
+  *(ptr+*pos+pos2+1+pos3) = 0;
+  pos4 = *pos+pos2+1;
+  *pos += pos2+pos3+2;
+  return (ptr+pos4);
+}
+
+
+
+char	*mlx_int_static_line(char **xpm_data,int *pos,int size)
+{
+  static char	*copy = 0;
+  static int	len = 0;
+  int		len2;
+  char		*str;
+
+  str = xpm_data[(*pos)++];
+  if ((len2 = strlen(str))>len)
+    {
+      if (copy)
+	free(copy);
+      if (!(copy = malloc(len2+1)))
+	return ((char *)0);
+      len = len2;
+    }
+  /* strcpy(copy,str); */
+  strlcpy(copy, str, len2+1);
+  return (copy);
+}
+
+
+int	mlx_int_get_col_name(char *str,int size)
+{
+  int	result;
+
+  result = 0;
+  while (size--)
+    result = (result<<8)+*(str++);
+  return (result);
+}
+
+int	mlx_int_get_text_rgb(char *name, char *end)
+{
+  int	i;
+  char	buff[64];
+
+  if (*name == '#')
+    return (strtol(name+1,0,16));
+  if (end)
+    {
+      snprintf(buff, 64, "%s %s", name, end);
+      name = buff;
+    }
+  i = 0;
+  while (mlx_col_name[i].name)
+    {
+      if (!strcasecmp(mlx_col_name[i].name, name))
+	return (mlx_col_name[i].color);
+      i ++;
+    }
+  return (0);
+}
+
+
+int	mlx_int_xpm_set_pixel(t_img *img, char *data, int opp, int col, int x)
+{
+  int	dec;
+
+  dec = opp;
+  while (dec--)
+    {
+      if (img->image->byte_order)
+	*(data+x*opp+dec) = col&0xFF;
+      else
+	*(data+x*opp+opp-dec-1) = col&0xFF;
+      col >>= 8;
+    }
+}
+
+
+void	*mlx_int_parse_xpm(t_xvar *xvar,void *info,int info_size,char *(*f)())
+{
+  int	pos;
+  char	*line;
+  char	**tab;
+  char	*data;
+  char	*clip_data;
+  int	nc;
+  int	opp;
+  int	cpp;
+  int	col;
+  int	rgb_col;
+  int	col_name;
+  int	method;
+  int	x;
+  int	i;
+  int	j;
+  t_img	*img;
+  t_xpm_col	*colors;
+  int		*colors_direct;
+  int	width;
+  int	height;
+  XImage	*clip_img;
+  XGCValues	xgcv;
+  Pixmap	clip_pix;
+
+  colors = 0;
+  colors_direct = 0;
+  img = 0;
+  tab = 0;
+  pos = 0;
+  if (!(line = f(info,&pos,info_size)) ||
+      !(tab = mlx_int_str_to_wordtab(line)) || !(width = atoi(tab[0])) ||
+      !(height = atoi(tab[1])) || !(nc = atoi(tab[2])) ||
+      !(cpp = atoi(tab[3])) )
+    RETURN;
+  free(tab);
+  tab = 0;
+
+  method = 0;
+  if (cpp<=2)
+    {
+      method = 1;
+      if (!(colors_direct = malloc((cpp==2?65536:256)*sizeof(int))))
+	RETURN;
+    }
+  else
+    if (!(colors = malloc(nc*sizeof(*colors))))
+      RETURN;
+
+  clip_data = 0;
+
+  i = nc;
+  while (i--)
+    {
+      if (!(line = f(info,&pos,info_size)) ||
+	  !(tab = mlx_int_str_to_wordtab(line+cpp)) )
+	RETURN;
+      j = 0;
+      while (tab[j] && strcmp(tab[j++],"c"));
+
+      if (!tab[j])
+	RETURN;
+      
+      if ((rgb_col = mlx_int_get_text_rgb(tab[j], tab[j+1]))==-1)
+	{
+	  if (!(clip_data = malloc(4*width*height)) ||   /* ok, nice size .. */
+	      !(clip_img = XCreateImage(xvar->display, xvar->visual,
+					1, XYPixmap, 0, clip_data,
+					width, height, 8, (width+7)/8)) )
+	    RETURN;
+	  memset(clip_data, 0xFF, 4*width*height);
+	}
+
+      if (method)
+	colors_direct[mlx_int_get_col_name(line,cpp)] =
+	  rgb_col>=0?mlx_get_color_value(xvar, rgb_col):rgb_col;
+      else
+	{
+	  colors[i].name = mlx_int_get_col_name(line,cpp);
+	  colors[i].col = rgb_col>=0?mlx_get_color_value(xvar,rgb_col):rgb_col;
+	}
+      free(tab);
+    }
+
+  if (!(img = mlx_new_image(xvar,width,height)))
+    RETURN;
+  opp = img->bpp/8;
+
+
+  i = height;
+  data = img->data;
+  while (i--)
+    {
+      if (!(line = f(info,&pos,info_size)))
+	RETURN;
+      x = 0;
+      while (x<width)
+	{
+	  col = 0;
+	  col_name = mlx_int_get_col_name(line+cpp*x,cpp);
+	  if (method)
+	    col = colors_direct[col_name];
+	  else
+	    {
+	      j = nc;
+	      while (j--)
+		if (colors[j].name==col_name)
+		  {
+		    col = colors[j].col;
+		    j = 0;
+		  }
+	    }
+	  if (col==-1)
+	    XPutPixel(clip_img, x, height-1-i, 0);
+	  else
+	    mlx_int_xpm_set_pixel(img, data, opp, col, x);
+	  x ++;
+	}
+      data += img->size_line;
+    }
+  if (clip_data)
+    {
+      if (!(clip_pix = XCreatePixmap(xvar->display, xvar->root,
+					   width, height, 1)) )
+	RETURN;
+      img->gc = XCreateGC(xvar->display, clip_pix, 0, &xgcv);
+      XPutImage(xvar->display, clip_pix, img->gc, clip_img,
+		0, 0, 0, 0, width, height);
+      XFreeGC(xvar->display, img->gc);
+      xgcv.clip_mask = clip_pix;
+      xgcv.function = GXcopy;
+      xgcv.plane_mask = AllPlanes;
+      img->gc = XCreateGC(xvar->display, xvar->root, GCClipMask|GCFunction|
+			  GCPlaneMask, &xgcv);
+      XSync(xvar->display, False);
+      XDestroyImage(clip_img);
+    }
+  if (colors)
+    free(colors);
+  if (colors_direct)
+    free(colors_direct);
+  return (img);
+}
+
+
+int	mlx_int_file_get_rid_comment(char *ptr, int size)
+{
+  int	com_begin;
+  int	com_end;
+
+  while ((com_begin = mlx_int_str_str_cote(ptr,"/*",size))!=-1)
+    {
+      com_end = mlx_int_str_str(ptr+com_begin+2,"*/",size-com_begin-2);
+      memset(ptr+com_begin,' ',com_end+4);
+    }
+  while ((com_begin = mlx_int_str_str_cote(ptr,"//",size))!=-1)
+    {
+      com_end = mlx_int_str_str(ptr+com_begin+2,"\n",size-com_begin-2);
+      memset(ptr+com_begin,' ',com_end+3);
+    }
+}
+
+
+void	*mlx_xpm_file_to_image(t_xvar *xvar,char const *file,int *width,int *height)
+{
+  int	fd;
+  int	size;
+  char	*ptr;
+  t_img	*img;
+
+  fd = -1;
+  if ((fd = open(file,O_RDONLY))==-1 || (size = lseek(fd,0,SEEK_END))==-1 ||
+      (ptr = mmap(0,size,PROT_WRITE|PROT_READ,MAP_PRIVATE,fd,0))==
+      (void *)MAP_FAILED)
+    {
+      if (fd>=0)
+	close(fd);
+      return ((void *)0);
+    }
+  mlx_int_file_get_rid_comment(ptr, size);
+  if (img = mlx_int_parse_xpm(xvar,ptr,size,mlx_int_get_line))
+    {
+      *width = img->width;
+      *height = img->height;
+    }
+  munmap(ptr,size);
+  close(fd);
+  return (img);
+}
+
+void	*mlx_xpm_to_image(t_xvar *xvar,char **xpm_data,int *width,int *height)
+{
+  t_img	*img;
+
+  if (img = mlx_int_parse_xpm(xvar,xpm_data,0,mlx_int_static_line))
+    {
+      *width = img->width;
+      *height = img->height;
+    }
+  return (img);
+}
diff --git a/minilibx_linux/mlx_xpm.c.ok b/minilibx_linux/mlx_xpm.c.ok
new file mode 100644
index 0000000..73f2d9e
--- /dev/null
+++ b/minilibx_linux/mlx_xpm.c.ok
@@ -0,0 +1,310 @@
+/*
+** xpm-read.c for MinilibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@epitech.net>
+** 
+** Started on  Tue Dec 11 15:25:27 2001 olivier crouzet
+** Last update Sat Oct  1 14:40:55 2005 Olivier Crouzet
+*/
+
+
+#include	"mlx_int.h"
+
+extern struct s_col_name mlx_col_name[];
+
+
+#define	RETURN	{ if (colors) free(colors); if (tab) free(tab); \
+		  if (colors_direct) free(colors_direct); \
+                  if (img) {XDestroyImage(img->image); \
+                            XFreePixmap(xvar->display,img->pix);free(img);} \
+                  return ((void *)0);}
+
+
+
+
+char	*mlx_int_get_line(char *ptr,int *pos,int size)
+{
+  int	pos2;
+  int	pos3;
+  int	pos4;
+
+  if ((pos2 = mlx_int_str_str(ptr+*pos,"\"",size-*pos))==-1)
+    return ((char *)0);
+  if ((pos3 = mlx_int_str_str(ptr+*pos+pos2+1,"\"",size-*pos-pos2-1))==-1)
+    return ((char *)0);
+  *(ptr+*pos+pos2) = 0;
+  *(ptr+*pos+pos2+1+pos3) = 0;
+  pos4 = *pos+pos2+1;
+  *pos += pos2+pos3+2;
+  return (ptr+pos4);
+}
+
+
+
+char	*mlx_int_static_line(char **xpm_data,int *pos,int size)
+{
+  static char	*copy = 0;
+  static int	len = 0;
+  int		len2;
+  char		*str;
+
+  str = xpm_data[(*pos)++];
+  if ((len2 = strlen(str))>len)
+    {
+      if (copy)
+	free(copy);
+      if (!(copy = malloc(len2+1)))
+	return ((char *)0);
+      len = len2;
+    }
+  /* strcpy(copy,str); */
+  strlcpy(copy, str, len2+1);
+  return (copy);
+}
+
+
+int	mlx_int_get_col_name(char *str,int size)
+{
+  int	result;
+
+  result = 0;
+  while (size--)
+    result = (result<<8)+*(str++);
+  return (result);
+}
+
+int	mlx_int_get_text_rgb(char *name)
+{
+  int	i;
+
+  if (*name == '#')
+    return (strtol(name+1,0,16));
+  i = 0;
+  while (mlx_col_name[i].name)
+    {
+      if (!strcasecmp(mlx_col_name[i].name, name))
+	return (mlx_col_name[i].color);
+      i ++;
+    }
+  return (0);
+}
+
+
+int	mlx_int_xpm_set_pixel(t_img *img, char *data, int opp, int col, int x)
+{
+  int	dec;
+
+  dec = opp;
+  while (dec--)
+    {
+      if (img->image->byte_order)
+	*(data+x*opp+dec) = col&0xFF;
+      else
+	*(data+x*opp+opp-dec-1) = col&0xFF;
+      col >>= 8;
+    }
+}
+
+
+void	*mlx_int_parse_xpm(t_xvar *xvar,void *info,int info_size,char *(*f)())
+{
+  int	pos;
+  char	*line;
+  char	**tab;
+  char	*data;
+  char	*clip_data;
+  int	nc;
+  int	opp;
+  int	cpp;
+  int	col;
+  int	rgb_col;
+  int	col_name;
+  int	method;
+  int	x;
+  int	i;
+  int	j;
+  t_img	*img;
+  t_xpm_col	*colors;
+  int		*colors_direct;
+  int	width;
+  int	height;
+  XImage	*clip_img;
+  XGCValues	xgcv;
+  Pixmap	clip_pix;
+
+  colors = 0;
+  colors_direct = 0;
+  img = 0;
+  tab = 0;
+  pos = 0;
+  if (!(line = f(info,&pos,info_size)) ||
+      !(tab = mlx_int_str_to_wordtab(line)) || !(width = atoi(tab[0])) ||
+      !(height = atoi(tab[1])) || !(nc = atoi(tab[2])) ||
+      !(cpp = atoi(tab[3])) )
+    RETURN;
+  free(tab);
+  tab = 0;
+
+  method = 0;
+  if (cpp<=2)
+    {
+      method = 1;
+      if (!(colors_direct = malloc((cpp==2?65536:256)*sizeof(int))))
+	RETURN;
+    }
+  else
+    if (!(colors = malloc(nc*sizeof(*colors))))
+      RETURN;
+
+  clip_data = 0;
+
+  i = nc;
+  while (i--)
+    {
+      if (!(line = f(info,&pos,info_size)) ||
+	  !(tab = mlx_int_str_to_wordtab(line+cpp)) )
+	RETURN;
+      j = 0;
+      while (tab[j] && strcmp(tab[j++],"c"));
+      if (!tab[j])
+	RETURN;
+      
+      if ((rgb_col = mlx_int_get_text_rgb(tab[j]))==-1)
+	{
+	  if (!(clip_data = malloc(4*width*height)) ||   /* ok, nice size .. */
+	      !(clip_img = XCreateImage(xvar->display, xvar->visual,
+					1, XYPixmap, 0, clip_data,
+					width, height, 8, (width+7)/8)) )
+	    RETURN;
+	  memset(clip_data, 0xFF, 4*width*height);
+	}
+
+      if (method)
+	colors_direct[mlx_int_get_col_name(line,cpp)] =
+	  rgb_col>=0?mlx_get_color_value(xvar, rgb_col):rgb_col;
+    else
+	{
+	  colors[i].name = mlx_int_get_col_name(line,cpp);
+	  colors[i].col = rgb_col>=0?mlx_get_color_value(xvar,rgb_col):rgb_col;
+	}
+      free(tab);
+    }
+
+  if (!(img = mlx_new_image(xvar,width,height)))
+    RETURN;
+  opp = img->bpp/8;
+
+
+  i = height;
+  data = img->data;
+  while (i--)
+    {
+      if (!(line = f(info,&pos,info_size)))
+	RETURN;
+      x = 0;
+      while (x<width)
+	{
+	  col = 0;
+	  col_name = mlx_int_get_col_name(line+cpp*x,cpp);
+	  if (method)
+	    col = colors_direct[col_name];
+	  else
+	    {
+	      j = nc;
+	      while (j--)
+		if (colors[j].name==col_name)
+		  {
+		    col = colors[j].col;
+		    j = 0;
+		  }
+	    }
+	  if (col==-1)
+	    XPutPixel(clip_img, x, height-1-i, 0);
+	  else
+	    mlx_int_xpm_set_pixel(img, data, opp, col, x);
+	  x ++;
+	}
+      data += img->size_line;
+    }
+  if (clip_data)
+    {
+      if (!(clip_pix = XCreatePixmap(xvar->display, xvar->root,
+					   width, height, 1)) )
+	RETURN;
+      img->gc = XCreateGC(xvar->display, clip_pix, 0, &xgcv);
+      XPutImage(xvar->display, clip_pix, img->gc, clip_img,
+		0, 0, 0, 0, width, height);
+      XFreeGC(xvar->display, img->gc);
+      xgcv.clip_mask = clip_pix;
+      xgcv.function = GXcopy;
+      xgcv.plane_mask = AllPlanes;
+      img->gc = XCreateGC(xvar->display, xvar->root, GCClipMask|GCFunction|
+			  GCPlaneMask, &xgcv);
+      XSync(xvar->display, False);
+      XDestroyImage(clip_img);
+    }
+  if (colors)
+    free(colors);
+  if (colors_direct)
+    free(colors_direct);
+  return (img);
+}
+
+
+int	mlx_int_file_get_rid_comment(char *ptr, int size)
+{
+  int	com_begin;
+  int	com_end;
+
+  while ((com_begin = mlx_int_str_str_cote(ptr,"/*",size))!=-1)
+    {
+      com_end = mlx_int_str_str(ptr+com_begin+2,"*/",size-com_begin-2);
+      memset(ptr+com_begin,' ',com_end+4);
+    }
+  while ((com_begin = mlx_int_str_str_cote(ptr,"//",size))!=-1)
+    {
+      com_end = mlx_int_str_str(ptr+com_begin+2,"\n",size-com_begin-2);
+      memset(ptr+com_begin,' ',com_end+3);
+    }
+}
+
+
+void	*mlx_xpm_file_to_image(t_xvar *xvar,char const *file,int *width,int *height)
+{
+  int	fd;
+  int	size;
+  char	*ptr;
+  t_img	*img;
+
+  fd = -1;
+  if ((fd = open(file,O_RDONLY))==-1 || (size = lseek(fd,0,SEEK_END))==-1 ||
+      (ptr = mmap(0,size,PROT_WRITE|PROT_READ,MAP_PRIVATE,fd,0))==
+      (void *)MAP_FAILED)
+    {
+      if (fd>=0)
+	close(fd);
+      return ((void *)0);
+    }
+  mlx_int_file_get_rid_comment(ptr, size);
+  if (img = mlx_int_parse_xpm(xvar,ptr,size,mlx_int_get_line))
+    {
+      *width = img->width;
+      *height = img->height;
+    }
+  munmap(ptr,size);
+  close(fd);
+  return (img);
+}
+
+void	*mlx_xpm_to_image(t_xvar *xvar,char **xpm_data,int *width,int *height)
+{
+  t_img	*img;
+
+  if (img = mlx_int_parse_xpm(xvar,xpm_data,0,mlx_int_static_line))
+    {
+      *width = img->width;
+      *height = img->height;
+    }
+  return (img);
+}
diff --git a/minilibx_linux/rgb2c.pl b/minilibx_linux/rgb2c.pl
new file mode 100755
index 0000000..9ef39a0
--- /dev/null
+++ b/minilibx_linux/rgb2c.pl
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+#
+## rgb2c.pl for MiniLibX in /home/boulon/work/c/raytraceur/minilibx
+## 
+## Made by Olivier Crouzet
+## Login   <ol@epitech.net>
+## 
+## Started on  Tue Oct  5 16:33:46 2004 Olivier Crouzet
+## Last update Tue Oct  5 16:36:11 2004 Olivier Crouzet
+##
+
+
+#
+# Generate a .c file with encoded colors, from the XFree86 rgb.txt file.
+#
+
+open(RGB, "/usr/X11/lib/X11/rgb.txt");
+
+
+printf("/*\n** This is a generated file with rgb2c.pl and rgb.txt from\n");
+printf("** the XFree86 distribution.\n*/\n\n");
+printf("struct s_col_name mlx_col_name[] =\n{\n");
+
+while (<RGB>)
+{
+    @tab = split;
+    if ($tab[0] ne "!")
+    {
+	$color = $tab[3];
+	if ("$tab[4]" ne "")
+	{
+	    $color = "$tab[3] $tab[4]";
+	}
+	printf(" { \"%s\" , 0x%x },\n", $color, $tab[0]*65536+$tab[1]*256+$tab[2]);
+    }
+}
+
+printf(" { 0, 0 }\n};\n");
diff --git a/minilibx_linux/test/Makefile.gen b/minilibx_linux/test/Makefile.gen
new file mode 100644
index 0000000..c13f70c
--- /dev/null
+++ b/minilibx_linux/test/Makefile.gen
@@ -0,0 +1,26 @@
+INC=/usr/include
+HT=x86_64
+DOCP=do_cp
+
+
+
+INCLIB=$(INC)/../lib
+
+CC=gcc
+
+CFLAGS= -I$(INC) -O3 -I..
+
+NAME= mlx-test
+SRC = main.c
+OBJ = $(SRC:.c=.o)
+
+all	:$(NAME)
+
+$(NAME)	:$(OBJ)
+	$(CC) -o $(NAME) $(OBJ) $(shell pkg-config --libs --static mlx)
+
+clean	:
+	rm -f $(NAME) $(OBJ) *~ core *.core
+
+
+re	: clean all
diff --git a/minilibx_linux/test/Makefile.mk b/minilibx_linux/test/Makefile.mk
new file mode 100644
index 0000000..5238a12
--- /dev/null
+++ b/minilibx_linux/test/Makefile.mk
@@ -0,0 +1,24 @@
+
+
+INC=%%%%
+
+INCLIB=$(INC)/../lib
+
+CC=gcc
+
+CFLAGS= -I$(INC) -O3 -I..
+
+NAME= mlx-test
+SRC = main.c
+OBJ = $(SRC:.c=.o)
+
+all	:$(NAME)
+
+$(NAME)	:$(OBJ)
+	$(CC) -o $(NAME) $(OBJ) $(shell pkg-config --libs --static mlx)
+
+clean	:
+	rm -f $(NAME) $(OBJ) *~ core *.core
+
+
+re	: clean all
diff --git a/minilibx_linux/test/main.c b/minilibx_linux/test/main.c
new file mode 100644
index 0000000..ea132b4
--- /dev/null
+++ b/minilibx_linux/test/main.c
@@ -0,0 +1,284 @@
+
+#include	"mlx.h"
+#include	"mlx_int.h"
+
+#define	WIN1_SX		242
+#define	WIN1_SY		242
+#define	IM1_SX		42
+#define	IM1_SY		42
+#define	IM3_SX		242
+#define	IM3_SY		242
+
+void	*mlx;
+void	*win1;
+void    *win2;
+void    *win3;
+void    *im1;
+void	*im2;
+void	*im3;
+void	*im4;
+int	bpp1;
+int	bpp2;
+int	bpp3;
+int	bpp4;
+int	sl1;
+int	sl2;
+int	sl3;
+int	sl4;
+int	endian1;
+int	endian2;
+int	endian3;
+int	endian4;
+char	*data1;
+char	*data2;
+char	*data3;
+char	*data4;
+int	xpm1_x;
+int	xpm1_y;
+
+int	local_endian;
+
+int	expose_win1(void *p)
+{
+  mlx_put_image_to_window(mlx,win1,im3,0,0);
+}
+
+int	expose_win2(void *p)
+{
+  mlx_put_image_to_window(mlx,win2,im4,0,0);
+  mlx_put_image_to_window(mlx,win2,im2,0,0);
+}
+
+int	key_win1(int key,void *p)
+{
+  printf("Key in Win1 : %d\n",key);
+  if (key==0xFF1B)
+    exit(0);
+}
+
+int	key_win2(int key,void *p)
+{
+  printf("Key in Win2 : %d\n",key);
+  if (key==0xFF1B)
+    exit(0);
+}
+
+int	key_win3(int key,void *p)
+{
+  printf("Key in Win3 : %d\n",key);
+  if (key==0xFF1B)
+    mlx_destroy_window(mlx,win3);
+}
+
+int	mouse_win1(int button,int x,int y, void *p)
+{
+  printf("Mouse in Win1, button %d at %dx%d.\n",button,x,y);
+}
+
+int	mouse_win2(int button,int x,int y, void *p)
+{
+  printf("Mouse in Win2, button %d at %dx%d.\n",button,x,y);
+}
+
+int	mouse_win3(int x,int y, void *p)
+{
+  printf("Mouse moving in Win3, at %dx%d.\n",x,y);
+}
+
+
+int	main()
+{
+  int	a;
+
+  printf("MinilibX Test Program\n");
+  a = 0x11223344;
+  if (((unsigned char *)&a)[0] == 0x11)
+    local_endian = 1;
+  else
+    local_endian = 0;
+  printf(" => Local Endian : %d\n",local_endian);
+
+  printf(" => Connection ...");
+  if (!(mlx = mlx_init()))
+    {
+      printf(" !! KO !!\n");
+      exit(1);
+    }
+  printf("OK (use_xshm %d pshm_format %d)\n",((t_xvar *)mlx)->use_xshm,((t_xvar *)mlx)->pshm_format);
+
+  printf(" => Window1 %dx%d \"Title 1\" ...",WIN1_SX,WIN1_SY);
+  if (!(win1 = mlx_new_window(mlx,WIN1_SX,WIN1_SY,"Title1")))
+    {
+      printf(" !! KO !!\n");
+      exit(1);
+    }
+  printf("OK\n");
+
+  printf(" => Colormap sans event ...");
+  color_map_1(win1,WIN1_SX,WIN1_SY);
+  printf("OK\n");
+  sleep(2);
+
+  printf(" => Clear Window ...");
+  mlx_clear_window(mlx,win1);
+  printf("OK\n");
+  sleep(2);
+
+  printf(" => Image1 ZPixmap %dx%d ...",IM1_SX,IM1_SY);
+  if (!(im1 = mlx_new_image(mlx,IM1_SX,IM1_SY)))
+    {
+      printf(" !! KO !!\n");
+      exit(1);
+    }
+  data1 = mlx_get_data_addr(im1,&bpp1,&sl1,&endian1);
+  printf("OK (bpp1: %d, sizeline1: %d endian: %d type: %d)\n",bpp1,sl1,endian1,
+	 ((t_img *)im1)->type);
+
+  printf(" => Fill Image1 ...");
+  color_map_2(data1,bpp1,sl1,IM1_SX,IM1_SY,endian1, 1);
+  printf("OK (pixmap : %d)\n",(int)((t_img *)im1)->pix);
+
+  printf(" => Put Image1 ...");
+  mlx_put_image_to_window(mlx,win1,im1,20,20);
+  printf("OK\n");
+  sleep(2);
+
+  printf(" => Destroy Image1 ... ");
+  mlx_destroy_image(mlx, im1);
+  printf("OK\n");
+  sleep(2);
+
+  printf(" => Image3 ZPixmap %dx%d ...",IM3_SX,IM3_SY);
+  if (!(im3 = mlx_new_image(mlx,IM3_SX,IM3_SY)))
+    {
+      printf(" !! KO !!\n");
+      exit(1);
+    }
+  data3 = mlx_get_data_addr(im3,&bpp3,&sl3,&endian3);
+  printf("OK (bpp3 %d, sizeline3 %d endian3 %d type %d)\n",bpp3,sl3,endian3,
+	 ((t_img *)im3)->type);
+
+  printf(" => Fill Image3 ...");
+  color_map_2(data3,bpp3,sl3,IM3_SX,IM3_SY,endian3, 1);
+  printf("OK (pixmap : %d)\n",(int)((t_img *)im3)->pix);
+
+  printf(" => Put Image3 ...");
+  mlx_put_image_to_window(mlx,win1,im3,20,20);
+  printf("OK\n");
+  sleep(2);
+
+  printf(" => String ...");
+  mlx_string_put(mlx,win1,5,WIN1_SY/2,0xFF99FF,"String output");
+  mlx_string_put(mlx,win1,15,WIN1_SY/2+20,0x00FFFF,"MinilibX test");
+  printf("OK\n");
+  sleep(2);
+
+  printf(" => Xpm from file ...");
+  if (!(im2 = mlx_xpm_file_to_image(mlx,"open.xpm",&xpm1_x,&xpm1_y)))
+    {
+      printf(" !! KO !!\n");
+      exit(1);
+    }
+  data2 = mlx_get_data_addr(im2,&bpp2,&sl2,&endian2);
+  printf("OK (xpm %dx%d)(img bpp2: %d, sizeline2: %d endian: %d type: %d)\n",
+	 xpm1_x,xpm1_y,bpp2,sl2,endian2,((t_img *)im2)->type);
+  sleep(2);
+
+  printf(" => Put xpm ...");
+  mlx_put_image_to_window(mlx,win1,im2,0,0);
+  mlx_put_image_to_window(mlx,win1,im2,100,100);
+  printf("OK\n");
+  sleep(2);
+
+  printf(" => 2nd window,");
+  win2 = mlx_new_window(mlx,WIN1_SX,WIN1_SY,"Title2");
+  if (!(im4 = mlx_new_image(mlx,IM3_SX, IM3_SY)))
+    {
+      printf(" !! KO !!\n");
+      exit(1);
+    }
+  data4 = mlx_get_data_addr(im4,&bpp4,&sl4,&endian4);
+  color_map_2(data4,bpp4,sl4,IM3_SX,IM3_SY,endian4, 2);
+
+  printf(" 3rd window, Installing hooks ...");
+  win3 = mlx_new_window(mlx,WIN1_SX,WIN1_SY,"Title3");
+  mlx_expose_hook(win1,expose_win1,0);
+  mlx_mouse_hook(win1,mouse_win1,0);
+  mlx_key_hook(win1,key_win1,0);
+  mlx_expose_hook(win2,expose_win2,0);
+  mlx_mouse_hook(win2,mouse_win2,0);
+  mlx_key_hook(win2,key_win2,0);
+  mlx_key_hook(win3,key_win3,0);
+
+  mlx_hook(win3, MotionNotify, PointerMotionMask, mouse_win3, 0);
+
+  printf("OK\nNow in Loop. Just play. Esc in 3 to destroy, 1&2 to quit.\n");
+  
+  mlx_loop(mlx);
+}
+
+
+int	color_map_1(void *win,int w,int h)
+{
+  int	x;
+  int	y;
+  int	color;
+
+  x = w;
+  while (x--)
+    {
+      y = h;
+      while (y--)
+        {
+          color = (x*255)/w+((((w-x)*255)/w)<<16)+(((y*255)/h)<<8);
+	  mlx_pixel_put(mlx,win,x,y,color);
+        }
+    }
+}
+
+
+int	color_map_2(unsigned char *data,int bpp,int sl,int w,int h,int endian, int type)
+{
+  int	x;
+  int	y;
+  int	opp;
+  int	dec;
+  int	color;
+  int	color2;
+  unsigned char *ptr;
+
+  opp = bpp/8;
+  printf("(opp : %d) ",opp);
+  y = h;
+  while (y--)
+    {
+      ptr = data+y*sl;
+      x = w;
+      while (x--)
+        {
+	  if (type==2)
+	    color = (y*255)/w+((((w-x)*255)/w)<<16)
+	      +(((y*255)/h)<<8);
+	  else
+	    color = (x*255)/w+((((w-x)*255)/w)<<16)+(((y*255)/h)<<8);
+          color2 = mlx_get_color_value(mlx,color);
+	  dec = opp;
+	  while (dec--)
+	    if (endian==local_endian)
+	      {
+		if (endian)
+		  *(ptr+x*opp+dec) = ((unsigned char *)(&color2))[4-opp+dec];
+		else
+		  *(ptr+x*opp+dec) = ((unsigned char *)(&color2))[dec];
+	      }
+	    else
+	      {
+		if (endian)
+		  *(ptr+x*opp+dec) = ((unsigned char *)(&color2))[opp-1-dec];
+		else
+		  *(ptr+x*opp+dec) = ((unsigned char *)(&color2))[3-dec];
+	      }
+        }
+    }
+
+}
diff --git a/minilibx_linux/test/new_win.c b/minilibx_linux/test/new_win.c
new file mode 100644
index 0000000..62bed4b
--- /dev/null
+++ b/minilibx_linux/test/new_win.c
@@ -0,0 +1,31 @@
+
+
+
+#include "mlx.h"
+
+
+void *mlx;
+void *win1;
+void *win2;
+
+
+
+int gere_mouse(int x,int y,int button,void*toto)
+{
+  printf("Mouse event - new win\n");
+  mlx_destroy_window(mlx,win1);
+  win1 = mlx_new_window(mlx,random()%500,random()%500,"new win");
+  mlx_mouse_hook(win1,gere_mouse,0);
+}
+
+
+int main()
+{
+  srandom(time(0));
+  mlx = mlx_init();
+  win1 = mlx_new_window(mlx,300,300,"win1");
+  win2 = mlx_new_window(mlx,600,600,"win2");
+  mlx_mouse_hook(win1,gere_mouse,0);
+  mlx_mouse_hook(win2,gere_mouse,0);
+  mlx_loop(mlx);
+}
diff --git a/minilibx_linux/test/open.xpm b/minilibx_linux/test/open.xpm
new file mode 100644
index 0000000..87be371
--- /dev/null
+++ b/minilibx_linux/test/open.xpm
@@ -0,0 +1,1439 @@
+/* XPM */
+static char * open30_2_xpm[] = {
+"64 64 1372 2",
+"  	c None",
+". 	c #08090D",
+"+ 	c #1A1E23",
+"@ 	c #1F2124",
+"# 	c #060809",
+"$ 	c #1A1E21",
+"% 	c #4F606C",
+"& 	c #3D4145",
+"* 	c #868D93",
+"= 	c #454E56",
+"- 	c #627481",
+"; 	c #667C8A",
+"> 	c #2D3031",
+", 	c #D7E1E7",
+"' 	c #4D5157",
+") 	c #8997A5",
+"! 	c #282E31",
+"~ 	c #333B41",
+"{ 	c #A5C6DB",
+"] 	c #718C9B",
+"^ 	c #000000",
+"/ 	c #181B1F",
+"( 	c #262828",
+"_ 	c #D2DEE7",
+": 	c #B8C5D0",
+"< 	c #151719",
+"[ 	c #08090B",
+"} 	c #272B30",
+"| 	c #2D3037",
+"1 	c #26282C",
+"2 	c #1A1D1F",
+"3 	c #B1CADB",
+"4 	c #56646E",
+"5 	c #080809",
+"6 	c #080A0C",
+"7 	c #1E2126",
+"8 	c #98B7C9",
+"9 	c #A2CAE2",
+"0 	c #7FA1B5",
+"a 	c #06080A",
+"b 	c #252729",
+"c 	c #A7ADB2",
+"d 	c #272B2E",
+"e 	c #1E2023",
+"f 	c #C8D8E5",
+"g 	c #C9DDED",
+"h 	c #8996A3",
+"i 	c #6B7782",
+"j 	c #C7DFF0",
+"k 	c #CCE0F0",
+"l 	c #AFC1CF",
+"m 	c #47535B",
+"n 	c #B0D3E8",
+"o 	c #7E99A9",
+"p 	c #738493",
+"q 	c #97B4C7",
+"r 	c #53606A",
+"s 	c #6E8996",
+"t 	c #A1CBE3",
+"u 	c #9CC6DE",
+"v 	c #90B5CB",
+"w 	c #171D22",
+"x 	c #1E2629",
+"y 	c #020202",
+"z 	c #ABB3BA",
+"A 	c #BBC4C8",
+"B 	c #222323",
+"C 	c #141617",
+"D 	c #5D6164",
+"E 	c #ACB5BC",
+"F 	c #676D74",
+"G 	c #BDD4E5",
+"H 	c #B3D1E7",
+"I 	c #B0D1E7",
+"J 	c #728A99",
+"K 	c #94AEBF",
+"L 	c #B1D1E7",
+"M 	c #505C64",
+"N 	c #7B98A9",
+"O 	c #A1CBE0",
+"P 	c #99C3D9",
+"Q 	c #475863",
+"R 	c #A0C9DE",
+"S 	c #9CC6DA",
+"T 	c #9ECAE1",
+"U 	c #9CC5DD",
+"V 	c #9AC4DC",
+"W 	c #263137",
+"X 	c #3C4A55",
+"Y 	c #658190",
+"Z 	c #66686B",
+"` 	c #7D8085",
+" .	c #363839",
+"..	c #797E81",
+"+.	c #D2DBE1",
+"@.	c #DDE9F4",
+"#.	c #CADEEF",
+"$.	c #778593",
+"%.	c #AED0E5",
+"&.	c #9EC9DE",
+"*.	c #9EC8DF",
+"=.	c #9BC1D8",
+"-.	c #9EC8DE",
+";.	c #6B8596",
+">.	c #9BC5DC",
+",.	c #9BC6DF",
+"'.	c #9CC5DC",
+").	c #688595",
+"!.	c #6B8698",
+"~.	c #9CC4DC",
+"{.	c #9BC4DC",
+"].	c #9DC5DD",
+"^.	c #647D8C",
+"/.	c #485864",
+"(.	c #161A1D",
+"_.	c #36444C",
+":.	c #95BDD5",
+"<.	c #566E7E",
+"[.	c #A4AAAD",
+"}.	c #E9F2F7",
+"|.	c #DEEAF6",
+"1.	c #B5D4E9",
+"2.	c #A9CFE3",
+"3.	c #90B3C9",
+"4.	c #9FCAE1",
+"5.	c #9BC4DD",
+"6.	c #7490A2",
+"7.	c #99C2DB",
+"8.	c #81A5BA",
+"9.	c #9CC5DE",
+"0.	c #98C1DA",
+"a.	c #5F7889",
+"b.	c #96BFD8",
+"c.	c #44545F",
+"d.	c #565A5E",
+"e.	c #DFE6EC",
+"f.	c #E6EEF7",
+"g.	c #D6E4F2",
+"h.	c #BFD6E9",
+"i.	c #A9CCE3",
+"j.	c #9FC8DD",
+"k.	c #9DC6DD",
+"l.	c #9CC4DD",
+"m.	c #7D9FB0",
+"n.	c #98C0D6",
+"o.	c #9AC5DD",
+"p.	c #97BFD8",
+"q.	c #9BC5DF",
+"r.	c #2D3840",
+"s.	c #626567",
+"t.	c #E7ECF5",
+"u.	c #E1EAF5",
+"v.	c #CEE3F3",
+"w.	c #B7D6EA",
+"x.	c #A4CBE0",
+"y.	c #8AAFC5",
+"z.	c #647F90",
+"A.	c #648092",
+"B.	c #89B0C7",
+"C.	c #9CC6DF",
+"D.	c #5D7486",
+"E.	c #7B9BAF",
+"F.	c #84A8BF",
+"G.	c #9BC5DD",
+"H.	c #96BED5",
+"I.	c #4B5D69",
+"J.	c #9BC5DE",
+"K.	c #536B77",
+"L.	c #2E3B41",
+"M.	c #1B2124",
+"N.	c #3F4F58",
+"O.	c #4D5152",
+"P.	c #E7EEF3",
+"Q.	c #E2EAF5",
+"R.	c #CEE2F2",
+"S.	c #BAD5E9",
+"T.	c #9DC2D7",
+"U.	c #5C7281",
+"V.	c #232A31",
+"W.	c #08090A",
+"X.	c #121418",
+"Y.	c #131619",
+"Z.	c #131719",
+"`.	c #87ACC3",
+" +	c #7B9BAE",
+".+	c #87ADC3",
+"++	c #8FB5CB",
+"@+	c #678295",
+"#+	c #96C0D8",
+"$+	c #607787",
+"%+	c #6B8595",
+"&+	c #96C1DB",
+"*+	c #6A8595",
+"=+	c #35424A",
+"-+	c #7090A1",
+";+	c #15191C",
+">+	c #2D3033",
+",+	c #DDE5EB",
+"'+	c #D2E3F1",
+")+	c #BAD7EB",
+"!+	c #A9CFE5",
+"~+	c #272F35",
+"{+	c #1C2227",
+"]+	c #4F697B",
+"^+	c #6B8FA9",
+"/+	c #759CB6",
+"(+	c #7BA0BB",
+"_+	c #80A5BC",
+":+	c #88B0C8",
+"<+	c #96C3DB",
+"[+	c #8FB6CD",
+"}+	c #80A1B3",
+"|+	c #556876",
+"1+	c #96BFD7",
+"2+	c #566B77",
+"3+	c #93B8CD",
+"4+	c #637A8D",
+"5+	c #9DC6DE",
+"6+	c #8FB4CA",
+"7+	c #55697A",
+"8+	c #6F8F9F",
+"9+	c #91BDD5",
+"0+	c #283239",
+"a+	c #050406",
+"b+	c #767B80",
+"c+	c #BDC6CE",
+"d+	c #D4E5F3",
+"e+	c #C1D7EA",
+"f+	c #A7CDE4",
+"g+	c #9FC9DE",
+"h+	c #668596",
+"i+	c #6D90AA",
+"j+	c #5C7994",
+"k+	c #60849F",
+"l+	c #6286A1",
+"m+	c #688CA8",
+"n+	c #7298B2",
+"o+	c #82A8C2",
+"p+	c #8FBAD5",
+"q+	c #96C2DB",
+"r+	c #89ADC4",
+"s+	c #96BED6",
+"t+	c #99C2DA",
+"u+	c #6C899A",
+"v+	c #92BBD2",
+"w+	c #9AC4DD",
+"x+	c #5B717D",
+"y+	c #9EC6DE",
+"z+	c #8BB1C9",
+"A+	c #718EA0",
+"B+	c #94C3DB",
+"C+	c #536B78",
+"D+	c #3E505F",
+"E+	c #4E6373",
+"F+	c #2C333C",
+"G+	c #070708",
+"H+	c #040404",
+"I+	c #1A1C1E",
+"J+	c #202326",
+"K+	c #050606",
+"L+	c #23292E",
+"M+	c #A1C0D4",
+"N+	c #9FC9DD",
+"O+	c #97C2DB",
+"P+	c #80A8C1",
+"Q+	c #668AA6",
+"R+	c #4B5D72",
+"S+	c #4C647A",
+"T+	c #5F80A0",
+"U+	c #60859E",
+"V+	c #678AA6",
+"W+	c #739BB5",
+"X+	c #85AEC7",
+"Y+	c #92BDD7",
+"Z+	c #96BFD5",
+"`+	c #627B8A",
+" @	c #89B1C9",
+".@	c #2B353C",
+"+@	c #7597B2",
+"@@	c #779CB8",
+"#@	c #52697C",
+"$@	c #1D2328",
+"%@	c #445663",
+"&@	c #5E7A8D",
+"*@	c #252F37",
+"=@	c #090909",
+"-@	c #859BB2",
+";@	c #859DB8",
+">@	c #6E8396",
+",@	c #252C33",
+"'@	c #9CC4D7",
+")@	c #92C0D9",
+"!@	c #79A0BA",
+"~@	c #6487A3",
+"{@	c #566979",
+"]@	c #8CB0C2",
+"^@	c #51697C",
+"/@	c #60849D",
+"(@	c #6D8EAC",
+"_@	c #7BA0BC",
+":@	c #8AB4CE",
+"<@	c #95C2DB",
+"[@	c #9AC5DC",
+"}@	c #95C1DA",
+"|@	c #607B8C",
+"1@	c #597488",
+"2@	c #7EA6BF",
+"3@	c #597587",
+"4@	c #455664",
+"5@	c #668598",
+"6@	c #82A9C4",
+"7@	c #617F92",
+"8@	c #1A2328",
+"9@	c #2B3137",
+"0@	c #728FAC",
+"a@	c #51657B",
+"b@	c #6B8AA8",
+"c@	c #8EAEC7",
+"d@	c #A8C8E2",
+"e@	c #92BDD6",
+"f@	c #769DBA",
+"g@	c #526E87",
+"h@	c #7490A0",
+"i@	c #A6CDE4",
+"j@	c #97BFD4",
+"k@	c #55697D",
+"l@	c #6286A0",
+"m@	c #7399B3",
+"n@	c #84ACC5",
+"o@	c #92BFD9",
+"p@	c #99C4DC",
+"q@	c #94C0DA",
+"r@	c #4F6575",
+"s@	c #7DA5BF",
+"t@	c #7FA2BC",
+"u@	c #8FB6CE",
+"v@	c #95C3DB",
+"w@	c #8EB8D2",
+"x@	c #6A879D",
+"y@	c #111318",
+"z@	c #252A30",
+"A@	c #81868C",
+"B@	c #A5ABAD",
+"C@	c #70767C",
+"D@	c #38434F",
+"E@	c #637F9B",
+"F@	c #516980",
+"G@	c #799AB5",
+"H@	c #A5C3D9",
+"I@	c #93BDD6",
+"J@	c #779EBA",
+"K@	c #445A6B",
+"L@	c #93B5C9",
+"M@	c #B6D3E8",
+"N@	c #AECFE4",
+"O@	c #95BDD2",
+"P@	c #52687A",
+"Q@	c #6486A3",
+"R@	c #7092B0",
+"S@	c #90BCD6",
+"T@	c #97C4DC",
+"U@	c #A0C9E0",
+"V@	c #99C5DD",
+"W@	c #86AEC6",
+"X@	c #8FBAD4",
+"Y@	c #91BDD6",
+"Z@	c #7094AC",
+"`@	c #2A353E",
+" #	c #0B0E10",
+".#	c #888D90",
+"+#	c #787D82",
+"@#	c #465360",
+"##	c #56697F",
+"$#	c #A6CADD",
+"%#	c #5A7382",
+"&#	c #6C8CAA",
+"*#	c #A5BED3",
+"=#	c #A7CAE0",
+"-#	c #94C1DA",
+";#	c #7EA4BF",
+">#	c #415160",
+",#	c #9DC3D5",
+"'#	c #B3CFE1",
+")#	c #AAC3D4",
+"!#	c #A8CDE4",
+"~#	c #89ACBE",
+"{#	c #567088",
+"]#	c #6C91AC",
+"^#	c #81A7C2",
+"/#	c #96C4DC",
+"(#	c #85A9BD",
+"_#	c #708C9B",
+":#	c #5A6E7B",
+"<#	c #6C8695",
+"[#	c #97C3DB",
+"}#	c #8BB5CE",
+"|#	c #425461",
+"1#	c #63819E",
+"2#	c #415465",
+"3#	c #0B0D0E",
+"4#	c #607387",
+"5#	c #687D8C",
+"6#	c #B8D6E9",
+"7#	c #7893A2",
+"8#	c #576F85",
+"9#	c #A7BACF",
+"0#	c #B0CEE5",
+"a#	c #98C4DC",
+"b#	c #88B1CA",
+"c#	c #36444E",
+"d#	c #8FA0AD",
+"e#	c #73818D",
+"f#	c #596D81",
+"g#	c #B4D0E4",
+"h#	c #A3CDE2",
+"i#	c #658296",
+"j#	c #6A8DAB",
+"k#	c #7BA5C0",
+"l#	c #94BAD2",
+"m#	c #6D899B",
+"n#	c #99C3DC",
+"o#	c #8EB9D2",
+"p#	c #7AA0BA",
+"q#	c #6C8FAB",
+"r#	c #6484A1",
+"s#	c #1F252C",
+"t#	c #121619",
+"u#	c #7E96B0",
+"v#	c #7A8A96",
+"w#	c #BCD7EA",
+"x#	c #A0C5D9",
+"y#	c #3C4B57",
+"z#	c #A9BACD",
+"A#	c #BCD5E8",
+"B#	c #84A6BA",
+"C#	c #8EA1AE",
+"D#	c #CFD1D4",
+"E#	c #ECF6FA",
+"F#	c #ABB7C2",
+"G#	c #556F84",
+"H#	c #57626A",
+"I#	c #5C7078",
+"J#	c #6C8AA7",
+"K#	c #80A6C0",
+"L#	c #91B8D0",
+"M#	c #94BFD8",
+"N#	c #87B0CA",
+"O#	c #7CA2BB",
+"P#	c #7097AF",
+"Q#	c #495E6F",
+"R#	c #0C0E11",
+"S#	c #3A3F43",
+"T#	c #8AA3BB",
+"U#	c #778592",
+"V#	c #C0D8EB",
+"W#	c #B3D5E9",
+"X#	c #404A53",
+"Y#	c #B2C2D3",
+"Z#	c #96A1AC",
+"`#	c #9DB2C3",
+" $	c #AEBECE",
+".$	c #EDEFF3",
+"+$	c #F7FAFC",
+"@$	c #B6BFC7",
+"#$	c #556E85",
+"$$	c #121314",
+"%$	c #2B2E2F",
+"&$	c #555A5E",
+"*$	c #3B4C5B",
+"=$	c #6F8EA4",
+"-$	c #92BED8",
+";$	c #9DC7DF",
+">$	c #87ACC1",
+",$	c #546A78",
+"'$	c #516874",
+")$	c #4E6570",
+"!$	c #4D6271",
+"~$	c #4C6271",
+"{$	c #4E677A",
+"]$	c #38454E",
+"^$	c #6C7278",
+"/$	c #86A1B6",
+"($	c #5C656C",
+"_$	c #A4B0BA",
+":$	c #555D64",
+"<$	c #657178",
+"[$	c #A6B0B5",
+"}$	c #939CA1",
+"|$	c #D4E4F1",
+"1$	c #A0BACE",
+"2$	c #B9C7D7",
+"3$	c #F6F7F9",
+"4$	c #C6CED1",
+"5$	c #506A7C",
+"6$	c #060607",
+"7$	c #676A6B",
+"8$	c #91999F",
+"9$	c #7CA3BE",
+"0$	c #96BCD4",
+"a$	c #5B717E",
+"b$	c #4B5F6C",
+"c$	c #455864",
+"d$	c #5B717F",
+"e$	c #81A5B9",
+"f$	c #98C4DD",
+"g$	c #93BFD8",
+"h$	c #87B1CA",
+"i$	c #7BA1BC",
+"j$	c #5A7489",
+"k$	c #222A33",
+"l$	c #838A92",
+"m$	c #9DADBC",
+"n$	c #ECF0F5",
+"o$	c #F1F9FB",
+"p$	c #818A8D",
+"q$	c #4A5155",
+"r$	c #6A6F72",
+"s$	c #7E898F",
+"t$	c #E6F1F7",
+"u$	c #CADCED",
+"v$	c #A0B7CC",
+"w$	c #C6D1DF",
+"x$	c #AFB3B4",
+"y$	c #5F707D",
+"z$	c #CBCFD1",
+"A$	c #F4F5F6",
+"B$	c #66737F",
+"C$	c #87B2CB",
+"D$	c #90B7CD",
+"E$	c #596E7B",
+"F$	c #586F7E",
+"G$	c #8BB0C8",
+"H$	c #91BED6",
+"I$	c #83ADC7",
+"J$	c #6D8EA7",
+"K$	c #3F5161",
+"L$	c #2D3A45",
+"M$	c #1F2020",
+"N$	c #BDC5CC",
+"O$	c #E0EDF5",
+"P$	c #BBCAD8",
+"Q$	c #E1E4E7",
+"R$	c #5E6368",
+"S$	c #5B5F62",
+"T$	c #D9E7F3",
+"U$	c #A4C3D6",
+"V$	c #89A3B3",
+"W$	c #7B91A1",
+"X$	c #627990",
+"Y$	c #42505A",
+"Z$	c #CACCCE",
+"`$	c #F9F9F9",
+" %	c #FDFDFD",
+".%	c #BCBEC0",
+"+%	c #5C7689",
+"@%	c #8DB9D3",
+"#%	c #8FB5CC",
+"$%	c #536471",
+"%%	c #98C1D9",
+"&%	c #91BED7",
+"*%	c #81AAC5",
+"=%	c #597386",
+"-%	c #41535F",
+";%	c #6486A2",
+">%	c #4D667D",
+",%	c #070809",
+"'%	c #44484E",
+")%	c #BEC8D0",
+"!%	c #8096A6",
+"~%	c #516473",
+"{%	c #A9ACAF",
+"]%	c #8B8F91",
+"^%	c #A8B3BD",
+"/%	c #C5DAEB",
+"(%	c #9FC8E1",
+"_%	c #8FBCD6",
+":%	c #81A8C2",
+"<%	c #6C90AC",
+"[%	c #56728C",
+"}%	c #585B5F",
+"|%	c #CBCDCD",
+"1%	c #C1C3C6",
+"2%	c #4F565F",
+"3%	c #82ABC3",
+"4%	c #93BCD3",
+"5%	c #95BED7",
+"6%	c #8EB9D3",
+"7%	c #5B788B",
+"8%	c #627E91",
+"9%	c #7FA7C1",
+"0%	c #6C91AB",
+"a%	c #546F87",
+"b%	c #6F7376",
+"c%	c #D5E2EF",
+"d%	c #A9C4D8",
+"e%	c #81A1BA",
+"f%	c #333940",
+"g%	c #5F6B76",
+"h%	c #C0D5E8",
+"i%	c #AACCE2",
+"j%	c #8EB8D3",
+"k%	c #7FA5BF",
+"l%	c #7095B0",
+"m%	c #4E697E",
+"n%	c #07090A",
+"o%	c #0D0F10",
+"p%	c #7193A6",
+"q%	c #96C3DC",
+"r%	c #8EBCD7",
+"s%	c #91BDD7",
+"t%	c #8FBBD6",
+"u%	c #7699AD",
+"v%	c #4D626F",
+"w%	c #252D33",
+"x%	c #101215",
+"y%	c #0C0D0E",
+"z%	c #0A0C0E",
+"A%	c #06090A",
+"B%	c #7F8488",
+"C%	c #D7E3F1",
+"D%	c #B6D0E4",
+"E%	c #A3C2D7",
+"F%	c #596872",
+"G%	c #A9BED0",
+"H%	c #B4D0E5",
+"I%	c #9EC8DC",
+"J%	c #8FB9D4",
+"K%	c #85ADC7",
+"L%	c #7FA4BE",
+"M%	c #4B606F",
+"N%	c #4E6372",
+"O%	c #89B6D0",
+"P%	c #92C1DA",
+"Q%	c #9DC7DD",
+"R%	c #95C0DA",
+"S%	c #94BED8",
+"T%	c #8BB8D1",
+"U%	c #7AA0B9",
+"V%	c #4E667A",
+"W%	c #344151",
+"X%	c #0C0D0F",
+"Y%	c #8A8F92",
+"Z%	c #D4E6F5",
+"`%	c #BCD5E9",
+" &	c #8599A5",
+".&	c #939DA6",
+"+&	c #C4DAEB",
+"@&	c #89A6B9",
+"#&	c #7D9FB5",
+"$&	c #98C3DC",
+"%&	c #95C0D9",
+"&&	c #7CA2B9",
+"*&	c #7697AE",
+"=&	c #698498",
+"-&	c #7394A8",
+";&	c #9EC7DF",
+">&	c #8DB1C4",
+",&	c #6B8594",
+"'&	c #50636C",
+")&	c #50626C",
+"!&	c #7F9FB1",
+"~&	c #93B8D0",
+"{&	c #627A88",
+"]&	c #90B6CC",
+"^&	c #93BDD7",
+"/&	c #87AFC9",
+"(&	c #7291A7",
+"_&	c #384651",
+":&	c #121618",
+"<&	c #12171B",
+"[&	c #4F6986",
+"}&	c #597998",
+"|&	c #324052",
+"1&	c #969CA1",
+"2&	c #D6E6F5",
+"3&	c #C6DCEE",
+"4&	c #505A64",
+"5&	c #82929F",
+"6&	c #99ABBB",
+"7&	c #A1B9CA",
+"8&	c #87A0B0",
+"9&	c #718EA1",
+"0&	c #8DB2C9",
+"a&	c #8BAEC4",
+"b&	c #586D7D",
+"c&	c #97C0D9",
+"d&	c #8DB3C9",
+"e&	c #95B8CD",
+"f&	c #9DC0D6",
+"g&	c #6F8B9C",
+"h&	c #354249",
+"i&	c #464E54",
+"j&	c #8A98A5",
+"k&	c #AABAC7",
+"l&	c #86939E",
+"m&	c #41494F",
+"n&	c #4A5861",
+"o&	c #97C1DA",
+"p&	c #5E7888",
+"q&	c #5C7482",
+"r&	c #88ACC2",
+"s&	c #91BFD7",
+"t&	c #799CB5",
+"u&	c #47596A",
+"v&	c #0D0F12",
+"w&	c #1A2127",
+"x&	c #56778D",
+"y&	c #688BA9",
+"z&	c #5D7F9E",
+"A&	c #547391",
+"B&	c #0E1013",
+"C&	c #9DA6AB",
+"D&	c #C8DCED",
+"E&	c #7A8996",
+"F&	c #B5CEE0",
+"G&	c #BCDBEC",
+"H&	c #B9D5EA",
+"I&	c #8BA2B2",
+"J&	c #6C8A9D",
+"K&	c #97BFD7",
+"L&	c #3E4E59",
+"M&	c #92B5CB",
+"N&	c #535F68",
+"O&	c #454F56",
+"P&	c #6F7C87",
+"Q&	c #ABC0D1",
+"R&	c #C7DCEE",
+"S&	c #C5DBED",
+"T&	c #C2D7EA",
+"U&	c #BFD8EA",
+"V&	c #BCD7EB",
+"W&	c #62717B",
+"X&	c #5B6F7B",
+"Y&	c #95C3DC",
+"Z&	c #8BB2C9",
+"`&	c #485761",
+" *	c #42525F",
+".*	c #6686A1",
+"+*	c #587896",
+"@*	c #1B2129",
+"#*	c #5C7A94",
+"$*	c #7DA2BD",
+"%*	c #84AEC7",
+"&*	c #749BB5",
+"**	c #5C7E9C",
+"=*	c #27343F",
+"-*	c #A4A9B2",
+";*	c #D9E7F4",
+">*	c #C8DBEC",
+",*	c #B1C8DA",
+"'*	c #5D6C76",
+")*	c #A8C5D8",
+"!*	c #A6BDD0",
+"~*	c #B9D6EA",
+"{*	c #B9D4E9",
+"]*	c #8198A8",
+"^*	c #8AADC3",
+"/*	c #8CB1CA",
+"(*	c #96C2D8",
+"_*	c #A3C7DF",
+":*	c #ADCDE3",
+"<*	c #ABD0E4",
+"[*	c #ADCFE3",
+"}*	c #AACEE4",
+"|*	c #A4CDE3",
+"1*	c #A1CBE1",
+"2*	c #A3CCE3",
+"3*	c #A2C9DF",
+"4*	c #41515A",
+"5*	c #81A2B5",
+"6*	c #94C0D7",
+"7*	c #5E7789",
+"8*	c #526777",
+"9*	c #516777",
+"0*	c #6B8CA5",
+"a*	c #759CBA",
+"b*	c #658AA5",
+"c*	c #587798",
+"d*	c #1B242B",
+"e*	c #0E1110",
+"f*	c #101214",
+"g*	c #202931",
+"h*	c #59758E",
+"i*	c #799FBB",
+"j*	c #84B1CA",
+"k*	c #86ACC6",
+"l*	c #354758",
+"m*	c #A0A6AE",
+"n*	c #DAE6F2",
+"o*	c #C4DCEE",
+"p*	c #B4D2E8",
+"q*	c #3E4A53",
+"r*	c #698091",
+"s*	c #5D7581",
+"t*	c #A3CAE0",
+"u*	c #A6CFE5",
+"v*	c #A5CCE5",
+"w*	c #718A9C",
+"x*	c #98C3DB",
+"y*	c #83ABC7",
+"z*	c #2E3B46",
+"A*	c #33414A",
+"B*	c #678398",
+"C*	c #8AB3CE",
+"D*	c #93BED7",
+"E*	c #97C4DB",
+"F*	c #42525E",
+"G*	c #88ACC0",
+"H*	c #789EB9",
+"I*	c #7A9FBB",
+"J*	c #7EA2BD",
+"K*	c #779DB5",
+"L*	c #577081",
+"M*	c #5B7B9B",
+"N*	c #1D2229",
+"O*	c #547390",
+"P*	c #54728D",
+"Q*	c #6082A0",
+"R*	c #688EA9",
+"S*	c #6689A7",
+"T*	c #6086A0",
+"U*	c #6285A1",
+"V*	c #6B8DAA",
+"W*	c #718FAB",
+"X*	c #3E5568",
+"Y*	c #969DA1",
+"Z*	c #DBE8F4",
+"`*	c #95ACBD",
+" =	c #758B9A",
+".=	c #A4C9DE",
+"+=	c #698190",
+"@=	c #667E8A",
+"#=	c #7D99AA",
+"$=	c #7B9BAD",
+"%=	c #6F8C9A",
+"&=	c #536976",
+"*=	c #84ADC6",
+"==	c #6D92AD",
+"-=	c #62829E",
+";=	c #43576A",
+">=	c #2F3B46",
+",=	c #5C788A",
+"'=	c #86AFC8",
+")=	c #93BED8",
+"!=	c #93BAD5",
+"~=	c #93BAD2",
+"{=	c #92BCD4",
+"]=	c #7EA2B6",
+"^=	c #3D4D56",
+"/=	c #485B67",
+"(=	c #7596A9",
+"_=	c #8CBBD4",
+":=	c #90BCD5",
+"<=	c #91BFD9",
+"[=	c #789BAD",
+"}=	c #465B6A",
+"|=	c #59789A",
+"1=	c #5D7F9D",
+"2=	c #5E839C",
+"3=	c #59799A",
+"4=	c #415569",
+"5=	c #2D3A46",
+"6=	c #2E3B49",
+"7=	c #4A647C",
+"8=	c #587690",
+"9=	c #39485A",
+"0=	c #7F8589",
+"a=	c #D9E8F5",
+"b=	c #CCDEEE",
+"c=	c #8597A5",
+"d=	c #B3D2E3",
+"e=	c #9BB3C4",
+"f=	c #B2CEE1",
+"g=	c #B2D1E7",
+"h=	c #ABCFE6",
+"i=	c #94B7CB",
+"j=	c #495C6A",
+"k=	c #688498",
+"l=	c #617B8A",
+"m=	c #85ADC8",
+"n=	c #78A0B9",
+"o=	c #62819B",
+"p=	c #2E3843",
+"q=	c #485A6C",
+"r=	c #67889C",
+"s=	c #8AB5CF",
+"t=	c #8EB9D1",
+"u=	c #6C899B",
+"v=	c #6E91A7",
+"w=	c #678399",
+"x=	c #6888A1",
+"y=	c #323E48",
+"z=	c #5B7585",
+"A=	c #98C5DD",
+"B=	c #83ACC1",
+"C=	c #2D373F",
+"D=	c #4B637C",
+"E=	c #567694",
+"F=	c #26313C",
+"G=	c #15191F",
+"H=	c #4D647A",
+"I=	c #252F39",
+"J=	c #5D6163",
+"K=	c #DDE9F5",
+"L=	c #CEDFEE",
+"M=	c #8898A5",
+"N=	c #B0CBDC",
+"O=	c #BFDAEC",
+"P=	c #BFDBEC",
+"Q=	c #BBDAEC",
+"R=	c #BAD7EA",
+"S=	c #6B808F",
+"T=	c #7297B0",
+"U=	c #8CB8D1",
+"V=	c #95C1D9",
+"W=	c #91BCD6",
+"X=	c #86AEC8",
+"Y=	c #7496B3",
+"Z=	c #6587A2",
+"`=	c #384958",
+" -	c #323F4B",
+".-	c #546A7C",
+"+-	c #6C88A1",
+"@-	c #779AB1",
+"#-	c #658297",
+"$-	c #3B4A58",
+"%-	c #33404B",
+"&-	c #202830",
+"*-	c #577287",
+"=-	c #86B1CC",
+"--	c #86ACC0",
+";-	c #6E8797",
+">-	c #9CC7DF",
+",-	c #92BCD5",
+"'-	c #91BCD5",
+")-	c #8EB6CE",
+"!-	c #344453",
+"~-	c #263039",
+"{-	c #364452",
+"]-	c #2B3643",
+"^-	c #2A2D2E",
+"/-	c #E1EBF4",
+"(-	c #D2E4F3",
+"_-	c #A0B2C3",
+":-	c #8094A1",
+"<-	c #BAD8EB",
+"[-	c #B8D6EA",
+"}-	c #485A6A",
+"|-	c #789FB9",
+"1-	c #90BBD3",
+"2-	c #94C4DC",
+"3-	c #88B3CD",
+"4-	c #7A9EB9",
+"5-	c #698BA8",
+"6-	c #4D677C",
+"7-	c #151A1E",
+"8-	c #1A2125",
+"9-	c #171C21",
+"0-	c #1D2329",
+"a-	c #1D262E",
+"b-	c #486073",
+"c-	c #6A8CAA",
+"d-	c #7CA2BE",
+"e-	c #90BDD7",
+"f-	c #9AC5DE",
+"g-	c #7493A2",
+"h-	c #708B99",
+"i-	c #8CB7D1",
+"j-	c #7494AB",
+"k-	c #68889F",
+"l-	c #6A8FA5",
+"m-	c #7BA2BC",
+"n-	c #171D21",
+"o-	c #1D262F",
+"p-	c #212B36",
+"q-	c #09090B",
+"r-	c #BBC2C9",
+"s-	c #D4E4F2",
+"t-	c #C1D9EB",
+"u-	c #44515A",
+"v-	c #92B5C9",
+"w-	c #6B8795",
+"x-	c #4E687E",
+"y-	c #7EA6C0",
+"z-	c #91BED8",
+"A-	c #93BFD9",
+"B-	c #8CB5D0",
+"C-	c #7DA4BE",
+"D-	c #6F92AE",
+"E-	c #6687A5",
+"F-	c #526C85",
+"G-	c #415669",
+"H-	c #384655",
+"I-	c #6589A4",
+"J-	c #6E92AE",
+"K-	c #80A8C2",
+"L-	c #92BCD6",
+"M-	c #91BFD8",
+"N-	c #799AAF",
+"O-	c #6A8796",
+"P-	c #81AAC3",
+"Q-	c #577187",
+"R-	c #1F2930",
+"S-	c #192027",
+"T-	c #1B2227",
+"U-	c #0D1010",
+"V-	c #0E1012",
+"W-	c #070709",
+"X-	c #5C6062",
+"Y-	c #DCE8F3",
+"Z-	c #C4DCEF",
+"`-	c #9BB3C6",
+" ;	c #3A424F",
+".;	c #313A44",
+"+;	c #35424C",
+"@;	c #374655",
+"#;	c #6E91AD",
+"$;	c #87B2CC",
+"%;	c #799EBA",
+"&;	c #618298",
+"*;	c #7095AF",
+"=;	c #435663",
+"-;	c #80A7C0",
+";;	c #95C4DC",
+">;	c #779CB3",
+",;	c #526D7E",
+"';	c #516A7A",
+");	c #526B7B",
+"!;	c #465764",
+"~;	c #34414E",
+"{;	c #5C7E9A",
+"];	c #2B3741",
+"^;	c #4B657F",
+"/;	c #5C7D9C",
+"(;	c #557088",
+"_;	c #0F0F10",
+":;	c #B9C2CA",
+"<;	c #CCDFEF",
+"[;	c #B4CDE1",
+"};	c #8DAEC8",
+"|;	c #6F93AE",
+"1;	c #678CA6",
+"2;	c #6E92AF",
+"3;	c #81A8C1",
+"4;	c #8FBBD5",
+"5;	c #8DB9D2",
+"6;	c #6D8FA2",
+"7;	c #586F82",
+"8;	c #394851",
+"9;	c #86B0C6",
+"0;	c #85AFC8",
+"a;	c #6F94AF",
+"b;	c #698DA8",
+"c;	c #6889A7",
+"d;	c #5E7E9F",
+"e;	c #475D75",
+"f;	c #2E3C4A",
+"g;	c #5D7E9D",
+"h;	c #405465",
+"i;	c #36393B",
+"j;	c #D7E5F1",
+"k;	c #A4C5DC",
+"l;	c #668496",
+"m;	c #7595AB",
+"n;	c #7798AE",
+"o;	c #97C2DA",
+"p;	c #789DB3",
+"q;	c #8BB1C8",
+"r;	c #93C0D9",
+"s;	c #8BB5CF",
+"t;	c #85AFC9",
+"u;	c #82AAC6",
+"v;	c #5F7C95",
+"w;	c #1E252C",
+"x;	c #54728E",
+"y;	c #587899",
+"z;	c #5A7B9B",
+"A;	c #2D3843",
+"B;	c #798086",
+"C;	c #D1E3F1",
+"D;	c #B7D3E8",
+"E;	c #7E98AB",
+"F;	c #181C1F",
+"G;	c #46525F",
+"H;	c #80A1B8",
+"I;	c #99C3DB",
+"J;	c #85ACC2",
+"K;	c #21272D",
+"L;	c #0A0B0D",
+"M;	c #53718C",
+"N;	c #577797",
+"O;	c #1B2229",
+"P;	c #0D0E0F",
+"Q;	c #B3BDC4",
+"R;	c #CADDED",
+"S;	c #B4D3E7",
+"T;	c #2B3339",
+"U;	c #2F3840",
+"V;	c #7899AC",
+"W;	c #93C1D9",
+"X;	c #8FBCD5",
+"Y;	c #8BB6D1",
+"Z;	c #8DB8D2",
+"`;	c #92BFD8",
+" >	c #678092",
+".>	c #547089",
+"+>	c #5C7F9B",
+"@>	c #1F262E",
+"#>	c #202223",
+"$>	c #B1BECB",
+"%>	c #C3D9EB",
+"&>	c #7B8D99",
+"*>	c #708B9A",
+"=>	c #85ABC1",
+"->	c #7FA3BA",
+";>	c #92BBD3",
+">>	c #7CA0B4",
+",>	c #97BDD4",
+"'>	c #657E8F",
+")>	c #93BDD4",
+"!>	c #88ADC7",
+"~>	c #6F94AE",
+"{>	c #526A7E",
+"]>	c #65849B",
+"^>	c #799DBB",
+"/>	c #84AFC9",
+"(>	c #8FB9D2",
+"_>	c #323C45",
+":>	c #516C84",
+"<>	c #658AA4",
+"[>	c #5B7C9B",
+"}>	c #2E3A49",
+"|>	c #2A3038",
+"1>	c #252D3A",
+"2>	c #1B1E20",
+"3>	c #ADBFCF",
+"4>	c #C0D6E7",
+"5>	c #B0CDE2",
+"6>	c #8EB3C9",
+"7>	c #526975",
+"8>	c #6B899D",
+"9>	c #597183",
+"0>	c #90BAD5",
+"a>	c #94C2DA",
+"b>	c #82ABC5",
+"c>	c #495E6E",
+"d>	c #82A8C3",
+"e>	c #81A4BA",
+"f>	c #7594A5",
+"g>	c #87ABC3",
+"h>	c #4D6573",
+"i>	c #6689A6",
+"j>	c #526E85",
+"k>	c #243037",
+"l>	c #607B96",
+"m>	c #7699B6",
+"n>	c #789EB5",
+"o>	c #303D48",
+"p>	c #7498B4",
+"q>	c #7094AF",
+"r>	c #597792",
+"s>	c #242F39",
+"t>	c #1A1D25",
+"u>	c #374553",
+"v>	c #4D677D",
+"w>	c #14191E",
+"x>	c #040505",
+"y>	c #171A1D",
+"z>	c #8A9FAD",
+"A>	c #BCD9EC",
+"B>	c #B5D3E7",
+"C>	c #A2CAE1",
+"D>	c #9DC7DE",
+"E>	c #9EC7DD",
+"F>	c #3B4A57",
+"G>	c #455867",
+"H>	c #98C2DB",
+"I>	c #85B0CC",
+"J>	c #7496B2",
+"K>	c #4C606F",
+"L>	c #6E8EA3",
+"M>	c #7EA0B6",
+"N>	c #91BBD3",
+"O>	c #8DB7D1",
+"P>	c #90BAD4",
+"Q>	c #96C1DA",
+"R>	c #3B4853",
+"S>	c #688AA5",
+"T>	c #4C657A",
+"U>	c #1B2026",
+"V>	c #2B3C44",
+"W>	c #5F7A90",
+"X>	c #587284",
+"Y>	c #536978",
+"Z>	c #88B1CC",
+"`>	c #759AB8",
+" ,	c #617E9A",
+".,	c #556F85",
+"+,	c #20272E",
+"@,	c #323D48",
+"#,	c #333E4A",
+"$,	c #060707",
+"%,	c #4A5159",
+"&,	c #ACC3D5",
+"*,	c #ACCFE5",
+"=,	c #5A6874",
+"-,	c #AACDE1",
+";,	c #9CC6DC",
+">,	c #35414C",
+",,	c #769AB2",
+"',	c #80AAC5",
+"),	c #6F92AB",
+"!,	c #38464F",
+"~,	c #7EA4B9",
+"{,	c #97C3DC",
+"],	c #7A9FB6",
+"^,	c #3F505C",
+"/,	c #6D8DA6",
+"(,	c #1E282E",
+"_,	c #080909",
+":,	c #090A0C",
+"<,	c #344452",
+"[,	c #3B4857",
+"},	c #7799AE",
+"|,	c #8DB6D1",
+"1,	c #66869E",
+"2,	c #3D4957",
+"3,	c #536C84",
+"4,	c #353F4C",
+"5,	c #111215",
+"6,	c #65727E",
+"7,	c #A6BCCD",
+"8,	c #5D6972",
+"9,	c #AED0E6",
+"0,	c #99C5DC",
+"a,	c #8DB5D0",
+"b,	c #8DB5CE",
+"c,	c #90BBD5",
+"d,	c #84AAC5",
+"e,	c #8EBBD5",
+"f,	c #80A7C1",
+"g,	c #6C8DA2",
+"h,	c #85AFC6",
+"i,	c #61839B",
+"j,	c #374352",
+"k,	c #576D83",
+"l,	c #80A6C1",
+"m,	c #81A4BB",
+"n,	c #111315",
+"o,	c #111418",
+"p,	c #4C6378",
+"q,	c #33424C",
+"r,	c #37454D",
+"s,	c #8DB4CF",
+"t,	c #7397B3",
+"u,	c #3A495A",
+"v,	c #0D0F13",
+"w,	c #27303A",
+"x,	c #272E36",
+"y,	c #0F1012",
+"z,	c #90A4B2",
+"A,	c #A8CBE2",
+"B,	c #91BCD4",
+"C,	c #80ABC3",
+"D,	c #567083",
+"E,	c #67899D",
+"F,	c #94C2DB",
+"G,	c #95C1DB",
+"H,	c #779CB2",
+"I,	c #60849E",
+"J,	c #64849F",
+"K,	c #1A1F22",
+"L,	c #405061",
+"M,	c #79A1BD",
+"N,	c #324051",
+"O,	c #6183A1",
+"P,	c #6B8FAD",
+"Q,	c #6485A2",
+"R,	c #34444F",
+"S,	c #060606",
+"T,	c #2D3339",
+"U,	c #B2CBDF",
+"V,	c #94BCD5",
+"W,	c #7DA2BA",
+"X,	c #3F5264",
+"Y,	c #5A7991",
+"Z,	c #7195B3",
+"`,	c #7BA5BD",
+" '	c #81AAC6",
+".'	c #88B2CC",
+"+'	c #8EBBD4",
+"@'	c #8AB2CC",
+"#'	c #82ADC7",
+"$'	c #7092A5",
+"%'	c #95C2DA",
+"&'	c #41525F",
+"*'	c #6387A3",
+"='	c #475F72",
+"-'	c #21282F",
+";'	c #5B7288",
+">'	c #0D0F11",
+",'	c #0B0E11",
+"''	c #212C36",
+")'	c #26323C",
+"!'	c #161B20",
+"~'	c #55616D",
+"{'	c #9BB9D0",
+"]'	c #799EB6",
+"^'	c #27313A",
+"/'	c #1A222B",
+"('	c #5D7E99",
+"_'	c #6587A4",
+":'	c #6789A6",
+"<'	c #6B8EAB",
+"['	c #628097",
+"}'	c #6D8B9D",
+"|'	c #769AAF",
+"1'	c #6E91A9",
+"2'	c #6C8EAD",
+"3'	c #6E91AF",
+"4'	c #3C4D59",
+"5'	c #8BB1CB",
+"6'	c #232D32",
+"7'	c #13171B",
+"8'	c #232B32",
+"9'	c #839AAF",
+"0'	c #789BB3",
+"a'	c #283138",
+"b'	c #0C0E0F",
+"c'	c #242B33",
+"d'	c #3D4D5B",
+"e'	c #435768",
+"f'	c #4B6176",
+"g'	c #283137",
+"h'	c #8DB4CC",
+"i'	c #41535E",
+"j'	c #405362",
+"k'	c #3C4F60",
+"l'	c #3C4E5B",
+"m'	c #2B353E",
+"n'	c #526876",
+"o'	c #92BAD3",
+"p'	c #1B1F23",
+"q'	c #31383F",
+"r'	c #7F9CB6",
+"s'	c #21292F",
+"t'	c #29333F",
+"u'	c #1F252E",
+"v'	c #090A0E",
+"w'	c #4D626E",
+"x'	c #96BDD3",
+"y'	c #191D20",
+"z'	c #13181B",
+"A'	c #80A4BC",
+"B'	c #1B2027",
+"C'	c #5D7182",
+"D'	c #2C383F",
+"E'	c #364857",
+"F'	c #1A2028",
+"G'	c #333F49",
+"H'	c #7FA2B5",
+"I'	c #4A5E6E",
+"J'	c #232E35",
+"K'	c #252D35",
+"L'	c #2F3A41",
+"M'	c #0A0B0E",
+"N'	c #14191D",
+"O'	c #5A717F",
+"P'	c #212931",
+"Q'	c #222B34",
+"R'	c #101216",
+"S'	c #21272B",
+"                                                                                                                                ",
+"                                                                                                                                ",
+"                                                                                                                                ",
+"                                                                    .                                                           ",
+"                                                                    +                                                           ",
+"                                    @               #             $ %                                                           ",
+"                                  & *               =             - ;                                                           ",
+"                                  > , '             ) !         ~ { ]                                                           ",
+"                  ^ /             ( _ : < [ } | 1 2 3 4 5 6   7 8 9 0 a                                                         ",
+"                  b c d           e f g h i j k l m n o p q r s t u v w         x                                               ",
+"                  y z A B   C D E F G H I J K L M N O P Q R S T U U V W       X Y                                               ",
+"                    Z `  ...+.@.#.$.%.O &.*.=.-.;.>.,.'.).!.~.~.~.{.].^./.(._.:.<.                                              ",
+"                    b [.}.|.#.1.2.3.4.{.~.~.~.~.5.6.5.~.7.8.{.~.~.~.~.9.0.a.b.].c.                                              ",
+"                  d.e.f.g.h.i.j.k.{.~.~.~.~.l.~.m.% n.~.o.{.{.~.~.~.~.p.V 9.~.q.r.                                              ",
+"                s.t.u.v.w.x.u y.z.A.B.5.~.~.5.C.D.E.F.~.~.G.~.~.~.G.H.I.J.~.~.J.K.L.  M.N.                                      ",
+"              O.P.Q.R.S.T.U.V.W.X.Y.Z.`.~.~.5. +.+++@+U ~.~.~.~.~.#+$+%+,.~.~.G.&+*+=+-+;+                                      ",
+"            >+,+Q.'+)+!+~+{+]+^+/+(+_+:+<+~.[+}+U 9.|+5.~.~.~.~.1+2+3+4+5+~.].6+7+8+9+0+                                        ",
+"          a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+5.U ~.U r+s+~.~.~.t+u+v+w+x+y+~.z+A+t+B+C+D+E+          F+G+                        ",
+"        H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+V ~.~.~.~.U ~.~.~.o.9.{.Z+`+9.~.~.~.V  @.@+@@@#@  $@%@&@*@                          ",
+"        =@-@;@>@,@'@'.)@!@~@{@]@^@/@l+(@_@:@<@~.~.~.U {.~.~.~.{.~.~.{.[@~.~.~.~.}@|@1@2@3@4@5@6@7@8@                            ",
+"        9@0@a@b@c@d@-.e@f@g@h@i@j@k@l@V+m@n@o@p@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.q@r@s@t@u@v@w@x@y@                              ",
+"z@A@B@C@D@E@X F@G@H@R I@J@K@L@M@N@O@P@Q@R@o+S@T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.9.U@V@W@X@<+V Y@Z@`@ #                              ",
+"    .#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#S@/#~.~.~.~.~.~.~.~.~.~.~.~.~.U (#_#:#<#p@{.[#}#|#1#2#                              ",
+"      3#4#5#6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#S@/#~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.l#m#9.{.~.n#o#p#q#r#s#                            ",
+"      t#u#v#w#x#y#z#A#B#C#D#E#F#G#H#I#% J#K#S@T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.L#0.l.~.~.{.M#N#O#P#Q#R#                          ",
+"      S#T#U#V#W#X#Y#Z#`# $.$+$@$#$$$%$&$*$=$-$a#~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.o.o.;$9.G.~.>$,$'$)$!$~${$]$                      ",
+"      ^$/$($_$:$<$[$}$|$1$2$3$4$5$6$7$8$9$:+<+~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.G.0$a$b$c$d$e$f$g$h$i$j$k$                        ",
+"    [ l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$M#p@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.;$D$E$F$G$H$I$J$K$L$                          ",
+"    M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$`$ %.%+%@%<+{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.#%$%%%p@&%*%=%-%;%>%,%                        ",
+"    '%)%!%~%{%]%^%/%(%_%:%<%[%}%|%1%2%3%-$T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.4%5%U p@6%7%8%9%0%a%y                         ",
+"    b%c%d%e%f%g%h%i%G.[#j%k%l%m%n%o%p%@%q%{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.~.~.~.~.~.~.V G.}@r%s%t%u%v%w%M.x%y%z%A%              ",
+"    B%C%D%E%F%G%H%I%V o.<@J%K%L%M%N%O%P%p@~.~.~.~.~.~.~.~.~.U ~.~.U 9.Q%{.~.~.~.~.~.{.%%U {.~.~.{.v@R%S%T%U%V%W%    X%$         ",
+"    Y%Z%`% &.&+&@&#&U ~.{.$&%&&&*&=&-&T@~.~.~.~.~.~.~.~.~.~.~.;&>&,&'&)&!&5+~.~.~.~.{.~&{&]&9.~.p@^&/&(&_&:&      <&[&}&|&      ",
+"    1&2&3&4&5&6&7&8&9&l.~.{.V 0&a&b&c&~.~.~.~.~.~.~.5.d&e&f&g&h&i&j&k&l&m&n&~.~.G.~.~.~.o&p&q&r&s&t&u&v&        w&x&y&z&A&B&    ",
+"    C&2&D&E&F&G&G&H&I&J&U ~.~.U K&L&,.~.~.~.~.~.~.~.U M&N&O&P&Q&R&S&T&U&V&W&X&].{.~.~.{./#Y&Z&`& *.*+*@*      (.#*$*%*&***=*    ",
+"    -*;*>*,*'*)*!*~*{*]*^*~.5.{.5./*U ~.~.~.~.~.~.{.[#(*_*:*<*[*[*}*|*1*2*3*4*5*U ~.~.6*7*8*9*0*a*b*c*d*e*f*g*h*i*%*j*k*<%l*    ",
+"    m*n*o*p*q*r*s*t*u*v*w*1+~.~.~.~.~.~.~.~.~.~.~.x*y*z*A*B*C*D*E*V U ~.G.~.:.F*G*l.{.R%X+H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*    ",
+"    Y*Z*D&`* =.=+=@=#=$=%=&={.~.~.~.~.~.~.~.~.~.~.<+*===-=;=>=,='=)=[#p@!=~={=]=^=/=(=a#&%_=:=<=-#[=}=k$|=1=2=3=4=5=6=7=8=9=    ",
+"    0=a=b=c=d=e=f=g=h=i=j=k=l=5.~.~.~.~.~.~.~.~.~.V -$m=n===o=p=q=r=s=t=:+u=v=w=x=y=z=A=J.V U ~.V [#B=C=D=1=E=F=      G=H=I=    ",
+"    J=K=L=M=N=O=P=Q=R=S=T=U=V=5.U ~.~.~.~.~.~.~.~.~.{.x*W=X=Y=Z=`= -.-+-@-#-$-%-&-*-=---;->-9.x*)=,-'-)-c.!-~-          {-]-    ",
+"    ^-/-(-_-:-<-<-[-%.}-|-1-T@~.{.~.~.~.~.~.~.~.~.~.~.V 2-^&3-4-5-6-7-8-9-0-a-b-c-d-e-f-g-h-V@i-j-k-l-T=m-7@n-          o-p-    ",
+"    q-r-s-t-u-v-!+2*w-x-y-z-V ~.~.~.~.~.~.~.~.~.~.~.~.~.~./#A-B-C-D-E-F-G-H-I-J-K-L-<@M-W=N-O-P-Q-R-<&S-T-U-V-          W-      ",
+"      X-Y-Z-`- ;.;+;@;#;$;q+~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~./#v@W=N#%;&;*;=;-;s=-#;;>;,;';);!;~;{;];^;/;(;H+                    ",
+"      _;:;<;[;};|;1;2;3;4;{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.T@-#5;6;7;8;9;[#V <+0;a;b;c;E-d;e;f;|=g;h;                      ",
+"        i;j;V#k;F.l;m;n;o;~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.~.{.p@S@s=p;q;~.~.{.r;s;t;u;~$v;w;x;y;z;A;                      ",
+"        H+B;C;D;E;F;G;H;~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.U ~.~.V E*E*V ~.~.~.{.T@/#I;J;K;L;M;y;N;O;                      ",
+"          P;Q;R;S;T;U;~.{.~.~.~.~.~.~.~.~.l.U {.p@~.~.{.V ~.~.5+V;].~.~.~.~.{.{.p@W;X;Y;Z;`;/# >W..>+>N;@>                      ",
+"            #>$>%>&>*>G.~.~.~.~.~.~.~.~.{.`.=>V=->;>~.n##&>>T@,>'>].~.~.~.~.~.)>!>i$~>{>]>^>/>(>_>:><>[>}>      |>1>            ",
+"              2>3>4>5>U@U ~.~.~.~.~.~.~.{.6>7>8>9>0>a#a>b>c>d>e>f>~.~.~.V ~.~.g>h>i>1=j>,%k>l>m>n>o>p>q>r>s>t>u>v>w>            ",
+"              x>y>z>A>B>C>5+D>E>~.~.~.~.{.%&F>G>3;s%{.H>I>J>K>L>M>~.V N>O>P>x*Q>R>S>T>U>    X%V>W>X>Y>Z>P-`> ,.,+,              ",
+"              @,#,$,%,&,1.*,=,-,;,{.p@V {.X@>,,,Z;V ~.5.`;',),!,~,~.{,],^,/,/&-$F$(,_,          :,<,[,},<@|,1,2,                ",
+"            B&3,4,    5,6,7,8,9,0,`;a,b,B+c,d,s=<+~.~.~.a#e,f,g,h,V -#9$i,j,k,l,m,n,            o,p,q,r,s,t,u,v,                ",
+"            w,x,          y,z,A,B,C,D,E,o@F,G,<+~.~.~.~.~.;;P>j%}@p@H,]#I,J,K,L,M,=+              N,O,P,Q,R,S,                  ",
+"                          T,U,V,W,X,Y,Z,`, '.'+'x*~.{.O+@%@'#'$'%'a#&'*'='-'    ~;;'>'            ,''')'!'                      ",
+"                          ~'{']'^'/'('_'_':'<'['}'{.V |'1'2'3'4'5'}@6'7'          8'K;                                          ",
+"                        v&9'0'a'    b'c'd'e'f'1@g'h'G.i'j'k'l'm'n'o'p'              y                                           ",
+"                        q'r's'        t'u'H+    v'w'x'y'        z'A'B'                                                          ",
+"                        C'D'          E'F'        G'H'            I'J'                                                          ",
+"                      K'L'            M'          N'O'            P'Q'                                                          ",
+"                      R'                            S'                                                                          ",
+"                                                                                                                                ",
+"                                                                                                                                ",
+"                                                                                                                                ",
+"                                                                                                                                "};
diff --git a/minilibx_linux/test/open24.xpm b/minilibx_linux/test/open24.xpm
new file mode 100644
index 0000000..f363254
--- /dev/null
+++ b/minilibx_linux/test/open24.xpm
@@ -0,0 +1,230 @@
+/* XPM */
+static char *open[] = {
+/* width height num_colors chars_per_pixel */
+"    45    55      168            2",
+/* colors */
+".. s None c None",
+".# c #450304",
+".a c #ce7e7c",
+".b c #b94344",
+".c c #b65254",
+".d c #780204",
+".e c #b04c4c",
+".f c #b00204",
+".g c #8a8a64",
+".h c #969a24",
+".i c #b6b60c",
+".j c #cac614",
+".k c #cece34",
+".l c #cace54",
+".m c #caca94",
+".n c #c24e4c",
+".o c #aa0204",
+".p c #9e4244",
+".q c #bc0204",
+".r c #a40204",
+".s c #9e262c",
+".t c #8c3a3c",
+".u c #5c1414",
+".v c #5b0204",
+".w c #700204",
+".x c #722214",
+".y c #b52624",
+".z c #8e3234",
+".A c #b60204",
+".B c #c20204",
+".C c #860204",
+".D c #560304",
+".E c #800204",
+".F c #9e0204",
+".G c #920204",
+".H c #620204",
+".I c #a41314",
+".J c #996a6c",
+".K c #920d09",
+".L c #c80204",
+".M c #690204",
+".N c #980204",
+".O c #984c4c",
+".P c #e2dedc",
+".Q c #ae5e5c",
+".R c #bc6a6c",
+".S c #a21a1c",
+".T c #8a0a04",
+".U c #671e1c",
+".V c #941b1c",
+".W c #b8b4b4",
+".X c #e8e6e4",
+".Y c #ccb4b4",
+".Z c #c07c7c",
+".0 c #f3f2eb",
+".1 c #b49696",
+".2 c #521614",
+".3 c #9e5a5c",
+".4 c #d4d4d4",
+".5 c #a7a5a1",
+".6 c #dec4c4",
+".7 c #e4d6d4",
+".8 c #f4f2f4",
+".9 c #cccac4",
+"#. c #9a161c",
+"## c #8c0204",
+"#a c #862c2c",
+"#b c #7e5e5c",
+"#c c #a39694",
+"#d c #6b6667",
+"#e c #322624",
+"#f c #b09e9c",
+"#g c #b23234",
+"#h c #500304",
+"#i c #222224",
+"#j c #2e322c",
+"#k c #925c5c",
+"#l c #721a1c",
+"#m c #6e6e6c",
+"#n c #0a0a0c",
+"#o c #b2b2b4",
+"#p c #8e6264",
+"#q c #884444",
+"#r c #8c5c5c",
+"#s c #121214",
+"#t c #b2aeac",
+"#u c #c21e1c",
+"#v c #6e0e0c",
+"#w c #623e3c",
+"#x c #b64e4c",
+"#y c #bc3634",
+"#z c #624e1c",
+"#A c #6e727c",
+"#B c #824e4c",
+"#C c #8b8d87",
+"#D c #a09674",
+"#E c #766844",
+"#F c #7a663c",
+"#G c #828c90",
+"#H c #beb6a4",
+"#I c #3a0204",
+"#J c #8e9298",
+"#K c #562529",
+"#L c #7c3838",
+"#M c #bab294",
+"#N c #7e4644",
+"#O c #929a9c",
+"#P c #762a2c",
+"#Q c #a60e0c",
+"#R c #ae1e1c",
+"#S c #460a0c",
+"#T c #a6aaa4",
+"#U c #6a4a4c",
+"#V c #784c50",
+"#W c #761214",
+"#X c #9e1e1c",
+"#Y c #988c90",
+"#Z c #821e1c",
+"#0 c #7a1618",
+"#1 c #7a6e74",
+"#2 c #7e7a77",
+"#3 c #808688",
+"#4 c #828284",
+"#5 c #828279",
+"#6 c #827a64",
+"#7 c #7e765c",
+"#8 c #864a34",
+"#9 c #825a44",
+"a. c #766e54",
+"a# c #7e7e74",
+"aa c #806464",
+"ab c #7e724c",
+"ac c #766634",
+"ad c #765a2c",
+"ae c #8e7e54",
+"af c #a69e8c",
+"ag c #c7c2ac",
+"ah c #9a2a1c",
+"ai c #aa3a3c",
+"aj c #979894",
+"ak c #70684c",
+"al c #62522c",
+"am c #6e5e3c",
+"an c #92866c",
+"ao c #968e6c",
+"ap c #826e54",
+"aq c #84765c",
+"ar c #86522c",
+"as c #7e4624",
+"at c #7e3614",
+"au c #6e5254",
+"av c #712e2c",
+"aw c #7a5654",
+"ax c #82727c",
+"ay c #a63634",
+"az c #8a6a6c",
+"aA c #863534",
+"aB c #5c1a18",
+"aC c #6a2c2c",
+"aD c #5e0e14",
+"aE c #868684",
+"aF c #922624",
+"aG c #901614",
+"aH c #c21614",
+"aI c #520e0c",
+"aJ c #805654",
+"aK c #b00c0c",
+"aL c #c2221c",
+/* pixels */
+"..........................................................................................",
+"..........................................................................................",
+".....................................#.a.#................................................",
+"...................................#.b.c.#.#.#.#...........#.d............................",
+".................................#.e.f.f.#.g.h.i.j.k.l.m...f.n............................",
+".................................d.f.o.f.#.#.#.d.d.#.#.#...f.f.d..........................",
+".................................p.q.q.r.s.t.u.v.w.x.d.d.#.d.r.y.d........................",
+".................................z.A.B.q.C.D.E.F.G.E.H.E.I.F.q.A.d........................",
+".................................J.G.f.G.w.K.f.L.B.B.r.M.f.B.L.A.d........................",
+".................................d.w.N.M.O.P.Q.B.B.o.R.S.E.q.q.T.d........................",
+".................................d.U.M.V.W.X.Y.q.B.Z.0.1.E.r.N.d..........................",
+".................................d.2.r.3.4.5.6.A.f.7.8.9#.###a.#..........................",
+"................................#b.d.L#c#d#e#f.N.V.5#d.4#g.E.d............................",
+"...............................d#h.r.L#f#i#j#k.M#l#m#n#o.b.r.d............................",
+"...............................d#h##.q#g#p#q##.q.N#r#s#t#u.q#v.#..........................",
+"..............#j................#w.w.C.r.q##.r.B.f.T#x#y.L.r.M.d..........................",
+"............#j#z#j#A#A#j.........d.D.r.M.C.f.r.r.r.q.B.C.N.E#B............................",
+"..........#j#C#D#E#z#F#G#j.......d.d.#.G##.w.M.M.C.C.d.G.r.u.d............................",
+"....................#E#H#C#j.........d#I.w.F.f.o.o.o.N.M.#.d..............................",
+"......................#E#j#J#j......#K.M.#.#.v.w.M.v.##h.H#L.d............................",
+"..........................#M#j.......v.F.q.r.d.w.w.C.E.M.v.M#N.d..........................",
+"..........................#E#O#j#j#K##.f.L.L.L.B.q.f##.M.v.w.w#P.d.#...d.d................",
+"............................#C#E.#.v.o.B.L.L.q.q.q.q.N.M.D#h.M.N.r#Q#R#S.H.J.#............",
+"............................#j#T#U.C.q.q.o.G.F.f.q.A.N.d.v.v##.o.q.L.r.C.A###k............",
+"..............................#C#V.N.A.N.f.q.F.C.E.f.F.E.H#n#W.K.I#X#a.z.V.q.d#p.d........",
+"................................#Y.r.K#Z.K.q.A.G.w#0#b#1#2#3#4#5#5#6#6#7#8.q.G#9..........",
+"..................#j#oa..5#j..#J#Ja##4#4aa.o.A##.E.xabacadae#Daf#M#Magah.r.qai.#..........",
+"................aja#akalamanaoapaqaaarasat.r.o.E.w.T.T.E.H.#...........#.d.d.#............",
+"...........E....#j#j#C#M#j#n#naa#V.O.f.N.F.q.G.d.w.r.C.d.H.#...............#..............",
+"...........#.F.F.J#n#n#n#n#n#nauav#p.q.N.d.d.w.M.F.F.E.d.U................................",
+".........E.F.E.E.d.z#n.d#n#n#naw.Uax.r##.d.w.D.M.r.N.E.w.d................................",
+".........E.F.......d.Fay.E.F#naz.2#A.D#h.r.f.w##.r##.d.H.M................................",
+".........F.#...........E.E.F.baAaB#A.#.E.f.r.w.N.N.E.waC.#................................",
+".........F.#...............d.F.E#K#d.H.G.F.G.w.N##.d.D.#..................................",
+".........F.#....................#Aau.v.E##.w.E.E.w.H.d.......d..av.d......................",
+".........E.#..................#j#GaC.M.H.M.d.d.w.H.#.d.d.#aC.w.C##.E.d....................",
+"...........F.................5#O...#aD.w.d.w.H.D.M######.G.F.o.f.o.N.3....................",
+"...........F.E...........5aEakak.....#.##h#h.v.N.o.f.q.L.L.L.L.L.q.faF....................",
+"...........E.E......#E#C.5aq#j.....#.v.N.F.d.N.r.F.r.F#Q.I.o.q.L.L.L.y....................",
+".............E.....................#.E.B.qaG.d.d.d.....#.#.....d#x.b......................",
+".............E.F...................E.w.L.LaG.#............................................",
+"...............E.E.................EaA.q.qaG.#............................................",
+"...............E.F.E.................E.r.r#Z.#............................................",
+".................E.F.E...............E.G.NaA..............................................",
+".................E#uaH.................w.dav..............................................",
+"...................E.E.............EaI.M.w.v.#............................................",
+"...................................E.D.d.E.waJ............................................",
+".....................................C.N.N##.M............................................",
+"..................................#W.f.q.A.f.G#q..........................................",
+".....................................q.L.L.L.q.V.#........................................",
+"...................................#.daK.q.qaL.d..........................................",
+".......................................#.#.#..............................................",
+"..........................................................................................",
+"..........................................................................................",
+".........................................................................................."
+};
diff --git a/minilibx_linux/test/open30.xpm b/minilibx_linux/test/open30.xpm
new file mode 100644
index 0000000..87be371
--- /dev/null
+++ b/minilibx_linux/test/open30.xpm
@@ -0,0 +1,1439 @@
+/* XPM */
+static char * open30_2_xpm[] = {
+"64 64 1372 2",
+"  	c None",
+". 	c #08090D",
+"+ 	c #1A1E23",
+"@ 	c #1F2124",
+"# 	c #060809",
+"$ 	c #1A1E21",
+"% 	c #4F606C",
+"& 	c #3D4145",
+"* 	c #868D93",
+"= 	c #454E56",
+"- 	c #627481",
+"; 	c #667C8A",
+"> 	c #2D3031",
+", 	c #D7E1E7",
+"' 	c #4D5157",
+") 	c #8997A5",
+"! 	c #282E31",
+"~ 	c #333B41",
+"{ 	c #A5C6DB",
+"] 	c #718C9B",
+"^ 	c #000000",
+"/ 	c #181B1F",
+"( 	c #262828",
+"_ 	c #D2DEE7",
+": 	c #B8C5D0",
+"< 	c #151719",
+"[ 	c #08090B",
+"} 	c #272B30",
+"| 	c #2D3037",
+"1 	c #26282C",
+"2 	c #1A1D1F",
+"3 	c #B1CADB",
+"4 	c #56646E",
+"5 	c #080809",
+"6 	c #080A0C",
+"7 	c #1E2126",
+"8 	c #98B7C9",
+"9 	c #A2CAE2",
+"0 	c #7FA1B5",
+"a 	c #06080A",
+"b 	c #252729",
+"c 	c #A7ADB2",
+"d 	c #272B2E",
+"e 	c #1E2023",
+"f 	c #C8D8E5",
+"g 	c #C9DDED",
+"h 	c #8996A3",
+"i 	c #6B7782",
+"j 	c #C7DFF0",
+"k 	c #CCE0F0",
+"l 	c #AFC1CF",
+"m 	c #47535B",
+"n 	c #B0D3E8",
+"o 	c #7E99A9",
+"p 	c #738493",
+"q 	c #97B4C7",
+"r 	c #53606A",
+"s 	c #6E8996",
+"t 	c #A1CBE3",
+"u 	c #9CC6DE",
+"v 	c #90B5CB",
+"w 	c #171D22",
+"x 	c #1E2629",
+"y 	c #020202",
+"z 	c #ABB3BA",
+"A 	c #BBC4C8",
+"B 	c #222323",
+"C 	c #141617",
+"D 	c #5D6164",
+"E 	c #ACB5BC",
+"F 	c #676D74",
+"G 	c #BDD4E5",
+"H 	c #B3D1E7",
+"I 	c #B0D1E7",
+"J 	c #728A99",
+"K 	c #94AEBF",
+"L 	c #B1D1E7",
+"M 	c #505C64",
+"N 	c #7B98A9",
+"O 	c #A1CBE0",
+"P 	c #99C3D9",
+"Q 	c #475863",
+"R 	c #A0C9DE",
+"S 	c #9CC6DA",
+"T 	c #9ECAE1",
+"U 	c #9CC5DD",
+"V 	c #9AC4DC",
+"W 	c #263137",
+"X 	c #3C4A55",
+"Y 	c #658190",
+"Z 	c #66686B",
+"` 	c #7D8085",
+" .	c #363839",
+"..	c #797E81",
+"+.	c #D2DBE1",
+"@.	c #DDE9F4",
+"#.	c #CADEEF",
+"$.	c #778593",
+"%.	c #AED0E5",
+"&.	c #9EC9DE",
+"*.	c #9EC8DF",
+"=.	c #9BC1D8",
+"-.	c #9EC8DE",
+";.	c #6B8596",
+">.	c #9BC5DC",
+",.	c #9BC6DF",
+"'.	c #9CC5DC",
+").	c #688595",
+"!.	c #6B8698",
+"~.	c #9CC4DC",
+"{.	c #9BC4DC",
+"].	c #9DC5DD",
+"^.	c #647D8C",
+"/.	c #485864",
+"(.	c #161A1D",
+"_.	c #36444C",
+":.	c #95BDD5",
+"<.	c #566E7E",
+"[.	c #A4AAAD",
+"}.	c #E9F2F7",
+"|.	c #DEEAF6",
+"1.	c #B5D4E9",
+"2.	c #A9CFE3",
+"3.	c #90B3C9",
+"4.	c #9FCAE1",
+"5.	c #9BC4DD",
+"6.	c #7490A2",
+"7.	c #99C2DB",
+"8.	c #81A5BA",
+"9.	c #9CC5DE",
+"0.	c #98C1DA",
+"a.	c #5F7889",
+"b.	c #96BFD8",
+"c.	c #44545F",
+"d.	c #565A5E",
+"e.	c #DFE6EC",
+"f.	c #E6EEF7",
+"g.	c #D6E4F2",
+"h.	c #BFD6E9",
+"i.	c #A9CCE3",
+"j.	c #9FC8DD",
+"k.	c #9DC6DD",
+"l.	c #9CC4DD",
+"m.	c #7D9FB0",
+"n.	c #98C0D6",
+"o.	c #9AC5DD",
+"p.	c #97BFD8",
+"q.	c #9BC5DF",
+"r.	c #2D3840",
+"s.	c #626567",
+"t.	c #E7ECF5",
+"u.	c #E1EAF5",
+"v.	c #CEE3F3",
+"w.	c #B7D6EA",
+"x.	c #A4CBE0",
+"y.	c #8AAFC5",
+"z.	c #647F90",
+"A.	c #648092",
+"B.	c #89B0C7",
+"C.	c #9CC6DF",
+"D.	c #5D7486",
+"E.	c #7B9BAF",
+"F.	c #84A8BF",
+"G.	c #9BC5DD",
+"H.	c #96BED5",
+"I.	c #4B5D69",
+"J.	c #9BC5DE",
+"K.	c #536B77",
+"L.	c #2E3B41",
+"M.	c #1B2124",
+"N.	c #3F4F58",
+"O.	c #4D5152",
+"P.	c #E7EEF3",
+"Q.	c #E2EAF5",
+"R.	c #CEE2F2",
+"S.	c #BAD5E9",
+"T.	c #9DC2D7",
+"U.	c #5C7281",
+"V.	c #232A31",
+"W.	c #08090A",
+"X.	c #121418",
+"Y.	c #131619",
+"Z.	c #131719",
+"`.	c #87ACC3",
+" +	c #7B9BAE",
+".+	c #87ADC3",
+"++	c #8FB5CB",
+"@+	c #678295",
+"#+	c #96C0D8",
+"$+	c #607787",
+"%+	c #6B8595",
+"&+	c #96C1DB",
+"*+	c #6A8595",
+"=+	c #35424A",
+"-+	c #7090A1",
+";+	c #15191C",
+">+	c #2D3033",
+",+	c #DDE5EB",
+"'+	c #D2E3F1",
+")+	c #BAD7EB",
+"!+	c #A9CFE5",
+"~+	c #272F35",
+"{+	c #1C2227",
+"]+	c #4F697B",
+"^+	c #6B8FA9",
+"/+	c #759CB6",
+"(+	c #7BA0BB",
+"_+	c #80A5BC",
+":+	c #88B0C8",
+"<+	c #96C3DB",
+"[+	c #8FB6CD",
+"}+	c #80A1B3",
+"|+	c #556876",
+"1+	c #96BFD7",
+"2+	c #566B77",
+"3+	c #93B8CD",
+"4+	c #637A8D",
+"5+	c #9DC6DE",
+"6+	c #8FB4CA",
+"7+	c #55697A",
+"8+	c #6F8F9F",
+"9+	c #91BDD5",
+"0+	c #283239",
+"a+	c #050406",
+"b+	c #767B80",
+"c+	c #BDC6CE",
+"d+	c #D4E5F3",
+"e+	c #C1D7EA",
+"f+	c #A7CDE4",
+"g+	c #9FC9DE",
+"h+	c #668596",
+"i+	c #6D90AA",
+"j+	c #5C7994",
+"k+	c #60849F",
+"l+	c #6286A1",
+"m+	c #688CA8",
+"n+	c #7298B2",
+"o+	c #82A8C2",
+"p+	c #8FBAD5",
+"q+	c #96C2DB",
+"r+	c #89ADC4",
+"s+	c #96BED6",
+"t+	c #99C2DA",
+"u+	c #6C899A",
+"v+	c #92BBD2",
+"w+	c #9AC4DD",
+"x+	c #5B717D",
+"y+	c #9EC6DE",
+"z+	c #8BB1C9",
+"A+	c #718EA0",
+"B+	c #94C3DB",
+"C+	c #536B78",
+"D+	c #3E505F",
+"E+	c #4E6373",
+"F+	c #2C333C",
+"G+	c #070708",
+"H+	c #040404",
+"I+	c #1A1C1E",
+"J+	c #202326",
+"K+	c #050606",
+"L+	c #23292E",
+"M+	c #A1C0D4",
+"N+	c #9FC9DD",
+"O+	c #97C2DB",
+"P+	c #80A8C1",
+"Q+	c #668AA6",
+"R+	c #4B5D72",
+"S+	c #4C647A",
+"T+	c #5F80A0",
+"U+	c #60859E",
+"V+	c #678AA6",
+"W+	c #739BB5",
+"X+	c #85AEC7",
+"Y+	c #92BDD7",
+"Z+	c #96BFD5",
+"`+	c #627B8A",
+" @	c #89B1C9",
+".@	c #2B353C",
+"+@	c #7597B2",
+"@@	c #779CB8",
+"#@	c #52697C",
+"$@	c #1D2328",
+"%@	c #445663",
+"&@	c #5E7A8D",
+"*@	c #252F37",
+"=@	c #090909",
+"-@	c #859BB2",
+";@	c #859DB8",
+">@	c #6E8396",
+",@	c #252C33",
+"'@	c #9CC4D7",
+")@	c #92C0D9",
+"!@	c #79A0BA",
+"~@	c #6487A3",
+"{@	c #566979",
+"]@	c #8CB0C2",
+"^@	c #51697C",
+"/@	c #60849D",
+"(@	c #6D8EAC",
+"_@	c #7BA0BC",
+":@	c #8AB4CE",
+"<@	c #95C2DB",
+"[@	c #9AC5DC",
+"}@	c #95C1DA",
+"|@	c #607B8C",
+"1@	c #597488",
+"2@	c #7EA6BF",
+"3@	c #597587",
+"4@	c #455664",
+"5@	c #668598",
+"6@	c #82A9C4",
+"7@	c #617F92",
+"8@	c #1A2328",
+"9@	c #2B3137",
+"0@	c #728FAC",
+"a@	c #51657B",
+"b@	c #6B8AA8",
+"c@	c #8EAEC7",
+"d@	c #A8C8E2",
+"e@	c #92BDD6",
+"f@	c #769DBA",
+"g@	c #526E87",
+"h@	c #7490A0",
+"i@	c #A6CDE4",
+"j@	c #97BFD4",
+"k@	c #55697D",
+"l@	c #6286A0",
+"m@	c #7399B3",
+"n@	c #84ACC5",
+"o@	c #92BFD9",
+"p@	c #99C4DC",
+"q@	c #94C0DA",
+"r@	c #4F6575",
+"s@	c #7DA5BF",
+"t@	c #7FA2BC",
+"u@	c #8FB6CE",
+"v@	c #95C3DB",
+"w@	c #8EB8D2",
+"x@	c #6A879D",
+"y@	c #111318",
+"z@	c #252A30",
+"A@	c #81868C",
+"B@	c #A5ABAD",
+"C@	c #70767C",
+"D@	c #38434F",
+"E@	c #637F9B",
+"F@	c #516980",
+"G@	c #799AB5",
+"H@	c #A5C3D9",
+"I@	c #93BDD6",
+"J@	c #779EBA",
+"K@	c #445A6B",
+"L@	c #93B5C9",
+"M@	c #B6D3E8",
+"N@	c #AECFE4",
+"O@	c #95BDD2",
+"P@	c #52687A",
+"Q@	c #6486A3",
+"R@	c #7092B0",
+"S@	c #90BCD6",
+"T@	c #97C4DC",
+"U@	c #A0C9E0",
+"V@	c #99C5DD",
+"W@	c #86AEC6",
+"X@	c #8FBAD4",
+"Y@	c #91BDD6",
+"Z@	c #7094AC",
+"`@	c #2A353E",
+" #	c #0B0E10",
+".#	c #888D90",
+"+#	c #787D82",
+"@#	c #465360",
+"##	c #56697F",
+"$#	c #A6CADD",
+"%#	c #5A7382",
+"&#	c #6C8CAA",
+"*#	c #A5BED3",
+"=#	c #A7CAE0",
+"-#	c #94C1DA",
+";#	c #7EA4BF",
+">#	c #415160",
+",#	c #9DC3D5",
+"'#	c #B3CFE1",
+")#	c #AAC3D4",
+"!#	c #A8CDE4",
+"~#	c #89ACBE",
+"{#	c #567088",
+"]#	c #6C91AC",
+"^#	c #81A7C2",
+"/#	c #96C4DC",
+"(#	c #85A9BD",
+"_#	c #708C9B",
+":#	c #5A6E7B",
+"<#	c #6C8695",
+"[#	c #97C3DB",
+"}#	c #8BB5CE",
+"|#	c #425461",
+"1#	c #63819E",
+"2#	c #415465",
+"3#	c #0B0D0E",
+"4#	c #607387",
+"5#	c #687D8C",
+"6#	c #B8D6E9",
+"7#	c #7893A2",
+"8#	c #576F85",
+"9#	c #A7BACF",
+"0#	c #B0CEE5",
+"a#	c #98C4DC",
+"b#	c #88B1CA",
+"c#	c #36444E",
+"d#	c #8FA0AD",
+"e#	c #73818D",
+"f#	c #596D81",
+"g#	c #B4D0E4",
+"h#	c #A3CDE2",
+"i#	c #658296",
+"j#	c #6A8DAB",
+"k#	c #7BA5C0",
+"l#	c #94BAD2",
+"m#	c #6D899B",
+"n#	c #99C3DC",
+"o#	c #8EB9D2",
+"p#	c #7AA0BA",
+"q#	c #6C8FAB",
+"r#	c #6484A1",
+"s#	c #1F252C",
+"t#	c #121619",
+"u#	c #7E96B0",
+"v#	c #7A8A96",
+"w#	c #BCD7EA",
+"x#	c #A0C5D9",
+"y#	c #3C4B57",
+"z#	c #A9BACD",
+"A#	c #BCD5E8",
+"B#	c #84A6BA",
+"C#	c #8EA1AE",
+"D#	c #CFD1D4",
+"E#	c #ECF6FA",
+"F#	c #ABB7C2",
+"G#	c #556F84",
+"H#	c #57626A",
+"I#	c #5C7078",
+"J#	c #6C8AA7",
+"K#	c #80A6C0",
+"L#	c #91B8D0",
+"M#	c #94BFD8",
+"N#	c #87B0CA",
+"O#	c #7CA2BB",
+"P#	c #7097AF",
+"Q#	c #495E6F",
+"R#	c #0C0E11",
+"S#	c #3A3F43",
+"T#	c #8AA3BB",
+"U#	c #778592",
+"V#	c #C0D8EB",
+"W#	c #B3D5E9",
+"X#	c #404A53",
+"Y#	c #B2C2D3",
+"Z#	c #96A1AC",
+"`#	c #9DB2C3",
+" $	c #AEBECE",
+".$	c #EDEFF3",
+"+$	c #F7FAFC",
+"@$	c #B6BFC7",
+"#$	c #556E85",
+"$$	c #121314",
+"%$	c #2B2E2F",
+"&$	c #555A5E",
+"*$	c #3B4C5B",
+"=$	c #6F8EA4",
+"-$	c #92BED8",
+";$	c #9DC7DF",
+">$	c #87ACC1",
+",$	c #546A78",
+"'$	c #516874",
+")$	c #4E6570",
+"!$	c #4D6271",
+"~$	c #4C6271",
+"{$	c #4E677A",
+"]$	c #38454E",
+"^$	c #6C7278",
+"/$	c #86A1B6",
+"($	c #5C656C",
+"_$	c #A4B0BA",
+":$	c #555D64",
+"<$	c #657178",
+"[$	c #A6B0B5",
+"}$	c #939CA1",
+"|$	c #D4E4F1",
+"1$	c #A0BACE",
+"2$	c #B9C7D7",
+"3$	c #F6F7F9",
+"4$	c #C6CED1",
+"5$	c #506A7C",
+"6$	c #060607",
+"7$	c #676A6B",
+"8$	c #91999F",
+"9$	c #7CA3BE",
+"0$	c #96BCD4",
+"a$	c #5B717E",
+"b$	c #4B5F6C",
+"c$	c #455864",
+"d$	c #5B717F",
+"e$	c #81A5B9",
+"f$	c #98C4DD",
+"g$	c #93BFD8",
+"h$	c #87B1CA",
+"i$	c #7BA1BC",
+"j$	c #5A7489",
+"k$	c #222A33",
+"l$	c #838A92",
+"m$	c #9DADBC",
+"n$	c #ECF0F5",
+"o$	c #F1F9FB",
+"p$	c #818A8D",
+"q$	c #4A5155",
+"r$	c #6A6F72",
+"s$	c #7E898F",
+"t$	c #E6F1F7",
+"u$	c #CADCED",
+"v$	c #A0B7CC",
+"w$	c #C6D1DF",
+"x$	c #AFB3B4",
+"y$	c #5F707D",
+"z$	c #CBCFD1",
+"A$	c #F4F5F6",
+"B$	c #66737F",
+"C$	c #87B2CB",
+"D$	c #90B7CD",
+"E$	c #596E7B",
+"F$	c #586F7E",
+"G$	c #8BB0C8",
+"H$	c #91BED6",
+"I$	c #83ADC7",
+"J$	c #6D8EA7",
+"K$	c #3F5161",
+"L$	c #2D3A45",
+"M$	c #1F2020",
+"N$	c #BDC5CC",
+"O$	c #E0EDF5",
+"P$	c #BBCAD8",
+"Q$	c #E1E4E7",
+"R$	c #5E6368",
+"S$	c #5B5F62",
+"T$	c #D9E7F3",
+"U$	c #A4C3D6",
+"V$	c #89A3B3",
+"W$	c #7B91A1",
+"X$	c #627990",
+"Y$	c #42505A",
+"Z$	c #CACCCE",
+"`$	c #F9F9F9",
+" %	c #FDFDFD",
+".%	c #BCBEC0",
+"+%	c #5C7689",
+"@%	c #8DB9D3",
+"#%	c #8FB5CC",
+"$%	c #536471",
+"%%	c #98C1D9",
+"&%	c #91BED7",
+"*%	c #81AAC5",
+"=%	c #597386",
+"-%	c #41535F",
+";%	c #6486A2",
+">%	c #4D667D",
+",%	c #070809",
+"'%	c #44484E",
+")%	c #BEC8D0",
+"!%	c #8096A6",
+"~%	c #516473",
+"{%	c #A9ACAF",
+"]%	c #8B8F91",
+"^%	c #A8B3BD",
+"/%	c #C5DAEB",
+"(%	c #9FC8E1",
+"_%	c #8FBCD6",
+":%	c #81A8C2",
+"<%	c #6C90AC",
+"[%	c #56728C",
+"}%	c #585B5F",
+"|%	c #CBCDCD",
+"1%	c #C1C3C6",
+"2%	c #4F565F",
+"3%	c #82ABC3",
+"4%	c #93BCD3",
+"5%	c #95BED7",
+"6%	c #8EB9D3",
+"7%	c #5B788B",
+"8%	c #627E91",
+"9%	c #7FA7C1",
+"0%	c #6C91AB",
+"a%	c #546F87",
+"b%	c #6F7376",
+"c%	c #D5E2EF",
+"d%	c #A9C4D8",
+"e%	c #81A1BA",
+"f%	c #333940",
+"g%	c #5F6B76",
+"h%	c #C0D5E8",
+"i%	c #AACCE2",
+"j%	c #8EB8D3",
+"k%	c #7FA5BF",
+"l%	c #7095B0",
+"m%	c #4E697E",
+"n%	c #07090A",
+"o%	c #0D0F10",
+"p%	c #7193A6",
+"q%	c #96C3DC",
+"r%	c #8EBCD7",
+"s%	c #91BDD7",
+"t%	c #8FBBD6",
+"u%	c #7699AD",
+"v%	c #4D626F",
+"w%	c #252D33",
+"x%	c #101215",
+"y%	c #0C0D0E",
+"z%	c #0A0C0E",
+"A%	c #06090A",
+"B%	c #7F8488",
+"C%	c #D7E3F1",
+"D%	c #B6D0E4",
+"E%	c #A3C2D7",
+"F%	c #596872",
+"G%	c #A9BED0",
+"H%	c #B4D0E5",
+"I%	c #9EC8DC",
+"J%	c #8FB9D4",
+"K%	c #85ADC7",
+"L%	c #7FA4BE",
+"M%	c #4B606F",
+"N%	c #4E6372",
+"O%	c #89B6D0",
+"P%	c #92C1DA",
+"Q%	c #9DC7DD",
+"R%	c #95C0DA",
+"S%	c #94BED8",
+"T%	c #8BB8D1",
+"U%	c #7AA0B9",
+"V%	c #4E667A",
+"W%	c #344151",
+"X%	c #0C0D0F",
+"Y%	c #8A8F92",
+"Z%	c #D4E6F5",
+"`%	c #BCD5E9",
+" &	c #8599A5",
+".&	c #939DA6",
+"+&	c #C4DAEB",
+"@&	c #89A6B9",
+"#&	c #7D9FB5",
+"$&	c #98C3DC",
+"%&	c #95C0D9",
+"&&	c #7CA2B9",
+"*&	c #7697AE",
+"=&	c #698498",
+"-&	c #7394A8",
+";&	c #9EC7DF",
+">&	c #8DB1C4",
+",&	c #6B8594",
+"'&	c #50636C",
+")&	c #50626C",
+"!&	c #7F9FB1",
+"~&	c #93B8D0",
+"{&	c #627A88",
+"]&	c #90B6CC",
+"^&	c #93BDD7",
+"/&	c #87AFC9",
+"(&	c #7291A7",
+"_&	c #384651",
+":&	c #121618",
+"<&	c #12171B",
+"[&	c #4F6986",
+"}&	c #597998",
+"|&	c #324052",
+"1&	c #969CA1",
+"2&	c #D6E6F5",
+"3&	c #C6DCEE",
+"4&	c #505A64",
+"5&	c #82929F",
+"6&	c #99ABBB",
+"7&	c #A1B9CA",
+"8&	c #87A0B0",
+"9&	c #718EA1",
+"0&	c #8DB2C9",
+"a&	c #8BAEC4",
+"b&	c #586D7D",
+"c&	c #97C0D9",
+"d&	c #8DB3C9",
+"e&	c #95B8CD",
+"f&	c #9DC0D6",
+"g&	c #6F8B9C",
+"h&	c #354249",
+"i&	c #464E54",
+"j&	c #8A98A5",
+"k&	c #AABAC7",
+"l&	c #86939E",
+"m&	c #41494F",
+"n&	c #4A5861",
+"o&	c #97C1DA",
+"p&	c #5E7888",
+"q&	c #5C7482",
+"r&	c #88ACC2",
+"s&	c #91BFD7",
+"t&	c #799CB5",
+"u&	c #47596A",
+"v&	c #0D0F12",
+"w&	c #1A2127",
+"x&	c #56778D",
+"y&	c #688BA9",
+"z&	c #5D7F9E",
+"A&	c #547391",
+"B&	c #0E1013",
+"C&	c #9DA6AB",
+"D&	c #C8DCED",
+"E&	c #7A8996",
+"F&	c #B5CEE0",
+"G&	c #BCDBEC",
+"H&	c #B9D5EA",
+"I&	c #8BA2B2",
+"J&	c #6C8A9D",
+"K&	c #97BFD7",
+"L&	c #3E4E59",
+"M&	c #92B5CB",
+"N&	c #535F68",
+"O&	c #454F56",
+"P&	c #6F7C87",
+"Q&	c #ABC0D1",
+"R&	c #C7DCEE",
+"S&	c #C5DBED",
+"T&	c #C2D7EA",
+"U&	c #BFD8EA",
+"V&	c #BCD7EB",
+"W&	c #62717B",
+"X&	c #5B6F7B",
+"Y&	c #95C3DC",
+"Z&	c #8BB2C9",
+"`&	c #485761",
+" *	c #42525F",
+".*	c #6686A1",
+"+*	c #587896",
+"@*	c #1B2129",
+"#*	c #5C7A94",
+"$*	c #7DA2BD",
+"%*	c #84AEC7",
+"&*	c #749BB5",
+"**	c #5C7E9C",
+"=*	c #27343F",
+"-*	c #A4A9B2",
+";*	c #D9E7F4",
+">*	c #C8DBEC",
+",*	c #B1C8DA",
+"'*	c #5D6C76",
+")*	c #A8C5D8",
+"!*	c #A6BDD0",
+"~*	c #B9D6EA",
+"{*	c #B9D4E9",
+"]*	c #8198A8",
+"^*	c #8AADC3",
+"/*	c #8CB1CA",
+"(*	c #96C2D8",
+"_*	c #A3C7DF",
+":*	c #ADCDE3",
+"<*	c #ABD0E4",
+"[*	c #ADCFE3",
+"}*	c #AACEE4",
+"|*	c #A4CDE3",
+"1*	c #A1CBE1",
+"2*	c #A3CCE3",
+"3*	c #A2C9DF",
+"4*	c #41515A",
+"5*	c #81A2B5",
+"6*	c #94C0D7",
+"7*	c #5E7789",
+"8*	c #526777",
+"9*	c #516777",
+"0*	c #6B8CA5",
+"a*	c #759CBA",
+"b*	c #658AA5",
+"c*	c #587798",
+"d*	c #1B242B",
+"e*	c #0E1110",
+"f*	c #101214",
+"g*	c #202931",
+"h*	c #59758E",
+"i*	c #799FBB",
+"j*	c #84B1CA",
+"k*	c #86ACC6",
+"l*	c #354758",
+"m*	c #A0A6AE",
+"n*	c #DAE6F2",
+"o*	c #C4DCEE",
+"p*	c #B4D2E8",
+"q*	c #3E4A53",
+"r*	c #698091",
+"s*	c #5D7581",
+"t*	c #A3CAE0",
+"u*	c #A6CFE5",
+"v*	c #A5CCE5",
+"w*	c #718A9C",
+"x*	c #98C3DB",
+"y*	c #83ABC7",
+"z*	c #2E3B46",
+"A*	c #33414A",
+"B*	c #678398",
+"C*	c #8AB3CE",
+"D*	c #93BED7",
+"E*	c #97C4DB",
+"F*	c #42525E",
+"G*	c #88ACC0",
+"H*	c #789EB9",
+"I*	c #7A9FBB",
+"J*	c #7EA2BD",
+"K*	c #779DB5",
+"L*	c #577081",
+"M*	c #5B7B9B",
+"N*	c #1D2229",
+"O*	c #547390",
+"P*	c #54728D",
+"Q*	c #6082A0",
+"R*	c #688EA9",
+"S*	c #6689A7",
+"T*	c #6086A0",
+"U*	c #6285A1",
+"V*	c #6B8DAA",
+"W*	c #718FAB",
+"X*	c #3E5568",
+"Y*	c #969DA1",
+"Z*	c #DBE8F4",
+"`*	c #95ACBD",
+" =	c #758B9A",
+".=	c #A4C9DE",
+"+=	c #698190",
+"@=	c #667E8A",
+"#=	c #7D99AA",
+"$=	c #7B9BAD",
+"%=	c #6F8C9A",
+"&=	c #536976",
+"*=	c #84ADC6",
+"==	c #6D92AD",
+"-=	c #62829E",
+";=	c #43576A",
+">=	c #2F3B46",
+",=	c #5C788A",
+"'=	c #86AFC8",
+")=	c #93BED8",
+"!=	c #93BAD5",
+"~=	c #93BAD2",
+"{=	c #92BCD4",
+"]=	c #7EA2B6",
+"^=	c #3D4D56",
+"/=	c #485B67",
+"(=	c #7596A9",
+"_=	c #8CBBD4",
+":=	c #90BCD5",
+"<=	c #91BFD9",
+"[=	c #789BAD",
+"}=	c #465B6A",
+"|=	c #59789A",
+"1=	c #5D7F9D",
+"2=	c #5E839C",
+"3=	c #59799A",
+"4=	c #415569",
+"5=	c #2D3A46",
+"6=	c #2E3B49",
+"7=	c #4A647C",
+"8=	c #587690",
+"9=	c #39485A",
+"0=	c #7F8589",
+"a=	c #D9E8F5",
+"b=	c #CCDEEE",
+"c=	c #8597A5",
+"d=	c #B3D2E3",
+"e=	c #9BB3C4",
+"f=	c #B2CEE1",
+"g=	c #B2D1E7",
+"h=	c #ABCFE6",
+"i=	c #94B7CB",
+"j=	c #495C6A",
+"k=	c #688498",
+"l=	c #617B8A",
+"m=	c #85ADC8",
+"n=	c #78A0B9",
+"o=	c #62819B",
+"p=	c #2E3843",
+"q=	c #485A6C",
+"r=	c #67889C",
+"s=	c #8AB5CF",
+"t=	c #8EB9D1",
+"u=	c #6C899B",
+"v=	c #6E91A7",
+"w=	c #678399",
+"x=	c #6888A1",
+"y=	c #323E48",
+"z=	c #5B7585",
+"A=	c #98C5DD",
+"B=	c #83ACC1",
+"C=	c #2D373F",
+"D=	c #4B637C",
+"E=	c #567694",
+"F=	c #26313C",
+"G=	c #15191F",
+"H=	c #4D647A",
+"I=	c #252F39",
+"J=	c #5D6163",
+"K=	c #DDE9F5",
+"L=	c #CEDFEE",
+"M=	c #8898A5",
+"N=	c #B0CBDC",
+"O=	c #BFDAEC",
+"P=	c #BFDBEC",
+"Q=	c #BBDAEC",
+"R=	c #BAD7EA",
+"S=	c #6B808F",
+"T=	c #7297B0",
+"U=	c #8CB8D1",
+"V=	c #95C1D9",
+"W=	c #91BCD6",
+"X=	c #86AEC8",
+"Y=	c #7496B3",
+"Z=	c #6587A2",
+"`=	c #384958",
+" -	c #323F4B",
+".-	c #546A7C",
+"+-	c #6C88A1",
+"@-	c #779AB1",
+"#-	c #658297",
+"$-	c #3B4A58",
+"%-	c #33404B",
+"&-	c #202830",
+"*-	c #577287",
+"=-	c #86B1CC",
+"--	c #86ACC0",
+";-	c #6E8797",
+">-	c #9CC7DF",
+",-	c #92BCD5",
+"'-	c #91BCD5",
+")-	c #8EB6CE",
+"!-	c #344453",
+"~-	c #263039",
+"{-	c #364452",
+"]-	c #2B3643",
+"^-	c #2A2D2E",
+"/-	c #E1EBF4",
+"(-	c #D2E4F3",
+"_-	c #A0B2C3",
+":-	c #8094A1",
+"<-	c #BAD8EB",
+"[-	c #B8D6EA",
+"}-	c #485A6A",
+"|-	c #789FB9",
+"1-	c #90BBD3",
+"2-	c #94C4DC",
+"3-	c #88B3CD",
+"4-	c #7A9EB9",
+"5-	c #698BA8",
+"6-	c #4D677C",
+"7-	c #151A1E",
+"8-	c #1A2125",
+"9-	c #171C21",
+"0-	c #1D2329",
+"a-	c #1D262E",
+"b-	c #486073",
+"c-	c #6A8CAA",
+"d-	c #7CA2BE",
+"e-	c #90BDD7",
+"f-	c #9AC5DE",
+"g-	c #7493A2",
+"h-	c #708B99",
+"i-	c #8CB7D1",
+"j-	c #7494AB",
+"k-	c #68889F",
+"l-	c #6A8FA5",
+"m-	c #7BA2BC",
+"n-	c #171D21",
+"o-	c #1D262F",
+"p-	c #212B36",
+"q-	c #09090B",
+"r-	c #BBC2C9",
+"s-	c #D4E4F2",
+"t-	c #C1D9EB",
+"u-	c #44515A",
+"v-	c #92B5C9",
+"w-	c #6B8795",
+"x-	c #4E687E",
+"y-	c #7EA6C0",
+"z-	c #91BED8",
+"A-	c #93BFD9",
+"B-	c #8CB5D0",
+"C-	c #7DA4BE",
+"D-	c #6F92AE",
+"E-	c #6687A5",
+"F-	c #526C85",
+"G-	c #415669",
+"H-	c #384655",
+"I-	c #6589A4",
+"J-	c #6E92AE",
+"K-	c #80A8C2",
+"L-	c #92BCD6",
+"M-	c #91BFD8",
+"N-	c #799AAF",
+"O-	c #6A8796",
+"P-	c #81AAC3",
+"Q-	c #577187",
+"R-	c #1F2930",
+"S-	c #192027",
+"T-	c #1B2227",
+"U-	c #0D1010",
+"V-	c #0E1012",
+"W-	c #070709",
+"X-	c #5C6062",
+"Y-	c #DCE8F3",
+"Z-	c #C4DCEF",
+"`-	c #9BB3C6",
+" ;	c #3A424F",
+".;	c #313A44",
+"+;	c #35424C",
+"@;	c #374655",
+"#;	c #6E91AD",
+"$;	c #87B2CC",
+"%;	c #799EBA",
+"&;	c #618298",
+"*;	c #7095AF",
+"=;	c #435663",
+"-;	c #80A7C0",
+";;	c #95C4DC",
+">;	c #779CB3",
+",;	c #526D7E",
+"';	c #516A7A",
+");	c #526B7B",
+"!;	c #465764",
+"~;	c #34414E",
+"{;	c #5C7E9A",
+"];	c #2B3741",
+"^;	c #4B657F",
+"/;	c #5C7D9C",
+"(;	c #557088",
+"_;	c #0F0F10",
+":;	c #B9C2CA",
+"<;	c #CCDFEF",
+"[;	c #B4CDE1",
+"};	c #8DAEC8",
+"|;	c #6F93AE",
+"1;	c #678CA6",
+"2;	c #6E92AF",
+"3;	c #81A8C1",
+"4;	c #8FBBD5",
+"5;	c #8DB9D2",
+"6;	c #6D8FA2",
+"7;	c #586F82",
+"8;	c #394851",
+"9;	c #86B0C6",
+"0;	c #85AFC8",
+"a;	c #6F94AF",
+"b;	c #698DA8",
+"c;	c #6889A7",
+"d;	c #5E7E9F",
+"e;	c #475D75",
+"f;	c #2E3C4A",
+"g;	c #5D7E9D",
+"h;	c #405465",
+"i;	c #36393B",
+"j;	c #D7E5F1",
+"k;	c #A4C5DC",
+"l;	c #668496",
+"m;	c #7595AB",
+"n;	c #7798AE",
+"o;	c #97C2DA",
+"p;	c #789DB3",
+"q;	c #8BB1C8",
+"r;	c #93C0D9",
+"s;	c #8BB5CF",
+"t;	c #85AFC9",
+"u;	c #82AAC6",
+"v;	c #5F7C95",
+"w;	c #1E252C",
+"x;	c #54728E",
+"y;	c #587899",
+"z;	c #5A7B9B",
+"A;	c #2D3843",
+"B;	c #798086",
+"C;	c #D1E3F1",
+"D;	c #B7D3E8",
+"E;	c #7E98AB",
+"F;	c #181C1F",
+"G;	c #46525F",
+"H;	c #80A1B8",
+"I;	c #99C3DB",
+"J;	c #85ACC2",
+"K;	c #21272D",
+"L;	c #0A0B0D",
+"M;	c #53718C",
+"N;	c #577797",
+"O;	c #1B2229",
+"P;	c #0D0E0F",
+"Q;	c #B3BDC4",
+"R;	c #CADDED",
+"S;	c #B4D3E7",
+"T;	c #2B3339",
+"U;	c #2F3840",
+"V;	c #7899AC",
+"W;	c #93C1D9",
+"X;	c #8FBCD5",
+"Y;	c #8BB6D1",
+"Z;	c #8DB8D2",
+"`;	c #92BFD8",
+" >	c #678092",
+".>	c #547089",
+"+>	c #5C7F9B",
+"@>	c #1F262E",
+"#>	c #202223",
+"$>	c #B1BECB",
+"%>	c #C3D9EB",
+"&>	c #7B8D99",
+"*>	c #708B9A",
+"=>	c #85ABC1",
+"->	c #7FA3BA",
+";>	c #92BBD3",
+">>	c #7CA0B4",
+",>	c #97BDD4",
+"'>	c #657E8F",
+")>	c #93BDD4",
+"!>	c #88ADC7",
+"~>	c #6F94AE",
+"{>	c #526A7E",
+"]>	c #65849B",
+"^>	c #799DBB",
+"/>	c #84AFC9",
+"(>	c #8FB9D2",
+"_>	c #323C45",
+":>	c #516C84",
+"<>	c #658AA4",
+"[>	c #5B7C9B",
+"}>	c #2E3A49",
+"|>	c #2A3038",
+"1>	c #252D3A",
+"2>	c #1B1E20",
+"3>	c #ADBFCF",
+"4>	c #C0D6E7",
+"5>	c #B0CDE2",
+"6>	c #8EB3C9",
+"7>	c #526975",
+"8>	c #6B899D",
+"9>	c #597183",
+"0>	c #90BAD5",
+"a>	c #94C2DA",
+"b>	c #82ABC5",
+"c>	c #495E6E",
+"d>	c #82A8C3",
+"e>	c #81A4BA",
+"f>	c #7594A5",
+"g>	c #87ABC3",
+"h>	c #4D6573",
+"i>	c #6689A6",
+"j>	c #526E85",
+"k>	c #243037",
+"l>	c #607B96",
+"m>	c #7699B6",
+"n>	c #789EB5",
+"o>	c #303D48",
+"p>	c #7498B4",
+"q>	c #7094AF",
+"r>	c #597792",
+"s>	c #242F39",
+"t>	c #1A1D25",
+"u>	c #374553",
+"v>	c #4D677D",
+"w>	c #14191E",
+"x>	c #040505",
+"y>	c #171A1D",
+"z>	c #8A9FAD",
+"A>	c #BCD9EC",
+"B>	c #B5D3E7",
+"C>	c #A2CAE1",
+"D>	c #9DC7DE",
+"E>	c #9EC7DD",
+"F>	c #3B4A57",
+"G>	c #455867",
+"H>	c #98C2DB",
+"I>	c #85B0CC",
+"J>	c #7496B2",
+"K>	c #4C606F",
+"L>	c #6E8EA3",
+"M>	c #7EA0B6",
+"N>	c #91BBD3",
+"O>	c #8DB7D1",
+"P>	c #90BAD4",
+"Q>	c #96C1DA",
+"R>	c #3B4853",
+"S>	c #688AA5",
+"T>	c #4C657A",
+"U>	c #1B2026",
+"V>	c #2B3C44",
+"W>	c #5F7A90",
+"X>	c #587284",
+"Y>	c #536978",
+"Z>	c #88B1CC",
+"`>	c #759AB8",
+" ,	c #617E9A",
+".,	c #556F85",
+"+,	c #20272E",
+"@,	c #323D48",
+"#,	c #333E4A",
+"$,	c #060707",
+"%,	c #4A5159",
+"&,	c #ACC3D5",
+"*,	c #ACCFE5",
+"=,	c #5A6874",
+"-,	c #AACDE1",
+";,	c #9CC6DC",
+">,	c #35414C",
+",,	c #769AB2",
+"',	c #80AAC5",
+"),	c #6F92AB",
+"!,	c #38464F",
+"~,	c #7EA4B9",
+"{,	c #97C3DC",
+"],	c #7A9FB6",
+"^,	c #3F505C",
+"/,	c #6D8DA6",
+"(,	c #1E282E",
+"_,	c #080909",
+":,	c #090A0C",
+"<,	c #344452",
+"[,	c #3B4857",
+"},	c #7799AE",
+"|,	c #8DB6D1",
+"1,	c #66869E",
+"2,	c #3D4957",
+"3,	c #536C84",
+"4,	c #353F4C",
+"5,	c #111215",
+"6,	c #65727E",
+"7,	c #A6BCCD",
+"8,	c #5D6972",
+"9,	c #AED0E6",
+"0,	c #99C5DC",
+"a,	c #8DB5D0",
+"b,	c #8DB5CE",
+"c,	c #90BBD5",
+"d,	c #84AAC5",
+"e,	c #8EBBD5",
+"f,	c #80A7C1",
+"g,	c #6C8DA2",
+"h,	c #85AFC6",
+"i,	c #61839B",
+"j,	c #374352",
+"k,	c #576D83",
+"l,	c #80A6C1",
+"m,	c #81A4BB",
+"n,	c #111315",
+"o,	c #111418",
+"p,	c #4C6378",
+"q,	c #33424C",
+"r,	c #37454D",
+"s,	c #8DB4CF",
+"t,	c #7397B3",
+"u,	c #3A495A",
+"v,	c #0D0F13",
+"w,	c #27303A",
+"x,	c #272E36",
+"y,	c #0F1012",
+"z,	c #90A4B2",
+"A,	c #A8CBE2",
+"B,	c #91BCD4",
+"C,	c #80ABC3",
+"D,	c #567083",
+"E,	c #67899D",
+"F,	c #94C2DB",
+"G,	c #95C1DB",
+"H,	c #779CB2",
+"I,	c #60849E",
+"J,	c #64849F",
+"K,	c #1A1F22",
+"L,	c #405061",
+"M,	c #79A1BD",
+"N,	c #324051",
+"O,	c #6183A1",
+"P,	c #6B8FAD",
+"Q,	c #6485A2",
+"R,	c #34444F",
+"S,	c #060606",
+"T,	c #2D3339",
+"U,	c #B2CBDF",
+"V,	c #94BCD5",
+"W,	c #7DA2BA",
+"X,	c #3F5264",
+"Y,	c #5A7991",
+"Z,	c #7195B3",
+"`,	c #7BA5BD",
+" '	c #81AAC6",
+".'	c #88B2CC",
+"+'	c #8EBBD4",
+"@'	c #8AB2CC",
+"#'	c #82ADC7",
+"$'	c #7092A5",
+"%'	c #95C2DA",
+"&'	c #41525F",
+"*'	c #6387A3",
+"='	c #475F72",
+"-'	c #21282F",
+";'	c #5B7288",
+">'	c #0D0F11",
+",'	c #0B0E11",
+"''	c #212C36",
+")'	c #26323C",
+"!'	c #161B20",
+"~'	c #55616D",
+"{'	c #9BB9D0",
+"]'	c #799EB6",
+"^'	c #27313A",
+"/'	c #1A222B",
+"('	c #5D7E99",
+"_'	c #6587A4",
+":'	c #6789A6",
+"<'	c #6B8EAB",
+"['	c #628097",
+"}'	c #6D8B9D",
+"|'	c #769AAF",
+"1'	c #6E91A9",
+"2'	c #6C8EAD",
+"3'	c #6E91AF",
+"4'	c #3C4D59",
+"5'	c #8BB1CB",
+"6'	c #232D32",
+"7'	c #13171B",
+"8'	c #232B32",
+"9'	c #839AAF",
+"0'	c #789BB3",
+"a'	c #283138",
+"b'	c #0C0E0F",
+"c'	c #242B33",
+"d'	c #3D4D5B",
+"e'	c #435768",
+"f'	c #4B6176",
+"g'	c #283137",
+"h'	c #8DB4CC",
+"i'	c #41535E",
+"j'	c #405362",
+"k'	c #3C4F60",
+"l'	c #3C4E5B",
+"m'	c #2B353E",
+"n'	c #526876",
+"o'	c #92BAD3",
+"p'	c #1B1F23",
+"q'	c #31383F",
+"r'	c #7F9CB6",
+"s'	c #21292F",
+"t'	c #29333F",
+"u'	c #1F252E",
+"v'	c #090A0E",
+"w'	c #4D626E",
+"x'	c #96BDD3",
+"y'	c #191D20",
+"z'	c #13181B",
+"A'	c #80A4BC",
+"B'	c #1B2027",
+"C'	c #5D7182",
+"D'	c #2C383F",
+"E'	c #364857",
+"F'	c #1A2028",
+"G'	c #333F49",
+"H'	c #7FA2B5",
+"I'	c #4A5E6E",
+"J'	c #232E35",
+"K'	c #252D35",
+"L'	c #2F3A41",
+"M'	c #0A0B0E",
+"N'	c #14191D",
+"O'	c #5A717F",
+"P'	c #212931",
+"Q'	c #222B34",
+"R'	c #101216",
+"S'	c #21272B",
+"                                                                                                                                ",
+"                                                                                                                                ",
+"                                                                                                                                ",
+"                                                                    .                                                           ",
+"                                                                    +                                                           ",
+"                                    @               #             $ %                                                           ",
+"                                  & *               =             - ;                                                           ",
+"                                  > , '             ) !         ~ { ]                                                           ",
+"                  ^ /             ( _ : < [ } | 1 2 3 4 5 6   7 8 9 0 a                                                         ",
+"                  b c d           e f g h i j k l m n o p q r s t u v w         x                                               ",
+"                  y z A B   C D E F G H I J K L M N O P Q R S T U U V W       X Y                                               ",
+"                    Z `  ...+.@.#.$.%.O &.*.=.-.;.>.,.'.).!.~.~.~.{.].^./.(._.:.<.                                              ",
+"                    b [.}.|.#.1.2.3.4.{.~.~.~.~.5.6.5.~.7.8.{.~.~.~.~.9.0.a.b.].c.                                              ",
+"                  d.e.f.g.h.i.j.k.{.~.~.~.~.l.~.m.% n.~.o.{.{.~.~.~.~.p.V 9.~.q.r.                                              ",
+"                s.t.u.v.w.x.u y.z.A.B.5.~.~.5.C.D.E.F.~.~.G.~.~.~.G.H.I.J.~.~.J.K.L.  M.N.                                      ",
+"              O.P.Q.R.S.T.U.V.W.X.Y.Z.`.~.~.5. +.+++@+U ~.~.~.~.~.#+$+%+,.~.~.G.&+*+=+-+;+                                      ",
+"            >+,+Q.'+)+!+~+{+]+^+/+(+_+:+<+~.[+}+U 9.|+5.~.~.~.~.1+2+3+4+5+~.].6+7+8+9+0+                                        ",
+"          a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+5.U ~.U r+s+~.~.~.t+u+v+w+x+y+~.z+A+t+B+C+D+E+          F+G+                        ",
+"        H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+V ~.~.~.~.U ~.~.~.o.9.{.Z+`+9.~.~.~.V  @.@+@@@#@  $@%@&@*@                          ",
+"        =@-@;@>@,@'@'.)@!@~@{@]@^@/@l+(@_@:@<@~.~.~.U {.~.~.~.{.~.~.{.[@~.~.~.~.}@|@1@2@3@4@5@6@7@8@                            ",
+"        9@0@a@b@c@d@-.e@f@g@h@i@j@k@l@V+m@n@o@p@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.q@r@s@t@u@v@w@x@y@                              ",
+"z@A@B@C@D@E@X F@G@H@R I@J@K@L@M@N@O@P@Q@R@o+S@T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.9.U@V@W@X@<+V Y@Z@`@ #                              ",
+"    .#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#S@/#~.~.~.~.~.~.~.~.~.~.~.~.~.U (#_#:#<#p@{.[#}#|#1#2#                              ",
+"      3#4#5#6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#S@/#~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.l#m#9.{.~.n#o#p#q#r#s#                            ",
+"      t#u#v#w#x#y#z#A#B#C#D#E#F#G#H#I#% J#K#S@T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.L#0.l.~.~.{.M#N#O#P#Q#R#                          ",
+"      S#T#U#V#W#X#Y#Z#`# $.$+$@$#$$$%$&$*$=$-$a#~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.o.o.;$9.G.~.>$,$'$)$!$~${$]$                      ",
+"      ^$/$($_$:$<$[$}$|$1$2$3$4$5$6$7$8$9$:+<+~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.G.0$a$b$c$d$e$f$g$h$i$j$k$                        ",
+"    [ l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$M#p@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.;$D$E$F$G$H$I$J$K$L$                          ",
+"    M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$`$ %.%+%@%<+{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.#%$%%%p@&%*%=%-%;%>%,%                        ",
+"    '%)%!%~%{%]%^%/%(%_%:%<%[%}%|%1%2%3%-$T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.4%5%U p@6%7%8%9%0%a%y                         ",
+"    b%c%d%e%f%g%h%i%G.[#j%k%l%m%n%o%p%@%q%{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.~.~.~.~.~.~.V G.}@r%s%t%u%v%w%M.x%y%z%A%              ",
+"    B%C%D%E%F%G%H%I%V o.<@J%K%L%M%N%O%P%p@~.~.~.~.~.~.~.~.~.U ~.~.U 9.Q%{.~.~.~.~.~.{.%%U {.~.~.{.v@R%S%T%U%V%W%    X%$         ",
+"    Y%Z%`% &.&+&@&#&U ~.{.$&%&&&*&=&-&T@~.~.~.~.~.~.~.~.~.~.~.;&>&,&'&)&!&5+~.~.~.~.{.~&{&]&9.~.p@^&/&(&_&:&      <&[&}&|&      ",
+"    1&2&3&4&5&6&7&8&9&l.~.{.V 0&a&b&c&~.~.~.~.~.~.~.5.d&e&f&g&h&i&j&k&l&m&n&~.~.G.~.~.~.o&p&q&r&s&t&u&v&        w&x&y&z&A&B&    ",
+"    C&2&D&E&F&G&G&H&I&J&U ~.~.U K&L&,.~.~.~.~.~.~.~.U M&N&O&P&Q&R&S&T&U&V&W&X&].{.~.~.{./#Y&Z&`& *.*+*@*      (.#*$*%*&***=*    ",
+"    -*;*>*,*'*)*!*~*{*]*^*~.5.{.5./*U ~.~.~.~.~.~.{.[#(*_*:*<*[*[*}*|*1*2*3*4*5*U ~.~.6*7*8*9*0*a*b*c*d*e*f*g*h*i*%*j*k*<%l*    ",
+"    m*n*o*p*q*r*s*t*u*v*w*1+~.~.~.~.~.~.~.~.~.~.~.x*y*z*A*B*C*D*E*V U ~.G.~.:.F*G*l.{.R%X+H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*    ",
+"    Y*Z*D&`* =.=+=@=#=$=%=&={.~.~.~.~.~.~.~.~.~.~.<+*===-=;=>=,='=)=[#p@!=~={=]=^=/=(=a#&%_=:=<=-#[=}=k$|=1=2=3=4=5=6=7=8=9=    ",
+"    0=a=b=c=d=e=f=g=h=i=j=k=l=5.~.~.~.~.~.~.~.~.~.V -$m=n===o=p=q=r=s=t=:+u=v=w=x=y=z=A=J.V U ~.V [#B=C=D=1=E=F=      G=H=I=    ",
+"    J=K=L=M=N=O=P=Q=R=S=T=U=V=5.U ~.~.~.~.~.~.~.~.~.{.x*W=X=Y=Z=`= -.-+-@-#-$-%-&-*-=---;->-9.x*)=,-'-)-c.!-~-          {-]-    ",
+"    ^-/-(-_-:-<-<-[-%.}-|-1-T@~.{.~.~.~.~.~.~.~.~.~.~.V 2-^&3-4-5-6-7-8-9-0-a-b-c-d-e-f-g-h-V@i-j-k-l-T=m-7@n-          o-p-    ",
+"    q-r-s-t-u-v-!+2*w-x-y-z-V ~.~.~.~.~.~.~.~.~.~.~.~.~.~./#A-B-C-D-E-F-G-H-I-J-K-L-<@M-W=N-O-P-Q-R-<&S-T-U-V-          W-      ",
+"      X-Y-Z-`- ;.;+;@;#;$;q+~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~./#v@W=N#%;&;*;=;-;s=-#;;>;,;';);!;~;{;];^;/;(;H+                    ",
+"      _;:;<;[;};|;1;2;3;4;{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.T@-#5;6;7;8;9;[#V <+0;a;b;c;E-d;e;f;|=g;h;                      ",
+"        i;j;V#k;F.l;m;n;o;~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.~.{.p@S@s=p;q;~.~.{.r;s;t;u;~$v;w;x;y;z;A;                      ",
+"        H+B;C;D;E;F;G;H;~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.U ~.~.V E*E*V ~.~.~.{.T@/#I;J;K;L;M;y;N;O;                      ",
+"          P;Q;R;S;T;U;~.{.~.~.~.~.~.~.~.~.l.U {.p@~.~.{.V ~.~.5+V;].~.~.~.~.{.{.p@W;X;Y;Z;`;/# >W..>+>N;@>                      ",
+"            #>$>%>&>*>G.~.~.~.~.~.~.~.~.{.`.=>V=->;>~.n##&>>T@,>'>].~.~.~.~.~.)>!>i$~>{>]>^>/>(>_>:><>[>}>      |>1>            ",
+"              2>3>4>5>U@U ~.~.~.~.~.~.~.{.6>7>8>9>0>a#a>b>c>d>e>f>~.~.~.V ~.~.g>h>i>1=j>,%k>l>m>n>o>p>q>r>s>t>u>v>w>            ",
+"              x>y>z>A>B>C>5+D>E>~.~.~.~.{.%&F>G>3;s%{.H>I>J>K>L>M>~.V N>O>P>x*Q>R>S>T>U>    X%V>W>X>Y>Z>P-`> ,.,+,              ",
+"              @,#,$,%,&,1.*,=,-,;,{.p@V {.X@>,,,Z;V ~.5.`;',),!,~,~.{,],^,/,/&-$F$(,_,          :,<,[,},<@|,1,2,                ",
+"            B&3,4,    5,6,7,8,9,0,`;a,b,B+c,d,s=<+~.~.~.a#e,f,g,h,V -#9$i,j,k,l,m,n,            o,p,q,r,s,t,u,v,                ",
+"            w,x,          y,z,A,B,C,D,E,o@F,G,<+~.~.~.~.~.;;P>j%}@p@H,]#I,J,K,L,M,=+              N,O,P,Q,R,S,                  ",
+"                          T,U,V,W,X,Y,Z,`, '.'+'x*~.{.O+@%@'#'$'%'a#&'*'='-'    ~;;'>'            ,''')'!'                      ",
+"                          ~'{']'^'/'('_'_':'<'['}'{.V |'1'2'3'4'5'}@6'7'          8'K;                                          ",
+"                        v&9'0'a'    b'c'd'e'f'1@g'h'G.i'j'k'l'm'n'o'p'              y                                           ",
+"                        q'r's'        t'u'H+    v'w'x'y'        z'A'B'                                                          ",
+"                        C'D'          E'F'        G'H'            I'J'                                                          ",
+"                      K'L'            M'          N'O'            P'Q'                                                          ",
+"                      R'                            S'                                                                          ",
+"                                                                                                                                ",
+"                                                                                                                                ",
+"                                                                                                                                ",
+"                                                                                                                                "};
-- 
cgit v1.2.3