diff -Nru sgt-puzzles-20140928.r10274/aclocal.m4 sgt-puzzles-20160429.b31155b/aclocal.m4 --- sgt-puzzles-20140928.r10274/aclocal.m4 2014-09-29 00:30:08.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/aclocal.m4 2016-04-29 00:30:12.000000000 +0000 @@ -1,8 +1,7 @@ -# generated automatically by aclocal 1.11.6 -*- Autoconf -*- +# generated automatically by aclocal 1.15 -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, -# Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -12,13 +11,14 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Configure paths for GTK+ # Owen Taylor 1997-2001 @@ -46,19 +46,8 @@ no_gtk="" - AC_PATH_PROG(PKG_CONFIG, pkg-config, no) - - if test x$PKG_CONFIG != xno ; then - if pkg-config --atleast-pkgconfig-version 0.7 ; then - : - else - echo "*** pkg-config too old; version 0.7 or better required." - no_gtk=yes - PKG_CONFIG=no - fi - else - no_gtk=yes - fi + AC_REQUIRE([PKG_PROG_PKG_CONFIG]) + PKG_PROG_PKG_CONFIG([0.7]) min_gtk_version=ifelse([$1], ,2.0.0,$1) AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version) @@ -217,25 +206,516 @@ rm -f conf.gtktest ]) -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software -# Foundation, Inc. +# Configure paths for GTK+ +# Owen Taylor 1997-2001 + +dnl AM_PATH_GTK_3_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) +dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES, +dnl pass to pkg-config +dnl +AC_DEFUN([AM_PATH_GTK_3_0], +[m4_warn([obsolete], [AM_PATH_GTK_3_0 is deprecated, use PKG_CHECK_MODULES([GTK], [gtk+-3.0]) instead]) +dnl Get the cflags and libraries from pkg-config +dnl +AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program], + , enable_gtktest=yes) + min_gtk_version=ifelse([$1], [], [3.0.0], [$1]) + + pkg_config_args="gtk+-3.0 >= $min_gtk_version" + for module in . $4 + do + case "$module" in + gthread) + pkg_config_args="$pkg_config_args gthread-2.0" + ;; + esac + done + + no_gtk="" + + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + + if test x$PKG_CONFIG != xno ; then + if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then + : + else + echo "*** pkg-config too old; version 0.7 or better required." + no_gtk=yes + PKG_CONFIG=no + fi + else + no_gtk=yes + fi + + AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version) + + if test x$PKG_CONFIG != xno ; then + ## don't try to run the test against uninstalled libtool libs + if $PKG_CONFIG --uninstalled $pkg_config_args; then + echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH" + enable_gtktest=no + fi + + if $PKG_CONFIG $pkg_config_args; then + : + else + no_gtk=yes + fi + fi + + if test x"$no_gtk" = x ; then + GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags` + GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs` + gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-3.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-3.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-3.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" +dnl +dnl Now check if the installed GTK+ is sufficiently new. (Also sanity +dnl checks the results of pkg-config to some extent) +dnl + rm -f conf.gtktest + AC_TRY_RUN([ +#include +#include +#include + +int +main () +{ + unsigned int major, minor, micro; + + fclose (fopen ("conf.gtktest", "w")); + + if (sscanf("$min_gtk_version", "%u.%u.%u", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'pkg-config --modversion gtk+-3.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If pkg-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); + printf("*** to point to the correct configuration files\n"); + } + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%u.%u.%u) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %u.%u.%u. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n"); + printf("*** correct copy of pkg-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} +],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$PKG_CONFIG" = "no" ; then + echo "*** A new enough version of pkg-config was not found." + echo "*** See http://pkgconfig.sourceforge.net" + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK+ test program, checking why..." + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + AC_TRY_LINK([ +#include +#include +], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK+ or finding the wrong" + echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(GTK_CFLAGS) + AC_SUBST(GTK_LIBS) + rm -f conf.gtktest +]) + +dnl GTK_CHECK_BACKEND(BACKEND-NAME [, MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl Tests for BACKEND-NAME in the GTK targets list +dnl +AC_DEFUN([GTK_CHECK_BACKEND], +[m4_warn([obsolete], [GTK_CHECK_BACKEND is deprecated, use PKG_CHECK_MODULES([GTK_X11], [gtk+-x11-3.0]) or similar instead]) + pkg_config_args=ifelse([$1],,gtk+-3.0, gtk+-$1-3.0) + min_gtk_version=ifelse([$2],,3.0.0,$2) + pkg_config_args="$pkg_config_args >= $min_gtk_version" + + AC_PATH_PROG(PKG_CONFIG, [pkg-config], [AC_MSG_ERROR([No pkg-config found])]) + + if $PKG_CONFIG $pkg_config_args ; then + target_found=yes + else + target_found=no + fi + + if test "x$target_found" = "xno"; then + ifelse([$4],,[AC_MSG_ERROR([Backend $backend not found.])],[$4]) + else + ifelse([$3],,[:],[$3]) + fi +]) + +dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +dnl serial 11 (pkg-config-0.29.1) +dnl +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29.1]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])dnl PKG_PROG_PKG_CONFIG + +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])dnl _PKG_CONFIG + +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])dnl _PKG_SHORT_ERRORS_SUPPORTED + + +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_INSTALLDIR + + +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR + +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 - # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.11' +[am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.6], [], +m4_if([$1], [1.15], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -251,24 +731,22 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.6])dnl +[AM_AUTOMAKE_VERSION([1.15])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 - # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and @@ -287,7 +765,7 @@ # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you +# harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, @@ -305,30 +783,26 @@ # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 9 - # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl @@ -347,16 +821,14 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, -# 2010, 2011 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 12 -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing @@ -366,7 +838,7 @@ # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was @@ -379,12 +851,13 @@ AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], @@ -392,8 +865,8 @@ # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're @@ -433,16 +906,16 @@ : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with `-c' and `-o' for the sake of the "dashmstdout" + # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -451,8 +924,8 @@ test "$am__universal" = false || continue ;; nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else @@ -460,7 +933,7 @@ fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has + # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -508,7 +981,7 @@ # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl @@ -518,9 +991,13 @@ # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' @@ -535,20 +1012,18 @@ # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -#serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files + # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in @@ -561,7 +1036,7 @@ # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but + # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. @@ -573,21 +1048,19 @@ continue fi # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. + # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue + test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` @@ -605,7 +1078,7 @@ # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will +# is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], @@ -615,18 +1088,21 @@ # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 16 - # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- @@ -639,7 +1115,7 @@ # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.62])dnl +[AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl @@ -668,33 +1144,42 @@ # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl @@ -703,34 +1188,82 @@ [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) -dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. @@ -752,21 +1285,18 @@ done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, -# Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 - # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then +if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; @@ -774,16 +1304,14 @@ install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi -AC_SUBST(install_sh)]) +AC_SUBST([install_sh])]) -# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 - # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], @@ -799,14 +1327,12 @@ # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 4 - # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. @@ -824,7 +1350,7 @@ _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. +# Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include @@ -851,15 +1377,12 @@ # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 6 - # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], @@ -867,11 +1390,10 @@ $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) - # AM_MISSING_HAS_RUN # ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl @@ -884,54 +1406,22 @@ esac fi # Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " else am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) + AC_MSG_WARN(['missing' script is too old or missing]) fi ]) -# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, -# Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# AM_PROG_MKDIR_P -# --------------- -# Check for `mkdir -p'. -AC_DEFUN([AM_PROG_MKDIR_P], -[AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) - # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software -# Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 5 - # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], @@ -941,7 +1431,7 @@ # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ @@ -955,24 +1445,82 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Check to make sure that the build environment is sane. -*- Autoconf -*- +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 -# Free Software Foundation, Inc. +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 5 +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -983,32 +1531,40 @@ esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac -# Do `set' in a subshell so we don't clobber the current shell's +# Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done test "$[2]" = conftest.file ) then @@ -1018,46 +1574,118 @@ AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi -AC_MSG_RESULT(yes)]) +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) -# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- -# One issue with vendor `install' (even GNU) is that you can't +# One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize +# always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. +# Copyright (C) 2006-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 3 - # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. @@ -1071,18 +1699,16 @@ # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 - # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory @@ -1092,76 +1718,114 @@ # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar +# AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. + +# We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi -done -rm -rf conftest.dir -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR diff -Nru sgt-puzzles-20140928.r10274/blackbox.R sgt-puzzles-20160429.b31155b/blackbox.R --- sgt-puzzles-20140928.r10274/blackbox.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/blackbox.R 2016-04-29 00:30:09.000000000 +0000 @@ -15,5 +15,5 @@ !end !begin >gamedesc.txt -blackbox:blackbox.exe:Black Box:Ball-finding puzzle +blackbox:blackbox.exe:Black Box:Ball-finding puzzle:Find the hidden balls in the box by bouncing laser beams off them. !end diff -Nru sgt-puzzles-20140928.r10274/bridges.c sgt-puzzles-20160429.b31155b/bridges.c --- sgt-puzzles-20140928.r10274/bridges.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/bridges.c 2016-04-29 00:30:09.000000000 +0000 @@ -78,7 +78,6 @@ /* Turn this on for hints about which lines are considered possibilities. */ #undef DRAW_GRID -#undef DRAW_DSF /* --- structures for params, state, etc. --- */ @@ -122,12 +121,8 @@ #define G_NOLINEH 0x0040 #define G_NOLINE (G_NOLINEV|G_NOLINEH) -/* flags used by the drawstate */ -#define G_ISSEL 0x0080 -#define G_REDRAW 0x0100 -#define G_FLASH 0x0200 -#define G_WARN 0x0400 -#define G_CURSOR 0x0800 +/* flags used by the error checker */ +#define G_WARN 0x0080 /* flags used by the solver etc. */ #define G_SWEEP 0x1000 @@ -161,7 +156,7 @@ struct game_state { int w, h, completed, solved, allowloops, maxb; - grid_type *grid, *scratch; + grid_type *grid; struct island *islands; int n_islands, n_islands_alloc; game_params params; /* used by the aux solver. */ @@ -180,7 +175,6 @@ #define INDEX(s,g,x,y) ((s)->g[(y)*((s)->w) + (x)]) #define IDX(s,g,i) ((s)->g[(i)]) #define GRID(s,x,y) INDEX(s,grid,x,y) -#define SCRATCH(s,x,y) INDEX(s,scratch,x,y) #define POSSIBLES(s,dx,x,y) ((dx) ? (INDEX(s,possh,x,y)) : (INDEX(s,possv,x,y))) #define MAXIMUM(s,dx,x,y) ((dx) ? (INDEX(s,maxh,x,y)) : (INDEX(s,maxv,x,y))) @@ -1056,95 +1050,84 @@ } } -static int grid_degree(game_state *state, int x, int y, int *nx_r, int *ny_r) +struct bridges_neighbour_ctx { + game_state *state; + int i, n, neighbours[4]; +}; +static int bridges_neighbour(int vertex, void *vctx) { - grid_type grid = SCRATCH(state, x, y), gline = grid & G_LINE; - struct island *is; - int x1, y1, x2, y2, c = 0, i, nx, ny; + struct bridges_neighbour_ctx *ctx = (struct bridges_neighbour_ctx *)vctx; + if (vertex >= 0) { + game_state *state = ctx->state; + int w = state->w, x = vertex % w, y = vertex / w; + grid_type grid = GRID(state, x, y), gline = grid & G_LINE; + struct island *is; + int x1, y1, x2, y2, i; - nx = ny = -1; /* placate optimiser */ - is = INDEX(state, gridi, x, y); - if (is) { - for (i = 0; i < is->adj.npoints; i++) { - gline = is->adj.points[i].dx ? G_LINEH : G_LINEV; - if (SCRATCH(state, - is->adj.points[i].x, - is->adj.points[i].y) & gline) { - nx = is->adj.points[i].x; - ny = is->adj.points[i].y; - c++; - } - } - } else if (gline) { - if (gline & G_LINEV) { - x1 = x2 = x; - y1 = y-1; y2 = y+1; - } else { - x1 = x-1; x2 = x+1; - y1 = y2 = y; + ctx->i = ctx->n = 0; + + is = INDEX(state, gridi, x, y); + if (is) { + for (i = 0; i < is->adj.npoints; i++) { + gline = is->adj.points[i].dx ? G_LINEH : G_LINEV; + if (GRID(state, is->adj.points[i].x, + is->adj.points[i].y) & gline) { + ctx->neighbours[ctx->n++] = + (is->adj.points[i].y * w + is->adj.points[i].x); + } + } + } else if (gline) { + if (gline & G_LINEV) { + x1 = x2 = x; + y1 = y-1; y2 = y+1; + } else { + x1 = x-1; x2 = x+1; + y1 = y2 = y; + } + /* Non-island squares with edges in should never be + * pointing off the edge of the grid. */ + assert(INGRID(state, x1, y1)); + assert(INGRID(state, x2, y2)); + if (GRID(state, x1, y1) & (gline | G_ISLAND)) + ctx->neighbours[ctx->n++] = y1 * w + x1; + if (GRID(state, x2, y2) & (gline | G_ISLAND)) + ctx->neighbours[ctx->n++] = y2 * w + x2; } - /* Non-island squares with edges in should never be pointing off the - * edge of the grid. */ - assert(INGRID(state, x1, y1)); - assert(INGRID(state, x2, y2)); - if (SCRATCH(state, x1, y1) & (gline | G_ISLAND)) { - nx = x1; ny = y1; c++; - } - if (SCRATCH(state, x2, y2) & (gline | G_ISLAND)) { - nx = x2; ny = y2; c++; - } - } - if (c == 1) { - assert(nx != -1 && ny != -1); /* paranoia */ - *nx_r = nx; *ny_r = ny; } - return c; + + if (ctx->i < ctx->n) + return ctx->neighbours[ctx->i++]; + else + return -1; } static int map_hasloops(game_state *state, int mark) { - int x, y, ox, oy, nx = 0, ny = 0, loop = 0; - - memcpy(state->scratch, state->grid, GRIDSZ(state)); - - /* This algorithm is actually broken; if there are two loops connected - * by bridges this will also highlight bridges. The correct algorithm - * uses a dsf and a two-pass edge-detection algorithm (see check_correct - * in slant.c); this is BALGE for now, especially since disallow-loops - * is not the default for this puzzle. If we want to fix this later then - * copy the alg in slant.c to the empty statement in map_group. */ + int x, y; + struct findloopstate *fls; + struct bridges_neighbour_ctx ctx; + int ret; + + fls = findloop_new_state(state->w * state->h); + ctx.state = state; + ret = findloop_run(fls, state->w * state->h, bridges_neighbour, &ctx); - /* Remove all 1-degree edges. */ - for (y = 0; y < state->h; y++) { - for (x = 0; x < state->w; x++) { - ox = x; oy = y; - while (grid_degree(state, ox, oy, &nx, &ny) == 1) { - /*debug(("hasloops: removing 1-degree at (%d,%d).\n", ox, oy));*/ - SCRATCH(state, ox, oy) &= ~(G_LINE|G_ISLAND); - ox = nx; oy = ny; - } - } - } - /* Mark any remaining edges as G_WARN, if required. */ - for (x = 0; x < state->w; x++) { + if (mark) { for (y = 0; y < state->h; y++) { - if (GRID(state,x,y) & G_ISLAND) continue; + for (x = 0; x < state->w; x++) { + int u, v; - if (SCRATCH(state, x, y) & G_LINE) { - if (mark) { - /*debug(("hasloops: marking loop square at (%d,%d).\n", - x, y));*/ - GRID(state,x,y) |= G_WARN; - loop = 1; - } else - return 1; /* short-cut as soon as we find one */ - } else { - if (mark) - GRID(state,x,y) &= ~G_WARN; + u = y * state->w + x; + for (v = bridges_neighbour(u, &ctx); v >= 0; + v = bridges_neighbour(-1, &ctx)) + if (findloop_is_loop_edge(fls, u, v)) + GRID(state,x,y) |= G_WARN; } } } - return loop; + + findloop_free_state(fls); + return ret; } static void map_group(game_state *state) @@ -1748,8 +1731,6 @@ ret->grid = snewn(wh, grid_type); memset(ret->grid, 0, GRIDSZ(ret)); - ret->scratch = snewn(wh, grid_type); - memset(ret->scratch, 0, GRIDSZ(ret)); ret->wha = snewn(wh*N_WH_ARRAYS, char); memset(ret->wha, 0, wh*N_WH_ARRAYS*sizeof(char)); @@ -1794,8 +1775,6 @@ ret->grid = snewn(wh, grid_type); memcpy(ret->grid, state->grid, GRIDSZ(ret)); - ret->scratch = snewn(wh, grid_type); - memcpy(ret->scratch, state->scratch, GRIDSZ(ret)); ret->wha = snewn(wh*N_WH_ARRAYS, char); memcpy(ret->wha, state->wha, wh*N_WH_ARRAYS*sizeof(char)); @@ -1835,7 +1814,6 @@ sfree(state->wha); - sfree(state->scratch); sfree(state->grid); sfree(state); } @@ -2034,7 +2012,7 @@ else if (!*desc) return "Game description shorter than expected"; else - return "Game description containers unexpected character"; + return "Game description contains unexpected character"; desc++; } if (*desc || i > wh) @@ -2152,12 +2130,89 @@ struct game_drawstate { int tilesize; int w, h; - grid_type *grid; + unsigned long *grid, *newgrid; int *lv, *lh; int started, dragging; - int show_hints; }; +/* + * The contents of ds->grid are complicated, because of the circular + * islands which overlap their own grid square into neighbouring + * squares. An island square can contain pieces of the bridges in all + * directions, and conversely a bridge square can be intruded on by + * islands from any direction. + * + * So we define one group of flags describing what's important about + * an island, and another describing a bridge. Island squares' entries + * in ds->grid contain one of the former and four of the latter; bridge + * squares, four of the former and _two_ of the latter - because a + * horizontal and vertical 'bridge' can cross, when one of them is a + * 'no bridge here' pencil mark. + * + * Bridge flags need to indicate 0-4 actual bridges (3 bits), a 'no + * bridge' row of crosses, or a grey hint line; that's 7 + * possibilities, so 3 bits suffice. But then we also need to vary the + * colours: the bridges can turn COL_WARNING if they're part of a loop + * in no-loops mode, COL_HIGHLIGHT during a victory flash, or + * COL_SELECTED if they're the bridge the user is currently dragging, + * so that's 2 more bits for foreground colour. Also bridges can be + * backed by COL_MARK if they're locked by the user, so that's one + * more bit, making 6 bits per bridge direction. + * + * Island flags omit the actual island clue (it never changes during + * the game, so doesn't have to be stored in ds->grid to check against + * the previous version), so they just need to include 2 bits for + * foreground colour (an island can be normal, COL_HIGHLIGHT during + * victory, COL_WARNING if its clue is unsatisfiable, or COL_SELECTED + * if it's part of the user's drag) and 2 bits for background (normal, + * COL_MARK for a locked island, COL_CURSOR for the keyboard cursor). + * That's 4 bits per island direction. We must also indicate whether + * no island is present at all (in the case where the island is + * potentially intruding into the side of a line square), which we do + * using the unused 4th value of the background field. + * + * So an island square needs 4 + 4*6 = 28 bits, while a bridge square + * needs 4*4 + 2*6 = 28 bits too. Both only just fit in 32 bits, which + * is handy, because otherwise we'd have to faff around forever with + * little structs! + */ +/* Flags for line data */ +#define DL_COUNTMASK 0x07 +#define DL_COUNT_CROSS 0x06 +#define DL_COUNT_HINT 0x07 +#define DL_COLMASK 0x18 +#define DL_COL_NORMAL 0x00 +#define DL_COL_WARNING 0x08 +#define DL_COL_FLASH 0x10 +#define DL_COL_SELECTED 0x18 +#define DL_LOCK 0x20 +#define DL_MASK 0x3F +/* Flags for island data */ +#define DI_COLMASK 0x03 +#define DI_COL_NORMAL 0x00 +#define DI_COL_FLASH 0x01 +#define DI_COL_WARNING 0x02 +#define DI_COL_SELECTED 0x03 +#define DI_BGMASK 0x0C +#define DI_BG_NO_ISLAND 0x00 +#define DI_BG_NORMAL 0x04 +#define DI_BG_MARK 0x08 +#define DI_BG_CURSOR 0x0C +#define DI_MASK 0x0F +/* Shift counts for the format of a 32-bit word in an island square */ +#define D_I_ISLAND_SHIFT 0 +#define D_I_LINE_SHIFT_L 4 +#define D_I_LINE_SHIFT_R 10 +#define D_I_LINE_SHIFT_U 16 +#define D_I_LINE_SHIFT_D 24 +/* Shift counts for the format of a 32-bit word in a line square */ +#define D_L_ISLAND_SHIFT_L 0 +#define D_L_ISLAND_SHIFT_R 4 +#define D_L_ISLAND_SHIFT_U 8 +#define D_L_ISLAND_SHIFT_D 12 +#define D_L_LINE_SHIFT_H 16 +#define D_L_LINE_SHIFT_V 22 + static char *update_drag_dst(const game_state *state, game_ui *ui, const game_drawstate *ds, int nx, int ny) { @@ -2261,18 +2316,22 @@ int gx = FROMCOORD(x), gy = FROMCOORD(y); char buf[80], *ret; grid_type ggrid = INGRID(state,gx,gy) ? GRID(state,gx,gy) : 0; + int shift = button & MOD_SHFT, control = button & MOD_CTRL; + button &= ~MOD_MASK; if (button == LEFT_BUTTON || button == RIGHT_BUTTON) { if (!INGRID(state, gx, gy)) return NULL; ui->cur_visible = 0; - if ((ggrid & G_ISLAND) && !(ggrid & G_MARK)) { + if (ggrid & G_ISLAND) { ui->dragx_src = gx; ui->dragy_src = gy; return ""; } else return ui_cancel_drag(ui); } else if (button == LEFT_DRAG || button == RIGHT_DRAG) { - if (gx != ui->dragx_src || gy != ui->dragy_src) { + if (INGRID(state, ui->dragx_src, ui->dragy_src) + && (gx != ui->dragx_src || gy != ui->dragy_src) + && !(GRID(state,ui->dragx_src,ui->dragy_src) & G_MARK)) { ui->dragging = 1; ui->drag_is_noline = (button == RIGHT_DRAG) ? 1 : 0; return update_drag_dst(state, ui, ds, x, y); @@ -2286,6 +2345,10 @@ if (ui->dragging) { return finish_drag(state, ui); } else { + if (!INGRID(state, ui->dragx_src, ui->dragy_src) + || gx != ui->dragx_src || gy != ui->dragy_src) { + return ui_cancel_drag(ui); + } ui_cancel_drag(ui); if (!INGRID(state, gx, gy)) return NULL; if (!(GRID(state, gx, gy) & G_ISLAND)) return NULL; @@ -2300,10 +2363,18 @@ return ret; } else if (IS_CURSOR_MOVE(button)) { ui->cur_visible = 1; + if (control || shift) { + ui->dragx_src = ui->cur_x; + ui->dragy_src = ui->cur_y; + ui->dragging = TRUE; + ui->drag_is_noline = !control; + } if (ui->dragging) { int nx = ui->cur_x, ny = ui->cur_y; move_cursor(button, &nx, &ny, state->w, state->h, 0); + if (nx == ui->cur_x && ny == ui->cur_y) + return NULL; update_drag_dst(state, ui, ds, COORD(nx)+TILE_SIZE/2, COORD(ny)+TILE_SIZE/2); @@ -2367,7 +2438,7 @@ ui->cur_visible = 1; return ""; } - if (ui->dragging) { + if (ui->dragging || button == CURSOR_SELECT2) { ui_cancel_drag(ui); if (ui->dragx_dst == -1 && ui->dragy_dst == -1) { sprintf(buf, "M%d,%d", ui->cur_x, ui->cur_y); @@ -2385,6 +2456,51 @@ return ""; } } + } else if ((button >= '0' && button <= '9') || + (button >= 'a' && button <= 'f') || + (button >= 'A' && button <= 'F')) { + /* jump to island with .count == number closest to cur_{x,y} */ + int best_x = -1, best_y = -1, best_sqdist = -1, number = -1, i; + + if (button >= '0' && button <= '9') + number = (button == '0' ? 16 : button - '0'); + else if (button >= 'a' && button <= 'f') + number = 10 + button - 'a'; + else if (button >= 'A' && button <= 'F') + number = 10 + button - 'A'; + + if (!ui->cur_visible) { + ui->cur_visible = 1; + return ""; + } + + for (i = 0; i < state->n_islands; ++i) { + int x = state->islands[i].x, y = state->islands[i].y; + int dx = x - ui->cur_x, dy = y - ui->cur_y; + int sqdist = dx*dx + dy*dy; + + if (state->islands[i].count != number) + continue; + if (x == ui->cur_x && y == ui->cur_y) + continue; + + /* new_game() reads the islands in row-major order, so by + * breaking ties in favor of `first in state->islands' we + * also break ties by `lexicographically smallest (y, x)'. + * Thus, there's a stable pattern to how ties are broken + * which the user can learn and use to navigate faster. */ + if (best_sqdist == -1 || sqdist < best_sqdist) { + best_x = x; + best_y = y; + best_sqdist = sqdist; + } + } + if (best_x != -1 && best_y != -1) { + ui->cur_x = best_x; + ui->cur_y = best_y; + return ""; + } else + return NULL; } else if (button == 'g' || button == 'G') { ui->show_hints = 1 - ui->show_hints; return ""; @@ -2543,18 +2659,21 @@ { struct game_drawstate *ds = snew(struct game_drawstate); int wh = state->w*state->h; + int i; ds->tilesize = 0; ds->w = state->w; ds->h = state->h; ds->started = 0; - ds->grid = snewn(wh, grid_type); - memset(ds->grid, -1, wh*sizeof(grid_type)); + ds->dragging = 0; + ds->grid = snewn(wh, unsigned long); + for (i = 0; i < wh; i++) + ds->grid[i] = ~0UL; + ds->newgrid = snewn(wh, unsigned long); ds->lv = snewn(wh, int); ds->lh = snewn(wh, int); memset(ds->lv, 0, wh*sizeof(int)); memset(ds->lh, 0, wh*sizeof(int)); - ds->show_hints = 0; return ds; } @@ -2563,6 +2682,7 @@ { sfree(ds->lv); sfree(ds->lh); + sfree(ds->newgrid); sfree(ds->grid); sfree(ds); } @@ -2572,40 +2692,6 @@ #define OFFSET(thing) ((TILE_SIZE/2) - ((thing)/2)) -static void lines_vert(drawing *dr, game_drawstate *ds, - int ox, int oy, int lv, int col, grid_type v) -{ - int lw = LINE_WIDTH, gw = LINE_WIDTH, bw, i, loff; - while ((bw = lw * lv + gw * (lv+1)) > TILE_SIZE) - gw--; - loff = OFFSET(bw); - if (v & G_MARKV) - draw_rect(dr, ox + loff, oy, bw, TILE_SIZE, COL_MARK); - for (i = 0; i < lv; i++, loff += lw + gw) - draw_rect(dr, ox + loff + gw, oy, lw, TILE_SIZE, col); -} - -static void lines_horiz(drawing *dr, game_drawstate *ds, - int ox, int oy, int lh, int col, grid_type v) -{ - int lw = LINE_WIDTH, gw = LINE_WIDTH, bw, i, loff; - while ((bw = lw * lh + gw * (lh+1)) > TILE_SIZE) - gw--; - loff = OFFSET(bw); - if (v & G_MARKH) - draw_rect(dr, ox, oy + loff, TILE_SIZE, bw, COL_MARK); - for (i = 0; i < lh; i++, loff += lw + gw) - draw_rect(dr, ox, oy + loff + gw, TILE_SIZE, lw, col); -} - -static void line_cross(drawing *dr, game_drawstate *ds, - int ox, int oy, int col, grid_type v) -{ - int off = TS8(2); - draw_line(dr, ox, oy, ox+off, oy+off, col); - draw_line(dr, ox+off, oy, ox, oy+off, col); -} - static int between_island(const game_state *state, int sx, int sy, int dx, int dy) { @@ -2641,107 +2727,220 @@ *lv_r = lv; *lh_r = lh; } -static void dsf_debug_draw(drawing *dr, - const game_state *state, game_drawstate *ds, - int x, int y) -{ -#ifdef DRAW_DSF - int ts = TILE_SIZE/2; - int ox = COORD(x) + ts/2, oy = COORD(y) + ts/2; - char str[32]; - - sprintf(str, "%d", dsf_canonify(state->solver->dsf, DINDEX(x,y))); - draw_text(dr, ox, oy, FONT_VARIABLE, ts, - ALIGN_VCENTRE | ALIGN_HCENTRE, COL_WARNING, str); -#endif +static void draw_cross(drawing *dr, game_drawstate *ds, + int ox, int oy, int col) +{ + int off = TS8(2); + draw_line(dr, ox, oy, ox+off, oy+off, col); + draw_line(dr, ox+off, oy, ox, oy+off, col); } -static void lines_redraw(drawing *dr, const game_state *state, - game_drawstate *ds, const game_ui *ui, - int x, int y, grid_type v, int lv, int lh) +static void draw_general_line(drawing *dr, game_drawstate *ds, + int ox, int oy, int fx, int fy, int ax, int ay, + int len, unsigned long ldata, int which) +{ + /* + * Draw one direction of lines in a square. To permit the same + * code to handle horizontal and vertical lines, fx,fy are the + * 'forward' direction (along the lines) and ax,ay are the + * 'across' direction. + * + * We draw the white background for a locked bridge if (which & + * 1), and draw the bridges themselves if (which & 2). This + * permits us to get two overlapping locked bridges right without + * one of them erasing part of the other. + */ + int fg; + + fg = ((ldata & DL_COUNTMASK) == DL_COUNT_HINT ? COL_HINT : + (ldata & DL_COLMASK) == DL_COL_SELECTED ? COL_SELECTED : + (ldata & DL_COLMASK) == DL_COL_FLASH ? COL_HIGHLIGHT : + (ldata & DL_COLMASK) == DL_COL_WARNING ? COL_WARNING : + COL_FOREGROUND); + + if ((ldata & DL_COUNTMASK) == DL_COUNT_CROSS) { + draw_cross(dr, ds, + ox + TS8(1)*fx + TS8(3)*ax, + oy + TS8(1)*fy + TS8(3)*ay, fg); + draw_cross(dr, ds, + ox + TS8(5)*fx + TS8(3)*ax, + oy + TS8(5)*fy + TS8(3)*ay, fg); + } else if ((ldata & DL_COUNTMASK) != 0) { + int lh, lw, gw, bw, i, loff; + + lh = (ldata & DL_COUNTMASK); + if (lh == DL_COUNT_HINT) + lh = 1; + + lw = gw = LINE_WIDTH; + while ((bw = lw * lh + gw * (lh+1)) > TILE_SIZE) + gw--; + + loff = OFFSET(bw); + + if (which & 1) { + if ((ldata & DL_LOCK) && fg != COL_HINT) + draw_rect(dr, ox + loff*ax, oy + loff*ay, + len*fx+bw*ax, len*fy+bw*ay, COL_MARK); + } + if (which & 2) { + for (i = 0; i < lh; i++, loff += lw + gw) + draw_rect(dr, ox + (loff+gw)*ax, oy + (loff+gw)*ay, + len*fx+lw*ax, len*fy+lw*ay, fg); + } + } +} + +static void draw_hline(drawing *dr, game_drawstate *ds, + int ox, int oy, int w, unsigned long vdata, int which) { - int ox = COORD(x), oy = COORD(y); - int vcol = (v & G_FLASH) ? COL_HIGHLIGHT : - (v & G_WARN) ? COL_WARNING : COL_FOREGROUND, hcol = vcol; - grid_type todraw = v & G_NOLINE; - - if (v & G_ISSEL) { - if (ui->todraw & G_FLAGSH) hcol = COL_SELECTED; - if (ui->todraw & G_FLAGSV) vcol = COL_SELECTED; - todraw |= ui->todraw; - } + draw_general_line(dr, ds, ox, oy, 1, 0, 0, 1, w, vdata, which); +} - draw_rect(dr, ox, oy, TILE_SIZE, TILE_SIZE, COL_BACKGROUND); - /*if (v & G_CURSOR) - draw_rect(dr, ox+TILE_SIZE/4, oy+TILE_SIZE/4, - TILE_SIZE/2, TILE_SIZE/2, COL_CURSOR);*/ +static void draw_vline(drawing *dr, game_drawstate *ds, + int ox, int oy, int h, unsigned long vdata, int which) +{ + draw_general_line(dr, ds, ox, oy, 0, 1, 1, 0, h, vdata, which); +} +#define ISLAND_RADIUS ((TILE_SIZE*12)/20) +#define ISLAND_NUMSIZE(clue) \ + (((clue) < 10) ? (TILE_SIZE*7)/10 : (TILE_SIZE*5)/10) - if (ui->show_hints) { - if (between_island(state, x, y, 0, 1) && !(v & G_LINEV)) - vcol = COL_HINT; - if (between_island(state, x, y, 1, 0) && !(v & G_LINEH)) - hcol = COL_HINT; +static void draw_island(drawing *dr, game_drawstate *ds, + int ox, int oy, int clue, unsigned long idata) +{ + int half, orad, irad, fg, bg; + + if ((idata & DI_BGMASK) == DI_BG_NO_ISLAND) + return; + + half = TILE_SIZE/2; + orad = ISLAND_RADIUS; + irad = orad - LINE_WIDTH; + fg = ((idata & DI_COLMASK) == DI_COL_SELECTED ? COL_SELECTED : + (idata & DI_COLMASK) == DI_COL_WARNING ? COL_WARNING : + (idata & DI_COLMASK) == DI_COL_FLASH ? COL_HIGHLIGHT : + COL_FOREGROUND); + bg = ((idata & DI_BGMASK) == DI_BG_CURSOR ? COL_CURSOR : + (idata & DI_BGMASK) == DI_BG_MARK ? COL_MARK : + COL_BACKGROUND); + + /* draw a thick circle */ + draw_circle(dr, ox+half, oy+half, orad, fg, fg); + draw_circle(dr, ox+half, oy+half, irad, bg, bg); + + if (clue > 0) { + char str[32]; + int textcolour = (fg == COL_SELECTED ? COL_FOREGROUND : fg); + sprintf(str, "%d", clue); + draw_text(dr, ox+half, oy+half, FONT_VARIABLE, ISLAND_NUMSIZE(clue), + ALIGN_VCENTRE | ALIGN_HCENTRE, textcolour, str); } -#ifdef DRAW_GRID - draw_rect_outline(dr, ox, oy, TILE_SIZE, TILE_SIZE, COL_GRID); -#endif +} + +static void draw_island_tile(drawing *dr, game_drawstate *ds, + int x, int y, int clue, unsigned long data) +{ + int ox = COORD(x), oy = COORD(y); + int which; + + clip(dr, ox, oy, TILE_SIZE, TILE_SIZE); + draw_rect(dr, ox, oy, TILE_SIZE, TILE_SIZE, COL_BACKGROUND); - if (todraw & G_NOLINEV) { - line_cross(dr, ds, ox + TS8(3), oy + TS8(1), vcol, todraw); - line_cross(dr, ds, ox + TS8(3), oy + TS8(5), vcol, todraw); - } - if (todraw & G_NOLINEH) { - line_cross(dr, ds, ox + TS8(1), oy + TS8(3), hcol, todraw); - line_cross(dr, ds, ox + TS8(5), oy + TS8(3), hcol, todraw); - } - /* if we're drawing a real line and a hint, make sure we draw the real - * line on top. */ - if (lv && vcol == COL_HINT) lines_vert(dr, ds, ox, oy, lv, vcol, v); - if (lh) lines_horiz(dr, ds, ox, oy, lh, hcol, v); - if (lv && vcol != COL_HINT) lines_vert(dr, ds, ox, oy, lv, vcol, v); + /* + * Because of the possibility of incoming bridges just about + * meeting at one corner, we must split the line-drawing into + * background and foreground segments. + */ + for (which = 1; which <= 2; which <<= 1) { + draw_hline(dr, ds, ox, oy, TILE_SIZE/2, + (data >> D_I_LINE_SHIFT_L) & DL_MASK, which); + draw_hline(dr, ds, ox + TILE_SIZE - TILE_SIZE/2, oy, TILE_SIZE/2, + (data >> D_I_LINE_SHIFT_R) & DL_MASK, which); + draw_vline(dr, ds, ox, oy, TILE_SIZE/2, + (data >> D_I_LINE_SHIFT_U) & DL_MASK, which); + draw_vline(dr, ds, ox, oy + TILE_SIZE - TILE_SIZE/2, TILE_SIZE/2, + (data >> D_I_LINE_SHIFT_D) & DL_MASK, which); + } + draw_island(dr, ds, ox, oy, clue, (data >> D_I_ISLAND_SHIFT) & DI_MASK); - dsf_debug_draw(dr, state, ds, x, y); + unclip(dr); draw_update(dr, ox, oy, TILE_SIZE, TILE_SIZE); } -#define ISLAND_RADIUS ((TILE_SIZE*12)/20) -#define ISLAND_NUMSIZE(is) \ - (((is)->count < 10) ? (TILE_SIZE*7)/10 : (TILE_SIZE*5)/10) +static void draw_line_tile(drawing *dr, game_drawstate *ds, + int x, int y, unsigned long data) +{ + int ox = COORD(x), oy = COORD(y); + unsigned long hdata, vdata; -static void island_redraw(drawing *dr, - const game_state *state, game_drawstate *ds, - struct island *is, grid_type v) -{ - /* These overlap the edges of their squares, which is why they're drawn later. - * We know they can't overlap each other because they're not allowed within 2 - * squares of each other. */ - int half = TILE_SIZE/2; - int ox = COORD(is->x) + half, oy = COORD(is->y) + half; - int orad = ISLAND_RADIUS, irad = orad - LINE_WIDTH; - int updatesz = orad*2+1; - int tcol = (v & G_FLASH) ? COL_HIGHLIGHT : - (v & G_WARN) ? COL_WARNING : COL_FOREGROUND; - int col = (v & G_ISSEL) ? COL_SELECTED : tcol; - int bg = (v & G_CURSOR) ? COL_CURSOR : - (v & G_MARK) ? COL_MARK : COL_BACKGROUND; - char str[32]; + clip(dr, ox, oy, TILE_SIZE, TILE_SIZE); + draw_rect(dr, ox, oy, TILE_SIZE, TILE_SIZE, COL_BACKGROUND); -#ifdef DRAW_GRID - draw_rect_outline(dr, COORD(is->x), COORD(is->y), - TILE_SIZE, TILE_SIZE, COL_GRID); -#endif + /* + * We have to think about which of the horizontal and vertical + * line to draw first, if both exist. + * + * The rule is that hint lines are drawn at the bottom, then + * NOLINE crosses, then actual bridges. The enumeration in the + * DL_COUNTMASK field is set up so that this drops out of a + * straight comparison between the two. + * + * Since lines crossing in this type of square cannot both be + * actual bridges, there's no need to pass a nontrivial 'which' + * parameter to draw_[hv]line. + */ + hdata = (data >> D_L_LINE_SHIFT_H) & DL_MASK; + vdata = (data >> D_L_LINE_SHIFT_V) & DL_MASK; + if ((hdata & DL_COUNTMASK) > (vdata & DL_COUNTMASK)) { + draw_hline(dr, ds, ox, oy, TILE_SIZE, hdata, 3); + draw_vline(dr, ds, ox, oy, TILE_SIZE, vdata, 3); + } else { + draw_vline(dr, ds, ox, oy, TILE_SIZE, vdata, 3); + draw_hline(dr, ds, ox, oy, TILE_SIZE, hdata, 3); + } - /* draw a thick circle */ - draw_circle(dr, ox, oy, orad, col, col); - draw_circle(dr, ox, oy, irad, bg, bg); + /* + * The islands drawn at the edges of a line tile don't need clue + * numbers. + */ + draw_island(dr, ds, ox - TILE_SIZE, oy, -1, + (data >> D_L_ISLAND_SHIFT_L) & DI_MASK); + draw_island(dr, ds, ox + TILE_SIZE, oy, -1, + (data >> D_L_ISLAND_SHIFT_R) & DI_MASK); + draw_island(dr, ds, ox, oy - TILE_SIZE, -1, + (data >> D_L_ISLAND_SHIFT_U) & DI_MASK); + draw_island(dr, ds, ox, oy + TILE_SIZE, -1, + (data >> D_L_ISLAND_SHIFT_D) & DI_MASK); + + unclip(dr); + draw_update(dr, ox, oy, TILE_SIZE, TILE_SIZE); +} + +static void draw_edge_tile(drawing *dr, game_drawstate *ds, + int x, int y, int dx, int dy, unsigned long data) +{ + int ox = COORD(x), oy = COORD(y); + int cx = ox, cy = oy, cw = TILE_SIZE, ch = TILE_SIZE; - sprintf(str, "%d", is->count); - draw_text(dr, ox, oy, FONT_VARIABLE, ISLAND_NUMSIZE(is), - ALIGN_VCENTRE | ALIGN_HCENTRE, tcol, str); + if (dy) { + if (dy > 0) + cy += TILE_SIZE/2; + ch -= TILE_SIZE/2; + } else { + if (dx > 0) + cx += TILE_SIZE/2; + cw -= TILE_SIZE/2; + } + clip(dr, cx, cy, cw, ch); + draw_rect(dr, cx, cy, cw, ch, COL_BACKGROUND); - dsf_debug_draw(dr, state, ds, is->x, is->y); - draw_update(dr, ox - orad, oy - orad, updatesz, updatesz); + draw_island(dr, ds, ox + TILE_SIZE*dx, oy + TILE_SIZE*dy, -1, + (data >> D_I_ISLAND_SHIFT) & DI_MASK); + + unclip(dr); + draw_update(dr, cx, cy, cw, ch); } static void game_redraw(drawing *dr, game_drawstate *ds, @@ -2749,13 +2948,13 @@ int dir, const game_ui *ui, float animtime, float flashtime) { - int x, y, force = 0, i, j, redraw, lv, lh; - grid_type v, dsv, flash = 0; + int x, y, lv, lh; + grid_type v, flash = 0; struct island *is, *is_drag_src = NULL, *is_drag_dst = NULL; if (flashtime) { int f = (int)(flashtime * 5 / FLASH_TIME); - if (f == 1 || f == 3) flash = G_FLASH; + if (f == 1 || f == 3) flash = TRUE; } /* Clear screen, if required. */ @@ -2773,7 +2972,6 @@ TILE_SIZE * ds->w + 2 * BORDER, TILE_SIZE * ds->h + 2 * BORDER); ds->started = 1; - force = 1; } if (ui->dragx_src != -1 && ui->dragy_src != -1) { @@ -2787,69 +2985,145 @@ } else ds->dragging = 0; - if (ui->show_hints != ds->show_hints) { - force = 1; - ds->show_hints = ui->show_hints; - } + /* + * Set up ds->newgrid with the current grid contents. + */ + for (x = 0; x < ds->w; x++) + for (y = 0; y < ds->h; y++) + INDEX(ds,newgrid,x,y) = 0; - /* Draw all lines (and hints, if we want), but *not* islands. */ for (x = 0; x < ds->w; x++) { for (y = 0; y < ds->h; y++) { - v = GRID(state, x, y) | flash; - dsv = GRID(ds,x,y) & ~G_REDRAW; + v = GRID(state, x, y); - if (v & G_ISLAND) continue; + if (v & G_ISLAND) { + /* + * An island square. Compute the drawing data for the + * island, and put it in this square and surrounding + * squares. + */ + unsigned long idata = 0; + + is = INDEX(state, gridi, x, y); + + if (flash) + idata |= DI_COL_FLASH; + if (is_drag_src && (is == is_drag_src || + (is_drag_dst && is == is_drag_dst))) + idata |= DI_COL_SELECTED; + else if (island_impossible(is, v & G_MARK) || (v & G_WARN)) + idata |= DI_COL_WARNING; + else + idata |= DI_COL_NORMAL; - if (is_drag_dst) { - if (WITHIN(x,is_drag_src->x, is_drag_dst->x) && - WITHIN(y,is_drag_src->y, is_drag_dst->y)) - v |= G_ISSEL; - } - lines_lvlh(state, ui, x, y, v, &lv, &lh); - - /*if (ui->cur_visible && ui->cur_x == x && ui->cur_y == y) - v |= G_CURSOR;*/ - - if (v != dsv || - lv != INDEX(ds,lv,x,y) || - lh != INDEX(ds,lh,x,y) || - force) { - GRID(ds, x, y) = v | G_REDRAW; - INDEX(ds,lv,x,y) = lv; - INDEX(ds,lh,x,y) = lh; - lines_redraw(dr, state, ds, ui, x, y, v, lv, lh); - } else - GRID(ds,x,y) &= ~G_REDRAW; - } - } + if (ui->cur_visible && + ui->cur_x == is->x && ui->cur_y == is->y) + idata |= DI_BG_CURSOR; + else if (v & G_MARK) + idata |= DI_BG_MARK; + else + idata |= DI_BG_NORMAL; - /* Draw islands. */ - for (i = 0; i < state->n_islands; i++) { - is = &state->islands[i]; - v = GRID(state, is->x, is->y) | flash; + INDEX(ds,newgrid,x,y) |= idata << D_I_ISLAND_SHIFT; + if (x > 0 && !(GRID(state,x-1,y) & G_ISLAND)) + INDEX(ds,newgrid,x-1,y) |= idata << D_L_ISLAND_SHIFT_R; + if (x+1 < state->w && !(GRID(state,x+1,y) & G_ISLAND)) + INDEX(ds,newgrid,x+1,y) |= idata << D_L_ISLAND_SHIFT_L; + if (y > 0 && !(GRID(state,x,y-1) & G_ISLAND)) + INDEX(ds,newgrid,x,y-1) |= idata << D_L_ISLAND_SHIFT_D; + if (y+1 < state->h && !(GRID(state,x,y+1) & G_ISLAND)) + INDEX(ds,newgrid,x,y+1) |= idata << D_L_ISLAND_SHIFT_U; + } else { + unsigned long hdata, vdata; + int selh = FALSE, selv = FALSE; - redraw = 0; - for (j = 0; j < is->adj.npoints; j++) { - if (GRID(ds,is->adj.points[j].x,is->adj.points[j].y) & G_REDRAW) { - redraw = 1; - } - } + /* + * A line (non-island) square. Compute the drawing + * data for any horizontal and vertical lines in the + * square, and put them in this square's entry and + * optionally those for neighbouring islands too. + */ + + if (is_drag_dst && + WITHIN(x,is_drag_src->x, is_drag_dst->x) && + WITHIN(y,is_drag_src->y, is_drag_dst->y)) { + if (is_drag_src->x != is_drag_dst->x) + selh = TRUE; + else + selv = TRUE; + } + lines_lvlh(state, ui, x, y, v, &lv, &lh); - if (is_drag_src) { - if (is == is_drag_src) - v |= G_ISSEL; - else if (is_drag_dst && is == is_drag_dst) - v |= G_ISSEL; + hdata = (v & G_NOLINEH ? DL_COUNT_CROSS : + v & G_LINEH ? lh : + (ui->show_hints && + between_island(state,x,y,1,0)) ? DL_COUNT_HINT : 0); + vdata = (v & G_NOLINEV ? DL_COUNT_CROSS : + v & G_LINEV ? lv : + (ui->show_hints && + between_island(state,x,y,0,1)) ? DL_COUNT_HINT : 0); + + hdata |= (flash ? DL_COL_FLASH : + v & G_WARN ? DL_COL_WARNING : + selh ? DL_COL_SELECTED : + DL_COL_NORMAL); + vdata |= (flash ? DL_COL_FLASH : + v & G_WARN ? DL_COL_WARNING : + selv ? DL_COL_SELECTED : + DL_COL_NORMAL); + + if (v & G_MARKH) + hdata |= DL_LOCK; + if (v & G_MARKV) + vdata |= DL_LOCK; + + INDEX(ds,newgrid,x,y) |= hdata << D_L_LINE_SHIFT_H; + INDEX(ds,newgrid,x,y) |= vdata << D_L_LINE_SHIFT_V; + if (x > 0 && (GRID(state,x-1,y) & G_ISLAND)) + INDEX(ds,newgrid,x-1,y) |= hdata << D_I_LINE_SHIFT_R; + if (x+1 < state->w && (GRID(state,x+1,y) & G_ISLAND)) + INDEX(ds,newgrid,x+1,y) |= hdata << D_I_LINE_SHIFT_L; + if (y > 0 && (GRID(state,x,y-1) & G_ISLAND)) + INDEX(ds,newgrid,x,y-1) |= vdata << D_I_LINE_SHIFT_D; + if (y+1 < state->h && (GRID(state,x,y+1) & G_ISLAND)) + INDEX(ds,newgrid,x,y+1) |= vdata << D_I_LINE_SHIFT_U; + } } + } - if (island_impossible(is, v & G_MARK)) v |= G_WARN; - - if (ui->cur_visible && ui->cur_x == is->x && ui->cur_y == is->y) - v |= G_CURSOR; - - if ((v != GRID(ds, is->x, is->y)) || force || redraw) { - GRID(ds,is->x,is->y) = v; - island_redraw(dr, state, ds, is, v); + /* + * Now go through and draw any changed grid square. + */ + for (x = 0; x < ds->w; x++) { + for (y = 0; y < ds->h; y++) { + unsigned long newval = INDEX(ds,newgrid,x,y); + if (INDEX(ds,grid,x,y) != newval) { + v = GRID(state, x, y); + if (v & G_ISLAND) { + is = INDEX(state, gridi, x, y); + draw_island_tile(dr, ds, x, y, is->count, newval); + + /* + * If this tile is right at the edge of the grid, + * we must also draw the part of the island that + * goes completely out of bounds. We don't bother + * keeping separate entries in ds->newgrid for + * these tiles; it's easier just to redraw them + * iff we redraw their parent island tile. + */ + if (x == 0) + draw_edge_tile(dr, ds, x-1, y, +1, 0, newval); + if (y == 0) + draw_edge_tile(dr, ds, x, y-1, 0, +1, newval); + if (x == state->w-1) + draw_edge_tile(dr, ds, x+1, y, -1, 0, newval); + if (y == state->h-1) + draw_edge_tile(dr, ds, x, y+1, 0, -1, newval); + } else { + draw_line_tile(dr, ds, x, y, newval); + } + INDEX(ds,grid,x,y) = newval; + } } } } @@ -2938,7 +3212,7 @@ draw_circle(dr, cx, cy, ISLAND_RADIUS, paper, ink); sprintf(str, "%d", is->count); - draw_text(dr, cx, cy, FONT_VARIABLE, ISLAND_NUMSIZE(is), + draw_text(dr, cx, cy, FONT_VARIABLE, ISLAND_NUMSIZE(is->count), ALIGN_VCENTRE | ALIGN_HCENTRE, ink, str); } } diff -Nru sgt-puzzles-20140928.r10274/bridges.R sgt-puzzles-20160429.b31155b/bridges.R --- sgt-puzzles-20140928.r10274/bridges.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/bridges.R 2016-04-29 00:30:09.000000000 +0000 @@ -1,6 +1,6 @@ # -*- makefile -*- -BRIDGES_EXTRA = dsf +BRIDGES_EXTRA = dsf findloop bridges : [X] GTK COMMON bridges BRIDGES_EXTRA bridges-icon|no-icon @@ -17,5 +17,5 @@ !end !begin >gamedesc.txt -bridges:bridges.exe:Bridges:Bridge-placing puzzle +bridges:bridges.exe:Bridges:Bridge-placing puzzle:Connect all the islands with a network of bridges. !end diff -Nru sgt-puzzles-20140928.r10274/compile sgt-puzzles-20160429.b31155b/compile --- sgt-puzzles-20140928.r10274/compile 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/compile 2016-04-29 00:30:13.000000000 +0000 @@ -0,0 +1,347 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2012-10-14.11; # UTC + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# 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. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff -Nru sgt-puzzles-20140928.r10274/configure sgt-puzzles-20160429.b31155b/configure --- sgt-puzzles-20140928.r10274/configure 2014-09-29 00:33:55.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/configure 2016-04-29 00:37:38.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for puzzles 20140928.r10274. +# Generated by GNU Autoconf 2.69 for puzzles 20160429.b31155b. # # Report bugs to . # @@ -579,8 +579,8 @@ # Identity of this package. PACKAGE_NAME='puzzles' PACKAGE_TARNAME='puzzles' -PACKAGE_VERSION='20140928.r10274' -PACKAGE_STRING='puzzles 20140928.r10274' +PACKAGE_VERSION='20160429.b31155b' +PACKAGE_STRING='puzzles 20160429.b31155b' PACKAGE_BUGREPORT='anakin@pobox.com' PACKAGE_URL='' @@ -590,6 +590,8 @@ LTLIBOBJS LIBOBJS RANLIB +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH GTK_LIBS GTK_CFLAGS PKG_CONFIG @@ -610,6 +612,10 @@ LDFLAGS CFLAGS CC +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V am__untar am__tar AMTAR @@ -652,6 +658,7 @@ docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -674,7 +681,9 @@ ac_subst_files='' ac_user_opts=' enable_option_checking +enable_silent_rules enable_dependency_tracking +with_gtk enable_gtktest ' ac_precious_vars='build_alias @@ -684,7 +693,10 @@ CFLAGS LDFLAGS LIBS -CPPFLAGS' +CPPFLAGS +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR' # Initialize some variables set by options. @@ -723,6 +735,7 @@ sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -975,6 +988,15 @@ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1112,7 +1134,7 @@ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1225,7 +1247,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures puzzles 20140928.r10274 to adapt to many kinds of systems. +\`configure' configures puzzles 20160429.b31155b to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1265,6 +1287,7 @@ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1291,7 +1314,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of puzzles 20140928.r10274:";; + short | recursive ) echo "Configuration of puzzles 20160429.b31155b:";; esac cat <<\_ACEOF @@ -1299,10 +1322,19 @@ --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build --disable-gtktest do not try to compile and run a test GTK+ program +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gtk=VER specify GTK version to use (`2' or `3') + Some influential environment variables: CC C compiler command CFLAGS C compiler flags @@ -1311,6 +1343,11 @@ LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -1378,7 +1415,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -puzzles configure 20140928.r10274 +puzzles configure 20160429.b31155b generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1521,7 +1558,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by puzzles $as_me 20140928.r10274, which was +It was created by puzzles $as_me 20160429.b31155b, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -1870,7 +1907,7 @@ -am__api_version='1.11' +am__api_version='1.15' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do @@ -1996,9 +2033,6 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -2009,32 +2043,40 @@ esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac -# Do `set' in a subshell so we don't clobber the current shell's +# Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done test "$2" = conftest.file ) then @@ -2046,6 +2088,16 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. @@ -2056,8 +2108,8 @@ ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in @@ -2068,15 +2120,15 @@ esac fi # Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " else am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi -if test x"${install_sh}" != xset; then +if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; @@ -2085,10 +2137,10 @@ esac fi -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. +# will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. @@ -2227,12 +2279,6 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. @@ -2315,6 +2361,45 @@ fi rmdir .tst 2>/dev/null +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." @@ -2337,7 +2422,7 @@ # Define the identity of the package. PACKAGE='puzzles' - VERSION='20140928.r10274' + VERSION='20160429.b31155b' cat >>confdefs.h <<_ACEOF @@ -2365,18 +2450,71 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -3165,6 +3303,65 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" @@ -3184,7 +3381,7 @@ _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. +# Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include @@ -3240,8 +3437,8 @@ # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're @@ -3276,16 +3473,16 @@ : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with `-c' and `-o' for the sake of the "dashmstdout" + # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -3294,8 +3491,8 @@ test "$am__universal" = false || continue ;; nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else @@ -3303,7 +3500,7 @@ fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has + # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -3358,6 +3555,28 @@ + +# Check whether --with-gtk was given. +if test "${with_gtk+set}" = set; then : + withval=$with_gtk; gtk_version_desired="$withval" +else + gtk_version_desired="any" +fi + + +case "$gtk_version_desired" in + 2 | 3 | any) ;; + yes) gtk_version_desired="any" ;; + *) as_fn_error $? "Invalid GTK version specified" "$LINENO" 5 +esac + +gtk=none + +case "$gtk_version_desired:$gtk" in + 3:none | any:none) + + + # Check whether --enable-gtktest was given. if test "${enable_gtktest+set}" = set; then : enableval=$enable_gtktest; @@ -3365,8 +3584,9 @@ enable_gtktest=yes fi + min_gtk_version=3.0.0 - pkg_config_args=gtk+-2.0 + pkg_config_args="gtk+-3.0 >= $min_gtk_version" for module in . do case "$module" in @@ -3421,7 +3641,7 @@ if test x$PKG_CONFIG != xno ; then - if pkg-config --atleast-pkgconfig-version 0.7 ; then + if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then : else echo "*** pkg-config too old; version 0.7 or better required." @@ -3432,6 +3652,456 @@ no_gtk=yes fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK+ - version >= $min_gtk_version" >&5 +$as_echo_n "checking for GTK+ - version >= $min_gtk_version... " >&6; } + + if test x$PKG_CONFIG != xno ; then + ## don't try to run the test against uninstalled libtool libs + if $PKG_CONFIG --uninstalled $pkg_config_args; then + echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH" + enable_gtktest=no + fi + + if $PKG_CONFIG $pkg_config_args; then + : + else + no_gtk=yes + fi + fi + + if test x"$no_gtk" = x ; then + GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags` + GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs` + gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-3.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-3.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-3.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" + rm -f conf.gtktest + if test "$cross_compiling" = yes; then : + echo $ac_n "cross compiling; assumed OK... $ac_c" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include + +int +main () +{ + unsigned int major, minor, micro; + + fclose (fopen ("conf.gtktest", "w")); + + if (sscanf("$min_gtk_version", "%u.%u.%u", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'pkg-config --modversion gtk+-3.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If pkg-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); + printf("*** to point to the correct configuration files\n"); + } + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%u.%u.%u) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %u.%u.%u. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n"); + printf("*** correct copy of pkg-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + no_gtk=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&5 +$as_echo "yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&6; } + gtk=3 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "$PKG_CONFIG" = "no" ; then + echo "*** A new enough version of pkg-config was not found." + echo "*** See http://pkgconfig.sourceforge.net" + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK+ test program, checking why..." + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main () +{ + return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK+ or finding the wrong" + echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" +else + echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GTK+ is incorrectly installed." +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + : + fi + + + rm -f conf.gtktest + + + ;; +esac + +case "$gtk_version_desired:$gtk" in + 2:none | any:none) + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi +# Check whether --enable-gtktest was given. +if test "${enable_gtktest+set}" = set; then : + enableval=$enable_gtktest; +else + enable_gtktest=yes +fi + + + pkg_config_args=gtk+-2.0 + for module in . + do + case "$module" in + gthread) + pkg_config_args="$pkg_config_args gthread-2.0" + ;; + esac + done + + no_gtk="" + + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.7 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi + min_gtk_version=2.0.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK+ - version >= $min_gtk_version" >&5 $as_echo_n "checking for GTK+ - version >= $min_gtk_version... " >&6; } @@ -3559,7 +4229,7 @@ if test "x$no_gtk" = x ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&5 $as_echo "yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&6; } - : + gtk=2 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } @@ -3618,11 +4288,18 @@ rm -f conf.gtktest + ;; +esac + +if test "$gtk" = "none"; then + as_fn_error $? "cannot build without GTK 2 or GTK 3" "$LINENO" 5 +fi + if test "x$GCC" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for usable gcc warning flags" >&5 $as_echo_n "checking for usable gcc warning flags... " >&6; } gccwarningflags= - for flag in -Wall -Werror -ansi -pedantic; do + for flag in -Wall -Werror -std=c89 -pedantic; do ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS$gccwarningflags $flag $GTK_CFLAGS" @@ -3914,6 +4591,14 @@ LTLIBOBJS=$ac_ltlibobjs +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' @@ -4327,7 +5012,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by puzzles $as_me 20140928.r10274, which was +This file was extended by puzzles $as_me 20160429.b31155b, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -4384,7 +5069,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -puzzles config.status 20140928.r10274 +puzzles config.status 20160429.b31155b configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -4934,7 +5619,7 @@ case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files + # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in @@ -4947,7 +5632,7 @@ # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but + # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. @@ -4981,21 +5666,19 @@ continue fi # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. + # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue + test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || diff -Nru sgt-puzzles-20140928.r10274/configure.ac sgt-puzzles-20160429.b31155b/configure.ac --- sgt-puzzles-20140928.r10274/configure.ac 2014-09-29 00:30:06.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/configure.ac 2016-04-29 00:30:09.000000000 +0000 @@ -1,15 +1,48 @@ dnl Configure script for the Unix GTK build of puzzles. -AC_INIT([puzzles], [20140928.r10274], [anakin@pobox.com]) +AC_INIT([puzzles], [20160429.b31155b], [anakin@pobox.com]) AC_CONFIG_SRCDIR([midend.c]) AM_INIT_AUTOMAKE([foreign]) AC_PROG_CC -AM_PATH_GTK_2_0([2.0.0]) + +AC_ARG_WITH([gtk], + [AS_HELP_STRING([--with-gtk=VER], + [specify GTK version to use (`2' or `3')])], + [gtk_version_desired="$withval"], + [gtk_version_desired="any"]) + +case "$gtk_version_desired" in + 2 | 3 | any) ;; + yes) gtk_version_desired="any" ;; + *) AC_ERROR([Invalid GTK version specified]) +esac + +gtk=none + +case "$gtk_version_desired:$gtk" in + 3:none | any:none) + ifdef([AM_PATH_GTK_3_0],[ + AM_PATH_GTK_3_0([3.0.0], [gtk=3], []) + ],[AC_WARNING([generating configure script without GTK 3 autodetection])]) + ;; +esac + +case "$gtk_version_desired:$gtk" in + 2:none | any:none) + ifdef([AM_PATH_GTK_2_0],[ + AM_PATH_GTK_2_0([2.0.0], [gtk=2], []) + ],[AC_WARNING([generating configure script without GTK 2 autodetection])]) + ;; +esac + +if test "$gtk" = "none"; then + AC_MSG_ERROR([cannot build without GTK 2 or GTK 3]) +fi if test "x$GCC" = "xyes"; then AC_MSG_CHECKING([for usable gcc warning flags]) gccwarningflags= - for flag in -Wall -Werror -ansi -pedantic; do + for flag in -Wall -Werror -std=c89 -pedantic; do ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS$gccwarningflags $flag $GTK_CFLAGS" diff -Nru sgt-puzzles-20140928.r10274/cube.R sgt-puzzles-20160429.b31155b/cube.R --- sgt-puzzles-20140928.r10274/cube.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/cube.R 2016-04-29 00:30:09.000000000 +0000 @@ -15,5 +15,5 @@ !end !begin >gamedesc.txt -cube:cube.exe:Cube:Rolling cube puzzle +cube:cube.exe:Cube:Rolling cube puzzle:Pick up all the blue squares by rolling the cube over them. !end diff -Nru sgt-puzzles-20140928.r10274/debian/changelog sgt-puzzles-20160429.b31155b/debian/changelog --- sgt-puzzles-20140928.r10274/debian/changelog 2014-10-01 21:10:50.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/debian/changelog 2017-01-11 09:19:09.000000000 +0000 @@ -1,3 +1,34 @@ +sgt-puzzles (20160429.b31155b-1ubuntu1) zesty; urgency=medium + + * Avoid FTBFS by building with -O2 on ppc64el + + -- Graham Inggs Wed, 11 Jan 2017 11:19:09 +0200 + +sgt-puzzles (20160429.b31155b-1) unstable; urgency=medium + + * New upstream version (Closes: #791982) + - Add Flood, a flood-filling puzzle + - Add Palisade by Jonas Kölker, an implementation of 'Five Cells' + - Add Tracks by James Harvey, a path-finding railway track puzzle + * debian/control: Change Vcs-Git and Vcs-Browser to HTTP-S URLs + * Fix HTML filenames for Rectangles (Closes: #819906) + * debian/rules: Use dpkg makefile fragments to set DEBIAN_VERSION + * debian/rules: Use dpkg-recommended build flags (Closes: #767531) + * Remove command aliases without the 'sgt-' prefix (Closes: #684193) + * towers.c: Fix FTBFS with gcc 6 (Closes: #811577) + * debian/rules: Disable running tests; upstream tarballs don't include the + necessary files + * Add desktop files and Debian menu entries for the new puzzles + * mkmanpages.pl: Fix regexp syntax warnings + * mkmanpages.pl: Update for new version format + * Change help browser search path to xdg-open:sensible-browser, since yelp + and khelpcenter no longer work with arbitrary HTML files + * Use msgmerge --previous option when updating .po files, thanks to + Helge Kreutzmann + * Update German translation, thanks to Helge Kreutzmann + + -- Ben Hutchings Wed, 20 Jul 2016 01:34:44 +0100 + sgt-puzzles (20140928.r10274-1) unstable; urgency=medium * New upstream version diff -Nru sgt-puzzles-20140928.r10274/debian/control sgt-puzzles-20160429.b31155b/debian/control --- sgt-puzzles-20140928.r10274/debian/control 2014-10-01 21:09:34.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/debian/control 2017-01-11 09:19:09.000000000 +0000 @@ -1,12 +1,13 @@ Source: sgt-puzzles -Maintainer: Ben Hutchings +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Ben Hutchings Section: games Priority: extra Build-Depends: debhelper (>= 7.0.50~), halibut, libgtk2.0-dev, liblocale-po-perl, perl, po4a, autoconf, automake Standards-Version: 3.9.6 Homepage: http://www.chiark.greenend.org.uk/~sgtatham/puzzles/ -Vcs-Git: http://git.decadent.org.uk/git/sgt-puzzles.git/ -Vcs-Browser: http://git.decadent.org.uk/gitweb?p=sgt-puzzles.git +Vcs-Git: https://git.decadent.org.uk/git/sgt-puzzles.git/ +Vcs-Browser: https://git.decadent.org.uk/gitweb?p=sgt-puzzles.git Package: sgt-puzzles Architecture: any diff -Nru sgt-puzzles-20140928.r10274/debian/desktop/sgt-flood.desktop sgt-puzzles-20160429.b31155b/debian/desktop/sgt-flood.desktop --- sgt-puzzles-20140928.r10274/debian/desktop/sgt-flood.desktop 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/debian/desktop/sgt-flood.desktop 2016-07-17 16:30:56.000000000 +0000 @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Terminal=false +Exec=sgt-flood +Icon=sgt-flood +Type=Application +Categories=Game;LogicGame; +Name=Flood +Comment=Turn the grid the same colour in as few flood fills as possible +Comment[de]=Das Gitter in eine Farbe mit so wenigen Flutungen wie möglich umwandeln diff -Nru sgt-puzzles-20140928.r10274/debian/desktop/sgt-palisade.desktop sgt-puzzles-20160429.b31155b/debian/desktop/sgt-palisade.desktop --- sgt-puzzles-20140928.r10274/debian/desktop/sgt-palisade.desktop 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/debian/desktop/sgt-palisade.desktop 2016-07-17 16:30:56.000000000 +0000 @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Terminal=false +Exec=sgt-palisade +Icon=sgt-palisade +Type=Application +Categories=Game;LogicGame; +Name=Palisade +Comment=Divide the grid into equal-sized areas in accordance with the clues +Comment[de]=Unterteile das Gitter in gleich-große Bereiche entsprechend der Hinweise diff -Nru sgt-puzzles-20140928.r10274/debian/desktop/sgt-tracks.desktop sgt-puzzles-20160429.b31155b/debian/desktop/sgt-tracks.desktop --- sgt-puzzles-20140928.r10274/debian/desktop/sgt-tracks.desktop 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/debian/desktop/sgt-tracks.desktop 2016-07-17 16:30:56.000000000 +0000 @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Terminal=false +Exec=sgt-tracks +Icon=sgt-tracks +Type=Application +Categories=Game;LogicGame; +Name=Tracks +Comment=Fill in the railway track according to the clues +Comment[de]=Einfüllen der Eisenbahngleise gemäß der Hinweise diff -Nru sgt-puzzles-20140928.r10274/debian/patches/102_fix-pearl-min-dimensions.diff sgt-puzzles-20160429.b31155b/debian/patches/102_fix-pearl-min-dimensions.diff --- sgt-puzzles-20140928.r10274/debian/patches/102_fix-pearl-min-dimensions.diff 2014-10-01 21:02:33.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/debian/patches/102_fix-pearl-min-dimensions.diff 2016-06-30 13:53:12.000000000 +0000 @@ -1,15 +1,15 @@ Author: Ben Hutchings Description: pearl: Require width or height to be at least 6 for Tricky -Bug-Debian: http://bugs.debian.org/667963 +Bug-Debian: https://bugs.debian.org/667963 Josh Triplett reported: > If I ask pearl to generate a 5x5 tricky puzzle, it runs forever. I find that 5x6 or 6x5 works, so set the minimum accordingly. ---- sgt-puzzles.orig/pearl.c -+++ sgt-puzzles/pearl.c -@@ -280,6 +280,8 @@ +--- a/pearl.c ++++ b/pearl.c +@@ -279,6 +279,8 @@ static char *validate_params(const game_ if (params->h < 5) return "Height must be at least five"; if (params->difficulty < 0 || params->difficulty >= DIFFCOUNT) return "Unknown difficulty level"; diff -Nru sgt-puzzles-20140928.r10274/debian/patches/201_make-more-docs.diff sgt-puzzles-20160429.b31155b/debian/patches/201_make-more-docs.diff --- sgt-puzzles-20140928.r10274/debian/patches/201_make-more-docs.diff 2014-10-01 21:03:55.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/debian/patches/201_make-more-docs.diff 2016-06-30 13:53:42.000000000 +0000 @@ -69,7 +69,7 @@ rm -rf doc --- /dev/null +++ b/mkmanpages.pl -@@ -0,0 +1,154 @@ +@@ -0,0 +1,157 @@ +#!/usr/bin/perl -w + +# Generate manual pages for sgt-puzzles by running extracts of puzzles.but @@ -132,9 +132,13 @@ + # Look for chapter/appendix heading + if (/^\\[AC]{([^}]+)}\s*/) { + $name = $1; ++ # The odd one out - chapter name doesn't match command name ++ if ($name eq 'rectangles') { ++ $name = 'rect'; ++ } + } + # Look for version ID with date -+ if (/^\\versionid .* (\d{4})(\d{2})\d{2}\.r/) { ++ if (/^\\versionid .* (\d{4})(\d{2})\d{2}\./) { + $date = "${MONTHS[$2-1]} $1"; + } + $contents{$name} .= $_; @@ -145,11 +149,10 @@ +$contents{__HEADER__} =~ s/^(?!\\(?:cfg|define|title){).*$//gm; + +# Remove introduction from "common features" chapter -+$contents{common} =~ s/^.*?(?=\\H{)//s; -+ -+for my $chapter (keys %commands) { ++$contents{common} =~ s/^.*?(?=\\H\{)//s; + -+ my $command = $commands{$chapter}; ++for my $short_name (keys %commands) { ++ my $command = $commands{$short_name}; + print "Generating $command.6\n"; + + my $text_name = $language eq 'en' ? 'puzzles.txt' : "puzzles.txt.$language"; @@ -160,7 +163,7 @@ + . $contents{__HEADER__} + . "\\C{man-$command} $command\n\n" # dummy chapter + . "\\H{man-$command-name} " . gettext('NAME') . "\n\n" -+ . "\\c{$command} \\- $short_descs{$chapter}\n\n" ++ . "\\c{$command} \\- $short_descs{$short_name}\n\n" + . "\\H{man-$command-synopsis} " . gettext('SYNOPSIS') . "\n\n" + # Translator: abbreviation for 'number' + . "\\cw{$command} [\\cw{--generate }\\e{" . gettext('n') . "}]\n" @@ -173,7 +176,7 @@ + . "}|\\e{" . gettext('random-seed') . "}]\n\n" + . "\\cw{$command --version}\n\n" + . "\\H{man-$command-desc} " . gettext('DESCRIPTION') . "\n\n" -+ . $contents{$chapter} ++ . $contents{$short_name} + . $contents{common} + . "\\H{man-$command-see-also} " . gettext('SEE ALSO') . "\n\n" + # Translator: "Full documentation in ." @@ -194,7 +197,7 @@ + gettext('below'); + } + # Else if the target is a bibliographic entry, include the entry directly. -+ elsif ($below =~ m/\\B{$target}\s*(.*?)\s*(?:\\(?:[BCHA]|S\d*|$))/s) { ++ elsif ($below =~ m/\\B\{$target\}\s*(.*?)\s*(?:\\(?:[BCHA]|S\d*|$))/s) { + "($1)"; + } + # Else if it appears to refer to another game, convert to a customary diff -Nru sgt-puzzles-20140928.r10274/debian/patches/202_online-help.diff sgt-puzzles-20160429.b31155b/debian/patches/202_online-help.diff --- sgt-puzzles-20140928.r10274/debian/patches/202_online-help.diff 2014-10-01 21:03:55.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/debian/patches/202_online-help.diff 2016-06-30 13:53:42.000000000 +0000 @@ -27,12 +27,12 @@ #include #include -@@ -2040,6 +2047,89 @@ static void menu_config_event(GtkMenuIte +@@ -2252,6 +2259,89 @@ static void menu_config_event(GtkMenuIte resize_fe(fe); } +#ifndef HELP_BROWSER_PATH -+#define HELP_BROWSER_PATH "yelp:khelpcenter:$BROWSER" ++#define HELP_BROWSER_PATH "xdg-open:sensible-browser" +#endif + +static void show_help(frontend *fe, const char *topic) @@ -117,7 +117,7 @@ static void menu_about_event(GtkMenuItem *menuitem, gpointer data) { frontend *fe = (frontend *)data; -@@ -2317,6 +2407,25 @@ static frontend *new_window(char *arg, i +@@ -2572,6 +2662,25 @@ static frontend *new_window(char *arg, i menu = gtk_menu_new(); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu); @@ -142,7 +142,7 @@ + menuitem = gtk_menu_item_new_with_label("About"); gtk_container_add(GTK_CONTAINER(menu), menuitem); - gtk_signal_connect(GTK_OBJECT(menuitem), "activate", + g_signal_connect(G_OBJECT(menuitem), "activate", --- a/Recipe +++ b/Recipe @@ -95,6 +95,7 @@ Puzzles.dmg: Puzzles diff -Nru sgt-puzzles-20140928.r10274/debian/patches/206_translate-docs.diff sgt-puzzles-20160429.b31155b/debian/patches/206_translate-docs.diff --- sgt-puzzles-20140928.r10274/debian/patches/206_translate-docs.diff 2014-10-01 21:03:55.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/debian/patches/206_translate-docs.diff 2016-07-17 16:30:52.000000000 +0000 @@ -1,6 +1,6 @@ Author: Ben Hutchings Description: Support translated docs using po4a -Bug-Debian: http://bugs.debian.org/483665 +Bug-Debian: https://bugs.debian.org/483665 --- a/Makefile.doc +++ b/Makefile.doc @@ -23,7 +23,7 @@ + mv po/puzzles-doc.tmp2.pot po/puzzles-doc.pot + rm -f po/puzzles-doc.tmp*.pot + for lang in $(TRANSLATIONS); do \ -+ msgmerge -U po/$$lang.po po/puzzles-doc.pot || exit; \ ++ msgmerge --previous -U po/$$lang.po po/puzzles-doc.pot || exit; \ + done +.PHONY: update-po + diff -Nru sgt-puzzles-20140928.r10274/debian/patches/207_slant-shade-filled.diff sgt-puzzles-20160429.b31155b/debian/patches/207_slant-shade-filled.diff --- sgt-puzzles-20140928.r10274/debian/patches/207_slant-shade-filled.diff 2014-10-01 21:02:33.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/debian/patches/207_slant-shade-filled.diff 2016-06-30 13:53:12.000000000 +0000 @@ -1,10 +1,10 @@ Author: Ben Hutchings Description: slant: Shade filled squares -Bug-Debian: http://bugs.debian.org/419836 +Bug-Debian: https://bugs.debian.org/419836 ---- sgt-puzzles.orig/slant.c -+++ sgt-puzzles/slant.c -@@ -1811,11 +1811,7 @@ +--- a/slant.c ++++ b/slant.c +@@ -1793,11 +1793,7 @@ static float *game_colours(frontend *fe, float *ret = snewn(3 * NCOLOURS, float); /* CURSOR colour is a background highlight. */ diff -Nru sgt-puzzles-20140928.r10274/debian/patches/208_rename-rectangles-chapter.patch sgt-puzzles-20160429.b31155b/debian/patches/208_rename-rectangles-chapter.patch --- sgt-puzzles-20140928.r10274/debian/patches/208_rename-rectangles-chapter.patch 2014-02-07 21:27:16.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/debian/patches/208_rename-rectangles-chapter.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -Author: Ben Hutchings -Description: puzzles.but: Rename rectangles chapter to match command name - -This makes it easier to build manual pages, and has no visible effect. - ---- a/puzzles.but -+++ b/puzzles.but -@@ -751,7 +751,7 @@ for, the more likely it is that solution - length will turn out to be possible. - - --\C{rectangles} \i{Rectangles} -+\C{rect} \i{Rectangles} - - \cfg{winhelp-topic}{games.rectangles} - diff -Nru sgt-puzzles-20140928.r10274/debian/patches/fix-ftbfs-with-gcc-6.patch sgt-puzzles-20160429.b31155b/debian/patches/fix-ftbfs-with-gcc-6.patch --- sgt-puzzles-20140928.r10274/debian/patches/fix-ftbfs-with-gcc-6.patch 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/debian/patches/fix-ftbfs-with-gcc-6.patch 2016-06-30 13:53:42.000000000 +0000 @@ -0,0 +1,29 @@ +Author: Ben Hutchings , 2009-2014. +# Helge Kreutzmann , 2009-2014, 2016. # msgid "" msgstr "" "Project-Id-Version: sgt-puzzles\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-10-01 20:16+0100\n" -"PO-Revision-Date: 2014-10-01 21:32+0100\n" +"POT-Creation-Date: 2016-06-30 16:17+0200\n" +"PO-Revision-Date: 2016-07-17 11:44+0200\n" "Last-Translator: Helge Kreutzmann \n" "Language-Team: de \n" "Language: \n" @@ -199,8 +199,8 @@ #. type: Plain text #: puzzles.but:66 msgid "" -"This collection is distributed under the \\i{MIT licence} (see \\k" -"{licence}). This means that you can do pretty much anything you like with " +"This collection is distributed under the \\i{MIT licence} (see " +"\\k{licence}). This means that you can do pretty much anything you like with " "the game binaries or the code, except pretending you wrote them yourself, or " "suing me if anything goes wrong." msgstr "" @@ -213,20 +213,21 @@ #. type: Plain text #: puzzles.but:69 msgid "" -"The most recent versions, and \\i{source code}, can be found at \\I" -"{website}\\W{http://www.chiark.greenend.org.uk/~sgtatham/puzzles/}\\cw" -"{http://www.chiark.greenend.org.uk/~sgtatham/puzzles/}." -msgstr "" -"Die neusten Versionen und der \\i{Quellcode} kann unter \\I{website}\\W" -"{http://www.chiark.greenend.org.uk/~sgtatham/puzzles/}\\cw{http://www.chiark." -"greenend.org.uk/~sgtatham/puzzles/} gefunden werden." +"The most recent versions, and \\i{source code}, can be found at " +"\\I{website}\\W{http://www.chiark.greenend.org.uk/~sgtatham/" +"puzzles/}\\cw{http://www.chiark.greenend.org.uk/~sgtatham/puzzles/}." +msgstr "" +"Die neusten Versionen und der \\i{Quellcode} kann unter " +"\\I{website}\\W{http://www.chiark.greenend.org.uk/~sgtatham/" +"puzzles/}\\cw{http://www.chiark.greenend.org.uk/~sgtatham/puzzles/} gefunden " +"werden." #. type: Plain text #: puzzles.but:73 msgid "" -"Please report \\I{feedback}\\i{bugs} to \\W{mailto:anakin@pobox.com}\\cw" -"{anakin@pobox.com}. You might find it helpful to read this article before " -"reporting a bug:" +"Please report \\I{feedback}\\i{bugs} to \\W{mailto:anakin@pobox." +"com}\\cw{anakin@pobox.com}. You might find it helpful to read this article " +"before reporting a bug:" msgstr "" "Bitte berichten Sie \\I{feedback}\\i{Fehler} (auf Englisch) an \\W{mailto:" "anakin@pobox.com}\\cw{anakin@pobox.com}. Es könnte hilfreich sein, dass Sie " @@ -273,16 +274,16 @@ "These actions are all available from the \\I{Game menu}\\q{Game} menu and " "via \\I{keys}keyboard shortcuts, in addition to any game-specific actions." msgstr "" -"Diese Aktionen sind vom Menüpunkt \\I{Game menu}\\q{Game} und über \\I" -"{Tasten}Tastaturkürzel verfügbar, zusätzlich zu allen spielspezifischen " +"Diese Aktionen sind vom Menüpunkt \\I{Game menu}\\q{Game} und über " +"\\I{Tasten}Tastaturkürzel verfügbar, zusätzlich zu allen spielspezifischen " "Aktionen." #. type: Plain text #: puzzles.but:93 msgid "" "(On \\i{Mac OS X}, to conform with local user interface standards, these " -"actions are situated on the \\I{File menu}\\q{File} and \\I{Edit menu}\\q" -"{Edit} menus instead.)" +"actions are situated on the \\I{File menu}\\q{File} and \\I{Edit " +"menu}\\q{Edit} menus instead.)" msgstr "" "(Unter \\i{Mac OS X} befinden sich diese Aktionen unter den Menüs \\I{File " "menu}\\q{File} und \\I{Edit menu}\\q{Edit}, um den lokalen " @@ -492,10 +493,10 @@ "piece of text (a \\q{game ID}) which is sufficient to reconstruct precisely " "the same game at a later date." msgstr "" -"Die Optionen \\q{\\i{Specific}} und \\q{\\i{Random Seed}} aus dem Menü \\I" -"{Game menu}\\q{Game} (oder \\q{File} unter \\i{Mac OS X}) zeigen jeweils ein " -"Stück Text (eine \\q{Spiele-ID}), der ausreicht, um genau dieses Spiel zu " -"einem späteren Zeitpunkt zu rekonstruieren." +"Die Optionen \\q{\\i{Specific}} und \\q{\\i{Random Seed}} aus dem Menü " +"\\I{Game menu}\\q{Game} (oder \\q{File} unter \\i{Mac OS X}) zeigen jeweils " +"ein Stück Text (eine \\q{Spiele-ID}), der ausreicht, um genau dieses Spiel " +"zu einem späteren Zeitpunkt zu rekonstruieren." #. type: Plain text #: puzzles.but:190 @@ -537,7 +538,7 @@ "einige, wie Cube (\\k{cube}) nur eine sehr kurze Beschreibung benötigen). " "Daher ist der Zufallsstartwert oft ein \\e{schnellerer} Weg, um das gerade " "gespielte Puzzle aufzuschreiben oder es jemanden anderen mitzuteilen, so " -"dass er das gleiche wie Sie spielen kann." +"dass er das Gleiche wie Sie spielen kann." #. type: Plain text #: puzzles.but:211 @@ -562,13 +563,13 @@ #. type: Plain text #: puzzles.but:215 msgid "" -"It is often possible to convert puzzles from other sources (such as \\q" -"{nonograms} or \\q{sudoku} from newspapers) into descriptive game IDs " +"It is often possible to convert puzzles from other sources (such as " +"\\q{nonograms} or \\q{sudoku} from newspapers) into descriptive game IDs " "suitable for use with these programs." msgstr "" -"Oft ist es möglich, Puzzle aus anderen Quellen (wie \\q{Nonograms} oder \\q" -"{Sudoku} aus Zeitungen) in beschreibende Spiele-IDs zu verwandeln, die mit " -"diesen Programmen verwandt werden können." +"Oft ist es möglich, Puzzle aus anderen Quellen (wie \\q{Nonograms} oder " +"\\q{Sudoku} aus Zeitungen) in beschreibende Spiele-IDs zu verwandeln, die " +"mit diesen Programmen verwandt werden können." #. type: Plain text #: puzzles.but:223 @@ -658,8 +659,8 @@ "friend reads out a random seed specifying \\q{Trivial} difficulty, and you " "type it in. The program will generate you the same \\q{Trivial} grid which " "your friend was having trouble with, but once you have finished playing it, " -"when you ask for a new game it will automatically go back to the \\q" -"{Advanced} difficulty which it was previously set on." +"when you ask for a new game it will automatically go back to the " +"\\q{Advanced} difficulty which it was previously set on." msgstr "" "Diese zusätzlichen Parameter werden auch nicht permanent gesetzt, falls Sie " "eine Spiele-ID eingeben. Nehmen wir beispielsweise an, Sie haben den " @@ -669,8 +670,8 @@ "\\q{Trivial} aus und Sie geben diesen ein. Das Programm wird Ihnen das " "gleiche Gitter mit der Schwierigkeit \\q{Trivial} erstellen, mit dem Ihr " "Freund Probleme hatte, aber sobald Sie es zuende gespielt haben und ein " -"neues Spiel beginnen, wird wieder automatisch auf die Schwierigkeit \\q" -"{Advanced} zurückgeschaltet, die vorher eingestellt worden war." +"neues Spiel beginnen, wird wieder automatisch auf die Schwierigkeit " +"\\q{Advanced} zurückgeschaltet, die vorher eingestellt worden war." #. type: Plain text #: puzzles.but:260 @@ -680,13 +681,14 @@ #. type: Plain text #: puzzles.but:264 msgid "" -"The \\I{Type menu}\\q{Type} menu, if present, may contain a list of \\i" -"{preset} game settings. Selecting one of these will start a new random game " -"with the parameters specified." -msgstr "" -"Das Menü \\I{Type menu}\\q{Type} kann, falls vorhanden, eine Liste der \\i" -"{voreingestellten} Spieleeinstellungen enthalten. Wird eines dieser Einträge " -"ausgewählt, wird ein neues Spiel mit den angegebenen Parametern gestartet." +"The \\I{Type menu}\\q{Type} menu, if present, may contain a list of " +"\\i{preset} game settings. Selecting one of these will start a new random " +"game with the parameters specified." +msgstr "" +"Das Menü \\I{Type menu}\\q{Type} kann, falls vorhanden, eine Liste der " +"\\i{voreingestellten} Spieleeinstellungen enthalten. Wird eines dieser " +"Einträge ausgewählt, wird ein neues Spiel mit den angegebenen Parametern " +"gestartet." #. type: Plain text #: puzzles.but:269 @@ -740,12 +742,12 @@ #. type: Plain text #: puzzles.but:291 msgid "" -"The easiest way to do this is to set up the parameters you want using the \\q" -"{Type} menu (see \\k{common-type}), and then to select \\q{Random Seed} from " -"the \\q{Game} or \\q{File} menu (see \\k{common-id}). The text in the \\q" -"{Game ID} box will be composed of two parts, separated by a hash. The first " -"of these parts represents the game parameters (the size of the playing area, " -"for example, and anything else you set using the \\q{Type} menu)." +"The easiest way to do this is to set up the parameters you want using the " +"\\q{Type} menu (see \\k{common-type}), and then to select \\q{Random Seed} " +"from the \\q{Game} or \\q{File} menu (see \\k{common-id}). The text in the " +"\\q{Game ID} box will be composed of two parts, separated by a hash. The " +"first of these parts represents the game parameters (the size of the playing " +"area, for example, and anything else you set using the \\q{Type} menu)." msgstr "" "Am einfachsten erfolgt dies, indem Sie die gewünschten Parameter mit dem " "Menü \\q{Type} einrichten (siehe \\k{common-type}) und dann \\q{Random Seed} " @@ -800,8 +802,8 @@ "such as the difficulty level in Solo, will be missing. See \\k{common-id} " "for more details on this.)" msgstr "" -"(Sie können die kodierten Spieleparameter auch aus der Menüoption \\q" -"{Specific} statt \\q{Random Seed} auslesen, allerdings werden dann einige " +"(Sie können die kodierten Spieleparameter auch aus der Menüoption " +"\\q{Specific} statt \\q{Random Seed} auslesen, allerdings werden dann einige " "Parameter, wie der Schwierigkeitsgrad in Solo, fehlen. Lesen Sie \\k{common-" "id} für weitere Details darüber.)" @@ -919,13 +921,13 @@ msgid "" "If \\c{--generate} has also been specified, the invented game IDs will be " "used to generate the printed output. Otherwise, a list of game IDs is " -"expected on standard input (which can be descriptive or random seeds; see \\k" -"{common-id}), in the same format produced by \\c{--generate}." +"expected on standard input (which can be descriptive or random seeds; see " +"\\k{common-id}), in the same format produced by \\c{--generate}." msgstr "" "Falls auch \\c{--generate} angegeben wurde, werden die ausgedachten Spiele-" "IDs zur Erzeugung der gedruckten Ausgabe verwandt. Andernfalls wird auf der " -"Standardeingabe eine Liste von Spiele-IDs im gleichen Format, wie das von \\c" -"{--generate} erzeugte, erwartet (diese können beschreibend oder mit " +"Standardeingabe eine Liste von Spiele-IDs im gleichen Format, wie das von " +"\\c{--generate} erzeugte, erwartet (diese können beschreibend oder mit " "Zufallsstartwert sein, siehe \\k{common-id})." #. type: Plain text @@ -1073,8 +1075,8 @@ #. type: Plain text #: puzzles.but:439 msgid "" -"I originally saw this in the form of a Flash game called \\i{FreeNet} \\k" -"{FreeNet}, written by Pavils Jurjans; there are several other " +"I originally saw this in the form of a Flash game called \\i{FreeNet} " +"\\k{FreeNet}, written by Pavils Jurjans; there are several other " "implementations under the name \\i{NetWalk}. The computer prepares a network " "by connecting up the centres of squares in a grid, and then shuffles the " "network by rotating every tile randomly. Your job is to rotate it all back " @@ -1235,15 +1237,15 @@ "Diese Taste dreht alle nicht gesperrten Kacheln in eine zufällige Richtung." #. type: Plain text -#: puzzles.but:486 puzzles.but:575 puzzles.but:621 puzzles.but:662 -#: puzzles.but:720 puzzles.but:794 puzzles.but:901 puzzles.but:993 -#: puzzles.but:1185 puzzles.but:1258 puzzles.but:1331 puzzles.but:1403 -#: puzzles.but:1458 puzzles.but:1502 puzzles.but:1645 puzzles.but:1710 -#: puzzles.but:1781 puzzles.but:1877 puzzles.but:1952 puzzles.but:2091 -#: puzzles.but:2200 puzzles.but:2326 puzzles.but:2400 puzzles.but:2458 -#: puzzles.but:2551 puzzles.but:2641 puzzles.but:2699 puzzles.but:2758 -#: puzzles.but:2848 puzzles.but:2913 puzzles.but:2980 puzzles.but:3055 -#: puzzles.but:3101 +#: puzzles.but:486 puzzles.but:575 puzzles.but:625 puzzles.but:673 +#: puzzles.but:731 puzzles.but:807 puzzles.but:918 puzzles.but:1011 +#: puzzles.but:1203 puzzles.but:1276 puzzles.but:1353 puzzles.but:1425 +#: puzzles.but:1484 puzzles.but:1528 puzzles.but:1671 puzzles.but:1739 +#: puzzles.but:1810 puzzles.but:1906 puzzles.but:1981 puzzles.but:2120 +#: puzzles.but:2236 puzzles.but:2367 puzzles.but:2441 puzzles.but:2500 +#: puzzles.but:2593 puzzles.but:2691 puzzles.but:2749 puzzles.but:2811 +#: puzzles.but:2901 puzzles.but:2969 puzzles.but:3040 puzzles.but:3118 +#: puzzles.but:3164 puzzles.but:3215 puzzles.but:3279 puzzles.but:3332 msgid "(All the actions described in \\k{common-actions} are also available.)" msgstr "" "(Alle in \\k{common-actions} beschriebene Aktionen sind auch verfügbar.)" @@ -1254,27 +1256,28 @@ msgstr "\\I{Parameter, für Net}Net-Parameter" #. type: Plain text -#: puzzles.but:491 puzzles.but:580 puzzles.but:799 puzzles.but:1190 -#: puzzles.but:1263 puzzles.but:1408 puzzles.but:1463 puzzles.but:1650 -#: puzzles.but:1715 puzzles.but:1786 puzzles.but:1882 puzzles.but:1957 -#: puzzles.but:2040 puzzles.but:2096 puzzles.but:2205 puzzles.but:2331 -#: puzzles.but:2405 puzzles.but:2556 puzzles.but:2646 puzzles.but:2704 -#: puzzles.but:2763 puzzles.but:2853 puzzles.but:2918 puzzles.but:2985 -#: puzzles.but:3060 puzzles.but:3106 +#: puzzles.but:491 puzzles.but:580 puzzles.but:812 puzzles.but:1208 +#: puzzles.but:1281 puzzles.but:1430 puzzles.but:1489 puzzles.but:1676 +#: puzzles.but:1744 puzzles.but:1815 puzzles.but:1911 puzzles.but:1986 +#: puzzles.but:2067 puzzles.but:2125 puzzles.but:2241 puzzles.but:2372 +#: puzzles.but:2446 puzzles.but:2598 puzzles.but:2696 puzzles.but:2754 +#: puzzles.but:2816 puzzles.but:2906 puzzles.but:2974 puzzles.but:3045 +#: puzzles.but:3123 puzzles.but:3169 puzzles.but:3220 puzzles.but:3284 +#: puzzles.but:3337 msgid "" -"These parameters are available from the \\q{Custom...} option on the \\q" -"{Type} menu." +"These parameters are available from the \\q{Custom...} option on the " +"\\q{Type} menu." msgstr "" "Diese Parameter sind von der Option \\q{Custom...} im Menü \\q{Type} " "verfügbar." #. type: Plain text -#: puzzles.but:493 puzzles.but:801 puzzles.but:1120 puzzles.but:1192 -#: puzzles.but:1265 puzzles.but:1410 puzzles.but:1652 puzzles.but:1717 -#: puzzles.but:1788 puzzles.but:1884 puzzles.but:1959 puzzles.but:2042 -#: puzzles.but:2098 puzzles.but:2207 puzzles.but:2407 puzzles.but:2706 -#: puzzles.but:2765 puzzles.but:2855 puzzles.but:2920 puzzles.but:3062 -#: puzzles.but:3108 +#: puzzles.but:493 puzzles.but:814 puzzles.but:1138 puzzles.but:1210 +#: puzzles.but:1283 puzzles.but:1432 puzzles.but:1678 puzzles.but:1746 +#: puzzles.but:1817 puzzles.but:1913 puzzles.but:1988 puzzles.but:2069 +#: puzzles.but:2127 puzzles.but:2243 puzzles.but:2448 puzzles.but:2756 +#: puzzles.but:2818 puzzles.but:2908 puzzles.but:2976 puzzles.but:3125 +#: puzzles.but:3171 puzzles.but:3222 puzzles.but:3286 puzzles.but:3339 msgid "\\e{Width}, \\e{Height}" msgstr "\\e{Width} (Breite), \\e{Height} (Höhe)" @@ -1331,18 +1334,18 @@ msgstr "" "Die Gitter-Erzeugung in Net wurde sorgfältig so arrangiert, dass die " "Barrieren unabhängig vom Rest des Gitters sind. Das bedeutet, dass Sie sich " -"den Zufallsstartwert für das aktuelle Puzzle aufschreiben können (siehe \\k" -"{common-id}), den Parameter für die \\e{Barrierenwahrscheinlichkeit} ändern " -"und dann den Zufallsstartwert erneut eingeben sollten Sie genau das gleiche " -"Startgitter sehen, wobei die einzige Änderung die Anzahl von Barrieren ist. " -"Falls Sie daher bei einem bestimmten Gitter festhängen und eine Hilfe " -"benötigen, könnten Sie eine weitere Instanz von Net starten, die gleichen " -"Spieleparameter aber mit einer höheren Barrierenwahrscheinlichkeit " +"den Zufallsstartwert für das aktuelle Puzzle aufschreiben können (siehe " +"\\k{common-id}), den Parameter für die \\e{Barrierenwahrscheinlichkeit} " +"ändern und dann den Zufallsstartwert erneut eingeben sollten Sie genau das " +"gleiche Startgitter sehen, wobei die einzige Änderung die Anzahl von " +"Barrieren ist. Falls Sie daher bei einem bestimmten Gitter festhängen und " +"eine Hilfe benötigen, könnten Sie eine weitere Instanz von Net starten, die " +"gleichen Spieleparameter aber mit einer höheren Barrierenwahrscheinlichkeit " "einrichten und den Zufallsstartwert von dem ursprünglichen Net-Fenster " "eingeben." #. type: e{#1} -#: puzzles.but:524 puzzles.but:831 puzzles.but:1472 +#: puzzles.but:524 puzzles.but:844 puzzles.but:1498 msgid "Ensure unique solution" msgstr "Ensure unique solution" @@ -1452,7 +1455,7 @@ msgstr "Tastaturkürzel, für Cube" #. type: Plain text -#: puzzles.but:563 puzzles.but:1171 puzzles.but:1246 puzzles.but:1304 +#: puzzles.but:563 puzzles.but:1189 puzzles.but:1264 puzzles.but:1322 msgid "This game can be played with either the keyboard or the mouse." msgstr "" "Dieses Spiel kann entweder mit der Tastatur oder der Maus gespielt werden." @@ -1543,8 +1546,8 @@ "Sie wählen eine Platte neben dem Leerraum aus und verschieben sie auf den " "Leerraum. Das Ziel besteht darin, die Platten am Ende in numerischer " "Reihenfolge anzuordnen, wobei der Leerraum sich unten rechts befindet (so " -"dass in der obersten Zeile 1,2,3,4 und in der untersten Zeile 13,14,15,\\e" -"{Leerraum} steht)." +"dass in der obersten Zeile 1,2,3,4 und in der untersten Zeile 13,14,15," +"\\e{Leerraum} steht)." #. type: Plain text #: puzzles.but:606 @@ -1601,11 +1604,21 @@ #. type: Plain text #: puzzles.but:623 +msgid "" +"Pressing \\q{h} will make a suggested move. Pressing \\q{h} enough times " +"will solve the game, but it may scramble your progress while doing so." +msgstr "" +"Durch Druck von \\q{h} wird eine vorgeschlagene Bewegung durchgeführt. Durch " +"Druck von \\q{h} wird das Spiel gelöst, aber Ihr Fortschritt könnte dabei " +"durcheinander geraten." + +#. type: Plain text +#: puzzles.but:627 msgid "\\I{parameters, for Fifteen}Fifteen parameters" msgstr "\\I{Parameter, für Fifteen}Fifteen-Parameter" #. type: Plain text -#: puzzles.but:627 +#: puzzles.but:631 msgid "" "The only options available from the \\q{Custom...} option on the \\q{Type} " "menu are \\e{Width} and \\e{Height}, which are self-explanatory. (Once " @@ -1616,17 +1629,17 @@ "sind. (Sobald Sie diese ändern, ist es natürlich kein \\q{15er Puzzle} mehr!)" #. type: Plain text -#: puzzles.but:630 +#: puzzles.but:634 msgid "\\i{Sixteen}" msgstr "\\i{Sixteen}" #. type: Plain text -#: puzzles.but:632 +#: puzzles.but:636 msgid "\\cfg{winhelp-topic}{games.sixteen}" msgstr "\\cfg{winhelp-topic}{games.sixteen}" #. type: Plain text -#: puzzles.but:642 +#: puzzles.but:646 msgid "" "Another sliding tile puzzle, visually similar to Fifteen (see \\k{fifteen}) " "but with a different type of move. This time, there is no hole: all 16 " @@ -1650,7 +1663,7 @@ "auf einer anderen Gittergröße zu spielen." #. type: Plain text -#: puzzles.but:650 +#: puzzles.but:654 msgid "" "I \\e{might} have invented this game myself, though only by accident if so " "(and I'm sure other people have independently invented it). I thought I was " @@ -1668,12 +1681,12 @@ "das Kreativität von meiner Seite statt reiner Umsetzungsarbeit zeigt." #. type: Plain text -#: puzzles.but:652 +#: puzzles.but:656 msgid "\\I{controls, for Sixteen}Sixteen controls" msgstr "\\I{Steuerung, von Sixteen}Sixteen-Steuerung" #. type: Plain text -#: puzzles.but:656 +#: puzzles.but:660 msgid "" "Left-clicking on an arrow will move the appropriate row or column in the " "direction indicated. Right-clicking will move it in the opposite direction." @@ -1683,7 +1696,7 @@ "entgegengesetzte Richtung bewegt." #. type: Plain text -#: puzzles.but:660 +#: puzzles.but:664 msgid "" "Alternatively, use the cursor keys to move the position indicator around the " "edge of the grid, and use the return key to move the row/column in the " @@ -1694,12 +1707,29 @@ "Spalte in die angegebene Richtung zu bewegen." #. type: Plain text -#: puzzles.but:664 +#: puzzles.but:671 +msgid "" +"You can also move the tiles directly. Move the cursor onto a tile, hold " +"Control and press an arrow key to move the tile under the cursor and move " +"the cursor along with the tile. Or, hold Shift to move only the tile. " +"Pressing Enter simulates holding down Control (press Enter again to " +"release), while pressing Space simulates holding down shift." +msgstr "" +"Sie können die Kacheln auch direkt bewegen. Bewegen Sie den Cursor auf eine " +"Kachel, halten Sie Strg und bewegen Sie die Pfeiltasten, um die Kachel unter " +"dem Cursor zu bewegen und verschieben Sie den Cursor zusammen mit der " +"Kachel. Oder halten Sie Umschalten und verschieben Sie nur die Kachel. Der " +"Druck der Eingabetaste simuliert das Halten von Strg (durch erneuten Druck " +"der Eingabetaste wird dies wieder aufgelöst), das Drücken der Leertaste " +"simuliert das Halten der Umschalttaste." + +#. type: Plain text +#: puzzles.but:675 msgid "\\I{parameters, for Sixteen}Sixteen parameters" msgstr "\\I{Parameter, für Sixteen}Sixteen-Parameter" #. type: Plain text -#: puzzles.but:667 +#: puzzles.but:678 msgid "" "The parameters available from the \\q{Custom...} option on the \\q{Type} " "menu are:" @@ -1708,12 +1738,12 @@ "lauten:" #. type: Plain text -#: puzzles.but:669 +#: puzzles.but:680 msgid "\\e{Width} and \\e{Height}, which are self-explanatory." msgstr "\\e{Width} (Breite) und \\e{Height} (Höhe) sind selbsterklärend." #. type: Plain text -#: puzzles.but:679 +#: puzzles.but:690 msgid "" "You can ask for a limited shuffling operation to be performed on the grid. " "By default, Sixteen will shuffle the grid in such a way that any arrangement " @@ -1736,21 +1766,21 @@ "Lösungen kürzer als die Zielanzahl möglich werden." #. type: Plain text -#: puzzles.but:682 +#: puzzles.but:693 msgid "\\i{Twiddle}" msgstr "\\i{Twiddle}" #. type: Plain text -#: puzzles.but:684 +#: puzzles.but:695 msgid "\\cfg{winhelp-topic}{games.twiddle}" msgstr "\\cfg{winhelp-topic}{games.twiddle}" #. type: Plain text -#: puzzles.but:689 +#: puzzles.but:700 msgid "" -"Twiddle is a tile-rearrangement puzzle, visually similar to Sixteen (see \\k" -"{sixteen}): you are given a grid of square tiles, each containing a number, " -"and your aim is to arrange the numbers into ascending order." +"Twiddle is a tile-rearrangement puzzle, visually similar to Sixteen (see " +"\\k{sixteen}): you are given a grid of square tiles, each containing a " +"number, and your aim is to arrange the numbers into ascending order." msgstr "" "Twiddle ist ein Platten-Neuanordnungspuzzle, visuell ähnlich zu Sixteen " "(siehe \\k{sixteen}). Sie bekommen ein Gitter von quadratischen Kacheln, die " @@ -1758,7 +1788,7 @@ "Reihenfolge anzuordnen." #. type: Plain text -#: puzzles.but:694 +#: puzzles.but:705 msgid "" "In basic Twiddle, your move is to rotate a square group of four tiles about " "their common centre. (Orientation is not significant in the basic puzzle, " @@ -1772,26 +1802,26 @@ "Sie auch größere Quadratgruppen von Platten rotieren." #. type: Plain text -#: puzzles.but:699 +#: puzzles.but:710 msgid "" "I first saw this type of puzzle in the GameCube game \\q{Metroid Prime 2}. " "In the Main Gyro Chamber in that game, there is a puzzle you solve to unlock " "a door, which is a special case of Twiddle. I developed this game as a " "generalisation of that puzzle." msgstr "" -"Ich habe diese Art von Puzzlen das erste Mal in dem GameCube-Spiel \\q" -"{Metroid Prime 2} gesehen. In der Haupt-Gyro-Kammer dieses Spiels gibt es " +"Ich habe diese Art von Puzzlen das erste Mal in dem GameCube-Spiel " +"\\q{Metroid Prime 2} gesehen. In der Haupt-Gyro-Kammer dieses Spiels gibt es " "ein Puzzle, das Sie lösen müssen, um eine Tür zu entsperren, was einen " "Spezialfall von Twiddle darstellt. Ich entwickelte dieses Spiel als " "Verallgemeinerung dieses Puzzles." #. type: Plain text -#: puzzles.but:701 +#: puzzles.but:712 msgid "\\I{controls, for Twiddle}Twiddle controls" msgstr "\\I{Steuerung, von Twiddle}Twiddle-Steuerung" #. type: Plain text -#: puzzles.but:706 +#: puzzles.but:717 msgid "" "To play Twiddle, click the mouse in the centre of the square group you wish " "to rotate. In the basic mode, you rotate a 2\\by\\.2 square, which means you " @@ -1803,7 +1833,7 @@ "müssen, an dem sich die vier Platten treffen." #. type: Plain text -#: puzzles.but:710 +#: puzzles.but:721 msgid "" "In more advanced modes you might be rotating 3\\by\\.3 or even more at a " "time; if the size of the square is odd then you simply click in the centre " @@ -1814,7 +1844,7 @@ "das Zentrum des Quadrates, das Sie rotieren möchten." #. type: Plain text -#: puzzles.but:713 +#: puzzles.but:724 msgid "" "Clicking with the left mouse button rotates the group anticlockwise. " "Clicking with the right button rotates it clockwise." @@ -1824,7 +1854,7 @@ "Uhrzeigersinn." #. type: Plain text -#: puzzles.but:718 +#: puzzles.but:729 msgid "" "You can also move an outline square around the grid with the cursor keys; " "the square is the size above (2\\by\\.2 by default, or larger). Pressing " @@ -1837,33 +1867,33 @@ "gegen oder respektive mit dem Uhrzeigersinn gedreht." #. type: Plain text -#: puzzles.but:722 +#: puzzles.but:733 msgid "\\I{parameters, for Twiddle}Twiddle parameters" msgstr "\\I{Parameter, für Twiddle}Twiddle-Parameter" #. type: Plain text -#: puzzles.but:725 +#: puzzles.but:736 msgid "" "Twiddle provides several configuration options via the \\q{Custom} option on " "the \\q{Type} menu:" msgstr "" -"Twiddle stellt mehrere Konfigurationsmöglichkeiten über die Option \\q" -"{Custom} im Menü \\q{Type} bereit:" +"Twiddle stellt mehrere Konfigurationsmöglichkeiten über die Option " +"\\q{Custom} im Menü \\q{Type} bereit:" #. type: Plain text -#: puzzles.but:727 +#: puzzles.but:738 msgid "You can configure the width and height of the puzzle grid." msgstr "Sie können die Höhe und die Breite des Puzzle-Gitters konfigurieren." #. type: Plain text -#: puzzles.but:729 +#: puzzles.but:740 msgid "You can configure the size of square block that rotates at a time." msgstr "" "Sie können die Größe des Quadratblocks, der auf einmal rotiert, " "konfigurieren." #. type: Plain text -#: puzzles.but:735 +#: puzzles.but:746 msgid "" "You can ask for every square in the grid to be distinguishable (the " "default), or you can ask for a simplified puzzle in which there are groups " @@ -1877,7 +1907,7 @@ "2en in die zweite usw." #. type: Plain text -#: puzzles.but:740 +#: puzzles.but:751 msgid "" "You can configure whether the orientation of tiles matters. If you ask for " "an orientable puzzle, each tile will have a triangle drawn in it. All the " @@ -1888,7 +1918,7 @@ "gezeichnet. Alle Dreiecke müssen nach oben zeigen, um das Puzzle zu lösen." #. type: Plain text -#: puzzles.but:750 +#: puzzles.but:761 msgid "" "You can ask for a limited shuffling operation to be performed on the grid. " "By default, Twiddle will shuffle the grid so much that any arrangement is " @@ -1911,17 +1941,17 @@ "Zielanzahl möglich werden." #. type: Plain text -#: puzzles.but:753 +#: puzzles.but:764 msgid "\\i{Rectangles}" msgstr "\\i{Rectangles}" #. type: Plain text -#: puzzles.but:755 +#: puzzles.but:766 msgid "\\cfg{winhelp-topic}{games.rectangles}" msgstr "\\cfg{winhelp-topic}{games.rectangles}" #. type: Plain text -#: puzzles.but:761 +#: puzzles.but:772 msgid "" "You have a grid of squares, with numbers written in some (but not all) of " "the squares. Your task is to subdivide the grid into rectangles of various " @@ -1936,19 +1966,19 @@ "Rechtecks mit der Zahl auf dem nummerierten Quadrat übereinstimmt." #. type: Plain text -#: puzzles.but:770 +#: puzzles.but:781 msgid "" -"Credit for this game goes to the Japanese puzzle magazine \\i{Nikoli} \\k" -"{nikoli-rect}; I've also seen a Palm implementation at \\i{Puzzle Palace} \\k" -"{puzzle-palace-rect}. Unlike Puzzle Palace's implementation, my version " +"Credit for this game goes to the Japanese puzzle magazine \\i{Nikoli} " +"\\k{nikoli-rect}; I've also seen a Palm implementation at \\i{Puzzle Palace} " +"\\k{puzzle-palace-rect}. Unlike Puzzle Palace's implementation, my version " "automatically generates random grids of any size you like. The quality of " "puzzle design is therefore not quite as good as hand-crafted puzzles would " "be, but on the plus side you get an inexhaustible supply of puzzles tailored " "to your own specification." msgstr "" -"Die Danksagung für dieses Spiel geht an das japanische Puzzlemagazin \\i" -"{Nikoli} \\k{nikoli-rect}; ich habe auch eine Palm-Implementierung im \\i" -"{Puzzle Palace} \\k{puzzle-palace-rect} gesehen. Anders als bei der " +"Die Danksagung für dieses Spiel geht an das japanische Puzzlemagazin " +"\\i{Nikoli} \\k{nikoli-rect}; ich habe auch eine Palm-Implementierung im " +"\\i{Puzzle Palace} \\k{puzzle-palace-rect} gesehen. Anders als bei der " "Implementierung von Puzzle Palace generiert meine Version automatisch Gitter " "in jeder Größe, die Sie wünschen. Die Qualität des Puzzle-Designs ist daher " "nicht ganz so gut wie bei handerstellten Puzzlen, aber auf der Haben-Seite " @@ -1956,35 +1986,32 @@ "eigenen Spezifikationen." #. type: Plain text -#: puzzles.but:772 +#: puzzles.but:784 msgid "" -"\\W{http://www.nikoli.co.jp/puzzles/7/index_text-e.htm}\\cw{http://www." -"nikoli.co.jp/puzzles/7/index_text-e.htm}" -msgstr "" -"\\W{http://www.nikoli.co.jp/puzzles/7/index_text-e.htm}\\cw{http://www." -"nikoli.co.jp/puzzles/7/index_text-e.htm}" +"\\W{http://www.nikoli.co.jp/en/puzzles/shikaku.html}\\cw{http://www.nikoli." +"co.jp/en/puzzles/shikaku.html} (beware of Flash)" +msgstr "\\W{http://www.nikoli.co.jp/en/puzzles/shikaku.html}\\cw{http://www.nikoli.co.jp/en/puzzles/shikaku.html} (Achtung Flash)" #. type: Plain text -#: puzzles.but:774 +#: puzzles.but:786 msgid "" -"\\W{http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}\\cw{http://www." -"puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}" -msgstr "" -"\\W{http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}\\cw{http://www." -"puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}" +"\\W{https://web.archive.org/web/20041024001459/http://www.puzzle.gr.jp/" +"puzzle/sikaku/palm/index.html.en}\\cw{https://web.archive.org/" +"web/20041024001459/http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}" +msgstr "\\W{https://web.archive.org/web/20041024001459/http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}\\cw{https://web.archive.org/web/20041024001459/http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}" #. type: Plain text -#: puzzles.but:776 +#: puzzles.but:788 msgid "\\I{controls, for Rectangles}Rectangles controls" msgstr "\\I{Steuerung, von Rectangles}Rectangles-Steuerung" #. type: Plain text -#: puzzles.but:778 +#: puzzles.but:790 msgid "This game is played with the mouse or cursor keys." msgstr "Dieses Spiel wird mit der Maus oder den Pfeiltasten gespielt." #. type: Plain text -#: puzzles.but:783 +#: puzzles.but:795 msgid "" "Left-click any edge to toggle it on or off, or left-click and drag to draw " "an entire rectangle (or line) on the grid in one go (removing any existing " @@ -1998,45 +2025,46 @@ "Sie den Inhalt eines Rechtecks löschen, ohne seine Ecken zu beeinflussen." #. type: Plain text -#: puzzles.but:790 +#: puzzles.but:803 msgid "" "Alternatively, use the cursor keys to move the position indicator around the " "board. Pressing the return key then allows you to use the cursor keys to " "drag a rectangle out from that position, and pressing the return key again " "completes the rectangle. Using the space bar instead of the return key " "allows you to erase the contents of a rectangle without affecting its edges, " -"as above." +"as above. Pressing escape cancels a drag." msgstr "" "Alternativ verwenden Sie die Pfeiltasten, um den Positionsanzeiger über das " "Brett zu bewegen. Durch Drücken der Eingabetaste können Sie dann mit den " "Pfeiltasten ein Rechteck von dieser Position aus ziehen und durch erneutes " "Drücken der Eingabetaste das Rechteck abschließen. Verwenden Sie die " "Leertaste statt der Eingabetaste, um den Inhalt eines Rechtecks zu löschen, " -"ohne dessen Ecken zu beeinflussen, wie oben." +"ohne dessen Ecken zu beeinflussen, wie oben. Durch Drücken der Taste Esc wird " +"das Ziehen abgebrochen." #. type: Plain text -#: puzzles.but:792 +#: puzzles.but:805 msgid "When a rectangle of the correct size is completed, it will be shaded." msgstr "" "Wenn ein Rechteck der korrekten Größe fertiggestellt ist, wir es schattiert." #. type: Plain text -#: puzzles.but:796 +#: puzzles.but:809 msgid "\\I{parameters, for Rectangles}Rectangles parameters" msgstr "\\I{Parameter, für Rectangles}Rectangles-Parameter" #. type: Plain text -#: puzzles.but:803 +#: puzzles.but:816 msgid "Size of grid, in squares." msgstr "Größe des Gitters, in Quadraten." #. type: e{#1} -#: puzzles.but:805 +#: puzzles.but:818 msgid "Expansion factor" msgstr "Expansion factor" #. type: Plain text -#: puzzles.but:811 +#: puzzles.but:824 msgid "" "This is a mechanism for changing the type of grids generated by the program. " "Some people prefer a grid containing a few large rectangles to one " @@ -2051,7 +2079,7 @@ "und es dann durch Hinzunahme von Spalten und Zeilen zu vergrößern." #. type: Plain text -#: puzzles.but:829 +#: puzzles.but:842 msgid "" "The default expansion factor of zero means that Rectangles will simply " "generate a grid of the size you ask for, and do nothing further. If you set " @@ -2069,7 +2097,7 @@ "komplette Größe ausgedehnt, ohne dass weitere Rechtecke hinzugefügt werden." #. type: Plain text -#: puzzles.but:829 +#: puzzles.but:842 msgid "" "Setting an expansion factor of around 0.5 tends to make the game more " "difficult, and also (in my experience) rewards a less deductive and more " @@ -2079,12 +2107,12 @@ msgstr "" "Das Setzen eines Ausdehnungsfaktors von ungefähr 0.5 erschwert das Spiel " "typischerweise und belohnt (in meiner Erfahrung) mit einem weniger " -"erschließbaren und mehr intuitiven Spielstil. Falls Sie ihn allerdings \\e" -"{zu} hoch setzen, kann das Spiel nicht mehr als ein paar Rechtecke zum " +"erschließbaren und mehr intuitiven Spielstil. Falls Sie ihn allerdings " +"\\e{zu} hoch setzen, kann das Spiel nicht mehr als ein paar Rechtecke zum " "Abdecken des gesamten Gitters erstellen und das Spiel wird trivial lösbar." #. type: Plain text -#: puzzles.but:838 +#: puzzles.but:851 msgid "" "Normally, Rectangles will make sure that the puzzles it presents have only " "one solution. Puzzles with ambiguous sections can be more difficult and more " @@ -2102,17 +2130,17 @@ "dieser Option beschleunigt auch die Erstellung von Puzzles." #. type: Plain text -#: puzzles.but:841 +#: puzzles.but:854 msgid "\\i{Netslide}" msgstr "\\i{Netslide}" #. type: Plain text -#: puzzles.but:843 +#: puzzles.but:856 msgid "\\cfg{winhelp-topic}{games.netslide}" msgstr "\\cfg{winhelp-topic}{games.netslide}" #. type: Plain text -#: puzzles.but:848 +#: puzzles.but:861 msgid "" "This game combines the grid generation of Net (see \\k{net}) with the " "movement of Sixteen (see \\k{sixteen}): you have a Net grid, but instead of " @@ -2125,7 +2153,7 @@ "Platz verschieben, indem Sie eine ganze Zeile auf einmal bewegen." #. type: Plain text -#: puzzles.but:851 +#: puzzles.but:864 msgid "" "As in Sixteen, \\I{controls, for Netslide}control is with the mouse or " "cursor keys. See \\k{sixteen-controls}." @@ -2134,33 +2162,33 @@ "Maus oder den Pfeiltasten. Siehe \\k{sixteen-controls}." #. type: Plain text -#: puzzles.but:855 +#: puzzles.but:868 msgid "" "\\I{parameters, for Netslide}The available game parameters have similar " "meanings to those in Net (see \\k{net-params}) and Sixteen (see \\k{sixteen-" "params})." msgstr "" "\\I{Parameter, für Netslide}Die verfügbaren Spielparameter haben ähnliche " -"Bedeutungen wie bei Net (siehe \\k{net-params}) und Sixteen (siehe \\k" -"{sixteen-params})." +"Bedeutungen wie bei Net (siehe \\k{net-params}) und Sixteen (siehe " +"\\k{sixteen-params})." #. type: Plain text -#: puzzles.but:857 +#: puzzles.but:870 msgid "Netslide was contributed to this collection by Richard Boulton." msgstr "Netslide ist ein Beitrag von Richard Boulton zu dieser Sammlung." #. type: Plain text -#: puzzles.but:860 +#: puzzles.but:873 msgid "\\i{Pattern}" msgstr "\\i{Pattern}" #. type: Plain text -#: puzzles.but:862 +#: puzzles.but:875 msgid "\\cfg{winhelp-topic}{games.pattern}" msgstr "\\cfg{winhelp-topic}{games.pattern}" #. type: Plain text -#: puzzles.but:868 +#: puzzles.but:881 msgid "" "You have a grid of squares, which must all be filled in either black or " "white. Beside each row of the grid are listed the lengths of the runs of " @@ -2176,18 +2204,18 @@ "weiß einzufärben." #. type: Plain text -#: puzzles.but:872 +#: puzzles.but:885 msgid "" -"I first saw this puzzle form around 1995, under the name \\q{\\i" -"{nonograms}}. I've seen it in various places since then, under different " -"names." +"I first saw this puzzle form around 1995, under the name " +"\\q{\\i{nonograms}}. I've seen it in various places since then, under " +"different names." msgstr "" "Ich habe diese Art von Puzzle das erste Mal ungefähr 1995 gesehen, unter dem " "Namen \\q{\\i{nonograms}}. Seitdem habe ich es an verschiedenen Orten unter " "verschiedenen Namen gesehen." #. type: Plain text -#: puzzles.but:880 +#: puzzles.but:893 msgid "" "Normally, puzzles of this type turn out to be a meaningful picture of " "something once you've solved them. However, since this version generates the " @@ -2206,17 +2234,17 @@ "besteht allerdings darin, dass Ihnen nie die Puzzle ausgehen." #. type: Plain text -#: puzzles.but:882 +#: puzzles.but:895 msgid "\\I{controls, for Pattern}Pattern controls" msgstr "\\I{Steuerung, von Pattern}Pattern-Steuerung" #. type: Plain text -#: puzzles.but:884 puzzles.but:1072 +#: puzzles.but:897 puzzles.but:1090 msgid "This game is played with the mouse." msgstr "Dieses Spiel wird mit der Maus gespielt." #. type: Plain text -#: puzzles.but:889 +#: puzzles.but:902 msgid "" "Left-click in a square to colour it black. Right-click to colour it white. " "If you make a mistake, you can middle-click, or hold down Shift while " @@ -2230,7 +2258,7 @@ "(was bedeutet, dass es wieder \\q{unentschieden} ist)." #. type: Plain text -#: puzzles.but:895 +#: puzzles.but:908 msgid "" "You can click and drag with the left or right mouse button to colour a " "vertical or horizontal line of squares black or white at a time " @@ -2244,7 +2272,7 @@ "Rechteck an Quadraten grau färben." #. type: Plain text -#: puzzles.but:899 +#: puzzles.but:912 msgid "" "You can also move around the grid with the cursor keys. Pressing the return " "key will cycle the current cell through empty, then black, then white, then " @@ -2256,12 +2284,23 @@ "umgedrehter Reihenfolge." #. type: Plain text -#: puzzles.but:903 +#: puzzles.but:916 +msgid "" +"Moving the cursor while holding Control will colour the moved-over squares " +"black. Holding Shift will colour the moved-over squares white, and holding " +"both will colour them grey." +msgstr "" +"Bewegen des Cursors während Strg gehalten wird färbt die überstrichenen " +"Quadrate schwarz. Halten von Umschalten färbt die überstrichenen Quadrate " +"weiß und Halten von beiden färbt sie grau." + +#. type: Plain text +#: puzzles.but:920 msgid "\\I{parameters, for Pattern}Pattern parameters" msgstr "\\I{Parameter, für Pattern}Pattern-Parameter" #. type: Plain text -#: puzzles.but:906 +#: puzzles.but:923 msgid "" "The only options available from the \\q{Custom...} option on the \\q{Type} " "menu are \\e{Width} and \\e{Height}, which are self-explanatory." @@ -2271,17 +2310,17 @@ "selbsterklärend sind." #. type: Plain text -#: puzzles.but:909 +#: puzzles.but:926 msgid "\\i{Solo}" msgstr "\\i{Solo}" #. type: Plain text -#: puzzles.but:911 +#: puzzles.but:928 msgid "\\cfg{winhelp-topic}{games.solo}" msgstr "\\cfg{winhelp-topic}{games.solo}" #. type: Plain text -#: puzzles.but:915 +#: puzzles.but:932 msgid "" "You have a square grid, which is divided into as many equally sized sub-" "blocks as the grid has rows. Each square must be filled in with a digit from " @@ -2292,22 +2331,22 @@ "Ziffer von 1 bis zu der Größe des Gitters befüllt werden, so dass" #. type: Plain text -#: puzzles.but:917 +#: puzzles.but:934 msgid "every row contains only one occurrence of each digit" msgstr "jede Zeile jede Ziffer nur einmal erhält," #. type: Plain text -#: puzzles.but:919 +#: puzzles.but:936 msgid "every column contains only one occurrence of each digit" msgstr "jede Spalte jede Ziffer nur einmal erhält und" #. type: Plain text -#: puzzles.but:921 +#: puzzles.but:938 msgid "every block contains only one occurrence of each digit." msgstr "jeder Block jede Ziffer nur einmal erhält." #. type: Plain text -#: puzzles.but:924 +#: puzzles.but:941 msgid "" "(optionally, by default off) each of the square's two main diagonals " "contains only one occurrence of each digit." @@ -2316,7 +2355,7 @@ "Quadrats jede Ziffer nur einmal erhält." #. type: Plain text -#: puzzles.but:927 +#: puzzles.but:944 msgid "" "You are given some of the numbers as clues; your aim is to place the rest of " "the numbers correctly." @@ -2325,7 +2364,7 @@ "restlichen Zahlen korrekt zu platzieren." #. type: Plain text -#: puzzles.but:935 +#: puzzles.but:952 msgid "" "Under the default settings, the sub-blocks are square or rectangular. The " "default puzzle size is 3\\by\\.3 (a 9\\by\\.9 actual grid, divided into nine " @@ -2344,7 +2383,7 @@ "unterscheiden." #. type: Plain text -#: puzzles.but:942 +#: puzzles.but:959 msgid "" "Another available mode is \\q{killer}. In this mode, clues are not given in " "the form of filled-in squares; instead, the grid is divided into \\q{cages} " @@ -2360,7 +2399,7 @@ "selbst wenn der Käfig die Grenzen existierender Regionen überschreitet." #. type: Plain text -#: puzzles.but:948 +#: puzzles.but:965 msgid "" "If you select a puzzle size which requires more than 9 digits, the " "additional digits will be letters of the alphabet. For example, if you " @@ -2374,7 +2413,7 @@ "ausgewählt werden." #. type: Plain text -#: puzzles.but:956 +#: puzzles.but:973 msgid "" "I first saw this puzzle in \\i{Nikoli} \\k{nikoli-solo}, although it's also " "been popularised by various newspapers under the name \\q{Sudoku} or \\q{Su " @@ -2391,16 +2430,14 @@ "Puzzles kann in Wikipedia \\k{wikipedia-solo} gefunden werden." #. type: Plain text -#: puzzles.but:958 +#: puzzles.but:976 msgid "" -"\\W{http://www.nikoli.co.jp/puzzles/1/index_text-e.htm}\\cw{http://www." -"nikoli.co.jp/puzzles/1/index_text-e.htm}" -msgstr "" -"\\W{http://www.nikoli.co.jp/puzzles/1/index_text-e.htm}\\cw{http://www." -"nikoli.co.jp/puzzles/1/index_text-e.htm}" +"\\W{http://www.nikoli.co.jp/en/puzzles/sudoku.html}\\cw{http://www.nikoli.co." +"jp/en/puzzles/sudoku.html} (beware of Flash)" +msgstr "\\W{http://www.nikoli.co.jp/en/puzzles/sudoku.html}\\cw{http://www.nikoli.co.jp/en/puzzles/sudoku.html} (Achtung Flash)" #. type: Plain text -#: puzzles.but:960 +#: puzzles.but:978 msgid "" "\\W{http://en.wikipedia.org/wiki/Sudoku}\\cw{http://en.wikipedia.org/wiki/" "Sudoku}" @@ -2409,12 +2446,12 @@ "Sudoku}" #. type: Plain text -#: puzzles.but:962 +#: puzzles.but:980 msgid "\\I{controls, for Solo}Solo controls" msgstr "\\I{Steuerung, von Solo}Solo-Steuerung" #. type: Plain text -#: puzzles.but:967 +#: puzzles.but:985 msgid "" "To play Solo, simply click the mouse in any empty square and then type a " "digit or letter on the keyboard to fill that square. If you make a mistake, " @@ -2428,7 +2465,7 @@ "wieder zu leeren (oder verwenden Sie die Undo-Funktion)." #. type: Plain text -#: puzzles.but:972 puzzles.but:2300 puzzles.but:2527 +#: puzzles.but:990 puzzles.but:2336 puzzles.but:2569 msgid "" "If you \\e{right}-click in a square and then type a number, that number will " "be entered in the square as a \\q{pencil mark}. You can have pencil marks " @@ -2442,7 +2479,7 @@ "über Bleistiftmarkierungen verfügen." #. type: Plain text -#: puzzles.but:978 puzzles.but:2306 puzzles.but:2533 puzzles.but:2623 +#: puzzles.but:996 puzzles.but:2342 puzzles.but:2575 puzzles.but:2669 msgid "" "The game pays no attention to pencil marks, so exactly what you use them for " "is up to you: you can use them as reminders that a particular square needs " @@ -2457,7 +2494,7 @@ "für ein gegebenes Quadrat verwenden oder irgendetwas anderes, was Sie mögen." #. type: Plain text -#: puzzles.but:981 puzzles.but:2309 puzzles.but:2536 puzzles.but:2626 +#: puzzles.but:999 puzzles.but:2345 puzzles.but:2578 puzzles.but:2672 msgid "" "To erase a single pencil mark, right-click in the square and type the same " "number again." @@ -2466,7 +2503,7 @@ "Quadrat und tippen Sie die Zahl noch mal." #. type: Plain text -#: puzzles.but:985 puzzles.but:2313 puzzles.but:2540 puzzles.but:2630 +#: puzzles.but:1003 puzzles.but:2349 puzzles.but:2582 puzzles.but:2676 msgid "" "All pencil marks in a square are erased when you left-click and type a " "number, or when you left-click and press space. Right-clicking and pressing " @@ -2478,7 +2515,7 @@ "Bleistiftmarkierungen löschen." #. type: Plain text -#: puzzles.but:991 puzzles.but:2324 +#: puzzles.but:1009 puzzles.but:2360 msgid "" "Alternatively, use the cursor keys to move the mark around the grid. " "Pressing the return key toggles the mark (from a normal mark to a pencil " @@ -2492,12 +2529,12 @@ "die Verwendung der Leertaste wird ein gefülltes Quadrat leeren." #. type: Plain text -#: puzzles.but:995 +#: puzzles.but:1013 msgid "\\I{parameters, for Solo}Solo parameters" msgstr "\\I{Parameter, für Solo}Solo-Parameter" #. type: Plain text -#: puzzles.but:1001 +#: puzzles.but:1019 msgid "" "Solo allows you to configure two separate dimensions of the puzzle grid on " "the \\q{Type} menu: the number of columns, and the number of rows, into " @@ -2505,14 +2542,14 @@ "for example, if you select 2 columns and 3 rows, each actual block will have " "3 columns and 2 rows.)" msgstr "" -"Solo erlaubt Ihnen, zwei separate Dimensionen des Puzzlegitters im Menü \\q" -"{Type} zu konfigurieren: die Anzahl der Spalten und die Anzahl der Zeilen, " -"in die das Hauptgitter eingeteilt wird. (Die Größe eines Blocks ist hierzu " -"invers: Falls Sie beispielsweise 2 Spalten und 3 Zeilen wählen, wird jeder " -"Block tatsächlich 3 Spalten und 2 Zeilen haben.)" +"Solo erlaubt Ihnen, zwei separate Dimensionen des Puzzlegitters im Menü " +"\\q{Type} zu konfigurieren: die Anzahl der Spalten und die Anzahl der " +"Zeilen, in die das Hauptgitter eingeteilt wird. (Die Größe eines Blocks ist " +"hierzu invers: Falls Sie beispielsweise 2 Spalten und 3 Zeilen wählen, wird " +"jeder Block tatsächlich 3 Spalten und 2 Zeilen haben.)" #. type: Plain text -#: puzzles.but:1007 +#: puzzles.but:1025 msgid "" "If you tick the \\q{X} checkbox, Solo will apply the optional extra " "constraint that the two main diagonals of the grid also contain one of every " @@ -2527,7 +2564,7 @@ "dass Sie sehen können, dass der Modus aktiviert wurde." #. type: Plain text -#: puzzles.but:1014 +#: puzzles.but:1032 msgid "" "If you tick the \\q{Jigsaw} checkbox, Solo will generate randomly shaped sub-" "blocks. In this mode, the actual grid size will be taken to be the product " @@ -2544,7 +2581,7 @@ "Gittergröße und es kann sogar eine Primzahl sein, wenn Sie dies möchten." #. type: Plain text -#: puzzles.but:1019 +#: puzzles.but:1037 msgid "" "If you tick the \\q{Killer} checkbox, Solo will generate a set of of cages, " "which are randomly shaped and drawn in an outline of a different colour. " @@ -2557,7 +2594,7 @@ "Hinweis, der die Summe der Ziffern aller Quadrate in dieser Region angibt." #. type: Plain text -#: puzzles.but:1025 +#: puzzles.but:1043 msgid "" "You can also configure the type of symmetry shown in the generated puzzles. " "More symmetry makes the puzzles look prettier but may also make them easier, " @@ -2572,7 +2609,7 @@ "besteht die Freiheit, sowenige Hilfestellungen wie möglich zu enthalten." #. type: Plain text -#: puzzles.but:1039 +#: puzzles.but:1057 msgid "" "Finally, you can configure the difficulty of the generated puzzles. " "Difficulty levels are judged by the complexity of the techniques of " @@ -2590,9 +2627,9 @@ "konfigurieren. Schwierigkeitsstufen basieren auf der Komplexität der " "Techniken, die zum Lösen des Puzzles benötigt werden: Jede Stufe benötigt " "einen Schlussfolgerungsmodus, der in der vorherigen Stufe nicht notwendig " -"war. Insbesondere gibt es in den Schwierigkeitsstufen \\q{Trivial} und \\q" -"{Basic} ein Quadrat, in dem Sie zu allen Zeiten eine einzelne Zahl eintragen " -"können, während Sie in der Stufe \\q{Intermediate} und höher " +"war. Insbesondere gibt es in den Schwierigkeitsstufen \\q{Trivial} und " +"\\q{Basic} ein Quadrat, in dem Sie zu allen Zeiten eine einzelne Zahl " +"eintragen können, während Sie in der Stufe \\q{Intermediate} und höher " "Teilschlussfolgerungen über die \\e{Menge} aller Quadrate machen müssen, in " "denen eine Zahl sein könnte (oder der Satz an Zahlen, der in einem Quadrat " "sein könnte). \\#{Advanced, Extreme?} In der Stufe \\q{Unreasonable} ist " @@ -2600,7 +2637,7 @@ "geratene Zahl als falsch herausstellt wieder schrittweise zurückgehen." #. type: Plain text -#: puzzles.but:1045 +#: puzzles.but:1063 msgid "" "Generating difficult puzzles is itself difficult: if you select one of the " "higher difficulty levels, Solo may have to make many attempts at generating " @@ -2614,17 +2651,17 @@ "auch eine große Puzzlegröße ausgewählt haben." #. type: Plain text -#: puzzles.but:1048 +#: puzzles.but:1066 msgid "\\i{Mines}" msgstr "\\i{Mines}" #. type: Plain text -#: puzzles.but:1050 +#: puzzles.but:1068 msgid "\\cfg{winhelp-topic}{games.mines}" msgstr "\\cfg{winhelp-topic}{games.mines}" #. type: Plain text -#: puzzles.but:1057 +#: puzzles.but:1075 msgid "" "You have a grid of covered squares, some of which contain mines, but you " "don't know which. Your job is to uncover every square which does \\e{not} " @@ -2640,7 +2677,7 @@ "benachbarten acht Quadraten befinden." #. type: Plain text -#: puzzles.but:1060 +#: puzzles.but:1078 msgid "" "This game needs no introduction; popularised by Windows, it is perhaps the " "single best known desktop puzzle game in existence." @@ -2649,7 +2686,7 @@ "ist vielleicht das bekannteste Desktop-Puzzle überhaupt." #. type: Plain text -#: puzzles.but:1068 +#: puzzles.but:1086 msgid "" "This version of it has an unusual property. By default, it will generate its " "mine positions in such a way as to ensure that you never need to \\e{guess} " @@ -2667,17 +2704,17 @@ "zu wissen, wo diese sind." #. type: Plain text -#: puzzles.but:1070 +#: puzzles.but:1088 msgid "\\I{controls, for Mines}Mines controls" msgstr "\\I{Steuerung, von Mines}Mines-Steuerung" #. type: Plain text -#: puzzles.but:1074 +#: puzzles.but:1092 msgid "If you left-click in a covered square, it will be uncovered." msgstr "Falls Sie auf ein bedecktes Quadrat linksklicken, wird es aufgedeckt." #. type: Plain text -#: puzzles.but:1079 +#: puzzles.but:1097 msgid "" "If you right-click in a covered square, it will place a flag which indicates " "that the square is believed to be a mine. Left-clicking in a marked square " @@ -2691,7 +2728,7 @@ "wieder entfernen." #. type: Plain text -#: puzzles.but:1087 +#: puzzles.but:1105 msgid "" "If you left-click in an \\e{uncovered} square, it will \\q{clear around} the " "square. This means: if the square has exactly as many flags surrounding it " @@ -2709,7 +2746,7 @@ "einzeln durch Klicken aufdecken zu müssen." #. type: Plain text -#: puzzles.but:1093 +#: puzzles.but:1111 msgid "" "If you uncover a square which has \\e{no} mines in the surrounding eight " "squares, then it is obviously safe to uncover those squares in turn, and so " @@ -2724,7 +2761,7 @@ "Gebiet zur Erforschung öffnen." #. type: Plain text -#: puzzles.but:1099 +#: puzzles.but:1117 msgid "" "You can also use the cursor keys to move around the minefield. Pressing the " "return key in a covered square uncovers it, and in an uncovered square will " @@ -2739,13 +2776,13 @@ "rechten Taste)." #. type: Plain text -#: puzzles.but:1101 +#: puzzles.but:1119 msgid "All the actions described in \\k{common-actions} are also available." msgstr "" "Alle in \\k{common-actions} beschriebenen Aktionen sind auch verfügbar." #. type: Plain text -#: puzzles.but:1109 +#: puzzles.but:1127 msgid "" "Even Undo is available, although you might consider it cheating to use it. " "If you step on a mine, the program will only reveal the mine in question " @@ -2764,7 +2801,7 @@ "Spielende, ob Sie es ohne Fehler geschafft haben." #. type: Plain text -#: puzzles.but:1113 +#: puzzles.but:1131 msgid "" "(If you really want to know the full layout of the grid, which other " "implementations will show you after you die, you can always use the Solve " @@ -2775,32 +2812,32 @@ "Menüoption Solve verwenden.)" #. type: Plain text -#: puzzles.but:1115 +#: puzzles.but:1133 msgid "\\I{parameters, for Mines}Mines parameters" msgstr "\\I{Parameter, für Mines}Mines-Parameter" #. type: Plain text -#: puzzles.but:1118 +#: puzzles.but:1136 msgid "" "The options available from the \\q{Custom...} option on the \\q{Type} menu " "are:" msgstr "Die unter \\q{Custom} im Menü \\q{Type} verfügbaren Optionen sind:" #. type: Plain text -#: puzzles.but:1122 puzzles.but:1194 puzzles.but:1267 puzzles.but:1719 -#: puzzles.but:1790 puzzles.but:1886 puzzles.but:2044 puzzles.but:2100 -#: puzzles.but:2209 puzzles.but:2409 puzzles.but:2708 puzzles.but:2857 -#: puzzles.but:2922 puzzles.but:3064 +#: puzzles.but:1140 puzzles.but:1212 puzzles.but:1285 puzzles.but:1748 +#: puzzles.but:1819 puzzles.but:1915 puzzles.but:2071 puzzles.but:2129 +#: puzzles.but:2245 puzzles.but:2450 puzzles.but:2758 puzzles.but:2910 +#: puzzles.but:2978 puzzles.but:3127 puzzles.but:3341 msgid "Size of grid in squares." msgstr "Größe des Gitters in Quadraten" #. type: e{#1} -#: puzzles.but:1124 +#: puzzles.but:1142 msgid "Mines" msgstr "Mines" #. type: Plain text -#: puzzles.but:1129 +#: puzzles.but:1147 msgid "" "Number of mines in the grid. You can enter this as an absolute mine count, " "or alternatively you can put a \\cw{%} sign on the end in which case the " @@ -2811,7 +2848,7 @@ "Spiel für den gewünschten Anteil an Minen auf Quadraten im Spiel sorgen wird." #. type: Plain text -#: puzzles.but:1136 +#: puzzles.but:1154 msgid "" "Beware of setting the mine count too high. At very high densities, the " "program may spend forever searching for a solvable grid." @@ -2820,12 +2857,12 @@ "Programm ewig suchen, um ein lösbares Gitter zu ermitteln." #. type: e{#1} -#: puzzles.but:1138 puzzles.but:1210 +#: puzzles.but:1156 puzzles.but:1228 msgid "Ensure solubility" msgstr "Ensure solubility" #. type: Plain text -#: puzzles.but:1143 +#: puzzles.but:1161 msgid "" "When this option is enabled (as it is by default), Mines will ensure that " "the entire grid can be fully deduced starting from the initial open space. " @@ -2839,17 +2876,17 @@ "Option abschalten." #. type: Plain text -#: puzzles.but:1146 +#: puzzles.but:1164 msgid "\\i{Same Game}" msgstr "\\i{Same Game}" #. type: Plain text -#: puzzles.but:1148 +#: puzzles.but:1166 msgid "\\cfg{winhelp-topic}{games.samegame}" msgstr "\\cfg{winhelp-topic}{games.samegame}" #. type: Plain text -#: puzzles.but:1153 +#: puzzles.but:1171 msgid "" "You have a grid of coloured squares, which you have to clear by highlighting " "contiguous regions of more than one coloured square; the larger the region " @@ -2861,7 +2898,7 @@ "bekommen Sie (und desto schneller bereinigen Sie die Arena)." #. type: Plain text -#: puzzles.but:1157 +#: puzzles.but:1175 msgid "" "If you clear the grid you win. If you end up with nothing but single squares " "(i.e., there are no more clickable regions left) you lose." @@ -2871,7 +2908,7 @@ "verlieren Sie." #. type: Plain text -#: puzzles.but:1161 +#: puzzles.but:1179 msgid "" "Removing a region causes the rest of the grid to shuffle up: blocks that are " "suspended will fall down (first), and then empty columns are filled from the " @@ -2882,40 +2919,40 @@ "erstes) und dann werden leere Spalten von rechts aus aufgefüllt." #. type: Plain text -#: puzzles.but:1163 +#: puzzles.but:1181 msgid "Same Game was contributed to this collection by James Harvey." -msgstr "Same Game wurde von James Harvey zu dieser Sammlung beigesteuert." +msgstr "Same Game ist ein Beitrag von James Harvey zu dieser Sammlung." #. type: Plain text -#: puzzles.but:1165 +#: puzzles.but:1183 msgid "\\i{Same Game controls}" msgstr "\\i{Same Game-Steuerung}" #. type: IM{#1} -#: puzzles.but:1166 puzzles.but:1167 puzzles.but:1168 +#: puzzles.but:1184 puzzles.but:1185 puzzles.but:1186 msgid "Same Game controls" msgstr "Same Game-Steuerung" #. type: IM -#: puzzles.but:1166 +#: puzzles.but:1184 #, no-wrap msgid "controls, for Same Game" msgstr "Steuerung, von Same Game" #. type: IM -#: puzzles.but:1167 +#: puzzles.but:1185 #, no-wrap msgid "keys, for Same Game" msgstr "Tasten, für Same Game" #. type: IM -#: puzzles.but:1168 +#: puzzles.but:1186 #, no-wrap msgid "shortcuts (keyboard), for Same Game" msgstr "Tastaturkürzel, für Same Game" #. type: Plain text -#: puzzles.but:1174 +#: puzzles.but:1192 msgid "" "If you left-click an unselected region, it becomes selected (possibly " "clearing the current selection)." @@ -2924,7 +2961,7 @@ "ausgewählt (und möglicherweise eine bestehende Auswahl aufgehoben)." #. type: Plain text -#: puzzles.but:1177 +#: puzzles.but:1195 msgid "" "If you left-click the selected region, it will be removed (and the rest of " "the grid shuffled immediately)." @@ -2933,14 +2970,14 @@ "der Rest des Gitters sofort durcheinandergewürfelt)." #. type: Plain text -#: puzzles.but:1179 +#: puzzles.but:1197 msgid "If you right-click the selected region, it will be unselected." msgstr "" "Falls Sie auf eine ausgewählte Region rechtsklicken, wird die Auswahl " "aufgehoben." #. type: Plain text -#: puzzles.but:1183 +#: puzzles.but:1201 msgid "" "The cursor keys move a cursor around the grid. Pressing the Space or Enter " "keys while the cursor is in an unselected region selects it; pressing Space " @@ -2952,17 +2989,17 @@ "beschrieben, entfernt." #. type: Plain text -#: puzzles.but:1187 +#: puzzles.but:1205 msgid "\\I{parameters, for Same Game}Same Game parameters" msgstr "\\I{Parameter, für Same Game}Same Game-Parameter" #. type: e{#1} -#: puzzles.but:1196 +#: puzzles.but:1214 msgid "No. of colours" msgstr "No. of colours" #. type: Plain text -#: puzzles.but:1200 +#: puzzles.but:1218 msgid "" "Number of different colours used to fill the grid; the more colours, the " "fewer large regions of colour and thus the more difficult it is to " @@ -2973,15 +3010,15 @@ "und desto schwieriger ist es, das Gitter erfolgreich zu bereinigen." #. type: e{#1} -#: puzzles.but:1202 +#: puzzles.but:1220 msgid "Scoring system" msgstr "Scoring system" #. type: Plain text -#: puzzles.but:1208 +#: puzzles.but:1226 msgid "" -"Controls the precise mechanism used for scoring. With the default system, \\q" -"{(n-2)^2}, only regions of three squares or more will score any points at " +"Controls the precise mechanism used for scoring. With the default system, " +"\\q{(n-2)^2}, only regions of three squares or more will score any points at " "all. With the alternative \\q{(n-1)^2} system, regions of two squares score " "a point each, and larger regions score relatively more points." msgstr "" @@ -2992,7 +3029,7 @@ "bringen relativ mehr Punkte." #. type: Plain text -#: puzzles.but:1213 +#: puzzles.but:1231 msgid "" "If this option is ticked (the default state), generated grids will be " "guaranteed to have at least one solution." @@ -3001,7 +3038,7 @@ "generierten Gitter mindestens eine Lösung." #. type: Plain text -#: puzzles.but:1225 +#: puzzles.but:1243 msgid "" "If you turn it off, the game generator will not try to guarantee soluble " "grids; it will, however, still ensure that there are at least 2 squares of " @@ -3019,17 +3056,17 @@ "größerer Punktzahlen führen; sie könnten auch schneller generiert sein." #. type: Plain text -#: puzzles.but:1228 +#: puzzles.but:1246 msgid "\\i{Flip}" msgstr "\\i{Flip}" #. type: Plain text -#: puzzles.but:1230 +#: puzzles.but:1248 msgid "\\cfg{winhelp-topic}{games.flip}" msgstr "\\cfg{winhelp-topic}{games.flip}" #. type: Plain text -#: puzzles.but:1235 +#: puzzles.but:1253 msgid "" "You have a grid of squares, some light and some dark. Your aim is to light " "all the squares up at the same time. You can choose any square and flip its " @@ -3043,7 +3080,7 @@ "Quadrate ihren Zustand." #. type: Plain text -#: puzzles.but:1238 +#: puzzles.but:1256 msgid "" "Each square contains a small diagram showing which other squares change when " "you flip it." @@ -3052,35 +3089,35 @@ "Quadrate sich ändern, wenn Sie es umschalten." #. type: Plain text -#: puzzles.but:1240 +#: puzzles.but:1258 msgid "\\i{Flip controls}" msgstr "\\i{Flip-Steuerung}" #. type: IM{#1} -#: puzzles.but:1241 puzzles.but:1242 puzzles.but:1243 +#: puzzles.but:1259 puzzles.but:1260 puzzles.but:1261 msgid "Flip controls" msgstr "Flip-Steuerung" #. type: IM -#: puzzles.but:1241 +#: puzzles.but:1259 #, no-wrap msgid "controls, for Flip" msgstr "Steuerung, von Flip" #. type: IM -#: puzzles.but:1242 +#: puzzles.but:1260 #, no-wrap msgid "keys, for Flip" msgstr "Tasten, für Flip" #. type: IM -#: puzzles.but:1243 +#: puzzles.but:1261 #, no-wrap msgid "shortcuts (keyboard), for Flip" msgstr "Tastaturkürzel, für Flip" #. type: Plain text -#: puzzles.but:1250 +#: puzzles.but:1268 msgid "" "Left-click in a square to flip it and its associated squares, or use the " "cursor keys to choose a square and the space bar or Enter key to flip." @@ -3090,7 +3127,7 @@ "Leer- oder Eingabetaste, um es umzudrehen." #. type: Plain text -#: puzzles.but:1256 +#: puzzles.but:1274 msgid "" "If you use the \\q{Solve} function on this game, it will mark some of the " "squares in red. If you click once in every square with a red mark, the game " @@ -3106,17 +3143,17 @@ "die Lösung zu erreichen.)" #. type: Plain text -#: puzzles.but:1260 +#: puzzles.but:1278 msgid "\\I{parameters, for flip}Flip parameters" msgstr "\\I{Parameter, für Flip}Flip-Parameter" #. type: e{#1} -#: puzzles.but:1269 +#: puzzles.but:1287 msgid "Shape type" msgstr "Shape type" #. type: Plain text -#: puzzles.but:1276 +#: puzzles.but:1294 msgid "" "This control determines the shape of the region which is flipped by clicking " "in any given square. The default setting, \\q{Crosses}, causes every square " @@ -3132,17 +3169,17 @@ "Quadrat gewählt wird, so dass das Spiel jedes mal anders ist." #. type: Plain text -#: puzzles.but:1279 +#: puzzles.but:1297 msgid "\\i{Guess}" msgstr "\\i{Guess}" #. type: Plain text -#: puzzles.but:1281 +#: puzzles.but:1299 msgid "\\cfg{winhelp-topic}{games.guess}" msgstr "\\cfg{winhelp-topic}{games.guess}" #. type: Plain text -#: puzzles.but:1285 +#: puzzles.but:1303 msgid "" "You have a set of coloured pegs, and have to reproduce a predetermined " "sequence of them (chosen by the computer) within a certain number of guesses." @@ -3152,7 +3189,7 @@ "von Rateversuchen reproduzieren." #. type: Plain text -#: puzzles.but:1289 +#: puzzles.but:1307 msgid "" "Each guess gets marked with the number of correctly-coloured pegs in the " "correct places (in black), and also the number of correctly-coloured pegs in " @@ -3163,12 +3200,12 @@ "an den falschen Plätzen (in weiß) markiert." #. type: Plain text -#: puzzles.but:1294 +#: puzzles.but:1312 msgid "" -"This game is also known (and marketed, by Hasbro, mainly) as a board game \\q" -"{\\i{Mastermind}}, with 6 colours, 4 pegs per row, and 10 guesses. However, " -"this version allows custom settings of number of colours (up to 10), number " -"of pegs per row, and number of guesses." +"This game is also known (and marketed, by Hasbro, mainly) as a board game " +"\\q{\\i{Mastermind}}, with 6 colours, 4 pegs per row, and 10 guesses. " +"However, this version allows custom settings of number of colours (up to " +"10), number of pegs per row, and number of guesses." msgstr "" "Dieses Spiel ist auch (als von hauptsächlich Hasbro vertriebenes) Brettspiel " "\\q{\\i{Mastermind}} mit sechs Farben, vier Stiften pro Zeile und 10 " @@ -3177,40 +3214,40 @@ "der Anzahl der Rateversuche." #. type: Plain text -#: puzzles.but:1296 +#: puzzles.but:1314 msgid "Guess was contributed to this collection by James Harvey." -msgstr "Guess wurde von James Harvey zu dieser Sammlung beigesteuert." +msgstr "Guess ist ein Beitrag von James Harvey zu dieser Sammlung." #. type: Plain text -#: puzzles.but:1298 +#: puzzles.but:1316 msgid "\\i{Guess controls}" msgstr "\\i{Guess-Steuerung}" #. type: IM{#1} -#: puzzles.but:1299 puzzles.but:1300 puzzles.but:1301 +#: puzzles.but:1317 puzzles.but:1318 puzzles.but:1319 msgid "Guess controls" msgstr "Guess-Steuerung" #. type: IM -#: puzzles.but:1299 +#: puzzles.but:1317 #, no-wrap msgid "controls, for Guess" msgstr "Steuerung, von Guess" #. type: IM -#: puzzles.but:1300 +#: puzzles.but:1318 #, no-wrap msgid "keys, for Guess" msgstr "Tasten, für Guess" #. type: IM -#: puzzles.but:1301 +#: puzzles.but:1319 #, no-wrap msgid "shortcuts (keyboard), for Guess" msgstr "Tastaturkürzel, für Guess" #. type: Plain text -#: puzzles.but:1309 +#: puzzles.but:1327 msgid "" "With the mouse, drag a coloured peg from the tray on the left-hand side to " "its required position in the current guess; pegs may also be dragged from " @@ -3224,7 +3261,7 @@ "eine beliebige ungültige Position." #. type: Plain text -#: puzzles.but:1313 +#: puzzles.but:1331 msgid "" "Right-clicking in the current guess adds a \\q{hold} marker; pegs that have " "hold markers will be automatically added to the next guess after marking." @@ -3234,22 +3271,32 @@ "Markierung automatisch bei der nächsten Vermutungsrunde hinzugefügt." #. type: Plain text -#: puzzles.but:1319 +#: puzzles.but:1337 msgid "" "Alternatively, with the keyboard, the up and down cursor keys can be used to " "select a peg colour, the left and right keys to select a peg position, and " "the space bar or Enter key to place a peg of the selected colour in the " -"chosen position. \\q{D} or Backspace removes a peg, and \\q{H} adds a hold " +"chosen position. \\q{D} or Backspace removes a peg, and Space adds a hold " "marker." msgstr "" "Alternativ kann auf der Tastatur mit den Hoch- und Runtertasten eine " "Stiftfarbe und mit den Rechts- und Linkstasten die Stiftposition ausgewählt " "werden. Die Leer- oder Eingabetaste platziert den Stift der gewählten Farbe " "an der gewählten Position. \\q{D} oder Rückschritt entfernt einen Stift und " -"\\q{H} fügt eine Haltemarkierung hinzu." +"die Leertaste fügt eine Haltemarkierung hinzu." + +#. type: Plain text +#: puzzles.but:1341 +msgid "" +"Pressing \\q{h} or \\q{?} will fill the current guess with a suggested " +"guess. Using this is not recommended for 10 or more pegs as it is slow." +msgstr "" +"Mit \\q{h} oder \\q{?} wird die aktuelle Vermutung mit einer vorgeschlagenen " +"Vermutung ausgefüllt. Bei 10 oder mehr Stiften wird dies nicht empfohlen, da " +"es langsam ist." #. type: Plain text -#: puzzles.but:1325 +#: puzzles.but:1347 msgid "" "When the guess is complete, the smaller feedback pegs will be highlighted; " "clicking on these (or moving the peg cursor to them with the arrow keys and " @@ -3263,7 +3310,7 @@ "kopiert und die \\q{aktuelle Vermutungsmarkierung} verschoben." #. type: Plain text -#: puzzles.but:1329 +#: puzzles.but:1351 msgid "" "If you correctly position all the pegs the solution will be displayed below; " "if you run out of guesses (or select \\q{Solve...}) the solution will also " @@ -3274,28 +3321,28 @@ "wird die Lösung auch offengelegt." #. type: Plain text -#: puzzles.but:1333 +#: puzzles.but:1355 msgid "\\I{parameters, for Guess}Guess parameters" msgstr "\\I{Parameter, für Guess}Guess-Parameter" #. type: Plain text -#: puzzles.but:1337 +#: puzzles.but:1359 msgid "" -"These parameters are available from the \\q{Custom...} option on the \\q" -"{Type} menu. The default game matches the parameters for the board game \\q" -"{Mastermind}." +"These parameters are available from the \\q{Custom...} option on the " +"\\q{Type} menu. The default game matches the parameters for the board game " +"\\q{Mastermind}." msgstr "" "Diese Parameter sind von der Option \\q{Custom...} im Menü \\q{Type} " -"verfügbar. Das Standardspiel stimmt mit den Parametern für das Brettspiel \\q" -"{Mastermind} überein." +"verfügbar. Das Standardspiel stimmt mit den Parametern für das Brettspiel " +"\\q{Mastermind} überein." #. type: e{#1} -#: puzzles.but:1339 +#: puzzles.but:1361 puzzles.but:3226 msgid "Colours" msgstr "Colours" #. type: Plain text -#: puzzles.but:1342 +#: puzzles.but:1364 msgid "" "Number of colours the solution is chosen from; from 2 to 10 (more is harder)." msgstr "" @@ -3303,34 +3350,34 @@ "sind schwieriger)." #. type: e{#1} -#: puzzles.but:1344 +#: puzzles.but:1366 msgid "Pegs per guess" msgstr "Pegs per guess" #. type: Plain text -#: puzzles.but:1346 +#: puzzles.but:1368 msgid "Number of pegs per guess (more is harder)." msgstr "Anzahl der Stifte pro Vermutung (mehr ist schwerer)" #. type: e{#1} -#: puzzles.but:1348 +#: puzzles.but:1370 msgid "Guesses" msgstr "Guesses" #. type: Plain text -#: puzzles.but:1350 +#: puzzles.but:1372 msgid "Number of guesses you have to find the solution in (fewer is harder)." msgstr "" "Anzahl der Vermutungsrunden, die Sie zum Finden der Lösung haben (weniger " "ist schwerer)" #. type: e{#1} -#: puzzles.but:1352 +#: puzzles.but:1374 msgid "Allow blanks" msgstr "Allow blanks" #. type: Plain text -#: puzzles.but:1356 +#: puzzles.but:1378 msgid "" "Allows blank pegs to be given as part of a guess (makes it easier, because " "you know that those will never be counted as part of the solution). This is " @@ -3341,7 +3388,7 @@ "gezählt werden). Dies ist standardmäßig abgeschaltet." #. type: Plain text -#: puzzles.but:1363 +#: puzzles.but:1385 msgid "" "Note that this doesn't allow blank pegs in the solution; if you really " "wanted that, use one extra colour." @@ -3350,12 +3397,12 @@ "das wirklich möchten, verwenden Sie eine zusätzliche Farbe." #. type: e{#1} -#: puzzles.but:1365 +#: puzzles.but:1387 msgid "Allow duplicates" msgstr "Allow duplicates" #. type: Plain text -#: puzzles.but:1369 +#: puzzles.but:1391 msgid "" "Allows the solution (and the guesses) to contain colours more than once; " "this increases the search space (making things harder), and is turned on by " @@ -3366,17 +3413,17 @@ "und ist standardmäßig aktiviert." #. type: Plain text -#: puzzles.but:1372 +#: puzzles.but:1394 msgid "\\i{Pegs}" msgstr "\\i{Pegs}" #. type: Plain text -#: puzzles.but:1374 +#: puzzles.but:1396 msgid "\\cfg{winhelp-topic}{games.pegs}" msgstr "\\cfg{winhelp-topic}{games.pegs}" #. type: Plain text -#: puzzles.but:1379 +#: puzzles.but:1401 msgid "" "A number of pegs are placed in holes on a board. You can remove a peg by " "jumping an adjacent peg over it (horizontally or vertically) to a vacant " @@ -3390,7 +3437,7 @@ "zu entfernen." #. type: Plain text -#: puzzles.but:1382 +#: puzzles.but:1404 msgid "" "This game, best known as \\I{Solitaire, Peg}\\q{Peg Solitaire}, is possibly " "one of the oldest puzzle games still commonly known." @@ -3399,23 +3446,23 @@ "bekannt, ist möglicherweise eines der ältesten noch bekannten Puzzlespiele." #. type: Plain text -#: puzzles.but:1384 +#: puzzles.but:1406 msgid "\\i{Pegs controls}" msgstr "\\i{Pegs-Steuerung}" #. type: IM{#1} -#: puzzles.but:1385 +#: puzzles.but:1407 msgid "Pegs controls" msgstr "Pegs-Steuerung" #. type: IM -#: puzzles.but:1385 +#: puzzles.but:1407 #, no-wrap msgid "controls, for Pegs" msgstr "Steuerung, von Pegs" #. type: Plain text -#: puzzles.but:1392 +#: puzzles.but:1414 msgid "" "To move a peg, drag it with the mouse from its current position to its final " "position. If the final position is exactly two holes away from the initial " @@ -3430,7 +3477,7 @@ "und der dazwischenliegende Stift entfernt." #. type: Plain text -#: puzzles.but:1396 +#: puzzles.but:1418 msgid "" "Vacant spaces which you can move a peg into are marked with holes. A space " "with no peg and no hole is not available for moving at all: it is an " @@ -3441,7 +3488,7 @@ "verfügbar: Es ist ein Hindernis, um das Sie sich herumarbeiten müssen." #. type: Plain text -#: puzzles.but:1401 +#: puzzles.but:1423 msgid "" "You can also use the cursor keys to move a position indicator around the " "board. Pressing the return key while over a peg, followed by a cursor key, " @@ -3453,22 +3500,22 @@ "angegebene Richtung springen (falls das ein gültiger Spielzug ist)." #. type: Plain text -#: puzzles.but:1405 +#: puzzles.but:1427 msgid "\\I{parameters, for Pegs}Pegs parameters" msgstr "\\I{Parameter, für Pegs}Pegs-Parameter" #. type: Plain text -#: puzzles.but:1412 +#: puzzles.but:1434 msgid "Size of grid in holes." msgstr "Größe des Gitters in Löchern." #. type: e{#1} -#: puzzles.but:1414 +#: puzzles.but:1436 msgid "Board type" msgstr "Board type" #. type: Plain text -#: puzzles.but:1421 +#: puzzles.but:1443 msgid "" "Controls whether you are given a board of a standard shape or a randomly " "generated shape. The two standard shapes currently supported are \\q{Cross} " @@ -3478,24 +3525,24 @@ "a solution)." msgstr "" "Stellt ein, ob Sie ein Brett in der Standardform oder in einer zufällig " -"erstellten Form erhalten. Die derzeit unterstützen Standardformen sind \\q" -"{Cross} (Kreuz) und \\q{Octagon} (Oktaeder) (auch als englisches bzw " +"erstellten Form erhalten. Die derzeit unterstützen Standardformen sind " +"\\q{Cross} (Kreuz) und \\q{Octagon} (Oktaeder) (auch als englisches bzw " "europäisches Brettformat bekannt). Durch die Auswahl von \\q{Random} " "(Zufall) erhalten Sie jedes Mal eine andere Brettform (aber immer eine, von " "der eine Lösung bekannt ist)." #. type: Plain text -#: puzzles.but:1424 +#: puzzles.but:1446 msgid "\\i{Dominosa}" msgstr "\\i{Dominosa}" #. type: Plain text -#: puzzles.but:1426 +#: puzzles.but:1448 msgid "\\cfg{winhelp-topic}{games.dominosa}" msgstr "\\cfg{winhelp-topic}{games.dominosa}" #. type: Plain text -#: puzzles.but:1433 +#: puzzles.but:1455 msgid "" "A normal set of dominoes \\dash that is, one instance of every (unordered) " "pair of numbers from 0 to 6 \\dash has been arranged irregularly into a " @@ -3511,7 +3558,7 @@ "dem vorgegebenen Zahlenraster passen." #. type: Plain text -#: puzzles.but:1436 +#: puzzles.but:1458 msgid "" "This puzzle is widely credited to O. S. Adler, and takes part of its name " "from those initials." @@ -3520,23 +3567,23 @@ "seines Namens aus diesen Initialen." #. type: Plain text -#: puzzles.but:1438 +#: puzzles.but:1460 msgid "\\i{Dominosa controls}" msgstr "\\i{Dominosa-Steuerung}" #. type: IM{#1} -#: puzzles.but:1439 +#: puzzles.but:1461 msgid "Dominosa controls" msgstr "Dominosa-Steuerung" #. type: IM -#: puzzles.but:1439 +#: puzzles.but:1461 #, no-wrap msgid "controls, for Dominosa" msgstr "Steuerung, von Dominosa" #. type: Plain text -#: puzzles.but:1445 +#: puzzles.but:1467 msgid "" "Left-clicking between any two adjacent numbers places a domino covering " "them, or removes one if it is already present. Trying to place a domino " @@ -3548,7 +3595,7 @@ "existierende Dominos überlappt, so werden die überlappten Dominos entfernt." #. type: Plain text -#: puzzles.but:1450 +#: puzzles.but:1472 msgid "" "Right-clicking between two adjacent numbers draws a line between them, which " "you can use to remind yourself that you know those two numbers are \\e{not} " @@ -3561,7 +3608,7 @@ "wird die Linie wieder entfernt." #. type: Plain text -#: puzzles.but:1456 +#: puzzles.but:1478 msgid "" "You can also use the cursor keys to move a cursor around the grid. When the " "cursor is half way between two adjacent numbers, pressing the return key " @@ -3577,17 +3624,29 @@ "Aktionen wird der Domino oder die Linie wieder entfernt." #. type: Plain text -#: puzzles.but:1460 +#: puzzles.but:1482 +msgid "" +"Pressing a number key will highlight all occurrences of that number. " +"Pressing that number again will clear the highlighting. Up to two different " +"numbers can be highlighted at any given time." +msgstr "" +"Durch Drücken einer Zahltaste werden alle Vorkommen dieser Zahl " +"hervorgehoben. Durch erneutes Drücken dieser Zahl wird die Hervorhebung " +"aufgehoben. Bis zu zwei verschiedene Zahlen können auf diese Weise " +"gleichzeitig hervorgehoben werden." + +#. type: Plain text +#: puzzles.but:1486 msgid "\\I{parameters, for Dominosa}Dominosa parameters" msgstr "\\I{Parameter, für Dominosa}Dominosa-Parameter" #. type: e{#1} -#: puzzles.but:1465 +#: puzzles.but:1491 msgid "Maximum number on dominoes" msgstr "Maximum number on dominoes" #. type: Plain text -#: puzzles.but:1470 +#: puzzles.but:1496 msgid "" "Controls the size of the puzzle, by controlling the size of the set of " "dominoes used to make it. Dominoes with numbers going up to N will give rise " @@ -3599,7 +3658,7 @@ "(N+1)-Rechteck, damit ergibt der Vorgabewert von 6 ein 8\\by\\.7-Gitter." #. type: Plain text -#: puzzles.but:1479 +#: puzzles.but:1505 msgid "" "Normally, Dominosa will make sure that the puzzles it presents have only one " "solution. Puzzles with ambiguous sections can be more difficult and " @@ -3616,17 +3675,17 @@ "Abschalten dieser Option kann auch die Puzzleerstellung beschleunigen." #. type: Plain text -#: puzzles.but:1482 +#: puzzles.but:1508 msgid "\\i{Untangle}" msgstr "\\i{Untangle}" #. type: Plain text -#: puzzles.but:1484 +#: puzzles.but:1510 msgid "\\cfg{winhelp-topic}{games.untangle}" msgstr "\\cfg{winhelp-topic}{games.untangle}" #. type: Plain text -#: puzzles.but:1488 +#: puzzles.but:1514 msgid "" "You are given a number of points, some of which have lines drawn between " "them. You can move the points about arbitrarily; your aim is to position the " @@ -3637,41 +3696,37 @@ "die Punkte so zu positionieren, dass keine Linie eine andere Linie kreuzt." #. type: Plain text -#: puzzles.but:1491 +#: puzzles.but:1517 msgid "" -"I originally saw this in the form of a Flash game called \\i{Planarity} \\k" -"{Planarity}, written by John Tantalo." +"I originally saw this in the form of a Flash game called \\i{Planarity} " +"\\k{Planarity}, written by John Tantalo." msgstr "" "Ich habe das Spiel ursprünglich als Flash-Spiel mit dem Namen \\i{Planarity} " "\\k{Planarity}, geschrieben von John Tantalo, gesehen." #. type: Plain text -#: puzzles.but:1493 -msgid "" -"\\W{http://home.cwru.edu/~jnt5/Planarity}\\cw{http://home.cwru.edu/~jnt5/" -"Planarity}" -msgstr "" -"\\W{http://home.cwru.edu/~jnt5/Planarity}\\cw{http://home.cwru.edu/~jnt5/" -"Planarity}" +#: puzzles.but:1519 +msgid "\\W{http://planarity.net}\\cw{http://planarity.net}" +msgstr "\\W{http://planarity.net}\\cw{http://planarity.net}" #. type: Plain text -#: puzzles.but:1495 +#: puzzles.but:1521 msgid "\\i{Untangle controls}" msgstr "\\i{Untangle-Steuerung}" #. type: IM{#1} -#: puzzles.but:1496 +#: puzzles.but:1522 msgid "Untangle controls" msgstr "Untangle-Steuerung" #. type: IM -#: puzzles.but:1496 +#: puzzles.but:1522 #, no-wrap msgid "controls, for Untangle" msgstr "Steuerung, von Untangle" #. type: Plain text -#: puzzles.but:1500 +#: puzzles.but:1526 msgid "" "To move a point, click on it with the left mouse button and drag it into a " "new position." @@ -3680,12 +3735,12 @@ "ziehen Sie ihn an seine neue Position." #. type: Plain text -#: puzzles.but:1504 +#: puzzles.but:1530 msgid "\\I{parameters, for Untangle}Untangle parameters" msgstr "\\I{Parameter, für Untangle}Untangle-Parameter" #. type: Plain text -#: puzzles.but:1507 +#: puzzles.but:1533 msgid "" "There is only one parameter available from the \\q{Custom...} option on the " "\\q{Type} menu:" @@ -3694,12 +3749,12 @@ "verfügbaren Parameter:" #. type: e{#1} -#: puzzles.but:1509 +#: puzzles.but:1535 msgid "Number of points" msgstr "Number of points" #. type: Plain text -#: puzzles.but:1512 +#: puzzles.but:1538 msgid "" "Controls the size of the puzzle, by specifying the number of points in the " "generated graph." @@ -3708,17 +3763,17 @@ "Graphen angegeben wird." #. type: Plain text -#: puzzles.but:1515 +#: puzzles.but:1541 msgid "\\i{Black Box}" msgstr "\\i{Black Box}" #. type: Plain text -#: puzzles.but:1517 +#: puzzles.but:1543 msgid "\\cfg{winhelp-topic}{games.blackbox}" msgstr "\\cfg{winhelp-topic}{games.blackbox}" #. type: Plain text -#: puzzles.but:1521 +#: puzzles.but:1547 msgid "" "A number of balls are hidden in a rectangular arena. You have to deduce the " "positions of the balls by firing lasers positioned at the edges of the arena " @@ -3730,7 +3785,7 @@ "werden." #. type: Plain text -#: puzzles.but:1525 +#: puzzles.but:1551 msgid "" "Beams will travel straight from their origin until they hit the opposite " "side of the arena (at which point they emerge), unless affected by balls in " @@ -3741,7 +3796,7 @@ "der folgenden Arten von Bällen betroffen sind:" #. type: Plain text -#: puzzles.but:1529 +#: puzzles.but:1555 msgid "" "A beam that hits a ball head-on is absorbed and will never re-emerge. This " "includes beams that meet a ball on the first rank of the arena." @@ -3751,7 +3806,7 @@ "der Arena treffen." #. type: Plain text -#: puzzles.but:1532 +#: puzzles.but:1558 msgid "" "A beam with a ball to its front-left square gets deflected 90 degrees to the " "right." @@ -3760,7 +3815,7 @@ "reflektiert." #. type: Plain text -#: puzzles.but:1535 +#: puzzles.but:1561 msgid "" "A beam with a ball to its front-right square gets similarly deflected to the " "left." @@ -3769,27 +3824,27 @@ "links reflektiert." #. type: Plain text -#: puzzles.but:1538 +#: puzzles.but:1564 msgid "" -"A beam that would re-emerge from its entry location is considered to be \\q" -"{reflected}." +"A beam that would re-emerge from its entry location is considered to be " +"\\q{reflected}." msgstr "" "Ein Strahl, der an seiner Ursprungsposition wieder auftauchen würde, gilt " "als \\q{reflektiert}." #. type: Plain text -#: puzzles.but:1542 +#: puzzles.but:1568 msgid "" "A beam which would get deflected before entering the arena by a ball to the " -"front-left or front-right of its entry point is also considered to be \\q" -"{reflected}." +"front-left or front-right of its entry point is also considered to be " +"\\q{reflected}." msgstr "" "Ein Strahl, der von einem Ball links oder rechts vor dem Eintrittspunkt " -"abgelenkt würde, bevor er in die Arena eintritt, wird auch als \\q" -"{reflektiert} betrachtet." +"abgelenkt würde, bevor er in die Arena eintritt, wird auch als " +"\\q{reflektiert} betrachtet." #. type: Plain text -#: puzzles.but:1547 +#: puzzles.but:1573 msgid "" "Beams that are reflected appear as a \\q{R}; beams that hit balls head-on " "appear as \\q{H}. Otherwise, a number appears at the firing point and the " @@ -3801,7 +3856,7 @@ "eindeutig diesem Schuss zugeordnet)." #. type: Plain text -#: puzzles.but:1551 +#: puzzles.but:1577 msgid "" "You can place guesses as to the location of the balls, based on the entry " "and exit patterns of the beams; once you have placed enough balls a button " @@ -3813,7 +3868,7 @@ "Vermutungen erlaubt." #. type: Plain text -#: puzzles.but:1554 +#: puzzles.but:1580 msgid "" "Here is a diagram showing how the positions of balls can create each of the " "beam behaviours shown above:" @@ -3822,62 +3877,62 @@ "der oben beschriebenen Strahlverhalten erzeugen können:" #. type: c -#: puzzles.but:1555 +#: puzzles.but:1581 #, no-wrap msgid "1RHR----" msgstr "1RHR----" #. type: c -#: puzzles.but:1556 +#: puzzles.but:1582 #, no-wrap msgid "|..O.O...|" msgstr "|..O.O...|" #. type: c -#: puzzles.but:1557 +#: puzzles.but:1583 #, no-wrap msgid "2........3" msgstr "2........3" #. type: c -#: puzzles.but:1558 puzzles.but:1559 puzzles.but:1577 puzzles.but:1578 -#: puzzles.but:1583 puzzles.but:1584 +#: puzzles.but:1584 puzzles.but:1585 puzzles.but:1603 puzzles.but:1604 +#: puzzles.but:1609 puzzles.but:1610 #, no-wrap msgid "|........|" msgstr "|........|" #. type: c -#: puzzles.but:1560 +#: puzzles.but:1586 #, no-wrap msgid "3........|" msgstr "3........|" #. type: c -#: puzzles.but:1561 +#: puzzles.but:1587 #, no-wrap msgid "|......O.|" msgstr "|......O.|" #. type: c -#: puzzles.but:1562 +#: puzzles.but:1588 #, no-wrap msgid "H........|" msgstr "H........|" #. type: c -#: puzzles.but:1563 +#: puzzles.but:1589 #, no-wrap msgid "|.....O..|" msgstr "|.....O..|" #. type: c -#: puzzles.but:1564 +#: puzzles.but:1590 #, no-wrap -msgid "12-RH---" -msgstr "12-RH---" +msgid "12-RR---" +msgstr "12-RR---" #. type: Plain text -#: puzzles.but:1570 +#: puzzles.but:1596 msgid "" "As shown, it is possible for a beam to receive multiple reflections before " "re-emerging (see turn 3). Similarly, a beam may be reflected (possibly more " @@ -3890,7 +3945,7 @@ "erhält (das \\q{H} auf der linken Seite im Beispiel)." #. type: Plain text -#: puzzles.but:1575 +#: puzzles.but:1601 msgid "" "Note that any layout with more than 4 balls may have a non-unique solution. " "The following diagram illustrates this; if you know the board contains 5 " @@ -3903,25 +3958,25 @@ "wo der fünfte Ball ist (mögliche Lösungen sind durch \\cw{x} gekennzeichnet):" #. type: c -#: puzzles.but:1576 puzzles.but:1585 +#: puzzles.but:1602 puzzles.but:1611 #, no-wrap msgid "--------" msgstr "--------" #. type: c -#: puzzles.but:1579 puzzles.but:1582 +#: puzzles.but:1605 puzzles.but:1608 #, no-wrap msgid "|..O..O..|" msgstr "|..O..O..|" #. type: c -#: puzzles.but:1580 puzzles.but:1581 +#: puzzles.but:1606 puzzles.but:1607 #, no-wrap msgid "|...xx...|" msgstr "|...xx...|" #. type: Plain text -#: puzzles.but:1593 +#: puzzles.but:1619 msgid "" "For this reason, when you have your guesses checked, the game will check " "that your solution \\e{produces the same results} as the computer's, rather " @@ -3932,45 +3987,45 @@ "Aus diesem Grund testet das Spiel, wenn Sie Ihre Vermutung überprüft haben " "wollen, dass Ihre Lösung \\e{das gleiche Ergebnis} wie die des Computers " "produziert, statt zu prüfen, ob Ihre Lösung mit der des Computers " -"übereinstimmt. Daher können Sie im obigen Beispiel den fünften Ball auf \\e" -"{einen beliebigen} der mit \\cw{x} markierten Plätze setzen und Sie würden " -"immer noch gewinnen." +"übereinstimmt. Daher können Sie im obigen Beispiel den fünften Ball auf " +"\\e{einen beliebigen} der mit \\cw{x} markierten Plätze setzen und Sie " +"würden immer noch gewinnen." #. type: Plain text -#: puzzles.but:1595 +#: puzzles.but:1621 msgid "Black Box was contributed to this collection by James Harvey." -msgstr "Black Box wurde von James Harvey zu dieser Sammlung beigesteuert." +msgstr "Black Box ist ein Beitrag von James Harvey zu dieser Sammlung." #. type: Plain text -#: puzzles.but:1597 +#: puzzles.but:1623 msgid "\\i{Black Box controls}" msgstr "\\i{Black Box-Steuerung}" #. type: IM{#1} -#: puzzles.but:1598 puzzles.but:1599 puzzles.but:1600 +#: puzzles.but:1624 puzzles.but:1625 puzzles.but:1626 msgid "Black Box controls" msgstr "Black Box-Steuerung" #. type: IM -#: puzzles.but:1598 +#: puzzles.but:1624 #, no-wrap msgid "controls, for Black Box" msgstr "Steuerung, von Black Box" #. type: IM -#: puzzles.but:1599 +#: puzzles.but:1625 #, no-wrap msgid "keys, for Black Box" msgstr "Tasten, für Black Box" #. type: IM -#: puzzles.but:1600 +#: puzzles.but:1626 #, no-wrap msgid "shortcuts (keyboard), for Black Box" msgstr "Tastaturkürzel, für Black Box" #. type: Plain text -#: puzzles.but:1607 +#: puzzles.but:1633 msgid "" "To fire a laser beam, left-click in a square around the edge of the arena. " "The results will be displayed immediately. Clicking or holding the left " @@ -3983,7 +4038,7 @@ "werden, um den Austrittspunkt für den Laser, falls zutreffend, zu bestätigen." #. type: Plain text -#: puzzles.but:1611 +#: puzzles.but:1637 msgid "" "To guess the location of a ball, left-click within the arena and a black " "circle will appear marking the guess; click again to remove the guessed ball." @@ -3993,7 +4048,7 @@ "den vermuteten Ball zu entfernen." #. type: Plain text -#: puzzles.but:1616 +#: puzzles.but:1642 msgid "" "Locations in the arena may be locked against modification by right-clicking; " "whole rows and columns may be similarly locked by right-clicking in the " @@ -4005,7 +4060,7 @@ "Zeile gesperrt werden." #. type: Plain text -#: puzzles.but:1620 +#: puzzles.but:1646 msgid "" "The cursor keys may also be used to move around the grid. Pressing the Enter " "key will fire a laser or add a new ball-location guess, and pressing Space " @@ -4017,7 +4072,7 @@ "oder Spalte gesperrt." #. type: Plain text -#: puzzles.but:1624 +#: puzzles.but:1650 msgid "" "When an appropriate number of balls have been guessed, a button will appear " "at the top-left corner of the grid; clicking that (with mouse or cursor) " @@ -4028,7 +4083,7 @@ "Cursor) wird Ihre Vermutung überprüft." #. type: Plain text -#: puzzles.but:1633 +#: puzzles.but:1659 msgid "" "If you click the \\q{check} button and your guesses are not correct, the " "game will show you the minimum information necessary to demonstrate this to " @@ -4048,7 +4103,7 @@ "aufgedeckt, der nicht zu Ihrer aktuellen Vermutung passt." #. type: Plain text -#: puzzles.but:1643 +#: puzzles.but:1669 msgid "" "If you decide to give up completely, you can select Solve to reveal the " "actual ball positions. At this point, correctly-placed balls will be " @@ -4065,18 +4120,18 @@ "inkorrekt positionierte Bälle als ausgefüllte schwarze Kreise mit roten " "Kreuzen und fehlende Bälle als ausgefüllte rote Kreise. Zusätzlich markieren " "rote Kreise alle Laser, die Sie bereits abgefeuert haben und die nicht mit " -"Ihrer Ballverteilung konsistent waren (genauso wie beim Drücken des \\q" -"{Check}-Knopfes), und roter Text markiert alle Laser, die Sie abgefeuert " +"Ihrer Ballverteilung konsistent waren (genauso wie beim Drücken des " +"\\q{Check}-Knopfes), und roter Text markiert alle Laser, die Sie abgefeuert " "hätten \\e{können}, um Ihre Ballverteilung von der richtigen zu " "unterscheiden." #. type: Plain text -#: puzzles.but:1647 +#: puzzles.but:1673 msgid "\\I{parameters, for Black Box}Black Box parameters" msgstr "\\I{Parameter, für Black Box}Black Box-Parameter" #. type: Plain text -#: puzzles.but:1655 +#: puzzles.but:1681 msgid "" "Size of grid in squares. There are 2 \\by \\e{Width} \\by \\e{Height} lasers " "per grid, two per row and two per column." @@ -4085,12 +4140,12 @@ "Laser pro Gitter, zwei pro Zeile und zwei pro Spalte." #. type: e{#1} -#: puzzles.but:1657 +#: puzzles.but:1683 msgid "No. of balls" msgstr "No. of balls" #. type: Plain text -#: puzzles.but:1664 +#: puzzles.but:1690 msgid "" "Number of balls to place in the grid. This can be a single number, or a " "range (separated with a hyphen, like \\q{2-6}), and determines the number of " @@ -4107,17 +4162,17 @@ "Lösung ist nur akzeptabel, falls alle Strahleingänge und -ausgänge passen." #. type: Plain text -#: puzzles.but:1667 +#: puzzles.but:1693 msgid "\\i{Slant}" msgstr "\\i{Slant}" #. type: Plain text -#: puzzles.but:1669 +#: puzzles.but:1695 msgid "\\cfg{winhelp-topic}{games.slant}" msgstr "\\cfg{winhelp-topic}{games.slant}" #. type: Plain text -#: puzzles.but:1673 +#: puzzles.but:1699 msgid "" "You have a grid of squares. Your aim is to draw a diagonal line through each " "square, and choose which way each line slants so that the following " @@ -4129,12 +4184,12 @@ "sind:" #. type: Plain text -#: puzzles.but:1675 +#: puzzles.but:1701 msgid "The diagonal lines never form a loop." msgstr "Die diagonalen Linien bilden niemals eine Schleife." #. type: Plain text -#: puzzles.but:1681 +#: puzzles.but:1707 msgid "" "Any point with a circled number has precisely that many lines meeting at it. " "(Thus, a 4 is the centre of a cross shape, whereas a zero is the centre of a " @@ -4149,37 +4204,35 @@ "da sie sofort zu einer Schleife führen würde.)" #. type: Plain text -#: puzzles.but:1683 +#: puzzles.but:1709 msgid "Credit for this puzzle goes to \\i{Nikoli} \\k{nikoli-slant}." msgstr "Dank für dieses Puzzle geht an \\i{Nikoli} \\k{nikoli-slant}." #. type: Plain text -#: puzzles.but:1687 +#: puzzles.but:1713 msgid "" -"\\W{http://www.nikoli.co.jp/puzzles/39/index.htm}\\cw{http://www.nikoli.co." -"jp/puzzles/39/index.htm} (in Japanese)" -msgstr "" -"\\W{http://www.nikoli.co.jp/puzzles/39/index.htm}\\cw{http://www.nikoli.co." -"jp/puzzles/39/index.htm} (auf Japanisch)" +"\\W{http://www.nikoli.co.jp/ja/puzzles/gokigen_naname}\\cw{http://www.nikoli." +"co.jp/ja/puzzles/gokigen_naname} (in Japanese)" +msgstr "\\W{http://www.nikoli.co.jp/ja/puzzles/gokigen_naname}\\cw{http://www.nikoli.co.jp/ja/puzzles/gokigen_naname} (auf Japanisch)" #. type: Plain text -#: puzzles.but:1689 +#: puzzles.but:1715 msgid "\\i{Slant controls}" msgstr "\\i{Slant-Steuerung}" #. type: IM{#1} -#: puzzles.but:1690 +#: puzzles.but:1716 msgid "Slant controls" msgstr "Slant-Steuerung" #. type: IM -#: puzzles.but:1690 +#: puzzles.but:1716 #, no-wrap msgid "controls, for Slant" msgstr "Steuerung, von Slant" #. type: Plain text -#: puzzles.but:1697 +#: puzzles.but:1723 msgid "" "Left-clicking in a blank square will place a \\cw{\\\\} in it (a line " "leaning to the left, i.e. running from the top left of the square to the " @@ -4193,14 +4246,14 @@ "linke untere Ecke) platziert." #. type: Plain text -#: puzzles.but:1704 +#: puzzles.but:1730 msgid "" "Continuing to click either button will cycle between the three possible " "square contents. Thus, if you left-click repeatedly in a blank square it " "will change from blank to \\cw{\\\\} to \\cw{/} back to blank, and if you " -"right-click repeatedly the square will change from blank to \\cw{/} to \\cw" -"{\\\\} back to blank. (Therefore, you can play the game entirely with one " -"button if you need to.)" +"right-click repeatedly the square will change from blank to \\cw{/} to " +"\\cw{\\\\} back to blank. (Therefore, you can play the game entirely with " +"one button if you need to.)" msgstr "" "Durch fortlaufendes Drücken eines der Knöpfe wird zyklisch zwischen den drei " "möglichen Quadratinhalten umgeschaltet. Falls Sie daher wiederholt in ein " @@ -4211,31 +4264,37 @@ "Taste spielen)." #. type: Plain text -#: puzzles.but:1708 +#: puzzles.but:1737 msgid "" "You can also use the cursor keys to move around the grid. Pressing the " "return or space keys will place a \\cw{\\\\} or a \\cw{/}, respectively, and " -"will then cycle them as above." +"will then cycle them as above. You can also press \\cw{/} or \\cw{\\\\} to " +"place a \\cw{/} or \\cw{\\\\}, respectively, independent of what is already " +"in the cursor square. Backspace removes any line from the cursor square." msgstr "" "Sie können auch die Pfeiltasten verwenden, um sich auf dem Gitter zu " "bewegen. Durch Drücken der Eingabe- oder Leertaste wird ein \\cw{\\\\} bzw. " -"ein \\cw{/} platziert und diese dann zyklisch wie oben durchlaufen." +"ein \\cw{/} platziert und dies dann zyklisch wie oben durchlaufen. Sie können " +"auch \\cw{/} oder \\cw{\\\\} drücken, um ein \\cw{/} oder entsprechend " +"\\cw{\\\\} zu setzen, unabhängig davon, was bereits im Quadrat unter dem " +"Cursor vorliegt. Rückschritt entfernt jede Zeile aus dem Quadrat unter dem " +"Cursor." #. type: Plain text -#: puzzles.but:1712 +#: puzzles.but:1741 msgid "\\I{parameters, for Slant}Slant parameters" msgstr "\\I{Parameter, für Slant}Slant-Parameter" #. type: e{#1} -#: puzzles.but:1721 puzzles.but:1810 puzzles.but:1892 puzzles.but:1976 -#: puzzles.but:2102 puzzles.but:2211 puzzles.but:2341 puzzles.but:2411 -#: puzzles.but:2564 puzzles.but:2654 puzzles.but:2710 puzzles.but:2776 -#: puzzles.but:3066 puzzles.but:3113 +#: puzzles.but:1750 puzzles.but:1839 puzzles.but:1921 puzzles.but:2005 +#: puzzles.but:2131 puzzles.but:2247 puzzles.but:2382 puzzles.but:2452 +#: puzzles.but:2606 puzzles.but:2704 puzzles.but:2760 puzzles.but:2829 +#: puzzles.but:3129 puzzles.but:3176 puzzles.but:3290 msgid "Difficulty" msgstr "Difficulty" #. type: Plain text -#: puzzles.but:1730 +#: puzzles.but:1759 msgid "" "Controls the difficulty of the generated puzzle. At Hard level, you are " "required to do deductions based on knowledge of \\e{relationships} between " @@ -4255,17 +4314,17 @@ "Raten und Rückverfolgung niemals notwendig sein." #. type: Plain text -#: puzzles.but:1733 +#: puzzles.but:1762 msgid "\\i{Light Up}" msgstr "\\i{Light Up}" #. type: Plain text -#: puzzles.but:1735 +#: puzzles.but:1764 msgid "\\cfg{winhelp-topic}{games.lightup}" msgstr "\\cfg{winhelp-topic}{games.lightup}" #. type: Plain text -#: puzzles.but:1739 +#: puzzles.but:1768 msgid "" "You have a grid of squares. Some are filled in black; some of the black " "squares are numbered. Your aim is to \\q{light up} all the empty squares by " @@ -4276,7 +4335,7 @@ "Quadrate zu \\q{erleuchten}, indem Sie in einige davon Glühbirnen platzieren." #. type: Plain text -#: puzzles.but:1743 +#: puzzles.but:1772 msgid "" "Each light bulb illuminates the square it is on, plus all squares in line " "with it horizontally or vertically unless a black square is blocking the way." @@ -4286,22 +4345,22 @@ "schwarzes Quadrat den Weg blockiert." #. type: Plain text -#: puzzles.but:1745 +#: puzzles.but:1774 msgid "To win the game, you must satisfy the following conditions:" msgstr "Um das Spiel zu gewinnen, müssen folgende Bedingungen erfüllt sein:" #. type: Plain text -#: puzzles.but:1747 +#: puzzles.but:1776 msgid "All non-black squares are lit." msgstr "Alle nicht schwarzen Quadrate müssen erleuchtet sein." #. type: Plain text -#: puzzles.but:1749 +#: puzzles.but:1778 msgid "No light is lit by another light." msgstr "Kein Licht wird von einem anderen Licht erleuchtet." #. type: Plain text -#: puzzles.but:1752 +#: puzzles.but:1781 msgid "" "All numbered black squares have exactly that number of lights adjacent to " "them (in the four squares above, below, and to the side)." @@ -4311,7 +4370,7 @@ "den Seiten)." #. type: Plain text -#: puzzles.but:1754 +#: puzzles.but:1783 msgid "" "Non-numbered black squares may have any number of lights adjacent to them." msgstr "" @@ -4319,42 +4378,40 @@ "Lichtern in der direkten Nachbarschaft sein." #. type: Plain text -#: puzzles.but:1756 +#: puzzles.but:1785 msgid "Credit for this puzzle goes to \\i{Nikoli} \\k{nikoli-lightup}." msgstr "Dank für dieses Puzzle geht an \\i{Nikoli} \\k{nikoli-lightup}." #. type: Plain text -#: puzzles.but:1758 +#: puzzles.but:1787 msgid "Light Up was contributed to this collection by James Harvey." -msgstr "Light Up wurde von James Harvey zu dieser Sammlung beigesteuert." +msgstr "Light Up ist ein Beitrag von James Harvey zu dieser Sammlung." #. type: Plain text -#: puzzles.but:1762 +#: puzzles.but:1791 msgid "" -"\\W{http://www.nikoli.co.jp/puzzles/32/index-e.htm}\\cw{http://www.nikoli.co." -"jp/puzzles/32/index-e.htm} (beware of Flash)" -msgstr "" -"\\W{http://www.nikoli.co.jp/puzzles/32/index-e.htm}\\cw{http://www.nikoli.co." -"jp/puzzles/32/index-e.htm} (Achtung Flash)" +"\\W{http://www.nikoli.co.jp/en/puzzles/akari.html}\\cw{http://www.nikoli.co." +"jp/en/puzzles/akari.html} (beware of Flash)" +msgstr "\\W{http://www.nikoli.co.jp/en/puzzles/akari.html}\\cw{http://www.nikoli.co.jp/en/puzzles/akari.html} (Achtung Flash)" #. type: Plain text -#: puzzles.but:1764 +#: puzzles.but:1793 msgid "\\i{Light Up controls}" msgstr "\\i{Light Up-Steuerung}" #. type: IM{#1} -#: puzzles.but:1765 +#: puzzles.but:1794 msgid "Light Up controls" msgstr "Light Up-Steuerung" #. type: IM -#: puzzles.but:1765 +#: puzzles.but:1794 #, no-wrap msgid "controls, for Light Up" msgstr "Steuerung, von Light Up" #. type: Plain text -#: puzzles.but:1770 +#: puzzles.but:1799 msgid "" "Left-clicking in a non-black square will toggle the presence of a light in " "that square. Right-clicking in a non-black square toggles a mark there to " @@ -4368,7 +4425,7 @@ "werden können." #. type: Plain text -#: puzzles.but:1772 +#: puzzles.but:1801 msgid "" "You may not place a light in a marked square, nor place a mark in a lit " "square." @@ -4377,7 +4434,7 @@ "ein beleuchtetes Quadrat setzten." #. type: Plain text -#: puzzles.but:1776 +#: puzzles.but:1805 msgid "" "The game will highlight obvious errors in red. Lights lit by other lights " "are highlighted in this way, as are numbered squares which do not (or " @@ -4389,7 +4446,7 @@ "direkten Nachbarschaft haben (oder haben können)." #. type: Plain text -#: puzzles.but:1779 +#: puzzles.but:1808 msgid "" "Thus, the grid is solved when all non-black squares have yellow highlights " "and there are no red lights." @@ -4398,22 +4455,22 @@ "hervorgehoben sind und es keine roten Lichter gibt." #. type: Plain text -#: puzzles.but:1783 +#: puzzles.but:1812 msgid "\\I{parameters, for Light Up}Light Up parameters" msgstr "\\I{Parameter, für Light Up}Light Up-Parameter" #. type: e{#1} -#: puzzles.but:1792 +#: puzzles.but:1821 msgid "%age of black squares" msgstr "%age of black squares" #. type: Plain text -#: puzzles.but:1794 +#: puzzles.but:1823 msgid "Rough percentage of black squares in the grid." msgstr "Grobe Prozentzahl an schwarzen Quadraten im Gitter." #. type: Plain text -#: puzzles.but:1802 +#: puzzles.but:1831 msgid "" "This is a hint rather than an instruction. If the grid generator is unable " "to generate a puzzle to this precise specification, it will increase the " @@ -4425,12 +4482,12 @@ "gelingt." #. type: e{#1} -#: puzzles.but:1804 +#: puzzles.but:1833 msgid "Symmetry" msgstr "Symmetry" #. type: Plain text -#: puzzles.but:1808 +#: puzzles.but:1837 msgid "" "Allows you to specify the required symmetry of the black squares in the " "grid. (This does not affect the difficulty of the puzzles noticeably.)" @@ -4439,7 +4496,7 @@ "anzugeben. (Dies beeinflusst die Schwierigkeit des Puzzles nicht merklich.)" #. type: Plain text -#: puzzles.but:1814 +#: puzzles.but:1843 msgid "" "\\q{Easy} means that the puzzles should be soluble without backtracking or " "guessing, \\q{Hard} means that some guesses will probably be necessary." @@ -4449,17 +4506,17 @@ "wird." #. type: Plain text -#: puzzles.but:1817 +#: puzzles.but:1846 msgid "\\i{Map}" msgstr "\\i{Map}" #. type: Plain text -#: puzzles.but:1819 +#: puzzles.but:1848 msgid "\\cfg{winhelp-topic}{games.map}" msgstr "\\cfg{winhelp-topic}{games.map}" #. type: Plain text -#: puzzles.but:1825 +#: puzzles.but:1854 msgid "" "You are given a map consisting of a number of regions. Your task is to " "colour each region with one of four colours, in such a way that no two " @@ -4474,19 +4531,19 @@ "um den Rest der Lösung eindeutig zu gestalten." #. type: Plain text -#: puzzles.but:1829 +#: puzzles.but:1858 msgid "" "Only regions which share a length of border are required to be different " "colours. Two regions which meet at only one \\e{point} (i.e. are diagonally " "separated) may be the same colour." msgstr "" "Nur Regionen, die ein gemeinsames Stück Grenze haben, müssen in " -"verschiedenen Farben vorliegen. Zwei Regionen, die sich nur an einem \\e" -"{Punkt} treffen (d.h. diagonal separiert sind) können die gleiche Farbe " +"verschiedenen Farben vorliegen. Zwei Regionen, die sich nur an einem " +"\\e{Punkt} treffen (d.h. diagonal separiert sind) können die gleiche Farbe " "haben." #. type: Plain text -#: puzzles.but:1836 +#: puzzles.but:1865 msgid "" "I believe this puzzle is original; I've never seen an implementation of it " "anywhere else. The concept of a \\i{four-colouring} puzzle was suggested by " @@ -4495,30 +4552,30 @@ "puzzle. Thanks also to Gareth Taylor for many detailed suggestions." msgstr "" "Ich bin der Meinung, dieses Puzzle ist ein Original; ich habe niemals " -"irgendwo anders eine Implementierung davon gesehen. Das Konzept eines \\i" -"{vier Farben}-Puzzles wurde von Owen Dunn vorgeschlagen; Dank muss auch an " -"Nikoli und an Verity Allan für die Anregung des Gedankengangs gehen, der " +"irgendwo anders eine Implementierung davon gesehen. Das Konzept eines " +"\\i{vier Farben}-Puzzles wurde von Owen Dunn vorgeschlagen; Dank muss auch " +"an Nikoli und an Verity Allan für die Anregung des Gedankengangs gehen, der " "mich dazu brachte, Owens Vorschlag als mögliches Puzzle zu begreifen. Dank " "auch an Gareth Taylor für viele detaillierte Vorschläge." #. type: Plain text -#: puzzles.but:1838 +#: puzzles.but:1867 msgid "\\i{Map controls}" msgstr "\\i{Map-Steuerung}" #. type: IM{#1} -#: puzzles.but:1839 +#: puzzles.but:1868 msgid "Map controls" msgstr "Map-Steuerung" #. type: IM -#: puzzles.but:1839 +#: puzzles.but:1868 #, no-wrap msgid "controls, for Map" msgstr "Steuerung, von Map" #. type: Plain text -#: puzzles.but:1844 +#: puzzles.but:1873 msgid "" "To colour a region, click the left mouse button on an existing region of the " "desired colour and drag that colour into the new region." @@ -4528,7 +4585,7 @@ "neue Region." #. type: Plain text -#: puzzles.but:1847 +#: puzzles.but:1876 msgid "" "(The program will always ensure the starting puzzle has at least one region " "of each colour, so that this is always possible!)" @@ -4537,7 +4594,7 @@ "Region in jeder Farbe hat, so dass dies immer möglich ist!)" #. type: Plain text -#: puzzles.but:1850 +#: puzzles.but:1879 msgid "" "If you need to clear a region, you can drag from an empty region, or from " "the puzzle boundary if there are no empty regions left." @@ -4547,7 +4604,7 @@ "Regionen mehr übrig sind." #. type: Plain text -#: puzzles.but:1856 +#: puzzles.but:1885 msgid "" "Dragging a colour using the \\e{right} mouse button will stipple the region " "in that colour, which you can use as a note to yourself that you think the " @@ -4561,7 +4618,7 @@ "Schwierigkeitsgraden oft nützlich.)" #. type: Plain text -#: puzzles.but:1868 +#: puzzles.but:1897 msgid "" "You can also use the cursor keys to move around the map: the colour of the " "cursor indicates the position of the colour you would drag (which is not " @@ -4587,7 +4644,7 @@ "gesamte Karte ausgefüllt haben, aber die Verteilung korrigieren müssen." #. type: Plain text -#: puzzles.but:1875 +#: puzzles.but:1904 msgid "" "If you press L during play, the game will toggle display of a number in each " "region of the map. This is useful if you want to discuss a particular puzzle " @@ -4603,22 +4660,22 @@ "der Grenze} zu referenzieren." #. type: Plain text -#: puzzles.but:1879 +#: puzzles.but:1908 msgid "\\I{parameters, for Map}Map parameters" msgstr "\\I{Parameter, für Map}Map-Parameter" #. type: e{#1} -#: puzzles.but:1888 +#: puzzles.but:1917 msgid "Regions" msgstr "Regions" #. type: Plain text -#: puzzles.but:1890 +#: puzzles.but:1919 msgid "Number of regions in the generated map." msgstr "Anzahl der Regionen in der erzeugten Karte." #. type: Plain text -#: puzzles.but:1898 +#: puzzles.but:1927 msgid "" "In \\q{Easy} mode, there should always be at least one region whose colour " "can be determined trivially. In \\q{Normal} and \\q{Hard} modes, you will " @@ -4632,7 +4689,7 @@ "sein." #. type: Plain text -#: puzzles.but:1907 +#: puzzles.but:1936 msgid "" "In \\q{Unreasonable} mode, the program will feel free to generate puzzles " "which are as hard as it can possibly make them: the only constraint is that " @@ -4645,17 +4702,17 @@ "Puzzlen dieser Schwierigkeit kann Raten und Rückverfolgung verlangen." #. type: Plain text -#: puzzles.but:1910 +#: puzzles.but:1939 msgid "\\i{Loopy}" msgstr "\\i{Loopy}" #. type: Plain text -#: puzzles.but:1912 +#: puzzles.but:1941 msgid "\\cfg{winhelp-topic}{games.loopy}" msgstr "\\cfg{winhelp-topic}{games.loopy}" #. type: Plain text -#: puzzles.but:1917 +#: puzzles.but:1946 msgid "" "You are given a grid of dots, marked with yellow lines to indicate which " "dots you are allowed to connect directly together. Your aim is to use some " @@ -4669,7 +4726,7 @@ "Schleife von Punkt zu Punkt zu zeichnen." #. type: Plain text -#: puzzles.but:1922 +#: puzzles.but:1951 msgid "" "Some of the spaces between the lines contain numbers. These numbers indicate " "how many of the lines around that space form part of the loop. The loop you " @@ -4682,7 +4739,7 @@ "berücksichtigen, um als korrekte Lösung betrachtet zu werden." #. type: Plain text -#: puzzles.but:1926 +#: puzzles.but:1955 msgid "" "In the default mode, the dots are arranged in a grid of squares; however, " "you can also play on triangular or hexagonal grids, or even more exotic ones." @@ -4692,14 +4749,14 @@ "exotischeren spielen." #. type: Plain text -#: puzzles.but:1929 +#: puzzles.but:1958 msgid "Credit for the basic puzzle idea goes to \\i{Nikoli} \\k{nikoli-loopy}." msgstr "" -"Die Danksagung für die grundlegende Puzzle-Idee geht an \\i{Nikoli} \\k" -"{nikoli-loopy}." +"Die Danksagung für die grundlegende Puzzle-Idee geht an \\i{Nikoli} " +"\\k{nikoli-loopy}." #. type: Plain text -#: puzzles.but:1933 +#: puzzles.but:1962 msgid "" "Loopy was originally contributed to this collection by Mike Pinna, and " "subsequently enhanced to handle various types of non-square grid by Lambros " @@ -4710,32 +4767,30 @@ "quadratischen Gittern." #. type: Plain text -#: puzzles.but:1937 +#: puzzles.but:1966 msgid "" -"\\W{http://www.nikoli.co.jp/puzzles/3/index-e.htm}\\cw{http://www.nikoli.co." -"jp/puzzles/3/index-e.htm} (beware of Flash)" -msgstr "" -"\\W{http://www.nikoli.co.jp/puzzles/3/index-e.htm}\\cw{http://www.nikoli.co." -"jp/puzzles/3/index-e.htm} (Achtung Flash)" +"\\W{http://www.nikoli.co.jp/en/puzzles/slitherlink.html}\\cw{http://www." +"nikoli.co.jp/en/puzzles/slitherlink.html} (beware of Flash)" +msgstr "\\W{http://www.nikoli.com/en/puzzles/slitherlink.html}\\cw{http://www.nikoli.com/en/puzzles/slitherlink.html} (Achtung Flash)" #. type: Plain text -#: puzzles.but:1939 +#: puzzles.but:1968 msgid "\\i{Loopy controls}" msgstr "\\i{Loopy-Steuerung}" #. type: IM{#1} -#: puzzles.but:1940 +#: puzzles.but:1969 msgid "Loopy controls" msgstr "Loopy-Steuerung" #. type: IM -#: puzzles.but:1940 +#: puzzles.but:1969 #, no-wrap msgid "controls, for Loopy" msgstr "Steuerung, von Loopy" #. type: Plain text -#: puzzles.but:1945 +#: puzzles.but:1974 msgid "" "Click the left mouse button on a yellow line to turn it black, indicating " "that you think it is part of the loop. Click again to turn the line yellow " @@ -4747,7 +4802,7 @@ "bedeutet, dass Sie sich noch nicht sicher sind)." #. type: Plain text -#: puzzles.but:1950 +#: puzzles.but:1979 msgid "" "If you are sure that a particular line segment is \\e{not} part of the loop, " "you can click the right mouse button to remove it completely. Again, " @@ -4759,12 +4814,12 @@ "einfärben." #. type: Plain text -#: puzzles.but:1954 +#: puzzles.but:1983 msgid "\\I{parameters, for Loopy}Loopy parameters" msgstr "\\I{Parameter, für Loopy}Loopy-Parameter" #. type: Plain text -#: puzzles.but:1964 +#: puzzles.but:1993 msgid "" "Size of grid, measured in number of regions across and down. For square " "grids, it's clear how this is counted; for other types of grid you may have " @@ -4776,12 +4831,12 @@ "diese Dimensionen gemessen werden." #. type: e{#1} -#: puzzles.but:1966 +#: puzzles.but:1995 msgid "Grid type" msgstr "Grid type" #. type: Plain text -#: puzzles.but:1974 +#: puzzles.but:2003 msgid "" "Allows you to choose between a selection of types of tiling. Some have all " "the faces the same but may have multiple different types of vertex (e.g. the " @@ -4800,7 +4855,7 @@ "sie die am wenigsten Verwirrenden beim Spielen." #. type: Plain text -#: puzzles.but:1980 +#: puzzles.but:2009 msgid "" "Controls the difficulty of the generated puzzle. \\#{FIXME: what " "distinguishes Easy, Medium, and Hard? In particular, when are backtracking/" @@ -4811,17 +4866,17 @@ "guessword, falls überhaupt, benötigt?}" #. type: Plain text -#: puzzles.but:1983 +#: puzzles.but:2012 msgid "\\i{Inertia}" msgstr "\\i{Inertia}" #. type: Plain text -#: puzzles.but:1985 +#: puzzles.but:2014 msgid "\\cfg{winhelp-topic}{games.inertia}" msgstr "\\cfg{winhelp-topic}{games.inertia}" #. type: Plain text -#: puzzles.but:1988 +#: puzzles.but:2017 msgid "" "You are a small green ball sitting in a grid full of obstacles. Your aim is " "to collect all the gems without running into any mines." @@ -4831,7 +4886,7 @@ "ohne auf eine Mine zu treffen." #. type: Plain text -#: puzzles.but:1997 +#: puzzles.but:2026 msgid "" "You can move the ball in any orthogonal \\e{or diagonal} direction. Once " "the ball starts moving, it will continue until something stops it. A wall " @@ -4845,13 +4900,13 @@ "bewegen. Sobald der Ball sich einmal bewegt, fährt er fort, bis er gestoppt " "wird. Eine Mauer direkt im Weg stoppt ihn (falls er sich aber diagonal " "bewegt, wird er durch einen diagonalen Spalt zwischen zwei anderen Mauern " -"hindurchlaufen, ohne anzuhalten). Auch sind einige der Quadrate \\q" -"{Stoppquadrate}; wenn ein Ball auf diese läuft, hält er an, unabhängig " +"hindurchlaufen, ohne anzuhalten). Auch sind einige der Quadrate " +"\\q{Stoppquadrate}; wenn ein Ball auf diese läuft, hält er an, unabhängig " "davon, in welche Richtung er lief. Edelsteine stoppen den Ball \\e{nicht}; " "er nimmt diese auf und läuft weiter." #. type: Plain text -#: puzzles.but:2001 +#: puzzles.but:2030 msgid "" "Running into a mine is fatal. Even if you picked up the last gem in the same " "move which then hit a mine, the game will count you as dead rather than " @@ -4862,7 +4917,7 @@ "Spiel Sie als Tod und nicht als Sieger registrieren." #. type: Plain text -#: puzzles.but:2005 +#: puzzles.but:2034 msgid "" "This game was originally implemented for Windows by Ben Olmstead \\k{bem}, " "who was kind enough to release his source code on request so that it could " @@ -4874,40 +4929,40 @@ "werden konnte." #. type: Plain text -#: puzzles.but:2007 +#: puzzles.but:2036 msgid "\\W{http://xn13.com/}\\cw{http://xn13.com/}" msgstr "\\W{http://xn13.com/}\\cw{http://xn13.com/}" #. type: Plain text -#: puzzles.but:2009 +#: puzzles.but:2038 msgid "\\i{Inertia controls}" msgstr "\\i{Inertia-Steuerung}" #. type: IM{#1} -#: puzzles.but:2010 puzzles.but:2011 puzzles.but:2012 +#: puzzles.but:2039 puzzles.but:2040 puzzles.but:2041 msgid "Inertia controls" msgstr "Inertia-Steuerung" #. type: IM -#: puzzles.but:2010 +#: puzzles.but:2039 #, no-wrap msgid "controls, for Inertia" msgstr "Steuerung, von Inertia" #. type: IM -#: puzzles.but:2011 +#: puzzles.but:2040 #, no-wrap msgid "keys, for Inertia" msgstr "Tasten, für Inertia" #. type: IM -#: puzzles.but:2012 +#: puzzles.but:2041 #, no-wrap msgid "shortcuts (keyboard), for Inertia" msgstr "Tastaturkürzel, für Inertia" #. type: Plain text -#: puzzles.but:2018 +#: puzzles.but:2047 msgid "" "You can move the ball in any of the eight directions using the numeric " "keypad. Alternatively, if you click the left mouse button on the grid, the " @@ -4918,7 +4973,7 @@ "linken Maustaste in dem Gitter in die dadurch vorgegebene Richtung." #. type: Plain text -#: puzzles.but:2030 +#: puzzles.but:2057 msgid "" "If you use the \\q{Solve} function on this game, the program will compute a " "path through the grid which collects all the remaining gems and returns to " @@ -4927,9 +4982,7 @@ "in that direction, the arrow will update to indicate the next direction on " "the path. You can also press Space to automatically move in the direction of " "the hint arrow. If you move in a different direction from the one shown by " -"the arrow, the hint arrows will stop appearing because you have strayed from " -"the provided path; you can then use \\q{Solve} again to generate a new path " -"if you want to." +"the arrow, arrows will be shown only if the puzzle is still solvable." msgstr "" "Falls Sie die Funktion \\q{Solve} in diesem Spiel verwenden, wird das " "Programm einen Pfad durch das Gitter berechnen, auf dem alle verbliebenen " @@ -4940,12 +4993,10 @@ "Pfad anzuzeigen. Sie können auch die Leertaste drücken, um den Ball " "automatisch in die Richtung des Hinweispfeils zu bewegen. Falls Sie den Ball " "in eine andere Richtung als die vom Hinweispfeil angezeigte bewegen, dann " -"wird der Hinweispfeil nicht mehr angezeigt, da Sie vom vorgegebenen Pfad " -"abgewichen sind; Sie können dann \\q{Solve} erneut aufrufen, um einen neuen " -"Pfad zu erzeugen, falls Sie dies möchten." +"werden die Hinweispfeile nur noch angezeigt, falls das Puzzle noch lösbar ist." #. type: Plain text -#: puzzles.but:2035 +#: puzzles.but:2062 msgid "" "All the actions described in \\k{common-actions} are also available. In " "particular, if you do run into a mine and die, you can use the Undo function " @@ -4958,22 +5009,22 @@ "Spiel verfolgt mit, wie häufig Sie das gemacht haben." #. type: Plain text -#: puzzles.but:2037 +#: puzzles.but:2064 msgid "\\I{parameters, for Inertia}Inertia parameters" msgstr "\\I{Parameter, für Inertia}Inertia-Parameter" #. type: Plain text -#: puzzles.but:2047 +#: puzzles.but:2074 msgid "\\i{Tents}" msgstr "\\i{Tents}" #. type: Plain text -#: puzzles.but:2049 +#: puzzles.but:2076 msgid "\\cfg{winhelp-topic}{games.tents}" msgstr "\\cfg{winhelp-topic}{games.tents}" #. type: Plain text -#: puzzles.but:2053 +#: puzzles.but:2080 msgid "" "You have a grid of squares, some of which contain trees. Your aim is to " "place tents in some of the remaining squares, in such a way that the " @@ -4984,12 +5035,12 @@ "aufzustellen, so dass die folgenden Bedingungen erfüllt sind:" #. type: Plain text -#: puzzles.but:2055 +#: puzzles.but:2082 msgid "There are exactly as many tents as trees." msgstr "Es gibt genausoviele Zelte wie Bäume." #. type: Plain text -#: puzzles.but:2060 +#: puzzles.but:2087 msgid "" "The tents and trees can be matched up in such a way that each tent is " "directly adjacent (horizontally or vertically, but not diagonally) to its " @@ -5000,14 +5051,14 @@ "Ein Zelt darf sich aber auch neben anderen als dem eigenen Baum befinden." #. type: Plain text -#: puzzles.but:2063 +#: puzzles.but:2090 msgid "No two tents are adjacent horizontally, vertically \\e{or diagonally}." msgstr "" "Keine zwei Zelte befinden sich horizontal, vertikal \\e{oder diagonal} " "nebeneinander." #. type: Plain text -#: puzzles.but:2066 +#: puzzles.but:2093 msgid "" "The number of tents in each row, and in each column, matches the numbers " "given round the sides of the grid." @@ -5016,7 +5067,7 @@ "die am Rande des Gitters angegeben ist." #. type: Plain text -#: puzzles.but:2070 +#: puzzles.but:2097 msgid "" "This puzzle can be found in several places on the Internet, and was brought " "to my attention by e-mail. I don't know who I should credit for inventing it." @@ -5026,27 +5077,28 @@ "die Erfindung meinen Dank aussprechen soll." #. type: Plain text -#: puzzles.but:2072 +#: puzzles.but:2099 msgid "\\i{Tents controls}" msgstr "\\i{Tents-Steuerung}" #. type: IM{#1} -#: puzzles.but:2073 +#: puzzles.but:2100 msgid "Tents controls" msgstr "Tents-Steuerung" #. type: IM -#: puzzles.but:2073 +#: puzzles.but:2100 #, no-wrap msgid "controls, for Tents" msgstr "Steuerung, von Tents" #. type: Plain text -#: puzzles.but:2079 +#: puzzles.but:2106 msgid "" "Left-clicking in a blank square will place a tent in it. Right-clicking in " -"a blank square will colour it green, indicating that you are sure it \\e" -"{isn't} a tent. Clicking either button in an occupied square will clear it." +"a blank square will colour it green, indicating that you are sure it " +"\\e{isn't} a tent. Clicking either button in an occupied square will clear " +"it." msgstr "" "Durch Linksklick in ein leeres Quadrat wird dort ein Zelt positioniert. " "Durch Rechtsklick in ein leeres Quadrat wird dieses grün eingefärbt, um " @@ -5055,7 +5107,7 @@ "bereinigt." #. type: Plain text -#: puzzles.but:2084 +#: puzzles.but:2111 msgid "" "If you \\e{drag} with the right button along a row or column, every blank " "square in the region you cover will be turned green, and no other squares " @@ -5068,26 +5120,30 @@ "einer Zeile bereinigen wollen, nachdem Sie alle Zelte gesetzt haben.)" #. type: Plain text -#: puzzles.but:2089 +#: puzzles.but:2118 msgid "" "You can also use the cursor keys to move around the grid. Pressing the " "return key over an empty square will place a tent, and pressing the space " "bar over an empty square will colour it green; either key will clear an " -"occupied square." +"occupied square. Holding Shift and pressing the cursor keys will colour " +"empty squares green. Holding Control and pressing the cursor keys will " +"colour green both empty squares and squares with tents." msgstr "" "Sie können auch die Pfeiltasten verwenden, um sich im Gitter zu bewegen. " "Durch Drücken der Eingabetaste auf einem leeren Feld wird dort ein Zelt " "positioniert und durch Drücken der Leertaste auf einem leeren Feld wird dies " "grün eingefärbt; jede der beiden Tasten wird ein besetztes Quadrat " -"bereinigen." +"bereinigen. Durch Drücken von Umschalten und von Pfeiltasten wird ein leeres " +"Quadrat grün eingefärbt. Durch Drücken von Strg und Pfeiltasten werden sowohl " +"leere als auch Quadrate mit Zelten grün eingefärbt." #. type: Plain text -#: puzzles.but:2093 +#: puzzles.but:2122 msgid "\\I{parameters, for Tents}Tents parameters" msgstr "\\I{Parameter, für Tents}Tents-Parameter" #. type: Plain text -#: puzzles.but:2106 +#: puzzles.but:2135 msgid "" "Controls the difficulty of the generated puzzle. More difficult puzzles " "require more complex deductions, but at present none of the available " @@ -5098,17 +5154,17 @@ "Schwierigkeitsstufen Raten und Rückverfolgung benötigen." #. type: Plain text -#: puzzles.but:2109 +#: puzzles.but:2138 msgid "\\i{Bridges}" msgstr "\\i{Bridges}" #. type: Plain text -#: puzzles.but:2111 +#: puzzles.but:2140 msgid "\\cfg{winhelp-topic}{games.bridges}" msgstr "\\cfg{winhelp-topic}{games.bridges}" #. type: Plain text -#: puzzles.but:2115 +#: puzzles.but:2144 msgid "" "You have a set of islands distributed across the playing area. Each island " "contains a number. Your aim is to connect the islands together with bridges, " @@ -5119,12 +5175,12 @@ "Brücken zu verbinden, so dass folgende Bedingungen erfüllt sind:" #. type: Plain text -#: puzzles.but:2117 +#: puzzles.but:2146 msgid "Bridges run horizontally or vertically." msgstr "Brücken laufen horizontal oder vertikal." #. type: Plain text -#: puzzles.but:2120 +#: puzzles.but:2149 msgid "" "The number of bridges terminating at any island is equal to the number " "written in that island." @@ -5133,7 +5189,7 @@ "angegebenen Nummer überein." #. type: Plain text -#: puzzles.but:2123 +#: puzzles.but:2152 msgid "" "Two bridges may run in parallel between the same two islands, but no more " "than two may do so." @@ -5142,17 +5198,17 @@ "nicht mehr als zwei." #. type: Plain text -#: puzzles.but:2125 +#: puzzles.but:2154 msgid "No bridge crosses another bridge." msgstr "Keine Brücke kreuzt eine andere Brücke." #. type: Plain text -#: puzzles.but:2127 +#: puzzles.but:2156 msgid "All the islands are connected together." msgstr "Alle Inseln sind mit Brücken verbunden." #. type: Plain text -#: puzzles.but:2133 +#: puzzles.but:2162 msgid "" "There are some configurable alternative modes, which involve changing the " "parallel-bridge limit to something other than 2, and introducing the " @@ -5166,42 +5222,40 @@ "Regeln sind die Standardregeln." #. type: Plain text -#: puzzles.but:2135 +#: puzzles.but:2164 msgid "Credit for this puzzle goes to \\i{Nikoli} \\k{nikoli-bridges}." msgstr "Dank für dieses Puzzle geht an \\i{Nikoli} \\k{nikoli-bridges}." #. type: Plain text -#: puzzles.but:2137 +#: puzzles.but:2166 msgid "Bridges was contributed to this collection by James Harvey." -msgstr "Bridges wurde von James Harvey zu dieser Sammlung beigesteuert." +msgstr "Bridges ist ein Beitrag von James Harvey zu dieser Sammlung." #. type: Plain text -#: puzzles.but:2140 +#: puzzles.but:2170 msgid "" -"\\W{http://www.nikoli.co.jp/puzzles/14/index-e.htm}\\cw{http://www.nikoli.co." -"jp/puzzles/14/index-e.htm}" -msgstr "" -"\\W{http://www.nikoli.co.jp/puzzles/14/index-e.htm}\\cw{http://www.nikoli.co." -"jp/puzzles/14/index-e.htm}" +"\\W{http://www.nikoli.co.jp/en/puzzles/hashiwokakero.html}\\cw{http://www." +"nikoli.co.jp/en/puzzles/hashiwokakero.html} (beware of Flash)" +msgstr "\\W{http://www.nikoli.com/en/puzzles/hashiwokakero.html}\\cw{http://www.nikoli.com/en/puzzles/hashiwokakero.html} (Achtung Flash)" #. type: Plain text -#: puzzles.but:2142 +#: puzzles.but:2172 msgid "\\i{Bridges controls}" msgstr "\\i{Bridges-Steuerung}" #. type: IM{#1} -#: puzzles.but:2143 +#: puzzles.but:2173 msgid "Bridges controls" msgstr "Bridges-Steuerung" #. type: IM -#: puzzles.but:2143 +#: puzzles.but:2173 #, no-wrap msgid "controls, for Bridges" msgstr "Steuerung, von Bridges" #. type: Plain text -#: puzzles.but:2151 +#: puzzles.but:2181 msgid "" "To place a bridge between two islands, click the mouse down on one island " "and drag it towards the other. You do not need to drag all the way to the " @@ -5218,7 +5272,7 @@ "bequem Brücken von dieser aus in viele Richtungen werfen.)" #. type: Plain text -#: puzzles.but:2156 +#: puzzles.but:2186 msgid "" "Doing this again when a bridge is already present will add another parallel " "bridge. If there are already as many bridges between the two islands as " @@ -5232,7 +5286,7 @@ "Brücken wieder entfernen." #. type: Plain text -#: puzzles.but:2160 +#: puzzles.but:2190 msgid "" "If you want to remind yourself that two islands definitely \\e{do not} have " "a bridge between them, you can right-drag between them in the same way to " @@ -5243,7 +5297,7 @@ "der rechten Maustaste eine \\q{keine-Brücke}-Markierung hinziehen." #. type: Plain text -#: puzzles.but:2168 +#: puzzles.but:2198 msgid "" "If you think you have finished with an island (i.e. you have placed all its " "bridges and are confident that they are in the right places), you can mark " @@ -5262,40 +5316,54 @@ "bearbeiten." #. type: Plain text -#: puzzles.but:2175 +#: puzzles.but:2206 msgid "" "You can also use the cursor keys to move around the grid: if possible the " "cursor will always move orthogonally, otherwise it will move towards the " -"nearest island to the indicated direction. Pressing the return key followed " -"by a cursor key will lay a bridge in that direction (if available); pressing " -"the space bar followed by a cursor key will lay a \\q{non-bridge} marker." +"nearest island to the indicated direction. Holding Control and pressing a " +"cursor key will lay a bridge in that direction (if available); Shift and a " +"cursor key will lay a \\q{non-bridge} marker. Pressing the return key " +"followed by a cursor key will also lay a bridge in that direction." msgstr "" "Sie können auch die Pfeiltasten zur Bewegung im Gitter verwenden: Falls " "möglich, wird sich der Cursor immer orthogonal bewegen, andernfalls wird er " "sich zur Insel bewegen, die der angezeigten Richtung am nächsten liegt. " -"Durch Drücken der Eingabetaste gefolgt von einer Pfeiltaste wird eine Brücke " +"Durch Drücken von Strg gefolgt von einer Pfeiltaste wird eine Brücke " "in diese Richtung gelegt (falls möglich). Durch Drücken der Leertaste " -"gefolgt von einer Pfeiltaste wird eine \\q{keine-Brücke}-Markierung gesetzt." +"gefolgt von einer Pfeiltaste wird eine \\q{keine-Brücke}-Markierung gesetzt. " +"Durch Druck der Eingabetaste gefolgt von einer Pfeiltaste wird auch eine " +"Brücke in diese Richtung gelegt." #. type: Plain text -#: puzzles.but:2177 -msgid "You can mark an island as finished by pressing the return key twice." +#: puzzles.but:2209 +msgid "" +"You can mark an island as finished by pressing the space bar or by pressing " +"the return key twice." msgstr "" -"Durch zweifaches Drücken der Eingabetaste können Sie eine Insel als beendet " +"Durch zweifaches Drücken der Leer- oder Eingabetaste können Sie eine Insel als beendet " "markieren." #. type: Plain text -#: puzzles.but:2179 +#: puzzles.but:2213 +msgid "" +"By pressing a number key, you can jump to the nearest island with that " +"number. Letters \\q{a}, ..., \\q{f} count as 10, ..., 15 and \\q{0} as 16." +msgstr "" +"Durch Drücken einer Zahltaste können Sie zur nächsten Insel mit dieser Zahl " +"springen. Die Buchstaben \\q{a} … \\q{f} zählen als 10 … 15 und \\q{0} als 16." + +#. type: Plain text +#: puzzles.but:2215 msgid "Violations of the puzzle rules will be marked in red:" msgstr "Verletzungen der Puzzleregeln werden in rot markiert:" #. type: Plain text -#: puzzles.but:2181 +#: puzzles.but:2217 msgid "An island with too many bridges will be highlighted in red." msgstr "Eine Insel mit zu vielen Brücken wird in rot hervorgehoben." #. type: Plain text -#: puzzles.but:2187 +#: puzzles.but:2223 msgid "" "An island with too few bridges will be highlighted in red if it is " "definitely an error (as opposed to merely not being finished yet): if adding " @@ -5310,7 +5378,7 @@ "wurde." #. type: Plain text -#: puzzles.but:2194 +#: puzzles.but:2230 msgid "" "A group of islands and bridges may be highlighted in red if it is a closed " "subset of the puzzle with no way to connect it to the rest of the islands. " @@ -5326,7 +5394,7 @@ "Gruppe nicht in einer gültigen Lösung enthalten sein kann." #. type: Plain text -#: puzzles.but:2198 +#: puzzles.but:2234 msgid "" "If you have selected the (non-default) option to disallow loops in the " "solution, a group of bridges which forms a loop will be highlighted." @@ -5336,22 +5404,22 @@ "hervorgehoben. " #. type: Plain text -#: puzzles.but:2202 +#: puzzles.but:2238 msgid "\\I{parameters, for Bridges}Bridges parameters" msgstr "\\I{Parameter, für Bridges}Bridges-Parameter" #. type: Plain text -#: puzzles.but:2213 +#: puzzles.but:2249 msgid "Difficulty level of puzzle." msgstr "Schwierigkeitsgrad des Puzzles." #. type: e{#1} -#: puzzles.but:2215 +#: puzzles.but:2251 msgid "Allow loops" msgstr "Allow loops" #. type: Plain text -#: puzzles.but:2219 +#: puzzles.but:2255 msgid "" "This is set by default. If cleared, puzzles will be generated in such a way " "that they are always soluble without creating a loop, and solutions which do " @@ -5362,12 +5430,12 @@ "die eine Schleife enthalten, verboten werden." #. type: e{#1} -#: puzzles.but:2221 +#: puzzles.but:2257 msgid "Max. bridges per direction" msgstr "Max. bridges per direction" #. type: Plain text -#: puzzles.but:2225 +#: puzzles.but:2261 msgid "" "Maximum number of bridges in any particular direction. The default is 2, but " "you can change it to 1, 3 or 4. In general, fewer is easier." @@ -5376,12 +5444,12 @@ "können Sie auf 1, 3 oder 4 ändern. Im Allgemeinen sind weniger leichter." #. type: e{#1} -#: puzzles.but:2227 +#: puzzles.but:2263 msgid "%age of island squares" msgstr "%age of island squares" #. type: Plain text -#: puzzles.but:2231 +#: puzzles.but:2267 msgid "" "Gives a rough percentage of islands the generator will try and lay before " "finishing the puzzle. Certain layouts will not manage to lay enough islands; " @@ -5392,12 +5460,12 @@ "Lage sein, genügend Inseln zu legen; dies ist eine Obergrenze." #. type: e{#1} -#: puzzles.but:2233 +#: puzzles.but:2269 msgid "Expansion factor (%age)" msgstr "Expansion factor (%age)" #. type: Plain text -#: puzzles.but:2240 +#: puzzles.but:2276 msgid "" "The grid generator works by picking an existing island at random (after " "first creating an initial island somewhere). It then decides on a direction " @@ -5414,7 +5482,7 @@ "näheren Ort auszuwählen." #. type: Plain text -#: puzzles.but:2248 +#: puzzles.but:2284 msgid "" "High expansion factors usually mean easier puzzles with fewer possible " "islands; low expansion factors can create lots of tightly-packed islands." @@ -5424,17 +5492,17 @@ "gepackten Inseln führen." #. type: Plain text -#: puzzles.but:2251 +#: puzzles.but:2287 msgid "\\i{Unequal}" msgstr "\\i{Unequal}" #. type: Plain text -#: puzzles.but:2253 +#: puzzles.but:2289 msgid "\\cfg{winhelp-topic}{games.unequal}" msgstr "\\cfg{winhelp-topic}{games.unequal}" #. type: Plain text -#: puzzles.but:2257 +#: puzzles.but:2293 msgid "" "You have a square grid; each square may contain a digit from 1 to the size " "of the grid, and some squares have clue signs between them. Your aim is to " @@ -5446,27 +5514,27 @@ "Zahlen zu befüllen, so dass:" #. type: Plain text -#: puzzles.but:2259 puzzles.but:2475 +#: puzzles.but:2295 puzzles.but:2517 msgid "Each row contains only one occurrence of each digit" msgstr "Jede Zeile jede Ziffer nur einmal enthält" #. type: Plain text -#: puzzles.but:2261 puzzles.but:2477 +#: puzzles.but:2297 puzzles.but:2519 msgid "Each column contains only one occurrence of each digit" msgstr "Jede Spalte jede Ziffer nur einmal enthält" #. type: Plain text -#: puzzles.but:2263 +#: puzzles.but:2299 msgid "All the clue signs are satisfied." msgstr "Alle Hinweiszeichen sind beachtet worden." #. type: Plain text -#: puzzles.but:2265 +#: puzzles.but:2301 msgid "There are two modes for this game, \\q{Unequal} and \\q{Adjacent}." msgstr "Es gibt zwei Modi für dieses Spiel, \\q{Unequal} und \\q{Adjacent}." #. type: Plain text -#: puzzles.but:2269 +#: puzzles.but:2305 msgid "" "In \\q{Unequal} mode, the clue signs are greater-than symbols indicating one " "square's value is greater than its neighbour's. In this mode not all clues " @@ -5478,7 +5546,7 @@ "höheren Schwierigkeitsgraden." #. type: Plain text -#: puzzles.but:2275 +#: puzzles.but:2311 msgid "" "In \\q{Adjacent} mode, the clue signs are bars indicating one square's value " "is numerically adjacent (i.e. one higher or one lower) than its neighbour. " @@ -5493,7 +5561,7 @@ "Nachbarquadrats ist." #. type: Plain text -#: puzzles.but:2279 +#: puzzles.but:2315 msgid "" "In \\q{Trivial} difficulty level (available via the \\q{Custom} game type " "selector), there are no greater-than signs in \\q{Unequal} mode; the puzzle " @@ -5504,7 +5572,7 @@ "Puzzle besteht nur darin, das \\i{Lateinische Quadrat} zu lösen." #. type: Plain text -#: puzzles.but:2282 +#: puzzles.but:2318 msgid "" "At the time of writing, the \\q{Unequal} mode of this puzzle is appearing in " "the Guardian weekly under the name \\q{\\i{Futoshiki}}." @@ -5513,33 +5581,33 @@ "der »Guardian weekly« unter dem Namen \\q{\\i{Futoshiki}}." #. type: Plain text -#: puzzles.but:2284 +#: puzzles.but:2320 msgid "Unequal was contributed to this collection by James Harvey." -msgstr "Unequal wurde von James Harvey zu dieser Sammlung beigesteuert." +msgstr "Unequal ist ein Beitrag von James Harvey zu dieser Sammlung." #. type: Plain text -#: puzzles.but:2286 +#: puzzles.but:2322 msgid "\\i{Unequal controls}" msgstr "\\i{Unequal-Steuerung}" #. type: IM{#1} -#: puzzles.but:2287 +#: puzzles.but:2323 msgid "Unequal controls" msgstr "Unequal-Steuerung" #. type: IM -#: puzzles.but:2287 +#: puzzles.but:2323 #, no-wrap msgid "controls, for Unequal" msgstr "Steuerung, von Unequal" #. type: Plain text -#: puzzles.but:2290 +#: puzzles.but:2326 msgid "Unequal shares much of its control system with Solo." msgstr "Unequal hat viel mit dem Steuersystem von Solo gemeinsam." #. type: Plain text -#: puzzles.but:2295 +#: puzzles.but:2331 msgid "" "To play Unequal, simply click the mouse in any empty square and then type a " "digit or letter on the keyboard to fill that square. If you make a mistake, " @@ -5553,47 +5621,59 @@ "wieder zu leeren (oder verwenden Sie die Undo-Funktionalität)." #. type: Plain text -#: puzzles.but:2318 +#: puzzles.but:2354 msgid "" "As for Solo, the cursor keys can be used in conjunction with the digit keys " -"to set numbers or pencil marks. You can also use the 'M' key to auto-fill " -"every numeric hint, ready for removal as required, or the 'H' key to do the " -"same but also to remove all obvious hints." +"to set numbers or pencil marks. You can also use the \\q{M} key to auto-fill " +"every numeric hint, ready for removal as required, or the \\q{H} key to do " +"the same but also to remove all obvious hints." msgstr "" "Wie bei Solo können die Pfeiltasten zusammen mit den Zifferntasten verwendet " "werden, um Nummern oder Bleistiftmarkierungen zu setzen. Sie können auch die " -"»M«-Taste verwenden, um jeden Vorschlag automatisch eintragen zu lassen, der " -"dann zur Entfernung (soweit notwendig) bereit steht oder die »H«-Taste, um " +"Taste \\q{M} verwenden, um jeden Vorschlag automatisch eintragen zu lassen, der " +"dann zur Entfernung (soweit notwendig) bereit steht oder die Taste \\q{H}, um " "das gleiche durchzuführen und zusätzlich alle offensichtlichen Vorschläge zu " "entfernen." #. type: Plain text -#: puzzles.but:2328 +#: puzzles.but:2365 +msgid "" +"Left-clicking a clue will mark it as done (grey it out), or unmark it if it " +"is already marked. Holding Control or Shift and pressing an arrow key " +"likewise marks any clue adjacent to the cursor in the given direction." +msgstr "" +"Durch Linksklick auf einen Hinweis wird dieser als erledigt markiert " +"(ausgegraut) oder die Markierung entfernt, falls er bereits markiert ist. " +"Durch Halten von Strg oder Umschalten und Drücken einer Pfeiltaste werden " +"entsprechende Hinweise neben dem Cursor in der angegebenen Richtung markiert." + +#. type: Plain text +#: puzzles.but:2369 msgid "\\I{parameters, for Unequal}Unequal parameters" msgstr "\\I{Parameter, für Unequal}Unequal-Parameter" #. type: e{#1} -#: puzzles.but:2333 +#: puzzles.but:2374 msgid "Mode" msgstr "Mode" #. type: Plain text -#: puzzles.but:2335 +#: puzzles.but:2376 msgid "Mode of the puzzle (\\q{Unequal} or \\q{Adjacent})" msgstr "Modus des Puzzles (\\q{Unequal} oder \\q{Adjacent})" #. type: e{#1} -#: puzzles.but:2337 +#: puzzles.but:2378 msgid "Size (s*s)" msgstr "Size (s*s)" #. type: Plain text -#: puzzles.but:2339 +#: puzzles.but:2380 msgid "Size of grid." msgstr "Größe des Gitters." #. type: Plain text -#: puzzles.but:2348 +#: puzzles.but:2389 msgid "" "Controls the difficulty of the generated puzzle. At Trivial level, there are " "no greater-than signs; the puzzle is to solve the Latin square only. At " @@ -5610,17 +5690,17 @@ "Schlussfolgerungen, um Rückverfolgung zu vermeiden." #. type: Plain text -#: puzzles.but:2352 +#: puzzles.but:2393 msgid "\\i{Galaxies}" msgstr "\\i{Galaxies}" #. type: Plain text -#: puzzles.but:2354 +#: puzzles.but:2395 msgid "\\cfg{winhelp-topic}{games.galaxies}" msgstr "\\cfg{winhelp-topic}{games.galaxies}" #. type: Plain text -#: puzzles.but:2360 +#: puzzles.but:2401 msgid "" "You have a rectangular grid containing a number of dots. Your aim is to draw " "edges along the grid lines which divide the rectangle into regions in such a " @@ -5634,48 +5714,46 @@ "enthalten." #. type: Plain text -#: puzzles.but:2364 +#: puzzles.but:2405 msgid "" "This puzzle was invented by \\i{Nikoli} \\k{nikoli-galaxies}, under the name " "\\q{Tentai Show}; its name is commonly translated into English as \\q{Spiral " "Galaxies}." msgstr "" -"Dieses Puzzle wurde von \\i{Nikoli} \\k{nikoli-galaxies} unter dem Namen \\q" -"{Tentai Show} erfunden; der Name wird normalerweise als \\q{Spiral Galaxies} " -"ins Englische übersetzt." +"Dieses Puzzle wurde von \\i{Nikoli} \\k{nikoli-galaxies} unter dem Namen " +"\\q{Tentai Show} erfunden; der Name wird normalerweise als \\q{Spiral " +"Galaxies} ins Englische übersetzt." #. type: Plain text -#: puzzles.but:2366 +#: puzzles.but:2407 msgid "Galaxies was contributed to this collection by James Harvey." -msgstr "Galaxies wurde von James Harvey zu dieser Sammlung beigesteuert." +msgstr "Galaxies ist ein Beitrag von James Harvey zu dieser Sammlung." #. type: Plain text -#: puzzles.but:2368 +#: puzzles.but:2409 msgid "" -"\\W{http://www.nikoli.co.jp/en/puzzles/astronomical_show/}\\cw{http://www." -"nikoli.co.jp/en/puzzles/astronomical_show/}" -msgstr "" -"\\W{http://www.nikoli.co.jp/en/puzzles/astronomical_show/}\\cw{http://www." -"nikoli.co.jp/en/puzzles/astronomical_show/}" +"\\W{http://www.nikoli.co.jp/en/puzzles/astronomical_show.html}\\cw{http://" +"www.nikoli.co.jp/en/puzzles/astronomical_show.html}" +msgstr "\\W{http://www.nikoli.co.jp/en/puzzles/astronomical_show.html}\\cw{http://www.nikoli.co.jp/en/puzzles/astronomical_show.html}" #. type: Plain text -#: puzzles.but:2370 +#: puzzles.but:2411 msgid "\\i{Galaxies controls}" msgstr "\\i{Galaxies-Steuerung}" #. type: IM{#1} -#: puzzles.but:2371 +#: puzzles.but:2412 msgid "Galaxies controls" msgstr "Galaxies-Steuerung" #. type: IM -#: puzzles.but:2371 +#: puzzles.but:2412 #, no-wrap msgid "controls, for Galaxies" msgstr "Steuerung, von Galaxies" #. type: Plain text -#: puzzles.but:2379 +#: puzzles.but:2420 msgid "" "Left-click on any grid line to draw an edge if there isn't one already, or " "to remove one if there is. When you create a valid region (one which is " @@ -5691,7 +5769,7 @@ "darin, das gesamte Gitter auf diese Weise hervorgehoben zu bekommen." #. type: Plain text -#: puzzles.but:2391 +#: puzzles.but:2432 msgid "" "During solving, you might know that a particular grid square belongs to a " "specific dot, but not be sure of where the edges go and which other squares " @@ -5719,7 +5797,7 @@ "auf den Elternpunkt zu zeigen." #. type: Plain text -#: puzzles.but:2398 +#: puzzles.but:2439 msgid "" "You can also use the cursor keys to move around the grid squares and lines. " "Pressing the return key when over a grid line will draw or clear its edge, " @@ -5737,33 +5815,33 @@ "einen Punkt oder einen anderen Pfeil zu entfernen." #. type: Plain text -#: puzzles.but:2402 +#: puzzles.but:2443 msgid "\\I{parameters, for Galaxies}Galaxies parameters" msgstr "\\I{Parameter, für Galaxies}Galaxies-Parameter" #. type: Plain text -#: puzzles.but:2415 +#: puzzles.but:2456 msgid "" "Controls the difficulty of the generated puzzle. More difficult puzzles " "require more complex deductions, and the \\q{Unreasonable} difficulty level " "may require backtracking." msgstr "" "Steuert die Schwierigkeit des erstellten Puzzles. Schwierigere Puzzle " -"verlangen komplexere Schlüsse und bei der Schwierigkeitsstufe \\q" -"{Unreasonable} könnte Rückverfolgung notwendig sein." +"verlangen komplexere Schlüsse und bei der Schwierigkeitsstufe " +"\\q{Unreasonable} könnte Rückverfolgung notwendig sein." #. type: Plain text -#: puzzles.but:2419 +#: puzzles.but:2460 msgid "\\i{Filling}" msgstr "\\i{Filling}" #. type: Plain text -#: puzzles.but:2421 +#: puzzles.but:2462 msgid "\\cfg{winhelp-topic}{games.filling}" msgstr "\\cfg{winhelp-topic}{games.filling}" #. type: Plain text -#: puzzles.but:2426 +#: puzzles.but:2467 msgid "" "You have a grid of squares, some of which contain digits, and the rest of " "which are empty. Your job is to fill in digits in the empty squares, in such " @@ -5777,16 +5855,16 @@ "Ziffer entspricht." #. type: Plain text -#: puzzles.but:2429 +#: puzzles.but:2470 msgid "" "(\\q{Connected region}, for the purposes of this game, does not count " "diagonally separated squares as adjacent.)" msgstr "" -"(Für die Zwecke dieses Spiels zählen diagonal getrennte Quadrate bei den \\q" -"{verbundenen Regionen} nicht als benachbart.)" +"(Für die Zwecke dieses Spiels zählen diagonal getrennte Quadrate bei den " +"\\q{verbundenen Regionen} nicht als benachbart.)" #. type: Plain text -#: puzzles.but:2434 +#: puzzles.but:2475 msgid "" "For example, it follows that no square can contain a zero, and that two " "adjacent squares can not both contain a one. No region has an area greater " @@ -5797,32 +5875,30 @@ "9 (da dann sein Gebiet nicht eine einzelne Ziffer wäre)." #. type: Plain text -#: puzzles.but:2436 +#: puzzles.but:2477 msgid "Credit for this puzzle goes to \\i{Nikoli} \\k{nikoli-fillomino}." msgstr "Dank für dieses Puzzle geht an \\i{Nikoli} \\k{nikoli-fillomino}." #. type: Plain text -#: puzzles.but:2438 +#: puzzles.but:2479 msgid "Filling was contributed to this collection by Jonas K\\u00F6{oe}lker." msgstr "" -"Filling wurde von Jonas K\\u00F6{oe}lker zu dieser Sammlung beigesteuert." +"Filling ist ein Beitrag von Jonas K\\u00F6{oe}lker zu dieser Sammlung." #. type: Plain text -#: puzzles.but:2441 +#: puzzles.but:2482 msgid "" -"\\W{http://www.nikoli.co.jp/en/puzzles/fillomino/}\\cw{http://www.nikoli.co." -"jp/en/puzzles/fillomino/}" -msgstr "" -"\\W{http://www.nikoli.co.jp/en/puzzles/fillomino/}\\cw{http://www.nikoli.co." -"jp/en/puzzles/fillomino/}" +"\\W{http://www.nikoli.co.jp/en/puzzles/fillomino.html}\\cw{http://www.nikoli." +"co.jp/en/puzzles/fillomino.html}" +msgstr "\\W{http://www.nikoli.co.jp/en/puzzles/fillomino.html}\\cw{http://www.nikoli.co.jp/en/puzzles/fillomino.html}" #. type: Plain text -#: puzzles.but:2443 +#: puzzles.but:2484 msgid "\\I{controls, for Filling}Filling controls" msgstr "\\I{Steuerung, von Filling}Filling-Steuerung" #. type: Plain text -#: puzzles.but:2450 +#: puzzles.but:2491 msgid "" "To play Filling, simply click the mouse in any empty square and then type a " "digit on the keyboard to fill that square. By dragging the mouse, you can " @@ -5839,28 +5915,33 @@ "Sie die Undo-Funktion)." #. type: Plain text -#: puzzles.but:2456 +#: puzzles.but:2498 msgid "" "You can also move around the grid with the cursor keys; typing a digit will " -"fill the square containing the cursor with that number, or typing 0, Space, " -"or Enter will clear it. You can also select multiple squares for numbering " -"or clearing by using the return key, before typing a digit to fill in the " -"highlighted squares (as above)." +"fill the square containing the cursor with that number; typing 0 will clear " +"it. You can also select multiple squares for numbering or clearing with the " +"return and arrow keys, before typing a digit to fill or clear the " +"highlighted squares (as above). The space bar adds and removes single " +"squares to and from the selection. Backspace and escape remove all squares " +"from the selection." msgstr "" "Sie können sich im Gitter auch mit den Pfeiltasten bewegen. Durch Drücken " "einer Ziffer wird das Quadrat unter dem Cursor mit der Zahl gefüllt, durch " -"Drücken der 0, Leer-, Rückschritt- oder Eingabetaste wird es wieder " +"Drücken der 0 wird es wieder " "bereinigt. Sie können auch mehrere Quadrate zur Nummerierung oder " -"Bereinigung auswählen, indem Sie vor der Eingabe der Ziffer in ein " -"hervorgehobenes Quadrat die Eingabetaste drücken (wie oben)." +"Bereinigung mit der Eingabe- und den Pfeiltasten auswählen, bevor Sie eine " +"Ziffer eingeben, um die hervorgehobenen Quadrate auszufüllen oder zu " +"bereinigen (wie oben). Die Leertaste fügt einzelne Quadrate zu der Auswahl " +"hinzu oder entfernt sie daraus. Rückschritt oder Escape entfernen alle " +"Quadrate aus der Auswahl." #. type: Plain text -#: puzzles.but:2460 +#: puzzles.but:2502 msgid "\\I{parameters, for Filling}Filling parameters" msgstr "\\I{Parameter, für Filling}Filling-Parameter" #. type: Plain text -#: puzzles.but:2463 +#: puzzles.but:2505 msgid "" "Filling allows you to configure the number of rows and columns of the grid, " "through the \\q{Type} menu." @@ -5869,17 +5950,17 @@ "des \\q{Type}-Menüs einstellen." #. type: Plain text -#: puzzles.but:2466 +#: puzzles.but:2508 msgid "\\i{Keen}" msgstr "\\i{Keen}" #. type: Plain text -#: puzzles.but:2468 +#: puzzles.but:2510 msgid "\\cfg{winhelp-topic}{games.keen}" msgstr "\\cfg{winhelp-topic}{games.keen}" #. type: Plain text -#: puzzles.but:2473 +#: puzzles.but:2515 msgid "" "You have a square grid; each square may contain a digit from 1 to the size " "of the grid. The grid is divided into blocks of varying shape and size, with " @@ -5892,7 +5973,7 @@ "Ihr Ziel besteht darin, das Gitter komplett mit Zahlen zu befüllen, so dass:" #. type: Plain text -#: puzzles.but:2481 +#: puzzles.but:2523 msgid "" "The digits in each block can be combined to form the number stated in the " "clue, using the arithmetic operation given in the clue. That is:" @@ -5902,7 +5983,7 @@ "bilden. Dies heißt:" #. type: Plain text -#: puzzles.but:2508 +#: puzzles.but:2550 msgid "" "An addition clue means that the sum of the digits in the block must be the " "given number. For example, \\q{15+} means the contents of the block adds up " @@ -5913,7 +5994,7 @@ "Summe der Blöcke 15 ergibt." #. type: Plain text -#: puzzles.but:2508 +#: puzzles.but:2550 msgid "" "A multiplication clue (e.g. \\q{60\\times}), similarly, means that the " "product of the digits in the block must be the given number." @@ -5922,7 +6003,7 @@ "das Produkt der Ziffern in dem Block die angegebene Zahl ergeben muss." #. type: Plain text -#: puzzles.but:2508 +#: puzzles.but:2550 msgid "" "A subtraction clue will always be written in a block of size two, and it " "means that one of the digits in the block is greater than the other by the " @@ -5938,7 +6019,7 @@ "Ziffern können in dem Block aber beliebig verteilt sein." #. type: Plain text -#: puzzles.but:2508 +#: puzzles.but:2550 msgid "" "A division clue (e.g. \\q{3\\divide}), similarly, is always in a block of " "size two and means that one digit divided by the other is equal to the given " @@ -5949,7 +6030,7 @@ "die andere identisch zu der angegebenen Zahl ist." #. type: Plain text -#: puzzles.but:2508 +#: puzzles.but:2550 msgid "" "Note that a block may contain the same digit more than once (provided the " "identical ones are not in the same row and column). This rule is precisely " @@ -5961,33 +6042,33 @@ "\\q{Killer} von Solo (siehe \\k{solo})." #. type: Plain text -#: puzzles.but:2510 +#: puzzles.but:2552 msgid "This puzzle appears in the Times under the name \\q{\\i{KenKen}}." msgstr "Dieses Puzzle erscheint in der Times unter dem Namen \\q{\\i{KenKen}}." #. type: Plain text -#: puzzles.but:2513 +#: puzzles.but:2555 msgid "\\i{Keen controls}" msgstr "\\i{Keen-Steuerung}" #. type: IM{#1} -#: puzzles.but:2514 +#: puzzles.but:2556 msgid "Keen controls" msgstr "Keen-Steuerung" #. type: IM -#: puzzles.but:2514 +#: puzzles.but:2556 #, no-wrap msgid "controls, for Keen" msgstr "Steuerung, von Keen" #. type: Plain text -#: puzzles.but:2517 +#: puzzles.but:2559 msgid "Keen shares much of its control system with Solo (and Unequal)." msgstr "Keen hat viel mit dem Steuersystem von Solo (und Unequal) gemeinsam." #. type: Plain text -#: puzzles.but:2522 +#: puzzles.but:2564 msgid "" "To play Keen, simply click the mouse in any empty square and then type a " "digit on the keyboard to fill that square. If you make a mistake, click the " @@ -6001,7 +6082,7 @@ "leeren (oder verwenden Sie die Undo-Funktion)." #. type: Plain text -#: puzzles.but:2546 puzzles.but:2636 +#: puzzles.but:2588 puzzles.but:2682 msgid "" "As for Solo, the cursor keys can be used in conjunction with the digit keys " "to set numbers or pencil marks. Use the cursor keys to move a highlight " @@ -6017,7 +6098,7 @@ "Hervorhebung Bleistiftmarkierungen eingeben oder entfernen können." #. type: Plain text -#: puzzles.but:2549 puzzles.but:2639 +#: puzzles.but:2591 puzzles.but:2685 msgid "" "Pressing M will fill in a full set of pencil marks in every square that does " "not have a main digit in it." @@ -6026,17 +6107,17 @@ "jedes Quadrat, das noch keine Hauptziffer enthält, eingefügt." #. type: Plain text -#: puzzles.but:2553 +#: puzzles.but:2595 msgid "\\I{parameters, for Keen}Keen parameters" msgstr "\\I{Parameter, für Keen}Keen-Parameter" #. type: e{#1} -#: puzzles.but:2558 puzzles.but:2648 +#: puzzles.but:2600 puzzles.but:2698 msgid "Grid size" msgstr "Grid size" #. type: Plain text -#: puzzles.but:2562 puzzles.but:2652 +#: puzzles.but:2604 puzzles.but:2702 msgid "" "Specifies the size of the grid. Lower limit is 3; upper limit is 9 (because " "the user interface would become more difficult with \\q{digits} bigger than " @@ -6047,7 +6128,7 @@ "würde!)." #. type: Plain text -#: puzzles.but:2569 puzzles.but:2659 +#: puzzles.but:2611 puzzles.but:2709 msgid "" "Controls the difficulty of the generated puzzle. At Unreasonable level, some " "backtracking will be required, but the solution should still be unique. The " @@ -6059,18 +6140,32 @@ "noch eindeutig sein. Die Stufen dazwischen benötigen zunehmend komplexe " "Schlussfolgerungen, um Rückverfolgung zu vermeiden." +#. type: e{#1} +#: puzzles.but:2613 +msgid "Multiplication only" +msgstr "Multiplication only" + #. type: Plain text -#: puzzles.but:2572 +#: puzzles.but:2616 +msgid "" +"If this is enabled, all boxes will be multiplication boxes. With this rule, " +"the puzzle is known as \\q{Inshi No Heya}." +msgstr "" +"Falls dies aktiviert ist, sind alle Kästen Multiplikationskästen. Mit dieser " +"Regel ist das Puzzle als \\q{Inshi No Heya} bekannt." + +#. type: Plain text +#: puzzles.but:2618 msgid "\\i{Towers}" msgstr "\\i{Towers}" #. type: Plain text -#: puzzles.but:2574 +#: puzzles.but:2620 msgid "\\cfg{winhelp-topic}{games.towers}" msgstr "\\cfg{winhelp-topic}{games.towers}" #. type: Plain text -#: puzzles.but:2578 +#: puzzles.but:2624 msgid "" "You have a square grid. On each square of the grid you can build a tower, " "with its height ranging from 1 to the size of the grid. Around the edge of " @@ -6081,23 +6176,23 @@ "den Rand des Gitters herum befinden sich ein paar nummerische Hinweise." #. type: Plain text -#: puzzles.but:2580 +#: puzzles.but:2626 msgid "Your task is to build a tower on every square, in such a way that:" msgstr "" "Ihre Aufgabe besteht darin, in jedem Quadrat einen Turm zu bauen, so dass" #. type: Plain text -#: puzzles.but:2582 +#: puzzles.but:2628 msgid "Each row contains every possible height of tower once" msgstr "jede Zeile jede mögliche Höhe eines Turms einmal enthält" #. type: Plain text -#: puzzles.but:2584 +#: puzzles.but:2630 msgid "Each column contains every possible height of tower once" msgstr "jede Spalte jede mögliche Höhe eines Turms einmal enthält" #. type: Plain text -#: puzzles.but:2592 +#: puzzles.but:2638 msgid "" "Each numeric clue describes the number of towers that can be seen if you " "look into the square from that direction, assuming that shorter towers are " @@ -6116,7 +6211,7 @@ "der höchste Turm (der mit 5 markiert ist) als erstes kommen muss." #. type: Plain text -#: puzzles.but:2596 +#: puzzles.but:2642 msgid "" "In harder or larger puzzles, some towers will be specified for you as well " "as the clues round the edge, and some edge clues may be missing." @@ -6126,38 +6221,38 @@ "könnten fehlen." #. type: Plain text -#: puzzles.but:2599 +#: puzzles.but:2645 msgid "" -"This puzzle appears on the web under various names, particularly \\q{\\i" -"{Skyscrapers}}, but I don't know who first invented it." +"This puzzle appears on the web under various names, particularly " +"\\q{\\i{Skyscrapers}}, but I don't know who first invented it." msgstr "" -"Das Puzzle erscheint im Web unter verschiedenen Namen, insbesondere \\q{\\i" -"{Skyscrapers}}, aber ich weiß nicht, wer es erfunden hat." +"Das Puzzle erscheint im Web unter verschiedenen Namen, insbesondere " +"\\q{\\i{Skyscrapers}}, aber ich weiß nicht, wer es erfunden hat." #. type: Plain text -#: puzzles.but:2602 +#: puzzles.but:2648 msgid "\\i{Towers controls}" msgstr "\\i{Towers-Steuerung}" #. type: IM{#1} -#: puzzles.but:2603 +#: puzzles.but:2649 msgid "Towers controls" msgstr "Towers-Steuerung" #. type: IM -#: puzzles.but:2603 +#: puzzles.but:2649 #, no-wrap msgid "controls, for Towers" msgstr "Steuerung, von Towers" #. type: Plain text -#: puzzles.but:2606 +#: puzzles.but:2652 msgid "Towers shares much of its control system with Solo, Unequal and Keen." msgstr "" "Towers hat viel mit dem Steuersystem von Solo, Unequal und Keen gemeinsam." #. type: Plain text -#: puzzles.but:2612 +#: puzzles.but:2658 msgid "" "To play Towers, simply click the mouse in any empty square and then type a " "digit on the keyboard to fill that square with a tower of the given height. " @@ -6171,7 +6266,7 @@ "Leertaste, um es wieder zu leeren (oder verwenden Sie die Undo-Funktion)." #. type: Plain text -#: puzzles.but:2617 +#: puzzles.but:2663 msgid "" "If you \\e{right}-click in a square and then type a number, that number will " "be entered in the square as a \\q{pencil mark}. You can have pencil marks " @@ -6185,22 +6280,34 @@ "über Bleistiftmarkierungen verfügen." #. type: Plain text -#: puzzles.but:2643 +#: puzzles.but:2689 +msgid "" +"Left-clicking a clue will mark it as done (grey it out), or unmark it if it " +"is already marked. Holding Control or Shift and pressing an arrow key " +"likewise marks any clue in the given direction." +msgstr "" +"Durch Linksklick auf einen Hinweis wird dieser als erledigt markiert " +"(ausgegraut) oder die Markierung entfernt, falls er bereits markiert ist. " +"Durch Drücken von Strg oder Umschalten und den Pfeiltasten wird entsprechend " +"ein Hinweis in der angegebenen Richtung markiert." + +#. type: Plain text +#: puzzles.but:2693 msgid "\\I{parameters, for Towers}Towers parameters" msgstr "\\I{Parameter, für Towers}Towers-Parameter" #. type: Plain text -#: puzzles.but:2662 +#: puzzles.but:2712 msgid "\\i{Singles}" msgstr "\\i{Singles}" #. type: Plain text -#: puzzles.but:2664 +#: puzzles.but:2714 msgid "\\cfg{winhelp-topic}{games.singles}" msgstr "\\cfg{winhelp-topic}{games.singles}" #. type: Plain text -#: puzzles.but:2668 +#: puzzles.but:2718 msgid "" "You have a grid of white squares, all of which contain numbers. Your task is " "to colour some of the squares black (removing the number) so as to satisfy " @@ -6211,12 +6318,12 @@ "entfernen), so dass die folgenden Bedingungen alle erfüllt sind:" #. type: Plain text -#: puzzles.but:2670 +#: puzzles.but:2720 msgid "No number occurs more than once in any row or column." msgstr "Keine Zahl erscheint mehr als einmal in einer Spalte oder Zeile." #. type: Plain text -#: puzzles.but:2673 +#: puzzles.but:2723 msgid "" "No black square is horizontally or vertically adjacent to any other black " "square." @@ -6225,7 +6332,7 @@ "schwarzen Quadrat benachbart." #. type: Plain text -#: puzzles.but:2676 +#: puzzles.but:2726 msgid "" "The remaining white squares must all form one contiguous region (connected " "by edges, not just touching at corners)." @@ -6234,46 +6341,44 @@ "bilden (verbunden über Kanten, nicht nur Berührungen an Ecken)." #. type: Plain text -#: puzzles.but:2679 +#: puzzles.but:2729 msgid "" -"Credit for this puzzle goes to \\i{Nikoli} \\k{nikoli-hitori} who call it \\i" -"{Hitori}." +"Credit for this puzzle goes to \\i{Nikoli} \\k{nikoli-hitori} who call it " +"\\i{Hitori}." msgstr "" -"Dank für dieses Puzzle geht an \\i{Nikoli} \\k{nikoli-hitori}, die es \\i" -"{Hitori} nannten." +"Dank für dieses Puzzle geht an \\i{Nikoli} \\k{nikoli-hitori}, die es " +"\\i{Hitori} nannten." #. type: Plain text -#: puzzles.but:2681 +#: puzzles.but:2731 msgid "Singles was contributed to this collection by James Harvey." -msgstr "Singles wurde von James Harvey zu dieser Sammlung beigesteuert." +msgstr "Singles ist ein Beitrag von James Harvey zu dieser Sammlung." #. type: Plain text -#: puzzles.but:2685 +#: puzzles.but:2735 msgid "" -"\\W{http://www.nikoli.com/en/puzzles/hitori/index.html}\\cw{http://www." -"nikoli.com/en/puzzles/hitori/index.html} (beware of Flash)" -msgstr "" -"\\W{http://www.nikoli.com/en/puzzles/hitori/index.html}\\cw{http://www." -"nikoli.com/en/puzzles/hitori/index.html} (Achtung Flash)" +"\\W{http://www.nikoli.com/en/puzzles/hitori.html}\\cw{http://www.nikoli.com/" +"en/puzzles/hitori.html} (beware of Flash)" +msgstr "\\W{http://www.nikoli.com/en/puzzles/hitori.html}\\cw{http://www.nikoli.com/en/puzzles/hitori.html} (Achtung Flash)" #. type: Plain text -#: puzzles.but:2687 +#: puzzles.but:2737 msgid "\\i{Singles controls}" msgstr "\\i{Singles-Steuerung}" #. type: IM{#1} -#: puzzles.but:2688 +#: puzzles.but:2738 msgid "Singles controls" msgstr "Singles-Steuerung" #. type: IM -#: puzzles.but:2688 +#: puzzles.but:2738 #, no-wrap msgid "controls, for Singles" msgstr "Steuerung, von Singles" #. type: Plain text -#: puzzles.but:2693 +#: puzzles.but:2743 msgid "" "Left-clicking on an empty square will colour it black; left-clicking again " "will restore the number. Right-clicking will add a circle (useful for " @@ -6285,7 +6390,7 @@ "ist)." #. type: Plain text -#: puzzles.but:2697 +#: puzzles.but:2747 msgid "" "You can also use the cursor keys to move around the grid. Pressing the " "return or space keys will turn a square black or add a circle respectively, " @@ -6297,27 +6402,27 @@ "Taste wird wieder die Zahl gezeigt oder der Kreis entfernt." #. type: Plain text -#: puzzles.but:2701 +#: puzzles.but:2751 msgid "\\I{parameters, for Singles}Singles parameters" msgstr "\\I{Parameter, für Singles}Singles-Parameter" #. type: Plain text -#: puzzles.but:2712 puzzles.but:3068 puzzles.but:3115 +#: puzzles.but:2762 puzzles.but:3131 puzzles.but:3178 msgid "Controls the difficulty of the generated puzzle." msgstr "Steuert die Schwierigkeit des erstellten Puzzles." #. type: Plain text -#: puzzles.but:2715 +#: puzzles.but:2765 msgid "\\i{Magnets}" msgstr "\\i{Magnets}" #. type: Plain text -#: puzzles.but:2717 +#: puzzles.but:2767 msgid "\\cfg{winhelp-topic}{games.magnets}" msgstr "\\cfg{winhelp-topic}{games.magnets}" #. type: Plain text -#: puzzles.but:2724 +#: puzzles.but:2774 msgid "" "A rectangular grid has been filled with a mixture of magnets (that is, " "dominoes with one positive end and one negative end) and blank dominoes " @@ -6334,7 +6439,7 @@ "Zeilen und Spalten angeben." #. type: Plain text -#: puzzles.but:2729 +#: puzzles.but:2779 msgid "" "Your aim is to correctly place the magnets and blank dominoes such that all " "the clues are satisfied, with the additional constraint that no two similar " @@ -6348,17 +6453,17 @@ "anderen Pol liegen." #. type: Plain text -#: puzzles.but:2731 +#: puzzles.but:2781 msgid "Credit for this puzzle goes to \\i{Janko} \\k{janko-magnets}." msgstr "Dank für dieses Puzzle geht an \\i{Janko} \\k{janko-magnets}." #. type: Plain text -#: puzzles.but:2733 +#: puzzles.but:2783 msgid "Magnets was contributed to this collection by James Harvey." -msgstr "Magnets wurde von James Harvey zu dieser Sammlung beigesteuert." +msgstr "Magnets ist ein Beitrag von James Harvey zu dieser Sammlung." #. type: Plain text -#: puzzles.but:2736 +#: puzzles.but:2786 msgid "" "\\W{http://www.janko.at/Raetsel/Magnete/index.htm}\\cw{http://www.janko.at/" "Raetsel/Magnete/index.htm}" @@ -6367,23 +6472,23 @@ "Raetsel/Magnete/index.htm}" #. type: Plain text -#: puzzles.but:2738 +#: puzzles.but:2788 msgid "\\i{Magnets controls}" msgstr "\\i{Magnets-Steuerung}" #. type: IM{#1} -#: puzzles.but:2739 +#: puzzles.but:2789 msgid "Magnets controls" msgstr "Magnets-Steuerung" #. type: IM -#: puzzles.but:2739 +#: puzzles.but:2789 #, no-wrap msgid "controls, for Magnets" msgstr "Steuerung, von Magnets" #. type: Plain text -#: puzzles.but:2745 +#: puzzles.but:2795 msgid "" "Left-clicking on an empty square places a magnet at that position with the " "positive pole on the square and the negative pole on the other half of the " @@ -6396,7 +6501,7 @@ "Polarität vertauscht. Ein dritter Linksklick entfernt den Magnet." #. type: Plain text -#: puzzles.but:2750 +#: puzzles.but:2800 msgid "" "Right-clicking on an empty square places a blank domino there. Right-" "clicking again places two question marks on the domino, signifying \\q{this " @@ -6404,12 +6509,21 @@ "right-clicking again empties the domino." msgstr "" "Rechtsklick auf ein leeres Quadrat platziert dort einen Domino. Ein erneuter " -"Rechtsklick platziert dort zwei Fragezeichen, die signalisieren, dass \\q" -"{dies nicht leer sein kann} (das kann ein hilfreicher Hinweis während des " +"Rechtsklick platziert dort zwei Fragezeichen, die signalisieren, dass " +"\\q{dies nicht leer sein kann} (das kann ein hilfreicher Hinweis während des " "Lösens sein) und ein weiterer Rechtsklick leert das Domino wieder." #. type: Plain text -#: puzzles.but:2756 +#: puzzles.but:2803 puzzles.but:3116 +msgid "" +"Left-clicking a clue will mark it as done (grey it out), or unmark it if it " +"is already marked." +msgstr "" +"Durch Linksklick auf einen Hinweis wird dieser als erledigt markiert " +"(ausgegraut) oder die Markierung entfernt, falls er bereits markiert ist." + +#. type: Plain text +#: puzzles.but:2809 msgid "" "You can also use the cursor keys to move a cursor around the grid. Pressing " "the return key will lay a domino with a positive pole at that position; " @@ -6425,12 +6539,12 @@ "das Feld als nicht leer/sicher belegt markiert." #. type: Plain text -#: puzzles.but:2760 +#: puzzles.but:2813 msgid "\\I{parameters, for Magnets}Magnets parameters" msgstr "\\I{Parameter, für Magnets}Magnets-Parameter" #. type: Plain text -#: puzzles.but:2768 +#: puzzles.but:2821 msgid "" "Size of grid in squares. There will be half \\e{Width} \\by \\e{Height} " "dominoes in the grid: if this number is odd then one square will be blank." @@ -6439,14 +6553,14 @@ "Dominos pro Gitter: Falls diese Zahl ungerade ist, bleibt ein Quadrat leer." #. type: Plain text -#: puzzles.but:2774 +#: puzzles.but:2827 msgid "(Grids with at least one odd dimension tend to be easier to solve.)" msgstr "" "(Gitter mit mindestens einer ungeraden Dimension sind tendenziell leichter " "zu lösen.)" #. type: Plain text -#: puzzles.but:2780 +#: puzzles.but:2833 msgid "" "Controls the difficulty of the generated puzzle. At Tricky level, you are " "required to make more deductions about empty dominoes and row/column counts." @@ -6456,12 +6570,12 @@ "Spalten/Zeilen machen." #. type: e{#1} -#: puzzles.but:2782 +#: puzzles.but:2835 msgid "Strip clues" msgstr "Strip clues" #. type: Plain text -#: puzzles.but:2785 +#: puzzles.but:2838 msgid "" "If true, some of the clues around the grid are removed at generation time, " "making the puzzle more difficult." @@ -6470,17 +6584,17 @@ "entfernt, wodurch das Puzzle schwieriger wird." #. type: Plain text -#: puzzles.but:2788 +#: puzzles.but:2841 msgid "\\i{Signpost}" msgstr "\\i{Signpost}" #. type: Plain text -#: puzzles.but:2790 +#: puzzles.but:2843 msgid "\\cfg{winhelp-topic}{games.signpost}" msgstr "\\cfg{winhelp-topic}{games.signpost}" #. type: Plain text -#: puzzles.but:2800 +#: puzzles.but:2853 msgid "" "You have a grid of squares; each square (except the last one) contains an " "arrow, and some squares also contain numbers. Your job is to connect the " @@ -6501,7 +6615,7 @@ "sein, solange es irgendwo in der Richtung des Pfeils liegt." #. type: Plain text -#: puzzles.but:2803 +#: puzzles.but:2856 msgid "" "By convention the first and last numbers are shown; one or more interim " "numbers may also appear at the beginning." @@ -6510,21 +6624,21 @@ "auch eine oder mehrere Zahlen in der Mitte erscheinen." #. type: Plain text -#: puzzles.but:2806 +#: puzzles.but:2859 msgid "" "Credit for this puzzle goes to \\i{Janko} \\k{janko-arrowpath}, who call it " "\\q{Pfeilpfad} (\\q{arrow path})." msgstr "" -"Dank für dieses Puzzle geht an \\i{Janko} \\k{janko-arrowpath}, der es \\i" -"{Pfeilpfad} nannte." +"Dank für dieses Puzzle geht an \\i{Janko} \\k{janko-arrowpath}, der es " +"\\i{Pfeilpfad} nannte." #. type: Plain text -#: puzzles.but:2808 +#: puzzles.but:2861 msgid "Signpost was contributed to this collection by James Harvey." -msgstr "Signpost wurde von James Harvey zu dieser Sammlung beigesteuert." +msgstr "Signpost ist ein Beitrag von James Harvey zu dieser Sammlung." #. type: Plain text -#: puzzles.but:2811 +#: puzzles.but:2864 msgid "" "\\W{http://janko.at/Raetsel/Pfeilpfad/index.htm}\\cw{http://janko.at/Raetsel/" "Pfeilpfad/index.htm}" @@ -6533,12 +6647,12 @@ "Pfeilpfad/index.htm}" #. type: Plain text -#: puzzles.but:2813 +#: puzzles.but:2866 msgid "\\I{controls, for Signpost}Signpost controls" msgstr "\\I{Steuerung, von Signpost}Signpost-Steuerung" #. type: Plain text -#: puzzles.but:2818 +#: puzzles.but:2871 msgid "" "To play Signpost, you connect squares together by dragging from one square " "to another, indicating that they are adjacent in the sequence. Drag with the " @@ -6551,7 +6665,7 @@ "mit dem rechten Knopf von einem Quadrat zu seinem Vorgänger." #. type: Plain text -#: puzzles.but:2826 +#: puzzles.but:2879 msgid "" "If you connect together two squares in this way and one of them has a number " "in it, the appropriate number will appear in the other square. If you " @@ -6569,7 +6683,7 @@ "gleichen Buchstaben bezeichnet." #. type: Plain text -#: puzzles.but:2829 +#: puzzles.but:2882 msgid "" "When you left-click or right-click in a square, the legal squares to connect " "it to will be shown." @@ -6578,7 +6692,7 @@ "denen eine gültige Verbindung möglich ist, angezeigt." #. type: Plain text -#: puzzles.but:2835 +#: puzzles.but:2888 msgid "" "The arrow in each square starts off black, and goes grey once you connect " "the square to its successor. Also, each square which needs a predecessor has " @@ -6594,7 +6708,7 @@ "einem Quadrat mit einem Punkt zu verbinden." #. type: Plain text -#: puzzles.but:2839 +#: puzzles.but:2892 msgid "" "To remove any links for a particular square (both incoming and outgoing), " "left-drag it off the grid. To remove a whole chain, right-drag any square in " @@ -6606,7 +6720,7 @@ "aus der Kette mit der rechten Maustaste vom Gitter." #. type: Plain text -#: puzzles.but:2846 +#: puzzles.but:2899 msgid "" "You can also use the cursor keys to move around the grid squares and lines. " "Pressing the return key when over a square starts a link operation, and " @@ -6624,17 +6738,17 @@ "Erneutes Drücken der Leertaste bricht dies ab." #. type: Plain text -#: puzzles.but:2850 +#: puzzles.but:2903 msgid "\\I{parameters, for Signpost}Signpost parameters" msgstr "\\I{Parameter, für Signpost}Signpost-Parameter" #. type: e{#1} -#: puzzles.but:2859 +#: puzzles.but:2912 msgid "Force start/end to corners" msgstr "Force start/end to corners" #. type: Plain text -#: puzzles.but:2863 +#: puzzles.but:2916 msgid "" "If true, the start and end squares are always placed in opposite corners " "(the start at the top left, and the end at the bottom right). If false the " @@ -6646,17 +6760,17 @@ "werden beide immer angezeigt)." #. type: Plain text -#: puzzles.but:2865 +#: puzzles.but:2918 msgid "\\i{Range}" msgstr "\\i{Range}" #. type: Plain text -#: puzzles.but:2867 +#: puzzles.but:2920 msgid "\\cfg{winhelp-topic}{games.range}" msgstr "\\cfg{winhelp-topic}{games.range}" #. type: Plain text -#: puzzles.but:2871 +#: puzzles.but:2924 msgid "" "You have a grid of squares; some squares contain numbers. Your job is to " "colour some of the squares black, such that several criteria are satisfied:" @@ -6666,19 +6780,19 @@ "Bedingungen erfüllt sind:" #. type: Plain text -#: puzzles.but:2873 +#: puzzles.but:2926 msgid "no square with a number is coloured black." msgstr "Kein Quadrat mit einer Zahl ist schwarz gefärbt." #. type: Plain text -#: puzzles.but:2875 +#: puzzles.but:2928 msgid "no two black squares are adjacent (horizontally or vertically)." msgstr "" "Keine zwei schwarzen Quadrate befinden sich (horizontal oder vertikal) " "nebeneinander." #. type: Plain text -#: puzzles.but:2878 +#: puzzles.but:2931 msgid "" "for any two white squares, there is a path between them using only white " "squares." @@ -6687,7 +6801,7 @@ "nur weiße Quadrate verwendet." #. type: Plain text -#: puzzles.but:2884 +#: puzzles.but:2937 msgid "" "for each square with a number, that number denotes the total number of white " "squares reachable from that square going in a straight line in any " @@ -6701,7 +6815,7 @@ "(einmal) enthalten." #. type: Plain text -#: puzzles.but:2890 +#: puzzles.but:2943 msgid "" "For instance, a square containing the number one must have four black " "squares as its neighbours by the last criterion; but then it's impossible " @@ -6715,37 +6829,35 @@ "keinem Quadrat die Zahl eins auftauchen." #. type: Plain text -#: puzzles.but:2894 +#: puzzles.but:2947 msgid "" -"Credit for this puzzle goes to \\i{Nikoli}, who have variously called it \\q" -"{Kurodoko}, \\q{Kuromasu} or \\q{Where is Black Cells}. \\k{nikoli-range}." +"Credit for this puzzle goes to \\i{Nikoli}, who have variously called it " +"\\q{Kurodoko}, \\q{Kuromasu} or \\q{Where is Black Cells}. \\k{nikoli-" +"range}." msgstr "" -"Dank für dieses Puzzle geht an \\i{Nikoli}, die es " -"verschieden benannt haben: \\q{Kurodoko}, \\q{Kuromasu} oder \\q{Where is " -"Black Cells}. \\k{nikoli-range}." +"Dank für dieses Puzzle geht an \\i{Nikoli}, die es verschieden benannt " +"haben: \\q{Kurodoko}, \\q{Kuromasu} oder \\q{Where is Black Cells}. " +"\\k{nikoli-range}." #. type: Plain text -#: puzzles.but:2896 +#: puzzles.but:2949 msgid "Range was contributed to this collection by Jonas K\\u00F6{oe}lker." -msgstr "" -"Range wurde von Jonas K\\u00F6{oe}lker zu dieser Sammlung beigesteuert." +msgstr "Range ist ein Beitrag von Jonas K\\u00F6{oe}lker zu dieser Sammlung." #. type: Plain text -#: puzzles.but:2899 +#: puzzles.but:2952 msgid "" -"\\W{http://www.nikoli.co.jp/en/puzzles/where_is_black_cells/}\\cw{http://www." -"nikoli.co.jp/en/puzzles/where_is_black_cells/}" -msgstr "" -"\\W{http://www.nikoli.co.jp/en/puzzles/where_is_black_cells/}\\cw{http://www." -"nikoli.co.jp/en/puzzles/where_is_black_cells/}" +"\\W{http://www.nikoli.co.jp/en/puzzles/where_is_black_cells.html}\\cw{http://" +"www.nikoli.co.jp/en/puzzles/where_is_black_cells.html}" +msgstr "\\W{http://www.nikoli.co.jp/en/puzzles/where_is_black_cells.html}\\cw{http://www.nikoli.co.jp/en/puzzles/where_is_black_cells.html}" #. type: Plain text -#: puzzles.but:2901 +#: puzzles.but:2954 msgid "\\I{controls, for Range}Range controls" msgstr "\\I{Steuerung, von Range}Range-Steuerung" #. type: Plain text -#: puzzles.but:2907 +#: puzzles.but:2960 msgid "" "Click with the left button to paint a square black, or with the right button " "to mark a square with a dot to indicate that you are sure it should \\e{not} " @@ -6761,33 +6873,36 @@ "gegenläufigen Richtungen bringen." #. type: Plain text -#: puzzles.but:2911 +#: puzzles.but:2966 msgid "" "You can also use the cursor keys to move around the grid squares. Pressing " "Return does the same as clicking with the left button, while pressing Space " -"does the same as a right button click." +"does the same as a right button click. Moving with the cursor keys while " +"holding Shift will place dots in all squares that are moved through." msgstr "" "Sie können auch die Pfeiltasten verwenden, um sich auf dem Gitter zu " -"bewegen. Drücken der Eingabetaste bewirkt das gleiche wie die linke Taste, " -"während die Leertaste das gleiche wie die rechte Taste durchführt." +"bewegen. Drücken der Eingabetaste bewirkt das Gleiche wie die linke Taste, " +"während die Leertaste das Gleiche wie die rechte Taste durchführt. Bewegen " +"mit den Pfeiltasten während Umschalten gehalten ist wird Punkte in alle " +"überstriffenen Quadrate setzen." #. type: Plain text -#: puzzles.but:2915 +#: puzzles.but:2971 msgid "\\I{parameters, for Range}Range parameters" msgstr "\\I{Parameter, für Range}Range-Parameter" #. type: Plain text -#: puzzles.but:2924 +#: puzzles.but:2980 msgid "\\i{Pearl}" msgstr "\\i{Pearl}" #. type: Plain text -#: puzzles.but:2926 +#: puzzles.but:2982 msgid "\\cfg{winhelp-topic}{games.pearl}" msgstr "\\cfg{winhelp-topic}{games.pearl}" #. type: Plain text -#: puzzles.but:2934 +#: puzzles.but:2990 msgid "" "You have a grid of squares. Your job is to draw lines between the centres of " "horizontally or vertically adjacent squares, so that the lines form a single " @@ -6799,22 +6914,22 @@ "Sie haben ein Gitter von Quadraten. Ihre Aufgabe besteht darin, Linien " "zwischen den Zentren von horizontal oder vertkal benachbarten Quadraten zu " "zeichnen, so dass die Linien eine einzige, geschlossene Schleife bilden. In " -"dem entstehenden Gitter werden einige Quadrate, durch die die Schleife läuft, " -"Ecken enthalten und andere werden durchgehende horizontale oder vertikale " -"Linien enthalten. (Und einige Quadrate werden komplett leer sein \\dash die " -"Schleife muss nicht durch jedes Quadrat laufen.)" +"dem entstehenden Gitter werden einige Quadrate, durch die die Schleife " +"läuft, Ecken enthalten und andere werden durchgehende horizontale oder " +"vertikale Linien enthalten. (Und einige Quadrate werden komplett leer sein " +"\\dash die Schleife muss nicht durch jedes Quadrat laufen.)" #. type: Plain text -#: puzzles.but:2937 +#: puzzles.but:2993 msgid "" "Some of the squares contain black and white circles, which are clues that " "the loop must satisfy." msgstr "" -"Einige der Quadrate enthalten schwarze oder weiße Kreise. Dies sind Hinweise, " -"die die Schleife berücksichtigen muss." +"Einige der Quadrate enthalten schwarze oder weiße Kreise. Dies sind " +"Hinweise, die die Schleife berücksichtigen muss." #. type: Plain text -#: puzzles.but:2940 +#: puzzles.but:2996 msgid "" "A black circle in a square indicates that that square is a corner, but " "neither of the squares adjacent to it in the loop is also a corner." @@ -6824,16 +6939,17 @@ "eine Ecke ist." #. type: Plain text -#: puzzles.but:2943 +#: puzzles.but:2999 msgid "" "A white circle indicates that the square is a straight edge, but \\e{at " "least one} of the squares adjacent to it in the loop is a corner." msgstr "" -"Ein weißer Kreis zeigt an, dass das Quadrat eine gerade Kante darstellt, aber " -"\\e{mindestens eins} der benachbarten Quadrate in der Schleife eine Ecke ist." +"Ein weißer Kreis zeigt an, dass das Quadrat eine gerade Kante darstellt, " +"aber \\e{mindestens eins} der benachbarten Quadrate in der Schleife eine " +"Ecke ist." #. type: Plain text -#: puzzles.but:2948 +#: puzzles.but:3004 msgid "" "(In both cases, the clue only constrains the two squares adjacent \\e{in the " "loop}, that is, the squares that the loop passes into after leaving the clue " @@ -6846,35 +6962,35 @@ "Gitter} benachbart sind, sind nicht eingeschränkt.)" #. type: Plain text -#: puzzles.but:2951 +#: puzzles.but:3007 msgid "" -"Credit for this puzzle goes to \\i{Nikoli}, who call it \\q{Masyu}. \\k" -"{nikoli-pearl}." +"Credit for this puzzle goes to \\i{Nikoli}, who call it \\q{Masyu}. " +"\\k{nikoli-pearl}" msgstr "" -"Dank für dieses Puzzle geht an \\i{Nikoli}, die es \\q{Masyu} nannten. " -"\\k{nikoli-pearl}." +"Dank für dieses Puzzle geht an \\i{Nikoli}, die es \\q{Masyu} nennen. " +"\\k{nikoli-pearl}" #. type: Plain text -#: puzzles.but:2953 +#: puzzles.but:3009 msgid "Thanks to James Harvey for assistance with the implementation." msgstr "Dank an James Harvey für Hilfe bei der Implementierung." #. type: Plain text -#: puzzles.but:2956 +#: puzzles.but:3013 msgid "" -"\\W{http://www.nikoli.co.jp/en/puzzles/masyu/}\\cw{http://www.nikoli.co.jp/" -"en/puzzles/masyu/}" +"\\W{http://www.nikoli.co.jp/en/puzzles/masyu.html}\\cw{http://www.nikoli.co." +"jp/en/puzzles/masyu.html} (beware of Flash)" msgstr "" -"\\W{http://www.nikoli.co.jp/en/puzzles/masyu/}\\cw{http://www.nikoli.co.jp/" -"en/puzzles/masyu/}" +"\\W{http://www.nikoli.co.jp/en/puzzles/masyu.html}\\cw{http://www.nikoli.co." +"jp/en/puzzles/masyu.html} (Achtung Flash)" #. type: Plain text -#: puzzles.but:2958 +#: puzzles.but:3015 msgid "\\I{controls, for Pearl}Pearl controls" msgstr "\\I{Steuerung, von Pearl}Pearl-Steuerung" #. type: Plain text -#: puzzles.but:2961 +#: puzzles.but:3018 msgid "" "Click with the left button on a grid edge to draw a segment of the loop " "through that edge, or to remove a segment once it is drawn." @@ -6884,7 +7000,7 @@ "sobald es gezeichnet wurde." #. type: Plain text -#: puzzles.but:2966 +#: puzzles.but:3023 msgid "" "Drag with the left button through a series of squares to draw more than one " "segment of the loop in one go. Alternatively, drag over an existing part of " @@ -6892,12 +7008,12 @@ "direction." msgstr "" "Ziehen Sie mit der linken Maustaste durch eine Reihe von Quadraten, um mehr " -"als einen Abschnitt der Schleife auf einmal zu zeichnen. Alternativ ziehen Sie " -"über einen bestehenden Teil der Schleife, um die Zeichnung zu entfernen oder " -"einen Teil zu entfernen und in eine neue Richtung zu zeichnen." +"als einen Abschnitt der Schleife auf einmal zu zeichnen. Alternativ ziehen " +"Sie über einen bestehenden Teil der Schleife, um die Zeichnung zu entfernen " +"oder einen Teil zu entfernen und in eine neue Richtung zu zeichnen." #. type: Plain text -#: puzzles.but:2972 +#: puzzles.but:3029 msgid "" "Click with the right button on a grid edge to mark it with a cross, " "indicating that you are sure the loop does not go through that edge. (For " @@ -6908,57 +7024,64 @@ "Klicken Sie mit der rechten Maustaste auf eine Gitterkante, um sie mit einem " "Kreuz zu markieren, womit Sie anzeigen, dass Sie sich sicher sind, dass die " "Schleife nicht durch diese Kante geht. (Falls Sie sich beispielsweise " -"entschieden haben, welches der benachbarten Quadrate von einem weißen Hinweis " -"eine Ecke sein muss, Sie aber noch nicht wissen, in welche Richtung die Ecke " -"orientiert ist, können Sie die Richtung, in die sie \\e{nicht} gehen kann, " -"mit einem Kreuz markieren.)" +"entschieden haben, welches der benachbarten Quadrate von einem weißen " +"Hinweis eine Ecke sein muss, Sie aber noch nicht wissen, in welche Richtung " +"die Ecke orientiert ist, können Sie die Richtung, in die sie \\e{nicht} " +"gehen kann, mit einem Kreuz markieren.)" #. type: Plain text -#: puzzles.but:2978 +#: puzzles.but:3035 msgid "" "Alternatively, use the cursor keys to move the cursor. Use the Enter key to " -"begin and end keyboard `drag' operations. Use the Space key to cancel the " -"drag. Use Ctrl-arrowkey and Shift-arrowkey to simulate a left or right " -"click, respectively, on the edge in the given direction relative to the " -"cursor, i.e. to draw a segment or a cross." +"begin and end keyboard \\q{drag} operations. Use the Space, Escape or " +"Backspace keys to cancel the drag. Or, hold Control while dragging with the " +"cursor keys to toggle segments as you move between squares." msgstr "" "Sie können alternativ die Pfeiltasten zur Bewegung des Cursors benutzen. Um " "»Ziehen«-Aktionen per Tastatur zu beginnen oder zu beenden, drücken Sie auf " -"die Eingabetaste. Mit der Leertaste brechen Sie das Ziehen ab. " -"Verwenden Sie auf der Kante in der angegeben Richtung relativ zum Cursor " -"Strg-Pfeiltaste und Umschalt-Pfeiltaste, um einen Klick mit der linken oder " -"rechten Maustaste zu simulieren, d.h. einen Abschnitt oder ein Kreuz zu " -"zeichnen." +"die Eingabetaste. Mit der Leertaste, Escape oder Rückschritt brechen Sie das " +"Ziehen ab. Oder halten Sie Strg, während Sie mit den Pfeiltasten ziehen, um " +"Segmente umzuschalten, während Sie sich zwischen Quadraten bewegen." #. type: Plain text -#: puzzles.but:2982 +#: puzzles.but:3038 +msgid "" +"Pressing Control-Shift-arrowkey or Shift-arrowkey simulates a left or right " +"click, respectively, on the edge in the direction of the key." +msgstr "" +"Durch Drücken von Strg-Umschalt-Pfeiltaste oder Umschalt-Pfeiltaste wird ein " +"Rechts- bzw. ein Linksklick an der Kante in der Richtung der Pfeiltaste " +"simuliert." + +#. type: Plain text +#: puzzles.but:3042 msgid "\\I{parameters, for Pearl}Pearl parameters" msgstr "\\I{Parameter, für Pearl}Pearl-Parameter" #. type: Plain text -#: puzzles.but:2987 +#: puzzles.but:3047 msgid "\\i{Undead}" msgstr "\\i{Undead}" #. type: Plain text -#: puzzles.but:2989 +#: puzzles.but:3049 msgid "\\cfg{winhelp-topic}{games.undead}" msgstr "\\cfg{winhelp-topic}{games.undead}" #. type: Plain text -#: puzzles.but:2993 +#: puzzles.but:3053 msgid "" "You are given a grid of squares, some of which contain diagonal mirrors. " "Every square which is not a mirror must be filled with one of three types of " "undead monster: a ghost, a vampire, or a zombie." msgstr "" "Sie bekommen ein Gitter von Quadraten, von denen einige diagonale Spiegel " -"enthalten. Jedes Quadrat, das kein Spielgel ist, muss mit einem von drei " +"enthalten. Jedes Quadrat, das kein Spiegel ist, muss mit einer von drei " "Arten von untoten Monstern gefüllt werden: einem Geist, einem Vampir oder " "einem Zombie." #. type: Plain text -#: puzzles.but:2998 +#: puzzles.but:3058 msgid "" "Vampires can be seen directly, but are invisible when reflected in mirrors. " "Ghosts are the opposite way round: they can be seen in mirrors, but are " @@ -6970,7 +7093,7 @@ "auf beide Arten sichtbar." #. type: Plain text -#: puzzles.but:3006 +#: puzzles.but:3066 msgid "" "You are also told the total number of each type of monster in the grid. Also " "around the edge of the grid are written numbers, which indicate how many " @@ -6982,27 +7105,27 @@ "Ihnen wird auch die Gesamtanzahl von jeder Art von Monster im Gitter " "mitgeteilt. Auch entlang der Ecken des Gitters sind Zahlen geschrieben, die " "angeben, wie viele Monster gesehen werden können, falls Sie in das Gitter " -"entlang einer Spalte oder Zeile, beginnend von dieser Position, schauen. (Die " -"diagonalen Spiegel reflektieren nach beiden Seiten. Falls Ihre reflektierte " -"Sichtlinie das selbe Monster mehr als einmal kreuzt, wird es in der Zahl " -"jedes Mal gezählt, wenn es sichtbar ist, nicht nur einmal.)" +"entlang einer Spalte oder Zeile, beginnend von dieser Position, schauen. " +"(Die diagonalen Spiegel reflektieren nach beiden Seiten. Falls Ihre " +"reflektierte Sichtlinie das selbe Monster mehr als einmal kreuzt, wird es in " +"der Zahl jedes Mal gezählt, wenn es sichtbar ist, nicht nur einmal.)" #. type: Plain text -#: puzzles.but:3009 +#: puzzles.but:3069 msgid "" "This puzzle type was invented by David Millar, under the name \\q{Haunted " "Mirror Maze}. See \\k{janko-undead} for more details." msgstr "" -"Dieses Puzzle wurde von David Millar unter dem Namen \\q{Haunted " -"Mirror Maze} erfunden. Siehe \\k{janko-undead} für weitere Details." +"Dieses Puzzle wurde von David Millar unter dem Namen \\q{Haunted Mirror " +"Maze} erfunden. Siehe \\k{janko-undead} für weitere Details." #. type: Plain text -#: puzzles.but:3011 +#: puzzles.but:3071 msgid "Undead was contributed to this collection by Steffen Bauer." -msgstr "Unruly wurde von Steffen Bauer zu dieser Sammlung beigesteuert." +msgstr "Unruly ist ein Beitrag von Steffen Bauer zu dieser Sammlung." #. type: Plain text -#: puzzles.but:3014 +#: puzzles.but:3074 msgid "" "\\W{http://www.janko.at/Raetsel/Spukschloss/index.htm}\\cw{http://www.janko." "at/Raetsel/Spukschloss/index.htm}" @@ -7011,17 +7134,17 @@ "at/Raetsel/Spukschloss/index.htm}" #. type: Plain text -#: puzzles.but:3016 +#: puzzles.but:3076 msgid "\\I{controls, for Undead}Undead controls" msgstr "\\I{Steuerung, von Undead}Undead-Steuerung" #. type: Plain text -#: puzzles.but:3018 +#: puzzles.but:3078 msgid "Undead has a similar control system to Solo, Unequal and Keen." msgstr "Undead hat ein ähnliches Steuersystem wie Solo, Unequal und Keen." #. type: Plain text -#: puzzles.but:3024 +#: puzzles.but:3084 msgid "" "To play Undead, click the mouse in any empty square and then type a letter " "on the keyboard indicating the type of monster: \\q{G} for a ghost, \\q{V} " @@ -7037,7 +7160,7 @@ "bereinigen (oder verwenden Sie die Funktion »Undo«)." #. type: Plain text -#: puzzles.but:3030 +#: puzzles.but:3090 msgid "" "If you \\e{right}-click in a square and then type a letter, the " "corresponding monster will be shown in reduced size in that square, as a " @@ -7053,7 +7176,7 @@ "Bleistiftmarkierungen enthalten." #. type: Plain text -#: puzzles.but:3036 +#: puzzles.but:3096 msgid "" "The game pays no attention to pencil marks, so exactly what you use them for " "is up to you: you can use them as reminders that a particular square needs " @@ -7069,16 +7192,16 @@ "anderes nach Ihrer Wahl." #. type: Plain text -#: puzzles.but:3039 +#: puzzles.but:3099 msgid "" "To erase a single pencil mark, right-click in the square and type the same " "letter again." msgstr "" -"Um eine Bleistiftmarkierung zu löschen, klicken Sie rechts in ein Quadrat und " -"geben den gleichen Buchstaben erneut ein." +"Um eine Bleistiftmarkierung zu löschen, klicken Sie rechts in ein Quadrat " +"und geben den gleichen Buchstaben erneut ein." #. type: Plain text -#: puzzles.but:3043 +#: puzzles.but:3103 msgid "" "All pencil marks in a square are erased when you left-click and type a " "monster letter, or when you left-click and press Space. Right-clicking and " @@ -7090,7 +7213,7 @@ "die Bleistiftmarkierungen löschen." #. type: Plain text -#: puzzles.but:3049 +#: puzzles.but:3109 msgid "" "As for Solo, the cursor keys can be used in conjunction with the letter keys " "to place monsters or pencil marks. Use the cursor keys to move a highlight " @@ -7102,11 +7225,11 @@ "verwendet werden, um Monster oder Bleistiftmarkierungen zu setzen. Verwenden " "Sie die Pfeiltasten, um eine Hervorhebung über das Gitter zu bewegen und " "geben Sie einen Monsterbuchstaben in das hervorgehobene Quadrat ein. Durch " -"Drücken der Eingabetaste schalten Sie in einen Modus um, in dem Sie statt der " -"Hervorhebung Bleistiftmarkierungen eingeben oder entfernen können." +"Drücken der Eingabetaste schalten Sie in einen Modus um, in dem Sie statt " +"der Hervorhebung Bleistiftmarkierungen eingeben oder entfernen können." #. type: Plain text -#: puzzles.but:3053 +#: puzzles.but:3113 msgid "" "If you prefer plain letters of the alphabet to cute monster pictures, you " "can press \\q{A} to toggle between showing the monsters as monsters or " @@ -7117,22 +7240,22 @@ "als Monster und der Anzeige als Buchstaben umzuschalten." #. type: Plain text -#: puzzles.but:3057 +#: puzzles.but:3120 msgid "\\I{parameters, for Undead}Undead parameters" msgstr "\\I{Parameter, für Undead}Undead-Parameter" #. type: Plain text -#: puzzles.but:3070 +#: puzzles.but:3133 msgid "\\i{Unruly}" msgstr "\\i{Unruly}" #. type: Plain text -#: puzzles.but:3072 +#: puzzles.but:3135 msgid "\\cfg{winhelp-topic}{games.unruly}" msgstr "\\cfg{winhelp-topic}{games.unruly}" #. type: Plain text -#: puzzles.but:3078 +#: puzzles.but:3141 msgid "" "You are given a grid of squares, which you must colour either black or " "white. Some squares are provided as clues; the rest are left for you to fill " @@ -7148,21 +7271,21 @@ "vorkommen." #. type: Plain text -#: puzzles.but:3081 +#: puzzles.but:3144 msgid "" "This puzzle type was invented by Adolfo Zanellati, under the name \\q{Tohu " "wa Vohu}. See \\k{janko-unruly} for more details." msgstr "" -"Dieser Puzzletyp wurde von Adolfo Zanellati unter dem Namen \\q{Tohu " -"wa Vohu} erfunden. Siehe \\k{janko-unruly} für weitere Details." +"Dieser Puzzletyp wurde von Adolfo Zanellati unter dem Namen \\q{Tohu wa " +"Vohu} erfunden. Siehe \\k{janko-unruly} für weitere Details." #. type: Plain text -#: puzzles.but:3083 +#: puzzles.but:3146 msgid "Unruly was contributed to this collection by Lennard Sprong." -msgstr "Unruly wurde von Lennard Sprong zu dieser Sammlung beigesteuert." +msgstr "Unruly ist ein Beitrag von Lennard Sprong zu dieser Sammlung." #. type: Plain text -#: puzzles.but:3086 +#: puzzles.but:3149 msgid "" "\\W{http://www.janko.at/Raetsel/Tohu-Wa-Vohu/index.htm}\\cw{http://www.janko." "at/Raetsel/Tohu-Wa-Vohu/index.htm}" @@ -7171,12 +7294,12 @@ "at/Raetsel/Tohu-Wa-Vohu/index.htm}" #. type: Plain text -#: puzzles.but:3088 +#: puzzles.but:3151 msgid "\\I{controls, for Unruly}Unruly controls" msgstr "\\I{Steuerung, von Unruly}Unruly-Steuerung" #. type: Plain text -#: puzzles.but:3094 +#: puzzles.but:3157 msgid "" "To play Unruly, click the mouse in a square to change its colour. Left-" "clicking an empty square will turn it black, and right-clicking will turn it " @@ -7184,34 +7307,34 @@ "states for the square. If you middle-click in a square it will be reset to " "empty." msgstr "" -"Um Unruly zu spielen, klicken Sie mit der Maus in ein Quadrat, um seine Farbe " -"zu ändern. Linksklicken in ein leeres Quadrat wird dieses schwarz färben und " -"Rechtsklicken wird es weiß färben. Durch erneutes Drücken des gleichen " -"Knopfes werden der Reihe nach die drei möglichen Stati für das Quadrat " -"erreicht. Falls Sie ein Quadrat Mittelklicken, wird es auf den leeren Zustand " -"zurückgesetzt." +"Um Unruly zu spielen, klicken Sie mit der Maus in ein Quadrat, um seine " +"Farbe zu ändern. Linksklicken in ein leeres Quadrat wird dieses schwarz " +"färben und Rechtsklicken wird es weiß färben. Durch erneutes Drücken des " +"gleichen Knopfes werden der Reihe nach die drei möglichen Stati für das " +"Quadrat erreicht. Falls Sie ein Quadrat Mittelklicken, wird es auf den " +"leeren Zustand zurückgesetzt." #. type: Plain text -#: puzzles.but:3099 +#: puzzles.but:3162 msgid "" "You can also use the cursor keys to move around the grid. Pressing the " "return or space keys will turn an empty square black or white respectively " "(and then cycle the colours in the same way as the mouse buttons), and " "pressing Backspace will reset a square to empty." msgstr "" -"Sie können auch die Pfeiltasten verwenden, um sich auf dem Gitter zu bewegen. " -"Durch Drücken der Eingabe- oder Leertaste wird ein leeres Quadrat schwarz " -"oder respektive weiß gefärbt (und dann zyklisch die Farben wie bei den " -"Maustasten ändern) und durch Drücken der Rücktaste wird ein Quadrat auf " +"Sie können auch die Pfeiltasten verwenden, um sich auf dem Gitter zu " +"bewegen. Durch Drücken der Eingabe- oder Leertaste wird ein leeres Quadrat " +"schwarz oder respektive weiß gefärbt (und dann zyklisch die Farben wie bei " +"den Maustasten ändern) und durch Drücken der Rücktaste wird ein Quadrat auf " "leer zurückgesetzt." #. type: Plain text -#: puzzles.but:3103 +#: puzzles.but:3166 msgid "\\I{parameters, for Unruly}Unruly parameters" msgstr "\\I{Parameter, für Unruly}Unruly-Parameter" #. type: Plain text -#: puzzles.but:3111 +#: puzzles.but:3174 msgid "" "Size of grid in squares. (Note that the rules of the game require both the " "width and height to be even numbers.)" @@ -7220,12 +7343,12 @@ "verlangen, dass sowohl die Breite als auch die Höhe gerade Zahlen sind.)" #. type: e{#1} -#: puzzles.but:3117 +#: puzzles.but:3180 msgid "Unique rows and columns" msgstr "Eindeutige Zeilen und Spalten" #. type: Plain text -#: puzzles.but:3120 +#: puzzles.but:3183 msgid "" "If enabled, no two rows are permitted to have exactly the same pattern, and " "likewise columns. (A row and a column can match, though.)" @@ -7235,12 +7358,346 @@ "allerdings übereinstimmen.)" #. type: Plain text -#: puzzles.but:3122 +#: puzzles.but:3185 +msgid "\\i{Flood}" +msgstr "\\i{Flood}" + +#. type: Plain text +#: puzzles.but:3187 +msgid "\\cfg{winhelp-topic}{games.flood}" +msgstr "\\cfg{winhelp-topic}{games.flood}" + +#. type: Plain text +#: puzzles.but:3194 +msgid "" +"You are given a grid of squares, coloured at random in multiple colours. In " +"each move, you can flood-fill the top left square in a colour of your choice " +"(i.e. every square reachable from the starting square by an orthogonally " +"connected path of squares all the same colour will be filled in the new " +"colour). As you do this, more and more of the grid becomes connected to the " +"starting square." +msgstr "" +"Sie erhalten ein Gitter von Quadraten, die zufällig in mehreren Farben " +"eingefärbt sind. Bei jedem Zug können Sie durch Fluten das Quadrat in der " +"oberen linken Ecke mit einer Farbe Ihrer Wahl füllen (d.h. jedes Quadrat, das " +"vom Startquadrat durch einen orthogonal verbundenen Pfad von Quadraten der " +"gleichen Farbe verbunden ist, wird mit der neuen Farbe gefüllt). Dadurch wird " +"schrittweise mehr und mehr des Gitters mit dem Startquadrat verbunden." + +#. type: Plain text +#: puzzles.but:3199 +msgid "" +"Your aim is to make the whole grid the same colour, in as few moves as " +"possible. The game will set a limit on the number of moves, based on running " +"its own internal solver. You win if you can make the whole grid the same " +"colour in that many moves or fewer." +msgstr "" +"Ihr Ziel besteht darin, das gesamte Gitter mit so wenig Zügen wie möglich in " +"eine Farbe zu verwandeln. Das Spiel setzt eine Grenze an Zügen, basierend auf " +"seinem internen Lösungsalgorithmus. Sie gewinnen, falls Sie das Gitter mit " +"dieser Anzahl (oder weniger) an Zügen in die gleiche Farbe umwandeln." + +#. type: Plain text +#: puzzles.but:3202 +msgid "" +"I saw this game (with a fixed grid size, fixed number of colours, and fixed " +"move limit) at http://floodit.appspot.com (no longer accessible)." +msgstr "" +"Ich habe dieses Spiel (mit einer festen Gittergröße, festen Anzahl an Farben " +"und festen Anzahl an Zügen) unter http://floodit.appspot.com (nicht mehr " +"erreichbar) gesehen." + +#. type: Plain text +#: puzzles.but:3204 +msgid "\\I{controls, for Flood}Flood controls" +msgstr "\\I{Steuerung, für Flood}Flood-Steuerung" + +#. type: Plain text +#: puzzles.but:3209 +msgid "" +"To play Flood, click the mouse in a square. The top left corner and " +"everything connected to it will be flood-filled with the colour of the " +"square you clicked. Clicking a square the same colour as the top left corner " +"has no effect, and therefore does not count as a move." +msgstr "" +"Um Flood zu spielen, klicken Sie mit der Maus in ein Quadrat. Die obere linke " +"Ecke und alles damit verbundene wird mit der gleichen Farbe wie das von Ihnen " +"angeklickte Quadrat geflutet. Das Klicken auf ein Quadrat mit der gleichen " +"Farbe wie die obere linke Ecke hat keinen Effekt und zählt daher nicht als " +"Spielzug." + +#. type: Plain text +#: puzzles.but:3213 +msgid "" +"You can also use the cursor keys to move a cursor (outline black square) " +"around the grid. Pressing the return key will fill the top left corner in " +"the colour of the square under the cursor." +msgstr "" +"Sie können auch die Pfeiltasten verwenden, um den Cursor (ein leeres " +"schwarzes Quadrat) über das Gitter zu bewegen. Drücken der Eingabetaste " +"füllt die obere linke Ecke mit der gleichen Farbe wie das Quadrat unter dem " +"Cursor." + +#. type: Plain text +#: puzzles.but:3217 +msgid "\\I{parameters, for Flood}Flood parameters" +msgstr "\\I{Parameter, für Flood}Flood-Parameter" + +#. type: Plain text +#: puzzles.but:3224 puzzles.but:3288 +msgid "Size of the grid, in squares." +msgstr "Größe des Gitters, in Quadraten." + +#. type: Plain text +#: puzzles.but:3230 +msgid "" +"Number of colours used to fill the grid. Must be at least 3 (with two " +"colours there would only be one legal move at any stage, hence no choice to " +"make at all), and at most 10." +msgstr "" +"Anzahl an Farben, die zum Füllen des Gitters verwandt werden. Muss mindestens " +"3 sein (bei zwei Farben gäbe es bei jeder Stufe nur einen gültigen Zug und " +"somit keine zu treffende Auswahl) und höchstens 10." + +#. type: e{#1} +#: puzzles.but:3232 +msgid "Extra moves permitted" +msgstr "Extra moves permitted" + +#. type: Plain text +#: puzzles.but:3239 +msgid "" +"Controls the difficulty of the puzzle, by increasing the move limit. In each " +"new grid, Flood will run an internal solver to generate its own solution, " +"and then the value in this field will be added to the length of Flood's " +"solution to generate the game's move limit. So a value of 0 requires you to " +"be just as efficient as Flood's automated solver, and a larger value makes " +"it easier." +msgstr "" +"Steuert die Schwierigkeit des Puzzles durch Erhöhung der Zugbegrenzung. In " +"jedem neuen Gitter lässt Flood ein internes Lösungsprogramm laufen, um seine " +"eigene Lösung zu erstellen und dann wird der Wert in diesem Feld zu der Länge " +"der Lösung von Flood hinzuaddiert, um die Spielzugbegrenzung zu erstellen. " +"Ein Wert von 0 verlangt daher von Ihnen, so effizient wie der automatische " +"Lösungsfinder von Flood zu sein und ein größerer Wert erleichtert es." + +#. type: Plain text +#: puzzles.but:3248 +msgid "" +"(Note that Flood's internal solver will not necessarily find the shortest " +"possible solution, though I believe it's pretty close. For a real challenge, " +"set this value to 0 and then try to solve a grid in \\e{strictly fewer} " +"moves than the limit you're given!)" +msgstr "" +"(Beachten Sie, dass das interne Lösungsprogramm von Flood nicht " +"notwendigerweise die kürzeste mögliche Lösung findet, obwohl ich annehme, " +"dass es ziemlich nahe dran ist. Für eine echte Herausforderung setzen Sie " +"diesen Wert auf 0 und versuchen dann, ein Gitter in \\e{echt weniger} Zügen " +"zu lösen, als Ihnen vorgegeben werden!)" + +#. type: Plain text +#: puzzles.but:3250 +msgid "\\i{Tracks}" +msgstr "\\i{Tracks}" + +#. type: Plain text +#: puzzles.but:3252 +msgid "\\cfg{winhelp-topic}{games.tracks}" +msgstr "\\cfg{winhelp-topic}{games.tracks}" + +#. type: Plain text +#: puzzles.but:3257 +msgid "" +"You are given a grid of squares, some of which are filled with train tracks. " +"You need to complete the track from A to B so that the rows and columns " +"contain the same number of track segments as are indicated in the clues to " +"the top and right of the grid." +msgstr "" +"Sie erhalten ein Gitter von Quadraten von denen einige mit Gleisen von Zügen " +"gefüllt sind. Sie müssen die Gleise von A nach B so vervollständigen, dass " +"die Zeilen und Spalten die gleiche Anzahl von Gleissegmenten enthalten, wie " +"dies in den Hilfestellungen oben und rechts vom Gitter angegeben ist." + +#. type: Plain text +#: puzzles.but:3260 +msgid "" +"There are only straight and 90 degree curved rails, and the track may not " +"cross itself." +msgstr "" +"Es gibt nur gerade und 90° gebogene Schienen und die Gleise dürfen sich nicht " +"selbst kreuzen." + +#. type: Plain text +#: puzzles.but:3262 +msgid "Tracks was contributed to this collection by James Harvey." +msgstr "Tracks ist ein Beitrag von James Harvey zu dieser Sammlung." + +#. type: Plain text +#: puzzles.but:3264 +msgid "\\I{controls, for Tracks}Tracks controls" +msgstr "\\I{Steuerungen, für Tracks}Tracks-Steuerungen" + +#. type: Plain text +#: puzzles.but:3268 +msgid "" +"Left-clicking on an edge between two squares adds a track segment between " +"the two squares. Right-clicking on an edge adds a cross on the edge, " +"indicating no track is possible there." +msgstr "" +"Durch Linksklick auf eine Kante zwischen zwei Quadraten wird ein " +"Gleissgement zwischen den zwei Quadraten hinzugefügt. Durch Rechtsklick wird " +"ein Kreuz auf der Kante hinzugefügt, das anzeigt, dass hier kein Gleis " +"möglich ist." + +#. type: Plain text +#: puzzles.but:3273 +msgid "" +"Left-clicking in a square adds a colour indicator showing that you know the " +"square must contain a track, even if you don't know which edges it crosses " +"yet. Right-clicking in a square adds a cross indicating it contains no track " +"segment." +msgstr "" +"Durch Linksklick auf ein Quadrat wird eine Farbanzeige hinzugefügt, die " +"zeigt, dass Sie wissen, dass das Quadrat ein Gleis enthalten muss, selbst " +"wenn Sie noch nicht wissen, über welche Kante es läuft. Durch Rechtsklick in " +"ein Quadrat wird ein Kreuz hinzugefügt, das angibt, dass es kein Gleissgement " +"enthält." + +#. type: Plain text +#: puzzles.but:3277 +msgid "" +"Left- or right-dragging between squares allows you to lay a straight line of " +"is-track or is-not-track indicators, useful for filling in rows or columns " +"to match the clue." +msgstr "" +"Links- oder Rechts-Ziehen zwischen Quadraten erlaubt es Ihnen, eine gerade " +"Linie von Schienen-existieren- oder Schienen-existieren-nicht-Anzeigen zu " +"legen. Dies ist nützlich, um Zeilen oder Spalten auf den Hinweis anzupassen." + +#. type: Plain text +#: puzzles.but:3281 +msgid "\\I{parameters, for Tracks}Tracks parameters" +msgstr "\\I{Parameter, für Tracks}Tracks-Parameter" + +#. type: Plain text +#: puzzles.but:3294 +msgid "" +"Controls the difficulty of the generated puzzle: at Tricky level, you are " +"required to make more deductions regarding disregarding moves that would " +"lead to impossible crossings later." +msgstr "" +"Steuert die Schwierigkeit des erstellten Puzzles: bei der Stufe »Tricky« " +"müssen Sie schwierigere Schlussfolgerungen in Bezug auf Züge machen, die " +"später zu unmöglichen Kreuzungen führen könnten." + +#. type: e{#1} +#: puzzles.but:3296 +msgid "Disallow consecutive 1 clues" +msgstr "Disallow consecutive 1 clues" + +#. type: Plain text +#: puzzles.but:3303 +msgid "" +"Controls whether the Tracks game generation permits two adjacent rows or " +"columns to have a 1 clue, or permits the row or column of the track's " +"endpoint to have a 1 clue. By default this is not permitted, to avoid long " +"straight boring segments of track and make the games more twiddly and " +"interesting. If you want to restore the possibility, turn this option off." +msgstr "" +"Steuert, ob es die Spielerzeugung von Tracks zwei benachbarten Zeilen oder " +"Spalten erlaubt, genau einen Hinweis zu haben oder es der Zeile oder Spalte " +"der Endpunkte der Gleise erlaubt, genau einen Hinweis zu tragen. " +"Standardmäßig ist dies nicht erlaubt, um lange gerade und langweilige " +"Gleissegmente zu vermeiden und das Spiel fummeliger und interessanter zu " +"gestalten. Falls Sie diese Möglichkeit wieder erlauben wollen, schalten Sie " +"diese Option aus." + +#. type: Plain text +#: puzzles.but:3306 +msgid "\\i{Palisade}" +msgstr "\\i{Palisade}" + +#. type: Plain text +#: puzzles.but:3308 +msgid "\\cfg{winhelp-topic}{games.palisade}" +msgstr "\\cfg{winhelp-topic}{games.palisade}" + +#. type: Plain text +#: puzzles.but:3314 +msgid "" +"You're given a grid of squares, some of which contain numbers. Your goal is " +"to subdivide the grid into contiguous regions, all of the same (given) size, " +"such that each square containing a number is adjacent to exactly that many " +"edges (including those between the inside and the outside of the grid)." +msgstr "" +"Sie erhalten ein Gitter von Quadraten, von denen einige Zahlen enthalten. Ihr " +"Ziel besteht darin, das Gitter in zusammenhängende Regionen zu zerteilen, die " +"alle die gleiche (vorgegebene) Größe haben, so dass jedes Quadrat, das eine " +"Nummer trägt, zu genau dieser Anzahl an Kanten benachbart ist (dazu gehören " +"auch solche zwischen der Innenseite und der Außenseite des Gitters)." + +#. type: Plain text +#: puzzles.but:3317 +msgid "" +"Credit for this puzzle goes to \\i{Nikoli}, who call it \\q{Five Cells}. " +"\\k{nikoli-palisade}." +msgstr "" +"Der Dank für dieses Puzzle geht an \\i{Nikoli}, die es \\q{Five Cells} " +"nennen. \\k{nikoli-palisade}." + +#. type: Plain text +#: puzzles.but:3319 +msgid "Palisade was contributed to this collection by Jonas K\\u00F6{oe}lker." +msgstr "Palisade ist ein Beitrag von Jonas K\\u00F6{oe}lker zu dieser Sammlung." + +#. type: Plain text +#: puzzles.but:3322 +msgid "" +"\\W{http://nikoli.co.jp/en/puzzles/five_cells.html}\\cw{http://nikoli.co.jp/" +"en/puzzles/five_cells.html}" +msgstr "\\W{http://www.nikoli.co.jp/en/puzzles/five_cells.html}\\cw{http://www.nikoli.co.jp/en/puzzles/five_cells.html}" + +#. type: Plain text +#: puzzles.but:3324 +msgid "\\I{controls, for Palisade}Palisade controls" +msgstr "\\I{Steuerungen, für Palisade}Palisade-Steuerungen" + +#. type: Plain text +#: puzzles.but:3330 +msgid "" +"Left-click to place an edge. Right-click to indicate \\q{no edge}. " +"Alternatively, the arrow keys will move a keyboard cursor. Holding Control " +"while pressing an arrow key will place an edge. Press Shift-arrowkey to " +"switch off an edge. Repeat an action to perform its inverse." +msgstr "" +"Durch Linksklick setzen Sie eine Kante. Rechtsklick zeigt \\q{keine Kante} " +"an. Alternativ können die Pfeiltasten einen Tastatur-Cursor bewegen. Wird " +"Strg während der Pfeiltasten gedrückt, wird eine Kante gesetzt. Umschalt-" +"Pfeiltaste schaltet eine Kante aus. Wiederholen Sie eine Aktion, um ihr " +"Gegenteil auszulösen." + +#. type: Plain text +#: puzzles.but:3334 +msgid "\\I{parameters, for Palisade}Palisade parameters" +msgstr "\\I{Parameter, für Palisade}Palisade-Parameter" + +#. type: e{#1} +#: puzzles.but:3343 +msgid "Region size" +msgstr "Region size" + +#. type: Plain text +#: puzzles.but:3345 +msgid "The size of the regions into which the grid must be subdivided." +msgstr "Die Größe der Regionen, in die das Gitter zerteilt werden muss." + +#. type: Plain text +#: puzzles.but:3347 msgid "\\I{MIT licence}\\ii{Licence}" msgstr "\\I{MIT-Lizenz}\\ii{Lizenz}" #. type: Plain text -#: puzzles.but:3124 +#: puzzles.but:3349 msgid "This software is \\i{copyright} 2004-2014 Simon Tatham." msgstr "" "Diese Software ist \\i{copyright} 2004-2014 Simon Tatham. Im Zweifelsfall " @@ -7248,7 +7705,7 @@ "nach bestem Wissen und Gewissen erstellt wurde." #. type: Plain text -#: puzzles.but:3128 +#: puzzles.but:3353 msgid "" "Portions copyright Richard Boulton, James Harvey, Mike Pinna, Jonas K" "\\u00F6{oe}lker, Dariusz Olszewski, Michael Schierl, Lambros Lambrou, Bernd " @@ -7259,7 +7716,7 @@ "Bernd Schmidt, Steffen Bauer, Lennard Sprong and Rogier Goossens." #. type: Plain text -#: puzzles.but:3136 +#: puzzles.but:3361 msgid "" "Permission is hereby granted, free of charge, to any person obtaining a copy " "of this software and associated documentation files (the \\q{Software}), to " @@ -7278,7 +7735,7 @@ "Bedingungen erfüllt werden:" #. type: Plain text -#: puzzles.but:3139 +#: puzzles.but:3364 msgid "" "The above copyright notice and this permission notice shall be included in " "all copies or substantial portions of the Software." @@ -7287,7 +7744,7 @@ "oder wesentlichen Teilen dieser Software enthalten sein." #. type: Plain text -#: puzzles.but:3148 +#: puzzles.but:3373 msgid "" "THE SOFTWARE IS PROVIDED \\q{AS IS}, WITHOUT WARRANTY OF ANY KIND, EXPRESS " "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, " @@ -7307,144 +7764,144 @@ "SOFTWARE ODER DEREN VERWENDUNG ODER ANDEREN UMGANG IN DER SOFTWARE HERRÜHREN." #. type: IM{#1} -#: puzzles.but:3149 +#: puzzles.but:3374 msgid "command-line" msgstr "Befehlszeile" #. type: IM -#: puzzles.but:3149 +#: puzzles.but:3374 #, no-wrap msgid "{command line} command line" msgstr "{Befehlszeile} Befehlszeile" #. type: IM{#1} -#: puzzles.but:3151 puzzles.but:3152 +#: puzzles.but:3376 puzzles.but:3377 #, no-wrap msgid "default parameters, specifying" msgstr "Standardparameter, angeben" #. type: IM -#: puzzles.but:3152 +#: puzzles.but:3377 #, no-wrap msgid "preferences, specifying default" msgstr "Voreinstellungen, Standard angeben" #. type: IM{#1} -#: puzzles.but:3154 puzzles.but:3155 +#: puzzles.but:3379 puzzles.but:3380 #, no-wrap msgid "Unix" msgstr "Unix" #. type: IM -#: puzzles.but:3155 +#: puzzles.but:3380 #, no-wrap msgid "Linux" msgstr "Linux" #. type: IM{#1} -#: puzzles.but:3157 puzzles.but:3158 +#: puzzles.but:3382 puzzles.but:3383 #, no-wrap msgid "generating game IDs" msgstr "Erzeugen von Spiele-IDs" #. type: IM -#: puzzles.but:3158 +#: puzzles.but:3383 #, no-wrap msgid "game ID, generating" msgstr "Spiele-ID, erzeugen" #. type: IM{#1} -#: puzzles.but:3160 +#: puzzles.but:3385 msgid "specific" msgstr "specific" #. type: IM -#: puzzles.but:3160 +#: puzzles.but:3385 #, no-wrap msgid "\\q{Specific}, menu option" msgstr "\\q{Specific}, Menüoption" #. type: IM{#1} -#: puzzles.but:3161 +#: puzzles.but:3386 msgid "custom" msgstr "custom" #. type: IM -#: puzzles.but:3161 +#: puzzles.but:3386 #, no-wrap msgid "\\q{Custom}, menu option" msgstr "\\q{Custom}, Menüoption" #. type: IM{#1} -#: puzzles.but:3163 puzzles.but:3164 +#: puzzles.but:3388 puzzles.but:3389 #, no-wrap msgid "game ID" msgstr "Spiele-ID" #. type: IM -#: puzzles.but:3164 +#: puzzles.but:3389 #, no-wrap msgid "ID, game" msgstr "ID, Spiel" #. type: IM{#1} -#: puzzles.but:3165 puzzles.but:3166 puzzles.but:3167 +#: puzzles.but:3390 puzzles.but:3391 puzzles.but:3392 #, no-wrap msgid "ID format" msgstr "ID-Format" #. type: IM -#: puzzles.but:3166 +#: puzzles.but:3391 #, no-wrap msgid "format, ID" msgstr "Format, ID" #. type: IM -#: puzzles.but:3167 +#: puzzles.but:3392 #, no-wrap msgid "game ID, format" msgstr "Spiele-ID, Format" #. type: IM{#1} -#: puzzles.but:3169 puzzles.but:3170 +#: puzzles.but:3394 puzzles.but:3395 #, no-wrap msgid "keys" msgstr "Tasten" #. type: IM -#: puzzles.but:3170 +#: puzzles.but:3395 #, no-wrap msgid "shortcuts (keyboard)" msgstr "Tastaturkürzel" #. type: IM{#1} -#: puzzles.but:3172 puzzles.but:3173 +#: puzzles.but:3397 puzzles.but:3398 #, no-wrap msgid "initial state" msgstr "Anfangszustand" #. type: IM -#: puzzles.but:3173 +#: puzzles.but:3398 #, no-wrap msgid "state, initial" msgstr "Zustand, anfänglicher" #. type: IM{#1} -#: puzzles.but:3175 puzzles.but:3176 +#: puzzles.but:3400 puzzles.but:3401 #, no-wrap msgid "MIT licence" msgstr "MIT-Lizenz" #. type: IM -#: puzzles.but:3176 +#: puzzles.but:3401 #, no-wrap msgid "licence, MIT" msgstr "Lizenz, MIT" #. type: Plain text -#: puzzles.but:3178 -msgid "Simon Tatham's Portable Puzzle Collection, version 20140928.r10274" -msgstr "Simon Tathams portable Puzzle-Sammlung, Version 20140928.r10274" +#: puzzles.but:3403 +msgid "Simon Tatham's Portable Puzzle Collection, version 20160429.b31155b" +msgstr "Simon Tathams portable Puzzle-Sammlung, Version 20160429.b31155b" #: blackbox.R msgid "Ball-finding puzzle" @@ -7474,6 +7931,10 @@ msgid "Tile inversion puzzle" msgstr "Kachel-Inversions-Puzzle" +#: flood.R +msgid "Flood-filling puzzle" +msgstr "Flutungs-Puzzle" + #: galaxies.R msgid "Symmetric polyomino puzzle" msgstr "Symmetrisches Polyomino-Puzzle" @@ -7518,6 +7979,10 @@ msgid "Toroidal sliding network puzzle" msgstr "Toroidal-verschiebbares Netzpuzzle" +#: palisade.R +msgid "Grid-division puzzle" +msgstr "Gitter-Unterteilungs-Puzzle" + #: pattern.R msgid "Pattern puzzle" msgstr "Muster-Puzzle" @@ -7566,6 +8031,10 @@ msgid "Tower-placing Latin square puzzle" msgstr "Lateinisches-Quadrat-Turm-Setze-Puzzle" +#: tracks.R +msgid "Path-finding railway track puzzle" +msgstr "Pfadfinde-Eisenbahngleise-Puzzle" + #: twiddle.R msgid "Rotational sliding block puzzle" msgstr "Rotierendes Verschiebe-Block-Puzzle" @@ -7639,65 +8108,93 @@ msgid "December" msgstr "Dezember" -#: mkmanpages.pl:90 +#: mkmanpages.pl:93 msgid "NAME" msgstr "NAME" -#: mkmanpages.pl:92 +#: mkmanpages.pl:95 msgid "SYNOPSIS" msgstr "ÜBERSICHT" #. Translator: abbreviation for 'number' -#: mkmanpages.pl:94 mkmanpages.pl:99 +#: mkmanpages.pl:97 mkmanpages.pl:102 msgid "n" msgstr "n" #. Translator: abbreviation for 'width' -#: mkmanpages.pl:96 +#: mkmanpages.pl:99 msgid "w" msgstr "b" #. Translator: abbreviation for 'height' -#: mkmanpages.pl:98 +#: mkmanpages.pl:101 msgid "h" msgstr "h" -#: mkmanpages.pl:100 +#: mkmanpages.pl:103 msgid "game-parameters" msgstr "Spiele-Parameter" -#: mkmanpages.pl:100 +#: mkmanpages.pl:103 msgid "game-ID" msgstr "Spiele-ID" -#: mkmanpages.pl:101 +#: mkmanpages.pl:104 msgid "random-seed" msgstr "Zufallsstartwert" -#: mkmanpages.pl:103 +#: mkmanpages.pl:106 msgid "DESCRIPTION" msgstr "BESCHREIBUNG" -#: mkmanpages.pl:106 +#: mkmanpages.pl:109 msgid "SEE ALSO" msgstr "SIEHE AUCH" #. Translator: "Full documentation in ." -#: mkmanpages.pl:108 +#: mkmanpages.pl:111 #, perl-format msgid "Full documentation in %s." msgstr "Komplette Dokumentation in %s." #. Translator: earlier in the manual page -#: mkmanpages.pl:119 +#: mkmanpages.pl:122 msgid "above" msgstr "oben" #. Translator: later in the manual page -#: mkmanpages.pl:122 +#: mkmanpages.pl:125 msgid "below" msgstr "unten" +#~ msgid "" +#~ "\\W{http://www.nikoli.co.jp/puzzles/7/index_text-e.htm}\\cw{http://www." +#~ "nikoli.co.jp/puzzles/7/index_text-e.htm}" +#~ msgstr "" +#~ "\\W{http://www.nikoli.co.jp/puzzles/7/index_text-e.htm}\\cw{http://www." +#~ "nikoli.co.jp/puzzles/7/index_text-e.htm}" + +#~ msgid "" +#~ "\\W{http://www.nikoli.co.jp/puzzles/1/index_text-e.htm}\\cw{http://www." +#~ "nikoli.co.jp/puzzles/1/index_text-e.htm}" +#~ msgstr "" +#~ "\\W{http://www.nikoli.co.jp/puzzles/1/index_text-e.htm}\\cw{http://www." +#~ "nikoli.co.jp/puzzles/1/index_text-e.htm}" + +#~ msgid "" +#~ "\\W{http://www.nikoli.co.jp/puzzles/32/index-e.htm}\\cw{http://www.nikoli." +#~ "co.jp/puzzles/32/index-e.htm} (beware of Flash)" +#~ msgstr "" +#~ "\\W{http://www.nikoli.co.jp/puzzles/32/index-e.htm}\\cw{http://www.nikoli." +#~ "co.jp/puzzles/32/index-e.htm} (Achtung Flash)" + +#~ msgid "" +#~ "\\W{http://www.nikoli.co.jp/puzzles/14/index-e.htm}\\cw{http://www.nikoli." +#~ "co.jp/puzzles/14/index-e.htm}" +#~ msgstr "" +#~ "\\W{http://www.nikoli.co.jp/puzzles/14/index-e.htm}\\cw{http://www.nikoli." +#~ "co.jp/puzzles/14/index-e.htm}" + #~ msgid "guessing game" #~ msgstr "Ratespiel" diff -Nru sgt-puzzles-20140928.r10274/debian/po/puzzles-doc.pot sgt-puzzles-20160429.b31155b/debian/po/puzzles-doc.pot --- sgt-puzzles-20140928.r10274/debian/po/puzzles-doc.pot 2014-10-01 21:03:55.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/debian/po/puzzles-doc.pot 2016-06-30 14:17:07.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: puzzles\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-10-01 20:16+0100\n" +"POT-Creation-Date: 2016-06-30 16:17+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -174,8 +174,8 @@ #. type: Plain text #: puzzles.but:66 msgid "" -"This collection is distributed under the \\i{MIT licence} (see \\k" -"{licence}). This means that you can do pretty much anything you like with " +"This collection is distributed under the \\i{MIT licence} (see " +"\\k{licence}). This means that you can do pretty much anything you like with " "the game binaries or the code, except pretending you wrote them yourself, or " "suing me if anything goes wrong." msgstr "" @@ -183,17 +183,17 @@ #. type: Plain text #: puzzles.but:69 msgid "" -"The most recent versions, and \\i{source code}, can be found at \\I" -"{website}\\W{http://www.chiark.greenend.org.uk/~sgtatham/puzzles/}\\cw" -"{http://www.chiark.greenend.org.uk/~sgtatham/puzzles/}." +"The most recent versions, and \\i{source code}, can be found at " +"\\I{website}\\W{http://www.chiark.greenend.org.uk/~sgtatham/" +"puzzles/}\\cw{http://www.chiark.greenend.org.uk/~sgtatham/puzzles/}." msgstr "" #. type: Plain text #: puzzles.but:73 msgid "" -"Please report \\I{feedback}\\i{bugs} to \\W{mailto:anakin@pobox.com}\\cw" -"{anakin@pobox.com}. You might find it helpful to read this article before " -"reporting a bug:" +"Please report \\I{feedback}\\i{bugs} to \\W{mailto:anakin@pobox." +"com}\\cw{anakin@pobox.com}. You might find it helpful to read this article " +"before reporting a bug:" msgstr "" #. type: Plain text @@ -236,8 +236,8 @@ #: puzzles.but:93 msgid "" "(On \\i{Mac OS X}, to conform with local user interface standards, these " -"actions are situated on the \\I{File menu}\\q{File} and \\I{Edit menu}\\q" -"{Edit} menus instead.)" +"actions are situated on the \\I{File menu}\\q{File} and \\I{Edit " +"menu}\\q{Edit} menus instead.)" msgstr "" #. type: Plain text @@ -446,8 +446,8 @@ #. type: Plain text #: puzzles.but:215 msgid "" -"It is often possible to convert puzzles from other sources (such as \\q" -"{nonograms} or \\q{sudoku} from newspapers) into descriptive game IDs " +"It is often possible to convert puzzles from other sources (such as " +"\\q{nonograms} or \\q{sudoku} from newspapers) into descriptive game IDs " "suitable for use with these programs." msgstr "" @@ -510,8 +510,8 @@ "friend reads out a random seed specifying \\q{Trivial} difficulty, and you " "type it in. The program will generate you the same \\q{Trivial} grid which " "your friend was having trouble with, but once you have finished playing it, " -"when you ask for a new game it will automatically go back to the \\q" -"{Advanced} difficulty which it was previously set on." +"when you ask for a new game it will automatically go back to the " +"\\q{Advanced} difficulty which it was previously set on." msgstr "" #. type: Plain text @@ -522,9 +522,9 @@ #. type: Plain text #: puzzles.but:264 msgid "" -"The \\I{Type menu}\\q{Type} menu, if present, may contain a list of \\i" -"{preset} game settings. Selecting one of these will start a new random game " -"with the parameters specified." +"The \\I{Type menu}\\q{Type} menu, if present, may contain a list of " +"\\i{preset} game settings. Selecting one of these will start a new random " +"game with the parameters specified." msgstr "" #. type: Plain text @@ -566,12 +566,12 @@ #. type: Plain text #: puzzles.but:291 msgid "" -"The easiest way to do this is to set up the parameters you want using the \\q" -"{Type} menu (see \\k{common-type}), and then to select \\q{Random Seed} from " -"the \\q{Game} or \\q{File} menu (see \\k{common-id}). The text in the \\q" -"{Game ID} box will be composed of two parts, separated by a hash. The first " -"of these parts represents the game parameters (the size of the playing area, " -"for example, and anything else you set using the \\q{Type} menu)." +"The easiest way to do this is to set up the parameters you want using the " +"\\q{Type} menu (see \\k{common-type}), and then to select \\q{Random Seed} " +"from the \\q{Game} or \\q{File} menu (see \\k{common-id}). The text in the " +"\\q{Game ID} box will be composed of two parts, separated by a hash. The " +"first of these parts represents the game parameters (the size of the playing " +"area, for example, and anything else you set using the \\q{Type} menu)." msgstr "" #. type: Plain text @@ -699,8 +699,8 @@ msgid "" "If \\c{--generate} has also been specified, the invented game IDs will be " "used to generate the printed output. Otherwise, a list of game IDs is " -"expected on standard input (which can be descriptive or random seeds; see \\k" -"{common-id}), in the same format produced by \\c{--generate}." +"expected on standard input (which can be descriptive or random seeds; see " +"\\k{common-id}), in the same format produced by \\c{--generate}." msgstr "" #. type: Plain text @@ -825,8 +825,8 @@ #. type: Plain text #: puzzles.but:439 msgid "" -"I originally saw this in the form of a Flash game called \\i{FreeNet} \\k" -"{FreeNet}, written by Pavils Jurjans; there are several other " +"I originally saw this in the form of a Flash game called \\i{FreeNet} " +"\\k{FreeNet}, written by Pavils Jurjans; there are several other " "implementations under the name \\i{NetWalk}. The computer prepares a network " "by connecting up the centres of squares in a grid, and then shuffles the " "network by rotating every tile randomly. Your job is to rotate it all back " @@ -956,15 +956,15 @@ msgstr "" #. type: Plain text -#: puzzles.but:486 puzzles.but:575 puzzles.but:621 puzzles.but:662 -#: puzzles.but:720 puzzles.but:794 puzzles.but:901 puzzles.but:993 -#: puzzles.but:1185 puzzles.but:1258 puzzles.but:1331 puzzles.but:1403 -#: puzzles.but:1458 puzzles.but:1502 puzzles.but:1645 puzzles.but:1710 -#: puzzles.but:1781 puzzles.but:1877 puzzles.but:1952 puzzles.but:2091 -#: puzzles.but:2200 puzzles.but:2326 puzzles.but:2400 puzzles.but:2458 -#: puzzles.but:2551 puzzles.but:2641 puzzles.but:2699 puzzles.but:2758 -#: puzzles.but:2848 puzzles.but:2913 puzzles.but:2980 puzzles.but:3055 -#: puzzles.but:3101 +#: puzzles.but:486 puzzles.but:575 puzzles.but:625 puzzles.but:673 +#: puzzles.but:731 puzzles.but:807 puzzles.but:918 puzzles.but:1011 +#: puzzles.but:1203 puzzles.but:1276 puzzles.but:1353 puzzles.but:1425 +#: puzzles.but:1484 puzzles.but:1528 puzzles.but:1671 puzzles.but:1739 +#: puzzles.but:1810 puzzles.but:1906 puzzles.but:1981 puzzles.but:2120 +#: puzzles.but:2236 puzzles.but:2367 puzzles.but:2441 puzzles.but:2500 +#: puzzles.but:2593 puzzles.but:2691 puzzles.but:2749 puzzles.but:2811 +#: puzzles.but:2901 puzzles.but:2969 puzzles.but:3040 puzzles.but:3118 +#: puzzles.but:3164 puzzles.but:3215 puzzles.but:3279 puzzles.but:3332 msgid "(All the actions described in \\k{common-actions} are also available.)" msgstr "" @@ -974,25 +974,26 @@ msgstr "" #. type: Plain text -#: puzzles.but:491 puzzles.but:580 puzzles.but:799 puzzles.but:1190 -#: puzzles.but:1263 puzzles.but:1408 puzzles.but:1463 puzzles.but:1650 -#: puzzles.but:1715 puzzles.but:1786 puzzles.but:1882 puzzles.but:1957 -#: puzzles.but:2040 puzzles.but:2096 puzzles.but:2205 puzzles.but:2331 -#: puzzles.but:2405 puzzles.but:2556 puzzles.but:2646 puzzles.but:2704 -#: puzzles.but:2763 puzzles.but:2853 puzzles.but:2918 puzzles.but:2985 -#: puzzles.but:3060 puzzles.but:3106 -msgid "" -"These parameters are available from the \\q{Custom...} option on the \\q" -"{Type} menu." +#: puzzles.but:491 puzzles.but:580 puzzles.but:812 puzzles.but:1208 +#: puzzles.but:1281 puzzles.but:1430 puzzles.but:1489 puzzles.but:1676 +#: puzzles.but:1744 puzzles.but:1815 puzzles.but:1911 puzzles.but:1986 +#: puzzles.but:2067 puzzles.but:2125 puzzles.but:2241 puzzles.but:2372 +#: puzzles.but:2446 puzzles.but:2598 puzzles.but:2696 puzzles.but:2754 +#: puzzles.but:2816 puzzles.but:2906 puzzles.but:2974 puzzles.but:3045 +#: puzzles.but:3123 puzzles.but:3169 puzzles.but:3220 puzzles.but:3284 +#: puzzles.but:3337 +msgid "" +"These parameters are available from the \\q{Custom...} option on the " +"\\q{Type} menu." msgstr "" #. type: Plain text -#: puzzles.but:493 puzzles.but:801 puzzles.but:1120 puzzles.but:1192 -#: puzzles.but:1265 puzzles.but:1410 puzzles.but:1652 puzzles.but:1717 -#: puzzles.but:1788 puzzles.but:1884 puzzles.but:1959 puzzles.but:2042 -#: puzzles.but:2098 puzzles.but:2207 puzzles.but:2407 puzzles.but:2706 -#: puzzles.but:2765 puzzles.but:2855 puzzles.but:2920 puzzles.but:3062 -#: puzzles.but:3108 +#: puzzles.but:493 puzzles.but:814 puzzles.but:1138 puzzles.but:1210 +#: puzzles.but:1283 puzzles.but:1432 puzzles.but:1678 puzzles.but:1746 +#: puzzles.but:1817 puzzles.but:1913 puzzles.but:1988 puzzles.but:2069 +#: puzzles.but:2127 puzzles.but:2243 puzzles.but:2448 puzzles.but:2756 +#: puzzles.but:2818 puzzles.but:2908 puzzles.but:2976 puzzles.but:3125 +#: puzzles.but:3171 puzzles.but:3222 puzzles.but:3286 puzzles.but:3339 msgid "\\e{Width}, \\e{Height}" msgstr "" @@ -1042,7 +1043,7 @@ msgstr "" #. type: e{#1} -#: puzzles.but:524 puzzles.but:831 puzzles.but:1472 +#: puzzles.but:524 puzzles.but:844 puzzles.but:1498 msgid "Ensure unique solution" msgstr "" @@ -1126,7 +1127,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:563 puzzles.but:1171 puzzles.but:1246 puzzles.but:1304 +#: puzzles.but:563 puzzles.but:1189 puzzles.but:1264 puzzles.but:1322 msgid "This game can be played with either the keyboard or the mouse." msgstr "" @@ -1246,11 +1247,18 @@ #. type: Plain text #: puzzles.but:623 -msgid "\\I{parameters, for Fifteen}Fifteen parameters" +msgid "" +"Pressing \\q{h} will make a suggested move. Pressing \\q{h} enough times " +"will solve the game, but it may scramble your progress while doing so." msgstr "" #. type: Plain text #: puzzles.but:627 +msgid "\\I{parameters, for Fifteen}Fifteen parameters" +msgstr "" + +#. type: Plain text +#: puzzles.but:631 msgid "" "The only options available from the \\q{Custom...} option on the \\q{Type} " "menu are \\e{Width} and \\e{Height}, which are self-explanatory. (Once " @@ -1258,17 +1266,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:630 +#: puzzles.but:634 msgid "\\i{Sixteen}" msgstr "" #. type: Plain text -#: puzzles.but:632 +#: puzzles.but:636 msgid "\\cfg{winhelp-topic}{games.sixteen}" msgstr "" #. type: Plain text -#: puzzles.but:642 +#: puzzles.but:646 msgid "" "Another sliding tile puzzle, visually similar to Fifteen (see \\k{fifteen}) " "but with a different type of move. This time, there is no hole: all 16 " @@ -1281,7 +1289,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:650 +#: puzzles.but:654 msgid "" "I \\e{might} have invented this game myself, though only by accident if so " "(and I'm sure other people have independently invented it). I thought I was " @@ -1292,19 +1300,19 @@ msgstr "" #. type: Plain text -#: puzzles.but:652 +#: puzzles.but:656 msgid "\\I{controls, for Sixteen}Sixteen controls" msgstr "" #. type: Plain text -#: puzzles.but:656 +#: puzzles.but:660 msgid "" "Left-clicking on an arrow will move the appropriate row or column in the " "direction indicated. Right-clicking will move it in the opposite direction." msgstr "" #. type: Plain text -#: puzzles.but:660 +#: puzzles.but:664 msgid "" "Alternatively, use the cursor keys to move the position indicator around the " "edge of the grid, and use the return key to move the row/column in the " @@ -1312,24 +1320,34 @@ msgstr "" #. type: Plain text -#: puzzles.but:664 +#: puzzles.but:671 +msgid "" +"You can also move the tiles directly. Move the cursor onto a tile, hold " +"Control and press an arrow key to move the tile under the cursor and move " +"the cursor along with the tile. Or, hold Shift to move only the tile. " +"Pressing Enter simulates holding down Control (press Enter again to " +"release), while pressing Space simulates holding down shift." +msgstr "" + +#. type: Plain text +#: puzzles.but:675 msgid "\\I{parameters, for Sixteen}Sixteen parameters" msgstr "" #. type: Plain text -#: puzzles.but:667 +#: puzzles.but:678 msgid "" "The parameters available from the \\q{Custom...} option on the \\q{Type} " "menu are:" msgstr "" #. type: Plain text -#: puzzles.but:669 +#: puzzles.but:680 msgid "\\e{Width} and \\e{Height}, which are self-explanatory." msgstr "" #. type: Plain text -#: puzzles.but:679 +#: puzzles.but:690 msgid "" "You can ask for a limited shuffling operation to be performed on the grid. " "By default, Sixteen will shuffle the grid in such a way that any arrangement " @@ -1342,25 +1360,25 @@ msgstr "" #. type: Plain text -#: puzzles.but:682 +#: puzzles.but:693 msgid "\\i{Twiddle}" msgstr "" #. type: Plain text -#: puzzles.but:684 +#: puzzles.but:695 msgid "\\cfg{winhelp-topic}{games.twiddle}" msgstr "" #. type: Plain text -#: puzzles.but:689 +#: puzzles.but:700 msgid "" -"Twiddle is a tile-rearrangement puzzle, visually similar to Sixteen (see \\k" -"{sixteen}): you are given a grid of square tiles, each containing a number, " -"and your aim is to arrange the numbers into ascending order." +"Twiddle is a tile-rearrangement puzzle, visually similar to Sixteen (see " +"\\k{sixteen}): you are given a grid of square tiles, each containing a " +"number, and your aim is to arrange the numbers into ascending order." msgstr "" #. type: Plain text -#: puzzles.but:694 +#: puzzles.but:705 msgid "" "In basic Twiddle, your move is to rotate a square group of four tiles about " "their common centre. (Orientation is not significant in the basic puzzle, " @@ -1369,7 +1387,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:699 +#: puzzles.but:710 msgid "" "I first saw this type of puzzle in the GameCube game \\q{Metroid Prime 2}. " "In the Main Gyro Chamber in that game, there is a puzzle you solve to unlock " @@ -1378,12 +1396,12 @@ msgstr "" #. type: Plain text -#: puzzles.but:701 +#: puzzles.but:712 msgid "\\I{controls, for Twiddle}Twiddle controls" msgstr "" #. type: Plain text -#: puzzles.but:706 +#: puzzles.but:717 msgid "" "To play Twiddle, click the mouse in the centre of the square group you wish " "to rotate. In the basic mode, you rotate a 2\\by\\.2 square, which means you " @@ -1391,7 +1409,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:710 +#: puzzles.but:721 msgid "" "In more advanced modes you might be rotating 3\\by\\.3 or even more at a " "time; if the size of the square is odd then you simply click in the centre " @@ -1399,14 +1417,14 @@ msgstr "" #. type: Plain text -#: puzzles.but:713 +#: puzzles.but:724 msgid "" "Clicking with the left mouse button rotates the group anticlockwise. " "Clicking with the right button rotates it clockwise." msgstr "" #. type: Plain text -#: puzzles.but:718 +#: puzzles.but:729 msgid "" "You can also move an outline square around the grid with the cursor keys; " "the square is the size above (2\\by\\.2 by default, or larger). Pressing " @@ -1415,29 +1433,29 @@ msgstr "" #. type: Plain text -#: puzzles.but:722 +#: puzzles.but:733 msgid "\\I{parameters, for Twiddle}Twiddle parameters" msgstr "" #. type: Plain text -#: puzzles.but:725 +#: puzzles.but:736 msgid "" "Twiddle provides several configuration options via the \\q{Custom} option on " "the \\q{Type} menu:" msgstr "" #. type: Plain text -#: puzzles.but:727 +#: puzzles.but:738 msgid "You can configure the width and height of the puzzle grid." msgstr "" #. type: Plain text -#: puzzles.but:729 +#: puzzles.but:740 msgid "You can configure the size of square block that rotates at a time." msgstr "" #. type: Plain text -#: puzzles.but:735 +#: puzzles.but:746 msgid "" "You can ask for every square in the grid to be distinguishable (the " "default), or you can ask for a simplified puzzle in which there are groups " @@ -1446,7 +1464,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:740 +#: puzzles.but:751 msgid "" "You can configure whether the orientation of tiles matters. If you ask for " "an orientable puzzle, each tile will have a triangle drawn in it. All the " @@ -1454,7 +1472,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:750 +#: puzzles.but:761 msgid "" "You can ask for a limited shuffling operation to be performed on the grid. " "By default, Twiddle will shuffle the grid so much that any arrangement is " @@ -1467,17 +1485,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:753 +#: puzzles.but:764 msgid "\\i{Rectangles}" msgstr "" #. type: Plain text -#: puzzles.but:755 +#: puzzles.but:766 msgid "\\cfg{winhelp-topic}{games.rectangles}" msgstr "" #. type: Plain text -#: puzzles.but:761 +#: puzzles.but:772 msgid "" "You have a grid of squares, with numbers written in some (but not all) of " "the squares. Your task is to subdivide the grid into rectangles of various " @@ -1487,11 +1505,11 @@ msgstr "" #. type: Plain text -#: puzzles.but:770 +#: puzzles.but:781 msgid "" -"Credit for this game goes to the Japanese puzzle magazine \\i{Nikoli} \\k" -"{nikoli-rect}; I've also seen a Palm implementation at \\i{Puzzle Palace} \\k" -"{puzzle-palace-rect}. Unlike Puzzle Palace's implementation, my version " +"Credit for this game goes to the Japanese puzzle magazine \\i{Nikoli} " +"\\k{nikoli-rect}; I've also seen a Palm implementation at \\i{Puzzle Palace} " +"\\k{puzzle-palace-rect}. Unlike Puzzle Palace's implementation, my version " "automatically generates random grids of any size you like. The quality of " "puzzle design is therefore not quite as good as hand-crafted puzzles would " "be, but on the plus side you get an inexhaustible supply of puzzles tailored " @@ -1499,31 +1517,32 @@ msgstr "" #. type: Plain text -#: puzzles.but:772 +#: puzzles.but:784 msgid "" -"\\W{http://www.nikoli.co.jp/puzzles/7/index_text-e.htm}\\cw{http://www." -"nikoli.co.jp/puzzles/7/index_text-e.htm}" +"\\W{http://www.nikoli.co.jp/en/puzzles/shikaku.html}\\cw{http://www.nikoli." +"co.jp/en/puzzles/shikaku.html} (beware of Flash)" msgstr "" #. type: Plain text -#: puzzles.but:774 +#: puzzles.but:786 msgid "" -"\\W{http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}\\cw{http://www." -"puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}" +"\\W{https://web.archive.org/web/20041024001459/http://www.puzzle.gr.jp/" +"puzzle/sikaku/palm/index.html.en}\\cw{https://web.archive.org/" +"web/20041024001459/http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}" msgstr "" #. type: Plain text -#: puzzles.but:776 +#: puzzles.but:788 msgid "\\I{controls, for Rectangles}Rectangles controls" msgstr "" #. type: Plain text -#: puzzles.but:778 +#: puzzles.but:790 msgid "This game is played with the mouse or cursor keys." msgstr "" #. type: Plain text -#: puzzles.but:783 +#: puzzles.but:795 msgid "" "Left-click any edge to toggle it on or off, or left-click and drag to draw " "an entire rectangle (or line) on the grid in one go (removing any existing " @@ -1532,38 +1551,38 @@ msgstr "" #. type: Plain text -#: puzzles.but:790 +#: puzzles.but:803 msgid "" "Alternatively, use the cursor keys to move the position indicator around the " "board. Pressing the return key then allows you to use the cursor keys to " "drag a rectangle out from that position, and pressing the return key again " "completes the rectangle. Using the space bar instead of the return key " "allows you to erase the contents of a rectangle without affecting its edges, " -"as above." +"as above. Pressing escape cancels a drag." msgstr "" #. type: Plain text -#: puzzles.but:792 +#: puzzles.but:805 msgid "When a rectangle of the correct size is completed, it will be shaded." msgstr "" #. type: Plain text -#: puzzles.but:796 +#: puzzles.but:809 msgid "\\I{parameters, for Rectangles}Rectangles parameters" msgstr "" #. type: Plain text -#: puzzles.but:803 +#: puzzles.but:816 msgid "Size of grid, in squares." msgstr "" #. type: e{#1} -#: puzzles.but:805 +#: puzzles.but:818 msgid "Expansion factor" msgstr "" #. type: Plain text -#: puzzles.but:811 +#: puzzles.but:824 msgid "" "This is a mechanism for changing the type of grids generated by the program. " "Some people prefer a grid containing a few large rectangles to one " @@ -1573,7 +1592,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:829 +#: puzzles.but:842 msgid "" "The default expansion factor of zero means that Rectangles will simply " "generate a grid of the size you ask for, and do nothing further. If you set " @@ -1584,7 +1603,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:829 +#: puzzles.but:842 msgid "" "Setting an expansion factor of around 0.5 tends to make the game more " "difficult, and also (in my experience) rewards a less deductive and more " @@ -1594,7 +1613,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:838 +#: puzzles.but:851 msgid "" "Normally, Rectangles will make sure that the puzzles it presents have only " "one solution. Puzzles with ambiguous sections can be more difficult and more " @@ -1605,17 +1624,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:841 +#: puzzles.but:854 msgid "\\i{Netslide}" msgstr "" #. type: Plain text -#: puzzles.but:843 +#: puzzles.but:856 msgid "\\cfg{winhelp-topic}{games.netslide}" msgstr "" #. type: Plain text -#: puzzles.but:848 +#: puzzles.but:861 msgid "" "This game combines the grid generation of Net (see \\k{net}) with the " "movement of Sixteen (see \\k{sixteen}): you have a Net grid, but instead of " @@ -1624,14 +1643,14 @@ msgstr "" #. type: Plain text -#: puzzles.but:851 +#: puzzles.but:864 msgid "" "As in Sixteen, \\I{controls, for Netslide}control is with the mouse or " "cursor keys. See \\k{sixteen-controls}." msgstr "" #. type: Plain text -#: puzzles.but:855 +#: puzzles.but:868 msgid "" "\\I{parameters, for Netslide}The available game parameters have similar " "meanings to those in Net (see \\k{net-params}) and Sixteen (see \\k{sixteen-" @@ -1639,22 +1658,22 @@ msgstr "" #. type: Plain text -#: puzzles.but:857 +#: puzzles.but:870 msgid "Netslide was contributed to this collection by Richard Boulton." msgstr "" #. type: Plain text -#: puzzles.but:860 +#: puzzles.but:873 msgid "\\i{Pattern}" msgstr "" #. type: Plain text -#: puzzles.but:862 +#: puzzles.but:875 msgid "\\cfg{winhelp-topic}{games.pattern}" msgstr "" #. type: Plain text -#: puzzles.but:868 +#: puzzles.but:881 msgid "" "You have a grid of squares, which must all be filled in either black or " "white. Beside each row of the grid are listed the lengths of the runs of " @@ -1664,15 +1683,15 @@ msgstr "" #. type: Plain text -#: puzzles.but:872 +#: puzzles.but:885 msgid "" -"I first saw this puzzle form around 1995, under the name \\q{\\i" -"{nonograms}}. I've seen it in various places since then, under different " -"names." +"I first saw this puzzle form around 1995, under the name " +"\\q{\\i{nonograms}}. I've seen it in various places since then, under " +"different names." msgstr "" #. type: Plain text -#: puzzles.but:880 +#: puzzles.but:893 msgid "" "Normally, puzzles of this type turn out to be a meaningful picture of " "something once you've solved them. However, since this version generates the " @@ -1684,17 +1703,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:882 +#: puzzles.but:895 msgid "\\I{controls, for Pattern}Pattern controls" msgstr "" #. type: Plain text -#: puzzles.but:884 puzzles.but:1072 +#: puzzles.but:897 puzzles.but:1090 msgid "This game is played with the mouse." msgstr "" #. type: Plain text -#: puzzles.but:889 +#: puzzles.but:902 msgid "" "Left-click in a square to colour it black. Right-click to colour it white. " "If you make a mistake, you can middle-click, or hold down Shift while " @@ -1703,7 +1722,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:895 +#: puzzles.but:908 msgid "" "You can click and drag with the left or right mouse button to colour a " "vertical or horizontal line of squares black or white at a time " @@ -1712,7 +1731,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:899 +#: puzzles.but:912 msgid "" "You can also move around the grid with the cursor keys. Pressing the return " "key will cycle the current cell through empty, then black, then white, then " @@ -1720,29 +1739,37 @@ msgstr "" #. type: Plain text -#: puzzles.but:903 +#: puzzles.but:916 +msgid "" +"Moving the cursor while holding Control will colour the moved-over squares " +"black. Holding Shift will colour the moved-over squares white, and holding " +"both will colour them grey." +msgstr "" + +#. type: Plain text +#: puzzles.but:920 msgid "\\I{parameters, for Pattern}Pattern parameters" msgstr "" #. type: Plain text -#: puzzles.but:906 +#: puzzles.but:923 msgid "" "The only options available from the \\q{Custom...} option on the \\q{Type} " "menu are \\e{Width} and \\e{Height}, which are self-explanatory." msgstr "" #. type: Plain text -#: puzzles.but:909 +#: puzzles.but:926 msgid "\\i{Solo}" msgstr "" #. type: Plain text -#: puzzles.but:911 +#: puzzles.but:928 msgid "\\cfg{winhelp-topic}{games.solo}" msgstr "" #. type: Plain text -#: puzzles.but:915 +#: puzzles.but:932 msgid "" "You have a square grid, which is divided into as many equally sized sub-" "blocks as the grid has rows. Each square must be filled in with a digit from " @@ -1750,36 +1777,36 @@ msgstr "" #. type: Plain text -#: puzzles.but:917 +#: puzzles.but:934 msgid "every row contains only one occurrence of each digit" msgstr "" #. type: Plain text -#: puzzles.but:919 +#: puzzles.but:936 msgid "every column contains only one occurrence of each digit" msgstr "" #. type: Plain text -#: puzzles.but:921 +#: puzzles.but:938 msgid "every block contains only one occurrence of each digit." msgstr "" #. type: Plain text -#: puzzles.but:924 +#: puzzles.but:941 msgid "" "(optionally, by default off) each of the square's two main diagonals " "contains only one occurrence of each digit." msgstr "" #. type: Plain text -#: puzzles.but:927 +#: puzzles.but:944 msgid "" "You are given some of the numbers as clues; your aim is to place the rest of " "the numbers correctly." msgstr "" #. type: Plain text -#: puzzles.but:935 +#: puzzles.but:952 msgid "" "Under the default settings, the sub-blocks are square or rectangular. The " "default puzzle size is 3\\by\\.3 (a 9\\by\\.9 actual grid, divided into nine " @@ -1790,7 +1817,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:942 +#: puzzles.but:959 msgid "" "Another available mode is \\q{killer}. In this mode, clues are not given in " "the form of filled-in squares; instead, the grid is divided into \\q{cages} " @@ -1800,7 +1827,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:948 +#: puzzles.but:965 msgid "" "If you select a puzzle size which requires more than 9 digits, the " "additional digits will be letters of the alphabet. For example, if you " @@ -1809,7 +1836,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:956 +#: puzzles.but:973 msgid "" "I first saw this puzzle in \\i{Nikoli} \\k{nikoli-solo}, although it's also " "been popularised by various newspapers under the name \\q{Sudoku} or \\q{Su " @@ -1820,26 +1847,26 @@ msgstr "" #. type: Plain text -#: puzzles.but:958 +#: puzzles.but:976 msgid "" -"\\W{http://www.nikoli.co.jp/puzzles/1/index_text-e.htm}\\cw{http://www." -"nikoli.co.jp/puzzles/1/index_text-e.htm}" +"\\W{http://www.nikoli.co.jp/en/puzzles/sudoku.html}\\cw{http://www.nikoli.co." +"jp/en/puzzles/sudoku.html} (beware of Flash)" msgstr "" #. type: Plain text -#: puzzles.but:960 +#: puzzles.but:978 msgid "" "\\W{http://en.wikipedia.org/wiki/Sudoku}\\cw{http://en.wikipedia.org/wiki/" "Sudoku}" msgstr "" #. type: Plain text -#: puzzles.but:962 +#: puzzles.but:980 msgid "\\I{controls, for Solo}Solo controls" msgstr "" #. type: Plain text -#: puzzles.but:967 +#: puzzles.but:985 msgid "" "To play Solo, simply click the mouse in any empty square and then type a " "digit or letter on the keyboard to fill that square. If you make a mistake, " @@ -1848,7 +1875,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:972 puzzles.but:2300 puzzles.but:2527 +#: puzzles.but:990 puzzles.but:2336 puzzles.but:2569 msgid "" "If you \\e{right}-click in a square and then type a number, that number will " "be entered in the square as a \\q{pencil mark}. You can have pencil marks " @@ -1857,7 +1884,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:978 puzzles.but:2306 puzzles.but:2533 puzzles.but:2623 +#: puzzles.but:996 puzzles.but:2342 puzzles.but:2575 puzzles.but:2669 msgid "" "The game pays no attention to pencil marks, so exactly what you use them for " "is up to you: you can use them as reminders that a particular square needs " @@ -1867,14 +1894,14 @@ msgstr "" #. type: Plain text -#: puzzles.but:981 puzzles.but:2309 puzzles.but:2536 puzzles.but:2626 +#: puzzles.but:999 puzzles.but:2345 puzzles.but:2578 puzzles.but:2672 msgid "" "To erase a single pencil mark, right-click in the square and type the same " "number again." msgstr "" #. type: Plain text -#: puzzles.but:985 puzzles.but:2313 puzzles.but:2540 puzzles.but:2630 +#: puzzles.but:1003 puzzles.but:2349 puzzles.but:2582 puzzles.but:2676 msgid "" "All pencil marks in a square are erased when you left-click and type a " "number, or when you left-click and press space. Right-clicking and pressing " @@ -1882,7 +1909,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:991 puzzles.but:2324 +#: puzzles.but:1009 puzzles.but:2360 msgid "" "Alternatively, use the cursor keys to move the mark around the grid. " "Pressing the return key toggles the mark (from a normal mark to a pencil " @@ -1891,12 +1918,12 @@ msgstr "" #. type: Plain text -#: puzzles.but:995 +#: puzzles.but:1013 msgid "\\I{parameters, for Solo}Solo parameters" msgstr "" #. type: Plain text -#: puzzles.but:1001 +#: puzzles.but:1019 msgid "" "Solo allows you to configure two separate dimensions of the puzzle grid on " "the \\q{Type} menu: the number of columns, and the number of rows, into " @@ -1906,7 +1933,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1007 +#: puzzles.but:1025 msgid "" "If you tick the \\q{X} checkbox, Solo will apply the optional extra " "constraint that the two main diagonals of the grid also contain one of every " @@ -1916,7 +1943,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1014 +#: puzzles.but:1032 msgid "" "If you tick the \\q{Jigsaw} checkbox, Solo will generate randomly shaped sub-" "blocks. In this mode, the actual grid size will be taken to be the product " @@ -1927,7 +1954,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1019 +#: puzzles.but:1037 msgid "" "If you tick the \\q{Killer} checkbox, Solo will generate a set of of cages, " "which are randomly shaped and drawn in an outline of a different colour. " @@ -1936,7 +1963,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1025 +#: puzzles.but:1043 msgid "" "You can also configure the type of symmetry shown in the generated puzzles. " "More symmetry makes the puzzles look prettier but may also make them easier, " @@ -1946,7 +1973,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1039 +#: puzzles.but:1057 msgid "" "Finally, you can configure the difficulty of the generated puzzles. " "Difficulty levels are judged by the complexity of the techniques of " @@ -1962,7 +1989,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1045 +#: puzzles.but:1063 msgid "" "Generating difficult puzzles is itself difficult: if you select one of the " "higher difficulty levels, Solo may have to make many attempts at generating " @@ -1971,17 +1998,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:1048 +#: puzzles.but:1066 msgid "\\i{Mines}" msgstr "" #. type: Plain text -#: puzzles.but:1050 +#: puzzles.but:1068 msgid "\\cfg{winhelp-topic}{games.mines}" msgstr "" #. type: Plain text -#: puzzles.but:1057 +#: puzzles.but:1075 msgid "" "You have a grid of covered squares, some of which contain mines, but you " "don't know which. Your job is to uncover every square which does \\e{not} " @@ -1991,14 +2018,14 @@ msgstr "" #. type: Plain text -#: puzzles.but:1060 +#: puzzles.but:1078 msgid "" "This game needs no introduction; popularised by Windows, it is perhaps the " "single best known desktop puzzle game in existence." msgstr "" #. type: Plain text -#: puzzles.but:1068 +#: puzzles.but:1086 msgid "" "This version of it has an unusual property. By default, it will generate its " "mine positions in such a way as to ensure that you never need to \\e{guess} " @@ -2009,17 +2036,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:1070 +#: puzzles.but:1088 msgid "\\I{controls, for Mines}Mines controls" msgstr "" #. type: Plain text -#: puzzles.but:1074 +#: puzzles.but:1092 msgid "If you left-click in a covered square, it will be uncovered." msgstr "" #. type: Plain text -#: puzzles.but:1079 +#: puzzles.but:1097 msgid "" "If you right-click in a covered square, it will place a flag which indicates " "that the square is believed to be a mine. Left-clicking in a marked square " @@ -2028,7 +2055,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1087 +#: puzzles.but:1105 msgid "" "If you left-click in an \\e{uncovered} square, it will \\q{clear around} the " "square. This means: if the square has exactly as many flags surrounding it " @@ -2039,7 +2066,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1093 +#: puzzles.but:1111 msgid "" "If you uncover a square which has \\e{no} mines in the surrounding eight " "squares, then it is obviously safe to uncover those squares in turn, and so " @@ -2049,7 +2076,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1099 +#: puzzles.but:1117 msgid "" "You can also use the cursor keys to move around the minefield. Pressing the " "return key in a covered square uncovers it, and in an uncovered square will " @@ -2058,12 +2085,12 @@ msgstr "" #. type: Plain text -#: puzzles.but:1101 +#: puzzles.but:1119 msgid "All the actions described in \\k{common-actions} are also available." msgstr "" #. type: Plain text -#: puzzles.but:1109 +#: puzzles.but:1127 msgid "" "Even Undo is available, although you might consider it cheating to use it. " "If you step on a mine, the program will only reveal the mine in question " @@ -2075,7 +2102,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1113 +#: puzzles.but:1131 msgid "" "(If you really want to know the full layout of the grid, which other " "implementations will show you after you die, you can always use the Solve " @@ -2083,32 +2110,32 @@ msgstr "" #. type: Plain text -#: puzzles.but:1115 +#: puzzles.but:1133 msgid "\\I{parameters, for Mines}Mines parameters" msgstr "" #. type: Plain text -#: puzzles.but:1118 +#: puzzles.but:1136 msgid "" "The options available from the \\q{Custom...} option on the \\q{Type} menu " "are:" msgstr "" #. type: Plain text -#: puzzles.but:1122 puzzles.but:1194 puzzles.but:1267 puzzles.but:1719 -#: puzzles.but:1790 puzzles.but:1886 puzzles.but:2044 puzzles.but:2100 -#: puzzles.but:2209 puzzles.but:2409 puzzles.but:2708 puzzles.but:2857 -#: puzzles.but:2922 puzzles.but:3064 +#: puzzles.but:1140 puzzles.but:1212 puzzles.but:1285 puzzles.but:1748 +#: puzzles.but:1819 puzzles.but:1915 puzzles.but:2071 puzzles.but:2129 +#: puzzles.but:2245 puzzles.but:2450 puzzles.but:2758 puzzles.but:2910 +#: puzzles.but:2978 puzzles.but:3127 puzzles.but:3341 msgid "Size of grid in squares." msgstr "" #. type: e{#1} -#: puzzles.but:1124 +#: puzzles.but:1142 msgid "Mines" msgstr "" #. type: Plain text -#: puzzles.but:1129 +#: puzzles.but:1147 msgid "" "Number of mines in the grid. You can enter this as an absolute mine count, " "or alternatively you can put a \\cw{%} sign on the end in which case the " @@ -2116,19 +2143,19 @@ msgstr "" #. type: Plain text -#: puzzles.but:1136 +#: puzzles.but:1154 msgid "" "Beware of setting the mine count too high. At very high densities, the " "program may spend forever searching for a solvable grid." msgstr "" #. type: e{#1} -#: puzzles.but:1138 puzzles.but:1210 +#: puzzles.but:1156 puzzles.but:1228 msgid "Ensure solubility" msgstr "" #. type: Plain text -#: puzzles.but:1143 +#: puzzles.but:1161 msgid "" "When this option is enabled (as it is by default), Mines will ensure that " "the entire grid can be fully deduced starting from the initial open space. " @@ -2137,17 +2164,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:1146 +#: puzzles.but:1164 msgid "\\i{Same Game}" msgstr "" #. type: Plain text -#: puzzles.but:1148 +#: puzzles.but:1166 msgid "\\cfg{winhelp-topic}{games.samegame}" msgstr "" #. type: Plain text -#: puzzles.but:1153 +#: puzzles.but:1171 msgid "" "You have a grid of coloured squares, which you have to clear by highlighting " "contiguous regions of more than one coloured square; the larger the region " @@ -2155,14 +2182,14 @@ msgstr "" #. type: Plain text -#: puzzles.but:1157 +#: puzzles.but:1175 msgid "" "If you clear the grid you win. If you end up with nothing but single squares " "(i.e., there are no more clickable regions left) you lose." msgstr "" #. type: Plain text -#: puzzles.but:1161 +#: puzzles.but:1179 msgid "" "Removing a region causes the rest of the grid to shuffle up: blocks that are " "suspended will fall down (first), and then empty columns are filled from the " @@ -2170,59 +2197,59 @@ msgstr "" #. type: Plain text -#: puzzles.but:1163 +#: puzzles.but:1181 msgid "Same Game was contributed to this collection by James Harvey." msgstr "" #. type: Plain text -#: puzzles.but:1165 +#: puzzles.but:1183 msgid "\\i{Same Game controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:1166 puzzles.but:1167 puzzles.but:1168 +#: puzzles.but:1184 puzzles.but:1185 puzzles.but:1186 msgid "Same Game controls" msgstr "" #. type: IM -#: puzzles.but:1166 +#: puzzles.but:1184 #, no-wrap msgid "controls, for Same Game" msgstr "" #. type: IM -#: puzzles.but:1167 +#: puzzles.but:1185 #, no-wrap msgid "keys, for Same Game" msgstr "" #. type: IM -#: puzzles.but:1168 +#: puzzles.but:1186 #, no-wrap msgid "shortcuts (keyboard), for Same Game" msgstr "" #. type: Plain text -#: puzzles.but:1174 +#: puzzles.but:1192 msgid "" "If you left-click an unselected region, it becomes selected (possibly " "clearing the current selection)." msgstr "" #. type: Plain text -#: puzzles.but:1177 +#: puzzles.but:1195 msgid "" "If you left-click the selected region, it will be removed (and the rest of " "the grid shuffled immediately)." msgstr "" #. type: Plain text -#: puzzles.but:1179 +#: puzzles.but:1197 msgid "If you right-click the selected region, it will be unselected." msgstr "" #. type: Plain text -#: puzzles.but:1183 +#: puzzles.but:1201 msgid "" "The cursor keys move a cursor around the grid. Pressing the Space or Enter " "keys while the cursor is in an unselected region selects it; pressing Space " @@ -2230,17 +2257,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:1187 +#: puzzles.but:1205 msgid "\\I{parameters, for Same Game}Same Game parameters" msgstr "" #. type: e{#1} -#: puzzles.but:1196 +#: puzzles.but:1214 msgid "No. of colours" msgstr "" #. type: Plain text -#: puzzles.but:1200 +#: puzzles.but:1218 msgid "" "Number of different colours used to fill the grid; the more colours, the " "fewer large regions of colour and thus the more difficult it is to " @@ -2248,28 +2275,28 @@ msgstr "" #. type: e{#1} -#: puzzles.but:1202 +#: puzzles.but:1220 msgid "Scoring system" msgstr "" #. type: Plain text -#: puzzles.but:1208 +#: puzzles.but:1226 msgid "" -"Controls the precise mechanism used for scoring. With the default system, \\q" -"{(n-2)^2}, only regions of three squares or more will score any points at " +"Controls the precise mechanism used for scoring. With the default system, " +"\\q{(n-2)^2}, only regions of three squares or more will score any points at " "all. With the alternative \\q{(n-1)^2} system, regions of two squares score " "a point each, and larger regions score relatively more points." msgstr "" #. type: Plain text -#: puzzles.but:1213 +#: puzzles.but:1231 msgid "" "If this option is ticked (the default state), generated grids will be " "guaranteed to have at least one solution." msgstr "" #. type: Plain text -#: puzzles.but:1225 +#: puzzles.but:1243 msgid "" "If you turn it off, the game generator will not try to guarantee soluble " "grids; it will, however, still ensure that there are at least 2 squares of " @@ -2280,17 +2307,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:1228 +#: puzzles.but:1246 msgid "\\i{Flip}" msgstr "" #. type: Plain text -#: puzzles.but:1230 +#: puzzles.but:1248 msgid "\\cfg{winhelp-topic}{games.flip}" msgstr "" #. type: Plain text -#: puzzles.but:1235 +#: puzzles.but:1253 msgid "" "You have a grid of squares, some light and some dark. Your aim is to light " "all the squares up at the same time. You can choose any square and flip its " @@ -2299,49 +2326,49 @@ msgstr "" #. type: Plain text -#: puzzles.but:1238 +#: puzzles.but:1256 msgid "" "Each square contains a small diagram showing which other squares change when " "you flip it." msgstr "" #. type: Plain text -#: puzzles.but:1240 +#: puzzles.but:1258 msgid "\\i{Flip controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:1241 puzzles.but:1242 puzzles.but:1243 +#: puzzles.but:1259 puzzles.but:1260 puzzles.but:1261 msgid "Flip controls" msgstr "" #. type: IM -#: puzzles.but:1241 +#: puzzles.but:1259 #, no-wrap msgid "controls, for Flip" msgstr "" #. type: IM -#: puzzles.but:1242 +#: puzzles.but:1260 #, no-wrap msgid "keys, for Flip" msgstr "" #. type: IM -#: puzzles.but:1243 +#: puzzles.but:1261 #, no-wrap msgid "shortcuts (keyboard), for Flip" msgstr "" #. type: Plain text -#: puzzles.but:1250 +#: puzzles.but:1268 msgid "" "Left-click in a square to flip it and its associated squares, or use the " "cursor keys to choose a square and the space bar or Enter key to flip." msgstr "" #. type: Plain text -#: puzzles.but:1256 +#: puzzles.but:1274 msgid "" "If you use the \\q{Solve} function on this game, it will mark some of the " "squares in red. If you click once in every square with a red mark, the game " @@ -2351,17 +2378,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:1260 +#: puzzles.but:1278 msgid "\\I{parameters, for flip}Flip parameters" msgstr "" #. type: e{#1} -#: puzzles.but:1269 +#: puzzles.but:1287 msgid "Shape type" msgstr "" #. type: Plain text -#: puzzles.but:1276 +#: puzzles.but:1294 msgid "" "This control determines the shape of the region which is flipped by clicking " "in any given square. The default setting, \\q{Crosses}, causes every square " @@ -2371,24 +2398,24 @@ msgstr "" #. type: Plain text -#: puzzles.but:1279 +#: puzzles.but:1297 msgid "\\i{Guess}" msgstr "" #. type: Plain text -#: puzzles.but:1281 +#: puzzles.but:1299 msgid "\\cfg{winhelp-topic}{games.guess}" msgstr "" #. type: Plain text -#: puzzles.but:1285 +#: puzzles.but:1303 msgid "" "You have a set of coloured pegs, and have to reproduce a predetermined " "sequence of them (chosen by the computer) within a certain number of guesses." msgstr "" #. type: Plain text -#: puzzles.but:1289 +#: puzzles.but:1307 msgid "" "Each guess gets marked with the number of correctly-coloured pegs in the " "correct places (in black), and also the number of correctly-coloured pegs in " @@ -2396,49 +2423,49 @@ msgstr "" #. type: Plain text -#: puzzles.but:1294 +#: puzzles.but:1312 msgid "" -"This game is also known (and marketed, by Hasbro, mainly) as a board game \\q" -"{\\i{Mastermind}}, with 6 colours, 4 pegs per row, and 10 guesses. However, " -"this version allows custom settings of number of colours (up to 10), number " -"of pegs per row, and number of guesses." +"This game is also known (and marketed, by Hasbro, mainly) as a board game " +"\\q{\\i{Mastermind}}, with 6 colours, 4 pegs per row, and 10 guesses. " +"However, this version allows custom settings of number of colours (up to " +"10), number of pegs per row, and number of guesses." msgstr "" #. type: Plain text -#: puzzles.but:1296 +#: puzzles.but:1314 msgid "Guess was contributed to this collection by James Harvey." msgstr "" #. type: Plain text -#: puzzles.but:1298 +#: puzzles.but:1316 msgid "\\i{Guess controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:1299 puzzles.but:1300 puzzles.but:1301 +#: puzzles.but:1317 puzzles.but:1318 puzzles.but:1319 msgid "Guess controls" msgstr "" #. type: IM -#: puzzles.but:1299 +#: puzzles.but:1317 #, no-wrap msgid "controls, for Guess" msgstr "" #. type: IM -#: puzzles.but:1300 +#: puzzles.but:1318 #, no-wrap msgid "keys, for Guess" msgstr "" #. type: IM -#: puzzles.but:1301 +#: puzzles.but:1319 #, no-wrap msgid "shortcuts (keyboard), for Guess" msgstr "" #. type: Plain text -#: puzzles.but:1309 +#: puzzles.but:1327 msgid "" "With the mouse, drag a coloured peg from the tray on the left-hand side to " "its required position in the current guess; pegs may also be dragged from " @@ -2447,24 +2474,31 @@ msgstr "" #. type: Plain text -#: puzzles.but:1313 +#: puzzles.but:1331 msgid "" "Right-clicking in the current guess adds a \\q{hold} marker; pegs that have " "hold markers will be automatically added to the next guess after marking." msgstr "" #. type: Plain text -#: puzzles.but:1319 +#: puzzles.but:1337 msgid "" "Alternatively, with the keyboard, the up and down cursor keys can be used to " "select a peg colour, the left and right keys to select a peg position, and " "the space bar or Enter key to place a peg of the selected colour in the " -"chosen position. \\q{D} or Backspace removes a peg, and \\q{H} adds a hold " +"chosen position. \\q{D} or Backspace removes a peg, and Space adds a hold " "marker." msgstr "" #. type: Plain text -#: puzzles.but:1325 +#: puzzles.but:1341 +msgid "" +"Pressing \\q{h} or \\q{?} will fill the current guess with a suggested " +"guess. Using this is not recommended for 10 or more pegs as it is slow." +msgstr "" + +#. type: Plain text +#: puzzles.but:1347 msgid "" "When the guess is complete, the smaller feedback pegs will be highlighted; " "clicking on these (or moving the peg cursor to them with the arrow keys and " @@ -2473,7 +2507,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1329 +#: puzzles.but:1351 msgid "" "If you correctly position all the pegs the solution will be displayed below; " "if you run out of guesses (or select \\q{Solve...}) the solution will also " @@ -2481,56 +2515,56 @@ msgstr "" #. type: Plain text -#: puzzles.but:1333 +#: puzzles.but:1355 msgid "\\I{parameters, for Guess}Guess parameters" msgstr "" #. type: Plain text -#: puzzles.but:1337 +#: puzzles.but:1359 msgid "" -"These parameters are available from the \\q{Custom...} option on the \\q" -"{Type} menu. The default game matches the parameters for the board game \\q" -"{Mastermind}." +"These parameters are available from the \\q{Custom...} option on the " +"\\q{Type} menu. The default game matches the parameters for the board game " +"\\q{Mastermind}." msgstr "" #. type: e{#1} -#: puzzles.but:1339 +#: puzzles.but:1361 puzzles.but:3226 msgid "Colours" msgstr "" #. type: Plain text -#: puzzles.but:1342 +#: puzzles.but:1364 msgid "" "Number of colours the solution is chosen from; from 2 to 10 (more is harder)." msgstr "" #. type: e{#1} -#: puzzles.but:1344 +#: puzzles.but:1366 msgid "Pegs per guess" msgstr "" #. type: Plain text -#: puzzles.but:1346 +#: puzzles.but:1368 msgid "Number of pegs per guess (more is harder)." msgstr "" #. type: e{#1} -#: puzzles.but:1348 +#: puzzles.but:1370 msgid "Guesses" msgstr "" #. type: Plain text -#: puzzles.but:1350 +#: puzzles.but:1372 msgid "Number of guesses you have to find the solution in (fewer is harder)." msgstr "" #. type: e{#1} -#: puzzles.but:1352 +#: puzzles.but:1374 msgid "Allow blanks" msgstr "" #. type: Plain text -#: puzzles.but:1356 +#: puzzles.but:1378 msgid "" "Allows blank pegs to be given as part of a guess (makes it easier, because " "you know that those will never be counted as part of the solution). This is " @@ -2538,19 +2572,19 @@ msgstr "" #. type: Plain text -#: puzzles.but:1363 +#: puzzles.but:1385 msgid "" "Note that this doesn't allow blank pegs in the solution; if you really " "wanted that, use one extra colour." msgstr "" #. type: e{#1} -#: puzzles.but:1365 +#: puzzles.but:1387 msgid "Allow duplicates" msgstr "" #. type: Plain text -#: puzzles.but:1369 +#: puzzles.but:1391 msgid "" "Allows the solution (and the guesses) to contain colours more than once; " "this increases the search space (making things harder), and is turned on by " @@ -2558,17 +2592,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:1372 +#: puzzles.but:1394 msgid "\\i{Pegs}" msgstr "" #. type: Plain text -#: puzzles.but:1374 +#: puzzles.but:1396 msgid "\\cfg{winhelp-topic}{games.pegs}" msgstr "" #. type: Plain text -#: puzzles.but:1379 +#: puzzles.but:1401 msgid "" "A number of pegs are placed in holes on a board. You can remove a peg by " "jumping an adjacent peg over it (horizontally or vertically) to a vacant " @@ -2577,30 +2611,30 @@ msgstr "" #. type: Plain text -#: puzzles.but:1382 +#: puzzles.but:1404 msgid "" "This game, best known as \\I{Solitaire, Peg}\\q{Peg Solitaire}, is possibly " "one of the oldest puzzle games still commonly known." msgstr "" #. type: Plain text -#: puzzles.but:1384 +#: puzzles.but:1406 msgid "\\i{Pegs controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:1385 +#: puzzles.but:1407 msgid "Pegs controls" msgstr "" #. type: IM -#: puzzles.but:1385 +#: puzzles.but:1407 #, no-wrap msgid "controls, for Pegs" msgstr "" #. type: Plain text -#: puzzles.but:1392 +#: puzzles.but:1414 msgid "" "To move a peg, drag it with the mouse from its current position to its final " "position. If the final position is exactly two holes away from the initial " @@ -2610,7 +2644,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1396 +#: puzzles.but:1418 msgid "" "Vacant spaces which you can move a peg into are marked with holes. A space " "with no peg and no hole is not available for moving at all: it is an " @@ -2618,7 +2652,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1401 +#: puzzles.but:1423 msgid "" "You can also use the cursor keys to move a position indicator around the " "board. Pressing the return key while over a peg, followed by a cursor key, " @@ -2626,22 +2660,22 @@ msgstr "" #. type: Plain text -#: puzzles.but:1405 +#: puzzles.but:1427 msgid "\\I{parameters, for Pegs}Pegs parameters" msgstr "" #. type: Plain text -#: puzzles.but:1412 +#: puzzles.but:1434 msgid "Size of grid in holes." msgstr "" #. type: e{#1} -#: puzzles.but:1414 +#: puzzles.but:1436 msgid "Board type" msgstr "" #. type: Plain text -#: puzzles.but:1421 +#: puzzles.but:1443 msgid "" "Controls whether you are given a board of a standard shape or a randomly " "generated shape. The two standard shapes currently supported are \\q{Cross} " @@ -2652,17 +2686,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:1424 +#: puzzles.but:1446 msgid "\\i{Dominosa}" msgstr "" #. type: Plain text -#: puzzles.but:1426 +#: puzzles.but:1448 msgid "\\cfg{winhelp-topic}{games.dominosa}" msgstr "" #. type: Plain text -#: puzzles.but:1433 +#: puzzles.but:1455 msgid "" "A normal set of dominoes \\dash that is, one instance of every (unordered) " "pair of numbers from 0 to 6 \\dash has been arranged irregularly into a " @@ -2672,30 +2706,30 @@ msgstr "" #. type: Plain text -#: puzzles.but:1436 +#: puzzles.but:1458 msgid "" "This puzzle is widely credited to O. S. Adler, and takes part of its name " "from those initials." msgstr "" #. type: Plain text -#: puzzles.but:1438 +#: puzzles.but:1460 msgid "\\i{Dominosa controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:1439 +#: puzzles.but:1461 msgid "Dominosa controls" msgstr "" #. type: IM -#: puzzles.but:1439 +#: puzzles.but:1461 #, no-wrap msgid "controls, for Dominosa" msgstr "" #. type: Plain text -#: puzzles.but:1445 +#: puzzles.but:1467 msgid "" "Left-clicking between any two adjacent numbers places a domino covering " "them, or removes one if it is already present. Trying to place a domino " @@ -2703,7 +2737,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1450 +#: puzzles.but:1472 msgid "" "Right-clicking between two adjacent numbers draws a line between them, which " "you can use to remind yourself that you know those two numbers are \\e{not} " @@ -2711,7 +2745,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1456 +#: puzzles.but:1478 msgid "" "You can also use the cursor keys to move a cursor around the grid. When the " "cursor is half way between two adjacent numbers, pressing the return key " @@ -2721,17 +2755,25 @@ msgstr "" #. type: Plain text -#: puzzles.but:1460 +#: puzzles.but:1482 +msgid "" +"Pressing a number key will highlight all occurrences of that number. " +"Pressing that number again will clear the highlighting. Up to two different " +"numbers can be highlighted at any given time." +msgstr "" + +#. type: Plain text +#: puzzles.but:1486 msgid "\\I{parameters, for Dominosa}Dominosa parameters" msgstr "" #. type: e{#1} -#: puzzles.but:1465 +#: puzzles.but:1491 msgid "Maximum number on dominoes" msgstr "" #. type: Plain text -#: puzzles.but:1470 +#: puzzles.but:1496 msgid "" "Controls the size of the puzzle, by controlling the size of the set of " "dominoes used to make it. Dominoes with numbers going up to N will give rise " @@ -2740,7 +2782,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1479 +#: puzzles.but:1505 msgid "" "Normally, Dominosa will make sure that the puzzles it presents have only one " "solution. Puzzles with ambiguous sections can be more difficult and " @@ -2751,17 +2793,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:1482 +#: puzzles.but:1508 msgid "\\i{Untangle}" msgstr "" #. type: Plain text -#: puzzles.but:1484 +#: puzzles.but:1510 msgid "\\cfg{winhelp-topic}{games.untangle}" msgstr "" #. type: Plain text -#: puzzles.but:1488 +#: puzzles.but:1514 msgid "" "You are given a number of points, some of which have lines drawn between " "them. You can move the points about arbitrarily; your aim is to position the " @@ -2769,78 +2811,76 @@ msgstr "" #. type: Plain text -#: puzzles.but:1491 +#: puzzles.but:1517 msgid "" -"I originally saw this in the form of a Flash game called \\i{Planarity} \\k" -"{Planarity}, written by John Tantalo." +"I originally saw this in the form of a Flash game called \\i{Planarity} " +"\\k{Planarity}, written by John Tantalo." msgstr "" #. type: Plain text -#: puzzles.but:1493 -msgid "" -"\\W{http://home.cwru.edu/~jnt5/Planarity}\\cw{http://home.cwru.edu/~jnt5/" -"Planarity}" +#: puzzles.but:1519 +msgid "\\W{http://planarity.net}\\cw{http://planarity.net}" msgstr "" #. type: Plain text -#: puzzles.but:1495 +#: puzzles.but:1521 msgid "\\i{Untangle controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:1496 +#: puzzles.but:1522 msgid "Untangle controls" msgstr "" #. type: IM -#: puzzles.but:1496 +#: puzzles.but:1522 #, no-wrap msgid "controls, for Untangle" msgstr "" #. type: Plain text -#: puzzles.but:1500 +#: puzzles.but:1526 msgid "" "To move a point, click on it with the left mouse button and drag it into a " "new position." msgstr "" #. type: Plain text -#: puzzles.but:1504 +#: puzzles.but:1530 msgid "\\I{parameters, for Untangle}Untangle parameters" msgstr "" #. type: Plain text -#: puzzles.but:1507 +#: puzzles.but:1533 msgid "" "There is only one parameter available from the \\q{Custom...} option on the " "\\q{Type} menu:" msgstr "" #. type: e{#1} -#: puzzles.but:1509 +#: puzzles.but:1535 msgid "Number of points" msgstr "" #. type: Plain text -#: puzzles.but:1512 +#: puzzles.but:1538 msgid "" "Controls the size of the puzzle, by specifying the number of points in the " "generated graph." msgstr "" #. type: Plain text -#: puzzles.but:1515 +#: puzzles.but:1541 msgid "\\i{Black Box}" msgstr "" #. type: Plain text -#: puzzles.but:1517 +#: puzzles.but:1543 msgid "\\cfg{winhelp-topic}{games.blackbox}" msgstr "" #. type: Plain text -#: puzzles.but:1521 +#: puzzles.but:1547 msgid "" "A number of balls are hidden in a rectangular arena. You have to deduce the " "positions of the balls by firing lasers positioned at the edges of the arena " @@ -2848,7 +2888,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1525 +#: puzzles.but:1551 msgid "" "Beams will travel straight from their origin until they hit the opposite " "side of the arena (at which point they emerge), unless affected by balls in " @@ -2856,43 +2896,43 @@ msgstr "" #. type: Plain text -#: puzzles.but:1529 +#: puzzles.but:1555 msgid "" "A beam that hits a ball head-on is absorbed and will never re-emerge. This " "includes beams that meet a ball on the first rank of the arena." msgstr "" #. type: Plain text -#: puzzles.but:1532 +#: puzzles.but:1558 msgid "" "A beam with a ball to its front-left square gets deflected 90 degrees to the " "right." msgstr "" #. type: Plain text -#: puzzles.but:1535 +#: puzzles.but:1561 msgid "" "A beam with a ball to its front-right square gets similarly deflected to the " "left." msgstr "" #. type: Plain text -#: puzzles.but:1538 +#: puzzles.but:1564 msgid "" -"A beam that would re-emerge from its entry location is considered to be \\q" -"{reflected}." +"A beam that would re-emerge from its entry location is considered to be " +"\\q{reflected}." msgstr "" #. type: Plain text -#: puzzles.but:1542 +#: puzzles.but:1568 msgid "" "A beam which would get deflected before entering the arena by a ball to the " -"front-left or front-right of its entry point is also considered to be \\q" -"{reflected}." +"front-left or front-right of its entry point is also considered to be " +"\\q{reflected}." msgstr "" #. type: Plain text -#: puzzles.but:1547 +#: puzzles.but:1573 msgid "" "Beams that are reflected appear as a \\q{R}; beams that hit balls head-on " "appear as \\q{H}. Otherwise, a number appears at the firing point and the " @@ -2900,7 +2940,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1551 +#: puzzles.but:1577 msgid "" "You can place guesses as to the location of the balls, based on the entry " "and exit patterns of the beams; once you have placed enough balls a button " @@ -2908,69 +2948,69 @@ msgstr "" #. type: Plain text -#: puzzles.but:1554 +#: puzzles.but:1580 msgid "" "Here is a diagram showing how the positions of balls can create each of the " "beam behaviours shown above:" msgstr "" #. type: c -#: puzzles.but:1555 +#: puzzles.but:1581 #, no-wrap msgid "1RHR----" msgstr "" #. type: c -#: puzzles.but:1556 +#: puzzles.but:1582 #, no-wrap msgid "|..O.O...|" msgstr "" #. type: c -#: puzzles.but:1557 +#: puzzles.but:1583 #, no-wrap msgid "2........3" msgstr "" #. type: c -#: puzzles.but:1558 puzzles.but:1559 puzzles.but:1577 puzzles.but:1578 -#: puzzles.but:1583 puzzles.but:1584 +#: puzzles.but:1584 puzzles.but:1585 puzzles.but:1603 puzzles.but:1604 +#: puzzles.but:1609 puzzles.but:1610 #, no-wrap msgid "|........|" msgstr "" #. type: c -#: puzzles.but:1560 +#: puzzles.but:1586 #, no-wrap msgid "3........|" msgstr "" #. type: c -#: puzzles.but:1561 +#: puzzles.but:1587 #, no-wrap msgid "|......O.|" msgstr "" #. type: c -#: puzzles.but:1562 +#: puzzles.but:1588 #, no-wrap msgid "H........|" msgstr "" #. type: c -#: puzzles.but:1563 +#: puzzles.but:1589 #, no-wrap msgid "|.....O..|" msgstr "" #. type: c -#: puzzles.but:1564 +#: puzzles.but:1590 #, no-wrap -msgid "12-RH---" +msgid "12-RR---" msgstr "" #. type: Plain text -#: puzzles.but:1570 +#: puzzles.but:1596 msgid "" "As shown, it is possible for a beam to receive multiple reflections before " "re-emerging (see turn 3). Similarly, a beam may be reflected (possibly more " @@ -2979,7 +3019,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1575 +#: puzzles.but:1601 msgid "" "Note that any layout with more than 4 balls may have a non-unique solution. " "The following diagram illustrates this; if you know the board contains 5 " @@ -2988,25 +3028,25 @@ msgstr "" #. type: c -#: puzzles.but:1576 puzzles.but:1585 +#: puzzles.but:1602 puzzles.but:1611 #, no-wrap msgid "--------" msgstr "" #. type: c -#: puzzles.but:1579 puzzles.but:1582 +#: puzzles.but:1605 puzzles.but:1608 #, no-wrap msgid "|..O..O..|" msgstr "" #. type: c -#: puzzles.but:1580 puzzles.but:1581 +#: puzzles.but:1606 puzzles.but:1607 #, no-wrap msgid "|...xx...|" msgstr "" #. type: Plain text -#: puzzles.but:1593 +#: puzzles.but:1619 msgid "" "For this reason, when you have your guesses checked, the game will check " "that your solution \\e{produces the same results} as the computer's, rather " @@ -3016,40 +3056,40 @@ msgstr "" #. type: Plain text -#: puzzles.but:1595 +#: puzzles.but:1621 msgid "Black Box was contributed to this collection by James Harvey." msgstr "" #. type: Plain text -#: puzzles.but:1597 +#: puzzles.but:1623 msgid "\\i{Black Box controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:1598 puzzles.but:1599 puzzles.but:1600 +#: puzzles.but:1624 puzzles.but:1625 puzzles.but:1626 msgid "Black Box controls" msgstr "" #. type: IM -#: puzzles.but:1598 +#: puzzles.but:1624 #, no-wrap msgid "controls, for Black Box" msgstr "" #. type: IM -#: puzzles.but:1599 +#: puzzles.but:1625 #, no-wrap msgid "keys, for Black Box" msgstr "" #. type: IM -#: puzzles.but:1600 +#: puzzles.but:1626 #, no-wrap msgid "shortcuts (keyboard), for Black Box" msgstr "" #. type: Plain text -#: puzzles.but:1607 +#: puzzles.but:1633 msgid "" "To fire a laser beam, left-click in a square around the edge of the arena. " "The results will be displayed immediately. Clicking or holding the left " @@ -3058,14 +3098,14 @@ msgstr "" #. type: Plain text -#: puzzles.but:1611 +#: puzzles.but:1637 msgid "" "To guess the location of a ball, left-click within the arena and a black " "circle will appear marking the guess; click again to remove the guessed ball." msgstr "" #. type: Plain text -#: puzzles.but:1616 +#: puzzles.but:1642 msgid "" "Locations in the arena may be locked against modification by right-clicking; " "whole rows and columns may be similarly locked by right-clicking in the " @@ -3073,7 +3113,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1620 +#: puzzles.but:1646 msgid "" "The cursor keys may also be used to move around the grid. Pressing the Enter " "key will fire a laser or add a new ball-location guess, and pressing Space " @@ -3081,7 +3121,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1624 +#: puzzles.but:1650 msgid "" "When an appropriate number of balls have been guessed, a button will appear " "at the top-left corner of the grid; clicking that (with mouse or cursor) " @@ -3089,7 +3129,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1633 +#: puzzles.but:1659 msgid "" "If you click the \\q{check} button and your guesses are not correct, the " "game will show you the minimum information necessary to demonstrate this to " @@ -3101,7 +3141,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1643 +#: puzzles.but:1669 msgid "" "If you decide to give up completely, you can select Solve to reveal the " "actual ball positions. At this point, correctly-placed balls will be " @@ -3114,24 +3154,24 @@ msgstr "" #. type: Plain text -#: puzzles.but:1647 +#: puzzles.but:1673 msgid "\\I{parameters, for Black Box}Black Box parameters" msgstr "" #. type: Plain text -#: puzzles.but:1655 +#: puzzles.but:1681 msgid "" "Size of grid in squares. There are 2 \\by \\e{Width} \\by \\e{Height} lasers " "per grid, two per row and two per column." msgstr "" #. type: e{#1} -#: puzzles.but:1657 +#: puzzles.but:1683 msgid "No. of balls" msgstr "" #. type: Plain text -#: puzzles.but:1664 +#: puzzles.but:1690 msgid "" "Number of balls to place in the grid. This can be a single number, or a " "range (separated with a hyphen, like \\q{2-6}), and determines the number of " @@ -3142,17 +3182,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:1667 +#: puzzles.but:1693 msgid "\\i{Slant}" msgstr "" #. type: Plain text -#: puzzles.but:1669 +#: puzzles.but:1695 msgid "\\cfg{winhelp-topic}{games.slant}" msgstr "" #. type: Plain text -#: puzzles.but:1673 +#: puzzles.but:1699 msgid "" "You have a grid of squares. Your aim is to draw a diagonal line through each " "square, and choose which way each line slants so that the following " @@ -3160,12 +3200,12 @@ msgstr "" #. type: Plain text -#: puzzles.but:1675 +#: puzzles.but:1701 msgid "The diagonal lines never form a loop." msgstr "" #. type: Plain text -#: puzzles.but:1681 +#: puzzles.but:1707 msgid "" "Any point with a circled number has precisely that many lines meeting at it. " "(Thus, a 4 is the centre of a cross shape, whereas a zero is the centre of a " @@ -3175,35 +3215,35 @@ msgstr "" #. type: Plain text -#: puzzles.but:1683 +#: puzzles.but:1709 msgid "Credit for this puzzle goes to \\i{Nikoli} \\k{nikoli-slant}." msgstr "" #. type: Plain text -#: puzzles.but:1687 +#: puzzles.but:1713 msgid "" -"\\W{http://www.nikoli.co.jp/puzzles/39/index.htm}\\cw{http://www.nikoli.co." -"jp/puzzles/39/index.htm} (in Japanese)" +"\\W{http://www.nikoli.co.jp/ja/puzzles/gokigen_naname}\\cw{http://www.nikoli." +"co.jp/ja/puzzles/gokigen_naname} (in Japanese)" msgstr "" #. type: Plain text -#: puzzles.but:1689 +#: puzzles.but:1715 msgid "\\i{Slant controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:1690 +#: puzzles.but:1716 msgid "Slant controls" msgstr "" #. type: IM -#: puzzles.but:1690 +#: puzzles.but:1716 #, no-wrap msgid "controls, for Slant" msgstr "" #. type: Plain text -#: puzzles.but:1697 +#: puzzles.but:1723 msgid "" "Left-clicking in a blank square will place a \\cw{\\\\} in it (a line " "leaning to the left, i.e. running from the top left of the square to the " @@ -3212,39 +3252,41 @@ msgstr "" #. type: Plain text -#: puzzles.but:1704 +#: puzzles.but:1730 msgid "" "Continuing to click either button will cycle between the three possible " "square contents. Thus, if you left-click repeatedly in a blank square it " "will change from blank to \\cw{\\\\} to \\cw{/} back to blank, and if you " -"right-click repeatedly the square will change from blank to \\cw{/} to \\cw" -"{\\\\} back to blank. (Therefore, you can play the game entirely with one " -"button if you need to.)" +"right-click repeatedly the square will change from blank to \\cw{/} to " +"\\cw{\\\\} back to blank. (Therefore, you can play the game entirely with " +"one button if you need to.)" msgstr "" #. type: Plain text -#: puzzles.but:1708 +#: puzzles.but:1737 msgid "" "You can also use the cursor keys to move around the grid. Pressing the " "return or space keys will place a \\cw{\\\\} or a \\cw{/}, respectively, and " -"will then cycle them as above." +"will then cycle them as above. You can also press \\cw{/} or \\cw{\\\\} to " +"place a \\cw{/} or \\cw{\\\\}, respectively, independent of what is already " +"in the cursor square. Backspace removes any line from the cursor square." msgstr "" #. type: Plain text -#: puzzles.but:1712 +#: puzzles.but:1741 msgid "\\I{parameters, for Slant}Slant parameters" msgstr "" #. type: e{#1} -#: puzzles.but:1721 puzzles.but:1810 puzzles.but:1892 puzzles.but:1976 -#: puzzles.but:2102 puzzles.but:2211 puzzles.but:2341 puzzles.but:2411 -#: puzzles.but:2564 puzzles.but:2654 puzzles.but:2710 puzzles.but:2776 -#: puzzles.but:3066 puzzles.but:3113 +#: puzzles.but:1750 puzzles.but:1839 puzzles.but:1921 puzzles.but:2005 +#: puzzles.but:2131 puzzles.but:2247 puzzles.but:2382 puzzles.but:2452 +#: puzzles.but:2606 puzzles.but:2704 puzzles.but:2760 puzzles.but:2829 +#: puzzles.but:3129 puzzles.but:3176 puzzles.but:3290 msgid "Difficulty" msgstr "" #. type: Plain text -#: puzzles.but:1730 +#: puzzles.but:1759 msgid "" "Controls the difficulty of the generated puzzle. At Hard level, you are " "required to do deductions based on knowledge of \\e{relationships} between " @@ -3256,17 +3298,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:1733 +#: puzzles.but:1762 msgid "\\i{Light Up}" msgstr "" #. type: Plain text -#: puzzles.but:1735 +#: puzzles.but:1764 msgid "\\cfg{winhelp-topic}{games.lightup}" msgstr "" #. type: Plain text -#: puzzles.but:1739 +#: puzzles.but:1768 msgid "" "You have a grid of squares. Some are filled in black; some of the black " "squares are numbered. Your aim is to \\q{light up} all the empty squares by " @@ -3274,75 +3316,75 @@ msgstr "" #. type: Plain text -#: puzzles.but:1743 +#: puzzles.but:1772 msgid "" "Each light bulb illuminates the square it is on, plus all squares in line " "with it horizontally or vertically unless a black square is blocking the way." msgstr "" #. type: Plain text -#: puzzles.but:1745 +#: puzzles.but:1774 msgid "To win the game, you must satisfy the following conditions:" msgstr "" #. type: Plain text -#: puzzles.but:1747 +#: puzzles.but:1776 msgid "All non-black squares are lit." msgstr "" #. type: Plain text -#: puzzles.but:1749 +#: puzzles.but:1778 msgid "No light is lit by another light." msgstr "" #. type: Plain text -#: puzzles.but:1752 +#: puzzles.but:1781 msgid "" "All numbered black squares have exactly that number of lights adjacent to " "them (in the four squares above, below, and to the side)." msgstr "" #. type: Plain text -#: puzzles.but:1754 +#: puzzles.but:1783 msgid "" "Non-numbered black squares may have any number of lights adjacent to them." msgstr "" #. type: Plain text -#: puzzles.but:1756 +#: puzzles.but:1785 msgid "Credit for this puzzle goes to \\i{Nikoli} \\k{nikoli-lightup}." msgstr "" #. type: Plain text -#: puzzles.but:1758 +#: puzzles.but:1787 msgid "Light Up was contributed to this collection by James Harvey." msgstr "" #. type: Plain text -#: puzzles.but:1762 +#: puzzles.but:1791 msgid "" -"\\W{http://www.nikoli.co.jp/puzzles/32/index-e.htm}\\cw{http://www.nikoli.co." -"jp/puzzles/32/index-e.htm} (beware of Flash)" +"\\W{http://www.nikoli.co.jp/en/puzzles/akari.html}\\cw{http://www.nikoli.co." +"jp/en/puzzles/akari.html} (beware of Flash)" msgstr "" #. type: Plain text -#: puzzles.but:1764 +#: puzzles.but:1793 msgid "\\i{Light Up controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:1765 +#: puzzles.but:1794 msgid "Light Up controls" msgstr "" #. type: IM -#: puzzles.but:1765 +#: puzzles.but:1794 #, no-wrap msgid "controls, for Light Up" msgstr "" #. type: Plain text -#: puzzles.but:1770 +#: puzzles.but:1799 msgid "" "Left-clicking in a non-black square will toggle the presence of a light in " "that square. Right-clicking in a non-black square toggles a mark there to " @@ -3351,14 +3393,14 @@ msgstr "" #. type: Plain text -#: puzzles.but:1772 +#: puzzles.but:1801 msgid "" "You may not place a light in a marked square, nor place a mark in a lit " "square." msgstr "" #. type: Plain text -#: puzzles.but:1776 +#: puzzles.but:1805 msgid "" "The game will highlight obvious errors in red. Lights lit by other lights " "are highlighted in this way, as are numbered squares which do not (or " @@ -3366,29 +3408,29 @@ msgstr "" #. type: Plain text -#: puzzles.but:1779 +#: puzzles.but:1808 msgid "" "Thus, the grid is solved when all non-black squares have yellow highlights " "and there are no red lights." msgstr "" #. type: Plain text -#: puzzles.but:1783 +#: puzzles.but:1812 msgid "\\I{parameters, for Light Up}Light Up parameters" msgstr "" #. type: e{#1} -#: puzzles.but:1792 +#: puzzles.but:1821 msgid "%age of black squares" msgstr "" #. type: Plain text -#: puzzles.but:1794 +#: puzzles.but:1823 msgid "Rough percentage of black squares in the grid." msgstr "" #. type: Plain text -#: puzzles.but:1802 +#: puzzles.but:1831 msgid "" "This is a hint rather than an instruction. If the grid generator is unable " "to generate a puzzle to this precise specification, it will increase the " @@ -3396,36 +3438,36 @@ msgstr "" #. type: e{#1} -#: puzzles.but:1804 +#: puzzles.but:1833 msgid "Symmetry" msgstr "" #. type: Plain text -#: puzzles.but:1808 +#: puzzles.but:1837 msgid "" "Allows you to specify the required symmetry of the black squares in the " "grid. (This does not affect the difficulty of the puzzles noticeably.)" msgstr "" #. type: Plain text -#: puzzles.but:1814 +#: puzzles.but:1843 msgid "" "\\q{Easy} means that the puzzles should be soluble without backtracking or " "guessing, \\q{Hard} means that some guesses will probably be necessary." msgstr "" #. type: Plain text -#: puzzles.but:1817 +#: puzzles.but:1846 msgid "\\i{Map}" msgstr "" #. type: Plain text -#: puzzles.but:1819 +#: puzzles.but:1848 msgid "\\cfg{winhelp-topic}{games.map}" msgstr "" #. type: Plain text -#: puzzles.but:1825 +#: puzzles.but:1854 msgid "" "You are given a map consisting of a number of regions. Your task is to " "colour each region with one of four colours, in such a way that no two " @@ -3435,7 +3477,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1829 +#: puzzles.but:1858 msgid "" "Only regions which share a length of border are required to be different " "colours. Two regions which meet at only one \\e{point} (i.e. are diagonally " @@ -3443,7 +3485,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1836 +#: puzzles.but:1865 msgid "" "I believe this puzzle is original; I've never seen an implementation of it " "anywhere else. The concept of a \\i{four-colouring} puzzle was suggested by " @@ -3453,44 +3495,44 @@ msgstr "" #. type: Plain text -#: puzzles.but:1838 +#: puzzles.but:1867 msgid "\\i{Map controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:1839 +#: puzzles.but:1868 msgid "Map controls" msgstr "" #. type: IM -#: puzzles.but:1839 +#: puzzles.but:1868 #, no-wrap msgid "controls, for Map" msgstr "" #. type: Plain text -#: puzzles.but:1844 +#: puzzles.but:1873 msgid "" "To colour a region, click the left mouse button on an existing region of the " "desired colour and drag that colour into the new region." msgstr "" #. type: Plain text -#: puzzles.but:1847 +#: puzzles.but:1876 msgid "" "(The program will always ensure the starting puzzle has at least one region " "of each colour, so that this is always possible!)" msgstr "" #. type: Plain text -#: puzzles.but:1850 +#: puzzles.but:1879 msgid "" "If you need to clear a region, you can drag from an empty region, or from " "the puzzle boundary if there are no empty regions left." msgstr "" #. type: Plain text -#: puzzles.but:1856 +#: puzzles.but:1885 msgid "" "Dragging a colour using the \\e{right} mouse button will stipple the region " "in that colour, which you can use as a note to yourself that you think the " @@ -3499,7 +3541,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1868 +#: puzzles.but:1897 msgid "" "You can also use the cursor keys to move around the map: the colour of the " "cursor indicates the position of the colour you would drag (which is not " @@ -3514,7 +3556,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1875 +#: puzzles.but:1904 msgid "" "If you press L during play, the game will toggle display of a number in each " "region of the map. This is useful if you want to discuss a particular puzzle " @@ -3524,22 +3566,22 @@ msgstr "" #. type: Plain text -#: puzzles.but:1879 +#: puzzles.but:1908 msgid "\\I{parameters, for Map}Map parameters" msgstr "" #. type: e{#1} -#: puzzles.but:1888 +#: puzzles.but:1917 msgid "Regions" msgstr "" #. type: Plain text -#: puzzles.but:1890 +#: puzzles.but:1919 msgid "Number of regions in the generated map." msgstr "" #. type: Plain text -#: puzzles.but:1898 +#: puzzles.but:1927 msgid "" "In \\q{Easy} mode, there should always be at least one region whose colour " "can be determined trivially. In \\q{Normal} and \\q{Hard} modes, you will " @@ -3548,7 +3590,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1907 +#: puzzles.but:1936 msgid "" "In \\q{Unreasonable} mode, the program will feel free to generate puzzles " "which are as hard as it can possibly make them: the only constraint is that " @@ -3557,17 +3599,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:1910 +#: puzzles.but:1939 msgid "\\i{Loopy}" msgstr "" #. type: Plain text -#: puzzles.but:1912 +#: puzzles.but:1941 msgid "\\cfg{winhelp-topic}{games.loopy}" msgstr "" #. type: Plain text -#: puzzles.but:1917 +#: puzzles.but:1946 msgid "" "You are given a grid of dots, marked with yellow lines to indicate which " "dots you are allowed to connect directly together. Your aim is to use some " @@ -3576,7 +3618,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1922 +#: puzzles.but:1951 msgid "" "Some of the spaces between the lines contain numbers. These numbers indicate " "how many of the lines around that space form part of the loop. The loop you " @@ -3585,19 +3627,19 @@ msgstr "" #. type: Plain text -#: puzzles.but:1926 +#: puzzles.but:1955 msgid "" "In the default mode, the dots are arranged in a grid of squares; however, " "you can also play on triangular or hexagonal grids, or even more exotic ones." msgstr "" #. type: Plain text -#: puzzles.but:1929 +#: puzzles.but:1958 msgid "Credit for the basic puzzle idea goes to \\i{Nikoli} \\k{nikoli-loopy}." msgstr "" #. type: Plain text -#: puzzles.but:1933 +#: puzzles.but:1962 msgid "" "Loopy was originally contributed to this collection by Mike Pinna, and " "subsequently enhanced to handle various types of non-square grid by Lambros " @@ -3605,30 +3647,30 @@ msgstr "" #. type: Plain text -#: puzzles.but:1937 +#: puzzles.but:1966 msgid "" -"\\W{http://www.nikoli.co.jp/puzzles/3/index-e.htm}\\cw{http://www.nikoli.co." -"jp/puzzles/3/index-e.htm} (beware of Flash)" +"\\W{http://www.nikoli.co.jp/en/puzzles/slitherlink.html}\\cw{http://www." +"nikoli.co.jp/en/puzzles/slitherlink.html} (beware of Flash)" msgstr "" #. type: Plain text -#: puzzles.but:1939 +#: puzzles.but:1968 msgid "\\i{Loopy controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:1940 +#: puzzles.but:1969 msgid "Loopy controls" msgstr "" #. type: IM -#: puzzles.but:1940 +#: puzzles.but:1969 #, no-wrap msgid "controls, for Loopy" msgstr "" #. type: Plain text -#: puzzles.but:1945 +#: puzzles.but:1974 msgid "" "Click the left mouse button on a yellow line to turn it black, indicating " "that you think it is part of the loop. Click again to turn the line yellow " @@ -3636,7 +3678,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1950 +#: puzzles.but:1979 msgid "" "If you are sure that a particular line segment is \\e{not} part of the loop, " "you can click the right mouse button to remove it completely. Again, " @@ -3644,12 +3686,12 @@ msgstr "" #. type: Plain text -#: puzzles.but:1954 +#: puzzles.but:1983 msgid "\\I{parameters, for Loopy}Loopy parameters" msgstr "" #. type: Plain text -#: puzzles.but:1964 +#: puzzles.but:1993 msgid "" "Size of grid, measured in number of regions across and down. For square " "grids, it's clear how this is counted; for other types of grid you may have " @@ -3657,12 +3699,12 @@ msgstr "" #. type: e{#1} -#: puzzles.but:1966 +#: puzzles.but:1995 msgid "Grid type" msgstr "" #. type: Plain text -#: puzzles.but:1974 +#: puzzles.but:2003 msgid "" "Allows you to choose between a selection of types of tiling. Some have all " "the faces the same but may have multiple different types of vertex (e.g. the " @@ -3674,7 +3716,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:1980 +#: puzzles.but:2009 msgid "" "Controls the difficulty of the generated puzzle. \\#{FIXME: what " "distinguishes Easy, Medium, and Hard? In particular, when are backtracking/" @@ -3682,24 +3724,24 @@ msgstr "" #. type: Plain text -#: puzzles.but:1983 +#: puzzles.but:2012 msgid "\\i{Inertia}" msgstr "" #. type: Plain text -#: puzzles.but:1985 +#: puzzles.but:2014 msgid "\\cfg{winhelp-topic}{games.inertia}" msgstr "" #. type: Plain text -#: puzzles.but:1988 +#: puzzles.but:2017 msgid "" "You are a small green ball sitting in a grid full of obstacles. Your aim is " "to collect all the gems without running into any mines." msgstr "" #. type: Plain text -#: puzzles.but:1997 +#: puzzles.but:2026 msgid "" "You can move the ball in any orthogonal \\e{or diagonal} direction. Once " "the ball starts moving, it will continue until something stops it. A wall " @@ -3711,7 +3753,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2001 +#: puzzles.but:2030 msgid "" "Running into a mine is fatal. Even if you picked up the last gem in the same " "move which then hit a mine, the game will count you as dead rather than " @@ -3719,7 +3761,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2005 +#: puzzles.but:2034 msgid "" "This game was originally implemented for Windows by Ben Olmstead \\k{bem}, " "who was kind enough to release his source code on request so that it could " @@ -3727,40 +3769,40 @@ msgstr "" #. type: Plain text -#: puzzles.but:2007 +#: puzzles.but:2036 msgid "\\W{http://xn13.com/}\\cw{http://xn13.com/}" msgstr "" #. type: Plain text -#: puzzles.but:2009 +#: puzzles.but:2038 msgid "\\i{Inertia controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:2010 puzzles.but:2011 puzzles.but:2012 +#: puzzles.but:2039 puzzles.but:2040 puzzles.but:2041 msgid "Inertia controls" msgstr "" #. type: IM -#: puzzles.but:2010 +#: puzzles.but:2039 #, no-wrap msgid "controls, for Inertia" msgstr "" #. type: IM -#: puzzles.but:2011 +#: puzzles.but:2040 #, no-wrap msgid "keys, for Inertia" msgstr "" #. type: IM -#: puzzles.but:2012 +#: puzzles.but:2041 #, no-wrap msgid "shortcuts (keyboard), for Inertia" msgstr "" #. type: Plain text -#: puzzles.but:2018 +#: puzzles.but:2047 msgid "" "You can move the ball in any of the eight directions using the numeric " "keypad. Alternatively, if you click the left mouse button on the grid, the " @@ -3768,7 +3810,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2030 +#: puzzles.but:2057 msgid "" "If you use the \\q{Solve} function on this game, the program will compute a " "path through the grid which collects all the remaining gems and returns to " @@ -3777,13 +3819,11 @@ "in that direction, the arrow will update to indicate the next direction on " "the path. You can also press Space to automatically move in the direction of " "the hint arrow. If you move in a different direction from the one shown by " -"the arrow, the hint arrows will stop appearing because you have strayed from " -"the provided path; you can then use \\q{Solve} again to generate a new path " -"if you want to." +"the arrow, arrows will be shown only if the puzzle is still solvable." msgstr "" #. type: Plain text -#: puzzles.but:2035 +#: puzzles.but:2062 msgid "" "All the actions described in \\k{common-actions} are also available. In " "particular, if you do run into a mine and die, you can use the Undo function " @@ -3792,22 +3832,22 @@ msgstr "" #. type: Plain text -#: puzzles.but:2037 +#: puzzles.but:2064 msgid "\\I{parameters, for Inertia}Inertia parameters" msgstr "" #. type: Plain text -#: puzzles.but:2047 +#: puzzles.but:2074 msgid "\\i{Tents}" msgstr "" #. type: Plain text -#: puzzles.but:2049 +#: puzzles.but:2076 msgid "\\cfg{winhelp-topic}{games.tents}" msgstr "" #. type: Plain text -#: puzzles.but:2053 +#: puzzles.but:2080 msgid "" "You have a grid of squares, some of which contain trees. Your aim is to " "place tents in some of the remaining squares, in such a way that the " @@ -3815,12 +3855,12 @@ msgstr "" #. type: Plain text -#: puzzles.but:2055 +#: puzzles.but:2082 msgid "There are exactly as many tents as trees." msgstr "" #. type: Plain text -#: puzzles.but:2060 +#: puzzles.but:2087 msgid "" "The tents and trees can be matched up in such a way that each tent is " "directly adjacent (horizontally or vertically, but not diagonally) to its " @@ -3828,50 +3868,51 @@ msgstr "" #. type: Plain text -#: puzzles.but:2063 +#: puzzles.but:2090 msgid "No two tents are adjacent horizontally, vertically \\e{or diagonally}." msgstr "" #. type: Plain text -#: puzzles.but:2066 +#: puzzles.but:2093 msgid "" "The number of tents in each row, and in each column, matches the numbers " "given round the sides of the grid." msgstr "" #. type: Plain text -#: puzzles.but:2070 +#: puzzles.but:2097 msgid "" "This puzzle can be found in several places on the Internet, and was brought " "to my attention by e-mail. I don't know who I should credit for inventing it." msgstr "" #. type: Plain text -#: puzzles.but:2072 +#: puzzles.but:2099 msgid "\\i{Tents controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:2073 +#: puzzles.but:2100 msgid "Tents controls" msgstr "" #. type: IM -#: puzzles.but:2073 +#: puzzles.but:2100 #, no-wrap msgid "controls, for Tents" msgstr "" #. type: Plain text -#: puzzles.but:2079 +#: puzzles.but:2106 msgid "" "Left-clicking in a blank square will place a tent in it. Right-clicking in " -"a blank square will colour it green, indicating that you are sure it \\e" -"{isn't} a tent. Clicking either button in an occupied square will clear it." +"a blank square will colour it green, indicating that you are sure it " +"\\e{isn't} a tent. Clicking either button in an occupied square will clear " +"it." msgstr "" #. type: Plain text -#: puzzles.but:2084 +#: puzzles.but:2111 msgid "" "If you \\e{drag} with the right button along a row or column, every blank " "square in the region you cover will be turned green, and no other squares " @@ -3880,21 +3921,23 @@ msgstr "" #. type: Plain text -#: puzzles.but:2089 +#: puzzles.but:2118 msgid "" "You can also use the cursor keys to move around the grid. Pressing the " "return key over an empty square will place a tent, and pressing the space " "bar over an empty square will colour it green; either key will clear an " -"occupied square." +"occupied square. Holding Shift and pressing the cursor keys will colour " +"empty squares green. Holding Control and pressing the cursor keys will " +"colour green both empty squares and squares with tents." msgstr "" #. type: Plain text -#: puzzles.but:2093 +#: puzzles.but:2122 msgid "\\I{parameters, for Tents}Tents parameters" msgstr "" #. type: Plain text -#: puzzles.but:2106 +#: puzzles.but:2135 msgid "" "Controls the difficulty of the generated puzzle. More difficult puzzles " "require more complex deductions, but at present none of the available " @@ -3902,17 +3945,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:2109 +#: puzzles.but:2138 msgid "\\i{Bridges}" msgstr "" #. type: Plain text -#: puzzles.but:2111 +#: puzzles.but:2140 msgid "\\cfg{winhelp-topic}{games.bridges}" msgstr "" #. type: Plain text -#: puzzles.but:2115 +#: puzzles.but:2144 msgid "" "You have a set of islands distributed across the playing area. Each island " "contains a number. Your aim is to connect the islands together with bridges, " @@ -3920,36 +3963,36 @@ msgstr "" #. type: Plain text -#: puzzles.but:2117 +#: puzzles.but:2146 msgid "Bridges run horizontally or vertically." msgstr "" #. type: Plain text -#: puzzles.but:2120 +#: puzzles.but:2149 msgid "" "The number of bridges terminating at any island is equal to the number " "written in that island." msgstr "" #. type: Plain text -#: puzzles.but:2123 +#: puzzles.but:2152 msgid "" "Two bridges may run in parallel between the same two islands, but no more " "than two may do so." msgstr "" #. type: Plain text -#: puzzles.but:2125 +#: puzzles.but:2154 msgid "No bridge crosses another bridge." msgstr "" #. type: Plain text -#: puzzles.but:2127 +#: puzzles.but:2156 msgid "All the islands are connected together." msgstr "" #. type: Plain text -#: puzzles.but:2133 +#: puzzles.but:2162 msgid "" "There are some configurable alternative modes, which involve changing the " "parallel-bridge limit to something other than 2, and introducing the " @@ -3958,40 +4001,40 @@ msgstr "" #. type: Plain text -#: puzzles.but:2135 +#: puzzles.but:2164 msgid "Credit for this puzzle goes to \\i{Nikoli} \\k{nikoli-bridges}." msgstr "" #. type: Plain text -#: puzzles.but:2137 +#: puzzles.but:2166 msgid "Bridges was contributed to this collection by James Harvey." msgstr "" #. type: Plain text -#: puzzles.but:2140 +#: puzzles.but:2170 msgid "" -"\\W{http://www.nikoli.co.jp/puzzles/14/index-e.htm}\\cw{http://www.nikoli.co." -"jp/puzzles/14/index-e.htm}" +"\\W{http://www.nikoli.co.jp/en/puzzles/hashiwokakero.html}\\cw{http://www." +"nikoli.co.jp/en/puzzles/hashiwokakero.html} (beware of Flash)" msgstr "" #. type: Plain text -#: puzzles.but:2142 +#: puzzles.but:2172 msgid "\\i{Bridges controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:2143 +#: puzzles.but:2173 msgid "Bridges controls" msgstr "" #. type: IM -#: puzzles.but:2143 +#: puzzles.but:2173 #, no-wrap msgid "controls, for Bridges" msgstr "" #. type: Plain text -#: puzzles.but:2151 +#: puzzles.but:2181 msgid "" "To place a bridge between two islands, click the mouse down on one island " "and drag it towards the other. You do not need to drag all the way to the " @@ -4002,7 +4045,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2156 +#: puzzles.but:2186 msgid "" "Doing this again when a bridge is already present will add another parallel " "bridge. If there are already as many bridges between the two islands as " @@ -4011,7 +4054,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2160 +#: puzzles.but:2190 msgid "" "If you want to remind yourself that two islands definitely \\e{do not} have " "a bridge between them, you can right-drag between them in the same way to " @@ -4019,7 +4062,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2168 +#: puzzles.but:2198 msgid "" "If you think you have finished with an island (i.e. you have placed all its " "bridges and are confident that they are in the right places), you can mark " @@ -4030,32 +4073,42 @@ msgstr "" #. type: Plain text -#: puzzles.but:2175 +#: puzzles.but:2206 msgid "" "You can also use the cursor keys to move around the grid: if possible the " "cursor will always move orthogonally, otherwise it will move towards the " -"nearest island to the indicated direction. Pressing the return key followed " -"by a cursor key will lay a bridge in that direction (if available); pressing " -"the space bar followed by a cursor key will lay a \\q{non-bridge} marker." +"nearest island to the indicated direction. Holding Control and pressing a " +"cursor key will lay a bridge in that direction (if available); Shift and a " +"cursor key will lay a \\q{non-bridge} marker. Pressing the return key " +"followed by a cursor key will also lay a bridge in that direction." +msgstr "" + +#. type: Plain text +#: puzzles.but:2209 +msgid "" +"You can mark an island as finished by pressing the space bar or by pressing " +"the return key twice." msgstr "" #. type: Plain text -#: puzzles.but:2177 -msgid "You can mark an island as finished by pressing the return key twice." +#: puzzles.but:2213 +msgid "" +"By pressing a number key, you can jump to the nearest island with that " +"number. Letters \\q{a}, ..., \\q{f} count as 10, ..., 15 and \\q{0} as 16." msgstr "" #. type: Plain text -#: puzzles.but:2179 +#: puzzles.but:2215 msgid "Violations of the puzzle rules will be marked in red:" msgstr "" #. type: Plain text -#: puzzles.but:2181 +#: puzzles.but:2217 msgid "An island with too many bridges will be highlighted in red." msgstr "" #. type: Plain text -#: puzzles.but:2187 +#: puzzles.but:2223 msgid "" "An island with too few bridges will be highlighted in red if it is " "definitely an error (as opposed to merely not being finished yet): if adding " @@ -4064,7 +4117,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2194 +#: puzzles.but:2230 msgid "" "A group of islands and bridges may be highlighted in red if it is a closed " "subset of the puzzle with no way to connect it to the rest of the islands. " @@ -4074,29 +4127,29 @@ msgstr "" #. type: Plain text -#: puzzles.but:2198 +#: puzzles.but:2234 msgid "" "If you have selected the (non-default) option to disallow loops in the " "solution, a group of bridges which forms a loop will be highlighted." msgstr "" #. type: Plain text -#: puzzles.but:2202 +#: puzzles.but:2238 msgid "\\I{parameters, for Bridges}Bridges parameters" msgstr "" #. type: Plain text -#: puzzles.but:2213 +#: puzzles.but:2249 msgid "Difficulty level of puzzle." msgstr "" #. type: e{#1} -#: puzzles.but:2215 +#: puzzles.but:2251 msgid "Allow loops" msgstr "" #. type: Plain text -#: puzzles.but:2219 +#: puzzles.but:2255 msgid "" "This is set by default. If cleared, puzzles will be generated in such a way " "that they are always soluble without creating a loop, and solutions which do " @@ -4104,24 +4157,24 @@ msgstr "" #. type: e{#1} -#: puzzles.but:2221 +#: puzzles.but:2257 msgid "Max. bridges per direction" msgstr "" #. type: Plain text -#: puzzles.but:2225 +#: puzzles.but:2261 msgid "" "Maximum number of bridges in any particular direction. The default is 2, but " "you can change it to 1, 3 or 4. In general, fewer is easier." msgstr "" #. type: e{#1} -#: puzzles.but:2227 +#: puzzles.but:2263 msgid "%age of island squares" msgstr "" #. type: Plain text -#: puzzles.but:2231 +#: puzzles.but:2267 msgid "" "Gives a rough percentage of islands the generator will try and lay before " "finishing the puzzle. Certain layouts will not manage to lay enough islands; " @@ -4129,12 +4182,12 @@ msgstr "" #. type: e{#1} -#: puzzles.but:2233 +#: puzzles.but:2269 msgid "Expansion factor (%age)" msgstr "" #. type: Plain text -#: puzzles.but:2240 +#: puzzles.but:2276 msgid "" "The grid generator works by picking an existing island at random (after " "first creating an initial island somewhere). It then decides on a direction " @@ -4144,24 +4197,24 @@ msgstr "" #. type: Plain text -#: puzzles.but:2248 +#: puzzles.but:2284 msgid "" "High expansion factors usually mean easier puzzles with fewer possible " "islands; low expansion factors can create lots of tightly-packed islands." msgstr "" #. type: Plain text -#: puzzles.but:2251 +#: puzzles.but:2287 msgid "\\i{Unequal}" msgstr "" #. type: Plain text -#: puzzles.but:2253 +#: puzzles.but:2289 msgid "\\cfg{winhelp-topic}{games.unequal}" msgstr "" #. type: Plain text -#: puzzles.but:2257 +#: puzzles.but:2293 msgid "" "You have a square grid; each square may contain a digit from 1 to the size " "of the grid, and some squares have clue signs between them. Your aim is to " @@ -4169,27 +4222,27 @@ msgstr "" #. type: Plain text -#: puzzles.but:2259 puzzles.but:2475 +#: puzzles.but:2295 puzzles.but:2517 msgid "Each row contains only one occurrence of each digit" msgstr "" #. type: Plain text -#: puzzles.but:2261 puzzles.but:2477 +#: puzzles.but:2297 puzzles.but:2519 msgid "Each column contains only one occurrence of each digit" msgstr "" #. type: Plain text -#: puzzles.but:2263 +#: puzzles.but:2299 msgid "All the clue signs are satisfied." msgstr "" #. type: Plain text -#: puzzles.but:2265 +#: puzzles.but:2301 msgid "There are two modes for this game, \\q{Unequal} and \\q{Adjacent}." msgstr "" #. type: Plain text -#: puzzles.but:2269 +#: puzzles.but:2305 msgid "" "In \\q{Unequal} mode, the clue signs are greater-than symbols indicating one " "square's value is greater than its neighbour's. In this mode not all clues " @@ -4197,7 +4250,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2275 +#: puzzles.but:2311 msgid "" "In \\q{Adjacent} mode, the clue signs are bars indicating one square's value " "is numerically adjacent (i.e. one higher or one lower) than its neighbour. " @@ -4206,7 +4259,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2279 +#: puzzles.but:2315 msgid "" "In \\q{Trivial} difficulty level (available via the \\q{Custom} game type " "selector), there are no greater-than signs in \\q{Unequal} mode; the puzzle " @@ -4214,40 +4267,40 @@ msgstr "" #. type: Plain text -#: puzzles.but:2282 +#: puzzles.but:2318 msgid "" "At the time of writing, the \\q{Unequal} mode of this puzzle is appearing in " "the Guardian weekly under the name \\q{\\i{Futoshiki}}." msgstr "" #. type: Plain text -#: puzzles.but:2284 +#: puzzles.but:2320 msgid "Unequal was contributed to this collection by James Harvey." msgstr "" #. type: Plain text -#: puzzles.but:2286 +#: puzzles.but:2322 msgid "\\i{Unequal controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:2287 +#: puzzles.but:2323 msgid "Unequal controls" msgstr "" #. type: IM -#: puzzles.but:2287 +#: puzzles.but:2323 #, no-wrap msgid "controls, for Unequal" msgstr "" #. type: Plain text -#: puzzles.but:2290 +#: puzzles.but:2326 msgid "Unequal shares much of its control system with Solo." msgstr "" #. type: Plain text -#: puzzles.but:2295 +#: puzzles.but:2331 msgid "" "To play Unequal, simply click the mouse in any empty square and then type a " "digit or letter on the keyboard to fill that square. If you make a mistake, " @@ -4256,41 +4309,49 @@ msgstr "" #. type: Plain text -#: puzzles.but:2318 +#: puzzles.but:2354 msgid "" "As for Solo, the cursor keys can be used in conjunction with the digit keys " -"to set numbers or pencil marks. You can also use the 'M' key to auto-fill " -"every numeric hint, ready for removal as required, or the 'H' key to do the " -"same but also to remove all obvious hints." +"to set numbers or pencil marks. You can also use the \\q{M} key to auto-fill " +"every numeric hint, ready for removal as required, or the \\q{H} key to do " +"the same but also to remove all obvious hints." msgstr "" #. type: Plain text -#: puzzles.but:2328 +#: puzzles.but:2365 +msgid "" +"Left-clicking a clue will mark it as done (grey it out), or unmark it if it " +"is already marked. Holding Control or Shift and pressing an arrow key " +"likewise marks any clue adjacent to the cursor in the given direction." +msgstr "" + +#. type: Plain text +#: puzzles.but:2369 msgid "\\I{parameters, for Unequal}Unequal parameters" msgstr "" #. type: e{#1} -#: puzzles.but:2333 +#: puzzles.but:2374 msgid "Mode" msgstr "" #. type: Plain text -#: puzzles.but:2335 +#: puzzles.but:2376 msgid "Mode of the puzzle (\\q{Unequal} or \\q{Adjacent})" msgstr "" #. type: e{#1} -#: puzzles.but:2337 +#: puzzles.but:2378 msgid "Size (s*s)" msgstr "" #. type: Plain text -#: puzzles.but:2339 +#: puzzles.but:2380 msgid "Size of grid." msgstr "" #. type: Plain text -#: puzzles.but:2348 +#: puzzles.but:2389 msgid "" "Controls the difficulty of the generated puzzle. At Trivial level, there are " "no greater-than signs; the puzzle is to solve the Latin square only. At " @@ -4301,17 +4362,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:2352 +#: puzzles.but:2393 msgid "\\i{Galaxies}" msgstr "" #. type: Plain text -#: puzzles.but:2354 +#: puzzles.but:2395 msgid "\\cfg{winhelp-topic}{games.galaxies}" msgstr "" #. type: Plain text -#: puzzles.but:2360 +#: puzzles.but:2401 msgid "" "You have a rectangular grid containing a number of dots. Your aim is to draw " "edges along the grid lines which divide the rectangle into regions in such a " @@ -4320,7 +4381,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2364 +#: puzzles.but:2405 msgid "" "This puzzle was invented by \\i{Nikoli} \\k{nikoli-galaxies}, under the name " "\\q{Tentai Show}; its name is commonly translated into English as \\q{Spiral " @@ -4328,35 +4389,35 @@ msgstr "" #. type: Plain text -#: puzzles.but:2366 +#: puzzles.but:2407 msgid "Galaxies was contributed to this collection by James Harvey." msgstr "" #. type: Plain text -#: puzzles.but:2368 +#: puzzles.but:2409 msgid "" -"\\W{http://www.nikoli.co.jp/en/puzzles/astronomical_show/}\\cw{http://www." -"nikoli.co.jp/en/puzzles/astronomical_show/}" +"\\W{http://www.nikoli.co.jp/en/puzzles/astronomical_show.html}\\cw{http://" +"www.nikoli.co.jp/en/puzzles/astronomical_show.html}" msgstr "" #. type: Plain text -#: puzzles.but:2370 +#: puzzles.but:2411 msgid "\\i{Galaxies controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:2371 +#: puzzles.but:2412 msgid "Galaxies controls" msgstr "" #. type: IM -#: puzzles.but:2371 +#: puzzles.but:2412 #, no-wrap msgid "controls, for Galaxies" msgstr "" #. type: Plain text -#: puzzles.but:2379 +#: puzzles.but:2420 msgid "" "Left-click on any grid line to draw an edge if there isn't one already, or " "to remove one if there is. When you create a valid region (one which is " @@ -4366,7 +4427,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2391 +#: puzzles.but:2432 msgid "" "During solving, you might know that a particular grid square belongs to a " "specific dot, but not be sure of where the edges go and which other squares " @@ -4381,7 +4442,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2398 +#: puzzles.but:2439 msgid "" "You can also use the cursor keys to move around the grid squares and lines. " "Pressing the return key when over a grid line will draw or clear its edge, " @@ -4392,12 +4453,12 @@ msgstr "" #. type: Plain text -#: puzzles.but:2402 +#: puzzles.but:2443 msgid "\\I{parameters, for Galaxies}Galaxies parameters" msgstr "" #. type: Plain text -#: puzzles.but:2415 +#: puzzles.but:2456 msgid "" "Controls the difficulty of the generated puzzle. More difficult puzzles " "require more complex deductions, and the \\q{Unreasonable} difficulty level " @@ -4405,17 +4466,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:2419 +#: puzzles.but:2460 msgid "\\i{Filling}" msgstr "" #. type: Plain text -#: puzzles.but:2421 +#: puzzles.but:2462 msgid "\\cfg{winhelp-topic}{games.filling}" msgstr "" #. type: Plain text -#: puzzles.but:2426 +#: puzzles.but:2467 msgid "" "You have a grid of squares, some of which contain digits, and the rest of " "which are empty. Your job is to fill in digits in the empty squares, in such " @@ -4424,14 +4485,14 @@ msgstr "" #. type: Plain text -#: puzzles.but:2429 +#: puzzles.but:2470 msgid "" "(\\q{Connected region}, for the purposes of this game, does not count " "diagonally separated squares as adjacent.)" msgstr "" #. type: Plain text -#: puzzles.but:2434 +#: puzzles.but:2475 msgid "" "For example, it follows that no square can contain a zero, and that two " "adjacent squares can not both contain a one. No region has an area greater " @@ -4439,29 +4500,29 @@ msgstr "" #. type: Plain text -#: puzzles.but:2436 +#: puzzles.but:2477 msgid "Credit for this puzzle goes to \\i{Nikoli} \\k{nikoli-fillomino}." msgstr "" #. type: Plain text -#: puzzles.but:2438 +#: puzzles.but:2479 msgid "Filling was contributed to this collection by Jonas K\\u00F6{oe}lker." msgstr "" #. type: Plain text -#: puzzles.but:2441 +#: puzzles.but:2482 msgid "" -"\\W{http://www.nikoli.co.jp/en/puzzles/fillomino/}\\cw{http://www.nikoli.co." -"jp/en/puzzles/fillomino/}" +"\\W{http://www.nikoli.co.jp/en/puzzles/fillomino.html}\\cw{http://www.nikoli." +"co.jp/en/puzzles/fillomino.html}" msgstr "" #. type: Plain text -#: puzzles.but:2443 +#: puzzles.but:2484 msgid "\\I{controls, for Filling}Filling controls" msgstr "" #. type: Plain text -#: puzzles.but:2450 +#: puzzles.but:2491 msgid "" "To play Filling, simply click the mouse in any empty square and then type a " "digit on the keyboard to fill that square. By dragging the mouse, you can " @@ -4471,39 +4532,41 @@ msgstr "" #. type: Plain text -#: puzzles.but:2456 +#: puzzles.but:2498 msgid "" "You can also move around the grid with the cursor keys; typing a digit will " -"fill the square containing the cursor with that number, or typing 0, Space, " -"or Enter will clear it. You can also select multiple squares for numbering " -"or clearing by using the return key, before typing a digit to fill in the " -"highlighted squares (as above)." +"fill the square containing the cursor with that number; typing 0 will clear " +"it. You can also select multiple squares for numbering or clearing with the " +"return and arrow keys, before typing a digit to fill or clear the " +"highlighted squares (as above). The space bar adds and removes single " +"squares to and from the selection. Backspace and escape remove all squares " +"from the selection." msgstr "" #. type: Plain text -#: puzzles.but:2460 +#: puzzles.but:2502 msgid "\\I{parameters, for Filling}Filling parameters" msgstr "" #. type: Plain text -#: puzzles.but:2463 +#: puzzles.but:2505 msgid "" "Filling allows you to configure the number of rows and columns of the grid, " "through the \\q{Type} menu." msgstr "" #. type: Plain text -#: puzzles.but:2466 +#: puzzles.but:2508 msgid "\\i{Keen}" msgstr "" #. type: Plain text -#: puzzles.but:2468 +#: puzzles.but:2510 msgid "\\cfg{winhelp-topic}{games.keen}" msgstr "" #. type: Plain text -#: puzzles.but:2473 +#: puzzles.but:2515 msgid "" "You have a square grid; each square may contain a digit from 1 to the size " "of the grid. The grid is divided into blocks of varying shape and size, with " @@ -4512,14 +4575,14 @@ msgstr "" #. type: Plain text -#: puzzles.but:2481 +#: puzzles.but:2523 msgid "" "The digits in each block can be combined to form the number stated in the " "clue, using the arithmetic operation given in the clue. That is:" msgstr "" #. type: Plain text -#: puzzles.but:2508 +#: puzzles.but:2550 msgid "" "An addition clue means that the sum of the digits in the block must be the " "given number. For example, \\q{15+} means the contents of the block adds up " @@ -4527,14 +4590,14 @@ msgstr "" #. type: Plain text -#: puzzles.but:2508 +#: puzzles.but:2550 msgid "" "A multiplication clue (e.g. \\q{60\\times}), similarly, means that the " "product of the digits in the block must be the given number." msgstr "" #. type: Plain text -#: puzzles.but:2508 +#: puzzles.but:2550 msgid "" "A subtraction clue will always be written in a block of size two, and it " "means that one of the digits in the block is greater than the other by the " @@ -4544,7 +4607,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2508 +#: puzzles.but:2550 msgid "" "A division clue (e.g. \\q{3\\divide}), similarly, is always in a block of " "size two and means that one digit divided by the other is equal to the given " @@ -4552,7 +4615,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2508 +#: puzzles.but:2550 msgid "" "Note that a block may contain the same digit more than once (provided the " "identical ones are not in the same row and column). This rule is precisely " @@ -4560,33 +4623,33 @@ msgstr "" #. type: Plain text -#: puzzles.but:2510 +#: puzzles.but:2552 msgid "This puzzle appears in the Times under the name \\q{\\i{KenKen}}." msgstr "" #. type: Plain text -#: puzzles.but:2513 +#: puzzles.but:2555 msgid "\\i{Keen controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:2514 +#: puzzles.but:2556 msgid "Keen controls" msgstr "" #. type: IM -#: puzzles.but:2514 +#: puzzles.but:2556 #, no-wrap msgid "controls, for Keen" msgstr "" #. type: Plain text -#: puzzles.but:2517 +#: puzzles.but:2559 msgid "Keen shares much of its control system with Solo (and Unequal)." msgstr "" #. type: Plain text -#: puzzles.but:2522 +#: puzzles.but:2564 msgid "" "To play Keen, simply click the mouse in any empty square and then type a " "digit on the keyboard to fill that square. If you make a mistake, click the " @@ -4595,7 +4658,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2546 puzzles.but:2636 +#: puzzles.but:2588 puzzles.but:2682 msgid "" "As for Solo, the cursor keys can be used in conjunction with the digit keys " "to set numbers or pencil marks. Use the cursor keys to move a highlight " @@ -4605,24 +4668,24 @@ msgstr "" #. type: Plain text -#: puzzles.but:2549 puzzles.but:2639 +#: puzzles.but:2591 puzzles.but:2685 msgid "" "Pressing M will fill in a full set of pencil marks in every square that does " "not have a main digit in it." msgstr "" #. type: Plain text -#: puzzles.but:2553 +#: puzzles.but:2595 msgid "\\I{parameters, for Keen}Keen parameters" msgstr "" #. type: e{#1} -#: puzzles.but:2558 puzzles.but:2648 +#: puzzles.but:2600 puzzles.but:2698 msgid "Grid size" msgstr "" #. type: Plain text -#: puzzles.but:2562 puzzles.but:2652 +#: puzzles.but:2604 puzzles.but:2702 msgid "" "Specifies the size of the grid. Lower limit is 3; upper limit is 9 (because " "the user interface would become more difficult with \\q{digits} bigger than " @@ -4630,7 +4693,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2569 puzzles.but:2659 +#: puzzles.but:2611 puzzles.but:2709 msgid "" "Controls the difficulty of the generated puzzle. At Unreasonable level, some " "backtracking will be required, but the solution should still be unique. The " @@ -4638,18 +4701,30 @@ "backtrack." msgstr "" +#. type: e{#1} +#: puzzles.but:2613 +msgid "Multiplication only" +msgstr "" + #. type: Plain text -#: puzzles.but:2572 +#: puzzles.but:2616 +msgid "" +"If this is enabled, all boxes will be multiplication boxes. With this rule, " +"the puzzle is known as \\q{Inshi No Heya}." +msgstr "" + +#. type: Plain text +#: puzzles.but:2618 msgid "\\i{Towers}" msgstr "" #. type: Plain text -#: puzzles.but:2574 +#: puzzles.but:2620 msgid "\\cfg{winhelp-topic}{games.towers}" msgstr "" #. type: Plain text -#: puzzles.but:2578 +#: puzzles.but:2624 msgid "" "You have a square grid. On each square of the grid you can build a tower, " "with its height ranging from 1 to the size of the grid. Around the edge of " @@ -4657,22 +4732,22 @@ msgstr "" #. type: Plain text -#: puzzles.but:2580 +#: puzzles.but:2626 msgid "Your task is to build a tower on every square, in such a way that:" msgstr "" #. type: Plain text -#: puzzles.but:2582 +#: puzzles.but:2628 msgid "Each row contains every possible height of tower once" msgstr "" #. type: Plain text -#: puzzles.but:2584 +#: puzzles.but:2630 msgid "Each column contains every possible height of tower once" msgstr "" #. type: Plain text -#: puzzles.but:2592 +#: puzzles.but:2638 msgid "" "Each numeric clue describes the number of towers that can be seen if you " "look into the square from that direction, assuming that shorter towers are " @@ -4684,42 +4759,42 @@ msgstr "" #. type: Plain text -#: puzzles.but:2596 +#: puzzles.but:2642 msgid "" "In harder or larger puzzles, some towers will be specified for you as well " "as the clues round the edge, and some edge clues may be missing." msgstr "" #. type: Plain text -#: puzzles.but:2599 +#: puzzles.but:2645 msgid "" -"This puzzle appears on the web under various names, particularly \\q{\\i" -"{Skyscrapers}}, but I don't know who first invented it." +"This puzzle appears on the web under various names, particularly " +"\\q{\\i{Skyscrapers}}, but I don't know who first invented it." msgstr "" #. type: Plain text -#: puzzles.but:2602 +#: puzzles.but:2648 msgid "\\i{Towers controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:2603 +#: puzzles.but:2649 msgid "Towers controls" msgstr "" #. type: IM -#: puzzles.but:2603 +#: puzzles.but:2649 #, no-wrap msgid "controls, for Towers" msgstr "" #. type: Plain text -#: puzzles.but:2606 +#: puzzles.but:2652 msgid "Towers shares much of its control system with Solo, Unequal and Keen." msgstr "" #. type: Plain text -#: puzzles.but:2612 +#: puzzles.but:2658 msgid "" "To play Towers, simply click the mouse in any empty square and then type a " "digit on the keyboard to fill that square with a tower of the given height. " @@ -4728,7 +4803,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2617 +#: puzzles.but:2663 msgid "" "If you \\e{right}-click in a square and then type a number, that number will " "be entered in the square as a \\q{pencil mark}. You can have pencil marks " @@ -4737,22 +4812,30 @@ msgstr "" #. type: Plain text -#: puzzles.but:2643 +#: puzzles.but:2689 +msgid "" +"Left-clicking a clue will mark it as done (grey it out), or unmark it if it " +"is already marked. Holding Control or Shift and pressing an arrow key " +"likewise marks any clue in the given direction." +msgstr "" + +#. type: Plain text +#: puzzles.but:2693 msgid "\\I{parameters, for Towers}Towers parameters" msgstr "" #. type: Plain text -#: puzzles.but:2662 +#: puzzles.but:2712 msgid "\\i{Singles}" msgstr "" #. type: Plain text -#: puzzles.but:2664 +#: puzzles.but:2714 msgid "\\cfg{winhelp-topic}{games.singles}" msgstr "" #. type: Plain text -#: puzzles.but:2668 +#: puzzles.but:2718 msgid "" "You have a grid of white squares, all of which contain numbers. Your task is " "to colour some of the squares black (removing the number) so as to satisfy " @@ -4760,61 +4843,61 @@ msgstr "" #. type: Plain text -#: puzzles.but:2670 +#: puzzles.but:2720 msgid "No number occurs more than once in any row or column." msgstr "" #. type: Plain text -#: puzzles.but:2673 +#: puzzles.but:2723 msgid "" "No black square is horizontally or vertically adjacent to any other black " "square." msgstr "" #. type: Plain text -#: puzzles.but:2676 +#: puzzles.but:2726 msgid "" "The remaining white squares must all form one contiguous region (connected " "by edges, not just touching at corners)." msgstr "" #. type: Plain text -#: puzzles.but:2679 +#: puzzles.but:2729 msgid "" -"Credit for this puzzle goes to \\i{Nikoli} \\k{nikoli-hitori} who call it \\i" -"{Hitori}." +"Credit for this puzzle goes to \\i{Nikoli} \\k{nikoli-hitori} who call it " +"\\i{Hitori}." msgstr "" #. type: Plain text -#: puzzles.but:2681 +#: puzzles.but:2731 msgid "Singles was contributed to this collection by James Harvey." msgstr "" #. type: Plain text -#: puzzles.but:2685 +#: puzzles.but:2735 msgid "" -"\\W{http://www.nikoli.com/en/puzzles/hitori/index.html}\\cw{http://www." -"nikoli.com/en/puzzles/hitori/index.html} (beware of Flash)" +"\\W{http://www.nikoli.com/en/puzzles/hitori.html}\\cw{http://www.nikoli.com/" +"en/puzzles/hitori.html} (beware of Flash)" msgstr "" #. type: Plain text -#: puzzles.but:2687 +#: puzzles.but:2737 msgid "\\i{Singles controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:2688 +#: puzzles.but:2738 msgid "Singles controls" msgstr "" #. type: IM -#: puzzles.but:2688 +#: puzzles.but:2738 #, no-wrap msgid "controls, for Singles" msgstr "" #. type: Plain text -#: puzzles.but:2693 +#: puzzles.but:2743 msgid "" "Left-clicking on an empty square will colour it black; left-clicking again " "will restore the number. Right-clicking will add a circle (useful for " @@ -4822,7 +4905,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2697 +#: puzzles.but:2747 msgid "" "You can also use the cursor keys to move around the grid. Pressing the " "return or space keys will turn a square black or add a circle respectively, " @@ -4830,27 +4913,27 @@ msgstr "" #. type: Plain text -#: puzzles.but:2701 +#: puzzles.but:2751 msgid "\\I{parameters, for Singles}Singles parameters" msgstr "" #. type: Plain text -#: puzzles.but:2712 puzzles.but:3068 puzzles.but:3115 +#: puzzles.but:2762 puzzles.but:3131 puzzles.but:3178 msgid "Controls the difficulty of the generated puzzle." msgstr "" #. type: Plain text -#: puzzles.but:2715 +#: puzzles.but:2765 msgid "\\i{Magnets}" msgstr "" #. type: Plain text -#: puzzles.but:2717 +#: puzzles.but:2767 msgid "\\cfg{winhelp-topic}{games.magnets}" msgstr "" #. type: Plain text -#: puzzles.but:2724 +#: puzzles.but:2774 msgid "" "A rectangular grid has been filled with a mixture of magnets (that is, " "dominoes with one positive end and one negative end) and blank dominoes " @@ -4861,7 +4944,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2729 +#: puzzles.but:2779 msgid "" "Your aim is to correctly place the magnets and blank dominoes such that all " "the clues are satisfied, with the additional constraint that no two similar " @@ -4870,40 +4953,40 @@ msgstr "" #. type: Plain text -#: puzzles.but:2731 +#: puzzles.but:2781 msgid "Credit for this puzzle goes to \\i{Janko} \\k{janko-magnets}." msgstr "" #. type: Plain text -#: puzzles.but:2733 +#: puzzles.but:2783 msgid "Magnets was contributed to this collection by James Harvey." msgstr "" #. type: Plain text -#: puzzles.but:2736 +#: puzzles.but:2786 msgid "" "\\W{http://www.janko.at/Raetsel/Magnete/index.htm}\\cw{http://www.janko.at/" "Raetsel/Magnete/index.htm}" msgstr "" #. type: Plain text -#: puzzles.but:2738 +#: puzzles.but:2788 msgid "\\i{Magnets controls}" msgstr "" #. type: IM{#1} -#: puzzles.but:2739 +#: puzzles.but:2789 msgid "Magnets controls" msgstr "" #. type: IM -#: puzzles.but:2739 +#: puzzles.but:2789 #, no-wrap msgid "controls, for Magnets" msgstr "" #. type: Plain text -#: puzzles.but:2745 +#: puzzles.but:2795 msgid "" "Left-clicking on an empty square places a magnet at that position with the " "positive pole on the square and the negative pole on the other half of the " @@ -4912,7 +4995,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2750 +#: puzzles.but:2800 msgid "" "Right-clicking on an empty square places a blank domino there. Right-" "clicking again places two question marks on the domino, signifying \\q{this " @@ -4921,7 +5004,14 @@ msgstr "" #. type: Plain text -#: puzzles.but:2756 +#: puzzles.but:2803 puzzles.but:3116 +msgid "" +"Left-clicking a clue will mark it as done (grey it out), or unmark it if it " +"is already marked." +msgstr "" + +#. type: Plain text +#: puzzles.but:2809 msgid "" "You can also use the cursor keys to move a cursor around the grid. Pressing " "the return key will lay a domino with a positive pole at that position; " @@ -4931,53 +5021,53 @@ msgstr "" #. type: Plain text -#: puzzles.but:2760 +#: puzzles.but:2813 msgid "\\I{parameters, for Magnets}Magnets parameters" msgstr "" #. type: Plain text -#: puzzles.but:2768 +#: puzzles.but:2821 msgid "" "Size of grid in squares. There will be half \\e{Width} \\by \\e{Height} " "dominoes in the grid: if this number is odd then one square will be blank." msgstr "" #. type: Plain text -#: puzzles.but:2774 +#: puzzles.but:2827 msgid "(Grids with at least one odd dimension tend to be easier to solve.)" msgstr "" #. type: Plain text -#: puzzles.but:2780 +#: puzzles.but:2833 msgid "" "Controls the difficulty of the generated puzzle. At Tricky level, you are " "required to make more deductions about empty dominoes and row/column counts." msgstr "" #. type: e{#1} -#: puzzles.but:2782 +#: puzzles.but:2835 msgid "Strip clues" msgstr "" #. type: Plain text -#: puzzles.but:2785 +#: puzzles.but:2838 msgid "" "If true, some of the clues around the grid are removed at generation time, " "making the puzzle more difficult." msgstr "" #. type: Plain text -#: puzzles.but:2788 +#: puzzles.but:2841 msgid "\\i{Signpost}" msgstr "" #. type: Plain text -#: puzzles.but:2790 +#: puzzles.but:2843 msgid "\\cfg{winhelp-topic}{games.signpost}" msgstr "" #. type: Plain text -#: puzzles.but:2800 +#: puzzles.but:2853 msgid "" "You have a grid of squares; each square (except the last one) contains an " "arrow, and some squares also contain numbers. Your job is to connect the " @@ -4990,38 +5080,38 @@ msgstr "" #. type: Plain text -#: puzzles.but:2803 +#: puzzles.but:2856 msgid "" "By convention the first and last numbers are shown; one or more interim " "numbers may also appear at the beginning." msgstr "" #. type: Plain text -#: puzzles.but:2806 +#: puzzles.but:2859 msgid "" "Credit for this puzzle goes to \\i{Janko} \\k{janko-arrowpath}, who call it " "\\q{Pfeilpfad} (\\q{arrow path})." msgstr "" #. type: Plain text -#: puzzles.but:2808 +#: puzzles.but:2861 msgid "Signpost was contributed to this collection by James Harvey." msgstr "" #. type: Plain text -#: puzzles.but:2811 +#: puzzles.but:2864 msgid "" "\\W{http://janko.at/Raetsel/Pfeilpfad/index.htm}\\cw{http://janko.at/Raetsel/" "Pfeilpfad/index.htm}" msgstr "" #. type: Plain text -#: puzzles.but:2813 +#: puzzles.but:2866 msgid "\\I{controls, for Signpost}Signpost controls" msgstr "" #. type: Plain text -#: puzzles.but:2818 +#: puzzles.but:2871 msgid "" "To play Signpost, you connect squares together by dragging from one square " "to another, indicating that they are adjacent in the sequence. Drag with the " @@ -5030,7 +5120,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2826 +#: puzzles.but:2879 msgid "" "If you connect together two squares in this way and one of them has a number " "in it, the appropriate number will appear in the other square. If you " @@ -5041,14 +5131,14 @@ msgstr "" #. type: Plain text -#: puzzles.but:2829 +#: puzzles.but:2882 msgid "" "When you left-click or right-click in a square, the legal squares to connect " "it to will be shown." msgstr "" #. type: Plain text -#: puzzles.but:2835 +#: puzzles.but:2888 msgid "" "The arrow in each square starts off black, and goes grey once you connect " "the square to its successor. Also, each square which needs a predecessor has " @@ -5058,7 +5148,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2839 +#: puzzles.but:2892 msgid "" "To remove any links for a particular square (both incoming and outgoing), " "left-drag it off the grid. To remove a whole chain, right-drag any square in " @@ -5066,7 +5156,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2846 +#: puzzles.but:2899 msgid "" "You can also use the cursor keys to move around the grid squares and lines. " "Pressing the return key when over a square starts a link operation, and " @@ -5077,17 +5167,17 @@ msgstr "" #. type: Plain text -#: puzzles.but:2850 +#: puzzles.but:2903 msgid "\\I{parameters, for Signpost}Signpost parameters" msgstr "" #. type: e{#1} -#: puzzles.but:2859 +#: puzzles.but:2912 msgid "Force start/end to corners" msgstr "" #. type: Plain text -#: puzzles.but:2863 +#: puzzles.but:2916 msgid "" "If true, the start and end squares are always placed in opposite corners " "(the start at the top left, and the end at the bottom right). If false the " @@ -5095,41 +5185,41 @@ msgstr "" #. type: Plain text -#: puzzles.but:2865 +#: puzzles.but:2918 msgid "\\i{Range}" msgstr "" #. type: Plain text -#: puzzles.but:2867 +#: puzzles.but:2920 msgid "\\cfg{winhelp-topic}{games.range}" msgstr "" #. type: Plain text -#: puzzles.but:2871 +#: puzzles.but:2924 msgid "" "You have a grid of squares; some squares contain numbers. Your job is to " "colour some of the squares black, such that several criteria are satisfied:" msgstr "" #. type: Plain text -#: puzzles.but:2873 +#: puzzles.but:2926 msgid "no square with a number is coloured black." msgstr "" #. type: Plain text -#: puzzles.but:2875 +#: puzzles.but:2928 msgid "no two black squares are adjacent (horizontally or vertically)." msgstr "" #. type: Plain text -#: puzzles.but:2878 +#: puzzles.but:2931 msgid "" "for any two white squares, there is a path between them using only white " "squares." msgstr "" #. type: Plain text -#: puzzles.but:2884 +#: puzzles.but:2937 msgid "" "for each square with a number, that number denotes the total number of white " "squares reachable from that square going in a straight line in any " @@ -5138,7 +5228,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2890 +#: puzzles.but:2943 msgid "" "For instance, a square containing the number one must have four black " "squares as its neighbours by the last criterion; but then it's impossible " @@ -5147,31 +5237,32 @@ msgstr "" #. type: Plain text -#: puzzles.but:2894 +#: puzzles.but:2947 msgid "" -"Credit for this puzzle goes to \\i{Nikoli}, who have variously called it \\q" -"{Kurodoko}, \\q{Kuromasu} or \\q{Where is Black Cells}. \\k{nikoli-range}." +"Credit for this puzzle goes to \\i{Nikoli}, who have variously called it " +"\\q{Kurodoko}, \\q{Kuromasu} or \\q{Where is Black Cells}. \\k{nikoli-" +"range}." msgstr "" #. type: Plain text -#: puzzles.but:2896 +#: puzzles.but:2949 msgid "Range was contributed to this collection by Jonas K\\u00F6{oe}lker." msgstr "" #. type: Plain text -#: puzzles.but:2899 +#: puzzles.but:2952 msgid "" -"\\W{http://www.nikoli.co.jp/en/puzzles/where_is_black_cells/}\\cw{http://www." -"nikoli.co.jp/en/puzzles/where_is_black_cells/}" +"\\W{http://www.nikoli.co.jp/en/puzzles/where_is_black_cells.html}\\cw{http://" +"www.nikoli.co.jp/en/puzzles/where_is_black_cells.html}" msgstr "" #. type: Plain text -#: puzzles.but:2901 +#: puzzles.but:2954 msgid "\\I{controls, for Range}Range controls" msgstr "" #. type: Plain text -#: puzzles.but:2907 +#: puzzles.but:2960 msgid "" "Click with the left button to paint a square black, or with the right button " "to mark a square with a dot to indicate that you are sure it should \\e{not} " @@ -5181,30 +5272,31 @@ msgstr "" #. type: Plain text -#: puzzles.but:2911 +#: puzzles.but:2966 msgid "" "You can also use the cursor keys to move around the grid squares. Pressing " "Return does the same as clicking with the left button, while pressing Space " -"does the same as a right button click." +"does the same as a right button click. Moving with the cursor keys while " +"holding Shift will place dots in all squares that are moved through." msgstr "" #. type: Plain text -#: puzzles.but:2915 +#: puzzles.but:2971 msgid "\\I{parameters, for Range}Range parameters" msgstr "" #. type: Plain text -#: puzzles.but:2924 +#: puzzles.but:2980 msgid "\\i{Pearl}" msgstr "" #. type: Plain text -#: puzzles.but:2926 +#: puzzles.but:2982 msgid "\\cfg{winhelp-topic}{games.pearl}" msgstr "" #. type: Plain text -#: puzzles.but:2934 +#: puzzles.but:2990 msgid "" "You have a grid of squares. Your job is to draw lines between the centres of " "horizontally or vertically adjacent squares, so that the lines form a single " @@ -5215,28 +5307,28 @@ msgstr "" #. type: Plain text -#: puzzles.but:2937 +#: puzzles.but:2993 msgid "" "Some of the squares contain black and white circles, which are clues that " "the loop must satisfy." msgstr "" #. type: Plain text -#: puzzles.but:2940 +#: puzzles.but:2996 msgid "" "A black circle in a square indicates that that square is a corner, but " "neither of the squares adjacent to it in the loop is also a corner." msgstr "" #. type: Plain text -#: puzzles.but:2943 +#: puzzles.but:2999 msgid "" "A white circle indicates that the square is a straight edge, but \\e{at " "least one} of the squares adjacent to it in the loop is a corner." msgstr "" #. type: Plain text -#: puzzles.but:2948 +#: puzzles.but:3004 msgid "" "(In both cases, the clue only constrains the two squares adjacent \\e{in the " "loop}, that is, the squares that the loop passes into after leaving the clue " @@ -5245,38 +5337,38 @@ msgstr "" #. type: Plain text -#: puzzles.but:2951 +#: puzzles.but:3007 msgid "" -"Credit for this puzzle goes to \\i{Nikoli}, who call it \\q{Masyu}. \\k" -"{nikoli-pearl}." +"Credit for this puzzle goes to \\i{Nikoli}, who call it \\q{Masyu}. " +"\\k{nikoli-pearl}" msgstr "" #. type: Plain text -#: puzzles.but:2953 +#: puzzles.but:3009 msgid "Thanks to James Harvey for assistance with the implementation." msgstr "" #. type: Plain text -#: puzzles.but:2956 +#: puzzles.but:3013 msgid "" -"\\W{http://www.nikoli.co.jp/en/puzzles/masyu/}\\cw{http://www.nikoli.co.jp/" -"en/puzzles/masyu/}" +"\\W{http://www.nikoli.co.jp/en/puzzles/masyu.html}\\cw{http://www.nikoli.co." +"jp/en/puzzles/masyu.html} (beware of Flash)" msgstr "" #. type: Plain text -#: puzzles.but:2958 +#: puzzles.but:3015 msgid "\\I{controls, for Pearl}Pearl controls" msgstr "" #. type: Plain text -#: puzzles.but:2961 +#: puzzles.but:3018 msgid "" "Click with the left button on a grid edge to draw a segment of the loop " "through that edge, or to remove a segment once it is drawn." msgstr "" #. type: Plain text -#: puzzles.but:2966 +#: puzzles.but:3023 msgid "" "Drag with the left button through a series of squares to draw more than one " "segment of the loop in one go. Alternatively, drag over an existing part of " @@ -5285,7 +5377,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2972 +#: puzzles.but:3029 msgid "" "Click with the right button on a grid edge to mark it with a cross, " "indicating that you are sure the loop does not go through that edge. (For " @@ -5295,32 +5387,38 @@ msgstr "" #. type: Plain text -#: puzzles.but:2978 +#: puzzles.but:3035 msgid "" "Alternatively, use the cursor keys to move the cursor. Use the Enter key to " -"begin and end keyboard `drag' operations. Use the Space key to cancel the " -"drag. Use Ctrl-arrowkey and Shift-arrowkey to simulate a left or right " -"click, respectively, on the edge in the given direction relative to the " -"cursor, i.e. to draw a segment or a cross." +"begin and end keyboard \\q{drag} operations. Use the Space, Escape or " +"Backspace keys to cancel the drag. Or, hold Control while dragging with the " +"cursor keys to toggle segments as you move between squares." msgstr "" #. type: Plain text -#: puzzles.but:2982 +#: puzzles.but:3038 +msgid "" +"Pressing Control-Shift-arrowkey or Shift-arrowkey simulates a left or right " +"click, respectively, on the edge in the direction of the key." +msgstr "" + +#. type: Plain text +#: puzzles.but:3042 msgid "\\I{parameters, for Pearl}Pearl parameters" msgstr "" #. type: Plain text -#: puzzles.but:2987 +#: puzzles.but:3047 msgid "\\i{Undead}" msgstr "" #. type: Plain text -#: puzzles.but:2989 +#: puzzles.but:3049 msgid "\\cfg{winhelp-topic}{games.undead}" msgstr "" #. type: Plain text -#: puzzles.but:2993 +#: puzzles.but:3053 msgid "" "You are given a grid of squares, some of which contain diagonal mirrors. " "Every square which is not a mirror must be filled with one of three types of " @@ -5328,7 +5426,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:2998 +#: puzzles.but:3058 msgid "" "Vampires can be seen directly, but are invisible when reflected in mirrors. " "Ghosts are the opposite way round: they can be seen in mirrors, but are " @@ -5336,7 +5434,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:3006 +#: puzzles.but:3066 msgid "" "You are also told the total number of each type of monster in the grid. Also " "around the edge of the grid are written numbers, which indicate how many " @@ -5347,36 +5445,36 @@ msgstr "" #. type: Plain text -#: puzzles.but:3009 +#: puzzles.but:3069 msgid "" "This puzzle type was invented by David Millar, under the name \\q{Haunted " "Mirror Maze}. See \\k{janko-undead} for more details." msgstr "" #. type: Plain text -#: puzzles.but:3011 +#: puzzles.but:3071 msgid "Undead was contributed to this collection by Steffen Bauer." msgstr "" #. type: Plain text -#: puzzles.but:3014 +#: puzzles.but:3074 msgid "" "\\W{http://www.janko.at/Raetsel/Spukschloss/index.htm}\\cw{http://www.janko." "at/Raetsel/Spukschloss/index.htm}" msgstr "" #. type: Plain text -#: puzzles.but:3016 +#: puzzles.but:3076 msgid "\\I{controls, for Undead}Undead controls" msgstr "" #. type: Plain text -#: puzzles.but:3018 +#: puzzles.but:3078 msgid "Undead has a similar control system to Solo, Unequal and Keen." msgstr "" #. type: Plain text -#: puzzles.but:3024 +#: puzzles.but:3084 msgid "" "To play Undead, click the mouse in any empty square and then type a letter " "on the keyboard indicating the type of monster: \\q{G} for a ghost, \\q{V} " @@ -5386,7 +5484,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:3030 +#: puzzles.but:3090 msgid "" "If you \\e{right}-click in a square and then type a letter, the " "corresponding monster will be shown in reduced size in that square, as a " @@ -5396,7 +5494,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:3036 +#: puzzles.but:3096 msgid "" "The game pays no attention to pencil marks, so exactly what you use them for " "is up to you: you can use them as reminders that a particular square needs " @@ -5406,14 +5504,14 @@ msgstr "" #. type: Plain text -#: puzzles.but:3039 +#: puzzles.but:3099 msgid "" "To erase a single pencil mark, right-click in the square and type the same " "letter again." msgstr "" #. type: Plain text -#: puzzles.but:3043 +#: puzzles.but:3103 msgid "" "All pencil marks in a square are erased when you left-click and type a " "monster letter, or when you left-click and press Space. Right-clicking and " @@ -5421,7 +5519,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:3049 +#: puzzles.but:3109 msgid "" "As for Solo, the cursor keys can be used in conjunction with the letter keys " "to place monsters or pencil marks. Use the cursor keys to move a highlight " @@ -5431,7 +5529,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:3053 +#: puzzles.but:3113 msgid "" "If you prefer plain letters of the alphabet to cute monster pictures, you " "can press \\q{A} to toggle between showing the monsters as monsters or " @@ -5439,22 +5537,22 @@ msgstr "" #. type: Plain text -#: puzzles.but:3057 +#: puzzles.but:3120 msgid "\\I{parameters, for Undead}Undead parameters" msgstr "" #. type: Plain text -#: puzzles.but:3070 +#: puzzles.but:3133 msgid "\\i{Unruly}" msgstr "" #. type: Plain text -#: puzzles.but:3072 +#: puzzles.but:3135 msgid "\\cfg{winhelp-topic}{games.unruly}" msgstr "" #. type: Plain text -#: puzzles.but:3078 +#: puzzles.but:3141 msgid "" "You are given a grid of squares, which you must colour either black or " "white. Some squares are provided as clues; the rest are left for you to fill " @@ -5464,31 +5562,31 @@ msgstr "" #. type: Plain text -#: puzzles.but:3081 +#: puzzles.but:3144 msgid "" "This puzzle type was invented by Adolfo Zanellati, under the name \\q{Tohu " "wa Vohu}. See \\k{janko-unruly} for more details." msgstr "" #. type: Plain text -#: puzzles.but:3083 +#: puzzles.but:3146 msgid "Unruly was contributed to this collection by Lennard Sprong." msgstr "" #. type: Plain text -#: puzzles.but:3086 +#: puzzles.but:3149 msgid "" "\\W{http://www.janko.at/Raetsel/Tohu-Wa-Vohu/index.htm}\\cw{http://www.janko." "at/Raetsel/Tohu-Wa-Vohu/index.htm}" msgstr "" #. type: Plain text -#: puzzles.but:3088 +#: puzzles.but:3151 msgid "\\I{controls, for Unruly}Unruly controls" msgstr "" #. type: Plain text -#: puzzles.but:3094 +#: puzzles.but:3157 msgid "" "To play Unruly, click the mouse in a square to change its colour. Left-" "clicking an empty square will turn it black, and right-clicking will turn it " @@ -5498,7 +5596,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:3099 +#: puzzles.but:3162 msgid "" "You can also use the cursor keys to move around the grid. Pressing the " "return or space keys will turn an empty square black or white respectively " @@ -5507,41 +5605,299 @@ msgstr "" #. type: Plain text -#: puzzles.but:3103 +#: puzzles.but:3166 msgid "\\I{parameters, for Unruly}Unruly parameters" msgstr "" #. type: Plain text -#: puzzles.but:3111 +#: puzzles.but:3174 msgid "" "Size of grid in squares. (Note that the rules of the game require both the " "width and height to be even numbers.)" msgstr "" #. type: e{#1} -#: puzzles.but:3117 +#: puzzles.but:3180 msgid "Unique rows and columns" msgstr "" #. type: Plain text -#: puzzles.but:3120 +#: puzzles.but:3183 msgid "" "If enabled, no two rows are permitted to have exactly the same pattern, and " "likewise columns. (A row and a column can match, though.)" msgstr "" #. type: Plain text -#: puzzles.but:3122 +#: puzzles.but:3185 +msgid "\\i{Flood}" +msgstr "" + +#. type: Plain text +#: puzzles.but:3187 +msgid "\\cfg{winhelp-topic}{games.flood}" +msgstr "" + +#. type: Plain text +#: puzzles.but:3194 +msgid "" +"You are given a grid of squares, coloured at random in multiple colours. In " +"each move, you can flood-fill the top left square in a colour of your choice " +"(i.e. every square reachable from the starting square by an orthogonally " +"connected path of squares all the same colour will be filled in the new " +"colour). As you do this, more and more of the grid becomes connected to the " +"starting square." +msgstr "" + +#. type: Plain text +#: puzzles.but:3199 +msgid "" +"Your aim is to make the whole grid the same colour, in as few moves as " +"possible. The game will set a limit on the number of moves, based on running " +"its own internal solver. You win if you can make the whole grid the same " +"colour in that many moves or fewer." +msgstr "" + +#. type: Plain text +#: puzzles.but:3202 +msgid "" +"I saw this game (with a fixed grid size, fixed number of colours, and fixed " +"move limit) at http://floodit.appspot.com (no longer accessible)." +msgstr "" + +#. type: Plain text +#: puzzles.but:3204 +msgid "\\I{controls, for Flood}Flood controls" +msgstr "" + +#. type: Plain text +#: puzzles.but:3209 +msgid "" +"To play Flood, click the mouse in a square. The top left corner and " +"everything connected to it will be flood-filled with the colour of the " +"square you clicked. Clicking a square the same colour as the top left corner " +"has no effect, and therefore does not count as a move." +msgstr "" + +#. type: Plain text +#: puzzles.but:3213 +msgid "" +"You can also use the cursor keys to move a cursor (outline black square) " +"around the grid. Pressing the return key will fill the top left corner in " +"the colour of the square under the cursor." +msgstr "" + +#. type: Plain text +#: puzzles.but:3217 +msgid "\\I{parameters, for Flood}Flood parameters" +msgstr "" + +#. type: Plain text +#: puzzles.but:3224 puzzles.but:3288 +msgid "Size of the grid, in squares." +msgstr "" + +#. type: Plain text +#: puzzles.but:3230 +msgid "" +"Number of colours used to fill the grid. Must be at least 3 (with two " +"colours there would only be one legal move at any stage, hence no choice to " +"make at all), and at most 10." +msgstr "" + +#. type: e{#1} +#: puzzles.but:3232 +msgid "Extra moves permitted" +msgstr "" + +#. type: Plain text +#: puzzles.but:3239 +msgid "" +"Controls the difficulty of the puzzle, by increasing the move limit. In each " +"new grid, Flood will run an internal solver to generate its own solution, " +"and then the value in this field will be added to the length of Flood's " +"solution to generate the game's move limit. So a value of 0 requires you to " +"be just as efficient as Flood's automated solver, and a larger value makes " +"it easier." +msgstr "" + +#. type: Plain text +#: puzzles.but:3248 +msgid "" +"(Note that Flood's internal solver will not necessarily find the shortest " +"possible solution, though I believe it's pretty close. For a real challenge, " +"set this value to 0 and then try to solve a grid in \\e{strictly fewer} " +"moves than the limit you're given!)" +msgstr "" + +#. type: Plain text +#: puzzles.but:3250 +msgid "\\i{Tracks}" +msgstr "" + +#. type: Plain text +#: puzzles.but:3252 +msgid "\\cfg{winhelp-topic}{games.tracks}" +msgstr "" + +#. type: Plain text +#: puzzles.but:3257 +msgid "" +"You are given a grid of squares, some of which are filled with train tracks. " +"You need to complete the track from A to B so that the rows and columns " +"contain the same number of track segments as are indicated in the clues to " +"the top and right of the grid." +msgstr "" + +#. type: Plain text +#: puzzles.but:3260 +msgid "" +"There are only straight and 90 degree curved rails, and the track may not " +"cross itself." +msgstr "" + +#. type: Plain text +#: puzzles.but:3262 +msgid "Tracks was contributed to this collection by James Harvey." +msgstr "" + +#. type: Plain text +#: puzzles.but:3264 +msgid "\\I{controls, for Tracks}Tracks controls" +msgstr "" + +#. type: Plain text +#: puzzles.but:3268 +msgid "" +"Left-clicking on an edge between two squares adds a track segment between " +"the two squares. Right-clicking on an edge adds a cross on the edge, " +"indicating no track is possible there." +msgstr "" + +#. type: Plain text +#: puzzles.but:3273 +msgid "" +"Left-clicking in a square adds a colour indicator showing that you know the " +"square must contain a track, even if you don't know which edges it crosses " +"yet. Right-clicking in a square adds a cross indicating it contains no track " +"segment." +msgstr "" + +#. type: Plain text +#: puzzles.but:3277 +msgid "" +"Left- or right-dragging between squares allows you to lay a straight line of " +"is-track or is-not-track indicators, useful for filling in rows or columns " +"to match the clue." +msgstr "" + +#. type: Plain text +#: puzzles.but:3281 +msgid "\\I{parameters, for Tracks}Tracks parameters" +msgstr "" + +#. type: Plain text +#: puzzles.but:3294 +msgid "" +"Controls the difficulty of the generated puzzle: at Tricky level, you are " +"required to make more deductions regarding disregarding moves that would " +"lead to impossible crossings later." +msgstr "" + +#. type: e{#1} +#: puzzles.but:3296 +msgid "Disallow consecutive 1 clues" +msgstr "" + +#. type: Plain text +#: puzzles.but:3303 +msgid "" +"Controls whether the Tracks game generation permits two adjacent rows or " +"columns to have a 1 clue, or permits the row or column of the track's " +"endpoint to have a 1 clue. By default this is not permitted, to avoid long " +"straight boring segments of track and make the games more twiddly and " +"interesting. If you want to restore the possibility, turn this option off." +msgstr "" + +#. type: Plain text +#: puzzles.but:3306 +msgid "\\i{Palisade}" +msgstr "" + +#. type: Plain text +#: puzzles.but:3308 +msgid "\\cfg{winhelp-topic}{games.palisade}" +msgstr "" + +#. type: Plain text +#: puzzles.but:3314 +msgid "" +"You're given a grid of squares, some of which contain numbers. Your goal is " +"to subdivide the grid into contiguous regions, all of the same (given) size, " +"such that each square containing a number is adjacent to exactly that many " +"edges (including those between the inside and the outside of the grid)." +msgstr "" + +#. type: Plain text +#: puzzles.but:3317 +msgid "" +"Credit for this puzzle goes to \\i{Nikoli}, who call it \\q{Five Cells}. " +"\\k{nikoli-palisade}." +msgstr "" + +#. type: Plain text +#: puzzles.but:3319 +msgid "Palisade was contributed to this collection by Jonas K\\u00F6{oe}lker." +msgstr "" + +#. type: Plain text +#: puzzles.but:3322 +msgid "" +"\\W{http://nikoli.co.jp/en/puzzles/five_cells.html}\\cw{http://nikoli.co.jp/" +"en/puzzles/five_cells.html}" +msgstr "" + +#. type: Plain text +#: puzzles.but:3324 +msgid "\\I{controls, for Palisade}Palisade controls" +msgstr "" + +#. type: Plain text +#: puzzles.but:3330 +msgid "" +"Left-click to place an edge. Right-click to indicate \\q{no edge}. " +"Alternatively, the arrow keys will move a keyboard cursor. Holding Control " +"while pressing an arrow key will place an edge. Press Shift-arrowkey to " +"switch off an edge. Repeat an action to perform its inverse." +msgstr "" + +#. type: Plain text +#: puzzles.but:3334 +msgid "\\I{parameters, for Palisade}Palisade parameters" +msgstr "" + +#. type: e{#1} +#: puzzles.but:3343 +msgid "Region size" +msgstr "" + +#. type: Plain text +#: puzzles.but:3345 +msgid "The size of the regions into which the grid must be subdivided." +msgstr "" + +#. type: Plain text +#: puzzles.but:3347 msgid "\\I{MIT licence}\\ii{Licence}" msgstr "" #. type: Plain text -#: puzzles.but:3124 +#: puzzles.but:3349 msgid "This software is \\i{copyright} 2004-2014 Simon Tatham." msgstr "" #. type: Plain text -#: puzzles.but:3128 +#: puzzles.but:3353 msgid "" "Portions copyright Richard Boulton, James Harvey, Mike Pinna, Jonas K" "\\u00F6{oe}lker, Dariusz Olszewski, Michael Schierl, Lambros Lambrou, Bernd " @@ -5549,7 +5905,7 @@ msgstr "" #. type: Plain text -#: puzzles.but:3136 +#: puzzles.but:3361 msgid "" "Permission is hereby granted, free of charge, to any person obtaining a copy " "of this software and associated documentation files (the \\q{Software}), to " @@ -5560,14 +5916,14 @@ msgstr "" #. type: Plain text -#: puzzles.but:3139 +#: puzzles.but:3364 msgid "" "The above copyright notice and this permission notice shall be included in " "all copies or substantial portions of the Software." msgstr "" #. type: Plain text -#: puzzles.but:3148 +#: puzzles.but:3373 msgid "" "THE SOFTWARE IS PROVIDED \\q{AS IS}, WITHOUT WARRANTY OF ANY KIND, EXPRESS " "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, " @@ -5579,143 +5935,143 @@ msgstr "" #. type: IM{#1} -#: puzzles.but:3149 +#: puzzles.but:3374 msgid "command-line" msgstr "" #. type: IM -#: puzzles.but:3149 +#: puzzles.but:3374 #, no-wrap msgid "{command line} command line" msgstr "" #. type: IM{#1} -#: puzzles.but:3151 puzzles.but:3152 +#: puzzles.but:3376 puzzles.but:3377 #, no-wrap msgid "default parameters, specifying" msgstr "" #. type: IM -#: puzzles.but:3152 +#: puzzles.but:3377 #, no-wrap msgid "preferences, specifying default" msgstr "" #. type: IM{#1} -#: puzzles.but:3154 puzzles.but:3155 +#: puzzles.but:3379 puzzles.but:3380 #, no-wrap msgid "Unix" msgstr "" #. type: IM -#: puzzles.but:3155 +#: puzzles.but:3380 #, no-wrap msgid "Linux" msgstr "" #. type: IM{#1} -#: puzzles.but:3157 puzzles.but:3158 +#: puzzles.but:3382 puzzles.but:3383 #, no-wrap msgid "generating game IDs" msgstr "" #. type: IM -#: puzzles.but:3158 +#: puzzles.but:3383 #, no-wrap msgid "game ID, generating" msgstr "" #. type: IM{#1} -#: puzzles.but:3160 +#: puzzles.but:3385 msgid "specific" msgstr "" #. type: IM -#: puzzles.but:3160 +#: puzzles.but:3385 #, no-wrap msgid "\\q{Specific}, menu option" msgstr "" #. type: IM{#1} -#: puzzles.but:3161 +#: puzzles.but:3386 msgid "custom" msgstr "" #. type: IM -#: puzzles.but:3161 +#: puzzles.but:3386 #, no-wrap msgid "\\q{Custom}, menu option" msgstr "" #. type: IM{#1} -#: puzzles.but:3163 puzzles.but:3164 +#: puzzles.but:3388 puzzles.but:3389 #, no-wrap msgid "game ID" msgstr "" #. type: IM -#: puzzles.but:3164 +#: puzzles.but:3389 #, no-wrap msgid "ID, game" msgstr "" #. type: IM{#1} -#: puzzles.but:3165 puzzles.but:3166 puzzles.but:3167 +#: puzzles.but:3390 puzzles.but:3391 puzzles.but:3392 #, no-wrap msgid "ID format" msgstr "" #. type: IM -#: puzzles.but:3166 +#: puzzles.but:3391 #, no-wrap msgid "format, ID" msgstr "" #. type: IM -#: puzzles.but:3167 +#: puzzles.but:3392 #, no-wrap msgid "game ID, format" msgstr "" #. type: IM{#1} -#: puzzles.but:3169 puzzles.but:3170 +#: puzzles.but:3394 puzzles.but:3395 #, no-wrap msgid "keys" msgstr "" #. type: IM -#: puzzles.but:3170 +#: puzzles.but:3395 #, no-wrap msgid "shortcuts (keyboard)" msgstr "" #. type: IM{#1} -#: puzzles.but:3172 puzzles.but:3173 +#: puzzles.but:3397 puzzles.but:3398 #, no-wrap msgid "initial state" msgstr "" #. type: IM -#: puzzles.but:3173 +#: puzzles.but:3398 #, no-wrap msgid "state, initial" msgstr "" #. type: IM{#1} -#: puzzles.but:3175 puzzles.but:3176 +#: puzzles.but:3400 puzzles.but:3401 #, no-wrap msgid "MIT licence" msgstr "" #. type: IM -#: puzzles.but:3176 +#: puzzles.but:3401 #, no-wrap msgid "licence, MIT" msgstr "" #. type: Plain text -#: puzzles.but:3178 -msgid "Simon Tatham's Portable Puzzle Collection, version 20140928.r10274" +#: puzzles.but:3403 +msgid "Simon Tatham's Portable Puzzle Collection, version 20160429.b31155b" msgstr "" #: blackbox.R @@ -5746,6 +6102,10 @@ msgid "Tile inversion puzzle" msgstr "" +#: flood.R +msgid "Flood-filling puzzle" +msgstr "" + #: galaxies.R msgid "Symmetric polyomino puzzle" msgstr "" @@ -5790,6 +6150,10 @@ msgid "Toroidal sliding network puzzle" msgstr "" +#: palisade.R +msgid "Grid-division puzzle" +msgstr "" + #: pattern.R msgid "Pattern puzzle" msgstr "" @@ -5838,6 +6202,10 @@ msgid "Tower-placing Latin square puzzle" msgstr "" +#: tracks.R +msgid "Path-finding railway track puzzle" +msgstr "" + #: twiddle.R msgid "Rotational sliding block puzzle" msgstr "" @@ -5911,61 +6279,61 @@ msgid "December" msgstr "" -#: mkmanpages.pl:90 +#: mkmanpages.pl:93 msgid "NAME" msgstr "" -#: mkmanpages.pl:92 +#: mkmanpages.pl:95 msgid "SYNOPSIS" msgstr "" #. Translator: abbreviation for 'number' -#: mkmanpages.pl:94 mkmanpages.pl:99 +#: mkmanpages.pl:97 mkmanpages.pl:102 msgid "n" msgstr "" #. Translator: abbreviation for 'width' -#: mkmanpages.pl:96 +#: mkmanpages.pl:99 msgid "w" msgstr "" #. Translator: abbreviation for 'height' -#: mkmanpages.pl:98 +#: mkmanpages.pl:101 msgid "h" msgstr "" -#: mkmanpages.pl:100 +#: mkmanpages.pl:103 msgid "game-parameters" msgstr "" -#: mkmanpages.pl:100 +#: mkmanpages.pl:103 msgid "game-ID" msgstr "" -#: mkmanpages.pl:101 +#: mkmanpages.pl:104 msgid "random-seed" msgstr "" -#: mkmanpages.pl:103 +#: mkmanpages.pl:106 msgid "DESCRIPTION" msgstr "" -#: mkmanpages.pl:106 +#: mkmanpages.pl:109 msgid "SEE ALSO" msgstr "" #. Translator: "Full documentation in ." -#: mkmanpages.pl:108 +#: mkmanpages.pl:111 #, perl-format msgid "Full documentation in %s." msgstr "" #. Translator: earlier in the manual page -#: mkmanpages.pl:119 +#: mkmanpages.pl:122 msgid "above" msgstr "" #. Translator: later in the manual page -#: mkmanpages.pl:122 +#: mkmanpages.pl:125 msgid "below" msgstr "" diff -Nru sgt-puzzles-20140928.r10274/debian/rules sgt-puzzles-20160429.b31155b/debian/rules --- sgt-puzzles-20140928.r10274/debian/rules 2014-10-01 21:04:48.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/debian/rules 2017-01-11 09:19:09.000000000 +0000 @@ -3,7 +3,7 @@ # We require some bash features override SHELL := /bin/bash -DEBIAN_VERSION := $(shell dpkg-parsechangelog | sed -r 's/^Version: //; t; d') +include /usr/share/dpkg/default.mk LANGUAGES := en $(patsubst debian/po/%.po,%,$(wildcard debian/po/*.po)) @@ -14,13 +14,17 @@ depcomp install-sh list.c missing preprocessed.but \ puzzles.cnt puzzles.hlp puzzles.txt +ifeq ($(DEB_HOST_ARCH), ppc64el) +CFLAGS := $(filter-out -O3,$(CFLAGS)) -O2 +endif + %: dh $@ override_dh_auto_configure: ./mkfiles.pl ./mkauto.sh - CPPFLAGS="-DDEBIAN_VERSION=\"\\\"$(DEBIAN_VERSION)\\\"\" -DHELP_BROWSER_PATH=\"\\\"yelp:khelpcenter:sensible-browser\\\"\"" ./configure --prefix=/usr --bindir=/usr/games --program-prefix=sgt- + CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS) -DDEBIAN_VERSION=\"\\\"$(DEB_VERSION)\\\"\"" LDFLAGS="$(LDFLAGS)" ./configure --prefix=/usr --bindir=/usr/games --program-prefix=sgt- [ -L po ] || ln -s debian/po po rm -f preprocessed.but @@ -28,6 +32,9 @@ $(MAKE) $(MAKE) -f Makefile.doc BINPREFIX=sgt- +# Disable running tests; upstream tarballs don't include the necessary files +override_dh_auto_test: + override_dh_auto_install: $(MAKE) DESTDIR=debian/sgt-puzzles install diff -Nru sgt-puzzles-20140928.r10274/debian/sgt-puzzles.links sgt-puzzles-20160429.b31155b/debian/sgt-puzzles.links --- sgt-puzzles-20140928.r10274/debian/sgt-puzzles.links 2014-10-01 21:03:55.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/debian/sgt-puzzles.links 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -usr/games/sgt-blackbox usr/games/blackboxgame -usr/games/sgt-bridges usr/games/bridges -usr/games/sgt-cube usr/games/cube -usr/games/sgt-dominosa usr/games/dominosa -usr/games/sgt-fifteen usr/games/fifteen -usr/games/sgt-filling usr/games/filling -usr/games/sgt-flip usr/games/flipgame -usr/games/sgt-galaxies usr/games/galaxies -usr/games/sgt-guess usr/games/guess -usr/games/sgt-inertia usr/games/inertia -usr/games/sgt-keen usr/games/keen -usr/games/sgt-lightup usr/games/lightup -usr/games/sgt-loopy usr/games/loopy -usr/games/sgt-magnets usr/games/magnets -usr/games/sgt-map usr/games/map -usr/games/sgt-mines usr/games/mines -usr/games/sgt-net usr/games/netgame -usr/games/sgt-netslide usr/games/netslide -usr/games/sgt-pattern usr/games/pattern -usr/games/sgt-pearl usr/games/pearl -usr/games/sgt-pegs usr/games/pegs -usr/games/sgt-range usr/games/range -usr/games/sgt-rect usr/games/rect -usr/games/sgt-samegame usr/games/samegame -usr/games/sgt-signpost usr/games/signpost -usr/games/sgt-singles usr/games/singles -usr/games/sgt-sixteen usr/games/sixteen -usr/games/sgt-slant usr/games/slant -usr/games/sgt-solo usr/games/solo -usr/games/sgt-tents usr/games/tents -usr/games/sgt-towers usr/games/towers -usr/games/sgt-twiddle usr/games/twiddle -usr/games/sgt-unequal usr/games/unequal -usr/games/sgt-untangle usr/games/untangle -usr/share/sgt-puzzles/help usr/share/doc/sgt-puzzles/html diff -Nru sgt-puzzles-20140928.r10274/debian/sgt-puzzles.menu sgt-puzzles-20160429.b31155b/debian/sgt-puzzles.menu --- sgt-puzzles-20140928.r10274/debian/sgt-puzzles.menu 2014-10-01 21:03:55.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/debian/sgt-puzzles.menu 2016-06-30 13:53:42.000000000 +0000 @@ -5,6 +5,7 @@ ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Fifteen" command="/usr/games/sgt-fifteen" ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Filling" command="/usr/games/sgt-filling" ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Flip" command="/usr/games/sgt-flip" +?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Flood" command="/usr/games/sgt-flood" ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Galaxies" command="/usr/games/sgt-galaxies" ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Guess" command="/usr/games/sgt-guess" ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Inertia" command="/usr/games/sgt-inertia" @@ -16,6 +17,7 @@ ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Mines" command="/usr/games/sgt-mines" ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Net" command="/usr/games/sgt-net" ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Netslide" command="/usr/games/sgt-netslide" +?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Palisade" command="/usr/games/sgt-palisade" ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Pattern" command="/usr/games/sgt-pattern" ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Pearl" command="/usr/games/sgt-pearl" ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Pegs" command="/usr/games/sgt-pegs" @@ -29,6 +31,7 @@ ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Solo" command="/usr/games/sgt-solo" ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Tents" command="/usr/games/sgt-tents" ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Towers" command="/usr/games/sgt-towers" +?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Tracks" command="/usr/games/sgt-tracks" ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Twiddle" command="/usr/games/sgt-twiddle" ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Unequal" command="/usr/games/sgt-unequal" ?package(sgt-puzzles):needs="x11" section="Games/Puzzles" title="Untangle" command="/usr/games/sgt-untangle" diff -Nru sgt-puzzles-20140928.r10274/depcomp sgt-puzzles-20160429.b31155b/depcomp --- sgt-puzzles-20140928.r10274/depcomp 2014-09-29 00:30:14.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/depcomp 2016-04-29 00:30:13.000000000 +0000 @@ -1,10 +1,9 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2012-03-27.16; # UTC +scriptversion=2013-05-30.07; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # 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 @@ -28,9 +27,9 @@ case $1 in '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] @@ -57,11 +56,65 @@ ;; esac +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + # A tabulation character. tab=' ' # A newline character. nl=' ' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 @@ -75,6 +128,9 @@ rm -f "$tmpdepfile" +# Avoid interferences from the environment. +gccflag= dashmflag= + # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case @@ -86,32 +142,32 @@ fi if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvisualcpp + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then - # This is just like msvc7 but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvc7 + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 fi if test "$depmode" = xlc; then - # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. - gccflag=-qmakedep=gcc,-MF - depmode=gcc + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc fi case "$depmode" in @@ -134,8 +190,7 @@ done "$@" stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -143,13 +198,17 @@ ;; gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then @@ -157,15 +216,14 @@ fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. + # The second -e expression handles DOS-style file names with drive + # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. @@ -174,15 +232,15 @@ ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. - tr ' ' "$nl" < "$tmpdepfile" | ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -200,8 +258,7 @@ "$@" -MDupdate "$tmpdepfile" fi stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -209,7 +266,6 @@ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" - # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in @@ -217,19 +273,15 @@ # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr "$nl" ' ' >> "$depfile" + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" - # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" + make_dummy_depfile fi rm -f "$tmpdepfile" ;; @@ -247,9 +299,8 @@ # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + set_dir_from "$object" + set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u @@ -262,9 +313,7 @@ "$@" -M fi stat=$? - - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi @@ -273,65 +322,113 @@ do test -f "$tmpdepfile" && break done - if test -f "$tmpdepfile"; then - # Each line is of the form 'foo.o: dependent.h'. - # Do two passes, one to just change these to - # '$object: dependent.h' and one to simply 'dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; -icc) - # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. - # However on - # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using '\': + # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... - # tcc 0.9.26 (FIXME still under development at the moment of writing) - # will emit a similar output, but also prepend the continuation lines - # with horizontal tabulation characters. - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" - # Each line is of the form 'foo.o: dependent.h', - # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to - # '$object: dependent.h' and one to simply 'dependent.h:'. - sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ - < "$tmpdepfile" > "$depfile" - sed ' - s/[ '"$tab"'][ '"$tab"']*/ /g - s/^ *// - s/ *\\*$// - s/^[^:]*: *// - /^$/d - /:$/d - s/$/ :/ - ' < "$tmpdepfile" >> "$depfile" + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -342,9 +439,8 @@ # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + set_dir_from "$object" + set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d @@ -355,8 +451,7 @@ "$@" +Maked fi stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi @@ -366,76 +461,61 @@ test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" else - echo "#dummy" > "$depfile" + make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in 'foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; msvc7) if test "$libtool" = yes; then @@ -446,8 +526,7 @@ "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" - if test "$stat" = 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -473,6 +552,7 @@ G p }' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; @@ -524,13 +604,14 @@ # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | - sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" - tr ' ' "$nl" < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -583,10 +664,12 @@ # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; @@ -622,10 +705,10 @@ esac done - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" @@ -657,15 +740,15 @@ shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; + set fnord "$@" + shift + shift + ;; *) - set fnord "$@" "$arg" - shift - shift - ;; + set fnord "$@" "$arg" + shift + shift + ;; esac done "$@" -E 2>/dev/null | diff -Nru sgt-puzzles-20140928.r10274/devel.but sgt-puzzles-20160429.b31155b/devel.but --- sgt-puzzles-20140928.r10274/devel.but 2014-09-29 00:30:06.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/devel.but 2016-04-29 00:30:09.000000000 +0000 @@ -4776,4 +4776,4 @@ Other than that, just use your common sense. -\versionid Simon Tatham's Portable Puzzle Collection, version 20140928.r10274 +\versionid Simon Tatham's Portable Puzzle Collection, version 20160429.b31155b diff -Nru sgt-puzzles-20140928.r10274/dominosa.c sgt-puzzles-20160429.b31155b/dominosa.c --- sgt-puzzles-20140928.r10274/dominosa.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/dominosa.c 2016-04-29 00:30:09.000000000 +0000 @@ -64,6 +64,8 @@ COL_DOMINOCLASH, COL_DOMINOTEXT, COL_EDGE, + COL_HIGHLIGHT_1, + COL_HIGHLIGHT_2, NCOLOURS }; @@ -944,16 +946,78 @@ static int game_can_format_as_text_now(const game_params *params) { - return TRUE; + return params->n < 1000; +} + +static void draw_domino(char *board, int start, char corner, + int dshort, int nshort, char cshort, + int dlong, int nlong, char clong) +{ + int go_short = nshort*dshort, go_long = nlong*dlong, i; + + board[start] = corner; + board[start + go_short] = corner; + board[start + go_long] = corner; + board[start + go_short + go_long] = corner; + + for (i = 1; i < nshort; ++i) { + int j = start + i*dshort, k = start + i*dshort + go_long; + if (board[j] != corner) board[j] = cshort; + if (board[k] != corner) board[k] = cshort; + } + + for (i = 1; i < nlong; ++i) { + int j = start + i*dlong, k = start + i*dlong + go_short; + if (board[j] != corner) board[j] = clong; + if (board[k] != corner) board[k] = clong; + } } static char *game_text_format(const game_state *state) { - return NULL; + int w = state->w, h = state->h, r, c; + int cw = 4, ch = 2, gw = cw*w + 2, gh = ch * h + 1, len = gw * gh; + char *board = snewn(len + 1, char); + + memset(board, ' ', len); + + for (r = 0; r < h; ++r) { + for (c = 0; c < w; ++c) { + int cell = r*ch*gw + cw*c, center = cell + gw*ch/2 + cw/2; + int i = r*w + c, num = state->numbers->numbers[i]; + + if (num < 100) { + board[center] = '0' + num % 10; + if (num >= 10) board[center - 1] = '0' + num / 10; + } else { + board[center+1] = '0' + num % 10; + board[center] = '0' + num / 10 % 10; + board[center-1] = '0' + num / 100; + } + + if (state->edges[i] & EDGE_L) board[center - cw/2] = '|'; + if (state->edges[i] & EDGE_R) board[center + cw/2] = '|'; + if (state->edges[i] & EDGE_T) board[center - gw] = '-'; + if (state->edges[i] & EDGE_B) board[center + gw] = '-'; + + if (state->grid[i] == i) continue; /* no domino pairing */ + if (state->grid[i] < i) continue; /* already done */ + assert (state->grid[i] == i + 1 || state->grid[i] == i + w); + if (state->grid[i] == i + 1) + draw_domino(board, cell, '+', gw, ch, '|', +1, 2*cw, '-'); + else if (state->grid[i] == i + w) + draw_domino(board, cell, '+', +1, cw, '-', gw, 2*ch, '|'); + } + board[r*ch*gw + gw - 1] = '\n'; + board[r*ch*gw + gw + gw - 1] = '\n'; + } + board[len - 1] = '\n'; + board[len] = '\0'; + return board; } struct game_ui { - int cur_x, cur_y, cur_visible; + int cur_x, cur_y, cur_visible, highlight_1, highlight_2; }; static game_ui *new_ui(const game_state *state) @@ -961,6 +1025,7 @@ game_ui *ui = snew(game_ui); ui->cur_x = ui->cur_y = 0; ui->cur_visible = 0; + ui->highlight_1 = ui->highlight_2 = -1; return ui; } @@ -1072,6 +1137,22 @@ sprintf(buf, "%c%d,%d", (int)(button == CURSOR_SELECT2 ? 'E' : 'D'), d1, d2); return dupstr(buf); + } else if (isdigit(button)) { + int n = state->params.n, num = button - '0'; + if (num > n) { + return NULL; + } else if (ui->highlight_1 == num) { + ui->highlight_1 = -1; + } else if (ui->highlight_2 == num) { + ui->highlight_2 = -1; + } else if (ui->highlight_1 == -1) { + ui->highlight_1 = num; + } else if (ui->highlight_2 == -1) { + ui->highlight_2 = num; + } else { + return NULL; + } + return ""; } return NULL; @@ -1277,6 +1358,14 @@ ret[COL_EDGE * 3 + 1] = ret[COL_BACKGROUND * 3 + 1] * 2 / 3; ret[COL_EDGE * 3 + 2] = ret[COL_BACKGROUND * 3 + 2] * 2 / 3; + ret[COL_HIGHLIGHT_1 * 3 + 0] = 0.85; + ret[COL_HIGHLIGHT_1 * 3 + 1] = 0.20; + ret[COL_HIGHLIGHT_1 * 3 + 2] = 0.20; + + ret[COL_HIGHLIGHT_2 * 3 + 0] = 0.30; + ret[COL_HIGHLIGHT_2 * 3 + 1] = 0.85; + ret[COL_HIGHLIGHT_2 * 3 + 2] = 0.20; + *ncolours = NCOLOURS; return ret; } @@ -1317,6 +1406,8 @@ * EDGE_* [0x100 -- 0xF00] * and must fit into an unsigned long (32 bits). */ +#define DF_HIGHLIGHT_1 0x10 +#define DF_HIGHLIGHT_2 0x20 #define DF_FLASH 0x40 #define DF_CLASH 0x80 @@ -1331,7 +1422,7 @@ #define IS_EMPTY(s,x,y) ((s)->grid[(y)*(s)->w+(x)] == ((y)*(s)->w+(x))) static void draw_tile(drawing *dr, game_drawstate *ds, const game_state *state, - int x, int y, int type) + int x, int y, int type, int highlight_1, int highlight_2) { int w = state->w /*, h = state->h */; int cx = COORD(x), cy = COORD(y); @@ -1427,6 +1518,12 @@ draw_rect_corners(dr, ox, oy, CURSOR_RADIUS+1, nc); } + if (flags & DF_HIGHLIGHT_1) { + nc = COL_HIGHLIGHT_1; + } else if (flags & DF_HIGHLIGHT_2) { + nc = COL_HIGHLIGHT_2; + } + sprintf(str, "%d", state->numbers->numbers[y*w+x]); draw_text(dr, cx+TILESIZE/2, cy+TILESIZE/2, FONT_VARIABLE, TILESIZE/2, ALIGN_HCENTRE | ALIGN_VCENTRE, nc, str); @@ -1489,8 +1586,8 @@ else c = TYPE_BLANK; + n1 = state->numbers->numbers[n]; if (c != TYPE_BLANK) { - n1 = state->numbers->numbers[n]; n2 = state->numbers->numbers[state->grid[n]]; di = DINDEX(n1, n2); if (used[di] > 1) @@ -1499,6 +1596,11 @@ c |= state->edges[n]; } + if (n1 == ui->highlight_1) + c |= DF_HIGHLIGHT_1; + if (n1 == ui->highlight_2) + c |= DF_HIGHLIGHT_2; + if (flashtime != 0) c |= DF_FLASH; /* we're flashing */ @@ -1515,7 +1617,8 @@ } if (ds->visible[n] != c) { - draw_tile(dr, ds, state, x, y, c); + draw_tile(dr, ds, state, x, y, c, + ui->highlight_1, ui->highlight_2); ds->visible[n] = c; } } @@ -1534,7 +1637,10 @@ { if (!oldstate->completed && newstate->completed && !oldstate->cheated && !newstate->cheated) + { + ui->highlight_1 = ui->highlight_2 = -1; return FLASH_TIME; + } return 0.0F; } @@ -1592,7 +1698,7 @@ else c = TYPE_BLANK; - draw_tile(dr, ds, state, x, y, c); + draw_tile(dr, ds, state, x, y, c, -1, -1); } } @@ -1616,7 +1722,7 @@ dup_game, free_game, TRUE, solve_game, - FALSE, game_can_format_as_text_now, game_text_format, + TRUE, game_can_format_as_text_now, game_text_format, new_ui, free_ui, encode_ui, diff -Nru sgt-puzzles-20140928.r10274/dominosa.R sgt-puzzles-20160429.b31155b/dominosa.R --- sgt-puzzles-20140928.r10274/dominosa.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/dominosa.R 2016-04-29 00:30:09.000000000 +0000 @@ -17,5 +17,5 @@ !end !begin >gamedesc.txt -dominosa:dominosa.exe:Dominosa:Domino tiling puzzle +dominosa:dominosa.exe:Dominosa:Domino tiling puzzle:Tile the rectangle with a full set of dominoes. !end diff -Nru sgt-puzzles-20140928.r10274/emcc.c sgt-puzzles-20160429.b31155b/emcc.c --- sgt-puzzles-20140928.r10274/emcc.c 2014-04-20 08:47:25.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/emcc.c 2016-04-29 00:30:09.000000000 +0000 @@ -48,6 +48,7 @@ */ #include +#include #include #include @@ -316,6 +317,8 @@ keyevent = keycode + (shift ? 0 : 32); } else if (keycode >= 48 && keycode <= 57) { keyevent = keycode; + } else if (keycode == 32) { /* space / CURSOR_SELECT2 */ + keyevent = keycode; } if (keyevent >= 0) { @@ -793,8 +796,6 @@ js_remove_type_dropdown(); have_presets_dropdown = FALSE; } else { - int preset; - presets = snewn(npresets, game_params *); for (i = 0; i < npresets; i++) { char *name; diff -Nru sgt-puzzles-20140928.r10274/fifteen.c sgt-puzzles-20160429.b31155b/fifteen.c --- sgt-puzzles-20140928.r10274/fifteen.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/fifteen.c 2016-04-29 00:30:09.000000000 +0000 @@ -25,6 +25,11 @@ #define Y(state, i) ( (i) / (state)->w ) #define C(state, x, y) ( (y) * (state)->w + (x) ) +#define PARITY_P(params, gap) (((X((params), (gap)) - ((params)->w - 1)) ^ \ + (Y((params), (gap)) - ((params)->h - 1)) ^ \ + (((params)->w * (params)->h) + 1)) & 1) +#define PARITY_S(state) PARITY_P((state), ((state)->gap_pos)) + enum { COL_BACKGROUND, COL_TEXT, @@ -231,9 +236,7 @@ * rather than 0,...,n-1; this is a cyclic permutation of * the starting point and hence is odd iff n is even.) */ - parity = ((X(params, gap) - (params->w-1)) ^ - (Y(params, gap) - (params->h-1)) ^ - (n+1)) & 1; + parity = PARITY_P(params, gap); /* * Try the last two tiles one way round. If that fails, swap @@ -462,42 +465,269 @@ int tilesize; }; +static int flip_cursor(int button) +{ + switch (button) { + case CURSOR_UP: return CURSOR_DOWN; + case CURSOR_DOWN: return CURSOR_UP; + case CURSOR_LEFT: return CURSOR_RIGHT; + case CURSOR_RIGHT: return CURSOR_LEFT; + } + return 0; +} + +static void next_move_3x2(int ax, int ay, int bx, int by, + int gx, int gy, int *dx, int *dy) +{ + /* When w = 3 and h = 2 and the tile going in the top left corner + * is at (ax, ay) and the tile going in the bottom left corner is + * at (bx, by) and the blank tile is at (gx, gy), how do you move? */ + + /* Hard-coded shortest solutions. Sorry. */ + static const unsigned char move[120] = { + 1,2,0,1,2,2, + 2,0,0,2,0,0, + 0,0,2,0,2,0, + 0,0,0,2,0,2, + 2,0,0,0,2,0, + + 0,3,0,1,1,1, + 3,0,3,2,1,2, + 2,1,1,0,1,0, + 2,1,2,1,0,1, + 1,2,0,2,1,2, + + 0,1,3,1,3,0, + 1,3,1,3,0,3, + 0,0,3,3,0,0, + 0,0,0,1,2,1, + 3,0,0,1,1,1, + + 3,1,1,1,3,0, + 1,1,1,1,1,1, + 1,3,1,1,3,0, + 1,1,3,3,1,3, + 1,3,0,0,0,0 + }; + static const struct { int dx, dy; } d[4] = {{+1,0},{-1,0},{0,+1},{0,-1}}; + + int ea = 3*ay + ax, eb = 3*by + bx, eg = 3*gy + gx, v; + if (eb > ea) --eb; + if (eg > ea) --eg; + if (eg > eb) --eg; + v = move[ea + eb*6 + eg*5*6]; + *dx = d[v].dx; + *dy = d[v].dy; +} + +static void next_move(int nx, int ny, int ox, int oy, int gx, int gy, + int tx, int ty, int w, int *dx, int *dy) +{ + const int to_tile_x = (gx < nx ? +1 : -1); + const int to_goal_x = (gx < tx ? +1 : -1); + const int gap_x_on_goal_side = ((nx-tx) * (nx-gx) > 0); + + assert (nx != tx || ny != ty); /* not already in place */ + assert (nx != gx || ny != gy); /* not placing the gap */ + assert (ty <= ny); /* because we're greedy (and flipping) */ + assert (ty <= gy); /* because we're greedy (and flipping) */ + + /* TODO: define a termination function. Idea: 0 if solved, or + * the number of moves to solve the next piece plus the number of + * further unsolved pieces times an upper bound on the number of + * moves required to solve any piece. If such a function can be + * found, we have (termination && (termination => correctness)). + * The catch is our temporary disturbance of 2x3 corners. */ + + /* handles end-of-row, when 3 and 4 are in the top right 2x3 box */ + if (tx == w - 2 && + ny <= ty + 2 && (nx == tx || nx == tx + 1) && + oy <= ty + 2 && (ox == tx || ox == tx + 1) && + gy <= ty + 2 && (gx == tx || gx == tx + 1)) + { + next_move_3x2(oy - ty, tx + 1 - ox, + ny - ty, tx + 1 - nx, + gy - ty, tx + 1 - gx, dy, dx); + *dx *= -1; + return; + } + + if (tx == w - 1) { + if (ny <= ty + 2 && (nx == tx || nx == tx - 1) && + gy <= ty + 2 && (gx == tx || gx == tx - 1)) { + next_move_3x2(ny - ty, tx - nx, 0, 1, gy - ty, tx - gx, dy, dx); + *dx *= -1; + } else if (gy == ty) + *dy = +1; + else if (nx != tx || ny != ty + 1) { + next_move((w - 1) - nx, ny, -1, -1, (w - 1) - gx, gy, + 0, ty + 1, -1, dx, dy); + *dx *= -1; + } else if (gx == nx) + *dy = -1; + else + *dx = +1; + return; + } + + /* note that *dy = -1 is unsafe when gy = ty + 1 and gx < tx */ + if (gy < ny) + if (nx == gx || (gy == ty && gx == tx)) + *dy = +1; + else if (!gap_x_on_goal_side) + *dx = to_tile_x; + else if (ny - ty > abs(nx - tx)) + *dx = to_tile_x; + else *dy = +1; + + else if (gy == ny) + if (nx == tx) /* then we know ny > ty */ + if (gx > nx || ny > ty + 1) + *dy = -1; /* ... so this is safe */ + else + *dy = +1; + else if (gap_x_on_goal_side) + *dx = to_tile_x; + else if (gy == ty || (gy == ty + 1 && gx < tx)) + *dy = +1; + else + *dy = -1; + + else if (nx == tx) /* gy > ny */ + if (gx > nx) + *dy = -1; + else + *dx = +1; + else if (gx == nx) + *dx = to_goal_x; + else if (gap_x_on_goal_side) + if (gy == ty + 1 && gx < tx) + *dx = to_tile_x; + else + *dy = -1; + + else if (ny - ty > abs(nx - tx)) + *dy = -1; + else + *dx = to_tile_x; +} + +static int compute_hint(const game_state *state, int *out_x, int *out_y) +{ + /* The overall solving process is this: + * 1. Find the next piece to be put in its place + * 2. Move it diagonally towards its place + * 3. Move it horizontally or vertically towards its place + * (Modulo the last two tiles at the end of each row/column) + */ + + int gx = X(state, state->gap_pos); + int gy = Y(state, state->gap_pos); + + int tx, ty, nx, ny, ox, oy, /* {target,next,next2}_{x,y} */ i; + int dx = 0, dy = 0; + + /* 1. Find the next piece + * if (there are no more unfinished columns than rows) { + * fill the top-most row, left to right + * } else { fill the left-most column, top to bottom } + */ + const int w = state->w, h = state->h, n = w*h; + int next_piece = 0, next_piece_2 = 0, solr = 0, solc = 0; + int unsolved_rows = h, unsolved_cols = w; + + assert(out_x); + assert(out_y); + + while (solr < h && solc < w) { + int start, step, stop; + if (unsolved_cols <= unsolved_rows) + start = solr*w + solc, step = 1, stop = unsolved_cols; + else + start = solr*w + solc, step = w, stop = unsolved_rows; + for (i = 0; i < stop; ++i) { + const int j = start + i*step; + if (state->tiles[j] != j + 1) { + next_piece = j + 1; + next_piece_2 = next_piece + step; + break; + } + } + if (i < stop) break; + + (unsolved_cols <= unsolved_rows) + ? (++solr, --unsolved_rows) + : (++solc, --unsolved_cols); + } + + if (next_piece == n) + return FALSE; + + /* 2, 3. Move the next piece towards its place */ + + /* gx, gy already set */ + tx = X(state, next_piece - 1); /* where we're going */ + ty = Y(state, next_piece - 1); + for (i = 0; i < n && state->tiles[i] != next_piece; ++i); + nx = X(state, i); /* where we're at */ + ny = Y(state, i); + for (i = 0; i < n && state->tiles[i] != next_piece_2; ++i); + ox = X(state, i); + oy = Y(state, i); + + if (unsolved_cols <= unsolved_rows) + next_move(nx, ny, ox, oy, gx, gy, tx, ty, w, &dx, &dy); + else + next_move(ny, nx, oy, ox, gy, gx, ty, tx, h, &dy, &dx); + + assert (dx || dy); + + *out_x = gx + dx; + *out_y = gy + dy; + return TRUE; +} + static char *interpret_move(const game_state *state, game_ui *ui, const game_drawstate *ds, int x, int y, int button) { - int gx, gy, dx, dy; + int cx = X(state, state->gap_pos), nx = cx; + int cy = Y(state, state->gap_pos), ny = cy; char buf[80]; button &= ~MOD_MASK; - gx = X(state, state->gap_pos); - gy = Y(state, state->gap_pos); - - if (button == CURSOR_RIGHT && gx > 0) - dx = gx - 1, dy = gy; - else if (button == CURSOR_LEFT && gx < state->w-1) - dx = gx + 1, dy = gy; - else if (button == CURSOR_DOWN && gy > 0) - dy = gy - 1, dx = gx; - else if (button == CURSOR_UP && gy < state->h-1) - dy = gy + 1, dx = gx; - else if (button == LEFT_BUTTON) { - dx = FROMCOORD(x); - dy = FROMCOORD(y); - if (dx < 0 || dx >= state->w || dy < 0 || dy >= state->h) + if (button == LEFT_BUTTON) { + nx = FROMCOORD(x); + ny = FROMCOORD(y); + if (nx < 0 || nx >= state->w || ny < 0 || ny >= state->h) return NULL; /* out of bounds */ - /* - * Any click location should be equal to the gap location - * in _precisely_ one coordinate. - */ - if ((dx == gx && dy == gy) || (dx != gx && dy != gy)) - return NULL; + } else if (IS_CURSOR_MOVE(button)) { + static int invert_cursor = -1; + if (invert_cursor == -1) { + char *env = getenv("FIFTEEN_INVERT_CURSOR"); + invert_cursor = (env && (env[0] == 'y' || env[0] == 'Y')); + } + button = flip_cursor(button); /* the default */ + if (invert_cursor) + button = flip_cursor(button); /* undoes the first flip */ + move_cursor(button, &nx, &ny, state->w, state->h, FALSE); + } else if ((button == 'h' || button == 'H') && !state->completed) { + if (!compute_hint(state, &nx, &ny)) + return NULL; /* shouldn't happen, since ^^we^^checked^^ */ } else return NULL; /* no move */ - sprintf(buf, "M%d,%d", dx, dy); - return dupstr(buf); + /* + * Any click location should be equal to the gap location + * in _precisely_ one coordinate. + */ + if ((cx == nx) ^ (cy == ny)) { + sprintf(buf, "M%d,%d", nx, ny); + return dupstr(buf); + } + + return NULL; } static game_state *execute_move(const game_state *from, const char *move) @@ -893,3 +1123,93 @@ FALSE, game_timing_state, 0, /* flags */ }; + +#ifdef STANDALONE_SOLVER + +int main(int argc, char **argv) +{ + game_params *params; + game_state *state; + char *id = NULL, *desc, *err; + int grade = FALSE; + char *progname = argv[0]; + + char buf[80]; + int limit, x, y, solvable; + + while (--argc > 0) { + char *p = *++argv; + if (!strcmp(p, "-v")) { + /* solver_show_working = TRUE; */ + } else if (!strcmp(p, "-g")) { + grade = TRUE; + } else if (*p == '-') { + fprintf(stderr, "%s: unrecognised option `%s'\n", progname, p); + return 1; + } else { + id = p; + } + } + + if (!id) { + fprintf(stderr, "usage: %s [-g | -v] \n", argv[0]); + return 1; + } + + desc = strchr(id, ':'); + if (!desc) { + fprintf(stderr, "%s: game id expects a colon in it\n", argv[0]); + return 1; + } + *desc++ = '\0'; + + params = default_params(); + decode_params(params, id); + err = validate_desc(params, desc); + if (err) { + free_params(params); + fprintf(stderr, "%s: %s\n", argv[0], err); + return 1; + } + + state = new_game(NULL, params, desc); + free_params(params); + + solvable = (PARITY_S(state) == perm_parity(state->tiles, state->n)); + if (grade || !solvable) { + free_game(state); + fputs(solvable ? "Game is solvable" : "Game is unsolvable", + grade ? stdout : stderr); + return !grade; + } + + for (limit = 5 * state->n * state->n * state->n; limit; --limit) { + game_state *next_state; + if (!compute_hint(state, &x, &y)) { + fprintf(stderr, "couldn't compute next move while solving %s:%s", + id, desc); + return 1; + } + printf("Move the space to (%d, %d), moving %d into the space\n", + x + 1, y + 1, state->tiles[C(state, x, y)]); + sprintf(buf, "M%d,%d", x, y); + next_state = execute_move(state, buf); + + free_game(state); + if (!next_state) { + fprintf(stderr, "invalid move when solving %s:%s\n", id, desc); + return 1; + } + state = next_state; + if (next_state->completed) { + free_game(state); + return 0; + } + } + + free_game(state); + fprintf(stderr, "ran out of moves for %s:%s\n", id, desc); + return 1; +} + +#endif diff -Nru sgt-puzzles-20140928.r10274/fifteen.R sgt-puzzles-20160429.b31155b/fifteen.R --- sgt-puzzles-20140928.r10274/fifteen.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/fifteen.R 2016-04-29 00:30:09.000000000 +0000 @@ -4,6 +4,9 @@ fifteen : [G] WINDOWS COMMON fifteen fifteen.res|noicon.res +fifteensolver : [U] fifteen[STANDALONE_SOLVER] STANDALONE +fifteensolver : [C] fifteen[STANDALONE_SOLVER] STANDALONE + ALL += fifteen[COMBINED] !begin am gtk @@ -15,5 +18,5 @@ !end !begin >gamedesc.txt -fifteen:fifteen.exe:Fifteen:Sliding block puzzle +fifteen:fifteen.exe:Fifteen:Sliding block puzzle:Slide the tiles around to arrange them into order. !end diff -Nru sgt-puzzles-20140928.r10274/filling.c sgt-puzzles-20160429.b31155b/filling.c --- sgt-puzzles-20140928.r10274/filling.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/filling.c 2016-04-29 00:30:09.000000000 +0000 @@ -11,13 +11,6 @@ * - the type should be somewhat big: board[i] = i * - Using shorts gives us 181x181 puzzles as upper bound. * - * - make a somewhat more clever solver - * + enable "ghost regions" of size > 1 - * - one can put an upper bound on the size of a ghost region - * by considering the board size and summing present hints. - * + for each square, for i=1..n, what is the distance to a region - * containing i? How full is the region? How is this useful? - * * - in board generation, after having merged regions such that no * more merges are necessary, try splitting (big) regions. * + it seems that smaller regions make for better puzzles; see @@ -91,7 +84,7 @@ *****************************************************************************/ struct game_params { - int h, w; + int w, h; }; struct shared_state { @@ -106,7 +99,9 @@ int completed, cheated; }; -static const struct game_params filling_defaults[3] = {{7, 9}, {9, 13}, {13, 17}}; +static const struct game_params filling_defaults[3] = { + {9, 7}, {13, 9}, {17, 13} +}; static game_params *default_params(void) { @@ -124,7 +119,7 @@ if (i < 0 || i >= lenof(filling_defaults)) return FALSE; *params = snew(game_params); **params = filling_defaults[i]; /* struct copy */ - sprintf(buf, "%dx%d", filling_defaults[i].h, filling_defaults[i].w); + sprintf(buf, "%dx%d", filling_defaults[i].w, filling_defaults[i].h); *name = dupstr(buf); return TRUE; @@ -302,6 +297,10 @@ int *board; int *connected; int nempty; + + /* Used internally by learn_bitmap_deductions; kept here to avoid + * mallocing/freeing them every time that function is called. */ + int *bm, *bmdsf, *bmminsize; }; static void print_board(int *board, int w, int h) { @@ -317,11 +316,73 @@ #define SENTINEL sz +static int mark_region(int *board, int w, int h, int i, int n, int m) { + int j; + + board[i] = -1; + + for (j = 0; j < 4; ++j) { + const int x = (i % w) + dx[j], y = (i / w) + dy[j], ii = w*y + x; + if (x < 0 || x >= w || y < 0 || y >= h) continue; + if (board[ii] == m) return FALSE; + if (board[ii] != n) continue; + if (!mark_region(board, w, h, ii, n, m)) return FALSE; + } + return TRUE; +} + +static int region_size(int *board, int w, int h, int i) { + const int sz = w * h; + int j, size, copy; + if (board[i] == 0) return 0; + copy = board[i]; + mark_region(board, w, h, i, board[i], SENTINEL); + for (size = j = 0; j < sz; ++j) { + if (board[j] != -1) continue; + ++size; + board[j] = copy; + } + return size; +} + +static void merge_ones(int *board, int w, int h) +{ + const int sz = w * h; + const int maxsize = min(max(max(w, h), 3), 9); + int i, j, k, change; + do { + change = FALSE; + for (i = 0; i < sz; ++i) { + if (board[i] != 1) continue; + + for (j = 0; j < 4; ++j, board[i] = 1) { + const int x = (i % w) + dx[j], y = (i / w) + dy[j]; + int oldsize, newsize, ok, ii = w*y + x; + if (x < 0 || x >= w || y < 0 || y >= h) continue; + if (board[ii] == maxsize) continue; + + oldsize = board[ii]; + board[i] = oldsize; + newsize = region_size(board, w, h, i); + + if (newsize > maxsize) continue; + + ok = mark_region(board, w, h, i, oldsize, newsize); + + for (k = 0; k < sz; ++k) + if (board[k] == -1) + board[k] = ok ? newsize : oldsize; + + if (ok) break; + } + if (j < 4) change = TRUE; + } + } while (change); +} + /* generate a random valid board; uses validate_board. */ static void make_board(int *board, int w, int h, random_state *rs) { - int *dsf; - - const unsigned int sz = w * h; + const int sz = w * h; /* w=h=2 is a special case which requires a number > max(w, h) */ /* TODO prove that this is the case ONLY for w=h=2. */ @@ -330,90 +391,74 @@ /* Note that if 1 in {w, h} then it's impossible to have a region * of size > w*h, so the special case only affects w=h=2. */ - int nboards = 0; - int i; + int i, change, *dsf; assert(w >= 1); assert(h >= 1); - assert(board); - dsf = snew_dsf(sz); /* implicit dsf_init */ - /* I abuse the board variable: when generating the puzzle, it - * contains a shuffled list of numbers {0, ..., nsq-1}. */ - for (i = 0; i < (int)sz; ++i) board[i] = i; + * contains a shuffled list of numbers {0, ..., sz-1}. */ + for (i = 0; i < sz; ++i) board[i] = i; - while (1) { - int change; - ++nboards; - shuffle(board, sz, sizeof (int), rs); - /* while the board can in principle be fixed */ - do { - change = FALSE; - for (i = 0; i < (int)sz; ++i) { - int a = SENTINEL; - int b = SENTINEL; - int c = SENTINEL; - const int aa = dsf_canonify(dsf, board[i]); - int cc = sz; - int j; - for (j = 0; j < 4; ++j) { - const int x = (board[i] % w) + dx[j]; - const int y = (board[i] / w) + dy[j]; - int bb; - if (x < 0 || x >= w || y < 0 || y >= h) continue; - bb = dsf_canonify(dsf, w*y + x); - if (aa == bb) continue; - else if (dsf_size(dsf, aa) == dsf_size(dsf, bb)) { - a = aa; - b = bb; - c = cc; - } else if (cc == sz) c = cc = bb; - } - if (a != SENTINEL) { - a = dsf_canonify(dsf, a); - assert(a != dsf_canonify(dsf, b)); - if (c != sz) assert(a != dsf_canonify(dsf, c)); - dsf_merge(dsf, a, c == sz? b: c); - /* if repair impossible; make a new board */ - if (dsf_size(dsf, a) > maxsize) goto retry; - change = TRUE; - } - } - } while (change); + dsf = snewn(sz, int); +retry: + dsf_init(dsf, sz); + shuffle(board, sz, sizeof (int), rs); - for (i = 0; i < (int)sz; ++i) board[i] = dsf_size(dsf, i); + do { + change = FALSE; /* as long as the board potentially has errors */ + for (i = 0; i < sz; ++i) { + const int square = dsf_canonify(dsf, board[i]); + const int size = dsf_size(dsf, square); + int merge = SENTINEL, min = maxsize - size + 1, error = FALSE; + int neighbour, neighbour_size, j; + + for (j = 0; j < 4; ++j) { + const int x = (board[i] % w) + dx[j]; + const int y = (board[i] / w) + dy[j]; + if (x < 0 || x >= w || y < 0 || y >= h) continue; - sfree(dsf); - printv("returning board number %d\n", nboards); - return; + neighbour = dsf_canonify(dsf, w*y + x); + if (square == neighbour) continue; - retry: - dsf_init(dsf, sz); - } - assert(FALSE); /* unreachable */ -} + neighbour_size = dsf_size(dsf, neighbour); + if (size == neighbour_size) error = TRUE; + + /* find the smallest neighbour to merge with, which + * wouldn't make the region too large. (This is + * guaranteed by the initial value of `min'.) */ + if (neighbour_size < min) { + min = neighbour_size; + merge = neighbour; + } + } + + /* if this square is not in error, leave it be */ + if (!error) continue; + + /* if it is, but we can't fix it, retry the whole board. + * Maybe we could fix it by merging the conflicting + * neighbouring region(s) into some of their neighbours, + * but just restarting works out fine. */ + if (merge == SENTINEL) goto retry; + + /* merge with the smallest neighbouring workable region. */ + dsf_merge(dsf, square, merge); + change = TRUE; + } + } while (change); -static int rhofree(int *hop, int start) { - int turtle = start, rabbit = hop[start]; - while (rabbit != turtle) { /* find a cycle */ - turtle = hop[turtle]; - rabbit = hop[hop[rabbit]]; - } - do { /* check that start is in the cycle */ - rabbit = hop[rabbit]; - if (start == rabbit) return 1; - } while (rabbit != turtle); - return 0; + for (i = 0; i < sz; ++i) board[i] = dsf_size(dsf, i); + merge_ones(board, w, h); + + sfree(dsf); } static void merge(int *dsf, int *connected, int a, int b) { int c; assert(dsf); assert(connected); - assert(rhofree(connected, a)); - assert(rhofree(connected, b)); a = dsf_canonify(dsf, a); b = dsf_canonify(dsf, b); if (a == b) return; @@ -421,8 +466,6 @@ c = connected[a]; connected[a] = connected[b]; connected[b] = c; - assert(rhofree(connected, a)); - assert(rhofree(connected, b)); } static void *memdup(const void *ptr, size_t len, size_t esz) { @@ -613,6 +656,7 @@ (s->board[idx] >= expandsize(s->board, s->dsf, w, h, i, s->board[idx])))) one = FALSE; + if (dsf_size(s->dsf, idx) == s->board[idx]) continue; assert(s->board[i] == EMPTY); s->board[i] = -SENTINEL; if (check_capacity(s->board, w, h, idx)) continue; @@ -735,14 +779,24 @@ /* for each connected component */ for (i = 0; i < sz; ++i) { - int j; + int j, slack; if (s->board[i] == EMPTY) continue; if (i != dsf_canonify(s->dsf, i)) continue; - if (dsf_size(s->dsf, i) == s->board[i]) continue; + slack = s->board[i] - dsf_size(s->dsf, i); + if (slack == 0) continue; assert(s->board[i] != 1); /* for each empty square */ for (j = 0; j < sz; ++j) { - if (s->board[j] != EMPTY) continue; + if (s->board[j] == EMPTY) { + /* if it's too far away from the CC, don't bother */ + int k = i, jx = j % w, jy = j / w; + do { + int kx = k % w, ky = k / w; + if (abs(kx - jx) + abs(ky - jy) <= slack) break; + k = s->connected[k]; + } while (i != k); + if (i == k) continue; /* not within range */ + } else continue; s->board[j] = -SENTINEL; if (check_capacity(s->board, w, h, i)) continue; /* if not expanding s->board[i] to s->board[j] implies @@ -760,6 +814,262 @@ return learn; } +#if 0 +static void print_bitmap(int *bitmap, int w, int h) { + if (verbose) { + int x, y; + for (y = 0; y < h; y++) { + for (x = 0; x < w; x++) { + printv(" %03x", bm[y*w+x]); + } + printv("\n"); + } + } +} +#endif + +static int learn_bitmap_deductions(struct solver_state *s, int w, int h) +{ + const int sz = w * h; + int *bm = s->bm; + int *dsf = s->bmdsf; + int *minsize = s->bmminsize; + int x, y, i, j, n; + int learn = FALSE; + + /* + * This function does deductions based on building up a bitmap + * which indicates the possible numbers that can appear in each + * grid square. If we can rule out all but one possibility for a + * particular square, then we've found out the value of that + * square. In particular, this is one of the few forms of + * deduction capable of inferring the existence of a 'ghost + * region', i.e. a region which has none of its squares filled in + * at all. + * + * The reasoning goes like this. A currently unfilled square S can + * turn out to contain digit n in exactly two ways: either S is + * part of an n-region which also includes some currently known + * connected component of squares with n in, or S is part of an + * n-region separate from _all_ currently known connected + * components. If we can rule out both possibilities, then square + * S can't contain digit n at all. + * + * The former possibility: if there's a region of size n + * containing both S and some existing component C, then that + * means the distance from S to C must be small enough that C + * could be extended to include S without becoming too big. So we + * can do a breadth-first search out from all existing components + * with n in them, to identify all the squares which could be + * joined to any of them. + * + * The latter possibility: if there's a region of size n that + * doesn't contain _any_ existing component, then it also can't + * contain any square adjacent to an existing component either. So + * we can identify all the EMPTY squares not adjacent to any + * existing square with n in, and group them into connected + * components; then any component of size less than n is ruled + * out, because there wouldn't be room to create a completely new + * n-region in it. + * + * In fact we process these possibilities in the other order. + * First we find all the squares not adjacent to an existing + * square with n in; then we winnow those by removing too-small + * connected components, to get the set of squares which could + * possibly be part of a brand new n-region; and finally we do the + * breadth-first search to add in the set of squares which could + * possibly be added to some existing n-region. + */ + + /* + * Start by initialising our bitmap to 'all numbers possible in + * all squares'. + */ + for (y = 0; y < h; y++) + for (x = 0; x < w; x++) + bm[y*w+x] = (1 << 10) - (1 << 1); /* bits 1,2,...,9 now set */ +#if 0 + printv("initial bitmap:\n"); + print_bitmap(bm, w, h); +#endif + + /* + * Now completely zero out the bitmap for squares that are already + * filled in (we aren't interested in those anyway). Also, for any + * filled square, eliminate its number from all its neighbours + * (because, as discussed above, the neighbours couldn't be part + * of a _new_ region with that number in it, and that's the case + * we consider first). + */ + for (y = 0; y < h; y++) { + for (x = 0; x < w; x++) { + i = y*w+x; + n = s->board[i]; + + if (n != EMPTY) { + bm[i] = 0; + + if (x > 0) + bm[i-1] &= ~(1 << n); + if (x+1 < w) + bm[i+1] &= ~(1 << n); + if (y > 0) + bm[i-w] &= ~(1 << n); + if (y+1 < h) + bm[i+w] &= ~(1 << n); + } + } + } +#if 0 + printv("bitmap after filled squares:\n"); + print_bitmap(bm, w, h); +#endif + + /* + * Now, for each n, we separately find the connected components of + * squares for which n is still a possibility. Then discard any + * component of size < n, because that component is too small to + * have a completely new n-region in it. + */ + for (n = 1; n <= 9; n++) { + dsf_init(dsf, sz); + + /* Build the dsf */ + for (y = 0; y < h; y++) + for (x = 0; x+1 < w; x++) + if (bm[y*w+x] & bm[y*w+(x+1)] & (1 << n)) + dsf_merge(dsf, y*w+x, y*w+(x+1)); + for (y = 0; y+1 < h; y++) + for (x = 0; x < w; x++) + if (bm[y*w+x] & bm[(y+1)*w+x] & (1 << n)) + dsf_merge(dsf, y*w+x, (y+1)*w+x); + + /* Query the dsf */ + for (i = 0; i < sz; i++) + if ((bm[i] & (1 << n)) && dsf_size(dsf, i) < n) + bm[i] &= ~(1 << n); + } +#if 0 + printv("bitmap after winnowing small components:\n"); + print_bitmap(bm, w, h); +#endif + + /* + * Now our bitmap includes every square which could be part of a + * completely new region, of any size. Extend it to include + * squares which could be part of an existing region. + */ + for (n = 1; n <= 9; n++) { + /* + * We're going to do a breadth-first search starting from + * existing connected components with cell value n, to find + * all cells they might possibly extend into. + * + * The quantity we compute, for each square, is 'minimum size + * that any existing CC would have to have if extended to + * include this square'. So squares already _in_ an existing + * CC are initialised to the size of that CC; then we search + * outwards using the rule that if a square's score is j, then + * its neighbours can't score more than j+1. + * + * Scores are capped at n+1, because if a square scores more + * than n then that's enough to know it can't possibly be + * reached by extending an existing region - we don't need to + * know exactly _how far_ out of reach it is. + */ + for (i = 0; i < sz; i++) { + if (s->board[i] == n) { + /* Square is part of an existing CC. */ + minsize[i] = dsf_size(s->dsf, i); + } else { + /* Otherwise, initialise to the maximum score n+1; + * we'll reduce this later if we find a neighbouring + * square with a lower score. */ + minsize[i] = n+1; + } + } + + for (j = 1; j < n; j++) { + /* + * Find neighbours of cells scoring j, and set their score + * to at most j+1. + * + * Doing the BFS this way means we need n passes over the + * grid, which isn't entirely optimal but it seems to be + * fast enough for the moment. This could probably be + * improved by keeping a linked-list queue of cells in + * some way, but I think you'd have to be a bit careful to + * insert things into the right place in the queue; this + * way is easier not to get wrong. + */ + for (y = 0; y < h; y++) { + for (x = 0; x < w; x++) { + i = y*w+x; + if (minsize[i] == j) { + if (x > 0 && minsize[i-1] > j+1) + minsize[i-1] = j+1; + if (x+1 < w && minsize[i+1] > j+1) + minsize[i+1] = j+1; + if (y > 0 && minsize[i-w] > j+1) + minsize[i-w] = j+1; + if (y+1 < h && minsize[i+w] > j+1) + minsize[i+w] = j+1; + } + } + } + } + + /* + * Now, every cell scoring at most n should have its 1<> 8) { val >>= 8; n += 8; } + if (val >> 4) { val >>= 4; n += 4; } + if (val >> 2) { val >>= 2; n += 2; } + if (val >> 1) { val >>= 1; n += 1; } + + /* Double-check that we ended up with a sensible + * answer. */ + assert(1 <= n); + assert(n <= 9); + assert(bm[i] == (1 << n)); + + if (s->board[i] == EMPTY) { + printv("learn: %d is only possibility at (%d, %d)\n", + n, i % w, i / w); + s->board[i] = n; + filled_square(s, w, h, i); + assert(s->nempty); + --s->nempty; + learn = TRUE; + } + } + } + + return learn; +} + static int solver(const int *orig, int w, int h, char **solution) { const int sz = w * h; @@ -769,6 +1079,9 @@ ss.connected = snewn(sz, int); /* connected[n] := n.next; */ /* cyclic disjoint singly linked lists, same partitioning as dsf. * The lists lets you iterate over a partition given any member */ + ss.bm = snewn(sz, int); + ss.bmdsf = snew_dsf(sz); + ss.bmminsize = snewn(sz, int); printv("trying to solve this:\n"); print_board(ss.board, w, h); @@ -778,6 +1091,7 @@ if (learn_blocked_expansion(&ss, w, h)) continue; if (learn_expand_or_one(&ss, w, h)) continue; if (learn_critical_square(&ss, w, h)) continue; + if (learn_bitmap_deductions(&ss, w, h)) continue; break; } while (ss.nempty); @@ -797,6 +1111,9 @@ sfree(ss.dsf); sfree(ss.board); sfree(ss.connected); + sfree(ss.bm); + sfree(ss.bmdsf); + sfree(ss.bmminsize); return !ss.nempty; } @@ -823,104 +1140,155 @@ return dsf; } -/* -static int filled(int *board, int *randomize, int k, int n) { - int i; - if (board == NULL) return FALSE; - if (randomize == NULL) return FALSE; - if (k > n) return FALSE; - for (i = 0; i < k; ++i) if (board[randomize[i]] == 0) return FALSE; - for (; i < n; ++i) if (board[randomize[i]] != 0) return FALSE; - return TRUE; -} -*/ +static void minimize_clue_set(int *board, int w, int h, random_state *rs) +{ + const int sz = w * h; + int *shuf = snewn(sz, int), i; + int *dsf, *next; -static int *g_board; -static int compare(const void *pa, const void *pb) { - if (!g_board) return 0; - return g_board[*(const int *)pb] - g_board[*(const int *)pa]; -} + for (i = 0; i < sz; ++i) shuf[i] = i; + shuffle(shuf, sz, sizeof (int), rs); -static void minimize_clue_set(int *board, int w, int h, int *randomize) { - const int sz = w * h; - int i; - int *board_cp = snewn(sz, int); - memcpy(board_cp, board, sz * sizeof (int)); + /* + * First, try to eliminate an entire region at a time if possible, + * because inferring the existence of a completely unclued region + * is a particularly good aspect of this puzzle type and we want + * to encourage it to happen. + * + * Begin by identifying the regions as linked lists of cells using + * the 'next' array. + */ + dsf = make_dsf(NULL, board, w, h); + next = snewn(sz, int); + for (i = 0; i < sz; ++i) { + int j = dsf_canonify(dsf, i); + if (i == j) { + /* First cell of a region; set next[i] = -1 to indicate + * end-of-list. */ + next[i] = -1; + } else { + /* Add this cell to a region which already has a + * linked-list head, by pointing the canonical element j + * at this one, and pointing this one in turn at wherever + * j previously pointed. (This should end up with the + * elements linked in the order 1,n,n-1,n-2,...,2, which + * is a bit weird-looking, but any order is fine.) + */ + assert(j < i); + next[i] = next[j]; + next[j] = i; + } + } - /* since more clues only helps and never hurts, one pass will do - * just fine: if we can remove clue n with k clues of index > n, - * we could have removed clue n with >= k clues of index > n. - * So an additional pass wouldn't do anything [use induction]. */ + /* + * Now loop over the grid cells in our shuffled order, and each + * time we encounter a region for the first time, try to remove it + * all. Then we set next[canonical index] to -2 rather than -1, to + * mark it as already tried. + * + * Doing this in a loop over _cells_, rather than extracting and + * shuffling a list of _regions_, is intended to skew the + * probabilities towards trying to remove larger regions first + * (but without anything as crudely predictable as enforcing that + * we _always_ process regions in descending size order). Region + * removals might well be mutually exclusive, and larger ghost + * regions are more interesting, so we want to bias towards them + * if we can. + */ for (i = 0; i < sz; ++i) { - if (board[randomize[i]] == EMPTY) continue; - board[randomize[i]] = EMPTY; - /* (rot.) symmetry tends to include _way_ too many hints */ - /* board[sz - randomize[i] - 1] = EMPTY; */ - if (!solver(board, w, h, NULL)) { - board[randomize[i]] = board_cp[randomize[i]]; - /* board[sz - randomize[i] - 1] = - board_cp[sz - randomize[i] - 1]; */ + int j = dsf_canonify(dsf, shuf[i]); + if (next[j] != -2) { + int tmp = board[j]; + int k; + + /* Blank out the whole thing. */ + for (k = j; k >= 0; k = next[k]) + board[k] = EMPTY; + + if (!solver(board, w, h, NULL)) { + /* Wasn't still solvable; reinstate it all */ + for (k = j; k >= 0; k = next[k]) + board[k] = tmp; + } + + /* Either way, don't try this region again. */ + next[j] = -2; } } + sfree(next); + sfree(dsf); - sfree(board_cp); + /* + * Now go through individual cells, in the same shuffled order, + * and try to remove each one by itself. + */ + for (i = 0; i < sz; ++i) { + int tmp = board[shuf[i]]; + board[shuf[i]] = EMPTY; + if (!solver(board, w, h, NULL)) board[shuf[i]] = tmp; + } + + sfree(shuf); +} + +static int encode_run(char *buffer, int run) +{ + int i = 0; + for (; run > 26; run -= 26) + buffer[i++] = 'z'; + if (run) + buffer[i++] = 'a' - 1 + run; + return i; } static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { - const int w = params->w; - const int h = params->h; - const int sz = w * h; - int *board = snewn(sz, int); - int *randomize = snewn(sz, int); - char *game_description = snewn(sz + 1, char); - int i; - - for (i = 0; i < sz; ++i) { - board[i] = EMPTY; - randomize[i] = i; - } + const int w = params->w, h = params->h, sz = w * h; + int *board = snewn(sz, int), i, j, run; + char *description = snewn(sz + 1, char); make_board(board, w, h, rs); - g_board = board; - qsort(randomize, sz, sizeof (int), compare); - minimize_clue_set(board, w, h, randomize); + minimize_clue_set(board, w, h, rs); - for (i = 0; i < sz; ++i) { + for (run = j = i = 0; i < sz; ++i) { assert(board[i] >= 0); assert(board[i] < 10); - game_description[i] = board[i] + '0'; + if (board[i] == 0) { + ++run; + } else { + j += encode_run(description + j, run); + run = 0; + description[j++] = board[i] + '0'; + } } - game_description[sz] = '\0'; - -/* - solver(board, w, h, aux); - print_board(board, w, h); -*/ + j += encode_run(description + j, run); + description[j++] = '\0'; - sfree(randomize); sfree(board); - return game_description; + return sresize(description, j, char); } static char *validate_desc(const game_params *params, const char *desc) { - int i; const int sz = params->w * params->h; const char m = '0' + max(max(params->w, params->h), 3); + int area; - printv("desc = '%s'; sz = %d\n", desc, sz); - - for (i = 0; desc[i] && i < sz; ++i) - if (!isdigit((unsigned char) *desc)) - return "non-digit in string"; - else if (desc[i] > m) - return "too large digit in string"; - if (desc[i]) return "string too long"; - else if (i < sz) return "string too short"; - return NULL; + for (area = 0; *desc; ++desc) { + if (*desc >= 'a' && *desc <= 'z') area += *desc - 'a' + 1; + else if (*desc >= '0' && *desc <= m) ++area; + else { + static char s[] = "Invalid character '%""' in game description"; + int n = sprintf(s, "Invalid character '%1c' in game description", + *desc); + assert(n + 1 <= lenof(s)); /* +1 for the terminating NUL */ + return s; + } + if (area > sz) return "Too much data to fit in grid"; + } + return (area < sz) ? "Not enough data to fill grid" : NULL; } static game_state *new_game(midend *me, const game_params *params, @@ -935,7 +1303,14 @@ state->shared->refcnt = 1; state->shared->params = *params; /* struct copy */ state->shared->clues = snewn(sz, int); - for (i = 0; i < sz; ++i) state->shared->clues[i] = desc[i] - '0'; + + for (i = 0; *desc; ++desc) { + if (*desc >= 'a' && *desc <= 'z') { + int j = *desc - 'a' + 1; + assert(i + j <= sz); + for (; j; --j) state->shared->clues[i++] = 0; + } else state->shared->clues[i++] = *desc - '0'; + } state->board = memdup(state->shared->clues, sz, sizeof (int)); return state; @@ -986,7 +1361,7 @@ struct game_ui { int *sel; /* w*h highlighted squares, or NULL */ - int cur_x, cur_y, cur_visible; + int cur_x, cur_y, cur_visible, keydragging; }; static game_ui *new_ui(const game_state *state) @@ -994,7 +1369,7 @@ game_ui *ui = snew(game_ui); ui->sel = NULL; - ui->cur_x = ui->cur_y = ui->cur_visible = 0; + ui->cur_x = ui->cur_y = ui->cur_visible = ui->keydragging = 0; return ui; } @@ -1023,6 +1398,7 @@ sfree(ui->sel); ui->sel = NULL; } + ui->keydragging = FALSE; } #define PREFERRED_TILE_SIZE 32 @@ -1079,35 +1455,58 @@ if (IS_CURSOR_MOVE(button)) { ui->cur_visible = 1; move_cursor(button, &ui->cur_x, &ui->cur_y, w, h, 0); + if (ui->keydragging) goto select_square; return ""; } - if (IS_CURSOR_SELECT(button)) { + if (button == CURSOR_SELECT) { if (!ui->cur_visible) { ui->cur_visible = 1; return ""; } + ui->keydragging = !ui->keydragging; + if (!ui->keydragging) return ""; + + select_square: if (!ui->sel) { ui->sel = snewn(w*h, int); memset(ui->sel, 0, w*h*sizeof(int)); } - if (state->shared->clues[w*ui->cur_y + ui->cur_x] == 0) - ui->sel[w*ui->cur_y + ui->cur_x] ^= 1; - return ""; + if (!state->shared->clues[w*ui->cur_y + ui->cur_x]) + ui->sel[w*ui->cur_y + ui->cur_x] = 1; + return ""; + } + if (button == CURSOR_SELECT2) { + if (!ui->cur_visible) { + ui->cur_visible = 1; + return ""; + } + if (!ui->sel) { + ui->sel = snewn(w*h, int); + memset(ui->sel, 0, w*h*sizeof(int)); + } + ui->keydragging = FALSE; + if (!state->shared->clues[w*ui->cur_y + ui->cur_x]) + ui->sel[w*ui->cur_y + ui->cur_x] ^= 1; + for (i = 0; i < w*h && !ui->sel[i]; i++); + if (i == w*h) { + sfree(ui->sel); + ui->sel = NULL; + } + return ""; } - switch (button) { - case ' ': - case '\r': - case '\n': - case '\b': - button = 0; - break; - default: - if (button < '0' || button > '9') return NULL; - button -= '0'; - if (button > (w == 2 && h == 2? 3: max(w, h))) return NULL; + if (button == '\b' || button == 27) { + sfree(ui->sel); + ui->sel = NULL; + ui->keydragging = FALSE; + return ""; } + if (button < '0' || button > '9') return NULL; + button -= '0'; + if (button > (w == 2 && h == 2 ? 3 : max(w, h))) return NULL; + ui->keydragging = FALSE; + for (i = 0; i < w*h; i++) { char buf[32]; if ((ui->sel && ui->sel[i]) || diff -Nru sgt-puzzles-20140928.r10274/filling.R sgt-puzzles-20160429.b31155b/filling.R --- sgt-puzzles-20140928.r10274/filling.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/filling.R 2016-04-29 00:30:09.000000000 +0000 @@ -20,5 +20,5 @@ !end !begin >gamedesc.txt -filling:filling.exe:Filling:Polyomino puzzle +filling:filling.exe:Filling:Polyomino puzzle:Mark every square with the area of its containing region. !end diff -Nru sgt-puzzles-20140928.r10274/findloop.c sgt-puzzles-20160429.b31155b/findloop.c --- sgt-puzzles-20140928.r10274/findloop.c 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/findloop.c 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,500 @@ +/* + * Routine for finding loops in graphs, reusable across multiple + * puzzles. + * + * The strategy is Tarjan's bridge-finding algorithm, which is + * designed to list all edges whose removal would disconnect a + * previously connected component of the graph. We're interested in + * exactly the reverse - edges that are part of a loop in the graph + * are precisely those which _wouldn't_ disconnect anything if removed + * (individually) - but of course flipping the sense of the output is + * easy. + */ + +#include "puzzles.h" + +struct findloopstate { + int parent, child, sibling, visited; + int index, minindex, maxindex; + int minreachable, maxreachable; + int bridge; +}; + +struct findloopstate *findloop_new_state(int nvertices) +{ + /* + * Allocate a findloopstate structure for each vertex, and one + * extra one at the end which will be the overall root of a + * 'super-tree', which links the whole graph together to make it + * as easy as possible to iterate over all the connected + * components. + */ + return snewn(nvertices + 1, struct findloopstate); +} + +void findloop_free_state(struct findloopstate *state) +{ + sfree(state); +} + +int findloop_is_loop_edge(struct findloopstate *pv, int u, int v) +{ + /* + * Since the algorithm is intended for finding bridges, and a + * bridge must be part of any spanning tree, it follows that there + * is at most one bridge per vertex. + * + * Furthermore, by finding a _rooted_ spanning tree (so that each + * bridge is a parent->child link), you can find an injection from + * bridges to vertices (namely, map each bridge to the vertex at + * its child end). + * + * So if the u-v edge is a bridge, then either v was u's parent + * when the algorithm ran and we set pv[u].bridge = v, or vice + * versa. + */ + return !(pv[u].bridge == v || pv[v].bridge == u); +} + +int findloop_run(struct findloopstate *pv, int nvertices, + neighbour_fn_t neighbour, void *ctx) +{ + int u, v, w, root, index; + int nbridges, nedges; + + root = nvertices; + + /* + * First pass: organise the graph into a rooted spanning forest. + * That is, a tree structure with a clear up/down orientation - + * every node has exactly one parent (which may be 'root') and + * zero or more children, and every parent-child link corresponds + * to a graph edge. + * + * (A side effect of this is to find all the connected components, + * which of course we could do less confusingly with a dsf - but + * then we'd have to do that *and* build the tree, so it's less + * effort to do it all at once.) + */ + for (v = 0; v <= nvertices; v++) { + pv[v].parent = root; + pv[v].child = -2; + pv[v].sibling = -1; + pv[v].visited = FALSE; + } + pv[root].child = -1; + nedges = 0; + debug(("------------- new find_loops, nvertices=%d\n", nvertices)); + for (v = 0; v < nvertices; v++) { + if (pv[v].parent == root) { + /* + * Found a new connected component. Enumerate and treeify + * it. + */ + pv[v].sibling = pv[root].child; + pv[root].child = v; + debug(("%d is new child of root\n", v)); + + u = v; + while (1) { + if (!pv[u].visited) { + pv[u].visited = TRUE; + + /* + * Enumerate the neighbours of u, and any that are + * as yet not in the tree structure (indicated by + * child==-2, and distinct from the 'visited' + * flag) become children of u. + */ + debug((" component pass: processing %d\n", u)); + for (w = neighbour(u, ctx); w >= 0; + w = neighbour(-1, ctx)) { + debug((" edge %d-%d\n", u, w)); + if (pv[w].child == -2) { + debug((" -> new child\n")); + pv[w].child = -1; + pv[w].sibling = pv[u].child; + pv[w].parent = u; + pv[u].child = w; + } + + /* While we're here, count the edges in the whole + * graph, so that we can easily check at the end + * whether all of them are bridges, i.e. whether + * no loop exists at all. */ + if (w > u) /* count each edge only in one direction */ + nedges++; + } + + /* + * Now descend in depth-first search. + */ + if (pv[u].child >= 0) { + u = pv[u].child; + debug((" descending to %d\n", u)); + continue; + } + } + + if (u == v) { + debug((" back at %d, done this component\n", u)); + break; + } else if (pv[u].sibling >= 0) { + u = pv[u].sibling; + debug((" sideways to %d\n", u)); + } else { + u = pv[u].parent; + debug((" ascending to %d\n", u)); + } + } + } + } + + /* + * Second pass: index all the vertices in such a way that every + * subtree has a contiguous range of indices. (Easily enough done, + * by iterating through the tree structure we just built and + * numbering its elements as if they were those of a sorted list.) + * + * For each vertex, we compute the min and max index of the + * subtree starting there. + * + * (We index the vertices in preorder, per Tarjan's original + * description, so that each vertex's min subtree index is its own + * index; but that doesn't actually matter; either way round would + * do. The important thing is that we have a simple arithmetic + * criterion that tells us whether a vertex is in a given subtree + * or not.) + */ + debug(("--- begin indexing pass\n")); + index = 0; + for (v = 0; v < nvertices; v++) + pv[v].visited = FALSE; + pv[root].visited = TRUE; + u = pv[root].child; + while (1) { + if (!pv[u].visited) { + pv[u].visited = TRUE; + + /* + * Index this node. + */ + pv[u].minindex = pv[u].index = index; + debug((" vertex %d <- index %d\n", u, index)); + index++; + + /* + * Now descend in depth-first search. + */ + if (pv[u].child >= 0) { + u = pv[u].child; + debug((" descending to %d\n", u)); + continue; + } + } + + if (u == root) { + debug((" back at %d, done indexing\n", u)); + break; + } + + /* + * As we re-ascend to here from its children (or find that we + * had no children to descend to in the first place), fill in + * its maxindex field. + */ + pv[u].maxindex = index-1; + debug((" vertex %d <- maxindex %d\n", u, pv[u].maxindex)); + + if (pv[u].sibling >= 0) { + u = pv[u].sibling; + debug((" sideways to %d\n", u)); + } else { + u = pv[u].parent; + debug((" ascending to %d\n", u)); + } + } + + /* + * We're ready to generate output now, so initialise the output + * fields. + */ + for (v = 0; v < nvertices; v++) + pv[v].bridge = -1; + + /* + * Final pass: determine the min and max index of the vertices + * reachable from every subtree, not counting the link back to + * each vertex's parent. Then our criterion is: given a vertex u, + * defining a subtree consisting of u and all its descendants, we + * compare the range of vertex indices _in_ that subtree (which is + * just the minindex and maxindex of u) with the range of vertex + * indices in the _neighbourhood_ of the subtree (computed in this + * final pass, and not counting u's own edge to its parent), and + * if the latter includes anything outside the former, then there + * must be some path from u to outside its subtree which does not + * go through the parent edge - i.e. the edge from u to its parent + * is part of a loop. + */ + debug(("--- begin min-max pass\n")); + nbridges = 0; + for (v = 0; v < nvertices; v++) + pv[v].visited = FALSE; + u = pv[root].child; + pv[root].visited = TRUE; + while (1) { + if (!pv[u].visited) { + pv[u].visited = TRUE; + + /* + * Look for vertices reachable directly from u, including + * u itself. + */ + debug((" processing vertex %d\n", u)); + pv[u].minreachable = pv[u].maxreachable = pv[u].minindex; + for (w = neighbour(u, ctx); w >= 0; w = neighbour(-1, ctx)) { + debug((" edge %d-%d\n", u, w)); + if (w != pv[u].parent) { + int i = pv[w].index; + if (pv[u].minreachable > i) + pv[u].minreachable = i; + if (pv[u].maxreachable < i) + pv[u].maxreachable = i; + } + } + debug((" initial min=%d max=%d\n", + pv[u].minreachable, pv[u].maxreachable)); + + /* + * Now descend in depth-first search. + */ + if (pv[u].child >= 0) { + u = pv[u].child; + debug((" descending to %d\n", u)); + continue; + } + } + + if (u == root) { + debug((" back at %d, done min-maxing\n", u)); + break; + } + + /* + * As we re-ascend to this vertex, go back through its + * immediate children and do a post-update of its min/max. + */ + for (v = pv[u].child; v >= 0; v = pv[v].sibling) { + if (pv[u].minreachable > pv[v].minreachable) + pv[u].minreachable = pv[v].minreachable; + if (pv[u].maxreachable < pv[v].maxreachable) + pv[u].maxreachable = pv[v].maxreachable; + } + + debug((" postorder update of %d: min=%d max=%d (indices %d-%d)\n", u, + pv[u].minreachable, pv[u].maxreachable, + pv[u].minindex, pv[u].maxindex)); + + /* + * And now we know whether each to our own parent is a bridge. + */ + if ((v = pv[u].parent) != root) { + if (pv[u].minreachable >= pv[u].minindex && + pv[u].maxreachable <= pv[u].maxindex) { + /* Yes, it's a bridge. */ + pv[u].bridge = v; + nbridges++; + debug((" %d-%d is a bridge\n", v, u)); + } else { + debug((" %d-%d is not a bridge\n", v, u)); + } + } + + if (pv[u].sibling >= 0) { + u = pv[u].sibling; + debug((" sideways to %d\n", u)); + } else { + u = pv[u].parent; + debug((" ascending to %d\n", u)); + } + } + + debug(("finished, nedges=%d nbridges=%d\n", nedges, nbridges)); + + /* + * Done. + */ + return nbridges < nedges; +} + +/* + * Appendix: the long and painful history of loop detection in these puzzles + * ========================================================================= + * + * For interest, I thought I'd write up the five loop-finding methods + * I've gone through before getting to this algorithm. It's a case + * study in all the ways you can solve this particular problem + * wrongly, and also how much effort you can waste by not managing to + * find the existing solution in the literature :-( + * + * Vertex dsf + * ---------- + * + * Initially, in puzzles where you need to not have any loops in the + * solution graph, I detected them by using a dsf to track connected + * components of vertices. Iterate over each edge unifying the two + * vertices it connects; but before that, check if the two vertices + * are _already_ known to be connected. If so, then the new edge is + * providing a second path between them, i.e. a loop exists. + * + * That's adequate for automated solvers, where you just need to know + * _whether_ a loop exists, so as to rule out that move and do + * something else. But during play, you want to do better than that: + * you want to _point out_ the loops with error highlighting. + * + * Graph pruning + * ------------- + * + * So my second attempt worked by iteratively pruning the graph. Find + * a vertex with degree 1; remove that edge; repeat until you can't + * find such a vertex any more. This procedure will remove *every* + * edge of the graph if and only if there were no loops; so if there + * are any edges remaining, highlight them. + * + * This successfully highlights loops, but not _only_ loops. If the + * graph contains a 'dumb-bell' shaped subgraph consisting of two + * loops connected by a path, then we'll end up highlighting the + * connecting path as well as the loops. That's not what we wanted. + * + * Vertex dsf with ad-hoc loop tracing + * ----------------------------------- + * + * So my third attempt was to go back to the dsf strategy, only this + * time, when you detect that a particular edge connects two + * already-connected vertices (and hence is part of a loop), you try + * to trace round that loop to highlight it - before adding the new + * edge, search for a path between its endpoints among the edges the + * algorithm has already visited, and when you find one (which you + * must), highlight the loop consisting of that path plus the new + * edge. + * + * This solves the dumb-bell problem - we definitely now cannot + * accidentally highlight any edge that is *not* part of a loop. But + * it's far from clear that we'll highlight *every* edge that *is* + * part of a loop - what if there were multiple paths between the two + * vertices? It would be difficult to guarantee that we'd always catch + * every single one. + * + * On the other hand, it is at least guaranteed that we'll highlight + * _something_ if any loop exists, and in other error highlighting + * situations (see in particular the Tents connected component + * analysis) I've been known to consider that sufficient. So this + * version hung around for quite a while, until I had a better idea. + * + * Face dsf + * -------- + * + * Round about the time Loopy was being revamped to include non-square + * grids, I had a much cuter idea, making use of the fact that the + * graph is planar, and hence has a concept of faces. + * + * In Loopy, there are really two graphs: the 'grid', consisting of + * all the edges that the player *might* fill in, and the solution + * graph of the edges the player actually *has* filled in. The + * algorithm is: set up a dsf on the *faces* of the grid. Iterate over + * each edge of the grid which is _not_ marked by the player as an + * edge of the solution graph, unifying the faces on either side of + * that edge. This groups the faces into connected components. Now, + * there is more than one connected component iff a loop exists, and + * moreover, an edge of the solution graph is part of a loop iff the + * faces on either side of it are in different connected components! + * + * This is the first algorithm I came up with that I was confident + * would successfully highlight exactly the correct set of edges in + * all cases. It's also conceptually elegant, and very easy to + * implement and to be confident you've got it right (since it just + * consists of two very simple loops over the edge set, one building + * the dsf and one reading it off). I was very pleased with it. + * + * Doing the same thing in Slant is slightly more difficult because + * the set of edges the user can fill in do not form a planar graph + * (the two potential edges in each square cross in the middle). But + * you can still apply the same principle by considering the 'faces' + * to be diamond-shaped regions of space around each horizontal or + * vertical grid line. Equivalently, pretend each edge added by the + * player is really divided into two edges, each from a square-centre + * to one of the square's corners, and now the grid graph is planar + * again. + * + * However, it fell down when - much later - I tried to implement the + * same algorithm in Net. + * + * Net doesn't *absolutely need* loop detection, because of its system + * of highlighting squares connected to the source square: an argument + * involving counting vertex degrees shows that if any loop exists, + * then it must be counterbalanced by some disconnected square, so + * there will be _some_ error highlight in any invalid grid even + * without loop detection. However, in large complicated cases, it's + * still nice to highlight the loop itself, so that once the player is + * clued in to its existence by a disconnected square elsewhere, they + * don't have to spend forever trying to find it. + * + * The new wrinkle in Net, compared to other loop-disallowing puzzles, + * is that it can be played with wrapping walls, or - topologically + * speaking - on a torus. And a torus has a property that algebraic + * topologists would know of as a 'non-trivial H_1 homology group', + * which essentially means that there can exist a loop on a torus + * which *doesn't* separate the surface into two regions disconnected + * from each other. + * + * In other words, using this algorithm in Net will do fine at finding + * _small_ localised loops, but a large-scale loop that goes (say) off + * the top of the grid, back on at the bottom, and meets up in the + * middle again will not be detected. + * + * Footpath dsf + * ------------ + * + * To solve this homology problem in Net, I hastily thought up another + * dsf-based algorithm. + * + * This time, let's consider each edge of the graph to be a road, with + * a separate pedestrian footpath down each side. We'll form a dsf on + * those imaginary segments of footpath. + * + * At each vertex of the graph, we go round the edges leaving that + * vertex, in order around the vertex. For each pair of edges adjacent + * in this order, we unify their facing pair of footpaths (e.g. if + * edge E appears anticlockwise of F, then we unify the anticlockwise + * footpath of F with the clockwise one of E) . In particular, if a + * vertex has degree 1, then the two footpaths on either side of its + * single edge are unified. + * + * Then, an edge is part of a loop iff its two footpaths are not + * reachable from one another. + * + * This algorithm is almost as simple to implement as the face dsf, + * and it works on a wider class of graphs embedded in plane-like + * surfaces; in particular, it fixes the torus bug in the face-dsf + * approach. However, it still depends on the graph having _some_ sort + * of embedding in a 2-manifold, because it relies on there being a + * meaningful notion of 'order of edges around a vertex' in the first + * place, so you couldn't use it on a wildly nonplanar graph like the + * diamond lattice. Also, more subtly, it depends on the graph being + * embedded in an _orientable_ surface - and that's a thing that might + * much more plausibly change in future puzzles, because it's not at + * all unlikely that at some point I might feel moved to implement a + * puzzle that can be played on the surface of a Mobius strip or a + * Klein bottle. And then even this algorithm won't work. + * + * Tarjan's bridge-finding algorithm + * --------------------------------- + * + * And so, finally, we come to the algorithm above. This one is pure + * graph theory: it doesn't depend on any concept of 'faces', or 'edge + * ordering around a vertex', or any other trapping of a planar or + * quasi-planar graph embedding. It should work on any graph + * whatsoever, and reliably identify precisely the set of edges that + * form part of some loop. So *hopefully* this long string of failures + * has finally come to an end... + */ diff -Nru sgt-puzzles-20140928.r10274/flip.c sgt-puzzles-20160429.b31155b/flip.c --- sgt-puzzles-20140928.r10274/flip.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/flip.c 2016-04-29 00:30:09.000000000 +0000 @@ -859,11 +859,46 @@ return TRUE; } +#define RIGHT 1 +#define DOWN gw + static char *game_text_format(const game_state *state) { - return NULL; + int w = state->w, h = state->h, wh = w*h, r, c, dx, dy; + int cw = 4, ch = 4, gw = w * cw + 2, gh = h * ch + 1, len = gw * gh; + char *board = snewn(len + 1, char); + + memset(board, ' ', len - 1); + + for (r = 0; r < h; ++r) { + for (c = 0; c < w; ++c) { + int cell = r*ch*gw + c*cw, center = cell+(ch/2)*DOWN + cw/2*RIGHT; + char flip = (state->grid[r*w + c] & 1) ? '#' : '.'; + for (dy = -1 + (r == 0); dy <= 1 - (r == h - 1); ++dy) + for (dx = -1 + (c == 0); dx <= 1 - (c == w - 1); ++dx) + if (state->matrix->matrix[(r*w+c)*wh + ((r+dy)*w + c+dx)]) + board[center + dy*DOWN + dx*RIGHT] = flip; + board[cell] = '+'; + for (dx = 1; dx < cw; ++dx) board[cell+dx*RIGHT] = '-'; + for (dy = 1; dy < ch; ++dy) board[cell+dy*DOWN] = '|'; + } + board[r*ch*gw + gw - 2] = '+'; + board[r*ch*gw + gw - 1] = '\n'; + for (dy = 1; dy < ch; ++dy) { + board[r*ch*gw + gw - 2 + dy*DOWN] = '|'; + board[r*ch*gw + gw - 1 + dy*DOWN] = '\n'; + } + } + memset(board + len - gw, '-', gw - 2); + for (c = 0; c <= w; ++c) board[len - gw + cw*c] = '+'; + board[len - 1] = '\n'; + board[len] = '\0'; + return board; } +#undef RIGHT +#undef DOWN + struct game_ui { int cx, cy, cdraw; }; @@ -1291,7 +1326,7 @@ dup_game, free_game, TRUE, solve_game, - FALSE, game_can_format_as_text_now, game_text_format, + TRUE, game_can_format_as_text_now, game_text_format, new_ui, free_ui, encode_ui, diff -Nru sgt-puzzles-20140928.r10274/flip.R sgt-puzzles-20160429.b31155b/flip.R --- sgt-puzzles-20140928.r10274/flip.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/flip.R 2016-04-29 00:30:09.000000000 +0000 @@ -17,5 +17,5 @@ !end !begin >gamedesc.txt -flip:flip.exe:Flip:Tile inversion puzzle +flip:flip.exe:Flip:Tile inversion puzzle:Flip groups of squares to light them all up at once. !end diff -Nru sgt-puzzles-20140928.r10274/flood.c sgt-puzzles-20160429.b31155b/flood.c --- sgt-puzzles-20140928.r10274/flood.c 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/flood.c 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,1372 @@ +/* + * flood.c: puzzle in which you make a grid all the same colour by + * repeatedly flood-filling the top left corner, and try to do so in + * as few moves as possible. + */ + +/* + * Possible further work: + * + * - UI: perhaps we should only permit clicking on regions that can + * actually be reached by the next flood-fill - i.e. a click is + * only interpreted as a move if it would cause the clicked-on + * square to become part of the controlled area. This provides a + * hint in cases where you mistakenly thought that would happen, + * and protects you against typos in cases where you just + * mis-aimed. + * + * - UI: perhaps mark the fill square in some way? Or even mark the + * whole connected component _containing_ the fill square. Pro: + * that would make it easier to tell apart cases where almost all + * the yellow squares in the grid are part of the target component + * (hence, yellow is _done_ and you never have to fill in that + * colour again) from cases where there's still one yellow square + * that's only diagonally adjacent and hence will need coming back + * to. Con: but it would almost certainly be ugly. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "puzzles.h" + +enum { + COL_BACKGROUND, COL_SEPARATOR, + COL_1, COL_2, COL_3, COL_4, COL_5, COL_6, COL_7, COL_8, COL_9, COL_10, + COL_HIGHLIGHT, COL_LOWLIGHT, + NCOLOURS +}; + +struct game_params { + int w, h; + int colours; + int leniency; +}; + +/* Just in case I want to make this changeable later, I'll put the + * coordinates of the flood-fill point here so that it'll be easy to + * find everywhere later that has to change. */ +#define FILLX 0 +#define FILLY 0 + +typedef struct soln { + int refcount; + int nmoves; + char *moves; +} soln; + +struct game_state { + int w, h, colours; + int moves, movelimit; + int complete; + char *grid; + int cheated; + int solnpos; + soln *soln; +}; + +static game_params *default_params(void) +{ + game_params *ret = snew(game_params); + + ret->w = ret->h = 12; + ret->colours = 6; + ret->leniency = 5; + + return ret; +} + +static const struct { + struct game_params preset; + const char *name; +} flood_presets[] = { + /* Default 12x12 size, three difficulty levels. */ + {{12, 12, 6, 5}, "12x12 Easy"}, + {{12, 12, 6, 2}, "12x12 Medium"}, + {{12, 12, 6, 0}, "12x12 Hard"}, + /* Larger puzzles, leaving off Easy in the expectation that people + * wanting a bigger grid will have played it enough to find Easy + * easy. */ + {{16, 16, 6, 2}, "16x16 Medium"}, + {{16, 16, 6, 0}, "16x16 Hard"}, + /* A couple of different colour counts. It seems generally not too + * hard with fewer colours (probably because fewer choices), so no + * extra moves for these modes. */ + {{12, 12, 3, 0}, "12x12, 3 colours"}, + {{12, 12, 4, 0}, "12x12, 4 colours"}, +}; + +static int game_fetch_preset(int i, char **name, game_params **params) +{ + game_params *ret; + + if (i < 0 || i >= lenof(flood_presets)) + return FALSE; + + ret = snew(game_params); + *ret = flood_presets[i].preset; + *name = dupstr(flood_presets[i].name); + *params = ret; + return TRUE; +} + +static void free_params(game_params *params) +{ + sfree(params); +} + +static game_params *dup_params(const game_params *params) +{ + game_params *ret = snew(game_params); + *ret = *params; /* structure copy */ + return ret; +} + +static void decode_params(game_params *ret, char const *string) +{ + ret->w = ret->h = atoi(string); + while (*string && isdigit((unsigned char)*string)) string++; + if (*string == 'x') { + string++; + ret->h = atoi(string); + while (*string && isdigit((unsigned char)*string)) string++; + } + while (*string) { + if (*string == 'c') { + string++; + ret->colours = atoi(string); + while (string[1] && isdigit((unsigned char)string[1])) string++; + } else if (*string == 'm') { + string++; + ret->leniency = atoi(string); + while (string[1] && isdigit((unsigned char)string[1])) string++; + } + string++; + } +} + +static char *encode_params(const game_params *params, int full) +{ + char buf[256]; + sprintf(buf, "%dx%d", params->w, params->h); + if (full) + sprintf(buf + strlen(buf), "c%dm%d", + params->colours, params->leniency); + return dupstr(buf); +} + +static config_item *game_configure(const game_params *params) +{ + config_item *ret; + char buf[80]; + + ret = snewn(5, config_item); + + ret[0].name = "Width"; + ret[0].type = C_STRING; + sprintf(buf, "%d", params->w); + ret[0].sval = dupstr(buf); + ret[0].ival = 0; + + ret[1].name = "Height"; + ret[1].type = C_STRING; + sprintf(buf, "%d", params->h); + ret[1].sval = dupstr(buf); + ret[1].ival = 0; + + ret[2].name = "Colours"; + ret[2].type = C_STRING; + sprintf(buf, "%d", params->colours); + ret[2].sval = dupstr(buf); + ret[2].ival = 0; + + ret[3].name = "Extra moves permitted"; + ret[3].type = C_STRING; + sprintf(buf, "%d", params->leniency); + ret[3].sval = dupstr(buf); + ret[3].ival = 0; + + ret[4].name = NULL; + ret[4].type = C_END; + ret[4].sval = NULL; + ret[4].ival = 0; + + return ret; +} + +static game_params *custom_params(const config_item *cfg) +{ + game_params *ret = snew(game_params); + + ret->w = atoi(cfg[0].sval); + ret->h = atoi(cfg[1].sval); + ret->colours = atoi(cfg[2].sval); + ret->leniency = atoi(cfg[3].sval); + + return ret; +} + +static char *validate_params(const game_params *params, int full) +{ + if (params->w < 2 && params->h < 2) + return "Grid must contain at least two squares"; + if (params->colours < 3 || params->colours > 10) + return "Must have between 3 and 10 colours"; + if (params->leniency < 0) + return "Leniency must be non-negative"; + return NULL; +} + +#if 0 +/* + * Bodge to permit varying the recursion depth for testing purposes. + +To test two Floods against each other: + +paste <(./flood.1 --generate 100 12x12c6m0#12345 | cut -f2 -d,) <(./flood.2 --generate 100 12x12c6m0#12345 | cut -f2 -d,) | awk '{print $2-$1}' | sort -n | uniq -c | awk '{print $2,$1}' | tee z + +and then run gnuplot and plot "z". + + */ +static int rdepth = 0; +#define RECURSION_DEPTH (rdepth) +void check_recursion_depth(void) +{ + if (!rdepth) { + const char *depthstr = getenv("FLOOD_DEPTH"); + rdepth = depthstr ? atoi(depthstr) : 1; + rdepth = rdepth > 0 ? rdepth : 1; + } +} +#else +/* + * Last time I empirically checked this, depth 3 was a noticeable + * improvement on 2, but 4 only negligibly better than 3. + */ +#define RECURSION_DEPTH 3 +#define check_recursion_depth() (void)0 +#endif + +struct solver_scratch { + int *queue[2]; + int *dist; + char *grid, *grid2; + char *rgrids; +}; + +static struct solver_scratch *new_scratch(int w, int h) +{ + int wh = w*h; + struct solver_scratch *scratch = snew(struct solver_scratch); + check_recursion_depth(); + scratch->queue[0] = snewn(wh, int); + scratch->queue[1] = snewn(wh, int); + scratch->dist = snewn(wh, int); + scratch->grid = snewn(wh, char); + scratch->grid2 = snewn(wh, char); + scratch->rgrids = snewn(wh * RECURSION_DEPTH, char); + return scratch; +} + +static void free_scratch(struct solver_scratch *scratch) +{ + sfree(scratch->queue[0]); + sfree(scratch->queue[1]); + sfree(scratch->dist); + sfree(scratch->grid); + sfree(scratch->grid2); + sfree(scratch->rgrids); + sfree(scratch); +} + +#if 0 +/* Diagnostic routines you can uncomment if you need them */ +void dump_grid(int w, int h, const char *grid, const char *titlefmt, ...) +{ + int x, y; + if (titlefmt) { + va_list ap; + va_start(ap, titlefmt); + vprintf(titlefmt, ap); + va_end(ap); + printf(":\n"); + } else { + printf("Grid:\n"); + } + for (y = 0; y < h; y++) { + printf(" "); + for (x = 0; x < w; x++) { + printf("%1x", grid[y*w+x]); + } + printf("\n"); + } +} + +void dump_dist(int w, int h, const int *dists, const char *titlefmt, ...) +{ + int x, y; + if (titlefmt) { + va_list ap; + va_start(ap, titlefmt); + vprintf(titlefmt, ap); + va_end(ap); + printf(":\n"); + } else { + printf("Distances:\n"); + } + for (y = 0; y < h; y++) { + printf(" "); + for (x = 0; x < w; x++) { + printf("%3d", dists[y*w+x]); + } + printf("\n"); + } +} +#endif + +/* + * Search a grid to find the most distant square(s). Return their + * distance and the number of them, and also the number of squares in + * the current controlled set (i.e. at distance zero). + */ +static void search(int w, int h, char *grid, int x0, int y0, + struct solver_scratch *scratch, + int *rdist, int *rnumber, int *rcontrol) +{ + int wh = w*h; + int i, qcurr, qhead, qtail, qnext, currdist, remaining; + + for (i = 0; i < wh; i++) + scratch->dist[i] = -1; + scratch->queue[0][0] = y0*w+x0; + scratch->queue[1][0] = y0*w+x0; + scratch->dist[y0*w+x0] = 0; + currdist = 0; + qcurr = 0; + qtail = 0; + qhead = 1; + qnext = 1; + remaining = wh - 1; + + while (1) { + if (qtail == qhead) { + /* Switch queues. */ + if (currdist == 0) + *rcontrol = qhead; + currdist++; + qcurr ^= 1; /* switch queues */ + qhead = qnext; + qtail = 0; + qnext = 0; +#if 0 + printf("switch queue, new dist %d, queue %d\n", currdist, qhead); +#endif + } else if (remaining == 0 && qnext == 0) { + break; + } else { + int pos = scratch->queue[qcurr][qtail++]; + int y = pos / w; + int x = pos % w; +#if 0 + printf("checking neighbours of %d,%d\n", x, y); +#endif + int dir; + for (dir = 0; dir < 4; dir++) { + int y1 = y + (dir == 1 ? 1 : dir == 3 ? -1 : 0); + int x1 = x + (dir == 0 ? 1 : dir == 2 ? -1 : 0); + if (0 <= x1 && x1 < w && 0 <= y1 && y1 < h) { + int pos1 = y1*w+x1; +#if 0 + printf("trying %d,%d: colours %d-%d dist %d\n", x1, y1, + grid[pos], grid[pos1], scratch->dist[pos]); +#endif + if (scratch->dist[pos1] == -1 && + ((grid[pos1] == grid[pos] && + scratch->dist[pos] == currdist) || + (grid[pos1] != grid[pos] && + scratch->dist[pos] == currdist - 1))) { +#if 0 + printf("marking %d,%d dist %d\n", x1, y1, currdist); +#endif + scratch->queue[qcurr][qhead++] = pos1; + scratch->queue[qcurr^1][qnext++] = pos1; + scratch->dist[pos1] = currdist; + remaining--; + } + } + } + } + } + + *rdist = currdist; + *rnumber = qhead; + if (currdist == 0) + *rcontrol = qhead; +} + +/* + * Enact a flood-fill move on a grid. + */ +static void fill(int w, int h, char *grid, int x0, int y0, char newcolour, + int *queue) +{ + char oldcolour; + int qhead, qtail; + + oldcolour = grid[y0*w+x0]; + assert(oldcolour != newcolour); + grid[y0*w+x0] = newcolour; + queue[0] = y0*w+x0; + qtail = 0; + qhead = 1; + + while (qtail < qhead) { + int pos = queue[qtail++]; + int y = pos / w; + int x = pos % w; + int dir; + for (dir = 0; dir < 4; dir++) { + int y1 = y + (dir == 1 ? 1 : dir == 3 ? -1 : 0); + int x1 = x + (dir == 0 ? 1 : dir == 2 ? -1 : 0); + if (0 <= x1 && x1 < w && 0 <= y1 && y1 < h) { + int pos1 = y1*w+x1; + if (grid[pos1] == oldcolour) { + grid[pos1] = newcolour; + queue[qhead++] = pos1; + } + } + } + } +} + +/* + * Detect a completed grid. + */ +static int completed(int w, int h, char *grid) +{ + int wh = w*h; + int i; + + for (i = 1; i < wh; i++) + if (grid[i] != grid[0]) + return FALSE; + + return TRUE; +} + +/* + * Try out every possible move on a grid, and choose whichever one + * reduced the result of search() by the most. + */ +static char choosemove_recurse(int w, int h, char *grid, int x0, int y0, + int maxmove, struct solver_scratch *scratch, + int depth, int *rbestdist, int *rbestnumber, int *rbestcontrol) +{ + int wh = w*h; + char move, bestmove; + int dist, number, control, bestdist, bestnumber, bestcontrol; + char *tmpgrid; + + assert(0 <= depth && depth < RECURSION_DEPTH); + tmpgrid = scratch->rgrids + depth*wh; + + bestdist = wh + 1; + bestnumber = 0; + bestcontrol = 0; + bestmove = -1; + +#if 0 + dump_grid(w, h, grid, "before choosemove_recurse %d", depth); +#endif + for (move = 0; move < maxmove; move++) { + if (grid[y0*w+x0] == move) + continue; + memcpy(tmpgrid, grid, wh * sizeof(*grid)); + fill(w, h, tmpgrid, x0, y0, move, scratch->queue[0]); + if (completed(w, h, tmpgrid)) { + /* + * A move that wins is immediately the best, so stop + * searching. Record what depth of recursion that happened + * at, so that higher levels will choose a move that gets + * to a winning position sooner. + */ + *rbestdist = -1; + *rbestnumber = depth; + *rbestcontrol = wh; + return move; + } + if (depth < RECURSION_DEPTH-1) { + choosemove_recurse(w, h, tmpgrid, x0, y0, maxmove, scratch, + depth+1, &dist, &number, &control); + } else { +#if 0 + dump_grid(w, h, tmpgrid, "after move %d at depth %d", + move, depth); +#endif + search(w, h, tmpgrid, x0, y0, scratch, &dist, &number, &control); +#if 0 + dump_dist(w, h, scratch->dist, "after move %d at depth %d", + move, depth); + printf("move %d at depth %d: %d at %d\n", + depth, move, number, dist); +#endif + } + if (dist < bestdist || + (dist == bestdist && + (number < bestnumber || + (number == bestnumber && + (control > bestcontrol))))) { + bestdist = dist; + bestnumber = number; + bestcontrol = control; + bestmove = move; + } + } +#if 0 + printf("best at depth %d was %d (%d at %d, %d controlled)\n", + depth, bestmove, bestnumber, bestdist, bestcontrol); +#endif + + *rbestdist = bestdist; + *rbestnumber = bestnumber; + *rbestcontrol = bestcontrol; + return bestmove; +} +static char choosemove(int w, int h, char *grid, int x0, int y0, + int maxmove, struct solver_scratch *scratch) +{ + int tmp0, tmp1, tmp2; + return choosemove_recurse(w, h, grid, x0, y0, maxmove, scratch, + 0, &tmp0, &tmp1, &tmp2); +} + +static char *new_game_desc(const game_params *params, random_state *rs, + char **aux, int interactive) +{ + int w = params->w, h = params->h, wh = w*h; + int i, moves; + char *desc; + struct solver_scratch *scratch; + + scratch = new_scratch(w, h); + + /* + * Invent a random grid. + */ + for (i = 0; i < wh; i++) + scratch->grid[i] = random_upto(rs, params->colours); + + /* + * Run the solver, and count how many moves it uses. + */ + memcpy(scratch->grid2, scratch->grid, wh * sizeof(*scratch->grid2)); + moves = 0; + check_recursion_depth(); + while (!completed(w, h, scratch->grid2)) { + char move = choosemove(w, h, scratch->grid2, FILLX, FILLY, + params->colours, scratch); + fill(w, h, scratch->grid2, FILLX, FILLY, move, scratch->queue[0]); + moves++; + } + + /* + * Adjust for difficulty. + */ + moves += params->leniency; + + /* + * Encode the game id. + */ + desc = snewn(wh + 40, char); + for (i = 0; i < wh; i++) { + char colour = scratch->grid[i]; + char textcolour = (colour > 9 ? 'A' : '0') + colour; + desc[i] = textcolour; + } + sprintf(desc+i, ",%d", moves); + + free_scratch(scratch); + + return desc; +} + +static char *validate_desc(const game_params *params, const char *desc) +{ + int w = params->w, h = params->h, wh = w*h; + int i; + for (i = 0; i < wh; i++) { + char c = *desc++; + if (c == 0) + return "Not enough data in grid description"; + if (c >= '0' && c <= '9') + c -= '0'; + else if (c >= 'A' && c <= 'Z') + c = 10 + (c - 'A'); + else + return "Bad character in grid description"; + if ((unsigned)c >= params->colours) + return "Colour out of range in grid description"; + } + if (*desc != ',') + return "Expected ',' after grid description"; + desc++; + if (desc[strspn(desc, "0123456789")]) + return "Badly formatted move limit after grid description"; + return NULL; +} + +static game_state *new_game(midend *me, const game_params *params, + const char *desc) +{ + int w = params->w, h = params->h, wh = w*h; + game_state *state = snew(game_state); + int i; + + state->w = w; + state->h = h; + state->colours = params->colours; + state->moves = 0; + state->grid = snewn(wh, char); + + for (i = 0; i < wh; i++) { + char c = *desc++; + assert(c); + if (c >= '0' && c <= '9') + c -= '0'; + else if (c >= 'A' && c <= 'Z') + c = 10 + (c - 'A'); + else + assert(!"bad colour"); + state->grid[i] = c; + } + assert(*desc == ','); + desc++; + + state->movelimit = atoi(desc); + state->complete = FALSE; + state->cheated = FALSE; + state->solnpos = 0; + state->soln = NULL; + + return state; +} + +static game_state *dup_game(const game_state *state) +{ + game_state *ret = snew(game_state); + + ret->w = state->w; + ret->h = state->h; + ret->colours = state->colours; + ret->moves = state->moves; + ret->movelimit = state->movelimit; + ret->complete = state->complete; + ret->grid = snewn(state->w * state->h, char); + memcpy(ret->grid, state->grid, state->w * state->h * sizeof(*ret->grid)); + + ret->cheated = state->cheated; + ret->soln = state->soln; + if (ret->soln) + ret->soln->refcount++; + ret->solnpos = state->solnpos; + + return ret; +} + +static void free_game(game_state *state) +{ + if (state->soln && --state->soln->refcount == 0) { + sfree(state->soln->moves); + sfree(state->soln); + } + sfree(state->grid); + sfree(state); +} + +static char *solve_game(const game_state *state, const game_state *currstate, + const char *aux, char **error) +{ + int w = state->w, h = state->h, wh = w*h; + char *moves, *ret, *p; + int i, len, nmoves; + char buf[256]; + struct solver_scratch *scratch; + + if (currstate->complete) { + *error = "Puzzle is already solved"; + return NULL; + } + + /* + * Find the best solution our solver can give. + */ + moves = snewn(wh, char); /* sure to be enough */ + nmoves = 0; + scratch = new_scratch(w, h); + memcpy(scratch->grid2, currstate->grid, wh * sizeof(*scratch->grid2)); + check_recursion_depth(); + while (!completed(w, h, scratch->grid2)) { + char move = choosemove(w, h, scratch->grid2, FILLX, FILLY, + currstate->colours, scratch); + fill(w, h, scratch->grid2, FILLX, FILLY, move, scratch->queue[0]); + assert(nmoves < wh); + moves[nmoves++] = move; + } + free_scratch(scratch); + + /* + * Encode it as a move string. + */ + len = 1; /* trailing NUL */ + for (i = 0; i < nmoves; i++) + len += sprintf(buf, ",%d", moves[i]); + ret = snewn(len, char); + p = ret; + for (i = 0; i < nmoves; i++) + p += sprintf(p, "%c%d", (i==0 ? 'S' : ','), moves[i]); + assert(p - ret == len - 1); + + sfree(moves); + return ret; +} + +static int game_can_format_as_text_now(const game_params *params) +{ + return TRUE; +} + +static char *game_text_format(const game_state *state) +{ + int w = state->w, h = state->h; + char *ret, *p; + int x, y, len; + + len = h * (w+1); /* +1 for newline after each row */ + ret = snewn(len+1, char); /* and +1 for terminating \0 */ + p = ret; + + for (y = 0; y < h; y++) { + for (x = 0; x < w; x++) { + char colour = state->grid[y*w+x]; + char textcolour = (colour > 9 ? 'A' : '0') + colour; + *p++ = textcolour; + } + *p++ = '\n'; + } + + assert(p - ret == len); + *p = '\0'; + + return ret; +} + +struct game_ui { + int cursor_visible; + int cx, cy; + enum { VICTORY, DEFEAT } flash_type; +}; + +static game_ui *new_ui(const game_state *state) +{ + struct game_ui *ui = snew(struct game_ui); + ui->cursor_visible = FALSE; + ui->cx = FILLX; + ui->cy = FILLY; + return ui; +} + +static void free_ui(game_ui *ui) +{ + sfree(ui); +} + +static char *encode_ui(const game_ui *ui) +{ + return NULL; +} + +static void decode_ui(game_ui *ui, const char *encoding) +{ +} + +static void game_changed_state(game_ui *ui, const game_state *oldstate, + const game_state *newstate) +{ +} + +struct game_drawstate { + int started; + int tilesize; + int *grid; +}; + +#define TILESIZE (ds->tilesize) +#define PREFERRED_TILESIZE 32 +#define BORDER (TILESIZE / 2) +#define SEP_WIDTH (TILESIZE / 32) +#define CURSOR_INSET (TILESIZE / 8) +#define HIGHLIGHT_WIDTH (TILESIZE / 10) +#define COORD(x) ( (x) * TILESIZE + BORDER ) +#define FROMCOORD(x) ( ((x) - BORDER + TILESIZE) / TILESIZE - 1 ) +#define VICTORY_FLASH_FRAME 0.03F +#define DEFEAT_FLASH_FRAME 0.10F + +static char *interpret_move(const game_state *state, game_ui *ui, + const game_drawstate *ds, + int x, int y, int button) +{ + int w = state->w, h = state->h; + int tx = -1, ty = -1, move = -1; + + if (button == LEFT_BUTTON) { + tx = FROMCOORD(x); + ty = FROMCOORD(y); + ui->cursor_visible = FALSE; + } else if (button == CURSOR_LEFT && ui->cx > 0) { + ui->cx--; + ui->cursor_visible = TRUE; + return ""; + } else if (button == CURSOR_RIGHT && ui->cx+1 < w) { + ui->cx++; + ui->cursor_visible = TRUE; + return ""; + } else if (button == CURSOR_UP && ui->cy > 0) { + ui->cy--; + ui->cursor_visible = TRUE; + return ""; + } else if (button == CURSOR_DOWN && ui->cy+1 < h) { + ui->cy++; + ui->cursor_visible = TRUE; + return ""; + } else if (button == CURSOR_SELECT) { + tx = ui->cx; + ty = ui->cy; + } else if (button == CURSOR_SELECT2 && + state->soln && state->solnpos < state->soln->nmoves) { + move = state->soln->moves[state->solnpos]; + } else { + return NULL; + } + + if (tx >= 0 && tx < w && ty >= 0 && ty < h && + state->grid[0] != state->grid[ty*w+tx]) + move = state->grid[ty*w+tx]; + + if (move >= 0 && !state->complete) { + char buf[256]; + sprintf(buf, "M%d", move); + return dupstr(buf); + } + + return NULL; +} + +static game_state *execute_move(const game_state *state, const char *move) +{ + game_state *ret; + int c; + + if (move[0] == 'M' && + sscanf(move+1, "%d", &c) == 1 && + c >= 0 && + !state->complete) { + int *queue = snewn(state->w * state->h, int); + ret = dup_game(state); + fill(ret->w, ret->h, ret->grid, FILLX, FILLY, c, queue); + ret->moves++; + ret->complete = completed(ret->w, ret->h, ret->grid); + + if (ret->soln) { + /* + * If this move is the correct next one in the stored + * solution path, advance solnpos. + */ + if (c == ret->soln->moves[ret->solnpos] && + ret->solnpos+1 < ret->soln->nmoves) { + ret->solnpos++; + } else { + /* + * Otherwise, the user has strayed from the path or + * else the path has come to an end; either way, the + * path is no longer valid. + */ + ret->soln->refcount--; + assert(ret->soln->refcount > 0);/* `state' at least still exists */ + ret->soln = NULL; + ret->solnpos = 0; + } + } + + sfree(queue); + return ret; + } else if (*move == 'S') { + soln *sol; + const char *p; + int i; + + /* + * This is a solve move, so we don't actually _change_ the + * grid but merely set up a stored solution path. + */ + move++; + sol = snew(soln); + + sol->nmoves = 1; + for (p = move; *p; p++) { + if (*p == ',') + sol->nmoves++; + } + + sol->moves = snewn(sol->nmoves, char); + for (i = 0, p = move; i < sol->nmoves; i++) { + assert(*p); + sol->moves[i] = atoi(p); + p += strspn(p, "0123456789"); + if (*p) { + assert(*p == ','); + p++; + } + } + + ret = dup_game(state); + ret->cheated = TRUE; + if (ret->soln && --ret->soln->refcount == 0) { + sfree(ret->soln->moves); + sfree(ret->soln); + } + ret->soln = sol; + ret->solnpos = 0; + sol->refcount = 1; + return ret; + } + + return NULL; +} + +/* ---------------------------------------------------------------------- + * Drawing routines. + */ + +static void game_compute_size(const game_params *params, int tilesize, + int *x, int *y) +{ + /* Ick: fake up `ds->tilesize' for macro expansion purposes */ + struct { int tilesize; } ads, *ds = &ads; + ads.tilesize = tilesize; + + *x = BORDER * 2 + TILESIZE * params->w; + *y = BORDER * 2 + TILESIZE * params->h; +} + +static void game_set_size(drawing *dr, game_drawstate *ds, + const game_params *params, int tilesize) +{ + ds->tilesize = tilesize; +} + +static float *game_colours(frontend *fe, int *ncolours) +{ + float *ret = snewn(3 * NCOLOURS, float); + + game_mkhighlight(fe, ret, COL_BACKGROUND, COL_HIGHLIGHT, COL_LOWLIGHT); + + ret[COL_SEPARATOR * 3 + 0] = 0.0F; + ret[COL_SEPARATOR * 3 + 1] = 0.0F; + ret[COL_SEPARATOR * 3 + 2] = 0.0F; + + /* red */ + ret[COL_1 * 3 + 0] = 1.0F; + ret[COL_1 * 3 + 1] = 0.0F; + ret[COL_1 * 3 + 2] = 0.0F; + + /* yellow */ + ret[COL_2 * 3 + 0] = 1.0F; + ret[COL_2 * 3 + 1] = 1.0F; + ret[COL_2 * 3 + 2] = 0.0F; + + /* green */ + ret[COL_3 * 3 + 0] = 0.0F; + ret[COL_3 * 3 + 1] = 1.0F; + ret[COL_3 * 3 + 2] = 0.0F; + + /* blue */ + ret[COL_4 * 3 + 0] = 0.2F; + ret[COL_4 * 3 + 1] = 0.3F; + ret[COL_4 * 3 + 2] = 1.0F; + + /* orange */ + ret[COL_5 * 3 + 0] = 1.0F; + ret[COL_5 * 3 + 1] = 0.5F; + ret[COL_5 * 3 + 2] = 0.0F; + + /* purple */ + ret[COL_6 * 3 + 0] = 0.5F; + ret[COL_6 * 3 + 1] = 0.0F; + ret[COL_6 * 3 + 2] = 0.7F; + + /* brown */ + ret[COL_7 * 3 + 0] = 0.5F; + ret[COL_7 * 3 + 1] = 0.3F; + ret[COL_7 * 3 + 2] = 0.3F; + + /* light blue */ + ret[COL_8 * 3 + 0] = 0.4F; + ret[COL_8 * 3 + 1] = 0.8F; + ret[COL_8 * 3 + 2] = 1.0F; + + /* light green */ + ret[COL_9 * 3 + 0] = 0.7F; + ret[COL_9 * 3 + 1] = 1.0F; + ret[COL_9 * 3 + 2] = 0.7F; + + /* pink */ + ret[COL_10 * 3 + 0] = 1.0F; + ret[COL_10 * 3 + 1] = 0.6F; + ret[COL_10 * 3 + 2] = 1.0F; + + *ncolours = NCOLOURS; + return ret; +} + +static game_drawstate *game_new_drawstate(drawing *dr, const game_state *state) +{ + struct game_drawstate *ds = snew(struct game_drawstate); + int w = state->w, h = state->h, wh = w*h; + int i; + + ds->started = FALSE; + ds->tilesize = 0; + ds->grid = snewn(wh, int); + for (i = 0; i < wh; i++) + ds->grid[i] = -1; + + return ds; +} + +static void game_free_drawstate(drawing *dr, game_drawstate *ds) +{ + sfree(ds->grid); + sfree(ds); +} + +#define BORDER_L 0x001 +#define BORDER_R 0x002 +#define BORDER_U 0x004 +#define BORDER_D 0x008 +#define CORNER_UL 0x010 +#define CORNER_UR 0x020 +#define CORNER_DL 0x040 +#define CORNER_DR 0x080 +#define CURSOR 0x100 +#define BADFLASH 0x200 +#define SOLNNEXT 0x400 +#define COLOUR_SHIFT 11 + +static void draw_tile(drawing *dr, game_drawstate *ds, + int x, int y, int tile) +{ + int colour; + int tx = COORD(x), ty = COORD(y); + + colour = tile >> COLOUR_SHIFT; + if (tile & BADFLASH) + colour = COL_SEPARATOR; + else + colour += COL_1; + draw_rect(dr, tx, ty, TILESIZE, TILESIZE, colour); + + if (tile & BORDER_L) + draw_rect(dr, tx, ty, + SEP_WIDTH, TILESIZE, COL_SEPARATOR); + if (tile & BORDER_R) + draw_rect(dr, tx + TILESIZE - SEP_WIDTH, ty, + SEP_WIDTH, TILESIZE, COL_SEPARATOR); + if (tile & BORDER_U) + draw_rect(dr, tx, ty, + TILESIZE, SEP_WIDTH, COL_SEPARATOR); + if (tile & BORDER_D) + draw_rect(dr, tx, ty + TILESIZE - SEP_WIDTH, + TILESIZE, SEP_WIDTH, COL_SEPARATOR); + + if (tile & CORNER_UL) + draw_rect(dr, tx, ty, + SEP_WIDTH, SEP_WIDTH, COL_SEPARATOR); + if (tile & CORNER_UR) + draw_rect(dr, tx + TILESIZE - SEP_WIDTH, ty, + SEP_WIDTH, SEP_WIDTH, COL_SEPARATOR); + if (tile & CORNER_DL) + draw_rect(dr, tx, ty + TILESIZE - SEP_WIDTH, + SEP_WIDTH, SEP_WIDTH, COL_SEPARATOR); + if (tile & CORNER_DR) + draw_rect(dr, tx + TILESIZE - SEP_WIDTH, ty + TILESIZE - SEP_WIDTH, + SEP_WIDTH, SEP_WIDTH, COL_SEPARATOR); + + if (tile & CURSOR) + draw_rect_outline(dr, tx + CURSOR_INSET, ty + CURSOR_INSET, + TILESIZE - 1 - CURSOR_INSET * 2, + TILESIZE - 1 - CURSOR_INSET * 2, + COL_SEPARATOR); + + if (tile & SOLNNEXT) { + draw_circle(dr, tx + TILESIZE/2, ty + TILESIZE/2, TILESIZE/6, + COL_SEPARATOR, COL_SEPARATOR); + } + + draw_update(dr, tx, ty, TILESIZE, TILESIZE); +} + +static void game_redraw(drawing *dr, game_drawstate *ds, + const game_state *oldstate, const game_state *state, + int dir, const game_ui *ui, + float animtime, float flashtime) +{ + int w = state->w, h = state->h, wh = w*h; + int x, y, flashframe, solnmove; + char *grid; + + /* This was entirely cloned from fifteen.c; it should probably be + * moved into some generic 'draw-recessed-rectangle' utility fn. */ + if (!ds->started) { + int coords[10]; + + draw_rect(dr, 0, 0, + TILESIZE * w + 2 * BORDER, + TILESIZE * h + 2 * BORDER, COL_BACKGROUND); + draw_update(dr, 0, 0, + TILESIZE * w + 2 * BORDER, + TILESIZE * h + 2 * BORDER); + + /* + * Recessed area containing the whole puzzle. + */ + coords[0] = COORD(w) + HIGHLIGHT_WIDTH - 1; + coords[1] = COORD(h) + HIGHLIGHT_WIDTH - 1; + coords[2] = COORD(w) + HIGHLIGHT_WIDTH - 1; + coords[3] = COORD(0) - HIGHLIGHT_WIDTH; + coords[4] = coords[2] - TILESIZE; + coords[5] = coords[3] + TILESIZE; + coords[8] = COORD(0) - HIGHLIGHT_WIDTH; + coords[9] = COORD(h) + HIGHLIGHT_WIDTH - 1; + coords[6] = coords[8] + TILESIZE; + coords[7] = coords[9] - TILESIZE; + draw_polygon(dr, coords, 5, COL_HIGHLIGHT, COL_HIGHLIGHT); + + coords[1] = COORD(0) - HIGHLIGHT_WIDTH; + coords[0] = COORD(0) - HIGHLIGHT_WIDTH; + draw_polygon(dr, coords, 5, COL_LOWLIGHT, COL_LOWLIGHT); + + draw_rect(dr, COORD(0) - SEP_WIDTH, COORD(0) - SEP_WIDTH, + TILESIZE * w + 2 * SEP_WIDTH, TILESIZE * h + 2 * SEP_WIDTH, + COL_SEPARATOR); + + ds->started = 1; + } + + if (flashtime > 0) { + float frame = (ui->flash_type == VICTORY ? + VICTORY_FLASH_FRAME : DEFEAT_FLASH_FRAME); + flashframe = (int)(flashtime / frame); + } else { + flashframe = -1; + } + + grid = snewn(wh, char); + memcpy(grid, state->grid, wh * sizeof(*grid)); + + if (state->soln && state->solnpos < state->soln->nmoves) { + int i, *queue; + + /* + * Highlight as 'next auto-solver move' every square of the + * target colour which is adjacent to the currently controlled + * region. We do this by first enacting the actual move, then + * flood-filling again in a nonexistent colour, and finally + * reverting to the original grid anything in the new colour + * that was part of the original controlled region. Then + * regions coloured in the dummy colour should be displayed as + * soln_move with the SOLNNEXT flag. + */ + solnmove = state->soln->moves[state->solnpos]; + + queue = snewn(wh, int); + fill(w, h, grid, FILLX, FILLY, solnmove, queue); + fill(w, h, grid, FILLX, FILLY, state->colours, queue); + sfree(queue); + + for (i = 0; i < wh; i++) + if (grid[i] == state->colours && state->grid[i] != solnmove) + grid[i] = state->grid[i]; + } else { + solnmove = 0; /* placate optimiser */ + } + + if (flashframe >= 0 && ui->flash_type == VICTORY) { + /* + * Modify the display grid by superimposing our rainbow flash + * on it. + */ + for (x = 0; x < w; x++) { + for (y = 0; y < h; y++) { + int flashpos = flashframe - (abs(x - FILLX) + abs(y - FILLY)); + if (flashpos >= 0 && flashpos < state->colours) + grid[y*w+x] = flashpos; + } + } + } + + for (x = 0; x < w; x++) { + for (y = 0; y < h; y++) { + int pos = y*w+x; + int tile; + + if (grid[pos] == state->colours) { + tile = (solnmove << COLOUR_SHIFT) | SOLNNEXT; + } else { + tile = (int)grid[pos] << COLOUR_SHIFT; + } + + if (x == 0 || grid[pos-1] != grid[pos]) + tile |= BORDER_L; + if (x==w-1 || grid[pos+1] != grid[pos]) + tile |= BORDER_R; + if (y == 0 || grid[pos-w] != grid[pos]) + tile |= BORDER_U; + if (y==h-1 || grid[pos+w] != grid[pos]) + tile |= BORDER_D; + if (x == 0 || y == 0 || grid[pos-w-1] != grid[pos]) + tile |= CORNER_UL; + if (x==w-1 || y == 0 || grid[pos-w+1] != grid[pos]) + tile |= CORNER_UR; + if (x == 0 || y==h-1 || grid[pos+w-1] != grid[pos]) + tile |= CORNER_DL; + if (x==w-1 || y==h-1 || grid[pos+w+1] != grid[pos]) + tile |= CORNER_DR; + if (ui->cursor_visible && ui->cx == x && ui->cy == y) + tile |= CURSOR; + + if (flashframe >= 0 && ui->flash_type == DEFEAT && flashframe != 1) + tile |= BADFLASH; + + if (ds->grid[pos] != tile) { + draw_tile(dr, ds, x, y, tile); + ds->grid[pos] = tile; + } + } + } + + sfree(grid); + + { + char status[255]; + + sprintf(status, "%s%d / %d moves", + (state->complete && state->moves <= state->movelimit ? + (state->cheated ? "Auto-solved. " : "COMPLETED! ") : + state->moves >= state->movelimit ? "FAILED! " : + state->cheated ? "Auto-solver used. " : + ""), + state->moves, + state->movelimit); + + status_bar(dr, status); + } +} + +static float game_anim_length(const game_state *oldstate, + const game_state *newstate, int dir, game_ui *ui) +{ + return 0.0F; +} + +static int game_status(const game_state *state) +{ + if (state->complete && state->moves <= state->movelimit) { + return +1; /* victory! */ + } else if (state->moves >= state->movelimit) { + return -1; /* defeat */ + } else { + return 0; /* still playing */ + } +} + +static float game_flash_length(const game_state *oldstate, + const game_state *newstate, int dir, game_ui *ui) +{ + if (dir == +1) { + int old_status = game_status(oldstate); + int new_status = game_status(newstate); + if (old_status != new_status) { + assert(old_status == 0); + + if (new_status == +1) { + int frames = newstate->w + newstate->h + newstate->colours - 2; + ui->flash_type = VICTORY; + return VICTORY_FLASH_FRAME * frames; + } else { + ui->flash_type = DEFEAT; + return DEFEAT_FLASH_FRAME * 3; + } + } + } + return 0.0F; +} + +static int game_timing_state(const game_state *state, game_ui *ui) +{ + return TRUE; +} + +static void game_print_size(const game_params *params, float *x, float *y) +{ +} + +static void game_print(drawing *dr, const game_state *state, int tilesize) +{ +} + +#ifdef COMBINED +#define thegame flood +#endif + +const struct game thegame = { + "Flood", "games.flood", "flood", + default_params, + game_fetch_preset, + decode_params, + encode_params, + free_params, + dup_params, + TRUE, game_configure, custom_params, + validate_params, + new_game_desc, + validate_desc, + new_game, + dup_game, + free_game, + TRUE, solve_game, + TRUE, game_can_format_as_text_now, game_text_format, + new_ui, + free_ui, + encode_ui, + decode_ui, + game_changed_state, + interpret_move, + execute_move, + PREFERRED_TILESIZE, game_compute_size, game_set_size, + game_colours, + game_new_drawstate, + game_free_drawstate, + game_redraw, + game_anim_length, + game_flash_length, + game_status, + FALSE, FALSE, game_print_size, game_print, + TRUE, /* wants_statusbar */ + FALSE, game_timing_state, + 0, /* flags */ +}; diff -Nru sgt-puzzles-20140928.r10274/flood.R sgt-puzzles-20160429.b31155b/flood.R --- sgt-puzzles-20140928.r10274/flood.R 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/flood.R 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,19 @@ +# -*- makefile -*- + +flood : [X] GTK COMMON flood flood-icon|no-icon + +flood : [G] WINDOWS COMMON flood flood.res|noicon.res + +ALL += flood[COMBINED] + +!begin am gtk +GAMES += flood +!end + +!begin >list.c + A(flood) \ +!end + +!begin >gamedesc.txt +flood:flood.exe:Flood:Flood-filling puzzle:Turn the grid the same colour in as few flood fills as possible. +!end diff -Nru sgt-puzzles-20140928.r10274/galaxies.c sgt-puzzles-20160429.b31155b/galaxies.c --- sgt-puzzles-20140928.r10274/galaxies.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/galaxies.c 2016-04-29 00:30:09.000000000 +0000 @@ -148,6 +148,14 @@ or -1 if stale. */ }; +static int check_complete(const game_state *state, int *dsf, int *colours); +static int solver_state(game_state *state, int maxdiff); +static int solver_obvious(game_state *state); +static int solver_obvious_dot(game_state *state, space *dot); +static space *space_opposite_dot(const game_state *state, const space *sp, + const space *dot); +static space *tile_opposite(const game_state *state, const space *sp); + /* ---------------------------------------------------------- * Game parameters and presets */ @@ -311,6 +319,21 @@ } } +static void remove_assoc_with_opposite(game_state *state, space *tile) { + space *opposite; + + if (!(tile->flags & F_TILE_ASSOC)) { + return; + } + + opposite = tile_opposite(state, tile); + remove_assoc(state, tile); + + if (opposite != NULL && opposite != tile) { + remove_assoc(state, opposite); + } +} + static void add_assoc(const game_state *state, space *tile, space *dot) { remove_assoc(state, tile); @@ -327,9 +350,38 @@ tile->x, tile->y, dot->x, dot->y, dot->nassoc));*/ } -static struct space *sp2dot(const game_state *state, int x, int y) +static void add_assoc_with_opposite(game_state *state, space *tile, space *dot) { + int *colors; + space *opposite = space_opposite_dot(state, tile, dot); + + if (opposite == NULL) { + return; + } + if (opposite->flags & F_DOT) { + return; + } + + colors = snewn(state->w * state->h, int); + check_complete(state, NULL, colors); + if (colors[(tile->y - 1)/2 * state->w + (tile->x - 1)/2]) { + sfree(colors); + return; + } + if (colors[(opposite->y - 1)/2 * state->w + (opposite->x - 1)/2]) { + sfree(colors); + return; + } + + sfree(colors); + remove_assoc_with_opposite(state, tile); + add_assoc(state, tile, dot); + remove_assoc_with_opposite(state, opposite); + add_assoc(state, opposite, dot); +} + +static space *sp2dot(const game_state *state, int x, int y) { - struct space *sp = &SPACE(state, x, y); + space *sp = &SPACE(state, x, y); if (!(sp->flags & F_TILE_ASSOC)) return NULL; return &SPACE(state, sp->dotx, sp->doty); } @@ -465,7 +517,7 @@ static int is_same_assoc(game_state *state, int x1, int y1, int x2, int y2) { - struct space *s1, *s2; + space *s1, *s2; if (!INGRID(state, x1, y1) || !INGRID(state, x2, y2)) return 0; @@ -503,8 +555,8 @@ } #endif -static struct space *space_opposite_dot(struct game_state *state, - struct space *sp, struct space *dot) +static space *space_opposite_dot(const game_state *state, const space *sp, + const space *dot) { int dx, dy, tx, ty; space *sp2; @@ -520,9 +572,9 @@ return sp2; } -static struct space *tile_opposite(struct game_state *state, struct space *sp) +static space *tile_opposite(const game_state *state, const space *sp) { - struct space *dot; + space *dot; assert(sp->flags & F_TILE_ASSOC); dot = &SPACE(state, sp->dotx, sp->doty); @@ -540,8 +592,7 @@ return 1; } -static void adjacencies(struct game_state *state, struct space *sp, - struct space **a1s, struct space **a2s) +static void adjacencies(game_state *state, space *sp, space **a1s, space **a2s) { int dxs[4] = {-1, 1, 0, 0}, dys[4] = {0, 0, -1, 1}; int n, x, y; @@ -569,7 +620,7 @@ static int outline_tile_fordot(game_state *state, space *tile, int mark) { - struct space *tadj[4], *eadj[4]; + space *tadj[4], *eadj[4]; int i, didsth = 0, edge, same; assert(tile->type == s_tile); @@ -599,8 +650,7 @@ return didsth; } -static void tiles_from_edge(struct game_state *state, - struct space *sp, struct space **ts) +static void tiles_from_edge(game_state *state, space *sp, space **ts) { int xs[2], ys[2]; @@ -757,13 +807,13 @@ state->sx = (w*2)+1; state->sy = (h*2)+1; - state->grid = snewn(state->sx * state->sy, struct space); + state->grid = snewn(state->sx * state->sy, space); state->completed = state->used_solve = 0; for (x = 0; x < state->sx; x++) { for (y = 0; y < state->sy; y++) { - struct space *sp = &SPACE(state, x, y); - memset(sp, 0, sizeof(struct space)); + space *sp = &SPACE(state, x, y); + memset(sp, 0, sizeof(space)); sp->x = x; sp->y = y; if ((x % 2) == 0 && (y % 2) == 0) @@ -828,7 +878,7 @@ ret->used_solve = state->used_solve; memcpy(ret->grid, state->grid, - ret->sx*ret->sy*sizeof(struct space)); + ret->sx*ret->sy*sizeof(space)); game_update_dots(ret); @@ -1167,8 +1217,6 @@ #define MAXTRIES 50 #endif -static int solver_obvious_dot(game_state *state,space *dot); - #define GP_DOTS 1 static void generate_pass(game_state *state, random_state *rs, int *scratch, @@ -1231,9 +1279,6 @@ dbg_state(state); } -static int check_complete(const game_state *state, int *dsf, int *colours); -static int solver_state(game_state *state, int maxdiff); - static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { @@ -1256,6 +1301,8 @@ game_update_dots(state); + if (state->ndots == 1) goto generate; + #ifdef DEBUGGING { char *tmp = encode_game(state); @@ -1467,8 +1514,6 @@ return desc; } -static int solver_obvious(game_state *state); - static int dots_too_close(game_state *state) { /* Quick-and-dirty check, using half the solver: @@ -1751,7 +1796,7 @@ static int solver_spaces_oneposs_cb(game_state *state, space *tile, void *ctx) { int n, eset, ret; - struct space *edgeadj[4], *tileadj[4]; + space *edgeadj[4], *tileadj[4]; int dotx, doty; assert(tile->type == s_tile); @@ -2058,8 +2103,6 @@ return 0; } -static int solver_state(game_state *state, int maxdiff); - #define MAXRECURSE 5 static int solver_recurse(game_state *state, int maxdiff) @@ -2091,11 +2134,11 @@ solver_recurse_depth++; #endif - ingrid = snewn(gsz, struct space); - memcpy(ingrid, state->grid, gsz * sizeof(struct space)); + ingrid = snewn(gsz, space); + memcpy(ingrid, state->grid, gsz * sizeof(space)); for (n = 0; n < state->ndots; n++) { - memcpy(state->grid, ingrid, gsz * sizeof(struct space)); + memcpy(state->grid, ingrid, gsz * sizeof(space)); if (!dotfortile(state, rctx.best, state->dots[n])) continue; @@ -2109,8 +2152,8 @@ if (diff == DIFF_IMPOSSIBLE && ret != DIFF_IMPOSSIBLE) { /* we found our first solved grid; copy it away. */ assert(!outgrid); - outgrid = snewn(gsz, struct space); - memcpy(outgrid, state->grid, gsz * sizeof(struct space)); + outgrid = snewn(gsz, space); + memcpy(outgrid, state->grid, gsz * sizeof(space)); } /* reset cell back to unassociated. */ bestopp = tile_opposite(state, rctx.best); @@ -2142,7 +2185,7 @@ if (outgrid) { /* we found (at least one) soln; copy it back to state */ - memcpy(state->grid, outgrid, gsz * sizeof(struct space)); + memcpy(state->grid, outgrid, gsz * sizeof(space)); sfree(outgrid); } sfree(ingrid); @@ -2317,6 +2360,7 @@ unsigned long *grid; int *dx, *dy; blitter *bl; + blitter *blmirror; int dragging, dragx, dragy; @@ -2377,7 +2421,7 @@ { char buf[80]; int px, py; - struct space *sp; + space *sp; px = 2*FROMCOORD((float)x) + 0.5; py = 2*FROMCOORD((float)y) + 0.5; @@ -2425,7 +2469,7 @@ char buf[80]; const char *sep = ""; int px, py; - struct space *sp, *dot; + space *sp, *dot; buf[0] = '\0'; @@ -2549,7 +2593,7 @@ if (INUI(state, px, py)) { sp = &SPACE(state, px, py); - if (!(sp->flags & F_DOT) && !(sp->flags & F_TILE_ASSOC)) + if (!(sp->flags & F_DOT)) sprintf(buf + strlen(buf), "%sA%d,%d,%d,%d", sep, px, py, ui->dotx, ui->doty); } @@ -2795,7 +2839,8 @@ { int x, y, ax, ay, n, dx, dy; game_state *ret = dup_game(state); - struct space *sp, *dot; + space *sp, *dot; + int currently_solving = FALSE; debug(("%s\n", move)); @@ -2808,7 +2853,7 @@ ) { move++; if (sscanf(move, "%d,%d%n", &x, &y, &n) != 2 || - !INUI(state, x, y)) + !INUI(ret, x, y)) goto badmove; sp = &SPACE(ret, x, y); @@ -2816,14 +2861,14 @@ if (c == 'D' || c == 'd') { unsigned int currf, newf, maskf; - if (!dot_is_possible(state, sp, 1)) goto badmove; + if (!dot_is_possible(ret, sp, 1)) goto badmove; newf = F_DOT | (c == 'd' ? F_DOT_BLACK : 0); currf = GRID(ret, grid, x, y).flags; maskf = F_DOT | F_DOT_BLACK; /* if we clicked 'white dot': * white --> empty, empty --> white, black --> white. - * if we clicker 'black dot': + * if we clicked 'black dot': * black --> empty, empty --> black, white --> black. */ if (currf & maskf) { @@ -2842,7 +2887,11 @@ } else if (c == 'U') { if (sp->type != s_tile || !(sp->flags & F_TILE_ASSOC)) goto badmove; - remove_assoc(ret, sp); + /* The solver doesn't assume we'll mirror things */ + if (currently_solving) + remove_assoc(ret, sp); + else + remove_assoc_with_opposite(ret, sp); } else if (c == 'M') { if (!(sp->flags & F_DOT)) goto badmove; sp->flags ^= F_DOT_HOLD; @@ -2851,8 +2900,8 @@ } else if (c == 'A' || c == 'a') { move++; if (sscanf(move, "%d,%d,%d,%d%n", &x, &y, &ax, &ay, &n) != 4 || - x < 1 || y < 1 || x >= (state->sx-1) || y >= (state->sy-1) || - ax < 1 || ay < 1 || ax >= (state->sx-1) || ay >= (state->sy-1)) + x < 1 || y < 1 || x >= (ret->sx-1) || y >= (ret->sy-1) || + ax < 1 || ay < 1 || ax >= (ret->sx-1) || ay >= (ret->sy-1)) goto badmove; dot = &GRID(ret, grid, ax, ay); @@ -2864,10 +2913,14 @@ sp = &GRID(ret, grid, x+dx, y+dy); if (sp->type != s_tile) continue; if (sp->flags & F_TILE_ASSOC) { - space *dot = &SPACE(state, sp->dotx, sp->doty); + space *dot = &SPACE(ret, sp->dotx, sp->doty); if (dot->flags & F_DOT_HOLD) continue; } - add_assoc(state, sp, dot); + /* The solver doesn't assume we'll mirror things */ + if (currently_solving) + add_assoc(ret, sp, dot); + else + add_assoc_with_opposite(ret, sp, dot); } } move += n; @@ -2879,6 +2932,7 @@ } else if (c == 'S') { move++; ret->used_solve = 1; + currently_solving = TRUE; } else goto badmove; @@ -2934,6 +2988,9 @@ assert(!ds->bl); ds->bl = blitter_new(dr, TILE_SIZE, TILE_SIZE); + assert(!ds->blmirror); + ds->blmirror = blitter_new(dr, TILE_SIZE, TILE_SIZE); + assert(!ds->cur_bl); ds->cur_bl = blitter_new(dr, TILE_SIZE, TILE_SIZE); } @@ -3008,6 +3065,7 @@ ds->dy = snewn(ds->w*ds->h, int); ds->bl = NULL; + ds->blmirror = NULL; ds->dragging = FALSE; ds->dragx = ds->dragy = 0; @@ -3024,6 +3082,7 @@ { if (ds->cur_bl) blitter_free(dr, ds->cur_bl); sfree(ds->colour_scratch); + if (ds->blmirror) blitter_free(dr, ds->blmirror); if (ds->bl) blitter_free(dr, ds->bl); sfree(ds->dx); sfree(ds->dy); @@ -3149,6 +3208,16 @@ draw_update(dr, lx, ly, TILE_SIZE, TILE_SIZE); } +static void calculate_opposite_point(const game_ui *ui, + const game_drawstate *ds, const int x, + const int y, int *oppositex, + int *oppositey) +{ + /* oppositex - dotx = dotx - x <=> oppositex = 2 * dotx - x */ + *oppositex = 2 * SCOORD(ui->dotx) - x; + *oppositey = 2 * SCOORD(ui->doty) - y; +} + static void game_redraw(drawing *dr, game_drawstate *ds, const game_state *oldstate, const game_state *state, int dir, const game_ui *ui, @@ -3156,6 +3225,7 @@ { int w = ds->w, h = ds->h; int x, y, flashing = FALSE; + int oppx, oppy; if (flashtime > 0) { int frame = (int)(flashtime / FLASH_TIME); @@ -3164,8 +3234,15 @@ if (ds->dragging) { assert(ds->bl); + assert(ds->blmirror); + calculate_opposite_point(ui, ds, ds->dragx + TILE_SIZE/2, + ds->dragy + TILE_SIZE/2, &oppx, &oppy); + oppx -= TILE_SIZE/2; + oppy -= TILE_SIZE/2; blitter_load(dr, ds->bl, ds->dragx, ds->dragy); draw_update(dr, ds->dragx, ds->dragy, TILE_SIZE, TILE_SIZE); + blitter_load(dr, ds->blmirror, oppx, oppy); + draw_update(dr, oppx, oppy, TILE_SIZE, TILE_SIZE); ds->dragging = FALSE; } if (ds->cur_visible) { @@ -3190,7 +3267,7 @@ for (x = 0; x < w; x++) { unsigned long flags = 0; int ddx = 0, ddy = 0; - space *sp; + space *sp, *opp; int dx, dy; /* @@ -3228,6 +3305,11 @@ * everything goes briefly back to background colour. */ sp = &SPACE(state, x*2+1, y*2+1); + if (sp->flags & F_TILE_ASSOC) { + opp = tile_opposite(state, sp); + } else { + opp = NULL; + } if (ds->colour_scratch[y*w+x] && !flashing) { flags |= (ds->colour_scratch[y*w+x] == 2 ? DRAW_BLACK : DRAW_WHITE); @@ -3243,7 +3325,9 @@ */ if ((sp->flags & F_TILE_ASSOC) && !ds->colour_scratch[y*w+x]) { if (ui->dragging && ui->srcx == x*2+1 && ui->srcy == y*2+1) { - /* don't do it */ + /* tile is the source, don't do it */ + } else if (ui->dragging && opp && ui->srcx == opp->x && ui->srcy == opp->y) { + /* opposite tile is the source, don't do it */ } else if (sp->doty != y*2+1 || sp->dotx != x*2+1) { flags |= DRAW_ARROW; ddy = sp->doty - (y*2+1); @@ -3320,10 +3404,13 @@ ds->dragging = TRUE; ds->dragx = ui->dx - TILE_SIZE/2; ds->dragy = ui->dy - TILE_SIZE/2; + calculate_opposite_point(ui, ds, ui->dx, ui->dy, &oppx, &oppy); blitter_save(dr, ds->bl, ds->dragx, ds->dragy); - draw_arrow(dr, ds, ui->dx, ui->dy, - SCOORD(ui->dotx) - ui->dx, + blitter_save(dr, ds->blmirror, oppx - TILE_SIZE/2, oppy - TILE_SIZE/2); + draw_arrow(dr, ds, ui->dx, ui->dy, SCOORD(ui->dotx) - ui->dx, SCOORD(ui->doty) - ui->dy, COL_ARROW); + draw_arrow(dr, ds, oppx, oppy, SCOORD(ui->dotx) - oppx, + SCOORD(ui->doty) - oppy, COL_ARROW); } #ifdef EDITOR { diff -Nru sgt-puzzles-20140928.r10274/galaxies.R sgt-puzzles-20160429.b31155b/galaxies.R --- sgt-puzzles-20140928.r10274/galaxies.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/galaxies.R 2016-04-29 00:30:09.000000000 +0000 @@ -24,5 +24,5 @@ !end !begin >gamedesc.txt -galaxies:galaxies.exe:Galaxies:Symmetric polyomino puzzle +galaxies:galaxies.exe:Galaxies:Symmetric polyomino puzzle:Divide the grid into rotationally symmetric regions each centred on a dot. !end diff -Nru sgt-puzzles-20140928.r10274/grid.c sgt-puzzles-20160429.b31155b/grid.c --- sgt-puzzles-20140928.r10274/grid.c 2013-05-10 17:56:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/grid.c 2016-04-29 00:30:09.000000000 +0000 @@ -1069,7 +1069,7 @@ eq[2] = eqs[0][3]*eqs[1][2] - eqs[1][3]*eqs[0][2]; /* Parametrise x and y in terms of some t. */ - if (abs(eq[0]) < abs(eq[1])) { + if (fabs(eq[0]) < fabs(eq[1])) { /* Parameter is x. */ xt[0] = 1; xt[1] = 0; yt[0] = -eq[0]/eq[1]; yt[1] = eq[2]/eq[1]; diff -Nru sgt-puzzles-20140928.r10274/gtk.c sgt-puzzles-20160429.b31155b/gtk.c --- sgt-puzzles-20140928.r10274/gtk.c 2013-04-11 12:51:06.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/gtk.c 2016-04-29 00:30:09.000000000 +0000 @@ -39,6 +39,31 @@ #endif #if GTK_CHECK_VERSION(2,8,0) # define USE_CAIRO +# if GTK_CHECK_VERSION(3,0,0) || defined(GDK_DISABLE_DEPRECATED) +# define USE_CAIRO_WITHOUT_PIXMAP +# endif +#endif + +#if GTK_CHECK_VERSION(3,0,0) +/* The old names are still more concise! */ +#define gtk_hbox_new(x,y) gtk_box_new(GTK_ORIENTATION_HORIZONTAL,y) +#define gtk_vbox_new(x,y) gtk_box_new(GTK_ORIENTATION_VERTICAL,y) +/* GTK 3 has retired stock button labels */ +#define LABEL_OK "_OK" +#define LABEL_CANCEL "_Cancel" +#define LABEL_NO "_No" +#define LABEL_YES "_Yes" +#define LABEL_SAVE "_Save" +#define LABEL_OPEN "_Open" +#define gtk_button_new_with_our_label gtk_button_new_with_mnemonic +#else +#define LABEL_OK GTK_STOCK_OK +#define LABEL_CANCEL GTK_STOCK_CANCEL +#define LABEL_NO GTK_STOCK_NO +#define LABEL_YES GTK_STOCK_YES +#define LABEL_SAVE GTK_STOCK_SAVE +#define LABEL_OPEN GTK_STOCK_OPEN +#define gtk_button_new_with_our_label gtk_button_new_from_stock #endif /* #undef USE_CAIRO */ @@ -126,7 +151,9 @@ const float *colours; cairo_t *cr; cairo_surface_t *image; +#ifndef USE_CAIRO_WITHOUT_PIXMAP GdkPixmap *pixmap; +#endif GdkColor background; /* for painting outside puzzle area */ #else GdkPixmap *pixmap; @@ -151,12 +178,15 @@ #ifdef OLD_FILESEL char *filesel_name; #endif - int drawing_area_shrink_pending; GSList *preset_radio; int n_preset_menu_items; int preset_threaded; GtkWidget *preset_custom; GtkWidget *copy_menu_item; +#if !GTK_CHECK_VERSION(3,0,0) + int drawing_area_shrink_pending; + int menubar_is_local; +#endif }; struct blitter { @@ -178,10 +208,26 @@ void frontend_default_colour(frontend *fe, float *output) { - GdkColor col = fe->window->style->bg[GTK_STATE_NORMAL]; +#if !GTK_CHECK_VERSION(3,0,0) + /* + * Use the widget style's default background colour as the + * background for the puzzle drawing area. + */ + GdkColor col = gtk_widget_get_style(fe->window)->bg[GTK_STATE_NORMAL]; output[0] = col.red / 65535.0; output[1] = col.green / 65535.0; output[2] = col.blue / 65535.0; +#else + /* + * GTK 3 has decided that there's no such thing as a 'default + * background colour' any more, because widget styles might set + * the background to something more complicated like a background + * image. We don't want to get into overlaying our entire puzzle + * on an arbitrary background image, so we'll just make up a + * reasonable shade of grey. + */ + output[0] = output[1] = output[2] = 0.9F; +#endif } void gtk_status_bar(void *handle, char *text) @@ -211,20 +257,22 @@ static void teardown_drawing(frontend *fe) { - cairo_t *cr; - cairo_destroy(fe->cr); fe->cr = NULL; - cr = gdk_cairo_create(fe->pixmap); - cairo_set_source_surface(cr, fe->image, 0, 0); - cairo_rectangle(cr, - fe->bbox_l - 1, - fe->bbox_u - 1, - fe->bbox_r - fe->bbox_l + 2, - fe->bbox_d - fe->bbox_u + 2); - cairo_fill(cr); - cairo_destroy(cr); +#ifndef USE_CAIRO_WITHOUT_PIXMAP + { + cairo_t *cr = gdk_cairo_create(fe->pixmap); + cairo_set_source_surface(cr, fe->image, 0, 0); + cairo_rectangle(cr, + fe->bbox_l - 1, + fe->bbox_u - 1, + fe->bbox_r - fe->bbox_l + 2, + fe->bbox_d - fe->bbox_u + 2); + cairo_fill(cr); + cairo_destroy(cr); + } +#endif } static void snaffle_colours(frontend *fe) @@ -242,6 +290,15 @@ static void set_window_background(frontend *fe, int colour) { +#if GTK_CHECK_VERSION(3,0,0) + GdkRGBA rgba; + rgba.red = fe->colours[3*colour + 0]; + rgba.green = fe->colours[3*colour + 1]; + rgba.blue = fe->colours[3*colour + 2]; + rgba.alpha = 1.0; + gdk_window_set_background_rgba(gtk_widget_get_window(fe->area), &rgba); + gdk_window_set_background_rgba(gtk_widget_get_window(fe->window), &rgba); +#else GdkColormap *colmap; colmap = gdk_colormap_get_system(); @@ -253,8 +310,11 @@ fe->background.red >> 8, fe->background.green >> 8, fe->background.blue >> 8); } - gdk_window_set_background(fe->area->window, &fe->background); - gdk_window_set_background(fe->window->window, &fe->background); + gdk_window_set_background(gtk_widget_get_window(fe->area), + &fe->background); + gdk_window_set_background(gtk_widget_get_window(fe->window), + &fe->background); +#endif } static PangoLayout *make_pango_layout(frontend *fe) @@ -379,26 +439,28 @@ fe->image = NULL; } -static void setup_backing_store(frontend *fe) +static void wipe_and_destroy_cairo(frontend *fe, cairo_t *cr) { - cairo_t *cr; - int i; + cairo_set_source_rgb(cr, fe->colours[0], fe->colours[1], fe->colours[2]); + cairo_paint(cr); + cairo_destroy(cr); +} - fe->pixmap = gdk_pixmap_new(fe->area->window, fe->pw, fe->ph, -1); +static void setup_backing_store(frontend *fe) +{ +#ifndef USE_CAIRO_WITHOUT_PIXMAP + fe->pixmap = gdk_pixmap_new(gtk_widget_get_window(fe->area), + fe->pw, fe->ph, -1); +#endif fe->image = cairo_image_surface_create(CAIRO_FORMAT_RGB24, fe->pw, fe->ph); - for (i = 0; i < 3; i++) { - switch (i) { - case 0: cr = cairo_create(fe->image); break; - case 1: cr = gdk_cairo_create(fe->pixmap); break; - case 2: cr = gdk_cairo_create(fe->area->window); break; - } - cairo_set_source_rgb(cr, - fe->colours[0], fe->colours[1], fe->colours[2]); - cairo_paint(cr); - cairo_destroy(cr); - } + wipe_and_destroy_cairo(fe, cairo_create(fe->image)); +#ifndef USE_CAIRO_WITHOUT_PIXMAP + wipe_and_destroy_cairo(fe, gdk_cairo_create(fe->pixmap)); +#endif + wipe_and_destroy_cairo(fe, gdk_cairo_create + (gtk_widget_get_window(fe->area))); } static int backing_store_ok(frontend *fe) @@ -409,7 +471,9 @@ static void teardown_backing_store(frontend *fe) { cairo_surface_destroy(fe->image); +#ifndef USE_CAIRO_WITHOUT_PIXMAP gdk_pixmap_unref(fe->pixmap); +#endif fe->image = NULL; } @@ -663,41 +727,43 @@ #endif +#ifndef USE_CAIRO_WITHOUT_PIXMAP static void repaint_rectangle(frontend *fe, GtkWidget *widget, int x, int y, int w, int h) { - GdkGC *gc = gdk_gc_new(widget->window); + GdkGC *gc = gdk_gc_new(gtk_widget_get_window(widget)); #ifdef USE_CAIRO gdk_gc_set_foreground(gc, &fe->background); #else gdk_gc_set_foreground(gc, &fe->colours[fe->backgroundindex]); #endif if (x < fe->ox) { - gdk_draw_rectangle(widget->window, gc, + gdk_draw_rectangle(gtk_widget_get_window(widget), gc, TRUE, x, y, fe->ox - x, h); w -= (fe->ox - x); x = fe->ox; } if (y < fe->oy) { - gdk_draw_rectangle(widget->window, gc, + gdk_draw_rectangle(gtk_widget_get_window(widget), gc, TRUE, x, y, w, fe->oy - y); h -= (fe->oy - y); y = fe->oy; } if (w > fe->pw) { - gdk_draw_rectangle(widget->window, gc, + gdk_draw_rectangle(gtk_widget_get_window(widget), gc, TRUE, x + fe->pw, y, w - fe->pw, h); w = fe->pw; } if (h > fe->ph) { - gdk_draw_rectangle(widget->window, gc, + gdk_draw_rectangle(gtk_widget_get_window(widget), gc, TRUE, x, y + fe->ph, w, h - fe->ph); h = fe->ph; } - gdk_draw_pixmap(widget->window, gc, fe->pixmap, + gdk_draw_pixmap(gtk_widget_get_window(widget), gc, fe->pixmap, x - fe->ox, y - fe->oy, x, y, w, h); gdk_gc_unref(gc); } +#endif /* ---------------------------------------------------------------------- * Pango font functions. @@ -978,11 +1044,19 @@ teardown_drawing(fe); if (fe->bbox_l < fe->bbox_r && fe->bbox_u < fe->bbox_d) { +#ifdef USE_CAIRO_WITHOUT_PIXMAP + gtk_widget_queue_draw_area(fe->area, + fe->bbox_l - 1 + fe->ox, + fe->bbox_u - 1 + fe->oy, + fe->bbox_r - fe->bbox_l + 2, + fe->bbox_d - fe->bbox_u + 2); +#else repaint_rectangle(fe, fe->area, fe->bbox_l - 1 + fe->ox, fe->bbox_u - 1 + fe->oy, fe->bbox_r - fe->bbox_l + 2, fe->bbox_d - fe->bbox_u + 2); +#endif } } @@ -1059,37 +1133,47 @@ if (gtk_window_activate_key(GTK_WINDOW(fe->window), event)) return TRUE; - if (event->keyval == GDK_Up) + if (event->keyval == GDK_KEY_Up) keyval = shift | ctrl | CURSOR_UP; - else if (event->keyval == GDK_KP_Up || event->keyval == GDK_KP_8) + else if (event->keyval == GDK_KEY_KP_Up || + event->keyval == GDK_KEY_KP_8) keyval = MOD_NUM_KEYPAD | '8'; - else if (event->keyval == GDK_Down) + else if (event->keyval == GDK_KEY_Down) keyval = shift | ctrl | CURSOR_DOWN; - else if (event->keyval == GDK_KP_Down || event->keyval == GDK_KP_2) + else if (event->keyval == GDK_KEY_KP_Down || + event->keyval == GDK_KEY_KP_2) keyval = MOD_NUM_KEYPAD | '2'; - else if (event->keyval == GDK_Left) + else if (event->keyval == GDK_KEY_Left) keyval = shift | ctrl | CURSOR_LEFT; - else if (event->keyval == GDK_KP_Left || event->keyval == GDK_KP_4) + else if (event->keyval == GDK_KEY_KP_Left || + event->keyval == GDK_KEY_KP_4) keyval = MOD_NUM_KEYPAD | '4'; - else if (event->keyval == GDK_Right) + else if (event->keyval == GDK_KEY_Right) keyval = shift | ctrl | CURSOR_RIGHT; - else if (event->keyval == GDK_KP_Right || event->keyval == GDK_KP_6) + else if (event->keyval == GDK_KEY_KP_Right || + event->keyval == GDK_KEY_KP_6) keyval = MOD_NUM_KEYPAD | '6'; - else if (event->keyval == GDK_KP_Home || event->keyval == GDK_KP_7) + else if (event->keyval == GDK_KEY_KP_Home || + event->keyval == GDK_KEY_KP_7) keyval = MOD_NUM_KEYPAD | '7'; - else if (event->keyval == GDK_KP_End || event->keyval == GDK_KP_1) + else if (event->keyval == GDK_KEY_KP_End || + event->keyval == GDK_KEY_KP_1) keyval = MOD_NUM_KEYPAD | '1'; - else if (event->keyval == GDK_KP_Page_Up || event->keyval == GDK_KP_9) + else if (event->keyval == GDK_KEY_KP_Page_Up || + event->keyval == GDK_KEY_KP_9) keyval = MOD_NUM_KEYPAD | '9'; - else if (event->keyval == GDK_KP_Page_Down || event->keyval == GDK_KP_3) + else if (event->keyval == GDK_KEY_KP_Page_Down || + event->keyval == GDK_KEY_KP_3) keyval = MOD_NUM_KEYPAD | '3'; - else if (event->keyval == GDK_KP_Insert || event->keyval == GDK_KP_0) + else if (event->keyval == GDK_KEY_KP_Insert || + event->keyval == GDK_KEY_KP_0) keyval = MOD_NUM_KEYPAD | '0'; - else if (event->keyval == GDK_KP_Begin || event->keyval == GDK_KP_5) + else if (event->keyval == GDK_KEY_KP_Begin || + event->keyval == GDK_KEY_KP_5) keyval = MOD_NUM_KEYPAD | '5'; - else if (event->keyval == GDK_BackSpace || - event->keyval == GDK_Delete || - event->keyval == GDK_KP_Delete) + else if (event->keyval == GDK_KEY_BackSpace || + event->keyval == GDK_KEY_Delete || + event->keyval == GDK_KEY_KP_Delete) keyval = '\177'; else if (event->string[0] && !event->string[1]) keyval = (unsigned char)event->string[0]; @@ -1121,10 +1205,14 @@ button = RIGHT_BUTTON; else if (event->button == 1) button = LEFT_BUTTON; + else if (event->button == 8 && event->type == GDK_BUTTON_PRESS) + button = 'u'; + else if (event->button == 9 && event->type == GDK_BUTTON_PRESS) + button = 'r'; else return FALSE; /* don't even know what button! */ - if (event->type == GDK_BUTTON_RELEASE) + if (event->type == GDK_BUTTON_RELEASE && button >= LEFT_BUTTON) button += LEFT_RELEASE - LEFT_BUTTON; if (!midend_process_key(fe->me, event->x - fe->ox, @@ -1158,24 +1246,49 @@ #if GTK_CHECK_VERSION(2,12,0) gdk_event_request_motions(event); #else - gdk_window_get_pointer(widget->window, NULL, NULL, NULL); + gdk_window_get_pointer(gtk_widget_get_window(widget), NULL, NULL, NULL); #endif return TRUE; } +#if GTK_CHECK_VERSION(3,0,0) +static gint draw_area(GtkWidget *widget, cairo_t *cr, gpointer data) +{ + frontend *fe = (frontend *)data; + GdkRectangle dirtyrect; + + gdk_cairo_get_clip_rectangle(cr, &dirtyrect); + cairo_set_source_surface(cr, fe->image, fe->ox, fe->oy); + cairo_rectangle(cr, dirtyrect.x, dirtyrect.y, + dirtyrect.width, dirtyrect.height); + cairo_fill(cr); + + return TRUE; +} +#else static gint expose_area(GtkWidget *widget, GdkEventExpose *event, gpointer data) { frontend *fe = (frontend *)data; if (backing_store_ok(fe)) { +#ifdef USE_CAIRO_WITHOUT_PIXMAP + cairo_t *cr = gdk_cairo_create(gtk_widget_get_window(widget)); + cairo_set_source_surface(cr, fe->image, fe->ox, fe->oy); + cairo_rectangle(cr, event->area.x, event->area.y, + event->area.width, event->area.height); + cairo_fill(cr); + cairo_destroy(cr); +#else repaint_rectangle(fe, widget, event->area.x, event->area.y, event->area.width, event->area.height); +#endif } return TRUE; } +#endif static gint map_window(GtkWidget *widget, GdkEvent *event, gpointer data) @@ -1197,19 +1310,25 @@ { frontend *fe = (frontend *)data; int x, y; + int oldw = fe->w, oldpw = fe->pw, oldh = fe->h, oldph = fe->ph; - if (backing_store_ok(fe)) - teardown_backing_store(fe); - - x = fe->w = event->width; - y = fe->h = event->height; + x = event->width; + y = event->height; + fe->w = x; + fe->h = y; midend_size(fe->me, &x, &y, TRUE); fe->pw = x; fe->ph = y; fe->ox = (fe->w - fe->pw) / 2; fe->oy = (fe->h - fe->ph) / 2; - setup_backing_store(fe); + if (oldw != fe->w || oldpw != fe->pw || + oldh != fe->h || oldph != fe->ph || !backing_store_ok(fe)) { + if (backing_store_ok(fe)) + teardown_backing_store(fe); + setup_backing_store(fe); + } + midend_force_redraw(fe->me); return TRUE; @@ -1237,7 +1356,7 @@ if (!fe) return; /* can happen due to --generate */ if (fe->timer_active) - gtk_timeout_remove(fe->timer_id); + g_source_remove(fe->timer_id); fe->timer_active = FALSE; } @@ -1246,7 +1365,7 @@ if (!fe) return; /* can happen due to --generate */ if (!fe->timer_active) { - fe->timer_id = gtk_timeout_add(20, timer_func, fe); + fe->timer_id = g_timeout_add(20, timer_func, fe); gettimeofday(&fe->last_time, NULL); } fe->timer_active = TRUE; @@ -1257,27 +1376,15 @@ gtk_main_quit(); } -static void msgbox_button_clicked(GtkButton *button, gpointer data) -{ - GtkWidget *window = GTK_WIDGET(data); - int v, *ip; - - ip = (int *)gtk_object_get_data(GTK_OBJECT(window), "user-data"); - v = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(button), "user-data")); - *ip = v; - - gtk_widget_destroy(GTK_WIDGET(data)); -} - static int win_key_press(GtkWidget *widget, GdkEventKey *event, gpointer data) { - GtkObject *cancelbutton = GTK_OBJECT(data); + GObject *cancelbutton = G_OBJECT(data); /* * `Escape' effectively clicks the cancel button */ - if (event->keyval == GDK_Escape) { - gtk_signal_emit_by_name(GTK_OBJECT(cancelbutton), "clicked"); + if (event->keyval == GDK_KEY_Escape) { + g_signal_emit_by_name(cancelbutton, "clicked"); return TRUE; } @@ -1286,6 +1393,54 @@ enum { MB_OK, MB_YESNO }; +static void align_label(GtkLabel *label, double x, double y) +{ +#if GTK_CHECK_VERSION(3,16,0) + gtk_label_set_xalign(label, x); + gtk_label_set_yalign(label, y); +#elif GTK_CHECK_VERSION(3,14,0) + gtk_widget_set_halign(GTK_WIDGET(label), + x == 0 ? GTK_ALIGN_START : + x == 1 ? GTK_ALIGN_END : GTK_ALIGN_CENTER); + gtk_widget_set_valign(GTK_WIDGET(label), + y == 0 ? GTK_ALIGN_START : + y == 1 ? GTK_ALIGN_END : GTK_ALIGN_CENTER); +#else + gtk_misc_set_alignment(GTK_MISC(label), x, y); +#endif +} + +#if GTK_CHECK_VERSION(3,0,0) +int message_box(GtkWidget *parent, char *title, char *msg, int centre, + int type) +{ + GtkWidget *window; + gint ret; + + window = gtk_message_dialog_new + (GTK_WINDOW(parent), + (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), + (type == MB_OK ? GTK_MESSAGE_INFO : GTK_MESSAGE_QUESTION), + (type == MB_OK ? GTK_BUTTONS_OK : GTK_BUTTONS_YES_NO), + "%s", msg); + gtk_window_set_title(GTK_WINDOW(window), title); + ret = gtk_dialog_run(GTK_DIALOG(window)); + gtk_widget_destroy(window); + return (type == MB_OK ? TRUE : (ret == GTK_RESPONSE_YES)); +} +#else /* GTK_CHECK_VERSION(3,0,0) */ +static void msgbox_button_clicked(GtkButton *button, gpointer data) +{ + GtkWidget *window = GTK_WIDGET(data); + int v, *ip; + + ip = (int *)g_object_get_data(G_OBJECT(window), "user-data"); + v = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(button), "user-data")); + *ip = v; + + gtk_widget_destroy(GTK_WIDGET(data)); +} + int message_box(GtkWidget *parent, char *title, char *msg, int centre, int type) { @@ -1295,51 +1450,52 @@ window = gtk_dialog_new(); text = gtk_label_new(msg); - gtk_misc_set_alignment(GTK_MISC(text), 0.0, 0.0); + align_label(GTK_LABEL(text), 0.0, 0.0); hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), text, FALSE, FALSE, 20); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(window)->vbox), - hbox, FALSE, FALSE, 20); + gtk_box_pack_start + (GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(window))), + hbox, FALSE, FALSE, 20); gtk_widget_show(text); gtk_widget_show(hbox); gtk_window_set_title(GTK_WINDOW(window), title); gtk_label_set_line_wrap(GTK_LABEL(text), TRUE); if (type == MB_OK) { - titles = GTK_STOCK_OK "\0"; + titles = LABEL_OK "\0"; def = cancel = 0; } else { assert(type == MB_YESNO); - titles = GTK_STOCK_NO "\0" GTK_STOCK_YES "\0"; + titles = LABEL_NO "\0" LABEL_YES "\0"; def = 1; cancel = 0; } i = 0; while (*titles) { - button = gtk_button_new_from_stock(titles); - gtk_box_pack_end(GTK_BOX(GTK_DIALOG(window)->action_area), - button, FALSE, FALSE, 0); + button = gtk_button_new_with_our_label(titles); + gtk_box_pack_end + (GTK_BOX(gtk_dialog_get_action_area(GTK_DIALOG(window))), + button, FALSE, FALSE, 0); gtk_widget_show(button); if (i == def) { - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_widget_set_can_default(button, TRUE); gtk_window_set_default(GTK_WINDOW(window), button); } if (i == cancel) { - gtk_signal_connect(GTK_OBJECT(window), "key_press_event", - GTK_SIGNAL_FUNC(win_key_press), button); + g_signal_connect(G_OBJECT(window), "key_press_event", + G_CALLBACK(win_key_press), button); } - gtk_signal_connect(GTK_OBJECT(button), "clicked", - GTK_SIGNAL_FUNC(msgbox_button_clicked), window); - gtk_object_set_data(GTK_OBJECT(button), "user-data", - GINT_TO_POINTER(i)); + g_signal_connect(G_OBJECT(button), "clicked", + G_CALLBACK(msgbox_button_clicked), window); + g_object_set_data(G_OBJECT(button), "user-data", + GINT_TO_POINTER(i)); titles += strlen(titles)+1; i++; } - gtk_object_set_data(GTK_OBJECT(window), "user-data", - GINT_TO_POINTER(&i)); - gtk_signal_connect(GTK_OBJECT(window), "destroy", - GTK_SIGNAL_FUNC(window_destroy), NULL); + g_object_set_data(G_OBJECT(window), "user-data", &i); + g_signal_connect(G_OBJECT(window), "destroy", + G_CALLBACK(window_destroy), NULL); gtk_window_set_modal(GTK_WINDOW(window), TRUE); gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW(parent)); /* set_transient_window_pos(parent, window); */ @@ -1348,6 +1504,7 @@ gtk_main(); return (type == MB_YESNO ? i == 1 : TRUE); } +#endif /* GTK_CHECK_VERSION(3,0,0) */ void error_box(GtkWidget *parent, char *msg) { @@ -1388,11 +1545,12 @@ * Return in an edit box will now activate the default button * in the dialog just like it will everywhere else. */ - if (event->keyval == GDK_Return && widget->parent != NULL) { + if (event->keyval == GDK_KEY_Return && + gtk_widget_get_parent(widget) != NULL) { gint return_val; - gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event"); - gtk_signal_emit_by_name(GTK_OBJECT(widget->parent), "key_press_event", - event, &return_val); + g_signal_stop_emission_by_name(G_OBJECT(widget), "key_press_event"); + g_signal_emit_by_name(G_OBJECT(gtk_widget_get_parent(widget)), + "key_press_event", event, &return_val); return return_val; } return FALSE; @@ -1413,17 +1571,17 @@ i->ival = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(tb)); } -static void droplist_sel(GtkMenuItem *item, gpointer data) +static void droplist_sel(GtkComboBox *combo, gpointer data) { config_item *i = (config_item *)data; - i->ival = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(item), - "user-data")); + i->ival = gtk_combo_box_get_active(combo); } static int get_config(frontend *fe, int which) { GtkWidget *w, *table, *cancel; + GtkBox *content_box, *button_box; char *title; config_item *i; int y; @@ -1432,35 +1590,57 @@ fe->cfg_which = which; fe->cfgret = FALSE; +#if GTK_CHECK_VERSION(3,0,0) + /* GtkDialog isn't quite flexible enough */ + fe->cfgbox = gtk_window_new(GTK_WINDOW_TOPLEVEL); + content_box = GTK_BOX(gtk_vbox_new(FALSE, 8)); + g_object_set(G_OBJECT(content_box), "margin", 8, (const char *)NULL); + gtk_widget_show(GTK_WIDGET(content_box)); + gtk_container_add(GTK_CONTAINER(fe->cfgbox), GTK_WIDGET(content_box)); + button_box = GTK_BOX(gtk_hbox_new(FALSE, 8)); + gtk_widget_show(GTK_WIDGET(button_box)); + gtk_box_pack_end(content_box, GTK_WIDGET(button_box), FALSE, FALSE, 0); + { + GtkWidget *sep = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL); + gtk_widget_show(sep); + gtk_box_pack_end(content_box, sep, FALSE, FALSE, 0); + } +#else fe->cfgbox = gtk_dialog_new(); + content_box = GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(fe->cfgbox))); + button_box = GTK_BOX(gtk_dialog_get_action_area(GTK_DIALOG(fe->cfgbox))); +#endif gtk_window_set_title(GTK_WINDOW(fe->cfgbox), title); sfree(title); - w = gtk_button_new_from_stock(GTK_STOCK_CANCEL); - gtk_box_pack_end(GTK_BOX(GTK_DIALOG(fe->cfgbox)->action_area), - w, FALSE, FALSE, 0); + w = gtk_button_new_with_our_label(LABEL_CANCEL); + gtk_box_pack_end(button_box, w, FALSE, FALSE, 0); gtk_widget_show(w); - gtk_signal_connect(GTK_OBJECT(w), "clicked", - GTK_SIGNAL_FUNC(config_cancel_button_clicked), fe); + g_signal_connect(G_OBJECT(w), "clicked", + G_CALLBACK(config_cancel_button_clicked), fe); cancel = w; - w = gtk_button_new_from_stock(GTK_STOCK_OK); - gtk_box_pack_end(GTK_BOX(GTK_DIALOG(fe->cfgbox)->action_area), - w, FALSE, FALSE, 0); + w = gtk_button_new_with_our_label(LABEL_OK); + gtk_box_pack_end(button_box, w, FALSE, FALSE, 0); gtk_widget_show(w); - GTK_WIDGET_SET_FLAGS(w, GTK_CAN_DEFAULT); + gtk_widget_set_can_default(w, TRUE); gtk_window_set_default(GTK_WINDOW(fe->cfgbox), w); - gtk_signal_connect(GTK_OBJECT(w), "clicked", - GTK_SIGNAL_FUNC(config_ok_button_clicked), fe); + g_signal_connect(G_OBJECT(w), "clicked", + G_CALLBACK(config_ok_button_clicked), fe); +#if GTK_CHECK_VERSION(3,0,0) + table = gtk_grid_new(); +#else table = gtk_table_new(1, 2, FALSE); +#endif y = 0; - gtk_box_pack_end(GTK_BOX(GTK_DIALOG(fe->cfgbox)->vbox), - table, FALSE, FALSE, 0); + gtk_box_pack_start(content_box, table, FALSE, FALSE, 0); gtk_widget_show(table); for (i = fe->cfg; i->type != C_END; i++) { +#if !GTK_CHECK_VERSION(3,0,0) gtk_table_resize(GTK_TABLE(table), y+1, 2); +#endif switch (i->type) { case C_STRING: @@ -1469,23 +1649,32 @@ */ w = gtk_label_new(i->name); - gtk_misc_set_alignment(GTK_MISC(w), 0.0, 0.5); + align_label(GTK_LABEL(w), 0.0, 0.5); +#if GTK_CHECK_VERSION(3,0,0) + gtk_grid_attach(GTK_GRID(table), w, 0, y, 1, 1); +#else gtk_table_attach(GTK_TABLE(table), w, 0, 1, y, y+1, GTK_SHRINK | GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 3, 3); +#endif gtk_widget_show(w); w = gtk_entry_new(); +#if GTK_CHECK_VERSION(3,0,0) + gtk_grid_attach(GTK_GRID(table), w, 1, y, 1, 1); + g_object_set(G_OBJECT(w), "hexpand", TRUE, (const char *)NULL); +#else gtk_table_attach(GTK_TABLE(table), w, 1, 2, y, y+1, GTK_EXPAND | GTK_SHRINK | GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 3, 3); +#endif gtk_entry_set_text(GTK_ENTRY(w), i->sval); - gtk_signal_connect(GTK_OBJECT(w), "changed", - GTK_SIGNAL_FUNC(editbox_changed), i); - gtk_signal_connect(GTK_OBJECT(w), "key_press_event", - GTK_SIGNAL_FUNC(editbox_key), NULL); + g_signal_connect(G_OBJECT(w), "changed", + G_CALLBACK(editbox_changed), i); + g_signal_connect(G_OBJECT(w), "key_press_event", + G_CALLBACK(editbox_key), NULL); gtk_widget_show(w); break; @@ -1495,47 +1684,49 @@ * Simple checkbox. */ w = gtk_check_button_new_with_label(i->name); - gtk_signal_connect(GTK_OBJECT(w), "toggled", - GTK_SIGNAL_FUNC(button_toggled), i); + g_signal_connect(G_OBJECT(w), "toggled", + G_CALLBACK(button_toggled), i); +#if GTK_CHECK_VERSION(3,0,0) + gtk_grid_attach(GTK_GRID(table), w, 0, y, 2, 1); + g_object_set(G_OBJECT(w), "hexpand", TRUE, (const char *)NULL); +#else gtk_table_attach(GTK_TABLE(table), w, 0, 2, y, y+1, GTK_EXPAND | GTK_SHRINK | GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 3, 3); +#endif gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), i->ival); gtk_widget_show(w); break; case C_CHOICES: /* - * Drop-down list (GtkOptionMenu). + * Drop-down list (GtkComboBox). */ w = gtk_label_new(i->name); - gtk_misc_set_alignment(GTK_MISC(w), 0.0, 0.5); + align_label(GTK_LABEL(w), 0.0, 0.5); +#if GTK_CHECK_VERSION(3,0,0) + gtk_grid_attach(GTK_GRID(table), w, 0, y, 1, 1); +#else gtk_table_attach(GTK_TABLE(table), w, 0, 1, y, y+1, GTK_SHRINK | GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL , 3, 3); +#endif gtk_widget_show(w); - w = gtk_option_menu_new(); - gtk_table_attach(GTK_TABLE(table), w, 1, 2, y, y+1, - GTK_EXPAND | GTK_SHRINK | GTK_FILL, - GTK_EXPAND | GTK_SHRINK | GTK_FILL, - 3, 3); - gtk_widget_show(w); - - { - int c, val; + { + int c; char *p, *q, *name; - GtkWidget *menuitem; - GtkWidget *menu = gtk_menu_new(); + GtkListStore *model; + GtkCellRenderer *cr; + GtkTreeIter iter; - gtk_option_menu_set_menu(GTK_OPTION_MENU(w), menu); + model = gtk_list_store_new(1, G_TYPE_STRING); c = *i->sval; p = i->sval+1; - val = 0; while (*p) { q = p; @@ -1548,32 +1739,45 @@ if (*q) q++; /* eat delimiter */ - menuitem = gtk_menu_item_new_with_label(name); - gtk_container_add(GTK_CONTAINER(menu), menuitem); - gtk_object_set_data(GTK_OBJECT(menuitem), "user-data", - GINT_TO_POINTER(val)); - gtk_signal_connect(GTK_OBJECT(menuitem), "activate", - GTK_SIGNAL_FUNC(droplist_sel), i); - gtk_widget_show(menuitem); - - val++; + gtk_list_store_append(model, &iter); + gtk_list_store_set(model, &iter, 0, name, -1); p = q; } - gtk_option_menu_set_history(GTK_OPTION_MENU(w), i->ival); - } + w = gtk_combo_box_new_with_model(GTK_TREE_MODEL(model)); + gtk_combo_box_set_active(GTK_COMBO_BOX(w), i->ival); + + cr = gtk_cell_renderer_text_new(); + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(w), cr, TRUE); + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(w), cr, + "text", 0, NULL); + + g_signal_connect(G_OBJECT(w), "changed", + G_CALLBACK(droplist_sel), i); + } + +#if GTK_CHECK_VERSION(3,0,0) + gtk_grid_attach(GTK_GRID(table), w, 1, y, 1, 1); + g_object_set(G_OBJECT(w), "hexpand", TRUE, (const char *)NULL); +#else + gtk_table_attach(GTK_TABLE(table), w, 1, 2, y, y+1, + GTK_EXPAND | GTK_SHRINK | GTK_FILL, + GTK_EXPAND | GTK_SHRINK | GTK_FILL, + 3, 3); +#endif + gtk_widget_show(w); break; } y++; } - gtk_signal_connect(GTK_OBJECT(fe->cfgbox), "destroy", - GTK_SIGNAL_FUNC(window_destroy), NULL); - gtk_signal_connect(GTK_OBJECT(fe->cfgbox), "key_press_event", - GTK_SIGNAL_FUNC(win_key_press), cancel); + g_signal_connect(G_OBJECT(fe->cfgbox), "destroy", + G_CALLBACK(window_destroy), NULL); + g_signal_connect(G_OBJECT(fe->cfgbox), "key_press_event", + G_CALLBACK(win_key_press), cancel); gtk_window_set_modal(GTK_WINDOW(fe->cfgbox), TRUE); gtk_window_set_transient_for(GTK_WINDOW(fe->cfgbox), GTK_WINDOW(fe->window)); @@ -1589,8 +1793,8 @@ static void menu_key_event(GtkMenuItem *menuitem, gpointer data) { frontend *fe = (frontend *)data; - int key = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(menuitem), - "user-data")); + int key = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(menuitem), + "user-data")); if (!midend_process_key(fe->me, 0, 0, key)) gtk_widget_destroy(fe->window); } @@ -1664,6 +1868,7 @@ } } +#if !GTK_CHECK_VERSION(3,0,0) static gboolean not_size_allocated_yet(GtkWidget *w) { /* @@ -1691,7 +1896,7 @@ static void try_shrink_drawing_area(frontend *fe) { if (fe->drawing_area_shrink_pending && - !not_size_allocated_yet(fe->menubar) && + (!fe->menubar_is_local || !not_size_allocated_yet(fe->menubar)) && !not_size_allocated_yet(fe->statusbar)) { /* * In order to permit the user to resize the window smaller as @@ -1712,18 +1917,21 @@ fe->drawing_area_shrink_pending = FALSE; } } +#endif /* !GTK_CHECK_VERSION(3,0,0) */ static gint configure_window(GtkWidget *widget, GdkEventConfigure *event, gpointer data) { - frontend *fe = (frontend *)data; +#if !GTK_CHECK_VERSION(3,0,0) /* * When the main puzzle window changes size, it might be because * the menu bar or status bar has turned up after starting off * absent, in which case we should have another go at enacting a * pending shrink of the drawing area. */ + frontend *fe = (frontend *)data; try_shrink_drawing_area(fe); +#endif return FALSE; } @@ -1732,8 +1940,10 @@ int x, y; get_size(fe, &x, &y); - fe->w = x; - fe->h = y; + +#if GTK_CHECK_VERSION(3,0,0) + gtk_window_resize_to_geometry(GTK_WINDOW(fe->window), x, y); +#else fe->drawing_area_shrink_pending = FALSE; gtk_drawing_area_size(GTK_DRAWING_AREA(fe->area), x, y); { @@ -1743,13 +1953,14 @@ } fe->drawing_area_shrink_pending = TRUE; try_shrink_drawing_area(fe); +#endif } static void menu_preset_event(GtkMenuItem *menuitem, gpointer data) { frontend *fe = (frontend *)data; game_params *params = - (game_params *)gtk_object_get_data(GTK_OBJECT(menuitem), "user-data"); + (game_params *)g_object_get_data(G_OBJECT(menuitem), "user-data"); if (fe->preset_threaded || (GTK_IS_CHECK_MENU_ITEM(menuitem) && @@ -1804,7 +2015,7 @@ guint info, guint time_stamp, gpointer data) { frontend *fe = (frontend *)data; - gtk_selection_data_set(seldata, seldata->target, 8, + gtk_selection_data_set(seldata, gtk_selection_data_get_target(seldata), 8, fe->paste_data, fe->paste_data_len); } @@ -1840,7 +2051,7 @@ { frontend *fe = (frontend *)data; - gpointer filesel = gtk_object_get_data(GTK_OBJECT(button), "user-data"); + gpointer filesel = g_object_get_data(G_OBJECT(button), "user-data"); const char *name = gtk_file_selection_get_filename(GTK_FILE_SELECTION(filesel)); @@ -1856,20 +2067,20 @@ fe->filesel_name = NULL; gtk_window_set_modal(GTK_WINDOW(filesel), TRUE); - gtk_object_set_data - (GTK_OBJECT(GTK_FILE_SELECTION(filesel)->ok_button), "user-data", + g_object_set_data + (G_OBJECT(GTK_FILE_SELECTION(filesel)->ok_button), "user-data", (gpointer)filesel); - gtk_signal_connect - (GTK_OBJECT(GTK_FILE_SELECTION(filesel)->ok_button), "clicked", - GTK_SIGNAL_FUNC(filesel_ok), fe); - gtk_signal_connect_object - (GTK_OBJECT(GTK_FILE_SELECTION(filesel)->ok_button), "clicked", - GTK_SIGNAL_FUNC(gtk_widget_destroy), (gpointer)filesel); - gtk_signal_connect_object - (GTK_OBJECT(GTK_FILE_SELECTION(filesel)->cancel_button), "clicked", - GTK_SIGNAL_FUNC(gtk_widget_destroy), (gpointer)filesel); - gtk_signal_connect(GTK_OBJECT(filesel), "destroy", - GTK_SIGNAL_FUNC(window_destroy), NULL); + g_signal_connect + (G_OBJECT(GTK_FILE_SELECTION(filesel)->ok_button), "clicked", + G_CALLBACK(filesel_ok), fe); + g_signal_connect_swapped + (G_OBJECT(GTK_FILE_SELECTION(filesel)->ok_button), "clicked", + G_CALLBACK(gtk_widget_destroy), (gpointer)filesel); + g_signal_connect_object + (G_OBJECT(GTK_FILE_SELECTION(filesel)->cancel_button), "clicked", + G_CALLBACK(gtk_widget_destroy), (gpointer)filesel); + g_signal_connect(G_OBJECT(filesel), "destroy", + G_CALLBACK(window_destroy), NULL); gtk_widget_show(filesel); gtk_window_set_transient_for(GTK_WINDOW(filesel), GTK_WINDOW(fe->window)); gtk_main(); @@ -1888,14 +2099,15 @@ GTK_WINDOW(fe->window), save ? GTK_FILE_CHOOSER_ACTION_SAVE : GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - save ? GTK_STOCK_SAVE : GTK_STOCK_OPEN, + LABEL_CANCEL, GTK_RESPONSE_CANCEL, + save ? LABEL_SAVE : LABEL_OPEN, GTK_RESPONSE_ACCEPT, NULL); if (gtk_dialog_run(GTK_DIALOG(filesel)) == GTK_RESPONSE_ACCEPT) { - const char *name = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filesel)); + char *name = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filesel)); filesel_name = dupstr(name); + g_free(name); } gtk_widget_destroy(filesel); @@ -1945,15 +2157,14 @@ " file \"%.*s\"?", FILENAME_MAX, name); if (!message_box(fe->window, "Question", buf, TRUE, MB_YESNO)) - return; + goto free_and_return; } fp = fopen(name, "w"); - sfree(name); if (!fp) { error_box(fe->window, "Unable to open save file"); - return; + goto free_and_return; } { @@ -1967,10 +2178,11 @@ sprintf(boxmsg, "Error writing save file: %.400s", strerror(errno)); error_box(fe->window, boxmsg); - return; + goto free_and_return; } } - + free_and_return: + sfree(name); } } @@ -2025,8 +2237,8 @@ static void menu_config_event(GtkMenuItem *menuitem, gpointer data) { frontend *fe = (frontend *)data; - int which = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(menuitem), - "user-data")); + int which = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(menuitem), + "user-data")); if (fe->preset_threaded || (GTK_IS_CHECK_MENU_ITEM(menuitem) && @@ -2043,6 +2255,21 @@ static void menu_about_event(GtkMenuItem *menuitem, gpointer data) { frontend *fe = (frontend *)data; + +#if GTK_CHECK_VERSION(3,0,0) + extern char *const *const xpm_icons[]; + extern const int n_xpm_icons; + GdkPixbuf *icon = gdk_pixbuf_new_from_xpm_data + ((const gchar **)xpm_icons[n_xpm_icons-1]); + gtk_show_about_dialog + (GTK_WINDOW(fe->window), + "program-name", thegame.name, + "version", ver, + "comments", "Part of Simon Tatham's Portable Puzzle Collection", + "logo", icon, + (const gchar *)NULL); + g_object_unref(G_OBJECT(icon)); +#else char titlebuf[256]; char textbuf[1024]; @@ -2053,6 +2280,7 @@ "%.500s", thegame.name, ver); message_box(fe->window, titlebuf, textbuf, TRUE, MB_OK); +#endif } static GtkWidget *add_menu_item_with_key(frontend *fe, GtkContainer *cont, @@ -2061,10 +2289,9 @@ GtkWidget *menuitem = gtk_menu_item_new_with_label(text); int keyqual; gtk_container_add(cont, menuitem); - gtk_object_set_data(GTK_OBJECT(menuitem), "user-data", - GINT_TO_POINTER(key)); - gtk_signal_connect(GTK_OBJECT(menuitem), "activate", - GTK_SIGNAL_FUNC(menu_key_event), fe); + g_object_set_data(G_OBJECT(menuitem), "user-data", GINT_TO_POINTER(key)); + g_signal_connect(G_OBJECT(menuitem), "activate", + G_CALLBACK(menu_key_event), fe); switch (key & ~0x1F) { case 0x00: key += 0x60; @@ -2100,7 +2327,6 @@ frontend *fe; GtkBox *vbox, *hbox; GtkWidget *menu, *menuitem; - GdkPixmap *iconpm; GList *iconlist; int x, y, n; char errbuf[1024]; @@ -2174,6 +2400,35 @@ midend_new_game(fe->me); } +#if !GTK_CHECK_VERSION(3,0,0) + { + /* + * try_shrink_drawing_area() will do some fiddling with the + * window size request (see comment in that function) after + * all the bits and pieces such as the menu bar and status bar + * have appeared in the puzzle window. + * + * However, on Unity systems, the menu bar _doesn't_ appear in + * the puzzle window, because the Unity shell hijacks it into + * the menu bar at the very top of the screen. We therefore + * try to detect that situation here, so that we don't sit + * here forever waiting for a menu bar. + */ + const char prop[] = "gtk-shell-shows-menubar"; + GtkSettings *settings = gtk_settings_get_default(); + if (!g_object_class_find_property(G_OBJECT_GET_CLASS(settings), + prop)) { + fe->menubar_is_local = TRUE; + } else { + int unity_mode; + g_object_get(gtk_settings_get_default(), + prop, &unity_mode, + (const gchar *)NULL); + fe->menubar_is_local = !unity_mode; + } + } +#endif + fe->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(fe->window), thegame.name); @@ -2203,24 +2458,24 @@ menuitem = gtk_menu_item_new_with_label("Restart"); gtk_container_add(GTK_CONTAINER(menu), menuitem); - gtk_signal_connect(GTK_OBJECT(menuitem), "activate", - GTK_SIGNAL_FUNC(menu_restart_event), fe); + g_signal_connect(G_OBJECT(menuitem), "activate", + G_CALLBACK(menu_restart_event), fe); gtk_widget_show(menuitem); menuitem = gtk_menu_item_new_with_label("Specific..."); - gtk_object_set_data(GTK_OBJECT(menuitem), "user-data", - GINT_TO_POINTER(CFG_DESC)); + g_object_set_data(G_OBJECT(menuitem), "user-data", + GINT_TO_POINTER(CFG_DESC)); gtk_container_add(GTK_CONTAINER(menu), menuitem); - gtk_signal_connect(GTK_OBJECT(menuitem), "activate", - GTK_SIGNAL_FUNC(menu_config_event), fe); + g_signal_connect(G_OBJECT(menuitem), "activate", + G_CALLBACK(menu_config_event), fe); gtk_widget_show(menuitem); menuitem = gtk_menu_item_new_with_label("Random Seed..."); - gtk_object_set_data(GTK_OBJECT(menuitem), "user-data", - GINT_TO_POINTER(CFG_SEED)); + g_object_set_data(G_OBJECT(menuitem), "user-data", + GINT_TO_POINTER(CFG_SEED)); gtk_container_add(GTK_CONTAINER(menu), menuitem); - gtk_signal_connect(GTK_OBJECT(menuitem), "activate", - GTK_SIGNAL_FUNC(menu_config_event), fe); + g_signal_connect(G_OBJECT(menuitem), "activate", + G_CALLBACK(menu_config_event), fe); gtk_widget_show(menuitem); fe->preset_radio = NULL; @@ -2247,12 +2502,12 @@ menuitem = gtk_radio_menu_item_new_with_label(fe->preset_radio, name); fe->preset_radio = - gtk_radio_menu_item_group(GTK_RADIO_MENU_ITEM(menuitem)); + gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); fe->n_preset_menu_items++; gtk_container_add(GTK_CONTAINER(submenu), menuitem); - gtk_object_set_data(GTK_OBJECT(menuitem), "user-data", params); - gtk_signal_connect(GTK_OBJECT(menuitem), "activate", - GTK_SIGNAL_FUNC(menu_preset_event), fe); + g_object_set_data(G_OBJECT(menuitem), "user-data", params); + g_signal_connect(G_OBJECT(menuitem), "activate", + G_CALLBACK(menu_preset_event), fe); gtk_widget_show(menuitem); } @@ -2261,12 +2516,12 @@ gtk_radio_menu_item_new_with_label(fe->preset_radio, "Custom..."); fe->preset_radio = - gtk_radio_menu_item_group(GTK_RADIO_MENU_ITEM(menuitem)); + gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); gtk_container_add(GTK_CONTAINER(submenu), menuitem); - gtk_object_set_data(GTK_OBJECT(menuitem), "user-data", - GPOINTER_TO_INT(CFG_SETTINGS)); - gtk_signal_connect(GTK_OBJECT(menuitem), "activate", - GTK_SIGNAL_FUNC(menu_config_event), fe); + g_object_set_data(G_OBJECT(menuitem), "user-data", + GINT_TO_POINTER(CFG_SETTINGS)); + g_signal_connect(G_OBJECT(menuitem), "activate", + G_CALLBACK(menu_config_event), fe); gtk_widget_show(menuitem); } @@ -2275,13 +2530,13 @@ add_menu_separator(GTK_CONTAINER(menu)); menuitem = gtk_menu_item_new_with_label("Load..."); gtk_container_add(GTK_CONTAINER(menu), menuitem); - gtk_signal_connect(GTK_OBJECT(menuitem), "activate", - GTK_SIGNAL_FUNC(menu_load_event), fe); + g_signal_connect(G_OBJECT(menuitem), "activate", + G_CALLBACK(menu_load_event), fe); gtk_widget_show(menuitem); menuitem = gtk_menu_item_new_with_label("Save..."); gtk_container_add(GTK_CONTAINER(menu), menuitem); - gtk_signal_connect(GTK_OBJECT(menuitem), "activate", - GTK_SIGNAL_FUNC(menu_save_event), fe); + g_signal_connect(G_OBJECT(menuitem), "activate", + G_CALLBACK(menu_save_event), fe); gtk_widget_show(menuitem); #ifndef STYLUS_BASED add_menu_separator(GTK_CONTAINER(menu)); @@ -2292,8 +2547,8 @@ add_menu_separator(GTK_CONTAINER(menu)); menuitem = gtk_menu_item_new_with_label("Copy"); gtk_container_add(GTK_CONTAINER(menu), menuitem); - gtk_signal_connect(GTK_OBJECT(menuitem), "activate", - GTK_SIGNAL_FUNC(menu_copy_event), fe); + g_signal_connect(G_OBJECT(menuitem), "activate", + G_CALLBACK(menu_copy_event), fe); gtk_widget_show(menuitem); fe->copy_menu_item = menuitem; } else { @@ -2303,8 +2558,8 @@ add_menu_separator(GTK_CONTAINER(menu)); menuitem = gtk_menu_item_new_with_label("Solve"); gtk_container_add(GTK_CONTAINER(menu), menuitem); - gtk_signal_connect(GTK_OBJECT(menuitem), "activate", - GTK_SIGNAL_FUNC(menu_solve_event), fe); + g_signal_connect(G_OBJECT(menuitem), "activate", + G_CALLBACK(menu_solve_event), fe); gtk_widget_show(menuitem); } add_menu_separator(GTK_CONTAINER(menu)); @@ -2319,24 +2574,24 @@ menuitem = gtk_menu_item_new_with_label("About"); gtk_container_add(GTK_CONTAINER(menu), menuitem); - gtk_signal_connect(GTK_OBJECT(menuitem), "activate", - GTK_SIGNAL_FUNC(menu_about_event), fe); + g_signal_connect(G_OBJECT(menuitem), "activate", + G_CALLBACK(menu_about_event), fe); gtk_widget_show(menuitem); #ifdef STYLUS_BASED menuitem=gtk_button_new_with_mnemonic("_Redo"); - gtk_object_set_data(GTK_OBJECT(menuitem), "user-data", - GINT_TO_POINTER((int)('r'))); - gtk_signal_connect(GTK_OBJECT(menuitem), "clicked", - GTK_SIGNAL_FUNC(menu_key_event), fe); + g_object_set_data(G_OBJECT(menuitem), "user-data", + GINT_TO_POINTER((int)('r'))); + g_signal_connect(G_OBJECT(menuitem), "clicked", + G_CALLBACK(menu_key_event), fe); gtk_box_pack_end(hbox, menuitem, FALSE, FALSE, 0); gtk_widget_show(menuitem); menuitem=gtk_button_new_with_mnemonic("_Undo"); - gtk_object_set_data(GTK_OBJECT(menuitem), "user-data", - GINT_TO_POINTER((int)('u'))); - gtk_signal_connect(GTK_OBJECT(menuitem), "clicked", - GTK_SIGNAL_FUNC(menu_key_event), fe); + g_object_set_data(G_OBJECT(menuitem), "user-data", + GINT_TO_POINTER((int)('u'))); + g_signal_connect(G_OBJECT(menuitem), "clicked", + G_CALLBACK(menu_key_event), fe); gtk_box_pack_end(hbox, menuitem, FALSE, FALSE, 0); gtk_widget_show(menuitem); @@ -2349,10 +2604,10 @@ errbuf[1]='\0'; for(errbuf[0]='0';errbuf[0]<='9';errbuf[0]++) { menuitem=gtk_button_new_with_label(errbuf); - gtk_object_set_data(GTK_OBJECT(menuitem), "user-data", - GINT_TO_POINTER((int)(errbuf[0]))); - gtk_signal_connect(GTK_OBJECT(menuitem), "clicked", - GTK_SIGNAL_FUNC(menu_key_event), fe); + g_object_set_data(G_OBJECT(menuitem), "user-data", + GINT_TO_POINTER((int)(errbuf[0]))); + g_signal_connect(G_OBJECT(menuitem), "clicked", + G_CALLBACK(menu_key_event), fe); gtk_box_pack_start(hbox, menuitem, TRUE, TRUE, 0); gtk_widget_show(menuitem); } @@ -2377,24 +2632,35 @@ fe->statusctx = gtk_statusbar_get_context_id (GTK_STATUSBAR(fe->statusbar), "game"); gtk_statusbar_push(GTK_STATUSBAR(fe->statusbar), fe->statusctx, - "test"); + DEFAULT_STATUSBAR_TEXT); +#if GTK_CHECK_VERSION(3,0,0) + gtk_widget_get_preferred_size(fe->statusbar, &req, NULL); +#else gtk_widget_size_request(fe->statusbar, &req); -#if 0 - /* For GTK 2.0, should we be using gtk_widget_set_size_request? */ #endif - gtk_widget_set_usize(viewport, -1, req.height); + gtk_widget_set_size_request(viewport, -1, req.height); } else fe->statusbar = NULL; fe->area = gtk_drawing_area_new(); -#if GTK_CHECK_VERSION(2,0,0) - GTK_WIDGET_UNSET_FLAGS(fe->area, GTK_DOUBLE_BUFFERED); +#if GTK_CHECK_VERSION(2,0,0) && !GTK_CHECK_VERSION(3,0,0) + gtk_widget_set_double_buffered(fe->area, FALSE); #endif + { + GdkGeometry geom; + geom.base_width = geom.base_height = 0; + gtk_window_set_geometry_hints(GTK_WINDOW(fe->window), fe->area, + &geom, GDK_HINT_BASE_SIZE); + } + fe->w = -1; + fe->h = -1; get_size(fe, &x, &y); +#if GTK_CHECK_VERSION(3,0,0) + gtk_window_set_default_geometry(GTK_WINDOW(fe->window), x, y); +#else fe->drawing_area_shrink_pending = FALSE; gtk_drawing_area_size(GTK_DRAWING_AREA(fe->area), x, y); - fe->w = x; - fe->h = y; +#endif gtk_box_pack_end(vbox, fe->area, TRUE, TRUE, 0); @@ -2405,28 +2671,33 @@ fe->paste_data = NULL; fe->paste_data_len = 0; - gtk_signal_connect(GTK_OBJECT(fe->window), "destroy", - GTK_SIGNAL_FUNC(destroy), fe); - gtk_signal_connect(GTK_OBJECT(fe->window), "key_press_event", - GTK_SIGNAL_FUNC(key_event), fe); - gtk_signal_connect(GTK_OBJECT(fe->area), "button_press_event", - GTK_SIGNAL_FUNC(button_event), fe); - gtk_signal_connect(GTK_OBJECT(fe->area), "button_release_event", - GTK_SIGNAL_FUNC(button_event), fe); - gtk_signal_connect(GTK_OBJECT(fe->area), "motion_notify_event", - GTK_SIGNAL_FUNC(motion_event), fe); - gtk_signal_connect(GTK_OBJECT(fe->area), "selection_get", - GTK_SIGNAL_FUNC(selection_get), fe); - gtk_signal_connect(GTK_OBJECT(fe->area), "selection_clear_event", - GTK_SIGNAL_FUNC(selection_clear), fe); - gtk_signal_connect(GTK_OBJECT(fe->area), "expose_event", - GTK_SIGNAL_FUNC(expose_area), fe); - gtk_signal_connect(GTK_OBJECT(fe->window), "map_event", - GTK_SIGNAL_FUNC(map_window), fe); - gtk_signal_connect(GTK_OBJECT(fe->area), "configure_event", - GTK_SIGNAL_FUNC(configure_area), fe); - gtk_signal_connect(GTK_OBJECT(fe->window), "configure_event", - GTK_SIGNAL_FUNC(configure_window), fe); + g_signal_connect(G_OBJECT(fe->window), "destroy", + G_CALLBACK(destroy), fe); + g_signal_connect(G_OBJECT(fe->window), "key_press_event", + G_CALLBACK(key_event), fe); + g_signal_connect(G_OBJECT(fe->area), "button_press_event", + G_CALLBACK(button_event), fe); + g_signal_connect(G_OBJECT(fe->area), "button_release_event", + G_CALLBACK(button_event), fe); + g_signal_connect(G_OBJECT(fe->area), "motion_notify_event", + G_CALLBACK(motion_event), fe); + g_signal_connect(G_OBJECT(fe->area), "selection_get", + G_CALLBACK(selection_get), fe); + g_signal_connect(G_OBJECT(fe->area), "selection_clear_event", + G_CALLBACK(selection_clear), fe); +#if GTK_CHECK_VERSION(3,0,0) + g_signal_connect(G_OBJECT(fe->area), "draw", + G_CALLBACK(draw_area), fe); +#else + g_signal_connect(G_OBJECT(fe->area), "expose_event", + G_CALLBACK(expose_area), fe); +#endif + g_signal_connect(G_OBJECT(fe->window), "map_event", + G_CALLBACK(map_window), fe); + g_signal_connect(G_OBJECT(fe->area), "configure_event", + G_CALLBACK(configure_area), fe); + g_signal_connect(G_OBJECT(fe->window), "configure_event", + G_CALLBACK(configure_window), fe); gtk_widget_add_events(GTK_WIDGET(fe->area), GDK_BUTTON_PRESS_MASK | @@ -2435,10 +2706,10 @@ GDK_POINTER_MOTION_HINT_MASK); if (n_xpm_icons) { - gtk_widget_realize(fe->window); - iconpm = gdk_pixmap_create_from_xpm_d(fe->window->window, NULL, - NULL, (gchar **)xpm_icons[0]); - gdk_window_set_icon(fe->window->window, NULL, iconpm, NULL); + gtk_window_set_icon(GTK_WINDOW(fe->window), + gdk_pixbuf_new_from_xpm_data + ((const gchar **)xpm_icons[0])); + iconlist = NULL; for (n = 0; n < n_xpm_icons; n++) { iconlist = @@ -2446,14 +2717,17 @@ gdk_pixbuf_new_from_xpm_data((const gchar **) xpm_icons[n])); } - gdk_window_set_icon_list(fe->window->window, iconlist); + gtk_window_set_icon_list(GTK_WINDOW(fe->window), iconlist); } gtk_widget_show(fe->area); gtk_widget_show(fe->window); +#if !GTK_CHECK_VERSION(3,0,0) fe->drawing_area_shrink_pending = TRUE; try_shrink_drawing_area(fe); +#endif + set_window_background(fe, 0); return fe; diff -Nru sgt-puzzles-20140928.r10274/guess.c sgt-puzzles-20160429.b31155b/guess.c --- sgt-puzzles-20140928.r10274/guess.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/guess.c 2016-04-29 00:30:09.000000000 +0000 @@ -421,6 +421,7 @@ int drag_opeg; /* peg index, if dragged from a peg (from current guess), otherwise -1 */ int show_labels; /* label the colours with letters */ + pegrow hint; }; static game_ui *new_ui(const game_state *state) @@ -437,6 +438,8 @@ static void free_ui(game_ui *ui) { + if (ui->hint) + free_pegrow(ui->hint); free_pegrow(ui->curr_pegs); sfree(ui->holds); sfree(ui); @@ -487,6 +490,11 @@ { int i; + if (newstate->next_go < oldstate->next_go) { + sfree(ui->hint); + ui->hint = NULL; + } + /* Implement holds, clear other pegs. * This does something that is arguably the Right Thing even * for undo. */ @@ -571,7 +579,7 @@ ui->markable = is_markable(params, ui->curr_pegs); } -static int mark_pegs(pegrow guess, pegrow solution, int ncols) +static int mark_pegs(pegrow guess, const pegrow solution, int ncols) { int nc_place = 0, nc_colour = 0, i, j; @@ -633,6 +641,125 @@ return buf; } +static void compute_hint(const game_state *state, game_ui *ui) +{ + /* Suggest the lexicographically first row consistent with all + * previous feedback. This is not only a useful hint, but also + * a reasonable strategy if applied consistently. If the user + * uses hints in every turn, they may be able to intuit this + * strategy, or one similar to it. I (Jonas Kölker) came up + * with something close to it without seeing it in action. */ + + /* Some performance characteristics: I want to ask for each n, + * how many solutions are guessed in exactly n guesses if you + * use the hint in each turn. + * + * With 4 pegs and 6 colours you get the following histogram: + * + * 1 guesses: 1 solution + * 2 guesses: 4 solutions + * 3 guesses: 25 solutions + * 4 guesses: 108 solutions + * 5 guesses: 305 solutions + * 6 guesses: 602 solutions + * 7 guesses: 196 solutions + * 8 guesses: 49 solutions + * 9 guesses: 6 solutions + * (note: the tenth guess is never necessary.) + * + * With 5 pegs and 8 colours you get the following histogram: + * + * 1 guesses: 1 solution + * 2 guesses: 5 solutions + * 3 guesses: 43 solutions + * 4 guesses: 278 solutions + * 5 guesses: 1240 solutions + * 6 guesses: 3515 solutions + * 7 guesses: 7564 solutions + * 8 guesses: 14086 solutions + * 9 guesses: 4614 solutions + * 10 guesses: 1239 solutions + * 11 guesses: 175 solutions + * 12 guesses: 7 solutions + * 13 guesses: 1 solution + * + * The solution which takes too many guesses is {8, 8, 5, 6, 7}. + * The game ID is c8p5g12Bm:4991e5e41a. */ + + int mincolour = 1, maxcolour = 0, i, j; + + /* For large values of npegs and ncolours, the lexicographically + * next guess make take a while to find. Finding upper and + * lower limits on which colours we have to consider will speed + * this up, as will caching our progress from one invocation to + * the next. The latter strategy works, since if we have ruled + * out a candidate we will never reverse this judgment in the + * light of new information. Removing information, i.e. undo, + * will require us to backtrack somehow. We backtrack by fully + * forgetting our progress (and recomputing it if required). */ + + for (i = 0; i < state->next_go; ++i) + for (j = 0; j < state->params.npegs; ++j) + if (state->guesses[i]->pegs[j] > maxcolour) + maxcolour = state->guesses[i]->pegs[j]; + maxcolour = min(maxcolour + 1, state->params.ncolours); + +increase_mincolour: + for (i = 0; i < state->next_go; ++i) { + if (state->guesses[i]->feedback[0]) + goto next_iteration; + for (j = 0; j < state->params.npegs; ++j) + if (state->guesses[i]->pegs[j] != mincolour) + goto next_iteration; + ++mincolour; + goto increase_mincolour; + next_iteration: + ; + } + + if (!ui->hint) { + ui->hint = new_pegrow(state->params.npegs); + for (i = 0; i < state->params.npegs; ++i) + ui->hint->pegs[i] = 1; + } + + while (ui->hint->pegs[0] <= state->params.ncolours) { + for (i = 0; i < state->next_go; ++i) { + mark_pegs(ui->hint, state->guesses[i], maxcolour); + for (j = 0; j < state->params.npegs; ++j) + if (ui->hint->feedback[j] != state->guesses[i]->feedback[j]) + goto increment_pegrow; + } + /* a valid guess was found; install it and return */ + for (i = 0; i < state->params.npegs; ++i) + ui->curr_pegs->pegs[i] = ui->hint->pegs[i]; + + ui->markable = TRUE; + ui->peg_cur = state->params.npegs; + ui->display_cur = 1; + return; + + increment_pegrow: + for (i = ui->hint->npegs; + ++ui->hint->pegs[--i], i && ui->hint->pegs[i] > maxcolour; + ui->hint->pegs[i] = mincolour); + } + /* No solution is compatible with the given hints. Impossible! */ + /* (hack new_game_desc to create invalid solutions to get here) */ + + /* For some values of npegs and ncolours, the hinting function takes a + * long time to complete. To visually indicate completion with failure, + * should it ever happen, update the ui in some trivial way. This gives + * the user a sense of broken(ish)ness and futility. */ + if (!ui->display_cur) { + ui->display_cur = 1; + } else if (state->params.npegs == 1) { + ui->display_cur = 0; + } else { + ui->peg_cur = (ui->peg_cur + 1) % state->params.npegs; + } +} + static char *interpret_move(const game_state *from, game_ui *ui, const game_drawstate *ds, int x, int y, int button) @@ -754,6 +881,9 @@ if (button == CURSOR_UP && ui->colour_cur > 0) ui->colour_cur--; ret = ""; + } else if (button == 'h' || button == 'H' || button == '?') { + compute_hint(from, ui); + ret = ""; } else if (button == CURSOR_LEFT || button == CURSOR_RIGHT) { int maxcur = from->params.npegs; if (ui->markable) maxcur++; @@ -776,7 +906,9 @@ ui->display_cur = 1; set_peg(&from->params, ui, ui->peg_cur, 0); ret = ""; - } else if (button == 'H' || button == 'h') { + } else if (button == CURSOR_SELECT2) { + if (ui->peg_cur == from->params.npegs) + return NULL; ui->display_cur = 1; ui->holds[ui->peg_cur] = 1 - ui->holds[ui->peg_cur]; ret = ""; @@ -1245,29 +1377,31 @@ } /* draw the guesses (so far) and the hints - * (in reverse order to avoid trampling holds) */ + * (in reverse order to avoid trampling holds, and postponing the + * next_go'th to not overrender the top of the circular cursor) */ for (i = state->params.nguesses - 1; i >= 0; i--) { - if (state->next_go > i || state->solved) { + if (i < state->next_go || state->solved) { /* this info is stored in the game_state already */ guess_redraw(dr, ds, i, state->guesses[i], NULL, -1, 0, ui->show_labels); hint_redraw(dr, ds, i, state->guesses[i], i == (state->next_go-1) ? 1 : 0, FALSE, FALSE); - } else if (state->next_go == i) { - /* this is the one we're on; the (incomplete) guess is - * stored in the game_ui. */ - guess_redraw(dr, ds, i, ui->curr_pegs, - ui->holds, ui->display_cur ? ui->peg_cur : -1, 0, - ui->show_labels); - hint_redraw(dr, ds, i, NULL, 1, - ui->display_cur && ui->peg_cur == state->params.npegs, - ui->markable); - } else { + } else if (i > state->next_go) { /* we've not got here yet; it's blank. */ guess_redraw(dr, ds, i, NULL, NULL, -1, 0, ui->show_labels); hint_redraw(dr, ds, i, NULL, 0, FALSE, FALSE); } } + if (!state->solved) { + /* this is the one we're on; the (incomplete) guess is stored in + * the game_ui. */ + guess_redraw(dr, ds, state->next_go, ui->curr_pegs, + ui->holds, ui->display_cur ? ui->peg_cur : -1, 0, + ui->show_labels); + hint_redraw(dr, ds, state->next_go, NULL, 1, + ui->display_cur && ui->peg_cur == state->params.npegs, + ui->markable); + } /* draw the 'current move' and 'able to mark' sign. */ if (new_move) diff -Nru sgt-puzzles-20140928.r10274/guess.R sgt-puzzles-20160429.b31155b/guess.R --- sgt-puzzles-20140928.r10274/guess.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/guess.R 2016-04-29 00:30:09.000000000 +0000 @@ -15,5 +15,5 @@ !end !begin >gamedesc.txt -guess:guess.exe:Guess:Combination-guessing puzzle +guess:guess.exe:Guess:Combination-guessing puzzle:Guess the hidden combination of colours. !end Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/blackbox-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/blackbox-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/blackbox-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/blackbox-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/blackbox-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/blackbox-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/blackbox-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/blackbox-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/blackbox-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/blackbox-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/blackbox-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/blackbox-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/blackbox-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/blackbox-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/blackbox-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/blackbox-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/blackbox-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/blackbox-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/blackbox-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/blackbox-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/blackbox-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/blackbox-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/blackbox-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/blackbox-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/blackbox.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/blackbox.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/blackbox-icon.c sgt-puzzles-20160429.b31155b/icons/blackbox-icon.c --- sgt-puzzles-20140928.r10274/icons/blackbox-icon.c 2014-09-29 00:33:38.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/blackbox-icon.c 2016-04-29 00:31:42.000000000 +0000 @@ -1,630 +1,886 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 115 2 ", -" c #D5D3CE", -". c #D4D2CD", -"X c #D3D1CC", -"o c #D1CFCA", -"O c #D1CFCB", -"+ c #D1D0CB", -"@ c #D2D0CB", -"# c #D7D5CF", -"$ c #CDCBC6", -"% c #D9D7D1", -"& c #B2B1AC", -"* c #72716F", -"= c #777673", -"- c #807F7C", -"; c #82817E", -": c #757472", -"> c #787774", -", c #878683", -"< c #797875", -"1 c #757471", -"2 c #83827F", -"3 c #D6D4CF", -"4 c #DBD9D4", -"5 c #71706D", -"6 c #B3B1AD", -"7 c #B5B4AF", -"8 c #5E5D5B", -"9 c #646361", -"0 c #706F6D", -"q c #747370", -"w c #666664", -"e c #7A7976", -"r c #686765", -"t c #636260", -"y c #D7D5D0", -"u c #B6B4B0", -"i c #CBC9C4", -"p c #B0AFAB", -"a c #676664", -"s c #71706E", -"d c #767572", -"f c #777674", -"g c #696866", -"h c #6B6A68", -"j c #7D7C7A", -"k c #6D6C6A", -"l c #DBD9D3", -"z c #DCDAD5", -"x c #B4B2AE", -"c c #5B5A58", -"v c #81807D", -"b c #888784", -"n c #7A7977", -"m c #7C7B79", -"M c #8A8986", -"N c #AEACA8", -"B c #C7C5C0", -"V c #A9A7A3", -"C c #070707", -"Z c black", -"A c #2D2C2B", -"S c #797876", -"D c #6A6967", -"F c #D8D6D1", -"G c #8B8A86", -"H c #B4B3AE", -"J c #A09F9B", -"K c #181818", -"L c #73726F", -"P c #656463", -"I c #7B7A77", -"U c #D4D3CD", -"Y c #DAD8D3", -"T c #3C3C3A", -"R c #1C1C1B", -"E c #858481", -"W c #737270", -"Q c #868582", -"! c #D0CEC9", -"~ c #7E7D7B", -"^ c #747371", -"/ c #848380", -"( c #DDDBD5", -") c #62615F", -"_ c #767573", -"` c #7C7B78", -"' c #666563", -"] c #ABAAA6", -"[ c #5D5D5B", -"{ c #6E6E6B", -"} c #61605E", -"| c #656462", -" . c #5F5E5C", -".. c #C3C2BD", -"X. c #ACAAA6", -"o. c #B0AEAA", -"O. c #ADACA8", -"+. c #B1B0AB", -"@. c #AFAEAA", -"#. c #B1AFAB", -"$. c #B1B0AC", -"%. c #DCDAD4", -"&. c #D7D6D0", -"*. c #DDDAD5", -"=. c #D8D6D0", -"-. c #BDBBB7", -";. c #DDDBD6", -":. c #D2D1CC", -">. c #C9C7C3", -",. c #93928E", -"<. c #D5D4CE", -"1. c #CECCC7", -"2. c #CFCDC9", -"3. c #CFCDC8", -"4. c gray100", +"16 16 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , < 1 2 @ ", -"3 4 5 6 7 8 9 0 q 9 w e r t 1 o ", -"y 3 u i p a s d f g h j k r < O ", -"y @ l z x k c v b n m M j e , @ ", -"y 3 N B V C Z A S a D m h w > O ", -"y F G H J Z Z K L P a I g 9 : o ", -"y X U Y & T R 8 E W = Q > q ; @ ", -"y . ! F p q = v ~ * ^ / : s - + ", -"y y . ( N ) r * _ a g ` h ' = O ", -"y 3 X z ] [ t { s } 9 > | .* o ", -"3 ! $ ! ..X.N o.p O.N +.@.#.$.X ", -" Y %.z F &.*.4 =.X -.;.X ", -" y . @ o . :.>.,.3 X ", -" <.! o 1.1.o ! $ 2.$ 3.. ", -" . o o o o o o o + :.+ " +"qX0XqX0X9X7X7X8X8X7X7X8X7X7X8XqX", +"eXqX4XtX'.4.9.i.a.7.0.h.q.7.s.8X", +"qXsX@.T. X..$.2.6.$.&.w.=.#.7.7X", +"wXtXW.&X'.*.3.8.9.-.:.t.,.=.q.7X", +"eX7XsXdX].,.| p.j.w.r.z.t.w.h.8X", +"wXtXI..X!.# k q.*.;.r.:.&.0.7X", +"wXiX0.G.U. 6 5.%.*.w.-.$.7.7X", +"eX9X0XyX'.A 0 ..g.5.9.g.0.5.a.8X", +"eX0X6XrX_.6.9.p.u.4.6.d.7.3.i.8X", +"eXeX0XpX(.@.=.4.8.*.-.r.:.&.9.7X", +"eXwX9XiX~...#.<.3.+.$.0.%.o.4.7X", +"wX6X3X6X*X^.(._._./.(.`.).'.`.9X", +"qXqXqXqXyXiXiXrXeXpXuXrX7X[.aX9X", +"qXqXqXqXeX0XqX8X7XqX0X9X:Xg.eX9X", +"qXqXqXqXqX6X7X4X4X7X6X3X5X4X5X0X", +"qXqXqXqX0X7X7X7X7X7X7X7X7X8X7XqX" }; /* XPM */ static const char *const xpm_icon_1[] = { /* columns rows colors chars-per-pixel */ -"32 32 168 2 ", -" c #D5D3CE", -". c #D6D4CF", -"X c #D6D4CE", -"o c #D4D2CD", -"O c #D2D0CB", -"+ c #D2D1CC", -"@ c #D3D1CC", -"# c #D9D7D2", -"$ c #D1CFCA", -"% c #94938F", -"& c #767573", -"* c #7C7B78", -"= c #7B7A77", -"- c #7B7A78", -"; c #787774", -": c #888784", -"> c #918F8C", -", c #777673", -"< c #8A8986", -"1 c #8F8E8B", -"2 c #777674", -"3 c #898885", -"4 c #D7D6D0", -"5 c #CCCAC5", -"6 c #D9D7D1", -"7 c #878683", -"8 c #605F5D", -"9 c #676665", -"0 c #666563", -"q c #676664", -"w c #62615F", -"e c #83827F", -"r c #61605E", -"t c #7A7976", -"y c #81807D", -"u c #D4D3CD", -"i c #DFDDD8", -"p c #92918D", -"a c #555452", -"s c #979592", -"d c #DEDBD6", -"f c #656462", -"g c #6C6B69", -"h c #6B6A68", -"j c #6C6B68", -"k c #868582", -"l c #7D7C7A", -"z c #848380", -"x c #E1DFD9", -"c c #898784", -"v c #4A4A48", -"b c #7F7E7B", -"n c #E1DFDA", -"m c #646361", -"M c #6A6967", -"N c #858481", -"B c #7D7C79", -"V c #DCDAD5", -"C c #9E9D99", -"Z c #B5B3AF", -"A c #969591", -"S c #D7D5D0", -"D c #848381", -"F c #D8D7D1", -"G c #D8D6D1", -"H c #DAD8D3", -"J c #5F5E5C", -"K c #636261", -"L c #82817E", -"P c #605F5E", -"I c #797875", -"U c #807F7D", -"Y c #CDCCC7", -"T c #CECCC7", -"R c #D0CFCA", -"E c #999894", -"W c #807F7C", -"Q c #8B8A87", -"! c #8C8B88", -"~ c #8E8D8A", -"^ c #908F8C", -"/ c #959490", -"( c #CFCDC8", -") c #D0CEC9", -"_ c #7A7977", -"` c #575755", -"' c #3A3938", -"] c #444442", -"[ c #6D6C6A", -"{ c #7E7D7A", -"} c #D6D3CE", -"| c #1D1D1C", -" . c black", -".. c #010101", -"X. c #5F5E5D", -"o. c #666564", -"O. c #61605F", -"+. c #DEDCD7", -"@. c #92908D", -"#. c #B3B1AD", -"$. c #8B8986", -"%. c #DEDCD6", -"&. c #6F6F6C", -"*. c #040403", -"=. c #030302", -"-. c #040404", -";. c #333231", -":. c #E2E0DA", -">. c #636360", -",. c #5D5C5A", -"<. c gray1", -"1. c #212120", -"2. c #C5C3BE", -"3. c #9B9A96", -"4. c #6F6E6B", -"5. c gray2", -"6. c #323230", -"7. c #8B8A86", -"8. c #DBD8D3", -"9. c #1B1A1A", -"0. c #5E5D5C", -"q. c #CDCBC6", -"w. c #3E3E3C", -"e. c #494947", -"r. c #747370", -"t. c #91908D", -"y. c #91908C", -"u. c #D4D3CE", -"i. c #93928F", -"p. c #8A8985", -"a. c #787775", -"s. c #7C7B79", -"d. c #5E5D5B", -"f. c #81807E", -"g. c #D0CFC9", -"h. c #C9C8C3", -"j. c #CBC9C4", -"k. c #CAC8C4", -"l. c #9C9B98", -"z. c #9A9995", -"x. c #CECDC8", -"c. c #DAD8D2", -"v. c #DBD9D4", -"b. c #D7D4CF", -"n. c #DAD9D3", -"m. c #D6D5D0", -"M. c #C8C6C1", -"N. c #C2C0BB", -"B. c #E0DED9", -"V. c #B4B2AE", -"C. c #DDDBD6", -"Z. c #D6D5CF", -"A. c #CCCAC6", -"S. c #646360", -"D. c #94928F", -"F. c #CFCEC9", -"G. c #DFDCD7", -"H. c #CFCEC8", -"J. c #C9C7C2", -"K. c #CAC9C4", -"L. c #CAC8C3", -"P. c #C7C6C1", -"I. c #C6C4C0", -"U. c #C6C5C0", -"Y. c #C8C7C2", -"T. c #C9C7C3", -"R. c #CFCDC9", -"E. c gray100", +"32 32 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , * = * ; < 1 2 * = * ; 3 o ", -"o # 4 5 6 # 7 8 9 0 q w ; e r q 0 q w t y r q 0 q w ; ", -"o # u i p a s d . < f g h j q * k 0 g h g q l z 0 g h g q * ", -"o # o x c v b n 3 m h M h 0 = N f h M h 0 B z f h M h 0 = ", -"o # V C Z A . S < f g h g q * k 0 g h g q l D 0 g h g q * ", -"o F G # # H H k J f K m 8 2 L 8 0 f 0 P I U 8 0 f 0 r 2 ", -"o # @ Y T T Y T R E W Q Q ! z ~ A U D z z y ^ / U D z z y 1 o ", -"o # u ( $ ) ) ) O A _ ` ' ] [ ~ ^ I { B l t Q ^ I l B l t < o ", -"o 6 G } } G . # < | ... . .m 7 X.q 0 o.O.t y P q 0 q w ; ", -"o # +.@.#.$.) %.&. .*.=.-. .;.< f g h h o.l z 0 g h g q * ", -"o # o :.L J >.o i ,. .<. ... .1.z f h M h 0 B z f h M h 0 = ", -"o # V C 2.3.( +.4. .-.<.5. .6.7.f g h g q { D 0 g h g q * ", -"o F G 8.S H . # 3 9. ... . .w k 0.0 f 0 P I U 8 0 f 0 r , ", -"o # @ q.Y T q.Y ) 3.L ,.w.e.r./ A L k N k e t.A L k N k e y.o ", -"o # u.) $ $ R ) @ i., e L e - 7 ^ 2 * = * ; p.1 2 * = * ; : o ", -"o 6 G . . . # 7 8 0 f f r a.e r q 0 q w t y r q 0 q w ; ", -"o # S o o G p.f g h h q * k 0 g h h o.l z 0 g h j q - ", -"o # S o o G 3 m h M h 0 = N f h M h 0 B z f h M h 0 = ", -"o # S o o o G < 0 [ h g 9 s.k 0 g h g q { N 0 g h g 9 * ", -"o F G . S S S . H k d.0 m f 8 & f.J f m f 8 a.W J f m f 8 & ", -"o # g.h.j.j.j.k.q.l.k < 3 p.7 % z.k < 3 p.7 / E k < 3 < 7 % o ", -" . $ T ( x.( T O S G G G G # @ ) c.G G G # @ R c.G v.G # o + . ", -" . S b.b.S . n.m.o o o o ) T . o o o ) T . @ M.o $ @ . ", -" o # S o . R T . . ) T G T 8 N.8.$ @ . ", -" o # S o . $ T . . ) x.o B.z V.C.$ @ . ", -" o # Z.o o . ) T . o o . ) Y G A.S.D.C.) @ . ", -" o # G . S S S G O F.G S S S G O ) G b.G.8.S @ @ . ", -" o # H.J.K.k.L.j.P.I.j.L.k.L.j.P.U.j.L.Y.T.K.Y.@ . ", -" . $ ( R.( ( ( ) ) ( ( ( ( ( ) ) ( ( ( ( ( ) ", -" . S . b.. b.. . b.. b.. b.. . b.. b.. b.. " +"qXqXqXwXwXwXwXwXwXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX", +"qXqX0X8X8X8X8X9X8X0XqXqXqXqXqX0X0XqXqXqXqXqX0X0XqXqXqXqXqX0XqXqX", +"0XtXqX7X8X9X7X7X0XB.8.r.e.e.0.k.m.9.r.e.r.0.l.n.9.r.e.r.0.k.0XqX", +"0XtXeXqXwX5XyXqXtXh.O.*.&.*.@.0.s.+.*.&.*.@.w.p.+.*.&.*.@.0.qXqX", +"0XtX0XsXD.H d.pXwXl.%.>.:.>.*.r.g.&.>.:.>.*.t.d.&.>.:.>.*.r.qXqX", +"0XtX0XgXc.i 2.dXqXk.$.:.;.:.&.e.f.%.:.;.:.&.t.d.%.:.;.:.&.e.qXqX", +"0XtXqXsXH.y.p.9XrXl.%.>.:.>.*.r.g.&.>.:.>.*.y.d.&.>.:.>.*.r.qXqX", +"0XrXrXqXtXsXyXqXyXg.X.%.#.$.O.9.a.o.&.%.&.O.q.i.O.&.%.&.+.9.qXqX", +"0XtX9X3X4X3X3X4X6XS.i.z.z.x.d.v.C.i.d.d.d.p.m.V.i.d.d.d.p.n.0XqX", +"0XtX0X5X7X6X6X6X8XC.w.] V L ,.v.m.q.y.t.t.q.z.m.q.y.t.t.w.l.0XqX", +"0XtXrXwXqXrXwXqXtXl.w . $.h.o.*.&.&.+.q.p.O.*.&.*.@.0.qXqX", +"0XtX0XfXb.j.1.$XfX1. O o O b z.%.>.:.:.&.t.d.&.>.:.>.*.e.qXqX", +"0XtX0XhXf.F D %XjX . o . t d.%.:.;.:.&.t.d.%.:.;.:.&.e.qXqX", +"0XtXqXsXD.U.j.&XfX<. O o + v z.%.>.:.>.*.y.d.&.>.:.>.*.r.qXqX", +"0XrXrXqXuXtXiXeXtXk.9 . @.g.X.&.%.&.O.q.i.o.&.%.&.+.9.qXqX", +"0XtX9X3X3X3X3X3X6XF.a. .D T 5.V.C.a.g.f.g.a.M.C.a.g.f.g.s.m.0XqX", +"0XtX0X6X7X7X6X6X9XN.9.s.a.s.e.h.m.9.r.e.r.0.l.b.9.r.e.r.0.k.0XqX", +"0XtXrXqXwXwXwXqXtXh.O.&.%.%.+.0.s.+.*.&.*.@.w.p.+.*.&.*.@.0.qXqX", +"0XtXeX0XqXqXqX0XrXl.%.>.:.:.*.r.g.&.>.:.:.&.t.d.&.>.:.>.*.e.qXqX", +"0XtXeX0XqXqXqX0XrXk.$.:.;.:.&.e.f.%.:.;.:.&.t.d.%.:.;.:.&.e.qXqX", +"0XtXeX0XqXqX0X0XrXl.&.,.:.>.*.r.g.&.>.:.>.*.y.f.&.>.:.>.*.r.qXqX", +"0XrXrXwXeXeXeXwXyXg.X.&.$.%.O.8.p.o.%.$.%.O.0.i.o.%.$.%.O.8.qXqX", +"0XtX6X,X1X1X1XX,XX9XwX", +"qXqXqXqXqXqXqXqXwX7X5X5X5X5X5X5X6X5X5X5X5X5X6X6X5X5X5X5X5X6XqXqX", +"qXqXqXqXqXqXqXqXqXwXeXwXeXwXeXwXwXeXwXeXwXeXwXwXeXwXeXwXeXwXqXqX" }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 229 2 ", -" c #D5D3CE", -". c #D4D2CD", -"X c #D4D2CE", -"o c #D6D4CF", -"O c #D7D5D0", -"+ c #D2D0CB", -"@ c #CFCEC9", -"# c #D0CEC9", -"$ c #CDCBC6", -"% c #CCCBC6", -"& c #CCCAC6", -"* c #CDCCC7", -"= c #D4D1CD", -"- c #DDDBD6", -"; c #D3D2CD", -": c #D1CFCA", -"> c #D0CFCA", -", c #8A8985", -"< c #6C6B69", -"1 c #72716F", -"2 c #71706E", -"3 c #6B6A68", -"4 c #8D8C89", -"5 c #8F8E8A", -"6 c #8C8B87", -"7 c #D9D7D2", -"8 c #DCDAD5", -"9 c #DAD8D3", -"0 c #E2E0DB", -"q c #848380", -"w c #636260", -"e c #696866", -"r c #686765", -"t c #62615F", -"y c #898885", -"u c #61605F", -"i c #8B8A86", -"p c #878683", -"a c #6A6967", -"s c #8A8986", -"d c #DCDBD5", -"f c #D8D6D1", -"g c #C3C1BD", -"h c #9C9A97", -"j c #B4B2AE", -"k c #868582", -"l c #656462", -"z c #646361", -"x c #888784", -"c c #8B8A87", -"v c #D5D4CE", -"b c #E5E3DD", -"n c #666563", -"m c #605F5D", -"M c #4D4D4B", -"N c #A09E9A", -"B c #E0DED8", -"V c #D3D1CC", -"C c #D4D3CD", -"Z c #858582", -"A c #636261", -"S c #E5E2DD", -"D c #565553", -"F c #3D3C3B", -"G c #ADACA8", -"H c #DEDCD6", -"J c #858581", -"K c #918F8C", -"L c #61605E", -"P c #8C8A87", -"I c #DEDCD7", -"U c #92918D", -"Y c #CAC8C3", -"T c #C4C2BD", -"R c #908F8C", -"E c #8C8B88", -"W c #6D6B69", -"Q c #D6D3CE", -"! c #82817E", -"~ c #5F5E5D", -"^ c #5E5D5B", -"/ c #898884", -"( c #858481", -") c #5E5D5C", -"_ c #666564", -"` c #DBD9D3", -"' c #DDDCD6", -"] c #CECDC7", -"[ c #C7C6C1", -"{ c #C9C8C3", -"} c #C9C7C2", -"| c #C8C7C2", -" . c #A4A39F", -".. c #969591", -"X. c #999895", -"o. c #9F9E9A", -"O. c #A09F9B", -"+. c #9B9A96", -"@. c #959491", -"#. c #A5A4A0", -"$. c #969592", -"%. c #999894", -"&. c #A6A5A0", -"*. c #9A9995", -"=. c #A7A6A2", -"-. c #D3D2CC", -";. c #D1D0CB", -":. c #747371", -">. c #7A7976", -",. c #555452", -"<. c #363635", -"1. c #323231", -"2. c #484746", -"3. c #71706D", -"4. c #767573", -"5. c #91908D", -"6. c #787774", -"7. c #777673", -"8. c #93928E", -"9. c #908F8B", -"0. c #72716E", -"q. c #787775", -"w. c #DBD9D4", -"e. c #D4D3CE", -"r. c #5C5C5A", -"t. c #1B1A1A", -"y. c black", -"u. c #010101", -"i. c gray3", -"p. c #474745", -"a. c #605F5E", -"s. c #676664", -"d. c #C0BFBA", -"f. c #CCCAC5", -"g. c #CECCC8", -"h. c #BFBDB9", -"j. c #202020", -"k. c gray1", -"l. c #020202", -"z. c #040404", -"x. c #81807D", -"c. c #6C6B68", -"v. c #676663", -"b. c #BBB9B5", -"n. c #CBC9C4", -"m. c #5F5E5B", -"M. c #E1DFDA", -"N. c #D2CFCB", -"B. c #595956", -"V. c #91908C", -"C. c #696865", -"Z. c #484745", -"A. c #4F4E4C", -"S. c #5C5B59", -"D. c #E3E1DB", -"F. c #D0CECA", -"G. c #61615E", -"H. c #434240", -"J. c #959490", -"K. c #A3A19D", -"L. c #5D5C5A", -"P. c #E2E0DA", -"I. c #969491", -"U. c #C6C5C0", -"Y. c #D6D5CF", -"T. c #7C7B79", -"R. c #353433", -"E. c #151514", -"W. c #646362", -"Q. c #363534", -"!. c #1E1E1D", -"~. c #585756", -"^. c #5F5E5C", -"/. c #656463", -"(. c #CECCC7", -"). c #979693", -"_. c #A09F9C", -"`. c #73726F", -"'. c #868682", -"]. c #A5A49F", -"[. c #A6A5A1", -"{. c #9A9996", -"}. c #979692", -"|. c #A8A7A3", -" X c #D1CFCB", -".X c #757472", -"XX c #777674", -"oX c #7C7B78", -"OX c #7D7B79", -"+X c #797876", -"@X c #6F6E6C", -"#X c #706F6D", -"$X c #706F6C", -"%X c #686766", -"&X c #D5D2CE", -"*X c #6D6C6A", -"=X c #6D6C69", -"-X c #D7D4CF", -";X c #5D5C5B", -":X c #DDDBD5", -">X c #C2C0BB", -",X c #C3C2BD", -" c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" + + + : , < 1 2 2 2 2 1 3 4 4 3 1 2 2 2 2 1 3 5 6 < 1 2 2 2 2 1 3 5 7 . ", -" . 8 o 9 0 - o o q w e r r r r e t y y t e r r r r e u i p t e r r r r a t s 9 . ", -" . d . f g h j 7 . . k l < a a a a < z s s z < a a a a < z 6 x z < a a a a < z c 9 . ", -" . d v : b n m M N B V C Z l 3 a a a a 3 z s s z 3 a a a a 3 A c x z 3 a a a a 3 z c 9 . ", -" . d v : S r D F G H V C J l 3 a a a a 3 z , s z 3 a a a a 3 A c x z 3 a a a a 3 z c 9 . ", -" . d v : S n K L P 0 V C J l 3 a a a a 3 z s s z 3 a a a a 3 A c x z 3 a a a a 3 z c 9 . ", -" . d v V I U Y T R I V C Z l 3 a a a a 3 z s s z 3 a a a a 3 A c x z 3 a a a a 3 z c 9 . ", -" . d . . - o O - V . k n < 3 3 3 3 < l s s l < 3 3 3 3 < l E y l < 3 3 3 3 W l 6 9 . ", -" . 8 o o O . o Q o o o ! ~ n z A A w n ^ p p ^ n l l l l n ^ / ( ) n l l l l _ ) x ` . ", -" V ' ] [ { } } } } } { | ...X.o.O.O.O.+.@.#.#.$.X.%.%.%.%.X.$.&. .$.X.%.%.%.%.*...=.o ", -" . - -.: + : : ;.: + + : 4 :.>.,.<.1.2.3.4.R 5.2 6.7.7.7.7.6.2 8.9.0.6.7.7.7.7.q.2 8.7 . ", -" . d o Q 9 O O w. o e.( r.t.y.u.y.y.i.p.4 p a.r s.s.s.s.r m s k a.r s.s.s.s.r a.y 9 . ", -" . d . f d.f.g.h.O . -.s j.y.k.l.l.l.y.z.x.E A < a a a a < z 6 x z c.a a a a < z c 9 . ", -" . d v : S v.b.n.m.M.N.f :.y.l.y.y.y.y.k.y.B.V.t 3 a a a a 3 A c x z 3 a a a a 3 z c 9 . ", -" . d v : b C.Z.A.S.D.F.w.G.y.k.y.y.y.y.k.y.H.R t 3 a a a a 3 A c x z 3 a a a a 3 z c 9 . ", -" . d v : b v.J.K.L.P.: ` l y.l.y.y.y.y.k.y.p.R t 3 a a a a 3 A c x z 3 a a a a 3 z c 9 . ", -" . d v V I I.U.# V.8 V Y.T.k.y.u.y.y.y.k.y.l R t 3 a a a a 3 A c x z 3 a a a a 3 z c 9 . ", -" . d . . - O H . V E R.y.u.l.k.l.y.E.s i W.< 3 3 3 3 < W.E y l < 3 3 3 3 < l P 9 . ", -" . 8 o o o . o o . o o v ! A Q.l.y.u.y.!.~., k ^.s././././.s.) y ( ^.s././././.s.^.x ` . ", -" V ' (.[ } } } } } } } | .)._.R 7.`.'.o.X.].&.).*.*.*.*.*.*.).[.#.).*.*.*.*.*.{.}.|.o ", -" . - . X+ + + + + + + ;.4 3..XXXoXOX+X.X@XR R #X4..X.X.X.X4.$XU 5 #X4..X.X.X.X4.#XU 7 . ", -" . d o o o o o o o q t e s.n n n r L x x L %Xs.s.s.s.e a.s k L r s.s.s.s.e L y 9 . ", -" . d . . k l < a a a a c.z s s z c.a a a a < z 6 x z 3 a a a a < z c 9 . ", -" . d v &X C Z l 3 a a a a 3 z s s z 3 a a a a 3 A c x z 3 a a a a 3 z c 9 . ", -" . d v &X C J l 3 a a a a 3 z , s z 3 a a a a 3 A c x z 3 a a a a 3 z c 9 . ", -" . d v &X C J l 3 a a a a 3 z s s z 3 a a a a 3 A c x z 3 a a a a 3 z c 9 . ", -" . d v &X C Z l 3 a a a a 3 z s s z 3 a a a a 3 A c x z 3 a a a a 3 z c 9 . ", -" . d . . . k n *X3 3 3 3 =Xl i i l =X3 3 3 3 *Xl E y l < 3 3 3 3 *Xl E 9 . ", -" . d O -XO O O O O O O o x.) l z z z z l L.k k L.l z z z z l L.x q ;Xl z z z z /.;Xp ` . ", -" . :X} >X,X,X,X,X,X,Xg T 7Xf f 9 8X9 9 9 9 7 9X# # 9X7 9 9 9 9 7 9X@ > 9X7 9 f f 9 7 w.+ 0Xo ", -" o o o o o o o -X I e.= . . . . . . o % % o . . . . . . o f.$ o . . - w.V . qXV o ", -" . d O $ $ O O % * o e.O wXeX7 . o 7XV o ", -" . - O $ $ O O % * o o . rXtXD.+ o 7XV o ", -" . - O $ $ O O % * O V I yXuXiX: o 7XV o ", -" . - O $ $ O O % * o . 7 pX2.} o 7XV o ", -" . - O $ $ O O % * o o # 0.S.aX- . 7XV o ", -" . :X . . o $ $ o . . o f.$ o . D.sX:XV o 7XV o ", -" . - Y.-XO O O O O o dX(.(.dXo O O O O o dX(.7Xf -XO . V O f > V o ", -" . :XfXgXg g g g g hX,Xd.d.,XhXg g g g hX,Xd.d.,XhXg g g g g hXg . ", -" + : : : : : : : : : : : : : : : : : : : : : : : : : : : : + ", -" o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o ", -" ", -" " +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0X0X0X0X0X0X0X0XqXqX0X0X0X0X0X0X0X0XqXqX0X0X0X0X0X0X0X0XqXqXqXqXqX", +"qXqXqXqXwXwXwXwXwXwXwXwXwXwXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXqXqXqXqX", +"qXqXqXeX8X5X6X6X6X6X6X6X6X6X3X2X2X2X2X2X2X2X2X3X3X2X2X2X2X2X2X2X2X3X3X2X2X2X2X2X2X2X2X4XqXqXqXqX", +"qXqX0XpX9X7X8X7X6X6X8X8X8X7Xl.>.4.3.3.3.3.4.:.v.v.:.4.3.3.3.3.4.:.b.x.:.4.3.3.3.3.4.:.b.tX0XqXqX", +"qXqX0XiXwXqXqXtXdXaXqXwXwXqXd.#.-.=.=.=.=.-.@.k.k.@.-.=.=.=.=.-.+.l.h.@.-.=.=.=.=.;.@.l.yX0XqXqX", +"qXqX0XiXqX0XeX,XR.'.tX0XqX0Xg.%.>.;.;.;.;.>.$.l.l.$.>.;.;.;.;.>.$.x.j.$.>.;.;.;.;.>.$.z.yX0XqXqX", +"qXqX0XiXqX7XjXe.j n f.gX8X0Xf.%.:.;.;.;.;.:.$.l.l.$.:.;.;.;.;.:.#.z.j.$.:.;.;.;.;.:.$.z.yX0XqXqX", +"qXqX0XiXqX8XjXw.G U n.fX9X0Xf.%.:.;.;.;.;.:.$.l.l.$.:.;.;.;.;.:.#.z.j.$.:.;.;.;.;.:.$.z.yX0XqXqX", +"qXqX0XiXqX7XjXq.l n s.fX9X0Xf.%.:.;.;.;.;.:.$.l.l.$.:.;.;.;.;.:.#.z.j.$.:.;.;.;.;.:.$.z.yX0XqXqX", +"qXqX0XiXqX9XsXS.Z.oX>.uX0X0Xf.%.:.;.;.;.;.:.$.l.l.$.:.;.;.;.;.:.#.z.j.$.:.;.;.;.;.:.$.z.yX0XqXqX", +"qXqX0XiXqX0X9XiXiXtXfX9XqX0Xg.&.>.:.:.:.:.>.%.l.l.%.>.:.:.:.:.>.%.x.k.%.>.:.:.:.:.,.%.x.yX0XqXqX", +"qXqX0XiXwXwXeXqX0XqX0XwXwXwXa.o.&.#.#.#.#.&.X.h.h.X.&.%.%.%.%.&.X.j.f.X.&.%.%.%.%.&.X.j.uX0XqXqX", +"qXqX9XpX4X>X,X,X,X,X,X,X,X>XT.C.S.K.L.L.L.F.V.R.R.C.S.S.S.S.S.S.C.E.T.C.S.S.S.S.S.D.C.W.eXqXqXqX", +"qXqX0XpX9X7X8X7X6X8X6X7X8X7Xc.6.q._ M v U 2.8.n.M.3.0.9.9.9.9.0.3.N.n.4.0.9.9.9.9.0.3.N.tX0XqXqX", +"qXqX0XiXwXwXqXyXuXwXpXwXwX0Xf...9 . $ Y c.h.O.=.*.*.*.*.=.O.l.g.O.=.*.*.*.*.=.O.k.yX0XqXqX", +"qXqX0XiXqX0XrX*X+X7X[.0XqX9Xl.t o X X X + p.x.#.>.;.;.;.;.>.$.x.j.$.>.;.;.;.;.>.$.z.yX0XqXqX", +"qXqX0XiXqX7XlX6.{ 5Xu 7XwXeX6. X o } m.@.:.;.;.;.;.:.#.z.j.$.:.;.;.;.;.:.$.z.yX0XqXqX", +"qXqX0XiXqX8XhXp.0 U i 9X0XuX+. o o J n.@.:.;.;.;.;.:.#.z.j.$.:.;.;.;.;.:.$.z.yX0XqXqX", +"qXqX0XiXqX7XkX7.Y (.e 6XqXyX%. X o U n.@.:.;.;.;.;.:.#.z.j.$.:.;.;.;.;.:.$.z.yX0XqXqX", +"qXqX0XiXqX9XsXJ.n.qX2.9XqXwXr.o . o %.n.@.:.;.;.;.;.:.#.z.j.$.:.;.;.;.;.:.$.z.yX0XqXqX", +"qXqX0XiXqX0X9XiXaXqXgXqXqX9Xx.m . X o X 3 l.z.$.>.:.:.:.:.>.$.x.k.%.>.:.:.:.:.>.%.x.yX0XqXqX", +"qXqX0XiXwXwXwXqX0XwX9XwXwXqXa.#.m X . w [ k.g.o.*.%.%.%.%.*.X.k.f.o.*.%.%.%.%.*.o.j.yX0XqXqX", +"qXqX9XpX4X:X,X,X,X,X,X,X,X>XT.Z.L.n.9.5.g.J.S.R.E.Z.D.D.D.D.D.D.Z.E.R.Z.D.D.D.D.D.D.Z.Q.eXqXqXqX", +"qXqX0XpX9X7X8X8X8X8X8X8X8X7Xc.3.7.0.r.r.q.7.1.m.m.2.8.7.7.7.7.8.2.M.b.2.8.7.7.7.7.8.2.M.tX0XqXqX", +"qXqX0XiXwXqXwXwXwXwXwXqXwXqXd.@.-.*.&.&.&.=.+.j.j.+.=.*.*.*.*.=.O.l.g.+.=.*.*.*.*.-.+.k.yX0XqXqX", +"qXqX0XiXqX0XqXqXqXqXqXqXqX0Xg.%.>.;.;.;.;.>.$.l.l.$.>.;.;.;.;.>.$.x.j.$.:.;.;.;.;.>.$.z.yX0XqXqX", +"qXqX0XiXqXqXqXqXqXqXqXqXqX0Xf.%.:.;.;.;.;.:.$.l.l.$.:.;.;.;.;.:.#.z.j.$.:.;.;.;.;.:.$.z.yX0XqXqX", +"qXqX0XiXqXqXqXqXqXqXqXqXqX0Xf.%.:.;.;.;.;.:.$.l.l.$.:.;.;.;.;.:.#.z.j.$.:.;.;.;.;.:.$.z.yX0XqXqX", +"qXqX0XiXqXqXqXqXqXqXqXqXqX0Xf.%.:.;.;.;.;.:.$.l.l.$.:.;.;.;.;.:.#.z.j.$.:.;.;.;.;.:.$.z.yX0XqXqX", +"qXqX0XiXqXqXqXqXqXqXqXqXqX0Xf.%.:.;.;.;.;.:.$.l.l.$.:.;.;.;.;.:.#.z.j.$.:.;.;.;.;.:.$.z.yX0XqXqX", +"qXqX0XiXqX0XqXqXqXqXqX0XqX0Xg.&.,.:.:.:.:.,.%.z.z.%.>.:.:.:.:.,.%.x.k.%.>.:.:.:.:.,.%.x.yX0XqXqX", +"qXqX0XiXeXeXeXeXeXeXeXeXeXwXp.X.%.$.$.$.$.%...g.g...%.$.$.$.$.%...j.d...%.$.$.$.$.%...h.uX0XqXqX", +"qXqX0XpX>X&X*X*X*X*X*X*X*X=X^.P.U.U.U.U.U.U.P././.P.U.U.U.U.U.U.P./.^.P.U.U.U.U.U.Y.P.).wXqXqXqX", +"qXqXqXqX7X6X6X6X6X6X6X6X5XrXrXyXyXyXyXyXyXtXiX6X6XiXtXyXyXyXyXtXiX5X6XiXtXyXrXrXyXtXuX8X8XwXqXqX", +"qXqXqXqXwXwXwXwXwXwXwXeXqXaX0X0X0X0X0X0X0X0XwX2X2XwX0X0X0X0X0X0XwX2X3XwX0XqXsXiX9X0XqX5X9XwXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqX0XiXqXqXqXqXqXqXqXqXeX3X3XeXqXqXqXqXqXqXeX2X3XwXqX9XU.`.eX0XwX5X9XwXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqX0XpXqXqXqXqXqXqXqXqXeX3X3XeXqXqXqXqXqXqXeX2X3XwXwX7XY D aX9XwX5X9XwXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqX0XpXqXqXqXqXqXqXqXqXeX3X3XeXqXqXqXqXqXqXeX2X3XeX8XjX(.Y kX8XwX5X9XwXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqX0XpXqXqXqXqXqXqXqXqXeX3X3XeXqXqXqXqXqXqXeX2X3XwX0XyX0.g &XeXqX5X9XwXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqX0XpXqXqXqXqXqXqXqXqXeX3X3XeXqXqXqXqXqXqXeX2X3XwXeX2X1. .F.pX0X5X9XwXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqX0XpXqX0XqXqXqXqXqX0XwX3X3XwX0XqXqXqXqX0XwX2X3XwX0XwXhXlXpX9XwX5X9XwXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqX0XpXwXeXeXeXeXeXeXwXtX4X4XtXwXeXeXeXeXwXtX4X5XrXeXeX0X9XqXeXrX6X9XwXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqX0XiX:X%X*X*X*X*X*X*X*X$X$X*X*X*X*X*X*X*X*X$X$X*X*X*X*X*X*X*X*X*X0XqXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqX8X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X8XqXqXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXqXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX" }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/blackbox.sav sgt-puzzles-20160429.b31155b/icons/blackbox.sav --- sgt-puzzles-20140928.r10274/icons/blackbox.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/blackbox.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,27 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :9:Black Box +PARAMS :8:w8h8m5M5 +CPARAMS :8:w8h8m5M5 +SEED :15:999785320716678 +DESC :24:c8b9f8528193756b9a2fd24d +UI :2:E0 +NSTATES :2:18 +STATEPOS:2:13 +MOVE :2:F2 +MOVE :2:F4 +MOVE :2:F5 +MOVE :3:F25 +MOVE :3:F26 +MOVE :3:F11 +MOVE :3:F12 +MOVE :3:F15 +MOVE :4:T7,7 +MOVE :4:T7,4 +MOVE :4:T1,7 +MOVE :2:F3 +MOVE :2:F9 +MOVE :3:F27 +MOVE :4:T5,7 +MOVE :4:T1,8 +MOVE :1:R Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/blackbox-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/blackbox-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/bridges-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/bridges-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/bridges-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/bridges-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/bridges-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/bridges-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/bridges-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/bridges-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/bridges-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/bridges-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/bridges-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/bridges-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/bridges-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/bridges-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/bridges-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/bridges-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/bridges-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/bridges-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/bridges-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/bridges-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/bridges-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/bridges-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/bridges-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/bridges-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/bridges.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/bridges.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/bridges-icon.c sgt-puzzles-20160429.b31155b/icons/bridges-icon.c --- sgt-puzzles-20140928.r10274/icons/bridges-icon.c 2014-09-29 00:33:39.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/bridges-icon.c 2016-04-29 00:31:42.000000000 +0000 @@ -1,419 +1,886 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 143 2 ", -" c #D5D3CE", -". c #D6D4CF", -"X c #CDCCC7", -"o c #BDBBB6", -"O c #D2D0CB", -"+ c #CAC8C3", -"@ c #CDCBC6", -"# c #D9D7D2", -"$ c #D4D2CD", -"% c #CECCC7", -"& c #7E7D7A", -"* c #C6C4BF", -"= c #83827F", -"- c #C5C4BF", -"; c #858481", -": c #D3D1CC", -"> c #DBD9D4", -", c #DAD8D4", -"< c #A0A09F", -"1 c #ABAAA6", -"2 c #B5B5B4", -"3 c #B8B7B5", -"4 c #BFBEBD", -"5 c #A6A6A5", -"6 c #B3B1AC", -"7 c #DEDCD6", -"8 c #C4C3BE", -"9 c #BFBDB9", -"0 c #DCDAD5", -"q c #999894", -"w c #C3C1BD", -"e c #878683", -"r c #BCBBB6", -"t c #CECDC8", -"y c #848380", -"u c #CBC9C4", -"i c #D7D5D0", -"p c #DEDBD6", -"a c #9A9995", -"s c #747370", -"d c #7B7A77", -"f c #8B8986", -"g c #E1DFDA", -"h c #92908D", -"j c #E2E0DA", -"k c #7F7E7B", -"l c #7C7B78", -"z c #B9B7B3", -"x c #C2C0BC", -"c c #B7B5B1", -"v c #DFDDD8", -"b c #C1BFBA", -"n c #B4B3AE", -"m c #B7B6B1", -"M c #888784", -"N c #9C9B97", -"B c #E8E6E0", -"V c #ACABA7", -"C c #BCBAB6", -"Z c #E4E2DD", -"A c #AFAEAA", -"S c #E0DED9", -"D c #BAB9B4", -"F c #BAB8B4", -"G c #A09F9B", -"H c #918F8C", -"J c #BAB9B5", -"K c #9E9E9D", -"L c #E0DEDA", -"P c #ABA9A5", -"I c #DAD8D3", -"U c #E4E1DC", -"Y c #93928E", -"T c #82817E", -"R c #898884", -"E c #706F6C", -"W c #9B9A96", -"Q c #AAA9A5", -"! c #B7B6B2", -"~ c #DEDCD7", -"^ c #D3D2CD", -"/ c #C5C3BE", -"( c #C3C2BD", -") c #CAC8C4", -"_ c #A1A09C", -"` c #A6A4A0", -"' c #989693", -"] c #9B9996", -"[ c #91908D", -"{ c #A7A5A1", -"} c #B3B1AD", -"| c #B5B3AF", -" . c #767673", -".. c #6C6B69", -"X. c #6E6E6B", -"o. c #6D6C69", -"O. c #767572", -"+. c #545452", -"@. c #EFEFEE", -"#. c #C0C0C0", -"$. c #9A9996", -"%. c #B2B1B0", -"&. c #B8B8B6", -"*. c #DDDBD6", -"=. c #C1C0BB", -"-. c #C9C7C3", -";. c #9A9895", -":. c #E4E2DC", -">. c #E5E3DE", -",. c #E5E3DD", -"<. c #A3A29E", -"1. c #91908C", -"2. c #A6A4A1", -"3. c #949390", -"4. c #92918E", -"5. c #8F8E8B", -"6. c #757471", -"7. c #83817E", -"8. c #84827F", -"9. c #8E8D89", -"0. c #6E6D6A", -"q. c #ACABA9", -"w. c #C0BFBC", -"e. c #A5A4A3", -"r. c #9F9E9B", -"t. c #C5C3BF", -"y. c #959490", -"u. c #93928F", -"i. c #908F8C", -"p. c #989793", -"a. c #9D9C99", -"s. c #D5D4CF", -"d. c #C5C4C0", -"f. c #BEBCB7", -"g. c #E1DED9", -"h. c #E1DFD9", -"j. c #E0DED8", -"k. c #E6E4DE", -"l. c #92918D", -"z. c #9C9A97", -"x. c #BAB8B3", -"c. c #BEBCB8", -"v. c gray100", +"16 16 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" O , < 1 2 3 4 5 6 ", -" $ 7 8 9 0 # q w e r t y u ", -". i : p a s d f g h j 1 k l z 0 ", -"x c v b k n m M n N : B V C Z O ", -"9 A S D y F G H J K L 7 P m 0 $ ", -" 0 I U Y T R ; G E W U Q ! ~ ^ ", -"$ / w ( ) _ ` ' ] F [ { } | 7 $ ", -"X ...X.o.O.O.+.@.; #.$.%.&.*.: ", -"$ ( =.x x 9 -.h q : ;.` ' a j $ ", -". :.>.,.>.,.>.>.<.1.2.M 3.4.5.*.", -"x 6.; 7.= = = 8.9.1.0.q.w.e.r.c ", -"t.e y.Y Y Y u.Y i.p.6.a.s.d.4.f.", -". g.h.g.h.h.h.h.g.j.k.5.l.i.z.~ ", -" O O O O O O O O O O *.x.c.~ $ " +"qXqXqXqXqXqXqXwX3X+X8X.<.,.8.8.) CX7.=XS.'. XpX9X", +"0X*X%X&X&X#X,XM.A.1XA.R.Z.D.gX0X", +"wXjXkXkXkXkXkXkXU.M.R.j.C.B.b.pX", +"&X7.f.s.s.s.s.d.v.m.<.(.$XT.P.|.", +"-Xh.V.N.N.N.N.N.n.A.7.L.>XoXV.+X", +"wXdXfXfXfXfXfXfXfXdXlXb.N.m.F.aX", +"qX8X8X8X8X8X8X8X8X8X8XpX.X@XaX0X" }; /* XPM */ static const char *const xpm_icon_1[] = { /* columns rows colors chars-per-pixel */ -"32 32 75 1 ", -" c #1E1E1E", -". c #21201F", -"X c #252524", -"o c #2D2C2B", -"O c #30302F", -"+ c #343433", -"@ c #393837", -"# c #3C3C3A", -"$ c #403F3F", -"% c #41413F", -"& c #444342", -"* c #494947", -"= c #4B4A48", -"- c #504F4D", -"; c #51514F", -": c #555452", -"> c #5A5957", -", c #5F5E5B", -"< c #605F5C", -"1 c #62615F", -"2 c #636363", -"3 c #686765", -"4 c #6A6966", -"5 c #6D6C6A", -"6 c #706F6C", -"7 c #73726F", -"8 c #757471", -"9 c #7B7A77", -"0 c #7E7D7A", -"q c #807F7C", -"w c #81807D", -"e c #838381", -"r c #898784", -"t c #8A8985", -"y c #8C8B88", -"u c #918F8C", -"i c #93928F", -"p c #969491", -"a c #989793", -"s c #9C9B97", -"d c #9F9E9A", -"f c #A09F9B", -"g c #A2A19D", -"h c #A5A4A3", -"j c #A8A7A3", -"k c #ADABA7", -"l c #AEACA9", -"z c #B1B0AB", -"x c #B6B5B0", -"c c #B9B7B3", -"v c #BBB9B5", -"b c #BFBEB9", -"n c #C1BFBA", -"m c #C4C3BE", -"M c #C7C5C1", -"N c #C9C7C3", -"B c #CCCAC6", -"V c #CFCDC9", -"C c #D0CEC9", -"Z c #D5D3CE", -"A c #D6D5D0", -"S c #D9D7D2", -"D c #DCDAD4", -"F c #DEDDD8", -"G c #E1DFDA", -"H c #E4E2DD", -"J c #E3E3E2", -"K c #EEECE6", -"L c #EDECEA", -"P c #F0EEE8", -"I c #F5F3EE", -"U c #F5F4F1", -"Y c #F8F6F0", -"T c #FCFAF5", -"R c #FFFFFD", +"32 32 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"RL+NA", -"SZZZZZZZZZZZZZZZBYq0R02RTejRT@bD", -"ZZSZZZZZZZZSSZZZCYqqTj+RlXiRN+AZ", -"ZZZZZZZZZSHmnGGZCYqwYD=5RTRU+qHZ", -"ZZZZZZZZDc*oO+aGBYwqYZC&#y0X6FZZ", -"ZSSZZZZDc qZZd.rDIqqYBSDx+>MGZZZ", -"SmxSZZZH%qI69IxXmTqqYBZBR2hICZZZ", -"Dc8GZZSm+BSf4DH*yRqqYCSBYHyo=&ouHBT1hPCZZA", -"ZAKPKKKPKTHkgZRuXZRRZXyDU2gKCAZZ", -"ZZgdddgddsdzlggoZJ51JZoCT1gPCZAZ", -"AV988888888779:%RTj@mR&fR1gKCZZZ", -"AV988888888870:%RHZ5zR&gR,gKCZAZ", -"AZgddddddddgddjoCL9iRBoBR2jPVZZZ", -"ZZKPPKPPPPPKPKTiXSRRZXuKZ%7DFZZZ", -"ZZBmNBBNBNNBNNMDyX@@XtJ>o5,XrGZZ", -"AZKTYYIYIYYIYITIRUBBIR,-TIRGXiGZ", -"Zm7wqqq000w0w0q090ttw7+RM<;Um+DZ", -"Sn*ityytytytyyttyyyta;1RTh&FR+bD", -"Sm@1,,<<,,,,<<<<,,,,3+:RCv,ZT+MS", -"SmlmbbnbbbbmbbbbbbbbnvoFKrvRi&HC", -"ZZHHHHHHHHHHHHHHJHHHGPyXNRTp.vDC", -"ZZZZCZZCVZZCZCZZZCZZCCGp++O&vFZA", -"ZZZZZZZZZZZAZZZZZZZZZZZGDbMGDCAZ", -"ZZZZZZZZAZZZZZAZZZZZAZACZDDCZZZZ" +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXuXuXuXuXqX9XtXiXqXwXpXwX9XqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXwX#X@X@X$X0XpX>XXX9X3X|.9XyX0XqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX9XXXE E XsXG.g %XUXKXv.l >XtX0X", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX5XPXp.i.IX2Xk >XkX3.Y.UXy.( jX8X", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXwX4XDXi.t.UXm.^ UXjX;Xl bXNXn .fX8X0XyX%Xv 6XsXK.G 0XkX^ d.UXt.i.FX4XwX4XPX@.I.NX6XqXqXqX", +"uX#XJ.pX9XqX0XiXN P.cX#.N !.iXg `.IXp.s.FX2XwX4XPX@.I.NX6XqXqXqX", +"qX0XqXwXqXqX9XgXA.r |.bXNXqXF X.bXNX-.;.CXpX0X4XPX@.I.NX6XqXqXqX", +"qXqX7X6X6X6X6X4XiXf.r H Y u [ lXv.j Y P j v.gX1XPX@.I.NX6XqXqXqX", +"qXeXmXBXNXNXNXNXmXLXlX/.T.8XUXN.a 8XIXUX0Xs b.uXJX@.I.NX6XqXqXqX", +"wX8XI.J.K.K.K.K.K.G.I./.(.Y.U.z 5XZX9._ ZX5Xz 3XIX@.I.NX6XqXqXqX", +"eX5Xe.5.7.7.7.7.7.7.6.5.3.e._ H UXUX}.z pXUXK I.UX+.I.NX6XqXqXqX", +"eX5Xe.5.7.7.7.7.7.7.7.7.6.r._ G UXbXQ.g *XUXJ I.UXo.P.MX6XqXqXqX", +"wX8XI.J.K.K.K.K.K.K.K.K.K.J.R.z 6XbXt.M.UX1Xz 1XUX$.Y.VX4XqXqXqX", +"qXeXMXBXBXBXBXBXBXBXBXBXBXmXLXB.a wXUXUX0Xa n.nX8XG 5.aXsX9XqXqX", +"qXqX2X,X,X,X,X,X,X,X,X,X,X,X:XyXj.i C C i k.zX{ z <.| p k.gX9XqX", +"wX9XnXKXGXGXGXGXGXGXGXGXGXGXHXDXUXSX2X2XAXUX../ HXBXUXaXd C.fX8X", +"tX-X5.p.y.u.u.u.u.u.u.u.u.u.u.u.r.u.k.k.a.5.n JXiX-.Y UX@XN iX0X", +"uX@XT N.z.x.x.x.x.x.x.x.x.x.x.x.x.x.z.k.A.( @.UXUXG.A DXKXN $XuX", +"yX%XN @.X.o.o.o.o.o.o.o.o.o.o.o.o.o.o.X.=.n ' UXwXc.g hXDXn ;XtX", +"tX>X/.*X@X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X$X+Xk uXkXv.@XUXN.P hX8X", +"qXwXhXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXgXVXl.p ,XUXKXC.r oXiX9X", +"qXqX8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X6XfXC.v b c J XXaX9XqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX9XfXpX$X;XhXiX9XqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX8X0XuXtX8X9XqXqXqX" }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 83 1 ", -" c #030303", -". c #0B0B0B", -"X c #131212", -"o c #1E1E1D", -"O c #201F1F", -"+ c #20201F", -"@ c #222221", -"# c #282726", -"$ c #282827", -"% c #2B2B2A", -"& c #30302F", -"* c #343433", -"= c #383736", -"- c #393837", -"; c #3C3B3A", -": c #403F3D", -"> c #41413F", -", c #434241", -"< c #494847", -"1 c #4D4D4B", -"2 c #51514F", -"3 c #555453", -"4 c #585755", -"5 c #5A5957", -"6 c #5E5D5B", -"7 c #605F5D", -"8 c #61605E", -"9 c #646462", -"0 c #696866", -"q c #6F6E6C", -"w c #706F6C", -"e c #73726F", -"r c #737371", -"t c #787774", -"y c #7A7976", -"u c #7D7C7A", -"i c #807F7C", -"p c #83817E", -"a c #858481", -"s c #898784", -"d c #8A8986", -"f c #8E8D89", -"g c #908F8C", -"h c #93918E", -"j c #979592", -"k c #989794", -"l c #9B9A96", -"z c #9E9D99", -"x c #A19F9B", -"c c #A2A19D", -"v c #A6A5A1", -"b c #ABAAA5", -"n c #AEADA8", -"m c #B0AFAA", -"M c #B2B1AD", -"N c #B6B5B1", -"B c #B8B7B3", -"V c #BBB9B5", -"C c #BCBCB9", -"Z c #C0BFBA", -"A c #C4C2BD", -"S c #C6C5C1", -"D c #C8C7C2", -"F c #CCCAC5", -"G c #CFCDC8", -"H c #D1CFCA", -"J c #D5D3CE", -"K c #D7D5D0", -"L c #D9D7D2", -"P c #DCDAD5", -"I c #DFDDD8", -"U c #E1DED9", -"Y c #E4E2DD", -"T c #E6E6E3", -"R c #E8E5E0", -"E c #EBE9E4", -"W c #EDECE9", -"Q c #F0EEE9", -"! c #F3F1EC", -"~ c #F6F5F0", -"^ c #F9F7F1", -"/ c #FCFAF4", -"( c #FFFFFE", +"48 48 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"7(HJJJJJJJ", -"JHYdtYHJJJHY3*IKDt+pDUc.VJ(w*(JJKJJH(,7(GJKJJJJK", -"JJUcMPJJJJJUc nYB394AE>&ID(q*(HJJJJH(,7(GJJJJJJJ", -"JJJJJJJJJKJJP;+FRQR!Eu cIK(e=(IJJJJH(,7(HJJJJKJJ", -"JJJJJJJJJJJJKF$.yBAc, iYIx3X +XqXkXt.< 6X6XUX1.n UX9XqXqXqXqX7XUXH X.UX5XqXqXqXqXqXqXqX", +"qX8XlXf.$.xX7XqXqXqX8XlXA R kX5XdX{.4 OXrXtXXXO /.rXUX1.n UX9XqXqXqXqX7XUXJ O.UX5XqXqXqXqXqXqXqX", +"qX8XlXd. .cX7XqXqXqX8XlXb _ xX5XgX|.5 4XiXeX-Xo E.tXUX1.n UX9XqXqXqXqX7XUXJ O.UX5XqXqXqXqXqXqXqX", +"qX8XkXk.0.kX8XqXqXqX8XkX` n sXqX-XX.% <.,XfXI.% OXqXUX1.n UX9XqXqXqXqX7XUXJ O.UX5XqXqXqXqXqXqXqX", +"qX9XsXI.`.pX0XqXqXqX9XdXP.. `.zX`.] &.{ $XnXI c dX.qXUXlX, 6.jX4XUXJ O.UX5XqXqXqXqXqXqXqX", +"qX9XdXP.r l h h h h h h h h h h g f f g g b , ^ UXUXXX`.A H UXUXw.t yX7XUXJ O.UX5XqXqXqXqXqXqXqX", +"qX0XyXOXi.g.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.x.+ n.UXKXIXV.y c.UXUX&XO -XwXUXJ O.UX5XqXqXqXqXqXqXqX", +"qXqXwX7X:X>X>X>X>X>X>X>X>X>X>X>X>X>X>X>X>X7X1 M.UXKXPX,X! A UXUX:XX =XwXUXJ O.UX5XqXqXqXqXqXqXqX", +"qX8XgXV. # O O O O O O O O O O O O O O o $ $.UXUXp.r.M P UXUXc.7 0X8XUXJ o.UX5XqXqXqXqXqXqXqX", +"qXwX9XfXUXLXLXLXLXLXLXLXLXLXLXLXLXLXLXLXHXUXT.# iXUX-Xl.Y.BXUXHXi O.jX1XUXJ O.UX2XqXqXqXqXqXqXqX", +"qXqX0XrXdXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXhXN h cXUXIXIXUXKX) 4 :XyXdXUXH X.UXaXwX9XqXqXqXqXqX", +"qXqXqX0X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X7XrX _.jX6X<.d o + k q.rXyX9XqXqXqXqX", +"qXqXqX0X9X0X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X0X7XrXqX4.0 X . 2 | ;XhXoX0 < w.XX}.1.& g ,XtX0XqXqXqX", +"qXqX0XtXaXuXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXyXiXnXfX2X1XuXnXgXqXy F CXUXIXIXUXzXh n tXqXqXqXqX", +"qX0XiX`.fXUXIXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXLXUXd.4 NXUXB.Z _ 4XUXaX* h.hX8XqXqX", +"qX8XgXV.o ; * * * * * * * * * * * * * * * * * * * * * & & * & < d.UXLX=X0Xg %.UXUX+.m dX9XqXqX", +"qX8XlXg.! V M.aXeX9XqXqXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XqXhXfXtXtXgXgX0X0XqXqXqXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX8X9XqXqX9X8XqXqXqXqXqXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX" }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/bridges.sav sgt-puzzles-20160429.b31155b/icons/bridges.sav --- sgt-puzzles-20140928.r10274/icons/bridges.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/bridges.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,72 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :7:Bridges +PARAMS :15:10x10i30e10m2d2 +CPARAMS :15:10x10i30e10m2d2 +SEED :15:944199396008454 +DESC :49:a1a4a4b4k4b6b2a4b2b2b1e2e1a4b4c3j25d2a1f2c3a4d4c3 +AUXINFO :838:bd75eb5f7b129109b5cdcff0925c77ca5c0a135365002b93b44c5013c7a307b9504affcfb8ad934263196fc3e6d0b023abe48d254d46d29520e50a5e423c0fb1bc01ccc51cad61045c439e7c2bb8e5788bc7f3622aaa3a8125ebde11c9cd69b6f2393246fd094ad91e81ae58cd557b73bd1c9839cfad5835c8519e44298204eaca58dfd79289546959bfbabdc5f3cb7a27b8d3fb2d0b062bd5c2e469493c19f8c89989df73d8a3ab02d9afcbfedf245306d15881a01d153122f8374c7526abecc90919f99ff62e9789cabc402249af095ceb14c8c59c0d9ffbcdd731d50114e7c30c31ef0638f4d352abbfd04b4315d368d65bbfe005b6586245bc5244e5050098cf4c1b6986120f40d5ce038c10a3f309286f950cdc287e495aa13c70ab0c1f113a135556d7ce895fd8244afcbad43fe51f275837f223a1cb95151de8a158cb0add7fa8c9f1fa0e09a1ce842136c1679144cead56b164c4ef1a09ed36fd9704ba191b5957bc3d5bb97d8a1f7451d357a6638ac320b0beb0cd35aa404c8f1621c6d400960aa97bf6ce3a944339d7e401c4d98c31773b2a8881352d5653fdb5e8f7c04b +NSTATES :2:63 +STATEPOS:2:41 +MOVE :10:L8,0,5,0,1 +MOVE :10:L8,0,5,0,2 +MOVE :10:L8,0,8,2,1 +MOVE :10:L8,0,8,2,2 +MOVE :4:M8,0 +MOVE :10:L0,2,3,2,1 +MOVE :10:L0,2,3,2,2 +MOVE :10:L0,2,0,7,1 +MOVE :10:L0,2,0,7,2 +MOVE :4:M0,2 +MOVE :10:L1,0,3,0,1 +MOVE :4:M1,0 +MOVE :10:L3,0,5,0,1 +MOVE :10:L3,0,3,2,1 +MOVE :10:L1,3,1,5,1 +MOVE :10:L0,7,5,7,1 +MOVE :10:L0,7,0,9,1 +MOVE :10:L0,9,5,9,1 +MOVE :10:L0,9,5,9,2 +MOVE :10:L0,9,0,7,2 +MOVE :4:M0,9 +MOVE :4:M0,7 +MOVE :10:L4,8,8,8,1 +MOVE :10:L4,8,8,8,2 +MOVE :4:M4,8 +MOVE :10:L5,9,9,9,1 +MOVE :10:L5,9,9,9,2 +MOVE :4:M5,9 +MOVE :10:L9,9,9,6,1 +MOVE :4:M9,9 +MOVE :10:L8,8,8,5,1 +MOVE :4:M8,8 +MOVE :10:L9,6,9,4,1 +MOVE :4:M9,6 +MOVE :4:M9,4 +MOVE :10:L1,5,4,5,1 +MOVE :10:L1,5,4,5,2 +MOVE :10:L1,5,1,3,2 +MOVE :4:M1,3 +MOVE :4:M1,5 +MOVE :10:L3,4,3,2,1 +MOVE :10:L3,4,3,2,2 +MOVE :4:M3,4 +MOVE :10:L4,5,8,5,1 +MOVE :10:L7,7,5,7,1 +MOVE :4:M5,7 +MOVE :4:M7,7 +MOVE :10:L7,3,4,3,1 +MOVE :4:M7,3 +MOVE :10:L5,0,3,0,2 +MOVE :4:M5,0 +MOVE :4:M3,0 +MOVE :10:L3,2,6,2,1 +MOVE :4:M3,2 +MOVE :10:L6,2,8,2,1 +MOVE :4:M6,2 +MOVE :10:L8,2,8,5,1 +MOVE :4:M8,2 +MOVE :4:M8,5 +MOVE :10:L4,5,4,3,1 +MOVE :4:M4,3 +MOVE :4:M4,5 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/bridges-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/bridges-web.png differ diff -Nru sgt-puzzles-20140928.r10274/icons/cicon.pl sgt-puzzles-20160429.b31155b/icons/cicon.pl --- sgt-puzzles-20140928.r10274/icons/cicon.pl 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/cicon.pl 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,27 @@ +#!/usr/bin/perl + +# Given a list of input PNGs, create a C source file file +# containing a const array of XPMs, under the name `xpm_icon'. + +$k = 0; +@xpms = (); +foreach $f (@ARGV) { + # XPM format is generated directly by ImageMagick, so that's easy + # enough. We just have to adjust the declaration line so that it + # has the right name, linkage and storage class. + @lines = (); + open XPM, "convert $f xpm:- |"; + push @lines, $_ while ; + close XPM; + die "XPM from $f in unexpected format\n" unless $lines[1] =~ /^static.*\{$/; + $lines[1] = "static const char *const xpm_icon_$k"."[] = {\n"; + $k++; + push @xpms, @lines, "\n"; +} + +# Now output. +foreach $line (@xpms) { print $line; } +print "const char *const *const xpm_icons[] = {\n"; +for ($i = 0; $i < $k; $i++) { print " xpm_icon_$i,\n"; } +print "};\n"; +print "const int n_xpm_icons = $k;\n"; diff -Nru sgt-puzzles-20140928.r10274/icons/crop.sh sgt-puzzles-20160429.b31155b/icons/crop.sh --- sgt-puzzles-20140928.r10274/icons/crop.sh 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/crop.sh 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,37 @@ +#!/bin/sh + +# Crop one image into another, after first checking that the source +# image has the expected size in pixels. +# +# This is used in the Puzzles icon build scripts to construct icons +# which are zoomed in on a particular sub-area of the puzzle's +# basic screenshot. This way I can define crop areas in pixels, +# while not having to worry too much that if I adjust the source +# puzzle so as to alter the layout the crop area might start +# hitting the wrong bit of picture. Most layout changes I can +# conveniently imagine will also alter the overall image size, so +# this script will give a build error and alert me to the fact that +# I need to fiddle with the icon makefile. + +infile="$1" +outfile="$2" +insize="$3" +crop="$4" + +# Special case: if no input size or crop parameter was specified at +# all, we just copy the input to the output file. + +if test $# -lt 3; then + cp "$infile" "$outfile" + exit 0 +fi + +# Check the input image size. +realsize=`identify -format %wx%h "$infile"` +if test "x$insize" != "x$realsize"; then + echo "crop.sh: '$infile' has wrong initial size: $realsize != $insize" >&2 + exit 1 +fi + +# And crop. +convert -crop "$crop" "$infile" "$outfile" Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/cube-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/cube-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/cube-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/cube-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/cube-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/cube-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/cube-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/cube-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/cube-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/cube-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/cube-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/cube-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/cube-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/cube-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/cube-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/cube-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/cube-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/cube-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/cube-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/cube-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/cube-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/cube-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/cube-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/cube-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/cube.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/cube.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/cube-icon.c sgt-puzzles-20160429.b31155b/icons/cube-icon.c --- sgt-puzzles-20140928.r10274/icons/cube-icon.c 2014-09-29 00:33:39.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/cube-icon.c 2016-04-29 00:31:42.000000000 +0000 @@ -1,586 +1,796 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 163 2 ", -" c #D9D7D3", -". c #C5C3CD", -"X c #C3C1CD", -"o c #C4C2CD", -"O c #C4C2CC", -"+ c #C3C2CD", -"@ c #C5C3CC", -"# c #D0CECA", -"$ c #D1CFCB", -"% c #D1CFCA", -"& c #D2D0CB", -"* c #DBD9D4", -"= c #1717E7", -"- c #0909F5", -"; c #0C0CF1", -": c #0C0CE1", -"> c #0D0CF2", -", c #0808F5", -"< c #1919E4", -"1 c #C5C3C5", -"2 c #D6D4CE", -"3 c #C4C3BE", -"4 c #D3D1CC", -"5 c #D5D3CE", -"6 c #CAC8C4", -"7 c #0C0CF2", -"8 c blue", -"9 c #0101FE", -"0 c #0000EC", -"q c #0101FF", -"w c #0F0FF0", -"e c #CFCDCF", -"r c #E2E0D9", -"t c #DDDBD6", -"y c #CECCC8", -"u c #DEDCD7", -"i c #E0DED9", -"p c #0202FE", -"a c #100FEF", -"s c #CCCBCD", -"d c #DFDDD6", -"f c #DAD8D3", -"g c #CBCAC5", -"h c #CAC8CB", -"j c #6D6CCF", -"k c #6A69DA", -"l c #7473D6", -"z c #2F2FD2", -"x c #0000EE", -"c c #0000EF", -"v c #0E0EDE", -"b c #BEBCBF", -"n c #D0CEC7", -"m c #BDBBB7", -"M c #CCCAC5", -"N c #CDCBC6", -"B c #C3C2BD", -"V c #D2D0CA", -"C c #E1DFC9", -"Z c #EAE8D5", -"A c #FCFACE", -"S c #6766D9", -"D c #CCCACE", -"F c #DFDDD7", -"G c #DCDAD6", -"H c #CFCDC8", -"J c #DFDDD8", -"K c #E1DFDA", -"L c #D2D0CC", -"P c #D2D0CF", -"I c #D9D7DB", -"U c #EAE8D4", -"Y c #5F5FDB", -"T c #D2D1CF", -"R c #E7E5D9", -"E c #C2C0BC", -"W c #D0CEC9", -"Q c #D4D2CD", -"! c #D0CFCA", -"~ c #C9C7C3", -"^ c #D0CECD", -"/ c #E0DEC7", -"( c #5B5BD0", -") c #0000F5", -"_ c #0D0DE5", -"` c #B6B4C7", -"' c #BFBDBF", -"] c #D7D5CF", -"[ c #D7D5D0", -"{ c #C9C8C3", -"} c #BBB9B5", -"| c #CBC9C4", -" . c #D1D0CF", -".. c #E2E0C9", -"X. c #5C5BD1", -"o. c #0000F7", -"O. c #0303F6", -"+. c #0000E9", -"@. c #0909EA", -"#. c #8584D1", -"$. c #E9E7D7", -"%. c #D9D7DA", -"&. c #D1CFCE", -"*. c #C9C7C4", -"=. c #DDDBDA", -"-. c #EDEBD3", -";. c #6362DB", -":. c #0707FF", -">. c #0303F3", -",. c #0505F5", -"<. c #8F8DD1", -"1. c #EBE8D1", -"2. c #E3E1C6", -"3. c #D4D2C5", -"4. c #D4D2CE", -"5. c #DAD8D7", -"6. c #EAE8D0", -"7. c #605FDA", -"8. c #0404FF", -"9. c #0000F3", -"0. c #0101F4", -"q. c #2222D9", -"w. c #3E3DDB", -"e. c #3838E4", -"r. c #3534DD", -"t. c #9C9AC1", -"y. c #DBD9CD", -"u. c #CCCAC8", -"i. c #D2D0C4", -"p. c #908FC0", -"a. c #6968D8", -"s. c #7372D9", -"d. c #6B6ACD", -"f. c #6B6ACE", -"g. c #7271DA", -"h. c #6766D5", -"j. c #5A59CB", -"k. c #6363DC", -"l. c #5E5DDF", -"z. c #7E7DBF", -"x. c #D7D5C9", -"c. c #DAD8D5", -"v. c #D4D2C4", -"b. c #EDEBD2", -"n. c #EEECD4", -"m. c #E0DEC8", -"M. c #E2E0CA", -"N. c #ECEAD1", -"B. c #DEDCC3", -"V. c #EFECD1", -"C. c #F2F0D3", -"Z. c #DDDBCB", -"A. c #D2D0CD", -"S. c #DEDCD6", -"D. c #DAD8D8", -"F. c #CBC9C8", -"G. c #DBD9D8", -"H. c #D1CFCC", -"J. c #C4C2BD", -"K. c #C8C6C2", -"L. c #CAC8C3", -"P. c #D1D0CB", -"I. c gray100", +"16 16 236 2 ", +" c #E3E3E4", +". c #CECEDC", +"X c #CCCCDC", +"o c #CDCDDC", +"O c #CDCDDB", +"+ c #CDCDDC", +"@ c #CCCCDC", +"# c #CECEDB", +"$ c #DADADA", +"% c gray86", +"& c gray86", +"* c #DADADA", +"= c gray86", +"- c #DADADA", +"; c gray86", +": c gray90", +"> c #1818E9", +", c #0909F6", +"< c #0D0DF2", +"1 c #0C0CE2", +"2 c #0D0DF3", +"3 c #0909F6", +"4 c #1A1AE6", +"5 c #CECED5", +"6 c #E0E0DE", +"7 c #DBDBDC", +"8 c #CDCDCD", +"9 c #DDDDDD", +"0 c gray87", +"q c LightGray", +"w c #DDDDDD", +"e c #CDCDDC", +"r c #0D0DF3", +"t c blue", +"y c #0101FE", +"u c #0000EC", +"i c #0101FF", +"p c #1010F1", +"a c #D9D9DF", +"s c #EDEDEA", +"d c #E7E7E7", +"f c #D7D7D7", +"g c gray91", +"h c gray92", +"j c #DDDDDD", +"k c gainsboro", +"l c #CDCDDC", +"z c #0C0CF3", +"x c #0101FE", +"c c #0000EC", +"v c #0202FE", +"b c #1010F0", +"n c #D6D6DD", +"m c #E9E9E7", +"M c #E4E4E4", +"N c #D5D5D5", +"B c gray90", +"V c #E7E7E7", +"C c #DADADA", +"Z c gainsboro", +"A c #D3D3DA", +"S c #7272D7", +"D c #6E6EE3", +"F c #7979DF", +"G c #3131D6", +"H c #0000ED", +"J c #0000EF", +"K c #0F0FE0", +"L c #C7C7CD", +"P c #D9D9D7", +"I c #D3D3D4", +"U c #C5C5C5", +"Y c #D5D5D5", +"T c gray84", +"R c gray80", +"E c gainsboro", +"W c #DCDCDB", +"Q c #EBEBDB", +"! c #F5F5E7", +"~ c #FFFFE1", +"^ c #6B6BE1", +"/ c #1010F1", +"( c #D5D5DD", +") c #E9E9E8", +"_ c #E6E6E7", +"` c #D8D8D8", +"' c #E9E9E9", +"] c #ECECEC", +"[ c gainsboro", +"{ c gray86", +"} c #DBDBDF", +"| c #E3E3EB", +" . c #F5F5E6", +".. c #6464E3", +"X. c #1010F1", +"o. c #DCDCDF", +"O. c #F1F1EB", +"+. c #DCDCDB", +"@. c #CACACB", +"#. c #DADADA", +"$. c gray85", +"%. c #D7D7D7", +"&. c gray87", +"*. c #DADADA", +"=. c #D2D2D2", +"-. c #D9D9DD", +";. c #EAEAD9", +":. c #6060D7", +">. c #0000F4", +",. c #0000F5", +"<. c #0E0EE6", +"1. c #BEBED5", +"2. c #CCCCDC", +"3. c #C8C8CE", +"4. c #E1E1E0", +"5. c #E0E0E1", +"6. c #D2D2D2", +"7. c #C3C3C3", +"8. c gray87", +"9. c #DADADA", +"0. c gray83", +"q. c #DBDBDF", +"w. c #ECECDA", +"e. c #6060D8", +"r. c #0000F6", +"t. c #0303F7", +"y. c #0000E9", +"u. c #0909EA", +"i. c #0000F5", +"p. c #8B8BDC", +"a. c #F4F4E9", +"s. c #E3E3EA", +"d. c #DADADF", +"f. c #D2D2D3", +"g. c #DDDDDD", +"h. c gray86", +"j. c gray87", +"k. c #E7E7EB", +"l. c #F8F8E6", +"z. c #6767E3", +"x. c #0808FF", +"c. c #0404F3", +"v. c #0606F5", +"b. c #9595DC", +"n. c #FFFFE2", +"m. c #F5F5E3", +"M. c #EDEDD7", +"N. c #DEDED6", +"B. c #DDDDDF", +"V. c gray86", +"C. c gray86", +"Z. c #E3E3E8", +"A. c #F5F5E2", +"S. c #6464E1", +"D. c #0404FF", +"F. c #0000F3", +"G. c #0101F4", +"H. c #2323DB", +"J. c #4040E0", +"K. c #3B3BE8", +"L. c #3737E0", +"P. c #A3A3CD", +"I. c #E5E5DE", +"U. c #DADADA", +"Y. c #CDCDCD", +"T. c #D6D6D7", +"R. c #DCDCD4", +"E. c #9797CB", +"W. c #6E6EE0", +"Q. c #7878E2", +"!. c #7070D5", +"~. c #7070D6", +"^. c #7777E3", +"/. c #6C6CDD", +"(. c #5E5ED1", +"). c #6868E4", +"_. c #6363E6", +"`. c #8484C8", +"'. c #E0E0D9", +"]. c gray86", +"[. c #E9E9E8", +"{. c #E4E4E5", +"}. c #DDDDD5", +"|. c #F7F7E4", +" X c #F9F9E7", +".X c #EBEBD9", +"XX c #ECECDB", +"oX c #F9F9E6", +"OX c #F7F7E4", +"+X c #E8E8D5", +"@X c #FAFAE4", +"#X c #FDFDE6", +"$X c #E7E7DC", +"%X c #DBDBDD", +"&X c gray86", +"*X c gray87", +"=X c gray92", +"-X c #E8E8E7", +";X c #D6D6D8", +":X c #E4E4E9", +">X c #E7E7EB", +",X c #DADADE", +" , < 1 2 $ 3 4 5 6 4 ", -"o 7 8 9 0 q 8 w e r t y u i 4 4 ", -"o 7 8 9 0 p 8 a s d f g * t % 4 ", -"h j k l z x c v b n 6 m M N B 4 ", -"V C Z A S 8 8 w D F G H J K L 4 ", -"$ P I U Y 8 8 w T R & E # W y Q ", -"! ~ ^ / ( ) ) _ ` X ' ] [ { } Q ", -"% | ...X.o.O.+.@.) #.$.%.&.*.Q ", -"$ 5 =.-.;.8 :.>.,.8 <.A 1.2.3.4.", -"% & 5.6.7.8 8.9.0.8 q.w.e.r.t.y.", -"# 3 u.i.p.a.s.d.f.g.h.j.k.l.z.x.", -"$ 4 F c.v.b.n.m.M.n.N.B.V.C.Z.A.", -"$ 5 i S.u.D.=.^ P =.5.F.G.=.H.4 ", -"& 6 4 % J.$ 4 K.L.4 ! J.P.4 ~ Q ", -"* 4 4 4 4 4 4 4 4 4 4 4 4 4 Q * " +" . X o O + @ # $ % & * = - ; : ", +". > , < 1 2 3 4 5 6 7 8 9 0 q w ", +"e r t y u i t p a s d f g h j k ", +"l z t x c v t b n m M N B V C Z ", +"A S D F G H J K L P I U Y T R E ", +"W Q ! ~ ^ t t / ( ) _ ` ' ] [ E ", +"{ } | ...t t X.o.O.+.@.#.$.%.&.", +"*.=.-.;.:.>.,.<.1.2.3.4.5.6.7.8.", +"9.0.q.w.e.r.t.y.u.i.p.a.s.d.f.g.", +"h.j.k.l.z.t x.c.v.t b.n.m.M.N.B.", +"V.C.Z.A.S.t D.F.G.t H.J.K.L.P.I.", +"U.Y.T.R.E.W.Q.!.~.^./.(.)._.`.'.", +"].9 [.{.}.|. X.XXXoXOX+X@X#X$X%X", +"&X*X=X-X;X:X>X,X c #0000EB", -", c #0D0DE8", -"< c #1212E3", -"1 c #0000F1", -"2 c #0000FE", -"3 c #5858C7", -"4 c #8382A8", -"5 c #918FBF", -"6 c #9593B2", -"7 c #A6A4A1", -"8 c #A7A6AE", -"9 c #B0AFAB", -"0 c #B3B2AD", -"q c #ABAAB3", -"w c #B5B4B1", -"e c #B8B7B2", -"r c #BCBAB5", -"t c #BFBDB9", -"y c #C1BFB7", -"u c #C1BFBA", -"i c #C4C2BE", -"p c #C9C7BA", -"a c #CAC8B8", -"s c #918FC3", -"d c #9291C3", -"f c #B6B4C1", -"g c #B9B7C2", -"h c #BDBBC3", -"j c #C7C5C1", -"k c #C8C7C2", -"l c #CCCBC6", -"z c #CECDC8", -"x c #D0CEC5", -"c c #D0CFCA", -"v c #D7D5C7", -"b c #D3D1CA", -"n c #DFDDCA", -"m c #D7D5D0", -"M c #D9D7D3", -"N c #DBD9D4", -"B c #DFDDD8", -"V c #E0DECC", -"C c #E0DED9", -"Z c #E2E0CC", -"A c #F1EFCE", -"S c #E2E0D7", -"D c #E9E7D6", -"F c #EAE8D7", -"G c #E4E2DB", -"H c #E9E7DD", -"J c #EFECDB", +"32 32 234 2 ", +" c #1313BC", +". c #595999", +"X c #0B0BCE", +"o c #0D0DCC", +"O c #0E0ECD", +"+ c #1010CB", +"@ c #0000D1", +"# c #0000D3", +"$ c #0101D3", +"% c #0000D4", +"& c #0202D7", +"* c #0F0FD1", +"= c #0D0DD2", +"- c #0E0ED2", +"; c #0101D8", +": c #0000D9", +"> c #0000DA", +", c #0000DB", +"< c #0404DF", +"1 c #1111D1", +"2 c #1616DD", +"3 c #3131CC", +"4 c #2121D0", +"5 c #3131D7", +"6 c #3131D8", +"7 c #3434DA", +"8 c #0000E4", +"9 c #0101E4", +"0 c #0000E5", +"q c #0101E5", +"w c #0000E6", +"e c #0D0DE3", +"r c #0F0FE2", +"t c #0F0FE3", +"y c #0D0DE4", +"u c #0000E9", +"i c #0101E9", +"p c #0202E9", +"a c #0000EA", +"s c #0101EA", +"d c #0000EB", +"f c #0101EB", +"g c #0202EA", +"h c #0000EC", +"j c #0000EE", +"k c #0101EE", +"l c #0000EF", +"z c #0101EF", +"x c #0C0CE9", +"c c #0D0DE9", +"v c #1212E1", +"b c #1010E3", +"n c #1212E2", +"m c #1414E3", +"M c #1616E3", +"N c #1010E4", +"B c #1212E6", +"V c #1313E6", +"C c #1212E7", +"Z c #1515E4", +"A c #1616E4", +"S c #1515E7", +"D c #0000F0", +"F c #0000F1", +"G c #0000F5", +"H c #0000F8", +"J c #0000F9", +"K c #0303FB", +"L c #0000FD", +"P c #0101FD", +"I c #0303FC", +"U c #0202FD", +"Y c #0303FD", +"T c #0000FE", +"R c #0101FE", +"E c blue", +"W c #0101FF", +"Q c #0202FF", +"! c #5D5DCC", +"~ c #8989B1", +"^ c #9C9CBD", +"/ c #ACACAC", +"( c #AFAFBA", +") c #AEAEBB", +"_ c #AFAFBB", +"` c #B8B8B9", +"' c #B9B9B9", +"] c gray73", +"[ c #BBBBBB", +"{ c #BCBCBC", +"} c gray74", +"| c gray", +" . c gray75", +".. c #C2C2BF", +"X. c #9797CB", +"o. c #9797CC", +"O. c #9898CF", +"+. c #9797D1", +"@. c #B3B3C0", +"#. c #B2B2C1", +"$. c #B4B4C1", +"%. c #BABAC1", +"&. c #BEBECF", +"*. c #C0C0C0", +"=. c #C1C1C0", +"-. c #C1C1C1", +";. c #C3C3C0", +":. c #C3C3C3", +">. c #C5C5C3", +",. c #C3C3C6", +"<. c gray77", +"1. c #C5C5C5", +"2. c #C6C6C4", +"3. c #C6C6C6", +"4. c gray78", +"5. c #C8C8C5", +"6. c #CACAC5", +"7. c #C9C9C6", +"8. c #C8C8C8", +"9. c gray79", +"0. c #CBCBC9", +"q. c #CBCBCB", +"w. c gray80", +"e. c #CCCCCD", +"r. c #CDCDCD", +"t. c #CDCDCE", +"y. c #CECECE", +"u. c #CECECF", +"i. c gray81", +"p. c #D3D3C8", +"a. c #D2D2CA", +"s. c #C1C1D0", +"d. c #C2C2D0", +"f. c #C2C2D1", +"g. c #C1C1D3", +"h. c #C6C6D0", +"j. c #C7C7D0", +"k. c #C6C6D1", +"l. c #C6C6D2", +"z. c #C2C2D4", +"x. c #C6C6D4", +"c. c #C6C6D5", +"v. c #D0D0D0", +"b. c gray82", +"n. c #D2D2D0", +"m. c #D2D2D2", +"M. c #D2D2D3", +"N. c LightGray", +"B. c #D5D5D2", +"V. c #D6D6D2", +"C. c #D3D3D4", +"Z. c gray83", +"A. c #D5D5D4", +"S. c #D4D4D5", +"D. c #D5D5D5", +"F. c #D6D6D4", +"G. c #D7D7D5", +"H. c gray84", +"J. c #D7D7D6", +"K. c #D7D7D7", +"L. c #D8D8D3", +"P. c #D8D8D4", +"I. c #D8D8D5", +"U. c #D9D9D5", +"Y. c #D9D9D6", +"T. c #D7D7D8", +"R. c #D7D7D9", +"E. c #D8D8D8", +"W. c #D8D8D9", +"Q. c gray85", +"!. c #DADAD9", +"~. c #DBDBD9", +"^. c #D9D9DA", +"/. c #DADADA", +"(. c #DCDCD8", +"). c #DDDDD9", +"_. c #DFDFD9", +"`. c #DEDEDA", +"'. c gainsboro", +"]. c #DDDDDD", +"[. c #DEDEDC", +"{. c #DFDFDC", +"}. c gray87", +"|. c #E1E1D7", +" X c #E9E9DB", +".X c #EBEBDD", +"XX c #ECECDC", +"oX c #ECECDD", +"OX c #E1E1E1", +"+X c #E2E2E2", +"@X c #E3E3E2", +"#X c gray89", +"$X c #E2E2E4", +"%X c #E3E3E4", +"&X c #E2E2E5", +"*X c #E3E3E5", +"=X c #E4E4E4", +"-X c #E4E4E5", +";X c gray90", +":X c #E6E6E6", +">X c #E7E7E7", +",X c #E1E1E8", +">>>>+#>>>;1@rlkkkzwrlklklwcB", -"Sh>22222;>2222222222;>22222:zBMNMSikSNMMBhzB", -"Gj>22222;>22222:zBMBMGizCMBNGjzB", -"Sh;22222;>22222:kBMMMBikBMMMBizB", -"Hh>22222;>22222;;;>Xekjjjk9ekiiik0zC", -"Cirzkkkbq#>>>>1@tzklkcwrzkzkbwzC", -"GkzGGBBHh>22222:zGBBBGkcGBCBGizB", -"BjkBMNMSg>22222:lBNNNBjkBNMMGizB", -"CjkGNNMGg>22222:zCNNBHkcGBGSGizB", -"GjkBNNMGg>22222:kBMBkt9wittwMjzB", -"BjzGBBBHh>22222%vGGHikmbbbm00izB", -"Cjwkjjjk8+>;;;>Xqgfg8MBBBNBib7zB", -"Cjezkllbq#1>>>>+#1>1*ZNNNNCrBjkB", -"CjzHCCBHh>22222;>222=ZNBNNBrMjzC", -"CkkCNNMSg>22222;>222=nMMMMBrMjzB", -"CjkCNNMGg>22222;>222-AHFFHJpMjzB", -"CjkBMNMGg>22222;>222&6ssddd4nklB", -"GkzHCCCHh>22222;>2221+1222223pzB", -"Bj0kiiil8O<<<:.K.C.C.C.K.} K.3X", +"tXl.g E E E E E q g E E E E E n E.uX7X9X3XtXM.E.tX3X3X3XtXM.E.3X", +"rXl.g E P E P E q g E E E E E n K.3X%X:X%X3Xt.K.3X:X:X#X9Xe.R.3X", +"rXl.g E E E P E q g E E E E E t Y.3X:X:X:X9Xt.K.3X%X:X:XtXt.E.3X", +"tXl.p E P P P E 8 g E P E P E n K.3X:X:X:X9Xt.K.3X:X:X:X3Xt.E.3X", +"rXl.q E E E E E q g E E E P E N (.tX3XtX3XxXM.E.xX3XtX3XxXM.E.9X", +"tXl.= x y y y x X # g q q q g X :.C.i.t.t.B.] :.C.i.t.t.M.} K.3X", +"tXi.:.E.C.C.M.(.$.: j g g g j = >.E.C.K.C.E.} <.K.K.K.M.Y.} E.3X", +"9XM.K.tX3XrX3XjXl.g E E E E E N E.tX3X3X3XuXM.E.tX3X3X3XjXt.E.3X", +"9Xi.C.9X%X:X%XrX&.g E E E E E t K.3X:X:X:X3Xq.K. c #0909D8", -", c #0808DA", -"< c #0808D9", -"1 c #0808DF", -"2 c #0808C1", -"3 c #0808BE", -"4 c #0808E0", -"5 c #0808D8", -"6 c #0707E0", -"7 c #0A0ABF", -"8 c #A4A3A1", -"9 c #C3C1BC", -"0 c #BCBAB6", -"q c #BDBBB7", -"w c #C2C0BC", -"e c #A5A3A0", -"r c #A8A6A2", -"t c #A5A4A0", -"y c blue", -"u c #0101FD", -"i c #0000FE", -"p c #0000E1", -"a c #0000DD", -"s c #0101FE", -"d c #0202DE", -"f c #C4C2C0", -"g c #EAE8E1", -"h c #E3E0DB", -"j c #E9E7E2", -"k c #C7C6C1", -"l c #E9E7E1", -"z c #C2C1BC", -"x c #0101FC", -"c c #0101FF", -"v c #0101DF", -"b c #0101DC", -"n c #0303DD", -"m c #BDBBB9", -"M c #D9D7D3", -"N c #BEBCB8", -"B c #C1BFBB", -"V c #BEBCBA", -"C c #E3E1DB", -"Z c #DAD8D4", -"A c #BFBDB8", -"S c #0000FD", -"D c #0000DF", -"F c #0000DC", -"G c #0000FC", -"H c #0202DD", -"J c #BDBBBA", -"K c #C3C1BF", -"L c #E0DEDA", -"P c #E9E6E1", -"I c #C4C2BD", -"U c #C7C5C1", -"Y c #E8E6E1", -"T c #0000E7", -"R c #0000E0", -"E c #0000C6", -"W c #0000C3", -"Q c #0202C4", -"! c #A7A6A4", -"~ c #C8C6C1", -"^ c #C0BFBB", -"/ c #A8A6A3", -"( c #ABA9A5", -") c #A19FA1", -"_ c #BFBDBF", -"` c #B9B7B8", -"' c #BAB8B9", -"] c #B8B7B9", -"[ c #BFBDBE", -"{ c #A4A2A3", -"} c #0404BF", -"| c #0000E4", -" . c #0000E3", -".. c #0202C1", -"X. c #A5A3A2", -"o. c #C5C3BE", -"O. c #BDBBB8", -"+. c #C4C2BC", -"@. c #EBE9E1", -"#. c #E3E1DA", -"$. c #E4E2DB", -"%. c #C9C7C1", -"&. c #0505DC", -"*. c #0505DB", -"=. c #C2C0BB", -"-. c #D9D7D2", -";. c #BEBCB7", -":. c #E1DED9", -">. c #DEDCD7", -",. c #C4C3BE", -"<. c #E3E1DC", -"1. c #E4E2DC", -"2. c #D1CFCB", -"3. c #B6B4B0", -"4. c #BFBDB9", -"5. c #A3A19E", -"6. c #B9B7B3", -"7. c #B9B8B3", -"8. c #BAB8B4", -"9. c #D5D3CE", -"0. c #E6E4DF", -"q. c #E2DFDB", -"w. c #B5B3B0", -"e. c #B5B4B0", -"r. c #CCCAC5", -"t. c #C8C6C2", -"y. c #C8C7C2", -"u. c #C6C4C0", -"i. c #CECCC8", -"p. c #989693", -"a. c #C0BFBA", -"s. c #C4C2BF", -"d. c #E2E0D9", -"f. c #EAE8E2", -"g. c #CECCC7", -"h. c #E6E4DE", -"j. c #E0DED9", -"k. c #E0DDD8", -"l. c #E7E5E0", -"z. c #BEBDB8", -"x. c #C0BEB9", -"c. c #B1B0AC", -"v. c #C6C4BF", -"b. c #A6A5A1", -"n. c #C0BEBA", -"m. c #AAA8A4", -"M. c #0404C0", -"N. c #0000E5", -"B. c #0101DD", -"V. c #0202C2", -"C. c #A4A3A3", -"Z. c #C3C1C0", -"A. c #A2A09E", -"S. c #CAC8C3", -"D. c #E0DED8", -"F. c #B5B3AF", -"G. c #CFCDC8", -"H. c #8E8D8A", -"J. c #0000DE", -"K. c #0202E5", -"L. c #1615B9", -"P. c #D2D1C2", -"I. c #DFDDDA", -"U. c #B7B5B1", -"Y. c #BBB9B5", -"T. c #1414D2", -"R. c #D3D1C1", -"E. c #0202FC", -"W. c #1414D0", -"Q. c #C9C8C3", -"!. c #E7E5DF", -"~. c #BCBBB6", -"^. c #1414D1", -"/. c #D0CEC0", -"(. c #DCDAD9", -"). c #D9D7D4", -"_. c #D8D6D2", -"`. c #C9C7C3", -"'. c #1515D3", -"]. c #DEDCC7", -"[. c #EAE8DF", -"{. c #E7E5DA", -"}. c #E8E6DB", -"|. c #E6E4D9", -" X c #EFEDE1", -".X c #C0BFB6", -"XX c #C8C7C5", -"oX c #0F0FCD", -"OX c #9D9CA1", -"+X c #A6A5BE", -"@X c #A4A2B4", -"#X c #A4A3B6", -"$X c #A3A2B5", -"%X c #A9A7BC", -"&X c #898897", -"*X c #CECCBE", -"=X c #E8E6E3", -"-X c #C1BFBA", -";X c #0101F5", -":X c #0000AE", -">X c #0000EF", -",X c #0000E8", -" c #0202C4", +", c #0000C6", +"< c #0808C1", +"1 c #0000CE", +"2 c #1010CE", +"3 c #0505D2", +"4 c #0000D7", +"5 c #0505DA", +"6 c #0505DB", +"7 c #0606DB", +"8 c #0000DC", +"9 c #0101DC", +"0 c #0000DD", +"q c #0101DD", +"w c #0202DD", +"e c #0303DD", +"r c #0000DE", +"t c #0000DF", +"y c #0101DF", +"u c #0202DE", +"i c #0202DF", +"p c #0505DC", +"a c #0505DD", +"s c #0808D9", +"d c #0909D9", +"f c #0808DA", +"g c #1515D2", +"h c #1515D3", +"j c #1616D5", +"k c #0000E0", +"l c #0000E1", +"z c #0000E3", +"x c #0505E1", +"c c #0606E0", +"v c #0707E0", +"b c #0404E3", +"n c #0505E3", +"m c #0000E5", +"M c #0202E5", +"N c #0000E6", +"B c #0000E7", +"V c #0808E0", +"C c #0808E1", +"Z c #0000E8", +"A c #0000E9", +"S c #0202EA", +"D c #0000EE", +"F c #0000F4", +"G c #0101F4", +"H c #0000F8", +"J c #0101F8", +"K c #0000FC", +"L c #0101FC", +"P c #0000FD", +"I c #0101FD", +"U c #0202FC", +"Y c #0000FE", +"T c #0101FE", +"R c blue", +"E c #0101FF", +"W c #0202FF", +"Q c #939393", +"! c gray61", +"~ c #8F8FA1", +"^ c #A4A4AD", +"/ c #A9A9AB", +"( c #AAAAAA", +") c #A8A8AD", +"_ c #ACACAC", +"` c gray68", +"' c #ACACAE", +"] c #AEAEAE", +"[ c #AFAFAF", +"{ c #B0B0AF", +"} c #A7A7B1", +"| c #ABABB0", +" . c #ACACB0", +".. c #AFAFB1", +"X. c gray69", +"o. c #B1B1B1", +"O. c #B3B3B1", +"+. c #B2B2B2", +"@. c #B7B7B7", +"#. c gray74", +"$. c #BDBDBE", +"%. c gray", +"&. c gray75", +"*. c #CACABE", +"=. c #ABABC1", +"-. c #ABABC2", +";. c #ACACC3", +":. c #AEAECB", +">. c #B0B0C9", +",. c #C1C1C1", +"<. c gray76", +"1. c #C3C3C3", +"2. c #C1C1C7", +"3. c gray77", +"4. c #C4C4C5", +"5. c #C5C5C5", +"6. c #C6C6C6", +"7. c #C7C7C6", +"8. c gray78", +"9. c #C9C9C5", +"0. c #C2C2C8", +"q. c #C5C5C8", +"w. c #C6C6C8", +"e. c #C7C7C9", +"r. c #C7C7CD", +"t. c #C8C8C8", +"y. c gray79", +"u. c #CACAC8", +"i. c #CACAC9", +"p. c #C9C9CA", +"a. c #C8C8CB", +"s. c #CACACA", +"d. c #CBCBCA", +"f. c #CBCBCB", +"g. c #CCCCCB", +"h. c #CDCDCB", +"j. c #CFCFCB", +"k. c #C8C8CD", +"l. c gray80", +"z. c #CDCDCD", +"x. c #CFCFCC", +"c. c #CECECD", +"v. c #CCCCCE", +"b. c #CCCCCF", +"n. c #CDCDCF", +"m. c #CECECE", +"M. c #CFCFCE", +"N. c gray81", +"B. c #D0D0CE", +"V. c #D5D5CD", +"C. c #D8D8CE", +"Z. c #D0D0D0", +"A. c #D1D1D0", +"S. c gray82", +"D. c #D2D2D0", +"F. c #D1D1D3", +"G. c #D2D2D2", +"H. c LightGray", +"J. c #D2D2D4", +"K. c #D5D5D5", +"L. c #D7D7D7", +"P. c #D9D9D0", +"I. c #DCDCD1", +"U. c #DCDCD3", +"Y. c #D8D8D8", +"T. c #DADADA", +"R. c #DFDFDF", +"E. c #E8E8D9", +"W. c #E2E2E3", +"Q. c gray89", +"!. c #E2E2E4", +"~. c #E3E3E4", +"^. c #E3E3E5", +"/. c #E4E4E4", +"(. c #E4E4E5", +"). c gray90", +"_. c #E6E6E6", +"`. c #E7E7E7", +"'. c #E6E6EA", +"]. c gray91", +"[. c #E9E9EB", +"{. c #EAEAEA", +"}. c gray92", +"|. c #ECECEB", +" X c #EDEDEB", +".X c #EAEAEC", +"XX c #EBEBEC", +"oX c #ECECEC", +"OX c #EDEDEC", +"+X c gray93", +"@X c #EEEEED", +"#X c #EEEEEE", +"$X c #F6F6E0", +"%X c #F1F1EB", +"&X c #F1F1EC", +"*X c #F2F2EC", +"=X c gray94", +"-X c #F1F1F1", +";X c #F3F3F2", +":X c #F3F3F3", +">X c #F5F5F1", +",X c #F4F4F3", +" , , , , < 1 2 3 4 5 , , , , 5 6 7 8 9 0 q q q q 0 w e r w 0 q q q q 0 w t - X . ", -" . o % , y u y y y y i y p a y i y y y y s y d f g X h h h h X j & k l X h h h h X j z * + . ", -" . o % > y x u u u u x c v b c x u u u u x y n m O M . . . . @ X N B X @ . . . . @ X 0 = + . ", -" . o % , y u y y y y i y p a y i y y y y i y d V C Z . + A w + . . h q = + . ", -" . o % , y u y y y y i y p a y i y y y y i y d V C Z . + A w + . . h q = + . ", -" . o % , y u y y y y i y p a y i y y y y i y d V C Z . + A w + . . h q = + . ", -" . o % , y u y y y y i y p a y i y y y y i y d V C Z . + A w + . . h q = + . ", -" . o % < y x i i i i S y D F y G i i i i G y H J O M . . . . @ X N B X @ . . . . @ X 0 = + . ", -" . o % , y u y y y y i y p a y i y y y y s y d K l L + + + + X P I U Y X + + + + X l w * + . ", -" . o % 2 T v p p p p R T E W T D p p p p D T Q ! ~ ^ w w w w B k / ( U B w w w w B U r & O . ", -" . O & ) _ ` ' ' ' ' ] [ { } | b a a a a F ...X.o.O.A A A A N & t / I N A A A A N & e & O . ", -" . + * +.@.#.$.$.$.$.O g %.&.y s y y y y s y d f g X + + + + X j & k P X + + + + X j z * + . ", -" . + = 0 X M Z Z Z Z M L B *.y x i i i i G y H m O M . . . . @ X N B X @ . . . . @ X 0 = + . ", -" . + = q h . . + =.&.y s y y y y i y d V C Z . + A w + . . h q = + . ", -" . + = q h . . + =.&.y s y y y y i y d V C Z -.X ;.B :.@ . . . Z @ C q = + . ", -" . + = q h . . + =.&.y s y y y y i y d V C Z >.+ j ,.~ l O <.<.C 1. + q = + . ", -" . + = q h . . + =.&.y s y y y y i y d V C Z >.2.3.4.5.t N 6.7.7.8.3.9.0.0 I + . ", -" . + = 0 X @ . . . . M X B *.y x i i i i G y H J X M Z M q.w.e.r.t.y.U k k u.i.5.p.X a.z + . ", -" . + * w j X + + + + X P ~ &.y s y y y y s y d s.g X C d.f.;.g.h.j.X X X X k.l.z.x.c.3.v.X . ", -" . O & b.v.4.n.n.n.n.4.v.m.M.N.B.D D D D a N.V.C.s.J V m Z.A.S.D.. . . . . @ + F.G. H.& + . ", -" . O & b.v.4.n.n.n.n.4.v.m.M.N.B.D D D D J.N.W V.K.H d n N.L.P.I.. . C U.t.f.Y.=.+ . ", -" . + * w j X + + + + X P ~ &.y s y y y y i y D D y i y u y T.R.I.. . C U.S.0.q & O . ", -" . + = 0 X @ . . . . M X B *.y x i i i i G y J.a c G i E.y W.R.I.. . C U.Q.!.~.= + . ", -" . + = q h . . + =.&.y s y y y y i y D D y i y u y T.R.I.. . C U.Q.!.~.= + . ", -" . + = q h . . + =.&.y s y y y y i y D D y i y u y ^./.(.M ).).).)._.L w.`.!.~.= + . ", -" . + = q h . . + =.&.y s y y y y i y D D y i y u y '.].[.{.}.}.}.}.|. X.XXX0.q = + . ", -" . + = q h . . + =.&.y s y y y y i y D D y i y u y oXOX+X@X#X#X#X#X$X%X&X*X=XY.I + . ", -" . + = 0 X @ . . . . M X -X*.y x s s s s x c B.B.c x s u c ;X:XR >X,X > Z i i l i l i B - .x.f.f.f.f.f.f.D.{ o.N.f.f.f.f.f.f.D.' x.oX~._.", +"_._.}.x.) r.2.0.2.q.0.2.k. .o l 8 i i 8 i 8 l - .x.5.f.5.f.5.5.k.' o.x.5.5.f.q.9.5.x.) k.oX_._.", +"_._.}.f.j.1X|.oXoXoXoXoX.D.1X1.f.|._._.", +"_./.XXj.k..~ V.1X2.f.}._._.", +"_.~.XXx.5.}.Q.Q._._.~.Q.}.f.5 R U U R R R U R 8 8 R U R U R G X i G Z Z Z Z Z Z B % $Xf.f.}._._.", +"_._.}.f.j.1X}.oXoXoXoXoX1XD.p R R R R R R R R i i R R R R R R U 1 F R R R R R R R G & *.x.oX_._.", +"_._.XXx.' x.5.5.q.f.5.5.x.o.O l 5 5 5 p p 5 n ; ; c 5 p 5 p 5 c 3 . 5 p 5 5 p p 5 V 4 B.XX_._.", +"_._.XXx.' B.f.f.j.f.f.f.D.o.o.D.f.f.f.j.j.f.B.o.o.D.f.f.f.f.f.f.J. .O.D.f.f.f.f.f.f.D.} j.oX_._.", +"_._.oXk.f.-X}.}.XXXXoX}.1XN.x. c gray11", -", c #52514F", -"< c #6B6A68", -"1 c #1B1B1A", -"2 c #282827", -"3 c #222121", -"4 c #262524", -"5 c #252424", -"6 c #393837", -"7 c #D4D2CD", -"8 c #E6E4DF", -"9 c #2D2C2B", -"0 c #313132", -"q c gray13", -"w c black", -"e c gray7", -"r c DimGray", -"t c #343332", -"y c #3B3A38", -"u c #4C4C4C", -"i c gray26", -"p c gray2", -"a c #434444", -"s c gray8", -"d c #CCCAC5", -"f c #353433", -"g c #111212", -"h c #171818", -"j c gray3", -"k c #1A1A1B", -"l c #343433", -"z c #484746", -"x c #0C0D0D", -"c c gray10", -"v c #090909", -"b c #333332", -"n c #222222", -"m c #CDCBC7", -"M c #DFDDD8", -"N c #BEBCB8", -"B c #A5A4A0", -"V c #A9A7A3", -"C c #A9A7A4", -"Z c #A8A7A3", -"A c #A4A29E", -"S c #BAB8B4", -"D c #C4C3BE", -"F c #ABAAA6", -"G c #A4A29F", -"H c #656462", -"J c #474644", -"K c #767572", -"L c #DCDAD5", -"P c #C2C1BC", -"I c #D2D0CB", -"U c #ECE9E4", -"Y c #E3E1DC", -"T c #BBBAB5", -"R c #E1DFDA", -"E c #E7E5E0", -"W c #C4C2BE", -"Q c #CBC9C5", -"! c gray4", -"~ c gray20", -"^ c #161615", -"/ c #CCCAC6", -"( c #91908D", -") c #B0AEAA", -"_ c #C9C7C2", -"` c #747371", -"' c #D3D1CC", -"] c #E5E3DE", -"[ c #A1A09C", -"{ c #A3A19E", -"} c #C1BFBB", -"| c gray6", -" . c #6D6D6E", -".. c #1D1D1C", -"X. c #C9C7C3", -"o. c #BCBBB6", -"O. c gray1", -"+. c #131312", -"@. c #040404", -"#. c #131212", -"$. c #D1CFCA", -"%. c #7D7C79", -"&. c #A09E9B", -"*. c #A2A09D", -"=. c #C3C1BD", -"-. c #151514", -";. c gray43", -":. c #CAC8C4", -">. c #E9E7E2", -",. c #C1C0BB", -"<. c #E4E2DD", -"1. c #D5D3CE", -"2. c #ADACA8", -"3. c #D9D7D3", -"4. c #E2E0DB", -"5. c #BCBAB6", -"6. c #C5C3BE", -"7. c #C2C0BC", -"8. c #252525", -"9. c #191919", -"0. c #CBC9C4", -"q. c #CECCC8", -"w. c #CFCCC8", -"e. c #D0CECA", -"r. c #D0CEC9", -"t. c #CFCDC8", -"y. c #9B9A96", -"u. c #8A8885", -"i. c #9E9D99", -"p. c #CDCBC6", -"a. c #0E0E0E", -"s. c #151515", -"d. c #E8E6E1", -"f. c #B6B4B0", -"g. c #C7C6C1", -"h. c #D3D2CD", -"j. c #080707", -"k. c #5B5B5C", -"l. c #323233", -"z. c #8A8985", -"x. c #6D6C6A", -"c. c #E8E6E0", -"v. c #9D9C98", -"b. c #ACAAA6", -"n. c #E6E4DE", -"m. c #D6D4D0", -"M. c #8E8D8A", -"N. c #D4D2CE", -"B. c #323231", -"V. c #20201F", -"C. c #A6A4A0", -"Z. c #E7E5DF", -"A. c #D5D4CF", -"S. c #E0DDD8", -"D. c gray100", +"16 16 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , < 1 2 3 4 5 6 7 ", -"8 9 0 q w e r t y u i w p a s d ", -"8 f g h w j k l z x c w v b n m ", -"M N B V C Z A S D A F G H J K L ", -"O 8 P I U Y T R E W Q d ! ~ ^ / ", -"O @ ( ) & _ ` ' ] [ { } | ...X.", -"L L L L L . @ O L # & o.O.w +./ ", -"L L L L o # L + Y o.@.w #./ ", -"O M ( ) ] $.%.7 E &.*.=.-.;.1 :.", -"L >.,.I <.1.2.3.4.5.6.7.p 8.9.0.", -"+ 2.Z V q.w.+ e.r.' 1.t.y.u.i.L ", -"p.a.s.v ( d.f.o M D g.R 8 h.>.L ", -"q.j.k.l.z.L x.1.c.v.b.n.m.M.N. ", -"t.B.; V.C.Z.A.o . r.X L q.o ", -"L o # o M L . L O S.. L L @ L " +"zXxXfXhXjXkXgXxXvXgXhXjXjXfXzXxX", +"NX..y d p i q ' 2.8 g u d s Z pX", +"VXk G h 3 7.n A [ ~ + ] 4 0X", +"BXN 2 7 % w m E , e & B i wX", +"cX;X(.`.`._.~.*X3X!.'.^.;.Y e.lX", +"jXVX%XqXGXmX$XnXCX5XeXqX& V 7 qX", +"kXnXi.W.CX4X,.sXVXI.T.1X> s.t 8X", +"lXlXzXzXlXxXvXkXlXgXNX-Xo 2 qX", +"lXlXzXzXlXjXkXzXlXhXNX-XO 1 qX", +"jXnXi.Q.CXuXi.sXCXR.W.5X- 9.r 8X", +"lXSX$XqXBXpX/.jXmX@X,X2Xo f 0 0X", +"gX{.'.'.eXrXjXtXtXaXdXeXI.n.T.lX", +"wX: 5 $ A.CXoXjXvX1X c #62615F", -", c #646362", -"< c #686765", -"1 c #696865", -"2 c #6D6C6A", -"3 c #72716F", -"4 c #747473", -"5 c #787774", -"6 c #7A7976", -"7 c #7C7C7A", -"8 c #807F7C", -"9 c #82817E", -"0 c #858482", -"q c #888784", -"w c #8B8986", -"e c #8D8D8C", -"r c #94928F", -"t c #949392", -"y c #9B9A96", -"u c #9D9C9A", -"i c #A3A19E", -"p c #A4A3A0", -"a c #A9A7A4", -"s c #AAA8A4", -"d c #ABABAA", -"f c #B6B4B0", -"g c #B8B6B2", -"h c #BDBCB7", -"j c #BFBEB9", -"k c #C1BFBB", -"l c #C3C1BD", -"z c #C7C5C1", -"x c #C9C7C3", -"c c #CDCBC6", -"v c #CECCC8", -"b c #D1CFCA", -"n c #D4D2CD", -"m c #D7D5D1", -"M c #D9D7D2", -"N c #DCDAD5", -"B c #DFDDD8", -"V c #E0DED9", -"C c #E4E2DD", -"Z c #E7E5E0", -"A c #E9E6E1", -"S c #ECEAE4", +"32 32 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" . . #y . XvB", -"MS> Xto . 47 &y .u: 4- XcB", -"MS> ,O +d0 $u +y6. @; XvV", -"MS, Xe= X=3 $y .:: <0 XvB", -"MS1 %i XbB", -"NBz667666667875fN0577667wwww0dVM", -"NNVSSSSSSSSSSSSCNSSSSSSC2-;;=0BN", -"NNNmNbNMMmMMNmmNNNMbMmCp XvV", -"NNNCl,yCMNNA96AMNBn,9CNNBb24NZs Xp; .vB", -"NNMAri9BNNNBe;VNNNBu=nZs X75 .bB", -"NNNCk>uCNNBl60BNNBv98mZs .:0..bB", -"BNMnNnNMMBVVbVVBNBBbBBAs XbB", -"NBSSSSSSCncvbccbMccbccbn>&&&%4BM", -"Bn866774knlllllxnlllkllVAAAASANN", -"Bc. =SBBAZVBNVCCABBNMMBBmMNN", -"BvX ,- *AnSywAMNBv6yCMNMZ0pZMNN", -"BvX Od< *AVl=6CNNNVd6ZMBMZaySMNB", -"VvX +ew *AVh1:MNNBv#yCMNNZ0,BNNN", -"Bv. &SMVZMBBNNMzxBNBNNzzMBNN", -"Bb#+@@@+rCMNMNNNNNBVVNNNNNVVNNNN", -"NNCCCZZZCNNNNNNNNNNMNNNNNBNNNNNN", -"NBNMMMMMNNNBNNNNNBNNNNNNNNNNNNNB" +"lXlXjXjXjXjXjXjXjXjXjXjXjXjXjXjXkXhXjXjXjXjXjXjXjXjXjXjXjXhXlXlX", +"lXkXmXBXMXNXMXMXMXMXMXMXNXNXNXNXvXVXMXNXNXMXMXMXMXMXNXNXMXVXzXlX", +"jXNX~.c n z n m m m n m n n h v.0XS n n z m m m m m x n l %.xXlX", +"gXFX&. @ & O @ L P. X O % & O ; eXvX", +"gXDX=. < /.d O o + j.i. R U. : T.$. O o O f.>. 2 eXvX", +"gXFX&. j.V X X v ;XV. U Y. l @XZ.= . o Q q. < eXvX", +"gXFX*. 4 F.| @ + . < O.4. U I. % ,.<.O O O + 3.c.o : eXvX", +"gXDX,. O o R Q. X . 1 yXcX", +"kXvX6Xa.u.a.p.i.i.i.i.p.s.s.e.#XkXx.y.s.a.i.u.a.b.v.n.M.k.{.bXkX", +"lXkXvXFXDXGXDXFXFXFXFXFXDXFXGXmXzXDXFXJXFXDXHXmX6.} O. .[ h.cXlX", +"lXlXkXfXxXpXlXhXgXgXgXgXlXdXgXjXlXhXgXwXjXdXmX(. X . : eXvX", +"lXlXjXMX%X_ M.NXjXlXhXFXe.i.FXhXlXzXjX9.2.bXBX`. X j.5. , eXvX", +"lXlXhXFXl.7.-.xXkXjXNX@XM &.BXjXlXjXNXA.Y cXVX'. 8 OXF.1 % rXvX", +"lXlXkXnX1X .J.NXjXkXvX8Xu.7.nXkXkXcXyX9.t.zXVX`. . <.h.# * rXvX", +"lXlXlXkXbXbXmXlXlXlXkXbXAXNXzXlXlXlXlXhXMXjXVX`. . X O ; eXvX", +"lXlXlXlXkXkXkXlXlXlXlXkXhXjXlXlXlXlXlXzXjXhXCX`. X X o ; eXvX", +"lXlXlXlXkXkXkXlXlXlXlXlXlXjXlXlXlXlXlXzXjXhXCX`. X . . ; eXvX", +"lXlXlXkXbXbXmXlXlXlXlXlXjXmXlXlXlXlXlXhXmXjXVX`. X + ; eXvX", +"lXlXkXnX1X..J.NXjXkXcXiX1.x.BXjXlXzXgXe.t.vXBX`. o K.%. : eXvX", +"lXlXhXFXl.7.-.xXkXlXkXBXa.[ ZXjXlXjXBXA.Y vXVX`. + 9.J.@ = rXvX", +"lXlXjXMX%X_ M.NXjXkXvX8X-.r.MXjXkXxXyX6.<.lXBX`. & O.F.% ; rXvX", +"lXlXhXfXxXpXlXhXjXxXvXzXiXNXvXxXzXvXcXiXmXcXAX`. . o X : rXvX", +"lXzXDXFXDXGXDXFXmXaXqXeXyXwXqXuXfXqXeXyXwXqXuXiX#.T E ! U r.cXkX", +"xXsXg.y.i.a.a.t.,XdX h -X3. / ZXcX3XF <.ZXhXlXkXnX~.#.mXkXlXjXAXH.f.HXgXlXlX", +"vXeX1 m W.l. / ZXvX=X| X.mXkXkXxXaXZ j.nXkXlXjXBXe.] cXlXlXlX", +"vXeX; . . + Q SXfXmXmXfXxXlXlXzXgX7X5XkXlXlXlXlX7X4XhXzXlXlX", +"cXuXG c N M m l D.BXjXkXkXzXlXlXlXlXzXnXbXlXlXlXlXlXbXnXzXlXlXlX", +"lXzXMXMXMXNXMXNXNXkXlXlXlXkXlXlXlXlXlXkXkXlXlXlXlXlXkXkXlXlXlXlX", +"lXlXjXjXjXjXjXjXjXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlX" }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 72 1 ", -" c #010101", -". c #0A0A0A", -"X c #10100F", -"o c #131313", -"O c #1B1B1B", -"+ c #201F1F", -"@ c #20201F", -"# c #232322", -"$ c #2B2B2A", -"% c #31302F", -"& c #343434", -"* c #3C3B3B", -"= c #41403F", -"- c #454544", -"; c #484746", -": c #494846", -"> c #4D4C4B", -", c #504F4D", -"< c #52514F", -"1 c #555553", -"2 c #595957", -"3 c #5C5C5B", -"4 c #605F5D", -"5 c #646361", -"6 c #686765", -"7 c #6A6966", -"8 c #6D6C6B", -"9 c #706F6D", -"0 c #747472", -"q c #7B7A77", -"w c #7B7A79", -"e c #82807D", -"r c #858483", -"t c #888784", -"y c #8A8986", -"u c #8D8C8A", -"i c #908E8B", -"p c #93918E", -"a c #939393", -"s c #999794", -"d c #9C9A97", -"f c #9C9B9A", -"g c #A09F9B", -"h c #A3A29E", -"j c #A5A4A2", -"k c #A9A7A3", -"l c #AAA9A5", -"z c #ACACAA", -"x c #B0AFAB", -"c c #B4B3AF", -"v c #B5B4B2", -"b c #B8B6B2", -"n c #BCBAB6", -"m c #BEBCB9", -"M c #C1BFBA", -"N c #C4C2BE", -"B c #C5C4C2", -"V c #C8C6C2", -"C c #CAC8C4", -"Z c #CDCCC9", -"A c #D1CFCA", -"S c #D4D2CD", -"D c #D7D5D0", -"F c #D9D7D2", -"G c #DCDAD5", -"H c #DFDDD8", -"J c #E1DFDA", -"K c #E3E1DC", -"L c #E7E5E1", -"P c #E8E6E1", -"I c #ECEAE4", -"U c #F6F4EF", +"48 48 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"% . <# 0m o3# . +1. #GGGG", -"GGFI4 .ft ;L2 0m fj= =B# #HGGG", -"GGFI5 . %r Of83 0n OB0w y$ #GGGG", -"GGFI4 6zX &vmm 0n oa,j oc2 #HGGG", -"GGFI5 .wy= &* 0m &y$ ;yw. #GGGG", -"GGFI4 . 0m #GGGG", -"GGGKko...X............ozG& ......... ..... 8KGGG", -"GGGGKSVCCCCCVVCVVCCVCCSJJGCCCVCZCCNSFDDDDDGPGGGG", -"GGGGFHJJHHHHJJJJJJJJJJHGGGHJHHJJHHPp-;;::;;hKGGG", -"GGGGGGGFJLFGGGGGGGFKGFGGGGGGKLGGGHZX $HGGG", -"GGGGGGGJMbKGGGGGGGJbZHGGGGGHnkAGFJC. &# #GGGG", -"GGGGGGJM>>lPFGGGFLcoiIFGGGHA6,1JGJC. 8z3 #HGGG", -"GGGGGGIqlN7IFGGGHS5qpIFGGGGKM>1KFJC. ma0 #GGGG", -"GGGGGFPiqeqIFGGFKk%-=GGGGGGSck;HFHC. f&zO #HGGG", -"GGGGGGGG85AHGGGGHFZiiKGGGGHS81jJFJC. &g1 #GGGG", -"GGGGGGGHPPHGGGGGGGKKKGGGGGGHPPKGGJC. #HGGG", -"GGGGGGGGFFGGGGGGGGGGGGGGGGGGGFGGFJC. #GGGG", -"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHC. #GGGG", -"GGGGHGGGGGGGGGGGGGGGGGGGGGGGGGGGGJC. @HGGG", -"GGGGGGGGHHGGGGGGGGJJGGGGGGGGHJGGGJC. #GGGG", -"GGGGGGGJSAJGGGGGGHCNJGGGGGGHANHGGJC. .#O #GGGG", -"GGGGGGJN<:nKGGGGJM4xKGGGGGKg*CJGGGGGG", -"GFKx .rj* iIFGKqX . X s xXlXlXlX", +"lXlXgXFX=. O & [ V o X X X X X X O ^ 9 . q.;X O : | C o X X X o z .., p zXlXlXlX", +"lXlXgXFX=. . & /./. X o ( UXR q.;X X !.(.K . X I kXA i xXlXlXlX", +"lXlXgXFX*. # W U. o . p n.~.] q.;X 6 hXn.c. X /.S i zXlXlXlX", +"lXlXgXFX=. O s.1X5 . o I |.jXU. q.;X # &Xt.:XO . . u wX2. i xXlXlXlX", +"lXlXgXFX=. . < r.l.H o . . . . . { l q.;X O z g.l X . . . o E l.0.= a zXlXlXlX", +"lXlXgXFX*. O O q.;X X X i zXlXlXlX", +"lXlXjXNX(.2 % * ; : = & & & & & & & & - = $ 3 {.jXV O * = ; = & & & & # # # % = * $ . 5.NXjXlXlX", +"lXlXlXkXmXpX7X9X9X9X9X9X9X9X9X9X9X9X9X9X9X7XaXnXcXlX7X9X9X9X9X9X9X9X8XaXfXdXfXfXfXdXjXSXlXlXlXlX", +"lXlXlXlXjXxXbXbXvXcXbXbXbXbXbXbXbXbXbXcXvXbXxXkXkXlXbXbXvXcXvXbXbXvXVXD.U W W Q Q E R !.mXjXlXlX", +"lXlXlXlXlXkXkXhXbXMXhXkXkXkXkXkXkXkXjXmXxXjXkXlXlXlXkXjXMXBXlXjXjXcXwX, . X k vXkXlXlX", +"lXlXlXlXlXlXkXMXXX7XmX,Xv.n.n.n.n.b.M.wXvXkXlXlX", +"lXkXvXwXN.C.C.V.V.C.C.m.[.mXyX;X>X>X>X>X>X>X-XrXgX;X>X>X>X>X>X>X;X7XzXbXFXDXDXDXDXDXDXcXkXlXlXlX", +"lXjXBX X . . `.ZXvXnXnXbXvXnXnXmXcXzXnXnXnXbXbXvXnXnXvXlXkXgXgXgXfXgXgXgXkXlXlXlXlX", +"lXjXBX.X + o O X o # V.SXfXkXjXxXNXlXkXkXkXlXkXkXlXcXxXNXjXkXkXlXlXlXlXcXbXxXlXlXlXlXlXlXlX", +"lXjXBX X . o D 3X0 C.SXhXjXmX5Xj `.BXjXlXlXkXxXdX;.K S.NXjXlXlXlXjXNXC.x %XMXjXlXlXlXlXlX", +"lXjXBX X X $ l.rXg V.SXgXkXbXi.t E.SXhXlXlXlXzXpXjXu.H AXjXlXlXlXkXzXuXM ~.CXjXlXlXlXlXlX", +"lXjXBX X + <.~.7X.. V.SXdXZXY.L M <.VXjXlXlXlXjXNXOXP ,XmXjXlXlXlXlXjXHXP '.AXjXlXlXlXlXlX", +"lXjXBX X o l =.tX} C.SXfXbX,XM.z 5.BXjXlXlXkXzXjXf h h.cXkXlXlXlXjXNXD.6 ) dXxXkXlXlXlXlX", +"lXjXBX.X + O . : O # V.SXhXkXbXJXgXcXxXlXlXlXlXlXjXrX3X4XzXlXlXlXlXlXxX0X6X4XhXzXlXlXlXlXlX", +"lXjXBX X . X T.ZXhXlXkXgXzXlXlXlXlXlXlXlXlXvXnXbXlXlXlXlXlXlXkXvXnXnXzXlXlXlXlXlXlX", +"lXkXnX3X$.=.=.*.*.=.-.@.v.zXlXlXlXlXlXkXlXlXlXlXlXlXlXlXkXkXkXlXlXlXlXlXlXlXkXkXkXlXlXlXlXlXlXlX", +"lXlXkXcXGXFXFXFXFXFXFXGXAXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlX", +"lXlXlXkXgXgXgXgXgXgXgXgXhXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlX" }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/dominosa.sav sgt-puzzles-20160429.b31155b/icons/dominosa.sav --- sgt-puzzles-20140928.r10274/icons/dominosa.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/dominosa.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,53 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :8:Dominosa +PARAMS :1:6 +CPARAMS :1:6 +DESC :56:55521461210004364611033535444421636022603153156422620503 +NSTATES :2:46 +STATEPOS:2:33 +MOVE :6:D18,19 +MOVE :6:E22,23 +MOVE :6:E22,30 +MOVE :5:E9,17 +MOVE :6:D38,46 +MOVE :6:E14,15 +MOVE :5:E6,14 +MOVE :6:E33,34 +MOVE :6:E34,42 +MOVE :6:E26,34 +MOVE :6:D34,35 +MOVE :6:E42,50 +MOVE :6:E16,24 +MOVE :4:D4,5 +MOVE :4:D6,7 +MOVE :6:D15,23 +MOVE :6:E17,25 +MOVE :6:D16,17 +MOVE :6:E11,12 +MOVE :6:D51,52 +MOVE :5:E3,11 +MOVE :6:D10,11 +MOVE :4:D2,3 +MOVE :6:E37,45 +MOVE :6:D49,50 +MOVE :6:D40,48 +MOVE :6:D25,26 +MOVE :6:D24,32 +MOVE :6:D33,41 +MOVE :6:D42,43 +MOVE :6:D27,28 +MOVE :6:E21,29 +MOVE :6:D31,39 +MOVE :6:D47,55 +MOVE :6:E13,21 +MOVE :6:E13,14 +MOVE :6:D12,13 +MOVE :6:D20,21 +MOVE :6:D14,22 +MOVE :6:D29,30 +MOVE :6:D36,37 +MOVE :6:D44,45 +MOVE :6:D53,54 +MOVE :4:D0,1 +MOVE :4:D8,9 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/dominosa-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/dominosa-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/fifteen-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/fifteen-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/fifteen-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/fifteen-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/fifteen-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/fifteen-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/fifteen-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/fifteen-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/fifteen-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/fifteen-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/fifteen-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/fifteen-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/fifteen-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/fifteen-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/fifteen-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/fifteen-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/fifteen-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/fifteen-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/fifteen-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/fifteen-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/fifteen-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/fifteen-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/fifteen-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/fifteen-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/fifteen.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/fifteen.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/fifteen-icon.c sgt-puzzles-20160429.b31155b/icons/fifteen-icon.c --- sgt-puzzles-20140928.r10274/icons/fifteen-icon.c 2014-09-29 00:33:39.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/fifteen-icon.c 2016-04-29 00:31:42.000000000 +0000 @@ -1,601 +1,886 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 77 1 ", -" c #D5D3CE", -". c #D4D2CD", -"X c #D9D7D2", -"o c #DBD9D4", -"O c #DAD8D3", -"+ c #D0CEC9", -"@ c #CCCBC6", -"# c #D7D5D0", -"$ c #E4E2DD", -"% c #DEDCD7", -"& c #DDDBD6", -"* c #DCDAD5", -"= c #E0DED8", -"- c #D6D4CF", -"; c #D1CFCA", -": c #CFCEC9", -"> c #CBCAC5", -", c #D8D6D1", -"< c #DFDDD8", -"1 c #C9C8C3", -"2 c #CFCDC8", -"3 c #CCCAC5", -"4 c #B0AEAA", -"5 c #CDCBC6", -"6 c #AAA8A4", -"7 c #CAC9C4", -"8 c #D3D1CC", -"9 c #D3D1CD", -"0 c #979592", -"q c #908E8B", -"w c #585755", -"e c #CAC8C3", -"r c #DFDCD7", -"t c #DFDDD7", -"y c #E0DED9", -"u c #B1AFAB", -"i c #B7B5B1", -"p c #BAB8B4", -"a c #CDCBC7", -"s c #CFCDC9", -"d c #DDDAD5", -"f c #DAD9D3", -"g c #CBC9C4", -"h c #CECCC7", -"j c #D1D0CB", -"k c #D2D0CB", -"l c #D0CFCA", -"z c #AEADA8", -"x c #B9B7B3", -"c c #8D8B88", -"v c #C6C4BF", -"b c #D5D4CF", -"n c #9C9B97", -"m c #9A9895", -"M c #71706E", -"N c #B3B1AD", -"B c #D6D5D0", -"V c #C0BEBA", -"C c #C0BFBA", -"Z c #AEACA8", -"A c #A5A39F", -"S c #91908D", -"D c #D8D6D2", -"F c #94938F", -"G c #898885", -"H c #6E6D6A", -"J c #C8C7C2", -"K c #C8C6C2", -"L c #C9C7C3", -"P c #C9C7C2", -"I c #BCBAB5", -"U c #BEBDB8", -"Y c #C1C0BB", -"T c #CCCAC6", -"R c #E1DFD9", -"E c #D1CFCB", -"W c gray100", +"16 16 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"# .,<;O O 12", -"+3# ,<#456.5:", -"+7 8898-%o0qwe22", -"2;r****ty#uip2as", -"+O%ooOdXf.*oo,gs", -";#.#-o#h j+++k3;", -"l-*zxcv.OO,,,oj;", -"lb=nmMN,#.,OO 7s", -"lBXVxC.;,,ZASO>:", -"lD-O*O#+-&FGH5h2", -";heJKKLPo#IUY-T+", -":P.kk8k-ykOX,-e2", -"+.y%%%%R%;kEE828", -" XoOOOOOXXXXXXO-" +"qX0XqXqXqXqXqXqXtXuXyXyXyXyXyXqX", +"6X2XeXqXqXqXqXeXjXaXpXaXiXdXwX7X", +"5X1XeXqXqXqX0XrXsX7XuXwXuXqX,X5X", +"6X2XeXqXqXqXqXrXsXeXW.>XE.qX2X6X", +"6XX9XyXyXrXrXeXuX8X7X", +"6XqXgXx.v.$.{.rXeX0XtXyXuXqXX>X>X,X,XuXeXoX@X%XwX2X6X", +"5X,X0X8X8X9X8XwXsX8XyXtXrXwX c #D7D5CF", -", c #CFCDC8", -"< c #BFBDB9", -"1 c #D8D5D0", -"2 c #ECEAE5", -"3 c #D2D0CB", -"4 c #BCBAB6", -"5 c #D7D4CF", -"6 c #CFCDC9", -"7 c #BFBEB9", -"8 c #ECEAE4", -"9 c #D8D6D1", -"0 c #C0BEBA", -"q c #DAD8D3", -"w c #DDDBD6", -"e c #A7A5A1", -"r c #41403F", -"t c #C4C2BD", -"y c #E9E6E1", -"u c #6E6D6B", -"i c #51504F", -"p c #DFDDD7", -"a c #DCDAD5", -"s c #676664", -"d c #C7C5C0", -"f c #AEADA8", -"g c #5D5C5A", -"h c #6E6D6A", -"j c #D8D6D0", -"k c #555452", -"l c #B3B1AD", -"z c #6C6B69", -"x c #4A4947", -"c c #323130", -"v c #B6B5B0", -"b c #DBD8D3", -"n c #CFCEC9", -"m c #BEBDB8", -"M c #A8A6A3", -"N c #7B7A77", -"B c #B5B3AF", -"V c #83817E", -"C c #CECCC8", -"Z c #CECDC8", -"A c #C4C2BE", -"S c #E6E4DF", -"D c #E3E1DB", -"F c #E3E1DC", -"G c #E4E2DC", -"H c #EEECE7", -"J c #E4E2DD", -"K c #DFDDD8", -"L c #E1DFDA", -"P c #CCCAC5", -"I c #D1D1CC", -"U c #E6E4DE", -"Y c #E2E0DB", -"T c #D9D7D2", -"R c #D1D0CB", -"E c #CCCAC6", -"W c #D1CFCB", -"Q c #C2C0BC", -"! c #DCDBD5", -"~ c #D9D7D1", -"^ c #C6C5C0", -"/ c #BAB9B5", -"( c #DDDAD5", -") c #D5D4CF", -"_ c #CBC9C5", -"` c #CCCBC6", -"' c #C8C6C2", -"] c #B1AFAB", -"[ c #CBC9C4", -"{ c #ACAAA6", -"} c #C5C3BF", -"| c #E9E7E2", -" . c #E7E5DF", -".. c #3E3D3C", -"X. c #979592", -"o. c #565553", -"O. c #383736", -"+. c #AAA8A4", -"@. c #DEDCD6", -"#. c #C6C4BF", -"$. c #BBBAB5", -"%. c #E9E7E1", -"&. c #9F9D99", -"*. c #94938F", -"=. c #F2F0EA", -"-. c #A9A7A3", -";. c #403F3E", -":. c #A3A29E", -">. c #DDDCD6", -",. c #585856", -"<. c #61615E", -"1. c #B3B2AD", -"2. c #8E8D89", -"3. c #585755", -"4. c #9F9E9A", -"5. c #E0DED8", -"6. c #DAD8D2", -"7. c #8F8D8A", -"8. c #92908D", -"9. c #BEBCB7", -"0. c #8E8D8A", -"q. c #DAD7D2", -"w. c #D3D2CD", -"e. c #CAC8C4", -"r. c #C3C1BC", -"t. c #A4A39F", -"y. c #B1B0AC", -"u. c #31302F", -"i. c #CECCC7", -"p. c #686764", -"a. c #3D3C3B", -"s. c #979692", -"d. c #C5C4BF", -"f. c #777673", -"g. c #757471", -"h. c #73726F", -"j. c #C7C6C1", -"k. c #3A3938", -"l. c #8C8B88", -"z. c #A8A7A3", -"x. c #878683", -"c. c #4A4A48", -"v. c #D1D0CC", -"b. c #D9D8D3", -"n. c #CAC9C4", -"m. c #BDBCB7", -"M. c #B6B4B0", -"N. c #898784", -"B. c #9F9D9A", -"V. c #BAB8B4", -"C. c #868581", -"Z. c #BBB9B5", -"A. c #C3C1BD", -"S. c #C9C8C3", -"D. c #C1BFBB", -"F. c #C2C1BC", -"G. c #E7E5E0", -"H. c #D4D2CE", -"J. c #E5E3DD", -"K. c #E0DED9", -"L. c #ECEBE5", -"P. c #BDBBB7", -"I. c #C8C6C1", -"U. c #C8C7C2", -"Y. c #B7B5B1", -"T. c #EBE9E4", -"R. c #D7D6D1", -"E. c #DEDCD7", -"W. c #D6D4CE", -"Q. c gray100", +"32 32 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , < 1 . . 2 3 X X X X X X X X 3 4 , O ", -"5 6 7 O . . 8 9 # # # 9 0 6 5 ", -"> , 7 O . . 8 O . . . O 7 , > ", -"> , 7 O . . 8 O O . q . O 7 , > ", -"> , 7 O . . 8 O X w e r t y u i p X O 7 , > ", -"> , 7 O . . 8 O . X a s d f g h + X j 7 , > ", -"> , 7 9 # # # # # # # # # # 8 O . k l z x c v b # 7 , > ", -"# n m . 3 3 3 3 3 3 3 3 3 3 3 : 8 O X w M k N $ B V C # O 7 , > ", -"O Z A S D F F F F F F F F F G D H O . q J K O a L O . j 7 , > ", -"O P I * L G F F F F F F F F U 9 Y T . . R X . X . O 7 , 5 ", -"O E R K , 3 3 3 3 3 3 3 3 W Q ! + # # # # # # # # # ~ 0 , 5 ", -"O P R Y X # # . . . T ^ w , $ $ $ $ $ $ $ $ 6 3 / , O ", -"O P R L 3 w O # K ( . 9 ^ ) : _ ` E E E E E E E E ` ' X # ", -"O P R L 3 # X ] [ 3 { v . 9 } K | F J J J J J J J J G .3 $ # ", -"O P R L : 9 [ ..X.Q o.O.+.@.# #.w O : 3 3 3 3 3 3 3 3 : . $., O ", -"O P R L 3 3 %.&.*.=.-.;.:.K # #.>.@ . # . # o . # 9 0 6 5 ", -"O P R L 3 # X ,.<.1.2.3.4.5.# #.>.q . j w 6.L w . O 7 , > ", -"O P R L 3 9 ' 7.8.9.0.:.q.. 9 #.>.q w.O e.] # r.t.y.O . O 7 , > ", -"O P R L 3 9 F D q F K . 9 #.>.q 3 a +.u.i.p.a.s.w X 1 7 , > ", -"O E R L 3 . 3 3 . 3 X . 9 d.>.q . $ 2 f.[ 7.g.h.C # O 7 , > ", -"O E R F 9 O O O O O O O O @ j.>.q X T 9.k.l.z.x.c.d 9 O 7 , > ", -"O P v.b.j._ [ [ [ [ [ [ [ n.i.m.w q X @ M.N.B.V.C.Z.@ X 1 7 , > ", -"O , A.S.D.F.F.F.F.F.F.F.F.F.F.D.G.9 H.. + J.K.+ J.+ . O 7 , > ", -"5 6 m 6.9 9 9 9 9 9 9 9 9 9 9 9 = O . w.3 X . 3 X . O < 6 5 ", -"5 , 0 j . . L.q O 9 9 9 9 9 9 9 9 O b D., > ", -"> , P. 3 X X X X X X X X X X 3 %.[ I.U.U.U.U.U.U.U.U.I.e.Y.n # ", -"> , i.* - ; ; ; ; ; ; ; ; ; ; T.8 9 R.9 9 9 9 9 9 9 9 9 R.9 ", -" T + @ + + + + + + + + + + @ q @.E.@.E.E.E.E.E.E.E.@.E.w W. ", -" . X . o o o o o o o o o o . . X X X X X X X X X X X X X " +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0X9X0X9X9X9X9X9X9X9X9X0X9X9XqXqX", +"qXqX0XqXqXqXqXqXqXqXqXqXqXqXqXqXeXuXuXuXuXuXuXuXuXuXuXuXuXuXwXqX", +"wX6X$XeX0XqXqXqXqXqXqXqXqXqXqX0XMXmXvXvXvXvXvXvXvXvXvXvXmXpX8XwX", +"eX5X#XrX0XqXqXqXqXqXqXqXqXqXqX0XnXqX8X9X9X9X9X9X9X9X9X8XqXOX5XeX", +"eX5X#XeX0XqXqXqXqXqXqXqXqXqXqX0XnXrXqXwXqXqXqXwXqXqXwXqXrX$X5XeX", +"eX5X#XeX0XqXqXqXqXqXqXqXqXqXqX0XnXeX0XqXqXqXqXqX0XqXqX0XeX#X5XeX", +"eX5X#XeX0XqXqXqXqXqXqXqXqXqXqX0XnXeX0XqX0X0XwX0XiXwXqX0XeX#X5XeX", +"eX5X#XeX0XqXqXqXqXqXqXqXqXqXqX0XnXeX9XaXG.z }.bX| { fX8XeX#X5XeX", +"eX5X#XeX0XqXqXqXqXqXqXqXqXqXqX0XnXeX0X0XuXK |.'.H ] gX7XrX#X5XeX", +"eX5X#XrXqXwXwXwXwXwXwXwXwXwXwXqXnXeX0XwX4Xv J.-.n p >XeXeX#X5XeX", +"wX5X@X0X8X8X8X8X8X8X8X8X8X8X8X7XbXeX9XpXU.) 9.7XP.r.eX0XeX#X5XeX", +"eX4X=XlXhXhXhXhXhXhXhXhXhXhXhXhXNXwXqX0XuXkXdXeXaXgXqX0XrX#X5XeX", +"eX2X7XMXfXjXhXhXhXhXhXhXhXhXlXrXhXtX0XqX0X7X9XqX9X8XqX0XeX#X5XeX", +"eX2X7XsX5X8X8X8X8X8X8X8X8X7XqX&XiXuXqXwXwXwXwXwXwXwXwXwXtX$X5XeX", +"eX2X7XgX9XwXqX0XqXwX0X0XwXqXtX;XpXqX5X6X6X6X6X6X6X6X6X5X8XXX5XeX", +"eX2X7XfX8XqXeXsXrXqXdXuX0XqXrX;XeX7X1X2X2X2X2X2X2X2X2X2X2X>X9XwX", +"eX2X7XfX8XeX4X~.>X9XR.oXrX0XrX-XsXcXhXjXjXjXjXjXjXjXjXjXzX9X6XwX", +"eX2X7XfX7XtX;Xh t.7X:.j .XuXeX;XpXeX7X8X8X8X8X8X8X8X8X7X0XoX5XeX", +"eX2X7XfX8X7XmXu.w.DXJ.g XXuXeX;XpXuX0XwXqX0XqXqX0X0XwXqXrX$X5XeX", +"eX2X7XfX7XeX6XG Q |.0.a E.aXwX;XpXyX0X0XtXaXqXrXdXpXqXqXeX#X5XeX", +"eX2X7XfX7XtX;Xb.B..Xn.Q.rX0XrX;XpXyX9XrX*X/.9X1XQ._.wX0XeX#X5XeX", +"eX2X7XfX8XqXrXhXgXuXjXaXqXqXrX;XpXyX8XiXI.7 @Xk.w x.uX9XeX#X5XeX", +"eX2X7XfX8XqX0X8X8X0X8X9XqX0XrX-XpXyX0X8XvX^ XX`.@.' 6XwXeX#X5XeX", +"eX2X7XhXqXrXeXeXeXeXeXeXeXeXuX:XpXyX9XyX{.e y._.9.g 1XeXeX#X5XeX", +"eX2X8XyX:X1X1X1X1X1X1X1X1XX>X>X>X>X>X>X>X>X>X c #C3C2BD", -", c #BBB9B5", -"< c #F5F4EF", -"1 c #F1EFE9", -"2 c #ECEAE5", -"3 c #EDEBE6", -"4 c #EDEBE5", -"5 c #EFEDE7", -"6 c #D0CFCA", -"7 c #D8D6D1", -"8 c #C5C3BE", -"9 c #BDBBB7", -"0 c #F4F2EC", -"q c #CFCDC8", -"w c #B1AFAB", -"e c #C4C3BE", -"r c #BCBBB6", -"t c #F4F2ED", -"y c #DBD9D4", -"u c #B5B4B0", -"i c #DAD8D3", -"p c #B4B3AF", -"a c #DDDAD5", -"s c #D7D5D0", -"d c #858481", -"f c #161615", -"g c #878582", -"h c #E3E1DB", -"j c #282727", -"k c #454443", -"l c #E0DED8", -"z c #BFBEB9", -"x c #5A5957", -"c c #71706D", -"v c #E1DFDA", -"b c #5E5D5B", -"n c #3F3E3D", -"m c #474644", -"M c #DBD9D3", -"N c #73726F", -"B c #6C6B68", -"V c #F3F1EB", -"C c #989693", -"Z c #484745", -"A c #C3C1BD", -"S c #434241", -"D c #E8E6E1", -"F c #E9E7E1", -"G c #6F6D6B", -"H c #FCFAF4", -"J c #595856", -"K c #21201F", -"L c #464544", -"P c #070606", -"I c #878683", -"U c #E0DDD8", -"Y c #D9D6D1", -"T c #BCBBB7", -"R c #D4D3CE", -"E c #72716E", -"W c #191918", -"Q c #181817", -"! c #757471", -"~ c #CBC9C4", -"^ c #A3A29E", -"/ c #868481", -"( c #30302F", -") c #D1CFCB", -"_ c #D1CECA", -"` c #C6C4C0", -"' c #C3C1BC", -"] c #C5C4BF", -"[ c #DCDAD4", -"{ c #E2E0DA", -"} c #DDDBD6", -"| c #EBE9E4", -" . c #E6E5DF", -".. c #E7E5E0", -"X. c #E8E6E0", -"o. c #F6F4EE", -"O. c #C1BFBA", -"+. c #D2D2CD", -"@. c #F9F8F2", -"#. c #E9E6E1", -"$. c #ECEAE4", -"%. c #EBE9E3", -"&. c #EBEAE4", -"*. c #DCDAD5", -"=. c #C0BFBA", -"-. c #D3D2CD", -";. c #CDCBC6", -":. c #B3B2AE", -">. c #E7E6E0", -",. c #B9B7B3", -"<. c #EAE8E3", -"1. c #B8B6B2", -"2. c #E8E7E2", -"3. c #DAD8D2", -"4. c #B8B7B3", -"5. c #E3E1DC", -"6. c #C6C5C0", -"7. c #B9B8B4", -"8. c #BCBAB6", -"9. c #AEADA9", -"0. c #E2E0DB", -"q. c #DCDBD6", -"w. c #DEDDD7", -"e. c #D7D6D1", -"r. c #D0CECA", -"t. c #BEBDB8", -"y. c #DDDBD5", -"u. c #E9E8E3", -"i. c #E5E3DD", -"p. c #C4C2BE", -"a. c #DEDCD6", -"s. c #ACABA7", -"d. c #242423", -"f. c #474645", -"g. c #B2B0AC", -"h. c #4A4A48", -"j. c #373735", -"k. c #9E9C99", -"l. c #DFDDD7", -"z. c #D1D0CB", -"x. c #B1B0AC", -"c. c #C9C7C2", -"v. c #908E8B", -"b. c #3F3F3D", -"n. c #92908D", -"m. c #7C7B78", -"M. c #2D2C2B", -"N. c #898885", -"B. c #B5B4AF", -"V. c #D2D1CC", -"C. c #E4E1DC", -"Z. c #B5B3AF", -"A. c #3E3E3C", -"S. c #B3B1AD", -"D. c #565653", -"F. c #252524", -"G. c #979692", -"H. c #A9A7A3", -"J. c #3B3B39", -"K. c #C0BEB9", -"L. c #B9B8B3", -"P. c #F4F1EC", -"I. c #686765", -"U. c #D2D0CC", -"Y. c #DFDDD8", -"T. c #A19F9C", -"R. c #232322", -"E. c #1A1919", -"W. c #4B4A48", -"Q. c #434341", -"!. c #E4E2DD", -"~. c #C8C6C1", -"^. c #C7C5C1", -"/. c #D9D7D1", -"(. c #C7C5C0", -"). c #CBC9C5", -"_. c #9F9E9A", -"`. c #BAB9B4", -"'. c #92918D", -"]. c #8C8A87", -"[. c #A3A19D", -"{. c #DFDCD7", -"}. c #7B7A77", -"|. c #0F0F0E", -" X c #777673", -".X c #F8F6F0", -"XX c #353534", -"oX c #62615F", -"OX c #777674", -"+X c #6A6966", -"@X c #F9F7F1", -"#X c #595957", -"$X c #363534", -"%X c #6D6C69", -"&X c #F2F0EA", -"*X c #747370", -"=X c #F7F5EF", -"-X c #9D9B98", -";X c #8E8C89", -":X c #292827", -">X c #BAB8B4", -",X c #EAE8E2", -" c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , : % % < 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 6 + . ", -" % 7 8 9 : % % 0 . # @ @ @ @ @ @ @ @ @ @ @ @ @ @ + q w % ", -" % 7 e r : % % t y . . . . . . . . . . . . . . . % u % ", -" % 7 e r : % % t i % . o p % ", -" % 7 e r : % % t i % . o p % ", -" % 7 e r : % % t i % % . . % . . o p % ", -" % 7 e r : % % t i % % a o o % s . @ . o p % ", -" % 7 e r : % % t i % o & d f g h % q j k l o . o p % ", -" % 7 e r : % % t i % % . z x c = v b n m M o . o p % ", -" % 7 e r : % % t i % @ 1 N B V C Z A S D + . o p % ", -" % 7 e r : % % t i % @ F G B H J K L P I U + . o p % ", -" % Y e T i . . . . . . . . . . . . . . . . R t i % + l E W Q ! ~ ^ / ( r 7 % . o p % ", -" % 7 8 , @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ) _ 0 i % s ` ' ' ] [ { } # } % . o p % ", -" % : > A | ...............................X.= o.i % : i i : % o % s % . o p % ", -" % : O.+.@.#.$.| | | | | | | | | | | | | %.5 s &.*.o % % % % % . o p % ", -" % : =.-...;.+ @ @ @ @ @ @ @ @ @ @ @ @ @ # :.>.} o . o p % ", -" % : =.-.%.) . . . . . . . . . . . . . . : ,.D *.o % % % % % % % % % % % % % % + p % ", -" % : =.-.<.@ . % : 1.2.v 7 i i i i i i i i i i i i i 3.i 7 u % ", -" % : =.-.<.@ . % % % R % Y 4.5.6.7.r 8.8.8.8.8.8.8.8.8.8.8.8.8.r 7.9. ", -" % : =.-.<.@ . % . s % . i . % % Y ,.& 0.*.} } } } } } } } } } } } } } q.w.e.-. ", -" % : =.-.<.@ . % i ) ;. : r.t.@ y.% % : 1.u.| 5.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.= p.+ . ", -" % : =.-.<.@ . o a.s.d.f.X.g.n h.j.k.l.o % : 1.>.i # + + + + + + + + + + + + + z.+ q x.% ", -" % : =.-.<.@ . % 7 c.v.b.0.c.n.m.M.N.h + % : 1.D } % . . -.B.% ", -" % : =.-.<.@ . V.C.Z.A.& 0.S.D.F.G.; o % : 1.D } o . o p % ", -" % : =.-.<.@ . % a H.J.0.K.L.P.x I.D @ % : 1.D } o o % % U.o o . o p % ", -" % : =.-.<.@ . o Y.T.R.E.W.x.j.M.Q.O.: % % : 1.D } o s v i o y 5.!.l % . o p % ", -" % : =.-.<.@ . . # ~.;.^./.o (.i i % % : 1.D } o s )._.z y.`.'.].[./.% . o p % ", -" % : =.-.<.@ . . Y s Y % . : % % % : 1.D } o o {.}.|. X.XJ XXoXOXy % . o p % ", -" % : =.-.<.@ . % % % % % : 1.D } o + v E +X@X#X$X%Xg.y % . o p % ", -" % : =.-.<.@ . % : 1.D } o r.&X! *X=X-X].;X:X>Xy % . o p % ", -" % : =.-.,X# % % % % % % % % % % % % % % 7 XD } o o l 8X9X0XqXwXeXrXn.*.o . o p % ", -" % : O.tXi yXt.uXuXuXuXuXuXuXuXuXuXuXuXuX9 z iXpXy.o % a.5.C.a a !.aXY.% . o p % ", -" % Y p.z sXdXfX> > > > > > > > > > > > > > > e &Xy % o + + -.% + + o . o p % ", -" % 7 8 8.gX7 /././././././././././././././.: s hXi % . o p % ", -" % Y e r Y % % % % % % % % % % % % % % % % o 0 i % . o p % ", -" % 7 e r : % % 0 i tX o p % ", -" % 7 8 9 7 % % % % % % % % % % % % % % % % o jX*. s . . . . . . . . . . . . . s % 7X% ", -" % : > kXy . s s s s s s s s s s s s s s s s s $.z lXyX1.1.1.1.1.1.1.1.1.1.1.1.1.4.lXp ", -" zXxX7 @X0 hXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXo.V 3 cXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvX5 3 ", -" . 7 . . . . . . . . . . . . . . . . . . . s 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 s ", -" % % % % % % % % % % % % % % % % % % % % ", -" ", -" " +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXqXqXqXqX", +"qXqXqXwXeXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX9X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X7X8XqXqXqXqX", +"qXqXwX6X3XwXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XsXlXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXlXgXqXqXqXqX", +"qX0XtX*XoXtX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XSXVXnXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXNX9X8XwXqXqX", +"qX0XrX-X+XtX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XAXwX6X7X7X7X7X7X7X7X7X7X7X7X7X7X7X8X5X_.0XqXqXqX", +"qX0XrX=XOXtX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XAXuXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX0X{.0XqXqXqX", +"qX0XrX=XOXtX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XAXyX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXwX9X[.0XqXqXqX", +"qX0XrX=XOXtX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XAXyX0XqXqXqXqX0XqXqXqXqXqXqXqXqXqXwX9X[.0XqXqXqX", +"qX0XrX=XOXtX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XAXyX0XqXqXqXqXeXwXqXqX0XqXwXqXqXqXwX9X[.0XqXqXqX", +"qX0XrX=XOXtX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XAXyX0XqXqXqXeX7X9XqX0XrXwX8XqXqXqXwX9X[.0XqXqXqX", +"qX0XrX=XOXtX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XAXyX0XqX0XuX,.- :.sXrX*X3 } dX9XqXwX9X[.0XqXqXqX", +"qX0XrX=XOXtX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XAXyX0XqXqX0X=XZ ( gXiX[ ; T fX9XqXwX9X[.0XqXqXqX", +"qX0XrX=XOXtX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XAXyX0XqXqX8XbXQ ^ VXd.;.:.H xX8XqXwX9X[.0XqXqXqX", +"qX0XrX=XOXtX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XAXyX0XqXqX9XfXI ! MXI p e $ T.pX9XwX9X[.0XqXqXqX", +"qX0XtX=X+XyXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXAXyX0XqX9XpX*., , <.=X!.T M 4XwX0XwX9X[.0XqXqXqX", +"qX0XrX-XoXqX7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X6XAXyX0XqXqXwX;X-X=X;XiXhX9X6XuX0XqXwX9X[.0XqXqXqX", +"qX0XtX*X*XbXlXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXxXlXFXyX0XqXqXqXtXtXtXtX9X8XwXeX0XqXqXwX9X[.0XqXqXqX", +"qX0XtX%X8XHXcXnXbXbXbXbXbXbXbXbXbXbXbXbXbXbXMXtXmXiX9XqXqXqX0X0X0X0XqXqX0X0XqXqXqXwX9X[.0XqXqXqX", +"qX0XtX$X9XzX3X8X7X7X7X7X7X7X7X7X7X7X7X7X7X6XqX].zXpX9XqXqXqXqXqXqXqXqXqXqXqXqXqXqXwX9X[.0XqXqXqX", +"qX0XtX$X9XbX7XwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXtX.XxXiX9X0X0X0X0X0X0X0X0X0X0X0X0X0X0XqX8X[.0XqXqXqX", +"qX0XtX$X9XvX7XwXqXqXqXqXqXqXqXqXqXqXqXqXqX0XtX XxXfXrXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXrX}.0XqXqXqX", +"qX0XtX$X9XvX7XwXqXqXqX0X0XqXqX0X0XqXqXqXqX0XtX XjX:X.XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXXX(.qXqXqXqX", +"qX0XtX$X9XvX7XwXqXqXqXrXeXqXqXeXtXqX0XqXqX0XrX.XdXgXiXpXpXpXpXpXpXpXpXpXpXpXpXpXpXiXaXtX0XqXqXqX", +"qX0XtX$X9XvX7XwXqXqXqX2X3XqXwX3X-XrXyX0XqX0XtX XcXbXhXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkX-X8XwXqXqX", +"qX0XtX$X9XvX7XwX9XaXD.5 v 0X,XU f v OXyX0X0XtX XxXyX6X8X8X8X8X8X8X8X8X8X8X8X8X8X7X8X5X`.0XqXqXqX", +"qX0XtX$X9XvX7XwX0XqX7X0.e 8X6X%XT.$ I.sX9X0XtX XxXpX0XwXqXqXqXqXqXqXqXqXqXqXqXqXqXwX9X{.0XqXqXqX", +"qX0XtX$X9XvX7XwXqX8XzXM.e 7XkXE.w d *XtX0X0XtX XxXpX9XqXqXqXqXqXqXqXqXqXqXqXqXqXqXwX9X[.0XqXqXqX", +"qX0XtX$X9XvX7XwXqX9XaXd.9 4X>X.X X% i.jX8X0XtX XxXpX9XqXqXqX0X8X0XqX0X9X8X9XqXqXqXwX9X[.0XqXqXqX", +"qX0XtX$X9XvX7XwX9XsXZ.0 3 P /.n j G #XtX0X0XtX XxXpX9XqXqX0XuXgXuX0XrXfXjXdXqXqXqXwX9X[.0XqXqXqX", +"qX0XtX$X9XvX7XwXqXwX6XXuXyX0XqX0XtX XxXpX9XqX0XeXXXF..XyX>XJ.b.P.wXqXqXwX9X[.0XqXqXqX", +"qX0XtX$X9XvX7XwXqXqXwXrXeXrXqXeXrX0X0XqXqX0XtX XxXpX9XqX0XyX<.X [ mXV., Q &.wXqXqXwX9X[.0XqXqXqX", +"qX0XtX$X9XvX7XwXqXqXqX0X0X0XqXqX0XqXqXqXqX0XtX XxXpX9XqXqX8XgXQ ! NXN.1 { I.uX0XqXwX9X[.0XqXqXqX", +"qX0XtX$X9XvX7XwXqXqXqXqXqXqXqXqXqXqXqXqXqX0XtX XxXpX9XqXqX8XnX! ] BX@XL.<.@ OXuX9XwX9X[.0XqXqXqX", +"qX0XtX$X9XvX6XqX0X0X0X0X0X0X0X0X0X0X0X0X0X0XrX|.xXpX9XqX0XwXOXv N ;XY.K.s.O oXiX9XwX9X[.0XqXqXqX", +"qX0XtX%X9XnXqXyXtXtXtXtXtXtXtXtXtXtXtXtXtXrXpXXXxXpX9XqX9XpX<.V M w.(.H Z N.uX0XqXwX9X[.0XqXqXqX", +"qX0XtX%X9XyX X@X+X+X+X+X+X+X+X+X+X+X+X+X+X+X#X/.cXpX9XqXqX0XsXhXjXpXuXjXjXsXqXqXqXwX9X[.0XqXqXqX", +"qX0XtX=X$X3X&X=X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X=XCXuX0XqXqXqX9X8X8X9X0X8X8X9XqXqXqXwX9X[.0XqXqXqX", +"qX0XrX-XoXuXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXeXSXyX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXwX9X[.0XqXqXqX", +"qX0XtX=XOXtX0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0XqX9XAXyX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXwX9X[.0XqXqXqX", +"qX0XrX=XOXtX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XAXyX9XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX9X[.0XqXqXqX", +"qX0XrX-X+XrX0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0XqX9XAXiXqXeXwXwXwXwXwXwXwXwXwXwXwXwXwXeX0X[.0XqXqXqX", +"qX0XtX=XoXuXwXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXmX#X}. X X X X X X X X X X X X X X X}.[.qXqXqXqX", +"qXqXrX:XwXHXAXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXDXAXmXMXMXMXMXMXMXMXMXMXMXMXMXMXMXMXMXNXmXqXqXqXqX", +"qXqXqXqXrXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXeXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXeXqXqXqXqX", +"qXqXqXqX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0XqXqXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX" }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/fifteen.sav sgt-puzzles-20160429.b31155b/icons/fifteen.sav --- sgt-puzzles-20140928.r10274/icons/fifteen.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/fifteen.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,74 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :7:Fifteen +PARAMS :3:4x4 +CPARAMS :3:4x4 +SEED :15:307905346810973 +DESC :37:8,11,3,6,14,13,4,2,0,9,12,10,5,1,7,15 +NSTATES :2:66 +STATEPOS:2:47 +MOVE :4:M1,2 +MOVE :4:M1,3 +MOVE :4:M0,3 +MOVE :4:M0,1 +MOVE :4:M1,1 +MOVE :4:M1,2 +MOVE :4:M0,2 +MOVE :4:M0,0 +MOVE :4:M1,0 +MOVE :4:M1,1 +MOVE :4:M0,1 +MOVE :4:M0,0 +MOVE :4:M1,0 +MOVE :4:M3,0 +MOVE :4:M3,1 +MOVE :4:M1,1 +MOVE :4:M1,0 +MOVE :4:M3,0 +MOVE :4:M3,1 +MOVE :4:M1,1 +MOVE :4:M1,0 +MOVE :4:M2,0 +MOVE :4:M2,1 +MOVE :4:M1,1 +MOVE :4:M1,3 +MOVE :4:M0,3 +MOVE :4:M0,1 +MOVE :4:M1,1 +MOVE :4:M1,2 +MOVE :4:M0,2 +MOVE :4:M0,1 +MOVE :4:M2,1 +MOVE :4:M3,1 +MOVE :4:M3,2 +MOVE :4:M2,2 +MOVE :4:M2,3 +MOVE :4:M3,3 +MOVE :4:M3,1 +MOVE :4:M2,1 +MOVE :4:M2,2 +MOVE :4:M1,2 +MOVE :4:M1,3 +MOVE :4:M2,3 +MOVE :4:M2,2 +MOVE :4:M1,2 +MOVE :4:M0,2 +MOVE :4:M0,3 +MOVE :4:M1,3 +MOVE :4:M1,2 +MOVE :4:M2,2 +MOVE :4:M2,3 +MOVE :4:M0,3 +MOVE :4:M0,2 +MOVE :4:M1,2 +MOVE :4:M2,2 +MOVE :4:M2,3 +MOVE :4:M1,3 +MOVE :4:M1,2 +MOVE :4:M3,2 +MOVE :4:M3,3 +MOVE :4:M1,3 +MOVE :4:M1,2 +MOVE :4:M2,2 +MOVE :4:M2,3 +MOVE :4:M3,3 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/fifteen-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/fifteen-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/filling-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/filling-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/filling-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/filling-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/filling-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/filling-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/filling-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/filling-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/filling-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/filling-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/filling-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/filling-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/filling-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/filling-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/filling-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/filling-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/filling-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/filling-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/filling-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/filling-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/filling-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/filling-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/filling-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/filling-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/filling.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/filling.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/filling-icon.c sgt-puzzles-20160429.b31155b/icons/filling-icon.c --- sgt-puzzles-20140928.r10274/icons/filling-icon.c 2014-09-29 00:33:40.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/filling-icon.c 2016-04-29 00:31:42.000000000 +0000 @@ -1,542 +1,522 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 194 2 ", -" c #D9D7D2", -". c #D1CFCA", -"X c #D4D2CD", -"o c #D2D0CC", -"O c #D5D3CF", -"+ c #CCCAC6", -"@ c #C0BEBA", -"# c #C2C1BC", -"$ c #C2C0BC", -"% c #C5C3BE", -"& c #C6C4C0", -"* c #C4C2BE", -"= c #CECCC7", -"- c #DDDBD6", -"; c #BCBAB6", -": c #9E9D99", -"> c #D6D5D0", -", c #C9C7C2", -"< c #B4B3AE", -"1 c #C8C6C2", -"2 c #ADABA7", -"3 c #989693", -"4 c #ABA7A6", -"5 c #93918E", -"6 c #71706D", -"7 c #9B9996", -"8 c #92918E", -"9 c #807F7C", -"0 c #DBD9D4", -"q c #B7B6B2", -"w c #B4B3AF", -"e c #A4A39F", -"r c #B5B3AF", -"t c #D0CEC9", -"y c #E2E0DA", -"u c #D0CDCA", -"i c #D4D7CD", -"p c #97C992", -"a c #C7C9C1", -"s c #A19F9C", -"d c #AEADA9", -"f c #B6B4B1", -"g c #999794", -"h c #D6D4CF", -"j c #B8B7B3", -"k c #AFADA9", -"l c #BFBDB9", -"z c #CBC9C4", -"x c #E0DED9", -"c c #CBC8C4", -"v c #CECEC7", -"b c #ACCBA6", -"n c #BEC0B8", -"m c #9A9896", -"M c #B0AEAA", -"N c #ADACA8", -"B c #959491", -"V c #D7D5D0", -"C c #BBB9B5", -"Z c #DCDAD5", -"A c #C5C3BF", -"S c #BEBBB8", -"D c #DBCFD4", -"F c #BAB7B4", -"G c #787774", -"H c #969491", -"J c #8F8D8A", -"K c #83817E", -"L c #B8B7B2", -"P c #ACABA7", -"I c #C1BFBA", -"U c #C7C5C0", -"Y c #CDCDC6", -"T c #AEC9A9", -"R c #D0D0CA", -"E c #D8D6D1", -"W c #C4C3BE", -"Q c #B7B6B1", -"! c #B9B7B3", -"~ c #A3A29E", -"^ c #B8B6B2", -"/ c #D5D3CE", -"( c #E3E1DC", -") c #CFCCC8", -"_ c #CED1C8", -"` c #89BD84", -"' c #CFD2C8", -"] c #D3D0CD", -"[ c #E9E7E2", -"{ c #E8E6E0", -"} c #CCCAC5", -"| c #DAD8D3", -" . c #878683", -".. c #ABA9A5", -"X. c #A5A4A0", -"o. c #CECCC8", -"O. c #CFCDC8", -"+. c #C5C2BE", -"@. c #D5D2CE", -"#. c #A09E9B", -"$. c #B1AFAB", -"%. c #ACAAA6", -"&. c #A6A5A1", -"*. c #82807E", -"=. c #9D9B98", -"-. c #81807D", -";. c #D2D0CB", -":. c #BEBCB8", -">. c #C6C4BF", -",. c #CDCBC6", -"<. c #BCBBB6", -"1. c #7D7C79", -"2. c #A3A19E", -"3. c #A9A7A4", -"4. c #A7A5A2", -"5. c #B6B4B0", -"6. c #9C9B97", -"7. c #E2E0DB", -"8. c #E4E2DD", -"9. c #D1CFCB", -"0. c #858481", -"q. c #C1C0BB", -"w. c #A5A3A0", -"e. c #ABAAA6", -"r. c #B3B1AD", -"t. c #BAB9B4", -"y. c #93928F", -"u. c #A8A6A2", -"i. c #8A8986", -"p. c #D0CFC9", -"a. c #D1D0CB", -"s. c #BEBDB8", -"d. c #C5C4BF", -"f. c #BDBBB7", -"g. c #8D8C89", -"h. c #AEACA9", -"j. c #A8A7A3", -"k. c #8C8B88", -"l. c #BDBCB7", -"z. c #6F6E6C", -"x. c #9C9697", -"c. c #8F8C8B", -"v. c #757572", -"b. c #94908F", -"n. c #989293", -"m. c #83827F", -"M. c #A1A09C", -"N. c #656562", -"B. c #989594", -"V. c #8F8B8B", -"C. c #DCD9D5", -"Z. c #B9B8B3", -"A. c #A59FA0", -"S. c #9EBF99", -"D. c #A9BCA4", -"F. c #C3B9BD", -"G. c #B2C1AD", -"H. c #94B98F", -"J. c #C0BABA", -"K. c #C0BFBA", -"L. c #8F8E8B", -"P. c #AAA9A5", -"I. c #A0999B", -"U. c #A5C2A0", -"Y. c #A0BA9B", -"T. c #C3BCBD", -"R. c #D9D8D2", -"E. c #A29D9D", -"W. c #A1C19C", -"Q. c #AABCA5", -"!. c #BEB6B9", -"~. c #ADBCA7", -"^. c #93B58F", -"/. c #BCB7B7", -"(. c #BFBEB9", -"). c #9A9595", -"_. c #A9C0A4", -"`. c #A4B89F", -"'. c #BDB8B8", -"]. c #DAD9D3", -"[. c #C1BFBB", -"{. c #9C9597", -"}. c #908C8B", -"|. c #8C8C88", -" X c #BBB7B6", -".X c #C1BABB", -"XX c #9E9C99", -"oX c #82817E", -"OX c #C0BCBA", -"+X c #B8B4B3", -"@X c #CCCBC6", -"#X c #D6D5CF", -"$X c #D3D1CC", -"%X c gray100", +"16 16 256 2 ", +" c #E2E2E2", +". c #DADADA", +"X c #DDDDDD", +"o c #DDDDDD", +"O c gainsboro", +"+ c #DDDDDD", +"@ c #DFDFDF", +"# c gray84", +"$ c gray79", +"% c #CBCBCB", +"& c #CBCBCB", +"* c #CECECE", +"= c gray81", +"- c #CDCDCD", +"; c #D7D7D7", +": c #E7E7E7", +"> c #C5C5C5", +", c #A5A5A5", +"< c #E1E1E1", +"1 c #D2D2D2", +"2 c #BCBCBC", +"3 c gray82", +"4 c #D7D7D7", +"5 c gray71", +"6 c #9F9E9F", +"7 c #B5B1B5", +"8 c gray60", +"9 c #767676", +"0 c #A2A2A2", +"q c #9A9A9A", +"w c #868686", +"e c gray90", +"r c gray75", +"t c gray", +"y c gray64", +"u c #BCBCBC", +"i c #DADADA", +"p c #E7E7E7", +"a c #ECECEC", +"s c #DAD8DA", +"d c #DDE2DD", +"f c #90CE90", +"g c #CDD3CD", +"h c #ABA9AB", +"j c #ACACAC", +"k c #B7B7B7", +"l c gray63", +"z c gray88", +"x c #C1C1C1", +"c c gray72", +"v c gray73", +"b c gray78", +"n c #D5D5D5", +"m c gray90", +"M c #EAEAEA", +"N c #D4D3D4", +"B c #D7D9D7", +"V c #A8D2A8", +"C c #C5CAC5", +"Z c #A3A1A3", +"A c #B2B3B2", +"S c #B2B2B2", +"D c #9D9D9D", +"F c gray88", +"G c #C3C3C3", +"H c gray62", +"J c gray91", +"K c gray83", +"L c #B6B6B6", +"P c #CECECE", +"I c gray82", +"U c #BCBCBC", +"Y c #C7C6C7", +"T c #E8DCE8", +"R c #C3C1C3", +"E c gray49", +"W c gray62", +"Q c gray59", +"! c #888888", +"~ c #E6E6E6", +"^ c #C1C1C1", +"/ c gray71", +"( c gray77", +") c gray79", +"_ c #D0D0D0", +"` c gray89", +"' c #E7E7E7", +"] c gray82", +"[ c #D6D8D6", +"{ c #B0D1B0", +"} c #D8DBD8", +"| c #D0CFD0", +" . c #E1E1E1", +".. c #DFDFDF", +"X. c #CDCDCD", +"o. c gray90", +"O. c gray75", +"+. c #C3C3C3", +"@. c #9F9F9F", +"#. c gray75", +"$. c #DFDFDF", +"%. c #E7E7E7", +"&. c gray93", +"*. c #D8D7D8", +"=. c #D8DDD8", +"-. c #7DC17D", +";. c #D5DCD5", +":. c #DEDCDE", +">. c #F3F4F3", +",. c gray95", +"<. c #D5D5D5", +"1. c #E4E4E4", +"2. c gray77", +"3. c #8E8E8E", +"4. c gray77", +"5. c gray70", +"6. c gray68", +"7. c #D7D7D7", +"8. c #D8D8D8", +"9. c #C3C3C3", +"0. c #CECDCE", +"q. c #E0DEE0", +"w. c #CECECE", +"e. c #A7A7A7", +"r. c #B9B9B9", +"t. c #B4B4B4", +"y. c #AEAEAE", +"u. c #E6E6E6", +"i. c gray77", +"p. c #888888", +"a. c #A9A9A9", +"s. c gray64", +"d. c gray53", +"f. c gainsboro", +"g. c gray86", +"h. c #C6C6C6", +"j. c gray81", +"k. c gray84", +"l. c gray77", +"z. c #838383", +"x. c #A9A9A9", +"c. c gray65", +"v. c gray53", +"b. c #E4E4E4", +"n. c #C0C0C0", +"m. c #B2B2B2", +"M. c gray63", +"N. c gray72", +"B. c #A5A5A5", +"V. c #ECECEC", +"C. c #EFEFEF", +"Z. c gray86", +"A. c #D8D8D8", +"S. c #797979", +"D. c gray78", +"F. c #AFAFAF", +"G. c #A7A7A7", +"H. c #B2B3B2", +"J. c #A5A5A5", +"K. c #DFDFDF", +"L. c #C3C3C3", +"P. c #9A9A9A", +"I. c #B2B2B2", +"U. c #AEAFAE", +"Y. c #919091", +"T. c #D9DAD9", +"R. c gray86", +"E. c gray78", +"W. c #CECECE", +"Q. c #C1C1C1", +"!. c gray75", +"~. c gray58", +"^. c #B4B4B4", +"/. c #AFAFAF", +"(. c #939393", +"). c #E1E1E1", +"_. c #C6C6C6", +"`. c #747474", +"'. c #A49FA4", +"]. c #969496", +"[. c #7B7C7B", +"{. c #9B989B", +"}. c #A09BA0", +"|. c #898989", +" X c gray57", +".X c gray67", +"XX c #898989", +"oX c #6A6A6A", +"OX c #A09EA0", +"+X c #969396", +"@X c #8B8B8B", +"#X c #E6E5E6", +"$X c #C1C2C1", +"%X c #ADA8AD", +"&X c #9EC89E", +"*X c #AFC6AF", +"=X c #CDC4CD", +"-X c #B6CAB6", +";X c #95C195", +":X c #CAC5CA", +">X c #C8C9C8", +",X c #8E8E8E", +" , < 1 = 2 3 4 5 6 7 8 9 0 ", -"q w e r t - y u i p a s d f g h ", -"j k j l z 0 x c v b n m M N B V ", -"C 3 Z z k A 1 < S D F G H J K Z ", -"L P l I U - 1 Y T R & E h W 0 ", -"Q ! ~ ^ / - ( ) _ ` ' ] [ { } | ", -"; .C ..X.o.O.C +.@.A #.$.%.&.Z ", -"; *.~ =.-.;.;.:.>.,.<.1.2.#.-.| ", -"^ 3.4.5.6.7.8.9.O.0.q.w.e.r.=.h ", -"t.y.P u.i.p.a.s.d.f.q g.h.j.k.E ", -"l.z.x.c.v.b.n.m.i.M.m.N.B.V.0.C.", -"Z.A.S.D.F.G.H.J.K.L.P.I.U.Y.T.R.", -"Z.E.W.Q.!.~.^./.(.B P.)._.`.'.].", -"[.G {.}.|. X.X6. .XXoX .OX+X: ", -"0 t @X,.t > #X$X,.@X= / V #X$X0 " +" . X o O + @ # $ % & * = - ; : ", +"> , < 1 2 3 4 5 6 7 8 9 0 q w e ", +"r t y u i p a s d f g h j k l z ", +"x c v b n m M N B V C Z A S D F ", +"G H J K L P I U Y T R E W Q ! ~ ", +"^ / ( ) _ ` ' ] [ { } | ...X.o.", +"O.+.@.#.$.%.&.*.=.-.;.:.>.,.<.1.", +"2.3.4.5.6.7.8.9.0.q.w.e.r.t.y.u.", +"i.p.a.s.d.f.g.h.j.k.l.z.x.c.v.b.", +"n.m.M.N.B.V.C.Z.A.S.D.F.G.H.J.K.", +"L.P.I.U.Y.T.R.E.W.Q.!.~.^./.(.).", +"_.`.'.].[.{.}.|. X.XXXoXOX+X@X#X", +"$X%X&X*X=X-X;X:X>X,X c #595856", -", c #5D5C5A", -"< c #61605F", -"1 c #656462", -"2 c #686765", -"3 c #6A6966", -"4 c #6C6B69", -"5 c #706F6D", -"6 c #72716E", -"7 c #767572", -"8 c #787775", -"9 c #797875", -"0 c #7D7C79", -"q c #807E7C", -"w c #41963F", -"e c #40983E", -"r c #469944", -"t c #539D51", -"y c #53A250", -"u c #5CA559", -"i c #66A462", -"p c #69A565", -"a c #6BA568", -"s c #6DAE6A", -"d c #70AF6D", -"f c #7AAB77", -"g c #7CAC79", -"h c #7AB377", -"j c #82817E", -"k c #82B67E", -"l c #878683", -"z c #888783", -"x c #8A8986", -"c c #8E8D8A", -"v c #908F8C", -"b c #93918E", -"n c #959491", -"m c #989693", -"M c #9B9A96", -"N c #9E9D99", -"B c #A09F9B", -"V c #8CAE87", -"C c #85B781", -"Z c #8DB389", -"A c #93B48F", -"S c #96B491", -"D c #99BF94", -"F c #9FB99A", -"G c #A2A19D", -"H c #A6A5A1", -"J c #A8A6A3", -"K c #ACAAA6", -"L c #AEADA9", -"P c #B0AEAA", -"I c #A7BDA2", -"U c #ADBEA7", -"Y c #AEBAA8", -"T c #B3B2AE", -"R c #B0BBAB", -"E c #B6B5B1", -"W c #B9B6B3", -"Q c #BBB9B5", -"! c #BEBDB9", -"~ c #C1BEBB", -"^ c #9EC199", -"/ c #BBC2B6", -"( c #BEC2B9", -") c #C3C2BD", -"_ c #C6C5C0", -"` c #C9C6C3", -"' c #CCCAC5", -"] c #CFCCC9", -"[ c #D1CDCB", -"{ c #CED5C8", -"} c #D4D2CD", -"| c #D3D8CD", -" . c #D6CDD0", -".. c #D7D5D0", -"X. c #D8D6D2", -"o. c #D7D9D0", -"O. c #DBD9D4", -"+. c #DFDDD8", -"@. c #E1DEDA", -"#. c #E4E2DD", -"$. c #E7E5E0", -"%. c #E8E5E1", -"&. c #ECEAE5", -"*. c #F1EEE9", -"=. c #F4F2EC", -"-. c #FCFAF3", +"32 32 69 1 ", +" c #2B2B2B", +". c gray14", +"X c gray21", +"o c gray23", +"O c #444444", +"+ c #4C4C4C", +"@ c #545454", +"# c #5B5B5B", +"$ c #646464", +"% c #6C6C6C", +"& c #747474", +"* c #7C7C7C", +"= c #2C962C", +"- c #2B982B", +"; c #319A31", +": c #44A144", +"> c #55AC55", +", c #5AA75A", +"< c #5BAB5B", +"1 c #64AB64", +"2 c #6AAD6A", +"3 c #60B060", +"4 c #74AF74", +"5 c #75B975", +"6 c #7AB27A", +"7 c #7BBA7B", +"8 c #848484", +"9 c #8D8D8D", +"0 c #949494", +"q c #9B9B9B", +"w c #81BD81", +"e c #8FB78F", +"r c #96BD96", +"t c #9CBD9C", +"y c #A4A4A4", +"u c #ACACAC", +"i c #AEB0AE", +"p c #B5B5B5", +"a c #B6B8B6", +"s c #BCBCBC", +"d c #96C596", +"f c #99C099", +"g c #A3C4A3", +"h c #A7CCA7", +"j c #A8C3A8", +"k c #B1C8B1", +"l c #BBC3BB", +"z c #BBCABB", +"x c #C3BEC3", +"c c #C3C4C3", +"v c #C5CDC5", +"b c #CCCCCC", +"n c #C7D0C7", +"m c #CDD2CD", +"M c #D2CCD2", +"N c #D4D3D4", +"B c #D5DCD5", +"V c #DBD6DB", +"C c #DBDBDB", +"Z c #DCE3DC", +"A c #E0D7E0", +"S c #E1DBE1", +"D c #E4E4E4", +"F c #E6EAE6", +"G c #EAE7EA", +"H c #EBEBEB", +"J c #F1EEF1", +"K c #F3F3F3", +"L c #FCFCFC", /* pixels */ -"O.+.+.O.O.+.O.+.+.+.+.+.O.+.+.@.@.@.@.@.+.+.@.@.@.@.+.+.+.+.O.O.", -"O...' O.X.X.X.X.} | X.X.X.} O.) ) ] ' ' ' ' ) [ ] ] ] { ] | +.O.", -"$.T - W K L K T n M T L L K E > % > = - ; = = = = = ; O 6 %.X.", -"$.L 3 *.X.%.#.#.~ ) #.@.+.+.#.E X.@.%.#.#.} - ' ` [ ' } b 6 &.X.", -"%.L 3 %.#.v L &.W ) @.o.O.O.@.P } #.^ D #.] - ` ~ q P X.b 6 &.X.", -"%.L 2 =.T % m &.W ) @.O.O.O.@.P } X.y d o.[ - ) ] j G o.v 6 &...", -"%.L 2 *.T < 0 &.Q ) @.o.O.o.@.P } +.k s | [ = _ ` , 7 X.v 6 &.X.", -"%.L 4 *.#.%.@.%.) ) %.+.@.+.%.T } %.O.o.%.[ > ..[ ~ ~ +.N 6 &...", -"$.P < o.) ) ) ] K T ] ) ) ' ] G ~ ' ' ' ] ~ @ v b m b M 2 6 %.X.", -"$.P ; ) T E Q ) N B ~ W E E Q b P E E E E E 1 6 6 6 6 7 , v %.X.", -"%.L 4 =.+.$.@.&.) ) %.@.#.@.%.E O.%.#.@.@.@.E *.&.&.&.*.X.! @.+.", -"$.L 2 $.#.5 B &.Q ) @.o.O.o.@.P [ @.k k @.| K +.| X.X.+._ E @.X.", -"$.L 2 =.G @ x &.Q ) @.O.O.O.@.P .| u s { O.L @.X.+.o.+.' E #.o.", -"%.L 2 &.) z v $.W ) @.O.O.o.@.P [ @.D k X.X.K X.X.X.X.O.) E #.O.", -"%.K 6 -.&.-.=.=.) ) &.@.#.@.%.T O.#.%.%.#.@.E &.&.&.%.*.X.! @.+.", -"$.E O j 8 7 7 0 3 N ) W Q W ) b P ! E E Q E 3 q 7 q q q 3 b #.X.", -"$.T # b x c z n & z } ) ) ) ' B ~ ` ` ] ) ! @ j v v j m < 4 &.X.", -"$.L 1 #.' Q [ #.0 m *.+.#.@.$.T X.#.X.` %.} > | [ ! ] @.B 6 &.X.", -"$.L , } E , W ..5 b &.X.O.X.@.L [ +., q @.] - ) ` < G X.c 6 &.X.", -"#.T , } ` 3 H O.6 b &.X.O.O.#.L | [ 1 1 ] .- ) [ q c o.v 6 &.X.", -"%.T , ..W 6 M X.6 b &...X.X.@.L [ #.P B +.] = ` ~ q x } v 6 &.X.", -"$.L 1 X.' X.[ O.7 m =.@.#.#.%.W o.%.&.&.%.| - ] ` O.} X.m 6 &.X.", -"#.E . : = * * ; X @ , , ; ; , % ; > ; - > - - = & & > o , %.o.", -"$.T - ! L Q T W M G T L W T T c K T T Q E H % E P ~ W E G H #.O.", -"$.P < X.[ F U .K T [ ] A ) } G ~ [ ~ n ' ~ = [ ) Z I [ W K #.O.", -"#.T < .R r V .J L [ S w Y [ M ~ ] 7 = ) ~ * ) ) i t [ P K #.X.", -"$.L , O.A r a .J L [ f e V .M ~ ~ < @ P ~ * ' ) f i ' T K #.X.", -"$.T < o.' ) ( } L P ' ' / ( ' G ~ ' [ W ' ~ = ' ) F ) ' W K #.O.", -"%.P : ! L T T W m J ) ~ ~ ~ ) n K T P E E H & ~ ~ ~ ~ ) K G #.O.", -"#.! o > - - - ; + q J B B B J ; % > - - ; & $ H B B B J q 3 %.X.", -"O.O.O.#.@.@.@.#.+.O.+.+.@.+.@.O.@.#.#.@.#.@.O.+.@.@.@.@.O.O.O.O.", -"O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.+.O.O." +"DGGDFDGFGFFDDGGHHHHHHHHGGHGGHGDD", +"DDNDDDDDSCDDDDDbMNNNNNNCCBCCBZFG", +"Ka#cpppaqyappps$@####@.@@@@#o*KD", +"Kp%LDKHHbbKFGFHlDHJHHC#NNCNCq&KD", +"Kp&KJ9aKcbGDDDHaCHhdGB#Nb&uDq&LD", +"Kp%LaXqLcbHDDGHaCD:3ZC@mC%qD0&KS", +"Kp%Lp+9KxbHDDDGaCG5>ZC@Mb@&D0&LD", +"Kp%LKKGKbmKHHGKaDJGFJC#DCbbGy*KZ", +"Ja$DmNNCpaCNNNNubNNNNbOqqqqy%&KD", +"Ja#bssscyucsclcqacscca%&&&&*$qJD", +"Ka&LHKGKbNKHHHKxDJKGHGcLLKKLDvHD", +"Ka%KH$uLcbGDDDGaCH77GDpDDDDDMsHD", +"Kp%Lu 9LcbHDFDHaCD:>BDpGGGSJNcHD", +"Kp%Kc*qKsbHDDDGpCHd7ZDpDSSSSbsHD", +"Kp*LLLLLNNKGHHKcDJKKHGcKLKJLDcHD", +"Hso9***8%yvxcccqaccscx&*8848%qKD", +"KsOq000q@9CmNbNybmNNNcO9000q$&KD", +"Ka%HMcNH*yLGGGKxSKDbJC#DClNHy&KD", +"Ka$ClOaD&qKDDDHaCG#&GC@bN@qD0&LD", +"Ka$CN@yF&qKDDFHaZD++NC#mC$8G0&KD", +"Ja$Ss&yD&qKDDDGaCHayGN@Mx40Cq&KD", +"Ka%DNDCD*yLGJHKsDKKLKS#CVDCDq*KD", +"Jc #@@@#oO$##$#+####$#.#@@@#o$KD", +"Ka#caxxsyycacas0pascau+sxxxsuuHF", +"Kp$DVgzCpaCNfmCubCbqCc@VMekAcpHD", +"Kp$Sl;rAupCt-lCycB%oVl@NM2,AapJD", +"Ka$Dr;4AppV6-tCybc#Xcc@Nb1 c #4B4A49", -", c #504F4E", -"< c #51514F", -"1 c #555453", -"2 c #5A5957", -"3 c #5C5B59", -"4 c #605F5D", -"5 c #62615E", -"6 c #656462", -"7 c #686765", -"8 c #6A6966", -"9 c #6D6C6A", -"0 c #706F6D", -"q c #72706E", -"w c #767572", -"e c #7D7C79", -"r c #817F7D", -"t c #258E24", -"y c #2B912A", -"u c #379235", -"i c #399537", -"p c #3F983D", -"a c #409C3E", -"s c #479E45", -"d c #4F9D4D", -"f c #559F53", -"g c #4DA04A", -"h c #52A24F", -"j c #56A354", -"k c #59A056", -"l c #5AA758", -"z c #5FA95C", -"x c #60A25D", -"c c #60A95D", -"v c #65A462", -"b c #68A565", -"n c #6BA668", -"m c #6FAB6B", -"M c #72A86F", -"N c #75A971", -"B c #7AAB76", -"V c #7DB579", -"C c #82817E", -"Z c #81B57D", -"A c #858481", -"S c #898784", -"D c #8B8A87", -"F c #8E8C8A", -"G c #908F8C", -"H c #93918E", -"J c #969491", -"K c #999794", -"L c #9B9A97", -"P c #9E9C99", -"I c #A09F9B", -"U c #87B083", -"Y c #88B084", -"T c #88B983", -"R c #8CB188", -"E c #8DBA88", -"W c #95B291", -"Q c #9CB697", -"! c #99BF94", -"~ c #9EB799", -"^ c #A3A29E", -"/ c #A3B99E", -"( c #A6A4A1", -") c #A8A7A3", -"_ c #ABAAA6", -"` c #AFADA9", -"' c #B0AFAB", -"] c #AABAA4", -"[ c #AEBCA9", -"{ c #B3B1AD", -"} c #B7B5B1", -"| c #B9B7B3", -" . c #BAB9B5", -".. c #BFBDB9", -"X. c #C0BEBA", -"o. c #A2C39D", -"O. c #ACC7A7", -"+. c #AFC7A9", -"@. c #BAC0B4", -"#. c #BFC1B9", -"$. c #C4C2BE", -"%. c #C7C4C1", -"&. c #C9C6C3", -"*. c #CCCAC5", -"=. c #CEC6C8", -"-. c #CECCC8", -";. c #D1C7CB", -":. c #D1CECA", -">. c #CCD3C5", -",. c #D4D2CD", -"<. c #D7D5D0", -"1. c #D9D6D2", -"2. c #DCDAD5", -"3. c #DFDDD8", -"4. c #E1DEDA", -"5. c #E4E2DD", -"6. c #E7E5E0", -"7. c #E9E6E2", -"8. c #EDEBE6", -"9. c #EFEDE8", -"0. c #F0EEE8", -"q. c #F5F3EE", -"w. c #F9F6F1", -"e. c #FAF8F2", +"48 48 79 1 ", +" c #0C0C0C", +". c #151515", +"X c #1B1B1B", +"o c #242424", +"O c #2D2D2D", +"+ c #323232", +"@ c #3D3D3D", +"# c #424242", +"$ c #4B4B4B", +"% c #535353", +"& c #5D5D5D", +"* c #646464", +"= c #6B6B6B", +"- c #747474", +"; c #797979", +": c #0A8A0A", +"> c #128F12", +", c #199219", +"< c #269526", +"1 c #2C992C", +"2 c #349C34", +"3 c #3B9D3B", +"4 c #3BA13B", +"5 c #44A344", +"6 c #4AA44A", +"7 c #4EA94E", +"8 c #53A553", +"9 c #51AA51", +"0 c #59AE59", +"q c #66AC66", +"w c #6DAE6D", +"e c #6DB56D", +"r c #73AF73", +"t c #74B074", +"y c #76B876", +"u c #7BB37B", +"i c #848484", +"p c #8A8A8A", +"a c #949494", +"s c #9B9B9B", +"d c #85B685", +"f c #84BE84", +"g c #8CB98C", +"h c #90BA90", +"j c #9FBF9F", +"k c #A4A4A4", +"l c #A7A8A7", +"z c #ABABAB", +"x c #B4B4B4", +"c c #B8B7B8", +"v c #BCBCBC", +"b c #95C695", +"n c #9BC89B", +"m c #A6C1A6", +"M c #A3CBA3", +"N c #ABC3AB", +"B c #AFD0AF", +"V c #B5C6B5", +"C c #B9C7B9", +"Z c #BCC8BC", +"A c #B4D2B4", +"S c #C3C3C3", +"D c #CCCCCC", +"F c #D1CFD1", +"G c #D4D4D4", +"H c #D7D8D7", +"J c #DAD2DA", +"K c #DADADA", +"L c #DBE1DB", +"P c #E7DDE7", +"I c #E8DDE8", +"U c #E5E5E5", +"Y c #E7E9E7", +"T c #E9E6E9", +"R c #ECECEC", +"E c #F2EBF2", +"W c #F2F2F2", +"Q c #FDF6FD", +"! c #FBFBFB", /* pixels */ -"2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.3.2.2.2.2.2.2.2.2.2.2.2.2.2.", -"2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.", -"2.2.2.2.4.2.2.2.1.2.1.2.2.2.2.2.2.1.2.2.1.2.2.3.2.2.2.2.2.2.2.2.2.3.1.1.2.2.2.2.2.1.2.3.2.2.2.2.", -"2.2.3.1.&.5.5.5.5.5.5.5.5.2.2.6.5.5.5.5.5.5.5.*.2.5.3.5.3.5.3.5.2.&.6.6.7.5.5.5.5.7.3.2.3.2.2.2.", -"2.2.5. .O P P P P P P L ^ C C ^ L P L L P L ^ + o # @ # # # @ # + % % $ % % % $ & o q 7.2.2.3.", -"2.2.5. .@ ,.,.-.:.*.>.-.1.` ^ 1.-.-.:.:.-.>.1.D ^ { ' ` _ ` ` } H O P P L L K P K _ - 6 0.<.2.2.", -"2.2.5. .# 5.2.2.2.0.5.2.7. .} 7.2.2.4.4.3.2.6.^ 1.8.6.7.q.8.5.8...@ ,.*.-.2.2.*.*.5.7 6 0.<.2.2.", -"2.2.5.} # 4.2.2.2.e $.2.5.} ' 5.2.2.2.2.2.2.5.P *.2.2.*.Z +.2.4.} @ &.$.&.A A *.#.<.3 7 0.<.2.2.", -"2.2.5. .@ 3.2.7.K + ^ 6.4.} ` 5.2.2.2.2.2.1.5.P -.3.4.c a o.4.4.} + *.%.%.w , -.$.1.5 6 8.<.2.2.", -"2.2.5. .# 2.5. .; w C 6.5.} ' 5.2.2.2.2.2.2.5.I -.3.2.s E c 1.5.| + *.%.*.%.6 <. .1.5 7 0.2.2.2.", -"2.2.5. .@ 2.5.$.9 = 2 5.5.} { 5.1.2.2.2.2.2.5.P -.3.4.Z m c 2.5.} @ *.$.*.9 O L &.<.5 5 0.2.2.2.", -"2.2.5. .# 2.2.3.9.,.,.2.5. .' 5.2.2.2.2.2.2.5.P -.3.2.1.o.<.2.5.} + %.$.$.L J ) $.<.5 5 9.<.2.2.", -"2.2.5. .# 5.2.2.2.3.4.2.5. .} 5.2.3.3.3.3.3.6.I >.5.3.3.7.4.2.6.} # ,.>.-.1.2.,.*.5.5 6 8.2.2.2.", -"2.2.5. .+ ,.,.:.,.>.-.,.2.` ^ 2.-.:.:.:.:.>.1.J $.,.:.:.:.:.-.2.` O ^ I I P L ^ P ` > 6 8.2.2.2.", -"2.2.5. .O P P K L L P L ^ C e ^ L P P P P L ^ 0 H I L L L P L I F O $ # # # @ $ $ % o 9 7.2.2.2.", -"2.2.5.} # 5.5.5.5.3.5.2.7. .} 8.3.5.5.4.5.4.7.I <.6.5.4.5.4.4.6.1.^ 7.4.5.5.5.5.5.8. .} 5.2.2.2.", -"2.2.4. .# 2.2.2.2.4.2.<.4.} ' 4.1.2.1.2.2.1.5.P *.2.2.3.2.2.1.3.-.L 4.1.2.2.2.2.2.5.{ ' 5.2.2.2.", -"2.2.6. .# 2.2.4.-.& _ 6.5.} ' 5.2.2.2.2.2.1.5.P >.3.3.+.l o.4.2.,.L 5.1.2.2.2.2.2.5.} ' 5.2.2.2.", -"2.2.5. .@ 2.2.4.r < ( 7.4.} ' 6.2.2.2.2.2.2.5.P -.3.3.s g ! 4.3.,.L 5.2.2.2.2.2.2.5.} ' 5.2.2.2.", -"2.2.5. .# 2.5.{ * 1 5 6.5.} ' 5.1.2.2.2.2.2.5.P -.3.2.h o.d <.3.,.L 3.2.2.2.2.2.2.5.} ' 5.2.2.2.", -"2.2.4. .@ 3.3.>._ 8 r 3.6.{ { 6.2.2.2.2.2.2.5.P =.3.4.o.j Z 5.3.,.L 5.2.2.2.2.2.2.5.} ' 5.2.2.2.", -"2.2.4. .@ 2.<.2.5.5.3.1.4.{ ` 5.1.1.1.2.2.1.3.P =.3.2.3.1.3.2.3.-.K 2.<.<.<.2.<.<.4.' ' 5.2.2.2.", -"2.2.6. .$ q.0.0.8.8.0.8.e.$. .8.5.5.5.6.5.5.8.^ <.7.5.5.5.5.5.6.2._ q.0.0.0.0.0.8.w.$. .5.2.2.2.", -"2.2.4.X.X 8 8 8 8 8 8 8 9 1 C .{ { { { { { .C _ { { { { { { } ) < 9 8 8 8 8 8 8 9 1 F 5.2.2.2.", -"2.2.4.X.. 3 3 2 3 3 3 2 6 + 1 $.{ { { { { { .C _ { { { { { { | K . 3 3 3 2 2 2 2 7 O 5 8.2.2.2.", -"2.2.5. .# 2.1.1.2.2.1.<.8.9 7 e.3.5.6.5.6.4.8.^ <.7.5.6.0.7.4.8...$ 3.1.1.3.3.<.,.7.9 7 0.1.2.2.", -"2.2.4. .@ $.$.$._ _ $.X.<.5 5 8.<.2.2.1.1.1.4.P *.3.2.2.{ $.2.5.} + %.#.%._ _ %.#.,.3 7 0.<.2.2.", -"2.2.5. .+ =.$.$.3 ; -.$.1.5 5 8.<.2.2.2.2.2.6.P >.2.5.C - I 6.4.} + *.%.&.2 > ,...1.4 6 0.<.2.3.", -"2.2.5. .@ *.$.*.$.4 :.$.2.5 5 0.1.2.2.2.2.2.4.P >.3.2.= 7 r 2.5.} + *.$.&...5 ,.#.1.3 7 0.<.2.2.", -"2.2.6. .+ $.$.*.H = { $.<.5 5 0.1.2.2.2.2.2.5.P -.3.3.5 H , <.6.} @ *.%.*.G = } %.<.3 7 0.1.2.2.", -"2.2.5. .# $.$.$.w 2 G $.<.5 5 0.1.2.2.2.3.1.5.P -.2.4.$.8 { 3.4.} @ &.%.%.w 2 H &.<.5 7 0.<.3.2.", -"2.2.6. .+ -.$.$.:.<.-.$.2.5 5 8.<.2.2.2.2.1.5.P -.3.2.3.8.4.2.5.} + %.%.%.:.<.*.X.1.3 6 0.1.2.2.", -"2.2.4. .@ -.*.*.$.*.=.&.3.7 6 w.4.4.5.4.5.4.8.^ ,.5.5.5.3.4.5.7...+ -.-.=.*.&.*.&.3.6 6 0.1.2.2.", -"2.2.4.$. @ @ @ @ # @ @ # . . % # # # % $ $ % O # # # # $ $ # % + # + @ @ @ @ + % = 6.1.2.2.", -"2.2.4. .O ^ ^ I P P I I ( S C ) I I I I I I ^ q J ^ I I P P P ( A O ( P ^ P P I I ) A H 6.1.2.2.", -"2.2.6. .@ :.-.:.-.2.:.*.<._ ( 1.*.*.;.2.:.*.1.H X.:.:.*.2.1.*.<._ @ ,.-.;.1.1.:.*.1.) ) 6.2.2.2.", -"2.2.5. .+ $.$.$.$.n ] &.=.^ P *.X.=.] n $.$.*.F | &.$.-.A A *.*.^ + &.%. .B N ] %.*.P ( 6.1.2.2.", -"2.2.6. .@ $.$.:.Y t W ;.*.( P -.$.&.f u $.$.-.F .&.*.' % 6 :.*.( + &.%.@.b y M ;.*.^ ( 5.1.2.2.", -"2.2.4. .@ $.-.] a b N ;.*.( P -.;.M f f / &.*.F | %.-.- 8 1 %.-.( + *.$.*.@.k m ;.*.^ ( 6.2.2.2.", -"2.2.5. .@ $.=.[ v i d &.*.( P *.=.R x t Y =.*.F .&.$.q < + } :.^ + *.&.[ n k B ;.*.I ( 5.2.2.2.", -"2.2.5. .@ $.$.$.;.X.$.$.*.^ P -.$.=.;.@.*.$.*.F .$.$.:.*.} $.*.( @ &.%.%.~ Q *.%.*.I ( 5.2.2.2.", -"2.2.5. .@ :.:.:.-.:.:.=.<._ ^ :.*.$.$.*.*.$.:.H $.,.-.*.>.,.:.1._ @ *.&.&.:.*.&.%.:.( _ 6.1.2.2.", -"2.2.4. .O I P P P P L L ^ C G $.| . . . .| X.e H I L L P L L ^ e + .. .| . . . .%.G F 5.2.2.2.", -"2.2.4.$.. @ @ # # @ @ # % . - K F F F F F F H + o # # @ # # @ $ O o H F F F F F D L - & 7.2.2.2.", -"2.2.3.1.$.5.5.4.4.4.4.4.5.,.-.4.3.4.3.3.3.3.3.*.2.5.4.4.4.4.4.5.2.&.4.3.4.3.4.3.3.5.,.:.3.2.2.2.", -"2.2.2.2.4.2.2.2.2.2.2.2.2.3.4.2.2.2.2.2.2.2.2.4.2.2.2.2.2.2.2.2.2.4.2.2.2.2.2.2.2.2.2.4.2.2.2.2.", -"2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.", -"3.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.3.2.2.2.2.2.3.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2." +"UUTUUUUUUUUUUYUTUUUUUUUUUUUYUUUYUYUYUUYUUUYUYUUY", +"UUUUUYUYUUYUTUYUUYUYYUYUUYUUTUTUUUUUUTUYTUUUUUTU", +"YUUURUUUUUUUUUYUUUUUUUURUUUUUUUUURUUUUUUUUYUUTUY", +"UTYUGRERERRRRYTRRRERERRGURRRRRRRYGRERWRRRWYTYUUU", +"YURSollkkkkkzpizkklkkkzOX++OOOO+O +++@+++@o-WUUT", +"UYRSOLHHKGHHUczUHKKKHGLazvccccxZaollkskksx$=WUUU", +"UUES+RYTU!RTRSvWYYYYYTElUWRWQQE!DOKKHTUHKR==!UUU", +"YURS+YUTUiFYRZcWUUUUTURlHYUHbMURSOGDD;iGDK*=!UUU", +"UUWSOYUWa xWRScRUUUTUURkKYE03MRRvOGDG=+GDL*=!UUU", +"UURS+UEc%#aWRvcEUUYUUURlHRR1e5LWSOGDKv$KDP*=!UUT", +"UUES+TRS=X-RRScEUUUUTURlHYEe97UWvOGFG*.sGK*=!UYU", +"UYRS+YUY!DUYRZcWUUUUUURkHYUUBLTRvOGDDkszDU*=!LUU", +"YUWS+RYYURYTWScWUYYYYTWlKRYYERYWSOLKHPUUGR==!UUU", +"UURSOKKKKKKKUxxUKKKKKKUsDKKKKKHUcolllkklkx$=WUUY", +"UURSollklkkkliilkllklkl;slkkklklao++++++++X;WUTU", +"UUWS+RRRYRRRWDv!YRERRRWzKWRRRRRRUzWRRRRRR!SvWUUU", +"YURSOUUUYEUURvcRUUUUUUYkGYUTUUUUKkYUUUUUURvcWUUU", +"UUES+YUED+vRRZvWUUUUUURlKYRA0bTTKkRUUUUUURvvRUUU", +"UUWSOYUYioxWRScRUUUUUURlHYE55nTTKkYUUUUTURZvWUUY", +"YURS+YWl@O;WRvcEUUUUUURkHYT2y2LYKkRUUTUUUEvvWUUU", +"UURS+TYGx$aWRSxWUUUUUURlHYRM7fTUKkRUUUUUURvcWUUU", +"UURS+YUURRYURcxWPUUUUURlGTURUYUYKkUUUULPPRvcRUYU", +"UUWS+!!!!!!W!FS!RRRERR!zUWWREREWUz!!!!!!W!GSRUUU", +"YYRSX=-====--&iScvZvvcSixvcvvvvZx%--==-==;%aWYYU", +"UURD.*&**&*&=O&DcvvcvcSizSvvvvvSs.**&&*&&=o*WUTU", +"UUWSOYKUYYUKW-=!RRWRWR!zUWRE!WR!S+RUUYTUK!-=!UUU", +"TURSODDDzxDSK**!UUUUUURkGYUYvSURZOFDDlxDDK&=!UUY", +"UURSOGDG%+GDU==!LUUUUUEkGYWi#sYRvOGFF%+GDU*=!UUU", +"YURSOGDGc#KDP=*!UUUUUURkHYRO%;URSOGDKx#KDL*=!KUT", +"UURSODDGioxGL=*!UUUUUURlKYW$=+KWvOGDGioxDU*=!UYU", +"TURSODGD;&aGP*=!UTUUUURlGYRD-xYEvOGGD;&sGP*=!UUY", +"UURSOGGDKLHDU**!LUUUUURkKYYRWRURvOGDFKLKSK*=!UUU", +"UURSOHGGGGGFR==!TRRRERWlUWRRYYR!SOKGGFGGGT==!UUU", +"YURD O+OOOOO+..@+++++++oO+++++++O +O+OOOO+ #EUUU", +"UURSozllllllxppzllklllz;slllkklzpozllllllzpaRUUU", +"UUWSOKHKHIKHPxzUHHKTKGUsDKKGUUKLx+KGHPIKHUxxWUUU", +"YURSOGDFDrCFGzkGDFxtFDGaSGDGiaGGlOGDDurZDGzzWUUY", +"UUWSOGDJd:jGGzlHFF5mGGaSGS;++DHzOGFCw2uJKzzEUUU", +"YUWSOGDFPVDDGllHDJGVGDJaSGDKDvGGzOGFDmNGDHlzEUUU", +"UUESOKKGGJKGUxzKGDFJGFHsDKKGKKGUxOHGGJJGGKzxWUUU", +"UURSolkkkkkklpsDSSSSSZDisllkkkkliOSSSSSSSDsaWUYU", +"YURD O++++OO+.$saaaaaasoo+O+OO++oXaaaaaaas$@WUUU", +"UYUUGRRYRRRYEKKEYYRRRYRGURYRRRRRYGRYYRRYRRKKYUUT", +"UUUURUUUUUUUUYYUUUUUUUURUUUUUUUUYRUUUUUUUUYYUUUU", +"UUUYUUUUTUUYYUUYUTUYUUUUUUTUUUTUTUUUUUTUUTUUUYYU", +"YTUUTUYUYUTUUUUUYUUUTUUYUTUUUYUUUUUYYUUUUUYUUUTU" }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/filling.sav sgt-puzzles-20160429.b31155b/icons/filling.sav --- sgt-puzzles-20140928.r10274/icons/filling.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/filling.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,38 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :7:Filling +PARAMS :3:7x7 +CPARAMS :3:7x7 +SEED :15:279172739852696 +DESC :49:0000000031051240010004000001106171000400001013105 +NSTATES :2:30 +STATEPOS:2:13 +MOVE :4:38_3 +MOVE :4:39_3 +MOVE :4:36_4 +MOVE :4:43_4 +MOVE :4:35_4 +MOVE :4:47_5 +MOVE :4:40_5 +MOVE :4:34_5 +MOVE :4:41_5 +MOVE :4:25_7 +MOVE :4:23_6 +MOVE :4:16_6 +MOVE :4:18_7 +MOVE :4:19_7 +MOVE :4:20_7 +MOVE :4:26_7 +MOVE :4:24_7 +MOVE :4:29_6 +MOVE :4:22_6 +MOVE :4:15_6 +MOVE :3:7_4 +MOVE :3:0_4 +MOVE :3:1_3 +MOVE :3:2_3 +MOVE :3:6_2 +MOVE :3:5_5 +MOVE :3:4_5 +MOVE :3:3_5 +MOVE :4:10_5 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/filling-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/filling-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flip-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flip-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flip-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flip-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flip-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flip-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flip-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flip-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flip-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flip-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flip-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flip-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flip-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flip-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flip-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flip-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flip-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flip-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flip-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flip-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flip-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flip-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flip-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flip-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flip.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flip.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/flip-icon.c sgt-puzzles-20160429.b31155b/icons/flip-icon.c --- sgt-puzzles-20140928.r10274/icons/flip-icon.c 2014-09-29 00:33:40.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/flip-icon.c 2016-04-29 00:31:42.000000000 +0000 @@ -1,418 +1,886 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 164 2 ", -" c #92908D", -". c #8D8B88", -"X c #8D8B89", -"o c #8C8A87", -"O c #918F8C", -"+ c #999794", -"@ c #9A9895", -"# c #A4A29E", -"$ c #9E9C98", -"% c #969491", -"& c #9D9B99", -"* c #9B9A97", -"= c #9C9A98", -"- c #9C9A97", -"; c #94928F", -": c #545251", -"> c #4C4B4A", -", c #4E4D4C", -"< c #454443", -"1 c #7E7D7B", -"2 c #E2DFDA", -"3 c #D2D0CB", -"4 c #A8A6A3", -"5 c #6D6C69", -"6 c #CFCECC", -"7 c gray100", -"8 c #F8F8F8", -"9 c #FAFAF9", -"0 c #F0EFEF", -"q c #4E4D4B", -"w c #5C5B59", -"e c #3E3D3C", -"r c #807F7C", -"t c #D8D6D1", -"y c #706E6C", -"u c #484746", -"i c #696765", -"p c #F2F1EF", -"a c #E6E5E5", -"s c #FBFBFB", -"d c #F9F8F8", -"f c #767472", -"g c #434241", -"h c #8A8986", -"j c #9F9D9A", -"k c #525150", -"l c #5C5B5A", -"z c #ACAAA6", -"x c #F2F2F0", -"c c gray98", -"v c #C4C3C1", -"b c #F3F3F3", -"n c #3E3D3D", -"m c #373635", -"M c #73716F", -"N c #61605E", -"B c #5A5958", -"V c #9E9C99", -"C c #DCDAD4", -"Z c #EDECEA", -"A c gray97", -"S c #7F7E7B", -"D c #7D7C79", -"F c #7B7976", -"G c #797775", -"H c #858482", -"J c #A9A8A4", -"K c #DBD9D4", -"L c #EBE8E3", -"P c #C3C1BD", -"I c #CFCDCB", -"U c #EFEEEC", -"Y c #F3F2F0", -"T c #CECDCC", -"R c #DFDDD8", -"E c #E6E4DF", -"W c #EEEDEA", -"Q c #FCFCFB", -"! c #DCDBD7", -"~ c #E4E1DC", -"^ c #BFBEBA", -"/ c #595857", -"( c #C4C2BD", -") c #ABA9A5", -"_ c #6E6C6A", -"` c #D3D1CD", -"' c #DAD9D8", -"] c #D7D6D6", -"[ c #EEEEED", -"{ c #D6D4CF", -"} c #BEBCB8", -"| c #62605F", -" . c #EBE9E3", -".. c #9D9B98", -"X. c #5B5A59", -"o. c #424140", -"O. c #979592", -"+. c #DAD8D5", -"@. c gray93", -"#. c #D1D0CF", -"$. c #DEDCD7", -"%. c #807F7D", -"&. c #62615F", -"*. c #C0BEBA", -"=. c #DCDAD5", -"-. c #545352", -";. c #6D6C6A", -":. c #D5D3CE", -">. c #EAE9E7", -",. c #FBFAF9", -"<. c #E6E5E1", -"1. c #E9E7E2", -"2. c #CBC9C5", -"3. c #82807E", -"4. c #BFBDB9", -"5. c #E4E2DD", -"6. c #A19F9C", -"7. c #545351", -"8. c #93918E", -"9. c #CDCBC6", -"0. c #D6D4CE", -"q. c #989693", -"w. c #908E8C", -"e. c #7C7B79", -"r. c #797875", -"t. c #7D7B79", -"y. c #7B7A77", -"u. c #8E8D8A", -"i. c #CCCAC5", -"p. c #D5D4D0", -"a. c #C6C5C3", -"s. c #E7E6E5", -"d. c #F6F5F3", -"f. c #E3E2E0", -"g. c #9B9996", -"h. c #464544", -"j. c #3F3E3E", -"k. c #343333", -"l. c #E9E7E1", -"z. c #DAD8D6", -"x. c #F2F2F1", -"c. c #F0EFEE", -"v. c #E6E6E4", -"b. c #FAF9F9", -"n. c #454444", -"m. c #E7E5E1", -"M. c #D9D9D8", -"N. c #E0DFDC", -"B. c #E7E6E3", -"V. c gray99", -"C. c #F9F9F9", -"Z. c #F9F8F7", -"A. c #DDDCDB", -"S. c #D9D7D2", -"D. c #EBEAE8", -"F. c #E6E6E5", -"G. c #464543", -"H. c #7D7B7A", -"J. c #D4D1CC", -"K. c #E4E3E1", -"L. c #FAFAFB", -"P. c #908E8B", -"I. c #9A9896", -"U. c #9C9B98", +"16 16 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , < 1 2 3 4 5 6 7 8 9 0 - ", -". > q w e r t y u i p 7 a s d - ", -"X , w f g h j k l z x c v b 8 * ", -"o < n < m M N B V C Z 7 c 7 A = ", -"O S D F G H J K L P I U Y Y T % ", -"@ R E W Q ! ~ ^ D / ( K ) i _ $ ", -"+ ` ' ] [ { } | > 1 ...X.o.J # ", -"O.+.@.#.+.$.%.> &.*.=.l -.;.:.@ ", -"% >.,.<.1.2./ 3.4.5.6.7.8.9.0.q.", -"w.e.r.t.y.u.i.$.t p.a.s.d.U f.g.", -"o h.j.< k.y.l.z.x.c.v.7 b.7 A = ", -"X , w f n.t.m.#.M.N.B.V.v b C.- ", -". > q w j.r.Z.@.A.S.D.7 F.s d - ", -". : > , G.H.D.+.{ J.K.L.C.9 0 - ", -" . . X o P.% O.@ + I.U.* = - ; " +"A.N.N.N.M.Z.L.L.~.Y.F.U.P.I.P.D.", +"N.] ~ ( Y d.nXiX`.5.7XUXHXJXVXP.", +"N.~ / O.G g.gX7.E <.DXUXzXKXHXP.", +"N.( O.e.P n.R.` O.[.FXJX>XAXGXP.", +"M.Y H Y V 0.%...U.zXVXUXJXUXGXI.", +"Z.f.s.p.y.l._.jXSX3X0XCXFXFX7XF.", +"L.cXBXAXPXhXNX,Xd.X.3XlX[.1.5.Y.", +"L.pXpXrXBXdX:X&.~ d.SXY.o.L _.~.", +"J.dXMX8XsXcXg.~ &.,XkX+.] 3.aXL.", +"H.mXIXMXAX0X..g.;XNXQ.[ S.wXdXJ.", +"C.p.u.s.i.V.0XcXgXiX,XvXJXZXzXL.", +"M.T J Y M i.AXdXZXCXvXUXHXUXGXI.", +"N.( O.e.Y s.MX8XyXzXbXLX>XAXHXP.", +"N.~ / O.J u.LXmXdXhXNXUXxXKXHXP.", +"N.] ~ ( T p.MXfXsXaXzXJXJXJXVXP.", +"A.N.N.N.M.C.H.J.L.K.L.I.P.I.P.D." }; /* XPM */ static const char *const xpm_icon_1[] = { /* columns rows colors chars-per-pixel */ -"32 32 66 1 ", -" c #3D3C3B", -". c #403F3F", -"X c #41403F", -"o c #444342", -"O c #484746", -"+ c #494847", -"@ c #4C4B4A", -"# c #504F4E", -"$ c #52514F", -"% c #555452", -"& c #585755", -"* c #595857", -"= c #5D5B5A", -"- c #605F5D", -"; c #646361", -": c #686765", -"> c #6A6967", -", c #6C6B69", -"< c #72716E", -"1 c #757371", -"2 c #7A7876", -"3 c #7D7B78", -"4 c #817F7D", -"5 c #83817F", -"6 c #868481", -"7 c #888684", -"8 c #8B8986", -"9 c #8D8B88", -"0 c #908E8B", -"q c #93918E", -"w c #959390", -"e c #999794", -"r c #9A9896", -"t c #9D9B98", -"y c #A19F9B", -"u c #A3A19E", -"i c #A6A5A2", -"p c #A9A7A4", -"a c #ACAAA6", -"s c #AFAEAA", -"d c #B0AFAB", -"f c #B2B0AD", -"g c #B6B5B1", -"h c #B8B6B2", -"j c #BAB8B4", -"k c #C1BFBB", -"l c #C3C0BC", -"z c #C6C3C1", -"x c #C9C7C3", -"c c #CDCBC6", -"v c #CECDCA", -"b c #D0CEC9", -"n c #D4D2CE", -"m c #D6D4D1", -"M c #D9D7D2", -"N c #DCDAD5", -"B c #DEDDDB", -"V c #E1DFDA", -"C c #E4E2DD", -"Z c #E5E4E2", -"A c #E9E7E4", -"S c #EAE9E7", -"D c #EBEBEA", -"F c #F0F0EF", -"G c #F3F3F3", -"H c #FDFDFD", +"32 32 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"X+zHHHHHHHHHt0", -"w9@+O+%@O+XfCm7=+XX5VHHHHDHHHHr0", -"w9@O@&;=@@XdDpX-;%XjNHHHZMGHHHt0", -"w9@O%;w>*+XfA<%65*,VmHHAv0FHHHt0", -"w9@+@=>=@@Xjl+%>>XuCnHHHBvGHHHt0", -"w9@+o@&@O+.jq o+%1nVmHHHGDHHHHr9", -"w9@+@@O@@@Oi& =9lCNMmHHHHHHHHHt0", -"w9oXo.XoXoo<:ubCNmmVNHHHHHHHHHt0", -"qwsfddffappanmbxbMbitmMmmmNBzewq", -"0rVCCCBNZHSbBMCCbu>oiVNNCBg6Oo ohy0", -"0eMMBGSFHDbbCl+#%#XuMnC1o&$o>Ne0", -"0rMMCBpmGBmcC8#32&&nbNk$:6% uCw0", -"qrmNFNpmAnMbn&%23@9CcC7@:6$$nNe0", -"0rnZHGSGCmMMuX#&#@lCbb&O%$X8Cmr0", -"qrvGHHBmmNMb> X*9lNMMu o@1sMNMe0", -"qqZHZNNCCCApo,umCCNCb=$9kVCNNMe0", -"qqipafffsffwinMbbbccftbVNmnmMnwq", -"w9oooXoXXo fAnmMnbnZvHHHHHHHHHt9", -"q9@@@+++@@XfCNmmBFHFbHHHHHHHHHt0", -"w9@Oo@*@O@XsZvZDFHHBvHHHGSHHHHt0", -"w9@O@=>=@@odCmGMnGGnmHHHZvGHHHt9", -"q9@O%;w>&O.fNBSppABMmHHSv0GHHHt0", -"w9@O@&;=@OodNGGNBGnNmHHHZMGHHHt0", -"w9@@O@%@O+oaZHHGZBmBmHHHGFHHHHt0", -"w9@OOOOOOOopHHZNmMBNmHHHHHHHHHt0", -"q8#@@@@@@#opCbnMMMMMbHHHHHHHHGt0", -"qq999989999qqerrerreettrrtttttwq", -"qqqwwwwwwwqq00q000000000000900qq" +"S.S.F.F.F.F.F.F.F.F.F.A.Z.Z.Z.Z.Z.Z.V.C.S.Z.Z.Z.Z.Z.Z.Z.Z.Z.S.S.", +"S.A.M.M.M.M.M.M.M.M.M.G.P.L.L.K.J.K.W.E.D.I.I.I.I.I.I.I.I.I.D.S.", +"F.M.( ! ~ ~ ^ ~ ~ / Y |.bXfXfXlXmXkX$X0.J.UXJXKXKXJXKXKXLXFXI.Z.", +"F.M.! R W E T E W Q L .XBXlXVXuXW.1.U Q 2XUXUXUXUXUXUXUXUXKXI.Z.", +"F.M.~ W E Q { ~ R ! P XNXdXb.+.W P K k.zXJXUXUXHXMXKXUXUXKXI.Z.", +"F.M.~ E Q .=.o.! Q P }.GX`.L #.=.' T *XjXJXUXLXkXyXZXUXUXKXI.Z.", +"F.M.^ T { =.D.1.| W P |.ZXq.{ z.z.{ 4.xXpXKXUXbX7XC.CXUXUXKXI.Z.", +"F.M.~ E ~ o.1.#.^ Q L @X8XE ] <.>.U Q.VXuXLXUXHXfX7XZXUXUXKXI.Z.", +"F.M.~ W R ! | ^ R ! K *XD.J Y Q ] q.aXxXpXLXUXUXFXbXJXUXUXKXI.Z.", +"F.M./ Q ! Q W Q ! ! T )...D ..n..z.[ G Q.mXJ.Z.", +"Z.L.gXdXVXpX/.tXxXaXhXyXpX..} u.a.( m.VX0XmXn.Q <.x._ ` pXkXK.Z.", +"Z.P.iXcXUXSXcXCXlXfXgXgX^.K / } ( ! c #696766", -", c #6A6967", -"< c #6C6B69", -"1 c #716F6C", -"2 c #71706E", -"3 c #767472", -"4 c #7A7876", -"5 c #807E7B", -"6 c #83817F", -"7 c #868482", -"8 c #888683", -"9 c #8B8986", -"0 c #8D8B89", -"q c #908E8B", -"w c #93918E", -"e c #959390", -"r c #999794", -"t c #9B9996", -"y c #9F9D9A", -"u c #A19F9B", -"i c #A3A19E", -"p c #A6A4A1", -"a c #A8A6A3", -"s c #ABA9A5", -"d c #AEACA9", -"f c #B0AEAA", -"g c #B4B2AE", -"h c #B6B4B0", -"j c #B9B7B3", -"k c #BCBAB6", -"l c #BEBDB9", -"z c #C1BFBC", -"x c #C4C2BE", -"c c #C5C3C2", -"v c #C8C6C2", -"b c #CBC9C6", -"n c #CECCC9", -"m c #D1CFCB", -"M c #D4D2CE", -"N c #D6D4D1", -"B c #D9D7D3", -"V c #DCDAD5", -"C c #DDDCDA", -"Z c #E0DED9", -"A c #E4E2DD", -"S c #E3E3E2", -"D c #E8E7E7", -"F c #E9E9E7", -"G c #EBEBEB", -"H c #F0EFEF", -"J c #F0F0EF", -"K c #F4F4F4", -"L c #F8F7F7", -"P c #FEFEFE", +"48 48 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"<<;*XiAnLPPLSnbBPPPPPy0ew", -"wwe9@+O*&$=O+%bVtqww", -"wwqrBCmSDb9cSGCNBxZZ2*=99=;+xAxMAd$=1t:Oo4ABtwww", -"qeqtVMVJAb9cSSmVBvAxX;;69=*1ZZxBA3@=2t,OOjABtqww", -"wwqtVmGPKBJVPSmCMxA6X#====XsAVxVv@+#;%; >VVBtqww", -"weqtBmPPPFAFLnVCMmM%X##;*X>MVVxAw +O*=$OpAVBtqww", -"wqqymSPPPPFMbBVVMmpX#XXX3sMVVZbm=O+oo=0vVBVBtwww", -"wwqtbLPLZnnMVVVVMv<.X*6xZAVVVVMiXX+1aNAAVVVVtqww", -"wwwwCLCNVAAAZAAAAiXX0.5XUXPXUXUXPXY.C.D.S.", +"S.S.F.m.! W E ) +.3.7.3.+._ E Q I .XFX~.L o.*.8.8.;.` b.NXlXwXJXUXUXAXhX4X;XiXUXIXUXUXPXY.C.D.S.", +"S.S.F.m.! E W W U O.{ +.U E W Q I oXBX2.P T _ +.O.Q L XkXMXfXdXgX8XxXcX7.X.O.M.M.X.%.W ;XNX7XsXBX{.] O.8.K.,.T L d.MXhXP.Z.S.S.", +"S.S.Z.P.kXfXsXBXjX2Xm.>XzXjXtXxXdX7XNX;XQ %.X.M.M.O.X.7.xXxX8XsXMXw.) +.7.K.,.U E @XMXgXP.Z.S.S.", +"S.S.Z.P.zXeXmXUXDXuXCXyXPXjXuXvXdX7XVXc.J / o.X.O.@.P ).MXzX7XlX5X^ W _ *.] %.H >.lXzXjXP.Z.S.S.", +"S.S.Z.I.hXeXIXIXUXcXdXvXHX0XlXxXdXqXiX} T E / %.X.P -.sXzXxX6XvXA.K ~ T o.#._ U (.MXkXjXP.Z.S.S.", +"S.S.Z.Y.tXkXUXIXUXPXbXuX0XgXzXzXaXiX!.P ^ T J W 6.(.aXxXkXxX0XtX#.R Q P L X.m.1XxXkXzXjXP.Z.S.S.", +"S.S.Z.U.8XHXUXSXfX0XwXdXzXkXjXkXsX0X2.D L { x.-XxXNXzXkXkXlXuX^.K L E 3.^.iXNXbXkXkXlXjXP.Z.S.S.", +"S.S.A.F.gXJXhXpXkXMXVXNXMXMXMXMXVXE.W 1.Q.uXVXNXxXzXxXxXxXMXeX=._ c.-XvXVXvXlXzXxXxXcXlXI.Z.S.S.", +"S.S.S.A.Q.(.}.@X@XoXoXoXOXOXoXoX+XA.E.9XiXwX7X7X8X8X9XqX9X4X{.Z.:XaXpXwX0XqXwXwXwXwXeXqXL.Z.S.S.", +"S.S.F.m.T Y Y I I I I I I I U Y G +XVXsXaXdXdXdXgXhXaX0X6XuX$XKXIXGXGXHXJXJXJXJXJXHXJXFXY.C.D.S.", +"S.S.F.m.~ W Q Q Q Q ! Q Q Q Q ! Y oXMXkXzXzXvXxXdXrXyXvXUXCXXuXcXLXqXcXwXJXUXUXAXhX4X;XiXUXIXUXUXPXY.C.D.S.", +"S.S.F.m.! W T .| 3.'.7.{ X.T ! I oXVXeXcXdXCXm.m.CXdXxXtXbXwXJXUXUXzXmX>X0.5XUXPXUXUXPXY.C.D.S.", +"S.S.F.m.! W E ( O.2.3.3.O.) E Q I oXNX9XPXbXuX2X2XyXnXyXgXcXwXJXUXUXSXjX5X2XpXUXIXUXUXPXY.C.D.S.", +"S.S.F.m.! E W W I O.| +.U E W Q I @XkXsXUXUXZXjXlXFXZXqXxXzXwXJXUXUXIXUXgXbXhXUXIXUXUXPXY.C.D.S.", +"S.S.F.m.! E W W W ( .) W W W Q I @XpXZXUXIXUXVXlXhX9XhXlXxXwXJXUXUXIXUXDXcXFXUXUXUXUXPXY.C.D.S.", +"S.S.F.m.! W W W W E T E W W W Q Y |.fXUXUXIXBXdXrXiXlXzXkXxXwXHXUXUXUXUXUXUXUXUXUXIXUXLXY.C.D.S.", +"S.S.F.n.Q E W E E W W W E E W W Y (.HXLXzXrXeXfXxXcXzXlXlXcXeXHXUXUXUXUXUXUXUXUXUXUXUXPXY.C.D.S.", +"S.S.F.m.^ Q ! ! ! ! ! ! ! ! ! ~ T W.jX8XtXhXzXkXjXjXjXjXjXlXqXFXIXLXPXPXPXPXPXPXPXLXPXJXY.C.D.S.", +"S.S.S.A.m.n.m.m.m.m.m.m.m.m.m.m.m.A.F.U.Y.I.P.P.P.P.P.P.P.I.L.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.D.S.S.S.", +"S.S.S.S.F.F.F.F.F.F.F.F.F.F.F.F.F.S.A.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.C.C.C.C.C.C.C.C.C.C.C.C.C.S.S.S.S.", +"S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.D.D.D.D.D.D.D.D.D.D.D.D.D.S.S.S.S.", +"S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S." }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/flip.sav sgt-puzzles-20160429.b31155b/icons/flip.sav --- sgt-puzzles-20140928.r10274/icons/flip.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/flip.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,20 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :4:Flip +PARAMS :4:5x5c +CPARAMS :4:5x5c +SEED :15:158897339725978 +DESC :165:c400007100001c4000071000018400043100011c400047100011c400046100010c400047100011c4000471000118400043100011c400047100011c400046100010c000047000011c0000470000118,5c18b48 +NSTATES :2:12 +STATEPOS:1:4 +MOVE :4:M4,3 +MOVE :4:M3,0 +MOVE :4:M2,2 +MOVE :4:M3,2 +MOVE :4:M2,3 +MOVE :4:M0,2 +MOVE :4:M0,3 +MOVE :4:M1,4 +MOVE :4:M0,0 +MOVE :4:M1,0 +MOVE :4:M1,1 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flip-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flip-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flood-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flood-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flood-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flood-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flood-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flood-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flood-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flood-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flood-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flood-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flood-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flood-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flood-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flood-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flood-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flood-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flood-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flood-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flood-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flood-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flood-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flood-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flood-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flood-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flood.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flood.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/flood-icon.c sgt-puzzles-20160429.b31155b/icons/flood-icon.c --- sgt-puzzles-20140928.r10274/icons/flood-icon.c 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/flood-icon.c 2016-04-29 00:31:42.000000000 +0000 @@ -0,0 +1,719 @@ +/* XPM */ +static const char *const xpm_icon_0[] = { +/* columns rows colors chars-per-pixel */ +"16 16 240 2 ", +" c #D5D5D5", +". c #D0CFC9", +"X c #CFCEC4", +"o c #CFCEC5", +"O c #CFCEC5", +"+ c #CFCEC5", +"@ c #CFCEC5", +"# c #CFCEC5", +"$ c #CFCEC5", +"% c #D0CEC4", +"& c #C9CCCF", +"* c #C3CBD2", +"= c #CCCAD2", +"- c #D3C3D2", +"; c #D2C9D2", +": c #D5D6D5", +"> c #5663BC", +", c #4153DA", +"< c #4657D4", +"1 c #4557D6", +"2 c #4657D4", +"3 c #4958D1", +"4 c #4857D2", +"5 c #4758D4", +"6 c #3B53DA", +"7 c #9B694A", +"8 c #E9781D", +"9 c #739029", +"0 c #0DDB1D", +"q c #47C046", +"w c #D8CFD8", +"e c #CFCEC5", +"r c #4254D5", +"t c #2945FF", +"y c #2F49FD", +"u c #2F49FF", +"i c #2C49FF", +"p c #1E45FF", +"a c #2145FF", +"s c #314BFE", +"d c #2043FF", +"f c #AE6836", +"g c #FF8000", +"h c #74A005", +"j c green", +"k c #2DDC29", +"l c #D9CBD9", +"z c #4657D4", +"x c #2F49FF", +"c c #364DF7", +"v c #334DFF", +"b c #4349C8", +"n c #8D585A", +"m c #7D536A", +"M c #3549EB", +"N c #2F4BFF", +"B c #5E4E92", +"V c #885471", +"C c #476277", +"Z c #0C8870", +"A c #3E877B", +"S c #D7D2D3", +"D c #4557D5", +"F c #2F49FF", +"G c #334DFA", +"H c #2149FF", +"J c #504EA9", +"K c #FF8E00", +"L c #E37F0B", +"P c #3447E2", +"I c #334DFF", +"U c #2B4AFD", +"Y c #2349FF", +"T c #2D4AFE", +"R c #283FFF", +"E c #4A5ADE", +"W c #D6D5CB", +"Q c #4349C8", +"! c #544EAE", +"~ c #654474", +"^ c #E05300", +"/ c #C34D0D", +"( c #3345E1", +") c #324DFF", +"_ c #364BF7", +"` c #354EFF", +"' c #4041CB", +"] c #522E9F", +"[ c #65509F", +"{ c #D4D6D0", +"} c #4858D2", +"| c #1F45FF", +" . c #895964", +".. c #FF8E00", +"X. c #D95505", +"o. c #F80000", +"O. c #E20407", +"+. c #3445E2", +"@. c #3350FF", +"#. c #364CF9", +"$. c #2454FF", +"%. c #7B2677", +"&. c red", +"*. c #DB2A2D", +"=. c #CBD9D9", +"-. c #CFCEC5", +";. c #4858D2", +":. c #2146FF", +">. c #7D536A", +",. c #F37E00", +"<. c #C34D0C", +"1. c #E90000", +"2. c #D30807", +"3. c #323CCC", +"4. c #3045ED", +"5. c #3642DE", +"6. c #2948F2", +"7. c #71246C", +"8. c #F10000", +"9. c #C6302F", +"0. c #CDD8D8", +"q. c #4557D5", +"w. c #2E49FF", +"e. c #3549E9", +"r. c #2D46EE", +"t. c #524698", +"y. c #F07300", +"u. c #D1650B", +"i. c #6F0695", +"p. c #6902B1", +"a. c #AA0828", +"s. c #FB0000", +"d. c #6B5C08", +"f. c #00F500", +"g. c #32C62C", +"h. c #D8CDD8", +"j. c #4557D5", +"k. c #2E49FF", +"l. c #364EFA", +"z. c #2A4CFF", +"x. c #564DA9", +"c. c #FF8400", +"v. c #E57408", +"b. c #7E0497", +"n. c #7800B4", +"m. c #C00423", +"M. c #756404", +"N. c #2DDA29", +"B. c #CFCEC5", +"V. c #4559D3", +"C. c #2D4CFF", +"Z. c #344DF9", +"A. c #324CFF", +"S. c #3949DF", +"D. c #5B4F9F", +"F. c #544CA7", +"G. c #3B35C8", +"H. c #3A29D4", +"J. c #31782E", +"K. c #3BB400", +"L. c #297544", +"P. c #1861B0", +"I. c #41759B", +"U. c #D7D3D0", +"Y. c #CFCFC5", +"T. c #484ED5", +"R. c #323BFF", +"E. c #3649FD", +"W. c #344DFF", +"Q. c #2F4BFF", +"!. c #1C3EFF", +"~. c #2041FF", +"^. c #3054FE", +"/. c #3243FF", +"(. c #0BB63A", +"). c #198A67", +"_. c #3824FF", +"`. c #5155DA", +"'. c #D6D6CB", +"]. c #D1CBCC", +"[. c #348078", +"{. c #118B6D", +"}. c #285FB3", +"|. c #3347FF", +" X c #3F54CD", +".X c #818A6A", +"XX c #737D79", +"oX c #354CEB", +"OX c #3044FF", +"+X c #4E7D37", +"@X c #71AE00", +"#X c #3A8132", +"$X c #0B8579", +"%X c #3C8B79", +"&X c #D7D2D3", +"*X c #D2C5D2", +"=X c #22D325", +"-X c #188673", +";X c #2733FF", +":X c #5166A5", +">X c yellow", +",X c #E3E40A", +" , < 1 2 3 4 5 6 7 8 9 0 q w ", +"e r t y u i p a s d f g h j k l ", +"o z x c v b n m M N B V C Z A S ", +"O D F G H J K L P I U Y T R E W ", +"+ 2 i Q ! ~ ^ / ( ) _ ` ' ] [ { ", +"@ } | ...X.o.O.+.@.#.$.%.&.*.=.", +"-.;.:.>.,.<.1.2.3.4.5.6.7.8.9.0.", +"O q.w.e.r.t.y.u.i.p.a.s.d.f.g.h.", +"O j.k.l.z.x.c.v.b.n.m.&.M.j N.l ", +"B.V.C.Z.A.S.D.F.G.H.J.K.L.P.I.U.", +"Y.T.R.E.W.Q.!.~.^./.(.j )._.`.'.", +"].[.{.}.|. X.XXXoXOX+X@X#X$X%X&X", +"*X=Xj -X;X:X>X,X c #744C55", +", c #784D54", +"< c #70474C", +"1 c #5F6858", +"2 c #737B55", +"3 c #564165", +"4 c #684964", +"5 c #654563", +"6 c #774E68", +"7 c #4A7B68", +"8 c #71636F", +"9 c #777B68", +"0 c #B60000", +"q c #A70105", +"w c #992300", +"e c #B62B01", +"r c #BE2A00", +"t c #C80207", +"y c #D30101", +"u c #DB0000", +"i c #E00000", +"p c #FE0101", +"a c #F60505", +"s c #AF5900", +"d c #B55902", +"f c #966030", +"g c #A56B31", +"h c #B27431", +"j c #CE6B03", +"k c #C56707", +"l c #D36B00", +"z c #DC6D02", +"x c #D16700", +"c c #D27100", +"v c #DF7300", +"b c #E06C00", +"n c #E06600", +"m c #E97200", +"M c #F67E07", +"N c #FB7D03", +"B c #860146", +"V c #A34242", +"C c #B54243", +"Z c #B77E43", +"A c #A87242", +"S c #05A204", +"D c #02A00C", +"F c #328C32", +"G c #2FA830", +"H c #31A331", +"J c #3BB63B", +"K c #26A226", +"L c #04C302", +"P c #03CA01", +"I c #09C804", +"U c #05C709", +"Y c #01D304", +"T c #01DD01", +"R c #00E401", +"E c #06F706", +"W c #01FE01", +"Q c #118258", +"! c #449E44", +"~ c #42A342", +"^ c #43B543", +"/ c #42BB42", +"( c #619661", +") c #72A772", +"_ c #A7A804", +"` c #BCBC3B", +"' c #F78604", +"] c #FE8302", +"[ c #FF8A00", +"{ c #D3D302", +"} c #C5C60A", +"| c #FEFE02", +" . c #F6F708", +".. c #A2A242", +"X. c #B7B743", +"o. c #3A198E", +"O. c #1E38BB", +"+. c #2335B0", +"@. c #441A9A", +"#. c #6B0093", +"$. c #6E009A", +"%. c #64009E", +"&. c #433D8C", +"*. c #4115A4", +"=. c #7F01AF", +"-. c #7B01BD", +";. c #444B96", +":. c #5E6388", +">. c #414DA4", +",. c #4752A3", +"<. c #4853A3", +"1. c #4151AB", +"2. c #575DA8", +"3. c #555EA3", +"4. c #575FBA", +"5. c #5A66B5", +"6. c #5766BA", +"7. c #2E3FC8", +"8. c #2C3CC6", +"9. c #293FD4", +"0. c #2F3EDE", +"q. c #243ADB", +"w. c #1C39F0", +"e. c #2434E3", +"r. c #263DE0", +"t. c #2E3DE0", +"y. c #2F3DEB", +"u. c #283BFF", +"i. c #7E00C6", +"p. c #2844C6", +"a. c #2D42DB", +"s. c #2941D8", +"d. c #1944FF", +"f. c #2643E0", +"g. c #2C45EB", +"h. c #2446FF", +"j. c #2D47FF", +"k. c #2649FF", +"l. c #2B4AFF", +"z. c #3149F6", +"x. c #3443FF", +"c. c #3840FE", +"v. c #344DFE", +"b. c #384DF8", +"n. c #2652FF", +"m. c #2C51FE", +"M. c #3651FE", +"N. c #3850FC", +"B. c #3450F6", +"V. c #8600AB", +"C. c #8600B7", +"Z. c #8A00C1", +"A. c #D6D4C7", +"S. c #D6D5CC", +"D. c #D7CFD7", +"F. c #DAC7DA", +"G. c #D9CAD9", +"H. c #C7D0DB", +"J. c #C9D1DA", +"K. c #D3D4D3", +"L. c #D9D6D4", +"P. c #D4D9D4", +"I. c #D5D5D9", +"U. c #DDDDDE", +"Y. c #E0DED2", +"T. c #E3DBDE", +"R. c #DCE2DE", +"E. c #E1E0D4", +"W. c #D2D2E4", +"Q. c #D2DBE4", +"!. c #E4D3E4", +"~. c #E1D8E1", +"^. c #D3E4E4", +/* pixels */ +"K.K.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.P.K.L.L.L.P.L.P.P.L.K.K.", +"K.I.S.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.S.J.J.H.J.G.F.F.F.I.K.L.", +"I.S.:.>.<.,.,.,.<.,.,.,.,.<.,.,.,.,.<.1.3 h g g f F G H K ( ~.K.", +"I.A.,.h.j.j.x.j.j.j.j.j.j.j.j.j.j.j.j.h.4 ] N ] b P W W W ^ !.K.", +"I.A.<.j.N.v.v.v.v.v.v.v.v.b.b.b.v.v.b.l.4 N M ] z I W E W ^ !.K.", +"I.A.<.j.v.v.v.v.v.v.v.v.M.v.v.b.v.v.v.k.4 [ ' [ b P W E W ^ !.K.", +"I.A.,.j.v.v.v.v.v.v.v.a.7.7.p.p.z.v.v.l.3 x k j d D Y U P ~ ~.K.", +"I.A.,.j.v.j.v.v.v.v.k.: m z m d 9.v.v.v.g.q.f.r.r.0.t.0.e.2.L.K.", +"I.A.,.j.v.v.j.v.v.v.k.> [ ] [ l 9.v.v.v.v.v.M.v.v.M.M.M.l.5.Y.K.", +"I.A.<.j.v.v.v.v.v.b.l.> ] ' N x 9.v.v.v.v.v.v.v.v.v.b.b.h.5.L.D.", +"I.A.,.j.v.v.v.h.h.l.d.: [ ' [ c 9.v.v.v.v.v.v.v.v.l.n.n.d.6.E.P.", +"I.A.<.j.b.v.s.: , , : . r e r w 9.v.v.v.v.v.v.v.g.+ # # @ 6 R.K.", +"I.A.<.j.b.v.7.v [ ] [ e p p p y 9.M.v.v.v.v.v.v.f.t p a p C ^.K.", +"I.A.<.j.v.M.7.z ] N ' e p p p y 9.v.j.v.v.v.x.v.f.t p a p C ^.S.", +"I.A.,.j.v.M.p.m [ ] [ e p p p y s.M.v.M.v.M.v.M.f.t p p p C ^.D.", +"I.A.,.j.z.M.7.d z x c w y y y 0 +.a.9.9.9.9.s.a.O.q i y y V ^.K.", +"I.A.<.j.v.l.z.9.9.s.q.$ z x z s % $.#.%.X u y u 0 S R Y Y ~ !.S.", +"I.A.<.j.v.v.v.v.M.M.h.> [ ' [ l $.C.C.Z.B p p p i I W W W ^ ~.K.", +"I.A.,.j.v.v.v.v.v.v.k.> ] M ] j %.=.=.i.B p a p u I W E W ^ !.K.", +"I.A.,.j.v.v.v.v.v.v.h.> [ ] [ l #.C.V.-.B p p p i P W E W ^ W.K.", +"I.A.,.j.v.v.v.v.v.v.l.&.< > , : o.@.@.*. O O O o & Q * * 7 T.S.", +"I.A.,.j.v.v.j.v.v.v.v.j.h.k.k.l.m.M.B.x.= W W W T 8.c.x.u.4.Y.K.", +"I.A.<.j.v.v.j.v.v.v.v.v.v.b.v.v.v.v.v.u.= W E W T p.M.B.l.5.Y.K.", +"I.A.<.j.M.M.M.v.v.v.v.v.b.v.b.v.v.v.v.x.= W W W T p.M.N.l.5.L.D.", +"I.S.;.e.f.t.t.v.v.v.v.g.q.r.r.r.v.v.v.x.- R T R S +.y.t.e.2.E.K.", +"P.D.F P U Y D t.M.z.k.1 { } { _ 9.v.z.l.3 l k j s S Y U P ! !.K.", +"P.F.H W W W U 0.M.v.u.2 | | | { 9.v.v.k.4 [ ] ] m Y W W W ^ !.K.", +"P.G.H W E W U t.M.N.d.2 | .| { s.M.b.l.4 [ ' ] v P W E W ^ !.K.", +"P.F.H W E W U q.j.j.u.2 | | | { q.j.z.u.4 N N ] n P W E W ^ !.K.", +"K.D.( J ^ / ! 2.5.5.4.9 ` X.X...3.5.6.6.8 h Z Z A ! / ^ J ) U.K.", +"K.K.T.!.!.W.!.R.L.Y.Y.U.W.W.W.W.Y.Y.P.L.T.Q.Q.Q.Q.!.!.!.!.~.K.K.", +"I.K.K.S.K.K.S.K.K.K.I.K.S.K.K.K.K.P.K.P.K.S.K.K.S.P.K.K.K.K.K.K." +}; + +/* XPM */ +static const char *const xpm_icon_2[] = { +/* columns rows colors chars-per-pixel */ +"48 48 183 2 ", +" c #1E331B", +". c #6C1502", +"X c #77010F", +"o c #5D072B", +"O c #6D113B", +"+ c #70153E", +"@ c #593734", +"# c #6A3930", +"$ c #531A0D", +"% c #214803", +"& c #127412", +"* c #316900", +"= c #347100", +"- c #0A7932", +"; c #0B7731", +": c #2A792C", +"> c #0D5632", +", c #7A4300", +"< c #54433D", +"1 c #6D423A", +"2 c #65423B", +"3 c #744532", +"4 c #744639", +"5 c #654B2C", +"6 c #6D733C", +"7 c #626738", +"8 c #1E2374", +"9 c #383868", +"0 c #52007A", +"q c #483969", +"w c #0A415C", +"e c #17536C", +"r c #52556A", +"t c #9A1D00", +"y c #950400", +"u c #A70900", +"i c #A80401", +"p c #B30202", +"a c #BE0100", +"s c #A21D00", +"d c #830123", +"f c #DC0000", +"g c #D70101", +"h c #E10000", +"j c #ED0000", +"k c #FE0101", +"l c #934901", +"z c #9D5000", +"x c #A75C01", +"c c #AA5C02", +"v c #B25A03", +"b c #B75B02", +"n c #A86001", +"m c #85582B", +"M c #CA6900", +"N c #D16701", +"B c #D96D00", +"V c #DB7400", +"C c #E16101", +"Z c #EC6E01", +"A c #F26700", +"S c #FC7E01", +"D c #FE7400", +"F c #877774", +"G c #9A7070", +"H c #08AA01", +"J c #02AA08", +"K c #01A602", +"L c #01BA01", +"P c #07B500", +"I c #2D842D", +"U c #01C200", +"Y c #00CD00", +"T c #00DC01", +"R c #01E301", +"E c #00EE00", +"W c #03F601", +"Q c #02FE01", +"! c #07FF07", +"~ c #708E70", +"^ c #709570", +"/ c #709A70", +"( c #6B956C", +") c #9C9B03", +"_ c #B2B205", +"` c #A6A603", +"' c #F48301", +"] c #FE8401", +"[ c #FF8B01", +"{ c #F68B00", +"} c #DEDC02", +"| c #E0DF00", +" . c #EDEC01", +".. c #FDFD02", +"X. c #888875", +"o. c #9A8570", +"O. c #9A9A70", +"+. c #9C916E", +"@. c #2A1C8D", +"#. c #162A98", +"$. c #2E208D", +"%. c #302A8D", +"&. c #223AA7", +"*. c #2933A8", +"=. c #243BAA", +"-. c #2838A8", +";. c #2535B2", +":. c #2437BA", +">. c #2838BB", +",. c #1A34A9", +"<. c #5F008F", +"1. c #6A008D", +"2. c #60009C", +"3. c #720191", +"4. c #6A00A6", +"5. c #7F00A4", +"6. c #7F00B1", +"7. c #7000B7", +"8. c #3D4683", +"9. c #374385", +"0. c #747B86", +"q. c #787C9A", +"w. c #767A97", +"e. c #1724C9", +"r. c #1E39D5", +"t. c #1E3BDD", +"y. c #1E34DD", +"u. c #2B34D5", +"i. c #223CDC", +"p. c #2B39D7", +"a. c #283CC9", +"s. c #1239EA", +"d. c #133AFA", +"f. c #122CF7", +"g. c #233BED", +"h. c #2B35E5", +"j. c #233EFE", +"k. c #343BFF", +"l. c #3133E4", +"z. c #7501C0", +"x. c #1E42DC", +"c. c #2243DD", +"v. c #1C40FF", +"b. c #2446FF", +"n. c #244DFF", +"m. c #2D49FF", +"M. c #2943FC", +"N. c #3149F5", +"B. c #3544FF", +"V. c #334CFE", +"C. c #394DFE", +"Z. c #3047F1", +"A. c #3551FF", +"S. c #3952FF", +"D. c #254AF7", +"F. c #8501A7", +"G. c #8201B4", +"H. c #8602BB", +"J. c #8C03C2", +"K. c #818F81", +"L. c #ABB2AB", +"P. c #D2D0C5", +"I. c #D2D1CC", +"U. c #C4CDD5", +"Y. c #CACFD5", +"T. c #D5C5D5", +"R. c #D2CFD2", +"E. c #D4D4D4", +"W. c #D9D7D5", +"Q. c #D5D9D5", +"!. c #D6D6D9", +"~. c #CED1D2", +"^. c #E7E6DF", +"/. c #DFDFEA", +"(. c #E9DFE9", +"). c #E1DFE1", +"_. c #DFE4EA", +"`. c #E7E6E1", +"'. c #E8E7E2", +"]. c #E1E3E9", +"[. c #E9E0E9", +"{. c #E1E9E9", +"}. c #E5E9E7", +/* pixels */ +"E.E.E.E.!.E.W.E.E.Q.E.E.!.E.!.E.Q.E.E.E.E.E.E.E.E.E.W.E.E.E.!.E.E.E.!.E.E.E.Q.E.E.E.E.E.!.E.E.E.", +"E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.W.E.!.E.E.E.!.E.E.E.!.E.E.W.E.E.E.E.E.E.!.E.E.E.!.E.W.E.E.Q.E.", +"E.!.E.W.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.W.W.W.W.W.W.W.Q.Q.Q.E.Q.!.W.E.E.E.", +"E.E.E.E.I.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.~.U.U.U.U.U.Y.T.T.T.T.T.T.E.E.E.E.E.", +"E.E.!.I.r 9.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.9.< m m m m m 5 : I I I I & K.(.E.W.E.", +"E.E.!.P.8.b.m.V.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.V.m.m.m.m.V.v.3 ] S S S ] c T Q Q Q ! W / (.E.E.E.", +"E.W.!.P.8.m.C.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.S.b.3 ] S S S ] x T Q Q Q ! E / (.~.E.E.", +"E.E.W.P.8.m.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.b.3 ] S ] S ] c T Q Q Q Q E / (.~.E.E.", +"!.E.!.P.8.m.V.V.V.V.V.V.V.V.V.V.V.V.N.A.V.V.V.V.V.V.V.V.V.b.3 ] S S S ] x T Q Q Q ! R / (.~.!.E.", +"E.E.!.P.8.m.V.V.V.V.V.V.V.V.V.V.V.A.S.A.V.S.V.C.V.V.V.V.V.b.3 [ ] ] ' [ n T Q Q Q Q W / (.E.E.W.", +"!.E.!.P.8.m.V.V.V.V.V.V.V.m.V.V.V.a.:.:.:.:.:.:.N.V.V.V.V.b.@ M b b b M , K L L L L K ~ [.~.E.E.", +"E.E.!.P.8.V.V.V.m.V.V.V.V.V.V.C.b.@ C N N N V l i.S.V.V.V.V.i.r.r.r.r.r.i.u.u.u.u.p.e.w.'.I.E.E.", +"W.E.!.P.8.m.V.V.V.V.V.V.V.V.V.C.b.1 [ ] ] ] [ v i.V.V.V.V.V.V.S.V.C.S.V.V.S.S.V.S.S.D.w.^.~.E.E.", +"E.E.!.P.8.m.V.V.V.V.V.V.V.V.V.C.b.1 ] ' S S ] v t.V.V.V.V.V.V.V.V.V.V.V.V.V.V.N.V.V.g.q.^.~.E.E.", +"E.E.!.P.8.m.V.V.V.V.V.V.V.V.V.C.b.1 ] S S S ] c t.C.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.S.g.q.`.E.E.E.", +"E.!.!.P.8.m.V.V.V.V.V.V.V.V.V.C.b.1 ] S ] S ] v t.S.V.V.V.V.V.V.V.V.V.V.V.V.C.C.C.C.g.w.`.E.E.E.", +"E.E.!.P.8.m.V.V.V.V.S.b.b.b.b.M.v.2 ] ' ' ' ] n t.S.V.V.V.V.V.V.V.V.V.V.V.n.n.n.n.n.v.w.`.E.E.E.", +"E.E.!.P.8.m.S.V.V.S.a.@ 1 1 1 1 2 $ t t t t s . i.S.V.V.V.V.V.V.V.V.V.S.>.o + O O + O r }.I.E.E.", +"E.E.!.P.8.m.V.V.V.V.:.N [ ] ] ] { t k k k k k p x.V.V.V.V.V.V.V.V.V.V.A.-.h k k k k k G _.E.E.E.", +"!.E.!.P.8.m.V.V.V.S.:.N ] S ] S ' t k k k k k p x.S.V.V.V.m.V.V.N.m.V.A.*.f k k k k j G {.E.W.E.", +"E.E.!.P.8.m.V.V.m.S.:.N ] ] S S ' t k k k k k p x.C.V.V.V.V.V.V.V.V.V.A.*.h k k k k j G }.Q.!.E.", +"E.E.!.P.8.m.V.V.N.S.:.N ] ] S S ' t k k k k k p x.C.V.m.V.V.N.V.V.V.N.V.*.f k k k k j G {.E.E.E.", +"E.!.!.P.8.m.V.V.m.S.:.N [ ] ] ] { t k k k k k p x.S.V.S.A.S.V.S.S.S.V.S.*.h k k k k j G {.I.E.E.", +"E.E.!.P.8.m.V.A.N.S.:.l b v v v c . a p p p a X #.;.;.;.;.;.;.;.;.;.-.>.8 y p p u p u F {.E.E.E.", +"Q.E.!.P.8.m.V.V.V.V.N.t.t.t.t.i.s.@ V M M M V l 0 3.1.1.1.1.X h g g g h y U R T T R Y ^ [.~.E.E.", +"E.E.!.P.8.m.V.V.V.V.V.S.S.S.C.S.n.1 ] ] [ ] [ v 4.J.H.H.H.z.d k k k k k u R Q Q Q ! E / [.E.!.E.", +"!.E.!.P.8.m.V.V.m.V.V.V.V.V.m.C.b.1 ] S ] S ] v 2.H.6.6.G.7.d k k k k k u R Q Q Q Q E / [.I.E.W.", +"E.W.!.P.8.m.V.V.V.V.V.V.V.V.V.V.b.1 ] S ] S ] v 2.G.6.6.G.7.d k k k k k u R Q Q Q ! E / [.~.E.E.", +"W.E.!.P.8.m.V.V.V.V.V.V.V.V.V.V.b.1 ] ' ] S ] v 2.H.6.6.H.7.d k k k k k u R ! Q Q ! E / (.~.E.E.", +"E.E.!.P.8.m.V.V.V.V.V.V.V.V.V.S.b.1 ] S S ] ] v <.G.5.5.F.4.d k k k k k u R Q Q Q Q W / (.~.E.E.", +"E.E.!.P.8.m.V.V.V.m.V.V.V.V.V.V.A.%.q q q q q 9 $.$.$.$.$.@. = * * * = % w e e e e w 0.'.E.E.E.", +"!.E.!.P.8.m.V.V.V.V.V.V.V.V.V.m.A.V.m.m.n.m.m.A.n.A.A.A.A.B.- Q Q Q Q Q J l.C.B.B.B.g.w.`.E.E.E.", +"E.W.!.P.8.m.V.V.V.V.V.V.V.V.V.V.V.V.N.V.C.N.N.V.V.V.V.V.A.k.- Q Q Q W Q J p.A.N.A.A.g.q.^.E.E.E.", +"E.E.!.P.8.m.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.k.- Q Q Q Q Q J l.A.A.V.S.g.q.^.E.E.E.", +"E.E.!.P.8.m.V.N.V.m.N.V.V.V.V.m.V.V.V.N.V.N.V.V.V.V.V.V.A.k.- Q W Q W Q J l.S.N.m.S.s.q.^.E.E.E.", +"!.E.!.P.8.V.S.V.V.S.S.V.V.V.V.V.V.V.A.S.S.A.A.A.V.V.m.V.A.k.- Q Q Q Q Q J h.A.V.S.S.g.q.^.E.E.W.", +"E.E.!.I.9 ,.=.=.&.&.&.Z.V.V.V.V.V.>.-.-.-.-.-.-.N.V.V.V.A.B.> P H H H P & #.=.=.=.=.#.0.`.E.E.E.", +"E.Q.Q.T.: R T R T R K u.A.V.m.S.j.7 .} .| .) y.S.m.V.V.b.# A B C C A l U R T T R Y ^ [.~.E.E.", +"E.!.Q.T.I Q Q Q Q Q L u.V.V.V.S.j.6 .........._ y.S.V.V.V.b.3 [ S ] ] [ x T ! Q Q ! E / [.~.E.E.", +"W.E.Q.T.I Q Q Q Q Q L u.A.V.V.S.j.7 .........._ y.S.V.V.C.b.3 ] S S S ] x T Q Q Q ! E / [.E.E.E.", +"E.E.Q.T.I Q Q Q Q Q L u.S.N.V.S.j.6 .........._ y.S.V.V.S.b.3 ] S S ] ] x T Q Q Q Q E / [.~.E.E.", +"E.E.Q.T.I Q ! ! Q Q L u.S.S.S.S.j.6 .........._ i.S.C.V.S.n.3 ] ] ] ] ] n T ! Q ! ! E / [.E.E.E.", +"Q.E.Q.T.: Q E E R Q P e.M.g.g.g.f.7 .. . . ...` e.M.g.g.g.d.# D Z Z Z S z Y Q R E W T ^ ].E.E.E.", +"E.E.E.R.K.( / / / / ~ w.w.q.q.q.w.X.O.O.O.O.O.X.w.w.q.q.q.w.F o.o.o.o.o.F ^ / / / / ( L.).E.E.E.", +"W.E.E.E.].(.(.[.[.[.[.`.^.^.^.`.^.].)././.)./.].^.^.^.^.`.^.]._._._._._.].[.[.[.(.(.[.).E.E.W.E.", +"E.!.E.E.E.I.I.~.~.~.E.E.~.E.~.~.E.E.E.E.E.E.I.E.~.E.~.~.E.E.E.I.E.R.I.E.I.E.E.~.~.~.E.E.E.E.E.E.", +"E.E.E.E.Q.E.W.E.E.E.!.E.E.E.E.E.E.E.E.E.E.E.E.W.E.E.E.E.W.E.E.Q.!.E.E.E.E.E.E.E.E.E.E.W.E.E.E.E.", +"E.W.E.!.E.E.E.E.E.E.E.E.W.E.E.E.E.E.!.E.E.E.!.E.E.E.E.E.E.E.!.E.E.E.E.E.E.E.W.E.E.E.E.!.E.E.E.W." +}; + +const char *const *const xpm_icons[] = { + xpm_icon_0, + xpm_icon_1, + xpm_icon_2, +}; +const int n_xpm_icons = 3; diff -Nru sgt-puzzles-20140928.r10274/icons/flood.rc sgt-puzzles-20160429.b31155b/icons/flood.rc --- sgt-puzzles-20140928.r10274/icons/flood.rc 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/flood.rc 2016-04-29 00:31:42.000000000 +0000 @@ -0,0 +1,2 @@ +#include "puzzles.rc2" +200 ICON "flood.ico" diff -Nru sgt-puzzles-20140928.r10274/icons/flood.sav sgt-puzzles-20160429.b31155b/icons/flood.sav --- sgt-puzzles-20140928.r10274/icons/flood.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/flood.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,14 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :5:Flood +PARAMS :7:6x6c6m5 +CPARAMS :7:6x6c6m5 +SEED :15:967543368167853 +DESC :39:032242034203340350204502505323231342,17 +NSTATES :1:6 +STATEPOS:1:6 +MOVE :2:M3 +MOVE :2:M2 +MOVE :2:M0 +MOVE :2:M5 +MOVE :2:M3 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/flood-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/flood-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/galaxies-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/galaxies-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/galaxies-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/galaxies-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/galaxies-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/galaxies-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/galaxies-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/galaxies-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/galaxies-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/galaxies-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/galaxies-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/galaxies-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/galaxies-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/galaxies-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/galaxies-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/galaxies-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/galaxies-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/galaxies-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/galaxies-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/galaxies-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/galaxies-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/galaxies-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/galaxies-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/galaxies-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/galaxies.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/galaxies.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/galaxies-icon.c sgt-puzzles-20160429.b31155b/icons/galaxies-icon.c --- sgt-puzzles-20140928.r10274/icons/galaxies-icon.c 2014-09-29 00:33:41.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/galaxies-icon.c 2016-04-29 00:31:42.000000000 +0000 @@ -1,419 +1,886 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 162 2 ", -" c #D3D1CC", -". c #B7B5B1", -"X c #B2B0AC", -"o c #B3B1AD", -"O c #B5B4AF", -"+ c #B1AFAA", -"@ c #B1AFAB", -"# c #B0AEAA", -"$ c #B9B7B2", -"% c #858481", -"& c #ABAAA6", -"* c #A4A29E", -"= c #A2A09D", -"- c #A4A39F", -"; c #ABA9A5", -": c #7F7E7C", -"> c #B2B2B2", -", c #C8C8C8", -"< c #C0C0C0", -"1 c gray", -"2 c gray77", -"3 c #C1C1C1", -"4 c #8D8D8C", -"5 c #D5D3CE", -"6 c #B2B1AD", -"7 c #ACAAA6", -"8 c #E9E6E1", -"9 c #DCDAD5", -"0 c #DAD8D3", -"q c #DDDBD6", -"w c #E7E5DF", -"e c #A7A5A2", -"r c #E7E7E7", -"t c gray100", -"y c #FBFBFA", -"u c #F8F8F8", -"i c #FEFEFE", -"p c #ADACAC", -"a c #D7D5D1", -"s c #D1CFCA", -"d c #CECDC8", -"f c #D1CFCB", -"g c #DBD9D3", -"h c #9F9E9B", -"j c #E4E4E5", -"k c #F5F5F4", -"l c gray90", -"z c #ECECEC", -"x c gray67", -"c c #D6D4D0", -"v c #CCCBC6", -"b c #CFCDC8", -"n c #D7D5D0", -"m c #A9A8A4", -"M c #949391", -"N c #A6A5A3", -"B c #92918F", -"V c #B7B7B6", -"C c #EAEAEA", -"Z c gray87", -"A c #AFAEAD", -"S c #CFCDC9", -"D c #A5A4A0", -"F c #DFDCD7", -"G c #D4D2CD", -"H c #DCDAD4", -"J c #B6B5B0", -"K c gray74", -"L c gray95", -"P c #EEEEEE", -"I c #F4F3F2", -"U c #A6A4A0", -"Y c #DFDDD8", -"T c #D8D6D1", -"R c #DDDBD5", -"E c #D9D7D2", -"W c #BFBFBE", -"Q c #F2F2F1", -"! c #A2A19D", -"~ c #A1A09D", -"^ c #9D9B98", -"/ c #CBC9C4", -"( c #B9B7B3", -") c #919190", -"_ c #B4B4B3", -"` c #AFAFAE", -"' c #D4D2CE", -"] c #CDCAC5", -"[ c #9B9B99", -"{ c #D6D6D7", -"} c #D8D9D9", -"| c #A7A7A6", -" . c #BDBBB6", -".. c #DBD9D4", -"X. c #BDBCB7", -"o. c #BCBAB5", -"O. c #B8B6B1", -"+. c #908F8D", -"@. c #A7A5A1", -"#. c #CCCAC5", -"$. c #A2A19F", -"%. c gray97", -"&. c #ADADAC", -"*. c #C0BEB9", -"=. c #D5D3CD", -"-. c #E4E2DD", -";. c #E0DDD8", -":. c #A5A4A2", -">. c #D9D7D3", -",. c #B5B3AF", -"<. c #9D9C98", -"1. c #DFDEDC", -"2. c #C7C5C2", -"3. c #979695", -"4. c #D0D0D1", -"5. c #D2D2D3", -"6. c gray64", -"7. c #B5B3B0", -"8. c #DCDBDA", -"9. c #C8C7C3", -"0. c #B6B4B0", -"q. c #8C8B89", -"w. c #D8D6D2", -"e. c #989793", -"r. c #E9E9E9", -"t. c #CCCCC9", -"y. c #7B7A77", -"u. c #A6A5A1", -"i. c #A7A6A2", -"p. c #C3C2BF", -"a. c gray92", -"s. c #AEACA9", -"d. c #969594", -"f. c #C6C6C6", -"g. c #BCBCBC", -"h. c #B8B8B7", -"j. c #CAC9C4", -"k. c #999894", -"l. c #E0DED8", -"z. c #D2D0CB", -"x. c #D0CEC9", -"c. c gray75", -"v. c #A5A39F", -"b. c #E2E0DA", -"n. c #D0CECA", -"m. c #92908D", -"M. c #B7B5B0", -"N. c #FCFCFD", -"B. c #F1F1F0", -"V. c #8F8E8B", -"C. c #91908C", -"Z. c #969491", -"A. c #8A8986", -"S. c #C7C6C1", -"D. c #D6D4CF", -"F. c #C1BFBB", -"G. c #8F8F8D", -"H. c #9C9B99", -"J. c #A8A8A6", -"K. c #D3D2CD", -"L. c #D2D0CA", -"P. c #CDCBC6", +"16 16 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , < 1 2 3 4 5 ", -"6 7 8 9 0 q w e r t y u t i p a ", -"o * 9 s d f g h j t u k l z x c ", -"o = 0 d v b n m M N B V C Z A S ", -"o D F b G G H J K L P I n ", -"o U Y T R R E G q . W t i Q n ", -"o ! 0 s - ~ D ^ / T ( ) K _ ` ' ", -"o * Y ] [ { } | ...s X.o.O.+.E ", -"o @.g #.$.z %.&.*.=.G 9 -.;.:.>.", -",.<.1.2.3.4.5.6.7.8.9.$ 0.X q.w.", -"O e.r.t.y.u.i.! p.a.s.d.f.g.h.' ", -"o @.G j.k.l.q 0 z.x.J c.t i Q n ", -"o v.b.n.m.G z.x. Y M.1 t N.B.n ", -". i.T s V.C.Z.A.S.D.F.G.N H.J.9 ", -"K. 5 5 E 5 D.b 5 n D.L.z.P.5 " +"9X|.'.].].].].{.'.`.`.`.`._..X9X", +"|.f.~.Y.I.Y.~.u.'.>X$X@X=X%Xc.qX", +"'.^.cXiXyXpXzXE.zXUXKXGXUXIX/.eX", +"].Y.iX7X4X7XuXK.jXUXGXSXkXnX~.wX", +"].I.yX4X2X5XeXQ.B.R.M.|.vXaX).5X", +"].T.sX9X5X0X0X9X9XiX}.+XCXMXAXeX", +"].R.sX9XrXpXpXtX0XpX|.#XUXIXCXeX", +"].I.yX7XY.P.T.H.1XrX.Xm.+X[.).0X", +"].Y.sX3XF.wXtXE.+XuX7X+XOX Xn.tX", +"].E.uX2XI.nXFX/.$XqX0XiXjXdXT.tX", +"{.H.sX:XZ.6X8XY.{.iX>X.X}.'.x.rX", +"{.A.cX2Xe.R.E.I.*XbX(.C.;XOX X0X", +"].E.0X c #787774", -", c #787877", -"< c #7E7D7C", -"1 c #817F7C", -"2 c #83827F", -"3 c #858482", -"4 c #888683", -"5 c #8A8986", -"6 c #8D8D8D", -"7 c #93918E", -"8 c #949391", -"9 c #989693", -"0 c #9C9A96", -"q c #9B9B9B", -"w c #A19F9B", -"e c #A3A29E", -"r c #A6A5A1", -"t c #ACAAA6", -"y c #AFAEAA", -"u c #B0AEAA", -"i c #B3B1AE", -"p c #B6B5B3", -"a c #B8B7B5", -"s c #BDBBB6", -"d c #BDBDBC", -"f c #C1BFB9", -"g c #C4C2BD", -"h c #C6C6C5", -"j c #C9C7C2", -"k c #CCCAC5", -"l c #CECDCA", -"z c #D1CFCA", -"x c #D4D2CD", -"c c #D6D5D2", -"v c #D8D6D1", -"b c #DDDBD6", -"n c #DDDCDA", -"m c #E1DFD9", -"M c #E5E2DD", -"N c #E6E5E2", -"B c #E8E6E1", -"V c #EEECE6", -"C c #EDECEC", -"Z c #F0EFEE", -"A c #F2F1ED", -"S c #F4F4F3", -"D c #FEFEFE", +"32 32 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"0Mx", -"me*MzcxM:dDhlcD%hvvzvzzbvbvB2eNz", -"mr*MzxzM-dcSDlC&gvzcczkczczMqCnmmmxxilhgp:DDDDDSAvz", -"mr*MksgB>7mzzzzkxvfgmy:DSDDDSCvx", -"mr*MxbxM;9mxxxvkxzbvby:DDDDDSCvx", -"mr*MxxxM;7bzxzxkxczzbu:DDDSDSCvx", -"mr*MxxxM>rAmMMMvxcccmu:DDDDDSAvx", -"mr%mgkkm>@422224zzzkcuOrqqqq8xbl", -"mt;bzxzxp255452Ogzzzzj624447+rMx", -"xxxxxvxxvMMMMMMvzvxccvmMMMMMncxx", -"xxvxxxxxxxzzzzzxvxvzxxxzxzzzxxcx" +"qXwXsXfXfXfXfXfXfXfXfXfXfXfXfXsXfXgXfXfXfXfXfXfXfXfXfXgXdXaXwXqX", +"wX8X).T.E.E.E.E.E.E.E.E.E.E.E.).T.U.Y.Y.Y.Y.T.U.Y.Y.Y.U.!._.9XwX", +"sX).b 2.*.-.-.-.%.*.-.-.-.=.;.l 8.u.t.t.y.e.7.y.t.t.r.j.T .pX0X", +"fXR.2.SXfXjXjXlXpXdXkXjXjXjXzX+.BXUXIXUXUXKXVXUXUXUXKXUXF.L.xX7X", +"fXE.*.fX5X8X8X9X1X4X9X8X8X7X0X .mXUXKXKXLXFXbXPXKXKXFXUXA.J.zX7X", +"fXE.-.jX8XqXqXwX4X7XwXqXqXqXeX..VXUXIXUXUXKXNXUXIXUXKXUXF.L.xX7X", +"fXE.-.jX8XqX0XwX4X7XwXqXqX0XeX..mXUXJXKXLXFXnXUXLXBXDXUXD.J.zX7X", +"fXE.-.lX9XwXwXrX5X8XeXwXwXwXrXX.VXUXIXUXUXKXCXUX>X4X$XUXJ.L.xX7X", +"fXE.%.pX1X4X4X5X,X1X5X4X4X3X0XW i.n.x.x.v.s.|.uXwXUXzXrXF.| sX0X", +"fXE.*.dX4X7X7X8X1X3X8X7X7X6X0XQ.M.V.V.B.G.7.3.MX1XUXaX9XjX'.wXqX", +"fXE.-.kX9XwXwXeX5X8XeXwXwXwXwX0XhXhXhXgXnX+X6.UX7X;X1XLXFXBXrX0X", +"fXE.-.jX8XqXqXwX4X7XwXqXqXqXqX1X8X9X9X8XiX/.4.UXKXIXIXUXAXmXrX0X", +"fXE.-.jX8XqXqXwX4X7XwXqXqXqXqX2X0XqXqX0XaX_.4.UXJXUXPXUXSXBXrX0X", +"fXE.-.jX8XqXqXwX3X6XwX0XqXqXqX1X0XqXqX0XaX_.4.UXKXIXPXUXZXNXrX0X", +"fXE.-.kX8XwXqXwX9XqXrXeXeXeXrX8XqXwXwX0XaX_.4.UXLXUXUXUXDXVXrX0X", +"fXE.$.uX,X2X.3X-XUX1X c #555554", -", c #585754", -"< c #595856", -"1 c #5A5959", -"2 c #61605E", -"3 c #636363", -"4 c #6B6A67", -"5 c #6D6B69", -"6 c #706F6C", -"7 c #727272", -"8 c #787775", -"9 c #7B7A77", -"0 c #7B7C7C", -"q c #807F7B", -"w c #83817E", -"e c #838384", -"r c #888683", -"t c #8B8A87", -"y c #878788", -"u c #8A8A8A", -"i c #92908C", -"p c #979591", -"a c #989793", -"s c #9B9996", -"d c #9D9C9B", -"f c #A19F9C", -"g c #A2A19D", -"h c #9FA0A0", -"j c #A5A4A3", -"k c #ADABA7", -"l c #AEACA9", -"z c #B0AEAA", -"x c #B3B1AD", -"c c #B5B4B3", -"v c #BCBAB6", -"b c #BCBBBA", -"n c #C0BEB9", -"m c #C4C3BE", -"M c #C6C5C1", -"N c #C8C6C2", -"B c #CCCBC6", -"V c #CFCDC8", -"C c #D1CFCA", -"Z c #D5D3CE", -"A c #D7D5D0", -"S c #D9D7D1", -"D c #DCDAD5", -"F c #DDDCDA", -"G c #E1DFD9", -"H c #E4E2DC", -"J c #DFDFE0", -"K c #E5E4E4", -"L c #E9E6E1", -"P c #E9E8E5", -"I c #EAEAEA", -"U c #F1EFE9", -"Y c #F5F2EC", -"T c #F4F4F4", -"R c #F9F8F6", -"E c #FEFEFE", +"48 48 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"cjjkkgjd+mxNEEEjNbwwwqeqqqu+7SZAZ", -"ZZGz@ZsLEEEsA2O:---;;;->VgCEEEkMtX3<1,111111mSZZ", -"ZZDz#HvkEEMgY<9RHLLLLLLSSVdTEFsPe1EEEEEEEEIRDZZZ", -"ZZDz#SSxfjjZL15HBZCCZCCmZSbdjfBLw g =XtX0XqX", +"qX0XaX).x fXyXuXuXuXuXuXpX8X0XpXuXuXuXuXyXpXqXk xXUXIXUXUXUXUXUXSXnXUXIXUXUXUXUXLXUXP .XvX7XqXqX", +"qX0XaX).z yX9X0X0X0X0X0XwX2X3XwX0X0X0X0X0XwX4Xj zXUXPXIXIXIXIXUXAXvXUXPXIXIXIXIXKXUXP .XvX7XqXqX", +"qX0XaX).z uX0XqXqXqXqX0XeX2X4XwXqXqXqXqX0XeX5Xj xXUXIXUXUXUXIXUXAXbXUXIXUXUXUXUXLXUXP .XvX7XqXqX", +"qX0XaX).z uX0XqXqXqXqXqXeX2X4XeXqXqXqXqXqXeX5Xj xXUXIXUXUXUXUXUXSXbXUXIXUXUXUXUXLXUXP .XvX7XqXqX", +"qX0XaX).z uX0XqXqXqXqXqXeX2X4XeXqXqXqXqXqXeX5Xj xXUXIXUXUXUXUXUXSXbXUXIXPXIXIXIXLXUXP .XvX7XqXqX", +"qX0XaX).z uX0XqXqXqXqXqXeX2X4XeXqXqXqXqXqXeX5Xj xXUXIXUXUXUXUXUXSXbXUXPXUXUXUXIXKXUXP .XvX7XqXqX", +"qX0XaX).z uX0X0XqXqXqX0XwX2X4XwX0XqXqXqX0XeX5Xj jXUXJXKXKXKXJXPXBXxXUXUX8X'.'.tXUXUXP }.cX7XqXqX", +"qX0XaX).z pXwXeXeXeXeXwXtX4X6XtXeXeXeXeXwXtX7Xz xXUXIXUXUXUXUXUXDXnXUX9X].KXFX/.iXUXI XXvX7XqXqX", +"qX0XaX).k 8X2X2X2X2X2X2X4X-X:X4X2X2X2X2X2X4X,Xy #.5.2.2.2.2.2.4.=.P.LXW.SXUXUXnX!.UXJ Y 6XeX0XqX", +"qX0XaX).k 0X3X4X4X4X4X4X6X:X>X5X4X4X4X4X4X4X4Xp.:.,.,.,.,.,.:.9.Z { UXQ.CXUXUXxX).UXT.p.2XrX0XqX", +"qX0XaX).z pXwXwXeXeXeXwXtX4X5XrXwXeXeXeXeXwXeXqXxXcXcXcXcXcXlXKXM.{ UXeX/.VXmXQ.kXUXbXHXiX0XqXqX", +"qX0XaX).z uX0XqXqXqXqX0XeX2X4XwX0XqXqXqXqXqXqX-X7X8X8X8X8X8X5XgXi.{ UXIXpX}. XhXUXUXlXAXiX0XqXqX", +"qX0XaX).z uX0XqXqXqXqXqXeX2X4XeXqXqXqXqXqXqXqX>X0XqXqXqXqXqX8XlXs.{ UXJXUXUXUXIXPXUXxXGXiX9XqXqX", +"qX0XaX).z uX0XqXqXqXqXqXeX2X4XeXqXqXqXqXqXqXqX>X0XqXqXqXqXqX8XlXs.{ UXKXIXPXPXIXIXUXxXGXiX9XqXqX", +"qX0XaX).z uX0XqXqXqXqXqXeX2X4XeXqXqXqXqXqXqXqX>X0XqXqXqXqXqX8XlXs.{ UXKXUXUXUXUXIXUXxXGXiX9XqXqX", +"qX0XaX).z uX0XqXqXqXqXqXeX2X4XwX0XqXqXqXqX0XqX>X0XqXqXqXqXqX8XlXs.{ UXJXIXIXIXIXIXUXxXFXiX0XqXqX", +"qX0XaX).z uX0XqXqXqXqXqXeX3X6XtXeXeXeXeXeXeXeX,X0XqXqXqXqXqX8XlXs.} UXKXUXUXUXUXIXUXcXGXiX9XqXqX", +"qX0XaX).z uXqXqXqXqXqXqXeX2X,X6X5X5X5X5X5X5X5X;XqXwXqXqXqXqX9XzXs.] UXSXHXHXHXHXGXLXkXCXuX0XqXqX", +"qX0XaX_.j 4X:X>X>X>X>X-XwX2.6 x j h g h j k f s +X1X:X>X>X>X;X0Xc.: n l z z z z z c t l %XyX0XqX", +"qX0XaX).z yX0X0X0X0X0X7XxX{ e.PXhXnXZXVXzXvXhXj $XyX0X0X0X0X0XwX2XXX%X#X$X$X$X#X+X2Xb !.kX8XqXqX", +"qX0XaX).z uX0XqXqXqXqX7XcX{ l.UXPXCX8XsXIXUXHXx $XyX0XqXqXqXqXwX7X5XiXyXyXyXyXyXrXxXZ OXcX7XqXqX", +"qX0XaX).z uX0XqXqXqXqX7XcX[ h.UXwXQ.wX$X_.UXGXz $XyX0XqXqXqXqXwX6XXUXSXl #XpX7XW.P.'.tXwX5X>X0X8X8X8X8X8X6XdXB .XcX7XqXqX", +"qX0XaX).z sXX#Xs.s.s.s.s.s.s.p.z.y 9.eXqXqXqX", +"qX0XaX_.h eXD.lXUXPXUXF.eX+.9 ~ P I I I I U L _ 2XR.4XUXHXUX!.:Xz.5 @.[ { { { { { } { { =XtX0XqX", +"qX0XaX).l hXOXW.IXUX-XI.CX{ e.LXjXxXxXxXxXxXxXwXyX2XH.AXUXyXS.nXd.| UXKXUXUXUXUXIXUXnXHXiX0XqXqX", +"qX0XaX).z tXyX[.K.Y.R.9XxX| <.jX4X8X8X8X8X7X8X-X9XyX$XH.R.K.3XxXa.[ UXFXKXKXKXKXJXIXkXAXiX0XqXqX", +"qX0XaX).z uX9XuXqX7XiX8XcX| 2.xX8XqXqXqXqXqXqX>XqX0XyXrX5XuX0XkXs.{ UXKXUXUXUXUXIXUXxXGXiX9XqXqX", +"qX0XaX).z uX0X0XqXwX0X7XcX| 2.xX8XqXqXqXqXqXqX>X0XqX0XqXwX0X8XlXs.{ UXKXUXUXUXUXIXUXxXGXiX9XqXqX", +"qX0XaX).z uX0XqXqXqXqX7XcX| 2.xX8XqXqXqXqXqXqX>X0XqXqXqXqXqX8XlXs.{ UXKXUXUXUXUXIXUXxXGXiX9XqXqX", +"qX0XaX).z uX0XqXqXqXqX7XcX| 2.xX8XqXqXqXqXqXqX>X0XqXqXqXqXqX8XlXs.{ UXKXUXUXUXUXIXUXxXGXiX9XqXqX", +"qX0XaX).z yX0X0XqXqXqX7XxX| <.kX5X8X8X8X8X8X9X;X0XqXqXqXqXqX8XlXs.[ UXGXLXLXLXLXKXUXkXFXiX9XqXqX", +"qX0XaX).x pXwXeXeXeXeX9XbX .0.FXsXhXhXhXhXhXhX0XeXeXeXeXeXeX0XxXd.} UXKXUXUXUXUXIXUXbXHXiX0XqXqX", +"qX0XaX_.j 5X,X,X,X,X,X;XyX+.1 H V C C C C C N K %X2X,X,X,X,X:XeXj.> ! P I I I I I Y F -XsX9XqXqX", +"qX0XaX_.x eX7X7X8X8X8X7XwX|.A.G.F.F.F.F.F.H.C.y #XwX7X8X8X8X7XqX&XZ.S.A.A.A.A.A.Z.U.a XXzX7XqXqX", +"qXqXwX6X#XeXwXwXwXwXwXwXwXtXdXgXgXgXgXgXgXgXfX&X9XeXwXwXwXwXwXwXeXsXhXgXgXgXgXgXgXkX:X9XrX0XqXqX", +"qXqXqXwXyXqXqXqXqXqXqXqXqX0X9X9X9X9X9X9X9X9X9XyXwXqXqXqXqXqXqXqX0X9X9X9X9X9X9X9X9X8XtXwX0XqXqXqX", +"qXqXqXqX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XqXqXqXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX" }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/galaxies.sav sgt-puzzles-20160429.b31155b/icons/galaxies.sav --- sgt-puzzles-20140928.r10274/icons/galaxies.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/galaxies.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,51 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :8:Galaxies +PARAMS :5:7x7dh +CPARAMS :5:7x7dh +SEED :15:483644862786314 +DESC :13:ikrqfedzljjsp +NSTATES :2:43 +STATEPOS:2:37 +MOVE :5:E12,9 +MOVE :5:E8,11 +MOVE :5:E5,12 +MOVE :5:E7,12 +MOVE :5:E4,13 +MOVE :5:E2,11 +MOVE :5:E3,10 +MOVE :4:E2,5 +MOVE :4:E4,5 +MOVE :4:E6,7 +MOVE :4:E8,1 +MOVE :5:E10,1 +MOVE :4:E9,2 +MOVE :4:E6,3 +MOVE :4:E7,4 +MOVE :5:E10,3 +MOVE :5:E10,5 +MOVE :5:E11,6 +MOVE :5:E13,6 +MOVE :5:E8,13 +MOVE :5:E12,7 +MOVE :6:E12,11 +MOVE :6:E13,12 +MOVE :4:E8,9 +MOVE :4:E7,8 +MOVE :4:E7,6 +MOVE :4:E9,6 +MOVE :4:E8,5 +MOVE :4:E9,4 +MOVE :4:E5,2 +MOVE :4:E4,1 +MOVE :4:E3,6 +MOVE :4:E2,7 +MOVE :4:E3,8 +MOVE :4:E3,4 +MOVE :4:E4,9 +MOVE :4:E2,9 +MOVE :5:E5,10 +MOVE :5:E6,11 +MOVE :4:E2,3 +MOVE :4:E2,1 +MOVE :5:E1,12 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/galaxies-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/galaxies-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/guess-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/guess-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/guess-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/guess-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/guess-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/guess-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/guess-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/guess-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/guess-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/guess-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/guess-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/guess-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/guess-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/guess-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/guess-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/guess-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/guess-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/guess-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/guess-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/guess-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/guess-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/guess-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/guess-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/guess-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/guess.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/guess.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/guess-icon.c sgt-puzzles-20160429.b31155b/icons/guess-icon.c --- sgt-puzzles-20140928.r10274/icons/guess-icon.c 2014-09-29 00:33:41.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/guess-icon.c 2016-04-29 00:31:42.000000000 +0000 @@ -1,875 +1,773 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 245 2 ", -" c #D6D3CE", -". c #D3D9D4", -"X c #CAC2BE", -"o c #D2DAD5", -"O c #D1D6D1", -"+ c #CAC4BE", -"@ c #D5DBDA", -"# c #CECBC8", -"$ c #CCCAC3", -"% c #D5D3DC", -"& c #CBC9C1", -"* c #CFCDCC", -"= c #D5D3D1", -"- c #D3D1CB", -"; c #D4D2CD", -": c #D5D3CE", -"> c #D3DFDA", -", c #D2807D", +"16 16 252 2 ", +" c #D6D5D5", +". c #D3DBDB", +"X c #CAC4C4", +"o c #D2DCDC", +"O c #D1D8D8", +"+ c #CAC5C4", +"@ c #D5DDE2", +"# c #CECDCF", +"$ c #CCCCCA", +"% c #D5D5E3", +"& c #CBCBC8", +"* c #CFCFD3", +"= c #D5D5D9", +"- c #D3D3D2", +"; c gray83", +": c #D5D5D5", +"> c #D3E1E1", +", c #D28181", "< c #F00000", -"1 c #D16F6D", -"2 c #D65E5A", +"1 c #D17071", +"2 c #D65F5D", "3 c #EF0201", -"4 c #C98D86", -"5 c #E3EC32", -"6 c #EAE51A", -"7 c #C7C68D", -"8 c #EDEA12", -"9 c #E0DE35", -"0 c #C7C6C6", -"q c #C5C4C2", -"w c #CBC9C6", -"e c #D1E2DD", -"r c #D65C5B", -"t c red", -"y c #D54544", -"u c #DD3734", -"i c #C96A57", -"p c #F0FF14", -"a c #FBF801", -"s c #C6C45D", -"d c yellow", -"f c #F0F014", -"g c #BCBAB1", -"h c #B0AFAC", -"j c #BEBCB7", -"k c #D8D6D1", -"l c #D8D8D2", -"z c #CDC6C1", -"x c #9C5A79", -"c c #CCBFC2", -"v c #C1B9A8", -"b c #967E4E", -"n c #D2D3DA", -"m c #C7AD81", -"M c #C5A068", -"N c #CEDAE1", -"B c #C49B5D", -"V c #C9B38E", -"C c #C8CCCE", -"Z c #B5B2AC", -"A c #C2C0BC", -"S c #E0DCCA", -"D c #7B86D3", -"F c #1642FF", -"G c #6A6FDD", -"H c #3CE72C", -"J c green", -"K c #72BC62", -"L c #FE0819", -"P c #F50604", -"I c #C66B68", -"U c #FA0000", -"Y c #F52121", -"T c #989491", -"R c #5C5C5A", -"E c #8D8B88", -"W c #DFDDD8", -"Q c #DFDBCB", -"! c #8891D3", -"~ c #1F42FF", -"^ c #7B7CDF", -"/ c #4CE443", -"( c #00FD04", -") c #83C27A", -"_ c #F3232D", -"` c #EC1E17", -"' c #C78380", -"] c #F11310", -"[ c #E63330", -"{ c #C4C3BE", -"} c #B9B8B3", -"| c #C0BEB9", -" . c #D6D7D4", -".. c #D2C7B6", -"X. c #B78257", -"o. c #D1C2B3", -"O. c #CDB8A3", -"+. c #B59048", -"@. c #D4D4D3", -"#. c #C87D7B", -"$. c #C86462", -"%. c #CDDFDA", -"&. c #C75957", -"*. c #CE8D8A", -"=. c #B9C3BF", -"-. c #ABA7A3", -";. c #CECCC7", -":. c #D6D4CF", -">. c #D1D9DD", -",. c #D59255", -"<. c #FF7200", -"1. c #D3853D", -"2. c #DD832F", -"3. c #FF7700", -"4. c #C7814F", -"5. c #F10A11", -"6. c #FC0200", -"7. c #C55654", -"8. c #FE0000", -"9. c #F81818", -"0. c #958D8A", -"q. c #7E7F7C", -"w. c #D4D7D8", -"e. c #D6B68E", -"r. c #EE820C", -"t. c #D7B081", -"y. c #D1A079", -"u. c #E07A22", -"i. c #CBB7A3", -"p. c #D95051", -"a. c #DC3C3B", -"s. c #CCAEA8", -"d. c #E63326", -"f. c #DE594E", -"g. c #CFD3CE", -"h. c #CAC7C2", -"j. c #C9C7C2", -"k. c #D7D5D0", -"l. c #DCD9CD", -"z. c #ACB3D2", -"x. c #4A60DC", -"c. c #9CA5DC", -"v. c #D7D981", -"b. c #D4D834", -"n. c #CCD4B7", -"m. c #D26063", -"M. c #D54E49", -"N. c #C6C3C6", -"B. c #8542AE", -"V. c #A275BF", -"C. c #AFB2A8", -"Z. c #7A7876", -"A. c #A2A19D", -"S. c #DCDAD5", -"D. c #E2DDC9", -"F. c #6975D1", -"G. c #0F2EFF", -"H. c #4B5BDA", -"J. c #EAE71E", -"K. c #C7B44D", -"L. c #EF0013", -"P. c #FF0400", -"I. c #A1547D", -"U. c #7200B8", -"Y. c #7F13AC", -"T. c #A7A3A4", -"R. c #858582", -"E. c #9D9B98", -"W. c #DDDBD6", -"Q. c #DBD9CE", -"!. c #B6B7D0", -"~. c #5B68C9", -"^. c #A9ABD9", -"/. c #DBD191", -"(. c #CCCA40", -"). c #D4D5C6", -"_. c #CC7070", -"`. c #CE5B58", -"'. c #CDD3CC", -"]. c #9050A5", -"[. c #A47BAF", -"{. c #DBDFD3", -"}. c #D2D0CD", -"|. c #CDCBC6", -" X c #D3D1DA", -".X c #D7D580", -"XX c #F9F900", -"oX c #E3D66F", -"OX c #53D368", -"+X c #03EC14", -"@X c #93C78F", -"#X c #E93943", -"$X c #E62F27", -"%X c #BB9AAA", -"&X c #8223AD", -"*X c #9C50B6", -"=X c #A3A39D", -"-X c #6B6967", -";X c #979692", -":X c #DEDCD7", -">X c #D1CFDD", -",X c #D5D459", -". c #ABA8A8", +",. c #CECECE", +"<. c gray84", +"1. c #D1DBE4", +"2. c #D59358", +"3. c #FF7200", +"4. c #D3853F", +"5. c #DC8330", +"6. c #FF7700", +"7. c #C78252", +"8. c #F10A12", +"9. c #FC0200", +"0. c #C45757", +"q. c #FE0000", +"w. c #F81919", +"e. c #958F8F", +"r. c #7E8080", +"t. c gray", +"y. c #D4D9E0", +"u. c #D6B793", +"i. c #EE830D", +"p. c #D7B185", +"a. c #D1A27D", +"s. c #E07A23", +"d. c #CBB8A9", +"f. c #D95154", +"g. c #DC3D3D", +"h. c #CCB0AD", +"j. c #E73328", +"k. c #DE5A51", +"l. c #CFD5D5", +"z. c #CAC9C9", +"x. c gray79", +"c. c #D7D7D7", +"v. c #DCDBD4", +"b. c #ACB4D7", +"n. c #4A60DE", +"m. c #9BA6E1", +"M. c #D7DB86", +"N. c #D4D936", +"B. c #CCD6BD", +"V. c #D26167", +"C. c #D64F4C", +"Z. c #C6C5CD", +"A. c #8643B1", +"S. c #A276C3", +"D. c #AFB4AF", +"F. c #7A797A", +"G. c #A2A2A2", +"H. c gainsboro", +"J. c #E2E0D1", +"K. c #6975D4", +"L. c #0F2EFF", +"P. c #4B5BDB", +"I. c #EAE820", +"U. c #C7B450", +"Y. c #EF0014", +"T. c #FF0400", +"R. c #A1557F", +"E. c #7200B7", +"W. c #7F13AC", +"Q. c #A7A4A8", +"!. c #858685", +"~. c #9D9D9D", +"^. c #DDDDDD", +"/. c #DBDBD5", +"(. c #B6B9D6", +"). c #5B69CB", +"_. c #A9ADDE", +"`. c #DBD296", +"'. c #CDCB42", +"]. c #D4D6CD", +"[. c #CC7174", +"{. c #CE5B5A", +"}. c #CDD4D3", +"|. c #9051A8", +" X c #A47CB4", +".X c #DBE0D9", +"XX c #D2D1D3", +"oX c #CDCDCD", +"OX c gray84", +"+X c #D3D3E1", +"@X c #D7D685", +"#X c #FAFA00", +"$X c #E3D773", +"%X c #53D46B", +"&X c #03EC14", +"*X c #93C894", +"=X c #E93A45", +"-X c #E62F28", +";X c #BB9BAF", +":X c #8323AF", +">X c #9C50B9", +",X c #A3A5A3", +" , < 1 2 3 4 5 6 7 8 9 0 q w : ", -"e r t y u t i p a s d f g h j k ", -"l z x c v b n m M N B V C Z A k ", -"S D F G H J K L P I U Y T R E W ", -"Q ! ~ ^ / ( ) _ ` ' ] [ { } | k ", -" ...X.o.O.+.@.#.$.%.&.*.=.-.;.:.", -">.,.<.1.2.3.4.5.6.7.8.9.0.q.j k ", -"w.e.r.t.y.u.i.p.a.s.d.f.g.h.j.k.", -"l.z.x.c.v.b.n.m.M.N.B.V.C.Z.A.S.", -"D.F.G.H.J.d K.L.P.I.U.Y.T.R.E.W.", -"Q.!.~.^./.(.)._.`.'.].[.{.}.|.:.", -" X.XXXoXOX+X@X#X$X%X&X*X=X-X;X:X", -">X,Xd , < 1 2 3 4 5 6 7 8 9 0 q w e ", +"r t y u i y p a s d f g h j k l ", +"z x c v b n m M N B V C Z A S D ", +"F G H J K L P I U Y T R E W Q ! ", +"~ ^ / ( ) _ ` ' ] [ { } | ...X.", +"o.O.+.@.#.$.%.&.*.=.-.;.:.>.,.<.", +"1.2.3.4.5.6.7.8.9.0.q.w.e.r.t.D ", +"y.u.i.p.a.s.d.f.g.h.j.k.l.z.x.c.", +"v.b.n.m.M.N.B.V.C.Z.A.S.D.F.G.H.", +"J.K.L.P.I.f U.Y.T.R.E.W.Q.!.~.^.", +"/.(.)._.`.'.].[.{.}.|. X.XXXoXOX", +"+X@X#X$X%X&X*X=X-X;X:X>X,X c #F40000", -", c #FE0202", -"< c #E91010", -"1 c #E41616", -"2 c #E50D14", -"3 c #D7201F", -"4 c #C72F2C", -"5 c #CB2323", -"6 c #D72626", -"7 c #C8322E", -"8 c #CB3D3C", -"9 c #CB3534", -"0 c #D93E30", -"q c #D9382A", -"w c #E02A3C", -"e c #E86C00", -"r c #F66F00", -"t c #E87706", -"y c #F37400", -"u c #FF7600", -"i c #FE7D02", -"p c #E47C10", -"a c #F47910", -"s c #CA403F", -"d c #D34B3F", -"f c #D77C24", -"g c #D07B36", -"h c #D67113", -"j c #BF4C4A", -"k c #BF534F", -"l c #BB5257", -"z c #B8615E", -"x c #BA5060", -"c c #B86664", -"v c #BB7774", -"b c #B77D7A", -"n c #B17076", -"m c #C84947", -"M c #C45552", -"N c #C35C5A", -"B c #CB574D", -"V c #C26455", -"C c #CF5660", -"Z c #C07D7A", -"A c #C57877", -"S c #C36E65", -"D c #01E600", -"F c #02FE02", -"G c #00F600", -"H c #0CEA14", -"J c #18E31C", -"K c #26D528", -"L c #26D824", -"P c #2FC93E", -"I c #38CD37", -"U c #12D30F", -"Y c #41D631", -"T c #55BF50", -"R c #67BE64", -"E c #45C644", -"W c #4FD240", -"Q c #4ACC5A", -"! c #59C360", -"~ c #6EC072", -"^ c #FE8203", -"/ c #E58114", -"( c #CA833B", -") c #D88B32", -"_ c #D9DA0A", -"` c #D6D31A", -"' c #D7D710", -"] c #DFE41A", -"[ c #E5E403", -"{ c #E7EA00", -"} c #E9E900", -"| c #EBEA0D", -" . c #F3F400", -".. c #FEFE02", -"X. c #E3E614", -"o. c #C7C633", -"O. c #CECD35", -"+. c #CDDF3D", -"@. c #D7D438", -"#. c #D5D42A", -"$. c #BF8B57", -"%. c #BABC5F", -"&. c #84817E", -"*. c #A7827E", -"=. c #BD807D", -"-. c #B99470", -";. c #81AF78", -":. c #A9A67A", -">. c #BCB976", -",. c #C5905D", -"<. c #C48A58", -"1. c #C0BF48", -"2. c #C1BE54", -"3. c #C38C7E", -"4. c #C19974", -"5. c #C6B463", -"6. c #BFC57E", -"7. c #CBDC41", -"8. c #C3CF5D", -"9. c #C6D450", -"0. c #C7C644", -"q. c #C3C262", -"w. c #6D009A", -"e. c #731599", -"r. c #7C299C", -"t. c #7202A3", -"y. c #7507A5", -"u. c #7C01B2", -"i. c #7E15A8", -"p. c #7E48AD", -"a. c #6A72BA", -"s. c #263FEC", -"d. c #233DFC", -"f. c #3144D3", -"g. c #2C41D5", -"h. c #2640F2", -"j. c #2A43FD", -"k. c #2742F7", -"l. c #364FFF", -"z. c #3951FF", -"x. c #4B5AC4", -"c. c #4755C8", -"v. c #6C79C5", -"b. c #7A79C6", -"n. c #8204B4", -"m. c #8401B9", -"M. c #8026A2", -"N. c #87459E", -"B. c #864D99", -"V. c #927998", -"C. c #B97583", -"Z. c #8555AC", -"A. c #936AA7", -"S. c #9A78A9", -"D. c #8562A7", -"F. c #7AC986", -"G. c #778BC6", -"H. c #6883C9", -"J. c #898784", -"K. c #93928F", -"L. c #979592", -"P. c #9F9D97", -"I. c #AA8783", -"U. c #BC8C89", -"Y. c #BB8883", -"T. c #BC928E", -"R. c #AA9A97", -"E. c #BA9A96", -"W. c #BBA48D", -"Q. c #BBBB86", -"!. c #A4A29E", -"~. c #BDA89C", -"^. c #B3BC99", -"/. c #8E90A5", -"(. c #999BB4", -"). c #9592AE", -"_. c #AF9EAF", -"`. c #B59BAC", -"'. c #9DA0B8", -"]. c #A9A6A3", -"[. c #AFACA9", -"{. c #ABA9A5", -"}. c #B9AAA9", -"|. c #BEBDA1", -" X c #B2B8A8", -".X c #B8B2AB", -"XX c #AAAAB9", -"oX c #B4ABB8", -"OX c #B8B6B2", -"+X c #BCBAB5", -"@X c #BEBCBA", -"#X c #B8B4B4", -"$X c #ABB8B2", -"%X c #C19691", -"&X c #C49E92", -"*X c #C5BC87", -"=X c #C1A88A", -"-X c #C1AEAA", -";X c #C1B5AB", -":X c #C3BCAE", -">X c #CBBBA1", -",X c #C1AEB3", -" c #E50D15", +", c #C92726", +"< c #D72425", +"1 c #C83130", +"2 c #CB3D3D", +"3 c #DA3C2F", +"4 c #E02B3E", +"5 c #E97706", +"6 c #FF7600", +"7 c #FE7D02", +"8 c #F47400", +"9 c #EE7408", +"0 c #D87C25", +"q c #D17C38", +"w c #D67113", +"e c #BF4C4C", +"r c #BD5754", +"t c #BB4B5D", +"y c #BA5163", +"u c #B86666", +"i c #BA7A7A", +"p c #B2727A", +"a c #C94747", +"s c #C45B5B", +"d c #C75652", +"f c #D34C41", +"g c #C26558", +"h c #CF5763", +"j c #C37A7B", +"k c #C36F69", +"l c #01E600", +"z c #02FE02", +"x c #00F600", +"c c #0CEB15", +"v c #17E31D", +"b c #2BD42C", +"n c #12D410", +"m c #41D733", +"M c #55BF53", +"N c #67BF67", +"B c #2FCA40", +"V c #49CC4B", +"C c #59C464", +"Z c #6EC175", +"A c #FE8203", +"S c #E58115", +"D c #CA823B", +"F c #D98C34", +"G c #D9DA0A", +"H c #D6D516", +"J c #DFE41B", +"K c #E5E403", +"L c #E9E903", +"P c #F3F300", +"I c #FEFE02", +"U c #E4E716", +"Y c #C9C935", +"T c #D7D630", +"R c #CDE03F", +"E c #BF8C59", +"W c #81B07C", +"Q c #BBBC62", +"! c #B5B579", +"~ c #B58D67", +"^ c #C8884E", +"/ c #C1BE57", +"( c #C19B78", +") c #C49161", +"_ c #C6B566", +"` c #B8C161", +"' c #C9CF48", +"] c #C3D060", +"[ c #C3C366", +"{ c #710E99", +"} c #792C99", +"| c #7202A3", +" . c #7507A5", +".. c #7C01B2", +"X. c #7F15A9", +"o. c #7E27A1", +"O. c #7D46AF", +"+. c #6A73BD", +"@. c #263EEC", +"#. c #233EFB", +"$. c #2F43D4", +"%. c #2A43FD", +"&. c #2742F4", +"*. c #364FFF", +"=. c #3951FF", +"-. c #4A59C6", +";. c #6C7AC9", +":. c #7B74C8", +">. c #8204B4", +",. c #8401B9", +"<. c #8026A4", +"1. c #864E9B", +"2. c #937A9C", +"3. c #BA7787", +"4. c #8548A5", +"5. c #8556AE", +"6. c #926FAC", +"7. c #7ACA8A", +"8. c #7788CA", +"9. c #6784CD", +"0. c #888888", +"q. c #959595", +"w. c #9F9F9C", +"e. c #A98685", +"r. c #BC8888", +"t. c #AB9B9C", +"y. c #BA9999", +"u. c #BB9D80", +"i. c #BBBC86", +"p. c #BBA996", +"a. c #BDBD96", +"s. c #A8A583", +"d. c #989CB4", +"f. c #918FB0", +"g. c #B59DB1", +"h. c #9DA1BD", +"j. c #A4A4A4", +"k. c #ACACAC", +"l. c #A8A6A6", +"z. c #BBAAA9", +"x. c #BAB9AB", +"c. c #ACA9B9", +"v. c #B8ABB5", +"b. c #ABBBB8", +"n. c #B5B5B4", +"m. c #BBBBBB", +"M. c #BAB2BE", +"N. c #A9BDA4", +"B. c #C28782", +"V. c #C19896", +"C. c #C5AC93", +"Z. c #C0AFAF", +"A. c #C5B6AC", +"S. c #C2BCBC", +"D. c #C2B6B5", +"F. c #8FC28C", +"G. c #BCC393", +"H. c #9ACAA6", +"J. c #B8C1B7", +"K. c #BDC4AD", +"L. c #C0C384", +"P. c #C2C190", +"I. c #C2C1B8", +"U. c #C1C1AC", +"Y. c #8B82C9", +"T. c #BEBDC1", +"R. c #B5B5C7", +"E. c #C9BCCB", +"W. c #BBC6CB", +"Q. c #C4C3C3", +"!. c #CCCDCC", +"~. c #C7C9C7", +"^. c #D1CDCC", +"/. c #CDD0CD", +"(. c #D1D2CD", +"). c #D6D8CF", +"_. c #CCCCD5", +"`. c #D2CED3", +"'. c #D6CDD9", +"]. c #CDD5D5", +"[. c #CED9D9", +"{. c #C9D7DA", +"}. c #D5D5D5", +"|. c #D9D7D7", +" X c #D6DAD5", +".X c #DADAD6", +"XX c #D4D4DC", +"oX c #D4DCDD", +"OX c #DADBDB", +"+X c #DCD5DC", +"@X c #E0DFD9", +"#X c #DDE3DB", +"$X c #DADAE1", +"%X c #D8D9E6", +"&X c #CFDCE7", +"*X c #E0D9E8", +"=X c #DBE2E4", +"-X c #D5E6E6", +";X c #E3E4E3", +":X c #E6E9E4", /* pixels */ -"gXgXgXgXjXVXdXgXgXhXVXhXgXgXgXhXNXgXgXgXgXmXhXgXgXgXgXgXgXgXgXgX", -"gXgXgXVX9X1XMXhXnXcX.XpXVXgXCX0X1XzXnXnXlX1XuXBXgXgXgXnXgXgXgXgX", -"gXgXMXv % - k cX0X4 - * E.KX>._ } 1.zX0Xo.} ' 4XCX2XyX@X9XiXnXnX", -"gXVX}.- , , > U.N , , , 6 X[ .... .Q.q.......` 2XpXpX#XCX9XnXgX", -"gXVXT.> , , , c s , , , & W. .......%.1.......[ qX@X#XuX].gXgXgX", -"gXhXyX* , , - }.Z > , , 8 tX` ....} |.6. .....o.zXP.K.[.J.iXgXgX", -"gXgXCX;Xd 0 %XMXfXA w C 9XCX.+.8.0XnXiXiXdXuXgXgXgX", -"gXgXhXiXG.H.tXjXBX5XQ F.xXjXpXn x ,XMXMX`.x C.gXhXiXpXgXuXhXgXgX", -"gXhXsXc.d.j.g.rX3XD F G T zX4 , , % , 5 aX;X* , - v SX!.!.OXL.pXnXgX", -"gXgXhXVX(./.pXkXVXyX~ _.LXhXPXR.I.bXjXVXtXb [.PXdXSXFXjXAXhXhXgX", -"gXgXHX4.p ^ $.fXyX( a f ~.KXb = 2 k cXyX8 < 5 E.FXJ.# 0X{.pXnXgX", -"gXhX.Xt ^ ^ e W.,.u ^ i ) [.: , , > U.S , , , = vXo . [.K.pXhXgX", -"gXVXW.y ^ ^ i -.( i ^ ^ p b > , , , z m , , , - 1X9X#XiX#XgXgXgX", -"gXhX9Xh i i e ;X4.r ^ u ( tX* , , ; ~.Z > , , 7 vXP.L.[.J.iXgXgX", -"gXgXVX;X) ) =XMXfX4.g ,.0XVX-Xm 8 U.CXgXA q B 9XVXuXuXpX9XgXgXgX", -"gXgXmXpXG.v.eXNXnX6X%.Q.zXjXfXb c 2XCXNXoXD.).kXhXdXpXnXiXhXgXgX", -"gXgXsXx.d.j.g.eX*X} .. .%.lX7 , , % .HXk > , 5 uX#Xe.u.w.S.jX@XyX[.L.pXhXgX", -"gXgXhXgX)./.pXjXmXrX:..XBXkXPXR.*.bXhXNXqXV.[.ZXgXVXNXAXUXhXgXgX", -"gXgXcXQ.X.| %.zX0XE H K ^.KXY.3 1 N cXuXN.i.r._.FXJ.$ ].+ sXnXgX", -"gXBX+X[ .... .*X! F F F K }.: , , , Y.A.u.m.u.e.gXo X @ +XjXgX", -"gXBXQ. .......5.P F F F H *.> , , , V p.u.n.n.t.9X!.K.+X$ hXvXgX", -"gXhX9X' ....} >X~ G F F I rX= , , - %X).t.n.u.r.NXo X + OXNXgX", -"gXgXCX|.O.#.Q.zXdXR L T qXSX}.9 6 =.MXgXA.M.N.1XNX].!.@XL.gXgXgX", -"gXgXgXnXeXXXzXhXgXxXoXrXhXdXNXtX$XMXgXnXkX XqXjXgXAXVXhXAXgXgXgX", -"gXgXnXgXsXpXgXgXgXfXiXsXgXgXdXsXsXdXgXgXpXpXpXgXgXgXgXgXgXgXgXgX", -"gXhXgXnXhXhXgXgXgXgXnXnXgXgXgXhXnXnXgXgXnXnXhXgXgXgXgXgXgXnXgXgX" +"}.}.}.}.|.OX}.}.}.}.OX}.}.}.}.|.|.}.}.}. XOX|.}.}.}.}.}.}.}.}.}.", +"}.}.}.#XQ.S.-X}. X[.D._.oX}.%X~.I.%X}.}._.m.~.$X}.}.}.|.}.}.}.}.", +"}.}.oXi # & e [.Q.1 * % p.%X! G K ' _.~.Y L H a.XXJ.Q.Q.T.!.|.}.", +"}.OXv.& ; ; - r.s ; ; ; < n.L I I P i.[ I I I H E.!.(.n.oXQ. X}.", +"}.=Xy.* ; ; ; u a ; ; ; > s.P I I I ` ' I P I K I.T.n.~.l.}.}.|.", +"}.|.Q.% ; ; & v.i - ; ; a W.H I I K A.i.P I I Y XXw.q.k.0.!.|.}.", +"}.}.oXD.f 3 V.#X[.j 4 h ~.%XD.' ' P.XXXXL.' ] ~.XX!.!.}.~.XX}.}.", +"}.}. X/.8.9.W..XOXH.C 7.'.|.!.p y D.oXoXz.t 3. XOX!.!.}.Q.|.}.}.", +"`.|.^.-.#.%.$.R.F.l z x M '.1 ; ; # D.y.& ; - e -Xo X + T.OX}.", +"}..Xh.@.=.=.%.:.m z z z c e.* ; ; ; u a ; ; ; & ~.0.@ l.O !.}.}.", +"}..Xc.@.=.=.#.Y.V z z z v t.* ; ; ; i s ; ; ; $ ~.m.k.S.j.}.}.}.", +"}.}.).;.&.&.-.^.K.n z l F.=Xr * - , !.D.% ; & i =Xl.j.m.q.].|.}.", +"}.}.}. Xd.f./.|.*X~.W b.*X}.-Xt.e.{.OX$XW.~ c.-X/.#X:XOXOX|.}.}.", +"}.}.%Xu.S 5 ) ].Q.D 9 0 p.=Xr.: : d [.~.2 : < y.#X2.@ Q.k.}.}.}.", +"}.OXx.5 A A 8 p.) 6 A 7 0 c.= ; ; - r.k ; ; ; % [.o . n.q.!.|.}.", +"}.oXp.8 A A 7 ~ ^ A 7 A S e.- ; ; ; u a ; ; ; & S.Q.n.!.n.}.}.}.", +"}. XQ.w 6 6 8 x.( 8 7 6 g W.% ; ; * z.j - ; ; 1 oXw.q.k.0.!.|.}.", +"XX}.|.A.F F p.$X`.( q ) I.%XD.a 2 V. X].j 3 d I.OX!.!.}.Q.}.}.}.", +"}.}.|.].8.;.T.OXXXK.` G.OX#X].~ u T.oXOXM.5.f. X|.].!.|.!. X}.}.", +"}.}.(.-.#.%.$.R.P.K I P / {.1 ; ; # S.g.| >.| 1.:Xo X + m.|.}.", +"}.@Xd.&.=.=.%.;.T I I I U e.- ; ; ; g 5.>.>.,. .~.@ + j.O !.|.}.", +"].OXR.@.*.=.#.8.' I I I J t.* ; ; - k 5...>.,. .m.}.}.m.l.].}.}.", +"}.|.(.+.&.%.-.!.x.G I L ! -Xd - ; , ~.M.{ ..| 2..Xm.Q.c.q.!.|.}.", +"}.}.}.|.f.f._.|.%XE.! x.%X|.-Xt.e.{.|.#X~.2.k.#X}.OXOX;X:X|.}.}.", +"}.}.XXi.U L Q %X~.V c b N.$Xr.% : s {.!.1.X.<.c.:X0.0.l.+ !.}.}.", +"}.XXm.K I I P C.C z z z b v.= ; ; - B.6.| >.>.{ |.o X + m.|.}.", +"}.$Xa.P I I I _ B z z z c e.- ; ; ; g O.,.>.>. .Q.j.q.m.@ }.|.}.", +"}.|.Q.G I I L A.Z x z z b E.% ; ; & C.6.| >...} #Xo . + m.OX}.", +"}.}.OXx.Y T i.{.`.N b V I.$Xz.2 4 r.oX).6.<.1.m.;Xk.j.T.q.}.}.}.", +"}.}.}.XXR.M.XX|.}.'.v.E.OX}.|.W.b.[.}. X Xn.~.|.}.OX$X X;X|.}.}.", +"}.}.}.}.(.!.(.}.}.]././.}.|.}.!.`.!.}.}.!.!.!.}.}.}.}.}.].}.}.}.", +"}.|.}.}.|.|.}.}.}.}.}.|.}.}.}. X}.|.}.}.}.|.}.}.}.}.}.|.}.}.}.}." }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 256 2 ", +"48 48 203 2 ", " c black", ". c #0B0B0B", -"X c #1F1E1E", -"o c #212120", -"O c #343432", -"+ c #3B3A39", -"@ c #40403E", -"# c #4B4A48", -"$ c #585856", -"% c #605F5D", -"& c #62605E", -"* c #6E6D6B", -"= c #71706E", -"- c #7C7977", -"; c #BC1E1D", -": c #BB221E", -"> c #B72B29", -", c #B33432", -"< c #C30E0D", -"1 c #CC0908", -"2 c #D30202", -"3 c #DC0000", -"4 c #D10A0A", -"5 c #C31716", -"6 c #C5130F", -"7 c #E30000", -"8 c #EB0000", -"9 c #F30000", -"0 c #FE0202", -"q c #CF201F", -"w c #CA2F34", -"e c #C9312D", -"r c #BC6917", -"t c #AE413F", -"y c #B76E25", -"u c #B37538", -"i c #AF7334", -"p c #DD7205", -"a c #CF6C0B", -"s c #E56C00", -"d c #F47301", -"f c #FD7D01", -"g c #FB7600", -"h c #EC7000", -"j c #CC7924", -"k c #AE4745", -"l c #BC4847", -"z c #BE524D", -"x c #AC5755", -"c c #BB5652", -"v c #B55A57", -"b c #BA655D", -"n c #AE7C4A", -"m c #AB6866", -"M c #AA716E", -"N c #AD7D7A", -"B c #B37A77", -"V c #B76C67", -"C c #C04F47", -"Z c #27B926", -"A c #36AF33", -"S c #41B13C", -"D c #02DD02", -"F c #07D507", -"G c #07CB06", -"H c #00EA00", -"J c #00E500", -"K c #01F401", -"L c #01FE01", -"P c #36C838", -"I c #57B85E", -"U c #53AC51", -"Y c #69B164", -"T c #70AF6F", -"R c #3FC240", -"E c #43C34B", -"W c #BCBC18", -"Q c #B9B825", -"! c #B4B435", -"~ c #B0AE3B", -"^ c #FF8302", -"/ c #C3813A", -"( c #CCC90C", -") c #DCDB02", -"_ c #D5D506", -"` c #C7C716", -"' c #E4E400", -"] c #EBEA00", -"[ c #F3F300", -"{ c #FEFE02", -"} c #F7FC02", -"| c #EFF200", -" . c #CDCB24", -".. c #C4C939", -"X. c #AF8153", -"o. c #ADAC44", -"O. c #B7B84C", -"+. c #B4B357", -"@. c #ACAB57", -"#. c #83827F", -"$. c #B48966", -"%. c #AB827E", -"&. c #B69978", -"*. c #AF8862", -"=. c #85AD7E", -"-. c #ACAC6A", -";. c #B2AE72", -":. c #B6B774", -">. c #B1AD6D", -",. c #C29052", -"<. c #C0AD78", -"1. c #C2C247", -"2. c #680A8E", -"3. c #690394", -"4. c #6B009C", -"5. c #670095", -"6. c #6A168B", -"7. c #7300A4", -"8. c #7501AA", -"9. c #7900AF", -"0. c #7B00B1", -"q. c #3546BF", -"w. c #4956B3", -"e. c #4855B2", -"r. c #5E67AB", -"t. c #5B66B1", -"y. c #6D74AA", -"u. c #767DBA", -"i. c #2C3DD7", -"p. c #1E39EF", -"a. c #243CEC", -"s. c #233EFC", -"d. c #203BF7", -"f. c #3548CC", -"g. c #3043CB", -"h. c #2541FF", -"j. c #2943FC", -"k. c #2F4AFF", -"l. c #334CFE", -"z. c #3952FF", -"x. c #3650FF", -"c. c #4455CB", -"v. c #5B6CC7", -"b. c #8203B4", -"n. c #8501BC", -"m. c #8804BC", -"M. c #855A95", -"N. c #81548F", -"B. c #8B6696", -"V. c #93739B", -"C. c #8E7BA8", -"Z. c #7782B9", -"A. c #7C84A7", -"S. c #878582", -"D. c #8E8B89", -"F. c #918E8B", -"G. c #93918E", -"H. c #99839D", -"J. c #999793", -"K. c #9B9995", -"L. c #999894", -"P. c #AD8E8A", -"I. c #AC8481", -"U. c #B38885", -"Y. c #AB908D", -"T. c #B7958B", -"R. c #A99A97", -"E. c #B39995", -"W. c #B49796", -"Q. c #AB8C9B", -"!. c #86B284", -"~. c #93B092", -"^. c #ABAA85", -"/. c #B2B386", -"(. c #A3A19D", -"). c #ABAC94", -"_. c #B4A79A", -"`. c #A3B39B", -"'. c #B8B39D", -"]. c #B0AB89", -"[. c #9B89A4", -"{. c #9897AD", -"}. c #989CB8", -"|. c #A696A4", -" X c #BC9DAA", -".X c #97A2AD", -"XX c #A8A5A4", -"oX c #ACAAA6", -"OX c #ADABAA", -"+X c #A8A6A6", -"@X c #B3A5A1", -"#X c #B5AAA5", -"$X c #B2AEAC", -"%X c #BFA0A0", -"&X c #B5B3AC", -"*X c #B9B4AF", -"=X c #B8B4A4", -"-X c #AAAAB1", -";X c #ACBCB5", -":X c #B5B4B2", -">X c #B9B6B4", -",X c #BBBAB5", -" c #C90B0A", +", c #D30202", +"< c #DC0000", +"1 c #D20A0A", +"2 c #C31615", +"3 c #E40000", +"4 c #EC0000", +"5 c #F30000", +"6 c #FE0202", +"7 c #C92828", +"8 c #CB3036", +"9 c #CE342F", +"0 c #B17437", +"q c #B76F27", +"w c #BD6A18", +"e c #D46E09", +"r c #E66C00", +"t c #F47301", +"y c #FD7D01", +"u c #FB7600", +"i c #ED7000", +"p c #CC7926", +"a c #AD4545", +"s c #BC4A4A", +"d c #AB5757", +"f c #B85857", +"g c #BF544E", +"h c #AF7B48", +"j c #AB6969", +"k c #B96663", +"l c #AB7A7A", +"z c #B37878", +"x c #BB7169", +"c c #C0524C", +"v c #C04547", +"b c #29B829", +"n c #3CAE3B", +"m c #40B23E", +"M c #02DE02", +"N c #07D406", +"B c #0AC80A", +"V c #00E800", +"C c #01FE01", +"Z c #01F401", +"A c #35C83A", +"S c #52B057", +"D c #5CBB62", +"F c #6DB16E", +"G c #3FC242", +"H c #43C44E", +"J c #BDBD17", +"K c #B9B924", +"L c #B3B437", +"P c #B0AF3E", +"I c #FF8302", +"U c #C3823C", +"Y c #D8D805", +"T c #C9C811", +"R c #E3E300", +"E c #EBEA00", +"W c #F3F300", +"Q c #FEFE02", +"! c #F7FB03", +"~ c #C5CA3B", +"^ c #CDCB25", +"/ c #AF8156", +"( c #ADAD47", +") c #B1B353", +"_ c #B1B155", +"` c #B6997B", +"' c #B28968", +"] c #B3B365", +"[ c #B6B877", +"{ c #AEAD70", +"} c #C2A069", +"| c #C2C349", +" . c #680A8E", +".. c #690393", +"X. c #6A009A", +"o. c #6B178C", +"O. c #7400A4", +"+. c #7701AC", +"@. c #7C00B1", +"#. c #3546BF", +"$. c #4B57B3", +"%. c #414FB7", +"&. c #5B67B1", +"*. c #6D75AC", +"=. c #6A73B3", +"-. c #2C3DD8", +";. c #1F39F2", +":. c #243CEC", +">. c #233EFC", +",. c #3346CC", +"<. c #2943FC", +"1. c #2944FF", +"2. c #334CFE", +"3. c #3952FF", +"4. c #3750FF", +"5. c #4555CC", +"6. c #777EC1", +"7. c #5B6DCA", +"8. c #8203B4", +"9. c #8501BC", +"0. c #8804BC", +"q. c #845996", +"w. c #8B6799", +"e. c #947D9D", +"r. c #9073A6", +"t. c #7B84B2", +"y. c #7384C2", +"u. c #858585", +"i. c #8D8D8D", +"p. c #9B9A9A", +"a. c #959494", +"s. c #908D8F", +"d. c #AB8787", +"f. c #B28B8B", +"g. c #B38686", +"h. c #AC9393", +"j. c #AD9D9C", +"k. c #B39897", +"l. c #B28E94", +"z. c #8DB190", +"x. c #B3A986", +"c. c #BEB299", +"v. c #ADAE91", +"b. c #9A87A5", +"n. c #989AB7", +"m. c #A598A8", +"M. c #B295A7", +"N. c #97A3B6", +"B. c #A3A3A3", +"V. c #ABABAB", +"C. c #AAA6AA", +"Z. c #B3A3A3", +"A. c #B5AAA8", +"S. c #B6B7AD", +"D. c #B7B5A6", +"F. c #ABACB5", +"G. c #B8A9B4", +"H. c #B4B3B3", +"J. c #BBBBBC", +"K. c #B7B7B7", +"L. c #AAB8B0", +"P. c #C2B8BC", +"I. c #B2C1BB", +"U. c #C2C2BD", +"Y. c #BEBEC5", +"T. c #ADBFC2", +"R. c #C3BEC2", +"E. c #BCC2C3", +"W. c #BBC7C9", +"Q. c #B7C9CE", +"!. c #C3C4C4", +"~. c #C3C4CD", +"^. c #C4CDCD", +"/. c #CCCCCB", +"(. c #CAC6C5", +"). c #D3CDCB", +"_. c #D4D3CB", +"`. c #DAD8CD", +"'. c #CDCDDC", +"]. c #C7C8D3", +"[. c #CBD3D5", +"{. c #CCD9D9", +"}. c #C8D3D9", +"|. c #D5D5D5", +" X c #D9D6D6", +".X c #DADBD6", +"XX c #D4D3DB", +"oX c #D4DDDD", +"OX c #DBDBDB", +"+X c #D7D8D6", +"@X c #D1CDD3", +"#X c #DDE2DB", +"$X c #E2E5DB", +"%X c #D7C9E5", +"&X c #CADAE3", +"*X c #D4DAE3", +"=X c #D9D9E3", +"-X c #E4D9E4", +";X c #D5E2E2", +":X c #DBE2E2", +">X c #DCECEC", +",X c #E4E6E4", +"X&XpXBXlXlXBXvX>X&XpXBXlXzXBXBXzXBXBXBXlXlXlXlXlX", -"lXlXlXlXzXmXm 4 7 1 M VXzXaXx 2 7 5 I.VXzXtXo.) ) ` ).DXBX 0 0 0 0 0 l rX5 0 0 0 0 0 v eX( { { { { [ :.>X_ { { { { ] ^.SX(.S.$X$XS.(.NXlXlXlXlX", -"lXlXlXlXAXE.2 0 0 0 1 @XPXI.3 0 0 0 5 ,XLX-.' { { { Q 8XZX@.] { { } ! dXxXXXS.>X*XS.oXNXlXlXlXlX", -"lXlXlXlXlXDX@Xz e c $XAXgXAXE.t w v ,XVXlXmX].1...-.4XBXzXvX;.1...-.tXBXlXlXyXlXlXyXlXNXlXlXlXlX", -"lXlXlXlXlXlXKX;X.X 7 8 1 %.AXBX&X: 8 8 < P.AXCX(.$ ,X,X$ (.CXlXlXlXlX", -"lXlXNXlXxXy.d.z.x.x.p.A.FXS L L L L J !.ZX, 0 0 0 0 3 E.mX: 0 0 0 0 2 &XJXO & % O CXlXlXlXlX", -"lXlXlXBX9Xf.l.l.k.x.k.c.=XF L L L L L R X7 0 0 0 0 0 v R.8 0 0 0 0 0 m PX- X K.(.X #.CXlXlXlXlX", -"lXlXlXBX3Xg.l.l.k.l.k.c._.D L L L L L P W.7 0 0 0 0 0 z Y.9 0 0 0 0 0 v HXgX,XBXlX>XkXNXlXNXlXlX", -"lXlXlXlXcXw.j.z.l.z.h.r.hXZ L L L L K Y dX6 0 0 0 0 9 %.8X2 0 0 0 0 8 P.GXK.- oXOX- K.BXlXlXlXlX", -"lXlXlXlXCXOXg.s.j.h.q.>XFX~.F L L L Z 4XGX%.3 0 0 9 , aXHXm 7 0 0 8 k mXBX$XD.,X,XF.$XBXlXlXlXlX", -"lXlXlXlXNXCX,Xu.v.Z.3XCXgXCX&XI E T qXBXgXVX%Xv c N aXBXlXVXE.v z U.kXNXlXlXiXlXNXgXlXlXlXlXlXlX", -"lXlXlXlXlXBXVX'.&.'.AXzXlXBXMX%XT.5XAXzXlXCXmXR.P.6XHXlXlXCXjXE.Y.wXSXgXlXSXJXCXNXCXBXlXlXNXlXlX", -"NXlXlXlXVXtXi s g s n aXSX 0 0 0 0 3 W.jX; 0 0 0 0 2 @XJXO $ $X- K.xXlXlXlXlX", -"lXlXlXBXwXa ^ ^ ^ ^ ^ j -Xp ^ f ^ ^ f / +X7 0 0 0 0 0 c R.8 0 0 0 0 0 v PXF.O XXfX(.6XNXlXlXlXlX", -"lXlXlXCX6Xa ^ f f f ^ j +Xp ^ f ^ f f / |.8 0 0 0 0 0 c Y.9 0 0 0 0 0 v HXiX>XlXiX$XyXNXlXlXlXlX", -"lXlXlXzXMXu f ^ ^ ^ f n MXy f ^ ^ ^ d $.rX5 0 0 0 0 8 U.wX1 0 0 0 0 7 E.GXL.- XXoX- K.BXlXlXNXlX", -"lXlXlXlXCX*Xr d f d y 0XJX#Xr g f h i uXGXY.2 0 0 8 k kXSX%.2 0 0 7 x MXBX&XG.8X8XG.&XBXlXlXlXlX", -"lXlXlXlXlXVXpX&.,.&.pXCXlXBX 0 0 0 0 3 E.kX6.n.b.b.n.3.OXJXO % % O CXlXlXlXlX", -"lXlXlXlXNXtX~ ' [ ) o.dXCX4XA J K D Y hXVX&X: 8 9 2 M VXCXOX6.7.7.3.H.CXBXL.@ &X&X@ J.SXlXlXlXlX", -"lXlXlXlXlXBXvX'./.=XvXBXlXBXnX`.!.&XDXNXlXBXjXE.U.,XVXlXgXCX9X|.[.8XxXlXlXSXJXSXCXJXSXlXlXlXlXlX", -"lXlXlXlXlXlXgX,X-X4XlXlXlXgXfX>X2X8XgXlXlXlXiX>X;X8XlXlXNXlXyX1X&X8XlXlXlXlXgXlXlXgXgXlXlXlXlXlX", -"lXlXlXlXlXNXgXiXiXiXlXlXlXlXgXiXiXiXgXNXlXlXgXiXyXiXlXlXlXlXgXiXyXiXlXlXlXlXNXlXlXNXlXlXlXlXlXlX", -"lXlXlXlXNXlXNXNXBXBXlXNXlXlXNXNXNXBXlXlXlXlXlXBXzXzXlXlXlXlXBXlXzXNXlXlXlXlXlXlXlXlXlXlXlXlXlXlX", -"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXNXlXlXlXlXlXlXNXlXlXlXlXlXlXlXlXNXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlX", -"lXlXNXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXNXlXlXlXlXlXlXlXlXNXlXlXlXlXzXlXlXlXlX" +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.+X|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.+X|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.OX:XOX|.|.|.|.|.OXOX+X|.|.|.|..XOXOXOX|.|.|.|.|.OXOX.X|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|. X;XE.A.!.oX X|. XoXJ.A.^.*X|.|.OX'.J.S.~.OX|.|.OX'.K.H.~.OX+X|.OXOX|.+XOXOX|.+X|.|.|.", +"|.|.|.|.|.{.j 1 < > l oX X^.d 1 3 2 d.oX X!.( Y Y T v.=XOXY.P Y R K D.XX+XJ.V.~.~.V.J.OX|.|.|.|.", +"|.|.|.|.;Xj 5 6 6 6 3 l >Xd 6 6 6 6 < h.*X( Q Q Q Q Y S.'.K Q Q Q Q T J.|.S. 6 6 6 6 6 s K.Y ! ! Q Q Q _ D.R Q Q Q Q W { *XS./.K.H./.H.|.|.|.|.|.", +"|.|.|.OXE.1 6 6 6 6 6 7 B.< 6 6 6 6 6 8 v.E Q Q Q Q Q ) v.W Q Q Q Q Q _ *X(.B.|.|.B./.OX|.|.|.|.", +"|.|.|. X{.; 6 6 6 6 6 s Q.2 6 6 6 6 6 f W.T Q Q Q Q W [ K.Y W Q Q Q E x.=XB.u.H.H.u.B.+X|.|.|.|.", +"|.|.|.|.#Xk., 6 6 6 > Z.>Xd.< 6 6 6 : J.=X{ R Q Q Q K R.*X] E Q Q W L ]..XV.u.J.K.u.C.+X|.|.|.|.", +"|.|.|.|.|.oXV.s 9 f H.oX_.oXj.s 8 f J.OX|.XXv.| ~ ] R.=X X'.x.~ ~ { ~.OX+X|.!.+X+X~.|.+X|.|.|.|.", +"|.|.|.|.|.|.$XJ.N.E.$X|.|. X=XI.z.Q.-X|.|.OX&XC.h.Q.:XXX|.OX&Xm.m.].:X|.|.OX,XOXOX,XOX|.|.|.|.|.", +"|.|.|.|.+X/.&.-.:.-.*./.#X!.n M Z N F %XOXJ.- 3 4 1 l oX+XH.= 4 4 2 h.OX.XB.# J.J.# B.OX|.|.|.|.", +"|.|.|.|.$X*.>.3.2.2.;.b.OXS C C C C V z.=X; 6 6 6 6 , Z.{.= 6 6 6 6 , V.,XO # $ O OX|.|.|.|.", +"|.|.|.XXU.,.2.2.2.2.2.5.D.N C C C C C G G.3 6 6 6 6 6 f Z.3 6 6 6 6 6 j >Xl X B.B.X *.`.|.|.|.|.", +"|.+X|.OXU.,.2.2.2.2.2.,.B.V C C C C C A M.3 6 6 6 6 6 s h.5 6 6 6 6 6 d ;XQ.K..X.XP.`.`.+X|.|.|.", +"|.|.|.|.`.$.2.3.2.3.1.&.).b C C C C C F ].> 6 6 6 6 5 e.U., 6 6 6 6 4 h.:Xp.& V.V.F b.%X|.|.|.|.", +"|.|.|.|.OXV.-.1.1.>.#.K.-Xz.N C C Z b R.:Xd.< 6 6 5 ; ^.$Xx 3 6 6 5 a {..XF.i.J.P.s.G. X|.|.|.|.", +"|.|.|.|.|..XJ.=.7.t.U.OX|.OXH.D H F R.OX|.oXA.f g l [. X|.oXk.f c g.[. X|.|.@X|.+X_. X X|.|.|.|.", +"|.|.|.|.|.OX&Xc.` P.*X X|.OXXXA.f.P.oX X|.OX{.j.h.E.;X|.|.OX[.j.h.W.;X|.|.#X,XOX|.+X X X|.|.|.|.", +"|.|.+X|.XX^.0 r t r h ^.,XJ.q i u r / [.#XH.: 4 5 < j oXOXj.2 4 5 , l oXOXa.+ V./.B.I.OX|.|.|.|.", +"|.|.|.|.&X/ u I I I t ' &X0 y I I I i f.&X- 6 6 6 6 < k.}.2 6 6 6 6 , A.,XO # H.& p.+X|.|.|. X", +"|.|.|.OXW.e I y y I I p F.e I y I y y U C.3 6 6 6 6 6 f j.4 6 6 6 6 6 j >Xs.O C./.B.U.+X|.|.|.|.", +"|.|.|.+XE.e I y I y I p V.e I y I I y U m.3 6 6 6 6 6 g h.5 6 6 6 6 6 f ;X/.K.|.@XF./.|.|.|.|.|.", +"|.|.|.|.{.h y I y I u / &Xq y I I I t ' }.: 6 6 6 6 4 g.W.> 6 6 6 6 3 j.:Xp.& C.M.F p.XX|.|.|.|.", +"|.|.|.|.OXJ.p t u t q R.:XA.e u y t 0 ~.:Xh., 6 6 4 a [.:Xd., 6 6 3 d oX XH.a.!.R.a.H.+X|.|.|.|.", +"|.|.|.|.|.OXY.` } ` ^.oX|.OXE.` ' k.[.+X|.oXJ.z x k.{.OX|.oXH.x x Z.{.|.|.+X|.+XXXXXXX+X|.|.|.|.", +"|.|.|.|.|.+X/.n.y.N._.+X|. X~.v.[ D.'.|.|.OX~.f.l A.=X|.|.OXY.b.r.H.#X|.|.OXOXOX X-XOX|.|.|.|.|.", +"|.|.|.|.OXI.%.:.<.:.$.(.-XS.J W Q E ( ~.:XZ.> 5 6 3 d {.OXm...O.+...w.#XOXu.o B.B.o u.OX|.|.|.|.", +"|.|.|.|.`.&.>.3.4.3.;.*.|.L Q Q Q Q W { }.= 6 6 6 6 3 f.^. .9.8.8.0.X.m.,XO $ $ O OX|.|.|.|.", +"|.|.|.OXU.,.4.2.2.2.4.5.D.Y Q Q Q Q Q ~ m.4 6 6 6 6 6 g n.O.8.8.@.8.+.q.$XB.@ J.H.# B.OX|.|.|.|.", +"|.|.|.OX(.,.2.2.2.2.2.,.D.Y Q Q Q ! Q ~ m.3 6 6 6 6 6 g m.O.8.@.8.8.@.q.#XY.J.(.@XH./. X|.|.|.|.", +"|.|.|.|.`.&.>.3.3.3.<.*.|.L Q Q Q Q W { '.- 6 6 6 6 3 l.^.o.9.8.8.9.X.C.|.H. 0, + "\x00\x00\x80\x00" => 1, + "\x00\x80\x00\x00" => 2, + "\x00\x80\x80\x00" => 3, + "\x80\x00\x00\x00" => 4, + "\x80\x00\x80\x00" => 5, + "\x80\x80\x00\x00" => 6, + "\xC0\xC0\xC0\x00" => 7, + "\x80\x80\x80\x00" => 8, + "\x00\x00\xFF\x00" => 9, + "\x00\xFF\x00\x00" => 10, + "\x00\xFF\xFF\x00" => 11, + "\xFF\x00\x00\x00" => 12, + "\xFF\x00\xFF\x00" => 13, + "\xFF\xFF\x00\x00" => 14, + "\xFF\xFF\xFF\x00" => 15, +); +@win16pal = sort { $win16pal{$a} <=> $win16pal{$b} } keys %win16pal; + +# The black and white palette consists of black (000000) and white +# (FFFFFF), obviously. +%win2pal = ( + "\x00\x00\x00\x00" => 0, + "\xFF\xFF\xFF\x00" => 1, +); +@win2pal = sort { $win16pal{$a} <=> $win2pal{$b} } keys %win2pal; + +@hdr = (); +@dat = (); + +$depth = undef; +foreach $_ (@ARGV) { + if (/^-(24|8|4|1)$/) { + $depth = $1; + } elsif (defined $depth) { + &readicon($_, $depth); + } else { + $usage = 1; + } +} +if ($usage || length @hdr == 0) { + print "usage: icon.pl ( -24 | -8 | -4 | -1 ) image [image...]\n"; + print " [ ( -24 | -8 | -4 | -1 ) image [image...] ...]\n"; + exit 0; +} + +# Now write out the output icon file. +print pack "vvv", 0, 1, scalar @hdr; # file-level header +$filepos = 6 + 16 * scalar @hdr; +for ($i = 0; $i < scalar @hdr; $i++) { + print $hdr[$i]; + print pack "V", $filepos; + $filepos += length($dat[$i]); +} +for ($i = 0; $i < scalar @hdr; $i++) { + print $dat[$i]; +} + +sub readicon { + my $filename = shift @_; + my $depth = shift @_; + my $pix; + my $i; + my %pal; + + # Determine the icon's width and height. + my $w = `identify -format %w $filename`; + my $h = `identify -format %h $filename`; + + # Read the file in as RGBA data. We flip vertically at this + # point, to avoid having to do it ourselves (.BMP and hence + # .ICO are bottom-up). + my $data = []; + open IDATA, "convert -set colorspace sRGB -flip -depth 8 $filename rgba:- |"; + push @$data, $rgb while (read IDATA,$rgb,4,0) == 4; + close IDATA; + # Check we have the right amount of data. + $xl = $w * $h; + $al = scalar @$data; + die "wrong amount of image data ($al, expected $xl) from $filename\n" + unless $al == $xl; + + # Build the alpha channel now, so we can exclude transparent + # pixels from the palette analysis. We replace transparent + # pixels with undef in the data array. + # + # We quantise the alpha channel half way up, so that alpha of + # 0x80 or more is taken to be fully opaque and 0x7F or less is + # fully transparent. Nasty, but the best we can do without + # dithering (and don't even suggest we do that!). + my $x; + my $y; + my $alpha = ""; + + for ($y = 0; $y < $h; $y++) { + my $currbyte = 0, $currbits = 0; + for ($x = 0; $x < (($w+31)|31)-31; $x++) { + $pix = ($x < $w ? $data->[$y*$w+$x] : "\x00\x00\x00\xFF"); + my @rgba = unpack "CCCC", $pix; + $currbyte <<= 1; + $currbits++; + if ($rgba[3] < 0x80) { + if ($x < $w) { + $data->[$y*$w+$x] = undef; + } + $currbyte |= 1; # MS has the alpha channel inverted :-) + } else { + # Might as well flip RGBA into BGR0 while we're here. + if ($x < $w) { + $data->[$y*$w+$x] = pack "CCCC", + $rgba[2], $rgba[1], $rgba[0], 0; + } + } + if ($currbits >= 8) { + $alpha .= pack "C", $currbyte; + $currbits -= 8; + } + } + } + + # For an 8-bit image, check we have at most 256 distinct + # colours, and build the palette. + %pal = (); + if ($depth == 8) { + my $palindex = 0; + foreach $pix (@$data) { + next unless defined $pix; + $pal{$pix} = $palindex++ unless defined $pal{$pix}; + } + die "too many colours in 8-bit image $filename\n" unless $palindex <= 256; + } elsif ($depth == 4) { + %pal = %win16pal; + } elsif ($depth == 1) { + %pal = %win2pal; + } + + my $raster = ""; + if ($depth < 24) { + # For a non-24-bit image, flatten the image into one palette + # index per pixel. + $pad = 32 / $depth; # number of pixels to pad scanline to 4-byte align + $pmask = $pad-1; + for ($y = 0; $y < $h; $y++) { + my $currbyte = 0, $currbits = 0; + for ($x = 0; $x < (($w+$pmask)|$pmask)-$pmask; $x++) { + $currbyte <<= $depth; + $currbits += $depth; + if ($x < $w && defined ($pix = $data->[$y*$w+$x])) { + if (!defined $pal{$pix}) { + my $pixprintable = unpack "H*", $pix; + die "illegal colour value $pixprintable at pixel ($x,$y) in $filename\n"; + } + $currbyte |= $pal{$pix}; + } + if ($currbits >= 8) { + $raster .= pack "C", $currbyte; + $currbits -= 8; + } + } + } + } else { + # For a 24-bit image, reverse the order of the R,G,B values + # and stick a padding zero on the end. + # + # (In this loop we don't need to bother padding the + # scanline out to a multiple of four bytes, because every + # pixel takes four whole bytes anyway.) + for ($i = 0; $i < scalar @$data; $i++) { + if (defined $data->[$i]) { + $raster .= $data->[$i]; + } else { + $raster .= "\x00\x00\x00\x00"; + } + } + $depth = 32; # and adjust this + } + + # Prepare the icon data. First the header... + my $data = pack "VVVvvVVVVVV", + 40, # size of bitmap info header + $w, # icon width + $h*2, # icon height (x2 to indicate the subsequent alpha channel) + 1, # 1 plane (common to all MS image formats) + $depth, # bits per pixel + 0, # no compression + length $raster, # image size + 0, 0, 0, 0; # resolution, colours used, colours important (ignored) + # ... then the palette ... + if ($depth <= 8) { + my $ncols = (1 << $depth); + my $palette = "\x00\x00\x00\x00" x $ncols; + foreach $i (keys %pal) { + substr($palette, $pal{$i}*4, 4) = $i; + } + $data .= $palette; + } + # ... the raster data we already had ready ... + $data .= $raster; + # ... and the alpha channel we already had as well. + $data .= $alpha; + + # Prepare the header which will represent this image in the + # icon file. + my $header = pack "CCCCvvV", + $w, $h, # width and height (this time the real height) + 1 << $depth, # number of colours, if less than 256 + 0, # reserved + 1, # planes + $depth, # bits per pixel + length $data; # size of real icon data + + push @hdr, $header; + push @dat, $data; +} Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/inertia-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/inertia-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/inertia-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/inertia-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/inertia-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/inertia-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/inertia-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/inertia-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/inertia-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/inertia-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/inertia-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/inertia-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/inertia-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/inertia-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/inertia-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/inertia-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/inertia-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/inertia-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/inertia-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/inertia-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/inertia-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/inertia-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/inertia-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/inertia-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/inertia.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/inertia.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/inertia-icon.c sgt-puzzles-20160429.b31155b/icons/inertia-icon.c --- sgt-puzzles-20140928.r10274/icons/inertia-icon.c 2014-09-29 00:33:41.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/inertia-icon.c 2016-04-29 00:31:43.000000000 +0000 @@ -1,538 +1,541 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 172 2 ", -" c #D5D3CE", -". c #CECCC7", -"X c #D9D7D2", -"o c #DCDAD5", -"O c #CFCDC8", -"+ c #D0CEC9", -"@ c #D4D2CD", -"# c #D1CFCA", -"$ c #D2D0CC", -"% c #D3D1CC", -"& c #D2D0CB", -"* c #D6D4CF", -"= c #D5D4CE", -"- c #E4E2DC", -"; c #969491", -": c #71706E", -"> c #E2E0DB", -", c #CECDC8", -"< c #B9B7B3", -"1 c #C7C5C1", -"2 c #BEBCB8", -"3 c #C0BEB9", -"4 c #E6E4DE", -"5 c #E9E6E1", -"6 c #EAE7E2", -"7 c #CFCEC9", -"8 c #9D9C98", -"9 c #353533", -"0 c gray3", -"q c #6F6E6B", -"w c #CCCAC5", -"e c #BBB9B5", -"r c #D8D6D1", -"t c #B8B6B2", -"y c #E5E4DF", -"u c #E1DED9", -"i c #DEDBD6", -"p c #E3DFDA", -"a c #C9C7C2", -"s c #CECCC8", -"d c #DDDBD6", -"f c #4F4F4D", -"g c #0C0C0C", -"h c #1D1D1C", -"j c #D7D5D0", -"k c #CDCBC6", -"l c #E3E0DB", -"z c #E2DFDA", -"x c #DEDCD7", -"c c #CBC9C4", -"v c #3D3C3B", -"b c #131313", -"n c #AEACA8", -"m c #D1D0CB", -"M c #C6C4C0", -"N c #B2B0AC", -"B c #E8E6E2", -"V c #E0DDD8", -"C c #CAC8C3", -"Z c #D3D0CC", -"A c #D4D3CE", -"S c #C9C6C1", -"D c #B8B3AE", -"F c #D9D9D4", -"G c #C7C6C2", -"H c #CCC7C2", -"J c #C7C4BF", -"K c #CBCAC5", -"L c #C5C3BE", -"P c #CCCAC6", -"I c #DBD4CE", -"U c #B9C0BC", -"Y c #AABDBA", -"T c #D8CEC9", -"R c #CECECA", -"E c #DCD3CD", -"W c #A6B9B6", -"Q c #BAC2BE", -"! c #D8D1CC", -"~ c #DAD9D4", -"^ c #B5B3AF", -"/ c #222221", -"( c #A5A4A0", -") c #E1DFD9", -"_ c #DAD6D1", -"` c #B9BEBA", -"' c #8AE0E0", -"] c #8CF5F5", -"[ c #A3BDBA", -"{ c #D6CCC6", -"} c #A3BCB9", -"| c #8DF5F5", -" . c #8AE0DF", -".. c #BDC3BF", -"X. c #AAA7A3", -"o. c #2A2A29", -"O. c #2A2928", -"+. c #040404", -"@. c #9E9D99", -"#. c #DAD8D3", -"$. c #BABFBB", -"%. c #8CE0E0", -"&. c #A4BCBA", -"*. c #8DF4F4", -"=. c #8ADFDE", -"-. c #BDC2BE", -";. c #AEABA7", -":. c #151514", -">. c black", -",. c #0B0B0B", -"<. c #D3D2CD", -"1. c #DCD5D0", -"2. c #B8BFBB", -"3. c #A4B7B4", -"4. c #DBD1CC", -"5. c #CDCEC9", -"6. c #DDD3CE", -"7. c #DBD9D5", -"8. c #B6B7B0", -"9. c #232722", -"0. c #A6A7A1", -"q. c #DFDDD8", -"w. c #D3CFCA", -"e. c #D5CFCA", -"r. c #CECDC9", -"t. c #C7C6C1", -"y. c #C8C4BF", -"u. c #CAC9C4", -"i. c #CCCBC5", -"p. c #D3C7CC", -"a. c #CEBBC7", -"s. c #D2C6CC", -"d. c #B0AEAA", -"f. c #C5C4BF", -"g. c #B4B4AE", -"h. c #CABFC4", -"j. c #669F62", -"k. c #21D720", -"l. c #5AA357", -"z. c #C3B8BD", -"x. c #D4D5CD", -"c. c #C9C8C3", -"v. c #D9D7D1", -"b. c #D1D0CA", -"n. c #BEB5B7", -"m. c #16DA15", -"M. c green", -"N. c #09E109", -"B. c #B3B5AD", -"V. c #D8D5D1", -"C. c #BBB9B4", -"Z. c #BABBB4", -"A. c #C2B5BC", -"S. c #34B533", -"D. c #00F900", -"F. c #26BD25", -"G. c #B9B0B3", -"H. c #D6D6CF", -"J. c #BCBBB6", -"K. c #C1BFBB", -"L. c #C4C2BD", -"P. c #D4D0CD", -"I. c #B6AFB0", -"U. c #9EB899", -"Y. c #B2AEAD", -"T. c #D0CCCA", -"R. c #D2D1CB", -"E. c #D4D3CD", -"W. c #DAD9D3", -"Q. c #E0D7D9", -"!. c #DBD9D3", -"~. c gray100", +"16 16 248 2 ", +" c #D5D5D5", +". c #CECECE", +"X c gray85", +"o c gainsboro", +"O c gray81", +"+ c #D0D0D0", +"@ c gray83", +"# c gray82", +"$ c #D2D2D2", +"% c LightGray", +"& c #D2D2D2", +"* c gray84", +"= c #D5D5D5", +"- c #D5D5D5", +"; c #D5D5D5", +": c #D5D5D5", +"> c #D2D2D2", +", c #E4E4E4", +"< c gray59", +"1 c #717171", +"2 c #E2E2E2", +"3 c #CECECE", +"4 c gray72", +"5 c gray78", +"6 c gray", +"7 c gray75", +"8 c #E6E6E6", +"9 c gray91", +"0 c #E6E6E6", +"q c #E9E9E9", +"w c gray84", +"e c #D0D0D0", +"r c gainsboro", +"t c #9D9D9D", +"y c #353535", +"u c gray3", +"i c #6F6F6F", +"p c gray80", +"a c gray73", +"s c #D8D8D8", +"d c gray82", +"f c gray72", +"g c gray90", +"h c gray88", +"j c #DDDDDD", +"k c #E1E1E1", +"l c #C8C8C8", +"z c #CECECE", +"x c #DDDDDD", +"c c gray31", +"v c #0C0C0C", +"b c gray3", +"n c #1D1D1D", +"m c #B9B9B9", +"M c #D7D7D7", +"N c gray84", +"B c gray85", +"V c #CDCDCD", +"C c #E2E2E2", +"Z c #E1E1E1", +"A c gray87", +"S c #E2E2E2", +"D c #CBCBCB", +"F c gray81", +"G c #D7D7D7", +"H c #D7D7D7", +"J c #3C3D3D", +"K c #131313", +"L c #B9B9B9", +"P c LightGray", +"I c gray68", +"U c #D1D2D2", +"Y c #C6C6C6", +"T c #B2B2B2", +"R c #E7E7E7", +"E c #DFDFDF", +"W c #DFDFDF", +"Q c #E1E1E1", +"! c #CACACA", +"~ c #CECECE", +"^ c #D3D2D2", +"/ c #D4D5D5", +"( c #C9C8C8", +") c #B8B5B5", +"_ c #D9DBDB", +"` c gray79", +"' c #C7C8C8", +"] c #CCC9C9", +"[ c #C7C6C6", +"{ c #CBCCCC", +"} c #D0D0D0", +"| c #CBCBCB", +" . c gray77", +".. c gray80", +"X. c gray", +"o. c #D2D2D2", +"O. c #D4D5D5", +"+. c #DBD6D6", +"@. c #B8C1C1", +"#. c #A8BDBD", +"$. c #D8D1D1", +"%. c #CED0D0", +"&. c #DDD5D5", +"*. c #A5B9B9", +"=. c #B9C2C2", +"-. c #D8D3D3", +";. c #DADBDB", +":. c gray71", +">. c #222222", +",. c #A5A5A5", +"<. c #E1E1E1", +"1. c gray81", +"2. c #DAD9D9", +"3. c #B9BFBF", +"4. c #8ADEDE", +"5. c #8CF4F4", +"6. c #A2BCBC", +"7. c #D6CECE", +"8. c #A2BCBC", +"9. c #8DF4F4", +"0. c #89DEDE", +"q. c #BCC3C3", +"w. c #AAA8A8", +"e. c #2A2A2A", +"r. c #2A2A2A", +"t. c #040404", +"y. c gray62", +"u. c #DADADA", +"i. c #DAD9D9", +"p. c #B9BFBF", +"a. c #8BDFDF", +"s. c #8DF5F5", +"d. c #A1BCBC", +"f. c #D6CECE", +"g. c #A2BCBC", +"h. c #8DF4F4", +"j. c #89DEDE", +"k. c #BCC2C2", +"l. c #AFADAD", +"z. c #141515", +"x. c black", +"c. c #0B0B0B", +"v. c #9D9D9D", +"b. c #DADADA", +"n. c #D3D4D4", +"m. c #DDD8D8", +"M. c #B7BFBF", +"N. c #A2B7B7", +"B. c #DBD3D3", +"V. c #CDD0D0", +"C. c #DDD5D5", +"Z. c #A5B9B9", +"A. c #B9C2C2", +"S. c #D9D4D4", +"D. c #DBDBDC", +"F. c #B6B8B6", +"G. c #232723", +"H. c #A6A8A6", +"J. c #DFDFDF", +"K. c gray81", +"L. c gray83", +"P. c #CECFCF", +"I. c #D3D1D1", +"U. c #D5D1D1", +"Y. c #CECFCF", +"T. c #CCCBCB", +"R. c #C6C8C8", +"E. c #CCC9C9", +"W. c #C8C6C6", +"Q. c #CACACB", +"!. c #CCCDCB", +"~. c #D3C9D3", +"^. c #CEBCCE", +"/. c #D2C7D2", +"(. c #CCCDCC", +"). c #D2D2D2", +"_. c #D5D5D5", +"`. c gray84", +"'. c #D5D5D5", +"]. c #D4D5D5", +"[. c #D7D7D7", +"{. c #CBCBCB", +"}. c gray69", +"|. c #D1D2D2", +" X c #C5C5C5", +".X c #B4B6B3", +"XX c #CAC1CA", +"oX c #659F65", +"OX c #21D721", +"+X c #59A359", +"@X c #C3B9C3", +"#X c #D4D7D4", +"$X c #D5D5D5", +"%X c #D5D5D5", +"&X c #D5D5D5", +"*X c #D5D5D5", +"=X c gray84", +"-X c gray79", +";X c gray83", +":X c #D7D7D7", +">X c gray85", +",X c #D1D2D1", +" , < 1 2 3 4 5 4 6 * 7 ", -"o 8 9 0 q w e r # t y u i p a s ", -"d f g 0 h < j * X k l z x l c , ", -"j j v b < % n m M N B V V z C s ", -"Z A S D F a G H J K + w L P 2 & ", -"A I U Y T R E W Q ! ~ ^ / ( ) O ", -"_ ` ' ] [ { } | ...X.o.O.+.@.#.", -"_ $.%.| [ { &.*.=.-.;.:.>.,.8 #.", -"<.1.2.3.4.5.6.W Q ! 7.8.9.0.q.O ", -"@ , w.e.r.w t.H y.u.i.p.a.s.i.& ", -" * A j c d.m f.g.h.j.k.l.z.x.", -" * c.@ j v.b.n.m.M.N.B.V.", -" j 1 C.j 7 Z.A.S.D.F.G.H.", -" m J.u.K.L.P.I.U.Y.T.R.", -" X j r E.W.Q.!.= " +" . X o O + @ # $ % & * = - ; : ", +"> , < 1 2 3 4 5 6 7 8 9 0 q w e ", +"r t y u i p a s d f g h j k l z ", +"x c v b n m M N B V C Z A S D F ", +"G H J K L P I U Y T R E W Q ! ~ ", +"^ / ( ) _ ` ' ] [ { } | ...X.o.", +"O.+.@.#.$.%.&.*.=.-.;.:.>.,.<.1.", +"2.3.4.5.6.7.8.9.0.q.w.e.r.t.y.u.", +"i.p.a.s.d.f.g.h.j.k.l.z.x.c.v.b.", +"n.m.M.N.B.V.C.Z.A.S.D.F.G.H.J.K.", +"L.P.I.U.Y.T.R.E.W.Q.!.~.^./.(.).", +"_.`.'.].[.{.}.|. X.XXXoXOX+X@X#X", +"$X%X&X*X=X-X;X:X>X,X c #63625F", -", c #696866", -"< c #6E6D6A", -"1 c #767572", -"2 c #807F7C", -"3 c #13BC12", -"4 c #20BB1F", -"5 c #2DAD2B", -"6 c #3CA53A", -"7 c #0FCB0E", -"8 c #00D100", -"9 c #0AD10A", -"0 c #12C112", -"q c #00E100", -"w c #00F300", -"e c #02FE02", -"r c #628F5F", -"t c #4AA847", -"y c #50A34D", -"u c #758671", -"i c #7E827A", -"p c #77A573", -"a c #7AA076", -"s c #81807D", -"d c #7D9795", -"f c #7B9896", -"g c #7C9B99", -"h c #6AB4B4", -"j c #6CB8B8", -"k c #76C4C4", -"l c #78CACA", -"z c #8A8286", -"x c #8A8986", -"c c #8E8D89", -"v c #94898F", -"b c #92918D", -"n c #819F9D", -"m c #979692", -"M c #9A9495", -"N c #9C9A97", -"B c #9E9E9B", -"V c #A19D9C", -"C c #80A09E", -"Z c #9EA29F", -"A c #A3A29E", -"S c #A597A0", -"D c #9FA3A1", -"F c #A4A5A1", -"G c #AAA4A4", -"H c #ADAAA6", -"J c #AFADA9", -"K c #B2A2AC", -"L c #B1AEAB", -"P c #B4B3AE", -"I c #BCABB6", -"U c #B7B5B1", -"Y c #B8B6B2", -"T c #BCBAB6", -"R c #BFBDB8", -"E c #C1BFBA", -"W c #BFC1B9", -"Q c #C4C2BE", -"! c #89EBEB", -"~ c #8CEFF0", -"^ c #8EF2F2", -"/ c #97FBFB", -"( c #9EFFFF", -") c #A3FFFF", -"_ c #C6C5C0", -"` c #C8C7C2", -"' c #CCCAC5", -"] c #CECDC8", -"[ c #D2C7C2", -"{ c #D3CAC5", -"} c #D5C4CE", -"| c #D0CFCA", -" . c #D5D3CE", -".. c #DBC9D4", -"X. c #D7D5D0", -"o. c #D9D6D2", -"O. c #DCDAD5", -"+. c #DFDDD8", -"@. c #E2DDD7", -"#. c #E3D0DC", -"$. c #E1DDD9", -"%. c #E4E2DD", -"&. c #EDEBE5", -"*. c #F0EDE7", -"=. c #F1EFE9", -"-. c #F3F1EB", +"32 32 78 1 ", +" c #020202", +". c #0C0C0C", +"X c gray15", +"o c #2B2B2B", +"O c #3C3C3C", +"+ c #464646", +"@ c gray29", +"# c gray33", +"$ c #5B5B5B", +"% c gray38", +"& c #6C6C6C", +"* c gray46", +"= c #13BC13", +"- c #1FBB1F", +"; c #2DAD2D", +": c #20B920", +"> c #3CA53C", +", c #0ECA0E", +"< c #00D100", +"1 c #0AD20A", +"2 c #12C112", +"3 c #00E200", +"4 c #00F200", +"5 c #02FE02", +"6 c #4FA34F", +"7 c #49A849", +"8 c #628F62", +"9 c #748574", +"0 c #758875", +"q c #7E837E", +"w c #77A577", +"e c #7AA07A", +"r c #7A9595", +"t c #7C9B9B", +"y c #69B3B3", +"u c #74C3C3", +"i c #77C8C8", +"p c #808080", +"a c #8A838A", +"s c #8D8D8D", +"d c #928992", +"f c #949494", +"g c #9A939A", +"h c #9C9C9C", +"j c #A29BA2", +"k c #9DA2A2", +"l c #A3A3A3", +"z c #A8A6A6", +"x c #ABA2AB", +"c c #ACACAC", +"v c #B2A3B2", +"b c #B2AFB2", +"n c #BCADBC", +"m c #B5B5B5", +"M c #B7B8B7", +"N c #BBBBBB", +"B c #BFC2BF", +"V c #8AEBEB", +"C c #8DF0F0", +"Z c #97FBFB", +"A c #9EFFFF", +"S c #A2FFFF", +"D c #C4C4C4", +"F c #C6C9C6", +"G c #CCCCCC", +"H c #D3CCCC", +"J c #CDD0CD", +"K c #D5C6D5", +"L c #DBCBDB", +"P c #D5D5D5", +"I c #DED6DE", +"U c #DBDCDB", +"Y c #E2DFDF", +"T c #E3D2E3", +"R c #E5DBE5", +"E c #E3E3E3", +"W c #EEEEEE", +"Q c #F2F2F2", /* pixels */ -" . .X.X.X. . .o.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X. .X.X. .X.X. . .", -" . .' ' ` | o.' ' ' ' ' ' ' | ` ] | ` ' ] ] ' ] ] ' ] ] ' | . .", -" . .] ' X.P 2 | ] ] ` Q .` U .Q T o.` .-.=.-.-.=.-.=.-. .{ X.", -" .X. .o.O.= N %.X.] .' c U O.' m H o.+.-.@.%.$.%.$.%.%.U | X.", -" . .+.` O , %.| ` c ` +.| X.+.m J %.*.O.$.+.+.+.$.O.P | X.", -" .| ] * U X m | R Y +.| . .X.| H %.*.O.$.+.+.@.$.O.P | X.", -"| %.$ . + . b +.o. .X.X. . .o.o.+.=.O.$.@.+.+.$.+.P | X.", -" .o.H + < Q Q Q o.| . . .| U +.=.O.$.@.+.+.$.O.P | X.", -"X.| %.T . . # %. .Q c X.o.X. .%.F A %.=.O.$.+.+.@.$.O.P | X.", -" .X.| O.Q + 1 X.X.` .T c Q o. .V N X.+.-.$.%.%.%.%.%.$.U | .", -" .X. .] %.A * X.X.| ' ` O.R H o.E H o.] O.$.E _ Q ` Q _ Q J .X.", -"X.| ` ` Q ] %.Q ` ' Q Q ` ] ] { ' ] ` _ Q _ T T U U R T R R | .", -" . .X. .o.] G O.X.X.] ] o. .O.H ' O. . .` o.X.=.= O %.O.o.' . .", -" . .X.o.[ C j Z O.X.' ] X.O.Z j C [ o. .` . .& @ E o.` | X.", -" .| o.{ d ! ) k N @.] ] @.B k ) ! f { o.Q &.- . : + %.' | .", -"X.X.{ g ^ ( / ) l Z | | Z l ) / ( ^ g [ ' $ O m . O T . .", -"X.X.{ g ! ( / ( l F | .F k ) / ( ~ g [ ' $ O T . .", -" . .O.{ d ! ) k B @.' ' $.B k ) ! f { X.Q &.> + %.' | X.", -" . . .X.{ n h A O.X.' ] .O.F h C [ O. .` .| - . + Q o.` | .", -" . .X.X.O.[ J O.X.X.] ] o. .O.J ] o. . .` o. .&.& X %.O.X.' | X.", -"X.| ` ` ` ' .` ` ' Q Q ` ] ] | ] ] ` ` Q ` ` ] Q W ] ' ' Q | X.", -" . .| .| .] | | .' ` O.R H X.R H o.| Q .| J ..#.L ` o._ | X.", -" . .X.X.o. . .X. .X.' .T c Q X. .A N o.' .M i y t u v ' ] ] X.", -" . . . . . . . . .X.| Q c X.O. . .%.A F X.V u 9 e e q r M ` | X.", -"X. .X. . . . .X. . .| R _ o. . . . . .T ' I 5 e e e e 3 G ` | X.", -" . . . . . . . . .X.' .O. . . . . .X.O.' } 3 e e e e 8 U X.] X.", -" .X. . . . . . . .X. .T U O.| . .X.] J ] H 6 e e e e 4 S _ | X.", -" . . . . .X. . . .X.' ` c ' +. .X.+.m J X.G s 4 w w 7 u V ' | X.", -" . . . . .X. . . .X.' .' x U o.' b H O.Q o.A z a p z M .' ] X.", -" . . . . . . . . .X.] ' O.] T X._ W O. .` X.o.Q #.$.R X.o.' | .", -"X. .o. . . . . .X. . . . .X.O. .X.X. . . .X. .o. .| o. . . . . .", -" . . . . . . .X. . . . . . . . . . . . . . . . . .X. . . . .X. ." +"PPPUPPPPIPPPPUPPPPIPPPPUPPPPIPPP", +"PPGGGPUGGGGJGJJGPJGGJPJJJJGJJJPP", +"PPPGPm*PJJFDPGmPDNUGPQWQQQQWQPPP", +"PPPPU$ hEPGPGdMUGfcPUQYEEEEEEmPP", +"PPUGo &EJGsGUPPEgcEQUYUUEUUmPP", +"PPG# mX hPNMUPPPPJcEQUYEEUEUMPP", +"PE@ .O. dYUPPPPPUPUQUYUEEUUmPP", +"PUcO &DDFPPPPPPMEQUYEUUEUbPP", +"PPEN. . +EPFsPUPPEllEQUUUEERUmPP", +"PPPUBO *PPGPNsFPPlkPUQEEEEEEEmPP", +"PPPGEz#PPJGGUNcPBcPKEUDDDFDFDcPP", +"PJFGFJEFGGDDGGPHJJGFFDNNMMNNNNPP", +"PPPPUGzUPPJGUPUcGUPPFPUW$oEUUGPP", +"PPPUJfykRPJGPUlytHIPGPP# ODPGPP", +"PPUHtVSuhRGFEkuSVrHPDW$.%. OEGJP", +"PPHtCZZAikPPkuSZACtGG@ og oNPP", +"PPJtVAZSikPPkuSZACrGG@ oNPP", +"PPUJrVSuhRGGRhuSVrHPDW% OEGHU", +"PPPUHfyhUPGGPUlytHUPFPP# ODUGPP", +"PPPPUJcIPUJJUPUcGUPPGPPW#oEUPGJP", +"PPGFFGJGFGDDGGJJJJGGBFGHDBJFGDPP", +"PPPPPPJPPPGGUBcIDcPJDPHxLTmJPFPP", +"PPPPPUPPPUGPNsFPPjhUGPgr670dGJJP", +"PPPPPPPPPPJDsPUPPElzPj9155<8gGPP", +"PPPPPPIPPIJBDIPPPPPNGn;55552xGPP", +"PPPPPPPPPPGPUJPPPPPUGK=5555 c #5E5D5B", -", c #5F7F7E", -"< c #636360", -"1 c #686764", -"2 c #6B6967", -"3 c #6C6B69", -"4 c #66706E", -"5 c #6E7775", -"6 c #6F7875", -"7 c #627D7C", -"8 c #6D7C7A", -"9 c #777673", -"0 c #787775", -"q c #7A7A76", -"w c #707C7A", -"e c #7D7C79", -"r c #807F7C", -"t c #1F9F1E", -"y c #02AC02", -"u c #0EA20E", -"i c #05B005", -"p c #00BC00", -"a c #269525", -"s c #3D8D3B", -"d c #339632", -"f c #389237", -"g c #00C100", -"h c #00CE00", -"j c #00D000", -"k c #00D900", -"l c #00E200", -"z c #00ED00", -"x c #01FE01", -"c c #468B44", -"v c #4F8F4D", -"b c #71896D", -"n c #63817F", -"m c #778B73", -"M c #7A8A76", -"N c #83827E", -"B c #5D8685", -"V c #5D8A89", -"C c #5F9898", -"Z c #618C8B", -"A c #619D9D", -"S c #65A2A2", -"D c #76D2D3", -"F c #7BD3D4", -"G c #7DD7D8", -"H c #7BDADA", -"J c #7EE3E3", -"K c #868582", -"L c #898784", -"P c #8B8A86", -"I c #8F8D8A", -"U c #93868E", -"Y c #918F8C", -"T c #889284", -"R c #8F958A", -"E c #93928E", -"W c #9B8C96", -"Q c #9D8E98", -"! c #979392", -"~ c #9C9694", -"^ c #9B9A96", -"/ c #9F909A", -"( c #9E9D99", -") c #A39B97", -"_ c #A3979E", -"` c #A29C9B", -"' c #9EA099", -"] c #A3A19D", -"[ c #A69DA1", -"{ c #A7A5A1", -"} c #ABA6A6", -"| c #A7A9A2", -" . c #ABABA6", -".. c #ADA0A8", -"X. c #AEADA9", -"o. c #B5ACA7", -"O. c #B1AFAB", -"+. c #B9AFAB", -"@. c #B3B1AD", -"#. c #B9B0AC", -"$. c #B6A8B0", -"%. c #B6B4B0", -"&. c #B8B6B1", -"*. c #BBBAB5", -"=. c #BFBDB9", -"-. c #C5BCB7", -";. c #C1BEBA", -":. c #BFC0B9", -">. c #C4C2BD", -",. c #C9C1BC", -"<. c #CDBBC7", -"1. c #81DCDD", -"2. c #88E6E7", -"3. c #8BEBEB", -"4. c #8FF1F1", -"5. c #93F6F6", -"6. c #96FBFB", -"7. c #9BFEFE", -"8. c #A3FFFF", -"9. c #C7C5C1", -"0. c #C8C6C2", -"q. c #CBC9C5", -"w. c #CFCDC8", -"e. c #D1CFCA", -"r. c #D5D3CE", -"t. c #D8D1CC", -"y. c #D7D5D0", -"u. c #D8D6D1", -"i. c #DCDAD5", -"p. c #DEDDD8", -"a. c #E0DCD7", -"s. c #E6D5DF", -"d. c #E0DED9", -"f. c #E4E2DC", -"g. c #E7E5E0", -"h. c #E9E5E1", -"j. c #EDEAE5", -"k. c #EFEEE8", -"l. c #F1EEE9", -"z. c #F3F1EC", -"x. c #FCFAF4", -"c. c #FFFFFC", +". c #0B0B0B", +"X c #121212", +"o c #181818", +"O c gray14", +"+ c gray17", +"@ c gray20", +"# c #3C3C3C", +"$ c #454545", +"% c #4E4E4E", +"& c #545454", +"* c #5D5D5D", +"= c #5E7A7A", +"- c gray39", +"; c #616B6B", +": c #6A6A6A", +"> c #6A7575", +", c #617C7C", +"< c #6A7979", +"1 c #757575", +"2 c #7C7C7C", +"3 c #1F9F1F", +"4 c #02AC02", +"5 c #0DA20D", +"6 c #05B005", +"7 c #00BC00", +"8 c #249424", +"9 c #3D8C3D", +"0 c #359335", +"q c #389238", +"w c #00C100", +"e c #00CE00", +"r c #00D000", +"t c #00D900", +"y c #00E200", +"u c #00EC00", +"i c #01FE01", +"p c #468C46", +"a c #4F8F4F", +"s c #6F896F", +"d c #778C77", +"f c #7D807D", +"g c #788978", +"h c #837F83", +"j c #5A8484", +"k c #5F8989", +"l c #5D9696", +"z c #5E9A9A", +"x c #619C9C", +"c c #77D4D4", +"v c #7BD3D3", +"b c #7EDCDC", +"n c #858585", +"m c #858885", +"M c #8A8A8A", +"N c #8B948B", +"B c #938893", +"V c #9C8E9C", +"C c #939393", +"Z c #9C939C", +"A c #9C9B9B", +"S c #9EA19E", +"D c #A297A2", +"F c #A39EA3", +"G c #A4A4A4", +"H c #A7AAA7", +"J c #ACA4AC", +"K c #ADADAD", +"L c #B5ADAD", +"P c #B5A8B5", +"I c #B4B3B3", +"U c #B7B8B7", +"Y c #BCBCBC", +"T c #BFC2BF", +"R c #CDBCCD", +"E c #88E7E7", +"W c #8BECEC", +"Q c #93F6F6", +"! c #96FBFB", +"~ c #9BFEFE", +"^ c #A3FFFF", +"/ c #C4C4C4", +"( c #C8C2C2", +") c #CACACA", +"_ c #CFD0CF", +"` c #D5D5D5", +"' c #D4D8D4", +"] c #D7D9D9", +"[ c #DBDCDC", +"{ c #E0DEDE", +"} c #E6D7E6", +"| c #E6D8E6", +" . c #E2E2E2", +".. c #EAE7EA", +"X. c #ECECEC", +"o. c #F1F1F1", +"O. c #FCFCFC", /* pixels */ -"r.r.r.r.r.r.r.r.r.r.r.r.r.y.r.r.r.r.y.r.r.r.r.r.y.r.r.r.r.r.r.r.r.r.y.r.r.r.r.y.r.r.r.r.r.r.r.u.", -"r.r.r.r.r.r.r.y.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.", -"r.r.r.r.u.u.u.u.u.u.y.y.u.u.y.u.y.y.u.u.y.y.y.y.u.y.u.u.u.y.u.u.y.u.u.u.u.u.u.u.u.u.u.y.y.r.r.r.", -"r.r.y.r.0.0.q.0.0.q.q.q.0.q.0.0.0.q.0.0.9.9.q.q.q.0.9.0.0.0.q.0.0.9.0.0.0.0.0.9.0.0.9.q.r.r.r.r.", -"r.r.r.r.q.q.q.q.q.:.=.9.q.q.q.w.;.>.q.q.r.w.9.q.q.q.r.q.q.>.e.z.j.l.l.l.l.l.l.l.l.l.z.q.r.r.r.r.", -"r.r.r.y.y.r.r.y.h.% .h.e.r.u.q.w.u.d.%.e q.i.r.K { p.u.e.p.c.l.l.l.l.l.l.l.l.l.z.f.&.r.r.r.r.", -"r.r.r.r.r.r.u.r.P o = =.i.r.y.0.0.d.^ e >.r.r.r.q.L P p.0.i.x.u.a.i.d.i.i.i.i.i.d.<. .u.r.r.r.", -"r.y.r.r.e.r.e.% X ^ i.e.9.r.@.e d.i.r.r.y.y.f.P ( y.i.x.a.d.a.d.a.a.d.d.d.d.>.o.u.r.r.r.", -"r.r.r.r.u.k.> # & o 0.g.9.w.e 0.u.r.r.r.r.r.r.y.9 9.p.x.i.i.a.a.d.a.d.d.p.f.0.X.y.r.y.r.", -"r.r.r.i.%.9 O .c.X = ^ 9.0.9.r.r.r.r.r.r.r.r.y.9.9.p.x.i.d.a.a.d.d.d.d.i.f.9.X.y.r.r.r.", -"r.r.e.f.e X X + q.w.i.r.r.r.r.r.r.r.r.r.u.w.i.x.i.d.d.a.a.d.d.d.d.f.9.X.y.r.r.r.", -"r.r.r.p.( $ X + < 9.q.y.r.r.r.r.r.r.r.r.y.y.q.i.x.i.a.d.d.d.d.d.d.a.f.9.X.y.r.r.r.", -"r.r.r.r.i.g.& @.j.9.q.L e.r.r.r.r.r.r.e.i.P =.p.x.i.d.d.d.d.d.d.d.i.f.0.o.y.r.r.r.", -"r.r.r.r.r.u.&.O 3 i.r.9.y.^ E g.r.r.r.r.e.g.{ L y.i.x.i.d.d.d.d.p.d.d.d.d.9.O.y.r.r.y.", -"r.r.r.r.r.r.i.*.= X + P i.r.r.9.q.i.e ! i.y.r.r.p.{ 9 r.w.i.x.i.d.d.d.i.a.d.p.p.f.9. .y.r.r.y.", -"r.r.r.y.r.r.r.u.f.@ ` k.e.r.u.0.w.y.i.I e q.y.r.L K e.i.q.p.x.d.g.d.d.f.d.f.f.d.g.9.O.y.r.r.r.", -"r.r.r.r.e.e.r.e.e.] Y >.r.e.e.r.9.q.r.w.i.>.q.r.w.=.u.r.e.q.i.f.@.%.%.%.O.O.%.&.%.%. .X.y.r.r.r.", -"y.r.r.e.>.>.>.>.>.w.w.9.>.>.>.>.*.=.>.>.>.0.>.>.>.0.>.>.9.>.=.>.*.*.*.*.q.0.*.*.*.*.*.*.r.r.r.r.", -"r.r.r.y.y.y.r.r.y.i.u.y.r.y.r.i.q.w.u.y.r.r.u.a.i.r.y.u.y.r.>.u.y.y.i.w.= > y.u.y.y.i.9.r.r.r.r.", -"r.r.r.r.r.r.r.e.p.( 5 t.y.r.r.y.9.q.y.r.r.i.>.4 @.d.e.r.r.w.>.y.r.r.f.` . @.p.r.r.y.:.r.r.r.r.", -"r.y.r.r.r.r.r.f.~ S G 8 w.u.e.u.9.q.y.r.i.;.n J Z o.p.e.y.e.9.r.y.r.- 1 i.r.r.>.r.r.r.r.", -"r.r.r.r.r.e.f.~ A 7.8.G 8 t.u.y.0.w.r.p.-., 3.8.6.V o.f.r.w.9.u.d.- 3 f.y.>.r.r.y.r.", -"r.r.r.r.r.f.^ C 7.7.6.8.G 6 e.i.9.q.p.-.7 3.8.6.7.6.V o.p.w.>.r.' f.&. X O.w.9.e.r.r.r.", -"r.r.r.r.i.( A 8.7.6.7.6.8.1.8 r.0.e.>., 4.7.6.7.6.7.7.V @.r.w.& < = > r.w.r.r.r.", -"r.r.r.r.i.] A 7.7.7.7.6.8.F 8 y.0.e.,.B 3.8.7.7.7.7.6.V &.r.e.& > r.e.r.r.r.", -"r.y.r.r.r.d.) C 7.7.6.8.F 8 t.i.9.q.d.,.7 2.8.7.7.5.B #.d.w.>.r.' o X.e.>.t.y.r.r.", -"r.r.r.y.r.r.f.) C 7.8.F 8 t.y.r.0.q.r.i.-.7 2.8.5.B #.p.r.e.>.u.p.- 3 f.u.>.e.r.r.r.", -"r.r.r.r.r.r.e.f.) A D w t.u.r.y.0.q.u.e.p.,.B H Z +.d.e.r.e.9.r.r.r.: X 3 i.r.r.>.r.r.r.r.", -"r.r.r.r.r.r.r.e.d.( 6 r.y.r.r.u.0.q.y.r.e.i.>.4 @.p.e.r.r.w.>.y.r.r.f.' . O.f.r.r.r.>.r.r.r.r.", -"r.y.r.r.y.y.y.y.r.i.p.u.r.y.y.u.0.e.u.y.y.y.i.i.i.r.y.y.u.r.9.u.u.y.u.q.* : r.y.r.y.u.>.r.r.r.r.", -"r.r.y.w.>.9.>.9.>.>.>.>.>.>.>.9.*.=.>.>.;.9.>.>.>.0.>.>.>.=.*.>.>.:.>.0.r.e.9.>.>.>.>.=.r.r.r.r.", -"r.r.r.r.e.w.r.w.r.e.w.r.e.r.e.r.>.0.r.t.i.>.q.r.w.:.u.r.r.w.>.r.w.i.q.:.r.r.:.e.u.w.e.>.r.r.r.r.", -"y.r.r.r.r.y.y.r.y.r.r.y.y.r.r.u.9.w.u.i.Y e q.u.y.L K e.u.w.9.y.p. .e $.<.<...e &.i.r.>.r.y.r.r.", -"r.r.r.r.y.r.r.r.r.r.y.r.r.r.r.y.9.q.p.e ^ i.y.r.r.p.| 9 r.r.>.p.] K ! s u u c / e @.p.>.e.r.r.r.", -"r.r.y.r.r.r.r.y.r.r.r.r.r.r.r.y.9.y.~ E g.e.r.r.y.e.g.{ L u.0.;.e R y x x x x u ~ e q.9.r.y.r.r.", -"r.r.r.r.r.r.r.r.y.r.r.r.r.r.r.y.9.q.L e.r.r.r.r.r.y.e.i.L =.r.' Q t x x x x x x d Q | q.w.r.r.r.", -"y.r.r.r.r.y.r.r.r.y.r.r.r.r.r.u.0.q.y.r.y.r.r.r.r.r.r.r.y.w.>.d.T h x x x x x x p ` i.>.r.r.r.r.", -"r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.u.9.w.i.r.r.r.r.r.r.r.r.r.u.e.=.h.m l x x x x x x j R h.:.r.r.r.r.", -"r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.y.0.0.9.y.r.r.r.r.r.r.r.y.0.q.9.r.E g x x x x x x i { e.>.r.r.r.r.", -"r.r.y.r.r.r.y.r.r.r.r.r.r.r.r.y.9.w.e 0.u.e.r.r.r.r.r.y.9 9.e.^ W f x x x x x z v U | w.e.r.r.r.", -"r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.u.9.y.O.e d.u.r.r.r.y.g.P ( i.;.r.q ` a l x x k f _ e u.>.r.r.r.r.", -"r.r.y.r.r.r.y.r.r.y.r.r.r.y.r.u.0.0.d.( 0 9.y.r.y.q.K P p.w.9.i.=.0 / b s s M W q 0.u.>.r.r.r.r.", -"r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.y.0.w.y.d.O.e 0.u.e.N ` d.r.w.>.y.i.q.N &.s.s.} P r.y.r.>.r.y.r.r.", -"y.r.r.r.y.r.r.r.r.r.r.y.r.r.r.y.0.q.y.e.i.i.e.y.r.u.i.r.y.e.0.y.r.r.i.e.r.r.e.p.y.r.r.9.r.r.r.r.", -"r.r.r.r.r.r.r.r.r.r.y.r.r.r.r.r.y.r.r.r.r.r.r.r.r.r.e.y.r.r.r.r.r.r.e.r.r.r.r.r.r.r.r.r.r.r.r.r.", -"r.r.y.r.r.r.r.y.r.r.r.r.r.r.r.y.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.y.r.r.r.r.y.r.r.r.r.r.", -"r.r.r.r.y.r.r.r.r.r.r.r.y.r.r.r.r.r.y.r.r.r.r.y.r.r.r.r.r.y.r.r.r.y.r.r.r.r.r.r.r.r.r.r.r.r.r.r.", -"y.r.r.r.r.r.r.r.r.y.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.y.r.r.r.r.r.r.r.r.r.r.r.r.y.r.r.r.r.y.r.r.r." +"` ` ` ` ` ` ` ` ` ` ` ` ` ] ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ] ` ` ` ` ` ` ` ", +"` ` ` ` ` ` ` ] ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ] ` ' ` ` ` ` ` ` ' ` ] ` ` ` ` ` ", +"` ` ` ` ] ` ] ] ] ] ` ] ] ` [ ` ` ` [ ` ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ` ] ] ] ] ] ` ` ` ` ` ", +"` ` ` ` ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) / ) ) ) ) ) ( ) ) ( ) ) ) / ) / ) ) ) / ) ) / ) ` ` ] ` ", +"` ` ` ` ) ) ) ) ) T Y / ) ) ) ) ( ( ) ) ` _ ) ) ) ) ` ) ) ( _ o.o.o.o.o.o.o.o.o.o.X.o._ ` ' ` ` ", +"` ` ` ` ` ` ` [ ..# K ..` ] ] ) ) ' .I f ) ] ` m G .] _ [ O.o.o.o.o.o.o.o.o.o.o. .U ` ' ` ` ", +"` ` ` ` ` ` ] ` M X % Y { ` ` ) ) .A 2 / ] ` ` ) m M { ) | O.] [ [ [ ] [ ] [ [ ./ K ` ` ` ` ", +"` ` ` ` ` ` _ # . A [ ` / ` I 2 { ] ` ` ` ] .M S ] ] O.[ { .{ . . . .| ./ K ] ` ` ` ", +"` ` ` ` ] o.* @ $ X / ..) ) 2 ) ] ` ' ` ` ` ` ` 2 / { O.[ .{ { .[ .[ { ./ K ] ` ` ] ", +"` ` ` [ I 1 o H O.. % A ) ) / ` ` ` ` ` ` ` ` ] ) / [ O.[ [ [ .[ .[ .[ ../ L [ ` ` ` ", +"` ` ` .n . . O ) ) [ ` ` ` ` ` ` ` ` ` [ ) [ O.[ .[ . .[ .[ { ./ K ` ` ` ` ", +"` ` ` { A @ . O - ) ) ] ` ` ` ` ` ` ` ` ` ] ) { O.[ [ .[ [ .[ . . .) L ` ` ` ` ", +"` ` ` ` [ ..$ I X./ ) M ` ` ` ` ` ` ` ` [ M / { O.{ { { . .[ .[ [ .) K ` ` ` ` ", +"` ` ` ` ` ] I o : [ ` / ] A C ..` ` ` ` _ ..G M ` ] O.] . .[ [ .[ .[ ./ I ] ` ` ` ", +"` ` ` ` ` ` { Y % . O M ] ` ` ) ) ] f A ] ] ` ` [ H 1 ` _ [ O.] { { { { { .[ [ ./ K ] ` ` ` ", +"` ` ` ` ` ` ` ] ..+ G X.` ` ] ) _ ` [ B 2 ) [ ` n n ` [ ) [ O. . . . . . . . . . .) I ] ` ` ` ", +"` ` ` ` _ ` ` _ _ G C / ` ` _ ` ( ) ` ` [ / ) ` _ T ] ` ` ) [ ..I I I I I I I I I U K I ` ` ` ` ", +"` ` ` ` / / ( / / ) _ / R / ( ( Y Y / / T ) / T ( ) T / / T Y / Y Y Y Y ) ) Y Y Y Y Y Y ` ` ` ` ", +"` ` ` ` ` ` ` ] ] [ [ ` _ ' ` [ ) _ ` ` ] ` ] { ] ' ] ] ` _ / ] ] ] [ _ % * ` ] ` ] ] / ` ` ` ` ", +"` ` ` ` ` ` ` ` { A > ` ] ` ` ` ) ) ] ` ` { / ; I | _ ` ` _ ) ] ` ` .A . I [ ` ` ` / ` ] ` ` ", +"` ` ] ` ` ` ` .A x v < _ [ _ [ ) ) ` ` [ R , b k L [ ` ` _ ) ` ` ` & : ] ` ` / ' ` ` ` ", +"` ` ` ` ` ` { A x ~ ^ v > _ [ ` ) ) ` [ ( = E ^ Q j L .` ` ( ` .& : .` ( ` ] ` ` ", +"` ` ` ` ` { A l ~ ~ Q ^ v > _ { / ) [ ( = E ^ ! ~ ! j L .) / ` A .I X I _ / ` ] ` ` ", +"` ` ` ` { A l ~ ~ ~ ~ ~ ^ E > ` ) _ ) = W ~ ! ~ ! ~ ! j I ` ` $ : % * ` ) ` ` ` ", +"` ` ` ` [ A z ^ ~ ~ ~ ! ^ b > ` / ` ) = W ^ ! ! ! ^ ! j I ` ` $ * ` _ ] ` ` ", +"` ` ` ` ` .A l ~ ~ Q ^ v > ` { ) ) [ ( = W ^ ! ~ ! j L .) ( ` A X K _ / ` ` ` ` ", +"` ` ` ] ` ` .A l ~ ^ v < ` ` ` / ) ` [ ( = E ^ Q j L [ ` _ / ] .& : ..] / ` ` ` ` ", +"` ` ` ` ` ` ` .A x v < _ [ ` ` ) ) ` ` [ ( , b k L .` ` ` / ` ] ` & . : ] ` ' ( ` ` ` ` ", +"` ` ` ` ` ` ` ` | A > ` ] ` ` ] ) ) ] ` ` ] / ; I [ _ ` ` ) / ] ` ` { S I .` ` ` / ` ` ` ` ", +"` ` ` ` ` ` ` ` ` { { ] ` ] ` ] ) ) [ ] ` ` [ { [ ' ] ' ] ` ) ] ] ` ] ) % * ` ` ` ` ] / ` ` ` ` ", +"' ` ` ` / ( / / / / / / / / / / Y T / ( / ) / / / ) R T / / Y ( / / / ) ` ` / / / / / Y ` ` ` ` ", +"` ` ` ' _ _ ` ` _ ` _ _ _ ` ` ` / / ` ` [ / ) ` ) T ] ` ` ) / ' _ ] ) T ` ` / _ ] ) ` / ` ` ` ` ", +"` ` ` ` ` ] ` ` ] ` ` ] ` ` ` [ ) ) ] ] C 2 ) [ ` m m _ ] ` / ` { K 2 P R R J 2 U | ` / ` ` ` ` ", +"` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ] ) ) [ f A [ ` ` ` | H 1 ` _ / | G n C q 5 5 p Z 2 K [ T ` ` ` ` ", +"` ` ] ` ` ` ` ` ` ` ` ] ` ` ` ] ( ` A C .` ` ` ` ` .H m ] ) T 2 C 4 i i i i 5 A 2 ) ) ` ` ` ` ", +"` ` ` ` ] ` ` ` ` ` ` ` ` ` ` ` ) ) n ` ` ` ` ` ` ` ` [ M / _ A V 3 i i i i i i 0 Z H ) ` ] ` ` ", +"` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ] / ) ` ` ` ` ` ` ` ` ` ` ] _ / .N e i i i i i i 7 S [ / ` ` ` ` ", +"` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ] ) ) [ ` ` ` ` ` ` ` ` ` ] ` T ..d y i i i i i i r C ..T ` ` ` ` ", +"` ] ` ` ` ` ` ` ` ` ` ` ` ` ` ] ) ) / ` ` ` ` ` ` ` ` ` ) ) ( ` C w i i i i i i 6 F _ / ` ` ` ` ", +"` ` ` ` ` ] ` ` ` ` ` ` ` ` ` ] ) _ 2 ) ] ` ` ` ` ` ` ` 1 ) _ A V q i i i i i u a B H ) ` ` ` ` ", +"` ` ` ] ` ` ` ` ` ` ` ` { ` ` ` / ` I 2 { ] ` ` ` ] ..M A [ / ` 2 Z 8 y i i t q D f ] T ` ` ` ` ", +"` ` ` ` ` ` ] ` ` ` ` ` ` ` ` ` ) ) .A 2 ) ] ` ` ) n M [ _ / [ Y 2 Z d 9 9 g V 2 ) ] R _ ] ` ` ", +"` ` ` ` ` ` ` ` ] ` ` ` ` ` ` ] ) ) ] { K 2 ) ] ` n G { ] _ R ` [ ) m I } } J N ` ] ` / ` ` ` ' ", +"` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ) ) ` ` [ [ ` ` ` ` [ ` ` ` ( { ` ] [ _ ` ` ` { ` ` ` ) ` ` ` ` ", +"` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ", +"` { ` ` ` ` ` ` ` ` ` ` ` ` ` ] ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ", +"` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ", +"` ` ` ` ` ` ` ` ` ` ` { ` ` ` ` ] ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ] ` ` ] ` ` ` ` ` " }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/inertia.sav sgt-puzzles-20160429.b31155b/icons/inertia.sav --- sgt-puzzles-20140928.r10274/icons/inertia.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/inertia.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,30 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :7:Inertia +PARAMS :3:8x8 +CPARAMS :3:8x8 +SEED :15:739970145068932 +DESC :64:sbgwsmswwgggwggmmbwgwbssbwbsbwbbwsSmgbbsbbmsgbmssgmggbmmwmbmmwsw +UI :2:D0 +NSTATES :2:21 +STATEPOS:1:5 +MOVE :1:6 +MOVE :1:5 +MOVE :1:3 +MOVE :1:1 +MOVE :1:6 +MOVE :1:0 +MOVE :1:5 +MOVE :1:7 +MOVE :1:5 +MOVE :1:6 +MOVE :1:1 +MOVE :1:3 +MOVE :1:4 +MOVE :1:2 +MOVE :1:6 +MOVE :1:5 +MOVE :1:3 +MOVE :1:1 +MOVE :1:5 +MOVE :1:3 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/inertia-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/inertia-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/keen-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/keen-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/keen-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/keen-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/keen-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/keen-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/keen-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/keen-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/keen-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/keen-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/keen-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/keen-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/keen-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/keen-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/keen-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/keen-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/keen-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/keen-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/keen-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/keen-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/keen-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/keen-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/keen-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/keen-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/keen.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/keen.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/keen-icon.c sgt-puzzles-20160429.b31155b/icons/keen-icon.c --- sgt-puzzles-20140928.r10274/icons/keen-icon.c 2014-09-29 00:33:42.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/keen-icon.c 2016-04-29 00:31:43.000000000 +0000 @@ -1,510 +1,662 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 180 2 ", -" c #050504", -". c #1F1E1E", -"X c #252424", -"o c #242322", -"O c #20201F", -"+ c #222221", -"@ c #151514", -"# c #191918", -"$ c #252524", -"% c #262625", -"& c #1F1F1E", -"* c #212120", -"= c #1D1C1C", -"- c #010101", -"; c #A5A3A0", -": c #A19F9C", -"> c #CECCC8", -", c #D5D3CF", -"< c #D3D1CC", -"1 c #E2E0DA", -"2 c #908F8C", -"3 c #93918E", -"4 c #9B9996", -"5 c #B8B6B2", -"6 c #DDD7D6", -"7 c #D5D2CE", -"8 c #DBDAD5", -"9 c #BEBCB8", -"0 c #090909", -"q c #272626", -"w c #A8A6A3", -"e c #B7B6B2", -"r c #D2D0CC", -"t c #DEDCD7", -"y c #DBD9D4", -"u c #EAE8E3", -"i c #979592", -"p c #91908D", -"a c #B3B0AD", -"s c #B7B8B1", -"d c #C0D1BA", -"f c #DCDAD5", -"g c #E6E3DE", -"h c #C5C3BE", -"j c #0A0909", -"k c #DAD8D3", -"l c #E3E1DC", -"z c #D9D7D2", -"x c #E9E7E1", -"c c #8E8D8A", -"v c #B5B4B0", -"b c #F1EBE9", -"n c #C9D5C3", -"m c #77B273", -"M c #6BAC68", -"N c #EBE3E3", -"B c #C1C0BB", -"V c #D5D3CE", -"C c #DDDBD6", -"Z c #E9E7E2", -"A c #8F8E8B", -"S c #B3B1AD", -"D c #E3E2DC", -"F c #E0DAD9", -"G c #7BB477", -"H c #6EAE6B", -"J c #EFE5E7", -"K c #C1C1BB", -"L c #DAD8D4", -"P c #D8D6D1", -"I c #E8E6E1", -"U c #B0AFAA", -"Y c #E9E3E2", -"T c #BBCAB5", -"R c #3A9838", -"E c #97BC92", -"W c #E6E0DF", -"Q c #BFBFB9", -"! c #E0DED9", -"~ c #E1DFDA", -"^ c #EEECE7", -"/ c #BEBDB8", -"( c #F1EFE9", -") c #E8E5E1", -"_ c #F5EBED", -"` c #E9E6E1", -"' c #EFEEE8", -"] c #CFCDC9", -"[ c gray4", -"{ c #1C1C1B", -"} c #BCBBB6", -"| c #C4C2BD", -" . c #C2C0BC", -".. c #BFBEB9", -"X. c #CECCC7", -"o. c #7C7B78", -"O. c #757472", -"+. c #A09E9B", -"@. c #949390", -"#. c #94948F", -"$. c #8F8E8A", -"%. c #93928F", -"&. c #7F7D7A", -"*. c #060606", -"=. c #1E1E1D", -"-. c #C9C7C2", -";. c #D1CFCA", -":. c #CFCDC8", -">. c #CCCAC6", -",. c #8B8A87", -"<. c #767573", -"1. c #6C6B68", -"2. c #7B7A77", -"3. c #94928F", -"4. c #ADABA8", -"5. c black", -"6. c #212020", -"7. c #DFDDD8", -"8. c #EBE9E4", -"9. c #979692", -"0. c #92918E", -"q. c #A6A3A0", -"w. c #A09F9B", -"e. c #CFD2C9", -"r. c #F5F2ED", -"t. c #B2B0AC", -"y. c #DEDCD6", -"u. c #B6B5B0", -"i. c #F4EDEC", -"p. c #C2D1BB", -"a. c #43A141", -"s. c #ADC6A7", -"d. c #ECE6E5", -"f. c #A8A7A3", -"g. c #D6D4CF", -"h. c #DBD9D5", -"j. c #B2B1AC", -"k. c #E8E4E1", -"l. c #C9D1C2", -"z. c #62A95F", -"x. c #73AF70", -"c. c #F0E9E8", -"v. c #A9A8A3", -"b. c #D4D2CD", -"n. c #D7D5D0", -"m. c #E7E5DF", -"M. c #8E8C89", -"N. c #75B071", -"B. c #7AB176", -"V. c #EFE7E7", -"C. c #A8A7A2", -"Z. c #E1DFD9", -"A. c #E7E5E0", -"S. c #E4E2DD", -"D. c #F5F3ED", -"F. c #969592", -"G. c #B8B7B3", -"H. c #EDEAE5", -"J. c #DFDED8", -"K. c #D5DBCE", -"L. c #E7E1E0", -"P. c #EEECE6", -"I. c #AFAEAA", -"U. c #A6A4A1", -"Y. c #ACABA7", -"T. c #AAA9A5", -"R. c #ABA9A5", -"E. c #A9A7A3", -"W. c #B5B3AF", -"Q. c #706F6C", -"!. c #A1A09C", -"~. c #CBC9C5", -"^. c #C6C3C0", -"/. c #C0BFBA", -"(. c #CDCBC7", -"). c #979693", -"_. c gray3", -"`. c #0A0A09", -"'. c #070707", -"]. c gray100", +"16 16 241 2 ", +" c gray2", +". c #202020", +"X c #272727", +"o c #272727", +"O c gray13", +"+ c gray13", +"@ c gray14", +"# c #161616", +"$ c gray10", +"% c #272727", +"& c gray16", +"* c gray13", +"= c gray13", +"- c #232323", +"; c #1E1E1E", +": c #010101", +"> c #2A2A2A", +", c #979797", +"< c #A9A9A9", +"1 c #D0D0D0", +"2 c gray88", +"3 c gainsboro", +"4 c gray92", +"5 c #9A9A9A", +"6 c #868686", +"7 c #9D9D9D", +"8 c #B5B4B5", +"9 c #E6E2E6", +"0 c gray87", +"q c #E6E6E6", +"w c #C6C6C6", +"e c gray4", +"r c gray16", +"t c gray65", +"y c gray75", +"u c #D8D8D8", +"i c #E9E9E9", +"p c gray90", +"a c #F4F4F4", +"s c #9F9F9F", +"d c gray56", +"f c #BBBBBB", +"g c #C6CAC6", +"h c #CBDCCB", +"j c #E8E7E8", +"k c #EFEFEF", +"l c #CECECE", +"z c gray4", +"x c gray13", +"c c gray90", +"v c #EEEEEE", +"b c #E9E9E9", +"n c gray90", +"m c gray89", +"M c #F3F3F3", +"N c #959595", +"B c #BFC0BF", +"V c #FBF8FB", +"C c #D7E2D7", +"Z c #68B368", +"A c #73B773", +"S c #FAF2FA", +"D c #C9CBC9", +"F c gray4", +"G c #222222", +"H c gray87", +"J c #E7E7E7", +"K c gray90", +"L c #E6E6E6", +"P c gray89", +"I c #F4F4F4", +"U c gray59", +"Y c #BABBBA", +"T c #EEEEEE", +"R c #E6E4E6", +"E c #74B874", +"W c #94C494", +"Q c #F8F1F8", +"! c #CACBCA", +"~ c gray4", +"^ c #222222", +"/ c gray87", +"( c #E7E7E7", +") c #E4E4E4", +"_ c gray90", +"` c #E2E2E2", +"' c #F3F3F3", +"] c #959595", +"[ c #B8B9B8", +"{ c #F5F0F5", +"} c #BCD3BC", +"| c #42A342", +" . c #A4C9A4", +".. c #EFECEF", +"X. c #C8C9C8", +"o. c gray4", +"O. c #222222", +"+. c #E4E4E4", +"@. c gray93", +"#. c gray92", +"$. c gray92", +"%. c gray91", +"&. c #F9F9F9", +"*. c gray60", +"=. c gray78", +"-. c #FBFCFB", +";. c #F3F2F3", +":. c #FDF7FD", +">. c #F3F2F3", +",. c #FBFBFB", +"<. c gray85", +"1. c #0B0B0B", +"2. c #1E1E1E", +"3. c #C5C5C5", +"4. c #CDCDCD", +"5. c #CACACA", +"6. c #CBCBCB", +"7. c #C8C8C8", +"8. c #D7D7D7", +"9. c gray51", +"0. c gray49", +"q. c #A9A9A9", +"w. c #9C9D9C", +"e. c #9C9D9C", +"r. c #959595", +"t. c #9A9A9A", +"y. c #848484", +"u. c #060606", +"i. c #202020", +"p. c #D2D2D2", +"a. c #DADADA", +"s. c #D8D8D8", +"d. c #D8D8D8", +"f. c #D5D5D5", +"g. c #E4E4E4", +"h. c #939393", +"j. c #6F6F6F", +"k. c gray40", +"l. c gray46", +"z. c #949394", +"x. c gray71", +"c. c #C6C7C6", +"v. c #929192", +"b. c black", +"n. c #222222", +"m. c gray89", +"M. c gray92", +"N. c #E9E9E9", +"B. c #E9E9E9", +"V. c #E7E7E7", +"C. c #F6F6F6", +"Z. c #A0A0A0", +"A. c gray57", +"S. c #898A89", +"D. c #9F9E9F", +"F. c #AEADAE", +"G. c #E0E3E0", +"H. c #FEFEFE", +"J. c gray73", +"K. c #222222", +"L. c #DFDFDF", +"P. c gray91", +"I. c gray90", +"U. c #E6E6E6", +"Y. c gray89", +"T. c #F4F4F4", +"R. c gray58", +"E. c #C0C1C0", +"W. c #FFFDFF", +"Q. c #C4DBC4", +"!. c #36A436", +"~. c #A8CBA8", +"^. c #FAF4FA", +"/. c #AFB0AF", +"(. c #222222", +"). c #DFDFDF", +"_. c gray91", +"`. c gray90", +"'. c #E6E6E6", +"]. c gray89", +"[. c gray59", +"{. c #B9BAB9", +"}. c #F3F0F3", +"|. c #D0DCD0", +" X c #69B369", +".X c #64B064", +"XX c #FDF6FD", +"oX c #B0B1B0", +"OX c #DDDDDD", +"+X c #E6E6E6", +"@X c gray89", +"#X c #E4E4E4", +"$X c #E1E1E1", +"%X c #F1F1F1", +"&X c gray58", +"*X c gray73", +"=X c #F3F0F3", +"-X c #CDDACD", +";X c #6FB56F", +":X c #81BB81", +">X c #FAF4FA", +",X c #AFB1AF", +" , < 1 2 3 4 5 6 7 8 9 0 ", -"q w e r t y u i p a s d f g h j ", -"& k l t y z x c v b n m M N B 0 ", -"O V C y f z Z A S D F G H J K 0 ", -"O V C L y P I c U Y T R E W Q 0 ", -"* L l ! ~ t ^ 3 / ( ) _ ` ' ] [ ", -"{ } | B ...X.o.O.+.@.#.$.%.&.*.", -"=.-.;.> :.>.k ,.<.1.2.3.4.9 ,.5.", -"6.z ~ 7.7.f 8.9.4 0.q.w.e.r.t.5.", -"O , y.y f z x c u.i.p.a.s.d.f.5.", -"O g.t h.f z Z A j.k.l.z.x.c.v.5.", -"O b.f z k n.m.M.j.k.l.N.B.V.C.5.", -"+ Z.Z m.A.S.D.F.G.H.J.K.L.P.I.5.", -"# U.Y.T.R.E.W.Q.!.~. .^./.(.).5.", -"5.5.5.5.5.5.5.5._.`.0 0 0 [ '.5." +" . X o O + @ # $ % & * = - ; : ", +"> , < 1 2 3 4 5 6 7 8 9 0 q w e ", +"r t y u i p a s d f g h j k l z ", +"x c v b n m M N B V C Z A S D F ", +"G H J K L P I U Y T R E W Q ! ~ ", +"^ / ( ) _ ` ' ] [ { } | ...X.o.", +"O.+.@.#.$.%.&.*.=.-.;.:.>.,.<.1.", +"2.3.4.5.6.7.8.9.0.q.w.e.r.t.y.u.", +"i.p.a.s.d.f.g.h.j.k.l.z.x.c.v.b.", +"n.m.M.N.B.V.C.Z.A.S.D.F.G.H.J.b.", +"K.L.P.I.U.Y.T.R.E.W.Q.!.~.^./.b.", +"(.)._.`.'.].I [.{.}.|. X.XXXoXb.", +"+ OX+X@X#X$X%X&X*X=X-X;X:X>X,Xb.", +" c #51514F", -", c #5A5957", -"< c #5D5D5A", -"1 c #686765", -"2 c #696866", -"3 c #6E6D6A", -"4 c #767572", -"5 c #797875", -"6 c #7D7C79", -"7 c #807F7C", -"8 c #048304", -"9 c #0B840B", -"0 c #138712", -"q c #1C8C1A", -"w c #219020", -"e c #2E952D", -"r c #349732", -"t c #359833", -"y c #3C9B3A", -"u c #419E3F", -"i c #49A447", -"p c #4DA54B", -"a c #58A655", -"s c #5CA759", -"d c #72B06F", -"f c #76B273", -"g c #7CB378", -"h c #80817C", -"j c #868582", -"k c #8A8986", -"l c #8E8D8A", -"z c #92908D", -"x c #969591", -"c c #9B9996", -"v c #9F9D9A", -"b c #A09E9A", -"n c #85B680", -"m c #87B883", -"M c #8BBA86", -"N c #8DBA88", -"B c #93BE8F", -"V c #A6A4A0", -"C c #A8A7A3", -"Z c #ABA9A5", -"A c #AFAEAA", -"S c #B1AFAB", -"D c #B3B1AD", -"F c #B7B5B1", -"G c #B9B7B3", -"H c #BCBAB6", -"J c #BFBDB9", -"K c #C1BFBB", -"L c #9BC196", -"P c #9FC29A", -"I c #A3C39E", -"U c #A6C4A1", -"Y c #ADC7A7", -"T c #B1C7AB", -"R c #B2C9AC", -"E c #B8CCB2", -"W c #C2C0BC", -"Q c #C4D1BE", -"! c #C7C5C1", -"~ c #CAC5C3", -"^ c #CCCAC6", -"/ c #CEC4C8", -"( c #CECCC8", -") c #C9D2C2", -"_ c #D4D5CD", -"` c #D7D6D0", -"' c #D8D7D2", -"] c #D7D8D0", -"[ c #DBD9D4", -"{ c #DFDDD8", -"} c #E2DEDB", -"| c #E5E3DD", -" . c #EADFE2", -".. c #E7E5E0", -"X. c #EBE4E3", -"o. c #ECE9E4", -"O. c #EFEDE8", -"+. c #F3E3EB", -"@. c #F0EDE8", -"#. c #F4F2EC", -"$. c #F8F5F0", +"32 32 230 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray4", +"@ c #0C0C0C", +"# c #1E1E1E", +"$ c #222222", +"% c #232323", +"& c #252525", +"* c #272727", +"= c #2A2A2A", +"- c gray17", +"; c gray18", +": c #2F2F2F", +"> c gray19", +", c #313131", +"< c #323232", +"1 c gray20", +"2 c #343434", +"3 c gray21", +"4 c #373737", +"5 c gray22", +"6 c #393939", +"7 c #3A3A3A", +"8 c #3C3C3C", +"9 c gray24", +"0 c #3E3E3E", +"q c #007900", +"w c gray25", +"e c #414141", +"r c gray27", +"t c #505050", +"y c gray32", +"u c #535553", +"i c #5A5A5A", +"p c #5D5D5D", +"a c gray37", +"s c #5F5F5F", +"d c gray38", +"f c #6D6D6D", +"g c #717371", +"h c #727272", +"j c #767676", +"k c #7B7B7B", +"l c #7C7C7C", +"z c #008000", +"x c #008500", +"c c #008700", +"v c #098609", +"b c #149214", +"n c #1B951B", +"m c #1D941D", +"M c #239823", +"N c #299A29", +"B c #2B9B2B", +"V c #339E33", +"C c #389F38", +"Z c #36A036", +"A c #3FA33F", +"S c #40A440", +"D c #47A647", +"F c #4BA94B", +"G c #4CAB4C", +"H c #53AB53", +"J c #50AD50", +"K c #67B367", +"L c #6EB56E", +"P c #7DBC7D", +"I c #7EBC7E", +"U c #7FBC7F", +"Y c #838383", +"T c gray53", +"R c #888988", +"E c gray54", +"W c #8B8B8B", +"Q c gray55", +"! c #8D8D8D", +"~ c #8D8E8D", +"^ c #8E8E8E", +"/ c gray57", +"( c #929292", +") c #939393", +"_ c #959595", +"` c gray60", +"' c #9B9B9B", +"] c gray62", +"[ c #81BE81", +"{ c #83BE83", +"} c #84BD84", +"| c #A0A0A0", +" . c #A4A4A4", +".. c #A5A5A5", +"X. c gray65", +"o. c #A9A9A9", +"O. c gray67", +"+. c #ACACAC", +"@. c #AEAEAE", +"#. c #AFAFAF", +"$. c gray69", +"%. c #B1B1B1", +"&. c #B2B2B2", +"*. c gray70", +"=. c #B4B4B4", +"-. c gray71", +";. c #B7B7B7", +":. c #B9B9B9", +">. c gray73", +",. c #BBBBBB", +"<. c gray", +"1. c gray75", +"2. c #88C188", +"3. c #8AC18A", +"4. c #8BC18B", +"5. c #8EC38E", +"6. c #94C594", +"7. c #97C497", +"8. c #9EC99E", +"9. c #A2CBA2", +"0. c #AACEAA", +"q. c #AECDAE", +"w. c #AFD0AF", +"e. c #B4D2B4", +"r. c #B7D3B7", +"t. c #B9D4B9", +"y. c #BAD7BA", +"u. c #C0C0C0", +"i. c gray76", +"p. c #C3C3C3", +"a. c gray77", +"s. c #C4C5C4", +"d. c #C6C6C6", +"f. c gray78", +"g. c #C8C8C8", +"h. c gray79", +"j. c #CACACA", +"k. c gray81", +"l. c #C7DAC7", +"z. c #C8DAC8", +"x. c gray82", +"c. c LightGray", +"v. c gray83", +"b. c gray84", +"n. c #D7D7D7", +"m. c #D2DED2", +"M. c #D3DED3", +"N. c #D8D6D8", +"B. c #DED4DE", +"V. c #D8D8D8", +"C. c #DFDFDF", +"Z. c #DAE1DA", +"A. c #DBE2DB", +"S. c #DFE1DF", +"D. c #DEE3DE", +"F. c #DFE3DF", +"G. c #E0D6E0", +"H. c gray88", +"J. c #E1E1E1", +"K. c #E0E3E0", +"L. c #E1E2E1", +"P. c #E1E3E1", +"I. c #E2E2E2", +"U. c #E2E3E2", +"Y. c gray89", +"T. c #E1E4E1", +"R. c #E2E4E2", +"E. c #E2E5E2", +"W. c #E3E4E3", +"Q. c #E3E5E3", +"!. c #E4E4E4", +"~. c #E4E5E4", +"^. c #E5E4E5", +"/. c gray90", +"(. c #E4E6E4", +"). c #E5E6E5", +"_. c #E6E6E6", +"`. c #E7E7E7", +"'. c #EBE2EB", +"]. c #E8E7E8", +"[. c #E9E7E9", +"{. c #EAE7EA", +"}. c gray91", +"|. c #E8E9E8", +" X c #E9E9E9", +".X c #EAE8EA", +"XX c #EAE9EA", +"oX c #EBE8EB", +"OX c #EAEAEA", +"+X c #EAEBEA", +"@X c gray92", +"#X c #EBECEB", +"$X c #ECE8EC", +"%X c #ECE9EC", +"&X c #EDE9ED", +"*X c #EDEBED", +"=X c #EEE9EE", +"-X c #EFE9EF", +";X c #EFEAEF", +":X c #ECECEC", +">X c gray93", +",X c #EEEEEE", +" 3 7 j 7 & ( [ [ ` X.j . ", -" @ | [ [ { [ [ [ [ [ [ [ ' ..% Z | b W z ^ / / [ } [ ' o.j ", -" @ | [ [ [ [ [ [ [ { [ [ [ | % Z o.| { o.Q p i u Q } ` o.j ", -" @ | [ [ [ [ { [ [ [ [ [ [ | % Z | ] ] } T ; M I ` [ ' o.h . ", -" @ | ' [ { [ { [ [ [ [ [ [ | % Z ..[ [ .T 8 e s ' [ ' o.k ", -" @ | [ [ [ [ [ [ [ [ { [ [ X.% Z ..[ [ [ ] ) Q 9 n X.` o.j ", -" @ | ' [ [ [ [ { [ [ [ { [ ..& Z ..[ [ } Y B I 9 B .` o.j ", -" @ | [ [ [ { [ [ [ [ [ [ ' | & Z | ' [ } I y r g [ [ ' o.j ", -" @ | [ [ [ [ [ [ [ [ [ [ [ ..& Z ..' [ [ .X. . .[ [ ' o.j ", -" @ } ` ' ` ` [ ` ` [ ' ' ` | $ Z ..' [ [ ' ` ` ' [ [ ' X.j . ", -" $ #.o.o.o.o.o.o.o.o.o.o.o.$.= A O.{ | | | | | | | | } #.k ", -" X l j j j j j j k j j h j l o c ~ J W W W J W J W J J ( 4 ", -" ", -" . . " +" + 3 8 6 ; ; > > > > > 2 > 1 @ * 8 8 > 5 > > > > > > > > ; ", +" 6 V.j >.hXhXeX,X,X,X6XeX,XdX8 -.` ^ dXv. eXl Y s.' j. X!.~.!.!.J.6X5 -.u.i u.s | XJ.~.~.~.!.,Xj. ", +" 6 p.= %.s.+.k.*X!.~.].].!.eX6 -.t h S.Q s.*X].~.~.~.!.,Xj. ", +" 2 J.1.k.eXeX*X~.].].~.~.!.eX6 +.x.p.`. X6XZ.m.*X*X~.!.*Xj.O ", +" > eX,X*X~.~.~.].~.].~.].!.eX5 -.dX,XQ.7X4.n b D S.].!.,Xj.O ", +" > ,X!.~.~.].~.~.].~.].~.!.eX5 %.eXJ.~.*Xr.l.r.q q.4XQ.,Xj. ", +" > eX~.~.].~.].~.].~.].~.!.eX5 *.rX~.].Q.4XpXL m A. X~.,Xj. ", +" > 6X~.].~.].~.].~.].~.].~.eX5 %.eX~.~.~. XK N Q.6X~.~.,Xj.O ", +" > eX!.~.].~.].~.].~.].~.~.eX5 *.eX!.J.7X[ q Z A w.4XJ.,Xj. ", +" > ,X!.].~.].~.].~.].~.~.!.eX5 *.rX!.!.*Xt.5.4.I z. XQ.,Xj.O ", +" > ,X~.~.].~.].~.].~.].~.~.eX5 %.eX~.].~.*XqX7XqX&X~.~.,Xj. ", +" > ,XJ.!.!.~.~.!.~.~.~.!.!.eX6 %.eXJ.!.~.Q.J.J.J.!.~.J. Xj.O ", +" 3 uX,X,X6X,X ", +" > J.b.V.V.V.V.V.V.V.V.V.b.J.3 ^ +.R o.j #.>.>.#.&.%.#.t.f O ", +" > eX]. X X X*X*X X X*X X XuX6 u.Q s ^ p | &.| XtXtX ,X!.~.~.].~.~.~.].~.~.~.6X8 ` y 9 p d ^ g u (.~.!.G.rXQ O ", +" > eX~.~.].~.].~. X~.].~.~.eX6 -.!.+.j.R V.B.B.]. X~.!.uX^ O ", +" 2 6X~.].~.].~.].~.].~.~.~.eX6 %.uX6X#XgXy.G H F m.*XJ.uX^ O ", +" > 6X~.~.].~.].~.].~.].~.~.eX6 *.eXJ.J.4X7.v H P Q.].J.uX^ O ", +" > ,X~.~.].~.].~.].~.].`.Q.eX5 *.eX!.].~.~.7XJ.x [ 7XS.uX^ O ", +" > 6X~.~. X~.].].~.].~.].!. ,XJ.!.J.J.!.!.J.!.J.!.G.,X5 %.6XJ.~.~.J.Q.J.J.~.~.J.eX^ O ", +" 3 hXuXuXuXuXuXuXuXuXuXuXuXhX8 >.dX*X,X,X X,X,X,X,X,X XhX/ O ", +" # / ^ Q ^ Q ^ ^ ^ ^ W ^ W _ % | x.s.j.j.k.j.j.j.j.j.j.V.l O ", +" O O O O O O O O ", +" O O O O O O O O O O O O O " }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 111 2 ", -" c #010101", -". c #080707", -"X c gray6", -"o c #100F0F", -"O c #121211", -"+ c #1C1C1B", -"@ c #232322", -"# c #2A2A29", -"$ c #30302F", -"% c #333332", -"& c #383736", -"* c #383836", -"= c #3D3C3B", -"- c #007500", -"; c #007A00", -": c #41413F", -"> c #464544", -", c #484746", -"< c #494847", -"1 c #4D4C4A", -"2 c #504F4D", -"3 c #545351", -"4 c #5F5E5C", -"5 c #676663", -"6 c #6D6C69", -"7 c #716F6D", -"8 c #71726D", -"9 c #767572", -"0 c #7A7976", -"q c #7E7D7A", -"w c #817F7C", -"e c #018201", -"r c #088508", -"t c #249123", -"y c #2C932A", -"u c #359733", -"i c #369935", -"p c #3D9B3B", -"a c #449E42", -"s c #49A047", -"d c #4BA149", -"f c #51A34F", -"g c #53A451", -"h c #58A856", -"j c #5CA759", -"k c #5EA85B", -"l c #66AB63", -"z c #69AC66", -"x c #6EAE6A", -"c c #70AF6C", -"v c #74B070", -"b c #79B375", -"n c #7FB37B", -"m c #82817E", -"M c #82B67E", -"N c #868582", -"B c #8B8A86", -"V c #8E8D8A", -"C c #93928F", -"Z c #989793", -"A c #9A9995", -"S c #9D9C98", -"D c #A09E9B", -"F c #84B780", -"G c #A3A19E", -"H c #A6A5A1", -"J c #ABA9A5", -"K c #AEADA9", -"L c #B0AEAA", -"P c #B2B0AC", -"I c #B7B5B1", -"U c #B8B6B2", -"Y c #BBB9B5", -"T c #BEBCB8", -"R c #C1BFBB", -"E c #9CC197", -"W c #A6C4A0", -"Q c #AAC6A5", -"! c #B4CAAE", -"~ c #BBCDB5", -"^ c #C4C2BD", -"/ c #C1CFBB", -"( c #C5D1BE", -") c #C7C6C1", -"_ c #CCCAC5", -"` c #D1CFCA", -"' c #C6D1C0", -"] c #CAD3C3", -"[ c #CFD5C8", -"{ c #D3D3CD", -"} c #D6D7D0", -"| c #D9D7D2", -" . c #D7D8D0", -".. c #DCDAD5", -"X. c #DFDDD8", -"o. c #E1D3DA", -"O. c #E2DDDB", -"+. c #E3E1DC", -"@. c #EADFE2", -"#. c #E7E5E0", -"$. c #E9E6E2", -"%. c #EEEBE6", -"&. c #EFE2E8", -"*. c #F2E3EA", -"=. c #F1EFE9", -"-. c #F4F2EC", -";. c #FAE6F2", -":. c #FCEFF4", -">. c #F9F7F1", -",. c #FDFBF5", -"<. c gray100", +"48 48 73 1 ", +" c #010101", +". c gray3", +"X c #131313", +"o c #1B1B1B", +"O c #252525", +"+ c #2B2B2B", +"@ c #333333", +"# c #3E3E3E", +"$ c #007E00", +"% c #434343", +"& c gray30", +"* c #545454", +"= c #5D5D5D", +"- c #626262", +"; c #6C6C6C", +": c #707270", +"> c #7B7B7B", +", c #008400", +"< c #028A02", +"1 c #0B8E0B", +"2 c #138E13", +"3 c #149114", +"4 c #199219", +"5 c #218F21", +"6 c #209720", +"7 c #259825", +"8 c #2D9B2D", +"9 c #3AA13A", +"0 c #42A442", +"q c #49A749", +"w c #4DA84D", +"e c #54AB54", +"r c #5AAE5A", +"t c #60B060", +"y c #69B569", +"u c #71B771", +"i c #76B976", +"p c #838383", +"a c #8A8A8A", +"s c #929292", +"d c #9B9C9B", +"f c #82BE82", +"g c #A4A4A4", +"h c #ACACAC", +"j c #B5B5B5", +"k c #BABABA", +"l c #86C086", +"z c #8AC18A", +"x c #95C695", +"c c #9AC79A", +"v c #A7CDA7", +"b c #ACCFAC", +"n c #B7D3B7", +"m c #B9D5B9", +"M c #C7C7C7", +"N c #CCCCCC", +"B c #C0D7C0", +"V c #C4D9C4", +"C c #CFD1CF", +"Z c #CCDCCC", +"A c #D5D5D5", +"S c #D1DED1", +"D c #DCDCDC", +"F c #DEE3DE", +"G c #E5E6E5", +"H c #E9E7E9", +"J c #ECEBEC", +"K c #F1E7F1", +"L c #F3EBF3", +"P c #FAEEFA", +"I c #F4F4F4", +"U c #FFF3FF", +"Y c #FAFAFA", /* pixels */ -" ", -" . ", -" ", -" . @ # $ # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . O @ $ $ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . ", -" @ +.R Z ^ +.....+...+...+.O...+...+...+.O 0 %.H S ....$.+...+...X...+...O...+.X.+.@ ", -" @ X.D J * ^ %.#.+.....................+.X 0 { G 0 3 ,.A ^ %.| ..............| ..X.@ ", -" @ ..>.Y & U K J K | ..................+.O 9 =.>.5 5 _ 6 N ) ....................X.@ ", -" @ $.C + K ^ C Z G | ..................+.O 0 $.< < | J 8 w Y X.| ................X.@ ", -" @ +.7 6 B ` %.$.$.X...................+.o q _ 2 m A >.V I %...O.O...............X.@ ", -" @ X.$.$.+...| | | ....................+.O 9 -.%.+.O.} +.O...] ~ ( ..O.| ........X.@ ", -" @ X.| | ..................X...........+.O 9 %.{ | | ....X.a e ; e i ( O.........X.@ ", -" @ O...................................+.O 9 %.| ..........d M ~ x ; k @.| ......X.@ ", -" @ X...................................+.O 0 %.| ..........O.#.@. .e p #.........O.@ ", -" @ X...........X.......................+.O 9 %.| ....X.....| ..@.l ; c @. .......X.@ ", -" @ X...................................O.O 9 %.| ..........O.| f - y [ O.........X.@ ", -" @ X...................................+.O 9 %.| ......| X.' i ; f O.&.| ........X.@ ", -" @ +...................................+.O 9 %.| ........O.y - ; y y k @.| ......X.@ ", -" @ X.......................X...........+.O 9 %.| ..........c k k g s b O.........X.@ ", -" @ X...................................+.O 9 %.| ..........$.@.&.*.*.#...........X.@ ", -" @ X...............X...................+.O 9 =.} ..........| . .| | | ..........X.@ ", -" @ ....................................+.O 9 %.} ................................X.@ ", -" @ .. .| | ..| | | | .| | | | | ..| | +.O 9 %.| ..................................@ ", -" @ %.#.$.+.#.#.$.$.$.$.$.$.$.$.$.$.$.$.=.O 0 -.X.+.+.+.+.+.+.+.O.+.+.+.+.+.+.+.+.+.@ ", -" + V B V V V B V V B B B B B B B B B B V O . O O X X O o O O O O O O O O o O O o + . ", -" + ^ T T T T T T T T T T T T T T T T T ^ O = w 9 N 0 q q q 9 9 8 0 9 9 0 9 9 9 q 3 ", -" @ #.+.+.+.+.+.O.+.+.+.+.+.+.+.+.+.+.+.$.O q <...3 ^ ) 7 D -.=.-.-.%.%.%.%.=.$.,.J ", -" @ ......| ............| ..| ..........+.O 9 #.V & Z 2 J , P w P 0 { | | | } { +.A ", -" @ O...................................O.X m P 0 1 0 > | > I H Z #.| ......| $.S . ", -" @ X...................................+.O 0 | H $ q N 4 4 ` 8 0 8 .........| $.S ", -" @ X...................................+.O 9 =.$._ { O.K ` O.o.:.o.&.O.......| $.S . ", -" @ O...................................+.O 9 %.{ O.X...+.#.W h f g s ! O.....| $.S ", -" @ ..........X.........................+.O 9 =.| ..| ..| @.M - t u t Q O.......$.S ", -" @ X...................................+.O 9 %.| ......| $.M ; Q *.*.O.......| $.S . ", -" @ O...................................+.O 9 =.| ......| &.M - r e d [ O.....| $.S ", -" @ ....................................+.O 9 %.| ........O.E c E d - x #.....| $.S . ", -" @ +...................................+.O 9 %.| ..........*.*.;...e p @.| ..| $.S ", -" @ ............X.......................+.O 9 =.} ..........M E ~ l ; z @.| ..| $.S . ", -" @ +...............X...................+.O 9 %.| ........O.p e ; e s [ X.....| #.S ", -" . @ ....................................+.O 9 %.| ............( ~ ( O.O.| ....| $.S . ", -" @ X...................................+.O 9 =.| ............O.O.O...........| $.S ", -" @ X...................................+.O 9 %.| ............................| $.S . ", -" @ ....| | | ..| | | | | | | | | ..| | +.O 9 %.| ............................| $.S ", -" @ %.$.$.$.$.$.$.$.$.$.%.#.$.$.$.$.$.$.=.O 9 =.| ............................| $.S . ", -" + G S S S S S S S S S S S S S S S S S G . 0 =...X...O.X.X.X.X...O...O.X.X.+...%.S ", -" O @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", -" . . . . . . ", -" . ", -" " +" ", +" . . ", +" ", +" .O@@+OOOOOOOOOOOOOOO X+@@OOOOOOOOOOOOOOOO. ", +" OJjdDHGHHGJJJHHGJGJIXpJdjJHJHHHGGJHJHJGGJO ", +" OH>&%IIIIGGGGHHGHGGJXpM;OdYajYGHHGHHGHHGJO ", +" OHYp;DassGGGGGGGGHGJX>YJ%ks--hJGGGHGGGGGGO ", +" OI-okSddgGGGGHGGGGGJXpFX=DD;sFGFGGGGGGGGJO ", +" OJ;=>HIIIGGGGGGGGGGJXpN*-hINDJHKJGGGGGGHGO ", +" OHYYIHGGGGGGJGGGGGGJX>YIIIGJHHSVZJHGGGGHJO . ", +" OJFFGGGGGGGGGGGGGGGJo>YDGGGHH0<<YGGGGHGefv8$zLGGHGJO ", +" OHGHGHGHGGGGGGGGGGGJX>YFGGGGGJKUi$lIGGGGJO ", +" OJGGGGGGGGGGGGGGGHGJX>YGGGGGHGJZ44SJGGGGGO ", +" . OHGHGGHGGGGGGGGGGGGJX>IGGGGGGLm34VKGGGGGJO ", +" OJHGGGGGGGGGGGGHJHHJX>YFGHGGHv17SHFGGGGGJO ", +" OGGGGHGGGGHHGGGGGGHJXuPGGGGHG4$241uKGGGGHO ", +" OJGHGGGGHGGGGGGGGGGJX>PFHGGHFitrrecJGGGHJO ", +" OJGGGGGGGGHGGGJGGHGJX>UFGGGGHKPULPJGGGGHJO ", +" OJGGHGGGGGGGGGGGGHJJX>PFHGGGGGFGGGGGGGHGHO ", +" OGHHGGHGGGGGGGGGGHGJX>YGGHGGGGGGGGHGGGGGGO ", +" OHGFGGFFGGGFGGGGFGFJX>YFGGGHGGGGHGGGGGGHJO ", +" OYJIIIIIIIIIIIIIIIJYX>YHJJJJJJIJJJIJKJJJJO ", +" ossssssssssssssssssdX.XXXXXXXXXXXXXXXXXXo. ", +" OMMMMVMMMMMMMMMMMMMNo%p>a>pap>p>>>>>>>>p* ", +" OIJJJJJLJJIJJJJJJJJIXpYM*Hj*jYJYJYYYYYYYj ", +" OHGHHGGGGHGGGGGGGHGJX>J-+j@a@k:apJFGFGDJg ", +" OGGHGGGGGHGGGJGGGHGJXas@+;#A+Ap.NJGGGGGIg . ", +" OJGGGGGGGGGGGGGGGGGJX>Ddod;+-C:d>HGGGGGIg ", +" OJGGHGGGGGGJGGGGGHGJX>YINHGjGKLYKPHGGGGIg . ", +" OJGGGGHGGGGGGGGGGGHJX>YDJGGJJxrrrrZHGGGIg ", +" OJGGGGHJGGGGGGGJGGGJX>YGGGGGKe,642nJGGFIg ", +" OJGGGGGGGGGGJGGGGGGJouPGHHGGLr1izZJGGGGIg ", +" OGGGGGGGGGGGGGGGGGGJX:PDGGGFJe<1<4BJGHFIg ", +" OJHGGGGJGGGGGGGGGGGJX>YGHGGGHnBGy$rKGGFLg . ", +" OGGHGGGGGGGGGHGGGGGIX>UDHHGGGLPUn<0LGGGIg ", +" OJGGGGJGGGGGGGGGGHHJX>YDGGGHFqzb9$iKGGGIg . ", +" OJGGHGGGGJGGGGHGHHHJX>UGGGGGG0<,YFGGGGHHSVSJHGGGGIg . ", +" OJHGGGGGGGGGGGGGGGGIX>IGGGGHGGHJJGGGGGDIg ", +" OHGGGGGHGGHGGGGGGGGJX>YFGGGGHGGGGGHHGGGIg . ", +" OGGGGGHFGGFFGGGGGDGJX>YGGHHGGGGGGGGGHGGIg ", +" OYIIIIIIIIIIIIIIIIIYX>IFHGGGGGHHGGGGGGGIg . ", +" oggggggggggggggggggh.iYHJJGJHJGJGHJJHHGIg ", +" X+OOOOOOOOOOOOOOOOOo ", +" . . . . . ", +" ", +" " }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/keen.sav sgt-puzzles-20160429.b31155b/icons/keen.sav --- sgt-puzzles-20140928.r10274/icons/keen.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/keen.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,62 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :4:Keen +PARAMS :3:5de +CPARAMS :3:5de +SEED :15:846699649745236 +DESC :48:a__a_3a_5a_a_a_3b_bac_,a5m15a7a10s2s2d2s3m40m2s2 +AUXINFO :52:6105af67c6ebc8de056b59ebc9a463aa54e75f647055c0a6c1bd +NSTATES :2:53 +STATEPOS:2:39 +MOVE :6:P0,4,2 +MOVE :6:P0,4,4 +MOVE :6:P0,4,5 +MOVE :6:P1,4,2 +MOVE :6:P1,4,4 +MOVE :6:P1,4,5 +MOVE :6:P1,3,2 +MOVE :6:P1,3,4 +MOVE :6:P1,3,5 +MOVE :6:R2,2,4 +MOVE :6:R1,2,2 +MOVE :6:P1,3,2 +MOVE :6:P1,4,2 +MOVE :6:R0,4,2 +MOVE :6:R2,3,2 +MOVE :6:R2,4,1 +MOVE :6:R1,4,4 +MOVE :6:R1,3,5 +MOVE :6:P3,4,3 +MOVE :6:P3,4,5 +MOVE :6:P4,4,3 +MOVE :6:P4,4,5 +MOVE :6:R4,4,5 +MOVE :6:R3,4,3 +MOVE :6:P3,1,2 +MOVE :6:P3,1,5 +MOVE :6:P3,0,2 +MOVE :6:P3,0,5 +MOVE :6:R3,2,1 +MOVE :6:R3,3,4 +MOVE :6:P2,0,3 +MOVE :6:P2,0,5 +MOVE :6:P2,1,3 +MOVE :6:P2,1,5 +MOVE :6:P0,1,1 +MOVE :6:P0,1,3 +MOVE :6:P1,1,1 +MOVE :6:P1,1,3 +MOVE :6:R2,0,3 +MOVE :6:R2,1,5 +MOVE :6:R3,0,5 +MOVE :6:R3,1,2 +MOVE :6:R4,1,4 +MOVE :6:R4,2,3 +MOVE :6:R4,0,2 +MOVE :6:R4,3,1 +MOVE :6:R0,2,5 +MOVE :6:R0,3,3 +MOVE :6:R1,1,3 +MOVE :6:R0,1,1 +MOVE :6:R1,0,1 +MOVE :6:R0,0,4 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/keen-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/keen-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/lightup-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/lightup-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/lightup-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/lightup-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/lightup-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/lightup-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/lightup-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/lightup-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/lightup-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/lightup-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/lightup-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/lightup-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/lightup-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/lightup-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/lightup-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/lightup-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/lightup-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/lightup-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/lightup-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/lightup-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/lightup-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/lightup-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/lightup-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/lightup-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/lightup.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/lightup.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/lightup-icon.c sgt-puzzles-20160429.b31155b/icons/lightup-icon.c --- sgt-puzzles-20140928.r10274/icons/lightup-icon.c 2014-09-29 00:33:42.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/lightup-icon.c 2016-04-29 00:31:43.000000000 +0000 @@ -1,561 +1,571 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 182 2 ", -" c #DAD8D3", -". c #CFCDCB", -"X c #CECCCB", -"o c #CFCDCA", -"O c #CECCCC", -"+ c #D0CECC", -"@ c #DBDAD4", -"# c #D5D4C2", -"$ c #E4E429", -"% c #EDEC1A", -"& c #EBEA1E", -"* c #EBEB1D", -"= c #D2D13E", -"- c #EAEA1E", -"; c #EBEA1D", -": c #EDED1A", -"> c #E2E129", -", c #D7D638", -"< c #EEEE19", -"1 c #E9E920", -"2 c #EFEF14", -"3 c #D6D549", -"4 c #D3D0D8", -"5 c #D6D4C1", -"6 c #F6F60F", -"7 c yellow", -"8 c #FEFE01", -"9 c #E0DF29", -"0 c #F4F30F", -"q c #E5E522", -"w c #FDFD04", -"e c #E3E235", -"r c #D1CFD9", -"t c #F2F110", -"y c #FCFC00", -"u c #FAFA03", -"i c #FBFB01", -"p c #DDDD2A", -"a c #FDFD03", -"s c #F2F211", -"d c #E4E424", -"f c #FBFB06", -"g c #E2E136", -"h c #D7D5C2", -"j c #F7F70F", -"k c #FFFE01", -"l c #E1E12A", -"z c #CBCABD", -"x c #99981E", -"c c #9B9B11", -"v c #989811", -"b c #989713", -"n c #AAA936", -"m c #E6E529", -"M c #E0E027", -"N c #E3E324", -"B c #DAD931", -"V c #CFCE40", -"C c #E9E81E", -"Z c #E1E016", -"A c #E9E816", -"S c #D0CF50", -"D c #D3D1D6", -"F c #B8B6B2", -"G c #030304", -"H c #020207", -"J c #0F0F17", -"K c black", -"L c #676718", -"P c #FFFF0A", -"I c #F5F507", -"U c #FCFC04", -"Y c #EEEE17", -"T c #E3E222", -"R c #E1E11C", -"E c #CECE7E", -"W c #DDDD28", -"Q c #DEDE32", -"! c #D2D0DB", -"~ c #BBB9B4", -"^ c #4F4F4B", -"/ c #86867E", -"( c #090915", -") c #65640F", -"_ c #FFFF03", -"` c #FBFB00", -"' c #D4D41F", -"] c #E2E2BD", -"[ c gray100", -"{ c #EAEAD6", -"} c #CAC944", -"| c #D6D4D5", -" . c #BAB9B5", -".. c gray31", -"X. c #868682", -"o. c #090919", -"O. c #646410", -"+. c #FFFF05", -"@. c #FBFB02", -"#. c #F8F810", -"$. c #CFCF23", -"%. c #E3E3CC", -"&. c #ECECE3", -"*. c #C5C44B", -"=. c #D7D5D3", -"-. c gray1", -";. c #020202", -":. c #10100D", -">. c #686815", -",. c #FFFF02", -"<. c #F8F800", -"1. c #F1F111", -"2. c #E7E61F", -"3. c #EAEA2D", -"4. c #E1E1A5", -"5. c #E8E83E", -"6. c #E2E131", -"7. c #CAC8C4", -"8. c #888783", -"9. c #898885", -"0. c #888682", -"q. c #858484", -"w. c #9C9B87", -"e. c #D4D299", -"r. c #CECC97", -"t. c #D0CE97", -"y. c #CDCC9A", -"u. c #595831", -"i. c #454504", -"p. c #424201", -"a. c #434300", -"s. c #5B5A36", -"d. c #D8D6D4", -"f. c #D6D4CF", -"g. c #E5E2DD", -"h. c #EBE9E3", -"j. c #E7E5E0", -"k. c #ECEAE4", -"l. c #DBD9E0", -"z. c #DDDAE0", -"x. c #DDDBE1", -"c. c #DCDAE0", -"v. c #242324", -"b. c #040405", -"n. c #242423", -"m. c #D1CFCA", -"M. c #E3E1DC", -"N. c #82807D", -"B. c #2E2D2C", -"V. c #E2E0DB", -"C. c #C4C2BD", -"Z. c #DBD9D1", -"A. c #DBD9D2", -"S. c #DCDAD2", -"D. c #272724", -"F. c #080805", -"G. c #D3D1CC", -"H. c #DCDAD5", -"J. c #C5C3BF", -"K. c #ABA9A5", -"L. c #E1DFDA", -"P. c #C7C5C1", -"I. c #DDDBD6", -"U. c #DEDCD7", -"Y. c #242323", -"T. c #040303", -"R. c #D5D3CE", -"E. c #CFCDC9", -"W. c #DBD9D4", -"Q. c #DFDDD8", -"!. c #D4D2CD", -"~. c #C4C2BE", -"^. c #353433", -"/. c #0E0D0D", -"(. c #181817", -"). c gray5", -"_. c #353534", -"`. c #D7D5D0", -"'. c #D6D4D0", -"]. c #D0CFCA", -"[. c #CECCC8", -"{. c #CFCDC8", +"16 16 232 2 ", +" c #E4E4E4", +". c #D8D8DC", +"X c #D7D7DC", +"o c #D8D8DC", +"O c #D8D8DC", +"+ c #D8D8DB", +"@ c #D8D8DC", +"# c #D8D8DC", +"$ c #D8D8DC", +"% c #D8D8DB", +"& c #D8D8DB", +"* c #D8D8DC", +"= c #D8D8DC", +"- c #D7D7DB", +"; c #D9D9DC", +": c gray90", +"> c #DEDED2", +", c #E6E62C", +"< c #EEEE1C", +"1 c #ECEC21", +"2 c #EDED1F", +"3 c #D5D543", +"4 c #EBEB21", +"5 c #ECEC20", +"6 c #EEEE1D", +"7 c #E4E42C", +"8 c #D9D93D", +"9 c #EFEF1B", +"0 c #EBEB23", +"q c #F0F016", +"w c #D9D94E", +"e c #DDDDE9", +"r c #DFDFD0", +"t c #F7F710", +"y c yellow", +"u c #FFFF01", +"i c #E1E12C", +"p c #FEFE01", +"a c yellow", +"s c #F4F410", +"d c #E6E625", +"f c #FDFD04", +"g c #E5E539", +"h c #DBDBEB", +"j c #DFDFD0", +"k c #F2F211", +"l c #FCFC00", +"z c #FAFA03", +"x c #FBFB01", +"c c #DFDF2D", +"v c #FDFD04", +"b c #FDFD03", +"n c #F3F312", +"m c #E6E627", +"M c #FCFC06", +"N c #E4E43B", +"B c #DBDBEA", +"V c #E0E0D1", +"C c #F7F710", +"Z c #FFFF01", +"A c #E3E32E", +"S c #FEFE01", +"D c yellow", +"F c #F4F410", +"G c #E7E725", +"H c #FDFD04", +"J c #E5E539", +"K c #DBDBEB", +"L c #D4D4CC", +"P c #9A9A20", +"I c #9C9C12", +"U c #999913", +"Y c #999915", +"T c #ACAC3A", +"R c #E8E82C", +"E c #E2E22A", +"W c #E5E527", +"Q c #DBDB35", +"! c #D2D245", +"~ c #EAEA20", +"^ c #E2E219", +"/ c #EAEA19", +"( c #D3D356", +") c #DDDDE8", +"_ c #C0C0C0", +"` c #030305", +"' c #010106", +"] c #0F0F17", +"[ c black", +"{ c #68681A", +"} c #FFFF0A", +"| c #F6F608", +" . c #FCFC04", +".. c #EFEF19", +"X. c #E4E425", +"o. c #E1E11C", +"O. c #CFCF80", +"+. c #DDDD28", +"@. c #E1E137", +"#. c #DCDCEC", +"$. c #C3C3C3", +"%. c #5A5A56", +"&. c #A2A29A", +"*. c #0D0D19", +"=. c #65650F", +"-. c #FFFF03", +";. c #FBFB00", +":. c #F8F810", +">. c #D6D622", +",. c #E2E2BD", +"<. c white", +"1. c #E9E9D5", +"2. c #CCCC48", +"3. c #E1E1E6", +"4. c #C3C3C3", +"5. c gray35", +"6. c #A2A29E", +"7. c #0D0D1D", +"8. c #646411", +"9. c #FFFF05", +"0. c #FBFB02", +"q. c #F9F911", +"w. c #D0D025", +"e. c #E2E2CC", +"r. c #EBEBE2", +"t. c #C7C74F", +"y. c #E1E1E5", +"u. c #C0C0C0", +"i. c gray1", +"p. c #010101", +"a. c #0F0F0C", +"s. c #696916", +"d. c #FFFF02", +"f. c #F7F700", +"g. c #FEFE00", +"h. c #F1F112", +"j. c #E8E822", +"k. c #EAEA2E", +"l. c #E2E2A6", +"z. c #E8E83E", +"x. c #E4E435", +"c. c #DCDCED", +"v. c LightGray", +"b. c #8E8E8E", +"n. c #909090", +"m. c #8E8E8D", +"M. c #8B8B8E", +"N. c #A2A291", +"B. c #DBDBA5", +"V. c #D5D5A3", +"C. c #D7D7A3", +"Z. c #D4D4A6", +"A. c #5A5A34", +"S. c #454505", +"D. c #434303", +"F. c #444400", +"G. c #5D5D3A", +"H. c #E1E1E4", +"J. c gray88", +"K. c #EFEFEF", +"L. c gray96", +"P. c gray95", +"I. c #F7F7F6", +"U. c #D7D7DB", +"Y. c #E5E5F1", +"T. c #E7E7F2", +"R. c #E8E8F3", +"E. c #E7E7F2", +"W. c #252526", +"Q. c #040405", +"!. c #262625", +"~. c #E4E4E4", +"^. c #DADADA", +"/. c gray93", +"(. c #888888", +"). c gray19", +"_. c gray93", +"`. c #CDCDCC", +"'. c #E5E5E2", +"]. c #E5E5E3", +"[. c #E6E6E3", +"{. c #E5E5E3", +"}. c #292927", +"|. c #080805", +" X c #292927", +".X c #E4E4E4", +"XX c #DDDDDD", +"oX c #E6E6E6", +"OX c #CECECE", +"+X c #B2B2B2", +"@X c gray92", +"#X c #D0D0D0", +"$X c #E7E7E7", +"%X c #E7E7E7", +"&X c gray91", +"*X c #E7E7E7", +"=X c #252525", +"-X c #040404", +";X c #252525", +":X c #E4E4E4", +">X c gray87", +",X c #D8D8D8", +" , < 1 2 3 4 ", -"5 6 7 8 7 9 8 7 7 0 q 7 w 7 e r ", -"5 t y u i p w a 7 s d 7 f 7 g r ", -"h j 7 k 7 l 8 7 7 0 q 7 w 7 e r ", -"z x c v b n m M N B V C Z A S D ", -"F G H J K L P I U Y T R E W Q ! ", -"~ K ^ / ( ) _ ` 7 j ' ] [ { } | ", -" .K ..X.o.O.+.@.7 #.$.%.[ &.*.=.", -"F -.;.:.K >.,.<.7 1.2.3.4.5.6.! ", -"7.8.9.0.q.w.e.r.t.y.u.i.p.a.s.d.", -"f.g.h.j.k.X l.z.x.c.v.K b.K n. ", -"m.M.N.B.V.C.Z.A.S.A.D.K F.K D. ", -"G.H.J.K.L.P.I.I.U.I.Y.K T.K Y. ", -"R.E.W.Q.!.~.!.!.R.R.^./.(.)._. ", -"W.`.R.!.`.`.'.'.'.`.].[.{.[.m.H." +" . X o O + @ # $ % & * = - ; : ", +"> , < 1 2 3 4 5 6 7 8 9 0 q w e ", +"r t y u y i p a y s d y f y g h ", +"j k l z x c v b y n m y M y N B ", +"V C y Z y A S D y F G y H y J K ", +"L P I U Y T R E W Q ! ~ ^ / ( ) ", +"_ ` ' ] [ { } | ...X.o.O.+.@.#.", +"$.[ %.&.*.=.-.;.y :.>.,.<.1.2.3.", +"4.[ 5.6.7.8.9.0.y q.w.e.<.r.t.y.", +"u.i.p.a.[ s.d.f.g.h.j.k.l.z.x.c.", +"v.b.n.m.M.N.B.V.C.Z.A.S.D.F.G.H.", +"J.K.L.P.I.U.Y.T.R.E.W.[ Q.[ !.~.", +"^./.(.)._.`.'.].[.{.}.[ |.[ X.X", +"XXoXOX+X@X#X$X%X&X*X=X[ -X[ ;X:X", +">X,X c #403F3C", -", c #444341", -"< c #494847", -"1 c #575654", -"2 c #62615F", -"3 c #696866", -"4 c #797875", -"5 c #8F8F1E", -"6 c #858523", -"7 c #86862C", -"8 c #88872E", -"9 c #8F8E2B", -"0 c #919021", -"q c #919129", -"w c #BFBF20", -"e c #BDBD2B", -"r c #ABAB31", -"t c #C6C60B", -"y c #D4D400", -"u c #DBDB02", -"i c #C3C310", -"p c #E1E100", -"a c #EDED00", -"s c #F2F200", -"d c #FEFE01", -"f c #F4F40C", -"g c #FEFE0D", -"h c #ECEB19", -"j c #F3F312", -"k c #CBCB24", -"l c #CFCE2E", -"z c #DCDC24", -"x c #D7D72C", -"c c #D8D72A", -"v c #DDDC2B", -"b c #C9C933", -"n c #D5D436", -"m c #D5D338", -"M c #E1E037", -"N c #888756", -"B c #87865E", -"V c #BDBC4E", -"C c #ACAB57", -"Z c #B2B15C", -"A c #A9A963", -"S c #AEAC6B", -"D c #BFBD62", -"F c #B3B16B", -"G c #AEAD78", -"H c #C0BF53", -"J c #C0BF5F", -"K c #C0BF62", -"L c #C5C447", -"P c #C4C34D", -"I c #CDCC4C", -"U c #D0CF40", -"Y c #C5C450", -"T c #C8C750", -"R c #CAC952", -"E c #C2C15E", -"W c #CBCA5E", -"Q c #C2C161", -"! c #C2C069", -"~ c #838383", -"^ c #8E8E8E", -"/ c #918F8C", -"( c #B0B088", -") c #A4A29F", -"_ c #B2B291", -"` c #AFAFA4", -"' c #AAAAAA", -"] c #B3B2AC", -"[ c #B8B6B2", -"{ c #BCBAB6", -"} c #BCBBBA", -"| c #C0BEB9", -" . c #C5C3BF", -".. c #CECCBD", -"X. c #D0CEBF", -"o. c #BBB9C0", -"O. c #C6C4C4", -"+. c #C9C7C2", -"@. c #CBC9C5", -"#. c #C3C1CC", -"$. c #C9C7C8", -"%. c #CCCBC9", -"&. c #D0CFCA", -"*. c #D4D2CD", -"=. c #C5C5D3", -"-. c #CCCCD3", -";. c #D1CFDC", -":. c #D7D5D2", -">. c #D9D7D2", -",. c #DDDBD5", -"<. c #D2D1DC", -"1. c #D9D7D9", -"2. c #DFDDD9", -"3. c #E1DFD9", -"4. c #E2E0D7", -"5. c #E4E1DC", -"6. c #D7D5E2", -"7. c #DBD9E4", -"8. c #E7E5E0", -"9. c #E9E7E1", -"0. c #EDEBE5", -"q. c #ECECFF", -"w. c #F7F7FF", -"e. c #FEFEFD", +". c #00000F", +"X c gray3", +"o c #010111", +"O c #141414", +"+ c #1D1D1D", +"@ c #20201E", +"# c #35351D", +"$ c #202020", +"% c #3F3F25", +"& c gray20", +"* c #3D3D30", +"= c #3B3B3A", +"- c #414127", +"; c #3D3D41", +": c #414141", +"> c #4C4C4C", +", c #5B5B5B", +"< c #676767", +"1 c gray43", +"2 c #7E7E7E", +"3 c #BFBF1F", +"4 c #878725", +"5 c #88882F", +"6 c #929223", +"7 c #92922E", +"8 c #8A8A31", +"9 c #BDBD2A", +"0 c #ACAC32", +"q c #C6C60B", +"w c #D3D300", +"e c #DBDB00", +"r c #DFDF08", +"t c #C3C310", +"y c #E1E100", +"u c #EDED00", +"i c #F1F100", +"p c #FFFF01", +"a c #F5F50D", +"s c #FEFE0D", +"d c #EDED1B", +"f c #F4F410", +"g c #FFFF11", +"h c #F4F418", +"j c #CDCD26", +"k c #CCCC28", +"l c #DEDE26", +"z c #DBDB2E", +"x c #CACA33", +"c c #D2D235", +"v c #DDDD30", +"b c #D7D73C", +"n c #D8D83C", +"m c #E0E030", +"M c #E2E23B", +"N c #8A8A5E", +"B c #8B8B66", +"V c #ACAC61", +"C c #ADAD6F", +"Z c #B5B564", +"A c #B4B475", +"S c #C5C54D", +"D c #CACA4C", +"F c #D2D246", +"G c #C6C654", +"H c #C9C953", +"J c #C4C459", +"K c #CFCF5A", +"L c #D2D253", +"P c #C6C665", +"I c #CECE66", +"U c #C5C569", +"Y c #CACA68", +"T c #D0D064", +"R c #C6C671", +"E c #8B8B8B", +"W c #979797", +"Q c #B2B283", +"! c #B0B089", +"~ c #B2B291", +"^ c gray64", +"/ c #ABABAB", +"( c #B1B1A5", +") c #B6B6AD", +"_ c #B9B9B9", +"` c gray76", +"' c #C9C9C7", +"] c #C3C3CF", +"[ c #CCCCCC", +"{ c #D7D7CC", +"} c #D9D9CF", +"| c #C7C7D4", +" . c #CCCCD3", +".. c #CCCCDC", +"X. c #D4D4D4", +"o. c #D6D6DE", +"O. c #DDDDDD", +"+. c #DCDCED", +"@. c #DADAF0", +"#. c #E5E5E5", +"$. c #E9E9E4", +"%. c #E2E2E9", +"&. c #EBEBEA", +"*. c #F1F1ED", +"=. c #E4E4F5", +"-. c #ECECFF", +";. c #F2F2F3", +":. c #F7F7FF", +">. c #FEFEFD", /* pixels */ -",.,.4.4.4.4.4.4.3.4.3.3.3.4.4.4.4.4.4.4.3.4.4.4.4.4.3.4.4.3.,.,.", -",.:.#.#.#.#.#.#.#.#.O.O.#.#.#.#.#.#.#.#.O.#.#.#.#.#.#.#.#.$.,.,.", -"2...l z c c c c c z P V z x c c v x v l Z v x c c c c x z F <.,.", -"2.@.f d d d d d d d v m d d d d d d d f P d d d d d d d d E <.,.", -"2...f d d d d d d d v m d d d d d d d f P d d d d d d d d E <.,.", -"2...a d d d d d d d v m d d d d d d d f P d d d d d d d d E <.4.", -"2.@.f d d d d d d d v U d d d d d d d f P d d d d d d d d E <.,.", -"3...f d d d d d d d v m d d d d d d d f P d d d d d d d d J ;.4.", -"2...f d d d d d d d v m d d d d d d d f P d d d d d d d d E ;.,.", -"2.@.f d d d d d d d v m d d d d d d d f P d d d d d d d d E <.4.", -"2.X.j g g g g g g d M U d j f f f f f h V f j f j f j j d K <.,.", -"5.] # % % % % % % % * C I P P P P P P V S I P P I I T P P G :.,.", -"9.) X k d d d d d d d f P d d d u y a d d J <.4.", -"9.) . $ . X k d d d d d d d f P d u A -.<._ i d J <.,.", -"9.) ~ ' ^ X k d d d d d d d f P d A w.e.e.e.] p W ;.,.", -"9.) @ O. } & O k d d d d d d d f I u $.e.e.e.e.q.w R <.,.", -"8.) @ O. } & O k d d d d d d d f I y -.e.e.e.e.q.e R ;.,.", -"8.) ~ ' ^ X k d d d d d d d f T s ( e.e.e.e.-.y W <.4.", -"9.) . $ o O k d d d d d d d f P d t ` q.q.=.r d E <.,.", -"9.) O k d d d d d d d f T d d a k b u d d E <.,.", -"8.] & ; ; : : ; ; ; : A W K K K Q K E ! N 6 8 9 0 5 q 8 6 B 1.,.", -"3.&.:.8.5.5.4.5.4.8.%.o.<.<.;.;.;.;.<.7.: = 3.,.", -"4.%.&.,.:.>.:.,.:.2.O.| 5.,.,.2.,.,.,.5.> . . . - 4.,.", -",.%.&.2.,.3.,.,.,.3. .| 3.,.,.,.,.,.,.5.: = 3.,.", -"3.%.*.,.3.1 + 4 8.3. .| 3.:.,.:.,.,.:.5.: = 5.,.", -",.@.&.,.8.; 2 0.,. .| 3.,.,.,.,.,.,.5.: = 5.:.", -"3.@.&.,.3./ 3 ) 3.3.O.| 3.,.,.,.,.,.,.5.> = 5.,.", -"3.@.&.3.>.8.0.5.:.4. .| 3.,.:.,.,.:.,.5.: . = 5.:.", -"2.%.*.3.3.,.,.,.,.5.+.| 5.,.2.4.2.2.,.8.: = 4.,.", -"2.%. .@.$.+.@.+.@.%.{ [ &.$.+.$.$.+.+.*.< o + + + + + + o , 3.,.", -",.>.:.:.*.:.*.*.*.*.:.:.*.*.*.*.*.*.*.*.*.*.*.*.&.*.*.*.&.:.,.,.", -",.,.,.,.,.,.3.,.,.4.,.,.,.4.2.,.2.2.,.2.,.3.,.3.,.2.2.2.2.2.,.:." +"#.#.&.&.&.&.$.*.&.&.&.&.&.&.&.&.&.&.&.$.&.&.&.&.&.*.&.&.&.&.#.#.", +"#.#........... .......X...............X. ......... .......X.#.#.", +"&.{ x z z z z z z l S G l z z z z z z c Z z v z z z z v l A +.$.", +"&.{ a p p p p p p p m n p p p p p p p a G p p p p p p p p P +.$.", +"&.{ a p p p p p p p v F p p p p p p p f H p p p p p p p p P +.$.", +"&.{ a p p p p p p p v n p p p p p p p a H p p p p p p p p P +.$.", +"&.{ i p p p p p p p v b p p p p p p p a H p p p p p p p p P +.$.", +"&.{ a p p p p p p p v b p p p p p p p a G p p p p p p p p P +.$.", +"&.{ a p p p p p p p v b p p p p p p p a G p p p p p p p p P +.&.", +"=.{ u p p p p p p p z b p p p p p p p a H p p p p p p p p P +.$.", +"&.} h s g g s s g p M F p f a a a f a d J a f f f f f f a U +.$.", +";._ # - % - - % % % * Z H G H G H H H J A D G H L L K G D A +.$.", +";./ . j p p p p p p p a G p p p e w u p p P +.$.", +";./ X + X o j p p p p p p p a G p e V .o.~ q p P +.$.", +";./ E [ ^ o j p p p p p p p a H p V :.>.>.>.) y I +.$.", +";./ + O.O X.: o j p p p p p p p a L w ' >.>.>.>.-.9 K +.$.", +";./ O #.O X.: o j p p p p p p p a L w .>.>.>.>.-.9 K @.&.", +";./ E [ ^ o j p p p p p p p a K i ! >.>.>.>.| w T +.$.", +";./ X X $ X o k p p p p p p p f G p q ( -.-.| 0 p P +.$.", +";./ o k p p p p p p p a H p p u j x y p p P +.$.", +";._ & = = = ; = = = ; A P U U U U U P U N 4 5 7 6 6 7 8 4 B %.$.", +"&.X.#.;.&.&.&.*.&.;.X.] =.+.+.+.+.@.+.=.: X = &.#.", +"&.X.o.&.#.#.#.#.#.&.[ ' &.$.$.&.&.$.#.*.: = &.#.", +"&.X.O.&.#.&.#.&.#.&. .' &.$.#.#.#.&.#.&.: X = &.#.", +"&.X.O.#.&., O 2 ;.&. .' &.%.#.#.#.#.%.*.: = &.#.", +"&.X.O.#.;.= < ;.#.{ ' &.%.&.#.#.%.$.;.; X = &.#.", +"&.X.O.#.&.W 1 / &.&.[ ' &.#.#.#.#.#.#.&.: = &.%.", +"&.X.O.&.#.;.>.&.$.&. .' &.#.#.#.#.#.#.&.: = &.$.", +"&.X.+.&.&.#.#.%.&.&.X.' &.#.&.&.&.&.#.;.- . X = &.#.", +"&.X.' X.X.X.X.{ X.X.` ` o.X.X.X.X.X.X.O.> X O O O O O O X : &.#.", +"&.$.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.o.O.O.o.O.o.O.O.O.&.#.", +"$.#.&.#.&.&.#.&.&.&.&.&.&.&.#.&.#.&.#.&.&.#.$.&.&.&.&.&.&.&.#.#." }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 137 2 ", +"48 48 112 2 ", " c #010101", ". c #0C0C0C", -"X c #040416", -"o c #060618", -"O c #141414", -"+ c #1D1C1C", -"@ c #222222", -"# c #282726", -"$ c #323227", -"% c #31302F", -"& c #3A392E", -"* c #3B3B31", -"= c #3B3A38", -"- c #424138", -"; c #6B6B34", -": c #706F3B", -"> c #717135", -", c #73733C", -"< c #79793E", -"1 c #414041", -"2 c #5D5C5A", -"3 c #737256", -"4 c #716F6D", -"5 c #7A7978", -"6 c #9D9D11", -"7 c #A5A50D", -"8 c #B5B506", -"9 c #BABA02", -"0 c #B2B209", -"q c #A2A215", -"w c #9E9E26", -"e c #9B9B28", -"r c #9A9A30", -"t c #C5C500", -"y c #CBCB00", -"u c #D3D300", -"i c #E6E600", -"p c #EEEE00", -"a c #F5F502", -"s c #FEFE01", -"d c #F7F70A", -"f c #FBFB09", -"g c #EAEA12", -"h c #F0EF14", -"j c #F1F112", -"k c #FFFF16", -"l c #FDFD18", -"z c #DFDE2A", -"x c #D1D031", -"c c #E0DF29", -"v c #EDEC26", -"b c #E0E029", -"n c #8F8F43", -"m c #8B8B4E", -"M c #969648", -"N c #878757", -"B c #8B8B57", -"V c #969652", -"C c #9A9A53", -"Z c #9B9B5F", -"A c #B4B34E", -"S c #BFBE4A", -"D c #B6B55E", -"F c #B8B65E", -"G c #898965", -"H c #81807D", -"J c #89887C", -"K c #ACAA66", -"L c #A3A16F", -"P c #A9A768", -"I c #AEAC6A", -"U c #B0AF69", -"Y c #B6B461", -"T c #B8B661", -"R c #BCBB63", -"E c #A4A370", -"W c #ADAB72", -"Q c #A3A179", -"! c #AAA87B", -"~ c #C0BF4B", -"^ c #C3C246", -"/ c #CECD41", -"( c #C6C54A", -") c #CDCC57", -"_ c #838281", -"` c #9D9D86", -"' c gray59", -"] c #989793", -"[ c #9E9D9A", -"{ c #A09E9B", -"} c #A6A58E", -"| c #A5A391", -" . c #A9A792", -".. c #ABA992", -"X. c #A4A4A6", -"o. c #A3A3A8", -"O. c #ABAAA9", -"+. c #B0AEA7", -"@. c #B0AEAA", -"#. c #B3B1AD", -"$. c #A9A9B3", -"%. c #B6B4B1", -"&. c #BCBAB5", -"*. c #BFBDB9", -"=. c #C1BFBB", -"-. c #C2C0BC", -";. c #C8C6BF", -":. c #BFBDCC", -">. c #C0BDCC", -",. c #C6C4C2", -"<. c #CCCAC6", -"1. c #C3C2CC", -"2. c #CAC7CD", -"3. c #CFCDCA", -"4. c #D1CFCA", -"5. c #D3D1CC", -"6. c #C7C7D3", -"7. c #CACADC", -"8. c #D1CFD6", -"9. c #D6D5D0", -"0. c #D9D7D2", -"q. c #DCDAD5", -"w. c #D4D3DA", -"e. c #DDDBD9", -"r. c #E1DFD7", -"t. c #E0DED9", -"y. c #E2E0D7", -"u. c #E3E1DC", -"i. c #D3D3E7", -"p. c #E7E5E0", -"a. c #E8E6E1", -"s. c #EBE9E4", -"d. c #E2E2F3", -"f. c #E7E7F8", -"g. c #E9E9FB", -"h. c #F4F4FF", -"j. c #FEFEFE", +"X c #050518", +"o c #151515", +"O c #1E1E1E", +"+ c #20201F", +"@ c #242424", +"# c gray16", +"$ c #33332A", +"% c #3E3E34", +"& c #3D3D3D", +"* c gray20", +"= c #404036", +"- c #43433F", +"; c #6D6D38", +": c #74743E", +"> c #414142", +", c #767641", +"< c #7C7C43", +"1 c #75755E", +"2 c #616161", +"3 c #767676", +"4 c #9E9E12", +"5 c #A6A60E", +"6 c #B5B506", +"7 c #BBBB02", +"8 c #B3B309", +"9 c #A2A215", +"0 c #9E9E27", +"q c #9B9B28", +"w c #9A9A30", +"e c #C4C400", +"r c #CDCD00", +"t c #D7D700", +"y c #E4E400", +"u c #ECEC00", +"i c #F5F502", +"p c #FEFE01", +"a c #FAFA0A", +"s c #EBEB14", +"d c #F2F214", +"f c #FFFF13", +"g c #FFFF18", +"h c #D3D334", +"j c #D9D939", +"k c #E2E22C", +"l c #EDED2A", +"z c #8A8A4E", +"x c #919144", +"c c #969648", +"v c #8A8A57", +"b c #969652", +"n c #999953", +"m c #9B9B5F", +"M c #BEBE4F", +"N c #B7B755", +"B c #8A8A65", +"V c #AEAE6E", +"C c #B6B663", +"Z c #BBBB65", +"A c #BABA69", +"S c #AEAE71", +"D c #A7A77B", +"F c #ADAD7B", +"G c #B2B272", +"H c #B2B27B", +"J c #C6C64C", +"K c #C9C94F", +"L c #D1D146", +"P c #C2C250", +"I c #CACA50", +"U c #CFCF5F", +"Y c #C0C06B", +"T c #838383", +"R c #8E8E87", +"E c #8E8E8E", +"W c #9E9E85", +"Q c #9E9E9D", +"! c #A6A685", +"~ c #AEAE85", +"^ c #A6A69B", +"/ c #ADAD9A", +"( c #B1B19D", +") c #A6A6A6", +"_ c #A5A5A9", +"` c gray66", +"' c #ACACB5", +"] c #B6B6B6", +"[ c #BDBDBD", +"{ c #BDBDC5", +"} c #C6C6C5", +"| c #C4C4CF", +" . c #CACACA", +".. c #D0D0CF", +"X. c #CECED4", +"o. c #C9C9DD", +"O. c #D3D3D3", +"+. c #D3D3DD", +"@. c #DBDBDB", +"#. c #D3D3E7", +"$. c #DBDBE7", +"%. c #DDDDEA", +"&. c #E5E5E5", +"*. c #E9E9E6", +"=. c #E5E5EA", +"-. c #EBEBEA", +";. c #F0F0ED", +":. c #E2E2F3", +">. c #EAEAFB", +",. c #F3F3F3", +"<. c #F4F4FF", +"1. c #FEFEFE", /* pixels */ -"q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.", -"q.q.q.q.q.q.q.q.q.q.q.q.0.q.q.q.q.q.q.0.q.q.q.q.0.q.q.q.q.0.q.q.q.q.q.0.q.q.q.q.q.q.q.0.q.q.q.q.", -"q.q.q.q.y.y.r.y.y.y.y.y.r.y.y.y.t.t.r.r.y.y.y.y.y.y.y.y.r.r.t.r.y.y.y.r.r.r.y.y.y.y.r.e.q.q.q.q.", -"q.q.q.0.>.:.>.:.:.:.:.:.:.:.>.:.,.,.:.>.:.:.:.>.:.:.:.:.:.1.,.:.>.:.:.:.:.:.:.:.>.>.>.<.e.q.q.q.", -"q.q.t.,.A ^ S S ~ S S ~ S S S ^ P P ^ S S S S S S ~ S S ^ D L ^ S S S S S ~ S ~ S ~ A | q.q.q.q.", -"q.q.t.,.g s s s s s s s s s s s ( / s s s s s s s s s s s b D s s s s s s s s s s s s } q.q.q.q.", -"q.q.t.,.g s f s f s s s s f f s ( / s f s s f s s s s f s c D s f s f s s s s f s s a } q.q.q.q.", -"q.q.e.,.g s s s s s s s s s s s ( / s s s s s s s s s s s b F s s s s s s s s s s s f } q.q.q.q.", -"q.q.e.,.g s s s s s s s s s s s ( / s s s s s s s s s s s b F s s s s s s s s s s s s } q.q.q.q.", -"q.q.t.,.g s s s s s s s s s f s ( / s s s s s s s s s s s b F s s s s s s s s s s s a } e.q.q.q.", -"q.q.t.,.g s s s s s s s s s s s ( / s s s s s s s s s s s b F s s s s s s s s s s s a } w.e.q.q.", -"q.0.t.,.g s s s s s s s s s s s ( / s s s s s s s s s s s b F s s s s s s s s s s s f } e.q.q.q.", -"q.q.t.,.g s s s s s s s s s f s ( / s s s s s s s s s s s b F s f s s s s s s s s s s } e.q.e.q.", -"q.q.t.,.g s s s s s s s s s s s ( / s s s s s s s s s s s b F s s s s s s s s s s s a } w.q.q.q.", -"q.q.t.,.g s s s s s s s s s s s ( / s f s s s s s s s s s b F s s s s s s s s s s s a .e.q.q.q.", -"q.0.t.,.g s s s s s s s s s s s ( / s s s s s s s s s s s b D s s s s s s s s s s s s } q.q.q.q.", -"q.q.r.<.v k k k k k k k k l l f ) ( f h h j j h h h h h d x T f h h j j j j j j j j h } q.q.q.q.", -"q.q.u.+.$ * * * * * * * * * * = - E U I U U U U I U I U U E Q U I I I P I I P I U W P | e.e.q.q.", -"q.0.s.[ X x s s s s s s s s s s s b T s s s s s s s s s s s s } w.q.q.q.", -"q.0.s.{ X x s s s s s s s s s s s b D s f s a 8 w w 0 p s s a } e.q.q.q.", -"q.0.a.[ X x s s s s s s s s s s s b F s f u m 1.f.g.2.B u s a } q.q.q.q.", -"q.0.a.[ . . [ 8.O.O X x s s s s s s s s s s s b F s i B h.j.j.j.j.h.G i f } q.q.q.q.", -"q.0.a.{ _ 8. -.[ X x s s s s s s s s s s s b D s 7 7.j.j.j.j.j.j.i.q s | q.q.q.q.", -"q.0.s.[ ,.' 5 u. X x s s s s s s s s s s s b T s M h.j.j.j.j.j.j.j.V a .e.q.q.q.", -"q.0.a.{ ,.' 5 e. X x s s s s s s s s s s s b T s V j.j.j.j.j.j.j.j.Z a ..q.q.q.q.", -"q.0.a.{ _ w. -.[ X x s s s s s s s s s s s b D s e d.j.j.j.j.j.j.g.r s } e.q.q.q.", -"q.0.a.[ . [ 8.@.O X x s s s s s s s s s s s b D s y [ j.j.j.j.j.j.o.t f } w.q.q.q.", -"q.0.s.[ X x s s s s s s s s s s s b F s s 7 o.h.j.j.j.$.6 s a .e.q.q.q.", -"q.0.s.{ . X x s s s s s s s s s s s b D s s s 9 r ` ` n 8 s s a } q.q.e.q.", -"q.0.a.{ X x s f s s s s s s s s s b R s f f f s a a s f f s f ..q.q.q.q.", -"q.q.u.@.% = = = = = = = = = = = 1 Q W W W W W W W W W W W ! 3 > , , : , < < , : , , ; J e.q.q.q.", -"q.q.t.<.5.u.e.t.e.u.e.u.t.u.e.p.*.%.w.8.8.8.8.8.8.8.8.8.8.2.+ 2 a.q.q.q.", -"q.q.e.;.<.r.q.q.q.0.q.q.q.0.0.u.#.&.u.q.r.r.r.r.q.r.q.q.y.5.+ . 2 s.0.q.q.", -"q.q.e.;.<.e.q.q.q.9.q.q.q.q.q.t.#.&.u.q.q.0.q.q.0.r.r.0.e.5.+ 2 a.q.q.q.", -"q.q.t.,.<.t.q.q.t.s.s.s.q.q.q.u.%.&.u.q.q.q.q.q.q.q.0.0.e.4.+ 2 a.0.q.q.", -"q.q.e.;.<.e.q.t.*.5 H _ 9.q.0.u.%.&.t.q.q.q.q.q.q.q.r.q.q.4.+ 2 a.0.q.q.", -"q.q.t.;.<.e.0.s.] . 3.r.0.u.&.&.t.0.q.q.q.q.q.q.q.0.r.3.+ 2 a.0.q.q.", -"q.q.e.,.<.t.0.s.] . 3.r.0.u.#.&.u.q.q.q.q.q.q.q.q.q.e.5.+ 2 u.q.q.q.", -"q.q.e.;.<.t.q.u.{ O + # 4.q.q.u.%.&.u.q.q.q.q.q.q.q.q.q.r.5.+ 2 u.0.q.q.", -"q.q.r.;.<.t.q.q.q.q.q.q.q.q.q.u.#.&.u.q.q.q.q.q.q.q.q.q.q.4.+ 2 s.q.q.q.", -"q.0.t.;.<.r.0.q.q.q.q.q.q.q.q.t.%.&.u.q.q.q.q.q.q.q.q.q.e.4.+ 2 p.0.q.q.", -"q.q.t.,.<.e.q.q.0.q.q.q.q.q.0.u.%.&.u.0.q.q.q.0.q.q.q.q.e.4.+ 2 a.q.q.q.", -"q.q.t.;.<.u.q.r.e.e.r.e.r.e.e.u.%.&.u.q.e.q.r.r.q.r.e.q.u.5.+ 2 p.0.q.q.", -"q.q.r.<.%.-.*.*.*.=.*.*.*.=.=.-.+.#.-.=.=.*.*.*.*.*.*.*.=.*.= + # @ @ @ @ @ @ @ # # O 4 p.q.q.q.", -"q.q.q.q.0.0.0.0.9.0.0.0.9.0.0.9.q.0.0.0.9.0.0.0.9.0.0.9.0.0.t.t.e.e.r.e.t.e.r.e.t.e.e.e.q.q.q.q.", -"q.q.q.q.e.q.q.q.q.q.q.e.q.q.q.q.q.e.q.q.q.q.q.e.q.q.q.q.q.e.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.", -"q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.", -"q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.e.q.q.q.q.q.q.q.q." +"&.&.&.&.&.&.&.*.&.&.*.&.&.&.&.&.&.&.&.&.&.&.*.&.&.&.&.&.&.&.&.&.&.&.*.&.&.&.&.&.&.&.&.&.&.&.&.&.", +"&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.*.&.&.&.&.&.&.&.&.&.&.&.*.&.&.&.&.=.*.&.&.", +"&.*.=.*.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.*.-.-.-.-.-.-.-.-.*.-.*.-.&.&.&.&.", +"*.*.&.$.X.o.o.o.o.o.o.o.o.o.X.o.X.X.o.o.o.o.o.o.o.o.o.o.o.X.O.o.o.o.o.o.o.o.o.o.X.o.o.O.&.&.&.=.", +"*.&.-. .N J P P J P P P P J J J S V J P J M J P P P J P J C D J P P P P P P P P P P M ^ *.&.*.*.", +"*.*.-.O.s p p p p p p p p p a p I L p p p p p p p p p p p k Z p p p p p p p p p p p p / =.&.&.&.", +"=.&.-.X.s p a p p a p p p a p p I L p a a p p a p a p a p k Z p p p p p p a p p a p i / =.&.&.&.", +"&.&.-.X.s p p p p p p p p p a p I L p p p p p p p p p p p k Z p a p p p p p p p p p a / =.&.&.&.", +"&.&.-.X.s p p p p p p p p p p p I L p p p p p p p p p p p k Z p p p p p p p p p p p a / =.&.*.&.", +"&.&.-.X.s p p p p p p p p p p p I L p p p p p p p p p p p k Z p a p p p p p p p p p p / =.&.=.&.", +"&.&.-.X.s p p p p p p p p p p p I L p p p p p p p p p p p k Z p p p p p p p p p p p i / =.&.&.&.", +"&.&.-.X.s p p p p p p p p p a p I L p p p p p p p p p p p k Z p p p p p p p p p p p i / *.&.&.&.", +"&.&.-.X.s p p p p p p p p p p p I L p p p p p p p p p p p k Z p p p p p p p p p p p p / =.&.&.&.", +"&.&.-.X.s p p p p p p p p p p p I L p p p p p p p p p p p k Z p p p p p p p p p p p i / *.&.*.=.", +"&.&.-.O.s p p p p p p p p p p p K L p p p p p p p p p p p k Z p a p p p p p p p p p i / =.&.=.*.", +"&.&.-.X.s p p p p p p p p p a p K K p p p p p p p p p p p k Z p p p p p p p p p p p a / =.&.&.&.", +"&.&.-.O.l f g g g g g g g g g a U K a d d d d d d d d d a j A a s d d d d d d d d d s / =.=.&.&.", +"&.&.,.] $ = % % % % % = % % % % - D G G G G G G G G G G G F ! G G G G G S G G G G G G ) *.&.&.&.", +"&.&.,.` X h p p p p p p p p p p p k Z p a p p p p p p p p p p / =.&.&.&.", +"&.&.,.` X h p p p p p p p p p p p k Z p p p i 6 0 0 8 u p p i / *.&.-.&.", +"&.&.;._ X h p p p p p p p p p p p k Z p a t z | >.>.X.v r p p / =.&.&.&.", +"&.&.,._ . . ) &.] O X h p p p p p p p p p p p k Z p u v <.1.1.1.1.<.B y a / =.&.&.&.", +"&.&.,._ 3 1.> @.] X h p p p p p p p p p p p k Z p 5 o.1.1.1.1.1.1.#.9 p / =.&.&.&.", +"&.&.,.) .} E ,. X h p p p p p p p p p p p k Z p c <.1.1.1.1.1.1.1.n i / =.&.&.&.", +"&.&.,._ . . E -. X h p p p p p p p p p p p k A p b 1.1.1.1.1.1.1.1.m i ( *.&.&.&.", +"&.&.,.) 3 1.> @.] X h p p p p p p p p p p p k Z p q :.1.1.1.1.1.1.>.q p / =.&.&.&.", +"&.@.,.) . Q &.] + X h p p p p p p p p p p p k Z p r Q 1.1.1.1.1.1._ e a / =.=.&.&.", +"&.&.,.) X h p p p p p p p p p p p k Z p p 5 _ <.1.1.1.' 4 p i / =.&.=.*.", +"&.&.,._ . . X h p a p p p p p p p p p k Z p p p 7 w W W x 6 p p i / =.&.&.*.", +"&.&.,._ X h p p p p p p p p p a p k Y p a a a p i i p a a p a ( =.&.&.&.", +"&.&.,.] * & & & > & & > & & & & > ! H H H H H H H H H H G ~ 1 : , : : , < < , : : , ; R -.&.&.&.", +"&.&.-.O.@.,.-.-.-.-.-.-.-.-.-.,.} { =.$.$.$.$.$.$.$.$.$.%.+.O 2 ,.&.&.&.", +"&.&.*. .O.-.&.&.&.&.&.&.&.&.$.-.[ { -.*.*.*.-.*.*.*.*.*.-.@.+ . 2 ,.&.&.&.", +"&.&.-.O.O.-.&.*.&.&.&.&.&.&.&.-.[ } -.&.&.&.&.*.&.&.&.&.*.@.+ 2 ,.&.&.&.", +"*.&.-.O.O.-.*.&.*.<.,.,.*.&.&.-.[ } -.&.&.&.&.&.&.&.&.&.*.@.O 2 ,.&.&.&.", +"*.*.-. .O.-.&.-.} T R E &.-.&.-.[ } -.&.*.&.&.&.&.&.&.&.-.@.O 2 ,.&.&.*.", +"=.&.-.O.O.-.$.,.Q . O.-.&.-.[ } -.&.*.*.&.&.*.*.&.&.-.@.O 2 ,.&.&.&.", +"&.&.-.O.O.-.&.,.Q . @.-.&.-.[ } -.&.=.&.&.&.=.*.&.&.*.@.O 2 ;.&.&.&.", +"&.&.-. .O.-.&.,.` o O @ @.*.&.-.[ } -.&.&.&.&.&.&.&.&.&.=.@.+ 2 ;.&.&.&.", +"&.&.-.X.@.-.&.&.&.&.=.*.&.&.=.;.{ } -.&.&.&.=.*.&.&.&.&.-.@.+ 2 ,.&.&.&.", +"*.&.-. .O.-.&.&.*.*.*.=.&.&.&.-.[ } -.&.&.&.&.*.&.&.&.&.-.@.O 2 ,.&.&.&.", +"*.*.-.O.O.*.&.&.&.&.=.*.&.&.&.-.[ } -.&.&.&.&.&.&.&.&.=.*.@.O 2 ,.&.&.&.", +"=.&.-...@.-.-.-.*.*.*.-.*.-.*.,.[ } ,.&.&.-.-.-.*.=.-.*.-.@.O 2 ,.&.&.&.", +"&.&.-.O.{ .} .| } } } } .} | ] ] .} } } } } } .} } .} & O @ @ @ @ @ @ @ @ # # o 3 ;.&.&.&.", +"&.&.&.*.&.$.&.@.@.&.$.&.&.$.&.@.&.&.$.&.@.&.&.$.&.&.@.&.$.&.*.*.-.*.=.-.*.*.-.*.*.*.*.*.*.&.&.&.", +"&.&.&.=.*.*.&.&.*.*.&.&.&.&.*.*.*.&.&.&.*.&.&.*.&.&.&.&.=.*.&.&.*.*.=.*.&.&.*.=.=.=.*.&.=.&.&.&.", +"*.&.&.&.&.*.&.&.&.&.=.&.*.&.&.&.&.&.*.&.&.&.&.&.&.=.&.&.&.*.&.&.&.=.&.&.&.&.&.&.=.&.*.=.&.&.*.*.", +"*.&.&.&.&.&.*.&.&.&.*.*.&.&.&.&.=.*.*.&.*.&.&.&.&.*.*.&.&.&.&.=.&.*.&.&.=.*.*.&.&.&.&.&.&.&.&.=." }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/lightup.sav sgt-puzzles-20160429.b31155b/icons/lightup.sav --- sgt-puzzles-20140928.r10274/icons/lightup.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/lightup.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,24 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :8:Light Up +PARAMS :10:7x7b20s4d1 +CPARAMS :10:7x7b25s4d1 +SEED :15:538922615851330 +DESC :25:b3gB0c0dBaBaBa1aBd1c01g0b +NSTATES :2:16 +STATEPOS:2:16 +MOVE :4:L1,0 +MOVE :4:L2,1 +MOVE :4:L3,0 +MOVE :4:L0,3 +MOVE :4:L6,1 +MOVE :4:L3,4 +MOVE :4:I6,5 +MOVE :4:I1,5 +MOVE :4:I2,6 +MOVE :4:I3,6 +MOVE :4:I4,5 +MOVE :4:I5,6 +MOVE :4:L5,5 +MOVE :4:I6,4 +MOVE :4:I4,2 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/lightup-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/lightup-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/loopy-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/loopy-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/loopy-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/loopy-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/loopy-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/loopy-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/loopy-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/loopy-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/loopy-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/loopy-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/loopy-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/loopy-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/loopy-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/loopy-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/loopy-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/loopy-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/loopy-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/loopy-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/loopy-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/loopy-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/loopy-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/loopy-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/loopy-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/loopy-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/loopy.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/loopy.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/loopy-icon.c sgt-puzzles-20160429.b31155b/icons/loopy-icon.c --- sgt-puzzles-20140928.r10274/icons/loopy-icon.c 2014-09-29 00:33:42.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/loopy-icon.c 2016-04-29 00:31:43.000000000 +0000 @@ -1,687 +1,886 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 110 2 ", -" c #D9D7D2", -". c #CDCBC6", -"X c #DCDAD5", -"o c #DDDBD6", -"O c #CFCEC9", -"+ c #D4D2CE", -"@ c #DAD8D3", -"# c #DBD9D4", -"$ c #CECCC7", -"% c #CBC9C4", -"& c #CBCAC5", -"* c #CCCAC5", -"= c #CAC8C3", -"- c #959390", -"; c #DEDCD7", -": c #E4E2DD", -"> c #A09F9B", -", c #B6B5B1", -"< c #E0DED9", -"1 c #D1CFCA", -"2 c #5F5E5C", -"3 c #868582", -"4 c #81807D", -"5 c #CFCDC8", -"6 c #B6B4B0", -"7 c #D4D2CD", -"8 c #DFDDD8", -"9 c #C7C5C1", -"0 c #C1BFBB", -"q c #D6D4CF", -"w c #858481", -"e c #E9E7E2", -"r c #E3E1DB", -"t c #E5E2DD", -"y c #E1DFDA", -"u c #706F6D", -"i c #B7B5B1", -"p c #A9A8A4", -"a c #83827F", -"s c #7F7E7B", -"d c #D7D5D0", -"f c #E3E1DC", -"g c #AEADA9", -"h c #E2E0DB", -"j c #EFEDE7", -"k c #C0BEBA", -"l c #E6E4DE", -"z c #E0DDD8", -"x c #AEACA9", -"c c #898784", -"v c #9F9E9A", -"b c #9F9D9A", -"n c #8A8986", -"m c #696866", -"M c #D8D6D1", -"N c #BBB9B5", -"B c #CCCAC6", -"V c #D5D3CF", -"C c #E7E5E0", -"Z c #8F8D8A", -"A c #8E8D8A", -"S c #BAB8B4", -"D c #B1AFAB", -"F c #B0AEAA", -"G c #E6E4DF", -"H c #A6A5A1", -"J c #BFBDB9", -"K c #E9E6E1", -"L c #989793", -"P c #BCBAB6", -"I c #EFEDE8", -"U c #94938F", -"Y c #CBC9C5", -"T c #B4B3AF", -"R c #EBE9E4", -"E c #B2B0AC", -"W c #787775", -"Q c #D0CEC9", -"! c #B4B2AE", -"~ c #BEBDB8", -"^ c #D2D0CB", -"/ c #D3D1CC", -"( c #CECDC8", -") c #8F8E8A", -"_ c #E5E3DE", -"` c #D2D0CC", -"' c #C3C1BD", -"] c #848380", -"[ c #898885", -"{ c #666563", -"} c #D9D7D3", -"| c #82817E", -" . c #787774", -".. c #E7E4DF", -"X. c #A7A6A2", -"o. c #8B8A87", -"O. c #EBE8E3", -"+. c #73726F", -"@. c #B2B1AD", -"#. c #A2A09D", -"$. c #A7A5A2", -"%. c #AFADA9", -"&. c #A4A29E", -"*. c #C4C2BE", -"=. c #D0CFCA", -"-. c #C6C4C0", -";. c #BEBCB8", -":. c #BFBDB8", -">. c #C0BEB9", -",. c gray100", +"16 16 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , : < 1 2 3 3 3 4 5 ", -"X ; X 6 7 8 < 9 0 q w e r t y # ", -"@ # * u i o ; p a s 8 # d @ ", -"o f @ g 1 h j k 0 l 3 y # X 8 X ", -"O > ; z f x c v b n m < M ; N B ", -"7 i o V C Z A S D F i X q G H J ", -"o < X @ K L P I : l < ; U Y T J ", -"# @ 8 X R L E : @ @ ; W Q ! ~ ", -"# ^ / ( ; ) E _ @ # ` 1 ' @ H k ", -"$ 2 ] [ [ { i < } ^ 2 | w ] .% ", -"Y [ .., M h X X 8 / ] l 8 y 8 # ", -"Y w f { X.y q @ X 1 | z @ # M @ ", -"Y o.O.F q ..f _ C X w y # X ; X ", -". +.E @.E #.$.x %.&. .8 M ; *.=.", -"# -.;.;.J ;.:.>.>.~ % # @ X =.d " +"hXwXlXhXzXtXaXlXhXkXeX0XqXqX9XhX", +"wXF.xXcXNXE.#XNXnXuX$.x.x.x.h.rX", +"lXxXkX.XiXcXvX6X&XsXz.AXmXNXbXkX", +"jXlX7XW _.vXxX).4.gXf.cXhXkXfXjX", +"zXmXjX).eXmXJX1X&XNXx.bXkXlXcXlX", +"tXE.xXbXMX}.b.R.E.m.<.vXfXxX*XwX", +"aX#XzXsXCXV.V.&X X X#XlXdXVX(.:X", +"zXvXlXjXZXK.=XJXMXBXvXvXb.>X#X:X", +"kXjXcXlXDXK.XXMXhXjXhXbX5.3X#X:X", +"kXuXiXrXcXV.XXBXjXkXiXuX3XgX(.>X", +"eX#.l.b.b.:.#XvXhXuX#.j.z.l.t.0X", +"0Xb.CX*XhXnXlXlXcXiXl.BXcXbXcXkX", +"qXz.VX@.`.bXdXjXlXyXj.vXjXkXgXjX", +"0XM.SX/.aXCXMXNXCXlXz.bXkXlXxXlX", +"wX0.XX+XXXQ.(.}.|.~.t.cXgXxX3XyX", +"kX5X:X;X>X:X:X>X>X:X0XkXjXlXyXfX" }; /* XPM */ static const char *const xpm_icon_1[] = { /* columns rows colors chars-per-pixel */ -"32 32 217 2 ", -" c #DCDAD5", -". c #DEDCD7", -"X c #DBD9D4", -"o c #DDDBD6", -"O c #DAD8D3", -"+ c #D7D5D0", -"@ c #D5D3CE", -"# c #DFDDD8", -"$ c #E8E6E0", -"% c #E6E4DF", -"& c #E8E5E0", -"* c gray8", -"= c #8E8D8A", -"- c #E4E2DD", -"; c #D3D1CD", -": c #D6D4CF", -"> c #D8D6D1", -", c #1C1C1B", -"< c #817F7D", -"1 c #E5E3DE", -"2 c #D3D1CC", -"3 c #383736", -"4 c #262625", -"5 c #403F3E", -"6 c #3B3A39", -"7 c #3B3B39", -"8 c #3C3B3A", -"9 c #252524", -"0 c #C8C6C2", -"q c #E1DFDA", -"w c #C1BFBB", -"e c #E0DED9", -"r c #D9D7D2", -"t c #92908D", -"y c #BBB9B5", -"u c #D9D7D3", -"i c #D8D7D2", -"p c #E9E6E1", -"a c #434240", -"s c #757472", -"d c #BDBBB7", -"f c #AEADA9", -"g c #B0AFAB", -"h c #B0AEAA", -"j c #B2B1AD", -"k c #999894", -"l c #D1CFCA", -"z c #EAE8E3", -"x c #E1DED9", -"c c #E7E5E0", -"v c #E9E7E1", -"b c #EFEDE7", -"n c #4F4E4C", -"m c #9E9D99", -"M c #F6F4EE", -"N c #E4E1DC", -"B c #E3E1DC", -"V c #92918D", -"C c #656562", -"Z c #CFCDC8", -"A c #D4D2CD", -"S c #797875", -"D c #72716E", -"F c #D0CEC9", -"G c #EDEBE5", -"H c #4C4B49", -"J c #959490", -"K c #E9E7E2", -"L c #BFBEB9", -"P c #6D6C6A", -"I c #999794", -"U c #7D7C79", -"Y c #EBE8E3", -"T c #D6D4D0", -"R c #D0CECA", -"E c #686765", -"W c #E7E5DF", -"Q c #EBE9E4", -"! c #4C4B4A", -"~ c #969592", -"^ c #B9B8B3", -"/ c #777673", -"( c #B3B2AD", -") c #767572", -"_ c #9D9B98", -"` c #61605E", -"' c #D7D6D1", -"] c #EDEBE6", -"[ c #7F7E7B", -"{ c #555452", -"} c #C3C1BD", -"| c #ECEAE5", -" . c #E3E1DB", -".. c #4B4A49", -"X. c #969591", -"o. c #EBE9E3", -"O. c #DDDBD5", -"+. c #E4E2DC", -"@. c #EAE8E2", -"#. c #FDFAF5", -"$. c #535351", -"%. c #9A9895", -"&. c #ECEAE4", -"*. c #D8D5D1", -"=. c #1B1B1A", -"-. c #373635", -";. c #333231", -":. c #474644", -">. c #434241", -",. c #424240", -"<. c #4A4A48", -"1. c gray4", -"2. c #787774", -"3. c #DAD8D4", -"4. c #545352", -"5. c #C4C2BD", -"6. c #E3E0DB", -"7. c #807F7C", -"8. c #767573", -"9. c #AEACA8", -"0. c #A2A09D", -"q. c #A4A29E", -"w. c #A3A29E", -"e. c #A8A6A2", -"r. c #83827F", -"t. c #B2B0AC", -"y. c #E5E2DD", -"u. c #5F5E5C", -"i. c #BEBCB7", -"p. c #72716F", -"a. c #BBBAB6", -"s. c #848380", -"d. c #757471", -"f. c #6E6D6A", -"g. c #BCBAB6", -"h. c #434341", -"j. c #C7C5C1", -"k. c #6E6D6B", -"l. c #B3B1AD", -"z. c #40403E", -"x. c #494847", -"c. c #424140", -"v. c #D2D0CB", -"b. c #E6E3DE", -"n. c #6D6C69", -"m. c #EFECE7", -"M. c #EEEBE6", -"N. c #4B4B49", -"B. c #EFEDE8", -"V. c #EEECE6", -"C. c #FCFAF4", -"Z. c #777674", -"A. c #E5E3DD", -"S. c #525250", -"D. c #0B0B0B", -"F. c #878683", -"G. c #474645", -"H. c #383837", -"J. c #504F4E", -"K. c #4E4D4C", -"L. c #2B2B2A", -"P. c #C7C5C0", -"I. c #E2E0DB", -"U. c #2C2C2B", -"Y. c #767472", -"T. c #94928F", -"R. c #93928E", -"E. c #959491", -"W. c #737270", -"Q. c #E6E4DE", -"!. c #3E3D3C", -"~. c #63625F", -"^. c #A1A09C", -"/. c #959390", -"(. c #989793", -"). c #83817F", -"_. c #403F3D", -"`. c #F5F3EE", -"'. c #F7F5F0", -"]. c #F8F6F0", -"[. c #F1EFE9", -"{. c #FBF9F3", -"}. c #E8E6E1", -"|. c #8A8985", -" X c #BBBAB5", -".X c #D4D2CE", -"XX c #D7D5D1", -"oX c #2D2D2C", -"OX c #6F6E6B", -"+X c #7C7B78", -"@X c #AFAEAA", -"#X c #CDCBC7", -"$X c #62615F", -"%X c #A6A5A1", -"&X c #AEACA9", -"*X c #CECCC8", -"=X c #E1DFD9", -"-X c #3D3D3B", -";X c #F4F2EC", -":X c #ECE9E4", -">X c #FCF9F4", -",X c #51504F", -" c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , < 1 2 : : : : O 3 4 5 6 7 7 7 7 8 9 0 q ", -" = w e O r > O X o t y q u i > O > p a s d f g g g h j k l # ", -" o - e % z # X o - x X . c v # > b n m M N % % % % c N X ", -" o ; O X B V C Z # A r . r S D F X G H J K > O O O O X @ r o ", -" o : O B L P I U Y O T O . A R E k W Q ! ~ Q u o + r o ", -" o : O - ^ / ( ) Q O T O X - _ ` ' O ] ! ~ Q u o + r o ", -" o : X X q [ { } q : O . : 5 { w . | ! ~ Q u o + r o ", -" + X o .q q X + r r r x > + : Y ..X.o.r O.' O o ", -"X . > o o o X o # @ +.| z @.o.o.c #.$.%.&.O o o o # *.> o ", -". + =.t - A T T : + @ -.;.:.>.>.>.>.,.<.1.2.% ; T T T : 3.4.5.6.", -"o X 7.y e r O O O r B -.8.9.0.q.q.q.w.e.r.t.q r > + O > y.u.i.- ", -" o 1 q o r | :.9.M % v v v p K % q o v Y # r Y p.a.y.", -" o 2 O r z >.0.% > O O O O X A > o s.d.F p f.g.y.", -" o : X r o.h.q.v O o + O . @ j.P = p % k.g.y.", -" o : X r o.h.q.v O o + O X B l.` F v k.g.y.", -" o : X r o.>.q.v O o + r o z.x.d # $ k.g.y.", -" : > r r r r r : c c.w.p O T ' r > X v.A + b.n.g.- ", -"X . O K m.] M.M.M.Y #.N.e.K X o o o # O % B.] V.B.m.z C.Z.y A.", -". @ 3 5 n H ! ! ! N.S.D.F.1 A + + + T O G.H.J.H H H ! H K.L.P.I.", -" . U.Y.m J T.R.E.X.%.W.t.q > O O O > Q.!.~.^./.~ ~ ~ X.(.).F # ", -"O $ _.d `.o.'.].[.@.&.c q o o o o r B.J.0.{.}.Q Q Q o.| % O ", -"O % 6 9.1 l |.7. X. r 2 r o r ] H /.}.+ u u u r O .Xr o ", -"O % 7 h W XXr.oXF.z O T O r M.! ~ Q u o + r o ", -"O % 7 g 1 v.OX+XQ O T O r M.! ~ Q u o + r o ", -"O % 7 @XK #XD $X%X1 X T O r M.! ~ Q u o + r o ", -"O % 7 &XB r *XZ =X> O : > r r r r r : z H X.o.r o + u o ", -"O & -Xy ;Xc &.:X$ K o. y.z K K K K Q.>X,Xk &.O o o o o . X r o ", -"o r c #C5C3BF", -", c #9D9B98", -"< c #C1BFBB", -"1 c #DFDDD8", -"2 c #DAD8D4", -"3 c #D7D5D0", -"4 c #AAA8A4", -"5 c #D8D6D1", -"6 c black", -"7 c #4F4E4D", -"8 c #D1CFCA", -"9 c #D4D2CD", -"0 c #9C9B97", -"q c #4C4B49", -"w c #E0DED9", -"e c #060606", -"r c #0B0A0A", -"t c #0A0909", -"y c #0A0A09", -"u c #0B0B0B", -"i c #020202", -"p c #171716", -"a c #D7D6D1", -"s c #484846", -"d c #979592", -"f c #E3E1DC", -"g c #C7C5C1", -"h c #494947", -"j c #949390", -"k c #C7C6C1", -"l c #070707", -"z c #5F5E5C", -"x c #A1A09C", -"c c #959390", -"v c #989793", -"b c #92908D", -"n c #636260", -"m c #D5D4CF", -"M c #DDDBD5", -"N c gray6", -"B c #FBF9F3", -"V c #E7E5E0", -"C c #EBE8E3", -"Z c #EAE8E3", -"A c #ECEAE5", -"S c #D0CECA", -"D c #F0EEE8", -"F c #EDEAE5", -"G c gray5", -"H c #8D8B88", -"J c #D6D4CF", -"K c #D1CFCB", -"L c #8F8D8A", -"P c #6E6E6B", -"I c #CECCC7", -"U c #E1DFD9", -"Y c #B9B7B3", -"T c #6D6C6A", -"R c #807E7C", -"E c #DFDCD7", -"W c #0E0E0D", -"Q c #ECEAE4", -"! c #D9D7D3", -"~ c #8C8A87", -"^ c #3D3D3C", -"/ c #605F5D", -"( c #4C4C4A", -") c #E6E4DE", -"_ c #83817F", -"` c #71706E", -"' c #474644", -"] c #646361", -"[ c #EDEBE5", -"{ c #4B4B49", -"} c #A8A6A2", -"| c #F7F5EF", -" . c #383836", -".. c #FFFFFE", -"X. c #7F7E7B", -"o. c #555553", -"O. c #EEECE6", -"+. c #4C4B4A", -"@. c #A6A5A1", -"#. c #F6F4EE", -"$. c #373736", -"%. c #C6C4BF", -"&. c #E2E0DA", -"*. c #868481", -"=. c #434241", -"-. c #E8E6E1", -";. c #8F8E8B", -":. c #3A3A38", -">. c #585855", -",. c #504F4D", -"<. c #EAE8E2", -"1. c #757471", -"2. c #A4A39F", -"3. c #959490", -"4. c #767572", -"5. c #9A9995", -"6. c #7A7976", -"7. c #6C6B68", -"8. c #E4E2DD", -"9. c #EAE7E2", -"0. c #EFEDE8", -"q. c #E8E6E0", -"w. c #0E0D0D", -"e. c #8E8D8A", -"r. c #D2D0CB", -"t. c #DFDDD9", -"y. c #E0DDD8", -"u. c #0E0E0E", -"i. c #ECE9E4", -"p. c #DDDBD7", -"a. c #C7C5C0", -"s. c #C4C2BD", -"d. c #0F0F0E", -"f. c #8D8C89", -"g. c #A5A4A0", -"h. c #9F9E9A", -"j. c #080807", -"k. c #0D0C0C", -"l. c #0C0C0B", -"z. c #0C0B0B", -"x. c #0C0C0C", -"c. c #0D0D0C", -"v. c #474645", -"b. c #9A9996", -"n. c #111110", -"m. c #444442", -"M. c #C4C2BE", -"N. c gray2", -"B. c #918F8C", -"V. c #93918E", -"C. c #92918E", -"Z. c #93928F", -"A. c #464644", -"S. c #8E8D89", -"D. c #C1BFBA", -"F. c #292928", -"G. c #EBE9E4", -"H. c #EBE9E3", -"J. c #393837", -"K. c #CFCEC9", -"L. c #E3E1DB", -"P. c #F0EDE8", -"I. c #D6D4D0", -"U. c #353534", -"Y. c #BCBAB6", -"T. c #82817E", -"R. c #363534", -"E. c #D0CEC9", -"W. c #E6E4DF", -"Q. c #84827F", -"!. c #6D6C69", -"~. c #464544", -"^. c #858481", -"/. c #51514F", -"(. c #EDEBE6", -"). c #D8D6D2", -"_. c #403F3E", -"`. c #D5D3CE", -"'. c #A6A4A0", -"]. c #999894", -"[. c #757472", -"{. c #696866", -"}. c #91908C", -"|. c #E8E5E0", -" X c #EEECE7", -".X c #F0EEE9", -"XX c #363635", -"oX c #9E9C99", -"OX c #E1DED9", -"+X c #373635", -"@X c #D0CFCA", -"#X c #9D9C98", -"$X c #090909", -"%X c #4B4A49", -"&X c #E1DEDA", -"*X c gray3", -"=X c #181717", -"-X c gray1", -";X c #424240", -":X c #595957", -">X c #999794", -",X c #908F8B", -" c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" # + + + + + + + & X , < 1 O 2 2 2 2 2 2 O X 3 4 5 + ", -" . @ : 6 7 # 8 9 9 9 9 9 9 8 1 0 6 q w 8 9 9 9 9 9 9 8 1 , 6 e r t y y y y y y y u i p a & X ", -" X # ; s d f . O O O O O O . 1 g h j f . O O O O O O . 1 k l z x c d d d d d d d v b n m & ", -" X # % f + O . + + X # % f M + X . . M f N v B V C C C C C C C Z A w O ", -" S . + X Z D 1 X S 5 + X f D F + + & G H $ J . . . . . . . . O K O + ", -" + 9 O # L P I U X + 9 O X # Y T R 3 + X + E W L Q . + 9 O + ", -" + 9 O ! $ ~ ^ / ( # X X + 9 O O ) _ ` ' ] Q 5 + E W L Q . + 9 O + ", -" + 9 O . [ { } | .> % X + 9 O X w ..X.o.O.5 + E W L Q . + 9 O + ", -" + 9 O . [ +.@.#.$.%.&.X + 9 O O @ *.=.. & X + E W L Q . + 9 O + ", -" + 9 O O -.;.:.>.,.% X o + 9 O . <.1.6 n 2.&.O + E W L Q . + 9 O + ", -" + 9 O X % 3.4.8 w X + 9 O O f 5.6.7.3.8.O + E W L Q . + 9 O + ", -" + 8 . + X 9.0.& X + 8 . O q.O.D -.O X & w.e.Q . + r.O + ", -" & t.1 X . 5 X X * 1 y.+ + + X . . X + + * w u.;.i.. X & p.2 ", -" + X 0 a.# + + + + + + + * 5.s.# + + + + + + & d.f.F O + + + + + + + & X g.3 + ", -" . $ h.6 ,.# 8 9 9 9 9 9 9 8 1 5.6 j.k.u l.l.l.l.l.l.z.x.c.6 v.w 8 9 9 9 9 9 9 K w b.n.. & X ", -" X # > m.j f 5 O O O O O O . y.M.N.z , B.V.V.V.V.V.V.C.Z.C.A.S.f 5 O O O O O O . w D.F.9 1 X ", -" X # % f + + # G , B -.G.G.G.G.G.G.G.H.A # f + + X . . + + X J.K.1 X ", -" S . + X + u B.-.J . . . . . . . . O 8 5 + X L.P.A + & I.U.S 1 X ", -" + 9 O + + l.V.G.. + 9 O M X U Y.` T.a + X + 3 R.E.1 X ", -" + 9 O + + l.V.G.. + 9 O M O W.Q.!.~.n G.. + 3 R.E.1 X ", -" + 9 O + + l.V.G.. + 9 O M X 1 ..^./.(.).+ 3 R.E.1 X ", -" + 9 O + + l.V.G.. + 9 O M O <.~ _.`.1 X + 3 R.E.1 X ", -" + 9 O + + l.V.G.. + 9 O M . <.6.6 n '.# O + 3 R.E.1 X ", -" + 9 O + + l.V.G.. + 9 O M O 8.].[.{.}.8.O + 3 R.E.1 X ", -" + 8 . X + z.C.G.. + K . O |. X.X@ O + 3 R.E.1 X ", -" & 1 1 + + + + + + + * & x.Z.H.. X + 1 1 + + O . . O + & 5 XXE.1 X ", -" X , k f & E E E E E E & w c.C.A O + + + + + + + + + oX> f & E E E E E E & OX3 +X@X1 X ", -" . $ #X6 $Xd.w.W W W W W W W u.d.6 %X&X8 9 9 9 9 9 9 K 1 oX6 *Xd.w.W W W W W W W N e =X3 & X ", -" X % < -Xz v H L L L L L L e.;.f.;XS.f 5 O O O O O O . 1 > e :X>XH L L L L L L e.,XX2X-.Q Q Q Q Q Q Q G.(.1 O M ", -" X & O $Xc V J 5 w Q A # 5 . . O 8 5 + + & G H -.J . . . . . . . . O K O + ", -" X * 2 y d C 5 OX3X[.4X5Xw X + 9 O + E W L Q . + 9 O + ", -" X * 2 y d C 3 ) 6X7X8X9XS 1 X + 9 O + E W L Q . + 9 O + ", -" X * 2 y d C . X 0X7XqXwXw o X + 9 O + E W L Q . + 9 O + ", -" X * 2 y d C . X L.O eXrXtXU X + 9 O + E W L Q . + 9 O + ", -" X * 2 y d C 3 yXuXiXpX$.J & X + 9 O + E W L Q . + 9 O + ", -" X * 2 y d C 5 # 5XaXsX> # X + 9 O + E W L Q . + 9 O + ", -" X & O y d Z . X dXD fXw X X + K . X & w.e.Q . + r.O + ", -" o + X u ].A X & O O & * + 1 w w + & + + + + + + + & OXgX,XG.. X & & 2 ", -" X & 3 *XhXyXjX3 3 3 3 3 3 3 5 J 5.D.X I.3 3 3 3 3 3 3 5 3 u kX[ O + + + + + + + & O lX3 + ", -" O = } d.zX .R.R.R.R.R.R.R.R.XXxXcXvXbXU.R.R.R.R.R.R.R.XX+Xu.1X1 K 9 9 9 9 9 9 r.& g.nX5 & X ", -" + 5 I.mXE.E.E.E.E.E.E.E.E.E.S . MXK.S E.E.E.E.E.E.E.E.@X3 `.O O O O O O O O O 2 3 5 NX ", -" + & BX1 1 1 1 1 1 1 1 1 1 1 & 1 1 1 1 1 1 1 1 1 1 1 1 & & M + + + + + + + + + & ", -" X X X X X X X X X X X X X X X X X X X X X X X X X X X X ", -" " +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlX", +"lXlXlXlXhXkXlXlXlXlXlXlXlXlXlXlXlXhXkXlXlXlXlXlXlXlXlXlXlXlXhXjXlXkXkXkXkXkXkXkXkXkXkXhXlXlXlXlX", +"lXlXlXzXAXbXkXlXlXlXlXlXlXlXlXlXzXAXbXkXlXlXlXlXlXlXlXlXlXlXZXmXzXxXxXxXxXxXxXxXxXzXxXVXzXlXlXlX", +"lXlXzXhXT.5XbXlXzXzXzXzXzXzXzXxXjXR.3XbXlXzXzXzXzXzXzXzXxXkXY. K.UXCXSXSXSXSXSXSXSXSXFXvXjXzXlXlX", +"lXlXlXlXyXgXzXlXlXkXAXKXvXkXlXlXlXyXgXzXlXkXmXJXHXvXkXlXzXxX; N.ZXdXhXhXhXhXhXhXhXhXjXuXjXzXlXlX", +"lXlXlXzXpXjXlXlXlXbXZ.5.8XbXkXlXzXpXjXlXkXbX&X6.r.8XbXjXzXcX; V.FXhXlXlXlXlXlXlXlXlXzXpXjXzXlXlX", +"lXlXlXzXpXjXlXhXSXa.y ! k lXzXkXzXpXjXlXjXVXc.:.N c cXlXlXcX; V.FXhXlXlXlXlXlXlXlXlXzXpXjXzXlXlX", +"lXlXlXzXpXjXlXjXSXn 2.lX# +XNXjXzXpXjXlXlXkXxXUX1.h nXkXlXcX; V.FXhXlXlXlXlXlXlXlXlXzXpXjXzXlXlX", +"lXlXlXzXpXjXlXjXSXm 1.kX# @XNXjXzXpXjXlXlXjXZXg.v uXMXjXzXcX; V.FXhXlXlXlXlXlXlXlXlXzXpXjXzXlXlX", +"lXlXlXzXpXjXlXhXSXh.r U c zXlXkXzXpXjXlXhXAXh. ^ p.aXzXlXcX; V.FXhXlXlXlXlXlXlXlXlXzXpXjXzXlXlX", +"lXlXlXzXpXjXlXlXlXnXJ.e.wXbXkXlXzXpXjXlXjXmX/.i.q.i.gXzXlXcX; V.FXhXlXlXlXlXlXlXlXlXzXpXjXzXlXlX", +"lXlXlXzXyXhXzXlXlXkXAXJXcXkXlXlXzXyXhXlXlXjXBXGXHXGXlXkXlXxX; V.FXhXlXlXlXlXlXlXlXlXzXuXjXzXlXlX", +"lXlXlXxXvXcXkXlXlXlXhXgXkXlXlXkXxXvXvXzXzXzXkXhXhXjXzXzXxXvX: C.DXgXlXlXlXlXlXlXlXkXxXxXjXlXlXlX", +"lXlXzXjXU.5XbXlXzXzXzXzXzXzXzXxXlXP.2XbXlXzXzXzXzXzXzXlXxXlX: B.FXjXzXzXzXzXzXzXzXxXkX^.dXxXlXlX", +"lXhXZXR. ) bXyXpXpXpXpXpXpXyXvXP. $ - = = = = = = = = - - R vXyXpXpXpXpXpXpXuXvXP., hXxXkXlX", +"lXkXbX4XU F.MXgXjXjXjXjXjXjXhXvX3X+ #.Y.Z.S.S.S.S.S.S.S.D.S.R B.MXgXjXjXjXjXjXjXhXvX,Xh pXcXkXlX", +"lXlXkXbXnXMXlXzXlXlXlXlXlXlXlXzXbX; Y.UXCXDXDXDXDXDXDXDXDXFXnXMXlXzXzXkXhXhXkXzXlXzXkXZ tXcXkXlX", +"lXlXlXlXyXgXzXlXlXlXlXlXlXlXkXzXlX= Z.CXdXhXhXhXhXhXhXhXhXjXyXgXzXlXkXnXJXGXvXkXlXxXdXB yXcXkXlX", +"lXlXlXzXpXjXlXlXlXlXlXlXlXlXlXzXzX= S.DXhXlXlXlXlXlXlXlXlXzXpXjXzXkXbX-Xq.u.9XbXjXxXfXB tXcXkXlX", +"lXlXlXzXpXjXlXlXlXlXlXlXlXlXlXzXzX= S.DXhXlXlXlXlXlXlXlXlXzXpXjXzXjXVXv.&.M x xXlXzXfXB tXcXkXlX", +"lXlXlXzXpXjXlXlXlXlXlXlXlXlXlXzXzX= S.DXhXlXlXlXlXlXlXlXlXzXpXjXzXlXkXzXUX8.s vXlXzXfXB tXcXkXlX", +"lXlXlXzXpXjXlXlXlXlXlXlXlXlXlXzXzX= S.DXhXlXlXlXlXlXlXlXlXzXpXjXzXlXjXZXc.z wXNXjXxXfXB tXcXkXlX", +"lXlXlXzXpXjXlXlXlXlXlXlXlXlXlXzXzX= S.DXhXlXlXlXlXlXlXlXlXzXpXjXzXhXZXx. ^ s.pXxXzXfXB tXcXkXlX", +"lXlXlXzXpXjXlXlXlXlXlXlXlXlXlXzXzX= S.DXhXlXlXlXlXlXlXlXlXzXpXjXzXjXMX^.r.8.e.dXzXzXfXB tXcXkXlX", +"lXlXlXzXyXhXlXlXlXlXlXlXlXlXkXzXlX= S.DXhXlXlXlXlXlXlXlXlXzXuXhXlXlXjXBXHXJXHXzXkXzXdXB tXcXkXlX", +"lXlXlXxXcXcXlXzXzXzXzXzXzXzXlXxXxX- D.DXhXlXlXlXlXlXlXlXkXzXcXcXlXzXzXkXgXhXhXlXlXxXgXV tXcXkXlX", +"lXlXlXkXU.6XmXxXcXcXcXcXcXcXxXvXlX- S.FXjXzXzXzXzXzXzXzXzXzXT.3XmXxXcXcXcXcXcXcXxXbXfXV yXcXkXlX", +"lXhXZXY. & : ; ; ; ; ; ; ; ; : : ! bXyXpXpXpXpXpXpXuXcXT. % : ; ; ; ; ; ; ; ; > # 7 fXxXkXlX", +"lXjXnX L.UXZXFXFXFXFXFXFXFXDXGXcXjXzXlXlX", +"lXkXxXhX& F.CXdXgXcXFXSXzXgXhXgXjXyXgXzXlXlXlXlXlXlXlXkXzXxX; N.ZXsXhXhXhXhXhXhXhXgXjXuXjXzXlXlX", +"lXkXxXjX& J.SXgXbX;X7.i.6XvXkXlXzXpXjXlXlXlXlXlXlXlXlXlXzXcX; V.FXhXlXlXlXlXlXlXlXlXzXpXjXzXlXlX", +"lXkXxXjX& J.SXfXNXW.u.M x bXlXkXzXpXjXlXlXlXlXlXlXlXlXlXzXcX; V.FXhXlXlXlXlXlXlXlXlXzXpXjXzXlXlX", +"lXkXxXjX& J.SXhXkXnX~.c &.CXjXlXzXpXjXlXlXlXlXlXlXlXlXlXzXcX; V.FXhXlXlXlXlXlXlXlXlXzXpXjXzXlXlX", +"lXkXxXjX& J.SXhXjXBXW.H A zXlXkXzXpXjXlXlXlXlXlXlXlXlXlXzXcX; V.FXhXlXlXlXlXlXlXlXlXzXpXjXzXlXlX", +"lXkXxXjX& J.SXfXBXz.f.R u kXzXkXzXpXjXlXlXlXlXlXlXlXlXlXzXcX; V.FXhXlXlXlXlXlXlXlXlXzXpXjXzXlXlX", +"lXkXxXjX& J.SXfXmX`.-.w.7XbXkXlXzXpXjXlXlXlXlXlXlXlXlXlXzXcX; V.FXhXlXlXlXlXlXlXlXlXzXpXjXzXlXlX", +"lXkXxXjX& H.SXhXjXBXKXGXvXkXlXkXzXuXhXlXlXlXlXlXlXlXlXkXlXxX; V.FXhXlXlXlXlXlXlXlXlXzXuXjXzXlXlX", +"lXkXzXkX= L.FXjXxXlXhXjXlXxXxXzXcXvXvXzXxXxXxXxXxXxXxXzXxXbX> C.DXgXlXlXlXlXlXlXlXkXxXxXjXlXlXlX", +"lXkXxXfX$ Z.BXaXfXfXfXfXfXfXfXfXdXP.,XkXdXfXfXfXfXfXfXdXgXfX= m.GXjXzXzXzXzXzXzXzXxXjX^.fXzXlXlX", +"lXjXVX).> l Z B B B B B B B B V N , f Z B B B B B B B B V V : o.cXuXpXpXpXpXpXpXuXxX/.i fXxXkXlX", +"lXlXzXgXdXpXtXyXtXtXtXtXtXtXyXtXyXhXpXtXyXtXtXtXtXtXtXtXtXyXfXsXjXjXjXjXjXjXjXjXjXjXfXfXzXlXlXlX", +"lXlXlXzXxXcXcXcXcXcXcXcXcXcXcXcXcXxXcXcXcXcXcXcXcXcXcXcXcXcXxXxXzXzXzXzXzXzXzXzXzXlXzXxXlXlXlXlX", +"lXlXlXlXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXlXlXlXlXlXlXlXlXlXlXlXlXkXlXlXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlX" }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/loopy.sav sgt-puzzles-20160429.b31155b/icons/loopy.sav --- sgt-puzzles-20140928.r10274/icons/loopy.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/loopy.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,120 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :5:Loopy +PARAMS :7:7x7t0de +CPARAMS :7:7x7t0de +DESC :31:02g222b3b2e2a2b322b2a2a3a2a1d1b +NSTATES :3:113 +STATEPOS:2:75 +MOVE :2:3n +MOVE :2:0n +MOVE :2:1n +MOVE :2:2n +MOVE :2:4n +MOVE :2:6y +MOVE :2:5y +MOVE :3:25n +MOVE :2:9n +MOVE :3:28y +MOVE :3:27y +MOVE :3:42n +MOVE :3:30n +MOVE :3:45y +MOVE :3:44y +MOVE :3:59n +MOVE :3:47n +MOVE :3:62y +MOVE :3:61y +MOVE :3:76n +MOVE :3:64n +MOVE :3:79y +MOVE :3:78y +MOVE :3:93n +MOVE :3:81n +MOVE :4:110y +MOVE :4:111y +MOVE :3:99y +MOVE :3:98y +MOVE :3:24n +MOVE :3:39y +MOVE :3:23y +MOVE :3:22y +MOVE :3:26n +MOVE :3:37n +MOVE :3:38y +MOVE :3:54n +MOVE :3:69y +MOVE :3:53y +MOVE :3:40y +MOVE :2:7y +MOVE :3:88y +MOVE :3:87y +MOVE :4:102n +MOVE :3:90n +MOVE :3:52n +MOVE :3:41y +MOVE :3:55n +MOVE :3:43n +MOVE :2:8n +MOVE :3:10y +MOVE :3:12y +MOVE :3:11n +MOVE :3:13y +MOVE :3:29n +MOVE :3:15y +MOVE :3:14n +MOVE :3:16y +MOVE :3:32y +MOVE :3:31n +MOVE :3:18y +MOVE :3:17n +MOVE :3:19y +MOVE :3:20y +MOVE :3:21n +MOVE :3:33y +MOVE :3:35y +MOVE :3:36n +MOVE :3:50y +MOVE :3:57y +MOVE :3:58y +MOVE :3:72n +MOVE :3:60n +MOVE :3:74y +MOVE :4:104y +MOVE :4:107n +MOVE :4:106n +MOVE :3:92n +MOVE :4:109n +MOVE :3:89y +MOVE :3:77n +MOVE :3:75n +MOVE :3:73y +MOVE :3:85n +MOVE :3:70n +MOVE :3:56y +MOVE :3:67n +MOVE :3:71y +MOVE :3:68y +MOVE :3:84n +MOVE :3:82n +MOVE :3:83y +MOVE :3:97n +MOVE :3:86y +MOVE :4:101y +MOVE :4:100n +MOVE :4:103y +MOVE :4:105y +MOVE :4:108y +MOVE :3:96n +MOVE :3:95y +MOVE :3:94y +MOVE :3:91y +MOVE :3:80y +MOVE :3:66n +MOVE :3:65y +MOVE :3:63y +MOVE :3:51n +MOVE :3:46n +MOVE :3:34y +MOVE :3:48n +MOVE :3:49y Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/loopy-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/loopy-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/magnets-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/magnets-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/magnets-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/magnets-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/magnets-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/magnets-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/magnets-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/magnets-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/magnets-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/magnets-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/magnets-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/magnets-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/magnets-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/magnets-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/magnets-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/magnets-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/magnets-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/magnets-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/magnets-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/magnets-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/magnets-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/magnets-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/magnets-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/magnets-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/magnets.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/magnets.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/magnets-icon.c sgt-puzzles-20160429.b31155b/icons/magnets-icon.c --- sgt-puzzles-20140928.r10274/icons/magnets-icon.c 2014-09-29 00:33:43.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/magnets-icon.c 2016-04-29 00:31:43.000000000 +0000 @@ -1,687 +1,631 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 233 2 ", -" c #D5D5D0", -". c #D5D0CB", -"X c #D5C8C3", -"o c #D4C8C4", -"O c #D5CBC7", -"+ c #CFCAC5", -"@ c #CCCBC6", -"# c #CECCC8", -"$ c #CDCBC6", -"% c #D4D2CD", -"& c #D7D5D0", -"* c #D3D1CC", -"= c #D5D3CE", -"- c #D4C2BD", -"; c #CD2322", -": c #CD1514", -"> c #CA1D1C", -", c #D91110", -"< c #5E1A19", -"1 c #071312", -"2 c #100D0D", -"3 c gray1", -"4 c #454443", -"5 c #C8C6C2", -"6 c #ACABA7", -"7 c #AFAEAA", -"8 c #AEADA9", -"9 c #B3B2AE", -"0 c #D4B4B0", -"q c #CC0505", -"w c #D06765", -"e c #CE7C79", -"r c #DB0404", -"t c #4B0000", -"y c #061414", -"u c #383433", -"i c #262625", -"p c #2C2C2B", -"a c #BCBAB6", -"s c #A6A5A1", -"d c #A9A8A4", -"f c #A8A7A3", -"g c #D3AFAB", -"h c #CC1B1A", -"j c #D1A9A4", -"k c #CFBBB6", -"l c #DC2724", -"z c #450000", -"x c #293937", -"c c #908C88", -"v c #767773", -"b c #393937", -"n c #BAB8B3", -"m c #A9A6A2", -"M c #ABA8A4", -"N c #AFADA9", -"B c #D4BAB6", -"V c #D20303", -"C c #D52223", -"Z c #D23032", -"A c #E20000", -"S c #510202", -"D c black", -"F c #050202", -"G c #2B2A29", -"H c #C1C2BD", -"J c #A6ADA9", -"K c #A9B2AE", -"L c #A8B0AC", -"P c #AEAFAB", -"I c #D6D3CF", -"U c #B7A48D", -"Y c #AD8E71", -"T c #AF8F75", -"R c #B1977B", -"E c #91947A", -"W c #7A9579", -"Q c #83997E", -"! c #7A9376", -"~ c #A2B19F", -"^ c #D7CAC7", -"/ c #C7A29D", -"( c #C99B98", -") c #C99F9C", -"_ c #CBBDB8", -"` c #BDCCB7", -"' c #2AA631", -"] c #18A524", -"[ c #19A524", -"{ c #20A62A", -"} c #19A21D", -"| c #2DA62B", -" . c #22A322", -".. c #20A01C", -"X. c #4BBC57", -"o. c #D26C6B", -"O. c #CD0000", -"+. c #CF2C2B", -"@. c #D15553", -"#. c #D6E2DD", -"$. c #B8CAB2", -"%. c #20991D", -"&. c #3BA137", -"*. c #40A33D", -"=. c #1E981C", -"-. c #179616", -";. c #1E991E", -":. c #41A440", -">. c #309B2C", -",. c #35B144", -"<. c #D05D5B", -"1. c #CE2727", -"2. c #D3C1BC", -"3. c #CF514F", -"4. c #CF4947", -"5. c #D6E1DC", -"6. c #B7CAB1", -"7. c #199719", -"8. c #339F32", -"9. c #39A138", -"0. c #189618", -"q. c #139411", -"w. c #1D971A", -"e. c #3FA23B", -"r. c #2E9927", -"t. c #34B040", -"y. c #CE5E5B", -"u. c #CB2827", -"i. c #D1C1BC", -"p. c #CD5250", -"a. c #CD4A48", -"s. c #C2CEBC", -"d. c #46AF44", -"f. c #33AB33", -"g. c #34AB33", -"h. c #3DAE3B", -"j. c #26AA2E", -"k. c #2FAE3C", -"l. c #25AD34", -"z. c #23A92E", -"x. c #52C468", -"c. c #D96362", -"v. c #D70000", -"b. c #D92E2C", -"n. c #D80000", -"m. c #D74A48", -"M. c #D5E2DC", -"N. c #D5D1CE", -"B. c #878D83", -"V. c #737D6F", -"C. c #798174", -"Z. c #6E7E70", -"A. c #A57D71", -"S. c #C68071", -"D. c #C2786B", -"F. c #BD7264", -"G. c #D7ADA5", -"H. c #886665", -"J. c #380000", -"K. c #490909", -"L. c #3A0000", -"P. c #764C4A", -"I. c #DFE1DC", -"U. c #B7B5B1", -"Y. c #070707", -"T. c #040101", -"R. c #800101", -"E. c #DD0000", -"W. c #CE3334", -"Q. c #CD1010", -"!. c #DE2C2B", -"~. c #636462", -"^. c #070606", -"/. c #4C4C4A", -"(. c #E3E1DC", -"). c #262624", -"_. c #858581", -"`. c #8F8C88", -"'. c #223230", -"]. c #770000", -"[. c #DD3432", -"{. c #D1C8C3", -"}. c #CE9692", -"|. c #DF4240", -" X c #5E5856", -".X c #464442", -"XX c #989490", -"oX c #65615E", -"OX c #524F4D", -"+X c #E2E0DB", -"@X c #B4B2AE", -"#X c gray6", -"$X c #2A2928", -"%X c #312D2C", -"&X c #010F0F", -"*X c #7B0000", -"=X c #DB0606", -"-X c #CE827F", -";X c #CC4C4A", -":X c #DD2E2D", -">X c #61605E", -",X c #0B0C0C", -" c #D4C4C4", +", c #CD2323", +"< c #CD1515", +"1 c #CA1D1D", +"2 c #D91111", +"3 c #5E1A1A", +"4 c #071313", +"5 c #100D0D", +"6 c gray1", +"7 c gray27", +"8 c #C8C8C8", +"9 c #ACACAC", +"0 c #AFAFAF", +"q c #AEAEAE", +"w c gray70", +"e c #D4B6B6", +"r c #CC0505", +"t c #D06868", +"y c #CE7D7D", +"u c #DB0404", +"i c #4B0000", +"p c #061515", +"a c #383535", +"s c gray15", +"d c #2C2C2C", +"f c #BCBCBC", +"g c gray65", +"h c #A9A9A9", +"j c gray66", +"k c #AEAEAE", +"l c LightGray", +"z c #D3B1B1", +"x c #CC1B1B", +"c c #D1ABAA", +"v c #CFBDBC", +"b c #DC2726", +"n c #450000", +"m c #293A39", +"M c #908E8C", +"N c #767876", +"B c #393939", +"V c #BAB9B9", +"C c #A9A7A7", +"Z c #ABA9A9", +"A c #A9A7A7", +"S c #AFAFAF", +"D c LightGray", +"F c #D4BBBC", +"G c #D20303", +"H c #D52325", +"J c #D23133", +"K c #E20000", +"L c #510202", +"P c black", +"I c #050202", +"U c #2B2A2B", +"Y c #C1C4C4", +"T c #A6AEAE", +"R c #A9B3B3", +"E c #A8B1B1", +"W c #AEB1B1", +"Q c #D3D2D2", +"! c #D6D5D6", +"~ c #B7A592", +"^ c #AC8F75", +"/ c #AF9078", +"( c #B1987F", +") c #91957E", +"_ c #7A977D", +"` c #839A82", +"' c #7A9479", +"] c #A2B2A4", +"[ c #D7CCCE", +"{ c #C7A3A2", +"} c #C99D9D", +"| c #C8A1A1", +" . c #CBBEBE", +".. c #D5D7D7", +"X. c #BDCEBD", +"o. c #2AA732", +"O. c #18A524", +"+. c #19A524", +"@. c #20A62B", +"#. c #19A21D", +"$. c #2DA72D", +"%. c #22A322", +"&. c #20A01D", +"*. c #4BBC59", +"=. c #D26D6E", +"-. c #CD0000", +";. c #CF2D2D", +":. c #CD0000", +">. c #D15555", +",. c #D6E4E4", +"<. c #B8CCB8", +"1. c #20991E", +"2. c #3CA239", +"3. c #42A43F", +"4. c #1F981C", +"5. c #169615", +"6. c #1E991E", +"7. c #43A542", +"8. c #319B2E", +"9. c #36B246", +"0. c #D05E5E", +"q. c #CE2828", +"w. c #D3C3C3", +"e. c #CF5252", +"r. c #CF4A4A", +"t. c #D6E3E3", +"y. c #B7CBB7", +"u. c #199719", +"i. c #359F35", +"p. c #3BA13B", +"a. c #189618", +"s. c #139411", +"d. c #1D971A", +"f. c #41A33E", +"g. c #309929", +"h. c #34B042", +"j. c #CE5F5E", +"k. c #CB2828", +"l. c #D1C3C3", +"z. c #CD5252", +"x. c #CD4B4B", +"c. c #D6E3E3", +"v. c #C2CFC2", +"b. c #46B046", +"n. c #34AC34", +"m. c #34AB34", +"M. c #3EAE3D", +"N. c #26AA2F", +"B. c #2FAE3E", +"V. c #26AD35", +"C. c #23A92F", +"Z. c #52C56C", +"A. c #D96465", +"S. c #D70000", +"D. c #D92E2E", +"F. c #D80000", +"G. c #D74B4B", +"H. c #D5E4E4", +"J. c #D5D3D5", +"K. c #878E87", +"L. c #737E73", +"P. c #798278", +"I. c #6E7F74", +"U. c #A57E75", +"Y. c #C68175", +"T. c #C2796F", +"R. c #BD7367", +"E. c #D7AFAA", +"W. c #886768", +"Q. c #380000", +"!. c #490909", +"~. c #3A0000", +"^. c #764D4D", +"/. c #DFE3E3", +"(. c #B7B7B7", +"). c #070707", +"_. c #040101", +"`. c #800101", +"'. c #DD0000", +"]. c #CE3435", +"[. c #CD1011", +"{. c #DE2D2D", +"}. c #636565", +"|. c #070606", +" X c #4C4C4C", +".X c gray89", +"XX c #AFAFAF", +"oX c gray15", +"OX c #868685", +"+X c #8F8D8C", +"@X c #223232", +"#X c #770000", +"$X c #DD3434", +"%X c #D1CAC9", +"&X c #CE9897", +"*X c #DF4343", +"=X c #5E5959", +"-X c #464545", +";X c #989595", +":X c #656262", +">X c #525050", +",X c #E2E2E2", +" , < 1 2 3 4 5 6 7 8 9 * ", -"0 q w e r t y u i p a s d f 8 * ", -"g h j k l z x c v b n m M m N * ", -"B V C Z A S D F D G H J K L P * ", -"I U Y T R E W Q ! ~ ^ / ( ) _ ", -"` ' ] [ { } | ...X.o.O.+.O.@.#.", -"$.%.&.*.=.-.;.:.>.,.<.1.2.3.4.5.", -"6.7.8.9.0.q.w.e.r.t.y.u.i.p.a.5.", -"s.d.f.g.h.j.k.l.z.x.c.v.b.n.m.M.", -"N.B.V.C.Z.A.S.D.F.G.H.J.K.L.P.I.", -"U.Y.D T.D R.E.W.Q.!.~.D ^.D /.(.", -"7 )._.`.'.].[.{.}.|. X.XXXoXOX+X", -"@X#X$X%X&X*X=X-X;X:X>X,X , < 1 2 3 4 5 6 7 8 9 0 q w ; ", +"e r t y u i p a s d f g h j k l ", +"z x c v b n m M N B V C Z A S D ", +"F G H J K L P I P U Y T R E W Q ", +"! ~ ^ / ( ) _ ` ' ] [ { } | ...", +"X.o.O.+.@.#.$.%.&.*.=.-.;.:.>.,.", +"<.1.2.3.4.5.6.7.8.9.0.q.w.e.r.t.", +"y.u.i.p.a.s.d.f.g.h.j.k.l.z.x.c.", +"v.b.n.m.M.N.B.V.C.Z.A.S.D.F.G.H.", +"J.K.L.P.I.U.Y.T.R.E.W.Q.!.~.^./.", +"(.).P _.P `.'.].[.{.}.P |.P X.X", +"XXoXOX+X@X#X$X%X&X*X=X-X;X:X>X,X", +" c #3B3B39", -", c #7D0000", -"< c #5D3436", -"1 c #444342", -"2 c #484746", -"3 c #494846", -"4 c #4D4D4B", -"5 c #4C5250", -"6 c #535250", -"7 c #605F5D", -"8 c #715250", -"9 c #61605E", -"0 c #757472", -"q c #7D747A", -"w c #820202", -"e c #9B0201", -"r c #A21A19", -"t c #C70302", -"y c #CB0101", -"u c #CC0D0D", -"i c #D50101", -"p c #DA0101", -"a c #CD1413", -"s c #CC1B1A", -"d c #D61A19", -"f c #CE2524", -"g c #CD2D2C", -"h c #CE3433", -"j c #CE3C3A", -"k c #D23334", -"l c #D93436", -"z c #D43D3C", -"x c #827C7D", -"c c #CF4443", -"v c #CF4D4B", -"b c #D34542", -"n c #CF504E", -"m c #CF5250", -"M c #D35452", -"N c #D05D5A", -"B c #D06260", -"V c #D06F6D", -"C c #CE7572", -"Z c #C6747A", -"A c #D17774", -"S c #DD7177", -"D c #D17875", -"F c #DD747A", -"G c #E2747A", -"H c #008E00", -"J c #069106", -"K c #099106", -"L c #0C930B", -"P c #10950F", -"I c #139713", -"U c #169816", -"Y c #1B9618", -"T c #1B991B", -"R c #219A1F", -"E c #229B22", -"W c #2B9E2A", -"Q c #2FA02F", -"! c #34A133", -"~ c #38A337", -"^ c #3CA43B", -"/ c #41A43F", -"( c #43A641", -") c #43AC46", -"_ c #4CAC4D", -"` c #55AC53", -"' c #5AAD57", -"] c #5AAD58", -"[ c #61AF5E", -"{ c #65B163", -"} c #69B266", -"| c #D1817E", -" . c #8C8B87", -".. c #908E8A", -"X. c #93928E", -"o. c #9D9A96", -"O. c #BB918E", -"+. c #86BE85", -"@. c #A7A39F", -"#. c #A7A6A2", -"$. c #A8A7A3", -"%. c #AAA9A5", -"&. c #AFAEAA", -"*. c #B0AEAA", -"=. c #B4B3AE", -"-. c #BBB9B5", -";. c #BEBCB8", -":. c #D28481", -">. c #D28986", -",. c #D58D8A", -"<. c #D3918E", -"1. c #D29A96", -"2. c #D99C9C", -"3. c #D5A29D", -"4. c #D3A7A3", -"5. c #D5ABA7", -"6. c #D3AEAA", -"7. c #D3B2AE", -"8. c #CCBCB7", -"9. c #D4B6B2", -"0. c #D4BAB5", -"q. c #D4BDB8", -"w. c #94CF9F", -"e. c #96CFA1", -"r. c #9ACFA1", -"t. c #96D0A1", -"y. c #98D0A2", -"u. c #ACC7A7", -"i. c #A6CFA1", -"p. c #AEC7A8", -"a. c #A7D0A2", -"s. c #AAD1A5", -"d. c #BDCCB7", -"f. c #BFC4BF", -"g. c #B4D3B8", -"h. c #C3C1BD", -"j. c #D4C3BF", -"k. c #BFC7C2", -"l. c #BFC8C3", -"z. c #C1C9C3", -"x. c #CACFC3", -"c. c #C2CDC8", -"v. c #CBCFCA", -"b. c #D5C7C3", -"n. c #DEC1C2", -"m. c #D5CBC6", -"M. c #D3CFCA", -"N. c #DFCDCF", -"B. c #C5D7C7", -"V. c #CDD7C7", -"C. c #C6D7C8", -"Z. c #CFD7C8", -"A. c #C5D8C8", -"S. c #C9D9CB", -"D. c #D4D2CD", -"F. c #D6D6D0", -"G. c #DCD6D4", -"H. c #D5DAD5", -"J. c #DCDBD5", -"K. c #DFD6D8", -"L. c #D5DED8", -"P. c #DEDED8", -"I. c #E0DED9", -"U. c #D6E1DC", -"Y. c #DAE0DB", -"T. c #E4E2DC", -"R. c #DDE2E0", -"E. c #D6EAE4", -"W. c #D6F3EE", -"Q. c #D7F7F2", -"!. c #F2EFEA", -"~. c #F5F2ED", -"^. c #F8F6F0", +"o c #111111", +"O c #131A1A", +"+ c #1B1B1B", +"@ c #320202", +"# c #252525", +"$ c #2A2A2A", +"% c #322F32", +"& c #2F3537", +"* c #373637", +"= c #393537", +"- c #393639", +"; c #3A3A3A", +": c #7D0000", +"> c #5D3537", +", c #444444", +"< c #4C4C4C", +"1 c #4C5353", +"2 c #535353", +"3 c #715353", +"4 c #616161", +"5 c gray46", +"6 c #7D767E", +"7 c #820202", +"8 c #9B0202", +"9 c #A21A1A", +"0 c #C70302", +"q c #CB0101", +"w c #CC0D0D", +"e c #D50101", +"r c #DA0101", +"t c #CD1414", +"y c #CC1B1B", +"u c #D61A1A", +"i c #CE2626", +"p c #CD2D2D", +"a c #CE3535", +"s c #CE3C3C", +"d c #D23436", +"f c #D93537", +"g c #D33538", +"h c #D43D3D", +"j c #CF4545", +"k c #CF4B4B", +"l c #D44242", +"z c #D34848", +"x c #CF5252", +"c c #D35555", +"v c #D05B5B", +"b c #D06262", +"n c #CE7676", +"m c #C6767E", +"M c #D07070", +"N c #DD747D", +"B c #D17979", +"V c #E2757E", +"C c #048E02", +"Z c #069105", +"A c #0A9106", +"S c #0C930B", +"D c #10950F", +"F c #139713", +"G c #1B9617", +"H c #169816", +"J c #1B991B", +"K c #219A1F", +"L c #1F9A20", +"P c #239B22", +"I c #2B9F2B", +"U c #2FA02F", +"Y c #31A131", +"T c #38A337", +"R c #3BA43B", +"E c #42A642", +"W c #41AB47", +"Q c #43AC48", +"! c #4EAA4E", +"~ c #4CAF51", +"^ c #57AD57", +"/ c #5AAE5A", +"( c #65B266", +") c #6AB36A", +"_ c #827A82", +"` c #808080", +"' c gray55", +"] c #908E8E", +"[ c #939393", +"{ c #9D9B9B", +"} c #BB9393", +"| c #86BF8A", +" . c #A7A4A4", +".. c #ABABAB", +"X. c #B1B1B1", +"o. c #BCBCBC", +"O. c #D28484", +"+. c #D38C8C", +"@. c #D39393", +"#. c #D29B9B", +"$. c #D99CA1", +"%. c #D4A5A4", +"&. c #D3A9A9", +"*. c #CCBEBE", +"=. c #D3B2B2", +"-. c #D4BBBB", +";. c #96D1A6", +":. c #99D1A7", +">. c #ADC8AD", +",. c #A6D1A6", +"<. c #AAD2AA", +"1. c #BDCEBD", +"2. c #B4D5BE", +"3. c #BFC6C6", +"4. c #BFC9C9", +"5. c #C3C3C4", +"6. c #C2CECE", +"7. c #D4C5C5", +"8. c #DEC2C9", +"9. c #D5CCCC", +"0. c #CAD1CA", +"q. c #C5D9CE", +"w. c #CED9CE", +"e. c #DFCFD6", +"r. c #C2D0D0", +"t. c #CBD0D1", +"y. c #C8DAD2", +"u. c #D4D4D4", +"i. c #DAD6D9", +"p. c #D5DBDB", +"a. c #DDDBDD", +"s. c #DFE0DF", +"d. c #D6E2E2", +"f. c #DCE2E2", +"g. c #D6ECEC", +"h. c #D6F6F6", +"j. c #D7FAFA", +"k. c #E3E3E3", +"l. c #F3F3F3", +"z. c #F8F8F8", /* pixels */ -"D.D.D.D.D.F.F.D.D.D.F.D.F.F.D.D.F.D.D.D.D.D.F.D.F.D.D.D.F.D.D.F.", -"D.F.H.D.D.D.D.D.D.M.D.M.M.D.D.M.D.M.D.J.D.D.D.D.D.D.F.F.D.D.D.D.", -"F.m.c a d a a s s d r O + + + + + + + .P.-.&.&.&.*.*.*.&.=.D.F.", -"L.4.y y y u a y y i e . : J.#.$.%.%.$.$.$.#.&.D.D.", -"P.4.y y y >.b.y t i e > J.$.%.%.%.%.$.&.#.&.F.D.", -"L.4.y f j 3.b.c g i e : 1 1 1 3 . : J.$.%.%.%.%.%.%.$.&.D.D.", -"L.5.y N Q.D.M.W.1.i e ;.!.T.T.~.& & P.%.%.%.%.%.%.%.%.&.F.D.", -"L.4.y a s 1.b.f s p e + $ # # % : J.$.%.%.%.%.%.%.$.&.D.D.", -"L.4.y y y | 9.y y p e . . . : J.%.%.%.&.%.%.%.%.*.D.D.", -"H.7.t y y y y t t y e 4 J.%.@.$.#.#.@.#.#.%.D.D.", -"D.F.2.F F F S F F G Z q q q q q q q x h.J.v.c.c.l.c.c.c.l.8.F.D.", -"D.G.g.e.y.e.e.y.e.e.e.i.i.i.i.i.i.i.s.D.F.9.,.<.<.<.<.,.6.J.D.D.", -"G.d.T J K P L K J L K L L J L L K J H } N.s y y y y y y y 4.L.M.", -"G.u.L ~ Q U T E / T T T T ( T T U ^ E ) n.y y y j D u t y <.U.M.", -"G.p.I E ' W U ' W U T T U ~ ` L ~ ` P _ n.y y y V E.u y y <.P.D.", -"K.p.I U Y ` { E U T U T U U Q } _ U L _ n.y g 6.0.M.7.>.y <.U.M.", -"K.p.I U T ` [ E P T U T T P Q { _ U P _ n.y g 7.0.D.7.>.y <.L.D.", -"K.p.I E ] W Y ] Q U T T U ^ ` P ! ` P _ n.t y y V E.u y y <.Y.M.", -"K.u.J ! W P U T ^ U T U T ^ U U P ~ T ) n.t y t h C u y y <.U.M.", -"D.x.( U T R E T T R T R R T R R E T T +.n.i p p p p p p p <.U.M.", -"D.G.P.V.Z.V.V.V.Z.Z.V.B.A.A.C.C.B.B.S.R.8.w w w w w w w , O.P.D.", -"F.D.7 * ; - - - ; = < l k k k k k k k 3.k.. X.T.M.", -"P.%. @ y y y y y y y y b k.. . . . . X.P.D.", -"I.$. . @ i y y u M.N y y z k.. . X.Y.M.", -"I.$. o % # # % + @ i y s h L.C s y z z. X % # # # # X.T.M.", -"I.%. 7 ^.T.T.~.o. @ i y q.E.D.J.W.g k c. > ~.T.T.!.-. X.Y.M.", -"I.%. + 2 1 1 2 & @ i y k n H.:.j u k z. o 2 1 1 1 : X.T.M.", -"I.$. . . @ i t y u L.B y y z z.. . X.T.M.", -"P.&. @ i y y y u y y y b c.X o.P.D.", -"D.D.x 4 6 6 6 6 6 5 8 M m m M v m m M 7.P...4 6 6 6 6 4 0 M.D.D.", -"D.D.T.T.T.T.T.T.T.T.T.U.U.U.U.Y.U.U.U.L.D.P.T.T.T.T.T.T.T.F.D.D.", -"D.D.v.M.M.M.M.M.M.M.M.M.M.D.M.M.D.M.M.D.D.v.M.M.M.D.M.M.M.D.D.F." +"u.u.u.u.u.i.u.p.u.p.u.u.u.u.u.i.u.u.u.u.u.u.u.p.u.u.u.u.u.u.p.u.", +"u.p.p.u.u.u.u.u.9.u.u.u.u.u.t.u.u.u.u.a.u.u.u.u.u.u.u.u.u.u.u.u.", +"u.9.z t u t t y y u 9 O + + + + + + + ' s.o.....X.X.X...X.X.u.u.", +"d.&.q q q w t q q e 8 ; u.................X.u.p.", +"p.&.q q q +.7.q 0 e 8 ; s.................X.u.u.", +"d.&.q i s %.9.j p e 8 * , , , < . * p...................u.u.", +"d.&.q v h.u.u.h.#.e 8 o.l.k.k.l.$ $ a.................X.u.u.", +"d.&.q t y #.9.i y e 8 # $ # # $ ; a......... .......X.u.u.", +"p.&.q w q O.=.q q e 8 . * i.................X.u.u.", +"p.=.q q q q 0 q 0 e 8 < s... . . . . . . ...u.u.", +"u.u.$.N N N N N N V m 6 6 6 6 6 6 6 _ 5.i.0.6.6.4.r.r.r.4.5.u.u.", +"u.i.2.;.:.;.;.:.;.;.;.,.,.,.,.,.,.,.<.u.a.-.+.@.@.@.@.+.&.s.u.i.", +"i.1.J A A S D S Z S Z Z S Z S S S Z C ( e.y q q q q q q q &.s.t.", +"a.>.S R Y H J P E J J J L E J J H R P W 8.w q q s B w 0 q @.d.u.", +"a.>.F P / I H / U H J J H R ^ S T ^ S ~ 8.0 q q M g.w q 0 @.d.u.", +"a.>.F G G ^ ( P H J J J J D U ) ~ J S ~ 8.q p &.-.u.=.+.q @.s.u.", +"a.>.F H G ^ ( I F J J J J F Y ) ! H S ~ 8.q a =.-.u.=.+.q @.d.u.", +"a.>.F L / I H / U H J J H R / S R ^ D ~ 8.0 q q M g.w q q @.d.u.", +"a.>.Z T I F H J R H J H H R H H D R J W 8.q q 0 a n w 0 q @.d.9.", +"i.t.E H J P P J J J J K P J K K P J G | 8.e r r r r r r r @.d.u.", +"u.i.s.w.w.w.w.w.y.w.w.q.q.q.q.q.q.q.y.f.7.7 7 7 7 7 7 7 : } d.u.", +"u.u.4 % - * * * = * > f g g g d d d g %.4. [ s.u.", +"f... @ e q q q q q q q l 4.. . . . . [ k.u.", +"s... @ e 0 q w 9.v q q h 4.. [ k.9.", +"s... o $ # # $ + @ e q y a d.B u q h 6. X $ # # $ + [ k.u.", +"s... 4 z.k.k.z.{ @ e q 7.g.u.p.h.p d 6. ; z.k.k.l.o. [ f.u.", +"s... + , , , , $ @ e q d c p.O.s 0 h 4. o , , , , * [ k.u.", +"s... . . @ e 0 q w p.b q q h 4.. . [ f.u.", +"a.X. @ e q q q t w q q z 6.X . { a.u.", +"u.i.` < 2 2 2 2 2 1 3 c x x c z k x v =.f.] < 2 2 2 2 < 5 u.u.u.", +"u.u.k.k.k.k.k.k.k.k.k.d.d.d.d.d.d.d.d.p.u.f.k.k.k.k.k.k.k.u.u.u.", +"u.u.t.9.u.u.t.u.9.t.u.u.u.u.u.9.u.u.u.u.u.u.u.0.u.u.u.u.u.u.p.u." }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 163 2 ", +"48 48 122 2 ", " c #010101", ". c #0B0B0B", -"X c #131312", -"o c #181717", +"X c #131313", +"o c #181818", "O c #3A0101", -"+ c #21201F", -"@ c #222221", -"# c #363634", -"$ c #3D3837", -"% c #343C3B", -"& c #3D3C3B", -"* c #663C3B", -"= c #40403E", -"- c #434241", -"; c #5B5957", -": c #5C5B59", -"> c #61615E", -", c #646360", -"< c #6E6D6A", -"1 c #73726F", -"2 c #757472", -"3 c #797775", -"4 c #7B7A77", -"5 c #7E7D7A", -"6 c #920101", -"7 c #AB0101", -"8 c #A53C3B", -"9 c #B73C3B", -"0 c #CB0101", -"q c #CC0B0B", -"w c #D40100", -"e c #D80101", -"r c #CD100F", -"t c #CD1212", -"y c #CD1817", -"u c #CD1E1D", -"i c #CE2423", -"p c #CE2827", -"a c #CE2D2C", -"s c #CE3332", -"d c #CB3B37", -"f c #CE3D3B", -"g c #D63C3B", -"h c #CF403F", -"j c #807F7C", -"k c #CE4441", -"l c #CF514F", -"z c #CD5755", -"x c #CD5856", -"c c #CD5B59", -"v c #D05553", -"b c #D05856", -"n c #D05B58", -"m c #D0605E", -"M c #D06563", -"N c #D06866", -"B c #D16E6B", -"V c #CE7673", -"C c #D17371", -"Z c #D17976", -"A c #D17E7B", -"S c #059305", -"D c #079308", -"F c #0C950D", -"G c #0F9610", -"H c #129712", -"J c #169816", -"K c #179918", -"L c #1A991A", -"P c #21991E", -"I c #239A22", -"U c #2C9E2B", -"Y c #34A133", -"T c #38A237", -"R c #3DA43B", -"E c #41A53F", -"W c #45A743", -"Q c #49A746", -"! c #4AA848", -"~ c #50AA4E", -"^ c #53AB51", -"/ c #5DAE5B", -"( c #60AF5D", -") c #69AF64", -"_ c #64B062", -"` c #69B266", -"' c #6DB36A", -"] c #72B46E", -"[ c #74B571", -"{ c #7DB779", -"} c #7EB87A", -"| c #D2827F", -" . c #8F8E8A", -".. c #908F8B", -"X. c #989793", -"o. c #9B9896", -"O. c #9D9C98", -"+. c #AC9896", -"@. c #A19E9B", -"#. c #85BA81", -"$. c #91BE8C", -"%. c #A3A19D", -"&. c #A7A6A2", -"*. c #A8A7A3", -"=. c #AAA9A5", -"-. c #AEADA9", -";. c #B3B1AD", -":. c #B6B5B1", -">. c #BBBAB5", -",. c #D28884", -"<. c #D28D8A", -"1. c #C99793", -"2. c #C59896", -"3. c #D39793", -"4. c #D59896", -"5. c #D99896", -"6. c #D49D9A", -"7. c #D3A09C", -"8. c #D3A7A3", -"9. c #D3ABA7", -"0. c #D3AEA9", -"q. c #D4B1AD", -"w. c #D4B7B3", -"e. c #D4BAB5", -"r. c #B7CAB1", -"t. c #BDCCB7", -"y. c #C5C3BE", -"u. c #C1CBB9", -"i. c #D4C3BE", -"p. c #C8C6C2", -"a. c #CCCBC6", -"s. c #CECCC8", -"d. c #D4C6C1", -"f. c #D6C9C5", -"g. c #D3CEC9", -"h. c #D5D2CD", -"j. c #D9D0CE", -"k. c #CBDCD0", -"l. c #D6D5D0", -"z. c #DAD6D2", -"x. c #D6DBD3", -"c. c #DCDAD5", -"v. c #D5DED9", -"b. c #DEDCD8", -"n. c #E2DFDA", -"m. c #D6E0DA", -"M. c #DBE0DB", -"N. c #E2E0DA", -"B. c #D6EAE5", -"V. c #D6EFE9", -"C. c #D7F6F0", -"Z. c #D7FBF4", -"A. c #D7FFFE", -"S. c #E8E6E1", -"D. c #E2E8E3", -"F. c #ECEAE5", -"G. c #E4E4E9", -"H. c #E2EDE8", -"J. c #F1EFE9", -"K. c #E3F0EB", -"L. c #F4F2EC", -"P. c #FFFCF6", -"I. c gray100", +"+ c #222222", +"@ c gray21", +"# c #343D3D", +"$ c #3D3C3C", +"% c #663D3D", +"& c #424242", +"* c #5B5B5B", +"= c #636363", +"- c #6D6D6D", +"; c gray46", +": c #7B7B7B", +"> c #920101", +", c #AB0101", +"< c #A53D3D", +"1 c #B73D3D", +"2 c #CB0101", +"3 c #CC0B0B", +"4 c #D40101", +"5 c #D80101", +"6 c #CD1111", +"7 c #CD1D1D", +"8 c #CE2424", +"9 c #CE2B2B", +"0 c #CE3333", +"q c #CE3D3C", +"w c #D63D3D", +"e c #CF4343", +"r c #CC4846", +"t c #CF5252", +"y c #CD5959", +"u c #D05555", +"i c #D05959", +"p c #D06464", +"a c #D06B6B", +"s c #CE7676", +"d c #D17474", +"f c #D17C7C", +"g c #059305", +"h c #0D950D", +"j c #129712", +"k c #169816", +"l c #1A991A", +"z c #21991E", +"x c #239A21", +"c c #2A9E2A", +"v c #2EA02E", +"b c #34A234", +"n c #3CA43C", +"m c #45A745", +"M c #49A748", +"N c #4BA94B", +"B c #54AB54", +"V c #5FAF5F", +"C c #64B164", +"Z c #69B066", +"A c #6BB36B", +"S c #72B26F", +"D c #75B675", +"F c #78B778", +"G c #7CB87B", +"H c #808080", +"J c gray56", +"K c #909090", +"L c #999799", +"P c #9A999A", +"I c #AC999B", +"U c #8BBD8B", +"Y c #A09EA0", +"T c #A7A7A7", +"R c #AAAAAA", +"E c #B4B4B4", +"W c #BBBBBB", +"Q c #D28282", +"! c #D28B8B", +"~ c #C5999B", +"^ c #C99898", +"/ c #D29090", +"( c #D69799", +") c #D4999A", +"_ c #D9999B", +"` c #D59FA0", +"' c #D2A2A2", +"] c #D3ADAD", +"[ c #D4B3B3", +"{ c #D4BBBB", +"} c #96C196", +"| c #B7CBB7", +" . c #BDCDBD", +".. c #C2CCBF", +"X. c #C5C5C5", +"o. c #C9C7C7", +"O. c #C2CDC0", +"+. c #CBCCCC", +"@. c #D4C4C4", +"#. c #D6CCCC", +"$. c #CFD1CF", +"%. c #CBDED7", +"&. c #CEDED9", +"*. c #D5D4D4", +"=. c #D9D2D5", +"-. c #D7DED7", +";. c #D8DED7", +":. c #DBD7DB", +">. c #D5DCDC", +",. c #DBDBDB", +"<. c #D6E2E2", +"1. c #DBE2E3", +"2. c #D6ECEC", +"3. c #D6F1F1", +"4. c #D7FDFD", +"5. c #E2E2E2", +"6. c #E2EAEA", +"7. c #E8E8E8", +"8. c #E4E7F1", +"9. c #E3F2F2", +"0. c #F4F4F4", +"q. c white", /* pixels */ -"h.h.h.h.l.h.h.l.h.h.h.h.h.l.l.h.h.h.h.h.h.h.h.l.h.h.h.h.l.h.h.l.h.h.l.h.h.l.h.h.h.h.j.h.h.h.h.h.", -"h.h.h.h.h.h.h.h.h.h.l.h.h.h.h.h.j.h.h.h.h.h.h.h.l.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.l.h.h.h.h.h.h.h.", -"h.h.h.l.h.h.h.j.g.h.h.h.j.h.g.g.g.g.h.h.g.h.h.h.g.h.s.h.g.h.h.h.h.h.g.h.h.h.h.h.h.h.h.h.h.j.h.h.", -"l.h.h.h.x.v.m.m.m.m.v.b.m.m.m.m.M.N.N.N.N.N.N.N.N.N.N.N.M.l.h.l.z.z.z.z.l.z.h.x.l.l.z.x.h.l.h.l.", -"h.l.g.x.6.h f f f f f f f f f g 8 % = & & & & & & & & & < g.l.h.t.;.:.:.:.:.:.:.:.:.:.:.s.l.h.h.", -"h.h.l.i.t 0 0 0 0 0 0 0 0 0 0 e 6 3 N.>.%.=.&.&.*.*.*.&.*.*.*.*.g.l.l.h.", -"l.g.v.q.0 0 0 0 0 i i q 0 0 0 w 6 . . ; S.;.*.=.=.=.=.=.=.=.=.=.=.=.a.l.j.h.", -"h.h.b.q.0 0 0 0 r f.v.p 0 0 0 e 6 . : S.;.*.=.=.=.=.=.*.=.=.=.=.=.a.l.h.h.", -"l.h.v.q.0 0 w 0 q d.x.i 0 0 0 w 6 ; S.;.&.=.=.=.=.=.=.=.=.=.=.*.s.z.h.l.", -"h.g.x.q.0 0 k A Z f.l.| Z v 0 w 6 > 4 2 2 2 1 5 # : S.;.=.=.=.=.=.=.=.=.=.=.=.=.s.z.h.h.", -"l.h.v.q.0 0 <.A.V.l.h.B.A.0.0 e 6 s.P.L.L.L.J.I.< : S.;.&.=.=.=.=.=.=.=.=.=.=.*.s.l.h.h.", -"h.g.z.q.0 0 k A Z f.h.,.Z v 0 w 6 , 3 2 3 2 2 j # : S.;.*.=.=.=.=.=.=.=.=.=.=.=.s.h.h.h.", -"l.g.v.q.0 0 0 0 q d.l.i 0 0 0 w 6 . ; S.;.*.=.=.=.=.=.=.=.=.=.=.*.s.l.j.h.", -"l.g.v.q.0 0 0 0 r f.v.i 0 0 0 w 6 . : S.;.*.=.=.=.=.=.=.=.=.=.=.*.s.l.h.h.", -"l.g.v.q.0 0 0 0 0 i i q 0 0 0 e 6 : S.;.*.=.=.=.=.=.=.=.=.=.=.=.s.l.h.l.", -"h.j.l.g.h 0 0 0 0 0 0 0 0 0 0 w 6 . %.b.y.*.*.*.&.*.*.&.&.*.*.*.*.s.z.h.h.", -"h.h.h.h.g.7.5.5.4.4.6.5.4.4.4.5.2.o.o.o.X.X.o.o.o.o.o.X.>.c.h.h.s.a.a.a.p.a.a.a.a.a.p.p.h.h.h.h.", -"h.h.h.j.c.k.k.k.k.k.k.k.k.k.k.k.k.c.x.x.x.x.x.x.x.x.x.x.c.z.h.x.j.f.f.f.f.f.f.f.d.g.v.l.h.l.h.h.", -"l.h.h.z.} I I I P I P P I I P I I P P P I I I P P P P P Q u.c.9.p q r r q r q q q q n h.h.h.l.h.", -"h.h.z.t.J J G J L L J L J G K K K J K K F J K K J L H J S ] D.k 0 0 0 0 0 0 0 0 0 0 0 6.v.h.h.h.", -"l.h.c.r.J J E I J L L L P W K L L L L L E L L L L H U R D ) G.f 0 0 0 0 s N s 0 0 0 0 3.m.g.h.h.", -"h.h.z.r.J J T ] L J L J ` W H L L L L H ~ ( G L H U [ U D ` G.d 0 0 0 0 A A.A 0 q 0 0 3.m.h.h.h.", -"h.h.z.r.J L G Y [ L G ' E F L L L K L L F ~ ( F U [ U H F ) G.d 0 0 0 0 C V.C 0 0 0 0 4.m.g.h.h.", -"l.l.z.r.J L L G Y ` ` R F L K L K L L K L H ! ) _ U K L D ) G.d 0 i q.9.i.x.i.9.q.u 0 4.m.h.h.h.", -"h.h.z.t.K K P K G [ #.J J L L K K K K L L J I $.( F L L F ) G.h 0 p B.B.v.h.v.B.B.p 0 3.m.j.h.h.", -"h.h.c.r.J K J J ' R U [ P J L L K K L L H U [ L Q _ H L F ` D.d 0 t g a <.B.<.a f q 0 3.m.h.h.h.", -"h.h.z.r.K K L ` E G H Y ] I J L L K L J U ] I J G ~ ( L F ) G.d 0 0 0 0 Z Z.Z 0 0 0 0 3.m.h.h.h.", -"h.h.z.r.K H ^ W G L L G T / J L K P L L _ U H P L F ^ ! S ) G.d 0 0 0 0 M f.M 0 q 0 0 3.v.h.h.h.", -"g.l.z.t.K H P H L J J L H K K L J J J K J H K J K K G L S ] G.d 0 0 0 0 0 0 0 0 0 0 0 4.m.h.h.h.", -"l.l.g.z.} I P P P P P P I P P P I I I I I I I I I I I P Q u.b.f e 0 w 0 w w 0 w w w 0 4.v.h.h.h.", -"l.g.l.h.z.x.x.x.x.x.x.x.x.x.x.z.k.k.k.k.k.k.k.k.k.k.k.k.x.h.m.9 7 7 7 7 7 7 7 7 7 7 7 1.m.h.l.h.", -"l.l.h.z.g.@.X.o.o.o.o.o.X.X.o.X.+.5.5.5.4.4.4.4.3.5.5.5.e.l.N.& X.b.h.h.h.", -"g.l.l.g.= O e 0 0 0 0 0 0 0 0 0 0 q 7.D.$ X.n.g.h.h.", -"l.g.b.;. O e 0 0 0 0 0 0 0 0 0 0 0 x K.$ X.N.g.h.l.", -"l.g.b.;. O w 0 0 0 0 a 8.A 0 0 q 0 x K.$ X.N.s.h.h.", -"l.g.b.;. O w 0 0 0 0 h C.e.0 0 0 0 v K.$ o.N.h.h.l.", -"l.g.b.;. X @ + @ + @ @ o O e 0 0 u y l m.q.u i t 0 v K.$ + + @ + @ + @ . X.N.s.h.h.", -"l.g.b.;. j F.z.c.x.l.S.O. O e 0 0 e.m.l.h.h.z.V.n 0 c H.& @ n.x.z.c.c.b.b.@ X.N.h.h.l.", -"h.h.c.;. 1 x.y.p.p.p.g. . O e 0 0 8.g.d.l.h.i.h.v 0 c K.& @ a.p.p.p.p.p.a.@ o.M.h.h.h.", -"l.g.c.;. . . . . . . . O e 0 0 r 0 k M.0.q r q 0 v K.$ . . . . . . . . X.N.g.l.h.", -"l.h.c.;. O e 0 0 0 0 f Z.e.0 0 0 0 x H.& X.N.g.h.l.", -"h.g.b.;. O e 0 0 0 0 p ,.N 0 q 0 0 x H.$ . . X.N.g.h.h.", -"h.h.z.p.X O e 0 0 0 0 0 0 0 0 0 0 0 V H.; -.v.h.h.l.", -"h.h.g.x.%.- & & = & & & & & = % * g f f f f f k f f f f B g.z.p.> $ & & & = & & & & ..b.h.h.h.h.", -"h.h.h.h.x.n.N.N.N.b.N.n.n.n.N.N.n.m.m.m.v.v.m.m.m.b.m.m.v.l.h.z.M.N.N.N.N.N.N.M.N.N.N.h.h.h.h.l.", -"l.h.l.h.h.h.h.g.g.h.g.h.h.g.h.g.g.h.h.g.j.h.h.h.j.h.h.h.g.h.l.h.g.h.h.g.s.h.h.g.g.g.h.h.h.h.h.h.", -"h.h.h.h.l.h.h.l.l.h.l.h.l.h.h.h.h.l.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.l.h.h.l.h.h.l.l.h.l.h.h.h.h.l.", -"h.l.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.l.h.h.h.h.h.h.h.h.h.h.l.h.h.l.h.h.h.h.h.h.h.h.h.h.h.h.h.j.h.h." +"*.*.,.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.;.*.*.*.", +"*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.=.*.*.*.*.*.*.*.*.", +"*.*.*.*.=.*.*.*.=.*.*.=.*.*.=.*.*.*.*.*.*.$.$.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.=.*.*.*.*.*.*.", +"*.*.*.*.>.<.<.<.>.<.<.<.<.<.<.>.<.5.5.5.5.5.5.5.5.5.1.5.1.*.*.:.,.*.,.,.,.*.*.>.,.>.;.>.*.*.*.*.", +"*.*.*.>.' e q w q q e q w q q w < # $ $ $ $ $ $ $ $ $ $ - =.*.*.W E E E W E E E E E E E *.*.*.*.", +"*.*.*.@.6 2 2 2 2 2 2 2 2 2 2 5 > ; 5.W T R R T T T R T T R R T +.:.*.*.", +"*.*.>.[ 2 2 2 2 2 8 8 3 2 2 2 4 > . . * 7.E T R R R R R R R R R R R +.,.*.*.", +"*.*.>.[ 2 2 2 2 6 #.>.9 2 2 2 5 > . . * 7.E R R R R R R R R R R R R $.=.*.*.", +"*.=.>.[ 2 4 2 2 3 @.>.8 2 2 2 4 > * 7.E T R R R R R R R R R R R $.,.,.*.", +",.*.>.[ 2 2 e f f =.*.Q f u 2 4 > = : ; ; ; ; H @ * 7.E R R R R R R R R R R R R +.*.*.*.", +"*.*.>.[ 2 2 ! 4.3.*.*.2.4.] 2 5 > +.q.0.0.0.0.q.- = 7.R T R R R R R R R R R R R $.*.*.*.", +"*.*.>.[ 2 2 r f f $.>.Q f y 2 5 > = : ; : ; ; : @ * 7.E T R R R R R R R R T R R +.,.*.*.", +"*.*.<.[ 2 2 2 2 3 #.>.8 2 2 2 4 > * 7.E T R R R R R R R R R R R $.=.*.*.", +"*.*.>.[ 2 2 4 2 3 #.>.8 2 2 2 4 > . . * 7.E R R R R R R R R R R R T +.,.*.*.", +"*.*.>.[ 2 2 2 2 2 8 8 3 2 2 2 5 > * 7.R T R R R R R R R R R R R $.*.*.*.", +"*.*.*.*.e 2 2 2 2 2 2 2 2 2 2 4 > . T ,.X.R T R T T R T T R T T T $.*.*.*.", +"*.*.*.*.*.' ) ) ) ) ) ) ) ) ) _ ~ P P P P P P P P P P P W ,.*.*.$.+.+.+.+.+.+.+.+.+.X.X.*.*.*.*.", +"*.*.*.*.:.&.%.%.&.%.&.%.&.%.%.%.>.-.-.-.-.-.-.-.-.-.-.-.>.*.*.<.=.#.#.#.#.#.#.#.#.#.<.>.*.*.*.*.", +"*.*.*.=.G x x x x x x x x x x x x x x x x x x x x x x z m ..,.] 8 3 6 3 3 6 3 3 3 3 i *.*.*.*.*.", +"*.*.,...k k h h k l k k k j k k k k k k h k k k k k k k g D 8.r 2 2 2 2 2 2 2 2 2 2 2 ' <.*.*.*.", +"*.*.:.| l k n v k l l l l m l l k l k l N k l l l k b n g A 8.q 2 2 2 2 0 a 0 2 2 2 2 ) <.$.*.*.", +"*.-.:.| k k n D l k l k A N h l k l l k B C h l j x D b g A 8.0 2 2 2 2 Q 4.f 2 3 2 2 ) <.=.*.*.", +"*.*.:.| k l j b D l j A N h l k l l l l h B C h c D c j h C 8.q 2 2 2 2 d 3.s 2 2 2 2 ( <.*.=.*.", +"*.*.:.| k l l h b A A m h l l l l k l k l h N A C v j x g C 8.q 2 8 [ [ @.*.@.] [ 8 2 ) <.*.*.*.", +"*.*.:.| l l l l h G U k k l l l l l l l k j x } C h l x h A 8.q 2 9 2.2.>.*.>.2.2.8 2 ) <.*.*.*.", +"*.*.:.| k l k k A n v D l k k l k l k l j c F x N C j l g C 8.q 2 6 q 0 ! 2.! 0 e 3 2 ) <.*.*.*.", +"*.*.>.| k l l A m j k b D x k l l l l k c F c k k B C k h Z 8.q 2 2 2 2 f 4.f 2 2 2 2 ^ <.*.*.*.", +"*.*.:.| k j B N j l l h n V k l l l l l C c j l l h B N g Z 2.q 2 2 2 2 p #.p 2 3 2 2 ) <.=.*.*.", +"*.*.:. .k k l j k k k k j k k k k k k k k j k k k k j l g S 8.0 2 2 2 2 2 2 2 2 2 2 2 ) <.*.*.*.", +"*.*.*.*.G x l x x x x x x x x x x x x x x x x x x x x x M ..<.w 4 4 4 4 4 4 4 4 4 4 4 ) >.=.*.*.", +"*.*.*.*.,.>.;.;.;.;.-.-.-.-.>.;.>.%.%.%.%.%.%.%.&.%.%.%.>.=.<.1 , , , , , , , , , , , ^ <.*.*.*.", +"*.*.=.,.*.Y P P P P P P P P P P I _ ) ) _ ) ) ) _ ( _ ( { &.5.$ L 5.*.*.*.", +"*.*.*.*.& O 5 2 2 2 2 2 2 2 2 2 2 3 ) 6.$ L 5.$.*.*.", +"*.*.,.E O 5 2 2 2 2 2 2 2 2 2 2 2 y 9.$ L 5.*.*.*.", +"*.=.1.E O 4 2 2 2 2 9 ' f 2 2 3 2 y 6.$ L 1.*.*.*.", +"*.*.,.E O 4 2 2 2 2 e 4.{ 2 2 2 2 u 9.$ P 5.*.*.*.", +"*.*.,.E X + + + + + + o O 5 2 2 7 7 t <.[ 7 8 6 2 y 9.$ + + + + + + + . L 5.$.*.*.", +"*.*.:.E H 7.*.;.,.,.7.P O 5 2 2 { <.>.*.*.,.2.p 2 y 9.$ + ,.,.:.,.,.;.,.+ P 5.*.*.*.", +"*.*.;.E ; ,.X.o.o.X.*.J O 5 2 2 ' $.#.*.*.@.*.i 2 y 9.$ + +.+.o.+.o.o.+.+ P 1.*.*.*.", +"*.*.,.E . . . . . . . O 5 2 2 3 2 e <.] 3 3 3 2 y 9.$ . . . . . . . X L 5.=.*.*.", +"*.*.,.E O 5 2 2 2 2 q 4.{ 2 2 2 2 i 9.$ P 5.$.*.*.", +"*.*.;.E O 5 2 2 2 2 8 ! a 2 3 2 2 u 9.@ L 5.*.*.*.", +"*.*.*.X.X O 4 2 2 2 2 2 2 2 2 2 2 2 s 9.* E ,.*.*.*.", +"*.*.*.,.T & $ $ & $ $ $ $ $ & # % w q w e q w e e q q q a =.,.+.= $ & $ $ & $ $ & $ K ,.*.*.*.*.", +"*.*.*.*.:.5.5.5.5.1.5.5.5.,.5.5.1.<.<.<.<.<.<.<.<.>.<.<.<.*.*.>.5.1.5.5.5.5.5.5.5.1.5.*.*.*.*.*.", +"*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.=.*.*.=.=.*.$.=.*.*.*.*.*.*.=.$.*.*.*.$.*.*.*.*.*.*.*.*.", +"*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.:.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.", +"*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.,.*.*.*." }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/magnets.sav sgt-puzzles-20160429.b31155b/icons/magnets.sav --- sgt-puzzles-20140928.r10274/icons/magnets.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/magnets.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,33 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :7:Magnets +PARAMS :6:6x5dtS +CPARAMS :6:6x5dtS +SEED :15:705856238774945 +DESC :56:2.2..1,.3.2.,2.21..,2..0.,TLRTLRBLRBTTLRLRBBLRTTTTLRBBBB +AUXINFO :60:ebae280db3eec279c628b6cfe4aca5a03ba24d7eba91169f1bdf275fce3f +NSTATES :2:24 +STATEPOS:2:15 +MOVE :4:.1,3 +MOVE :4:.0,1 +MOVE :4:?0,1 +MOVE :4:.2,1 +MOVE :4:?2,1 +MOVE :4:.2,4 +MOVE :4:?2,4 +MOVE :4:+2,3 +MOVE :4:.3,3 +MOVE :4:.0,2 +MOVE :4:?0,2 +MOVE :4:+1,4 +MOVE :4:+0,2 +MOVE :4:+0,0 +MOVE :4:+1,1 +MOVE :4:.2,2 +MOVE :4:+2,0 +MOVE :4:+3,1 +MOVE :4:.4,0 +MOVE :4:+5,1 +MOVE :4:.5,3 +MOVE :4:+4,3 +MOVE :4:.4,2 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/magnets-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/magnets-web.png differ diff -Nru sgt-puzzles-20140928.r10274/icons/Makefile sgt-puzzles-20160429.b31155b/icons/Makefile --- sgt-puzzles-20140928.r10274/icons/Makefile 2013-03-31 22:06:07.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/Makefile 2016-04-29 00:30:09.000000000 +0000 @@ -1,10 +1,10 @@ # Makefile for Puzzles icons. -PUZZLES = blackbox bridges cube dominosa fifteen filling flip galaxies \ - guess inertia keen lightup loopy magnets map mines net \ - netslide pattern pearl pegs range rect samegame signpost \ - singles sixteen slant solo tents towers twiddle undead \ - unequal unruly untangle +PUZZLES = blackbox bridges cube dominosa fifteen filling flip flood \ + galaxies guess inertia keen lightup loopy magnets map mines \ + net netslide palisade pattern pearl pegs range rect \ + samegame signpost singles sixteen slant solo tents towers \ + twiddle tracks undead unequal unruly untangle BASE = $(patsubst %,%-base.png,$(PUZZLES)) WEB = $(patsubst %,%-web.png,$(PUZZLES)) @@ -27,6 +27,10 @@ BIN = ../ PIC = ./ +# Work around newer ImageMagick unilaterally distorting colours when +# converting to PNG. +CSP = -set colorspace RGB + base: $(BASE) web: $(WEB) pngicons: $(P48D24) $(P32D24) $(P16D24) @@ -69,6 +73,7 @@ mines-ibase.png : override CROP=240x240 110x110+130+130 net-ibase.png : override CROP=193x193 113x113+0+80 netslide-ibase.png : override CROP=289x289 144x144+0+0 +palisade-ibase.png : override CROP=288x288 192x192+0+0 pattern-ibase.png : override CROP=384x384 223x223+0+0 pearl-ibase.png : override CROP=216x216 94x94+108+15 pegs-ibase.png : override CROP=263x263 147x147+116+0 @@ -81,6 +86,7 @@ solo-ibase.png : override CROP=481x481 145x145+24+24 tents-ibase.png : override CROP=320x320 165x165+142+0 towers-ibase.png : override CROP=300x300 102x102+151+6 +tracks-ibase.png : override CROP=246x246 118x118+6+6 twiddle-ibase.png : override CROP=192x192 102x102+69+21 undead-ibase.png : override CROP=416x480 192x192+16+80 unequal-ibase.png : override CROP=208x208 104x104+104+104 @@ -92,7 +98,7 @@ # seems to work better than reducing it in 24 bits and then # dithering. $(IBASE4): %-ibase4.png: %-ibase.png - convert -colors 16 +dither -map $(PIC)win16pal.xpm $^ $@ + convert -colors 16 +dither $(CSP) -map $(PIC)win16pal.xpm $^ $@ # Build the 24-bit PNGs for the icons, at three sizes. $(P48D24): %-48d24.png: %-ibase.png @@ -114,15 +120,15 @@ # much...) $(P48D4): %-48d4.png: %-ibase4.png $(PIC)square.pl 48 1 $^ $@-tmp2.png - convert -colors 16 -map $(PIC)win16pal.xpm $@-tmp2.png $@ + convert -colors 16 $(CSP) -map $(PIC)win16pal.xpm $@-tmp2.png $@ rm -f $@-tmp2.png $(P32D4): %-32d4.png: %-ibase.png $(PIC)square.pl 32 1 $^ $@-tmp2.png - convert -colors 16 -map $(PIC)win16pal.xpm $@-tmp2.png $@ + convert -colors 16 $(CSP) -map $(PIC)win16pal.xpm $@-tmp2.png $@ rm -f $@-tmp2.png $(P16D4): %-16d4.png: %-ibase.png $(PIC)square.pl 16 1 $^ $@-tmp2.png - convert -colors 16 -map $(PIC)win16pal.xpm $@-tmp2.png $@ + convert -colors 16 $(CSP) -map $(PIC)win16pal.xpm $@-tmp2.png $@ rm -f $@-tmp2.png # Build the actual Windows icons themselves, by feeding all those Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/map-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/map-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/map-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/map-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/map-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/map-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/map-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/map-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/map-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/map-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/map-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/map-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/map-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/map-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/map-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/map-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/map-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/map-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/map-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/map-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/map-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/map-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/map-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/map-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/map.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/map.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/map-icon.c sgt-puzzles-20160429.b31155b/icons/map-icon.c --- sgt-puzzles-20140928.r10274/icons/map-icon.c 2014-09-29 00:33:43.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/map-icon.c 2016-04-29 00:31:43.000000000 +0000 @@ -1,588 +1,635 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 226 2 ", -" c #DBD9D4", -". c #D3D2CB", -"X c #D1D1C9", -"o c #D1D3CA", -"O c #D1D4CA", -"+ c #D1CFC9", -"@ c #D2CEC8", -"# c #D4D2CC", -"$ c #D7D6D1", -"% c #D4D0CA", -"& c #D5D1C8", -"* c #D6D2C9", -"= c #D6D3CA", -"- c #82986A", -"; c #829B69", -": c #839469", -"> c #828964", -", c #8B7A60", -"< c #886F56", -"1 c #C0B9AF", -"2 c #DFE1DF", -"3 c #B79D8D", -"4 c #C1A563", -"5 c #CCB66E", -"6 c #C9B26D", -"7 c #C9B16A", -"8 c #C6B273", -"9 c #D7D4CC", -"0 c #D5D4CE", -"q c #ABB59D", -"w c #809868", -"e c #817355", -"r c #8B6E57", -"t c #876D53", -"y c #AFA293", -"u c #DFDED9", -"i c #DAD8D2", -"p c #B48C78", -"a c #BC9A5C", -"s c #CBB364", -"d c #C9AF63", -"f c #CEB562", -"g c #C9B26C", -"h c #D6D4CC", -"j c #D7D5D1", -"k c #DEDAD9", -"l c #C9C8C1", -"z c #C8C4BC", -"x c #CDC9C1", -"c c #C5C1BB", -"v c #D4D3CE", -"b c #E2E4E2", -"n c #C3B4A9", -"m c #AC765B", -"M c #B28167", -"N c #B18363", -"B c #B08164", -"V c #BD9D61", -"C c #CDB86F", -"Z c #D8D6D1", -"A c #CFCEC8", -"S c #DAD8D4", -"D c #E0DEDA", -"F c #CECDC8", -"G c #B1A799", -"H c #8E7861", -"J c #A97A60", -"K c #B98268", -"L c #B47F66", -"P c #B37F67", -"I c #B17B62", -"U c #A98E65", -"Y c #D4D3CB", -"T c #D1CFCB", -"R c #DCDAD5", -"E c #D9D6D1", -"W c #D3D1CD", -"Q c #D7D7D4", -"! c #B0A59C", -"~ c #886A51", -"^ c #A67A61", -"/ c #A78063", -"( c #B18266", -") c #A88164", -"_ c #8E825D", -"` c #937562", -"' c #D2D1CB", -"] c #CFCDC8", -"[ c #DEDCD6", -"{ c #D9D8D5", -"} c #D3D0C7", -"| c #CCB779", -" . c #C8BF98", -".. c #847A5D", -"X. c #867055", -"o. c #788C5E", -"O. c #8C7458", -"+. c #8C8962", -"@. c #799C64", -"#. c #898063", -"$. c #D5CFCB", -"%. c #D7D5D0", -"&. c #D5D3CE", -"*. c #D1CFCA", -"=. c #CCC9C6", -"-. c #CAC3B3", -";. c #C2A95E", -":. c #BEA25A", -">. c #8E805C", -",. c #789162", -"<. c #809565", -"1. c #7E885D", -"2. c #7B9262", -"3. c #7D8E5F", -"4. c #8C7B62", -"5. c #D5D0CB", -"6. c #DBDBD7", -"7. c #B3A99C", -"8. c #8D765A", -"9. c #8D7258", -"0. c #A87A61", -"q. c #959462", -"w. c #819C65", -"e. c #79875F", -"r. c #896F57", -"t. c #897055", -"y. c #917962", -"u. c #D4D1CB", -"i. c #DBDAD6", -"p. c #E2E1DD", -"a. c #E3E2DE", -"s. c #C9C0B9", -"d. c #8C735A", -"f. c #8C7359", -"g. c #8D755A", -"h. c #8B6D58", -"j. c #B7955E", -"k. c #BFB064", -"l. c #A7975D", -"z. c #88805A", -"x. c #887056", -"c. c #917B63", -"v. c #C1BAB1", -"b. c #C8C1B8", -"n. c #B3AC9F", -"m. c #84795B", -"M. c #897257", -"N. c #8B7059", -"B. c #876F58", -"V. c #866C57", -"C. c #AF975E", -"Z. c #D5BA68", -"A. c #D0B766", -"S. c #889360", -"D. c #886E56", -"F. c #927862", -"G. c #D1CEC8", -"H. c #8A735B", -"J. c #876B51", -"K. c #847153", -"L. c #789461", -"P. c #7C9062", -"I. c #90835A", -"U. c #AA915B", -"Y. c #A87C60", -"T. c #B99263", -"R. c #CAB365", -"E. c #CDB366", -"W. c #91945F", -"Q. c #7D7055", -"!. c #898665", -"~. c #927A61", -"^. c #8A6D59", -"/. c #987C5F", -"(. c #7E9966", -"). c #879D65", -"_. c #CFBA66", -"`. c #C1A064", -"'. c #AD7965", -"]. c #B39060", -"[. c #CDB466", -"{. c #C8B065", -"}. c #89955E", -"|. c #7E9B6F", -" X c #D4D3CC", -".X c #D3CCC9", -"XX c #B48E66", -"oX c #BFA75D", -"OX c #A18659", -"+X c #B67E63", -"@X c #A38061", -"#X c #779061", -"$X c #98925A", -"%X c #BD985F", -"&X c #B1875F", -"*X c #CAB262", -"=X c #CCB264", -"-X c #D0B565", -";X c #C7B060", -":X c #A0A068", -">X c #D8D1CB", -",X c #A4836D", -" c #DADCD9", +", c #83996C", +"< c #829B6A", +"1 c #84956A", +"2 c #838A65", +"3 c #8C7B61", +"4 c #886F56", +"5 c #C7C1BB", +"6 c #EAEEF2", +"7 c #BCA294", +"8 c #C1A663", +"9 c #CDB770", +"0 c #CAB36E", +"q c #CAB26B", +"w c #C8B476", +"e c #E0DFDC", +"r c #DFDFDF", +"t c #B1BBA6", +"y c #819969", +"u c #817355", +"i c #8B6E57", +"p c #866D52", +"a c #B4A89B", +"s c #E9EAEB", +"d c #E4E4E3", +"f c #B68E7C", +"g c #BC995B", +"h c #CBB364", +"j c #C9AF63", +"k c #CEB561", +"l c #CAB36E", +"z c #E0DFDB", +"x c #E1E1E1", +"c c #E9E7EB", +"v c #D1D3D0", +"b c #D0CECA", +"n c #D6D3D0", +"m c #CECBC9", +"M c #DEDEDF", +"N c #EDF2F5", +"B c #CABCB4", +"V c #AB755A", +"C c #B28168", +"Z c #B18364", +"A c #B08164", +"S c #BD9D60", +"D c #CEB970", +"F c #E0DFDC", +"G c #E2E2E2", +"H c #D9D9D8", +"J c #E4E4E5", +"K c #EAEBEB", +"L c #EAEBEC", +"P c #E0E1E1", +"I c #D8D8D8", +"U c #B7ADA3", +"Y c #8F7962", +"T c #A97A60", +"R c #B98269", +"E c #B47F66", +"W c #B37F67", +"Q c #B17B61", +"! c #A99067", +"~ c #DEDEDB", +"^ c #E2E2E2", +"/ c gray86", +"( c #E6E6E6", +") c #E6E6E6", +"_ c #E3E2E2", +"` c #DDDDDD", +"' c #E1E3E5", +"] c #B6ACA5", +"[ c #886950", +"{ c #A67A61", +"} c #A78063", +"| c #B18266", +" . c #A88164", +".. c #8D825C", +"X. c #947664", +"o. c #DBDCDB", +"O. c #E2E2E2", +"+. c #D8D8D8", +"@. c gray90", +"#. c #E8E8E7", +"$. c #E3E4E6", +"%. c #DCDBD6", +"&. c #CDB97D", +"*. c #CCC5A0", +"=. c #847A5E", +"-. c #866F55", +";. c #788C5E", +":. c #8C7458", +">. c #8C8962", +",. c #799B64", +"<. c #8A8164", +"1. c #DFDBDB", +"2. c gray88", +"3. c #D8D8D8", +"4. c gray87", +"5. c #DADADA", +"6. c #D5D4D5", +"7. c #D1CCC0", +"8. c #C1A95E", +"9. c #BEA159", +"0. c #8E805C", +"q. c #789062", +"w. c #809565", +"e. c #7E885D", +"r. c #7B9262", +"t. c #7D8E5E", +"y. c #8D7C63", +"u. c #DEDCDB", +"i. c #E1E1E1", +"p. c #E2E2E1", +"a. c #E4E3E3", +"s. c #E6E7E8", +"d. c #B9B0A6", +"f. c #886F55", +"g. c #8D765B", +"h. c #8D7259", +"j. c #A77A61", +"k. c #949462", +"l. c #819C65", +"z. c #79875F", +"x. c #896F57", +"c. c #887055", +"v. c #927A64", +"b. c #DDDCDB", +"n. c #E1E1E1", +"m. c #E6E7E8", +"M. c #ECEEEF", +"N. c #EEEFF0", +"B. c #D0CAC7", +"V. c #8C735A", +"C. c #8C7359", +"Z. c #8D755A", +"A. c #8B6D58", +"S. c #B7955E", +"D. c #BFB064", +"F. c #A7975D", +"G. c #88815A", +"H. c #887056", +"J. c #927C64", +"K. c #DDDCDB", +"L. c #DFDFDE", +"P. c #C8C3BE", +"I. c #D0CAC5", +"U. c #B9B3A9", +"Y. c #847A5C", +"T. c #897257", +"R. c #8B7059", +"E. c #876F58", +"W. c #866B57", +"Q. c #AF975E", +"!. c #D5BA68", +"~. c #D0B766", +"^. c #889360", +"/. c #886E55", +"(. c #937963", +"). c #DDDCDB", +"_. c #DBD9D7", +"`. c #8A735C", +"'. c #876B50", +"]. c #837052", +"[. c #789461", +"{. c #7C9062", +"}. c #90835A", +"|. c #AA905B", +" X c #A77C60", +".X c #B99163", +"XX c #CAB365", +"oX c #CDB366", +"OX c #90945F", +"+X c #7D7055", +"@X c #8A8766", +"#X c #DDDDDB", +"$X c #DBD9D8", +"%X c #937B62", +"&X c #8C7458", +"*X c #8A6D5A", +"=X c #987C5F", +"-X c #7E9967", +";X c #879D65", +":X c #CFBA66", +">X c #C1A065", +",X c #AD7965", +" , < 1 2 3 4 5 6 7 8 9 ", -"0 q w e r t y u i p a s d f g h ", -"j k l z x c v b n m M N B V C 9 ", -"Z A S D D j F G H J K L P I U Y ", -"Z T R R E W Q ! ~ ^ / ( ) _ ` ' ", -"Z ] [ { } | ...X.o.O.+.@.#.$.", -"%.] &.*.=.-.;.:.>.,.<.1.2.3.4.5.", -"%.Z i 6.7.< 8.9.0.q.w.e.r.t.y.u.", -"j i.p.a.s.d.f.g.h.j.k.l.z.x.c.u.", -"&.v.b.n.m.M.N.B.V.C.Z.A.S.D.F.u.", -"G.H.J.K.L.P.I.U.Y.T.R.E.W.Q.!.. ", -"@ ~.O.^./.(.)._.`.'.].[.{.}.|. X", -".XXXoXOX+X@X#X$X%X&X*X=X-X;X:XY ", -">X,X , < 1 2 3 4 5 6 7 8 9 0 q w e ", +"r t y u i p a s d f g h j k l z ", +"x c v b n m M N B V C Z A S D F ", +"G H J K L P I U Y T R E W Q ! ~ ", +"^ / ( ) _ ` ' ] [ { } | ...X.o.", +"O.+.@.#.$.%.&.*.=.-.;.:.>.,.<.1.", +"2.3.4.5.6.7.8.9.0.q.w.e.r.t.y.u.", +"i.p.a.s.d.f.g.h.j.k.l.z.x.c.v.b.", +"n.m.M.N.B.V.C.Z.A.S.D.F.G.H.J.K.", +"L.P.I.U.Y.T.R.E.W.Q.!.~.^./.(.).", +"_.`.'.].[.{.}.|. X.XXXoXOX+X@X#X", +"$X%X&X*X=X-X;X:X>X,X c #8C745A", -", c #927956", -"< c #9D7C56", -"1 c #91725A", -"2 c #9B735B", -"3 c #947E5E", -"4 c #9B7C5F", -"5 c #A2745D", -"6 c #A9755C", -"7 c #A27E5C", -"8 c #AA795F", -"9 c #B0785C", -"0 c #8B7660", -"q c #9F7E60", -"w c #917D68", -"e c #A47C62", -"r c #AC7C63", -"t c #A97D68", -"y c #B17660", -"u c #B37E66", -"i c #B57F68", -"p c #76865C", -"a c #7A855C", -"s c #758C5D", -"d c #7B8B5E", -"f c #7C925F", -"g c #7C8E60", -"h c #749762", -"j c #7C9464", -"k c #7D9A66", -"l c #7C9368", -"z c #7D9E69", -"x c #7DA069", -"c c #8B8256", -"v c #81815B", -"b c #88855E", -"n c #818B5E", -"m c #8C955F", -"M c #8E995F", -"N c #92965D", -"B c #92985F", -"V c #AD825F", -"C c #A18958", -"Z c #AB8B59", -"A c #B18D5E", -"S c #A69157", -"D c #A39E5E", -"F c #A99F5F", -"G c #B4945E", -"H c #B29C5D", -"J c #BA9F5D", -"K c #BAA25D", -"L c #809765", -"P c #819A66", -"I c #8D9960", -"U c #82976A", -"Y c #829B69", -"T c #919B61", -"R c #8E8671", -"E c #9C8E7E", -"W c #869970", -"Q c #899976", -"! c #AD8260", -"~ c #AE826B", -"^ c #B48066", -"/ c #B88166", -"( c #B28B61", -") c #B68268", -"_ c #BC8169", -"` c #A79261", -"' c #B69E64", -"] c #BA9860", -"[ c #A48674", -"{ c #AEA165", -"} c #B5A560", -"| c #BCA363", -" . c #BFAA60", -".. c #B4A36C", -"X. c #BDAA6C", -"o. c #C4AB5D", -"O. c #C2A661", -"+. c #C3AC64", -"@. c #C9AE63", -"#. c #C4AD6A", -"$. c #C7B164", -"%. c #CCB365", -"&. c #C6B16B", -"*. c #CDB469", -"=. c #CFB868", -"-. c #D2B666", -";. c #D3BA67", -":. c #D0B668", -">. c #D3BC69", -",. c #A39585", -"<. c #B69786", -"1. c #A69C90", -"2. c #A99D90", -"3. c #ACA193", -"4. c #B0A599", -"5. c #B2A99D", -"6. c #B6AEA5", -"7. c #BEB6A3", -"8. c #B6B3AA", -"9. c #BEB4AB", -"0. c #B9BDAF", -"q. c #C3B489", -"w. c #C4B7AD", -"e. c #C1BCB3", -"r. c #CABCB2", -"t. c #CCC5B3", -"y. c #CFC8B4", -"u. c #C5C2BC", -"i. c #C7C5C1", -"p. c #CAC6C0", -"a. c #CECCC6", -"s. c #CFCDC9", -"d. c #D2CEC6", -"f. c #D1CFCA", -"g. c #D3D1CC", -"h. c #D6D5D2", -"j. c #D8D6D1", -"k. c #DCDAD5", -"l. c #DEDDD8", -"z. c #E0DDD9", -"x. c #E2E1DD", -"c. c #E4E4E2", -"v. c #E9EAE7", +"32 32 155 2 ", +" c #77734E", +". c #7D6C50", +"X c #7D7656", +"o c #7C7957", +"O c #7C7759", +"+ c #7C7D59", +"@ c #84674C", +"# c #83694E", +"$ c #856D54", +"% c #8A6E55", +"& c #856F5A", +"* c #8C6F5A", +"= c #926D55", +"- c #926F58", +"; c #847255", +": c #8B7256", +"> c #8F7855", +", c #86755D", +"< c #8C745A", +"1 c #927956", +"2 c #9D7B55", +"3 c #90735B", +"4 c #9B735B", +"5 c #947E5E", +"6 c #9B7C5F", +"7 c #A4745C", +"8 c #AC765B", +"9 c #A47C5D", +"0 c #AA7A5E", +"q c #8D7760", +"w c #9F7E60", +"e c #927F6B", +"r c #A37D61", +"t c #AC7C63", +"y c #A67A68", +"u c #AA7E69", +"i c #B17660", +"p c #B37E66", +"a c #B57F68", +"s c #76865C", +"d c #7A855C", +"f c #748C5C", +"g c #7B8B5E", +"h c #7B915E", +"j c #7C8E60", +"k c #749762", +"l c #7C9464", +"z c #7E9A66", +"x c #7E9369", +"c c #7D9C68", +"v c #7DA069", +"b c #8B8256", +"n c #84845D", +"m c #88835C", +"M c #828C5E", +"N c #8C945F", +"B c #8E995F", +"V c #92965C", +"C c #92985F", +"Z c #AD825F", +"A c #A08858", +"S c #AB8B59", +"D c #B08D5E", +"F c #A69057", +"G c #A39E5E", +"H c #A89F5F", +"J c #B4945E", +"K c #B29C5D", +"L c #BA9E5D", +"P c #B4A35F", +"I c #B9A15D", +"U c #809765", +"Y c #819A67", +"T c #8D9960", +"R c #829B6A", +"E c #919B61", +"W c #918976", +"Q c #879A72", +"! c #8C9C7B", +"~ c #AD8260", +"^ c #AE836C", +"/ c #B48066", +"( c #B88066", +") c #B28B61", +"_ c #B48269", +"` c #BC8169", +"' c #A89362", +"] c #B69E66", +"[ c #B99B62", +"{ c #AF8670", +"} c #A68978", +"| c #AFA267", +" . c #B4A560", +".. c #BCA362", +"X. c #BFAA60", +"o. c #B5A56E", +"O. c #BCA768", +"+. c #BEAA6C", +"@. c #BDAB71", +"#. c #C1A75F", +"$. c #C3AA5C", +"%. c #C1A465", +"&. c #C3AC65", +"*. c #C8AE63", +"=. c #C4AE6B", +"-. c #C6B163", +";. c #CCB365", +":. c #C6B16B", +">. c #CCB46A", +",. c #CFB868", +"<. c #D2B666", +"1. c #D3BA66", +"2. c #D0B669", +"3. c #D2BA69", +"4. c #9F9285", +"5. c #A79A8C", +"6. c #B99B8C", +"7. c #ACA297", +"8. c #ADA398", +"9. c #B1A79C", +"0. c #B3A99E", +"q. c #B6ADA4", +"w. c #B8B0A7", +"e. c #BDB5AE", +"r. c #BDBAB5", +"t. c #C6B98F", +"y. c #C4BEAE", +"u. c #C5BCB7", +"i. c #CBBFB9", +"p. c #C1C5BC", +"a. c #C8C3BF", +"s. c #D1C5BF", +"d. c #CAC6C1", +"f. c #CDC9C6", +"g. c #CDCDCC", +"h. c #D3CEC0", +"j. c #D6D1C1", +"k. c #D3D1CF", +"l. c #D5D5D4", +"z. c #D9D6D5", +"x. c #D7D8D6", +"c. c #DBD9D6", +"v. c #D6D6D9", +"b. c #D8D7D9", +"n. c #DCDCDC", +"m. c #DEDEE1", +"M. c #DFE1E2", +"N. c #E5E5E5", +"B. c #E8E8E7", +"V. c #E5E6E9", +"C. c #E5E8EA", +"Z. c #E9E9E9", +"A. c #EEEFF0", +"S. c #EEF1F3", +"D. c #F3F6FA", /* pixels */ -"k.k.z.z.z.z.z.z.z.z.z.x.k.x.l.k.k.l.l.x.z.k.z.z.l.l.l.l.z.k.k.k.", -"k.j.a.a.a.a.a.a.a.a.a.a.a.a.g.g.g.g.f.a.d.d.d.d.d.d.d.d.d.g.k.k.", -"z.a.l k k L L k k j o > > @ E j.d.h.w.5 ' &.+.+.+.+.#.+.+.X.g.k.", -"z.a.j P L L k O X X = 1 > + 4.x.j.x.r.6 O.=.%.%.%.=.-.%.-.&.g.l.", -"l.f.Q U j Y a & > > 1 > + 1.x.j.j.c.w.6 } =.%.*.*.%.%.*.%.#.g.k.", -"k.g.g.a.W s + @ @ @ @ + 1.x.k.k.z.p.~ u ! O.%.$.@.%.%.%.%.#.g.k.", -"l.g.g.x.g.0.8.e.e.e.8.u.l.k.k.j.x.<.9 ^ u r ! ! ! V K =.%.#.g.x.", -"l.g.g.l.g.f.j.x.x.l.f.g.a.i.f.x.l.[ u ^ ^ ^ ^ ^ ^ i r K ;.&.g.k.", -"k.g.g.f.f.k.k.h.j.k.k.h.p.f.i.s.,.+ 2 ^ ^ u ^ ^ u ^ i r J | g.l.", -"l.g.f.f.k.k.k.k.k.k.h.p.a.h.3.+ - - 2 ^ ^ ^ ^ ^ ^ ^ i / & : g.k.", -"k.g.f.f.k.k.k.k.k.k.p.l.h.h.9.+ > # ^ ) ^ ^ / ^ ^ e a r 2 0 g.l.", -"l.g.f.a.k.k.k.k.k.j.a.x.g.i.v.5.- > * 5 4 q 4 u / q h 3 # : g.l.", -"l.g.f.f.k.k.k.k.k.k.p.k.q.X.g.a.@ # > @ a z s r r n L z O % g.l.", -"k.g.f.f.l.k.k.l.k.a.h.t.o.*.&...s . * = L a @ + a x L P a > g.l.", -"l.f.u.i.p.h.l.f.p.g.c.y.$.*.;.o.b o o j x a X X d P L z X 0 g.l.", -"l.g.g.k.k.p.f.u.f.a.f.7.K o.O.H 9 b x L L P L z j d j O # > f.l.", -"k.g.g.k.k.k.f.j.u.= > - - @ ; + r e j h k L L a @ = = > - > g.l.", -"z.g.g.z.k.k.k.z.j.w @ > > > > - 5 _ V D m k j $ > * > > - 0 g.l.", -"k.g.g.k.k.k.k.k.x.f.0 > > - > > @ 2 < -.o.B n ; = = ; > > 0 g.l.", -"k.g.d.k.k.j.j.j.k.5.- # > > > > > $ ; %.-.-.@.%.M p # > # : g.l.", -"z.g.j.c.x.x.v.6.% # - > > > > > > > , %.%.*.%.-.T a # > > 0 g.z.", -"z.f.1.3.3.3.4.R . O . # 1 > # > - # , $.%.%.$.-.T a > > ; > g.l.", -"z.a.+ @ @ @ + . x P k . = = > @ & ^ ! *.%.%.*.%.I p # > # : g.z.", -"l.d.> > 1 > > = d Y L L s H @.o.A u u G %.%.%.%.} g . @ d l g.k.", -"l.a.> > > # > > @ n k L k D -.-.*.! ^ u V G %.%.=.} d j P U g.z.", -"l.d.# > > = > # u r d P L j F -.%.A u r 8 A *.%.%.-.} j k L g.l.", -"l.d.r A %.C @ & ^ ) r n z k N $.$.A r G %.%.%.%.*.$.=.} f l g.l.", -"l.d.r ] >.%.K H 8 i ^ r n z O > $.( r K =.*.%.%.%.%.%.*.O.{ g.k.", -"z.d.r C S %.-.;.K r ^ / 6 N c @ Z V i 9 O.-.%.%.%.%.-.%.;.&.g.z.", -"l.f.t % 0 +.#.&.| t ~ ~ t | ` $ e ~ ~ t ' &.#.#.#.#.#.#.+.X.g.k.", -"k.k.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.k.k.", -"k.k.k.l.k.x.k.l.l.l.l.l.k.l.l.l.l.l.l.l.l.l.z.z.k.l.k.z.z.k.k.k." +"N.N.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.C.Z.B.Z.Z.Z.C.Z.Z.Z.Z.Z.Z.Z.Z.Z.B.N.", +"N.N.x.x.c.x.x.c.x.x.x.z.z.c.c.n.n.n.c.z.c.c.c.c.c.c.c.n.c.c.N.N.", +"Z.x.x U z z z x z x O < , $ 4.N.b.N.u.7 ] ;.&.&.=.&.&.&.&.+.n.Z.", +"Z.c.l z U Y z + X o ; < 3 # q.S.N.A.d.8 %.<.;.;.;.;.<.;.<.:.n.Z.", +"Z.c.! R l Y + * < < 3 < # 8.C.N.N.A.a.7 ..<.;.>.>.;.;.>.;.=.n.B.", +"Z.n.m.c.Q f . % $ $ % # 7.A.N.N.Z.k._ / ~ #.;.-.*.;.;.;.<.=.n.Z.", +"Z.n.n.Z.n.p.r.d.d.d.r.f.Z.Z.Z.N.Z.6.8 / p t ~ ~ ~ 0 I 3.;.=.n.Z.", +"Z.n.n.B.n.z.N.A.Z.A.c.n.v.g.c.Z.C.} p / / / / / / _ t I <.:.n.Z.", +"Z.n.n.n.c.N.N.N.N.N.N.M.l.x.k.z.5.# 4 / / / / / / / / t L O.n.B.", +"Z.n.c.v.Z.N.Z.N.N.N.n.l.l.M.0.. : : 4 / ~ / / / / / p _ = , n.B.", +"Z.n.n.v.Z.N.N.N.N.N.l.B.N.M.u.# < % / _ / ` / / / r n t 4 q n.Z.", +"Z.n.n.b.N.N.Z.N.B.N.b.Z.n.k.D.w.$ < - 7 6 w 6 / ` 6 k 5 : < n.Z.", +"C.n.n.b.Z.N.Z.N.N.N.x.C.t.+.n.x.$ < < $ s z f 0 r g z z + < n.Z.", +"Z.n.c.b.C.N.N.C.B.z.N.s.$.;.:.o.f X = ; z d # % d c Y R + < n.Z.", +"Z.n.g.k.l.n.Z.c.z.n.S.s.-.1.1.$.n o o l Y d , o g Y Y z o q n.Z.", +"Z.n.n.Z.N.l.n.g.b.z.v.u.I $.I P i n c Y Y c z Y l g l + % q n.Z.", +"B.n.n.B.B.N.n.M.g.$ < < : % : $ p 9 l l z U Y d $ $ ; : : q n.Z.", +"B.n.n.B.N.N.B.B.N.e $ < < < < : 4 ` A G N z l $ 3 < 3 < : q n.Z.", +"Z.n.n.B.N.N.N.N.Z.c.q : < : < < & 4 9 2.*.V M > ; X < < : q n.Z.", +"B.n.n.N.N.N.N.N.V.q.: : < < : < < $ > *.;.<.;.;.B s * : : q n.Z.", +"Z.n.V.S.S.Z.D.y., % : < : < < : < < 1 ;.;.;.>.;.E d : < : 3 n.Z.", +"Z.b.8.0.9.9.q.W X O ; : < < < < : % 1 ;.;.;.;.;.E d : < 3 q n.Z.", +"Z.z.$ @ $ # @ X v Y l o $ : > $ = a / ;.;.;.;.;.T s * < $ , n.Z.", +"Z.z.< < < < < ; g Y Y z g H *.&.D p t J ;.,.;.;. .g O $ g U n.Z.", +"Z.b.< < < < < < $ M Y Y z G 1.2.-.Z _ t Z J ;.;.3. .g l Y R n.B.", +"Z.z.: = > % < % t t g Y U l H <.;.) a t t J ;.;.;.<. .l z R n.Z.", +"Z.c.y D ;.A $ * _ / t g z x C -.;.) i J ;.;.;.;.;.;.<.P g x n.Z.", +"Z.c.u [ 1.;.P J t / p t M c + : -.) t P ,.;.;.;.:.;.;.>.I o.n.B.", +"Z.c.t 2 F ;.<.1.L t / ` 7 V b $ S Z / 0 %.;.;.;.;.;.;.;.1.>.n.C.", +"Z.c.^ < < :.:.:.O.u _ ^ u %.' , y ^ _ u ..:.:.=.:.=.=.:.:.+.n.Z.", +"Z.N.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.B.B.", +"N.N.Z.Z.Z.C.Z.Z.B.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.C.Z.Z.Z.Z.B.Z.Z.Z.Z.Z.N.N." }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 101 2 ", +"48 48 106 2 ", " c #7B684F", -". c #7E6A51", +". c #7E6A52", "X c #767554", -"o c #797755", +"o c #787755", "O c #767855", -"+ c #797855", -"@ c #83694E", -"# c #8A6750", +"+ c #82674C", +"@ c #89664F", +"# c #82694D", "$ c #846D54", -"% c #8C6D55", -"& c #846F59", -"* c #906954", -"= c #877056", -"- c #897157", -"; c #86715A", -": c #8C735A", -"> c #877C5A", -", c #8A7B5A", -"< c #90765C", -"1 c #9D735B", -"2 c #A2755C", -"3 c #AD775C", -"4 c #A6785F", -"5 c #AA7A5F", -"6 c #A27761", -"7 c #A47961", -"8 c #AB7B63", -"9 c #A57D68", -"0 c #AC7F68", -"q c #B27E65", -"w c #74865A", -"e c #758A5C", -"r c #788E5F", -"t c #77915E", -"y c #79905F", -"u c #778A61", -"i c #7A8E61", -"p c #769564", -"a c #7B9363", -"s c #7D9965", -"d c #7F9568", -"f c #9C8655", -"g c #92935A", -"h c #A9875A", -"j c #AA8A5A", -"k c #AE9759", -"l c #AE9A59", -"z c #B29B5B", -"x c #B7A15B", -"c c #BDA55F", -"v c #BEA85F", -"b c #819A66", -"n c #809769", -"m c #839D69", -"M c #AE8069", -"N c #B48166", +"% c #8B6C55", +"& c #836E58", +"* c #877056", +"= c #897157", +"- c #86705A", +"; c #8C735A", +": c #867C5A", +"> c #897A59", +", c #90765C", +"< c #9E735A", +"1 c #A2755C", +"2 c #A6785F", +"3 c #AA7A5F", +"4 c #AC765A", +"5 c #A27761", +"6 c #A47962", +"7 c #AB7B63", +"8 c #A67F6B", +"9 c #AC7F68", +"0 c #B27E65", +"q c #74865A", +"w c #758A5C", +"e c #798E5F", +"r c #77905D", +"t c #79905F", +"y c #798E61", +"u c #769564", +"i c #7B9363", +"p c #7D9965", +"a c #7E9468", +"s c #9B8555", +"d c #8F915A", +"f c #92925A", +"g c #A8875A", +"h c #A9895A", +"j c #AE9759", +"k c #AE9A59", +"l c #B29C5C", +"z c #B7A15B", +"x c #BDA65F", +"c c #BEA85F", +"v c #819A66", +"b c #809669", +"n c #839D69", +"m c #AF8169", +"M c #B48166", +"N c #B88267", "B c #B78268", "V c #B98469", -"C c #B39E61", -"Z c #B5A165", -"A c #BDA660", -"S c #BFA965", -"D c #C1A95F", -"F c #C9AF5D", -"G c #C0A760", -"H c #C2AA63", -"J c #C9AF61", -"K c #C3AC68", -"L c #CDB366", -"P c #CFB668", -"I c #D1B666", -"U c #D2B867", -"Y c #D0B768", -"T c #D3B969", -"R c #9C8F81", -"E c #9E9284", -"W c #A09487", -"Q c #A2978A", -"! c #A4998D", -"~ c #B19B8D", -"^ c #9AA48C", -"/ c #BAAD87", -"( c #BBAF8A", -") c #BBB08D", -"_ c #BEBBB5", -"` c #C0BDB7", -"' c #C1BEB9", -"] c #C3C2BD", -"[ c #C7C6C1", -"{ c #CAC7C1", -"} c #CECCC7", -"| c #CFCDC9", -" . c #D0CDC7", -".. c #D0CEC9", -"X. c #D3D1CC", -"o. c #D7D5D0", -"O. c #D9D7D2", -"+. c #DCDAD5", -"@. c #DFDDD8", -"#. c #E0DED9", -"$. c #E3E1DC", +"C c #B39E62", +"Z c #B5A062", +"A c #BEA661", +"S c #BFA962", +"D c #B7A469", +"F c #C0A75F", +"G c #C1AA5F", +"H c #C8AE5C", +"J c #C0A760", +"K c #C1AA65", +"L c #C8AF60", +"P c #C2AC68", +"I c #CDB366", +"U c #CEB668", +"Y c #D1B666", +"T c #D2B867", +"R c #D0B768", +"E c #D3B969", +"W c #9F9387", +"Q c #A1968A", +"! c #A3988E", +"~ c #A69C92", +"^ c #A89E94", +"/ c #B59F94", +"( c #9EA993", +") c #BEB28E", +"_ c #B5A095", +"` c #BFB493", +"' c #C6C5C3", +"] c #C8C7C5", +"[ c #C9C9C7", +"{ c #CCCCCC", +"} c #D2D0CF", +"| c #D6D5D5", +" . c #D8D7D7", +".. c #D7D8D7", +"X. c #D9D8D7", +"o. c #D6D7DA", +"O. c #D7D8DC", +"+. c #DADADA", +"@. c #E0E0DF", +"#. c #DFDFE0", +"$. c #E6E6E6", +"%. c #E8E8E7", +"&. c #E5E6EA", +"*. c #E7E9EA", +"=. c #E9EAEA", +"-. c gray94", /* pixels */ -"+.+.@.+.+.+.+.+.+.@.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.", -"+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.", -"+.+.+.+.@.@.@.@.@.@.@.#.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.+.+.+.+.", -"+.+.+.+.} } } } } } } } { } } } } } } } } } ............} } } } } ....X.} } . . . .} } +.+.+.+.", -"+.+.@...a d a a d a a d d d d u . : ; ; : ; _ ..} } ..` 9 7 Z H S S S S S A S S H S H Z | @.+.+.", -"+.+.@.} d b b b b b b s y y p w $ < : : : $ } $.+.@.$. .8 8 D U L L L L P P P L P P U H ..@.+.+.", -"+.+.@.} d m b b b b s O $ $ $ $ ; : : < @ E +.+.+.+.@.{ 8 5 v P L L L L L L L L L L L S ..@.+.+.", -"+.+.@.} u a a b s m O $ < : : < < - < @ R @.@.+.+.+.@...8 8 D P J L L J L L L L L L P A .@.+.+.", -"+.+.@..._ } ^ t m r $ < : < : < : : @ R @.+.+.+.+.+.@.~ 8 8 j P U P I I I P L L L L P S .@.+.+.", -"+.+.@...X.$.@.^ p e . = = = $ $ & $ E @.+.+.+.+.+.+.~ 3 B N 8 j H v v v H A L P L L P S .@.+.+.", -"+.+.@.} } +.+.+..._ _ { [ [ } _ ` } +.#.@.@.+.+.@.{ 8 N N N B q 5 5 5 5 5 5 j P L J P H .@.+.+.", -"+.+.@...} @.+.+.o.[ X.$.@.@.$.X.[ o.| ....| O.+.$.} 8 N N N N N N N N N N N 8 j L L L S .@.+.+.", -"+.+.@.} } #.O.] } } o.+.+.+.+.O.} } X.] ] [ | $.$.E # q N N N N N N 8 N N N N q j L T K .@.+.+.", -"+.@.@...} @.] o.@.@.@.+.+.+.+.+.#.+.X.[ X.X._ X.W @ - % 8 N N N N N N N N N q N 8 j H C ..#.O.+.", -"+.+.@.......} @.O.+.+.+.+.+.+.+.o.] ..` | ..& $ $ < = % N N N N N q N N N q B N V 2 @ $ } +.+.+.", -"+.+.@.....X.} @.+.+.+.+.+.+.@.+.] O.$...X.} $ < < - % N N N N 8 N M N q N N 7 7 B 6 & : | @.+.+.", -"+.+.+.| ..X.} @.+.+.+.+.+.O.@.| ..@.+.....@.E @ < & * N B N N B N B q N N 4 e w q 8 @ : | +.+.+.", -"+.+.#.| ....} @.+.+.+.+.+.+.@.....+.@.| | $.@.E $ < - % 8 4 4 8 7 5 q N N 4 a a 2 1 $ ; ..@.+.+.", -"+.+.@.....X.} @.+.+.+.+.+.+.@...| @.@.( / +.$...& < : - $ w i a w 8 B q > s s a w $ : | +.+.+.", -"+.+.@.......} @.+.+.+.+.+.+.@...| @.( J F ) X.` . $ - : < $ y m a w 1 5 , s s b m u & : | @.+.+.", -"+.+.#...X.o...$.+.+.+.+.+.@.O.' +.} A T L J H z e w = < % O b r . $ $ . r b b b s i $ ; | @.O.+.", -"+.+.@.| ] [ ' ..O.@.+.+.....] o.@.} H P L L P v r e $ O s m r . = = . r b b b m r $ : | @.+.+.", -"+.+.#...] ..| | ] o.$...] X.+.@.#...K T L L T H 2 1 w r s b b d r r r r b m b b s X % : | @.+.+.", -"+.+.@.....#.+.#.O.] ..] ] X.} } .._ z A A A A z 5 8 y m b s b b m m m b r r r p O = < - | +.+.+.", -"+.+.@...| @.+.+.@.+......._ & ; - = = $ $ $ $ @ 5 q , p m b b b s b d o @ $ $ . - < : ; ..+.+.+.", -"+.+.@...| +.+.+.+.+.+.@.$...$ < : : : : < < < $ 5 V q , y y s b b s X = < < < < : : - : } #.+.+.", -"+.+.#...| @.O.+.+.+.+.+.+.+.Q @ < : : : : : : - % q V 8 z H g a m r $ < - < - : : : : - } @.+.+.", -"+.+.@...} @.+.+.+.+.+.+.+.+.@.! @ : : - : : : : $ % 8 1 D T J g a e @ $ $ $ - : - : : - } #.+.+.", -"+.+.+...} @.+.+.+.+.+.+.#.@.$.Q = : : : : : - : < - $ @ G P L J A A H l e w $ : : : : : } @.+.+.", -"+.+.#...} +.O.+.+.+.+.O.[ } E @ < : : : : : : : : - < = v P L P Y L T A s a $ : : : : ; ..+.O.+.", -"+.+.@.....$.@.@.#.@.$.| ; - % < : : : : : : - < : : < $ A Y L L L J L c a r $ : : - : : } #.+.+.", -"+.+.@..._ } [ } { [ .._ $ $ $ @ = : : : : : : - : - $ @ A L J L L L P v a r $ < : < - ; } @.+.+.", -"+.+.#.} & & ; $ & & - . w a r t O = < : : < < < $ % 3 2 G L J L L L P x a i $ < - < < : } @.+.+.", -"+.+.+.| - < < : < : < @ r m b m b X @ $ $ $ $ $ % q B 5 D P P L L L T x p a @ < - - $ . } @.+.+.", -"+.O.#.| ; : : : : : : : O a b d b b y w z H v v j 8 N 8 h L P P L L L L g a + % - O a u } @.+.+.", -"+.+.@.} - : : : : : : : % X s b b b m y H T P P P j q B 8 h G v J L L L L g a X O d m d } @.+.+.", -"+.+.+. .: < < : < - - < = * , s b b b s g J L L P D 4 N N q 8 2 A L L K L P g p m b s a } @.+.+.", -"+.+.#.} $ $ $ $ $ : < - % N q , s b b b p g L L P A 8 N N q 8 2 A Y L L L P L g a b b a } @.+.+.", -"+.+.@.} 6 2 k J f & < $ 4 B N q , p b b b p A T P v 8 N 8 j v G L L L L L L L L g p m d } @.O.+.", -"+.+.#.} 0 8 A Y P f $ @ 2 V q N q , d b b r k v L v 5 q j P P P L L L L L L J L L g t i | #.+.+.", -"+.+.#.} 8 8 A T L L H H j 8 q q N q , a m a . $ H J 8 q h L L L L L L L L L L L L L G C .#.O.+.", -"+.+.@.} M 8 k A J L L L P j q N N N q , a w $ - z z 4 B 8 h L L L L L L L L L L L L Y K .#.+.+.", -"+.+.@.} 8 8 @ @ A Y L L P J 5 N q N B 8 x x $ $ 2 8 q N B 5 H U L L P P L L P P L L P K .@.+.+.", -"+.+.@...9 6 & & C K S S H C 6 0 8 0 8 6 Z A $ & 6 8 9 8 0 6 C H S S S S S S S H K S H Z .#.+.+.", -"+.+.+.+. . .} } . . . ...} ..} } .} .} .} } .. .} . .} . .} . . . . . . . . . ...+.+.+.+.", -"+.+.+.+.@.@.@.@.@.@.#.+.@.@.@.@.@.@.#.+.#.@.@.#.#.@.#.+.@.@.@.@.+.#.@.#.@.@.@.@.@.@.@.#.+.+.+.+.", -"+.+.+.+.+.O.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.O.+.O.+.+.+.+.+.+.+.+.+.+.+.O.+.O.+.+.+.+.+.+.+.+.+.+.", -"+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+." +"$.$.$.%.$.$.$.$.%.$.$.$.$.%.%.$.$.$.$.$.$.%.$.$.$.$.$.$.%.$.$.$.%.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.", +"$.$.$.%.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.%.$.$.$.%.%.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.&.$.$.", +"$.%.$.$.%.%.%.=.=.=.=.%.%.%.=.%.=.=.%.=.%.=.%.=.%.*.%.=.=.%.&.*.*.*.=.=.*.*.=.=.%.=.%.=.$.$.$.$.", +"$.$.$.$.+.o.X.X......... . ... .X.X.X.X.X.o.+.X.O.X.+.X.X.X.X.X.X.X.X.X.X.X.+. .+. .+.X.$.$.$.$.", +"$.$.%.+.a a a a a a a a a a a y & - - ; ; - ] +...+.+.] 8 6 C P S P S S P S S S P P P C +.=.$.$.", +"%.$.%...a v v p v v v p t i i q $ ; ; ; ; $ ..=.%.%.=. .7 7 J T I I U U U U U I R L I P +.=.$.$.", +"$.$.=.+.a v v v v v p O $ . $ $ ; ; ; , $ Q %.$.$.$.%.| 7 3 J U I I I I I I I I I I I K +.=.$.$.", +"$.$.%...y i i v v p O = , ; , ; ; ; ; # W *.%.$.$.$.=.o.7 7 J T I I I P I I I I I I I P .=.$.$.", +"$.$.%.+.' X.( e n i $ ; ; ; ; ; ; ; $ W =.$.$.$.$.$.=./ 0 0 h I E U U U U U I I I I I P +.=.$.$.", +"$.%.%.X.O.-.*.( e w . = = & & % & # W =.$.$.$.$.$.%./ 4 M M 7 h c c c G G c U I I I I K X.%.$.$.", +"$.%.=.+.| %.$.$...[ ' | } } | ' [ .*.=.%.%.$.$.%.| 6 V M 0 B 7 3 3 3 3 3 2 h U I L I P X.%.$.$.", +"$.%.%.+.X.%.$.$.#.| +.=.=.=.=.+.| #.X.X.X.+.$.$.=.X.7 0 M B 0 B B M M M M B 7 h U I I P X.=.$.$.", +"$.$.%.+.X.=.$.{ ..| $.$.$.$.$.$.| ..+.{ { { +.-.=.! @ 0 M M M M 7 M M M M M V 7 h U T P +.%.$.$.", +"%.$.%.+.X.%.{ #.=.%.%.$.$.$.$.$.%.%.#.} $.+.[ +.~ # = % 0 M M 7 M M M M M 0 0 N 7 g K C +.%.$.$.", +"$.$.*.O.+.+.| =.$.$.$.$.$.$.$.%.$.[ X.{ +...- * $ , * % 0 M M M M M M M 0 M M M V 1 # * o.%.$.$.", +"$.$.*.X.+.#.o.%.$.$.$.$.$.$.%.$.[ #.-.+.+...$ , ; = % M M m M M 0 m M M M 0 6 7 0 6 & ; +.%.$.$.", +"$.%.%.+.+.+.X.%.$.%.$.$.$.$.=.X.o.%.%.X.o.%.! # , % % 0 V M N M M M M M M 2 w q 0 7 $ ; ..%.$.%.", +"%.%.%.+.+.+.o.%.$.$.$.$.$.%.%.+.o.%.=.O.+.=.*.Q $ ; * % 3 2 2 7 2 2 M 0 B 2 i i < < $ ; ..=.$.$.", +"$.$.%.+.+.+.o.%.$.$.$.$.$.%.%.+.X.=.&.` ) &.-.+.; ; ; ; $ q y i q 7 V 0 : p a y q $ ; ..=.$.$.", +"$.$.%.+.+.#.X.=.$.$.$.$.$.$.%.o.X.*.` H H ` +.' . $ ; ; , $ i v i q < 2 : p p v n i $ - o.%.$.$.", +"%.$.%.O.+.#.+.=.$.%.$.$.%.%.$.{ %...A T I L P l w w $ , % o a t . * $ . t v a v a i $ ; o.=.$.$.", +"$.$.*.X.{ } { +.#.%.$.$...o.[ #.%.| K Y I I T A e w $ o p n e . * * . t v v p v e $ ; o.=.$.$.", +"$.$.%.+.{ +.o.o.{ #.-.O.} #.%.=.-.+.P T U I T A 1 < q t a v v p e e e t v n v n p O % - o.=.%.$.", +"$.%.=.O.+.=.%.%.$.{ X.{ { +.| | | ] l J A A J l 7 3 i v v v v v n v n v e e y r O = ; ; ..%.$.$.", +"%.$.=.+.| %.$.$.%.$.....+.[ - ; = * % $ $ * = # 2 M : i n v v v v v p o $ . * $ ; ; ; - .=.$.$.", +"$.$.=.O.X.%.$.%.$.%.%.%.=.+.$ ; ; ; ; ; ; ; ; $ 2 V 0 > t t a v v v o % ; ; ; ; ; ; , ; .%.$.$.", +"$.$.%.X.X.%.$.$.$.$.$.$.$.%.~ # ; ; ; ; ; ; ; = % 0 V 3 l G f u n t $ , ; ; ; ; ; ; ; - .*.$.$.", +"%.$.%.+.X.%.$.$.$.$.$.$.$.$.=.^ * ; ; ; ; ; ; ; * % 3 < G E I f t q . $ $ $ ; ; % ; , - X.=.$.$.", +"$.%.%.+.| *.$.&.$.$.$.$.=.=.=.^ # ; ; ; ; = ; ; ; ; $ $ x U I I x A S k w q $ , ; ; ; ; .=.$.$.", +"$.$.=.+.| *.$.$.$.$.$.$.} ..! + , ; ; ; ; ; ; ; ; ; ; $ x Y I I U I E S i y $ ; ; ; ; * +.*.$.$.", +"$.$.%.O.+.-.%.=.*.%.-.+.; * * , ; ; ; ; = ; ; ; ; ; , % A T I I I I Y x t t $ , ; ; ; - .=.$.$.", +"$.$.%.X.] .} } | } ..' . * * # = ; ; ; ; ; ; ; ; % $ A U L I I I Y x i y $ , ; ; ; - .%.$.$.", +"%.$.%.X.- & * * * * ; . q i e y O % ; ; ; ; ; ; = % 3 1 x Y I I I I U A a e $ ; ; ; ; ; +.=.%.%.", +"$.$.*.X.; ; ; ; ; ; ; $ y n v v p o $ * $ * $ $ % M N 3 c Y I I I L T Z i y $ ; ; = $ . o.%.$.$.", +"$.$.*.X.; ; ; ; ; ; ; ; X p v p v v t w k G c c h 7 M 7 g I T U I I I I f i o = = o i y o.=.$.$.", +"$.$.*.X.* ; ; ; ; ; ; ; % X p n v v n t K E U T U h 0 B 7 h x c L I I I I f u o X p v a +.%.$.$.", +"&.$.=. .; , ; ; ; ; ; ; * % > i v v v i d I I I Y S 3 M M M 7 1 A U I P U Y f i v v v a ..%.%.%.", +"$.$.=. .$ $ % % = ; ; % % 0 0 > p v a v u f L I U x 7 M M 7 3 1 A U I I L I I f i v v a ..%.$.$.", +"$.$.=. .5 < j P s $ , $ 3 M M 0 > p v a v y S E U x 7 M 7 h K G I I I I I I I I f u v a X.*.$.$.", +"$.$.=.| 9 0 J T U s $ . 2 V 0 N 0 > p v v i k x I x 3 0 h Y U U I I I I I I I I I f y y X.%.$.$.", +"$.$.=. .9 7 J R I I A K h 7 0 0 M 0 > p n y . $ L P 7 0 g I R L I R I I I I I I I I F C .=.$.%.", +"$.$.=. .9 7 j A L I U U U h 7 B M M 0 > i q $ = l l 6 V 0 g L Y L P I I I I I L L I R P +.=.$.$.", +"$.$.*.X.9 3 $ # A T I I T G 7 N 0 M V 7 z z $ $ < 3 0 0 0 7 J T R Y I I R I Y I R I Y P +.%.$.$.", +"$.$.%.X.8 6 - & C P S P P Z 5 9 9 7 9 5 A D $ & 5 0 9 9 9 5 C P P P P S P P P J P P K D .%.$.$.", +"$.$.$.$.X.X.X.X.+.X.+.....+.....X.X.o.X.X.+.o.o.X.X.X.X.X.X.X.+.| +. .+.+.| +. .+.X.+.X.$.$.$.$.", +"&.$.$.$.%.%.*.=.%.=.%.%.%.=.=.=.&.%.%.=.%.%.%.%.=.=.=.=.=.=.%.*.%.*.=.%.=.%.=.=.%.=.%.%.$.%.%.$.", +"%.$.$.%.$.$.$.$.$.$.$.$.$.$.%.$.$.$.$.$.%.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.%.$.$.", +"$.$.$.$.$.$.$.$.$.%.$.$.$.$.$.$.$.$.$.%.$.$.$.$.$.$.%.$.$.$.$.$.$.$.$.$.$.$.$.$.$.&.$.$.$.$.$.$." }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/map.sav sgt-puzzles-20160429.b31155b/icons/map.sav --- sgt-puzzles-20140928.r10274/icons/map.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/map.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,27 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :3:Map +PARAMS :10:20x20n30dn +CPARAMS :10:20x20n30dn +SEED :15:794003990129265 +DESC :264:dcbakatgcaaedaccabfabadbaaaagaiaaaeaiadcaaaafabccbdcaaecabggedfaebqbadgbngcblabdaadaaaeagabaaaacaacacbcaebabaabaebaafaaakabdhcdanaaceagakacbbajaaadbacbaaccbcbicdafbadgbaccbkcdaafbacbcaaabcddacaaaaddbabcdbbacabbhagajabbobcdjaecaafabahaaaffead,23a01c3c1a3d2a20b01a3a +AUXINFO :282:738e7a68c5d32445002968f3726646962b3604ef27a3657e0fdc0fd8180d5b747febd4619487bbc8bec5a48c709b154eb8da39c9b49be1e312a381fc2394e53126714079bd82e8444dad92419429635d1c816c53774b8c77b4ce03884c94d12bfb757cd93b5600471cb9726b3f2afe74d9932abeaa2efd6a496cad793ce5b221f943d620e883794f9d56741908 +NSTATES :2:18 +STATEPOS:2:12 +MOVE :4:3:20 +MOVE :4:0:24 +MOVE :4:3:10 +MOVE :4:1:18 +MOVE :4:2:11 +MOVE :4:3:17 +MOVE :4:1:23 +MOVE :4:3:27 +MOVE :4:1:29 +MOVE :4:0:16 +MOVE :4:2:13 +MOVE :3:1:6 +MOVE :3:2:2 +MOVE :3:0:7 +MOVE :3:2:9 +MOVE :4:0:15 +MOVE :3:3:5 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/map-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/map-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/mines-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/mines-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/mines-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/mines-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/mines-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/mines-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/mines-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/mines-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/mines-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/mines-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/mines-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/mines-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/mines-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/mines-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/mines-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/mines-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/mines-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/mines-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/mines-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/mines-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/mines-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/mines-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/mines-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/mines-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/mines.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/mines.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/mines-icon.c sgt-puzzles-20160429.b31155b/icons/mines-icon.c --- sgt-puzzles-20140928.r10274/icons/mines-icon.c 2014-09-29 00:33:44.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/mines-icon.c 2016-04-29 00:31:43.000000000 +0000 @@ -1,810 +1,727 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 227 2 ", -" c #DDDBD6", -". c #E3E5E1", -"X c #E0F2ED", -"o c #E3E4E0", -"O c #D6D3CF", -"+ c #DAD3D3", -"@ c #DBD3D4", -"# c #D0CFCA", -"$ c #D7D2D0", -"% c #DDD4D6", -"& c #D3D0CD", -"* c #D1CFCB", -"= c #DDDBC9", -"- c #D4D2CA", -"; c #DAD8D4", -": c #DEDCD7", -"> c #E9DBD8", -", c #F39896", -"< c #DDCBC8", -"1 c #B8BBB7", -"2 c #98B792", -"3 c #A1BA9D", -"4 c #CCC5C6", -"5 c #ABBCA6", -"6 c #8EB38A", -"7 c #C3C4BD", -"8 c #C7C4BF", -"9 c #8E8DD7", -"0 c #B8B6C6", -"q c #E8E7E0", -"w c #E1E0DC", -"e c #E1E5E1", -"r c #ECD1CE", -"t c #E0514F", -"y c #C6B0AB", -"u c #C1C0C0", -"i c #83B37E", -"p c #62A55F", -"a c #D9CDD2", -"s c #B3C3AE", -"d c #489C46", -"f c #B9C3B6", -"g c #DAD5C6", -"h c #7271E5", -"j c #A19FD4", -"k c #F1EFE1", -"l c #E0DEDC", -"z c #E5E2DE", -"x c #D2D8D4", -"c c #5E7673", -"v c #81837F", -"b c #C3BEBC", -"n c #73AE71", -"m c #95BB93", -"M c #DACDD3", -"N c #98B694", -"B c #6FAC69", -"V c #CAC9C4", -"C c #CCC9C1", -"Z c #8182E3", -"A c #9797D8", -"S c #F0EEE3", -"D c #D5D6D1", -"F c #B9ADA9", -"G c #BD9C99", -"H c #B6B2AF", -"J c #DADAD7", -"K c #F1E4E8", -"L c #EEDFE0", -"P c #C2C4C0", -"I c #CFC9C4", -"U c #C6BDC8", -"Y c #C5C3C1", -"T c #E3E3E1", -"R c #EEE5D8", -"E c #E6DED5", -"W c gray89", -"Q c #E2E0DB", -"! c #D1D2CD", -"~ c #D1C2BE", -"^ c #F35553", -"/ c #DFAAA7", -"( c #E3F3F0", -") c #F3625E", -"_ c #F07F7C", -"` c #BACAC2", -"' c #AEAAB9", -"] c #363692", -"[ c #B8B9C8", -"{ c #EEE7DF", -"} c #F84D4E", -"| c #E39997", -" . c #D3E0DD", -".. c #E4DFDB", -"X. c #D2D3CF", -"o. c #CFBEBA", -"O. c #EC5653", -"+. c #D8A9A5", -"@. c #E9F4F0", -"#. c #AE9F9C", -"$. c #7B6C6B", -"%. c #BDBDB5", -"&. c #A4A0B4", -"*. c #494494", -"=. c #A6A5BD", -"-. c #F3F2E8", -";. c #94807E", -":. c #837774", -">. c #DCDDDB", -",. c #E2E0DC", -"<. c #D1D1CC", -"1. c #C5BBB8", -"2. c #D0BBBB", -"3. c #CDCAC9", -"4. c #C6C5C2", -"5. c #9A9B94", -"6. c #8E9189", -"7. c #B1AEAC", -"8. c #E8EFE7", -"9. c #DCEDE8", -"0. c #DFDDDB", -"q. c #D8D9D6", -"w. c #9FB6B3", -"e. c #A0A8A5", -"r. c #DBD9D7", -"t. c #E3E2DD", -"y. c #D6D1CF", -"u. c #B8C2B4", -"i. c #7AB17A", -"p. c #B2BFAD", -"a. c #D0CAC5", -"s. c #A9A7BF", -"d. c #8480AF", -"f. c #E7EDE4", -"g. c #E8B8B8", -"h. c #F87977", -"j. c #D4D2CE", -"k. c #DED9D6", -"l. c #FE8482", -"z. c #EAB8B4", -"x. c #D8E0DE", -"c. c #E3E0DB", -"v. c #D5D1CE", -"b. c #C1C5BB", -"n. c #449A41", -"m. c #A3BC9E", -"M. c #D2CACB", -"N. c #5B5B9F", -"B. c #45438F", -"V. c #DFE3DE", -"C. c #E9C4BF", -"Z. c #BA5B58", -"A. c #C0BEBB", -"S. c #E3DFDB", -"D. c #CF716E", -"F. c #B28D89", -"G. c #D9DFDD", -"H. c #D8D3D1", -"J. c #B8C4B3", -"K. c #83B580", -"L. c #CBCEC5", -"P. c #CECAC8", -"I. c #CBCACD", -"U. c #A7A6BD", -"Y. c #E4E2DF", -"T. c #BDC3C0", -"R. c #5F706E", -"E. c #A2A09E", -"W. c #7B8C89", -"Q. c #747A78", -"!. c #DBD8D6", -"~. c #E0DFDB", -"^. c #EDE9E9", -"/. c #F5EAEF", -"(. c #DFDDDA", -"). c #DEDDDB", -"_. c #EAE9E4", -"`. c #ECEBE2", -"'. c #D9D8D6", -"]. c #DFDCD9", -"[. c #E7E3DF", -"{. c #D6D5D2", -"}. c #DBDAD8", -"|. c #E5E0DC", -" X c #DFDCD8", -".X c #DCDBD9", -"XX c #E3E1DD", -"oX c #E4E2DE", -"OX c #E2E1DD", -"+X c #DBDAD3", -"@X c #D5D4D1", -"#X c #E0DDD8", -"$X c #D8D6D2", -"%X c #CCCBC8", -"&X c #CECCC8", -"*X c #DCDBD7", -"=X c #E1DED9", -"-X c #D6D3CE", -";X c #D5D4D2", -":X c #E3E2DE", -">X c #DEDCD8", -",X c #CAC8C4", -" c #EBEEEE", +", c #EFE2E2", +"< c #F79E9E", +"1 c #E3D3D3", +"2 c #C3C5C7", +"3 c #93BA92", +"4 c #8CB78C", +"5 c #D7D0D7", +"6 c #B2C5B2", +"7 c #76AE76", +"8 c #C4CBC3", +"9 c #D1CFD0", +"0 c #7D7DE5", +"q c #BCBCD5", +"w c #EEEEE8", +"e c #EAEAEB", +"r c #E9EFEF", +"t c #F4DADA", +"y c #E65656", +"u c #CFBAB9", +"i c #CBCCD1", +"p c #8EBC8D", +"a c #73B072", +"s c #E1D8E1", +"d c #BECEBE", +"f c #56A557", +"g c #C4CEC7", +"h c #E3E1D5", +"j c #7474EE", +"k c #A7A7E1", +"l c #F6F6EA", +"z c #E8E8EB", +"x c #EDECEC", +"c c #D9E0E0", +"v c #648282", +"b c #868A8A", +"n c #CBC7C9", +"m c #79B57A", +"M c #9BC39E", +"N c #E1D8E1", +"B c #9EBE9F", +"V c #7AB776", +"C c #D0D2CF", +"Z c #D4D3D1", +"A c #7E81ED", +"S c #9FA1E3", +"D c #F5F5EB", +"F c #E8E9EB", +"G c #DFE2E2", +"H c #C0B3B3", +"J c #C88D8D", +"K c #BEB5B6", +"L c #DFE2E2", +"P c #F8ECF3", +"I c #F3E6E9", +"U c #CACDCC", +"Y c #D6D2D3", +"T c #B9B2CD", +"R c #CDCDCE", +"E c #E9EAEB", +"W c #F6EEE3", +"Q c #EDE6DF", +"! c #E7E8E9", +"~ c #EBEAEA", +"^ c #DBDCDC", +"/ c #D8D5D5", +"( c #F85151", +") c #E8A7A7", +"_ c #EAFEFE", +"` c #F76866", +"' c #F58585", +"] c #C5D7D2", +"[ c #A8A5C0", +"{ c #373894", +"} c #D0D2DA", +"| c #F2EBE9", +" . c #FC5255", +".. c #EBA2A4", +"X. c #D8E6E6", +"o. c #EDEAEA", +"O. c #DBDFDF", +"+. c #D8C7C7", +"@. c #F25D5E", +"#. c #E1A8A7", +"$. c #F0FDFD", +"%. c #B7A8A9", +"&. c #827273", +"*. c #C6C8C4", +"=. c #9D9BBB", +"-. c #444097", +";. c #BEBECF", +":. c #F7F8F4", +">. c #9D8A8A", +",. c #897F7F", +"<. c #E1E3E3", +"1. c gray92", +"2. c #DBDDDD", +"3. c #CAC3C1", +"4. c #CFBEBC", +"5. c #D6D5D8", +"6. c #CDCDCD", +"7. c #9FA29F", +"8. c #8E9291", +"9. c #B8B6B6", +"0. c #EEF6F2", +"q. c #E0F3F3", +"w. c #E6E5E6", +"e. c #DDDEDE", +"r. c #A4BCBC", +"t. c #A4ADAD", +"y. c #DEDDDD", +"u. c #ECEDED", +"i. c #DEDCDE", +"p. c #C6CFC8", +"a. c #6BB070", +"s. c #AAC2AB", +"d. c #DFDAD9", +"f. c #999AC1", +"g. c #8684B8", +"h. c #F2F9F1", +"j. c #EDBFC1", +"k. c #FC7F7F", +"l. c #DBDADA", +"z. c #E4E0E0", +"x. c #FF8A8A", +"c. c #F0C0C0", +"v. c #DCE6E6", +"b. c #ECEAEA", +"n. c #DFDDDF", +"m. c #C9CFC8", +"M. c #55A354", +"N. c #B5CAB4", +"B. c #D6D1D7", +"V. c #4C4D9E", +"C. c #55549C", +"Z. c #EDF2ED", +"A. c #EFCBCC", +"S. c #C06161", +"D. c #C8C8C8", +"F. c #EAE7E7", +"G. c #D67979", +"H. c #BA9696", +"J. c #DEE5E5", +"K. c #EBEAEA", +"L. c #E2DEE2", +"P. c #BFCDBF", +"I. c #89BB89", +"U. c #CDD5CD", +"Y. c #D7D6D6", +"T. c #C5C5D3", +"R. c #ADADC8", +"E. c #EEECEA", +"W. c #C2CACA", +"Q. c #647676", +"!. c #A6A5A5", +"~. c #E0E1E1", +"^. c #819393", +"/. c #787F7F", +"(. c #DEDDDD", +"). c #ECECEC", +"_. c #E8E9E8", +"`. c #F2F0F2", +"'. c #FCF3FC", +"]. c #E6E5E6", +"[. c gray89", +"{. c #F4F4F1", +"}. c #F4F4EF", +"|. c gray87", +" X c #E4E3E3", +".X c #EEEBEB", +"XX c gainsboro", +"oX c #E0DFDF", +"OX c #EBE8E8", +"+X c #E6E4E4", +"@X c #DFE0E0", +"#X c #ECECEC", +"$X c gray92", +"%X c gray92", +"&X c #E6E8E6", +"*X c #D9DAD9", +"=X c gray86", +"-X c #EAEAEA", +";X c #E3E3E4", +":X c #D2D2D2", +">X c gray92", +",X c #EAEAEA", +" , < 1 2 3 4 5 6 7 8 9 0 q w ", -"e r t y u i p a s d f g h j k l ", -"z x c v b n m M N B V C Z A S l ", -"D F G H J K L P I U Y T R E W Q ", -"! ~ ^ / ( ) _ ` ' ] [ { } | ...", -"X.o.O.+.@.#.$.%.&.*.=.-.;.:.>.,.", -"<.1.2.3.4.5.6.7.8.9.0.q.w.e.r.t.", -"y.u.i.p.a.s.d.f.g.h.j.k.l.z.x.c.", -"v.b.n.m.M.N.B.V.C.Z.A.S.D.F.G.c.", -"H.J.K.L.P.I.U.Y.T.R.E.J W.Q.!.t.", -"~.^./.(.)._.`.'.].[.{.}.|. X.XXX", -"oXOX+X# @X#X$X%X,.: &X*X=X-X;XoX", -":X>X-X,X , < 1 2 3 4 5 6 7 8 9 0 q w e ", +"r t y u i p a s d f g h j k l z ", +"x c v b n m M N B V C Z A S D F ", +"G H J K L P I U Y T R E W Q ! ~ ", +"^ / ( ) _ ` ' ] [ { } | ...X.o.", +"O.+.@.#.$.%.&.*.=.-.;.:.>.,.<.1.", +"2.3.4.5.6.7.8.9.0.q.w.e.r.t.y.u.", +"i.p.a.s.d.f.g.h.j.k.l.z.x.c.v.b.", +"n.m.M.N.B.V.C.Z.A.S.D.F.G.H.J.K.", +"L.P.I.U.Y.T.R.E.W.Q.!.~.^./.(.).", +"_.`.'.].[.{.}.|. X.XXXoXOX+X@X#X", +"$X%X&X*X=X-X;X:X>X,X c #6F6B68", -", c #726D6B", -"< c #757472", -"1 c #7E7C79", -"2 c #FE0000", -"3 c #FC0F0E", -"4 c #F91614", -"5 c #F81C1C", -"6 c #F6201F", -"7 c #F62322", -"8 c #F1312F", -"9 c #E73B3A", -"0 c #F43533", -"q c #F23937", -"w c #A25856", -"e c #876765", -"r c #F14341", -"t c #EE5452", -"y c #EE5855", -"u c #EE5F5D", -"i c #E4605E", -"p c #EA6462", -"a c #EB6B68", -"s c #E97773", -"d c #E67D7A", -"f c #E87D7A", -"g c #0E800E", -"h c #1D861C", -"j c #1D8B1C", -"k c #238D22", -"l c #288F27", -"z c #2A8F29", -"x c #2E912C", -"c c #349232", -"v c #3A9739", -"b c #3E983C", -"n c #449A42", -"m c #489B46", -"M c #4E9E4B", -"N c #55A152", -"B c #65A662", -"V c #68A765", -"C c #66A863", -"Z c #71A96E", -"A c #76AE72", -"S c #81807D", -"D c #81B07D", -"F c #020281", -"G c #0F0F82", -"H c #27268E", -"J c #3D3C96", -"K c #4B4B9B", -"L c #54539E", -"P c #5C5CA2", -"I c #605FA2", -"U c #6362A3", -"Y c #6E6DA7", -"T c #0C0CFC", -"R c #1717FC", -"E c #2424F6", -"W c #4242F0", -"Q c #6F6DE6", -"! c #7776E2", -"~ c #8A8582", -"^ c #8A8986", -"/ c #8E8D89", -"( c #918F8C", -") c #93918E", -"_ c #9A9793", -"` c #9C9A97", -"' c #9E9D9A", -"] c #A29F9D", -"[ c #8EB48A", -"{ c #96B892", -"} c #9EB897", -"| c #9DBB98", -" . c #A3A19D", -".. c #A2BD9E", -"X. c #8180AF", -"o. c #8987B2", -"O. c #9896B5", -"+. c #9F9EB9", -"@. c #A6A4A1", -"#. c #A8A6A3", -"$. c #ABA9A6", -"%. c #AEACA9", -"&. c #B0AAA7", -"*. c #B1AEAB", -"=. c #ACBEA6", -"-. c #ADB2AE", -";. c #B3B1AE", -":. c #AAA9BC", -">. c #ACB7B3", -",. c #B6B5B2", -"<. c #BAB7B3", -"1. c #BBBAB5", -"2. c #BDBCB9", -"3. c #DE9693", -"4. c #DB9D9A", -"5. c #E38784", -"6. c #E28885", -"7. c #E58C88", -"8. c #C3B2AE", -"9. c #D4B3AF", -"0. c #DBB2AD", -"q. c #C1BEB1", -"w. c #CFBBB7", -"e. c #C1BEBC", -"r. c #D2B9B3", -"t. c #E5B6B2", -"y. c #E3BCB7", -"u. c #E2BDB8", -"i. c #AEC3A9", -"p. c #B1C4AC", -"a. c #B6C5B1", -"s. c #BAC4B4", -"d. c #BCC9B6", -"f. c #BFC9B9", -"g. c #C5C3BE", -"h. c #C3CBBE", -"j. c #DEC2BD", -"k. c #E4C1BD", -"l. c #9D9BD2", -"z. c #9795DA", -"x. c #B3B1C0", -"c. c #B9B7C3", -"v. c #BBB9C3", -"b. c #BEBCC8", -"n. c #A5A3D2", -"m. c #A9A7D8", -"M. c #BBB9D0", -"N. c #C4BEC1", -"B. c #C6C5C2", -"V. c #C9C6C3", -"C. c #C7CBC1", -"Z. c #CCCAC5", -"A. c #C4C2CD", -"S. c #CBC4CA", -"D. c #C6CECA", -"F. c #CECCC9", -"G. c #D3C6C3", -"H. c #D3CAC5", -"J. c #D1CDCB", -"K. c #CDD2CC", -"L. c #DBD8C6", -"P. c #D4D1CD", -"I. c #D9D7CE", -"U. c #DBD9CC", -"Y. c #CBD5D1", -"T. c #CAD9D4", -"R. c #D5D4D2", -"E. c #D9D6D2", -"W. c #D3DAD5", -"Q. c #DCDAD5", -"!. c #DED5D8", -"~. c #DFDDD8", -"^. c #E4CDC9", -"/. c #E1DFC5", -"(. c #E4D2CE", -"). c #E4D6D2", -"_. c #E1D9D4", -"`. c #E1D7DB", -"'. c #E0DED9", -"]. c #D7E1DC", -"[. c #DEE0DB", -"{. c #EAE8C4", -"}. c #E3E1DD", -"|. c #F2EDDF", -" X c #F1DBEA", -".X c #DEE7E2", -"XX c #D7E9E3", -"oX c #DBEAE4", -"OX c #DDEEE8", -"+X c #DDF0EB", -"@X c #E5E4E2", -"#X c #E9E6E3", -"$X c #E6EAE6", -"%X c #EBE9E6", -"&X c #E5EBE9", -"*X c #ECECEA", -"=X c #F0E7EA", -"-X c #F0EEEC", -";X c #E1F2ED", -":X c #ECF0EE", -">X c #F3F3E5", -",X c #F3F2EE", -" c #FA1D1D", +", c #F62222", +"< c #EC3F3F", +"1 c #F53333", +"2 c #F63B3B", +"3 c #A75C5C", +"4 c #8D6D6D", +"5 c #F44B4B", +"6 c #F25757", +"7 c #EA6666", +"8 c #ED6D6D", +"9 c #F26464", +"0 c #E97A7A", +"q c #F07575", +"w c #128512", +"e c #1C8B1C", +"r c #168A16", +"t c #2C8F2C", +"y c #2C922C", +"u c #349334", +"i c #3E9A3E", +"p c #489D47", +"a c #469E46", +"s c #4EA14E", +"d c #57A357", +"f c #68AB68", +"g c #63AA63", +"h c #7AB37A", +"j c #151586", +"k c #24248D", +"l c #2E2E93", +"z c #343495", +"x c #383897", +"c c #46469D", +"v c #4A4AA0", +"b c #5A5AA6", +"n c #6161A7", +"m c #6D6DAD", +"M c #797BAF", +"N c #7B7BB3", +"B c #0606FF", +"V c #2525F9", +"C c #3F3FF5", +"Z c #6969EF", +"A c #858585", +"S c #8E8E8E", +"D c #939393", +"F c #9D9D9D", +"G c #A09F9F", +"H c #82AF82", +"J c #85B585", +"K c #99BF99", +"L c #9898BD", +"P c #8888B8", +"I c #A3A3A2", +"U c #A7A7A8", +"Y c #ACACAC", +"T c #A5ACAC", +"R c #B1ADAD", +"E c #A8BFA8", +"W c #B4B4B4", +"Q c #BAB6B6", +"! c #BABABA", +"~ c #B5B9B9", +"^ c #ED8282", +"/ c #E59C9C", +"( c #EC9494", +") c #CBBBBB", +"_ c #E6B9B9", +"` c #9FC29F", +"' c #A4C4A4", +"] c #A8C7A8", +"[ c #B3C6B3", +"{ c #B5CBB5", +"} c #BDCDBD", +"| c #BED0BE", +" . c #C8C8BF", +".. c #C4C4BF", +"X. c #9E9EC2", +"o. c #8D8DDB", +"O. c #B9B9CC", +"+. c #A1A1D7", +"@. c #ACACDD", +"#. c #A7A7E2", +"$. c #AFAFE4", +"%. c #B3B3E1", +"&. c #B3C7C7", +"*. c #C3C4C3", +"=. c #C9C4C5", +"-. c #C0C0CF", +";. c #CAC6CA", +":. c #C6C8C8", +">. c #CBCBCB", +",. c #C3CFC3", +"<. c #DBC6C6", +"1. c #D1CFCF", +"2. c #DACAC9", +"3. c #CDD1CD", +"4. c #C5D2C5", +"5. c #DFDFCF", +"6. c #D1D1CE", +"7. c #C4C4D1", +"8. c #CBCBD5", +"9. c #C7C7DD", +"0. c #D2CDD3", +"q. c #D3CED8", +"w. c #CED4D4", +"e. c #CEDBDB", +"r. c #D3D3D3", +"t. c #D6D9D6", +"y. c #DCDCD4", +"u. c #D5D5D9", +"i. c #D9D5D9", +"p. c #D4DBDB", +"a. c #DCDBDB", +"s. c #D9D4D3", +"d. c #EDC7C7", +"f. c #E4CBCB", +"g. c #E8C5C5", +"h. c #EDD6D6", +"j. c #E0D9D7", +"k. c #ECDBDB", +"l. c #DFE0D8", +"z. c #E5E5D7", +"x. c #E2E2DC", +"c. c #DEDEE1", +"v. c #E2DDE2", +"b. c #D5E3E3", +"n. c #DCE3E3", +"m. c #D7E8E8", +"M. c #E5E5E5", +"N. c #EBE3E3", +"B. c #E7E9E7", +"V. c #EAEAE4", +"C. c #E7E7EB", +"Z. c #EBE2EB", +"A. c #E4EBEB", +"S. c #EBEBEB", +"D. c #F0EFEF", +"F. c #F6F2E7", +"G. c #F6F7EC", +"H. c #F7FBEF", +"J. c #EFEEF0", +"K. c #F4EEF2", +"L. c #F1E5F1", +"P. c #E3F7F7", +"I. c #EDF3F3", +"U. c #EBFCFC", +"Y. c #E7FCFC", +"T. c #F4F4F4", +"R. c #F3FBFB", +"E. c #FBFBFB", +"W. c #F8F6FD", /* pixels */ -"Q.Q.E.E.E.Q.I.E.Q.}.~.'.'.'.'.'.'.'.~.'.'.'.'.'.'.~.}.'.'.Q.Q.Q.", -"Q.~.#X#X}.$X#X%XR.g.B.Z.Z.g.B.B.B.Z.V.g.B.g.g.Z.V.h.V.B.V.@XQ.Q.", -"E.#X3X:X2X:X*X}.@.g.V.s.B.Z.g.;.V.B.s.H.Z.g.,.B.B.N.B.B.J.6X'.Q.", -"E.#X$X0.s 8 u.D._ !.V v n h.E.e.F.N v N P.J.2.I.Q R m.L.E.6XQ.Q.", -"I.#X:Xf 3 2 u.K.` F.i.!.h [ !.2.C.d.C.g a.P.2.J.A.E z.L.P.6X~.Q.", -"I.$X$X].>Xw w.W._ P.!.B x Z.J.,.P.P.n m E.Z.2.J.{.E m./.R.6XQ.Q.", -"Q.#X*XH.$.O < Z.` !.M @ b s.P.2.F.z @ N Z.Z.2.I.! T W M.Q.6X~.Q.", -"E.#X#X] * * = ] ` H.=.=.} d.J.2.J.i.p...D.J.,.P.n.n.l.b.I.6XQ.Q.", -"Q.R.#.' >.-.%.' <.*X=X=X3X%X$X,.2.e.N.V.2.1.!.*X|.|.>X%X$X6XQ.Q.", -"'.B.B.H.4.9.K.Z.$X-X;X;X(.#XJ.@.H.J.V.:.Z.F.-X$X.,.3X~.Q.", -"'.V.V.P.r.Z.R.Z.#XP./ : < < ` .J.P.P.B.F.P.$X,.< > , e #.4X~.!.", -"'.g.;.e.S.B.1.1.,.#.#.,.q.;. .P.,X%X1X1X=X$X@X!.}.&X&X.XP.4X~.E.", -"'.B.V.d.D | P.P.2.F.Q.F.o.B.R.=X#XOX).t.@X1.}.:X+X^.k.#X2.3X~.E.", -"'.B.J.A V l D `.1.Z.R.P # O.I.:X(.y 2 0 $X*.@Xu.r 2 u oX&.3X~.Q.", -"'.B.g.!. Xc Z `.<.U.U U J Y U.-XQ.7.0 9 .X;..X^.f 7 i oX*.3X~.E.", -"}.B.V.d.l k g.R.1.J.L K G K F.=X[..; ,X%.3X~.~.", -"'.h.J.A j n { Q.1.F.I.Q.L +.I.*X#X_ $ S ;.@X[.~ + X _ ,.3X~.E.", -"'.g.B.)._.P.J.R.s.F.J.J.I.P.P.#X2.( ^ ) ( @.~.;.^ / ( ( %.4X~.E.", -"I.}.3X-X:X-X-X*X[.3X-X,X-X1X#X@X@X%X*X$X*X!.@X@X*X$X$X*XR.4X'.E.", -"Q.$X$X!.~.~.}.g.B.*XE.~.Q.'.2.R.#XQ.'.~.}.,.}.}.'.'.~.'.,.3X'.Q.", -"E.#X%XQ.Q.Q.'.g.B.*XE.Q.Q.'.1.R.}.E.Q.E.~.;.}.~.E.Q.Q.Q.;.3X~.Q.", -"I.#X$XE.Q.Q.}.g.V.*XE.Q.Q.'.1.W.@XQ.Q.E.'.,.}.'.Q.Q.Q.Q.;.3X'.E.", -"Q.#X$XI.Q.Q.'.g.C.$XE.Q.Q.'.2.R.@XE.Q.!.'.,..X~.Q.Q.Q.Q.;.3X~.Q.", -"!.#X*XQ._.Q.}.g.B.%XE.Q.Q.}.,.R.#XQ.~.Q.'.;.}.}.Q.Q.Q.~.*.3X'.E.", -"E.@XF.%.;.;.,.@.Z.B.*.;.-.;.#.R.1.*.;.;.;.#.Q.;.-.;.;.*.*.6X~.E.", -"E.@X3X3X3X3X3X3X6X3X3X3X3X3X4X4X3X3X3X3X3X4X4X3X3X3X3X3X6X4X~.Q.", -"~.~.~.~.~.~.'.'.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.'.~.'.[.~.~.~.Q.Q.", -"Q.E.Q.Q.E.Q.Q.Q.Q.E.Q.E.~.E.E.Q.Q.Q.Q.E.Q.Q.E.E.Q.E.Q.E.E.Q.Q.Q." +"M.M.M.M.M.M.M.v.C.S.B.C.B.B.C.B.B.B.B.B.B.B.S.B.S.C.B.S.S.Z.M.M.", +"M.B.I.S.S.D.S.G.l.>.i.v.i.r.r.r.r.i.v.i.r.r.r.0.5.y.r.r.t.S.M.M.", +"M.T.T.I.U.I.T.B.Y r.[ H E r.1.! r.E H [ r.>.! r.+.o.7.r.u.E.B.V.", +"M.S.T.g.^ 1 d.p.F v.h d r ' Z.*.a.g s e 4.a.:.M.Z B $.z.c.E.V.M.", +"M.G.T.^ : ; d.p.I a.v.M.e ` v.*.u.Z.3.w &.j.*.a.l.V #.z.a.E.M.M.", +"M.S.I.A.E.3 <.M.I a.r.i h Z.i.*.j.} y ' Z.t.:.a.z.V $.z.c.E.B.M.", +"M.S.T.a.~ X = u.I M.s O a ` v.*.c.y w p { a.*.x.Z B C 9.M.E.B.M.", +"M.J.I.U # $ $ G I t...[ ` ,.a.&.a.| { ' t.i.*.y.@.@.@.q.a.E.B.M.", +"M.a.Y T &.&.~ I ! T.D.K.W.D.S.) *.;.s.j.:.*.a.I.F.G.H.D.S.E.M.Z.", +"S.8.w.g.7 0 1.p.S.T.U.U.k.T.t.R i.z.L M t.i.T.I.Y.S.k.I.:.T.B.M.", +"B.r.w._ ^ > 8 m.N.S.( 2 , N.*.U B.7.j k a.a.T.f.q > 9 P.W T.B.M.", +"B.1.1.b.0 : / b.D.S.^ > : N.:.U M.n N x a.i.R.d.6 ; 9 P.Q W.B.M.", +"S.r.w.f.<.2 6 m.S.D.U.E.% S.>.Y 7.k z + L M.J.A.E.) 4 E.W T.B.V.", +"S.1.e.^ 2 1 ( b.S.T.*.= A *.Y a.7.P l 8.l.T.B.Y @ o Q ) T.C.M.", +"S.r.1.a.<.r.n.u.S.u.D & = = F Y a.a.a.r.a.a.D.! = - - A Y E.C.M.", +"S.0.! >.0.0.=.*.) Y W .. .! Y u.T.S.T.R.T.B.C.y.Z.A.A.M.u.R.V.M.", +"B.8.i.] p d 4.v.*.i.V.L c u.a.T.T.Y.k._ I...M.R.Y.h.d.T.*.T.Z.M.", +"S.r.r.] ] u d Z...i.r.z j -.a.I.h.9 ; 2 Y.Q B.g.5 ; 9 P.W T.B.M.", +"S.r.>.L.a.u ' M.&.z.b N z O.x.T.N.( 2 < I.Q A.h.^ , 9 Y.Q T.B.Z.", +"B.1.r.{ w f w.a.;.r.c z + m x.S.B.R.n.# E.! M.J.E.&.* E.~ T.V.M.", +"S.1.i.J y i h Z...u.i.-.c -.x.T.T.I @ A ! C.B.D X . G ! T.B.M.", +"S.r.1.M.Z.j.c.a.;.r.l.l.M.a.a.S.*.D S F D U a.Q D D D D W E.B.M.", +"M.S.T.T.T.T.T.J.M.T.T.T.T.T.S.M.M.S.K.S.G.c.B.C.G.K.D.K.a.E.B.M.", +"M.S.I.V.B.M.S.w.>.T.M.M.M.S.;.t.T.M.B.C.J.! M.J.B.M.M.B.! T.B.M.", +"M.S.T.M.M.M.B.r.>.T.M.M.M.S.=.i.S.M.M.M.S.! M.M.M.M.M.B.! T.S.Z.", +"M.T.S.M.M.M.S.>.:.T.x.M.M.S.*.t.T.M.M.M.J.! M.S.M.M.M.M.! T.C.M.", +"M.S.T.M.M.M.S.r.:.T.M.V.M.S.:.t.S.M.M.M.S.! M.S.M.M.M.M.Q E.B.M.", +"M.S.T.M.B.M.B.r.:.T.M.Z.M.S.:.u.T.M.B.M.J.! M.S.M.M.B.S.~ T.B.M.", +"M.T.r.Q ! Q ! Y 1.>.W ! ! ! Y i.*.W ! ~ ! R a.! Q ! ! ! W E.M.M.", +"M.S.T.T.T.W.T.R.E.W.T.T.T.T.E.E.T.T.T.T.T.E.E.T.T.T.T.T.E.E.Z.M.", +"M.M.B.B.B.B.S.B.M.S.B.B.B.S.M.M.S.B.B.S.S.B.M.S.B.B.B.B.B.M.V.M.", +"M.M.M.M.M.M.M.Z.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.A." }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 256 2 ", -" c #030202", -". c #0B0B0B", -"X c #11100F", -"o c #181919", -"O c #141313", -"+ c #242424", -"@ c #282726", -"# c #282827", -"$ c #2E2D2C", -"% c #3B3C3B", -"& c #343A39", -"* c #4A2928", -"= c #007500", -"- c #007B00", -"; c #000076", -": c #01017C", -"> c #0B0B7F", -", c #4E504E", -"< c #565553", -"1 c #585755", -"2 c #5E5C5A", -"3 c #4B4947", -"4 c #605F5D", -"5 c #64605E", -"6 c #666562", -"7 c #6A6967", -"8 c #6C6B69", -"9 c #73726F", -"0 c #777F7C", -"q c #7B7A77", -"w c #972221", -"e c #CE0E0E", -"r c #C91D1C", -"t c #F70101", -"y c #FF0101", -"u c #FD0C0B", -"i c #FC100F", -"p c #FB1615", -"a c #FA1E1E", -"s c #FB201F", -"d c #FA2423", -"f c #F33433", -"g c #F83332", -"h c #A04E4C", -"j c #B35452", -"k c #EE4C4A", -"l c #F44341", -"z c #F24847", -"x c #F24E4C", -"c c #EC5D5B", -"v c #E75A58", -"b c #F15C5A", -"n c #F25755", -"m c #EC6562", -"M c #E96967", -"N c #ED6D6A", -"B c #E37F7D", -"V c #E87C79", -"C c #098209", -"Z c #148613", -"A c #178916", -"S c #198918", -"D c #258D24", -"F c #288E27", -"G c #2D902C", -"H c #359433", -"J c #3C963A", -"K c #40983E", -"L c #459A43", -"P c #4C9D4A", -"I c #509E4E", -"U c #539F50", -"Y c #59A156", -"T c #5CA259", -"R c #66A763", -"E c #68A765", -"W c #6DAA6A", -"Q c #72AB6E", -"! c #77AD74", -"~ c #7FB07B", -"^ c #84827F", -"/ c #EC807E", -"( c #020280", -") c #121287", -"_ c #1A1A87", -"` c #181888", -"' c #24238D", -"] c #28288E", -"[ c #2E2D90", -"{ c #3F3E96", -"} c #333292", -"| c #404097", -" . c #4F4E9C", -".. c #454598", -"X. c #54539D", -"o. c #5D5CA1", -"O. c #6968A6", -"+. c #706FA8", -"@. c #7675AC", -"#. c #7C7BAC", -"$. c #0202FE", -"%. c #1F1EF7", -"&. c #1413FA", -"*. c #201FF7", -"=. c #2424F6", -"-. c #2D2DF3", -";. c #3B3AF1", -":. c #3434F3", -">. c #4241EF", -",. c #4847EE", -"<. c #4C4BED", -"1. c #807FDF", -"2. c #8E8C89", -"3. c #948F8B", -"4. c #94918E", -"5. c #98918E", -"6. c #979592", -"7. c #999693", -"8. c #9B9996", -"9. c #9E9C99", -"0. c #A09E9B", -"q. c #BC9390", -"w. c #85B281", -"e. c #88B384", -"r. c #8EB58A", -"t. c #90B78C", -"y. c #9ABA96", -"u. c #9DBB98", -"i. c #A2A19D", -"p. c #A3BD9F", -"a. c #8281AD", -"s. c #8987B2", -"d. c #8B89B1", -"f. c #9694B5", -"g. c #9897B7", -"h. c #A6A4A1", -"j. c #A8A6A3", -"k. c #ABA9A5", -"l. c #AFADAA", -"z. c #B1AEAB", -"x. c #B5A9A5", -"c. c #A6BFA1", -"v. c #B2B1AE", -"b. c #ABA9BD", -"n. c #A5A4BC", -"m. c #B6B4B1", -"M. c #B9B7B3", -"N. c #BCBAB5", -"B. c #BEBDB9", -"V. c #D39693", -"C. c #E38B88", -"Z. c #E38986", -"A. c #E9908D", -"S. c #E69591", -"D. c #E79A96", -"F. c #E59E9B", -"G. c #E1A19D", -"H. c #DCAAA6", -"J. c #D9AEAA", -"K. c #DEB4AF", -"L. c #C0BCB6", -"P. c #C1BDBB", -"I. c #D6B7B4", -"U. c #DFB6B2", -"Y. c #D8BCB7", -"T. c #E0AEAA", -"R. c #E1B0AC", -"E. c #E2BAB6", -"W. c #A5C1A0", -"Q. c #AAC2A5", -"!. c #AEC3A9", -"~. c #B1C3AB", -"^. c #B7C5B2", -"/. c #BFC8BA", -"(. c #B9C7B3", -"). c #C4C2BE", -"_. c #C2C9BC", -"`. c #C4C2B2", -"'. c #DFC1BD", -"]. c #D3C1BD", -"[. c #8785DD", -"{. c #BCBAC3", -"}. c #B9B7CF", -"|. c #B6B5C2", -" X c #AEADD6", -".X c #AAA8DA", -"XX c #B7B5D7", -"oX c #BDBBD0", -"OX c #C0BEC4", -"+X c #C6C4C1", -"@X c #C9C6C3", -"#X c #C6CDC0", -"$X c #CCCBC6", -"%X c #C4C2CC", -"&X c #CECCC9", -"*X c #DCC7C2", -"=X c #DFC8C3", -"-X c #D1CECB", -";X c #DCCDC8", -":X c #C6D2CD", -">X c #D5D3C6", -",X c #DEDBC2", -" c #656464", +", c #6A6A6A", +"< c #7B7B7B", +"1 c #D20F0F", +"2 c #D01E1E", +"3 c #FF0101", +"4 c #FD0B0B", +"5 c #FD1212", +"6 c #FB1D1D", +"7 c #FB2323", +"8 c #F83434", +"9 c #A95252", +"0 c #B85858", +"q c #F84545", +"w c #F44B4B", +"e c #F64848", +"r c #EF5757", +"t c #F65858", +"y c #EA6666", +"u c #F46363", +"i c #ED7B7B", +"p c #F27676", +"a c #9C2323", +"s c #0C830C", +"d c #028102", +"f c #168916", +"g c #1B8A1B", +"h c #118711", +"j c #318F31", +"k c #359635", +"l c #3B973B", +"z c #3D993D", +"x c #289128", +"c c #439C43", +"v c #489E48", +"b c #4DA14D", +"n c #53A253", +"m c #5AA55A", +"M c #65A965", +"N c #6BAC6B", +"B c #77B277", +"V c #020281", +"C c #0A0A83", +"Z c #111184", +"A c #131388", +"S c #1E1E8B", +"D c #22228D", +"F c #2C2C8E", +"G c #2C2C92", +"H c #3B3B99", +"J c #363695", +"K c #42429B", +"L c #48489D", +"P c #5757A5", +"I c #7373AF", +"U c #7676B0", +"Y c #7D7DB3", +"T c #6565AA", +"R c #0F0FFC", +"E c #1212FC", +"W c #2D2DF7", +"Q c #3434F6", +"! c #3D3DF5", +"~ c #4B4BF3", +"^ c #4242F9", +"/ c #6767EE", +"( c #6363F4", +") c #7777F0", +"_ c #7D8686", +"` c #949494", +"' c #9C9C9C", +"] c #9A9696", +"[ c #8B8B8B", +"{ c #8CBA8C", +"} c #82B682", +"| c #91BD91", +" . c #98BE98", +".. c #8C8CBA", +"X. c #9595BD", +"o. c #9EA1A1", +"O. c #A4A4A4", +"+. c #ABABAB", +"@. c #ABAAA7", +"#. c #B5B5B5", +"$. c #BBBBBB", +"%. c #BEB2B2", +"&. c #DD9F9F", +"*. c #C79B9B", +"=. c #E78C8C", +"-. c #F08F8F", +";. c #E69494", +":. c #ED9494", +">. c #EA9D9D", +",. c #C2BFBF", +"<. c #DFB2B2", +"1. c #E4A4A4", +"2. c #ECA6A6", +"3. c #EBAAAA", +"4. c #E1AEAE", +"5. c #E9B4B4", +"6. c #E9B9B9", +"7. c #E0B6B6", +"8. c #AAC6AA", +"9. c #AECAAE", +"0. c #B4CAB4", +"q. c #BFC1BE", +"w. c #BBCDBB", +"e. c #D3D3BF", +"r. c #9797C0", +"t. c #A4A4C5", +"y. c #A8A8C6", +"u. c #B9B9C9", +"i. c #B9B9DD", +"p. c #C5BCC3", +"a. c #C3C3C3", +"s. c #C8C5C5", +"d. c #CCC6CC", +"f. c #CBCBCB", +"g. c #C7CEC0", +"h. c #DAC5C5", +"j. c #C5D1C5", +"k. c #CCD4CC", +"l. c #C3C3D1", +"z. c #CCCCD4", +"x. c #C5C5DE", +"c. c #C8C8DD", +"v. c #D3C9D3", +"b. c #CFDADA", +"n. c #D5D5D5", +"m. c #D6D9D6", +"M. c #DADAD7", +"N. c #D7D7D8", +"B. c #DCDCDC", +"V. c #D6D9D9", +"C. c #E7C2C2", +"Z. c #E9C6C6", +"A. c #E7D5D5", +"S. c #EBD5D5", +"D. c #E3DBDB", +"F. c #E9E9D4", +"G. c #E3E3DD", +"H. c #E4E4D7", +"J. c #F4F4D6", +"K. c #CECEE0", +"L. c #DFDFE0", +"P. c #E2DEE2", +"I. c #E9DEE9", +"U. c #D7E4E4", +"Y. c #DBE3E3", +"T. c #DAEAE9", +"R. c #D6F4F4", +"E. c #E5E5E5", +"W. c #EAE6E5", +"Q. c #EAEAE3", +"!. c #EAE3EB", +"~. c #E3ECEC", +"^. c #EAEAEA", +"/. c #F0ECEC", +"(. c #F2E6F2", +"). c #FFEAFF", +"_. c #E3F3F3", +"`. c #ECF5F5", +"'. c #ECFAFA", +"]. c #E6FAFA", +"[. c #F4F4F4", +"{. c #F4FDFD", +"}. c #FDFDFD", +"|. c #F8F7F7", /* pixels */ -"wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX", -"wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX", -"wXwXwXwXwXwXwXwXwX0XwXwXwXwXkXtXpXfXwXkXwXpXkXwXwXpXpXkXpXpXpXpXwXwXwXpXpXtXpXpXkXwXwXwXwXwXwXwX", -"wXwXwXtXtXkXkXkXkXkXtXkXkXwX$X$X$X@X$X$X&X$X&X&X&X&X$X_.$X$X$X$X&X>X&X&X$X$X$X$X&X$X.%.,X-X&XkXUXpXwXwXwX", -"wXwXwXkXPXwX;XS.z t J.VXL.2.&X.=.gXXpXUXtXwXwXwX", -"wXwXwXkXJX).h.4.9.i.8.9.k.2.+X&X0X0X0XeXX@XtXUXtXwXwXwX", -"wXwXwXwXv.2.5.7.5.4.6.7.2.k.NXBXNXNXkXcXBXCXNXl.m.m.m.v.m.v.m.M.m.X>X@X).@XUXJXGXSXGXIXJXJXNX&XUXpXwXwXwX", -"wXwXpX$XN.qXJ.M c C.-X ..+.: | {.-XJXBXfXbXuXj h VX-Xi.JXtXnXdXaXw q.VXL.v.UXtXwXwXwX", -"wX2XpX$XN.wX!.F - R .w 3 6.`.s.` N.V.D.V.l g k.B.B.$.B.N.P.w.s n P.B.v.q.Y.N.M.W Q H.B.V.W.}.^.E.E.E.", +"W.E.E.^.|.E.E._.{.$ %.[.a.` n.L.n.z x N.!.m.B.#.V.P.0.f m (.P.N.k.q.B.B.J.Q ! J.B.V.E.}.^.E.E.E.", +"E.E.E.^.}.E./.^.n.o ' }.s.` n.L.l % v n | L.V.$.P.w.* * n n 0.P.f.p.G.c./ E E / c.V.E.}.^.E.E.~.", +"E.E.E.^.{./.#.- o . , s.` n.B.M b v k { P.B.$.L.w.b b c z 0.P.k.p.G.x.! ~ ~ ~ x.D.E.}.W.E.E.E.", +"W.E.E.^.|.f.O.' O.O.O.' +.] k.B.P.!.I.I.P.V.N.$.B.E.(.!.(.(.E.P.n.$.V.V.F.F.F.F.M.N.E.}.^.E.E.E.", +"E.~.E.E.$.` ' o.o.' ' o.] +.^.^.W.E.E.W.W.^./.#.$.a.$.$.$.q.$.a.,.V./.^.~.!.E.!.^.^.[.}.W.E.E.E.", +"E.E.^.N.$.M.N.n.v.n.b.n.n.W.}.[.|.[.{.{.[.}.V.O.n.f.f.n.d.s.f.n.n.|.|.[.[.{.{.|.|.^.k.}.^.E.W.E.", +"W.E.^.V.a.T.>.5 5 7 1.Y.M.^.[.E._.~.C.:.E.W.+.O.E.V.Q.r.V P E.V.P.|.E._._.D.:.C.`.a.#.}.^.E.E.E.", +"E.E.W.N.a.Y.<.1.<.4 8 U.N.^.{.A.-.w 4 6 ~.^.+.O.L.B.l.D V K G.N.B.}.E.3.u 7 3 2.].s.#.}.W.E.E.~.", +"E.E.^.m.a.B.T.;.w 4 =.U.n.^.{.6.8 3 3 7 E.^.+.@.P.G.L U K H E.N.B.}.E.u 4 3 3 3.'.s.#.}.W.E.E.E.", +"E.E.^.V.a.B.U.=.e 5 p U.M.^.[.E._.Z.r 2 E.^.+.O.Q...S l.G G n.V.L.}.W._.D.>.1 4.'.s.#.}.~.E.E.W.", +"E.E.E.n.p.E.h.B.R.8 6 M.N./.[.E.E.{.b.+ [.^.+.O.Q...= Z C = T Q.B.}.E.E.W.}.$ o.}.a.$.}.^.E.E.E.", +"E.E.^.V.,.T.r 5 6 3 y U.N.^.|.E.E.$.> . ' E.+.O.P.z.u.p.D F z.M.B.}.E.E.f.] X ; B.f.#.}.W.E.E.E.", +"E.E.W.m.a.Y.h.;.=.4.B.B.V.W.|.W.< @ O @ + [ #.O.L.B.Y.G.t.t.G.V.B.}.[.+.- + @ + : $.$.}.W.E.E.E.", +"E.E.^.V.a.Y.B.T.T.U.V.B.N.^.N.@.+.#.#.#.#.+.] O.B.N.N.n.G.G.N.N.P.^.+.O.+.#.#.#.+.' #.}.^.E.E.W.", +"E.E.^.V.+.$.$.p.p.p.#.$.$.#.+.O.O.O.@.@.O.O.O.M.|.[.[.[.[.[.|.|./.^.E.Y.D.B.B.L.E.B.E.}.~.E.E.E.", +"E.E.^.V.a.P.n.8. .0.P.V.D.$.n.P.B.G.u.y.V.E.B.|.[.^./.[.'.[.^.^.#.|.|.[.[.{.'.[.|.B.s.}.^.E.W.W.", +"E.E.W.N.q.E.N s f & } P.B.a.k.V.E.t.= Z l.M.N.[.^._.~.C.u =._.B.o.|.E._.E.3.w 5.`.a.#.}.~.E.E.E.", +"W.E.^.N.u.E.0.j.B.g j D.B.a.z.G.n.J G A l.D.N.[.[.>.8 4 3 u '.D.@.{.E.p 6 3 3 2.'.s.$.}.E.E.E.E.", +"E.E.^.V.e.B.B.!.j.& N I.B.q.f.Q.P I ..= m.L.N.|.`.5.t 6 3 u ].B.O.|.E.:.e 4 3 3.'.s.#.}.W.E.~.E.", +"E.E.E.N.$.M.P.w.h n I.V.V.e.n.l.= U K = Y L.m.[.^.~._.W.0 9 '.B.O.|.W.].~.S.a *.'.s.#.}.W.E.E.E.", +"E.E.^.N.u.E.8.s k 9.0.M.L.$.n.l.H G A = K M.N.[.[.E./.}._ : }.D.O.{.W.W.[.}.# O.}.s.#.}.W.E.E.E.", +"E.E.^.N.e.^.M % g d k V.L.u.f.B.V.Q.Y C z.D.N.[.`.D.+.> X . < n.+.[.^.N.` - O ' s.#.}.~.E.E.W.", +"E.E.W.z.$.L.n.j.j.k.k.V.M.$.n.B.M.B.z.z.N.M.N.[.`.s., ; > > ; O.+.[.^.@.; ; , ; , #.$.}.^.E.E.E.", +"E.E.^.B.f.E.B.E.P.P.P.M.E.s.n.Y.B.L.D.B.B.L.Y.[.#.O.$.$.$.#.q.@.+.E.O.+.#.$.#.$.$.o.s.}.E.E.E.E.", +"E.E.E.E.}.|.|.|.}.|.}.}.[.E.}.|.}.}.}.}.}.}.^.^.|.|.[.[.[.[.[.{.E.[.|.{.[.[.|.[.[.[.E.}.W.E.E.E.", +"E.E.E.^.}.E.E.E.E.W.E.^.a.a.}.E.E.E.E.^.E./.#.B.[.E.E.W.^.W.E.E.+.|.^.E.^.~.^.E./.f.$.}.W.E.E.~.", +"E.E.E.^.}.E.E.E.E.E.E.`.$.a.|.E.~.E.E.E.E.^.@.L.[.E.E.E.E.E.E.D.O.|.E.E.E.E.E.E.^.d.#.}.^.E.E.W.", +"E.E.E.^.}.E.E.E.E.E.E.`.a.a.}.E.^.E.E.E.E.^.@.E.[.E.E.E.E.E.W.Y.@.|.^.E.E.E.E.E.^.s.$.}.E.E.E.E.", +"W.E.E.^.}.E.E.E.E.E.E.^.a.$.|.E.E.E.E.E.E.^.@.D.[.Y.E.E.E.E.E.P.O.|.^.E.E.E.E.E.^.s.#.}.^.E.E.E.", +"~.E.E.^.}.E.E.E.E.E.E.^.u.a.}.E.E.E.E.E.E.^.+.Y.[.E.E.E.E.E.W.Y.O.|.E.E.E.E.E.E.`.f.#.}.W.E.E.E.", +"E.W.E.^.{.E.E.E.E.E.P.E.e.q.}.B.E.E.E.E.E.^.O.E.[.L.E.E.E.E.E.E.O.}.E.E.E.E.E.E.W.s.#.}.^.E.~.E.", +"E.E.E.^.}.^./.^.^./.W.[.a.q.}.^.^.^.^.^.^.[.+.B.{.^.^.^.^.W.^.E.O.{.^.^.^.W.^.^.[.f.#.}.W.E.E.E.", +"E.E.E.^.{.f.s.s.f.f.f.f.+.q.[.a.f.s.f.f.f.f.' E.D.s.f.s.f.f.f.a.' [.n.s.f.f.f.f.f.#.#.}.W.E.E.E.", +"E.E.E.^.E.#.#.$.#.#.#.$.#.V.n.#.$.#.#.#.#.#.$.E.a.#.$.#.#.#.$.#.s.E.$.#.#.#.#.#.#.#.n.}.W.E.~.W.", +"E.E.E.W.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.^.E.E.E.", +"E.~.E.W.^.W.^.W.^.E.^.^.W.W.^.~.^.W.~.W.W.~.W.^.E.W.~.W.^.E.^.E.W.W.^.E.W.^.W.~.~.W.^.^.E.E.~.E.", +"E.W.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.W.", +"W.E.E.E.E.E.E.E.E.E.E.E.E.W.E.E.W.E.E.~.E.E.E.E.E.E.E.E.E.E.E.E.W.~.E.E.E.E.E.W.E.E.E.E.~.E.E.E.", +"E.E.~.W.E.E.~.E.E.E.E.E.W.E.E.E.E.E.E.E.E.W.E.W.~.E.W.E.E.^.E.E.E.E.E.E.~.W.E.E.E.E.W.E.E.E.W.E." }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/mines.sav sgt-puzzles-20160429.b31155b/icons/mines.sav --- sgt-puzzles-20140928.r10274/icons/mines.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/mines.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,67 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :5:Mines +PARAMS :6:9x9n35 +CPARAMS :6:9x9n35 +SEED :15:698938038698621 +DESC :26:0,0,me0691ca8a278f3c371688 +PRIVDESC:22:me0691ca8a278f3c371688 +UI :3:D0C +TIME :7:75.2958 +NSTATES :2:56 +STATEPOS:2:41 +MOVE :4:O0,0 +MOVE :4:F1,2 +MOVE :4:F0,2 +MOVE :4:O2,2 +MOVE :4:F2,1 +MOVE :4:F3,1 +MOVE :4:F3,2 +MOVE :4:F3,3 +MOVE :4:F1,3 +MOVE :4:F2,3 +MOVE :4:C1,0 +MOVE :4:C2,0 +MOVE :4:C3,0 +MOVE :4:F5,0 +MOVE :4:F5,1 +MOVE :4:C4,1 +MOVE :4:O6,1 +MOVE :4:O6,2 +MOVE :4:O6,3 +MOVE :4:F7,1 +MOVE :4:O7,4 +MOVE :4:O5,4 +MOVE :4:F5,3 +MOVE :4:F5,5 +MOVE :4:F6,6 +MOVE :4:C6,5 +MOVE :4:F8,6 +MOVE :4:C6,3 +MOVE :4:F8,2 +MOVE :4:C7,2 +MOVE :4:F8,0 +MOVE :4:F7,0 +MOVE :4:F6,0 +MOVE :4:C4,2 +MOVE :4:F4,4 +MOVE :4:F4,5 +MOVE :4:F3,4 +MOVE :4:C5,6 +MOVE :4:F7,7 +MOVE :4:F8,7 +MOVE :4:F7,8 +MOVE :4:O4,8 +MOVE :4:F3,6 +MOVE :4:C4,6 +MOVE :4:F3,8 +MOVE :4:F5,8 +MOVE :4:C6,7 +MOVE :4:C3,7 +MOVE :4:F2,5 +MOVE :4:F2,4 +MOVE :4:F1,8 +MOVE :4:F1,7 +MOVE :4:C2,7 +MOVE :4:C2,6 +MOVE :4:C1,6 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/mines-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/mines-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/net-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/net-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/net-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/net-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/net-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/net-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/net-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/net-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/net-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/net-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/net-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/net-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/net-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/net-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/net-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/net-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/net-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/net-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/net-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/net-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/net-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/net-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/net-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/net-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/net.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/net.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/net-icon.c sgt-puzzles-20160429.b31155b/icons/net-icon.c --- sgt-puzzles-20140928.r10274/icons/net-icon.c 2014-09-29 00:33:44.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/net-icon.c 2016-04-29 00:31:43.000000000 +0000 @@ -1,606 +1,585 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 182 2 ", -" c #DBD8D3", -". c #D4D0CB", -"X c #D4D2CD", -"o c #D3D2CD", -"O c #D3D1CC", -"+ c #D2D1CC", -"@ c #D2D0CB", -"# c #D3D1CD", -"$ c #DBD9D4", -"% c #CEC0BC", -"& c #917471", -"* c #A6AAA6", -"= c #A4A29E", -"- c #A6A4A0", -"; c #A9A6A2", -": c #D3D0CB", -"> c #D4D1CC", -", c #D2CFCB", -"< c #D7D3CE", -"1 c #AEABA7", -"2 c #A5A4A0", -"3 c #A7A4A0", -"4 c #D5D3CE", -"5 c #CCBEB9", -"6 c #8E6E6B", -"7 c #A8ACA8", -"8 c #A3A19D", -"9 c #989D99", -"0 c #9DA19D", -"q c #CDD0CC", -"w c #D4D6D1", -"e c #CFD2CD", -"r c #ABB0AB", -"t c #525452", -"y c #0E0D0D", -"u c #434543", -"i c #A1A5A1", -"p c #CCBEBA", -"a c #8D6E6C", -"s c #ABACA8", -"d c #5A8280", -"f c #5D8280", -"g c #648684", -"h c #86A5A2", -"j c #6E9B98", -"k c #669795", -"l c #87A5A2", -"z c #6D9390", -"x c #2A3A39", -"c c black", -"v c #1C2727", -"b c #6F908D", -"n c #D0D0CB", -"m c #8F6F6C", -"M c #A7ABA7", -"N c #628381", -"B c #A9A5A1", -"V c #ACA8A4", -"C c #EDE3DE", -"Z c #B1C1BD", -"A c #9EB6B2", -"S c #F2E7E2", -"D c #B5B1AD", -"F c #7B7976", -"G c #5A5957", -"H c #757371", -"J c #ABA6A2", -"K c #8A6A68", -"L c #9FA39F", -"P c #5B7E7C", -"I c #9A9A96", -"U c #9C9D99", -"Y c #D6CFCA", -"T c #AAB4B0", -"R c #98AAA7", -"E c #DAD3CE", -"W c #A8A9A5", -"Q c #B5B4B0", -"! c #9F9E9A", -"~ c #B1B0AC", -"^ c #AAAAA6", -"/ c #8D6E6B", -"( c #A5A9A5", -") c #5F827F", -"_ c #A1A19D", -"` c #A8A6A2", -"' c #7AACA9", -"] c #6DA5A3", -"[ c #D6D3CE", -"{ c #CCCAC6", -"} c #E5E3DE", -"| c #81807D", -" . c #D0CEC9", -".. c #D6D4D0", -"X. c #8E6F6C", -"o. c #608280", -"O. c #A1A19E", -"+. c #B0ABA7", -"@. c #B6C4C0", -"#. c #00EFEF", -"$. c #D3CDC8", -"%. c #E2E1DC", -"&. c #83827F", -"*. c #608380", -"=. c #A2A29E", -"-. c #B9C5C0", -";. c #11DBDA", -":. c #10DADA", -">. c #D3CEC9", -",. c #E4E3DD", -"<. c #D1CFCA", -"1. c #D4D2CE", -"2. c #D2D0CC", -"3. c #8D6D6A", -"4. c #A4A8A4", -"5. c #5E817F", -"6. c #A09F9B", -"7. c #A6A5A1", -"8. c #CCC8C3", -"9. c #CBC8C3", -"0. c #CAC8C3", -"q. c #E1E1DC", -"w. c #80827F", -"e. c #CCCDC8", -"r. c #8A6B68", -"t. c #5C7F7C", -"y. c #9E9D99", -"u. c #9A9995", -"i. c #ACABA7", -"p. c #ACABA6", -"a. c #A7A6A2", -"s. c #9F9F9B", -"d. c #AFA6A2", -"f. c #A08A86", -"g. c #AB9F9B", -"h. c #A6A6A2", -"j. c #D4D1CD", -"k. c #5F8280", -"l. c #A3A29E", -"z. c #A0A19D", -"x. c #A49995", -"c. c #649E9C", -"v. c #26C8C7", -"b. c #55A4A2", -"n. c #A99E9A", -"m. c #D2D3CE", -"M. c #8D6D6B", -"N. c #AAABA6", -"B. c #5B807E", -"V. c #5D8481", -"C. c #627573", -"Z. c #2BA3A2", -"A. c cyan", -"S. c #31BFBE", -"D. c #AC9894", -"F. c #D2D4CF", -"G. c #CCBDB9", -"H. c #8F7370", -"J. c #ABB4B0", -"K. c #ABABA7", -"L. c #A4AAA6", -"P. c #A5A19D", -"I. c #75A5A2", -"U. c #3FBCBB", -"Y. c #68A7A5", -"T. c #ABA7A3", -"R. c #D1C6C2", -"E. c #885956", -"W. c #8E706E", -"Q. c #8F6F6D", -"!. c #896B68", -"~. c #956E6B", -"^. c #9B6764", -"/. c #956B68", -"(. c #917572", -"). c #DCDBD6", -"_. c #CBBCB8", -"`. c #CDBEBA", -"'. c #CABEBA", -"]. c #C9C0BB", -"[. c #C9BEB9", -"{. c gray100", +"16 16 242 2 ", +" c #E5E4E4", +". c #DDDBDB", +"X c #DDDEDE", +"o c #DDDDDD", +"O c #DDDDDD", +"+ c #DDDDDD", +"@ c #DDDDDD", +"# c gainsboro", +"$ c gainsboro", +"% c #DDDDDD", +"& c #DDDDDD", +"* c #DDDDDD", +"= c #DDDDDD", +"- c #DDDDDD", +"; c gray87", +": c gray90", +"> c #D7CBCB", +", c #967A7A", +"< c #ADB2B2", +"1 c #ABAAAA", +"2 c #ADACAC", +"3 c #B0AFAF", +"4 c #DDDCDC", +"5 c #DDDCDC", +"6 c #DCDBDB", +"7 c #E0DFDF", +"8 c #B5B4B4", +"9 c #ABAAAA", +"0 c gray68", +"q c #ADACAC", +"w c #AEADAD", +"e c gray87", +"r c #D5C8C8", +"t c #927474", +"y c #B0B4B4", +"u c #AAA9A9", +"i c #9FA4A4", +"p c #A4A9A9", +"a c #D6DCDC", +"s c #DEE1E1", +"d c #DEE1E1", +"f c #D8DDDD", +"g c #B3B8B8", +"h c #565858", +"j c #0F0E0E", +"k c #464848", +"l c #A7ACAC", +"z c gray86", +"x c #D5C8C8", +"c c #927474", +"v c #B2B5B5", +"b c #5E8686", +"n c #618787", +"m c #688B8B", +"M c #8CACAC", +"N c #73A1A1", +"B c #6B9D9D", +"V c #8DADAD", +"C c #729999", +"Z c #2C3C3C", +"A c black", +"S c #1D2929", +"D c #739696", +"F c #D9DBDB", +"G c #D5C8C8", +"H c #937575", +"J c #AEB4B4", +"K c #668888", +"L c #B1ADAD", +"P c #B4B1B1", +"I c #F8F0F0", +"U c #B9CBCB", +"Y c #A6BEBE", +"T c #FDF5F5", +"R c #BDBABA", +"E c #807F7F", +"W c #5D5E5E", +"Q c #7A7979", +"! c #B2AFAF", +"~ c #DDDDDD", +"^ c #D5C9C9", +"/ c #8E7070", +"( c #A6ABAB", +") c #5F8383", +"_ c #A1A2A2", +"` c #A3A5A5", +"' c #E0DBDB", +"] c #B1BDBD", +"[ c #9FB3B3", +"{ c #E4DFDF", +"} c #B0B2B2", +"| c gray74", +" . c gray65", +".. c #B9B9B9", +"X. c #B2B3B3", +"o. c #DDDDDD", +"O. c #D5C8C8", +"+. c #927373", +"@. c #ADB2B2", +"#. c #638686", +"$. c gray66", +"%. c #AFAFAF", +"&. c #DFDEDE", +"*. c #7FB3B3", +"=. c #72ABAB", +"-. c #E0DEDE", +";. c gray84", +":. c #EFEFEF", +">. c gray53", +",. c gray85", +"<. c gray88", +"1. c #DDDDDD", +"2. c #D5C8C8", +"3. c #937474", +"4. c #AEB3B3", +"5. c #648787", +"6. c #A8A9A9", +"7. c #B8B4B4", +"8. c #BECECE", +"9. c #00EEEE", +"0. c #00EEEE", +"q. c #BECECE", +"w. c #DDD9D9", +"e. c #EDEEEE", +"r. c #898989", +"t. c gray85", +"y. c #DDDDDD", +"u. c gainsboro", +"i. c #D5C8C8", +"p. c #937474", +"a. c #AEB4B4", +"s. c #648787", +"d. c #A9AAAA", +"f. c #B8B4B4", +"g. c #C1CFCF", +"h. c #11DBDB", +"j. c #11DBDB", +"k. c #C1CFCF", +"l. c #DDD9D9", +"z. c #EEEFEF", +"x. c #898989", +"c. c #DADADA", +"v. c gray87", +"b. c gainsboro", +"n. c #D5C8C8", +"m. c #917373", +"M. c #ABB0B0", +"N. c #628585", +"B. c #A7A7A7", +"V. c gray68", +"C. c #DFDFDF", +"Z. c #D5D3D3", +"A. c #D5D3D3", +"S. c #DFDFDF", +"D. c LightGray", +"F. c #ECEDED", +"G. c #868989", +"H. c #D6D8D8", +"J. c #DDDDDD", +"K. c #DDDDDD", +"L. c #D5C9C9", +"P. c #8F7070", +"I. c #A6ABAB", +"U. c #608383", +"Y. c #A5A5A5", +"T. c gray63", +"R. c gray68", +"E. c #B4B4B4", +"W. c gray70", +"Q. c #AFAEAE", +"!. c #A6A7A7", +"~. c #B6AFAF", +"^. c #A79292", +"/. c #B2A8A8", +"(. c #AEAFAF", +"). c #DDDDDD", +"_. c #D5C8C8", +"`. c #947575", +"'. c #AFB4B4", +"]. c #638787", +"[. c #ACACAC", +"{. c #A5A5A5", +"}. c #A7A7A7", +"|. c #A9AAAA", +" X c #A9A9A9", +".X c #A7A9A9", +"XX c #ABA1A1", +"oX c #68A3A3", +"OX c #28CACA", +"+X c #58A8A8", +"@X c #B0A6A6", +"#X c #DCDEDE", +"$X c #D5C9C9", +"%X c #927373", +"&X c #B2B3B3", +"*X c #668888", +"=X c #5F8585", +"-X c #648787", +";X c #618888", +":X c #667A7A", +">X c #2DA6A6", +",X c cyan", +" , < 1 = 2 - 3 4 ", -"5 6 7 8 9 0 q w w e r t y u i @ ", -"p a s d f g h j k l z x c v b n ", -"5 m M N B V C Z A S D F G H J O ", -"p K L P I U Y T R E W Q ! ~ ^ X ", -"5 / ( ) _ ` 4 ' ] [ { } | ...O ", -"5 X.M o.O.+.@.#.#.@.$.%.&. .O @ ", -"5 X.M *.=.+.-.;.:.-.>.,.&.<.1.2.", -"p 3.4.5.6.7.4 8.9.4 0.q.w.e.O O ", -"p r.L t.y.u.7.i.p.a.s.d.f.g.h.j.", -"5 m 7 k.2 y.6.l.=.z.x.c.v.b.n.m.", -"p M.N.N B.t.5.*.o.V.C.Z.A.S.D.F.", -"G.H.J.K.7 L 4.M M L.P.I.U.Y.T.m.", -"R.E.W.M.Q.r.M.X.X.6 !.~.^./.(.. ", -").R._.p 5 p p 5 5 5 `.'.].[.% " +" . X o O + @ # $ % & * = - ; : ", +"> , < 1 2 3 4 5 6 7 8 9 0 q w e ", +"r t y u i p a s d f g h j k l z ", +"x c v b n m M N B V C Z A S D F ", +"G H J K L P I U Y T R E W Q ! ~ ", +"^ / ( ) _ ` ' ] [ { } | ...X.o.", +"O.+.@.#.$.%.&.*.=.-.;.:.>.,.<.1.", +"2.3.4.5.6.7.8.9.0.q.w.e.r.t.y.u.", +"i.p.a.s.d.f.g.h.j.k.l.z.x.c.v.b.", +"n.m.M.N.B.V.C.Z.A.S.D.F.G.H.J.K.", +"L.P.I.U.Y.T.R.E.W.Q.!.~.^./.(.).", +"_.`.'.].[.{.}.|. X.XXXoXOX+X@X#X", +"$X%X&X*X=XU.N.-X5.;X:X>X,X c #2E706F", -", c #2D7271", -"< c #2F7877", -"1 c #337372", -"2 c #3D7473", -"3 c #3D7F7D", -"4 c #495250", -"5 c #535351", -"6 c #635E5B", -"7 c #456766", -"8 c #466866", -"9 c #4A7674", -"0 c #527E7C", -"q c #5B7F7D", -"w c #6D6E6B", -"e c #706C6A", -"r c #6C7A77", -"t c #737370", -"y c #3D807F", -"u c #43817F", -"i c #54817F", -"p c #5A817F", -"a c #248786", -"s c #3F8482", -"d c #3F8B89", -"f c #3D9492", -"g c #02AEAE", -"h c #4F8886", -"j c #5D8583", -"k c #5E8886", -"l c #528B89", -"z c #598D8B", -"x c #5F9F9D", -"c c #7A8885", -"v c #7F8F8C", -"b c #7F918E", -"n c #6D9693", -"m c #789895", -"M c #00CACB", -"N c #10C8C8", -"B c #02D4D4", -"V c #00DBDB", -"C c #00E2E2", -"Z c #00ECEC", -"A c #01F5F6", -"S c #03FFFF", -"D c #8B8783", -"F c #8C8885", -"G c #8C8F8B", -"H c #938B87", -"J c #978C89", -"K c #80908D", -"L c #8F928E", -"P c #8C9390", -"I c #8B9B98", -"U c #959491", -"Y c #989492", -"T c #959995", -"R c #9B9A96", -"E c #9D9D99", -"W c #A19794", -"Q c #A39894", -"! c #A19C98", -"~ c #9FA29E", -"^ c #A2A29E", -"/ c #ADA29E", -"( c #88A5A2", -") c #8CAAA6", -"_ c #9CABA7", -"` c #95AEAA", -"' c #9CACA8", -"] c #A5A4A1", -"[ c #AAA6A1", -"{ c #A5A9A5", -"} c #ABA9A5", -"| c #A1ACA8", -" . c #AFAEAA", -".. c #B1A6A1", -"X. c #B4A9A4", -"o. c #B1AFAB", -"O. c #BBAEA9", -"+. c #B3B3AF", -"@. c #BDB2AD", -"#. c #A7B8B4", -"$. c #AABAB6", -"%. c #AFBEBA", -"&. c #B6B5B0", -"*. c #BAB6B1", -"=. c #B7BBB6", -"-. c #BCBBB7", -";. c #BDBDB9", -":. c #C4AEA9", -">. c #C1BFBA", -",. c #CEBEBA", -"<. c #B8C0BC", -"1. c #C3C2BD", -"2. c #CAC3BE", -"3. c #C7C6C1", -"4. c #CDC6C2", -"5. c #CDCAC5", -"6. c #CFCDC9", -"7. c #D1CECA", -"8. c #CFD2CD", -"9. c #D2D1CC", -"0. c #D7D5D0", -"q. c #D9D7D1", -"w. c #D7D8D3", -"e. c #DCDAD5", -"r. c #DFDDD8", -"t. c #E5DCD6", -"y. c #E8DCD7", -"u. c #E0DFDA", -"i. c #E9DED9", -"p. c #E3E2DC", -"a. c #ECE4DE", -"s. c #E7E5E0", -"d. c #EAE6E1", -"f. c #ECEAE5", -"g. c #FCEAE4", +"32 32 93 2 ", +" c #010202", +". c #111111", +"X c #1D1D1D", +"o c #292828", +"O c #323232", +"+ c #702727", +"@ c #732A2A", +"# c #7E2B2B", +"$ c #783333", +"% c #1E4444", +"& c #296161", +"* c #247171", +"= c #2E7474", +"- c #327474", +"; c #317A7A", +": c #414141", +"> c #4C5656", +", c gray34", +"< c #496B6B", +"1 c #407777", +"2 c #4E7A7A", +"3 c #686262", +"4 c #737272", +"5 c #747C7C", +"6 c #268989", +"7 c #02AEAE", +"8 c #418383", +"9 c #498585", +"0 c #418C8C", +"q c #568282", +"w c #5B8585", +"e c #558E8E", +"r c #5E8888", +"t c #409797", +"y c #5D9292", +"u c #628585", +"i c #628C8C", +"p c #7F8E8E", +"a c #729B9B", +"s c #7D9E9E", +"d c #63A4A4", +"f c #00CACA", +"g c #11C9C9", +"h c #02D4D4", +"j c #00DEDE", +"k c #00E2E2", +"l c #00EAEA", +"z c #01F5F5", +"x c #03FFFF", +"c c #918E8E", +"v c #859696", +"b c #8D9595", +"n c #959595", +"m c #9C9393", +"M c #969A9A", +"N c #9C9C9C", +"B c #8EACAC", +"V c #92A3A3", +"C c #9DA1A1", +"Z c #93B1B1", +"A c #9BB6B6", +"S c #A3A3A3", +"D c #AAA1A1", +"F c #A6AAAA", +"G c #ABACAC", +"H c #B4ADAD", +"J c #B9AFAF", +"K c #A4B3B3", +"L c #ACB1B1", +"P c #B3B3B3", +"I c #BBB2B2", +"U c #BBBBBB", +"Y c #C3B7B7", +"T c #C5BDBD", +"R c #CCB8B8", +"E c #AFC1C1", +"W c #B2C3C3", +"Q c #BEC3C3", +"! c #B7C8C8", +"~ c #C5C5C5", +"^ c #C1CACA", +"/ c #CCCCCC", +"( c #D6CACA", +") c #D6D1D1", +"_ c #DBDBDB", +"` c #E4E4E4", +"' c #EAEBEB", +"] c #F3E7E7", +"[ c #F3EAEA", +"{ c #FAEFEF", +"} c #F3F2F2", +"| c #FAF3F3", +" . c #FCF8F8", /* pixels */ -"e.e.r.r.r.r.r.r.u.u.r.u.r.r.u.u.u.r.r.e.u.u.e.u.u.e.u.r.r.r.e.e.", -"e.e.7.9.9.9.7.9.9.9.9.7.6.6.7.6.4.7.6.7.9.9.9.9.9.9.7.9.7.9.e.e.", -"u.4.= T E R R E R R R R 1.>.1.>.-.1.>.3.{ U R R Y R Y R E Y 9.r.", -"u.4.% ^ [ [ ] ] ] [ ^ ] p.u.u.u.u.u.u.s.*.E } .o.o.o.} [ R 7.u.", -"r.4.& ~ ] ^ ^ ] ] ] ^ ^ e.e.w.e.e.e.0.r.+.~ U O O + o t .R 9.r.", -"u.4.% ^ ] ] [ ..[ ../ ..p.i.t.t.y.t.t.a.@./ H 6 @.R 7.r.", -"u.4.% ~ ] [ K , > > > > 3 s 3 s d 3 s s 1 , ; - < 1 8.u.", -"u.4.% ~ ] X.i 2 P v v K $.#.;.n u ;.#.%.I b r 4 I c 7.u.", -"u.4.& ~ ] X.0 p O.} [ ..a.u.g.` z g.t.d.>.[ U X X X . e &.! 9.u.", -"u.4.& ~ ] X.0 0 X.^ ^ ] u.q.a.) l a.e.u.+.E ] [ } } } [ ] R 7.u.", -"u.4.& E ^ ..0 0 ..^ E ^ 0.9.t.( h t.7.e.o.Y ! E ~ [ E R E U 9.u.", -"u.4.$ P U Q 9 9 Q U U U >.=.4.m u 2.=.1.[ o.&.>.U 5 ;.+.*.[ 7.u.", -"u.4.$ ~ { X.0 0 X.] ] ] u.u.g._ z g.u.t.1.e.u.f.o.@ f.r.s.3.6.r.", -"u.4.& ~ ] X.0 0 X.] ^ ^ p.=.x f a x =.a.;.9.e.p.} @ s.0.r.>.6.r.", -"u.4.& ~ ] X.0 0 X.] ^ ^ a._ C S S C ' d.;.9.e.s.} @ s.e.r.1.7.r.", -"u.4.& ~ ] X.0 0 X.] ^ ^ d._ C S S C _ d.;.9.e.s.} @ s.q.p.-.6.r.", -"p.4.% ~ ^ X.0 0 X.[ ^ ^ a._ C S S C _ a.-.9.e.s...@ s.e.r.;.6.r.", -"u.4.% ~ ^ X.0 0 X.^ ^ ^ a.| g N N g | a.-.0.e.s.} @ s.0.r.3.6.r.", -"u.4.% ^ ^ X.0 0 X.] ^ ^ r.0.2.,.,.,.q.u.;.9.e.s.} @ f.0.u.1.6.r.", -"u.4.% ~ ^ X.0 0 X.^ ^ ^ u.r.p.p.p.p.u.p.>.q.r.s.} @ f.e.p.1.6.r.", -"u.4.$ L U Q 9 9 Q U U G ] ] ^ ^ ^ ] ] [ U ^ ] ] U w { ^ ] R 9.u.", -"u.4.$ ~ ] X.i i X.] [ U ^ ^ ^ ^ ^ ^ ^ ] U ! ] ....O.[ ] ^ R 7.u.", -"u.4.$ ~ ^ X.0 i ..~ ^ U ^ ^ ] ] ] ] ^ ] U ] R j k k j G [ R 9.u.", -"u.4.& ~ ^ X.0 p :.X.X.Q X.X.X.X.X.X.X.X.Q X.J M S A Z j X.R 7.u.", -"u.4.& ~ ] X.p : p 0 0 9 0 0 0 0 0 0 0 0 9 i 8 B S S A k ..R 7.r.", -"u.4.& ~ ] { T i 0 0 0 9 0 0 0 0 0 0 0 i 9 i 7 B S S A k X.R 9.r.", -"u.4.& ~ { ^ ^ X.X.X.X.Q X.X.X.X.X.X.X.X.R X.J g V B M q X.R 9.r.", -"u.4.& ~ [ / { ^ ] ] ] U ^ ] ^ ] ] ^ ] ] Y ^ ^ F D F D R } R 7.r.", -"p.4.$ ~ ^ ~ ~ ~ ~ ~ ~ L ~ ~ ~ ~ ^ ^ ~ ] L ~ ~ { { { { ^ ~ T 9.r.", -"r.8.* # % % % % % & & # & $ & & % % $ $ # % % $ # % % % $ = 9.r.", -"q.r.8.2.4.4.4.4.4.4.4.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.q.e.", -"r.q.r.u.u.u.u.p.r.p.r.u.u.p.u.u.u.u.u.u.r.p.u.u.u.u.u.u.p.u.e.e." +"` ` ' ' ` ' ' ' ' ' ' ' ' ' ' ' ' ` ' ' ' ' ' ' ` ' ' ' ' ` ` ' ", +"' ` _ _ _ _ _ _ _ _ _ _ ) _ _ _ ) _ ) _ _ _ _ _ _ _ _ _ _ _ ` ` ", +"' ) $ C S S S S S S S S ( / / / / / / / G N S S S C C C S N _ ' ", +"' ) @ G G H G G G G F H ' ' ' ' ' ' ' } ~ S P P I U U H H S _ ' ", +"' ) @ F H G G G F G F G ` ` ` ` ` ` ` ' U F M O O O o 4 P C _ ' ", +"' ) @ F G G H H H H H H } ] ] ] ] [ ] | T H m 3 T D _ ' ", +"' ) @ F G H v = = - = - 6 9 8 0 6 8 8 8 - ; & % ; - _ ' ", +"' ) @ F G Y w ; n v v v ! U ^ a 9 / W ! V v 5 > V p _ ' ", +"' ) @ G G I q w R P H P [ ' .A y .' | ~ H N X o X . 4 T F _ ' ", +"' ) @ F G I q q I F F G ` ` | Z e { ` ' T S G P L G L H G S _ ' ", +"' ) @ F F J q q J F F F ` _ ] B e ] _ ` U N F S F H S S S N _ ' ", +"' ) @ M N D 2 2 D N m N / ^ ( s 9 ( ^ / L I U ~ N , ~ U ~ H _ ' ", +"' ) @ K G I q q Y G G H ' ' .K y .' ' / ` ' .P : .` [ / _ ' ", +"' ) @ F G I q q I F F G [ Q d t 6 d Q } ~ _ ` } P : } ` ' / _ ' ", +"' ) @ F G I q q I G F G } K k x x j K | ^ _ ` } P : } ` ' / _ ` ", +"' ) @ F G I q q Y F D G } K k x x k K | ^ ` ` } P : } ` ' / ) ' ", +"' ) @ F G I q q I G F G } K k x x k K | ^ _ ` } P : } ` ' / ) ' ", +"' ) @ F G I q q I G D G } L 7 g g 7 L } / _ ` } P : } ` ' / _ ' ", +"' ) @ F G I q q I G F G ' ` ( ( ( ( ` ' ~ _ ` } P : } ` ' / ) ' ", +"' ) @ F F I q q I G F G ' ' ' } ' ' ' ' / ` ' } P : | ' ' / _ ' ", +"' ) + N N D 2 2 D N N n H G G G G G G H N F H G N 4 L F L S _ ' ", +"' ) @ F G I q q I G G N F F F D G F F G N F G J H Y J H F S _ ' ", +"' ) @ F G I q q J F F N G G F G G G F G N F N u i i w b P S _ ` ", +"' ) @ F F I q u R I I D I I I I I I I Y D Y m f x z l i J S _ ' ", +"' ) @ F L I q * w q q 2 q q q q q q q q 2 q < h x x z i I S _ ' ", +"' ) @ F G P C q q q q 2 q q q q q q q q 2 q < h x x z i J S _ ` ", +"} ) + F H F P I I I I D I I I I I I I I D I m 7 j h f u I S _ ' ", +"' ) @ F G H G F G G G M F G G G G G G G C G F b c c c N H S _ ' ", +"' ) @ C G F F F F F F M F F F F G F F G M C F L L L P G F C _ ' ", +"' _ # + @ @ @ @ @ @ @ @ @ @ + $ + @ @ @ @ @ @ @ @ + @ @ + $ _ ' ", +"' ` _ ) ) ) ) ) _ ) ) ) ) ) ) ) ) ) ) ) _ ) ) ) ) ) ) ) ) ) ` ` ", +"` ' ' ' ' } ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ` ` " }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 171 2 ", +"48 48 132 2 ", " c #010101", ". c #090909", -"X c #272726", -"o c #282727", -"O c #292827", -"+ c #2C2B2B", -"@ c #660404", -"# c #680404", -"$ c #6E0A0A", -"% c #711111", -"& c #7E1F1E", -"* c #004343", -"= c #064C4B", -"- c #005252", -"; c #006464", -": c #0D6767", -"> c #006969", -", c #0A6A6A", -"< c #1D6E6D", -"1 c #1F706F", -"2 c #007374", -"3 c #007B7B", -"4 c #1D7473", -"5 c #226D6C", -"6 c #227675", -"7 c #317674", -"8 c #3C7876", -"9 c #3C7B7A", -"0 c #474644", -"q c #4C4C4A", -"w c #445B59", -"e c #585A57", -"r c #605D5B", -"t c #705855", -"y c #61605E", -"u c #436E6C", -"i c #43706F", -"p c #467473", -"a c #4E7371", -"s c #447876", -"d c #4B7877", -"f c #4D7A78", -"g c #5B7270", -"h c #656461", -"j c #686764", -"k c #6D6D6A", -"l c #7F6764", -"z c #766866", -"x c #75716F", -"c c #6A7370", -"v c #677E7C", -"b c #687D7B", -"n c #727572", -"m c #777A78", -"M c #7A7D7A", -"N c #802C2B", -"B c #816765", -"V c #827874", -"C c #69817E", -"Z c #90827F", -"A c #0B8B8B", -"S c #1D9F9F", -"D c #258382", -"F c #298584", -"G c #258887", -"H c #248989", -"J c #229D9C", -"K c #04AEAE", -"L c #458483", -"P c #468987", -"I c #498C8A", -"U c #708785", -"Y c #718C8A", -"T c #00C2C2", -"R c #00DCDC", -"E c #00E3E3", -"W c #00EAEA", -"Q c #02FEFE", -"! c #858581", -"~ c #8B8783", -"^ c #868885", -"/ c #8C8A86", -"( c #8C8C89", -") c #918E8B", -"_ c #9D8D89", -"` c #82908D", -"' c #8D928E", -"] c #93928E", -"[ c #99928E", -"{ c #8C9793", -"} c #8D9894", -"| c #969591", -" . c #999793", -".. c #949895", -"X. c #9B9A96", -"o. c #949D9A", -"O. c #9E9E9A", -"+. c #A2928E", -"@. c #A9938F", -"#. c #A39591", -"$. c #A99490", -"%. c #A79995", -"&. c #AB9995", -"*. c #A09F9B", -"=. c #AB9E9A", -"-. c #B69793", -";. c #B39E9A", -":. c #98A29E", -">. c #A3A29E", -",. c #AEA19C", -"<. c #B1A19C", -"1. c #9AA5A1", -"2. c #9DA8A4", -"3. c #A5A5A1", -"4. c #A9A6A2", -"5. c #A6A9A4", -"6. c #ABA9A5", -"7. c #AEADA9", -"8. c #B3A7A3", -"9. c #B3AAA5", -"0. c #B8ACA7", -"q. c #B0AFAA", -"w. c #B9AEA9", -"e. c #A0B1AC", -"r. c #ABB1AD", -"t. c #B2B1AC", -"y. c #BEB4AF", -"u. c #B6B6B2", -"i. c #B9B7B3", -"p. c #B6B8B4", -"a. c #BAB9B4", -"s. c #BEBDB8", -"d. c #C4B1AC", -"f. c #C2BFBA", -"g. c #C8BFBA", -"h. c #BFC0BB", -"j. c #C3C2BD", -"k. c #C9C4BF", -"l. c #D4C3BE", -"z. c #C7C5C0", -"x. c #CBC6C2", -"c. c #CDCBC6", -"v. c #CFCEC9", -"b. c #D7CBC6", -"n. c #D1CFCA", -"m. c #D3D1CC", -"M. c #D7D5D0", -"N. c #D9D7D2", -"B. c #D2DCD7", -"V. c #DCDAD5", -"C. c #D1DDD8", -"Z. c #DEDDD8", -"A. c #EEC7C2", -"S. c #EEC9C3", -"D. c #E0DBD6", -"F. c #EADAD5", -"G. c #E1DFDA", -"H. c #EEDED9", -"J. c #DFE2DC", -"K. c #E3E1DC", -"L. c #ECE3DE", -"P. c #E7E6E1", -"I. c #EAE7E1", -"U. c #E6E9E3", -"Y. c #ECE9E4", -"T. c #EFEDE8", -"R. c #F7E7E1", -"E. c #F7ECE6", -"W. c #F8ECE7", -"Q. c #F0EEE8", -"!. c #F4F2EC", +"X c #2A2A2A", +"o c #313131", +"O c #660404", +"+ c #680000", +"@ c #670808", +"# c #6B0A0A", +"$ c #721212", +"% c #7F2121", +"& c #004343", +"* c #074C4C", +"= c #005252", +"- c #006464", +"; c #006969", +": c #0A6B6B", +"> c #1E6F6F", +", c #007373", +"< c #0B7070", +"1 c #007A7A", +"2 c #1E7171", +"3 c #1E7878", +"4 c #226D6D", +"5 c #217272", +"6 c #337878", +"7 c #3F7D7D", +"8 c gray30", +"9 c #475E5E", +"0 c #515151", +"q c #5C5E5E", +"w c #745C5C", +"e c #467373", +"r c #497676", +"t c #447D7D", +"y c #4E7C7C", +"u c #517777", +"i c #5F7777", +"p c #507E7E", +"a c #656464", +"s c #696969", +"d c #7B6D6D", +"f c #6F7878", +"g c #717272", +"h c #7A7777", +"j c #777A7A", +"k c #7B7F7F", +"l c #822F2F", +"z c #846C6C", +"x c #877E7E", +"c c #887E7E", +"v c #0B8B8B", +"b c #258585", +"n c #298484", +"m c #268B8B", +"M c #298888", +"N c #249F9F", +"B c #05AEAE", +"V c #1FA1A1", +"C c #468686", +"Z c #4A8B8B", +"A c #4D9191", +"S c #6E8686", +"D c #7E8181", +"F c #758D8D", +"G c #769292", +"H c #789393", +"J c #00C2C2", +"K c #00DBDB", +"L c #00E4E4", +"P c #00E9E9", +"I c #02FDFD", +"U c #08FFFF", +"Y c #878B8B", +"T c #8B8C8C", +"R c #938D8D", +"E c #869494", +"W c #8E9292", +"Q c #8E9A9A", +"! c #959494", +"~ c #999696", +"^ c #949B9B", +"/ c #9C9C9C", +"( c #A49595", +") c #A29D9D", +"_ c #AC9B9B", +"` c #B09B9B", +"' c #BD9F9F", +"] c #97A3A3", +"[ c #9CA1A1", +"{ c #9FAAAA", +"} c #A5A5A5", +"| c #AEA1A1", +" . c #A1ADAD", +".. c #ABACAC", +"X. c #B2A2A2", +"o. c #BEA5A5", +"O. c #B1ADAD", +"+. c #B9A9A9", +"@. c #A4B0B0", +"#. c #ADB1B1", +"$. c #A7B9B9", +"%. c #B3B3B3", +"&. c #BBB2B2", +"*. c #B3BABA", +"=. c #BABABA", +"-. c #C1B7B7", +";. c #C6BDBD", +":. c #CDBBBB", +">. c #BEC1C1", +",. c #C4C4C4", +"<. c #C7CACA", +"1. c #CBCBCB", +"2. c #D3CECE", +"3. c #DBCDCD", +"4. c #D5D5D5", +"5. c gainsboro", +"6. c #E0CECE", +"7. c #E1D6D6", +"8. c #F9D6D6", +"9. c #DBE7E7", +"0. c #DBE8E8", +"q. c #E5E5E5", +"w. c #EAE7E7", +"e. c #E6E9E9", +"r. c #EBEBEB", +"t. c #F5E7E7", +"y. c #F1EEEE", +"u. c #FAECEC", +"i. c #ECF1F1", +"p. c #F2F5F5", +"a. c #FFF4F4", +"s. c #FCFBFB", /* pixels */ -"V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.", -"V.V.V.N.N.V.V.V.V.V.V.N.V.V.V.V.N.V.V.V.V.V.N.V.N.V.V.V.N.V.V.V.V.N.V.N.V.V.N.V.V.V.N.V.V.V.V.V.", -"V.V.V.G.U.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.V.V.V.V.", -"V.V.Z.x.-.i.a.i.i.i.i.i.i.a.i.a.i.a.a.i.a.a.a.q.t.a.a.a.a.a.a.i.a.i.i.i.a.i.a.a.i.i.i.h.V.V.V.V.", -"V.N.U.@.@ } . . . . . . . . . .] ] c.k.k.k.k.h.h.k.k.k.k.c.] ] . .] .] . . . . . .( N.V.V.V.", -"V.N.U.$.@ 2.6.4.4.6.3.5.3.3.3.6.>.3.K.K.J.Z.K.K.K.K.Z.K.Z.K.>.>.6.3.7.6.6.6.6.6.6.6.6. .M.V.V.V.", -"V.N.U.@.@ :.4.>.4.>.3.3.3.3.3.3.*.*.K.N.N.V.V.V.N.V.V.V.N.K.>.*.3.>. . . . . . .>.:.>.| M.V.V.V.", -"V.N.U.@.@ 1.4.3.>.3.3.>.>.>.>.3.O.>.V.N.V.N.N.N.V.N.N.N.N.V.>.X.7.k . . . . Z 5.>. .M.V.V.V.", -"V.N.U.$.@ 1.4.3.>.>.4.7.6.6.7.7.>.6.I.K.K.K.K.K.K.K.K.K.K.U.6.>.i.k ~ t.7. .N.V.V.V.", -"V.N.U.@.# 1.4.>.>.6.X.~ ( / ^ ( ^ ^ a.u.i.u.i.u.u.p.u.u.u.s.! Z ..e k ' ^ ! N.V.V.V.", -"V.N.U.@.# 1.4.>.>.,.8 2 ; > > > > > > ; > > ; 3 3 ; > ; > > > > > * - 2 ; 4 V.V.V.V.", -"V.N.U.@.# 1.4.4.3.<.1 u +.) ) ) / ) k.f.j.j.l.9 9 l.j.j.f.k.) ~ X.r . x .) ~ N.V.V.V.", -"V.N.U.@.# 1.4.>.3.,.< f w.5.6.7.>.>.I.K.J.J.R.L L R.J.K.K.P.5.>.u.k Z q.6. .M.V.V.V.", -"V.N.U.@.@ 1.4.>.3.<.< d 8.>.>.>.>.*.D.N.V.N.H.L L L.N.N.M.D.>.O.7.! 0 q q q q q ' 5.>. .N.V.V.V.", -"V.N.U.@.@ :.4.>.3.,.< d 8.>.>.3.>.>.K.N.N.N.H.L L H.N.V.N.Z.*.*.3.6.t.t.q.t.q.t.6.>.3. .N.V.V.V.", -"V.V.U.@.@ 2.6.4.5.<.1 f 0.3.5.6.>.>.K.K.K.Z.R.L L R.Z.K.K.L.>.>.6.3.3.>.3.3.3.>.3.5.6. .N.D.V.V.", -"V.N.U.@.# { X. . .+.< p %. . . .) .k.h.j.h.l.9 9 l.h.j.h.z. .' .] . .| ] . .) .| ) N.V.V.V.", -"V.N.U.@.# { [ ] ._ < p %.| ] | ] ] j.s.j.a.l.8 8 k.a.s.s.s.O.s.f.f.i.m.y + c.f.j.s.j.>.m.G.V.V.", -"V.N.U.@.# 2.6.6.5.8.< f 0.3.6.6.>.>.K.K.K.K.E.P P E.J.K.K.K.t.D.K.K.D.!.j O Q.G.G.K.P.t.m.V.V.V.", -"V.N.U.@.# 1.3.*.3.;.< d 8.1.*.3.O.>.K.N.V.l.S.d s A.b.V.V.V.7.N.V.V.N.Q.h O U.N.N.N.J.t.m.Z.V.V.", -"V.N.U.@.# 1.3.3.3.;.< d 8.3.3.3.>.>.V.I.` A J A A S 6 g.K.V.7.N.V.V.N.Q.y X Y.V.V.V.G.t.m.V.V.V.", -"V.N.U.@.# 1.8.3.1.;.< d 8.3.3.3.O.>.V.L.Y W Q Q Q Q K d.K.V.q.N.V.V.N.Q.h X Y.N.V.V.G.t.m.G.V.V.", -"V.N.U.@.# 1.3.3.3.8.< f 8.3.3.3.O.>.V.L.Y W Q Q Q Q K d.K.V.7.N.D.V.V.Q.h O Y.N.V.V.K.q.m.V.V.V.", -"V.N.U.@.# 1.3.3.1.;.< d 8.>.3.3.*.>.V.L.Y W Q Q Q Q K d.P.V.q.N.V.V.M.Q.y O Y.V.V.N.K.*.v.G.V.V.", -"V.N.U.@.@ 1.6.3.3.,.< d 9.3.>.3.*.>.G.L.Y W Q Q Q Q K d.K.Z.7.N.V.V.N.Q.h O Y.N.V.V.K.q.M.V.V.V.", -"V.N.U.@.@ 1.3.3.3.<.< f 9.>.3.3.*.>.V.I.Y W Q Q Q Q K d.P.V.7.N.V.V.N.Q.h O Y.N.V.N.D.q.m.Z.V.V.", -"V.N.U.@.# 1.3.3.3.,.< d 9.3.3.3.*.>.Z.K.O.9 I I P I d x.G.V.7.N.V.V.N.Q.h X U.V.V.V.K.q.m.V.V.V.", -"V.N.U.$.# 1.3.3.3.=.< f 8.*.3.3.*.*.G.N.K.H.F.F.F.F.H.V.V.V.7.N.V.V.M.Q.h X Y.N.V.N.K.q.M.V.V.V.", -"V.N.U.@.# 1.6.3.5.<.< f 0.3.3.3.>.3.K.D.Z.Z.Z.Z.Z.Z.V.Z.G.G.t.V.D.K.N.!.j O T.V.K.V.K.u.m.V.V.V.", -"V.N.U.@.@ ..*.X.O.#.< p =. .O.O. . .m.c.c.c.c.c.c.c.c.c.c.v.4.c.v.v.c.V.y O N.c.c.c.m.6.M.V.V.V.", -"V.N.U.@.# ' ] ] | _ < i .) ) .) ! .) .] .] .] ] .] ] ! ] ] ] ] ./ Z .] ] ] ) ) N.V.V.V.", -"V.N.U.@.# 1.6.6.5.<.< f w.3.3.6.5.) 5.6.3.6.3.6.3.5.3.6.6.6.) 3.5.5.5.5.5.e.5.5.6.5.6. .N.V.V.V.", -"V.N.U.@.# :.3.3.3.;.< d 9.:.>.3.>.) 3.>.3.>.>.>.3.>.>.>.>.6.) >.>.>.;.&.&.&.&.=.4.>.>. .N.V.V.V.", -"V.N.U.@.# 1.3.3.3.;.< d 8.>.>.3.>.) 3.>.3.3.3.3.3.3.3.3.>.>.) :.7.M 1 F F 6 F 5 / 6.>. .M.V.V.V.", -"V.N.U.@.# 1.3.3.3.8.< f 9.3.4.6.3.' 5.3.3.5.3.5.5.3.3.5.5.5.' >.t.c R Q Q Q Q T V 7.>. .N.V.V.V.", -"V.N.U.@.# 1.3.3.1.;.< a ;.%.%.%.$.~ &.&.%.%.%.%.%.%.%.&.%.&.Z #.<.k R Q Q Q Q T V 7.>. .N.V.V.V.", -"V.N.U.@.@ 1.8.>.3.=.7 2 : , , , , , , , , , , , , , , , , , , , , = E Q Q Q Q T V 7.>. .M.V.V.V.", -"V.N.U.@.@ 1.3.3.3.5.] b C C C C b g C C v U b b C C C C v C g v Y w R Q Q Q Q T V 7.>. .M.V.V.V.", -"V.N.U.@.@ 1.6.3.3.3.4.9.9.7.9.9.9.[ 9.9.7.9.7.9.9.7.9.9.9.9.] 4.d.n R Q Q Q Q T V 7.>. .N.V.V.V.", -"V.N.U.$.@ 1.3.3.>.3.>.>.*.>.>.3.:.( >.>.>.*.>.>.>.>.>.>.>.3.) O.6.m 4 H D D G < ~ 6.>. .N.V.V.V.", -"V.N.U.@.# :.>.>.>.>.>.>.>.>.>.>.*.( 3.>.>.>.>.>.>.>.*.3.>.3.( *.>.>.&.%.$.%.@.&.3.>.>.] M.V.V.V.", -"V.N.U.@.@ e.t.r.r.r.7.r.r.r.r.7.r...r.r.r.r.7.r.r.r.r.r.r.r. .r.r.r.r.r.r.r.r.r.r.r.r.O.M.V.V.V.", -"V.N.Y.@.# z B B l l l l l l l l l t B l B l l l l l l l l l t l B l l l l l B B l B l l N.Z.V.V.", -"V.V.G.a.& % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % $ N V.V.V.V.", -"V.V.V.G.B.B.B.B.B.B.B.B.C.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.C.C.C.C.C.C.C.B.C.C.C.C.V.V.V.V.", -"V.V.V.V.V.G.D.D.D.D.D.D.V.D.G.V.D.D.D.D.G.D.D.D.V.D.D.V.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.V.V.V.V.", -"V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.", -"V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V." +"q.q.q.q.q.q.q.q.q.e.q.q.q.w.e.q.w.q.q.q.q.w.q.q.q.q.q.q.w.q.q.q.q.w.q.q.q.e.w.q.q.q.e.q.e.w.q.q.", +"q.q.q.w.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.e.q.q.q.q.q.q.q.q.q.q.q.q.q.q.", +"e.w.q.e.p.r.r.r.r.y.r.r.r.r.r.r.r.r.r.r.y.r.r.r.r.r.p.r.r.r.r.r.r.r.r.y.r.r.r.r.r.r.r.r.e.q.w.q.", +"q.q.e.4.o.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.=.=.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.<.q.q.q.q.", +"q.q.p.` + ^ } / / ) [ / / / / / / / 4.1.4.2.4.<.,.4.4.2.4.4.~ ~ / / ~ / / / / ~ / ) / ~ 9.w.q.e.", +"e.q.p.` @ .%.....O.O.#.%...%.%.....i.w.r.e.r.e.y.e.e.e.e.p.....%.%.%.%.%.%.%.%.%...O.} 7.q.q.q.", +"q.q.i.` @ .....................} ..w.q.q.q.q.q.q.q.q.q.q.r...} ..} [ / [ ) / } ....../ q.q.q.w.", +"q.9.p.` + .O...................} ..e.q.q.q.q.q.q.q.q.q.q.e.} } =.g . . . . Y %...~ 9.w.q.q.", +"q.q.i.` @ { ..........%.%.%.%.%...%.p.r.y.y.y.p.r.p.p.y.r.p.%...>.g T =.O.} q.w.q.q.", +"q.q.p.` + .O.....%.} T W W W W Y ! ,.>.>.>.>.=.;.>.=.,.>.,.T Y / q g ^ T Y 9.e.q.w.", +"q.q.p._ @ { O.....+.t , - - ; ; ; ; - ; ; ; - 1 1 - - ; ; - ; - ; & = : - 3 q.q.q.e.", +"q.q.p.` @ .O.....+.4 e _ ~ ~ ~ ! ! 2.1.1.<.6.7 7 6.<.1.<.4.~ R } a . . h [ ~ ! 7.q.q.q.", +"q.q.p.` @ .O.....O.2 p -.#.%.%...%.p.r.e.r.a.Z Z a.e.r.r.p.O...;.g T =.%.} q.e.q.q.", +"q.q.p.` @ .O.....+.2 y +.......} } w.q.q.q.u.C C u.q.q.q.e.} } %.Y 8 8 8 8 8 8 ~ #.../ 7.q.w.q.", +"q.q.i.` + { ......+.2 y &.......} } e.q.q.q.u.C C u.q.q.q.w...} ..%.=.=.=.=.=.=......./ 9.q.e.q.", +"q.q.i._ @ .%.O...+.2 y &.#...%.....p.r.r.e.a.Z Z a.e.r.e.p.....%...............%...%./ q.q.w.q.", +"q.q.p.` O ^ ) [ ^ _ > r | / ) [ ~ ) 4.<.1.1.3.n y 6.<.1.1.2./ ~ ~ / / ~ ) / } ~ / / / ~ q.e.q.q.", +"q.q.p.` O ] ) / / _ > r | / / / ~ / 1.,.,.,.3.7 7 3.,.<.<.<.} <.1.<.<.5.a o 4.,.<.<.1...7.e.e.q.", +"q.q.p._ @ .%.O.#.+.2 y &.#.O.%.....p.r.r.i.s.Z Z s.r.r.r.y.=.e.r.r.e.s.s X s.e.r.e.p.=.5.e.q.e.", +"q.9.p._ @ { ......+.> y &.....O.} ..e.q.q.6.8.t t 8.7.q.q.w.%.q.q.q.q.p.s X s.q.w.q.r.=.5.e.w.q.", +"q.q.p._ O { #.....+.2 y &.......} ..e.p.E v N v v V 5 2.r.q.=.q.e.q.q.s.s X p.7.q.q.r.=.5.e.q.q.", +"q.q.p.` O @.O...@.+.> y &.......} ..e.u.H P I I I I B :.i.e.%.q.e.q.q.s.s X p.q.q.q.e.=.5.r.e.q.", +"q.q.p._ + { ......+.> y &.......} ..w.p.H L U I I I B :.i.w.%.q.q.q.q.s.s X p.q.q.q.r.=.7.e.q.q.", +"q.q.p.` @ { %.....+.4 y &.......} ..e.u.H L U I I I B :.r.e.%.q.q.q.q.s.s X a.q.q.q.r...5.e.q.w.", +"q.q.p._ @ .......+.> y &.........} e.y.H P U I I I B :.r.e.=.q.e.q.q.s.a X p.q.q.q.r.=.5.e.q.e.", +"e.7.p.` @ .O.....O.> y +.......} ..e.a.G P I I I I B :.i.q.%.q.q.q.q.s.s X p.q.q.q.r.=.7.e.q.q.", +"q.q.i.` @ .O.....+.4 p &.......} ..e.y.[ C A Z Z A y 4.e.w.%.q.q.q.q.s.s X p.q.q.q.r.=.9.w.q.q.", +"q.q.p._ + .O.....o.> p &.......} ..e.q.r.t.t.t.t.t.u.e.q.e.%.q.q.q.q.s.a X p.q.q.q.e.=.5.w.w.q.", +"e.q.p._ @ .O.....+.2 p &.....#.} ..r.e.q.e.e.e.e.e.q.e.e.r.=.w.r.r.q.s.s X s.e.e.r.y.=.5.e.w.q.", +"q.q.p.` O ] } } } | 2 t X.} } } ) } 5.4.5.4.4.5.4.4.5.5.4.5...4.4.4.4.r.s X e.4.4.4.5.%.5.q.q.q.", +"q.q.p.` + Q ~ ~ ^ ( > r ) ~ ~ / ~ Y / / / / / ~ / ~ ~ / / / T ~ / / ~ / ! Y [ ~ / ~ / ~ q.q.q.e.", +"q.q.i._ @ @.%.%.#.+.> p -.#...%...~ %.%.O.#.#.%.#.#.%...#.%.~ ..#.#.#.#.%.%.#.#...%.O.[ q.e.q.q.", +"q.9.p._ @ { ......+.4 y &.........! ........................~ ......+.` ` X.X.+......./ q.q.q.q.", +"q.q.p.` @ .O.....+.2 y &.........! ........................! ..#.D 2 M n b n 4 R %.../ q.q.q.q.", +"q.q.p._ + { O.....+.> y %.........^ #.#.......#.#.#.......#.! ..=.f K I I I I J x %...) q.w.e.q.", +"q.q.p.` @ .O.....O.> u o.| | | | R | | | | X.| | | | | | | R _ +.g K U I I I J c %...[ 5.e.q.q.", +"q.q.p._ @ .O.....+.6 , : : : : ; : : : : : : : : : : : : : : : : * L I I I I J Y %.../ q.q.q.q.", +"e.7.p.` @ .%.....%.^ f F S S S S f S S S S S S S S S S S S i S F 9 K I I I I B c %...} q.q.q.q.", +"e.q.i.` @ .O.........=.+.%.&.%.&.~ &.%.=.&.%.&.=.&.&.%.%.&.) O.;.j K I I I I J x %.../ q.e.q.q.", +"q.q.i.` + { ....................} ! ......} ....} ..........! } %.D 3 m b b b > R %...[ 7.e.q.q.", +"q.q.p.` O [ ......} ..} ..} ....| ! ..........} ............! ......X._ X.X._ X...} ../ q.w.q.q.", +"q.q.p.` # $.=.*.*.*.*.*.*.*.*.%.*.[ *.*.*.%.*.*.%.*.#.*.%.*./ *.*.*.*.*.*.*.*.*.*.*.*.} 9.q.q.w.", +"q.q.p.` + d z z z z z z z z z z z w z z z z z z z z z z z z w z z z z z z z z z z z z z q.q.q.q.", +"q.q.e.;.l $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ # l q.w.q.q.", +"q.q.q.e.9.9.9.0.0.0.0.0.0.9.9.0.0.0.0.0.0.0.0.0.0.0.0.0.9.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.q.q.q.w.", +"q.q.q.q.w.r.w.w.w.w.w.e.r.w.w.w.w.e.w.w.w.w.w.e.e.e.w.w.w.r.w.w.q.e.w.w.w.w.w.w.w.w.w.e.q.q.q.q.", +"q.q.q.w.q.q.q.q.w.q.q.q.q.q.q.w.q.q.q.w.w.q.w.q.q.q.q.q.q.q.w.e.w.q.w.q.q.e.q.q.w.w.q.q.q.q.q.e.", +"q.e.q.q.e.q.q.w.q.q.w.q.e.q.q.q.e.q.q.q.q.q.q.q.e.q.q.w.q.q.q.q.q.q.q.q.q.q.w.q.q.q.q.e.q.w.q.q." }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/net.sav sgt-puzzles-20160429.b31155b/icons/net.sav --- sgt-puzzles-20140928.r10274/icons/net.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/net.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,53 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :3:Net +PARAMS :3:5x5 +CPARAMS :3:5x5 +DESC :25:1115337157375775157135131 +UI :9:O0,0;C2,2 +NSTATES :2:45 +STATEPOS:2:45 +MOVE :4:C0,0 +MOVE :4:L0,0 +MOVE :4:L0,1 +MOVE :4:C0,2 +MOVE :4:L0,2 +MOVE :4:A0,3 +MOVE :4:L0,3 +MOVE :4:L0,4 +MOVE :4:L1,4 +MOVE :4:A2,4 +MOVE :4:A2,4 +MOVE :4:L2,4 +MOVE :4:C1,0 +MOVE :4:L1,0 +MOVE :4:L3,0 +MOVE :4:L2,0 +MOVE :4:A4,0 +MOVE :4:A4,0 +MOVE :4:L4,0 +MOVE :4:A4,1 +MOVE :4:L4,1 +MOVE :4:L3,1 +MOVE :4:A3,2 +MOVE :4:A3,2 +MOVE :4:L3,2 +MOVE :4:L2,2 +MOVE :4:A2,1 +MOVE :4:A2,1 +MOVE :4:A1,1 +MOVE :4:A1,1 +MOVE :4:A1,1 +MOVE :4:A1,1 +MOVE :4:A1,1 +MOVE :4:A1,1 +MOVE :4:A1,2 +MOVE :4:A1,2 +MOVE :4:A1,3 +MOVE :4:C2,3 +MOVE :4:A3,3 +MOVE :4:A4,4 +MOVE :4:A4,4 +MOVE :4:A4,3 +MOVE :4:A4,2 +MOVE :4:A4,2 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/netslide-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/netslide-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/netslide-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/netslide-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/netslide-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/netslide-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/netslide-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/netslide-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/netslide-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/netslide-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/netslide-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/netslide-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/netslide-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/netslide-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/netslide-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/netslide-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/netslide-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/netslide-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/netslide-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/netslide-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/netslide-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/netslide-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/netslide-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/netslide-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/netslide.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/netslide.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/netslide-icon.c sgt-puzzles-20160429.b31155b/icons/netslide-icon.c --- sgt-puzzles-20140928.r10274/icons/netslide-icon.c 2014-09-29 00:33:44.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/netslide-icon.c 2016-04-29 00:31:43.000000000 +0000 @@ -1,477 +1,515 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 139 2 ", -" c #DCDAD5", -". c #DFDDD8", -"X c #D7D5D0", -"o c #E0DED9", -"O c #DEDCD7", -"+ c #C0BEBA", -"@ c #A2A19D", -"# c #C8C7C2", -"$ c #C6C4BF", -"% c #C2C1BC", -"& c #DBD9D4", -"* c #DDDAD5", -"= c #A9A7A3", -"- c #9B9996", -"; c #B2B0AC", -": c #DFDCD7", -"> c #DEDBD6", -", c #AFADA9", -"< c #ABA9A5", -"1 c #DCD9D4", -"2 c #DDDDD8", -"3 c #E7E9E4", -"4 c #D1D3CE", -"5 c #ABADA9", -"6 c #DADCD7", -"7 c #E4E6E1", -"8 c #E5E7E1", -"9 c #D7D9D4", -"0 c #AAADA9", -"q c #D4D6D1", -"w c #E5E7E2", -"e c #D1C8C3", -"r c #B89F9B", -"t c #BBA5A1", -"y c #B9A29E", -"u c #BBA4A0", -"i c #BAA39F", -"p c #BBA39F", -"a c #BCA7A3", -"s c #D9D5D0", -"d c #E7E9E3", -"f c #B8A19D", -"g c #BBA4A1", -"h c #C8BEBA", -"j c #8A817E", -"k c #CFC2BD", -"l c #C2B6B1", -"z c #C3B7B2", -"x c #CCBFBB", -"c c #89817E", -"v c #C7BAB6", -"b c #DAD7D2", -"n c #BCA5A1", -"m c #CFC5C1", -"M c #DEE1DC", -"N c #999A97", -"B c #E6E7E1", -"V c #D7D8D3", -"C c #CDCEC9", -"Z c #D5D5D0", -"A c #B5B6B2", -"S c #D3D4CF", -"D c #D5D6D1", -"F c #DBD9D5", -"G c #9B9A96", -"H c #BDA6A2", -"J c #CABDB9", -"K c #D9D9D4", -"L c #969491", -"P c #D3D1CC", -"I c #DDDBD6", -"U c #E7E5DF", -"Y c #E6E4DF", -"T c #C9C7C2", -"R c #CDC0BC", -"E c #DBDCD7", -"W c #979592", -"Q c #E4E2DC", -"! c #D2D0CC", -"~ c #AFAEAA", -"^ c #B0AFAB", -"/ c #C1BFBB", -"( c #C5B8B4", -") c #D2D3D0", -"_ c #959393", -"` c #D9D7D4", -"' c #CAC8C4", -"] c #ADABA7", -"[ c #878683", -"{ c #C4B7B4", -"} c #DEDFCF", -"| c #D9D6C2", -" . c #DAD8CC", -".. c #CECDC9", -"X. c #EAE8E2", -"o. c #9A9995", -"O. c #D9D7D2", -"+. c #BCA5A2", -"@. c #C8BBB3", -"#. c #4F51D5", -"$. c #2322E2", -"%. c #7473CB", -"&. c #E1DFCD", -"*. c #C6C5C3", -"=. c #D1CFCA", -"-. c #908F8C", -";. c #CECCC7", -":. c #D2D0CB", -">. c #A9ACA9", -",. c #BFA8A5", -"<. c #C4B8AE", -"1. c #2123E9", -"2. c blue", -"3. c #3737BB", -"4. c #A19F89", -"5. c #D1CFCE", -"6. c #969591", -"7. c #C3C1BD", -"8. c #D3D5D1", -"9. c #C6B9B2", -"0. c #5355D2", -"q. c #2827DD", -"w. c #7574C7", -"e. c #DCDAC9", -"r. c #D3D1CF", -"t. c #969592", -"y. c #DAD8D3", -"u. c #BCA6A2", -"i. c #E7E8D6", -"p. c #E4E2CB", -"a. c #E3E1D4", -"s. c #D5D3CF", -"d. c #D6D4CE", -"f. c #9A9996", -"g. c #DBD9D7", -"h. c #DAD8D7", -"j. c #DBD9D6", -"k. c #D5D3CE", -"l. c gray100", +"16 16 237 2 ", +" c #E6E6E6", +". c #E6E6E6", +"X c #E6E6E6", +"o c #E6E6E6", +"O c #EAEAEA", +"+ c gray88", +"@ c #EAEAEA", +"# c #E6E6E6", +"$ c #E6E6E6", +"% c #EAEAEA", +"& c gray88", +"* c #EAEAEA", +"= c #E6E6E6", +"- c #E6E6E6", +"; c #E6E6E6", +": c #E6E6E6", +"> c gray91", +", c #C8C8C8", +"< c gray66", +"1 c gray82", +"2 c gray91", +"3 c gray91", +"4 c #CECECE", +"5 c gray66", +"6 c #CBCBCB", +"7 c #E9E9E9", +"8 c gray90", +"9 c #E6E6E6", +"0 c #E6E6E6", +"q c gray90", +"w c #E7E6E6", +"e c #B0AFAF", +"r c #A2A1A1", +"t c #B9B8B8", +"y c #E9E8E8", +"u c #E8E7E7", +"i c #B6B5B5", +"p c #A2A1A1", +"a c #B2B2B2", +"s c #E8E7E7", +"d c gray90", +"f c #E6E5E5", +"g c #E7E9E9", +"h c #F1F6F6", +"j c #DBDEDE", +"k c #B3B7B7", +"l c #E4E8E8", +"z c #EFF3F3", +"x c #EFF3F3", +"c c #E1E5E5", +"v c #B2B6B6", +"b c #DEE2E2", +"n c #F0F4F4", +"m c #E6E6E6", +"M c #E6E6E6", +"N c gray90", +"B c #E7E9E9", +"V c #DAD3D3", +"C c #BFA8A8", +"Z c #C3AEAE", +"A c #C1ABAB", +"S c #C3ADAD", +"D c #C1ACAC", +"F c #C1ACAC", +"G c #C3ADAD", +"H c #C2ADAD", +"J c #C2ACAC", +"K c #C4B0B0", +"L c #E2E0E0", +"P c gray91", +"I c #E7E6E6", +"U c #F1F5F5", +"Y c #C0AAAA", +"T c #C3ADAD", +"R c #D1C8C8", +"E c #908888", +"W c #D8CDCD", +"Q c #CBC0C0", +"! c #CCC1C1", +"~ c #D5CACA", +"^ c #8F8888", +"/ c #CFC4C4", +"( c #D4CACA", +") c #E4E3E3", +"_ c #EAEAEA", +"` c #C8C8C8", +"' c #B0AFAF", +"] c #DADEDE", +"[ c #C3AEAE", +"{ c #D8D0D0", +"} c #E8EEEE", +"| c #A0A3A3", +" . c #F0F3F3", +".. c #E1E3E3", +"X. c #D6D9D9", +"o. c #DEE1E1", +"O. c #BDC0C0", +"+. c #DDE0E0", +"@. c #DFE2E2", +"#. c gray90", +"$. c gray88", +"%. c gray66", +"&. c #A2A1A1", +"*. c #B2B6B6", +"=. c #C5AFAF", +"-. c #D3C7C7", +";. c #E3E5E5", +":. c #9D9C9C", +">. c #EAEAEA", +",. c #DDDCDC", +"<. c #E7E7E7", +"1. c #F2F1F1", +"2. c #F1F0F0", +"3. c gray90", +"4. c #E6E6E6", +"5. c #E6E6E6", +"6. c #EAEAEA", +"7. c gray82", +"8. c #B9B8B8", +"9. c #E4E8E8", +"0. c #C2ADAD", +"q. c #D6CBCB", +"w. c #E6E8E8", +"e. c gray62", +"r. c #EEEEEE", +"t. c gainsboro", +"y. c #B7B7B7", +"u. c #B9B9B9", +"i. c #CACACA", +"p. c #E9E9E9", +"a. c gray90", +"s. c #E6E6E6", +"d. c #E6E6E6", +"f. c #E9E8E8", +"g. c #EFF3F3", +"h. c #C1ACAC", +"j. c #CDC2C2", +"k. c #DCDEE1", +"l. c #9C9B9F", +"z. c #E3E3E5", +"x. c LightGray", +"c. c gray71", +"v. c #B7B7B7", +"b. c #8D8D8D", +"n. c #E6E6E6", +"m. c #E6E6E6", +"M. c #E6E6E6", +"N. c gray91", +"B. c #E8E7E7", +"V. c #EFF3F3", +"C. c #C1ACAC", +"Z. c #CDC2C2", +"A. c #E9EBE0", +"S. c #E3E2D2", +"D. c #E4E4DD", +"F. c #D8D8D9", +"G. c gray91", +"H. c #F4F4F4", +"J. c gray63", +"K. c gray89", +"L. c #E7E7E7", +"P. c #CECECE", +"I. c #B6B5B5", +"U. c #E1E5E5", +"Y. c #C4AEAF", +"T. c #D0C5C1", +"R. c #5255DC", +"E. c #2424E4", +"W. c #7A7AD4", +"Q. c #EBEBDF", +"!. c #CFCFD2", +"~. c #DADADA", +"^. c #979797", +"/. c #D7D7D7", +"(. c gray86", +"). c gray90", +"_. c gray66", +"`. c #A2A1A1", +"'. c #B1B5B6", +"]. c #C7B1B2", +"[. c #CDC2BC", +"{. c #2325EC", +"}. c blue", +"|. c #3A3ABF", +" X c #A8A895", +".X c #DADADE", +"XX c #E9E9E9", +"oX c #9D9D9D", +"OX c #E2E2E2", +"+X c #E6E6E6", +"@X c #E6E6E6", +"#X c #EAEAEA", +"$X c #CBCBCB", +"%X c #B2B2B2", +"&X c #DDE1E1", +"*X c #C4AEAF", +"=X c #CFC4C0", +"-X c #5759D9", +";X c #2A29E0", +":X c #7B7BD0", +">X c #E6E6DA", +",X c #DCDCDF", +" , - < > & ", -" 1 2 3 4 5 6 7 8 9 0 q w ", -" & 2 e r t y u i i u u p a s ", -" O * d f g h j k l z x c v x b ", -". + = 4 n m M N B V C Z A S D F ", -"X @ G 0 H J K L o P I U Y & ", -"o T ; 6 u R E W Q ! ~ ^ / O & ", -" O : 7 i ( ) _ ` ' ] , [ ", -" O > 8 i { } | ...O X.o.O.I ", -"o $ , 9 +.@.#.$.%.&.*.=.-.;.:.& ", -"X @ G >.,.<.1.2.3.4.5.O 6.O. ", -"o 7.< 8.+.9.0.q.w.e.r.. t.y.I ", -" O > w u.x i.p.a.s.d.. f.y.I ", -" & & s b g.h.j.& & k. " +" . X o O + @ # $ % & * = - ", +" ; : > , < 1 2 3 4 5 6 7 8 ", +" 9 0 q w e r t y u i p a s d ", +". ; 0 f g h j k l z x c v b n m ", +"X M N B V C Z A S D F G H J K L ", +"o P I U Y T R E W Q ! ~ ^ / ( ) ", +"_ ` ' ] [ { } | ...X.o.O.+.@.#.", +"$.%.&.*.=.-.;.:.>.,.<.1.2.3.4.5.", +"6.7.8.9.0.q.w.e.r.t.y.u.i.p.a.s.", +"d.3 f.g.h.j.k.l.z.x.c.v.b.n.m.M.", +"m.N.B.V.C.Z.A.S.D.F.G.H.J.K.L.- ", +"% P.I.U.Y.T.R.E.W.Q.!.~.^./.(.).", +"+ _.`.'.].[.{.}.|. X.XXXoXOX+X@X", +"#X$X%X&X*X=X-X;X:X>X,X c #6B6A83", -", c #5150AF", -"< c #5858B6", -"1 c #5251B9", -"2 c #5958B9", -"3 c #6463AE", -"4 c #6F6EAA", -"5 c #7E7DAC", -"6 c #6564B6", -"7 c #6B6AB6", -"8 c #2726C5", -"9 c #2A29C6", -"0 c #0000EC", -"q c #0000F1", -"w c #0303FE", -"e c #858481", -"r c #8B8A87", -"t c #8E8D8A", -"y c #938D8A", -"u c #93928E", -"i c #969491", -"p c #989793", -"a c #9A9994", -"s c #9E9D99", -"d c #B2928F", -"f c #A09F9C", -"g c #B39B97", -"h c #A2A19E", -"j c #A6A5A1", -"k c #A9A7A4", -"l c #ABAAA6", -"z c #AEACA8", -"x c #B8AAA6", -"c c #B1AEAA", -"v c #BBADA9", -"b c #B4B3AF", -"n c #A8A6BE", -"m c #A9A8BF", -"M c #B6B4B0", -"N c #B9B7B3", -"B c #B4B3BA", -"V c #B9B7BC", -"C c #BFBDB9", -"Z c #C3B6B2", -"A c #C6B9B5", -"S c #C9BCB7", -"D c #C4BBB9", -"F c #C9BCB8", -"G c #C4C2BE", -"H c #CBC1BC", -"J c #D1C3BF", -"K c #C7C5C0", -"L c #C8C6C2", -"P c #CBC9C5", -"I c #CECCC9", -"U c #D4C6C2", -"Y c #D3CCC7", -"T c #D1CECA", -"R c #D3D2CD", -"E c #D6D5D0", -"W c #D9D7D2", -"Q c #D7D8D3", -"! c #DCDAD5", -"~ c #DFDDD8", -"^ c #E0DED7", -"/ c #E1DFD9", -"( c #E4E5CF", -") c #E9E6D7", -"_ c #EEECD6", -"` c #E3E2DC", -"' c #EBE8D8", -"] c #E2E6E1", -"[ c #E8E6E1", -"{ c #E6EAE5", -"} c #ECEAE5", -"| c #EBEEE9", -" . c #F0EEE9", -".. c #ECF0EA", -"X. c #F2F3ED", -"o. c #FDFBEE", -"O. c #F6F6F1", -"+. c #FEFCF3", +"32 32 73 1 ", +" c #565656", +". c #5F5F7A", +"X c #676161", +"o c #756F6F", +"O c #737373", +"+ c #757878", +"@ c gray49", +"# c #8F5D5D", +"$ c #915D5D", +"% c #966464", +"& c #986767", +"* c #6F6F8B", +"= c #5555B4", +"- c #5656BF", +"; c #5C5CBD", +": c #6969B5", +"> c #6C6CBE", +", c #7474B1", +"< c #7070BF", +"1 c #2828C6", +"2 c #2A2AC8", +"3 c #0000EA", +"4 c #0000F1", +"5 c #0303FE", +"6 c #5D5DC0", +"7 c #838383", +"8 c #8A8282", +"9 c #8A8A83", +"0 c #8B8B8B", +"q c #949494", +"w c #9B9B9B", +"e c #9C9393", +"r c #B99B9B", +"t c #A3A39D", +"y c #8383B5", +"u c #A4A5A5", +"i c #ADADAD", +"p c #BAA3A3", +"a c #B4B4B4", +"s c #B9B7B7", +"d c #BBBBBB", +"f c #C1B5B5", +"g c #CBBFBF", +"h c #AFAFCB", +"j c #BCBCC7", +"k c #B1B1CC", +"l c #C3C3C3", +"z c #CEC2C3", +"x c #C1C1CA", +"c c #CBCACA", +"v c #D2C6C6", +"b c #D4CBCB", +"n c #DACECE", +"m c #D3D3D3", +"M c #DCD5D5", +"N c #D5D5D9", +"B c #DBDBDB", +"V c #DFDFE0", +"C c #DEE1E1", +"Z c #E5E5E5", +"A c #E8E7E7", +"S c #E7EAEA", +"D c #EBEBEB", +"F c #EFF2E1", +"G c #EDF0EA", +"H c #F7F7E7", +"J c #F9F9E7", +"K c #F5F5E9", +"L c #F9F9E9", +"P c #EDF3F3", +"I c #F4F5F5", +"U c #F5FBFB", +"Y c #FBFBFB", /* pixels */ -"! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! W ! / ! ! ! ! ! ! ", -"! ! ! ! ! ! ! ! ! ! ! ! W ` E W ! ! ! ! ! ! ! ~ W E / ! ! ! ! ! ", -"! ! ! ! ! ! ! ! ! ! ! W ` T r s ` ! ! ! ! ! ^ ! p u R / ! ! ! ! ", -"! ! ! ! ! ! ! ! ! ! ! / P u c h s ! ! ! ! ! E a j l i T ! ! ! ! ", -"! ! ! ! ! ! ! ! ! ! ! / i r M z $ M ` ! W ` k ; c b e f / ! ! ! ", -"! ! ! ! ! ! ! ! ! ! ! ! ` f b h N ` W W ^ W [ c j z j ` ! ! ! ! ", -"! ! ! ! ! ! ! ! ! ! ! W ~ i s t b ` W ^ ! W [ k u a s ` ! ! ! ! ", -"! ! ! ! ! ! ~ ! ! W W W ! G z z T ! W W W W ^ L z z K ! W W ! ! ", -"! ! ! ! ! ! ! ! ! ` { ] ` { ....] ] ] ] ] ] ] { | | { ] ] ] ! ! ", -"! ! ! ! ! ! ! W ` d & - - = & * - - = = * - = = * * = = = - T ~ ", -"! ! ~ ! W ! ! W ] = g H Z U . y J Z S x v S Z U ; O U Z A A W ! ", -"! ! ! ~ ` W ! W ] - H { ~ X.+ z | ~ ] R Q { ` O.a e O.` [ [ ! ! ", -"! W ` P i ` ~ ! ] - A / E } o h [ W ! P C P L E t $ E L L P ! ! ", -"W ` I u r s i G { * A ] E } o j [ W / P G R T T T R T I T T ! ! ", -"! E r c b b f c ..= A ` E } o j [ W ~ P T ` ! ~ ` ! ~ ~ ~ ~ ! ! ", -"! ! f f z s t z ..* A ` Q } o j [ ! ~ P I ! W W W ! ! ! ! ! ! ! ", -"! ! / f # M b Y ] = A ] Q } o j [ ! ~ P ! .} } } / ! ! ! ! ! ! ", -"! ! ! ! M [ / ! ] - A / E } o j [ E ~ L e t t r t P ! ! ! ! ! ! ", -"! ! ! ! / ! ! W ] - F ] W .o k } ! ` L $ e : t : } W ! ! ! ! ", -"! ! ! ! ! ! ! W ] = x R L W o s E L I G ! .} +.f $ } W ! ! ! ! ", -"! ! ! ! ! ! ! ! ] = x Q P I I I I I T G P W E [ t $ .W ! ! ! ! ", -"! ! ! ~ ` W W W ] = F ] _ _ _ _ _ ` / T T ` W .i $ .W ~ ~ ! ! ", -"! ! / R z ` / ~ ] = A ` 4 1 < 2 , B ` L L E I ^ t # ` I R R ! ! ", -"! / ! a $ z z P ] = A ( 9 w w w 0 n o.R C P G W r @ E L L L ! ! ", -"! W p j c j u c | & D ( 9 w w w 0 > a t R ` W .i : .! ^ / ! ! ", -"! W u l b z a c | = D ( 9 w w w q X : $ T ! E } u $ } E W ! ! ! ", -"! / R i e j s G { = D ( 8 w w w 0 m o.W I ^ W } u $ .W ! ! ! ! ", -"! W / R s [ / ^ ] = A ` 5 6 7 7 3 V ` L T ! E } u $ } E ! ! ! ! ", -"! ! W ~ / W ! W ] = A ` ) _ ' _ _ ! ~ I I ! W } u # .W ! ! ! ! ", -"! ! ! ! W ! ! ! ] - A ` Q Q W W ! ! / P T / W .i $ .W ! ! ! ! ", -"! ! ! ! ! ! ! ! ~ Y W ~ ! ! ! ! ! ! ! W ! ! ! ~ R T ^ ! ! ! ! ! ", -"! ! ! ! ! ! ! ! ! ~ ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ^ ! ! ! ! ! ! " +"ZZZZZZZAZAAZAZAAZZZZAZZZAAZAZZZZ", +"ZZAZAZZZAZZAZDBZAZZAZZZSZVSZZAZA", +"AZAAZSZAZAAZDN0uSSZZZZSAwqVDZZZZ", +"ZAAZZZZZZZZAmwsiuZZSZAZwiawBSZZA", +"SZZZAAZZZZZSw0da7dDZZDa7sd0uDZZZ", +"ZAZAZZSZZAAZDidilGZZZZGsisiPZAZA", +"ZZZZAZZZZZZZDwuqdDZZZZDawtuGZZZA", +"AZSZZZZAZZZZAcaaBZZZZZAmsacZZZAZ", +"ZZZAZZAZZPPPPIUUIPPPPPPIUUIPPPAZ", +"ZSZZZZZZGr$&%%$%%%&%%%%&$$%%%&BS", +"AZZZZZZZP%pbzMXengvsfvgn8oMzzzZZ", +"ZZASAZZZP&bIDY+aYSPVCIPYu0YDPPAZ", +"ZZGNwDDSP%zDCIOiIBSmcmmBq7VmmmVA", +"ZDNw0uwcU%zPZIOiIZSNmBBBBBBBBBZA", +"SC0dddusU%zDVIOiIZDmBSAASAASASZA", +"ZZuusuwsU%zSZIOiGZDmmZZZZZAAAZAZ", +"ZSDu7dfmP%vDZYOiIVDMDYIIIDZZZZZZ", +"AZSZdIPZP%zDBIOiIVAm0qqqqMAZZZZZ", +"ZZZZDZZVP%vIZYOaIZDm700q 0IZZAAZ", +"ZAZZZZZZP%sBmZOuVmBcSYIYu7YZAAZA", +"ZZZZZAAZP%fCNNNNNBBcNZBKq7UZZAZZ", +"ZAZSDZZZP%vPKKKHLDDNBDZYw7YAAAZA", +"AZSZaDGZP%vD,6;>=jDmmVBDq7SNBVZZ", +"ZAAw7aamP%zH15553hYZlmmVq@CmmmZA", +"ZZwisiwsU%zF25553*tqBGZYw7YZADZZ", +"AVqadsusU%zF25554.97BDVIw7YVZZAZ", +"ZSVw0iucP%vF15553kYZBAZIw7YZAZAZ", +"ZZDBtPGAP&zGy>>>:xGmBACYw7UVZAAZ", +"ZZZADZZVP%zDKKKKLAANNSZIw7UCAZAZ", +"ZAAZAAZZP%zPZZZZZZSNBSCIw7YZAZZZ", +"AZZAZAZZABZZZZZAZSZZZZAABBSZZZAZ", +"ZZAZAZAZAAZZZZZZAZZZAZAAAAZAZAZZ" }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 122 2 ", -" c #3B1514", -". c #2B2B2A", -"X c #322F2E", -"o c #31302F", -"O c #323332", -"+ c #74201F", -"@ c #4E2424", -"# c #613533", -"$ c #464543", -"% c #4E4E4C", -"& c #504F4D", -"* c #575641", -"= c #50504E", -"- c #555452", -"; c #595957", -": c #565558", -"> c #5C5E5B", -", c #7C4B4A", -"< c #62615F", -"1 c #666562", -"2 c #6A6967", -"3 c #6F6F6C", -"4 c #7E7D66", -"5 c #747370", -"6 c #787774", -"7 c #7B7A77", -"8 c #7D7C7A", -"9 c #824E4C", -"0 c #925E5C", -"q c #95615E", -"w c #966260", -"e c #9C6765", -"r c #966967", -"t c #976A68", -"y c #9B6F6C", -"u c #9D716E", -"i c #817F7D", -"p c #9E7371", -"a c #9F7875", -"s c #A27673", -"d c #A57976", -"f c #A87C79", -"g c #82817E", -"h c #101094", -"j c #18179B", -"k c #1111A8", -"l c #1717B6", -"z c #1F1FB3", -"x c #2A29A4", -"c c #2929AD", -"v c #2222B4", -"b c #2F2FB0", -"n c #3130B2", -"m c #454591", -"M c #75749C", -"N c #7E7D9D", -"B c #7675A0", -"V c #0000E2", -"C c #0101EC", -"Z c #0101F3", -"A c #0202FE", -"S c #858582", -"D c #888784", -"F c #8A8986", -"G c #8E8D8A", -"H c #908F8C", -"J c #92918D", -"K c #85849D", -"L c #969592", -"P c #989793", -"I c #9B9A96", -"U c #9E9D99", -"Y c #A09F9B", -"T c #A2A19D", -"R c #8483A1", -"E c #9694A3", -"W c #A7A6A2", -"Q c #A8A7A3", -"! c #ACABA7", -"~ c #AEADA9", -"^ c #B0AEAA", -"/ c #B2B1AD", -"( c #B6B5B1", -") c #B9B7B3", -"_ c #BBBAB5", -"` c #BCBDB9", -"' c #C0BFBA", -"] c #C3C2BD", -"[ c #CDC6C1", -"{ c #C2CBC7", -"} c #CCCBC6", -"| c #CFCDC8", -" . c #D1CEC9", -".. c #DCDAC2", -"X. c #D5D2CD", -"o. c #D9D2CE", -"O. c #DCDACB", -"+. c #D7D5D1", -"@. c #D9D6D1", -"#. c #DCDAD5", -"$. c #DFDDD8", -"%. c #E1DFCE", -"&. c #E1DDD6", -"*. c #E1DED9", -"=. c #EBE7D7", -"-. c #E4E2DD", -";. c #E9E6DA", -":. c #ECEADC", -">. c #F5F3DA", -",. c #E7E5E0", -"<. c #E9E7E2", -"1. c #E3EBE6", -"2. c #EEECE6", -"3. c #E6EEE8", -"4. c #EEECEA", -"5. c #F0EEE8", -"6. c #E8F1EC", -"7. c #F3F1EC", -"8. c #EEF7F1", -"9. c #F0F9F3", -"0. c #F0FFFE", -"q. c #FBFFFC", +"48 48 87 1 ", +" c #3C1616", +". c #2D2D2D", +"X c #333333", +"o c #353B3B", +"O c #4F2626", +"+ c #752121", +"@ c #633838", +"# c #494949", +"$ c #5B5B47", +"% c #545454", +"& c #5A5A5A", +"* c #7F5050", +"= c #5D6363", +"- c #666666", +"; c #6A6A6A", +": c #747474", +"> c #7D7D7D", +", c #855252", +"< c #976363", +"1 c #996666", +"2 c #9A6A6A", +"3 c #817F7F", +"4 c #9E7373", +"5 c #A16D6D", +"6 c #A07575", +"7 c #A37A7A", +"8 c #AA7E7E", +"9 c #848470", +"0 c #111195", +"q c #19199D", +"w c #1212A9", +"e c #1818B8", +"r c #2B2BA6", +"t c #2121B5", +"y c #2B2BB0", +"u c #2424B8", +"i c #3333B5", +"p c #474795", +"a c #7A7AA5", +"s c #7B7BA9", +"d c #0000DF", +"f c #0202EC", +"g c #0000F2", +"h c #0202FE", +"j c #0808FF", +"k c #828283", +"l c #868E8E", +"z c #8B8B8B", +"x c #949494", +"c c #9C9C9C", +"v c #AE8282", +"b c #8282A5", +"n c #8A8AA6", +"m c #8585A9", +"M c #8A8AAB", +"N c #9C9CAE", +"B c #A3A3A3", +"V c #ABABAB", +"C c #B4B4B4", +"Z c #BBBBBB", +"A c #BBBBC2", +"S c #C3C3C3", +"D c #C0CACA", +"F c #CBCBCB", +"G c #CCD7D7", +"H c #D6D5D5", +"J c #DCDBDB", +"K c #E1DEDE", +"L c #E5E5D3", +"P c #E8E8D6", +"I c #E6E6DC", +"U c #E6E5E5", +"Y c #E9E7E7", +"T c #EAE9E4", +"R c #E7E7EA", +"E c #E7E8E8", +"W c #EAEAEA", +"Q c #F5F4EC", +"! c #FFFFED", +"~ c #EDF7F7", +"^ c #ECF7FA", +"/ c #EFF9F9", +"( c #F2F1F1", +") c #F8F6F6", +"_ c #F8F8F0", +"` c #F1FBFB", +"' c #FBFBFB", /* pixels */ -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.X.-.#.#.#.#.#.#.#.#.#.#.@.$.+.#.$.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.-.T 5 ] -.+.#.#.#.#.#.#.#.#.$.+.8 F $.$.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.-.I F / 7 ` -.#.#.#.#.#.#.#.*.X.8 Q U S $.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.-.T H ( / / g ] -.#.#.#.#.#.$.X.F Q ( ( U H #.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.-.^ > L / ^ ~ g 1 X.#.#.#.#.#.*.7 3 Q ^ ^ Y 1 J -.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.+.X.S ~ ( P I #.+.#.#.#.#.#.#.#.^ F ( ( S ' @.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.*.G ~ ) I Q <.#.#.#.#.#.#.#.;.' G ) ( F .-.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.@.*.D T ~ H T -.#.#.#.#.#.#.#.*.' i ~ Q g | #.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.$.#.#.#.#.#.#.#.*.Y F J D _ -.#.#.#.#.#.#.@.&.| F H G H #.#.#.#.#.#.#.#.#.", -"#.$.#.#.#.#.#.#.#.#.#.#.#.#.#.@.@.@.@.@.*.*.&.*.&.@.@.O.@.@.@.@.@.@.#.*.&.*.*.@.@.@.@.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.$.3.3.3.3.3.1.1.<.1.1.3.3.3.3.3.3.3.3.3.3.3.1.1.3.1.3.3.3.3.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.*.[ p y y y u y u f y y y y u y y y y y y y t d s y y y y y u X.&.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.@.3.a + r 0 0 0 w , w 0 0 0 0 0 9 0 0 0 0 0 e @ # e 0 0 0 0 q X.#.#.#.", -"#.#.#.#.#.#.#.+.#.#.#.#.@.3.y t 0.1.3.1.9.` O 8.3.3.3.3.6.{ 1.3.3.3.1.q.; S q.1.1.1.3.3.#.#.#.#.", -"#.#.#.#.#.#.#.,.&.#.#.#.@.3.y 0 <.o.@.@.*.! o -.@.@.@.@.#.) X.@.@.#.X.2.- 7 <.+.#.+.@.#.#.#.#.#.", -"#.#.#.#.#.#.-.^ o.#.#.#.@.3.y 0 3.@.#.@.,.^ o -.#.#.#.@.*._ #.&.#.#.#.7.- 8 5.#.&.#.#.#.#.#.#.#.", -"#.#.#.#.#.,.U 1 +.*.&.*.@.3.y 0 3.@.#.#.,.^ o -.#.#.#.#.*./ ( _ _ _ _ ] 7 D ] ) _ _ _ ` #.#.#.#.", -"#.#.#.#.,.U G L i G g Y &.3.y 0 3.@.#.#.-.^ o -.#.#.#.@.$.) +.#.#.+.#.+.-.$.+.@.@.@.#.@.#.#.#.#.", -"#.#.#.$.U F ( / ~ ~ W G &.3.y 0 3.@.#.@.-.^ o -.#.#.#.#.&._ @.#.#.#.#.#.#.#.#.#.#.#.$.#.#.#.#.#.", -"#.#.#.X.5 ^ ^ ^ ( ) ~ H &.3.y 0 3.@.#.#.,.^ o -.#.#.#.#.$._ @.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", -"#.#.#.*.[ 8 ^ ~ P I G F *.3.y 0 3.@.#.@.-.^ o -.#.#.#.#.$._ +.$.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.,.` S 8 L Q U ` #.3.y 0 3.@.#.#.,.^ o -.@.#.#.#.#._ X.+.@.@.@.@.@.#.#.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.+.-.[ 1 $.,.,.*.@.3.y 0 3.o.#.@.,.^ o -.#.#.#.#.#.] 2.5.5.5.2.5.2.&.#.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.@.$.X.+.@.#.#.@.3.y 0 3.#.#.#.,.~ o -.#.#.#.#.-.J $ = & & & % - ] *.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.$.#.#.#.#.@.3.y 0 3.o.#.#.*.^ O *.@.#.#.+.-.T 7 g i g 8 G . g 2.+.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.o.3.y 0 6.#.$.#.<.^ O ,.#.&.#.#.-.] <.2.5.3.:.q.> 7 5.@.#.#.#.#.#.#.#.#.", -"#.#.#.$.#.#.#.#.#.$.#.#.#.3.u 9 { ) _ ) ` W 1 ` _ ` ` _ _ ! +.#.+.#.+.2.- 7 5.@.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.o.3.y 0 1.X.@.@.+.#.-.+.@.@.#.@.#._ +.#.#.#.+.5.- 7 2.O.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.@.#.#.#.#.#.@.3.y 0 3.#.$.$.$.$.#.$.$.#.#.#.#._ +.#.#.#.+.5.- 7 6.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.$.*.#.#.#.#.@.3.y 0 1.#.#...............#.#.$._ #.*.$.$.#.4.- 7 7.#.*.#.&.$.#.#.#.#.", -"#.#.#.#.@.*.X.8 #.-.*.$.@.3.y 0 1.;.K k z z z v l m O.#.$.) } .| .} -.- 6 *.} . .| | #.#.#.#.", -"#.#.#.@.*.X.S 5 ^ ' ` | #.3.y 0 1.=.B Z A A A A A c ..+.#./ ` ] ' ' _ .- 5 .` ] ] ` ] @.#.#.#.", -"#.$.#.$.X.i Q W S G i F *.3.y 0 1.;.B Z A A A A A n >.4.4.[ #.$.*.-.#.9.; 8 7.#.*.*.*.*.#.#.#.#.", -"#.#.#.+.8 Q ( ^ ) ) ^ H #.1.y q 1.;.M Z A A A A A h * : % 7 $.#.#.#.+.2.- 7 2.+.#.#.#.#.#.#.#.#.", -"#.#.$.@.G I ( / ( ( ! H -.1.y 0 1.=.B Z A A A A A j 4 8 5 G $.#.#.#.@.5.- 7 5.@.#.#.#.#.#.#.#.#.", -"#.#.@.$.$.D I T i D 7 H *.1.y 0 1.=.N Z A A A A A n >.4.7.[ X.#.#.#.+.5.- 7 2.@.#.#.#.#.#.#.#.#.", -"#.#.$.@.#.$.J 2 ] X.} @.#.3.y 0 3.=.B V Z C C C Z x O.+.#.) +.#.#.#.+.5.- 7 5.@.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.J +.*.$.#.@.3.y q 1.&.( N R R R R N E #.#.#._ #.#.#.#.@.5.- 7 5.@.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.;.#.#.#.#.#.1.t q 3.+.-.:.:.:.:.<.:.;.#.#.-._ +.#.#.#.@.5.- 7 5.@.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.+.3.y q 3.#.#.@.+.+.+.+.#.@.#.#.#._ +.#.#.#.@.5.- 7 5.+.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.3.u q 3.+.#.#.#.#.#.#.#.#.#.#.$._ #.#.#.#.+.5.; 8 5.@.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.X. .$.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.| .$.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.*.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.$.$.#.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#." +"UUUUUUUUUUUUUEUUUUUUUUEUUUUYUUUUURUUUYUUUUUUEUUU", +"UUYUUEUEUEEUUUEUUEUEUUUUEUUUUEEUUUUEUUUUEUUEUUYU", +"UUUUYUUUUUUEUUUUEUUURUERUUUEUUUUUUYUEUUUYUUUEUUE", +"UEUEUUEUUYUUUEYUUUUYEEJWUUUUUEUUUUUEUUUUUUEUUUUU", +"UUUUUUUUUUEUUUUUUUEUQB:FWUUEEYUUUUEUkzEYUUUUURUU", +"UUEUUEEUUUUUEUEUUEUWBzZ3SQUUUUUUUEJkVBzYEUUUUUUE", +"EUUYUUUUUEUUUUYUUEWVxSZZzFWEUUEUEUzVZSBxERUUUUEU", +"UUUEUUEUUUYEUUUUUWC-cZCCk;JEUUUUW>:VZZV-xQUUUUUU", +"UUYUUEUUUEUUUUUEUYKKzCZBBRKRUUUEUUZzSZzFUUUUYUUU", +"EUUUUUUYUUEUUUUURURWxCSBC(UUUUUUU(FxSZxJEUEUUUEU", +"UUEUUEEUUUUUUYUUUUUYzVCxV(UUEUUEUWFzCCkHEYUEUUUU", +"UEUUUUUUYEUUUUUUUUYWBxczSWUUUUUUUWHzxxcUEUUUUEUU", +"UEUUUUEUUUUUYUUUUUIKWWWWYKIUUUUKUUUWWWWUUIKUUUUY", +"UUEUUEUUEUUEUUE`````/^~/``/``/````~^(^/````/UUUU", +"UUEUUUUUUUEUUEH7466647v6666666664644v8466666KYUE", +"YUUUUEUYUUUUU~8+4<<<1, 1<<<<<,<<<<<5O@5<<<<1KEUU", +"UUUUUEUUUUUYU`45'^`/'Do'`````G~`/`~'-l'/`^``EUUU", +"UUEUUUU(YUUUU`4<^KUK(CXWKUKUYSJUUUJ)&>)KUIKUUUUU", +"EUUUUUWCJEUUU^6xFSSSSSUEUU", +"EYUU(BxckxzBW)6<`KUUWZX(UUUUWSUUUUUJWEIUUUUUUUEU", +"UUUEVzSZCCVxW/6<`UUU(CXWUUUUESUUYEUURUUUUREEUUUU", +"UYEJ:ZZCZSZcW/6<`KYU(CX(UUUUESUUEUUUUUUUUURUUUUU", +"UEEWF>ZCBBxzW/6<`UUU(ZXWUUYUESKUUUUUURUUUUUUUUUU", +"UEUUQSzkcCBSY`6<^UUU(ZX(UUUUUSJUUUKUUUUUUUUUUUUU", +"UUEUUWF;U((WU`6<`KUUWCX~UUUUEF)'''`''EUUUEUUUUEU", +"UUUUUUWJUUUUK`6<`URU(ZXWUUUUWc#%%%%%&FWUEUUEEUUE", +"UEYUURUWUUUUU`6<`KUUWZXWUUUUWV>zkzkx.k'UUUUYUUUU", +"EUUEUURUUUUUU`41`YYY(ZX(EEEEWF)'))('-3)UUUUYUEUY", +"UUUUUUUUUUUYK`6,GSSSFV-FSSSSSCKUUUK)%3'KEUUUUUUU", +"UUUUUUUUYUUUU`6<~KUKUUWKUUUKUSUUUUU'&3'UUEEUUEEU", +"UEEUUUUUUUUUU`6<`URRWRRWRREUEDKUUUU`&3)UUUUUUUUU", +"UEUUYUEWUUUUU/4WHHJJHUUUU", +"UEUUEJz:ZFSJU`6<^QsghhhhhyLKUZSFFFFJ&>JSFFFFUEEU", +"UUUEUkVVzxkzW`6<^Qsfjhhhhi_''HUWEWE'&k'UWWWWUEUU", +"UYEU3VZZZSZxW/6<^Qaghhhhh0$&%3WUUUU)&3'UUUUUUUUU", +"UUEUzBSCZZCcW/6<~Qsghhhhhq3k>xEUUYJ'&3`KUUUUUUUU", +"EUUEWzBVkx3xW/6<^Qsgjjhjhi!`'FKYUUU'&3'UUUEUEUUE", +"UUUUEEx:FJHUY`6<^QadffffgrPUUSUUUUU'&3'KUEUUUUUU", +"UUUEUEUxUWEYU`4 c gray58", +", c #B1B1B1", +"< c gray69", +"1 c gray67", +"2 c #AAAAAA", +"3 c #AEAEAE", +"4 c gray68", +"5 c gray67", +"6 c #AAAAAA", +"7 c gray68", +"8 c #B1B1B1", +"9 c gray61", +"0 c gray56", +"q c #B6B6B6", +"w c gray82", +"e c gray73", +"r c #B9B9B9", +"t c #C0C0C0", +"y c #959595", +"u c #E2E2E2", +"i c gray84", +"p c #DDDDDD", +"a c gainsboro", +"s c gray85", +"d c #D7D7D7", +"f c gainsboro", +"g c #E1E1E1", +"h c gray77", +"j c #B3B3B2", +"k c #E4E4E3", +"l c gray83", +"z c gray73", +"x c #B6B6B6", +"c c #AAAAAA", +"v c gray54", +"b c gray86", +"n c #D2D2D2", +"m c #DADADA", +"M c gray85", +"N c #D7D7D6", +"B c #D5D5D4", +"V c gray85", +"C c gray87", +"Z c #C2C2C1", +"A c #ACACB0", +"S c #DBDBE0", +"D c #D3D3D4", +"F c #BCBCBC", +"G c gray67", +"H c #DADADA", +"J c #D2D2D2", +"K c #D0D0D0", +"L c gray74", +"P c gray", +"I c gray74", +"U c #BBBBBC", +"Y c #BABABB", +"T c #BEBEBD", +"R c #C3C3C2", +"E c #A8A8A9", +"W c #A9A999", +"Q c #DBDBC6", +"! c #D3D3D2", +"~ c #BCBCBC", +"^ c #AAAAAA", +"/ c #D7D7D7", +"( c #D7D7D7", +") c gray74", +"_ c #909090", +"` c #B1B1B1", +"' c #B1B1B4", +"] c #AAAA9B", +"[ c #A9A98E", +"{ c #ADADB1", +"} c #ADADB0", +"| c #A8A89A", +" . c #C1C18B", +".. c #D4D4B6", +"X. c #D4D4D1", +"o. c #BBBBBB", +"O. c #B4B4B4", +"+. c gray72", +"@. c gray58", +"#. c #C5C5C5", +"$. c #B8B8B7", +"%. c #BFBFBD", +"&. c #8D8D91", +"*. c #E3E3CC", +"=. c #D6D6B0", +"-. c #DDDDE3", +";. c #DDDDE0", +":. c #DBDBC4", +">. c #D4D4B2", +",. c #D6D6E3", +"<. c #D5D5D4", +"1. c gray73", +"2. c #B6B6B6", +"3. c gray67", +"4. c gray57", +"5. c #C6C6C6", +"6. c #B1B1B5", +"7. c #B4B4B8", +"8. c #84848E", +"9. c #DADAC9", +"0. c #CFCFAE", +"q. c #D5D5E0", +"w. c #D4D4DD", +"e. c #D2D2C1", +"r. c #D2D2B0", +"t. c #D6D6E0", +"y. c #D5D5D4", +"u. c #BCBCBC", +"i. c gray67", +"p. c gray85", +"a. c #D7D7D7", +"s. c #BBBBBC", +"d. c #ABAB9B", +"f. c #D9D9C3", +"g. c #D6D6C5", +"h. c #CECEA9", +"j. c #CBCB9A", +"k. c #D4D4C4", +"l. c #D3D3C1", +"z. c #CECEA9", +"x. c #CBCB99", +"c. c #D4D4C6", +"v. c #D5D5D2", +"b. c #AAAAAA", +"n. c #D7D7D7", +"m. c #DADAD9", +"M. c #BABABB", +"N. c #A9A98E", +"B. c #D8D8B1", +"V. c #D5D5B4", +"C. c #CBCB99", +"Z. c #C7C78C", +"A. c #D3D3B2", +"S. c #D2D2B0", +"D. c #CBCB9A", +"F. c #C6C68B", +"G. c #D3D3B6", +"H. c #D4D4D1", +"J. c #BBBBBB", +"K. c #B4B4B4", +"L. c #B6B6B6", +"P. c gray54", +"I. c #C5C5C5", +"U. c #B2B2B7", +"Y. c #B7B7BD", +"T. c #858591", +"R. c #DCDCCC", +"E. c #D1D1B1", +"W. c #D6D6E4", +"Q. c #D6D6E1", +"!. c #D4D4C4", +"~. c #D3D3B2", +"^. c #D6D6E3", +"/. c #D5D5D4", +"(. c gray73", +"). c gray72", +"_. c gray73", +"`. c #909090", +"'. c gray79", +"]. c #B7B7B6", +"[. c #BBBBB8", +"{. c #8B8B8F", +"}. c #E0E0C9", +"|. c #D0D0AA", +" X c #D6D6DB", +".X c #D6D6D8", +"XX c #D3D3BD", +"oX c #D2D2B0", +"OX c #D6D6E0", +"+X c #D5D5D4", +"@X c gray74", +"#X c gray61", +"$X c #C3C3C3", +"%X c #C6C6C6", +"&X c #A9A9A9", +"*X c #9A9A9A", +"=X c #C4C4C3", +"-X c #C1C1C6", +";X c #BBBBA8", +":X c #CBCBA9", +">X c #D4D4DA", +",X c #D3D3D6", +" , < 1 2 3 4 5 6 7 8 9 0 q w ", +"e r t y u i p a s d f g h j k l ", +"z x c v b n m M N B V C Z A S D ", +"F G H J K L P I U Y T R E W Q ! ", +"~ ^ / ( ) _ ` ' ] [ { } | ...X.", +"o.O.+.@.#.$.%.&.*.=.-.;.:.>.,.<.", +"1.2.3.4.5.6.7.8.9.0.q.w.e.r.t.y.", +"u.i.p.a.s.d.f.g.h.j.k.l.z.x.c.v.", +"+ b.n.m.M.N.B.V.C.Z.A.S.D.F.G.H.", +"J.K.L.P.I.U.Y.T.R.E.W.Q.!.~.^./.", +"(.)._.`.'.].[.{.}.|. X.XXXoXOX+X", +"@X#X$X%X&X*X=X-X;X:X>X,X c #777769", +", c #77776A", +"< c #73736E", +"1 c gray45", +"2 c #747474", +"3 c gray46", +"4 c #767676", +"5 c #777777", +"6 c #787877", +"7 c #797977", +"8 c gray47", +"9 c #797978", +"0 c #797979", +"q c #7B7B78", +"w c gray48", +"e c #7A7A7B", +"r c #7B7B7B", +"t c #79797C", +"y c #79797D", +"u c #7B7B7D", +"i c #79797F", +"p c #7C7C7C", +"a c gray49", +"s c #7E7E7D", +"d c #7E7E7E", +"f c gray50", +"g c #979744", +"h c #A2A244", +"j c #BEBE68", +"k c #BEBE6A", +"l c #A2A273", +"z c #C2C275", +"x c #C8C875", +"c c #C9C977", +"v c #CACA76", +"b c #CACA77", +"n c #C9C978", +"m c #CBCB78", +"M c #CBCB79", +"N c #CECE7A", +"B c #CFCF7D", +"V c #CCCC7E", +"C c #CFCF7E", +"Z c #D1D179", +"A c #D7D77E", +"S c #808080", +"D c #848484", +"F c gray53", +"G c #888888", +"H c #898988", +"J c #929292", +"K c #949492", +"L c gray58", +"P c #9B9B9D", +"I c #9D9D9D", +"U c #9E9E9D", +"Y c #9F9F9F", +"T c #B4B49B", +"R c gray63", +"E c #A4A4A4", +"W c #AAAAAA", +"Q c #AEAEAE", +"! c #AFAFB5", +"~ c #B4B4B4", +"^ c gray71", +"/ c #B4B4B6", +"( c #B6B6B6", +") c #B7B7B7", +"_ c #B8B8B7", +"` c gray72", +"' c #B9B9B9", +"] c gray73", +"[ c #BBBBBB", +"{ c #B8B8BE", +"} c #BCBCBC", +"| c gray74", +" . c #BEBEBD", +".. c gray", +"X. c #D1D180", +"o. c #D3D380", +"O. c #D7D780", +"+. c #CBCB9D", +"@. c #CBCBB6", +"#. c #CFCFB4", +"$. c #CFCFB5", +"%. c #D1D1B4", +"&. c #D0D0B5", +"*. c #D1D1B5", +"=. c #D1D1B6", +"-. c #D2D2B6", +";. c #D2D2B7", +":. c #D3D3B8", +">. c #D2D2B9", +",. c #D3D3BD", +"<. c #D4D4BD", +"1. c #D9D9BE", +"2. c #BEBEC2", +"3. c #C0C0C0", +"4. c #C1C1C1", +"5. c gray76", +"6. c #C6C6C5", +"7. c gray78", +"8. c #C8C8C5", +"9. c #C8C8C7", +"0. c #C9C9C7", +"q. c #C8C8C8", +"w. c gray79", +"e. c #CACAC9", +"r. c #CACACA", +"t. c #CBCBCB", +"y. c gray80", +"u. c #CECECE", +"i. c #CFCFCE", +"p. c gray81", +"a. c #D4D4C1", +"s. c #D5D5C1", +"d. c #D5D5C2", +"f. c #DEDEC1", +"g. c #DFDFC1", +"h. c #DEDEC2", +"j. c #D1D1CF", +"k. c #D4D4CF", +"l. c #D0D0D0", +"z. c #D1D1D0", +"x. c gray82", +"c. c #D2D2D0", +"v. c #D2D2D1", +"b. c #D3D3D1", +"n. c #D2D2D2", +"m. c LightGray", +"M. c #D4D4D0", +"N. c #D5D5D1", +"B. c #D4D4D2", +"V. c #D5D5D2", +"C. c #D5D5D3", +"Z. c #D6D6D3", +"A. c gray83", +"S. c #D5D5D4", +"D. c #D5D5D5", +"F. c #D6D6D4", +"G. c #D6D6D5", +"H. c #D5D5D6", +"J. c #D5D5D7", +"K. c gray84", +"L. c #D7D7D7", +"P. c #D1D1D8", +"I. c #D3D3D9", +"U. c #D3D3DA", +"Y. c #D4D4DA", +"T. c #D6D6DA", +"R. c #D6D6DB", +"E. c #D3D3DE", +"W. c #D6D6DC", +"Q. c #D6D6DD", +"!. c #D4D4DE", +"~. c #D6D6DE", +"^. c #D6D6DF", +"/. c #D8D8D8", +"(. c #D8D8D9", +"). c gray85", +"_. c #DADADA", +"`. c gray86", +"'. c #D8D8DC", +"]. c #D8D8DE", +"[. c #D9D9DE", +"{. c gainsboro", +"}. c #DDDDDD", +"|. c gray87", +" X c #DFDFDE", +".X c #DFDFDF", +"XX c #E0E0DE", +"oX c #E1E1DE", +"OX c #D6D6E0", +"+X c #D6D6E1", +"@X c #D7D7E2", +"#X c #D6D6E3", +"$X c #D6D6E4", +"%X c #D9D9E3", +"&X c #DCDCE3", +"*X c #DFDFE5", +"=X c #D6D6E8", +"-X c #D7D7E9", +";X c #D7D7EE", +":X c #DFDFEA", +">X c gray88", +",X c #E1E1E0", +".D.D.", +"}.` 1 D.w.w.w.w.m.) + d 8 8 3 6 8 , $ i 6 8 8 8 8 < g o.c V k.D.", +"}.` 8 2Xm.2X5X`.}.` S uX}.tXuX3X0Xh.A qXoX2X2XoX0Xg.Z ;XW.+XD.D.", +"}.` 8 2XD.D 8 w.}.) 8 }.m.J 6 6.R.$.c W.k.B.m.m.U.&.m W.m.B.D.D.", +"}.` 3 2Xm.3.X Y 5X) 8 }.`.E Q *X&.m +XB.D.D.B.R.>.M +XB.D.D.D.", +"}.` 8 }.`.8 + p.}.) 3 2Xm.W . Y 0X$.m +XZ.D.D.D.W.&.M +XB.D.D.D.", +"}.` 8 2XD.1 - ..2X) 8 2Xp.G d 8.W.>.m +XB.B.D.B.].&.M ].B.D.D.D.", +"}.) 8 3Xm.3X3XR.].) t 0XR.4X0X].+X,.C -XR.W.W.R.$X<.X.-XW.W.D.D.", +"}.` 8 }.p.p.p.m.`./ : h.$.&.%.&.,.+.j a.&.>.>.&.<.+.j d.$.>.D.D.", +"}.` 2 D.w.w.8.w.k.! $ A c c c m C j h o.m m M M C j h o.c V k.D.", +"}.) 8 2XD.}.2X`.}._ u qXE.:XwX%X-Xa.o.;XW.W.%X].-Xa.Z ;XW.+XD.D.", +"}.` 8 2Xm.J u 6.}.) 6 oXB.K 6 8.W.&.m W.m.B.B.B.R.&.m W.B.D.D.D.", +"}.` 8 }.`.R Q 5X) 8 }.`.R Q *X$.m +XB.D.L.B.W.>.m W.B.D.D.D.", +"}.` 8 2Xm.W . Y 5X) 8 2Xm.W . Y 4X&.m +XB.D.D.D.W.&.M %XB.D.D.D.", +"}.` 3 2Xm.D d w.}.) 8 2Xm.D d 8.].&.m +XB.D.D.D.W.>.c %XB.B.D.D.", +"}.) u tX].5XtX}.2X..d 7X`.5XtX}.&X1.M +XB.D.D.D.W.:.C -XR.R.D.D.", +"}.` * 5.) ) ~ ) ..Y & 2.) ) ~ ) { T z E.k.m.m.m.U.$.j a.&.>.D.D.", +"].@.O u 8 8 8 8 8 3 - 8 3 8 8 3 d % < `.w.w.8.y.p.2.l Z m C k.D.", +"}._ i uX}.}.2X2X2X}.`.2X2XoX2X2XtX3.8 2Xm.2X3XR.D.D.U.+X+X+XD.D.", +"}.` 3 }.m.m.m.m.m.p.q.D.m.m.m.m.{.) 6 2XD.D 8 p.D.m.w.D.m.B.D.D.", +"}.` d 2Xm.D.D.m.D.m.y.D.A.D.B.B.{.` d oXl._ o Y 2Xp.p.D.A.D.D.D.", +"D.D.l.D.D.D.D.D.D.D.m.D.D.D.D.D.D.m.p.D.D.}.m.m.D.D.A.D.D.D.D.D.", +"D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.R.D.D.m.D.D.D.D.D.D.D.D.D.D." +}; + +/* XPM */ +static const char *const xpm_icon_2[] = { +/* columns rows colors chars-per-pixel */ +"48 48 80 1 ", +" c #050505", +". c gray6", +"X c #161616", +"o c #1D1D1D", +"O c #303019", +"+ c #252525", +"@ c #2C2C2C", +"# c #343426", +"$ c #323232", +"% c #3B3B3B", +"& c #464646", +"* c #484845", +"= c #4B4B4B", +"- c #555555", +"; c #5E5E5E", +": c #6D6D42", +"> c #646464", +", c #6A6A6A", +"< c #7D7D67", +"1 c #757575", +"2 c #828223", +"3 c #99992F", +"4 c #939334", +"5 c #BBBB3F", +"6 c #A6A646", +"7 c #BFBF46", +"8 c #B1B156", +"9 c #B2B25D", +"0 c #B4B47B", +"q c #C6C647", +"w c #C6C649", +"e c #C9C94A", +"r c #D1D14D", +"t c #C8C856", +"y c #C8C859", +"u c #C2C261", +"i c #C9C967", +"p c #CACA69", +"a c #D0D06D", +"s c #CBCB74", +"d c #D3D371", +"f c #828282", +"g c #8E8E8E", +"h c #939393", +"j c #9C9C9C", +"k c #A4A4A4", +"l c gray67", +"z c gray71", +"x c #BABAB7", +"c c #BBBBBB", +"v c #C8C884", +"b c #CECE8E", +"n c #D0D08E", +"m c #CFCF93", +"M c #D4D493", +"N c #D4D499", +"B c #D1D1AD", +"V c #D3D3BC", +"C c #BDBDC1", +"Z c #BCBCCA", +"A c #C5C5C5", +"S c #C7C7CC", +"D c #CCCCCC", +"F c #D3D3C6", +"G c #D4D4CE", +"H c #D5D5D4", +"J c #D9D9D7", +"K c #D5D5DA", +"L c #DBDBDB", +"P c #E2E2DF", +"I c #D7D7E5", +"U c #DADAE1", +"Y c #D7D7E9", +"T c #DDDDED", +"R c #D7D7F6", +"E c #D8D8FA", +"W c #E3E3E3", +"Q c #E9E9E9", +"! c gray95", +"~ c #F8F8F8", +/* pixels */ +"HHHHHHHHJHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH", +"HHHJHHHHDHHHHHHHHHDHHHHHHHHHHHHHHHHHDHHHHHDHHHHH", +"HHJJUWUWWWWWUWWWWWWWWUWWWUWWWWLWWWWUWWUWWLWWHHHH", +"HHJDkjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjljjjjkHJHH", +"HHPk+>;;;;;;;;;-;;;;;;;;;;;-;>;;;;;;;;o-;;;,DHHH", +"HHWj>~WQWWWWQWQHWWQWWQWWWWLLWWWWWWQQQQ=HQWQWJHHJ", +"HHUj;WDHLWLHHDHADHDHHDHHHHDAHHHHHHDHHH&AHHDHHHHH", +"HHWj;WGLh&1HJHJAHHJHHHJHHJDDHHHHHHHHHH=ALHHHHJHH", +"HHLj;WHLgjXgWHHAHJHHHHHHHJDDJHHHHHHJHJ&AKHJHKHHH", +"HHWj;QHD!z$CLHHADJHJHHHHHJDDJHHHHHHHHH=AKHHHHHHH", +"HHWj;WGLg fDHHHAHJHHHJHHHJDSKHHHHHHHHH&ALHHHJHHH", +"HHWj;QDL,%&jWHHAHHHHHHHHHJDDJJHHHHHHJH&AKHHHHHJH", +"HHUj;QHHWULLHHHDDHHHHJHHHHDDJHHHHHHHHH&ALHHHHHHH", +"HDWj;WHHHHHHHHHAHHHHHHHHHHDAHHHHHHHHHH=ALHHHHJHH", +"HHWj;QHHHJHHHHHDLLLULULPLLJHULKULWLLLU=AIIJKHHHH", +"HHWj-JAAAAADDAD>&=========**==========O7wwqyHKHH", +"HHWj;WDHHHDHHHL=kcccxcccxZ09Zccccccccc5BVVVVHHJH", +"HHWj;WHHJULHHHL=CWLLWWLLLTNpTLLLKLLLLUeGKKKKHHHH", +"HHWj;QDHAkALHHL=xLHHllHHHIviIGHHHHHHHHwFJHHHHHHK", +"HHWj;WHU,%olLGL=cLLc;$=WGImiIHHHHHHHHHwFHHHJHHJH", +"HDWj;QHHJWohUHL=cLHKk@;UHInpYHHHHHHHHHqFKHHHHHHH", +"HHWj;WDJH&1WHHL=xLHLA-%LGIbpIHHHJHHJHJqFKHJHKHHH", +"HDWj;QDW- =kLHL=cLLk-%&LHIbiIHJHHHHHHHqFKHHHHHJH", +"HHWj;WHJxljcJHP=cLHDkkJJGInpIHHHHJHJHHqFHHHHHHHH", +"HHWj;WHHLWWLHHL=xJHHPLHHGIbiIHHHHHGHHHqFHHHHHHHH", +"HHWj;QHHHHHHHHL=ZTIIIKIIKRNdRKIIIIUIIUeHIIIIHHJH", +"HHWj;LDDDDDDDDH&0MmbbbmbbN96NbbbmbbbbM3vmbmmHHHH", +"HHUj-LADADDDDAH&8aipiiiiid64diiipiiiii2upiisHHHH", +"HHLj;QHHHHHHJHW=ZTIIIIIIURNdEIIIIIYIIYrHTIIIHHHH", +"HHWj;WHHLWWLHHL=xJGJPPLGGIbiUGHHHHHHHHqFHHHHJHJH", +"HHWj>WDLh=>AHHU=xLLA;=jLHIniIHHHHJJHHHqFJHHHHHHH", +"HHWj;WHLlf.jLHL=cLHAj%%UGInpIHHHHHHHHHqFJHHHHJHH", +"HHUj;QHJU>+zLHL=cLDQk+,UHIbiIHHHJHHHHJwFJHHHHHHJ", +"HHWj;WDHjkXfWGL=xLLzj,oLHIbiIHHHHHHHHJqFHHHJHHHH", +"HHPj;QDLf&,DHHL=cLLz--kLHIbiYHHJHHHHHHqFKHHHKHHH", +"HHWj;WHHWWWLHHL=cLHKWWLHHImpIHHHHHHJHHqFKHHHHHHH", +"HHWj;WHHHHHHHHL=cLJHDHHHGUbiYHHHJHHHHJqFHHHHJHHH", +"HHWj>WHHHHHHJHU=cLHJJHJHHInpIHHHHHHHHHqFKHJHHHHH", +"HHLko=&&&&&=&&=+%==&&&=&*=# c #B4B3AE", -", c #CFCDC9", -"< c #DEDCD7", -"1 c #E2E0DA", -"2 c #BDBBB7", -"3 c #BEBCB8", -"4 c #D4D2CE", -"5 c #B2B1AD", -"6 c #B2B0AC", -"7 c #E2E0DB", -"8 c #B4B2AE", -"9 c #CBC9C4", -"0 c #E3E1DC", -"q c #DAD8D3", -"w c #E4E2DD", -"e c #E1DFD9", -"r c #DFDCD7", -"t c #C0BEBA", -"y c #BFBDB9", -"u c #BCBBB7", -"i c #BCBAB6", -"p c #BCBAB7", -"a c #C2C0BC", -"s c #B9B7B3", -"d c #B4B3AF", -"f c #6B6B6C", -"g c #757576", -"h c #707071", -"j c #7C7D7D", -"k c #2C2C2C", -"l c black", -"z c gray6", -"x c #2E2D2D", -"c c #B7B5B2", -"v c #7B7B7B", -"b c gray52", -"n c gray50", -"m c #8E8E8E", -"M c #2F2F2F", -"N c #0C0C0C", -"B c #2B2B2A", -"V c #CBC9C5", -"C c #E5E3DE", -"Z c #AEACA9", -"A c #161616", -"S c #1E1E1E", -"D c gray13", -"F c gray8", -"G c #040404", -"H c #111111", -"J c #020203", -"K c #323231", -"L c #DEDCD6", -"P c #B3B1AD", -"I c #E0DED8", -"U c #ADACA8", -"Y c gray2", -"T c #070707", -"R c #090909", -"E c #2A2A29", -"W c #D9D7D3", -"Q c #E6E4DF", -"! c #ADABA8", -"~ c #060606", -"^ c gray5", -"/ c #797979", -"( c #979797", -") c gray21", -"_ c gray25", -"` c gray56", -"' c #908F8F", -"] c #B8B6B2", -"[ c #B0AEAA", -"{ c #E4E2DC", -"} c gray1", -"| c #D7D7D7", -" . c gray100", -".. c #555555", -"X. c #686868", -"o. c #E8E8E7", -"O. c #AFAEAA", -"+. c #252526", -"@. c #2D2D2D", -"#. c #AEAEAE", -"$. c #D8D8D8", -"%. c #484848", -"&. c #4B4B4B", -"*. c #AFAFAF", -"=. c #A5A5A4", -"-. c #D8D6D1", -";. c #AEADA9", -":. c #DCD9D4", -">. c #868686", -",. c #727272", -"<. c gray49", -"1. c gray16", -"2. c gray4", -"3. c #CDCBC7", -"4. c #B9B8B4", -"5. c #858484", -"6. c #838382", -"7. c #414140", -"8. c #131313", -"9. c #262525", -"0. c gray9", -"q. c #434241", -"w. c #D4D3CE", -"e. c #D5D3CF", +"16 16 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , : ", -" . . O < O . ", -" O 1 2 3 4 5 O 6 7 8 9 - ", -" O O : < < : $ 0 q w : . ", -" e r + 3 t y * u 3 i p a ", -" s - d f g h j k l z l x < ", -" . & : c v b n m M l N l B < ", -" V C Z A S D D F G H J K < ", -" . L P I U l G Y l T l R l E < ", -"O $ W Q ! ~ ^ / ( ) l _ ` ' $ ", -"+ ] % [ { ! l } | ...l X. .o.o ", -"O $ q C O.+.@.#.$.%.l &.*.=.-.", -" : ;.:.c v >.,.<.1.l 2.l E < ", -" . 3.- 4.v 5.6.` 7.8.9.0.q.< ", -" : . q # w.4 4 # # # # e. " +"lXlXlXlXlXxXpXsXhXuXzXtXzXyXhXzX", +"lXlXlXlXkXmX%XX:X,X=X;X=X=X c #ABAAA6", -", c #7F7E7B", -"< c #E6E4DE", -"1 c #7B7A77", -"2 c #C6C4C0", -"3 c #E5E3DD", -"4 c #8B8A87", -"5 c #898885", -"6 c #E9E7E1", -"7 c #D7D5D0", -"8 c #7A7976", -"9 c #C8C6C1", -"0 c #B9B7B3", -"q c #ADABA7", -"w c #91908D", -"e c #E0DED8", -"r c #B6B4B0", -"t c #ADACA8", -"y c #E2E0DB", -"u c #92918D", -"i c #DDDBD5", -"p c #E3E1DB", -"a c #E1DFD9", -"s c #DBDAD5", -"d c #B2B0AC", -"f c #A5A4A0", -"g c #E5E3DE", -"h c #9F9E9A", -"j c #CCCAC5", -"k c #DFDDD7", -"l c #A5A3A0", -"z c #CAC8C3", -"x c #D6D5D0", -"c c #989693", -"v c #CECCC7", -"b c #E4E2DD", -"n c #8F8E8A", -"m c #868582", -"M c #E8E6E0", -"N c #72716E", -"B c #CFCDC9", -"V c #E7E5E0", -"C c #8D8B88", -"Z c #B4B3AF", -"A c #D9D7D3", -"S c #787774", -"D c #C2C0BC", -"F c #D6D4CF", -"G c #D3D1CC", -"H c #CBCAC5", -"J c #CFCDC8", -"K c #DDDAD5", -"L c #D9D8D3", -"P c #D9D7D2", -"I c #E7E5DF", -"U c #E6E4DF", -"Y c #BAB9B5", -"T c #9E9D9A", -"R c #A3A29F", -"E c #A2A19E", -"W c #A3A19E", -"Q c #A4A3A0", -"! c #A1A09D", -"~ c #B2B0AD", -"^ c #DBD9D5", -"/ c #858583", -"( c #5F5F60", -") c #6F6F70", -"_ c #6D6D6D", -"` c #6A6A6A", -"' c gray40", -"] c gray43", -"[ c gray42", -"{ c gray45", -"} c #4C4C4D", -"| c black", -" . c #050506", -".. c gray1", -"X. c #080809", -"o. c #0D0E0E", -"O. c #020203", -"+. c #070707", -"@. c #454544", -"#. c #A09E9B", -"$. c #92918E", -"%. c #8D8D8A", -"&. c #777878", -"*. c gray53", -"=. c gray52", -"-. c #818181", -";. c #7C7C7C", -":. c #868686", -">. c gray51", -",. c gray55", -"<. c #5B5B5B", -"1. c #020202", -"2. c #060606", -"3. c #0C0C0C", -"4. c #454543", -"5. c #C8C7C2", -"6. c #8F8E8B", -"7. c #8C8B89", -"8. c #717171", -"9. c #818180", -"0. c #7E7E7E", -"q. c gray48", -"w. c #767676", -"e. c gray50", -"r. c gray34", -"t. c #040404", -"y. c #454443", -"u. c #8D8C8A", -"i. c #7B7B7B", -"p. c #8B8B8B", -"a. c #898989", -"s. c #848484", -"d. c gray54", -"f. c #909090", -"g. c gray37", -"h. c gray5", -"j. c gray2", -"k. c #464544", -"l. c #868583", -"z. c #292A2A", -"x. c #343434", -"c. c #323232", -"v. c gray21", -"b. c gray18", -"n. c #0E0E0E", -"m. c gray7", -"M. c gray9", -"N. c #111111", -"B. c #4D4C4B", -"V. c #E3E0DB", -"C. c #BAB8B4", -"Z. c #E2E0DA", -"A. c #82817F", -"S. c #010101", -"D. c #B1B0AB", -"F. c #7C7B79", -"G. c #E8E5E0", -"H. c gray6", -"J. c #101010", -"K. c #D2D0CC", -"L. c #BDBBB7", -"P. c #828280", -"I. c #040405", -"U. c #0D0D0C", -"Y. c #0B0B0B", -"T. c gray15", -"R. c #222222", -"E. c #232323", -"W. c gray14", -"Q. c gray4", -"!. c #252525", -"~. c #181818", -"^. c #585857", -"/. c gray3", -"(. c gray75", -"). c gray100", -"_. c #F4F4F4", -"`. c gray63", -"'. c #C3C3C3", -"]. c #F6F6F6", -"[. c #D3D3D2", -"{. c #D6D3CE", -"}. c #D5D3CE", -"|. c #AFAEAA", -" X c #A2A09D", -".X c gray76", -"XX c #F8F8F8", -"oX c gray64", -"OX c #C6C6C6", -"+X c #FBFBFB", -"@X c #D6D6D4", -"#X c #8A8885", -"$X c #CDCBC6", -"%X c #B3B1AD", -"&X c #9A9995", -"*X c #D7D5D1", -"=X c #C1C1C1", -"-X c gray97", -";X c #A2A2A2", -":X c #D4D3D2", -">X c #888885", -",X c #494A4A", -" c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , < + & 1 2 . 3 4 5 6 + 7 8 9 O + ", -" + . 0 q O X * w = e r t y X 9 u + i ", -" @ O @ p + y y + @ y + ", -" + a . + i = @ X s + @ + . @ + ", -" + : d f g + = h j k y l z . o x c v e + ", -" + b n m M o v N B o V C Z b + A S D y + ", -" F o @ G 2 o o H G o o 7 J K ", -" + L = = A X = = P @ P L + o = = ", -" + y I < < U U < g U U < g g U < < g U : ", -" o o + . Y T R E E E E E E W Q Q Q Q Q Q l ! ~ @ ^ ", -" o F P o A U / ( ) _ ` ' ] [ { } | ...X.o.O.+.| @.V A ", -" = g #.$.O L 3 %.&.*.=.-.;.:.>.,.<.| 1.| 2.3.| ..| 4.V P ", -" + X 5.6.P + g 7.8.9.0.q.w.e.;.=.r.| 1.| 2.3.| t.| y.V P ", -" o 7 o o = g u.i.p.a.s.e.d.:.f.g.| ..| +.h.| j.| k.V P ", -" + b O + = I l.z.x.c.x.v.c.c.x.b.h.n.h.m.M.3.N.1.B.U = ", -" + V.d C.Z.& M A.| S.| j.3.| S.| h...| | j.3.| ..| y.V P ", -" + p D.F.+ = G.A.| t.S.+.H.1.j.1.J...| | 2.h.| j.| k.V P ", -" @ K.L. A M A.| S.| j.3.| S.| h...| | j.3.| ..| y.V P ", -" @ s X : P G.P.I.U.Y.n.T.R.E.E.W.3.Y.Q.H.T.R.!.~.^.g = ", -" = F o F & o P M A.| /./.| (.)._.).`.| Q.+.| '.).].).[.{.@ ", -"+ @ 5 }. g |. XV 7 M A.| S.1.| .X).XX).oX| t.S.| OX).+X).@X}.@ ", -"+ X #X$X@ b %X&XU *XM A.| ..t.| =X).-X).;X| t.S.| '.).-X).:X}.@ ", -" + + + = A P M A.| S.1.| .X).XX).oX| 2...| OX).+X).@X}.@ ", -" @ b = U >X,X.sXjXkX-.lX*.r.| 1.| j.Y.| ..| zXV P ", -" o y = b xXw.cXvXbXi.>.nXmXMXNXBXVX!.CXZXAXSXDXg = ", -" + P }.}.}.FXF }.}.}.7 + rX+ GX= + rXrX= ", -" o @ @ @ @ @ @ @ @ @ o o o o o o o o o " +"lXlXlXlXlXlXlXlXlXlXlXlXkXnXcXlXlXxXmXlXlXkXxXcXkXlXxXmXlXlXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXlXxX6XuXxXzXaX3XlXlXcXdXiXxXzXpX3XlXlXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXjXZXl.l.AXzX8X;.aXzXBX:.v.AXxX6X;.dXxXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXkXbX~. XmXvX2Xm.lXlXvX(.{.mXvX.-.%.,.;.4.E O X $ - . # U VXhX", +"lXlXlXlXjXCXG.i.BXgXBXM.9.j.f.p.r.g.a.x.| X @ = O Y CXhX", +"lXlXlXlXkXMX|.g.bXhXBXn.2.p.y.w.8.u.r.f.] X @ = O U CXhX", +"lXlXlXlXlXlXjXxXzXjXBXm.w.z.k.d.u.l.g.n.X. o # - + Y CXhX", +"lXlXlXlXlXkXMXmXkXjXCXl.f m v n M v v n l - ; - < 5 = , . ~ VXhX", +"lXlXlXlXkXmXOX}.nXgXZXg. X + = . - o + = O U CXhX", +"lXlXlXlXjXCXJ.=.MXgXCXg. O . # : X + X > o @ - @ Y CXhX", +"lXlXlXlXkXcX0X*XxXhXZXg. X + = . - o + = O U CXhX", +"lXlXxXlXlXkXbXNXkXhXCXh.o - * ; a y u u i = * & : a y p 5 | NXjX", +"lXkXsXlXlXzXsXfXzXhXCXg. $ $ #XUXAXUXP. & # *XUXFXUXwXdXxX", +"kXvXg.qXcXNX|.D.ZXfXZXg. X X &XUXGXUXU. O . ;XUXKXUXtXdXxX", +"kXnXd.-XnXmXOXl.MXgXCXg. O O %XUXFXUXI. O . *XUXGXUXwXdXxX", +"lXkXkXkXlXlXjXjXlXhXZXg. X X &XUXGXUXU. @ o ;XUXKXUXtXdXxX", +"lXlXlXlXlXkXcXNXkXjXVXc.T ] ` ^ d.H.C.P.;.@ > - : T _ _ E 8.nXkX", +"lXlXlXlXkXvXwX}.bXhXBXm.w.z.k.f.7.e.0.p.` . + = O U CXhX", +"lXlXlXlXjXCXV.} BXgXBXn.3.a.u.e.q.s.i.k.} O . # > o % R VXhX", +"lXlXlXlXlXzXaX1XzXjXBXv.3.a.i.e.8.i.t.g.] X + * o I CXhX", +"lXlXlXlXlXlXxXnXlXjXNXA.9.f.s.i.r.s.p.j.%.w i y a h t p 5 X.BXjX", +"lXlXlXlXlXlXlXkXlXlXlXhXsXsXsXsXsXsXsXsXfXjXjXjXjXjXjXjXjXjXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXzXxXxXxXxXxXxXxXxXxXzXzXzXzXzXzXzXzXzXlXlX" }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 64 1 ", -" c #010101", -". c #0B0B0B", -"X c #131313", -"o c #1C1C1C", -"O c #212121", -"+ c gray16", -"@ c #323232", -"# c #3C3C3C", -"$ c gray27", -"% c #4C4B4B", -"& c #504F4E", -"* c #51504F", -"= c #555554", -"- c #5A5957", -"; c #5B5B5B", -": c #605F5E", -"> c #62615F", -", c #646363", -"< c #686765", -"1 c #6B6A67", -"2 c #6A6A6A", -"3 c #706F6C", -"4 c #727272", -"5 c #7A7976", -"6 c #7D7D7D", -"7 c #817F7D", -"8 c #81807E", -"9 c #838383", -"0 c #888784", -"q c #8A8885", -"w c #8B8B8A", -"e c #93928E", -"r c #959490", -"t c #989693", -"y c #9A9996", -"u c #9E9D9A", -"i c #A3A19E", -"p c #A5A4A2", -"a c #A8A7A4", -"s c #ABAAA6", -"d c #AEACA8", -"f c #B5B3AF", -"g c #B4B3B2", -"h c #B8B6B2", -"j c #BBB9B5", -"k c #BBBBBA", -"l c #C0BEBA", -"z c #C3C1BD", -"x c #C6C5C4", -"c c #C9C7C3", -"v c #CBC9C4", -"b c #CECCC8", -"n c #D0CECA", -"m c #D4D3CE", -"M c #D6D5D1", -"N c #D9D7D2", -"B c #DCDAD5", -"V c #DFDDD8", -"C c #E0DED9", -"Z c #E4E2DD", -"A c #E6E5E1", -"S c #E9E7E1", -"D c #EBE9E3", -"F c #FDFDFD", +"48 48 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"SNNBn8iSBBBBB", -"BBBBBBBBBBBBBBBBBBNVb-jZNBm;;:;;::;;;=@@@@@@@@@@@+,ZBVN", -"BBBBBBBBBBMcMBBNAu,q999949999w2 .X *SMBV", -"BBBBBBBBMSt>nVNNAu;088964969692 X &SMBB", -"BBVBBBBBBVMq7SNBAu,08869469689< .X &SNBB", -"BBBBBBBBBVbizZBNAu>9666646866w, X . &SNBB", -"BBBBBBBBBBVZCBBNAu.pXxXhXBX[.E 2XbXkXkXMXe.e.MXkXjXnX_.=.6XbXkXlXlXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXVXBXxXlXlXlXlXlXgXzXlXlXkXjXkXkXlXlXzXgXxXvXkXlXlXlXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXjXjXlXlXlXlXlXlXzXlXlXlXlXzXzXlXlXlXlXzXlXkXlXlXlXlXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXlXlXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXxXmXnXnXnXnXnXnXnXnXnXnXnXnXbXbXbXbXbXbXbXbXbXbXvXbXvXlXlXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXkXlXlXlXlXxXpX._.BXjXjXBX(.2 X X 2 . . . < # . . # < . . O ) ZXhXlXlX", +"lXlXlXlXlXlXlXlXlXzXhXkXmXkXlXjXBX(.1 . X 2 . , # # , . o ( ZXhXlXlX", +"lXlXlXlXkXkXlXlXlXlXlXjXkXlXlXjXBX/.8 $ = * & - 6 . o o o 2 , % * * % , 2 o o @ _ ZXhXlXlX", +"lXlXlXkXMXnXkXlXlXkXcXNXlXlXlXjXBX/.0 = : ; , . r.kX0XeXqXgXI.# > ; ; > # I.gXqXeXeXtX|.hXzXlXlX", +"lXlXkXvX&XXdXzXlXlX", +"lXlXjXCXP.| nXkXkXxXpXW #XmXkXjXBX(.1 . O z.UXKXUXLXUXoX X X oXUXLXUXIXUX,XdXzXlXlX", +"lXlXkXcX*X'.gXzXkXcXrX^.6XvXkXjXBX(.2 o X @ z.UXHXPXJXUXXX X X .XUXGXKXJXUX:XfXzXlXlX", +"lXlXlXkXmXVXzXlXlXkXcXCXbXkXlXjXBX(.1 . O z.UXKXUXLXUXoX o . . o oXUXLXUXIXUX,XdXzXlXlX", +"lXlXlXlXkXjXlXlXlXlXkXgXkXlXlXjXVXQ.D R U U T H 2.U.F.H.F.U.r., 3 2 2 2 2 } ,.-.-.:.#.s.bXkXlXlX", +"lXlXlXlXlXlXlXlXlXlXzXnXlXlXlXjXCXY.%.b.j.k.k.j.3.0.0.0.9.t.+. # , . o ( ZXhXlXlX", +"lXlXlXlXlXlXlXlXlXlXxX:.*XMXkXjXCXT.o.d.t.y.y.t.5.s.p.a.p.h.=. # 2 . O O # _ ZXhXlXlX", +"lXlXlXlXlXlXlXlXhXVXU.e K.ZXhXjXCXT.O.g.u.i.i.u.4.p.i.i.u.f.&. # , . o ( ZXhXlXlX", +"lXlXlXlXlXlXlXlXlXzXsXC.oXMXkXjXCXT.+.g.u.i.i.u.5.p.i.i.u.f.*. X X X $ 1 X X + ) ZXhXlXlX", +"lXlXlXlXlXlXlXlXlXlXcXZXnXkXlXhXCXY.o.h.u.i.p.u.4.p.i.i.u.g.&. # , . o ( ZXhXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXhXkXlXlXjXVX!.@.p.e.r.r.e.4.t.r.r.e.i.-.w e e e q u h 0 e e t < #.VXjXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXzXgXyXtXyXyXyXyXyXtXyXyXyXtXuXdXdXdXdXdXdXsXdXdXdXdXdXfXlXlXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXzXcXcXcXcXcXcXcXcXcXcXcXcXcXxXxXxXxXxXxXxXxXxXxXxXxXxXlXlXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXlXlXlXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlX" }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/pattern.sav sgt-puzzles-20160429.b31155b/icons/pattern.sav --- sgt-puzzles-20140928.r10274/icons/pattern.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/pattern.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,29 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :7:Pattern +PARAMS :5:10x10 +CPARAMS :5:10x10 +DESC :67:3.4/2.2/4.1/2.3/2.3.2/4/6/6/3.1/1/5/5/1.1/4/5/6/2.3/3.3/1.1.3/1.1.4 +NSTATES :2:22 +STATEPOS:2:22 +MOVE :8:F6,4,1,2 +MOVE :8:F7,4,1,2 +MOVE :8:F4,5,2,1 +MOVE :8:F5,4,1,1 +MOVE :8:E0,5,2,1 +MOVE :8:E0,4,3,1 +MOVE :8:F0,6,1,4 +MOVE :8:F0,1,1,2 +MOVE :8:F0,1,5,1 +MOVE :8:E1,2,1,1 +MOVE :8:F2,0,1,4 +MOVE :8:E3,2,1,1 +MOVE :8:F3,0,1,1 +MOVE :8:F4,0,1,1 +MOVE :8:F3,3,1,1 +MOVE :8:E6,3,4,1 +MOVE :8:F6,6,1,4 +MOVE :8:F7,6,1,4 +MOVE :8:E6,0,1,4 +MOVE :8:E7,0,1,3 +MOVE :8:E5,1,1,1 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/pattern-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/pattern-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/pearl-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/pearl-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/pearl-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/pearl-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/pearl-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/pearl-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/pearl-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/pearl-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/pearl-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/pearl-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/pearl-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/pearl-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/pearl-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/pearl-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/pearl-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/pearl-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/pearl-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/pearl-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/pearl-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/pearl-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/pearl-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/pearl-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/pearl-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/pearl-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/pearl.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/pearl.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/pearl-icon.c sgt-puzzles-20160429.b31155b/icons/pearl-icon.c --- sgt-puzzles-20140928.r10274/icons/pearl-icon.c 2014-09-29 00:33:45.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/pearl-icon.c 2016-04-29 00:31:43.000000000 +0000 @@ -1,425 +1,886 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 172 2 ", -" c gray40", -". c #706F6F", -"X c #767575", -"o c #787877", -"O c #747473", -"+ c gray45", -"@ c #757574", -"# c #737372", -"$ c #727171", -"% c #70706F", -"& c #727271", -"* c #676767", -"= c gray42", -"- c #D8D6D1", -"; c #D9D7D2", -": c #C6C4BF", -"> c #C1BFBB", -", c #CECCC7", -"< c #DBD9D4", -"1 c #E4E2DD", -"2 c #E1DFDA", -"3 c #D3D1CC", -"4 c #E5E3DE", -"5 c #E0DED9", -"6 c #D7D5D0", -"7 c #C4C2BE", -"8 c #6A6A6A", -"9 c #606060", -"0 c #6C6B68", -"q c #3A3A38", -"w c #090908", -"e c #ACAAA6", -"r c #CDCCC7", -"t c #A09E9A", -"y c #6B6A68", -"u c #6A6966", -"i c #636260", -"p c #777573", -"a c #CBC9C4", -"s c #CCCAC6", -"d c DimGray", -"f c gray36", -"g c #434341", -"h c #1A1A19", -"j c black", -"k c #9B9A96", -"l c #CDCBC7", -"z c #DFDDD8", -"x c #504F4E", -"c c #151514", -"v c #484746", -"b c #3C3B3A", -"n c #3F3F3D", -"m c #060606", -"M c #B4B3AE", -"N c #D0CEC9", -"B c #686868", -"V c #E8E6E1", -"C c #94928F", -"Z c #242423", -"A c #E3E1DC", -"S c #C0BFBA", -"D c #73726F", -"F c #F7F5EF", -"G c #D4D2CE", -"H c #E3E1DB", -"J c #1D1C1C", -"K c #B1AFAB", -"L c #D1CFCA", -"P c #676766", -"I c #C3C2BE", -"U c #848380", -"Y c #252423", -"T c #CFCDC8", -"R c #B2B1AD", -"E c #D3D1CD", -"W c #424140", -"Q c #5E5D5B", -"! c #BDBCB8", -"~ c #151515", -"^ c #A2A19D", -"/ c #C1C0BC", -"( c #D6D4CF", -") c #908E8B", -"_ c #262625", -"` c #C2C0BC", -"' c #DEDCD6", -"] c #5D5C5A", -"[ c #767573", -"{ c #C4C3BE", -"} c gray9", -"| c #B0AFAA", -" . c #908F8B", -".. c #E0DED8", -"X. c #C8C6C1", -"o. c #BBBAB6", -"O. c gray93", -"+. c #E0E0DF", -"@. c #C0BEB9", -"#. c #CBC9C5", -"$. c #D0CFCA", -"%. c #91908C", -"&. c #272626", -"*. c #E2E0DA", -"=. c #C7C5C1", -"-. c #CAC8C4", -";. c #B6B5B5", -":. c #B7B7B6", -">. c #C9C8C3", -",. c #D2D0CB", -"<. c #181717", -"1. c #B2B0AC", -"2. c #D2D0CC", -"3. c #8C8B87", -"4. c #252524", -"5. c #BAB8B4", -"6. c #DEDCD7", -"7. c #BEBDB9", -"8. c gray10", -"9. c #C9C7C3", -"0. c #868582", -"q. c #272625", -"w. c #BBB9B6", -"e. c #DCDBD6", -"r. c #464644", -"t. c #61605E", -"y. c #D5D3CF", -"u. c #B8B6B2", -"i. c #C5C3BF", -"p. c #161616", -"a. c #A6A5A1", -"s. c #93928E", -"d. c #20201F", -"f. c #C5C3BE", -"g. c #A8A6A3", -"h. c #C8C6C2", -"j. c #3B3A39", -"k. c #E7E4DF", -"l. c #C6C5C0", -"z. c #7C7C7C", -"x. c #BAB9B5", -"c. c #CECDC8", -"v. c #D1D0CB", -"b. c #9E9C99", -"n. c #171716", -"m. c #131312", -"M. c gray1", -"N. c #7B7A77", -"B. c #C1BFBA", -"V. c #BCBBB9", -"C. c #FEFFFF", -"Z. c #C7C7C5", -"A. c #C0BEBA", -"S. c #6C6C6B", -"D. c #DBD9D3", -"F. c #CDCBC6", -"G. c gray39", -"H. c #B1AFAC", -"J. c #BEBCB8", -"K. c #BDBBB7", -"L. c #BFBEBA", -"P. c #B8B7B3", -"I. c #B0AFAC", -"U. c #B9B8B4", -"Y. c #161515", -"T. c #9C9B98", -"R. c #B9B7B4", -"E. c #686767", -"W. c #626262", -"Q. c #616262", -"!. c #616162", -"~. c gray100", +"16 16 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , < 1 2 3 4 5 6 7 8 ", -"9 0 q w e r 6 t y u i 0 p a s d ", -"f g h j k l z x c v b n m M N B ", -"B V C Z A S 1 v D F G H J K L B ", -"P I U Y T R E W Q N R ! ~ ^ / B ", -"* ( ) _ 5 ` ' ] [ z { L } | L B ", -"* ( ._ ..X.o.O.+.@.#.$.} | L B ", -"* - %.&.*.=.-.;.:., >.,.<.1.2.B ", -"* L 3.4.; 5.6.W i z 7.#.8.e #.B ", -"* 9.0.q.; w.e.r.t.y.u.i.p.a.7 B ", -"* - s.d.f.g.h.j.u k.l.>.z.x.c.d ", -"* v.b.m n.m.<.M.N.z B.V.C.Z.A.S.", -"8 , D.F.T ! a , ( - F., G.5.3 d ", -"d H.7.J.A.R K.L.K.P.I.U.Y.T.R.E.", -" G.W.Q.Q.W.W.!.W.G.G.W. G.G. " +"&.2.8.q.6.5.7.5.4.4.2.4.4.7.6.*.", +":.rXtX;XtX%X4XuXjXfX9XkXdXeX=X;.", +"O.>.C % ^.3XeXL.:.;.#.>.9.1X2X-.", +" .K 8 F.3XsX^ 3 Y A F @ [.6X=.", +"=.xXB.i hX$XjXY 5.FX0XhXq `.7X=.", +"*.*Xd.p 5X'.9XJ X.6X'.+X3 I.%X=.", +"*.wXn.a dX%XaX .8.sX=X7X5 _.7X=.", +"*.wXn.a dX>XoXmXdX$X1X6X5 _.7X=.", +"*.rXm.s gX:XXZ ;.zX;X,Xe.XX4X-.", +"*.7XJ.@ 5 1 6 o e.sX%X+XIX>X$X>.", +";.4XuX3X5X+X1X4XwXrX3X4X#.XX9X-.", +"-.`.@X@X$X'.+X#X+X X_..X4 G..X=.", +"&.#.@.+.+.@.@.+.@.#.#.@.&.#.#.&." }; /* XPM */ static const char *const xpm_icon_1[] = { /* columns rows colors chars-per-pixel */ -"32 32 63 1 ", -" c #000000", -". c #0D0D0C", -"X c #131313", -"o c #181817", -"O c #1D1D1C", -"+ c #252423", -"@ c #292827", -"# c #2C2C2B", -"$ c #3B3B39", -"% c #51514F", -"& c #555553", -"* c #5A5957", -"= c #575858", -"- c #5E5E5E", -"; c #605F5D", -": c #62615F", -"> c #656565", -", c #686764", -"< c #686867", -"1 c #686868", -"2 c #6F6F70", -"3 c #767574", -"4 c #7C7B7A", -"5 c #858482", -"6 c #898885", -"7 c #8E8D8A", -"8 c #93918E", -"9 c #969492", -"0 c #999794", -"q c #9B9A96", -"w c #9E9C99", -"e c #A09F9B", -"r c #A3A29E", -"t c #A6A5A2", -"y c #A8A7A3", -"u c #ABA9A6", -"i c #AFADA9", -"p c #B0AEAB", -"a c #B3B2AE", -"s c #B5B4B0", -"d c #B8B7B3", -"f c #BCBAB6", -"g c #BEBDB9", -"h c #C1BFBB", -"j c #C3C2BE", -"k c #C6C4C0", -"l c #C8C6C2", -"z c #CCCAC6", -"x c #CFCDC8", -"c c #D0CECA", -"v c #D5D3CE", -"b c #D7D5D0", -"n c #D8D6D1", -"m c #DCDAD5", -"M c #DFDDD8", -"N c #E0DED9", -"B c #E4E2DD", -"V c #E4E3E1", -"C c #E9E7E1", -"Z c #EBE9E4", -"A c #EAEAEB", -"S c #F6F6F7", -"D c #FEFEFF", +"32 32 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +">>-:::::>->-:>->->->;>-::::::>1", -"<>4444444443444444443444444444>>", -">", -"<>kbmbfbnvxabvvvvvvbsxbvbbvvbk1>", -"<>jMs# #fmzsnvvvbvvnscbvbbvbnk1>", -"<&O@X %BzsbmiO++++O++++XtMbk>>", -"2% $Mzsbmt qMbk1>", -">>8i4 8BzsbMy owrr6qrrO wMbk1>", -">,", -">shx& *cgftjl0 Ohhjyfjj+ 7zgs><", -">", -"<>lmV: ,ZbvdmBp OmnMdvmm@ eVml><", -"><", -">>kbB; :BvxaMigDDtjMacvb@ qNbk<>", -"<>kbB; >BvxaMwASDliNaxbb@ qMbk><", -">,jvB; :BvxsMukDDtjmsxbn@ qNbl>>", -"<>lvB: :Bvxsbm72BvcsbMi Onvnscbm@ wNbl><", -"<>jcM- :Bxlpvmr Oxcvslcv+ qmch<>", -"><", -"<>lbB: >BvcsnNy Ovnmdcnm@ eVmk<>", -">>", -"<>kbB; &hpp9ad6 Ovvnsxn0mSefMk><", -">>", -">>kcN< oXXXXXXX.#cbbavgsDDVeMk>>", -"<", -">>jbcvnvbbxsnvbbbcvbazbb+ 0Mbk1>", -"<>", -">", -"<>------------------:--->>---:>>", -"><11<<<<111111111111>11<<>1111>1" +"&.&.+.O.+.+.+.+.+.+.+.@.O.+.+.+.+.+.+.O.@.+.+.+.+.+.+.+.O.+.&.&.", +"&.&.q.t.r.r.e.r.r.r.e.8.t.r.r.r.r.r.r.t.8.e.r.r.r.r.r.r.t.q.&.&.", +"&.&.>XiXwXtXsXtXeXyX8X XiXrXrXrXrXrXeXiX X8XyXrXrXrXrXrXiX,X&.&.", +"&.&.;XeXuXqXoXwXyXqX5X{.rX0X0XqXqXqX0XrX{.4XwX0XqXqX0X0XrX-X&.&.", +"&.&.-XsX Xj . z @XiX3X{.tX0XqXwXwXwXqXyX}.6XrXwXwXwXqX0XtX;X&.&.", +";.` q s 1 o ^ hX2X{.eXpX(.9 u u u i w y u u u 6 T.aXwX;X&.&.", +":.( . . o Z fX3X{.wXaXE. . X G.dXwX;X&.&.", +"*.+.N.^.0.. N.fX2X{.wXaXW. 5 L.P.Y.k.G.I.U.e J.dXwX;X&.&.", +"%.*.6XfXbX' | zX8X4X{.wXaXW. w pXdXhX@XtXfXhXd H.sXqX-X&.&.", +"&.&.:XeXzX$. =.cXeX9X XuXhX^. q qXeXyX}.6XrXyXs P.kXuXXZ. 0 +X$X&XR.oX%X&Xu v.XrXzX+. $.lX0X6X}.eXsXQ. q wXrXuX|.7XtXiXf I.gXtX>X&.&.", +"&.&.-X0XhXO. *.mXuXwXOXaXlX(. 0 8X0XrX{.3XrX7Xj O B.gXqX-X&.&.", +"&.&.;XqXjXO. ` #X_./.Z.].XXc. q 9XqXrX{.5XrXS.wXDXP.+XaX-X&.&.", +"&.&.;XqXjX . O . 9 9XqXrX[.wXXXoXUXUXvXJ.dX=X&.&.", +"&.&.;XqXhX*.O 4 1 1 < > 1 1 2 - h 9XqXrX{.qX@X[.UXUXgXL.dX=X&.&.", +"&.&.;XtXqX6X2X3X2X4X:X(.6X2X3X2X3XqX0XtX{.4XuXK.].6XB.>XiX-X&.&.", +"&.&.=XeX8XqXwXwXwXeX6X}.tXqXwXwXqX9X8XeX[.3XqXrXi G.fX0X=X&.&.", +"&.&.3XfXiXpXiXiXiXaXwXXXdXuXiXiXiXpXiXfXoXwXaXdXf Y.xXaX3X&.&.", +"&.&.J.!.E.E.E.E.E.W.Y.V.!.E.E.E.E.E.E.!.V.U.W.Q.g . u.).W.J.&.&.", +"&.&.o.X.X.X.X.X.X.X.X.O.X.X.X.X.X.X.X.X.O.X.X.X.$.&.O.X.X.o.&.&.", +"&.&.=.=.=.=.=.=.=.=.=.*.=.=.=.=.=.=.=.=.*.=.=.=.*.&.=.=.=.=.&.&." }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 72 1 ", -" c #000000", -". c #080707", -"X c gray3", -"o c #151515", -"O c #181817", -"+ c #1A1919", -"@ c #212120", -"# c #282726", -"$ c #2F2F2F", -"% c #2F2F30", -"& c #363534", -"* c #393937", -"= c #3B3A39", -"- c #464543", -"; c #4D4C4C", -": c #50504E", -"> c #565554", -", c #5E5E5E", -"< c #605F5D", -"1 c #62615E", -"2 c #656566", -"3 c #686764", -"4 c #6A6967", -"5 c #696969", -"6 c #706F6C", -"7 c #70706F", -"8 c #757474", -"9 c #797775", -"0 c #797876", -"q c #7C7B79", -"w c #83827F", -"e c #858482", -"r c #898784", -"t c #8A8986", -"y c #8E8D8A", -"u c #92918E", -"i c #969695", -"p c #999793", -"a c #9A9996", -"s c #9A9A99", -"d c #A09E9B", -"f c #A2A19E", -"g c #A5A4A1", -"h c #A8A7A4", -"j c #AAA9A5", -"k c #AFAEAB", -"l c #B0AFAB", -"z c #B2B1AD", -"x c #B6B5B2", -"c c #B9B7B3", -"v c #BCBAB6", -"b c #BDBCB8", -"n c #C2C1BD", -"m c #C2C2C3", -"M c #C9C7C2", -"N c #CCCAC5", -"B c #CCCBC9", -"V c #D1CFCA", -"C c #D4D2CD", -"Z c #D7D5D1", -"A c #D9D6D1", -"S c #DCDAD4", -"D c #DFDDD8", -"F c #E0DED9", -"G c #E5E2DD", -"H c #E7E5E0", -"J c #E9E7E2", -"K c #ECEAE4", -"L c #F6F3EE", -"P c #F1F1F2", -"I c #F8F6F0", -"U c #FDFDFD", +"48 48 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" . &SCCgCCVG3 . OVZCCC8222", -"225, #SCCgCZVG5 . . +VZCZC8252", -"222,=--* . 3FVZgCCVG3 @;---==---= +CCCZZ8,22", -"225,bKFD> =VACZgCCVH3 6LDGKbNJFKM OCZCCZ8,52", -"225,kZVCAo vDVCCgCCVG3 2GVVCkvZVAz OCCCCC8252", -"225,kACCVO xAVCCfCCVG2 2GVVAzbSVSc OVCCCC8152", -"225,xGZSAO bGASShSSZK5 5KCAGxnFAFb +ZSSZS8222", -"222,fnbbvo fnvbbpbbcN, ,Ncvnfjnvnf ovvvbb7222", -"2222axzzlo avzzzuzzkn> >nkzcafxzcs ozzzzz7122", -"225,xGASA+ bGASSjSSAK5 4KASFcnFAGb +ASASD8222", -"525,zACCVo cSVCCfCCNG6 4HVVSzvAVSx +VCCCC8252", -"225,kSCZC+ cSCCChCCCF>%$>FCCSzbSCSc OCACZC8252", -"225,zSCCCo cSCCZfCCSwcUUxeSCSzbACSc OVCCCC8222", -"225,zSCCCo vSCCChCSlaUUUUslSSzbSCDc OVACCC8222", -"225,zSCCC+ cSCCAfCFpnUUUUmpFSzbACSc OCCCCZ8122", -"255,zSCZV+ cSCCCgCDhgUUUUgjSAzbSCSc OVZCCZ8152", -"225,zSCZC+ vSCCCgCCZqBUUNqACSzbACSc OVCCCC8222", -"225,zSVZCo cSCCCgCCZZ>;;>CCCSzbSCSc +CZCCC8252", -"225,zSCCV+ cSVCZgCCVH6 7JVCDzbACSc oCCCZZ8,22", -"525,kSCZV+ cSCCZgCCVG3 2HVCSzbSCSc OCZCCC8222", -"225,zSVCV+ cSCCCgCZVG3 3GVCAzbAVSc OVCCCZ8,22", -"2221ujggfo yjfhhtfhfz: :zdgjuijgju ofhggg6222", -"225,zSCZC+ cSCCCfCZVH3 3HVCDzbACSc +CCCCZ8255", -"225,zACZBO bDCCCgCCCG2 2GVCSzbSCSc +CCCCC8222", -"525,zSCZCO zZVVVfVVNG2 3HVCSzbSVDv +ZZCCC8222", -"225,zSCCCO MKGHHzGGGI6 3HVCSzbSZN9gSueCCCC8252", -"225,zACZBO >21,1;11,3$ 3GVCSzbZSeBUUUzsDCC8222", -"225,zSCCV+ . X 5GCCSzbSMtUUUUPeACC8,22", -"255,zSCZC+ 3GVCSzvDMtUUUUPeACC8222", -"225,zSCCC04666656>6675572dSCCSzbSSemUUUgsDCC8,52", -"225,zSCCCGGGGGGGGzGGHGHHHSCZCSzbSCV0iNeeZCZC8252", -"225,zSVZCVVVVVVVCfBBVVVVVCCZCSzbSVDb +ZCCCC8222", -"225,kSVCCCVCCCVCCgCCVZCVVCVCVZzvAVAc +VCCCC8222", -"255,xGASSSSSSSSSShSSSSSSSSASSHxmGAHb +ZDASS8222", -"222,sxzzzzzzzzzzzuzzzzzzzzzzkxsfxkcs okzzzz7222", -"22521,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,>,,,,,,2222", -"222255555255555555555555555525552555552255552222", -"222522252252222222222522222225222222222222522222", -"222222222222222225222225222222252222222252222252" +"&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.", +"&.&.&.&.*.*.*.*.*.*.*.*.*.*.*.*.*.&.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.&.&.&.&.", +"&.&.&.&.$.@.@.@.@.@.@.@.@.@.@.@.@.$.@.@.@.@.@.@.@.@.@.@.@.@.#.#.@.@.@.@.@.@.@.@.@.@.@.@.&.&.&.&.", +"&.&.&.%.2.8.6.7.7.7.7.7.7.7.7.7.7.<.7.7.7.7.7.7.7.7.7.7.6.8.2.4.7.7.7.7.7.7.7.7.7.7.7.7.=.&.&.&.", +"&.&.=.X.`.iX9XqXqX0X0X0XqXqXqXqXwXT.qXqXqXqXqXqXqXqXqXqX0XiX].+XuX0XqXqXqXqXqXqXqXqXqXqX7.@.*.&.", +"&.&.=.X.`.iX0XqX9XeXiXrX9XqXqXqXwXT.qXqXqXqXqXqXqXqXqXqX0XiX].+XuX0XqXqXqXqXqXqXqXqXqXqX7.@.*.&.", +"&.&.=.X.(.tX6X7XsX7XoX1XdX0XqXqXqXT.0XqXqXqX9X7X8X8X8X8X6XrX_.XXeX7X8X8X8X7X8XqXqXqXqXqX7.@.*.&.", +"&.&.=.o.+XbXfXxXN.t o 4 w.uX0XqXwXT.0XqXqX0XpXkXhXjXjXjXgXbX#X. >.lX5X8XuX'.OXtX7XuX X. 6 7XqX9X0X0X6.@.*.&.", +"&.&.=.X.`.iX9XwX8X6 . .XiX9XqXwXT.0XqX0XdX` l l ` fX0X9XiX].+XuX9XiX.X. 6 8XwX0XqXqX7.@.*.&.", +"&.&.=.X.`.iX9XwX8X6 . .XiX9XqXwXT.0X0XuXd.[.UXUX[.f.iX9XiX].+XuX9XiX.X. 6 8XwX0XqXqX7.@.*.&.", +"&.&.=.X.`.iX9XwX8X6 . .XiX9XqXwXT.9XpX_.D.UXLXLXUXS._.iXuX].+XuX9XiX.X. 6 8XwX0XqXqX7.@.*.&.", +"&.&.=.X.`.iX9XwX8X6 . .XiX9XqXwXT.8XgXS.&XUXLXLXUX&XS.fXyX].+XuX9XiX.X. 6 8XwX0XqXqX7.@.*.&.", +"&.&.=.X.`.iX9XwX8X6 . .XiX9XqXwXT.9XaX~.P.UXJXJXUXL.~.pXuX].+XuX9XiX.X. 6 8XwX0XqXqX7.@.*.&.", +"&.&.=.X.`.iX9XwX8X6 . .XiX9XqXwXT.0XqXrXt.XMXjXlXzX'.kXlXgXGX2. =.lX7X0XiX].+XyXeX4X9.Y.wXM.s.rXqXqXqX7.@.*.&.", +"&.&.=.X.`.iX9XwX8X6 . ` %.+.@.@.W +.@.O.-.z =.lX7X0XiX].+XtXiXg. c #D7D5D0", -", c #CBCAC5", -"< c #A6A5A3", -"1 c #CBC9BD", -"2 c #BEBCD5", -"3 c #0808FC", -"4 c blue", -"5 c #A4A3D0", -"6 c #DAD8C8", -"7 c #D4D2CF", -"8 c #D7D4CF", -"9 c #CFCDC8", -"0 c #B1B0AD", -"q c #CECCC3", -"w c #C9C7D3", -"e c #1D1DF7", -"r c #1111FC", -"t c #B4B2CE", -"y c #D7D5C9", -"u c #D6D4D1", -"i c #DAD8CC", -"p c #CCCAD2", -"a c #CBC9D5", -"s c #D5D3C6", -"d c #D2D0CB", -"f c #C0BEBA", -"g c #C9C8C0", -"h c #CAC8BF", -"j c #CECCC9", -"k c #D1CFCA", -"l c #D8D6D0", -"z c #CAC8C4", -"x c gray62", -"c c #C2C0BD", -"v c #DBD8D3", -"b c #ACABAB", -"n c #AAA9A9", -"m c #CFCDC9", -"M c #D2D0CE", -"N c #D3D1CD", -"B c #D4D2CD", -"V c #D1CFCD", -"C c #D7D5CD", -"Z c #DAD9C3", -"A c #D7D5CB", -"S c #D4D2D0", -"D c #D9D7C7", -"F c #DBD9C6", -"G c #CFCDCA", -"H c #D9D7CF", -"J c #E9E7D1", -"K c #DEDCD2", -"L c #D9D7D4", -"P c #D7D6D2", -"I c #D5D3CD", -"U c #CECCD0", -"Y c #8F8DE0", -"T c #C3C1D3", -"R c #E0DECB", -"E c #A7A5DA", -"W c #9F9EDC", -"Q c #DEDCCC", -"! c #CFCDD6", -"~ c #9291E4", -"^ c #CCCAD7", -"/ c #E4E2D1", -"( c #A6A5DF", -") c #A9A7E0", -"_ c #D8D7CA", -"` c #D0CECB", -"' c #E5E2CA", -"] c #6463E8", -"[ c #4948EE", -"{ c #C5C3D2", -"} c #0505FE", -"| c #B8B6D5", -" . c #605FE8", -".. c #5454EB", -"X. c #BEBCD2", -"o. c #0101FF", -"O. c #ABAACE", -"+. c #D9D7C8", -"@. c #E2E0CB", -"#. c #8382E1", -"$. c #6867E7", -"%. c #D3D1CE", -"&. c #2323F7", -"*. c #1514FA", -"=. c #C8C6D1", -"-. c #7F7EE2", -";. c #7574E4", -":. c #1B1BF9", -">. c #1F1FFA", -",. c #BCBBCB", -"<. c #D6D4C9", -"1. c #D4D2CE", -"2. c #CAC8D1", -"3. c #DFDDCC", -"4. c #D6D4CE", -"5. c #D2D0CF", -"6. c #E0DDCB", -"7. c #D9D7CE", -"8. c #CAC8D5", -"9. c #DFDDCB", -"0. c #D5D3CF", -"q. c #D7D5C5", -"w. c #CFCDCB", -"e. c #9796DC", -"r. c #D8D6CD", -"t. c #4242F0", -"y. c #3736F2", -"u. c #C7C5D2", -"i. c #D3D1C9", -"p. c #BFBEB7", -"a. c #D1D0C8", -"s. c #CBC9D2", -"d. c #3D3CF0", -"f. c #3E3EF2", -"g. c #C4C2CA", -"h. c #D4D2CA", -"j. c #E5E3CA", -"k. c #5F5EE9", -"l. c #4544EF", -"z. c #C1BFD3", -"x. c #0202FE", -"c. c #A9A7DB", -"v. c #D2D1C0", -"b. c #9D9C9F", -"n. c #CECDBE", -"m. c #B2B0D9", -"M. c #0000FE", -"N. c #A8A7D0", -"B. c #D9D7CD", -"V. c #C2C0D2", -"C. c #6B6AE6", -"Z. c #B2B1D6", -"A. c #8A89DF", -"S. c #8180E1", -"D. c #D8D6CE", -"F. c #CECCC8", -"G. c #8685E0", -"H. c #8786E1", -"J. c #D3D1C7", -"K. c #D1CFCB", -"L. c #E7E5CA", -"P. c #DCDACC", -"I. c #D3D2CE", -"U. c #E3E0CB", -"Y. c #E4E2CB", -"T. c #E3E1CB", -"R. c gray100", +"16 16 225 2 ", +" c gray84", +". c #DADADA", +"X c gray86", +"o c #DADADA", +"O c #D9D9DA", +"+ c #E3E3D8", +"@ c #E5E5D8", +"# c #D8D8D9", +"$ c #D5D5D5", +"% c #D5D5D5", +"& c #D5D5D5", +"* c #D5D5D5", +"= c #D5D5D5", +"- c gray86", +"; c #DBDBDA", +": c #DADADC", +"> c #E1E1DA", +", c #B5B5E2", +"< c #B0B0E5", +"1 c #DADAD2", +"2 c #D0D0D1", +"3 c gray84", +"4 c #D5D5D5", +"5 c #D7D7D7", +"6 c #CBCBCB", +"7 c #A6A6A8", +"8 c #CBCBC4", +"9 c #BEBEDB", +"0 c #0808FC", +"q c blue", +"w c #A4A4D5", +"e c #DADACF", +"r c #D4D4D6", +"t c #D5D5D5", +"y c #D7D7D7", +"u c gray81", +"i c #B1B1B2", +"p c #CECEC9", +"a c #C9C9DA", +"s c #1D1DF8", +"d c #1111FD", +"f c #B4B4D4", +"g c #D7D7D0", +"h c #D4D4D6", +"j c #D5D5D5", +"k c #D5D5D5", +"l c #D7D7D7", +"z c gray86", +"x c #D6D6D8", +"c c #DADAD3", +"v c #CDCDD9", +"b c #CBCBDC", +"n c #D5D5CD", +"m c #D0D0D1", +"M c gray84", +"N c #D5D5D5", +"B c gray84", +"V c #D2D2D2", +"C c #C0C0C0", +"Z c gray81", +"A c #D6D6D8", +"S c #C9C9C6", +"D c #CACAC6", +"F c #CECED0", +"G c gray82", +"H c gray84", +"J c #D5D5D5", +"K c #D5D5D5", +"L c #D5D5D5", +"P c #D5D5D5", +"I c #D5D5D5", +"U c #D5D5D5", +"Y c #D8D8D7", +"T c #CACACB", +"R c #9E9EA2", +"E c #C2C2C3", +"W c #DBDBDA", +"Q c #ACACB0", +"! c #AAAAAE", +"~ c #CFCFCE", +"^ c #CFCFD0", +"/ c #D2D2D5", +"( c #D3D3D4", +") c gray83", +"_ c #D1D1D4", +"` c #D1D1D4", +"' c gray83", +"] c #D5D5D5", +"[ c #D5D5D5", +"{ c #D7D7D4", +"} c #DBDBCA", +"| c #D7D7D2", +" . c #D4D4D7", +".. c #D9D9CE", +"X. c #DBDBCE", +"o. c #CFCFD1", +"O. c #D9D9D6", +"+. c #E9E9D9", +"@. c #DEDEDA", +"#. c #D9D9DB", +"$. c #E5E5D8", +"%. c #E5E5D9", +"&. c #D7D7D9", +"*. c #D5D5D4", +"=. c #D7D7D4", +"-. c #CECED6", +";. c #8F8FE5", +":. c #C3C3D9", +">. c #E0E0D3", +",. c #A7A7E0", +"<. c #9F9FE1", +"1. c #DEDED4", +"2. c #CFCFDC", +"3. c #9292E9", +"4. c #CCCCDD", +"5. c #E4E4D8", +"6. c #A6A6E4", +"7. c #A9A9E6", +"8. c #D8D8D1", +"9. c #D0D0D1", +"0. c #E5E5D2", +"q. c #6464EB", +"w. c #4949F1", +"e. c #C5C5D8", +"r. c #0505FE", +"t. c #B8B8DB", +"y. c #6060EB", +"u. c #5454ED", +"i. c #BEBED8", +"p. c blue", +"a. c #0101FF", +"s. c #ABABD3", +"d. c #D9D9D0", +"f. c #E2E2D2", +"g. c #8383E5", +"h. c #6868EA", +"j. c #D3D3D5", +"k. c #2323F8", +"l. c #1515FB", +"z. c #C8C8D8", +"x. c #7F7FE6", +"c. c #7575E8", +"v. c #CECED7", +"b. c #1C1CF9", +"n. c #1F1FFB", +"m. c #BCBCD2", +"M. c #D6D6D0", +"N. c #D4D4D5", +"B. c #E2E2D2", +"V. c #CACAD7", +"C. c #DFDFD3", +"Z. c #DEDED3", +"A. c #D6D6D5", +"S. c #D2D2D6", +"D. c #E0E0D3", +"F. c #D9D9D5", +"G. c #CACADB", +"H. c #D9D9D5", +"J. c #DFDFD3", +"K. c #D4D4D5", +"L. c #D5D5D6", +"P. c #D7D7CC", +"I. c #CFCFD2", +"U. c #DFDFD3", +"Y. c #9898E1", +"T. c #1B1BFA", +"R. c #7F7FE6", +"E. c #D8D8D4", +"W. c #4242F2", +"Q. c #3737F4", +"!. c #C7C7D9", +"~. c #D3D3D0", +"^. c #BFBFBD", +"/. c #D1D1CF", +"(. c #CBCBD8", +"). c #3D3DF2", +"_. c #3E3EF4", +"`. c #C4C4D0", +"'. c #D4D4D1", +"]. c #E5E5D2", +"[. c #5F5FEC", +"{. c #4545F1", +"}. c #C0C0D9", +"|. c #0202FF", +" X c #A8A8E1", +".X c #D2D2C6", +"XX c #9D9DA3", +"oX c #CECEC4", +"OX c #B2B2DF", +"+X c #0000FE", +"@X c #A8A8D5", +"#X c #DADACF", +"$X c #D9D9D4", +"%X c #C2C2D9", +"&X c #6B6BEA", +"*X c #B2B2DC", +"=X c #E0E0D3", +"-X c #8A8AE4", +";X c #8282E5", +":X c #D8D8D5", +">X c #D5D5D5", +",X c #CECECF", +" , < 1 2 3 4 5 6 7 # # # # # # ", -"8 9 0 q w e r t y 7 # # # # # # ", -"# 8 $ u i p a s : # # # # # # ", -" d f 9 u g h j k # # # # # # ", -"l z x c v b n 9 m M N B V V B # ", -"# C Z A S D F G H J K L + + P I ", -"C U Y T R E W Q ! ~ ^ / ( ) _ ` ", -"' ] 4 [ { } 4 | .4 ..X.4 o.O.+.", -"@.#.4 $.%.&.*.=.-.4 ;.U :.>.,.<.", -"1.@.2.3.Q 4.5.6.7.8.7.9.1.0.q.w.", -"3.e.:.-.r.t.y.u.i.p.a.s.d.f.g.h.", -"j.k.4 l.z.x.4 c.v.b.n.m.M.4 N.6 ", -"B.V.C.Z.R A.S.D.# F.1.B.G.H.J.K.", -"1.B.L.P.I.U.Y.# # > # # T.T.# # " +" . X o O + @ # $ % & * * * * * ", +"= - ; : > , < 1 2 3 4 * * * * * ", +"5 6 7 8 9 0 q w e r t * * * * * ", +"y u i p a s d f g h j * * * * * ", +"k l z x c v b n m M N * * * * * ", +"B V C Z A S D F G H J K L P I U ", +"Y T R E W Q ! ~ ^ / ( ) _ ` ' ] ", +"[ { } | ...X.o.O.+.@.#.$.%.&.*.", +"=.-.;.:.>.,.<.1.2.3.4.5.6.7.8.9.", +"0.q.q w.e.r.q t.y.q u.i.p.a.s.d.", +"f.g.q h.j.k.l.z.x.q c.v.b.n.m.M.", +"N.B.V.C.Z.A.S.D.F.G.H.J.K.L.P.I.", +"U.Y.T.R.E.W.Q.!.~.^./.(.)._.`.'.", +"].[.q {.}.|.q X.XXXoXOX+Xq @X#X", +"$X%X&X*X=X-X;X:X>X,X c #6867E7", -", c #6F6EE5", -"< c #6363E8", -"1 c #6D6CE9", -"2 c #706FE5", -"3 c #7170E5", -"4 c #7877E3", -"5 c #7C7BE2", -"6 c #807FE3", -"7 c #A6A5A1", -"8 c #A8A7A3", -"9 c #AAA9A5", -"0 c #AEADA9", -"q c #B0AFAB", -"w c #B4B3AE", -"e c #B7B6B2", -"r c #B8B6B2", -"t c #BCBAB6", -"y c #C1BFBB", -"u c #C4C2BE", -"i c #CDCBBC", -"p c #D3D2BC", -"a c #8B8ADF", -"s c #908FDE", -"d c #9593DD", -"f c #9997DC", -"g c #9E9CDB", -"h c #A09ED7", -"j c #A09FDA", -"k c #A6A4D6", -"l c #ADABD6", -"z c #A4A2DA", -"x c #A8A7D8", -"c c #ACAAD8", -"v c #B5B3D6", -"b c #B9B7D4", -"n c #BCBBD4", -"m c #B5B3D9", -"M c #8382E1", -"N c #C0BED3", -"B c #C6C5C0", -"V c #C8C7C2", -"C c #CCCAC5", -"Z c #CECCC9", -"A c #D1CFCB", -"S c #D5D3CE", -"D c #D9D7CD", -"F c #DDDBCC", -"G c #C4C2D2", -"H c #C8C7D1", -"J c #CCCAD0", -"K c #D6D4D0", -"L c #D8D6D1", -"P c #DCDAD5", -"I c #DEDCD9", -"U c #E0DECB", -"Y c #E0DED9", -"T c #E3E1CB", -"R c #EAE7C9", -"E c #EBE9C9", -"W c #F1EFC8", -"Q c #F3F1C7", -"! c #E7E5D7", -"~ c #E8E6D6", -"^ c #ECEAD6", -"/ c #E3E1DB", -"( c #E9E7D8", -") c #F1EFD7", +"X c #1313FC", +"o c #1B1BFA", +"O c #2323F9", +"+ c #3434F5", +"@ c #3D3DF2", +"# c #4343EF", +"$ c #4F4FEF", +"% c #5454ED", +"& c #5C5CEC", +"* c #4141F1", +"= c #4B4BF1", +"- c #6565EB", +"; c #6C6CEB", +": c #7B7BE7", +"> c #7171E9", +", c #A6A6A6", +"< c #ABABAB", +"1 c #B3B3B3", +"2 c #BBBBBB", +"3 c #9F9FDF", +"4 c #A4A4DE", +"5 c #ABABDC", +"6 c #BEBED7", +"7 c #B4B4DC", +"8 c #BCBCDA", +"9 c #8383E5", +"0 c #8B8BE3", +"q c #8181E8", +"w c #9393E2", +"e c #9C9CE1", +"r c #A1A1E1", +"t c #C4C4C4", +"y c #CDCDC3", +"u c #CDCDCE", +"i c #D4D4C2", +"p c #D0D0CF", +"a c #CDCDD3", +"s c #C3C3D8", +"d c #C8C8D8", +"f c #D5D5D5", +"g c #DCDCD3", +"h c #D5D5D8", +"j c #DADADA", +"k c #F2F2CF", +"l c #E2E2D2", +"z c #EBEBD1", +"x c #E7E7DE", +"c c #EBEBDD", +"v c #F1F1DF", +"b c #DEDEE0", +"n c #E2E2E2", +"m c #E9E9E0", /* pixels */ -"SSSSASSAASSAASSSKSSKSSSSDSSSSSSS", -"SKPPPPPPPPPPPPPLSSSSSSSSKSSSDKSS", -"KK////!///())~/ZZSSSKSSSSSSSSSSS", -"SSASAASAADn*=xFuZKSSSSSSSSSSSSSS", -"KSKAw0uDKJ+ .mCCDSSSSSDSSSSSDKS", -"SSLr780SUd ,pCKSSSSSSSDSSSSSS", -"SALu77wSFx MpZKKSSSSSSSKSSSSS", -"SKSSutAKSF< %LuCKKSSSSKSKSSSSSS", -"SSSSLLKSSKFvcDLBCKSSSSSSSSSSSSSS", -"SKSSSSSSSSSFFSKuADSSSSSSSSSSSSSS", -"KSSDSAKSSSKAASLuASSSSSSSSSSKSSSS", -"SKDCq9uKSDCq0BLuAKSSKDSSSSDSSKDS", -"SSKt780SSLr880LBCKSSSSKSSSSSSSSS", -"SSDu77eSSDy77rLBADSSSSSSSKSKSSSS", -"SSSDBtSKSSSyyALuCKASAKSAASASASSS", -"SSSAKKSKSSSKKKKCL/PPPYY/PPII/FSS", -"SSSFTUFSSAFFUUSLI~^^^IIP^^^~YCAK", -"SSFb&$dFAFv&$fFAFl%OhDJFk%%kFyAK", -"SSJ@ gTGo xUbX vTm. .niAK", -"SFh *Ws . :QM .. 3Q5 . 6pCK", -"SDm 4Rc MEz sEf giAS", -"SSFM. &SSP4 =DSF, *DAF: :PuAD", -"SSKFGbFKSSUGnFSKSFGnFKSSFnnFDuAK", -"SKSDTTFASSFTTFSKSAFFKSSSFTTFKuAK", -"SSFv$#aFSFl$#sFASKZZKSSFh##zFuAK", -"SDHo dTNX zFKC99uSFv. miAK", -"SFg . -Ws .. :TSw88wST5 . MpZK", -"AFb. 5Rl aULt77tSUh ziZK", -"KAFaX -KSF6X.k: . qiaf", +"fj7. :z5 9z4 0ze eiaf", +"ffg:. $faf:. %jfg>. -ffg- ;gtff", +"fffgd8gfffgs8gfffgs6gfffgs6fftff", +"fffflllffffllgffffjgffffglzfftff", +"fff7*+0ffg5@+wgffjaufffl4++4gtff", +"ffao elsX 4lft<gtff", +"ffflasgjfflaslffffjjfffflaagjtff", +"ffffffffffffffffffffffffffffffff", +"ffffffffffffffffffffffffffffffff" }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 64 1 ", -" c #0101FF", -". c #0B0BFD", -"X c #1414FA", -"o c #1C1BF9", -"O c #2424F6", -"+ c #2C2BF5", -"@ c #2020F8", -"# c #3434F3", -"$ c #3837F2", -"% c #3B3AF1", -"& c #403FF0", -"* c #4646EF", -"= c #4A4AEE", -"- c #4342F0", -"; c #706FE5", -": c #7574E4", -"> c #7877E3", -", c #7D7BE2", -"< c #A6A5A2", -"1 c #AAA9A5", -"2 c #AEADA9", -"3 c #B0AFAB", -"4 c #B3B2AE", -"5 c #B5B4B0", -"6 c #BDBBB7", -"7 c #BEBDBA", -"8 c #C1BFBB", -"9 c #C3C1BB", -"0 c #8685DF", -"q c #8C8BDE", -"w c #908FDE", -"e c #9594DD", -"r c #9C9BDB", -"t c #A09FDA", -"y c #BEBCCF", -"u c #ACABD7", -"i c #A4A3D9", -"p c #ABA9D8", -"a c #B0AFD6", -"s c #BCBAD4", -"d c #8483E1", -"f c #8887E0", -"g c #8A89E0", -"h c #C8C6C1", -"j c #CCCAC5", -"k c #C9C7CD", -"l c #CFCDCB", -"z c #D0CECD", -"x c #D5D3CE", -"c c #D8D6CD", -"v c #DDDBCC", -"b c #C3C1D2", -"n c #C9C7D1", -"m c #CDCBD1", -"M c #D7D5D0", -"N c #D8D6D1", -"B c #DDDBD5", -"V c #DFDDD8", -"C c #E1DECB", -"Z c #E1DFDA", -"A c #E3E1CE", -"S c #E6E4E2", -"D c #E9E7E1", -"F c #EBE9E3", +"48 48 254 2 ", +" c blue", +". c #0101FF", +"X c #0303FE", +"o c #0202FF", +"O c #0404FE", +"+ c #0505FE", +"@ c #0606FE", +"# c #0808FD", +"$ c #0909FD", +"% c #0A0AFC", +"& c #0B0BFD", +"* c #0A0AFE", +"= c #0C0CFD", +"- c #0F0FFC", +"; c #1212FB", +": c #1414FA", +"> c #1414FB", +", c #1717FA", +"< c #1616FB", +"1 c #1010FC", +"2 c #1212FC", +"3 c #1313FC", +"4 c #1919FA", +"5 c #1A1AFA", +"6 c #1B1BFA", +"7 c #1C1CF9", +"8 c #1D1DF9", +"9 c #1E1EF9", +"0 c #1F1FF9", +"q c #1E1EFA", +"w c #1F1FFA", +"e c #2323F7", +"r c #2727F7", +"t c #2828F7", +"y c #2929F7", +"u c #2A2AF6", +"i c #2B2BF7", +"p c #2C2CF6", +"a c #2D2DF6", +"s c #2F2FF6", +"d c #2121F8", +"f c #2020F9", +"g c #2121F9", +"h c #2222F8", +"j c #2323F8", +"k c #2525F8", +"l c #2626F8", +"z c #2929F8", +"x c #3737F3", +"c c #3131F5", +"v c #3232F5", +"b c #3333F5", +"n c #3131F6", +"m c #3535F4", +"M c #3434F5", +"N c #3636F4", +"B c #3737F4", +"V c #3B3BF3", +"C c #3C3CF3", +"Z c #3D3DF3", +"A c #3F3FF2", +"S c #3E3EF3", +"D c #3F3FF3", +"F c #3838F4", +"G c #3939F4", +"H c #3A3AF4", +"J c #4242F2", +"K c #4343F2", +"L c #4646F1", +"P c #4747F1", +"I c #4A4AF0", +"U c #7878E7", +"Y c #7979E7", +"T c #7D7DE6", +"R c #7E7EE6", +"E c #7171E9", +"W c #7676E8", +"Q c gray65", +"! c #A7A7A7", +"~ c #A9A9A9", +"^ c #AAAAAA", +"/ c gray67", +"( c #ACACAC", +") c gray68", +"_ c #AEAEAE", +"` c #AFAFAF", +"' c gray69", +"] c #B1B1B1", +"[ c #B2B2B2", +"{ c gray70", +"} c #B4B4B4", +"| c gray71", +" . c #B6B6B6", +".. c gray74", +"X. c gray", +"o. c #BEBEBF", +"O. c gray75", +"+. c #C2C2BF", +"@. c #9C9CDF", +"#. c #BCBCC0", +"$. c #BDBDC0", +"%. c #BEBEC2", +"&. c #A1A1DF", +"*. c #A2A2DF", +"=. c #A4A4DF", +"-. c #A6A6DE", +";. c #A7A7DE", +":. c #AAAADD", +">. c #ABABDD", +",. c #ACACDD", +"<. c #ADADDD", +"1. c #BEBED6", +"2. c #B0B0DC", +"3. c #B1B1DC", +"4. c #BBBBDA", +"5. c #BCBCDA", +"6. c #8383E5", +"7. c #8181E6", +"8. c #8585E4", +"9. c #8484E5", +"0. c #8686E4", +"q. c #8686E5", +"w. c #8484E6", +"e. c #8B8BE3", +"r. c #8E8EE3", +"t. c #8F8FE3", +"y. c #8888E4", +"u. c #8989E4", +"i. c #8989E5", +"p. c #8A8AE4", +"a. c #8B8BE4", +"s. c #8D8DE4", +"d. c #9191E2", +"f. c #9090E3", +"g. c #9393E2", +"h. c #9696E1", +"j. c #9494E2", +"k. c #9595E2", +"l. c #9898E1", +"z. c #9999E1", +"x. c #9A9AE1", +"c. c #9C9CE0", +"v. c #9D9DE0", +"b. c #9D9DE1", +"n. c #9E9EE0", +"m. c #9F9FE0", +"M. c #C0C0C0", +"N. c #C1C1C1", +"B. c #C2C2C1", +"V. c #C1C1C2", +"C. c #C6C6C0", +"Z. c gray77", +"A. c #C8C8C8", +"S. c #C9C9CB", +"D. c #CACACA", +"F. c #CACACB", +"G. c #CBCBCB", +"H. c gray80", +"J. c #CCCCCD", +"K. c #CDCDCD", +"L. c #CECECE", +"P. c gray81", +"I. c #DDDDCF", +"U. c #DEDECF", +"Y. c #CFCFD2", +"T. c #C8C8D4", +"R. c #C9C9D7", +"E. c #CACAD7", +"W. c #CBCBD7", +"Q. c #CCCCD7", +"!. c #CDCDD7", +"~. c #CFCFD6", +"^. c #C1C1D9", +"/. c #C2C2D9", +"(. c #C6C6D8", +"). c #C5C5DC", +"_. c #CFCFDA", +"`. c #D0D0D0", +"'. c #D0D0D1", +"]. c gray82", +"[. c #D0D0D2", +"{. c #D1D1D2", +"}. c #D2D2D2", +"|. c LightGray", +" X c #D5D5D2", +".X c #D2D2D5", +"XX c #D3D3D5", +"oX c #D0D0D6", +"OX c #D1D1D6", +"+X c #D2D2D6", +"@X c #D3D3D6", +"#X c gray83", +"$X c #D4D4D5", +"%X c #D5D5D5", +"&X c #D6D6D4", +"*X c #D6D6D5", +"=X c #D7D7D5", +"-X c #D4D4D6", +";X c #D5D5D6", +":X c gray84", +">X c #D6D6D7", +",X c #D7D7D7", +"vxxzvwO.o,vxxzvq@.o0vxxzv0o.@qvM8jBxx", -"MxxxCr :AzCe ,CzAw 0CzAd fA7jxxx", -"xxxxv% omMN$ ozxc+ . OzMx+ +M8jNcc", -"xxxxxO svzo .bvzX XnvnX Xz8jMxx", -"xxxxC* . @zxv& +xzN% +xxx# $v7lMxx", -"xxxzva qCzvi. wCzvi eCzCr rC7jMxx", -"xxxxzCp%o#wvxxxBi%o#evzxxvi$o#rvzxxvr#o$tvx7jMxx", -"xMxxxxvvzMCxxxxxvvzNCxxxxxvvzvvxMxxxCNzvCzB7jMxx", -"xxxxxxzxvxzxxxxxzxvxzxxxxxzxxxxxxxxxzxvxzMM8jxxx", -"xxxxxxCzsmCxxxxxCzsmAxxxxxxMMxxxxxxxCzszAzM7jBxx", -"xxxxxvwo X:Mxxxvfo.X>NxxxxxxjxMxxxzv,o odvM7jxxx", -"xxxzCe ;CzCw >AxxMj212hxMzvd dA7jBxx", -"xxMxv% omxv# ozxxx4<1<2xxxx+ +M9jxxx", -"xxxxMO svzo .bNMl11111lMMnX Xz9jBxx", -"xxMzC= Ozxv- . +xxzx5<115xxxN# $B6jMxx", -"xxxxva. wCzvp eAzxcx525jMxzAr rA7jMxx", -"xxxxzCa*@%rCzxzCu-@%rvxxxxxMlcMxxxzCi-@&uvM7jMxx", -"xxxxMzvAxvvzMMMzvCxvCzxxxxxxxxxxxxxxvvxCvzM9lMxM", -"xxxxxxxzxxxxxxxxxxxxxxxxxxxxxMxxxxxMxxxzzxxxcxxx", -"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", -"xxMxxxxxxxxxMxxxxxxxxxxxxxxxxxMxxxxxxMxxxxxxxxxx", -"xxxxxxxMxxxxxxxxxxMxxxxMxxxxxxxxMxxxxxxxxxxxxxxc" +"%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X}.%X}.}.%X}.%X}.}.%X}.}.}.}.%X}.XX%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%XzXzXzXzXzXzXzXzXzXzXzXzXzXzXlXzXzXzXzXdX X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%XdXSXSXSXSXSXSXLXSXSXSXHXSXHXHXKXSXHXSXLX}.G.%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X}.}.}.%X}.}.}.}. X}.XX}.7X XT. X7X}.%Xo.G.pX%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X%X%X%X}.}.%X%X%XpX%XwXv.n 3 z e.7XpXV.G.%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X%X}. ._ _ L.pX%XXXcXv. 0.mX%.G.pX%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X%X .Q ^ Q _ }.%X%XwXH @ @ e pXV.G.%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X%X_ ^ ^ _ ^ L.%X%X+Xq % ).C.G.pX%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X%X .Q _ Q _ }.%XXXwXH @ @ e pXV.G.pX%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X%XL. .^ ' G.%X%XXX7Xv. 0.mX%.G.%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X%X%X%XL.%XdX%X%X%XXX7Xx.a 3 k p.wXdXV.G.pX%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X%X%X%X%X%X%X%X%X%X%XXX7X8XT.%XcXXXdXV.G.%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%XXX%X8X%XXXXX8XV.G.%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%XpX%X%X%XdXV.G.%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X%X%X%XL.%XdX%X%X%X%X%XpX%XY.%X8X%XpXV.G.%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X%XY.' ^ _ G.%X%X%X%X%XL.' ^ _ G.%XdXV.G.dX%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X%X .Q ( Q _ }.%X%X%XpX .Q _ Q ` XdXV.G.%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X X_ ^ ^ ( ^ L.pX%X%X}.^ ^ ^ ^ / L.kXV.G.%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%XdX .Q ^ ^ _ }.%X%X%X%X .Q ^ Q ' XXdXV.G.dX%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X%X}. .^ ' L.pX%X%X%X%X}.' _ ' L.%X%XV.G.dX%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X+X%X%X%X%X", +"%X%X%X%X%X%X%X%X}.%X%X%X%X%X%X%X%X%X}.%X%X%XdXV.Z.%X}.}.%X}.%X}.}.%X}.%X}. X XXX}.%X}.XX%X%X%X%X", +"%X%X%X%X%X%X%XXX%X%X%X%X%X%X%X%X%X%X%X%X%X%XdXZ.dXBXNXMXzXNXNXzXNXNXzXNXzXMXMXzXzXNXnXlXXX%X%X%X", +"%X%X%X%X%X%XXX%X8X8XXX%X%X%X%X%XXX%X8X%XXX%X%XdXSXSXVXSXKXDXVXSXSXSXSXVXVXSXKXDXSXBXLXG.L.dX%X%X", +"%X%X%X%X%XXXcX%X^.!.cX%X%X%X%XXXcX%X^.XXcX%X%X%X}.}.I.}.1.Y.I.}.}.}.}.}.7XY.1.}.7X}.%Xo.L.%X%X%X", +"%X%X%X%XXX7Xk.k % 5 Y 8X%X%XXX7Xf.g % q T wX%X%XXXwXt.g % q 6.7XpX%X%XwX8.q % g p.wXdXV.L.%X%X%X", +"%X%X%X%X7Xv. @ W mXXX7Xh. T cXXXcXt. 6.cXXXcXp. e.cX%.L.%X%X%X", +"%X%X%XXX7XA @ @ 5 !.%X9Xm @ @ g XX%X8Xa @ @ k %X%X%Xz @ @ t 8XV.L.%X%X%X", +"%X%X%X%X%Xg @ 5.8XXXq % ^.8X!., 3 (.8XT.3 , +X+.L.pX%X%X", +"%X%X%XXXwXL @ @ g XX%X7XA @ @ t XXXXwXH @ @ a %X%X9Xn @ % m kX%.L.%X%X%X", +"%X%X%XXX7X>.% p.wXXX7X;.@ t.cXXX7Xv.@ h.7XXX7Xx. v.cXo.L.%X%X%X", +"%X%X%X%XXXwX,.A 5 n g.7X%X%XXX7X;.V 5 n x.7X%X%XXX7X*.H 5 m v.7XXX%XXX7Xm.H 5 H m.7XpXo.L.%X%X%X", +"%X%X%X%X%XXX7X7XXX8XcX%X%X%X%XXX7XwXXX8X7XXX%X%X%XXX7X7XXXwXcXXX%X%X%XXXwXwXXX8X7XXXpX+.L.%X%X%X", +"%X%X%X%X%X%XXX%XwX%X!.%X%X%X%X%XXXXXwX%XXX%X%X%X%X%XXXXX%XXXXX%X%X%X%X%XXX%X8X%XXXXX8Xo.L.pX%X%X", +"%X%X%X%X%XXXwXXX4._.cX X%X%X%XXXcXXX4.!.wX%X%X%X%X%X%XXXpX%X%X%X%X%X%X%XcX!.5.XX7XXXdX%.L.dX%X%X", +"%X%X%X%XXX7Xe.g @ , E 9X%X%XXXwXp.q @ , W 8X%X%X%X%XpXXXL.}.dX%X%X%X%XwXT 5 @ 5 6.wX%Xo.L.dX%X%X", +"%X%X%XXXcXh. E cXXXcXg. U cXXX%X%XF.' ^ _ G.%X%XXXcX6. 0.mX%.G.%X%X%X", +"%X%X%XXX7XA @ 5 _.%X8Xm @ @ q XX%X%X%X' Q ^ Q ' %X%X%X%Xz @ @ t 8X%.L.dX%X%X", +"%X%X%X%X%Xg @ 4.8XXXq = (.8X%X}.( ^ ^ ^ ^ L.pX%XT.3 , _.+.L.%X%X%X", +"%X%X%XXX7XI @ @ k XXXXwXJ @ @ t %X%X%X%X .Q ^ Q { %X%X%X8Xn @ @ m kX+.L.8X%X%X", +"%X%X%XXX7X3.= e.cXXXwX>.% h.wXXX%X%X}. ./ .Y.%X%X%XcXv. @ *.cXo.L.%X%X%X", +"%X%X%X%XXX7X,.L e H x.7XXX%X%X7X,.L g H v.7XXX%X%X%X8XdX}.%X%X%X%X%XXX7X;.A g A ;.7X%Xo.L.pX%X%X", +"%X%X%X%X%XXX7X7X8X7X7XXX%X%X%XXX7XcX%XwXcX%X%X%X%X%X%X%X%X%X%X%X%X%X%XXX7X7X%X7X7XXXpX%.L.pX%X%X", +"%X%X%X%X%X%XXXXX%XXXXX%X%X%X%X%XXXXX%XXXXX%X%X%X%X%X%X%X%X%X%X%X%X%X%X%XXXXX%XXXXX%X%X%X}.%X%X%X", +"%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", +"%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X" }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/pegs.sav sgt-puzzles-20160429.b31155b/icons/pegs.sav --- sgt-puzzles-20140928.r10274/icons/pegs.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/pegs.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,16 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :4:Pegs +PARAMS :8:7x7cross +CPARAMS :8:7x7cross +SEED :15:103342250484448 +DESC :49:OOPPPOOOOPPPOOPPPPPPPPPPHPPPPPPPPPPOOPPPOOOOPPPOO +NSTATES :1:8 +STATEPOS:1:8 +MOVE :7:3,1-3,3 +MOVE :7:5,2-3,2 +MOVE :7:5,4-5,2 +MOVE :7:3,4-5,4 +MOVE :7:6,4-4,4 +MOVE :7:4,0-4,2 +MOVE :7:2,0-4,0 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/pegs-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/pegs-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/range-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/range-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/range-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/range-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/range-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/range-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/range-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/range-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/range-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/range-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/range-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/range-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/range-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/range-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/range-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/range-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/range-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/range-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/range-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/range-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/range-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/range-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/range-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/range-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/range.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/range.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/range-icon.c sgt-puzzles-20160429.b31155b/icons/range-icon.c --- sgt-puzzles-20140928.r10274/icons/range-icon.c 2014-09-29 00:33:46.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/range-icon.c 2016-04-29 00:31:43.000000000 +0000 @@ -1,525 +1,886 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 128 2 ", +"16 16 256 2 ", " c black", ". c #010101", -"X c #7A7976", -"o c #B9B7B3", -"O c #ABA9A5", -"+ c #B4B2AE", -"@ c #82807D", -"# c #A3A29E", -"$ c #AEADA9", -"% c #B5B3AF", -"& c #A3A19D", -"* c #AFADA9", -"= c #BAB8B3", -"- c #9B9996", -"; c #ECEAE4", -": c #DAD7D2", -"> c #E6E3DE", -", c #D4D3CE", -"< c #B0AFAB", -"1 c #898885", -"2 c #D6D4CF", -"3 c #E6E4DE", -"4 c #C9C8C3", -"5 c #EBE8E3", -"6 c #9B9A96", -"7 c #93918E", -"8 c #E0DED8", -"9 c #CECCC7", -"0 c #DAD8D2", -"q c #9A9895", -"w c #D0CEC9", -"e c #A2A09C", -"r c #8B8A87", -"t c #D1CFCA", -"y c #999894", -"u c #DBD9D4", -"i c #94928F", -"p c #DAD8D3", -"a c #94938F", -"s c #979592", -"d c #E5E3DE", -"f c #D3D1CC", -"g c #DFDDD8", -"h c #9F9D99", -"j c #C1BFBB", -"k c #CCCAC6", -"l c #9F9E9A", -"z c #E6E4DF", -"x c #969591", -"c c #6C6B69", -"v c #A2A19D", -"b c #9E9D99", -"n c #73726F", -"m c #8F8D8A", -"M c #A09F9B", -"N c #9D9C98", -"B c #8F8E8A", -"V c #93928E", -"C c #92908D", -"Z c #DFDDD7", -"A c #D5D3CE", -"S c #D7D5D0", -"D c #9A9995", -"F c #C3C1BD", -"G c #969491", -"H c #DEDCD6", -"J c #DEDBD6", -"K c #C7C5C1", -"L c #D8D6D1", -"P c #989693", -"I c #E4E1DC", -"U c #B9B7B2", -"Y c #E0DED9", -"T c #CDCBC6", -"R c #DEDCD7", -"E c #E3E1DC", -"W c #BBB9B5", -"Q c #8B8A86", -"! c #D4D2CD", -"~ c #C9C7C2", -"^ c #BFBDB8", -"/ c #BEBDB8", -"( c #B0AEAA", -") c #8C8A87", -"_ c #C1C0BB", -"` c #BCBBB6", -"' c #C8C6C1", -"] c #83827F", -"[ c #0B0B0B", -"{ c #0F0F0E", -"} c #0E0E0E", -"| c #090909", -" . c #252524", -".. c #A6A4A0", -"X. c #A6A5A1", -"o. c #A9A7A3", -"O. c #7B7A77", -"+. c #ADABA7", -"@. c #AAA8A4", -"#. c #757471", -"$. c #020202", -"%. c #DDDBD6", -"&. c #CFCDC9", -"*. c #A7A6A2", -"=. c #868581", -"-. c #E7E5E0", -";. c #9C9A97", -":. c gray1", -">. c #222221", -",. c #D9D7D2", -"<. c #A8A6A2", -"1. c #ABAAA6", -"2. c #51504E", -"3. c #B3B1AD", -"4. c #262625", -"5. c #EAE7E2", -"6. c #E9E6E1", -"7. c #E1DFD9", -"8. c #A4A29F", -"9. c #151515", -"0. c #797875", -"q. c #777673", -"w. c #706F6D", -"e. c #5A5957", -"r. c #7C7B78", -"t. c #7D7C79", -"y. c #545351", -"u. c gray100", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" # , < 1 2 & 3 4 5 6 ", -" 7 8 9 0 q w e r t y u i p a ", -" s d f g h 9 j f k l g p z x ", -" c v a b n m M N B n b V v c ", -" C Z A S D F f f F D S A Z C ", -" G H h J N K L L K N H h H x ", -" P I U Y M T R R T e E W z y ", -" Q ! ~ 9 C * ^ / ( ) _ ` ' ] ", -" [ { } | ...X.o.- O.+.@.* #. ", -" $. .8 0 %.&.*.S =.-.;. ", -" . . :. >.,.<.1.4 6 k 2.3.q ", -" $. 4.z 3 5.2 O 6.O 7.8. ", -". . . 9.0.q.0.w.e.r.t.] y. ", +". @ + + + @ @ O o + # + + + @ . ", +"+ l._.E./.Z.I.).[.R.V.^.Q.`.c.. ", +"+ `.zXuXgX&XtX~.g.iX#XfXqXzX}. ", +"+ E.uX5XwX|.8XU.1.tX].wXm.qX(. ", +"+ /.gXwXaX+XqXoX,XyXXXiXrXhX'. ", +"O V.*X|.#XY.`.&X#X}.P.+X|.*XS. ", +"+ I.qX7X5X'.&X2X1X:X).4X7XqXR. ", +"+ ^.pX/.pX+X4XyXrX9X.XuX/.pX`. ", +"+ Q.eXW.eX.X2XrXeX7X XyX^.uX_. ", +"O `.vXkXkX&X;X9X7X3X[.9X9XyX~. ", +"* S D S C E }. X X[.J.OX&X%XC. ", +", 3 o i tXtXyX9XOX9Xd.8X[. ", +"> 5 + i iX~.^.wX|.3XG Z..X ", +", 4 o p dXyXuXyX%XpXM.*XOX ", +"; , X q ).)._.~.C.`.].OXv. ", " " }; /* XPM */ static const char *const xpm_icon_1[] = { /* columns rows colors chars-per-pixel */ -"32 32 199 2 ", +"32 32 256 2 ", " c black", ". c #010101", -"X c gray1", -"o c #020202", -"O c #454442", -"+ c #A3A29E", -"@ c #969491", -"# c #989793", -"$ c #9A9995", -"% c #91908C", -"& c #484846", -"* c #9B9996", -"= c #979592", -"- c #959390", -"; c #040404", -": c #61605E", -"> c #F2F0EA", -", c #DEDCD6", -"< c #E2DFDA", -"1 c #E1DFDA", -"2 c #E4E2DD", -"3 c #D6D4CF", -"4 c #666563", -"5 c #E6E3DE", -"6 c #E0DED8", -"7 c #E8E6E1", -"8 c #F2EFEA", -"9 c #E9E7E1", -"0 c #E0DDD8", -"q c #E1DFD9", -"w c #E2E0DA", -"e c #5A5A57", -"r c #CFCDC8", -"t c #D2D0CB", -"y c #D5D3CE", -"u c #C8C6C1", -"i c #5F5E5C", -"p c #D4D2CD", -"a c #D8D6D1", -"s c #AAA9A5", -"d c #706F6C", -"f c #747370", -"g c #A8A6A2", -"h c #D9D7D2", -"j c #5B5B58", -"k c #E5E3DD", -"l c #D1CFCB", -"z c #CBC9C4", -"x c #60605D", -"c c #BDBCB7", -"v c #A9A7A3", -"b c #292827", -"n c #898885", -"m c #E3E1DB", -"M c #D7D5D0", -"N c #CECDC8", -"B c #CAC9C4", -"V c #D1CFCA", -"C c #C1BFBB", -"Z c #363634", -"A c #D6D3CE", -"S c #E6E4DF", -"D c #73726F", -"F c #373635", -"G c #E3E1DC", -"H c #4F4E4C", -"J c #E7E4DF", -"K c #D9D7D1", -"L c #C2C0BC", -"P c #B7B5B1", -"I c #5B5A58", -"U c #D0CEC9", -"Y c #D3D1CC", -"T c #C9C7C2", -"R c #605F5D", -"E c #706F6D", -"W c #DAD8D3", -"Q c #61605D", -"! c #F1EFE9", -"~ c #DDDBD6", -"^ c #E0DED9", -"/ c #E4E1DC", -"( c #666562", -") c #EEEBE6", -"_ c #E1DED9", -"` c #DFDDD8", -"' c #494846", -"] c #AEACA8", -"[ c #A09E9A", -"{ c #A2A19D", -"} c #A2A09D", -"| c #A4A39F", -" . c #4D4C4A", -".. c #A5A39F", -"X. c #A2A09C", -"o. c #9F9E9A", -"O. c #A1A09C", -"+. c #393938", -"@. c #807F7C", -"#. c #767572", -"$. c #787774", -"%. c #797875", -"&. c #73716F", -"*. c #3D3C3B", -"=. c #7A7876", -"-. c #777674", -";. c #62615F", -":. c #F6F3EE", -">. c #E5E2DD", -",. c #E8E5E0", -"<. c #686764", -"1. c #E9E6E1", -"2. c #E4E2DC", -"3. c #5A5957", -"4. c #CECCC7", -"5. c #D1D0CB", -"6. c #C7C6C1", -"7. c #E3E0DB", -"8. c #403F3E", -"9. c #E5E3DE", -"0. c #9E9D99", -"q. c #B3B1AD", -"w. c #DBD9D3", -"e. c #D7D4CF", -"r. c #DBD9D4", -"t. c #CAC8C3", -"y. c #5D5C5A", -"u. c #636260", -"i. c #DCDAD5", -"p. c #646360", -"a. c #ECEAE5", -"s. c #5F5E5B", -"d. c #575754", -"f. c #C4C2BE", -"g. c #C7C5C1", -"h. c #BFBDB8", -"j. c #585755", -"k. c #BAB8B4", -"l. c #B7B6B1", -"z. c #B8B6B2", -"x. c #BBB9B5", -"c. c #555452", -"v. c #AFADA9", -"b. c #B5B3AF", -"n. c #C5C3BF", -"m. c #51504E", -"M. c gray4", -"N. c #0E0E0D", -"B. c gray5", -"V. c #0E0D0D", -"C. c #0F0F0E", -"Z. c #080807", -"A. c #262524", -"S. c #6E6D6A", -"D. c #696865", -"F. c #686765", -"G. c #6A6967", -"H. c #646361", -"J. c #6A6966", -"K. c #676664", -"L. c #676663", -"P. c #343332", -"I. c #41403F", -"U. c #DFDCD7", -"Y. c #E9E7E2", -"T. c #DDDBD5", -"R. c #DEDCD7", -"E. c #5F5F5C", -"W. c #D0CECA", -"Q. c #B1AFAB", -"!. c #9A9895", -"~. c #C2C1BC", -"^. c #3D3D3B", -"/. c #222221", -"(. c #7A7976", -"). c #C1C0BB", -"_. c #C5C3BE", -"`. c #333331", -"'. c #63625F", -"]. c #92918D", -"[. c #CAC8C4", -"{. c #DAD8D2", -"}. c #D2D0CC", -"|. c #4E4D4B", -" X c #A6A5A1", -".X c #3E3E3C", -"XX c #CDCBC6", -"oX c #E7E5DF", -"OX c #060605", -"+X c #101010", -"@X c #252524", -"#X c #232222", -"$X c #232322", -"%X c #242323", -"&X c #161615", -"*X c #222121", -"=X c #242322", -"-X c gray8", -";X c gray100", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , < < < 1 2 3 4 5 6 7 > 8 9 0 5 4 3 2 1 1 q w , > : ; ", -"; e w r t t t t y u i p a s d f g h p i u y t p y t r w e ; ", -"; j k l y y y y a z x a a c v b n m 3 x z M 3 N B 3 V k j ; ", -"; j k l y y y y a z x h t m C Z A y a x z p S D F G r k j ; ", -"; j k l y y y y a z x a t G H d J V K x z M a L P a V k j ; ", -"; I m U Y Y Y Y 3 T R 3 Y t E L M t M R T 3 t a W Y U m I ; ", -"; Q ! ~ q q q ^ / 3 ( 2 ^ ^ ) G ^ ^ 2 ( 3 / _ 6 ` q ~ ! Q ; ", -"X ' ] [ { { { } | $ ...X.{ o.O.{ X... .$ | } { { { [ ] ' X ", -"o +.@.#.$.$.$.$.%.&.*.=.-.$.$.$.$.-.=.*.&.%.$.$.$.$.#.@.+. o ", -"; ;.:.1 k 2 >.2 ,.h <.1.2.k k k k 2.1.<.h ,.2 >.2 k 1 :.;. ; ", -"; 3.1 4.t t t 5.p 6.i y V t t t t V y i 6.p 5.t t t 4.1 3. ; ", -"; j k 5.y K M p a z x K p y y y y p K x z a p M K y 5.k j ; ", -"; j k r 7.8.%.9.y z x K p y y y y p K x z y 9.%.8.7.r k j ; ", -"; j k V W 0.q.w.e.z x K p y y y y p K x z e.w.q.0.W V k j ; ", -"; I 2.V Y ` r.Y M t.R a Y p p p p Y a R t.M Y r.` Y V 2.I ; ", -"; y.1.y h 3 M a r.4.u.^ r.i.i.i.i.r.6 p.V ` i.r.W i.a a.s. ; ", -"X d.3 f.6.6.6.g.t.h.j.k.l.z.z.z.z.P x.c.v.k.z.z.z.z.b.n.m. X ", -" . M.N.B.V.V.V.V.C.Z.A.S.<.D.D.D.D.F.G.F H.J.F.K.L.F.K.d P. . ", -" X I.) U.1 1 1 1 ^ k 4 3 2.1 Y.) >.T.> : ; ", -" . . . . . . . ; *.R.U Y V V Y t 3 E.u y W.Q.!.~.t 1 I ; ", -" X ^.q Y p ` ` p y K x t.i.~./.(.).3 2.j ; ", -" X ^.q U 2 D.D.2 l K x t.i._.`.'.b.M / j ; ", -" X ^.q V R.].].R.Y K x [.{.T p K.c./ 1 j ; ", -" X ^.^ }.Y _ _ Y p a R T , b.: |. Xh m j ; ", -" X ^._ t y Y Y y p a x B M M 4.y ~ U k j ; ", -" X .Xm p M M M M 3 w.;.XXW 3 h M y p oXy. ; ", -" o OX +X@X#X$X$X$X$X$X%X&X*X=X$X$X$X$X#X@X-X ", " ", -" . o o o o o o o o . o o o o o o o o . " +" . - % % % % % % % % ; & % % % % % & % - & % % % % % & % = X ", +" # -.b.z.x.x.x.x.z.c.4.l.x.z.l.l.l.z.b.6.g.c.z.x.x.x.l.M.1. ", +" & n.hXyXiXiXiXiXuXsXH.rXiXdXxXlXfXyXjXI.4XsXuXiXiXiXtXcXH. o ", +" % z.yX8X9X9X9X9X9XwXA.5XeX&XK.Q.OX9XyXG.;XeX9X8X7X9X7XdXZ. o ", +" % x.iX9XqXqXqXqX0XrXS.5XsXU.~ 7 [ gXtXH.:XtX9XiXfX0X8XgXA. o ", +" % x.iX9XqXqXqXqX0XrXS.7XqXyXlXb Y.aXuXH.:XwXhXd./ fX6XgXA. o ", +" % x.iX9XqXqXqXqX0XrXS.7X9XhXa.V gX7XiXH.:XeXaXU.d.iX7XgXA. o ", +" % x.iX9XqXqXqXqX0XrXS.7XqXaX~ A.gX7XpXH.:XtX9XaXhX0X8XgXA. o ", +" % z.uX9X0X0X0X0X9XeXA.6XqX9X0XrX9X9XiXG.:XrX0X8X7X0X7XfXA. o ", +" & v.sXeXrXrXrXrXeXiXF.0XtXrXtXeXrXwXdXK.XtXwX0X9XwX9XhXS. o ", +" % x.iX9X0XjXaX9X0XrXS.7XwXqXqXqXqX9XiXH.:XtX9XaXjX0X8XgXA. o ", +" % x.iX8XsX-.M.fX8XrXS.7XwXqXqXqXqX9XiXH.:XwXfXM.-.sX7XgXA. o ", +" % x.iX8XsX-.M.fX8XrXS.7XwXqXqXqXqX9XiXH.:XwXfXM.-.sX7XgXA. o ", +" % x.iX0X0XjXaX9XqXrXS.7XwXqXqXqXqX9XiXH.:XtX9XaXjX0X8XgXA. o ", +" % l.rX6X8X5X6X8X7XqXZ.5X0X9X9X9X9X8XuXG.;XeX9X8X6X0X6XdXZ. o ", +" % B.nXhXkXkXkXkXjXcXP.rXaXiXiXiXiXuXjXI.4XdXiXiXiXiXyXcXJ. o ", +" % [ r.q.w.w.w.w.w.w.+.H.H.H.H.H.H.G.I.6.N.L.H.H.H.H.F.R.2. X ", +" 5 k X o V 8X-X:X:X:X:X;X4XN.XX1X:X:X,X>X-X9Xv. o ", +" 7 v + O O O O @ G jXwXtXwXwXtXeXdXK.1XiXtXtX7X0XwXkXF. o ", +" 7 x X o S dX8X9XfXfX9X9XiXH.;XuX>XN S c.iXsXA. o ", +" 7 x X o S fX7XaXM.M.aX8XiXH.;XpX-X0 x A.uXdXA. o ", +" 7 x X o S fX6XjX-.-.jX6XiXH.:XyX2X3Xr.s yXfXA. o ", +" 7 x X o S fX9X0XsXsX0X0XiXH.;XsX|.| N O.iXdXA. o ", +" 6 z X o S aX6X8X7X7X8X6XyXF.-XwX7X^.Q.eX6XaXC. o ", +" 8 b X o H MXsXgXgXgXgXdXcXR.9XkXfXvXbXfXaXNXP. o ", +" < y . X j P.C.A.A.A.A.Z.J.2.v.F.A.Z.Z.A.C.P.,. X ", +" ", +" . . o o o o o o o o X o o o o o o o o X " }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 80 1 ", -" c #000000", -". c #080807", -"X c #0B0B0B", -"o c #100F0F", -"O c #171717", -"+ c #181817", -"@ c #1A1A19", -"# c #21201F", -"$ c #252524", -"% c #282827", -"& c #2E2E2D", -"* c #30302F", -"= c #343332", -"- c #383736", -"; c #383836", -": c #3D3C3B", -"> c #40403E", -", c #464543", -"< c #484746", -"1 c #494947", -"2 c #4D4C4A", -"3 c #52514F", -"4 c #555452", -"5 c #595856", -"6 c #5D5D5A", -"7 c #62615F", -"8 c #656461", -"9 c #686764", -"0 c #6A6966", -"q c #6F6E6B", -"w c #706F6C", -"e c #72716E", -"r c #767572", -"t c #787774", -"y c #7A7976", -"u c #7D7C79", -"i c #807F7C", -"p c #82817E", -"a c #8B8986", -"s c #8E8D8A", -"d c #918F8C", -"f c #93928E", -"g c #959390", -"h c #989793", -"j c #9B9A96", -"k c #9E9C98", -"l c #A09F9B", -"z c #A3A29E", -"x c #A7A6A2", -"c c #A9A7A3", -"v c #AAA9A5", -"b c #AFADA9", -"n c #B1AFAB", -"m c #B4B2AE", -"M c #B6B5B0", -"N c #B9B7B2", -"B c #BAB8B3", -"V c #BFBDB8", -"C c #C0BEBA", -"Z c #C4C2BD", -"A c #C7C5C1", -"S c #C8C6C1", -"D c #CECCC7", -"F c #CFCDC8", -"G c #D1CFCA", -"H c #D4D2CD", -"J c #D7D5D0", -"K c #D9D6D1", -"L c #DCDAD5", -"P c #DFDDD8", -"I c #E1DED9", -"U c #E4E2DD", -"Y c #E7E5E0", -"T c #E9E6E1", -"R c #ECE9E4", -"E c #F1EEE9", -"W c #F4F2EC", -"Q c #F9F6F1", -"! c #FBF9F3", -"~ c gray100", +"48 48 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"SMBBBBBBNNCl=CMBBBBBBBNBN+ ", -" . 0RJLKLLLLLKTzYHJHJJJHHHLM;LHHJHPLHHHHH+ ", -" . 9UGJHHHHHHHUkIDGGGGGGGFJm;KGGDGDHDHGGDO ", -" qQUUYUYYUUUWv2!YRTTRRYYYEA:EYYRRRYYYYTY+ ", -" :teeeeeeeeet5%078777779895$979777798888O ", -" .. *prtttrttttu0%yrttttttttttO ", -" . . . ... 3!IYYYYRUYUEA:EYYYUUUYYYYU+ ", -" 1IDGHGGHGGGJm;KGHGLUULGGHFO ", -" . 1UHHHJGHHJHLM;LHHJluwlLHJGO ", -" 2UGHHJULHHHLM;IHHU=&egLGHH+ ", -" . 2UHHJGgnKHHLM;LHGU*:NLJHJG+ ", -" 2UGHJS 2YGHLN;LHHL83O,LHJGO ", -" . 1UGJJGsvKHHLM;LHHHI~h GJHHO ", -" 2UGHHJUPHHHLM-LGLB20@1LHHHO ", -" . 2UHHJHGHHHHLM;LHHHhesHJHHGO ", -" 1UFHGGGGGGGJm;KFGHLULHGHHDO ", -" . 3EIUUUUUUUURZ:RUUUIUPUUIUI+ ", -" ;gassssssssdu&dsssssssssssO ", -" .. X . . ", -" .. . . . . . . ", -" ", -" ", -" " +" ", +" . o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o X ", +" ", +" . > V l x x x x x x x x x x x N x x x x x x x x x x x x N x x x x x x x x x x x c x X ", +" X i 4.B.n.m.m.m.m.m.m.m.m.m.v.*.N.n.m.m.m.m.m.m.m.m.n.N.*.v.m.m.m.m.m.m.m.m.m.b.D.' X ", +" o v C.hXyXiXiXiXiXiXiXiXiXpXeXa.dXuXiXiXyXyXyXyXiXiXuXdXa.eXpXiXiXiXiXiXiXiXiXrXMX:. O ", +" o x n.yX6X9X9X9X9X9X9X9X9X0X4Xt.eX8X8XqXaXsXaXpXqX8X8XeXt.4X0X9X9X9X9X9X9X9X9X5XhX*. O ", +" o x m.iX9XqXqXqXqXqXqXqXqXwX6Xy.tX9XeX1XI.P.Y.Q.2XeX0XtXy.6XwXqXqXqX9X0XqXqXqX7XlX=. O ", +" o x m.iX9XqXqXqXqXqXqXqXqXwX6Xy.tX8XpX'.5 6 ; O ].iX8XtXy.6XwXqXqXqXpXiX0XqXqX7XlX=. O ", +" o x m.iX9XqXqXqXqXqXqXqXqXwX6Xy.tX0XqX0X4XiXA c iX0X0XtXy.6XwXqXqXqX|.OXeXqXqX7XlX=. O ", +" o x m.iX9XqXqXqXqXqXqXqXqXwX6Xy.tX0XqX0XsX{. B.gX8X0XtXy.6XwXqXwXeX> x gX9XqX7XlX=. O ", +" o x m.iX9XqXqXqXqXqXqXqXqXwX6Xy.tX0XqX8XlX` q rXqXqX0XtXy.6XwXqXqXwX8.f.uX0XqX7XlX=. O ", +" o x m.iX9XqXqXqXqXqXqXqXqXwX6Xy.tX0X9XiX|. i.hX8XqX0XtXy.6XwXqXqXqXkXgX0XqXqX7XlX=. O ", +" o x m.iX9XqXqXqXqXqXqXqXqXwX6Xy.tX0X9XpXR.+.2XrX0XqX0XtXy.6XwXqXqXqX7X8XqXqXqX7XlX=. O ", +" o x m.iX9XqXqXqXqXqXqXqXqXwX6Xy.tX0XqX0XiXzXwX0XqXqX0XtXy.6XwXqXqXqXqXqXqXqXqX7XlX=. O ", +" o x M.pX0XwXwXwXwXwXwXwXwXrX7Xu.uXqXwXeXqX8XwXwXwXwXqXuXu.7XrXwXwXwXwXwXwXwXwX8XzX=. O ", +" X z c.eX4X6X6X6X6X6X6X6X6X7X1Xe.0X5X6X6X6X6X6X6X6X6X5X0Xe.1X7X6X6X6X6X6X6X6X6X2XdX%. O ", +" X 0 ' a.t.y.y.y.y.y.y.y.y.u.e.E i.t.y.y.y.y.y.y.y.y.t.i.E e.u.y.y.y.y.y.y.y.y.r.j.S X ", +" o c B.dXeXtXtXtXtXtXtXtXtXuX0Xi.aXrXtXtXtXtXtXtXtXtXrXaXi.0XuXtXtXtXtXtXtXtXtXqXvX;. O ", +" o x n.uX8X0X0X0X0X0X0X0X0XqX5Xt.rX9X0X0X0X0X0X0X0X0X9XrXt.5XqX0X0X0X0X0X0X0X0X6XkX*. O ", +" o x m.iX9XqXqXqX0XqXqXqXqXwX6Xy.tX0XqXqXqXqXqXqXqXqX0XtXy.6XwXqXqXqX0X0XqXqXqX7XlX=. O ", +" o x m.iX9XqXqXwXyXeXqXqXqXwX6Xy.tX0XqXqXqXqXqXqXqXqX0XtXy.6XwXqXqXqXtXrXqXqXqX7XlX=. O ", +" o x m.iX9XqXqX9X:X5XwXqXqXwX6Xy.tX0XqXqXqXqXqXqXqXqX0XtXy.6XwXqXqXqX,X1XwXqXqX7XlX=. O ", +" o x m.iX9X9XpX{. <.lX7XqXwX6Xy.tX0XqXqXqXqXqXqXqXqX0XtXy.6XwXqXwXeX> x gX9XqX7XlX=. O ", +" o x m.iX9X0XyX%XJ B.dX9XqXwX6Xy.tX0XqXqXqXqXqXqXqXqX0XtXy.6XwXqXqXwX{ ,.pX9XqX7XlX=. O ", +" o x m.iX9XqX0XrXzXpX0XqXqXwX6Xy.tX0XqXqXqXqXqXqXqXqX0XtXy.6XwXqXqXqXjXgX0XqXqX7XlX=. O ", +" o x m.iX9XqXqX0X7X9XqXqXqXwX6Xy.tX0XqXqXqXqXqXqXqXqX0XtXy.6XwXqXqXqX8X8XqXqXqX7XlX=. O ", +" o x m.iX9XqXqXqXqXqXqXqXqXwX6Xy.tX0XqXqXqXqXqXqXqXqX0XtXy.6XwXqXqXqXqXqXqXqXqX7XlX=. O ", +" o x b.rX5X8X8X8X8X8X8X8X8X9X2Xt.rX9X0X0X0X0X0X0X0X0X9XrXt.5XqX0X0X0X0X0X0X0X0X6XkX*. O ", +" o x S.nXgXjXjXjXjXjXjXjXjXkXdXs.pXrXtXtXtXtXtXtXtXtXrXaXi.0XuXtXtXtXtXtXtXtXtXqXvX;. O ", +" X r S W E W W W W W W W W Q U F s.t.y.y.y.y.y.y.y.y.t.i.E e.u.y.y.y.y.y.y.y.y.r.j.S X ", +" X F d . o R sX3X6X6X6X6X6X6X6X6X5X0Xe.1X7X6X6X6X5X5X5X6X6X2XdX%. O ", +" o H h + o o o o o o o o # Q kX9XwXwXwXwXwXwXwXwXqXuXu.7XrXwXwXrXtXtXrXwXwX8XzX=. O ", +" o H f X o W jX8XqXqXqXqXqXqXqXqX0XtXy.6XwXqXqX7X3X1X4XqXqX7XlX=. O ", +" o H f X o W jX8XqXqXqXwXqXqXqXqX0XtXy.6XwX8XdXE 1 r j 4XeX7XlX=. O ", +" o H f X o W jX8XqXqXqXeXwXqXqXqX0XtXy.6XwX8XhXm y <.J.tX0X7XlX=. O ", +" o H f X o W jX8X0XtX,X& { jX8XqX0XtXy.6XwX9XsXW h 1 h :XrX6XlX=. O ", +" o H f X o W jX8X0XrX1Xh ,.gX8XqX0XtXy.6XwXqXqXtXZX_. b.hX4XlX=. O ", +" o H f X o W jX8XqXqXwXgXpX0XqXqX0XtXy.6XwXrX>X%.m.` W.aX5XlX=. O ", +" o H f X o W jX8XqXqXqX9X9XqXqXqX0XtXy.6XwXwX9XO.g h j.uX0X7XlX=. O ", +" o H f X o W jX8XqXqXqXqXqXqXqXqX0XtXy.6XwXqXwXgXsXdXsXqXqX7XlX=. O ", +" o G d . o E dX4X7X7X7X7X7X7X7X7X6XqXr.2X8X7X7X5X6X5X5X7X7X3XgX&. O ", +" o I j X O ( DXgXlXlXlXlXlXlXlXlXkXvXj.dXzXlXlXlXlXlXlXlXlXgXGX2. O ", +" . e 2 . X p 1.&.=.=.=.=.=.=.=.=.*.;.S %.=.=.=.=.=.=.=.=.=.&.2.v X ", +" ", +" . . . O O O O O O O O O O O O X O O O O O O O O O O O O X ", +" ", +" " }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/range.sav sgt-puzzles-20160429.b31155b/icons/range.sav --- sgt-puzzles-20140928.r10274/icons/range.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/range.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,36 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :5:Range +PARAMS :3:7x7 +CPARAMS :3:7x7 +SEED :15:989032078841515 +DESC :22:d7b3e8e5c7a7c13e4e8b4d +UI :1:0 +NSTATES :2:27 +STATEPOS:2:27 +MOVE :5:W,4,2 +MOVE :5:W,4,3 +MOVE :5:W,4,4 +MOVE :5:W,4,5 +MOVE :5:W,4,6 +MOVE :5:W,4,0 +MOVE :5:W,3,1 +MOVE :5:W,2,1 +MOVE :5:W,1,1 +MOVE :5:W,0,1 +MOVE :5:W,6,1 +MOVE :5:W,5,1 +MOVE :5:W,5,5 +MOVE :5:W,1,5 +MOVE :5:B,5,2 +MOVE :5:W,5,3 +MOVE :5:W,6,3 +MOVE :5:W,3,6 +MOVE :5:W,2,6 +MOVE :5:B,3,5 +MOVE :5:W,2,4 +MOVE :5:W,2,2 +MOVE :5:B,2,3 +MOVE :5:W,1,3 +MOVE :5:W,3,3 +MOVE :5:W,0,5 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/range-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/range-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/rect-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/rect-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/rect-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/rect-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/rect-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/rect-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/rect-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/rect-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/rect-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/rect-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/rect-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/rect-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/rect-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/rect-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/rect-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/rect-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/rect-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/rect-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/rect-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/rect-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/rect-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/rect-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/rect-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/rect-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/rect.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/rect.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/rect-icon.c sgt-puzzles-20160429.b31155b/icons/rect-icon.c --- sgt-puzzles-20140928.r10274/icons/rect-icon.c 2014-09-29 00:33:46.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/rect-icon.c 2016-04-29 00:31:43.000000000 +0000 @@ -1,424 +1,886 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 165 2 ", -" c #DAD8D3", -". c #BFBDB9", -"X c #BAB9B4", -"o c #BBBAB5", -"O c #BCBBB6", -"+ c #BBBAB6", -"@ c #C0BFBA", -"# c #C2C1BC", -"$ c #C0BEBA", -"% c #BEBDB8", -"& c #C6C4C0", -"* c #DCDAD5", -"= c #D2D0CB", -"- c #8E8D8A", -"; c #8D8C89", -": c #8E8D89", -"> c #858481", -", c #8C8B88", -"< c #959490", -"1 c #696866", -"2 c #595856", -"3 c #747370", -"4 c #6E6D6A", -"5 c #6B6A67", -"6 c #6E6D6B", -"7 c #72716E", -"8 c #575654", -"9 c #C6C5C0", -"0 c #D4D2CD", -"q c #DBD9D4", -"w c #EAE8E3", -"e c #E7E5E0", -"r c #D7D5D0", -"t c #E5E3DE", -"y c #F5F3ED", -"u c #A3A29E", -"i c #83827F", -"p c #B5B4AF", -"a c #A8A7A3", -"s c #A7A6A2", -"d c #94938F", -"f c #858581", -"g c #787775", -"h c #BEBCB8", -"j c #D3D1CD", -"k c #D0CECA", -"l c #DDDBD6", -"z c #DAD8D4", -"x c #CBC9C5", -"c c #D8D6D1", -"v c #E6E4DF", -"b c #9B9996", -"n c #82817E", -"m c #B1B0AC", -"M c #A6A5A1", -"N c #A8A7A2", -"B c #92918D", -"V c #969592", -"C c #767572", -"Z c #BFBDB8", -"A c #D3D2CD", -"S c #C5C3BE", -"D c #CECDC8", -"F c #CDCBC6", -"G c #CCCAC5", -"H c #DFDDD8", -"J c #918F8C", -"K c #474645", -"L c #6C6C69", -"P c #61615E", -"I c #535250", -"U c #666663", -"Y c #696865", -"T c #494847", -"R c #CFCDC8", -"E c #D9D7D2", -"W c #CCCAC6", -"Q c #777673", -"! c #848380", -"~ c #5E5E5B", -"^ c #9D9C98", -"/ c #9F9E9A", -"( c #D3D1CC", -") c #E1DFDA", -"_ c #A1A09C", -"` c #9F9D9A", -"' c #7C7B78", -"] c #8C8C88", -"[ c #ACABA7", -"{ c #AFAEAA", -"} c #71706E", -"| c #CBC9C4", -" . c #D6D4CF", -".. c #C6C4BF", -"X. c #D0CEC9", -"o. c #969591", -"O. c #7A7976", -"+. c #959591", -"@. c #605F5D", -"#. c #A4A39F", -"$. c #6D6C69", -"%. c #C8C6C2", -"&. c #D1CFCA", -"*. c #C3C1BC", -"=. c #93928E", -"-. c #ACABA6", -";. c #5F5E5C", -":. c #6C6B69", -">. c #DEDCD7", -",. c #CDCBC7", -"<. c #EBE8E3", -"1. c #7F7F7B", -"2. c #B2B1AC", -"3. c #9A9996", -"4. c #636260", -"5. c #AAA9A5", -"6. c #ADACA8", -"7. c #706F6C", -"8. c #BFBEB9", -"9. c #E9E7E2", -"0. c #9C9B97", -"q. c #7D7C79", -"w. c #989793", -"e. c #62615F", -"r. c #6F6E6C", -"t. c #C0BEB9", -"y. c #C4C2BE", -"u. c #6A6966", -"i. c #797876", -"p. c #5B5B58", -"a. c #535351", -"s. c #656562", -"d. c #555452", -"f. c #6A6967", -"g. c #92928E", -"h. c #A09F9B", -"j. c #979793", -"k. c #656462", -"l. c #868682", -"z. c #73726F", -"x. c #E0DED9", -"c. c #DFDDD7", -"v. c #7D7D7A", -"b. c #A9A8A4", -"n. c #A5A4A0", -"m. c #AFAEA9", -"M. c #696966", -"N. c #9B9B97", -"B. c #C9C7C3", -"V. c #6B6A68", -"C. c #807F7C", -"Z. c #898885", -"A. c #81817D", -"S. c #888784", -"D. c #7E7D7A", -"F. c #888884", -"G. c #636360", -"H. c #D4D2CE", -"J. c #C3C1BD", -"K. c #C3C2BD", -"L. c #C4C2BD", -"P. c #C7C5C0", -"I. c #C1C0BB", -"U. c #C8C7C2", -"Y. c gray100", +"16 16 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , < 1 2 3 4 5 6 7 8 9 ", -"0 q w e r t y u i p a s d f g h ", -"j k l z x c v b n m M N B V C Z ", -"A S D F . G H J K L P I U Y T S ", -"j R * E W F % b Q , ! ~ ^ / 1 @ ", -"j ( ) l = W _ ` i ' ] 1 [ { } . ", -"j | .A ..X.) o.O.a +.@.#.s $.$ ", -"A %.( &.*.R l =.O.-.d ;.u M :.$ ", -"j ( ) >.,.q <.^ 1.2.3.4.5.6.7.8.", -"j &.>.q k q 9.0.q.{ w.e.a 5.r.t.", -"A y.F k 7 u.i.p.a.s.d.a.#.s f.$ ", -"j &.l l 7.g.q./ h.M j.k.w.l.z.. ", -"( ( x.c.Q d v.b.n.m./ M.N.f Q h ", -"0 B.= 0 V.C.Z.A.n S.D.8 F., G.S ", -"q 0 ( H.G # J.K.J.J.L.P.J.I.U.* " +"jX>X*X=X-X=X*X,X1X>X>X,X,X:X5XlX", +"uXV.B.B.z.N.G.<...q.4.1.4.8.| 5X", +"pXkXSXCXdXNXUX~.j.+X).`.x.l.i.;X", +"pXyXzXjXqXgXBXI.h. X/.).N.G.e.:X", +"pX4XrXwX:XwXvXZ.R 5.%.' :.,.W 4X", +"pXtXlXgXeX3X&XR.w.k.c.@.U.R.,.,X", +"pXpXbXzXsX*XK./.f.7.C.,.].|.8.>X", +"pX0XdXpX5XtXnXH.u._.F.$.~.(.3.,X", +"pX7XiXyX1XtXzXD.u.].D.#.!./.3.,X", +"pXpXbXxXeXkXSXY.f..XP.*.`.[.6.>X", +"pXyXxXkXyXkXAXU.a.|.J.&.).'.6.>X", +"pX3XwXyX9.1.u.o.] -.[ ' /.).<.,X", +"pXyXxXzX9.b.y.Q.R./.J.:.N.z.w.:X", +"pXiXbXxXt.M.u.].^.}.T.2.N.k.y.;X", +"aX8XiXaX2.g.b.h.j.v.s.} b.N.*.4X", +"kXaXpXaXqX1X2X2X2X2X3X6X2X c #545452", -", c #585755", -"< c #5A5957", -"1 c #5D5D5B", -"2 c #62615F", -"3 c #656462", -"4 c #6D6C6A", -"5 c #706F6D", -"6 c #72716E", -"7 c #757472", -"8 c #787774", -"9 c #7A7A76", -"0 c #7E7D7A", -"q c #807F7C", -"w c #82817E", -"e c #868582", -"r c #8B8A86", -"t c #8E8D89", -"y c #93938F", -"u c #969592", -"i c #989793", -"p c #9A9996", -"a c #9E9D99", -"s c #A09F9B", -"d c #A3A29E", -"f c #A6A5A1", -"g c #A8A7A3", -"h c #ABAAA6", -"j c #AEADA9", -"k c #B0AFAB", -"l c #B3B2AD", -"z c #B6B5B1", -"x c #B9B7B3", -"c c #BBBAB5", -"v c #BEBDB8", -"b c #C0BEBA", -"n c #C3C1BD", -"m c #C6C5C0", -"M c #C8C6C2", -"N c #CCCAC5", -"B c #CFCDC9", -"V c #D1CFCA", -"C c #D4D2CD", -"Z c #D7D5D1", -"A c #D9D7D2", -"S c #DCDAD5", -"D c #DFDDD8", -"F c #E1DFDA", -"G c #E3E1DC", -"H c #EEEBE6", -"J c #F1EEE9", -"K c #F4F2EC", -"L c #F7F5F0", -"P c #FEFBF6", -"I c #FFFFFA", +"32 32 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"3zffffudfe3ig+MF", -"DBnFSSSDMMFSSAH,3ldfffudfp=yf+MF", -"DBnDSSSDMMFSSAH>3jdddfuah-,fd+MF", -"DBnGSDSGNMGSDSJ>4chjjjaghhghh+MF", -"DBvSCCCAnnACCCG>-r0wqq00eqew0oMF", -"DVjbvvvnkknbbcV;.%@@@# o#@@@+.NF", -"DBmGDFDGNNGSAFJ,3vfhkz#ezhjjj+MF", -"DBnFASSDMMGb8dL:3lr3zfffk@wkfggf+mF", -"DVnDASAFMMFASZH>3ldddj@qjdfdd+MG", -"DVnGSSSFMMFSSZH>3ldfdj#qjdfff+mD", -"DBnDASAFmmSZZCH:3jadsh@qjddfd+MG", -"DBMGDFFGVZKJHHI14nlzlv#qkfgffoMD", -"DVzNMMMVs375669@#<:::,.0sipai+MF", -"DBzNMNnA4X>:>--:>:>::,.0dssaioMG", -"DBnGGFDK7>Mfplxfhzllkv$qkyygf@mF", -"DBnDASZH6-lp13jyafdssj@qjr*tgoMF", -"DBnFSSZH6-zt*thpafffdk#qjy&rg+MF", -"DBnFASZH6-x83ifuafdfsh@0jq9sd+MF", -"DBNGGGSK7:clxjksfjjjjz#rzklkj+MF", -"DVlnnnbV5+1::>>-:>>>:,X*,:>>:oNF", -"SDVBBBVBVMnnnnnnnnnnnnNmnnnnnBSS", -"DADDDDDDDFFGGGGGFGGFGGFFGFGGFFSS" +"lXlXnXnXnXnXnXnXnXnXnXnXnXnXnXbXbXnXnXnXnXnXnXnXnXnXnXnXnXvXlXlX", +"lXkX7X4X5X5X5X5X6X6X5X5X5X5X4X0X0X7X7X7X7X7X8X7X7X7X7X7X7XeXkXlX", +"vXtXC v n n n n x x n n n b N 0 e j g g g g d g g g f h s e eXvX", +"vXrXX:X1X.X.X1X,X>X=XeX) 1 M c x z b - p v z x c k 4 wXbX", +"vXrX5XNXcXvXcXNXqXqXNXjXcXcXPX} 2.-X/.}.|.#Xb c.#X[.{.}.].j 7XnX", +"vXtX1XvXjXkXjXcX7X5XVX).~ ,XIX] =.oX6.K H.|.z d.].Q.!.~.W.g 7XnX", +"vXtX2XbXkXlXkXvX8X7XmX0XH _.UX] -.@Xz.P U. Xz g.{.~.^./.!.g 7XnX", +"vXtX2XvXkXlXkXvX8X6XBXW.,.>XIX[ =.%X_ ! T.|.z f.{.!.~./.!.g 7XnX", +"vXrX4XMXxXcXxXMXqXqXMXcXBXvXLX} :.oX`.`.~.|.x h.|.^./.).~.g 7XnX", +"cXtX&XiXrXrXrXiX:X:XiXeXeX0XbX) &.].I.Y.Y.(.l i.(.Y.T.R.U.f 7XnX", +"cXyXXX5X1X2X2X6X+X+X6X2X2X,XpX~ @.^.H.K.J.W.j r.E.J.K.L.H.d 8XnX", +"vXrX6XBXvXbXvXNXwXwXNXvXbXzXIX| :.+X^.(./. Xc h.|./.(.).^.h 7XnX", +"vXtX1XvXjXkXjXcX7X7XcXjXkXfXGX{ -..XQ.~.!.{.x f.[.!.~.^.Q.g 7XnX", +"vXtX2XbXkXlXkXvX8X8XvXkXlXgXHX{ ;.XX!.^.!.}.x g.{.~.^./.!.g 7XnX", +"vXtX1XvXjXkXjXvX6X4XzXfXgXaXSX] =.|.E.Q.E.'.z f.[.!.~.^.Q.g 7XnX", +"vXrX5XBXcXvXvXMXyXjXUXHXJXDXUX@.6.1X.XoXXX;Xn g.|./.(.).^.g 7XnX", +"cXyX@XwX7X8X6XyXR.:.w.8.8.7.p.l n ..` ' ` } 5 a.Q.L.P.U.L.d 8XnX", +"cXyX@XwX7X8X4XhX4.e } ` [ / / ` ] ' ' ' ` } 5 a.Q.R.R.U.L.d 8XnX", +"vXrX5XBXcXvXzXUXw.| 7XY.L.+X#X^.].@XoXoXXX;Xn g. XB.G.`.^.g 7XnX", +"vXtX1XvXjXkXfXHX9.~ OXc.B j.].F.I.~.Q.Q.E.'.z d.XX=.M (.!.g 7XnX", +"vXtX2XbXkXlXgXJX9.^ *Xp.A K.`.J.T.(.^.^.!.}.x f.|.w.v E.^.g 7XnX", +"vXtX1XvXjXkXfXHX9.~ %X8.o.H.).H.U.^.!.!.W.].x f.`.5.e.^.W.g 7XnX", +"vXrX5XBXvXbXzXUXq.' -XXX%X}.|.E.(.|.{.{.].#Xv x.#XOX+X}.].j 7XnX", +"cXuXoX5X1X2X,XuX7.g O.` ` ] { ( ` [ ] [ ] .y U | ` ' { ` s wXbX", +"lXlXuXrXtXtXtXrXtX6X c #50504E", -", c #555552", -"< c #595957", -"1 c #5D5D5A", -"2 c #61615E", -"3 c #666663", -"4 c #686765", -"5 c #696966", -"6 c #6E6D6B", -"7 c #71716E", -"8 c #767572", -"9 c #7A7976", -"0 c #7E7D7A", -"q c #807F7C", -"w c #82817E", -"e c #858481", -"r c #888784", -"t c #8B8A86", -"y c #8E8D8A", -"u c #908F8C", -"i c #93928E", -"p c #969592", -"a c #989794", -"s c #9A9996", -"d c #9E9D99", -"f c #A09F9B", -"g c #A3A29E", -"h c #A6A5A1", -"j c #A8A7A3", -"k c #ABAAA6", -"l c #AEADA9", -"z c #B0AFAB", -"x c #B3B1AD", -"c c #B7B5B1", -"v c #B8B6B2", -"b c #BBB9B5", -"n c #BFBEB9", -"m c #C0BFBA", -"M c #C5C3BE", -"N c #C7C5C0", -"B c #C9C7C2", -"V c #CCCAC5", -"C c #CFCDC8", -"Z c #D0CEC9", -"A c #D4D2CD", -"S c #D7D5D0", -"D c #D9D7D2", -"F c #DCDAD5", -"G c #DFDDD8", -"H c #E0DED9", -"J c #E3E1DC", -"K c #E7E5E0", -"L c #E9E7E1", -"P c #EBE9E4", +"48 48 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"jz3XGFFF", -"FFHbNHFFFFFFJxZGFFFFFGC 0zghhghhguhggb7%jz3XGGFF", -"FFJbNHDFFFFFJxZGFFFFDGC 0lghhhhhgujgk3#pjz3XFFFF", -"FFJbNJDFFFFDJxZGFFFFFHC 0lghhhghgugjs&,8gz3XGFFF", -"FDJbMHFFDFFDHxZFFDFFDGC 0kdggfgfgtgggljffz3XGFFF", -"FFJbBJHHHHHGKcAJGJHGGJA tbxxxxxcxsxxxxxxzm7XGFFF", -"FSJbvZBBBBVNCjmVBBBBBCb *,>>>>>>>;,>>>>>>,#OFFFF", -"FFJbjbvcbvvcbszbbbcvcbj.X++Oo+++X O+++++++.+FFFF", -"FFJbVLJJJJJHLvSKJPPJJJA rbzxczzcy fxlzzzlb6XGFFF", -"FFJbMGDDDFFDJxCFDMgNHGV 0lgu9dgkw ijggggdz3XFGFF", -"FDJbNJFFGDGDJxCGGgf=NJV 0zg86&glw pkggjggx5.GFFF", -"FDJbNJFFFFGDJxCGFLi*VJC 0lgb0$gle pkgjgjgz4XGFFF", -"FFJbNGFFFFDDJxCGFbz$MJV 0lj2+tjkw pjjghggx3XGFFF", -"FFJbNJDFFFFDJxCGGkrfFHC 0zg,17gkw pjgjgjgz4XFFFF", -"FDJbNGDFDFGDJxCGDJJJDGV 0zgxzkglw pjgggggx3XGFFF", -"FFJbVKGJJJJGJbSJJHGHHKA wzjgjjjzr sljjjjhc4XGFFF", -"FDJbzMnmmmmnMgcMmmmmmMx 8dipppps8 tspppaig1XGFFF", -"FDJblMMmnmmnMgvMnnnMnMc 8dpppppd8 rsppppig1XGGDF", -"GFJbCJGJHJJHKcSJJJHHHKA wxjjjjgxr skjjjjjx4XFFGF", -"DDJbMGDFFFFDJxCGFFFDFGV 0lggggglr pjgggggx3XGFFF", -"GDJbMJDFFFFDJxCGFFFFFGC 0lggjgglw pjgjjggz3XGFFF", -"FFJbBJFFFFFFJxCGFFFFFGV qlggggglw pkgggjgx3XFFFF", -"FFJbMJDFFFFDJxZGFFFFFGV qzgjgjglw pjhhhggz3XGGFF", -"FDJbMJFFFFFFJxCGFFFFFGC qlgggggle pjgjhhgz3XFFFF", -"FFJbMGDFFFDDGxCFFDDDDGB 0kgggggkw pjgggggz3XGGFF", -"FDJbVLJJJJJHPbFPPKLPKPS rblxzzlvy sljjjjgx5XFFFF", -"FFJbhbcccvccb=@@@@@@@@@ X+OO++++X wiiiiiid:>>>>:,* ugsssssk2XGFFF", -"FDJbVKGGGGGGKo6Mzbmbcccsxcxcxxxbu skjzxkgx4XGGFF", -"FFJbMGFDFFDFGX2lgw19hggrgggggggjw pkd83ejz3XFFFF", -"FDJbMJFFFFFFGo2xgra@ujhugggjggglw pkdt3$jz3XGFFF", -"FFHbMJFFFFFFHo2xgc5-hhhuggggjgglw pjkj;-kz3XGGFF", -"FFJbMJFFFFFFHX2xj,o9ghhuggjggjglr iks92*jz3XFFFF", -"FFHbMHFFFFFFHX2xhwwqdhhughhhhhglw pkgr9ggx4XFFFF", -"FFJbMGDFFDDFGo2cgllxjhjihjhhhhhlr skjzzkjx4XFFFF", -"FDJbVLGHHHHHJo1jassssddrsssddssg9 tfssssaj2XGGFF", -"FFHmgcxlxzxxx$@$#######@$#$####$#+#######$@$FFFF", -"FFFFAAAAAAAAAFSSSSSSSSSSSSSSSSSSSDSSSSSSSSSFFFFF", -"FFFFGFFGGFGFGFFGFGGGGFGFGGGFGFGFFGGGGFGFGFFFFFFF", -"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFF", -"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlX", +"lXlXlXkXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXlXlXlXlX", +"lXlXkXbXFXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXSXSXDXDXDXDXDXDXDXDXSXDXDXDXDXDXDXDXDXDXZXlXlXlXlX", +"lXkXbX5XV.D.S.S.S.S.S.S.S.D.S.S.S.S.S.S.S.S.D.K.G.D.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.D.Q.lXlXlXlX", +"lXhXSXL. ; * * * * * * * # & * * * * * * * & o + O O O O O O O o O O O O O O O @ q kXzXlXlX", +"lXkXmX=X6XbXkXlXlXlXlXjXnXOXyXcXkXlXlXlXkXvXwX# g.}.~./././././.~.C.(.^./.`._.^.!..X,.3 xXzXlXlX", +"lXkXmX*X7XmXlXzXzXzXzXlXMX+XuXvXzXzXzXzXlXnXeXo f.}.~./././././.^.C.(././.F.L.'.!.XX>.< xXzXlXlX", +"lXkXmX*X5XbXkXkXkXkXkXjXnXoXtXcXkXkXkXkXjXvXwXo d.{.!.^.^.^.^.^.!.B.^.).G.L d 7.'.|.:.< xXzXlXlX", +"lXkXmX*X6XbXkXlXlXlXlXkXnXOXyXcXlXlXlXlXkXbXwXo f.{.!.^.^.^.^.^.~.V./.^.!.OXS =.}.|.>.< xXzXlXlX", +"lXkXmX*X6XbXkXlXlXlXlXkXnXOXyXcXlXlXlXlXkXbXwXo f.{.!.^.^.^.^.^.~.V./.^.(.S N T.!. X>.< xXzXlXlX", +"lXkXmX*X6XbXkXlXlXlXlXkXnXOXyXcXlXlXlXlXkXbXwXo f.{.!.^.^.^.^.^.~.V.^.).H.M H 9._. X>.< xXzXlXlX", +"lXkXmX*X5XbXkXkXkXkXkXjXnXoXtXxXkXkXkXkXjXvXqXO a.'.E.Q.Q.Q.Q.Q.W.M.!.W.~.}.'./.R.}.;.< xXzXlXlX", +"lXkXmX*X0XBXvXbXbXbXbXcXVX#XaXMXvXbXbXbXcXNXyXo m.-X.XoXoXoXoXOX.XL.OXoXoX.X.XXX.X,X8., xXzXlXlX", +"lXkXmX*X#XrX8X9X9X9X9X8XrX_.,XwX9X9X9X9X8XeX=X@ F { ) _ _ _ _ _ ` ^ ` _ _ _ _ _ ) | c 6 zXzXlXlX", +"lXkXmX*X).=X$X$X$X$X$X#X=XY. X&X$X#X@X$X#X=X'.# 1 q 9 8 7 9 9 0 3 7 9 9 9 9 9 8 w * 0 lXzXlXlX", +"lXkXmX*XwXCXnXmXmXmXmXbXAX$XdXBXnXSXHXNXbXCXpXo c.%X{.@X#X|.{.#XN.o E.oX}.|.|.|.[.-X5., xXzXlXlX", +"lXkXmX*X5XvXjXkXkXkXkXhXbXoXrXzXzX*X(.iXkXcXqXo s.].Q.z.f.~.Q.'.j. G.).Q.!.!.!.W.|.:.< xXzXlXlX", +"lXkXmX*X6XbXkXlXlXlXlXkXnXOXyXxXvXV.Z ` VXxXwXo d.}.T.[ h ^ }.'.l. H._.~.^.^.^.Q..X>.< xXzXlXlX", +"lXkXmX*X6XbXkXlXlXlXlXkXnXOXyXxXbXfXQ +.VXxXwXo f.{.!.&X) +.}.'.l. H._.~.^.^.^.Q..X>.< xXzXlXlX", +"lXkXmX*X6XbXkXlXlXlXlXkXnXOXtXvXhX/.-.B vXvXwXo d.[.).Z t M.^.].l. H._.~.^.^.^.Q..X>.< xXzXlXlX", +"lXkXmX*X6XbXkXlXlXlXlXkXnXOXtXcXlXb.1..XvXcXwXo d.}.E.] / 3.(.].l. H._.~.^.^.^.Q..X>.< xXzXlXlX", +"lXkXmX*X5XvXjXkXkXkXkXhXbXoXtXxXkXZXFXmXhXvXqXo d.[.!..X.X[.Q.[.k. H._.!.~.~.~.Q. X:.< xXzXlXlX", +"lXkXmX*XqXCXnXnXnXnXnXbXZX$XsXBXnXvXxXbXbXVXiXO h. X/.^.^./.(.|.x. L.].(.).).)./.OX<.< xXzXlXlX", +"lXkXmX*X|.4X,X,X,X,X,X>X4XQ.$X2X,X,X,X,X>X3XoXo w.R.G.J.J.J.G.T.y. n.I.H.J.J.J.F.!.@.1 xXzXlXlX", +"lXkXmX*X|.4X,X,X,X,X,X>X4XQ.$X2X,X,X,X,X>X3XoXo w.R.G.J.J.J.G.T.y. n.I.H.J.J.J.F.!.@.1 xXzXlXlX", +"lXkXmX*XqXCXnXnXnXnXnXbXZX$XsXBXnXnXnXnXbXVXiXO h. X/.).).).(.|.x. L.].(.).).)./.OX<.< xXzXlXlX", +"lXkXmX*X5XvXjXkXkXkXkXhXbXoXtXxXkXkXkXkXjXcXqXo d.[.!.~.~.~.!.].k. H._.!.~.~.~.Q. X:.< xXzXlXlX", +"lXkXmX*X6XbXkXlXlXlXlXkXnXOXyXcXlXlXlXlXkXbXwXo f.{.!.^.^.^.!.[.l. H._.~.^.^.^.Q..X>.< xXzXlXlX", +"lXkXmX*X6XbXkXlXlXlXlXkXnXOXyXcXlXlXlXlXkXbXwXo f.{.!.^.^.^.!.[.l. H._.~.^.^.^.Q..X>.< xXzXlXlX", +"lXkXmX*X6XbXkXlXlXlXlXkXnXOXyXcXlXlXlXlXkXbXwXo f.{.!.^.^.^.!.[.l. H._.~.^.^.^.Q..X>.< xXzXlXlX", +"lXkXmX*X6XbXkXlXlXlXlXkXnXOXyXcXlXlXlXlXkXbXwXo f.{.!.^.^.^.!.[.l. H._.~.^.^.^.Q..X>.< xXzXlXlX", +"lXkXmX*X5XvXjXkXkXkXkXhXbXXXeXzXhXjXjXjXhXxX0Xo s.].Q.!.!.!.Q.'.j. G.).!.~.~.~.Q. X:.< xXzXlXlX", +"lXkXmX*XwXCXnXmXmXmXmXbXZX*XlXFXZXAXAXAXCXGXhX@ v.$X{.|.|.|.{.#XN. L.[.(.).).)./.+X<.< xXzXlXlX", +"lXkXmX*X).=X$X$X$X$X$X$X*XJ p f f d d d d f a . 3 0 9 9 9 9 9 0 2 O z.H.A.S.S.S.Z.T.o.1 xXzXlXlX", +"lXkXmX*X#XrX8X9X9X9X9X9XwX8 j [ ^ ~ ! ^ / ^ ) ^ ` _ _ _ _ _ ) [ J X B.E.I.L.L.I.L.).%.1 xXzXlXlX", +"lXkXmX*X0XBXvXbXbXbXvXvXBX5 3.1X.X;X1X%XoXOX+XP..XOXoXoXoXoXXX=XC. K.'.(.XXoX`.~.OX,.< xXzXlXlX", +"lXkXmX*X5XbXkXkXkXkXkXkXvX4 $.}.!.1.~ c./.W.!.M.E.Q.Q.Q.Q.Q.E.`.h. G.`.T.*.+.F.^. X:.< xXzXlXlX", +"lXkXmX*X6XbXkXlXlXlXlXlXbX4 &.XXQ.u.) h [.!./.V.!.^.^.^.^.^.!.[.l. H.`.E.:.6 ;.{.|.>.< xXzXlXlX", +"lXkXmX*X6XbXkXlXlXlXlXlXbX4 &..X!.}.) 7.[.!.(.V.!.^.^.^.^.^.!.[.l. H.(.'.A.g <.[.|.>.< xXzXlXlX", +"lXkXmX*X6XbXkXlXlXlXlXlXbX4 &. X'.M : ,.~.^./.V.!.^.^.^.^.^.!.[.l. G.[.V. .j O.{.|.>.< xXzXlXlX", +"lXkXmX*X6XbXkXlXlXlXlXlXbX4 &..X!.x.p.f.^.~./.V.!.^.^.^.^.^.!.[.k. G.`.R.y.j.(.Q. X:.< xXzXlXlX", +"lXkXmX*X5XvXjXkXkXkXjXkXvX5 -.OX^.}. X|.).(._.Z./.).).).).)./.|.x.X L.].). X}.(.^.OX<.1 xXzXlXlX", +"lXkXmX&X0XVXbXbXbXbXbXbXBX5 O.).L.P.L.P.I.I.Y.z.L.U.I.I.I.I.P.!.a. B.R.P.L.P.I.L.(.%.1 xXzXlXlX", +"lXkXnX:X^.+X.XXXXXXXXXXXOXn i b x c c c c c c l x c c c c c x v k w z c c c c c x b i M lXzXlXlX", +"lXlXlXlXaXiXpXpXpXpXpXpXiXjXhXdXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXdXgXkXfXdXfXfXfXfXfXdXgXlXlXlXlXlX", +"lXlXlXlXxXxXxXxXxXxXxXxXxXzXzXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXzXzXxXxXxXxXxXxXxXxXzXlXlXlXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlX" }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/rect.sav sgt-puzzles-20160429.b31155b/icons/rect.sav --- sgt-puzzles-20140928.r10274/icons/rect.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/rect.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,17 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :10:Rectangles +PARAMS :3:7x7 +CPARAMS :3:7x7 +DESC :33:a3d2b2a3_2a4a8h2a3c4_2b2c3a3_3c3b +NSTATES :2:10 +STATEPOS:2:10 +MOVE :8:R0,6,3,1 +MOVE :8:R6,4,1,3 +MOVE :8:R3,6,3,1 +MOVE :8:R4,4,2,1 +MOVE :8:R3,5,3,1 +MOVE :8:R6,1,1,3 +MOVE :8:R5,0,2,1 +MOVE :8:R5,1,1,2 +MOVE :8:R4,3,2,1 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/rect-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/rect-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/samegame-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/samegame-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/samegame-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/samegame-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/samegame-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/samegame-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/samegame-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/samegame-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/samegame-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/samegame-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/samegame-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/samegame-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/samegame-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/samegame-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/samegame-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/samegame-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/samegame-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/samegame-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/samegame-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/samegame-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/samegame-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/samegame-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/samegame-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/samegame-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/samegame.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/samegame.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/samegame-icon.c sgt-puzzles-20160429.b31155b/icons/samegame-icon.c --- sgt-puzzles-20140928.r10274/icons/samegame-icon.c 2014-09-29 00:33:46.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/samegame-icon.c 2016-04-29 00:31:43.000000000 +0000 @@ -1,732 +1,715 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 195 2 ", -" c #DCDAD5", -". c #D8D6D2", -"X c #D8D6D1", -"o c #D7D5D1", -"O c #D3D2D1", -"+ c #D8D2CE", -"@ c #D7D3CD", -"# c #D4D5CE", -"$ c #D5D3CE", -"% c #D9D7D2", -"& c #D4D5CD", -"* c #DFD7D9", -"= c #B2C6A9", -"- c #15990B", -"; c #E03428", -": c #A04C23", -"> c #2A9F38", -", c #DDD8D2", -"< c #DEDCD7", -"1 c #DDDBD6", -"2 c #E2DCDD", -"3 c #EEE8DB", -"4 c #BBC3C5", -"5 c #044998", -"6 c #EB1227", -"7 c #9A3D03", -"8 c #0E9B23", -"9 c #DAD9D4", -"0 c #B9CBB5", -"q c #C3C8CB", -"w c #9591E4", -"e c #0004FF", -"r c #BD1366", -"t c #9A4224", -"y c #448B2E", -"u c #DDD8D3", -"i c #DBDAD4", -"p c #DFDBD8", -"a c #D2D4CF", -"s c #1D9D04", -"d c #11439A", -"f c #0100FF", -"g c #0B04F8", -"h c #000CFF", -"j c #771396", -"k c #FF221B", -"l c #DAD7D7", -"z c #DBD9D5", -"x c #DEDCD5", -"c c #D2D1D5", -"v c #2435D6", -"b c #0304FB", -"n c #1220DA", -"m c #147C43", -"M c #C62040", -"N c #9B3E25", -"B c #3C8E2B", -"V c #DAD8D0", -"C c #DEDCD6", -"Z c #DFDCD6", -"A c #D6D4D6", -"S c #2447B2", -"D c #0A33A9", -"F c #18577B", -"G c #049200", -"H c #982961", -"J c #913447", -"K c #6C7B29", -"L c #DCD8D4", -"P c #CFCDD3", -"I c #D7D5D7", -"U c #DAD8D5", -"Y c #C9D3C3", -"T c #1A9114", -"R c #078900", -"E c #0E8609", -"W c #1E8608", -"Q c #002FE8", -"! c #740B9A", -"~ c #FF220F", -"^ c #D7D5D2", -"/ c #1F1EF4", -"( c #9392E4", -") c #F8F6CF", -"_ c #D5D5D3", -"` c #E9DFE1", -"' c #97BD93", -"] c #07800D", -"[ c #089300", -"{ c #0B49A8", -"} c #4915D4", -"| c #FF1008", -" . c #FD0F05", -".. c #FF0100", -"X. c #FC2022", -"o. c #DFD7D3", -"O. c #D5D3D2", -"+. c #1616F6", -"@. c #2E2DF7", -"#. c #8483E6", -"$. c #DBDBD1", -"%. c #EADFE3", -"&. c #8BBB89", -"*. c #007C00", -"=. c #B75000", -"-. c #4B1FAE", -";. c #171CDC", -":. c #7C6A00", -">. c #751799", -",. c #6C2C6A", -"<. c #727A22", -"1. c #DBD8D5", -"2. c #D3D2D2", -"3. c #1D1DF3", -"4. c blue", -"5. c #3433F5", -"6. c #DFDED2", -"7. c #E7DEDF", -"8. c #90B4A0", -"9. c #146744", -"0. c #E21640", -"q. c #6A239D", -"w. c #0C45B7", -"e. c #108338", -"r. c #0B3AD4", -"t. c #1D4D8C", -"y. c #4F8D1E", -"u. c #D9D8D6", -"i. c #D4D2D2", -"p. c #241EF5", -"a. c #3838F4", -"s. c #E7E5D3", -"d. c #F0EED1", -"f. c #9893E3", -"g. c #0000FD", -"h. c #0803FF", -"j. c #116D61", -"k. c #128132", -"l. c #2700FF", -"z. c #0D8936", -"x. c #7E5B01", -"c. c #FF172A", -"v. c #DAD9D2", -"b. c #2B8F2B", -"n. c #103EA2", -"m. c #0D04FF", -"M. c #3537F2", -"N. c #1E1CFC", -"B. c #090BF5", -"V. c #00834F", -"C. c #9D4C1C", -"Z. c #C63916", -"A. c #03893B", -"S. c #0B40CA", -"D. c #7E1880", -"F. c #FF2111", -"G. c #DAD7D6", -"H. c #23676B", -"J. c #0928C0", -"K. c #0202FB", -"L. c #300AD9", -"P. c #861583", -"I. c #785907", -"U. c #922B55", -"Y. c #991B6D", -"T. c #7F6300", -"R. c #1817E6", -"E. c #41219F", -"W. c #A96017", -"Q. c #D9D7D7", -"!. c #D5D3D3", -"~. c #392FF6", -"^. c #1B16FF", -"/. c #2323FB", -"(. c #2723F8", -"). c #1422FF", -"_. c #8234A5", -"`. c #FF2204", -"'. c #FF1915", -"]. c #672EBA", -"[. c #3A2DE0", -"{. c #FF2518", -"}. c #5224E6", -"|. c #195CA4", -" X c #31AD2D", -".X c #D9D8D7", -"XX c #D9D9D3", -"oX c #D9D7D8", -"OX c #DAD9D3", -"+X c #DCD8D3", -"@X c #DDD7D4", -"#X c #DADAD2", -"$X c #DBD7D6", -"%X c #DED8D2", -"&X c gray100", +"16 16 248 2 ", +" c #E6E6E6", +". c #E2E2E2", +"X c #E2E2E2", +"o c #E2E2E2", +"O c #E2E2E2", +"+ c #E2E2E2", +"@ c #E2E2E2", +"# c #E1E1E2", +"$ c #DDDEE1", +"% c #E2DDDE", +"& c #E0DEDD", +"* c #DEE1DE", +"= c #E6E6E6", +"- c #E2E2E2", +"; c gray87", +": c #E2E2E2", +"> c #E1E1E1", +", c #E2E2E2", +"< c #E2E2E2", +"1 c #E2E2E2", +"2 c #E2E2E2", +"3 c #DEE0DE", +"4 c #E9E3EA", +"5 c #BAD0B7", +"6 c #169B0E", +"7 c #E2362B", +"8 c #A14E26", +"9 c #2CA13B", +"0 c #E6E3E2", +"q c #E2E2E2", +"w c #E2E2E2", +"e c gray91", +"r c #E7E7E7", +"t c #E7E7E7", +"y c #E7E7E7", +"u c #E7E7E7", +"i c #E7E7E7", +"p c #ECE8EF", +"a c #F9F5ED", +"s c #C3CDD4", +"d c #054A99", +"f c #EB1329", +"g c #9B3D04", +"h c #0F9C25", +"j c #E6E3E2", +"k c #E2E2E2", +"l c #E1E1E1", +"z c #E7E7E7", +"x c #E6E6E6", +"c c #E6E6E6", +"v c #E6E6E6", +"b c #E6E6E6", +"n c #E4E5E5", +"m c #C2D5C3", +"M c #CBD3DA", +"N c #9C99F0", +"B c #0005FF", +"V c #BF1468", +"C c #9B4426", +"Z c #468D30", +"A c #E6E3E3", +"S c #E6E6E6", +"D c #E5E6E5", +"F c #E9E7E9", +"G c #DCE0E0", +"H c #1F9E06", +"J c #12449C", +"K c #0100FF", +"L c #0B05F8", +"P c #000DFF", +"I c #771597", +"U c #FF241E", +"Y c #E3E2E7", +"T c #E2E2E2", +"R c #E1E1E2", +"E c #E7E7E7", +"W c #E6E6E6", +"Q c #E6E6E6", +"! c #E5E5E6", +"~ c #E8E8E6", +"^ c #DCDDE5", +"/ c #2637D9", +"( c #0304FB", +") c #1221DB", +"_ c #157E45", +"` c #C72142", +"' c #9C3F27", +"] c #3D902D", +"[ c #E6E3E3", +"{ c #E2E2E2", +"} c #E4E4E1", +"| c #E8E8E7", +" . c #E6E6E6", +".. c #E6E6E6", +"X. c #E5E5E6", +"o. c #E9E8E8", +"O. c #E0E0E6", +"+. c #2649B4", +"@. c #0A34AA", +"#. c #19587C", +"$. c #059200", +"%. c #992B63", +"&. c #923549", +"*. c #6D7D2B", +"=. c #E5E3E4", +"-. c #E2E2E2", +";. c #D9D9E3", +":. c #E0E0E8", +">. c #E3E3E6", +",. c #E6E6E6", +"<. c #E6E6E6", +"1. c gray90", +"2. c #D3DED2", +"3. c #1B9215", +"4. c #088900", +"5. c #0F860A", +"6. c #1F870A", +"7. c #0131EA", +"8. c #740C9B", +"9. c #FF2311", +"0. c #E3E2E7", +"q. c #E1E1E2", +"w. c #2020F7", +"e. c #9A9AEF", +"r. c #FFFFE3", +"t. c #DFE1E3", +"y. c #F3ECF3", +"u. c #9EC69F", +"i. c #08800E", +"p. c #089300", +"a. c #0C4AAA", +"s. c #4B16D6", +"d. c #FF110A", +"f. c #FD0F06", +"g. c #FF0100", +"h. c #FD2124", +"j. c #E8E3E2", +"k. c #DFDFE2", +"l. c #1717F8", +"z. c #3030FB", +"x. c #8A8AF0", +"c. c #E5E7E2", +"v. c #F5EBF5", +"b. c #92C394", +"n. c #007B00", +"m. c #B85100", +"M. c #4C20B0", +"N. c #181DDD", +"B. c #7D6B00", +"V. c #76189A", +"C. c #6D2D6B", +"Z. c #747C25", +"A. c #E4E3E5", +"S. c #DDDDE3", +"D. c #1F1FF5", +"F. c blue", +"G. c #3636F9", +"H. c #E9EAE3", +"J. c #F2EBF1", +"K. c #96BCAB", +"L. c #156845", +"P. c #E31742", +"I. c #6B249F", +"U. c #0D47B9", +"Y. c #11853A", +"T. c #0C3CD6", +"R. c #1D4F8E", +"E. c #518F21", +"W. c #E2E3E6", +"Q. c #DDDDE3", +"!. c #2520F7", +"~. c #3B3BF8", +"^. c #F2F1E5", +"/. c #FBFBE4", +"(. c #9E9BEE", +"). c #0000FC", +"_. c #0904FF", +"`. c #126E63", +"'. c #138234", +"]. c #2800FF", +"[. c #0F8A37", +"{. c #7E5C02", +"}. c #FF192C", +"|. c #E4E5E2", +" X c #DDDDE1", +".X c #2D912E", +"XX c #113FA3", +"oX c #0D05FF", +"OX c #383AF6", +"+X c #3A3BF8", +"@X c #201EFE", +"#X c #0A0CF5", +"$X c #008451", +"%X c #9E4D1D", +"&X c #C83B18", +"*X c #038B3D", +"=X c #0C42CC", +"-X c #7F1981", +";X c #FF2213", +":X c #E4E3E6", +">X c #DDDDE2", +",X c #25696E", +" , ", -"X % < 1 1 1 1 1 2 3 4 5 6 7 8 , ", -"X X 1 9 0 q w e r t y u ", -"X X 1 i p a s d f g h j k l ", -"X o 1 z x c v b n m M N B u ", -"X V C z Z A S D F G H J K L ", -"X P I U i Y T R E W Q ! ~ l ", -"^ / ( ) _ ` ' ] [ { } | ...X.o.", -"O.+.@.#.$.%.&.*.=.-.;.:.>.,.<.1.", -"2.3.4.5.6.7.8.9.0.q.w.e.r.t.y.u.", -"i.p.4.a.s.d.f.g.h.j.k.l.z.x.c.v.", -"O b.n.m.M.a.N.B.V.C.Z.A.S.D.F.G.", -"O H.J.4.K.4.L.P.I.U.Y.T.R.E.W.Q.", -"!.~.^./.(.)._.`.'.].[.{.}.|. X.X", -" XXu.oXoXoXoXG.OX+X@X#X.X$X%X " +" . X o O O O O + @ # $ % & * = ", +"- ; : > , < 1 2 3 4 5 6 7 8 9 0 ", +"q w e r t y u i p a s d f g h j ", +"k l z x c v b n m M N B V C Z A ", +"O , t c S D F G H J K L P I U Y ", +"T R E W Q ! ~ ^ / ( ) _ ` ' ] [ ", +"{ } | ...X.o.O.+.@.#.$.%.&.*.=.", +"-.;.:.>.,.<.1.2.3.4.5.6.7.8.9.0.", +"q.w.e.r.t.y.u.i.p.a.s.d.f.g.h.j.", +"k.l.z.x.c.v.b.n.m.M.N.B.V.C.Z.A.", +"S.D.F.G.H.J.K.L.P.I.U.Y.T.R.E.W.", +"Q.!.F.~.^./.(.)._.`.'.].[.{.}.|.", +" X.XXXoXOX+X@X#X$X%X&X*X=X-X;X:X", +">X,X c #196B65", -", c #267168", -"< c #2A7268", -"1 c #2C7264", -"2 c #2A677E", -"3 c #296779", -"4 c #3F7876", -"5 c #347078", -"6 c #54755E", -"7 c #58776F", -"8 c #FF0000", -"9 c #FF0804", -"0 c #FF070C", -"q c #FB0A0A", -"w c #FF1E0A", -"e c #FF0E12", -"r c #FE0E18", -"t c #FF1013", -"y c #FF1A13", -"u c #F41B1C", -"i c #FA1519", -"p c #D3290E", -"a c #CF2D15", -"s c #DF2E1F", -"d c #EA2B14", -"f c #EF3316", -"g c #E03B13", -"h c #EA1C2C", -"j c #F41920", -"k c #E11F37", -"l c #CE3722", -"z c #D72D3E", -"x c #D6372B", -"c c #E32D23", -"v c #FF2C24", -"b c #F52029", -"n c #FD2E2E", -"m c #F12C2D", -"M c #FF3024", -"N c #FB322D", -"B c #E32334", -"V c #E22139", -"C c #FB2F31", -"Z c #FA3031", -"A c #FB393D", -"S c #BB421D", -"D c #B54724", -"F c #B64D25", -"G c #BD4E2C", -"H c #A05425", -"J c #BC4834", -"K c #A35F30", -"L c #B35A3D", -"P c #BE215B", -"I c #A51E7A", -"U c #B72768", -"Y c #B7286B", -"T c #BA346F", -"R c #B83075", -"E c #CF1F4C", -"W c #D22249", -"Q c #D12653", -"! c #E22943", -"~ c #906E47", -"^ c #837547", -"/ c #967F4D", -"( c #896E5B", -") c #C64B4B", -"_ c #D75A49", -"` c #D85948", -"' c #C64459", -"] c #D74A6A", -"[ c #018300", -"{ c #028C00", -"} c #098C00", -"| c #00870D", -" . c #0A830B", -".. c #008C0A", -"X. c #039102", -"o. c #039209", -"O. c #0C930B", -"+. c #119202", -"@. c #139308", -"#. c #0F8413", -"$. c #108710", -"%. c #198116", -"&. c #1B851C", -"*. c #1C8B1C", -"=. c #0C9214", -"-. c #009119", -";. c #21910C", -":. c #21871F", -">. c #38831F", -",. c #22921C", -"<. c #1A8720", -"1. c #1D822F", -"2. c #1A9229", -"3. c #228A22", -"4. c #3A8120", -"5. c #308F2B", -"6. c #3A8A28", -"7. c #22902F", -"8. c #33942F", -"9. c #319A2F", -"0. c #218437", -"q. c #2D883F", -"w. c #2F9230", -"e. c #2F9930", -"r. c #329630", -"t. c #329E39", -"y. c #4E8938", -"u. c #508331", -"i. c #178D41", -"p. c #288449", -"a. c #218C42", -"s. c #38855A", -"d. c #4B824F", -"f. c #459B43", -"g. c #499A46", -"h. c #5C9649", -"j. c #4A965B", -"k. c #45A142", -"l. c #57A655", -"z. c #84864C", -"x. c #203FB6", -"c. c #7F269E", -"v. c #7039AA", -"b. c #6925B3", -"n. c #6332BC", -"m. c #234E9F", -"M. c #24529C", -"N. c #28579D", -"B. c #1F6782", -"V. c #286783", -"C. c #356989", -"Z. c #2757A2", -"A. c #2C59A3", -"S. c #325DA6", -"D. c #2548B3", -"F. c #284BB7", -"G. c #2949B7", -"H. c #2955BB", -"J. c #3F56B2", -"K. c #3D63A7", -"L. c #505A99", -"P. c #7D488F", -"I. c #456E9F", -"U. c #46709D", -"Y. c #446AA5", -"T. c #263BCD", -"R. c #2736D2", -"E. c #2238D0", -"W. c #0101FE", -"Q. c #0C04FE", -"!. c #010CFF", -"~. c #0C0BFF", -"^. c #1005FF", -"/. c #120DFF", -"(. c #1B0BFF", -"). c #0314FF", -"_. c #0914FF", -"`. c #1412FC", -"'. c #111DFF", -"]. c #1E1DFA", -"[. c #191BF4", -"{. c #2C1BEB", -"}. c #271FFE", -"|. c #1A27E2", -" X c #1E28F7", -".X c #1D28FF", -"XX c #212AE6", -"oX c #2221EE", -"OX c #3B2AE8", -"+X c #2729F6", -"@X c #2C2CF7", -"#X c #2722FA", -"$X c #222BFF", -"%X c #2D2DFC", -"&X c #2C37FF", -"*X c #3131FA", -"=X c #3239FF", -"-X c #3F39FE", -";X c #3636F4", -":X c #3938E9", -">X c #4B16DA", -",X c #5131D3", -" c #326F7A", +", c #517A71", +"< c #FF0000", +"1 c #FE090A", +"2 c #FF1F0C", +"3 c #FF0F17", +"4 c #FF1013", +"5 c #FF1B15", +"6 c #F51D1D", +"7 c #FB161B", +"8 c #D32D14", +"9 c #EB2C16", +"0 c #E93918", +"q c #EB1D2E", +"w c #F51A22", +"e c #D4392A", +"r c #E32F24", +"t c #FF2C25", +"y c #FA292E", +"u c #FF3327", +"i c #E3223B", +"p c #E72933", +"a c #F32E31", +"s c #FB3132", +"d c #FC3A3F", +"f c #BD441F", +"g c #BB512D", +"h c #BF4B37", +"j c #B14F27", +"k c #A56234", +"l c #BF235E", +"z c #A51F7B", +"x c #B92A6D", +"c c #A7207D", +"v c #BC3576", +"b c #D3234C", +"n c #D82F41", +"m c #D22857", +"M c #E32B46", +"N c #B65D42", +"B c #86784C", +"V c #93724C", +"C c #8D7260", +"Z c #C94E4F", +"A c #DA5C4C", +"S c #C9475E", +"D c #D94C6D", +"F c #018200", +"G c #028C00", +"H c #0B830C", +"J c #008B0A", +"K c #058A07", +"L c #059307", +"P c #139407", +"I c #1D8C1E", +"U c #168616", +"Y c #099317", +"T c #22930E", +"R c #23931D", +"E c #1B8921", +"W c #1E8620", +"Q c #1E8332", +"! c #1C942C", +"~ c #238B23", +"^ c #3B8422", +"/ c #3C8C2B", +"( c #229620", +") c #32922F", +"_ c #228639", +"` c #249232", +"' c #329531", +"] c #319A30", +"[ c #339F3B", +"{ c #528939", +"} c #198F44", +"| c #298A47", +" . c #3B885E", +".. c #499D49", +"X. c #529254", +"o. c #49A348", +"O. c #59A859", +"+. c #988151", +"@. c #86894F", +"#. c #723CAD", +"$. c #6535BF", +"%. c #6B27B6", +"&. c #22539A", +"*. c #2B6983", +"=. c #256883", +"-. c #376C8D", +";. c #224FA0", +":. c #2A5BA4", +">. c #2753A2", +",. c #274AB6", +"<. c #294ABA", +"1. c #2B58BE", +"2. c #3057A5", +"3. c #3460AB", +"4. c #535D9D", +"5. c #7F4B94", +"6. c #4259B6", +"7. c #446AAB", +"8. c #4973A3", +"9. c #293BD2", +"0. c #233AD3", +"q. c #0101FE", +"w. c #0B02FF", +"e. c #010DFF", +"r. c #0E0AFE", +"t. c #130EFF", +"y. c #1609FF", +"u. c #0A14FF", +"i. c #0315FF", +"p. c #1719FC", +"a. c #2D1CED", +"s. c #1D29FF", +"d. c #1B28E4", +"f. c #2327EB", +"g. c #2323F1", +"h. c #2823FE", +"j. c #222CFC", +"k. c #2E2EFC", +"l. c #2020FB", +"z. c #2E39FF", +"x. c #3537FC", +"c. c #3C34ED", +"v. c #4C18DC", +"b. c #5333D7", +"n. c #403AFF", +"m. c #3D47DA", +"M. c #4A4AEF", +"N. c #4A4AF6", +"B. c #6363F4", +"V. c #6B6BF3", +"C. c #9D368E", +"Z. c #A6368C", +"A. c #8128A2", +"S. c #8639A7", +"D. c #984C96", +"F. c #9348A0", +"G. c #9851B1", +"H. c #854FC3", +"J. c #638DA0", +"K. c #9CBF9C", +"L. c #97C397", +"P. c #A3C7A6", +"I. c #B1CCB7", +"U. c #9C9CEE", +"Y. c #B8B9EB", +"T. c #A9A7F0", +"R. c #DCDCDC", +"E. c #D5D5D5", +"W. c #DDE2DD", +"Q. c #E4E4DF", +"!. c #D8D8E8", +"~. c #C8C8E9", +"^. c #DFE4E4", +"/. c #E5E5E5", +"(. c #E8E7E7", +"). c #ECECE6", +"_. c #E7E7E8", +"`. c #E9E5E9", +"'. c #E7ECEC", +"]. c #E9E9E9", +"[. c #E7E8E7", +"{. c #F1EDED", +"}. c #F4F4E4", +"|. c #FFFFE3", +" X c #F3ECF3", /* pixels */ -"NXNXVXVXVXVXZXVXNXVXVXNXVXVXGXVXVXVXZXVXZXVXNXNXNXZXMXNXNXVXNXNX", -"NXNXcXnXcXcXMXcXcXcXcXMXMXcXcXcXcXcXMXcXcXvXmXmXnXBXMXcXNXnXNXNX", -"NXnXxXcXcXcXcXcXcXcXcXzXcXcXcXcXcXcXcXzXNXpX%.2.L i m y.#.g.VXNX", -"VXcXcXZXbXVXVXNXVXVXVXNXNXNXNXNXNXNXNXNXUXiX ..D 8 e $ r.KXbX", -"DXcXcXNXbXNXNXNXNXNXNXNXNXNXNXNXNXNXNXvXIXaXo i.J 8 t 4.. r.KXVX", -"VXcXcXNXNXNXNXNXNXNXNXNXNXNXNXNXNXbXNXBXKXjXW._.Y 8 r 4.. r.AXNX", -"VXcXzXVXNXNXNXNXNXNXNXNXNXNXNXNXKXIXKXKXLXjXW.!.Y 8 e >.[ e.AXNX", -"ZXcXcXVXNXNXNXNXNXNXNXNXNXNXNXNXdXsXfXkXgX7XW.W.qXP R ^ @ z.VXNX", -"VXcXcXVXNXNXNXNXNXNXNXNXNXNXNXbX&. - Q.W.W.W.W.W.W._.V 8 C DXNX", -"NXMXcXVXNXNXNXNXNXNXNXNXNXbXVXMX,.{ p.~.W.W.W.W.W.W._.B 8 C VXNX", -"ZXcXcXNXNXNXNXNXmXNXNXNXNXNXNXMXK.M.G.Q.W.T.3 B.P.I 0X~ + / DXNX", -"VXcXcXNXNXNXNXNXNXNXNXNXNXNXVXBX].W.W.W.W.N.} o.F 8 t >.[ e.AXNX", -"NXMXzXZXNXNXNXNXNXNXNXNXNXmXNXbX#XW.^.~.Q.A.[ | F 8 y 6.[ t.AXNX", -"VXcXcXNXNXNXNXNXNXNXNXNXNXbXVXMXs.% = = = 1.. { L.>X,X) p _ DXbX", -"VXcXcXVXNXNXNXNXNXNXNXNXNXNXVXMX*.[ [ [ [ . { D.W._.k 8 C DXNX", -"ZXcXzXNXMXNXNXNXNXNXNXNXNXMXNXcX*. .&.&.*.&.;.J.(.+XB 8 Z DXNX", -"VXMX:X/.3XVXBXbXNXNXVXbXSXl.$.3. .[ * }._.wXw u u j j q 8 Z DXbX", -"VXbXoXW.;XJXHXNXNXNXNXMXIXf. [ [ [ = ^.W.9X8 8 8 8 8 8 8 Z DXNX", -"NXbXoXW.@XlXhXCXNXNXNXNXIXf. .$ # 6 ~.W.v.g l z E W x a _ DXNX", -"NXbXoXW.W.W.W.5XJXBXNXbXSXf. :.b 8 Q !.W.Z.X.o.H.W.'.a.[ t.AXbX", -"VXbXoXW.W.~.W.5XJXBXbXMXSXk.[ ,.u 8 W !.W.N.{ { D.W./.0.[ e.KXNX", -"NXbXoXW.W.Q.W.2XJXBXNXNXKXuX; C.8XI eXA.m.U.2 2 I.m.S.^ + / AXNX", -"NXbXoXW.W.W.W.2XHXnXBXnXGX4XW.Q.!.W.E.+.{ 2 W.W., { =.c 8 Z DXNX", -"VXbXoXW.W.W.W.6XPXHXJXHXPX1XW.W.Q.W.R.O.X.V.W.Q., { =.s 8 Z DXmX", -"VXnX4 & C.^.W.@X6X2X5X2X6X].W.`.5 > 7 G S ( : 1 Y.x.H.B 8 Z DXbX", -"VXvX3.[ 0./.W.W.W.W.W.W.W.W.W.[.*.[ $ 0 8 H ..} D.W._.B 8 C DXNX", -"VXnX5.{ q./.W.W.~.W.W.W.W._.!. X7...u.y 9 K -.@.F.W._.! 8 A DXNX", -"NXbX =.D.c C.V + +.]./.", +"(./.R.[./.(./._././.(.[./././.^.p.q.q.q.q.:.G L j < 4 ^ F ' './.", +"(.Q.R.(._._.(./.(././.(./._.[./.h.w.r.r.w.2.F J j < 5 / G [ ].(.", +"/.Q.R._./././././._.[./././././. .% & & & _ . G 4.v.b.Z 8 A [.`.", +"[.R.R.[././._._.(././.(._./.[./.I F F F . . . G ,.q.u.i < s '.(.", +"[./.R././._./././.[.[././././.W.E H E I I W T 6.y.k.i < s [./.", +"[.Q.c.r.N.)./././.[././. XO.U ~ H F | h.u.S.2 6 6 w w 1 < s [./.", +"[./.g.q.x.}.).)././.[./. Xo. F F F & w.q.#.< < < < < 1 < s '.(.", +"[.Q.f.q.k.~.Y.!.[./././. Xo. H $ @ , w.q.#.0 e n b b e 8 A [./.", +"_.Q.g.q.q.w.q.B.}./././. X.. ~ y < b i.q.:.L L 1.q.p.} K [ './.", +"_.Q.g.q.q.e.q.B.}./././. Xo.F R 6 < b e.q.>.G G ,.q.t._ F ] ]./.", +"_.Q.g.q.q.w.q.B.}./././.).J.= -.C.z D.:.>.8.*.*.8.>.3.B + +.].(.", +"[.Q.g.q.q.q.q.B.}.!.^.^.).M.q.w.q.q.0.P G *.q.q.: G Y r < s ]._.", +"_.Q.g.q.q.q.q.V.|.}.}.}.|.M.q.w.w.q.9.P G *.q.w.: G Y r < s ]./.", +"/./., - -.r.q.k.V.B.B.B.V.p.q.p.> - , g f C ; : 7.,.1.p < s [.(.", +"/./.~ F Q u.q.q.q.q.q.q.q.q.q.p.~ F $ 1 < j K L ,.q.e.i < s './.", +"(.Q.) F | t.q.q.r.q.q.q.q.u.e.j.` K { 5 1 k Y P <.q.u.M < d '.(.", +"(./.m.d.f.q.q.q.q.q.q.q.e.v q i r 9 S c.a.F.9 0 $.q.t.X.T X.]./.", +"_.W.g.q.w.q.q.q.q.q.q.q.e.b < < < < b e.q.A.< < %.q.t._ / ].(.", +"_./.M.k.x.k.k.k.k.k.k.k.z.D t s s t D x.j.G.u u H.s.n.X.~ O.`.(.", +"/./.[.).).).).).).).).[.).'.].'.'.'.'.).].).'.'.[.).].].].].(./.", +"(././._._././._._./._._./././.(./././._./././.(./._./.(.(././.(." }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 163 2 ", +"48 48 164 2 ", " c #007600", ". c #007C00", -"X c #FF0000", -"o c #FF140B", -"O c #FF1314", -"+ c #F71917", -"@ c #FF1B14", -"# c #FF1719", -"$ c #F71C1A", -"% c #FE1B1B", -"& c #ED231C", -"* c #F0201B", -"= c #FA201F", -"- c #F61E23", -"; c #EA2222", -": c #EE2C26", -"> c #EF222D", -", c #F62324", -"< c #F92121", -"1 c #F1252D", -"2 c #FF352C", -"3 c #EA3A3B", -"4 c #FE3434", -"5 c #F63E36", -"6 c #F83A34", -"7 c #F7363A", -"8 c #FD3738", -"9 c #F53B3C", -"0 c #FD3B3B", -"q c #EE443B", -"w c #F34335", -"e c #EF3F43", -"r c #F13842", -"t c #DC4843", -"y c #EE4146", -"u c #E74947", -"i c #E7464C", -"p c #EC4049", -"a c #FC524E", -"s c #F75655", -"d c #FC5051", -"f c #F15B57", -"g c #F2575C", -"h c #038103", -"j c #168E0E", -"k c #188D0E", -"l c #0B8A11", -"z c #158C13", -"x c #1A8C14", -"c c #1E831D", -"v c #148E1A", -"b c #1C8C1B", -"n c #20871A", -"m c #208B1C", -"M c #2C8A1E", -"N c #1F8B23", -"B c #1D8A28", -"V c #258724", -"C c #238D23", -"Z c #2D8A23", -"A c #258A2C", -"S c #328926", -"D c #279025", -"F c #289127", -"G c #2D9C2B", -"H c #369D27", -"J c #359A2D", -"K c #2C9B34", -"L c #3D9337", -"P c #339A31", -"I c #3B9A34", -"U c #36933A", -"Y c #3D933D", -"T c #3B9A3B", -"R c #439733", -"E c #409933", -"W c #47973E", -"Q c #4B963D", -"! c #419B3F", -"~ c #3F9942", -"^ c #419743", -"/ c #4B9544", -"( c #439946", -") c #489D45", -"_ c #45934C", -"` c #4F934A", -"' c #489C48", -"] c #559F54", -"[ c #4AA84F", -"{ c #50A849", -"} c #4CA750", -"| c #52A752", -" . c #5BA555", -".. c #67B167", -"X. c #0101FF", -"o. c #0A0AFD", -"O. c #0E16FF", -"+. c #1E1DF7", -"@. c #1515FD", -"#. c #1916FD", -"$. c #171CFF", -"%. c #1B1BFC", -"&. c #241FF3", -"*. c #201FFB", -"=. c #1F21F4", -"-. c #1E20FB", -";. c #2828E7", -":. c #2627E9", -">. c #2E24EF", -",. c #262BEE", -"<. c #292CEC", -"1. c #3227ED", -"2. c #3228ED", -"3. c #3C38E8", -"4. c #2325F4", -"5. c #2C25F2", -"6. c #2629F1", -"7. c #2B2CF4", -"8. c #2222F9", -"9. c #2F37FA", -"0. c #3333F5", -"q. c #3C3BF5", -"w. c #3635FE", -"e. c #3936FA", -"r. c #3B3BFD", -"t. c #473FEC", -"y. c #483BED", -"u. c #3E40EE", -"i. c #3D41F0", -"p. c #4446DC", -"a. c #4140E3", -"s. c #4D41E7", -"d. c #454BE5", -"f. c #4D49E1", -"g. c #4244EB", -"h. c #5546E2", -"j. c #5555E8", -"k. c #595CEF", -"l. c #4645F3", -"z. c #4C50FD", -"x. c #5B56F3", -"c. c #5253F9", -"v. c #C5C3BF", -"b. c #CBCBC4", -"n. c #CFCDC8", -"m. c #D0CECA", -"M. c #D3D1CD", -"N. c #DBD9CB", -"B. c #CECCD8", -"V. c #D0CED7", -"C. c #D5D3D6", -"Z. c #DAD6D3", -"A. c #D2D9D4", -"S. c #DCDAD5", -"D. c #DFDDD8", -"F. c #E0DED4", -"G. c #E1DDDA", -"H. c #E3E2D6", -"J. c #E7E4DB", -"K. c #E8E6D8", -"L. c #DFE6E1", -"P. c #E7E1E0", -"I. c #E8E2E2", +"X c #FE0000", +"o c #FF150D", +"O c #FF1415", +"+ c #FF1C15", +"@ c #FF1519", +"# c #FE1B1C", +"$ c #EF251F", +"% c #FD201D", +"& c #F2221E", +"* c #FC1E23", +"= c #EC2424", +"- c #EF2B27", +"; c #EF242F", +": c #EF2F2A", +"> c #F62326", +", c #FA2425", +"< c #F42926", +"1 c #F82827", +"2 c #F2252F", +"3 c #F02E29", +"4 c #EF302A", +"5 c #FF392E", +"6 c #F22730", +"7 c #FF3634", +"8 c #FE3538", +"9 c #F63F3F", +"0 c #FD3C3C", +"q c #FC3E36", +"w c #F4453B", +"e c #F9413C", +"r c #ED3D40", +"t c #F63D44", +"y c #DF4C48", +"u c #EF4943", +"i c #EF434E", +"p c #EA4C4C", +"a c #F2434A", +"s c #EA4A51", +"d c #FE5353", +"f c #F85857", +"g c #F85759", +"h c #F35E5A", +"j c #F45960", +"k c #038103", +"l c #158F0F", +"z c #0C8B13", +"x c #178D15", +"c c #1B8E14", +"v c #158E1B", +"b c #1C8D1B", +"n c #16911D", +"m c #1F901C", +"M c #218C1D", +"N c #21901E", +"B c #1D8D22", +"V c #1F8C2B", +"C c #208620", +"Z c #248D25", +"A c #2C8B24", +"S c #258C2B", +"D c #2B8C2A", +"F c #308B26", +"G c #328C29", +"H c #259025", +"J c #299229", +"K c #2F9F2F", +"L c #359B2E", +"P c #278B30", +"I c #298E31", +"U c #2B9E37", +"Y c #359C34", +"T c #3A9E34", +"R c #3C963E", +"E c #319E3A", +"W c #3C9C3B", +"Q c #38A02B", +"! c #40973B", +"~ c #439B39", +"^ c #439C37", +"/ c #4D9447", +"( c #419C43", +") c #4C9A42", +"_ c #449B4A", +"` c #4D9A4B", +"' c #529A47", +"] c #52974E", +"[ c #489450", +"{ c #479A52", +"} c #519750", +"| c #4CA14D", +" . c #51A94B", +".. c #4DA952", +"X. c #57A157", +"o. c #53A955", +"O. c #5CA858", +"+. c #68B368", +"@. c #0101FF", +"#. c #0A0AFE", +"$. c #0E17FF", +"%. c #1515FE", +"&. c #1917FF", +"*. c #1419FF", +"=. c #1B1BFD", +"-. c #201EFE", +";. c #1F22F6", +":. c #1E21FE", +">. c #252AEF", +",. c #292AEC", +"<. c #3429EF", +"1. c #2B30EF", +"2. c #3E3BEB", +"3. c #2224F5", +"4. c #2C26F4", +"5. c #262AF5", +"6. c #292DF2", +"7. c #2222FC", +"8. c #2A2AFA", +"9. c #3229F2", +"0. c #2B30F0", +"q. c #3C3EF6", +"w. c #3535FD", +"e. c #3833FF", +"r. c #313AFD", +"t. c #3C3BFD", +"y. c #4B3EF0", +"u. c #413CFB", +"i. c #3C40F8", +"p. c #474AE1", +"a. c #4245EB", +"s. c #4F44EC", +"d. c #464AEF", +"f. c #484FEA", +"g. c #504CE6", +"h. c #5247EC", +"j. c #5849E8", +"k. c #5757EB", +"l. c #4244F4", +"z. c #4943F1", +"x. c #4349F0", +"c. c #4140FB", +"v. c #4948F8", +"b. c #4E52FF", +"n. c #5C5CF4", +"m. c #5355FC", +"M. c #CECECE", +"N. c #D7D8D7", +"B. c #DBDBDB", +"V. c #D4D6D4", +"C. c #E5E5DC", +"Z. c #DEDEE7", +"A. c #D7D7E8", +"S. c #DCE5E5", +"D. c #E6E6E6", +"F. c #E8E7E7", +"G. c #E7E8E7", +"H. c #E9E9E6", +"J. c #E6E6E8", +"K. c #E8E7E8", +"L. c #E9E9E9", +"P. c #F1F1E8", +"I. c #F1EDF1", +"U. c #E8F1F1", /* pixels */ -"S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.", -"S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.", -"S.S.S.S.D.D.D.S.D.D.S.D.S.D.S.D.S.D.D.S.S.D.D.S.S.D.D.S.S.D.D.D.S.S.S.S.S.S.S.D.S.S.S.S.S.S.S.S.", -"S.S.S.S.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.Z.Z.Z.C.C.Z.A.A.Z.Z.S.Z.S.S.S.S.", -"S.S.D.M.v.m.n.n.m.b.m.m.n.n.n.n.m.m.n.n.n.b.n.n.b.m.m.b.b.m.m.b.L V c / 3 ; ; t U V V ] G.S.S.S.", -"S.Z.D.M.m.G.D.D.D.S.D.D.D.D.D.D.D.D.D.D.D.D.D.D.H.D.D.D.D.D.D.S.b . . S % X X : v . T P.Z.S.S.", -"S.S.D.M.n.D.S.Z.S.S.Z.S.S.Z.S.Z.S.S.Z.S.S.S.S.S.S.S.S.S.Z.S.S.A.b . . Z % X X : v . . T P.Z.S.S.", -"S.S.D.M.n.D.Z.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.Z.D.N.J k k R % X X : v . . T I.Z.S.S.", -"S.S.D.M.n.D.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.C.u.:.,.f.@ X X : v h . T J.S.S.S.", -"S.S.D.M.m.D.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.D.C.%.X.X.5.@ X X : v . . T I.Z.S.S.", -"S.S.S.M.b.H.Z.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.C.+.X.X.1.@ X X : v . . T I.Z.S.S.", -"S.Z.D.M.b.D.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.D.D.D.D.F.F.H.S.#.X.X.5.2 @ O q K v l [ I.Z.S.S.", -"S.S.D.M.n.D.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.' F F ' l.4.7.7.o.X.X.o.1.1.&.h.5 ; * f L.Z.Z.S.", -"S.S.S.M.n.D.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.C . C *.X.X.X.X.X.X.X.X.X.X.1.@ X X 0 L.Z.D.Z.", -"S.S.D.M.n.D.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.C . . C *.X.o.X.X.X.X.X.X.X.X.1.@ X X 0 L.Z.S.S.", -"S.S.D.M.n.D.Z.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.Z.I x x T *.X.X.o.*.%.%.%.-.%.O.t.2 % O d L.S.S.S.", -"S.S.D.M.n.D.Z.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.u.+.6.4.o.X.X.4.T C N / r , - u T V n .J.S.S.S.", -"S.S.S.M.n.D.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.8.X.X.X.X.X.X.6.b . . Z % X X : v . . T I.Z.S.S.", -"S.S.D.M.n.D.S.S.S.S.S.S.S.S.S.S.S.S.Z.S.S.S.S.S.8.X.X.X.X.X.X.4.b h h S % X X : v . T I.Z.S.S.", -"S.S.S.M.n.D.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.q.#.8.*.+.8.#.u.b . h Z 8 % @ q K b z | J.Z.S.S.", -"S.S.D.M.n.D.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.~ b C C C C C C h h . A q.&.*.s.4 , + s L.Z.S.S.", -"S.S.D.M.n.D.Z.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.C . h h . h h . h h h A %.X.X.1.@ X X 0 L.Z.S.S.", -"S.S.D.M.n.D.Z.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.C . h h . h . h . . . A %.X.X.1.@ X X 0 L.Z.S.S.", -"S.S.S.M.n.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.C . h h C N C N M C b ^ e.*.+.t.@ X X 0 L.Z.S.S.", -"S.S.D.N.3.%.-.0.C.S.S.S.S.S.S.S.S.S.S.S.! b C C h h . C q.+.#.g.5 % < < < < < < X X X 0 L.Z.S.S.", -"S.S.S.N.;.X.X.@.C.S.S.S.S.S.S.S.S.S.S.S.C . h h h h . C 8.X.X.5.% X X X X X X X X X X 0 L.Z.S.S.", -"S.S.S.N.;.X.X.@.A.D.Z.S.S.S.S.S.S.S.S.D.C . h h . . . C *.X.X.5.= X X X X X X X X o X 0 L.Z.S.S.", -"S.S.S.N.;.X.X.@.V.S.Z.Z.S.S.S.S.S.S.S.D.D . h h C D m ^ *.X.X.5.0 $ , , , , , , , , + s L.Z.S.S.", -"S.S.D.N.;.X.X.X.+.8.%.0.C.S.S.S.S.S.S.D.C . . C 9 % % 9 +.X.X.4.I b x ~ e.%.%.u.J b z | P.Z.A.S.", -"S.S.S.N.;.X.X.X.X.X.X.#.C.D.S.S.S.S.Z.S.F . . C $ X X , -.X.X.6.b . . A #.X.X.,.x . . T J.S.D.S.", -"S.S.S.N.;.X.X.X.X.X.X.%.C.S.S.S.S.S.D.S.C . . C < X X , -.X.X.4.b . h A %.X.X.<.x . T I.Z.S.S.", -"S.S.S.N.;.X.X.X.X.X.X.%.C.S.Z.S.S.S.Z.D.^ N N ^ e , , y u.=.=.g.T N N _ q.4.8.d.R C n .I.Z.S.S.", -"S.S.S.N.;.X.X.X.X.X.X.#.M.S.Z.S.S.S.S.S.q.@.*.%.%.-.@.q.I x x Y e.#.#.q.I x z Q 4 % O d L.S.S.S.", -"S.S.S.N.;.X.X.X.X.X.X.#.C.D.S.Z.S.S.S.S.4.X.X.X.X.X.X.4.m . . A %.X.X.<.x . . S # X X 0 L.Z.S.S.", -"S.S.S.N.;.X.X.X.X.X.X.%.C.H.D.S.D.D.S.H.4.X.o.X.X.X.X.4.m . . A +.X.X.6.x . . S # X X 0 L.Z.S.S.", -"S.S.S.Z.p.8.,.6.o.X.X.@.B.C.C.C.M.C.C.M.8.X.X.o.6.<.=.g.W C M / u.=.4.d.Y A B ` # X X 0 L.N.S.S.", -"S.S.S.C.L x x H <.X.X.X.#.#.#.+.#.%.#.#.X.X.X.8.I k z I 4 # # 5 P x k Y w.#.@.y.@ X X 0 L.Z.S.S.", -"S.S.D.Z.V . x <.X.X.X.X.X.X.X.X.X.X.X.X.X.X.8.C . . M $ X X , b . . A %.X.X.1.@ X X 0 L.Z.S.S.", -"S.S.S.Z.V . . x <.X.X.X.X.X.X.X.X.X.X.X.X.X.X.8.C . . C < X X , b . . A %.X.X.2.@ X X 0 P.Z.S.S.", -"S.S.S.Z._ A A ~ <.X.X.X.X.X.X.X.X.X.X.o.2.2.5.s.Q Z Z / p 1 1 i W Z Z ` %.X.X.2.w : & f L.Z.S.S.", -"S.S.G.N.3.@.%.#.o.X.X.X.X.X.X.X.X.X.X.-.6 o @ @ # # O 7 9.O.O.q.2 # O r $.X.X.<.G l l [ P.Z.S.S.", -"S.S.S.N.:.X.X.X.X.X.X.X.o.X.X.X.X.o.X.-., X X X X X X , +.X.X.5.% X X 1 -.X.X.<.x . T P.Z.S.S.", -"S.S.C.N.:.X.X.X.X.X.X.X.X.X.X.X.X.X.X.-., X X X X X X , -.X.X.4.% X X 1 $.X.X.<.x . T I.Z.S.S.", -"S.S.D.N.j.w.i.r.r.r.r.r.r.r.r.r.r.r.w.c.s 4 0 0 0 0 4 s c.w.w.x.a 0 4 g z.w.w.k.{ T P ..J.Z.S.S.", -"S.S.S.S.H.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.L.L.L.L.L.L.L.L.K.K.K.K.L.P.L.L.H.K.K.K.P.P.I.P.S.S.S.S.", -"S.S.S.S.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.S.C.Z.Z.Z.Z.Z.S.Z.Z.S.Z.Z.Z.Z.Z.Z.S.Z.N.Z.Z.S.Z.Z.A.S.Z.Z.Z.S.S.S.S.", -"S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.", -"S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S." +"D.D.D.D.G.D.D.G.D.D.D.D.D.D.F.J.D.D.D.J.F.D.J.D.D.D.D.D.D.D.D.D.D.D.F.D.D.D.D.D.D.D.D.D.D.D.D.D.", +"D.D.D.D.D.D.D.D.G.F.G.D.D.D.F.L.D.D.D.D.L.L.D.D.D.D.D.D.G.D.D.D.D.D.D.D.D.D.D.D.D.D.G.D.D.D.G.D.", +"D.D.D.D.L.J.L.L.L.L.L.L.F.F.L.L.L.J.L.L.L.L.L.L.L.J.F.G.L.J.L.L.D.D.D.L.L.D.D.G.D.F.G.D.D.D.G.D.", +"D.D.D.G.Z.C.B.B.Z.B.B.B.B.C.B.B.B.C.B.B.B.B.B.B.B.C.Z.B.B.C.B.B.Z.D.D.Z.D.S.S.S.Z.F.Z.D.D.D.D.D.", +"D.D.G.Z.M.B.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.R A C / r = = y ! A C X.L.D.D.D.", +"D.D.G.B.N.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.G.L.L.L.D.b . . G # X X : v . R I.D.D.D.", +"D.D.L.C.N.G.G.D.D.D.D.D.D.D.D.D.J.D.D.D.F.D.D.D.D.D.D.D.D.D.F.Z.b . G * X X 4 b k . W I.D.D.G.", +"D.D.L.B.N.L.D.G.D.D.D.D.F.D.G.D.J.J.D.D.J.D.D.D.D.G.D.D.D.D.D.D.L c l ~ # X X : v . . W I.D.D.D.", +"D.D.L.B.N.L.D.D.D.D.D.D.G.D.D.D.G.D.D.G.D.D.D.D.D.D.D.D.D.D.D.D.a.>.5.g.+ X X : n k . W I.D.D.D.", +"G.D.L.B.N.L.D.F.J.D.D.D.D.D.D.D.D.D.D.D.D.D.G.D.D.G.D.D.G.D.G.Z.=.@.@.4.% X X 4 n . . W I.D.D.G.", +"D.D.L.B.N.L.D.D.D.D.D.D.D.D.D.L.D.D.D.D.G.D.D.D.D.D.D.D.D.D.D.Z.:.@.@.9.+ X X 4 v . . R I.D.D.D.", +"D.J.L.C.N.L.D.D.D.D.D.G.D.D.D.D.G.D.D.G.D.D.D.D.L.L.L.L.H.F.P.G.=.@.@.9.5 + O w U v x ..L.D.D.D.", +"J.D.L.B.B.L.D.D.D.L.D.D.D.D.D.D.D.D.G.D.D.G.D.D.` J J | v.8.9.8.@.@.@.#.<.<.-.j.w < & h U.D.D.D.", +"D.D.L.B.N.L.D.D.D.D.D.D.D.G.D.D.D.D.D.D.D.D.L.D.Z . . S -.@.@.@.@.@.@.@.@.@.@.9.+ X X 0 L.D.D.D.", +"D.D.L.B.B.L.L.D.D.D.D.D.D.D.D.D.D.D.G.D.D.D.G.D.Z . . Z 7.@.@.@.@.@.@.@.@.@.@.<.+ X X 0 U.D.D.G.", +"D.D.L.B.N.L.D.D.D.D.D.G.D.D.G.D.G.D.D.D.D.D.D.D.W c c ( 7.@.@.#.-.-.=.7.=.:.*.z.7 # O d U.D.D.D.", +"D.D.P.B.N.L.D.D.D.D.D.D.G.D.D.G.D.D.D.D.D.D.D.D.z.3.5.5.#.@.@.5.( Z B ` t > * p W D M O.L.D.G.D.", +"D.D.D.Z.N.L.D.D.D.G.D.G.D.D.D.D.D.D.D.G.D.D.G.D.7.@.@.@.@.@.@.5.N . . D # X X 3 v . W I.D.D.D.", +"D.D.L.B.N.L.D.D.D.G.D.D.D.D.D.D.G.D.D.D.D.G.G.D.7.@.@.@.@.@.@.5.N . . G # X X 3 v . W I.D.D.D.", +"G.D.L.B.N.L.D.D.D.D.D.D.G.D.D.G.D.D.D.D.D.D.D.D.q.=.7.-.7.7.&.l.m . k J 0 # # u E b x o.L.D.D.D.", +"D.D.L.B.N.L.D.D.D.D.D.D.G.D.D.D.D.D.D.D.D.D.D.D.( B J H S H H Z k k . I u.-.-.h.0 > # f U.D.D.D.", +"D.D.L.B.N.L.D.D.D.G.G.D.D.D.D.D.D.D.D.G.D.D.D.D.Z . . . . . . . k k k D =.@.@.<.+ X X 0 U.D.D.D.", +"D.D.L.C.N.L.D.D.D.D.D.D.D.D.D.D.D.D.D.D.G.D.D.G.H . k k . . k . . . D -.@.@.9.+ X X 0 U.D.D.D.", +"D.D.D.Z.N.G.D.D.D.G.D.D.D.D.G.D.G.D.D.D.D.D.D.D.H . k k H Z H H Z Z b _ q.-.=.h.+ X X 0 U.D.D.D.", +"D.D.L.C.a.=.-.w.Z.H.D.D.D.D.D.D.D.D.D.D.( b H H k k . H c.=.:.z.q # , , , , , , X X X 0 U.D.D.D.", +"D.D.F.C.,.@.@.&.Z.D.D.D.D.D.D.D.G.D.D.G.D . . . k k . D 7.@.@.4.% X X X X X X X X X X 9 U.D.D.D.", +"D.D.F.C.,.@.@.%.Z.H.D.D.D.D.D.D.D.D.D.G.J . k k . . . Z 7.@.@.4.% X X X X X X X X X X q U.D.D.D.", +"D.D.F.C.,.@.@.%.A.D.D.D.D.D.D.D.D.D.G.G.J . k k H H M _ -.@.@.4.e % < 1 , > > > 1 1 @ f U.D.D.D.", +"D.D.D.C.,.@.@.@.=.7.=.w.Z.G.D.D.D.D.D.L.J . k H 9 # # a :.@.@.5.W b b _ t.=.=.d.T m v o.I.D.D.D.", +"D.D.G.C.,.@.@.@.@.@.@.=.Z.G.D.D.D.G.D.L.J . . H , X X > 7.@.@.5.M . . P =.@.@.>.m . . W I.D.D.D.", +"D.D.D.C.,.@.@.@.@.@.@.=.Z.H.D.D.G.D.D.L.D . . Z , X X > :.@.@.5.b . . D =.@.@.>.c . W I.D.D.D.", +"G.D.D.C.,.@.@.@.@.@.@.=.Z.H.D.D.D.D.D.D._ C Z _ a > > a l.3.3.x.( V Z { i.3.7.f.~ A M O.L.D.D.D.", +"D.D.G.C.,.@.@.@.@.@.@.=.Z.D.D.D.D.D.D.G.c.&.-.=.:.:.*.i.W c c ( e.=.&.l.L b c ~ 8 # @ d U.D.D.D.", +"D.D.G.C.,.@.@.@.@.@.@.%.Z.D.D.D.D.D.D.D.7.@.@.@.@.@.@.7.M . . D -.@.@.6.b . . G # X X 0 U.D.D.D.", +"D.D.G.C.,.@.@.@.@.@.@.=.Z.H.D.H.H.D.H.H.5.@.@.@.@.@.@.5.Z . . S =.@.@.6.b . . G * X X 0 L.D.D.D.", +"D.D.G.C.p.3.6.6.#.@.@.=.A.D.Z.Z.Z.Z.Z.Z.8.@.@.#.6.6.3.d.~ A A ` l.3.3.f.( S V ] @ X X 0 U.D.D.D.", +"D.D.D.Z.! c c L 1.@.@.@.=.=.%.=.=.%.=.=.#.@.@.7.W c x ~ 8 @ @ 9 T c c ( e.&.%.y.+ X X 0 U.D.D.D.", +"D.D.D.D.F . c 1.@.@.@.@.@.@.@.@.@.@.@.@.@.@.7.Z . . Z , X X < B . . P =.@.@.<.+ X X 0 U.D.D.D.", +"G.D.G.D.D . c 1.@.@.@.@.@.@.@.@.@.@.@.@.@.@.7.Z . . A # X X < b . . I -.@.@.<.+ X X 0 U.D.D.D.", +"D.D.G.Z.[ P P ( >.@.@.@.@.@.@.@.@.@.@.#.<.<.4.s.) A F ' i ; 2 s ) A A } =.@.@.<.w - - h L.D.D.D.", +"D.D.J.C.y.%.=.=.@.@.@.@.@.@.@.@.@.@.@.7.q o + + @ # O t r.$.$.q.7 @ @ t =.@.@.0.K v z ..L.D.D.D.", +"D.D.J.C.,.@.@.@.@.@.@.@.@.#.@.@.@.@.@.7.1 X X X X X X > 7.@.@.4.% X X 6 :.@.@.1.c . W I.D.D.G.", +"D.D.D.C.,.@.@.@.@.@.@.@.@.@.@.@.@.@.@.7.> X X X X X X > :.@.@.4.# X X 6 =.@.@.1.c R I.D.D.D.", +"D.D.D.C.k.w.t.t.u.t.t.t.t.t.t.t.t.t.w.m.g 7 t 0 0 t 7 g m.w.w.n.d 0 7 j b.w.w.n. .W Y +.L.D.D.D.", +"D.D.D.D.H.P.P.P.P.P.P.L.P.P.P.P.P.P.P.H.U.L.U.U.U.U.U.U.P.P.P.L.U.U.U.U.L.P.P.P.I.L.I.I.L.D.D.D.", +"D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.C.D.D.D.D.D.D.D.D.D.D.D.G.", +"D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.G.G.D.D.D.D.D.D.D.D.D.D.D.D.D.D.G.D.D.D.D.L.D.D.D.G.D.D.", +"D.D.D.J.D.G.D.D.D.D.D.D.D.D.D.D.D.D.G.D.D.D.D.D.D.D.D.D.D.J.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D." }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/samegame.sav sgt-puzzles-20160429.b31155b/icons/samegame.sav --- sgt-puzzles-20140928.r10274/icons/samegame.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/samegame.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,34 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :9:Same Game +PARAMS :9:10x10c3s2 +CPARAMS :9:10x10c3s2 +SEED :15:785412408200083 +DESC :199:1,1,3,1,2,2,1,2,3,2,2,2,3,3,2,1,1,1,3,2,3,3,2,3,1,3,2,1,1,3,1,2,2,2,3,2,3,2,3,2,1,3,1,2,1,2,3,2,1,3,2,3,1,1,3,3,1,3,3,3,1,1,3,2,2,1,1,2,1,2,2,2,3,1,3,2,2,1,2,3,3,1,2,3,1,3,3,2,1,3,3,1,3,1,2,2,1,3,1,2 +NSTATES :2:26 +STATEPOS:2:13 +MOVE :6:M94,95 +MOVE :6:M83,84 +MOVE :9:M83,93,94 +MOVE :6:M93,94 +MOVE :6:M20,21 +MOVE :15:M20,21,22,31,32 +MOVE :6:M70,71 +MOVE :6:M80,90 +MOVE :9:M73,82,83 +MOVE :18:M72,73,74,82,83,92 +MOVE :12:M51,61,62,72 +MOVE :9:M35,36,46 +MOVE :12:M49,57,58,59 +MOVE :6:M59,69 +MOVE :9:M69,79,89 +MOVE :12:M78,79,89,99 +MOVE :24:M45,46,47,54,55,57,64,67 +MOVE :36:M36,46,55,56,57,66,67,68,77,78,88,98 +MOVE :9:M76,77,87 +MOVE :6:M97,98 +MOVE :6:M94,95 +MOVE :45:M50,60,61,70,71,81,82,83,84,85,90,91,92,93,94 +MOVE :12:M73,81,82,83 +MOVE :6:M92,93 +MOVE :9:M81,90,91 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/samegame-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/samegame-web.png differ diff -Nru sgt-puzzles-20140928.r10274/icons/screenshot.sh sgt-puzzles-20160429.b31155b/icons/screenshot.sh --- sgt-puzzles-20140928.r10274/icons/screenshot.sh 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/screenshot.sh 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,25 @@ +#!/bin/sh + +# Generate a screenshot from a puzzle save file. Takes the +# following arguments, in order: +# +# - the name of the puzzle binary +# - the name of the save file +# - the name of the output image file +# - (optionally) the proportion of the next move to redo before +# taking the screenshot. +# +# This script requires access to an X server in order to run, but +# seems to work fine under xvfb-run if you haven't got a real one +# available (or if you don't want to use it for some reason). + +binary="$1" +save="$2" +image="$3" +if test "x$4" != "x"; then + redo="--redo $4" +else + redo= +fi + +"$binary" $redo --screenshot "$image" --load "$save" Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/signpost-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/signpost-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/signpost-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/signpost-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/signpost-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/signpost-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/signpost-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/signpost-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/signpost-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/signpost-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/signpost-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/signpost-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/signpost-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/signpost-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/signpost-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/signpost-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/signpost-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/signpost-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/signpost-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/signpost-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/signpost-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/signpost-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/signpost-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/signpost-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/signpost.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/signpost.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/signpost-icon.c sgt-puzzles-20160429.b31155b/icons/signpost-icon.c --- sgt-puzzles-20140928.r10274/icons/signpost-icon.c 2014-09-29 00:33:47.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/signpost-icon.c 2016-04-29 00:31:43.000000000 +0000 @@ -1,402 +1,638 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 160 2 ", -" c #A4A29E", -". c #A19F9A", -"X c #A2A099", -"o c #A09D99", -"O c #9F9D99", -"+ c #9F9D98", -"@ c #A09E99", -"# c #A19F9B", -"$ c #A2A09C", -"% c #A19E9A", -"& c #D0CFCD", -"* c #D7D6E4", -"= c #E0E0E1", -"- c #E4E3E2", -"; c #E3E2E1", -": c #E6E5E4", -"> c #DAD9D7", -", c #D2D1D0", -"< c #D5D5D4", -"1 c #E1E1E0", -"2 c #E7E7E6", -"3 c #D1CFCD", -"4 c #9E9C99", -"5 c #E7E7E2", -"6 c #DCDCFF", -"7 c #F3F3FD", -"8 c gray100", -"9 c #FEFEFE", -"0 c #EFEFEE", -"q c #D7D7D7", -"w c #F3F3F3", -"e c #FDFDFD", -"r c #E3E3E2", -"t c #E4E4E1", -"y c #DADAFF", -"u c #EEEEFB", -"i c #FFFFFE", -"p c #E8E8E7", -"a c #DADADA", -"s c gray96", -"d c #FCFBFB", -"f c #E2E2E0", -"g c #E3E2E2", -"h c #FCFCFD", -"j c #EEEEEE", -"k c #EDEDEE", -"l c #F2F2F1", -"z c #EDECEC", -"x c #F8F8F8", -"c c #FDFDFE", -"v c #E5E4E3", -"b c #E3E3E1", -"n c #D0D0D0", -"m c #CACACA", -"M c #F0F0EF", -"N c #EEEEED", -"B c #EBEAEB", -"V c #CBCBCB", -"C c gray77", -"Z c #DCDBDA", -"A c gray98", -"S c gray75", -"D c #BCBCBC", -"F c #E4E4E3", -"G c #F1F1F0", -"H c #E6E7E7", -"J c #C5C6C6", -"K c #C1C1C2", -"L c #DBDAD9", -"P c #A09E9A", -"I c #D9D8D7", -"U c gray97", -"Y c #F3F3F2", -"T c #DFDFDE", -"R c #E7E6E5", -"E c #EEEEEC", -"W c #F6F6F4", -"Q c #EDEDEC", -"! c #EAEAE9", -"~ c #DDDDDA", -"^ c #D6D5D3", -"/ c #DEDEDD", -"( c #E5E5E4", -") c #F1F0F0", -"_ c #F5F5F4", -"` c #997FC9", -"' c #9375CF", -"] c #987AD3", -"[ c #9477CF", -"{ c #9578CE", -"} c #9677D6", -"| c #9984C0", -" . c #A5A49B", -".. c #9E9C98", -"X. c #E6E6E5", -"o. c #E0E1E1", -"O. c gray88", -"+. c #8C70C6", -"@. c #7F5EC4", -"#. c #8464C8", -"$. c #8A68D0", -"%. c #8665CA", -"&. c #926BE3", -"*. c #977ECA", -"=. c #A5A59A", -"-. c #DFDEDD", -";. c #D5D5D6", -":. c #F1F1F1", -">. c #9074C8", -",. c #8C6BCE", -"<. c #8E6CD3", -"1. c #8E6DD2", -"2. c #946FE1", -"3. c #987FC7", -"4. c #A5A59B", -"5. c gray95", -"6. c #F6F6F7", -"7. c #9779D2", -"8. c #946FDF", -"9. c #9471DC", -"0. c #9773E1", -"q. c #8566C5", -"w. c #8664CE", -"e. c #9B81CD", -"r. c #A4A49A", -"t. c gray99", -"y. c #CECECE", -"u. c #AAAAAA", -"i. c #987BD2", -"p. c #916EDB", -"a. c #9371DA", -"s. c #9270D8", -"d. c #7057A6", -"f. c #7557B3", -"g. c #9880C8", -"h. c gray78", -"j. c #D9D9DA", -"k. c #E5E5E3", -"l. c #9778D6", -"z. c #906AE0", -"x. c #936EE0", -"c. c #8C68D6", -"v. c #684EA1", -"b. c #6B4DAC", -"n. c #957BC7", -"m. c #A6A59B", -"M. c #E0E0DF", -"N. c #DAD9D8", -"B. c #D9D8D5", -"V. c #9A85C1", -"C. c #987ECA", -"Z. c #987FC8", -"A. c #9B81CC", -"S. c #927BBF", -"D. c #937AC5", -"F. c #9E8BBF", -"G. c #A4A39B", -"H. c #9E9C97", -"J. c #A6A69D", -"K. c #A6A69C", +"16 16 227 2 ", +" c #A4A4A4", +". c gray63", +"X c #A1A19F", +"o c #9F9F9F", +"O c #9F9F9F", +"+ c #9F9F9F", +"@ c #9F9F9F", +"# c #A0A0A0", +"$ c gray63", +"% c #A2A2A2", +"& c #9F9F9F", +"* c #9F9F9F", +"= c #9F9F9F", +"- c #9F9F9F", +"; c gray63", +": c #A4A4A4", +"> c gray63", +", c #CECED0", +"< c #DCDCE6", +"1 c #E2E2E2", +"2 c gray89", +"3 c #E2E2E2", +"4 c gray90", +"5 c gray85", +"6 c gray83", +"7 c #DADADA", +"8 c #E2E2E2", +"9 c gray89", +"0 c #E2E2E2", +"q c #E7E7E7", +"w c #D0D0D0", +"e c #A1A1A0", +"r c #9F9F9F", +"t c #E3E3E4", +"y c #DEDEFF", +"u c #F9F9FE", +"i c white", +"p c #FEFEFE", +"a c gray94", +"s c #ECECEC", +"d c #D2D2D2", +"f c #F4F4F4", +"g c #FDFDFD", +"h c gray89", +"j c #9F9F9F", +"k c #9F9F9F", +"l c #E1E1E2", +"z c #D7D7FE", +"x c #EFEFFB", +"c c #FFFFFD", +"v c #FDFDFD", +"b c #EEEEEE", +"n c gray90", +"m c #D7D7D7", +"M c gray95", +"N c #FEFEFE", +"B c #FBFBFB", +"V c #E1E1E1", +"C c #9F9F9F", +"Z c #9F9F9F", +"A c #E2E2E3", +"S c #FBFBFC", +"D c #EEEEEE", +"F c gray93", +"G c gray95", +"H c #ECECEC", +"J c #FEFEFE", +"K c #F8F8F8", +"L c #FDFDFD", +"P c gray90", +"I c #9F9F9F", +"U c #9F9F9F", +"Y c #E3E3E2", +"T c gray99", +"R c #D0D0D0", +"E c #CACACA", +"W c #EFEFEF", +"Q c #EEEEEE", +"! c white", +"~ c #EAEAEA", +"^ c #CACACA", +"/ c #C3C3C4", +"( c gray86", +") c gray63", +"_ c #9F9F9F", +"` c gray89", +"' c #F9F9F9", +"] c gray75", +"[ c #BBBBBB", +"{ c gray89", +"} c #F1F1F1", +"| c #E6E6E6", +" . c #C5C5C5", +".. c #C1C1C0", +"X. c #DADADA", +"o. c gray63", +"O. c #A0A0A0", +"+. c gray85", +"@. c gray97", +"#. c #EEEEEE", +"$. c gray95", +"%. c gray88", +"&. c gray87", +"*. c #E6E6E6", +"=. c #E1E1E1", +"-. c #F3F3F2", +";. c #EDEEED", +":. c gray96", +">. c #ECECEC", +",. c #E9E9E8", +"<. c #DDDDDC", +"1. c #9F9F9F", +"2. c gray63", +"3. c #D5D5D5", +"4. c gray88", +"5. c #E9E9E9", +"6. c #EFEFEF", +"7. c gray94", +"8. c #F4F4F4", +"9. c #E1E1E1", +"0. c #9880CA", +"q. c #9275CF", +"w. c #967AD2", +"e. c #9377CF", +"r. c #9378CE", +"t. c #9678D6", +"y. c #9985C2", +"u. c #A5A7A2", +"i. c #9F9F9F", +"p. c gray89", +"a. c gray86", +"s. c gray93", +"d. c #FEFDFE", +"f. c #F2F1F2", +"g. c #886DC0", +"h. c #795ABC", +"j. c #8565CA", +"k. c #8766CD", +"l. c #8061C2", +"z. c #916BE1", +"x. c #977ECB", +"c. c #A5A7A1", +"v. c gray63", +"b. c #DADADA", +"n. c #D8D8D8", +"m. c #F4F4F4", +"M. c #FEFEFE", +"N. c gray94", +"B. c #8D73C5", +"V. c #8766CC", +"C. c #8D6DD1", +"Z. c #8C6CD1", +"A. c #896ACB", +"S. c #936FE0", +"D. c #9780C9", +"F. c #A5A7A1", +"G. c #9F9F9F", +"H. c gray89", +"J. c #FDFDFD", +"K. c #FDFDFD", +"L. c #F1F1F1", +"P. c gray96", +"I. c #EDEDEC", +"U. c #967AD3", +"Y. c #936FDF", +"T. c #9371DB", +"R. c #9673E0", +"E. c #8566C5", +"W. c #8564CD", +"Q. c #9B82CE", +"!. c #A4A6A0", +"~. c #E2E2E2", +"^. c #FBFBFB", +"/. c #CDCDCE", +"(. c #AAAAAA", +"). c #E2E2E2", +"_. c #977CD2", +"`. c #906EDA", +"'. c #9271D9", +"]. c #916FD7", +"[. c #7057A5", +"{. c #7457B2", +"}. c #9880C9", +"|. c #A5A7A1", +" X c #9F9F9F", +".X c gray89", +"XX c gray97", +"oX c #C6C6C6", +"OX c #D8D8D8", +"+X c #E5E5E4", +"@X c #9678D6", +"#X c #8F6ADF", +"$X c #926EDF", +"%X c #8B68D4", +"&X c #684EA0", +"*X c #6B4DAB", +"=X c #947BC8", +"-X c #A6A8A2", +";X c gray63", +":X c #E7E7E7", +">X c gray89", +",X c gray88", +" , < 1 - ; 2 3 % ", -"4 5 6 7 8 9 8 0 0 q w 8 e 8 r O ", -"O t y u i e 8 0 p a s 8 d 8 f O ", -"O g 8 h 8 j k l z 8 i 8 x c v + ", -"O b 8 e 8 n m M N 8 8 B V C Z % ", -"O r 8 8 A S D F G 8 8 H J K L # ", -"P I U 0 Y 1 T R f Y E W Q ! ~ O ", -". ^ / ( M ) _ f ` ' ] [ { } | .", -"..X.o.O.8 e 8 G +.@.#.$.%.&.*.=.", -"P -.;.:.8 9 8 M >.$.,.<.1.2.3.4.", -"O r 8 9 9 5.6.E 7.8.9.0.q.w.e.r.", -"O ; 8 t.8 y.u.b i.p.a.s.d.f.g.4.", -"O r 8 8 U h.j.k.l.z.x.c.v.b.n.m.", -"% 3 2 b M.N.! B.V.C.Z.A.S.D.F.G.", -" % + O @ # H.P .=.4.r.J.K.G. " +" . X o O + @ # $ % & * = - ; : ", +"> , < 1 2 3 4 5 6 7 8 9 0 q w e ", +"r t y u i p i a s d f i g i h j ", +"k l z x c v i b n m M N B i V C ", +"Z A i S i D F G H i J i K L P I ", +"U Y i T i R E W Q i ! ~ ^ / ( ) ", +"_ ` i i ' ] [ { } i i | ...X.o.", +"O.+.@.#.$.%.&.*.=.-.;.:.>.,.<.1.", +"2.3.4.5.6.7.8.9.0.q.w.e.r.t.y.u.", +"i.p.a.s.i d.i f.g.h.j.k.l.z.x.c.", +"v.b.n.m.i M.i N.B.V.C.Z.A.S.D.F.", +"G.H.i J.K.L.P.I.U.Y.T.R.E.W.Q.!.", +"= ~.i ^.i /.(.)._.`.'.].[.{.}.|.", +" X.Xi i XXoXOX+X@X#X$X%X&X*X=X-X", +";Xw :X>X,X c #906ED6", -", c #926EDD", -"< c #9371DB", -"1 c #936DE1", -"2 c #956EE8", -"3 c #9672E2", -"4 c #9874E2", -"5 c #9D9B97", -"6 c #A19E9A", -"7 c #A5A39D", -"8 c #9E90AF", -"9 c #9582B7", -"0 c #9C8CB7", -"q c #9D8DB9", -"w c #A197AA", -"e c #A6A4A0", -"r c #ACACAC", -"t c #B3B2AF", -"y c #B3B3B3", -"u c #BEBEBD", -"i c #C2C0BA", -"p c #B1B1F6", -"a c #B8B8F8", -"s c #C1C1C1", -"d c #CBCAC7", -"f c #CCCBC9", -"g c #D1CFCB", -"h c #D1D1CC", -"j c LightGray", -"k c #D7D7D9", -"l c #DEDDDC", -"z c #E0DFDE", -"x c #E3E4DF", -"c c #C7C7F9", -"v c #D4D4F9", -"b c #DCDCFC", -"n c #E5E5E3", -"m c #E7E8E1", -"M c #EAECE4", -"N c #EBEBEC", -"B c #EFEEF0", -"V c #E2E3FD", -"C c #EBEBFB", -"Z c #F4F4F4", -"A c #F3F3FD", -"S c #FEFEFE", +"32 32 238 2 ", +" c #614A91", +". c #634C92", +"X c #634C93", +"o c #644C95", +"O c #644C96", +"+ c #654D97", +"@ c #654D98", +"# c #664E98", +"$ c #674F9B", +"% c #6C52A1", +"& c #6D53A3", +"* c #6E54A4", +"= c #7055A7", +"- c #7257A9", +"; c #755BAE", +": c #7457B2", +"> c #755AB0", +", c #775CB1", +"< c #785BB3", +"1 c #785CB2", +"2 c #7B5FB7", +"3 c #7859BA", +"4 c #7E61BD", +"5 c #7F61BE", +"6 c #7D5EC0", +"7 c #8062BE", +"8 c #8163C0", +"9 c #8263C2", +"0 c #8160C7", +"q c #8365C5", +"w c #8567C5", +"e c #8566C6", +"r c #8567C6", +"t c #8566C7", +"y c #8568C5", +"u c #8667C9", +"i c #8563CD", +"p c #8A6ACD", +"a c #8A6ACE", +"s c #8B6ACF", +"d c #8F78C1", +"f c #9179C4", +"g c #9179C5", +"h c #927AC4", +"j c #927AC5", +"k c #927BC5", +"l c #9178C7", +"z c #937AC6", +"x c #937BC6", +"c c #937BC7", +"v c #9177C8", +"b c #9278C8", +"n c #8A68D1", +"m c #8C6BD1", +"M c #8C6CD2", +"N c #8D6CD3", +"B c #8C6AD6", +"V c #8E6ED4", +"C c #8F6BD9", +"Z c #8F6CD9", +"A c #906ED6", +"S c #906FD7", +"D c #916FD8", +"F c #916FD9", +"G c #906DDB", +"H c #906CDD", +"J c #916DDD", +"K c #926FDD", +"L c #906CDE", +"P c #916CDE", +"I c #926EDE", +"U c #936EDF", +"Y c #9170D8", +"T c #9170D9", +"R c #9271D8", +"E c #9270D9", +"W c #9271D9", +"Q c #9372D8", +"! c #9270DA", +"~ c #9271DA", +"^ c #9270DB", +"/ c MediumPurple", +"( c #9371DB", +") c #9371DC", +"_ c #9573DE", +"` c #9573DF", +"' c #9674DE", +"] c #8E67E1", +"[ c #916AE3", +"{ c #936FE0", +"} c #936EE1", +"| c #936EE2", +" . c #956EE7", +".. c #9570E2", +"X. c #9774E1", +"o. c #9D9D9D", +"O. c #9D9D9E", +"+. c gray62", +"@. c #9F9F9F", +"#. c #A09F9F", +"$. c #A5A79F", +"%. c #9583B9", +"&. c #9C8EBA", +"*. c #9C8EBB", +"=. c #9C8CBD", +"-. c #9C8DBD", +";. c #9D8EBC", +":. c #9E8FBD", +">. c #9E8FBE", +",. c #9D92B2", +"<. c #9D92B3", +"1. c #A19AAF", +"2. c #A0A0A0", +"3. c gray63", +"4. c #A5A7A0", +"5. c #A6A7A1", +"6. c #A5A5A3", +"7. c #A5A6A2", +"8. c #A5A7A2", +"9. c #A4A3A5", +"0. c #A4A4A4", +"q. c #A5A5A5", +"w. c gray65", +"e. c #A5A8A0", +"r. c gray66", +"t. c #A9A9A9", +"y. c #AAAAAA", +"u. c gray67", +"i. c #ACACAC", +"p. c gray68", +"a. c #AEAEAE", +"s. c #AFAFAF", +"d. c gray69", +"f. c #B1B1B1", +"g. c gray70", +"h. c #B4B4B4", +"j. c #B5B5B4", +"k. c gray71", +"l. c #B9B9B9", +"z. c #BCBCBC", +"x. c gray", +"c. c gray75", +"v. c #C1C1BE", +"b. c #BFBFF7", +"n. c #BBBBF8", +"m. c #C0C0C0", +"M. c #C1C1C1", +"N. c #C3C3C3", +"B. c #C8C8C8", +"V. c gray79", +"C. c #CACACA", +"Z. c #CACACB", +"A. c #CBCBCB", +"S. c #CCCCCA", +"D. c #CCCCCB", +"F. c #CDCDCB", +"G. c #CFCFCA", +"H. c #CECECB", +"J. c #CBCBCC", +"K. c gray80", +"L. c #CDCDCD", +"P. c #CDCECE", +"I. c #CECECE", +"U. c gray81", +"Y. c #D0D1CD", +"T. c #D0D0D0", +"R. c #D2D2D2", +"E. c LightGray", +"W. c gray83", +"Q. c #D6D5D6", +"!. c #D7D7D7", +"~. c #D8D8D8", +"^. c #DADADA", +"/. c gray86", +"(. c gainsboro", +"). c #DDDDDD", +"_. c gray87", +"`. c #DFDFDF", +"'. c #E2E3DE", +"]. c #C4C4F6", +"[. c #C4C4F8", +"{. c #C6C6F9", +"}. c #CACAF8", +"|. c #DBDBFB", +" X c #DCDCF9", +".X c gray88", +"XX c #E1E1E1", +"oX c #E2E2E2", +"OX c #E2E2E3", +"+X c gray89", +"@X c #E4E6E0", +"#X c #E5E7E1", +"$X c #E6E7E2", +"%X c #E4E4E4", +"&X c gray90", +"*X c #E6E6E6", +"=X c #E7E7E7", +"-X c #E6E8E1", +";X c #E6E8E2", +":X c #E9EAE5", +">X c #E9EBE5", +",X c #EAEBE5", +"11<1,31<1q7e", -"e5dSSlySSSSSSSSx-:##4=<>O><<,077", -"e5dSSshSSSSSSSSm;@%$&X&3+<<<,077", -"e5fSyyZSSSSSSSSm-%#%>+,>O:<<1077", -"e5fSklnSSSSSSSSx;1<<<<<,<<<<1077", -"e5dSSSSSSSSSSSSn-<<<<<<<<=:<,q77", -"e5fSSSSSSSNMNnSm;1<<<<,<: o<,077", -"e5dSSSSSSSlrtrBM-1><,<<4: o<3q7e", -"e5fSSSSSSSSurrBM;<<<<<,&%.o&=q77", -"e5dSSSSSSAsrurBM;,<<<<<<<3+ .&1077", -"75fSSSSSSSBSSSSm-111<,1,1@*11q77", -"e7tfsddfddffddfu80qqqqq0qq00q877", -"77665555655555667777777777777777", -"677eeeeeee7ee77777777777e7e67777" +"0.0.0.0.0.0.0.r.0.0.0.$.e.r.0.0.0.0.r.0.0.0.0.0.r.0.3.0.0.0.0.0.", +"0.0.3.@.2.@.@.@.@.@.1.o.@.@.@.3.3.@.@.@.@.@.@.@.@.@.@.@.@.3.0.0.", +"0.3.k.L.H.H.A.A.A.A.A.A.A.B.H.z.z.L.R.L.A.A.A.A.A.A.A.A.L.k.3.0.", +"0.@.L.mXeXsXmXmXmXmXmXmXmXmXmX).oXmX2XiXmXmXmXmXmXmXmXmXmXA.@.r.", +"0.o.A.mX].b.mXkXfXkXkXfXkXfXmX).oX4XL.k.0XmXfXfXfXfXmXfXmXA.@.0.", +"0.@.A.mXwX].mXmXmXmXmXmXmXmXmX.XoXmXQ.z.iXmXmXmXmXmXmXfXmXA.@.0.", +"0.@.A.mX Xn.hXmXmXfXfXmXmXfXmX).).iX0Xl.oXmXmXkXmXmXmXfXmXA.@.0.", +"0.@.L.hX}.]. XmXmXmXmXmXmXmXmXoXoXoXA.R.fXmXmXmXmXmXmXkXmXL.3.0.", +"0.@.A.mXmXmXkXkXmXmXmXmXmXmXmX).).mXmXmXmXmXmXmXfXmXmXkXmXA.@.0.", +"r.@.A.mXfXmXmXmXmXkXmXB.z.uXmX).oXmXfXfXmXmXfXmXmX2XoXmXmXA.@.0.", +"0.@.A.mXhXmXmXmXmXmXmXz.i.yXmXoX).mXmXmXfXmXmXmXmX2Xi.&XmXA.@.0.", +"0.@.A.mXfXmXkXmXmXaXgXz.i.0XmX).oXmXfXmXmXmXiXz.z.z.f.f.2XL.@.0.", +"0.2.A.mXhXmXmXkXmX~.f.h.f.f.L.).).mXmXmXfXmXyXi.f.i.k.r.).L.@.0.", +"0.@.A.mXkXkXkXmXkXmXR.i.i.c.mXoX).mXfXmXmXmXfXyXiXoXr.R.mXA.@.0.", +"r.@.A.mXkXmXmXmXmXmXmX~.A.kXmX).oXmXmXmXmXmXmXmXmX2XQ.mXmXA.@.0.", +"0.3.z.+X).).).'.).'.`..X).`.oXJ.G.>X@X'.;X@X@X@X@X'.;X@X>Xv.#.0.", +"0.@.z.&X&X&XoX).oX).).).'.).+XY.%.l l c l l h z z z l k l ,.5.9.", +"0.@.L.mXQ.).fXmXmXmXmXmXmXmXmX;Xb .F B ..} ) F F I I ) [ ;.e.9.", +"0.@.L.yX2Xm.L.mXfXmXhXmXmXfXmX'.l n ; 7 ) y ' s - B ( W I *.e.9.", +"0.@.A.mXiXA.yXmXkXmXmXkXmXmXmX;Xf : 1 5 e = u ) > M ) W H *.e.9.", +"r.@.L.yXi.A.0XmXmXmXmXkXmXkXmX;Xf 5 1 q A 5 W p = 9 W W H *.5.9.", +"0.@.L.iX~./.&XmXkXmXmXkXmXhXmX'.l I Y I W W ( F F ) ) W H ;.e.9.", +"0.@.A.mXmXmXmXmXmXmXmXmXmXmXmX@Xl I W W W ) F I F s M W I *.e.9.", +"0.@.A.mXfXmXfXmXkXmX&X&X2X&XmX;Xk ) W W W F W ) s o & F H *.e.9.", +"0.3.A.mXfXmXkXmXmXmX/.i.f.r.8X>Xl I W W F W W ..N o * ' } *.$.0.", +"0.@.A.mXmXmXkXmXmXmXfXz.f.f.0X>Xl I W I ) W Y u 9 @ & y i *.e.9.", +"0.@.A.mXfXmXmXmXmXiXN.r.z.i.0X>Xf F W W F W W < @ @ o 0 ;.5.9.", +"r.@.A.mXfXkXfXfXmX+Xr.m.mXQ.5X>Xl I W W W W W ' 2 . @ y ..*.e.9.", +"0.@.A.mXmXmXmXmXmXmX2XfXmXmXmX;Xl [ I I I H C [ .3 6 ..] ;.5.9.", +"0.3.k.L.A.A.A.A.A.A.U.L.A.A.L.v.,.;.*.*.*.*.;.*.*.>.>.*.;.1.5.9.", +"0.0.0.@.@.@.@.@.@.@.@.@.o.@.@.2.5.e.$.e.e.e.e.e.e.e.4.4.5.5.9.0.", +"0.0.0.0.0.0.0.0.r.0.0.0.0.0.0.0.9.9.9.9.9.9.9.9.9.9.9.9.9.0.0.0." }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 62 1 ", -" c #634B94", +"48 48 55 1 ", +" c #634C94", ". c #664E99", -"X c #69519E", -"o c #6D53A4", -"O c #7055A7", -"+ c #7156A9", -"@ c #7358AD", -"# c #775BB2", -"$ c #7A5DB6", -"% c #7C5EBA", -"& c #7E61BD", -"* c #9079BA", -"= c #8364C3", -"- c #8767C8", -"; c #8B6ACF", -": c #8F73C6", -"> c #9074C7", -", c #9275CA", -"< c #8E6CD4", -"1 c #916FD7", -"2 c #926FDC", -"3 c #9370DB", -"4 c #946FE0", -"5 c #9672E1", -"6 c #9874E3", -"7 c #9D9B96", -"8 c #9F9D99", -"9 c #A19F9B", -"0 c #A4A29E", -"q c #A29CA5", -"w c #A6A4A0", -"e c #ACA7A2", -"r c #ACA9A2", -"t c #ADACAA", -"y c #B0AEAA", -"u c #B3B1AE", -"i c #B2B2B2", -"p c #BCBAB7", -"a c #BBBBBA", -"s c #C3C2BF", -"d c #A7A7F5", -"f c #AAAAF6", -"g c #BDBDF8", -"h c #C6C5C1", -"j c #C7C8C1", -"k c #C9C9C2", -"l c #CBCBCA", -"z c #D0CFCD", -"x c #D4D3CE", -"c c #D3D3D3", -"v c #DDDDDD", -"b c #C1C1F7", -"n c #DCDCFB", -"m c #E4E4E3", -"M c #E8E7E6", -"N c #E9E8E7", -"B c #EBEBEB", -"V c #E5E5FA", -"C c #ECECFD", -"Z c #F3F3F3", -"A c #F3F3FC", -"S c #FEFEFE", +"X c #6E54A5", +"o c #7055A7", +"O c #7157AA", +"+ c #7459AE", +"@ c #775AB2", +"# c #7B5FB7", +"$ c #7C5FB9", +"% c #7E61BC", +"& c #8063BF", +"* c #8F7ABC", +"= c #8264C3", +"- c #8667C8", +"; c #8A6ACD", +": c #8F74C7", +"> c #8F75C8", +", c #9176CA", +"< c #8D6CD3", +"1 c #8F6CD8", +"2 c #906FD7", +"3 c #926FDC", +"4 c #9271DA", +"5 c #936EE2", +"6 c #9571E1", +"7 c #9875E2", +"8 c #9D9D9D", +"9 c #A29EAA", +"0 c #A4A4A4", +"q c #AAA9A7", +"w c #ADADAD", +"e c #B2B2B2", +"r c #BCBCBC", +"t c #AEAEF7", +"y c #B0B0F7", +"u c #BEBEF7", +"i c #BABAF8", +"p c #C4C4C3", +"a c #C7C8C4", +"s c #C9CAC6", +"d c #CDCDCD", +"f c #CFCFD0", +"g c #D0D0D0", +"h c gainsboro", +"j c #CFCFF8", +"k c #D4D4F7", +"l c #D5D5FA", +"z c #DFDFFB", +"x c #E4E4E4", +"c c #ECECEC", +"v c #E4E4FC", +"b c #E8E8FB", +"n c #F3F3F3", +"m c #F3F3FC", +"M c #FEFEFE", /* pixels */ -"000000000000000000000000009w00000000000000000000", -"0000000w0000000000000000000000900000000000000000", -"0000wwwwww0wwwwwwwwwwww00ww0wwwwwww0wwwwwww00000", -"000087777777777777777770977777787777777777700000", -"0009pczzxzzzzzzzzzzzzzxihcccxzzzlzzzzzzzzzlr0000", -"00w7zSSACSSSSSSSSSSSSSSsmSZBASSSSSSSSSSSSSSt8000", -"00w7zSVbdnSSSSSSSSSSSSSsNmhlilSSSSSSSSSSSSSt0000", -"00w7zSSAfnSSSSSSSSSSSSSamSSShaSSSSSSSSSSSSSt8w00", -"00w7zSSCfnSSSSSSSSSSSSSsmSBaiNSSSSSSSSSSSSSt9000", -"00w7zSSAfnSSSSSSSSSSSSSsmSSZahSSSSSSSSSSSSSt9w00", -"00w7zSSCdnSSSSSSSSSSSSSsMAZSaaSSSSSSSSSSSSSt9w00", -"00w7lSVgggnSSSSSSSSSSSSsNBkhhBSSSSSSSSSSSSSt9000", -"00w7zSSSSSSSSSSSSSSSSSSsmSSSSSSSSSSSSSSSSSSt9000", -"00w7zSSSSSSSSSSSSSZSSSSsmSSSSSSSSSSSSSSSSSSt9000", -"00w7zSSSSSSSSSSSZitlSSSsmSSSSSSSSSSSSBcSSSSt9000", -"00w7zSSSSSSSSSSSBitlSSSsmSSSSSSSSSSSSBrxSSSt9000", -"00w7lSSSSSSSSSSSZiilSSSsmSSSSSSSSSBBAmitcSSt9000", -"00w7lSSSSSSSSSSSBiihSSSsmSSSSSSSSmtiuiiitcAt0000", -"0007zSSSSSSSSSliaiiiaiZhmSSSSSSSSmttttiitpZu9000", -"00w7zSSSSSSSSSSatiiitvShmSSSSSSSSBhhlhiiaZSt9000", -"00w7zSSSSSSSSSSSstiivSSamSSSSSSSSSSSSBtaZSSt7000", -"00w8zSSSSSSSSSSSAstvSSShmSSSSSSSSSSSSmiZSSSt0000", -"00w7zSSSSSSSSSSSSABSSSSsmSSSSSSSSSSSSAZSSSSt0000", -"0000usssssssssshshkhsshupjsjjhhhjjjksjkssjjw9000", -"0009hNMBBBmmmmmmmmmmmmBp*,,>>,::,:>:,>:,>,>q0000", -"00w7zSBvcBSSSSSSSSSSSSSj,543524443455242233q0000", -"0007zSlvctvSSSSSSSSSSSSj,45<%533333-;333331w0000", -"00w7zSSSAilSSSSSSSSSSSSj:2=%+35=333#$52233100000", -"00w7zSSSctcSSSSSSSSSSSSs,%&-@3=X&<6=$323333q9000", -"00w7zSSvihSSSSSSSSSSSSSs,$=;+3$X@<6=$613233q0000", -"00w7zSzwimZSSSSSSSSSSSSj,2%&$36$232$#<33233q0000", -"00w7zSczczvSSSSSSSSSSSSj:533533333333323333q0000", -"00w7zSSSSSSSSSSSSSSSSSSj>233133333323353333q0000", -"00w7zSSSSSSSSSSSSSSSSSSj>43333323233;==<331q0000", -"00w7zSSSSSSSSSSZZAZAZASj,43332333323% =523q0000", -"00w7lSSSSSSSSSSvtiiitmSs:23333233335% =533q0000", -"00w7zSSSSSSSSSSSviiitmSj>43333323336= =653q0000", -"00w7zSSSSSSSSSSSBiiitmSs,23333323<=;# $;=1q0000", -"00w7zSSSSSSSSSSBiiiiimSh>433231331o .... O1w0000", -"00w7zSSSSSSSSSmiitcvwmSs>4333333332O .X @2100000", -"00w7lSSSSSSSSSNitzSScmSh,23133333331O @323q0000", -"00w7zSSSSSSSSSSmxSSSSSSs>333313333333o+3323q0000", -"00w7zSSSSSSSSSSSSSSSSSSs>333333333333113333q0000", -"0000rttytttttttttttyttteqqqqqqqqqqqqqqq9qqq90000", -"000009999999809909998090000000000000000000000000", -"0000000w0w00000000000000000000000000000000000000", "000000000000000000000000000000000000000000000000", -"000000000000000000000000000000090000000000000000" +"000000000000000000000000000000000000000000000000", +"00000000q00000q00q00000000000q0000q00q00w0000000", +"000008888888888888888880088888888888888888800000", +"0000rgggggggggggggdggfgeagfdggggddggggggfffq0000", +"0008fMMMMMMMMMMMMMMMMMMpxMMMMMMMMMMMMMMMMMMw0000", +"0008fMkuimMMMMMMMMMMMMMpxMprpxMMMMMMMMMMMMMw0000", +"0008gMbltmMMMMMMMMMMMMMpxMxcreMMMMMMMMMMMMMw8000", +"0008gMMvymMMMMMMMMMMMMMpxMxpehMMMMMMMMMMMMMw0000", +"0008gMMvymMMMMMMMMMMMMMpxMMcapMMMMMMMMMMMMMw0000", +"00q8gMmktvMMMMMMMMMMMMMpxnxnawmMMMMMMMMMMMMw8000", +"0008fMjiiizMMMMMMMMMMMMrccrrrxMMMMMMMMMMMMMw0000", +"0008gMMMMMMMMMMMMMMMMMMpxMMMMMMMMMMMMMMMMMMw0000", +"00q8gMMMMMMMMMMMMnnMMMMpxMMMMMMMMMMMMMMMMMMw0000", +"0008gMMMMMMMMMMMneedMMMpxMMMMMMMMMMMMcgMMMMw8000", +"0008gMMMMMMMMMMMcwqdMMMaxMMMMMMMMMMMMcqgMMMw9000", +"0008gMMMMMMMMMMMnewdMMMpxMMMMMMMMmncnxewgMMw0000", +"0008gMnMMMMMMMMMcewaMmMaxMMMMMMMMxqeeeeewgMw0000", +"00q8gMMMMMMMMMdereeerecaxMMMMMMMMxqwqweeeene8000", +"0008gMMMMMMMMMnrweeewhMpxMMMMMMMMcaadpewenMw0000", +"0008gMMMMMMMMMMmpweehMMaxMMMMMMMMMMMMcwenMMw0000", +"00q8gMMMMMMMMMMMmrqhMMMrxMMMMMMMMMMMMxenMMMw0000", +"0008gMMMMMMMMMMMMmcMMMMpxMMMMMMMMMMMMnnMMMMw8000", +"0000epppppppppappaapppaeraaaaappaaaaasspaaaq0000", +"0000pcxxxxxxxxxxxxxxxxcr*,,>>>>>>>>,>>:>>>:90000", +"0008fMMmmMMMMMMMMMMMMMMa,63453545446633334490000", +"0008gMrrepMMMMMMMMMMMMMa,57-$44444<=;43444400000", +"0008gMcMx0cMMMMMMMMMMMMa,1%++74#4464444444444442444290000", +"0008gMMMMMMMMMMMMMMMMMMa,34444432441464444490000", +"0008gMMMMMMMMMMMMMMMMMMa>44423444444;%=<44490000", +"0008dMMMMMMMMMMnnnnnnmMa>34444434444# %73490000", +"00q8dMMMMMMMMMMhqeeeqxMa>34444244444% =44200000", +"00q8fMMMMMMMMMMMheeewxMa>32444244447% =74490000", +"0008fMMMMMMMMMMMceeewxMp>344444441=;# %<-190000", +"0008fMMMMMMMMMMceeeewxMa>544432444444444442o .. O1480000", +"0008gMMMMMMMMMcewfMMgxMa>34423344242X O44490000", +"00q8gMMMMMMMMMMxgMMMMMMa>323444344342XO243390000", +"0008dMMMMMMMMMMMMMMMMMMa>44424444243421444290000", +"0000wwwwwwwwwwwwwwwwwwwq999990909999909099000000", +"000009808000000800800080000000080000000000080000", +"000000000000000000000000000000000000000000000000", +"000000000000000000000000000000000000000000000000", +"000000000000000000000000000000000000000000000000" }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/signpost.sav sgt-puzzles-20160429.b31155b/icons/signpost.sav --- sgt-puzzles-20140928.r10274/icons/signpost.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/signpost.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,23 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :8:Signpost +PARAMS :4:4x4c +CPARAMS :4:4x4c +SEED :15:230468784719861 +DESC :19:1eceebecfbfhgcaa16a +NSTATES :2:15 +STATEPOS:2:11 +MOVE :8:L2,1-3,1 +MOVE :8:L0,1-1,0 +MOVE :8:L2,2-1,1 +MOVE :8:L1,2-0,3 +MOVE :8:L0,2-2,0 +MOVE :8:L1,3-1,2 +MOVE :8:L1,1-1,3 +MOVE :8:L1,0-3,0 +MOVE :8:L0,0-0,1 +MOVE :8:L3,0-3,2 +MOVE :8:L3,2-0,2 +MOVE :8:L3,1-2,2 +MOVE :8:L2,3-2,1 +MOVE :8:L2,0-2,3 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/signpost-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/signpost-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/singles-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/singles-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/singles-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/singles-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/singles-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/singles-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/singles-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/singles-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/singles-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/singles-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/singles-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/singles-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/singles-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/singles-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/singles-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/singles-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/singles-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/singles-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/singles-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/singles-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/singles-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/singles-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/singles-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/singles-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/singles.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/singles.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/singles-icon.c sgt-puzzles-20160429.b31155b/icons/singles-icon.c --- sgt-puzzles-20140928.r10274/icons/singles-icon.c 2014-09-29 00:33:47.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/singles-icon.c 2016-04-29 00:31:43.000000000 +0000 @@ -1,431 +1,886 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 155 2 ", -" c #AAA9A5", -". c #AFAEA9", -"X c #A3A29E", -"o c #ADACA8", -"O c #ACABA7", -"+ c #B3B2AE", -"@ c #ABAAA6", -"# c #AFAEAA", -"$ c #A9A8A4", -"% c #BBB9B5", -"& c #8E8D89", -"* c #8D8C89", -"= c #979692", -"- c #A2A09D", -"; c #323231", -": c #343332", -"> c #343432", -", c #31312F", -"< c #A8A6A2", -"1 c #999894", -"2 c #8D8C88", -"3 c #92918E", -"4 c #A6A5A1", -"5 c #7C7B78", -"6 c #B1AFAB", -"7 c #71706D", -"8 c #010101", -"9 c black", -"0 c gray1", -"q c #767572", -"w c #B7B5B1", -"e c #807F7C", -"r c #DEDCD6", -"t c #494846", -"y c #C3C2BD", -"u c #787774", -"i c #060606", -"p c #040404", -"a c #050504", -"s c #686764", -"d c #EBE9E4", -"f c #5E5D5B", -"g c #C3C1BC", -"h c #9E9D99", -"j c #999895", -"k c #AEADA9", -"l c #908F8C", -"z c #A9A7A3", -"x c #A8A7A3", -"c c #BDBBB6", -"v c #6D6C69", -"b c #020202", -"n c #B4B2AE", -"m c #94938F", -"M c #A7A6A2", -"N c #C1BFBB", -"B c #848380", -"V c #898885", -"C c #51504E", -"Z c #373735", -"A c #333231", -"S c #4D4D4B", -"D c #B0AEAA", -"F c #9A9995", -"G c #A19F9C", -"H c #93928E", -"J c #9C9A97", -"K c #94928F", -"L c #918F8C", -"P c #B2B1AD", -"I c #ACAAA6", -"U c #A4A29E", -"Y c #9F9E9A", -"T c #CAC8C3", -"R c #D5D3CE", -"E c #AAA8A4", -"W c #D4D2CD", -"Q c #CBC9C4", -"! c #A7A7A3", -"~ c #8C8B87", -"^ c #BEBCB8", -"/ c #424240", -"( c #C4C2BD", -") c #706F6D", -"_ c #ABA9A5", -"` c #9F9D99", -"' c #83827F", -"] c #BAB8B4", -"[ c #E1DFDA", -"{ c #73726F", -"} c #858481", -"| c #D6D4CF", -" . c #A5A4A0", -".. c #474644", -"X. c #BDBBB7", -"o. c #6F6E6C", -"O. c #B0AFAB", -"+. c #A5A39F", -"@. c #747370", -"#. c #BFBDB9", -"$. c #DAD7D2", -"%. c #434341", -"&. c #D2D0CB", -"*. c #A4A39F", -"=. c #999794", -"-. c #8E8D8A", -";. c #C1C0BB", -":. c #CFCDC9", -">. c #B8B7B2", -",. c #CECDC8", -"<. c #C7C5C1", -"1. c #30302F", -"2. c #262524", -"3. c #2E2E2D", -"4. c #898884", -"5. c #686765", -"6. c #A6A4A0", -"7. c #BFBEB9", -"8. c #333332", -"9. c gray2", -"0. c #454443", -"q. c #888784", -"w. c #989793", -"e. c #B8B6B2", -"r. c #B2B1AC", -"t. c #D0CEC9", -"y. c #373736", -"u. c #070707", -"i. c #2C2B2A", -"p. c #C6C4C0", -"a. c #969491", -"s. c #61605E", -"d. c #C0BEBA", -"f. c #9C9B97", -"g. c #E4E2DD", -"h. c #5B5B58", -"j. c #3C3C3A", -"k. c #B6B4B0", -"l. c #9A9895", -"z. c #656462", -"x. c #C1BFBA", -"c. c #CFCDC8", -"v. c #A6A5A2", -"b. c #575754", -"n. c #2C2C2B", -"m. c #292827", -"M. c #71706E", -"N. c #8B8986", -"B. c #959491", -"V. c #C4C3BE", -"C. c #C9C8C3", -"Z. c #CCCAC5", -"A. c #B4B3AF", -"S. c #A09F9C", -"D. c gray100", +"16 16 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , < 1 2 2 + O ", -"o 3 4 5 6 7 8 9 9 0 q w e w 2 $ ", -"X * r t y u 9 i p a s d f g h j ", -"k l z x c v b 9 9 0 q n m M * $ ", -"$ N B q V k C Z A S D F G H + O ", -"k J K L P I 1 U Y T R E W Q M ", -"! ~ ^ / ( ) _ ` ' ] h [ { } | .", -" .~ n ..X.o.O.+.@.#.Y $.%.+.&.4 ", -". E O T *.z =.U < -.;.:.>.,.<.x ", -"k 7 1.2.3.4.] o.5.6.Q Q R W 7.$ ", -"+ 8.9 9.9 0.4 q.z w.e.R 2 r.t.4 ", -"+ y.9 u.9 i.p.a.s.d.f.g.h.' | .", -"+ 8.9 a 9 j.< k.l.` O.&.z.x.c.v.", -"O.b.n.y.m.M.x N.w.B.V.C.W Z.#.x ", -"$ O.A.+ A.k k S.f.# x M .M x " +"Q.!.(.P./.^.].].].].~.).I./.^.Q.", +"!.XXn.N.C.I.v n n c E.D.m.x.].^.", +"/.N.Q.d.|.1.. o 0./.n.=Xl.!.", +"I.b.0XB %Xq. @ O O ;.gX{ 4XG.D.", +"(.m.E.Y.oX,.X o 9.).v.!.c.Q.", +"Q.%Xf.6.k.(./ M x ! ).F.K.M.[.^.", +"(.!.F.I.N.'.!.K.).H..T.1X2XyX8X#XQ.", +"].b + I U.k.^.A. X8Xn.-X3XE.", +"].N # j ;X5.} -XH.tX( E.7XR.", +"].b + A W.E.K.P.`.X4XE.", +"_.] j N f 3.Q.c.A.V.=X1X8X1X#XW.", +"Q.`.[.].[.(.(.L.G.).W.E.T.E.W.!." }; /* XPM */ static const char *const xpm_icon_1[] = { /* columns rows colors chars-per-pixel */ -"32 32 75 1 ", -" c #010101", -". c #0A0A0A", -"X c #111111", -"o c #1B1B1B", -"O c #232322", -"+ c #282726", -"@ c #2B2B2A", -"# c #31302F", -"$ c #343332", -"% c #3C3B3A", -"& c #403F3D", -"* c #434240", -"= c #4A4947", -"- c #4E4D4B", -"; c #504F4D", -": c #51504F", -"> c #545351", -", c #585755", -"< c #595957", -"1 c #5D5D5A", -"2 c #605F5D", -"3 c #61615E", -"4 c #656462", -"5 c #686764", -"6 c #696966", -"7 c #6E6D6B", -"8 c #706F6D", -"9 c #72716E", -"0 c #767572", -"q c #7A7976", -"w c #7E7D7A", -"e c #817F7C", -"r c #83817E", -"t c #868581", -"y c #888784", -"u c #8A8986", -"i c #8E8D89", -"p c #908E8B", -"a c #93918E", -"s c #969491", -"d c #989793", -"f c #9B9996", -"g c #9E9D9A", -"h c #A09F9B", -"j c #A2A19D", -"k c #A7A6A2", -"l c #A8A7A3", -"z c #AAA9A5", -"x c #AEADA9", -"c c #B0AFAB", -"v c #B3B1AD", -"b c #B6B5B1", -"n c #B9B7B2", -"m c #BCBBB6", -"M c #BEBDB8", -"N c #C1BFBA", -"B c #C3C2BD", -"V c #C7C5C0", -"C c #C8C6C1", -"Z c #CCCAC5", -"A c #CFCDC8", -"S c #D1CFCA", -"D c #D4D2CD", -"F c #D7D5D0", -"G c #D8D6D1", -"H c #DCDAD5", -"J c #DFDDD8", -"K c #E1DFD9", -"L c #E4E2DD", -"P c #E7E5E0", -"I c #E9E6E1", -"U c #ECEAE4", -"Y c #F1EFE9", -"T c #F4F2ED", -"R c #FCF9F3", +"32 32 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"nVkz", -"zlB2fxwhIs5y . . iy7LdtKB:zzz", -"zct9Lfs.fY0- 04GD0.BUf1bz", -"lb3jLH2@BLz# ;wKHnXVHV>zz", -"kb3hHZN.fIk# ;wJHc.CHV>xl", -"lcu9U9:-NU0: 03HS0jflMCg85wnCclz", -"zkMH75dj77FMIy4df87GBSFJYYLFGmlz", -"zkV7rPAjJt4Dq7GkzLsdgzBZq#@KDmlz", -"kb2 .1tUl@2vLz2KSATtXHGmkz", -"kb3 .:sKSL,$Uv2KSKh.eKFMlz", -"kb3 .80Uj0#8Ys5KGv OpFGmkz", -"kb3 .. j3lKkbIS;lGFBxxlSFmlz", -"kb3 jZ>aSSl>hCDGHKKKGHNkz", -"zxy13132331jCv4:>,hCvmMmmmmmNcll", -"zzxbbbbbbbbzkzbxzbxkllllklllllzz", -"zzzkkkkklkkzzzlzzllzzzzzzzzzzzlz" +"!.!.!.~.~.Q.E.E.Q.~.~.Q.E.E.E.E.E.E.E.E.Q.~.~.Q.W.E.W.!.~.!.!.!.", +"!.!.Q.R.R.'.}.}.'.R.T./.|.}.}.}.}.}.}.|./.R.T.(.}.}.[.Q.T.Q.!.!.", +"!.Q.`.%X*Xj.O.+.k.*X=XC. .@.+.+.+.+.@. .Z.$X>XG.*...q.|.:X_.Q.!.", +"~.R.%XqXO.7.^.T.1.o.iXd. X X u.nXe.O.I.~.s.) X:XT.~.", +"~.R.*XO.D.wX^.2XMXV.=.j. + o o o o + v.c.>.sXXX*XxX$X/ !.^.!.", +"Q.'.k.1.CXf.Q 3 T.VX8.! . X 7.+.iX+Xz c qXkXH.X.{.W.", +"E.}.@.L.gX9Xo.9 XjXQ.c o . / u.aXfXK.l aXwX>X_ ^.Q.", +"E.}.@.P.sXXX_.9 x.bXE.c o . / u.sXuXx.f 0XeX>X_ /.Q.", +"Q.'.k.2.MX*.G J [.mX8.~ . X 7.+.pXXXB t ;.nXF.X.}.W.", +"~.R.=X@.S.nXrXlXNXV.-.h. o o v.b.>.jXsXdXjX&X( ~.~.!.", +"~.R.#X5X{ 4./.!.3.[ eXs. X X & * O X y.lX8.} C.I.i.! ].-XT.~.", +"!.Q._.*X6X1.d s 1.7X*XR.A.W.f.] ( 7.T.G.E.@XX_.Q.!.", +"~.R.@XuX<.;.C.D.;.1.qX%XzXh.#.M.V.<.:.tX=X8X0XpXcXzXfXeXeX+XE.~.", +"~.T.:X<.p.hXhX9XgXs.&.0Xe.,.uX6XrXkXV.} %X9XqX0X@X;XuX9XrXOXE.~.", +"Q._.M.*.lXdX` > :XnX&.u.+.zX!.0 ( iXvX9.t.aXpXA.G g l.sXwXOXE.~.", +"W.}.%.F.bXA.) f 1XgXE.k N.aXdX7.J hXyX`.o.sX0X1XvXS ..lXqXOXE.~.", +"E.}.O.U.sXz _ = n.zX/.p S.iXlX0.K zXrX|.X.aX9XrXO./ eXqXrXOXE.~.", +"Q.].i.e.zXm.<.3 B.VXr.o.2.nXT.d 6 a.BXx.<.sXsXz. A t.pXwXOXE.~.", +"!.E.@X' ^.SXzX8XBX^.^ ,X#.A.gX;X:XeX=X~ '.wXwX3X>XoX-XwXrXOXE.~.", +"~.T.:X4X| j.XX#Xk. .>X>X5X{ e.$X:XC.Q '.:X8XwXrXyXiXtXqXtX+XE.~.", +"!.~.P.L.A.( Z Z ( A.L.Q.%X3Xq.v h ..$X:X_.+X@X+XOXOX+X+X#X].Q.!.", +"E.}.+. O % $ $ & . A.lXn.+.t.a.=.8.qX@X6X0X8X0X8X7X8XwXOXE.~.", +"E.}.+. o . E.S. .7XsXtXyXi.-.:X8XqXyX0XtXaX0XtX+XE.~.", +"E.}.+. o . c.} jXm.s Y ^.ZX-.h.iXpXH.D N J.pXwXOXE.~.", +"E.}.+. o % .g.CX9.> I |.hX^.+.dXwX@XrXD ' lXqXOXE.~.", +"E.}.+. o * ) V.hX#X7XD ] nX{.o.aX7XgXd.W 7XwXrXOXE.~.", +"E.}.+. o @ <.6.mXi.` s k.BXV.-.sXsXv. D j.uXwXOXE.~.", +"E.}.@. @ o o o o o P.+.~.aXR.+XvX8X/ E.eXeX&X_.U.{.eXeXOXE.~.", +"E.}.+. o . P.5X( N.7X6XR._ I.X_.OX+XOXoXoXoXOX@X'.W.!.", +"!.Q.).|.}.}.}.}.}.}.|.^.T.Q.}.(.^.{.(.Y.Q.E.E.E.E.E.E.E.E.W.!.!.", +"!.!.Q.E.E.E.E.E.E.E.E.!.~.!.W.Q.!.W.Q.~.!.~.~.~.~.~.~.~.~.!.!.!." }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 83 1 ", -" c #010101", -". c #080807", -"X c #0D0D0D", -"o c #131312", -"O c #1C1C1C", -"+ c #20201F", -"@ c #252524", -"# c #292827", -"$ c #2D2C2B", -"% c #302F2E", -"& c #31302F", -"* c #343432", -"= c #383736", -"- c #383836", -"; c #3C3C3A", -": c #403F3E", -"> c #41403F", -", c #444442", -"< c #484745", -"1 c #494847", -"2 c #4D4C4B", -"3 c #504F4D", -"4 c #51514E", -"5 c #565553", -"6 c #585755", -"7 c #595956", -"8 c #5D5C5A", -"9 c #605F5D", -"0 c #61605E", -"q c #656462", -"w c #686765", -"e c #6A6966", -"r c #6E6D6A", -"t c #706F6C", -"y c #72716E", -"u c #767572", -"i c #787774", -"p c #7A7976", -"a c #7D7C79", -"s c #807F7C", -"d c #82817E", -"f c #868582", -"g c #888784", -"h c #8A8986", -"j c #8E8C89", -"k c #908F8C", -"l c #93928E", -"z c #969592", -"x c #989793", -"c c #9B9996", -"v c #9F9D9A", -"b c #A09F9B", -"n c #A3A29E", -"m c #A7A6A2", -"M c #A8A7A3", -"N c #AAA9A5", -"B c #AFAEAA", -"V c #B0AFAB", -"C c #B3B2AE", -"Z c #B6B5B1", -"A c #B8B7B2", -"S c #BBBAB5", -"D c #BFBDB9", -"F c #C0BFBA", -"G c #C4C2BD", -"H c #C7C5C0", -"J c #C8C6C2", -"K c #CCCAC5", -"L c #CFCDC8", -"P c #D0CEC9", -"I c #D4D2CD", -"U c #D7D5D0", -"Y c #D9D7D1", -"T c #DCDAD5", -"R c #DFDDD8", -"E c #E1DED9", -"W c #E4E2DD", -"Q c #E7E5E0", -"! c #E9E6E1", -"~ c #ECEAE4", -"^ c #F1EEE9", -"/ c #F4F2EC", -"( c #FCFAF4", +"48 48 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"UIL^i ATLW90ZMNN", -"NNmS2aWPTdoXBTPE8= Ot3WPPEe CTPWa2SmNN", -"NNmS3pWPT^R.;EPT7- Oy2WIP/p GWLWp3SmNN", -"NNMCp4WIusq rRIL:7 ox;PUYm> tDUW4tCNNN", -"NNNMZ*ZWz86kUL!f2p .D2fWUi5q2bQZ$mNNNN", -"NNNmLg&U~QWRI!C+Zu . XZZ@CWWWW!!U&gDmNNN", -"NNNMDQt&mPRTPh@vWe XBQc@jLREIn%yWNNNNN", -"NNNNALUf&,88;;mULuo@OO#&$#OOO#BKUm;*<2=$hYHBNNNN", -"NNNNCACIS8#$yJKCCVDSKGgqwgDKDABCCFGnfdcFGZZBNNNN", -"NNNmDTWp*4tw<=v!KAYWj*<88<*jWLZYYYITRETYUYYBmNNN", -"NNNmDE6;DR~/Eb@hYCWe&V!//RV&tTCUIIIEWWYIIIIBNNNN", -"NNNmLu>WYTc8C~H#zLk&YWcqtKWY*dGUIIIl0eCTIIIBNNNN", -"NNNNB&GYYAX zTEc=F*BRLy@ GIEV%CUITC*a$.VTIIBNNNN", -"NNmZt7WPY:, kEII:w3TPP^7 KYPE,fEIIPI/m gWPIBNNNN", -"NNmS2aWRytB mWLE8#tWIPW2 GTPW0eWPIIYY> cRIIBNNNN", -"NNmS2aWY$q5 4LIT8#tWPP^5 IYPW0eQIIYY2 8YIUIBNNNN", -"NNNCt7WIht< e2RPIA- zLIE>fEPUL* &nGYIIBNNNN", -"NNNNV*GTR^C&STWc-G*BWI7:1-N!B&ZUIYD:12-cEIIBMNNN", -"NNNmLu;WYKIWIEH@xLj%YEREEWWY%fGIIIUWWEWTIIIBNNNN", -"NNNmDE6;SRWRYn@gUC!t*CTREYB%yTCYUUUPPIIIUUIBMNNN", -"NNNmDRWa=4rw<;n!KCPYd#1tt1$fTJCPPPLLLLLPLLLBNNNN", -"NNNNlddls3=-7gksgBZVLDq$$wFLBCVZCCZCCACZACCBNNNN", -"NNmZ6 .. ODUWn>,65,:mWLZYUUUIIIIUUUUBNNNN", -"NNNZ6 . OSWd#zR^/Rz@gTCUIIURWWYIIIIBNNNN", -"NNMA6 OKv#KQzprgQK#zFIIIINsfGTIIIBNNNN", -"NNmZ6 OG;nWUO>uuPWn&AYPTC#0OoDTIIBNNNN", -"NNMA7 @j>TPTo5ZTYIR;jRIULJ/n fWPIBMNNN", -"NNMZ6 . %q0WII54.$LIW8rWPUUUT5 zEIIBNNNN", -"NNmA6 %qqWPYW(f nTWqeWPIUR8 >IUIIBMNNN", -"NNmA6 $s2RYSlS: AYR,dRPUI2 &ZPIIIBNNNN", -"NNMZ6 OS*AWZ2=*zYTS%CYITS@$;$zEIIBNNNN", -"NNmA7 OLa;ERRURYTW;uGIIIIETTYUIIIBNNNN", -"NNMA6 +SE6>HRWEEH>7YCYUUIIIIIUUIIBMNNN", -"NNMZ6 . . . +SYRy$5aa6$yRLCYIIIIIIIIIIIBNNNN", -"NNNNvzxxzcczzzzzcNBNDbe22wbDVNBVBBBBBBBBBBBNNNNN", -"NNNNNVVBBBBBBBBBBNMNmBZSACVmNMNNMNMMNMNMNNmNNNNN", -"NNNNNMNMNNNMNMNNNNNNMMMMMMMMNNNNNNNNNNNNNNNNNNNN", -"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", -"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN" +"!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.", +"!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.", +"!.!.!.!.!.~.~.~.!.W.E.E.W.!.~.~.~.Q.E.E.E.E.E.E.E.E.E.E.E.E.!.~.~.~.!.W.E.E.W.!.~.~.~.!.!.!.!.!.", +"!.!.!.!.Q.R.R.Y.^.}.XXXX[.Q.Y.E.R.). X|.|.|.|.|.|.|.|.|. X}.Q.R.E.Y.Q.[.XXXX}.^.Y.R.E.!.!.!.!.!.", +"!.!.!.Q.{.#X#X4XW.-.E ! 9.|.3XOX%Xl./ { ] ] ] ] ] ] ] [ ' ..^.%XOX3X|.9.! E -.W.4X$X+X/.Q.!.!.!.", +"!.!.~.R.#XsXyX%.c o.r.q.( z j.jXyX>. o . - _.uXjXj.x ( 0.r.O.x %.uXyX(.Q.!.!.!.", +"!.!.~.R.#XyXJ ) 7XMXVXvXgXXXv >.kX:. @ o o o o o o o O > /.kX:.b XXvXNXmXjX5X) K wX).W.!.!.!.", +"!.!.~.Y.4X%.) mX5XR.G.|.rXaXrXl S.0. o . * OXS.l tXsX|.P.(.8XeXbX_ @.@XR.!.!.!.", +"!.!.!.^.W.n 2XjXl.w g X 8.uXsXY.D 5. o . - }.D U.lX#Xc X d wX9XeX6Xx A.(.Q.!.!.", +"!.!.W.}.-.O.jX8X5X].A.O E gX7XqXU Q X . 4 k.H wXqX5X0XR w tXqX7XjXX.#.|.W.!.!.", +"!.!.E.XXE y.kX6XfX>.* & T.aX6XfX} N . . 0 1.^ jX8X9XhXT 0 wX0X8XkXy.E XXE.!.!.", +"!.!.E.XX! e.jX7XeXlXjXs h iX8XsX[ C . . 9 4.! fX8X0XVX( y vXtX7XjXw.! XXE.!.!.", +"!.!.W.[.0.) gXtX$.U ) U pX0X5XG [ X . 1 C.A 5XrXX(.Q.!.!.!.", +"!.!.!.Q.'. X[.9XXX .d l 7.1X1X].{._.$XOX2X#Xj.%.%.j.#X2X+XoX(..X{.$X-XY.g.s.D.$X=X}. X/.!.!.!.!.", +"!.!.~.R.$XiXfXr.c ` 2.>.U M J.cX. ] 4X0XsX .h 2.jX7XwXnXb S BXqX7XlX+.;.lX8X9XaX{.r _ lXtX0XqX0X).Q.!.!.!.", +"!.!.W.{.2.} jX9X| b u r #XyX8XG =.! iXwX-Xe.5 0 u.>XqXsXJ h.dX7XpX~.o 1 :.<.>XrXqX0X).Q.!.!.!.", +"!.!.!.~._.b ;XuXeXlX%XD {.uXhXS.N &XM ).lX XF L J K OXjX`.l {.eX8XaXU.D R N G -XrX0X0X).Q.!.!.!.", +"!.!.~.Y.4X8.H jXuX6X9XfXwXhX,Xd A.5Xv.x tXhXhXfXfXhXgXrXc h.*X0XqX0XyXkXhXlXkXeX0XqX0X).Q.!.!.!.", +"!.!.~.R.+XdX` S oXaXhXsXyXP.a g.eX[.zX,.b `.uXdXdXuX`.v 2.pX].rXwXeXqX9X9X9X9XwXwXeXwX).Q.!.!.!.", +"!.!.~.R.%XaXhXp.n ) ,.;.U C I.vX2X}.6XuXf.f T 1.1.T f f.pX>X[.6X5X5X5X5X5X5X5X5X5X5X4X(.Q.!.!.!.", +"!.!.Q./.C.i.s.M.y.~ M C | k.b.u.k.).}._.3X$X*.g h *.%X3X`.[.(.}.{.{.{.{.{.{.{.{.{.{.{.^.!.!.!.!.", +"!.!.E.|.] o o # # . X q #XwXhXY.G P . .P G U.lX4X}.rXwXeXeXwXwXwXeXeXwXeXwX).Q.!.!.!.", +"!.!.E.|.[ + X . . o e oXjXa.s Z.0XhXhX0XC.a f.iX].wX0XqX0X0XeXqX9XqXqXqX0X).Q.!.!.!.", +"!.!.E.|.] o X 9 .lX8X0XrXcXhXf x tXqXqX0X).Q.!.!.!.", +"!.!.E.|.] o X x #.$.lX8XwXdXSX .. &XeXkX@.-.lX8X9XpX-Xx C rXuX9XqX0X).Q.!.!.!.", +"!.!.E.|.] o X g p.W aXuXb.:.B.e w 6X0XdXY p.fX7XuX}., < a.c.1XeXqX0X).Q.!.!.!.", +"!.!.E.|.] o X e .Xn XXjXK.N d S ).tXuX@Xj _.rX8XsXF.t n u h *XtX0X0X).Q.!.!.!.", +"!.!.E.|.] o X 9 3Xy.S hXgXsXuXsXrXyXjXD 8.=X0XqX0XtXsXiXaXsXwXqXqX0X).Q.!.!.!.", +"!.!.E.|.] o X q +XfX' J -XgXhXgXhX;XH { tX[.eXqXqXqX0X0X0X0XqXqXqXqX).Q.!.!.!.", +"!.!.E.|.[ @ o o o o o o o O e +XeXiX5.h ] r.r.] h 5.sX4X{.wX0X0X0X0X0X0X0X0X0XqX0X).Q.!.!.!.", +"!.!.!.~.L.C.A.Z.Z.Z.Z.Z.Z.Z.Z.Z.D.^.(.(.@XL.=.W W -.L.@X(.(./.).).).).).).).).).).).).!.!.!.!.!.", +"!.!.!.!./.).).).).).).).).).).).(.!.Q.Q.R./.}.XXXX}./.R.Q.Q.!.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.!.!.!.!.!.", +"!.!.!.!.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.!.!.!.!.Q.W.E.E.W.Q.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.", +"!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.", +"!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!." }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/singles.sav sgt-puzzles-20160429.b31155b/icons/singles.sav --- sgt-puzzles-20140928.r10274/icons/singles.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/singles.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,45 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :7:Singles +PARAMS :5:6x6dk +CPARAMS :5:6x6dk +SEED :15:781273601054598 +DESC :36:361566412253452144234115163346553461 +NSTATES :2:37 +STATEPOS:2:22 +MOVE :4:B1,0 +MOVE :4:C0,0 +MOVE :4:C1,1 +MOVE :4:C2,0 +MOVE :4:C0,1 +MOVE :4:B0,2 +MOVE :4:C0,3 +MOVE :4:C1,2 +MOVE :4:C4,3 +MOVE :4:B3,3 +MOVE :4:C3,2 +MOVE :4:C2,3 +MOVE :4:C3,4 +MOVE :4:B2,4 +MOVE :4:C1,4 +MOVE :4:C2,5 +MOVE :4:B1,5 +MOVE :4:C0,5 +MOVE :4:C0,4 +MOVE :4:C1,3 +MOVE :4:C3,5 +MOVE :4:B5,4 +MOVE :4:C4,4 +MOVE :4:C5,5 +MOVE :4:C5,3 +MOVE :4:C4,5 +MOVE :4:B4,0 +MOVE :4:C3,0 +MOVE :4:C4,1 +MOVE :4:C5,0 +MOVE :4:C5,1 +MOVE :4:B4,2 +MOVE :4:C5,2 +MOVE :4:C3,1 +MOVE :4:B2,1 +MOVE :4:C2,2 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/singles-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/singles-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/sixteen-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/sixteen-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/sixteen-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/sixteen-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/sixteen-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/sixteen-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/sixteen-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/sixteen-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/sixteen-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/sixteen-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/sixteen-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/sixteen-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/sixteen-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/sixteen-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/sixteen-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/sixteen-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/sixteen-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/sixteen-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/sixteen-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/sixteen-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/sixteen-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/sixteen-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/sixteen-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/sixteen-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/sixteen.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/sixteen.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/sixteen-icon.c sgt-puzzles-20160429.b31155b/icons/sixteen-icon.c --- sgt-puzzles-20140928.r10274/icons/sixteen-icon.c 2014-09-29 00:33:47.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/sixteen-icon.c 2016-04-29 00:31:43.000000000 +0000 @@ -1,438 +1,886 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 79 1 ", -" c #D5D3CE", -". c #DAD8D3", -"X c #D9D7D2", -"o c #DAD8D2", -"O c #D6D4CF", -"+ c #D4D2CD", -"@ c #DFDDD8", -"# c #DCDAD5", -"$ c #DEDCD7", -"% c #D8D6D1", -"& c #DDDBD6", -"* c #D7D5D0", -"= c #DBD9D4", -"- c #C9C7C2", -"; c #C5C3BF", -": c #C8C7C2", -"> c #D3D1CC", -", c #CBC9C4", -"< c #C6C4C0", -"1 c #D2D1CC", -"2 c #C9C7C3", -"3 c #AAA8A4", -"4 c #C4C2BD", -"5 c #E2E0DB", -"6 c #ABA9A5", -"7 c #7F7D7A", -"8 c #9F9D9A", -"9 c #B0AEAA", -"0 c #858481", -"q c #A2A09C", -"w c #9C9B97", -"e c #979692", -"r c #A09F9B", -"t c #C1C0BB", -"y c #CECCC7", -"u c #CCCAC5", -"i c #BBB9B5", -"p c #C7C5C0", -"a c #A7A6A2", -"s c #C2C0BB", -"d c #D3D2CD", -"f c #D0CFCA", -"g c #D8D7D2", -"h c #D0CECA", -"j c #D6D5D0", -"k c #DDDBD5", -"l c #D5D4CF", -"z c #C8C6C1", -"x c #C3C2BD", -"c c #CAC8C3", -"v c #CCCBC6", -"b c #ADACA7", -"n c #D1CFCA", -"m c #CFCDC8", -"M c #8A8986", -"N c #7B7A77", -"B c #CAC8C4", -"V c #D2D0CB", -"C c #8D8C88", -"Z c #787774", -"A c #D0CEC9", -"S c #9E9D9A", -"D c #969692", -"F c #BEBCB7", -"G c #BDBBB7", -"H c #A5A3A0", -"J c #BFBDB9", -"K c #D1CFCB", -"L c #D4D3CE", -"P c #DAD9D4", -"I c #DCDBD5", -"U c #D8D7D1", -"Y c #9C9A97", -"T c #AAA9A5", -"R c #A5A4A0", -"E c #C4C2BE", -"W c #A09E9B", -"Q c #C6C5C0", -"! c gray100", +"16 16 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"*,<-1*234%", -"%5678%&90q.*wer+", -".&:ty>Xui,+*pas%", -".%d*+fO+g h%%** ", -"OjO%.k*O%%$k X* ", -"O>l+zx> +cv=,b<%", -">n%mMNB%VCZASDr+", -"+VO+FxnO G;XxHJ%", -" KL+**V++OPI%%* ", -" *XUjO*XXO**+ ", -"+%-Yp%*uw4X+ ", -"+XTea*XbeR* ", -"+*EWs**QrJ* ", -" %+% %+% " +"qXyXyXtXtXyXyXyXtXtXyXwX0X0X0XqX", +"yXsXpXsXaXrXiXpXsXaXrXrXrXtXeXqX", +"yXiX:X&X;X9XrX>X=X;X9XeX,XQ.*XrX", +"rXhXI.&.z.yXsXR.q.V.uXeXG.Z.K.0X", +"yXpX>X$X3X9XtX1XoX,X0XeX:XR.%XrX", +"yXrX0XrX0X6XwX0XtXqX6XrXrXeXeXqX", +"wXeXwXrXyXpXeXwXrXtXaXpXqXtXeXqX", +"wX9XwX9X:X=X8XqX9X>X2XyX1X^.;XrX", +"0X8XrX2Xi.5.;XyX6Xt.*.3XK.C.K.0X", +"qX9XwX0XOX&X7XwXqXOX&XtX*XY.@XrX", +"qX7X0X0XeXeX8X0X0XwXuXiXrXeXeXqX", +"qXeXtXrXwXwXeXtXtXwXeXeX0XqXqXqX", +"0XrX,XF.:XrXeX2XG.=XtX0XqXqXqXqX", +"0XtXQ.Z.E.eXtX^.Z.Y.eXqXqXqXqXqX", +"0XeX*XK.%XeXeX;XK.@XeXqXqXqXqXqX", +"qXqXrX0XrXqXqXrX0XrXqXqXqXqXqXqX" }; /* XPM */ static const char *const xpm_icon_1[] = { /* columns rows colors chars-per-pixel */ -"32 32 175 2 ", -" c #D5D3CE", -". c #D3D1CC", -"X c #D4D2CD", -"o c #D6D4CF", -"O c #DCDAD5", -"+ c #DDDBD6", -"@ c #DDDBD5", -"# c #D8D6D1", -"$ c #EBE9E3", -"% c #E0DED9", -"& c #E2E0DB", -"* c #E2E0DA", -"= c #E3E1DC", -"- c #DAD8D3", -"; c #E7E5E0", -": c #DBD9D4", -"> c #E0DED8", -", c #D5D2CE", -"< c #D3D1CD", -"1 c #D0CEC9", -"2 c #D0CECA", -"3 c #D2D0CB", -"4 c #D1CFCA", -"5 c #C9C7C3", -"6 c #C8C7C2", -"7 c #DCDBD5", -"8 c #D7D5D0", -"9 c #DFDDD8", -"0 c #CCCAC6", -"q c #DEDCD7", -"w c #DFDDD7", -"e c #CCCAC5", -"r c #D5D2CD", -"t c #D9D7D2", -"y c #A7A6A2", -"u c #9E9C99", -"i c #CECCC7", -"p c #B5B4AF", -"a c #A3A29E", -"s c #A1A09C", -"d c #C6C4BF", -"f c #ABAAA6", -"g c #A6A4A1", -"h c #CBC9C5", -"j c #C1BFBB", -"k c #A6A5A1", -"l c #A4A29F", -"z c #787775", -"x c #7D7C79", -"c c #ADABA7", -"v c #868582", -"b c #787774", -"n c #BAB9B4", -"m c #CBC9C4", -"M c #858481", -"N c #A7A5A2", -"B c #C7C5C0", -"V c #646361", -"C c #C9C7C2", -"Z c #A3A19E", -"A c #92918E", -"S c #ADACA8", -"D c #999995", -"F c #9C9B97", -"G c #D8D6D0", -"H c #787674", -"J c #888683", -"K c #878683", -"L c #747370", -"P c #BFBDB9", -"I c #83817E", -"U c #888784", -"Y c #898884", -"T c #DAD7D2", -"R c #979793", -"E c #B0AFAA", -"W c #9C9B98", -"Q c #969591", -"! c #B3B1AD", -"~ c #B0AEAA", -"^ c #ABA9A5", -"/ c #A9A7A3", -"( c #DAD8D2", -") c #BBBAB5", -"_ c #9D9C98", -"` c #7C7C79", -"' c #9C9A97", -"] c #E0DDD8", -"[ c #CBCAC5", -"{ c #DEDCD6", -"} c #E3E1DB", -"| c #D4D1CC", -" . c #CAC8C3", -".. c #CAC9C4", -"X. c #C8C6C1", -"o. c #D3D2CD", -"O. c #E2E1DB", -"+. c #CCCBC6", -"@. c #D3D0CC", -"#. c #E5E3DE", -"$. c #DEDDD7", -"%. c #B2B0AC", -"&. c #CDCCC7", -"*. c #ACABA7", -"=. c #CDCBC6", -"-. c #B6B4B0", -";. c #E6E4DF", -":. c #C6C5C0", -">. c #ACAAA6", -",. c #757471", -"<. c #A8A7A3", -"1. c #73716F", -"2. c #4F4E4C", -"3. c #7F7E7B", -"4. c #D2D0CC", -"5. c #777674", -"6. c #6B6A68", -"7. c #686764", -"8. c #A2A09D", -"9. c #8D8C89", -"0. c #9B9A97", -"q. c #AAA9A5", -"w. c #A4A39F", -"e. c #CAC8C4", -"r. c #7A7976", -"t. c #9A9895", -"y. c #5F5E5C", -"u. c #C4C3BE", -"i. c #8C8B87", -"p. c #61605E", -"a. c #C7C6C1", -"s. c #9C9C98", -"d. c #B1B0AC", -"f. c #A09F9B", -"g. c #908F8B", -"h. c #91908D", -"j. c #AAA8A4", -"k. c #BFBDB8", -"l. c #A7A5A1", -"z. c #D9D7D1", -"x. c #B6B5B0", -"c. c #959490", -"v. c #979693", -"b. c #83827F", -"n. c #969592", -"m. c #D6D3CE", -"M. c #E1DFDA", -"N. c #92908D", -"B. c #D7D5CF", -"V. c #CFCDC8", -"C. c #E4E3DE", -"Z. c #DAD9D4", -"A. c #DEDBD6", -"S. c #A2A09C", -"D. c #BCBAB5", -"F. c #C6C4C0", -"G. c #92928E", -"H. c #9F9E9A", -"J. c #8E8D8A", -"K. c #9B9B97", -"L. c #A5A4A0", -"P. c #9E9D99", -"I. c #D7D4CF", -"U. c #999894", -"Y. c #A8A6A2", -"T. c #9D9B98", -"R. c #B2B1AD", -"E. c #747471", -"W. c #82827E", -"Q. c #A2A19D", -"!. c #959491", -"~. c #979592", -"^. c #A5A3A0", -"/. c #8F8E8B", -"(. c gray100", +"32 32 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , < ", -". + % 1 . 2 3 4 4 3 . 5 O 3 . 4 3 4 4 3 X 6 7 X . X O ", -". + & . o % 8 O 9 X 8 0 q > # + w 8 e + r t w # y # ", -". + & . u i p a - e q X # s d f g 8 o h O t j k l z s - ", -". + & 4 @ x c v b n O m q . w M N B V C - m : + Z A s S D F G ", -". + & 4 q H J K L P : m q 3 > I U Y V T o h : + l R k E W Q 8 ", -". + & . X s ! P ~ - e q X o k ^ / y . 8 h O ( ) _ _ ` ' # o ", -". + * 3 ] O T @ . o [ q X q { q q o h + X t q 8 F o o X ", -". + } | o X X X o 8 [ q o X X X X # h 7 X . X O X ", -". + : 5 e m e [ e [ [ .- .e ..e [ e [ 0 X.9 o. ", -"X 8 9 q 8 } + q q q q % % q 8 & { q q q + O.; . X ", -" X . +.q 3 @.X 3 3 . ..q . . X . o #.. . X : X ", -" i w . o q 8 q @ o +.$.X o q 8 8 % #.. # q # %.( ", -" X &.q X . *.i c %.8 e q X o c =...-.;.o :.~ >.,.<.O ", -" o o X &.q . t 1.%.2.3.# e q 4.+ 5.%.6.7.& O 8.9.0.q.Q w.# X ", -"G m e.8 =.q 3 q r.Q t.y.u.T [ q 3 > M i.b p.a.* l s.f d.f.g.8 ", -"o . . &.q X 3 h./ q.j.8 e q X Q w.k.l.#.z.x.c.v.b.n.X 8 X ", -" m. X &.q . o M.+ + + X e q . % q # & #.. t @ X N.. # X ", -" B.o &.9 8 X o 8 +.9 m.8 X # #.. X X : o X ", -" X [ .h # C e [ [ [ [ h m C t 5 e [ [ ..V.C.| X ", -" o + 7 % 9 Z.: O + + + + 7 > > Z.: O + 7 9 w X ", -" X # A.+ ( r X 8 A.+ - X ", -" X t j s S.D.t X X # F.8.8.x.t X ", -" . q <.G.v.H.q . . { d.J.K.v.@ X ", -" X # L.s y P.I.X X # c F *.U.X X ", -" < O Y.b S ~ ` T.O o.X : R.E.q.d.W.A : X ", -" t Q.U.W F o X - j.!.f.~.. o ", -" : T.!.# o X X O ^./.X G X ", -" # 8 o X # 8 8 X ", -" X X " +"qXqX9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X0XqXqXqXqXqXqXqXqXqX", +"qXwXiXpXpXpXpXpXpXpXpXpXiXpXpXpXpXpXpXpXpXaXrXqXqXqXqXqXqXqXqXqX", +"9XiXbXdXgXgXgXgXgXgXhXyXzXgXgXgXgXgXgXgXhXuXdX0XqXqXqX9XqXqXqXqX", +"9XpXdX6X9X6X8X7X6X8X9X,XiX8X9X6X8X7X6X8X0X>XiXqX0X9X0XiXqXqXqXqX", +"9XpXgX9XeXgXeXiXdX0XeX2XaXqXwXfXtXpXfXqXeX2XpX0XtXsXrXT.tXqXqXqX", +"9XpXgX9X9XC.1X}.P.yXqX2XaX0XwXD.%X/.H.0XeX1XiXtX%XR.Y.9.L.uXwXqX", +"9XpXgX7XaX%.F.-.( `.aXXsXqXqXqXqX9XqXqXqXqX", +"0XeXsXaXrXhXpXaXaXaXaXdXdXaXeXgXaXaXaXaXpXgXzX9XqXqXqX0XqXqXqXqX", +"qXqX0X9X2XaX8X0X8X0X9X8X9XqX c #696865", -", c #6D6C6A", -"< c #706F6C", -"1 c #73726F", -"2 c #747371", -"3 c #787774", -"4 c #7A7976", -"5 c #7D7C79", -"6 c #807F7C", -"7 c #82817E", -"8 c #868582", -"9 c #8A8986", -"0 c #8E8D8A", -"q c #908F8C", -"w c #92918D", -"e c #959491", -"r c #989793", -"t c #9A9995", -"y c #9E9C99", -"u c #A09E9A", -"i c #A3A29E", -"p c #A6A5A1", -"a c #A9A7A3", -"s c #ABAAA6", -"d c #AEADA9", -"f c #B0AFAB", -"g c #B2B1AD", -"h c #B7B6B1", -"j c #B9B7B3", -"k c #BCBAB6", -"l c #BEBCB8", -"z c #C1BFBA", -"x c #C4C3BE", -"c c #C7C5C0", -"v c #C8C6C1", -"b c #CCCAC6", -"n c #CECDC8", -"m c #D1CFCA", -"M c #D5D3CE", -"N c #D7D5D0", -"B c #D8D6D1", -"V c #DDDAD5", -"C c #DFDDD8", -"Z c #E1DED9", -"A c #E5E3DE", -"S c #E7E5E0", -"D c #E9E7E1", -"F c #EAE8E3", -"G c #F0EEE9", -"H c #F3F1EB", +"48 48 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"uVMMMMM", -"MNMVFmMVu&Mb=6NMNvBZmNm;rB>;cNMMxDmVu777q7wZMMNM", -"MMMVFmMNk#b30>aVNvNZMMM42Nz,6AmMxDnZ7yaasg7yBMMM", -"MMMVFMNmF;M,z7tANvNVMMAf2Hf*vNMMxAMVraggasdkZnMMMM", -"MMMVFmMMMMMMMMMMNvNCmMMMMMMMMMMMxAMMMMMMbBMNNMMM", -"MNNVFNBBNNNNNNNNVvBAMBBNBBNNBNNNxDMNMMMMNMMMMMMN", -"MNmVZxvcvvvvvcvcbjMmcvvccvvvvvvckDMMMMMNMMMMMNMM", -"NMmBSNBMNBNNVNNNBNDBBBMBBBBBBBNNZFmNMMMMNMNMMMNM", -"MMNNVVZnFZVCCZCCZCVCCBMFBCCCCVCVADMMNMMMMMMMMMMM", -"MMMMMmNzZNmMmMMmMmMmMbbZmmMmMmMnVDMNMMMMMMMMMMMM", -"MNMMmNNxZBNNMMMMmMMMNbnAmNMMMNNmVFmMMMMMNBMMMMMM", -"NMNMNMBzANmNNZNNZZNMNbnAmNMVVMNBAFMNNVZB1xVMMMMM", -"MMMMmNBcZNmNndnbaibNNbnAmNNjjBNsxFmBxsga17zVMMMM", -"MMNMMMNxZNMVh.ftX2bNNbmAmNB>#F4+uHbZ7707ua6xBMNM", -"MMNNNmBzANMmF8dd&wBMMMMM", -"MNMMMMBzANNMMmmMmmMMNbnAmMMmmmMnVFmNMNBMyNNMMNMM", -"MMNMMMBxANMMMNMMMMMMNbbAmNMMMMMMVFMMMNMMZMMMMMNM", -"MNMMMMNzZMMMMMMMMMMMNbbAmNMMMMMmVFnNMMMMMMMMMMMM", -"MMNmczczZcxcxcxxxxxxxxMNxxxxxxxxnDmBMNMMMNMMMNMM", -"MMNNSSSSFSSFASAFASDAADASSSDASSDSDZMMMMMMMMNMMMMM", -"MMMMMmMmmmmmmMmMmMMmNmMmmmmmmMmmnMMMNMMMMNMMNMMN", -"MNMMMNMNMVZVZBMMNNMNNNMNZVZZMNNNBMMMMMMNMMMMMMMM", -"MMNMMMMMNi9w9kNMMMMNNMBx9w0rNNMNMMNMMMMMMMNMMMNM", -"MNMMMMMMB7ti8uZMNMMMMmVd7iy6nNMMMMMMMMMMMMMMMMMM", -"MMNMNMMNV9sgriZmMMMMMMZg0gg7mBNMMMNMNMMMNMMMMMMM", -"MMMMMMMmm7pfwtVmMMNMNmBa7gs7xNNMMMMMMMMNMMMNMMMN", -"NMMNNmVs&0ssp3:mNNNNNN1X,X[ 8.eX0XrX:XrXsX8XrX,X` h.yX>.] '.uX0X0X-XzX7XpXL.t.l.y.c.l.N.aXqXqXqXqX", +"qXqX9XpXvX8XqXrXXXd %X%.&.L A.fXwX:XrXsX8XqXtX&.` tX#X{ { lX8X0X-XzX7XsXb.S.Q.R.~.'.g.A.rXqXqXqX", +"qXqX9XpXvX8XwX0XhXS :X_ m.| j.hXwX:XrXsX9X8XxXM.' VX/.R #XyX0X0X-XzX7XaXN.Y.[.`.!.~.(.>..R.N T :XrXeX:XrXsX8XrXX;X:X:X:X:X:X:X:X-X@XzX9XwXqXqXqXqX0XqXqXqXqXqXqXqX", +"qXqX0XuXlXeXyXqXwXtXrXrXrXrXrXrXtXeXxXiXrXrX9XtXrXrXrXrXrXrXtXwXgXvX8XwXqXqXqXqXqXqXqXqXqXqXqXqX", +"qXqXqXqXiXaXfX3XlXfXaXsXsXsXsXsXaXsXiXaXdXrX0XbXiXsXsXsXsXsXsXpXlXvX8XwXqXqXqXqXqXqXqXqXqXqXqXqX", +"qXqXqXqX9X8XwX$XfXqX8X9X9X9X9X9X9X9X9X9XqX1X2XhX5X9X9X9X9X9X9X7XiXvX8XwXqXqXqXqXqX0XqXqXqXqXqXqX", +"qXqXqXqXqXqXrX*XhXeXqXqXqX9XqXqX9X9XqXqXeX3X4XjX8XwXqX0X0XqXqX8XpXvX8XwX0X9X0X8XwXtX9XqXqXqXqXqX", +"qXqXqXqXqX0XrX*XhXeXqX0XrXsXeXqXaXfXeX0XeX3X4XjX8XwXqXpXiXqX0XiXkXcX8XqXtXaXsXtX<.=XpX9XqXqXqXqX", +"qXqXqXqXqX0XrX*XhXeX0XeX>XQ.1X9X).I. c #ACAAA6", -", c #D8D6D1", -"< c #A8A7A3", -"1 c #B0AEAA", -"2 c #ABAAA6", -"3 c #ADABA7", -"4 c #DFDDD8", -"5 c #C3C2BD", -"6 c #9E9C99", -"7 c #C8C6C2", -"8 c #B4B2AE", -"9 c #848380", -"0 c #B1AFAB", -"q c #CAC8C3", -"w c #999794", -"e c #989693", -"r c #A19F9C", -"t c #A2A09C", -"y c #A7A5A1", -"u c #CDCBC7", -"i c #D2D0CB", -"p c #9D9B98", -"a c #878683", -"s c #CFCDC9", -"d c #A9A7A3", -"f c #B0AFAB", -"g c #E1DFDA", -"h c #959490", -"j c #A3A29E", -"k c #8E8D8A", -"l c #9A9995", -"z c #AEACA8", -"x c #B5B3AF", -"c c #A2A19D", -"v c #C4C2BD", -"b c #9F9E9A", -"n c #BCBBB6", -"m c #E2E0DB", -"M c #CCCAC5", -"N c #9E9D99", -"B c #B2B1AD", -"V c #C7C5C1", -"C c #A6A4A0", -"Z c #A5A4A0", -"A c #A09E9B", -"S c #A09F9B", -"D c #BFBEB9", -"F c #C3C1BC", -"G c #91908D", -"H c #C8C6C1", -"J c #C6C4BF", -"K c #C2C0BC", -"L c #858481", -"P c #AAA8A4", -"I c #C9C7C3", -"U c #AFADA9", -"Y c #D6D4CF", -"T c #CECDC8", -"R c #BDBCB7", -"E c #B8B6B2", -"W c #D1CFCB", -"Q c #DEDCD7", -"! c #AAA9A5", -"~ c #DDDBD6", -"^ c #D6D4CE", -"/ c #9F9D9A", -"( c #BFBDB9", -") c #B6B5B0", -"_ c #E0DED8", -"` c #A3A19E", -"' c #A19F9B", -"] c #C9C7C2", -"[ c #898885", -"{ c #9D9C98", -"} c #E5E2DD", -"| c #A8A6A2", -" . c #DCDAD5", -".. c #CCCAC6", -"X. c #DBD9D4", -"o. c #B2B0AC", -"O. c #A4A29E", -"+. c #AEADA8", -"@. c #B1B0AC", -"#. c #CBCAC5", -"$. c #9C9B97", -"%. c #9C9A97", -"&. c #D0CECA", -"*. c #B4B3AE", -"=. c #8F8E8A", -"-. c #CBC9C4", -";. c #B6B4B0", -":. c #9A9894", -">. c #C9C8C3", -",. c #D2D0CC", -"<. c #9F9D99", -"1. c #A7A6A2", -"2. c gray100", +"16 16 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" # ", -"X , # < 1 . 2 3 4 5 6 7 . $ ", -". o O 8 9 0 q w @ > e r + t y O ", -". u i p a s d 9 f g h j O k l i ", -"X , < z o x c v b n m > z M q $ ", -"o N B V C Z = $ A S q 3 S D O ", -"F p X < G H . J i K L P X w b X ", -"X * > I U i O @ Y T B 6 n R E $ ", -"W Q 3 ! ~ Y O o ^ $ O $ / ( = O ", -"- ) _ ` ' , + ] o o H @ $ [ q , ", -"i { E } | d ...# # ..X.o.* Y O ", -"s . O.o.i +.! O Y Y Y @.| o #.$ ", -"V N + $.%.&.< > O # *.S =.l # ", -"-.< . ;.:.>.$ + i ,.+ Y u <.1.# ", -"# , i . $ O $ Y Y $ O $ i Y " +"9X6X7X6X6X5XqX;X8X6X4X5X9X3X2X0X", +"6X4X9X5X3XeXY.x.R.yX:XeX%Xh.R.qX", +"7X9XrX9X0XW.(.9X!.^.sX*XG.X4XeXj.,XrX", +"8XF.|.kXR.W.iX2X0X0X2XuX`.Y.wXqX", +"6X7XI.`.9X/.Q.qXwXwXwX`.R.7X3XeX", +"*XN.5XZ.n.8XE.~.qX0X[.K.qXi.c.wX", +">XP.7X].N. c #C1BFBA", -", c #C7C5C1", -"< c #CCCAC6", -"1 c #CAC8C3", -"2 c #C4C2BD", -"3 c #C5C3BF", -"4 c #CAC8C4", -"5 c #D0CECA", -"6 c #C7C5C0", -"7 c #CECCC7", -"8 c #CECCC8", -"9 c #CFCDC8", -"0 c #CDCBC7", -"q c #C3C1BC", -"w c #D2D0CB", -"e c #BBB9B5", -"r c #B6B5B0", -"t c #959390", -"y c #7B7A77", -"u c #B3B1AD", -"i c #BDBBB7", -"p c #BAB8B3", -"a c #B8B6B2", -"s c #51504E", -"d c #A4A39F", -"f c #B2B0AC", -"g c #D7D5CF", -"h c #E6E4DE", -"j c #A7A6A2", -"k c #71706D", -"l c #9F9E9A", -"z c #A9A8A4", -"x c #6B6A67", -"c c #E0DED8", -"v c #CBC9C4", -"b c #D2D1CC", -"n c #E6E4DF", -"m c #A3A19E", -"M c #706F6D", -"N c #A1A09C", -"B c #9C9A96", -"V c #B4B2AE", -"C c #D9D7D1", -"Z c #D4D2CE", -"A c #C9C7C2", -"S c #E3E1DB", -"D c #AAA8A4", -"F c #686765", -"G c #BFBDB9", -"H c #BCBBB6", -"J c #61615E", -"K c #DEDCD6", -"L c #E3E1DC", -"P c #A5A39F", -"I c #6A6967", -"U c #D1D0CB", -"Y c #666563", -"T c #E2DFDA", -"R c #E5E3DE", -"E c #BEBDB8", -"W c #60605E", -"Q c #DCDAD5", -"! c #C2C0BC", -"~ c #A5A4A0", -"^ c #696865", -"/ c #E0DED9", -"( c #D3D1CD", -") c #A19F9C", -"_ c #979692", -"` c #6B6A68", -"' c #969591", -"] c #A6A4A1", -"[ c #BEBCB8", -"{ c #C2C1BC", -"} c #DFDDD7", -"| c #A4A29F", -" . c #696866", -".. c #DBD9D3", -"X. c #B7B5B1", -"o. c #9E9D99", -"O. c #A2A19D", -"+. c #C4C2BE", -"@. c #ADABA7", -"#. c #9D9C98", -"$. c #585755", -"%. c #8C8A87", -"&. c #DFDDD8", -"*. c #A8A6A2", -"=. c #8D8C88", -"-. c #878683", -";. c #ADACA8", -":. c #666562", -">. c #8D8B88", -",. c #71706E", -"<. c #DBD9D4", -"1. c #BFBDB8", -"2. c #A3A29E", -"3. c #7C7A78", -"4. c #8A8985", -"5. c #A9A7A3", -"6. c #C0BEBA", -"7. c #5F5E5C", -"8. c #AEACA8", -"9. c #D1CFCA", -"0. c #858480", -"q. c #B1AFAB", -"w. c #B9B7B3", -"e. c #363635", -"r. c #AFADA9", -"t. c #878582", -"y. c #8E8C89", -"u. c #B0AEAA", -"i. c #E2E0DB", -"p. c #9B9A96", -"a. c #908E8B", -"s. c #A2A09C", -"d. c #B7B6B1", -"f. c #E1DFDA", -"g. c #C6C4C0", -"h. c #6C6B68", -"j. c #9F9D99", -"k. c #8F8E8A", -"l. c #BAB8B4", -"z. c #646361", -"x. c #8C8B87", -"c. c #9A9895", -"v. c #ABA9A5", -"b. c #B3B2AD", -"n. c #ABAAA6", -"m. c #B8B6B1", -"M. c #D9D6D1", -"N. c #706F6C", -"B. c #959490", -"V. c #B9B8B3", -"C. c #807F7C", -"Z. c #868582", -"A. c #C0BEB9", -"S. c #605F5D", -"D. c #BEBCB7", -"F. c #6C6B69", -"G. c #E8E6E1", -"H. c #81807D", -"J. c #848380", -"K. c #E4E2DD", -"L. c #D7D4CF", -"P. c #61605E", -"I. c #E7E5DF", -"U. c #D8D5D0", -"Y. c #C0BFBA", -"T. c #C3C1BD", -"R. c #E4E2DC", -"E. c #C6C5C0", -"W. c #DAD8D2", -"Q. c #C2C0BB", -"!. c #969491", -"~. c #767572", -"^. c #E1DED9", -"/. c #93918E", -"(. c #8E8D8A", -"). c #918F8C", -"_. c #93928F", -"`. c #E9E6E1", -"'. c #82817D", -"]. c #807E7B", -"[. c #868481", -"{. c #E7E5E0", -"}. c #898885", -"|. c #B8B7B2", -" X c #C4C3BE", -".X c #A7A5A1", -"XX c #7E7D7A", -"oX c #C5C3BE", -"OX c #92918D", -"+X c #DDDAD5", -"@X c #B5B3AF", -"#X c #A09E9A", -"$X c #A8A7A3", -"%X c #CFCDC9", -"&X c #AEADA8", -"*X c #C8C6C1", -"=X c #AEADA9", -"-X c #C1C0BB", -";X c #83827E", -":X c #888784", -">X c #C7C6C1", -",X c #6A6966", -" c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" * , * < 1 2 * = * 3 X 4 - O 5 . ", -"X & 6 % 7 8 9 0 q 9 7 w e r t y u 2 % 9 - i % * w p a s d f 6 X ", -"o * % X . g o & X O h j k l z x 2 c $ . v X b n m M N B V C $ ", -"o = 7 . Z O A w S D F 9 G ; H J ; K % A w L P I U G 2 # ", -"o = 8 g $ o X 2 L D Y $ T 7 % R E W 6 Q ! R ~ ^ o / - ( # $ ", -"o = 9 o o 8 ) d _ ` : V ' ] [ L G J { } | .X ..X.o.O.+.# $ ", -"o = 0 O @.#.$.%.X.&.[ *.=.-.;., c i :.>.,.O <.1.2.3.4.5.9 g ", -"o - q & 1 6.@. 7.#.8.= *.9.0.' ; q.1 5 w.e.V $ A r.5.t.y.u.q + ", -"o = 9 X w i.p.a.y.s.d.f.g.t.h.j.k.o o O : l.z.3 i.! D x.c.v.w . ", -"o = 7 O S D ` b.n.m.M.+ N.B.V.V C.Z.L ( 9 % A.S.3 f.D.8.r.= X $ ", -"o < 5 h D Y &.1 T + F.o.G.A 9.h H.J.K.L.A L 1.P.+.I.* U.# $ ", -"@ A Y.] F Q > b.T.M o.R.w v 7 $ L H.Z.1 b.E.i.[ z.V.e X. . ", -"W.Q.!.~.7 ^.l./.(.)._.`.w # * 9.X L '.].[.) ! {.V y }.l 8.o $ ", -"Q |.0. XX.v .X% XX<.n.= 4 * T.g.< = oXq.w ,.w.*.w 8.$ OXd.l.T.# ", -"+X@X#Xw.! % $X! S.f v.O 7 9.g.1 % %Xv &X).S.*Xq.X =X-X;X:XV >XX ", -"o 4 O.,Xe R 6.XP.i / A o $ o - 9 . = o S qX3XwX= w ", -"o = * $ : eXJ 8XrXO . o = % o . O 7X. O R.qXZ.o 9 . ", -"o = . % <.6 tXb.} % $ O 1 7 O O $ w 6 Z O w / 3X4XL. ", -"Q d.yX$ *X3 % i uXiXO 3 7X1 > 2 1 7X7XA , [ & 7Xg.pXv aX= o ", -". O 4XXXS O : e sX1.dXb X = % X . . o $ & @ $ + o fX| o ", -"o v : gXy hX$ %X9 7XS.jX&.O - 9 . O 7X$ X . Y v.o < . ", -"o = % {.kXy i.C A hX6 P.jXf.*X%X. $ 6 + . lX$X{.v $ o $ ", -"@ 4 a 9.h kXXXg.q.-XdX6 S.G . < . $ w * o Y $Xh 4 zXe . ", -"+ xXx.cXO wXvXbX4.D i L A nXiXo o o o o o oXI v.{.4 mXH.MXr.. ", -" $ 3XNXw.1 u.O BXX 2.v w e nX X* 4 v 1 w VX5XX = f P vX=.NXoX# ", -"# +.4.@.> w .XG S.u.CX$ * ZXw * 5 % % % 9 7 o < X.cXAXSX@.A X ", -"X 1 P @X# # oX#.DXX o $ . . , v # ", -" . X $ $ . # $ # X $ " +"qXwXrXeXeXeXeXeXeXeXeXeXrXqXeXiXwXrXeXeXrXtXeXeXeXrX0XrXeXwXwXqX", +"wX6X,X3X2X2X2X2X1X2X2X3X-XwX,X X7X:X3X2XX1X9X6XwX", +"rX,X:X6X4X4X5X3X*X5X4X7XXXXXr.$..X*X6X5X1X+X6X3X8X.XoXE v.'.:XrX", +"eX3X6XrXwXeXeXqX,XrX8XlXW.<.P.~.=.=XdX0XwX1XrX8XzXU.1.U.C.'.tX0X", +"eX2X4XwX0XqXqX9X,X8XhX!.$.4X#X-XoXo.;XaX6X,X8XhXT.*.6X#X-XtXqXqX", +"eX2X4XeXqX0XeXtX*XhX!.#.9XgX4X6XlX+XX.:XiX&XkXT.%.eXdX1X9XtX0XqX", +"eX2X5XeXqXeX5XK.U.A.=.0XpX[.V.R.@XjX@Xo.*XsXY.&.eXuX|.L.Y.=XtX0X", +"eX2X3XqX9XwX~.!.| N.{.dX@XQ.j.,.^.:XdXOX#.c.<.8XiX#XL.&.8.W.5XwX", +"eX1X*X,XX_.I.| ;.(.*XyX", +"eX2X5XrX8XhXF.c.s.K. XfX;Xk.,.b.c.rXeX9XaX.X+.-XgX&XW.g.N.!.8XwX", +"eX2X4X8XhX!.=.'./.|.rXuX<.M..X{.t.f.jX9X5X6X@X..-XfX+X(._.1XrX0X", +"eX2X6XlX!.#.0XdX,XfXuX:.F.cX,X7XlXy.s.jXeX>XhX+XX.=XzX3XeXtX0XqX", +"rX,X*XR.%.0XiX%X[.=X1.F.jX8XXhXOX+..XoX XqXwXqX", +"yX$Xk.5.3XfXXXv.f.b.m.cX8XtX3X7XrXqXhXi.p.e.D.*XxX].0.i.D.).eX0X", +"pX[.=.*X|.1XW.1XX.eX/.2XX>X-Xo.+XjX1XXXqXeX0X0XeX1X5XwXqX0XtX4X.XyXi.a.kXwX+X:XyXqXqX", +"eX3X5XdX;XX.+XdX,XeX0XqXqXeX1X5XwXqXqXqXqX2XeXhXu.a.lX2X8XqXqXqX", +"eX2X3X0XaX:XX.+X8X9XwXqXqXeX2X6XeXqXqXwX9X>XwX9XjXu.f.eX5XwXqXqX", +"eX2XwX0X6XiX;X| ].sX6X0X9XqXX-X6XOX] `.9X-X>XX>X,X:X@X,X>X;X2X2XE 2XeXqXqX", +"wX9Xp.t.hXqX9XpXXXO.#XfX8XrX2X6XrXwXwXeX0X,XrX0XyXeX=.I.eXqXqXqX", +"eX1XpXl.q.gX0X5X5X:X..@XsX9X1X5XwXqXqXqX9X>X0XrXeX$.W.eX2XwXqXqX", +"eX2X6XzXj.w.gXrX>XgX;XX.+XgX>X5XwXqXqXqX0X:XyXeX%.R.xXX@.`.eXeXeXeXeXeX-X-.W.xX c #61615E", -", c #656462", -"< c #686765", -"1 c #6A6966", -"2 c #6D6C6A", -"3 c #706F6C", -"4 c #71706E", -"5 c #757472", -"6 c #787774", -"7 c #7A7976", -"8 c #7D7C79", -"9 c #807F7C", -"0 c #82817E", -"q c #858481", -"w c #888783", -"e c #8B8A86", -"r c #8E8D89", -"t c #908F8B", -"y c #93918E", -"u c #969591", -"i c #989693", -"p c #9B9996", -"a c #9E9D99", -"s c #A09F9B", -"d c #A3A19D", -"f c #A6A5A0", -"g c #A8A7A3", -"h c #ACAAA6", -"j c #AEADA9", -"k c #B1AFAB", -"l c #B4B2AE", -"z c #B6B5B0", -"x c #B8B7B2", -"c c #BCBAB6", -"v c #BFBDB9", -"b c #C1BFBA", -"n c #C4C2BD", -"m c #C7C5C1", -"M c #C8C6C2", -"N c #CCCAC5", -"B c #CFCDC8", -"V c #D0CFCA", -"C c #D5D3CE", -"Z c #D7D5D0", -"A c #D8D6D1", -"S c #DBD9D4", -"D c #DFDDD8", -"F c #E1DFD9", -"G c #E5E3DD", -"H c #E7E5E0", -"J c #E9E6E1", -"K c #ECEAE4", -"L c #F0EEE9", +"48 48 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"GCCnVVJu+VSCBVCCCZCC", -"CCZMNZCCCCCDnzDZ$0JBDBkCACG<>GCnBJu+BSZSxbDZCCCC", -"CCZMNZCCCCCspad%0JBShifixAVG<>GbGu+VSCMudspCCCZC", -"CCZMBACCCDdp51i8DCDlp8>lunDCG<,Ay+VSCZyx<7kpSCCC", -"CCZMmBNBVniDeXivfCVyNA60VuCNNDGZZVyN,7NyZCZC", -"CCZMNCCVZZ%7zzplDVG2;lld$eGVCVCnF<>GVSxyclynZCCC", -"CCSnNZCZS$0ShsMSCG2;SlpnC@eJCCZnVG<:GCANdgVACCCC", -"ZCZNNCZS$0JZCBABG2;FCANSSC@eGBCnVCG<:GCZBCZCZCCC", -"CCAnNGZ$qJVDNnDG2;FCCCnCCCC@eJSbZSVG<:GDnBDCCCCC", -"CCZnph&0JVSksph2;FCCCCnZCCSC$0kspcSCG<>jsijACCCZ", -"CCSzdy3KBSjaeiz=SCCCCCnCCCCDn;t2kuxACF:s8jdgSCCC", -"CCAn@ZdnZByD0:LhzSCCCCnCCCBDhbn0:SyZZcgG:0KyNZCC", -"CCDk9FpjNkpGn3KjpnnnnnlnnnnnynD5uFrbNshKf0LsbZCC", -"CCSj5SaVZZyZ5ozdbSCZCCnCCCCDjl5 dVsAAniA&@MuBZCZ", -"CCZBj0:GVAxyhkydSCCCCCnCCCCCCualj,9JBAgukjrzACCC", -"CCAbpn<>GCSnspzZCCCCCCnZCCCCSCkigb%eJVAxpsbSZCCC", -"CCZNCSG>>GCSZNDCCCCCCCnCCCCCCCDnAFZ@rGVDBVAVCCCZ", -"CCZnNCCG<>FZNnZCCCCCCCnCCCCCCCCnVVAZ@eJCmMZCZCCC", -"CCZMNZCCG>>GBnZCCCCCCCnCCCCCCCSnVZCAZ@eJbBACCCCC", -"CZAnMZCCCG<>DnCCCCCCCCbCCCCCCCCnVZCVAZ@rAMZZCCZC", -"CCZNZZZZCCG<;ZZCZZAZZCnASCCZSCSnZAAAZAA$9ZCCCZCC", -"CCDkqVbbnnnC;;VnnnnnnnznnnnnnnnlbnbnbbMMXbACCCCZ", -"CCAbOeGBVVVVD=:FVVCVCVbCVVVCVVCbVCVCVVF3-VZCCCCC", -"ZCZBN$rJVZZZNZ2>GCCCCCbACAZCZCAnCCCCCG3:VBZCCCCC", -"CCZnVZ@rJVCZBnG>>GCCCCbZCCCCCCAnVCCCG3=GnNZCZCZC", -"CZAnMAC@rJVZBnZG,,FCCCnCZCCCCCZnCCCG2;FZnBZZCCCC", -"CZZMZZZZ@rJCCBZCG,>GCVnCCCCCCCZbVCG3-FCZBVZZCCCC", -"ZVAbkCZZC@eGkgBACG,,GCbACCCCCCAnVG3=FCZBhkZACCZC", -"CCAnsyMZZC$5ddtzSVG,,FbCCCCCCCCbG2-FCAbusstnACCC", -"ZVSx>buACDpn32GrNACJ<,NZAAAAAZAB2;GAAVyx-1buZCCC", -"CCVJ9dhlBxiGc2KkdVnnA-5CnnnnnnC9&VMnBfb0jrpjbSZZ", -"CCZC=zdcCbuGp$ZjgCNNNCbNBBBNBNNbVBBMVhlp3,lfbACC", -"ZCSzubuSCSple1puVAZZCZSZAAZZZZZAZZZZAZyM0ibuAVZV", -"CCZBfuVZCZCpglpnACCCCCCCCCZCCZCCCCCCCAnykguVACZZ", -"CCZBnSZCCCCSnbCZCCCZCZCCZCCCCCCCCZZCZVAZbbAZZVZZ", -"CCCCZCCCCCCCZSCCCCCCCCCCCCCZCCZCZVCCZVZCAZZZCZCC", -"CCCCCCCCCCZCCCCCZCCCCCCZCZCCCZCZCCCCCZZVZZZVCZCC", -"CCCZCZCCCZCCCCCZCCCZCCCCCCCCCCCCCCCZCCZZZVCCCZVZ" +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX", +"qXqXqXqX0XqX0X0X0X0X0X0X0X0X0X0X0X0X0X0XqXqX9X0XqX0XqX0X0X0X0X0X0X0X0X0XqX0XqXqX0X9XqX0XqXqXqXqX", +"qXqXqXeXtXeXrXrXrXrXrXrXrXrXrXrXrXrXrXtX0XqXsXuX0XyXrXrXrXrXrXuXrXrXrXrXeXtXeX9XrXiX9XrXwXqXqXqX", +"qXqXeXX:X:X>X:X:X>X:X$XrX0XW.OXwX@X>X:X:X:X:X{.:X>X:X:X,X$X,XdXX5XwXqXqX", +"qX0XtX&X%X5X2X2X2X2X2X4X;X#X5X2X2X2X4Xm.0XR.I ` wXN.0X1X2X2X4X`.,X3X2X1X9X~.(.1X0 &.sXD.=XtXqXqX", +"qXqXeX,X5XtXeXeXeXeXeXtX6X>XyXwXeX0XhX(.c.N.q.@Xd.*XpXqXeXeXtX>X0XrXeXeXqXaXg.G.<.p.Y.G.yX0XqXqX", +"qX0XrX:X2XeX0XqXqXqX0XwX3X;XeX0X9XrXrX~ <.~.~.Y.| $.hX0X0X0XeX*X8XqXqX6XlXS.H F.).W.D.6XeXqXqXqX", +"qX0XrX:X2XeXqXqXqXqXqXeX3X;XrX8XrXyXY u.cX;X~.6XlX@.O.jX0X0XeX*X8XwX7XlXA.Z 2XaX`..XiXeX0XqXqXqX", +"qX0XrX:X2XeXqXqXqXqXqXqX6XX4XtXwXeXqXpXL.Y.t.X.Y.e.uXqXpX].G.y.` K.A.%XuXqXzX$.+.iXN.D 4XaX0XeXB.[.+.,.).D.uX0XqXqX", +"qX0XrX:X;X6X3X3X6X=XC.fXY.y ~.+XW.0X6XB.2XrX&...9XZ.wX1X2XiX#.C ! &X0XX;X;XX5XyXeXrXwXpXL.`.5.+. XA.,XtXaX^.'.@.L D.R.oXpXeXrXeXrX0X#.@.zXwXtX4XB.,X..:.:XN.wXqXqXqX", +"qX0XrX:X2XwX0X8XeXtXE 8.]..XA.`.uX7XlX,.' }.|.R.U l.zX6X0X0XwX&XfX#.o.jX8XyX}.B.oX|.m.*XyX0XqXqX", +"qX0XrX:X2XeX9XrXyXY p.iX!.K.,XuX7XzX>.[ yX}.F.&X7XK l.zX7XqXeX&X7XlX#.O.jX9XyX2XP.E.8XyX0XqXqXqX", +"qX0XrX>X2X0XrXyXY i.zXqX0X4XtX7XzX>.] fXeXtX1XyXyXqXJ z.xX6XqX*X6X9XkX#.O.jX8XrX5X9XeX0XqXqXqXqX", +"qX0XrX;X2XhXrXY i.xX6XaX3X*XsXlX>.] fXqX0X9X%XwX8XyXqXJ l.cXuX$XwXuX8XkX#.O.hXsX=X2XsX0XqXqXqXqX", +"qX0XrX-XJ.(.~ u.xX7XyX].I.G.^.,.[ fXqX0XwX9X*XwXqX9XyX0XI a._.P.J.OXyX8XkX#.@._.I.D.(.yX0XqXqXqX", +"qX0XuX|.m.n.,.cX6XiX^.D.r.c.].' yXeX0XwXwX0X*XeXqXwX9XaX=X .m.-.P.C.XXyX0XdXo.S.3.Y.T.T.iX9XqXqX", +"qX0XtX*Xt =XR.>XeX4XN.dX0.D nX^.|.tX9X9X0X8X&XqX9X9X8XyXQ.#X#Xt.M 7XV.eXeXOXQ.hXE -.MXM.2XeXqXqX", +"qX9XaX^.=.fXF.(.2X'.D.cX].Y cX`.H.1X%X*X*X&X}.=X*X*X%XX9XpXhX+.@.kX8XuXqX2XsX0XqXqXqXqXqX9X*XwXqXqXqXqXqXqXsX,XrXdX0XJ z.xX5XaX4X8XiX9XqXqXqXqX", +"qX0XrX:X1XqX0XjX+.@.jXqX1X-XwX0XqXqXqXqXqX9X*XwXqXqXqXqXqX0XqX&X7X9XyXqXJ z.zX9X;XX;Xs #XuX0XqXqXqXqX", +"qX0XyX%XB z.jX4X8X8X7X8XsX_ +.fX7X7X8X8X8X6X%X9X8X8X8X8X8X8X0X%X5X9X8X8X7X6XgX1.[ 8XwX0XqXqXqXqX", +"qXqXwX3X1XL c.xX8XwXwXeX2XqX%.@.kXqXqXwXwX0X*XeXqXwXwXwXwXqXrX=X9XeXwXqX9XzX1.[ 7X3XwXqXqXqXqXqX", +"qX0XrX-X7XwXG c.zX7XqXeX3X-XzXO.@.kX0X0XqX9X*XwXqXqXqXqXqX0XeX*X8XwX0X8XzX<._ hX>X1XeXqXqXqXqXqX", +"qX0XrX:X,XiX0XH c.zX7XeX3X=XwXjX+.@.kX0XqX0X*XwXqXqXqXqXqXqXeX*X8XqX8XzX<.` dXrX-X1XeXqXqXqXqXqX", +"qXqXeX,X9XqXtX0XH c.zXqX0X3XtX8XkX+.@.kX0X9X*XwXqXqXqXqXqXqXeX*X8X9XzX<.` fX0XrX5X8XrX0XqXqXqXqX", +"qX0XtX&X).wXwXtX0XG c.fX].W.5XyX9XkX+.@.kX8X&XwXqXqXqXqXqXqXeX*X5XxX<.` fX0XtX6X~._.qXtX0XqXqXqX", +"qX0XrX-XI.V.>XwXtX9XU 0.L.Y.m.|.yX8XjXO.@.hX&XqX0X0X0X0X0X0XwX&XhX1._ dX0XtXoXC.Y.U.V.:XtX0XqXqX", +"qX0XiX|.~ }.Z.yX0XdXS.#X@._ dXv.3XyXwXzX$.@.3XrXeXrXrXrXrXeXrX5X,.{ hXrXrX6XC.'.T _ {.C.eXqXqXqX", +"qXqX7XvX( M./.].5X.XA.cXQ.U bX_.U.6X-X:XeX` 6.0X-X>X>X>X>X-X0Xt.E 9X>X-X5XT.@X3.t.*.z.).#XyX0XqX", +"qX0XwX8Xv W.R.oX8X%XC.lXh.j 8X_.W.9X1X1X2X9X%X3X2X2X2X2X2X2X3X%X8X3X1X1X8X^.|.z.E K U.W.*XtXqXqX", +"qX0XuX|.m.OXZ.pXqXaXF.`.h.=.G.C.6XtXeXeXeXwXyXeXeXeXeXeXeXeXeXyXwXwXeXeXrXwXn.;Xs.n.+XC.yX0XqXqX", +"qXqXeX4XR.Z.7XeX0XwX9XS.W.'.A.&XyX0XqXqXqX0X0XqXqXqXqXqXqXqXqX0X0XqXqXqX0XtX:XN.(.Q.C.6XeXqXqXqX", +"qXqXwX4X&XyXeX0XqX0XwXuX*X+XqXyX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XtXeX#X&XyXeX0XqXqXqX", +"qXqXqXwXtX0XqXqXqXqXqX0XtXyXqX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XqXyXtX0XqXqXqXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqX0XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX0XqXqXqXqXqXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX" }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/slant.sav sgt-puzzles-20160429.b31155b/icons/slant.sav --- sgt-puzzles-20140928.r10274/icons/slant.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/slant.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,51 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :5:Slant +PARAMS :5:8x8de +CPARAMS :5:8x8de +DESC :47:a10h23a32a02b22e3a2c1g3a20d32a0c221a210i0a101b0 +NSTATES :2:44 +STATEPOS:2:44 +MOVE :4:/7,0 +MOVE :4:\7,1 +MOVE :4:\1,0 +MOVE :4:/2,0 +MOVE :4:\0,4 +MOVE :4:/0,5 +MOVE :4:\0,6 +MOVE :4:/0,7 +MOVE :4:\1,7 +MOVE :4:/7,7 +MOVE :4:/3,7 +MOVE :4:\4,7 +MOVE :4:\5,7 +MOVE :4:/2,7 +MOVE :4:/7,4 +MOVE :4:\7,5 +MOVE :4:\7,3 +MOVE :4:\7,2 +MOVE :4:/6,2 +MOVE :4:\6,3 +MOVE :4:\7,6 +MOVE :4:/3,0 +MOVE :4:/2,1 +MOVE :4:\3,1 +MOVE :4:/2,2 +MOVE :4:\3,2 +MOVE :4:/2,3 +MOVE :4:\3,3 +MOVE :4:\1,1 +MOVE :4:/0,1 +MOVE :4:\0,2 +MOVE :4:\1,2 +MOVE :4:\1,3 +MOVE :4:/0,3 +MOVE :4:\1,4 +MOVE :4:\0,0 +MOVE :4:\5,3 +MOVE :4:\6,4 +MOVE :4:/5,4 +MOVE :4:/5,5 +MOVE :4:\6,5 +MOVE :4:/4,5 +MOVE :4:\4,6 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/slant-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/slant-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/solo-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/solo-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/solo-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/solo-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/solo-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/solo-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/solo-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/solo-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/solo-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/solo-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/solo-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/solo-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/solo-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/solo-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/solo-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/solo-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/solo-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/solo-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/solo-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/solo-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/solo-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/solo-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/solo-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/solo-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/solo.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/solo.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/solo-icon.c sgt-puzzles-20160429.b31155b/icons/solo-icon.c --- sgt-puzzles-20140928.r10274/icons/solo-icon.c 2014-09-29 00:33:48.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/solo-icon.c 2016-04-29 00:31:43.000000000 +0000 @@ -1,569 +1,765 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 133 2 ", +"16 16 246 2 ", " c #010101", -". c #100F0F", -"X c #111110", -"o c #0E100E", -"O c gray6", -"+ c #111010", -"@ c #111111", -"# c #0F100E", -"$ c #101110", -"% c #BAB8B4", -"& c #D0CDC9", -"* c #D2CBCC", -"= c #CCCAC6", -"- c #B7B5B1", -"; c #C8C6C2", -": c #CBC9C5", -"> c #D2D0CB", -", c #C9C7C3", -"< c #CCCAC5", -"1 c #D2CBCB", -"2 c #D2CECC", -"3 c #E1E2DA", -"4 c #8FBD8A", -"5 c #DEDFD7", -"6 c #E2E0DB", -"7 c #C6C4BF", -"8 c #999794", -"9 c #DEDCD7", -"0 c #CAC9C4", -"q c #E8E3E1", -"w c #9AC295", -"e c #B8D1B2", -"r c #D6D0CF", -"t c #10110F", -"y c #D1CACA", -"u c #B7CDB1", -"i c #40983E", -"p c #CCD3C5", -"a c #C8C4C2", -"s c #E0DED9", -"d c #AEACA8", -"f c #5D5C5A", -"g c #DBDAD4", -"h c #C5C3BE", -"j c #E1DCDA", -"k c #5AA457", -"l c #82B87E", -"z c #D4CBCD", -"x c #E1E0DA", -"c c #C7D2C1", -"v c #DADBD3", -"b c #C9C6C2", -"n c #E0DED8", -"m c #BBBAB5", -"M c #C7C6C1", -"N c #E2DFDB", -"B c #CCD4C5", -"V c #D0D9CA", -"C c #CFCBC8", -"Z c #CCC7C5", -"A c #CAC7C3", -"S c #B3B2AD", -"D c #C3C2BD", -"F c #CDCBC6", -"G c #CFCDC8", -"H c #C4C2BE", -"J c #B3B2AE", -"K c #C8C6C1", -"L c #CAC5C3", -"P c #B6B5B0", -"I c #D4D3CE", -"U c #DBD9D4", -"Y c #C4C3BE", -"T c #D7D5D1", -"R c #D9D7D2", -"E c #D7D5D0", -"W c #D7D6D0", -"Q c #DDDCD6", -"! c #696866", -"~ c #DAD8D3", -"^ c #C9C7C2", -"/ c #DDDBD6", -"( c #C7C5C1", -") c #E1DFDA", -"_ c #CBC9C4", -"` c #10100F", -"' c #CECDC8", -"] c #D1CFCA", -"[ c #6A6967", -"{ c #D9D8D2", -"} c #D8D6D1", -"| c #B6B4B0", -" . c #CECCC7", -".. c #B3B1AD", -"X. c #CAC6C4", -"o. c #CBC7C4", -"O. c #C9C8C3", -"+. c #B6B5B1", -"@. c #BFBDB9", -"#. c #DDDAD6", -"$. c #D2D7CB", -"%. c #D0D7C9", -"&. c #E2DFDA", -"*. c #101010", -"=. c #636260", -"-. c #CAC8C4", -";. c #C8C7C2", -":. c #E0D9D9", -">. c #B0C8AA", -",. c #65AA61", -"<. c #DFD9D8", -"1. c #C2C1BC", -"2. c #E8E6E1", -"3. c #959490", -"4. c #A7A6A2", -"5. c #D5D3CE", -"6. c #0E0E0E", -"7. c #DCDAD5", -"8. c #A5A4A0", -"9. c #E8E6E0", -"0. c #E5DFDD", -"q. c #B7CEB1", -"w. c #90BF8C", -"e. c #E4DEDC", -"r. c #ECEAE5", -"t. c #A3A29E", -"y. c #A2A09D", -"u. c #BAB9B4", -"i. c #CECCC8", -"p. c #CDCBC7", -"a. c #D1CBCA", -"s. c #D0CEC9", -"d. c gray100", +". c #101010", +"X c gray7", +"o c #0F110F", +"O c gray7", +"+ c #101010", +"@ c gray7", +"# c #111111", +"$ c #101010", +"% c #111111", +"& c #101010", +"* c gray7", +"= c #0F110F", +"- c #111211", +"; c #101010", +": c #010101", +"> c #101010", +", c #C2C3C2", +"< c gray85", +"1 c #DCD6DC", +"2 c #D6D5D6", +"3 c gray75", +"4 c gray82", +"5 c #D5D5D5", +"6 c gainsboro", +"7 c #D2D2D2", +"8 c gray75", +"9 c #D5D5D5", +"0 c #DCD6DC", +"q c #DCDADC", +"w c gray76", +"e c #101010", +"r c gray7", +"t c gray85", +"y c #EBEEEB", +"u c #94C794", +"i c #E6EAE6", +"p c #D5D4D5", +"a c #EDEEED", +"s c #CBCBCB", +"d c #9D9D9D", +"f c #EBECEB", +"g c #D2D3D2", +"h c #F4F0F4", +"j c #A2CDA2", +"k c #BBDBBB", +"l c #E0DBE0", +"z c #101110", +"x c #101110", +"c c #DAD5DA", +"v c #C2DAC2", +"b c #3F9E3F", +"n c #D4DED4", +"m c #D1CFD1", +"M c #EBECEB", +"N c gray68", +"B c #6C6C6C", +"V c #E9E9E9", +"C c #CCCDCC", +"Z c #F0EAF0", +"A c #5BAC5B", +"S c #7BBD7B", +"D c #DED7DE", +"F c #0F110F", +"G c gray7", +"H c #D5D5D5", +"J c gray93", +"K c #D2DED2", +"L c #E5E8E5", +"P c #D2D1D2", +"I c #EAEAEA", +"U c #CDCDCD", +"Y c #C6C6C6", +"T c gray91", +"R c #D0D1D0", +"E c #EDEBED", +"W c #D6E0D6", +"Q c #D8E5D8", +"! c #D8D6D8", +"~ c #111211", +"^ c #101010", +"/ c gray75", +"( c gray83", +") c #D4D1D4", +"_ c #D2D2D2", +"` c #BBBCBB", +"' c gray80", +"] c gray84", +"[ c #D8D8D8", +"{ c #CDCDCD", +"} c #BCBCBC", +"| c gray82", +" . c #D2D0D2", +".. c #D9D6D9", +"X. c #BEBFBE", +"o. c #101010", +"O. c #111111", +"+. c #D2D2D2", +"@. c #E7E7E7", +"#. c #DFDFDF", +"$. c #E6E6E6", +"%. c #CDCDCD", +"&. c #E1E1E1", +"*. c gray89", +"=. c #E2E2E2", +"-. c #E1E1E1", +";. c #CDCDCD", +":. c gray90", +">. c #E1E2E1", +",. c #E7E8E7", +"<. c gray82", +"1. c #111111", +"2. c #101010", +"3. c gray86", +"4. c #CACACA", +"5. c gray38", +"6. c #E1E1E1", +"7. c #D2D2D2", +"8. c #E4E4E4", +"9. c #E7E7E7", +"0. c #E4E4E4", +"q. c #D0D0D0", +"w. c gray91", +"e. c gray90", +"r. c gray92", +"t. c gray83", +"y. c gray7", +"u. c #111111", +"i. c #D8D8D8", +"p. c gray85", +"a. c #686868", +"s. c LightGray", +"d. c gray84", +"f. c gray89", +"g. c #111111", +"h. c #D2D2D2", +"j. c gray89", +"k. c #D8D8D8", +"l. c gray91", +"z. c #CDCDCD", +"x. c #E1E1E1", +"c. c #E4E4E4", +"v. c #E3E4E3", +"b. c #E1E1E1", +"n. c #CDCDCD", +"m. c gray90", +"M. c #E1E1E1", +"N. c gray91", +"B. c gray82", +"V. c #111111", +"C. c #101010", +"Z. c gray", +"A. c #D8D8D8", +"S. c #D2D2D2", +"D. c #BBBBBB", +"F. c #CDCDCD", +"G. c #D3D1D3", +"H. c #D4D2D4", +"J. c #CDCDCD", +"K. c #BCBCBC", +"L. c gray82", +"P. c LightGray", +"I. c gray84", +"U. c gray75", +"Y. c #101010", +"T. c #111111", +"R. c #D7D7D7", +"E. c gray89", +"W. c #C6C6C6", +"Q. c #E6E6E6", +"!. c #D2D2D2", +"~. c #E7E6E7", +"^. c #DBE3DB", +"/. c #D8E2D8", +"(. c #E7E6E7", +"). c #D0D1D0", +"_. c #ECECEC", +"`. c gray83", +"'. c gray90", +"]. c #D7D7D7", +"[. c #111111", +"{. c #111111", +"}. c #D5D5D5", +"|. c #DDDDDD", +" X c #606060", +".X c #D7D7D7", +"XX c #D1D2D1", +"oX c #E9E5E9", +"OX c #BBD4BB", +"+X c #5FAF5F", +"@X c #E7E4E7", +"#X c #CBCCCB", +"$X c #F3F3F3", +"%X c #959595", +"&X c #ACACAC", +"*X c #DFDFDF", +"=X c gray6", +"-X c gray7", +";X c gray86", +":X c gray90", +">X c #AEAEAE", +",X c #F3F3F3", +" , - < 1 2 % . ", -"X & 3 4 5 : 6 7 8 9 0 q w e r t ", -"# y u i p a s d f g h j k l z o ", -"X = x c v b n h m 9 M N B V C $ ", -"O - : Z A S D F G H J K L C P O ", -"X ; 9 I U Y T R R E Y U W Q ; X ", -". > H ! ~ ^ ~ / / ~ ( 9 U ) _ X ", -"` ' ] [ : < R / / ~ ( 9 U ) _ X ", -"+ , ~ G / H E ~ { E Y U } 9 ; X ", -"O | .G ^ ..H X.o.H J K O.F +.O ", -"+ .U @.U , #.$.%.#.M &.< U .X ", -"*.0 R =.-.;.:.>.,.<.1.2.3.4.5.6.", -"X ] 7.8.9.;.0.q.w.e.;.r.t.y.R O ", -". u.i.p.< - ; 0 a.; - < O.s.% . ", -" . @ . X O X @ ` X O @ X @ . " +" . X o O + @ # $ % & * = - ; : ", +"> , < 1 2 3 4 5 6 7 8 9 0 q w e ", +"r t y u i p a s d f g h j k l z ", +"x c v b n m M N B V C Z A S D F ", +"G H J K L P I U Y T R E W Q ! ~ ", +"^ / ( ) _ ` ' ] [ { } | ...X.o.", +"O.+.@.#.$.%.&.*.=.-.;.:.>.,.<.1.", +"2.3.4.5.6.7.8.9.9.0.q.w.e.r.t.y.", +"u.i.p.a.s.d.f.9.9.0.q.w.e.r.t.y.", +"g.h.j.k.l.z.x.c.v.b.n.m.M.N.B.V.", +"C.Z.A.p.S.D.F.G.H.J.K.L.P.I.U.Y.", +"T.R.E.W.Q.!.~.^./.(.)._.`.'.].[.", +"{.}.|. X.XXXoXOX+X@X#X$X%X&X*X=X", +"-X;X:X>X,X c #D6D4CF", -", c #CFCDC8", -"< c #CECDC8", -"1 c #CECCC7", -"2 c #E3E1DC", -"3 c #DFDDD8", -"4 c #DEDDD7", -"5 c #E3DFDC", -"6 c #E9E1E1", -"7 c #D2D0CC", -"8 c #B9B7B3", -"9 c #E6E3DE", -"0 c #DEDCD7", -"q c #EAE7E2", -"w c #EDEBE6", -"e c #E1DFD9", -"r c #E6E4DE", -"t c #E3E1DB", -"y c #E8E1E1", -"u c #ECE2E4", -"i c #DFDCD7", -"p c #D9D8D2", -"a c #E0DBD9", -"s c #C9D2C3", -"d c #AFC8A9", -"f c #DEDAD7", -"g c #CECCC8", -"h c #B5B3AF", -"j c #E1DFDA", -"k c #D9D8D3", -"l c #DDDBD6", -"z c #ADACA8", -"x c #999895", -"c c #D7D5D1", -"v c #DCDAD5", -"b c #DAD8D3", -"n c #E2DCDB", -"m c #B6CBB1", -"M c #A3C39E", -"N c #D7D7D0", -"B c #DAD9D3", -"V c #E8DFE1", -"C c #419C3F", -"Z c #339532", -"A c #E7DEE0", -"S c #DDDCD6", -"D c #B6B4B0", -"F c #E2E0DB", -"G c #7F7E7B", -"H c #5B5A58", -"J c #585755", -"K c #E9E6E1", -"L c #9FC29A", -"P c #30962E", -"I c #7AB376", -"U c #E1DED9", -"Y c #E9DFE1", -"T c #84B780", -"R c #56A553", -"E c #51A34E", -"W c #DBD9D4", -"Q c #FEFCF6", -"! c #7B7A77", -"~ c #646360", -"^ c #EAE8E2", -"/ c #DCDCD5", -"( c #EDE1E6", -") c #5EA55B", -"_ c #51A24F", -"` c #5EA85B", -"' c #BBCCB5", -"] c #E6E0DF", -"[ c #E5DDDE", -"{ c #75B272", -"} c #4A9F48", -"| c #178817", -" . c #B3CAAD", -".. c #E7E0E0", -"X. c #CDCCC7", -"o. c #D9D7D2", -"O. c #E4E2DD", -"+. c #535351", -"@. c #090909", -"#. c #AAA8A4", -"$. c #E0DED9", -"%. c #EBE0E3", -"&. c #82B67E", -"*. c #65AB62", -"=. c #429B40", -"-. c #A9C5A3", -";. c #EAE2E3", -":. c #D1D6CB", -">. c #A6C4A0", -",. c #B5B4B0", -"<. c #DAD8D4", -"1. c #908F8C", -"2. c #8B8986", -"3. c #A3A29E", -"4. c #DFDDD7", -"5. c #DFDBD7", -"6. c #91BC8C", -"7. c #E2DBDB", -"8. c #E1DEDA", -"9. c #E9E1E2", -"0. c #D2D0CB", -"q. c #B8B7B3", -"w. c #E5E3DE", -"e. c #EEECE6", -"r. c #EFEDE7", -"t. c #EEE3E6", -"y. c #CDCCC6", -"u. c #C3C1BD", -"i. c #ABA9A6", -"p. c #D5D3CE", -"a. c #CCCAC6", -"s. c #CCCAC5", -"d. c #CDCBC6", -"f. c #CCCCC6", -"g. c #969591", -"h. c #BBB9B5", -"j. c #E2E0DA", -"k. c #E8E6E1", -"l. c #E4E2DC", -"z. c #504F4D", -"x. c #7F7D7B", -"c. c #D6D4D0", -"v. c #A1A09C", -"b. c #1D1C1C", -"n. c #8B8A87", -"m. c #CBCAC5", -"M. c #30302F", -"N. c #B4B2AE", -"B. c #CDCBC7", -"V. c #DEDCD6", -"C. c #AAA9A5", -"Z. c #5D5C5A", -"A. c #E5E3DD", -"S. c #ECEAE5", -"D. c #E9E7E2", -"F. c #A2A09D", -"G. c #B3B2AD", -"H. c #DDDAD6", -"J. c #B5CAB0", -"K. c #B0C8AA", -"L. c #DBD8D4", -"P. c #E1E0DA", -"I. c #D7D5D0", -"U. c #B1AFAB", -"Y. c #CBC9C4", -"T. c #6F6E6C", -"R. c #1E1E1D", -"E. c #BEBCB8", -"W. c #E6E4DF", -"Q. c #D8D8D1", -"!. c #87B983", -"~. c #389937", -"^. c #EADFE2", -"/. c #DFDFD8", -"(. c #343433", -"). c #757371", -"_. c #F2EFEA", -"`. c #B2B0AC", -"'. c #4D4C4A", -"]. c #E6DEDF", -"[. c #C0CFBA", -"{. c #349832", -"}. c #93BD8F", -"|. c #E8DEE1", -" X c #F4F2EC", -".X c #8E8D8A", -"XX c #767572", -"oX c #F2F0EB", -"OX c #40403E", -"+X c #9E9C99", -"@X c #CFD5C8", -"#X c #A1C39C", -"$X c #469E44", -"%X c #77B173", -"&X c #ECE0E4", -"*X c #5A5A57", -"=X c #CFCEC9", -"-X c #D3D2CD", -";X c #91908C", -":X c #DCD9D5", -">X c #D3D6CC", -",X c #87B882", -" c #515151", +", c #555555", +"< c gray35", +"1 c gray37", +"2 c #656565", +"3 c DimGray", +"4 c #777777", +"5 c #797979", +"6 c #7B7B7B", +"7 c gray49", +"8 c #7E7E7E", +"9 c #158E15", +"0 c #2B9B2B", +"q c #2E9C2E", +"w c #359D35", +"e c #399F39", +"r c #38A038", +"t c #44A344", +"y c #44A544", +"u c #4AA74A", +"i c #4BA74B", +"p c #4EA94E", +"a c #53AB53", +"s c #5AAD5A", +"d c #5CAF5C", +"f c #77B677", +"g c #74B874", +"h c #7CBB7C", +"j c gray53", +"k c gray54", +"l c gray55", +"z c #989898", +"x c gray60", +"c c #9B9B9B", +"v c #9D9D9D", +"b c #82BD82", +"n c #84BF84", +"m c #86BF86", +"M c gray65", +"N c #A7A7A7", +"B c gray67", +"V c gray69", +"C c #B1B1B1", +"Z c gray70", +"A c #B4B4B4", +"S c #B7B7B7", +"D c #BBBBBB", +"F c gray74", +"G c gray", +"H c #8CC28C", +"J c #8DC28D", +"K c #8FC38F", +"L c #99C799", +"P c #A0C9A0", +"I c #A2CAA2", +"U c #A2CBA2", +"Y c #A6CCA6", +"T c #A8CCA8", +"R c #AECFAE", +"E c #B6D2B6", +"W c #B6D3B6", +"Q c #B7D2B7", +"! c #B7D3B7", +"~ c #C1C1C1", +"^ c #C3C3C3", +"/ c gray79", +"( c gray80", +") c #CDCDCD", +"_ c #CECECE", +"` c #C0D7C0", +"' c #C3D8C3", +"] c #C5D8C5", +"[ c #D2D2D2", +"{ c LightGray", +"} c gray83", +"| c #D5D5D5", +" . c gray84", +".. c #D6D7D6", +"X. c #D7D7D7", +"o. c #D2DDD2", +"O. c #D6D8D6", +"+. c #D7D8D7", +"@. c #D7D9D7", +"#. c #D8D8D8", +"$. c #D8D9D8", +"%. c #D9D8D9", +"&. c gray85", +"*. c #DADADA", +"=. c gainsboro", +"-. c #DDDDDD", +";. c gray87", +":. c #DFDFDF", +">. c #D7E0D7", +",. c #DDE2DD", +"<. c #DEE2DE", +"1. c #E1E1E1", +"2. c #E2E2E2", +"3. c gray89", +"4. c #E1E4E1", +"5. c #E2E4E2", +"6. c #E3E4E3", +"7. c #E4E4E4", +"8. c #E5E4E5", +"9. c gray90", +"0. c #E5E6E5", +"q. c #E6E5E6", +"w. c #E7E5E7", +"e. c #E6E6E6", +"r. c #E7E6E7", +"t. c #E7E7E7", +"y. c #E6E8E6", +"u. c #E7E8E7", +"i. c #E7E9E7", +"p. c #E8E6E8", +"a. c #EBE7EB", +"s. c gray91", +"d. c #E8E9E8", +"f. c #E9E8E9", +"g. c #E9E9E9", +"h. c #E9EBE9", +"j. c #EAE9EA", +"k. c #EAEAEA", +"l. c #EAEBEA", +"z. c #EBEAEB", +"x. c gray92", +"c. c #ECE8EC", +"v. c #EDE8ED", +"b. c #ECEAEC", +"n. c #EEE9EE", +"m. c #EEEBEE", +"M. c #EFEAEF", +"N. c #ECECEC", +"B. c gray93", +"V. c #EEEEEE", +"C. c #EFEFEF", +"Z. c #F1EAF1", +"A. c #F1EBF1", +"S. c #F3EBF3", +"D. c #F0ECF0", +"F. c #F1EDF1", +"G. c #F2EDF2", +"H. c #F3EDF3", +"J. c #F4EBF4", +"K. c #F5EBF5", +"L. c #F4EEF4", +"P. c #F6ECF6", +"I. c #F6EEF6", +"U. c #F7EFF7", +"Y. c #F8EDF8", +"T. c gray94", +"R. c #F1F1F1", +"E. c gray95", +"W. c #F3F3F3", +"Q. c #F4F4F4", +"!. c gray96", +"~. c #F6F6F6", +"^. c gray97", +"/. c #F9F0F9", +"(. c #FBF1FB", +"). c #F8F8F8", +"_. c #FBFBFB", +"`. c #FDFDFD", +"'. c #FEFEFE", +"]. c white", /* pixels */ " ", -" . X o O O O O O o X + o O O O O O O o + X o O O O O O o X . ", -" X @ # $ % & * = - ; : > , = < 1 = , > : ; - = = < * $ # @ X ", -" o # 2 3 4 5 6 4 2 7 8 9 0 3 q w e 0 r 8 7 t 3 4 y u 3 t # o ", -" O $ i p a s d f 0 g h j k l z x c v e h g 0 b n m M N 3 , O ", -" O = 3 B V C Z A S , D F v > G H J K 3 D , S A L P I N U = O ", -" O = S Y T R E v 3 , D F b W Q ! ~ ^ 3 D , / ( ) _ ` ' ] & O ", -" O = S [ { } | ...X.D F o.O.+.@.#.j $.D , / %.&.*.=.-.;.< O ", -" O = 3 b [ :.>.f 4 , ,.j W <.1.2.3.4.j ,., 3 W 5.6.>.7.0 = O ", -" o - t i 4 8.9.4 t 0.q.w.0 3 e.r.^ l 9 q.0.t 3 3 t.;.S 2 - o ", -" X ; 7 g , < y., 0.u.i.p.1 , a.s.d.1 p.i.u.0., , f.y.g 7 ; X ", -" + : 8 h D D D ,.q.i.g.h.h D D D D h h.g.i.q.,.D D D h 8 : + ", -" o > w.j j $.j j.w.p.h.k.e F F F F e k.h.p.w.j.F F F j 9 > o ", -" O , 0 o.4.l.v W 0 1 h e o.W W W W o.e h 1 0 b W W W b 0 , O ", -" O = 0 l.h z.x.c.e , D F W v v v v W F D , 3 v v v v W 3 = O ", -" O = l k.v.b.n.l 3 , D F W v v v v W F D , 3 v v v v W 3 = O ", -" O = 3 0 m.D M.N.k.B.D F W v v v v W F D , 3 v v v v W 3 = O ", -" O = V.2 C.Z.Z.0.j.g D F W v v v v W F D , 3 v v v v W 3 = O ", -" O , 0 b b s.3 0 l 1 h e o.W W W W o.e h 1 0 b W W W b 0 , O ", -" o > 9 j F w.j j 9 p.h.k.e F F F F e k.h.p.w.j.F F F j 9 > o ", -" + : 8 h D ,.D ,.q.i.g.h.h D D D D h h.g.i.q.,.D D D h 8 : + ", -" X ; 0.g g d.B.g 0.u.i.p.1 , * X., 1 p.i.u.0., , B.g g 0.; X ", -" o - 2 l A.S.K j F 0.q.w.0 3 y 9.3 0 w.q.0.t 3 $.D.2 0 2 - o ", -" O = 0 3 ; F.G.# j g ,.j.b H.J.K.v L.P.,., 3 v I.U.Y.0 0 = O ", -" O = 0 F U.T.R.E.W.1 D F W Q.!.~.T ^./.D , 0 3 0.(.).S.v = O ", -" O = $.I._.`.'.k.l , D F Q.].[.{.}.|./.D , 3 I. X.XXXoXW % O ", -" O = 3 b O.OX+XD.l , D P.H.@X#X$X%X&X/.D , 3 v 3 *Xz.v $.=XO ", -" O $ 0 v -X;Xo.W 0 g h e :X>X&.,X , = wXwX=X, > : ; - = =Xd.eX< -X@ X ", -" . X o O O O O O o X + o O O O O O O o + X o O O O O O o X . ", +" O O O O O O O O O X O O O O O O O O X X O O O O O O O O ", +" O _ -.$.$.$.@.$.:._ A :.#.$.#. .$.$.:.A _ -.$.$.$.$.$.-._ O ", +" O -.B.d.d.m.L.d.B.$.~ T.d.d.!.).m.d.F.~ -.B.d.d.F./.d.B.-.O ", +" O $.d.9.a.o.E 9.9.$.G m.9.d.C M 9.8.m.G .9.9.m.' T <.d.#.O ", +" O $.d.9.S.p w S.u.$.G d.9.-.j * 3 ^.d.G @.a.m.E 0 f <.m.$.O ", +" O $.a.S.n a y <.m.$.G B.9.d.`.3 x T.d.G #.9.Y.f e d Q L.$.O ", +" O $.u.m.J i 9 ' F.$.G d.9.B.= $ G d.B.G #.d.L.L i t I L.$.O ", +" O $.d.5.S.5.R m.d.$.G l.9.9.x l B m.d.G #.d.9.a.I Y a.u.$.O ", +" O -.B.d.a.d.L.9.B.-.~ C.a.d.).).Q.u.F.G -.B.d.d.L.L.a.B.-.O ", +" o _ -. .$.$. .#.-.( C -.$.#. . . .#.-.A ( -.#.$. . .@.$._ O ", +" X A ~ G G G G G ~ A v ~ G G G G G G ^ v A ~ G G G G G ~ A X ", +" O :.F.B.l.d.B.m.C.-.^ W.m.B.B.B.B.d.!.~ -.T.B.l.B.l.m.T.:.O ", +" O $.d.9.d.T.d.9.u. .G l.2.9.9.9.9.9.d.G .d.9.9.9.9.5.d.$.O ", +" O $.9.B.C - 7 5.m.@.G B.9.9.9.9.9.9.B.G $.d.a.9.9.9.9.m.$.O ", +" O $.a.!.x + 2 9.d.#.G l.9.9.d.u.9.9.m.G $.d.9.9.d.a.9.d.$.O ", +" O $.d.9.{ _ $ F W. .G l.9.9.9.9.9.9.B.G #.d.a.9.9.9.9.B.$.O ", +" O $.9.T.M - 1 -.d.$.G B.9.a.9.9.u.9.B.G $.d.9.9.9.9.9.d.$.O ", +" O $.a.9.9.$.B.d.a. .G d.9.9.9.9.9.2.B.G @.d.9.9.9.9.9.a.#.O ", +" O 2.T.d.B.F.d.d.C.2.~ !.d.B.B.d.B.B.T.^ -.F.d.B.B.B.d.B.2.O ", +" X A ~ G G G G ~ ~ C v ^ G G G G G G ~ v A ~ G G G G G ~ A X ", +" O _ -.$.#. . .$.-._ C -.#.$. .$.$.$.-.C _ -.$.#. . .@.-._ O ", +" O -.B.d.T.).T.m.B.-.~ B.d.m.W.L.d.d.F.~ -.B.u.d.!.B.a.B.-.O ", +" O @.a.d./ B G -.d.#.G m.2.a.! Q 9.9.B.G $.d.a.-.S } d.d.$.O ", +" O $.a.B.N < @ _ T.#.G m.9.9.H w h L.l.G $.9.d.} % 4 !.9.-.O ", +" O $.m.2.`.B , !.9.$.G l.5.m.>.w n P.d.G $.d.2.`.k 6 `.9.$.O ", +" O $.d.9.d.& C T.d. .G B.a.<.U i s P.d.G $.d.a.9.> : 2.m.$.O ", +" O $.d.d. .x u.5.a.#.G d.9.2.J b o.9.m.G $.d.d._ 7 6 / B. .O ", +" O -.B.d.m.^.d.d.B.-.~ F.d.d././.m.u.T.~ -.m.9.B.).).B.B.-.O ", +" o _ -.$.$.#.$.$.-._ A 2.$.$.$.@.$.$.-.A _ -.$.$. .#.$.-._ O ", +" O O O O O O O O O X O O O O O O O O X O O O + O O O O O ", " " }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 102 2 ", -" c #000000", -". c #0C0C0C", -"X c #100F0F", -"o c #111111", -"O c #181717", -"+ c #1B1B1A", -"@ c #262525", -"# c #2C2C2B", -"$ c #31312F", -"% c #363534", -"& c #383837", -"* c #3C3B3A", -"= c #007E00", -"- c #474745", -"; c #494846", -": c #4B4B49", -"> c #51514F", -", c #555553", -"< c #5F5F5C", -"1 c #62625F", -"2 c #656462", -"3 c #696866", -"4 c #71706D", -"5 c #747370", -"6 c #797876", -"7 c #7F7E7B", -"8 c #807F7C", -"9 c #068206", -"0 c #0C860C", -"q c #10890F", -"w c #128A12", -"e c #20901F", -"r c #228E21", -"t c #259124", -"y c #349732", -"u c #349833", -"i c #3C9B3B", -"p c #419B3F", -"a c #469F43", -"s c #4DA24A", -"d c #56A553", -"f c #64AA60", -"g c #6AAD67", -"h c #6EAF6B", -"j c #74B171", -"k c #78B274", -"l c #81807D", -"z c #868582", -"x c #898885", -"c c #92918D", -"v c #979692", -"b c #989794", -"n c #999894", -"m c #A09E9B", -"M c #84B780", -"N c #85B881", -"B c #8ABA86", -"V c #92BD8D", -"C c #97BE93", -"Z c #99BF93", -"A c #A3A39F", -"S c #A7A5A1", -"D c #A8A7A3", -"F c #ABAAA6", -"G c #AFADA9", -"H c #B1AFAB", -"J c #B2B1AD", -"K c #BCBAB6", -"L c #BEBCB8", -"P c #C1BFBB", -"I c #9EC299", -"U c #A3C39E", -"Y c #A9C5A3", -"T c #AEC8A9", -"R c #B1C9AC", -"E c #B9CDB3", -"W c #C6C4BF", -"Q c #C1CFBB", -"! c #C2D0BC", -"~ c #C7C5C0", -"^ c #C8C6C2", -"/ c #CDCBC6", -"( c #CFCDC9", -") c #D1CFCA", -"_ c #C6D1C0", -"` c #CAD3C4", -"' c #CFD5C8", -"] c #D4D3CD", -"[ c #D6D5D0", -"{ c #D9D7D2", -"} c #D7D8D0", -"| c #DBD9D4", -" . c #DFDDD8", -".. c #E2DEDA", -"X. c #E4E2DD", -"o. c #E7DEE0", -"O. c #E9DFE1", -"+. c #E7E5E0", -"@. c #E9E5E2", -"#. c #ECEAE5", -"$. c #F1EEE9", -"%. c #F5F3ED", +"48 48 222 2 ", +" c black", +". c #010101", +"X c #060606", +"o c #0E0E0E", +"O c #101010", +"+ c #111111", +"@ c gray7", +"# c #131313", +"$ c gray8", +"% c #151515", +"& c #1B1B1B", +"* c gray13", +"= c gray14", +"- c gray15", +"; c gray16", +": c gray17", +"> c #2C2C2C", +", c #2D2D2D", +"< c gray18", +"1 c gray19", +"2 c #353535", +"3 c #373737", +"4 c gray22", +"5 c #3A3A3A", +"6 c #3C3C3C", +"7 c gray25", +"8 c gray27", +"9 c gray28", +"0 c gray29", +"q c #4B4B4B", +"w c #505050", +"e c #515151", +"r c #535353", +"t c gray35", +"y c #606060", +"u c gray39", +"i c DimGray", +"p c gray43", +"a c #727272", +"s c #7C7C7C", +"d c gray49", +"f c #008300", +"g c #008400", +"h c #008800", +"j c #048C04", +"k c #088D08", +"l c #109010", +"z c #119011", +"x c #129012", +"c c #159215", +"v c #169316", +"b c #209720", +"n c #229722", +"m c #269726", +"M c #229822", +"N c #289A28", +"B c #2C9C2C", +"V c #309D30", +"C c #319D31", +"Z c #329C32", +"A c #359F35", +"S c #36A036", +"D c #38A038", +"F c #39A139", +"G c #3DA03D", +"H c #42A542", +"J c #45A545", +"K c #47A647", +"L c #4AA84A", +"P c #53A953", +"I c #5BAE5B", +"U c #5EAF5E", +"Y c #68B468", +"T c #69B469", +"R c #868686", +"E c #898989", +"W c #8D8D8D", +"Q c gray60", +"! c gray62", +"~ c #A0A0A0", +"^ c #A2A2A2", +"/ c #A4A4A4", +"( c gray65", +") c #A7A7A7", +"_ c #A9A9A9", +"` c #AAAAAA", +"' c #ACACAC", +"] c gray68", +"[ c #AEAEAE", +"{ c #AFAFAF", +"} c gray69", +"| c #B2B2B2", +" . c #B4B4B4", +".. c #B7B7B7", +"X. c #B9B9B9", +"o. c #BCBCBC", +"O. c gray74", +"+. c gray", +"@. c gray75", +"#. c #8CC28C", +"$. c #91C391", +"%. c #90C490", +"&. c #94C594", +"*. c #96C696", +"=. c #99C799", +"-. c #9BC89B", +";. c #A0CAA0", +":. c #A1CAA1", +">. c #A3CBA3", +",. c #A8CDA8", +"<. c #ACCFAC", +"1. c #B1D1B1", +"2. c #B5D2B5", +"3. c #B5D3B5", +"4. c #B6D3B6", +"5. c #B7D3B7", +"6. c #B8D3B8", +"7. c #BED6BE", +"8. c #BFD6BF", +"9. c gray77", +"0. c #C8C8C8", +"q. c gray79", +"w. c #CBCBCB", +"e. c gray80", +"r. c #CDCDCD", +"t. c #CECECE", +"y. c gray81", +"u. c #C1D6C1", +"i. c #C4D9C4", +"p. c #C8DAC8", +"a. c #C9DAC9", +"s. c #C9DBC9", +"d. c #CADBCA", +"f. c #CFDDCF", +"g. c #D0D0D0", +"h. c gray82", +"j. c #D2D2D2", +"k. c LightGray", +"l. c gray83", +"z. c gray84", +"x. c #D7D7D7", +"c. c #D5DFD5", +"v. c #D8D8D8", +"b. c gray85", +"n. c #DADADA", +"m. c gray86", +"M. c gainsboro", +"N. c #DDDDDD", +"B. c gray87", +"V. c #DFDFDF", +"C. c #D8E0D8", +"Z. c #D9E1D9", +"A. c #DCE2DC", +"S. c #DFE3DF", +"D. c gray88", +"F. c #E1E1E1", +"G. c #E1E3E1", +"H. c #E2E2E2", +"J. c #E2E3E2", +"K. c gray89", +"L. c #E0E4E0", +"P. c #E1E4E1", +"I. c #E2E4E2", +"U. c #E3E4E3", +"Y. c #E3E5E3", +"T. c #E4E4E4", +"R. c #E4E5E4", +"E. c #E5E4E5", +"W. c gray90", +"Q. c #E5E6E5", +"!. c #E6E5E6", +"~. c #E6E6E6", +"^. c #E7E6E7", +"/. c #E7E7E7", +"(. c #E6E8E6", +"). c #E7E8E7", +"_. c #E8E6E8", +"`. c #E8E7E8", +"'. c #E9E7E9", +"]. c #EBE7EB", +"[. c gray91", +"{. c #E8E9E8", +"}. c #E9E9E9", +"|. c #EAE8EA", +" X c #EBE8EB", +".X c #EAEAEA", +"XX c #EAEBEA", +"oX c gray92", +"OX c #EBECEB", +"+X c #ECE8EC", +"@X c #EDE8ED", +"#X c #EDE9ED", +"$X c #EEE9EE", +"%X c #EFE9EF", +"&X c #EFEAEF", +"*X c #ECECEC", +"=X c gray93", +"-X c #EEEEEE", +";X c #EFEFEF", +":X c #F0EAF0", +">X c #F1EAF1", +",X c #F1EBF1", +".F x ,. W ..} .W D X.| | | | | | | | | | X.D W ..| | | | | | | | | .( o ", -" o ) .| | | #.#.#...| | X.W D X.| .| | | | | .| | +.D W X.| | | | | .| | | ..( o ", -" o ( .{ | | [ [ [ [ | [ .W S X.[ | | | | { | | | [ X.S W .| { | | | | | | | | ( o ", -" X | +.X.X.+.X.X.X.X.X.X.#./ H #.X.X.+.X.X.X.X.X.X.X.#.G / #.X.X.X.X.X.X.X.X.X.X.| o ", -" X m D D D F D D D D D D G v 8 G S D D D D D D D D A G 8 v F S D D S S D D D D F m X ", -" X K ^ W W W W W W W W W ^ H v ( W W W W W W W W W W ( v J / W ~ W W ~ W W W W ^ K o ", -" o } X......... ....... .X./ F +.................X...#.F ^ +....... ......... .X.[ o ", -" o ( .| | | | | { | | | X.W D X.{ | | | { | { | | { X.D W ..| | | | | | | | | .) o ", -" o ) .| | | X. .X.X.| | ..W D X.| | | ..o...o.| | | X.D W ..| | | X.+...| | | .) o ", -" o ( .| .{ : % $ , X.| .~ D X.{ | ..E i y h | | | X.D W ..| | X.G $ - | | | .) o ", -" o ) ..| | | K W @ > #.} .W D X.| | ..Q R C 9 Q ..{ X.D W X.| | .W 5 O | | | .) o ", -" o ) .| | | #.L . L X.{ ..W D X.| | { O.j q s ..| | X.D W .| | [ $.F o ] .| .) o ", -" o ) .| | } #., * #.{ | ..~ D X.{ | | ..| I 0 Q ..{ X.D W ..| | [ $.G O #. .| ..( o ", -" o ) .| | ..W . A +.[ | X.~ D X.| { O.M d a r ' ..{ X.D ^ ..| | X.H * . < ) | .) o ", -" o ) .| | ..W v | | | | ..W D X.| | .Q M B ' ..| { X.D W ..| | ..K l c x ] | .( o ", -" o ( | | | { .#.| | | | ..W D X.{ { | ..@.O.| | | { X.D W ..| | | X.#.+.#.| | .( o ", -" o ] X. . . . .| . . .| X.^ F +.| ... . .| .... .| +.F ~ X. ... . .| | | .. .X.] o ", -" X ~ ] ( ) ( ) ( ) ) ) ) [ K m | ( ( ) ( ) ) ( ) ) ( | m K } ( ) ) ) ( ) ( ( ( ] W o ", -" o o o o o o o o o o o o o X o o o o o o o o o o o o X X X o o o o o o o o o o o ", -" ", -" ", +" X ", " " }; diff -Nru sgt-puzzles-20140928.r10274/icons/solo.sav sgt-puzzles-20160429.b31155b/icons/solo.sav --- sgt-puzzles-20140928.r10274/icons/solo.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/solo.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,36 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :4:Solo +PARAMS :3:3x3 +CPARAMS :3:3x3 +DESC :73:a2e9a5b6a2b3_7a1_4a9_6a2b4_1a7_2b1_7e6_9b2_5a8_1b6a5_9a3_8a7_2b8a6b1a1e4a +NSTATES :2:29 +STATEPOS:2:29 +MOVE :6:R7,1,1 +MOVE :6:R4,6,1 +MOVE :6:R5,0,1 +MOVE :6:R0,0,4 +MOVE :6:R2,0,6 +MOVE :6:R1,2,3 +MOVE :6:R0,3,9 +MOVE :6:R1,3,5 +MOVE :6:R2,4,8 +MOVE :6:R0,5,3 +MOVE :6:R1,5,6 +MOVE :6:R1,6,4 +MOVE :6:R4,7,4 +MOVE :6:R7,6,2 +MOVE :6:R7,7,5 +MOVE :6:R8,8,6 +MOVE :6:R7,3,3 +MOVE :6:R8,3,7 +MOVE :6:R8,3,8 +MOVE :6:R6,4,5 +MOVE :6:R7,5,7 +MOVE :6:R8,5,4 +MOVE :6:R7,2,8 +MOVE :6:R8,0,5 +MOVE :6:R4,2,5 +MOVE :6:R4,3,6 +MOVE :6:R5,4,4 +MOVE :6:R4,5,9 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/solo-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/solo-web.png differ diff -Nru sgt-puzzles-20140928.r10274/icons/square.pl sgt-puzzles-20160429.b31155b/icons/square.pl --- sgt-puzzles-20140928.r10274/icons/square.pl 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/square.pl 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,95 @@ +#!/usr/bin/perl + +# Read an input image, crop its border to a standard width, and +# convert it into a square output image. Parameters are: +# +# - the required total image size +# - the output border thickness +# - the input image file name +# - the output image file name. + +($osize, $oborder, $infile, $outfile) = @ARGV; + +# Determine the input image's size. +$ident = `identify -format "%w %h" $infile`; +$ident =~ /(\d+) (\d+)/ or die "unable to get size for $infile\n"; +($w, $h) = ($1, $2); + +# Read the input image data. +$data = []; +open IDATA, "convert -depth 8 $infile rgb:- |"; +push @$data, $rgb while (read IDATA,$rgb,3,0) == 3; +close IDATA; +# Check we have the right amount of data. +$xl = $w * $h; +$al = scalar @$data; +die "wrong amount of image data ($al, expected $xl) from $infile\n" + unless $al == $xl; + +# Find the background colour, by looking around the entire border +# and finding the most popular pixel colour. +for ($i = 0; $i < $w; $i++) { + $pcount{$data->[$i]}++; # top row + $pcount{$data->[($h-1)*$w+$i]}++; # bottom row +} +for ($i = 1; $i < $h-1; $i++) { + $pcount{$data->[$i*$w]}++; # left column + $pcount{$data->[$i*$w+$w-1]}++; # right column +} +@plist = sort { $pcount{$b} <=> $pcount{$a} } keys %pcount; +$back = $plist[0]; + +# Crop rows and columns off the image to find the central rectangle +# of non-background stuff. +$ystart = 0; +$ystart++ while $ystart < $h and scalar(grep { $_ ne $back } map { $data->[$ystart*$w+$_] } 0 .. ($w-1)) == 0; +$yend = $h-1; +$yend-- while $yend >= $ystart and scalar(grep { $_ ne $back } map { $data->[$yend*$w+$_] } 0 .. ($w-1)) == 0; +$xstart = 0; +$xstart++ while $xstart < $w and scalar(grep { $_ ne $back } map { $data->[$_*$w+$xstart] } 0 .. ($h-1)) == 0; +$xend = $w-1; +$xend-- while $xend >= $xstart and scalar(grep { $_ ne $back } map { $data->[$_*$w+$xend] } 0 .. ($h-1)) == 0; + +# Decide how much border we're going to put back on to make the +# image perfectly square. +$hexpand = ($yend-$ystart) - ($xend-$xstart); +if ($hexpand > 0) { + $left = int($hexpand / 2); + $xstart -= $left; + $xend += $hexpand - $left; +} elsif ($hexpand < 0) { + $vexpand = -$hexpand; + $top = int($vexpand / 2); + $ystart -= $top; + $yend += $vexpand - $top; +} +$ow = $xend - $xstart + 1; +$oh = $yend - $ystart + 1; +die "internal computation problem" if $ow != $oh; # should be square + +# And decide how much _more_ border goes on to add the bit around +# the edge. +$realow = int($ow * ($osize / ($osize - 2*$oborder))); +$extra = $realow - $ow; +$left = int($extra / 2); +$xstart -= $left; +$xend += $extra - $left; +$top = int($extra / 2); +$ystart -= $top; +$yend += $extra - $top; +$ow = $xend - $xstart + 1; +$oh = $yend - $ystart + 1; +die "internal computation problem" if $ow != $oh; # should be square + +# Now write out the resulting image, and resize it appropriately. +open IDATA, "| convert -size ${ow}x${oh} -depth 8 -resize ${osize}x${osize}! rgb:- $outfile"; +for ($y = $ystart; $y <= $yend; $y++) { + for ($x = $xstart; $x <= $xend; $x++) { + if ($x >= 0 && $x < $w && $y >= 0 && $y < $h) { + print IDATA $data->[$y*$w+$x]; + } else { + print IDATA $back; + } + } +} +close IDATA; Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tents-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tents-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tents-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tents-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tents-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tents-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tents-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tents-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tents-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tents-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tents-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tents-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tents-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tents-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tents-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tents-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tents-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tents-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tents-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tents-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tents-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tents-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tents-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tents-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tents.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tents.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/tents-icon.c sgt-puzzles-20160429.b31155b/icons/tents-icon.c --- sgt-puzzles-20140928.r10274/icons/tents-icon.c 2014-09-29 00:33:48.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/tents-icon.c 2016-04-29 00:31:44.000000000 +0000 @@ -1,683 +1,714 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 231 2 ", -" c #DDDAD6", -". c #E0D9DC", -"X c #E0D7DB", -"o c #E0D8DC", -"O c #E4DADF", -"+ c #E8DBE2", -"@ c #E2DADE", -"# c #E0D8DB", -"$ c #E1D9DD", -"% c #E7DBE1", -"& c #E6DAE1", -"* c #DEDAD8", -"= c #DCDAD5", -"- c #DBD9D4", -"; c #D6D6CD", -": c #B4D09E", -"> c #B7DCA3", -", c #B5D29E", -"< c #A7CC92", -"1 c #98CB88", -"2 c #ADCC97", -"3 c #B6D7A1", -"4 c #B7DAA3", -"5 c #B2CE9A", -"6 c #9DCC8C", -"7 c #9ECB8A", -"8 c #CBD1BF", -"9 c #DEDBD8", -"0 c #E0DED9", -"q c #DDDBD6", -"w c #D1D5C8", -"e c #A6EA76", -"r c #BFDF34", -"t c #B2F072", -"y c #3BC62A", -"u c #00B000", -"i c #69D850", -"p c #BCEB5C", -"a c #BFE345", -"s c #8DE66A", -"d c #02B500", -"f c #13BE09", -"g c #BCD2A9", -"h c #E4DDDF", -"j c #9F9F9A", -"k c #D0CFCA", -"l c #D1D7CC", -"z c #AADB69", -"x c #CABD10", -"c c #AEDA5B", -"v c #96E46F", -"b c #8FCC4A", -"n c #9BEB7B", -"m c #BACC39", -"M c #C5C220", -"N c #9FE978", -"B c #85CE4D", -"V c #86D750", -"C c #C0D5B1", -"Z c #E2DBDC", -"A c #B8B7B2", -"S c #D5D3CF", -"D c #D1D4C7", -"F c #9CD771", -"G c #A6F178", -"H c #9FDD71", -"J c #7DD059", -"K c #65CF45", -"L c #8AD263", -"P c #A3E675", -"I c #A4EC77", -"U c #97D66B", -"Y c #AEEA7A", -"T c #A5E771", -"R c #BBCDAB", -"E c #E1DBDC", -"W c #E0DFD9", -"Q c #DEDCD7", -"! c #D2D5C8", -"~ c #ACEA7E", -"^ c #B8FF83", -"/ c #B6F483", -"( c #42C72F", -") c #00B100", -"_ c #72D651", -"` c #BDFD87", -"' c #B6FF82", -"] c #A6E977", -"[ c #B6FF83", -"{ c #B0FD7B", -"} c #C0D2AD", -"| c #E2DCDD", -" . c #A9A8A3", -".. c #D7D5D0", -"X. c #A1E077", -"o. c #AEFA7B", -"O. c #A2E675", -"+. c #9EE06D", -"@. c #9DD259", -"#. c #9EE372", -"$. c #A7ED77", -"%. c #ACF57B", -"&. c #9CDE6F", -"*. c #ACF47C", -"=. c #A5F172", -"-. c #BDCFAB", -";. c #C9C8C2", -":. c #D9D7D2", -">. c #9EDC75", -",. c #AAF579", -"<. c #9DE071", -"1. c #A0E373", -"2. c #B1F174", -"3. c #9ADD71", -"4. c #A4E974", -"5. c #A8F079", -"6. c #99D96D", -"7. c #A9EF79", -"8. c #A1EB70", -"9. c #BCCEAB", -"0. c #D7D6CF", -"q. c #BBFF83", -"w. c #AAF382", -"e. c #B5E15B", -"r. c #D1C819", -"t. c #A9EA75", -"y. c #B3FA81", -"u. c #B9FF84", -"i. c #A7E978", -"p. c #B9FF85", -"a. c #B2FD7C", -"s. c #E2DCDE", -"d. c #A5A49F", -"f. c #D6D4CF", -"g. c #D1D3C8", -"h. c #A3DC79", -"j. c #B2F67D", -"k. c #A2E378", -"l. c #A3D257", -"z. c #B6D040", -"x. c #9BD464", -"c. c #A2E977", -"v. c #A8EF77", -"b. c #98D86D", -"n. c #A8EE79", -"m. c #A0EA6F", -"M. c #BCCDAA", -"N. c #D6D5CF", -"B. c #DAD8D3", -"V. c #E0D5D7", -"C. c #71C65B", -"Z. c #02B703", -"A. c #58C63F", -"S. c #ADF081", -"D. c #ABFF86", -"F. c #9EE273", -"G. c #A8EF78", -"H. c #ADF77C", -"J. c #9DDF71", -"K. c #AEF57E", -"L. c #A7F274", -"P. c #BDCFAC", -"I. c #CAC9C3", -"U. c #DDD4D6", -"Y. c #86D968", -"T. c #35BF13", -"R. c #72DA4E", -"E. c #B4F580", -"W. c #B9FF82", -"Q. c #A8EB77", -"!. c #B2F97F", -"~. c #B8FF84", -"^. c #A5E975", -"/. c #B5FF7E", -"(. c #AEFD76", -"). c #BFD2AC", -"_. c #E3DCDE", -"`. c #D2D1CB", -"'. c #AFD092", -"]. c #C0D58B", -"[. c #AED38A", -"{. c #9CDD71", -"}. c #98D66D", -"|. c #A1E374", -" X c #A5EB76", -".X c #9BD077", -"XX c #B2DE92", -"oX c #ABDB88", -"OX c #BFCAB1", -"+X c #E0DCDB", -"@X c #DFDED8", -"#X c #D0D7C4", -"$X c #C5CABB", -"%X c #E1DBE3", -"&X c #CACAC3", -"*X c #A6F174", -"=X c #B1FF7A", -"-X c #A0EA6E", -";X c #AAF877", -":X c #ABFF72", -">X c #B2D697", -",X c #E0D2E0", -" c #DFE1DD", +", c #B9D6A6", +"< c #BCE2AB", +"1 c #BAD8A5", +"2 c #A9D198", +"3 c #9CD18F", +"4 c #B2D29E", +"5 c #BBDDA8", +"6 c #BCE0AA", +"7 c #B5D3A1", +"8 c #9ED191", +"9 c #A3D192", +"0 c #D7DCD1", +"q c #E9E7EA", +"w c gray92", +"e c #E7E7E7", +"r c #DAE0D7", +"t c #A6EB75", +"y c #BFDD31", +"u c #B1EF71", +"i c #37C527", +"p c #00AF00", +"a c #6EDA53", +"s c #BDE956", +"d c #BEE346", +"f c #86E465", +"g c #00B300", +"h c #1BBE0E", +"j c #CCDBBF", +"k c #EBE7ED", +"l c #A4A5A3", +"z c gray88", +"x c #D9E2DB", +"c c #ABDB69", +"v c #C9BE12", +"b c #ADDB5D", +"n c #98E46F", +"m c #92CE4D", +"M c #9CEB7B", +"N c #BBCB36", +"B c #C3C426", +"V c #9EEA79", +"C c #86CD4C", +"Z c #8AD855", +"A c #CBDDC3", +"S c #EAE6EC", +"D c #BDBEBC", +"F c gray89", +"G c #D9DED6", +"H c #9DD973", +"J c #A6F279", +"K c #9FDD72", +"L c #78CF56", +"P c #5FCE43", +"I c #8BD262", +"U c #A4E877", +"Y c #A4EC77", +"T c #97D66C", +"R c #AFED7B", +"E c #A3E670", +"W c #C7D6BD", +"Q c #EBE8ED", +"! c #EBEBEA", +"~ c #E7E7E7", +"^ c #DBE0D7", +"/ c #ACEB7F", +"( c #B9FF83", +") c #B5F382", +"_ c #40C72E", +"` c #00B100", +"' c #78D956", +"] c #BDFE87", +"[ c #B5FF81", +"{ c #A7E977", +"} c #B7FF84", +"| c #AFFA7A", +" . c #CBDAC0", +".. c #E9E6EB", +"X. c #A2A3A2", +"o. c gray90", +"O. c #DADFD6", +"+. c #A1E077", +"@. c #ADF87B", +"#. c #A0E574", +"$. c #9FDF6D", +"%. c #A0D45D", +"&. c #9EE273", +"*. c #A7ED77", +"=. c #ABF37A", +"-. c #9BDD6F", +";. c #ACF47C", +":. c #A3ED71", +">. c #C8D7BE", +",. c #ECE8EE", +"<. c #D3D4D2", +"1. c #E4E4E4", +"2. c #DADFD6", +"3. c #A0DE76", +"4. c #ABF679", +"5. c #9DE171", +"6. c #A1E473", +"7. c #B1F072", +"8. c #9ADD71", +"9. c #A5EB75", +"0. c #A8F079", +"q. c #99DA6E", +"w. c #AAF17A", +"e. c #A1EA70", +"r. c #C8D7BE", +"t. c #EAE7ED", +"y. c #DCDCDB", +"u. c #E7E7E7", +"i. c #DAE0D6", +"p. c #ACEB7F", +"a. c #BCFF84", +"s. c #AAF382", +"d. c #B6DF57", +"f. c #D1C718", +"g. c #A9EA76", +"h. c #B4FB82", +"j. c #B8FF83", +"k. c #A7E978", +"l. c #B9FF85", +"z. c #B0FA7B", +"x. c #CBDAC0", +"c. c #E9E6EC", +"v. c #A0A19F", +"b. c #E4E4E4", +"n. c #DADED7", +"m. c #A2DC79", +"M. c #ADF379", +"N. c #9FE176", +"B. c #A2D259", +"V. c #B3D347", +"C. c #9AD465", +"Z. c #A2E976", +"A. c #A6EC76", +"S. c #97D76C", +"D. c #A8EE79", +"F. c #9EE66E", +"G. c #C7D6BD", +"H. c #ECE9EE", +"J. c #E4E5E4", +"K. c gray90", +"L. c #EAE1E9", +"P. c #6FC85B", +"I. c #00B400", +"U. c #57C63F", +"Y. c #AFF282", +"T. c #ACFF86", +"R. c #9FE373", +"E. c #AAF279", +"W. c #AEF77C", +"Q. c #9EE172", +"!. c #B0F880", +"~. c #A7F175", +"^. c #C9D8BF", +"/. c #EAE6EC", +"(. c #C8C9C8", +"). c #E7E7E7", +"_. c #E6DFE7", +"`. c #8BDD6C", +"'. c #41C017", +"]. c #79DC52", +"[. c #B3F67F", +"{. c #B8FF81", +"}. c #A6EA77", +"|. c #B2FA7F", +" X c #B6FF82", +".X c #A4E973", +"XX c #B4FF7C", +"oX c #ABFA72", +"OX c #CADABE", +"+X c #EAE7ED", +"@X c #A8A9A7", +"#X c gray89", +"$X c #DADDDA", +"%X c #B4D39B", +"&X c #C8DA9A", +"*X c #B2D594", +"=X c #9CDD71", +"-X c #A8ED79", +";X c #97D66D", +":X c #A2E475", +">X c #A3EA74", +",X c #9FD07E", +" , < 1 2 3 4 5 6 7 8 9 0 q ", -"w e r t y u i p a s d f g h j k ", -"l z x c v b n m M N B V C Z A S ", -"D F G H J K L P I U Y T R E W Q ", -"! ~ ^ / ( ) _ ` ' ] [ { } | ...", -"D X.o.O.+.@.#.$.%.&.*.=.-.| ;.:.", -"D >.,.<.1.2.3.4.5.6.7.8.9.E 0.q ", -"! ~ q.w.e.r.t.y.u.i.p.a.} s.d.f.", -"g.h.j.k.l.z.x.c.v.b.n.m.M.| N.B.", -"V.C.Z.A.S.D.F.G.H.J.K.L.P.E I.= ", -"U.Y.T.R.E.W.Q.!.~.^./.(.)._. .f.", -"`.'.].[.{.n.}.|. X.XXXoXOX+X@X= ", -"#X$X%X&X*X=X-X;X:X>X,X , < 1 2 3 4 5 6 7 8 9 0 q w e ", +"r t y u i p a s d f g h j k l z ", +"x c v b n m M N B V C Z A S D F ", +"G H J K L P I U Y T R E W Q ! ~ ", +"^ / ( ) _ ` ' ] [ { } | ...X.o.", +"O.+.@.#.$.%.&.*.=.-.;.:.>.,.<.1.", +"2.3.4.5.6.7.8.9.0.q.w.e.r.t.y.u.", +"i.p.a.s.d.f.g.h.j.k.l.z.x.c.v.b.", +"n.m.M.N.B.V.C.Z.A.S.D.F.G.H.J.K.", +"L.P.I.U.Y.T.R.E.W.Q.!.~.^./.(.).", +"_.`.'.].[.{.}.|. X.XXXoXOX+X@X#X", +"$X%X&X*X=X-X;X:X>X,X c #29C91A", -", c #37C128", -"< c #39C429", -"1 c #3DCD2C", -"2 c #41D82B", -"3 c #5EC336", -"4 c #4CD236", -"5 c #57DB3E", -"6 c #7AAE57", -"7 c #7EB15B", -"8 c #5AC840", -"9 c #5DD743", -"0 c #65C64B", -"q c #66C84B", -"w c #6ACA4B", -"e c #68D141", -"r c #6ED24E", -"t c #77CF55", -"y c #74D055", -"u c #7BD45A", -"i c #75E250", -"p c #86921E", -"a c #AFA237", -"s c #CEA600", -"d c #CCAE00", -"f c #CBB106", -"g c #C9B509", -"h c #C9B810", -"j c #BFD33B", -"k c #CCC71A", -"l c #CAC920", -"z c #C5CC29", -"x c #C5D02E", -"c c #CDD42A", -"v c #C6D435", -"b c #C9DA37", -"n c #C4D63A", -"m c #81B65D", -"M c #83BC5E", -"N c #B2AC40", -"B c #86BE61", -"V c #89BC64", -"C c #8EA37D", -"Z c #92B37A", -"A c #8CC448", -"S c #A9C44D", -"D c #BDDC49", -"F c #A6C053", -"G c #ABD85F", -"H c #81E55C", -"J c #BEEB5D", -"K c #8AC363", -"L c #8DC965", -"P c #92CB6B", -"I c #86D660", -"U c #89DD61", -"Y c #92D366", -"T c #95D967", -"R c #95D46B", -"E c #99D46D", -"W c #95DB6A", -"Q c #9ADB6E", -"! c #97C67B", -"~ c #9BC47C", -"^ c #94D672", -"/ c #9CD670", -"( c #95DA72", -") c #9BDD71", -"_ c #9FD47B", -"` c #A7DF64", -"' c #BAD365", -"] c #A3D773", -"[ c #A1DD73", -"{ c #9BE36E", -"} c #85F161", -"| c #8DF868", -" . c #98FD6C", -".. c #9EE172", -"X. c #9AE579", -"o. c #9CF771", -"O. c #A8E26D", -"+. c #BCED62", -"@. c #BBF062", -"#. c #B6F46D", -"$. c #BBF46E", -"%. c #A3E474", -"&. c #A9E775", -"*. c #A6EB76", -"=. c #A8E977", -"-. c #A7E378", -";. c #A8E47A", -":. c #A3EC7A", -">. c #AAEC7A", -",. c #BAE471", -"<. c #A6F374", -"1. c #AAF776", -"2. c #AAFB74", -"3. c #A6F079", -"4. c #ABF47B", -"5. c #AEFB7B", -"6. c #B4FA77", -"7. c #BAF877", -"8. c #B2FD7E", -"9. c #C3DF45", -"0. c #C8E040", -"q. c #C1E34D", -"w. c #C2E952", -"e. c #878683", -"r. c #8E8D8A", -"t. c #908F8B", -"y. c #94928F", -"u. c #989693", -"i. c #9D9C98", -"p. c #97A988", -"a. c #9AAA8A", -"s. c #9CBD82", -"d. c #9FA794", -"f. c #A5A39F", -"g. c #AEBE9D", -"h. c #ABAAA6", -"j. c #AEADA9", -"k. c #B0AFAB", -"l. c #B6B4B0", -"z. c #B9B6B3", -"x. c #BCBBB6", -"c. c #BEBDB8", -"v. c #9DC481", -"b. c #A1C784", -"n. c #A2C985", -"m. c #ADCD8C", -"M. c #AEC09E", -"N. c #ACE683", -"B. c #AFFF89", -"V. c #B5FE82", -"C. c #BAFF85", -"Z. c #B2FF8B", -"A. c #BAFC8C", -"S. c #BDFE90", -"D. c #ADC4A2", -"F. c #B3C2A3", -"G. c #BEC2B5", -"H. c #C1FF8F", -"J. c #C5FF94", -"K. c #C3C5BC", -"L. c #C7C5C1", -"P. c #C9C6C2", -"I. c #CECAC6", -"U. c #CFCDC8", -"Y. c #D0C9C7", -"T. c #D2CBC9", -"R. c #CFD4C5", -"E. c #CFDBC1", -"W. c #D2D6C6", -"Q. c #D2D8C7", -"!. c #D4D3CC", -"~. c #D3D8C8", -"^. c #D7D3D2", -"/. c #DAD4D5", -"(. c #DCDAD5", -"). c #DCD5D8", -"_. c #DFDCD9", -"`. c #E1DEDA", -"'. c #E4E2DD", -"]. c #E9DFE6", -"[. c #E6E0E1", -"{. c #E9E4E3", +"32 32 169 2 ", +" c gray37", +". c #00AD00", +"X c #03B302", +"o c #04BA04", +"O c #0BB709", +"+ c #1ABE13", +"@ c #28BF1D", +"# c #479B0F", +"$ c #499E12", +"% c #1EC112", +"& c #25C21A", +"* c #28C41B", +"= c #2FC222", +"- c #3EC72C", +"; c #33CA24", +": c #38D024", +"> c #54C83B", +", c #53DA39", +"< c #7AAE57", +"1 c #7CB059", +"2 c #5DC942", +"3 c #5DD942", +"4 c #63C749", +"5 c #65C94B", +"6 c #63CE47", +"7 c #6ED145", +"8 c #73D94A", +"9 c #6FCF52", +"0 c #72D352", +"q c #7FD15B", +"w c #6AE248", +"e c #8E8F1C", +"r c #8EA630", +"t c #B1A43A", +"y c #CEA700", +"u c #CDAC00", +"i c #CAB408", +"p c #CAB810", +"a c #C5CE2D", +"s c #C7C926", +"d c #C3D131", +"f c #CAD530", +"g c #C5DA3F", +"h c #80B75B", +"j c #82BA5D", +"k c #80AF61", +"l c #89BE65", +"z c #9BC24B", +"x c #8DD05F", +"c c #83D95E", +"v c #BDDF4D", +"b c #A3C656", +"n c #84E65F", +"m c #BEEC5C", +"M c #87C161", +"N c #8AC463", +"B c #8ECC65", +"V c #8FC868", +"C c #91CE67", +"Z c #92CF6A", +"A c #8FD261", +"S c #8ADC62", +"D c #93D266", +"F c #96DD67", +"G c #95D46B", +"H c #99D56E", +"J c #95D96B", +"K c #9BDB6E", +"L c #96C079", +"P c #99CA7E", +"I c #94D771", +"U c #9DD670", +"Y c #95DA72", +"T c #9DDD71", +"R c #A5D561", +"E c #A3DC73", +"W c #9CE56E", +"Q c #9FE96D", +"! c #87F162", +"~ c #8CF567", +"^ c #9CFB6E", +"/ c #9EE171", +"( c #9CE779", +") c #AAE76F", +"_ c #A0EE6C", +"` c #A4E26F", +"' c #BBED64", +"] c #B2E86F", +"[ c #BAF065", +"{ c #A2E475", +"} c #A5EA76", +"| c #A9ED77", +" . c #A6E17A", +".. c #A5EE7A", +"X. c #AAEE79", +"o. c #A9E479", +"O. c #B8E978", +"+. c #A0F673", +"@. c #ACFC77", +"#. c #AAF27A", +"$. c #AEFC7A", +"%. c #A6F775", +"&. c #B9F670", +"*. c #B2FD7E", +"=. c #B6F877", +"-. c #C4DF44", +";. c #C5E146", +":. c #C0E24C", +">. c #C1E852", +",. c #868686", +"<. c #8B8B8B", +"1. c #959595", +"2. c #9A9A9A", +"3. c #98AC8C", +"4. c #9FB78E", +"5. c #A8BF96", +"6. c #A2B695", +"7. c gray68", +"8. c #AFB5AB", +"9. c gray70", +"0. c #BDBDBC", +"q. c #9FCE82", +"w. c #A6CD87", +"e. c #AACE8B", +"r. c #ACD98E", +"t. c #A5C192", +"y. c #AAC796", +"u. c #ABC897", +"i. c #ADC898", +"p. c #ADFF88", +"a. c #B5FE82", +"s. c #BAFF85", +"d. c #B3FF89", +"f. c #BAFF8B", +"g. c #B5E197", +"h. c #B7EB94", +"j. c #B8CDA0", +"k. c #B6C7A9", +"l. c #BECBBB", +"z. c #BCC6B5", +"x. c #C1FF8D", +"c. c #C5FF95", +"v. c #C1F79D", +"b. c #C3FA9F", +"n. c #C3CBBC", +"m. c #C4FBA0", +"M. c #C3C3C4", +"N. c #CFCFCE", +"B. c #C9CEC5", +"V. c #D1CFCF", +"C. c #CDD2C9", +"Z. c #D2D1D1", +"A. c #DAD4D7", +"S. c #D7DFD2", +"D. c #D9DFD4", +"F. c #D7D7D8", +"G. c #D8D6DA", +"H. c #D9DBD8", +"J. c #D7E4CE", +"K. c #DAE2D5", +"L. c #E3DDE7", +"P. c #E5DFE8", +"I. c #E5E5E5", +"U. c #E7E8E6", +"Y. c #EAE6EC", +"T. c #EBEAEB", +"R. c #E7E4EC", +"E. c #F4EFF9", +"W. c #F2F2F3", /* pixels */ -"(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.^.(.(.(.(.(.(.(.(.(.(.(.(.", -"(.(.'._._._.'._.'.`.(._._._.`.`._.'._.'._._._._._.(.(.(.(.(.(.(.", -"(./.L.L.L.L.K.L.P.Y.Y.Y.P.L.L.L.L.L.K.K.Y.Y.T.P.I._.(.(.(.(.(.(.", -"`.W.V %.[ X.%.L P y q 0 T V ..X.X.-.P P u 0 0 I Z `.(.(.'.'.(.(.", -"_.Q.E A.+.q.A.-.U O o o 9 / V.$.9.A.&.W & o o 2 m.^.(.`.l.j._.(.", -"`.W.R Z.z g V.;.8 o o o = E Z.n d 6.>.w o o o @ ~ (.(.'.h. !._.", -"_.W.( @.s s 9.X.{ } # e o.R #.f s v :.Q | $ 3 .b.).(.`.j.e.(.(.", -"`.W.^ w.z x 0.) ;.H.a ,.A.R J z x b %.%.J.N ' A.b.).(.(.^.(._.(.", -"`.W.6 Q ^ ^ ^ M K / Q / R 6 ^ ( ( ) B M Q R Y T Z ).(.(._.(.(.(.", -").W.P 8.5.5.V.) { 1 ; - H E 5.5.5.8.{ ) V.5.5.6.b./.(.(.(._.(.(.", -"_.Q.R C.V.8.V.-.r X o X < E 8.V.V.V.%...V.V.C.8.b.).(.'.h.f.'.(.", -"_.Q.R V.8.8.V.-.r = o @ 4 E V.8.V.V.%.X.V.5.8.8.b./.(.`.l.e.'.(.", -"_.W.E C.V.V.C.) ;.H.p ` S.R V.V.V.C.=...C.8.C.8.b.(.(._.x.i._.(.", -"_.W.K 4.3.*.4.R Q 4.F O.3.K 3.3.*.4.Q P 4.*.=.<.Z ).(.(.`.'.(.(.", -"_.R.m ) Q Q ) B L Q X.) Q 7 Q Q Q Q K K { Q Q Q Z `.(.(._._.(.(.", -"_.~.E C.C.V.C.[ =.A.q.7.V.E V.C.V.C.=.%.H.8.C.C.n.).(.'.K.K._.(.", -"_.Q.E V.5.8.C.) *.8.d D B.Y V.8.8.V.%.{ V.8.8.8.b./.(.'.k.u.{.(.", -"_.Q.P V.V.8.8.) :.n s h 6.P 8.8.V.V.%.) V.8.V.8.b./.(.'.k.. _.(.", -"_.Q.E C.V.V.C...&.c l k J ^ C.V.V.C.*.%.C.C.C.8.b.).(.(.W.I.(.(.", -"_.W.m ) ] [ -.M K ) ( ) R 7 W R R Q K M ) R E T Z ).(.(.(._.(.(.", -"_.^.b.i , , 9 / Q 4.4.4.4.L 4.4.4.5.) R 5.4.4.1.~ ).(.^.`.`.(.(.", -"(./.n.: X o + I 3.C.8.V.V.R V.V.V.C.%...C.8.C.8.n.^.(.'.k.h.'.(.", -"_.).! > o o * t >.8.8.V.8.P 8.V.V.V.%.%.C.8.V.8.n.).(.'.z.r.'.(.", -"(.^.b.A.A % A.[ *.C.V.V.V.R V.V.V.V.%.X.C.V.V.8.b./.(.'.l.r.(.(.", -"(.^.Z 2.G S 8.T { 5.4.5.4.L 5.4.4.5...W 6.1.1.2.v.).(.(.`.'.(.(.", -"_.W.C F.F.D.F.p.K Q R E R 7 R R R Q K a.F.M.M.M.d.(._.(.(.(.(.(.", -"_.E.F.].`._.{.K.*.C.V.C.V.R C.V.V.C.*.K.{.`.`.'.z.^._._.U.R._.(.", -"_.E.g._.^.(._.G.%.V.8.5.8.Y 8.8.8.V.%.G._.(.(.(.l.^.(.'.h.y.{.(.", -"_.Q.F.`.(.(._.K.N.S.A.A.A._ A.A.A.S.N.K._.(.(._.x.(.(.`.c.t.'.(.", -"(._.(.(._.(.(.(.(.(.).(.(.).).(.(.(.(.(.(.(.(.(.(.(.(._.^.!.^.(.", -"(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(._.(.(.", -"(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(." +"I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.U.U.I.U.I.I.I.R.U.I.U.I.", +"I.U.T.Y.T.T.T.T.T.U.Y.T.T.T.T.U.T.T.T.T.U.T.U.T.Y.I.I.U.I.I.I.I.", +"U.I.N.N.N.N.V.N.N.A.A.A.Z.N.N.N.N.N.V.V.A.A.A.V.H.U.U.I.I.P.I.U.", +"Y.K.l { { / } V G 9 4 4 J l ( { { { V G 0 5 5 c 5.Y.I.I.T.W.I.I.", +"U.K.H f.' v f.E c o o X 3 E d.' -.f.o.S o X . , j.R.I.T.0.0.T.I.", +"Y.K.G d.s i a. .> . o . = U d.a i a.o.2 . o . & i.I.I.W.2. W.I.", +"Y.K.I ' u y ;.( W ! # 8 +.I [ u y g ( W ~ $ 7 ^ i.Y.I.Y.2.<.T.I.", +"Y.K.I >.a d ;.T | x.t O.a.I m a d -.T } x.t O.s.y.Y.I.U.U.T.U.I.", +"T.S.< K I I Y 1 N U J Y G < H I I Y j j G J G x 4.Y.I.I.U.I.I.I.", +"Y.K.G *.*.$.a.T W ; & & n U $.*.*.s.W { a.$.a.@.y.Y.I.I.I.U.I.I.", +"U.K.H a.a.a.a.o.6 . X . - U *.a.*.s.T } a.a.a.@.i.Y.I.W.2.7.W.I.", +"Y.K.G a.*.*.a.{ 0 * X + 3 H a.*.*.a.W ( a.a.a.$.y.Y.I.W.1.,.W.P.", +"U.K.H s.a.a.s.T O.f.e ] x.G s.a.a.s.E } s.a.a.*.i.Y.I.T.0.9.U.I.", +"Y.K.N | } } ..B K ..b { } j } } } #.B H | } } Q 5.Y.I.I.T.W.I.U.", +"T.D.j { K K { M Z / ( / K h { K K { N B ` K { F 4.T.I.I.T.U.I.I.", +"Y.K.H s.a.s.s.E X.f.-.=.a.H s.a.s.f.{ } s.s.s.*.i.Y.U.T.0.V.Y.I.", +"U.K.G a.a.a.a.K ..&.u v p.G a.$.*.a.T { a.*.a.@.u.Y.I.W.1.2.W.I.", +"Y.K.G a.$.a.a.U ..a u p #.G a.a.*.a.W } s.*.*.$.u.Y.I.W.2.,.T.I.", +"Y.K.H a.a.a.s./ | f a s ' H a.a.a.s.E } s.a.s.$.i.Y.I.I.I.I.I.I.", +"U.H.k K U I / 1 N Y I I G < H G G K j M J G G D 4.T.I.I.I.I.U.I.", +"U.L.e.w @ @ , U { *.*.=.X.B a.$.#.a.K / *.#.*.%.y.Y.U.I.I.U.I.I.", +"U.P.w.% . . O A X.s.a.*.a.G a.a.*.s.{ } s.a.a.*.y.Y.I.T.2.9.W.I.", +"I.R.P : O o = q X.a.*.a.$.G a.*.a.a./ { a.*.a.$.y.Y.I.W.2.<.W.I.", +"U.L.w.x.z r c.E X.a.a.a.a.H a.a.a.s./ } s.s.a.*.i.Y.I.Y.9.7.U.I.", +"U.L.L +.R b @.A K #.| | | N #.| | #.G F %.} } _ t.Y.I.I.T.W.I.U.", +"Y.S.3.B.l.l.B.6.x E K K J 1 K K K K l 8.n.z.n.n.9.Y.I.I.T.U.I.I.", +"U.J.k.E.T.U.E.B.| s.s.s.a.H s.s.s.s. .G.W.T.Y.T.M.I.I.U.M.F.U.U.", +"Y.J.k.Y.I.I.Y.l._ *.$.*.$.D $.$.*.*.K V.T.I.I.I.0.I.I.W.1.2.W.I.", +"T.K.n.Y.I.I.Y.C.h.m.v.v.v.r.m.v.v.m.g.G.Y.U.I.I.N.I.I.W.7.2.W.I.", +"U.U.U.U.I.I.U.U.Y.R.R.Y.R.Y.Y.U.U.U.Y.U.I.I.I.U.I.I.I.I.I.U.I.I.", +"U.I.I.I.U.I.U.R.U.I.I.U.U.I.I.I.I.I.I.U.I.U.I.U.I.I.I.I.U.I.I.I.", +"I.I.R.I.I.U.I.I.I.I.I.I.I.I.I.I.I.R.I.U.I.I.I.I.R.I.I.U.I.I.R.U." }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 152 2 ", -" c #4D4C4A", -". c #5D5C5A", -"X c #61615E", -"o c #646361", -"O c #706F6D", -"+ c #797875", -"@ c #A15601", -"# c #A55902", -"$ c #2C9900", -"% c #329600", -"& c #3F9000", -"* c #00AE00", -"= c #03B302", -"- c #0AB507", -"; c #00B800", -": c #0DB50A", -"> c #46D232", -", c #4FD739", -"< c #54D639", -"1 c #57D93E", -"2 c #5ADA3E", -"3 c #659048", -"4 c #6A924F", -"5 c #6C8A57", -"6 c #6D8959", -"7 c #718C5D", -"8 c #7EBB56", -"9 c #758965", -"0 c #5DDB42", -"q c #65D541", -"w c #6BD745", -"e c #62DB44", -"r c #68DF46", -"t c #66DC49", -"y c #6ADC49", -"u c #75D648", -"i c #71DD4C", -"p c #66E045", -"a c #6CE14B", -"s c #70E24D", -"d c #CEAD00", -"f c #CCB302", -"g c #C9BC13", -"h c #C8BF18", -"j c #C7C11A", -"k c #C8C21A", -"l c #C6C521", -"z c #C4CD2B", -"x c #C3D337", -"c c #84BD5D", -"v c #88BF5F", -"b c #A5BF48", -"n c #8B9C7C", -"m c #86BF60", -"M c #89BF65", -"N c #92AA7E", -"B c #95B47D", -"V c #85C05D", -"C c #A7C34C", -"Z c #BEDE4B", -"A c #A2CF50", -"S c #81E458", -"D c #BCE455", -"F c #BAEA5E", -"G c #86C162", -"H c #8AC163", -"J c #8BC068", -"K c #88CB6A", -"L c #91C467", -"P c #92C568", -"I c #95D073", -"U c #B8DD6D", -"Y c #96F46D", -"T c #99F66F", -"R c #9CF571", -"E c #9EF973", -"W c #B8E06E", -"Q c #A9F36E", -"! c #A6FC6E", -"~ c #BAF267", -"^ c #B5F36E", -"/ c #BAF368", -"( c #BAEB77", -") c #BAEC78", -"_ c #A3F673", -"` c #AEF575", -"' c #A5F873", -"] c #ABFC76", -"[ c #A7F579", -"{ c #ADF77C", -"} c #A6FC79", -"| c #AEFC7A", -" . c #B0F375", -".. c #B5F977", -"X. c #BBF17C", -"o. c #B1FC7E", -"O. c #B8FF7D", -"+. c #8E9D80", -"@. c #93948C", -"#. c #969592", -"$. c #989793", -"%. c #9A9995", -"&. c #91A084", -"*. c #96AC83", -"=. c #98AF86", -"-. c #9AAF89", -";. c #96B081", -":. c #99B086", -">. c #9CB189", -",. c #9BB98E", -"<. c #A4B58E", -"1. c #A3A29E", -"2. c #A6B491", -"3. c #A8B592", -"4. c #A6A4A1", -"5. c #A8A7A3", -"6. c #AAA9A5", -"7. c #AFAEAA", -"8. c #B1AFAB", -"9. c #ABB0A1", -"0. c #B7B5B1", -"q. c #BDBBB7", -"w. c #BFBDB9", -"e. c #AFCC97", -"r. c #AEFE85", -"t. c #B3FF81", -"y. c #B2FF89", -"u. c #BBFF8A", -"i. c #B6C6A6", -"p. c #B7C4A9", -"a. c #B8C4AB", -"s. c #C3C1BD", -"d. c #C3EEA5", -"f. c #C6EEA8", -"g. c #C7C5C1", -"h. c #CCCAC5", -"j. c #CFCDC8", -"k. c #D1CFCA", -"l. c #D3D1CD", -"z. c #D8DBCE", -"x. c #D7D7D0", -"c. c #D9D6D2", -"v. c #DCDAD5", -"b. c #DFD7DB", -"n. c #DFDBD9", -"m. c #E1DCDD", -"M. c #DAE3CC", -"N. c #DCE1D1", -"B. c #E4E2DC", -"V. c #E6DAE5", -"C. c #EAE7E2", -"Z. c #EBE9E3", +"48 48 171 2 ", +" c #3C3C3C", +". c #484848", +"X c #5B5B5B", +"o c #535353", +"O c #6B6B6B", +"+ c #626262", +"@ c gray48", +"# c #A45A02", +"$ c #A66407", +"% c #369801", +"& c #00AD00", +"* c #04B402", +"= c #00B800", +"- c #0CB609", +"; c #0BB808", +": c #0AB807", +"> c #1ABE13", +", c #418E00", +"< c #5B8000", +"1 c #26C21C", +"2 c #2FCC21", +"3 c #31CD23", +"4 c #5FC835", +"5 c #46D332", +"6 c #4DD334", +"7 c #51D636", +"8 c #54D83B", +"9 c #669249", +"0 c #69944C", +"q c #77B051", +"w c #7BB454", +"e c #7EB35A", +"r c #778F67", +"t c #789167", +"y c #7D9070", +"u c #5BDA41", +"i c #62DC44", +"p c #6ADC4C", +"a c #69D947", +"s c #74DD4E", +"d c #79DA4D", +"f c #76DC50", +"g c #68E149", +"h c #76E552", +"j c #7CEB55", +"k c #CEAD00", +"l c #D0A800", +"z c #CCB301", +"x c #CBBB0D", +"c c #C8BE15", +"v c #C9C31A", +"b c #C7C21C", +"n c #C6C926", +"m c #C7C720", +"M c #C4D133", +"N c #84BC5D", +"B c #88BF5F", +"V c #80B75C", +"C c #86BF60", +"Z c #89BF65", +"A c #85C15C", +"S c #88C05F", +"D c #9CD95D", +"F c #A4C64E", +"G c #BFD943", +"H c #BFDF4C", +"J c #A6CC55", +"K c #B4C257", +"L c #81E659", +"P c #91E05B", +"I c #BDE04E", +"U c #BDE454", +"Y c #BBE658", +"T c #87C162", +"R c #8AC363", +"E c #8DC964", +"W c #89CB69", +"Q c #90C667", +"! c #92C569", +"~ c #94C86B", +"^ c #93DF60", +"/ c #94CF71", +"( c #B8DF6D", +") c #9BE868", +"_ c #8BF065", +"` c #9AF36C", +"' c #95F06A", +"] c #9FE372", +"[ c #99F770", +"{ c #9EF873", +"} c #A2ED6D", +"| c #ADE96D", +" . c #BAED63", +".. c #A4F66D", +"X. c #B6F36C", +"o. c #B8F56E", +"O. c #A4EE73", +"+. c #A9EF75", +"@. c #A7EF78", +"#. c #A8EF78", +"$. c #BAED78", +"%. c #B8E370", +"&. c #A5F373", +"*. c #ACF275", +"=. c #ACFD76", +"-. c #ABF47A", +";. c #AFFA7C", +":. c #A5F977", +">. c #B6F673", +",. c #B2FD7E", +"<. c #B8FD78", +"1. c #B2F67B", +"2. c #C0D740", +"3. c #848484", +"4. c #888888", +"5. c #989898", +"6. c #91A285", +"7. c #94AB85", +"8. c #97B783", +"9. c #99B685", +"0. c #97B881", +"q. c #9CB986", +"w. c #9DB58D", +"e. c #9FB98C", +"r. c #9DA896", +"t. c #A5AE9F", +"y. c #A2B792", +"u. c #A4B993", +"i. c #AABB96", +"p. c #A4B599", +"a. c #ABBB98", +"s. c #A2A2A2", +"d. c #AAABAA", +"f. c #ACB7A4", +"g. c #ACB8A5", +"h. c #AEBAAA", +"j. c #B3BBAB", +"k. c #B5B5B5", +"l. c #BABABA", +"z. c #ADFC84", +"x. c #B4FF81", +"c. c #B9FF84", +"v. c #B2FF89", +"b. c #BAFF89", +"n. c #BFC2BD", +"m. c #C8DABD", +"M. c #C0C0C0", +"N. c #CFCFCF", +"B. c #CED8C7", +"V. c #CED7C8", +"C. c #D2D7CE", +"Z. c #D5D5D5", +"A. c #DBDBDB", +"S. c #D6EEC6", +"D. c #DFE5DB", +"F. c #E0EDD7", +"G. c #E3ECDE", +"H. c #E0E3DF", +"J. c #E2DEE4", +"K. c #E6E6E6", +"L. c #E8E8E7", +"P. c #E7E5E8", +"I. c #EAE6ED", +"U. c #EBEAEB", +"Y. c #E4E8E2", +"T. c #EFECF1", +"R. c #F0EEF1", +"E. c #F3EBF8", +"W. c #F3F2F3", +"Q. c #F9F9F9", +"!. c #F8F2FD", /* pixels */ -"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", -"v.v.v.v.v.v.v.n.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", -"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", -"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.z.v.v.v.v.v.v.v.v.v.v.z.v.v.v.v.v.v.c.v.v.v.v.v.v.v.v.v.v.v.v.", -"v.v.v.v.m.m.m.m.m.m.m.m.V.m.m.n.n.n.m.m.m.V.m.m.m.m.V.m.B.m.m.n.m.n.m.m.B.v.v.v.v.v.v.v.v.v.v.v.", -"v.v.v.c.&.=.>.-.-.:.>.>.n -.2.2.2.2.2.>.+.:.-.>.-.>.:.-.+.-.2.2.3.3.2.*.9.v.v.v.v.v.v.v.v.v.v.v.", -"v.v.v.N.m _ | ] o.| ] | c ] s < < < r ] c ] ] ] | ] ] ] c ] r < < < a ] ;.m.v.v.v.v.B.m.v.v.v.v.", -"v.v.v.v.M t.t.t.x ..t.t.J _ : * * * = _ J O.y...x o.t.o.J _ = * * * : ' >.m.v.v.v.v.s.j.v.v.v.v.", -"v.v.n.N.G { y.F d Z y.o.P y * = = = = 0 L o.r.D d D y.o.J 0 = = = = = p <.n.v.c.B.g.. l.n.v.v.", -"v.v.v.N.J { t.l d g o.t.P 0 * = = = * 1 L o.t.j d h t.t.P < * = = = * 2 <.n.v.v.v.n.7. h.n.v.v.", -"v.v.v.v.m r.F d f d Z y.m o.R w $ q Y o.G r.D d f d D y.m t.Y q $ y R ] =.m.v.v.n.s.+ O k.v.v.v.", -"v.v.v.N.J { l d f d g O.m o.u.( @ W u.t.m o.j d f d j o.m t.u.U @ ) u.| =.m.v.v.v.v.s.x.B.v.v.v.", -"v.v.v.N.M o./ / / / ~ O.G o.r.{ C ` t.t.H o./ / / / ~ o.m t.t. .C ` t.o.:.n.v.v.v.v.B.v.v.v.v.v.", -"v.v.v.z.4 c J M G G J H 3 c P P I P L G 3 m J G G G J m 3 H m H K m H 8 n B.v.v.v.v.v.v.v.v.v.v.", -"v.v.v.N.M .r.o.r.o.o.t.m o.a < < < t o.c o.o.o.r.o.o.o.c t.o.o.o.o.o.] =.b.v.v.v.v.n.v.v.v.v.v.", -"v.v.b.N.M o.t.o.t.t.o.t.M _ - * * * = R J o.t.t.o.t.t.t.m t.t.t.t.t.t.| :.m.v.v.v.v.s.l.n.v.v.v.", -"v.v.v.N.M { t.t.t.t.t.t.P t = = * - * 0 P o.t.t.o.t.t.o.G t.t.t.t.t.t.| :.n.v.v.v.n.. $.C.x.v.v.", -"v.v.v.N.M o.t.t.t.o.t.t.P e = = = = * 1 P o.t.t.t.t.o.o.V t.t.t.t.t.t.| :.m.v.v.x.Z.6.%.Z.v.v.v.", -"v.v.v.v.M o.t.t.t.r.t.t.m o._ i % w E o.G o.o.t.t.t.t.r.m t.t.t.t.t.t.] :.b.v.v.v.v.o . v.v.v.v.", -"v.v.v.N.M { t.t.o.o.t.t.m o.u.) @ W u.o.G o.t.t.t.o.t.o.m t.t.o.t.t.t.| :.m.v.v.v.v.k.k.v.v.v.v.", -"v.v.n.v.M { t.t.t.t.t.t.m r.o.` C ` t.t.c t.o.t.t.t.o.t.m t.t.t.o.t.t.| :.b.z.v.v.v.n.N.n.v.v.v.", -"v.v.v.z.4 c G c V m m H 3 m m m K H m G 3 m G m m c H m 3 H G c m G H 8 n m.v.v.v.v.v.v.v.v.v.v.", -"v.v.v.N.M { t.t.t.t.o.t.m o.t.t.o.t.t.t.m o.t.t.t.t.t.t.m t.t.t.t.o.t.| :.m.v.v.v.v.B.v.v.v.v.v.", -"v.v.v.N.M o.t.t.t.t.t.t.m o.t.O.z ..t.t.m t.t.t.o.t.t.o.m t.t.o.t.t.t.| :.m.v.v.v.v.q.k.n.v.v.v.", -"v.v.v.N.M { t.t.o.t.t.t.G | y.D d Z r.O.V o.t.t.t.t.t.o.G t.t.t.t.t.t.| :.n.v.v.v.n.. %.C.x.v.v.", -"v.v.v.N.M o.t.t.t.t.t.t.m o.t.j d g o.t.G r.o.t.t.t.t.o.m t.t.t.t.t.t.| >.m.v.v.v.Z.6.%.Z.v.v.v.", -"v.v.n.N.M { t.t.t.t.t.t.v r.D d f d Z y.c t.t.t.t.t.t.o.m t.o.t.t.t.t.| :.m.v.v.v.v.X . v.v.v.v.", -"v.v.v.v.M o.t.t.t.t.O.t.m o.j f f f g o.G O.t.t.o.t.t.t.m t.t.t.t.t.t.| :.b.v.v.v.v.l.l.v.v.v.v.", -"v.v.v.N.m o.r.o.o.o.o.t.G o.^ ^ ^ ^ ^ o.m t.o.o.t.o.t.o.m t.o.o.O.t.t.] ;.m.v.v.v.v.n.v.v.v.v.v.", -"v.v.v.c.7 8 P L P P J H 3 V G J H J G G 3 m m m m m m m 3 G m m m m m 8 n B.v.v.v.v.v.v.v.v.v.v.", -"v.v.v.m.>.| t > > > 0 o.G o.t.o.t.t.t.t.m t.t.t.t.t.t.t.m t.t.t.t.t.t.| -.m.v.v.v.v.B.n.v.v.v.v.", -"v.v.v.m.>._ : * * * * Y H o.t.t.t.t.t.t.m o.t.t.t.t.t.t.m t.t.t.t.O.t.| -.b.z.v.v.v.0.j.n.v.v.v.", -"v.v.v.m.2.e = = = - * , P o.o.t.t.o.t.t.c t.t.t.t.t.t.o.m t.t.t.t.t.t.| :.m.v.v.v.n.X $.Z.c.v.v.", -"n.v.v.m.<.a = = ; = = 0 L o.o.t.t.t.t.t.m t.t.t.o.t.t.t.m t.t.t.t.t.t.| =.m.v.v.z.Z.4.$.Z.c.v.v.", -"v.v.v.m.-.{ | S & u } t.G o.t.t.t.t.t.t.m o.t.t.t.t.t.o.m t.t.t.t.t.t.| >.m.v.v.v.v.o . c.n.v.v.", -"v.v.c.m.-.] u.X.# U u.t.m o.t.t.t.t.t.t.m t.t.t.t.t.t.t.m t.t.t.t.t.t.| ;.m.v.v.v.v.c.c.v.v.v.v.", -"v.v.v.m.-.! | ] A Q ] | c o.o.o.o.t.{ t.m o.o.o.o.o.o.o.c ] { ] | | | ! ;.m.z.v.v.v.v.n.v.v.v.v.", -"v.v.v.z.9 *.-.-.,.>.:.>.6 c m m m m m m 3 m m H m m H V 5 >.;.=.:.>.:.N @.B.v.v.v.v.v.v.v.v.v.v.", -"v.v.v.M.B b.b.b.m.m.m.V.>.| t.t.t.t.t.t.m t.t.t.t.t.t.| :.V.m.n.m.m.m.b.4.n.v.v.v.v.B.n.v.v.v.v.", -"v.v.b.M.B c.v.v.v.v.z.m.=.] y.t.t.t.t.t.m t.t.O.t.t.y.| ;.n.v.v.v.v.v.x.1.n.v.v.v.v.8.h.n.v.v.v.", -"v.v.v.M.B v.v.v.v.v.v.m.=.] t.t.t.t.t.t.H t.t.t.t.O.t.| ;.m.v.v.v.v.n.c.4.n.v.v.v.n.X %.Z.c.v.v.", -"v.v.v.M.B v.v.v.v.v.v.m.;.] O.| | | o.| c | | | | o.| ] ;.m.v.v.v.v.v.z.4.n.v.v.v.Z.1.@.Z.v.v.v.", -"v.v.v.v.i.c.v.v.v.v.v.v.a.d.f.f.f.f.f.f.e.f.f.f.f.f.f.d.p.b.v.v.v.v.v.v.w.v.v.v.v.v.#.@.v.v.v.v.", -"v.v.v.b.m.v.v.v.v.v.v.v.m.b.b.m.b.b.n.n.m.m.b.b.b.m.b.b.m.v.v.v.v.v.v.v.n.v.v.m.v.v.B.B.v.v.v.v.", -"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.N.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.n.v.v.v.v.v.v.v.c.v.v.v.v.v.", -"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", -"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.n.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", -"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v." +"K.K.K.K.L.L.P.K.K.K.K.K.L.K.K.K.K.K.K.L.K.K.K.K.K.K.K.K.K.K.K.K.L.K.K.K.K.L.L.K.K.K.L.K.K.K.K.K.", +"K.K.L.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.L.K.K.K.K.K.L.K.K.K.K.K.K.K.K.K.K.L.K.L.K.K.K.", +"K.L.K.K.K.K.K.K.K.K.K.L.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.L.K.K.K.L.K.K.K.P.L.K.K.K.K.K.P.K.", +"K.K.K.L.P.Y.K.K.K.K.K.L.K.K.K.K.Y.K.K.K.Y.K.K.K.K.K.K.K.P.Y.K.K.K.K.Y.K.K.K.K.K.K.K.L.K.K.K.K.K.", +"K.K.L.K.T.I.I.I.I.I.I.I.R.I.I.I.I.I.I.I.R.I.I.T.I.I.I.I.I.I.I.I.P.I.I.I.L.K.K.K.K.L.K.K.K.K.K.L.", +"K.K.L.H.6.w.w.w.w.w.y.w.6.w.i.a.a.a.u.w.6.w.w.w.w.w.w.w.6.y.a.a.a.a.a.7.m.I.K.K.K.K.P.L.P.K.K.K.", +"K.K.P.G.N :.=.=.;.=.=.=.N =.i 7 6 6 g =.A ,.=.=.=.=.=.&.A =.8 7 7 6 j } d.I.Y.K.L.L.T.L.K.K.K.K.", +"K.K.L.Y.Z x.x.c.M <.x.,.Q [ & & * & - -.R c.x.>.M x.c.-.~ _ & * & & 1 #.f.T.K.K.L.A.M.A.L.K.P.K.", +"K.K.P.G.Z ;.v.Y k I v.,.! u & * * * & a ! ,.v.G l .v.*.~ 5 & * * * * s j.R.J.K.U.N.o O W.K.K.K.", +"L.K.P.G.Z ,.x.b k c ,.z.! 8 * * = * * i Q x.1.x z n v.+.Q 5 & * = * * s j.T.Y.K.K.U.@ X W.K.K.K.", +"K.K.P.Y.Z z.Y k z l H v.N c.&.a % s :.;.S v.G k z z .z.R c.[ 4 % L :.&.g.T.K.Y.W.l.X @ U.K.K.P.", +"K.L.L.G.T ;.b k z z c ,.T ,.b.( # $.b.,.T <.x z z z n z.S c.b.K $ b.b.} g.T.K.K.K.H.A.U.K.K.K.L.", +"K.K.L.G.Z 1.X.X.o.o.o.,.S ,.;.*.F -.,.-.S ,.X.o.o.o.o.-.T c.;.| J ;.x.O.g.T.K.K.K.L.L.P.P.K.K.K.", +"K.K.P.H.0 N W T T T T T 9 T ! ~ / ! ! C 9 T T T T T T e 9 E T T W T R q s.T.Y.K.K.K.K.K.K.K.K.K.", +"K.K.L.G.Z ,.c.,.x.,.,.,.C c.u 5 5 5 g ,.T c.,.,.x.x.c.-.R c.x.,.x.,.c.&.g.W.H.P.P.L.W.K.K.K.K.K.", +"K.L.K.G.Z ;.,.,.x.z.c.;.T [ & & & & - &.R c.,.,.z.x.c.-.T x.;.x.,.x.x.} g.T.K.K.L.A.k.H.L.K.K.K.", +"K.K.L.G.T ;.x.x.x.,.x.;.! 8 & : & - & i ! x.x.,.c.,.x.-.T c.;.,.x.x.c.} g.T.Y.J.P.Z. k.W.P.K.K.", +"K.P.L.G.Z ;.x.x.x.x.x.;.! u * * = * * p Q ,.z.,.x.,.x.-.E c.,.x.,.x.x.O.g.T.Y.K.Y.Q.O d.W.K.K.K.", +"K.K.L.Y.Z ;.x.,.,.x.x.x.Z c.:.f , L ;.x.S c.z.,.,.x.x.-.T c.,.x.,.x.x.O.g.T.Y.P.L.N.. @ U.K.K.P.", +"K.K.L.Y.Z ,.,.c.x.x.,.c.N ,.b.( # $.b.-.S c.,.x.x.x.c.-.T c.x.x.x.c.c.O.g.T.Y.K.P.P.P.K.K.K.K.K.", +"K.K.L.G.C -.z.;.;.;.;.-.N ;.;.*.J -.;.-.N ,.;.;.;.;.;.@.S ,.;.;.;.;.x.) f.T.J.K.L.L.P.K.P.K.L.K.", +"K.K.P.D.0 N Z T T T T T 9 T C T W R R N 9 R S T C T R N 9 E C T T N T w t.R.Y.Y.K.K.Y.P.K.K.K.K.", +"K.K.P.Y.Z ,.x.c.c.c.c.c.T c.x.x.<.c.c.z.R c.x.c.c.c.c.-.T c.c.c.c.c.c.O.f.T.Y.P.K.L.W.L.K.K.K.K.", +"K.K.L.G.Z ;.x.,.;.,.,.;.C c.x.>.m 1.x.;.N c.,.,.,.;.c.-.R c.;.;.,.,.c.O.f.T.P.K.L.A.d.A.L.K.K.K.", +"K.K.P.Y.Z ;.x.x.,.x.x.x.T ,.v.G l U v.;.T x.x.x.x.x.x.-.T c.;.,.x.x.c.} g.T.Y.J.U.A. k.R.K.K.K.", +"K.K.L.G.Z ;.x.,.x.x.;.x.C x.>.c k c ,.,.S c.,.,.,.x.x.-.E c.,.x.,.x.x.O.g.T.Y.K.H.Q.O d.R.K.P.L.", +"K.K.L.G.T ;.x.x.,.,.,.,.N v.M z z k I z.N c.,.x.x.x.x.-.T c.,.x.,.x.c.O.g.T.Y.P.U.N.o @ U.Y.K.K.", +"K.K.L.Y.Z ;.c.x.c.x.x.c.R ,.v x x x b ,.T c.,.c.x.x.c.-.R c.x.x.,.c.c.O.g.T.Y.K.K.K.U.U.K.L.K.K.", +"K.K.K.G.C @.-.@.-.-.-.-.e +.+.*.*.*.*.+.N -.-.-.-.-.-.O.N ;.-.-.-.-.-.) f.T.K.K.K.K.K.K.K.K.K.K.", +"K.K.K.K.r N ~ E E Q Q R 9 E R T R R R C 0 T R R T T R N 0 E T R T R E w t.R.H.K.K.K.H.K.K.K.K.P.", +"K.K.K.I.y.,.8 2 3 3 5 c.T c.c.c.c.x.c.x.Z c.c.x.c.c.c.-.R c.c.c.c.c.b.@.f.T.K.P.K.L.W.U.K.K.K.K.", +"K.K.K.I.y.` * & & & & ' R x.x.,.x.,.c.-.C x.x.,.,.c.c.-.R c.,.;.,.,.v.{ f.T.H.K.U.Z.5.A.U.K.K.K.", +"L.K.K.I.a.7 & * : * & 6 ! ,.x.x.x.,.c.;.C c.,.,.c.x.x.-.T c.,.x.,.,.x.&.g.T.K.K.L.A.. k.W.K.K.K.", +"K.K.K.I.u.h > ; = ; > h Z x.x.,.x.,.x.;.T x.z.x.,.,.x.-.T c.,.,.x.x.c.O.g.T.H.K.J.Q.+ s.W.H.K.K.", +"K.K.K.I.w.1.c.) < P c.c.C x.x.,.,.x.x.-.S c.;.,.x.;.c.-.R c.;.x.x.,.c.` g.T.H.K.U.N.X 4.U.K.K.K.", +"K.K.K.T.w.;.b.$.$ %.b.c.T x.x.c.c.x.c.x.T c.c.x.x.c.c.-.Z b.c.c.x.c.b.+.g.T.K.K.K.L.W.U.K.P.K.K.", +"K.K.K.I.7.) &.} D } O.} w &.@.@.@.@.@.O.e -.@.@.@.@.+.} e &.O.} O.O.&.D f.T.Y.K.K.K.H.K.K.K.K.K.", +"K.K.L.H.t f.f.f.h.g.f.h.r S E R E R R Z 0 E T E E E E N y j.f.f.f.f.j.r.d.R.K.K.K.K.J.K.K.K.K.K.", +"K.K.P.F.e.T.R.R.T.T.T.E.e.,.b.c.c.c.c.x.R b.x.c.x.c.b.*.f.!.T.T.T.I.E.J.k.U.K.K.K.U.Q.L.K.K.K.L.", +"K.K.P.F.8.K.K.J.Y.K.K.P.9.=.x.,.,.,.x.,.N c.,.,.,.x.x.&.p.I.Y.Y.Y.Y.L.Z.k.U.K.K.L.Z.4.Z.L.K.K.P.", +"K.K.L.F.9.J.K.K.K.K.K.I.9.,.c.,.x.x.v.;.R c.c.,.x.x.x.=.p.T.K.K.K.K.U.Z.k.R.K.K.K.K.. k.W.K.K.K.", +"K.P.L.D.8.P.K.P.K.K.K.I.9.=.,.=.=.;.,.=.A ,.=.,.,.=.,.` p.T.K.K.K.K.U.Z.k.U.K.K.K.W.X s.W.K.K.K.", +"K.K.K.Y.V.L.K.K.K.K.K.P.V.S.S.S.S.S.S.S.m.S.S.S.S.S.S.S.C.L.K.K.K.K.K.K.Z.K.K.P.K.A.s.l.U.K.K.K.", +"K.L.K.P.I.L.L.K.K.K.K.K.I.I.I.P.I.I.L.I.P.I.I.I.I.I.I.I.U.K.K.K.K.K.K.K.L.K.K.K.P.K.W.R.K.K.K.K.", +"P.K.K.K.K.K.K.K.L.K.L.K.K.Y.K.K.K.K.K.K.K.K.K.K.K.K.K.K.P.K.K.K.K.K.K.L.P.K.K.K.K.K.K.K.K.K.K.K.", +"K.K.K.K.P.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.L.K.K.K.L.K.K.L.K.K.K.K.K.K.K.K.K.L.K.", +"L.K.L.K.L.K.K.K.K.L.K.L.K.L.K.K.K.P.K.L.K.K.K.L.K.K.K.K.K.K.K.K.P.K.L.K.K.K.L.K.K.K.K.K.L.K.K.K.", +"P.K.K.K.K.K.K.K.K.P.K.L.K.K.K.K.K.L.K.K.K.K.K.L.K.K.K.K.K.K.K.K.K.K.L.K.L.K.K.K.K.K.K.K.K.K.K.K." }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/tents.sav sgt-puzzles-20160429.b31155b/icons/tents.sav --- sgt-puzzles-20140928.r10274/icons/tents.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/tents.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,32 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :5:Tents +PARAMS :5:8x8de +CPARAMS :5:8x8de +DESC :45:ea_ddidfaabkd,3,0,2,1,2,2,1,1,3,1,1,1,1,1,3,1 +NSTATES :2:25 +STATEPOS:2:25 +MOVE :9:N5,6;N6,6 +MOVE :14:N5,7;N6,7;N7,7 +MOVE :9:N0,7;N1,7 +MOVE :4:N1,6 +MOVE :14:N6,2;N6,3;N6,4 +MOVE :9:N7,2;N7,3 +MOVE :14:N1,0;N2,0;N3,0 +MOVE :4:N3,1 +MOVE :4:N0,3 +MOVE :4:N3,4 +MOVE :4:N5,4 +MOVE :4:T6,0 +MOVE :4:T4,0 +MOVE :4:T0,0 +MOVE :4:N1,1 +MOVE :4:N4,1 +MOVE :9:N6,1;N7,1 +MOVE :4:T2,1 +MOVE :9:N1,2;N3,2 +MOVE :4:T5,2 +MOVE :4:N4,2 +MOVE :4:N5,3 +MOVE :4:N0,2 +MOVE :9:N1,3;N1,5 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tents-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tents-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/towers-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/towers-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/towers-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/towers-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/towers-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/towers-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/towers-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/towers-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/towers-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/towers-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/towers-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/towers-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/towers-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/towers-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/towers-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/towers-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/towers-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/towers-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/towers-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/towers-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/towers-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/towers-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/towers-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/towers-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/towers.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/towers.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/towers-icon.c sgt-puzzles-20160429.b31155b/icons/towers-icon.c --- sgt-puzzles-20140928.r10274/icons/towers-icon.c 2014-09-29 00:33:48.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/towers-icon.c 2016-04-29 00:31:44.000000000 +0000 @@ -1,592 +1,796 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 130 2 ", -" c #DCDAD5", -". c #DEDCD7", -"X c #DFDDD8", -"o c #E0DDD8", -"O c #D4D2CD", -"+ c #D0CECA", -"@ c #DEDCD6", -"# c #DDDBD6", -"$ c #CECCC7", -"% c #D3D1CC", -"& c #DAD8D3", -"* c #E2E0DB", -"= c #BCBAB6", -"- c #83827F", -"; c #E7E5E0", -": c #D9D7D2", -"> c #DBD9D4", -", c #E4E2DD", -"< c #A4A39F", -"1 c #6B6A67", -"2 c #E3E1DB", -"3 c #E1DFDA", -"4 c #E5E3DE", -"5 c #C2C1BC", -"6 c #73726F", -"7 c #AEADA9", -"8 c #797875", -"9 c #BAB8B4", -"0 c #B7B6B1", -"q c #ACAAA6", -"w c #BABAB4", -"e c #BEBCB8", -"r c #CDCCC7", -"t c #D6D4CF", -"y c #989793", -"u c #DCDBD5", -"i c #DFDCD8", -"p c #E5DCDD", -"a c #D8D6D1", -"s c #B0AFAB", -"d c #B9B7B3", -"f c #C0BFBA", -"g c #BBBBB5", -"h c #BBBAB5", -"j c #BFBDB9", -"k c #B6B4B0", -"l c #D2D0CB", -"z c #A6A4A0", -"x c #D3D2CD", -"c c #E2DEDB", -"v c #D4D7CD", -"b c #A1C39C", -"n c #DEDBD7", -"m c #BEBDB8", -"M c #E2DDDB", -"N c #EAE0E2", -"B c #E2DCDB", -"V c #C8C6C2", -"C c #CAC9C4", -"Z c #E0DED9", -"A c #A2A19D", -"S c #D1D0CB", -"D c #E7E0E0", -"F c #82B67E", -"G c #419A3F", -"H c #DFDBD8", -"J c #E0DAD9", -"K c #BCCDB6", -"L c #7FB57B", -"P c #BECEB8", -"I c #E5E0DE", -"U c #C6C5BF", -"Y c #CBC9C4", -"T c #D4D2CE", -"R c #D9DAD2", -"E c #67AB63", -"W c #399937", -"Q c #C2D0BC", -"! c #E3DEDC", -"~ c #78B274", -"^ c #81B57D", -"/ c #F0E5E9", -"( c #C4C4BE", -") c #DDDAD6", -"_ c #D9D8D2", -"` c #E2DBDB", -"' c #B4CAAF", -"] c #2A9329", -"[ c #B0C8AB", -"{ c #E8E1E1", -"} c #C5C4BF", -"| c #A7A5A1", -" . c #E4DEDD", -".. c #BFBEB9", -"X. c #CFD6C9", -"o. c #BECFB8", -"O. c #CFD5C9", -"+. c #E4E1DD", -"@. c #C8C6C1", -"#. c #898885", -"$. c #9D9C98", -"%. c #A5A4A0", -"&. c #A3A29E", -"*. c #A2A29D", -"=. c #A5A39F", -"-. c #9F9E9A", -";. c #D9D6D3", -":. c #DFD8D8", -">. c #D9D5D2", -",. c #C4C2BD", -"<. c #CECDC8", -"1. c #9C9A97", -"2. c #D6D2CF", -"3. c #D4D1CD", -"4. c #B3B2AD", -"5. c #B1AFAB", -"6. c #B0AFAA", -"7. c #B3B1AD", -"8. c #C0BEBA", -"9. c #CED6C8", -"0. c #D8DAD1", -"q. c #E1DEDA", -"w. c #B5B4B0", -"e. c #CBCAC5", -"r. c #C9C7C2", -"t. c #C9C7C3", -"y. c #C9C8C3", -"u. c #D7D8D0", -"i. c #E0DED8", -"p. c gray100", +"16 16 245 2 ", +" c #E6E6E6", +". c #E6E6E6", +"X c #E6E6E6", +"o c gray91", +"O c #EAEAEA", +"+ c #E6E6E6", +"@ c #E6E6E6", +"# c #E6E6E6", +"$ c #EAEAEA", +"% c #E9E9E9", +"& c #E6E6E6", +"* c #E6E6E6", +"= c #E6E6E6", +"- c gray91", +"; c gainsboro", +": c #D7D7D7", +"> c #E7E7E7", +", c #E6E6E6", +"< c #E6E6E6", +"1 c #E6E6E6", +"2 c gray91", +"3 c #D7D7D7", +"4 c #DADADA", +"5 c gray91", +"6 c #E6E6E6", +"7 c #E6E6E6", +"8 c #E4E4E4", +"9 c #ECECEC", +"0 c #C6C6C6", +"q c #767676", +"w c #EFEFEF", +"e c gray89", +"r c gray90", +"t c gray94", +"y c #AEAEAE", +"u c #5D5D5D", +"i c gray92", +"p c gray90", +"a c #E6E6E6", +"s c #E6E6E6", +"d c gray92", +"f c #EFEFEF", +"g c #CECECE", +"h c gray38", +"j c gray89", +"k c #EAEAEA", +"l c gray91", +"z c gray91", +"x c gray93", +"c c #AEAEAE", +"v c DimGray", +"b c gray91", +"n c #E7E7E7", +"m c #E6E6E6", +"M c #E6E6E6", +"N c #E7E7E7", +"B c gray76", +"V c gray76", +"C c #C0C0C0", +"Z c #B1B2B1", +"A c #C0C2C0", +"S c gray78", +"D c gray77", +"F c #C6C6C6", +"G c gray91", +"H c gray84", +"J c #DDDDDD", +"K c #E6E6E6", +"L c #E4E4E4", +"P c #E6E6E6", +"I c #E7E7E7", +"U c gray91", +"Y c #9F9F9F", +"T c #DADADA", +"R c #E6E7E6", +"E c #E9E8E9", +"W c #F0E8F0", +"Q c #E2E2E2", +"! c #E7E6E7", +"~ c gray72", +"^ c #C1C1C1", +"/ c gray79", +"( c #C4C6C4", +") c gray77", +"_ c gray78", +"` c gray", +"' c gray86", +"] c gray92", +"[ c gray68", +"{ c #DDDDDD", +"} c #EDEAED", +"| c #DFE3DF", +" . c #A9CEA9", +".. c #E8E7E8", +"X. c gray91", +"o. c gray78", +"O. c gray90", +"+. c #ECE9EC", +"@. c #F5EDF5", +"#. c #ECE9EC", +"$. c #EBECEB", +"%. c gray82", +"&. c gray83", +"*. c #EAEAEA", +"=. c #A9AAA9", +"-. c #DBDCDB", +";. c #F0EBF0", +":. c #87C087", +">. c #3FA03F", +",. c gray90", +"<. c gray91", +"1. c #C4C5C4", +"2. c #EAE6EA", +"3. c #C5D9C5", +"4. c #80BD80", +"5. c #C9DAC9", +"6. c #F0EDF0", +"7. c #CFD0CF", +"8. c gray83", +"9. c #EAEAEA", +"0. c #AAAAAA", +"q. c #DEDDDE", +"w. c #E5E7E5", +"e. c #71B771", +"r. c #349E34", +"t. c #CDDCCD", +"y. c #EDEAED", +"u. c #C4C5C4", +"i. c #E4E4E4", +"p. c #E5E6E5", +"a. c #69B469", +"s. c #9DC89D", +"d. c #F9F0F9", +"f. c #CDCFCD", +"g. c gray83", +"h. c #EAEAEA", +"j. c #A9A9A9", +"k. c gainsboro", +"l. c #E9E8E9", +"z. c #EBE8EB", +"x. c #C9DAC9", +"c. c #E4E5E4", +"v. c #E8E7E8", +"b. c #C3C5C3", +"n. c #EEE8EE", +"m. c #B0D1B0", +"M. c #38A038", +"N. c #C6D8C6", +"B. c #F0EDF0", +"V. c #CECFCE", +"C. c gray92", +"Z. c #AEAEAE", +"A. c gray87", +"S. c #EAEAEA", +"D. c #E6E7E6", +"F. c #EEEAEE", +"G. c #E7E7E7", +"H. c #E9E9E9", +"J. c #C8C8C8", +"K. c #E8E7E8", +"L. c #DAE2DA", +"P. c #C5DAC5", +"I. c #D8E1D8", +"U. c #EFEDEF", +"Y. c gray82", +"T. c gray83", +"R. c gray56", +"E. c #A4A4A4", +"W. c gray68", +"Q. c #AAABAA", +"!. c #A9AAA9", +"~. c #ACACAC", +"^. c #A7A7A7", +"/. c #AAAAAA", +"(. c #E4E4E4", +"). c #E3E1E3", +"_. c #E9E4E9", +"`. c #E3E1E3", +"'. c gray90", +"]. c #CDCDCD", +"[. c gray83", +"{. c #D8D8D8", +"}. c gray64", +"|. c #E1E1E1", +" X c gray86", +".X c #E0DEE0", +"XX c #DEDDDE", +"oX c #DDDEDD", +"OX c #D7D7D7", +"+X c #AAAAAA", +"@X c #BBBBBB", +"#X c #B9B9B9", +"$X c #B8B9B8", +"%X c #B9B9B9", +"&X c #BBBBBB", +"*X c #AAAAAA", +"=X c gray86", +"-X c #E4E4E4", +";X c gray79", +":X c #E9E9E9", +">X c #E9E8E9", +",X c #D8E2D8", +" & , < 1 2 > ", -" 3 4 5 6 2 # . . * 7 8 3 ", -"# 9 9 0 q w e = e # r t & # ", -". y + u i p a s d f g h j k l ", -"3 z x c v b n . m > M N B 3 V C ", -"Z A S D F G H @ g J K L P I U Y ", -"Z A T R E W Q ! g & # ~ ^ / ( C ", -"Z A % i ) P _ n h ` ' ] [ { } C ", -"3 | T Z # .n X ..n X.o.O.+.@.Y ", -". #.$.%.&.*.=.-.&.& ;.:.>.> ,.C ", -"<.1.a l 2.3.O $ A 4.5.6.s 7.&.l ", -"& 8.X . 9.0.q.: w.e.r.t.y.V 0 . ", -" & O.u.) > Z X i.o Z > ", -" # H ) > > > > > " +" . X o O + . @ # $ % & * ", +" = - ; : > , < 1 2 3 4 5 6 ", +"7 8 9 0 q w e r e t y u i p a ", +"s d f g h j k l z x c v b n m M ", +"N B V C Z A S D F G H J K L P I ", +"U Y T R E W Q ! ~ ^ / ( ) _ ` ' ", +"] [ { } | ...X.o.O.+.@.#.$.%.&.", +"*.=.-.;.:.>.,.<.1.2.3.4.5.6.7.8.", +"9.0.q.w.e.r.t.y.u.i.p.a.s.d.f.g.", +"h.j.k.l.z.x.c.v.b.n.m.M.N.B.V.g.", +"C.Z.A.S.D.F.G.H.J.K.L.P.I.U.Y.T.", +"b R.E.W.Q.!.~.^./.(.)._.`.'.].[.", +"{.}.|. X.XXXoXOX+X@X#X$X%X&X*X=X", +"-X;X:X>X,X c #E3E1DC", -", c #B4B3AF", -"< c #777673", -"1 c #454443", -"2 c #8A8985", -"3 c #EAE8E2", -"4 c #D9D7D2", -"5 c #393837", -"6 c #B8B7B3", -"7 c #E4E2DD", -"8 c #E1DFD9", -"9 c #959490", -"0 c #292827", -"q c #969491", -"w c #E9E7E2", -"e c #E7E5DF", -"r c #3A3938", -"t c #C0BFBA", -"y c #D7D5D0", -"u c #5A5957", -"i c #6D6C69", -"p c #EEECE7", -"a c #D8D7D2", -"s c #E2E0DA", -"d c #DFDDD8", -"f c #E9E7E1", -"g c #9A9995", -"h c #262625", -"j c #71706D", -"k c #B5B4AF", -"l c #686765", -"z c #4E4D4B", -"x c #A8A7A3", -"c c #E5E3DE", -"v c #D8D6D1", -"b c #C5C4BF", -"n c #C7C6C1", -"m c #C9C7C2", -"M c #BAB8B4", -"N c #BCBBB6", -"B c #B8B7B2", -"V c #C6C5C0", -"C c #C8C6C1", -"Z c #C7C5C1", -"A c #C8C7C2", -"S c #DAD9D4", -"D c #D4D3CE", -"F c #747370", -"G c #A7A6A2", -"H c #A7A5A1", -"J c #AAA9A5", -"K c #AAA8A5", -"L c #ABA9A5", -"P c #A7A5A2", -"I c #A6A5A1", -"U c #ACAAA6", -"Y c #93928E", -"T c #B6B4B0", -"R c #E7E4DF", -"E c #E0DED9", -"W c #92918E", -"Q c #73726F", -"! c #EDEBE5", -"~ c #EBE9E3", -"^ c #CCCAC5", -"/ c #8B8A87", -"( c #B5B3AF", -") c #ADABA7", -"_ c #AEADA9", -"` c #AEACA8", -"' c #B0AEAA", -"] c #BDBCB7", -"[ c #7C7B78", -"{ c #E0DED8", -"} c #D9D8D2", -"| c #D7D7D0", -" . c #D8D7D1", -".. c #C1BFBB", -"X. c #969592", -"o. c #C6C4BF", -"O. c #BDBBB7", -"+. c #BEBDB8", -"@. c #C2C1BC", -"#. c #7A7976", -"$. c #DBDAD4", -"%. c #DEDBD7", -"&. c #EBE0E4", -"*. c #E4DDDD", -"=. c #B1AFAB", -"-. c #E2E1DB", -";. c #EDEAE5", -":. c #B2B0AC", -">. c #DFDBD8", -",. c #D3D7CC", -"<. c #409C3E", -"1. c #7DB579", -"2. c #E7DEE0", -"3. c #DAD9D3", -"4. c #C1C0BB", -"5. c #DEDAD7", -"6. c #ABAAA6", -"7. c #D9D9D2", -"8. c #63AA5F", -"9. c #007A00", -"0. c #55A153", -"q. c #EAE0E3", -"w. c #E0DCD9", -"e. c #CBD3C4", -"r. c #D2D6CB", -"t. c #E6DEDF", -"y. c #ACABA7", -"u. c #E8DFE1", -"i. c #9CC197", -"p. c #52A34F", -"a. c #65AB62", -"s. c #4EA24B", -"d. c #F8E5F0", -"f. c #D7D8D0", -"g. c #E4DDDC", -"h. c #58A655", -"j. c #299328", -"k. c #1D8F1C", -"l. c #7CB478", -"z. c #E5DDDD", -"x. c #E6DFDF", -"c. c #319230", -"v. c #66AA63", -"b. c #48A046", -"n. c #269224", -"m. c #C3D0BD", -"M. c #DDDAD6", -"N. c #A8C5A2", -"B. c #92BC8D", -"V. c #118611", -"C. c #7BB377", -"Z. c #5CA859", -"A. c #248E23", -"S. c #118510", -"D. c #A5C5A0", -"F. c #ECE0E5", -"G. c #3F9B3D", -"H. c #389837", -"J. c #E5DEDE", -"K. c #F8E5F1", -"L. c #AFC8A9", -"P. c #A6C5A1", -"I. c #EEE1E7", -"U. c #C9D2C3", -"Y. c #30962F", -"T. c #259124", -"R. c #E1DCDA", -"E. c #D9D9D3", -"W. c #D6D8D0", -"Q. c #E7DEDF", -"!. c #439C41", -"~. c #007B00", -"^. c #329730", -"/. c #56A553", -"(. c #797875", -"). c #BFBEB9", -"_. c #C0CFB9", -"`. c #B3CAAD", -"'. c #B5CBAF", -"]. c #B4B2AE", -"[. c #7E7D7A", -"{. c #EAE7E2", -"}. c #C9C7C3", -"|. c #E2DCDB", -" X c #E3DDDC", -".X c #E5DDDE", -"XX c #686764", -"oX c #B1B0AC", -"OX c #B3B2AE", -"+X c #A8A6A2", -"@X c #E6E4DF", -"#X c #787674", -"$X c #94938F", -"%X c #8A8885", -"&X c #8B8A86", -"*X c #8E8D89", -"=X c #72706E", -"-X c #E0DDD8", -";X c #AFAEAA", -":X c #636260", -">X c #B3B1AD", -",X c #8E8D8A", -" c #777777", +", c gray47", +"< c gray49", +"1 c #7E7E7E", +"2 c gray50", +"3 c #008400", +"4 c #038903", +"5 c #129112", +"6 c #169316", +"7 c #199419", +"8 c #1B941B", +"9 c #1E911E", +"0 c #219721", +"q c #2A9B2A", +"w c #2E982E", +"e c #2E9D2E", +"r c #309730", +"t c #379E37", +"y c #389C38", +"u c #41A241", +"i c #43A543", +"p c #4AA84A", +"a c #4EA94E", +"s c #51A751", +"d c #5BAE5B", +"f c #63B263", +"g c #6BB56B", +"h c #71B771", +"j c #7FBD7F", +"k c gray51", +"l c #838383", +"z c #848484", +"x c #868686", +"c c #8B8B8B", +"v c #909090", +"b c gray57", +"n c #929292", +"m c #939393", +"M c gray58", +"N c #959595", +"B c gray59", +"V c #979797", +"C c #989898", +"Z c gray60", +"A c #9A9A9A", +"S c #9B9B9B", +"D c #9D9D9D", +"F c #81BE81", +"G c #84BF84", +"H c #A0A0A0", +"J c gray64", +"K c #A4A4A4", +"L c gray65", +"P c gray66", +"I c #A9A9A9", +"U c #AAAAAA", +"Y c gray67", +"T c #AEAEAE", +"R c #AFAFAF", +"E c gray69", +"W c #B1B1B1", +"Q c #B2B2B2", +"! c gray70", +"~ c #B4B4B4", +"^ c gray71", +"/ c #B6B6B6", +"( c #B7B7B7", +") c #B9B9B9", +"_ c gray73", +"` c #BBBBBB", +"' c #BCBCBC", +"] c gray74", +"[ c gray", +"{ c #8EC38E", +"} c #97C697", +"| c #97C797", +" . c #A0CAA0", +".. c #AACEAA", +"X. c #AFD0AF", +"o. c #B2D1B2", +"O. c #B5D2B5", +"+. c #B8D3B8", +"@. c #B9D4B9", +"#. c #BAD5BA", +"$. c #C1C1C1", +"%. c gray76", +"&. c gray77", +"*. c #C5C5C5", +"=. c #C6C6C6", +"-. c gray78", +";. c #C8C8C8", +":. c gray79", +">. c #CACACA", +",. c #CBCBCB", +"<. c #CDCDCD", +"1. c #CECECE", +"2. c gray81", +"3. c #C5D9C5", +"4. c #C7D9C7", +"5. c #C7DAC7", +"6. c #CADBCA", +"7. c #CCDCCC", +"8. c #CEDCCE", +"9. c #CEDDCE", +"0. c #D0D0D0", +"q. c gray82", +"w. c #D2D2D2", +"e. c #D5D5D5", +"r. c #D7D7D7", +"t. c #D3DED3", +"y. c #D5DFD5", +"u. c gray85", +"i. c gray86", +"p. c #DDDDDD", +"a. c gray87", +"s. c #D6E0D6", +"d. c #D7E0D7", +"f. c #DEE3DE", +"g. c gray88", +"h. c #E1E1E1", +"j. c #E1E3E1", +"k. c #E2E2E2", +"l. c #E2E3E2", +"z. c gray89", +"x. c #E0E4E0", +"c. c #E1E4E1", +"v. c #E3E4E3", +"b. c #E3E5E3", +"n. c #E4E4E4", +"m. c #E4E5E4", +"M. c gray90", +"N. c #E5E6E5", +"B. c #E6E6E6", +"V. c #E6E7E6", +"C. c #E7E6E7", +"Z. c #E7E7E7", +"A. c #E8E7E8", +"S. c #E9E7E9", +"D. c #EAE7EA", +"F. c gray91", +"G. c #E9E9E9", +"H. c #EAE8EA", +"J. c #EBE8EB", +"K. c #EAEAEA", +"L. c gray92", +"P. c #ECE8EC", +"I. c #EDE9ED", +"U. c #EEE9EE", +"Y. c #EFE9EF", +"T. c #EEEAEE", +"R. c #EFEAEF", +"E. c #ECECEC", +"W. c #ECEDEC", +"Q. c gray93", +"!. c #EEEEEE", +"~. c #EFEFEF", +"^. c #EFF0EF", +"/. c #F0EAF0", +"(. c #F0EBF0", +"). c #F1EAF1", +"_. c #F3EBF3", +"`. c #F2ECF2", +"'. c #F3ECF3", +"]. c #F4EBF4", +"[. c #F5ECF5", +"{. c #F6EDF6", +"}. c gray94", +"|. c #F1F1F1", +" X c gray95", +".X c #F3F3F3", +"XX c #F4F4F4", +"oX c gray96", +"OX c #F6F6F6", +"+X c gray97", +"@X c #FEF0FE", +"#X c #FFF1FF", +"$X c #F8F8F8", +"%X c #F9F9F9", /* pixels */ -" ", -" . . . ", -" X o O + o . ", -" X @ # . O $ % & * . ", -" $ + = - ; : . $ > , < 1 2 3 4 ", -" . * 5 6 7 . . 8 9 0 q w 4 ", -" . . $ e r t 7 $ . . . . . y . u i p a ", -" $ O s d f g h j * o o o o o o O $ + k l z x c $ ", -" c v b n m M N B V C Z Z n Z A 4 S $ . m D * 4 $ $ $ $ $ ", -"O $ M F G G H J K L G P G G I U Y T p > c w R > c c c c c c O ", -" E W Q ! > c 7 7 7 c c c c 7 ~ ^ / ( ) _ ` ` _ _ _ _ _ ` ' v O ", -"$ c ] [ { 4 $ $ $ } | .$ $ 4 E ..X.o.O.+.+.+.+.+.+.+.O.# X.@.> ", -"$ 7 , #.* . $.%.&.*.$. . : ..=.! o > > -.-.> > > o ;.:...> ", -"$ 7 T #.* . $.>.,.<.1.2.3.. * 4.L 7 4 . . >.5.} . . 4 7 6...> ", -"$ 7 T #.* . 7.&.8.9.0.q.7.. * 4.U c $ w.e.r.t. $ c y...> ", -"$ 7 T #.* . 3.u.i.p.a.s.d.f.. * 4.U c 4 g.h.j.k.l.z.3.$ c y...> ", -"$ 7 T #.* . 3.x.c.v.b.n.m.w.3.* 4.U c $ M.N.O B.V.$.M.$ c y...> ", -"$ 7 T #.* . $.>.C.Z.A.S.D.z.} * 4.U c $ 3.F.u.G.H.J.. $ c y...> ", -"$ 7 T #.* . 2.K.L.P.I.7.. * 4.U c } >.U.Y.T.r.R.3.$ c y...> ", -"$ 7 T #.* . E.W.*.J.7.M.. * 4.U c .Q.!.~.^./.f.O $ c y...> ", -"$ 7 T (.E 4 $ $ $ $ . .$ $ 4 E ).U c $ M.m._.`.'. $ c y...> ", -"$ 7 ].[.{.: > > > > > > > > : 3 }.) c $ |. XJ..X $ c y...> ", -"$ 7 N XXoXy.) ) ) ) ) ) ) ) y.OXY +X@X$ $.3.3.. $ c U ..> ", -". s #Xu $X%X/ / / / / / / / &X*X=XC -X$ . . . . . . . 4 7 ;X4.> ", -". > :X>Xo y v v v v v v v v y X ,X ].6 7 $ R.J.wX$. $ * ,XeXrXG +X+X+X+X+X+XI _ tXoXyX$ ", -"$ uXiXM 7 . M.pXaXsX%. . X dX* yXc c c c c c c + ! fXT 7 $ ", -" O v 4 O M.gXhXjXO kX$ $ $ $ $ $ $ $ $ $ . y lXO ", -" O O w. X>. O O O ", -" $.$. ", -" " +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.z.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.G.G.B.B.B.B.B.B.B.B.B.B.B.B.~.G.z.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.G.i.2.z.B.B.B.B.B.B.B.B.B.B.B.:.2.~.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.z.~.M L Xz.B.B.B.B.B.B.B.G.q.= o 2 Xz.B.B.B.B.B.B.", +"B.B.B.B.B.B.z.XX# M XXB.B.B.B.B.B.B.B.B.~.P . z XXz.B.B.B.B.B.B.", +"B.B.B.B.B.B.z. X+ m XXz.B.B.B.z.B.B.B.B.a.q.& $ XXB.B.B.B.B.B.B.", +"B.B.B.B.~.G.XXM X @ q. XG.G.~.G.G.G.z.~._ $ + c Xz.B.B.B.B.B.B.", +"B.B. Xz.2.q.q.-.-.$.2.q.2.2.q.q.q.z.v.z.N.r.a.~.z.z.z.z.B.B.B.B.", +"B.z.$.: T T T Q Q Q Q T Q T T Q C ] %X~.^. X`.~.~. X X~.~.~.B.B.", +"B.G.C : XX X~.^.~.~.~.~.~.~.^.XXe.m ' ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ z.B.", +"B.~.-.l G.z.B.v.n.z.f.z.v.z.B.G.:.D 2.-.-.-.-.-.-.-.:.-.q.D :.~.", +"z.~.] 2 ~.z.B.B.B.B.[.Y.B.B.B.L.:._ XX~.~.L.L.~.~.L.~.G.XX_ :.~.", +"z.~.] 2 G.B.B.B.D.f.i F _.v.v.~.:.^ ~.z.B.v.G.B.z.B.B.z. XQ :.~.", +"z.~.] 2 ~.B.B.v.[.f 3 s `.v.v.L.:.! ~.z.B.G.s.f.Y.B.B.z. X^ :.~.", +"z.~.] 2 G.B.v._.} h g p #Xv.B.~.,.! ^.z.Y.d 0 7 | Y.B.z.~.^ :.G.", +"h.].[ 1 L.B.v.Y.y u q 5 O.Y.z.~.:.! Xv.N.X.N.s r `.B.v.^.^ :.~.", +"h.].[ 1 L.B.B.D. .F w 8 6.D.z.~.,.^ Xv.v.#Xs.7 { [.v.v. XQ :.~.", +"D.).' 1 L.B.B.v._.#Xo...[.B.B.G.:.! ~.z.Y.O.6 j _.v.B.v.~.^ :.~.", +"k.Y.) h L.B.B.B.v.z.Y._.v.B.B.~.,.! ~.z.Y.t 4 e a D.B.B. X^ :.G.", +"k.Y.] 1 G.z.B.z.v.z.z.f.z.z.z.G.-.! ^.B.B.7.3.@.6.B.B.z.~.Q :.~.", +"C.).' z X~.~.~.~.~.~.~.~.~.~. Xw.^ ~.v.B.P.Y._.Y.B.B.z.~.^ :.~.", +"n._.*.; _ ^ ^ Q ^ Q ^ ^ Q ^ ^ ] A R XB.B.B.z.v.v.B.B.z. XQ :.~.", +"n.P.< * D c m m m m m m m m m M : q.G.v.B.B.B.v.v.B.B.z.~.^ :.~.", +"n.Y.- ] G.z.z.z.z.z.z.z.z.z.z.B.M L T P T P P P P P P P Q 2 q.L.", +"G.i.x :.`.N.N.B.B.B.B.N.N.B.B.G.J :.q.0.2.q.q.q.q.q.q.q.:.J G.B.", +"B.~._ $.~.z.N.N.Y.Y.G.B.N.B.B.~.M P Q T T R T T Q T T ( c _ ^.B.", +"n.~.] $.~.B.B.G.7.O.7.D.G.B.B.B.Y L.^.^.^.`.~.~.~.~.~.XX2.] ~.z.", +"B.B.z.z.B.B.B.B.y.5.s.B.B.B.B.B.f.z.v.B.B.z.z.B.z.z.z.B.z.z.B.B.", +"B.B.B.B.B.B.B.B.G.Y.D.B.B.B.B.B.D.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.v.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B." }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 112 2 ", -" c gray5", -". c #181717", -"X c #1B1B1A", -"o c #222221", -"O c #2C2C2B", -"+ c #323130", -"@ c #3D3C3B", -"# c #403F3E", -"$ c #007600", -"% c #007D00", -"& c #444442", -"* c #4F4F4D", -"= c #504F4D", -"- c #525250", -"; c #5A5957", -": c #5E5D5B", -"> c #605F5D", -", c #62615F", -"< c #676663", -"1 c #6A6967", -"2 c #6D6C6A", -"3 c #73726F", -"4 c #767572", -"5 c #7A7976", -"6 c #7E7D7A", -"7 c #817F7D", -"8 c #038203", -"9 c #088608", -"0 c #10890F", -"q c #118610", -"w c #1A8B19", -"e c #239122", -"r c #2B9329", -"t c #399937", -"y c #3A9A38", -"u c #409C3E", -"i c #459D43", -"p c #47A045", -"a c #4CA24A", -"s c #55A452", -"d c #5CA759", -"f c #5FA85C", -"g c #65AA62", -"h c #6EAE6A", -"j c #70AE6D", -"k c #75B171", -"l c #7CB478", -"z c #82817E", -"x c #858481", -"c c #898784", -"v c #8A8986", -"b c #8F8E8B", -"n c #92918E", -"m c #959391", -"M c #999794", -"N c #9B9996", -"B c #9E9D99", -"V c #A09F9B", -"C c #89BA85", -"Z c #8EBA8A", -"A c #92BE8D", -"S c #98BF93", -"D c #A2A09C", -"F c #A6A5A1", -"G c #A8A7A3", -"H c #AAA9A5", -"J c #AEACA8", -"K c #B0AFAB", -"L c #B3B2AE", -"P c #B7B6B2", -"I c #B8B6B2", -"U c #BDBBB7", -"Y c #BFBDB9", -"T c #C0BEBA", -"R c #9AC095", -"E c #9EC299", -"W c #A4C49F", -"Q c #A6C5A0", -"! c #ADC7A7", -"~ c #B1C9AB", -"^ c #BACDB5", -"/ c #BFCFB9", -"( c #C2C0BC", -") c #C1CFBB", -"_ c #C3D0BD", -"` c #C6C4C0", -"' c #C9C7C2", -"] c #CCCAC5", -"[ c #D1CFCA", -"{ c #C7D2C1", -"} c #CAD4C4", -"| c #D5D4CE", -" . c #D6D8CF", -".. c #D7D5D0", -"X. c #D9D7D2", -"o. c #D7D8D0", -"O. c #DCDAD5", -"+. c #DFDCD8", -"@. c #E2DEDA", -"#. c #E3E1DC", -"$. c #E7DEE0", -"%. c #E9DFE2", -"&. c #E7E5E0", -"*. c #E9E5E2", -"=. c #ECEAE5", -"-. c #EFE2E8", -";. c #F4E4EC", -":. c #F1EEE9", -">. c #F6F3EE", -",. c #F8F5F0", -"<. c #FAF8F2", -"1. c gray100", +"48 48 239 2 ", +" c black", +". c #010101", +"X c #020202", +"o c #040404", +"O c #0C0C0C", +"+ c #0E0E0E", +"@ c #111111", +"# c #131313", +"$ c #151515", +"% c gray13", +"& c #2C2C2C", +"* c #3F3F3F", +"= c #007900", +"- c #007C00", +"; c #007D00", +": c #007F00", +"> c gray26", +", c gray29", +"< c #4C4C4C", +"1 c gray31", +"2 c #505050", +"3 c gray32", +"4 c #555555", +"5 c #5D5D5D", +"6 c gray37", +"7 c #626262", +"8 c gray39", +"9 c #646464", +"0 c gray40", +"q c DimGray", +"w c #6A6A6A", +"e c gray44", +"r c #717171", +"t c #727272", +"y c gray45", +"u c gray46", +"i c gray47", +"p c #797979", +"a c gray48", +"s c #7B7B7B", +"d c #7C7C7C", +"f c #7E7E7E", +"g c gray50", +"h c #008200", +"j c #008300", +"k c #008500", +"l c #018501", +"z c #008600", +"x c #008800", +"c c #028B02", +"v c #078C07", +"b c #078D07", +"n c #098C09", +"m c #0E8D0E", +"M c #148D14", +"N c #109010", +"B c #1D951D", +"V c #1F951F", +"C c #1E961E", +"Z c #299A29", +"A c #2A9B2A", +"S c #2E9B2E", +"D c #2F9D2F", +"F c #37A037", +"G c #39A139", +"H c #3EA23E", +"J c #3FA33F", +"K c #43A143", +"L c #42A442", +"P c #46A646", +"I c #49A649", +"U c #4CA64C", +"Y c #4BA84B", +"T c #4EA84E", +"R c #5AAE5A", +"E c #63B163", +"W c #66B366", +"Q c #69B469", +"! c #6AB46A", +"~ c #6FB46F", +"^ c #70B770", +"/ c #72B772", +"( c #77BA77", +") c #7FBD7F", +"_ c #818181", +"` c gray51", +"' c #848484", +"] c #868686", +"[ c gray53", +"{ c #888888", +"} c #898989", +"| c gray54", +" . c #8B8B8B", +".. c gray55", +"X. c gray56", +"o. c #909090", +"O. c gray57", +"+. c #929292", +"@. c gray58", +"#. c #959595", +"$. c gray59", +"%. c #989898", +"&. c gray60", +"*. c #9B9B9B", +"=. c #A0A0A0", +"-. c #A2A2A2", +";. c gray64", +":. c #A4A4A4", +">. c gray65", +",. c gray66", +"<. c #A9A9A9", +"1. c gray67", +"2. c #ACACAC", +"3. c gray68", +"4. c #AEAEAE", +"5. c gray69", +"6. c #B1B1B1", +"7. c #B2B2B2", +"8. c gray71", +"9. c #B6B6B6", +"0. c #B7B7B7", +"q. c gray72", +"w. c #B9B9B9", +"e. c gray73", +"r. c #BBBBBB", +"t. c #BCBCBC", +"y. c gray", +"u. c gray75", +"i. c #90C390", +"p. c #91C291", +"a. c #95C695", +"s. c #97C697", +"d. c #97C797", +"f. c #9BC89B", +"g. c #A0CAA0", +"h. c #A4CBA4", +"j. c #A5CCA5", +"k. c #A6CDA6", +"l. c #ADCFAD", +"z. c #AFD0AF", +"x. c #B2D2B2", +"c. c #B7D3B7", +"v. c #BAD4BA", +"b. c #BDD5BD", +"n. c #BDD6BD", +"m. c #BFD7BF", +"M. c #C3C3C3", +"N. c gray77", +"B. c #C5C5C5", +"V. c #C6C6C6", +"C. c gray78", +"Z. c #C8C8C8", +"A. c gray79", +"S. c #CACACA", +"D. c #CECECE", +"F. c gray81", +"G. c #C2D8C2", +"H. c #C5D9C5", +"J. c #C6D9C6", +"K. c #C7D9C7", +"L. c #CADBCA", +"P. c #D0D0D0", +"I. c gray82", +"U. c #D2D2D2", +"Y. c LightGray", +"T. c gray83", +"R. c #D4DFD4", +"E. c gray85", +"W. c #DADADA", +"Q. c gray86", +"!. c #DDDDDD", +"~. c gray87", +"^. c #DFDFDF", +"/. c #D8E2D8", +"(. c #DAE1DA", +"). c #DBE2DB", +"_. c #DCE2DC", +"`. c #DEE3DE", +"'. c gray88", +"]. c #E1E1E1", +"[. c #E2E2E2", +"{. c gray89", +"}. c #E0E4E0", +"|. c #E1E4E1", +" X c #E2E4E2", +".X c #E2E5E2", +"XX c #E3E5E3", +"oX c #E4E4E4", +"OX c #E4E5E4", +"+X c gray90", +"@X c #E5E6E5", +"#X c #E6E6E6", +"$X c #E7E6E7", +"%X c #E7E7E7", +"&X c #E8E7E8", +"*X c #E9E7E9", +"=X c gray91", +"-X c #E9E9E9", +";X c #EAE8EA", +":X c #EBE8EB", +">X c #EAEAEA", +",X c gray92", +" c o.O.O.O.O.O.O.O.O.O.+.O.O.O.", -"O.O.O.O.O.O.O.O.O.O.#.n + o #.O.+.O.O.O.O.O.O.O.O.O.O.O.X.&.m 5 N < =.O.O.O.O.+.O.O.O.O.O.O.O.", -"O.O.O.O.O.O.O.O.O.O.| ,.v X #.o.O.O.O.O.O.O.O.O.O.O.O.O.O.O.&.V 1 o B &.O.O.O.O.O.O.O.+.O.O.O.O.", -"O.O.O.O.O.O.O.O.O.O.O.&.5 . #.+.O.O.O.O.O.O.O.O.O.O.O.O.O.O.#.M , n &.O.O.O.O.O.O.O.O.O.O.+.O.", -"O.O.+.O.O.O.O.+.O.O.| <.z X ,.+.O.O.O.O.O.O.O.O.O.O.O.O.O.O.[ :.1.+ = :...O.O.O.O.O.O.O.O.O.O.O.", -"O.O.O.O.O.O.O.O.O.o.#.v o - ] O.X.X.O.X.O.O.X.O.O.O.O.X.&.b # # X J #.O.O.O.O.O.O.O.O.O.O.O.O.", -"O.O.O.O.O.+.#.&.&.#.=.T H I H #.=.&.&.&.&.&.&.&.&.#.O.O.O.O...H V ] #.O.O.O.O.O.O.O.O.O.O.O.O.O.", -"O.O.+.+.#.| G H H H H L P L I H H H H H H H H H F ( +.O.O.O.O.&.*.@.O.O.O.O.O.O.O.+.O.O.O.O.O.O.", -"O.O.+.[ [ , 6 H V D D D V D B D D D V V D D D D M 4 #.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.+.O.O.O.O.O.", -"O.O.@.( 4 & ' :.&.&.*.*.&.&.&.*.*.*.*.*.&.=.*.=.#.z +...O.X.O.O.X.X.O.O.X.O.X.o.O.o.O.+.+.O.O.O.", -"O.O.X.&.' : U @.| O.O.O.O.| O.O.X.X.X.O.O.O.o.O.O., 7 z z z z 7 z z z z z z z z z z z 4 ..+.O.O.", -"O.O.O.#.I ; T #.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O...x #.O.O.@.@.O.+.O.O.+.+.+.+.+.O.O.&.v ( #.O.O.", -"O.O.o.#.U ; T @.o.O.O.O.O.O.O.O.@.+.O.O.O.O.O.+.| z @.o.O.O.O.O.O.O.O.O.O.O.O.O.O.O.#.b ' @.O.O.", -"O.O.O.#.Y ; T #.o.O.O.O.O.O.+.| ) | +.O.O.O.O.O...z @.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.&.v ( @.X.O.", -"O.+.O.#.U ; T #.X.O.O.O.O.O.| r % k %.O.O.O.O.@...z @.O.O.O.O.O.O.o.O.O.@.O.O.O.O.| &.v ' @.O.O.", -"O.O.X.#.U ; T @.O.O.O.O.o.-.g 9 8 h -.o.O.O.O.O...z @.X.O.O.O.@.%.-.-.@.O.O.O.O.O.O.&.v ` @.O.O.", -"O.O.O.#.U ; T #.o.O.O.O.%.! 8 l % h %.o.O.O.O.@.| z @.O.O.O.@.~ g i s Q @.X.O.O.O.o.&.v ` @.O.O.", -"O.O.X.#.U ; T @.O.O.O.O.O.e f o.% k ;.O.O.O.O.O...z @.O.O.X.%.i q a w % S $.o.O.O.o.&.v ` @.O.O.", -"O.O.O.@.T ; T @.X.O.o.-.Z % W R % s } O.O.O.O.O...z @.O.O.O.O.^ O.;.} % s %.o.@.O.X.*.v ( @.O.O.", -"O.O.O.#.U ; T #.O.O.X.%.C % 9 8 8 % i %.O.O.O.+...z @.O.O.O.O.@.X.%.W % j %.o.O.O.X.&.v ( @.O.O.", -"O.O.O.#.U ; T @.X.O.O.O.o.{ | ~ $ g @.o.O.O.O.O.| z @.O.O.O.O.O.*.A 8 q ) @.O.O.O.X.&.v ' #.O.O.", -"O.+.o.#.U ; T #.O.O.O.+.+.@.@.o.W _ @.O.O.O.O.@...z @.O.O.O.O.@.k % r } ;.o.O.O.O.X.&.b ( #.O.O.", -"O.O.X.#.U ; T #.X.O.O.O.O.O.X.O.%.@.o.O.O.O.O.O.| z @.o.O.o.%.f $ % p d C $.O.O.O.X.&.v ( &.O.O.", -"O.O.O.#.U ; T @.O.O.O.O.O.O.O.O.o.O.O.O.O.O.O.@...x @.O.O.O.@.h u p y e k &.X.O.O.O.&.v ( @.O.O.", -"O.O.o.#.U ; T #.X.O.O.O.O.O.O.O.O.O.O.O.O.O.O.+.| x @.O.O.O.O.%.%.%.%.-.$.O.O.O.O.X.&.v ' #.O.O.", -"O.O.O.#.U ; Y @...O.O.O.O.O.O.O.O.O.O.O.X.O.O.O.| z @.O.O.O.O.O.X.X.O.X.O.O.O.O.O.X.&.v ( +.O.O.", -"O.+.O.@.I : T #.+.+.O.+.O.+.+.O.O.O.+.O.+.O.+.+.O.x +.O.O.O.O.O.O.O.O.O.O.O.O.O.O...&.v ` #.O.O.", -"O.O.X.&.` * x n b b b b b b b b b b b b b b b n 5 2 #...O.+.O.O...O...O.O.O.O.O.O.| #.v ` #.O.O.", -"O.O.@.' 2 O b c c c v c v c c c v v v v v v v b 2 I :.&.&.&.&.&.&.&.&.&.&.&.&.&.&.#.>.n ( #.O.O.", -"O.O.O.#.& x [ Y ( ( ( ( ( ( ( ( ( ( T T ( ( Y ' 2 B F F F F F D F F F F F F F F F D J 3 ' +.O.O.", -"O.O.@.' = F :.@.#.#.@.@.#.#.#.#.#.#.#.@.#.@.@.=.6 B G F F F F F F F F F F F D F D H B < +.+.O.O.", -"O.O.&.F z F &.X.O.O.O.o.O.O.O.O.O.O.O.O.O.O.O.@.x O.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.=.H H #.O.O.O.", -"O.O.O.@.H B &.X.O.O.O.O.O.o.| O.O.O.O.O.O.O.X.&.3 3 x z z z 7 z z z z z z z 7 z z 6 , O.O.O.O.O.", -"O.O.o.&.K B &.X.O.O.O.O.@.%.&.@.O.O.O.O.O.O.O.#.x | #.+.@.+.+.+.+.+.+.+.+.+.+.@.@.@.z O.O.+.O.O.", -"O.O.X.&.K N &.X.O.O.O.+.} W S ! o.@.O.O.O.O.X.@.x [ O.O.O.O.O.O.O.O.O.o.o.O.O.O.O.O.z O.+.O.O.O.", -"O.O.O.O...| @.+.O.O.O.+.[ / ~ ) X.O.O.O.O.O.O.+.[ O.O.O.O.O.O.O.O.O.O.O.+.O.O.O.O.O.[ O.O.O.O.O.", -"O.O.O.O.O.@.O.O.O.O.O.O.@.@.@.@.+.O.O.O.O.O.O.O.@.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.+.O.O.O.O.O.", -"O.O.O.O.O.O.O.O.+.O.O.O.O.O.O.O.O.O.O.+.O.O.O.O.O.O.O.O.O.O.O.O.O.O.+.O.O.O.O.O.O.O.O.O.O.+.O.O.", -"O.O.O.O.O.O.O.O.O.O.+.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.+.O.O.O.O.O.O.O.O.+.O.O.O.O.O.O.O.", -"+.O.O.O.O.O.O.O.O.O.O.O.O.O.+.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.+.O.O.O.O.O.O.O.O.O.O.O.", -"O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.+.O.O.O.O.+.O.O.O.O.O.O.O.O.O.O.+.O.O.O.O.O.O.O.O.O.O.O.O.O.", -"O.O.O.O.+.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.+.O.O.O.O.O.O.O.O.O.O.O.O.O.O.+.O." +"#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#X#X#X#X#X#X#X#X#X#X{.{.#X=X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X{.{.{.#X#X#X#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#X#X#X#X#X#X#X#X#X4XnXnX=X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X=XhXmXhX=X#X#X#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#X#X#X#X#X#X#X#X4Xq.e u U.=X#X#X#X#X#X#X#X#X#X#X#X#X#X=XQ._ 0 ] Q.=X#X#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#X#X#X#X#X#X#X{.fX} & X q.fX{.#X#X#X#X#X#X#X#X#X#X#X#X4XV.4 q X < fX{.#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#X#X#X#X#X#X#X#X{.nX9.X t.4X{.#X#X#X#X#X#X#X#X#X#X#X#X#X4XV.e # e fX{.#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#X#X#X#X#X#X#X#X#X4X>.X t.fX#X#X#X#X#X#X#X#X#X#X#X#X#X{.fX4.< # +.fX#X#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#X#X#X#X#X#X#X#X{.fX<.X t.fX{.#X#X#X#X#X#X#X#X#X#X#X#X=XU.^.mX> % =X#X#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#X#X#X#X{.#X{.{.fX_ + X + @.4X{.{.#X{.{.#X#X{.#X#X#X{.hX+.# % o _ 4X{.#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#X#X#X#XfXfXfX4XhXT.q.M.q.Q.hXfXfXfXfXfXfXfXhX4X#X#X#X#X{.q.4.S.4X#X#X#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#X=X4X^.6.6.6.6.6.q.t.t.t.9.6.6.6.6.6.6.6.6.4.S.=X#X#X#X#XfXfX=X#X#X#X#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#XQ.^.8 ] 6.<.<.<.<.<.>.>.<.<.<.<.<.<.<.<.4.=.d 4X#X#X#X#X#X#X#X#X#X&X#X#X#X#X#X#X#X#X#X#X#X", +"#X#X4XD.a > U.nXfXfXhXfXfXhXfXhXfXhXfXhXhXfXhXhX4X} #X{.#X{.#X{.{.{.#X{.#X#XoX{.#XXX#X=X#X#X#X#X", +"#X#XXXhXU.7 V.,X{.oXoX{.oXoXXXXX#X{.XX{.#X{.{.#X{.0 ] } } } [ } } [ } } [ } } [ } [ } a ^.%X#X#X", +"#X#X#X4XM.6 Z.6X{.#X#X#X#X#X#X#X#X#X#X#X#X#X#X%X^.} 4X#X%X=X=X%X=X%X%X=X=X%X=X%X%X#XhX+.D.4X#X#X", +"#X#X#X4XV.6 Z.6XoX#X#X#X#X#X#X&X1X&X#X#X#X#X#X=X{.} =X#X#X#X#X#X#X#X#X#X%X#X#X#X#X{.fX+.U.,X#X#X", +"#X#XXX4XV.6 S.0XoX#X#X#X#X#X=X`.L.(.&X#X#X#X#X=X^.[ 4X#X#X#X#X#X#X#X#X%X#X#X#X#X#X{.fX+.F.=X#X#X", +"#X#X{.4XV.6 Z.4XoX#X#X#X#X%XXXS h ^ rXXX#X#X#X=X`.} =X#X#X#X#X#XXXXXXXXX#X#X#X#X#X{.fX+.D.,XXX#X", +"#X#X#X4XV.6 Z.4XoX#X#X#XXXrXE m z ! rXXX#X#X#X=X^.} ,X#X#X#X#X1XrXzXrX1XoX#X#X#X#X{.fXo.F.,X#X#X", +"#X#X#X4XV.6 S.4XoX#X#XXXrXk.M a.z Q wXXX#X#X#X=X^.} ,X#X#X#X=Xc.E Y E c.1X#X#X#X#X{.fX+.F.4X#X#X", +"#X#X#X4XV.6 S.4XoX#X#X&X(.B g.(.: ( xXXX#X#X#X%X^.} =X#X#X#XwXK M G z n b.1X#X#X#X{.fXo.F.4X#X#X", +"#X#XXX4XZ.6 S.4XoX#XXXrXi.h R L x B f.1X#X#X#X=X^.} 4X#X#X#X#XG.XXaX( : i.wXXX#X#X{.fX+.D.4X#X#X", +"#X#X#X0XV.6 S.4XoX#XXXqXk.Z Z B x v ) qXXX#X#X=X^.} =X#X#X#X&X=X&XqXI z G.qXoX#X#X{.fX+.U.=X#X#X", +"#X#X#X4XV.6 S.4XoX#X#X#X#X#XrXb.: ^ pXXX#X#X#X=X^.} =X#X#X#X#X=X&XU z a.qXoX#X#X#X{.fX+.D.4X#X#X", +"#X#XXX4XV.6 S.4XoX#X#X#X#X#X=X(.h.K.&X#X#X#X#X=X^.} 1X#X#X#X&X(.J n x.xX&X#X#X#X#X{.fX+.D.4X#X#X", +"#X#X#X6XV.6 S.4XoX#X#X#X#X#X#X#XwX&X#X#X#X#X#X&X`.} =X#X#XXXqXU = B I A a.qXXX#X#X{.fXX.U.=X#X#X", +"#X#X#X4XV.6 S.4X{.#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X^.} ,X#X#X#X1X^ J L G S a.qXXX#X#X{.fX+.D.4X#X#X", +"#X#XXX4XV.6 S.4X{.#X#X#X#X#X#X#X#X#X#X#X#X#X#X&X^.} 1X#X#X#X#XqXwXwXrXpX1X#X#X#X#X{.fX+.D.4X#X#X", +"#X#X#X4XV.6 Z.4X{.#XoX#XoX#X#XoX#XoX#X#X#X#X#X#X^.} =XoX#X#X#X#XXXXX#X{.#X#X#X#X#X{.fXX.U.=X{.#X", +"#X#XXX4XM.8 V.4X#X=X=X=X=X=X=X=X=X=X&X=X=X=X=X=X{.X.=X#X#X#X#X#X#X#X#X#X#X#X#X#X#X{.hX+.D.4X#X#X", +"#X#XoXfXU.3 } &.@.@.@.@.@.@.&.@.@.@.@.@.&.@.@.&._ e 4X{.{.#X{.#X{.{.{.#X#X{.{.{.{.{.4X+.U.=X#X#X", +"#X#X=XU.e & @.X.+.+.+.X.X.+.+.X.o.o.X.+.+.X.X.@.e M.mXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXmX@.U.4X#X#X", +"#X#X&X4X, } Q.V.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.U.e =.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.<.9.a U.=X#X#X", +"#X#X=XU.3 4.nX=X4X4X4X1X4X4X4X4X4X4X4X4X4X4X=XnX] =.6.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.>.q #X#X#X#X", +"#X{.fX4.} 4.fX{.#X#X#X#X#X#X#X#X#X#X#X#X#X#XoX=XX.#XfX4XfX4XfX4X4X4XfX4X4X4XfX4X=XnX6.6.fX#X#X#X", +"#X#X#X#X9.>.hX{.#X#X#X#X#XoXXXXX#X#X#X#X#X#X{.fXu a } } ] } ] ] } } ] ] } } ] ] } ] 0 #X#X#X#X#X", +"#X#X#XfX9.=.hX#X#X#X#X#X&XqXqXqX&X#X#X#X#X#X#X4X} {.4X=X=X=X=X,X=X=X=X4X=X=X=X4X=X=X} #X#X#X#X#X", +"#X#X#XfX9.>.fX{.#X#X#X&XR.l.f.x.`.#X#X#X#X#X#X4X} Q.#X{.#X#X{.#X#X{.#X#X{.#X#X#X#X=X} #X#X#X#X#X", +"#X#X#X#X{.^.=X#X#X#X#X#X`.H.b.H.XX&X#X#X#X#X#X#XQ.#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#XQ.#X#X#X#X#X", +"#X#X#X#X#X#X#X#X#X#X#X#X&X1XqX1X#X#X#X#X#X#X#X#X=X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X=X#X#X#X#X#X", +"#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X", +"#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X" }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/towers.sav sgt-puzzles-20160429.b31155b/icons/towers.sav --- sgt-puzzles-20140928.r10274/icons/towers.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/towers.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,26 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :6:Towers +PARAMS :3:4de +CPARAMS :3:4de +SEED :15:888431554483015 +DESC :31:2/2/1/3/2/2/3/1/3/1/2/2/2/3/2/1 +AUXINFO :34:297d7a2fcf9e14403a74c976fe0fefd306 +NSTATES :2:17 +STATEPOS:2:10 +MOVE :6:R2,0,4 +MOVE :6:R0,1,4 +MOVE :6:R3,3,4 +MOVE :6:R1,2,4 +MOVE :6:R0,3,3 +MOVE :6:R1,0,3 +MOVE :6:R3,2,3 +MOVE :6:R2,1,3 +MOVE :6:R3,0,2 +MOVE :6:R3,1,1 +MOVE :6:R1,1,2 +MOVE :6:R1,3,1 +MOVE :6:R2,3,2 +MOVE :6:R2,2,1 +MOVE :6:R0,2,2 +MOVE :6:R0,0,1 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/towers-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/towers-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tracks-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tracks-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tracks-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tracks-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tracks-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tracks-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tracks-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tracks-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tracks-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tracks-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tracks-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tracks-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tracks-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tracks-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tracks-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tracks-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tracks-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tracks-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tracks-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tracks-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tracks-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tracks-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tracks-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tracks-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tracks.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tracks.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/tracks-icon.c sgt-puzzles-20160429.b31155b/icons/tracks-icon.c --- sgt-puzzles-20140928.r10274/icons/tracks-icon.c 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/tracks-icon.c 2016-04-29 00:31:44.000000000 +0000 @@ -0,0 +1,642 @@ +/* XPM */ +static const char *const xpm_icon_0[] = { +/* columns rows colors chars-per-pixel */ +"16 16 247 2 ", +" c #D5D5D5", +". c #D5D5D5", +"X c #D5D5D5", +"o c LightGray", +"O c #CBCBCB", +"+ c #D5D5D5", +"@ c gray84", +"# c gray81", +"$ c gray80", +"% c gray84", +"& c gray84", +"* c gray80", +"= c #D2D2D2", +"- c gray84", +"; c #D5D5D5", +": c #D5D5D5", +"> c #D5D5D5", +", c #D5D5D5", +"< c LightGray", +"1 c gray43", +"2 c #C5C5C5", +"3 c #DFDFDF", +"4 c gray71", +"5 c #7E7E7E", +"6 c #DADADA", +"7 c gray87", +"8 c #979797", +"9 c gray66", +"0 c gray87", +"q c LightGray", +"w c #D5D5D5", +"e c #D5D5D5", +"r c #D7D7D7", +"t c LightGray", +"y c gray62", +"u c #D0D0D0", +"i c gray87", +"p c #BBBBBB", +"a c #A2A2A2", +"s c gainsboro", +"d c gray86", +"f c #AEAEAE", +"g c gray69", +"h c gainsboro", +"j c gray83", +"k c #D5D5D5", +"l c gray84", +"z c gray82", +"x c #CBCBCB", +"c c #D3D3D4", +"v c #CECECE", +"b c #CDCDCD", +"n c #D0D0CF", +"m c #D2D2D2", +"M c #CACACB", +"N c gray82", +"B c #D8D8D8", +"V c #D8D8D8", +"C c #D2D2D2", +"Z c gray83", +"A c #D8D8D8", +"S c #C6C6C6", +"D c #A5A5A3", +"F c #A8A7A6", +"G c #9A978E", +"H c #9B9993", +"J c #9E9C95", +"K c #A8A8A7", +"L c #A9A9A8", +"P c #CDCDCD", +"I c gray82", +"U c #D0D0D0", +"Y c gray82", +"T c gray83", +"R c gray83", +"E c #D8D8D7", +"W c #C7C7C8", +"Q c #A7A6A4", +"! c #918D82", +"~ c #918D81", +"^ c #938E7F", +"/ c #8F8B80", +"( c #99958B", +") c #ADADAE", +"_ c gray81", +"` c gray77", +"' c gray77", +"] c gray83", +"[ c gray83", +"{ c gray83", +"} c #D7D8D8", +"| c #C8C8C6", +" . c #97948C", +".. c #918D7F", +"X. c #8D856D", +"o. c #877D5F", +"O. c #918A76", +"+. c #8F8C82", +"@. c #A6A49E", +"#. c #D2D3D5", +"$. c #D2D2D3", +"%. c #D1D2D3", +"&. c #D4D5D6", +"*. c gray83", +"=. c gray83", +"-. c #D7D7D8", +";. c #C9C8C7", +":. c #969287", +">. c #928C7B", +",. c #938C77", +"<. c #A7A18D", +"1. c #8F8A79", +"2. c #918B7A", +"3. c #98917D", +"4. c #BEBDB7", +"5. c #C0BFBB", +"6. c #BFBDB9", +"7. c #C2C1BE", +"8. c #D5D5D6", +"9. c gray83", +"0. c #D8D8D8", +"q. c #C7C6C4", +"w. c #928D7D", +"e. c #908A79", +"r. c #989488", +"t. c #B0AFAD", +"y. c #95928B", +"u. c #918B7A", +"i. c #8C846C", +"p. c #908977", +"a. c #908B7C", +"s. c #8C8676", +"d. c #9D998D", +"f. c #D6D7D8", +"g. c #D5D5D5", +"h. c gray83", +"j. c #D8D8D8", +"k. c #C7C6C3", +"l. c #928D7F", +"z. c #908A79", +"x. c #969182", +"c. c gray69", +"v. c #A4A29C", +"b. c #908C82", +"n. c #928D80", +"m. c #928D7D", +"M. c #918B7A", +"N. c #8E8876", +"B. c #9D998C", +"V. c #D6D6D8", +"C. c #D5D5D5", +"Z. c gray83", +"A. c #D7D7D7", +"S. c #CACAC9", +"D. c #969181", +"F. c #908B7A", +"G. c #999588", +"H. c #ADADAB", +"J. c #A9A9A8", +"K. c #A7A6A4", +"L. c #9C9991", +"P. c #9C988E", +"I. c #999588", +"U. c #969285", +"Y. c #A5A298", +"T. c #D6D6D8", +"R. c #D5D5D5", +"E. c gray85", +"W. c #DCDDE0", +"Q. c #BAB5A8", +"!. c #574F35", +"~. c #6B6657", +"^. c #777369", +"/. c #C8C8C8", +"(. c #CBCBCB", +"). c gray80", +"_. c gray80", +"`. c #CBCBCB", +"'. c #CECECE", +"]. c #CDCDCD", +"[. c #CDCDCD", +"{. c #D5D5D5", +"}. c gainsboro", +"|. c #6C6C6C", +" X c #BDBEC0", +".X c #A6A299", +"XX c #5A533E", +"oX c #4B483C", +"OX c #908E89", +"+X c #CBCBCB", +"@X c gray82", +"#X c #C8C8C8", +"$X c LightGray", +"%X c #D5D5D5", +"&X c #CBCACA", +"*X c #CCCCCB", +"=X c gray83", +"-X c gray83", +";X c gray82", +":X c gray48", +">X c #B6B7B8", +",X c #ADACA7", +" , < 1 2 3 4 5 6 7 8 9 0 q ", +" w e r t y u i p a s d f g h j ", +" k l z x c v b n m M N B V C . ", +" Z A S D F G H J K L P I U Y T ", +" R E W Q ! ~ ^ / ( ) _ ` ' ] [ ", +" { } | ...X.o.O.+.@.#.$.%.&.*.", +" =.-.;.:.>.,.<.1.2.3.4.5.6.7.8.", +" 9.0.q.w.e.r.t.y.u.i.p.a.s.d.f.", +"g.h.j.k.l.z.x.c.v.b.n.m.M.N.B.V.", +"C.Z.A.S.D.F.G.H.J.K.L.P.I.U.Y.T.", +"R.E.W.Q.!.~.^./.(.)._.`.'.].[.{.", +"}.|. X.XXXoXOX+X@X#X$X%X&X*X=X-X", +";X:X>X,X c #3E3F42", +", c #444444", +"< c #4B4B4C", +"1 c #525252", +"2 c #545559", +"3 c #5C5C5C", +"4 c #796C47", +"5 c gray39", +"6 c #6C6C6C", +"7 c #7B7460", +"8 c #74726C", +"9 c #7D796D", +"0 c #717171", +"q c #7E7C75", +"w c #7D7C79", +"e c #8B773C", +"r c #877748", +"t c #86784D", +"y c #827551", +"u c #8A7E5B", +"i c #887F65", +"p c #847E6E", +"a c #817E74", +"s c #8E825E", +"d c #958557", +"f c #95865B", +"g c #8E8260", +"h c #87816F", +"j c #8C846C", +"k c #928665", +"l c #968A64", +"z c #9B8D64", +"x c #90866B", +"c c #968B6C", +"v c #998E6C", +"b c #9E916C", +"n c #858175", +"m c #8B8574", +"M c #85827A", +"N c #89857B", +"B c #8C897E", +"V c #928A72", +"C c #938D7A", +"Z c #9D9273", +"A c #9E957C", +"S c #A0936A", +"D c #A89768", +"F c #A0977A", +"G c #A49A7E", +"H c #858481", +"J c #898782", +"K c #8A8984", +"L c #858689", +"P c #87888A", +"I c #8C8C8A", +"U c #949085", +"Y c #9A9484", +"T c #9F9885", +"R c #96938B", +"E c #98958D", +"W c #9E998C", +"Q c #8B8C90", +"! c #8A8D98", +"~ c #8E9096", +"^ c #8E9199", +"/ c #939393", +"( c #999792", +") c #9D9A92", +"_ c #95979E", +"` c #9C9C9B", +"' c #A29A84", +"] c #A29C8A", +"[ c #A29E92", +"{ c #A5A194", +"} c #AAA495", +"| c #A6A39A", +" . c #A9A69C", +".. c #9295A0", +"X. c #9D9EA0", +"o. c #A6A6A5", +"O. c #A8A7A2", +"+. c #ACAAA4", +"@. c #A7A8AB", +"#. c #ABABAB", +"$. c #B9B6AF", +"%. c #ADAEB1", +"&. c #AFB0B3", +"*. c #B4B4B4", +"=. c #B8B7B5", +"-. c #B8B8B7", +";. c #B3B4B9", +":. c #BBBBBB", +">. c #BBBCC0", +",. c #BFC0C3", +"<. c #C2C3C3", +"1. c #C3C5C8", +"2. c #CDCDCD", +"3. c #D5D5D5", +"4. c #D8D7D7", +"5. c #D8D8D7", +"6. c #D7D7D8", +"7. c #D7D8DB", +"8. c #DADADA", +"9. c #E0E0DF", +"0. c #E3E3E3", +"q. c gray91", +/* pixels */ +"3.3.6.3.3.3.3.5.3.3.8.6.3.3.3.3.3.6.8.4.3.3.3.3.3.6.6.3.3.3.3.6.", +"3.3.3.3.3.3.3.3.3.3.>.2.6.3.3.3.6.1.<.8.3.3.3.3.3.<.2.3.3.3.3.3.", +"3.3.3.3.3.3.3.3.6.3.6 < 6.3.3.3.6.o., ( 0.3.3.3.3., / 0.3.3.3.3.", +"3.3.3.3.6.3.3.3.3.9.[ = 3.3.3.3.3.6.5 #.8.3.3.3.q.M I q.3.3.3.3.", +"3.3.3.3.3.3.3.3.5.2.6 1 2.3.3.3.0.0 $ :.6.3.3.3.5.< 3 8.3.3.3.3.", +"3.5.3.3.3.3.3.3.4.3.:.3.4.3.3.3.3.2.<.2.3.3.3.3.3.1.1.3.3.3.3.3.", +"3.3.3.3.3.3.3.6.5.5.8.5.3.6.5.5.3.6.8.8.5.5.3.3.3.8.6.6.3.6.3.3.", +"3.3.3.3.3.3.3.2.<.<.<.<.1.1.<.1.1.<.<.<.<.<.2.3.3.2.2.2.3.2.3.3.", +"3.3.3.3.3.3.6.-.o.o.o.#.[ ] ;. .T #.o.o.o.o.2.6.3.3.3.5.3.2.3.3.", +"3.5.3.3.3.3.6.:.o.#.#.%.Y h _ B m *.#.#.#.#.2.3.<.5.3.<.3.3.3.3.", +"3.3.3.3.3.3.3.-.#. .l / L h ` m M ^ c ' %.o.2.3.1.<.:.2.3.2.3.3.", +"3.3.6.3.3.3.6.-.@.#.J 7 O.f { f .n 9 o.%.#.2.3.8.$.:.5.3.3.3.3.", +"3.3.3.3.3.3.3.:.| ` ! ' f L a H m b ../ .#.2.3.:.2.2.:.3.2.3.3.", +"5.3.3.6.5.3.3.:.v p j A H y e r a Y k a v O.2.3.3.6.3.3.3.3.3.3.", +"3.3.3.3.3.3.6.:.;.I ) C n d +.z i m { K | #.2.3.3.3.3.3.3.2.3.3.", +"3.3.3.3.3.3.5.:.v M V C n A ;.*.( I b a t z #.O.+.O. .#.} :.3.3.", +"3.3.3.3.3.3.6.-.[ J W R K { *.{ g a ] U 9 u c Y V Y k ) u #.6.4.", +"3.3.3.3.3.3.6.-.c M l j n Z &.#.#.^ / d R a H M M J M K a ` 4.3.", +"3.6.3.3.3.3.6.-.[ J ) E K | #.#.#.W 7 / A F ' A Z ] z } f -.6.3.", +"3.3.3.3.3.3.6.-.l n f j n Z *.#.%.A ] ! a K B J N K n I a [ 4.3.", +"3.3.3.5.3.3.5.-.| J ) ( K .&.#.#.%.%.#.f X.C C V U j E i +.6.3.", +"3.3.3.3.3.3.5.-.l J k j n v *.o.o.o.o.o.[ %.} [ ] | ] O.Y =.5.3.", +"3.3.3.3.3.3.6.=.z * Y w 2 :.*.1.<.<.<.<.1.<.<.1.1.1.<.<.1.<.4.3.", +"3.3.3.0.3.3.7.D ; X S % @ { -.6.6.6.3.8.4.3.3.3.4.4.5.5.3.3.3.3.", +"3.6.:.1 2.3.8.- 4 O.o 9 } -.3.2.2.8.1.1.3.2.3.<.3.3.<.3.3.3.3.", +"3.0.P O o.9.7.j Z } . , ;.@.*.6.3.<.:.<.3.3.3.3.2.:.,.2.3.2.3.3.", +"3.6.< = 3 9.7.U : # & l #.o.-.3.3.2.#.2.5.3.3.3.3.-.-.6.3.2.3.3.", +"3.2.#.3.#.3.8.< + 8 -. .#.@.-.3.2.:.8.:.2.3.2.3.:.3.2.:.5.2.3.3.", +"3.3.8.6.8.3.6.,.G +.#.+.#.o.$.8.3.3.3.3.3.3.2.3.3.3.3.2.4.2.3.3.", +"3.5.3.3.3.3.6.:.#.%.&.&.&.#.-.2.2.3.2.3.3.2.2.3.2.3.3.3.3.2.3.3.", +"3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.", +"3.5.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.4.3.3.3.3.3." +}; + +/* XPM */ +static const char *const xpm_icon_2[] = { +/* columns rows colors chars-per-pixel */ +"48 48 150 2 ", +" c #020201", +". c #0C0A05", +"X c #0A0A0C", +"o c #110B00", +"O c #1D1C17", +"+ c #1D1C1B", +"@ c #221E14", +"# c #26231C", +"$ c #373019", +"% c #252525", +"& c #2B2B2C", +"* c #2D2E32", +"= c #343434", +"- c #3A3A3A", +"; c #4F4423", +": c #5F532F", +"> c #454135", +", c #715E26", +"< c #695B33", +"1 c #796938", +"2 c #414141", +"3 c gray29", +"4 c #545453", +"5 c #5B5B5B", +"6 c #636364", +"7 c #6D6D6D", +"8 c #7D7766", +"9 c #78746A", +"0 c #7E796B", +"q c #6F7177", +"w c #757575", +"e c #7D7C77", +"r c #7E7E7D", +"t c #866D24", +"y c #866F29", +"u c #87702C", +"i c #89722D", +"p c #91782F", +"a c #8A7535", +"s c #86733D", +"d c #8B7639", +"f c #8E793C", +"g c #867645", +"h c #887745", +"j c #8D7A44", +"k c #83764F", +"l c #87784E", +"z c #8A7A4C", +"x c #947F42", +"c c #917F49", +"v c #857956", +"b c #837A5F", +"n c #8A7E59", +"m c #8A7C53", +"M c #837C66", +"N c #847E6B", +"B c #827E73", +"V c #807F7C", +"C c #99823D", +"Z c #94814B", +"A c #8F8051", +"S c #8D815B", +"D c #928253", +"F c #9B8954", +"G c #94865B", +"H c #8D8363", +"J c #8B836C", +"K c #928660", +"L c #978963", +"P c #9A8C65", +"I c #93896B", +"U c #998E6D", +"Y c #9C916E", +"T c #858174", +"R c #8D8774", +"E c #84827C", +"W c #888479", +"Q c #918A75", +"! c #948E79", +"~ c #9D9377", +"^ c #9C947B", +"/ c #A39569", +"( c #A0967A", +") c #7E7F81", +"_ c #7F8082", +"` c #828282", +"' c #888783", +"] c #8A8885", +"[ c #84858A", +"{ c #86888D", +"} c #8C8C8C", +"| c #908D85", +" . c #9C9683", +".. c #9E9885", +"X. c #9A968B", +"o. c #9E998A", +"O. c #868991", +"+. c #8C8D91", +"@. c #8F9093", +"#. c #939494", +"$. c #989796", +"%. c #9E9B94", +"&. c #9C9B9A", +"*. c #A09984", +"=. c #A49E8C", +"-. c #A29E93", +";. c #A09E99", +":. c #AFA587", +">. c #A8A28F", +",. c #A6A194", +"<. c #A9A390", +"1. c #A5A39C", +"2. c #A9A69C", +"3. c #ACA89A", +"4. c #9C9EA3", +"5. c #A5A5A4", +"6. c #A9A7A5", +"7. c #AAA8A4", +"8. c #A5A6AA", +"9. c #A6A8AC", +"0. c #AAAAAA", +"q. c #B0AFAE", +"w. c #B0B0AF", +"e. c #A7AAB3", +"r. c #ACAEB2", +"t. c #AFB1B4", +"y. c #B2B2B2", +"u. c #B8B7B3", +"i. c #B3B5BC", +"p. c #B7B8BB", +"a. c #BBBBBB", +"s. c #C0BEB7", +"d. c #B2B5C0", +"f. c #B5B9C5", +"g. c #B9BBC1", +"h. c #B6BBC8", +"j. c #BEC2CC", +"k. c #C3C3C4", +"l. c #C8C8C7", +"z. c #C3C5C9", +"x. c #C6C8CF", +"c. c #CDCDCD", +"v. c #D5D5D5", +"b. c #D8D7D7", +"n. c #D8D8D7", +"m. c #D5D7DC", +"M. c #DADADA", +"N. c #DCDEE3", +"B. c #E2E2E2", +"V. c #EAEAEA", +/* pixels */ +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.b.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.n.v.v.v.M.N.v.v.v.v.v.v.v.v.v.M.M.v.v.v.v.v.v.v.v.v.M.M.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.n.l.0.c.n.v.v.v.v.v.v.v.k.y.M.M.v.v.v.v.v.v.v.a.k.v.v.n.v.v.v.v.v.v.", +"v.v.v.b.v.v.v.v.v.v.v.v.v.v.M.} 3 & k.M.v.v.v.v.v.c.4 * 5 M.n.v.v.v.v.v.k.& - B.v.v.v.v.v.v.v.v.", +"v.v.v.v.b.v.v.v.v.v.v.v.v.n.n.c.r % l.M.v.v.v.v.v.c.V.} & N.v.v.v.v.v.v.B.#.= B.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.n.v.V + u.M.v.v.v.v.v.M.0.- a.M.v.v.v.v.v.v.V.1.- V.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.b.v.v.v.v.v.v.v.N.w 5 % p.M.v.v.v.v.v.v.+ # w v.v.v.v.v.v.v.x.2 X } M.v.v.v.v.v.v.v.", +"b.v.v.v.v.v.v.v.v.v.v.v.v.v.M.a.$.z.M.v.v.v.v.v.v.v.w.5.6.n.v.v.v.v.v.v.c.5.5.y.M.v.v.v.v.v.v.b.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.M.B.n.v.v.v.v.v.v.v.v.M.N.N.v.v.v.v.v.v.v.v.B.B.M.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.n.v.v.v.v.v.v.v.n.n.v.n.n.v.v.v.v.n.n.n.v.v.v.v.v.v.v.v.v.v.v.b.v.v.v.v.v.", +"v.v.v.b.v.v.v.m.v.v.v.v.c.c.v.c.c.c.v.c.c.c.c.c.c.c.v.c.c.c.c.c.v.c.c.c.c.v.c.c.v.c.c.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.n.k.7.0.0.0.0.0.0.t.0.0.y.0.t.0.0.0.0.0.0.0.y.v.v.v.v.c.v.c.c.v.c.c.v.n.v.v.", +"v.v.v.v.b.v.v.v.v.v.n.j.6.0.0.6.0.0.0.P ,.y.u.1.L 0.0.0.0.0.0.0.0.v.v.v.n.v.b.v.M.b.v.c.v.v.v.v.", +"b.v.v.v.v.v.v.v.v.v.v.k.6.0.0.t.0.0.t.S J 4.4.Q z t.0.0.t.0.0.7.t.v.n.l.c.n.v.b.k.v.b.c.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.n.k.8.0.0...1.0.#.` _ E ` _ ` } 6.7.^ 0.0.0.t.v.n.c.y.c.M.a.a.n.v.c.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.k.7.0.r.G z O._ | z 6.0.z | ` O.v D r.0.6.y.v.v.v.c.u.u.g.M.v.v.c.v.v.b.v.", +"v.b.v.v.v.b.v.v.v.v.n.k.6.0.0.5.r 8 1.i.d *.3.a t.5.0 e 5.0.6.0.w.v.v.v.M.a.5.v.b.v.v.c.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.n.k.0.r.r.} { K d 5.T E E J 5.f D { ] 0.t.8.w.v.v.v.a.k.v.y.c.b.v.c.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.b.k.5.~ X.) 4.d.S 8 _ T T _ 0 S i.8._ X.~ 5.r.v.M.k.a.M.v.c.u.v.v.c.v.v.v.v.", +"v.v.v.v.v.b.v.v.v.v.v.k.5.D b V D ~ } _ z i u j E { ^ A V M A 1.y.v.v.v.v.v.v.v.v.v.v.c.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.j.5.t.} ' U j r v t ..,.y v _ h P ' ] d.0.q.v.v.M.n.n.M.v.b.b.v.v.v.v.v.v.", +"v.v.v.n.v.v.v.v.v.v.v.k.w.p.{ #.j.r._ =.<.i.p.>.*._ e.j.#.E L =.g.k.z.k.k.k.k.z.k.k.k.l.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.n.k.*.f T N d z _ z P t.w.t.0._ R j g _ g i ,.1.=.0.o.5.5...9.;.o.g.n.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.k.1.=.' ] =.X.) .,.r.y...a B T ~ ;.{ E s P Y D f.d =.2.i i.L D x.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.M.k.5.6.{ } 7.&.) ;.7.0.y.1.,.#._ e.,.s _ _ ' E T } T ' ] B } W e 4.M.v.v.v.", +"v.v.v.v.v.v.v.n.v.v.v.z. .i B M i h ` s D r.0.0.t.6.[ ] d ~ 8.k @.R T @.M ' ] N @.W B 5.n.v.v.v.", +"v.v.n.v.v.v.v.v.v.v.M.k.7.t.] +.i.5.) 8.y.0.y.0.6.t.X.9 E e.=.a g.P D f.d >.3.i i.P Z x.b.v.v.v.", +"v.v.b.v.v.v.v.v.v.v.v.k.-.U E W P I _ I ^ r.w.7.0.5.d ! ] _ T J r.I H e.z o.%.h 9.I S g.n.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.k.o.Z E T D G ) S U t.y.0.0.0.,.0.8.#.E _ r _ _ _ _ _ _ _ _ ` r #.M.v.v.v.", +"v.v.v.v.v.v.v.n.v.v.v.k.0.f.{ #.h.e.r e.t.0.t.7.0.0.r.0.0.7.a %.r.I S e.g X.%.s 9.I n g.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.b.z.o.d T N d l ` h G r.w.0.0.0.0.0.0.1.~ 0.p.( I i.G ,.7.D t.~ I j.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.n.k.1.*.E ' >. .e | >.0.w.7.0.0.0.0.0.0.r.0.0.r.0.0.0.0.0.0.0.0.0.a.M.v.v.v.", +"n.v.v.v.v.v.v.v.v.v.v.x.~ c O > s.} 4.g.y.k.c.l.l.x.l.l.x.l.l.l.l.l.l.l.l.l.x.x.l.l.l.v.v.v.v.", +"v.v.v.v.v.M.M.v.v.v.M.:.p < : C ; J 7.7.x.M.n.M.n.n.b.n.n.n.c.v.M.M.v.n.n.v.M.n.n.c.v.v.v.v.", +"v.v.v.v.n.k.l.n.v.v.N.Y ; O 5.y.# + j ^ r.l.n.v.c.b.v.b.v.c.b.c.v.v.c.v.v.v.b.c.v.b.c.v.v.v.v.", +"b.v.v.v.M.% * M.v.v.B.4 * s / ` 6 a.6.0.l.M.c.y.c.M.v.u.c.m.v.c.n.x.u.v.n.l.p.v.v.c.v.v.v.v.", +"v.v.v.B.5.= = 0.M.v.M.$., 2.u.1 & 0.0.0.0.c.v.n.c.y.c.u.x.b.v.c.v.v.n.k.a.c.y.v.b.v.c.v.v.b.v.", +"v.v.v.B.6 = * 7 B.v.b.m.F Q w X . v t.0.0.8.c.v.v.M.c.&.k.M.v.b.c.v.v.v.M.p.&.b.b.v.v.c.v.v.v.v.", +"v.v.v.v.& 5 4 = v.v.M.` # . = X.Z ,.0.7.0.x.n.v.v.u.k.u.c.b.b.c.v.v.n.l.a.k.p.v.v.v.c.v.v.v.v.", +"v.v.v.v.0.B.B.y.v.v.B.5 . $ V w.t.0.0.0.0.8.l.n.v.y.x.M.c.y.c.b.c.c.M.l.y.v.M.k.p.b.v.c.b.v.v.v.", +"v.v.v.v.M.v.v.M.v.v.v.k.0.Z 3.0.6.0.0.0.0.0.c.n.c.c.M.v.M.c.c.b.v.v.M.x.v.v.v.n.l.v.v.c.v.v.v.v.", +"v.v.v.b.v.v.v.v.v.v.v.k.5.1.5.0.7.0.0.8.7.6.c.M.n.n.b.v.n.n.n.b.c.v.n.n.b.v.v.n.n.n.n.c.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.k.0.y.y.y.t.w.w.t.t.w.l.c.c.c.c.c.v.c.c.v.c.l.c.v.c.c.c.c.c.c.c.c.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.c.v.v.v.v.v.c.v.v.c.v.v.c.v.c.v.v.c.v.v.c.v.v.c.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.b.b.n.v.v.v.v.b.v.v.v.v.v.v.v.b.v.v.v.v.v.b.n.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.b.v.v.v.v.v.b.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.b.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.n.v.v.v.v.v." +}; + +const char *const *const xpm_icons[] = { + xpm_icon_0, + xpm_icon_1, + xpm_icon_2, +}; +const int n_xpm_icons = 3; diff -Nru sgt-puzzles-20140928.r10274/icons/tracks.rc sgt-puzzles-20160429.b31155b/icons/tracks.rc --- sgt-puzzles-20140928.r10274/icons/tracks.rc 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/tracks.rc 2016-04-29 00:31:42.000000000 +0000 @@ -0,0 +1,2 @@ +#include "puzzles.rc2" +200 ICON "tracks.ico" diff -Nru sgt-puzzles-20140928.r10274/icons/tracks.sav sgt-puzzles-20160429.b31155b/icons/tracks.sav --- sgt-puzzles-20140928.r10274/icons/tracks.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/tracks.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,31 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :12:Train Tracks +PARAMS :5:6x6dt +CPARAMS :5:6x6dt +SEED :15:145870397370785 +DESC :31:l6t9b,3,2,1,S4,5,4,2,6,S3,2,3,3 +NSTATES :2:23 +STATEPOS:2:20 +MOVE :5:TD0,0 +MOVE :5:TR0,0 +MOVE :5:TL5,5 +MOVE :5:TU5,5 +MOVE :29:TS1,1;TS2,1;TS3,1;TS4,1;TS5,1 +MOVE :29:NS2,0;NS2,2;NS2,3;NS2,4;NS2,5 +MOVE :5:TU1,1 +MOVE :17:NS0,3;NS0,4;NS0,5 +MOVE :23:NS1,2;NS1,3;NS1,4;NS1,5 +MOVE :5:TL2,1 +MOVE :5:TL3,1 +MOVE :5:TS4,4 +MOVE :5:TS3,4 +MOVE :17:NS3,0;NS4,0;NS5,0 +MOVE :5:TS4,2 +MOVE :5:TS4,3 +MOVE :5:TU3,4 +MOVE :5:TL4,4 +MOVE :5:TL5,1 +MOVE :5:TU5,2 +MOVE :5:NS5,3 +MOVE :5:NS3,2 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/tracks-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/tracks-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/twiddle-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/twiddle-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/twiddle-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/twiddle-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/twiddle-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/twiddle-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/twiddle-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/twiddle-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/twiddle-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/twiddle-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/twiddle-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/twiddle-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/twiddle-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/twiddle-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/twiddle-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/twiddle-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/twiddle-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/twiddle-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/twiddle-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/twiddle-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/twiddle-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/twiddle-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/twiddle-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/twiddle-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/twiddle.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/twiddle.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/twiddle-icon.c sgt-puzzles-20160429.b31155b/icons/twiddle-icon.c --- sgt-puzzles-20140928.r10274/icons/twiddle-icon.c 2014-09-29 00:33:49.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/twiddle-icon.c 2016-04-29 00:31:44.000000000 +0000 @@ -1,440 +1,886 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 78 1 ", -" c #D5D3CE", -". c #D1CFCA", -"X c #CFCDC8", -"o c #CFCDC9", -"O c #CDCCC7", -"+ c #CFCEC9", -"@ c #D0CEC9", -"# c #D4D2CD", -"$ c #CBC9C4", -"% c #D2D0CB", -"& c #D3D1CC", -"* c #CCCAC5", -"= c #D9D7D2", -"- c #CBC9C5", -"; c #D8D6D1", -": c #E3E0DB", -"> c #D7D5D0", -", c #B3B1AD", -"< c #C9C7C2", -"1 c #DAD8D3", -"2 c #D6D4CE", -"3 c #E1DFDA", -"4 c #DBD9D4", -"5 c #D6D3CE", -"6 c #DEDDD8", -"7 c #DFDDD8", -"8 c #DCDAD5", -"9 c #DBD8D3", -"0 c #7A7976", -"q c #AEACA8", -"w c #DEDCD6", -"e c #D0CECA", -"r c #DBDAD5", -"t c #D6D4CF", -"y c #D6D5D0", -"u c #D1CFCB", -"i c #E2E0DB", -"p c #A3A19D", -"a c #CAC8C4", -"s c #D3D2CD", -"d c #E0DED8", -"f c #AAA8A4", -"g c #C9C8C3", -"h c #D4D3CE", -"j c #D1D0CB", -"k c #686764", -"l c #A6A5A1", -"z c #E7E5E0", -"x c #DDDAD5", -"c c #CDCBC7", -"v c #ABAAA6", -"b c #9A9895", -"n c #C2C0BC", -"m c #D2D1CC", -"M c #DDDBD6", -"N c #605F5D", -"B c #A19F9B", -"V c #E1DFD9", -"C c #CDCBC6", -"Z c #D4D2CE", -"A c #D8D7D2", -"S c #CECDC8", -"D c #C9C7C3", -"F c #DAD8D2", -"G c #A09F9B", -"H c #CBCAC5", -"J c #C8C6C2", -"K c #BEBCB8", -"L c #555452", -"P c #BFBEB9", -"I c #CCCAC6", -"U c #B9B7B3", -"Y c #CECCC7", -"T c #E0DED9", -"R c #DFDDD7", -"E c #E5E3DE", -"W c #D9D7D1", -"Q c gray100", +"16 16 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +";,<12134564", -"%<78%90qwerty=31", -"u$i#t pat 8#w574", -"@sd@% 7;.4>%fg71", -".#; hj@&s4#>klz=", -"%*>x=t c;tt%vNBVCZ>t>#%&t1", -"%$;n. += Mt;AS 8", -"%DtF>X;;XG. tHM4", -"%J.%&&11KLP8oI71", -".D @C;##&UY J.M4", -"%t37T84R7E381di=", -" =W;;==;;>;==;> " +"qX7X5X5X5X5X3X4X6X5X5X5X5X5X5XqX", +"0X1X1X8X7X1X9X6X2X8X5X2X2X1X0XtX", +"7X1XrXhXeXrX).*XuXqXyXfXuXwXaXuX", +"8X,XsXiX7XpX1.J.dX6XuXwXeXtXfXyX", +"7X1XgX0XwXwXP.-XeX0XiX0XpXqXsXuX", +"6X0XdX6X8X0XdXtX6XuXeX9X(.1XsXyX", +"7X0XrX0X0X8X6X9X9XiX9XyXX.W.zXtX", +"8X2XeXsXyXwXqX3XrXwXwX8XU.>XdXyX", +"9X5X9Xv.@XtXqX5XiX8X8XqXsXwXaXuX", +"7X1XwXW A.gX3X0XeXwXeX0X7X9XwXyX", +"8X1XrX&X8XqX5XyXqXaXwXrXrX4XqXiX", +"8X,XwXyXeX5XeXrX5XH.4XwXwX1XpXuX", +"8X>X7X8X9X9XyXyX+XA .XpX5X2XsXyX", +"7X,XqX6X3XrX0X0X9X}.3XqX>X7XpXuX", +"8XwXfXsXdXiXuXsXsXlXgXiXtXdXgXyX", +"qXtXrXrXrXtXtXrXrXeXrXtXtXrXeXqX" }; /* XPM */ static const char *const xpm_icon_1[] = { /* columns rows colors chars-per-pixel */ -"32 32 180 2 ", -" c #D5D3CE", -". c #D7D5D0", -"X c #D4D2CD", -"o c #CDCBC6", -"O c #CECCC7", -"+ c #CCCBC6", -"@ c #D6D4CF", -"# c #CAC9C4", -"$ c #BFBEB9", -"% c #C1BFBB", -"& c #C0BEBA", -"* c #C5C3BF", -"= c #C9C8C3", -"- c #C0BFBA", -"; c #C2C0BC", -": c #C6C4C0", -"> c #C1C0BB", -", c #BEBDB8", -"< c #CFCDC8", -"1 c #DAD8D2", -"2 c #C7C5C1", -"3 c #D8D6D1", -"4 c #EBE9E4", -"5 c #E0DED9", -"6 c #D7D4CF", -"7 c #DBD9D4", -"8 c #E2E0DB", -"9 c #E3E1DC", -"0 c #DBD9D3", -"q c #D6D3CE", -"w c #EAE9E5", -"e c #DCDAD5", -"r c #D3D1CC", -"t c #BCBAB6", -"y c #E9E7E1", -"u c #D2D0CB", -"i c #DAD8D3", -"p c #DCD9D4", -"a c #E7E5E0", -"s c #D9D7D2", -"d c #E8E6E1", -"f c #EAE8E3", -"g c #878682", -"h c #5B5A58", -"j c #B1AFAB", -"k c #DCDAD4", -"l c #D3D2CD", -"z c #CCCAC5", -"x c #E0DFDA", -"c c #DEDCD7", -"v c #E9E7E2", -"b c #BEBCB8", -"n c #DDDBD6", -"m c #D2D0CC", -"M c #868582", -"N c #777673", -"B c #E5E3DD", -"V c #CFCEC9", -"C c #DFDDD8", -"Z c #E1DFDA", -"A c #ECEAE4", -"S c #9C9A97", -"D c #464544", -"F c #C3C1BC", -"G c #CBC9C4", -"H c #D3D1CD", -"J c #D7D6D0", -"K c #EDEAE5", -"L c #ECEAE5", -"P c #DDDBD5", -"I c #6D6C69", -"U c #535250", -"Y c #A9A7A3", -"T c #CDCBC7", -"R c #EDEBE5", -"E c #E8E6E0", -"W c #E1DFD9", -"Q c #C9C7C3", -"! c #BCBBB6", -"~ c #CECDC8", -"^ c #CAC9C3", -"/ c #D1CFCA", -"( c #CBC9C5", -") c #BBBAB5", -"_ c #D1CFCB", -"` c #DEDDD8", -"' c #7D7C79", -"] c #73716F", -"[ c #B4B3AF", -"{ c #EDEBE6", -"} c #CDCCC7", -"| c #C8C7C2", -" . c #EAE9E3", -".. c #898784", -"X. c #2C2B2A", -"o. c #8D8C89", -"O. c #CFCDC9", -"+. c #C7C5C0", -"@. c #D3D2CC", -"#. c #D7D6D1", -"$. c #CBCAC5", -"%. c #D9D7D1", -"&. c #E0DDD8", -"*. c #6A6967", -"=. c #807F7C", -"-. c #ECE9E4", -";. c #6E6D6A", -":. c #666563", -">. c #B6B4B0", -",. c #C4C2BE", -"<. c #DBDAD4", -"1. c #D0CFCA", -"2. c #B8B6B2", -"3. c #C3C2BD", -"4. c #D2D1CB", -"5. c #BBB9B5", -"6. c #6C6A68", -"7. c #636260", -"8. c #9A9995", -"9. c #DBD9D5", -"0. c #D7D5CF", -"q. c #EAE8E2", -"w. c #656461", -"e. c #7A7876", -"r. c #5C5B59", -"t. c #C2C1BC", -"y. c #E4E2DD", -"u. c #DAD7D2", -"i. c #999894", -"p. c #343433", -"a. c #81807D", -"s. c #D9D6D1", -"d. c #DAD9D4", -"f. c #D0CEC9", -"g. c #C5C4BF", -"h. c #DAD9D3", -"j. c #DFDDD7", -"k. c #B4B2AE", -"l. c #9B9A96", -"z. c #C4C3BE", -"x. c #E6E3DE", -"c. c #DFDCD7", -"v. c #DDDAD5", -"b. c #D8D7D1", -"n. c #DEDBD7", -"m. c #C9C7C2", -"M. c #D4D3CE", -"N. c #C6C5C0", -"B. c #DFDDD9", -"V. c #686764", -"C. c #696865", -"Z. c #C8C6C1", -"A. c #E9E6E1", -"S. c #E0DED8", -"D. c #A5A4A0", -"F. c #3C3C3A", -"G. c #6E6D6B", -"H. c #B9B7B3", -"J. c #C2C0BB", -"K. c #DEDCD6", -"L. c #ADACA7", -"P. c #6A6966", -"I. c #666562", -"U. c #92918D", -"Y. c #D2D1CC", -"T. c #D6D3CF", -"R. c #888683", -"E. c #C7C6C1", -"W. c #E3E1DB", -"Q. c #C4C2BD", -"!. c #CCCBC5", -"~. c #D0CECA", -"^. c #BFBEBA", -"/. c #DBDAD5", -"(. c #EEECE7", -"). c #E6E4DE", -"_. c #EBE9E3", -"`. c #D6D4CE", -"'. c #D4D2CE", -"]. c gray100", +"32 32 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" % % % % > , < 1 X ", -" @ 2 . 3 3 4 5 @ 3 3 . @ 6 3 3 3 7 8 9 0 q . 3 3 3 3 w e r ", -" X t X r 7 y u X X i p 0 r X X r . X a s X r u d e r ", -" , X @ r f e r X i g h j k l . z x 9 c 8 7 X X u v e r ", -" b r n f m @ u 3 M N B u X V f u X 3 C Z 7 u d e r ", -" b r A e r r n S D F s X . G x C r @ X H J C c K k r ", -" , u 5 L u X P I U Y e r X T f r X X R k r ", -" , r E . @ X Z W 3 3 Q 5 C r r u X @ u d e r ", -" ! 7 A ~ ^ / 6 @ r u X r ( f r @ . C C 7 r v e r ", -" ) 4 8 7 7 ~ # _ . @ 3 2 ` C r . z ' ] [ 7 / y e r ", -" r : { m X . n s } G u . r | .r ..X.o.9 O.y e r ", -" r +.e r @ @.. e #.+ $.r @ %.* c &.r r F *.=.B < y e r ", -" X ) X X X . 7 @ $.o / | -.u X 3 = ;.:.>.p / y e r ", -" r ,. X @ 7 X X . i @ > <.e X @ . 3 s 7 u y e r ", -"X 3 1.r 3 u 2.s X 3.d } G 4.. X X X @ u y e r ", -" X 5.X @ 6.7.8.c r X s F l 8 C 9.~ z r 0. @ u q.e r ", -" , X @ / w.e.r.Z u @ u t.y.u X u.5 7 O.o r @ @ 1.C n r ", -" b X r c i.p.a.Z u X s.t.3 e X X r s C d.f.O X @ s.g.h.j.r ", -" b X X s k.l. @ @ / z.x.r q X l s c.i 1.V X ! d v.r ", -" b X X e Z X 3 ; e e r X 3 X X b.n.d.m.+.4 e r ", -" M., X u @ f.2 a u @ X 3 @ Q X X @ N.r y e r ", -" ! u . X 3 ; B.p X @ u V.C._ @ 3 Z.z X d e r ", -" ! Q + @.@ @ < = A.u @ r S.D.F.G.H.7 X @ r t.@ u y e r ", -" X , f.# } X @ 3 J.9 7 X X K.L.P.I.U.8 Y.X 3 : G 3 u y e r ", -" b X @ T.f.$.f.z O f / @ X 7 i.R. @ u - @ u y e r ", -" , X @ / E.y.3 X &.W. X 3 Q.G . u y e r ", -"@ r 5. @ @ @ @ 3 X +.!.X @ @ @ r r . ~.^.. @ r f e r ", -" @ /.(.4 A A A A 4 A A ).v { )._.R A A A A L d d R 4 L y f 7 r ", -" @ . `. @ . @ @ X . @ @ @ @ '.'.@ ", -" X X " +"qXqXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXqXqX", +"qX0X3X4X4X4X4X3X2X4X4X4X4X4X4X4X4X4X3X3X4X4X4X4X4X4X4X4X4X3X0XqX", +"qXwX2X#X%X%X$X-X,X#X%X%X%X%X%X%X$X&X,X;X#X$X%X%X%X%X%X%X@X4XtX0X", +"qXwX>XeXrXrXqXbXfXwXrXrXeXwXwXrXrXrXuXgXhXyXwXeXrXrXrXrXqXvXiX9X", +"qX0XOX0XqX9XuXcX8XqX0X0XyXpXpX9XqX0X0X9XeX9XzXtX0X9XqXqX8XxXiX9X", +"qXqX@X0XwX9XvXiX9XqX0XuXk.~ S.pX9XqXqXeX2XdXhXaXgXyX0X0X8XcXiX9X", +"qXqX@XqX9XpXbX9XwXqXqX8XrX9.( kX8XqXqX0X5XvX8X0XrXdXfXuX7XxXiX9X", +"qXqX@XqX9XnXiX9XqXqX9XpXH.v [.yX0XqXeX1XdXsX9XwX0X0XrXdXaXnXiX9X", +"qXqX@X8XdXmX8XqXqXqX9XaX6.Q v.yX0XqX0X3XvX9XqXqXqXqX0X0XqXmXiX9X", +"qXqX@X9XxXeXqXwXqXqXqX0XdXgXyXqXqXrX,XsXdX9XqXqX9X8X0XwX8XxXiX9X", +"qXqXOXuXnX4XXvX9XqXqX0XeXU.a L.fX6XcXiX9X", +"qX9X:XiX9XwXqX9XeXiXrX2X1X9XwXtX-XaXdX9XqXqX0XwX(.k b.hX6XcXiX9X", +"qX0XoX0XqXqXqX0X0X0XeXiXwX2X3X7X:XnX8XqXqX0XrX>X<.} '.iX7XcXiX9X", +"qX9X=XqXqX0XwXuX0XqX0X0XrXyXwX&XiXiX0XwXqXqXqXeXwXiXiX0X8XcXiX9X", +"0XrX8X9XqXrX9XOXuX0XqXqX0XqXqX=XcX3X1X8XeXqXqXqXqX9X0XwX8XcXiX9X", +"qX0XoX0XqXqX| Y c.dX9XqX0XtX*X9XgXdXuX4X2X9XeXqXqXqXqXwX8XvXiX9X", +"qXqX@X0XwX6X~ ) R jX8XqXwX8X&XjX8X0XyXdXuX5X3X9XwXqXqXwX7XsXpX9X", +"qXqX@X0X0XuXA.h 0.gX8X0XtX*XrXpX9XqX0X0XtXsXyX5X4X0XwXrX-XyXsX9X", +"qXqX@X0XqXrXE.F.wXwXqXwX7X=XlX9XqXqXqXqX0X0XtXsXyX6X5X0XOXxXpX9X", +"qXqX@X0XqX0XaXfXqXqX0XrX&XuXiX9XqX0X0XrXqXqX0X0XtXaXuX>X;XbXiX9X", +"qX0X@XqXqXqX9X8XqXqXwX6X:XzX8XwX0XeXyX;X9XwXqXqX0X0XwX;X9XcXiX9X", +"qXqXOX8XeXqXqXqXqX0XrX&XsXiX9XqXwX0X#.+.-XtX0XqXqXrX:X1X0XxXiX9X", +"qXqXOX,X2X9XwXqXqXwX5X,XcX8XwX9XsXE.y @._.iX0XqXwX9X&XwX8XcXiX9X", +"qX0X@XqX6X c #605F5D", -", c #62615E", -"< c #646361", -"1 c #686765", -"2 c #6E6D6A", -"3 c #73726F", -"4 c #757471", -"5 c #7A7976", -"6 c #7D7C79", -"7 c #83827F", -"8 c #878683", -"9 c #908F8B", -"0 c #93928E", -"q c #969591", -"w c #989793", -"e c #9B9996", -"r c #9F9D9A", -"t c #A09F9B", -"y c #A3A19E", -"u c #A5A4A0", -"i c #A9A7A3", -"p c #ABA9A5", -"a c #B4B3AF", -"s c #B6B5B1", -"d c #B9B7B3", -"f c #BBB9B5", -"g c #BEBDB9", -"h c #C0BFBA", -"j c #C4C3BE", -"k c #C6C5C1", -"l c #C8C7C2", -"z c #CBC9C5", -"x c #CFCDC9", -"c c #D1CFCA", -"v c #D5D3CE", -"b c #D7D5D0", -"n c #D8D6D1", -"m c #DCDAD4", -"M c #DFDDD8", -"N c #E1DED9", -"B c #E4E2DD", -"V c #E7E5E0", -"C c #E8E6E1", -"Z c #ECEAE5", -"A c #F1EFE9", -"S c #F3F2EC", -"D c #F7F6F0", -"F c #F9F7F2", +"48 48 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +"<3nvbvvnjMZcvvvvvvvvvvvSnvvv", -"vvvndzvZZcbvvvvvvvMCVVvvvvbchSnbvvvvvvvvvvvSmvvv", -"vvvndlnZzzbbbvvvvvvcccvvvvnhNZcbvvvvcvvvvvvSmvvv", -"vvvndkZSMxjzvnvvvvvvvvvvvbchSnvvvvvMCCmvvvvSnvvv", -"vvvndzDMbBMzjzbvvbvvvvbvvbgMZcvvvvmr::unvvvSmvvv", -"vvvnsMScvvnNMzjzbvvvbvvbbxhSbvvvvvm74:+nvvcSmvvv", -"vvvbsZMvvvvvnNMzjxbbvvvcbhmZcnvvvvvN:.;NcvvSnvvn", -"vvvnfmvvvvvvvvnNnzjcnbvbxgSnvvvvvvvzCdovvvcSnvvv", -"vvvnfzbvvvvvvvvcnMnjjcbnfmZcvvvvvcN2%#XqXeXqXqXqXqXqXqX0X7X7X7X0XqXqX0XtX%XpXmX7XwXqXqXqX0X7X7X0XqXqXqX0XZXuX0XqXqX", +"qXqX0XrX.X>XzXDXaX5X*XX;X6XwXyXoXuXnX7XwXqXqXqXqX9XaX,./ s ] aX9XqX9XZXuX0XqXqX", +"qXqXqXrX].X1X+XFXeX0XqXqXqXqXqX0XrX+XB.W.tXwXqXqX9XZXuX0XqXqX", +"qXqXqX0X$X7XwXqXqXqX9X7X8XqXqXqXqXqX0X0XyXaXwXoXpXzX8XeXqXqXqXqXqXqX0XuXhXsX0XqXqXqX9XZXuX0XqXqX", +"qXqX0XyXfX6XwXqXqX0XaXzXfXqXqXqXqXqXqXqX0XwX9X.XmX3X*X5XwXwXqXqXqXqXqX0X9X9XqXqXqXqX9XZXuX0XqXqX", +"qXqX0XrX{.X8XeXwXqXqX0XrXoXxXpX9XqXqX", +"qXqX0XrX.X1XeX0XwX8X>.U Z -XtX0XqXqX0XtX|.yXkX8XqXqXqXqXqXqX9XqXaXkXuX1X,X8XeXqXeX4X XAXyX0XqXqX", +"qXqX0XrX.X1XeXqXqXeX{.P.7XyX0XqXqXqXeX1XoXVX0XqXqXqXqXqXqXqXqXqX9XqXaXkXuX2XX2X;X3XqXwXqXqXqXqXrX:X*XSX9XqXqXqXqX7XlX0.# } r XXuX0XqXqXqXqXwXOX5XwXqX9XZXuX0XqXqX", +"qXqX0XrX.X1XtX8XX#XrX0XqX9XZXuX0XqXqX", +"qXqX0XrX.XX5XqXtX;X;XSX9XqXqXqXqXqXqXqXqXo.d +.0XqXqXqXqXqXwX.X5XwXqXqX9XZXuX0XqXqX", +"qXqX0XrX.X1XeXqXqXwXeX8XXqX8X9X9X9X9X8X0X9XtX,X%X1X8X9X9X9X9X9X9X9X9X8X9X9X9X9X8XwX$XoXwX8X9X9X9X7XCXuX0XqXqX", +"qXqXqX0X+XeXfXsXsXsXsXsXsXsXsXaXsXyX5X8XiXdXsXsXpXsXsXsXsXsXsXsXsXsXsX;XyXdXsXsXsXsXaXSXyX0XqXqX", +"qXqX0XtXhXCXAXBXVXVXVXVXVXVXVXVXVXCXCXBXBXBXZXjXVXAXBXVXVXVXVXVXVXVXBXVXVXBXVXVXBXZXkXMXuX0XqXqX", +"qXqXqXqX6XqX9X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X6XqX9X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X6XqXwXqXqXqX", +"qXqXqXqXwXqXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXqXqXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX", +"qXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX" }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/twiddle.sav sgt-puzzles-20160429.b31155b/icons/twiddle.sav --- sgt-puzzles-20140928.r10274/icons/twiddle.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/twiddle.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,35 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :7:Twiddle +PARAMS :5:3x3n2 +CPARAMS :5:3x3n2 +SEED :15:635499951462226 +DESC :17:3,7,2,6,5,1,8,4,9 +NSTATES :2:27 +STATEPOS:2:22 +MOVE :7:M0,0,-1 +MOVE :7:M1,0,-1 +MOVE :6:M1,1,1 +MOVE :6:M0,1,1 +MOVE :6:M0,0,1 +MOVE :6:M0,0,1 +MOVE :7:M1,1,-1 +MOVE :7:M0,1,-1 +MOVE :7:M0,1,-1 +MOVE :7:M1,1,-1 +MOVE :6:M0,1,1 +MOVE :7:M0,1,-1 +MOVE :6:M1,1,1 +MOVE :6:M1,1,1 +MOVE :6:M0,1,1 +MOVE :6:M0,1,1 +MOVE :7:M0,1,-1 +MOVE :7:M1,1,-1 +MOVE :7:M0,1,-1 +MOVE :7:M1,1,-1 +MOVE :6:M0,1,1 +MOVE :7:M1,0,-1 +MOVE :7:M0,1,-1 +MOVE :6:M1,0,1 +MOVE :6:M1,1,1 +MOVE :6:M1,1,1 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/twiddle-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/twiddle-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/undead-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/undead-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/undead-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/undead-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/undead-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/undead-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/undead-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/undead-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/undead-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/undead-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/undead-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/undead-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/undead-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/undead-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/undead-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/undead-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/undead-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/undead-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/undead-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/undead-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/undead-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/undead-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/undead-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/undead-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/undead.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/undead.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/undead-icon.c sgt-puzzles-20160429.b31155b/icons/undead-icon.c --- sgt-puzzles-20140928.r10274/icons/undead-icon.c 2014-09-29 00:33:49.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/undead-icon.c 2016-04-29 00:31:44.000000000 +0000 @@ -1,564 +1,611 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 150 2 ", -" c #DCDAD5", -". c #DEDCD7", -"X c #CCCAC5", -"o c #D1CFCA", -"O c #DDDBD6", -"+ c #DAD8D3", -"@ c #D5D3CE", -"# c #DBD9D4", -"$ c #E4E2DD", -"% c #ABAAA6", -"& c #8C8B87", -"* c #E6E4DF", -"= c #D7D6D1", -"- c #E8E6E1", -"; c #989693", -": c #595856", -"> c #E1DFD9", -", c #D9D7D2", -"< c #E6E4DE", -"1 c #8F8D8A", -"2 c #9B9A96", -"3 c #E5E3DE", -"4 c #A2A09C", -"5 c #6B6A68", -"6 c #E0DED9", -"7 c #E0DDD8", -"8 c #D4D2CD", -"9 c #DFDDD8", -"0 c #E1DFDA", -"q c #B5B4B0", -"w c #B8B7B3", -"e c #C7C6C1", -"r c #C7C5C0", -"t c #B9B7B3", -"y c #B2B0AC", -"u c #B8B6B2", -"i c #BCBBB6", -"p c #C1BFBB", -"a c #BAB8B4", -"s c #DBDAD5", -"d c #959490", -"f c #989793", -"g c #DAD9D4", -"h c #C9C7C2", -"j c #D7D5D0", -"k c #BCBAB6", -"l c #C6C5C0", -"z c #DBD8D3", -"x c #BEBDB9", -"c c #BDB6B3", -"v c #827575", -"b c #847777", -"n c #BDB7B4", -"m c #CFCEC9", -"M c #91908D", -"N c #B0AEAA", -"B c #E3E1DC", -"V c #E9E7E1", -"C c #7E7D7A", -"Z c #A9A8A4", -"A c #B8B8B3", -"S c #C8BCBA", -"D c #C3AEAE", -"F c #C3AEAF", -"G c #C6BBB9", -"H c #CACAC5", -"J c #908F8C", -"K c #AEACA8", -"L c #C2C0BC", -"P c #CECCC7", -"I c #D8D6D1", -"U c #BDBCB7", -"Y c #D8D5D0", -"T c #B7ABA9", -"R c #B8ACAB", -"E c #BDBBB7", -"W c #B1B0AB", -"Q c #EAE9E3", -"! c #D6D4CF", -"~ c #B1B0AC", -"^ c #D1D0CC", -"/ c #D1CEC9", -"( c #CFCFCA", -") c #CDCCC7", -"_ c #D7D4D0", -"` c #D0CCCA", -"' c #CCCBC6", -"] c #B6B4B0", -"[ c #DCD7D2", -"{ c #C3CBC6", -"} c #C5CBC7", -"| c #DBD6D1", -" . c #C3C2BD", -".. c #D8D3D0", -"X. c #CBCBC4", -"o. c #C1C9BB", -"O. c #D8D2D1", -"+. c #9E9C99", -"@. c #D8D7D2", -"#. c #C0BBB7", -"$. c #BDCBC8", -"%. c #6BBDBC", -"&. c #6DBDBC", -"*. c #BBC9C4", -"=. c #D5CFCC", -"-. c #C9CFC3", -";. c #71C570", -":. c #61C861", -">. c #A5C7A1", -",. c #E3DCDC", -"<. c #DBDAD4", -"1. c #83827F", -"2. c #B0AFAB", -"3. c #DEDDD8", -"4. c #C0B7B2", -"5. c #90C7C5", -"6. c #64C4C4", -"7. c #8DC2BF", -"8. c #DCCBCD", -"9. c #A4C8A2", -"0. c #58C659", -"q. c #5DC55D", -"w. c #76C675", -"e. c #DFD6D7", -"r. c #DCDBD5", -"t. c #ACAAA6", -"y. c #C0BEBA", -"u. c #D9D9D4", -"i. c #BFB8B3", -"p. c #9CC4C1", -"a. c #76C9C9", -"s. c #9DC2BF", -"d. c #D3CBC7", -"f. c #CBD2C6", -"g. c #7AB978", -"h. c #66BC66", -"j. c #ACCAA7", -"k. c #E2DBDA", -"l. c #BCBBB7", -"z. c #DED9D3", -"x. c #D9D1CC", -"c. c #DAD2CD", -"v. c #CBCAC5", -"b. c #DEDAD7", -"n. c #D1D3CA", -"m. c #E1DAD9", -"M. c #DDDCD7", -"N. c #DBD8D4", -"B. c #DFDCD8", -"V. c gray100", +"16 16 249 2 ", +" c #E6E6E6", +". c #E6E6E6", +"X c gray91", +"o c #D5D5D5", +"O c gainsboro", +"+ c gray91", +"@ c #E6E6E6", +"# c #E7E7E7", +"$ c #E4E4E4", +"% c #DDDDDD", +"& c gray91", +"* c gray90", +"= c #E6E6E6", +"- c #E6E6E6", +"; c gray90", +": c #EEEEEE", +"> c gray69", +", c #989898", +"< c #F1F1F1", +"1 c #E1E1E1", +"2 c gray95", +"3 c #A2A2A2", +"4 c #656565", +"5 c gray91", +"6 c #E6E6E6", +"7 c #E6E6E6", +"8 c #E6E6E6", +"9 c #E6E6E6", +"0 c gray89", +"q c gray94", +"w c #939393", +"e c #A5A5A5", +"r c gray94", +"t c #E1E1E1", +"y c gray94", +"u c #ACACAC", +"i c #767676", +"p c gray91", +"a c #E6E6E6", +"s c #E6E6E6", +"d c #E6E6E6", +"f c #E6E6E6", +"g c #E6E6E6", +"h c #E6E6E6", +"j c #EAEAEA", +"k c gray91", +"l c #DDDDDD", +"z c #DFDFDF", +"x c gray91", +"c c #E9E9E9", +"v c gray91", +"b c #EAEAEA", +"n c #E9E9E9", +"m c gray91", +"M c #E7E7E7", +"N c #E6E6E6", +"B c #E6E6E6", +"V c #E6E6E6", +"C c #E6E6E6", +"Z c gray90", +"A c gray", +"S c #C1C1C1", +"D c #D1D0D0", +"F c #D0CFCF", +"G c #C2C1C1", +"H c gray73", +"J c #C0C0C0", +"K c #C0C0C0", +"L c #C1C1C1", +"P c #C5C5C5", +"I c #CACACA", +"U c #E7E7E7", +"Y c #E6E6E6", +"T c #E4E4E4", +"R c gray91", +"E c #DFDFDF", +"W c gray76", +"Q c #E5E6E6", +"! c #9B9C9C", +"~ c #9F9F9F", +"^ c #E4E5E5", +"/ c #D2D2D2", +"( c #E1E1E1", +") c gray90", +"_ c gray90", +"` c #C5C5C5", +"' c #E6E6E6", +"] c #E6E6E6", +"[ c #EEEEEE", +"{ c #9B9B9B", +"} c LightGray", +"| c #E4E3E3", +" . c #C7C8C8", +".. c #C5C0C0", +"X. c #887A7A", +"o. c #8A7C7C", +"O. c #C6C1C1", +"+. c #D8D9D9", +"@. c gray90", +"#. c #F1F1F1", +"$. c gray60", +"%. c gray72", +"&. c gray93", +"*. c gray90", +"=. c gray95", +"-. c gray53", +";. c gray71", +":. c #EAE9E9", +">. c #C1C2C2", +",. c #D1C6C6", +"<. c #CBB6B6", +"1. c #CCB6B6", +"2. c #CFC4C4", +"3. c #D4D5D5", +"4. c gray90", +"5. c #989898", +"6. c gray71", +"7. c gray95", +"8. c #E4E4E4", +"9. c #E6E6E6", +"0. c #E7E7E7", +"q. c #CACACA", +"w. c #D7D7D7", +"e. c #E1E1E1", +"r. c #C6C6C6", +"t. c #E2E1E1", +"y. c #BFB3B3", +"u. c #C0B4B4", +"i. c #DFDEDE", +"p. c #DEDFDF", +"a. c #C6C6C6", +"s. c #B9B9B9", +"d. c gray96", +"f. c #E6E6E6", +"g. c gray91", +"h. c #E6E6E6", +"j. c #E6E6E6", +"k. c gray92", +"l. c gray92", +"z. c gray88", +"x. c #B9B9B9", +"c. c #DBDCDC", +"v. c #DAD9D9", +"b. c #DBDADA", +"n. c #D9DADA", +"m. c #C5C5C5", +"M. c #D6D7D6", +"N. c #E1E0E1", +"B. c #DAD8DA", +"V. c gray84", +"C. c #DADADA", +"Z. c #E7E7E7", +"A. c gray90", +"S. c gray92", +"D. c #E9E9E9", +"F. c #E0DFDF", +"G. c gray", +"H. c #E6E3E3", +"J. c #CCD6D6", +"K. c #CED7D7", +"L. c #E5E1E1", +"P. c #CBCDCC", +"I. c #E1DEE1", +"U. c #D4D7D4", +"Y. c #CAD4CA", +"T. c #E2DEE2", +"R. c #E1E1E1", +"E. c #E6E6E6", +"W. c gray92", +"Q. c #A9A9A9", +"!. c gray85", +"~. c #E1E2E2", +"^. c #C9C6C6", +"/. c #C5D7D7", +"(. c #70C6C6", +"). c #72C6C6", +"_. c #C4D3D3", +"`. c #DFDADC", +"'. c #D2DBD3", +"]. c #76CE76", +"[. c #65D165", +"{. c #ADD2AD", +"}. c #EDE8ED", +"|. c #E4E6E4", +" X c gray95", +".X c #8B8B8B", +"XX c #BCBCBC", +"oX c #E7E9E9", +"OX c #C9C1C1", +"+X c #97D1D1", +"@X c #69CECE", +"#X c #68CDCD", +"$X c #94CCCA", +"%X c #E6D7DE", +"&X c #ACD2AE", +"*X c #5CCE5C", +"=X c #61CE61", +"-X c #7BCF7B", +";X c #E9E2E9", +":X c #E5E7E5", +">X c #EAEAEA", +",X c gray70", +" ", -" , < 1 2 3 = * 4 5 6 # ", -" 7 . 8 @ . 9 . 6 0 . O ", -" # q w e r t y u u w i p O ", -"# + . @ a s d f g h j # # k ", -"$ 1 l z x c v b n m # * M N B # ", -"V C Z 6 A S D F G H # J K - + ", -"O L P I U Y T R @ @ E W Q . ", -" 6 0 ! ~ ^ / / ( k ) _ ` ' o O ", -"# 0 9 ! ] [ { } | ...X.o.O.j ", -"0 +.) @.#.$.%.&.*.=.-.;.:.>.,.<.", -"- 1.2.3.4.5.6.6.7.8.9.0.q.w.e.r.", -"6 t.y.u.i.p.a.a.s.d.f.g.h.j.k.<.", -"# 3 B @ l.z.x.c.| v.b., n.m. ", -" + # , M.M.M.O N.<.O B.<. " +" . X o O + @ # $ % & * = ", +" - ; : > , < 1 2 3 4 5 6 7 ", +" - 8 9 0 q w e r t y u i p a s ", +"d f g h j k l z x c v b n m M N ", +"B V C Z A S D F G H J K L P I U ", +"Y T R E W Q ! ~ ^ / ( ) _ ` ' ] ", +"[ { } | ...X.o.O.+.@.#.$.%.&.*.", +"=.-.;.:.>.,.<.1.2.3.4.5.6.7.8.9.", +"0.q.w.e.r.t.y.u.i.p.a.s.d.f.g.h.", +"j.k.l.z.x.c.v.b.n.m.M.N.B.V.C.Z.", +"A.S.D.F.G.H.J.K.L.P.I.U.Y.T.R.E.", +"W.Q.!.~.^./.(.)._.`.'.].[.{.}.|.", +" X.XXXoXOX+X@X#X$X%X&X*X=X-X;X:X", +">X,X c #706F6D", -", c #797775", -"< c #7A7976", -"1 c #52A052", -"2 c #5EBE5E", -"3 c #68A467", -"4 c #6DA36B", -"5 c #69BB68", -"6 c #70BF6F", -"7 c #78BB77", -"8 c #7AB778", -"9 c #55C556", -"0 c #5CC75D", -"q c #5CCC5D", -"w c #66C666", -"e c #65CB65", -"r c #65D365", -"t c #66DB66", -"y c #6CD36C", -"u c #69DE6A", -"i c #84827F", -"p c #7A8583", -"a c #5BADAD", -"s c #58BBBB", -"d c #6DB0AF", -"f c #7CB0AF", -"g c #69B3B3", -"h c #6FB8B7", -"j c #66BDBD", -"k c #6BBCBB", -"l c #7CB4B3", -"z c #5AC3C3", -"x c #60C3C3", -"c c #69CDCD", -"v c #7BC3C2", -"b c #63D2D2", -"n c #6BDBDB", -"m c #75D2D1", -"M c #6DE2E2", -"N c #72E0E0", -"B c #868682", -"V c #8A8986", -"C c #8C8D8A", -"Z c #908F8C", -"A c #9E8E8E", -"S c #91908C", -"D c #979592", -"F c #989693", -"G c #9A9996", -"H c #9E9D99", -"J c #A19191", -"K c #A19F9C", -"L c #AB9A9A", -"P c #B19F9F", -"I c #85B182", -"U c #8DB78A", -"Y c #81A19F", -"T c #95B291", -"R c #99B495", -"E c #9CB698", -"W c #A3A19E", -"Q c #88A3A1", -"! c #91B1AE", -"~ c #8BB5B3", -"^ c #A7A5A2", -"/ c #A9A7A3", -"( c #AFADA9", -") c #B3A3A3", -"_ c #B0AEAA", -"` c #BAA9A9", -"' c #A7B8A3", -"] c #ACB9A7", -"[ c #ADBDA8", -"{ c #B3B1AD", -"} c #B0BBAB", -"| c #B7B6B1", -" . c #BAB6B2", -".. c #BCBAB6", -"X. c #B2BEBA", -"o. c #BEBCB8", -"O. c #C2AEAE", -"+. c #C2B1B0", -"@. c #C9B5B5", -"#. c #C0BDBA", -"$. c #D1BCBC", -"%. c #BDC1B7", -"&. c #B7C1BE", -"*. c #BAC3BF", -"=. c #C3C2BD", -"-. c #D6BFC0", -";. c #BAC4C0", -":. c #C5C6C1", -">. c #C9C7C3", -",. c #C6C9C5", -"<. c #CCCAC6", -"1. c #CFCDC9", -"2. c #D4CCC7", -"3. c #D2CECA", -"4. c #D5D2CE", -"5. c #D9D3CE", -"6. c #D7D5D0", -"7. c #D9D7D2", -"8. c #DCDAD5", -"9. c #DFDDD8", -"0. c #E1DAD5", -"q. c #E1DEDA", -"w. c #E3E1DC", -"e. c #E7E5E0", -"r. c #E9E5E1", -"t. c #ECEAE5", -"y. c #F0EEE9", -"u. c #F6F3EE", +"32 32 104 2 ", +" c #181818", +". c #222222", +"X c #323333", +"o c #393939", +"O c #434343", +"+ c gray30", +"@ c #515151", +"# c #5C5C5C", +"$ c #6A5D5D", +"% c #656565", +"& c #6C6060", +"* c #6C6C6C", +"= c #706363", +"- c #777777", +"; c #7D7D7D", +": c #55A555", +"> c #6EAC6E", +", c #72AA72", +"< c #59CE59", +"1 c #5FD65F", +"2 c #63C763", +"3 c #6DC36D", +"4 c #6BCF6B", +"5 c #60D260", +"6 c #69D369", +"7 c #6BDC6B", +"8 c #74C874", +"9 c #7FC27F", +"0 c #72DE72", +"q c #6BE56B", +"w c #6EE86E", +"e c #7F8181", +"r c #5FB5B5", +"t c #6EBCBC", +"y c #72B8B8", +"u c #5CC3C3", +"i c #5ECCCC", +"p c #6BC6C6", +"a c #64CCCC", +"s c #73C3C3", +"d c #6ED6D6", +"f c #65DADA", +"g c #69DBDB", +"h c #7BDBDB", +"j c #6EE6E6", +"k c #71E3E3", +"l c #74EAEA", +"z c #808C8C", +"x c gray54", +"c c #929393", +"v c #9E9E9E", +"b c #A59494", +"n c #A89797", +"m c #8BBA8B", +"M c #9CBC9C", +"N c #87AAAA", +"B c #8CAAAA", +"V c #82BBBB", +"C c #93BBBB", +"Z c #A3A3A3", +"A c #ABABAB", +"S c #B3A1A1", +"D c #B8A6A6", +"F c #BBABAB", +"G c #A0BEA0", +"H c #B5B5B5", +"J c #BBBBBB", +"K c #C2B1B1", +"L c #CAB6B6", +"P c #C5BBBB", +"I c #CBB9B9", +"U c #D2BDBD", +"Y c #93C193", +"T c #A3C0A3", +"R c #AFC2AF", +"E c #B5C5B5", +"W c #B8C6B8", +"Q c #81CCCC", +"! c #BBC7C7", +"~ c #BAC8C8", +"^ c #C5C5C5", +"/ c #C8C6C6", +"( c #C6CCC6", +") c #C2CDCD", +"_ c #CACBCB", +"` c #DBC5C5", +"' c #CDD3D3", +"] c #D4D4D4", +"[ c #DAD7DA", +"{ c #DCDCDC", +"} c #E0C8C8", +"| c #E2DDDD", +" . c #DFE0DF", +".. c #E2DDE2", +"X. c #E5E5E5", +"o. c #E9E5E5", +"O. c #EBE5EB", +"+. c #E7E8E8", +"@. c #ECECEC", +"#. c #F0EDED", +"$. c #F5EFF5", +"%. c #EFF0F0", +"&. c #F2F2F2", +"*. c gray99", /* pixels */ -"8.8.8.8.9.8.8.8.8.8.8.8.8.w.9.8.8.8.8.8.8.8.8.8.w.8.8.8.8.8.8.8.", -"8.8.8.8.8.8.8.8.8.8.8.8.8...1.w.8.8.8.8.8.8.8.9.=.9.8.8.8.8.8.8.", -"8.8.8.8.8.8.8.8.8.8.8.q.>.= o =.q.8.8.8.8.8.e.< . D r.8.8.8.8.8.", -"8.8.8.8.8.8.8.8.8.8.8.7.w.w.+ =.w.8.8.8.8.8.9.# % & r.8.8.9.8.8.", -"8.8.8.8.8.8.8.8.8.8.8.9.6.@ S w.8.8.8.8.8.8.9.$ $ = r.6.8.8.8.8.", -"8.8.8.8.8.9.8.8.8.8.7.w.( O = ..q.8.8.8.8.6.w.K # ..w.6.8.8.8.8.", -"8.8.8.9.8.8.8.8.8.8.8.7.9.w.9.8.8.8.7.8.8.8.7.w.e.w.8.8.8.8.8.8.", -"8.8.8.8.8.8.8.8.9.w.w.w.w.w.w.w.w.w.w.w.w.w.w.9.9.w.w.w.w.q.8.8.", -"8.8.8.9.8.8.8.9.1.......%...o.......#.#.#.....=.......#...<.9.8.", -"8.8.8.8.8.8.8.w.Z F / W W W W W W ^ G Z / W W W W W W W W ..9.8.", -"8.8.8.7.8.8.8.w.F 8.r.e.u.u.u.u.e.r.8.=.t.w.w.w.e.w.y.t.w.w.8.8.", -"8.8.w.t.8.8.8.w.F <.9.9.< X o i w.9.<...9.8.7.8.6.t.C _ w.6.8.8.", -"8.w.H * <.q.8.q.F 1.w.< ; ; ; ; i r.<.%.q.8.8.8.y.B # 6.9.8.8.8.", -"8.9.=.X | w.7.w.F 6.=.P ` O.` O.L =.4.o.q.8.6.t.B $ w.q.8.8.8.8.", -"8.7.u.$ o.w.8.w.D 6.#.$.) ` ) ` $.=.6...q.6.y.B $ w.9.7.8.8.8.8.", -"7.w.W : 9.8.q.F 4.<.` O.@.@.O.` 1.4...q.y.B # w.q.8.8.8.8.8.8.", -"8.w.../ ( 8.8.w.F 1.9.| A P L J .w.<...t.C $ w.9.8.8.8.8.8.8.8.", -"8.8.w.w.w.8.8.9.F <.9.8.@. . .#.8.q.<...w./ 6.q.6.8.7.8.8.8.8.8.", -"8.8.8.7.8.8.8.w.F 6.w.9.w.9.9.w.q.w.4.=.w.r.q.9.9.9.q.q.w.9.8.8.", -"8.8.8.8.8.8.6.w.S ( .. ...| .. . ...( K ..| . .| ..| ..| =.9.8.", -"8.8.8.8.8.8.8.w.F <.7.4.6.8.0.6.4.7.>...8.4.4.8.0.8.4.6.6.8.8.8.", -"8.8.q.w.8.8.8.w.F 1.q.q.1.X.X.2.w.9.1.#.w.8.q.%.] :.q.8.8.8.8.8.", -"8.w.=.{ 8.8.8.w.F <.w.o.j b b k =.w.1.#.w.5.I e r w T 0.8.8.8.8.", -"8.w.G ..w.6.w.F 4.4.g h c m g d 7.1...r.R q w y e 0 [ w.8.8.8.", -"8.6.y.$ ..w.8.w.D 5.*.x C a v p s ,.4.o.q.7 r 1 e 1 t U q.8.8.8.", -"8.8.<.o G w.7.w.D 6.&.b n N n M c :.4...q.8 u y y y t U q.8.8.8.", -"8.w.F $ > 8.8.9.D 4.&.z M b n n z :.4...r.( 9 4 3 q 2 o.q.8.8.8.", -"8.8.w.r.w.8.8.w.D 6.&.Q f ! f ~ Y *.6...q.0.E 5 w 6 ] q.8.8.8.8.", -"8.8.8.7.8.8.8.9.F 4.7.0.5.0.5.8.7.8.1...q.8.q.1.:.3.w.8.8.8.8.8.", -"8.8.8.8.8.8.8.w.G 1.q.8.9.8.8.8.8.q.1.o.q.8.8.q.q.q.8.8.8.8.8.8.", -"8.8.9.8.8.8.8.8.4.8.8.8.8.8.8.8.8.8.8.7.8.8.8.8.8.8.8.8.8.8.8.8.", -"8.8.8.8.8.8.8.8.q.8.8.8.8.8.8.8.8.8.8.9.8.8.8.8.8.8.8.8.8.8.8.8." +"X.X.+.X.+.+.X.X.X.X.+.X.+.#.O.X.+.X.+.X.+.o.+.+.@.o.X.X.X.X.X.X.", +"X.X.X.X.X.X.o.+.+.X.X.+.X.^ { @.X.X.X.X.+.O.+.o._ @.X.X.X.X.X.X.", +"X.X.+.+.X.X.X.X.X.X.X.@.^ % + _ @.X.X.X.O...O., X c &.X.X.X.X.X.", +"+.X.X.X.+.X.X.X.X.X.X.X.@.+.O ] @.X.X.X...O...+ - # $.X.+.X.X.+.", +"X.X.X.+.X.X.+.X.X.X.X.+.{ O v $.X.X.X.X.X.X.@.@ * # %.X.X.+.X.X.", +"+.+.X.X.+.X.+.X.X.+.X.&.A O % _ @.X.X.X.X.X.#.A + J @.X.X.X.+.X.", +"o.X.+.X.X.X.X.X.X.X.X.X.+.&.+.+.X.X.X.+.X.+.X.@.&.@.o.X.X.+.X.X.", +"X.X.X.X.X.X.o.+.+.@.@.%.@.@.@.@.@.@.@.@.#.@.@.@.@.@.%.@.#.+.X.X.", +"X.+.X.X.X.X.+.+.{ ^ ^ / ^ / ( ^ / _ ( _ / / ( ^ / ( / / ^ ] +.X.", +"X.X.X.+.+.X.o.@.c Z H A A A A A A A Z c A A A A A A A A A ^ +.X.", +"X.X.o.X.X.X.X.@.v X.&.%.*.*.*.*.$.&.X._ *.%.@.&.&.%.*.&.%.@.X.+.", +"X.X.@.&.+.X.X.@.v [ +.X.e X o x @.+.] ^ +.X.X.o...&.c J @.X.X.X.", +"X.$.A % { +.X.@.v { &.; & & & $ x &.{ / @.X.X. .*.c + ..+.X.X.X.", +"X.+.( o ( @.X.@.v X.( D L I L I S _ { / +.X.X.*.x @ @.@.X.X.X.X.", +"X.X.*.# ] @.X.@.v ./ } F K F F ` _ .^ @.X.*.c @ @.+.X.X.+.+.X.", +"X.@.Z - O.X.@.v { ] K L U U L H { { / X.*.x @ @.+.X.X.X.X.X.X.", +"X.+.^ A J X.+.@.v [ @.P b D S n / @.[ ^ &.c @ @.@.X.X.X.+.X.X.X.", +"+.+.@.&.@.X.X.@.v [ @.o./ P P / o.+.] ^ @.H .+.o.X.X.o.o.X.X.+.", +"+.X.X.X.X.X.X.@.v .@.+.#.+.+.@.@.@.{ _ $.&.@.+.+.O.+.+.+.+.X.X.", +"+.X.X.X.+.X.X.@.v H / W ^ ^ ^ ^ ^ ^ H A ( J ^ ^ W ^ ^ ^ ^ ] +.X.", +"X.X.X.o.+.X.o.@.v ] .{ .o.o. .{ X.] ^ X.{ .X.+.+. ...{ ..X.X.", +"X.X.@.@.X.X.X.@.v { @.@.| ! ! | @.+.{ ^ +.+.O./ W _ @.+.+.+.X.X.", +"X.+.] J X.+.X.@.v { @.) p g f p _ @.[ ^ @...m 7 7 4 M O.X.X.+.X.", +"o.&.Z . _ @.X.@.v { | t s d h t y o.{ ^ &.G 5 6 0 6 5 W @.X.X.X.", +"X.X.*.# _ %.X.@.v .) a c r Q z u ' .^ O.9 7 : 6 : q Y O.X.X.X.", +"X.X.] o A @.X.@.v X.) g k l k l d ' .^ O.9 w 0 7 0 q Y $.X.X.X.", +"X.@.v @ - X.X.@.v | ) i l g j j i ' { ^ $.E < , > 5 2 ^ @.X.X.X.", +"X.X.@.&.&.X.X.@.v .! B V C V C N ) ..^ +.O.G 3 4 8 E @.X.X.X.X.", +"X.X.X.X.X.X.X.@.v { .o.| o.| o.X.X.{ ^ @.X.O.{ _ | @.X.+.X.X.+.", +"X.X.X.X.X.X.X.@.Z { @.X.X.X.+.+.X.+.{ / @.X.X.+.@.X.X.X.X.+.X.X.", +"X.X.X.X.X.X.X.+. .+.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.+.X.+.X.X.+.X.", +"+.X.X.+.X.+.X.X.O.+.X.X.X.X.+.X.X.X.X.X.+.X.X.X.o.+.+.X.X.X.X.o." }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 168 2 ", -" c #040404", -". c #0D0C0C", -"X c #110E0E", -"o c #131312", -"O c #1B1B1A", -"+ c #242423", -"@ c #2A2A29", -"# c #353534", -"$ c #383836", -"% c #3C3B3A", -"& c #3D7A3D", -"* c #454443", -"= c #484745", -"- c #4F4E4C", -"; c #514D4C", -": c #575654", -"> c #5A5857", -", c #5F5E5C", -"< c #605F5D", -"1 c #62615F", -"2 c #676663", -"3 c #666967", -"4 c #696866", -"5 c #6D6C6A", -"6 c #746E6C", -"7 c #72716E", -"8 c #767572", -"9 c #787674", -"0 c #7A7976", -"q c #7E7D7A", -"w c #84716E", -"e c #827C7A", -"r c #4F974F", -"t c #5A8E59", -"y c #53A553", -"u c #55AA55", -"i c #5CAC5C", -"p c #5DBD5D", -"a c #779B74", -"s c #6CAC6A", -"d c #62B461", -"f c #6DBE6C", -"g c #7BA278", -"h c #59CA5A", -"j c #62C562", -"k c #64C964", -"l c #69CE69", -"z c #62D363", -"x c #66DC66", -"c c #6BD36B", -"v c #6DDA6D", -"b c #71DC71", -"n c #6CE36C", -"m c #72E572", -"M c #72EA72", -"N c #82817E", -"B c #839F7F", -"V c #80A47D", -"C c #728E8C", -"Z c #689190", -"A c #52A2A2", -"S c #53ACAC", -"D c #5DACAC", -"F c #5AB3B3", -"G c #55BDBE", -"H c #5EBBBB", -"J c #64A8A7", -"K c #6CACAB", -"L c #7DA6A3", -"P c #7DA8A6", -"I c #7FADAB", -"U c #64BCBC", -"Y c #6ABEBE", -"T c #7AB3B1", -"R c #53C3C3", -"E c #59C5C6", -"W c #5DD3D3", -"Q c #61C4C4", -"! c #65CFCF", -"~ c #62D4D5", -"^ c #6ED5D5", -"/ c #65D9D9", -"( c #6DDCDC", -") c #70DFDF", -"_ c #65E0E0", -"` c #6BE2E2", -"' c #72E2E2", -"] c #71EBEB", -"[ c #868481", -"{ c #888784", -"} c #8F8E8B", -"| c #918D8A", -" . c #92908D", -".. c #9E908F", -"X. c #869A97", -"o. c #899E9B", -"O. c #959490", -"+. c #989793", -"@. c #9A9996", -"#. c #9E9C99", -"$. c #A69696", -"%. c #A99797", -"&. c #A19896", -"*. c #A29D9A", -"=. c #AA9B9B", -"-. c #B09F9E", -";. c #87A883", -":. c #8EA48A", -">. c #8FA98B", -",. c #9AAB96", -"<. c #A4A19D", -"1. c #AAA29F", -"2. c #82A3A2", -"3. c #90A4A2", -"4. c #93A9A6", -"5. c #93ACA9", -"6. c #93B0AD", -"7. c #A7A5A2", -"8. c #A9A7A3", -"9. c #A2ABA7", -"0. c #ACAAA6", -"q. c #A4AEAB", -"w. c #AEADA9", -"e. c #B5A3A3", -"r. c #B8A5A5", -"t. c #BAA8A7", -"y. c #B0AEAA", -"u. c #BDABAA", -"i. c #ACB0A6", -"p. c #A7B1AD", -"a. c #B2B3AC", -"s. c #B6B6B1", -"d. c #B9B7B3", -"f. c #BBB9B5", -"g. c #BEBCB8", -"h. c #C2AFAF", -"j. c #C4B0B0", -"k. c #CCB6B7", -"l. c #C2BCB7", -"z. c #C2BEBA", -"x. c #CEB9B9", -"c. c #D1BBBC", -"v. c #C3C2BD", -"b. c #C7C5C0", -"n. c #CAC5C3", -"m. c #CDCBC6", -"M. c #CFCDC8", -"N. c #D6C0C0", -"B. c #DAC4C4", -"V. c #D3CAC5", -"C. c #D2CECA", -"Z. c #D8CEC9", -"A. c #D4D3CE", -"S. c #D7CED0", -"D. c #D7D5D0", -"F. c #D9D7D2", -"G. c #DCDAD5", -"H. c #DFDDD8", -"J. c #E5CDCD", -"K. c #EAD3D3", -"L. c #E2DAD4", -"P. c #E1DEDA", -"I. c #E4E2DD", -"U. c #E9E2DD", -"Y. c #E7E5E0", -"T. c #E9E7E2", -"R. c #EBE9E3", -"E. c #FCFAF4", +"48 48 140 2 ", +" c #060505", +". c #0B0A0A", +"X c #110F0F", +"o c #151515", +"O c #1D1D1D", +"+ c #222222", +"@ c gray17", +"# c gray21", +"$ c #3C3C3C", +"% c #3E7D3E", +"& c #414141", +"* c #4D4D4D", +"= c #534C4C", +"- c #575353", +"; c #5C5B5B", +": c #636262", +"> c #6C6D6D", +", c #727272", +"< c #7C7575", +"1 c #7D7D7D", +"2 c #8A7C7C", +"3 c #539E53", +"4 c #5E955E", +"5 c #57AD57", +"6 c #58AF58", +"7 c #5CB45C", +"8 c #63B263", +"9 c #65BC65", +"0 c #7DA37D", +"q c #71B471", +"w c #5DD35D", +"e c #61C661", +"r c #66CD66", +"t c #65D165", +"y c #67DD67", +"u c #6BD36B", +"i c #6FDA6F", +"p c #72C772", +"a c #71DE71", +"s c #6BE66B", +"d c #6EED6E", +"f c #73E573", +"g c #74EC74", +"h c #77F377", +"j c #78F078", +"k c #6D9999", +"l c #769797", +"z c #799595", +"x c #54A7A7", +"c c #54AAAA", +"v c #57B4B4", +"b c #5CBEBE", +"n c #61B5B5", +"m c #6AB1B1", +"M c #60BABA", +"N c #71B5B5", +"B c #58C5C5", +"V c #56C9C9", +"C c #5BCDCD", +"Z c #62C2C2", +"A c #6CC6C6", +"S c #65CCCC", +"D c #65DCDC", +"F c #69D8D8", +"G c #72DEDE", +"H c #65E0E0", +"J c #6CE3E3", +"K c #6CEAEA", +"L c #73E6E6", +"P c #74EAEA", +"I c #7AEEEE", +"U c #77F6F6", +"Y c #848484", +"T c #8C8C8C", +"R c #959494", +"E c #A59696", +"W c #AE9D9D", +"Q c #84AB84", +"! c #89A989", +"~ c #8DB18D", +"^ c #94AC94", +"/ c #95B295", +"( c #8CA3A3", +") c #84ADAD", +"_ c #89ABAB", +"` c #97AFAF", +"' c #84B1B1", +"] c #82BABA", +"[ c #9AB4B4", +"{ c #9ABABA", +"} c #A4A4A4", +"| c #AAA2A2", +" . c #ADACAC", +".. c #B3A2A2", +"X. c #B2AAAA", +"o. c #BCA9A9", +"O. c #A1B3A1", +"+. c #ABB5B5", +"@. c #AFBABA", +"#. c #B4B4B4", +"$. c #B9B6B6", +"%. c #B5BBB5", +"&. c #BABBBA", +"*. c #C2AFAF", +"=. c #C5B2B2", +"-. c #CBB7B7", +";. c #CDB8B8", +":. c #D5BEBE", +">. c #BEC0BE", +",. c #BEC0C0", +"<. c #C3C3C3", +"1. c #CCC7C7", +"2. c #CBCBCB", +"3. c #D6C1C1", +"4. c #DAC3C3", +"5. c #D1CECE", +"6. c #DFCACA", +"7. c #D4CFD4", +"8. c #D6D6D6", +"9. c #DDD6D6", +"0. c #D7D8D8", +"q. c #DBDBDB", +"w. c #E2CBCB", +"e. c #EED5D5", +"r. c #E1D9D9", +"t. c #F3DBDB", +"y. c #E1D9E1", +"u. c #DFE1E1", +"i. c #E6E6E6", +"p. c #ECE5E5", +"a. c #E7E9E7", +"s. c #EDE7ED", +"d. c #E6E8E8", +"f. c #ECEBEB", +"g. c #F1ECEC", +"h. c #EEF0EE", +"j. c #F1ECF1", +"k. c #EFF0F0", +"l. c #F3F3F3", +"z. c gray99", /* pixels */ -"G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.H.G.G.G.G.G.G.I.H.G.G.G.G.G.G.H.G.G.G.G.G.G.H.H.F.G.G.G.G.G.G.G.G.G.G.", -"G.G.G.G.H.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.v.m.I.G.G.G.G.G.G.G.G.G.G.G.I.M.M.I.G.G.G.G.G.G.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.R. .O o q I.G.G.G.G.G.G.G.G.F.Y.0.O O 0.Y.F.G.G.G.G.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.H.b.I.0 + I.G.G.G.G.G.G.G.G.F.R.* < , * R.D.G.G.G.G.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.F.I.H.@ { Y.G.G.G.G.G.G.G.G.G.Y.# - @ # Y.G.G.G.G.G.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.H.G.G.G.G.G.G.G.G.G.G.* N E.D.G.G.G.G.G.G.G.G.F.R.# 9 9 # R.F.G.G.G.G.H.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.F.R.: ; < H.G.G.G.G.G.G.G.G.D.T.{ o o { Y.F.G.G.G.G.G.G.G.G.", -"G.H.G.G.G.G.G.G.G.G.P.G.G.G.G.G.G.G.H.0.} N O.G.G.G.G.G.G.G.G.G.G.G.P.<.#.I.G.G.G.G.G.G.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.I.R.R.R.G.G.G.G.G.G.G.G.G.G.G.G.T.T.G.G.G.G.G.G.G.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.F.F.F.F.G.G.G.F.G.F.G.G.G.G.G.G.D.F.G.G.G.G.G.G.G.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.P.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.H.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.m.d.f.f.f.f.f.f.f.f.f.f.f.f.f.g.f.f.f.f.d.f.f.f.f.f.f.f.f.d.C.H.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.P.2 e { N { { N [ [ [ [ { [ [ [ 4 [ { N { [ [ { [ [ { [ [ { q z.P.G.G.G.", -"G.G.G.G.G.H.G.G.G.G.G.G.G.0 Y.R.T.R.T.I.I.T.I.Y.T.T.T.T.a.Y.T.R.T.T.Y.T.T.Y.T.I.Y.R.R.H.G.H.G.G.", -"G.G.G.G.G.G.F.G.G.G.G.G.G.9 A.G.G.D.G.R.I.I.R.H.D.G.D.G.7.D.G.D.D.F.F.F.G.D.D.T.G.F.F.G.G.G.G.G.", -"G.G.G.G.G.I.I.G.G.G.G.G.G.9 F.G.F.I.C.5 % $ , v.T.D.G.H.0.D.G.G.G.G.G.G.G.G.I.7 b.I.G.G.G.G.G.G.", -"G.G.G.G.F.g.f.G.H.G.G.G.G.9 G.F.I.d.O X X X @.Y.F.G.8.F.G.G.G.G.G.G.G.R.* # F.G.F.G.G.G.G.G.", -"G.G.F.Y.<.o X M.H.G.G.G.G.9 G.H.D.; %.K.x.j.K.h.; z.I.G.8.G.G.G.G.G.G.G.R.* # Y.P.G.G.G.G.G.G.G.", -"G.G.G.G.H.7.X m.H.G.G.G.G.9 A.U.*.e.K.6 t.c.7 N.k.| I.G.8.F.G.G.G.G.G.R.* # I.H.G.G.G.G.G.G.G.G.", -"G.G.G.G.I.w.. m.H.G.G.G.H.9 D.I.<.N.c.< =.j.> u.J.*.G.H.8.G.G.G.G.G.R.* # I.H.D.G.G.G.G.G.G.G.G.", -"G.G.G.F.R.f.. G.I.G.G.G.G.9 D.I.0.c.B.J.J.J.J.B.c.8.G.G.7.G.G.G.G.R.* # I.H.G.G.G.G.G.G.G.G.G.G.", -"G.G.F.Y.8.+ # g.H.G.G.G.9 D.I.f.t.r...j.j.$.=.j.y.I.G.8.F.G.H.R.* $ I.H.G.G.H.G.G.G.G.G.G.G.G.", -"G.G.G.H.b.+.8.+.C.H.G.G.G.8 D.G.P.&.c.e =.t.8 c.$.A.G.H.7.G.G.G.* # Y.H.F.G.G.G.G.G.G.G.G.G.G.G.", -"G.G.G.G.H.R.Y.R.H.G.G.G.G.0 G.G.G.D.*.-.x.c.e.#.m.P.F.H.8.D.R.@.% I.H.F.G.G.G.G.G.G.G.G.G.G.G.G.", -"G.G.G.G.G.F.F.F.G.G.G.G.G.8 G.G.G.G.P.v.y.y.z.G.P.G.G.H.7.G.G.G.P.H.G.G.G.G.G.G.G.G.G.G.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.0 G.H.P.P.L.I.Y.Y.I.H.H.H.H.H.0.H.P.H.H.H.H.P.H.P.H.P.P.P.P.H.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.7 m.M.m.M.m.m.m.m.m.M.m.m.m.m.#.n.m.m.m.M.M.m.m.M.m.M.m.M.m.S.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.H.5 8.y.w.w.w.y.w.w.i.w.y.w.w.w.{ 0.w.w.w.w.w.w.w.w.w.w.w.w.0.m.H.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.0 H.I.I.I.I.P.I.I.H.H.I.I.I.I.w.H.I.I.I.H.H.Y.I.I.I.I.P.Y.Y.G.G.G.G.G.", -"G.G.G.G.G.F.G.G.G.G.G.G.G.8 A.G.F.G.P.L.Z.Z.L.I.F.G.G.G.7.F.G.G.F.P.P.S.S.H.P.F.F.F.F.G.G.G.G.G.", -"G.G.G.G.G.Y.Y.G.G.G.G.G.G.9 F.G.G.I.z.2.K K L d.I.G.G.H.8.G.G.G.P.g.V s s V z.I.G.G.G.G.G.G.G.G.", -"G.G.G.H.A.9.0.F.H.G.G.G.G.9 F.G.I.s.D _ ` ' ` F 9.P.G.G.8.F.G.P.w.i x n n x i i.I.F.G.G.G.G.G.G.", -"G.G.F.T.<.O o m.H.G.G.G.G.9 F.H.V.J ~ U ( ( U ^ F v.I.G.8.F.I.n.i n b c c b v i n.P.G.G.G.G.G.G.", -"G.G.G.F.I.a.. m.P.G.G.G.G.0 F.I.p.R 5.w S ! <.4 R 5.L.G.8.F.Y.,.z c & j j & c z ,.I.G.G.G.G.G.G.", -"G.G.G.F.T.w.. m.G.G.G.G.G.9 D.I.5.W T C Q ^ L Z ~ P L.H.1.D.P.;.x c y k k u c x ;.P.G.G.G.G.G.G.", -"G.G.G.F.R.a.. A.P.G.G.G.G.9 A.U.4.~ ( ( ' ( / ) _ P L.G.8.F.I.>.z b M n m m b z >.P.G.G.G.G.G.G.", -"G.G.G.Y.<.O @ g.I.G.G.H.9 F.U.4./ ' ( ' ' ^ ' _ P G.H.8.D.I.s.p v t a r y b p d.I.G.G.G.G.G.G.", -"G.G.G.H.n.w.s.w.C.H.G.G.G.9 D.P.6.G U ] H E ] U E 6.G.G.8.G.G.H.;.h f g l m h B P.G.G.G.G.G.G.G.", -"G.G.G.G.I.I.I.I.H.G.G.G.G.9 D.U.X.o.p.A i.4.A q.3.C L.H.8.D.G.G.F.:.p h j s :.G.G.G.G.G.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.9 G.P.n.G.I.l.P.P.l.I.L.v.H.G.8.G.H.G.H.I.n.a.a.n.I.G.G.G.G.G.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.9 D.G.H.G.G.H.G.G.I.F.H.H.G.G.8.G.G.G.G.F.H.Y.I.H.G.G.G.G.G.G.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.q D.H.G.G.G.G.G.G.G.G.G.G.G.H.8.G.G.G.G.G.G.F.G.F.G.H.G.G.G.G.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.C.G.G.G.G.G.G.G.G.G.G.G.G.G.G.A.H.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.H.G.G.G.H.G.G.G.G.G.G.G.G.G.G.H.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.L.", -"G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.H.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.", -"G.G.G.G.G.G.G.G.H.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.H.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G." +"i.i.i.d.i.i.i.i.i.i.d.i.i.i.d.d.i.i.i.i.d.d.i.i.i.i.i.d.i.d.i.i.i.i.d.i.i.i.i.i.i.i.i.i.i.i.i.d.", +"i.i.i.a.d.d.d.i.d.i.p.i.i.i.i.i.d.i.i.d.i.d.d.p.i.i.i.i.d.i.d.i.i.i.i.i.i.i.i.i.i.i.i.d.i.i.i.i.", +"i.i.a.i.i.d.i.i.i.d.i.i.i.i.i.i.i.i.i.i.f.a.i.i.i.i.i.i.i.i.p.i.i.i.i.d.f.i.i.i.i.i.a.i.i.i.i.i.", +"i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.d.2.0.f.i.i.i.i.i.i.i.i.i.i.i.f.q.q.f.i.i.i.a.i.i.i.i.i.i.", +"i.i.i.i.i.i.d.i.p.i.i.i.i.i.i.i.d.i.l.1 @ + R l.i.i.i.i.i.i.i.i.i.j.#.+ O .k.i.d.d.i.i.i.i.i.i.", +"i.i.d.i.i.i.i.i.d.i.i.i.i.i.d.i.i.p.a.2.l.1 $ l.i.i.i.i.i.i.d.i.i.l.& < Y # l.i.d.i.i.i.i.i.p.d.", +"i.d.i.i.p.i.i.i.i.i.i.i.i.d.i.i.i.i.u.l.q.+ R l.i.i.i.i.i.i.i.d.p.f.$ - : # d.i.d.i.i.i.i.d.i.i.", +"i.i.i.d.i.i.i.d.i.p.d.i.i.i.i.d.i.i.d.r.$ R z.i.i.i.i.i.i.p.i.d.p.l.# R ( @ f.i.i.p.i.i.i.i.d.d.", +"i.i.d.i.i.i.i.i.i.d.i.i.d.d.i.i.i.i.l.* . * , s.i.i.i.i.i.i.i.i.i.l.T O O 1 l.i.i.i.d.i.i.i.d.i.", +"i.i.i.p.i.i.d.i.i.i.i.i.i.d.i.i.i.i.f. .R Y } d.i.i.i.i.i.i.i.i.i.i.a. .} f.i.i.i.i.i.i.i.i.i.i.", +"i.i.i.i.d.i.i.i.i.i.i.i.i.i.i.i.i.i.i.h.l.z.l.i.i.i.i.i.i.i.i.i.i.i.i.k.l.i.i.i.d.i.i.i.i.d.d.i.", +"i.i.i.d.i.p.i.d.i.i.d.p.i.i.i.i.i.i.i.i.u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.", +"d.i.i.i.i.i.i.i.d.i.i.i.d.p.f.k.f.f.h.f.f.h.f.h.l.f.f.l.f.f.f.k.k.h.f.k.k.f.h.f.g.g.g.a.i.i.i.i.", +"i.i.d.p.d.i.i.i.i.i.i.i.a.8.<.<.<.<.<.<.<.<.<.<.<.<.<.<.1.<.<.<.<.1.<.<.<.<.<.<.<.<.<.q.a.i.i.i.", +"i.d.i.i.i.i.i.i.i.i.i.i.s.> Y T T T T T T T T T T T T T > T T T T T T T T T T T T T Y 1.s.i.d.d.", +"i.i.i.i.i.i.i.d.i.d.i.i.i.Y g.l.l.l.l.l.k.l.j.l.l.l.l.l.&.l.l.l.l.l.l.l.l.l.l.l.l.l.l.f.i.d.i.i.", +"i.i.i.i.i.i.i.i.i.i.i.i.i.1 q.i.i.i.i.l.h.f.l.f.u.i.i.i. .i.i.u.i.i.y.i.i.u.i.k.i.i.u.d.i.i.i.i.", +"i.i.i.i.i.f.f.i.i.i.i.i.i.1 i.i.i.f.q., $ $ : 5.l.i.i.a. .i.i.i.i.i.i.i.i.i.f.< 5.f.i.i.i.i.i.i.", +"i.i.i.i.i.2.<.i.i.i.i.i.i.1 i.i.k.-.O . X X ( l.p.a.X.i.d.i.i.i.i.i.i.l.* # i.i.i.i.i.i.i.i.", +"i.i.i.k.#.o + i.d.i.i.i.i.1 i.a.u.- ..t.3.;.t.=.= 5.s.i. .i.i.d.i.i.i.i.l.* $ h.a.i.i.i.i.i.i.i.", +"d.i.i.a.i. .+ i.a.i.i.d.i.1 q.l.} o.t.< =.4.< 6.:.R l.i.#.i.i.i.i.i.i.z.* # k.a.i.i.i.i.i.d.d.p.", +"i.i.i.i.l.$.O u.d.i.d.i.i.1 i.f. .6.4.: ..;.; =.e.| i.a. .i.i.i.i.i.l.* # l.a.i.i.i.i.i.i.i.i.d.", +"i.i.i.i.l.<.+ f.a.i.p.i.i.1 i.f.#.3.w.e.e.e.t.w.w.X.d.d. .i.a.i.i.l.* # f.a.i.i.i.i.i.i.i.i.i.d.", +"i.i.i.l. .+ . $ 7.a.i.i.i.1 i.s.<.=.*.E ;.;.| ..-.$.f.i.#.i.i.a.z.* # l.a.i.i.i.i.i.i.d.a.i.d.i.", +"i.i.i.a.2.} .} r.a.d.i.i.1 i.i.f.| w.Y ..=.< 3.W u.d.d. .y.i.i.* # j.a.i.d.i.i.i.i.d.i.i.i.i.i.", +"i.i.i.i.f.l.l.l.a.i.a.i.i.1 i.i.a.r.| ..3.4.o.| 0.a.i.a.#.i.l.} & f.a.i.i.i.i.i.i.i.i.i.a.i.i.i.", +"i.i.i.i.i.i.i.i.i.i.i.i.i.1 i.a.i.a.f.2.$.%.<.d.f.i.i.d. .i.a.i.j.a.i.i.i.i.i.i.a.i.d.d.i.i.i.a.", +"i.i.i.i.i.i.i.i.i.i.d.i.i.1 i.s.s.a.a.f.l.j.j.s.a.f.d.f.%.a.s.a.a.a.a.s.a.s.f.f.s.a.s.p.i.i.i.i.", +"i.i.i.i.i.i.i.i.i.i.d.i.i.1 0.8.0.8.8.8.8.8.8.0.0.0.0.0.} 8.8.8.0.0.0.0.8.8.0.q.8.0.0.i.a.a.i.i.", +"i.i.i.i.i.i.i.i.a.i.i.d.i., .&.%.%.$.$.%.%.#.$.#.#.%.&.T %.$.$.#.%.#.$.$.#.%.$.$.$.#.8.s.i.i.i.", +"i.i.i.i.i.i.i.i.i.i.i.i.i.1 a.f.f.f.s.f.k.l.f.f.f.f.s.j.%.a.j.f.f.f.f.k.j.f.a.f.f.f.f.i.i.i.i.a.", +"a.i.i.i.i.i.i.i.a.i.i.i.d.1 i.i.i.i.a.s.r.r.p.s.i.i.i.d. .i.i.i.i.f.f.y.y.s.d.i.i.i.i.i.i.i.i.i.", +"i.i.d.d.i.f.l.i.i.i.i.i.i.< y.s.i.f.2._ N N ) ,.s.i.i.a. .i.d.i.f.<.Q q q Q 1.g.i.i.i.i.d.d.i.i.", +"i.d.i.d.i.&.$.i.i.i.i.i.i.0 i.y.g.&.n K P P K b +.f.i.a. .i.i.j.$.7 s h g s 7 %.g.i.i.i.d.i.i.i.", +"i.i.i.g.#.o + y.d.i.i.i.i.1 i.s.r.m F A L P A G b 2.f.d.#.i.a.8.8 g f f a f g 8 8.a.i.i.i.i.i.d.", +"i.i.i.i.s.%.+ u.d.i.i.i.i.1 i.f.@.V { 2 v F .> V [ g.i. .i.j.O.y a % r r % a y O.g.i.i.i.i.i.i.", +"i.i.p.i.g.%.+ i.i.i.i.i.i.1 u.g.[ D N z S J ) k D ' p.d.X.i.j.~ s i 7 u u 6 i s ~ s.i.i.d.i.i.i.", +"i.d.d.i.l.$.+ s.a.i.i.i.i.1 i.g.[ H P L P L J L K ' p.d. .i.j./ y f h d j h f y / g.i.i.i.i.i.d.", +"d.i.i.j.} o . @ 2.f.i.i.i.1 u.s.` H I L I P L I P ) p.d.+.i.f.>.e f 4 q 3 5 f e -.k.i.i.d.p.i.i.", +"i.i.i.d.0.#.,.%.i.a.i.i.i.1 i.g.{ B A U Z S U Z C ] p.d.X.i.i.s.! w p z i h w ! f.d.i.i.i.i.i.i.", +"i.i.i.i.a.l.g.j.i.i.d.d.i.1 u.j.( ( +.x +.+.c +.` l g.i. .i.i.i.y.^ e w t 8 ^ y.d.i.i.i.i.i.i.i.", +"i.d.i.i.i.i.i.i.i.i.i.d.i.2 i.d.8.d.p.1.f.d.1.f.p.5.i.a.#.i.i.p.a.g.7.&.&.8.j.i.i.i.i.i.d.d.i.i.", +"i.i.i.i.i.i.i.p.i.i.d.i.y.< i.i.a.a.i.a.i.i.f.i.i.f.i.a. .i.d.i.a.d.a.f.k.f.i.p.i.i.i.i.d.i.d.i.", +"d.d.i.i.i.i.i.d.i.i.i.i.y.0 i.i.i.i.i.i.i.i.i.d.i.i.i.i.#.i.i.i.i.i.i.i.i.i.d.i.i.i.i.i.i.i.i.i.", +"i.i.i.i.d.i.i.i.i.i.i.i.s.q.d.d.d.i.d.i.i.i.i.i.i.i.i.i.y.a.d.d.i.i.i.i.i.p.d.i.i.i.i.i.i.i.i.d.", +"d.i.i.d.i.i.i.i.i.i.d.i.d.s.i.i.d.i.p.i.i.p.d.d.i.i.i.i.p.i.d.i.a.i.i.i.i.i.i.i.i.i.d.i.i.i.i.i.", +"i.d.i.i.i.i.i.i.i.d.i.d.i.i.i.i.i.i.i.i.i.i.i.d.i.i.d.i.i.i.i.i.i.i.i.a.i.i.i.i.i.i.i.i.d.i.i.i.", +"i.i.i.i.i.i.d.i.i.i.i.i.i.i.i.d.i.i.i.i.i.i.d.d.i.a.i.i.i.i.d.i.i.i.i.i.i.d.i.i.i.d.d.i.d.i.d.i." }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/undead.sav sgt-puzzles-20160429.b31155b/icons/undead.sav --- sgt-puzzles-20140928.r10274/icons/undead.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/undead.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,14 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :6:Undead +PARAMS :6:4x4de2 +CPARAMS :6:4x4de2 +DESC :48:5,2,2,aRLgLLaLRL,2,0,1,2,1,1,2,5,0,0,0,2,1,3,1,1 +NSTATES :1:7 +STATEPOS:1:7 +MOVE :2:G0 +MOVE :2:V0 +MOVE :2:G2 +MOVE :2:G3 +MOVE :2:V3 +MOVE :2:Z3 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/undead-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/undead-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unequal-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unequal-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unequal-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unequal-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unequal-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unequal-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unequal-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unequal-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unequal-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unequal-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unequal-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unequal-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unequal-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unequal-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unequal-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unequal-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unequal-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unequal-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unequal-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unequal-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unequal-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unequal-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unequal-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unequal-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unequal.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unequal.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/unequal-icon.c sgt-puzzles-20160429.b31155b/icons/unequal-icon.c --- sgt-puzzles-20140928.r10274/icons/unequal-icon.c 2014-09-29 00:33:49.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/unequal-icon.c 2016-04-29 00:31:44.000000000 +0000 @@ -1,685 +1,728 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 130 2 ", -" c #D3D1CC", -". c #CBC9C4", -"X c #CBC9C5", -"o c #CAC8C4", -"O c #D0CEC9", -"+ c #D5D3CE", -"@ c #CECCC7", -"# c #C9C8C3", -"$ c #D0CBCA", -"% c #CFCBC9", -"& c #CCCAC5", -"* c #D4D2CE", -"= c #C6C4C0", -"- c #CECCC8", -"; c #CCCBC6", -": c #CDCBC7", -"> c #CBCAC5", -", c #C3C1BD", -"< c #DCDAD5", -"1 c #D7D5D0", -"2 c #C1C0BC", -"3 c #CFCCC9", -"4 c #B8C3B2", -"5 c #BBC4B5", -"6 c #D0CDCA", -"7 c #C3C2BE", -"8 c #CFCDC8", -"9 c #D9D7D2", -"0 c #D7D5CF", -"q c #D6D4CF", -"w c #C7C5C1", -"e c #878683", -"r c #C7C6C1", -"t c #CACAC4", -"y c #E1D9D9", -"u c #74AD70", -"i c #4C9D4A", -"p c #E5DCDD", -"a c #C9C8C2", -"s c #D4D2CD", -"d c #D2D0CB", -"f c #BCBAB6", -"g c #636260", -"h c #DDD7D6", -"j c #C1CABB", -"k c #59A056", -"l c #E7DBE0", -"z c #C6C6C0", -"x c #CCCAC6", -"c c #908F8B", -"v c #8F8E8B", -"b c #DED7D7", -"n c #80B17C", -"m c #278D25", -"M c #BFCBB8", -"N c #CECAC8", -"B c #CDCCC7", -"V c #D3D1CD", -"C c #C2C0BC", -"Z c #B1AFAB", -"A c #DAD8D3", -"S c #C5C3BF", -"D c #D6D3CF", -"F c #B6C6B0", -"G c #ACC2A6", -"H c #C6CEBF", -"J c #CBC7C5", -"K c #CFCEC9", -"L c #C4C2BE", -"P c #DEDCD7", -"I c #C6C5C1", -"U c #C5C4C0", -"Y c #CDC7C7", -"T c #CFC8C9", -"R c #CAC6C4", -"E c #D3D2CD", -"W c #D5D4CE", -"Q c #D5D4CD", -"! c #D1D0CA", -"~ c #D0CFCA", -"^ c #C2C1BD", -"/ c #C9C6C3", -"( c #D3CACD", -") c #C4C3BE", -"_ c #C8C6C2", -"` c #D1CFCB", -"' c #D1CDCA", -"] c #C8D0C1", -"[ c #5BA358", -"{ c #B5C7AF", -"} c #DCD6D5", -"| c #C4C3BF", -" . c #DEDCD6", -".. c #C3C1BC", -"X. c #585755", -"o. c #CDCBC6", -"O. c #CAC9C4", -"+. c #5BA058", -"@. c #9BBA95", -"#. c #E2D8DB", -"$. c #C4C4BE", -"%. c #73726F", -"&. c #2D2C2B", -"*. c #C8C6C1", -"=. c #E2D9DA", -"-. c #5A9F58", -";. c #83B17F", -":. c #DFD6D8", -">. c #C4C4BF", -",. c #B7B5B1", -"<. c #434241", -"1. c #2C2C2B", -"2. c #918F8C", -"3. c #D3CECC", -"4. c #C7D0C0", -"5. c #65A862", -"6. c #7BB177", -"7. c #C5C3BE", -"8. c #7F7D7A", -"9. c #BEBCB7", -"0. c #CDCAC6", -"q. c #D7CDD1", -"w. c #D5CDCF", -"e. c #CECDC8", -"r. c #D6D4D0", -"t. c #CFCDC9", -"y. c #CBCBC5", -"u. c #CCCCC5", -"i. c #D2D0CC", -"p. c gray100", +"16 16 253 2 ", +" c LightGray", +". c #CACACA", +"X c #CBCBCB", +"o c #CBCBCB", +"O c #CBCBCB", +"+ c #CACACA", +"@ c #D0D0D0", +"# c #D5D5D5", +"$ c #D5D5D5", +"% c #CECECE", +"& c #CACACA", +"* c #D1CDD1", +"= c #CFCCCF", +"- c #CACACA", +"; c #CCCBCC", +": c gray83", +"> c #C6C6C6", +", c #CECECE", +"< c gray80", +"1 c #CDCDCD", +"2 c #CBCBCB", +"3 c gray76", +"4 c gainsboro", +"5 c #D7D7D7", +"6 c #C1C1C1", +"7 c #CFCECF", +"8 c #B6C3B6", +"9 c #BBC5BB", +"0 c #D0CFD0", +"q c #C3C3C3", +"w c gray81", +"e c #CBCBCB", +"r c #CECECE", +"t c gray85", +"y c #D7D7D7", +"u c #D7D7D7", +"i c gray84", +"p c #C6C6C6", +"a c gray52", +"s c #C8C8C8", +"d c #CBCCCB", +"f c #DFDADF", +"g c #6AAB6A", +"h c #499D49", +"j c #E5DEE5", +"k c #C9CAC9", +"l c #CECECE", +"z c #CBCBCB", +"x c gray80", +"c c gray83", +"v c #D5D5D5", +"b c #D2D2D2", +"n c #CDCDCD", +"m c #BBBBBB", +"M c #626262", +"N c #C6C7C6", +"B c #DFD9DF", +"V c #BCCABC", +"C c #539F53", +"Z c #E8DEE8", +"A c #C6C8C6", +"S c #CFCECF", +"D c #CBCBCB", +"F c #CDCDCD", +"G c #D7D7D7", +"H c #D5D5D5", +"J c #D5D5D5", +"K c LightGray", +"L c gray80", +"P c #909090", +"I c #8D8D8D", +"U c #CBCBCB", +"Y c #DDD9DD", +"T c #75AE75", +"R c #208C20", +"E c #BACCBA", +"W c #CFCCCF", +"Q c #CDCECD", +"! c #CACACA", +"~ c #CBCBCB", +"^ c gray84", +"/ c gray83", +"( c gray83", +") c LightGray", +"_ c #C1C1C1", +"` c gray69", +"' c #DADADA", +"] c #C5C5C5", +"[ c #D5D5D5", +"{ c #B6C8B6", +"} c #ADC4AD", +"| c #C6CFC6", +" . c #CBC9CB", +".. c #CDCECD", +"X. c gray81", +"o. c gray77", +"O. c gray78", +"+. c #C6C6C6", +"@. c gray78", +"#. c #C5C5C5", +"$. c gray79", +"%. c gray87", +"&. c gray83", +"*. c #C6C6C6", +"=. c #C5C6C5", +"-. c #CDC9CD", +";. c #CFCACF", +":. c #CAC8CA", +">. c gray77", +",. c #D2D2D2", +"<. c gray84", +"1. c #D7D7D7", +"2. c gray84", +"3. c gray84", +"4. c gray84", +"5. c gray84", +"6. c gray84", +"7. c LightGray", +"8. c #D7D7D7", +"9. c gray84", +"0. c #D5D6D5", +"q. c #D5D6D5", +"w. c gray84", +"e. c #D7D7D7", +"r. c #D5D5D5", +"t. c #D5D5D5", +"y. c gray83", +"u. c LightGray", +"i. c #D1D2D1", +"p. c LightGray", +"a. c gray83", +"s. c #D5D5D5", +"d. c #D5D5D5", +"f. c #D5D5D5", +"g. c #D5D5D5", +"h. c LightGray", +"j. c LightGray", +"k. c #D0D0D0", +"l. c LightGray", +"z. c gray83", +"x. c #D5D5D5", +"c. c #CECECE", +"v. c gray76", +"b. c #CAC8CA", +"n. c #D4CCD4", +"m. c #CAC8CA", +"M. c gray77", +"N. c #C6C6C6", +"B. c #D7D7D7", +"V. c #D5D5D5", +"C. c gray77", +"Z. c #C5C5C5", +"A. c gray79", +"S. c #D5D5D5", +"D. c #C8C8C8", +"F. c gray76", +"G. c gray82", +"H. c gray79", +"J. c #D2CFD2", +"K. c #C2CFC2", +"L. c #55A255", +"P. c #B4C8B4", +"I. c #DCD8DC", +"U. c #C4C5C4", +"Y. c gray84", +"T. c LightGray", +"R. c gray77", +"E. c gray87", +"W. c gray77", +"Q. c #585858", +"!. c gray80", +"~. c #CDCDCD", +"^. c #CDCDCD", +"/. c #CACBCA", +"(. c #CBCCCB", +"). c #DFDADF", +"_. c #539E53", +"`. c #9ABC9A", +"'. c #E2DAE2", +"]. c #C4C5C4", +"[. c gray84", +"{. c LightGray", +"}. c #C6C6C6", +"|. c #747474", +" X c gray17", +".X c #C0C0C0", +"XX c gray81", +"oX c #CDCDCD", +"OX c #CACACA", +"+X c #CBCCCB", +"@X c #DFDADF", +"#X c #509C50", +"$X c #7EB07E", +"%X c #DED8DE", +"&X c #C4C5C4", +"*X c gray84", +"=X c #D2D2D2", +"-X c gray80", +";X c #BBBBBB", +":X c #444444", +">X c #1E1E1E", +",X c #909090", +" , < 1 2 3 4 5 6 7 8 ", -". - 9 0 1 q w e r t y u i p a - ", -". ; 0 s + d : f g r h j k l z 8 ", -"X : 1 + + x c v > b n m M N B ", -"o X q s s V C Z A S D F G H J B ", -"K L w = w S # P s I U Y T R L ", -"q 0 q q q q q E + q q W Q q 1 + ", -"+ s ! s + + + + E ~ s + ", -"@ ^ / ( R ) w q + ) S # + _ ^ ` ", -"# ' ] [ { } ) q | ...X.o.; : ", -"O.> y +.@.#.$.q V U A %.&.*.- @ ", -"O.t =.-.;.:.>.q d : ,.<.1.2.* x ", -"# 3.4.5.6.W w q r q 7.8.9.O : ", -"& 7 0.q.w._ | 1 s ^ o e.r.O C O ", -"s t.@ y.u.- i.+ + ` @ @ & : O + " +" . X o O + @ # $ % & * = - ; : ", +". > , < 1 2 3 4 5 6 7 8 9 0 q w ", +"e r t y u i p a s d f g h j k l ", +"z x y c v b n m M N B V C Z A S ", +"D F G H J K L P I U Y T R E W Q ", +"! ~ ^ / ( ) _ ` ' ] [ { } | ...", +"X.o.O.+.@.#.$.%.&.*.=.-.;.:.>.,.", +"<.1.2.3.4.5.6.7.v 8.9.0.q.w.e.r.", +"t.y.u.i.p.a.s.d.f.g.h.j.k.l.z.x.", +"c.v.b.n.m.M.N.B.V.C.Z.A.S.D.F.G.", +"H.J.K.L.P.I.U.Y.T.R.E.W.Q.!.~.^.", +"/.(.)._.`.'.].[.{.}.1.|. X.XXXoX", +"OX+X@X#X$X%X&X*X=X-X;X:X>X,X c #C4C2BE", -", c #B7B6B3", -"< c #C9C7C3", -"1 c #C5C3BF", -"2 c #C5C4C0", -"3 c #B2B1AE", -"4 c #CAC9C4", -"5 c #D3D1CC", -"6 c #BAB9B6", -"7 c #BBBAB6", -"8 c #C8C6C2", -"9 c #CBC6C5", -"0 c #CEC7C8", -"q c #C8C5C2", -"w c #C5C4BF", -"e c #B0AFAC", -"r c #CFCEC9", -"t c #DCDAD5", -"y c #D8D6D1", -"u c #D9D7D1", -"i c #D8D6D0", -"p c #DDDBD6", -"a c #E6E4DE", -"s c #DAD8D3", -"d c #D2D0CB", -"f c #BCBBB7", -"g c #CECCC7", -"h c #DBD9D4", -"j c #DAD7D3", -"k c #C2CEBC", -"l c #B4C8AE", -"z c #CFD3C8", -"x c #DBD7D3", -"c c #D7D5D0", -"v c #DDDAD5", -"b c #BBBAB7", -"n c #CECCC8", -"m c #D3D2CD", -"M c #D9D6D1", -"N c #CCCBC6", -"B c #878682", -"V c #B9B8B3", -"C c #E0DED8", -"Z c #CAC8C4", -"A c #D4D4CD", -"S c #E2D8DA", -"D c #7DB079", -"F c #0D830C", -"G c #007900", -"H c #91B78C", -"J c #E2D8DB", -"K c #D1D0CA", -"L c #B9B8B4", -"P c #D2D0CC", -"I c #898885", -"U c gray12", -"Y c #BDBBB6", -"T c #E5E2DD", -"R c #BAB8B5", -"E c #CBC9C4", -"W c #D8D4D1", -"Q c #BDCAB7", -"! c #A2BF9D", -"~ c #007B00", -"^ c #90B78B", -"/ c #E3D9DC", -"( c #D1D1CA", -") c #B9B8B5", -"_ c #BDBBB8", -"` c #C7C5C1", -"' c #ECEAE4", -"] c #8C8B88", -"[ c #272726", -"{ c #C1C0BB", -"} c #D2D2CB", -"| c #C5CCBE", -" . c #007A00", -".. c #90B88B", -"X. c #E3D9DB", -"o. c #D0CEC9", -"O. c #F4F2EC", -"+. c #656462", -"@. c #373635", -"#. c #C6C4C0", -"$. c #DAD5D3", -"%. c #BDC9B7", -"&. c #EBE9E3", -"*. c #9D9C98", -"=. c #252524", -"-. c #B3B1AD", -";. c #C2C0BC", -":. c #D3D2CC", -">. c #DDD6D6", -",. c #C2CCBC", -"<. c #93B98F", -"1. c #E6DADF", -"2. c #D1D0CB", -"3. c #989693", -"4. c #1B1B1B", -"5. c #AEADA9", -"6. c #E8E5E0", -"7. c #E3D8DB", -"8. c #7AAF76", -"9. c #0A820A", -"0. c #047D04", -"q. c #088008", -"w. c #519E4E", -"e. c #DED6D7", -"r. c #D6D6CF", -"t. c #BCBAB7", -"y. c #747371", -"u. c #AAA8A4", -"i. c #E3E1DC", -"p. c #CAC8C3", -"a. c #D8D3D1", -"s. c #BAC8B4", -"d. c #9CBC97", -"f. c #AAC1A4", -"g. c #9FBD9A", -"h. c #AEC3A8", -"j. c #D6D2CF", -"k. c #DEDCD6", -"l. c #D8D7D1", -"z. c #DFDAD8", -"x. c #E6DCDE", -"c. c #E3DBDB", -"v. c #E5DCDD", -"b. c #E2DBDA", -"n. c #DEDBD6", -"m. c #AFAEAB", -"M. c #B4B3B0", -"N. c #BFBDBA", -"B. c #BABAB5", -"V. c #BABAB6", -"C. c #BBBBB6", -"Z. c #BEBDB9", -"A. c #C9C8C3", -"S. c #CCCAC6", -"D. c #CDCCC7", -"F. c #D6D4CE", -"G. c #B9BAB4", -"H. c #CBC9C5", -"J. c #BAB9B5", -"K. c #BFBDB9", -"L. c #D3CCCD", -"P. c #D7CED1", -"I. c #CFCBC9", -"U. c #CDCBC7", -"Y. c #D6D4D0", -"T. c #CFCDC8", -"R. c #D5D5CE", -"E. c #B0C6AA", -"W. c #9BBD95", -"Q. c #C0CCBA", -"!. c #DCD7D4", -"~. c #ADABA7", -"^. c #A19F9C", -"/. c #E1D7DA", -"(. c #8FB78A", -"). c #128512", -"_. c #007500", -"`. c #77AB73", -"'. c #E5D9DD", -"]. c #D0D0C9", -"[. c #D1CFCB", -"{. c #E0DDD8", -"}. c #A3A29E", -"|. c black", -" X c gray4", -".X c #D6D3CF", -"XX c #C9CEC3", -"oX c #C2CBBC", -"OX c #068006", -"+X c #74AC70", -"@X c #E6DADE", -"#X c #D0D1CA", -"$X c #D2D1CC", -"%X c #2F2F2E", -"&X c #0C0B0B", -"*X c #C5C3BE", -"=X c #DBD5D3", -"-X c #017E01", -";X c #73AC6F", -":X c #E5DADE", -">X c #E4E2DD", -",X c #605F5C", -" c #007E00", +", c #007F00", +"< c #017F01", +"1 c #047E04", +"2 c #484848", +"3 c gray32", +"4 c #646464", +"5 c #6F6F6F", +"6 c #717171", +"7 c #797979", +"8 c gray48", +"9 c #078107", +"0 c #088208", +"q c #0A830A", +"w c #2D912D", +"e c #469B46", +"r c #61A661", +"t c #67A867", +"y c #69A969", +"u c #6FAC6F", +"i c #72AB72", +"p c #71AD71", +"a c #74AE74", +"s c #79B079", +"d c #7DB27D", +"f c #838383", +"g c gray52", +"h c gray54", +"j c gray57", +"k c gray60", +"l c #87B687", +"z c #8CB78C", +"x c #8CB88C", +"c c #8EB98E", +"v c #94BB94", +"b c #9BBF9B", +"n c #A0A0A0", +"m c gray64", +"M c gray66", +"N c #AAAAAA", +"B c #AEAEAE", +"V c #AFAFAF", +"C c #A0BFA0", +"Z c gray69", +"A c #B1B1B1", +"S c #B2B2B2", +"D c gray70", +"F c #B4B4B4", +"G c #B7B7B7", +"H c gray72", +"J c #B8B9B8", +"K c #B9B9B9", +"L c #B9BBB9", +"P c gray73", +"I c #BABBBA", +"U c #BBBBBB", +"Y c #BABCBA", +"T c #BBBCBB", +"R c #BCBCBC", +"E c #BCBDBC", +"W c gray74", +"Q c gray", +"! c gray75", +"~ c #A1C0A1", +"^ c #AAC3AA", +"/ c #A9C4A9", +"( c #AAC4AA", +") c #ABC6AB", +"_ c #AFC5AF", +"` c #B2C7B2", +"' c #B5C8B5", +"] c #B5CAB5", +"[ c #B6C9B6", +"{ c #BFC0BF", +"} c #B8C9B8", +"| c #BACABA", +" . c #BDCBBD", +".. c #BECBBE", +"X. c #BFCEBF", +"o. c #C0C0C0", +"O. c #C1C1C1", +"+. c gray76", +"@. c gray77", +"#. c #C5C5C5", +"$. c #C6C6C6", +"%. c gray78", +"&. c #C6CFC6", +"*. c #C8C6C8", +"=. c #C8C8C8", +"-. c gray79", +";. c #CACACA", +":. c #CBCBCB", +">. c #C9CFC9", +",. c #CCC8CC", +"<. c #CCCBCC", +"1. c #CEC9CE", +"2. c gray80", +"3. c #CDCDCD", +"4. c #CECECE", +"5. c gray81", +"6. c #C8D0C8", +"7. c #C9D0C9", +"8. c #CDD2CD", +"9. c #CED2CE", +"0. c #CED4CE", +"q. c #D0CDD0", +"w. c #D4CED4", +"e. c #D0D0D0", +"r. c gray82", +"t. c #D0D2D0", +"y. c #D0D3D0", +"u. c #D1D2D1", +"i. c #D1D3D1", +"p. c #D2D2D2", +"a. c #D2D3D2", +"s. c LightGray", +"d. c #D0D5D0", +"f. c #D2D4D2", +"g. c #D3D4D3", +"h. c #D7D0D7", +"j. c gray83", +"k. c #D5D4D5", +"l. c #D5D5D5", +"z. c #D5D6D5", +"x. c #D5D7D5", +"c. c #D6D4D6", +"v. c #D6D5D6", +"b. c #D7D5D7", +"n. c gray84", +"m. c #D6D7D6", +"M. c #D7D7D7", +"N. c #D7D8D7", +"B. c #D8D6D8", +"V. c #D8D7D8", +"C. c #D8D8D8", +"Z. c #D8D9D8", +"A. c #D9D8D9", +"S. c gray85", +"D. c #DBD9DB", +"F. c #DADADA", +"G. c gray86", +"H. c #DCD8DC", +"J. c #DCD9DC", +"K. c #DDD8DD", +"L. c #DCDADC", +"P. c #DFD8DF", +"I. c #DEDBDE", +"U. c #DFDBDF", +"Y. c gainsboro", +"T. c #DDDDDD", +"R. c gray87", +"E. c #DFDFDF", +"W. c #E1D9E1", +"Q. c #E1DAE1", +"!. c #E2DAE2", +"~. c #E3DBE3", +"^. c #E0DCE0", +"/. c #E2DDE2", +"(. c #E3DDE3", +"). c #E4DBE4", +"_. c #E5DBE5", +"`. c #E5DCE5", +"'. c #E5DEE5", +"]. c #EBDEEB", +"[. c gray88", +"{. c #E2E2E2", +"}. c gray89", +"|. c #E4E4E4", +" X c #E6E6E6", +".X c #E7E7E7", +"XX c gray91", +"oX c #E9E9E9", +"OX c gray92", +"+X c gray93", +"@X c #F4F4F4", /* pixels */ -" . X o o o o o o o o X O + X o o o o o o o o X O ", -". @ # $ $ $ $ $ $ $ $ % & * . = - $ $ % ; : % $ $ # > ", -"X # , < 1 2 2 2 2 2 1 < 3 4 5 * X 6 7 8 1 2 9 0 q w 1 8 e r + ", -"o $ < t y u u u u u i p - < a s d X f g h y j k l z x c v b n c ", -"o $ 1 y * * * * * * m M f N B V C . f Z A S D F G H J K y L = c ", -"o $ 2 u * * O 7 P I U Y T R E + W Q ! ~ ^ / ( u ) = c ", -"o $ 2 u * * O _ ` ' ] [ { % < y } S | ...X.( u ) = c ", -"o $ 2 u * * O _ Z o.O.+.@.#.< c m $.%. .../ ( u ) = c ", -"o $ 2 u * * O _ ` &.*.=.-.;.< i :.>.,. .<.1.( u ) = c ", -"o $ 2 u * * O 7 2.3.4.5.6.R E A 7.8.9.0.q.w.e.r.) = c ", -"o $ 1 i m * * * * * 5 y t.n y.u.i. _ p.. a.s.d.f.g.h.j.c L = c ", -"X % < p u O O O O O y k.- 8 a t @ X t.n t l.z.x.c.v.b.y n.7 g c ", -"O & 3 - f _ _ _ _ _ f - m.N * 5 * O _ M.N._ f B.7 V.C._ Z.m.@ . ", -" * Z A.Z p.p.p.p.p.Z < S. 5 Z A.p.p.p.p.p.p.Z < D.F. ", -" i y y y y y y y y y c F.y y y y y y y y y y c ", -" ", -" * * * * * * * * * * * * * * * * * * * * * * ", -" . X O O O O O O O O O O c X O O O O O O O O O O ", -"+ = 6 f f f B.G.7 f f t._ 5 F. c H.J._ f f f R R t.f 7 K. ", -"X - 7 n Z H.L.P.I.p.Z n M.Z y * X J.# U.Z 4 A.* Y.H.A.g 3 T.c ", -"o $ 8 h c R.E.W.Q.!.. t N.A.y * O _ U.s c . t ~.^.* y h 7 n c ", -"o $ 1 R./.(.)._.`.'.].O _ p.y * O f Z c [.{.}.|. X1 y c L = c ", -"o $ 2 y .XXXoXOX+X@X#XO _ p.y * O f 4 c . $X%X=.&X*Xy i ) = c ", -"o $ 2 u :.=X:.-X;X:X#XO _ p.y * O f 4 >X,X e b L L hXhXhXJXL 7 m.D.c * O Z.3 7 L ) ) KXhX) L J.m.d . ", -" LXn = = = = = = = g @ F. T.n = = = = = = = g d . ", -" + c c c c c c c c c . c c c c c c c c c c . " +"l.l.G.G.G.G.G.G.G.G.G.G.G.r.l.l.l.l.G.G.G.G.G.G.G.G.G.G.G.G.f.l.", +"l.r.o.o.o.o.o.! o.o.! ! o.l.l.l.l.l.2.! o.o.! ! ! ! o.o.{ @.l.l.", +"G.o.G -.#.#.#.#.#.#.#.-.D -.l.r.r.G.U U -.#.*.*.,.#.#.#.=.Z 2.G.", +"G.o.-.Y.G.l.G.G.G.G.l.G.! -.XXG.r.G.! 2.Y.l.G.X.] 0.P.N.Y.! 2.l.", +"G.o.#.l.r.r.l.l.l.l.r.G.! -.f U Y.G.! -.l.P.t 9 - z ~.r.G.G 2.G.", +"G.o.#.G.l.l.l.l.l.l.l.G.U r.f + ! }.U 2.l.l.| v - x ~.f.N.U 2.l.", +"G.o.#.G.l.l.l.l.l.l.l.l.! #.@Xh @ o.o.-.G.f.~.] - x ~.r.G.U 2.G.", +"G.o.#.G.r.l.l.l.l.l.r.G.! -.r.@X4 & #.-.l.l.P.` - x _.f.l.U 2.l.", +"G.o.#.G.r.l.l.l.l.l.l.G.U #.+Xk @ D o.-.N.r.B./ - x H.r.G.U 2.l.", +"G.! o.G.l.l.l.l.l.l.r.G.! r.k O M XXY -.l.~.y , , , e H.l.U 2.N.", +"G.o.#.G.r.l.l.r.r.r.r.G.U 2.6 M }.l.U -.N.l.| ~ ^ ~ _ k.l.U 9.B.", +"G.! -.Y.G.l.G.G.G.G.G.Y.! -. XY.r.G.! 2.G.G.Y.`.`.`./.G.Y.! 2.B.", +"G.o.D o.! U ! ! ! ! U ! B 2.l.l.k.G.U D o.! ! U Y Y U ! ! B r.l.", +"l.r.-.-.-.-.-.-.-.-.-.-.2.l.l.l.l.l.r.-.-.-.-.-.-.-.-.-.-.2.l.l.", +"l.l.G.l.G.l.G.l.l.G.l.G.l.l.l.l.l.l.l.G.G.l.l.G.G.G.G.l.l.G.l.l.", +"l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.r.l.l.l.l.l.l.", +"l.l.l.r.l.l.k.k.l.f.l.f.l.l.l.l.l.l.l.l.r.l.l.r.r.l.l.l.r.r.l.l.", +"l.l.G.G.G.l.G.B.G.B.G.B.G.l.l.l.l.l.l.G.G.l.G.G.G.G.l.G.G.G.l.l.", +"l.2.U R U U U U U U ! ! Y r.l.l.l.l.-.U ! ! U ! U U U ! U ! l.l.", +"G.o.! 2.-.-.w.k.q.-.-.2.G -.l.l.l.G.U o.2.-.-.-.r.l.-.-.2.G 2.N.", +"G.o.-.G.B.f./ b X.G.l.P.! -.l.l.l.G.! 2.G.l.l.Y.D k r.G.G.U 2.G.", +"G.o.#.l.~.s q - i _.9.G.! -.G.l.l.l.! -.l.r.}.m . ! l.l.U 2.l.", +"G.o.#.G.l.7.' , p `.f.N.U -.B.l.l.G.U -.G.l.2.% & . ! G.l.U 2.G.", +"G.o.o.G.r.H.&., u _.9.G.! -.G.l.r.G.U -.l.}.3 5 j 2.G.G.U 2.l.", +"G.o.#.G.r.G.>., a ].r.G.Y -.G.f.l.l.! -.Y.D . 8 2 8 l.G.U 2.l.", +"G.o.@.G.l.9./ - r 9.r.G.! -.B.l.l.G.U -.Y.D $ # o & 2.G.H 2.l.", +"G.o.#.N.~.d , 0 , w l.G.Y -.B.l.r.G.U -.G.l.l.XX8 #.G.l.U r.G.", +"G.o.#.N.k.>.| .| X.r.l.! -.G.f.r.G.! -.l.k.l.l.-.U r.l.B.U 2.l.", +"G.{ -.Y.l.G.P.P.P.Y.N.Y.! -.G.l.l.l.Y 2.G.l.G.l.Y.Y.G.G.Y.U 2.N.", +"G.@.Z ! U U J J U U U U B 2.l.l.l.G.! D U U U G U G H U U Z r.l.", +"r.l.2.2.2.2.2.9.2.2.2.2.r.l.l.l.l.l.l.q.2.r.2.2.2.2.2.2.9.r.l.l.", +"l.l.G.l.G.l.G.l.G.l.G.N.l.l.l.l.l.l.l.N.l.l.G.G.l.G.N.B.B.l.l.l." }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 183 2 ", -" c #D5D3CE", -". c #D7D5D0", -"X c #D8D6D1", -"o c #D6D4CE", -"O c #CECCC7", -"+ c #C9C7C3", -"@ c #CAC8C4", -"# c #C9C8C3", -"$ c #A0A09E", -"% c #B1B0AD", -"& c #AFAEAB", -"* c #AEAEAA", -"= c #E1DFD9", -"- c #D9D7D2", -"; c #DBD9D3", -": c #D4D2CD", -"> c #D9D8D2", -", c #DAD8D3", -"< c #DEDAD6", -"1 c #DEDAD7", -"2 c #DCD9D5", -"3 c #D2D1CC", -"4 c #D3D1CC", -"5 c #DBD5D4", -"6 c #CBCFC5", -"7 c #C7CDC0", -"8 c #CED0C7", -"9 c #D5D2CE", -"0 c #CBC9C5", -"q c #CAC8C3", -"w c #DDDBD6", -"e c #D3D2CC", -"r c #DFD7D8", -"t c #99BB93", -"y c #268D25", -"u c #0E840E", -"i c #007C00", -"p c #70AB6D", -"a c #E6DADE", -"s c #D1D1CA", -"d c #ADACA9", -"f c #D2D0CC", -"g c #A9A7A3", -"h c #060606", -"j c #82817E", -"k c #E4E2DD", -"l c #D2D0CB", -"z c #D8D5D0", -"x c #D1D2CA", -"c c #6BA968", -"v c #278E26", -"b c #369334", -"n c #007300", -"m c #6CA969", -"M c #E6DADF", -"N c #C8C6C2", -"B c #E1DFDA", -"V c #858481", -"C c black", -"Z c #83827F", -"A c #E4E2DC", -"S c #CED0C8", -"D c #EDDCE5", -"F c #77AD73", -"G c #007000", -"H c #6FAA6B", -"J c #D6D4CF", -"K c #E5E3DD", -"L c #8A8985", -"P c #807F7C", -"I c #E8E6E0", -"U c #C9C7C2", -"Y c #D2D2CB", -"T c #6DA969", -"R c #6EAA6B", -"E c #D8D6D0", -"W c #E3E1DC", -"Q c #8C8B88", -"! c #040404", -"~ c #7F7E7B", -"^ c #CFCDC9", -"/ c #AEADAA", -"( c gray9", -") c #373635", -"_ c #CECCC8", -"` c #CFD1C8", -"' c #E2D8DA", -"] c #CDCCC7", -"[ c #232222", -"{ c #2B2B2A", -"} c #CCCBC6", -"| c #DAD5D3", -" . c #FCE2F3", -".. c #78AE74", -"X. c #006F00", -"o. c #C7C6C1", -"O. c #E0DED9", -"+. c #CFCEC9", -"@. c #232322", -"#. c #282827", -"$. c #D1D0CB", -"%. c #DED7D7", -"&. c #9CBC97", -"*. c #67A763", -"=. c #389436", -"-. c #007600", -";. c #D2D1CB", -":. c #C3C1BC", -">. c #1B1B1A", -",. c #292928", -"<. c #6BA767", -"1. c #007400", -"2. c #098109", -"3. c #0D840D", -"4. c #D0D0C9", -"5. c #ADACAA", -"6. c #D1CFCB", -"7. c #ADACA8", -"8. c #61605E", -"9. c #DBD9D4", -"0. c #D6D3CF", -"q. c #CDD0C7", -"w. c #CCCFC5", -"e. c #C9CEC2", -"r. c #C8C7C2", -"t. c #DFDDD7", -"y. c #E8E6E1", -"u. c #D3D2CD", -"i. c #D7D3D0", -"p. c #D7D5CF", -"a. c #D1CFCA", -"s. c #DAD8D2", -"d. c #A09F9D", -"f. c #DBD8D3", -"g. c #DEDBD6", -"h. c #DEDCD7", -"j. c #DCDAD5", -"k. c #D7D4D0", -"l. c #C7C5C0", -"z. c #908F8B", -"x. c #0A0909", -"c. c #716F6D", -"v. c #E6E3DE", -"b. c #1D1D1C", -"n. c #6B6A67", -"m. c #E6E4DF", -"M. c #555452", -"N. c gray4", -"B. c #41403F", -"V. c #6D6C69", -"C. c #A09E9B", -"Z. c #757471", -"A. c #7C7B78", -"S. c #6E6D6A", -"D. c #212120", -"F. c #73726F", -"G. c #706F6D", -"H. c #EAE8E2", -"J. c #D0CECA", -"K. c #92918D", -"L. c #686764", -"P. c #D0CEC9", -"I. c #6A6967", -"U. c gray2", -"Y. c #020202", -"T. c #0B0B0B", -"R. c #DEDCD6", -"E. c #A19F9B", -"W. c #62615E", -"Q. c #666563", -"!. c #706F6C", -"~. c #363534", -"^. c #343332", -"/. c #767472", -"(. c #CDCBC6", -"). c #E3E1DB", -"_. c #F9F7F1", -"`. c #7D7C79", -"'. c #7E7D7A", -"]. c #F8F6F0", -"[. c #D3D1CD", -"{. c #CDCBC7", -"}. c gray100", +"48 48 166 2 ", +" c black", +". c #020202", +"X c gray1", +"o c gray4", +"O c #101010", +"+ c gray9", +"@ c gray11", +"# c #1D1D1D", +"$ c #1E1E1E", +"% c gray14", +"& c #252525", +"* c gray15", +"= c #2D2D2D", +"- c gray18", +"; c #323232", +": c #007200", +"> c #007300", +", c #007500", +"< c #007700", +"1 c #007800", +"2 c #007900", +"3 c #007E00", +"4 c #494949", +"5 c #4B4B4B", +"6 c #4C4C4C", +"7 c gray30", +"8 c #5D5D5D", +"9 c gray37", +"0 c #5F5F5F", +"q c #606060", +"w c #626262", +"e c gray39", +"r c #656565", +"t c #676767", +"y c #6A6A6A", +"u c gray42", +"i c #6D6D6D", +"p c gray43", +"a c #717171", +"s c #747474", +"d c gray46", +"f c gray50", +"g c #098209", +"h c #098309", +"j c #0D840D", +"k c #1C8B1C", +"l c #248D24", +"z c #278F27", +"x c #288E28", +"c c #298F29", +"v c #4B9D4B", +"b c #4B9E4B", +"n c #52A052", +"m c #59A259", +"M c #5AA45A", +"N c #5BA45B", +"B c #60A660", +"V c #61A661", +"C c #66A866", +"Z c #67A967", +"A c #68A968", +"S c #69A969", +"D c #6BAA6B", +"F c #6EAB6E", +"G c #7FB27F", +"H c #808080", +"J c gray51", +"K c #838383", +"L c #868686", +"P c gray53", +"I c gray54", +"U c #909090", +"Y c gray59", +"T c gray61", +"R c #9F9F9F", +"E c #86B586", +"W c #8EB88E", +"Q c #A0A0A0", +"! c #A4A4A4", +"~ c #A7A7A7", +"^ c gray68", +"/ c #AEAEAE", +"( c #AEAFAE", +") c #AFAFAF", +"_ c #B1B1B1", +"` c gray74", +"' c gray", +"] c #C1C1C1", +"[ c gray76", +"{ c #C6C6C6", +"} c gray78", +"| c #C7CFC7", +" . c #C8C8C8", +".. c gray79", +"X. c #CACACA", +"o. c #CBCBCB", +"O. c gray80", +"+. c #CDCDCD", +"@. c #CECECE", +"#. c gray81", +"$. c #C9D0C9", +"%. c #CAD0CA", +"&. c #CBD1CB", +"*. c #CCD2CC", +"=. c #CED1CE", +"-. c #CFD3CF", +";. c #D0D0D0", +":. c gray82", +">. c #D0D2D0", +",. c #D0D3D0", +"<. c #D1D3D1", +"1. c #D2D2D2", +"2. c #D3D2D3", +"3. c LightGray", +"4. c #D1D4D1", +"5. c #D2D4D2", +"6. c #D3D4D3", +"7. c gray83", +"8. c #D4D5D4", +"9. c #D5D4D5", +"0. c #D5D5D5", +"q. c #D6D4D6", +"w. c #D6D5D6", +"e. c #D7D5D7", +"r. c gray84", +"t. c #D7D6D7", +"y. c #D7D7D7", +"u. c #D9D7D9", +"i. c #DBD6DB", +"p. c #D8D8D8", +"a. c gray85", +"s. c #D9DAD9", +"d. c #DBD8DB", +"f. c #DADADA", +"g. c #DADBDA", +"h. c gray86", +"j. c #DCD8DC", +"k. c #DDD8DD", +"l. c #DCDBDC", +"z. c #DED9DE", +"x. c #DFD9DF", +"c. c gainsboro", +"v. c #DDDDDD", +"b. c #DEDCDE", +"n. c gray87", +"m. c #DFDFDF", +"M. c #E0D9E0", +"N. c #E1DAE1", +"B. c #E2DAE2", +"V. c #E4DBE4", +"C. c #E5DBE5", +"Z. c #E5DCE5", +"A. c #EDDFED", +"S. c gray88", +"D. c #E1E1E1", +"F. c #E2E2E2", +"G. c gray89", +"H. c #E4E4E4", +"J. c gray90", +"K. c gray91", +"L. c #E9E9E9", +"P. c #EAEAEA", +"I. c gray92", +"U. c #F1E1F1", +"Y. c gray95", +"T. c white", /* pixels */ -" ", -" ", -" . X X X X X X X X X X X X X X . . X X X X X X X X X X X X X X . ", -" o O + @ # # # # # # # # # # @ + O o o O + @ # # # # # # # # # # @ + O o ", -" . O $ % & & & & & & & & & & & & % $ O . . O $ % & & & & & * * & & & & & % $ O . ", -" X + % = - ; ; ; ; ; ; ; ; ; ; - = % + X : X + % = - ; ; > , < 1 2 , ; ; - = % + X ", -" X @ & - 3 : : : : : : : : : : 3 - & # , X 4 X @ & - 3 : 3 5 5 6 7 8 9 : : 3 - & @ X ", -" X # & ; : : ; & 0 O q w : : X # & ; : e r t y u i p a s : ; & # X ", -" X # & ; : : ; d f g h j k l z q & ; : x a c v b n m M s : ; & # X ", -" X # & ; : : ; & N B V C Z A + & ; : S D F G H M s : ; & # X ", -" X # & ; : : ; & # J K L C P I U & ; : Y a T G R M s : ; & # X ", -" X # & ; : : ; & q E l W Q ! ~ ^ / , : s a R G R M s : ; & # X ", -" X # & ; : : ; & # X l , 3 ( ) _ & , : ` ' m G m ' ` : ; & # X ", -" X # & ; : : ; & @ ; ] [ { 4 } / ; : : | ...X... .| : : ; & # X ", -" X # & ; : : ; & o.O.+.@.#.$.w N & ; : e %.&.*.=.-.=.*.&.%.;.; & # X ", -" X # & ; : : ; / O :.>.,.f - @ & ; : s M <.1.2.3.2.1.<.M 4.; & # X ", -" X # & ; : : ; 5.6.7.8.@ 9.l X # & ; : 0.s q.w.e.w.q.s 0.: ; & # X ", -" X @ & - 3 : : : : : : : : : : 3 - & r.t.y.. 4 X @ & - 3 : u.9 i.i.i.i.i.9 u.4 - & @ X ", -" X + % = - ; ; ; ; ; ; ; ; ; ; - = % + p.a.: X + % = - ; ; , s.s.s.s.s., ; - = % + X ", -" . O d.% & & & & & & & & & & & & % d.O . . O d.% & & & & & & & & & & & & % d.O . ", -" o O + @ # # # # # # # # # # @ + O o o O + @ # # # # # # # # # # @ + O o ", -" . X X X X X X X X X X X X X X . . X X X X X X X X X X X X X X . ", -" ", -" ", -" ", -" ", -" . X X X X X X X X X X X X X X . . X X X X X X X X X X X X X X . ", -" o O + @ # # # # # # # # # # @ + O o o O + @ # # # # # # # # # # @ + O o ", -" . O $ % & & & & & * * & & & & & % $ O . . O $ % & & & & & & / / & & & & % $ O . ", -" X + % = - ; ; > , < 1 2 , ; ; - = % + X X + % = - ; ; ; f.s.g.h.j., ; - = % + X ", -" X @ & - 3 : 3 5 5 6 7 8 9 : : 3 - & @ X X @ & - 3 : : : 4 k.@ l.O : 3 - & @ X ", -" X # & ; : e r t y u i p a s : ; & # X X # & ; : l B z.x.C c.v.a.: ; & # X ", -" X # & ; : x a c v b n m M s : ; & # X X # & ; : : - l.b.C C n.m.a.: ; & # X ", -" X # & ; : S D F G H M s : ; & # X X # & ; : l B M.N.B.C V.m.a.: ; & # X ", -" X # & ; : Y a T G R M s : ; & # X X # & ; : l B C.C Z.A.C S.v.a.: ; & # X ", -" X # & ; : s a R G R M s : ; & # X X # & ; 4 . _ D.>.k F.C G.H.a.: ; & # X ", -" X # & ; : ` ' m G m ' ` : ; & # X X # & ; J.k A.C K.H.L.C n.t.a.: ; & # X ", -" X # & ; : : | ...X... .| : : ; & # X X # & ; P.m.I.C U.C C Y.C T.q . s.& # X ", -" X # & ; : e %.&.*.=.-.=.*.&.%.;.; & # X X # & ; l R.E.W.Q.!.~.C ^./.(. , & # X ", -" X # & ; : s M <.1.2.3.2.1.<.M 4.; & # X X # & ; : : R.I )._.`.C '.].l [.; & # X ", -" X # & ; : 0.s q.w.e.w.q.s 0.: ; & # X X # & ; : 4 a.a.l ] N {.l : ; & # X ", -" X @ & - 3 : u.9 i.i.i.i.i.9 u.4 - & @ X X @ & - 3 : : : : [. z [.: 3 - & @ X ", -" X + % = - ; ; , s.s.s.s.s., ; - = % + X X + % = - ; ; ; ; ; , s., ; ; - = % + X ", -" . O d.% & & & & & & & & & & & & % d.O . . O d.% & & & & & & & & & & & & % d.O . ", -" o O + @ # # # # # # # # # # @ + O o o O + @ # # # # # # # # # # @ + O o ", -" . X X X X X X X X X X X X X X . . X X X X X X X X X X X X X X . ", -" ", -" " +"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.", +"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.r.r.0.0.0.0.r.r.0.0.0.0.0.0.0.0.", +"0.0.0.0.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.0.0.0.0.0.0.0.0.0.p.p.p.p.r.p.p.r.r.r.p.r.p.p.r.r.0.0.0.0.", +"0.0.0.0.@.............................@.0.0.0.0.0.0.0.0.@.........X.X.X.X.X.X.X...X...=.0.0.0.0.", +"0.0.p.;.R _ ) ) _ _ ) ) ) ) ) _ _ _ _ R @.0.0.0.0.0.p.;.Q _ _ ) ) ) ) ) ) _ ) _ ) ) _ R @.r.0.0.", +"0.0.p..._ D.p.p.p.v.p.v.p.v.p.v.p.p.D._ ..p.0.0.0.0.p..._ D.p.p.v.p.p.N.v.v.p.p.v.p.D._ ..p.0.0.", +"0.0.p..._ p.0.0.;.0.0.0.0.0.0.;.0.;.p.) ..v.p.;.0.0.p..._ p.0.0.5.u.0.X.| =.0.0.0.;.p.) ..p.0.0.", +"0.0.0..._ p.0.0.0.0.0.0.0.0.0.0.0.0.v._ @.....v.;.0.0...) v.0.;.p.E k j 3 D N.5.0.5.v._ ..p.0.0.", +"0.0.p...) p.0.0.0.0.0.0.0.0.0.0.0.0.p.) 0.Q J J.;.p..._ v.0.5.l.n z x , Z V.5.0.;.g.) ..p.0.0.", +"0.0.p..._ v.0.0.0.0.0.0.0.0.0.0.0.;.v.) ..D.L L J.0...) p.0.0.0.-.V.V : D Z.5.0.0.v.) ..p.0.0.", +"0.0.p...) p.0.0.0.0.0.0.0.0.0.0.0.0.v.) ..0.J.L J L..._ v.;.0.0.0.N.M : C V.5.0.0.v.) ..p.0.0.", +"0.0.p..._ p.0.0.0.0.0.0.0.0.0.0.0.0.p._ ..p.;.J.L f @.) p.0.0.0.5.N.M : D V.;.0.0.p._ ..p.0.0.", +"0.0.p...) p.0.0.0.0.0.0.0.0.0.0.0.;.v._ ..r.5.p.;.+ ; @.) p.0.0.0.;.N.M , D N.;.0.5.p._ ..p.0.0.", +"0.0.p..._ v.0.0.0.0.0.0.0.0.0.0.0.0.p.) X.r.g.=.* * @.@.) p.0.0.0.u.U.N : F U.0.0.0.l.) ..p.0.0.", +"0.0.p...) v.0.0.0.0.0.0.0.0.0.0.0.0.v.) } N.;.* * @.v...) v.0.5.p.E b z 2 x b W N.5.p._ ..p.0.0.", +"0.0.p...) p.;.0.0.0.0.0.0.0.0.0.0.0.p.) @.] @ * @.p.0...) p.0.5.N.m , h j h 2 Z Z.;.p._ ..p.0.0.", +"0.0.p..._ v.0.0.0.0.0.0.0.0.0.0.0.0.p.) ;.~ q ..v.;.p..._ p.0.0.0.;.=.=.&.&.=.;.0.0.v.) ..p.0.0.", +"0.0.p...) p.;.0.0.;.0.0.;.0.0.0.0.;.p._ ..D.L.p.0.0.p..._ p.;.0.0.0.0.0.0.0.u.0.5.;.p.) ..p.0.0.", +"0.0.p..._ D.p.p.v.p.p.v.v.p.p.v.v.p.D._ ..0.;.0.0.0.p..._ D.p.v.p.v.p.p.p.p.p.p.v.p.D._ ..p.0.0.", +"0.0.0.@.R _ _ _ ) _ ) ) _ _ ) ) ) ) _ R @.p.0.0.0.0.0.@.R _ ) _ ) _ _ _ _ _ _ _ ) ) _ Q @.p.0.0.", +"0.0.0.0.@.............................@.0.0.0.0.0.0.0.0.@.............................@.0.0.0.0.", +"0.0.0.0.0.p.p.p.p.p.p.p.p.p.p.p.p.p.p.0.0.0.0.0.0.0.0.0.0.p.p.p.p.p.p.p.p.p.p.p.p.p.p.r.0.0.0.0.", +"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.", +"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.", +"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.", +"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.", +"0.0.0.0.0.p.p.p.p.p.p.p.p.p.p.p.p.p.p.0.0.0.0.0.0.0.0.0.0.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.0.0.0.0.", +"0.0.0.0.@...@.........................@.0.0.0.0.0.0.0.0.@...@.........................@.0.0.0.0.", +"0.0.p.@.Q _ ) ) ) ) ) _ ) _ ) _ _ ) _ R ;.p.0.0.0.0.0.@.Q _ ) ) _ ) ) _ ) ) ) ) _ _ _ Q @.0.0.0.", +"0.0.p..._ D.p.p.v.p.p.v.v.v.p.p.v.p.D._ ..p.0.0.0.0.p..._ D.p.p.v.p.p.p.v.v.v.p.p.p.D._ ..p.0.0.", +"0.0.p..._ p.0.0.5.u.0.X.| =.0.0.0.;.p._ ..p.0.0.0.0.p..._ p.0.0.0.0.0.0...} @.0.0.;.p._ ..p.0.0.", +"0.0.p...) p.0.0.p.E k j 3 D Z.5.0.0.p.) ..p.0.0.0.0.p..._ p.0.0.0.;.D.Y o y D.0.0.p.) ..p.0.0.", +"0.0.p..._ p.0.5.l.n z x , C V.;.0.0.v.) ..p.0.0.0.0.p...) p.0.0.0.p.} $ q D.;.0.v._ ..p.0.0.", +"0.0.p..._ p.0.0.0.;.Z.V : D Z.5.0.;.p._ ..p.0.0.0.0.p..._ v.0.0.;.D.4 $ 6 t D.;.0.p.) ..p.0.0.", +"0.0.p...) l.0.0.0.0.N.M : Z Z.5.0.0.p.) ..p.0.0.0.0.p...) p.0.0.J.U R y q v.0.0.v.) ..p.0.0.", +"0.0.p..._ p.5.0.0.5.N.M : D N.5.0.0.v.) ..p.0.0.0.0.p...) v.;.p.] o 8 T.t p Y.;.0.p._ ..p.0.0.", +"0.0.p...) p.0.0.u.;.l.M : Z N.5.0.0.p.) ..p.0.0.0.0.p...) l.;.J.d 0 d - - I 0.0.p.) ..p.0.0.", +"0.0.p..._ v.0.0.0.u.A.N : F U.0.0.0.v.) ..p.0.0.0.0.p..._ p.;.J.a X X - 0.0.p.) ..p.0.0.", +"0.0.p...) v.0.5.j.E b z 2 c b W l.5.p.) ..p.0.0.0.0.p..._ v.;.p.' R ! _ 6 6 ' ;.0.v.) ..p.0.0.", +"0.0.p...) p.0.;.N.m 2 h j h , Z Z.;.v._ ..p.0.0.0.0.p...) p.0.0.p.D.p.I.y p L.;.0.p.) ..p.0.0.", +"0.0.p..._ v.0.0.0.;.=.&.&.=.&.;.0.0.p._ ..p.0.0.0.0.p..._ v.0.0.0.;.0.;.@...@.0.0.0.v.) ..p.0.0.", +"0.0.p...) p.;.0.0.0.0.u.0.0.0.0.0.0.p._ ..p.0.0.0.0.p...) p.;.0.0.0.0.0.0.0.0.0.0.;.p.) ..p.0.0.", +"0.0.p..._ D.p.p.p.p.l.p.p.p.p.v.p.p.D._ ..r.0.0.0.0.p..._ D.p.p.p.v.p.v.p.p.p.v.v.p.D._ ..p.0.0.", +"0.0.0.@.R _ ) _ _ ) _ ) _ ) ) _ ) ) _ R @.u.0.0.0.0.0.@.R _ _ _ ) _ ) ) _ _ ) _ _ ) _ R @.0.0.0.", +"0.0.0.0.@.........................@...@.0.0.0.0.0.0.0.0.@.............................@.0.0.0.0.", +"0.0.0.0.p.p.p.p.p.p.p.p.p.p.p.p.p.p.r.p.0.0.0.0.0.0.0.0.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.0.0.0.0.", +"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.", +"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0." }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/unequal.sav sgt-puzzles-20160429.b31155b/icons/unequal.sav --- sgt-puzzles-20140928.r10274/icons/unequal.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/unequal.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,25 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :7:Unequal +PARAMS :3:4de +CPARAMS :3:4de +SEED :15:143029490219212 +DESC :37:0D,0,0L,0,0,0,0,0,0D,0U,0R,0,0,0,0,4, +AUXINFO :34:f51274dc41e0a39caa38942fc525ed0108 +NSTATES :2:16 +STATEPOS:1:6 +MOVE :6:R2,1,4 +MOVE :6:R1,2,4 +MOVE :6:R0,0,4 +MOVE :6:R2,3,1 +MOVE :6:R3,2,1 +MOVE :6:R0,2,3 +MOVE :6:R2,2,2 +MOVE :6:R0,3,2 +MOVE :6:R1,3,3 +MOVE :6:R0,1,1 +MOVE :6:R1,1,2 +MOVE :6:R3,1,3 +MOVE :6:R3,0,2 +MOVE :6:R2,0,3 +MOVE :6:R1,0,1 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unequal-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unequal-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unruly-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unruly-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unruly-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unruly-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unruly-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unruly-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unruly-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unruly-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unruly-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unruly-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unruly-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unruly-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unruly-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unruly-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unruly-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unruly-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unruly-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unruly-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unruly-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unruly-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unruly-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unruly-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unruly-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unruly-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unruly.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unruly.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/unruly-icon.c sgt-puzzles-20160429.b31155b/icons/unruly-icon.c --- sgt-puzzles-20140928.r10274/icons/unruly-icon.c 2014-09-29 00:33:49.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/unruly-icon.c 2016-04-29 00:31:44.000000000 +0000 @@ -1,736 +1,886 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 151 2 ", -" c #DBD9D4", -". c #D3D1CC", -"X c #D2D0CB", -"o c #D1CFCA", -"O c #CFCDC9", -"+ c #D0CEC9", -"@ c #CFCEC9", -"# c #CDCBC7", -"$ c #CCCBC6", -"% c #D0CFCA", -"& c #D2D1CC", -"* c #CCCAC6", -"= c #CFCDC8", -"- c #575656", -"; c #3F3F3F", -": c #656565", -"> c gray51", -", c #7C7B7B", -"< c #80807F", -"1 c #828281", -"2 c gray71", -"3 c #C5C5C4", -"4 c #666565", -"5 c #363535", -"6 c #797978", -"7 c #C8C8C7", -"8 c #B1B0B0", -"9 c #D2D0CC", -"0 c #3A3939", -"q c gray9", -"w c gray35", -"e c #8D8D8E", -"r c gray49", -"t c #777777", -"y c #7C7C7D", -"u c #D7D7D7", -"i c #EFEFEF", -"p c #606060", -"a c #191A1A", -"s c #767676", -"d c #E9E9E9", -"f c #C4C4C3", -"g c #CCCAC5", -"h c #848483", -"j c gray54", -"k c #6C6C6C", -"l c gray31", -"z c #6A6A6A", -"x c #AAAAAA", -"c c #9F9F9F", -"v c #797979", -"b c #4B4B4B", -"n c gray16", -"m c gray46", -"M c #D8D8D8", -"N c #B6B5B5", -"B c #CDCBC6", -"V c #F4F4F5", -"C c gray5", -"Z c #F1F1F1", -"A c gray83", -"S c #313131", -"D c gray15", -"F c #2F2F2F", -"G c #1D1D1D", -"H c gray94", -"J c #535353", -"K c #6F6F6F", -"L c #A7A7A7", -"P c gray60", -"I c #3E3E3E", -"U c #353535", -"Y c gray33", -"T c #5A5A5A", -"R c gray47", -"E c #AAAAAB", -"W c #9A9A99", -"Q c #CECCC8", -"! c #C2C1C1", -"~ c gray85", -"^ c #CDCDCD", -"/ c #EAEAEA", -"( c #1E1E1E", -") c gray18", -"_ c gray20", -"` c #282828", -"' c gray96", -"] c #888888", -"[ c #40403F", -"{ c #B7B6B6", -"} c #CBCBCB", -"| c gray74", -" . c LightGray", -".. c #9D9D9D", -"X. c #323232", -"o. c gray24", -"O. c gray61", -"+. c #DDDDDD", -"@. c #848484", -"#. c gray17", -"$. c #4C4C4B", -"%. c #4C4C4C", -"&. c gray38", -"*. c gray53", -"=. c #7B7B7B", -"-. c gray48", -";. c gray", -":. c gray56", -">. c gray50", -",. c #7C7C7C", -"<. c #444444", -"1. c #272727", -"2. c gray37", -"3. c #7E7E7E", -"4. c #D0D0D0", -"5. c gray88", -"6. c #929292", -"7. c #808080", -"8. c #494848", -"9. c #323333", -"0. c gray39", -"q. c gray73", -"w. c gray68", -"e. c #909090", -"r. c gray57", -"t. c #7B7B7C", -"y. c #7D7C7C", -"u. c #3C3C3B", -"i. c #232323", -"p. c gray12", -"a. c #5B5B5B", -"s. c #818181", -"d. c #777776", -"f. c #767777", -"g. c #646463", -"h. c #515151", -"j. c #626262", -"k. c #7D7D7C", -"l. c #C7C6C6", -"z. c #EFEFF0", -"x. c #1B1B1B", -"c. c #2A2A2B", -"v. c #7F7E7E", -"b. c #B0AFAE", -"n. c #C9C9C8", -"m. c #969595", -"M. c #444443", -"N. c #818180", -"B. c #CECDC8", -"V. c #D0CECA", -"C. c gray100", +"16 16 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , < 1 2 3 4 5 6 7 8 = ", -"9 0 q w e r t y u i p a s d f g ", -"@ h j k l z x c s v b n m M N # ", -"B f V v C w Z A S D F G t H 3 $ ", -"B N u j J K L P I U Y T R E W Q ", -"B ! ~ ^ / L ( ) _ ` L ' ] q [ 9 ", -"# { } | ...X.o.I U O.+.@.#.$.X ", -"X %._ &.*.=.-.r ;.} :.>.,.v =.+ ", -"X <.1.2.j ,.-.3.4.5.6.-.r 7.< @ ", -"X 8.9.<.<.0.q.w.e.r.>.,.v t.y.+ ", -"9 u.i.) p.a.Z ~ >.-.,.s.r 7.< @ ", -"+ d.f.g.h.j.j @.,.r v r v ,.k.+ ", -"* l.z.L @.z x.c.v 7.t.7.,.>.v.O ", -"= b.n.m.k.K M.$.=.< y.< k.v.N.o ", -" = g B.+ V.9 X + @ + @ + O o " +"kXiXuXyXrXtXtXtXwXwXyXiXtXwXrXkX", +"iX[ G &.s.r.p.s.}.;X&.M w.,X'.rX", +"uXC 5 { c.t.9.r.eXNXO.7 8.cX=XqX", +"tXf.l.>.~ ;.!.K.8.q.E f 7.rX}.wX", +"wX-XAXq.- { VX0Xc a z q 9.BX;XwX", +"wX}.eXl.) 1.E.S.D m _ } 0.!.F.rX", +"wX&XrX3XvXE.w l b d E.SXj.5 H uX", +"wX|.1X@X9XH.v S D m G.pXd.h Q uX", +"uXQ v +.h.e.w.t.@X1Xb.u.r.q.r.tX", +"uXP a X.l.r.w.y.6XdXM.w.t.i.p.tX", +"uXT v L L #.XX/.n.m.u.r.q.e.t.tX", +"uXS u l e | VXtXu.w.r.p.t.i.p.tX", +"tX0.8.$./ @.l.d.r.t.q.t.q.e.y.tX", +"wX:XNXE.d.;.9 g q.i.e.i.e.u.u.rX", +"rX`.,XC.y.2.P Q r.p.t.p.y.u.a.yX", +"kXrXqXrXtXtXuXuXtXtXtXtXtXrXyXkX" }; /* XPM */ static const char *const xpm_icon_1[] = { /* columns rows colors chars-per-pixel */ -"32 32 224 2 ", -" c #DCDAD5", -". c #DEDCD7", -"X c #DFDDD7", -"o c #E0DED9", -"O c #E0DED8", -"+ c #E1DFDA", -"@ c #DBD9D4", -"# c #D3D1CD", -"$ c #D3D2CD", -"% c #D4D2CD", -"& c #D3D1CC", -"* c #CECCC8", -"= c #CFCDC8", -"- c #C9C7C3", -"; c #C8C6C1", -": c #C8C7C2", -"> c #C7C5C1", -", c #CECCC7", -"< c #D4D2CE", -"1 c #CAC8C4", -"2 c #C8C6C2", -"3 c #CDCBC6", -"4 c #545353", -"5 c gray26", -"6 c #474746", -"7 c #444444", -"8 c #4B4B4B", -"9 c #717171", -"0 c gray45", -"q c #737372", -"w c #737272", -"e c gray43", -"r c gray61", -"t c gray65", -"y c #A2A2A2", -"u c gray67", -"i c gray46", -"p c #3F3F3E", -"a c gray28", -"s c #464645", -"d c gray27", -"f c #949493", -"g c #A1A1A0", -"h c #8B8B8A", -"j c gray17", -"k c #313131", -"l c #2D2D2D", -"z c #393939", -"x c gray50", -"c c gray51", -"v c #818181", -"b c #79797A", -"n c #CDCDCD", -"m c gray88", -"M c gray85", -"N c #E9E9E9", -"B c #868686", -"V c #222222", -"C c #323232", -"Z c #2F2F2F", -"A c gray18", -"S c gray73", -"D c gainsboro", -"F c gray83", -"G c #E4E4E5", -"H c #AAAAA9", -"J c #C7C5C0", -"K c gray21", -"L c gray20", -"P c #3E3E3E", -"I c gray49", -"U c #808080", -"Y c gray47", -"T c #7E7E7E", -"R c gray77", -"E c #D5D5D5", -"W c gray81", -"Q c #DDDDDD", -"! c #838383", -"~ c gray16", -"^ c #373737", -"/ c #343434", -"( c gray70", -") c gray84", -"_ c #D0D0D0", -"` c #DFDFDF", -"' c #A6A5A5", -"] c #434343", -"[ c #2A2A2A", -"{ c gray19", -"} c #2C2C2C", -"| c #797979", -" . c gray80", -".. c #D8D8D8", -"X. c gray91", -"o. c gray53", -"O. c gray15", -"+. c #353535", -"@. c #B7B7B7", -"#. c gray87", -"$. c #E6E6E6", -"%. c #A8A8A7", -"&. c #DFDDD8", -"*. c #D2D0CC", -"=. c #504F4F", -"-. c #464646", -";. c #494949", -":. c #727272", -">. c #747474", -",. c #AEAEAE", -"<. c #BBBBBB", -"1. c #B6B6B6", -"2. c gray76", -"3. c gray22", -"4. c gray68", -"5. c #C8C8C8", -"6. c gray82", -"7. c #C9C7C2", -"8. c #A0A0A0", -"9. c #C6C6C6", -"0. c #B4B4B4", -"q. c #282828", -"w. c #CACACA", -"e. c gray", -"r. c #B1B1B1", -"t. c #D2D2D2", -"y. c #9F9F9F", -"u. c gray64", -"i. c #272727", -"p. c gray52", -"a. c gray89", -"s. c LightGray", -"d. c gray86", -"f. c gray78", -"g. c #A6A6A5", -"h. c #D7D7D7", -"j. c gray74", -"k. c #848484", -"l. c #D9D9DA", -"z. c #A3A3A2", -"x. c #A3A2A2", -"c. c #E2E2E2", -"v. c gray10", -"b. c gray93", -"n. c #E4E4E4", -"m. c #3A3A3A", -"M. c #C0C0C0", -"N. c #E7E7E7", -"B. c #ABABAA", -"V. c #C7C6C1", -"C. c #CAC8C3", -"Z. c gray60", -"A. c gray69", -"S. c #6F6F6F", -"D. c gray34", -"F. c gray54", -"G. c #6C6B6B", -"H. c #A5A5A4", -"J. c #D4D3D3", -"K. c #191919", -"L. c #DADADA", -"P. c #3C3C3C", -"I. c #232323", -"U. c #3F3F3F", -"Y. c #A4A4A3", -"T. c #C5C5C5", -"R. c gray79", -"E. c #CBCBCB", -"W. c #A7A7A6", -"Q. c #E1E1E1", -"!. c #252525", -"~. c #9B9B9B", -"^. c #C3C3C3", -"/. c gray72", -"(. c gray75", -"). c gray44", -"_. c gray23", -"`. c gray24", -"'. c #C1C1C1", -"]. c #333334", -"[. c #484848", -"{. c #DFDCD7", -"}. c #414141", -"|. c #7C7C7C", -" X c #777777", -".X c #7B7B7B", -"XX c gray48", -"oX c #6F6F6E", -"OX c #454444", -"+X c #747473", -"@X c #464545", -"#X c #A5A5A5", -"$X c #484847", -"%X c #5B5B5B", -"&X c gray36", -"*X c #9D9D9D", -"=X c #979797", -"-X c #9A9A9A", -";X c #929292", -":X c #767676", -">X c gray13", -",X c #80807F", -" c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", +"z c #2F2F2F", +"x c gray19", +"c c #313131", +"v c #323232", +"b c gray20", +"n c #343434", +"m c #353535", +"M c gray21", +"N c #373737", +"B c gray22", +"V c #393939", +"C c #3A3A3A", +"Z c gray23", +"A c #3C3C3C", +"S c gray24", +"D c #3E3E3E", +"F c #3F3F3F", +"G c gray25", +"H c #414141", +"J c gray26", +"K c #434343", +"L c #444444", +"P c gray27", +"I c #464646", +"U c gray28", +"Y c #484848", +"T c #494949", +"R c gray29", +"E c #4B4B4B", +"W c #4C4C4C", +"Q c gray30", +"! c #4E4E4E", +"~ c gray31", +"^ c #505050", +"/ c #515151", +"( c gray32", +") c #535353", +"_ c gray33", +"` c #555555", +"' c #565656", +"] c gray34", +"[ c #585858", +"{ c gray35", +"} c #5A5A5A", +"| c #5B5B5B", +" . c gray36", +".. c #5D5D5D", +"X. c gray37", +"o. c #5F5F5F", +"O. c #606060", +"+. c gray38", +"@. c #626262", +"#. c gray39", +"$. c #646464", +"%. c #656565", +"&. c gray40", +"*. c #676767", +"=. c #686868", +"-. c DimGray", +";. c #6A6A6A", +":. c gray42", +">. c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , < # $ % 1 2 - ; 3 ", -". # 4 5 6 7 8 9 0 q w e q q q 9 r t y u i p a s d f t g t h 3 o ", -". $ 5 j k l z x c v v b c v c x n m M N B V C Z A S D F G H J + ", -". $ a k K L P I U x x Y U U U T R E W Q ! ~ ^ / / ( ) _ ` ' ; + ", -". % ] [ { } z v ! ! ! | x x x I .` ..X.o.O.+.C C @.#...$.%.; + ", -"&.*.=.5 -.] ;.:.>.>.0 i ! c c x ,.<.1.2.Y } 3.K / 4._ 5.6.r - + ", -"+ 7.8._ 9.6.0.C L K q.v M w.6.e.3.A k k ^ / L L L r.6.5.t.y.7.+ ", -"+ 7.u...t.` e.k L K i.p.a.s.d.f.3.{ L / ^ k C L L S #.F ` g.2 + ", -"+ 7.y h.t.#.j./ K z [ k.Q W ) 2.3.k / / 3./ K K K 1...W l.z.: + ", -"+ 7.x.Q h.c.S O.i.j v.p.b.D n.W m.C +.K C i.~ ~ i.M.N.Q X.B.V.+ ", -"+ C.Z.5.M.9.A.x p.k.p.>.0 0 i S.m.K 3.k D.F.! p.v 9 >.>.>.G.= O ", -"+ 2 H.Q J...5.h.a.#.b.0 K.~ O.} / k / i.Y b.Q a.L.P.I.[ I.U.< . ", -"+ 2 Y.d.t.h.T.R.F W D >.[ 3.K z / L K [ 0 D W s.E.-.C 3.C a # . ", -"+ ; W.Q.h.D w.W d.E n.>.!.+.C K C k / i.>.n.E L.t.] A / A d % . ", -"+ - ~.E.^.f./.(.R.R 6.).A _.3.m._.m.`.k :._ R 5.'.-./ z ].[.# {.", -"X # ;.K _.3.}.|.T T T i | | | X/.f.^.w.Z.Y x x .Xi XX| XXoX= o ", -". % OXl L Z _.T v U U XXc c c x w.D h.m u.| c v I |.! v ! +X, o ", -". $ -.{ +.k `.I x x T | v v v T T.) _ M 8.XXv v I XXv x v :.* o ", -". $ @XZ / k `.! B p.B Y XX.X.X| .` M a.#X| c v I .Xv U c q * o ", -". # $XL 3.+.P.%X&X&XD. X*X=X-X;X-Xu.8.#XB i | | :X>.XXY b e = O ", -". $ s Z / L +.A j Z >Xp.N.h.#.E.Y | XX| i U U U |.XXv x v w * o ", -". $ s Z / L K +./ ^ [ k.` _ h.T.x c v c | U U v |.XXv ,Xv q * o ", -". $ s Z / C K L C K ~ p.a.s.L.5.x v v v | U v c I .Xc U c 0 * o ", -". % d A / C +.+./ ^ ~ v L. .t.'..XI I I :X|.|.I | XT |.T .0 XD.U.7 5 -.i |.XX.X>.XXXX.X X:X|.XX|.4X5Xo ", -"+ 2 t D E m 5.I k.v 6X7Xi.{ l +.XX! v v XXv v c T |.c v ! 0 * o ", -"+ - g F 8XL.'.| U T k.9XA K / m.| v x U Y x ,XU |.XXv x v q * o ", -"+ ; t G ` 0XR..X! U o.qX~ C Z +.XX! v c b v v c T |.! v ! q , o ", -"o 3 h H #XwXeXrX0 :.tXyXuXa d [.oX+X:.q e w q 0 X6XH.8XbX", +"bX8XP.6X;X7X[.v b M d p.tXX8XL.8XbX", +"bX8XY.rX8XsX@Xc b M s f.hX9XuX:XB x b n N c v b b XXaX0XsXR.7XbX", +"bX8XU.eX8XaX+Xn M V g d.pX5XwX&XB c n n B n M M M }.rX5XtXU.8XbX", +"bX8XU.pXeXgXXXa s h 8 f.mXiXjX5XC v m M v s f f s $XzXpXxX~.7XnX", +"bX9XD.>X$X;X_.u.f.d.f.6.5.5.7.1.C M B c ] l.s.f.p.3.6.6.6.>.rXvX", +"bX7XT.pX0XrX>XeXhXaXmX5.7 f a j n c n s 0.mXpXhXyXA u g u G aXxX", +"bX8XY.uX8XeX-X,X0X5XiX6.g B M V n b M g 5.iX5X9X1XI v B v Y pXcX", +"bX7XE.dXeXiXX%XI n V b T iXcX", +"cXiXR M Z B H r.y.y.y.7.q.q.q.9. X:X*XXu.p.p.p.q.i.p.a.t.e.a.i.a.6.eXvX", +"cXpXI l n v m m n N f p.yX2X8X%Xe.t.t.t.8.r.r.t.q.9.y.r.t.3.rXvX", +"bX9XB.XX'..XE.2.6.5.9.] F L J I 7.r.w.e.6.w.w.e.9.8.r.w.e.2.rXvX", +"bX7XE.iXqXdX>Xt.d.p.k.) s x k m w.s.p.p.w.p.p.a.y.r.a.p.a.6.eXvX", +"bX8XP.0X6XyX%Xq.i.y.d._ l N m C q.p.u.i.0.u.i.i.r.w.p.u.p.5.rXvX", +"nX7XE.jXsXxX>Xe.a.i.h./ f v z n w.s.p.a.q.p.p.a.t.e.a.p.s.5.eXvX", +"vXwXx.!.R.!.A.2.6.5.8.{ K Y I T 1.6.5.5.1.5.5.6.3.2.6.5.5.1.yXcX", +"lXlXwX6X7X7X9XrXeXeXeXyXpXpXpXiXrXeXeXeXrXeXeXeXrXrXeXrXeXyXkXlX", +"lXlXvXnXbXnXbXvXvXvXvXcXcXcXcXcXvXvXvXvXvXvXvXvXvXvXvXvXvXcXlXlX" }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 243 2 ", -" c #DCDAD5", -". c #DBD9D4", -"X c #DDDBD6", -"o c #E1DFDA", -"O c #E2E0DB", -"+ c #E3E1DC", -"@ c #E4E2DC", -"# c #E4E2DD", -"$ c #E1DFD9", -"% c #E4E1DC", -"& c #E2DFDA", -"* c #D8D6D1", -"= c #C6C4C0", -"- c #C7C5C1", -"; c #C1BFBB", -": c #C2C0BC", -"> c #BBBAB6", -", c #BAB9B5", -"< c #BBB9B5", -"1 c #BAB8B4", -"2 c #C3C1BD", -"3 c #C7C6C2", -"4 c #BBBAB5", -"5 c #BAB9B4", -"6 c #C4C2BE", -"7 c #444444", -"8 c gray24", -"9 c #3F3F3F", -"0 c #3E3E3E", -"q c #434343", -"w c gray40", -"e c #676767", -"r c gray38", -"t c #8E8E8E", -"y c #959595", -"u c #939393", -"i c #929292", -"p c #989898", -"a c #5B5B5B", -"s c #393939", -"d c gray27", -"f c gray59", -"g c gray58", -"h c #939494", -"j c #737372", -"k c #D3D2CD", -"l c #DEDCD7", +"48 48 256 2 ", +" c black", +". c #010101", +"X c #020202", +"o c gray1", +"O c #040404", +"+ c gray2", +"@ c #060606", +"# c #070707", +"$ c gray3", +"% c #090909", +"& c gray4", +"* c #0B0B0B", +"= c #0C0C0C", +"- c gray5", +"; c #0E0E0E", +": c gray6", +"> c #101010", +", c #111111", +"< c gray7", +"1 c #131313", +"2 c gray8", +"3 c #151515", +"4 c #161616", +"5 c gray9", +"6 c #181818", +"7 c #191919", +"8 c gray10", +"9 c #1B1B1B", +"0 c gray11", +"q c #1D1D1D", +"w c #1E1E1E", +"e c gray12", +"r c #202020", +"t c gray13", +"y c #222222", +"u c #232323", +"i c gray14", +"p c #252525", +"a c gray15", +"s c #272727", +"d c #282828", +"f c gray16", +"g c #2A2A2A", +"h c gray17", +"j c #2C2C2C", +"k c #2D2D2D", +"l c gray18", "z c #2F2F2F", -"x c #323232", +"x c gray19", "c c #313131", -"v c #3C3C3C", -"b c gray51", -"n c #848484", -"m c #838383", -"M c #797979", -"N c gray52", -"B c #818181", -"V c gray83", -"C c #E2E2E2", -"Z c gray87", -"A c #DFDFDF", -"S c #DDDDDD", -"D c #E9E9E9", -"F c #6C6C6C", -"G c gray15", -"H c #343434", -"J c gray18", -"K c LightGray", -"L c #D8D8D8", -"P c gray84", -"I c gray90", -"U c #8B8B8B", -"Y c #CFCDC8", -"T c #DFDDD8", -"R c gray49", -"E c #808080", -"W c gray50", -"Q c #7E7E7E", -"! c gray46", -"~ c gray79", -"^ c #D2D2D2", -"/ c gray82", -"( c gainsboro", -") c #6A6A6A", -"_ c #2A2A2A", -"` c gray21", -"' c gray19", -"] c #414141", -"[ c #C5C5C5", -"{ c #CECECE", -"} c #868686", -"| c #D0CEC9", -" . c gray20", -".. c #767676", -"X. c #CACACA", -"o. c #D5D5D5", -"O. c gray16", -"+. c #353535", -"@. c #C8C8C8", -"#. c #D7D7D7", -"$. c #E0E1E1", -"%. c #878786", -"&. c DimGray", -"*. c #C6C6C6", -"=. c gray81", -"-. c gray88", -";. c #2D2D2D", -":. c #3A3A3A", -">. c #DADADA", -",. c #E6E6E6", -"<. c #282828", -"1. c gray25", -"2. c #CDCDCD", -"3. c #E1E1E1", -"4. c #E4E4E4", -"5. c #888888", -"6. c #CFCDC9", -"7. c gray28", -"8. c #484848", -"9. c gray44", -"0. c gray45", -"q. c #727272", -"w. c #717171", -"e. c gray48", -"r. c gray67", -"t. c #B6B6B6", -"y. c gray70", -"u. c #B4B4B4", -"i. c #B2B2B2", -"p. c #BBBBBB", -"a. c #373737", -"s. c gray22", -"d. c gray26", -"f. c gray72", -"g. c gray77", -"h. c #C1C1C1", -"j. c #C0C0C0", -"k. c #C3C3C3", -"l. c #D1CFCA", -"z. c #909090", -"x. c #AEAEAE", -"c. c gray80", -"v. c gray75", -"b. c gray78", -"n. c #848483", -"m. c #272727", -"M. c gray55", -"N. c gray89", -"B. c gray86", -"V. c #898988", -"C. c gray54", -"Z. c #CBCBCB", -"A. c gray85", -"S. c #888887", -"D. c gray71", -"F. c #E7E7E7", -"G. c #D0D0D0", -"H. c #888787", -"J. c #919292", -"K. c gray69", -"L. c #252525", -"P. c #1B1B1B", -"I. c gray92", -"U. c gray74", -"Y. c #8B8B8A", -"T. c #BDBBB7", -"R. c gray76", -"E. c #B7B7B7", -"W. c #A5A5A5", -"Q. c #686868", -"!. c #606060", -"~. c #656565", -"^. c #898989", -"/. c #646464", -"(. c #656564", -"). c #D6D4D0", -"_. c gray11", -"`. c #8D8D8D", -"'. c gray93", -"]. c gray91", -"[. c #232323", -"{. c #515050", -"}. c #DAD8D3", -"|. c #DEDEDF", -" X c #555454", -".X c #D9D8D3", -"XX c gray53", -"oX c #545453", -"OX c #979797", -"+X c #BCBCBC", -"@X c #2B2B2C", -"#X c #535352", -"$X c #B9B9B9", -"%X c gray65", -"&X c #B1B1B1", -"*X c gray73", -"=X c gray23", -"-X c #A4A4A4", -";X c #575656", -":X c #D9D7D2", -">X c #777777", -",X c gray47", -". c #6C6C6C", +",. c #6D6D6D", +"<. c gray43", +"1. c #6F6F6F", +"2. c gray44", +"3. c #717171", +"4. c #727272", +"5. c gray45", +"6. c #747474", +"7. c gray46", +"8. c #767676", +"9. c #777777", +"0. c gray47", +"q. c #797979", +"w. c gray48", +"e. c #7B7B7B", +"r. c #7C7C7C", +"t. c gray49", +"y. c #7E7E7E", +"u. c gray50", +"i. c #808080", +"p. c #818181", +"a. c gray51", +"s. c #838383", +"d. c #848484", +"f. c gray52", +"g. c #868686", +"h. c gray53", +"j. c #888888", +"k. c #898989", +"l. c gray54", +"z. c #8B8B8B", +"x. c gray55", +"c. c #8D8D8D", +"v. c #8E8E8E", +"b. c gray56", +"n. c #909090", +"m. c gray57", +"M. c #929292", +"N. c #939393", +"B. c gray58", +"V. c #959595", +"C. c gray59", +"Z. c #979797", +"A. c #989898", +"S. c gray60", +"D. c #9A9A9A", +"F. c #9B9B9B", +"G. c gray61", +"H. c #9D9D9D", +"J. c gray62", +"K. c #9F9F9F", +"L. c #A0A0A0", +"P. c gray63", +"I. c #A2A2A2", +"U. c gray64", +"Y. c #A4A4A4", +"T. c #A5A5A5", +"R. c gray65", +"E. c #A7A7A7", +"W. c gray66", +"Q. c #A9A9A9", +"!. c #AAAAAA", +"~. c gray67", +"^. c #ACACAC", +"/. c gray68", +"(. c #AEAEAE", +"). c #AFAFAF", +"_. c gray69", +"`. c #B1B1B1", +"'. c #B2B2B2", +"]. c gray70", +"[. c #B4B4B4", +"{. c gray71", +"}. c #B6B6B6", +"|. c #B7B7B7", +" X c gray72", +".X c #B9B9B9", +"XX c gray73", +"oX c #BBBBBB", +"OX c #BCBCBC", +"+X c gray74", +"@X c gray", +"#X c gray75", +"$X c #C0C0C0", +"%X c #C1C1C1", +"&X c gray76", +"*X c #C3C3C3", +"=X c gray77", +"-X c #C5C5C5", +";X c #C6C6C6", +":X c gray78", +">X c #C8C8C8", +",X c gray79", +" , < < < 1 2 3 - - - - = 4 5 < < < 1 6 ", -" . o = 7 8 9 0 9 8 q w e e e e w r e e e e e w t y u u i p a s 9 0 9 8 d t f g g g h j k l ", -" . o - 8 z x c x z v b n n n n m M N n n n n B V C Z A S D F G H c x J 9 K L P P P I U Y T ", -" . o - 9 x H H H c 8 R E W W E Q ! E W W W W R ~ P ^ K / ( ) _ ` H H ' ] [ { K / V A } | T ", -" . o - 0 c H .H c 8 Q B E E E W ..B E E E E Q X.L V o.K A ) O.+. .H ' ] @./ P V #.$.%.| T ", -" . o - 9 x +.H H x 8 R E W W E Q ! B E E E E Q ~ P K K / S &.O.+. .H ' ] *.=.V ^ o.-.%.| T ", -" . o - v ;.' z ' ;.:.B n m m m b ..B E E E E Q / A ( ( >.,.F <.+.x .z 1.2.Z C 3.C 4.5.6.T ", -" . o = 7.q d 7 d q 8.9.0.q.q.q.9.w.E Q Q Q W e.r.t.y.u.i.p.r z s a.s.H d.f.g.h.h.j.k.B l.T ", -" . % < z.P @.X.@.K x.z . . .+.<.N #.~ c.X.^ x.J z z z J z s.+.H H +.x ] v.X.@.@.b.c.n.| T ", -" . @ 5 y #.2./ { 3.t.z H . .` m.M.N.o.#.P Z f.' c x x x +.s.' c c c ' 1.{ B.#.L #.S V.Y T ", -" . @ < g P K P K I u.z H . .` <.C.-.^ V K B.t.' x H .H +.s.c .H H x 1.Z.#.V o.V A.S.6.T ", -" . @ < g P / V / 4.D.z H . .` m.C.3.^ o.K ( t.' c . . .+.s.' . . .x 1.Z.L V o.V A.S.6.T ", -" . @ < g L P A.#.F.D.x ` ` ` s._ C.Z G.K / >.u.z x H .H +.s H ` ` a.+.d.~ P ^ K ^ #.H.| T ", -" . @ < J.S #.A.L -.K.L.<.<.m._ P.M.I.B.Z ( I U.c +.` +.+.` x G O.O._ L.a.V 3.S Z S N.Y.Y T ", -" . + T.N R.E.f.E.U.W.m M.C.C.C.M.F w Q.e e &.!.s s.s.s.s x ~.z.^.C.C.M.W /.Q.e e Q.~.(.).l ", -" . @ < y 3.o.#.#.B.R.K 4.-.3.Z I.w _.O.m.m.m.z +.z c ' H G `.'.Z 3.A ].h.<.O.O.O._ [.{.}.X ", -" . @ < u |.^ V V A.v.*.o.^ ^ G.B.Q.O.a.+.+.` s H c . .` O.} Z G.^ / A.t.H +.+.+.` ' X.XX ", -" . @ < u A K o.V A.j.~ L o.o.K Z e m.+. . .H a.H c H .` O.XX3.^ o.V B.f.x . . .H J oX}.X ", -" . @ < u S / K K L v.b.#.K V ^ S e m.+. . .+.s.+.c H .a._ XXA / V ^ >.E.x H H .+.J oX}.X ", -" . # 1 OX,.>.( B.-.*.{ Z >.B.L 4.Q.G +. . . .+.c z x c +.L.^.F.L B.A.3.+X' c c c x @X#X}.X ", -" . + T.m U.u.t.D.$X%X&XU.*Xp.$XR./.H 0 v v =X9 q d.d.d.7 s W g.$Xp.*Xj.-X:.v v v 8 a.;X:XX ", -" . o - 8 J c c c J :.>XM ,X,XM >Xq.Q R R R R .#.#.P B.5XR m b B m e.XW.yXuXuXiXi ^.5X7Xz.z.z.! ! ....! >XpXw.>X! ....1X&.aXl ", -" . o - 0 c . . .x ` ' sXdXdXz fXM.D A.( B.C j.1XR .3.j.e.m B b b B >Xb B b B m e.9Xm B b b B 6X4Xl ", -" . o = d 9 ] ] ] 1.] v =X=X=X8 x Q h.t.f.E.+X-Xq.e.,X,XM ,XpXM ,X,X,Xe.q.1XM ,X,XM >X) 4Xl ", -" . % 4 t K [ @.*.{ i.! Q 9XR 9XB gXdXx c c z :.,XXb B B B m M 9Xb B B B B 6X4Xl ", -" . @ < g P K P V N.*X,XB E E W n jXdXH H H .v R B E E E W ! B E E E B ,XXB W W Q n zXO.c xX' ;.a.2XE W W 0XQ 1XE W W W B >Xe.B W W kXW ) cXl ", -" . & 6 j U } %.vXV.W bXlX8X6XF nXmXMXoXNXNX#X;X3X6X8X6X6XF &.6X8X6X8X6X) hX6X8X6XlX) BXVXX ", -" k Y | | | 6.l.4X4X4X4X4XcX* }.}.}.}.}.:X4X4X4X4X4X4XaX4X4X4X4X4X4X4X4X4X4X4XcXVX ", -" l T T T T T T l l l l l l X X X X X X X l l l l l l l l l l l l l l l l l l l X ", -" ", -" " +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlX", +"lXlXlXlXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXlXlXlXlX", +"lXlXlXzXnXbXbXbXbXbXbXmXmXmXmXmXmXnXmXmXmXmXmXmXMXMXMXMXMXMXnXbXbXbXbXbXnXMXMXMXMXMXMXnXlXlXlXlX", +"lXlXzXgX4X5X5X5X5X5X4X.a b c v l F 9XrXwXwXwXkXx.tXcXlXlX", +"lXkXbX5XF v n n n c S t.i.u.u.i.y.7.i.u.u.u.u.t.,XwX8X9X7XiX;.g M n n x H -X4X9X7X0XaXj.yXcXlXlX", +"lXkXbX5XD c n b n c S y.p.i.i.i.u.8.p.i.i.i.i.y.X7XwX0XeXdXj.tXcXlXlX", +"lXkXbX5XF v m n n v S t.i.u.u.i.y.7.p.i.i.i.i.y.,XwX9X9X7XpX-.f m b n x H ;X5X0X8XqXsXj.tXcXlXlX", +"lXkXbX5XA k x z x k C p.d.s.s.s.a.8.p.i.i.i.i.y.7XsXiXiXyXlX>.d m v b z G 3XaXgXfXgXjXl.tXcXlXlX", +"lXkXnX4XU K P L P K Y 2.5.4.4.4.2.3.i.y.y.y.u.w.~.}.].[.'.oX+.z V N B n J X=X%X%X%X*Xs.yXcXlXlX", +"lXkXMX=Xn.wX>XX9X(.z b b b m d f.eX,X2XX>X>X2Xf.yXcXlXlX", +"lXkXMX*XV.eX3X7X4XfX}.z n b b M s x.hXqXeXwXaX Xx c v v v m B x c c c x G 4XuXeXrXeXiXl.tXcXlXlX", +"lXkXMX*XB.wX9XwX9XkX[.z n b b M d l.dX8X0X9XuX}.x v n b n m B c b n n v G 1XeX0XqX0XtXk.tXcXlXlX", +"lXkXMX*XB.wX7X0X7XjX{.z n b b M s l.fX8XqX9XiX}.x c b b b m B x b b b v G 1XrX0XqX0XtXk.tXcXlXlX", +"lXkXMX*XB.rXwXtXeXzX{.v M M M B g l.aX6X9X7XyX[.z v n b n m V n M M N m J ,XwX8X9X8XeXk.tXcXlXlX", +"lXkXMX*Xm.pXeXtXrXdX_.p d d s g 9 x.bXuXaXiXkX+Xc m M m m M v a f f g p N 0XfXpXaXpXhXx.tXcXlXlX", +"lXkXMX-Xf.&X|. X|.+XT.s.x.l.l.l.x.>.&.=.*.*.-.O.V B B B V v %.n.k.l.l.x.u.$.=.*.*.=.%.&.dXxXlXlX", +"lXkXMX*XB.fXqXeXeXuX&X9XjXdXfXaXbX&.0 f s s s z m z c x n a c.mXaXfXsXxX%Xd f f f h u ( jXzXlXlX", +"lXkXMX*XN.aX8X0X0XtX#X;XqX8X8X6XuX=.f N m m M V n c b b M f g.aX6X8X7XtX}.n m m m M x ' hXzXlXlX", +"lXkXMX*XN.sX9XqX0XtX$X,XrXqXqX9XaX*.s m b b n N n c n b M f h.fX8XqX0XuX Xv b b b n k ` hXzXlXlX", +"lXkXMX*XN.pX7X9X9XrX#X:XeX9X0X8XpX*.s m b b m B m c n b N g h.sX7X0X8XyX|.v n n b m l ` hXzXlXlX", +"lXkXMX*XZ.lXyXiXuXdX;X4XaXyXuXrXjX=.a m b b b m c z v c m p k.zXrXuXtXfXOXx c c c v h _ hXzXlXlX", +"lXkXMX-Xs.+X[.}.{..XR.`.+XXXoX.X&X$.n D A A Z F K J J J L V u.=X.XoXXX$XY.C A A A S N [ hXzXlXlX", +"lXkXbX5XS l c c c l C 9.q.0.0.q.9.4.y.t.t.t.t.e.*X5X2X3X2X7Xk.6.q.0.0.w.4.0.y.t.t.y.r.,.sXxXlXlX", +"lXkXbX5XD c n b n c S i.a.p.a.a.p.8.a.p.p.p.p.u.2XyXeXeXwXuXm.t.s.a.p.s.w.e.a.p.p.p.i.<.aXxXlXlX", +"lXkXbX5XD c n b n c S y.i.i.i.i.u.7.p.i.i.i.i.y.X;X4X'.7.y.r.t.r.p.Q j v c c z C 0.e.e.e.e.w.3.e.e.e.w.r.6.8.r.e.e.e.q.>.sXxXlXlX", +"lXkXMX*XC.rX4X7X4XdX+Xq.s.p.p.i.g.~ j v c v c A y.a.p.p.p.i.9.a.p.p.p.s.q.r.a.p.p.p.i.<.aXxXlXlX", +"lXkXMX*XN.wX9XwX0XhXXX0.p.i.i.u.d.~ j n n n b A t.p.i.i.i.u.7.p.i.i.i.p.0.e.p.i.i.i.u.<.aXxXlXlX", +"lXkXMX*XB.wX7X0X8XgXoX0.a.i.i.u.f.~ j n b b b A t.p.i.i.i.u.8.p.i.i.i.a.0.e.p.i.i.i.u.<.aXxXlXlX", +"lXkXMX*XB.wX0XeXqXjXXX0.a.i.i.u.f.^ k M m m m S y.p.i.i.p.u.8.p.i.i.i.a.q.e.p.i.i.p.u.<.sXxXlXlX", +"lXkXMX&XN.kXaXdXsXlXOX9.p.u.u.y.d.R d x z x k N r.i.u.u.u.y.6.i.u.u.u.p.9.q.i.u.u.u.y.:.aXxXlXlX", +"lXkXnX3X6.x.j.j.j.l.i.:.<.<.<.<.1.X.) ` ` ` _ [ ,.<.<.<.<.<.;.<.<.<.<.<.:.>.<.<.<.<.:.4.fXzXlXlX", +"lXlXlXlXpXtXyXtXtXtXuXsXaXaXaXsXaXgXjXhXhXhXjXhXsXaXaXaXaXsXsXaXaXaXaXaXsXsXaXaXaXsXaXfXlXlXlXlX", +"lXlXlXlXxXcXcXcXcXcXcXxXxXxXxXxXxXzXzXzXzXzXzXzXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXzXlXlXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlX", +"lXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlX" }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/unruly.sav sgt-puzzles-20160429.b31155b/icons/unruly.sav --- sgt-puzzles-20140928.r10274/icons/unruly.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/unruly.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,22 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :6:Unruly +PARAMS :5:6x6de +CPARAMS :5:6x6de +DESC :10:faCADAJeBd +NSTATES :2:15 +STATEPOS:2:15 +MOVE :6:P0,1,2 +MOVE :6:P0,4,2 +MOVE :6:P0,3,3 +MOVE :6:P0,3,0 +MOVE :6:P0,5,1 +MOVE :6:P0,2,1 +MOVE :6:P1,4,0 +MOVE :6:P1,1,1 +MOVE :6:P1,5,2 +MOVE :6:P0,0,2 +MOVE :6:P1,0,3 +MOVE :6:P1,0,0 +MOVE :6:P1,0,4 +MOVE :6:P0,2,4 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/unruly-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/unruly-web.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/untangle-16d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/untangle-16d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/untangle-16d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/untangle-16d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/untangle-16d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/untangle-16d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/untangle-32d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/untangle-32d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/untangle-32d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/untangle-32d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/untangle-32d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/untangle-32d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/untangle-48d24.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/untangle-48d24.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/untangle-48d4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/untangle-48d4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/untangle-48d8.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/untangle-48d8.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/untangle-base.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/untangle-base.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/untangle-ibase4.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/untangle-ibase4.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/untangle-ibase.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/untangle-ibase.png differ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/untangle.ico and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/untangle.ico differ diff -Nru sgt-puzzles-20140928.r10274/icons/untangle-icon.c sgt-puzzles-20160429.b31155b/icons/untangle-icon.c --- sgt-puzzles-20140928.r10274/icons/untangle-icon.c 2014-09-29 00:33:50.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/untangle-icon.c 2016-04-29 00:31:44.000000000 +0000 @@ -1,545 +1,787 @@ /* XPM */ static const char *const xpm_icon_0[] = { /* columns rows colors chars-per-pixel */ -"16 16 116 2 ", -" c #D5D3CE", -". c #D4D2CE", -"X c #DBD9CC", -"o c #E0DECA", -"O c #D5D3CF", -"+ c #D4D2CD", -"@ c #D6D4CF", -"# c #D2D0CB", -"$ c #D3D1CE", -"% c #E0DECF", -"& c #9D9BC8", -"* c #6362C2", -"= c #DFDDCC", -"- c #D6D4D1", -"; c #D2D1CD", -": c #CCCAC5", -"> c #C3C1BD", -", c #D7D5D0", -"< c #DCDACF", -"1 c #B1AFC8", -"2 c #8483BB", -"3 c #C7C6BA", -"4 c #C6C4C1", -"5 c #D2D0CD", -"6 c #E0DED1", -"7 c #D9D7C9", -"8 c #BDBBB8", -"9 c #D6D4CE", -"0 c #D5D3C8", -"q c #D2D0BF", -"w c #C8C6C2", -"e c #C9C7BB", -"r c #A3A2C2", -"t c #9997BC", -"y c #D8D6CA", -"u c #CECDC9", -"i c #C3C1BE", -"p c #DBD9D3", -"a c #D4D2CF", -"s c #D2D1BD", -"d c #6F6EB9", -"f c #6E6DC0", -"g c #E3E1CD", -"h c #C2C0BB", -"j c #C8C6C1", -"k c #BFBDB9", -"l c #C9C7C4", -"z c #DFDDCF", -"x c #D4D2C3", -"c c #BFBDBA", -"v c #D7D5CE", -"b c #DBD9CF", -"n c #D3D1CC", -"m c #C1C0BB", -"M c #B1AFAB", -"N c #CDCBC6", -"B c #D8D6D0", -"V c #D7D5D2", -"C c #CBC9C4", -"Z c #C1BFBB", -"A c #CECCCC", -"S c #BDBBC9", -"D c #C8C6C0", -"F c #C9C7C2", -"G c #C5C3BE", -"H c #D9D7D2", -"J c #D8D6D1", -"K c #D0CEC9", -"L c #E0DECE", -"P c #A7A5CA", -"I c #3333BB", -"U c #C3C1B3", -"Y c #CFCDCA", -"T c #C5C3BF", -"R c #B2B0AE", -"E c #C0BEB9", -"W c #C9C8C3", -"Q c #B4B3AE", -"! c #CECCC7", -"~ c #CDCBC5", -"^ c #B6B4B3", -"/ c #D3D1CD", -"( c #BCBAB6", -") c #C7C5C1", -"_ c #CCCAC6", -"` c #D0CECB", -"' c #CFCDB9", -"] c #C8C6BB", -"[ c #D2D0CC", -"{ c #C3C2BE", -"} c #CFCDC8", -"| c #C7C5C0", -" . c #C2C0BC", -".. c #C4C2BE", -"X. c #DDDACC", -"o. c #6565C2", -"O. c #9F9DBF", -"+. c #CFCDBF", -"@. c #CAC8BF", -"#. c #D5D3CD", -"$. c #D7D5CF", -"%. c #CFCDC9", -"&. c #DBD9CD", -"*. c #8482CA", -"=. c #A6A5BD", -"-. c #B9B8AE", -";. c #9D9CB1", -":. c #E2E0CD", -">. c #DFDDD1", -",. c #C1BFC2", -"<. c #3838C5", -"1. c #C3C1CA", -"2. c #DAD8CF", -"3. c #D2D0CE", -"4. c #D2D0CA", -"5. c gray100", +"16 16 235 2 ", +" c #D5D5D5", +". c #D5D5D5", +"X c #D4D4D5", +"o c #DBDBD4", +"O c #E0E0D2", +"+ c #D5D5D6", +"@ c gray83", +"# c #D5D5D5", +"$ c #D5D5D5", +"% c #D5D5D5", +"& c gray84", +"* c #D2D2D2", +"= c #D5D5D5", +"- c #D5D5D5", +"; c #D3D3D5", +": c #E0E0D6", +"> c #9D9DCD", +", c #6363C6", +"< c #DFDFD3", +"1 c #D6D6D8", +"2 c #D5D5D5", +"3 c #D3D3D4", +"4 c #D6D6D8", +"5 c #CDCDCC", +"6 c #C3C3C3", +"7 c #D7D7D7", +"8 c #D5D5D5", +"9 c #D4D4D5", +"0 c #DCDCD6", +"q c #B1B1CD", +"w c #8484BF", +"e c #C8C8C1", +"r c #C6C6C8", +"t c #D2D2D4", +"y c #E0E0D9", +"u c #D9D9D1", +"i c #BDBDBF", +"p c #D6D6D5", +"a c #D5D5D5", +"s c #D5D5D5", +"d c #D5D5D5", +"f c #D5D5D7", +"g c #D5D5CF", +"h c #D1D1C5", +"j c #D6D6D8", +"k c #C8C8C9", +"l c #C9C9C3", +"z c #A3A3C8", +"x c #9999C1", +"c c #D8D8D1", +"v c #D5D5D6", +"b c #D5D5D5", +"n c #D5D5D5", +"m c #D5D5D5", +"M c #D5D5D5", +"N c gray84", +"B c #CECED0", +"V c #C3C3C5", +"C c #DBDBDA", +"Z c #D4D4D6", +"A c #D3D3C5", +"S c #7070BE", +"D c #6E6EC4", +"F c #E3E3D5", +"G c #D3D3D5", +"H c #D5D5D5", +"J c #D5D5D5", +"K c #D5D5D5", +"L c #D4D4D5", +"P c gray83", +"I c #D7D7D7", +"U c gray83", +"Y c gray76", +"T c #C8C8C8", +"R c #C0C0C0", +"E c #C9C9CB", +"W c #DFDFD6", +"Q c #D4D4CA", +"! c #BFBFC0", +"~ c #D7D7D7", +"^ c #D5D5D5", +"/ c #D5D5D5", +"( c #D5D5D5", +") c #D7D7D5", +"_ c #DBDBD6", +"` c #D7D7D7", +"' c LightGray", +"] c gray76", +"[ c #B1B1B1", +"{ c #CDCDCD", +"} c gray84", +"| c #D8D8D7", +" . c #D3D3D5", +".. c #D7D7D9", +"X. c #CBCBCA", +"o. c #C1C1C1", +"O. c gray84", +"+. c #D5D5D5", +"@. c #D7D7D5", +"#. c #CECED3", +"$. c #BDBDCF", +"%. c #C9C9C7", +"&. c gray77", +"*. c gray79", +"=. c gray77", +"-. c gray85", +";. c gray83", +":. c #D5D5D5", +">. c #D5D5D5", +",. c gray83", +"<. c #D8D8D8", +"1. c #CACACA", +"2. c #D0D0D0", +"3. c gray84", +"4. c #E0E0D6", +"5. c #A7A7D0", +"6. c #3333BD", +"7. c #C3C3B9", +"8. c #CFCFD1", +"9. c gray83", +"0. c #C5C5C5", +"q. c #D8D8D8", +"w. c #D5D5D5", +"e. c gray83", +"r. c #D5D5D5", +"t. c #D5D5D5", +"y. c #D5D5D5", +"u. c #D7D7D7", +"i. c gray84", +"p. c #D5D5D5", +"a. c #D5D5D4", +"s. c #D7D7D7", +"d. c #B1B1B4", +"f. c gray75", +"g. c gray79", +"h. c gray75", +"j. c #B4B4B4", +"k. c #CECECE", +"l. c gray83", +"z. c #D8D8D8", +"x. c #D7D7D7", +"c. c #D5D5D5", +"v. c gray83", +"b. c gray83", +"n. c #D5D5D5", +"m. c #D5D5D5", +"M. c gray83", +"N. c #D8D8D8", +"B. c #CDCDCC", +"V. c #B5B5B8", +"C. c #D3D3D4", +"Z. c gray84", +"A. c #BCBCBC", +"S. c gray78", +"D. c #C1C1C1", +"F. c gray77", +"G. c gray80", +"H. c gray83", +"J. c #D8D8D8", +"K. c #D7D7D7", +"L. c #D5D5D5", +"P. c #D5D5D5", +"I. c #D5D5D5", +"U. c gray84", +"Y. c #D0D0D2", +"T. c #CFCFC0", +"R. c #C7C7C1", +"E. c #D2D2D3", +"W. c #C3C3C4", +"Q. c #D8D8D8", +"!. c #D5D5D5", +"~. c gray81", +"^. c #C6C6C6", +"/. c gray76", +"(. c gray77", +"). c gray80", +"_. c #D5D5D5", +"`. c #D5D5D5", +"'. c #D5D5D5", +"]. c #D4D4D5", +"[. c #DDDDD3", +"{. c #6666C6", +"}. c #9F9FC4", +"|. c #CECEC5", +" X c #CACAC6", +".X c #D5D5D4", +"XX c #D5D5D5", +"oX c #D7D7D7", +"OX c #D8D8D8", +"+X c gray84", +"@X c gray81", +"#X c gray78", +"$X c #D2D2D2", +"%X c gray84", +"&X c #D5D5D5", +"*X c #D4D4D5", +"=X c #DBDBD4", +"-X c #8484CE", +";X c #A7A7C4", +":X c #BABAB4", +">X c #9D9DB7", +",X c #D4D4D6", +" , ", -" . < 1 2 3 4 5 6 7 8 9 ", -" O 0 q - w e r t y O ", -" @ u i p a s d f g $ ", -" . + , + h j k l z x c , ", -" v b , n m M N @ B $ V C Z @ ", -"v A S D > F G H + + J C K @ ", -"L P I U Y + T J + , @ ", -" , R E W k Q ! + J , + + ", -"+ J ~ ^ / @ ( ) h G _ + J , ", -" @ ` ' ] [ { J } | ...: ", -" . X.o.O.+.@.#. $.J @ %.) n @ ", -" . &.*.=.-.;.a + @ J ", -" . :.>.,.<.1.2.. + ", -" 3.$ , 4. " +" . X o O + @ # $ % & * = - ", +" ; : > , < 1 2 3 4 5 6 7 8 ", +" 9 0 q w e r t y u i p a s ", +" d f g h j k l z x c v b n ", +" m M N B V C Z A S D F G H n ", +"J K L P I U Y T R E W Q ! ~ ^ / ", +"( ) _ ` ' ] [ { } | ...X.o.O.+.", +"@.#.$.%.&.*.=.-.;.:.>.,.<.1.2.3.", +"4.5.6.7.8.9.0.q.w.e.r.t.y.u.i.p.", +"a.s.d.f.g.h.j.k.l.z.x.c.v.b.n.m.", +"M.N.B.V.C.Z.A.S.D.F.G.H.J.K.L.P.", +"I.U.Y.T.R.E.W.Q.!.~.^./.(.)._.`.", +"'.].[.{.}.|. X.XXXoXOX+X@X#X$X%X", +"&X*X=X-X;X:X>X,X c #D9D7D1", -", c #D3D1D0", -"< c #E0DEC7", -"1 c #4544BF", -"2 c #0000FA", -"3 c #7776AE", -"4 c #E8E6D4", -"5 c #D5D3D1", -"6 c #D3D1CC", -"7 c #DCDAD5", -"8 c #B7B6B1", -"9 c #B7B5B1", -"0 c #D3D1CE", -"q c #DFDDCD", -"w c #807FBA", -"e c #2020C3", -"r c #9290A4", -"t c #B5B3AA", -"y c #C7C5C1", -"u c #DAD8D3", -"i c #D9D7D2", -"p c #C3C1BC", -"a c #ADACA8", -"s c #D6D4D0", -"d c #DAD8CA", -"f c #B8B69F", -"g c #E0DED4", -"h c #C9C7C4", -"j c #B1AFAB", -"k c #AEACA8", -"l c #C6C4BF", -"z c #D2D0CE", -"x c #D6D4D3", -"c c #CDCBC6", -"v c #A8A6A2", -"b c #D6D4CE", -"n c #D1CFCC", -"m c #AFAEAE", -"M c #D8D6D0", -"N c #CCCAC5", -"B c #B2B1AC", -"V c #ADABA7", -"C c #D8D6D2", -"Z c #E2E0CD", -"A c #DEDCC7", -"S c #A9A8A4", -"D c #CFCDC8", -"F c #D8D5D0", -"G c #B0AFAB", -"H c #B3B1AE", -"J c #B4B2A7", -"K c #6564BC", -"L c #4747AD", -"P c #C2C0B7", -"I c #D3D1CD", -"U c #E2E0DB", -"Y c #ADABA2", -"T c #0505D5", -"R c #0000E8", -"E c #BAB8B9", -"W c #DBD9D2", -"Q c #B0AFAA", -"! c #C1BFBB", -"~ c #A9A8A5", -"^ c #BCBBB0", -"/ c #9190B9", -"( c #7776A9", -") c #B6B4AA", -"_ c #B0AEAA", -"` c #BFBEB9", -"' c #ABAAA6", -"] c #B6B4B0", -"[ c #D0CEC9", -"{ c #DAD8D4", -"} c #E0DECF", -"| c #E6E4D4", -" . c #B8B6B3", -".. c #B5B3AF", -"X. c #B5B4B0", -"o. c #BEBDB8", -"O. c #D1CFCA", -"+. c #D1CFCD", -"@. c #DCDAD4", -"#. c #B4B3AE", -"$. c #B8B7B2", -"%. c #9D9C98", -"&. c #BAB8B4", -"*. c #D2D0CC", -"=. c #B2B0AC", -"-. c #BCBBB6", -";. c #9B9A96", -":. c #C0BEB9", -">. c #DFDDD3", -",. c #D8D6D1", -"<. c #B9B7B3", -"1. c #ABA9A5", -"2. c #BBBAB5", -"3. c #CAC8C3", -"4. c #D4D2C9", -"5. c #A6A4B1", -"6. c #CAC8C1", -"7. c #BBB9B4", -"8. c #BDBBB7", -"9. c #DAD8D2", -"0. c #E4E1CF", -"q. c #7876B4", -"w. c #0000F5", -"e. c #4343AA", -"r. c #C7C5B0", -"t. c #DAD8D7", -"y. c #DEDCD7", -"u. c #D2D0CB", -"i. c #B3B2AD", -"p. c #CCCAC6", -"a. c #E0DED0", -"s. c #9492BA", -"d. c #0101D2", -"f. c #5F5EA6", -"g. c #C1BFAE", -"h. c #B2B0AF", -"j. c #DEDCD6", -"k. c #DFDDD1", -"l. c #9A988D", -"z. c #CECCC8", -"x. c #AFAEA9", -"c. c #B3B1AD", -"v. c #C9C7C2", -"b. c #D6D4D2", -"n. c #ABA9A7", -"m. c #C8C6C1", -"M. c #BCBAB6", -"N. c #969591", -"B. c #A9A7A4", -"V. c #C5C4BF", -"C. c #B8B6B2", -"Z. c #E0DDD8", -"A. c #AFADA9", -"S. c #B3B2AE", -"D. c #C1C0BB", -"F. c #BFBDB9", -"G. c #BAB8B3", -"H. c #C0BEBA", -"J. c #C8C7C2", -"K. c #CBC9C4", -"L. c #B2B1AD", -"P. c #D0CFCA", -"I. c #D7D5D1", -"U. c #AAA8A4", -"Y. c #B9B8B3", -"T. c #C4C2BE", -"R. c #DBD8D3", -"E. c #D7D5CA", -"W. c #ACABA7", -"Q. c #C3C1BD", -"!. c #BFBDB8", -"~. c #CFCEC9", -"^. c #C2C0B8", -"/. c #8E8D9C", -"(. c #BBB9B5", -"). c #E0DED9", -"_. c #BAB9B4", -"`. c #C2C0BB", -"'. c #CDCBC7", -"]. c #E3E1CD", -"[. c #6C6BB8", -"{. c #0000F3", -"}. c #6160B7", -"|. c #EEEBD6", -" X c #ABA9A9", -".X c #BFBDBA", -"XX c #BEBCB9", -"oX c #8887B8", -"OX c #0808D9", -"+X c #6A69A4", -"@X c #BFBDAD", -"#X c #CCCAC7", -"$X c #B5B3B0", -"%X c #C5C3BA", -"&X c #C7C5BB", -"*X c #D9D7D3", -"=X c #D5D3CF", -"-X c #DBD9CD", -";X c #CFCDBB", -":X c #DCDACD", -">X c #ADABA8", -",X c #B0AEA6", -" c #0101E4", +", c #0000E8", +"< c #0000F2", +"1 c #0000F5", +"2 c #0000F9", +"3 c #4545C1", +"4 c #4141C7", +"5 c #6666C0", +"6 c #868695", +"7 c #959595", +"8 c #999990", +"9 c #9B9B9B", +"0 c gray62", +"q c #8E8EA1", +"w c #9292AA", +"e c #8080BE", +"r c #8888BD", +"t c #9C9CB1", +"y c #9292BF", +"u c #9494BF", +"i c #A9A9A9", +"p c #AAAAAA", +"a c #AAAAAB", +"s c gray67", +"d c #AEAEA9", +"f c #A9A9AD", +"g c #ABABAC", +"h c #ACACAC", +"j c gray68", +"k c #AEAEAE", +"l c #AFAFAF", +"z c #B8B8A5", +"x c #B1B1AC", +"c c #B2B2AC", +"v c #B5B5AD", +"b c #A6A6B7", +"n c #AFAFB0", +"m c #AFAFB3", +"M c gray69", +"N c #B1B1B1", +"B c #B2B2B1", +"V c #B2B2B2", +"C c #B2B2B3", +"Z c gray70", +"A c #B6B6B1", +"S c #B1B1B4", +"D c #B3B3B4", +"F c #B4B4B4", +"G c gray71", +"H c #B6B6B6", +"J c #B7B7B7", +"K c #BDBDB7", +"L c #B7B7B8", +"P c #B7B7BC", +"I c gray72", +"U c #B9B9B9", +"Y c gray73", +"T c #BBBBBB", +"R c #BABABF", +"E c #BCBCBC", +"W c gray74", +"Q c #BEBEBF", +"! c gray75", +"~ c #C0C0B4", +"^ c #C1C1B4", +"/ c #C1C1B6", +"( c #C7C7B7", +") c #C2C2BE", +"_ c #C2C2BF", +"` c #BFBFC0", +"' c #BCBCC5", +"] c #C0C0C0", +"[ c #C0C0C1", +"{ c #C1C1C1", +"} c gray76", +"| c #C3C3C3", +" . c #C5C5C1", +".. c #C7C7C2", +"X. c gray77", +"o. c #C5C5C5", +"O. c gray78", +"+. c #C9C9C7", +"@. c #C7C7C8", +"#. c gray79", +"$. c #CACAC9", +"%. c #C9C9CA", +"&. c #CACACA", +"*. c #CBCBCB", +"=. c gray80", +"-. c #CDCDCD", +";. c #CECECD", +":. c #CCCCCE", +">. c #CECECE", +",. c #CECECF", +"<. c gray81", +"1. c #D0D0C2", +"2. c #D7D7CF", +"3. c #D8D8CA", +"4. c #D9D9CC", +"5. c #DEDECE", +"6. c #D0D0D0", +"7. c #D1D1D0", +"8. c gray82", +"9. c #D1D1D3", +"0. c #D2D2D2", +"q. c LightGray", +"w. c #D4D4D0", +"e. c #D7D7D1", +"r. c #D1D1D4", +"t. c #D2D2D4", +"y. c #D3D3D4", +"u. c #D2D2D5", +"i. c #D3D3D5", +"p. c #D3D3D6", +"a. c gray83", +"s. c #D4D4D5", +"d. c #D5D5D5", +"f. c #D6D6D5", +"g. c #D5D5D6", +"h. c #D4D4D7", +"j. c gray84", +"k. c #D6D6D7", +"l. c #D7D7D7", +"z. c #DADAD1", +"x. c #DCDCD2", +"c. c #DBDBD4", +"v. c #D8D8D7", +"b. c #DADAD7", +"n. c #DCDCD4", +"m. c #DFDFD5", +"M. c #D5D5D8", +"N. c #D7D7D8", +"B. c #D6D6D9", +"V. c #D7D7D9", +"C. c #D8D8D8", +"Z. c #D9D9D8", +"A. c #D8D8D9", +"S. c gray85", +"D. c #DADAD8", +"F. c #DBDBD9", +"G. c #D9D9DA", +"H. c #DADADA", +"J. c #DADADB", +"K. c gray86", +"L. c #DDDDD8", +"P. c #DFDFD8", +"I. c #DCDCDA", +"U. c #DFDFDA", +"Y. c #DBDBDC", +"T. c #DADADE", +"R. c gainsboro", +"E. c gray87", +"W. c #E0E0CF", +"Q. c #E2E2D4", +"!. c #E3E3D5", +"~. c #E0E0D6", +"^. c #E0E0D7", +"/. c #E4E4D6", +"(. c #E6E6DB", +"). c #E0E0DC", +"_. c #E8E8DB", +"`. c #EDEDDE", +"'. c gray88", +"]. c #E1E1E1", +"[. c gray89", /* pixels */ -" . X . o ", -" . O + o @ # @ ", -" $ % & * = @ $ $ - ; : > $ ", -" , < 1 2 3 4 5 $ $ 6 7 8 9 - $ ", -" 0 q w e r t y u i $ $ $ u p a - $ ", -" s d f g h j k l i i $ z x c v o ", -" b n m . M - N B V : C Z A S D F $ ", -" $ G @ $ o - c H J K L P - I ", -" G $ 6 - U Y T R E W I ", -" @ Q $ $ u M ! ~ ^ / ( ) - $ ", -" @ _ 6 - o ` ' ] [ { } | ...7 $ ", -" 6 o X.6 o.' 8 O.- @ $ z +.@.#.$.7 I ", -" $ u o %.v &.*.- @ $ $ - =.-.@.$ ", -" I . $ @ - $ &.k ;.D 7 @ $ $ u ; :.u $ ", -" @ >.,.u 6 <.1.2.> 9 D i a 3.M ", -" @ 4.5.6.7.S 8.@ 9.i =.# o @ O.@ ", -" z 0.q.w.e.r.t.y. u.i i.p.o @ ", -" 0 a.s.d.f.g.h.: $ i j...3.o ", -" . k.g.l.z.3.9 x.c.v.c.D 7 $ $ ", -" . b.n.' ,.- @ m.M.N.B.V.u.u 9.@ $ $ ", -" $ C $.C.#.9.6 o Z.<.2.8.A.S.D.u.u 9.@ $ $ ", -" $ i D.F.G.H.u u.i C.J.y.@ K.&._ L.! P.9.u @ $ $ ", -" @ u.A.I.U.[ @ u Y.T.,.$ M R.o N 7._ =.H.[ i u @ ", -" $ u c.E.[ W.> i 7.Q.i $ $ $ o u ,.N M._ =.!.~.@ ", -" $ u ^./.O (.C.)._.`.i $ $ $ o u ,.'.-.Q c o ", -" z ].[.{.}.|. X# .XXX9.$ $ $ o u ,.. ", -" z } oXOX+X@X#X$X%X&X*X$ $ $ ", -" =X-X;X:XH.>X,X . ", -" $ tX5 $ " +"d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.C.d.d.d.d.", +"d.d.d.d.d.d.d.d.d.d.d.C.x.M.d.d.d.d.d.d.d.d.d.d.d.d.d.-.d.d.d.d.", +"d.d.d.d.d.d.d.d.d.w.C.' + q.d.d.d.d.d.d.d.d.d.d.d.C.N o.C.d.d.d.", +"d.d.d.d.d.d.d.d.d.r.Q.3 < + (.d.q.d.d.d.d.d.d.d.R.T H C.d.d.d.d.", +"d.d.d.d.d.d.d.d.d.d.m.e ; w Z %.C.C.d.d.d.d.d.C.o.h C.d.d.d.d.d.", +"d.d.d.d.d.d.d.d.d.d.M.z.z ).%.Z h %.C.C.d.r.M.-.s C.d.d.d.d.d.d.", +"d.d.d.d.d.d.d.d.d.d.d.r.N d.v.C.-.N h o.C.!.5.s -.C.d.d.d.d.d.d.", +"d.d.d.d.d.d.d.d.d.d.d.w.N d.d.d.C.R.-.H v 5 o _ C.d.d.d.d.d.d.d.", +"d.d.d.d.d.d.d.d.d.d.d.d.N d.d.d.d.d.C.[.d * > R U.r.d.d.d.d.d.d.", +"d.d.d.d.d.d.d.d.d.d.d.d.h d.d.d.C.C.{ s K y + Z Y.d.d.d.d.d.d.d.", +"d.d.d.d.d.d.d.d.d.d.d.d.h d.R.d.{ h H q.Y.U.(.L H C.d.d.d.d.d.d.", +"d.d.d.d.d.d.d.d.d.d.q.C.H q.{ h H q.R.d.r.q.r.U.D T R.r.d.d.d.d.", +"d.d.d.d.d.d.d.d.d.d.C.C.0 s T q.Y.d.d.d.d.d.d.d.Y.N W R.d.d.d.d.", +"d.d.d.d.d.d.d.d.C.q.W N 9 -.R.d.d.d.d.d.d.d.d.d.r.U.h { C.d.d.d.", +"d.d.d.d.U.C.C.q.W h T C.H q.d.d.d.d.d.d.d.d.d.d.d.d.C.h *.C.d.d.", +"d.d.d.w.b %.W s W d.C.C.N -.d.d.d.d.d.d.d.d.d.d.d.d.d.d.q.d.d.d.", +"d.r.!.% 1 . ( Y.).d.r.C.N -.C.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.", +"d.r.!.u & X / D o.d.C.R.H %.v.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.", +"d.d.r.)./ 8 :.*.H h N %.Z 2.R.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.", +"d.d.d.d.M.s h C.R.M.o.R 7 i o.r.C.C.M.w.d.d.d.d.d.d.d.d.d.d.d.d.", +"d.d.d.d.C.T H N C.d.C.[.I T K h N | q.C.C.C.d.r.d.d.d.d.d.d.d.d.", +"d.d.d.d.C.{ W T { C.q.v.T %.E.M.%.T N N { q.C.Y.d.d.d.d.d.d.d.d.", +"d.d.d.d.d.q.h C.s q.d.C.T { C.d.C.C.C.%.T N N { q.v.C.M.d.d.d.d.", +"d.d.d.d.d.C.H w.-.h C.C.W { C.d.d.d.d.C.C.C.*.K h N W q.d.d.d.d.", +"d.d.d.d.d.C.{ q C.K T [.T { C.d.d.d.d.d.d.d.C.C.C.-.W n -.d.d.d.", +"d.d.d.d.r.!.# < @ `.f -.` W C.d.d.d.d.d.d.d.d.d.d.C.Y.C.d.d.d.d.", +"d.d.d.d.r.m.r - O / :.D . .C.d.d.d.d.d.d.d.d.d.d.d.d.w.d.d.d.d.", +"d.d.d.d.d.d.m.1.v.{ n c 6 t U.r.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.", +"d.d.d.d.d.d.d.M.d.C.C.c = > P U.r.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.", +"d.d.d.d.d.d.d.d.d.d.M.4.4 : +.M.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.", +"d.d.d.d.d.d.d.d.d.d.d.M.4.3.v.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.", +"d.d.d.d.d.d.d.d.d.d.d.d.r.M.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d." }; /* XPM */ static const char *const xpm_icon_2[] = { /* columns rows colors chars-per-pixel */ -"48 48 92 1 ", -" c #797875", -". c #81807D", -"X c #232296", -"o c #0C0CBE", -"O c #1C1CB6", -"+ c #1010BF", -"@ c #2524A4", -"# c #3030AF", -"$ c #3837AB", -"% c #2A2AB8", -"& c #3D3CB0", -"* c #424296", -"= c #4C4B95", -"- c #646382", -"; c #6D6C8E", -": c #727185", -"> c #63629E", -", c #4544A6", -"< c #4948A7", -"1 c #5D5CA6", -"2 c #6A69A3", -"3 c #0000C2", -"4 c #0C0CC2", -"5 c #0000CC", -"6 c #1010C6", -"7 c #0000DD", -"8 c #0000E0", -"9 c #0000EB", -"0 c #0000F5", -"q c #0000FE", -"w c #807FA7", -"e c #81808A", -"r c #8C8B8A", -"t c #929080", -"y c #92918E", -"u c #959491", -"i c #999793", -"p c #9B9A96", -"a c #95949A", -"s c #9E9D99", -"d c #A09F9B", -"f c #A3A29D", -"g c #A8A79D", -"h c #ACAB9E", -"j c #B0AE9E", -"k c #B2B09F", -"l c #8382AA", -"z c #8F8DAA", -"x c #908FA9", -"c c #9694A0", -"v c #9492A9", -"b c #9C9BAB", -"n c #A6A5A1", -"m c #A8A7A3", -"M c #ABAAA5", -"N c #A6A4AC", -"B c #A8A6AE", -"V c #AEADA9", -"C c #B1AFAB", -"Z c #B4B2AD", -"A c #B6B4B2", -"S c #B8B7B3", -"D c #BCBAB6", -"F c #BFBEB9", -"G c #C0BEBB", -"H c #CAC8B7", -"J c #C4C2BD", -"K c #CFCDBC", -"L c #D3D1BC", -"P c #C6C5C0", -"I c #C9C7C2", -"U c #CCCAC5", -"Y c #CFCDC8", -"T c #D1CFC2", -"R c #D1CFCA", -"E c #D6D4C6", -"W c #DCDAC3", -"Q c #D5D3CE", -"! c #D9D7C9", -"~ c #DDDBCE", -"^ c #D6D4D0", -"/ c #D9D7D2", -"( c #DCDAD4", -") c #DEDCDA", -"_ c #E0DDCA", -"` c #E1DFD3", -"' c #E1DFDA", -"] c #E3E1CC", -"[ c #E3E1D4", -"{ c #E9E6D0", -"} c #EBE9D7", -"| c #E5E3DB", +"48 48 253 2 ", +" c #7B7B7B", +". c gray50", +"X c #222297", +"o c #0C0CBF", +"O c #0E0EBF", +"+ c #1919B7", +"@ c #1111BF", +"# c #1E1EB8", +"$ c #2525A5", +"% c #3939AD", +"& c #2B2BBA", +"* c #3030B0", +"= c #3D3DB2", +"- c #454597", +"; c #414199", +": c #4D4D98", +"> c #666687", +", c #727288", +"< c #6C6C90", +"1 c #4545A8", +"2 c #4949A9", +"3 c #5D5DA8", +"4 c #6464A2", +"5 c #6A6AA6", +"6 c #6B6BAA", +"7 c #0000C3", +"8 c #0C0CC4", +"9 c #0000CB", +"0 c #0000CC", +"q c #1111C0", +"w c #1010C6", +"e c #0000DD", +"r c #0000E1", +"t c #0000E9", +"y c #0000EB", +"u c #0000F1", +"i c #0000F5", +"p c #0000F6", +"a c #0000FC", +"s c #0000FD", +"d c blue", +"f c #82828F", +"g c #909083", +"h c #90908E", +"j c #8A8A90", +"k c #929292", +"l c #959595", +"z c gray59", +"x c #979797", +"c c #989898", +"v c #9A9A9A", +"b c #9B9B9B", +"n c #9E9E9B", +"m c gray61", +"M c #9C9C9D", +"N c #9D9D9D", +"B c #9E9E9D", +"V c gray62", +"C c #9F9F9F", +"Z c #8181AC", +"A c #8383AF", +"S c #8E8EAE", +"D c #8F8FAE", +"F c #9696A0", +"G c #9696A5", +"H c #9090AE", +"J c #9494AF", +"K c #9A9AB0", +"L c #9E9EB1", +"P c #9E9EB2", +"I c #A0A0A0", +"U c gray63", +"Y c #A2A2A2", +"T c gray64", +"R c #A4A4A0", +"E c #A4A4A3", +"W c #A6A6A2", +"Q c #A4A4A4", +"! c #A4A4A5", +"~ c #A5A5A5", +"^ c gray65", +"/ c #A7A7A7", +"( c #A9A9A1", +") c #A9A9A3", +"_ c #A9A9A6", +"` c #ACACA4", +"' c #AFAFA4", +"] c #ACACA7", +"[ c #A7A7A8", +"{ c #A5A5AF", +"} c gray66", +"| c #A9A9A9", +" . c #AAAAAA", +".. c #AAAAAB", +"X. c gray67", +"o. c #AEAEAA", +"O. c #ACACAC", +"+. c gray68", +"@. c #AEAEAE", +"#. c #AFAFAF", +"$. c #B0B0A4", +"%. c #B2B2A5", +"&. c #B0B0A9", +"*. c #B4B4AF", +"=. c #A7A7B4", +"-. c #A8A8B3", +";. c #B1B1B1", +":. c #B0B0B3", +">. c #B2B2B2", +",. c #B4B4B5", +"<. c gray71", +"1. c #B6B6B5", +"2. c #B6B6B6", +"3. c #B6B6B7", +"4. c #B7B7B7", +"5. c #B4B4BA", +"6. c #B5B5BA", +"7. c gray72", +"8. c #B8B8B9", +"9. c #B9B9B9", +"0. c gray73", +"q. c #BBBBBB", +"w. c #BCBCBB", +"e. c #BBBBBC", +"r. c #BBBBBD", +"t. c #BCBCBC", +"y. c gray74", +"u. c gray", +"i. c #BFBFBE", +"p. c #BEBEBF", +"a. c gray75", +"s. c #CACABE", +"d. c #C0C0C0", +"f. c #C0C0C1", +"g. c #C1C1C1", +"h. c #C0C0C2", +"j. c #C1C1C2", +"k. c gray76", +"l. c #C3C3C3", +"z. c #C3C3C4", +"x. c gray77", +"c. c #C5C5C5", +"v. c #C5C5C6", +"b. c #C6C6C6", +"n. c gray78", +"m. c #CFCFC3", +"M. c #C8C8C8", +"N. c gray79", +"B. c #C9C9CB", +"V. c #CACACA", +"C. c #CBCBCB", +"Z. c #CACACC", +"A. c #CBCBCD", +"S. c gray80", +"D. c #CDCDCD", +"F. c #CECECE", +"G. c gray81", +"H. c #D2D2C3", +"J. c #D6D6C5", +"K. c #D1D1C9", +"L. c #D6D6CD", +"P. c #DADAC8", +"I. c #DBDBCA", +"U. c #D8D8CF", +"Y. c #DDDDCC", +"T. c #DDDDCD", +"R. c #D0D0D0", +"E. c gray82", +"W. c #D2D2D2", +"Q. c #D2D2D3", +"!. c LightGray", +"~. c #D4D4D3", +"^. c #D1D1D4", +"/. c #D2D2D4", +"(. c #D3D3D4", +"). c #D2D2D5", +"_. c #D3D3D5", +"`. c #D2D2D6", +"'. c #D3D3D6", +"]. c #D3D3D7", +"[. c gray83", +"{. c #D5D5D4", +"}. c #D4D4D5", +"|. c #D5D5D5", +" X c #D4D4D6", +".X c #D5D5D7", +"XX c gray84", +"oX c #D6D6D7", +"OX c #D7D7D7", +"+X c #D8D8D0", +"@X c #D9D9D0", +"#X c #DBDBD7", +"$X c #DFDFD5", +"%X c #DDDDD7", +"&X c #D4D4D8", +"*X c #D5D5D8", +"=X c #D6D6D8", +"-X c #D7D7D9", +";X c #D8D8D8", +":X c #D9D9D8", +">X c gray85", +",X c #DADAD9", +"}^RQQQQQQQQQQQQ(Fp(QQQQQQQQ", -"QQQ^QQQQQQQQQQQQ`z56egP(^QQQQQ^QQQQ^Uy^QQQQQQQQQ", -"^QQQ^QQQQQQQQQ^QR`pg|GddJ((QQQQQQQQ^uU/QQQQQQQQ!", -"QQ^QQQQQQ^QQQQQQQ(DS(((JddG(^QQQQR(sD(RQQQQQQQQ^", -"QQ!QQQ^QQQQQQQQQQ(AZ(RQ^(JgpG^(Q[|mM(QQQQQQQQQQQ", -"QQQQQQQQQQQ^QQQQQ(SC(QQQQ^(UfpFTxam(QQQQQQQQQQQQ", -"QQQQ^QQQQQQQQQQQR(SC(RQQQQQ^(Uk*03B~QQQQQQ^QQQ^Q", -"QQQQQQQQ!^QQQQQQQ(DV(QQQQQQR^'L@q9z[QQ^QQQQQQQQQ", -"QQQQQQQQQQQQQQQQQ(GV(QQQQQ^'Pdfa%*h)RQQQQQQQQQQQ", -"QQQQQQQQQQQQQQ^QQ^Gm(QQQ^(PdsF('W_gZ(QQQ^QQQQ^QQ", -"QQQQQQQ/QQQ^QQQQQ^JM(R((JdsG((QRQQ(sA)QQQQQQQQ^Q", -"QQQQQQQQQQQQQQQQQ^Jg'(GddJ(^QQQQQQQ(pD(QQQQQQQQQ", -"QQQQQQQQQQQQQQQQQQUVJpdJ(^QQQQQQQQQ^^iJ(QQQQQQQQ", -"Q/QQQQQQQ^QQQQQQ((C mJ'(QQQQQQQQQQQQ^QuJ/QQQQ^QQ", -"QQQQQQQQQQQQQQ(^Sdpd'QQQQQQQQQQQQQQQQ^QuU(QQQQQQ", -"QQQQQQQRQQQQ(QSinYQn/QQQQQQ^QQQQQQQQQQ^UuI^QQQQQ", -"QQQQQQR'(Q`QAimR(^Yf^QQQQ!QQQQQQQQQQQQQ(PV/QQQQQ", -"QQQQQ/!nD/CpVY'^QQRd(RQQQQQQQ^QQQQQQQQQQ/^QQQQQQ", -"QQQQQ_27+rAR(QRQQQRd/QQQQQQQQ/QQQQQQQQQQQQQQQQQQ", -"QQQQQ!#q9;EQ((QQQ/QdQQQQQQQQQQQQQQ^!QQQQQQQQQQQQ", -"Q/QQQ(v+XMmdmG/(^QRdQQQQQQQQQQQQ^QQQQQQQQQQQQ^QQ", -"QQQQQQ(Ltn'YFndmJ^(fQQQQQQQQQQQQQQQQQQQQQQQQQQQQ", -"QQQQQQR(CpC)^'RDmdmyQ((QRQQQQQQQQQQQQ^QQQQQQQQQQ", -"QQQQQQQ(FCnG/RQ((QG.pmGQ((QQQQQQQQQQQQQQQQ^QQ!QQ", -"QQQQQQQQRdYiQQQQQQ(mYGmdmGR((QQQQQQ^QQQQQQQQQ^QQ", -"QQQQQQQQ(nKGf'QQQQ^dY((QJmdmDR((QQQQQQ^QQQQQQQQQ", -"QQQQQQQQ^Gm|gS(QQR/fU^QQ/(QJVdgSR((QQQQQQQQQQQQQ", -"QQQQQQQQQQdQ^iY^QQ/gU^QQQQQ/(^JMfnSR((^QQQQQQQQ^", -"QQQQQQ!^Q(mG(Js(QQ(nU^Q^QQQQQQ^(^PVdfSY((^!QQQQQ", -"QQQQQQQQQ^DZ|(VV(Q/nP^QQQQQQQ^QQQ^)^JCdfSYQQQQQQ", -"Q^QQQ^QQQQE:b!(pP^^nP^QQQQQQQQQQQQQQ^(^ICS/QQQQQ", -"QQQQQQQQQ`w77l'UiQ(MJ^QQQ^QQQQQQQQQQ^QQ^(/QQQQQQ", -"QQQQQQQQR]1qq=_'Sn|nJ^QQQQQ!QQQQQQ^QQQQ!QQQQQQ^Q", -"QQ^QQQ^QQ(F$&fpC'mGAJ(QQQQQ^QQQQQQQQQQ^QQQQQQQQQ", -"QQQQQQQQQQ^WW)QmpShrV[QQQQQQQQQQQQ^QQQQQQQQQQQQQ", -"QQQQQQQQQQQQ^QQ)UM-54N(QQQ^QQQQQQQQQQQQ^QQQQQQQQ", -"^QQQQ^QQQQQQQQQQ^{,q02{RQQQQQQQQQQQQQQQQQQQQQQQQ", -"QQQQQQQQQQQQQQQQQ~b4OA/QQQQQQQQQQQQQQQQQQQQQQQQQ", -"QQ^QQ^QQQQQQQQQQQQ(HL~QQQQQQQ^!Q^QQQQQQQQQQ^QQQ^", -"QQQQQQQQQ^QQQQQQQQQ^^QQQQQ^QQQQQQQQQQQQQQQQQQQQQ", -"QQQQQQQQQQQQQQQQQQQQQQQQ^QQQQQQQQQ^QQQQQQ^QQQ^QQ", -"Q^QQQQQQQQQQQQQQQQQQQQQQQQQQQ^QQ^QQQQQQQQ!QQQQQQ" +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.,X|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.&X(.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.S.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.(.MX' $.MX!.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.!.uXU p.,X(.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.(.0XP o + 5.,X!.|.|.|.|.|.|.|.|.|.|.|.|.|.!.uX>. .uX!.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.(.fX2 d p 4 BX&X!.|.|.|.|.|.|.|.|.|.|.|.!.uXp.V ,X|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.(.0XH 9 w f _ b.uX,X!.(.|.|.|.|.|.|.|.(.,XS.x |.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.(.NXn W FXa.U U l.tX,X(.|.|.|.|.(.|.|.,Xb M.,X|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.,X0.0.tX,XuXz.U U l.,X,X|.(.|.(.(.uXF w.uX~.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.(.tX5.>.tX(.!.,XuXM.~ U p.,X,X&XMXFX .O.uX~.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.,X0.>.,X|.|.|.|.|.uXM.~ V a.K.S v _ uX|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.tX0.>.uX|.|.|.|.|.~.&XuXZ.$.- y 7 -.uX|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.(.,Xp.O.,X!.|.|.|.|.|.(.|.JXJ.$ a e H xX!.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.!.,Xp.O.uX|.|.|.|.~.,XuXM.U W G & % ' CX!.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.!.,Xl. .uX!.|.!.,XuXM.~ U p.,XMXI.gX! >.uX!.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.,Xl. .tX!.,XtXb.U U a.tX,X|.(.(.(.uXF 9.MX(.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.!.,Xz.~ CX,Xl.U U b.uX,X|.!.|.|.|.|.|.tXn w.uX!.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.(.,XS.X.n.V U b.,X,X(.(.|.|.|.|.|.|.|.|.|.x l.,X!.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.,XuX<. .b.,X,X(.|.|.|.|.|.|.|.|.|.|.(.,X|.x b.,X!.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.,X|.p.V m V AX|.!.|.|.|.|.|.|.|.|.|.|.|.|.|.(.,X!.x Z.uX|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.!.|.!.|.uX|.p.V .S.|.~ &X|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.(.,XS.x M.&X|.|.|.|.|.", +"|.|.|.|.|.|.(.0X,X(.uX|.0.b .S.uX,XS.U ,X~.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.!.,Xb.O.0X(.|.|.|.|.", +"|.|.|.|.|.&X@X{ p.#X,.V .!.uX|.(.|.!.U ,X|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.,X&X|.|.|.|.|.|.", +"|.|.|.|.(.$X6 e q j <.!.0X|.!.|.|.|.!.U &X|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.&XI.* d y < @X&XtX,X|.|.(.|.!.U #X|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.(.0XJ @ X _ [ m X.z.|.uX,X|.!.U |.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.(.$XH.g ~ AXR.e.~ V O.l.|.,X~ |.(.(.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.(.CX-.n &.uX,X,X!.p.~ V .k !.uX,X|.(.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.(.,Xp.>.~ l.,X!.|.,XuX|.p.. b .a.|.uX,X|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.(.|.(.U !.x |.|.|.!.|.|.uX .S.l. .V [ p.|.,XuX|.!.(.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.(.tX~ n.a.U CX!.|.|.|.|.U !.,XuX~.l. .V ~ p.!.uX,X|.!.!.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.(.tXp. .LXU 0.,X(.|.!.,XU S.&X!.|.,XuX|.l.O.V ~ 0.!.tX,X|.!.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.!.V &X|.b !.|.|.(.,X~ S.,X|.|.(.!.|.,XuX|.z.O.V ~ 0.!.uXuX|.|.(.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.!.uX~ z.uXb.b tX|.|.tX~ M.,X|.|.|.|.|.|.!.|.,XuX|.b.O.V ~ 0.R.,XuX&X&X|.|.|.|.|.", +"|.|.|.|.|.|.|.|.(.,Xp.&.FXuXO.O.uX!.tX~ M.,X|.|.|.|.|.|.|.|.|.(.|.,XuX,XM.&.F W <.K.#X|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.L., K @XuXm b.|.,X~ b.,X|.|.|.|.|.|.|.|.|.|.|.|.(.(.,XuX,XM. .0.,X(.|.|.|.|.", +"|.|.|.|.|.|.|.|.(.kXZ r e A MXZ.b |.uX .z.,X|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.&XuX&X|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.(.gX3 a d : fXJX0.U LX_ l.&X(.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.(.,Xs.% = U V ,.AX[ a.5.z.,X|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.,XT.T.CX!. .V e.( h O.kX(.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.(.].(.(.|.uXS.&.> 0 8 -.,X(.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.(.&XhX1 d p 5 xX(.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.!.0XP q # 5.0X(.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.(.0Xs.m.0X|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.(.&X&X(.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.", +"|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|." }; const char *const *const xpm_icons[] = { diff -Nru sgt-puzzles-20140928.r10274/icons/untangle.sav sgt-puzzles-20160429.b31155b/icons/untangle.sav --- sgt-puzzles-20140928.r10274/icons/untangle.sav 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/icons/untangle.sav 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,16 @@ +SAVEFILE:41:Simon Tatham's Portable Puzzle Collection +VERSION :1:1 +GAME :8:Untangle +PARAMS :2:10 +CPARAMS :2:10 +SEED :15:761628688787632 +DESC :63:0-1,0-5,0-8,0-9,1-4,1-8,2-6,2-7,3-5,3-6,3-9,4-5,4-7,5-7,6-7,8-9 +AUXINFO :182:01bee8258e3164fe966f294b2837b6584b965b8d8e97571ba48f26c9bc0a91ac4b49fb4652bfaa5c340c82c57afbaa4620f2f6d49d7a7b330a66594d2b88c499d57c4093379b7dc322f2afa1ebab81004585751c39c19f8f9930c4 +NSTATES :1:7 +STATEPOS:1:6 +MOVE :12:P8:168,16/64 +MOVE :12:P0:186,85/64 +MOVE :12:P2:47,254/64 +MOVE :13:P5:131,153/64 +MOVE :12:P3:75,126/64 +MOVE :12:P7:93,303/64 Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/icons/untangle-web.png and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/icons/untangle-web.png differ diff -Nru sgt-puzzles-20140928.r10274/inertia.c sgt-puzzles-20160429.b31155b/inertia.c --- sgt-puzzles-20140928.r10274/inertia.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/inertia.c 2016-04-29 00:30:09.000000000 +0000 @@ -735,7 +735,7 @@ static char *solve_game(const game_state *state, const game_state *currstate, const char *aux, char **error) { - int w = state->p.w, h = state->p.h, wh = w*h; + int w = currstate->p.w, h = currstate->p.h, wh = w*h; int *nodes, *nodeindex, *edges, *backedges, *edgei, *backedgei, *circuit; int nedges; int *dist, *dist2, *list; @@ -1453,7 +1453,41 @@ static char *game_text_format(const game_state *state) { - return NULL; + int w = state->p.w, h = state->p.h, r, c; + int cw = 4, ch = 2, gw = cw*w + 2, gh = ch * h + 1, len = gw * gh; + char *board = snewn(len + 1, char); + + sprintf(board, "%*s+\n", len - 2, ""); + + for (r = 0; r < h; ++r) { + for (c = 0; c < w; ++c) { + int cell = r*ch*gw + cw*c, center = cell + gw*ch/2 + cw/2; + int i = r*w + c; + switch (state->grid[i]) { + case BLANK: break; + case GEM: board[center] = 'o'; break; + case MINE: board[center] = 'M'; break; + case STOP: board[center-1] = '('; board[center+1] = ')'; break; + case WALL: memset(board + center - 1, 'X', 3); + } + + if (r == state->py && c == state->px) { + if (!state->dead) board[center] = '@'; + else memcpy(board + center - 1, ":-(", 3); + } + board[cell] = '+'; + memset(board + cell + 1, '-', cw - 1); + for (i = 1; i < ch; ++i) board[cell + i*gw] = '|'; + } + for (c = 0; c < ch; ++c) { + board[(r*ch+c)*gw + gw - 2] = "|+"[!c]; + board[(r*ch+c)*gw + gw - 1] = '\n'; + } + } + memset(board + len - gw, '-', gw - 2); + for (c = 0; c < w; ++c) board[len - gw + cw*c] = '+'; + + return board; } struct game_ui { @@ -1611,6 +1645,38 @@ return dupstr(buf); } +static void install_new_solution(game_state *ret, const char *move) +{ + int i; + soln *sol; + assert (*move == 'S'); + ++move; + + sol = snew(soln); + sol->len = strlen(move); + sol->list = snewn(sol->len, unsigned char); + for (i = 0; i < sol->len; ++i) sol->list[i] = move[i] - '0'; + + if (ret->soln && --ret->soln->refcount == 0) { + sfree(ret->soln->list); + sfree(ret->soln); + } + + ret->soln = sol; + sol->refcount = 1; + + ret->cheated = TRUE; + ret->solnpos = 0; +} + +static void discard_solution(game_state *ret) +{ + --ret->soln->refcount; + assert(ret->soln->refcount > 0); /* ret has a soln-pointing dup */ + ret->soln = NULL; + ret->solnpos = 0; +} + static game_state *execute_move(const game_state *state, const char *move) { int w = state->p.w, h = state->p.h /*, wh = w*h */; @@ -1618,29 +1684,12 @@ game_state *ret; if (*move == 'S') { - int len, i; - soln *sol; - /* * This is a solve move, so we don't actually _change_ the * grid but merely set up a stored solution path. */ - move++; - len = strlen(move); - sol = snew(soln); - sol->len = len; - sol->list = snewn(len, unsigned char); - for (i = 0; i < len; i++) - sol->list[i] = move[i] - '0'; ret = dup_game(state); - ret->cheated = TRUE; - if (ret->soln && --ret->soln->refcount == 0) { - sfree(ret->soln->list); - sfree(ret->soln); - } - ret->soln = sol; - ret->solnpos = 0; - sol->refcount = 1; + install_new_solution(ret, move); return ret; } @@ -1681,22 +1730,18 @@ } if (ret->soln) { - /* - * If this move is the correct next one in the stored - * solution path, advance solnpos. - */ - if (ret->soln->list[ret->solnpos] == dir && - ret->solnpos+1 < ret->soln->len) { - ret->solnpos++; + if (ret->dead || ret->gems == 0) + discard_solution(ret); + else if (ret->soln->list[ret->solnpos] == dir) { + ++ret->solnpos; + assert(ret->solnpos < ret->soln->len); /* or gems == 0 */ + assert(!ret->dead); /* or not a solution */ } else { - /* - * Otherwise, the user has strayed from the path, so - * the path is no longer valid. - */ - ret->soln->refcount--; - assert(ret->soln->refcount > 0);/* `state' at least still exists */ - ret->soln = NULL; - ret->solnpos = 0; + char *error = NULL, *soln = solve_game(NULL, ret, NULL, &error); + if (!error) { + install_new_solution(ret, soln); + sfree(soln); + } else discard_solution(ret); } } @@ -2181,7 +2226,7 @@ dup_game, free_game, TRUE, solve_game, - FALSE, game_can_format_as_text_now, game_text_format, + TRUE, game_can_format_as_text_now, game_text_format, new_ui, free_ui, encode_ui, diff -Nru sgt-puzzles-20140928.r10274/inertia.R sgt-puzzles-20160429.b31155b/inertia.R --- sgt-puzzles-20140928.r10274/inertia.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/inertia.R 2016-04-29 00:30:09.000000000 +0000 @@ -15,5 +15,5 @@ !end !begin >gamedesc.txt -inertia:inertia.exe:Inertia:Gem-collecting puzzle +inertia:inertia.exe:Inertia:Gem-collecting puzzle:Collect all the gems without running into any of the mines. !end diff -Nru sgt-puzzles-20140928.r10274/install-sh sgt-puzzles-20160429.b31155b/install-sh --- sgt-puzzles-20140928.r10274/install-sh 2014-09-29 00:30:13.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/install-sh 2016-04-29 00:30:13.000000000 +0000 @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2011-01-19.21; # UTC +scriptversion=2014-09-12.12; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -35,25 +35,21 @@ # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it +# 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. +tab=' ' nl=' ' -IFS=" "" $nl" +IFS=" $tab$nl" -# set DOITPROG to echo to test this script +# Set DOITPROG to "echo" to test this script. -# Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi +doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. @@ -68,17 +64,6 @@ rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - posix_mkdir= # Desired mode of installed file. @@ -97,7 +82,7 @@ dst_arg= copy_on_change=false -no_target_directory= +is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE @@ -137,46 +122,57 @@ -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" - shift;; + shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; -o) chowncmd="$chownprog $2" - shift;; + shift;; -s) stripcmd=$stripprog;; - -t) dst_arg=$2 - # Protect names problematic for `test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; - -T) no_target_directory=true;; + -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; - --) shift - break;; + --) shift + break;; - -*) echo "$0: invalid option: $1" >&2 - exit 1;; + -*) echo "$0: invalid option: $1" >&2 + exit 1;; *) break;; esac shift done +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. @@ -190,7 +186,7 @@ fi shift # arg dst_arg=$arg - # Protect names problematic for `test' and other utilities. + # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac @@ -202,12 +198,21 @@ echo "$0: no input file specified." >&2 exit 1 fi - # It's OK to call `install-sh -d' without argument. + # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 @@ -223,16 +228,16 @@ *[0-7]) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw='% 200' + u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw=,u+rw + u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac @@ -240,7 +245,7 @@ for src do - # Protect names problematic for `test' and other utilities. + # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac @@ -269,41 +274,15 @@ # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - + dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi @@ -314,74 +293,81 @@ if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writeable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + # $RANDOM is not portable (e.g. dash); use it when possible to + # lower collision chance + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 + + # As "mkdir -p" follows symlinks and we work in /tmp possibly; so + # create the $tmpdir first (and fail if unsuccessful) to make sure + # that nobody tries to guess the $tmpdir name. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac;; esac if $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else @@ -391,53 +377,51 @@ # directory the slow way, step by step, checking for races as we go. case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; esac - eval "$initialize_posix_glob" - oIFS=$IFS IFS=/ - $posix_glob set -f + set -f set fnord $dstdir shift - $posix_glob set +f + set +f IFS=$oIFS prefixes= for d do - test X"$d" = X && continue + test X"$d" = X && continue - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ done if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true fi fi fi @@ -472,15 +456,12 @@ # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - + set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then @@ -493,24 +474,24 @@ # to itself, or perhaps because mv is so ancient that it does not # support -f. { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 diff -Nru sgt-puzzles-20140928.r10274/keen.c sgt-puzzles-20160429.b31155b/keen.c --- sgt-puzzles-20140928.r10274/keen.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/keen.c 2016-04-29 00:30:09.000000000 +0000 @@ -1,5 +1,6 @@ /* - * keen.c: an implementation of the Times's 'KenKen' puzzle. + * keen.c: an implementation of the Times's 'KenKen' puzzle, and + * also of Nikoli's very similar 'Inshi No Heya' puzzle. */ #include @@ -61,7 +62,7 @@ }; struct game_params { - int w, diff; + int w, diff, multiplication_only; }; struct clues { @@ -85,19 +86,22 @@ ret->w = 6; ret->diff = DIFF_NORMAL; + ret->multiplication_only = FALSE; return ret; } const static struct game_params keen_presets[] = { - { 4, DIFF_EASY }, - { 5, DIFF_EASY }, - { 6, DIFF_EASY }, - { 6, DIFF_NORMAL }, - { 6, DIFF_HARD }, - { 6, DIFF_EXTREME }, - { 6, DIFF_UNREASONABLE }, - { 9, DIFF_NORMAL }, + { 4, DIFF_EASY, FALSE }, + { 5, DIFF_EASY, FALSE }, + { 5, DIFF_EASY, TRUE }, + { 6, DIFF_EASY, FALSE }, + { 6, DIFF_NORMAL, FALSE }, + { 6, DIFF_NORMAL, TRUE }, + { 6, DIFF_HARD, FALSE }, + { 6, DIFF_EXTREME, FALSE }, + { 6, DIFF_UNREASONABLE, FALSE }, + { 9, DIFF_NORMAL, FALSE }, }; static int game_fetch_preset(int i, char **name, game_params **params) @@ -111,7 +115,8 @@ ret = snew(game_params); *ret = keen_presets[i]; /* structure copy */ - sprintf(buf, "%dx%d %s", ret->w, ret->w, keen_diffnames[ret->diff]); + sprintf(buf, "%dx%d %s%s", ret->w, ret->w, keen_diffnames[ret->diff], + ret->multiplication_only ? ", multiplication only" : ""); *name = dupstr(buf); *params = ret; @@ -149,6 +154,11 @@ p++; } } + + if (*p == 'm') { + p++; + params->multiplication_only = TRUE; + } } static char *encode_params(const game_params *params, int full) @@ -157,7 +167,8 @@ sprintf(ret, "%d", params->w); if (full) - sprintf(ret + strlen(ret), "d%c", keen_diffchars[params->diff]); + sprintf(ret + strlen(ret), "d%c%s", keen_diffchars[params->diff], + params->multiplication_only ? "m" : ""); return dupstr(ret); } @@ -167,7 +178,7 @@ config_item *ret; char buf[80]; - ret = snewn(3, config_item); + ret = snewn(4, config_item); ret[0].name = "Grid size"; ret[0].type = C_STRING; @@ -180,10 +191,15 @@ ret[1].sval = DIFFCONFIG; ret[1].ival = params->diff; - ret[2].name = NULL; - ret[2].type = C_END; + ret[2].name = "Multiplication only"; + ret[2].type = C_BOOLEAN; ret[2].sval = NULL; - ret[2].ival = 0; + ret[2].ival = params->multiplication_only; + + ret[3].name = NULL; + ret[3].type = C_END; + ret[3].sval = NULL; + ret[3].ival = 0; return ret; } @@ -194,6 +210,7 @@ ret->w = atoi(cfg[0].sval); ret->diff = cfg[1].ival; + ret->multiplication_only = cfg[2].ival; return ret; } @@ -234,6 +251,36 @@ * digit constraints in that box. We expect to find the digits * of the candidate layout in ctx->dscratch, and we update * ctx->iscratch as appropriate. + * + * The contents of ctx->iscratch are completely different + * depending on whether diff == DIFF_HARD or not. This function + * uses iscratch completely differently between the two cases, and + * the code in solver_common() which consumes the result must + * likewise have an if statement with completely different + * branches for the two cases. + * + * In DIFF_EASY and DIFF_NORMAL modes, the valid entries in + * ctx->iscratch are 0,...,n-1, and each of those entries + * ctx->iscratch[i] gives a bitmap of the possible digits in the + * ith square of the clue box currently under consideration. So + * each entry of iscratch starts off as an empty bitmap, and we + * set bits in it as possible layouts for the clue box are + * considered (and the difference between DIFF_EASY and + * DIFF_NORMAL is just that in DIFF_EASY mode we deliberately set + * more bits than absolutely necessary, hence restricting our own + * knowledge). + * + * But in DIFF_HARD mode, the valid entries are 0,...,2*w-1 (at + * least outside *this* function - inside this function, we also + * use 2*w,...,4*w-1 as scratch space in the loop below); the + * first w of those give the possible digits in the intersection + * of the current clue box with each column of the puzzle, and the + * next w do the same for each row. In this mode, each iscratch + * entry starts off as a _full_ bitmap, and in this function we + * _clear_ bits for digits that are absent from a given row or + * column in each candidate layout, so that the only bits which + * remain set are those for digits which have to appear in a given + * row/column no matter how the clue box is laid out. */ if (diff == DIFF_EASY) { unsigned mask = 0; @@ -292,8 +339,14 @@ long value = ctx->clues[box] & ~CMASK; long op = ctx->clues[box] & CMASK; + /* + * Initialise ctx->iscratch for this clue box. At different + * difficulty levels we must initialise a different amount of + * it to different things; see the comments in + * solver_clue_candidate explaining what each version does. + */ if (diff == DIFF_HARD) { - for (i = 0; i < n; i++) + for (i = 0; i < 2*w; i++) ctx->iscratch[i] = (1 << (w+1)) - (1 << 1); } else { for (i = 0; i < n; i++) @@ -407,6 +460,13 @@ break; } + /* + * Do deductions based on the information we've now + * accumulated in ctx->iscratch. See the comments above in + * solver_clue_candidate explaining what data is left in here, + * and how it differs between DIFF_HARD and lower difficulty + * levels (hence the big if statement here). + */ if (diff < DIFF_HARD) { #ifdef STANDALONE_SOLVER char prefix[256]; @@ -912,7 +972,9 @@ singletons[i] = 0; j = dsf_canonify(dsf, i); k = dsf_size(dsf, j); - if (j == i && k > 2) { + if (params->multiplication_only) + singletons[j] = F_MUL; + else if (j == i && k > 2) { singletons[j] |= F_ADD | F_MUL; } else if (j != i && k == 2) { /* Fetch the two numbers and sort them into order. */ @@ -1760,7 +1822,7 @@ } static void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues, - int x, int y, long tile) + int x, int y, long tile, int only_one_op) { int w = clues->w /* , a = w*w */; int tx, ty, tw, th; @@ -1790,6 +1852,18 @@ draw_rect(dr, cx, cy, cw, ch, (tile & DF_HIGHLIGHT) ? COL_HIGHLIGHT : COL_BACKGROUND); + /* pencil-mode highlight */ + if (tile & DF_HIGHLIGHT_PENCIL) { + int coords[6]; + coords[0] = cx; + coords[1] = cy; + coords[2] = cx+cw/2; + coords[3] = cy; + coords[4] = cx; + coords[5] = cy+ch/2; + draw_polygon(dr, coords, 3, COL_HIGHLIGHT, COL_HIGHLIGHT); + } + /* * Draw the corners of thick lines in corner-adjacent squares, * which jut into this square by one pixel. @@ -1803,18 +1877,6 @@ if (x+1 < w && y+1 < w && dsf_canonify(clues->dsf, y*w+x) != dsf_canonify(clues->dsf, (y+1)*w+x+1)) draw_rect(dr, tx+TILESIZE-1-2*GRIDEXTRA, ty+TILESIZE-1-2*GRIDEXTRA, GRIDEXTRA, GRIDEXTRA, COL_GRID); - /* pencil-mode highlight */ - if (tile & DF_HIGHLIGHT_PENCIL) { - int coords[6]; - coords[0] = cx; - coords[1] = cy; - coords[2] = cx+cw/2; - coords[3] = cy; - coords[4] = cx; - coords[5] = cy+ch/2; - draw_polygon(dr, coords, 3, COL_HIGHLIGHT, COL_HIGHLIGHT); - } - /* Draw the box clue. */ if (dsf_canonify(clues->dsf, y*w+x) == y*w+x) { long clue = clues->clues[y*w+x]; @@ -1830,7 +1892,7 @@ * want to display them right if so. */ sprintf (str, "%ld%s", clueval, - (size == 1 ? "" : + (size == 1 || only_one_op ? "" : cluetype == C_ADD ? "+" : cluetype == C_SUB ? ds->minus_sign : cluetype == C_MUL ? ds->times_sign : @@ -2003,7 +2065,8 @@ if (ds->tiles[y*w+x] != tile) { ds->tiles[y*w+x] = tile; - draw_tile(dr, ds, state->clues, x, y, tile); + draw_tile(dr, ds, state->clues, x, y, tile, + state->par.multiplication_only); } } } diff -Nru sgt-puzzles-20140928.r10274/keen.R sgt-puzzles-20160429.b31155b/keen.R --- sgt-puzzles-20140928.r10274/keen.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/keen.R 2016-04-29 00:30:09.000000000 +0000 @@ -21,5 +21,5 @@ !end !begin >gamedesc.txt -keen:keen.exe:Keen:Arithmetic Latin square puzzle +keen:keen.exe:Keen:Arithmetic Latin square puzzle:Complete the latin square in accordance with the arithmetic clues. !end diff -Nru sgt-puzzles-20140928.r10274/lightup.R sgt-puzzles-20160429.b31155b/lightup.R --- sgt-puzzles-20140928.r10274/lightup.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/lightup.R 2016-04-29 00:30:09.000000000 +0000 @@ -20,5 +20,5 @@ !end !begin >gamedesc.txt -lightup:lightup.exe:Light Up:Light-bulb placing puzzle +lightup:lightup.exe:Light Up:Light-bulb placing puzzle:Place bulbs to light up all the squares. !end diff -Nru sgt-puzzles-20140928.r10274/list.c sgt-puzzles-20160429.b31155b/list.c --- sgt-puzzles-20140928.r10274/list.c 2014-09-29 00:35:53.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/list.c 2016-04-29 00:37:35.000000000 +0000 @@ -15,6 +15,7 @@ A(fifteen) \ A(filling) \ A(flip) \ + A(flood) \ A(galaxies) \ A(guess) \ A(inertia) \ @@ -26,6 +27,7 @@ A(mines) \ A(net) \ A(netslide) \ + A(palisade) \ A(pattern) \ A(pearl) \ A(pegs) \ @@ -39,6 +41,7 @@ A(solo) \ A(tents) \ A(towers) \ + A(tracks) \ A(twiddle) \ A(undead) \ A(unequal) \ diff -Nru sgt-puzzles-20140928.r10274/loopy.c sgt-puzzles-20160429.b31155b/loopy.c --- sgt-puzzles-20140928.r10274/loopy.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/loopy.c 2016-04-29 00:30:09.000000000 +0000 @@ -118,6 +118,7 @@ char *lines; unsigned char *line_errors; + int exactly_one_loop; int solved; int cheated; @@ -325,6 +326,7 @@ ret->line_errors = snewn(state->game_grid->num_edges, unsigned char); memcpy(ret->line_errors, state->line_errors, state->game_grid->num_edges); + ret->exactly_one_loop = state->exactly_one_loop; ret->grid_type = state->grid_type; return ret; @@ -850,7 +852,7 @@ static float *game_colours(frontend *fe, int *ncolours) { - float *ret = snewn(4 * NCOLOURS, float); + float *ret = snewn(3 * NCOLOURS, float); frontend_default_colour(fe, &ret[COL_BACKGROUND * 3]); @@ -1380,6 +1382,7 @@ state->clues = snewn(g->num_faces, signed char); state->lines = snewn(g->num_edges, char); state->line_errors = snewn(g->num_edges, unsigned char); + state->exactly_one_loop = FALSE; state->grid_type = params->type; @@ -1451,6 +1454,7 @@ state->clues = snewn(num_faces, signed char); state->lines = snewn(num_edges, char); state->line_errors = snewn(num_edges, unsigned char); + state->exactly_one_loop = FALSE; state->solved = state->cheated = FALSE; @@ -1489,141 +1493,119 @@ static int check_completion(game_state *state) { grid *g = state->game_grid; - int *dsf; - int num_faces = g->num_faces; - int i; - int infinite_area, finite_area; - int loops_found = 0; - int found_edge_not_in_loop = FALSE; + int i, ret; + int *dsf, *component_state; + int nsilly, nloop, npath, largest_comp, largest_size, total_pathsize; + enum { COMP_NONE, COMP_LOOP, COMP_PATH, COMP_SILLY, COMP_EMPTY }; memset(state->line_errors, 0, g->num_edges); - /* LL implementation of SGT's idea: - * A loop will partition the grid into an inside and an outside. - * If there is more than one loop, the grid will be partitioned into - * even more distinct regions. We can therefore track equivalence of - * faces, by saying that two faces are equivalent when there is a non-YES - * edge between them. - * We could keep track of the number of connected components, by counting - * the number of dsf-merges that aren't no-ops. - * But we're only interested in 3 separate cases: - * no loops, one loop, more than one loop. + /* + * Find loops in the grid, and determine whether the puzzle is + * solved. + * + * Loopy is a bit more complicated than most puzzles that care + * about loop detection. In most of them, loops are simply + * _forbidden_; so the obviously right way to do + * error-highlighting during play is to light up a graph edge red + * iff it is part of a loop, which is exactly what the centralised + * findloop.c makes easy. + * + * But Loopy is unusual in that you're _supposed_ to be making a + * loop - and yet _some_ loops are not the right loop. So we need + * to be more discriminating, by identifying loops one by one and + * then thinking about which ones to highlight, and so findloop.c + * isn't quite the right tool for the job in this case. + * + * Worse still, consider situations in which the grid contains a + * loop and also some non-loop edges: there are some cases like + * this in which the user's intuitive expectation would be to + * highlight the loop (if you're only about half way through the + * puzzle and have accidentally made a little loop in some corner + * of the grid), and others in which they'd be more likely to + * expect you to highlight the non-loop edges (if you've just + * closed off a whole loop that you thought was the entire + * solution, but forgot some disconnected edges in a corner + * somewhere). So while it's easy enough to check whether the + * solution is _right_, highlighting the wrong parts is a tricky + * problem for this puzzle! + * + * I'd quite like, in some situations, to identify the largest + * loop among the player's YES edges, and then light up everything + * other than that. But finding the longest cycle in a graph is an + * NP-complete problem (because, in particular, it must return a + * Hamilton cycle if one exists). + * + * However, I think we can make the problem tractable by + * exercising the Puzzles principle that it isn't absolutely + * necessary to highlight _all_ errors: the key point is that by + * the time the user has filled in the whole grid, they should + * either have seen a completion flash, or have _some_ error + * highlight showing them why the solution isn't right. So in + * principle it would be *just about* good enough to highlight + * just one error in the whole grid, if there was really no better + * way. But we'd like to highlight as many errors as possible. + * + * In this case, I think the simple approach is to make use of the + * fact that no vertex may have degree > 2, and that's really + * simple to detect. So the plan goes like this: * - * No loops: all faces are equivalent to the infinite face. - * One loop: only two equivalence classes - finite and infinite. - * >= 2 loops: there are 2 distinct finite regions. + * - Form the dsf of connected components of the graph vertices. * - * So we simply make two passes through all the edges. - * In the first pass, we dsf-merge the two faces bordering each non-YES - * edge. - * In the second pass, we look for YES-edges bordering: - * a) two non-equivalent faces. - * b) two non-equivalent faces, and one of them is part of a different - * finite area from the first finite area we've seen. + * - Highlight an error at any vertex with degree > 2. (It so + * happens that we do this by lighting up all the edges + * incident to that vertex, but that's an output detail.) * - * An occurrence of a) means there is at least one loop. - * An occurrence of b) means there is more than one loop. - * Edges satisfying a) are marked as errors. + * - Any component that contains such a vertex is now excluded + * from further consideration, because it already has a + * highlight. * - * While we're at it, we set a flag if we find a YES edge that is not - * part of a loop. - * This information will help decide, if there's a single loop, whether it - * is a candidate for being a solution (that is, all YES edges are part of - * this loop). + * - The remaining components have no vertex with degree > 2, and + * hence they all consist of either a simple loop, or a simple + * path with two endpoints. * - * If there is a candidate loop, we then go through all clues and check - * they are all satisfied. If so, we have found a solution and we can - * unmark all line_errors. + * - For these purposes, group together all the paths and imagine + * them to be a single component (because in most normal + * situations the player will gradually build up the solution + * _not_ all in one connected segment, but as lots of separate + * little path pieces that gradually connect to each other). + * + * - After doing that, if there is exactly one (sensible) + * component - be it a collection of paths or a loop - then + * highlight no further edge errors. (The former case is normal + * during play, and the latter is a potentially solved puzzle.) + * + * - Otherwise, find the largest of the sensible components, + * leave that one unhighlighted, and light the rest up in red. */ - - /* Infinite face is at the end - its index is num_faces. - * This macro is just to make this obvious! */ - #define INF_FACE num_faces - dsf = snewn(num_faces + 1, int); - dsf_init(dsf, num_faces + 1); - - /* First pass */ - for (i = 0; i < g->num_edges; i++) { - grid_edge *e = g->edges + i; - int f1 = e->face1 ? e->face1 - g->faces : INF_FACE; - int f2 = e->face2 ? e->face2 - g->faces : INF_FACE; - if (state->lines[i] != LINE_YES) - dsf_merge(dsf, f1, f2); - } - - /* Second pass */ - infinite_area = dsf_canonify(dsf, INF_FACE); - finite_area = -1; + + dsf = snew_dsf(g->num_dots); + + /* Build the dsf. */ for (i = 0; i < g->num_edges; i++) { - grid_edge *e = g->edges + i; - int f1 = e->face1 ? e->face1 - g->faces : INF_FACE; - int can1 = dsf_canonify(dsf, f1); - int f2 = e->face2 ? e->face2 - g->faces : INF_FACE; - int can2 = dsf_canonify(dsf, f2); - if (state->lines[i] != LINE_YES) continue; - - if (can1 == can2) { - /* Faces are equivalent, so this edge not part of a loop */ - found_edge_not_in_loop = TRUE; - continue; - } - state->line_errors[i] = TRUE; - if (loops_found == 0) loops_found = 1; - - /* Don't bother with further checks if we've already found 2 loops */ - if (loops_found == 2) continue; - - if (finite_area == -1) { - /* Found our first finite area */ - if (can1 != infinite_area) - finite_area = can1; - else - finite_area = can2; - } - - /* Have we found a second area? */ - if (finite_area != -1) { - if (can1 != infinite_area && can1 != finite_area) { - loops_found = 2; - continue; - } - if (can2 != infinite_area && can2 != finite_area) { - loops_found = 2; - } + if (state->lines[i] == LINE_YES) { + grid_edge *e = g->edges + i; + int d1 = e->dot1 - g->dots, d2 = e->dot2 - g->dots; + dsf_merge(dsf, d1, d2); } } -/* - printf("loops_found = %d\n", loops_found); - printf("found_edge_not_in_loop = %s\n", - found_edge_not_in_loop ? "TRUE" : "FALSE"); -*/ - - sfree(dsf); /* No longer need the dsf */ - - /* Have we found a candidate loop? */ - if (loops_found == 1 && !found_edge_not_in_loop) { - /* Yes, so check all clues are satisfied */ - int found_clue_violation = FALSE; - for (i = 0; i < num_faces; i++) { - int c = state->clues[i]; - if (c >= 0) { - if (face_order(state, i, LINE_YES) != c) { - found_clue_violation = TRUE; - break; - } - } - } - - if (!found_clue_violation) { - /* The loop is good */ - memset(state->line_errors, 0, g->num_edges); - return TRUE; /* No need to bother checking for dot violations */ - } + /* Initialise a state variable for each connected component. */ + component_state = snewn(g->num_dots, int); + for (i = 0; i < g->num_dots; i++) { + if (dsf_canonify(dsf, i) == i) + component_state[i] = COMP_LOOP; + else + component_state[i] = COMP_NONE; } - /* Check for dot violations */ + /* Check for dots with degree > 3. Here we also spot dots of + * degree 1 in which the user has marked all the non-edges as + * LINE_NO, because those are also clear vertex-level errors, so + * we give them the same treatment of excluding their connected + * component from the subsequent loop analysis. */ for (i = 0; i < g->num_dots; i++) { + int comp = dsf_canonify(dsf, i); int yes = dot_order(state, i, LINE_YES); int unknown = dot_order(state, i, LINE_UNKNOWN); if ((yes == 1 && unknown == 0) || (yes >= 3)) { @@ -1635,9 +1617,108 @@ if (state->lines[e] == LINE_YES) state->line_errors[e] = TRUE; } + /* And mark this component as not worthy of further + * consideration. */ + component_state[comp] = COMP_SILLY; + + } else if (yes == 0) { + /* A completely isolated dot must also be excluded it from + * the subsequent loop highlighting pass, but we tag it + * with a different enum value to avoid it counting + * towards the components that inhibit returning a win + * status. */ + component_state[comp] = COMP_EMPTY; + } else if (yes == 1) { + /* A dot with degree 1 that didn't fall into the 'clearly + * erroneous' case above indicates that this connected + * component will be a path rather than a loop - unless + * something worse elsewhere in the component has + * classified it as silly. */ + if (component_state[comp] != COMP_SILLY) + component_state[comp] = COMP_PATH; } } - return FALSE; + + /* Count up the components. Also, find the largest sensible + * component. (Tie-breaking condition is derived from the order of + * vertices in the grid data structure, which is fairly arbitrary + * but at least stays stable throughout the game.) */ + nsilly = nloop = npath = 0; + total_pathsize = 0; + largest_comp = largest_size = -1; + for (i = 0; i < g->num_dots; i++) { + if (component_state[i] == COMP_SILLY) { + nsilly++; + } else if (component_state[i] == COMP_PATH) { + total_pathsize += dsf_size(dsf, i); + npath = 1; + } else if (component_state[i] == COMP_LOOP) { + int this_size; + + nloop++; + + if ((this_size = dsf_size(dsf, i)) > largest_size) { + largest_comp = i; + largest_size = this_size; + } + } + } + if (largest_size < total_pathsize) { + largest_comp = -1; /* means the paths */ + largest_size = total_pathsize; + } + + if (nloop > 0 && nloop + npath > 1) { + /* + * If there are at least two sensible components including at + * least one loop, highlight all edges in every sensible + * component that is not the largest one. + */ + for (i = 0; i < g->num_edges; i++) { + if (state->lines[i] == LINE_YES) { + grid_edge *e = g->edges + i; + int d1 = e->dot1 - g->dots; /* either endpoint is good enough */ + int comp = dsf_canonify(dsf, d1); + if ((component_state[comp] == COMP_PATH && + -1 != largest_comp) || + (component_state[comp] == COMP_LOOP && + comp != largest_comp)) + state->line_errors[i] = TRUE; + } + } + } + + if (nloop == 1 && npath == 0 && nsilly == 0) { + /* + * If there is exactly one component and it is a loop, then + * the puzzle is potentially complete, so check the clues. + */ + ret = TRUE; + + for (i = 0; i < g->num_faces; i++) { + int c = state->clues[i]; + if (c >= 0 && face_order(state, i, LINE_YES) != c) { + ret = FALSE; + break; + } + } + + /* + * Also, whether or not the puzzle is actually complete, set + * the flag that says this game_state has exactly one loop and + * nothing else, which will be used to vary the semantics of + * clue highlighting at display time. + */ + state->exactly_one_loop = TRUE; + } else { + ret = FALSE; + state->exactly_one_loop = FALSE; + } + + sfree(component_state); + sfree(dsf); + + return ret; } /* ---------------------------------------------------------------------- @@ -3205,16 +3286,53 @@ for (i = 0; i < g->num_faces; i++) { grid_face *f = g->faces + i; int sides = f->order; + int yes_order, no_order; int clue_mistake; int clue_satisfied; int n = state->clues[i]; if (n < 0) continue; - clue_mistake = (face_order(state, i, LINE_YES) > n || - face_order(state, i, LINE_NO ) > (sides-n)); - clue_satisfied = (face_order(state, i, LINE_YES) == n && - face_order(state, i, LINE_NO ) == (sides-n)); + yes_order = face_order(state, i, LINE_YES); + if (state->exactly_one_loop) { + /* + * Special case: if the set of LINE_YES edges in the grid + * consists of exactly one loop and nothing else, then we + * switch to treating LINE_UNKNOWN the same as LINE_NO for + * purposes of clue checking. + * + * This is because some people like to play Loopy without + * using the right-click, i.e. never setting anything to + * LINE_NO. Without this special case, if a person playing + * in that style fills in what they think is a correct + * solution loop but in fact it has an underfilled clue, + * then we will display no victory flash and also no error + * highlight explaining why not. With this special case, + * we light up underfilled clues at the instant the loop + * is closed. (Of course, *overfilled* clues are fine + * either way.) + * + * (It might still be considered unfortunate that we can't + * warn this style of player any earlier, if they make a + * mistake very near the beginning which doesn't show up + * until they close the last edge of the loop. One other + * thing we _could_ do here is to treat any LINE_UNKNOWN + * as LINE_NO if either of its endpoints has yes-degree 2, + * reflecting the fact that setting that line to YES would + * be an obvious error. But I don't think even that could + * catch _all_ clue errors in a timely manner; I think + * there are some that won't be displayed until the loop + * is filled in, even so, and there's no way to avoid that + * with complete reliability except to switch to being a + * player who sets things to LINE_NO.) + */ + no_order = sides - yes_order; + } else { + no_order = face_order(state, i, LINE_NO); + } + + clue_mistake = (yes_order > n || no_order > (sides-n)); + clue_satisfied = (yes_order == n && no_order == (sides-n)); if (clue_mistake != ds->clue_error[i] || clue_satisfied != ds->clue_satisfied[i]) { diff -Nru sgt-puzzles-20140928.r10274/loopy.R sgt-puzzles-20160429.b31155b/loopy.R --- sgt-puzzles-20140928.r10274/loopy.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/loopy.R 2016-04-29 00:30:09.000000000 +0000 @@ -27,5 +27,5 @@ !end !begin >gamedesc.txt -loopy:loopy.exe:Loopy:Loop-drawing puzzle +loopy:loopy.exe:Loopy:Loop-drawing puzzle:Draw a single closed loop, given clues about number of adjacent edges. !end diff -Nru sgt-puzzles-20140928.r10274/magnets.c sgt-puzzles-20160429.b31155b/magnets.c --- sgt-puzzles-20140928.r10274/magnets.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/magnets.c 2016-04-29 00:30:09.000000000 +0000 @@ -46,7 +46,7 @@ enum { COL_BACKGROUND, COL_HIGHLIGHT, COL_LOWLIGHT, - COL_TEXT, COL_ERROR, COL_CURSOR, + COL_TEXT, COL_ERROR, COL_CURSOR, COL_DONE, COL_NEUTRAL, COL_NEGATIVE, COL_POSITIVE, COL_NOT, NCOLOURS }; @@ -273,6 +273,7 @@ int *grid; /* size w*h, for cell state (pos/neg) */ unsigned int *flags; /* size w*h */ int solved, completed, numbered; + unsigned char *counts_done; struct game_common *common; /* domino layout never changes. */ }; @@ -285,6 +286,7 @@ memset(ret->common->rowcount, 0, ret->h*3*sizeof(int)); memset(ret->common->colcount, 0, ret->w*3*sizeof(int)); + memset(ret->counts_done, 0, (ret->h + ret->w) * 2 * sizeof(unsigned char)); for (i = 0; i < ret->wh; i++) { ret->grid[i] = EMPTY; @@ -304,6 +306,7 @@ ret->grid = snewn(ret->wh, int); ret->flags = snewn(ret->wh, unsigned int); + ret->counts_done = snewn((ret->h + ret->w) * 2, unsigned char); ret->common = snew(struct game_common); ret->common->refcount = 1; @@ -335,6 +338,10 @@ dest->grid = snewn(dest->wh, int); memcpy(dest->grid, src->grid, dest->wh*sizeof(int)); + dest->counts_done = snewn((dest->h + dest->w) * 2, unsigned char); + memcpy(dest->counts_done, src->counts_done, + (dest->h + dest->w) * 2 * sizeof(unsigned char)); + dest->flags = snewn(dest->wh, unsigned int); memcpy(dest->flags, src->flags, dest->wh*sizeof(unsigned int)); @@ -350,6 +357,7 @@ sfree(state->common->colcount); sfree(state->common); } + sfree(state->counts_done); sfree(state->flags); sfree(state->grid); sfree(state); @@ -1746,11 +1754,10 @@ #define DS_ERROR 0x10 #define DS_CURSOR 0x20 #define DS_SET 0x40 -#define DS_FULL 0x80 -#define DS_NOTPOS 0x100 -#define DS_NOTNEG 0x200 -#define DS_NOTNEU 0x400 -#define DS_FLASH 0x800 +#define DS_NOTPOS 0x80 +#define DS_NOTNEG 0x100 +#define DS_NOTNEU 0x200 +#define DS_FLASH 0x400 #define PREFERRED_TILE_SIZE 32 #define TILE_SIZE (ds->tilesize) @@ -1759,6 +1766,33 @@ #define COORD(x) ( (x+1) * TILE_SIZE + BORDER ) #define FROMCOORD(x) ( (x - BORDER) / TILE_SIZE - 1 ) +static int is_clue(const game_state *state, int x, int y) +{ + int h = state->h, w = state->w; + + if (((x == -1 || x == w) && y >= 0 && y < h) || + ((y == -1 || y == h) && x >= 0 && x < w)) + return TRUE; + + return FALSE; +} + +static int clue_index(const game_state *state, int x, int y) +{ + int h = state->h, w = state->w; + + if (y == -1) + return x; + else if (x == w) + return w + y; + else if (y == h) + return 2 * w + h - x - 1; + else if (x == -1) + return 2 * (w + h) - y - 1; + + return -1; +} + static char *interpret_move(const game_state *state, game_ui *ui, const game_drawstate *ds, int x, int y, int button) @@ -1786,6 +1820,9 @@ nullret = ""; } action = (button == LEFT_BUTTON) ? CYCLE_MAGNET : CYCLE_NEUTRAL; + } else if (button == LEFT_BUTTON && is_clue(state, gx, gy)) { + sprintf(buf, "D%d,%d", gx, gy); + return dupstr(buf); } else return NULL; @@ -1862,6 +1899,9 @@ ret->flags[idx] |= GS_SET; ret->flags[idx2] |= GS_SET; } + } else if (c == 'D' && sscanf(move, "%d,%d%n", &x, &y, &n) == 2 && + is_clue(ret, x, y)) { + ret->counts_done[clue_index(ret, x, y)] ^= 1; } else goto badmove; @@ -1911,6 +1951,7 @@ ret[COL_TEXT * 3 + i] = 0.0F; ret[COL_NEGATIVE * 3 + i] = 0.0F; ret[COL_CURSOR * 3 + i] = 0.9F; + ret[COL_DONE * 3 + i] = ret[COL_BACKGROUND * 3 + i] / 1.5F; } ret[COL_POSITIVE * 3 + 0] = 0.8F; @@ -1960,7 +2001,7 @@ sfree(ds); } -static void draw_num_col(drawing *dr, game_drawstate *ds, int rowcol, int which, +static void draw_num(drawing *dr, game_drawstate *ds, int rowcol, int which, int idx, int colbg, int col, int num) { char buf[32]; @@ -1988,13 +2029,6 @@ draw_update(dr, cx, cy, TILE_SIZE, TILE_SIZE); } -static void draw_num(drawing *dr, game_drawstate *ds, int rowcol, int which, - int idx, unsigned long c, int num) -{ - draw_num_col(dr, ds, rowcol, which, idx, COL_BACKGROUND, - (c & DS_ERROR) ? COL_ERROR : COL_TEXT, num); -} - static void draw_sym(drawing *dr, game_drawstate *ds, int x, int y, int which, int col) { int cx = COORD(x), cy = COORD(y); @@ -2132,6 +2166,27 @@ draw_update(dr, cx, cy, TILE_SIZE, TILE_SIZE); } +static int get_count_color(const game_state *state, int rowcol, int which, + int index, int target) +{ + int idx; + int count = count_rowcol(state, index, rowcol, which); + + if ((count > target) || + (count < target && !count_rowcol(state, index, rowcol, -1))) { + return COL_ERROR; + } else if (rowcol == COLUMN) { + idx = clue_index(state, index, which == POSITIVE ? -1 : state->h); + } else { + idx = clue_index(state, which == POSITIVE ? -1 : state->w, index); + } + + if (state->counts_done[idx]) { + return COL_DONE; + } + + return COL_TEXT; +} static void game_redraw(drawing *dr, game_drawstate *ds, const game_state *oldstate, const game_state *state, @@ -2139,7 +2194,6 @@ float animtime, float flashtime) { int x, y, w = state->w, h = state->h, which, i, j, flash; - unsigned long c = 0; flash = (int)(flashtime * 5 / FLASH_TIME) % 2; @@ -2162,8 +2216,7 @@ for (y = 0; y < h; y++) { for (x = 0; x < w; x++) { int idx = y*w+x; - - c = state->grid[idx]; + unsigned long c = state->grid[idx]; if (state->flags[idx] & GS_ERROR) c |= DS_ERROR; @@ -2191,33 +2244,24 @@ } /* Draw counts around side */ for (which = POSITIVE, j = 0; j < 2; which = OPPOSITE(which), j++) { - int target, count; for (i = 0; i < w; i++) { - target = state->common->colcount[i*3+which]; - count = count_rowcol(state, i, COLUMN, which); - c = 0; - if ((count > target) || - (count < target && !count_rowcol(state, i, COLUMN, -1))) - c |= DS_ERROR; - if (count == target) c |= DS_FULL; - if (c != ds->colwhat[i*3+which] || !ds->started) { - draw_num(dr, ds, COLUMN, which, i, c, - state->common->colcount[i*3+which]); - ds->colwhat[i*3+which] = c; + int index = i * 3 + which; + int target = state->common->colcount[index]; + int color = get_count_color(state, COLUMN, which, i, target); + + if (color != ds->colwhat[index] || !ds->started) { + draw_num(dr, ds, COLUMN, which, i, COL_BACKGROUND, color, target); + ds->colwhat[index] = color; } } for (i = 0; i < h; i++) { - target = state->common->rowcount[i*3+which]; - count = count_rowcol(state, i, ROW, which); - c = 0; - if ((count > target) || - (count < target && !count_rowcol(state, i, ROW, -1))) - c |= DS_ERROR; - if (count == target) c |= DS_FULL; - if (c != ds->rowwhat[i*3+which] || !ds->started) { - draw_num(dr, ds, ROW, which, i, c, - state->common->rowcount[i*3+which]); - ds->rowwhat[i*3+which] = c; + int index = i * 3 + which; + int target = state->common->rowcount[index]; + int color = get_count_color(state, ROW, which, i, target); + + if (color != ds->rowwhat[index] || !ds->started) { + draw_num(dr, ds, ROW, which, i, COL_BACKGROUND, color, target); + ds->rowwhat[index] = color; } } } @@ -2282,11 +2326,11 @@ draw_sym(dr, ds, state->w, state->h, NEGATIVE, ink); for (which = POSITIVE, j = 0; j < 2; which = OPPOSITE(which), j++) { for (i = 0; i < w; i++) { - draw_num_col(dr, ds, COLUMN, which, i, paper, ink, + draw_num(dr, ds, COLUMN, which, i, paper, ink, state->common->colcount[i*3+which]); } for (i = 0; i < h; i++) { - draw_num_col(dr, ds, ROW, which, i, paper, ink, + draw_num(dr, ds, ROW, which, i, paper, ink, state->common->rowcount[i*3+which]); } } @@ -2562,7 +2606,7 @@ goto done; } s = new_game(NULL, p, desc); - printf("%s:%s (seed %ld)\n", id, desc, seed); + printf("%s:%s (seed %ld)\n", id, desc, (long)seed); if (aux) { /* We just generated this ourself. */ if (verbose || print) { diff -Nru sgt-puzzles-20140928.r10274/magnets.R sgt-puzzles-20160429.b31155b/magnets.R --- sgt-puzzles-20140928.r10274/magnets.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/magnets.R 2016-04-29 00:30:09.000000000 +0000 @@ -20,5 +20,5 @@ !end !begin >gamedesc.txt -magnets:magnets.exe:Magnets:Magnet-placing puzzle +magnets:magnets.exe:Magnets:Magnet-placing puzzle:Place magnets to satisfy the clues and avoid like poles touching. !end diff -Nru sgt-puzzles-20140928.r10274/Makefile.am sgt-puzzles-20160429.b31155b/Makefile.am --- sgt-puzzles-20140928.r10274/Makefile.am 2014-09-29 00:35:53.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/Makefile.am 2016-04-29 00:37:35.000000000 +0000 @@ -4,45 +4,49 @@ # DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead. GAMES = -noinst_PROGRAMS = blackbox bridges cube dominosa fifteen filling \ - fillingsolver flip galaxies galaxiespicture galaxiessolver \ - guess inertia keen keensolver latincheck lightup \ - lightupsolver loopy loopysolver magnets magnetssolver map \ - mapsolver mineobfusc mines net netslide nullgame obfusc \ - pattern patternsolver pearl pearlbench pegs range rect \ - samegame signpost signpostsolver singles singlessolver \ - sixteen slant slantsolver solo solosolver tents tentssolver \ - towers towerssolver twiddle undead unequal unequalsolver \ +noinst_PROGRAMS = blackbox bridges cube dominosa fifteen fifteensolver \ + filling fillingsolver flip flood galaxies galaxiespicture \ + galaxiessolver guess inertia keen keensolver latincheck \ + lightup lightupsolver loopy loopysolver magnets \ + magnetssolver map mapsolver mineobfusc mines net netslide \ + nullgame obfusc palisade pattern patternpicture \ + patternsolver pearl pearlbench pegs range rect samegame \ + signpost signpostsolver singles singlessolver sixteen slant \ + slantsolver solo solosolver tents tentssolver towers \ + towerssolver tracks twiddle undead unequal unequalsolver \ unruly unrulysolver untangle AUTOMAKE_OPTIONS = subdir-objects allsources = ./blackbox.c ./bridges.c ./combi.c ./cube.c ./divvy.c \ ./dominosa.c ./drawing.c ./dsf.c ./fifteen.c ./filling.c \ - ./flip.c ./galaxies.c ./grid.c ./grid.h ./gtk.c ./guess.c \ - ./inertia.c ./keen.c ./latin.c ./latin.h ./laydomino.c \ - ./lightup.c ./list.c ./loopgen.c ./loopgen.h ./loopy.c \ - ./magnets.c ./malloc.c ./map.c ./maxflow.c ./maxflow.h \ - ./midend.c ./mines.c ./misc.c ./net.c ./netslide.c \ - ./no-icon.c ./nullfe.c ./nullgame.c ./obfusc.c ./osx.m \ - ./pattern.c ./pearl.c ./pegs.c ./penrose.c ./penrose.h \ - ./printing.c ./ps.c ./puzzles.h ./random.c ./range.c \ - ./rect.c ./resource.h ./samegame.c ./signpost.c ./singles.c \ - ./sixteen.c ./slant.c ./solo.c ./tdq.c ./tents.c ./towers.c \ - ./tree234.c ./tree234.h ./twiddle.c ./undead.c ./unequal.c \ - ./unruly.c ./untangle.c ./version.c ./version.h ./windows.c \ + ./findloop.c ./flip.c ./flood.c ./galaxies.c ./grid.c \ + ./grid.h ./gtk.c ./guess.c ./inertia.c ./keen.c ./latin.c \ + ./latin.h ./laydomino.c ./lightup.c ./list.c ./loopgen.c \ + ./loopgen.h ./loopy.c ./magnets.c ./malloc.c ./map.c \ + ./maxflow.c ./maxflow.h ./midend.c ./mines.c ./misc.c \ + ./net.c ./netslide.c ./no-icon.c ./nullfe.c ./nullgame.c \ + ./obfusc.c ./osx.m ./palisade.c ./pattern.c ./pearl.c \ + ./pegs.c ./penrose.c ./penrose.h ./printing.c ./ps.c \ + ./puzzles.h ./random.c ./range.c ./rect.c ./resource.h \ + ./samegame.c ./signpost.c ./singles.c ./sixteen.c ./slant.c \ + ./solo.c ./tdq.c ./tents.c ./towers.c ./tracks.c ./tree234.c \ + ./tree234.h ./twiddle.c ./undead.c ./unequal.c ./unruly.c \ + ./untangle.c ./version.c ./version.h ./windows.c \ icons/blackbox-icon.c icons/bridges-icon.c icons/cube-icon.c \ icons/dominosa-icon.c icons/fifteen-icon.c \ - icons/filling-icon.c icons/flip-icon.c icons/galaxies-icon.c \ - icons/guess-icon.c icons/inertia-icon.c icons/keen-icon.c \ - icons/lightup-icon.c icons/loopy-icon.c icons/magnets-icon.c \ - icons/map-icon.c icons/mines-icon.c icons/net-icon.c \ - icons/netslide-icon.c icons/pattern-icon.c \ + icons/filling-icon.c icons/flip-icon.c icons/flood-icon.c \ + icons/galaxies-icon.c icons/guess-icon.c \ + icons/inertia-icon.c icons/keen-icon.c icons/lightup-icon.c \ + icons/loopy-icon.c icons/magnets-icon.c icons/map-icon.c \ + icons/mines-icon.c icons/net-icon.c icons/netslide-icon.c \ + icons/palisade-icon.c icons/pattern-icon.c \ icons/pearl-icon.c icons/pegs-icon.c icons/range-icon.c \ icons/rect-icon.c icons/samegame-icon.c \ icons/signpost-icon.c icons/singles-icon.c \ icons/sixteen-icon.c icons/slant-icon.c icons/solo-icon.c \ - icons/tents-icon.c icons/towers-icon.c icons/twiddle-icon.c \ - icons/undead-icon.c icons/unequal-icon.c icons/unruly-icon.c \ + icons/tents-icon.c icons/towers-icon.c icons/tracks-icon.c \ + icons/twiddle-icon.c icons/undead-icon.c \ + icons/unequal-icon.c icons/unruly-icon.c \ icons/untangle-icon.c AM_CPPFLAGS = -I$(srcdir)/./ -I$(srcdir)/icons/ @@ -52,9 +56,10 @@ ./version.c ./version.h icons/blackbox-icon.c blackbox_LDADD = $(GTK_LIBS) -lm -bridges_SOURCES = ./bridges.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c \ - ./midend.c ./misc.c ./printing.c ./ps.c ./puzzles.h \ - ./random.c ./version.c ./version.h icons/bridges-icon.c +bridges_SOURCES = ./bridges.c ./drawing.c ./dsf.c ./findloop.c ./gtk.c \ + ./malloc.c ./midend.c ./misc.c ./printing.c ./ps.c \ + ./puzzles.h ./random.c ./version.c ./version.h \ + icons/bridges-icon.c bridges_LDADD = $(GTK_LIBS) -lm cube_SOURCES = ./cube.c ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ @@ -72,6 +77,10 @@ ./version.c ./version.h icons/fifteen-icon.c fifteen_LDADD = $(GTK_LIBS) -lm +fifteensolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \ + ./random.c +fifteensolver_LDADD = libfifteen2_a-fifteen.$(OBJEXT) -lm + filling_SOURCES = ./drawing.c ./dsf.c ./filling.c ./gtk.c ./malloc.c \ ./midend.c ./misc.c ./printing.c ./ps.c ./puzzles.h \ ./random.c ./version.c ./version.h icons/filling-icon.c @@ -86,6 +95,11 @@ ./tree234.h ./version.c ./version.h icons/flip-icon.c flip_LDADD = $(GTK_LIBS) -lm +flood_SOURCES = ./drawing.c ./flood.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ + ./printing.c ./ps.c ./puzzles.h ./random.c ./version.c \ + ./version.h icons/flood-icon.c +flood_LDADD = $(GTK_LIBS) -lm + galaxies_SOURCES = ./drawing.c ./dsf.c ./galaxies.c ./gtk.c ./malloc.c \ ./midend.c ./misc.c ./printing.c ./ps.c ./puzzles.h \ ./random.c ./version.c ./version.h icons/galaxies-icon.c @@ -171,8 +185,8 @@ ./tree234.h ./version.c ./version.h icons/mines-icon.c mines_LDADD = $(GTK_LIBS) -lm -net_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ - ./net.c ./printing.c ./ps.c ./puzzles.h ./random.c \ +net_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c ./midend.c \ + ./misc.c ./net.c ./printing.c ./ps.c ./puzzles.h ./random.c \ ./tree234.c ./tree234.h ./version.c ./version.h \ icons/net-icon.c net_LDADD = $(GTK_LIBS) -lm @@ -192,11 +206,21 @@ ./random.c obfusc_LDADD = -lm +palisade_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c \ + ./midend.c ./misc.c ./palisade.c ./printing.c ./ps.c \ + ./puzzles.h ./random.c ./version.c ./version.h \ + icons/palisade-icon.c +palisade_LDADD = $(GTK_LIBS) -lm + pattern_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ ./pattern.c ./printing.c ./ps.c ./puzzles.h ./random.c \ ./version.c ./version.h icons/pattern-icon.c pattern_LDADD = $(GTK_LIBS) -lm +patternpicture_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \ + ./random.c +patternpicture_LDADD = libpattern4_a-pattern.$(OBJEXT) -lm + patternsolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \ ./random.c patternsolver_LDADD = libpattern2_a-pattern.$(OBJEXT) -lm @@ -258,13 +282,14 @@ ./version.c ./version.h icons/sixteen-icon.c sixteen_LDADD = $(GTK_LIBS) -lm -slant_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ - ./printing.c ./ps.c ./puzzles.h ./random.c ./slant.c \ - ./version.c ./version.h icons/slant-icon.c +slant_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \ + ./midend.c ./misc.c ./printing.c ./ps.c ./puzzles.h \ + ./random.c ./slant.c ./version.c ./version.h \ + icons/slant-icon.c slant_LDADD = $(GTK_LIBS) -lm -slantsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \ - ./random.c +slantsolver_SOURCES = ./dsf.c ./findloop.c ./malloc.c ./misc.c ./nullfe.c \ + ./puzzles.h ./random.c slantsolver_LDADD = libslant2_a-slant.$(OBJEXT) -lm solo_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c \ @@ -297,6 +322,12 @@ towerssolver_LDADD = liblatin6_a-latin.$(OBJEXT) \ libtowers2_a-towers.$(OBJEXT) -lm +tracks_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \ + ./midend.c ./misc.c ./printing.c ./ps.c ./puzzles.h \ + ./random.c ./tracks.c ./version.c ./version.h \ + icons/tracks-icon.c +tracks_LDADD = $(GTK_LIBS) -lm + twiddle_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ ./printing.c ./ps.c ./puzzles.h ./random.c ./twiddle.c \ ./version.c ./version.h icons/twiddle-icon.c @@ -332,6 +363,8 @@ icons/untangle-icon.c untangle_LDADD = $(GTK_LIBS) -lm +libfifteen2_a_SOURCES = ./fifteen.c ./puzzles.h +libfifteen2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER libfilling2_a_SOURCES = ./filling.c ./puzzles.h libfilling2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER libgalaxie2_a_SOURCES = ./galaxies.c ./puzzles.h @@ -359,6 +392,9 @@ libmines2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_OBFUSCATOR libpattern2_a_SOURCES = ./pattern.c ./puzzles.h libpattern2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libpattern4_a_SOURCES = ./pattern.c ./puzzles.h +libpattern4_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) \ + -DSTANDALONE_PICTURE_GENERATOR libpearl2_a_SOURCES = ./pearl.c ./puzzles.h ./grid.h ./loopgen.h libpearl2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER libsignpos2_a_SOURCES = ./signpost.c ./puzzles.h @@ -377,12 +413,12 @@ libunequal2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER libunruly2_a_SOURCES = ./unruly.c ./puzzles.h libunruly2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER -noinst_LIBRARIES = libfilling2.a libgalaxie2.a libgalaxie4.a libkeen2.a \ - liblatin6.a liblatin8.a liblightup2.a libloopy2.a \ +noinst_LIBRARIES = libfifteen2.a libfilling2.a libgalaxie2.a libgalaxie4.a \ + libkeen2.a liblatin6.a liblatin8.a liblightup2.a libloopy2.a \ libmagnets2.a libmap2.a libmines2.a libpattern2.a \ - libpearl2.a libsignpos2.a libsingles3.a libslant2.a \ - libsolo2.a libtents3.a libtowers2.a libunequal2.a \ - libunruly2.a + libpattern4.a libpearl2.a libsignpos2.a libsingles3.a \ + libslant2.a libsolo2.a libtents3.a libtowers2.a \ + libunequal2.a libunruly2.a GAMES += blackbox GAMES += bridges @@ -391,6 +427,7 @@ GAMES += fifteen GAMES += filling GAMES += flip +GAMES += flood GAMES += galaxies GAMES += guess GAMES += inertia @@ -402,6 +439,7 @@ GAMES += mines GAMES += net GAMES += netslide +GAMES += palisade GAMES += pattern GAMES += pearl GAMES += pegs @@ -415,9 +453,17 @@ GAMES += solo GAMES += tents GAMES += towers +GAMES += tracks GAMES += twiddle GAMES += undead GAMES += unequal GAMES += unruly GAMES += untangle bin_PROGRAMS = $(GAMES) +test: benchmark.html benchmark.txt + +benchmark.html: benchmark.txt benchmark.pl + ./benchmark.pl benchmark.txt > $@ + +benchmark.txt: benchmark.sh $(GAMES) + ./benchmark.sh > $@ diff -Nru sgt-puzzles-20140928.r10274/Makefile.cyg sgt-puzzles-20160429.b31155b/Makefile.cyg --- sgt-puzzles-20140928.r10274/Makefile.cyg 2014-09-29 00:35:53.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/Makefile.cyg 2016-04-29 00:37:35.000000000 +0000 @@ -20,20 +20,22 @@ RCFLAGS = $(RCINC) --define WIN32=1 --define _WIN32=1 --define WINVER=0x0400 \ --define MINGW32_FIX=1 --include ./ --include icons/ -all: blackbox.exe bridges.exe cube.exe dominosa.exe fifteen.exe filling.exe \ - fillingsolver.exe flip.exe galaxies.exe galaxiespicture.exe \ +all: blackbox.exe bridges.exe cube.exe dominosa.exe fifteen.exe \ + fifteensolver.exe filling.exe fillingsolver.exe flip.exe \ + flood.exe galaxies.exe galaxiespicture.exe \ galaxiessolver.exe guess.exe inertia.exe keen.exe \ keensolver.exe latincheck.exe lightup.exe lightupsolver.exe \ loopy.exe loopysolver.exe magnets.exe magnetssolver.exe \ map.exe mapsolver.exe mineobfusc.exe mines.exe netgame.exe \ - netslide.exe nullgame.exe pattern.exe patternsolver.exe \ - pearl.exe pearlbench.exe pegs.exe puzzles.exe range.exe \ - rect.exe samegame.exe signpost.exe signpostsolver.exe \ - singles.exe singlessolver.exe sixteen.exe slant.exe \ - slantsolver.exe solo.exe solosolver.exe tents.exe \ - tentssolver.exe towers.exe towerssolver.exe twiddle.exe \ - undead.exe unequal.exe unequalsolver.exe unruly.exe \ - unrulysolver.exe untangle.exe + netslide.exe nullgame.exe palisade.exe pattern.exe \ + patternpicture.exe patternsolver.exe pearl.exe \ + pearlbench.exe pegs.exe puzzles.exe range.exe rect.exe \ + samegame.exe signpost.exe signpostsolver.exe singles.exe \ + singlessolver.exe sixteen.exe slant.exe slantsolver.exe \ + solo.exe solosolver.exe tents.exe tentssolver.exe towers.exe \ + towerssolver.exe tracks.exe twiddle.exe undead.exe \ + unequal.exe unequalsolver.exe unruly.exe unrulysolver.exe \ + untangle.exe blackbox.exe: blackbox.o blackbox.res.o drawing.o malloc.o midend.o misc.o \ printing.o random.o version.o windows.o @@ -42,11 +44,11 @@ random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \ -luser32 -lwinspool -bridges.exe: bridges.o bridges.res.o drawing.o dsf.o malloc.o midend.o \ - misc.o printing.o random.o version.o windows.o +bridges.exe: bridges.o bridges.res.o drawing.o dsf.o findloop.o malloc.o \ + midend.o misc.o printing.o random.o version.o windows.o $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,bridges.map bridges.o \ - bridges.res.o drawing.o dsf.o malloc.o midend.o misc.o \ - printing.o random.o version.o windows.o -lcomctl32 \ + bridges.res.o drawing.o dsf.o findloop.o malloc.o midend.o \ + misc.o printing.o random.o version.o windows.o -lcomctl32 \ -lcomdlg32 -lgdi32 -luser32 -lwinspool cube.exe: cube.o cube.res.o drawing.o malloc.o midend.o misc.o printing.o \ @@ -70,6 +72,10 @@ random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \ -luser32 -lwinspool +fifteensolver.exe: fifteen2.o malloc.o misc.o nullfe.o random.o + $(CC) $(LDFLAGS) -o $@ -Wl,-Map,fifteensolver.map fifteen2.o \ + malloc.o misc.o nullfe.o random.o + filling.exe: drawing.o dsf.o filling.o filling.res.o malloc.o midend.o \ misc.o printing.o random.o version.o windows.o $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,filling.map drawing.o \ @@ -88,6 +94,13 @@ tree234.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \ -luser32 -lwinspool +flood.exe: drawing.o flood.o flood.res.o malloc.o midend.o misc.o printing.o \ + random.o version.o windows.o + $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,flood.map drawing.o \ + flood.o flood.res.o malloc.o midend.o misc.o printing.o \ + random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \ + -luser32 -lwinspool + galaxies.exe: drawing.o dsf.o galaxies.o galaxies.res.o malloc.o midend.o \ misc.o printing.o random.o version.o windows.o $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,galaxies.map drawing.o \ @@ -194,12 +207,12 @@ random.o tree234.o version.o windows.o -lcomctl32 -lcomdlg32 \ -lgdi32 -luser32 -lwinspool -netgame.exe: drawing.o dsf.o malloc.o midend.o misc.o net.o net.res.o \ - printing.o random.o tree234.o version.o windows.o +netgame.exe: drawing.o dsf.o findloop.o malloc.o midend.o misc.o net.o \ + net.res.o printing.o random.o tree234.o version.o windows.o $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,netgame.map drawing.o \ - dsf.o malloc.o midend.o misc.o net.o net.res.o printing.o \ - random.o tree234.o version.o windows.o -lcomctl32 -lcomdlg32 \ - -lgdi32 -luser32 -lwinspool + dsf.o findloop.o malloc.o midend.o misc.o net.o net.res.o \ + printing.o random.o tree234.o version.o windows.o -lcomctl32 \ + -lcomdlg32 -lgdi32 -luser32 -lwinspool netslide.exe: drawing.o malloc.o midend.o misc.o netslide.o netslide.res.o \ printing.o random.o tree234.o version.o windows.o @@ -215,6 +228,13 @@ random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \ -luser32 -lwinspool +palisade.exe: divvy.o drawing.o dsf.o malloc.o midend.o misc.o palisade.o \ + palisade.res.o printing.o random.o version.o windows.o + $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,palisade.map divvy.o \ + drawing.o dsf.o malloc.o midend.o misc.o palisade.o \ + palisade.res.o printing.o random.o version.o windows.o \ + -lcomctl32 -lcomdlg32 -lgdi32 -luser32 -lwinspool + pattern.exe: drawing.o malloc.o midend.o misc.o pattern.o pattern.res.o \ printing.o random.o version.o windows.o $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,pattern.map drawing.o \ @@ -222,6 +242,10 @@ random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \ -luser32 -lwinspool +patternpicture.exe: malloc.o misc.o nullfe.o pattern4.o random.o + $(CC) $(LDFLAGS) -o $@ -Wl,-Map,patternpicture.map malloc.o misc.o \ + nullfe.o pattern4.o random.o + patternsolver.exe: malloc.o misc.o nullfe.o pattern2.o random.o $(CC) $(LDFLAGS) -o $@ -Wl,-Map,patternsolver.map malloc.o misc.o \ nullfe.o pattern2.o random.o @@ -249,27 +273,28 @@ -lgdi32 -luser32 -lwinspool puzzles.exe: blackbo3.o bridges3.o combi.o cube3.o divvy.o dominos3.o \ - drawing.o dsf.o fifteen3.o filling5.o flip3.o galaxie7.o \ - grid.o guess3.o inertia3.o keen5.o latin.o laydomino.o \ - lightup5.o list.o loopgen.o loopy5.o magnets5.o malloc.o \ - map5.o maxflow.o midend.o mines5.o misc.o net3.o netslid3.o \ - noicon.res.o pattern5.o pearl5.o pegs3.o penrose.o \ - printing.o random.o range3.o rect3.o samegam3.o signpos5.o \ - singles5.o sixteen3.o slant5.o solo5.o tdq.o tents5.o \ - towers5.o tree234.o twiddle3.o undead3.o unequal5.o \ - unruly5.o untangl3.o version.o windows1.o + drawing.o dsf.o fifteen5.o filling5.o findloop.o flip3.o \ + flood3.o galaxie7.o grid.o guess3.o inertia3.o keen5.o \ + latin.o laydomino.o lightup5.o list.o loopgen.o loopy5.o \ + magnets5.o malloc.o map5.o maxflow.o midend.o mines5.o \ + misc.o net3.o netslid3.o noicon.res.o palisad3.o pattern7.o \ + pearl5.o pegs3.o penrose.o printing.o random.o range3.o \ + rect3.o samegam3.o signpos5.o singles5.o sixteen3.o slant5.o \ + solo5.o tdq.o tents5.o towers5.o tracks3.o tree234.o \ + twiddle3.o undead3.o unequal5.o unruly5.o untangl3.o \ + version.o windows1.o $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,puzzles.map blackbo3.o \ bridges3.o combi.o cube3.o divvy.o dominos3.o drawing.o \ - dsf.o fifteen3.o filling5.o flip3.o galaxie7.o grid.o \ - guess3.o inertia3.o keen5.o latin.o laydomino.o lightup5.o \ - list.o loopgen.o loopy5.o magnets5.o malloc.o map5.o \ - maxflow.o midend.o mines5.o misc.o net3.o netslid3.o \ - noicon.res.o pattern5.o pearl5.o pegs3.o penrose.o \ - printing.o random.o range3.o rect3.o samegam3.o signpos5.o \ - singles5.o sixteen3.o slant5.o solo5.o tdq.o tents5.o \ - towers5.o tree234.o twiddle3.o undead3.o unequal5.o \ - unruly5.o untangl3.o version.o windows1.o -lcomctl32 \ - -lcomdlg32 -lgdi32 -luser32 -lwinspool + dsf.o fifteen5.o filling5.o findloop.o flip3.o flood3.o \ + galaxie7.o grid.o guess3.o inertia3.o keen5.o latin.o \ + laydomino.o lightup5.o list.o loopgen.o loopy5.o magnets5.o \ + malloc.o map5.o maxflow.o midend.o mines5.o misc.o net3.o \ + netslid3.o noicon.res.o palisad3.o pattern7.o pearl5.o \ + pegs3.o penrose.o printing.o random.o range3.o rect3.o \ + samegam3.o signpos5.o singles5.o sixteen3.o slant5.o solo5.o \ + tdq.o tents5.o towers5.o tracks3.o tree234.o twiddle3.o \ + undead3.o unequal5.o unruly5.o untangl3.o version.o \ + windows1.o -lcomctl32 -lcomdlg32 -lgdi32 -luser32 -lwinspool range.exe: drawing.o dsf.o malloc.o midend.o misc.o printing.o random.o \ range.o range.res.o version.o windows.o @@ -324,16 +349,16 @@ sixteen.res.o version.o windows.o -lcomctl32 -lcomdlg32 \ -lgdi32 -luser32 -lwinspool -slant.exe: drawing.o dsf.o malloc.o midend.o misc.o printing.o random.o \ - slant.o slant.res.o version.o windows.o +slant.exe: drawing.o dsf.o findloop.o malloc.o midend.o misc.o printing.o \ + random.o slant.o slant.res.o version.o windows.o $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,slant.map drawing.o dsf.o \ - malloc.o midend.o misc.o printing.o random.o slant.o \ - slant.res.o version.o windows.o -lcomctl32 -lcomdlg32 \ - -lgdi32 -luser32 -lwinspool + findloop.o malloc.o midend.o misc.o printing.o random.o \ + slant.o slant.res.o version.o windows.o -lcomctl32 \ + -lcomdlg32 -lgdi32 -luser32 -lwinspool -slantsolver.exe: dsf.o malloc.o misc.o nullfe.o random.o slant2.o - $(CC) $(LDFLAGS) -o $@ -Wl,-Map,slantsolver.map dsf.o malloc.o \ - misc.o nullfe.o random.o slant2.o +slantsolver.exe: dsf.o findloop.o malloc.o misc.o nullfe.o random.o slant2.o + $(CC) $(LDFLAGS) -o $@ -Wl,-Map,slantsolver.map dsf.o findloop.o \ + malloc.o misc.o nullfe.o random.o slant2.o solo.exe: divvy.o drawing.o dsf.o malloc.o midend.o misc.o printing.o \ random.o solo.o solo.res.o version.o windows.o @@ -369,6 +394,13 @@ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,towerssolver.map latin6.o malloc.o \ maxflow.o misc.o nullfe.o random.o towers2.o tree234.o +tracks.exe: drawing.o dsf.o findloop.o malloc.o midend.o misc.o printing.o \ + random.o tracks.o tracks.res.o version.o windows.o + $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,tracks.map drawing.o dsf.o \ + findloop.o malloc.o midend.o misc.o printing.o random.o \ + tracks.o tracks.res.o version.o windows.o -lcomctl32 \ + -lcomdlg32 -lgdi32 -luser32 -lwinspool + twiddle.exe: drawing.o malloc.o midend.o misc.o printing.o random.o \ twiddle.o twiddle.res.o version.o windows.o $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,twiddle.map drawing.o \ @@ -462,8 +494,10 @@ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ fifteen.res.o: icons/fifteen.rc ./puzzles.rc2 icons/fifteen.ico ./resource.h $(RC) $(FWHACK) $(RCFL) $(RCFLAGS) $< $@ -fifteen3.o: ./fifteen.c ./puzzles.h +fifteen5.o: ./fifteen.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +fifteen2.o: ./fifteen.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ filling.o: ./filling.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ filling-icon.o: icons/filling-icon.c @@ -474,6 +508,8 @@ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ filling2.o: ./filling.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +findloop.o: ./findloop.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ flip.o: ./flip.c ./puzzles.h ./tree234.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ flip-icon.o: icons/flip-icon.c @@ -482,6 +518,14 @@ $(RC) $(FWHACK) $(RCFL) $(RCFLAGS) $< $@ flip3.o: ./flip.c ./puzzles.h ./tree234.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +flood.o: ./flood.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +flood-icon.o: icons/flood-icon.c + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +flood.res.o: icons/flood.rc ./puzzles.rc2 icons/flood.ico ./resource.h + $(RC) $(FWHACK) $(RCFL) $(RCFLAGS) $< $@ +flood3.o: ./flood.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ galaxies.o: ./galaxies.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ galaxies-icon.o: icons/galaxies-icon.c @@ -624,14 +668,25 @@ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ osx.o: ./osx.m ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisade.o: ./palisade.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisade-icon.o: icons/palisade-icon.c + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisade.res.o: icons/palisade.rc ./puzzles.rc2 icons/palisade.ico \ + ./resource.h + $(RC) $(FWHACK) $(RCFL) $(RCFLAGS) $< $@ +palisad3.o: ./palisade.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ pattern.o: ./pattern.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ pattern-icon.o: icons/pattern-icon.c $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ pattern.res.o: icons/pattern.rc ./puzzles.rc2 icons/pattern.ico ./resource.h $(RC) $(FWHACK) $(RCFL) $(RCFLAGS) $< $@ -pattern5.o: ./pattern.c ./puzzles.h +pattern7.o: ./pattern.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +pattern4.o: ./pattern.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@ pattern2.o: ./pattern.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ pearl.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h @@ -756,6 +811,14 @@ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ towers2.o: ./towers.c ./puzzles.h ./latin.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +tracks.o: ./tracks.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +tracks-icon.o: icons/tracks-icon.c + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +tracks.res.o: icons/tracks.rc ./puzzles.rc2 icons/tracks.ico ./resource.h + $(RC) $(FWHACK) $(RCFL) $(RCFLAGS) $< $@ +tracks3.o: ./tracks.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ tree234.o: ./tree234.c ./tree234.h ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ twiddle.o: ./twiddle.c ./puzzles.h diff -Nru sgt-puzzles-20140928.r10274/Makefile.emcc sgt-puzzles-20160429.b31155b/Makefile.emcc --- sgt-puzzles-20140928.r10274/Makefile.emcc 2014-09-29 00:35:53.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/Makefile.emcc 2016-04-29 00:37:35.000000000 +0000 @@ -12,31 +12,32 @@ all: $(OUTPREFIX)blackbox.js $(OUTPREFIX)bridges.js $(OUTPREFIX)cube.js \ $(OUTPREFIX)dominosa.js $(OUTPREFIX)fifteen.js \ $(OUTPREFIX)filling.js $(OUTPREFIX)flip.js \ - $(OUTPREFIX)galaxies.js $(OUTPREFIX)guess.js \ - $(OUTPREFIX)inertia.js $(OUTPREFIX)keen.js \ - $(OUTPREFIX)lightup.js $(OUTPREFIX)loopy.js \ - $(OUTPREFIX)magnets.js $(OUTPREFIX)map.js \ - $(OUTPREFIX)mines.js $(OUTPREFIX)net.js \ + $(OUTPREFIX)flood.js $(OUTPREFIX)galaxies.js \ + $(OUTPREFIX)guess.js $(OUTPREFIX)inertia.js \ + $(OUTPREFIX)keen.js $(OUTPREFIX)lightup.js \ + $(OUTPREFIX)loopy.js $(OUTPREFIX)magnets.js \ + $(OUTPREFIX)map.js $(OUTPREFIX)mines.js $(OUTPREFIX)net.js \ $(OUTPREFIX)netslide.js $(OUTPREFIX)nullgame.js \ - $(OUTPREFIX)pattern.js $(OUTPREFIX)pearl.js \ - $(OUTPREFIX)pegs.js $(OUTPREFIX)range.js $(OUTPREFIX)rect.js \ + $(OUTPREFIX)palisade.js $(OUTPREFIX)pattern.js \ + $(OUTPREFIX)pearl.js $(OUTPREFIX)pegs.js \ + $(OUTPREFIX)range.js $(OUTPREFIX)rect.js \ $(OUTPREFIX)samegame.js $(OUTPREFIX)signpost.js \ $(OUTPREFIX)singles.js $(OUTPREFIX)sixteen.js \ $(OUTPREFIX)slant.js $(OUTPREFIX)solo.js \ $(OUTPREFIX)tents.js $(OUTPREFIX)towers.js \ - $(OUTPREFIX)twiddle.js $(OUTPREFIX)undead.js \ - $(OUTPREFIX)unequal.js $(OUTPREFIX)unruly.js \ - $(OUTPREFIX)untangle.js + $(OUTPREFIX)tracks.js $(OUTPREFIX)twiddle.js \ + $(OUTPREFIX)undead.js $(OUTPREFIX)unequal.js \ + $(OUTPREFIX)unruly.js $(OUTPREFIX)untangle.js $(OUTPREFIX)blackbox.js: blackbox.o blackbox-icon.o drawing.o emcc.o \ malloc.o midend.o misc.o printing.o ps.o random.o version.o \ emccpre.js emcclib.js emccx.json $(EMCC) -o $(OUTPREFIX)blackbox.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" blackbox.o blackbox-icon.o drawing.o emcc.o malloc.o midend.o misc.o printing.o ps.o random.o version.o -$(OUTPREFIX)bridges.js: bridges.o bridges-icon.o drawing.o dsf.o emcc.o \ - malloc.o midend.o misc.o printing.o ps.o random.o version.o \ - emccpre.js emcclib.js emccx.json - $(EMCC) -o $(OUTPREFIX)bridges.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" bridges.o bridges-icon.o drawing.o dsf.o emcc.o malloc.o midend.o misc.o printing.o ps.o random.o version.o +$(OUTPREFIX)bridges.js: bridges.o bridges-icon.o drawing.o dsf.o findloop.o \ + emcc.o malloc.o midend.o misc.o printing.o ps.o random.o \ + version.o emccpre.js emcclib.js emccx.json + $(EMCC) -o $(OUTPREFIX)bridges.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" bridges.o bridges-icon.o drawing.o dsf.o findloop.o emcc.o malloc.o midend.o misc.o printing.o ps.o random.o version.o $(OUTPREFIX)cube.js: cube.o cube-icon.o drawing.o emcc.o malloc.o midend.o \ misc.o printing.o ps.o random.o version.o emccpre.js \ @@ -63,6 +64,11 @@ emccpre.js emcclib.js emccx.json $(EMCC) -o $(OUTPREFIX)flip.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o flip.o flip-icon.o emcc.o malloc.o midend.o misc.o printing.o ps.o random.o tree234.o version.o +$(OUTPREFIX)flood.js: drawing.o flood.o flood-icon.o emcc.o malloc.o \ + midend.o misc.o printing.o ps.o random.o version.o \ + emccpre.js emcclib.js emccx.json + $(EMCC) -o $(OUTPREFIX)flood.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o flood.o flood-icon.o emcc.o malloc.o midend.o misc.o printing.o ps.o random.o version.o + $(OUTPREFIX)galaxies.js: drawing.o dsf.o galaxies.o galaxies-icon.o emcc.o \ malloc.o midend.o misc.o printing.o ps.o random.o version.o \ emccpre.js emcclib.js emccx.json @@ -109,10 +115,10 @@ version.o emccpre.js emcclib.js emccx.json $(EMCC) -o $(OUTPREFIX)mines.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o malloc.o midend.o mines.o mines-icon.o misc.o printing.o ps.o random.o tree234.o version.o -$(OUTPREFIX)net.js: drawing.o dsf.o emcc.o malloc.o midend.o misc.o net.o \ - net-icon.o printing.o ps.o random.o tree234.o version.o \ - emccpre.js emcclib.js emccx.json - $(EMCC) -o $(OUTPREFIX)net.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o emcc.o malloc.o midend.o misc.o net.o net-icon.o printing.o ps.o random.o tree234.o version.o +$(OUTPREFIX)net.js: drawing.o dsf.o findloop.o emcc.o malloc.o midend.o \ + misc.o net.o net-icon.o printing.o ps.o random.o tree234.o \ + version.o emccpre.js emcclib.js emccx.json + $(EMCC) -o $(OUTPREFIX)net.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o findloop.o emcc.o malloc.o midend.o misc.o net.o net-icon.o printing.o ps.o random.o tree234.o version.o $(OUTPREFIX)netslide.js: drawing.o emcc.o malloc.o midend.o misc.o \ netslide.o netslide-icon.o printing.o ps.o random.o \ @@ -124,6 +130,11 @@ emcclib.js emccx.json $(EMCC) -o $(OUTPREFIX)nullgame.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o malloc.o midend.o misc.o no-icon.o nullgame.o printing.o ps.o random.o version.o +$(OUTPREFIX)palisade.js: divvy.o drawing.o dsf.o emcc.o malloc.o midend.o \ + misc.o palisade.o palisade-icon.o printing.o ps.o random.o \ + version.o emccpre.js emcclib.js emccx.json + $(EMCC) -o $(OUTPREFIX)palisade.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" divvy.o drawing.o dsf.o emcc.o malloc.o midend.o misc.o palisade.o palisade-icon.o printing.o ps.o random.o version.o + $(OUTPREFIX)pattern.js: drawing.o emcc.o malloc.o midend.o misc.o pattern.o \ pattern-icon.o printing.o ps.o random.o version.o emccpre.js \ emcclib.js emccx.json @@ -171,10 +182,10 @@ emcclib.js emccx.json $(EMCC) -o $(OUTPREFIX)sixteen.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o malloc.o midend.o misc.o printing.o ps.o random.o sixteen.o sixteen-icon.o version.o -$(OUTPREFIX)slant.js: drawing.o dsf.o emcc.o malloc.o midend.o misc.o \ - printing.o ps.o random.o slant.o slant-icon.o version.o \ - emccpre.js emcclib.js emccx.json - $(EMCC) -o $(OUTPREFIX)slant.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o emcc.o malloc.o midend.o misc.o printing.o ps.o random.o slant.o slant-icon.o version.o +$(OUTPREFIX)slant.js: drawing.o dsf.o findloop.o emcc.o malloc.o midend.o \ + misc.o printing.o ps.o random.o slant.o slant-icon.o \ + version.o emccpre.js emcclib.js emccx.json + $(EMCC) -o $(OUTPREFIX)slant.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o findloop.o emcc.o malloc.o midend.o misc.o printing.o ps.o random.o slant.o slant-icon.o version.o $(OUTPREFIX)solo.js: divvy.o drawing.o dsf.o emcc.o malloc.o midend.o misc.o \ printing.o ps.o random.o solo.o solo-icon.o version.o \ @@ -191,6 +202,11 @@ tree234.o version.o emccpre.js emcclib.js emccx.json $(EMCC) -o $(OUTPREFIX)towers.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o latin.o malloc.o maxflow.o midend.o misc.o printing.o ps.o random.o towers.o towers-icon.o tree234.o version.o +$(OUTPREFIX)tracks.js: drawing.o dsf.o findloop.o emcc.o malloc.o midend.o \ + misc.o printing.o ps.o random.o tracks.o tracks-icon.o \ + version.o emccpre.js emcclib.js emccx.json + $(EMCC) -o $(OUTPREFIX)tracks.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o findloop.o emcc.o malloc.o midend.o misc.o printing.o ps.o random.o tracks.o tracks-icon.o version.o + $(OUTPREFIX)twiddle.js: drawing.o emcc.o malloc.o midend.o misc.o printing.o \ ps.o random.o twiddle.o twiddle-icon.o version.o emccpre.js \ emcclib.js emccx.json @@ -252,8 +268,10 @@ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ fifteen-icon.o: icons/fifteen-icon.c $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ -fifteen3.o: ./fifteen.c ./puzzles.h +fifteen5.o: ./fifteen.c ./puzzles.h $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +fifteen2.o: ./fifteen.c ./puzzles.h + $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ filling.o: ./filling.c ./puzzles.h $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ filling-icon.o: icons/filling-icon.c @@ -262,12 +280,20 @@ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ filling2.o: ./filling.c ./puzzles.h $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +findloop.o: ./findloop.c ./puzzles.h + $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ flip.o: ./flip.c ./puzzles.h ./tree234.h $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ flip-icon.o: icons/flip-icon.c $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ flip3.o: ./flip.c ./puzzles.h ./tree234.h $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +flood.o: ./flood.c ./puzzles.h + $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ +flood-icon.o: icons/flood-icon.c + $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ +flood3.o: ./flood.c ./puzzles.h + $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ galaxies.o: ./galaxies.c ./puzzles.h $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ galaxies-icon.o: icons/galaxies-icon.c @@ -384,12 +410,20 @@ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ osx.o: ./osx.m ./puzzles.h $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisade.o: ./palisade.c ./puzzles.h + $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisade-icon.o: icons/palisade-icon.c + $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisad3.o: ./palisade.c ./puzzles.h + $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ pattern.o: ./pattern.c ./puzzles.h $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ pattern-icon.o: icons/pattern-icon.c $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ -pattern5.o: ./pattern.c ./puzzles.h +pattern7.o: ./pattern.c ./puzzles.h $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +pattern4.o: ./pattern.c ./puzzles.h + $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@ pattern2.o: ./pattern.c ./puzzles.h $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ pearl.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h @@ -488,6 +522,12 @@ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ towers2.o: ./towers.c ./puzzles.h ./latin.h $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +tracks.o: ./tracks.c ./puzzles.h + $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ +tracks-icon.o: icons/tracks-icon.c + $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ +tracks3.o: ./tracks.c ./puzzles.h + $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ tree234.o: ./tree234.c ./tree234.h ./puzzles.h $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@ twiddle.o: ./twiddle.c ./puzzles.h @@ -533,4 +573,4 @@ clean: - rm -rf *.o $(OUTPREFIX)blackbox.js $(OUTPREFIX)bridges.js $(OUTPREFIX)cube.js $(OUTPREFIX)dominosa.js $(OUTPREFIX)fifteen.js $(OUTPREFIX)filling.js $(OUTPREFIX)flip.js $(OUTPREFIX)galaxies.js $(OUTPREFIX)guess.js $(OUTPREFIX)inertia.js $(OUTPREFIX)keen.js $(OUTPREFIX)lightup.js $(OUTPREFIX)loopy.js $(OUTPREFIX)magnets.js $(OUTPREFIX)map.js $(OUTPREFIX)mines.js $(OUTPREFIX)net.js $(OUTPREFIX)netslide.js $(OUTPREFIX)nullgame.js $(OUTPREFIX)pattern.js $(OUTPREFIX)pearl.js $(OUTPREFIX)pegs.js $(OUTPREFIX)range.js $(OUTPREFIX)rect.js $(OUTPREFIX)samegame.js $(OUTPREFIX)signpost.js $(OUTPREFIX)singles.js $(OUTPREFIX)sixteen.js $(OUTPREFIX)slant.js $(OUTPREFIX)solo.js $(OUTPREFIX)tents.js $(OUTPREFIX)towers.js $(OUTPREFIX)twiddle.js $(OUTPREFIX)undead.js $(OUTPREFIX)unequal.js $(OUTPREFIX)unruly.js $(OUTPREFIX)untangle.js + rm -rf *.o $(OUTPREFIX)blackbox.js $(OUTPREFIX)bridges.js $(OUTPREFIX)cube.js $(OUTPREFIX)dominosa.js $(OUTPREFIX)fifteen.js $(OUTPREFIX)filling.js $(OUTPREFIX)flip.js $(OUTPREFIX)flood.js $(OUTPREFIX)galaxies.js $(OUTPREFIX)guess.js $(OUTPREFIX)inertia.js $(OUTPREFIX)keen.js $(OUTPREFIX)lightup.js $(OUTPREFIX)loopy.js $(OUTPREFIX)magnets.js $(OUTPREFIX)map.js $(OUTPREFIX)mines.js $(OUTPREFIX)net.js $(OUTPREFIX)netslide.js $(OUTPREFIX)nullgame.js $(OUTPREFIX)palisade.js $(OUTPREFIX)pattern.js $(OUTPREFIX)pearl.js $(OUTPREFIX)pegs.js $(OUTPREFIX)range.js $(OUTPREFIX)rect.js $(OUTPREFIX)samegame.js $(OUTPREFIX)signpost.js $(OUTPREFIX)singles.js $(OUTPREFIX)sixteen.js $(OUTPREFIX)slant.js $(OUTPREFIX)solo.js $(OUTPREFIX)tents.js $(OUTPREFIX)towers.js $(OUTPREFIX)tracks.js $(OUTPREFIX)twiddle.js $(OUTPREFIX)undead.js $(OUTPREFIX)unequal.js $(OUTPREFIX)unruly.js $(OUTPREFIX)untangle.js diff -Nru sgt-puzzles-20140928.r10274/Makefile.gnustep sgt-puzzles-20160429.b31155b/Makefile.gnustep --- sgt-puzzles-20140928.r10274/Makefile.gnustep 2014-09-29 00:35:53.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/Makefile.gnustep 2016-04-29 00:37:35.000000000 +0000 @@ -7,11 +7,12 @@ include $(GNUSTEP_MAKEFILES)/rules.make include $(GNUSTEP_MAKEFILES)/Instance/rules.make -all:: Puzzles fillingsolver galaxiespicture galaxiessolver keensolver \ - latincheck lightupsolver loopysolver magnetssolver mapsolver \ - mineobfusc obfusc patternsolver pearlbench signpostsolver \ - singlessolver slantsolver solosolver tentssolver \ - towerssolver unequalsolver unrulysolver +all:: Puzzles fifteensolver fillingsolver galaxiespicture galaxiessolver \ + keensolver latincheck lightupsolver loopysolver \ + magnetssolver mapsolver mineobfusc obfusc patternpicture \ + patternsolver pearlbench signpostsolver singlessolver \ + slantsolver solosolver tentssolver towerssolver \ + unequalsolver unrulysolver .SUFFIXES: .o .c .m @@ -30,25 +31,30 @@ $(Puzzles_extra) Puzzles.app/Puzzles: blackbo3.o bridges3.o combi.o cube3.o divvy.o \ - dominos3.o drawing.o dsf.o fifteen3.o filling5.o flip3.o \ - galaxie7.o grid.o guess3.o inertia3.o keen5.o latin.o \ - laydomino.o lightup5.o list.o loopgen.o loopy5.o magnets5.o \ - malloc.o map5.o maxflow.o midend.o mines5.o misc.o net3.o \ - netslid3.o osx.o pattern5.o pearl5.o pegs3.o penrose.o \ - random.o range3.o rect3.o samegam3.o signpos5.o singles5.o \ - sixteen3.o slant5.o solo5.o tdq.o tents5.o towers5.o \ - tree234.o twiddle3.o undead3.o unequal5.o unruly5.o \ - untangl3.o version.o + dominos3.o drawing.o dsf.o fifteen5.o filling5.o findloop.o \ + flip3.o flood3.o galaxie7.o grid.o guess3.o inertia3.o \ + keen5.o latin.o laydomino.o lightup5.o list.o loopgen.o \ + loopy5.o magnets5.o malloc.o map5.o maxflow.o midend.o \ + mines5.o misc.o net3.o netslid3.o osx.o palisad3.o \ + pattern7.o pearl5.o pegs3.o penrose.o random.o range3.o \ + rect3.o samegam3.o signpos5.o singles5.o sixteen3.o slant5.o \ + solo5.o tdq.o tents5.o towers5.o tracks3.o tree234.o \ + twiddle3.o undead3.o unequal5.o unruly5.o untangl3.o \ + version.o $(CC) $(ALL_LDFLAGS) -o $@ blackbo3.o bridges3.o combi.o cube3.o \ - divvy.o dominos3.o drawing.o dsf.o fifteen3.o filling5.o \ - flip3.o galaxie7.o grid.o guess3.o inertia3.o keen5.o \ - latin.o laydomino.o lightup5.o list.o loopgen.o loopy5.o \ - magnets5.o malloc.o map5.o maxflow.o midend.o mines5.o \ - misc.o net3.o netslid3.o osx.o pattern5.o pearl5.o pegs3.o \ - penrose.o random.o range3.o rect3.o samegam3.o signpos5.o \ - singles5.o sixteen3.o slant5.o solo5.o tdq.o tents5.o \ - towers5.o tree234.o twiddle3.o undead3.o unequal5.o \ - unruly5.o untangl3.o version.o $(ALL_LIB_DIRS) $(ALL_LIBS) + divvy.o dominos3.o drawing.o dsf.o fifteen5.o filling5.o \ + findloop.o flip3.o flood3.o galaxie7.o grid.o guess3.o \ + inertia3.o keen5.o latin.o laydomino.o lightup5.o list.o \ + loopgen.o loopy5.o magnets5.o malloc.o map5.o maxflow.o \ + midend.o mines5.o misc.o net3.o netslid3.o osx.o palisad3.o \ + pattern7.o pearl5.o pegs3.o penrose.o random.o range3.o \ + rect3.o samegam3.o signpos5.o singles5.o sixteen3.o slant5.o \ + solo5.o tdq.o tents5.o towers5.o tracks3.o tree234.o \ + twiddle3.o undead3.o unequal5.o unruly5.o untangl3.o \ + version.o $(ALL_LIB_DIRS) $(ALL_LIBS) + +fifteensolver: fifteen2.o malloc.o misc.o nullfe.o random.o + $(CC) $(ULDFLAGS) -o $@ fifteen2.o malloc.o misc.o nullfe.o random.o fillingsolver: dsf.o filling2.o malloc.o misc.o nullfe.o random.o $(CC) $(ULDFLAGS) -o $@ dsf.o filling2.o malloc.o misc.o nullfe.o \ @@ -95,6 +101,9 @@ obfusc: malloc.o misc.o nullfe.o obfusc.o random.o $(CC) $(ULDFLAGS) -o $@ malloc.o misc.o nullfe.o obfusc.o random.o +patternpicture: malloc.o misc.o nullfe.o pattern4.o random.o + $(CC) $(ULDFLAGS) -o $@ malloc.o misc.o nullfe.o pattern4.o random.o + patternsolver: malloc.o misc.o nullfe.o pattern2.o random.o $(CC) $(ULDFLAGS) -o $@ malloc.o misc.o nullfe.o pattern2.o random.o @@ -112,9 +121,9 @@ $(CC) $(ULDFLAGS) -o $@ dsf.o latin.o malloc.o maxflow.o misc.o \ nullfe.o random.o singles3.o tree234.o -slantsolver: dsf.o malloc.o misc.o nullfe.o random.o slant2.o - $(CC) $(ULDFLAGS) -o $@ dsf.o malloc.o misc.o nullfe.o random.o \ - slant2.o +slantsolver: dsf.o findloop.o malloc.o misc.o nullfe.o random.o slant2.o + $(CC) $(ULDFLAGS) -o $@ dsf.o findloop.o malloc.o misc.o nullfe.o \ + random.o slant2.o solosolver: divvy.o dsf.o malloc.o misc.o nullfe.o random.o solo2.o $(CC) $(ULDFLAGS) -o $@ divvy.o dsf.o malloc.o misc.o nullfe.o \ @@ -173,8 +182,10 @@ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ fifteen-icon.o: icons/fifteen-icon.c $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -fifteen3.o: ./fifteen.c ./puzzles.h +fifteen5.o: ./fifteen.c ./puzzles.h $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +fifteen2.o: ./fifteen.c ./puzzles.h + $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ filling.o: ./filling.c ./puzzles.h $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ filling-icon.o: icons/filling-icon.c @@ -183,12 +194,20 @@ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ filling2.o: ./filling.c ./puzzles.h $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +findloop.o: ./findloop.c ./puzzles.h + $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ flip.o: ./flip.c ./puzzles.h ./tree234.h $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ flip-icon.o: icons/flip-icon.c $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ flip3.o: ./flip.c ./puzzles.h ./tree234.h $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +flood.o: ./flood.c ./puzzles.h + $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +flood-icon.o: icons/flood-icon.c + $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +flood3.o: ./flood.c ./puzzles.h + $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ galaxies.o: ./galaxies.c ./puzzles.h $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ galaxies-icon.o: icons/galaxies-icon.c @@ -305,12 +324,20 @@ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ osx.o: ./osx.m ./puzzles.h $(CC) -DGNUSTEP $(ALL_OBJCFLAGS) $(COMPAT) $(FWHACK) $(OBJCFLAGS) $(XFLAGS) -c $< -o $@ +palisade.o: ./palisade.c ./puzzles.h + $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisade-icon.o: icons/palisade-icon.c + $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisad3.o: ./palisade.c ./puzzles.h + $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ pattern.o: ./pattern.c ./puzzles.h $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ pattern-icon.o: icons/pattern-icon.c $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -pattern5.o: ./pattern.c ./puzzles.h +pattern7.o: ./pattern.c ./puzzles.h $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +pattern4.o: ./pattern.c ./puzzles.h + $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@ pattern2.o: ./pattern.c ./puzzles.h $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ pearl.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h @@ -409,6 +436,12 @@ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ towers2.o: ./towers.c ./puzzles.h ./latin.h $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +tracks.o: ./tracks.c ./puzzles.h + $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +tracks-icon.o: icons/tracks-icon.c + $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +tracks3.o: ./tracks.c ./puzzles.h + $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ tree234.o: ./tree234.c ./tree234.h ./puzzles.h $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ twiddle.o: ./twiddle.c ./puzzles.h @@ -453,5 +486,5 @@ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ clean:: - rm -f *.o fillingsolver galaxiespicture galaxiessolver keensolver latincheck lightupsolver loopysolver magnetssolver mapsolver mineobfusc obfusc patternsolver pearlbench signpostsolver singlessolver slantsolver solosolver tentssolver towerssolver unequalsolver unrulysolver + rm -f *.o fifteensolver fillingsolver galaxiespicture galaxiessolver keensolver latincheck lightupsolver loopysolver magnetssolver mapsolver mineobfusc obfusc patternpicture patternsolver pearlbench signpostsolver singlessolver slantsolver solosolver tentssolver towerssolver unequalsolver unrulysolver rm -rf *.app diff -Nru sgt-puzzles-20140928.r10274/Makefile.gtk sgt-puzzles-20160429.b31155b/Makefile.gtk --- sgt-puzzles-20140928.r10274/Makefile.gtk 2014-09-29 00:35:53.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/Makefile.gtk 2016-04-29 00:37:35.000000000 +0000 @@ -28,8 +28,9 @@ man1dir=$(mandir)/man1 all: $(BINPREFIX)blackbox $(BINPREFIX)bridges $(BINPREFIX)cube \ - $(BINPREFIX)dominosa $(BINPREFIX)fifteen $(BINPREFIX)filling \ - $(BINPREFIX)fillingsolver $(BINPREFIX)flip \ + $(BINPREFIX)dominosa $(BINPREFIX)fifteen \ + $(BINPREFIX)fifteensolver $(BINPREFIX)filling \ + $(BINPREFIX)fillingsolver $(BINPREFIX)flip $(BINPREFIX)flood \ $(BINPREFIX)galaxies $(BINPREFIX)galaxiespicture \ $(BINPREFIX)galaxiessolver $(BINPREFIX)guess \ $(BINPREFIX)inertia $(BINPREFIX)keen $(BINPREFIX)keensolver \ @@ -39,7 +40,8 @@ $(BINPREFIX)magnetssolver $(BINPREFIX)map \ $(BINPREFIX)mapsolver $(BINPREFIX)mineobfusc \ $(BINPREFIX)mines $(BINPREFIX)net $(BINPREFIX)netslide \ - $(BINPREFIX)nullgame $(BINPREFIX)obfusc $(BINPREFIX)pattern \ + $(BINPREFIX)nullgame $(BINPREFIX)obfusc $(BINPREFIX)palisade \ + $(BINPREFIX)pattern $(BINPREFIX)patternpicture \ $(BINPREFIX)patternsolver $(BINPREFIX)pearl \ $(BINPREFIX)pearlbench $(BINPREFIX)pegs $(BINPREFIX)range \ $(BINPREFIX)rect $(BINPREFIX)samegame $(BINPREFIX)signpost \ @@ -48,8 +50,8 @@ $(BINPREFIX)slant $(BINPREFIX)slantsolver $(BINPREFIX)solo \ $(BINPREFIX)solosolver $(BINPREFIX)tents \ $(BINPREFIX)tentssolver $(BINPREFIX)towers \ - $(BINPREFIX)towerssolver $(BINPREFIX)twiddle \ - $(BINPREFIX)undead $(BINPREFIX)unequal \ + $(BINPREFIX)towerssolver $(BINPREFIX)tracks \ + $(BINPREFIX)twiddle $(BINPREFIX)undead $(BINPREFIX)unequal \ $(BINPREFIX)unequalsolver $(BINPREFIX)unruly \ $(BINPREFIX)unrulysolver $(BINPREFIX)untangle @@ -59,11 +61,12 @@ midend.o misc.o printing.o ps.o random.o version.o \ $(XLFLAGS) $(XLIBS) -$(BINPREFIX)bridges: bridges.o bridges-icon.o drawing.o dsf.o gtk.o malloc.o \ - midend.o misc.o printing.o ps.o random.o version.o - $(CC) -o $@ bridges.o bridges-icon.o drawing.o dsf.o gtk.o malloc.o \ - midend.o misc.o printing.o ps.o random.o version.o \ - $(XLFLAGS) $(XLIBS) +$(BINPREFIX)bridges: bridges.o bridges-icon.o drawing.o dsf.o findloop.o \ + gtk.o malloc.o midend.o misc.o printing.o ps.o random.o \ + version.o + $(CC) -o $@ bridges.o bridges-icon.o drawing.o dsf.o findloop.o \ + gtk.o malloc.o midend.o misc.o printing.o ps.o random.o \ + version.o $(XLFLAGS) $(XLIBS) $(BINPREFIX)cube: cube.o cube-icon.o drawing.o gtk.o malloc.o midend.o \ misc.o printing.o ps.o random.o version.o @@ -83,6 +86,10 @@ midend.o misc.o printing.o ps.o random.o version.o \ $(XLFLAGS) $(XLIBS) +$(BINPREFIX)fifteensolver: fifteen2.o malloc.o misc.o nullfe.o random.o + $(CC) -o $@ fifteen2.o malloc.o misc.o nullfe.o random.o $(XLFLAGS) \ + $(ULIBS) + $(BINPREFIX)filling: drawing.o dsf.o filling.o filling-icon.o gtk.o malloc.o \ midend.o misc.o printing.o ps.o random.o version.o $(CC) -o $@ drawing.o dsf.o filling.o filling-icon.o gtk.o malloc.o \ @@ -100,6 +107,12 @@ misc.o printing.o ps.o random.o tree234.o version.o \ $(XLFLAGS) $(XLIBS) +$(BINPREFIX)flood: drawing.o flood.o flood-icon.o gtk.o malloc.o midend.o \ + misc.o printing.o ps.o random.o version.o + $(CC) -o $@ drawing.o flood.o flood-icon.o gtk.o malloc.o midend.o \ + misc.o printing.o ps.o random.o version.o $(XLFLAGS) \ + $(XLIBS) + $(BINPREFIX)galaxies: drawing.o dsf.o galaxies.o galaxies-icon.o gtk.o \ malloc.o midend.o misc.o printing.o ps.o random.o version.o $(CC) -o $@ drawing.o dsf.o galaxies.o galaxies-icon.o gtk.o \ @@ -199,11 +212,12 @@ misc.o printing.o ps.o random.o tree234.o version.o \ $(XLFLAGS) $(XLIBS) -$(BINPREFIX)net: drawing.o dsf.o gtk.o malloc.o midend.o misc.o net.o \ - net-icon.o printing.o ps.o random.o tree234.o version.o - $(CC) -o $@ drawing.o dsf.o gtk.o malloc.o midend.o misc.o net.o \ - net-icon.o printing.o ps.o random.o tree234.o version.o \ - $(XLFLAGS) $(XLIBS) +$(BINPREFIX)net: drawing.o dsf.o findloop.o gtk.o malloc.o midend.o misc.o \ + net.o net-icon.o printing.o ps.o random.o tree234.o \ + version.o + $(CC) -o $@ drawing.o dsf.o findloop.o gtk.o malloc.o midend.o \ + misc.o net.o net-icon.o printing.o ps.o random.o tree234.o \ + version.o $(XLFLAGS) $(XLIBS) $(BINPREFIX)netslide: drawing.o gtk.o malloc.o midend.o misc.o netslide.o \ netslide-icon.o printing.o ps.o random.o tree234.o version.o @@ -221,12 +235,23 @@ $(CC) -o $@ malloc.o misc.o nullfe.o obfusc.o random.o $(XLFLAGS) \ $(ULIBS) +$(BINPREFIX)palisade: divvy.o drawing.o dsf.o gtk.o malloc.o midend.o misc.o \ + palisade.o palisade-icon.o printing.o ps.o random.o \ + version.o + $(CC) -o $@ divvy.o drawing.o dsf.o gtk.o malloc.o midend.o misc.o \ + palisade.o palisade-icon.o printing.o ps.o random.o \ + version.o $(XLFLAGS) $(XLIBS) + $(BINPREFIX)pattern: drawing.o gtk.o malloc.o midend.o misc.o pattern.o \ pattern-icon.o printing.o ps.o random.o version.o $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o pattern.o \ pattern-icon.o printing.o ps.o random.o version.o \ $(XLFLAGS) $(XLIBS) +$(BINPREFIX)patternpicture: malloc.o misc.o nullfe.o pattern4.o random.o + $(CC) -o $@ malloc.o misc.o nullfe.o pattern4.o random.o $(XLFLAGS) \ + $(ULIBS) + $(BINPREFIX)patternsolver: malloc.o misc.o nullfe.o pattern2.o random.o $(CC) -o $@ malloc.o misc.o nullfe.o pattern2.o random.o $(XLFLAGS) \ $(ULIBS) @@ -296,15 +321,16 @@ random.o sixteen.o sixteen-icon.o version.o $(XLFLAGS) \ $(XLIBS) -$(BINPREFIX)slant: drawing.o dsf.o gtk.o malloc.o midend.o misc.o printing.o \ - ps.o random.o slant.o slant-icon.o version.o - $(CC) -o $@ drawing.o dsf.o gtk.o malloc.o midend.o misc.o \ - printing.o ps.o random.o slant.o slant-icon.o version.o \ - $(XLFLAGS) $(XLIBS) +$(BINPREFIX)slant: drawing.o dsf.o findloop.o gtk.o malloc.o midend.o misc.o \ + printing.o ps.o random.o slant.o slant-icon.o version.o + $(CC) -o $@ drawing.o dsf.o findloop.o gtk.o malloc.o midend.o \ + misc.o printing.o ps.o random.o slant.o slant-icon.o \ + version.o $(XLFLAGS) $(XLIBS) -$(BINPREFIX)slantsolver: dsf.o malloc.o misc.o nullfe.o random.o slant2.o - $(CC) -o $@ dsf.o malloc.o misc.o nullfe.o random.o slant2.o \ - $(XLFLAGS) $(ULIBS) +$(BINPREFIX)slantsolver: dsf.o findloop.o malloc.o misc.o nullfe.o random.o \ + slant2.o + $(CC) -o $@ dsf.o findloop.o malloc.o misc.o nullfe.o random.o \ + slant2.o $(XLFLAGS) $(ULIBS) $(BINPREFIX)solo: divvy.o drawing.o dsf.o gtk.o malloc.o midend.o misc.o \ printing.o ps.o random.o solo.o solo-icon.o version.o @@ -340,6 +366,13 @@ $(CC) -o $@ latin6.o malloc.o maxflow.o misc.o nullfe.o random.o \ towers2.o tree234.o $(XLFLAGS) $(ULIBS) +$(BINPREFIX)tracks: drawing.o dsf.o findloop.o gtk.o malloc.o midend.o \ + misc.o printing.o ps.o random.o tracks.o tracks-icon.o \ + version.o + $(CC) -o $@ drawing.o dsf.o findloop.o gtk.o malloc.o midend.o \ + misc.o printing.o ps.o random.o tracks.o tracks-icon.o \ + version.o $(XLFLAGS) $(XLIBS) + $(BINPREFIX)twiddle: drawing.o gtk.o malloc.o midend.o misc.o printing.o \ ps.o random.o twiddle.o twiddle-icon.o version.o $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o printing.o ps.o \ @@ -416,8 +449,10 @@ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ fifteen-icon.o: icons/fifteen-icon.c $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -fifteen3.o: ./fifteen.c ./puzzles.h +fifteen5.o: ./fifteen.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +fifteen2.o: ./fifteen.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ filling.o: ./filling.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ filling-icon.o: icons/filling-icon.c @@ -426,12 +461,20 @@ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ filling2.o: ./filling.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +findloop.o: ./findloop.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ flip.o: ./flip.c ./puzzles.h ./tree234.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ flip-icon.o: icons/flip-icon.c $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ flip3.o: ./flip.c ./puzzles.h ./tree234.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +flood.o: ./flood.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +flood-icon.o: icons/flood-icon.c + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +flood3.o: ./flood.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ galaxies.o: ./galaxies.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ galaxies-icon.o: icons/galaxies-icon.c @@ -548,12 +591,20 @@ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ osx.o: ./osx.m ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisade.o: ./palisade.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisade-icon.o: icons/palisade-icon.c + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisad3.o: ./palisade.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ pattern.o: ./pattern.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ pattern-icon.o: icons/pattern-icon.c $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -pattern5.o: ./pattern.c ./puzzles.h +pattern7.o: ./pattern.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +pattern4.o: ./pattern.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@ pattern2.o: ./pattern.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ pearl.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h @@ -652,6 +703,12 @@ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ towers2.o: ./towers.c ./puzzles.h ./latin.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +tracks.o: ./tracks.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +tracks-icon.o: icons/tracks-icon.c + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +tracks3.o: ./tracks.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ tree234.o: ./tree234.c ./tree234.h ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ twiddle.o: ./twiddle.c ./puzzles.h @@ -702,6 +759,7 @@ GAMES += fifteen GAMES += filling GAMES += flip +GAMES += flood GAMES += galaxies GAMES += guess GAMES += inertia @@ -713,6 +771,7 @@ GAMES += mines GAMES += net GAMES += netslide +GAMES += palisade GAMES += pattern GAMES += pearl GAMES += pegs @@ -726,6 +785,7 @@ GAMES += solo GAMES += tents GAMES += towers +GAMES += tracks GAMES += twiddle GAMES += undead GAMES += unequal @@ -741,13 +801,9 @@ benchmark.html: benchmark.txt benchmark.pl ./benchmark.pl benchmark.txt > $@ -benchmark.txt: $(GAMES) - for i in $(GAMES); do \ - for params in $$(env -i ./$(BINPREFIX)$$i --list-presets | cut -f1 -d' '); do \ - env -i ./$(BINPREFIX)$$i --test-solve --time-generation --generate 100 $$params \ - || exit 1; \ - done; \ - done > $@ +benchmark.txt: benchmark.sh $(GAMES) + ./benchmark.sh > $@ + clean: - rm -f *.o $(BINPREFIX)blackbox $(BINPREFIX)bridges $(BINPREFIX)cube $(BINPREFIX)dominosa $(BINPREFIX)fifteen $(BINPREFIX)filling $(BINPREFIX)fillingsolver $(BINPREFIX)flip $(BINPREFIX)galaxies $(BINPREFIX)galaxiespicture $(BINPREFIX)galaxiessolver $(BINPREFIX)guess $(BINPREFIX)inertia $(BINPREFIX)keen $(BINPREFIX)keensolver $(BINPREFIX)latincheck $(BINPREFIX)lightup $(BINPREFIX)lightupsolver $(BINPREFIX)loopy $(BINPREFIX)loopysolver $(BINPREFIX)magnets $(BINPREFIX)magnetssolver $(BINPREFIX)map $(BINPREFIX)mapsolver $(BINPREFIX)mineobfusc $(BINPREFIX)mines $(BINPREFIX)net $(BINPREFIX)netslide $(BINPREFIX)nullgame $(BINPREFIX)obfusc $(BINPREFIX)pattern $(BINPREFIX)patternsolver $(BINPREFIX)pearl $(BINPREFIX)pearlbench $(BINPREFIX)pegs $(BINPREFIX)range $(BINPREFIX)rect $(BINPREFIX)samegame $(BINPREFIX)signpost $(BINPREFIX)signpostsolver $(BINPREFIX)singles $(BINPREFIX)singlessolver $(BINPREFIX)sixteen $(BINPREFIX)slant $(BINPREFIX)slantsolver $(BINPREFIX)solo $(BINPREFIX)solosolver $(BINPREFIX)tents $(BINPREFIX)tentssolver $(BINPREFIX)towers $(BINPREFIX)towerssolver $(BINPREFIX)twiddle $(BINPREFIX)undead $(BINPREFIX)unequal $(BINPREFIX)unequalsolver $(BINPREFIX)unruly $(BINPREFIX)unrulysolver $(BINPREFIX)untangle + rm -f *.o $(BINPREFIX)blackbox $(BINPREFIX)bridges $(BINPREFIX)cube $(BINPREFIX)dominosa $(BINPREFIX)fifteen $(BINPREFIX)fifteensolver $(BINPREFIX)filling $(BINPREFIX)fillingsolver $(BINPREFIX)flip $(BINPREFIX)flood $(BINPREFIX)galaxies $(BINPREFIX)galaxiespicture $(BINPREFIX)galaxiessolver $(BINPREFIX)guess $(BINPREFIX)inertia $(BINPREFIX)keen $(BINPREFIX)keensolver $(BINPREFIX)latincheck $(BINPREFIX)lightup $(BINPREFIX)lightupsolver $(BINPREFIX)loopy $(BINPREFIX)loopysolver $(BINPREFIX)magnets $(BINPREFIX)magnetssolver $(BINPREFIX)map $(BINPREFIX)mapsolver $(BINPREFIX)mineobfusc $(BINPREFIX)mines $(BINPREFIX)net $(BINPREFIX)netslide $(BINPREFIX)nullgame $(BINPREFIX)obfusc $(BINPREFIX)palisade $(BINPREFIX)pattern $(BINPREFIX)patternpicture $(BINPREFIX)patternsolver $(BINPREFIX)pearl $(BINPREFIX)pearlbench $(BINPREFIX)pegs $(BINPREFIX)range $(BINPREFIX)rect $(BINPREFIX)samegame $(BINPREFIX)signpost $(BINPREFIX)signpostsolver $(BINPREFIX)singles $(BINPREFIX)singlessolver $(BINPREFIX)sixteen $(BINPREFIX)slant $(BINPREFIX)slantsolver $(BINPREFIX)solo $(BINPREFIX)solosolver $(BINPREFIX)tents $(BINPREFIX)tentssolver $(BINPREFIX)towers $(BINPREFIX)towerssolver $(BINPREFIX)tracks $(BINPREFIX)twiddle $(BINPREFIX)undead $(BINPREFIX)unequal $(BINPREFIX)unequalsolver $(BINPREFIX)unruly $(BINPREFIX)unrulysolver $(BINPREFIX)untangle diff -Nru sgt-puzzles-20140928.r10274/Makefile.in sgt-puzzles-20160429.b31155b/Makefile.in --- sgt-puzzles-20140928.r10274/Makefile.in 2014-09-29 00:33:56.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/Makefile.in 2016-04-29 00:37:39.000000000 +0000 @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -22,23 +21,61 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -56,34 +93,34 @@ PRE_UNINSTALL = : POST_UNINSTALL = : noinst_PROGRAMS = blackbox$(EXEEXT) bridges$(EXEEXT) cube$(EXEEXT) \ - dominosa$(EXEEXT) fifteen$(EXEEXT) filling$(EXEEXT) \ - fillingsolver$(EXEEXT) flip$(EXEEXT) galaxies$(EXEEXT) \ - galaxiespicture$(EXEEXT) galaxiessolver$(EXEEXT) \ - guess$(EXEEXT) inertia$(EXEEXT) keen$(EXEEXT) \ - keensolver$(EXEEXT) latincheck$(EXEEXT) lightup$(EXEEXT) \ - lightupsolver$(EXEEXT) loopy$(EXEEXT) loopysolver$(EXEEXT) \ - magnets$(EXEEXT) magnetssolver$(EXEEXT) map$(EXEEXT) \ - mapsolver$(EXEEXT) mineobfusc$(EXEEXT) mines$(EXEEXT) \ - net$(EXEEXT) netslide$(EXEEXT) nullgame$(EXEEXT) \ - obfusc$(EXEEXT) pattern$(EXEEXT) patternsolver$(EXEEXT) \ - pearl$(EXEEXT) pearlbench$(EXEEXT) pegs$(EXEEXT) \ - range$(EXEEXT) rect$(EXEEXT) samegame$(EXEEXT) \ + dominosa$(EXEEXT) fifteen$(EXEEXT) fifteensolver$(EXEEXT) \ + filling$(EXEEXT) fillingsolver$(EXEEXT) flip$(EXEEXT) \ + flood$(EXEEXT) galaxies$(EXEEXT) galaxiespicture$(EXEEXT) \ + galaxiessolver$(EXEEXT) guess$(EXEEXT) inertia$(EXEEXT) \ + keen$(EXEEXT) keensolver$(EXEEXT) latincheck$(EXEEXT) \ + lightup$(EXEEXT) lightupsolver$(EXEEXT) loopy$(EXEEXT) \ + loopysolver$(EXEEXT) magnets$(EXEEXT) magnetssolver$(EXEEXT) \ + map$(EXEEXT) mapsolver$(EXEEXT) mineobfusc$(EXEEXT) \ + mines$(EXEEXT) net$(EXEEXT) netslide$(EXEEXT) \ + nullgame$(EXEEXT) obfusc$(EXEEXT) palisade$(EXEEXT) \ + pattern$(EXEEXT) patternpicture$(EXEEXT) \ + patternsolver$(EXEEXT) pearl$(EXEEXT) pearlbench$(EXEEXT) \ + pegs$(EXEEXT) range$(EXEEXT) rect$(EXEEXT) samegame$(EXEEXT) \ signpost$(EXEEXT) signpostsolver$(EXEEXT) singles$(EXEEXT) \ singlessolver$(EXEEXT) sixteen$(EXEEXT) slant$(EXEEXT) \ slantsolver$(EXEEXT) solo$(EXEEXT) solosolver$(EXEEXT) \ tents$(EXEEXT) tentssolver$(EXEEXT) towers$(EXEEXT) \ - towerssolver$(EXEEXT) twiddle$(EXEEXT) undead$(EXEEXT) \ - unequal$(EXEEXT) unequalsolver$(EXEEXT) unruly$(EXEEXT) \ - unrulysolver$(EXEEXT) untangle$(EXEEXT) + towerssolver$(EXEEXT) tracks$(EXEEXT) twiddle$(EXEEXT) \ + undead$(EXEEXT) unequal$(EXEEXT) unequalsolver$(EXEEXT) \ + unruly$(EXEEXT) unrulysolver$(EXEEXT) untangle$(EXEEXT) bin_PROGRAMS = $(am__EXEEXT_1) subdir = . -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/configure depcomp \ - install-sh missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d @@ -92,9 +129,17 @@ LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libfifteen2_a_AR = $(AR) $(ARFLAGS) +libfifteen2_a_LIBADD = +am__dirstamp = $(am__leading_dot)dirstamp +am_libfifteen2_a_OBJECTS = ./libfifteen2_a-fifteen.$(OBJEXT) +libfifteen2_a_OBJECTS = $(am_libfifteen2_a_OBJECTS) libfilling2_a_AR = $(AR) $(ARFLAGS) libfilling2_a_LIBADD = -am__dirstamp = $(am__leading_dot)dirstamp am_libfilling2_a_OBJECTS = ./libfilling2_a-filling.$(OBJEXT) libfilling2_a_OBJECTS = $(am_libfilling2_a_OBJECTS) libgalaxie2_a_AR = $(AR) $(ARFLAGS) @@ -141,6 +186,10 @@ libpattern2_a_LIBADD = am_libpattern2_a_OBJECTS = ./libpattern2_a-pattern.$(OBJEXT) libpattern2_a_OBJECTS = $(am_libpattern2_a_OBJECTS) +libpattern4_a_AR = $(AR) $(ARFLAGS) +libpattern4_a_LIBADD = +am_libpattern4_a_OBJECTS = ./libpattern4_a-pattern.$(OBJEXT) +libpattern4_a_OBJECTS = $(am_libpattern4_a_OBJECTS) libpearl2_a_AR = $(AR) $(ARFLAGS) libpearl2_a_LIBADD = am_libpearl2_a_OBJECTS = ./libpearl2_a-pearl.$(OBJEXT) @@ -179,15 +228,16 @@ libunruly2_a_OBJECTS = $(am_libunruly2_a_OBJECTS) am__EXEEXT_1 = blackbox$(EXEEXT) bridges$(EXEEXT) cube$(EXEEXT) \ dominosa$(EXEEXT) fifteen$(EXEEXT) filling$(EXEEXT) \ - flip$(EXEEXT) galaxies$(EXEEXT) guess$(EXEEXT) \ + flip$(EXEEXT) flood$(EXEEXT) galaxies$(EXEEXT) guess$(EXEEXT) \ inertia$(EXEEXT) keen$(EXEEXT) lightup$(EXEEXT) loopy$(EXEEXT) \ magnets$(EXEEXT) map$(EXEEXT) mines$(EXEEXT) net$(EXEEXT) \ - netslide$(EXEEXT) pattern$(EXEEXT) pearl$(EXEEXT) \ - pegs$(EXEEXT) range$(EXEEXT) rect$(EXEEXT) samegame$(EXEEXT) \ - signpost$(EXEEXT) singles$(EXEEXT) sixteen$(EXEEXT) \ - slant$(EXEEXT) solo$(EXEEXT) tents$(EXEEXT) towers$(EXEEXT) \ - twiddle$(EXEEXT) undead$(EXEEXT) unequal$(EXEEXT) \ - unruly$(EXEEXT) untangle$(EXEEXT) + netslide$(EXEEXT) palisade$(EXEEXT) pattern$(EXEEXT) \ + pearl$(EXEEXT) pegs$(EXEEXT) range$(EXEEXT) rect$(EXEEXT) \ + samegame$(EXEEXT) signpost$(EXEEXT) singles$(EXEEXT) \ + sixteen$(EXEEXT) slant$(EXEEXT) solo$(EXEEXT) tents$(EXEEXT) \ + towers$(EXEEXT) tracks$(EXEEXT) twiddle$(EXEEXT) \ + undead$(EXEEXT) unequal$(EXEEXT) unruly$(EXEEXT) \ + untangle$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) am_blackbox_OBJECTS = ./blackbox.$(OBJEXT) ./drawing.$(OBJEXT) \ @@ -199,10 +249,10 @@ am__DEPENDENCIES_1 = blackbox_DEPENDENCIES = $(am__DEPENDENCIES_1) am_bridges_OBJECTS = ./bridges.$(OBJEXT) ./drawing.$(OBJEXT) \ - ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \ - ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./printing.$(OBJEXT) \ - ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT) \ - icons/bridges-icon.$(OBJEXT) + ./dsf.$(OBJEXT) ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ + ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \ + ./version.$(OBJEXT) icons/bridges-icon.$(OBJEXT) bridges_OBJECTS = $(am_bridges_OBJECTS) bridges_DEPENDENCIES = $(am__DEPENDENCIES_1) am_cube_OBJECTS = ./cube.$(OBJEXT) ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ @@ -225,6 +275,10 @@ icons/fifteen-icon.$(OBJEXT) fifteen_OBJECTS = $(am_fifteen_OBJECTS) fifteen_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_fifteensolver_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \ + ./nullfe.$(OBJEXT) ./random.$(OBJEXT) +fifteensolver_OBJECTS = $(am_fifteensolver_OBJECTS) +fifteensolver_DEPENDENCIES = libfifteen2_a-fifteen.$(OBJEXT) am_filling_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \ ./filling.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./printing.$(OBJEXT) \ @@ -243,6 +297,13 @@ icons/flip-icon.$(OBJEXT) flip_OBJECTS = $(am_flip_OBJECTS) flip_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_flood_OBJECTS = ./drawing.$(OBJEXT) ./flood.$(OBJEXT) \ + ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \ + ./misc.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ + ./random.$(OBJEXT) ./version.$(OBJEXT) \ + icons/flood-icon.$(OBJEXT) +flood_OBJECTS = $(am_flood_OBJECTS) +flood_DEPENDENCIES = $(am__DEPENDENCIES_1) am_galaxies_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \ ./galaxies.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./printing.$(OBJEXT) \ @@ -349,10 +410,11 @@ icons/mines-icon.$(OBJEXT) mines_OBJECTS = $(am_mines_OBJECTS) mines_DEPENDENCIES = $(am__DEPENDENCIES_1) -am_net_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \ - ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ - ./net.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ - ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT) \ +am_net_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \ + ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./net.$(OBJEXT) \ + ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \ + ./tree234.$(OBJEXT) ./version.$(OBJEXT) \ icons/net-icon.$(OBJEXT) net_OBJECTS = $(am_net_OBJECTS) net_DEPENDENCIES = $(am__DEPENDENCIES_1) @@ -373,6 +435,13 @@ ./nullfe.$(OBJEXT) ./obfusc.$(OBJEXT) ./random.$(OBJEXT) obfusc_OBJECTS = $(am_obfusc_OBJECTS) obfusc_DEPENDENCIES = +am_palisade_OBJECTS = ./divvy.$(OBJEXT) ./drawing.$(OBJEXT) \ + ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./palisade.$(OBJEXT) \ + ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \ + ./version.$(OBJEXT) icons/palisade-icon.$(OBJEXT) +palisade_OBJECTS = $(am_palisade_OBJECTS) +palisade_DEPENDENCIES = $(am__DEPENDENCIES_1) am_pattern_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ ./pattern.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \ @@ -380,6 +449,10 @@ icons/pattern-icon.$(OBJEXT) pattern_OBJECTS = $(am_pattern_OBJECTS) pattern_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_patternpicture_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \ + ./nullfe.$(OBJEXT) ./random.$(OBJEXT) +patternpicture_OBJECTS = $(am_patternpicture_OBJECTS) +patternpicture_DEPENDENCIES = libpattern4_a-pattern.$(OBJEXT) am_patternsolver_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \ ./nullfe.$(OBJEXT) ./random.$(OBJEXT) patternsolver_OBJECTS = $(am_patternsolver_OBJECTS) @@ -457,15 +530,16 @@ icons/sixteen-icon.$(OBJEXT) sixteen_OBJECTS = $(am_sixteen_OBJECTS) sixteen_DEPENDENCIES = $(am__DEPENDENCIES_1) -am_slant_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \ - ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ - ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \ - ./slant.$(OBJEXT) ./version.$(OBJEXT) \ - icons/slant-icon.$(OBJEXT) +am_slant_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \ + ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./printing.$(OBJEXT) \ + ./ps.$(OBJEXT) ./random.$(OBJEXT) ./slant.$(OBJEXT) \ + ./version.$(OBJEXT) icons/slant-icon.$(OBJEXT) slant_OBJECTS = $(am_slant_OBJECTS) slant_DEPENDENCIES = $(am__DEPENDENCIES_1) -am_slantsolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \ - ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) +am_slantsolver_OBJECTS = ./dsf.$(OBJEXT) ./findloop.$(OBJEXT) \ + ./malloc.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \ + ./random.$(OBJEXT) slantsolver_OBJECTS = $(am_slantsolver_OBJECTS) slantsolver_DEPENDENCIES = libslant2_a-slant.$(OBJEXT) am_solo_OBJECTS = ./divvy.$(OBJEXT) ./drawing.$(OBJEXT) \ @@ -506,6 +580,13 @@ towerssolver_OBJECTS = $(am_towerssolver_OBJECTS) towerssolver_DEPENDENCIES = liblatin6_a-latin.$(OBJEXT) \ libtowers2_a-towers.$(OBJEXT) +am_tracks_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \ + ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \ + ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./printing.$(OBJEXT) \ + ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tracks.$(OBJEXT) \ + ./version.$(OBJEXT) icons/tracks-icon.$(OBJEXT) +tracks_OBJECTS = $(am_tracks_OBJECTS) +tracks_DEPENDENCIES = $(am__DEPENDENCIES_1) am_twiddle_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \ @@ -552,27 +633,53 @@ icons/untangle-icon.$(OBJEXT) untangle_OBJECTS = $(am_untangle_OBJECTS) untangle_DEPENDENCIES = $(am__DEPENDENCIES_1) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(libfilling2_a_SOURCES) $(libgalaxie2_a_SOURCES) \ - $(libgalaxie4_a_SOURCES) $(libkeen2_a_SOURCES) \ - $(liblatin6_a_SOURCES) $(liblatin8_a_SOURCES) \ - $(liblightup2_a_SOURCES) $(libloopy2_a_SOURCES) \ - $(libmagnets2_a_SOURCES) $(libmap2_a_SOURCES) \ - $(libmines2_a_SOURCES) $(libpattern2_a_SOURCES) \ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libfifteen2_a_SOURCES) $(libfilling2_a_SOURCES) \ + $(libgalaxie2_a_SOURCES) $(libgalaxie4_a_SOURCES) \ + $(libkeen2_a_SOURCES) $(liblatin6_a_SOURCES) \ + $(liblatin8_a_SOURCES) $(liblightup2_a_SOURCES) \ + $(libloopy2_a_SOURCES) $(libmagnets2_a_SOURCES) \ + $(libmap2_a_SOURCES) $(libmines2_a_SOURCES) \ + $(libpattern2_a_SOURCES) $(libpattern4_a_SOURCES) \ $(libpearl2_a_SOURCES) $(libsignpos2_a_SOURCES) \ $(libsingles3_a_SOURCES) $(libslant2_a_SOURCES) \ $(libsolo2_a_SOURCES) $(libtents3_a_SOURCES) \ $(libtowers2_a_SOURCES) $(libunequal2_a_SOURCES) \ $(libunruly2_a_SOURCES) $(blackbox_SOURCES) $(bridges_SOURCES) \ $(cube_SOURCES) $(dominosa_SOURCES) $(fifteen_SOURCES) \ - $(filling_SOURCES) $(fillingsolver_SOURCES) $(flip_SOURCES) \ + $(fifteensolver_SOURCES) $(filling_SOURCES) \ + $(fillingsolver_SOURCES) $(flip_SOURCES) $(flood_SOURCES) \ $(galaxies_SOURCES) $(galaxiespicture_SOURCES) \ $(galaxiessolver_SOURCES) $(guess_SOURCES) $(inertia_SOURCES) \ $(keen_SOURCES) $(keensolver_SOURCES) $(latincheck_SOURCES) \ @@ -581,29 +688,33 @@ $(magnetssolver_SOURCES) $(map_SOURCES) $(mapsolver_SOURCES) \ $(mineobfusc_SOURCES) $(mines_SOURCES) $(net_SOURCES) \ $(netslide_SOURCES) $(nullgame_SOURCES) $(obfusc_SOURCES) \ - $(pattern_SOURCES) $(patternsolver_SOURCES) $(pearl_SOURCES) \ - $(pearlbench_SOURCES) $(pegs_SOURCES) $(range_SOURCES) \ - $(rect_SOURCES) $(samegame_SOURCES) $(signpost_SOURCES) \ - $(signpostsolver_SOURCES) $(singles_SOURCES) \ - $(singlessolver_SOURCES) $(sixteen_SOURCES) $(slant_SOURCES) \ - $(slantsolver_SOURCES) $(solo_SOURCES) $(solosolver_SOURCES) \ - $(tents_SOURCES) $(tentssolver_SOURCES) $(towers_SOURCES) \ - $(towerssolver_SOURCES) $(twiddle_SOURCES) $(undead_SOURCES) \ - $(unequal_SOURCES) $(unequalsolver_SOURCES) $(unruly_SOURCES) \ + $(palisade_SOURCES) $(pattern_SOURCES) \ + $(patternpicture_SOURCES) $(patternsolver_SOURCES) \ + $(pearl_SOURCES) $(pearlbench_SOURCES) $(pegs_SOURCES) \ + $(range_SOURCES) $(rect_SOURCES) $(samegame_SOURCES) \ + $(signpost_SOURCES) $(signpostsolver_SOURCES) \ + $(singles_SOURCES) $(singlessolver_SOURCES) $(sixteen_SOURCES) \ + $(slant_SOURCES) $(slantsolver_SOURCES) $(solo_SOURCES) \ + $(solosolver_SOURCES) $(tents_SOURCES) $(tentssolver_SOURCES) \ + $(towers_SOURCES) $(towerssolver_SOURCES) $(tracks_SOURCES) \ + $(twiddle_SOURCES) $(undead_SOURCES) $(unequal_SOURCES) \ + $(unequalsolver_SOURCES) $(unruly_SOURCES) \ $(unrulysolver_SOURCES) $(untangle_SOURCES) -DIST_SOURCES = $(libfilling2_a_SOURCES) $(libgalaxie2_a_SOURCES) \ - $(libgalaxie4_a_SOURCES) $(libkeen2_a_SOURCES) \ - $(liblatin6_a_SOURCES) $(liblatin8_a_SOURCES) \ - $(liblightup2_a_SOURCES) $(libloopy2_a_SOURCES) \ - $(libmagnets2_a_SOURCES) $(libmap2_a_SOURCES) \ - $(libmines2_a_SOURCES) $(libpattern2_a_SOURCES) \ +DIST_SOURCES = $(libfifteen2_a_SOURCES) $(libfilling2_a_SOURCES) \ + $(libgalaxie2_a_SOURCES) $(libgalaxie4_a_SOURCES) \ + $(libkeen2_a_SOURCES) $(liblatin6_a_SOURCES) \ + $(liblatin8_a_SOURCES) $(liblightup2_a_SOURCES) \ + $(libloopy2_a_SOURCES) $(libmagnets2_a_SOURCES) \ + $(libmap2_a_SOURCES) $(libmines2_a_SOURCES) \ + $(libpattern2_a_SOURCES) $(libpattern4_a_SOURCES) \ $(libpearl2_a_SOURCES) $(libsignpos2_a_SOURCES) \ $(libsingles3_a_SOURCES) $(libslant2_a_SOURCES) \ $(libsolo2_a_SOURCES) $(libtents3_a_SOURCES) \ $(libtowers2_a_SOURCES) $(libunequal2_a_SOURCES) \ $(libunruly2_a_SOURCES) $(blackbox_SOURCES) $(bridges_SOURCES) \ $(cube_SOURCES) $(dominosa_SOURCES) $(fifteen_SOURCES) \ - $(filling_SOURCES) $(fillingsolver_SOURCES) $(flip_SOURCES) \ + $(fifteensolver_SOURCES) $(filling_SOURCES) \ + $(fillingsolver_SOURCES) $(flip_SOURCES) $(flood_SOURCES) \ $(galaxies_SOURCES) $(galaxiespicture_SOURCES) \ $(galaxiessolver_SOURCES) $(guess_SOURCES) $(inertia_SOURCES) \ $(keen_SOURCES) $(keensolver_SOURCES) $(latincheck_SOURCES) \ @@ -612,23 +723,46 @@ $(magnetssolver_SOURCES) $(map_SOURCES) $(mapsolver_SOURCES) \ $(mineobfusc_SOURCES) $(mines_SOURCES) $(net_SOURCES) \ $(netslide_SOURCES) $(nullgame_SOURCES) $(obfusc_SOURCES) \ - $(pattern_SOURCES) $(patternsolver_SOURCES) $(pearl_SOURCES) \ - $(pearlbench_SOURCES) $(pegs_SOURCES) $(range_SOURCES) \ - $(rect_SOURCES) $(samegame_SOURCES) $(signpost_SOURCES) \ - $(signpostsolver_SOURCES) $(singles_SOURCES) \ - $(singlessolver_SOURCES) $(sixteen_SOURCES) $(slant_SOURCES) \ - $(slantsolver_SOURCES) $(solo_SOURCES) $(solosolver_SOURCES) \ - $(tents_SOURCES) $(tentssolver_SOURCES) $(towers_SOURCES) \ - $(towerssolver_SOURCES) $(twiddle_SOURCES) $(undead_SOURCES) \ - $(unequal_SOURCES) $(unequalsolver_SOURCES) $(unruly_SOURCES) \ + $(palisade_SOURCES) $(pattern_SOURCES) \ + $(patternpicture_SOURCES) $(patternsolver_SOURCES) \ + $(pearl_SOURCES) $(pearlbench_SOURCES) $(pegs_SOURCES) \ + $(range_SOURCES) $(rect_SOURCES) $(samegame_SOURCES) \ + $(signpost_SOURCES) $(signpostsolver_SOURCES) \ + $(singles_SOURCES) $(singlessolver_SOURCES) $(sixteen_SOURCES) \ + $(slant_SOURCES) $(slantsolver_SOURCES) $(solo_SOURCES) \ + $(solosolver_SOURCES) $(tents_SOURCES) $(tentssolver_SOURCES) \ + $(towers_SOURCES) $(towerssolver_SOURCES) $(tracks_SOURCES) \ + $(twiddle_SOURCES) $(undead_SOURCES) $(unequal_SOURCES) \ + $(unequalsolver_SOURCES) $(unruly_SOURCES) \ $(unrulysolver_SOURCES) $(untangle_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +CSCOPE = cscope +AM_RECURSIVE_TARGETS = cscope +am__DIST_COMMON = $(srcdir)/Makefile.in README compile depcomp \ + install-sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -638,14 +772,17 @@ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi +am__post_remove_distdir = $(am__remove_distdir) DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best +DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ @@ -684,6 +821,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ @@ -723,6 +862,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -731,39 +871,42 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -GAMES = blackbox bridges cube dominosa fifteen filling flip galaxies \ - guess inertia keen lightup loopy magnets map mines net \ - netslide pattern pearl pegs range rect samegame signpost \ - singles sixteen slant solo tents towers twiddle undead unequal \ - unruly untangle +GAMES = blackbox bridges cube dominosa fifteen filling flip flood \ + galaxies guess inertia keen lightup loopy magnets map mines \ + net netslide palisade pattern pearl pegs range rect samegame \ + signpost singles sixteen slant solo tents towers tracks \ + twiddle undead unequal unruly untangle AUTOMAKE_OPTIONS = subdir-objects allsources = ./blackbox.c ./bridges.c ./combi.c ./cube.c ./divvy.c \ ./dominosa.c ./drawing.c ./dsf.c ./fifteen.c ./filling.c \ - ./flip.c ./galaxies.c ./grid.c ./grid.h ./gtk.c ./guess.c \ - ./inertia.c ./keen.c ./latin.c ./latin.h ./laydomino.c \ - ./lightup.c ./list.c ./loopgen.c ./loopgen.h ./loopy.c \ - ./magnets.c ./malloc.c ./map.c ./maxflow.c ./maxflow.h \ - ./midend.c ./mines.c ./misc.c ./net.c ./netslide.c \ - ./no-icon.c ./nullfe.c ./nullgame.c ./obfusc.c ./osx.m \ - ./pattern.c ./pearl.c ./pegs.c ./penrose.c ./penrose.h \ - ./printing.c ./ps.c ./puzzles.h ./random.c ./range.c \ - ./rect.c ./resource.h ./samegame.c ./signpost.c ./singles.c \ - ./sixteen.c ./slant.c ./solo.c ./tdq.c ./tents.c ./towers.c \ - ./tree234.c ./tree234.h ./twiddle.c ./undead.c ./unequal.c \ - ./unruly.c ./untangle.c ./version.c ./version.h ./windows.c \ + ./findloop.c ./flip.c ./flood.c ./galaxies.c ./grid.c \ + ./grid.h ./gtk.c ./guess.c ./inertia.c ./keen.c ./latin.c \ + ./latin.h ./laydomino.c ./lightup.c ./list.c ./loopgen.c \ + ./loopgen.h ./loopy.c ./magnets.c ./malloc.c ./map.c \ + ./maxflow.c ./maxflow.h ./midend.c ./mines.c ./misc.c \ + ./net.c ./netslide.c ./no-icon.c ./nullfe.c ./nullgame.c \ + ./obfusc.c ./osx.m ./palisade.c ./pattern.c ./pearl.c \ + ./pegs.c ./penrose.c ./penrose.h ./printing.c ./ps.c \ + ./puzzles.h ./random.c ./range.c ./rect.c ./resource.h \ + ./samegame.c ./signpost.c ./singles.c ./sixteen.c ./slant.c \ + ./solo.c ./tdq.c ./tents.c ./towers.c ./tracks.c ./tree234.c \ + ./tree234.h ./twiddle.c ./undead.c ./unequal.c ./unruly.c \ + ./untangle.c ./version.c ./version.h ./windows.c \ icons/blackbox-icon.c icons/bridges-icon.c icons/cube-icon.c \ icons/dominosa-icon.c icons/fifteen-icon.c \ - icons/filling-icon.c icons/flip-icon.c icons/galaxies-icon.c \ - icons/guess-icon.c icons/inertia-icon.c icons/keen-icon.c \ - icons/lightup-icon.c icons/loopy-icon.c icons/magnets-icon.c \ - icons/map-icon.c icons/mines-icon.c icons/net-icon.c \ - icons/netslide-icon.c icons/pattern-icon.c \ + icons/filling-icon.c icons/flip-icon.c icons/flood-icon.c \ + icons/galaxies-icon.c icons/guess-icon.c \ + icons/inertia-icon.c icons/keen-icon.c icons/lightup-icon.c \ + icons/loopy-icon.c icons/magnets-icon.c icons/map-icon.c \ + icons/mines-icon.c icons/net-icon.c icons/netslide-icon.c \ + icons/palisade-icon.c icons/pattern-icon.c \ icons/pearl-icon.c icons/pegs-icon.c icons/range-icon.c \ icons/rect-icon.c icons/samegame-icon.c \ icons/signpost-icon.c icons/singles-icon.c \ icons/sixteen-icon.c icons/slant-icon.c icons/solo-icon.c \ - icons/tents-icon.c icons/towers-icon.c icons/twiddle-icon.c \ - icons/undead-icon.c icons/unequal-icon.c icons/unruly-icon.c \ + icons/tents-icon.c icons/towers-icon.c icons/tracks-icon.c \ + icons/twiddle-icon.c icons/undead-icon.c \ + icons/unequal-icon.c icons/unruly-icon.c \ icons/untangle-icon.c AM_CPPFLAGS = -I$(srcdir)/./ -I$(srcdir)/icons/ @@ -773,9 +916,10 @@ ./version.c ./version.h icons/blackbox-icon.c blackbox_LDADD = $(GTK_LIBS) -lm -bridges_SOURCES = ./bridges.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c \ - ./midend.c ./misc.c ./printing.c ./ps.c ./puzzles.h \ - ./random.c ./version.c ./version.h icons/bridges-icon.c +bridges_SOURCES = ./bridges.c ./drawing.c ./dsf.c ./findloop.c ./gtk.c \ + ./malloc.c ./midend.c ./misc.c ./printing.c ./ps.c \ + ./puzzles.h ./random.c ./version.c ./version.h \ + icons/bridges-icon.c bridges_LDADD = $(GTK_LIBS) -lm cube_SOURCES = ./cube.c ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ @@ -793,6 +937,10 @@ ./version.c ./version.h icons/fifteen-icon.c fifteen_LDADD = $(GTK_LIBS) -lm +fifteensolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \ + ./random.c + +fifteensolver_LDADD = libfifteen2_a-fifteen.$(OBJEXT) -lm filling_SOURCES = ./drawing.c ./dsf.c ./filling.c ./gtk.c ./malloc.c \ ./midend.c ./misc.c ./printing.c ./ps.c ./puzzles.h \ ./random.c ./version.c ./version.h icons/filling-icon.c @@ -807,6 +955,11 @@ ./tree234.h ./version.c ./version.h icons/flip-icon.c flip_LDADD = $(GTK_LIBS) -lm +flood_SOURCES = ./drawing.c ./flood.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ + ./printing.c ./ps.c ./puzzles.h ./random.c ./version.c \ + ./version.h icons/flood-icon.c + +flood_LDADD = $(GTK_LIBS) -lm galaxies_SOURCES = ./drawing.c ./dsf.c ./galaxies.c ./gtk.c ./malloc.c \ ./midend.c ./misc.c ./printing.c ./ps.c ./puzzles.h \ ./random.c ./version.c ./version.h icons/galaxies-icon.c @@ -892,8 +1045,8 @@ ./tree234.h ./version.c ./version.h icons/mines-icon.c mines_LDADD = $(GTK_LIBS) -lm -net_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ - ./net.c ./printing.c ./ps.c ./puzzles.h ./random.c \ +net_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c ./midend.c \ + ./misc.c ./net.c ./printing.c ./ps.c ./puzzles.h ./random.c \ ./tree234.c ./tree234.h ./version.c ./version.h \ icons/net-icon.c @@ -913,11 +1066,21 @@ ./random.c obfusc_LDADD = -lm +palisade_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c \ + ./midend.c ./misc.c ./palisade.c ./printing.c ./ps.c \ + ./puzzles.h ./random.c ./version.c ./version.h \ + icons/palisade-icon.c + +palisade_LDADD = $(GTK_LIBS) -lm pattern_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ ./pattern.c ./printing.c ./ps.c ./puzzles.h ./random.c \ ./version.c ./version.h icons/pattern-icon.c pattern_LDADD = $(GTK_LIBS) -lm +patternpicture_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \ + ./random.c + +patternpicture_LDADD = libpattern4_a-pattern.$(OBJEXT) -lm patternsolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \ ./random.c @@ -979,13 +1142,14 @@ ./version.c ./version.h icons/sixteen-icon.c sixteen_LDADD = $(GTK_LIBS) -lm -slant_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ - ./printing.c ./ps.c ./puzzles.h ./random.c ./slant.c \ - ./version.c ./version.h icons/slant-icon.c +slant_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \ + ./midend.c ./misc.c ./printing.c ./ps.c ./puzzles.h \ + ./random.c ./slant.c ./version.c ./version.h \ + icons/slant-icon.c slant_LDADD = $(GTK_LIBS) -lm -slantsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \ - ./random.c +slantsolver_SOURCES = ./dsf.c ./findloop.c ./malloc.c ./misc.c ./nullfe.c \ + ./puzzles.h ./random.c slantsolver_LDADD = libslant2_a-slant.$(OBJEXT) -lm solo_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c \ @@ -1019,6 +1183,12 @@ towerssolver_LDADD = liblatin6_a-latin.$(OBJEXT) \ libtowers2_a-towers.$(OBJEXT) -lm +tracks_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \ + ./midend.c ./misc.c ./printing.c ./ps.c ./puzzles.h \ + ./random.c ./tracks.c ./version.c ./version.h \ + icons/tracks-icon.c + +tracks_LDADD = $(GTK_LIBS) -lm twiddle_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \ ./printing.c ./ps.c ./puzzles.h ./random.c ./twiddle.c \ ./version.c ./version.h icons/twiddle-icon.c @@ -1054,6 +1224,8 @@ icons/untangle-icon.c untangle_LDADD = $(GTK_LIBS) -lm +libfifteen2_a_SOURCES = ./fifteen.c ./puzzles.h +libfifteen2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER libfilling2_a_SOURCES = ./filling.c ./puzzles.h libfilling2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER libgalaxie2_a_SOURCES = ./galaxies.c ./puzzles.h @@ -1084,6 +1256,10 @@ libmines2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_OBFUSCATOR libpattern2_a_SOURCES = ./pattern.c ./puzzles.h libpattern2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER +libpattern4_a_SOURCES = ./pattern.c ./puzzles.h +libpattern4_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) \ + -DSTANDALONE_PICTURE_GENERATOR + libpearl2_a_SOURCES = ./pearl.c ./puzzles.h ./grid.h ./loopgen.h libpearl2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER libsignpos2_a_SOURCES = ./signpost.c ./puzzles.h @@ -1102,12 +1278,12 @@ libunequal2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER libunruly2_a_SOURCES = ./unruly.c ./puzzles.h libunruly2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER -noinst_LIBRARIES = libfilling2.a libgalaxie2.a libgalaxie4.a libkeen2.a \ - liblatin6.a liblatin8.a liblightup2.a libloopy2.a \ +noinst_LIBRARIES = libfifteen2.a libfilling2.a libgalaxie2.a libgalaxie4.a \ + libkeen2.a liblatin6.a liblatin8.a liblightup2.a libloopy2.a \ libmagnets2.a libmap2.a libmines2.a libpattern2.a \ - libpearl2.a libsignpos2.a libsingles3.a libslant2.a \ - libsolo2.a libtents3.a libtowers2.a libunequal2.a \ - libunruly2.a + libpattern4.a libpearl2.a libsignpos2.a libsingles3.a \ + libslant2.a libsolo2.a libtents3.a libtowers2.a \ + libunequal2.a libunruly2.a all: all-am @@ -1128,7 +1304,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -1156,131 +1331,166 @@ $(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./$(DEPDIR) @: > $(DEPDIR)/$(am__dirstamp) +./libfifteen2_a-fifteen.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libfifteen2.a: $(libfifteen2_a_OBJECTS) $(libfifteen2_a_DEPENDENCIES) $(EXTRA_libfifteen2_a_DEPENDENCIES) + $(AM_V_at)-rm -f libfifteen2.a + $(AM_V_AR)$(libfifteen2_a_AR) libfifteen2.a $(libfifteen2_a_OBJECTS) $(libfifteen2_a_LIBADD) + $(AM_V_at)$(RANLIB) libfifteen2.a ./libfilling2_a-filling.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + libfilling2.a: $(libfilling2_a_OBJECTS) $(libfilling2_a_DEPENDENCIES) $(EXTRA_libfilling2_a_DEPENDENCIES) - -rm -f libfilling2.a - $(libfilling2_a_AR) libfilling2.a $(libfilling2_a_OBJECTS) $(libfilling2_a_LIBADD) - $(RANLIB) libfilling2.a + $(AM_V_at)-rm -f libfilling2.a + $(AM_V_AR)$(libfilling2_a_AR) libfilling2.a $(libfilling2_a_OBJECTS) $(libfilling2_a_LIBADD) + $(AM_V_at)$(RANLIB) libfilling2.a ./libgalaxie2_a-galaxies.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + libgalaxie2.a: $(libgalaxie2_a_OBJECTS) $(libgalaxie2_a_DEPENDENCIES) $(EXTRA_libgalaxie2_a_DEPENDENCIES) - -rm -f libgalaxie2.a - $(libgalaxie2_a_AR) libgalaxie2.a $(libgalaxie2_a_OBJECTS) $(libgalaxie2_a_LIBADD) - $(RANLIB) libgalaxie2.a + $(AM_V_at)-rm -f libgalaxie2.a + $(AM_V_AR)$(libgalaxie2_a_AR) libgalaxie2.a $(libgalaxie2_a_OBJECTS) $(libgalaxie2_a_LIBADD) + $(AM_V_at)$(RANLIB) libgalaxie2.a ./libgalaxie4_a-galaxies.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + libgalaxie4.a: $(libgalaxie4_a_OBJECTS) $(libgalaxie4_a_DEPENDENCIES) $(EXTRA_libgalaxie4_a_DEPENDENCIES) - -rm -f libgalaxie4.a - $(libgalaxie4_a_AR) libgalaxie4.a $(libgalaxie4_a_OBJECTS) $(libgalaxie4_a_LIBADD) - $(RANLIB) libgalaxie4.a + $(AM_V_at)-rm -f libgalaxie4.a + $(AM_V_AR)$(libgalaxie4_a_AR) libgalaxie4.a $(libgalaxie4_a_OBJECTS) $(libgalaxie4_a_LIBADD) + $(AM_V_at)$(RANLIB) libgalaxie4.a ./libkeen2_a-keen.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + libkeen2.a: $(libkeen2_a_OBJECTS) $(libkeen2_a_DEPENDENCIES) $(EXTRA_libkeen2_a_DEPENDENCIES) - -rm -f libkeen2.a - $(libkeen2_a_AR) libkeen2.a $(libkeen2_a_OBJECTS) $(libkeen2_a_LIBADD) - $(RANLIB) libkeen2.a + $(AM_V_at)-rm -f libkeen2.a + $(AM_V_AR)$(libkeen2_a_AR) libkeen2.a $(libkeen2_a_OBJECTS) $(libkeen2_a_LIBADD) + $(AM_V_at)$(RANLIB) libkeen2.a ./liblatin6_a-latin.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + liblatin6.a: $(liblatin6_a_OBJECTS) $(liblatin6_a_DEPENDENCIES) $(EXTRA_liblatin6_a_DEPENDENCIES) - -rm -f liblatin6.a - $(liblatin6_a_AR) liblatin6.a $(liblatin6_a_OBJECTS) $(liblatin6_a_LIBADD) - $(RANLIB) liblatin6.a + $(AM_V_at)-rm -f liblatin6.a + $(AM_V_AR)$(liblatin6_a_AR) liblatin6.a $(liblatin6_a_OBJECTS) $(liblatin6_a_LIBADD) + $(AM_V_at)$(RANLIB) liblatin6.a ./liblatin8_a-latin.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + liblatin8.a: $(liblatin8_a_OBJECTS) $(liblatin8_a_DEPENDENCIES) $(EXTRA_liblatin8_a_DEPENDENCIES) - -rm -f liblatin8.a - $(liblatin8_a_AR) liblatin8.a $(liblatin8_a_OBJECTS) $(liblatin8_a_LIBADD) - $(RANLIB) liblatin8.a + $(AM_V_at)-rm -f liblatin8.a + $(AM_V_AR)$(liblatin8_a_AR) liblatin8.a $(liblatin8_a_OBJECTS) $(liblatin8_a_LIBADD) + $(AM_V_at)$(RANLIB) liblatin8.a ./liblightup2_a-lightup.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + liblightup2.a: $(liblightup2_a_OBJECTS) $(liblightup2_a_DEPENDENCIES) $(EXTRA_liblightup2_a_DEPENDENCIES) - -rm -f liblightup2.a - $(liblightup2_a_AR) liblightup2.a $(liblightup2_a_OBJECTS) $(liblightup2_a_LIBADD) - $(RANLIB) liblightup2.a + $(AM_V_at)-rm -f liblightup2.a + $(AM_V_AR)$(liblightup2_a_AR) liblightup2.a $(liblightup2_a_OBJECTS) $(liblightup2_a_LIBADD) + $(AM_V_at)$(RANLIB) liblightup2.a ./libloopy2_a-loopy.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + libloopy2.a: $(libloopy2_a_OBJECTS) $(libloopy2_a_DEPENDENCIES) $(EXTRA_libloopy2_a_DEPENDENCIES) - -rm -f libloopy2.a - $(libloopy2_a_AR) libloopy2.a $(libloopy2_a_OBJECTS) $(libloopy2_a_LIBADD) - $(RANLIB) libloopy2.a + $(AM_V_at)-rm -f libloopy2.a + $(AM_V_AR)$(libloopy2_a_AR) libloopy2.a $(libloopy2_a_OBJECTS) $(libloopy2_a_LIBADD) + $(AM_V_at)$(RANLIB) libloopy2.a ./libmagnets2_a-magnets.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + libmagnets2.a: $(libmagnets2_a_OBJECTS) $(libmagnets2_a_DEPENDENCIES) $(EXTRA_libmagnets2_a_DEPENDENCIES) - -rm -f libmagnets2.a - $(libmagnets2_a_AR) libmagnets2.a $(libmagnets2_a_OBJECTS) $(libmagnets2_a_LIBADD) - $(RANLIB) libmagnets2.a + $(AM_V_at)-rm -f libmagnets2.a + $(AM_V_AR)$(libmagnets2_a_AR) libmagnets2.a $(libmagnets2_a_OBJECTS) $(libmagnets2_a_LIBADD) + $(AM_V_at)$(RANLIB) libmagnets2.a ./libmap2_a-map.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + libmap2.a: $(libmap2_a_OBJECTS) $(libmap2_a_DEPENDENCIES) $(EXTRA_libmap2_a_DEPENDENCIES) - -rm -f libmap2.a - $(libmap2_a_AR) libmap2.a $(libmap2_a_OBJECTS) $(libmap2_a_LIBADD) - $(RANLIB) libmap2.a + $(AM_V_at)-rm -f libmap2.a + $(AM_V_AR)$(libmap2_a_AR) libmap2.a $(libmap2_a_OBJECTS) $(libmap2_a_LIBADD) + $(AM_V_at)$(RANLIB) libmap2.a ./libmines2_a-mines.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + libmines2.a: $(libmines2_a_OBJECTS) $(libmines2_a_DEPENDENCIES) $(EXTRA_libmines2_a_DEPENDENCIES) - -rm -f libmines2.a - $(libmines2_a_AR) libmines2.a $(libmines2_a_OBJECTS) $(libmines2_a_LIBADD) - $(RANLIB) libmines2.a + $(AM_V_at)-rm -f libmines2.a + $(AM_V_AR)$(libmines2_a_AR) libmines2.a $(libmines2_a_OBJECTS) $(libmines2_a_LIBADD) + $(AM_V_at)$(RANLIB) libmines2.a ./libpattern2_a-pattern.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + libpattern2.a: $(libpattern2_a_OBJECTS) $(libpattern2_a_DEPENDENCIES) $(EXTRA_libpattern2_a_DEPENDENCIES) - -rm -f libpattern2.a - $(libpattern2_a_AR) libpattern2.a $(libpattern2_a_OBJECTS) $(libpattern2_a_LIBADD) - $(RANLIB) libpattern2.a + $(AM_V_at)-rm -f libpattern2.a + $(AM_V_AR)$(libpattern2_a_AR) libpattern2.a $(libpattern2_a_OBJECTS) $(libpattern2_a_LIBADD) + $(AM_V_at)$(RANLIB) libpattern2.a +./libpattern4_a-pattern.$(OBJEXT): ./$(am__dirstamp) \ + $(DEPDIR)/$(am__dirstamp) + +libpattern4.a: $(libpattern4_a_OBJECTS) $(libpattern4_a_DEPENDENCIES) $(EXTRA_libpattern4_a_DEPENDENCIES) + $(AM_V_at)-rm -f libpattern4.a + $(AM_V_AR)$(libpattern4_a_AR) libpattern4.a $(libpattern4_a_OBJECTS) $(libpattern4_a_LIBADD) + $(AM_V_at)$(RANLIB) libpattern4.a ./libpearl2_a-pearl.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + libpearl2.a: $(libpearl2_a_OBJECTS) $(libpearl2_a_DEPENDENCIES) $(EXTRA_libpearl2_a_DEPENDENCIES) - -rm -f libpearl2.a - $(libpearl2_a_AR) libpearl2.a $(libpearl2_a_OBJECTS) $(libpearl2_a_LIBADD) - $(RANLIB) libpearl2.a + $(AM_V_at)-rm -f libpearl2.a + $(AM_V_AR)$(libpearl2_a_AR) libpearl2.a $(libpearl2_a_OBJECTS) $(libpearl2_a_LIBADD) + $(AM_V_at)$(RANLIB) libpearl2.a ./libsignpos2_a-signpost.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + libsignpos2.a: $(libsignpos2_a_OBJECTS) $(libsignpos2_a_DEPENDENCIES) $(EXTRA_libsignpos2_a_DEPENDENCIES) - -rm -f libsignpos2.a - $(libsignpos2_a_AR) libsignpos2.a $(libsignpos2_a_OBJECTS) $(libsignpos2_a_LIBADD) - $(RANLIB) libsignpos2.a + $(AM_V_at)-rm -f libsignpos2.a + $(AM_V_AR)$(libsignpos2_a_AR) libsignpos2.a $(libsignpos2_a_OBJECTS) $(libsignpos2_a_LIBADD) + $(AM_V_at)$(RANLIB) libsignpos2.a ./libsingles3_a-singles.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + libsingles3.a: $(libsingles3_a_OBJECTS) $(libsingles3_a_DEPENDENCIES) $(EXTRA_libsingles3_a_DEPENDENCIES) - -rm -f libsingles3.a - $(libsingles3_a_AR) libsingles3.a $(libsingles3_a_OBJECTS) $(libsingles3_a_LIBADD) - $(RANLIB) libsingles3.a + $(AM_V_at)-rm -f libsingles3.a + $(AM_V_AR)$(libsingles3_a_AR) libsingles3.a $(libsingles3_a_OBJECTS) $(libsingles3_a_LIBADD) + $(AM_V_at)$(RANLIB) libsingles3.a ./libslant2_a-slant.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + libslant2.a: $(libslant2_a_OBJECTS) $(libslant2_a_DEPENDENCIES) $(EXTRA_libslant2_a_DEPENDENCIES) - -rm -f libslant2.a - $(libslant2_a_AR) libslant2.a $(libslant2_a_OBJECTS) $(libslant2_a_LIBADD) - $(RANLIB) libslant2.a + $(AM_V_at)-rm -f libslant2.a + $(AM_V_AR)$(libslant2_a_AR) libslant2.a $(libslant2_a_OBJECTS) $(libslant2_a_LIBADD) + $(AM_V_at)$(RANLIB) libslant2.a ./libsolo2_a-solo.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + libsolo2.a: $(libsolo2_a_OBJECTS) $(libsolo2_a_DEPENDENCIES) $(EXTRA_libsolo2_a_DEPENDENCIES) - -rm -f libsolo2.a - $(libsolo2_a_AR) libsolo2.a $(libsolo2_a_OBJECTS) $(libsolo2_a_LIBADD) - $(RANLIB) libsolo2.a + $(AM_V_at)-rm -f libsolo2.a + $(AM_V_AR)$(libsolo2_a_AR) libsolo2.a $(libsolo2_a_OBJECTS) $(libsolo2_a_LIBADD) + $(AM_V_at)$(RANLIB) libsolo2.a ./libtents3_a-tents.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + libtents3.a: $(libtents3_a_OBJECTS) $(libtents3_a_DEPENDENCIES) $(EXTRA_libtents3_a_DEPENDENCIES) - -rm -f libtents3.a - $(libtents3_a_AR) libtents3.a $(libtents3_a_OBJECTS) $(libtents3_a_LIBADD) - $(RANLIB) libtents3.a + $(AM_V_at)-rm -f libtents3.a + $(AM_V_AR)$(libtents3_a_AR) libtents3.a $(libtents3_a_OBJECTS) $(libtents3_a_LIBADD) + $(AM_V_at)$(RANLIB) libtents3.a ./libtowers2_a-towers.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + libtowers2.a: $(libtowers2_a_OBJECTS) $(libtowers2_a_DEPENDENCIES) $(EXTRA_libtowers2_a_DEPENDENCIES) - -rm -f libtowers2.a - $(libtowers2_a_AR) libtowers2.a $(libtowers2_a_OBJECTS) $(libtowers2_a_LIBADD) - $(RANLIB) libtowers2.a + $(AM_V_at)-rm -f libtowers2.a + $(AM_V_AR)$(libtowers2_a_AR) libtowers2.a $(libtowers2_a_OBJECTS) $(libtowers2_a_LIBADD) + $(AM_V_at)$(RANLIB) libtowers2.a ./libunequal2_a-unequal.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + libunequal2.a: $(libunequal2_a_OBJECTS) $(libunequal2_a_DEPENDENCIES) $(EXTRA_libunequal2_a_DEPENDENCIES) - -rm -f libunequal2.a - $(libunequal2_a_AR) libunequal2.a $(libunequal2_a_OBJECTS) $(libunequal2_a_LIBADD) - $(RANLIB) libunequal2.a + $(AM_V_at)-rm -f libunequal2.a + $(AM_V_AR)$(libunequal2_a_AR) libunequal2.a $(libunequal2_a_OBJECTS) $(libunequal2_a_LIBADD) + $(AM_V_at)$(RANLIB) libunequal2.a ./libunruly2_a-unruly.$(OBJEXT): ./$(am__dirstamp) \ $(DEPDIR)/$(am__dirstamp) + libunruly2.a: $(libunruly2_a_OBJECTS) $(libunruly2_a_DEPENDENCIES) $(EXTRA_libunruly2_a_DEPENDENCIES) - -rm -f libunruly2.a - $(libunruly2_a_AR) libunruly2.a $(libunruly2_a_OBJECTS) $(libunruly2_a_LIBADD) - $(RANLIB) libunruly2.a + $(AM_V_at)-rm -f libunruly2.a + $(AM_V_AR)$(libunruly2_a_AR) libunruly2.a $(libunruly2_a_OBJECTS) $(libunruly2_a_LIBADD) + $(AM_V_at)$(RANLIB) libunruly2.a install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ @@ -1290,10 +1500,11 @@ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p; \ - then echo "$$p"; echo "$$p"; else :; fi; \ + while read p p1; do if test -f $$p \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ @@ -1314,7 +1525,8 @@ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ + -e 's/$$/$(EXEEXT)/' \ + `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files @@ -1342,420 +1554,393 @@ @: > icons/$(DEPDIR)/$(am__dirstamp) icons/blackbox-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + blackbox$(EXEEXT): $(blackbox_OBJECTS) $(blackbox_DEPENDENCIES) $(EXTRA_blackbox_DEPENDENCIES) @rm -f blackbox$(EXEEXT) - $(LINK) $(blackbox_OBJECTS) $(blackbox_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(blackbox_OBJECTS) $(blackbox_LDADD) $(LIBS) ./bridges.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) ./dsf.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./findloop.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/bridges-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + bridges$(EXEEXT): $(bridges_OBJECTS) $(bridges_DEPENDENCIES) $(EXTRA_bridges_DEPENDENCIES) @rm -f bridges$(EXEEXT) - $(LINK) $(bridges_OBJECTS) $(bridges_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(bridges_OBJECTS) $(bridges_LDADD) $(LIBS) ./cube.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/cube-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + cube$(EXEEXT): $(cube_OBJECTS) $(cube_DEPENDENCIES) $(EXTRA_cube_DEPENDENCIES) @rm -f cube$(EXEEXT) - $(LINK) $(cube_OBJECTS) $(cube_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(cube_OBJECTS) $(cube_LDADD) $(LIBS) ./dominosa.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) ./laydomino.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/dominosa-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + dominosa$(EXEEXT): $(dominosa_OBJECTS) $(dominosa_DEPENDENCIES) $(EXTRA_dominosa_DEPENDENCIES) @rm -f dominosa$(EXEEXT) - $(LINK) $(dominosa_OBJECTS) $(dominosa_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(dominosa_OBJECTS) $(dominosa_LDADD) $(LIBS) ./fifteen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/fifteen-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + fifteen$(EXEEXT): $(fifteen_OBJECTS) $(fifteen_DEPENDENCIES) $(EXTRA_fifteen_DEPENDENCIES) @rm -f fifteen$(EXEEXT) - $(LINK) $(fifteen_OBJECTS) $(fifteen_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(fifteen_OBJECTS) $(fifteen_LDADD) $(LIBS) +./nullfe.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + +fifteensolver$(EXEEXT): $(fifteensolver_OBJECTS) $(fifteensolver_DEPENDENCIES) $(EXTRA_fifteensolver_DEPENDENCIES) + @rm -f fifteensolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fifteensolver_OBJECTS) $(fifteensolver_LDADD) $(LIBS) ./filling.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/filling-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + filling$(EXEEXT): $(filling_OBJECTS) $(filling_DEPENDENCIES) $(EXTRA_filling_DEPENDENCIES) @rm -f filling$(EXEEXT) - $(LINK) $(filling_OBJECTS) $(filling_LDADD) $(LIBS) -./nullfe.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + $(AM_V_CCLD)$(LINK) $(filling_OBJECTS) $(filling_LDADD) $(LIBS) + fillingsolver$(EXEEXT): $(fillingsolver_OBJECTS) $(fillingsolver_DEPENDENCIES) $(EXTRA_fillingsolver_DEPENDENCIES) @rm -f fillingsolver$(EXEEXT) - $(LINK) $(fillingsolver_OBJECTS) $(fillingsolver_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(fillingsolver_OBJECTS) $(fillingsolver_LDADD) $(LIBS) ./flip.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) ./tree234.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/flip-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + flip$(EXEEXT): $(flip_OBJECTS) $(flip_DEPENDENCIES) $(EXTRA_flip_DEPENDENCIES) @rm -f flip$(EXEEXT) - $(LINK) $(flip_OBJECTS) $(flip_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(flip_OBJECTS) $(flip_LDADD) $(LIBS) +./flood.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +icons/flood-icon.$(OBJEXT): icons/$(am__dirstamp) \ + icons/$(DEPDIR)/$(am__dirstamp) + +flood$(EXEEXT): $(flood_OBJECTS) $(flood_DEPENDENCIES) $(EXTRA_flood_DEPENDENCIES) + @rm -f flood$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(flood_OBJECTS) $(flood_LDADD) $(LIBS) ./galaxies.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/galaxies-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + galaxies$(EXEEXT): $(galaxies_OBJECTS) $(galaxies_DEPENDENCIES) $(EXTRA_galaxies_DEPENDENCIES) @rm -f galaxies$(EXEEXT) - $(LINK) $(galaxies_OBJECTS) $(galaxies_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(galaxies_OBJECTS) $(galaxies_LDADD) $(LIBS) + galaxiespicture$(EXEEXT): $(galaxiespicture_OBJECTS) $(galaxiespicture_DEPENDENCIES) $(EXTRA_galaxiespicture_DEPENDENCIES) @rm -f galaxiespicture$(EXEEXT) - $(LINK) $(galaxiespicture_OBJECTS) $(galaxiespicture_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(galaxiespicture_OBJECTS) $(galaxiespicture_LDADD) $(LIBS) + galaxiessolver$(EXEEXT): $(galaxiessolver_OBJECTS) $(galaxiessolver_DEPENDENCIES) $(EXTRA_galaxiessolver_DEPENDENCIES) @rm -f galaxiessolver$(EXEEXT) - $(LINK) $(galaxiessolver_OBJECTS) $(galaxiessolver_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(galaxiessolver_OBJECTS) $(galaxiessolver_LDADD) $(LIBS) ./guess.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/guess-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + guess$(EXEEXT): $(guess_OBJECTS) $(guess_DEPENDENCIES) $(EXTRA_guess_DEPENDENCIES) @rm -f guess$(EXEEXT) - $(LINK) $(guess_OBJECTS) $(guess_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(guess_OBJECTS) $(guess_LDADD) $(LIBS) ./inertia.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/inertia-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + inertia$(EXEEXT): $(inertia_OBJECTS) $(inertia_DEPENDENCIES) $(EXTRA_inertia_DEPENDENCIES) @rm -f inertia$(EXEEXT) - $(LINK) $(inertia_OBJECTS) $(inertia_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(inertia_OBJECTS) $(inertia_LDADD) $(LIBS) ./keen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) ./latin.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) ./maxflow.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/keen-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + keen$(EXEEXT): $(keen_OBJECTS) $(keen_DEPENDENCIES) $(EXTRA_keen_DEPENDENCIES) @rm -f keen$(EXEEXT) - $(LINK) $(keen_OBJECTS) $(keen_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(keen_OBJECTS) $(keen_LDADD) $(LIBS) + keensolver$(EXEEXT): $(keensolver_OBJECTS) $(keensolver_DEPENDENCIES) $(EXTRA_keensolver_DEPENDENCIES) @rm -f keensolver$(EXEEXT) - $(LINK) $(keensolver_OBJECTS) $(keensolver_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(keensolver_OBJECTS) $(keensolver_LDADD) $(LIBS) + latincheck$(EXEEXT): $(latincheck_OBJECTS) $(latincheck_DEPENDENCIES) $(EXTRA_latincheck_DEPENDENCIES) @rm -f latincheck$(EXEEXT) - $(LINK) $(latincheck_OBJECTS) $(latincheck_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(latincheck_OBJECTS) $(latincheck_LDADD) $(LIBS) ./combi.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) ./lightup.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/lightup-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + lightup$(EXEEXT): $(lightup_OBJECTS) $(lightup_DEPENDENCIES) $(EXTRA_lightup_DEPENDENCIES) @rm -f lightup$(EXEEXT) - $(LINK) $(lightup_OBJECTS) $(lightup_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(lightup_OBJECTS) $(lightup_LDADD) $(LIBS) + lightupsolver$(EXEEXT): $(lightupsolver_OBJECTS) $(lightupsolver_DEPENDENCIES) $(EXTRA_lightupsolver_DEPENDENCIES) @rm -f lightupsolver$(EXEEXT) - $(LINK) $(lightupsolver_OBJECTS) $(lightupsolver_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(lightupsolver_OBJECTS) $(lightupsolver_LDADD) $(LIBS) ./grid.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) ./loopgen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) ./loopy.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) ./penrose.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/loopy-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + loopy$(EXEEXT): $(loopy_OBJECTS) $(loopy_DEPENDENCIES) $(EXTRA_loopy_DEPENDENCIES) @rm -f loopy$(EXEEXT) - $(LINK) $(loopy_OBJECTS) $(loopy_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(loopy_OBJECTS) $(loopy_LDADD) $(LIBS) + loopysolver$(EXEEXT): $(loopysolver_OBJECTS) $(loopysolver_DEPENDENCIES) $(EXTRA_loopysolver_DEPENDENCIES) @rm -f loopysolver$(EXEEXT) - $(LINK) $(loopysolver_OBJECTS) $(loopysolver_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(loopysolver_OBJECTS) $(loopysolver_LDADD) $(LIBS) ./magnets.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/magnets-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + magnets$(EXEEXT): $(magnets_OBJECTS) $(magnets_DEPENDENCIES) $(EXTRA_magnets_DEPENDENCIES) @rm -f magnets$(EXEEXT) - $(LINK) $(magnets_OBJECTS) $(magnets_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(magnets_OBJECTS) $(magnets_LDADD) $(LIBS) + magnetssolver$(EXEEXT): $(magnetssolver_OBJECTS) $(magnetssolver_DEPENDENCIES) $(EXTRA_magnetssolver_DEPENDENCIES) @rm -f magnetssolver$(EXEEXT) - $(LINK) $(magnetssolver_OBJECTS) $(magnetssolver_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(magnetssolver_OBJECTS) $(magnetssolver_LDADD) $(LIBS) ./map.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/map-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + map$(EXEEXT): $(map_OBJECTS) $(map_DEPENDENCIES) $(EXTRA_map_DEPENDENCIES) @rm -f map$(EXEEXT) - $(LINK) $(map_OBJECTS) $(map_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(map_OBJECTS) $(map_LDADD) $(LIBS) + mapsolver$(EXEEXT): $(mapsolver_OBJECTS) $(mapsolver_DEPENDENCIES) $(EXTRA_mapsolver_DEPENDENCIES) @rm -f mapsolver$(EXEEXT) - $(LINK) $(mapsolver_OBJECTS) $(mapsolver_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(mapsolver_OBJECTS) $(mapsolver_LDADD) $(LIBS) + mineobfusc$(EXEEXT): $(mineobfusc_OBJECTS) $(mineobfusc_DEPENDENCIES) $(EXTRA_mineobfusc_DEPENDENCIES) @rm -f mineobfusc$(EXEEXT) - $(LINK) $(mineobfusc_OBJECTS) $(mineobfusc_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(mineobfusc_OBJECTS) $(mineobfusc_LDADD) $(LIBS) ./mines.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/mines-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + mines$(EXEEXT): $(mines_OBJECTS) $(mines_DEPENDENCIES) $(EXTRA_mines_DEPENDENCIES) @rm -f mines$(EXEEXT) - $(LINK) $(mines_OBJECTS) $(mines_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(mines_OBJECTS) $(mines_LDADD) $(LIBS) ./net.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/net-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + net$(EXEEXT): $(net_OBJECTS) $(net_DEPENDENCIES) $(EXTRA_net_DEPENDENCIES) @rm -f net$(EXEEXT) - $(LINK) $(net_OBJECTS) $(net_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(net_OBJECTS) $(net_LDADD) $(LIBS) ./netslide.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/netslide-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + netslide$(EXEEXT): $(netslide_OBJECTS) $(netslide_DEPENDENCIES) $(EXTRA_netslide_DEPENDENCIES) @rm -f netslide$(EXEEXT) - $(LINK) $(netslide_OBJECTS) $(netslide_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(netslide_OBJECTS) $(netslide_LDADD) $(LIBS) ./no-icon.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) ./nullgame.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + nullgame$(EXEEXT): $(nullgame_OBJECTS) $(nullgame_DEPENDENCIES) $(EXTRA_nullgame_DEPENDENCIES) @rm -f nullgame$(EXEEXT) - $(LINK) $(nullgame_OBJECTS) $(nullgame_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(nullgame_OBJECTS) $(nullgame_LDADD) $(LIBS) ./obfusc.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + obfusc$(EXEEXT): $(obfusc_OBJECTS) $(obfusc_DEPENDENCIES) $(EXTRA_obfusc_DEPENDENCIES) @rm -f obfusc$(EXEEXT) - $(LINK) $(obfusc_OBJECTS) $(obfusc_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(obfusc_OBJECTS) $(obfusc_LDADD) $(LIBS) +./divvy.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +./palisade.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +icons/palisade-icon.$(OBJEXT): icons/$(am__dirstamp) \ + icons/$(DEPDIR)/$(am__dirstamp) + +palisade$(EXEEXT): $(palisade_OBJECTS) $(palisade_DEPENDENCIES) $(EXTRA_palisade_DEPENDENCIES) + @rm -f palisade$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(palisade_OBJECTS) $(palisade_LDADD) $(LIBS) ./pattern.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/pattern-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + pattern$(EXEEXT): $(pattern_OBJECTS) $(pattern_DEPENDENCIES) $(EXTRA_pattern_DEPENDENCIES) @rm -f pattern$(EXEEXT) - $(LINK) $(pattern_OBJECTS) $(pattern_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(pattern_OBJECTS) $(pattern_LDADD) $(LIBS) + +patternpicture$(EXEEXT): $(patternpicture_OBJECTS) $(patternpicture_DEPENDENCIES) $(EXTRA_patternpicture_DEPENDENCIES) + @rm -f patternpicture$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(patternpicture_OBJECTS) $(patternpicture_LDADD) $(LIBS) + patternsolver$(EXEEXT): $(patternsolver_OBJECTS) $(patternsolver_DEPENDENCIES) $(EXTRA_patternsolver_DEPENDENCIES) @rm -f patternsolver$(EXEEXT) - $(LINK) $(patternsolver_OBJECTS) $(patternsolver_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(patternsolver_OBJECTS) $(patternsolver_LDADD) $(LIBS) ./pearl.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) ./tdq.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/pearl-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + pearl$(EXEEXT): $(pearl_OBJECTS) $(pearl_DEPENDENCIES) $(EXTRA_pearl_DEPENDENCIES) @rm -f pearl$(EXEEXT) - $(LINK) $(pearl_OBJECTS) $(pearl_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(pearl_OBJECTS) $(pearl_LDADD) $(LIBS) + pearlbench$(EXEEXT): $(pearlbench_OBJECTS) $(pearlbench_DEPENDENCIES) $(EXTRA_pearlbench_DEPENDENCIES) @rm -f pearlbench$(EXEEXT) - $(LINK) $(pearlbench_OBJECTS) $(pearlbench_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(pearlbench_OBJECTS) $(pearlbench_LDADD) $(LIBS) ./pegs.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/pegs-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + pegs$(EXEEXT): $(pegs_OBJECTS) $(pegs_DEPENDENCIES) $(EXTRA_pegs_DEPENDENCIES) @rm -f pegs$(EXEEXT) - $(LINK) $(pegs_OBJECTS) $(pegs_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(pegs_OBJECTS) $(pegs_LDADD) $(LIBS) ./range.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/range-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + range$(EXEEXT): $(range_OBJECTS) $(range_DEPENDENCIES) $(EXTRA_range_DEPENDENCIES) @rm -f range$(EXEEXT) - $(LINK) $(range_OBJECTS) $(range_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(range_OBJECTS) $(range_LDADD) $(LIBS) ./rect.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/rect-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + rect$(EXEEXT): $(rect_OBJECTS) $(rect_DEPENDENCIES) $(EXTRA_rect_DEPENDENCIES) @rm -f rect$(EXEEXT) - $(LINK) $(rect_OBJECTS) $(rect_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(rect_OBJECTS) $(rect_LDADD) $(LIBS) ./samegame.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/samegame-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + samegame$(EXEEXT): $(samegame_OBJECTS) $(samegame_DEPENDENCIES) $(EXTRA_samegame_DEPENDENCIES) @rm -f samegame$(EXEEXT) - $(LINK) $(samegame_OBJECTS) $(samegame_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(samegame_OBJECTS) $(samegame_LDADD) $(LIBS) ./signpost.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/signpost-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + signpost$(EXEEXT): $(signpost_OBJECTS) $(signpost_DEPENDENCIES) $(EXTRA_signpost_DEPENDENCIES) @rm -f signpost$(EXEEXT) - $(LINK) $(signpost_OBJECTS) $(signpost_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(signpost_OBJECTS) $(signpost_LDADD) $(LIBS) + signpostsolver$(EXEEXT): $(signpostsolver_OBJECTS) $(signpostsolver_DEPENDENCIES) $(EXTRA_signpostsolver_DEPENDENCIES) @rm -f signpostsolver$(EXEEXT) - $(LINK) $(signpostsolver_OBJECTS) $(signpostsolver_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(signpostsolver_OBJECTS) $(signpostsolver_LDADD) $(LIBS) ./singles.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/singles-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + singles$(EXEEXT): $(singles_OBJECTS) $(singles_DEPENDENCIES) $(EXTRA_singles_DEPENDENCIES) @rm -f singles$(EXEEXT) - $(LINK) $(singles_OBJECTS) $(singles_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(singles_OBJECTS) $(singles_LDADD) $(LIBS) + singlessolver$(EXEEXT): $(singlessolver_OBJECTS) $(singlessolver_DEPENDENCIES) $(EXTRA_singlessolver_DEPENDENCIES) @rm -f singlessolver$(EXEEXT) - $(LINK) $(singlessolver_OBJECTS) $(singlessolver_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(singlessolver_OBJECTS) $(singlessolver_LDADD) $(LIBS) ./sixteen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/sixteen-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + sixteen$(EXEEXT): $(sixteen_OBJECTS) $(sixteen_DEPENDENCIES) $(EXTRA_sixteen_DEPENDENCIES) @rm -f sixteen$(EXEEXT) - $(LINK) $(sixteen_OBJECTS) $(sixteen_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(sixteen_OBJECTS) $(sixteen_LDADD) $(LIBS) ./slant.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/slant-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + slant$(EXEEXT): $(slant_OBJECTS) $(slant_DEPENDENCIES) $(EXTRA_slant_DEPENDENCIES) @rm -f slant$(EXEEXT) - $(LINK) $(slant_OBJECTS) $(slant_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(slant_OBJECTS) $(slant_LDADD) $(LIBS) + slantsolver$(EXEEXT): $(slantsolver_OBJECTS) $(slantsolver_DEPENDENCIES) $(EXTRA_slantsolver_DEPENDENCIES) @rm -f slantsolver$(EXEEXT) - $(LINK) $(slantsolver_OBJECTS) $(slantsolver_LDADD) $(LIBS) -./divvy.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) + $(AM_V_CCLD)$(LINK) $(slantsolver_OBJECTS) $(slantsolver_LDADD) $(LIBS) ./solo.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/solo-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + solo$(EXEEXT): $(solo_OBJECTS) $(solo_DEPENDENCIES) $(EXTRA_solo_DEPENDENCIES) @rm -f solo$(EXEEXT) - $(LINK) $(solo_OBJECTS) $(solo_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(solo_OBJECTS) $(solo_LDADD) $(LIBS) + solosolver$(EXEEXT): $(solosolver_OBJECTS) $(solosolver_DEPENDENCIES) $(EXTRA_solosolver_DEPENDENCIES) @rm -f solosolver$(EXEEXT) - $(LINK) $(solosolver_OBJECTS) $(solosolver_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(solosolver_OBJECTS) $(solosolver_LDADD) $(LIBS) ./tents.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/tents-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + tents$(EXEEXT): $(tents_OBJECTS) $(tents_DEPENDENCIES) $(EXTRA_tents_DEPENDENCIES) @rm -f tents$(EXEEXT) - $(LINK) $(tents_OBJECTS) $(tents_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(tents_OBJECTS) $(tents_LDADD) $(LIBS) + tentssolver$(EXEEXT): $(tentssolver_OBJECTS) $(tentssolver_DEPENDENCIES) $(EXTRA_tentssolver_DEPENDENCIES) @rm -f tentssolver$(EXEEXT) - $(LINK) $(tentssolver_OBJECTS) $(tentssolver_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(tentssolver_OBJECTS) $(tentssolver_LDADD) $(LIBS) ./towers.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/towers-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + towers$(EXEEXT): $(towers_OBJECTS) $(towers_DEPENDENCIES) $(EXTRA_towers_DEPENDENCIES) @rm -f towers$(EXEEXT) - $(LINK) $(towers_OBJECTS) $(towers_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(towers_OBJECTS) $(towers_LDADD) $(LIBS) + towerssolver$(EXEEXT): $(towerssolver_OBJECTS) $(towerssolver_DEPENDENCIES) $(EXTRA_towerssolver_DEPENDENCIES) @rm -f towerssolver$(EXEEXT) - $(LINK) $(towerssolver_OBJECTS) $(towerssolver_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(towerssolver_OBJECTS) $(towerssolver_LDADD) $(LIBS) +./tracks.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) +icons/tracks-icon.$(OBJEXT): icons/$(am__dirstamp) \ + icons/$(DEPDIR)/$(am__dirstamp) + +tracks$(EXEEXT): $(tracks_OBJECTS) $(tracks_DEPENDENCIES) $(EXTRA_tracks_DEPENDENCIES) + @rm -f tracks$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tracks_OBJECTS) $(tracks_LDADD) $(LIBS) ./twiddle.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/twiddle-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + twiddle$(EXEEXT): $(twiddle_OBJECTS) $(twiddle_DEPENDENCIES) $(EXTRA_twiddle_DEPENDENCIES) @rm -f twiddle$(EXEEXT) - $(LINK) $(twiddle_OBJECTS) $(twiddle_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(twiddle_OBJECTS) $(twiddle_LDADD) $(LIBS) ./undead.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/undead-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + undead$(EXEEXT): $(undead_OBJECTS) $(undead_DEPENDENCIES) $(EXTRA_undead_DEPENDENCIES) @rm -f undead$(EXEEXT) - $(LINK) $(undead_OBJECTS) $(undead_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(undead_OBJECTS) $(undead_LDADD) $(LIBS) ./unequal.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/unequal-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + unequal$(EXEEXT): $(unequal_OBJECTS) $(unequal_DEPENDENCIES) $(EXTRA_unequal_DEPENDENCIES) @rm -f unequal$(EXEEXT) - $(LINK) $(unequal_OBJECTS) $(unequal_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(unequal_OBJECTS) $(unequal_LDADD) $(LIBS) + unequalsolver$(EXEEXT): $(unequalsolver_OBJECTS) $(unequalsolver_DEPENDENCIES) $(EXTRA_unequalsolver_DEPENDENCIES) @rm -f unequalsolver$(EXEEXT) - $(LINK) $(unequalsolver_OBJECTS) $(unequalsolver_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(unequalsolver_OBJECTS) $(unequalsolver_LDADD) $(LIBS) ./unruly.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/unruly-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + unruly$(EXEEXT): $(unruly_OBJECTS) $(unruly_DEPENDENCIES) $(EXTRA_unruly_DEPENDENCIES) @rm -f unruly$(EXEEXT) - $(LINK) $(unruly_OBJECTS) $(unruly_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(unruly_OBJECTS) $(unruly_LDADD) $(LIBS) + unrulysolver$(EXEEXT): $(unrulysolver_OBJECTS) $(unrulysolver_DEPENDENCIES) $(EXTRA_unrulysolver_DEPENDENCIES) @rm -f unrulysolver$(EXEEXT) - $(LINK) $(unrulysolver_OBJECTS) $(unrulysolver_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(unrulysolver_OBJECTS) $(unrulysolver_LDADD) $(LIBS) ./untangle.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp) icons/untangle-icon.$(OBJEXT): icons/$(am__dirstamp) \ icons/$(DEPDIR)/$(am__dirstamp) + untangle$(EXEEXT): $(untangle_OBJECTS) $(untangle_DEPENDENCIES) $(EXTRA_untangle_DEPENDENCIES) @rm -f untangle$(EXEEXT) - $(LINK) $(untangle_OBJECTS) $(untangle_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(untangle_OBJECTS) $(untangle_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) - -rm -f ./blackbox.$(OBJEXT) - -rm -f ./bridges.$(OBJEXT) - -rm -f ./combi.$(OBJEXT) - -rm -f ./cube.$(OBJEXT) - -rm -f ./divvy.$(OBJEXT) - -rm -f ./dominosa.$(OBJEXT) - -rm -f ./drawing.$(OBJEXT) - -rm -f ./dsf.$(OBJEXT) - -rm -f ./fifteen.$(OBJEXT) - -rm -f ./filling.$(OBJEXT) - -rm -f ./flip.$(OBJEXT) - -rm -f ./galaxies.$(OBJEXT) - -rm -f ./grid.$(OBJEXT) - -rm -f ./gtk.$(OBJEXT) - -rm -f ./guess.$(OBJEXT) - -rm -f ./inertia.$(OBJEXT) - -rm -f ./keen.$(OBJEXT) - -rm -f ./latin.$(OBJEXT) - -rm -f ./laydomino.$(OBJEXT) - -rm -f ./libfilling2_a-filling.$(OBJEXT) - -rm -f ./libgalaxie2_a-galaxies.$(OBJEXT) - -rm -f ./libgalaxie4_a-galaxies.$(OBJEXT) - -rm -f ./libkeen2_a-keen.$(OBJEXT) - -rm -f ./liblatin6_a-latin.$(OBJEXT) - -rm -f ./liblatin8_a-latin.$(OBJEXT) - -rm -f ./liblightup2_a-lightup.$(OBJEXT) - -rm -f ./libloopy2_a-loopy.$(OBJEXT) - -rm -f ./libmagnets2_a-magnets.$(OBJEXT) - -rm -f ./libmap2_a-map.$(OBJEXT) - -rm -f ./libmines2_a-mines.$(OBJEXT) - -rm -f ./libpattern2_a-pattern.$(OBJEXT) - -rm -f ./libpearl2_a-pearl.$(OBJEXT) - -rm -f ./libsignpos2_a-signpost.$(OBJEXT) - -rm -f ./libsingles3_a-singles.$(OBJEXT) - -rm -f ./libslant2_a-slant.$(OBJEXT) - -rm -f ./libsolo2_a-solo.$(OBJEXT) - -rm -f ./libtents3_a-tents.$(OBJEXT) - -rm -f ./libtowers2_a-towers.$(OBJEXT) - -rm -f ./libunequal2_a-unequal.$(OBJEXT) - -rm -f ./libunruly2_a-unruly.$(OBJEXT) - -rm -f ./lightup.$(OBJEXT) - -rm -f ./loopgen.$(OBJEXT) - -rm -f ./loopy.$(OBJEXT) - -rm -f ./magnets.$(OBJEXT) - -rm -f ./malloc.$(OBJEXT) - -rm -f ./map.$(OBJEXT) - -rm -f ./maxflow.$(OBJEXT) - -rm -f ./midend.$(OBJEXT) - -rm -f ./mines.$(OBJEXT) - -rm -f ./misc.$(OBJEXT) - -rm -f ./net.$(OBJEXT) - -rm -f ./netslide.$(OBJEXT) - -rm -f ./no-icon.$(OBJEXT) - -rm -f ./nullfe.$(OBJEXT) - -rm -f ./nullgame.$(OBJEXT) - -rm -f ./obfusc.$(OBJEXT) - -rm -f ./pattern.$(OBJEXT) - -rm -f ./pearl.$(OBJEXT) - -rm -f ./pegs.$(OBJEXT) - -rm -f ./penrose.$(OBJEXT) - -rm -f ./printing.$(OBJEXT) - -rm -f ./ps.$(OBJEXT) - -rm -f ./random.$(OBJEXT) - -rm -f ./range.$(OBJEXT) - -rm -f ./rect.$(OBJEXT) - -rm -f ./samegame.$(OBJEXT) - -rm -f ./signpost.$(OBJEXT) - -rm -f ./singles.$(OBJEXT) - -rm -f ./sixteen.$(OBJEXT) - -rm -f ./slant.$(OBJEXT) - -rm -f ./solo.$(OBJEXT) - -rm -f ./tdq.$(OBJEXT) - -rm -f ./tents.$(OBJEXT) - -rm -f ./towers.$(OBJEXT) - -rm -f ./tree234.$(OBJEXT) - -rm -f ./twiddle.$(OBJEXT) - -rm -f ./undead.$(OBJEXT) - -rm -f ./unequal.$(OBJEXT) - -rm -f ./unruly.$(OBJEXT) - -rm -f ./untangle.$(OBJEXT) - -rm -f ./version.$(OBJEXT) - -rm -f icons/blackbox-icon.$(OBJEXT) - -rm -f icons/bridges-icon.$(OBJEXT) - -rm -f icons/cube-icon.$(OBJEXT) - -rm -f icons/dominosa-icon.$(OBJEXT) - -rm -f icons/fifteen-icon.$(OBJEXT) - -rm -f icons/filling-icon.$(OBJEXT) - -rm -f icons/flip-icon.$(OBJEXT) - -rm -f icons/galaxies-icon.$(OBJEXT) - -rm -f icons/guess-icon.$(OBJEXT) - -rm -f icons/inertia-icon.$(OBJEXT) - -rm -f icons/keen-icon.$(OBJEXT) - -rm -f icons/lightup-icon.$(OBJEXT) - -rm -f icons/loopy-icon.$(OBJEXT) - -rm -f icons/magnets-icon.$(OBJEXT) - -rm -f icons/map-icon.$(OBJEXT) - -rm -f icons/mines-icon.$(OBJEXT) - -rm -f icons/net-icon.$(OBJEXT) - -rm -f icons/netslide-icon.$(OBJEXT) - -rm -f icons/pattern-icon.$(OBJEXT) - -rm -f icons/pearl-icon.$(OBJEXT) - -rm -f icons/pegs-icon.$(OBJEXT) - -rm -f icons/range-icon.$(OBJEXT) - -rm -f icons/rect-icon.$(OBJEXT) - -rm -f icons/samegame-icon.$(OBJEXT) - -rm -f icons/signpost-icon.$(OBJEXT) - -rm -f icons/singles-icon.$(OBJEXT) - -rm -f icons/sixteen-icon.$(OBJEXT) - -rm -f icons/slant-icon.$(OBJEXT) - -rm -f icons/solo-icon.$(OBJEXT) - -rm -f icons/tents-icon.$(OBJEXT) - -rm -f icons/towers-icon.$(OBJEXT) - -rm -f icons/twiddle-icon.$(OBJEXT) - -rm -f icons/undead-icon.$(OBJEXT) - -rm -f icons/unequal-icon.$(OBJEXT) - -rm -f icons/unruly-icon.$(OBJEXT) - -rm -f icons/untangle-icon.$(OBJEXT) + -rm -f ./*.$(OBJEXT) + -rm -f icons/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c @@ -1770,7 +1955,9 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fifteen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filling.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/findloop.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flip.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flood.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/galaxies.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtk.Po@am__quote@ @@ -1779,6 +1966,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/latin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/laydomino.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfifteen2_a-fifteen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfilling2_a-filling.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgalaxie2_a-galaxies.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgalaxie4_a-galaxies.Po@am__quote@ @@ -1791,6 +1979,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmap2_a-map.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmines2_a-mines.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpattern2_a-pattern.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpattern4_a-pattern.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpearl2_a-pearl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsignpos2_a-signpost.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsingles3_a-singles.Po@am__quote@ @@ -1816,6 +2005,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nullfe.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nullgame.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/obfusc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/palisade.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pattern.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pearl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pegs.Po@am__quote@ @@ -1834,6 +2024,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tdq.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tents.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/towers.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracks.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tree234.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/twiddle.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/undead.Po@am__quote@ @@ -1848,6 +2039,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/fifteen-icon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/filling-icon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/flip-icon.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/flood-icon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/galaxies-icon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/guess-icon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/inertia-icon.Po@am__quote@ @@ -1859,6 +2051,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/mines-icon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/net-icon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/netslide-icon.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/palisade-icon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/pattern-icon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/pearl-icon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/pegs-icon.Po@am__quote@ @@ -1872,6 +2065,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/solo-icon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/tents-icon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/towers-icon.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/tracks-icon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/twiddle-icon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/undead-icon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/unequal-icon.Po@am__quote@ @@ -1879,335 +2073,352 @@ @AMDEP_TRUE@@am__include@ @am__quote@icons/$(DEPDIR)/untangle-icon.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +./libfifteen2_a-fifteen.o: ./fifteen.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfifteen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfifteen2_a-fifteen.o -MD -MP -MF $(DEPDIR)/libfifteen2_a-fifteen.Tpo -c -o ./libfifteen2_a-fifteen.o `test -f './fifteen.c' || echo '$(srcdir)/'`./fifteen.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libfifteen2_a-fifteen.Tpo $(DEPDIR)/libfifteen2_a-fifteen.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./fifteen.c' object='./libfifteen2_a-fifteen.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfifteen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfifteen2_a-fifteen.o `test -f './fifteen.c' || echo '$(srcdir)/'`./fifteen.c + +./libfifteen2_a-fifteen.obj: ./fifteen.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfifteen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfifteen2_a-fifteen.obj -MD -MP -MF $(DEPDIR)/libfifteen2_a-fifteen.Tpo -c -o ./libfifteen2_a-fifteen.obj `if test -f './fifteen.c'; then $(CYGPATH_W) './fifteen.c'; else $(CYGPATH_W) '$(srcdir)/./fifteen.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libfifteen2_a-fifteen.Tpo $(DEPDIR)/libfifteen2_a-fifteen.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./fifteen.c' object='./libfifteen2_a-fifteen.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfifteen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfifteen2_a-fifteen.obj `if test -f './fifteen.c'; then $(CYGPATH_W) './fifteen.c'; else $(CYGPATH_W) '$(srcdir)/./fifteen.c'; fi` ./libfilling2_a-filling.o: ./filling.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfilling2_a-filling.o -MD -MP -MF $(DEPDIR)/libfilling2_a-filling.Tpo -c -o ./libfilling2_a-filling.o `test -f './filling.c' || echo '$(srcdir)/'`./filling.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libfilling2_a-filling.Tpo $(DEPDIR)/libfilling2_a-filling.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./filling.c' object='./libfilling2_a-filling.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfilling2_a-filling.o -MD -MP -MF $(DEPDIR)/libfilling2_a-filling.Tpo -c -o ./libfilling2_a-filling.o `test -f './filling.c' || echo '$(srcdir)/'`./filling.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libfilling2_a-filling.Tpo $(DEPDIR)/libfilling2_a-filling.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./filling.c' object='./libfilling2_a-filling.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfilling2_a-filling.o `test -f './filling.c' || echo '$(srcdir)/'`./filling.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfilling2_a-filling.o `test -f './filling.c' || echo '$(srcdir)/'`./filling.c ./libfilling2_a-filling.obj: ./filling.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfilling2_a-filling.obj -MD -MP -MF $(DEPDIR)/libfilling2_a-filling.Tpo -c -o ./libfilling2_a-filling.obj `if test -f './filling.c'; then $(CYGPATH_W) './filling.c'; else $(CYGPATH_W) '$(srcdir)/./filling.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libfilling2_a-filling.Tpo $(DEPDIR)/libfilling2_a-filling.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./filling.c' object='./libfilling2_a-filling.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfilling2_a-filling.obj -MD -MP -MF $(DEPDIR)/libfilling2_a-filling.Tpo -c -o ./libfilling2_a-filling.obj `if test -f './filling.c'; then $(CYGPATH_W) './filling.c'; else $(CYGPATH_W) '$(srcdir)/./filling.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libfilling2_a-filling.Tpo $(DEPDIR)/libfilling2_a-filling.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./filling.c' object='./libfilling2_a-filling.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfilling2_a-filling.obj `if test -f './filling.c'; then $(CYGPATH_W) './filling.c'; else $(CYGPATH_W) '$(srcdir)/./filling.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfilling2_a-filling.obj `if test -f './filling.c'; then $(CYGPATH_W) './filling.c'; else $(CYGPATH_W) '$(srcdir)/./filling.c'; fi` ./libgalaxie2_a-galaxies.o: ./galaxies.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie2_a-galaxies.o -MD -MP -MF $(DEPDIR)/libgalaxie2_a-galaxies.Tpo -c -o ./libgalaxie2_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgalaxie2_a-galaxies.Tpo $(DEPDIR)/libgalaxie2_a-galaxies.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./galaxies.c' object='./libgalaxie2_a-galaxies.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie2_a-galaxies.o -MD -MP -MF $(DEPDIR)/libgalaxie2_a-galaxies.Tpo -c -o ./libgalaxie2_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie2_a-galaxies.Tpo $(DEPDIR)/libgalaxie2_a-galaxies.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./galaxies.c' object='./libgalaxie2_a-galaxies.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie2_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie2_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c ./libgalaxie2_a-galaxies.obj: ./galaxies.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie2_a-galaxies.obj -MD -MP -MF $(DEPDIR)/libgalaxie2_a-galaxies.Tpo -c -o ./libgalaxie2_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgalaxie2_a-galaxies.Tpo $(DEPDIR)/libgalaxie2_a-galaxies.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./galaxies.c' object='./libgalaxie2_a-galaxies.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie2_a-galaxies.obj -MD -MP -MF $(DEPDIR)/libgalaxie2_a-galaxies.Tpo -c -o ./libgalaxie2_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie2_a-galaxies.Tpo $(DEPDIR)/libgalaxie2_a-galaxies.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./galaxies.c' object='./libgalaxie2_a-galaxies.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie2_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie2_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi` ./libgalaxie4_a-galaxies.o: ./galaxies.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie4_a-galaxies.o -MD -MP -MF $(DEPDIR)/libgalaxie4_a-galaxies.Tpo -c -o ./libgalaxie4_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgalaxie4_a-galaxies.Tpo $(DEPDIR)/libgalaxie4_a-galaxies.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./galaxies.c' object='./libgalaxie4_a-galaxies.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie4_a-galaxies.o -MD -MP -MF $(DEPDIR)/libgalaxie4_a-galaxies.Tpo -c -o ./libgalaxie4_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie4_a-galaxies.Tpo $(DEPDIR)/libgalaxie4_a-galaxies.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./galaxies.c' object='./libgalaxie4_a-galaxies.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie4_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie4_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c ./libgalaxie4_a-galaxies.obj: ./galaxies.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie4_a-galaxies.obj -MD -MP -MF $(DEPDIR)/libgalaxie4_a-galaxies.Tpo -c -o ./libgalaxie4_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgalaxie4_a-galaxies.Tpo $(DEPDIR)/libgalaxie4_a-galaxies.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./galaxies.c' object='./libgalaxie4_a-galaxies.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie4_a-galaxies.obj -MD -MP -MF $(DEPDIR)/libgalaxie4_a-galaxies.Tpo -c -o ./libgalaxie4_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie4_a-galaxies.Tpo $(DEPDIR)/libgalaxie4_a-galaxies.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./galaxies.c' object='./libgalaxie4_a-galaxies.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie4_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie4_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi` ./libkeen2_a-keen.o: ./keen.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libkeen2_a-keen.o -MD -MP -MF $(DEPDIR)/libkeen2_a-keen.Tpo -c -o ./libkeen2_a-keen.o `test -f './keen.c' || echo '$(srcdir)/'`./keen.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libkeen2_a-keen.Tpo $(DEPDIR)/libkeen2_a-keen.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./keen.c' object='./libkeen2_a-keen.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libkeen2_a-keen.o -MD -MP -MF $(DEPDIR)/libkeen2_a-keen.Tpo -c -o ./libkeen2_a-keen.o `test -f './keen.c' || echo '$(srcdir)/'`./keen.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkeen2_a-keen.Tpo $(DEPDIR)/libkeen2_a-keen.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./keen.c' object='./libkeen2_a-keen.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libkeen2_a-keen.o `test -f './keen.c' || echo '$(srcdir)/'`./keen.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libkeen2_a-keen.o `test -f './keen.c' || echo '$(srcdir)/'`./keen.c ./libkeen2_a-keen.obj: ./keen.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libkeen2_a-keen.obj -MD -MP -MF $(DEPDIR)/libkeen2_a-keen.Tpo -c -o ./libkeen2_a-keen.obj `if test -f './keen.c'; then $(CYGPATH_W) './keen.c'; else $(CYGPATH_W) '$(srcdir)/./keen.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libkeen2_a-keen.Tpo $(DEPDIR)/libkeen2_a-keen.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./keen.c' object='./libkeen2_a-keen.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libkeen2_a-keen.obj -MD -MP -MF $(DEPDIR)/libkeen2_a-keen.Tpo -c -o ./libkeen2_a-keen.obj `if test -f './keen.c'; then $(CYGPATH_W) './keen.c'; else $(CYGPATH_W) '$(srcdir)/./keen.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkeen2_a-keen.Tpo $(DEPDIR)/libkeen2_a-keen.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./keen.c' object='./libkeen2_a-keen.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libkeen2_a-keen.obj `if test -f './keen.c'; then $(CYGPATH_W) './keen.c'; else $(CYGPATH_W) '$(srcdir)/./keen.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libkeen2_a-keen.obj `if test -f './keen.c'; then $(CYGPATH_W) './keen.c'; else $(CYGPATH_W) '$(srcdir)/./keen.c'; fi` ./liblatin6_a-latin.o: ./latin.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin6_a-latin.o -MD -MP -MF $(DEPDIR)/liblatin6_a-latin.Tpo -c -o ./liblatin6_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/liblatin6_a-latin.Tpo $(DEPDIR)/liblatin6_a-latin.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./latin.c' object='./liblatin6_a-latin.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin6_a-latin.o -MD -MP -MF $(DEPDIR)/liblatin6_a-latin.Tpo -c -o ./liblatin6_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin6_a-latin.Tpo $(DEPDIR)/liblatin6_a-latin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./latin.c' object='./liblatin6_a-latin.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin6_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin6_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c ./liblatin6_a-latin.obj: ./latin.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin6_a-latin.obj -MD -MP -MF $(DEPDIR)/liblatin6_a-latin.Tpo -c -o ./liblatin6_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/liblatin6_a-latin.Tpo $(DEPDIR)/liblatin6_a-latin.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./latin.c' object='./liblatin6_a-latin.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin6_a-latin.obj -MD -MP -MF $(DEPDIR)/liblatin6_a-latin.Tpo -c -o ./liblatin6_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin6_a-latin.Tpo $(DEPDIR)/liblatin6_a-latin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./latin.c' object='./liblatin6_a-latin.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin6_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin6_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi` ./liblatin8_a-latin.o: ./latin.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin8_a-latin.o -MD -MP -MF $(DEPDIR)/liblatin8_a-latin.Tpo -c -o ./liblatin8_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/liblatin8_a-latin.Tpo $(DEPDIR)/liblatin8_a-latin.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./latin.c' object='./liblatin8_a-latin.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin8_a-latin.o -MD -MP -MF $(DEPDIR)/liblatin8_a-latin.Tpo -c -o ./liblatin8_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin8_a-latin.Tpo $(DEPDIR)/liblatin8_a-latin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./latin.c' object='./liblatin8_a-latin.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin8_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin8_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c ./liblatin8_a-latin.obj: ./latin.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin8_a-latin.obj -MD -MP -MF $(DEPDIR)/liblatin8_a-latin.Tpo -c -o ./liblatin8_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/liblatin8_a-latin.Tpo $(DEPDIR)/liblatin8_a-latin.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./latin.c' object='./liblatin8_a-latin.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin8_a-latin.obj -MD -MP -MF $(DEPDIR)/liblatin8_a-latin.Tpo -c -o ./liblatin8_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin8_a-latin.Tpo $(DEPDIR)/liblatin8_a-latin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./latin.c' object='./liblatin8_a-latin.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin8_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin8_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi` ./liblightup2_a-lightup.o: ./lightup.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblightup2_a-lightup.o -MD -MP -MF $(DEPDIR)/liblightup2_a-lightup.Tpo -c -o ./liblightup2_a-lightup.o `test -f './lightup.c' || echo '$(srcdir)/'`./lightup.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/liblightup2_a-lightup.Tpo $(DEPDIR)/liblightup2_a-lightup.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./lightup.c' object='./liblightup2_a-lightup.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblightup2_a-lightup.o -MD -MP -MF $(DEPDIR)/liblightup2_a-lightup.Tpo -c -o ./liblightup2_a-lightup.o `test -f './lightup.c' || echo '$(srcdir)/'`./lightup.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblightup2_a-lightup.Tpo $(DEPDIR)/liblightup2_a-lightup.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./lightup.c' object='./liblightup2_a-lightup.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblightup2_a-lightup.o `test -f './lightup.c' || echo '$(srcdir)/'`./lightup.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblightup2_a-lightup.o `test -f './lightup.c' || echo '$(srcdir)/'`./lightup.c ./liblightup2_a-lightup.obj: ./lightup.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblightup2_a-lightup.obj -MD -MP -MF $(DEPDIR)/liblightup2_a-lightup.Tpo -c -o ./liblightup2_a-lightup.obj `if test -f './lightup.c'; then $(CYGPATH_W) './lightup.c'; else $(CYGPATH_W) '$(srcdir)/./lightup.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/liblightup2_a-lightup.Tpo $(DEPDIR)/liblightup2_a-lightup.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./lightup.c' object='./liblightup2_a-lightup.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblightup2_a-lightup.obj -MD -MP -MF $(DEPDIR)/liblightup2_a-lightup.Tpo -c -o ./liblightup2_a-lightup.obj `if test -f './lightup.c'; then $(CYGPATH_W) './lightup.c'; else $(CYGPATH_W) '$(srcdir)/./lightup.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblightup2_a-lightup.Tpo $(DEPDIR)/liblightup2_a-lightup.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./lightup.c' object='./liblightup2_a-lightup.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblightup2_a-lightup.obj `if test -f './lightup.c'; then $(CYGPATH_W) './lightup.c'; else $(CYGPATH_W) '$(srcdir)/./lightup.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblightup2_a-lightup.obj `if test -f './lightup.c'; then $(CYGPATH_W) './lightup.c'; else $(CYGPATH_W) '$(srcdir)/./lightup.c'; fi` ./libloopy2_a-loopy.o: ./loopy.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libloopy2_a-loopy.o -MD -MP -MF $(DEPDIR)/libloopy2_a-loopy.Tpo -c -o ./libloopy2_a-loopy.o `test -f './loopy.c' || echo '$(srcdir)/'`./loopy.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libloopy2_a-loopy.Tpo $(DEPDIR)/libloopy2_a-loopy.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./loopy.c' object='./libloopy2_a-loopy.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libloopy2_a-loopy.o -MD -MP -MF $(DEPDIR)/libloopy2_a-loopy.Tpo -c -o ./libloopy2_a-loopy.o `test -f './loopy.c' || echo '$(srcdir)/'`./loopy.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libloopy2_a-loopy.Tpo $(DEPDIR)/libloopy2_a-loopy.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./loopy.c' object='./libloopy2_a-loopy.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libloopy2_a-loopy.o `test -f './loopy.c' || echo '$(srcdir)/'`./loopy.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libloopy2_a-loopy.o `test -f './loopy.c' || echo '$(srcdir)/'`./loopy.c ./libloopy2_a-loopy.obj: ./loopy.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libloopy2_a-loopy.obj -MD -MP -MF $(DEPDIR)/libloopy2_a-loopy.Tpo -c -o ./libloopy2_a-loopy.obj `if test -f './loopy.c'; then $(CYGPATH_W) './loopy.c'; else $(CYGPATH_W) '$(srcdir)/./loopy.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libloopy2_a-loopy.Tpo $(DEPDIR)/libloopy2_a-loopy.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./loopy.c' object='./libloopy2_a-loopy.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libloopy2_a-loopy.obj -MD -MP -MF $(DEPDIR)/libloopy2_a-loopy.Tpo -c -o ./libloopy2_a-loopy.obj `if test -f './loopy.c'; then $(CYGPATH_W) './loopy.c'; else $(CYGPATH_W) '$(srcdir)/./loopy.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libloopy2_a-loopy.Tpo $(DEPDIR)/libloopy2_a-loopy.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./loopy.c' object='./libloopy2_a-loopy.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libloopy2_a-loopy.obj `if test -f './loopy.c'; then $(CYGPATH_W) './loopy.c'; else $(CYGPATH_W) '$(srcdir)/./loopy.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libloopy2_a-loopy.obj `if test -f './loopy.c'; then $(CYGPATH_W) './loopy.c'; else $(CYGPATH_W) '$(srcdir)/./loopy.c'; fi` ./libmagnets2_a-magnets.o: ./magnets.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmagnets2_a-magnets.o -MD -MP -MF $(DEPDIR)/libmagnets2_a-magnets.Tpo -c -o ./libmagnets2_a-magnets.o `test -f './magnets.c' || echo '$(srcdir)/'`./magnets.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libmagnets2_a-magnets.Tpo $(DEPDIR)/libmagnets2_a-magnets.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./magnets.c' object='./libmagnets2_a-magnets.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmagnets2_a-magnets.o -MD -MP -MF $(DEPDIR)/libmagnets2_a-magnets.Tpo -c -o ./libmagnets2_a-magnets.o `test -f './magnets.c' || echo '$(srcdir)/'`./magnets.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmagnets2_a-magnets.Tpo $(DEPDIR)/libmagnets2_a-magnets.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./magnets.c' object='./libmagnets2_a-magnets.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmagnets2_a-magnets.o `test -f './magnets.c' || echo '$(srcdir)/'`./magnets.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmagnets2_a-magnets.o `test -f './magnets.c' || echo '$(srcdir)/'`./magnets.c ./libmagnets2_a-magnets.obj: ./magnets.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmagnets2_a-magnets.obj -MD -MP -MF $(DEPDIR)/libmagnets2_a-magnets.Tpo -c -o ./libmagnets2_a-magnets.obj `if test -f './magnets.c'; then $(CYGPATH_W) './magnets.c'; else $(CYGPATH_W) '$(srcdir)/./magnets.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libmagnets2_a-magnets.Tpo $(DEPDIR)/libmagnets2_a-magnets.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./magnets.c' object='./libmagnets2_a-magnets.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmagnets2_a-magnets.obj -MD -MP -MF $(DEPDIR)/libmagnets2_a-magnets.Tpo -c -o ./libmagnets2_a-magnets.obj `if test -f './magnets.c'; then $(CYGPATH_W) './magnets.c'; else $(CYGPATH_W) '$(srcdir)/./magnets.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmagnets2_a-magnets.Tpo $(DEPDIR)/libmagnets2_a-magnets.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./magnets.c' object='./libmagnets2_a-magnets.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmagnets2_a-magnets.obj `if test -f './magnets.c'; then $(CYGPATH_W) './magnets.c'; else $(CYGPATH_W) '$(srcdir)/./magnets.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmagnets2_a-magnets.obj `if test -f './magnets.c'; then $(CYGPATH_W) './magnets.c'; else $(CYGPATH_W) '$(srcdir)/./magnets.c'; fi` ./libmap2_a-map.o: ./map.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmap2_a-map.o -MD -MP -MF $(DEPDIR)/libmap2_a-map.Tpo -c -o ./libmap2_a-map.o `test -f './map.c' || echo '$(srcdir)/'`./map.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libmap2_a-map.Tpo $(DEPDIR)/libmap2_a-map.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./map.c' object='./libmap2_a-map.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmap2_a-map.o -MD -MP -MF $(DEPDIR)/libmap2_a-map.Tpo -c -o ./libmap2_a-map.o `test -f './map.c' || echo '$(srcdir)/'`./map.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmap2_a-map.Tpo $(DEPDIR)/libmap2_a-map.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./map.c' object='./libmap2_a-map.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmap2_a-map.o `test -f './map.c' || echo '$(srcdir)/'`./map.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmap2_a-map.o `test -f './map.c' || echo '$(srcdir)/'`./map.c ./libmap2_a-map.obj: ./map.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmap2_a-map.obj -MD -MP -MF $(DEPDIR)/libmap2_a-map.Tpo -c -o ./libmap2_a-map.obj `if test -f './map.c'; then $(CYGPATH_W) './map.c'; else $(CYGPATH_W) '$(srcdir)/./map.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libmap2_a-map.Tpo $(DEPDIR)/libmap2_a-map.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./map.c' object='./libmap2_a-map.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmap2_a-map.obj -MD -MP -MF $(DEPDIR)/libmap2_a-map.Tpo -c -o ./libmap2_a-map.obj `if test -f './map.c'; then $(CYGPATH_W) './map.c'; else $(CYGPATH_W) '$(srcdir)/./map.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmap2_a-map.Tpo $(DEPDIR)/libmap2_a-map.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./map.c' object='./libmap2_a-map.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmap2_a-map.obj `if test -f './map.c'; then $(CYGPATH_W) './map.c'; else $(CYGPATH_W) '$(srcdir)/./map.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmap2_a-map.obj `if test -f './map.c'; then $(CYGPATH_W) './map.c'; else $(CYGPATH_W) '$(srcdir)/./map.c'; fi` ./libmines2_a-mines.o: ./mines.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmines2_a-mines.o -MD -MP -MF $(DEPDIR)/libmines2_a-mines.Tpo -c -o ./libmines2_a-mines.o `test -f './mines.c' || echo '$(srcdir)/'`./mines.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libmines2_a-mines.Tpo $(DEPDIR)/libmines2_a-mines.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./mines.c' object='./libmines2_a-mines.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmines2_a-mines.o -MD -MP -MF $(DEPDIR)/libmines2_a-mines.Tpo -c -o ./libmines2_a-mines.o `test -f './mines.c' || echo '$(srcdir)/'`./mines.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmines2_a-mines.Tpo $(DEPDIR)/libmines2_a-mines.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mines.c' object='./libmines2_a-mines.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmines2_a-mines.o `test -f './mines.c' || echo '$(srcdir)/'`./mines.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmines2_a-mines.o `test -f './mines.c' || echo '$(srcdir)/'`./mines.c ./libmines2_a-mines.obj: ./mines.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmines2_a-mines.obj -MD -MP -MF $(DEPDIR)/libmines2_a-mines.Tpo -c -o ./libmines2_a-mines.obj `if test -f './mines.c'; then $(CYGPATH_W) './mines.c'; else $(CYGPATH_W) '$(srcdir)/./mines.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libmines2_a-mines.Tpo $(DEPDIR)/libmines2_a-mines.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./mines.c' object='./libmines2_a-mines.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmines2_a-mines.obj -MD -MP -MF $(DEPDIR)/libmines2_a-mines.Tpo -c -o ./libmines2_a-mines.obj `if test -f './mines.c'; then $(CYGPATH_W) './mines.c'; else $(CYGPATH_W) '$(srcdir)/./mines.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmines2_a-mines.Tpo $(DEPDIR)/libmines2_a-mines.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mines.c' object='./libmines2_a-mines.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmines2_a-mines.obj `if test -f './mines.c'; then $(CYGPATH_W) './mines.c'; else $(CYGPATH_W) '$(srcdir)/./mines.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmines2_a-mines.obj `if test -f './mines.c'; then $(CYGPATH_W) './mines.c'; else $(CYGPATH_W) '$(srcdir)/./mines.c'; fi` ./libpattern2_a-pattern.o: ./pattern.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern2_a-pattern.o -MD -MP -MF $(DEPDIR)/libpattern2_a-pattern.Tpo -c -o ./libpattern2_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libpattern2_a-pattern.Tpo $(DEPDIR)/libpattern2_a-pattern.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./pattern.c' object='./libpattern2_a-pattern.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern2_a-pattern.o -MD -MP -MF $(DEPDIR)/libpattern2_a-pattern.Tpo -c -o ./libpattern2_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern2_a-pattern.Tpo $(DEPDIR)/libpattern2_a-pattern.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pattern.c' object='./libpattern2_a-pattern.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern2_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern2_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c ./libpattern2_a-pattern.obj: ./pattern.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern2_a-pattern.obj -MD -MP -MF $(DEPDIR)/libpattern2_a-pattern.Tpo -c -o ./libpattern2_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libpattern2_a-pattern.Tpo $(DEPDIR)/libpattern2_a-pattern.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./pattern.c' object='./libpattern2_a-pattern.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern2_a-pattern.obj -MD -MP -MF $(DEPDIR)/libpattern2_a-pattern.Tpo -c -o ./libpattern2_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern2_a-pattern.Tpo $(DEPDIR)/libpattern2_a-pattern.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pattern.c' object='./libpattern2_a-pattern.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern2_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern2_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi` + +./libpattern4_a-pattern.o: ./pattern.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern4_a-pattern.o -MD -MP -MF $(DEPDIR)/libpattern4_a-pattern.Tpo -c -o ./libpattern4_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern4_a-pattern.Tpo $(DEPDIR)/libpattern4_a-pattern.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pattern.c' object='./libpattern4_a-pattern.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern4_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c + +./libpattern4_a-pattern.obj: ./pattern.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern4_a-pattern.obj -MD -MP -MF $(DEPDIR)/libpattern4_a-pattern.Tpo -c -o ./libpattern4_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern4_a-pattern.Tpo $(DEPDIR)/libpattern4_a-pattern.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pattern.c' object='./libpattern4_a-pattern.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern4_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi` ./libpearl2_a-pearl.o: ./pearl.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpearl2_a-pearl.o -MD -MP -MF $(DEPDIR)/libpearl2_a-pearl.Tpo -c -o ./libpearl2_a-pearl.o `test -f './pearl.c' || echo '$(srcdir)/'`./pearl.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libpearl2_a-pearl.Tpo $(DEPDIR)/libpearl2_a-pearl.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./pearl.c' object='./libpearl2_a-pearl.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpearl2_a-pearl.o -MD -MP -MF $(DEPDIR)/libpearl2_a-pearl.Tpo -c -o ./libpearl2_a-pearl.o `test -f './pearl.c' || echo '$(srcdir)/'`./pearl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpearl2_a-pearl.Tpo $(DEPDIR)/libpearl2_a-pearl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pearl.c' object='./libpearl2_a-pearl.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpearl2_a-pearl.o `test -f './pearl.c' || echo '$(srcdir)/'`./pearl.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpearl2_a-pearl.o `test -f './pearl.c' || echo '$(srcdir)/'`./pearl.c ./libpearl2_a-pearl.obj: ./pearl.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpearl2_a-pearl.obj -MD -MP -MF $(DEPDIR)/libpearl2_a-pearl.Tpo -c -o ./libpearl2_a-pearl.obj `if test -f './pearl.c'; then $(CYGPATH_W) './pearl.c'; else $(CYGPATH_W) '$(srcdir)/./pearl.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libpearl2_a-pearl.Tpo $(DEPDIR)/libpearl2_a-pearl.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./pearl.c' object='./libpearl2_a-pearl.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpearl2_a-pearl.obj -MD -MP -MF $(DEPDIR)/libpearl2_a-pearl.Tpo -c -o ./libpearl2_a-pearl.obj `if test -f './pearl.c'; then $(CYGPATH_W) './pearl.c'; else $(CYGPATH_W) '$(srcdir)/./pearl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpearl2_a-pearl.Tpo $(DEPDIR)/libpearl2_a-pearl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pearl.c' object='./libpearl2_a-pearl.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpearl2_a-pearl.obj `if test -f './pearl.c'; then $(CYGPATH_W) './pearl.c'; else $(CYGPATH_W) '$(srcdir)/./pearl.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpearl2_a-pearl.obj `if test -f './pearl.c'; then $(CYGPATH_W) './pearl.c'; else $(CYGPATH_W) '$(srcdir)/./pearl.c'; fi` ./libsignpos2_a-signpost.o: ./signpost.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsignpos2_a-signpost.o -MD -MP -MF $(DEPDIR)/libsignpos2_a-signpost.Tpo -c -o ./libsignpos2_a-signpost.o `test -f './signpost.c' || echo '$(srcdir)/'`./signpost.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsignpos2_a-signpost.Tpo $(DEPDIR)/libsignpos2_a-signpost.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./signpost.c' object='./libsignpos2_a-signpost.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsignpos2_a-signpost.o -MD -MP -MF $(DEPDIR)/libsignpos2_a-signpost.Tpo -c -o ./libsignpos2_a-signpost.o `test -f './signpost.c' || echo '$(srcdir)/'`./signpost.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsignpos2_a-signpost.Tpo $(DEPDIR)/libsignpos2_a-signpost.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./signpost.c' object='./libsignpos2_a-signpost.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsignpos2_a-signpost.o `test -f './signpost.c' || echo '$(srcdir)/'`./signpost.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsignpos2_a-signpost.o `test -f './signpost.c' || echo '$(srcdir)/'`./signpost.c ./libsignpos2_a-signpost.obj: ./signpost.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsignpos2_a-signpost.obj -MD -MP -MF $(DEPDIR)/libsignpos2_a-signpost.Tpo -c -o ./libsignpos2_a-signpost.obj `if test -f './signpost.c'; then $(CYGPATH_W) './signpost.c'; else $(CYGPATH_W) '$(srcdir)/./signpost.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsignpos2_a-signpost.Tpo $(DEPDIR)/libsignpos2_a-signpost.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./signpost.c' object='./libsignpos2_a-signpost.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsignpos2_a-signpost.obj -MD -MP -MF $(DEPDIR)/libsignpos2_a-signpost.Tpo -c -o ./libsignpos2_a-signpost.obj `if test -f './signpost.c'; then $(CYGPATH_W) './signpost.c'; else $(CYGPATH_W) '$(srcdir)/./signpost.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsignpos2_a-signpost.Tpo $(DEPDIR)/libsignpos2_a-signpost.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./signpost.c' object='./libsignpos2_a-signpost.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsignpos2_a-signpost.obj `if test -f './signpost.c'; then $(CYGPATH_W) './signpost.c'; else $(CYGPATH_W) '$(srcdir)/./signpost.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsignpos2_a-signpost.obj `if test -f './signpost.c'; then $(CYGPATH_W) './signpost.c'; else $(CYGPATH_W) '$(srcdir)/./signpost.c'; fi` ./libsingles3_a-singles.o: ./singles.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsingles3_a-singles.o -MD -MP -MF $(DEPDIR)/libsingles3_a-singles.Tpo -c -o ./libsingles3_a-singles.o `test -f './singles.c' || echo '$(srcdir)/'`./singles.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsingles3_a-singles.Tpo $(DEPDIR)/libsingles3_a-singles.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./singles.c' object='./libsingles3_a-singles.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsingles3_a-singles.o -MD -MP -MF $(DEPDIR)/libsingles3_a-singles.Tpo -c -o ./libsingles3_a-singles.o `test -f './singles.c' || echo '$(srcdir)/'`./singles.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsingles3_a-singles.Tpo $(DEPDIR)/libsingles3_a-singles.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./singles.c' object='./libsingles3_a-singles.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsingles3_a-singles.o `test -f './singles.c' || echo '$(srcdir)/'`./singles.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsingles3_a-singles.o `test -f './singles.c' || echo '$(srcdir)/'`./singles.c ./libsingles3_a-singles.obj: ./singles.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsingles3_a-singles.obj -MD -MP -MF $(DEPDIR)/libsingles3_a-singles.Tpo -c -o ./libsingles3_a-singles.obj `if test -f './singles.c'; then $(CYGPATH_W) './singles.c'; else $(CYGPATH_W) '$(srcdir)/./singles.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsingles3_a-singles.Tpo $(DEPDIR)/libsingles3_a-singles.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./singles.c' object='./libsingles3_a-singles.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsingles3_a-singles.obj -MD -MP -MF $(DEPDIR)/libsingles3_a-singles.Tpo -c -o ./libsingles3_a-singles.obj `if test -f './singles.c'; then $(CYGPATH_W) './singles.c'; else $(CYGPATH_W) '$(srcdir)/./singles.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsingles3_a-singles.Tpo $(DEPDIR)/libsingles3_a-singles.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./singles.c' object='./libsingles3_a-singles.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsingles3_a-singles.obj `if test -f './singles.c'; then $(CYGPATH_W) './singles.c'; else $(CYGPATH_W) '$(srcdir)/./singles.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsingles3_a-singles.obj `if test -f './singles.c'; then $(CYGPATH_W) './singles.c'; else $(CYGPATH_W) '$(srcdir)/./singles.c'; fi` ./libslant2_a-slant.o: ./slant.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libslant2_a-slant.o -MD -MP -MF $(DEPDIR)/libslant2_a-slant.Tpo -c -o ./libslant2_a-slant.o `test -f './slant.c' || echo '$(srcdir)/'`./slant.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libslant2_a-slant.Tpo $(DEPDIR)/libslant2_a-slant.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./slant.c' object='./libslant2_a-slant.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libslant2_a-slant.o -MD -MP -MF $(DEPDIR)/libslant2_a-slant.Tpo -c -o ./libslant2_a-slant.o `test -f './slant.c' || echo '$(srcdir)/'`./slant.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libslant2_a-slant.Tpo $(DEPDIR)/libslant2_a-slant.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./slant.c' object='./libslant2_a-slant.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libslant2_a-slant.o `test -f './slant.c' || echo '$(srcdir)/'`./slant.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libslant2_a-slant.o `test -f './slant.c' || echo '$(srcdir)/'`./slant.c ./libslant2_a-slant.obj: ./slant.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libslant2_a-slant.obj -MD -MP -MF $(DEPDIR)/libslant2_a-slant.Tpo -c -o ./libslant2_a-slant.obj `if test -f './slant.c'; then $(CYGPATH_W) './slant.c'; else $(CYGPATH_W) '$(srcdir)/./slant.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libslant2_a-slant.Tpo $(DEPDIR)/libslant2_a-slant.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./slant.c' object='./libslant2_a-slant.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libslant2_a-slant.obj -MD -MP -MF $(DEPDIR)/libslant2_a-slant.Tpo -c -o ./libslant2_a-slant.obj `if test -f './slant.c'; then $(CYGPATH_W) './slant.c'; else $(CYGPATH_W) '$(srcdir)/./slant.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libslant2_a-slant.Tpo $(DEPDIR)/libslant2_a-slant.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./slant.c' object='./libslant2_a-slant.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libslant2_a-slant.obj `if test -f './slant.c'; then $(CYGPATH_W) './slant.c'; else $(CYGPATH_W) '$(srcdir)/./slant.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libslant2_a-slant.obj `if test -f './slant.c'; then $(CYGPATH_W) './slant.c'; else $(CYGPATH_W) '$(srcdir)/./slant.c'; fi` ./libsolo2_a-solo.o: ./solo.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsolo2_a-solo.o -MD -MP -MF $(DEPDIR)/libsolo2_a-solo.Tpo -c -o ./libsolo2_a-solo.o `test -f './solo.c' || echo '$(srcdir)/'`./solo.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsolo2_a-solo.Tpo $(DEPDIR)/libsolo2_a-solo.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./solo.c' object='./libsolo2_a-solo.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsolo2_a-solo.o -MD -MP -MF $(DEPDIR)/libsolo2_a-solo.Tpo -c -o ./libsolo2_a-solo.o `test -f './solo.c' || echo '$(srcdir)/'`./solo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsolo2_a-solo.Tpo $(DEPDIR)/libsolo2_a-solo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./solo.c' object='./libsolo2_a-solo.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsolo2_a-solo.o `test -f './solo.c' || echo '$(srcdir)/'`./solo.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsolo2_a-solo.o `test -f './solo.c' || echo '$(srcdir)/'`./solo.c ./libsolo2_a-solo.obj: ./solo.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsolo2_a-solo.obj -MD -MP -MF $(DEPDIR)/libsolo2_a-solo.Tpo -c -o ./libsolo2_a-solo.obj `if test -f './solo.c'; then $(CYGPATH_W) './solo.c'; else $(CYGPATH_W) '$(srcdir)/./solo.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsolo2_a-solo.Tpo $(DEPDIR)/libsolo2_a-solo.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./solo.c' object='./libsolo2_a-solo.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsolo2_a-solo.obj -MD -MP -MF $(DEPDIR)/libsolo2_a-solo.Tpo -c -o ./libsolo2_a-solo.obj `if test -f './solo.c'; then $(CYGPATH_W) './solo.c'; else $(CYGPATH_W) '$(srcdir)/./solo.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsolo2_a-solo.Tpo $(DEPDIR)/libsolo2_a-solo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./solo.c' object='./libsolo2_a-solo.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsolo2_a-solo.obj `if test -f './solo.c'; then $(CYGPATH_W) './solo.c'; else $(CYGPATH_W) '$(srcdir)/./solo.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsolo2_a-solo.obj `if test -f './solo.c'; then $(CYGPATH_W) './solo.c'; else $(CYGPATH_W) '$(srcdir)/./solo.c'; fi` ./libtents3_a-tents.o: ./tents.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtents3_a-tents.o -MD -MP -MF $(DEPDIR)/libtents3_a-tents.Tpo -c -o ./libtents3_a-tents.o `test -f './tents.c' || echo '$(srcdir)/'`./tents.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libtents3_a-tents.Tpo $(DEPDIR)/libtents3_a-tents.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./tents.c' object='./libtents3_a-tents.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtents3_a-tents.o -MD -MP -MF $(DEPDIR)/libtents3_a-tents.Tpo -c -o ./libtents3_a-tents.o `test -f './tents.c' || echo '$(srcdir)/'`./tents.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtents3_a-tents.Tpo $(DEPDIR)/libtents3_a-tents.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./tents.c' object='./libtents3_a-tents.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtents3_a-tents.o `test -f './tents.c' || echo '$(srcdir)/'`./tents.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtents3_a-tents.o `test -f './tents.c' || echo '$(srcdir)/'`./tents.c ./libtents3_a-tents.obj: ./tents.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtents3_a-tents.obj -MD -MP -MF $(DEPDIR)/libtents3_a-tents.Tpo -c -o ./libtents3_a-tents.obj `if test -f './tents.c'; then $(CYGPATH_W) './tents.c'; else $(CYGPATH_W) '$(srcdir)/./tents.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libtents3_a-tents.Tpo $(DEPDIR)/libtents3_a-tents.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./tents.c' object='./libtents3_a-tents.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtents3_a-tents.obj -MD -MP -MF $(DEPDIR)/libtents3_a-tents.Tpo -c -o ./libtents3_a-tents.obj `if test -f './tents.c'; then $(CYGPATH_W) './tents.c'; else $(CYGPATH_W) '$(srcdir)/./tents.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtents3_a-tents.Tpo $(DEPDIR)/libtents3_a-tents.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./tents.c' object='./libtents3_a-tents.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtents3_a-tents.obj `if test -f './tents.c'; then $(CYGPATH_W) './tents.c'; else $(CYGPATH_W) '$(srcdir)/./tents.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtents3_a-tents.obj `if test -f './tents.c'; then $(CYGPATH_W) './tents.c'; else $(CYGPATH_W) '$(srcdir)/./tents.c'; fi` ./libtowers2_a-towers.o: ./towers.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtowers2_a-towers.o -MD -MP -MF $(DEPDIR)/libtowers2_a-towers.Tpo -c -o ./libtowers2_a-towers.o `test -f './towers.c' || echo '$(srcdir)/'`./towers.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libtowers2_a-towers.Tpo $(DEPDIR)/libtowers2_a-towers.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./towers.c' object='./libtowers2_a-towers.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtowers2_a-towers.o -MD -MP -MF $(DEPDIR)/libtowers2_a-towers.Tpo -c -o ./libtowers2_a-towers.o `test -f './towers.c' || echo '$(srcdir)/'`./towers.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtowers2_a-towers.Tpo $(DEPDIR)/libtowers2_a-towers.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./towers.c' object='./libtowers2_a-towers.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtowers2_a-towers.o `test -f './towers.c' || echo '$(srcdir)/'`./towers.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtowers2_a-towers.o `test -f './towers.c' || echo '$(srcdir)/'`./towers.c ./libtowers2_a-towers.obj: ./towers.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtowers2_a-towers.obj -MD -MP -MF $(DEPDIR)/libtowers2_a-towers.Tpo -c -o ./libtowers2_a-towers.obj `if test -f './towers.c'; then $(CYGPATH_W) './towers.c'; else $(CYGPATH_W) '$(srcdir)/./towers.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libtowers2_a-towers.Tpo $(DEPDIR)/libtowers2_a-towers.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./towers.c' object='./libtowers2_a-towers.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtowers2_a-towers.obj -MD -MP -MF $(DEPDIR)/libtowers2_a-towers.Tpo -c -o ./libtowers2_a-towers.obj `if test -f './towers.c'; then $(CYGPATH_W) './towers.c'; else $(CYGPATH_W) '$(srcdir)/./towers.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtowers2_a-towers.Tpo $(DEPDIR)/libtowers2_a-towers.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./towers.c' object='./libtowers2_a-towers.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtowers2_a-towers.obj `if test -f './towers.c'; then $(CYGPATH_W) './towers.c'; else $(CYGPATH_W) '$(srcdir)/./towers.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtowers2_a-towers.obj `if test -f './towers.c'; then $(CYGPATH_W) './towers.c'; else $(CYGPATH_W) '$(srcdir)/./towers.c'; fi` ./libunequal2_a-unequal.o: ./unequal.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunequal2_a-unequal.o -MD -MP -MF $(DEPDIR)/libunequal2_a-unequal.Tpo -c -o ./libunequal2_a-unequal.o `test -f './unequal.c' || echo '$(srcdir)/'`./unequal.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libunequal2_a-unequal.Tpo $(DEPDIR)/libunequal2_a-unequal.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./unequal.c' object='./libunequal2_a-unequal.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunequal2_a-unequal.o -MD -MP -MF $(DEPDIR)/libunequal2_a-unequal.Tpo -c -o ./libunequal2_a-unequal.o `test -f './unequal.c' || echo '$(srcdir)/'`./unequal.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libunequal2_a-unequal.Tpo $(DEPDIR)/libunequal2_a-unequal.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./unequal.c' object='./libunequal2_a-unequal.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunequal2_a-unequal.o `test -f './unequal.c' || echo '$(srcdir)/'`./unequal.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunequal2_a-unequal.o `test -f './unequal.c' || echo '$(srcdir)/'`./unequal.c ./libunequal2_a-unequal.obj: ./unequal.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunequal2_a-unequal.obj -MD -MP -MF $(DEPDIR)/libunequal2_a-unequal.Tpo -c -o ./libunequal2_a-unequal.obj `if test -f './unequal.c'; then $(CYGPATH_W) './unequal.c'; else $(CYGPATH_W) '$(srcdir)/./unequal.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libunequal2_a-unequal.Tpo $(DEPDIR)/libunequal2_a-unequal.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./unequal.c' object='./libunequal2_a-unequal.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunequal2_a-unequal.obj -MD -MP -MF $(DEPDIR)/libunequal2_a-unequal.Tpo -c -o ./libunequal2_a-unequal.obj `if test -f './unequal.c'; then $(CYGPATH_W) './unequal.c'; else $(CYGPATH_W) '$(srcdir)/./unequal.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libunequal2_a-unequal.Tpo $(DEPDIR)/libunequal2_a-unequal.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./unequal.c' object='./libunequal2_a-unequal.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunequal2_a-unequal.obj `if test -f './unequal.c'; then $(CYGPATH_W) './unequal.c'; else $(CYGPATH_W) '$(srcdir)/./unequal.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunequal2_a-unequal.obj `if test -f './unequal.c'; then $(CYGPATH_W) './unequal.c'; else $(CYGPATH_W) '$(srcdir)/./unequal.c'; fi` ./libunruly2_a-unruly.o: ./unruly.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunruly2_a-unruly.o -MD -MP -MF $(DEPDIR)/libunruly2_a-unruly.Tpo -c -o ./libunruly2_a-unruly.o `test -f './unruly.c' || echo '$(srcdir)/'`./unruly.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libunruly2_a-unruly.Tpo $(DEPDIR)/libunruly2_a-unruly.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./unruly.c' object='./libunruly2_a-unruly.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunruly2_a-unruly.o -MD -MP -MF $(DEPDIR)/libunruly2_a-unruly.Tpo -c -o ./libunruly2_a-unruly.o `test -f './unruly.c' || echo '$(srcdir)/'`./unruly.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libunruly2_a-unruly.Tpo $(DEPDIR)/libunruly2_a-unruly.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./unruly.c' object='./libunruly2_a-unruly.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunruly2_a-unruly.o `test -f './unruly.c' || echo '$(srcdir)/'`./unruly.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunruly2_a-unruly.o `test -f './unruly.c' || echo '$(srcdir)/'`./unruly.c ./libunruly2_a-unruly.obj: ./unruly.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunruly2_a-unruly.obj -MD -MP -MF $(DEPDIR)/libunruly2_a-unruly.Tpo -c -o ./libunruly2_a-unruly.obj `if test -f './unruly.c'; then $(CYGPATH_W) './unruly.c'; else $(CYGPATH_W) '$(srcdir)/./unruly.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libunruly2_a-unruly.Tpo $(DEPDIR)/libunruly2_a-unruly.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='./unruly.c' object='./libunruly2_a-unruly.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunruly2_a-unruly.obj `if test -f './unruly.c'; then $(CYGPATH_W) './unruly.c'; else $(CYGPATH_W) '$(srcdir)/./unruly.c'; fi` - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunruly2_a-unruly.obj -MD -MP -MF $(DEPDIR)/libunruly2_a-unruly.Tpo -c -o ./libunruly2_a-unruly.obj `if test -f './unruly.c'; then $(CYGPATH_W) './unruly.c'; else $(CYGPATH_W) '$(srcdir)/./unruly.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libunruly2_a-unruly.Tpo $(DEPDIR)/libunruly2_a-unruly.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./unruly.c' object='./libunruly2_a-unruly.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunruly2_a-unruly.obj `if test -f './unruly.c'; then $(CYGPATH_W) './unruly.c'; else $(CYGPATH_W) '$(srcdir)/./unruly.c'; fi` + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -2219,15 +2430,11 @@ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -2236,9 +2443,31 @@ here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) @@ -2281,40 +2510,42 @@ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) + $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__remove_distdir) + $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__remove_distdir) - -dist-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) + $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__remove_distdir) + $(am__post_remove_distdir) dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) + $(am__post_remove_distdir) dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) + $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) + $(am__post_remove_distdir) -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another @@ -2325,8 +2556,6 @@ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ @@ -2338,18 +2567,19 @@ *.zip*) \ unzip $(distdir).zip ;;\ esac - chmod -R a-w $(distdir); chmod u+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ @@ -2372,7 +2602,7 @@ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 - $(am__remove_distdir) + $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' @@ -2518,10 +2748,11 @@ .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \ - clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \ - clean-noinstPROGRAMS ctags dist dist-all dist-bzip2 dist-gzip \ - dist-lzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ +.PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-am clean \ + clean-binPROGRAMS clean-cscope clean-generic \ + clean-noinstLIBRARIES clean-noinstPROGRAMS cscope \ + cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-compile distclean-generic \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ @@ -2532,8 +2763,17 @@ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-binPROGRAMS + tags tags-am uninstall uninstall-am uninstall-binPROGRAMS + +.PRECIOUS: Makefile + +test: benchmark.html benchmark.txt + +benchmark.html: benchmark.txt benchmark.pl + ./benchmark.pl benchmark.txt > $@ +benchmark.txt: benchmark.sh $(GAMES) + ./benchmark.sh > $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -Nru sgt-puzzles-20140928.r10274/Makefile.nestedvm sgt-puzzles-20160429.b31155b/Makefile.nestedvm --- sgt-puzzles-20140928.r10274/Makefile.nestedvm 2014-09-29 00:35:53.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/Makefile.nestedvm 2016-04-29 00:37:35.000000000 +0000 @@ -12,12 +12,13 @@ CFLAGS = -O2 -Wall -Werror -DSLOW_SYSTEM -g -I./ -Iicons/ all: blackbox.jar bridges.jar cube.jar dominosa.jar fifteen.jar filling.jar \ - flip.jar galaxies.jar guess.jar inertia.jar keen.jar \ - lightup.jar loopy.jar magnets.jar map.jar mines.jar net.jar \ - netslide.jar nullgame.jar pattern.jar pearl.jar pegs.jar \ - range.jar rect.jar samegame.jar signpost.jar singles.jar \ - sixteen.jar slant.jar solo.jar tents.jar towers.jar \ - twiddle.jar undead.jar unequal.jar unruly.jar untangle.jar + flip.jar flood.jar galaxies.jar guess.jar inertia.jar \ + keen.jar lightup.jar loopy.jar magnets.jar map.jar mines.jar \ + net.jar netslide.jar nullgame.jar palisade.jar pattern.jar \ + pearl.jar pegs.jar range.jar rect.jar samegame.jar \ + signpost.jar singles.jar sixteen.jar slant.jar solo.jar \ + tents.jar towers.jar tracks.jar twiddle.jar undead.jar \ + unequal.jar unruly.jar untangle.jar blackbox.mips: blackbox.o blackbox-icon.o drawing.o nestedvm.o malloc.o \ midend.o misc.o printing.o ps.o random.o version.o @@ -25,11 +26,11 @@ nestedvm.o malloc.o midend.o misc.o printing.o ps.o random.o \ version.o -lm -bridges.mips: bridges.o bridges-icon.o drawing.o dsf.o nestedvm.o malloc.o \ - midend.o misc.o printing.o ps.o random.o version.o +bridges.mips: bridges.o bridges-icon.o drawing.o dsf.o findloop.o nestedvm.o \ + malloc.o midend.o misc.o printing.o ps.o random.o version.o $(CC) $(XLDFLAGS) -o $@ bridges.o bridges-icon.o drawing.o dsf.o \ - nestedvm.o malloc.o midend.o misc.o printing.o ps.o random.o \ - version.o -lm + findloop.o nestedvm.o malloc.o midend.o misc.o printing.o \ + ps.o random.o version.o -lm cube.mips: cube.o cube-icon.o drawing.o nestedvm.o malloc.o midend.o misc.o \ printing.o ps.o random.o version.o @@ -61,6 +62,12 @@ malloc.o midend.o misc.o printing.o ps.o random.o tree234.o \ version.o -lm +flood.mips: drawing.o flood.o flood-icon.o nestedvm.o malloc.o midend.o \ + misc.o printing.o ps.o random.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o flood.o flood-icon.o nestedvm.o \ + malloc.o midend.o misc.o printing.o ps.o random.o version.o \ + -lm + galaxies.mips: drawing.o dsf.o galaxies.o galaxies-icon.o nestedvm.o \ malloc.o midend.o misc.o printing.o ps.o random.o version.o $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o galaxies.o galaxies-icon.o \ @@ -117,11 +124,12 @@ mines.o mines-icon.o misc.o printing.o ps.o random.o \ tree234.o version.o -lm -net.mips: drawing.o dsf.o nestedvm.o malloc.o midend.o misc.o net.o \ - net-icon.o printing.o ps.o random.o tree234.o version.o - $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o nestedvm.o malloc.o midend.o \ - misc.o net.o net-icon.o printing.o ps.o random.o tree234.o \ - version.o -lm +net.mips: drawing.o dsf.o findloop.o nestedvm.o malloc.o midend.o misc.o \ + net.o net-icon.o printing.o ps.o random.o tree234.o \ + version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o findloop.o nestedvm.o \ + malloc.o midend.o misc.o net.o net-icon.o printing.o ps.o \ + random.o tree234.o version.o -lm netslide.mips: drawing.o nestedvm.o malloc.o midend.o misc.o netslide.o \ netslide-icon.o printing.o ps.o random.o tree234.o version.o @@ -135,6 +143,13 @@ misc.o no-icon.o nullgame.o printing.o ps.o random.o \ version.o -lm +palisade.mips: divvy.o drawing.o dsf.o nestedvm.o malloc.o midend.o misc.o \ + palisade.o palisade-icon.o printing.o ps.o random.o \ + version.o + $(CC) $(XLDFLAGS) -o $@ divvy.o drawing.o dsf.o nestedvm.o malloc.o \ + midend.o misc.o palisade.o palisade-icon.o printing.o ps.o \ + random.o version.o -lm + pattern.mips: drawing.o nestedvm.o malloc.o midend.o misc.o pattern.o \ pattern-icon.o printing.o ps.o random.o version.o $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \ @@ -192,11 +207,11 @@ misc.o printing.o ps.o random.o sixteen.o sixteen-icon.o \ version.o -lm -slant.mips: drawing.o dsf.o nestedvm.o malloc.o midend.o misc.o printing.o \ - ps.o random.o slant.o slant-icon.o version.o - $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o nestedvm.o malloc.o midend.o \ - misc.o printing.o ps.o random.o slant.o slant-icon.o \ - version.o -lm +slant.mips: drawing.o dsf.o findloop.o nestedvm.o malloc.o midend.o misc.o \ + printing.o ps.o random.o slant.o slant-icon.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o findloop.o nestedvm.o \ + malloc.o midend.o misc.o printing.o ps.o random.o slant.o \ + slant-icon.o version.o -lm solo.mips: divvy.o drawing.o dsf.o nestedvm.o malloc.o midend.o misc.o \ printing.o ps.o random.o solo.o solo-icon.o version.o @@ -217,6 +232,12 @@ maxflow.o midend.o misc.o printing.o ps.o random.o towers.o \ towers-icon.o tree234.o version.o -lm +tracks.mips: drawing.o dsf.o findloop.o nestedvm.o malloc.o midend.o misc.o \ + printing.o ps.o random.o tracks.o tracks-icon.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o findloop.o nestedvm.o \ + malloc.o midend.o misc.o printing.o ps.o random.o tracks.o \ + tracks-icon.o version.o -lm + twiddle.mips: drawing.o nestedvm.o malloc.o midend.o misc.o printing.o ps.o \ random.o twiddle.o twiddle-icon.o version.o $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \ @@ -284,8 +305,10 @@ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ fifteen-icon.o: icons/fifteen-icon.c $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -fifteen3.o: ./fifteen.c ./puzzles.h +fifteen5.o: ./fifteen.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +fifteen2.o: ./fifteen.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ filling.o: ./filling.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ filling-icon.o: icons/filling-icon.c @@ -294,12 +317,20 @@ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ filling2.o: ./filling.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +findloop.o: ./findloop.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ flip.o: ./flip.c ./puzzles.h ./tree234.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ flip-icon.o: icons/flip-icon.c $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ flip3.o: ./flip.c ./puzzles.h ./tree234.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +flood.o: ./flood.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +flood-icon.o: icons/flood-icon.c + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +flood3.o: ./flood.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ galaxies.o: ./galaxies.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ galaxies-icon.o: icons/galaxies-icon.c @@ -416,12 +447,20 @@ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ osx.o: ./osx.m ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisade.o: ./palisade.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisade-icon.o: icons/palisade-icon.c + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisad3.o: ./palisade.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ pattern.o: ./pattern.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ pattern-icon.o: icons/pattern-icon.c $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -pattern5.o: ./pattern.c ./puzzles.h +pattern7.o: ./pattern.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +pattern4.o: ./pattern.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@ pattern2.o: ./pattern.c ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ pearl.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h @@ -520,6 +559,12 @@ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ towers2.o: ./towers.c ./puzzles.h ./latin.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +tracks.o: ./tracks.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +tracks-icon.o: icons/tracks-icon.c + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +tracks3.o: ./tracks.c ./puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ tree234.o: ./tree234.c ./tree234.h ./puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ twiddle.o: ./twiddle.c ./puzzles.h diff -Nru sgt-puzzles-20140928.r10274/Makefile.osx sgt-puzzles-20160429.b31155b/Makefile.osx --- sgt-puzzles-20140928.r10274/Makefile.osx 2014-09-29 00:35:53.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/Makefile.osx 2016-04-29 00:37:35.000000000 +0000 @@ -7,11 +7,12 @@ CFLAGS = -O2 -Wall -Werror -g -I./ -Iicons/ LDFLAGS = -framework Cocoa -all: Puzzles fillingsolver galaxiespicture galaxiessolver keensolver \ - latincheck lightupsolver loopysolver magnetssolver mapsolver \ - mineobfusc obfusc patternsolver pearlbench signpostsolver \ - singlessolver slantsolver solosolver tentssolver \ - towerssolver unequalsolver unrulysolver +all: Puzzles fifteensolver fillingsolver galaxiespicture galaxiessolver \ + keensolver latincheck lightupsolver loopysolver \ + magnetssolver mapsolver mineobfusc obfusc patternpicture \ + patternsolver pearlbench signpostsolver singlessolver \ + slantsolver solosolver tentssolver towerssolver \ + unequalsolver unrulysolver Puzzles_extra = Puzzles.app/Contents/Resources/Help/index.html Puzzles.app/Contents/Resources/Help/index.html: \ Puzzles.app/Contents/Resources/Help osx-help.but puzzles.but @@ -56,33 +57,35 @@ Puzzles.i386.bin: blackbo3.i386.o bridges3.i386.o combi.i386.o cube3.i386.o \ divvy.i386.o dominos3.i386.o drawing.i386.o dsf.i386.o \ - fifteen3.i386.o filling5.i386.o flip3.i386.o galaxie7.i386.o \ - grid.i386.o guess3.i386.o inertia3.i386.o keen5.i386.o \ - latin.i386.o laydomino.i386.o lightup5.i386.o list.i386.o \ - loopgen.i386.o loopy5.i386.o magnets5.i386.o malloc.i386.o \ - map5.i386.o maxflow.i386.o midend.i386.o mines5.i386.o \ - misc.i386.o net3.i386.o netslid3.i386.o osx.i386.o \ - pattern5.i386.o pearl5.i386.o pegs3.i386.o penrose.i386.o \ - random.i386.o range3.i386.o rect3.i386.o samegam3.i386.o \ - signpos5.i386.o singles5.i386.o sixteen3.i386.o \ - slant5.i386.o solo5.i386.o tdq.i386.o tents5.i386.o \ - towers5.i386.o tree234.i386.o twiddle3.i386.o undead3.i386.o \ + fifteen5.i386.o filling5.i386.o findloop.i386.o flip3.i386.o \ + flood3.i386.o galaxie7.i386.o grid.i386.o guess3.i386.o \ + inertia3.i386.o keen5.i386.o latin.i386.o laydomino.i386.o \ + lightup5.i386.o list.i386.o loopgen.i386.o loopy5.i386.o \ + magnets5.i386.o malloc.i386.o map5.i386.o maxflow.i386.o \ + midend.i386.o mines5.i386.o misc.i386.o net3.i386.o \ + netslid3.i386.o osx.i386.o palisad3.i386.o pattern7.i386.o \ + pearl5.i386.o pegs3.i386.o penrose.i386.o random.i386.o \ + range3.i386.o rect3.i386.o samegam3.i386.o signpos5.i386.o \ + singles5.i386.o sixteen3.i386.o slant5.i386.o solo5.i386.o \ + tdq.i386.o tents5.i386.o towers5.i386.o tracks3.i386.o \ + tree234.i386.o twiddle3.i386.o undead3.i386.o \ unequal5.i386.o unruly5.i386.o untangl3.i386.o \ version.i386.o $(CC) -arch i386 -mmacosx-version-min=10.4 $(LDFLAGS) -o $@ \ blackbo3.i386.o bridges3.i386.o combi.i386.o cube3.i386.o \ divvy.i386.o dominos3.i386.o drawing.i386.o dsf.i386.o \ - fifteen3.i386.o filling5.i386.o flip3.i386.o galaxie7.i386.o \ - grid.i386.o guess3.i386.o inertia3.i386.o keen5.i386.o \ - latin.i386.o laydomino.i386.o lightup5.i386.o list.i386.o \ - loopgen.i386.o loopy5.i386.o magnets5.i386.o malloc.i386.o \ - map5.i386.o maxflow.i386.o midend.i386.o mines5.i386.o \ - misc.i386.o net3.i386.o netslid3.i386.o osx.i386.o \ - pattern5.i386.o pearl5.i386.o pegs3.i386.o penrose.i386.o \ - random.i386.o range3.i386.o rect3.i386.o samegam3.i386.o \ - signpos5.i386.o singles5.i386.o sixteen3.i386.o \ - slant5.i386.o solo5.i386.o tdq.i386.o tents5.i386.o \ - towers5.i386.o tree234.i386.o twiddle3.i386.o undead3.i386.o \ + fifteen5.i386.o filling5.i386.o findloop.i386.o flip3.i386.o \ + flood3.i386.o galaxie7.i386.o grid.i386.o guess3.i386.o \ + inertia3.i386.o keen5.i386.o latin.i386.o laydomino.i386.o \ + lightup5.i386.o list.i386.o loopgen.i386.o loopy5.i386.o \ + magnets5.i386.o malloc.i386.o map5.i386.o maxflow.i386.o \ + midend.i386.o mines5.i386.o misc.i386.o net3.i386.o \ + netslid3.i386.o osx.i386.o palisad3.i386.o pattern7.i386.o \ + pearl5.i386.o pegs3.i386.o penrose.i386.o random.i386.o \ + range3.i386.o rect3.i386.o samegam3.i386.o signpos5.i386.o \ + singles5.i386.o sixteen3.i386.o slant5.i386.o solo5.i386.o \ + tdq.i386.o tents5.i386.o towers5.i386.o tracks3.i386.o \ + tree234.i386.o twiddle3.i386.o undead3.i386.o \ unequal5.i386.o unruly5.i386.o untangl3.i386.o \ version.i386.o @@ -90,6 +93,15 @@ Puzzles.i386.bin $(LIPO) -create Puzzles.i386.bin -output $@ +fifteensolver.i386: fifteen2.i386.o malloc.i386.o misc.i386.o nullfe.i386.o \ + random.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + fifteen2.i386.o malloc.i386.o misc.i386.o nullfe.i386.o \ + random.i386.o + +fifteensolver: fifteensolver.i386 + $(LIPO) -create fifteensolver.i386 -output $@ + fillingsolver.i386: dsf.i386.o filling2.i386.o malloc.i386.o misc.i386.o \ nullfe.i386.o random.i386.o $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ @@ -193,6 +205,15 @@ obfusc: obfusc.i386 $(LIPO) -create obfusc.i386 -output $@ +patternpicture.i386: malloc.i386.o misc.i386.o nullfe.i386.o pattern4.i386.o \ + random.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + malloc.i386.o misc.i386.o nullfe.i386.o pattern4.i386.o \ + random.i386.o + +patternpicture: patternpicture.i386 + $(LIPO) -create patternpicture.i386 -output $@ + patternsolver.i386: malloc.i386.o misc.i386.o nullfe.i386.o pattern2.i386.o \ random.i386.o $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ @@ -233,11 +254,11 @@ singlessolver: singlessolver.i386 $(LIPO) -create singlessolver.i386 -output $@ -slantsolver.i386: dsf.i386.o malloc.i386.o misc.i386.o nullfe.i386.o \ - random.i386.o slant2.i386.o +slantsolver.i386: dsf.i386.o findloop.i386.o malloc.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o slant2.i386.o $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ - dsf.i386.o malloc.i386.o misc.i386.o nullfe.i386.o \ - random.i386.o slant2.i386.o + dsf.i386.o findloop.i386.o malloc.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o slant2.i386.o slantsolver: slantsolver.i386 $(LIPO) -create slantsolver.i386 -output $@ @@ -323,8 +344,10 @@ $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ fifteen-icon.i386.o: icons/fifteen-icon.c $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -fifteen3.i386.o: ./fifteen.c ./puzzles.h +fifteen5.i386.o: ./fifteen.c ./puzzles.h $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +fifteen2.i386.o: ./fifteen.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ filling.i386.o: ./filling.c ./puzzles.h $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ filling-icon.i386.o: icons/filling-icon.c @@ -333,12 +356,20 @@ $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ filling2.i386.o: ./filling.c ./puzzles.h $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +findloop.i386.o: ./findloop.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ flip.i386.o: ./flip.c ./puzzles.h ./tree234.h $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ flip-icon.i386.o: icons/flip-icon.c $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ flip3.i386.o: ./flip.c ./puzzles.h ./tree234.h $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +flood.i386.o: ./flood.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +flood-icon.i386.o: icons/flood-icon.c + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +flood3.i386.o: ./flood.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ galaxies.i386.o: ./galaxies.c ./puzzles.h $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ galaxies-icon.i386.o: icons/galaxies-icon.c @@ -455,12 +486,20 @@ $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ osx.i386.o: ./osx.m ./puzzles.h $(CC) -arch i386 -mmacosx-version-min=10.4 -x objective-c $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisade.i386.o: ./palisade.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisade-icon.i386.o: icons/palisade-icon.c + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisad3.i386.o: ./palisade.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ pattern.i386.o: ./pattern.c ./puzzles.h $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ pattern-icon.i386.o: icons/pattern-icon.c $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ -pattern5.i386.o: ./pattern.c ./puzzles.h +pattern7.i386.o: ./pattern.c ./puzzles.h $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +pattern4.i386.o: ./pattern.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@ pattern2.i386.o: ./pattern.c ./puzzles.h $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ pearl.i386.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h @@ -559,6 +598,12 @@ $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ towers2.i386.o: ./towers.c ./puzzles.h ./latin.h $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +tracks.i386.o: ./tracks.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +tracks-icon.i386.o: icons/tracks-icon.c + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +tracks3.i386.o: ./tracks.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ tree234.i386.o: ./tree234.c ./tree234.h ./puzzles.h $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ twiddle.i386.o: ./twiddle.c ./puzzles.h @@ -603,5 +648,5 @@ $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ clean: - rm -f *.o *.dmg fillingsolver fillingsolver.i386 galaxiespicture galaxiespicture.i386 galaxiessolver galaxiessolver.i386 keensolver keensolver.i386 latincheck latincheck.i386 lightupsolver lightupsolver.i386 loopysolver loopysolver.i386 magnetssolver magnetssolver.i386 mapsolver mapsolver.i386 mineobfusc mineobfusc.i386 obfusc obfusc.i386 patternsolver patternsolver.i386 pearlbench pearlbench.i386 signpostsolver signpostsolver.i386 singlessolver singlessolver.i386 slantsolver slantsolver.i386 solosolver solosolver.i386 tentssolver tentssolver.i386 towerssolver towerssolver.i386 unequalsolver unequalsolver.i386 unrulysolver unrulysolver.i386 + rm -f *.o *.dmg fifteensolver fifteensolver.i386 fillingsolver fillingsolver.i386 galaxiespicture galaxiespicture.i386 galaxiessolver galaxiessolver.i386 keensolver keensolver.i386 latincheck latincheck.i386 lightupsolver lightupsolver.i386 loopysolver loopysolver.i386 magnetssolver magnetssolver.i386 mapsolver mapsolver.i386 mineobfusc mineobfusc.i386 obfusc obfusc.i386 patternpicture patternpicture.i386 patternsolver patternsolver.i386 pearlbench pearlbench.i386 signpostsolver signpostsolver.i386 singlessolver singlessolver.i386 slantsolver slantsolver.i386 solosolver solosolver.i386 tentssolver tentssolver.i386 towerssolver towerssolver.i386 unequalsolver unequalsolver.i386 unrulysolver unrulysolver.i386 rm -rf *.app diff -Nru sgt-puzzles-20140928.r10274/Makefile.vc sgt-puzzles-20160429.b31155b/Makefile.vc --- sgt-puzzles-20140928.r10274/Makefile.vc 2014-09-29 00:35:53.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/Makefile.vc 2016-04-29 00:37:35.000000000 +0000 @@ -11,29 +11,31 @@ CFLAGS = /nologo /W3 /O1 /D_WINDOWS /D_WIN32_WINDOWS=0x401 /DWINVER=0x401 /I. LFLAGS = /incremental:no /fixed -all: blackbox.exe bridges.exe cube.exe dominosa.exe fifteen.exe filling.exe \ - fillingsolver.exe flip.exe galaxies.exe galaxiespicture.exe \ +all: blackbox.exe bridges.exe cube.exe dominosa.exe fifteen.exe \ + fifteensolver.exe filling.exe fillingsolver.exe flip.exe \ + flood.exe galaxies.exe galaxiespicture.exe \ galaxiessolver.exe guess.exe inertia.exe keen.exe \ keensolver.exe latincheck.exe lightup.exe lightupsolver.exe \ loopy.exe loopysolver.exe magnets.exe magnetssolver.exe \ map.exe mapsolver.exe mineobfusc.exe mines.exe netgame.exe \ - netslide.exe nullgame.exe pattern.exe patternsolver.exe \ - pearl.exe pearlbench.exe pegs.exe puzzles.exe range.exe \ - rect.exe samegame.exe signpost.exe signpostsolver.exe \ - singles.exe singlessolver.exe sixteen.exe slant.exe \ - slantsolver.exe solo.exe solosolver.exe tents.exe \ - tentssolver.exe towers.exe towerssolver.exe twiddle.exe \ - undead.exe unequal.exe unequalsolver.exe unruly.exe \ - unrulysolver.exe untangle.exe + netslide.exe nullgame.exe palisade.exe pattern.exe \ + patternpicture.exe patternsolver.exe pearl.exe \ + pearlbench.exe pegs.exe puzzles.exe range.exe rect.exe \ + samegame.exe signpost.exe signpostsolver.exe singles.exe \ + singlessolver.exe sixteen.exe slant.exe slantsolver.exe \ + solo.exe solosolver.exe tents.exe tentssolver.exe towers.exe \ + towerssolver.exe tracks.exe twiddle.exe undead.exe \ + unequal.exe unequalsolver.exe unruly.exe unrulysolver.exe \ + untangle.exe blackbox.exe: blackbox.obj blackbox.res drawing.obj malloc.obj midend.obj \ misc.obj printing.obj random.obj version.obj windows.obj \ blackbox.rsp link $(LFLAGS) -out:blackbox.exe -map:blackbox.map @blackbox.rsp -bridges.exe: bridges.obj bridges.res drawing.obj dsf.obj malloc.obj \ - midend.obj misc.obj printing.obj random.obj version.obj \ - windows.obj bridges.rsp +bridges.exe: bridges.obj bridges.res drawing.obj dsf.obj findloop.obj \ + malloc.obj midend.obj misc.obj printing.obj random.obj \ + version.obj windows.obj bridges.rsp link $(LFLAGS) -out:bridges.exe -map:bridges.map @bridges.rsp cube.exe: cube.obj cube.res drawing.obj malloc.obj midend.obj misc.obj \ @@ -50,6 +52,10 @@ fifteen.rsp link $(LFLAGS) -out:fifteen.exe -map:fifteen.map @fifteen.rsp +fifteensolver.exe: fifteen2.obj malloc.obj misc.obj nullfe.obj random.obj \ + fifteensolver.rsp + link $(LFLAGS) -out:fifteensolver.exe -map:fifteensolver.map @fifteensolver.rsp + filling.exe: drawing.obj dsf.obj filling.obj filling.res malloc.obj \ midend.obj misc.obj printing.obj random.obj version.obj \ windows.obj filling.rsp @@ -64,6 +70,10 @@ flip.rsp link $(LFLAGS) -out:flip.exe -map:flip.map @flip.rsp +flood.exe: drawing.obj flood.obj flood.res malloc.obj midend.obj misc.obj \ + printing.obj random.obj version.obj windows.obj flood.rsp + link $(LFLAGS) -out:flood.exe -map:flood.map @flood.rsp + galaxies.exe: drawing.obj dsf.obj galaxies.obj galaxies.res malloc.obj \ midend.obj misc.obj printing.obj random.obj version.obj \ windows.obj galaxies.rsp @@ -144,9 +154,9 @@ mines.rsp link $(LFLAGS) -out:mines.exe -map:mines.map @mines.rsp -netgame.exe: drawing.obj dsf.obj malloc.obj midend.obj misc.obj net.obj \ - net.res printing.obj random.obj tree234.obj version.obj \ - windows.obj netgame.rsp +netgame.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \ + net.obj net.res printing.obj random.obj tree234.obj \ + version.obj windows.obj netgame.rsp link $(LFLAGS) -out:netgame.exe -map:netgame.map @netgame.rsp netslide.exe: drawing.obj malloc.obj midend.obj misc.obj netslide.obj \ @@ -159,11 +169,20 @@ nullgame.rsp link $(LFLAGS) -out:nullgame.exe -map:nullgame.map @nullgame.rsp +palisade.exe: divvy.obj drawing.obj dsf.obj malloc.obj midend.obj misc.obj \ + palisade.obj palisade.res printing.obj random.obj \ + version.obj windows.obj palisade.rsp + link $(LFLAGS) -out:palisade.exe -map:palisade.map @palisade.rsp + pattern.exe: drawing.obj malloc.obj midend.obj misc.obj pattern.obj \ pattern.res printing.obj random.obj version.obj windows.obj \ pattern.rsp link $(LFLAGS) -out:pattern.exe -map:pattern.map @pattern.rsp +patternpicture.exe: malloc.obj misc.obj nullfe.obj pattern4.obj random.obj \ + patternpicture.rsp + link $(LFLAGS) -out:patternpicture.exe -map:patternpicture.map @patternpicture.rsp + patternsolver.exe: malloc.obj misc.obj nullfe.obj pattern2.obj random.obj \ patternsolver.rsp link $(LFLAGS) -out:patternsolver.exe -map:patternsolver.map @patternsolver.rsp @@ -185,18 +204,18 @@ link $(LFLAGS) -out:pegs.exe -map:pegs.map @pegs.rsp puzzles.exe: blackbo3.obj bridges3.obj combi.obj cube3.obj divvy.obj \ - dominos3.obj drawing.obj dsf.obj fifteen3.obj filling5.obj \ - flip3.obj galaxie7.obj grid.obj guess3.obj inertia3.obj \ - keen5.obj latin.obj laydomino.obj lightup5.obj list.obj \ - loopgen.obj loopy5.obj magnets5.obj malloc.obj map5.obj \ - maxflow.obj midend.obj mines5.obj misc.obj net3.obj \ - netslid3.obj noicon.res pattern5.obj pearl5.obj pegs3.obj \ - penrose.obj printing.obj random.obj range3.obj rect3.obj \ - samegam3.obj signpos5.obj singles5.obj sixteen3.obj \ - slant5.obj solo5.obj tdq.obj tents5.obj towers5.obj \ - tree234.obj twiddle3.obj undead3.obj unequal5.obj \ - unruly5.obj untangl3.obj version.obj windows1.obj \ - puzzles.rsp + dominos3.obj drawing.obj dsf.obj fifteen5.obj filling5.obj \ + findloop.obj flip3.obj flood3.obj galaxie7.obj grid.obj \ + guess3.obj inertia3.obj keen5.obj latin.obj laydomino.obj \ + lightup5.obj list.obj loopgen.obj loopy5.obj magnets5.obj \ + malloc.obj map5.obj maxflow.obj midend.obj mines5.obj \ + misc.obj net3.obj netslid3.obj noicon.res palisad3.obj \ + pattern7.obj pearl5.obj pegs3.obj penrose.obj printing.obj \ + random.obj range3.obj rect3.obj samegam3.obj signpos5.obj \ + singles5.obj sixteen3.obj slant5.obj solo5.obj tdq.obj \ + tents5.obj towers5.obj tracks3.obj tree234.obj twiddle3.obj \ + undead3.obj unequal5.obj unruly5.obj untangl3.obj \ + version.obj windows1.obj puzzles.rsp link $(LFLAGS) -out:puzzles.exe -map:puzzles.map @puzzles.rsp range.exe: drawing.obj dsf.obj malloc.obj midend.obj misc.obj printing.obj \ @@ -237,13 +256,13 @@ sixteen.rsp link $(LFLAGS) -out:sixteen.exe -map:sixteen.map @sixteen.rsp -slant.exe: drawing.obj dsf.obj malloc.obj midend.obj misc.obj printing.obj \ - random.obj slant.obj slant.res version.obj windows.obj \ - slant.rsp +slant.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \ + printing.obj random.obj slant.obj slant.res version.obj \ + windows.obj slant.rsp link $(LFLAGS) -out:slant.exe -map:slant.map @slant.rsp -slantsolver.exe: dsf.obj malloc.obj misc.obj nullfe.obj random.obj \ - slant2.obj slantsolver.rsp +slantsolver.exe: dsf.obj findloop.obj malloc.obj misc.obj nullfe.obj \ + random.obj slant2.obj slantsolver.rsp link $(LFLAGS) -out:slantsolver.exe -map:slantsolver.map @slantsolver.rsp solo.exe: divvy.obj drawing.obj dsf.obj malloc.obj midend.obj misc.obj \ @@ -273,6 +292,11 @@ random.obj towers2.obj tree234.obj towerssolver.rsp link $(LFLAGS) -out:towerssolver.exe -map:towerssolver.map @towerssolver.rsp +tracks.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \ + printing.obj random.obj tracks.obj tracks.res version.obj \ + windows.obj tracks.rsp + link $(LFLAGS) -out:tracks.exe -map:tracks.map @tracks.rsp + twiddle.exe: drawing.obj malloc.obj midend.obj misc.obj printing.obj \ random.obj twiddle.obj twiddle.res version.obj windows.obj \ twiddle.rsp @@ -316,9 +340,10 @@ bridges.rsp: $(MAKEFILE) echo /nologo /subsystem:windows > bridges.rsp echo bridges.obj bridges.res comctl32.lib comdlg32.lib >> bridges.rsp - echo drawing.obj dsf.obj gdi32.lib malloc.obj >> bridges.rsp - echo midend.obj misc.obj printing.obj random.obj >> bridges.rsp - echo user32.lib version.obj windows.obj winspool.lib >> bridges.rsp + echo drawing.obj dsf.obj findloop.obj gdi32.lib >> bridges.rsp + echo malloc.obj midend.obj misc.obj printing.obj >> bridges.rsp + echo random.obj user32.lib version.obj windows.obj >> bridges.rsp + echo winspool.lib >> bridges.rsp cube.rsp: $(MAKEFILE) echo /nologo /subsystem:windows > cube.rsp @@ -342,6 +367,11 @@ echo misc.obj printing.obj random.obj user32.lib >> fifteen.rsp echo version.obj windows.obj winspool.lib >> fifteen.rsp +fifteensolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > fifteensolver.rsp + echo fifteen2.obj malloc.obj misc.obj nullfe.obj >> fifteensolver.rsp + echo random.obj >> fifteensolver.rsp + filling.rsp: $(MAKEFILE) echo /nologo /subsystem:windows > filling.rsp echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> filling.rsp @@ -361,6 +391,13 @@ echo printing.obj random.obj tree234.obj user32.lib >> flip.rsp echo version.obj windows.obj winspool.lib >> flip.rsp +flood.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > flood.rsp + echo comctl32.lib comdlg32.lib drawing.obj flood.obj >> flood.rsp + echo flood.res gdi32.lib malloc.obj midend.obj >> flood.rsp + echo misc.obj printing.obj random.obj user32.lib >> flood.rsp + echo version.obj windows.obj winspool.lib >> flood.rsp + galaxies.rsp: $(MAKEFILE) echo /nologo /subsystem:windows > galaxies.rsp echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> galaxies.rsp @@ -476,9 +513,10 @@ netgame.rsp: $(MAKEFILE) echo /nologo /subsystem:windows > netgame.rsp echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> netgame.rsp - echo gdi32.lib malloc.obj midend.obj misc.obj net.obj >> netgame.rsp - echo net.res printing.obj random.obj tree234.obj >> netgame.rsp - echo user32.lib version.obj windows.obj winspool.lib >> netgame.rsp + echo findloop.obj gdi32.lib malloc.obj midend.obj >> netgame.rsp + echo misc.obj net.obj net.res printing.obj random.obj >> netgame.rsp + echo tree234.obj user32.lib version.obj windows.obj >> netgame.rsp + echo winspool.lib >> netgame.rsp netslide.rsp: $(MAKEFILE) echo /nologo /subsystem:windows > netslide.rsp @@ -494,6 +532,13 @@ echo nullgame.obj printing.obj random.obj user32.lib >> nullgame.rsp echo version.obj windows.obj winspool.lib >> nullgame.rsp +palisade.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > palisade.rsp + echo comctl32.lib comdlg32.lib divvy.obj drawing.obj >> palisade.rsp + echo dsf.obj gdi32.lib malloc.obj midend.obj misc.obj >> palisade.rsp + echo palisade.obj palisade.res printing.obj random.obj >> palisade.rsp + echo user32.lib version.obj windows.obj winspool.lib >> palisade.rsp + pattern.rsp: $(MAKEFILE) echo /nologo /subsystem:windows > pattern.rsp echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> pattern.rsp @@ -501,6 +546,11 @@ echo pattern.res printing.obj random.obj user32.lib >> pattern.rsp echo version.obj windows.obj winspool.lib >> pattern.rsp +patternpicture.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > patternpicture.rsp + echo malloc.obj misc.obj nullfe.obj pattern4.obj >> patternpicture.rsp + echo random.obj >> patternpicture.rsp + patternsolver.rsp: $(MAKEFILE) echo /nologo /subsystem:console > patternsolver.rsp echo malloc.obj misc.obj nullfe.obj pattern2.obj >> patternsolver.rsp @@ -532,17 +582,18 @@ echo /nologo /subsystem:windows > puzzles.rsp echo blackbo3.obj bridges3.obj combi.obj comctl32.lib >> puzzles.rsp echo comdlg32.lib cube3.obj divvy.obj dominos3.obj >> puzzles.rsp - echo drawing.obj dsf.obj fifteen3.obj filling5.obj >> puzzles.rsp - echo flip3.obj galaxie7.obj gdi32.lib grid.obj >> puzzles.rsp - echo guess3.obj inertia3.obj keen5.obj latin.obj >> puzzles.rsp - echo laydomino.obj lightup5.obj list.obj loopgen.obj >> puzzles.rsp - echo loopy5.obj magnets5.obj malloc.obj map5.obj >> puzzles.rsp - echo maxflow.obj midend.obj mines5.obj misc.obj >> puzzles.rsp - echo net3.obj netslid3.obj noicon.res pattern5.obj >> puzzles.rsp - echo pearl5.obj pegs3.obj penrose.obj printing.obj >> puzzles.rsp - echo random.obj range3.obj rect3.obj samegam3.obj >> puzzles.rsp - echo signpos5.obj singles5.obj sixteen3.obj slant5.obj >> puzzles.rsp - echo solo5.obj tdq.obj tents5.obj towers5.obj >> puzzles.rsp + echo drawing.obj dsf.obj fifteen5.obj filling5.obj >> puzzles.rsp + echo findloop.obj flip3.obj flood3.obj galaxie7.obj >> puzzles.rsp + echo gdi32.lib grid.obj guess3.obj inertia3.obj >> puzzles.rsp + echo keen5.obj latin.obj laydomino.obj lightup5.obj >> puzzles.rsp + echo list.obj loopgen.obj loopy5.obj magnets5.obj >> puzzles.rsp + echo malloc.obj map5.obj maxflow.obj midend.obj >> puzzles.rsp + echo mines5.obj misc.obj net3.obj netslid3.obj >> puzzles.rsp + echo noicon.res palisad3.obj pattern7.obj pearl5.obj >> puzzles.rsp + echo pegs3.obj penrose.obj printing.obj random.obj >> puzzles.rsp + echo range3.obj rect3.obj samegam3.obj signpos5.obj >> puzzles.rsp + echo singles5.obj sixteen3.obj slant5.obj solo5.obj >> puzzles.rsp + echo tdq.obj tents5.obj towers5.obj tracks3.obj >> puzzles.rsp echo tree234.obj twiddle3.obj undead3.obj unequal5.obj >> puzzles.rsp echo unruly5.obj untangl3.obj user32.lib version.obj >> puzzles.rsp echo windows1.obj winspool.lib >> puzzles.rsp @@ -603,14 +654,15 @@ slant.rsp: $(MAKEFILE) echo /nologo /subsystem:windows > slant.rsp echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> slant.rsp - echo gdi32.lib malloc.obj midend.obj misc.obj >> slant.rsp - echo printing.obj random.obj slant.obj slant.res >> slant.rsp - echo user32.lib version.obj windows.obj winspool.lib >> slant.rsp + echo findloop.obj gdi32.lib malloc.obj midend.obj >> slant.rsp + echo misc.obj printing.obj random.obj slant.obj >> slant.rsp + echo slant.res user32.lib version.obj windows.obj >> slant.rsp + echo winspool.lib >> slant.rsp slantsolver.rsp: $(MAKEFILE) echo /nologo /subsystem:console > slantsolver.rsp - echo dsf.obj malloc.obj misc.obj nullfe.obj random.obj >> slantsolver.rsp - echo slant2.obj >> slantsolver.rsp + echo dsf.obj findloop.obj malloc.obj misc.obj >> slantsolver.rsp + echo nullfe.obj random.obj slant2.obj >> slantsolver.rsp solo.rsp: $(MAKEFILE) echo /nologo /subsystem:windows > solo.rsp @@ -650,6 +702,14 @@ echo latin6.obj malloc.obj maxflow.obj misc.obj >> towerssolver.rsp echo nullfe.obj random.obj towers2.obj tree234.obj >> towerssolver.rsp +tracks.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > tracks.rsp + echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> tracks.rsp + echo findloop.obj gdi32.lib malloc.obj midend.obj >> tracks.rsp + echo misc.obj printing.obj random.obj tracks.obj >> tracks.rsp + echo tracks.res user32.lib version.obj windows.obj >> tracks.rsp + echo winspool.lib >> tracks.rsp + twiddle.rsp: $(MAKEFILE) echo /nologo /subsystem:windows > twiddle.rsp echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> twiddle.rsp @@ -744,8 +804,10 @@ cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c icons\fifteen-icon.c /Fofifteen-icon.obj fifteen.res: icons\fifteen.rc .\puzzles.rc2 icons\fifteen.ico .\resource.h rc $(FWHACK) $(RCFL) -r -DWIN32 -D_WIN32 -DWINVER=0x0400 -fofifteen.res icons\fifteen.rc -fifteen3.obj: .\fifteen.c .\puzzles.h - cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\fifteen.c /Fofifteen3.obj +fifteen5.obj: .\fifteen.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\fifteen.c /Fofifteen5.obj +fifteen2.obj: .\fifteen.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\fifteen.c /Fofifteen2.obj filling.obj: .\filling.c .\puzzles.h cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\filling.c /Fofilling.obj filling-icon.obj: icons\filling-icon.c @@ -756,6 +818,8 @@ cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\filling.c /Fofilling5.obj filling2.obj: .\filling.c .\puzzles.h cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\filling.c /Fofilling2.obj +findloop.obj: .\findloop.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\findloop.c /Fofindloop.obj flip.obj: .\flip.c .\puzzles.h .\tree234.h cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\flip.c /Foflip.obj flip-icon.obj: icons\flip-icon.c @@ -764,6 +828,14 @@ rc $(FWHACK) $(RCFL) -r -DWIN32 -D_WIN32 -DWINVER=0x0400 -foflip.res icons\flip.rc flip3.obj: .\flip.c .\puzzles.h .\tree234.h cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\flip.c /Foflip3.obj +flood.obj: .\flood.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\flood.c /Foflood.obj +flood-icon.obj: icons\flood-icon.c + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c icons\flood-icon.c /Foflood-icon.obj +flood.res: icons\flood.rc .\puzzles.rc2 icons\flood.ico .\resource.h + rc $(FWHACK) $(RCFL) -r -DWIN32 -D_WIN32 -DWINVER=0x0400 -foflood.res icons\flood.rc +flood3.obj: .\flood.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\flood.c /Foflood3.obj galaxies.obj: .\galaxies.c .\puzzles.h cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\galaxies.c /Fogalaxies.obj galaxies-icon.obj: icons\galaxies-icon.c @@ -906,14 +978,25 @@ cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\obfusc.c /Foobfusc.obj osx.obj: .\osx.m .\puzzles.h cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\osx.m /Foosx.obj +palisade.obj: .\palisade.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\palisade.c /Fopalisade.obj +palisade-icon.obj: icons\palisade-icon.c + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c icons\palisade-icon.c /Fopalisade-icon.obj +palisade.res: icons\palisade.rc .\puzzles.rc2 icons\palisade.ico \ + .\resource.h + rc $(FWHACK) $(RCFL) -r -DWIN32 -D_WIN32 -DWINVER=0x0400 -fopalisade.res icons\palisade.rc +palisad3.obj: .\palisade.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\palisade.c /Fopalisad3.obj pattern.obj: .\pattern.c .\puzzles.h cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\pattern.c /Fopattern.obj pattern-icon.obj: icons\pattern-icon.c cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c icons\pattern-icon.c /Fopattern-icon.obj pattern.res: icons\pattern.rc .\puzzles.rc2 icons\pattern.ico .\resource.h rc $(FWHACK) $(RCFL) -r -DWIN32 -D_WIN32 -DWINVER=0x0400 -fopattern.res icons\pattern.rc -pattern5.obj: .\pattern.c .\puzzles.h - cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\pattern.c /Fopattern5.obj +pattern7.obj: .\pattern.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\pattern.c /Fopattern7.obj +pattern4.obj: .\pattern.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_PICTURE_GENERATOR /c .\pattern.c /Fopattern4.obj pattern2.obj: .\pattern.c .\puzzles.h cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\pattern.c /Fopattern2.obj pearl.obj: .\pearl.c .\puzzles.h .\grid.h .\loopgen.h @@ -1038,6 +1121,14 @@ cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\towers.c /Fotowers5.obj towers2.obj: .\towers.c .\puzzles.h .\latin.h cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\towers.c /Fotowers2.obj +tracks.obj: .\tracks.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tracks.c /Fotracks.obj +tracks-icon.obj: icons\tracks-icon.c + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c icons\tracks-icon.c /Fotracks-icon.obj +tracks.res: icons\tracks.rc .\puzzles.rc2 icons\tracks.ico .\resource.h + rc $(FWHACK) $(RCFL) -r -DWIN32 -D_WIN32 -DWINVER=0x0400 -fotracks.res icons\tracks.rc +tracks3.obj: .\tracks.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\tracks.c /Fotracks3.obj tree234.obj: .\tree234.c .\tree234.h .\puzzles.h cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tree234.c /Fotree234.obj twiddle.obj: .\twiddle.c .\puzzles.h diff -Nru sgt-puzzles-20140928.r10274/Makefile.wce sgt-puzzles-20160429.b31155b/Makefile.wce --- sgt-puzzles-20140928.r10274/Makefile.wce 2014-09-29 00:35:53.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/Makefile.wce 2016-04-29 00:37:35.000000000 +0000 @@ -38,22 +38,22 @@ /d "NDEBUG" /d "UNICODE" /d "_UNICODE" all: blackbox.exe bridges.exe cube.exe dominosa.exe fifteen.exe filling.exe \ - flip.exe galaxies.exe guess.exe inertia.exe keen.exe \ - lightup.exe loopy.exe magnets.exe map.exe mines.exe \ - netgame.exe netslide.exe nullgame.exe pattern.exe pearl.exe \ - pegs.exe puzzles.exe range.exe rect.exe samegame.exe \ - signpost.exe singles.exe sixteen.exe slant.exe solo.exe \ - tents.exe towers.exe twiddle.exe undead.exe unequal.exe \ - unruly.exe untangle.exe + flip.exe flood.exe galaxies.exe guess.exe inertia.exe \ + keen.exe lightup.exe loopy.exe magnets.exe map.exe mines.exe \ + netgame.exe netslide.exe nullgame.exe palisade.exe \ + pattern.exe pearl.exe pegs.exe puzzles.exe range.exe \ + rect.exe samegame.exe signpost.exe singles.exe sixteen.exe \ + slant.exe solo.exe tents.exe towers.exe tracks.exe \ + twiddle.exe undead.exe unequal.exe unruly.exe untangle.exe blackbox.exe: blackbox.obj blackbox.res drawing.obj malloc.obj midend.obj \ misc.obj printing.obj random.obj version.obj windows.obj \ blackbox.rsp link $(LFLAGS) -out:blackbox.exe -map:blackbox.map @blackbox.rsp -bridges.exe: bridges.obj bridges.res drawing.obj dsf.obj malloc.obj \ - midend.obj misc.obj printing.obj random.obj version.obj \ - windows.obj bridges.rsp +bridges.exe: bridges.obj bridges.res drawing.obj dsf.obj findloop.obj \ + malloc.obj midend.obj misc.obj printing.obj random.obj \ + version.obj windows.obj bridges.rsp link $(LFLAGS) -out:bridges.exe -map:bridges.map @bridges.rsp cube.exe: cube.obj cube.res drawing.obj malloc.obj midend.obj misc.obj \ @@ -80,6 +80,10 @@ flip.rsp link $(LFLAGS) -out:flip.exe -map:flip.map @flip.rsp +flood.exe: drawing.obj flood.obj flood.res malloc.obj midend.obj misc.obj \ + printing.obj random.obj version.obj windows.obj flood.rsp + link $(LFLAGS) -out:flood.exe -map:flood.map @flood.rsp + galaxies.exe: drawing.obj dsf.obj galaxies.obj galaxies.res malloc.obj \ midend.obj misc.obj printing.obj random.obj version.obj \ windows.obj galaxies.rsp @@ -123,9 +127,9 @@ mines.rsp link $(LFLAGS) -out:mines.exe -map:mines.map @mines.rsp -netgame.exe: drawing.obj dsf.obj malloc.obj midend.obj misc.obj net.obj \ - net.res printing.obj random.obj tree234.obj version.obj \ - windows.obj netgame.rsp +netgame.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \ + net.obj net.res printing.obj random.obj tree234.obj \ + version.obj windows.obj netgame.rsp link $(LFLAGS) -out:netgame.exe -map:netgame.map @netgame.rsp netslide.exe: drawing.obj malloc.obj midend.obj misc.obj netslide.obj \ @@ -138,6 +142,11 @@ nullgame.rsp link $(LFLAGS) -out:nullgame.exe -map:nullgame.map @nullgame.rsp +palisade.exe: divvy.obj drawing.obj dsf.obj malloc.obj midend.obj misc.obj \ + palisade.obj palisade.res printing.obj random.obj \ + version.obj windows.obj palisade.rsp + link $(LFLAGS) -out:palisade.exe -map:palisade.map @palisade.rsp + pattern.exe: drawing.obj malloc.obj midend.obj misc.obj pattern.obj \ pattern.res printing.obj random.obj version.obj windows.obj \ pattern.rsp @@ -155,18 +164,18 @@ link $(LFLAGS) -out:pegs.exe -map:pegs.map @pegs.rsp puzzles.exe: blackbo3.obj bridges3.obj combi.obj cube3.obj divvy.obj \ - dominos3.obj drawing.obj dsf.obj fifteen3.obj filling5.obj \ - flip3.obj galaxie7.obj grid.obj guess3.obj inertia3.obj \ - keen5.obj latin.obj laydomino.obj lightup5.obj list.obj \ - loopgen.obj loopy5.obj magnets5.obj malloc.obj map5.obj \ - maxflow.obj midend.obj mines5.obj misc.obj net3.obj \ - netslid3.obj noicon.res pattern5.obj pearl5.obj pegs3.obj \ - penrose.obj printing.obj random.obj range3.obj rect3.obj \ - samegam3.obj signpos5.obj singles5.obj sixteen3.obj \ - slant5.obj solo5.obj tdq.obj tents5.obj towers5.obj \ - tree234.obj twiddle3.obj undead3.obj unequal5.obj \ - unruly5.obj untangl3.obj version.obj windows1.obj \ - puzzles.rsp + dominos3.obj drawing.obj dsf.obj fifteen5.obj filling5.obj \ + findloop.obj flip3.obj flood3.obj galaxie7.obj grid.obj \ + guess3.obj inertia3.obj keen5.obj latin.obj laydomino.obj \ + lightup5.obj list.obj loopgen.obj loopy5.obj magnets5.obj \ + malloc.obj map5.obj maxflow.obj midend.obj mines5.obj \ + misc.obj net3.obj netslid3.obj noicon.res palisad3.obj \ + pattern7.obj pearl5.obj pegs3.obj penrose.obj printing.obj \ + random.obj range3.obj rect3.obj samegam3.obj signpos5.obj \ + singles5.obj sixteen3.obj slant5.obj solo5.obj tdq.obj \ + tents5.obj towers5.obj tracks3.obj tree234.obj twiddle3.obj \ + undead3.obj unequal5.obj unruly5.obj untangl3.obj \ + version.obj windows1.obj puzzles.rsp link $(LFLAGS) -out:puzzles.exe -map:puzzles.map @puzzles.rsp range.exe: drawing.obj dsf.obj malloc.obj midend.obj misc.obj printing.obj \ @@ -198,9 +207,9 @@ sixteen.rsp link $(LFLAGS) -out:sixteen.exe -map:sixteen.map @sixteen.rsp -slant.exe: drawing.obj dsf.obj malloc.obj midend.obj misc.obj printing.obj \ - random.obj slant.obj slant.res version.obj windows.obj \ - slant.rsp +slant.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \ + printing.obj random.obj slant.obj slant.res version.obj \ + windows.obj slant.rsp link $(LFLAGS) -out:slant.exe -map:slant.map @slant.rsp solo.exe: divvy.obj drawing.obj dsf.obj malloc.obj midend.obj misc.obj \ @@ -218,6 +227,11 @@ version.obj windows.obj towers.rsp link $(LFLAGS) -out:towers.exe -map:towers.map @towers.rsp +tracks.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \ + printing.obj random.obj tracks.obj tracks.res version.obj \ + windows.obj tracks.rsp + link $(LFLAGS) -out:tracks.exe -map:tracks.map @tracks.rsp + twiddle.exe: drawing.obj malloc.obj midend.obj misc.obj printing.obj \ random.obj twiddle.obj twiddle.res version.obj windows.obj \ twiddle.rsp @@ -252,8 +266,8 @@ bridges.rsp: $(MAKEFILE) echo $(BASELIBS) > bridges.rsp echo bridges.obj bridges.res drawing.obj dsf.obj >> bridges.rsp - echo malloc.obj midend.obj misc.obj printing.obj >> bridges.rsp - echo random.obj version.obj windows.obj >> bridges.rsp + echo findloop.obj malloc.obj midend.obj misc.obj >> bridges.rsp + echo printing.obj random.obj version.obj windows.obj >> bridges.rsp cube.rsp: $(MAKEFILE) echo $(BASELIBS) > cube.rsp @@ -285,6 +299,12 @@ echo midend.obj misc.obj printing.obj random.obj >> flip.rsp echo tree234.obj version.obj windows.obj >> flip.rsp +flood.rsp: $(MAKEFILE) + echo $(BASELIBS) > flood.rsp + echo drawing.obj flood.obj flood.res malloc.obj >> flood.rsp + echo midend.obj misc.obj printing.obj random.obj >> flood.rsp + echo version.obj windows.obj >> flood.rsp + galaxies.rsp: $(MAKEFILE) echo $(BASELIBS) > galaxies.rsp echo drawing.obj dsf.obj galaxies.obj galaxies.res >> galaxies.rsp @@ -343,9 +363,9 @@ netgame.rsp: $(MAKEFILE) echo $(BASELIBS) > netgame.rsp - echo drawing.obj dsf.obj malloc.obj midend.obj >> netgame.rsp - echo misc.obj net.obj net.res printing.obj random.obj >> netgame.rsp - echo tree234.obj version.obj windows.obj >> netgame.rsp + echo drawing.obj dsf.obj findloop.obj malloc.obj >> netgame.rsp + echo midend.obj misc.obj net.obj net.res printing.obj >> netgame.rsp + echo random.obj tree234.obj version.obj windows.obj >> netgame.rsp netslide.rsp: $(MAKEFILE) echo $(BASELIBS) > netslide.rsp @@ -359,6 +379,12 @@ echo noicon.res nullgame.obj printing.obj random.obj >> nullgame.rsp echo version.obj windows.obj >> nullgame.rsp +palisade.rsp: $(MAKEFILE) + echo $(BASELIBS) > palisade.rsp + echo divvy.obj drawing.obj dsf.obj malloc.obj >> palisade.rsp + echo midend.obj misc.obj palisade.obj palisade.res >> palisade.rsp + echo printing.obj random.obj version.obj windows.obj >> palisade.rsp + pattern.rsp: $(MAKEFILE) echo $(BASELIBS) > pattern.rsp echo drawing.obj malloc.obj midend.obj misc.obj >> pattern.rsp @@ -382,19 +408,20 @@ echo $(BASELIBS) > puzzles.rsp echo blackbo3.obj bridges3.obj combi.obj cube3.obj >> puzzles.rsp echo divvy.obj dominos3.obj drawing.obj dsf.obj >> puzzles.rsp - echo fifteen3.obj filling5.obj flip3.obj galaxie7.obj >> puzzles.rsp - echo grid.obj guess3.obj inertia3.obj keen5.obj >> puzzles.rsp - echo latin.obj laydomino.obj lightup5.obj list.obj >> puzzles.rsp - echo loopgen.obj loopy5.obj magnets5.obj malloc.obj >> puzzles.rsp - echo map5.obj maxflow.obj midend.obj mines5.obj >> puzzles.rsp - echo misc.obj net3.obj netslid3.obj noicon.res >> puzzles.rsp - echo pattern5.obj pearl5.obj pegs3.obj penrose.obj >> puzzles.rsp - echo printing.obj random.obj range3.obj rect3.obj >> puzzles.rsp - echo samegam3.obj signpos5.obj singles5.obj >> puzzles.rsp - echo sixteen3.obj slant5.obj solo5.obj tdq.obj >> puzzles.rsp - echo tents5.obj towers5.obj tree234.obj twiddle3.obj >> puzzles.rsp - echo undead3.obj unequal5.obj unruly5.obj untangl3.obj >> puzzles.rsp - echo version.obj windows1.obj >> puzzles.rsp + echo fifteen5.obj filling5.obj findloop.obj flip3.obj >> puzzles.rsp + echo flood3.obj galaxie7.obj grid.obj guess3.obj >> puzzles.rsp + echo inertia3.obj keen5.obj latin.obj laydomino.obj >> puzzles.rsp + echo lightup5.obj list.obj loopgen.obj loopy5.obj >> puzzles.rsp + echo magnets5.obj malloc.obj map5.obj maxflow.obj >> puzzles.rsp + echo midend.obj mines5.obj misc.obj net3.obj >> puzzles.rsp + echo netslid3.obj noicon.res palisad3.obj pattern7.obj >> puzzles.rsp + echo pearl5.obj pegs3.obj penrose.obj printing.obj >> puzzles.rsp + echo random.obj range3.obj rect3.obj samegam3.obj >> puzzles.rsp + echo signpos5.obj singles5.obj sixteen3.obj slant5.obj >> puzzles.rsp + echo solo5.obj tdq.obj tents5.obj towers5.obj >> puzzles.rsp + echo tracks3.obj tree234.obj twiddle3.obj undead3.obj >> puzzles.rsp + echo unequal5.obj unruly5.obj untangl3.obj version.obj >> puzzles.rsp + echo windows1.obj >> puzzles.rsp range.rsp: $(MAKEFILE) echo $(BASELIBS) > range.rsp @@ -435,9 +462,9 @@ slant.rsp: $(MAKEFILE) echo $(BASELIBS) > slant.rsp - echo drawing.obj dsf.obj malloc.obj midend.obj >> slant.rsp - echo misc.obj printing.obj random.obj slant.obj >> slant.rsp - echo slant.res version.obj windows.obj >> slant.rsp + echo drawing.obj dsf.obj findloop.obj malloc.obj >> slant.rsp + echo midend.obj misc.obj printing.obj random.obj >> slant.rsp + echo slant.obj slant.res version.obj windows.obj >> slant.rsp solo.rsp: $(MAKEFILE) echo $(BASELIBS) > solo.rsp @@ -458,6 +485,12 @@ echo towers.obj towers.res tree234.obj version.obj >> towers.rsp echo windows.obj >> towers.rsp +tracks.rsp: $(MAKEFILE) + echo $(BASELIBS) > tracks.rsp + echo drawing.obj dsf.obj findloop.obj malloc.obj >> tracks.rsp + echo midend.obj misc.obj printing.obj random.obj >> tracks.rsp + echo tracks.obj tracks.res version.obj windows.obj >> tracks.rsp + twiddle.rsp: $(MAKEFILE) echo $(BASELIBS) > twiddle.rsp echo drawing.obj malloc.obj midend.obj misc.obj >> twiddle.rsp @@ -537,8 +570,10 @@ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c icons\fifteen-icon.c /Fofifteen-icon.obj fifteen.res: icons\fifteen.rc .\puzzles.rc2 icons\fifteen.ico .\resource.h rc $(FWHACK) $(RCFL) -r -fofifteen.res icons\fifteen.rc -fifteen3.obj: .\fifteen.c .\puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\fifteen.c /Fofifteen3.obj +fifteen5.obj: .\fifteen.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\fifteen.c /Fofifteen5.obj +fifteen2.obj: .\fifteen.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\fifteen.c /Fofifteen2.obj filling.obj: .\filling.c .\puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\filling.c /Fofilling.obj filling-icon.obj: icons\filling-icon.c @@ -549,6 +584,8 @@ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\filling.c /Fofilling5.obj filling2.obj: .\filling.c .\puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\filling.c /Fofilling2.obj +findloop.obj: .\findloop.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\findloop.c /Fofindloop.obj flip.obj: .\flip.c .\puzzles.h .\tree234.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\flip.c /Foflip.obj flip-icon.obj: icons\flip-icon.c @@ -557,6 +594,14 @@ rc $(FWHACK) $(RCFL) -r -foflip.res icons\flip.rc flip3.obj: .\flip.c .\puzzles.h .\tree234.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\flip.c /Foflip3.obj +flood.obj: .\flood.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\flood.c /Foflood.obj +flood-icon.obj: icons\flood-icon.c + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c icons\flood-icon.c /Foflood-icon.obj +flood.res: icons\flood.rc .\puzzles.rc2 icons\flood.ico .\resource.h + rc $(FWHACK) $(RCFL) -r -foflood.res icons\flood.rc +flood3.obj: .\flood.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\flood.c /Foflood3.obj galaxies.obj: .\galaxies.c .\puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\galaxies.c /Fogalaxies.obj galaxies-icon.obj: icons\galaxies-icon.c @@ -699,14 +744,25 @@ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\obfusc.c /Foobfusc.obj osx.obj: .\osx.m .\puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\osx.m /Foosx.obj +palisade.obj: .\palisade.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\palisade.c /Fopalisade.obj +palisade-icon.obj: icons\palisade-icon.c + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c icons\palisade-icon.c /Fopalisade-icon.obj +palisade.res: icons\palisade.rc .\puzzles.rc2 icons\palisade.ico \ + .\resource.h + rc $(FWHACK) $(RCFL) -r -fopalisade.res icons\palisade.rc +palisad3.obj: .\palisade.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\palisade.c /Fopalisad3.obj pattern.obj: .\pattern.c .\puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\pattern.c /Fopattern.obj pattern-icon.obj: icons\pattern-icon.c $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c icons\pattern-icon.c /Fopattern-icon.obj pattern.res: icons\pattern.rc .\puzzles.rc2 icons\pattern.ico .\resource.h rc $(FWHACK) $(RCFL) -r -fopattern.res icons\pattern.rc -pattern5.obj: .\pattern.c .\puzzles.h - $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\pattern.c /Fopattern5.obj +pattern7.obj: .\pattern.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\pattern.c /Fopattern7.obj +pattern4.obj: .\pattern.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_PICTURE_GENERATOR /c .\pattern.c /Fopattern4.obj pattern2.obj: .\pattern.c .\puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\pattern.c /Fopattern2.obj pearl.obj: .\pearl.c .\puzzles.h .\grid.h .\loopgen.h @@ -831,6 +887,14 @@ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\towers.c /Fotowers5.obj towers2.obj: .\towers.c .\puzzles.h .\latin.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\towers.c /Fotowers2.obj +tracks.obj: .\tracks.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tracks.c /Fotracks.obj +tracks-icon.obj: icons\tracks-icon.c + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c icons\tracks-icon.c /Fotracks-icon.obj +tracks.res: icons\tracks.rc .\puzzles.rc2 icons\tracks.ico .\resource.h + rc $(FWHACK) $(RCFL) -r -fotracks.res icons\tracks.rc +tracks3.obj: .\tracks.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\tracks.c /Fotracks3.obj tree234.obj: .\tree234.c .\tree234.h .\puzzles.h $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tree234.c /Fotree234.obj twiddle.obj: .\twiddle.c .\puzzles.h diff -Nru sgt-puzzles-20140928.r10274/map.R sgt-puzzles-20160429.b31155b/map.R --- sgt-puzzles-20140928.r10274/map.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/map.R 2016-04-29 00:30:09.000000000 +0000 @@ -20,5 +20,5 @@ !end !begin >gamedesc.txt -map:map.exe:Map:Map-colouring puzzle +map:map.exe:Map:Map-colouring puzzle:Colour the map so that adjacent regions are never the same colour. !end diff -Nru sgt-puzzles-20140928.r10274/midend.c sgt-puzzles-20160429.b31155b/midend.c --- sgt-puzzles-20140928.r10274/midend.c 2013-04-11 12:51:06.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/midend.c 2016-04-29 00:30:09.000000000 +0000 @@ -355,6 +355,7 @@ void midend_new_game(midend *me) { + midend_stop_anim(me); midend_free_game(me); assert(me->nstates == 0); @@ -453,6 +454,8 @@ me->states[0].state); midend_size_new_drawstate(me); me->elapsed = 0.0F; + me->flash_pos = me->flash_time = 0.0F; + me->anim_pos = me->anim_time = 0.0F; if (me->ui) me->ourgame->free_ui(me->ui); me->ui = me->ourgame->new_ui(me->states[0].state); @@ -546,8 +549,6 @@ { game_state *s; - midend_stop_anim(me); - assert(me->statepos >= 1); if (me->statepos == 1) return; /* no point doing anything at all! */ @@ -575,7 +576,7 @@ me->ourgame->changed_state(me->ui, me->states[me->statepos-2].state, me->states[me->statepos-1].state); - me->anim_time = 0.0; + me->flash_pos = me->flash_time = 0.0F; midend_finish_move(me); midend_redraw(me); midend_set_timer(me); @@ -596,11 +597,10 @@ if (!movestr) { if (button == 'n' || button == 'N' || button == '\x0E') { - midend_stop_anim(me); midend_new_game(me); midend_redraw(me); goto done; /* never animate */ - } else if (button == 'u' || button == 'u' || + } else if (button == 'u' || button == 'U' || button == '\x1A' || button == '\x1F') { midend_stop_anim(me); type = me->states[me->statepos-1].movetype; @@ -1179,7 +1179,45 @@ newcurparams = newparams = oldparams1 = oldparams2 = NULL; if (par) { - newcurparams = me->ourgame->dup_params(me->params); + /* + * The params string may underspecify the game parameters, so + * we must first initialise newcurparams with a full set of + * params from somewhere else before we decode_params the + * input string over the top. + * + * But which set? It depends on what other data we have. + * + * If we've been given a _descriptive_ game id, then that may + * well underspecify by design, e.g. Solo game descriptions + * often start just '3x3:' without specifying one of Solo's + * difficulty settings, because it isn't necessary once a game + * has been generated (and you might not even know it, if + * you're manually transcribing a game description). In that + * situation, I've always felt that the best thing to set the + * difficulty to (for use if the user hits 'New Game' after + * pasting in that game id) is whatever it was previously set + * to. That is, we use whatever is already in me->params as + * the basis for our decoding of this input string. + * + * A random-seed based game id, however, should use the real, + * built-in default params, and not even check the + * _DEFAULT environment setting, because when people + * paste each other random seeds - whether it's two users + * arranging to generate the same game at the same time to + * race solving them, or a user sending a bug report upstream + * - the whole point is for the random game id to always be + * interpreted the same way, even if it does underspecify. + * + * A parameter string typed in on its own, with no seed _or_ + * description, gets treated the same way as a random seed, + * because again I think the most likely reason for doing that + * is to have a portable representation of a set of params. + */ + if (desc) { + newcurparams = me->ourgame->dup_params(me->params); + } else { + newcurparams = me->ourgame->default_params(); + } me->ourgame->decode_params(newcurparams, par); error = me->ourgame->validate_params(newcurparams, desc == NULL); if (error) { diff -Nru sgt-puzzles-20140928.r10274/mines.R sgt-puzzles-20160429.b31155b/mines.R --- sgt-puzzles-20140928.r10274/mines.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/mines.R 2016-04-29 00:30:09.000000000 +0000 @@ -20,5 +20,5 @@ !end !begin >gamedesc.txt -mines:mines.exe:Mines:Mine-finding puzzle +mines:mines.exe:Mines:Mine-finding puzzle:Find all the mines without treading on any of them. !end diff -Nru sgt-puzzles-20140928.r10274/missing sgt-puzzles-20160429.b31155b/missing --- sgt-puzzles-20140928.r10274/missing 2014-09-29 00:30:13.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/missing 2016-04-29 00:30:13.000000000 +0000 @@ -1,11 +1,10 @@ #! /bin/sh -# Common stub for a few missing GNU programs while installing. +# Common wrapper for a few potentially missing GNU programs. -scriptversion=2012-01-06.13; # UTC +scriptversion=2013-10-28.13; # UTC -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. # 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 @@ -26,68 +25,40 @@ # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" + echo 1>&2 "Try '$0 --help' for more information" exit 1 fi -run=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi +case $1 in -msg="missing on your system" + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - autom4te touch the output file, or create a stub one - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - yacc create \`y.tab.[ch]', if possible, from existing .[ch] + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man -Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and -\`g' are ignored when checking the name. +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. Send bug reports to ." exit $? @@ -99,228 +70,141 @@ ;; -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). This is about non-GNU programs, so use $1 not -# $program. -case $1 in - lex*|yacc*) - # Not GNU programs, they don't have --version. - ;; +# Run the given program, remember its exit status. +"$@"; st=$? - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $program in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case $f in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; +# If it succeeded, we are done. +test $st -eq 0 && exit 0 - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te*) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison*|yacc*) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex*|flex*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit $? - fi - ;; - - makeinfo*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi -exit 0 +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) diff -Nru sgt-puzzles-20140928.r10274/net.c sgt-puzzles-20160429.b31155b/net.c --- sgt-puzzles-20140928.r10274/net.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/net.c 2016-04-29 00:30:09.000000000 +0000 @@ -41,6 +41,11 @@ #define D 0x08 #define LOCKED 0x10 #define ACTIVE 0x20 +#define RLOOP (R << 6) +#define ULOOP (U << 6) +#define LLOOP (L << 6) +#define DLOOP (D << 6) +#define LOOP(dir) ((dir) << 6) /* Rotations: Anticlockwise, Clockwise, Flip, general rotate */ #define A(x) ( (((x) & 0x07) << 1) | (((x) & 0x08) >> 3) ) @@ -85,6 +90,7 @@ COL_ENDPOINT, COL_POWERED, COL_BARRIER, + COL_LOOP, NCOLOURS }; @@ -1126,6 +1132,10 @@ sfree(perimeter); } +static int *compute_loops_inner(int w, int h, int wrapping, + const unsigned char *tiles, + const unsigned char *barriers); + static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { @@ -1424,10 +1434,21 @@ * connectedness. However, that would take more effort, and * it's easier to simply make sure every grid is _obviously_ * not solved.) + * + * We also require that our shuffle produces no loops in the + * initial grid state, because it's a bit rude to light up a 'HEY, + * YOU DID SOMETHING WRONG!' indicator when the user hasn't even + * had a chance to do _anything_ yet. This also is possible just + * by retrying the whole shuffle on failure, because it's clear + * that at least one non-solved shuffle with no loops must exist. + * (Proof: take the _solved_ state of the puzzle, and rotate one + * endpoint.) */ while (1) { - int mismatches; + int mismatches, prev_loopsquares, this_loopsquares, i; + int *loops; + shuffle: for (y = 0; y < h; y++) { for (x = 0; x < w; x++) { int orig = index(params, tiles, x, y); @@ -1436,6 +1457,35 @@ } } + /* + * Check for loops, and try to fix them by reshuffling just + * the squares involved. + */ + prev_loopsquares = w*h+1; + while (1) { + loops = compute_loops_inner(w, h, params->wrapping, tiles, NULL); + this_loopsquares = 0; + for (i = 0; i < w*h; i++) { + if (loops[i]) { + int orig = tiles[i]; + int rot = random_upto(rs, 4); + tiles[i] = ROT(orig, rot); + this_loopsquares++; + } + } + sfree(loops); + if (this_loopsquares > prev_loopsquares) { + /* + * We're increasing rather than reducing the number of + * loops. Give up and go back to the full shuffle. + */ + goto shuffle; + } + if (this_loopsquares == 0) + break; + prev_loopsquares = this_loopsquares; + } + mismatches = 0; /* * I can't even be bothered to check for mismatches across @@ -1452,8 +1502,11 @@ mismatches++; } - if (mismatches > 0) - break; + if (mismatches == 0) + continue; + + /* OK. */ + break; } /* @@ -1856,6 +1909,87 @@ return active; } +struct net_neighbour_ctx { + int w, h; + const unsigned char *tiles, *barriers; + int i, n, neighbours[4]; +}; +static int net_neighbour(int vertex, void *vctx) +{ + struct net_neighbour_ctx *ctx = (struct net_neighbour_ctx *)vctx; + + if (vertex >= 0) { + int x = vertex % ctx->w, y = vertex / ctx->w; + int tile, dir, x1, y1, v1; + + ctx->i = ctx->n = 0; + + tile = ctx->tiles[vertex]; + if (ctx->barriers) + tile &= ~ctx->barriers[vertex]; + + for (dir = 1; dir < 0x10; dir <<= 1) { + if (!(tile & dir)) + continue; + OFFSETWH(x1, y1, x, y, dir, ctx->w, ctx->h); + v1 = y1 * ctx->w + x1; + if (ctx->tiles[v1] & F(dir)) + ctx->neighbours[ctx->n++] = v1; + } + } + + if (ctx->i < ctx->n) + return ctx->neighbours[ctx->i++]; + else + return -1; +} + +static int *compute_loops_inner(int w, int h, int wrapping, + const unsigned char *tiles, + const unsigned char *barriers) +{ + struct net_neighbour_ctx ctx; + struct findloopstate *fls; + int *loops; + int x, y; + + fls = findloop_new_state(w*h); + ctx.w = w; + ctx.h = h; + ctx.tiles = tiles; + ctx.barriers = barriers; + findloop_run(fls, w*h, net_neighbour, &ctx); + + loops = snewn(w*h, int); + + for (y = 0; y < h; y++) { + for (x = 0; x < w; x++) { + int x1, y1, dir; + int flags = 0; + + for (dir = 1; dir < 0x10; dir <<= 1) { + if ((tiles[y*w+x] & dir) && + !(barriers && (barriers[y*w+x] & dir))) { + OFFSETWH(x1, y1, x, y, dir, w, h); + if ((tiles[y1*w+x1] & F(dir)) && + findloop_is_loop_edge(fls, y*w+x, y1*w+x1)) + flags |= LOOP(dir); + } + } + loops[y*w+x] = flags; + } + } + + findloop_free_state(fls); + return loops; +} + +static int *compute_loops(const game_state *state) +{ + return compute_loops_inner(state->width, state->height, state->wrapping, + state->tiles, state->barriers); +} + struct game_ui { int org_x, org_y; /* origin */ int cx, cy; /* source tile (game coordinates) */ @@ -1916,7 +2050,7 @@ int width, height; int org_x, org_y; int tilesize; - unsigned char *visible; + int *visible; }; /* ---------------------------------------------------------------------- @@ -2290,14 +2424,16 @@ static game_drawstate *game_new_drawstate(drawing *dr, const game_state *state) { game_drawstate *ds = snew(game_drawstate); + int i; ds->started = FALSE; ds->width = state->width; ds->height = state->height; ds->org_x = ds->org_y = -1; - ds->visible = snewn(state->width * state->height, unsigned char); + ds->visible = snewn(state->width * state->height, int); ds->tilesize = 0; /* undecided yet */ - memset(ds->visible, 0xFF, state->width * state->height); + for (i = 0; i < state->width * state->height; i++) + ds->visible[i] = -1; return ds; } @@ -2356,6 +2492,13 @@ ret[COL_BARRIER * 3 + 2] = 0.0F; /* + * Highlighted loops are red as well. + */ + ret[COL_LOOP * 3 + 0] = 1.0F; + ret[COL_LOOP * 3 + 1] = 0.0F; + ret[COL_LOOP * 3 + 2] = 0.0F; + + /* * Unpowered endpoints are blue. */ ret[COL_ENDPOINT * 3 + 0] = 0.0F; @@ -2527,9 +2670,14 @@ ey = (TILE_SIZE - TILE_BORDER - 1.0F) / 2.0F * Y(dir); MATMUL(tx, ty, matrix, ex, ey); draw_line(dr, bx+(int)cx, by+(int)cy, - bx+(int)(cx+tx), by+(int)(cy+ty), col); + bx+(int)(cx+tx), by+(int)(cy+ty), + (tile & LOOP(dir)) ? COL_LOOP : col); } } + /* If we've drawn any loop-highlighted arms, make sure the centre + * point is loop-coloured rather than a later arm overwriting it. */ + if (tile & (RLOOP | ULOOP | LLOOP | DLOOP)) + draw_rect(dr, bx+(int)cx, by+(int)cy, 1, 1, COL_LOOP); /* * Draw the box in the middle. We do this in blue if the tile @@ -2598,7 +2746,9 @@ */ draw_rect_coords(dr, px-vx, py-vy, px+lx+vx, py+ly+vy, COL_WIRE); draw_rect_coords(dr, px, py, px+lx, py+ly, - (tile & ACTIVE) ? COL_POWERED : COL_WIRE); + ((tile & LOOP(dir)) ? COL_LOOP : + (tile & ACTIVE) ? COL_POWERED : + COL_WIRE)); } else { /* * The other tile extends into our border, but isn't @@ -2672,6 +2822,7 @@ { int x, y, tx, ty, frame, last_rotate_dir, moved_origin = FALSE; unsigned char *active; + int *loops; float angle = 0.0; /* @@ -2765,11 +2916,13 @@ * Draw any tile which differs from the way it was last drawn. */ active = compute_active(state, ui->cx, ui->cy); + loops = compute_loops(state); for (x = 0; x < ds->width; x++) for (y = 0; y < ds->height; y++) { - unsigned char c = tile(state, GX(x), GY(y)) | - index(state, active, GX(x), GY(y)); + int c = tile(state, GX(x), GY(y)) | + index(state, active, GX(x), GY(y)) | + index(state, loops, GX(x), GY(y)); int is_src = GX(x) == ui->cx && GY(y) == ui->cy; int is_anim = GX(x) == tx && GY(y) == ty; int is_cursor = ui->cur_visible && @@ -2796,12 +2949,12 @@ if (moved_origin || index(state, ds->visible, x, y) != c || - index(state, ds->visible, x, y) == 0xFF || + index(state, ds->visible, x, y) == -1 || is_src || is_anim || is_cursor) { draw_tile(dr, state, ds, x, y, c, is_src, (is_anim ? angle : 0.0F), is_cursor); if (is_src || is_anim || is_cursor) - index(state, ds->visible, x, y) = 0xFF; + index(state, ds->visible, x, y) = -1; else index(state, ds->visible, x, y) = c; } @@ -2830,6 +2983,7 @@ } sfree(active); + sfree(loops); } static float game_anim_length(const game_state *oldstate, diff -Nru sgt-puzzles-20140928.r10274/net.R sgt-puzzles-20160429.b31155b/net.R --- sgt-puzzles-20140928.r10274/net.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/net.R 2016-04-29 00:30:09.000000000 +0000 @@ -1,6 +1,6 @@ # -*- makefile -*- -NET_EXTRA = tree234 dsf +NET_EXTRA = tree234 dsf findloop net : [X] GTK COMMON net NET_EXTRA net-icon|no-icon @@ -19,5 +19,5 @@ !end !begin >gamedesc.txt -net:netgame.exe:Net:Network jigsaw puzzle +net:netgame.exe:Net:Network jigsaw puzzle:Rotate each tile to reassemble the network. !end diff -Nru sgt-puzzles-20140928.r10274/netslide.R sgt-puzzles-20160429.b31155b/netslide.R --- sgt-puzzles-20140928.r10274/netslide.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/netslide.R 2016-04-29 00:30:09.000000000 +0000 @@ -17,5 +17,5 @@ !end !begin >gamedesc.txt -netslide:netslide.exe:Netslide:Toroidal sliding network puzzle +netslide:netslide.exe:Netslide:Toroidal sliding network puzzle:Slide a row at a time to reassemble the network. !end diff -Nru sgt-puzzles-20140928.r10274/osx-info.plist sgt-puzzles-20160429.b31155b/osx-info.plist --- sgt-puzzles-20140928.r10274/osx-info.plist 2005-01-24 12:05:21.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/osx-info.plist 2016-04-29 00:30:09.000000000 +0000 @@ -1,5 +1,5 @@ - + CFBundleIconFile @@ -8,5 +8,27 @@ Help CFBundleHelpBookName Puzzles Help + CFBundleName + Puzzles + CFBundleDisplayName + Puzzles + CFBundleExecutable + Puzzles + CFBundleVersion + 20160429.b31155b + CFBundleShortVersionString + 20160429.b31155b + CFBundleDevelopmentRegion + en + CFBundleIdentifier + uk.org.greenend.chiark.sgtatham.puzzles + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleSignature + ???? + NSHumanReadableCopyright + This software is copyright (c) 2004-2014 Simon Tatham diff -Nru sgt-puzzles-20140928.r10274/osx.m sgt-puzzles-20160429.b31155b/osx.m --- sgt-puzzles-20140928.r10274/osx.m 2012-06-06 17:59:37.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/osx.m 2016-04-29 00:30:09.000000000 +0000 @@ -100,6 +100,12 @@ */ extern const struct drawing_api osx_drawing; +/* + * The NSApplication shared instance, which I'll want to refer to from + * a few places here and there. + */ +NSApplication *app; + /* ---------------------------------------------------------------------- * Miscellaneous support routines that aren't part of any object or * clearly defined subsystem. @@ -563,7 +569,7 @@ [status setBezeled:YES]; [status setBezelStyle:NSTextFieldSquareBezel]; [status setDrawsBackground:YES]; - [[status cell] setTitle:@""]; + [[status cell] setTitle:@DEFAULT_STATUSBAR_TEXT]; [status sizeToFit]; rect2 = [status frame]; rect.size.height += rect2.size.height; @@ -755,7 +761,24 @@ [op setAllowsMultipleSelection:NO]; if ([op runModalForTypes:nil] == NSOKButton) { - const char *name = [[[op filenames] objectAtIndex:0] cString]; + /* + * This used to be + * + * [[[op filenames] objectAtIndex:0] cString] + * + * but the plain cString method became deprecated and Xcode 7 + * started complaining about it. Since OS X 10.9 we can + * apparently use the more modern API + * + * [[[op URLs] objectAtIndex:0] fileSystemRepresentation] + * + * but the alternative below still compiles with Xcode 7 and + * is a bit more backwards compatible, so I'll try it for the + * moment. + */ + const char *name = [[[op filenames] objectAtIndex:0] + cStringUsingEncoding: + [NSString defaultCStringEncoding]]; char *err; FILE *fp = fopen(name, "r"); @@ -1191,7 +1214,7 @@ for (k = 0; k < cfg_ncontrols; k++) [[sheet contentView] addSubview:cfg_controls[k]]; - [NSApp beginSheet:sheet modalForWindow:self + [app beginSheet:sheet modalForWindow:self modalDelegate:nil didEndSelector:NULL contextInfo:nil]; } @@ -1213,7 +1236,7 @@ - (void)sheetEndWithStatus:(BOOL)update { assert(sheet != NULL); - [NSApp endSheet:sheet]; + [app endSheet:sheet]; [sheet orderOut:self]; sheet = NULL; if (update) { @@ -1346,6 +1369,26 @@ NSRectFill(NSMakeRect(x1, fe->h-y1-1, 1, 1)); NSRectFill(NSMakeRect(x2, fe->h-y2-1, 1, 1)); } + +static void osx_draw_thick_line( + void *handle, float thickness, + float x1, float y1, + float x2, float y2, + int colour) +{ + frontend *fe = (frontend *)handle; + NSBezierPath *path = [NSBezierPath bezierPath]; + + assert(colour >= 0 && colour < fe->ncolours); + [fe->colours[colour] set]; + [[NSGraphicsContext currentContext] setShouldAntialias: YES]; + [path setLineWidth: thickness]; + [path setLineCapStyle: NSButtLineCapStyle]; + [path moveToPoint: NSMakePoint(x1, fe->h-y1)]; + [path lineToPoint: NSMakePoint(x2, fe->h-y2)]; + [path stroke]; +} + static void osx_draw_rect(void *handle, int x, int y, int w, int h, int colour) { frontend *fe = (frontend *)handle; @@ -1535,6 +1578,7 @@ NULL, NULL, NULL, NULL, NULL, NULL, /* {begin,end}_{doc,page,puzzle} */ NULL, NULL, /* line_width, line_dotted */ osx_text_fallback, + osx_draw_thick_line, }; void deactivate_timer(frontend *fe) @@ -1550,7 +1594,7 @@ * AppController: the object which receives the messages from all * menu selections that aren't standard OS X functions. */ -@interface AppController : NSObject +@interface AppController : NSObject { } - (void)newGameWindow:(id)sender; @@ -1608,27 +1652,27 @@ pool = [[NSAutoreleasePool alloc] init]; icon = [NSImage imageNamed:@"NSApplicationIcon"]; - [NSApplication sharedApplication]; - [NSApp setApplicationIconImage:icon]; + app = [NSApplication sharedApplication]; + [app setApplicationIconImage:icon]; controller = [[[AppController alloc] init] autorelease]; - [NSApp setDelegate:controller]; + [app setDelegate:controller]; - [NSApp setMainMenu: newmenu("Main Menu")]; + [app setMainMenu: newmenu("Main Menu")]; - menu = newsubmenu([NSApp mainMenu], "Apple Menu"); + menu = newsubmenu([app mainMenu], "Apple Menu"); newitem(menu, "About Puzzles", "", NULL, @selector(about:)); [menu addItem:[NSMenuItem separatorItem]]; - [NSApp setServicesMenu:newsubmenu(menu, "Services")]; + [app setServicesMenu:newsubmenu(menu, "Services")]; [menu addItem:[NSMenuItem separatorItem]]; - newitem(menu, "Hide Puzzles", "h", NSApp, @selector(hide:)); - newitem(menu, "Hide Others", "o-h", NSApp, @selector(hideOtherApplications:)); - newitem(menu, "Show All", "", NSApp, @selector(unhideAllApplications:)); + newitem(menu, "Hide Puzzles", "h", app, @selector(hide:)); + newitem(menu, "Hide Others", "o-h", app, @selector(hideOtherApplications:)); + newitem(menu, "Show All", "", app, @selector(unhideAllApplications:)); [menu addItem:[NSMenuItem separatorItem]]; - newitem(menu, "Quit", "q", NSApp, @selector(terminate:)); - [NSApp setAppleMenu: menu]; + newitem(menu, "Quit", "q", app, @selector(terminate:)); + [app setAppleMenu: menu]; - menu = newsubmenu([NSApp mainMenu], "File"); + menu = newsubmenu([app mainMenu], "File"); newitem(menu, "Open", "o", NULL, @selector(loadSavedGame:)); newitem(menu, "Save As", "s", NULL, @selector(saveGame:)); newitem(menu, "New Game", "n", NULL, @selector(newGame:)); @@ -1652,7 +1696,7 @@ [menu addItem:[NSMenuItem separatorItem]]; newitem(menu, "Close", "w", NULL, @selector(performClose:)); - menu = newsubmenu([NSApp mainMenu], "Edit"); + menu = newsubmenu([app mainMenu], "Edit"); newitem(menu, "Undo", "z", NULL, @selector(undoMove:)); newitem(menu, "Redo", "S-z", NULL, @selector(redoMove:)); [menu addItem:[NSMenuItem separatorItem]]; @@ -1662,18 +1706,18 @@ [menu addItem:[NSMenuItem separatorItem]]; newitem(menu, "Solve", "S-s", NULL, @selector(solveGame:)); - menu = newsubmenu([NSApp mainMenu], "Type"); + menu = newsubmenu([app mainMenu], "Type"); typemenu = menu; newitem(menu, "Custom", "", NULL, @selector(customGameType:)); - menu = newsubmenu([NSApp mainMenu], "Window"); - [NSApp setWindowsMenu: menu]; + menu = newsubmenu([app mainMenu], "Window"); + [app setWindowsMenu: menu]; newitem(menu, "Minimise Window", "m", NULL, @selector(performMiniaturize:)); - menu = newsubmenu([NSApp mainMenu], "Help"); - newitem(menu, "Puzzles Help", "?", NSApp, @selector(showHelp:)); + menu = newsubmenu([app mainMenu], "Help"); + newitem(menu, "Puzzles Help", "?", app, @selector(showHelp:)); - [NSApp run]; + [app run]; [pool release]; return 0; diff -Nru sgt-puzzles-20140928.r10274/palisade.c sgt-puzzles-20160429.b31155b/palisade.c --- sgt-puzzles-20140928.r10274/palisade.c 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/palisade.c 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,1383 @@ +/* -*- indent-tabs-mode: nil; tab-width: 1000 -*- */ + +/* + * palisade.c: Nikoli's `Five Cells' puzzle. + * + * See http://nikoli.co.jp/en/puzzles/five_cells.html + */ + +/* TODO: + * + * - better solver: implement the sketched-out deductions + * + * - improve the victory flash? + * - the LINE_NOs look ugly against COL_FLASH. + * - white-blink the edges (instead), a la loopy? + */ + +#include +#include +#include +#include +#include +#include + +#include "puzzles.h" + +#define setmem(ptr, byte, len) memset((ptr), (byte), (len) * sizeof (ptr)[0]) +#define scopy(dst, src, len) memcpy((dst), (src), (len) * sizeof (dst)[0]) +#define dupmem(p, n) memcpy(smalloc(n * sizeof (*p)), p, n * sizeof (*p)) +#define snewa(ptr, len) (ptr) = smalloc((len) * sizeof (*ptr)) +#define clone(ptr) (dupmem((ptr), 1)) + +static char *string(int n, const char *fmt, ...) +{ + va_list va; + char *ret; + int m; + va_start(va, fmt); + m = vsprintf(snewa(ret, n + 1), fmt, va); + va_end(va); + if (m > n) fatal("memory corruption"); + return ret; +} + +struct game_params { + int w, h, k; +}; + +typedef char clue; +typedef unsigned char borderflag; + +typedef struct shared_state { + game_params params; + clue *clues; + int refcount; +} shared_state; + +struct game_state { + shared_state *shared; + borderflag *borders; /* length w*h */ + + unsigned int completed: 1; + unsigned int cheated: 1; +}; + +#define DEFAULT_PRESET 0 +static struct game_params presets[] = { + {5, 5, 5}, {8, 6, 6}, {10, 8, 8}, {15, 12, 10} + /* I definitely want 5x5n5 since that gives "Five Cells" its name. + * But how about the others? By which criteria do I choose? */ +}; + +static game_params *default_params(void) +{ + return clone(&presets[DEFAULT_PRESET]); +} + +static int game_fetch_preset(int i, char **name, game_params **params) +{ + if (i < 0 || i >= lenof(presets)) return FALSE; + + *params = clone(&presets[i]); + *name = string(60, "%d x %d, regions of size %d", + presets[i].w, presets[i].h, presets[i].k); + + return TRUE; +} + +static void free_params(game_params *params) +{ + sfree(params); +} + +static game_params *dup_params(const game_params *params) +{ + return clone(params); +} + +static void decode_params(game_params *params, char const *string) +{ + params->w = params->h = params->k = atoi(string); + while (*string && isdigit((unsigned char)*string)) ++string; + if (*string == 'x') { + params->h = atoi(++string); + while (*string && isdigit((unsigned char)*string)) ++string; + } + if (*string == 'n') params->k = atoi(++string); +} + +static char *encode_params(const game_params *params, int full) +{ + return string(40, "%dx%dn%d", params->w, params->h, params->k); +} + +#define CONFIG(i, nm, ty, iv, sv) \ + (ret[i].name = nm, ret[i].type = ty, ret[i].ival = iv, ret[i].sval = sv) + +static config_item *game_configure(const game_params *params) +{ + config_item *ret = snewn(4, config_item); + + CONFIG(0, "Width", C_STRING, 0, string(20, "%d", params->w)); + CONFIG(1, "Height", C_STRING, 0, string(20, "%d", params->h)); + CONFIG(2, "Region size", C_STRING, 0, string(20, "%d", params->k)); + CONFIG(3, NULL, C_END, 0, NULL); + + return ret; +} + +static game_params *custom_params(const config_item *cfg) +{ + game_params *params = snew(game_params); + + params->w = atoi(cfg[0].sval); + params->h = atoi(cfg[1].sval); + params->k = atoi(cfg[2].sval); + + return params; +} + +/* +---+ << The one possible domino (up to symmetry). +---+---+ + * | 3 | | 3 | 3 | + * | | If two dominos are adjacent as depicted here >> +---+---+ + * | 3 | then it's ambiguous whether the edge between | 3 | 3 | + * +---+ the dominos is horizontal or vertical. +---+---+ + */ + +static char *validate_params(const game_params *params, int full) +{ + int w = params->w, h = params->h, k = params->k, wh = w * h; + + if (k < 1) return "Region size must be at least one"; + if (w < 1) return "Width must be at least one"; + if (h < 1) return "Height must be at least one"; + if (wh % k) return "Region size must divide grid area"; + + if (!full) return NULL; /* succeed partial validation */ + + /* MAYBE FIXME: we (just?) don't have the UI for winning these. */ + if (k == wh) return "Region size must be less than the grid area"; + assert (k < wh); /* or wh % k != 0 */ + + if (k == 2 && w != 1 && h != 1) + return "Region size can't be two unless width or height is one"; + + return NULL; /* succeed full validation */ +} + +/* --- Solver ------------------------------------------------------- */ + +/* the solver may write at will to these arrays, but shouldn't free them */ +/* it's up to the client to dup/free as needed */ +typedef struct solver_ctx { + const game_params *params; /* also in shared_state */ + clue *clues; /* also in shared_state */ + borderflag *borders; /* also in game_state */ + int *dsf; /* particular to the solver */ +} solver_ctx; + +/* Deductions: + * + * - If two adjacent clues do not have a border between them, this + * gives a lower limit on the size of their region (which is also an + * upper limit if both clues are 3). Rule out any non-border which + * would make its region either too large or too small. + * + * - If a clue, k, is adjacent to k borders or (4 - k) non-borders, + * the remaining edges incident to the clue are readily decided. + * + * - If a region has only one other region (e.g. square) to grow into + * and it's not of full size yet, grow it into that one region. + * + * - If two regions are adjacent and their combined size would be too + * large, put an edge between them. + * + * - If a border is adjacent to two non-borders, its last vertex-mate + * must also be a border. If a maybe-border is adjacent to three + * nonborders, the maybe-border is a non-border. + * + * - If a clue square is adjacent to several squares belonging to the + * same region, and enabling (disabling) those borders would violate + * the clue, those borders must be disabled (enabled). + * + * - If there's a path crossing only non-borders between two squares, + * the maybe-border between them is a non-border. + * (This is implicitly computed in the dsf representation) + */ + +/* TODO deductions: + * + * If a vertex is adjacent to a LINE_YES and (4-3)*LINE_NO, at least + * one of the last two edges are LINE_YES. If they're adjacent to a + * 1, then the other two edges incident to that 1 are LINE_NO. + * + * For each square: set all as unknown, then for each k-omino and each + * way of placing it on that square, if that way is consistent with + * the board, mark its edges and interior as possible LINE_YES and + * LINE_NO, respectively. When all k-ominos are through, see what + * isn't possible and remove those impossibilities from the board. + * (Sounds pretty nasty for k > 4 or so.) + * + * A black-bordered subregion must have a size divisible by k. So, + * draw a graph with one node per dsf component and edges between + * those dsf components which have adjacent squares. Identify cut + * vertices and edges. If a cut-vertex-delimited component contains a + * number of squares not divisible by k, cut vertex not included, then + * the cut vertex must belong to the component. If it has exactly one + * edge _out_ of the component, the line(s) corresponding to that edge + * are all LINE_YES (i.e. a BORDER()). + * (This sounds complicated, but visually it is rather easy.) + * + * [Look at loopy and see how the at-least/-most k out of m edges + * thing is done. See how it is propagated across multiple squares.] + */ + +#define EMPTY (~0) + +#define BIT(i) (1 << (i)) +#define BORDER(i) BIT(i) +#define BORDER_U BORDER(0) +#define BORDER_R BORDER(1) +#define BORDER_D BORDER(2) +#define BORDER_L BORDER(3) +#define FLIP(i) ((i) ^ 2) +#define BORDER_MASK (BORDER_U|BORDER_R|BORDER_D|BORDER_L) +#define DISABLED(border) ((border) << 4) +#define UNDISABLED(border) ((border) >> 4) + +static const int dx[4] = { 0, +1, 0, -1}; +static const int dy[4] = {-1, 0, +1, 0}; +static const int bitcount[16] = {0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4}; +/* bitcount[x & BORDER_MASK] == number of enabled borders */ + +#define COMPUTE_J (-1) + +static void connect(solver_ctx *ctx, int i, int j) +{ + dsf_merge(ctx->dsf, i, j); +} + +static int connected(solver_ctx *ctx, int i, int j, int dir) +{ + if (j == COMPUTE_J) j = i + dx[dir] + ctx->params->w*dy[dir]; + return dsf_canonify(ctx->dsf, i) == dsf_canonify(ctx->dsf, j); +} + +static void disconnect(solver_ctx *ctx, int i, int j, int dir) +{ + if (j == COMPUTE_J) j = i + dx[dir] + ctx->params->w*dy[dir]; + ctx->borders[i] |= BORDER(dir); + ctx->borders[j] |= BORDER(FLIP(dir)); +} + +static int disconnected(solver_ctx *ctx, int i, int j, int dir) +{ + assert (j == COMPUTE_J || j == i + dx[dir] + ctx->params->w*dy[dir]); + return ctx->borders[i] & BORDER(dir); +} + +static int maybe(solver_ctx *ctx, int i, int j, int dir) +{ + assert (j == COMPUTE_J || j == i + dx[dir] + ctx->params->w*dy[dir]); + return !disconnected(ctx, i, j, dir) && !connected(ctx, i, j, dir); + /* the ordering is important: disconnected works for invalid + * squares (i.e. out of bounds), connected doesn't. */ +} + +static void solver_connected_clues_versus_region_size(solver_ctx *ctx) +{ + int w = ctx->params->w, h = ctx->params->h, wh = w*h, i, dir; + + /* If i is connected to j and i has borders with p of the + * remaining three squares and j with q of the remaining three + * squares, then the region has size at least 1+(3-p) + 1+(3-q). + * If p = q = 3 then the region has size exactly 2. */ + + for (i = 0; i < wh; ++i) { + if (ctx->clues[i] == EMPTY) continue; + for (dir = 0; dir < 4; ++dir) { + int j = i + dx[dir] + w*dy[dir]; + if (disconnected(ctx, i, j, dir)) continue; + if (ctx->clues[j] == EMPTY) continue; + if ((8 - ctx->clues[i] - ctx->clues[j] > ctx->params->k) || + (ctx->clues[i] == 3 && ctx->clues[j] == 3 && + ctx->params->k != 2)) + { + disconnect(ctx, i, j, dir); + /* changed = TRUE, but this is a one-shot... */ + } + } + } +} + +static int solver_number_exhausted(solver_ctx *ctx) +{ + int w = ctx->params->w, h = ctx->params->h, wh = w*h, i, dir, off; + int changed = FALSE; + + for (i = 0; i < wh; ++i) { + if (ctx->clues[i] == EMPTY) continue; + + if (bitcount[(ctx->borders[i] & BORDER_MASK)] == ctx->clues[i]) { + for (dir = 0; dir < 4; ++dir) { + int j = i + dx[dir] + w*dy[dir]; + if (!maybe(ctx, i, j, dir)) continue; + connect(ctx, i, j); + changed = TRUE; + } + continue; + } + + for (off = dir = 0; dir < 4; ++dir) { + int j = i + dx[dir] + w*dy[dir]; + if (!disconnected(ctx, i, j, dir) && connected(ctx, i, j, dir)) + ++off; /* ^^^ bounds checking before ^^^^^ */ + } + + if (ctx->clues[i] == 4 - off) + for (dir = 0; dir < 4; ++dir) { + int j = i + dx[dir] + w*dy[dir]; + if (!maybe(ctx, i, j, dir)) continue; + disconnect(ctx, i, j, dir); + changed = TRUE; + } + } + + return changed; +} + +static int solver_not_too_big(solver_ctx *ctx) +{ + int w = ctx->params->w, h = ctx->params->h, wh = w*h, i, dir; + int changed = FALSE; + + for (i = 0; i < wh; ++i) { + int size = dsf_size(ctx->dsf, i); + for (dir = 0; dir < 4; ++dir) { + int j = i + dx[dir] + w*dy[dir]; + if (!maybe(ctx, i, j, dir)) continue; + if (size + dsf_size(ctx->dsf, j) <= ctx->params->k) continue; + disconnect(ctx, i, j, dir); + changed = TRUE; + } + } + + return changed; +} + +static int solver_not_too_small(solver_ctx *ctx) +{ + int w = ctx->params->w, h = ctx->params->h, wh = w*h, i, dir; + int *outs, k = ctx->params->k, ci, changed = FALSE; + + snewa(outs, wh); + setmem(outs, -1, wh); + + for (i = 0; i < wh; ++i) { + ci = dsf_canonify(ctx->dsf, i); + if (dsf_size(ctx->dsf, ci) == k) continue; + for (dir = 0; dir < 4; ++dir) { + int j = i + dx[dir] + w*dy[dir]; + if (!maybe(ctx, i, j, dir)) continue; + if (outs[ci] == -1) outs[ci] = dsf_canonify(ctx->dsf, j); + else if (outs[ci] != dsf_canonify(ctx->dsf, j)) outs[ci] = -2; + } + } + + for (i = 0; i < wh; ++i) { + int j = outs[i]; + if (i != dsf_canonify(ctx->dsf, i)) continue; + if (j < 0) continue; + connect(ctx, i, j); /* only one place for i to grow */ + changed = TRUE; + } + + sfree(outs); + return changed; +} + +static int solver_no_dangling_edges(solver_ctx *ctx) +{ + int w = ctx->params->w, h = ctx->params->h, r, c; + int changed = FALSE; + + /* for each vertex */ + for (r = 1; r < h; ++r) + for (c = 1; c < w; ++c) { + int i = r * w + c, j = i - w - 1, noline = 0, dir; + int squares[4], e = -1, f = -1, de = -1, df = -1; + + /* feels hacky: I align these with BORDER_[U0 R1 D2 L3] */ + squares[1] = squares[2] = j; + squares[0] = squares[3] = i; + + /* for each edge adjacent to the vertex */ + for (dir = 0; dir < 4; ++dir) + if (!connected(ctx, squares[dir], COMPUTE_J, dir)) { + df = dir; + f = squares[df]; + if (e != -1) continue; + e = f; + de = df; + } else ++noline; + + if (4 - noline == 1) { + assert (e != -1); + disconnect(ctx, e, COMPUTE_J, de); + changed = TRUE; + continue; + } + + if (4 - noline != 2) continue; + + assert (e != -1); + assert (f != -1); + + if (ctx->borders[e] & BORDER(de)) { + if (!(ctx->borders[f] & BORDER(df))) { + disconnect(ctx, f, COMPUTE_J, df); + changed = TRUE; + } + } else if (ctx->borders[f] & BORDER(df)) { + disconnect(ctx, e, COMPUTE_J, de); + changed = TRUE; + } + } + + return changed; +} + +static int solver_equivalent_edges(solver_ctx *ctx) +{ + int w = ctx->params->w, h = ctx->params->h, wh = w*h, i, dirj; + int changed = FALSE; + + /* if a square is adjacent to two connected squares, the two + * borders (i,j) and (i,k) are either both on or both off. */ + + for (i = 0; i < wh; ++i) { + int n_on = 0, n_off = 0; + if (ctx->clues[i] < 1 || ctx->clues[i] > 3) continue; + + if (ctx->clues[i] == 2 /* don't need it otherwise */) + for (dirj = 0; dirj < 4; ++dirj) { + int j = i + dx[dirj] + w*dy[dirj]; + if (disconnected(ctx, i, j, dirj)) ++n_on; + else if (connected(ctx, i, j, dirj)) ++n_off; + } + + for (dirj = 0; dirj < 4; ++dirj) { + int j = i + dx[dirj] + w*dy[dirj], dirk; + if (!maybe(ctx, i, j, dirj)) continue; + + for (dirk = dirj + 1; dirk < 4; ++dirk) { + int k = i + dx[dirk] + w*dy[dirk]; + if (!maybe(ctx, i, k, dirk)) continue; + if (!connected(ctx, j, k, -1)) continue; + + if (n_on + 2 > ctx->clues[i]) { + connect(ctx, i, j); + connect(ctx, i, k); + changed = TRUE; + } else if (n_off + 2 > 4 - ctx->clues[i]) { + disconnect(ctx, i, j, dirj); + disconnect(ctx, i, k, dirk); + changed = TRUE; + } + } + } + } + + return changed; +} + +#define UNVISITED 6 + +/* build connected components in `dsf', along the lines of `borders'. */ +static void dfs_dsf(int i, int w, borderflag *border, int *dsf, int black) +{ + int dir; + for (dir = 0; dir < 4; ++dir) { + int ii = i + dx[dir] + w*dy[dir], bdir = BORDER(dir); + if (black ? (border[i] & bdir) : !(border[i] & DISABLED(bdir))) + continue; + if (dsf[ii] != UNVISITED) continue; + dsf_merge(dsf, i, ii); + dfs_dsf(ii, w, border, dsf, black); + } +} + +static int is_solved(const game_params *params, clue *clues, + borderflag *border) +{ + int w = params->w, h = params->h, wh = w*h, k = params->k; + int i, x, y; + int *dsf = snew_dsf(wh); + + assert (dsf[0] == UNVISITED); /* check: UNVISITED and dsf.c match up */ + + /* + * A game is solved if: + * + * - the borders drawn on the grid divide it into connected + * components such that every square is in a component of the + * correct size + * - the borders also satisfy the clue set + */ + for (i = 0; i < wh; ++i) { + if (dsf[i] == UNVISITED) dfs_dsf(i, params->w, border, dsf, TRUE); + if (dsf_size(dsf, i) != k) goto error; + if (clues[i] == EMPTY) continue; + if (clues[i] != bitcount[border[i] & BORDER_MASK]) goto error; + } + + /* + * ... and thirdly: + * + * - there are no *stray* borders, in that every border is + * actually part of the division between two components. + * Otherwise you could cheat by finding a subdivision which did + * not *exceed* any clue square's counter, and then adding a + * few extra edges. + */ + for (y = 0; y < h; y++) { + for (x = 0; x < w; x++) { + if (x+1 < w && (border[y*w+x] & BORDER_R) && + dsf_canonify(dsf, y*w+x) == dsf_canonify(dsf, y*w+(x+1))) + goto error; + if (y+1 < h && (border[y*w+x] & BORDER_D) && + dsf_canonify(dsf, y*w+x) == dsf_canonify(dsf, (y+1)*w+x)) + goto error; + } + } + + sfree(dsf); + return TRUE; + +error: + sfree(dsf); + return FALSE; +} + +static int solver(const game_params *params, clue *clues, borderflag *borders) +{ + int w = params->w, h = params->h, wh = w*h, changed; + solver_ctx ctx; + + ctx.params = params; + ctx.clues = clues; + ctx.borders = borders; + ctx.dsf = snew_dsf(wh); + + solver_connected_clues_versus_region_size(&ctx); /* idempotent */ + do { + changed = FALSE; + changed |= solver_number_exhausted(&ctx); + changed |= solver_not_too_big(&ctx); + changed |= solver_not_too_small(&ctx); + changed |= solver_no_dangling_edges(&ctx); + changed |= solver_equivalent_edges(&ctx); + } while (changed); + + sfree(ctx.dsf); + + return is_solved(params, clues, borders); +} + +/* --- Generator ---------------------------------------------------- */ + +static void init_borders(int w, int h, borderflag *borders) +{ + int r, c; + setmem(borders, 0, w*h); + for (c = 0; c < w; ++c) { + borders[c] |= BORDER_U; + borders[w*h-1 - c] |= BORDER_D; + } + for (r = 0; r < h; ++r) { + borders[r*w] |= BORDER_L; + borders[w*h-1 - r*w] |= BORDER_R; + } +} + +#define OUT_OF_BOUNDS(x, y, w, h) \ + ((x) < 0 || (x) >= (w) || (y) < 0 || (y) >= (h)) + +#define xshuffle(ptr, len, rs) shuffle((ptr), (len), sizeof (ptr)[0], (rs)) + +static char *new_game_desc(const game_params *params, random_state *rs, + char **aux, int interactive) +{ + int w = params->w, h = params->h, wh = w*h, k = params->k; + + clue *numbers = snewn(wh + 1, clue), *p; + borderflag *rim = snewn(wh, borderflag); + borderflag *scratch_borders = snewn(wh, borderflag); + + char *soln = snewa(*aux, wh + 2); + int *shuf = snewn(wh, int); + int *dsf = NULL, i, r, c; + + int attempts = 0; + + for (i = 0; i < wh; ++i) shuf[i] = i; + xshuffle(shuf, wh, rs); + + init_borders(w, h, rim); + + assert (!('@' & BORDER_MASK)); + *soln++ = 'S'; + soln[wh] = '\0'; + + do { + ++attempts; + setmem(soln, '@', wh); + + sfree(dsf); + dsf = divvy_rectangle(w, h, k, rs); + + for (r = 0; r < h; ++r) + for (c = 0; c < w; ++c) { + int i = r * w + c, dir; + numbers[i] = 0; + for (dir = 0; dir < 4; ++dir) { + int rr = r + dy[dir], cc = c + dx[dir], ii = rr * w + cc; + if (OUT_OF_BOUNDS(cc, rr, w, h) || + dsf_canonify(dsf, i) != dsf_canonify(dsf, ii)) { + ++numbers[i]; + soln[i] |= BORDER(dir); + } + } + } + + scopy(scratch_borders, rim, wh); + } while (!solver(params, numbers, scratch_borders)); + + for (i = 0; i < wh; ++i) { + int j = shuf[i]; + clue copy = numbers[j]; + + scopy(scratch_borders, rim, wh); + numbers[j] = EMPTY; /* strip away unnecssary clues */ + if (!solver(params, numbers, scratch_borders)) + numbers[j] = copy; + } + + numbers[wh] = '\0'; + + sfree(scratch_borders); + sfree(rim); + sfree(shuf); + sfree(dsf); + + p = numbers; + r = 0; + for (i = 0; i < wh; ++i) { + if (numbers[i] != EMPTY) { + while (r) { + while (r > 26) { + *p++ = 'z'; + r -= 26; + } + *p++ = 'a'-1 + r; + r = 0; + } + *p++ = '0' + numbers[i]; + } else ++r; + } + *p++ = '\0'; + + return sresize(numbers, p - numbers, clue); +} + +static char *validate_desc(const game_params *params, const char *desc) +{ + + int w = params->w, h = params->h, wh = w*h, squares = 0; + + for (/* nop */; *desc; ++desc) { + if (islower((unsigned char)*desc)) { + squares += *desc - 'a' + 1; + } else if (isdigit((unsigned char)*desc)) { + if (*desc > '4') { + static char buf[] = "Invalid (too large) number: '5'"; + assert (isdigit((unsigned char)buf[lenof(buf) - 3])); + buf[lenof(buf) - 3] = *desc; /* ... or 6, 7, 8, 9 :-) */ + return buf; + } + ++squares; + } else if (isprint((unsigned char)*desc)) { + static char buf[] = "Invalid character in data: '?'"; + buf[lenof(buf) - 3] = *desc; + return buf; + } else return "Invalid (unprintable) character in data"; + } + + if (squares > wh) return "Data describes too many squares"; + + return NULL; +} + +static game_state *new_game(midend *me, const game_params *params, + const char *desc) +{ + int w = params->w, h = params->h, wh = w*h, i; + game_state *state = snew(game_state); + + state->shared = snew(shared_state); + state->shared->refcount = 1; + state->shared->params = *params; /* struct copy */ + snewa(state->shared->clues, wh); + + setmem(state->shared->clues, EMPTY, wh); + for (i = 0; *desc; ++desc) { + if (isdigit((unsigned char)*desc)) state->shared->clues[i++] = *desc - '0'; + else if (isalpha((unsigned char)*desc)) i += *desc - 'a' + 1; + } + + snewa(state->borders, wh); + init_borders(w, h, state->borders); + + state->completed = (params->k == wh); + state->cheated = FALSE; + + return state; +} + +static game_state *dup_game(const game_state *state) +{ + int wh = state->shared->params.w * state->shared->params.h; + game_state *ret = snew(game_state); + + ret->borders = dupmem(state->borders, wh); + + ret->shared = state->shared; + ++ret->shared->refcount; + + ret->completed = state->completed; + ret->cheated = state->cheated; + + return ret; +} + +static void free_game(game_state *state) +{ + if (--state->shared->refcount == 0) { + sfree(state->shared->clues); + sfree(state->shared); + } + sfree(state->borders); + sfree(state); +} + +static char *solve_game(const game_state *state, const game_state *currstate, + const char *aux, char **error) +{ + int w = state->shared->params.w, h = state->shared->params.h, wh = w*h; + borderflag *move; + + if (aux) return dupstr(aux); + + snewa(move, wh + 2); + + move[0] = 'S'; + init_borders(w, h, move + 1); + move[wh + 1] = '\0'; + + if (solver(&state->shared->params, state->shared->clues, move + 1)) { + int i; + for (i = 0; i < wh; i++) + move[i+1] |= '@'; /* turn into sensible ASCII */ + return (char *) move; + } + + *error = "Sorry, I can't solve this puzzle"; + sfree(move); + return NULL; + + { + /* compile-time-assert (borderflag is-a-kind-of char). + * + * depends on zero-size arrays being disallowed. GCC says + * ISO C forbids this, pointing to [-Werror=edantic]. Also, + * it depends on type-checking of (obviously) dead code. */ + borderflag b[sizeof (borderflag) == sizeof (char)]; + char c = b[0]; b[0] = c; + /* we could at least in principle put this anywhere, but it + * seems silly to not put it where the assumption is used. */ + } +} + +static int game_can_format_as_text_now(const game_params *params) +{ + return TRUE; +} + +static char *game_text_format(const game_state *state) +{ + int w = state->shared->params.w, h = state->shared->params.h, r, c; + int cw = 4, ch = 2, gw = cw*w + 2, gh = ch * h + 1, len = gw * gh; + char *board; + + setmem(snewa(board, len + 1), ' ', len); + for (r = 0; r < h; ++r) { + for (c = 0; c < w; ++c) { + int cell = r*ch*gw + cw*c, center = cell + gw*ch/2 + cw/2; + int i = r * w + c, clue = state->shared->clues[i]; + + if (clue != EMPTY) board[center] = '0' + clue; + + board[cell] = '+'; + + if (state->borders[i] & BORDER_U) + setmem(board + cell + 1, '-', cw - 1); + else if (state->borders[i] & DISABLED(BORDER_U)) + board[cell + cw / 2] = 'x'; + + if (state->borders[i] & BORDER_L) + board[cell + gw] = '|'; + else if (state->borders[i] & DISABLED(BORDER_L)) + board[cell + gw] = 'x'; + } + + for (c = 0; c < ch; ++c) { + board[(r*ch + c)*gw + gw - 2] = c ? '|' : '+'; + board[(r*ch + c)*gw + gw - 1] = '\n'; + } + } + + scopy(board + len - gw, board, gw); + board[len] = '\0'; + + return board; +} + +struct game_ui { + int x, y; + unsigned int show: 1; +}; + +static game_ui *new_ui(const game_state *state) +{ + game_ui *ui = snew(game_ui); + ui->x = ui->y = 0; + ui->show = FALSE; + return ui; +} + +static void free_ui(game_ui *ui) +{ + sfree(ui); +} + +static char *encode_ui(const game_ui *ui) +{ + return NULL; +} + +static void decode_ui(game_ui *ui, const char *encoding) +{ + assert (encoding == NULL); +} + +static void game_changed_state(game_ui *ui, const game_state *oldstate, + const game_state *newstate) +{ +} + +typedef unsigned short dsflags; + +struct game_drawstate { + int tilesize; + dsflags *grid; +}; + +#define TILESIZE (ds->tilesize) +#define MARGIN (ds->tilesize / 2) +#define WIDTH (1 + (TILESIZE >= 16) + (TILESIZE >= 32) + (TILESIZE >= 64)) +#define CENTER ((ds->tilesize / 2) + WIDTH/2) + +#define FROMCOORD(x) (((x) - MARGIN) / TILESIZE) + +enum {MAYBE_LEFT, MAYBE_RIGHT, ON_LEFT, ON_RIGHT, OFF_LEFT, OFF_RIGHT}; + +static char *interpret_move(const game_state *state, game_ui *ui, + const game_drawstate *ds, int x, int y, int button) +{ + int w = state->shared->params.w, h = state->shared->params.h; + int control = button & MOD_CTRL, shift = button & MOD_SHFT; + + button &= ~MOD_MASK; + + if (button == LEFT_BUTTON || button == RIGHT_BUTTON) { + int gx = FROMCOORD(x), gy = FROMCOORD(y), possible = BORDER_MASK; + int px = (x - MARGIN) % TILESIZE, py = (y - MARGIN) % TILESIZE; + int hx, hy, dir, i; + + if (OUT_OF_BOUNDS(gx, gy, w, h)) return NULL; + + ui->x = gx; + ui->y = gy; + + /* find edge closest to click point */ + possible &=~ (2*px < TILESIZE ? BORDER_R : BORDER_L); + possible &=~ (2*py < TILESIZE ? BORDER_D : BORDER_U); + px = min(px, TILESIZE - px); + py = min(py, TILESIZE - py); + possible &=~ (px < py ? (BORDER_U|BORDER_D) : (BORDER_L|BORDER_R)); + + for (dir = 0; dir < 4 && BORDER(dir) != possible; ++dir); + if (dir == 4) return NULL; /* there's not exactly one such edge */ + + hx = gx + dx[dir]; + hy = gy + dy[dir]; + + if (OUT_OF_BOUNDS(hx, hy, w, h)) return NULL; + + ui->show = FALSE; + + i = gy * w + gx; + switch ((button == RIGHT_BUTTON) | + ((state->borders[i] & BORDER(dir)) >> dir << 1) | + ((state->borders[i] & DISABLED(BORDER(dir))) >> dir >> 2)) { + + case MAYBE_LEFT: + case ON_LEFT: + case ON_RIGHT: + return string(80, "F%d,%d,%dF%d,%d,%d", + gx, gy, BORDER(dir), + hx, hy, BORDER(FLIP(dir))); + + case MAYBE_RIGHT: + case OFF_LEFT: + case OFF_RIGHT: + return string(80, "F%d,%d,%dF%d,%d,%d", + gx, gy, DISABLED(BORDER(dir)), + hx, hy, DISABLED(BORDER(FLIP(dir)))); + } + } + + if (IS_CURSOR_MOVE(button)) { + ui->show = TRUE; + if (control || shift) { + borderflag flag = 0, newflag; + int dir, i = ui->y * w + ui->x; + x = ui->x; + y = ui->y; + move_cursor(button, &x, &y, w, h, FALSE); + if (OUT_OF_BOUNDS(x, y, w, h)) return NULL; + + for (dir = 0; dir < 4; ++dir) + if (dx[dir] == x - ui->x && dy[dir] == y - ui->y) break; + if (dir == 4) return NULL; /* how the ... ?! */ + + if (control) flag |= BORDER(dir); + if (shift) flag |= DISABLED(BORDER(dir)); + + newflag = state->borders[i] ^ flag; + if (newflag & BORDER(dir) && newflag & DISABLED(BORDER(dir))) + return NULL; + + newflag = 0; + if (control) newflag |= BORDER(FLIP(dir)); + if (shift) newflag |= DISABLED(BORDER(FLIP(dir))); + return string(80, "F%d,%d,%dF%d,%d,%d", + ui->x, ui->y, flag, x, y, newflag); + } else { + move_cursor(button, &ui->x, &ui->y, w, h, FALSE); + return ""; + } + } + + return NULL; +} + +static game_state *execute_move(const game_state *state, const char *move) +{ + int w = state->shared->params.w, h = state->shared->params.h, wh = w * h; + game_state *ret = dup_game(state); + int nchars, x, y, flag; + + if (*move == 'S') { + int i; + ++move; + for (i = 0; i < wh && move[i]; ++i) + ret->borders[i] = + (move[i] & BORDER_MASK) | DISABLED(~move[i] & BORDER_MASK); + if (i < wh || move[i]) return NULL; /* leaks `ret', then we die */ + ret->cheated = ret->completed = TRUE; + return ret; + } + + while (sscanf(move, "F%d,%d,%d%n", &x, &y, &flag, &nchars) == 3 && + !OUT_OF_BOUNDS(x, y, w, h)) { + move += nchars; + ret->borders[y*w + x] ^= flag; + } + + if (*move) return NULL; /* leaks `ret', then we die */ + + if (!ret->completed) + ret->completed = is_solved(&ret->shared->params, ret->shared->clues, + ret->borders); + + return ret; +} + +/* --- Drawing routines --------------------------------------------- */ + +static void game_compute_size(const game_params *params, int tilesize, + int *x, int *y) +{ + *x = (params->w + 1) * tilesize; + *y = (params->h + 1) * tilesize; +} + +static void game_set_size(drawing *dr, game_drawstate *ds, + const game_params *params, int tilesize) +{ + ds->tilesize = tilesize; +} + +enum { + COL_BACKGROUND, + COL_FLASH, + COL_GRID, + COL_CLUE = COL_GRID, + COL_LINE_YES = COL_GRID, + COL_LINE_MAYBE, + COL_LINE_NO, + COL_ERROR, + + NCOLOURS +}; + +#define COLOUR(i, r, g, b) \ + ((ret[3*(i)+0] = (r)), (ret[3*(i)+1] = (g)), (ret[3*(i)+2] = (b))) +#define DARKER 0.9F + +static float *game_colours(frontend *fe, int *ncolours) +{ + float *ret = snewn(3 * NCOLOURS, float); + + game_mkhighlight(fe, ret, COL_BACKGROUND, -1, COL_FLASH); + + COLOUR(COL_GRID, 0.0F, 0.0F, 0.0F); /* black */ + COLOUR(COL_ERROR, 1.0F, 0.0F, 0.0F); /* red */ + + COLOUR(COL_LINE_MAYBE, /* yellow */ + ret[COL_BACKGROUND*3 + 0] * DARKER, + ret[COL_BACKGROUND*3 + 1] * DARKER, + 0.0F); + + COLOUR(COL_LINE_NO, + ret[COL_BACKGROUND*3 + 0] * DARKER, + ret[COL_BACKGROUND*3 + 1] * DARKER, + ret[COL_BACKGROUND*3 + 2] * DARKER); + + *ncolours = NCOLOURS; + return ret; +} +#undef COLOUR + +#define BORDER_ERROR(x) ((x) << 8) +#define F_ERROR_U BORDER_ERROR(BORDER_U) /* BIT( 8) */ +#define F_ERROR_R BORDER_ERROR(BORDER_R) /* BIT( 9) */ +#define F_ERROR_D BORDER_ERROR(BORDER_D) /* BIT(10) */ +#define F_ERROR_L BORDER_ERROR(BORDER_L) /* BIT(11) */ +#define F_ERROR_CLUE BIT(12) +#define F_FLASH BIT(13) +#define F_CURSOR BIT(14) + +static game_drawstate *game_new_drawstate(drawing *dr, const game_state *state) +{ + struct game_drawstate *ds = snew(struct game_drawstate); + + ds->tilesize = 0; + ds->grid = NULL; + + return ds; +} + +static void game_free_drawstate(drawing *dr, game_drawstate *ds) +{ + sfree(ds->grid); + sfree(ds); +} + +#define COLOUR(border) \ + (flags & BORDER_ERROR((border)) ? COL_ERROR : \ + flags & (border) ? COL_LINE_YES : \ + flags & DISABLED((border)) ? COL_LINE_NO : \ + COL_LINE_MAYBE) + +static void draw_tile(drawing *dr, game_drawstate *ds, int r, int c, + dsflags flags, int clue) +{ + int x = MARGIN + TILESIZE * c, y = MARGIN + TILESIZE * r; + + clip(dr, x, y, TILESIZE + WIDTH, TILESIZE + WIDTH); /* { */ + + draw_rect(dr, x + WIDTH, y + WIDTH, TILESIZE - WIDTH, TILESIZE - WIDTH, + (flags & F_FLASH ? COL_FLASH : COL_BACKGROUND)); + + if (flags & F_CURSOR) + draw_rect_corners(dr, x + CENTER, y + CENTER, TILESIZE / 3, COL_GRID); + + if (clue != EMPTY) { + char buf[2]; + buf[0] = '0' + clue; + buf[1] = '\0'; + draw_text(dr, x + CENTER, y + CENTER, FONT_VARIABLE, + TILESIZE / 2, ALIGN_VCENTRE | ALIGN_HCENTRE, + (flags & F_ERROR_CLUE ? COL_ERROR : COL_CLUE), buf); + } + + +#define ts TILESIZE +#define w WIDTH + draw_rect(dr, x + w, y, ts - w, w, COLOUR(BORDER_U)); + draw_rect(dr, x + ts, y + w, w, ts - w, COLOUR(BORDER_R)); + draw_rect(dr, x + w, y + ts, ts - w, w, COLOUR(BORDER_D)); + draw_rect(dr, x, y + w, w, ts - w, COLOUR(BORDER_L)); +#undef ts +#undef w + + unclip(dr); /* } */ + draw_update(dr, x, y, TILESIZE + WIDTH, TILESIZE + WIDTH); +} + +#define FLASH_TIME 0.7F + +static void game_redraw(drawing *dr, game_drawstate *ds, + const game_state *oldstate, const game_state *state, + int dir, const game_ui *ui, + float animtime, float flashtime) +{ + int w = state->shared->params.w, h = state->shared->params.h, wh = w*h; + int r, c, i, flash = ((int) (flashtime * 5 / FLASH_TIME)) % 2; + int *black_border_dsf = snew_dsf(wh), *yellow_border_dsf = snew_dsf(wh); + int k = state->shared->params.k; + + if (!ds->grid) { + char buf[40]; + int bgw = (w+1) * ds->tilesize, bgh = (h+1) * ds->tilesize; + draw_rect(dr, 0, 0, bgw, bgh, COL_BACKGROUND); + + for (r = 0; r <= h; ++r) + for (c = 0; c <= w; ++c) + draw_rect(dr, MARGIN + TILESIZE * c, MARGIN + TILESIZE * r, + WIDTH, WIDTH, COL_GRID); + draw_update(dr, 0, 0, bgw, bgh); + + snewa(ds->grid, wh); + setmem(ds->grid, ~0, wh); + + sprintf(buf, "Region size: %d", state->shared->params.k); + status_bar(dr, buf); + } + + for (i = 0; i < wh; ++i) { + if (black_border_dsf[i] == UNVISITED) + dfs_dsf(i, w, state->borders, black_border_dsf, TRUE); + if (yellow_border_dsf[i] == UNVISITED) + dfs_dsf(i, w, state->borders, yellow_border_dsf, FALSE); + } + + for (r = 0; r < h; ++r) + for (c = 0; c < w; ++c) { + int i = r * w + c, clue = state->shared->clues[i], flags, dir; + int on = bitcount[state->borders[i] & BORDER_MASK]; + int off = bitcount[(state->borders[i] >> 4) & BORDER_MASK]; + + flags = state->borders[i]; + + if (flash) flags |= F_FLASH; + + if (clue != EMPTY && (on > clue || clue > 4 - off)) + flags |= F_ERROR_CLUE; + + if (ui->show && ui->x == c && ui->y == r) + flags |= F_CURSOR; + + /* border errors */ + for (dir = 0; dir < 4; ++dir) { + int rr = r + dy[dir], cc = c + dx[dir], ii = rr * w + cc; + + if (OUT_OF_BOUNDS(cc, rr, w, h)) continue; + + /* we draw each border twice, except the outermost + * big border, so we have to check for errors on + * both sides of each border.*/ + if (/* region too large */ + ((dsf_size(yellow_border_dsf, i) > k || + dsf_size(yellow_border_dsf, ii) > k) && + (dsf_canonify(yellow_border_dsf, i) != + dsf_canonify(yellow_border_dsf, ii))) + + || + /* region too small */ + ((dsf_size(black_border_dsf, i) < k || + dsf_size(black_border_dsf, ii) < k) && + dsf_canonify(black_border_dsf, i) != + dsf_canonify(black_border_dsf, ii)) + + || + /* dangling borders within a single region */ + ((state->borders[i] & BORDER(dir)) && + /* we know it's a single region because there's a + * path crossing no border from i to ii... */ + (dsf_canonify(yellow_border_dsf, i) == + dsf_canonify(yellow_border_dsf, ii) || + /* or because any such border would be an error */ + (dsf_size(black_border_dsf, i) <= k && + dsf_canonify(black_border_dsf, i) == + dsf_canonify(black_border_dsf, ii))))) + + flags |= BORDER_ERROR(BORDER(dir)); + } + + if (flags == ds->grid[i]) continue; + ds->grid[i] = flags; + draw_tile(dr, ds, r, c, ds->grid[i], clue); + } + + sfree(black_border_dsf); + sfree(yellow_border_dsf); +} + +static float game_anim_length(const game_state *oldstate, + const game_state *newstate, + int dir, game_ui *ui) +{ + return 0.0F; +} + +static float game_flash_length(const game_state *oldstate, + const game_state *newstate, + int dir, game_ui *ui) +{ + if (newstate->completed && !newstate->cheated && !oldstate->completed) + return FLASH_TIME; + return 0.0F; +} + +static int game_status(const game_state *state) +{ + return state->completed ? +1 : 0; +} + +static int game_timing_state(const game_state *state, game_ui *ui) +{ + assert (!"this shouldn't get called"); + return 0; /* placate optimiser */ +} + +static void game_print_size(const game_params *params, float *x, float *y) +{ + int pw, ph; + + game_compute_size(params, 700, &pw, &ph); /* 7mm, like loopy */ + + *x = pw / 100.0F; + *y = ph / 100.0F; +} + +static void print_line(drawing *dr, int x1, int y1, int x2, int y2, + int colour, int full) +{ + if (!full) { + int i, subdivisions = 8; + for (i = 1; i < subdivisions; ++i) { + int x = (x1 * (subdivisions - i) + x2 * i) / subdivisions; + int y = (y1 * (subdivisions - i) + y2 * i) / subdivisions; + draw_circle(dr, x, y, 3, colour, colour); + } + } else draw_line(dr, x1, y1, x2, y2, colour); +} + +static void game_print(drawing *dr, const game_state *state, int tilesize) +{ + int w = state->shared->params.w, h = state->shared->params.h; + int ink = print_mono_colour(dr, 0); + game_drawstate for_tilesize_macros, *ds = &for_tilesize_macros; + int r, c; + + ds->tilesize = tilesize; + + for (r = 0; r < h; ++r) + for (c = 0; c < w; ++c) { + int x = MARGIN + TILESIZE * c, y = MARGIN + TILESIZE * r; + int i = r * w + c, clue = state->shared->clues[i]; + + if (clue != EMPTY) { + char buf[2]; + buf[0] = '0' + clue; + buf[1] = '\0'; + draw_text(dr, x + CENTER, y + CENTER, FONT_VARIABLE, + TILESIZE / 2, ALIGN_VCENTRE | ALIGN_HCENTRE, + ink, buf); + } + +#define ts TILESIZE +#define FULL(DIR) (state->borders[i] & (BORDER_ ## DIR)) + print_line(dr, x, y, x + ts, y, ink, FULL(U)); + print_line(dr, x + ts, y, x + ts, y + ts, ink, FULL(R)); + print_line(dr, x, y + ts, x + ts, y + ts, ink, FULL(D)); + print_line(dr, x, y, x, y + ts, ink, FULL(L)); +#undef ts +#undef FULL + } + + for (r = 1; r < h; ++r) + for (c = 1; c < w; ++c) { + int j = r * w + c, i = j - 1 - w; + int x = MARGIN + TILESIZE * c, y = MARGIN + TILESIZE * r; + if (state->borders[i] & (BORDER_D|BORDER_R)) continue; + if (state->borders[j] & (BORDER_U|BORDER_L)) continue; + draw_circle(dr, x, y, 3, ink, ink); + } +} + +#ifdef COMBINED +#define thegame palisade +#endif + +const struct game thegame = { + "Palisade", "games.palisade", "palisade", + default_params, + game_fetch_preset, + decode_params, + encode_params, + free_params, + dup_params, + TRUE, game_configure, custom_params, + validate_params, + new_game_desc, + validate_desc, + new_game, + dup_game, + free_game, + TRUE, solve_game, + TRUE, game_can_format_as_text_now, game_text_format, + new_ui, + free_ui, + encode_ui, + decode_ui, + game_changed_state, + interpret_move, + execute_move, + 48, game_compute_size, game_set_size, + game_colours, + game_new_drawstate, + game_free_drawstate, + game_redraw, + game_anim_length, + game_flash_length, + game_status, + TRUE, FALSE, game_print_size, game_print, + TRUE, /* wants_statusbar */ + FALSE, game_timing_state, + 0, /* flags */ +}; diff -Nru sgt-puzzles-20140928.r10274/palisade.R sgt-puzzles-20160429.b31155b/palisade.R --- sgt-puzzles-20140928.r10274/palisade.R 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/palisade.R 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,21 @@ +# -*- makefile -*- + +PALISADE_EXTRA = divvy dsf + +palisade : [X] GTK COMMON palisade PALISADE_EXTRA palisade-icon|no-icon + +palisade : [G] WINDOWS COMMON palisade PALISADE_EXTRA palisade.res|noicon.res + +ALL += palisade[COMBINED] PALISADE_EXTRA + +!begin am gtk +GAMES += palisade +!end + +!begin >list.c + A(palisade) \ +!end + +!begin >gamedesc.txt +palisade:palisade.exe:Palisade:Grid-division puzzle:Divide the grid into equal-sized areas in accordance with the clues. +!end diff -Nru sgt-puzzles-20140928.r10274/pattern.c sgt-puzzles-20160429.b31155b/pattern.c --- sgt-puzzles-20140928.r10274/pattern.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/pattern.c 2016-04-29 00:30:09.000000000 +0000 @@ -45,11 +45,18 @@ #define GRID_FULL 1 #define GRID_EMPTY 0 -struct game_state { +typedef struct game_state_common { + /* Parts of the game state that don't change during play. */ int w, h; - unsigned char *grid; int rowsize; int *rowdata, *rowlen; + unsigned char *immutable; + int refcount; +} game_state_common; + +struct game_state { + game_state_common *common; + unsigned char *grid; int completed, cheated; }; @@ -219,6 +226,7 @@ * it's useful to anyone.) */ +#ifndef STANDALONE_PICTURE_GENERATOR static int float_compare(const void *av, const void *bv) { const float *a = (const float *)av; @@ -312,6 +320,7 @@ sfree(fgrid); } +#endif static int compute_rowdata(int *ret, unsigned char *start, int len, int step) { @@ -435,7 +444,12 @@ for (i = len - 1; i >= 0 && known[i] == DOT; i--) freespace--; - do_recurse(known, deduced, row, minpos_done, maxpos_done, minpos_ok, maxpos_ok, data, len, freespace, 0, 0); + if (rowlen == 0) { + memset(deduced, DOT, len); + } else { + do_recurse(known, deduced, row, minpos_done, maxpos_done, minpos_ok, + maxpos_ok, data, len, freespace, 0, 0); + } done_any = FALSE; for (i=0; icommon->rowdata!=NULL) ^ (grid!=NULL)); max = max(w, h); memset(matrix, 0, w*h); + if (state) { + for (i=0; icommon->immutable[i]) + matrix[i] = state->grid[i]; + } + } /* For each column, compute how many squares can be deduced - * from just the row-data. + * from just the row-data and initial clues. * Later, changed_* will hold how many squares were changed * in every row/column in the previous iteration * Changed_* is used to choose the next rows / cols to re-examine */ for (i=0; irowdata + state->rowsize*(w+i), max*sizeof(int)); - rowdata[state->rowlen[w+i]] = 0; + int freespace, rowlen; + if (state && state->common->rowdata) { + memcpy(rowdata, state->common->rowdata + state->common->rowsize*(w+i), max*sizeof(int)); + rowlen = state->common->rowlen[w+i]; } else { - rowdata[compute_rowdata(rowdata, grid+i*w, w, 1)] = 0; + rowlen = compute_rowdata(rowdata, grid+i*w, w, 1); } - for (j=0, freespace=w+1; rowdata[j]; j++) freespace -= rowdata[j] + 1; - for (j=0, changed_h[i]=0; rowdata[j]; j++) - if (rowdata[j] > freespace) - changed_h[i] += rowdata[j] - freespace; + rowdata[rowlen] = 0; + if (rowlen == 0) { + changed_h[i] = w; + } else { + for (j=0, freespace=w+1; rowdata[j]; j++) + freespace -= rowdata[j] + 1; + for (j=0, changed_h[i]=0; rowdata[j]; j++) + if (rowdata[j] > freespace) + changed_h[i] += rowdata[j] - freespace; + } + for (j = 0; j < w; j++) + if (matrix[i*w+j]) + changed_h[i]++; } for (i=0,max_h=0; i max_h) max_h = changed_h[i]; for (i=0; irowdata + state->rowsize*i, max*sizeof(int)); - rowdata[state->rowlen[i]] = 0; + int freespace, rowlen; + if (state && state->common->rowdata) { + memcpy(rowdata, state->common->rowdata + state->common->rowsize*i, max*sizeof(int)); + rowlen = state->common->rowlen[i]; } else { - rowdata[compute_rowdata(rowdata, grid+i, h, w)] = 0; + rowlen = compute_rowdata(rowdata, grid+i, h, w); } - for (j=0, freespace=h+1; rowdata[j]; j++) freespace -= rowdata[j] + 1; - for (j=0, changed_w[i]=0; rowdata[j]; j++) - if (rowdata[j] > freespace) - changed_w[i] += rowdata[j] - freespace; + rowdata[rowlen] = 0; + if (rowlen == 0) { + changed_w[i] = h; + } else { + for (j=0, freespace=h+1; rowdata[j]; j++) + freespace -= rowdata[j] + 1; + for (j=0, changed_w[i]=0; rowdata[j]; j++) + if (rowdata[j] > freespace) + changed_w[i] += rowdata[j] - freespace; + } + for (j = 0; j < h; j++) + if (matrix[j*w+i]) + changed_w[i]++; } for (i=0,max_w=0; i max_w) @@ -541,9 +579,9 @@ for (; max_h && max_h >= max_w; max_h--) { for (i=0; i= max_h) { - if (state) { - memcpy(rowdata, state->rowdata + state->rowsize*(w+i), max*sizeof(int)); - rowdata[state->rowlen[w+i]] = 0; + if (state && state->common->rowdata) { + memcpy(rowdata, state->common->rowdata + state->common->rowsize*(w+i), max*sizeof(int)); + rowdata[state->common->rowlen[w+i]] = 0; } else { rowdata[compute_rowdata(rowdata, grid+i*w, w, 1)] = 0; } @@ -565,9 +603,9 @@ for (; max_w && max_w >= max_h; max_w--) { for (i=0; i= max_w) { - if (state) { - memcpy(rowdata, state->rowdata + state->rowsize*i, max*sizeof(int)); - rowdata[state->rowlen[i]] = 0; + if (state && state->common->rowdata) { + memcpy(rowdata, state->common->rowdata + state->common->rowsize*i, max*sizeof(int)); + rowdata[state->common->rowlen[i]] = 0; } else { rowdata[compute_rowdata(rowdata, grid+i, h, w)] = 0; } @@ -599,6 +637,7 @@ return ok; } +#ifndef STANDALONE_PICTURE_GENERATOR static unsigned char *generate_soluble(random_state *rs, int w, int h) { int i, j, ok, ntries, max; @@ -662,6 +701,11 @@ sfree(rowdata); return grid; } +#endif + +#ifdef STANDALONE_PICTURE_GENERATOR +unsigned char *picture; +#endif static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) @@ -670,15 +714,63 @@ int i, j, max, rowlen, *rowdata; char intbuf[80], *desc; int desclen, descpos; +#ifdef STANDALONE_PICTURE_GENERATOR + game_state *state; + int *index; +#endif - grid = generate_soluble(rs, params->w, params->h); max = max(params->w, params->h); + +#ifdef STANDALONE_PICTURE_GENERATOR + /* + * Fixed input picture. + */ + grid = snewn(params->w * params->h, unsigned char); + memcpy(grid, picture, params->w * params->h); + + /* + * Now winnow the immutable square set as far as possible. + */ + state = snew(game_state); + state->grid = grid; + state->common = snew(game_state_common); + state->common->rowdata = NULL; + state->common->immutable = snewn(params->w * params->h, unsigned char); + memset(state->common->immutable, 1, params->w * params->h); + + index = snewn(params->w * params->h, int); + for (i = 0; i < params->w * params->h; i++) + index[i] = i; + shuffle(index, params->w * params->h, sizeof(*index), rs); + + { + unsigned char *matrix = snewn(params->w*params->h, unsigned char); + unsigned char *workspace = snewn(max*7, unsigned char); + unsigned int *changed_h = snewn(max+1, unsigned int); + unsigned int *changed_w = snewn(max+1, unsigned int); + int *rowdata = snewn(max+1, int); + for (i = 0; i < params->w * params->h; i++) { + state->common->immutable[index[i]] = 0; + if (!solve_puzzle(state, grid, params->w, params->h, + matrix, workspace, changed_h, changed_w, + rowdata, 0)) + state->common->immutable[index[i]] = 1; + } + sfree(workspace); + sfree(changed_h); + sfree(changed_w); + sfree(rowdata); + sfree(matrix); + } +#else + grid = generate_soluble(rs, params->w, params->h); +#endif rowdata = snewn(max, int); /* * Save the solved game in aux. */ - { + if (aux) { char *ai = snewn(params->w * params->h + 2, char); /* @@ -745,6 +837,40 @@ assert(descpos == desclen); assert(desc[desclen-1] == '/'); desc[desclen-1] = '\0'; +#ifdef STANDALONE_PICTURE_GENERATOR + for (i = 0; i < params->w * params->h; i++) + if (state->common->immutable[i]) + break; + if (i < params->w * params->h) { + /* + * At least one immutable square, so we need a suffix. + */ + int run; + + desc = sresize(desc, desclen + params->w * params->h + 3, char); + desc[descpos-1] = ','; + + run = 0; + for (i = 0; i < params->w * params->h; i++) { + if (!state->common->immutable[i]) { + run++; + if (run == 25) { + desc[descpos++] = 'z'; + run = 0; + } + } else { + desc[descpos++] = run + (grid[i] == GRID_FULL ? 'A' : 'a'); + run = 0; + } + } + if (run > 0) + desc[descpos++] = run + 'a'; + desc[descpos] = '\0'; + } + sfree(state->common->immutable); + sfree(state->common); + sfree(state); +#endif sfree(rowdata); sfree(grid); return desc; @@ -782,13 +908,41 @@ if (desc[-1] == '/') { if (i+1 == params->w + params->h) return "too many row/column specifications"; - } else if (desc[-1] == '\0') { + } else if (desc[-1] == '\0' || desc[-1] == ',') { if (i+1 < params->w + params->h) return "too few row/column specifications"; } else return "unrecognised character in game specification"; } + if (desc[-1] == ',') { + /* + * Optional extra piece of game description which fills in + * some grid squares as extra clues. + */ + i = 0; + while (i < params->w * params->h) { + int c = (unsigned char)*desc++; + if ((c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z')) { + int len = tolower(c) - 'a'; + i += len; + if (len < 25 && i < params->w*params->h) + i++; + if (i > params->w * params->h) { + return "too much data in clue-squares section"; + } + } else if (!c) { + return "too little data in clue-squares section"; + } else { + return "unrecognised character in clue-squares section"; + } + } + if (*desc) { + return "too much data in clue-squares section"; + } + } + return NULL; } @@ -799,25 +953,32 @@ const char *p; game_state *state = snew(game_state); - state->w = params->w; - state->h = params->h; + state->common = snew(game_state_common); + state->common->refcount = 1; - state->grid = snewn(state->w * state->h, unsigned char); - memset(state->grid, GRID_UNKNOWN, state->w * state->h); + state->common->w = params->w; + state->common->h = params->h; - state->rowsize = max(state->w, state->h); - state->rowdata = snewn(state->rowsize * (state->w + state->h), int); - state->rowlen = snewn(state->w + state->h, int); + state->grid = snewn(state->common->w * state->common->h, unsigned char); + memset(state->grid, GRID_UNKNOWN, state->common->w * state->common->h); + + state->common->immutable = snewn(state->common->w * state->common->h, + unsigned char); + memset(state->common->immutable, 0, state->common->w * state->common->h); + + state->common->rowsize = max(state->common->w, state->common->h); + state->common->rowdata = snewn(state->common->rowsize * (state->common->w + state->common->h), int); + state->common->rowlen = snewn(state->common->w + state->common->h, int); state->completed = state->cheated = FALSE; for (i = 0; i < params->w + params->h; i++) { - state->rowlen[i] = 0; + state->common->rowlen[i] = 0; if (*desc && isdigit((unsigned char)*desc)) { do { p = desc; while (*desc && isdigit((unsigned char)*desc)) desc++; - state->rowdata[state->rowsize * i + state->rowlen[i]++] = + state->common->rowdata[state->common->rowsize * i + state->common->rowlen[i]++] = atoi(p); } while (*desc++ == '.'); } else { @@ -825,6 +986,24 @@ } } + if (desc[-1] == ',') { + /* + * Optional extra piece of game description which fills in + * some grid squares as extra clues. + */ + i = 0; + while (i < params->w * params->h) { + int c = (unsigned char)*desc++; + int full = isupper(c), len = tolower(c) - 'a'; + i += len; + if (len < 25 && i < params->w*params->h) { + state->grid[i] = full ? GRID_FULL : GRID_EMPTY; + state->common->immutable[i] = TRUE; + i++; + } + } + } + return state; } @@ -832,19 +1011,11 @@ { game_state *ret = snew(game_state); - ret->w = state->w; - ret->h = state->h; - - ret->grid = snewn(ret->w * ret->h, unsigned char); - memcpy(ret->grid, state->grid, ret->w * ret->h); + ret->common = state->common; + ret->common->refcount++; - ret->rowsize = state->rowsize; - ret->rowdata = snewn(ret->rowsize * (ret->w + ret->h), int); - ret->rowlen = snewn(ret->w + ret->h, int); - memcpy(ret->rowdata, state->rowdata, - ret->rowsize * (ret->w + ret->h) * sizeof(int)); - memcpy(ret->rowlen, state->rowlen, - (ret->w + ret->h) * sizeof(int)); + ret->grid = snewn(ret->common->w * ret->common->h, unsigned char); + memcpy(ret->grid, state->grid, ret->common->w * ret->common->h); ret->completed = state->completed; ret->cheated = state->cheated; @@ -854,8 +1025,12 @@ static void free_game(game_state *state) { - sfree(state->rowdata); - sfree(state->rowlen); + if (--state->common->refcount == 0) { + sfree(state->common->rowdata); + sfree(state->common->rowlen); + sfree(state->common->immutable); + sfree(state->common); + } sfree(state->grid); sfree(state); } @@ -864,7 +1039,7 @@ const char *ai, char **error) { unsigned char *matrix; - int w = state->w, h = state->h; + int w = state->common->w, h = state->common->h; int i; char *ret; int max, ok; @@ -919,7 +1094,89 @@ static char *game_text_format(const game_state *state) { - return NULL; + int w = state->common->w, h = state->common->h, i, j; + int left_gap = 0, top_gap = 0, ch = 2, cw = 1, limit = 1; + + int len, topleft, lw, lh, gw, gh; /* {line,grid}_{width,height} */ + char *board, *buf; + + for (i = 0; i < w; ++i) { + top_gap = max(top_gap, state->common->rowlen[i]); + for (j = 0; j < state->common->rowlen[i]; ++j) + while (state->common->rowdata[i*state->common->rowsize + j] >= limit) { + ++cw; + limit *= 10; + } + } + for (i = 0; i < h; ++i) { + int rowlen = 0, predecessors = FALSE; + for (j = 0; j < state->common->rowlen[i+w]; ++j) { + int copy = state->common->rowdata[(i+w)*state->common->rowsize + j]; + rowlen += predecessors; + predecessors = TRUE; + do ++rowlen; while (copy /= 10); + } + left_gap = max(left_gap, rowlen); + } + + cw = max(cw, 3); + + gw = w*cw + 2; + gh = h*ch + 1; + lw = gw + left_gap; + lh = gh + top_gap; + len = lw * lh; + topleft = lw * top_gap + left_gap; + + board = snewn(len + 1, char); + sprintf(board, "%*s\n", len - 2, ""); + + for (i = 0; i < lh; ++i) { + board[lw - 1 + i*lw] = '\n'; + if (i < top_gap) continue; + board[lw - 2 + i*lw] = ((i - top_gap) % ch ? '|' : '+'); + } + + for (i = 0; i < w; ++i) { + for (j = 0; j < state->common->rowlen[i]; ++j) { + int cell = topleft + i*cw + 1 + lw*(j - state->common->rowlen[i]); + int nch = sprintf(board + cell, "%*d", cw - 1, + state->common->rowdata[i*state->common->rowsize + j]); + board[cell + nch] = ' '; /* de-NUL-ify */ + } + } + + buf = snewn(left_gap, char); + for (i = 0; i < h; ++i) { + char *p = buf, *start = board + top_gap*lw + left_gap + (i*ch+1)*lw; + for (j = 0; j < state->common->rowlen[i+w]; ++j) { + if (p > buf) *p++ = ' '; + p += sprintf(p, "%d", state->common->rowdata[(i+w)*state->common->rowsize + j]); + } + memcpy(start - (p - buf), buf, p - buf); + } + + for (i = 0; i < w; ++i) { + for (j = 0; j < h; ++j) { + int cell = topleft + i*cw + j*ch*lw; + int center = cell + cw/2 + (ch/2)*lw; + int dx, dy; + board[cell] = 0 ? center : '+'; + for (dx = 1; dx < cw; ++dx) board[cell + dx] = '-'; + for (dy = 1; dy < ch; ++dy) board[cell + dy*lw] = '|'; + if (state->grid[i*w+j] == GRID_UNKNOWN) continue; + for (dx = 1; dx < cw; ++dx) + for (dy = 1; dy < ch; ++dy) + board[cell + dx + dy*lw] = + state->grid[i*w+j] == GRID_FULL ? '#' : '.'; + } + } + + memcpy(board + topleft + h*ch*lw, board + topleft, gw - 1); + + sfree(buf); + + return board; } struct game_ui { @@ -974,16 +1231,17 @@ const game_drawstate *ds, int x, int y, int button) { + int control = button & MOD_CTRL, shift = button & MOD_SHFT; button &= ~MOD_MASK; - x = FROMCOORD(state->w, x); - y = FROMCOORD(state->h, y); + x = FROMCOORD(state->common->w, x); + y = FROMCOORD(state->common->h, y); - if (x >= 0 && x < state->w && y >= 0 && y < state->h && + if (x >= 0 && x < state->common->w && y >= 0 && y < state->common->h && (button == LEFT_BUTTON || button == RIGHT_BUTTON || button == MIDDLE_BUTTON)) { #ifdef STYLUS_BASED - int currstate = state->grid[y * state->w + x]; + int currstate = state->grid[y * state->common->w + x]; #endif ui->dragging = TRUE; @@ -1037,8 +1295,8 @@ if (x < 0) x = 0; if (y < 0) y = 0; - if (x >= state->w) x = state->w - 1; - if (y >= state->h) y = state->h - 1; + if (x >= state->common->w) x = state->common->w - 1; + if (y >= state->common->h) y = state->common->h - 1; ui->drag_end_x = x; ui->drag_end_y = y; @@ -1057,7 +1315,8 @@ for (yy = y1; yy <= y2; yy++) for (xx = x1; xx <= x2; xx++) - if (state->grid[yy * state->w + xx] != ui->state) + if (!state->common->immutable[yy * state->common->w + xx] && + state->grid[yy * state->common->w + xx] != ui->state) move_needed = TRUE; ui->dragging = FALSE; @@ -1074,12 +1333,25 @@ } if (IS_CURSOR_MOVE(button)) { - move_cursor(button, &ui->cur_x, &ui->cur_y, state->w, state->h, 0); + int x = ui->cur_x, y = ui->cur_y, newstate; + char buf[80]; + move_cursor(button, &ui->cur_x, &ui->cur_y, state->common->w, state->common->h, 0); ui->cur_visible = 1; - return ""; + if (!control && !shift) return ""; + + newstate = control ? shift ? GRID_UNKNOWN : GRID_FULL : GRID_EMPTY; + if (state->grid[y * state->common->w + x] == newstate && + state->grid[ui->cur_y * state->common->w + ui->cur_x] == newstate) + return ""; + + sprintf(buf, "%c%d,%d,%d,%d", control ? shift ? 'U' : 'F' : 'E', + min(x, ui->cur_x), min(y, ui->cur_y), + abs(x - ui->cur_x) + 1, abs(y - ui->cur_y) + 1); + return dupstr(buf); } + if (IS_CURSOR_SELECT(button)) { - int currstate = state->grid[ui->cur_y * state->w + ui->cur_x]; + int currstate = state->grid[ui->cur_y * state->common->w + ui->cur_x]; int newstate; char buf[80]; @@ -1111,12 +1383,13 @@ int x1, x2, y1, y2, xx, yy; int val; - if (move[0] == 'S' && strlen(move) == from->w * from->h + 1) { + if (move[0] == 'S' && + strlen(move) == from->common->w * from->common->h + 1) { int i; ret = dup_game(from); - for (i = 0; i < ret->w * ret->h; i++) + for (i = 0; i < ret->common->w * ret->common->h; i++) ret->grid[i] = (move[i+1] == '1' ? GRID_FULL : GRID_EMPTY); ret->completed = ret->cheated = TRUE; @@ -1124,8 +1397,8 @@ return ret; } else if ((move[0] == 'F' || move[0] == 'E' || move[0] == 'U') && sscanf(move+1, "%d,%d,%d,%d", &x1, &y1, &x2, &y2) == 4 && - x1 >= 0 && x2 >= 0 && x1+x2 <= from->w && - y1 >= 0 && y2 >= 0 && y1+y2 <= from->h) { + x1 >= 0 && x2 >= 0 && x1+x2 <= from->common->w && + y1 >= 0 && y2 >= 0 && y1+y2 <= from->common->h) { x2 += x1; y2 += y1; @@ -1135,34 +1408,36 @@ ret = dup_game(from); for (yy = y1; yy < y2; yy++) for (xx = x1; xx < x2; xx++) - ret->grid[yy * ret->w + xx] = val; + if (!ret->common->immutable[yy * ret->common->w + xx]) + ret->grid[yy * ret->common->w + xx] = val; /* * An actual change, so check to see if we've completed the * game. */ if (!ret->completed) { - int *rowdata = snewn(ret->rowsize, int); + int *rowdata = snewn(ret->common->rowsize, int); int i, len; ret->completed = TRUE; - for (i=0; iw; i++) { - len = compute_rowdata(rowdata, - ret->grid+i, ret->h, ret->w); - if (len != ret->rowlen[i] || - memcmp(ret->rowdata+i*ret->rowsize, rowdata, - len * sizeof(int))) { + for (i=0; icommon->w; i++) { + len = compute_rowdata(rowdata, ret->grid+i, + ret->common->h, ret->common->w); + if (len != ret->common->rowlen[i] || + memcmp(ret->common->rowdata+i*ret->common->rowsize, + rowdata, len * sizeof(int))) { ret->completed = FALSE; break; } } - for (i=0; ih; i++) { - len = compute_rowdata(rowdata, - ret->grid+i*ret->w, ret->w, 1); - if (len != ret->rowlen[i+ret->w] || - memcmp(ret->rowdata+(i+ret->w)*ret->rowsize, rowdata, - len * sizeof(int))) { + for (i=0; icommon->h; i++) { + len = compute_rowdata(rowdata, ret->grid+i*ret->common->w, + ret->common->w, 1); + if (len != ret->common->rowlen[i+ret->common->w] || + memcmp(ret->common->rowdata + + (i+ret->common->w)*ret->common->rowsize, + rowdata, len * sizeof(int))) { ret->completed = FALSE; break; } @@ -1288,20 +1563,20 @@ int val, runlen; struct errcheck_state aes, *es = &aes; - es->rowlen = state->rowlen[i]; - es->rowdata = state->rowdata + state->rowsize * i; + es->rowlen = state->common->rowlen[i]; + es->rowdata = state->common->rowdata + state->common->rowsize * i; /* Pretend that we've already encountered the initial zero run */ es->ncontig = 1; es->rowpos = 0; - if (i < state->w) { + if (i < state->common->w) { start = i; - step = state->w; - end = start + step * state->h; + step = state->common->w; + end = start + step * state->common->h; } else { - start = (i - state->w) * state->w; + start = (i - state->common->w) * state->common->w; step = 1; - end = start + step * state->w; + end = start + step * state->common->w; } runlen = -1; @@ -1386,8 +1661,8 @@ struct game_drawstate *ds = snew(struct game_drawstate); ds->started = FALSE; - ds->w = state->w; - ds->h = state->h; + ds->w = state->common->w; + ds->h = state->common->h; ds->visible = snewn(ds->w * ds->h, unsigned char); ds->tilesize = 0; /* not decided yet */ memset(ds->visible, 255, ds->w * ds->h); @@ -1440,19 +1715,19 @@ static void draw_numbers(drawing *dr, game_drawstate *ds, const game_state *state, int i, int erase, int colour) { - int rowlen = state->rowlen[i]; - int *rowdata = state->rowdata + state->rowsize * i; + int rowlen = state->common->rowlen[i]; + int *rowdata = state->common->rowdata + state->common->rowsize * i; int nfit; int j; if (erase) { - if (i < state->w) { - draw_rect(dr, TOCOORD(state->w, i), 0, - TILE_SIZE, BORDER + TLBORDER(state->h) * TILE_SIZE, + if (i < state->common->w) { + draw_rect(dr, TOCOORD(state->common->w, i), 0, + TILE_SIZE, BORDER + TLBORDER(state->common->h) * TILE_SIZE, COL_BACKGROUND); } else { - draw_rect(dr, 0, TOCOORD(state->h, i - state->w), - BORDER + TLBORDER(state->w) * TILE_SIZE, TILE_SIZE, + draw_rect(dr, 0, TOCOORD(state->common->h, i - state->common->w), + BORDER + TLBORDER(state->common->w) * TILE_SIZE, TILE_SIZE, COL_BACKGROUND); } } @@ -1462,10 +1737,10 @@ * tile size. However, if there are more numbers than available * spaces, I have to squash them up a bit. */ - if (i < state->w) - nfit = TLBORDER(state->h); + if (i < state->common->w) + nfit = TLBORDER(state->common->h); else - nfit = TLBORDER(state->w); + nfit = TLBORDER(state->common->w); nfit = max(rowlen, nfit) - 1; assert(nfit > 0); @@ -1473,14 +1748,14 @@ int x, y; char str[80]; - if (i < state->w) { - x = TOCOORD(state->w, i); - y = BORDER + TILE_SIZE * (TLBORDER(state->h)-1); - y -= ((rowlen-j-1)*TILE_SIZE) * (TLBORDER(state->h)-1) / nfit; + if (i < state->common->w) { + x = TOCOORD(state->common->w, i); + y = BORDER + TILE_SIZE * (TLBORDER(state->common->h)-1); + y -= ((rowlen-j-1)*TILE_SIZE) * (TLBORDER(state->common->h)-1) / nfit; } else { - y = TOCOORD(state->h, i - state->w); - x = BORDER + TILE_SIZE * (TLBORDER(state->w)-1); - x -= ((rowlen-j-1)*TILE_SIZE) * (TLBORDER(state->w)-1) / nfit; + y = TOCOORD(state->common->h, i - state->common->w); + x = BORDER + TILE_SIZE * (TLBORDER(state->common->w)-1); + x -= ((rowlen-j-1)*TILE_SIZE) * (TLBORDER(state->common->w)-1) / nfit; } sprintf(str, "%d", rowdata[j]); @@ -1488,12 +1763,12 @@ TILE_SIZE/2, ALIGN_HCENTRE | ALIGN_VCENTRE, colour, str); } - if (i < state->w) { - draw_update(dr, TOCOORD(state->w, i), 0, - TILE_SIZE, BORDER + TLBORDER(state->h) * TILE_SIZE); + if (i < state->common->w) { + draw_update(dr, TOCOORD(state->common->w, i), 0, + TILE_SIZE, BORDER + TLBORDER(state->common->h) * TILE_SIZE); } else { - draw_update(dr, 0, TOCOORD(state->h, i - state->w), - BORDER + TLBORDER(state->w) * TILE_SIZE, TILE_SIZE); + draw_update(dr, 0, TOCOORD(state->common->h, i - state->common->w), + BORDER + TLBORDER(state->common->w) * TILE_SIZE, TILE_SIZE); } } @@ -1555,10 +1830,11 @@ * Work out what state this square should be drawn in, * taking any current drag operation into account. */ - if (ui->dragging && x1 <= j && j <= x2 && y1 <= i && i <= y2) + if (ui->dragging && x1 <= j && j <= x2 && y1 <= i && i <= y2 && + !state->common->immutable[i * state->common->w + j]) val = ui->state; else - val = state->grid[i * state->w + j]; + val = state->grid[i * state->common->w + j]; if (cmoved) { /* the cursor has moved; if we were the old or @@ -1589,7 +1865,7 @@ * Redraw any numbers which have changed their colour due to error * indication. */ - for (i = 0; i < state->w + state->h; i++) { + for (i = 0; i < state->common->w + state->common->h; i++) { int colour = check_errors(state, i) ? COL_ERROR : COL_TEXT; if (ds->numcolours[i] != colour) { draw_numbers(dr, ds, state, i, TRUE, colour); @@ -1637,7 +1913,7 @@ static void game_print(drawing *dr, const game_state *state, int tilesize) { - int w = state->w, h = state->h; + int w = state->common->w, h = state->common->h; int ink = print_mono_colour(dr, 0); int x, y, i; @@ -1669,7 +1945,7 @@ /* * Clues. */ - for (i = 0; i < state->w + state->h; i++) + for (i = 0; i < state->common->w + state->common->h; i++) draw_numbers(dr, ds, state, i, FALSE, ink); /* @@ -1708,7 +1984,7 @@ dup_game, free_game, TRUE, solve_game, - FALSE, game_can_format_as_text_now, game_text_format, + TRUE, game_can_format_as_text_now, game_text_format, new_ui, free_ui, encode_ui, @@ -1795,8 +2071,10 @@ */ for (i = 0; i < (w+h); i++) { char buf[80]; - for (thiswid = -1, j = 0; j < s->rowlen[i]; j++) - thiswid += sprintf(buf, " %d", s->rowdata[s->rowsize*i+j]); + for (thiswid = -1, j = 0; j < s->common->rowlen[i]; j++) + thiswid += sprintf + (buf, " %d", + s->common->rowdata[s->common->rowsize*i+j]); if (cluewid < thiswid) cluewid = thiswid; } @@ -1819,6 +2097,158 @@ return 0; } + +#endif + +#ifdef STANDALONE_PICTURE_GENERATOR + +/* + * Main program for the standalone picture generator. To use it, + * simply provide it with an XBM-format bitmap file (note XBM, not + * XPM) on standard input, and it will output a game ID in return. + * For example: + * + * $ ./patternpicture < calligraphic-A.xbm + * 15x15:2/4/2/2/2/3/3/3.1/3.1/3.1/11/14/12/6/1/2/2/3/4/5/1.3/2.3/1.3/2.3/1.4/9/1.1.3/2.2.3/5.4/3.2 + * + * That looks easy, of course - all the program has done is to count + * up the clue numbers! But in fact, it's done more than that: it's + * also checked that the result is uniquely soluble from just the + * numbers. If it hadn't been, then it would have also left some + * filled squares in the playing area as extra clues. + * + * $ ./patternpicture < cube.xbm + * 15x15:10/2.1/1.1.1/1.1.1/1.1.1/1.1.1/1.1.1/1.1.1/1.1.1/1.10/1.1.1/1.1.1/1.1.1/2.1/10/10/1.2/1.1.1/1.1.1/1.1.1/10.1/1.1.1/1.1.1/1.1.1/1.1.1/1.1.1/1.1.1/1.1.1/1.2/10,TNINzzzzGNzw + * + * This enables a reasonably convenient design workflow for coming up + * with pictorial Pattern puzzles which _are_ uniquely soluble without + * those inelegant pre-filled squares. Fire up a bitmap editor (X11 + * bitmap(1) is good enough), save a trial .xbm, and then test it by + * running a command along the lines of + * + * $ ./pattern $(./patternpicture < test.xbm) + * + * If the resulting window pops up with some pre-filled squares, then + * that tells you which parts of the image are giving rise to + * ambiguities, so try making tweaks in those areas, try the test + * command again, and see if it helps. Once you have a design for + * which the Pattern starting grid comes out empty, there's your game + * ID. + */ + +#include + +int main(int argc, char **argv) +{ + game_params *par; + char *params, *desc; + random_state *rs; + time_t seed = time(NULL); + char buf[4096]; + int i; + int x, y; + + par = default_params(); + if (argc > 1) + decode_params(par, argv[1]); /* get difficulty */ + par->w = par->h = -1; + + /* + * Now read an XBM file from standard input. This is simple and + * hacky and will do very little error detection, so don't feed + * it bogus data. + */ + picture = NULL; + x = y = 0; + while (fgets(buf, sizeof(buf), stdin)) { + buf[strcspn(buf, "\r\n")] = '\0'; + if (!strncmp(buf, "#define", 7)) { + /* + * Lines starting `#define' give the width and height. + */ + char *num = buf + strlen(buf); + char *symend; + + while (num > buf && isdigit((unsigned char)num[-1])) + num--; + symend = num; + while (symend > buf && isspace((unsigned char)symend[-1])) + symend--; + + if (symend-5 >= buf && !strncmp(symend-5, "width", 5)) + par->w = atoi(num); + else if (symend-6 >= buf && !strncmp(symend-6, "height", 6)) + par->h = atoi(num); + } else { + /* + * Otherwise, break the string up into words and take + * any word of the form `0x' plus hex digits to be a + * byte. + */ + char *p, *wordstart; + + if (!picture) { + if (par->w < 0 || par->h < 0) { + printf("failed to read width and height\n"); + return 1; + } + picture = snewn(par->w * par->h, unsigned char); + for (i = 0; i < par->w * par->h; i++) + picture[i] = GRID_UNKNOWN; + } + + p = buf; + while (*p) { + while (*p && (*p == ',' || isspace((unsigned char)*p))) + p++; + wordstart = p; + while (*p && !(*p == ',' || *p == '}' || + isspace((unsigned char)*p))) + p++; + if (*p) + *p++ = '\0'; + + if (wordstart[0] == '0' && + (wordstart[1] == 'x' || wordstart[1] == 'X') && + !wordstart[2 + strspn(wordstart+2, + "0123456789abcdefABCDEF")]) { + unsigned long byte = strtoul(wordstart+2, NULL, 16); + for (i = 0; i < 8; i++) { + int bit = (byte >> i) & 1; + if (y < par->h && x < par->w) + picture[y * par->w + x] = + bit ? GRID_FULL : GRID_EMPTY; + x++; + } + + if (x >= par->w) { + x = 0; + y++; + } + } + } + } + } + + for (i = 0; i < par->w * par->h; i++) + if (picture[i] == GRID_UNKNOWN) { + fprintf(stderr, "failed to read enough bitmap data\n"); + return 1; + } + + rs = random_new((void*)&seed, sizeof(time_t)); + + desc = new_game_desc(par, rs, NULL, FALSE); + params = encode_params(par, FALSE); + printf("%s:%s\n", params, desc); + + sfree(desc); + sfree(params); + free_params(par); + random_free(rs); + + return 0; +} #endif diff -Nru sgt-puzzles-20140928.r10274/pattern.R sgt-puzzles-20160429.b31155b/pattern.R --- sgt-puzzles-20140928.r10274/pattern.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/pattern.R 2016-04-29 00:30:09.000000000 +0000 @@ -7,6 +7,9 @@ patternsolver : [U] pattern[STANDALONE_SOLVER] STANDALONE patternsolver : [C] pattern[STANDALONE_SOLVER] STANDALONE +patternpicture : [U] pattern[STANDALONE_PICTURE_GENERATOR] STANDALONE +patternpicture : [C] pattern[STANDALONE_PICTURE_GENERATOR] STANDALONE + ALL += pattern[COMBINED] !begin am gtk @@ -18,5 +21,5 @@ !end !begin >gamedesc.txt -pattern:pattern.exe:Pattern:Pattern puzzle +pattern:pattern.exe:Pattern:Pattern puzzle:Fill in the pattern in the grid, given only the lengths of runs of black squares. !end diff -Nru sgt-puzzles-20140928.r10274/pearl.c sgt-puzzles-20160429.b31155b/pearl.c --- sgt-puzzles-20140928.r10274/pearl.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/pearl.c 2016-04-29 00:30:09.000000000 +0000 @@ -130,7 +130,6 @@ char *errors; /* size w*h: errors detected */ char *marks; /* size w*h: 'no line here' marks placed. */ int completed, used_solve; - int loop_length; /* filled in by check_completion when complete. */ }; #define DEFAULT_PRESET 3 @@ -1496,12 +1495,11 @@ #define ERROR_CLUE 16 -static void dsf_update_completion(game_state *state, int *loopclass, - int ax, int ay, char dir, - int *dsf, int *dsfsize) +static void dsf_update_completion(game_state *state, int ax, int ay, char dir, + int *dsf) { int w = state->shared->w /*, h = state->shared->h */; - int ac = ay*w+ax, ae, bx, by, bc, be; + int ac = ay*w+ax, bx, by, bc; if (!(state->lines[ac] & dir)) return; /* no link */ bx = ax + DX(dir); by = ay + DY(dir); @@ -1509,34 +1507,19 @@ assert(INGRID(state, bx, by)); /* should not have a link off grid */ bc = by*w+bx; -#if 0 assert(state->lines[bc] & F(dir)); /* should have reciprocal link */ -#endif - /* TODO put above assertion back in once we stop generating partially - * soluble puzzles. */ if (!(state->lines[bc] & F(dir))) return; - ae = dsf_canonify(dsf, ac); - be = dsf_canonify(dsf, bc); - - if (ae == be) { /* detected a loop! */ - if (*loopclass != -1) /* this is the second loop, doom. */ - return; - *loopclass = ae; - } else { - int size = dsfsize[ae] + dsfsize[be]; - dsf_merge(dsf, ac, bc); - ae = dsf_canonify(dsf, ac); - dsfsize[ae] = size; - } - return; + dsf_merge(dsf, ac, bc); } static void check_completion(game_state *state, int mark) { int w = state->shared->w, h = state->shared->h, x, y, i, d; - int had_error = FALSE /*, is_complete = FALSE */, loopclass; - int *dsf, *dsfsize; + int had_error = FALSE; + int *dsf, *component_state; + int nsilly, nloop, npath, largest_comp, largest_size, total_pathsize; + enum { COMP_NONE, COMP_LOOP, COMP_PATH, COMP_SILLY, COMP_EMPTY }; if (mark) { for (i = 0; i < w*h; i++) { @@ -1547,57 +1530,111 @@ #define ERROR(x,y,e) do { had_error = TRUE; if (mark) state->errors[(y)*w+(x)] |= (e); } while(0) /* - * First of all: we should have one single closed loop, passing through all clues. + * Analyse the solution into loops, paths and stranger things. + * Basic strategy here is all the same as in Loopy - see the big + * comment in loopy.c's check_completion() - and for exactly the + * same reasons, since Loopy and Pearl have basically the same + * form of expected solution. */ - dsf = snewn(w*h, int); - dsfsize = snewn(w*h, int); - dsf_init(dsf, w*h); - for (i = 0; i < w*h; i++) dsfsize[i] = 1; - loopclass = -1; + dsf = snew_dsf(w*h); + /* Build the dsf. */ for (x = 0; x < w; x++) { for (y = 0; y < h; y++) { - dsf_update_completion(state, &loopclass, x, y, R, dsf, dsfsize); - dsf_update_completion(state, &loopclass, x, y, D, dsf, dsfsize); + dsf_update_completion(state, x, y, R, dsf); + dsf_update_completion(state, x, y, D, dsf); } } - if (loopclass != -1) { - /* We have a loop. Check all squares with lines on. */ - for (x = 0; x < w; x++) { - for (y = 0; y < h; y++) { - if (state->lines[y*w+x] == BLANK) { - if (state->shared->clues[y*w+x] != NOCLUE) { - /* the loop doesn't include this clue square! */ - ERROR(x, y, ERROR_CLUE); - } - } else { - if (dsf_canonify(dsf, y*w+x) != loopclass) { - /* these lines are not on the loop: mark them as error. */ - ERROR(x, y, state->lines[y*w+x]); - } - } - } - } + + /* Initialise a state variable for each connected component. */ + component_state = snewn(w*h, int); + for (i = 0; i < w*h; i++) { + if (dsf_canonify(dsf, i) == i) + component_state[i] = COMP_LOOP; + else + component_state[i] = COMP_NONE; } /* - * Second: check no clues are contradicted. + * Classify components, and mark errors where a square has more + * than two line segments. */ - for (x = 0; x < w; x++) { for (y = 0; y < h; y++) { int type = state->lines[y*w+x]; - /* - * Check that no square has more than two line segments. - */ - if (NBITS(type) > 2) { + int degree = NBITS(type); + int comp = dsf_canonify(dsf, y*w+x); + if (degree > 2) { ERROR(x,y,type); + component_state[comp] = COMP_SILLY; + } else if (degree == 0) { + component_state[comp] = COMP_EMPTY; + } else if (degree == 1) { + if (component_state[comp] != COMP_SILLY) + component_state[comp] = COMP_PATH; } - /* - * Check that no clues are contradicted. This code is similar to - * the code that sets up the maximal clue array for any given - * loop. - */ + } + } + + /* Count the components, and find the largest sensible one. */ + nsilly = nloop = npath = 0; + total_pathsize = 0; + largest_comp = largest_size = -1; + for (i = 0; i < w*h; i++) { + if (component_state[i] == COMP_SILLY) { + nsilly++; + } else if (component_state[i] == COMP_PATH) { + total_pathsize += dsf_size(dsf, i); + npath = 1; + } else if (component_state[i] == COMP_LOOP) { + int this_size; + + nloop++; + + if ((this_size = dsf_size(dsf, i)) > largest_size) { + largest_comp = i; + largest_size = this_size; + } + } + } + if (largest_size < total_pathsize) { + largest_comp = -1; /* means the paths */ + largest_size = total_pathsize; + } + + if (nloop > 0 && nloop + npath > 1) { + /* + * If there are at least two sensible components including at + * least one loop, highlight every sensible component that is + * not the largest one. + */ + for (i = 0; i < w*h; i++) { + int comp = dsf_canonify(dsf, i); + if (component_state[comp] == COMP_PATH) + comp = -1; /* part of the 'all paths' quasi-component */ + if ((component_state[comp] == COMP_PATH && + -1 != largest_comp) || + (component_state[comp] == COMP_LOOP && + comp != largest_comp)) + ERROR(i%w, i/w, state->lines[i]); + } + } + + /* Now we've finished with the dsf and component states. The only + * thing we'll need to remember later on is whether all edges were + * part of a single loop, for which our counter variables + * nsilly,nloop,npath are enough. */ + sfree(component_state); + sfree(dsf); + + /* + * Check that no clues are contradicted. This code is similar to + * the code that sets up the maximal clue array for any given + * loop. + */ + for (x = 0; x < w; x++) { + for (y = 0; y < h; y++) { + int type = state->lines[y*w+x]; if (state->shared->clues[y*w+x] == CORNER) { /* Supposed to be a corner: will find a contradiction if * it actually contains a straight line, or if it touches any @@ -1638,15 +1675,30 @@ } } } - if (!had_error && loopclass != -1) { - state->completed = TRUE; - state->loop_length = dsfsize[loopclass]; - } - sfree(dsf); - sfree(dsfsize); + if (nloop == 1 && nsilly == 0 && npath == 0) { + /* + * If there's exactly one loop (so that the puzzle is at least + * potentially complete), we need to ensure it hasn't left any + * clue out completely. + */ + for (x = 0; x < w; x++) { + for (y = 0; y < h; y++) { + if (state->lines[y*w+x] == BLANK) { + if (state->shared->clues[y*w+x] != NOCLUE) { + /* the loop doesn't include this clue square! */ + ERROR(x, y, ERROR_CLUE); + } + } + } + } - return; + /* + * But if not, then we're done! + */ + if (!had_error) + state->completed = TRUE; + } } /* completion check: @@ -1654,7 +1706,7 @@ * - no clues must be contradicted (highlight clue itself in error if so) * - if there is a closed loop it must include every line segment laid * - if there's a smaller closed loop then highlight whole loop as error - * - no square must have more than 3 lines radiating from centre point + * - no square must have more than 2 lines radiating from centre point * (highlight all lines in that square as error if so) */ @@ -1722,12 +1774,38 @@ static int game_can_format_as_text_now(const game_params *params) { - return FALSE; + return TRUE; } static char *game_text_format(const game_state *state) { - return NULL; + int w = state->shared->w, h = state->shared->h, cw = 4, ch = 2; + int gw = cw*(w-1) + 2, gh = ch*(h-1) + 1, len = gw * gh, r, c, j; + char *board = snewn(len + 1, char); + + assert(board); + memset(board, ' ', len); + + for (r = 0; r < h; ++r) { + for (c = 0; c < w; ++c) { + int i = r*w + c, cell = r*ch*gw + c*cw; + board[cell] = "+BW"[(unsigned char)state->shared->clues[i]]; + if (c < w - 1 && (state->lines[i] & R || state->lines[i+1] & L)) + memset(board + cell + 1, '-', cw - 1); + if (r < h - 1 && (state->lines[i] & D || state->lines[i+w] & U)) + for (j = 1; j < ch; ++j) board[cell + j*gw] = '|'; + if (c < w - 1 && (state->marks[i] & R || state->marks[i+1] & L)) + board[cell + cw/2] = 'x'; + if (r < h - 1 && (state->marks[i] & D || state->marks[i+w] & U)) + board[cell + (ch/2 * gw)] = 'x'; + } + + for (j = 0; j < (r == h - 1 ? 1 : ch); ++j) + board[r*ch*gw + (gw - 1) + j*gw] = '\n'; + } + + board[len] = '\0'; + return board; } struct game_ui { @@ -1937,23 +2015,20 @@ } static char *mark_in_direction(const game_state *state, int x, int y, int dir, - int ismark, char *buf) + int primary, char *buf) { int w = state->shared->w /*, h = state->shared->h, sz = state->shared->sz */; int x2 = x + DX(dir); int y2 = y + DY(dir); int dir2 = F(dir); - char ch = ismark ? 'M' : 'F'; + + char ch = primary ? 'F' : 'M', *other; if (!INGRID(state, x, y) || !INGRID(state, x2, y2)) return ""; + /* disallow laying a mark over a line, or vice versa. */ - if (ismark) { - if ((state->lines[y*w+x] & dir) || (state->lines[y2*w+x2] & dir2)) - return ""; - } else { - if ((state->marks[y*w+x] & dir) || (state->marks[y2*w+x2] & dir2)) - return ""; - } + other = primary ? state->marks : state->lines; + if (other[y*w+x] & dir || other[y2*w+x2] & dir2) return ""; sprintf(buf, "%c%d,%d,%d;%c%d,%d,%d", ch, dir, x, y, ch, dir2, x2, y2); return dupstr(buf); @@ -1972,6 +2047,9 @@ int release = FALSE; char tmpbuf[80]; + int shift = button & MOD_SHFT, control = button & MOD_CTRL; + button &= ~MOD_MASK; + if (IS_MOUSE_DOWN(button)) { ui->cursor_active = FALSE; @@ -1994,15 +2072,18 @@ if (IS_MOUSE_RELEASE(button)) release = TRUE; - if (IS_CURSOR_MOVE(button & ~MOD_MASK)) { + if (IS_CURSOR_MOVE(button)) { if (!ui->cursor_active) { ui->cursor_active = TRUE; - } else if (button & (MOD_SHFT | MOD_CTRL)) { + } else if (control | shift) { + char *move; if (ui->ndragcoords > 0) return NULL; ui->ndragcoords = -1; - return mark_in_direction(state, ui->curx, ui->cury, - KEY_DIRECTION(button & ~MOD_MASK), - (button & MOD_SHFT), tmpbuf); + move = mark_in_direction(state, ui->curx, ui->cury, + KEY_DIRECTION(button), control, tmpbuf); + if (control && !shift && *move) + move_cursor(button, &ui->curx, &ui->cury, w, h, FALSE); + return move; } else { move_cursor(button, &ui->curx, &ui->cury, w, h, FALSE); if (ui->ndragcoords >= 0) @@ -2011,7 +2092,7 @@ return ""; } - if (IS_CURSOR_SELECT(button & ~MOD_MASK)) { + if (IS_CURSOR_SELECT(button)) { if (!ui->cursor_active) { ui->cursor_active = TRUE; return ""; @@ -2029,6 +2110,11 @@ } } + if (button == 27 || button == '\b') { + ui->ndragcoords = -1; + return ""; + } + if (release) { if (ui->ndragcoords > 0) { /* End of a drag: process the cached line data. */ @@ -2095,7 +2181,7 @@ direction = (x < cx) ? L : R; } return mark_in_direction(state, gx, gy, direction, - (button == RIGHT_RELEASE), tmpbuf); + (button == LEFT_RELEASE), tmpbuf); } } } @@ -2537,7 +2623,7 @@ dup_game, free_game, TRUE, solve_game, - FALSE, game_can_format_as_text_now, game_text_format, + TRUE, game_can_format_as_text_now, game_text_format, new_ui, free_ui, encode_ui, diff -Nru sgt-puzzles-20140928.r10274/pearl.R sgt-puzzles-20160429.b31155b/pearl.R --- sgt-puzzles-20140928.r10274/pearl.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/pearl.R 2016-04-29 00:30:09.000000000 +0000 @@ -19,5 +19,5 @@ !end !begin >gamedesc.txt -pearl:pearl.exe:Pearl:Loop-drawing puzzle +pearl:pearl.exe:Pearl:Loop-drawing puzzle:Draw a single closed loop, given clues about corner and straight squares. !end diff -Nru sgt-puzzles-20140928.r10274/pegs.R sgt-puzzles-20160429.b31155b/pegs.R --- sgt-puzzles-20140928.r10274/pegs.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/pegs.R 2016-04-29 00:30:09.000000000 +0000 @@ -17,5 +17,5 @@ !end !begin >gamedesc.txt -pegs:pegs.exe:Pegs:Peg solitaire puzzle +pegs:pegs.exe:Pegs:Peg solitaire puzzle:Jump pegs over each other to remove all but one. !end diff -Nru sgt-puzzles-20140928.r10274/preprocessed.but sgt-puzzles-20160429.b31155b/preprocessed.but --- sgt-puzzles-20140928.r10274/preprocessed.but 2014-09-29 00:35:51.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/preprocessed.but 2016-04-29 00:37:34.000000000 +0000 @@ -617,6 +617,10 @@ The arrow keys will move a tile adjacent to the space in the direction indicated (moving the space in the \e{opposite} direction). +Pressing \q{h} will make a suggested move. Pressing \q{h} enough +times will solve the game, but it may scramble your progress while +doing so. + (All the actions described in \k{common-actions} are also available.) \H{fifteen-params} \I{parameters, for Fifteen}Fifteen parameters @@ -658,6 +662,13 @@ around the edge of the grid, and use the return key to move the row/column in the direction indicated. +You can also move the tiles directly. Move the cursor onto a tile, +hold Control and press an arrow key to move the tile under the +cursor and move the cursor along with the tile. Or, hold Shift to +move only the tile. Pressing Enter simulates holding down Control +(press Enter again to release), while pressing Space simulates +holding down shift. + (All the actions described in \k{common-actions} are also available.) \H{sixteen-params} \I{parameters, for Sixteen}Sixteen parameters @@ -749,7 +760,7 @@ length will turn out to be possible. -\C{rectangles} \i{Rectangles} +\C{rect} \i{Rectangles} \cfg{winhelp-topic}{games.rectangles} @@ -768,9 +779,10 @@ you get an inexhaustible supply of puzzles tailored to your own specification. -\B{nikoli-rect} \W{http://www.nikoli.co.jp/puzzles/7/index_text-e.htm}\cw{http://www.nikoli.co.jp/puzzles/7/index_text-e.htm} +\B{nikoli-rect} \W{http://www.nikoli.co.jp/en/puzzles/shikaku.html}\cw{http://www.nikoli.co.jp/en/puzzles/shikaku.html} +(beware of Flash) -\B{puzzle-palace-rect} \W{http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}\cw{http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en} +\B{puzzle-palace-rect} \W{https://web.archive.org/web/20041024001459/http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}\cw{https://web.archive.org/web/20041024001459/http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en} \H{rectangles-controls} \I{controls, for Rectangles}Rectangles controls @@ -786,7 +798,8 @@ cursor keys to drag a rectangle out from that position, and pressing the return key again completes the rectangle. Using the space bar instead of the return key allows you to erase the contents of a -rectangle without affecting its edges, as above. +rectangle without affecting its edges, as above. Pressing escape +cancels a drag. When a rectangle of the correct size is completed, it will be shaded. @@ -897,6 +910,10 @@ return key will cycle the current cell through empty, then black, then white, then empty, and the space bar does the same cycle in reverse. +Moving the cursor while holding Control will colour the moved-over +squares black. Holding Shift will colour the moved-over squares +white, and holding both will colour them grey. + (All the actions described in \k{common-actions} are also available.) \H{pattern-parameters} \I{parameters, for Pattern}Pattern parameters @@ -954,7 +971,8 @@ of the history of the puzzle can be found on Wikipedia \k{wikipedia-solo}. -\B{nikoli-solo} \W{http://www.nikoli.co.jp/puzzles/1/index_text-e.htm}\cw{http://www.nikoli.co.jp/puzzles/1/index_text-e.htm} +\B{nikoli-solo} \W{http://www.nikoli.co.jp/en/puzzles/sudoku.html}\cw{http://www.nikoli.co.jp/en/puzzles/sudoku.html} +(beware of Flash) \B{wikipedia-solo} \W{http://en.wikipedia.org/wiki/Sudoku}\cw{http://en.wikipedia.org/wiki/Sudoku} @@ -1315,7 +1333,11 @@ used to select a peg colour, the left and right keys to select a peg position, and the space bar or Enter key to place a peg of the selected colour in the chosen position. \q{D} or Backspace removes a -peg, and \q{H} adds a hold marker. +peg, and Space adds a hold marker. + +Pressing \q{h} or \q{?} will fill the current guess with a suggested +guess. Using this is not recommended for 10 or more pegs as it is +slow. When the guess is complete, the smaller feedback pegs will be highlighted; clicking on these (or moving the peg cursor to them with the arrow keys @@ -1454,6 +1476,10 @@ pressing the space bar will lay a line between the two squares. Repeating either action removes the domino or line. +Pressing a number key will highlight all occurrences of that +number. Pressing that number again will clear the highlighting. Up to two +different numbers can be highlighted at any given time. + (All the actions described in \k{common-actions} are also available.) \H{dominosa-parameters} \I{parameters, for Dominosa}Dominosa parameters @@ -1489,7 +1515,7 @@ I originally saw this in the form of a Flash game called \i{Planarity} \k{Planarity}, written by John Tantalo. -\B{Planarity} \W{http://home.cwru.edu/~jnt5/Planarity}\cw{http://home.cwru.edu/~jnt5/Planarity} +\B{Planarity} \W{http://planarity.net}\cw{http://planarity.net} \H{untangle-controls} \i{Untangle controls} @@ -1561,7 +1587,7 @@ \c |......O.| \c H........| \c |.....O..| -\c 12-RH--- +\c 12-RR--- As shown, it is possible for a beam to receive multiple reflections before re-emerging (see turn 3). Similarly, a beam may be reflected @@ -1682,7 +1708,7 @@ Credit for this puzzle goes to \i{Nikoli} \k{nikoli-slant}. \B{nikoli-slant} -\W{http://www.nikoli.co.jp/puzzles/39/index.htm}\cw{http://www.nikoli.co.jp/puzzles/39/index.htm} +\W{http://www.nikoli.co.jp/ja/puzzles/gokigen_naname}\cw{http://www.nikoli.co.jp/ja/puzzles/gokigen_naname} (in Japanese) \H{slant-controls} \i{Slant controls} @@ -1704,7 +1730,10 @@ You can also use the cursor keys to move around the grid. Pressing the return or space keys will place a \cw{\\} or a \cw{/}, respectively, -and will then cycle them as above. +and will then cycle them as above. You can also press \cw{/} or +\cw{\\} to place a \cw{/} or \cw{\\}, respectively, independent of +what is already in the cursor square. Backspace removes any line from +the cursor square. (All the actions described in \k{common-actions} are also available.) @@ -1757,7 +1786,7 @@ Light Up was contributed to this collection by James Harvey. \B{nikoli-lightup} -\W{http://www.nikoli.co.jp/puzzles/32/index-e.htm}\cw{http://www.nikoli.co.jp/puzzles/32/index-e.htm} +\W{http://www.nikoli.co.jp/en/puzzles/akari.html}\cw{http://www.nikoli.co.jp/en/puzzles/akari.html} (beware of Flash) \H{lightup-controls} \i{Light Up controls} @@ -1932,7 +1961,7 @@ by Lambros Lambrou. \B{nikoli-loopy} -\W{http://www.nikoli.co.jp/puzzles/3/index-e.htm}\cw{http://www.nikoli.co.jp/puzzles/3/index-e.htm} +\W{http://www.nikoli.co.jp/en/puzzles/slitherlink.html}\cw{http://www.nikoli.co.jp/en/puzzles/slitherlink.html} (beware of Flash) \H{loopy-controls} \i{Loopy controls} @@ -2024,9 +2053,7 @@ will update to indicate the next direction on the path. You can also press Space to automatically move in the direction of the hint arrow. If you move in a different direction from the one shown by -the arrow, the hint arrows will stop appearing because you have -strayed from the provided path; you can then use \q{Solve} again to -generate a new path if you want to. +the arrow, arrows will be shown only if the puzzle is still solvable. All the actions described in \k{common-actions} are also available. In particular, if you do run into a mine and die, you can use the @@ -2085,7 +2112,9 @@ You can also use the cursor keys to move around the grid. Pressing the return key over an empty square will place a tent, and pressing the space bar over an empty square will colour it green; either key will -clear an occupied square. +clear an occupied square. Holding Shift and pressing the cursor keys +will colour empty squares green. Holding Control and pressing the +cursor keys will colour green both empty squares and squares with tents. (All the actions described in \k{common-actions} are also available.) @@ -2136,7 +2165,8 @@ Bridges was contributed to this collection by James Harvey. \B{nikoli-bridges} -\W{http://www.nikoli.co.jp/puzzles/14/index-e.htm}\cw{http://www.nikoli.co.jp/puzzles/14/index-e.htm} +\W{http://www.nikoli.co.jp/en/puzzles/hashiwokakero.html}\cw{http://www.nikoli.co.jp/en/puzzles/hashiwokakero.html} +(beware of Flash) \H{bridges-controls} \i{Bridges controls} @@ -2168,12 +2198,18 @@ You can also use the cursor keys to move around the grid: if possible the cursor will always move orthogonally, otherwise it will move -towards the nearest island to the indicated direction. Pressing the -return key followed by a cursor key will lay a bridge in that direction -(if available); pressing the space bar followed by a cursor key will -lay a \q{non-bridge} marker. - -You can mark an island as finished by pressing the return key twice. +towards the nearest island to the indicated direction. Holding Control +and pressing a cursor key will lay a bridge in that direction (if +available); Shift and a cursor key will lay a \q{non-bridge} marker. +Pressing the return key followed by a cursor key will also lay a +bridge in that direction. + +You can mark an island as finished by pressing the space bar or by +pressing the return key twice. + +By pressing a number key, you can jump to the nearest island with that +number. Letters \q{a}, ..., \q{f} count as 10, ..., 15 and \q{0} as +16. Violations of the puzzle rules will be marked in red: @@ -2312,8 +2348,8 @@ pressing space will also erase pencil marks. As for Solo, the cursor keys can be used in conjunction with the digit -keys to set numbers or pencil marks. You can also use the 'M' key to -auto-fill every numeric hint, ready for removal as required, or the 'H' +keys to set numbers or pencil marks. You can also use the \q{M} key to +auto-fill every numeric hint, ready for removal as required, or the \q{H} key to do the same but also to remove all obvious hints. Alternatively, use the cursor keys to move the mark around the grid. @@ -2322,6 +2358,11 @@ appropriate way; typing in a 0 or using the space bar will clear a filled square. +Left-clicking a clue will mark it as done (grey it out), or unmark it +if it is already marked. Holding Control or Shift and pressing an +arrow key likewise marks any clue adjacent to the cursor in the given +direction. + (All the actions described in \k{common-actions} are also available.) \H{unequal-parameters} \I{parameters, for Unequal}Unequal parameters @@ -2364,7 +2405,7 @@ Galaxies was contributed to this collection by James Harvey. -\B{nikoli-galaxies} \W{http://www.nikoli.co.jp/en/puzzles/astronomical_show/}\cw{http://www.nikoli.co.jp/en/puzzles/astronomical_show/} +\B{nikoli-galaxies} \W{http://www.nikoli.co.jp/en/puzzles/astronomical_show.html}\cw{http://www.nikoli.co.jp/en/puzzles/astronomical_show.html} \H{galaxies-controls} \i{Galaxies controls} @@ -2437,7 +2478,7 @@ Filling was contributed to this collection by Jonas K\u00F6{oe}lker. \B{nikoli-fillomino} -\W{http://www.nikoli.co.jp/en/puzzles/fillomino/}\cw{http://www.nikoli.co.jp/en/puzzles/fillomino/} +\W{http://www.nikoli.co.jp/en/puzzles/fillomino.html}\cw{http://www.nikoli.co.jp/en/puzzles/fillomino.html} \H{filling-controls} \I{controls, for Filling}Filling controls @@ -2449,10 +2490,11 @@ feature). You can also move around the grid with the cursor keys; typing a digit will -fill the square containing the cursor with that number, or typing 0, Space, -or Enter will clear it. You can also select multiple squares for numbering -or clearing by using the return key, before typing a digit to fill in the -highlighted squares (as above). +fill the square containing the cursor with that number; typing 0 will clear +it. You can also select multiple squares for numbering or clearing with the +return and arrow keys, before typing a digit to fill or clear the highlighted +squares (as above). The space bar adds and removes single squares to and from +the selection. Backspace and escape remove all squares from the selection. (All the actions described in \k{common-actions} are also available.) @@ -2567,6 +2609,10 @@ still be unique. The remaining levels require increasingly complex reasoning to avoid having to backtrack. +\dt \e{Multiplication only} + +\dd If this is enabled, all boxes will be multiplication boxes. +With this rule, the puzzle is known as \q{Inshi No Heya}. \C{towers} \i{Towers} @@ -2637,6 +2683,10 @@ Pressing M will fill in a full set of pencil marks in every square that does not have a main digit in it. +Left-clicking a clue will mark it as done (grey it out), or unmark it +if it is already marked. Holding Control or Shift and pressing an +arrow key likewise marks any clue in the given direction. + (All the actions described in \k{common-actions} are also available.) \H{towers-parameters} \I{parameters, for Towers}Towers parameters @@ -2680,7 +2730,7 @@ Singles was contributed to this collection by James Harvey. \B{nikoli-hitori} -\W{http://www.nikoli.com/en/puzzles/hitori/index.html}\cw{http://www.nikoli.com/en/puzzles/hitori/index.html} +\W{http://www.nikoli.com/en/puzzles/hitori.html}\cw{http://www.nikoli.com/en/puzzles/hitori.html} (beware of Flash) \H{singles-controls} \i{Singles controls} @@ -2748,6 +2798,9 @@ \q{this cannot be blank} (which can be useful to note deductions while solving), and right-clicking again empties the domino. +Left-clicking a clue will mark it as done (grey it out), or unmark it if +it is already marked. + You can also use the cursor keys to move a cursor around the grid. Pressing the return key will lay a domino with a positive pole at that position; pressing again reverses the polarity and then removes the @@ -2895,7 +2948,7 @@ Range was contributed to this collection by Jonas K\u00F6{oe}lker. \B{nikoli-range} -\W{http://www.nikoli.co.jp/en/puzzles/where_is_black_cells/}\cw{http://www.nikoli.co.jp/en/puzzles/where_is_black_cells/} +\W{http://www.nikoli.co.jp/en/puzzles/where_is_black_cells.html}\cw{http://www.nikoli.co.jp/en/puzzles/where_is_black_cells.html} \H{range-controls} \I{controls, for Range}Range controls @@ -2907,7 +2960,10 @@ You can also use the cursor keys to move around the grid squares. Pressing Return does the same as clicking with the left button, while -pressing Space does the same as a right button click. +pressing Space does the same as a right button click. Moving with the +cursor keys while holding Shift will place dots in all squares that +are moved through. + (All the actions described in \k{common-actions} are also available.) @@ -2952,7 +3008,8 @@ Thanks to James Harvey for assistance with the implementation. \B{nikoli-pearl} -\W{http://www.nikoli.co.jp/en/puzzles/masyu/}\cw{http://www.nikoli.co.jp/en/puzzles/masyu/} +\W{http://www.nikoli.co.jp/en/puzzles/masyu.html}\cw{http://www.nikoli.co.jp/en/puzzles/masyu.html} +(beware of Flash) \H{pearl-controls} \I{controls, for Pearl}Pearl controls @@ -2971,10 +3028,13 @@ turns, you might mark the one way it \e{can't} go with a cross.) Alternatively, use the cursor keys to move the cursor. Use the Enter -key to begin and end keyboard `drag' operations. Use the Space key to -cancel the drag. Use Ctrl-arrowkey and Shift-arrowkey to simulate a -left or right click, respectively, on the edge in the given direction -relative to the cursor, i.e. to draw a segment or a cross. +key to begin and end keyboard \q{drag} operations. Use the Space, +Escape or Backspace keys to cancel the drag. Or, hold Control while +dragging with the cursor keys to toggle segments as you move between +squares. + +Pressing Control-Shift-arrowkey or Shift-arrowkey simulates a left or +right click, respectively, on the edge in the direction of the key. (All the actions described in \k{common-actions} are also available.) @@ -3051,6 +3111,9 @@ you can press \q{A} to toggle between showing the monsters as monsters or showing them as letters. +Left-clicking a clue will mark it as done (grey it out), or unmark it +if it is already marked. + (All the actions described in \k{common-actions} are also available.) \H{undead-parameters} \I{parameters, for Undead}Undead parameters @@ -3118,6 +3181,168 @@ \dd If enabled, no two rows are permitted to have exactly the same pattern, and likewise columns. (A row and a column can match, though.) +\C{flood} \i{Flood} + +\cfg{winhelp-topic}{games.flood} + +You are given a grid of squares, coloured at random in multiple +colours. In each move, you can flood-fill the top left square in a +colour of your choice (i.e. every square reachable from the starting +square by an orthogonally connected path of squares all the same +colour will be filled in the new colour). As you do this, more and +more of the grid becomes connected to the starting square. + +Your aim is to make the whole grid the same colour, in as few moves as +possible. The game will set a limit on the number of moves, based on +running its own internal solver. You win if you can make the whole +grid the same colour in that many moves or fewer. + +I saw this game (with a fixed grid size, fixed number of colours, and +fixed move limit) at http://floodit.appspot.com (no longer accessible). + +\H{flood-controls} \I{controls, for Flood}Flood controls + +To play Flood, click the mouse in a square. The top left corner and +everything connected to it will be flood-filled with the colour of the +square you clicked. Clicking a square the same colour as the top left +corner has no effect, and therefore does not count as a move. + +You can also use the cursor keys to move a cursor (outline black +square) around the grid. Pressing the return key will fill the top +left corner in the colour of the square under the cursor. + +(All the actions described in \k{common-actions} are also available.) + +\H{flood-parameters} \I{parameters, for Flood}Flood parameters + +These parameters are available from the \q{Custom...} option on the +\q{Type} menu. + +\dt \e{Width}, \e{Height} + +\dd Size of the grid, in squares. + +\dt \e{Colours} + +\dd Number of colours used to fill the grid. Must be at least 3 (with +two colours there would only be one legal move at any stage, hence no +choice to make at all), and at most 10. + +\dt \e{Extra moves permitted} + +\dd Controls the difficulty of the puzzle, by increasing the move +limit. In each new grid, Flood will run an internal solver to generate +its own solution, and then the value in this field will be added to +the length of Flood's solution to generate the game's move limit. So a +value of 0 requires you to be just as efficient as Flood's automated +solver, and a larger value makes it easier. + +\lcont{ + +(Note that Flood's internal solver will not necessarily find the +shortest possible solution, though I believe it's pretty close. For a +real challenge, set this value to 0 and then try to solve a grid in +\e{strictly fewer} moves than the limit you're given!) + +} + +\C{tracks} \i{Tracks} + +\cfg{winhelp-topic}{games.tracks} + +You are given a grid of squares, some of which are filled with train +tracks. You need to complete the track from A to B so that the rows and +columns contain the same number of track segments as are indicated in the +clues to the top and right of the grid. + +There are only straight and 90 degree curved rails, and the track may not +cross itself. + +Tracks was contributed to this collection by James Harvey. + +\H{tracks-controls} \I{controls, for Tracks}Tracks controls + +Left-clicking on an edge between two squares adds a track segment between +the two squares. Right-clicking on an edge adds a cross on the edge, +indicating no track is possible there. + +Left-clicking in a square adds a colour indicator showing that you know the +square must contain a track, even if you don't know which edges it crosses +yet. Right-clicking in a square adds a cross indicating it contains no +track segment. + +Left- or right-dragging between squares allows you to lay a straight line +of is-track or is-not-track indicators, useful for filling in rows or +columns to match the clue. + +(All the actions described in \k{common-actions} are also available.) + +\H{tracks-parameters} \I{parameters, for Tracks}Tracks parameters + +These parameters are available from the \q{Custom...} option on the +\q{Type} menu. + +\dt \e{Width}, \e{Height} + +\dd Size of the grid, in squares. + +\dt \e{Difficulty} + +\dd Controls the difficulty of the generated puzzle: at Tricky level, +you are required to make more deductions regarding disregarding moves +that would lead to impossible crossings later. + +\dt \e{Disallow consecutive 1 clues} + +\dd Controls whether the Tracks game generation permits two adjacent +rows or columns to have a 1 clue, or permits the row or column of the +track's endpoint to have a 1 clue. By default this is not permitted, +to avoid long straight boring segments of track and make the games +more twiddly and interesting. If you want to restore the possibility, +turn this option off. + + +\C{palisade} \i{Palisade} + +\cfg{winhelp-topic}{games.palisade} + +You're given a grid of squares, some of which contain numbers. Your +goal is to subdivide the grid into contiguous regions, all of the same +(given) size, such that each square containing a number is adjacent to +exactly that many edges (including those between the inside and the +outside of the grid). + +Credit for this puzzle goes to \i{Nikoli}, who call it \q{Five Cells}. +\k{nikoli-palisade}. + +Palisade was contributed to this collection by Jonas K\u00F6{oe}lker. + +\B{nikoli-palisade} +\W{http://nikoli.co.jp/en/puzzles/five_cells.html}\cw{http://nikoli.co.jp/en/puzzles/five_cells.html} + +\H{palisade-controls} \I{controls, for Palisade}Palisade controls + +Left-click to place an edge. Right-click to indicate \q{no edge}. +Alternatively, the arrow keys will move a keyboard cursor. Holding +Control while pressing an arrow key will place an edge. Press +Shift-arrowkey to switch off an edge. Repeat an action to perform +its inverse. + +(All the actions described in \k{common-actions} are also available.) + +\H{Palisade-parameters} \I{parameters, for Palisade}Palisade parameters + +These parameters are available from the \q{Custom...} option on the +\q{Type} menu. + +\dt \e{Width}, \e{Height} + +\dd Size of grid in squares. + +\dt \e{Region size} + +\dd The size of the regions into which the grid must be subdivided. + \A{licence} \I{MIT licence}\ii{Licence} This software is \i{copyright} 2004-2014 Simon Tatham. @@ -3175,4 +3400,4 @@ \IM{MIT licence} MIT licence \IM{MIT licence} licence, MIT -\versionid Simon Tatham's Portable Puzzle Collection, version 20140928.r10274 +\versionid Simon Tatham's Portable Puzzle Collection, version 20160429.b31155b diff -Nru sgt-puzzles-20140928.r10274/puzzles.but sgt-puzzles-20160429.b31155b/puzzles.but --- sgt-puzzles-20140928.r10274/puzzles.but 2014-09-29 00:30:06.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/puzzles.but 2016-04-29 00:30:09.000000000 +0000 @@ -617,6 +617,10 @@ The arrow keys will move a tile adjacent to the space in the direction indicated (moving the space in the \e{opposite} direction). +Pressing \q{h} will make a suggested move. Pressing \q{h} enough +times will solve the game, but it may scramble your progress while +doing so. + (All the actions described in \k{common-actions} are also available.) \H{fifteen-params} \I{parameters, for Fifteen}Fifteen parameters @@ -658,6 +662,13 @@ around the edge of the grid, and use the return key to move the row/column in the direction indicated. +You can also move the tiles directly. Move the cursor onto a tile, +hold Control and press an arrow key to move the tile under the +cursor and move the cursor along with the tile. Or, hold Shift to +move only the tile. Pressing Enter simulates holding down Control +(press Enter again to release), while pressing Space simulates +holding down shift. + (All the actions described in \k{common-actions} are also available.) \H{sixteen-params} \I{parameters, for Sixteen}Sixteen parameters @@ -749,7 +760,7 @@ length will turn out to be possible. -\C{rectangles} \i{Rectangles} +\C{rect} \i{Rectangles} \cfg{winhelp-topic}{games.rectangles} @@ -768,9 +779,10 @@ you get an inexhaustible supply of puzzles tailored to your own specification. -\B{nikoli-rect} \W{http://www.nikoli.co.jp/puzzles/7/index_text-e.htm}\cw{http://www.nikoli.co.jp/puzzles/7/index_text-e.htm} +\B{nikoli-rect} \W{http://www.nikoli.co.jp/en/puzzles/shikaku.html}\cw{http://www.nikoli.co.jp/en/puzzles/shikaku.html} +(beware of Flash) -\B{puzzle-palace-rect} \W{http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}\cw{http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en} +\B{puzzle-palace-rect} \W{https://web.archive.org/web/20041024001459/http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}\cw{https://web.archive.org/web/20041024001459/http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en} \H{rectangles-controls} \I{controls, for Rectangles}Rectangles controls @@ -786,7 +798,8 @@ cursor keys to drag a rectangle out from that position, and pressing the return key again completes the rectangle. Using the space bar instead of the return key allows you to erase the contents of a -rectangle without affecting its edges, as above. +rectangle without affecting its edges, as above. Pressing escape +cancels a drag. When a rectangle of the correct size is completed, it will be shaded. @@ -897,6 +910,10 @@ return key will cycle the current cell through empty, then black, then white, then empty, and the space bar does the same cycle in reverse. +Moving the cursor while holding Control will colour the moved-over +squares black. Holding Shift will colour the moved-over squares +white, and holding both will colour them grey. + (All the actions described in \k{common-actions} are also available.) \H{pattern-parameters} \I{parameters, for Pattern}Pattern parameters @@ -954,7 +971,8 @@ of the history of the puzzle can be found on Wikipedia \k{wikipedia-solo}. -\B{nikoli-solo} \W{http://www.nikoli.co.jp/puzzles/1/index_text-e.htm}\cw{http://www.nikoli.co.jp/puzzles/1/index_text-e.htm} +\B{nikoli-solo} \W{http://www.nikoli.co.jp/en/puzzles/sudoku.html}\cw{http://www.nikoli.co.jp/en/puzzles/sudoku.html} +(beware of Flash) \B{wikipedia-solo} \W{http://en.wikipedia.org/wiki/Sudoku}\cw{http://en.wikipedia.org/wiki/Sudoku} @@ -1315,7 +1333,11 @@ used to select a peg colour, the left and right keys to select a peg position, and the space bar or Enter key to place a peg of the selected colour in the chosen position. \q{D} or Backspace removes a -peg, and \q{H} adds a hold marker. +peg, and Space adds a hold marker. + +Pressing \q{h} or \q{?} will fill the current guess with a suggested +guess. Using this is not recommended for 10 or more pegs as it is +slow. When the guess is complete, the smaller feedback pegs will be highlighted; clicking on these (or moving the peg cursor to them with the arrow keys @@ -1454,6 +1476,10 @@ pressing the space bar will lay a line between the two squares. Repeating either action removes the domino or line. +Pressing a number key will highlight all occurrences of that +number. Pressing that number again will clear the highlighting. Up to two +different numbers can be highlighted at any given time. + (All the actions described in \k{common-actions} are also available.) \H{dominosa-parameters} \I{parameters, for Dominosa}Dominosa parameters @@ -1489,7 +1515,7 @@ I originally saw this in the form of a Flash game called \i{Planarity} \k{Planarity}, written by John Tantalo. -\B{Planarity} \W{http://home.cwru.edu/~jnt5/Planarity}\cw{http://home.cwru.edu/~jnt5/Planarity} +\B{Planarity} \W{http://planarity.net}\cw{http://planarity.net} \H{untangle-controls} \i{Untangle controls} @@ -1561,7 +1587,7 @@ \c |......O.| \c H........| \c |.....O..| -\c 12-RH--- +\c 12-RR--- As shown, it is possible for a beam to receive multiple reflections before re-emerging (see turn 3). Similarly, a beam may be reflected @@ -1682,7 +1708,7 @@ Credit for this puzzle goes to \i{Nikoli} \k{nikoli-slant}. \B{nikoli-slant} -\W{http://www.nikoli.co.jp/puzzles/39/index.htm}\cw{http://www.nikoli.co.jp/puzzles/39/index.htm} +\W{http://www.nikoli.co.jp/ja/puzzles/gokigen_naname}\cw{http://www.nikoli.co.jp/ja/puzzles/gokigen_naname} (in Japanese) \H{slant-controls} \i{Slant controls} @@ -1704,7 +1730,10 @@ You can also use the cursor keys to move around the grid. Pressing the return or space keys will place a \cw{\\} or a \cw{/}, respectively, -and will then cycle them as above. +and will then cycle them as above. You can also press \cw{/} or +\cw{\\} to place a \cw{/} or \cw{\\}, respectively, independent of +what is already in the cursor square. Backspace removes any line from +the cursor square. (All the actions described in \k{common-actions} are also available.) @@ -1757,7 +1786,7 @@ Light Up was contributed to this collection by James Harvey. \B{nikoli-lightup} -\W{http://www.nikoli.co.jp/puzzles/32/index-e.htm}\cw{http://www.nikoli.co.jp/puzzles/32/index-e.htm} +\W{http://www.nikoli.co.jp/en/puzzles/akari.html}\cw{http://www.nikoli.co.jp/en/puzzles/akari.html} (beware of Flash) \H{lightup-controls} \i{Light Up controls} @@ -1932,7 +1961,7 @@ by Lambros Lambrou. \B{nikoli-loopy} -\W{http://www.nikoli.co.jp/puzzles/3/index-e.htm}\cw{http://www.nikoli.co.jp/puzzles/3/index-e.htm} +\W{http://www.nikoli.co.jp/en/puzzles/slitherlink.html}\cw{http://www.nikoli.co.jp/en/puzzles/slitherlink.html} (beware of Flash) \H{loopy-controls} \i{Loopy controls} @@ -2024,9 +2053,7 @@ will update to indicate the next direction on the path. You can also press Space to automatically move in the direction of the hint arrow. If you move in a different direction from the one shown by -the arrow, the hint arrows will stop appearing because you have -strayed from the provided path; you can then use \q{Solve} again to -generate a new path if you want to. +the arrow, arrows will be shown only if the puzzle is still solvable. All the actions described in \k{common-actions} are also available. In particular, if you do run into a mine and die, you can use the @@ -2085,7 +2112,9 @@ You can also use the cursor keys to move around the grid. Pressing the return key over an empty square will place a tent, and pressing the space bar over an empty square will colour it green; either key will -clear an occupied square. +clear an occupied square. Holding Shift and pressing the cursor keys +will colour empty squares green. Holding Control and pressing the +cursor keys will colour green both empty squares and squares with tents. (All the actions described in \k{common-actions} are also available.) @@ -2136,7 +2165,8 @@ Bridges was contributed to this collection by James Harvey. \B{nikoli-bridges} -\W{http://www.nikoli.co.jp/puzzles/14/index-e.htm}\cw{http://www.nikoli.co.jp/puzzles/14/index-e.htm} +\W{http://www.nikoli.co.jp/en/puzzles/hashiwokakero.html}\cw{http://www.nikoli.co.jp/en/puzzles/hashiwokakero.html} +(beware of Flash) \H{bridges-controls} \i{Bridges controls} @@ -2168,12 +2198,18 @@ You can also use the cursor keys to move around the grid: if possible the cursor will always move orthogonally, otherwise it will move -towards the nearest island to the indicated direction. Pressing the -return key followed by a cursor key will lay a bridge in that direction -(if available); pressing the space bar followed by a cursor key will -lay a \q{non-bridge} marker. - -You can mark an island as finished by pressing the return key twice. +towards the nearest island to the indicated direction. Holding Control +and pressing a cursor key will lay a bridge in that direction (if +available); Shift and a cursor key will lay a \q{non-bridge} marker. +Pressing the return key followed by a cursor key will also lay a +bridge in that direction. + +You can mark an island as finished by pressing the space bar or by +pressing the return key twice. + +By pressing a number key, you can jump to the nearest island with that +number. Letters \q{a}, ..., \q{f} count as 10, ..., 15 and \q{0} as +16. Violations of the puzzle rules will be marked in red: @@ -2312,8 +2348,8 @@ pressing space will also erase pencil marks. As for Solo, the cursor keys can be used in conjunction with the digit -keys to set numbers or pencil marks. You can also use the 'M' key to -auto-fill every numeric hint, ready for removal as required, or the 'H' +keys to set numbers or pencil marks. You can also use the \q{M} key to +auto-fill every numeric hint, ready for removal as required, or the \q{H} key to do the same but also to remove all obvious hints. Alternatively, use the cursor keys to move the mark around the grid. @@ -2322,6 +2358,11 @@ appropriate way; typing in a 0 or using the space bar will clear a filled square. +Left-clicking a clue will mark it as done (grey it out), or unmark it +if it is already marked. Holding Control or Shift and pressing an +arrow key likewise marks any clue adjacent to the cursor in the given +direction. + (All the actions described in \k{common-actions} are also available.) \H{unequal-parameters} \I{parameters, for Unequal}Unequal parameters @@ -2364,7 +2405,7 @@ Galaxies was contributed to this collection by James Harvey. -\B{nikoli-galaxies} \W{http://www.nikoli.co.jp/en/puzzles/astronomical_show/}\cw{http://www.nikoli.co.jp/en/puzzles/astronomical_show/} +\B{nikoli-galaxies} \W{http://www.nikoli.co.jp/en/puzzles/astronomical_show.html}\cw{http://www.nikoli.co.jp/en/puzzles/astronomical_show.html} \H{galaxies-controls} \i{Galaxies controls} @@ -2437,7 +2478,7 @@ Filling was contributed to this collection by Jonas K\u00F6{oe}lker. \B{nikoli-fillomino} -\W{http://www.nikoli.co.jp/en/puzzles/fillomino/}\cw{http://www.nikoli.co.jp/en/puzzles/fillomino/} +\W{http://www.nikoli.co.jp/en/puzzles/fillomino.html}\cw{http://www.nikoli.co.jp/en/puzzles/fillomino.html} \H{filling-controls} \I{controls, for Filling}Filling controls @@ -2449,10 +2490,11 @@ feature). You can also move around the grid with the cursor keys; typing a digit will -fill the square containing the cursor with that number, or typing 0, Space, -or Enter will clear it. You can also select multiple squares for numbering -or clearing by using the return key, before typing a digit to fill in the -highlighted squares (as above). +fill the square containing the cursor with that number; typing 0 will clear +it. You can also select multiple squares for numbering or clearing with the +return and arrow keys, before typing a digit to fill or clear the highlighted +squares (as above). The space bar adds and removes single squares to and from +the selection. Backspace and escape remove all squares from the selection. (All the actions described in \k{common-actions} are also available.) @@ -2567,6 +2609,10 @@ still be unique. The remaining levels require increasingly complex reasoning to avoid having to backtrack. +\dt \e{Multiplication only} + +\dd If this is enabled, all boxes will be multiplication boxes. +With this rule, the puzzle is known as \q{Inshi No Heya}. \C{towers} \i{Towers} @@ -2637,6 +2683,10 @@ Pressing M will fill in a full set of pencil marks in every square that does not have a main digit in it. +Left-clicking a clue will mark it as done (grey it out), or unmark it +if it is already marked. Holding Control or Shift and pressing an +arrow key likewise marks any clue in the given direction. + (All the actions described in \k{common-actions} are also available.) \H{towers-parameters} \I{parameters, for Towers}Towers parameters @@ -2680,7 +2730,7 @@ Singles was contributed to this collection by James Harvey. \B{nikoli-hitori} -\W{http://www.nikoli.com/en/puzzles/hitori/index.html}\cw{http://www.nikoli.com/en/puzzles/hitori/index.html} +\W{http://www.nikoli.com/en/puzzles/hitori.html}\cw{http://www.nikoli.com/en/puzzles/hitori.html} (beware of Flash) \H{singles-controls} \i{Singles controls} @@ -2748,6 +2798,9 @@ \q{this cannot be blank} (which can be useful to note deductions while solving), and right-clicking again empties the domino. +Left-clicking a clue will mark it as done (grey it out), or unmark it if +it is already marked. + You can also use the cursor keys to move a cursor around the grid. Pressing the return key will lay a domino with a positive pole at that position; pressing again reverses the polarity and then removes the @@ -2895,7 +2948,7 @@ Range was contributed to this collection by Jonas K\u00F6{oe}lker. \B{nikoli-range} -\W{http://www.nikoli.co.jp/en/puzzles/where_is_black_cells/}\cw{http://www.nikoli.co.jp/en/puzzles/where_is_black_cells/} +\W{http://www.nikoli.co.jp/en/puzzles/where_is_black_cells.html}\cw{http://www.nikoli.co.jp/en/puzzles/where_is_black_cells.html} \H{range-controls} \I{controls, for Range}Range controls @@ -2907,7 +2960,10 @@ You can also use the cursor keys to move around the grid squares. Pressing Return does the same as clicking with the left button, while -pressing Space does the same as a right button click. +pressing Space does the same as a right button click. Moving with the +cursor keys while holding Shift will place dots in all squares that +are moved through. + (All the actions described in \k{common-actions} are also available.) @@ -2952,7 +3008,8 @@ Thanks to James Harvey for assistance with the implementation. \B{nikoli-pearl} -\W{http://www.nikoli.co.jp/en/puzzles/masyu/}\cw{http://www.nikoli.co.jp/en/puzzles/masyu/} +\W{http://www.nikoli.co.jp/en/puzzles/masyu.html}\cw{http://www.nikoli.co.jp/en/puzzles/masyu.html} +(beware of Flash) \H{pearl-controls} \I{controls, for Pearl}Pearl controls @@ -2971,10 +3028,13 @@ turns, you might mark the one way it \e{can't} go with a cross.) Alternatively, use the cursor keys to move the cursor. Use the Enter -key to begin and end keyboard `drag' operations. Use the Space key to -cancel the drag. Use Ctrl-arrowkey and Shift-arrowkey to simulate a -left or right click, respectively, on the edge in the given direction -relative to the cursor, i.e. to draw a segment or a cross. +key to begin and end keyboard \q{drag} operations. Use the Space, +Escape or Backspace keys to cancel the drag. Or, hold Control while +dragging with the cursor keys to toggle segments as you move between +squares. + +Pressing Control-Shift-arrowkey or Shift-arrowkey simulates a left or +right click, respectively, on the edge in the direction of the key. (All the actions described in \k{common-actions} are also available.) @@ -3051,6 +3111,9 @@ you can press \q{A} to toggle between showing the monsters as monsters or showing them as letters. +Left-clicking a clue will mark it as done (grey it out), or unmark it +if it is already marked. + (All the actions described in \k{common-actions} are also available.) \H{undead-parameters} \I{parameters, for Undead}Undead parameters @@ -3118,6 +3181,168 @@ \dd If enabled, no two rows are permitted to have exactly the same pattern, and likewise columns. (A row and a column can match, though.) +\C{flood} \i{Flood} + +\cfg{winhelp-topic}{games.flood} + +You are given a grid of squares, coloured at random in multiple +colours. In each move, you can flood-fill the top left square in a +colour of your choice (i.e. every square reachable from the starting +square by an orthogonally connected path of squares all the same +colour will be filled in the new colour). As you do this, more and +more of the grid becomes connected to the starting square. + +Your aim is to make the whole grid the same colour, in as few moves as +possible. The game will set a limit on the number of moves, based on +running its own internal solver. You win if you can make the whole +grid the same colour in that many moves or fewer. + +I saw this game (with a fixed grid size, fixed number of colours, and +fixed move limit) at http://floodit.appspot.com (no longer accessible). + +\H{flood-controls} \I{controls, for Flood}Flood controls + +To play Flood, click the mouse in a square. The top left corner and +everything connected to it will be flood-filled with the colour of the +square you clicked. Clicking a square the same colour as the top left +corner has no effect, and therefore does not count as a move. + +You can also use the cursor keys to move a cursor (outline black +square) around the grid. Pressing the return key will fill the top +left corner in the colour of the square under the cursor. + +(All the actions described in \k{common-actions} are also available.) + +\H{flood-parameters} \I{parameters, for Flood}Flood parameters + +These parameters are available from the \q{Custom...} option on the +\q{Type} menu. + +\dt \e{Width}, \e{Height} + +\dd Size of the grid, in squares. + +\dt \e{Colours} + +\dd Number of colours used to fill the grid. Must be at least 3 (with +two colours there would only be one legal move at any stage, hence no +choice to make at all), and at most 10. + +\dt \e{Extra moves permitted} + +\dd Controls the difficulty of the puzzle, by increasing the move +limit. In each new grid, Flood will run an internal solver to generate +its own solution, and then the value in this field will be added to +the length of Flood's solution to generate the game's move limit. So a +value of 0 requires you to be just as efficient as Flood's automated +solver, and a larger value makes it easier. + +\lcont{ + +(Note that Flood's internal solver will not necessarily find the +shortest possible solution, though I believe it's pretty close. For a +real challenge, set this value to 0 and then try to solve a grid in +\e{strictly fewer} moves than the limit you're given!) + +} + +\C{tracks} \i{Tracks} + +\cfg{winhelp-topic}{games.tracks} + +You are given a grid of squares, some of which are filled with train +tracks. You need to complete the track from A to B so that the rows and +columns contain the same number of track segments as are indicated in the +clues to the top and right of the grid. + +There are only straight and 90 degree curved rails, and the track may not +cross itself. + +Tracks was contributed to this collection by James Harvey. + +\H{tracks-controls} \I{controls, for Tracks}Tracks controls + +Left-clicking on an edge between two squares adds a track segment between +the two squares. Right-clicking on an edge adds a cross on the edge, +indicating no track is possible there. + +Left-clicking in a square adds a colour indicator showing that you know the +square must contain a track, even if you don't know which edges it crosses +yet. Right-clicking in a square adds a cross indicating it contains no +track segment. + +Left- or right-dragging between squares allows you to lay a straight line +of is-track or is-not-track indicators, useful for filling in rows or +columns to match the clue. + +(All the actions described in \k{common-actions} are also available.) + +\H{tracks-parameters} \I{parameters, for Tracks}Tracks parameters + +These parameters are available from the \q{Custom...} option on the +\q{Type} menu. + +\dt \e{Width}, \e{Height} + +\dd Size of the grid, in squares. + +\dt \e{Difficulty} + +\dd Controls the difficulty of the generated puzzle: at Tricky level, +you are required to make more deductions regarding disregarding moves +that would lead to impossible crossings later. + +\dt \e{Disallow consecutive 1 clues} + +\dd Controls whether the Tracks game generation permits two adjacent +rows or columns to have a 1 clue, or permits the row or column of the +track's endpoint to have a 1 clue. By default this is not permitted, +to avoid long straight boring segments of track and make the games +more twiddly and interesting. If you want to restore the possibility, +turn this option off. + + +\C{palisade} \i{Palisade} + +\cfg{winhelp-topic}{games.palisade} + +You're given a grid of squares, some of which contain numbers. Your +goal is to subdivide the grid into contiguous regions, all of the same +(given) size, such that each square containing a number is adjacent to +exactly that many edges (including those between the inside and the +outside of the grid). + +Credit for this puzzle goes to \i{Nikoli}, who call it \q{Five Cells}. +\k{nikoli-palisade}. + +Palisade was contributed to this collection by Jonas K\u00F6{oe}lker. + +\B{nikoli-palisade} +\W{http://nikoli.co.jp/en/puzzles/five_cells.html}\cw{http://nikoli.co.jp/en/puzzles/five_cells.html} + +\H{palisade-controls} \I{controls, for Palisade}Palisade controls + +Left-click to place an edge. Right-click to indicate \q{no edge}. +Alternatively, the arrow keys will move a keyboard cursor. Holding +Control while pressing an arrow key will place an edge. Press +Shift-arrowkey to switch off an edge. Repeat an action to perform +its inverse. + +(All the actions described in \k{common-actions} are also available.) + +\H{Palisade-parameters} \I{parameters, for Palisade}Palisade parameters + +These parameters are available from the \q{Custom...} option on the +\q{Type} menu. + +\dt \e{Width}, \e{Height} + +\dd Size of grid in squares. + +\dt \e{Region size} + +\dd The size of the regions into which the grid must be subdivided. + \A{licence} \I{MIT licence}\ii{Licence} This software is \i{copyright} 2004-2014 Simon Tatham. @@ -3175,4 +3400,4 @@ \IM{MIT licence} MIT licence \IM{MIT licence} licence, MIT -\versionid Simon Tatham's Portable Puzzle Collection, version 20140928.r10274 +\versionid Simon Tatham's Portable Puzzle Collection, version 20160429.b31155b diff -Nru sgt-puzzles-20140928.r10274/puzzles.cnt sgt-puzzles-20160429.b31155b/puzzles.cnt --- sgt-puzzles-20140928.r10274/puzzles.cnt 2014-09-29 00:35:53.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/puzzles.cnt 2016-04-29 00:37:39.000000000 +0000 @@ -151,5 +151,17 @@ 2 Chapter 38: Unruly=games.unruly 2 Section 38.1: Unruly controls=t00000075 2 Section 38.2: Unruly parameters=t00000076 +1 Chapter 39: Flood +2 Chapter 39: Flood=games.flood +2 Section 39.1: Flood controls=t00000077 +2 Section 39.2: Flood parameters=t00000078 +1 Chapter 40: Tracks +2 Chapter 40: Tracks=games.tracks +2 Section 40.1: Tracks controls=t00000079 +2 Section 40.2: Tracks parameters=t00000080 +1 Chapter 41: Palisade +2 Chapter 41: Palisade=games.palisade +2 Section 41.1: Palisade controls=t00000081 +2 Section 41.2: Palisade parameters=t00000082 1 Appendix A: Licence -2 Appendix A: Licence=t00000077 +2 Appendix A: Licence=t00000083 diff -Nru sgt-puzzles-20140928.r10274/puzzles.h sgt-puzzles-20160429.b31155b/puzzles.h --- sgt-puzzles-20140928.r10274/puzzles.h 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/puzzles.h 2016-04-29 00:30:09.000000000 +0000 @@ -468,6 +468,41 @@ int *divvy_rectangle(int w, int h, int k, random_state *rs); /* + * findloop.c + */ +struct findloopstate; +struct findloopstate *findloop_new_state(int nvertices); +void findloop_free_state(struct findloopstate *); +/* + * Callback provided by the client code to enumerate the graph + * vertices joined directly to a given vertex. + * + * Semantics: if vertex >= 0, return one of its neighbours; if vertex + * < 0, return a previously unmentioned neighbour of whatever vertex + * was last passed as input. Write to 'ctx' as necessary to store + * state. In either case, return < 0 if no such vertex can be found. + */ +typedef int (*neighbour_fn_t)(int vertex, void *ctx); +/* + * Actual function to find loops. 'ctx' will be passed unchanged to + * the 'neighbour' function to query graph edges. Returns FALSE if no + * loop was found, or TRUE if one was. + */ +int findloop_run(struct findloopstate *state, int nvertices, + neighbour_fn_t neighbour, void *ctx); +/* + * Query whether an edge is part of a loop, in the output of + * find_loops. + * + * Due to the internal storage format, if you pass u,v which are not + * connected at all, the output will be TRUE. (The algorithm actually + * stores an exhaustive list of *non*-loop edges, because there are + * fewer of those, so really it's querying whether the edge is on that + * list.) + */ +int findloop_is_loop_edge(struct findloopstate *state, int u, int v); + +/* * Data structure containing the function calls and data specific * to a particular game. This is enclosed in a data structure so * that a particular platform can choose, if it wishes, to compile @@ -587,4 +622,7 @@ extern const game thegame; #endif +/* A little bit of help to lazy developers */ +#define DEFAULT_STATUSBAR_TEXT "Use status_bar() to fill this in." + #endif /* PUZZLES_PUZZLES_H */ Binary files /tmp/tmpNfvPdt/Miz1GIHGA1/sgt-puzzles-20140928.r10274/puzzles.hlp and /tmp/tmpNfvPdt/X51OUp4cOA/sgt-puzzles-20160429.b31155b/puzzles.hlp differ diff -Nru sgt-puzzles-20140928.r10274/puzzles.txt sgt-puzzles-20160429.b31155b/puzzles.txt --- sgt-puzzles-20140928.r10274/puzzles.txt 2014-09-29 00:35:53.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/puzzles.txt 2016-04-29 00:37:39.000000000 +0000 @@ -555,6 +555,10 @@ The arrow keys will move a tile adjacent to the space in the direction indicated (moving the space in the _opposite_ direction). + Pressing `h' will make a suggested move. Pressing `h' enough times + will solve the game, but it may scramble your progress while doing + so. + (All the actions described in section 2.1 are also available.) 5.2 Fifteen parameters @@ -594,6 +598,13 @@ around the edge of the grid, and use the return key to move the row/column in the direction indicated. + You can also move the tiles directly. Move the cursor onto a tile, + hold Control and press an arrow key to move the tile under the + cursor and move the cursor along with the tile. Or, hold Shift to + move only the tile. Pressing Enter simulates holding down Control + (press Enter again to release), while pressing Space simulates + holding down shift. + (All the actions described in section 2.1 are also available.) 6.2 Sixteen parameters @@ -702,9 +713,11 @@ the plus side you get an inexhaustible supply of puzzles tailored to your own specification. - [3] http://www.nikoli.co.jp/puzzles/7/index_text-e.htm + [3] http://www.nikoli.co.jp/en/puzzles/shikaku.html (beware of + Flash) - [4] http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en + [4] + https://web.archive.org/web/20041024001459/http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en 8.1 Rectangles controls @@ -721,7 +734,8 @@ cursor keys to drag a rectangle out from that position, and pressing the return key again completes the rectangle. Using the space bar instead of the return key allows you to erase the contents of a - rectangle without affecting its edges, as above. + rectangle without affecting its edges, as above. Pressing escape + cancels a drag. When a rectangle of the correct size is completed, it will be shaded. @@ -828,6 +842,10 @@ then white, then empty, and the space bar does the same cycle in reverse. + Moving the cursor while holding Control will colour the moved-over + squares black. Holding Shift will colour the moved-over squares + white, and holding both will colour them grey. + (All the actions described in section 2.1 are also available.) 10.2 Pattern parameters @@ -881,7 +899,7 @@ Word Games_. A more elaborate treatment of the history of the puzzle can be found on Wikipedia [6]. - [5] http://www.nikoli.co.jp/puzzles/1/index_text-e.htm + [5] http://www.nikoli.co.jp/en/puzzles/sudoku.html (beware of Flash) [6] http://en.wikipedia.org/wiki/Sudoku @@ -1214,7 +1232,11 @@ be used to select a peg colour, the left and right keys to select a peg position, and the space bar or Enter key to place a peg of the selected colour in the chosen position. `D' or Backspace removes a - peg, and `H' adds a hold marker. + peg, and Space adds a hold marker. + + Pressing `h' or `?' will fill the current guess with a suggested + guess. Using this is not recommended for 10 or more pegs as it is + slow. When the guess is complete, the smaller feedback pegs will be highlighted; clicking on these (or moving the peg cursor to them @@ -1342,6 +1364,10 @@ pressing the space bar will lay a line between the two squares. Repeating either action removes the domino or line. + Pressing a number key will highlight all occurrences of that number. + Pressing that number again will clear the highlighting. Up to two + different numbers can be highlighted at any given time. + (All the actions described in section 2.1 are also available.) 17.2 Dominosa parameters @@ -1375,7 +1401,7 @@ I originally saw this in the form of a Flash game called Planarity [7], written by John Tantalo. - [7] http://home.cwru.edu/~jnt5/Planarity + [7] http://planarity.net 18.1 Untangle controls @@ -1443,7 +1469,7 @@ |......O.| H........| |.....O..| - 12-RH--- + 12-RR--- As shown, it is possible for a beam to receive multiple reflections before re-emerging (see turn 3). Similarly, a beam may be reflected @@ -1557,7 +1583,7 @@ Credit for this puzzle goes to Nikoli [8]. - [8] http://www.nikoli.co.jp/puzzles/39/index.htm (in Japanese) + [8] http://www.nikoli.co.jp/ja/puzzles/gokigen_naname (in Japanese) 20.1 Slant controls @@ -1575,7 +1601,9 @@ You can also use the cursor keys to move around the grid. Pressing the return or space keys will place a \ or a /, respectively, and - will then cycle them as above. + will then cycle them as above. You can also press / or \ to place a + / or \, respectively, independent of what is already in the cursor + square. Backspace removes any line from the cursor square. (All the actions described in section 2.1 are also available.) @@ -1628,7 +1656,7 @@ Light Up was contributed to this collection by James Harvey. - [9] http://www.nikoli.co.jp/puzzles/32/index-e.htm (beware of Flash) + [9] http://www.nikoli.co.jp/en/puzzles/akari.html (beware of Flash) 21.1 Light Up controls @@ -1787,7 +1815,8 @@ and subsequently enhanced to handle various types of non-square grid by Lambros Lambrou. - [10] http://www.nikoli.co.jp/puzzles/3/index-e.htm (beware of Flash) + [10] http://www.nikoli.co.jp/en/puzzles/slitherlink.html (beware of + Flash) 23.1 Loopy controls @@ -1867,10 +1896,9 @@ begin on this path. If you then move in that direction, the arrow will update to indicate the next direction on the path. You can also press Space to automatically move in the direction of the hint - arrow. If you move in a different direction from the one shown by - the arrow, the hint arrows will stop appearing because you have - strayed from the provided path; you can then use `Solve' again to - generate a new path if you want to. + arrow. If you move in a different direction from the one shown + by the arrow, arrows will be shown only if the puzzle is still + solvable. All the actions described in section 2.1 are also available. In particular, if you do run into a mine and die, you can use the Undo @@ -1925,7 +1953,10 @@ You can also use the cursor keys to move around the grid. Pressing the return key over an empty square will place a tent, and pressing the space bar over an empty square will colour it green; either key - will clear an occupied square. + will clear an occupied square. Holding Shift and pressing the cursor + keys will colour empty squares green. Holding Control and pressing + the cursor keys will colour green both empty squares and squares + with tents. (All the actions described in section 2.1 are also available.) @@ -1974,7 +2005,8 @@ Bridges was contributed to this collection by James Harvey. - [12] http://www.nikoli.co.jp/puzzles/14/index-e.htm + [12] http://www.nikoli.co.jp/en/puzzles/hashiwokakero.html (beware + of Flash) 26.1 Bridges controls @@ -2003,13 +2035,19 @@ it and restore your ability to modify it. You can also use the cursor keys to move around the grid: if - possible the cursor will always move orthogonally, otherwise it will - move towards the nearest island to the indicated direction. Pressing - the return key followed by a cursor key will lay a bridge in that - direction (if available); pressing the space bar followed by a - cursor key will lay a `non-bridge' marker. - - You can mark an island as finished by pressing the return key twice. + possible the cursor will always move orthogonally, otherwise it + will move towards the nearest island to the indicated direction. + Holding Control and pressing a cursor key will lay a bridge in that + direction (if available); Shift and a cursor key will lay a `non- + bridge' marker. Pressing the return key followed by a cursor key + will also lay a bridge in that direction. + + You can mark an island as finished by pressing the space bar or by + pressing the return key twice. + + By pressing a number key, you can jump to the nearest island with + that number. Letters `a', ..., `f' count as 10, ..., 15 and `0' as + 16. Violations of the puzzle rules will be marked in red: @@ -2141,9 +2179,9 @@ pressing space will also erase pencil marks. As for Solo, the cursor keys can be used in conjunction with the - digit keys to set numbers or pencil marks. You can also use the 'M' + digit keys to set numbers or pencil marks. You can also use the `M' key to auto-fill every numeric hint, ready for removal as required, - or the 'H' key to do the same but also to remove all obvious hints. + or the `H' key to do the same but also to remove all obvious hints. Alternatively, use the cursor keys to move the mark around the grid. Pressing the return key toggles the mark (from a normal mark to a @@ -2151,6 +2189,11 @@ appropriate way; typing in a 0 or using the space bar will clear a filled square. + Left-clicking a clue will mark it as done (grey it out), or unmark + it if it is already marked. Holding Control or Shift and pressing + an arrow key likewise marks any clue adjacent to the cursor in the + given direction. + (All the actions described in section 2.1 are also available.) 27.2 Unequal parameters @@ -2191,7 +2234,7 @@ Galaxies was contributed to this collection by James Harvey. - [13] http://www.nikoli.co.jp/en/puzzles/astronomical_show/ + [13] http://www.nikoli.co.jp/en/puzzles/astronomical_show.html 28.1 Galaxies controls @@ -2258,7 +2301,7 @@ Filling was contributed to this collection by Jonas Koelker. - [14] http://www.nikoli.co.jp/en/puzzles/fillomino/ + [14] http://www.nikoli.co.jp/en/puzzles/fillomino.html 29.1 Filling controls @@ -2270,10 +2313,12 @@ use the Undo feature). You can also move around the grid with the cursor keys; typing a - digit will fill the square containing the cursor with that number, - or typing 0, Space, or Enter will clear it. You can also select - multiple squares for numbering or clearing by using the return key, - before typing a digit to fill in the highlighted squares (as above). + digit will fill the square containing the cursor with that number; + typing 0 will clear it. You can also select multiple squares for + numbering or clearing with the return and arrow keys, before typing + a digit to fill or clear the highlighted squares (as above). The + space bar adds and removes single squares to and from the selection. + Backspace and escape remove all squares from the selection. (All the actions described in section 2.1 are also available.) @@ -2381,6 +2426,11 @@ should still be unique. The remaining levels require increasingly complex reasoning to avoid having to backtrack. + _Multiplication only_ + + If this is enabled, all boxes will be multiplication boxes. With + this rule, the puzzle is known as `Inshi No Heya'. + Chapter 31: Towers ------------------ @@ -2448,6 +2498,10 @@ Pressing M will fill in a full set of pencil marks in every square that does not have a main digit in it. + Left-clicking a clue will mark it as done (grey it out), or unmark + it if it is already marked. Holding Control or Shift and pressing an + arrow key likewise marks any clue in the given direction. + (All the actions described in section 2.1 are also available.) 31.2 Towers parameters @@ -2487,8 +2541,7 @@ Singles was contributed to this collection by James Harvey. - [15] http://www.nikoli.com/en/puzzles/hitori/index.html (beware of - Flash) + [15] http://www.nikoli.com/en/puzzles/hitori.html (beware of Flash) 32.1 Singles controls @@ -2551,6 +2604,9 @@ deductions while solving), and right-clicking again empties the domino. + Left-clicking a clue will mark it as done (grey it out), or unmark + it if it is already marked. + You can also use the cursor keys to move a cursor around the grid. Pressing the return key will lay a domino with a positive pole at that position; pressing again reverses the polarity and then removes @@ -2692,7 +2748,7 @@ Range was contributed to this collection by Jonas Koelker. - [18] http://www.nikoli.co.jp/en/puzzles/where_is_black_cells/ + [18] http://www.nikoli.co.jp/en/puzzles/where_is_black_cells.html 35.1 Range controls @@ -2704,7 +2760,9 @@ You can also use the cursor keys to move around the grid squares. Pressing Return does the same as clicking with the left button, - while pressing Space does the same as a right button click. + while pressing Space does the same as a right button click. Moving + with the cursor keys while holding Shift will place dots in all + squares that are moved through. (All the actions described in section 2.1 are also available.) @@ -2747,7 +2805,7 @@ Thanks to James Harvey for assistance with the implementation. - [19] http://www.nikoli.co.jp/en/puzzles/masyu/ + [19] http://www.nikoli.co.jp/en/puzzles/masyu.html (beware of Flash) 36.1 Pearl controls @@ -2767,10 +2825,14 @@ cross.) Alternatively, use the cursor keys to move the cursor. Use the Enter - key to begin and end keyboard `drag' operations. Use the Space key - to cancel the drag. Use Ctrl-arrowkey and Shift-arrowkey to simulate - a left or right click, respectively, on the edge in the given - direction relative to the cursor, i.e. to draw a segment or a cross. + key to begin and end keyboard `drag' operations. Use the Space, + Escape or Backspace keys to cancel the drag. Or, hold Control while + dragging with the cursor keys to toggle segments as you move between + squares. + + Pressing Control-Shift-arrowkey or Shift-arrowkey simulates a left + or right click, respectively, on the edge in the direction of the + key. (All the actions described in section 2.1 are also available.) @@ -2845,6 +2907,9 @@ pictures, you can press `A' to toggle between showing the monsters as monsters or showing them as letters. + Left-clicking a clue will mark it as done (grey it out), or unmark + it if it is already marked. + (All the actions described in section 2.1 are also available.) 37.2 Undead parameters @@ -2911,6 +2976,162 @@ pattern, and likewise columns. (A row and a column can match, though.) +Chapter 39: Flood +----------------- + + You are given a grid of squares, coloured at random in multiple + colours. In each move, you can flood-fill the top left square in a + colour of your choice (i.e. every square reachable from the starting + square by an orthogonally connected path of squares all the same + colour will be filled in the new colour). As you do this, more and + more of the grid becomes connected to the starting square. + + Your aim is to make the whole grid the same colour, in as few moves + as possible. The game will set a limit on the number of moves, based + on running its own internal solver. You win if you can make the + whole grid the same colour in that many moves or fewer. + + I saw this game (with a fixed grid size, fixed number of colours, + and fixed move limit) at http://floodit.appspot.com (no longer + accessible). + + 39.1 Flood controls + + To play Flood, click the mouse in a square. The top left corner and + everything connected to it will be flood-filled with the colour of + the square you clicked. Clicking a square the same colour as the top + left corner has no effect, and therefore does not count as a move. + + You can also use the cursor keys to move a cursor (outline black + square) around the grid. Pressing the return key will fill the top + left corner in the colour of the square under the cursor. + + (All the actions described in section 2.1 are also available.) + + 39.2 Flood parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of the grid, in squares. + + _Colours_ + + Number of colours used to fill the grid. Must be at least 3 + (with two colours there would only be one legal move at any + stage, hence no choice to make at all), and at most 10. + + _Extra moves permitted_ + + Controls the difficulty of the puzzle, by increasing the move + limit. In each new grid, Flood will run an internal solver to + generate its own solution, and then the value in this field + will be added to the length of Flood's solution to generate the + game's move limit. So a value of 0 requires you to be just as + efficient as Flood's automated solver, and a larger value makes + it easier. + + (Note that Flood's internal solver will not necessarily find the + shortest possible solution, though I believe it's pretty close. + For a real challenge, set this value to 0 and then try to solve + a grid in _strictly fewer_ moves than the limit you're given!) + +Chapter 40: Tracks +------------------ + + You are given a grid of squares, some of which are filled with train + tracks. You need to complete the track from A to B so that the + rows and columns contain the same number of track segments as are + indicated in the clues to the top and right of the grid. + + There are only straight and 90 degree curved rails, and the track + may not cross itself. + + Tracks was contributed to this collection by James Harvey. + + 40.1 Tracks controls + + Left-clicking on an edge between two squares adds a track segment + between the two squares. Right-clicking on an edge adds a cross on + the edge, indicating no track is possible there. + + Left-clicking in a square adds a colour indicator showing that + you know the square must contain a track, even if you don't know + which edges it crosses yet. Right-clicking in a square adds a cross + indicating it contains no track segment. + + Left- or right-dragging between squares allows you to lay a straight + line of is-track or is-not-track indicators, useful for filling in + rows or columns to match the clue. + + (All the actions described in section 2.1 are also available.) + + 40.2 Tracks parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of the grid, in squares. + + _Difficulty_ + + Controls the difficulty of the generated puzzle: at Tricky + level, you are required to make more deductions regarding + disregarding moves that would lead to impossible crossings + later. + + _Disallow consecutive 1 clues_ + + Controls whether the Tracks game generation permits two adjacent + rows or columns to have a 1 clue, or permits the row or column + of the track's endpoint to have a 1 clue. By default this is + not permitted, to avoid long straight boring segments of track + and make the games more twiddly and interesting. If you want to + restore the possibility, turn this option off. + +Chapter 41: Palisade +-------------------- + + You're given a grid of squares, some of which contain numbers. Your + goal is to subdivide the grid into contiguous regions, all of the + same (given) size, such that each square containing a number is + adjacent to exactly that many edges (including those between the + inside and the outside of the grid). + + Credit for this puzzle goes to Nikoli, who call it `Five Cells'. + [22]. + + Palisade was contributed to this collection by Jonas Koelker. + + [22] http://nikoli.co.jp/en/puzzles/five_cells.html + + 41.1 Palisade controls + + Left-click to place an edge. Right-click to indicate `no edge'. + Alternatively, the arrow keys will move a keyboard cursor. Holding + Control while pressing an arrow key will place an edge. Press Shift- + arrowkey to switch off an edge. Repeat an action to perform its + inverse. + + (All the actions described in section 2.1 are also available.) + + 41.2 Palisade parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. + + _Region size_ + + The size of the regions into which the grid must be subdivided. + Appendix A: Licence ------------------- @@ -2940,4 +3161,4 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -[Simon Tatham's Portable Puzzle Collection, version 20140928.r10274] +[Simon Tatham's Portable Puzzle Collection, version 20160429.b31155b] diff -Nru sgt-puzzles-20140928.r10274/range.c sgt-puzzles-20160429.b31155b/range.c --- sgt-puzzles-20140928.r10274/range.c 2014-09-09 14:20:10.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/range.c 2016-04-29 00:30:09.000000000 +0000 @@ -15,7 +15,8 @@ * cell. Then n must equal h + v - 1. */ -/* example instance with its encoding: +/* example instance with its encoding and textual representation, both + * solved and unsolved (made by thegame.solve and thegame.text_format) * * +--+--+--+--+--+--+--+ * | | | | | 7| | | @@ -34,6 +35,22 @@ * +--+--+--+--+--+--+--+ * * 7x7:d7b3e8e5c7a7c13e4d8b4d + * + * +--+--+--+--+--+--+--+ + * |..|..|..|..| 7|..|..| + * +--+--+--+--+--+--+--+ + * | 3|..|##|..|##|..| 8| + * +--+--+--+--+--+--+--+ + * |##|..|..|##|..| 5|..| + * +--+--+--+--+--+--+--+ + * |..|..| 7|..| 7|##|..| + * +--+--+--+--+--+--+--+ + * |..|13|..|..|..|..|..| + * +--+--+--+--+--+--+--+ + * | 4|..|##|..|##|..| 8| + * +--+--+--+--+--+--+--+ + * |##|..| 4|..|..|##|..| + * +--+--+--+--+--+--+--+ */ #include @@ -1150,7 +1167,7 @@ cellsize = 0; /* or may be used uninitialized */ for (c = 0; c < w; ++c) { - for (r = 1; r < h; ++r) { + for (r = 0; r < h; ++r) { puzzle_size k = state->grid[idx(r, c, w)]; int d; for (d = 0; k; k /= 10, ++d); @@ -1256,6 +1273,8 @@ enum {none, forwards, backwards, hint}; int const w = state->params.w, h = state->params.h; int r = ui->r, c = ui->c, action = none, cell; + int shift = button & MOD_SHFT; + button &= ~shift; if (IS_CURSOR_SELECT(button) && !ui->cursor_show) return NULL; @@ -1313,7 +1332,36 @@ int i; for (i = 0; i < 4 && cursors[i] != button; ++i); assert (i < 4); - if (!out_of_bounds(ui->r + dr[i], ui->c + dc[i], w, h)) { + if (shift) { + int pre_r = r, pre_c = c, do_pre, do_post; + cell = state->grid[idx(r, c, state->params.w)]; + do_pre = (cell == EMPTY); + + if (out_of_bounds(ui->r + dr[i], ui->c + dc[i], w, h)) { + if (do_pre) + return nfmtstr(40, "W,%d,%d", pre_r, pre_c); + else + return NULL; + } + + ui->r += dr[i]; + ui->c += dc[i]; + + cell = state->grid[idx(ui->r, ui->c, state->params.w)]; + do_post = (cell == EMPTY); + + /* (do_pre ? "..." : "") concat (do_post ? "..." : "") */ + if (do_pre && do_post) + return nfmtstr(80, "W,%d,%dW,%d,%d", + pre_r, pre_c, ui->r, ui->c); + else if (do_pre) + return nfmtstr(40, "W,%d,%d", pre_r, pre_c); + else if (do_post) + return nfmtstr(40, "W,%d,%d", ui->r, ui->c); + else + return ""; + + } else if (!out_of_bounds(ui->r + dr[i], ui->c + dc[i], w, h)) { ui->r += dr[i]; ui->c += dc[i]; } @@ -1434,7 +1482,7 @@ int biggest, canonical; if (!report) { - printf("dfs fail at %d\n", any_white_cell); + sfree(dsf); goto found_error; } @@ -1646,8 +1694,6 @@ if (!ds->started) { ds->started = TRUE; draw_rect(dr, 0, 0, wpx, hpx, COL_BACKGROUND); - draw_rect(dr, BORDER-1, BORDER-1, - ds->tilesize*w+2, ds->tilesize*h+2, COL_GRID); draw_update(dr, 0, 0, wpx, hpx); } @@ -1679,17 +1725,15 @@ cell.flash || cell.cursor ? COL_LOWLIGHT : COL_BACKGROUND); - draw_rect (draw, x, y, ts, ts, colour); - draw_rect_outline(draw, x, y, ts, ts, COL_GRID); + draw_rect_outline(draw, x, y, ts + 1, ts + 1, COL_GRID); + draw_rect (draw, x + 1, y + 1, ts - 1, ts - 1, colour); + if (cell.error) + draw_rect_outline(draw, x + 1, y + 1, ts - 1, ts - 1, COL_ERROR); switch (cell.value) { case WHITE: draw_rect(draw, tx - dotsz / 2, ty - dotsz / 2, dotsz, dotsz, cell.error ? COL_ERROR : COL_USER); - case BLACK: break; - case EMPTY: - if (cell.error) - draw_circle(draw, tx, ty, dotsz / 2, COL_ERROR, COL_GRID); - break; + case BLACK: case EMPTY: break; default: { int const colour = (cell.error ? COL_ERROR : COL_GRID); @@ -1700,7 +1744,7 @@ } } - draw_update(draw, x, y, ts, ts); + draw_update(draw, x, y, ts + 1, ts + 1); } static int game_timing_state(const game_state *state, game_ui *ui) diff -Nru sgt-puzzles-20140928.r10274/range.R sgt-puzzles-20160429.b31155b/range.R --- sgt-puzzles-20140928.r10274/range.R 2014-09-09 14:20:10.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/range.R 2016-04-29 00:30:09.000000000 +0000 @@ -17,5 +17,5 @@ !end !begin >gamedesc.txt -range:range.exe:Range:Visible-distance puzzle +range:range.exe:Range:Visible-distance puzzle:Place black squares to limit the visible distance from each numbered cell. !end diff -Nru sgt-puzzles-20140928.r10274/README sgt-puzzles-20160429.b31155b/README --- sgt-puzzles-20140928.r10274/README 2007-03-01 13:29:53.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/README 2016-04-29 00:30:09.000000000 +0000 @@ -5,16 +5,18 @@ If you've obtained the source code by downloading a .tar.gz archive from the Puzzles web site, you should find several Makefiles in the source code. However, if you've checked the source code out from the -Puzzles Subversion repository, you won't find the Makefiles: they're +Puzzles git repository, you won't find the Makefiles: they're automatically generated by `mkfiles.pl', so run that to create them. The Makefiles include: - - `Makefile' should work under GNU make on Linux, provided you have - GTK installed to compile and link against. It builds GTK binaries - of the puzzle games. + - `Makefile.am', together with the static `configure.ac', is intended + as input to automake. Run `mkauto.sh' to turn these into a + configure script and Makefile.in, after which you can then run + `./configure' to create an actual Unix Makefile. - - `Makefile.vc' should work under MS Visual C++ on Windows. + - `Makefile.vc' should work under MS Visual C++ on Windows. Run + 'nmake /f Makefile.vc' in a Visual Studio command prompt. - `Makefile.cyg' should work under Cygwin / MinGW. With appropriate tweaks and setting of TOOLPATH, it should work for both compiling diff -Nru sgt-puzzles-20140928.r10274/Recipe sgt-puzzles-20160429.b31155b/Recipe --- sgt-puzzles-20140928.r10274/Recipe 2014-09-24 10:33:22.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/Recipe 2016-04-29 00:30:09.000000000 +0000 @@ -142,11 +142,16 @@ benchmark.html: benchmark.txt benchmark.pl ./benchmark.pl benchmark.txt > $@ -benchmark.txt: $(GAMES) - for i in $(GAMES); do \ - for params in $$(env -i ./$(BINPREFIX)$$i --list-presets | cut -f1 -d' '); do \ - env -i ./$(BINPREFIX)$$i --test-solve --time-generation --generate 100 $$params \ - || exit 1; \ - done; \ - done > $@ +benchmark.txt: benchmark.sh $(GAMES) + ./benchmark.sh > $@ + +!end +!begin am +test: benchmark.html benchmark.txt + +benchmark.html: benchmark.txt benchmark.pl + ./benchmark.pl benchmark.txt > $@ + +benchmark.txt: benchmark.sh $(GAMES) + ./benchmark.sh > $@ !end diff -Nru sgt-puzzles-20140928.r10274/rect.c sgt-puzzles-20160429.b31155b/rect.c --- sgt-puzzles-20140928.r10274/rect.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/rect.c 2016-04-29 00:30:09.000000000 +0000 @@ -1317,7 +1317,8 @@ if (ndirs > 0) { int which, dir; struct rect r1, r2; - + memset(&r1, 0, sizeof(struct rect)); + memset(&r2, 0, sizeof(struct rect)); which = random_upto(rs, ndirs); dir = dirs[which]; @@ -2187,18 +2188,24 @@ int cur_x, cur_y, cur_visible, cur_dragging; }; -static game_ui *new_ui(const game_state *state) +static void reset_ui(game_ui *ui) { - game_ui *ui = snew(game_ui); ui->drag_start_x = -1; ui->drag_start_y = -1; ui->drag_end_x = -1; ui->drag_end_y = -1; - ui->dragged = ui->erasing = FALSE; ui->x1 = -1; ui->y1 = -1; ui->x2 = -1; ui->y2 = -1; + ui->dragged = FALSE; +} + +static game_ui *new_ui(const game_state *state) +{ + game_ui *ui = snew(game_ui); + reset_ui(ui); + ui->erasing = FALSE; ui->cur_x = ui->cur_y = ui->cur_visible = ui->cur_dragging = 0; return ui; } @@ -2381,21 +2388,8 @@ coord_round(FROMCOORD((float)x), FROMCOORD((float)y), &xc, &yc); if (button == LEFT_BUTTON || button == RIGHT_BUTTON) { - if (ui->drag_start_x >= 0 && ui->cur_dragging) { - /* - * If a keyboard drag is in progress, unceremoniously - * cancel it. - */ - ui->drag_start_x = -1; - ui->drag_start_y = -1; - ui->drag_end_x = -1; - ui->drag_end_y = -1; - ui->x1 = -1; - ui->y1 = -1; - ui->x2 = -1; - ui->y2 = -1; - ui->dragged = FALSE; - } + if (ui->drag_start_x >= 0 && ui->cur_dragging) + reset_ui(ui); /* cancel keyboard dragging */ startdrag = TRUE; ui->cur_visible = ui->cur_dragging = FALSE; active = TRUE; @@ -2439,6 +2433,15 @@ startdrag = TRUE; active = TRUE; } + } else if (button == '\b' || button == 27) { + if (!ui->cur_dragging) { + ui->cur_visible = FALSE; + } else { + assert(ui->cur_visible); + reset_ui(ui); /* cancel keyboard dragging */ + ui->cur_dragging = FALSE; + } + return ""; } else if (button != LEFT_DRAG && button != RIGHT_DRAG) { return NULL; } @@ -2515,15 +2518,7 @@ } } - ui->drag_start_x = -1; - ui->drag_start_y = -1; - ui->drag_end_x = -1; - ui->drag_end_y = -1; - ui->x1 = -1; - ui->y1 = -1; - ui->x2 = -1; - ui->y2 = -1; - ui->dragged = FALSE; + reset_ui(ui); active = TRUE; } @@ -2965,7 +2960,7 @@ #endif const struct game thegame = { - "Rectangles", "games.rectangles", "rectangles", + "Rectangles", "games.rectangles", "rect", default_params, game_fetch_preset, decode_params, diff -Nru sgt-puzzles-20140928.r10274/rect.R sgt-puzzles-20160429.b31155b/rect.R --- sgt-puzzles-20140928.r10274/rect.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/rect.R 2016-04-29 00:30:09.000000000 +0000 @@ -15,5 +15,5 @@ !end !begin >gamedesc.txt -rect:rect.exe:Rectangles:Rectangles puzzle +rect:rect.exe:Rectangles:Rectangles puzzle:Divide the grid into rectangles with areas equal to the numbers. !end diff -Nru sgt-puzzles-20140928.r10274/samegame.R sgt-puzzles-20160429.b31155b/samegame.R --- sgt-puzzles-20140928.r10274/samegame.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/samegame.R 2016-04-29 00:30:09.000000000 +0000 @@ -15,5 +15,5 @@ !end !begin >gamedesc.txt -samegame:samegame.exe:Same Game:Block-clearing puzzle +samegame:samegame.exe:Same Game:Block-clearing puzzle:Clear the grid by removing touching groups of the same colour squares. !end diff -Nru sgt-puzzles-20140928.r10274/signpost.c sgt-puzzles-20160429.b31155b/signpost.c --- sgt-puzzles-20140928.r10274/signpost.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/signpost.c 2016-04-29 00:30:09.000000000 +0000 @@ -422,11 +422,12 @@ static char *validate_params(const game_params *params, int full) { - if (params->w < 2 || params->h < 2) - return "Width and height must both be at least two"; - if (params->w == 2 && params->h == 2) /* leads to generation hang */ - return "Width and height cannot both be two"; - + if (params->w < 1) return "Width must be at least one"; + if (params->h < 1) return "Height must be at least one"; + if (full && params->w == 1 && params->h == 1) + /* The UI doesn't let us move these from unsolved to solved, + * so we disallow generating (but not playing) them. */ + return "Width and height cannot both be one"; return NULL; } @@ -623,6 +624,7 @@ state->dirs[taili] = 0; nfilled = 2; + assert(state->n > 1); while (nfilled < state->n) { /* Try and expand _from_ headi; keep going if there's only one @@ -638,6 +640,8 @@ an = cell_adj(state, headi, aidx, adir); } while (an == 1); + if (nfilled == state->n) break; + /* Try and expand _to_ taili; keep going if there's only one * place to go to. */ an = cell_adj(state, taili, aidx, adir); @@ -801,6 +805,9 @@ char *ret; int headi, taili; + /* this shouldn't happen (validate_params), but let's play it safe */ + if (params->w == 1 && params->h == 1) return dupstr("1a"); + generate: blank_game_into(state); @@ -1578,6 +1585,8 @@ si = sy*w+sx; ei = ey*w+ex; makelink(ret, si, ei); } else if (sscanf(move, "%c%d,%d", &c, &sx, &sy) == 3) { + int sset; + if (c != 'C' && c != 'X') return NULL; if (!INGRID(state, sx, sy)) return NULL; si = sy*w+sx; @@ -1586,11 +1595,12 @@ ret = dup_game(state); - if (c == 'C') { + sset = state->nums[si] / (state->n+1); + if (c == 'C' || (c == 'X' && sset == 0)) { /* Unlink the single cell we dragged from the board. */ unlink_cell(ret, si); } else { - int i, set, sset = state->nums[si] / (state->n+1); + int i, set; for (i = 0; i < state->n; i++) { /* Unlink all cells in the same set as the one we dragged * from the board. */ @@ -1982,7 +1992,7 @@ /* Draw an arrow pointing away from/towards the origin cell. */ int ox = COORD(ui->sx) + TILE_SIZE/2, oy = COORD(ui->sy) + TILE_SIZE/2; double tana, offset; - double xdiff = fabs(ox - ui->dx), ydiff = fabs(oy - ui->dy); + double xdiff = abs(ox - ui->dx), ydiff = abs(oy - ui->dy); if (xdiff == 0) { ang = (oy > ui->dy) ? 0.0F : PI; @@ -2393,7 +2403,7 @@ } } - sprintf(newseed, "%lu", time(NULL)); + sprintf(newseed, "%lu", (unsigned long) time(NULL)); seedstr = dupstr(newseed); if (id || !stdin_desc) { diff -Nru sgt-puzzles-20140928.r10274/signpost.R sgt-puzzles-20160429.b31155b/signpost.R --- sgt-puzzles-20140928.r10274/signpost.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/signpost.R 2016-04-29 00:30:09.000000000 +0000 @@ -19,5 +19,5 @@ !end !begin >gamedesc.txt -signpost:signpost.exe:Signpost:Square-connecting puzzle +signpost:signpost.exe:Signpost:Square-connecting puzzle:Connect the squares into a path following the arrows. !end diff -Nru sgt-puzzles-20140928.r10274/singles.R sgt-puzzles-20160429.b31155b/singles.R --- sgt-puzzles-20140928.r10274/singles.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/singles.R 2016-04-29 00:30:09.000000000 +0000 @@ -19,5 +19,5 @@ !end !begin >gamedesc.txt -singles:singles.exe:Singles:Number-removing puzzle +singles:singles.exe:Singles:Number-removing puzzle:Black out the right set of duplicate numbers. !end diff -Nru sgt-puzzles-20140928.r10274/sixteen.c sgt-puzzles-20160429.b31155b/sixteen.c --- sgt-puzzles-20140928.r10274/sixteen.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/sixteen.c 2016-04-29 00:30:09.000000000 +0000 @@ -27,6 +27,9 @@ #define Y(state, i) ( (i) / (state)->w ) #define C(state, x, y) ( (y) * (state)->w + (x) ) +#define TILE_CURSOR(i, state, x, y) ((i) == C((state), (x), (y)) && \ + 0 <= (x) && (x) < (state)->w && \ + 0 <= (y) && (y) < (state)->h) enum { COL_BACKGROUND, COL_TEXT, @@ -555,24 +558,28 @@ return ret; } +enum cursor_mode { unlocked, lock_tile, lock_position }; + struct game_ui { int cur_x, cur_y; int cur_visible; + enum cursor_mode cur_mode; }; static game_ui *new_ui(const game_state *state) { game_ui *ui = snew(game_ui); ui->cur_x = 0; - ui->cur_y = -1; + ui->cur_y = 0; ui->cur_visible = FALSE; + ui->cur_mode = unlocked; return ui; } static void free_ui(game_ui *ui) { - sfree(ui); + sfree(ui); } static char *encode_ui(const game_ui *ui) @@ -603,21 +610,71 @@ { int cx = -1, cy = -1, dx, dy; char buf[80]; + int shift = button & MOD_SHFT, control = button & MOD_CTRL, + pad = button & MOD_NUM_KEYPAD; button &= ~MOD_MASK; - if (IS_CURSOR_MOVE(button)) { - /* right/down rotates cursor clockwise, - * left/up rotates anticlockwise. */ - int cpos, diff; - cpos = c2pos(state->w, state->h, ui->cur_x, ui->cur_y); - diff = c2diff(state->w, state->h, ui->cur_x, ui->cur_y, button); + if (IS_CURSOR_MOVE(button) || pad) { + if (!ui->cur_visible) { + ui->cur_visible = 1; + return ""; + } + + if (control || shift || ui->cur_mode) { + int x = ui->cur_x, y = ui->cur_y, xwrap = x, ywrap = y; + if (x < 0 || x >= state->w || y < 0 || y >= state->h) + return NULL; + move_cursor(button | pad, &x, &y, + state->w, state->h, FALSE); + move_cursor(button | pad, &xwrap, &ywrap, + state->w, state->h, TRUE); + + if (x != xwrap) { + sprintf(buf, "R%d,%c1", y, x ? '+' : '-'); + } else if (y != ywrap) { + sprintf(buf, "C%d,%c1", x, y ? '+' : '-'); + } else if (x == ui->cur_x) + sprintf(buf, "C%d,%d", x, y - ui->cur_y); + else + sprintf(buf, "R%d,%d", y, x - ui->cur_x); + + if (control || (!shift && ui->cur_mode == lock_tile)) { + ui->cur_x = xwrap; + ui->cur_y = ywrap; + } + + return dupstr(buf); + } else { + int x = ui->cur_x + 1, y = ui->cur_y + 1; + + move_cursor(button | pad, &x, &y, + state->w + 2, state->h + 2, FALSE); - cpos += diff; - pos2c(state->w, state->h, cpos, &ui->cur_x, &ui->cur_y); + if (x == 0 && y == 0) { + int t = ui->cur_x; + ui->cur_x = ui->cur_y; + ui->cur_y = t; + } else if (x == 0 && y == state->h + 1) { + int t = ui->cur_x; + ui->cur_x = (state->h - 1) - ui->cur_y; + ui->cur_y = (state->h - 1) - t; + } else if (x == state->w + 1 && y == 0) { + int t = ui->cur_x; + ui->cur_x = (state->w - 1) - ui->cur_y; + ui->cur_y = (state->w - 1) - t; + } else if (x == state->w + 1 && y == state->h + 1) { + int t = ui->cur_x; + ui->cur_x = state->w - state->h + ui->cur_y; + ui->cur_y = state->h - state->w + t; + } else { + ui->cur_x = x - 1; + ui->cur_y = y - 1; + } - ui->cur_visible = 1; - return ""; + ui->cur_visible = 1; + return ""; + } } if (button == LEFT_BUTTON || button == RIGHT_BUTTON) { @@ -626,8 +683,16 @@ ui->cur_visible = 0; } else if (IS_CURSOR_SELECT(button)) { if (ui->cur_visible) { - cx = ui->cur_x; - cy = ui->cur_y; + if (ui->cur_x == -1 || ui->cur_x == state->w || + ui->cur_y == -1 || ui->cur_y == state->h) { + cx = ui->cur_x; + cy = ui->cur_y; + } else { + const enum cursor_mode m = (button == CURSOR_SELECT2 ? + lock_position : lock_tile); + ui->cur_mode = (ui->cur_mode == m ? unlocked : m); + return ""; + } } else { ui->cur_visible = 1; return ""; @@ -853,7 +918,7 @@ else if (cur_y == ds->h) /* Bottom row */ draw_arrow(dr, ds, COORD(cur_x+1), COORD(ds->h), -1, 0, cur); else - assert(!"Invalid cursor position"); + return; draw_update(dr, COORD(cur_x), COORD(cur_y), TILE_SIZE, TILE_SIZE); @@ -922,11 +987,11 @@ if (ui->cur_visible) { cur_x = ui->cur_x; cur_y = ui->cur_y; } + if (cur_x != ds->cur_x || cur_y != ds->cur_y) { /* Cursor has changed; redraw two (prev and curr) arrows. */ draw_arrow_for_cursor(dr, ds, cur_x, cur_y, 1); draw_arrow_for_cursor(dr, ds, ds->cur_x, ds->cur_y, 0); - ds->cur_x = cur_x; ds->cur_y = cur_y; } /* @@ -952,8 +1017,11 @@ t0 = t; if (ds->bgcolour != bgcolour || /* always redraw when flashing */ - ds->tiles[i] != t || ds->tiles[i] == -1 || t == -1) { - int x, y, x2, y2; + ds->tiles[i] != t || ds->tiles[i] == -1 || t == -1 || + ((ds->cur_x != cur_x || ds->cur_y != cur_y) && /* cursor moved */ + (TILE_CURSOR(i, state, ds->cur_x, ds->cur_y) || + TILE_CURSOR(i, state, cur_x, cur_y)))) { + int x, y, x2, y2; /* * Figure out what to _actually_ draw, and where to @@ -1021,13 +1089,19 @@ x2 = y2 = -1; } - draw_tile(dr, ds, state, x, y, t, bgcolour); + draw_tile(dr, ds, state, x, y, t, + (x2 == -1 && TILE_CURSOR(i, state, cur_x, cur_y)) ? + COL_LOWLIGHT : bgcolour); + if (x2 != -1 || y2 != -1) draw_tile(dr, ds, state, x2, y2, t, bgcolour); } ds->tiles[i] = t0; } + ds->cur_x = cur_x; + ds->cur_y = cur_y; + unclip(dr); ds->bgcolour = bgcolour; diff -Nru sgt-puzzles-20140928.r10274/sixteen.R sgt-puzzles-20160429.b31155b/sixteen.R --- sgt-puzzles-20140928.r10274/sixteen.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/sixteen.R 2016-04-29 00:30:09.000000000 +0000 @@ -15,5 +15,5 @@ !end !begin >gamedesc.txt -sixteen:sixteen.exe:Sixteen:Toroidal sliding block puzzle +sixteen:sixteen.exe:Sixteen:Toroidal sliding block puzzle:Slide a row at a time to arrange the tiles into order. !end diff -Nru sgt-puzzles-20140928.r10274/slant.c sgt-puzzles-20160429.b31155b/slant.c --- sgt-puzzles-20140928.r10274/slant.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/slant.c 2016-04-29 00:30:09.000000000 +0000 @@ -1352,97 +1352,71 @@ return anti ? 4 - ret : ret; } +struct slant_neighbour_ctx { + const game_state *state; + int i, n, neighbours[4]; +}; +static int slant_neighbour(int vertex, void *vctx) +{ + struct slant_neighbour_ctx *ctx = (struct slant_neighbour_ctx *)vctx; + + if (vertex >= 0) { + int w = ctx->state->p.w, h = ctx->state->p.h, W = w+1; + int x = vertex % W, y = vertex / W; + ctx->n = ctx->i = 0; + if (x < w && y < h && ctx->state->soln[y*w+x] < 0) + ctx->neighbours[ctx->n++] = (y+1)*W+(x+1); + if (x > 0 && y > 0 && ctx->state->soln[(y-1)*w+(x-1)] < 0) + ctx->neighbours[ctx->n++] = (y-1)*W+(x-1); + if (x > 0 && y < h && ctx->state->soln[y*w+(x-1)] > 0) + ctx->neighbours[ctx->n++] = (y+1)*W+(x-1); + if (x < w && y > 0 && ctx->state->soln[(y-1)*w+x] > 0) + ctx->neighbours[ctx->n++] = (y-1)*W+(x+1); + } + + if (ctx->i < ctx->n) + return ctx->neighbours[ctx->i++]; + else + return -1; +} + static int check_completion(game_state *state) { int w = state->p.w, h = state->p.h, W = w+1, H = h+1; int x, y, err = FALSE; - int *dsf; memset(state->errors, 0, W*H); /* - * To detect loops in the grid, we iterate through each edge - * building up a dsf of connected components of the space - * around the edges; if there's more than one such component, - * we have a loop, and in particular we can then easily - * identify and highlight every edge forming part of a loop - * because it separates two nonequivalent regions. - * - * We use the `tmpdsf' scratch space in the shared clues - * structure, to avoid mallocing too often. - * - * For these purposes, the grid is considered to be divided - * into diamond-shaped regions surrounding an orthogonal edge. - * This means we have W*h vertical edges and w*H horizontal - * ones; so our vertical edges are indexed in the dsf as - * (y*W+x) (0<=yclues->tmpdsf; - dsf_init(dsf, W*h + w*H); - /* Start by identifying all the outer edges with each other. */ - for (y = 0; y < h; y++) { - dsf_merge(dsf, 0, y*W+0); - dsf_merge(dsf, 0, y*W+w); - } - for (x = 0; x < w; x++) { - dsf_merge(dsf, 0, W*h + 0*w+x); - dsf_merge(dsf, 0, W*h + h*w+x); - } - /* Now go through the actual grid. */ - for (y = 0; y < h; y++) - for (x = 0; x < w; x++) { - if (state->soln[y*w+x] >= 0) { - /* - * There isn't a \ in this square, so we can unify - * the top edge with the left, and the bottom with - * the right. - */ - dsf_merge(dsf, y*W+x, W*h + y*w+x); - dsf_merge(dsf, y*W+(x+1), W*h + (y+1)*w+x); - } - if (state->soln[y*w+x] <= 0) { - /* - * There isn't a / in this square, so we can unify - * the top edge with the right, and the bottom - * with the left. - */ - dsf_merge(dsf, y*W+x, W*h + (y+1)*w+x); - dsf_merge(dsf, y*W+(x+1), W*h + y*w+x); - } - } - /* Now go through again and mark the appropriate edges as erroneous. */ - for (y = 0; y < h; y++) - for (x = 0; x < w; x++) { - int erroneous = 0; - if (state->soln[y*w+x] > 0) { - /* - * A / separates the top and left edges (which - * must already have been identified with each - * other) from the bottom and right (likewise). - * Hence it is erroneous if and only if the top - * and right edges are nonequivalent. - */ - erroneous = (dsf_canonify(dsf, y*W+(x+1)) != - dsf_canonify(dsf, W*h + y*w+x)); - } else if (state->soln[y*w+x] < 0) { - /* - * A \ separates the top and right edges (which - * must already have been identified with each - * other) from the bottom and left (likewise). - * Hence it is erroneous if and only if the top - * and left edges are nonequivalent. - */ - erroneous = (dsf_canonify(dsf, y*W+x) != - dsf_canonify(dsf, W*h + y*w+x)); - } - if (erroneous) { - state->errors[y*W+x] |= ERR_SQUARE; - err = TRUE; + { + struct findloopstate *fls = findloop_new_state(W*H); + struct slant_neighbour_ctx ctx; + ctx.state = state; + + if (findloop_run(fls, W*H, slant_neighbour, &ctx)) + err = TRUE; + for (y = 0; y < h; y++) { + for (x = 0; x < w; x++) { + int u, v; + if (state->soln[y*w+x] == 0) { + continue; + } else if (state->soln[y*w+x] > 0) { + u = y*W+(x+1); + v = (y+1)*W+x; + } else { + u = (y+1)*W+(x+1); + v = y*W+x; + } + if (findloop_is_loop_edge(fls, u, v)) + state->errors[y*W+x] |= ERR_SQUARE; } } + findloop_free_state(fls); + } + /* * Now go through and check the degree of each clue vertex, and * mark it with ERR_VERTEX if it cannot be fulfilled. @@ -1705,6 +1679,7 @@ y = FROMCOORD(y); if (x < 0 || y < 0 || x >= w || y >= h) return NULL; + ui->cur_visible = 0; } else if (IS_CURSOR_SELECT(button)) { if (!ui->cur_visible) { ui->cur_visible = 1; @@ -1718,6 +1693,11 @@ move_cursor(button, &ui->cur_x, &ui->cur_y, w, h, 0); ui->cur_visible = 1; return ""; + } else if (button == '\\' || button == '\b' || button == '/') { + int x = ui->cur_x, y = ui->cur_y; + if (button == ("\\" "\b" "/")[state->soln[y*w + x] + 1]) return NULL; + sprintf(buf, "%c%d,%d", button == '\b' ? 'C' : button, x, y); + return dupstr(buf); } if (action != NONE) { diff -Nru sgt-puzzles-20140928.r10274/slant.R sgt-puzzles-20160429.b31155b/slant.R --- sgt-puzzles-20140928.r10274/slant.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/slant.R 2016-04-29 00:30:09.000000000 +0000 @@ -1,6 +1,6 @@ # -*- makefile -*- -SLANT_EXTRA = dsf +SLANT_EXTRA = dsf findloop slant : [X] GTK COMMON slant SLANT_EXTRA slant-icon|no-icon @@ -20,5 +20,5 @@ !end !begin >gamedesc.txt -slant:slant.exe:Slant:Maze-drawing puzzle +slant:slant.exe:Slant:Maze-drawing puzzle:Draw a maze of slanting lines that matches the clues. !end diff -Nru sgt-puzzles-20140928.r10274/solo.c sgt-puzzles-20160429.b31155b/solo.c --- sgt-puzzles-20140928.r10274/solo.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/solo.c 2016-04-29 00:30:09.000000000 +0000 @@ -3840,7 +3840,7 @@ } desc++; - adv = (c != 25); /* 'z' is a special case */ + adv = (c != 26); /* 'z' is a special case */ while (c-- > 0) { int p0, p1; @@ -3849,7 +3849,11 @@ * Non-edge; merge the two dsf classes on either * side of it. */ - assert(pos < 2*cr*(cr-1)); + if (pos >= 2*cr*(cr-1)) { + sfree(dsf); + return "Too much data in block structure specification"; + } + if (pos < cr*(cr-1)) { int y = pos/(cr-1); int x = pos%(cr-1); @@ -4610,6 +4614,9 @@ return dupstr(buf); } + if (button == 'M' || button == 'm') + return dupstr("M"); + return NULL; } @@ -4661,6 +4668,21 @@ } } return ret; + } else if (move[0] == 'M') { + /* + * Fill in absolutely all pencil marks in unfilled squares, + * for those who like to play by the rigorous approach of + * starting off in that state and eliminating things. + */ + ret = dup_game(from); + for (y = 0; y < cr; y++) { + for (x = 0; x < cr; x++) { + if (!ret->grid[y*cr+x]) { + memset(ret->pencil + (y*cr+x)*cr, 1, cr); + } + } + } + return ret; } else return NULL; /* couldn't parse move string */ } diff -Nru sgt-puzzles-20140928.r10274/solo.R sgt-puzzles-20160429.b31155b/solo.R --- sgt-puzzles-20140928.r10274/solo.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/solo.R 2016-04-29 00:30:09.000000000 +0000 @@ -20,5 +20,5 @@ !end !begin >gamedesc.txt -solo:solo.exe:Solo:Number placement puzzle +solo:solo.exe:Solo:Number placement puzzle:Fill in the grid so that each row, column and square block contains one of every digit. !end diff -Nru sgt-puzzles-20140928.r10274/tents.c sgt-puzzles-20160429.b31155b/tents.c --- sgt-puzzles-20140928.r10274/tents.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/tents.c 2016-04-29 00:30:09.000000000 +0000 @@ -1063,7 +1063,7 @@ j = maxflow(w*h+2, w*h+1, w*h, nedges, edges, capacity, flow, NULL); if (j < ntrees) - continue; /* couldn't place all the tents */ + continue; /* couldn't place all the trees */ /* * We've placed the trees. Now we need to work out _where_ @@ -1367,42 +1367,57 @@ static int game_can_format_as_text_now(const game_params *params) { - return TRUE; + return params->w <= 1998 && params->h <= 1998; /* 999 tents */ } static char *game_text_format(const game_state *state) { - int w = state->p.w, h = state->p.h; - char *ret, *p; - int x, y; + int w = state->p.w, h = state->p.h, r, c; + int cw = 4, ch = 2, gw = (w+1)*cw + 2, gh = (h+1)*ch + 1, len = gw * gh; + char *board = snewn(len + 1, char); + + sprintf(board, "%*s\n", len - 2, ""); + for (r = 0; r <= h; ++r) { + for (c = 0; c <= w; ++c) { + int cell = r*ch*gw + cw*c, center = cell + gw*ch/2 + cw/2; + int i = r*w + c, n = 1000; + + if (r == h && c == w) /* NOP */; + else if (c == w) n = state->numbers->numbers[w + r]; + else if (r == h) n = state->numbers->numbers[c]; + else switch (state->grid[i]) { + case BLANK: board[center] = '.'; break; + case TREE: board[center] = 'T'; break; + case TENT: memcpy(board + center - 1, "//\\", 3); break; + case NONTENT: break; + default: memcpy(board + center - 1, "wtf", 3); + } + + if (n < 100) { + board[center] = '0' + n % 10; + if (n >= 10) board[center - 1] = '0' + n / 10; + } else if (n < 1000) { + board[center + 1] = '0' + n % 10; + board[center] = '0' + n / 10 % 10; + board[center - 1] = '0' + n / 100; + } - /* - * FIXME: We currently do not print the numbers round the edges - * of the grid. I need to work out a sensible way of doing this - * even when the column numbers exceed 9. - * - * In the absence of those numbers, the result size is h lines - * of w+1 characters each, plus a NUL. - * - * This function is currently only used by the standalone - * solver; until I make it look more sensible, I won't enable - * it in the main game structure. - */ - ret = snewn(h*(w+1) + 1, char); - p = ret; - for (y = 0; y < h; y++) { - for (x = 0; x < w; x++) { - *p = (state->grid[y*w+x] == BLANK ? '.' : - state->grid[y*w+x] == TREE ? 'T' : - state->grid[y*w+x] == TENT ? '*' : - state->grid[y*w+x] == NONTENT ? '-' : '?'); - p++; + board[cell] = '+'; + memset(board + cell + 1, '-', cw - 1); + for (i = 1; i < ch; ++i) board[cell + i*gw] = '|'; + } + + for (c = 0; c < ch; ++c) { + board[(r*ch+c)*gw + gw - 2] = + c == 0 ? '+' : r < h ? '|' : ' '; + board[(r*ch+c)*gw + gw - 1] = '\n'; } - *p++ = '\n'; } - *p++ = '\0'; - return ret; + memset(board + len - gw, '-', gw - 2 - cw); + for (c = 0; c <= w; ++c) board[len - gw + cw*c] = '+'; + + return board; } struct game_ui { @@ -1529,6 +1544,9 @@ { int w = state->p.w, h = state->p.h; char tmpbuf[80]; + int shift = button & MOD_SHFT, control = button & MOD_CTRL; + + button &= ~MOD_MASK; if (button == LEFT_BUTTON || button == RIGHT_BUTTON) { x = FROMCOORD(x); @@ -1625,8 +1643,26 @@ } if (IS_CURSOR_MOVE(button)) { - move_cursor(button, &ui->cx, &ui->cy, w, h, 0); ui->cdisp = 1; + if (shift || control) { + int len = 0, i, indices[2]; + indices[0] = ui->cx + w * ui->cy; + move_cursor(button, &ui->cx, &ui->cy, w, h, 0); + indices[1] = ui->cx + w * ui->cy; + + /* NONTENTify all unique traversed eligible squares */ + for (i = 0; i <= (indices[0] != indices[1]); ++i) + if (state->grid[indices[i]] == BLANK || + (control && state->grid[indices[i]] == TENT)) { + len += sprintf(tmpbuf + len, "%sN%d,%d", len ? ";" : "", + indices[i] % w, indices[i] / w); + assert(len < lenof(tmpbuf)); + } + + tmpbuf[len] = '\0'; + if (len) return dupstr(tmpbuf); + } else + move_cursor(button, &ui->cx, &ui->cy, w, h, 0); return ""; } if (ui->cdisp) { @@ -2588,7 +2624,7 @@ dup_game, free_game, TRUE, solve_game, - FALSE, game_can_format_as_text_now, game_text_format, + TRUE, game_can_format_as_text_now, game_text_format, new_ui, free_ui, encode_ui, diff -Nru sgt-puzzles-20140928.r10274/tents.R sgt-puzzles-20160429.b31155b/tents.R --- sgt-puzzles-20140928.r10274/tents.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/tents.R 2016-04-29 00:30:09.000000000 +0000 @@ -20,5 +20,5 @@ !end !begin >gamedesc.txt -tents:tents.exe:Tents:Tent-placing puzzle +tents:tents.exe:Tents:Tent-placing puzzle:Place a tent next to each tree. !end diff -Nru sgt-puzzles-20140928.r10274/towers.c sgt-puzzles-20160429.b31155b/towers.c --- sgt-puzzles-20140928.r10274/towers.c 2013-07-05 21:54:45.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/towers.c 2016-04-29 00:30:09.000000000 +0000 @@ -16,12 +16,6 @@ * factorial-time enumeration at a sensible rate. Easy puzzles * higher than that would be possible, but more latin-squarey * than skyscrapery, as it were. - * - * - UI work? - * + Allow the user to mark a clue as 'spent' in some way once - * it's no longer interesting (typically because no - * arrangement of the remaining possibilities _can_ violate - * it)? */ #include @@ -59,6 +53,7 @@ COL_HIGHLIGHT, COL_ERROR, COL_PENCIL, + COL_DONE, NCOLOURS }; @@ -119,6 +114,7 @@ struct game_state { game_params par; struct clues *clues; + unsigned char *clues_done; digit *grid; int *pencil; /* bitmaps using bits 1<<1..1<clues->clues = snewn(4*w, int); state->clues->immutable = snewn(a, digit); state->grid = snewn(a, digit); + state->clues_done = snewn(4*w, unsigned char); state->pencil = snewn(a, int); for (i = 0; i < a; i++) { @@ -894,6 +891,7 @@ } memset(state->clues->immutable, 0, a); + memset(state->clues_done, 0, 4*w*sizeof(unsigned char)); for (i = 0; i < 4*w; i++) { if (i > 0) { @@ -947,8 +945,10 @@ ret->grid = snewn(a, digit); ret->pencil = snewn(a, int); + ret->clues_done = snewn(4*w, unsigned char); memcpy(ret->grid, state->grid, a*sizeof(digit)); memcpy(ret->pencil, state->pencil, a*sizeof(int)); + memcpy(ret->clues_done, state->clues_done, 4*w*sizeof(unsigned char)); ret->completed = state->completed; ret->cheated = state->cheated; @@ -960,6 +960,7 @@ { sfree(state->grid); sfree(state->pencil); + sfree(state->clues_done); if (--state->clues->refcount <= 0) { sfree(state->clues->immutable); sfree(state->clues->clues); @@ -1159,6 +1160,7 @@ #define FLASH_TIME 0.4F #define DF_PENCIL_SHIFT 16 +#define DF_CLUE_DONE 0x10000 #define DF_ERROR 0x8000 #define DF_HIGHLIGHT 0x4000 #define DF_HIGHLIGHT_PENCIL 0x2000 @@ -1246,7 +1248,8 @@ } } - if (n > clues[i] || (j == w && n < clues[i])) { + if (n > clues[i] || (best == w && n < clues[i]) || + (best < w && n == clues[i])) { if (errors) { int x, y; CLUEPOS(x, y, i, w); @@ -1259,11 +1262,38 @@ return errs; } +static int clue_index(const game_state *state, int x, int y) +{ + int w = state->par.w; + + if (x == -1 || x == w) + return w * (x == -1 ? 2 : 3) + y; + else if (y == -1 || y == w) + return (y == -1 ? 0 : w) + x; + + return -1; +} + +static int is_clue(const game_state *state, int x, int y) +{ + int w = state->par.w; + + if (((x == -1 || x == w) && y >= 0 && y < w) || + ((y == -1 || y == w) && x >= 0 && x < w)) + { + if (state->clues->clues[clue_index(state, x, y)] & DF_DIGIT_MASK) + return TRUE; + } + + return FALSE; +} + static char *interpret_move(const game_state *state, game_ui *ui, const game_drawstate *ds, int x, int y, int button) { int w = state->par.w; + int shift_or_control = button & (MOD_SHFT | MOD_CTRL); int tx, ty; char buf[80]; @@ -1341,8 +1371,27 @@ ui->hcursor = 0; return ""; /* UI activity occurred */ } + } else if (button == LEFT_BUTTON) { + if (is_clue(state, tx, ty)) { + sprintf(buf, "%c%d,%d", 'D', tx, ty); + return dupstr(buf); + } } if (IS_CURSOR_MOVE(button)) { + if (shift_or_control) { + int x = ui->hx, y = ui->hy; + switch (button) { + case CURSOR_LEFT: x = -1; break; + case CURSOR_RIGHT: x = w; break; + case CURSOR_UP: y = -1; break; + case CURSOR_DOWN: y = w; break; + } + if (is_clue(state, x, y)) { + sprintf(buf, "%c%d,%d", 'D', x, y); + return dupstr(buf); + } + return NULL; + } move_cursor(button, &ui->hx, &ui->hy, w, w, 0); ui->hshow = ui->hcursor = 1; return ""; @@ -1391,35 +1440,29 @@ static game_state *execute_move(const game_state *from, const char *move) { int w = from->par.w, a = w*w; - game_state *ret; + game_state *ret = dup_game(from); int x, y, i, n; if (move[0] == 'S') { - ret = dup_game(from); ret->completed = ret->cheated = TRUE; for (i = 0; i < a; i++) { - if (move[i+1] < '1' || move[i+1] > '0'+w) { - free_game(ret); - return NULL; - } + if (move[i+1] < '1' || move[i+1] > '0'+w) + goto badmove; ret->grid[i] = move[i+1] - '0'; ret->pencil[i] = 0; } - if (move[a+1] != '\0') { - free_game(ret); - return NULL; - } + if (move[a+1] != '\0') + goto badmove; return ret; } else if ((move[0] == 'P' || move[0] == 'R') && sscanf(move+1, "%d,%d,%d", &x, &y, &n) == 3 && x >= 0 && x < w && y >= 0 && y < w && n >= 0 && n <= w) { if (from->clues->immutable[y*w+x]) - return NULL; + goto badmove; - ret = dup_game(from); if (move[0] == 'P' && n > 0) { ret->pencil[y*w+x] ^= 1L << n; } else { @@ -1437,14 +1480,22 @@ * starting point when following through a set of * diagnostics output by the standalone solver.) */ - ret = dup_game(from); for (i = 0; i < a; i++) { if (!ret->grid[i]) ret->pencil[i] = (1L << (w+1)) - (1L << 1); } return ret; - } else - return NULL; /* couldn't parse move string */ + } else if (move[0] == 'D' && sscanf(move+1, "%d,%d", &x, &y) == 2 && + is_clue(from, x, y)) { + int index = clue_index(from, x, y); + ret->clues_done[index] = !ret->clues_done[index]; + return ret; + } + + badmove: + /* couldn't parse move string */ + free_game(ret); + return NULL; } /* ---------------------------------------------------------------------- @@ -1495,6 +1546,10 @@ ret[COL_PENCIL * 3 + 1] = 0.5F * ret[COL_BACKGROUND * 3 + 1]; ret[COL_PENCIL * 3 + 2] = ret[COL_BACKGROUND * 3 + 2]; + ret[COL_DONE * 3 + 0] = ret[COL_BACKGROUND * 3 + 0] / 1.5F; + ret[COL_DONE * 3 + 1] = ret[COL_BACKGROUND * 3 + 1] / 1.5F; + ret[COL_DONE * 3 + 2] = ret[COL_BACKGROUND * 3 + 2] / 1.5F; + *ncolours = NCOLOURS; return ret; } @@ -1601,14 +1656,25 @@ /* new number needs drawing? */ if (tile & DF_DIGIT_MASK) { + int color; + str[1] = '\0'; str[0] = (tile & DF_DIGIT_MASK) + '0'; + + if (tile & DF_ERROR) + color = COL_ERROR; + else if (tile & DF_CLUE_DONE) + color = COL_DONE; + else if (x < 0 || y < 0 || x >= w || y >= w) + color = COL_GRID; + else if (tile & DF_IMMUTABLE) + color = COL_GRID; + else + color = COL_USER; + draw_text(dr, tx + TILESIZE/2, ty + TILESIZE/2, FONT_VARIABLE, (tile & DF_PLAYAREA ? TILESIZE/2 : TILESIZE*2/5), - ALIGN_VCENTRE | ALIGN_HCENTRE, - (tile & DF_ERROR) ? COL_ERROR : - (x < 0 || y < 0 || x >= w || y >= w) ? COL_GRID : - (tile & DF_IMMUTABLE) ? COL_GRID : COL_USER, str); + ALIGN_VCENTRE | ALIGN_HCENTRE, color, str); } else { int i, j, npencil; int pl, pr, pt, pb; @@ -1731,6 +1797,8 @@ if (ds->errtmp[(y+1)*(w+2)+(x+1)]) tile |= DF_ERROR; + else if (state->clues_done[i]) + tile |= DF_CLUE_DONE; ds->tiles[(y+1)*(w+2)+(x+1)] = tile; } diff -Nru sgt-puzzles-20140928.r10274/towers.R sgt-puzzles-20160429.b31155b/towers.R --- sgt-puzzles-20140928.r10274/towers.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/towers.R 2016-04-29 00:30:09.000000000 +0000 @@ -21,5 +21,5 @@ !end !begin >gamedesc.txt -towers:towers.exe:Towers:Tower-placing Latin square puzzle +towers:towers.exe:Towers:Tower-placing Latin square puzzle:Complete the latin square of towers in accordance with the clues. !end diff -Nru sgt-puzzles-20140928.r10274/tracks.c sgt-puzzles-20160429.b31155b/tracks.c --- sgt-puzzles-20140928.r10274/tracks.c 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/tracks.c 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,2660 @@ +/* + * Implementation of 'Train Tracks', a puzzle from the Times on Saturday. + * + * "Lay tracks to enable the train to travel from village A to village B. + * The numbers indicate how many sections of rail go in each row and + * column. There are only straight rails and curved rails. The track + * cannot cross itself." + * + * Puzzles: + * #9 8x8:d9s5c6zgAa,1,4,1,4,4,3,S3,5,2,2,4,S5,3,3,5,1 + * #112 8x8:w6x5mAa,1,3,1,4,6,4,S4,3,3,4,5,2,4,2,S5,1 + * #113 8x8:gCx5xAf,1,S4,2,5,4,6,2,3,4,2,5,2,S4,4,5,1 + * #114 8x8:p5fAzkAb,1,6,3,3,3,S6,2,3,5,4,S3,3,5,1,5,1 + * #115 8x8:zi9d5tAb,1,3,4,5,3,S4,2,4,2,6,2,3,6,S3,3,1 + */ + +#include +#include +#include +#include +#include +#include + +#include "puzzles.h" + +/* --- Game parameters --- */ + +/* + * Difficulty levels. I do some macro ickery here to ensure that my + * enum and the various forms of my name list always match up. + */ +#define DIFFLIST(A) \ + A(EASY,Easy,e) \ + A(TRICKY,Tricky,t) + +#define ENUM(upper,title,lower) DIFF_ ## upper, +#define TITLE(upper,title,lower) #title, +#define ENCODE(upper,title,lower) #lower +#define CONFIG(upper,title,lower) ":" #title +enum { DIFFLIST(ENUM) DIFFCOUNT }; +static char const *const tracks_diffnames[] = { DIFFLIST(TITLE) }; +static char const tracks_diffchars[] = DIFFLIST(ENCODE); +#define DIFFCONFIG DIFFLIST(CONFIG) + +struct game_params { + int w, h, diff, single_ones; +}; + +static game_params *default_params(void) +{ + game_params *ret = snew(game_params); + + ret->w = ret->h = 8; + ret->diff = DIFF_TRICKY; + ret->single_ones = TRUE; + + return ret; +} + +static const struct game_params tracks_presets[] = { + {8, 8, DIFF_EASY, 1}, + {8, 8, DIFF_TRICKY, 1}, + {10, 8, DIFF_EASY, 1}, + {10, 8, DIFF_TRICKY, 1 }, + {10, 10, DIFF_EASY, 1}, + {10, 10, DIFF_TRICKY, 1}, + {15, 10, DIFF_EASY, 1}, + {15, 10, DIFF_TRICKY, 1}, + {15, 15, DIFF_EASY, 1}, + {15, 15, DIFF_TRICKY, 1}, +}; + +static int game_fetch_preset(int i, char **name, game_params **params) +{ + game_params *ret; + char str[80]; + + if (i < 0 || i >= lenof(tracks_presets)) + return FALSE; + + ret = snew(game_params); + *ret = tracks_presets[i]; + + sprintf(str, "%dx%d %s", ret->w, ret->h, tracks_diffnames[ret->diff]); + + *name = dupstr(str); + *params = ret; + return TRUE; +} + +static void free_params(game_params *params) +{ + sfree(params); +} + +static game_params *dup_params(const game_params *params) +{ + game_params *ret = snew(game_params); + *ret = *params; /* structure copy */ + return ret; +} + +static void decode_params(game_params *params, char const *string) +{ + params->w = params->h = atoi(string); + while (*string && isdigit((unsigned char)*string)) string++; + if (*string == 'x') { + string++; + params->h = atoi(string); + while (*string && isdigit((unsigned char)*string)) string++; + } + if (*string == 'd') { + int i; + string++; + params->diff = DIFF_TRICKY; + for (i = 0; i < DIFFCOUNT; i++) + if (*string == tracks_diffchars[i]) + params->diff = i; + if (*string) string++; + } + params->single_ones = TRUE; + if (*string == 'o') { + params->single_ones = FALSE; + string++; + } + +} + +static char *encode_params(const game_params *params, int full) +{ + char buf[120]; + + sprintf(buf, "%dx%d", params->w, params->h); + if (full) + sprintf(buf + strlen(buf), "d%c%s", + tracks_diffchars[params->diff], + params->single_ones ? "" : "o"); + return dupstr(buf); +} + +static config_item *game_configure(const game_params *params) +{ + config_item *ret; + char buf[80]; + + ret = snewn(5, config_item); + + ret[0].name = "Width"; + ret[0].type = C_STRING; + sprintf(buf, "%d", params->w); + ret[0].sval = dupstr(buf); + ret[0].ival = 0; + + ret[1].name = "Height"; + ret[1].type = C_STRING; + sprintf(buf, "%d", params->h); + ret[1].sval = dupstr(buf); + ret[1].ival = 0; + + ret[2].name = "Difficulty"; + ret[2].type = C_CHOICES; + ret[2].sval = DIFFCONFIG; + ret[2].ival = params->diff; + + ret[3].name = "Disallow consecutive 1 clues"; + ret[3].type = C_BOOLEAN; + ret[3].ival = params->single_ones; + + ret[4].name = NULL; + ret[4].type = C_END; + ret[4].sval = NULL; + ret[4].ival = 0; + + return ret; +} + +static game_params *custom_params(const config_item *cfg) +{ + game_params *ret = snew(game_params); + + ret->w = atoi(cfg[0].sval); + ret->h = atoi(cfg[1].sval); + ret->diff = cfg[2].ival; + ret->single_ones = cfg[3].ival; + + return ret; +} + +static char *validate_params(const game_params *params, int full) +{ + /* + * Generating anything under 4x4 runs into trouble of one kind + * or another. + */ + if (params->w < 4 || params->h < 4) + return "Width and height must both be at least four"; + return NULL; +} + +/* --- Game state --- */ + +/* flag usage copied from pearl */ + +#define R 1 +#define U 2 +#define L 4 +#define D 8 + +#define MOVECHAR(m) ((m==R)?'R':(m==U)?'U':(m==L)?'L':(m==D)?'D':'?') + +#define DX(d) ( ((d)==R) - ((d)==L) ) +#define DY(d) ( ((d)==D) - ((d)==U) ) + +#define F(d) (((d << 2) | (d >> 2)) & 0xF) +#define C(d) (((d << 3) | (d >> 1)) & 0xF) +#define A(d) (((d << 1) | (d >> 3)) & 0xF) + +#define LR (L | R) +#define RL (R | L) +#define UD (U | D) +#define DU (D | U) +#define LU (L | U) +#define UL (U | L) +#define LD (L | D) +#define DL (D | L) +#define RU (R | U) +#define UR (U | R) +#define RD (R | D) +#define DR (D | R) +#define ALLDIR 15 +#define BLANK 0 +#define UNKNOWN 15 + +int nbits[] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 }; + +/* square grid flags */ +#define S_TRACK 1 /* a track passes through this square (--> 2 edges) */ +#define S_NOTRACK 2 /* no track passes through this square */ +#define S_ERROR 4 +#define S_CLUE 8 +#define S_MARK 16 + +#define S_TRACK_SHIFT 16 /* U/D/L/R flags for edge track indicators */ +#define S_NOTRACK_SHIFT 20 /* U/D/L/R flags for edge no-track indicators */ + +/* edge grid flags */ +#define E_TRACK 1 /* a track passes through this edge */ +#define E_NOTRACK 2 /* no track passes through this edge */ + +struct numbers { + int refcount; + int *numbers; /* sz w+h */ + int row_s, col_s; /* stations: TODO think about multiple lines + (for bigger grids)? */ +}; + +#define INGRID(state, gx, gy) ((gx) >= 0 && (gx) < (state)->p.w && \ + (gy) >= 0 && (gy) < (state)->p.h) + +struct game_state { + game_params p; + unsigned int *sflags; /* size w*h */ + struct numbers *numbers; + int *num_errors; /* size w+h */ + int completed, used_solve, impossible; +}; + +/* Return the four directions in which a particular edge flag is set, around a square. */ +int S_E_DIRS(const game_state *state, int sx, int sy, unsigned int eflag) { + return (state->sflags[sy*state->p.w+sx] >> + ((eflag == E_TRACK) ? S_TRACK_SHIFT : S_NOTRACK_SHIFT)) & ALLDIR; +} + +/* Count the number of a particular edge flag around a grid square. */ +int S_E_COUNT(const game_state *state, int sx, int sy, unsigned int eflag) { + return nbits[S_E_DIRS(state, sx, sy, eflag)]; +} + +/* Return the two flags (E_TRACK and/or E_NOTRACK) set on a specific + * edge of a square. */ +unsigned S_E_FLAGS(const game_state *state, int sx, int sy, int d) { + unsigned f = state->sflags[sy*state->p.w+sx]; + int t = (f & (d << S_TRACK_SHIFT)), nt = (f & (d << S_NOTRACK_SHIFT)); + return (t ? E_TRACK : 0) | (nt ? E_NOTRACK : 0); +} + +int S_E_ADJ(const game_state *state, int sx, int sy, int d, int *ax, int *ay, unsigned int *ad) { + if (d == L && sx > 0) { *ax = sx-1; *ay = sy; *ad = R; return 1; } + if (d == R && sx < state->p.w-1) { *ax = sx+1; *ay = sy; *ad = L; return 1; } + if (d == U && sy > 0) { *ax = sx; *ay = sy-1; *ad = D; return 1; } + if (d == D && sy < state->p.h-1) { *ax = sx; *ay = sy+1; *ad = U; return 1; } + + return 0; +} + +/* Sets flag (E_TRACK or E_NOTRACK) on a given edge of a square. */ +void S_E_SET(game_state *state, int sx, int sy, int d, unsigned int eflag) { + unsigned shift = (eflag == E_TRACK) ? S_TRACK_SHIFT : S_NOTRACK_SHIFT, ad; + int ax, ay; + + state->sflags[sy*state->p.w+sx] |= (d << shift); + + if (S_E_ADJ(state, sx, sy, d, &ax, &ay, &ad)) { + state->sflags[ay*state->p.w+ax] |= (ad << shift); + } +} + +/* Clears flag (E_TRACK or E_NOTRACK) on a given edge of a square. */ +void S_E_CLEAR(game_state *state, int sx, int sy, int d, unsigned int eflag) { + unsigned shift = (eflag == E_TRACK) ? S_TRACK_SHIFT : S_NOTRACK_SHIFT, ad; + int ax, ay; + + state->sflags[sy*state->p.w+sx] &= ~(d << shift); + + if (S_E_ADJ(state, sx, sy, d, &ax, &ay, &ad)) { + state->sflags[ay*state->p.w+ax] &= ~(ad << shift); + } +} + +static void clear_game(game_state *state) +{ + int w = state->p.w, h = state->p.h; + + memset(state->sflags, 0, w*h * sizeof(unsigned int)); + + memset(state->numbers->numbers, 0, (w+h) * sizeof(int)); + state->numbers->col_s = state->numbers->row_s = -1; + + memset(state->num_errors, 0, (w+h) * sizeof(int)); + + state->completed = state->used_solve = state->impossible = FALSE; +} + +static game_state *blank_game(const game_params *params) +{ + game_state *state = snew(game_state); + int w = params->w, h = params->h; + + state->p = *params; + + state->sflags = snewn(w*h, unsigned int); + + state->numbers = snew(struct numbers); + state->numbers->refcount = 1; + state->numbers->numbers = snewn(w+h, int); + + state->num_errors = snewn(w+h, int); + + clear_game(state); + + return state; +} + +static void copy_game_flags(const game_state *src, game_state *dest) +{ + int w = src->p.w, h = src->p.h; + + memcpy(dest->sflags, src->sflags, w*h*sizeof(unsigned int)); +} + +static game_state *dup_game(const game_state *state) +{ + int w = state->p.w, h = state->p.h; + game_state *ret = snew(game_state); + + ret->p = state->p; /* structure copy */ + + ret->sflags = snewn(w*h, unsigned int); + copy_game_flags(state, ret); + + ret->numbers = state->numbers; + state->numbers->refcount++; + ret->num_errors = snewn(w+h, int); + memcpy(ret->num_errors, state->num_errors, (w+h)*sizeof(int)); + + ret->completed = state->completed; + ret->used_solve = state->used_solve; + ret->impossible = state->impossible; + + return ret; +} + +static void free_game(game_state *state) +{ + if (--state->numbers->refcount <= 0) { + sfree(state->numbers->numbers); + sfree(state->numbers); + } + sfree(state->num_errors); + sfree(state->sflags); + sfree(state); +} + +#define NDIRS 4 +const unsigned int dirs_const[] = { U, D, L, R }; + +static unsigned int find_direction(game_state *state, random_state *rs, + int x, int y) +{ + int i, nx, ny, w=state->p.w, h=state->p.h; + unsigned int dirs[NDIRS]; + + memcpy(dirs, dirs_const, sizeof(dirs)); + shuffle(dirs, NDIRS, sizeof(*dirs), rs); + for (i = 0; i < NDIRS; i++) { + nx = x + DX(dirs[i]); + ny = y + DY(dirs[i]); + if (nx >= 0 && nx < w && ny == h) { + /* off the bottom of the board: we've finished the path. */ + return dirs[i]; + } else if (!INGRID(state, nx, ny)) { + /* off the board: can't move here */ + continue; + } else if (S_E_COUNT(state, nx, ny, E_TRACK) > 0) { + /* already tracks here: can't move */ + continue; + } + return dirs[i]; + } + return 0; /* no possible directions left. */ +} + +static int check_completion(game_state *state, int mark); + +static void lay_path(game_state *state, random_state *rs) +{ + int px, py, w=state->p.w, h=state->p.h; + unsigned int d; + +start: + clear_game(state); + + /* pick a random entry point, lay its left edge */ + state->numbers->row_s = py = random_upto(rs, h); + px = 0; + S_E_SET(state, px, py, L, E_TRACK); + + while (INGRID(state, px, py)) { + d = find_direction(state, rs, px, py); + if (d == 0) + goto start; /* nowhere else to go, restart */ + + S_E_SET(state, px, py, d, E_TRACK); + px += DX(d); + py += DY(d); + } + /* double-check we got to the right place */ + assert(px >= 0 && px < w && py == h); + + state->numbers->col_s = px; +} + +static int tracks_solve(game_state *state, int diff); +static void debug_state(game_state *state, const char *what); + +/* Clue-setting algorithm: + + - first lay clues randomly until it's soluble + - then remove clues randomly if removing them doesn't affect solubility + + - We start with two clues, one at each path entrance. + + More details: + - start with an array of all square i positions + - if the grid is already soluble by a level easier than we've requested, + go back and make a new grid + - if the grid is already soluble by our requested difficulty level, skip + the clue-laying step + - count the number of flags the solver managed to place, remember this. + + - to lay clues: + - shuffle the i positions + - for each possible clue position: + - copy the solved board, strip it + - take the next position, add a clue there on the copy + - try and solve the copy + - if it's soluble by a level easier than we've requested, continue (on + to next clue position: putting a clue here makes it too easy) + - if it's soluble by our difficulty level, we're done: + - put the clue flag into the solved board + - go to strip-clues. + - if the solver didn't manage to place any more flags, continue (on to next + clue position: putting a clue here didn't help he solver) + - otherwise put the clue flag in the original board, and go on to the next + clue position + - if we get here and we've not solved it yet, we never will (did we really + fill _all_ the clues in?!). Go back and make a new grid. + + - to strip clues: + - shuffle the i positions + - for each possible clue position: + - if the solved grid doesn't have a clue here, skip + - copy the solved board, remove this clue, strip it + - try and solve the copy + - assert that it is not soluble by a level easier than we've requested + - (because this should never happen) + - if this is (still) soluble by our difficulty level: + - remove this clue from the solved board, it's redundant (with the other + clues) + + - that should be it. +*/ + +static game_state *copy_and_strip(const game_state *state, game_state *ret, int flipcluei) +{ + int i, j, w = state->p.w, h = state->p.h; + + copy_game_flags(state, ret); + + /* Add/remove a clue before stripping, if required */ + + if (flipcluei != -1) + ret->sflags[flipcluei] ^= S_CLUE; + + /* All squares that are not clue squares have square track info erased, and some edge flags.. */ + + for (i = 0; i < w*h; i++) { + if (!(ret->sflags[i] & S_CLUE)) { + ret->sflags[i] &= ~(S_TRACK|S_NOTRACK|S_ERROR|S_MARK); + for (j = 0; j < 4; j++) { + unsigned f = 1<sflags[yy*w+xx] & S_CLUE)) { + /* only erase an edge flag if neither side of the edge is S_CLUE. */ + S_E_CLEAR(ret, i%w, i/w, f, E_TRACK); + S_E_CLEAR(ret, i%w, i/w, f, E_NOTRACK); + } + } + } + } + return ret; +} + +static int solve_progress(const game_state *state) { + int i, w = state->p.w, h = state->p.h, progress = 0; + + /* Work out how many flags the solver managed to set (either TRACK + or NOTRACK) and return this as a progress measure, to check whether + a partially-solved board gets any further than a previous partially- + solved board. */ + + for (i = 0; i < w*h; i++) { + if (state->sflags[i] & S_TRACK) progress++; + if (state->sflags[i] & S_NOTRACK) progress++; + progress += S_E_COUNT(state, i%w, i/w, E_TRACK); + progress += S_E_COUNT(state, i%w, i/w, E_NOTRACK); + } + return progress; +} + +static int check_phantom_moves(const game_state *state) { + int x, y, i; + + /* Check that this state won't show 'phantom moves' at the start of the + * game: squares which have multiple edge flags set but no clue flag + * cause a piece of track to appear that isn't on a clue square. */ + + for (x = 0; x < state->p.w; x++) { + for (y = 0; y < state->p.h; y++) { + i = y*state->p.w+x; + if (state->sflags[i] & S_CLUE) + continue; + if (S_E_COUNT(state, x, y, E_TRACK) > 1) + return 1; /* found one! */ + } + } + return 0; +} + +static int add_clues(game_state *state, random_state *rs, int diff) +{ + int i, j, pi, w = state->p.w, h = state->p.h, progress, ret = 0, sr; + int *positions = snewn(w*h, int), npositions = 0; + int *nedges_previous_solve = snewn(w*h, int); + game_state *scratch = dup_game(state); + + debug_state(state, "gen: Initial board"); + + debug(("gen: Adding clues...")); + + /* set up the shuffly-position grid for later, used for adding clues: + * we only bother adding clues where any edges are set. */ + for (i = 0; i < w*h; i++) { + if (S_E_DIRS(state, i%w, i/w, E_TRACK) != 0) { + positions[npositions++] = i; + } + nedges_previous_solve[i] = 0; + } + + /* First, check whether the puzzle is already either too easy, or just right */ + scratch = copy_and_strip(state, scratch, -1); + if (diff > 0) { + sr = tracks_solve(scratch, diff-1); + if (sr < 0) + assert(!"Generator should not have created impossible puzzle"); + if (sr > 0) { + ret = -1; /* already too easy, even without adding clues. */ + debug(("gen: ...already too easy, need new board.")); + goto done; + } + } + sr = tracks_solve(scratch, diff); + if (sr < 0) + assert(!"Generator should not have created impossible puzzle"); + if (sr > 0) { + ret = 1; /* already soluble without any extra clues. */ + debug(("gen: ...soluble without clues, nothing to do.")); + goto done; + } + debug_state(scratch, "gen: Initial part-solved state: "); + progress = solve_progress(scratch); + debug(("gen: Initial solve progress is %d", progress)); + + /* First, lay clues until we're soluble. */ + shuffle(positions, npositions, sizeof(int), rs); + for (pi = 0; pi < npositions; pi++) { + i = positions[pi]; /* pick a random position */ + if (state->sflags[i] & S_CLUE) + continue; /* already a clue here (entrance location?) */ + if (nedges_previous_solve[i] == 2) + continue; /* no point putting a clue here, we could solve both edges + with the previous set of clues */ + + /* set a clue in that position (on a copy of the board) and test solubility */ + scratch = copy_and_strip(state, scratch, i); + + if (check_phantom_moves(scratch)) + continue; /* adding a clue here would add phantom track */ + + if (diff > 0) { + if (tracks_solve(scratch, diff-1) > 0) { + continue; /* adding a clue here makes it too easy */ + } + } + if (tracks_solve(scratch, diff) > 0) { + /* we're now soluble (and we weren't before): add this clue, and then + start stripping clues */ + debug(("gen: ...adding clue at (%d,%d), now soluble", i%w, i/w)); + state->sflags[i] |= S_CLUE; + goto strip_clues; + } + if (solve_progress(scratch) > progress) { + /* We've made more progress solving: add this clue, then. */ + progress = solve_progress(scratch); + debug(("gen: ... adding clue at (%d,%d), new progress %d", i%w, i/w, progress)); + state->sflags[i] |= S_CLUE; + + for (j = 0; j < w*h; j++) + nedges_previous_solve[j] = S_E_COUNT(scratch, j%w, j/w, E_TRACK); + } + } + /* If we got here we didn't ever manage to make the puzzle soluble + (without making it too easily soluble, that is): give up. */ + + debug(("gen: Unable to make soluble with clues, need new board.")); + ret = -1; + goto done; + +strip_clues: + debug(("gen: Stripping clues.")); + + /* Now, strip redundant clues (i.e. those without which the puzzle is still + soluble) */ + shuffle(positions, npositions, sizeof(int), rs); + for (pi = 0; pi < npositions; pi++) { + i = positions[pi]; /* pick a random position */ + if (!(state->sflags[i] & S_CLUE)) + continue; /* no clue here to strip */ + if ((i%w == 0 && i/w == state->numbers->row_s) || + (i/w == (h-1) && i%w == state->numbers->col_s)) + continue; /* don't strip clues at entrance/exit */ + + scratch = copy_and_strip(state, scratch, i); + if (check_phantom_moves(scratch)) + continue; /* removing a clue here would add phantom track */ + + if (tracks_solve(scratch, diff) > 0) { + debug(("gen: ... removing clue at (%d,%d), still soluble without it", i%w, i/w)); + state->sflags[i] &= ~S_CLUE; /* still soluble without this clue. */ + } + } + debug(("gen: Finished stripping clues.")); + ret = 1; + +done: + sfree(positions); + free_game(scratch); + return ret; +} + +static char *new_game_desc(const game_params *params, random_state *rs, + char **aux, int interactive) +{ + int i, j, w = params->w, h = params->h, x, y, ret; + game_state *state; + char *desc, *p; + game_params adjusted_params; + + /* + * 4x4 Tricky cannot be generated, so fall back to Easy. + */ + if (w == 4 && h == 4 && params->diff > DIFF_EASY) { + adjusted_params = *params; /* structure copy */ + adjusted_params.diff = DIFF_EASY; + params = &adjusted_params; + } + + state = blank_game(params); + + /* --- lay the random path */ + +newpath: + lay_path(state, rs); + for (x = 0; x < w; x++) { + for (y = 0; y < h; y++) { + if (S_E_COUNT(state, x, y, E_TRACK) > 0) { + state->sflags[y*w + x] |= S_TRACK; + } + if ((x == 0 && y == state->numbers->row_s) || + (y == (h-1) && x == state->numbers->col_s)) { + state->sflags[y*w + x] |= S_CLUE; + } + } + } + + /* --- Update the clue numbers based on the tracks we have generated. */ + for (x = 0; x < w; x++) { + for (y = 0; y < h; y++) { + if (state->sflags[y*w + x] & S_TRACK) { + state->numbers->numbers[x]++; + state->numbers->numbers[y+w]++; + } + } + } + for (i = 0; i < w+h; i++) { + if (state->numbers->numbers[i] == 0) + goto newpath; /* too boring */ + } + + if (params->single_ones) { + int last_was_one = 1, is_one; /* (disallow 1 clue at entry point) */ + for (i = 0; i < w+h; i++) { + is_one = (state->numbers->numbers[i] == 1); + if (is_one && last_was_one) + goto newpath; /* disallow consecutive 1 clues. */ + last_was_one = is_one; + } + if (state->numbers->numbers[w+h-1] == 1) + goto newpath; /* (disallow 1 clue at exit point) */ + } + + /* --- Add clues to make a soluble puzzle */ + ret = add_clues(state, rs, params->diff); + if (ret != 1) goto newpath; /* couldn't make it soluble, or too easy */ + + /* --- Generate the game desc based on the generated grid. */ + desc = snewn(w*h*3 + (w+h)*5, char); + for (i = j = 0; i < w*h; i++) { + if (!(state->sflags[i] & S_CLUE) && j > 0 && + desc[j-1] >= 'a' && desc[j-1] < 'z') + desc[j-1]++; + else if (!(state->sflags[i] & S_CLUE)) + desc[j++] = 'a'; + else { + unsigned int f = S_E_DIRS(state, i%w, i/w, E_TRACK); + desc[j++] = (f < 10) ? ('0' + f) : ('A' + (f-10)); + } + } + + p = desc + j; + for (x = 0; x < w; x++) { + p += sprintf(p, ",%s%d", x == state->numbers->col_s ? "S" : "", + state->numbers->numbers[x]); + } + for (y = 0; y < h; y++) { + p += sprintf(p, ",%s%d", y == state->numbers->row_s ? "S" : "", + state->numbers->numbers[y+w]); + } + *p++ = '\0'; + + ret = tracks_solve(state, DIFFCOUNT); + assert(ret >= 0); + free_game(state); + + debug(("new_game_desc: %s", desc)); + return desc; +} + +static char *validate_desc(const game_params *params, const char *desc) +{ + int i = 0, w = params->w, h = params->h, in = 0, out = 0; + + while (*desc) { + unsigned int f = 0; + if (*desc >= '0' && *desc <= '9') + f = (*desc - '0'); + else if (*desc >= 'A' && *desc <= 'F') + f = (*desc - 'A' + 10); + else if (*desc >= 'a' && *desc <= 'z') + i += *desc - 'a'; + else + return "Game description contained unexpected characters"; + + if (f != 0) { + if (nbits[f] != 2) + return "Clue did not provide 2 direction flags"; + } + i++; + desc++; + if (i == w*h) break; + } + for (i = 0; i < w+h; i++) { + if (!*desc) + return "Not enough numbers given after grid specification"; + else if (*desc != ',') + return "Invalid character in number list"; + desc++; + if (*desc == 'S') { + if (i < w) + out++; + else + in++; + desc++; + } + while (*desc && isdigit((unsigned char)*desc)) desc++; + } + if (in != 1 || out != 1) + return "Puzzle must have one entrance and one exit"; + if (*desc) + return "Unexpected additional character at end of game description"; + return NULL; +} + +static game_state *new_game(midend *me, const game_params *params, const char *desc) +{ + game_state *state = blank_game(params); + int w = params->w, h = params->h, i = 0; + + while (*desc) { + unsigned int f = 0; + if (*desc >= '0' && *desc <= '9') + f = (*desc - '0'); + else if (*desc >= 'A' && *desc <= 'F') + f = (*desc - 'A' + 10); + else if (*desc >= 'a' && *desc <= 'z') + i += *desc - 'a'; + + if (f != 0) { + int x = i % w, y = i / w; + assert(f < 16); + assert(nbits[f] == 2); + + state->sflags[i] |= (S_TRACK | S_CLUE); + if (f & U) S_E_SET(state, x, y, U, E_TRACK); + if (f & D) S_E_SET(state, x, y, D, E_TRACK); + if (f & L) S_E_SET(state, x, y, L, E_TRACK); + if (f & R) S_E_SET(state, x, y, R, E_TRACK); + } + i++; + desc++; + if (i == w*h) break; + } + for (i = 0; i < w+h; i++) { + assert(*desc == ','); + desc++; + + if (*desc == 'S') { + if (i < w) + state->numbers->col_s = i; + else + state->numbers->row_s = i-w; + desc++; + } + state->numbers->numbers[i] = atoi(desc); + while (*desc && isdigit((unsigned char)*desc)) desc++; + } + + assert(!*desc); + + return state; +} + +static int solve_set_sflag(game_state *state, int x, int y, + unsigned int f, const char *why) +{ + int w = state->p.w, i = y*w + x; + + if (state->sflags[i] & f) + return 0; + debug(("solve: square (%d,%d) -> %s: %s", + x, y, (f == S_TRACK ? "TRACK" : "NOTRACK"), why)); + if (state->sflags[i] & (f == S_TRACK ? S_NOTRACK : S_TRACK)) { + debug(("solve: opposite flag already set there, marking IMPOSSIBLE")); + state->impossible = TRUE; + } + state->sflags[i] |= f; + return 1; +} + +static int solve_set_eflag(game_state *state, int x, int y, int d, + unsigned int f, const char *why) +{ + int sf = S_E_FLAGS(state, x, y, d); + + if (sf & f) + return 0; + debug(("solve: edge (%d,%d)/%c -> %s: %s", x, y, + (d == U) ? 'U' : (d == D) ? 'D' : (d == L) ? 'L' : 'R', + (f == S_TRACK ? "TRACK" : "NOTRACK"), why)); + if (sf & (f == E_TRACK ? E_NOTRACK : E_TRACK)) { + debug(("solve: opposite flag already set there, marking IMPOSSIBLE")); + state->impossible = TRUE; + } + S_E_SET(state, x, y, d, f); + return 1; +} + +static int solve_update_flags(game_state *state) +{ + int x, y, i, w = state->p.w, h = state->p.h, did = 0; + + for (x = 0; x < w; x++) { + for (y = 0; y < h; y++) { + /* If a square is NOTRACK, all four edges must be. */ + if (state->sflags[y*w + x] & S_NOTRACK) { + for (i = 0; i < 4; i++) { + unsigned int d = 1<= 3) { + did += solve_set_sflag(state, x, y, S_NOTRACK, "square has >2 NOTRACK edges"); + } + + /* If any edge around a square is TRACK, the square is. */ + if (S_E_COUNT(state, x, y, E_TRACK) > 0) { + did += solve_set_sflag(state, x, y, S_TRACK, "square has TRACK edge"); + } + + /* If a square is TRACK and 2 edges are NOTRACK, + the other two edges must be TRACK. */ + if ((state->sflags[y*w + x] & S_TRACK) && + (S_E_COUNT(state, x, y, E_NOTRACK) == 2) && + (S_E_COUNT(state, x, y, E_TRACK) < 2)) { + for (i = 0; i < 4; i++) { + unsigned int d = 1<sflags[y*w + x] & S_TRACK) && + (S_E_COUNT(state, x, y, E_TRACK) == 2) && + (S_E_COUNT(state, x, y, E_NOTRACK) < 2)) { + for (i = 0; i < 4; i++) { + unsigned int d = 1<p.h, w = state->p.w; + for (n = 0, i = col; n < h; n++, i += w) { + if (state->sflags[i] & f) c++; + } + return c; +} + +static int solve_count_row(game_state *state, int row, unsigned int f) +{ + int i, n, c = 0, w = state->p.w; + for (n = 0, i = w*row; n < state->p.w; n++, i++) { + if (state->sflags[i] & f) c++; + } + return c; +} + +static int solve_count_clues_sub(game_state *state, int si, int id, int n, + int target, const char *what) +{ + int ctrack = 0, cnotrack = 0, did = 0, j, i, w = state->p.w; + + for (j = 0, i = si; j < n; j++, i += id) { + if (state->sflags[i] & S_TRACK) + ctrack++; + if (state->sflags[i] & S_NOTRACK) + cnotrack++; + } + if (ctrack == target) { + /* everything that's not S_TRACK must be S_NOTRACK. */ + for (j = 0, i = si; j < n; j++, i += id) { + if (!(state->sflags[i] & S_TRACK)) + did += solve_set_sflag(state, i%w, i/w, S_NOTRACK, what); + } + } + if (cnotrack == (n-target)) { + /* everything that's not S_NOTRACK must be S_TRACK. */ + for (j = 0, i = si; j < n; j++, i += id) { + if (!(state->sflags[i] & S_NOTRACK)) + did += solve_set_sflag(state, i%w, i/w, S_TRACK, what); + } + } + return did; +} + +static int solve_count_clues(game_state *state) +{ + int w = state->p.w, h = state->p.h, x, y, target, did = 0; + + for (x = 0; x < w; x++) { + target = state->numbers->numbers[x]; + did += solve_count_clues_sub(state, x, w, h, target, "col count"); + } + for (y = 0; y < h; y++) { + target = state->numbers->numbers[w+y]; + did += solve_count_clues_sub(state, y*w, 1, w, target, "row count"); + } + return did; +} + +static int solve_check_single_sub(game_state *state, int si, int id, int n, + int target, unsigned int perpf, + const char *what) +{ + int ctrack = 0, nperp = 0, did = 0, j, i, w = state->p.w; + int n1edge = 0, i1edge = 0, ox, oy, x, y; + unsigned int impossible = 0; + + /* For rows or columns which only have one more square to put a track in, we + know the only way a new track section could be there would be to run + perpendicular to the track (otherwise we'd need at least two free squares). + So, if there is nowhere we can run perpendicular to the track (e.g. because + we're on an edge) we know the extra track section much be on one end of an + existing section. */ + + for (j = 0, i = si; j < n; j++, i += id) { + if (state->sflags[i] & S_TRACK) + ctrack++; + impossible = S_E_DIRS(state, i%w, i/w, E_NOTRACK); + if ((perpf & impossible) == 0) + nperp++; + if (S_E_COUNT(state, i%w, i/w, E_TRACK) <= 1) { + n1edge++; + i1edge = i; + } + } + if (ctrack != (target-1)) return 0; + if (nperp > 0 || n1edge != 1) return 0; + + debug(("check_single from (%d,%d): 1 match from (%d,%d)", + si%w, si/w, i1edge%w, i1edge/w)); + + /* We have a match: anything that's more than 1 away from this square + cannot now contain a track. */ + ox = i1edge%w; + oy = i1edge/w; + for (j = 0, i = si; j < n; j++, i += id) { + x = i%w; + y = i/w; + if (abs(ox-x) > 1 || abs(oy-y) > 1) { + if (!state->sflags[i] & S_TRACK) + did += solve_set_sflag(state, x, y, S_NOTRACK, what); + } + } + + return did; +} + +static int solve_check_single(game_state *state) +{ + int w = state->p.w, h = state->p.h, x, y, target, did = 0; + + for (x = 0; x < w; x++) { + target = state->numbers->numbers[x]; + did += solve_check_single_sub(state, x, w, h, target, R|L, "single on col"); + } + for (y = 0; y < h; y++) { + target = state->numbers->numbers[w+y]; + did += solve_check_single_sub(state, y*w, 1, w, target, U|D, "single on row"); + } + return did; +} + +static int solve_check_loose_sub(game_state *state, int si, int id, int n, + int target, unsigned int perpf, + const char *what) +{ + int nperp = 0, nloose = 0, e2count = 0, did = 0, i, j, k; + int w = state->p.w; + unsigned int parf = ALLDIR & (~perpf); + + for (j = 0, i = si; j < n; j++, i += id) { + int fcount = S_E_COUNT(state, i%w, i/w, E_TRACK); + if (fcount == 2) + e2count++; /* this cell has 2 definite edges */ + state->sflags[i] &= ~S_MARK; + if (fcount == 1 && (parf & S_E_DIRS(state, i%w, i/w, E_TRACK))) { + nloose++; /* this cell has a loose end (single flag set parallel + to the direction of this row/column) */ + state->sflags[i] |= S_MARK; /* mark loose ends */ + } + if (fcount != 2 && !(perpf & S_E_DIRS(state, i%w, i/w, E_NOTRACK))) + nperp++; /* we could lay perpendicular across this cell */ + } + + if (nloose > (target - e2count)) { + debug(("check %s from (%d,%d): more loose (%d) than empty (%d), IMPOSSIBLE", + what, si%w, si/w, nloose, target-e2count)); + state->impossible = TRUE; + } + if (nloose > 0 && nloose == (target - e2count)) { + debug(("check %s from (%d,%d): nloose = empty (%d), forcing loners out.", + what, si%w, si/w, nloose)); + for (j = 0, i = si; j < n; j++, i += id) { + if (!(state->sflags[i] & S_MARK)) + continue; /* skip non-loose ends */ + if (j > 0 && state->sflags[i-id] & S_MARK) + continue; /* next to other loose end, could join up */ + if (j < (n-1) && state->sflags[i+id] & S_MARK) + continue; /* ditto */ + + for (k = 0; k < 4; k++) { + if ((parf & (1<sflags[i] & S_MARK)) + continue; /* skip non-loose ends */ + for (k = 0; k < 4; k++) { + if (parf & (1<p.w, h = state->p.h, x, y, target, did = 0; + + for (x = 0; x < w; x++) { + target = state->numbers->numbers[x]; + did += solve_check_loose_sub(state, x, w, h, target, R|L, "loose on col"); + } + for (y = 0; y < h; y++) { + target = state->numbers->numbers[w+y]; + did += solve_check_loose_sub(state, y*w, 1, w, target, U|D, "loose on row"); + } + return did; +} + +static int solve_check_loop_sub(game_state *state, int x, int y, int dir, + int *dsf, int startc, int endc) +{ + int w = state->p.w, h = state->p.h, i = y*w+x, j, k, satisfied = 1; + + j = (y+DY(dir))*w + (x+DX(dir)); + + assert(i < w*h && j < w*h); + + if ((state->sflags[i] & S_TRACK) && + (state->sflags[j] & S_TRACK) && + !(S_E_DIRS(state, x, y, E_TRACK) & dir) && + !(S_E_DIRS(state, x, y, E_NOTRACK) & dir)) { + int ic = dsf_canonify(dsf, i), jc = dsf_canonify(dsf, j); + if (ic == jc) { + return solve_set_eflag(state, x, y, dir, E_NOTRACK, "would close loop"); + } + if ((ic == startc && jc == endc) || (ic == endc && jc == startc)) { + debug(("Adding link at (%d,%d) would join start to end", x, y)); + /* We mustn't join the start to the end if: + - there are other bits of track that aren't attached to either end + - the clues are not fully satisfied yet + */ + for (k = 0; k < w*h; k++) { + if (state->sflags[k] & S_TRACK && + dsf_canonify(dsf, k) != startc && dsf_canonify(dsf, k) != endc) { + return solve_set_eflag(state, x, y, dir, E_NOTRACK, + "joins start to end but misses tracks"); + } + } + for (k = 0; k < w; k++) { + int target = state->numbers->numbers[k]; + int ntracks = solve_count_col(state, k, S_TRACK); + if (ntracks < target) satisfied = 0; + } + for (k = 0; k < h; k++) { + int target = state->numbers->numbers[w+k]; + int ntracks = solve_count_row(state, k, S_TRACK); + if (ntracks < target) satisfied = 0; + } + if (!satisfied) { + return solve_set_eflag(state, x, y, dir, E_NOTRACK, + "joins start to end with incomplete clues"); + } + } + } + return 0; +} + +static int solve_check_loop(game_state *state) +{ + int w = state->p.w, h = state->p.h, x, y, i, j, did = 0; + int *dsf, startc, endc; + + /* TODO eventually we should pull this out into a solver struct and keep it + updated as we connect squares. For now we recreate it every time we try + this particular solver step. */ + dsf = snewn(w*h, int); + dsf_init(dsf, w*h); + + /* Work out the connectedness of the current loop set. */ + for (x = 0; x < w; x++) { + for (y = 0; y < h; y++) { + i = y*w + x; + if (x < (w-1) && S_E_DIRS(state, x, y, E_TRACK) & R) { + /* connection to the right... */ + j = y*w + (x+1); + assert(i < w*h && j < w*h); + dsf_merge(dsf, i, j); + } + if (y < (h-1) && S_E_DIRS(state, x, y, E_TRACK) & D) { + /* connection down... */ + j = (y+1)*w + x; + assert(i < w*h && j < w*h); + dsf_merge(dsf, i, j); + } + /* NB no need to check up and left because they'll have been checked + by the other side. */ + } + } + + startc = dsf_canonify(dsf, state->numbers->row_s*w); + endc = dsf_canonify(dsf, (h-1)*w+state->numbers->col_s); + + /* Now look at all adjacent squares that are both S_TRACK: if connecting + any of them would complete a loop (i.e. they're both the same dsf class + already) then that edge must be NOTRACK. */ + for (x = 0; x < w; x++) { + for (y = 0; y < h; y++) { + if (x < (w-1)) + did += solve_check_loop_sub(state, x, y, R, dsf, startc, endc); + if (y < (h-1)) + did += solve_check_loop_sub(state, x, y, D, dsf, startc, endc); + } + } + + sfree(dsf); + + return did; +} + +static void solve_discount_edge(game_state *state, int x, int y, int d) +{ + if (S_E_DIRS(state, x, y, E_TRACK) & d) { + assert(state->sflags[y*state->p.w + x] & S_CLUE); + return; /* (only) clue squares can have outer edges set. */ + } + solve_set_eflag(state, x, y, d, E_NOTRACK, "outer edge"); +} + +static int tracks_solve(game_state *state, int diff) +{ + int didsth, x, y, w = state->p.w, h = state->p.h; + + debug(("solve...")); + state->impossible = FALSE; + + /* Set all the outer border edges as no-track. */ + for (x = 0; x < w; x++) { + solve_discount_edge(state, x, 0, U); + solve_discount_edge(state, x, h-1, D); + } + for (y = 0; y < h; y++) { + solve_discount_edge(state, 0, y, L); + solve_discount_edge(state, w-1, y, R); + } + + while (1) { + didsth = 0; + + didsth += solve_update_flags(state); + didsth += solve_count_clues(state); + didsth += solve_check_loop(state); + + if (diff >= DIFF_TRICKY) { + didsth += solve_check_single(state); + didsth += solve_check_loose_ends(state); + } + + if (!didsth || state->impossible) break; + } + + return state->impossible ? -1 : check_completion(state, FALSE) ? 1 : 0; +} + +static char *move_string_diff(const game_state *before, const game_state *after, int issolve) +{ + int w = after->p.w, h = after->p.h, i, j; + char *move = snewn(w*h*40, char), *p = move; + const char *sep = ""; + unsigned int otf, ntf, onf, nnf; + + if (issolve) { + *p++ = 'S'; + sep = ";"; + } + for (i = 0; i < w*h; i++) { + otf = S_E_DIRS(before, i%w, i/w, E_TRACK); + ntf = S_E_DIRS(after, i%w, i/w, E_TRACK); + onf = S_E_DIRS(before, i%w, i/w, E_NOTRACK); + nnf = S_E_DIRS(after, i%w, i/w, E_NOTRACK); + + for (j = 0; j < 4; j++) { + unsigned df = 1<sflags[i] & S_NOTRACK) != (after->sflags[i] & S_NOTRACK)) { + p += sprintf(p, "%s%cS%d,%d", sep, + (after->sflags[i] & S_NOTRACK) ? 'N' : 'n', i%w, i/w); + sep = ";"; + } + if ((before->sflags[i] & S_TRACK) != (after->sflags[i] & S_TRACK)) { + p += sprintf(p, "%s%cS%d,%d", sep, + (after->sflags[i] & S_TRACK) ? 'T' : 't', i%w, i/w); + sep = ";"; + } + } + *p++ = '\0'; + move = sresize(move, p - move, char); + + return move; +} + +static char *solve_game(const game_state *state, const game_state *currstate, + const char *aux, char **error) +{ + game_state *solved; + int ret; + char *move; + + solved = dup_game(currstate); + ret = tracks_solve(solved, DIFFCOUNT); + if (ret < 1) { + free_game(solved); + solved = dup_game(state); + ret = tracks_solve(solved, DIFFCOUNT); + } + + if (ret < 1) { + *error = "Unable to find solution"; + move = NULL; + } else { + move = move_string_diff(currstate, solved, TRUE); + } + + free_game(solved); + return move; +} + +static int game_can_format_as_text_now(const game_params *params) +{ + return TRUE; +} + +static char *game_text_format(const game_state *state) +{ + char *ret, *p; + int x, y, len, w = state->p.w, h = state->p.h; + + len = ((w*2) + 4) * ((h*2)+4) + 2; + ret = snewn(len+1, char); + p = ret; + + /* top line: column clues */ + *p++ = ' '; + *p++ = ' '; + for (x = 0; x < w; x++) { + *p++ = (state->numbers->numbers[x] < 10 ? + '0' + state->numbers->numbers[x] : + 'A' + state->numbers->numbers[x] - 10); + *p++ = ' '; + } + *p++ = '\n'; + + /* second line: top edge */ + *p++ = ' '; + *p++ = '+'; + for (x = 0; x < w*2-1; x++) + *p++ = '-'; + *p++ = '+'; + *p++ = '\n'; + + /* grid rows: one line of squares, one line of edges. */ + for (y = 0; y < h; y++) { + /* grid square line */ + *p++ = (y == state->numbers->row_s) ? 'A' : ' '; + *p++ = (y == state->numbers->row_s) ? '-' : '|'; + + for (x = 0; x < w; x++) { + unsigned int f = S_E_DIRS(state, x, y, E_TRACK); + if (state->sflags[y*w+x] & S_CLUE) *p++ = 'C'; + else if (f == LU || f == RD) *p++ = '/'; + else if (f == LD || f == RU) *p++ = '\\'; + else if (f == UD) *p++ = '|'; + else if (f == RL) *p++ = '-'; + else if (state->sflags[y*w+x] & S_NOTRACK) *p++ = 'x'; + else *p++ = ' '; + + if (x < w-1) { + *p++ = (f & R) ? '-' : ' '; + } else + *p++ = '|'; + } + *p++ = (state->numbers->numbers[w+y] < 10 ? + '0' + state->numbers->numbers[w+y] : + 'A' + state->numbers->numbers[w+y] - 10); + *p++ = '\n'; + + if (y == h-1) continue; + + /* edges line */ + *p++ = ' '; + *p++ = '|'; + for (x = 0; x < w; x++) { + unsigned int f = S_E_DIRS(state, x, y, E_TRACK); + *p++ = (f & D) ? '|' : ' '; + *p++ = (x < w-1) ? ' ' : '|'; + } + *p++ = '\n'; + } + + /* next line: bottom edge */ + *p++ = ' '; + *p++ = '+'; + for (x = 0; x < w*2-1; x++) + *p++ = (x == state->numbers->col_s*2) ? '|' : '-'; + *p++ = '+'; + *p++ = '\n'; + + /* final line: bottom clue */ + *p++ = ' '; + *p++ = ' '; + for (x = 0; x < w*2-1; x++) + *p++ = (x == state->numbers->col_s*2) ? 'B' : ' '; + *p++ = '\n'; + + *p = '\0'; + return ret; +} + +static void debug_state(game_state *state, const char *what) { + char *sstring = game_text_format(state); + debug(("%s: %s", what, sstring)); + sfree(sstring); +} + +static void dsf_update_completion(game_state *state, int ax, int ay, + char dir, int *dsf) +{ + int w = state->p.w, ai = ay*w+ax, bx, by, bi; + + if (!(S_E_DIRS(state, ax, ay, E_TRACK) & dir)) return; + bx = ax + DX(dir); + by = ay + DY(dir); + + if (!INGRID(state, bx, by)) return; + bi = by*w+bx; + + dsf_merge(dsf, ai, bi); +} + +struct tracks_neighbour_ctx { + game_state *state; + int i, n, neighbours[4]; +}; +static int tracks_neighbour(int vertex, void *vctx) +{ + struct tracks_neighbour_ctx *ctx = (struct tracks_neighbour_ctx *)vctx; + if (vertex >= 0) { + game_state *state = ctx->state; + int w = state->p.w, x = vertex % w, y = vertex / w; + int dirs = S_E_DIRS(state, x, y, E_TRACK); + int j; + + ctx->i = ctx->n = 0; + + for (j = 0; j < 4; j++) { + int dir = 1<neighbours[ctx->n++] = ny * w + nx; + } + } + } + + if (ctx->i < ctx->n) + return ctx->neighbours[ctx->i++]; + else + return -1; +} + +static int check_completion(game_state *state, int mark) +{ + int w = state->p.w, h = state->p.h, x, y, i, target, ret = TRUE; + int ntrack, nnotrack, ntrackcomplete; + int *dsf, pathclass; + struct findloopstate *fls; + struct tracks_neighbour_ctx ctx; + + if (mark) { + for (i = 0; i < w+h; i++) { + state->num_errors[i] = 0; + } + for (i = 0; i < w*h; i++) { + state->sflags[i] &= ~S_ERROR; + if (S_E_COUNT(state, i%w, i/w, E_TRACK) > 0) { + if (S_E_COUNT(state, i%w, i/w, E_TRACK) > 2) { + ret = FALSE; + state->sflags[i] |= S_ERROR; + } + } + } + } + + /* A cell is 'complete', for the purposes of marking the game as + * finished, if it has two edges marked as TRACK. But it only has + * to have one edge marked as TRACK, or be filled in as trackful + * without any specific edges known, to count towards checking + * row/column clue errors. */ + for (x = 0; x < w; x++) { + target = state->numbers->numbers[x]; + ntrack = nnotrack = ntrackcomplete = 0; + for (y = 0; y < h; y++) { + if (S_E_COUNT(state, x, y, E_TRACK) > 0 || + state->sflags[y*w+x] & S_TRACK) + ntrack++; + if (S_E_COUNT(state, x, y, E_TRACK) == 2) + ntrackcomplete++; + if (state->sflags[y*w+x] & S_NOTRACK) + nnotrack++; + } + if (mark) { + if (ntrack > target || nnotrack > (h-target)) { + debug(("col %d error: target %d, track %d, notrack %d", + x, target, ntrack, nnotrack)); + state->num_errors[x] = 1; + ret = FALSE; + } + } + if (ntrackcomplete != target) + ret = FALSE; + } + for (y = 0; y < h; y++) { + target = state->numbers->numbers[w+y]; + ntrack = nnotrack = ntrackcomplete = 0; + for (x = 0; x < w; x++) { + if (S_E_COUNT(state, x, y, E_TRACK) > 0 || + state->sflags[y*w+x] & S_TRACK) + ntrack++; + if (S_E_COUNT(state, x, y, E_TRACK) == 2) + ntrackcomplete++; + if (state->sflags[y*w+x] & S_NOTRACK) + nnotrack++; + } + if (mark) { + if (ntrack > target || nnotrack > (w-target)) { + debug(("row %d error: target %d, track %d, notrack %d", + y, target, ntrack, nnotrack)); + state->num_errors[w+y] = 1; + ret = FALSE; + } + } + if (ntrackcomplete != target) + ret = FALSE; + } + + dsf = snewn(w*h, int); + dsf_init(dsf, w*h); + + for (x = 0; x < w; x++) { + for (y = 0; y < h; y++) { + dsf_update_completion(state, x, y, R, dsf); + dsf_update_completion(state, x, y, D, dsf); + } + } + + fls = findloop_new_state(w*h); + ctx.state = state; + if (findloop_run(fls, w*h, tracks_neighbour, &ctx)) { + debug(("loop detected, not complete")); + ret = FALSE; /* no loop allowed */ + if (mark) { + for (x = 0; x < w; x++) { + for (y = 0; y < h; y++) { + int u, v; + + u = y*w + x; + for (v = tracks_neighbour(u, &ctx); v >= 0; + v = tracks_neighbour(-1, &ctx)) + if (findloop_is_loop_edge(fls, u, v)) + state->sflags[y*w+x] |= S_ERROR; + } + } + } + } + findloop_free_state(fls); + + if (mark) { + pathclass = dsf_canonify(dsf, state->numbers->row_s*w); + if (pathclass == dsf_canonify(dsf, (h-1)*w + state->numbers->col_s)) { + /* We have a continuous path between the entrance and the exit: any + other path must be in error. */ + for (i = 0; i < w*h; i++) { + if ((dsf_canonify(dsf, i) != pathclass) && + ((state->sflags[i] & S_TRACK) || + (S_E_COUNT(state, i%w, i/w, E_TRACK) > 0))) { + ret = FALSE; + state->sflags[i] |= S_ERROR; + } + } + } else { + /* If we _don't_ have such a path, then certainly the game + * can't be in a winning state. So even if we're not + * highlighting any _errors_, we certainly shouldn't + * return true. */ + ret = FALSE; + } + } + + if (mark) + state->completed = ret; + sfree(dsf); + return ret; +} + +/* Code borrowed from Pearl. */ + +struct game_ui { + int dragging, clearing, notrack; + int drag_sx, drag_sy, drag_ex, drag_ey; /* drag start and end grid coords */ + int clickx, clicky; /* pixel position of initial click */ + + int curx, cury; /* grid position of keyboard cursor; uses half-size grid */ + int cursor_active; /* TRUE iff cursor is shown */ +}; + +static game_ui *new_ui(const game_state *state) +{ + game_ui *ui = snew(game_ui); + + ui->clearing = ui->notrack = ui->dragging = 0; + ui->drag_sx = ui->drag_sy = ui->drag_ex = ui->drag_ey = -1; + ui->cursor_active = FALSE; + ui->curx = ui->cury = 1; + + return ui; +} + +static void free_ui(game_ui *ui) +{ + sfree(ui); +} + +static char *encode_ui(const game_ui *ui) +{ + return NULL; +} + +static void decode_ui(game_ui *ui, const char *encoding) +{ +} + +static void game_changed_state(game_ui *ui, const game_state *oldstate, + const game_state *newstate) +{ +} + +#define PREFERRED_TILE_SIZE 30 +#define HALFSZ (ds->sz6*3) +#define THIRDSZ (ds->sz6*2) +#define TILE_SIZE (ds->sz6*6) + +#define BORDER (TILE_SIZE/8) +#define BORDER_WIDTH (max(TILE_SIZE / 32, 1)) + +#define COORD(x) ( (x+1) * TILE_SIZE + BORDER ) +#define CENTERED_COORD(x) ( COORD(x) + TILE_SIZE/2 ) +#define FROMCOORD(x) ( ((x) < BORDER) ? -1 : ( ((x) - BORDER) / TILE_SIZE) - 1 ) + +#define DS_DSHIFT 4 /* R/U/L/D shift, for drag-in-progress flags */ + +#define DS_ERROR (1 << 8) +#define DS_CLUE (1 << 9) +#define DS_NOTRACK (1 << 10) +#define DS_FLASH (1 << 11) +#define DS_CURSOR (1 << 12) /* cursor in square (centre, or on edge) */ +#define DS_TRACK (1 << 13) +#define DS_CLEARING (1 << 14) + +#define DS_NSHIFT 16 /* R/U/L/D shift, for no-track edge flags */ +#define DS_CSHIFT 20 /* R/U/L/D shift, for cursor-on-edge */ + +struct game_drawstate { + int sz6; + int started; + + int w, h, sz; + unsigned int *flags, *flags_drag; + int *num_errors; +}; + +static void update_ui_drag(const game_state *state, game_ui *ui, int gx, int gy) +{ + int w = state->p.w, h = state->p.h; + int dx = abs(ui->drag_sx - gx), dy = abs(ui->drag_sy - gy); + + if (dy == 0) { + ui->drag_ex = gx < 0 ? 0 : gx >= w ? w-1 : gx; + ui->drag_ey = ui->drag_sy; + ui->dragging = TRUE; + } else if (dx == 0) { + ui->drag_ex = ui->drag_sx; + ui->drag_ey = gy < 0 ? 0 : gy >= h ? h-1 : gy; + ui->dragging = TRUE; + } else { + ui->drag_ex = ui->drag_sx; + ui->drag_ey = ui->drag_sy; + ui->dragging = FALSE; + } +} + +static int ui_can_flip_edge(const game_state *state, int x, int y, int dir, + int notrack) +{ + int w = state->p.w /*, h = state->shared->h, sz = state->shared->sz */; + int x2 = x + DX(dir); + int y2 = y + DY(dir); + unsigned int sf1, sf2, ef; + + if (!INGRID(state, x, y) || !INGRID(state, x2, y2)) + return FALSE; + + sf1 = state->sflags[y*w + x]; + sf2 = state->sflags[y2*w + x2]; + if ( !notrack && ((sf1 & S_CLUE) || (sf2 & S_CLUE)) ) + return FALSE; + + ef = S_E_FLAGS(state, x, y, dir); + if (notrack) { + /* if we're going to _set_ NOTRACK (i.e. the flag is currently unset), + make sure the edge is not already set to TRACK. The adjacent squares + could be set to TRACK, because we don't know which edges the general + square setting refers to. */ + if (!(ef & E_NOTRACK) && (ef & E_TRACK)) + return FALSE; + } else { + if (!(ef & E_TRACK)) { + /* if we're going to _set_ TRACK, make sure neither adjacent square nor + the edge itself is already set to NOTRACK. */ + if ((sf1 & S_NOTRACK) || (sf2 & S_NOTRACK) || (ef & E_NOTRACK)) + return FALSE; + /* if we're going to _set_ TRACK, make sure neither adjacent square has + 2 track flags already. */ + if ((S_E_COUNT(state, x, y, E_TRACK) >= 2) || + (S_E_COUNT(state, x2, y2, E_TRACK) >= 2)) + return FALSE; + } + } + return TRUE; +} + +static int ui_can_flip_square(const game_state *state, int x, int y, int notrack) +{ + int w = state->p.w, trackc; + unsigned sf; + + if (!INGRID(state, x, y)) return FALSE; + sf = state->sflags[y*w+x]; + trackc = S_E_COUNT(state, x, y, E_TRACK); + + if (sf & S_CLUE) return FALSE; + + if (notrack) { + /* If we're setting S_NOTRACK, we cannot have either S_TRACK or any E_TRACK. */ + if (!(sf & S_NOTRACK) && ((sf & S_TRACK) || (trackc > 0))) + return FALSE; + } else { + /* If we're setting S_TRACK, we cannot have any S_NOTRACK (we could have + E_NOTRACK, though, because one or two wouldn't rule out a track) */ + if (!(sf & S_TRACK) && (sf & S_NOTRACK)) + return FALSE; + } + return TRUE; +} + +static char *edge_flip_str(const game_state *state, int x, int y, int dir, int notrack, char *buf) { + unsigned ef = S_E_FLAGS(state, x, y, dir); + char c; + + if (notrack) + c = (ef & E_NOTRACK) ? 'n' : 'N'; + else + c = (ef & E_TRACK) ? 't' : 'T'; + + sprintf(buf, "%c%c%d,%d", c, MOVECHAR(dir), x, y); + return dupstr(buf); +} + +static char *square_flip_str(const game_state *state, int x, int y, int notrack, char *buf) { + unsigned f = state->sflags[y*state->p.w+x]; + char c; + + if (notrack) + c = (f & E_NOTRACK) ? 'n' : 'N'; + else + c = (f & E_TRACK) ? 't' : 'T'; + + sprintf(buf, "%cS%d,%d", c, x, y); + return dupstr(buf); +} + +#define SIGN(x) ((x<0) ? -1 : (x>0)) + +static game_state *copy_and_apply_drag(const game_state *state, const game_ui *ui) +{ + game_state *after = dup_game(state); + int x1, y1, x2, y2, x, y, w = state->p.w; + unsigned f = ui->notrack ? S_NOTRACK : S_TRACK, ff; + + x1 = min(ui->drag_sx, ui->drag_ex); x2 = max(ui->drag_sx, ui->drag_ex); + y1 = min(ui->drag_sy, ui->drag_ey); y2 = max(ui->drag_sy, ui->drag_ey); + + /* actually either x1 == x2, or y1 == y2, but it's easier just to code + the nested loop. */ + for (x = x1; x <= x2; x++) { + for (y = y1; y <= y2; y++) { + ff = state->sflags[y*w+x]; + if (ui->clearing && !(ff & f)) + continue; /* nothing to do, clearing and already clear */ + else if (!ui->clearing && (ff & f)) + continue; /* nothing to do, setting and already set */ + else if (ui_can_flip_square(state, x, y, ui->notrack)) + after->sflags[y*w+x] ^= f; + } + } + return after; +} + +#define KEY_DIRECTION(btn) (\ + (btn) == CURSOR_DOWN ? D : (btn) == CURSOR_UP ? U :\ + (btn) == CURSOR_LEFT ? L : R) + +static char *interpret_move(const game_state *state, game_ui *ui, + const game_drawstate *ds, + int x, int y, int button) +{ + int w = state->p.w, h = state->p.h, direction; + int gx = FROMCOORD(x), gy = FROMCOORD(y); + char tmpbuf[80]; + + /* --- mouse operations --- */ + + if (IS_MOUSE_DOWN(button)) { + ui->cursor_active = FALSE; + ui->dragging = FALSE; + + if (!INGRID(state, gx, gy)) { + /* can't drag from off grid */ + return NULL; + } + + if (button == RIGHT_BUTTON) { + ui->notrack = TRUE; + ui->clearing = state->sflags[gy*w+gx] & S_NOTRACK; + } else { + ui->notrack = FALSE; + ui->clearing = state->sflags[gy*w+gx] & S_TRACK; + } + + ui->clickx = x; + ui->clicky = y; + ui->drag_sx = ui->drag_ex = gx; + ui->drag_sy = ui->drag_ey = gy; + + return ""; + } + + if (IS_MOUSE_DRAG(button)) { + ui->cursor_active = FALSE; + update_ui_drag(state, ui, gx, gy); + return ""; + } + + if (IS_MOUSE_RELEASE(button)) { + ui->cursor_active = FALSE; + if (ui->dragging && + (ui->drag_sx != ui->drag_ex || ui->drag_sy != ui->drag_ey)) { + game_state *dragged = copy_and_apply_drag(state, ui); + char *ret = move_string_diff(state, dragged, FALSE); + + ui->dragging = 0; + free_game(dragged); + + return ret; + } else { + int cx, cy; + + /* We might still have been dragging (and just done a one- + * square drag): cancel drag, so undo doesn't make it like + * a drag-in-progress. */ + ui->dragging = 0; + + /* Click (or tiny drag). Work out which edge we were + * closest to. */ + + /* + * We process clicks based on the mouse-down location, + * because that's more natural for a user to carefully + * control than the mouse-up. + */ + x = ui->clickx; + y = ui->clicky; + + cx = CENTERED_COORD(gx); + cy = CENTERED_COORD(gy); + + if (!INGRID(state, gx, gy) || FROMCOORD(x) != gx || FROMCOORD(y) != gy) + return ""; + + if (max(abs(x-cx),abs(y-cy)) < TILE_SIZE/4) { + if (ui_can_flip_square(state, gx, gy, button == RIGHT_RELEASE)) + return square_flip_str(state, gx, gy, button == RIGHT_RELEASE, tmpbuf); + return ""; + } else { + if (abs(x-cx) < abs(y-cy)) { + /* Closest to top/bottom edge. */ + direction = (y < cy) ? U : D; + } else { + /* Closest to left/right edge. */ + direction = (x < cx) ? L : R; + } + if (ui_can_flip_edge(state, gx, gy, direction, + button == RIGHT_RELEASE)) + return edge_flip_str(state, gx, gy, direction, + button == RIGHT_RELEASE, tmpbuf); + else + return ""; + } + } + } + + /* --- cursor/keyboard operations --- */ + + if (IS_CURSOR_MOVE(button)) { + int dx = (button == CURSOR_LEFT) ? -1 : ((button == CURSOR_RIGHT) ? +1 : 0); + int dy = (button == CURSOR_DOWN) ? +1 : ((button == CURSOR_UP) ? -1 : 0); + + if (!ui->cursor_active) { + ui->cursor_active = TRUE; + return ""; + } + + ui->curx = ui->curx + dx; + ui->cury = ui->cury + dy; + if ((ui->curx % 2 == 0) && (ui->cury % 2 == 0)) { + /* disallow cursor on square corners: centres and edges only */ + ui->curx += dx; ui->cury += dy; + } + ui->curx = min(max(ui->curx, 1), 2*w-1); + ui->cury = min(max(ui->cury, 1), 2*h-1); + return ""; + } + + if (IS_CURSOR_SELECT(button)) { + if (!ui->cursor_active) { + ui->cursor_active = TRUE; + return ""; + } + /* click on square corner does nothing (shouldn't get here) */ + if ((ui->curx % 2) == 0 && (ui->cury % 2 == 0)) + return ""; + + gx = ui->curx / 2; + gy = ui->cury / 2; + direction = ((ui->curx % 2) == 0) ? L : ((ui->cury % 2) == 0) ? U : 0; + + if (direction && + ui_can_flip_edge(state, gx, gy, direction, button == CURSOR_SELECT2)) + return edge_flip_str(state, gx, gy, direction, button == CURSOR_SELECT2, tmpbuf); + else if (!direction && + ui_can_flip_square(state, gx, gy, button == CURSOR_SELECT2)) + return square_flip_str(state, gx, gy, button == CURSOR_SELECT2, tmpbuf); + return ""; + } + +#if 0 + /* helps to debug the solver */ + if (button == 'H' || button == 'h') + return dupstr("H"); +#endif + + return NULL; +} + +static game_state *execute_move(const game_state *state, const char *move) +{ + int w = state->p.w, x, y, n, i; + char c, d; + unsigned f; + game_state *ret = dup_game(state); + + /* this is breaking the bank on GTK, which vsprintf's into a fixed-size buffer + * which is 4096 bytes long. vsnprintf needs a feature-test macro to use, faff. */ + /*debug(("move: %s\n", move));*/ + + while (*move) { + c = *move; + if (c == 'S') { + ret->used_solve = TRUE; + move++; + } else if (c == 'T' || c == 't' || c == 'N' || c == 'n') { + /* set track, clear track; set notrack, clear notrack */ + move++; + if (sscanf(move, "%c%d,%d%n", &d, &x, &y, &n) != 3) + goto badmove; + if (!INGRID(state, x, y)) goto badmove; + + f = (c == 'T' || c == 't') ? S_TRACK : S_NOTRACK; + + if (d == 'S') { + if (c == 'T' || c == 'N') + ret->sflags[y*w+x] |= f; + else + ret->sflags[y*w+x] &= ~f; + } else if (d == 'U' || d == 'D' || d == 'L' || d == 'R') { + for (i = 0; i < 4; i++) { + unsigned df = 1<tilesize' for macro expansion purposes */ + struct { + int sz6; + } ads, *ds = &ads; + ads.sz6 = tilesize/6; + + *x = (params->w+2) * TILE_SIZE + 2 * BORDER; + *y = (params->h+2) * TILE_SIZE + 2 * BORDER; +} + +static void game_set_size(drawing *dr, game_drawstate *ds, + const game_params *params, int tilesize) +{ + ds->sz6 = tilesize/6; +} + +enum { + COL_BACKGROUND, COL_LOWLIGHT, COL_HIGHLIGHT, + COL_TRACK_BACKGROUND = COL_LOWLIGHT, + COL_GRID, COL_CLUE, COL_CURSOR, + COL_TRACK, COL_TRACK_CLUE, COL_SLEEPER, + COL_DRAGON, COL_DRAGOFF, + COL_ERROR, COL_FLASH, + NCOLOURS +}; + +static float *game_colours(frontend *fe, int *ncolours) +{ + float *ret = snewn(3 * NCOLOURS, float); + int i; + + game_mkhighlight(fe, ret, COL_BACKGROUND, COL_HIGHLIGHT, COL_LOWLIGHT); + + for (i = 0; i < 3; i++) { + ret[COL_TRACK_CLUE * 3 + i] = 0.0F; + ret[COL_TRACK * 3 + i] = 0.5F; + ret[COL_CLUE * 3 + i] = 0.0F; + ret[COL_GRID * 3 + i] = 0.75F; + ret[COL_CURSOR * 3 + i] = 0.6F; + } + + ret[COL_SLEEPER * 3 + 0] = 0.5F; + ret[COL_SLEEPER * 3 + 1] = 0.4F; + ret[COL_SLEEPER * 3 + 2] = 0.1F; + + ret[COL_ERROR * 3 + 0] = 1.0F; + ret[COL_ERROR * 3 + 1] = 0.0F; + ret[COL_ERROR * 3 + 2] = 0.0F; + + ret[COL_DRAGON * 3 + 0] = 0.0F; + ret[COL_DRAGON * 3 + 1] = 0.0F; + ret[COL_DRAGON * 3 + 2] = 1.0F; + + ret[COL_DRAGOFF * 3 + 0] = 0.8F; + ret[COL_DRAGOFF * 3 + 1] = 0.8F; + ret[COL_DRAGOFF * 3 + 2] = 1.0F; + + ret[COL_FLASH * 3 + 0] = 1.0F; + ret[COL_FLASH * 3 + 1] = 1.0F; + ret[COL_FLASH * 3 + 2] = 1.0F; + + *ncolours = NCOLOURS; + return ret; +} + +static game_drawstate *game_new_drawstate(drawing *dr, const game_state *state) +{ + struct game_drawstate *ds = snew(struct game_drawstate); + int i; + + ds->sz6 = 0; + ds->started = FALSE; + + ds->w = state->p.w; + ds->h = state->p.h; + ds->sz = ds->w*ds->h; + ds->flags = snewn(ds->sz, unsigned int); + ds->flags_drag = snewn(ds->sz, unsigned int); + for (i = 0; i < ds->sz; i++) + ds->flags[i] = ds->flags_drag[i] = 0; + + ds->num_errors = snewn(ds->w+ds->h, int); + for (i = 0; i < ds->w+ds->h; i++) + ds->num_errors[i] = 0; + + return ds; +} + +static void game_free_drawstate(drawing *dr, game_drawstate *ds) +{ + sfree(ds->flags); + sfree(ds->flags_drag); + sfree(ds->num_errors); + sfree(ds); +} + +static void draw_circle_sleepers(drawing *dr, game_drawstate *ds, + float cx, float cy, float r2, float thickness, int c) +{ + float qr6 = (float)PI/12, qr3 = (float)PI/6, th, x1, y1, x2, y2; + float t6 = THIRDSZ/2.0F, r1 = t6; + int i; + + for (i = 0; i < 12; i++) { + th = qr6 + (i*qr3); + x1 = r1*(float)cos(th); + x2 = r2*(float)cos(th); + y1 = r1*(float)sin(th); + y2 = r2*(float)sin(th); + draw_thick_line(dr, thickness, cx+x1, cy+y1, cx+x2, cy+y2, c); + } +} + +static void draw_thick_circle_outline(drawing *dr, float thickness, + float cx, float cy, float r, + int colour) +{ + float circ4 = 0.5F * (float)PI * r, ang, x1, y1, x2, y2; + int i, nseg; + + nseg = (int)(circ4 / 4.0F)*4; /* ensure a quarter-circle has a whole #segs */ + ang = 2.0F*(float)PI / nseg; + + for (i = 0; i < nseg; i++) { + float th = ang * i, th2 = ang * (i+1); + x1 = cx + r*(float)cos(th); + x2 = cx + r*(float)cos(th2); + y1 = cy + r*(float)sin(th); + y2 = cy + r*(float)sin(th2); + debug(("circ outline: x=%.2f -> %.2f, thick=%.2f", x1, x2, thickness)); + draw_thick_line(dr, thickness, x1, y1, x2, y2, colour); + } +} + +static void draw_tracks_specific(drawing *dr, game_drawstate *ds, + int x, int y, unsigned int flags, + int ctrack, int csleeper) +{ + float ox = (float)COORD(x), oy = (float)COORD(y), cx, cy; + float t1 = (float)TILE_SIZE, t3 = TILE_SIZE/3.0F, t6 = TILE_SIZE/6.0F; + int d, i; + float thick_track = TILE_SIZE/8.0F, thick_sleeper = TILE_SIZE/12.0F; + + if (flags == LR) { + for (i = 1; i <= 7; i+=2) { + cx = ox + TILE_SIZE/8.0F*i; + draw_thick_line(dr, thick_sleeper, + cx, oy+t6, cx, oy+t6+2*t3, csleeper); + } + draw_thick_line(dr, thick_track, ox, oy + t3, ox + TILE_SIZE, oy + t3, ctrack); + draw_thick_line(dr, thick_track, ox, oy + 2*t3, ox + TILE_SIZE, oy + 2*t3, ctrack); + return; + } + if (flags == UD) { + for (i = 1; i <= 7; i+=2) { + cy = oy + TILE_SIZE/8.0F*i; + draw_thick_line(dr, thick_sleeper, + ox+t6, cy, ox+t6+2*t3, cy, csleeper); + } + debug(("vert line: x=%.2f, thick=%.2f", ox + t3, thick_track)); + draw_thick_line(dr, thick_track, ox + t3, oy, ox + t3, oy + TILE_SIZE, ctrack); + draw_thick_line(dr, thick_track, ox + 2*t3, oy, ox + 2*t3, oy + TILE_SIZE, ctrack); + return; + } + if (flags == UL || flags == DL || flags == UR || flags == DR) { + cx = (flags & L) ? ox : ox + TILE_SIZE; + cy = (flags & U) ? oy : oy + TILE_SIZE; + + draw_circle_sleepers(dr, ds, cx, cy, (float)(5*t6), thick_sleeper, csleeper); + + draw_thick_circle_outline(dr, thick_track, (float)cx, (float)cy, + 2*t3, ctrack); + draw_thick_circle_outline(dr, thick_track, (float)cx, (float)cy, + t3, ctrack); + + return; + } + + for (d = 1; d < 16; d *= 2) { + float ox1 = 0, ox2 = 0, oy1 = 0, oy2 = 0; + + if (!(flags & d)) continue; + + for (i = 1; i <= 2; i++) { + if (d == L) { + ox1 = 0; + ox2 = thick_track; + oy1 = oy2 = i*t3; + } else if (d == R) { + ox1 = t1; + ox2 = t1 - thick_track; + oy1 = oy2 = i*t3; + } else if (d == U) { + ox1 = ox2 = i*t3; + oy1 = 0; + oy2 = thick_track; + } else if (d == D) { + ox1 = ox2 = i*t3; + oy1 = t1; + oy2 = t1 - thick_track; + } + draw_thick_line(dr, thick_track, ox+ox1, oy+oy1, ox+ox2, oy+oy2, ctrack); + } + } +} + +static unsigned int best_bits(unsigned int flags, unsigned int flags_drag, int *col) +{ + int nb_orig = nbits[flags & ALLDIR], nb_drag = nbits[flags_drag & ALLDIR]; + + if (nb_orig > nb_drag) { + *col = COL_DRAGOFF; + return flags & ALLDIR; + } else if (nb_orig < nb_drag) { + *col = COL_DRAGON; + return flags_drag & ALLDIR; + } + return flags & ALLDIR; /* same number of bits: no special colour. */ +} + +static void draw_square(drawing *dr, game_drawstate *ds, + int x, int y, unsigned int flags, unsigned int flags_drag) +{ + int t2 = HALFSZ, t16 = HALFSZ/4, off; + int ox = COORD(x), oy = COORD(y), cx = ox + t2, cy = oy + t2, d, c; + int bg = (flags & DS_TRACK) ? COL_TRACK_BACKGROUND : COL_BACKGROUND; + unsigned int flags_best; + + assert(dr); + + /* Clip to the grid square. */ + clip(dr, ox, oy, TILE_SIZE, TILE_SIZE); + + /* Clear the square. */ + best_bits((flags & DS_TRACK) == DS_TRACK, + (flags_drag & DS_TRACK) == DS_TRACK, &bg); + draw_rect(dr, ox, oy, TILE_SIZE, TILE_SIZE, bg); + + /* Draw outline of grid square */ + draw_line(dr, ox, oy, COORD(x+1), oy, COL_GRID); + draw_line(dr, ox, oy, ox, COORD(y+1), COL_GRID); + + /* More outlines for clue squares. */ + if (flags & DS_CURSOR) { + int curx, cury, curw, curh; + + off = t16; + curx = ox + off; cury = oy + off; + curw = curh = TILE_SIZE - (2*off) + 1; + + if (flags & (U << DS_CSHIFT)) { + cury = oy - off; curh = 2*off + 1; + } else if (flags & (D << DS_CSHIFT)) { + cury = oy + TILE_SIZE - off; curh = 2*off + 1; + } else if (flags & (L << DS_CSHIFT)) { + curx = ox - off; curw = 2*off + 1; + } else if (flags & (R << DS_CSHIFT)) { + curx = ox + TILE_SIZE - off; curw = 2*off + 1; + } + + draw_rect_outline(dr, curx, cury, curw, curh, COL_GRID); + } + + /* Draw tracks themselves */ + c = (flags & DS_ERROR) ? COL_ERROR : + (flags & DS_FLASH) ? COL_FLASH : + (flags & DS_CLUE) ? COL_TRACK_CLUE : COL_TRACK; + flags_best = best_bits(flags, flags_drag, &c); + draw_tracks_specific(dr, ds, x, y, flags_best, c, COL_SLEEPER); + + /* Draw no-track marks, if present, in square and on edges. */ + c = COL_TRACK; + flags_best = best_bits((flags & DS_NOTRACK) == DS_NOTRACK, + (flags_drag & DS_NOTRACK) == DS_NOTRACK, &c); + if (flags_best) { + off = HALFSZ/2; + draw_line(dr, cx - off, cy - off, cx + off, cy + off, c); + draw_line(dr, cx - off, cy + off, cx + off, cy - off, c); + } + + c = COL_TRACK; + flags_best = best_bits(flags >> DS_NSHIFT, flags_drag >> DS_NSHIFT, &c); + for (d = 1; d < 16; d *= 2) { + off = t16; + cx = ox + t2; + cy = oy + t2; + + if (flags_best & d) { + cx += (d == R) ? t2 : (d == L) ? -t2 : 0; + cy += (d == D) ? t2 : (d == U) ? -t2 : 0; + + draw_line(dr, cx - off, cy - off, cx + off, cy + off, c); + draw_line(dr, cx - off, cy + off, cx + off, cy - off, c); + } + } + + unclip(dr); + draw_update(dr, ox, oy, TILE_SIZE, TILE_SIZE); +} + +static void draw_clue(drawing *dr, game_drawstate *ds, int w, int clue, int i, int col) +{ + int cx, cy, tsz = TILE_SIZE/2; + char buf[20]; + + if (i < w) { + cx = CENTERED_COORD(i); + cy = CENTERED_COORD(-1); + } else { + cx = CENTERED_COORD(w); + cy = CENTERED_COORD(i-w); + } + + draw_rect(dr, cx - tsz + BORDER, cy - tsz + BORDER, + TILE_SIZE - BORDER, TILE_SIZE - BORDER, COL_BACKGROUND); + sprintf(buf, "%d", clue); + draw_text(dr, cx, cy, FONT_VARIABLE, tsz, ALIGN_VCENTRE|ALIGN_HCENTRE, + col, buf); + draw_update(dr, cx - tsz, cy - tsz, TILE_SIZE, TILE_SIZE); +} + +static void draw_loop_ends(drawing *dr, game_drawstate *ds, + const game_state *state, int c) +{ + int tsz = TILE_SIZE/2; + + draw_text(dr, CENTERED_COORD(-1), CENTERED_COORD(state->numbers->row_s), + FONT_VARIABLE, tsz, ALIGN_VCENTRE|ALIGN_HCENTRE, + c, "A"); + + draw_text(dr, CENTERED_COORD(state->numbers->col_s), CENTERED_COORD(state->p.h), + FONT_VARIABLE, tsz, ALIGN_VCENTRE|ALIGN_HCENTRE, + c, "B"); +} + +static unsigned int s2d_flags(const game_state *state, int x, int y, const game_ui *ui) +{ + unsigned int f; + int w = state->p.w; + + f = S_E_DIRS(state, x, y, E_TRACK); + f |= (S_E_DIRS(state, x, y, E_NOTRACK) << DS_NSHIFT); + + if (state->sflags[y*w+x] & S_ERROR) + f |= DS_ERROR; + if (state->sflags[y*w+x] & S_CLUE) + f |= DS_CLUE; + if (state->sflags[y*w+x] & S_NOTRACK) + f |= DS_NOTRACK; + if ((state->sflags[y*w+x] & S_TRACK) || (S_E_COUNT(state, x, y, E_TRACK) > 0)) + f |= DS_TRACK; + + if (ui->cursor_active) { + if (ui->curx >= x*2 && ui->curx <= (x+1)*2 && + ui->cury >= y*2 && ui->cury <= (y+1)*2) { + f |= DS_CURSOR; + if (ui->curx == x*2) f |= (L << DS_CSHIFT); + if (ui->curx == (x+1)*2) f |= (R << DS_CSHIFT); + if (ui->cury == y*2) f |= (U << DS_CSHIFT); + if (ui->cury == (y+1)*2) f |= (D << DS_CSHIFT); + } + } + + return f; +} + +static void game_redraw(drawing *dr, game_drawstate *ds, const game_state *oldstate, + const game_state *state, int dir, const game_ui *ui, + float animtime, float flashtime) +{ + int i, x, y, force = 0, flashing = 0, w = ds->w, h = ds->h; + game_state *drag_state = NULL; + + if (!ds->started) { + /* + * The initial contents of the window are not guaranteed and + * can vary with front ends. To be on the safe side, all games + * should start by drawing a big background-colour rectangle + * covering the whole window. + */ + draw_rect(dr, 0, 0, (w+2)*TILE_SIZE + 2*BORDER, (h+2)*TILE_SIZE + 2*BORDER, + COL_BACKGROUND); + + draw_loop_ends(dr, ds, state, COL_CLUE); + + draw_line(dr, COORD(ds->w), COORD(0), COORD(ds->w), COORD(ds->h), COL_GRID); + draw_line(dr, COORD(0), COORD(ds->h), COORD(ds->w), COORD(ds->h), COL_GRID); + + draw_update(dr, 0, 0, (w+2)*TILE_SIZE + 2*BORDER, (h+2)*TILE_SIZE + 2*BORDER); + + ds->started = TRUE; + force = 1; + } + + for (i = 0; i < w+h; i++) { + if (force || (state->num_errors[i] != ds->num_errors[i])) { + ds->num_errors[i] = state->num_errors[i]; + draw_clue(dr, ds, w, state->numbers->numbers[i], i, + ds->num_errors[i] ? COL_ERROR : COL_CLUE); + } + } + + if (flashtime > 0 && + (flashtime <= FLASH_TIME/3 || + flashtime >= FLASH_TIME*2/3)) + flashing = DS_FLASH; + + if (ui->dragging) + drag_state = copy_and_apply_drag(state, ui); + + for (x = 0; x < w; x++) { + for (y = 0; y < h; y++) { + unsigned int f, f_d; + + f = s2d_flags(state, x, y, ui) | flashing; + f_d = drag_state ? s2d_flags(drag_state, x, y, ui) : f; + + if (f != ds->flags[y*w+x] || f_d != ds->flags_drag[y*w+x] || force) { + ds->flags[y*w+x] = f; + ds->flags_drag[y*w+x] = f_d; + draw_square(dr, ds, x, y, f, f_d); + } + } + } + + if (drag_state) free_game(drag_state); +} + +static float game_anim_length(const game_state *oldstate, const game_state *newstate, + int dir, game_ui *ui) +{ + return 0.0F; +} + +static float game_flash_length(const game_state *oldstate, const game_state *newstate, + int dir, game_ui *ui) +{ + if (!oldstate->completed && + newstate->completed && !newstate->used_solve) + return FLASH_TIME; + else + return 0.0F; +} + +static int game_status(const game_state *state) +{ + return state->completed ? +1 : 0; +} + +static int game_timing_state(const game_state *state, game_ui *ui) +{ + return TRUE; +} + +static void game_print_size(const game_params *params, float *x, float *y) +{ + int pw, ph; + + /* The Times uses 7mm squares */ + game_compute_size(params, 700, &pw, &ph); + *x = pw / 100.0F; + *y = ph / 100.0F; +} + +static void game_print(drawing *dr, const game_state *state, int tilesize) +{ + int w = state->p.w, h = state->p.h; + int black = print_mono_colour(dr, 0), grey = print_grey_colour(dr, 0.5F); + int x, y, i; + + /* Ick: fake up `ds->tilesize' for macro expansion purposes */ + game_drawstate ads, *ds = &ads; + game_set_size(dr, ds, NULL, tilesize); + + /* Grid, then border (second so it is on top) */ + print_line_width(dr, TILE_SIZE / 24); + for (x = 1; x < w; x++) + draw_line(dr, COORD(x), COORD(0), COORD(x), COORD(h), grey); + for (y = 1; y < h; y++) + draw_line(dr, COORD(0), COORD(y), COORD(w), COORD(y), grey); + + print_line_width(dr, TILE_SIZE / 16); + draw_rect_outline(dr, COORD(0), COORD(0), w*TILE_SIZE, h*TILE_SIZE, black); + + print_line_width(dr, TILE_SIZE / 24); + + /* clue numbers, and loop ends */ + for (i = 0; i < w+h; i++) + draw_clue(dr, ds, w, state->numbers->numbers[i], i, black); + draw_loop_ends(dr, ds, state, black); + + /* clue tracks / solution */ + for (x = 0; x < w; x++) { + for (y = 0; y < h; y++) { + clip(dr, COORD(x), COORD(y), TILE_SIZE, TILE_SIZE); + draw_tracks_specific(dr, ds, x, y, S_E_DIRS(state, x, y, E_TRACK), + black, grey); + unclip(dr); + } + } +} + +#ifdef COMBINED +#define thegame tracks +#endif + +const struct game thegame = { + "Train Tracks", "games.tracks", "tracks", + default_params, + game_fetch_preset, + decode_params, + encode_params, + free_params, + dup_params, + TRUE, game_configure, custom_params, + validate_params, + new_game_desc, + validate_desc, + new_game, + dup_game, + free_game, + TRUE, solve_game, + TRUE, game_can_format_as_text_now, game_text_format, + new_ui, + free_ui, + encode_ui, + decode_ui, + game_changed_state, + interpret_move, + execute_move, + PREFERRED_TILE_SIZE, game_compute_size, game_set_size, + game_colours, + game_new_drawstate, + game_free_drawstate, + game_redraw, + game_anim_length, + game_flash_length, + game_status, + TRUE, FALSE, game_print_size, game_print, + FALSE, /* wants_statusbar */ + FALSE, game_timing_state, + 0, /* flags */ +}; + +/* vim: set shiftwidth=4 tabstop=8: */ diff -Nru sgt-puzzles-20140928.r10274/tracks.R sgt-puzzles-20160429.b31155b/tracks.R --- sgt-puzzles-20140928.r10274/tracks.R 1970-01-01 00:00:00.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/tracks.R 2016-04-29 00:30:09.000000000 +0000 @@ -0,0 +1,21 @@ +# -*- makefile -*- + +TRACKS_EXTRA = dsf findloop + +tracks : [X] GTK COMMON tracks TRACKS_EXTRA tracks-icon|no-icon + +tracks : [G] WINDOWS COMMON tracks TRACKS_EXTRA tracks.res|noicon.res + +ALL += tracks[COMBINED] TRACKS_EXTRA + +!begin am gtk +GAMES += tracks +!end + +!begin >list.c + A(tracks) \ +!end + +!begin >gamedesc.txt +tracks:tracks.exe:Tracks:Path-finding railway track puzzle:Fill in the railway track according to the clues. +!end diff -Nru sgt-puzzles-20140928.r10274/twiddle.R sgt-puzzles-20160429.b31155b/twiddle.R --- sgt-puzzles-20140928.r10274/twiddle.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/twiddle.R 2016-04-29 00:30:09.000000000 +0000 @@ -15,5 +15,5 @@ !end !begin >gamedesc.txt -twiddle:twiddle.exe:Twiddle:Rotational sliding block puzzle +twiddle:twiddle.exe:Twiddle:Rotational sliding block puzzle:Rotate the tiles around themselves to arrange them into order. !end diff -Nru sgt-puzzles-20140928.r10274/undead.c sgt-puzzles-20160429.b31155b/undead.c --- sgt-puzzles-20140928.r10274/undead.c 2014-01-07 18:21:24.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/undead.c 2016-04-29 00:30:09.000000000 +0000 @@ -49,6 +49,7 @@ COL_GHOST, COL_ZOMBIE, COL_VAMPIRE, + COL_DONE, NCOLOURS }; @@ -237,6 +238,7 @@ unsigned char *pencils; unsigned char *cell_errors; unsigned char *hint_errors; + unsigned char *hints_done; unsigned char count_errors[3]; int solved; int cheated; @@ -289,6 +291,9 @@ state->hint_errors = snewn(2*state->common->num_paths, unsigned char); for (i=0;i<2*state->common->num_paths;i++) state->hint_errors[i] = FALSE; + state->hints_done = snewn(2 * state->common->num_paths, unsigned char); + memset(state->hints_done, 0, + 2 * state->common->num_paths * sizeof(unsigned char)); for (i=0;i<3;i++) state->count_errors[i] = FALSE; @@ -332,6 +337,13 @@ } else ret->hint_errors = NULL; + if (state->hints_done != NULL) { + ret->hints_done = snewn(2 * state->common->num_paths, unsigned char); + memcpy(ret->hints_done, state->hints_done, + 2 * state->common->num_paths * sizeof(unsigned char)); + } + else ret->hints_done = NULL; + ret->count_errors[0] = state->count_errors[0]; ret->count_errors[1] = state->count_errors[1]; ret->count_errors[2] = state->count_errors[2]; @@ -358,6 +370,7 @@ if (state->common->fixed != NULL) sfree(state->common->fixed); sfree(state->common); } + if (state->hints_done != NULL) sfree(state->hints_done); if (state->hint_errors != NULL) sfree(state->hint_errors); if (state->cell_errors != NULL) sfree(state->cell_errors); if (state->pencils != NULL) sfree(state->pencils); @@ -1662,12 +1675,40 @@ unsigned char count_errors[3]; unsigned char *cell_errors; unsigned char *hint_errors; + unsigned char *hints_done; int hx, hy, hshow, hpencil; /* as for game_ui. */ int hflash; int ascii; }; +static int is_clue(const game_state *state, int x, int y) +{ + int h = state->common->params.h, w = state->common->params.w; + + if (((x == 0 || x == w + 1) && y > 0 && y <= h) || + ((y == 0 || y == h + 1) && x > 0 && x <= w)) + return TRUE; + + return FALSE; +} + +static int clue_index(const game_state *state, int x, int y) +{ + int h = state->common->params.h, w = state->common->params.w; + + if (y == 0) + return x - 1; + else if (x == w + 1) + return w + y - 1; + else if (y == h + 1) + return 2 * w + h - x; + else if (x == 0) + return 2 * (w + h) - y; + + return -1; +} + #define TILESIZE (ds->tilesize) #define BORDER (TILESIZE/4) @@ -1686,6 +1727,10 @@ ui->ascii = !ui->ascii; return ""; } + + if (button == 'm' || button == 'M') { + return dupstr("M"); + } if (ui->hshow == 1 && ui->hpencil == 0) { xi = state->common->xinfo[ui->hx + ui->hy*(state->common->params.w+2)]; @@ -1818,6 +1863,11 @@ } } } + } else if (button == LEFT_BUTTON) { + if (is_clue(state, gx, gy)) { + sprintf(buf, "D%d,%d", gx, gy); + return dupstr(buf); + } } return NULL; @@ -1905,7 +1955,9 @@ } } - if (unfilled == 0 && count != state->common->paths[p].sightings_start) { + if (count > state->common->paths[p].sightings_start || + count + unfilled < state->common->paths[p].sightings_start) + { correct = FALSE; state->hint_errors[state->common->paths[p].grid_start] = TRUE; } @@ -1927,7 +1979,9 @@ } } - if (unfilled == 0 && count != state->common->paths[p].sightings_end) { + if (count > state->common->paths[p].sightings_end || + count + unfilled < state->common->paths[p].sightings_end) + { correct = FALSE; state->hint_errors[state->common->paths[p].grid_end] = TRUE; } @@ -1942,7 +1996,7 @@ static game_state *execute_move(const game_state *state, const char *move) { - int x,n,p,i; + int x,y,n,p,i; char c; int correct; int solver; @@ -1969,6 +2023,23 @@ if (c == 'z') ret->pencils[x] ^= 4; move += n; } + if (c == 'D' && sscanf(move + 1, "%d,%d%n", &x, &y, &n) == 2 && + is_clue(ret, x, y)) { + ret->hints_done[clue_index(ret, x, y)] ^= 1; + move += n + 1; + } + if (c == 'M') { + /* + * Fill in absolutely all pencil marks in unfilled + * squares, for those who like to play by the rigorous + * approach of starting off in that state and eliminating + * things. + */ + for (i = 0; i < ret->common->wh; i++) + if (ret->guess[i] == 7) + ret->pencils[i] = 7; + move++; + } if (*move == ';') move++; } @@ -2058,6 +2129,10 @@ ret[COL_VAMPIRE * 3 + 1] = ret[COL_BACKGROUND * 3 + 0] * 0.9F; ret[COL_VAMPIRE * 3 + 2] = ret[COL_BACKGROUND * 3 + 0] * 0.9F; + ret[COL_DONE * 3 + 0] = ret[COL_BACKGROUND * 3 + 0] / 1.5F; + ret[COL_DONE * 3 + 1] = ret[COL_BACKGROUND * 3 + 1] / 1.5F; + ret[COL_DONE * 3 + 2] = ret[COL_BACKGROUND * 3 + 2] / 1.5F; + *ncolours = NCOLOURS; return ret; } @@ -2090,6 +2165,9 @@ ds->hint_errors = snewn(2*state->common->num_paths,unsigned char); for (i=0;i<2*state->common->num_paths;i++) ds->hint_errors[i] = FALSE; + ds->hints_done = snewn(2 * state->common->num_paths, unsigned char); + memset(ds->hints_done, 0, + 2 * state->common->num_paths * sizeof(unsigned char)); ds->hshow = ds->hpencil = ds->hflash = 0; ds->hx = ds->hy = 0; @@ -2097,6 +2175,7 @@ } static void game_free_drawstate(drawing *dr, game_drawstate *ds) { + sfree(ds->hints_done); sfree(ds->hint_errors); sfree(ds->cell_errors); sfree(ds->pencils); @@ -2316,22 +2395,37 @@ } static void draw_path_hint(drawing *dr, game_drawstate *ds, - const game_state *state, - int i, int hflash, int start) { - int dx,dy,x,y; - int p,error; - char buf[80]; - - p = start ? state->common->paths[i].grid_start : state->common->paths[i].grid_end; - range2grid(p,state->common->params.w,state->common->params.h,&x,&y); - error = ds->hint_errors[p]; + const struct game_params *params, + int hint_index, int hflash, int hint) { + int x, y, color, dx, dy, text_dx, text_dy, text_size; + char buf[4]; + + if (ds->hint_errors[hint_index]) + color = COL_ERROR; + else if (hflash) + color = COL_FLASH; + else if (ds->hints_done[hint_index]) + color = COL_DONE; + else + color = COL_TEXT; - dx = BORDER+(x* ds->tilesize)+(TILESIZE/2); - dy = BORDER+(y* ds->tilesize)+(TILESIZE/2)+TILESIZE; - sprintf(buf,"%d", start ? state->common->paths[i].sightings_start : state->common->paths[i].sightings_end); - draw_rect(dr,dx-(TILESIZE/2)+2,dy-(TILESIZE/2)+2,TILESIZE-3,TILESIZE-3,COL_BACKGROUND); - draw_text(dr,dx,dy,FONT_FIXED,TILESIZE/2,ALIGN_HCENTRE|ALIGN_VCENTRE, error ? COL_ERROR : hflash ? COL_FLASH : COL_TEXT,buf); - draw_update(dr,dx-(TILESIZE/2)+2,dy-(TILESIZE/2)+2,TILESIZE-3,TILESIZE-3); + range2grid(hint_index, params->w, params->h, &x, &y); + /* Upper-left corner of the "tile" */ + dx = BORDER + x * TILESIZE; + dy = BORDER + y * TILESIZE + TILESIZE; + /* Center of the "tile" */ + text_dx = dx + TILESIZE / 2; + text_dy = dy + TILESIZE / 2; + /* Avoid wiping out the borders of the puzzle */ + dx += 2; + dy += 2; + text_size = TILESIZE - 3; + + sprintf(buf,"%d", hint); + draw_rect(dr, dx, dy, text_size, text_size, COL_BACKGROUND); + draw_text(dr, text_dx, text_dy, FONT_FIXED, TILESIZE / 2, + ALIGN_HCENTRE | ALIGN_VCENTRE, color, buf); + draw_update(dr, dx, dy, text_size, text_size); return; } @@ -2429,6 +2523,26 @@ #define FLASH_TIME 0.7F +static int is_hint_stale(const game_drawstate *ds, int hflash, + const game_state *state, int index) +{ + int ret = FALSE; + if (!ds->started) ret = TRUE; + if (ds->hflash != hflash) ret = TRUE; + + if (ds->hint_errors[index] != state->hint_errors[index]) { + ds->hint_errors[index] = state->hint_errors[index]; + ret = TRUE; + } + + if (ds->hints_done[index] != state->hints_done[index]) { + ds->hints_done[index] = state->hints_done[index]; + ret = TRUE; + } + + return ret; +} + static void game_redraw(drawing *dr, game_drawstate *ds, const game_state *oldstate, const game_state *state, int dir, const game_ui *ui, @@ -2484,37 +2598,17 @@ /* Draw path count hints */ for (i=0;icommon->num_paths;i++) { - int p; - stale = FALSE; - - if (!ds->started) stale = TRUE; - if (ds->hflash != hflash) stale = TRUE; + struct path *path = &state->common->paths[i]; - p = state->common->paths[i].grid_start; - if (ds->hint_errors[p] != state->hint_errors[p]) { - stale = TRUE; - ds->hint_errors[p] = state->hint_errors[p]; - } - - if (stale) { - draw_path_hint(dr, ds, state, i, hflash, TRUE); - } - - stale = FALSE; - - if (!ds->started) stale = TRUE; - if (ds->hflash != hflash) stale = TRUE; - - p = state->common->paths[i].grid_end; - if (ds->hint_errors[p] != state->hint_errors[p]) { - stale = TRUE; - ds->hint_errors[p] = state->hint_errors[p]; + if (is_hint_stale(ds, hflash, state, path->grid_start)) { + draw_path_hint(dr, ds, &state->common->params, path->grid_start, + hflash, path->sightings_start); } - if (stale) { - draw_path_hint(dr, ds, state, i, hflash, FALSE); + if (is_hint_stale(ds, hflash, state, path->grid_end)) { + draw_path_hint(dr, ds, &state->common->params, path->grid_end, + hflash, path->sightings_end); } - } /* Draw puzzle grid contents */ diff -Nru sgt-puzzles-20140928.r10274/undead.R sgt-puzzles-20160429.b31155b/undead.R --- sgt-puzzles-20140928.r10274/undead.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/undead.R 2016-04-29 00:30:09.000000000 +0000 @@ -14,5 +14,5 @@ !end !begin >gamedesc.txt -undead:undead.exe:Undead:Monster-placing puzzle +undead:undead.exe:Undead:Monster-placing puzzle:Place ghosts, vampires and zombies so that the right numbers of them can be seen in mirrors. !end diff -Nru sgt-puzzles-20140928.r10274/unequal.c sgt-puzzles-20160429.b31155b/unequal.c --- sgt-puzzles-20140928.r10274/unequal.c 2013-04-13 10:37:32.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/unequal.c 2016-04-29 00:30:09.000000000 +0000 @@ -51,7 +51,7 @@ COL_BACKGROUND, COL_GRID, COL_TEXT, COL_GUESS, COL_ERROR, COL_PENCIL, - COL_HIGHLIGHT, COL_LOWLIGHT, + COL_HIGHLIGHT, COL_LOWLIGHT, COL_SPENT = COL_LOWLIGHT, NCOLOURS }; @@ -72,6 +72,12 @@ #define F_ERROR_RIGHT 128 #define F_ERROR_DOWN 256 #define F_ERROR_LEFT 512 +#define F_SPENT_UP 1024 +#define F_SPENT_RIGHT 2048 +#define F_SPENT_DOWN 4096 +#define F_SPENT_LEFT 8192 + +#define ADJ_TO_SPENT(x) ((x) << 9) #define F_ERROR_MASK (F_ERROR|F_ERROR_UP|F_ERROR_RIGHT|F_ERROR_DOWN|F_ERROR_LEFT) @@ -1381,11 +1387,32 @@ { int x = FROMCOORD(ox), y = FROMCOORD(oy), n; char buf[80]; + int shift_or_control = button & (MOD_SHFT | MOD_CTRL); button &= ~MOD_MASK; - if (x >= 0 && x < ds->order && ((ox - COORD(x)) <= TILE_SIZE) && - y >= 0 && y < ds->order && ((oy - COORD(y)) <= TILE_SIZE)) { + if (x >= 0 && x < ds->order && y >= 0 && y < ds->order && IS_MOUSE_DOWN(button)) { + if (oy - COORD(y) > TILE_SIZE && ox - COORD(x) > TILE_SIZE) + return NULL; + + if (oy - COORD(y) > TILE_SIZE) { + if (GRID(state, flags, x, y) & F_ADJ_DOWN) + sprintf(buf, "F%d,%d,%d", x, y, F_SPENT_DOWN); + else if (y + 1 < ds->order && GRID(state, flags, x, y + 1) & F_ADJ_UP) + sprintf(buf, "F%d,%d,%d", x, y + 1, F_SPENT_UP); + else return NULL; + return dupstr(buf); + } + + if (ox - COORD(x) > TILE_SIZE) { + if (GRID(state, flags, x, y) & F_ADJ_RIGHT) + sprintf(buf, "F%d,%d,%d", x, y, F_SPENT_RIGHT); + else if (x + 1 < ds->order && GRID(state, flags, x + 1, y) & F_ADJ_LEFT) + sprintf(buf, "F%d,%d,%d", x + 1, y, F_SPENT_LEFT); + else return NULL; + return dupstr(buf); + } + if (button == LEFT_BUTTON) { /* normal highlighting for non-immutable squares */ if (GRID(state, flags, x, y) & F_IMMUTABLE) @@ -1417,9 +1444,39 @@ } if (IS_CURSOR_MOVE(button)) { - move_cursor(button, &ui->hx, &ui->hy, ds->order, ds->order, 0); - ui->hshow = ui->hcursor = 1; - return ""; + if (shift_or_control) { + int nx = ui->hx, ny = ui->hy, i, self; + move_cursor(button, &nx, &ny, ds->order, ds->order, FALSE); + ui->hshow = ui->hcursor = 1; + + for (i = 0; i < 4 && (nx != ui->hx + adjthan[i].dx || + ny != ui->hy + adjthan[i].dy); ++i); + + if (i == 4) + return ""; /* invalid direction, i.e. out of the board */ + + if (!(GRID(state, flags, ui->hx, ui->hy) & adjthan[i].f || + GRID(state, flags, nx, ny ) & adjthan[i].fo)) + return ""; /* no clue to toggle */ + + if (state->adjacent) + self = (adjthan[i].dx >= 0 && adjthan[i].dy >= 0); + else + self = (GRID(state, flags, ui->hx, ui->hy) & adjthan[i].f); + + if (self) + sprintf(buf, "F%d,%d,%d", ui->hx, ui->hy, + ADJ_TO_SPENT(adjthan[i].f)); + else + sprintf(buf, "F%d,%d,%d", nx, ny, + ADJ_TO_SPENT(adjthan[i].fo)); + + return dupstr(buf); + } else { + move_cursor(button, &ui->hx, &ui->hy, ds->order, ds->order, FALSE); + ui->hshow = ui->hcursor = 1; + return ""; + } } if (ui->hshow && IS_CURSOR_SELECT(button)) { ui->hpencil = 1 - ui->hpencil; @@ -1427,18 +1484,15 @@ return ""; } - - if (ui->hshow) { + n = c2n(button, state->order); + if (ui->hshow && n >= 0 && n <= ds->order) { debug(("button %d, cbutton %d", button, (int)((char)button))); - n = c2n(button, state->order); debug(("n %d, h (%d,%d) p %d flags 0x%x nums %d", n, ui->hx, ui->hy, ui->hpencil, GRID(state, flags, ui->hx, ui->hy), GRID(state, nums, ui->hx, ui->hy))); - if (n < 0 || n > ds->order) - return NULL; /* out of range */ if (GRID(state, flags, ui->hx, ui->hy) & F_IMMUTABLE) return NULL; /* can't edit immutable square (!) */ if (ui->hpencil && GRID(state, nums, ui->hx, ui->hy) > 0) @@ -1515,6 +1569,11 @@ return ret; } else if (move[0] == 'H') { return solver_hint(state, NULL, DIFF_EASY, DIFF_EASY); + } else if (move[0] == 'F' && sscanf(move+1, "%d,%d,%d", &x, &y, &n) == 3 && + x >= 0 && x < state->order && y >= 0 && y < state->order) { + ret = dup_game(state); + GRID(ret, flags, x, y) ^= n; + return ret; } badmove: @@ -1624,6 +1683,9 @@ draw_polygon(dr, coords, 6, col, col); } +#define COLOUR(direction) (f & (F_ERROR_##direction) ? COL_ERROR : \ + f & (F_SPENT_##direction) ? COL_SPENT : fg) + static void draw_gts(drawing *dr, game_drawstate *ds, int ox, int oy, unsigned int f, int bg, int fg) { @@ -1633,26 +1695,22 @@ if (f & F_ADJ_UP) { if (bg >= 0) draw_rect(dr, ox, oy - g, TILE_SIZE, g, bg); - draw_gt(dr, ox+g2, oy-g4, g2, -g2, g2, g2, - (f & F_ERROR_UP) ? COL_ERROR : fg); + draw_gt(dr, ox+g2, oy-g4, g2, -g2, g2, g2, COLOUR(UP)); draw_update(dr, ox, oy-g, TILE_SIZE, g); } if (f & F_ADJ_RIGHT) { if (bg >= 0) draw_rect(dr, ox + TILE_SIZE, oy, g, TILE_SIZE, bg); - draw_gt(dr, ox+TILE_SIZE+g4, oy+g2, g2, g2, -g2, g2, - (f & F_ERROR_RIGHT) ? COL_ERROR : fg); + draw_gt(dr, ox+TILE_SIZE+g4, oy+g2, g2, g2, -g2, g2, COLOUR(RIGHT)); draw_update(dr, ox+TILE_SIZE, oy, g, TILE_SIZE); } if (f & F_ADJ_DOWN) { if (bg >= 0) draw_rect(dr, ox, oy + TILE_SIZE, TILE_SIZE, g, bg); - draw_gt(dr, ox+g2, oy+TILE_SIZE+g4, g2, g2, g2, -g2, - (f & F_ERROR_DOWN) ? COL_ERROR : fg); + draw_gt(dr, ox+g2, oy+TILE_SIZE+g4, g2, g2, g2, -g2, COLOUR(DOWN)); draw_update(dr, ox, oy+TILE_SIZE, TILE_SIZE, g); } if (f & F_ADJ_LEFT) { if (bg >= 0) draw_rect(dr, ox - g, oy, g, TILE_SIZE, bg); - draw_gt(dr, ox-g4, oy+g2, -g2, g2, g2, g2, - (f & F_ERROR_LEFT) ? COL_ERROR : fg); + draw_gt(dr, ox-g4, oy+g2, -g2, g2, g2, g2, COLOUR(LEFT)); draw_update(dr, ox-g, oy, g, TILE_SIZE); } } @@ -1671,8 +1729,7 @@ if (f & (F_ADJ_RIGHT|F_ERROR_RIGHT)) { if (f & F_ADJ_RIGHT) { - draw_rect(dr, ox+TILE_SIZE+g38, oy, g4, TILE_SIZE, - (f & F_ERROR_RIGHT) ? COL_ERROR : fg); + draw_rect(dr, ox+TILE_SIZE+g38, oy, g4, TILE_SIZE, COLOUR(RIGHT)); } else { draw_rect_outline(dr, ox+TILE_SIZE+g38, oy, g4, TILE_SIZE, COL_ERROR); } @@ -1683,8 +1740,7 @@ if (f & (F_ADJ_DOWN|F_ERROR_DOWN)) { if (f & F_ADJ_DOWN) { - draw_rect(dr, ox, oy+TILE_SIZE+g38, TILE_SIZE, g4, - (f & F_ERROR_DOWN) ? COL_ERROR : fg); + draw_rect(dr, ox, oy+TILE_SIZE+g38, TILE_SIZE, g4, COLOUR(DOWN)); } else { draw_rect_outline(dr, ox, oy+TILE_SIZE+g38, TILE_SIZE, g4, COL_ERROR); } diff -Nru sgt-puzzles-20140928.r10274/unequal.R sgt-puzzles-20160429.b31155b/unequal.R --- sgt-puzzles-20140928.r10274/unequal.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/unequal.R 2016-04-29 00:30:09.000000000 +0000 @@ -23,5 +23,5 @@ !end !begin >gamedesc.txt -unequal:unequal.exe:Unequal:Latin square puzzle +unequal:unequal.exe:Unequal:Latin square puzzle:Complete the latin square in accordance with the > signs. !end diff -Nru sgt-puzzles-20140928.r10274/unruly.R sgt-puzzles-20160429.b31155b/unruly.R --- sgt-puzzles-20140928.r10274/unruly.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/unruly.R 2016-04-29 00:30:09.000000000 +0000 @@ -17,5 +17,5 @@ !end !begin >gamedesc.txt -unruly:unruly.exe:Unruly:Black and white grid puzzle +unruly:unruly.exe:Unruly:Black and white grid puzzle:Fill in the black and white grid to avoid runs of three. !end diff -Nru sgt-puzzles-20140928.r10274/untangle.R sgt-puzzles-20160429.b31155b/untangle.R --- sgt-puzzles-20140928.r10274/untangle.R 2013-06-30 10:16:57.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/untangle.R 2016-04-29 00:30:09.000000000 +0000 @@ -17,5 +17,5 @@ !end !begin >gamedesc.txt -untangle:untangle.exe:Untangle:Planar graph layout puzzle +untangle:untangle.exe:Untangle:Planar graph layout puzzle:Reposition the points so that the lines do not cross. !end diff -Nru sgt-puzzles-20140928.r10274/version.h sgt-puzzles-20160429.b31155b/version.h --- sgt-puzzles-20140928.r10274/version.h 2014-09-29 00:30:06.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/version.h 2016-04-29 00:30:09.000000000 +0000 @@ -1,2 +1,2 @@ /* Generated by automated build script */ -#define VER "Version 20140928.r10274" +#define VER "Version 20160429.b31155b" diff -Nru sgt-puzzles-20140928.r10274/windows.c sgt-puzzles-20160429.b31155b/windows.c --- sgt-puzzles-20140928.r10274/windows.c 2013-01-19 18:56:05.000000000 +0000 +++ sgt-puzzles-20160429.b31155b/windows.c 2016-04-29 00:30:09.000000000 +0000 @@ -608,7 +608,7 @@ HFONT oldfont; TEXTMETRIC tm; SIZE size; - TCHAR wText[256]; + WCHAR wText[256]; MultiByteToWideChar (CP_UTF8, 0, text, -1, wText, 256); oldfont = SelectObject(fe->hdc, fe->fonts[i].font); @@ -1702,7 +1702,8 @@ if (fe->statusbar) DestroyWindow(fe->statusbar); if (midend_wants_statusbar(fe->me)) { - fe->statusbar = CreateWindowEx(0, STATUSCLASSNAME, TEXT("ooh"), + fe->statusbar = CreateWindowEx(0, STATUSCLASSNAME, + TEXT(DEFAULT_STATUSBAR_TEXT), WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, /* status bar does these */ NULL, NULL, fe->inst, NULL);