[PATCH 1/4] wmappkill: Add version 0.2 to repository.
Doug Torrance <[email protected]>
| Newsgroups | gmane.compw.window-managers.windowmaker.devel |
|---|---|
| Message-ID | <[email protected]> |
From:
http://www.sourcefiles.org/Utilities/GUI/wmappkill-0.2.tar.gz
---
wmappkill/COPYING | 340 +++++++++++++++++++++++++++
wmappkill/ChangeLog | 10 +
wmappkill/INSTALL | 12 +
wmappkill/Makefile | 20 ++
wmappkill/README | 21 ++
wmappkill/fond.xbm | 47 ++++
wmappkill/wmAppKill.c | 611 ++++++++++++++++++++++++++++++++++++++++++++++++
wmappkill/wmAppKill.h | 54 +++++
wmappkill/wmAppKill.xpm | 375 +++++++++++++++++++++++++++++
9 files changed, 1490 insertions(+)
create mode 100644 wmappkill/COPYING
create mode 100644 wmappkill/ChangeLog
create mode 100644 wmappkill/INSTALL
create mode 100644 wmappkill/Makefile
create mode 100644 wmappkill/README
create mode 100644 wmappkill/fond.xbm
create mode 100644 wmappkill/wmAppKill.c
create mode 100644 wmappkill/wmAppKill.h
create mode 100644 wmappkill/wmAppKill.xpm
diff --git a/wmappkill/COPYING b/wmappkill/COPYING
new file mode 100644
index 0000000..a3f6b12
--- /dev/null
+++ b/wmappkill/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/wmappkill/ChangeLog b/wmappkill/ChangeLog
new file mode 100644
index 0000000..3a3edf1
--- /dev/null
+++ b/wmappkill/ChangeLog
@@ -0,0 +1,10 @@
+
+wmAppKill - Changelog
+
+- 12/27/2000 - v0.2
+added support for mouse wheel (thanks to Mathieu)
+some code cleaning
+
+- 09/28/2000 - v0.1
+initial release
+
diff --git a/wmappkill/INSTALL b/wmappkill/INSTALL
new file mode 100644
index 0000000..921542a
--- /dev/null
+++ b/wmappkill/INSTALL
@@ -0,0 +1,12 @@
+
+wmAppKill requires the libGtop.
+Download it at: http://www.home-of-linux.org/gnome/libgtop/
+
+To install wmAppKill :
+
+1. tar xvfz wmAppKill-x.x.tar.gz
+2. make
+3. make install (you must be root)
+
+
+
diff --git a/wmappkill/Makefile b/wmappkill/Makefile
new file mode 100644
index 0000000..318b058
--- /dev/null
+++ b/wmappkill/Makefile
@@ -0,0 +1,20 @@
+GTOP_LIBS = -lgtop -lgtop_sysdeps -lgtop_common -lXau
+GCCOPTS = -O2 -Wall -g
+CFLAGS= -Wall
+LDLIBS = -lX11 -lXpm -lXext
+LDFLAGS= -L/usr/X/lib -L/usr/X11R6/lib -L/usr/X11/lib -L/usr/local/lib/X11
+
+
+all : wmAppKill
+
+wmAppKill : wmAppKill.c
+ gcc ${GCCOPTS} wmAppKill.c -o wmAppKill ${GTOP_LIBS} ${LDFLAGS} ${LDLIBS}
+
+install: wmAppKill
+ install -m 755 wmAppKill /usr/bin/wmAppKill
+
+clean:
+ $(RM) *.o core tst *~ \#*
+
+
+
diff --git a/wmappkill/README b/wmappkill/README
new file mode 100644
index 0000000..b3cfcb5
--- /dev/null
+++ b/wmappkill/README
@@ -0,0 +1,21 @@
+
+wmAppKill v0.2
+--------------
+
+wmAppKill is a Window Maker dock applet that lists all your running processes.
+You can kill any of them by doubleclicking on their names.
+
+You can specify wich process will be the oldest one of the list.
+The one by default is "wmaker".
+Type "wmAppKill -h" to get command line options.
+
+Please send comments, bugs, modifications to : [email protected]
+
+Future releases will be holded at:
+http://internettrash.com/users/beuz/wmappkill.html
+
+Hope you'll enjoy it...
+
+You might want to check this other cool dockapp from which i started :
+wmNetscapeKiller at http://pblumo.free.fr/wmNetscapeKiller
+
diff --git a/wmappkill/fond.xbm b/wmappkill/fond.xbm
new file mode 100644
index 0000000..541007a
--- /dev/null
+++ b/wmappkill/fond.xbm
@@ -0,0 +1,47 @@
+/* Created with The GIMP */
+#define fond_width 64
+#define fond_height 64
+static char fond_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/wmappkill/wmAppKill.c b/wmappkill/wmAppKill.c
new file mode 100644
index 0000000..bd2cfd3
--- /dev/null
+++ b/wmappkill/wmAppKill.c
@@ -0,0 +1,611 @@
+
+/*
+ * wmAppKill v0.2 - S.Rozange
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program (see the file COPYING); if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA
+ *
+ */
+
+
+#include <unistd.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include <X11/Xlib.h>
+#include <X11/xpm.h>
+#include <X11/Xutil.h>
+#include <X11/extensions/shape.h>
+
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <sys/wait.h>
+
+#include <glibtop.h>
+#include <glibtop/proclist.h>
+#include <glibtop/procstate.h>
+#include <glibtop/xmalloc.h>
+
+#include <time.h>
+#include <signal.h>
+
+#include "fond.xbm"
+#include "wmAppKill.xpm"
+#include "wmAppKill.h"
+
+Display *dpy; /* xlib global vars */
+GC gc;
+Window win;
+Window iconWin;
+Pixmap XPM;
+int screen;
+
+_zone *fZone = NULL;
+_desc *pList = NULL; /* double linked list */
+_desc *posProc = NULL; /* lower proc showed on the dock */
+pid_t tabNoProc[NB_LINE]; /* array containing each line's pid */
+pid_t lastProcPid; /* oldest proc before refreshment */
+char *procBaseName = PROC_DEF; /* procBase is NULL if we want all the proc to be listed */
+int procBasePos = 0; /* procbase's pos in linked list */
+pid_t procBasePid = 1; /* procbase's pid */
+unsigned int gNbProc = 0; /* proc number starting from procBase */
+unsigned int gNbProcTotal = 0; /* total proc number */
+struct timeval timev; /* to detect double-click */
+
+void ZoneCreate(int x, int y, int width, int height, char no)
+{
+ _zone *last;
+
+ if (!fZone) {
+ fZone = (_zone *)malloc(sizeof(_zone));
+ last = fZone;
+ } else {
+ for (last = fZone; last -> next; last = last -> next);
+ last -> next = (_zone *)malloc(sizeof(_zone));
+ last = last -> next;
+ }
+
+ last -> x = x;
+ last -> y = y;
+ last -> width = width;
+ last -> height = height;
+ last -> no = no;
+ last -> next = NULL;
+}
+
+char CheckZone(void)
+{
+ int x, y,popo;
+ unsigned int mask;
+ Window root_ret, child_ret;
+ _zone *curseur = fZone;
+
+ XQueryPointer(dpy, iconWin, &root_ret, &child_ret, &popo, &popo, &x, &y, &mask); /* mouse position */
+
+ do {
+ if ((x >= curseur -> x) && (x <= curseur -> x + curseur -> width) && (y >= curseur -> y) && (y <= curseur -> y + curseur -> height))
+ return curseur -> no;
+
+ }
+ while ((curseur = curseur -> next));
+
+ return 0;
+}
+
+void GarbageCollector(_desc *garb)
+{
+ _desc *next;
+
+ while (garb) {
+ next = garb -> next;
+ free(garb);
+ garb = next;
+ }
+}
+
+int CheckProc(pid_t pid)
+{
+ glibtop_proclist bof;
+ unsigned int *n;
+
+ if ((n = glibtop_get_proclist (&bof, GLIBTOP_KERN_PROC_PID , (int64_t)pid)) == NULL) {
+ glibtop_free(n);
+ return -1;
+ }
+
+ glibtop_free(n);
+ return 0;
+}
+
+_desc *GetProcList(void) /* create a double linked list */
+{
+ glibtop_proclist buf;
+ unsigned int *n;
+ unsigned int nbPr;
+ int i;
+ _desc *lastOne;
+ _desc *glump;
+ _desc *res;
+
+ if ((n = glibtop_get_proclist (&buf, GLIBTOP_KERN_PROC_UID, (int64_t)getuid())) == NULL) {
+ fprintf(stderr, "Problem using libgtop\n");
+ exit(1);
+ };
+
+ nbPr = (int)buf.number;
+
+ glump = (_desc *)malloc(sizeof(_desc));
+ res = glump;
+ lastOne = NULL;
+
+ for (i = nbPr; i; i--){
+ char *bof;
+ glibtop_proc_state buf;
+ glump -> previous = lastOne;
+ glump -> next = (_desc *)malloc(sizeof(_desc));
+
+ glibtop_get_proc_state(&buf, glump -> pid = n[i - 1]);
+ strcpy(glump -> name, bof = buf.cmd);
+ if (strlen(glump -> name) > MAX_CHAR)
+ glump -> name[MAX_CHAR] = 0;
+
+ lastOne = glump;
+ glump = glump -> next;
+
+ if (procBaseName && !strcmp(bof, procBaseName)) {
+ procBasePos = i - 1;
+ procBasePid = n[i - 1];
+ break;
+ }
+ }
+
+ lastOne -> next = NULL;
+ lastProcPid = n[nbPr - 1];
+ glibtop_free(n);
+
+ if (procBaseName && i) gNbProc = nbPr - i + 1; /* procBase has been found */
+ else { /* procBaseName is null or hasn't been found */
+ procBaseName = NULL;
+ procBasePos = 0;
+ procBasePid = n[0];
+ gNbProc = nbPr;
+ }
+
+ gNbProcTotal = nbPr;
+
+ return res;
+}
+
+int CheckProcToRemove(unsigned int *procList, unsigned int procListSize)
+{
+ _desc *curseur = pList, *temp;
+ int nbProcRemoved = 0, i;
+
+ while (curseur) {
+ for (i = procListSize; i; i--)
+ if (curseur -> pid == procList[i - 1]) break;
+
+ temp = curseur;
+ curseur = curseur -> next;
+
+ if (!i) { /* we didn't find it in proclist, let's remove it */
+ RemoveProc(temp);
+ gNbProc--;
+ nbProcRemoved++;
+ }
+ }
+
+ return nbProcRemoved;
+}
+
+int CheckProcToAdd(int pos, unsigned int *procList, unsigned int procListSize)
+{
+ _desc *glump;
+ int i, compteur = 0;
+ glibtop_proc_state buf;
+
+ for (i = pos; i < procListSize ; i++){
+
+ compteur++;
+ glump = (_desc *)malloc(sizeof(_desc));
+ usleep(20000); /* libgtop seems to need a little bit of time */
+ if (CheckProc(procList[i])) continue; /* checking if the process isn't already dead */
+
+ glibtop_get_proc_state(&buf, glump -> pid = procList[i]);
+ strcpy(glump -> name, buf.cmd);
+ if (strlen(glump -> name) > MAX_CHAR)
+ glump -> name[MAX_CHAR] = 0;
+
+ pList -> previous = glump;
+ glump -> next = pList;
+ glump -> previous = NULL;
+ if (posProc == pList) posProc = glump;
+ pList = glump;
+ gNbProc++;
+ gNbProcTotal++;
+
+ lastProcPid = glump -> pid;
+ }
+
+ return compteur;
+}
+
+int CheckProcChange(void)
+{
+ glibtop_proclist buf;
+ unsigned int *n;
+ unsigned int nbPr;
+ int diffNbProc;
+
+ if ((n = glibtop_get_proclist (&buf, GLIBTOP_KERN_PROC_UID, (int64_t)getuid())) == NULL) return -1;
+ nbPr = (int)buf.number;
+
+ if ((nbPr == gNbProcTotal) && (n[nbPr - 1] == lastProcPid)) return 0; /* nothing changed */
+
+ if (procBaseName && (n[procBasePos] != procBasePid)) /* some proc killed before the baseproc (=oldest proc) */
+ {
+ if (CheckProc(procBasePid)) { /* baseproc doesn't exist anymore */
+ GarbageCollector(pList);
+ pList = GetProcList(); /* so we create a whole new list */
+ posProc = pList;
+ return 1;
+ }
+ else
+ while (n[--procBasePos] != procBasePid); /* here we find what's the new pos. of baseproc */
+ }
+
+
+ diffNbProc = (nbPr - procBasePos) - gNbProc; /* nb of changes after baseproc */
+
+ if (diffNbProc == 0 && (n[nbPr - 1] == lastProcPid)){ /* only changes before baseproc */
+ gNbProcTotal = nbPr;
+ glibtop_free(n);
+ return 0;
+ }
+
+ if (diffNbProc > 0 && n[nbPr - diffNbProc - 1] == lastProcPid) /* only proc to add */
+ CheckProcToAdd(nbPr - diffNbProc, n, nbPr);
+
+ else { /* to remove [and to add] */
+ int nb;
+ nb = CheckProcToRemove(n, nbPr);
+ if (nb != -diffNbProc)
+ CheckProcToAdd(nbPr - diffNbProc - 1, n, nbPr);
+ }
+
+ glibtop_free(n);
+ return 1;
+}
+
+void RemoveProc(_desc *cible)
+{
+ _desc *temp1, *temp2;
+
+ _desc *curseur;
+ int i;
+
+ temp1 = cible -> previous;
+ temp2 = cible -> next;
+
+ for (curseur = cible, i = 0; curseur && i != NB_LINE + 1; curseur = curseur -> next, ++i);
+
+ if (!(gNbProc - 1 < NB_LINE) && (i == 2 || i == 3)) { /* the killed proc is near the start of the list */
+ for (--i, curseur = posProc; i && curseur -> previous; curseur = curseur -> previous, --i);
+ posProc = curseur;
+ }
+ else if ((cible == posProc) && (cible -> previous)) {
+ posProc = cible -> previous;
+ }
+ else if ((cible == posProc) && (cible -> next)) {
+ posProc = cible -> next;
+ }
+
+ if (temp1) temp1 -> next = temp2;
+ else {
+ pList = temp2;
+ temp2 -> previous = NULL;
+ gNbProcTotal--;
+ lastProcPid = temp2 -> pid;
+ free(cible);
+ return;
+ }
+
+ if (temp2) temp2 -> previous = temp1;
+ else
+ temp1 -> next = NULL;
+
+ free(cible);
+ gNbProcTotal--;
+
+}
+
+void ShowString (int x, int y, char *doudou)
+{
+ int i = 0;
+ char c;
+
+ while ((c = tolower(doudou[i++]))){
+ if (c >= 'a' && c <= 'z') {
+ XCopyArea(dpy,XPM, win,gc, 1 + (c - 'a') * 6, 10, 5, 8, x, y) ;
+ XCopyArea(dpy,XPM, iconWin,gc, 1 + (c - 'a') * 6, 10, 5, 8, x, y) ;
+ x += 6;
+ }
+ }
+}
+
+void DoExp(){
+
+ XClearWindow(dpy, win);
+ XClearWindow(dpy, iconWin);
+
+ XCopyArea(dpy, XPM ,win, gc, 1 + (26) * 6, 10, 6, 8, 5, 51);
+ XCopyArea(dpy, XPM, iconWin, gc, 1 + (26) * 6, 10, 6, 8, 5, 51);
+ XCopyArea(dpy, XPM, win, gc, 1 + (27) * 6, 10, 6, 8, 53, 51);
+ XCopyArea(dpy, XPM, iconWin, gc, 1 + (27) * 6, 10, 6, 8, 53, 51);
+
+ XCopyArea(dpy, XPM, win, gc, 106, 0, 28, 8, 17, 50);
+ XCopyArea(dpy, XPM, iconWin, gc, 106, 0, 28, 8, 17, 50);
+
+ DoExpose();
+}
+
+void DoExpose() {
+
+ int i;
+ _desc *curseur;
+
+ for (i = NB_LINE; i; i--){
+ XCopyArea(dpy, XPM, win, gc, 2, 22, 53, 9, X_PROC + 1, Y_PROC + ((i - 1) * 10));
+ XCopyArea(dpy, XPM, iconWin, gc, 2, 22, 53, 9, X_PROC + 1, Y_PROC + ((i - 1) * 10));
+ }
+
+ if (gNbProc < NB_LINE) {
+ int y;
+ i = gNbProc;
+ for (y = NB_LINE; y != gNbProc; y--) tabNoProc[y - 1] = -1;
+ }
+ else i = NB_LINE;
+
+ for (curseur = posProc; i; curseur = curseur -> next, i--)
+ {
+ ShowString(X_PROC + 1, Y_PROC + (i - 1) * 10, curseur -> name);
+ tabNoProc[i - 1] = curseur -> pid;
+ }
+}
+
+void DoClick(XEvent ev)
+{
+ unsigned char doubleClick = 0;
+ static unsigned char firstClick = 0;
+ _desc *curseur;
+ char zone, i;
+
+ zone = CheckZone();
+
+ if (ev.xbutton.button == CLICK_TWO) {
+ DoExpose() ;
+ }
+
+ /* Mouse wheel patch by Mathieu Cuny */
+
+ if (ev.xbutton.button == WHEEL_UP && gNbProc > NB_LINE) {
+ for (i = NB_LINE, curseur = posProc; i; curseur = curseur -> next, i--);
+ if (curseur) posProc = posProc -> next;
+ DoExpose();
+ }
+
+ if (ev.xbutton.button == WHEEL_DOWN && posProc -> previous && gNbProc > NB_LINE) {
+ posProc = posProc -> previous;
+ DoExpose();
+ }
+
+ /* Mouse wheel patch end */
+
+ if (ev.xbutton.button == CLICK_ONE) {
+
+ struct timeval temp;
+ long long nms1;
+
+ gettimeofday(&temp, NULL);
+ nms1 = temp.tv_sec - timev.tv_sec; /* nb sec since last click */
+
+ if ((!nms1 || nms1 == 1)){
+ long long yop = (nms1 * 1000000L) + (temp.tv_usec - timev.tv_usec); /* nb mlsec since last click */
+ if (firstClick && (yop < DOUBLE_CLICK_DELAY)){ /* we got double click */
+ doubleClick = 1;
+ firstClick = 0;
+ } else firstClick = 1;
+ } else firstClick = 1;
+
+ timev = temp;
+
+ if (zone == UP && !doubleClick && gNbProc > NB_LINE)
+ {
+ for (i = NB_LINE, curseur = posProc; i; curseur = curseur -> next, i--);
+ if (curseur) posProc = posProc -> next;
+ DoExpose();
+ }
+
+ else if (zone == DOWN && posProc -> previous && !doubleClick && gNbProc > NB_LINE)
+ {
+ posProc = posProc -> previous;
+ DoExpose();
+ }
+
+ else if (zone == UP && doubleClick && gNbProc > NB_LINE)
+ {
+
+ for (curseur = pList; curseur -> next; curseur = curseur -> next); /* curseur = end of list */
+
+ for (i = NB_LINE - 1; i; curseur = curseur -> previous, i--);
+ posProc = curseur;
+ DoExpose();
+ }
+
+ else if (zone == DOWN && doubleClick && gNbProc > NB_LINE)
+ {
+ posProc = pList;
+ DoExpose();
+ }
+
+ else if (zone > 0 && zone <= NB_LINE && doubleClick && tabNoProc[zone - 1] != -1)
+ {
+ kill(tabNoProc[zone - 1], SIGKILL); /* let's kill the mofo */
+ waitpid(tabNoProc[zone - 1], NULL, 0);
+ }
+
+ if (doubleClick) doubleClick = 0;
+
+ }
+}
+
+void DoEvents() {
+
+ unsigned long long compteur = 0;
+
+ XEvent ev ;
+
+ for (;;){
+ if (!compteur){
+ if (CheckProcChange()) DoExpose();
+ compteur = UPDATE_NB * DELAY;
+ }
+ while(XPending(dpy)){
+ XNextEvent(dpy,&ev);
+ switch(ev.type) {
+ case Expose : DoExp(); break;
+ case ButtonPress : DoClick(ev); break;
+ }
+ }
+ usleep(DELAY);
+ compteur -= DELAY;
+ }
+}
+
+void PrintUsage(void)
+{
+ printf("usage: wmAppKill [-a] [-n <name>] [-h]\n");
+ printf("\t-a\t\tSelect all processes\n");
+ printf("\t-n <name>\tDo not select processes older than <name> (default: wmaker)\n");
+ printf("\t-h\t\tDisplay help screen\n");
+}
+
+void GetArg(int argc, char *argv[])
+{
+ if (argc == 1) return;
+
+ else if (argc == 3 && !strcmp(argv[1], "-n") && argv[2][0] != '-')
+ procBaseName = strdup(argv[2]);
+
+ else if (argc == 2 && !strcmp(argv[1], "-a"))
+ procBaseName = NULL;
+
+ else if (argc == 2 && !strcmp(argv[1], "-h"))
+ {
+ PrintUsage();
+ exit(1);
+ }
+ else {
+ PrintUsage();
+ exit(1);
+ }
+}
+
+void CreateDock(int argc, char *argv[]) /* this part comes from http://www.linuxmag-france.org/ */
+{
+ Window root;
+ XWMHints wmHints;
+ XSizeHints sizeHints;
+ XClassHint classHint;
+ Pixmap pixmask;
+ unsigned long p_blanc;
+ unsigned long p_noir;
+ unsigned int borderWidth = 2;
+ char *wname = argv[0] ;
+
+ dpy = XOpenDisplay(NULL) ;
+
+ if(dpy == NULL)
+ {
+ fprintf(stderr, "Can't open display\n") ;
+ exit(1) ;
+ }
+
+ root = RootWindow(dpy,screen);
+ p_blanc = WhitePixel(dpy,screen) ;
+ p_noir = BlackPixel(dpy,screen) ;
+ gc = XDefaultGC(dpy,screen) ;
+ XSetForeground(dpy, gc, p_noir);
+ XSetBackground(dpy, gc,p_noir);
+
+ sizeHints.x = 0 ;
+ sizeHints.y = 0 ;
+ sizeHints.width = 64 ;
+ sizeHints.height = 64 ;
+
+ win = XCreateSimpleWindow(dpy,root,sizeHints.x,sizeHints.y , sizeHints.width, sizeHints.height, borderWidth, p_noir,p_noir) ;
+ iconWin = XCreateSimpleWindow(dpy,root,sizeHints.x,sizeHints.y,sizeHints.width, sizeHints.height, borderWidth, p_noir,p_noir ) ;
+
+ sizeHints.flags = USSize | USPosition ;
+ XSetWMNormalHints(dpy,win,&sizeHints) ;
+ wmHints.initial_state = WithdrawnState ;
+ wmHints.icon_window = iconWin ;
+ wmHints.icon_x = sizeHints.x ;
+ wmHints.icon_y = sizeHints.y ;
+ wmHints.window_group = win ;
+ wmHints.flags = StateHint | IconWindowHint | IconPositionHint | WindowGroupHint ;
+ XSetWMHints(dpy, win, &wmHints) ;
+ classHint.res_name = wname ;
+ classHint.res_class = wname ;
+
+ XSetClassHint(dpy, win, &classHint) ;
+ XSetCommand(dpy,win, argv, argc) ;
+
+ pixmask = XCreateBitmapFromData(dpy,win,fond_bits, fond_width, fond_height) ;
+ XShapeCombineMask(dpy,win,ShapeBounding,0,0,pixmask,ShapeSet) ;
+ XShapeCombineMask(dpy,iconWin,ShapeBounding, 0, 0, pixmask, ShapeSet) ;
+ XpmCreatePixmapFromData(dpy,root,wmAppKill_xpm, &XPM, NULL,NULL) ;
+
+ XSelectInput(dpy,win, ExposureMask | ButtonPressMask) ;
+ XSelectInput(dpy,iconWin, ExposureMask | ButtonPressMask) ;
+
+ XMapWindow(dpy,win) ;
+}
+
+int main(int argc, char *argv[])
+{
+ int i;
+
+ GetArg(argc, argv);
+ glibtop_init();
+ CreateDock(argc, argv);
+ gettimeofday(&timev, NULL);
+
+ pList = GetProcList();
+ posProc = pList;
+
+ ZoneCreate(4, 50, 8, 8, UP);
+ ZoneCreate(54, 50, 8, 8, DOWN);
+
+ for (i = NB_LINE; i; i--)
+ ZoneCreate(X_PROC + 1, Y_PROC + (i - 1) * 10 + 2, 48, 7, i);
+
+ DoEvents();
+
+ return 0;
+}
+
diff --git a/wmappkill/wmAppKill.h b/wmappkill/wmAppKill.h
new file mode 100644
index 0000000..f5aa38c
--- /dev/null
+++ b/wmappkill/wmAppKill.h
@@ -0,0 +1,54 @@
+#define PROC_DEF "wmaker"
+
+#define MAX_CHAR 8
+#define NB_LINE 4
+
+#define CLICK_ONE 1
+#define CLICK_TWO 3
+
+#define WHEEL_UP 4
+#define WHEEL_DOWN 5
+
+#define X_PROC 6
+#define Y_PROC 7
+
+#define DOWN 7 /* minus */
+#define UP 8 /* plus */
+
+#define DOUBLE_CLICK_DELAY 170000L
+#define DELAY 10000
+#define UPDATE_NB 60 /* checking delay = DELAY * UPDATE_NB (ms) */
+
+typedef struct _desc{
+ char name[40];
+ pid_t pid;
+ struct _desc *previous;
+ struct _desc *next;
+} _desc;
+
+typedef struct _zone{
+ int x;
+ int y;
+ int width;
+ int height;
+ char no;
+ struct _zone *next;
+} _zone;
+
+void ZoneCreate(int x, int y, int width, int height, char no);
+void GarbageCollector(_desc *garb);
+char CheckZone(void);
+int CheckProc(pid_t pid);
+_desc *GetProcList(void);
+int CheckProcToRemove(unsigned int *procList, unsigned int procListSize);
+int CheckProcToAdd(int pos, unsigned int *procList, unsigned int procListSize);
+int CheckProcChange(void);
+void RemoveProc(_desc *cible);
+void ShowString (int x, int y, char *doudou);
+void DoExp();
+void DoExpose();
+void DoClick(XEvent ev);
+void DoEvents();
+void PrintUsage(void);
+void GetArg(int argc, char *argv[]);
+void CreateDock(int argc, char *argv[]);
diff --git a/wmappkill/wmAppKill.xpm b/wmappkill/wmAppKill.xpm
new file mode 100644
index 0000000..b77c304
--- /dev/null
+++ b/wmappkill/wmAppKill.xpm
@@ -0,0 +1,375 @@
+/* XPM */
+static char * wmAppKill_xpm[] = {
+"178 38 334 2",
+" c None",
+". c #202020",
+"+ c #0000FF",
+"@ c #09070C",
+"# c #08060B",
+"$ c #010004",
+"% c #07050A",
+"& c #030106",
+"* c #060409",
+"= c #040207",
+"- c #010005",
+"; c #05040C",
+"> c #000005",
+", c #000004",
+"' c #09090B",
+") c #000000",
+"! c #010101",
+"~ c #000002",
+"{ c #07060C",
+"] c #0D0C14",
+"^ c #000007",
+"/ c #20B2AE",
+"( c #004941",
+"_ c #007D71",
+": c #010002",
+"< c #050306",
+"[ c #0B090E",
+"} c #020003",
+"| c #050308",
+"1 c #0C0A0F",
+"2 c #09080E",
+"3 c #060606",
+"4 c #020200",
+"5 c #030301",
+"6 c #060604",
+"7 c #040404",
+"8 c #030207",
+"9 c #010006",
+"0 c #0B0A0F",
+"a c #070709",
+"b c #B60418",
+"c c #00EB00",
+"d c #283C38",
+"e c #050304",
+"f c #060407",
+"g c #A3A1A2",
+"h c #636164",
+"i c #333132",
+"j c #FCFAFD",
+"k c #727071",
+"l c #2A282B",
+"m c #DFDDDE",
+"n c #080607",
+"o c #030102",
+"p c #0A0809",
+"q c #C0BFBD",
+"r c #7B7A76",
+"s c #010000",
+"t c #070602",
+"u c #B7B6B4",
+"v c #424043",
+"w c #ABA9AE",
+"x c #A09EA3",
+"y c #F7F3FF",
+"z c #060405",
+"A c #767475",
+"B c #9D9B9C",
+"C c #5F5D5E",
+"D c #E0DEDF",
+"E c #A7A5A6",
+"F c #696768",
+"G c #ABA9AA",
+"H c #151314",
+"I c #2D2B2C",
+"J c #292728",
+"K c #252324",
+"L c #0B090A",
+"M c #3D3B3C",
+"N c #1D1B1E",
+"O c #121011",
+"P c #EAE9E5",
+"Q c #D0CFCA",
+"R c #080702",
+"S c #CAC9C5",
+"T c #413F40",
+"U c #838184",
+"V c #B9B7BC",
+"W c #050402",
+"X c #71E371",
+"Y c #010100",
+"Z c #2B2B29",
+"` c #DBDBD9",
+" . c #A3A3A1",
+".. c #888886",
+"+. c #D2D2D0",
+"@. c #969694",
+"#. c #80807E",
+"$. c #444442",
+"%. c #D5D5D3",
+"&. c #737371",
+"*. c #F2F2F0",
+"=. c #90908E",
+"-. c #BABABA",
+";. c #B0AEB1",
+">. c #040203",
+",. c #686765",
+"'. c #9D9C98",
+"). c #EAE9E4",
+"!. c #212119",
+"~. c #B9B8B4",
+"{. c #939192",
+"]. c #FFFEFF",
+"^. c #2F2D30",
+"/. c #090806",
+"(. c #0C0C0A",
+"_. c #FFFFFD",
+":. c #D7D7D5",
+"<. c #EDEDEB",
+"[. c #DFDFDD",
+"}. c #3E3E3C",
+"|. c #393937",
+"1. c #CACAC8",
+"2. c #B7B7B5",
+"3. c #454543",
+"4. c #3B3B3B",
+"5. c #BEBCBF",
+"6. c #B2B1AF",
+"7. c #767571",
+"8. c #A9A8A3",
+"9. c #75756D",
+"0. c #030200",
+"a. c #C2C1BD",
+"b. c #EDECEA",
+"c. c #A2A0A1",
+"d. c #7E7C7F",
+"e. c #050505",
+"f. c #BDBDBD",
+"g. c #F0F0F0",
+"h. c #B2B2B2",
+"i. c #FEFEFE",
+"j. c #444444",
+"k. c #B6B6B6",
+"l. c #020202",
+"m. c #C0C0C0",
+"n. c #3A3A3A",
+"o. c #464646",
+"p. c #BBB9BC",
+"q. c #1B191A",
+"r. c #E7E6E4",
+"s. c #C5C4C0",
+"t. c #C7C6C1",
+"u. c #D2D1CC",
+"v. c #C4C3BF",
+"w. c #4D4C4A",
+"x. c #141213",
+"y. c #DDDBDE",
+"z. c #151316",
+"A. c #0B0B0B",
+"B. c #090909",
+"C. c #8F8F8F",
+"D. c #AFAFAF",
+"E. c #7C7C7C",
+"F. c #D0D0D0",
+"G. c #3D3D3D",
+"H. c #C6C6C6",
+"I. c #BEBEBE",
+"J. c #3C3C3E",
+"K. c #C4C2C5",
+"L. c #666467",
+"M. c #959394",
+"N. c #E3E2DD",
+"O. c #23221E",
+"P. c #BDBCBA",
+"Q. c #383637",
+"R. c #080609",
+"S. c #7A787D",
+"T. c #949297",
+"U. c #040205",
+"V. c #060608",
+"W. c #19191B",
+"X. c #2A2A2C",
+"Y. c #0F0F11",
+"Z. c #303032",
+"`. c #0B0B0D",
+" + c #161618",
+".+ c #232325",
+"++ c #2E2E30",
+"@+ c #1A1A1C",
+"#+ c #171719",
+"$+ c #27262B",
+"%+ c #1F1E23",
+"&+ c #222222",
+"*+ c #030400",
+"=+ c #2C2D28",
+"-+ c #151513",
+";+ c #2E2E2C",
+">+ c #212123",
+",+ c #020106",
+"'+ c #111015",
+")+ c #3E3D42",
+"!+ c #C7C5C8",
+"~+ c #107D79",
+"{+ c #188A86",
+"]+ c #9C9AA8",
+"^+ c #9F9EAC",
+"/+ c #9C9EAB",
+"(+ c #9A9EA9",
+"_+ c #989CA8",
+":+ c #979BA7",
+"<+ c #989AA7",
+"[+ c #9799A6",
+"}+ c #9698A5",
+"|+ c #9695A3",
+"1+ c #9A99A9",
+"2+ c #9693A4",
+"3+ c #9390A1",
+"4+ c #918E9F",
+"5+ c #9491A2",
+"6+ c #9894A5",
+"7+ c #9897A5",
+"8+ c #9294A0",
+"9+ c #898B97",
+"0+ c #9799A5",
+"a+ c #8F919D",
+"b+ c #8E909C",
+"c+ c #8B8D99",
+"d+ c #848692",
+"e+ c #90929E",
+"f+ c #81838F",
+"g+ c #8D8F9B",
+"h+ c #868894",
+"i+ c #8B8B97",
+"j+ c #7E7E8A",
+"k+ c #8A8997",
+"l+ c #81818D",
+"m+ c #888894",
+"n+ c #81818B",
+"o+ c #82828E",
+"p+ c #82828C",
+"q+ c #80808A",
+"r+ c #7F7F89",
+"s+ c #7E7E88",
+"t+ c #A3A1AF",
+"u+ c #9A99A7",
+"v+ c #9D9FAB",
+"w+ c #9CA0A9",
+"x+ c #9B9FAA",
+"y+ c #999BA7",
+"z+ c #989AA6",
+"A+ c #9999A5",
+"B+ c #9896A4",
+"C+ c #9795A3",
+"D+ c #9694A2",
+"E+ c #9692A1",
+"F+ c #9593A1",
+"G+ c #9392A0",
+"H+ c #9193A0",
+"I+ c #90929F",
+"J+ c #8F919E",
+"K+ c #8E909D",
+"L+ c #8D8F9C",
+"M+ c #8C8E9B",
+"N+ c #8B8D9A",
+"O+ c #8A8C99",
+"P+ c #898B98",
+"Q+ c #8A8A96",
+"R+ c #8A8A94",
+"S+ c #898995",
+"T+ c #888892",
+"U+ c #878791",
+"V+ c #868690",
+"W+ c #86868E",
+"X+ c #84848E",
+"Y+ c #84848C",
+"Z+ c #83838B",
+"`+ c #82828A",
+" @ c #818189",
+".@ c #00FF00",
+"+@ c #04FA00",
+"@@ c #08F600",
+"#@ c #0DF200",
+"$@ c #11ED00",
+"%@ c #16E900",
+"&@ c #1AE500",
+"*@ c #1FE000",
+"=@ c #23DC00",
+"-@ c #28D800",
+";@ c #2CD300",
+">@ c #31CF00",
+",@ c #35CB00",
+"'@ c #3AC600",
+")@ c #3EC200",
+"!@ c #42BE00",
+"~@ c #47BA00",
+"{@ c #4BB500",
+"]@ c #50B100",
+"^@ c #54AD00",
+"/@ c #59A800",
+"(@ c #5DA400",
+"_@ c #62A000",
+":@ c #669B00",
+"<@ c #6B9700",
+"[@ c #6F9300",
+"}@ c #748E00",
+"|@ c #788A00",
+"1@ c #7D8600",
+"2@ c #818200",
+"3@ c #867D00",
+"4@ c #8A7900",
+"5@ c #8E7500",
+"6@ c #937000",
+"7@ c #976C00",
+"8@ c #9C6800",
+"9@ c #A06300",
+"0@ c #A55F00",
+"a@ c #A95B00",
+"b@ c #AE5600",
+"c@ c #B25200",
+"d@ c #B74E00",
+"e@ c #BB4900",
+"f@ c #C04500",
+"g@ c #C44100",
+"h@ c #C93C00",
+"i@ c #CD3800",
+"j@ c #D23400",
+"k@ c #D62F00",
+"l@ c #DB2B00",
+"m@ c #DF2700",
+"n@ c #E42200",
+"o@ c #E81E00",
+"p@ c #ED1A00",
+"q@ c #F11500",
+"r@ c #F61100",
+"s@ c #FA0D00",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + @ # $ % $ & * $ = * $ & $ $ - ; > , ' ) ) ! ~ > { ] ^ > , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+". . / / / . . . ( ( ( _ . _ / / / _ . _ / / / _ . _ ( ( ( _ . _ / / / _ . _ / / / _ . _ / / / _ . _ / / / _ . _ / / / _ . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + : $ < = : % : * : [ } | : 1 * > 2 ~ 3 4 5 6 7 8 9 > > 0 a + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+". / . . . / . ( . . . / . ( . . . / . ( . . . / . / . . . / . / . . . ( . / . . . ( . ( . . . / . / . . . / . / . . . / . . . . . . . . . . . . / . . . . . . + + . b b . + + . c c . + + . d d . + + + + + + + + + e f g h i j k l m : n : o : : $ @ p q r s t u v $ w x < s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+". / . . . / . ( . . . / . ( . . . / . ( . . . / . / . . . / . / . . . ( . / . . . ( . ( . . . / . / . . . / . / . . . / . . / . . . . / . . . . / . . . . . . + + b y b b + + c y c c + + d d d d + + + + + + + + + s z A B C D E F G H I J K L M N : O P Q R s S T U V : s W + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+". _ ( ( ( _ . . ( ( ( _ . _ / / / _ . . / / / _ . _ / / / _ . _ / / / _ . _ / / / _ . . ( ( ( _ . ( / / / ( . _ / / / _ . . _ . . . . _ . . . / . . . . . . . + + b b b b + + c c c c + + d d d d + + + . / ( X + + Y ) Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!.s ~.{.].^.} s /.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+". / . . . / . ( . . . / . / . . . ( . ( . . . / . ( . . . / . ( . . . / . / . . . / . ( . . . / . / . . . / . ( . . . / . . . . . . . . . . . / . . . . . . . + + . b b . + + . c c . + + . d d . + + + + + + + + + (.) 4 _.:.Z <.[.}.|.1.) 2.3.4.5.n 6.7.8.9.0.a.b.c.d.: n s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+". / . . . / . ( . . . / . / . . . ( . ( . . . / . ( . . . / . ( . . . / . / . . . / . ( . . . / . / . . . / . ( . . . / . . / . . . . / . . / . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + ) ) e.f.g.) h.i.3 j.k.l.m.n.o.p.q.r.s.t.u.s v.w.x.y.z.s s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+". . / / / . . . ( ( ( / . _ / / / _ . _ / / / _ . . ( ( ( _ . _ / / / _ . _ / / / _ . . ( ( ( _ . _ / / / _ . _ / / / _ . . _ . . . . _ . . / . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + A.B.! C.D.l.E.F.) G.H.B.I.G.J.K.L.M.0.s N.O.P.Q.R.S.T.U.p + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + ~ V.~ W.X.~ Y.Z.`. +.+~ ++@+#+$+%+&+6 *+=+-+;+>+,+'+)+Y.) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / . . . + + + ",
+". ( / / / ( . _ / / / . . _ / / / _ . _ / / / . . _ / / / _ . _ / / / _ . _ / / / _ . _ ( ( ( _ . . ( / ( . . . ( ( ( _ . _ ( ( ( _ . _ ( ( ( . . / ( ( ( / . _ / / / . . _ / / / _ . _ / / / _ . _ / / / _ . _ / / / _ . _ / / / _ . _ / / / _ . _ ( ( ( _ . _ ( ( ( _ . _ ( ( ( _ . _ ( ( ( _ . _ ( ( ( _ . _ / / / _ . . . _ _ . . . . . . . . . . . . . . + + + ",
+". / . . . / . / . . . / . / . . . ( . / . . . / . / . . . ( . / . . . ( . / . . . ( . / . . . / . ( . / . ( . ( . . . / . / . . . / . / . . . ( . / / . / / . / . . . / . / . . . / . / . . . / . / . . . / . / . . . / . / . . . ( . ( . / . ( . / . . . / . / . . . / . / . . . / . / . . . / . / . . . / . ( . . . / . . . _ _ . . . . . . . . ( / / / ( . + + + ",
+". / . . . / . / . . . / . / . . . ( . / . . . / . / . . . ( . / . . . ( . / . . . ( . / . . . / . ( . / . ( . ( . . . / . / . . / ( . / . . . ( . / . / . / . / . . . / . / . . . / . / . . . / . / . . . / . / . . . / . / . . . ( . ( . / . ( . / . . . / . / . . . / . / . . . / . ( / . / ( . / . . . / . ( . . / ( . _ _ _ _ _ _ _ _ _ _ _ _ / . . . / . + + + ",
+". _ / / / _ . _ / / / . . _ ( ( ( . . _ ( ( ( _ . _ / / / . . _ / / / . . _ ( / / _ . _ / / / _ . . ( / ( . . . ( ( ( _ . _ / / ( . . _ ( ( ( . . _ ( ( ( _ . _ ( ( ( _ . _ ( ( ( _ . _ / / / _ . _ / ( ( _ . _ / / / . . _ / / / _ . . ( _ ( . . _ ( ( ( _ . _ ( ( ( _ . _ ( ( ( _ . . ( / ( . . _ / / / _ . . ( / ( . . _ _ _ _ _ _ _ _ _ _ _ _ / . . . / . + + + ",
+". / . . . / . / . . . / . / . . . ( . / . . . / . / . . . ( . / . . . ( . / . . . / . / . . . / . ( . / . ( . ( . . . / . / . . / ( . / . . . ( . / . . . / . / . . . / . / . . . / . / . . . ( . / . / . / . / . . . / . ( . . . / . ( . / . ( . / . . . / . / . . . / . / . / . / . ( / . / ( . ( . . . / . ( / . . ( . . . _ _ . . . . . . . . _ / / / _ . + + + ",
+". / . . . / . / . . . / . / . . . ( . / . . . / . / . . . ( . / . . . ( . / . . . / . / . . . / . ( . / . ( . ( . . . / . / . . . / . / . . . ( . / . . . / . / . . . / . / . . . / . / . . . ( . / . . / / . / . . . / . ( . . . / . ( . / . ( . / . . . / . / . . . / . / / . / / . / . . . / . ( . . . / . / . . . ( . . . _ _ . . . . . . . . / . . . / . + + + ",
+". _ ( ( ( _ . _ / / / . . _ / / / _ . / / / / . . _ / / / _ . / ( ( ( . . _ / / / _ . _ ( ( ( _ . . ( / ( ( . _ / / / _ . _ ( ( ( _ . _ / / / ( . _ ( ( ( _ . / ( ( ( / . _ / / / _ . _ ( ( ( . . _ / / / _ . _ ( ( ( _ . _ / / / _ . . ( _ ( . . ( / / / / . . / / / . . / ( ( ( / . _ ( ( ( / _ _ / / / _ . _ / / / _ . . . . . . . . . . . . . _ . . . _ . + + + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + ",
+"+ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . !++ + + . + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + !+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!++ + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + !++ + + . + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + . . ( ( ( . . . ( ( ( . . . ( ( ( . . . ( ( ( . . . ( ( ( . . . ( ( ( . . . ( ( ( . . . ( ( ( . . . . + + . . . / / / / . . . ( ( ( ( ~+. ~+/ / / / {+. ~+/ / / / ~+. ~+( ( ( ( ~+. ~+/ / / / ~+. ~+/ / / / {+. ~+/ / / / ~+. ~+/ / / / {+. ~+/ / / / {+. . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . . . + + . . / . . . . / . ( . . . . / . ( . . . . / . ( . . . . / . / . . . . / . / . . . . ( . / . . . . ( . ( . . . . / . / . . . . / . / . . . . / . . / . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . . . + + . . / . . . . / . ( . . . . / . ( . . . . / . ( . . . . / . / . . . . / . / . . . . ( . / . . . . ( . ( . . . . / . / . . . . / . / . . . . / . . / . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + . . ( ( ( . . . ( ( ( . . . ( ( ( . . . ( ( ( . . . ( ( ( . . . ( ( ( . . . ( ( ( . . . ( ( ( . . . . + + . . / . . . . / . ( . . . . / . ( . . . . / . ( . . . . / . / . . . . / . / . . . . ( . / . . . . ( . ( . . . . / . / . . . . / . / . . . . / . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . . . + + . . ~+( ( ( ( ~+. . ( ( ( ( ~+. ~+/ / / / ~+. ~+/ / / / ~+. ~+/ / / / ~+. ~+/ / / / ~+. ~+/ / / / ~+. . ( ( ( ( ~+. ~+/ / / / ~+. ~+/ / / / ~+. . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . ( . . . ( . . . + + . . / . . . . / . ( . . . . / . / . . . . ( . ( . . . . / . ( . . . . / . ( . . . . / . / . . . . / . ( . . . . / . / . . . . / . ( . . . . / . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + . . ( ( ( . . . ( ( ( . . . ( ( ( . . . ( ( ( . . . ( ( ( . . . ( ( ( . . . ( ( ( . . . ( ( ( . . . . + + . . / . . . . / . ( . . . . / . / . . . . ( . ( . . . . / . ( . . . . / . ( . . . . / . / . . . . / . ( . . . . / . / . . . . / . ( . . . . / . . / . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + . . / . . . . / . ( . . . . / . / . . . . ( . ( . . . . / . ( . . . . / . ( . . . . / . / . . . . / . ( . . . . / . / . . . . / . ( . . . . / . . / . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + . . . / / / / . . . ( ( ( ( ~+. ~+/ / / / ~+. ~+/ / / / ~+. . ( ( ( ( ~+. ~+/ / / / ~+. ~+/ / / / ~+. . ( ( ( ( ~+. ~+/ / / / ~+. ~+/ / / / ~+. . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + . . . ]+^+/+(+_+:+<+<+[+}+|+1+2+3+4+5+6+2+7+8+9+0+9+a+b+c+8+d+e+f+c+g+h+d+i+j+k+l+i+m+j+n+o+p+n+q+r+s+ . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + . . . t+u+v+w+x+(+y+z+z+0+A+7+B+B+C+D+E+F+G+H+H+I+J+K+K+K+L+L+M+N+O+P+P+9+Q+R+S+T+T+U+V+W+X+Y+Z+`+ @ @ . . + + .@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@/@(@_@:@<@[@}@|@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@+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+"+ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . !++ + + . + + .@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@/@(@_@:@<@[@}@|@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@+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "};
--
2.7.4
--
To unsubscribe, send mail to [email protected].